<?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>178067</bug_id>
          
          <creation_ts>2017-10-08 01:30:10 -0700</creation_ts>
          <short_desc>[JSC] __proto__ getter should be fast</short_desc>
          <delta_ts>2017-10-18 15:55:52 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=178399</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>178064</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>buildbot</cc>
    
    <cc>darin</cc>
    
    <cc>fpizlo</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>rniwa</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1358071</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-10-08 01:30:10 -0700</bug_when>
    <thetext>__proto__ access is typically lowered into Call node in DFG, which is apparently not good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1358072</commentid>
    <comment_count>1</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-10-08 01:30:37 -0700</bug_when>
    <thetext>I think this is a bit critical since we typically use __proto__ accessor for ES6 class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1358085</commentid>
    <comment_count>2</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-10-08 03:20:15 -0700</bug_when>
    <thetext>SixSpeed/super.es6 becomes 3.4x faster in my working copy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1358086</commentid>
    <comment_count>3</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-10-08 03:20:37 -0700</bug_when>
    <thetext>IC should handle it too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1358673</commentid>
    <comment_count>4</comment_count>
      <attachid>323287</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-10-10 01:31:16 -0700</bug_when>
    <thetext>Created attachment 323287
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1358674</commentid>
    <comment_count>5</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-10-10 01:33:33 -0700</bug_when>
    <thetext>Attachment 323287 did not pass style-queue:


ERROR: Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:3872:  Multi line control clauses should use braces.  [whitespace/braces] [4]
Total errors found: 1 in 40 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1358684</commentid>
    <comment_count>6</comment_count>
      <attachid>323287</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-10-10 02:16:02 -0700</bug_when>
    <thetext>Comment on attachment 323287
Patch

Attachment 323287 did not pass jsc-ews (mac):
Output: http://webkit-queues.webkit.org/results/4810261

New failing tests:
stress/object-prototype-proto-accessors-should-throw-on-undefined-this.js.misc-ftl-no-cjit
stress/proxy-get-prototype-of.js.ftl-eager-no-cjit
stress/proxy-get-prototype-of.js.ftl-eager
stress/proxy-get-prototype-of.js.ftl-eager-no-cjit-b3o1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1358688</commentid>
    <comment_count>7</comment_count>
      <attachid>323293</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-10-10 02:55:12 -0700</bug_when>
    <thetext>Created attachment 323293
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1358689</commentid>
    <comment_count>8</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-10-10 02:57:55 -0700</bug_when>
    <thetext>Attachment 323293 did not pass style-queue:


ERROR: Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:3872:  Multi line control clauses should use braces.  [whitespace/braces] [4]
Total errors found: 1 in 46 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1358696</commentid>
    <comment_count>9</comment_count>
      <attachid>323295</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-10-10 03:34:02 -0700</bug_when>
    <thetext>Created attachment 323295
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1358699</commentid>
    <comment_count>10</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-10-10 03:36:51 -0700</bug_when>
    <thetext>Attachment 323295 did not pass style-queue:


ERROR: Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:3872:  Multi line control clauses should use braces.  [whitespace/braces] [4]
Total errors found: 1 in 47 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1358763</commentid>
    <comment_count>11</comment_count>
      <attachid>323308</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-10-10 07:42:13 -0700</bug_when>
    <thetext>Created attachment 323308
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1358764</commentid>
    <comment_count>12</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-10-10 07:45:02 -0700</bug_when>
    <thetext>Attachment 323308 did not pass style-queue:


ERROR: Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:3872:  Multi line control clauses should use braces.  [whitespace/braces] [4]
Total errors found: 1 in 47 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1360851</commentid>
    <comment_count>13</comment_count>
      <attachid>323308</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-10-16 11:33:32 -0700</bug_when>
    <thetext>Comment on attachment 323308
Patch

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

r=me with some nits and a comment regarding IntrinsicGetters

&gt; Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:2706
&gt; +            bool cannotFold = false;

style nit: I think these variables are easier to read if they say what they &quot;can&quot; do vs &quot;cannot&quot; do. So, I think it&apos;d be easier if we called this &quot;canFold&quot; and flipped all the assignments to it.

&gt; Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:2726
&gt; +            if (prototype &amp;&amp; !cannotFold) {

so, for example, I think it&apos;s easier to read this as
prototype &amp;&amp; canFold
instead of
prototype &amp;&amp; !cannotFold

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:3060
&gt; +        variant.structureSet().forEach([&amp;] (Structure* structure) {

is this set guaranteed to be non-empty?

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:10874
&gt; +        callOperation(operationGetPrototypeOf, resultRegs, JSValueRegs::payloadOnly(valueGPR));

Is it worth having a version of the function where the operand is already a JSObject*?

&gt; Source/JavaScriptCore/jit/IntrinsicEmitter.cpp:141
&gt; +        jit.loadValue(MacroAssembler::Address(baseGPR, sizeof(EncodedJSValue) * structure()-&gt;polyProtoOffset() + JSObject::offsetOfInlineStorage()), valueRegs);
&gt; +        state.succeed();
&gt; +        return;

I bet this is dead code since Repatch.cpp doesn&apos;t emit intrinsic getters with poly proto. The reason for this is that I didn&apos;t make it work with the typed array code. So if you want this to work with poly proto, I think you need to change things in Repatch.cpp to get it to emit these. You may want to disable it for typed arrays ATM. Or have canEmitIntrinsicGetter know if it&apos;s a poly proto access or not. The reason this isn&apos;t trivial to do is take this example:
```
function foo(o) {
    return o.__proto__;
}
let o = somethingPolyProto;
assert(o.__proto__ === Object.prototype);
assert(foo(o) === Object.prototype);
o.__proto__ = null;
assert(foo(o) === undefined)
```

I think your code would break on this case, since you&apos;re not verifying the prototype chain. So, I think it&apos;s worth skipping poly proto for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1361217</commentid>
    <comment_count>14</comment_count>
      <attachid>323308</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-10-17 04:54:20 -0700</bug_when>
    <thetext>Comment on attachment 323308
Patch

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

&gt;&gt; Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:2706
&gt;&gt; +            bool cannotFold = false;
&gt; 
&gt; style nit: I think these variables are easier to read if they say what they &quot;can&quot; do vs &quot;cannot&quot; do. So, I think it&apos;d be easier if we called this &quot;canFold&quot; and flipped all the assignments to it.

Changed, nice.

&gt;&gt; Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:2726
&gt;&gt; +            if (prototype &amp;&amp; !cannotFold) {
&gt; 
&gt; so, for example, I think it&apos;s easier to read this as
&gt; prototype &amp;&amp; canFold
&gt; instead of
&gt; prototype &amp;&amp; !cannotFold

Yeah, make sense. Fixed.

&gt;&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:3060
&gt;&gt; +        variant.structureSet().forEach([&amp;] (Structure* structure) {
&gt; 
&gt; is this set guaranteed to be non-empty?

Even if this set is empty, it is ok because `prototype` becomes empty.
So, folding does not occur.
But to make it more readable, I&apos;ve changed it to `bool canFold = !variant.structureSet().isEmpty();`.

&gt;&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:10874
&gt;&gt; +        callOperation(operationGetPrototypeOf, resultRegs, JSValueRegs::payloadOnly(valueGPR));
&gt; 
&gt; Is it worth having a version of the function where the operand is already a JSObject*?

It seems that adding it makes this a bit simple. I&apos;ve added this function.

&gt;&gt; Source/JavaScriptCore/jit/IntrinsicEmitter.cpp:141
&gt;&gt; +        return;
&gt; 
&gt; I bet this is dead code since Repatch.cpp doesn&apos;t emit intrinsic getters with poly proto. The reason for this is that I didn&apos;t make it work with the typed array code. So if you want this to work with poly proto, I think you need to change things in Repatch.cpp to get it to emit these. You may want to disable it for typed arrays ATM. Or have canEmitIntrinsicGetter know if it&apos;s a poly proto access or not. The reason this isn&apos;t trivial to do is take this example:
&gt; ```
&gt; function foo(o) {
&gt;     return o.__proto__;
&gt; }
&gt; let o = somethingPolyProto;
&gt; assert(o.__proto__ === Object.prototype);
&gt; assert(foo(o) === Object.prototype);
&gt; o.__proto__ = null;
&gt; assert(foo(o) === undefined)
&gt; ```
&gt; 
&gt; I think your code would break on this case, since you&apos;re not verifying the prototype chain. So, I think it&apos;s worth skipping poly proto for now.

Yes, this is dead code since Repatch do not emit IntrinsicGetter IC for poly proto structure.
I added this code since this should be placed here once poly proto support is enabled for this intrinsic getter thing.
And at that time, the implementation would become like this here since poly proto check should be already done when reaching this.

I&apos;ll add FIXME comment here with the URL to https://bugs.webkit.org/show_bug.cgi?id=177318.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1361218</commentid>
    <comment_count>15</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-10-17 05:02:16 -0700</bug_when>
    <thetext>Committed r223523: &lt;https://trac.webkit.org/changeset/223523&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1361219</commentid>
    <comment_count>16</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-10-17 05:03:13 -0700</bug_when>
    <thetext>&lt;rdar://problem/35027592&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1361225</commentid>
    <comment_count>17</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-10-17 06:28:06 -0700</bug_when>
    <thetext>This improves ARES-6/ML average worst case &amp; steady state :)
This is because this test frequently accesses __proto__ when calling super constructor in class&apos;s constructor.
https://arewefastyet.com/#machine=29&amp;view=single&amp;suite=ares6&amp;subtest=ML-averageWorstCase
https://arewefastyet.com/#machine=29&amp;view=single&amp;suite=ares6&amp;subtest=ML-steadyState</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1361226</commentid>
    <comment_count>18</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-10-17 06:31:41 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #17)
&gt; This improves ARES-6/ML average worst case &amp; steady state :)
&gt; This is because this test frequently accesses __proto__ when calling super
&gt; constructor in class&apos;s constructor.
&gt; https://arewefastyet.com/#machine=29&amp;view=single&amp;suite=ares6&amp;subtest=ML-
&gt; averageWorstCase
&gt; https://arewefastyet.com/#machine=29&amp;view=single&amp;suite=ares6&amp;subtest=ML-
&gt; steadyState

This should be further improved by https://bugs.webkit.org/show_bug.cgi?id=178064</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1361353</commentid>
    <comment_count>19</comment_count>
      <attachid>323308</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-10-17 12:12:32 -0700</bug_when>
    <thetext>Comment on attachment 323308
Patch

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

&gt;&gt;&gt; Source/JavaScriptCore/jit/IntrinsicEmitter.cpp:141
&gt;&gt;&gt; +        return;
&gt;&gt; 
&gt;&gt; I bet this is dead code since Repatch.cpp doesn&apos;t emit intrinsic getters with poly proto. The reason for this is that I didn&apos;t make it work with the typed array code. So if you want this to work with poly proto, I think you need to change things in Repatch.cpp to get it to emit these. You may want to disable it for typed arrays ATM. Or have canEmitIntrinsicGetter know if it&apos;s a poly proto access or not. The reason this isn&apos;t trivial to do is take this example:
&gt;&gt; ```
&gt;&gt; function foo(o) {
&gt;&gt;     return o.__proto__;
&gt;&gt; }
&gt;&gt; let o = somethingPolyProto;
&gt;&gt; assert(o.__proto__ === Object.prototype);
&gt;&gt; assert(foo(o) === Object.prototype);
&gt;&gt; o.__proto__ = null;
&gt;&gt; assert(foo(o) === undefined)
&gt;&gt; ```
&gt;&gt; 
&gt;&gt; I think your code would break on this case, since you&apos;re not verifying the prototype chain. So, I think it&apos;s worth skipping poly proto for now.
&gt; 
&gt; Yes, this is dead code since Repatch do not emit IntrinsicGetter IC for poly proto structure.
&gt; I added this code since this should be placed here once poly proto support is enabled for this intrinsic getter thing.
&gt; And at that time, the implementation would become like this here since poly proto check should be already done when reaching this.
&gt; 
&gt; I&apos;ll add FIXME comment here with the URL to https://bugs.webkit.org/show_bug.cgi?id=177318.

Please remove this code. It&apos;s incorrect, and the way we should add the FIXME is inside &quot;canEmitIntrinsicGetter&quot; with a description of the problem. That function should return false if hasPolyProto() is true. My example above explains why doing this isn&apos;t trivial, since we don&apos;t do Structure transitions when setting the prototype on a poly proto object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1361472</commentid>
    <comment_count>20</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2017-10-17 16:34:35 -0700</bug_when>
    <thetext>Reverted r223523 for reason:

A test for this change is failing on debug JSC bots.

Committed r223584: &lt;https://trac.webkit.org/changeset/223584&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1361475</commentid>
    <comment_count>21</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2017-10-17 16:36:05 -0700</bug_when>
    <thetext>*** Bug 178399 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1361586</commentid>
    <comment_count>22</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-10-18 00:13:06 -0700</bug_when>
    <thetext>Committed r223594: &lt;https://trac.webkit.org/changeset/223594&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1361587</commentid>
    <comment_count>23</comment_count>
      <attachid>323308</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-10-18 00:16:08 -0700</bug_when>
    <thetext>Comment on attachment 323308
Patch

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

&gt;&gt;&gt;&gt; Source/JavaScriptCore/jit/IntrinsicEmitter.cpp:141
&gt;&gt;&gt;&gt; +        return;
&gt;&gt;&gt; 
&gt;&gt;&gt; I bet this is dead code since Repatch.cpp doesn&apos;t emit intrinsic getters with poly proto. The reason for this is that I didn&apos;t make it work with the typed array code. So if you want this to work with poly proto, I think you need to change things in Repatch.cpp to get it to emit these. You may want to disable it for typed arrays ATM. Or have canEmitIntrinsicGetter know if it&apos;s a poly proto access or not. The reason this isn&apos;t trivial to do is take this example:
&gt;&gt;&gt; ```
&gt;&gt;&gt; function foo(o) {
&gt;&gt;&gt;     return o.__proto__;
&gt;&gt;&gt; }
&gt;&gt;&gt; let o = somethingPolyProto;
&gt;&gt;&gt; assert(o.__proto__ === Object.prototype);
&gt;&gt;&gt; assert(foo(o) === Object.prototype);
&gt;&gt;&gt; o.__proto__ = null;
&gt;&gt;&gt; assert(foo(o) === undefined)
&gt;&gt;&gt; ```
&gt;&gt;&gt; 
&gt;&gt;&gt; I think your code would break on this case, since you&apos;re not verifying the prototype chain. So, I think it&apos;s worth skipping poly proto for now.
&gt;&gt; 
&gt;&gt; Yes, this is dead code since Repatch do not emit IntrinsicGetter IC for poly proto structure.
&gt;&gt; I added this code since this should be placed here once poly proto support is enabled for this intrinsic getter thing.
&gt;&gt; And at that time, the implementation would become like this here since poly proto check should be already done when reaching this.
&gt;&gt; 
&gt;&gt; I&apos;ll add FIXME comment here with the URL to https://bugs.webkit.org/show_bug.cgi?id=177318.
&gt; 
&gt; Please remove this code. It&apos;s incorrect, and the way we should add the FIXME is inside &quot;canEmitIntrinsicGetter&quot; with a description of the problem. That function should return false if hasPolyProto() is true. My example above explains why doing this isn&apos;t trivial, since we don&apos;t do Structure transitions when setting the prototype on a poly proto object.

OK, I&apos;ve changed canEmitIntrinsicGetter part to check hasPolyProto, and remove this code for poly proto thing.
But I believe this code is not executed right now because our Repatch.cpp do not emit intrinsic getters for poly proto structures, correct?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1361589</commentid>
    <comment_count>24</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-10-18 00:42:40 -0700</bug_when>
    <thetext>Looks like this patch broke builds everywhere:
/Volumes/Data/slave/elcapitan-release/build/WebKitBuild/Release/JavaScriptCore.framework/PrivateHeaders/JSGlobalObject.h:26:10: fatal error: &apos;BooleanPrototype.h&apos; file not found
#include &quot;BooleanPrototype.h&quot;
         ^
1 error generated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1361592</commentid>
    <comment_count>25</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-10-18 01:12:40 -0700</bug_when>
    <thetext>(In reply to Ryosuke Niwa from comment #24)
&gt; Looks like this patch broke builds everywhere:
&gt; /Volumes/Data/slave/elcapitan-release/build/WebKitBuild/Release/
&gt; JavaScriptCore.framework/PrivateHeaders/JSGlobalObject.h:26:10: fatal error:
&gt; &apos;BooleanPrototype.h&apos; file not found
&gt; #include &quot;BooleanPrototype.h&quot;
&gt;          ^
&gt; 1 error generated.

Fixed it in https://trac.webkit.org/changeset/223595.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1361606</commentid>
    <comment_count>26</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-10-18 01:44:18 -0700</bug_when>
    <thetext>(In reply to Ryosuke Niwa from comment #25)
&gt; (In reply to Ryosuke Niwa from comment #24)
&gt; &gt; Looks like this patch broke builds everywhere:
&gt; &gt; /Volumes/Data/slave/elcapitan-release/build/WebKitBuild/Release/
&gt; &gt; JavaScriptCore.framework/PrivateHeaders/JSGlobalObject.h:26:10: fatal error:
&gt; &gt; &apos;BooleanPrototype.h&apos; file not found
&gt; &gt; #include &quot;BooleanPrototype.h&quot;
&gt; &gt;          ^
&gt; &gt; 1 error generated.
&gt; 
&gt; Fixed it in https://trac.webkit.org/changeset/223595.

Oops, thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1361939</commentid>
    <comment_count>27</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-10-18 15:54:22 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #23)
&gt; Comment on attachment 323308 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=323308&amp;action=review
&gt; 
&gt; &gt;&gt;&gt;&gt; Source/JavaScriptCore/jit/IntrinsicEmitter.cpp:141
&gt; &gt;&gt;&gt;&gt; +        return;
&gt; &gt;&gt;&gt; 
&gt; &gt;&gt;&gt; I bet this is dead code since Repatch.cpp doesn&apos;t emit intrinsic getters with poly proto. The reason for this is that I didn&apos;t make it work with the typed array code. So if you want this to work with poly proto, I think you need to change things in Repatch.cpp to get it to emit these. You may want to disable it for typed arrays ATM. Or have canEmitIntrinsicGetter know if it&apos;s a poly proto access or not. The reason this isn&apos;t trivial to do is take this example:
&gt; &gt;&gt;&gt; ```
&gt; &gt;&gt;&gt; function foo(o) {
&gt; &gt;&gt;&gt;     return o.__proto__;
&gt; &gt;&gt;&gt; }
&gt; &gt;&gt;&gt; let o = somethingPolyProto;
&gt; &gt;&gt;&gt; assert(o.__proto__ === Object.prototype);
&gt; &gt;&gt;&gt; assert(foo(o) === Object.prototype);
&gt; &gt;&gt;&gt; o.__proto__ = null;
&gt; &gt;&gt;&gt; assert(foo(o) === undefined)
&gt; &gt;&gt;&gt; ```
&gt; &gt;&gt;&gt; 
&gt; &gt;&gt;&gt; I think your code would break on this case, since you&apos;re not verifying the prototype chain. So, I think it&apos;s worth skipping poly proto for now.
&gt; &gt;&gt; 
&gt; &gt;&gt; Yes, this is dead code since Repatch do not emit IntrinsicGetter IC for poly proto structure.
&gt; &gt;&gt; I added this code since this should be placed here once poly proto support is enabled for this intrinsic getter thing.
&gt; &gt;&gt; And at that time, the implementation would become like this here since poly proto check should be already done when reaching this.
&gt; &gt;&gt; 
&gt; &gt;&gt; I&apos;ll add FIXME comment here with the URL to https://bugs.webkit.org/show_bug.cgi?id=177318.
&gt; &gt; 
&gt; &gt; Please remove this code. It&apos;s incorrect, and the way we should add the FIXME is inside &quot;canEmitIntrinsicGetter&quot; with a description of the problem. That function should return false if hasPolyProto() is true. My example above explains why doing this isn&apos;t trivial, since we don&apos;t do Structure transitions when setting the prototype on a poly proto object.
&gt; 
&gt; OK, I&apos;ve changed canEmitIntrinsicGetter part to check hasPolyProto, and
&gt; remove this code for poly proto thing.
&gt; But I believe this code is not executed right now because our Repatch.cpp do
&gt; not emit intrinsic getters for poly proto structures, correct?
This code may or may not be executed, but at least it&apos;s correct. The previous implementation of just loading the poly proto prototype was just wrong code, because we&apos;d need to verify the prototype chain has the __proto__ getter on it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1361940</commentid>
    <comment_count>28</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-10-18 15:55:52 -0700</bug_when>
    <thetext>(In reply to Saam Barati from comment #27)
&gt; (In reply to Yusuke Suzuki from comment #23)
&gt; &gt; Comment on attachment 323308 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=323308&amp;action=review
&gt; &gt; 
&gt; &gt; &gt;&gt;&gt;&gt; Source/JavaScriptCore/jit/IntrinsicEmitter.cpp:141
&gt; &gt; &gt;&gt;&gt;&gt; +        return;
&gt; &gt; &gt;&gt;&gt; 
&gt; &gt; &gt;&gt;&gt; I bet this is dead code since Repatch.cpp doesn&apos;t emit intrinsic getters with poly proto. The reason for this is that I didn&apos;t make it work with the typed array code. So if you want this to work with poly proto, I think you need to change things in Repatch.cpp to get it to emit these. You may want to disable it for typed arrays ATM. Or have canEmitIntrinsicGetter know if it&apos;s a poly proto access or not. The reason this isn&apos;t trivial to do is take this example:
&gt; &gt; &gt;&gt;&gt; ```
&gt; &gt; &gt;&gt;&gt; function foo(o) {
&gt; &gt; &gt;&gt;&gt;     return o.__proto__;
&gt; &gt; &gt;&gt;&gt; }
&gt; &gt; &gt;&gt;&gt; let o = somethingPolyProto;
&gt; &gt; &gt;&gt;&gt; assert(o.__proto__ === Object.prototype);
&gt; &gt; &gt;&gt;&gt; assert(foo(o) === Object.prototype);
&gt; &gt; &gt;&gt;&gt; o.__proto__ = null;
&gt; &gt; &gt;&gt;&gt; assert(foo(o) === undefined)
&gt; &gt; &gt;&gt;&gt; ```
&gt; &gt; &gt;&gt;&gt; 
&gt; &gt; &gt;&gt;&gt; I think your code would break on this case, since you&apos;re not verifying the prototype chain. So, I think it&apos;s worth skipping poly proto for now.
&gt; &gt; &gt;&gt; 
&gt; &gt; &gt;&gt; Yes, this is dead code since Repatch do not emit IntrinsicGetter IC for poly proto structure.
&gt; &gt; &gt;&gt; I added this code since this should be placed here once poly proto support is enabled for this intrinsic getter thing.
&gt; &gt; &gt;&gt; And at that time, the implementation would become like this here since poly proto check should be already done when reaching this.
&gt; &gt; &gt;&gt; 
&gt; &gt; &gt;&gt; I&apos;ll add FIXME comment here with the URL to https://bugs.webkit.org/show_bug.cgi?id=177318.
&gt; &gt; &gt; 
&gt; &gt; &gt; Please remove this code. It&apos;s incorrect, and the way we should add the FIXME is inside &quot;canEmitIntrinsicGetter&quot; with a description of the problem. That function should return false if hasPolyProto() is true. My example above explains why doing this isn&apos;t trivial, since we don&apos;t do Structure transitions when setting the prototype on a poly proto object.
&gt; &gt; 
&gt; &gt; OK, I&apos;ve changed canEmitIntrinsicGetter part to check hasPolyProto, and
&gt; &gt; remove this code for poly proto thing.
&gt; &gt; But I believe this code is not executed right now because our Repatch.cpp do
&gt; &gt; not emit intrinsic getters for poly proto structures, correct?
&gt; This code may or may not be executed, but at least it&apos;s correct. The
&gt; previous implementation of just loading the poly proto prototype was just
&gt; wrong code, because we&apos;d need to verify the prototype chain has the
&gt; __proto__ getter on it.

That said, it&apos;s also wrong if the base object point to a parent object that has poly proto, that&apos;s why Repatch itself does the check. I&apos;m just noting it&apos;s also wrong for the base object. We just need to teach intrinsic getters about poly proto. That should be pretty easy to do. Also making __proto__ getter fast is a good reason to do this, since the only reason for doing this before was if somebody changed the TypedArray prototype hierarchy, which is unlikely to happen in real code. Accessing __proto__ is common in real code.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>323287</attachid>
            <date>2017-10-10 01:31:16 -0700</date>
            <delta_ts>2017-10-10 02:55:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178067-20171010173115.patch</filename>
            <type>text/plain</type>
            <size>68051</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIzMTI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
Zjk5MWQwOWIwMTkwYWE0ZTE1ZTc5MDZjZmMyZGJlMjU5MzJmNjE2Li5lOWEyZjYyZmUzYzEwOWU3
YTNiMjg4ZmNjMGY5MmFiM2JkZjE5MTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2MiBAQAorMjAxNy0xMC0xMCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbSlNDXSBfX3Byb3RvX18gZ2V0dGVyIHNob3VsZCBiZSBmYXN0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzgwNjcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGRmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0
SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAg
ICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNv
ZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0dldHRlcik6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0
ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5SWQpOgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyaXpl
Lmg6CisgICAgICAgIChKU0M6OkRGRzo6Y2xvYmJlcml6ZSk6CisgICAgICAgICogZGZnL0RGR0Rv
ZXNHQy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6ZG9lc0dDKToKKyAgICAgICAgKiBkZmcvREZH
Rml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2Rl
KToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cEdldFByb3RvdHlwZU9mKToK
KyAgICAgICAgKiBkZmcvREZHSGVhcExvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdURjo6cHJpbnRJ
bnRlcm5hbCk6CisgICAgICAgICogZGZnL0RGR0hlYXBMb2NhdGlvbi5oOgorICAgICAgICAqIGRm
Zy9ERkdOb2RlLmg6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzSGVhcFByZWRpY3Rpb24p
OgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OnNob3VsZFNwZWN1bGF0ZUZ1bmN0aW9uKToKKyAg
ICAgICAgKiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5j
cHA6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBkZmcvREZHUHJl
ZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdTYWZlVG9FeGVj
dXRlLmg6CisgICAgICAgIChKU0M6OkRGRzo6c2FmZVRvRXhlY3V0ZSk6CisgICAgICAgICogZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6c3BlY3VsYXRlRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
OjpzcGVjdWxhdGVGaW5hbE9iamVjdCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVHZXRQcm90b3R5cGVPZik6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZl
SklULmg6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMQ2Fw
YWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToKKyAgICAgICAg
KiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2Vy
REZHVG9CMzo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdU
b0IzOjpjb21waWxlR2V0UHJvdG90eXBlT2YpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0IzOjpjb21waWxlSW5zdGFuY2VPZik6CisgICAgICAgICogaml0L0ludHJpbnNpY0Vt
aXR0ZXIuY3BwOgorICAgICAgICAoSlNDOjpJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlOjpjYW5F
bWl0SW50cmluc2ljR2V0dGVyKToKKyAgICAgICAgKEpTQzo6SW50cmluc2ljR2V0dGVyQWNjZXNz
Q2FzZTo6ZW1pdEludHJpbnNpY0dldHRlcik6CisgICAgICAgICogcnVudGltZS9JbnRyaW5zaWMu
Y3BwOgorICAgICAgICAoSlNDOjppbnRyaW5zaWNOYW1lKToKKyAgICAgICAgKiBydW50aW1lL0lu
dHJpbnNpYy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAg
ICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2Jh
bE9iamVjdEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChKU0M6Omdsb2JhbEZ1bmNQcm90b0dldHRl
cik6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oOgorICAgICAg
ICAqIHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvUmVm
bGVjdE9iamVjdC5jcHA6CisKIDIwMTctMTAtMDkgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRl
YUBnbWFpbC5jb20+CiAKICAgICAgICAgYGFzeW5jYCBzaG91bGQgYmUgYWJsZSB0byBiZSB1c2Vk
IGFzIGFuIGltcG9ydGVkIGJpbmRpbmcgbmFtZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCmluZGV4IGJlYTE2
ODlhYWJkNTMwMzgwNjJlZWM4MDkzYTE2MDY2ZjhjZDFiNmMuLjc1YjAyOWZmOGNkNjA0NDdkMDRj
YWM2OWEwOTE2ZDU3YmM1NDMwYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTI2OTksNiArMjY5
OSw0OCBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVj
dXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICBmb3JOb2RlKG5vZGUpLnNl
dFR5cGUoU3BlY0ludDMyT25seSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KKworICAgIGNhc2Ug
R2V0UHJvdG90eXBlT2Y6IHsKKyAgICAgICAgQWJzdHJhY3RWYWx1ZSYgdmFsdWUgPSBmb3JOb2Rl
KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgaWYgKCh2YWx1ZS5tX3R5cGUgJiYgISh2YWx1ZS5t
X3R5cGUgJiB+U3BlY09iamVjdCkpICYmIHZhbHVlLm1fc3RydWN0dXJlLmlzRmluaXRlKCkpIHsK
KyAgICAgICAgICAgIGJvb2wgY2Fubm90Rm9sZCA9IGZhbHNlOworICAgICAgICAgICAgSlNWYWx1
ZSBwcm90b3R5cGU7CisgICAgICAgICAgICB2YWx1ZS5tX3N0cnVjdHVyZS5mb3JFYWNoKFsmXSAo
UmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUpIHsKKyAgICAgICAgICAgICAgICBhdXRvIGdl
dFByb3RvdHlwZU1ldGhvZCA9IHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCktPm1ldGhvZFRhYmxlLmdl
dFByb3RvdHlwZTsKKyAgICAgICAgICAgICAgICBNZXRob2RUYWJsZTo6R2V0UHJvdG90eXBlRnVu
Y3Rpb25QdHIgZGVmYXVsdEdldFByb3RvdHlwZSA9IEpTT2JqZWN0OjpnZXRQcm90b3R5cGU7Cisg
ICAgICAgICAgICAgICAgaWYgKGdldFByb3RvdHlwZU1ldGhvZCAhPSBkZWZhdWx0R2V0UHJvdG90
eXBlKSB7CisgICAgICAgICAgICAgICAgICAgIGNhbm5vdEZvbGQgPSB0cnVlOworICAgICAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAg
aWYgKHN0cnVjdHVyZS0+aGFzUG9seVByb3RvKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgY2Fu
bm90Rm9sZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgaWYgKCFwcm90b3R5cGUpCisgICAgICAgICAgICAgICAg
ICAgIHByb3RvdHlwZSA9IHN0cnVjdHVyZS0+c3RvcmVkUHJvdG90eXBlKCk7CisgICAgICAgICAg
ICAgICAgZWxzZSBpZiAocHJvdG90eXBlICE9IHN0cnVjdHVyZS0+c3RvcmVkUHJvdG90eXBlKCkp
CisgICAgICAgICAgICAgICAgICAgIGNhbm5vdEZvbGQgPSB0cnVlOworICAgICAgICAgICAgfSk7
CisKKyAgICAgICAgICAgIGlmIChwcm90b3R5cGUgJiYgIWNhbm5vdEZvbGQpIHsKKyAgICAgICAg
ICAgICAgICBzZXRDb25zdGFudChub2RlLCAqbV9ncmFwaC5mcmVlemUocHJvdG90eXBlKSk7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAg
ICBzd2l0Y2ggKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkgeworICAgICAgICBjYXNlIEFycmF5
VXNlOgorICAgICAgICBjYXNlIEZ1bmN0aW9uVXNlOgorICAgICAgICBjYXNlIEZpbmFsT2JqZWN0
VXNlOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBj
bG9iYmVyV29ybGQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBjbG9iYmVyTGltaXQpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKG1f
Z3JhcGgsIFNwZWNPYmplY3QgfCBTcGVjT3RoZXIpOworICAgICAgICBicmVhazsKKyAgICB9CiAg
ICAgICAgIAogICAgIGNhc2UgR2V0QnlPZmZzZXQ6IHsKICAgICAgICAgU3RvcmFnZUFjY2Vzc0Rh
dGEmIGRhdGEgPSBub2RlLT5zdG9yYWdlQWNjZXNzRGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCBkMGVmMmY5YTA5NTY5NDRm
OWYxMTVlNTAxZWFmYzc5NGM4YzAzNGE3Li44ZDFlMDYwNDM1OWRmNWEzZjI5MzVjYjk4NGZjZmMw
NDcwMWNlZWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVD
b2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcApAQCAtMjM4LDcgKzIzOCw3IEBAIGNsYXNzIEJ5dGVDb2RlUGFyc2VyIHsKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgogICAgIGJvb2wgaGFuZGxlRE9NSklU
Q2FsbChOb2RlKiBjYWxsZWUsIGludCByZXN1bHRPcGVyYW5kLCBjb25zdCBET01KSVQ6OlNpZ25h
dHVyZSosIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
LCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRD
aGVja3MpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+Ci0gICAgYm9vbCBo
YW5kbGVJbnRyaW5zaWNHZXR0ZXIoaW50IHJlc3VsdE9wZXJhbmQsIGNvbnN0IEdldEJ5SWRWYXJp
YW50JiBpbnRyaW5zaWNWYXJpYW50LCBOb2RlKiB0aGlzTm9kZSwgY29uc3QgQ2hlY2tzRnVuY3Rv
ciYgaW5zZXJ0Q2hlY2tzKTsKKyAgICBib29sIGhhbmRsZUludHJpbnNpY0dldHRlcihpbnQgcmVz
dWx0T3BlcmFuZCwgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgY29uc3QgR2V0QnlJZFZhcmlh
bnQmIGludHJpbnNpY1ZhcmlhbnQsIE5vZGUqIHRoaXNOb2RlLCBjb25zdCBDaGVja3NGdW5jdG9y
JiBpbnNlcnRDaGVja3MpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+CiAg
ICAgYm9vbCBoYW5kbGVUeXBlZEFycmF5Q29uc3RydWN0b3IoaW50IHJlc3VsdE9wZXJhbmQsIElu
dGVybmFsRnVuY3Rpb24qLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcywgVHlwZWRBcnJheVR5cGUsIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENo
ZWNrcyk7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4KQEAgLTI2MjAsNiAr
MjYyMCwyNCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNDYWxsKE5vZGUq
IGNhbGxlZSwgaW50IHJlc3VsdE9wZXJhbmQsIEludHJpbgogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CiAKKyAgICBjYXNlIE9iamVjdEdldFByb3RvdHlwZU9mSW50cmluc2ljOiB7CisgICAg
ICAgIGlmIChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyAhPSAyKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgICAgIGluc2VydENoZWNrcygpOworICAgICAgICBzZXQoVmlydHVh
bFJlZ2lzdGVyKHJlc3VsdE9wZXJhbmQpLCBhZGRUb0dyYXBoKEdldFByb3RvdHlwZU9mLCBPcElu
Zm8oMCksIE9wSW5mbyhwcmVkaWN0aW9uKSwgZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50
KDEsIHJlZ2lzdGVyT2Zmc2V0KSkpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisg
ICAgY2FzZSBSZWZsZWN0R2V0UHJvdG90eXBlT2ZJbnRyaW5zaWM6IHsKKyAgICAgICAgaWYgKGFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICE9IDIpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICAgICAgaW5zZXJ0Q2hlY2tzKCk7CisgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIo
cmVzdWx0T3BlcmFuZCksIGFkZFRvR3JhcGgoR2V0UHJvdG90eXBlT2YsIE9wSW5mbygwKSwgT3BJ
bmZvKHByZWRpY3Rpb24pLCBFZGdlKGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudCgxLCBy
ZWdpc3Rlck9mZnNldCkpLCBPYmplY3RVc2UpKSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KKwogICAgIGNhc2UgSXNUeXBlZEFycmF5Vmlld0ludHJpbnNpYzogewogICAgICAgICBBU1NF
UlQoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPT0gMik7CiAKQEAgLTI5NjcsNyArMjk4NSw3
IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZURPTUpJVENhbGwoTm9kZSogY2FsbFRhcmdl
dCwgaW50IHJlc3VsdE9wZXJhbmQsIGNvbnN0CiAKIAogdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tz
RnVuY3Rvcj4KLWJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0dldHRlcihpbnQg
cmVzdWx0T3BlcmFuZCwgY29uc3QgR2V0QnlJZFZhcmlhbnQmIHZhcmlhbnQsIE5vZGUqIHRoaXNO
b2RlLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpCitib29sIEJ5dGVDb2RlUGFy
c2VyOjpoYW5kbGVJbnRyaW5zaWNHZXR0ZXIoaW50IHJlc3VsdE9wZXJhbmQsIFNwZWN1bGF0ZWRU
eXBlIHByZWRpY3Rpb24sIGNvbnN0IEdldEJ5SWRWYXJpYW50JiB2YXJpYW50LCBOb2RlKiB0aGlz
Tm9kZSwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKQogewogICAgIHN3aXRjaCAo
dmFyaWFudC5pbnRyaW5zaWMoKSkgewogICAgIGNhc2UgVHlwZWRBcnJheUJ5dGVMZW5ndGhJbnRy
aW5zaWM6IHsKQEAgLTMwMzQsNiArMzA1Miw0MCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5k
bGVJbnRyaW5zaWNHZXR0ZXIoaW50IHJlc3VsdE9wZXJhbmQsIGNvbnN0IEdldEJ5SWRWYXJpYQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKKyAgICBjYXNlIFVuZGVyc2NvcmVQcm90b0lu
dHJpbnNpYzogeworICAgICAgICBpbnNlcnRDaGVja3MoKTsKKworICAgICAgICBib29sIGNhbm5v
dEZvbGQgPSBmYWxzZTsKKyAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGU7CisgICAgICAgIHZhcmlh
bnQuc3RydWN0dXJlU2V0KCkuZm9yRWFjaChbJl0gKFN0cnVjdHVyZSogc3RydWN0dXJlKSB7Cisg
ICAgICAgICAgICBhdXRvIGdldFByb3RvdHlwZU1ldGhvZCA9IHN0cnVjdHVyZS0+Y2xhc3NJbmZv
KCktPm1ldGhvZFRhYmxlLmdldFByb3RvdHlwZTsKKyAgICAgICAgICAgIE1ldGhvZFRhYmxlOjpH
ZXRQcm90b3R5cGVGdW5jdGlvblB0ciBkZWZhdWx0R2V0UHJvdG90eXBlID0gSlNPYmplY3Q6Omdl
dFByb3RvdHlwZTsKKyAgICAgICAgICAgIGlmIChnZXRQcm90b3R5cGVNZXRob2QgIT0gZGVmYXVs
dEdldFByb3RvdHlwZSkgeworICAgICAgICAgICAgICAgIGNhbm5vdEZvbGQgPSB0cnVlOworICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHN0
cnVjdHVyZS0+aGFzUG9seVByb3RvKCkpIHsKKyAgICAgICAgICAgICAgICBjYW5ub3RGb2xkID0g
dHJ1ZTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBpZiAoIXByb3RvdHlwZSkKKyAgICAgICAgICAgICAgICBwcm90b3R5cGUgPSBzdHJ1Y3R1cmUt
PnN0b3JlZFByb3RvdHlwZSgpOworICAgICAgICAgICAgZWxzZSBpZiAocHJvdG90eXBlICE9IHN0
cnVjdHVyZS0+c3RvcmVkUHJvdG90eXBlKCkpCisgICAgICAgICAgICAgICAgY2Fubm90Rm9sZCA9
IHRydWU7CisgICAgICAgIH0pOworCisgICAgICAgIC8vIE9LLCBvbmx5IG9uZSBwcm90b3R5cGUg
aXMgZm91bmQuIFdlIHBlcmZvcm0gY29uc3RhbnQgZm9sZGluZyBoZXJlLgorICAgICAgICAvLyBU
aGlzIGluZm9ybWF0aW9uIGlzIGltcG9ydGFudCBmb3Igc3VwZXIncyBjb25zdHJ1Y3RvciBjYWxs
IHRvIGdldCBuZXcudGFyZ2V0IGNvbnN0YW50LgorICAgICAgICBpZiAocHJvdG90eXBlICYmICFj
YW5ub3RGb2xkKSB7CisgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKHJlc3VsdE9wZXJh
bmQpLCB3ZWFrSlNDb25zdGFudChwcm90b3R5cGUpKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgICAgICB9CisKKyAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihyZXN1bHRPcGVyYW5k
KSwgYWRkVG9HcmFwaChHZXRQcm90b3R5cGVPZiwgT3BJbmZvKDApLCBPcEluZm8ocHJlZGljdGlv
biksIHRoaXNOb2RlKSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKwogICAgIGRlZmF1
bHQ6CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC0zODE3LDcgKzM4NjksNyBAQCB2
b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRCeUlkKAogICAgIAogICAgIE5vZGUqIGdldHRl
ciA9IGFkZFRvR3JhcGgoR2V0R2V0dGVyLCBsb2FkZWRWYWx1ZSk7CiAKLSAgICBpZiAoaGFuZGxl
SW50cmluc2ljR2V0dGVyKGRlc3RpbmF0aW9uT3BlcmFuZCwgdmFyaWFudCwgYmFzZSwKKyAgICBp
ZiAoaGFuZGxlSW50cmluc2ljR2V0dGVyKGRlc3RpbmF0aW9uT3BlcmFuZCwgcHJlZGljdGlvbiwg
dmFyaWFudCwgYmFzZSwKICAgICAgICAgICAgIFsmXSAoKSB7CiAgICAgICAgICAgICAgICAgYWRk
VG9HcmFwaChDaGVja0NlbGwsIE9wSW5mbyhtX2dyYXBoLmZyZWV6ZSh2YXJpYW50LmludHJpbnNp
Y0Z1bmN0aW9uKCkpKSwgZ2V0dGVyKTsKICAgICAgICAgICAgIH0pKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmluZGV4IDU2NjQ5MGIxM2E4MzVjMzYyNWM0ZDk2
Njc1ZDUxMWViNjFhYzQxODYuLjZiNWY2NTc3ODEzMzc3YzhkMzllNmIwOGJmYTJmMzg4YzYxNDE3
ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCkBAIC0xMTE0
LDYgKzExMTQsMjMgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwg
Y29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKICAgICAgICAgcmVhZChNaXNj
RmllbGRzKTsKICAgICAgICAgZGVmKEhlYXBMb2NhdGlvbihUeXBlZEFycmF5Qnl0ZU9mZnNldExv
YywgTWlzY0ZpZWxkcywgbm9kZS0+Y2hpbGQxKCkpLCBMYXp5Tm9kZShub2RlKSk7CiAgICAgICAg
IHJldHVybjsKKworICAgIGNhc2UgR2V0UHJvdG90eXBlT2Y6IHsKKyAgICAgICAgc3dpdGNoIChu
b2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpIHsKKyAgICAgICAgY2FzZSBBcnJheVVzZToKKyAgICAg
ICAgY2FzZSBGdW5jdGlvblVzZToKKyAgICAgICAgY2FzZSBGaW5hbE9iamVjdFVzZToKKyAgICAg
ICAgICAgIHJlYWQoSlNDZWxsX3N0cnVjdHVyZUlEKTsKKyAgICAgICAgICAgIHJlYWQoSlNPYmpl
Y3RfYnV0dGVyZmx5KTsKKyAgICAgICAgICAgIHJlYWQoTmFtZWRQcm9wZXJ0aWVzKTsgLy8gUG9s
eSBwcm90byBjb3VsZCBsb2FkIHByb3RvdHlwZSBmcm9tIGl0cyBzbG90LgorICAgICAgICAgICAg
ZGVmKEhlYXBMb2NhdGlvbihQcm90b3R5cGVMb2MsIE5hbWVkUHJvcGVydGllcywgbm9kZS0+Y2hp
bGQxKCkpLCBMYXp5Tm9kZShub2RlKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICByZWFkKFdvcmxkKTsKKyAgICAgICAgICAgIHdyaXRlKEhlYXAp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQogICAgICAgICAKICAgICBj
YXNlIEdldEJ5T2Zmc2V0OgogICAgIGNhc2UgR2V0R2V0dGVyU2V0dGVyQnlPZmZzZXQ6IHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAppbmRleCA1OGE3NWY1ZTg1Y2UyNGU4
ZjgzZTgxNGYwYzZhMWQ0NTkyYTYyYzdkLi5lNWZhNGYzNzgxZjZhODRmN2E1MmY5ZTU2NWJjOWRj
ZGQwZDc1OWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNH
Qy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCkBAIC0y
MzYsNiArMjM2LDcgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAg
IGNhc2UgU3RyaW5nQ2hhckF0OgogICAgIGNhc2UgU3RyaW5nQ2hhckNvZGVBdDoKICAgICBjYXNl
IEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0OgorICAgIGNhc2UgR2V0UHJvdG90eXBlT2Y6CiAgICAg
Y2FzZSBQdXRCeVZhbERpcmVjdDoKICAgICBjYXNlIFB1dEJ5VmFsOgogICAgIGNhc2UgUHV0QnlW
YWxBbGlhczoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQ
aGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmlu
ZGV4IDVmZjk4ZGI1NmFlZDdkMjEyZDBjYjI4NDE0MzYxNzIxNjFiYzY5ZjAuLjcwNWQyZDhkNzJi
NTJmNzg0MGYzMWUxNWRiMmYwOTIwOTU4N2U2YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdGaXh1cFBoYXNlLmNwcApAQCAtMTU5Nyw2ICsxNTk3LDExIEBAIGNsYXNzIEZpeHVw
UGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAor
ICAgICAgICBjYXNlIEdldFByb3RvdHlwZU9mOiB7CisgICAgICAgICAgICBmaXh1cEdldFByb3Rv
dHlwZU9mKG5vZGUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwogICAgICAgICBj
YXNlIFBoaToKICAgICAgICAgY2FzZSBVcHNpbG9uOgogICAgICAgICBjYXNlIEVudHJ5U3dpdGNo
OgpAQCAtMjI5Niw2ICsyMzAxLDU5IEBAIGNsYXNzIEZpeHVwUGhhc2UgOiBwdWJsaWMgUGhhc2Ug
ewogICAgICAgICB9CiAgICAgfQogCisgICAgdm9pZCBmaXh1cEdldFByb3RvdHlwZU9mKE5vZGUq
IG5vZGUpCisgICAgeworICAgICAgICAvLyBSZWZsZWN0LmdldFByb3RvdHlwZU9mIG9ubHkgYWNj
ZXB0cyBPYmplY3RzLiBGb3IgUmVmbGVjdC5nZXRQcm90b3R5cGVPZiwgQnl0ZUNvZGVQYXJzZXIg
YXR0YWNoZXMgT2JqZWN0VXNlIGVkZ2UgZmlsdGVyIGJlZm9yZSBmaXh1cCBwaGFzZS4KKyAgICAg
ICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSAhPSBPYmplY3RVc2UpIHsKKyAgICAgICAg
ICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlU3RyaW5nKCkpIHsKKyAgICAg
ICAgICAgICAgICBpbnNlcnRDaGVjazxTdHJpbmdVc2U+KG5vZGUtPmNoaWxkMSgpLm5vZGUoKSk7
CisgICAgICAgICAgICAgICAgbV9ncmFwaC5jb252ZXJ0VG9Db25zdGFudChub2RlLCBtX2dyYXBo
LmZyZWV6ZShtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5z
dHJpbmdQcm90b3R5cGUoKSkpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlSW50MzIo
KSkgeworICAgICAgICAgICAgICAgIGluc2VydENoZWNrPEludDMyVXNlPihub2RlLT5jaGlsZDEo
KS5ub2RlKCkpOworICAgICAgICAgICAgICAgIG1fZ3JhcGguY29udmVydFRvQ29uc3RhbnQobm9k
ZSwgbV9ncmFwaC5mcmVlemUobV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKS0+bnVtYmVyUHJvdG90eXBlKCkpKTsKKyAgICAgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoZW5hYmxlSW50NTIoKSAmJiBub2RlLT5jaGls
ZDEoKS0+c2hvdWxkU3BlY3VsYXRlQW55SW50KCkpIHsKKyAgICAgICAgICAgICAgICBpbnNlcnRD
aGVjazxJbnQ1MlJlcFVzZT4obm9kZS0+Y2hpbGQxKCkubm9kZSgpKTsKKyAgICAgICAgICAgICAg
ICBtX2dyYXBoLmNvbnZlcnRUb0NvbnN0YW50KG5vZGUsIG1fZ3JhcGguZnJlZXplKG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPm51bWJlclByb3RvdHlwZSgp
KSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
aWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVOdW1iZXIoKSkgeworICAgICAgICAg
ICAgICAgIGluc2VydENoZWNrPE51bWJlclVzZT4obm9kZS0+Y2hpbGQxKCkubm9kZSgpKTsKKyAg
ICAgICAgICAgICAgICBtX2dyYXBoLmNvbnZlcnRUb0NvbnN0YW50KG5vZGUsIG1fZ3JhcGguZnJl
ZXplKG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPm51bWJl
clByb3RvdHlwZSgpKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVTeW1ib2woKSkg
eworICAgICAgICAgICAgICAgIGluc2VydENoZWNrPFN5bWJvbFVzZT4obm9kZS0+Y2hpbGQxKCku
bm9kZSgpKTsKKyAgICAgICAgICAgICAgICBtX2dyYXBoLmNvbnZlcnRUb0NvbnN0YW50KG5vZGUs
IG1fZ3JhcGguZnJlZXplKG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYyktPnN5bWJvbFByb3RvdHlwZSgpKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxh
dGVCb29sZWFuKCkpIHsKKyAgICAgICAgICAgICAgICBpbnNlcnRDaGVjazxOdW1iZXJVc2U+KG5v
ZGUtPmNoaWxkMSgpLm5vZGUoKSk7CisgICAgICAgICAgICAgICAgbV9ncmFwaC5jb252ZXJ0VG9D
b25zdGFudChub2RlLCBtX2dyYXBoLmZyZWV6ZShtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpLT5ib29sZWFuUHJvdG90eXBlKCkpKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAobm9kZS0+
Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUZpbmFsT2JqZWN0KCkpIHsKKyAgICAgICAgICAgIGZp
eEVkZ2U8RmluYWxPYmplY3RVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIG5vZGUt
PmNsZWFyRmxhZ3MoTm9kZU11c3RHZW5lcmF0ZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKyAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVBcnJheSgp
KSB7CisgICAgICAgICAgICBmaXhFZGdlPEFycmF5VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAg
ICAgICAgICBub2RlLT5jbGVhckZsYWdzKE5vZGVNdXN0R2VuZXJhdGUpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3Bl
Y3VsYXRlRnVuY3Rpb24oKSkgeworICAgICAgICAgICAgZml4RWRnZTxGdW5jdGlvblVzZT4obm9k
ZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgbm9kZS0+Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVy
YXRlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKwogICAgIHZvaWQg
Zml4dXBUb1RoaXMoTm9kZSogbm9kZSkKICAgICB7CiAgICAgICAgIEVDTUFNb2RlIGVjbWFNb2Rl
ID0gbV9ncmFwaC5leGVjdXRhYmxlRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmlzU3RyaWN0
TW9kZSgpID8gU3RyaWN0TW9kZSA6IE5vdFN0cmljdE1vZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0hlYXBMb2NhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0hlYXBMb2NhdGlvbi5jcHAKaW5kZXggNGVkMGU0NzYyYTUxZjI4MDI3Yzc2
YzhhMTRjMGQyYzE4ZjljZGI2Ni4uMjBkOTI2OWZjZWEyOGFhNDc0MzA5ODFlZWQ1MzUzMjY2NDA0
ODY5OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdIZWFwTG9jYXRp
b24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSGVhcExvY2F0aW9uLmNw
cApAQCAtMTUxLDYgKzE1MSwxMCBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91
dCwgTG9jYXRpb25LaW5kIGtpbmQpCiAgICAgY2FzZSBUeXBlZEFycmF5Qnl0ZU9mZnNldExvYzoK
ICAgICAgICAgb3V0LnByaW50KCJUeXBlZEFycmF5Qnl0ZU9mZnNldExvYyIpOwogICAgICAgICBy
ZXR1cm47CisKKyAgICBjYXNlIFByb3RvdHlwZUxvYzoKKyAgICAgICAgb3V0LnByaW50KCJQcm90
b3R5cGVMb2MiKTsKKyAgICAgICAgcmV0dXJuOwogICAgICAgICAKICAgICBjYXNlIFN0cnVjdHVy
ZUxvYzoKICAgICAgICAgb3V0LnByaW50KCJTdHJ1Y3R1cmVMb2MiKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSGVhcExvY2F0aW9uLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0hlYXBMb2NhdGlvbi5oCmluZGV4IDY3NjU2NWNmYmYwZDEzMTIxOThj
ZDQxNGIyYTNiYTY3NjBhMGM5M2IuLmE3ZTE0MjdmMGFkZjQ0ZjY1ZGQxZDE2OTc0ZWJlMmRlMTYw
YjRjZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSGVhcExvY2F0
aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdIZWFwTG9jYXRpb24uaApA
QCAtNjAsNiArNjAsNyBAQCBlbnVtIExvY2F0aW9uS2luZCB7CiAgICAgU2V0dGVyTG9jLAogICAg
IFN0cnVjdHVyZUxvYywKICAgICBUeXBlZEFycmF5Qnl0ZU9mZnNldExvYywKKyAgICBQcm90b3R5
cGVMb2MsCiAgICAgU3RhY2tMb2MsCiAgICAgU3RhY2tQYXlsb2FkTG9jLAogICAgIE1hcEJ1Y2tl
dExvYywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKaW5kZXggNjI4YmZjNzUyZmZiMjli
MzU5NWU5ZDg0OGYxNWEyMzMwNDAzNmU2My4uYTY5MjE0MjhkMTVhM2UwOWVjMjA0YThhNzJkYjk2
MWY2NGYzYzVmZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKQEAgLTE1NDgsNiAr
MTU0OCw3IEBAIHN0cnVjdCBOb2RlIHsKICAgICAgICAgY2FzZSBHZXRCeUlkOgogICAgICAgICBj
YXNlIEdldEJ5SWRGbHVzaDoKICAgICAgICAgY2FzZSBHZXRCeUlkV2l0aFRoaXM6CisgICAgICAg
IGNhc2UgR2V0UHJvdG90eXBlT2Y6CiAgICAgICAgIGNhc2UgVHJ5R2V0QnlJZDoKICAgICAgICAg
Y2FzZSBHZXRCeVZhbDoKICAgICAgICAgY2FzZSBHZXRCeVZhbFdpdGhUaGlzOgpAQCAtMjMxMSw2
ICsyMzEyLDExIEBAIHN0cnVjdCBOb2RlIHsKICAgICAgICAgcmV0dXJuIGlzQXJyYXlTcGVjdWxh
dGlvbihwcmVkaWN0aW9uKCkpOwogICAgIH0KIAorICAgIGJvb2wgc2hvdWxkU3BlY3VsYXRlRnVu
Y3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGlzRnVuY3Rpb25TcGVjdWxhdGlvbihwcmVk
aWN0aW9uKCkpOworICAgIH0KKwogICAgIGJvb2wgc2hvdWxkU3BlY3VsYXRlUHJveHlPYmplY3Qo
KQogICAgIHsKICAgICAgICAgcmV0dXJuIGlzUHJveHlPYmplY3RTcGVjdWxhdGlvbihwcmVkaWN0
aW9uKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlw
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCmluZGV4IDZkY2Vj
MjRmNzE5ZWEyNzYxMzVkODUyODNkOTg1ZmI2OTJmNGY0NjQuLjhjZGUxNjc2Nzk4ZTdkMmUyOTk5
NzhlY2Y4OGJlZGJkNDM3ZWMzYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZVR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVU
eXBlLmgKQEAgLTI1MSw2ICsyNTEsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7
CiAgICAgbWFjcm8oQ2hlY2tUeXBlSW5mb0ZsYWdzLCBOb2RlTXVzdEdlbmVyYXRlKSAvKiBUYWtl
cyBhbiBPcEluZm8gd2l0aCB0aGUgZmxhZ3MgeW91IHdhbnQgdG8gdGVzdCBhcmUgc2V0ICovXAog
ICAgIG1hY3JvKENoZWNrU3ViQ2xhc3MsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhQ
YXJzZUludCwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVSZXN1bHRKUykgXAorICAgIG1hY3JvKEdl
dFByb3RvdHlwZU9mLCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZVJlc3VsdEpTKSBcCiAgICAgXAog
ICAgIC8qIEF0b21pY3Mgb2JqZWN0IGZ1bmN0aW9ucy4gKi9cCiAgICAgbWFjcm8oQXRvbWljc0Fk
ZCwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVIYXNWYXJBcmdzKSBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAppbmRleCAzOGIzYTNj
OWQ1OGNkOGRlZTk1ODM5OGZmMDZkNzM5MGMxMzhkOTVmLi5jOGZhMTEyYzhmZGYyY2FhMDY4Mjc5
NGQ3NmQxY2VhNDBhM2E4ODRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3Bl
cmF0aW9ucy5jcHAKQEAgLTUyLDYgKzUyLDcgQEAKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiSlNGaXhlZEFycmF5LmgiCiAjaW5jbHVkZSAiSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXdDb25zdHJ1Y3RvcklubGluZXMuaCIKKyNpbmNsdWRlICJKU0dsb2JhbE9iamVjdEZ1bmN0aW9u
cy5oIgogI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAiSlNNYXAu
aCIKICNpbmNsdWRlICJKU1NldC5oIgpAQCAtMjUxNyw2ICsyNTE4LDI5IEBAIEpTQ2VsbCogSklU
X09QRVJBVElPTiBvcGVyYXRpb25KU1NldEZpbmRCdWNrZXQoRXhlY1N0YXRlKiBleGVjLCBKU0Nl
bGwqIG1hcCwgRW5jCiAgICAgcmV0dXJuICpidWNrZXQ7CiB9CiAKK0VuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0UHJvdG90eXBlT2YoRXhlY1N0YXRlKiBleGVjLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKS50b1RoaXMoZXhlYywgU3RyaWN0TW9kZSk7Cisg
ICAgaWYgKHRoaXNWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKQorICAgICAgICByZXR1cm4gdGhy
b3dWTUVycm9yKGV4ZWMsIHNjb3BlLCBjcmVhdGVOb3RBbk9iamVjdEVycm9yKGV4ZWMsIHRoaXNW
YWx1ZSkpOworCisgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTT2Jq
ZWN0Kj4odm0sIHRoaXNWYWx1ZSk7CisgICAgaWYgKCF0aGlzT2JqZWN0KSB7CisgICAgICAgIEpT
T2JqZWN0KiBwcm90b3R5cGUgPSB0aGlzVmFsdWUuc3ludGhlc2l6ZVByb3RvdHlwZShleGVjKTsK
KyAgICAgICAgRVhDRVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpID09ICFwcm90b3R5
cGUpOworICAgICAgICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpCisgICAgICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUocHJvdG90eXBlKTsKKyAgICB9CisKKyAgICBzY29wZS5yZWxlYXNlKCk7CisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGUodm0sIGV4ZWMpKTsK
K30KKwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRocm93REZHKEV4ZWNTdGF0ZSogZXhl
YywgRW5jb2RlZEpTVmFsdWUgdmFsdWVUb1Rocm93KQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCmluZGV4IGIxNjVh
OWJjNjBhNjgzZjQ1NWU2MGU3ZmZmYjI4MzZiYjkxMTBlMGQuLjRjNGMxYWQ5MmIyY2E2ZGRhMjQz
M2JkOTRiOGFlZjFlODNhOWYxODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3Bl
cmF0aW9ucy5oCkBAIC03Nyw2ICs3Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uVG9QcmltaXRpdmUoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUpIFdUCiBFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRvTnVtYmVyKEV4ZWNTdGF0ZSosIEVu
Y29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkdldEJ5SWRXaXRoVGhpcyhFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUsIFVuaXF1ZWRTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeVZhbFdpdGhUaGlzKEV4ZWNTdGF0ZSos
IEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRF
Uk5BTDsKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0UHJvdG90eXBl
T2YoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsKIGNoYXIqIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uTmV3QXJyYXkoRXhlY1N0YXRlKiwgU3RydWN0dXJlKiwgdm9pZCos
IHNpemVfdCkgV1RGX0lOVEVSTkFMOwogY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdB
cnJheUJ1ZmZlcihFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBzaXplX3QsIHNpemVfdCkgV1RGX0lO
VEVSTkFMOwogY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdFbXB0eUFycmF5KEV4ZWNT
dGF0ZSosIFN0cnVjdHVyZSopIFdURl9JTlRFUk5BTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKaW5k
ZXggYmIzYTExZmVkZWYyZDQxZjEwODRhNTM5MDBkODU4Yjc2Mzk5YWFjMy4uNWJmN2MyZTEyMGQ3
NjI3NzYzYjkwOWRkY2JhYjhjMzg1YjFjZGM5MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKQEAg
LTcyMyw3ICs3MjMsOCBAQCBjbGFzcyBQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZSA6IHB1Ymxp
YyBQaGFzZSB7CiAgICAgICAgIGNhc2UgR2V0QXJndW1lbnQ6CiAgICAgICAgIGNhc2UgQ2FsbERP
TUdldHRlcjoKICAgICAgICAgY2FzZSBHZXREeW5hbWljVmFyOgotICAgICAgICBjYXNlIFdlYWtN
YXBHZXQ6IHsKKyAgICAgICAgY2FzZSBXZWFrTWFwR2V0OgorICAgICAgICBjYXNlIEdldFByb3Rv
dHlwZU9mOiB7CiAgICAgICAgICAgICBzZXRQcmVkaWN0aW9uKG1fY3VycmVudE5vZGUtPmdldEhl
YXBQcmVkaWN0aW9uKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKaW5kZXggMmU1NGNiMGIwNjVk
OWJjNDk2YmMwOGJmNWY3MGIxNGFhNjA2YTkwYi4uOWNmNTIxYjMyNzE3ZDM4YmE3Y2Q0NWE1NzFj
ZGJkOGE5MTBmNWY2ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
YWZlVG9FeGVjdXRlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9F
eGVjdXRlLmgKQEAgLTM5OSw2ICszOTksNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RT
dGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBHZXRN
eUFyZ3VtZW50QnlWYWxPdXRPZkJvdW5kczoKICAgICBjYXNlIEZvcndhcmRWYXJhcmdzOgogICAg
IGNhc2UgQ3JlYXRlUmVzdDoKKyAgICBjYXNlIEdldFByb3RvdHlwZU9mOgogICAgIGNhc2UgU3Ry
aW5nUmVwbGFjZToKICAgICBjYXNlIFN0cmluZ1JlcGxhY2VSZWdFeHA6CiAgICAgY2FzZSBHZXRS
ZWdFeHBPYmplY3RMYXN0SW5kZXg6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IDMwYWIzYTJmN2ZkYmNkMGQ2ZGM4YWM4M2RhNjc3Njkx
ODU5MWMyMGUuLjEyMDdiODBjYWQ0ZDhkZTcwMTBjNWFmMWQxYjk5NTIxNjQ4MzMwYzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC05
MTgxLDEzICs5MTgxLDIzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZU9iamVjdChF
ZGdlIGVkZ2UpCiAgICAgc3BlY3VsYXRlT2JqZWN0KGVkZ2UsIG9wZXJhbmQuZ3ByKCkpOwogfQog
Cit2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVGdW5jdGlvbihFZGdlIGVkZ2UsIEdQUlJl
ZyBjZWxsKQoreworICAgIHNwZWN1bGF0ZUNlbGxUeXBlKGVkZ2UsIGNlbGwsIFNwZWNGdW5jdGlv
biwgSlNGdW5jdGlvblR5cGUpOworfQorCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVG
dW5jdGlvbihFZGdlIGVkZ2UpCiB7CiAgICAgaWYgKCFuZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVj
RnVuY3Rpb24pKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJh
bmQgb3BlcmFuZCh0aGlzLCBlZGdlKTsKLSAgICBzcGVjdWxhdGVDZWxsVHlwZShlZGdlLCBvcGVy
YW5kLmdwcigpLCBTcGVjRnVuY3Rpb24sIEpTRnVuY3Rpb25UeXBlKTsKKyAgICBzcGVjdWxhdGVG
dW5jdGlvbihlZGdlLCBvcGVyYW5kLmdwcigpKTsKK30KKwordm9pZCBTcGVjdWxhdGl2ZUpJVDo6
c3BlY3VsYXRlRmluYWxPYmplY3QoRWRnZSBlZGdlLCBHUFJSZWcgY2VsbCkKK3sKKyAgICBzcGVj
dWxhdGVDZWxsVHlwZShlZGdlLCBjZWxsLCBTcGVjRmluYWxPYmplY3QsIEZpbmFsT2JqZWN0VHlw
ZSk7CiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZUZpbmFsT2JqZWN0KEVkZ2Ug
ZWRnZSkKQEAgLTkxOTYsNyArOTIwNiw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0
ZUZpbmFsT2JqZWN0KEVkZ2UgZWRnZSkKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIFNwZWN1
bGF0ZUNlbGxPcGVyYW5kIG9wZXJhbmQodGhpcywgZWRnZSk7Ci0gICAgc3BlY3VsYXRlQ2VsbFR5
cGUoZWRnZSwgb3BlcmFuZC5ncHIoKSwgU3BlY0ZpbmFsT2JqZWN0LCBGaW5hbE9iamVjdFR5cGUp
OworICAgIHNwZWN1bGF0ZUZpbmFsT2JqZWN0KGVkZ2UsIG9wZXJhbmQuZ3ByKCkpOwogfQogCiB2
b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVSZWdFeHBPYmplY3QoRWRnZSBlZGdlLCBHUFJS
ZWcgY2VsbCkKQEAgLTEwNzYyLDYgKzEwNzcyLDEzNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlV2Vha01hcEdldChOb2RlKiBub2RlKQogICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVn
cywgbm9kZSk7CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRQcm90b3R5cGVP
ZihOb2RlKiBub2RlKQoreworICAgIHN3aXRjaCAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7
CisgICAgY2FzZSBBcnJheVVzZToKKyAgICBjYXNlIEZ1bmN0aW9uVXNlOgorICAgIGNhc2UgRmlu
YWxPYmplY3RVc2U6IHsKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgb2JqZWN0KHRoaXMs
IG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CisgICAg
ICAgIEdQUlRlbXBvcmFyeSB0ZW1wMih0aGlzKTsKKworICAgICAgICBHUFJSZWcgb2JqZWN0R1BS
ID0gb2JqZWN0LmdwcigpOworICAgICAgICBHUFJSZWcgdGVtcEdQUiA9IHRlbXAuZ3ByKCk7Cisg
ICAgICAgIEdQUlJlZyB0ZW1wMkdQUiA9IHRlbXAyLmdwcigpOworCisgICAgICAgIHN3aXRjaCAo
bm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7CisgICAgICAgIGNhc2UgQXJyYXlVc2U6CisgICAg
ICAgICAgICBzcGVjdWxhdGVBcnJheShub2RlLT5jaGlsZDEoKSwgb2JqZWN0R1BSKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEZ1bmN0aW9uVXNlOgorICAgICAgICAgICAgc3Bl
Y3VsYXRlRnVuY3Rpb24obm9kZS0+Y2hpbGQxKCksIG9iamVjdEdQUik7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBGaW5hbE9iamVjdFVzZToKKyAgICAgICAgICAgIHNwZWN1bGF0
ZUZpbmFsT2JqZWN0KG5vZGUtPmNoaWxkMSgpLCBvYmplY3RHUFIpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBtX2ppdC5l
bWl0TG9hZFN0cnVjdHVyZSgqbV9qaXQudm0oKSwgb2JqZWN0R1BSLCB0ZW1wR1BSLCB0ZW1wMkdQ
Uik7CisKKyAgICAgICAgQWJzdHJhY3RWYWx1ZSYgdmFsdWUgPSBtX3N0YXRlLmZvck5vZGUobm9k
ZS0+Y2hpbGQxKCkpOworICAgICAgICBpZiAoKHZhbHVlLm1fdHlwZSAmJiAhKHZhbHVlLm1fdHlw
ZSAmIH5TcGVjT2JqZWN0KSkgJiYgdmFsdWUubV9zdHJ1Y3R1cmUuaXNGaW5pdGUoKSkgeworICAg
ICAgICAgICAgYm9vbCBoYXNQb2x5UHJvdG8gPSBmYWxzZTsKKyAgICAgICAgICAgIGJvb2wgaGFz
TW9ub1Byb3RvID0gZmFsc2U7CisgICAgICAgICAgICB2YWx1ZS5tX3N0cnVjdHVyZS5mb3JFYWNo
KFsmXSAoUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUpIHsKKyAgICAgICAgICAgICAgICBp
ZiAoc3RydWN0dXJlLT5oYXNQb2x5UHJvdG8oKSkKKyAgICAgICAgICAgICAgICAgICAgaGFzUG9s
eVByb3RvID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAg
IGhhc01vbm9Qcm90byA9IHRydWU7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgaWYg
KGhhc01vbm9Qcm90byAmJiAhaGFzUG9seVByb3RvKSB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAg
ICAgICAgICAgICAgICBtX2ppdC5sb2FkNjQoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcEdQ
UiwgU3RydWN0dXJlOjpwcm90b3R5cGVPZmZzZXQoKSksIHRlbXBHUFIpOworICAgICAgICAgICAg
ICAgIGpzVmFsdWVSZXN1bHQodGVtcEdQUiwgbm9kZSk7CisjZWxzZQorICAgICAgICAgICAgICAg
IG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wR1BSLCBTdHJ1Y3R1cmU6
OnByb3RvdHlwZU9mZnNldCgpICsgVGFnT2Zmc2V0KSwgdGVtcDJHUFIpOworICAgICAgICAgICAg
ICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wR1BSLCBTdHJ1Y3R1
cmU6OnByb3RvdHlwZU9mZnNldCgpICsgUGF5bG9hZE9mZnNldCksIHRlbXBHUFIpOworICAgICAg
ICAgICAgICAgIGpzVmFsdWVSZXN1bHQodGVtcDJHUFIsIHRlbXBHUFIsIG5vZGUpOworI2VuZGlm
CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBp
ZiAoaGFzUG9seVByb3RvICYmICFoYXNNb25vUHJvdG8pIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQor
ICAgICAgICAgICAgICAgIG1faml0LmxvYWQ2NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1w
R1BSLCBTdHJ1Y3R1cmU6OnByb3RvdHlwZU9mZnNldCgpKSwgdGVtcEdQUik7CisgICAgICAgICAg
ICAgICAgbV9qaXQuemVyb0V4dGVuZDMyVG9QdHIodGVtcEdQUiwgdGVtcEdQUik7CisgICAgICAg
ICAgICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjpCYXNlSW5kZXgob2JqZWN0R1BSLCB0
ZW1wR1BSLCBKSVRDb21waWxlcjo6VGltZXNFaWdodCwgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5l
U3RvcmFnZSgpKSwgdGVtcEdQUik7CisgICAgICAgICAgICAgICAganNWYWx1ZVJlc3VsdCh0ZW1w
R1BSLCBub2RlKTsKKyNlbHNlCisgICAgICAgICAgICAgICAgbV9qaXQubG9hZDMyKE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKHRlbXBHUFIsIFN0cnVjdHVyZTo6cHJvdG90eXBlT2Zmc2V0KCkgKyBQ
YXlsb2FkT2Zmc2V0KSwgdGVtcEdQUik7CisgICAgICAgICAgICAgICAgbV9qaXQubG9hZDMyKEpJ
VENvbXBpbGVyOjpCYXNlSW5kZXgob2JqZWN0R1BSLCB0ZW1wR1BSLCBKSVRDb21waWxlcjo6VGlt
ZXNFaWdodCwgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpICsgVGFnT2Zmc2V0KSwg
dGVtcDJHUFIpOworICAgICAgICAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6QmFz
ZUluZGV4KG9iamVjdEdQUiwgdGVtcEdQUiwgSklUQ29tcGlsZXI6OlRpbWVzRWlnaHQsIEpTT2Jq
ZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSArIFBheWxvYWRPZmZzZXQpLCB0ZW1wR1BSKTsK
KyAgICAgICAgICAgICAgICBqc1ZhbHVlUmVzdWx0KHRlbXAyR1BSLCB0ZW1wR1BSLCBub2RlKTsK
KyNlbmRpZgorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgbV9qaXQubG9hZDY0KE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKHRlbXBHUFIsIFN0cnVjdHVyZTo6cHJvdG90eXBlT2Zmc2V0KCkpLCB0ZW1w
R1BSKTsKKyAgICAgICAgYXV0byBpc01vbm9Qcm90byA9IG1faml0LmJyYW5jaElmTm90SW50MzIo
SlNWYWx1ZVJlZ3ModGVtcEdQUikpOworICAgICAgICBtX2ppdC56ZXJvRXh0ZW5kMzJUb1B0cih0
ZW1wR1BSLCB0ZW1wR1BSKTsKKyAgICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjpCYXNl
SW5kZXgob2JqZWN0R1BSLCB0ZW1wR1BSLCBKSVRDb21waWxlcjo6VGltZXNFaWdodCwgSlNPYmpl
Y3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpKSwgdGVtcEdQUik7CisgICAgICAgIGlzTW9ub1By
b3RvLmxpbmsoJm1faml0KTsKKyAgICAgICAganNWYWx1ZVJlc3VsdCh0ZW1wR1BSLCBub2RlKTsK
KyNlbHNlCisgICAgICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1w
R1BSLCBTdHJ1Y3R1cmU6OnByb3RvdHlwZU9mZnNldCgpICsgVGFnT2Zmc2V0KSwgdGVtcDJHUFIp
OworICAgICAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcEdQUiwg
U3RydWN0dXJlOjpwcm90b3R5cGVPZmZzZXQoKSArIFBheWxvYWRPZmZzZXQpLCB0ZW1wR1BSKTsK
KyAgICAgICAgYXV0byBpc01vbm9Qcm90byA9IG1faml0LmJyYW5jaDMyKENDYWxsSGVscGVyczo6
Tm90RXF1YWwsIHRlbXAyR1BSLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6SW50MzJUYWcpKTsKKyAg
ICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpCYXNlSW5kZXgob2JqZWN0R1BSLCB0ZW1w
R1BSLCBKSVRDb21waWxlcjo6VGltZXNFaWdodCwgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3Rv
cmFnZSgpICsgVGFnT2Zmc2V0KSwgdGVtcDJHUFIpOworICAgICAgICBtX2ppdC5sb2FkMzIoSklU
Q29tcGlsZXI6OkJhc2VJbmRleChvYmplY3RHUFIsIHRlbXBHUFIsIEpJVENvbXBpbGVyOjpUaW1l
c0VpZ2h0LCBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgKyBQYXlsb2FkT2Zmc2V0
KSwgdGVtcEdQUik7CisgICAgICAgIGlzTW9ub1Byb3RvLmxpbmsoJm1faml0KTsKKyAgICAgICAg
anNWYWx1ZVJlc3VsdCh0ZW1wMkdQUiwgdGVtcEdQUiwgbm9kZSk7CisjZW5kaWYKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyAgICBjYXNlIE9iamVjdFVzZTogeworICAgICAgICBTcGVjdWxhdGVD
ZWxsT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIEpTVmFsdWVS
ZWdzVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKworICAgICAgICBHUFJSZWcgdmFsdWVHUFIgPSB2
YWx1ZS5ncHIoKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdz
KCk7CisKKyAgICAgICAgc3BlY3VsYXRlT2JqZWN0KG5vZGUtPmNoaWxkMSgpLCB2YWx1ZUdQUik7
CisKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBmbHVzaFJlZ2lzdGVycygpOworICAgICAg
ICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkdldFByb3RvdHlwZU9mLCByZXN1bHRSZWdzLCBKU1Zh
bHVlUmVnczo6cGF5bG9hZE9ubHkodmFsdWVHUFIpKTsKKyAgICAgICAgbV9qaXQuZXhjZXB0aW9u
Q2hlY2soKTsKKyAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKKworI2Vs
c2UKKyAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZyksIHJl
c3VsdFJlZ3MudGFnR1BSKCkpOworICAgICAgICBtX2ppdC5tb3ZlKHZhbHVlR1BSLCByZXN1bHRS
ZWdzLnBheWxvYWRHUFIoKSk7CisgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CisgICAgICAgIGNh
bGxPcGVyYXRpb24ob3BlcmF0aW9uR2V0UHJvdG90eXBlT2YsIHJlc3VsdFJlZ3MsIHJlc3VsdFJl
Z3MpOworICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOworICAgICAgICBqc1ZhbHVlUmVz
dWx0KHJlc3VsdFJlZ3MsIG5vZGUpOworI2VuZGlmCisgICAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgZGVmYXVsdDogeworICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5j
aGlsZDEoKSk7CisgICAgICAgIEpTVmFsdWVSZWdzVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKwor
ICAgICAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygpOworICAg
ICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKKworICAgICAgICBm
bHVzaFJlZ2lzdGVycygpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkdldFByb3Rv
dHlwZU9mLCByZXN1bHRSZWdzLCB2YWx1ZVJlZ3MpOworICAgICAgICBtX2ppdC5leGNlcHRpb25D
aGVjaygpOworICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOworICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIH0KK30KKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwog
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
aAppbmRleCAyNTgyMmFlNDkyNTgyZWJlZjkyZGIxZDkyODFhYmMwOTIwNDFhODcwLi5kMTA5Mzgw
NWRmMTE4NTBlNjM0ZWQyMGFiZGFiZjA5MjYxMjFjNjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCkBAIC0yODM0LDYgKzI4MzQsNyBAQCBjbGFz
cyBTcGVjdWxhdGl2ZUpJVCB7CiAgICAgdm9pZCBjb21waWxlV2Vha01hcEdldChOb2RlKik7CiAg
ICAgdm9pZCBjb21waWxlTG9hZEtleUZyb21NYXBCdWNrZXQoTm9kZSopOwogICAgIHZvaWQgY29t
cGlsZUxvYWRWYWx1ZUZyb21NYXBCdWNrZXQoTm9kZSopOworICAgIHZvaWQgY29tcGlsZUdldFBy
b3RvdHlwZU9mKE5vZGUqKTsKICAgICAKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEJhc2VPcGVyYW5kVHlwZSwgdHlwZW5hbWUgUHJvcGVydHlPcGVyYW5kVHlw
ZSwgdHlwZW5hbWUgVmFsdWVPcGVyYW5kVHlwZSwgdHlwZW5hbWUgVGFnVHlwZT4KQEAgLTMwODMs
NyArMzA4NCw5IEBAIGNsYXNzIFNwZWN1bGF0aXZlSklUIHsKICAgICB2b2lkIHNwZWN1bGF0ZU9i
amVjdChFZGdlKTsKICAgICB2b2lkIHNwZWN1bGF0ZUFycmF5KEVkZ2UsIEdQUlJlZyBjZWxsKTsK
ICAgICB2b2lkIHNwZWN1bGF0ZUFycmF5KEVkZ2UpOworICAgIHZvaWQgc3BlY3VsYXRlRnVuY3Rp
b24oRWRnZSwgR1BSUmVnIGNlbGwpOwogICAgIHZvaWQgc3BlY3VsYXRlRnVuY3Rpb24oRWRnZSk7
CisgICAgdm9pZCBzcGVjdWxhdGVGaW5hbE9iamVjdChFZGdlLCBHUFJSZWcgY2VsbCk7CiAgICAg
dm9pZCBzcGVjdWxhdGVGaW5hbE9iamVjdChFZGdlKTsKICAgICB2b2lkIHNwZWN1bGF0ZVJlZ0V4
cE9iamVjdChFZGdlLCBHUFJSZWcgY2VsbCk7CiAgICAgdm9pZCBzcGVjdWxhdGVSZWdFeHBPYmpl
Y3QoRWRnZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDY0LmNwcAppbmRleCBjZjY2ZTZhZjY5ZTQxNmRlNmRjODFlOGY2N2MxNzlhNDQyZmU2Nzg3
Li5kN2I0ZWNmYjA0OTZlYjU0ODA3MzRjZDUxYzQwMWFjZTYxNTViNWIyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTQ2NDIs
NiArNDY0MiwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAg
ICAgICAgIGNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldChub2RlKTsKICAgICAgICAgYnJl
YWs7CiAgICAgfQorCisgICAgY2FzZSBHZXRQcm90b3R5cGVPZjogeworICAgICAgICBjb21waWxl
R2V0UHJvdG90eXBlT2Yobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICAgICAgCiAg
ICAgY2FzZSBHZXRCeU9mZnNldDoKICAgICBjYXNlIEdldEdldHRlclNldHRlckJ5T2Zmc2V0OiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKaW5kZXgg
MTMwOWU5ZWFhMTkxMTU3MmRhYWQxYjk2YWZhY2YyN2ZkZWRhOGE5MS4uNTFiMzA3ZjY2OTdkODIw
ZDI2YWVjNjJjYmUwYTkzNjhhMTk1ZmY4OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMQ2FwYWJpbGl0aWVzLmNwcApAQCAtMTQ0LDYgKzE0NCw3IEBAIGlubGluZSBDYXBhYmls
aXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgUmVhbGxvY2F0ZVByb3Bl
cnR5U3RvcmFnZToKICAgICBjYXNlIE51a2VTdHJ1Y3R1cmVBbmRTZXRCdXR0ZXJmbHk6CiAgICAg
Y2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldDoKKyAgICBjYXNlIEdldFByb3RvdHlwZU9mOgog
ICAgIGNhc2UgTm90aWZ5V3JpdGU6CiAgICAgY2FzZSBTdG9yZUJhcnJpZXI6CiAgICAgY2FzZSBG
ZW5jZWRTdG9yZUJhcnJpZXI6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2Vy
REZHVG9CMy5jcHAKaW5kZXggMjI4MDIxNTRiODAyNWZiZmFkNzUwMmYxYzU2YmQ4NWZkZjExOTIx
ZC4uMDdmY2Y5M2ViYjA5N2QxM2MzZmZlYWI2ZjkzZWZjMTU5N2VjZGJkNyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtODIxLDYgKzgyMSw5
IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVP
ZmZzZXQ6CiAgICAgICAgICAgICBjb21waWxlR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQoKTsKICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdldFByb3RvdHlwZU9mOgorICAgICAgICAg
ICAgY29tcGlsZUdldFByb3RvdHlwZU9mKCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBBbGxvY2F0ZVByb3BlcnR5U3RvcmFnZToKICAgICAgICAgICAgIGNvbXBpbGVBbGxvY2F0
ZVByb3BlcnR5U3RvcmFnZSgpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0zNDIzLDYgKzM0MjYs
NzggQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAgICAgICBzZXRJbnQzMihtX291dC5jYXN0
VG9JbnQzMihtX291dC5waGkocG9pbnRlclR5cGUoKSwgc2ltcGxlT3V0LCB3YXN0ZWZ1bE91dCkp
KTsKICAgICB9CisKKyAgICB2b2lkIGNvbXBpbGVHZXRQcm90b3R5cGVPZigpCisgICAgeworICAg
ICAgICBzd2l0Y2ggKG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7CisgICAgICAgIGNhc2Ug
QXJyYXlVc2U6CisgICAgICAgIGNhc2UgRnVuY3Rpb25Vc2U6CisgICAgICAgIGNhc2UgRmluYWxP
YmplY3RVc2U6IHsKKyAgICAgICAgICAgIExWYWx1ZSBvYmplY3QgPSBsb3dDZWxsKG1fbm9kZS0+
Y2hpbGQxKCkpOworICAgICAgICAgICAgc3dpdGNoIChtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQo
KSkgeworICAgICAgICAgICAgY2FzZSBBcnJheVVzZToKKyAgICAgICAgICAgICAgICBzcGVjdWxh
dGVBcnJheShtX25vZGUtPmNoaWxkMSgpLCBvYmplY3QpOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgY2FzZSBGdW5jdGlvblVzZToKKyAgICAgICAgICAgICAgICBzcGVjdWxh
dGVGdW5jdGlvbihtX25vZGUtPmNoaWxkMSgpLCBvYmplY3QpOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgY2FzZSBGaW5hbE9iamVjdFVzZToKKyAgICAgICAgICAgICAgICBz
cGVjdWxhdGVGaW5hbE9iamVjdChtX25vZGUtPmNoaWxkMSgpLCBvYmplY3QpOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBMVmFsdWUgc3RydWN0dXJlID0gbG9hZFN0cnVjdHVyZShv
YmplY3QpOworCisgICAgICAgICAgICBBYnN0cmFjdFZhbHVlJiB2YWx1ZSA9IG1fc3RhdGUuZm9y
Tm9kZShtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGlmICgodmFsdWUubV90eXBlICYm
ICEodmFsdWUubV90eXBlICYgflNwZWNPYmplY3QpKSAmJiB2YWx1ZS5tX3N0cnVjdHVyZS5pc0Zp
bml0ZSgpKSB7CisgICAgICAgICAgICAgICAgYm9vbCBoYXNQb2x5UHJvdG8gPSBmYWxzZTsKKyAg
ICAgICAgICAgICAgICBib29sIGhhc01vbm9Qcm90byA9IGZhbHNlOworICAgICAgICAgICAgICAg
IHZhbHVlLm1fc3RydWN0dXJlLmZvckVhY2goWyZdIChSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVj
dHVyZSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoc3RydWN0dXJlLT5oYXNQb2x5UHJvdG8o
KSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGhhc1BvbHlQcm90byA9IHRydWU7CisgICAgICAg
ICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGhhc01vbm9Qcm90byA9
IHRydWU7CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICBpZiAoaGFzTW9u
b1Byb3RvICYmICFoYXNQb2x5UHJvdG8pIHsKKyAgICAgICAgICAgICAgICAgICAgc2V0SlNWYWx1
ZShtX291dC5sb2FkNjQoc3RydWN0dXJlLCBtX2hlYXBzLlN0cnVjdHVyZV9wcm90b3R5cGUpKTsK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgICAgIGlmIChoYXNQb2x5UHJvdG8gJiYgIWhhc01vbm9Qcm90bykgeworICAgICAgICAg
ICAgICAgICAgICBMVmFsdWUgcHJvdG90eXBlQml0cyA9IG1fb3V0LmxvYWQ2NChzdHJ1Y3R1cmUs
IG1faGVhcHMuU3RydWN0dXJlX3Byb3RvdHlwZSk7CisgICAgICAgICAgICAgICAgICAgIExWYWx1
ZSBpbmRleCA9IG1fb3V0LmJpdEFuZChwcm90b3R5cGVCaXRzLCBtX291dC5jb25zdEludDY0KFVJ
TlRfTUFYKSk7CisgICAgICAgICAgICAgICAgICAgIHNldEpTVmFsdWUobV9vdXQubG9hZDY0KG1f
b3V0LmJhc2VJbmRleChtX2hlYXBzLnByb3BlcnRpZXMuYXRBbnlOdW1iZXIoKSwgb2JqZWN0LCBp
bmRleCwgU2NhbGVFaWdodCwgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpKSkpOwor
ICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdC
bG9jaygpOworICAgICAgICAgICAgTEJhc2ljQmxvY2sgbG9hZFBvbHlQcm90byA9IG1fb3V0Lm5l
d0Jsb2NrKCk7CisKKyAgICAgICAgICAgIExWYWx1ZSBwcm90b3R5cGVCaXRzID0gbV9vdXQubG9h
ZDY0KHN0cnVjdHVyZSwgbV9oZWFwcy5TdHJ1Y3R1cmVfcHJvdG90eXBlKTsKKyAgICAgICAgICAg
IFZhbHVlRnJvbUJsb2NrIGRpcmVjdFByb3RvdHlwZSA9IG1fb3V0LmFuY2hvcihwcm90b3R5cGVC
aXRzKTsKKyAgICAgICAgICAgIG1fb3V0LmJyYW5jaChpc0ludDMyKHByb3RvdHlwZUJpdHMpLCB1
bnN1cmUobG9hZFBvbHlQcm90byksIHVuc3VyZShjb250aW51YXRpb24pKTsKKworICAgICAgICAg
ICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhsb2FkUG9seVByb3RvLCBj
b250aW51YXRpb24pOworICAgICAgICAgICAgTFZhbHVlIGluZGV4ID0gbV9vdXQuYml0QW5kKHBy
b3RvdHlwZUJpdHMsIG1fb3V0LmNvbnN0SW50NjQoVUlOVF9NQVgpKTsKKyAgICAgICAgICAgIFZh
bHVlRnJvbUJsb2NrIHBvbHlQcm90byA9IG1fb3V0LmFuY2hvcigKKyAgICAgICAgICAgICAgICBt
X291dC5sb2FkNjQobV9vdXQuYmFzZUluZGV4KG1faGVhcHMucHJvcGVydGllcy5hdEFueU51bWJl
cigpLCBvYmplY3QsIGluZGV4LCBTY2FsZUVpZ2h0LCBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVT
dG9yYWdlKCkpKSk7CisgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAg
ICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOworICAgICAg
ICAgICAgc2V0SlNWYWx1ZShtX291dC5waGkoSW50NjQsIGRpcmVjdFByb3RvdHlwZSwgcG9seVBy
b3RvKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgZGVmYXVsdDog
eworICAgICAgICAgICAgc2V0SlNWYWx1ZSh2bUNhbGwoSW50NjQsIG1fb3V0Lm9wZXJhdGlvbihv
cGVyYXRpb25HZXRQcm90b3R5cGVPZiksIG1fY2FsbEZyYW1lLCBsb3dKU1ZhbHVlKG1fbm9kZS0+
Y2hpbGQxKCkpKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgfQor
ICAgIH0KICAgICAKICAgICB2b2lkIGNvbXBpbGVHZXRBcnJheUxlbmd0aCgpCiAgICAgewpAQCAt
ODk4Nyw3ICs5MDYyLDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgTFZhbHVlIHN0
cnVjdHVyZSA9IGxvYWRTdHJ1Y3R1cmUodmFsdWUpOwogCiAgICAgICAgIExWYWx1ZSBwcm90b3R5
cGVCaXRzID0gbV9vdXQubG9hZDY0KHN0cnVjdHVyZSwgbV9oZWFwcy5TdHJ1Y3R1cmVfcHJvdG90
eXBlKTsKLSAgICAgICAgVmFsdWVGcm9tQmxvY2sgZGlyZWN0UHJvdG95cGUgPSBtX291dC5hbmNo
b3IocHJvdG90eXBlQml0cyk7CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIGRpcmVjdFByb3RvdHlw
ZSA9IG1fb3V0LmFuY2hvcihwcm90b3R5cGVCaXRzKTsKICAgICAgICAgbV9vdXQuYnJhbmNoKGlz
SW50MzIocHJvdG90eXBlQml0cyksIHVuc3VyZShsb2FkUG9seVByb3RvKSwgdW5zdXJlKGNvbXBh
cmVQcm90b3R5cGUpKTsKIAogICAgICAgICBtX291dC5hcHBlbmRUbyhsb2FkUG9seVByb3RvLCBj
b21wYXJlUHJvdG90eXBlKTsKQEAgLTg5OTcsNyArOTA3Miw3IEBAIGNsYXNzIExvd2VyREZHVG9C
MyB7CiAgICAgICAgIG1fb3V0Lmp1bXAoY29tcGFyZVByb3RvdHlwZSk7CiAKICAgICAgICAgbV9v
dXQuYXBwZW5kVG8oY29tcGFyZVByb3RvdHlwZSwgbm90WWV0SW5zdGFuY2UpOwotICAgICAgICBM
VmFsdWUgY3VycmVudFByb3RvdHlwZSA9IG1fb3V0LnBoaShJbnQ2NCwgZGlyZWN0UHJvdG95cGUs
IHBvbHlQcm90byk7CisgICAgICAgIExWYWx1ZSBjdXJyZW50UHJvdG90eXBlID0gbV9vdXQucGhp
KEludDY0LCBkaXJlY3RQcm90b3R5cGUsIHBvbHlQcm90byk7CiAgICAgICAgIFZhbHVlRnJvbUJs
b2NrIGlzSW5zdGFuY2VSZXN1bHQgPSBtX291dC5hbmNob3IobV9vdXQuYm9vbGVhblRydWUpOwog
ICAgICAgICBtX291dC5icmFuY2goCiAgICAgICAgICAgICBtX291dC5lcXVhbChjdXJyZW50UHJv
dG90eXBlLCBwcm90b3R5cGUpLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9JbnRyaW5zaWNFbWl0dGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSW50cmlu
c2ljRW1pdHRlci5jcHAKaW5kZXggNGZiN2E1OTA5ZGRkNWFmYzJjNTQxZDJhM2IyZWJhYTJjZDc3
NzQ3Ni4uYTVlMGFjOTljMjllZjI0Yjk5MmU3YTM1MzNjZWUxNGU5MDI1MTUwYyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JbnRyaW5zaWNFbWl0dGVyLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0ludHJpbnNpY0VtaXR0ZXIuY3BwCkBAIC02Myw2ICs2
MywxMSBAQCBib29sIEludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2U6OmNhbkVtaXRJbnRyaW5zaWNH
ZXR0ZXIoSlNGdW5jdGlvbiogZ2V0dGVyLCBTdHJ1YwogICAgICAgICAKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQorICAgIGNhc2UgVW5kZXJzY29yZVByb3RvSW50cmluc2ljOiB7CisgICAg
ICAgIGF1dG8gZ2V0UHJvdG90eXBlTWV0aG9kID0gc3RydWN0dXJlLT5jbGFzc0luZm8oKS0+bWV0
aG9kVGFibGUuZ2V0UHJvdG90eXBlOworICAgICAgICBNZXRob2RUYWJsZTo6R2V0UHJvdG90eXBl
RnVuY3Rpb25QdHIgZGVmYXVsdEdldFByb3RvdHlwZSA9IEpTT2JqZWN0OjpnZXRQcm90b3R5cGU7
CisgICAgICAgIHJldHVybiBnZXRQcm90b3R5cGVNZXRob2QgPT0gZGVmYXVsdEdldFByb3RvdHlw
ZTsKKyAgICB9CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAg
LTEyNSw2ICsxMzAsMTcgQEAgdm9pZCBJbnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlOjplbWl0SW50
cmluc2ljR2V0dGVyKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAorICAgIGNhc2UgVW5kZXJzY29yZVByb3RvSW50cmluc2ljOiB7CisgICAgICAg
IGlmIChzdHJ1Y3R1cmUoKS0+aGFzTW9ub1Byb3RvKCkpIHsKKyAgICAgICAgICAgIGppdC5tb3Zl
VmFsdWUoc3RydWN0dXJlKCktPnN0b3JlZFByb3RvdHlwZSgpLCB2YWx1ZVJlZ3MpOworICAgICAg
ICAgICAgc3RhdGUuc3VjY2VlZCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9Cisg
ICAgICAgIGppdC5sb2FkVmFsdWUoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgc2l6
ZW9mKEVuY29kZWRKU1ZhbHVlKSAqIHN0cnVjdHVyZSgpLT5wb2x5UHJvdG9PZmZzZXQoKSArIEpT
T2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSksIHZhbHVlUmVncyk7CisgICAgICAgIHN0
YXRlLnN1Y2NlZWQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGRlZmF1bHQ6CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludHJpbnNpYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRy
aW5zaWMuY3BwCmluZGV4IDlkMTJmZmY5ZGY3NWNlMTdkNmEwMWIzMDM2YTFiYTdiYTEzNjM5MTMu
LjliNWJkMDgwOGQ2MjJlZDY1NDkzMDA5MDE4NGNiZjYzYjFiMTEwNTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmNwcApAQCAtMTExLDYgKzExMSwxMCBAQCBj
b25zdCBjaGFyKiBpbnRyaW5zaWNOYW1lKEludHJpbnNpYyBpbnRyaW5zaWMpCiAgICAgICAgIHJl
dHVybiAiUmVnRXhwVGVzdEludHJpbnNpYyI7CiAgICAgY2FzZSBSZWdFeHBUZXN0RmFzdEludHJp
bnNpYzoKICAgICAgICAgcmV0dXJuICJSZWdFeHBUZXN0RmFzdEludHJpbnNpYyI7CisgICAgY2Fz
ZSBPYmplY3RHZXRQcm90b3R5cGVPZkludHJpbnNpYzoKKyAgICAgICAgcmV0dXJuICJPYmplY3RH
ZXRQcm90b3R5cGVPZkludHJpbnNpYyI7CisgICAgY2FzZSBSZWZsZWN0R2V0UHJvdG90eXBlT2ZJ
bnRyaW5zaWM6CisgICAgICAgIHJldHVybiAiUmVmbGVjdEdldFByb3RvdHlwZU9mSW50cmluc2lj
IjsKICAgICBjYXNlIFN0cmluZ1Byb3RvdHlwZVZhbHVlT2ZJbnRyaW5zaWM6CiAgICAgICAgIHJl
dHVybiAiU3RyaW5nUHJvdG90eXBlVmFsdWVPZkludHJpbnNpYyI7CiAgICAgY2FzZSBTdHJpbmdQ
cm90b3R5cGVSZXBsYWNlSW50cmluc2ljOgpAQCAtMTg5LDYgKzE5Myw4IEBAIGNvbnN0IGNoYXIq
IGludHJpbnNpY05hbWUoSW50cmluc2ljIGludHJpbnNpYykKICAgICAgICAgcmV0dXJuICJUeXBl
ZEFycmF5Qnl0ZUxlbmd0aEludHJpbnNpYyI7CiAgICAgY2FzZSBUeXBlZEFycmF5Qnl0ZU9mZnNl
dEludHJpbnNpYzoKICAgICAgICAgcmV0dXJuICJUeXBlZEFycmF5Qnl0ZU9mZnNldEludHJpbnNp
YyI7CisgICAgY2FzZSBVbmRlcnNjb3JlUHJvdG9JbnRyaW5zaWM6CisgICAgICAgIHJldHVybiAi
VW5kZXJzY29yZVByb3RvSW50cmluc2ljIjsKICAgICBjYXNlIERGR1RydWVJbnRyaW5zaWM6CiAg
ICAgICAgIHJldHVybiAiREZHVHJ1ZUludHJpbnNpYyI7CiAgICAgY2FzZSBPU1JFeGl0SW50cmlu
c2ljOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2lj
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuaAppbmRleCAyOWQ5
NWY3MjlhYzU0YzFmM2E1NzBmYWJmNjg0ZmU3ZTNiNTc3ZDkwLi4wNmNiMjhhNDJlYmExZjA5ODY4
YmU0OTJmMTFiMjVmMzlmMmI5MzU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRyaW5zaWMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRyaW5zaWMuaApAQCAtNjgsNiArNjgsOCBAQCBlbnVtIEludHJpbnNpYyB7CiAgICAgUmVnRXhw
RXhlY0ludHJpbnNpYywKICAgICBSZWdFeHBUZXN0SW50cmluc2ljLAogICAgIFJlZ0V4cFRlc3RG
YXN0SW50cmluc2ljLAorICAgIE9iamVjdEdldFByb3RvdHlwZU9mSW50cmluc2ljLAorICAgIFJl
ZmxlY3RHZXRQcm90b3R5cGVPZkludHJpbnNpYywKICAgICBTdHJpbmdQcm90b3R5cGVWYWx1ZU9m
SW50cmluc2ljLAogICAgIFN0cmluZ1Byb3RvdHlwZVJlcGxhY2VJbnRyaW5zaWMsCiAgICAgU3Ry
aW5nUHJvdG90eXBlUmVwbGFjZVJlZ0V4cEludHJpbnNpYywKQEAgLTEwOSw2ICsxMTEsNyBAQCBl
bnVtIEludHJpbnNpYyB7CiAgICAgVHlwZWRBcnJheUxlbmd0aEludHJpbnNpYywKICAgICBUeXBl
ZEFycmF5Qnl0ZUxlbmd0aEludHJpbnNpYywKICAgICBUeXBlZEFycmF5Qnl0ZU9mZnNldEludHJp
bnNpYywKKyAgICBVbmRlcnNjb3JlUHJvdG9JbnRyaW5zaWMsCiAKICAgICAvLyBEZWJ1Z2dpbmcg
aW50cmluc2ljcy4gVGhlc2UgYXJlIG1lYW50IHRvIGJlIHVzZWQgYXMgdGVzdGluZyBoYWNrcyB3
aXRoaW4KICAgICAvLyBqc2MuY3BwIGFuZCBzaG91bGQgbmV2ZXIgYmUgZXhwb3NlZCB0byB1c2Vy
cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNw
cAppbmRleCA0MGU0ZjQxZTgyM2M2MzBiNWE3Y2U1YzY1OTE3NTcwNTFmZjEwZjMxLi4xNzBlMjYw
YjYwMDI5ZmUzZjM1ODlhODJmMGFiMTU2YjYyZTNjMzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC00NTAsNyArNDUwLDcgQEAg
dm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgbV9udWxsU2V0dGVyRnVuY3Rp
b24uc2V0KHZtLCB0aGlzLCBOdWxsU2V0dGVyRnVuY3Rpb246OmNyZWF0ZSh2bSwgTnVsbFNldHRl
ckZ1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUu
Z2V0KCkpKSk7CiAgICAgbV9vYmplY3RQcm90b3R5cGUuc2V0KHZtLCB0aGlzLCBPYmplY3RQcm90
b3R5cGU6OmNyZWF0ZSh2bSwgdGhpcywgT2JqZWN0UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUo
dm0sIHRoaXMsIGpzTnVsbCgpKSkpOwogICAgIEdldHRlclNldHRlciogcHJvdG9BY2Nlc3NvciA9
IEdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCB0aGlzKTsKLSAgICBwcm90b0FjY2Vzc29yLT5zZXRH
ZXR0ZXIodm0sIHRoaXMsIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMCwgbWFrZVN0cmlu
ZygiZ2V0ICIsIHZtLnByb3BlcnR5TmFtZXMtPnVuZGVyc2NvcmVQcm90by5zdHJpbmcoKSksIGds
b2JhbEZ1bmNQcm90b0dldHRlcikpOworICAgIHByb3RvQWNjZXNzb3ItPnNldEdldHRlcih2bSwg
dGhpcywgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBtYWtlU3RyaW5nKCJnZXQgIiwg
dm0ucHJvcGVydHlOYW1lcy0+dW5kZXJzY29yZVByb3RvLnN0cmluZygpKSwgZ2xvYmFsRnVuY1By
b3RvR2V0dGVyLCBVbmRlcnNjb3JlUHJvdG9JbnRyaW5zaWMpKTsKICAgICBwcm90b0FjY2Vzc29y
LT5zZXRTZXR0ZXIodm0sIHRoaXMsIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMCwgbWFr
ZVN0cmluZygic2V0ICIsIHZtLnByb3BlcnR5TmFtZXMtPnVuZGVyc2NvcmVQcm90by5zdHJpbmco
KSksIGdsb2JhbEZ1bmNQcm90b1NldHRlcikpOwogICAgIG1fb2JqZWN0UHJvdG90eXBlLT5wdXRE
aXJlY3ROb25JbmRleEFjY2Vzc29yKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT51bmRlcnNjb3JlUHJv
dG8sIHByb3RvQWNjZXNzb3IsIFByb3BlcnR5QXR0cmlidXRlOjpBY2Nlc3NvciB8IFByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgbV9mdW5jdGlvblByb3RvdHlwZS0+c3RydWN0dXJl
KCktPnNldFByb3RvdHlwZVdpdGhvdXRUcmFuc2l0aW9uKHZtLCBtX29iamVjdFByb3RvdHlwZS5n
ZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAKaW5kZXggMzcxOTE5NzVlMTkxNDc0YWI2ZWEzNGZkYmMy
YThhZGJmOTdhYWEwMi4uZWJkOGQ5ZTdkNjQ0NjQxMDk1ZjQ1ZTkwZGQ4MmQ1ZTgwYTRkOTZhYiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RG
dW5jdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0RnVuY3Rpb25zLmNwcApAQCAtNjQsNyArNjQsNyBAQCB1c2luZyBuYW1lc3BhY2UgVW5p
Y29kZTsKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBPYmpl
Y3RQcm90b0NhbGxlZE9uTnVsbE9yVW5kZWZpbmVkRXJyb3IgPSAiT2JqZWN0LnByb3RvdHlwZS5f
X3Byb3RvX18gY2FsbGVkIG9uIG51bGwgb3IgdW5kZWZpbmVkIjsKK2NvbnN0IGNoYXIqIGNvbnN0
IE9iamVjdFByb3RvQ2FsbGVkT25OdWxsT3JVbmRlZmluZWRFcnJvciA9ICJPYmplY3QucHJvdG90
eXBlLl9fcHJvdG9fXyBjYWxsZWQgb24gbnVsbCBvciB1bmRlZmluZWQiOwogCiB0ZW1wbGF0ZTx1
bnNpZ25lZCBjaGFyYWN0ZXJzQ291bnQ+CiBzdGF0aWMgQml0bWFwPDI1Nj4gbWFrZUNoYXJhY3Rl
ckJpdG1hcChjb25zdCBjaGFyICgmY2hhcmFjdGVycylbY2hhcmFjdGVyc0NvdW50XSkKQEAgLTcw
NiwxMSArNzA2LDExIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY1By
b3RvR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYykKIAogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhl
Yy0+dGhpc1ZhbHVlKCkudG9UaGlzKGV4ZWMsIFN0cmljdE1vZGUpOwogICAgIGlmICh0aGlzVmFs
dWUuaXNVbmRlZmluZWRPck51bGwoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbChPYmplY3RQcm90b0NhbGxlZE9uTnVsbE9yVW5kZWZp
bmVkRXJyb3IpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBzY29wZSwgY3Jl
YXRlTm90QW5PYmplY3RFcnJvcihleGVjLCB0aGlzVmFsdWUpKTsKIAogICAgIEpTT2JqZWN0KiB0
aGlzT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU09iamVjdCo+KHZtLCB0aGlzVmFsdWUpOwogICAg
IGlmICghdGhpc09iamVjdCkgewotICAgICAgICBKU09iamVjdCogcHJvdG90eXBlID0gZXhlYy0+
dGhpc1ZhbHVlKCkuc3ludGhlc2l6ZVByb3RvdHlwZShleGVjKTsKKyAgICAgICAgSlNPYmplY3Qq
IHByb3RvdHlwZSA9IHRoaXNWYWx1ZS5zeW50aGVzaXplUHJvdG90eXBlKGV4ZWMpOwogICAgICAg
ICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gIXByb3RvdHlwZSk7CiAg
ICAgICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBlKSkKICAgICAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oCmluZGV4IDRlODVlZGFlZGE0ZjAw
NTE3NzE4ODU3NGU1MzFkNGQ1MzVjNDBlYmEuLmI2Nzk5ZTI3NjJkYjlmMzEzZjhkNDFlMTMzNWUy
OWNmMGY4MjFlNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaApAQCAtMzUsNiArMzUsOCBAQCBjbGFzcyBKU09i
amVjdDsKIC8vIEZJWE1FOiBUaGVzZSBmdW5jdGlvbnMgc2hvdWxkIHJlYWxseSBiZSBpbiBKU0ds
b2JhbE9iamVjdC5jcHAsIGJ1dCBwdXR0aW5nIHRoZW0gdGhlcmUKIC8vIGlzIGEgMC41JSByZWR1
Y3Rpb24uCiAKK2V4dGVybiBjb25zdCBjaGFyKiBjb25zdCBPYmplY3RQcm90b0NhbGxlZE9uTnVs
bE9yVW5kZWZpbmVkRXJyb3I7CisKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFs
RnVuY0V2YWwoRXhlY1N0YXRlKik7CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2Jh
bEZ1bmNQYXJzZUludChFeGVjU3RhdGUqKTsKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Z2xvYmFsRnVuY1BhcnNlRmxvYXQoRXhlY1N0YXRlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKaW5kZXggMjI4NzI3YjZlNTM0
NWI5Y2NmYjUxODRiMzQ4ZDkzMDlmNzU0N2JlNi4uZjY3MGJkMzI0MDA3NjRmMzlhNjFmMzQ0ZDQ4
Y2E2YmQzNjg4Y2ViMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T2JqZWN0Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09iamVjdENvbnN0cnVjdG9yLmNwcApAQCAtNjcsNyArNjcsNyBAQCBjb25zdCBDbGFzc0luZm8g
T2JqZWN0Q29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkludGVybmFsRnVuY3Rp
b246OnNfaQogCiAvKiBTb3VyY2UgZm9yIE9iamVjdENvbnN0cnVjdG9yLmx1dC5oCiBAYmVnaW4g
b2JqZWN0Q29uc3RydWN0b3JUYWJsZQotICBnZXRQcm90b3R5cGVPZiAgICAgICAgICAgIG9iamVj
dENvbnN0cnVjdG9yR2V0UHJvdG90eXBlT2YgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24g
MQorICBnZXRQcm90b3R5cGVPZiAgICAgICAgICAgIG9iamVjdENvbnN0cnVjdG9yR2V0UHJvdG90
eXBlT2YgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMSBPYmplY3RHZXRQcm90b3R5cGVP
ZkludHJpbnNpYwogICBzZXRQcm90b3R5cGVPZiAgICAgICAgICAgIG9iamVjdENvbnN0cnVjdG9y
U2V0UHJvdG90eXBlT2YgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMgogICBnZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IgIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yICAgRG9udEVudW18RnVuY3Rpb24gMgogICBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIG9i
amVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyAgRG9udEVudW18RnVuY3Rp
b24gMQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVmbGVjdE9i
amVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWZsZWN0T2JqZWN0LmNw
cAppbmRleCA0MGUxOWYzZDU0NTNmN2JlMGI2NGQzMTY3NWNiMzliZmI2MzMwMTVjLi5kZDBlMThl
MTQ0NmJhMjY5ZTc5ZTBkZjRiNzhkZjZhNTZkM2U3ODhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9SZWZsZWN0T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9SZWZsZWN0T2JqZWN0LmNwcApAQCAtNjMsNyArNjMsNyBAQCBjb25z
dCBDbGFzc0luZm8gUmVmbGVjdE9iamVjdDo6c19pbmZvID0geyAiT2JqZWN0IiwgJkJhc2U6OnNf
aW5mbywgJnJlZmxlY3RPYmplYwogICAgIGRlbGV0ZVByb3BlcnR5ICAgICAgICAgICBKU0J1aWx0
aW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKICAgICBn
ZXQgICAgICAgICAgICAgICAgICAgICAgcmVmbGVjdE9iamVjdEdldCAgICAgICAgICAgICAgICAg
ICAgICBEb250RW51bXxGdW5jdGlvbiAyCiAgICAgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIHJl
ZmxlY3RPYmplY3RHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgRG9udEVudW18RnVuY3Rpb24gMgot
ICAgIGdldFByb3RvdHlwZU9mICAgICAgICAgICByZWZsZWN0T2JqZWN0R2V0UHJvdG90eXBlT2Yg
ICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgICBnZXRQcm90b3R5cGVPZiAgICAgICAg
ICAgcmVmbGVjdE9iamVjdEdldFByb3RvdHlwZU9mICAgICAgICAgICBEb250RW51bXxGdW5jdGlv
biAxIFJlZmxlY3RHZXRQcm90b3R5cGVPZkludHJpbnNpYwogICAgIGhhcyAgICAgICAgICAgICAg
ICAgICAgICBKU0J1aWx0aW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1
bmN0aW9uIDIKICAgICBpc0V4dGVuc2libGUgICAgICAgICAgICAgcmVmbGVjdE9iamVjdElzRXh0
ZW5zaWJsZSAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCiAgICAgb3duS2V5cyAgICAg
ICAgICAgICAgICAgIHJlZmxlY3RPYmplY3RPd25LZXlzICAgICAgICAgICAgICAgICAgRG9udEVu
dW18RnVuY3Rpb24gMQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDgzYzczZmY3OTFiMjg3NTkzNjEzM2M0N2FjOTk1ZmE5OGY0
ZGNmMDMuLjYwMjBkNGUyODFjYWU0Y2MxNzgzZmY4M2ViYzJiZWUwMzIwOGZiYjMgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNyBAQAorMjAxNy0xMC0xMCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdt
YWlsLmNvbT4KKworICAgICAgICBbSlNDXSBfX3Byb3RvX18gZ2V0dGVyIHNob3VsZCBiZSBmYXN0
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzgwNjcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGpzL29i
amVjdC1saXRlcmFsLXNob3J0aGFuZC1jb25zdHJ1Y3Rpb24tZXhwZWN0ZWQudHh0OgorICAgICAg
ICAqIGpzL3NjcmlwdC10ZXN0cy9vYmplY3QtbGl0ZXJhbC1zaG9ydGhhbmQtY29uc3RydWN0aW9u
LmpzOgorICAgICAgICAoc2V0IDIpOgorICAgICAgICAoZ2V0IDEpOgorICAgICAgICAqIGpzL3Nj
cmlwdC10ZXN0cy9zbG9wcHktZ2V0dGVyLXNldHRlci1nbG9iYWwtb2JqZWN0LmpzOgorICAgICAg
ICAqIGpzL3Nsb3BweS1nZXR0ZXItc2V0dGVyLWdsb2JhbC1vYmplY3QtZXhwZWN0ZWQudHh0Ogor
CiAyMDE3LTEwLTA5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAg
Q2FsbGluZyBmaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkuZ2V0RGlyZWN0b3J5KCkgd2l0aCBlbXB0
eSBwYXRoIHNob3VsZCBub3QgZmFpbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvb2JqZWN0
LWxpdGVyYWwtc2hvcnRoYW5kLWNvbnN0cnVjdGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9qcy9vYmplY3QtbGl0ZXJhbC1zaG9ydGhhbmQtY29uc3RydWN0aW9uLWV4cGVjdGVkLnR4dApp
bmRleCBlZTE2Yjg1OWJiYzI3MjcyMTQ4NDRlYmEyZjI5M2VlOGQ4NTNkNDcwLi42ZmIxNzc1YjA1
MzE4OGYwZmUzZTM4ZjVhN2I0OGQ4YjllMGNhMTYwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9q
cy9vYmplY3QtbGl0ZXJhbC1zaG9ydGhhbmQtY29uc3RydWN0aW9uLWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9qcy9vYmplY3QtbGl0ZXJhbC1zaG9ydGhhbmQtY29uc3RydWN0aW9uLWV4
cGVjdGVkLnR4dApAQCAtNjQsNyArNjQsNyBAQCBQQVNTICEhT2JqZWN0LmdldE93blByb3BlcnR5
RGVzY3JpcHRvcih7c2V0IDQyKHZhbHVlKXt9fSwgJzQyJykuc2V0IGlzIHRydWUKIFBBU1MgdGhp
cy5fX3Byb3RvX18gPSBbXSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBDYW5ub3Qgc2V0IHBy
b3RvdHlwZSBvZiBpbW11dGFibGUgcHJvdG90eXBlIG9iamVjdC4KIFBBU1MgKHtfX3Byb3RvX186
IHRoaXMuX19wcm90b19ffSkgaW5zdGFuY2VvZiBBcnJheSBpcyBmYWxzZQogUEFTUyBfX3Byb3Rv
X18gPSBbXSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBPYmplY3QucHJvdG90eXBlLl9fcHJv
dG9fXyBjYWxsZWQgb24gbnVsbCBvciB1bmRlZmluZWQuCi1QQVNTICh7X19wcm90b19fOiBfX3By
b3RvX199KSBpbnN0YW5jZW9mIEFycmF5IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE9iamVj
dC5wcm90b3R5cGUuX19wcm90b19fIGNhbGxlZCBvbiBudWxsIG9yIHVuZGVmaW5lZC4KK1BBU1Mg
KHtfX3Byb3RvX186IF9fcHJvdG9fX30pIGluc3RhbmNlb2YgQXJyYXkgdGhyZXcgZXhjZXB0aW9u
IFR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ19fcHJv
dG9fXycpLgogU3ludGF4RXJyb3JzCiBQQVNTICh7YnJlYWt9KSB0aHJldyBleGNlcHRpb24gU3lu
dGF4RXJyb3I6IENhbm5vdCB1c2UgdGhlIGtleXdvcmQgJ2JyZWFrJyBhcyBhIHNob3J0aGFuZCBw
cm9wZXJ0eSBuYW1lLi4KIFBBU1MgKHtjYXNlfSkgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9y
OiBDYW5ub3QgdXNlIHRoZSBrZXl3b3JkICdjYXNlJyBhcyBhIHNob3J0aGFuZCBwcm9wZXJ0eSBu
YW1lLi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9vYmplY3QtbGl0
ZXJhbC1zaG9ydGhhbmQtY29uc3RydWN0aW9uLmpzIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRl
c3RzL29iamVjdC1saXRlcmFsLXNob3J0aGFuZC1jb25zdHJ1Y3Rpb24uanMKaW5kZXggMDQ2MGI2
NmI5MTdhM2U1MmFhNzcwYzQxYzBmNDVmZjIwNTc4YWM1My4uZDYwNDg5NDMyNzY3MWQ5YTcyYWJk
MDlmOTQxYTc1NTY5YjVlN2FmOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRl
c3RzL29iamVjdC1saXRlcmFsLXNob3J0aGFuZC1jb25zdHJ1Y3Rpb24uanMKKysrIGIvTGF5b3V0
VGVzdHMvanMvc2NyaXB0LXRlc3RzL29iamVjdC1saXRlcmFsLXNob3J0aGFuZC1jb25zdHJ1Y3Rp
b24uanMKQEAgLTExMyw3ICsxMTMsNyBAQCBmdW5jdGlvbiB0ZXN0U2hvcnRoYW5kQ29uc3RydWN0
aW9uTm90RXF1aXZhbGVudChleHByMSwgZXhwcjIpIHsKIHNob3VsZFRocm93KCJ0aGlzLl9fcHJv
dG9fXyA9IFtdIik7CiBzaG91bGRCZUZhbHNlKCIoe19fcHJvdG9fXzogdGhpcy5fX3Byb3RvX199
KSBpbnN0YW5jZW9mIEFycmF5Iik7CiBzaG91bGRUaHJvdygiX19wcm90b19fID0gW10iLCAnIlR5
cGVFcnJvcjogT2JqZWN0LnByb3RvdHlwZS5fX3Byb3RvX18gY2FsbGVkIG9uIG51bGwgb3IgdW5k
ZWZpbmVkIicpOwotc2hvdWxkVGhyb3coIih7X19wcm90b19fOiBfX3Byb3RvX199KSBpbnN0YW5j
ZW9mIEFycmF5IiwgJyJUeXBlRXJyb3I6IE9iamVjdC5wcm90b3R5cGUuX19wcm90b19fIGNhbGxl
ZCBvbiBudWxsIG9yIHVuZGVmaW5lZCInKTsKK3Nob3VsZFRocm93KCIoe19fcHJvdG9fXzogX19w
cm90b19ffSkgaW5zdGFuY2VvZiBBcnJheSIsICciVHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90
IGFuIG9iamVjdCAoZXZhbHVhdGluZyBcJ19fcHJvdG9fX1wnKSInKTsKIAogLy8gS2V5d29yZHMg
LSBTeW50YXggRXJyb3JzCiBkZWJ1ZygiU3ludGF4RXJyb3JzIik7CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvc2xvcHB5LWdldHRlci1zZXR0ZXItZ2xvYmFsLW9iamVj
dC5qcyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9zbG9wcHktZ2V0dGVyLXNldHRlci1n
bG9iYWwtb2JqZWN0LmpzCmluZGV4IGViY2JlYTk5OWZjMjkxNjhlZTg5OGY5NTJkZmY3YTQwYTM2
YThjOTMuLjg4MDNlNmI5YmVjYTBjZDBjY2MwN2EzMTYyYzU4MzEzNWE5NTI4OTUgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9zbG9wcHktZ2V0dGVyLXNldHRlci1nbG9i
YWwtb2JqZWN0LmpzCisrKyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9zbG9wcHktZ2V0
dGVyLXNldHRlci1nbG9iYWwtb2JqZWN0LmpzCkBAIC0yNSwxMiArMjUsMTIgQEAKIHNob3VsZE5v
dFRocm93KCJPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE9iamVjdC5wcm90b3R5cGUs
J19fcHJvdG9fXycpLmdldCgpIik7CiBzaG91bGROb3RUaHJvdygiT2JqZWN0LmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcihPYmplY3QucHJvdG90eXBlLCdfX3Byb3RvX18nKS5zZXQoWydmb28nXSki
KTsKIAotc2hvdWxkVGhyb3coIigwLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoT2Jq
ZWN0LnByb3RvdHlwZSwnX19wcm90b19fJykuZ2V0KSgpIiwgIlwiVHlwZUVycm9yOiBPYmplY3Qu
cHJvdG90eXBlLl9fcHJvdG9fXyBjYWxsZWQgb24gbnVsbCBvciB1bmRlZmluZWRcIiIpOworc2hv
dWxkVGhyb3coIigwLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoT2JqZWN0LnByb3Rv
dHlwZSwnX19wcm90b19fJykuZ2V0KSgpIiwgIlwiVHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90
IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnKDAsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihPYmplY3QucHJvdG90eXBlLCdfX3Byb3RvX18nKS5nZXQpKCknKVwiIik7CiBzaG91bGRUaHJv
dygiKDAsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihPYmplY3QucHJvdG90eXBlLCdf
X3Byb3RvX18nKS5zZXQpKFsnZm9vJ10pIiwgIlwiVHlwZUVycm9yOiBPYmplY3QucHJvdG90eXBl
Ll9fcHJvdG9fXyBjYWxsZWQgb24gbnVsbCBvciB1bmRlZmluZWRcIiIpOwogCiAKIHZhciB0b3Bf
bGV2ZWxfc2xvcHB5X2dldHRlciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoT2Jq
ZWN0LnByb3RvdHlwZSwnX19wcm90b19fJykuZ2V0Owotc2hvdWxkVGhyb3coInRvcF9sZXZlbF9z
bG9wcHlfZ2V0dGVyKCk7IiwgIlwiVHlwZUVycm9yOiBPYmplY3QucHJvdG90eXBlLl9fcHJvdG9f
XyBjYWxsZWQgb24gbnVsbCBvciB1bmRlZmluZWRcIiIpOworc2hvdWxkVGhyb3coInRvcF9sZXZl
bF9zbG9wcHlfZ2V0dGVyKCk7IiwgIlwiVHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGFuIG9i
amVjdCAoZXZhbHVhdGluZyAndG9wX2xldmVsX3Nsb3BweV9nZXR0ZXIoKScpXCIiKTsKIAogdmFy
IHRvcF9sZXZlbF9zbG9wcHlfc2V0dGVyID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihPYmplY3QucHJvdG90eXBlLCdfX3Byb3RvX18nKS5zZXQ7CiBzaG91bGRUaHJvdygidG9wX2xl
dmVsX3Nsb3BweV9zZXR0ZXIoWydmb28nXSk7IiwgIlwiVHlwZUVycm9yOiBPYmplY3QucHJvdG90
eXBlLl9fcHJvdG9fXyBjYWxsZWQgb24gbnVsbCBvciB1bmRlZmluZWRcIiIpOwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvanMvc2xvcHB5LWdldHRlci1zZXR0ZXItZ2xvYmFsLW9iamVjdC1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9zbG9wcHktZ2V0dGVyLXNldHRlci1nbG9iYWwtb2Jq
ZWN0LWV4cGVjdGVkLnR4dAppbmRleCA5MzM5ZGQzYWEzMTY1N2RiZmMyZDVlNDhmMzY1YjI0Mjgw
NzY2NjFjLi44ZmFhNDc1MjZiNjNlNDE0NTRiM2Q2MzA4NzhmZGE5NzE1YTgwMGU1IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9qcy9zbG9wcHktZ2V0dGVyLXNldHRlci1nbG9iYWwtb2JqZWN0LWV4
cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9qcy9zbG9wcHktZ2V0dGVyLXNldHRlci1nbG9i
YWwtb2JqZWN0LWV4cGVjdGVkLnR4dApAQCAtOCw5ICs4LDkgQEAgUEFTUyBPYmplY3QucHJvdG90
eXBlLnZhbHVlT2YuY2FsbCgzKTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCiBQQVNTIE9iamVj
dC5wcm90b3R5cGUudmFsdWVPZi5jYWxsKG51bGwpOyB0aHJldyBleGNlcHRpb24gVHlwZUVycm9y
OiBudWxsIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ09iamVjdC5wcm90b3R5cGUudmFs
dWVPZi5jYWxsKG51bGwpJykuCiBQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
T2JqZWN0LnByb3RvdHlwZSwnX19wcm90b19fJykuZ2V0KCkgZGlkIG5vdCB0aHJvdyBleGNlcHRp
b24uCiBQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoT2JqZWN0LnByb3RvdHlw
ZSwnX19wcm90b19fJykuc2V0KFsnZm9vJ10pIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgotUEFT
UyAoMCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE9iamVjdC5wcm90b3R5cGUsJ19f
cHJvdG9fXycpLmdldCkoKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBPYmplY3QucHJvdG90
eXBlLl9fcHJvdG9fXyBjYWxsZWQgb24gbnVsbCBvciB1bmRlZmluZWQuCitQQVNTICgwLE9iamVj
dC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoT2JqZWN0LnByb3RvdHlwZSwnX19wcm90b19fJyku
Z2V0KSgpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYW4gb2Jq
ZWN0IChldmFsdWF0aW5nICcoMCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE9iamVj
dC5wcm90b3R5cGUsJ19fcHJvdG9fXycpLmdldCkoKScpLgogUEFTUyAoMCxPYmplY3QuZ2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKE9iamVjdC5wcm90b3R5cGUsJ19fcHJvdG9fXycpLnNldCkoWydm
b28nXSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogT2JqZWN0LnByb3RvdHlwZS5fX3Byb3Rv
X18gY2FsbGVkIG9uIG51bGwgb3IgdW5kZWZpbmVkLgotUEFTUyB0b3BfbGV2ZWxfc2xvcHB5X2dl
dHRlcigpOyB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBPYmplY3QucHJvdG90eXBlLl9fcHJv
dG9fXyBjYWxsZWQgb24gbnVsbCBvciB1bmRlZmluZWQuCitQQVNTIHRvcF9sZXZlbF9zbG9wcHlf
Z2V0dGVyKCk7IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYW4g
b2JqZWN0IChldmFsdWF0aW5nICd0b3BfbGV2ZWxfc2xvcHB5X2dldHRlcigpJykuCiBQQVNTIHRv
cF9sZXZlbF9zbG9wcHlfc2V0dGVyKFsnZm9vJ10pOyB0aHJldyBleGNlcHRpb24gVHlwZUVycm9y
OiBPYmplY3QucHJvdG90eXBlLl9fcHJvdG9fXyBjYWxsZWQgb24gbnVsbCBvciB1bmRlZmluZWQu
CiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKZGlmZiAtLWdpdCBhL0pTVGVzdHMv
Q2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZTA1NDM3YTcwZjNmNjM4NGRiN2I5
MDJlNjgzZTZlODQwMjRlYTI1Zi4uYTI1YmY3MGZjN2M5YTkzNGViNmIwNjA4ZTc1ZWY4NjU0YzVh
NzA5YyAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw0MCBAQAorMjAxNy0xMC0xMCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUu
dGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbSlNDXSBfX3Byb3RvX18gZ2V0dGVyIHNob3VsZCBi
ZSBmYXN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NzgwNjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IHN0cmVzcy9kZmctb2JqZWN0LXByb3RvLWFjY2Vzc29yLmpzOiBBZGRlZC4KKyAgICAgICAgKHNo
b3VsZEJlKToKKyAgICAgICAgKHNob3VsZFRocm93KToKKyAgICAgICAgKHRhcmdldCk6CisgICAg
ICAgICogc3RyZXNzL2RmZy1vYmplY3QtcHJvdG8tZ2V0dGVyLmpzOiBBZGRlZC4KKyAgICAgICAg
KHNob3VsZEJlKToKKyAgICAgICAgKHNob3VsZFRocm93KToKKyAgICAgICAgKHRhcmdldCk6Cisg
ICAgICAgICogc3RyZXNzL2RmZy1vYmplY3QtcHJvdG90eXBlLW9mLmpzOiBBZGRlZC4KKyAgICAg
ICAgKHNob3VsZEJlKToKKyAgICAgICAgKHNob3VsZFRocm93KToKKyAgICAgICAgKHRhcmdldCk6
CisgICAgICAgICogc3RyZXNzL2RmZy1yZWZsZWN0LWdldC1wcm90b3R5cGUtb2YuanM6IEFkZGVk
LgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoc2hvdWxkVGhyb3cpOgorICAgICAgICAo
dGFyZ2V0KToKKyAgICAgICAgKiBzdHJlc3Mvb2JqZWN0LWdldC1wcm90b3R5cGUtb2YtZmlsdGVy
ZWQuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoc2hvdWxkVGhyb3cp
OgorICAgICAgICAodGFyZ2V0KToKKyAgICAgICAgKGkuQ29jb2EpOgorICAgICAgICAqIHN0cmVz
cy9vYmplY3QtcHJvdG8tZ2V0dGVyLWZpbHRlcmVkLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3Vs
ZEJlKToKKyAgICAgICAgKHNob3VsZFRocm93KToKKyAgICAgICAgKHRhcmdldCk6CisgICAgICAg
IChpLkNvY29hKToKKyAgICAgICAgKiBzdHJlc3Mvc3RyaW5nLXByb3RvLmpzOiBBZGRlZC4KKyAg
ICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHRhcmdldCk6CisKIDIwMTctMTAtMDkgIFl1c3Vr
ZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgYGFzeW5jYCBzaG91
bGQgYmUgYWJsZSB0byBiZSB1c2VkIGFzIGFuIGltcG9ydGVkIGJpbmRpbmcgbmFtZQpkaWZmIC0t
Z2l0IGEvSlNUZXN0cy9zdHJlc3MvZGZnLW9iamVjdC1wcm90by1hY2Nlc3Nvci5qcyBiL0pTVGVz
dHMvc3RyZXNzL2RmZy1vYmplY3QtcHJvdG8tYWNjZXNzb3IuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGY2ZGI3
Yjc0ZTBhMGZhNjY3M2NiZjEyMjkwNmI4MTZlYjJlZTgyMwotLS0gL2Rldi9udWxsCisrKyBiL0pT
VGVzdHMvc3RyZXNzL2RmZy1vYmplY3QtcHJvdG8tYWNjZXNzb3IuanMKQEAgLTAsMCArMSwxMTUg
QEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpCit7CisgICAgaWYgKGFjdHVh
bCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsg
YWN0dWFsKTsKK30KKworZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJyb3JNZXNzYWdlKSB7
CisgICAgdmFyIGVycm9yVGhyb3duID0gZmFsc2U7CisgICAgdmFyIGVycm9yID0gbnVsbDsKKyAg
ICB0cnkgeworICAgICAgICBmdW5jKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBlcnJv
clRocm93biA9IHRydWU7CisgICAgICAgIGVycm9yID0gZTsKKyAgICB9CisgICAgaWYgKCFlcnJv
clRocm93bikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdub3QgdGhyb3duJyk7CisgICAgaWYg
KFN0cmluZyhlcnJvcikgIT09IGVycm9yTWVzc2FnZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9y
KGBiYWQgZXJyb3I6ICR7U3RyaW5nKGVycm9yKX1gKTsKK30KKworKGZ1bmN0aW9uICgpIHsKKyAg
ICBmdW5jdGlvbiB0YXJnZXQob2JqZWN0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIG9iamVjdC5f
X3Byb3RvX187CisgICAgfQorICAgIG5vSW5saW5lKHRhcmdldCk7CisKKyAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IDFlMzsgKytpKQorICAgICAgICBzaG91bGRCZSh0YXJnZXQoe30pLCBPYmplY3Qu
cHJvdG90eXBlKTsKK30oKSk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAgZnVuY3Rpb24gdGFyZ2V0
KG9iamVjdCkKKyAgICB7CisgICAgICAgIHJldHVybiBvYmplY3QuX19wcm90b19fOworICAgIH0K
KyAgICBub0lubGluZSh0YXJnZXQpOworCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxZTM7ICsr
aSkgeworICAgICAgICBzaG91bGRUaHJvdygoKSA9PiB0YXJnZXQobnVsbCksIGBUeXBlRXJyb3I6
IG51bGwgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnb2JqZWN0Ll9fcHJvdG9fXycpYCk7
CisgICAgICAgIHNob3VsZFRocm93KCgpID0+IHRhcmdldCh1bmRlZmluZWQpLCBgVHlwZUVycm9y
OiB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnb2JqZWN0Ll9fcHJvdG9f
XycpYCk7CisgICAgfQorfSgpKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiB0YXJn
ZXQob2JqZWN0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIG9iamVjdC5fX3Byb3RvX187CisgICAg
fQorICAgIG5vSW5saW5lKHRhcmdldCk7CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDFlMzsg
KytpKQorICAgICAgICBzaG91bGRCZSh0YXJnZXQoIkNvY29hIiksIFN0cmluZy5wcm90b3R5cGUp
OworfSgpKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiB0YXJnZXQob2JqZWN0KQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIG9iamVjdC5fX3Byb3RvX187CisgICAgfQorICAgIG5vSW5s
aW5lKHRhcmdldCk7CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDFlMzsgKytpKQorICAgICAg
ICBzaG91bGRCZSh0YXJnZXQoNDIpLCBOdW1iZXIucHJvdG90eXBlKTsKK30oKSk7CisKKyhmdW5j
dGlvbiAoKSB7CisgICAgZnVuY3Rpb24gdGFyZ2V0KG9iamVjdCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBvYmplY3QuX19wcm90b19fOworICAgIH0KKyAgICBub0lubGluZSh0YXJnZXQpOworCisg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxZTM7ICsraSkKKyAgICAgICAgc2hvdWxkQmUodGFyZ2V0
KDQyLjE5NSksIE51bWJlci5wcm90b3R5cGUpOworfSgpKTsKKworKGZ1bmN0aW9uICgpIHsKKyAg
ICBmdW5jdGlvbiB0YXJnZXQob2JqZWN0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIG9iamVjdC5f
X3Byb3RvX187CisgICAgfQorICAgIG5vSW5saW5lKHRhcmdldCk7CisKKyAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IDFlMzsgKytpKQorICAgICAgICBzaG91bGRCZSh0YXJnZXQodHJ1ZSksIEJvb2xl
YW4ucHJvdG90eXBlKTsKK30oKSk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAgZnVuY3Rpb24gdGFy
Z2V0KG9iamVjdCkKKyAgICB7CisgICAgICAgIHJldHVybiBvYmplY3QuX19wcm90b19fOworICAg
IH0KKyAgICBub0lubGluZSh0YXJnZXQpOworCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxZTM7
ICsraSkKKyAgICAgICAgc2hvdWxkQmUodGFyZ2V0KFN5bWJvbCgiQ29jb2EiKSksIFN5bWJvbC5w
cm90b3R5cGUpOworfSgpKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiB0YXJnZXQo
b2JqZWN0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIG9iamVjdC5fX3Byb3RvX187CisgICAgfQor
ICAgIG5vSW5saW5lKHRhcmdldCk7CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDFlMzsgKytp
KSB7CisgICAgICAgIHNob3VsZEJlKHRhcmdldCgiQ29jb2EiKSwgU3RyaW5nLnByb3RvdHlwZSk7
CisgICAgICAgIHNob3VsZEJlKHRhcmdldCg0MiksIE51bWJlci5wcm90b3R5cGUpOworICAgICAg
ICBzaG91bGRCZSh0YXJnZXQoNDIuMTk1KSwgTnVtYmVyLnByb3RvdHlwZSk7CisgICAgICAgIHNo
b3VsZEJlKHRhcmdldCh0cnVlKSwgQm9vbGVhbi5wcm90b3R5cGUpOworICAgICAgICBzaG91bGRC
ZSh0YXJnZXQoU3ltYm9sKCJDb2NvYSIpKSwgU3ltYm9sLnByb3RvdHlwZSk7CisgICAgfQorfSgp
KTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2RmZy1vYmplY3QtcHJvdG8tZ2V0dGVyLmpz
IGIvSlNUZXN0cy9zdHJlc3MvZGZnLW9iamVjdC1wcm90by1nZXR0ZXIuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OWEwNzE2ZDVhYTViMWNlYjdmNzhlNWQ0NGM5OTU0ZDlmZTUwZGEzYQotLS0gL2Rldi9udWxsCisr
KyBiL0pTVGVzdHMvc3RyZXNzL2RmZy1vYmplY3QtcHJvdG8tZ2V0dGVyLmpzCkBAIC0wLDAgKzEs
MTE3IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKQoreworICAgIGlmIChh
Y3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTog
JyArIGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMsIGVycm9yTWVzc2Fn
ZSkgeworICAgIHZhciBlcnJvclRocm93biA9IGZhbHNlOworICAgIHZhciBlcnJvciA9IG51bGw7
CisgICAgdHJ5IHsKKyAgICAgICAgZnVuYygpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAg
ZXJyb3JUaHJvd24gPSB0cnVlOworICAgICAgICBlcnJvciA9IGU7CisgICAgfQorICAgIGlmICgh
ZXJyb3JUaHJvd24pCisgICAgICAgIHRocm93IG5ldyBFcnJvcignbm90IHRocm93bicpOworICAg
IGlmIChTdHJpbmcoZXJyb3IpICE9PSBlcnJvck1lc3NhZ2UpCisgICAgICAgIHRocm93IG5ldyBF
cnJvcihgYmFkIGVycm9yOiAke1N0cmluZyhlcnJvcil9YCk7Cit9CisKK3ZhciBwcm90b0Z1bmN0
aW9uID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihPYmplY3QucHJvdG90eXBlLCAi
X19wcm90b19fIikuZ2V0OworCisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9uIHRhcmdldChv
YmplY3QpCisgICAgeworICAgICAgICByZXR1cm4gcHJvdG9GdW5jdGlvbi5jYWxsKG9iamVjdCk7
CisgICAgfQorICAgIG5vSW5saW5lKHRhcmdldCk7CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8
IDFlMzsgKytpKQorICAgICAgICBzaG91bGRCZSh0YXJnZXQoe30pLCBPYmplY3QucHJvdG90eXBl
KTsKK30oKSk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAgZnVuY3Rpb24gdGFyZ2V0KG9iamVjdCkK
KyAgICB7CisgICAgICAgIHJldHVybiBwcm90b0Z1bmN0aW9uLmNhbGwob2JqZWN0KTsKKyAgICB9
CisgICAgbm9JbmxpbmUodGFyZ2V0KTsKKworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMWUzOyAr
K2kpIHsKKyAgICAgICAgc2hvdWxkVGhyb3coKCkgPT4gdGFyZ2V0KG51bGwpLCBgVHlwZUVycm9y
OiBudWxsIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ3Byb3RvRnVuY3Rpb24uY2FsbChv
YmplY3QpJylgKTsKKyAgICAgICAgc2hvdWxkVGhyb3coKCkgPT4gdGFyZ2V0KHVuZGVmaW5lZCks
IGBUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdwcm90
b0Z1bmN0aW9uLmNhbGwob2JqZWN0KScpYCk7CisgICAgfQorfSgpKTsKKworKGZ1bmN0aW9uICgp
IHsKKyAgICBmdW5jdGlvbiB0YXJnZXQob2JqZWN0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHBy
b3RvRnVuY3Rpb24uY2FsbChvYmplY3QpOworICAgIH0KKyAgICBub0lubGluZSh0YXJnZXQpOwor
CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxZTM7ICsraSkKKyAgICAgICAgc2hvdWxkQmUodGFy
Z2V0KCJDb2NvYSIpLCBTdHJpbmcucHJvdG90eXBlKTsKK30oKSk7CisKKyhmdW5jdGlvbiAoKSB7
CisgICAgZnVuY3Rpb24gdGFyZ2V0KG9iamVjdCkKKyAgICB7CisgICAgICAgIHJldHVybiBwcm90
b0Z1bmN0aW9uLmNhbGwob2JqZWN0KTsKKyAgICB9CisgICAgbm9JbmxpbmUodGFyZ2V0KTsKKwor
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMWUzOyArK2kpCisgICAgICAgIHNob3VsZEJlKHRhcmdl
dCg0MiksIE51bWJlci5wcm90b3R5cGUpOworfSgpKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBm
dW5jdGlvbiB0YXJnZXQob2JqZWN0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHByb3RvRnVuY3Rp
b24uY2FsbChvYmplY3QpOworICAgIH0KKyAgICBub0lubGluZSh0YXJnZXQpOworCisgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCAxZTM7ICsraSkKKyAgICAgICAgc2hvdWxkQmUodGFyZ2V0KDQyLjE5
NSksIE51bWJlci5wcm90b3R5cGUpOworfSgpKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5j
dGlvbiB0YXJnZXQob2JqZWN0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHByb3RvRnVuY3Rpb24u
Y2FsbChvYmplY3QpOworICAgIH0KKyAgICBub0lubGluZSh0YXJnZXQpOworCisgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCAxZTM7ICsraSkKKyAgICAgICAgc2hvdWxkQmUodGFyZ2V0KHRydWUpLCBC
b29sZWFuLnByb3RvdHlwZSk7Cit9KCkpOworCisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9u
IHRhcmdldChvYmplY3QpCisgICAgeworICAgICAgICByZXR1cm4gcHJvdG9GdW5jdGlvbi5jYWxs
KG9iamVjdCk7CisgICAgfQorICAgIG5vSW5saW5lKHRhcmdldCk7CisKKyAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IDFlMzsgKytpKQorICAgICAgICBzaG91bGRCZSh0YXJnZXQoU3ltYm9sKCJDb2Nv
YSIpKSwgU3ltYm9sLnByb3RvdHlwZSk7Cit9KCkpOworCisoZnVuY3Rpb24gKCkgeworICAgIGZ1
bmN0aW9uIHRhcmdldChvYmplY3QpCisgICAgeworICAgICAgICByZXR1cm4gcHJvdG9GdW5jdGlv
bi5jYWxsKG9iamVjdCk7CisgICAgfQorICAgIG5vSW5saW5lKHRhcmdldCk7CisKKyAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IDFlMzsgKytpKSB7CisgICAgICAgIHNob3VsZEJlKHRhcmdldCgiQ29j
b2EiKSwgU3RyaW5nLnByb3RvdHlwZSk7CisgICAgICAgIHNob3VsZEJlKHRhcmdldCg0MiksIE51
bWJlci5wcm90b3R5cGUpOworICAgICAgICBzaG91bGRCZSh0YXJnZXQoNDIuMTk1KSwgTnVtYmVy
LnByb3RvdHlwZSk7CisgICAgICAgIHNob3VsZEJlKHRhcmdldCh0cnVlKSwgQm9vbGVhbi5wcm90
b3R5cGUpOworICAgICAgICBzaG91bGRCZSh0YXJnZXQoU3ltYm9sKCJDb2NvYSIpKSwgU3ltYm9s
LnByb3RvdHlwZSk7CisgICAgfQorfSgpKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2Rm
Zy1vYmplY3QtcHJvdG90eXBlLW9mLmpzIGIvSlNUZXN0cy9zdHJlc3MvZGZnLW9iamVjdC1wcm90
b3R5cGUtb2YuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGUyNjg0ZDc5ODkxYWVmY2YzODY4NWY0ZjcxNmZmMDJk
OTg4MDY0NQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2RmZy1vYmplY3QtcHJv
dG90eXBlLW9mLmpzCkBAIC0wLDAgKzEsMTE1IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWws
IGV4cGVjdGVkKQoreworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9uIHNob3Vs
ZFRocm93KGZ1bmMsIGVycm9yTWVzc2FnZSkgeworICAgIHZhciBlcnJvclRocm93biA9IGZhbHNl
OworICAgIHZhciBlcnJvciA9IG51bGw7CisgICAgdHJ5IHsKKyAgICAgICAgZnVuYygpOworICAg
IH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZXJyb3JUaHJvd24gPSB0cnVlOworICAgICAgICBlcnJv
ciA9IGU7CisgICAgfQorICAgIGlmICghZXJyb3JUaHJvd24pCisgICAgICAgIHRocm93IG5ldyBF
cnJvcignbm90IHRocm93bicpOworICAgIGlmIChTdHJpbmcoZXJyb3IpICE9PSBlcnJvck1lc3Nh
Z2UpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIGVycm9yOiAke1N0cmluZyhlcnJvcil9
YCk7Cit9CisKKyhmdW5jdGlvbiAoKSB7CisgICAgZnVuY3Rpb24gdGFyZ2V0KG9iamVjdCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBPYmplY3QuZ2V0UHJvdG90eXBlT2Yob2JqZWN0KTsKKyAgICB9
CisgICAgbm9JbmxpbmUodGFyZ2V0KTsKKworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMWUzOyAr
K2kpCisgICAgICAgIHNob3VsZEJlKHRhcmdldCh7fSksIE9iamVjdC5wcm90b3R5cGUpOworfSgp
KTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiB0YXJnZXQob2JqZWN0KQorICAgIHsK
KyAgICAgICAgcmV0dXJuIE9iamVjdC5nZXRQcm90b3R5cGVPZihvYmplY3QpOworICAgIH0KKyAg
ICBub0lubGluZSh0YXJnZXQpOworCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxZTM7ICsraSkg
eworICAgICAgICBzaG91bGRUaHJvdygoKSA9PiB0YXJnZXQobnVsbCksIGBUeXBlRXJyb3I6IG51
bGwgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnT2JqZWN0LmdldFByb3RvdHlwZU9mKG9i
amVjdCknKWApOworICAgICAgICBzaG91bGRUaHJvdygoKSA9PiB0YXJnZXQodW5kZWZpbmVkKSwg
YFR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ09iamVj
dC5nZXRQcm90b3R5cGVPZihvYmplY3QpJylgKTsKKyAgICB9Cit9KCkpOworCisoZnVuY3Rpb24g
KCkgeworICAgIGZ1bmN0aW9uIHRhcmdldChvYmplY3QpCisgICAgeworICAgICAgICByZXR1cm4g
T2JqZWN0LmdldFByb3RvdHlwZU9mKG9iamVjdCk7CisgICAgfQorICAgIG5vSW5saW5lKHRhcmdl
dCk7CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDFlMzsgKytpKQorICAgICAgICBzaG91bGRC
ZSh0YXJnZXQoIkNvY29hIiksIFN0cmluZy5wcm90b3R5cGUpOworfSgpKTsKKworKGZ1bmN0aW9u
ICgpIHsKKyAgICBmdW5jdGlvbiB0YXJnZXQob2JqZWN0KQorICAgIHsKKyAgICAgICAgcmV0dXJu
IE9iamVjdC5nZXRQcm90b3R5cGVPZihvYmplY3QpOworICAgIH0KKyAgICBub0lubGluZSh0YXJn
ZXQpOworCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxZTM7ICsraSkKKyAgICAgICAgc2hvdWxk
QmUodGFyZ2V0KDQyKSwgTnVtYmVyLnByb3RvdHlwZSk7Cit9KCkpOworCisoZnVuY3Rpb24gKCkg
eworICAgIGZ1bmN0aW9uIHRhcmdldChvYmplY3QpCisgICAgeworICAgICAgICByZXR1cm4gT2Jq
ZWN0LmdldFByb3RvdHlwZU9mKG9iamVjdCk7CisgICAgfQorICAgIG5vSW5saW5lKHRhcmdldCk7
CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDFlMzsgKytpKQorICAgICAgICBzaG91bGRCZSh0
YXJnZXQoNDIuMTk1KSwgTnVtYmVyLnByb3RvdHlwZSk7Cit9KCkpOworCisoZnVuY3Rpb24gKCkg
eworICAgIGZ1bmN0aW9uIHRhcmdldChvYmplY3QpCisgICAgeworICAgICAgICByZXR1cm4gT2Jq
ZWN0LmdldFByb3RvdHlwZU9mKG9iamVjdCk7CisgICAgfQorICAgIG5vSW5saW5lKHRhcmdldCk7
CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDFlMzsgKytpKQorICAgICAgICBzaG91bGRCZSh0
YXJnZXQodHJ1ZSksIEJvb2xlYW4ucHJvdG90eXBlKTsKK30oKSk7CisKKyhmdW5jdGlvbiAoKSB7
CisgICAgZnVuY3Rpb24gdGFyZ2V0KG9iamVjdCkKKyAgICB7CisgICAgICAgIHJldHVybiBPYmpl
Y3QuZ2V0UHJvdG90eXBlT2Yob2JqZWN0KTsKKyAgICB9CisgICAgbm9JbmxpbmUodGFyZ2V0KTsK
KworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMWUzOyArK2kpCisgICAgICAgIHNob3VsZEJlKHRh
cmdldChTeW1ib2woIkNvY29hIikpLCBTeW1ib2wucHJvdG90eXBlKTsKK30oKSk7CisKKyhmdW5j
dGlvbiAoKSB7CisgICAgZnVuY3Rpb24gdGFyZ2V0KG9iamVjdCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBPYmplY3QuZ2V0UHJvdG90eXBlT2Yob2JqZWN0KTsKKyAgICB9CisgICAgbm9JbmxpbmUo
dGFyZ2V0KTsKKworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMWUzOyArK2kpIHsKKyAgICAgICAg
c2hvdWxkQmUodGFyZ2V0KCJDb2NvYSIpLCBTdHJpbmcucHJvdG90eXBlKTsKKyAgICAgICAgc2hv
dWxkQmUodGFyZ2V0KDQyKSwgTnVtYmVyLnByb3RvdHlwZSk7CisgICAgICAgIHNob3VsZEJlKHRh
cmdldCg0Mi4xOTUpLCBOdW1iZXIucHJvdG90eXBlKTsKKyAgICAgICAgc2hvdWxkQmUodGFyZ2V0
KHRydWUpLCBCb29sZWFuLnByb3RvdHlwZSk7CisgICAgICAgIHNob3VsZEJlKHRhcmdldChTeW1i
b2woIkNvY29hIikpLCBTeW1ib2wucHJvdG90eXBlKTsKKyAgICB9Cit9KCkpOwpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy9zdHJlc3MvZGZnLXJlZmxlY3QtZ2V0LXByb3RvdHlwZS1vZi5qcyBiL0pTVGVz
dHMvc3RyZXNzL2RmZy1yZWZsZWN0LWdldC1wcm90b3R5cGUtb2YuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2M4
ODhmZjkwMjE1ZjY5ODViMDIxNDg2MjE4ZWE0NGFlZjM4MmVkMQotLS0gL2Rldi9udWxsCisrKyBi
L0pTVGVzdHMvc3RyZXNzL2RmZy1yZWZsZWN0LWdldC1wcm90b3R5cGUtb2YuanMKQEAgLTAsMCAr
MSw1OCBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkKK3sKKyAgICBpZiAo
YWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6
ICcgKyBhY3R1YWwpOworfQorCitmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJvck1lc3Nh
Z2UpIHsKKyAgICB2YXIgZXJyb3JUaHJvd24gPSBmYWxzZTsKKyAgICB2YXIgZXJyb3IgPSBudWxs
OworICAgIHRyeSB7CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAg
IGVycm9yVGhyb3duID0gdHJ1ZTsKKyAgICAgICAgZXJyb3IgPSBlOworICAgIH0KKyAgICBpZiAo
IWVycm9yVGhyb3duKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCB0aHJvd24nKTsKKyAg
ICBpZiAoU3RyaW5nKGVycm9yKSAhPT0gZXJyb3JNZXNzYWdlKQorICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoYGJhZCBlcnJvcjogJHtTdHJpbmcoZXJyb3IpfWApOworfQorCisoZnVuY3Rpb24gKCkg
eworICAgIGZ1bmN0aW9uIHRhcmdldChvYmplY3QpCisgICAgeworICAgICAgICByZXR1cm4gUmVm
bGVjdC5nZXRQcm90b3R5cGVPZihvYmplY3QpOworICAgIH0KKyAgICBub0lubGluZSh0YXJnZXQp
OworCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxZTM7ICsraSkKKyAgICAgICAgc2hvdWxkQmUo
dGFyZ2V0KHt9KSwgT2JqZWN0LnByb3RvdHlwZSk7Cit9KCkpOworCisoZnVuY3Rpb24gKCkgewor
ICAgIGZ1bmN0aW9uIHRhcmdldChvYmplY3QpCisgICAgeworICAgICAgICByZXR1cm4gUmVmbGVj
dC5nZXRQcm90b3R5cGVPZihvYmplY3QpOworICAgIH0KKyAgICBub0lubGluZSh0YXJnZXQpOwor
CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxZTM7ICsraSkgeworICAgICAgICBzaG91bGRUaHJv
dygoKSA9PiB0YXJnZXQobnVsbCksIGBUeXBlRXJyb3I6IFJlZmxlY3QuZ2V0UHJvdG90eXBlT2Yg
cmVxdWlyZXMgdGhlIGZpcnN0IGFyZ3VtZW50IGJlIGFuIG9iamVjdGApOworICAgICAgICBzaG91
bGRUaHJvdygoKSA9PiB0YXJnZXQodW5kZWZpbmVkKSwgYFR5cGVFcnJvcjogUmVmbGVjdC5nZXRQ
cm90b3R5cGVPZiByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYW4gb2JqZWN0YCk7Cisg
ICAgfQorfSgpKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiB0YXJnZXQob2JqZWN0
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIFJlZmxlY3QuZ2V0UHJvdG90eXBlT2Yob2JqZWN0KTsK
KyAgICB9CisgICAgbm9JbmxpbmUodGFyZ2V0KTsKKworICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
MWUzOyArK2kpIHsKKyAgICAgICAgc2hvdWxkVGhyb3coKCkgPT4gdGFyZ2V0KCJDb2NvYSIpLCBg
VHlwZUVycm9yOiBSZWZsZWN0LmdldFByb3RvdHlwZU9mIHJlcXVpcmVzIHRoZSBmaXJzdCBhcmd1
bWVudCBiZSBhbiBvYmplY3RgKTsKKyAgICAgICAgc2hvdWxkVGhyb3coKCkgPT4gdGFyZ2V0KDQy
KSwgYFR5cGVFcnJvcjogUmVmbGVjdC5nZXRQcm90b3R5cGVPZiByZXF1aXJlcyB0aGUgZmlyc3Qg
YXJndW1lbnQgYmUgYW4gb2JqZWN0YCk7CisgICAgICAgIHNob3VsZFRocm93KCgpID0+IHRhcmdl
dCh0cnVlKSwgYFR5cGVFcnJvcjogUmVmbGVjdC5nZXRQcm90b3R5cGVPZiByZXF1aXJlcyB0aGUg
Zmlyc3QgYXJndW1lbnQgYmUgYW4gb2JqZWN0YCk7CisgICAgfQorfSgpKTsKZGlmZiAtLWdpdCBh
L0pTVGVzdHMvc3RyZXNzL29iamVjdC1nZXQtcHJvdG90eXBlLW9mLWZpbHRlcmVkLmpzIGIvSlNU
ZXN0cy9zdHJlc3Mvb2JqZWN0LWdldC1wcm90b3R5cGUtb2YtZmlsdGVyZWQuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZTFhMDgwOGQwOTgxYmYzNjY5ZmVjOWYxN2FmMDE5ZGUwMzI5ZjFhMgotLS0gL2Rldi9udWxs
CisrKyBiL0pTVGVzdHMvc3RyZXNzL29iamVjdC1nZXQtcHJvdG90eXBlLW9mLWZpbHRlcmVkLmpz
CkBAIC0wLDAgKzEsNjQgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpCit7
CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcign
YmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKworZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywg
ZXJyb3JNZXNzYWdlKSB7CisgICAgdmFyIGVycm9yVGhyb3duID0gZmFsc2U7CisgICAgdmFyIGVy
cm9yID0gbnVsbDsKKyAgICB0cnkgeworICAgICAgICBmdW5jKCk7CisgICAgfSBjYXRjaCAoZSkg
eworICAgICAgICBlcnJvclRocm93biA9IHRydWU7CisgICAgICAgIGVycm9yID0gZTsKKyAgICB9
CisgICAgaWYgKCFlcnJvclRocm93bikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdub3QgdGhy
b3duJyk7CisgICAgaWYgKFN0cmluZyhlcnJvcikgIT09IGVycm9yTWVzc2FnZSkKKyAgICAgICAg
dGhyb3cgbmV3IEVycm9yKGBiYWQgZXJyb3I6ICR7U3RyaW5nKGVycm9yKX1gKTsKK30KKworLy8g
SW4gdGhpcyBjYXNlLCB3ZSBjYW5ub3QgaGFuZGxlIGl0IGFzIEdldFByb3RvdHlwZU9mIHNpbmNl
IEdldEJ5SWQgaXMgb3BhcXVlLgorCisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9uIHRhcmdl
dChvYmplY3QpCisgICAgeworICAgICAgICByZXR1cm4gT2JqZWN0LmdldFByb3RvdHlwZU9mKG9i
amVjdCk7CisgICAgfQorICAgIG5vSW5saW5lKHRhcmdldCk7CisKKyAgICBmb3IgKHZhciBpID0g
MDsgaSA8IDFlNDsgKytpKSB7CisgICAgICAgIHZhciBvYmplY3QgPSB7fTsKKyAgICAgICAgb2Jq
ZWN0W2BDb2NvYSR7aX1gXSA9IGBDb2NvYWA7CisgICAgICAgIHNob3VsZEJlKHRhcmdldChvYmpl
Y3QpLCBPYmplY3QucHJvdG90eXBlKTsKKyAgICB9Cit9KCkpOworCisoZnVuY3Rpb24gKCkgewor
ICAgIGZ1bmN0aW9uIHRhcmdldChvYmplY3QpCisgICAgeworICAgICAgICByZXR1cm4gT2JqZWN0
LmdldFByb3RvdHlwZU9mKG9iamVjdCk7CisgICAgfQorICAgIG5vSW5saW5lKHRhcmdldCk7CisK
KyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDFlNDsgKytpKSB7CisgICAgICAgIHZhciBhcnJheSA9
IFtdOworICAgICAgICBhcnJheVtgQ29jb2Eke2l9YF0gPSBgQ29jb2FgOworICAgICAgICBzaG91
bGRCZSh0YXJnZXQoYXJyYXkpLCBBcnJheS5wcm90b3R5cGUpOworICAgIH0KK30oKSk7CisKKyhm
dW5jdGlvbiAoKSB7CisgICAgZnVuY3Rpb24gdGFyZ2V0KG9iamVjdCkKKyAgICB7CisgICAgICAg
IHJldHVybiBPYmplY3QuZ2V0UHJvdG90eXBlT2Yob2JqZWN0KTsKKyAgICB9CisgICAgbm9Jbmxp
bmUodGFyZ2V0KTsKKworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAgICAg
ICAgZnVuY3Rpb24gQ29jb2EoKSB7IH0KKyAgICAgICAgQ29jb2FbYENvY29hJHtpfWBdID0gYENv
Y29hYDsKKyAgICAgICAgc2hvdWxkQmUodGFyZ2V0KENvY29hKSwgRnVuY3Rpb24ucHJvdG90eXBl
KTsKKyAgICB9Cit9KCkpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mvb2JqZWN0LXByb3Rv
LWdldHRlci1maWx0ZXJlZC5qcyBiL0pTVGVzdHMvc3RyZXNzL29iamVjdC1wcm90by1nZXR0ZXIt
ZmlsdGVyZWQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzNmYjUyN2M1NmQ5Mzc3NTNhNzdmMzI4ZjczMDI0MDc2
YWRjMGMzNwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL29iamVjdC1wcm90by1n
ZXR0ZXItZmlsdGVyZWQuanMKQEAgLTAsMCArMSw2MiBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0
dWFsLCBleHBlY3RlZCkKK3sKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCitmdW5jdGlvbiBz
aG91bGRUaHJvdyhmdW5jLCBlcnJvck1lc3NhZ2UpIHsKKyAgICB2YXIgZXJyb3JUaHJvd24gPSBm
YWxzZTsKKyAgICB2YXIgZXJyb3IgPSBudWxsOworICAgIHRyeSB7CisgICAgICAgIGZ1bmMoKTsK
KyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9yVGhyb3duID0gdHJ1ZTsKKyAgICAgICAg
ZXJyb3IgPSBlOworICAgIH0KKyAgICBpZiAoIWVycm9yVGhyb3duKQorICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoJ25vdCB0aHJvd24nKTsKKyAgICBpZiAoU3RyaW5nKGVycm9yKSAhPT0gZXJyb3JN
ZXNzYWdlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCBlcnJvcjogJHtTdHJpbmcoZXJy
b3IpfWApOworfQorCisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9uIHRhcmdldChvYmplY3Qp
CisgICAgeworICAgICAgICByZXR1cm4gb2JqZWN0Ll9fcHJvdG9fXzsKKyAgICB9CisgICAgbm9J
bmxpbmUodGFyZ2V0KTsKKworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAg
ICAgICAgdmFyIG9iamVjdCA9IHt9OworICAgICAgICBvYmplY3RbYENvY29hJHtpfWBdID0gYENv
Y29hYDsKKyAgICAgICAgc2hvdWxkQmUodGFyZ2V0KG9iamVjdCksIE9iamVjdC5wcm90b3R5cGUp
OworICAgIH0KK30oKSk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAgZnVuY3Rpb24gdGFyZ2V0KG9i
amVjdCkKKyAgICB7CisgICAgICAgIHJldHVybiBvYmplY3QuX19wcm90b19fOworICAgIH0KKyAg
ICBub0lubGluZSh0YXJnZXQpOworCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxZTQ7ICsraSkg
eworICAgICAgICB2YXIgYXJyYXkgPSBbXTsKKyAgICAgICAgYXJyYXlbYENvY29hJHtpfWBdID0g
YENvY29hYDsKKyAgICAgICAgc2hvdWxkQmUodGFyZ2V0KGFycmF5KSwgQXJyYXkucHJvdG90eXBl
KTsKKyAgICB9Cit9KCkpOworCisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9uIHRhcmdldChv
YmplY3QpCisgICAgeworICAgICAgICByZXR1cm4gb2JqZWN0Ll9fcHJvdG9fXzsKKyAgICB9Cisg
ICAgbm9JbmxpbmUodGFyZ2V0KTsKKworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMWU0OyArK2kp
IHsKKyAgICAgICAgZnVuY3Rpb24gQ29jb2EoKSB7IH0KKyAgICAgICAgQ29jb2FbYENvY29hJHtp
fWBdID0gYENvY29hYDsKKyAgICAgICAgc2hvdWxkQmUodGFyZ2V0KENvY29hKSwgRnVuY3Rpb24u
cHJvdG90eXBlKTsKKyAgICB9Cit9KCkpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mvc3Ry
aW5nLXByb3RvLmpzIGIvSlNUZXN0cy9zdHJlc3Mvc3RyaW5nLXByb3RvLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmRkY2YwMTJhMDc2MmZiODU1YWUyYzQ1OGQyNjY2OTg3MGFlOTA4NTgKLS0tIC9kZXYvbnVsbAor
KysgYi9KU1Rlc3RzL3N0cmVzcy9zdHJpbmctcHJvdG8uanMKQEAgLTAsMCArMSwxMiBAQAorZnVu
Y3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4
cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7
Cit9CisKK2Z1bmN0aW9uIHRhcmdldCh2YWx1ZSkKK3sKKyAgICByZXR1cm4gdmFsdWUuX19wcm90
b19fOworfQorbm9JbmxpbmUodGFyZ2V0KTsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU2OyArK2kp
CisgICAgc2hvdWxkQmUodGFyZ2V0KCJDb2NvYSIpLCBTdHJpbmcucHJvdG90eXBlKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>323293</attachid>
            <date>2017-10-10 02:55:12 -0700</date>
            <delta_ts>2017-10-10 03:34:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178067-20171010185511.patch</filename>
            <type>text/plain</type>
            <size>77327</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIzMTI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
Zjk5MWQwOWIwMTkwYWE0ZTE1ZTc5MDZjZmMyZGJlMjU5MzJmNjE2Li41NGZhZDIzODE4Yzk4ZTFl
ZTE2MTE5ZTVkNDRmYTA0ZmYzOGNmZTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5MiBAQAorMjAxNy0xMC0xMCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbSlNDXSBfX3Byb3RvX18gZ2V0dGVyIHNob3VsZCBiZSBmYXN0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzgwNjcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbiBvdXIgRVM2
IGNsYXNzIGltcGxlbWVudGF0aW9uLCB3ZSBhY2Nlc3MgX19wcm90b19fIGZpZWxkIHRvIHJldHJp
ZXZlIHN1cGVyIGNvbnN0cnVjdG9yLgorICAgICAgICBDdXJyZW50bHksIGl0IGlzIGhhbmRsZWQg
YXMgYW4gdXN1YWwgZ2V0dGVyIGNhbGwgdG8gYSBnZW5lcmljIGZ1bmN0aW9uLiBBbmQgREZHIGp1
c3QgZW1pdHMKKyAgICAgICAgQ2FsbCBub2RlIGZvciB0aGlzLiBJdCBpcyBpbmVmZmljaWVudCBz
aW5jZSB0eXBpY2FsbHkgd2Uga25vdyB0aGUgYHByb3RvdHlwZWAgb2YgdGhlIGdpdmVuCisgICAg
ICAgIG9iamVjdCB3aGVuIGFjY2Vzc2luZyBgb2JqZWN0Ll9fcHJvdG9fX2Agc2luY2Ugd2UgZW1p
dCBDaGVja1N0cnVjdHVyZSBmb3IgdGhpcyBgb2JqZWN0YC4KKyAgICAgICAgSWYgU3RydWN0dXJl
IGhhcyBtb25vIHByb3RvLCB3ZSBjYW4gaW1tZWRpYXRlbHkgZm9sZCBpdCB0byBjb25zdGFudCB2
YWx1ZS4gSWYgaXQgaXMgcG9seSBwcm90bywKKyAgICAgICAgd2UgY2FuIHN0aWxsIGNoYW5nZSB0
aGlzIHRvIGVmZmljaWVudCBhY2Nlc3MgdG8gcG9seSBwcm90byBzbG90LgorCisgICAgICAgIFRo
aXMgcGF0Y2ggaW1wbGVtZW50cyBHZXRQcm90b3R5cGVPZiBERkcgbm9kZS4gVGhpcyBub2RlIGVm
ZmljaWVudGx5IGFjY2Vzc2VzIHRvIHByb3RvdHlwZSBvZgorICAgICAgICB0aGUgZ2l2ZW4gb2Jq
ZWN0LiBBbmQgaW4gQUkgYW5kIEJ5dGVDb2RlUGFyc2VyIHBoYXNlLCB3ZSBhdHRlbXB0IHRvIGZv
bGQgaXQgdG8gY29uc3RhbnQuCisgICAgICAgIEJ5dGVDb2RlUGFyc2VyJ3MgZm9sZGluZyBpcyBh
IGJpdCBpbXBvcnRhbnQgc2luY2Ugd2UgaGF2ZSBgY2FsbGVlLl9fcHJvdG9fX2AgY29kZSB0byBn
ZXQgc3VwZXIKKyAgICAgICAgY29uc3RydWN0b3IuIElmIHdlIGNhbiBjaGFuZ2UgdGhpcyB0byBj
b25zdGFudCwgd2UgY2FuIHJlaWZ5IENhbGxMaW5rSW5mbyB3aXRoIHRoaXMgY29uc3RhbnQuCisg
ICAgICAgIFRoaXMgcGF2ZXMgdGhlIHdheSB0byBvcHRpbWl6aW5nIEFycmF5Q29uc3RydWN0b3Ig
c3VwZXIgY2FsbHNbMV0sIHdoaWNoIGlzIHBhcnRpY3VsYXJseSBpbXBvcnRhbnQKKyAgICAgICAg
Zm9yIEFSRVMtNiBNTC4KKworICAgICAgICBBbmQgd2UgYWxzbyBvcHRpbWl6ZSBSZWZsZWN0Lmdl
dFByb3RvdHlwZU9mIGFuZCBPYmplY3QuZ2V0UHJvdG90eXBlT2Ygd2l0aCB0aGlzIEdldFByb3Rv
dHlwZU9mIG5vZGUuCisKKyAgICAgICAgQ3VycmVudGx5LCBfX3Byb3RvX18gYWNjZXNzIGZvciBw
b2x5IHByb3RvIG9iamVjdCBpcyBub3QgaGFuZGxlZCB3ZWxsIGluIElDLiBCdXQgd2UgYWRkIGNv
ZGUgaGFuZGxpbmcKKyAgICAgICAgcG9seSBwcm90byBpbiBHZXRQcm90b3R5cGVPZiBzaW5jZSBS
ZWZsZWN0LmdldFByb3RvdHlwZU9mIGFuZCBPYmplY3QuZ2V0UHJvdG90eXBlT2YgY2FuIHVzZSBp
dC4KKyAgICAgICAgT25jZSBJQyBzdGFydHMgaGFuZGxpbmcgcG9seSBwcm90byAmIGludHJpbnNp
YyBnZXR0ZXIgd2VsbCwgdGhpcyBjb2RlIHdpbGwgYmUgdXNlZCBmb3IgdGhhdCB0b28uCisKKyAg
ICAgICAgVGhpcyBwYXRjaCBpbXByb3ZlcyBTaXhTcGVlZCBzdXBlci5lczYgYnkgMy40MnguCisK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VsaW5lICAgICAgICAgICAgICAg
ICAgcGF0Y2hlZAorCisgICAgICAgIHN1cGVyLmVzNiAgICAgICAgICAgMTIzLjY2NjYrLTMuOTkx
NyAgICAgXiAgICAgMzYuMTY4NCstMS4wMzUxICAgICAgICBeIGRlZmluaXRlbHkgMy40MTkyeCBm
YXN0ZXIKKworICAgICAgICBbMV06IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzgwNjQKKworICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5l
cy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0
ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2Vy
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2lj
Q2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNp
Y0dldHRlcik6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5
SWQpOgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyaXplLmg6CisgICAgICAgIChKU0M6OkRGRzo6
Y2xvYmJlcml6ZSk6CisgICAgICAgICogZGZnL0RGR0RvZXNHQy5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6ZG9lc0dDKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpG
aXh1cFBoYXNlOjpmaXh1cEdldFByb3RvdHlwZU9mKToKKyAgICAgICAgKiBkZmcvREZHSGVhcExv
Y2F0aW9uLmNwcDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogZGZn
L0RGR0hlYXBMb2NhdGlvbi5oOgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAgIChK
U0M6OkRGRzo6Tm9kZTo6aGFzSGVhcFByZWRpY3Rpb24pOgorICAgICAgICAoSlNDOjpERkc6Ok5v
ZGU6OnNob3VsZFNwZWN1bGF0ZUZ1bmN0aW9uKToKKyAgICAgICAgKiBkZmcvREZHTm9kZVR5cGUu
aDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogZGZnL0RGR09w
ZXJhdGlvbnMuaDoKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2Uu
Y3BwOgorICAgICAgICAqIGRmZy9ERkdTYWZlVG9FeGVjdXRlLmg6CisgICAgICAgIChKU0M6OkRG
Rzo6c2FmZVRvRXhlY3V0ZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlRnVuY3Rpb24pOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVGaW5hbE9iamVjdCk6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRQcm90b3R5cGVP
Zik6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgICogZGZnL0RG
R1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGZ0
bC9GVExDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNhbkNvbXBpbGUpOgor
ICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjb21waWxlTm9kZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpM
b3dlckRGR1RvQjM6OmNvbXBpbGVHZXRQcm90b3R5cGVPZik6CisgICAgICAgIChKU0M6OkZUTDo6
REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVJbnN0YW5jZU9mKToKKyAgICAgICAgKiBqaXQvSW50
cmluc2ljRW1pdHRlci5jcHA6CisgICAgICAgIChKU0M6OkludHJpbnNpY0dldHRlckFjY2Vzc0Nh
c2U6OmNhbkVtaXRJbnRyaW5zaWNHZXR0ZXIpOgorICAgICAgICAoSlNDOjpJbnRyaW5zaWNHZXR0
ZXJBY2Nlc3NDYXNlOjplbWl0SW50cmluc2ljR2V0dGVyKToKKyAgICAgICAgKiBydW50aW1lL0lu
dHJpbnNpYy5jcHA6CisgICAgICAgIChKU0M6OmludHJpbnNpY05hbWUpOgorICAgICAgICAqIHJ1
bnRpbWUvSW50cmluc2ljLmg6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6
CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0KToKKyAgICAgICAgKiBydW50aW1l
L0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6Z2xvYmFsRnVuY1By
b3RvR2V0dGVyKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmg6
CisgICAgICAgICogcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgICogcnVu
dGltZS9SZWZsZWN0T2JqZWN0LmNwcDoKKwogMjAxNy0xMC0wOSAgWXVzdWtlIFN1enVraSAgPHV0
YXRhbmUudGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBgYXN5bmNgIHNob3VsZCBiZSBhYmxlIHRv
IGJlIHVzZWQgYXMgYW4gaW1wb3J0ZWQgYmluZGluZyBuYW1lCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5k
ZXggYmVhMTY4OWFhYmQ1MzAzODA2MmVlYzgwOTNhMTYwNjZmOGNkMWI2Yy4uNzViMDI5ZmY4Y2Q2
MDQ0N2QwNGNhYzY5YTA5MTZkNTdiYzU0MzBjMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaApAQCAtMjY5
OSw2ICsyNjk5LDQ4IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlw
ZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgIGZvck5vZGUo
bm9kZSkuc2V0VHlwZShTcGVjSW50MzJPbmx5KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorCisg
ICAgY2FzZSBHZXRQcm90b3R5cGVPZjogeworICAgICAgICBBYnN0cmFjdFZhbHVlJiB2YWx1ZSA9
IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBpZiAoKHZhbHVlLm1fdHlwZSAmJiAh
KHZhbHVlLm1fdHlwZSAmIH5TcGVjT2JqZWN0KSkgJiYgdmFsdWUubV9zdHJ1Y3R1cmUuaXNGaW5p
dGUoKSkgeworICAgICAgICAgICAgYm9vbCBjYW5ub3RGb2xkID0gZmFsc2U7CisgICAgICAgICAg
ICBKU1ZhbHVlIHByb3RvdHlwZTsKKyAgICAgICAgICAgIHZhbHVlLm1fc3RydWN0dXJlLmZvckVh
Y2goWyZdIChSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSkgeworICAgICAgICAgICAgICAg
IGF1dG8gZ2V0UHJvdG90eXBlTWV0aG9kID0gc3RydWN0dXJlLT5jbGFzc0luZm8oKS0+bWV0aG9k
VGFibGUuZ2V0UHJvdG90eXBlOworICAgICAgICAgICAgICAgIE1ldGhvZFRhYmxlOjpHZXRQcm90
b3R5cGVGdW5jdGlvblB0ciBkZWZhdWx0R2V0UHJvdG90eXBlID0gSlNPYmplY3Q6OmdldFByb3Rv
dHlwZTsKKyAgICAgICAgICAgICAgICBpZiAoZ2V0UHJvdG90eXBlTWV0aG9kICE9IGRlZmF1bHRH
ZXRQcm90b3R5cGUpIHsKKyAgICAgICAgICAgICAgICAgICAgY2Fubm90Rm9sZCA9IHRydWU7Cisg
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgICAgICBpZiAoc3RydWN0dXJlLT5oYXNQb2x5UHJvdG8oKSkgeworICAgICAgICAgICAgICAg
ICAgICBjYW5ub3RGb2xkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoIXByb3RvdHlwZSkKKyAgICAgICAg
ICAgICAgICAgICAgcHJvdG90eXBlID0gc3RydWN0dXJlLT5zdG9yZWRQcm90b3R5cGUoKTsKKyAg
ICAgICAgICAgICAgICBlbHNlIGlmIChwcm90b3R5cGUgIT0gc3RydWN0dXJlLT5zdG9yZWRQcm90
b3R5cGUoKSkKKyAgICAgICAgICAgICAgICAgICAgY2Fubm90Rm9sZCA9IHRydWU7CisgICAgICAg
ICAgICB9KTsKKworICAgICAgICAgICAgaWYgKHByb3RvdHlwZSAmJiAhY2Fubm90Rm9sZCkgewor
ICAgICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsICptX2dyYXBoLmZyZWV6ZShwcm90b3R5
cGUpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
CisgICAgICAgIHN3aXRjaCAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7CisgICAgICAgIGNh
c2UgQXJyYXlVc2U6CisgICAgICAgIGNhc2UgRnVuY3Rpb25Vc2U6CisgICAgICAgIGNhc2UgRmlu
YWxPYmplY3RVc2U6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgIGNsb2JiZXJXb3JsZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNsb2JiZXJMaW1pdCk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBmb3JOb2RlKG5vZGUpLnNl
dFR5cGUobV9ncmFwaCwgU3BlY09iamVjdCB8IFNwZWNPdGhlcik7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBHZXRCeU9mZnNldDogewogICAgICAgICBTdG9yYWdl
QWNjZXNzRGF0YSYgZGF0YSA9IG5vZGUtPnN0b3JhZ2VBY2Nlc3NEYXRhKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IGQwZWYyZjlh
MDk1Njk0NGY5ZjExNWU1MDFlYWZjNzk0YzhjMDM0YTcuLjhkMWUwNjA0MzU5ZGY1YTNmMjkzNWNi
OTg0ZmNmYzA0NzAxY2VlZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Qnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC0yMzgsNyArMjM4LDcgQEAgY2xhc3MgQnl0ZUNvZGVQYXJz
ZXIgewogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+CiAgICAgYm9vbCBoYW5k
bGVET01KSVRDYWxsKE5vZGUqIGNhbGxlZSwgaW50IHJlc3VsdE9wZXJhbmQsIGNvbnN0IERPTUpJ
VDo6U2lnbmF0dXJlKiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIGNvbnN0IENoZWNrc0Z1bmN0b3Im
IGluc2VydENoZWNrcyk7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4KLSAg
ICBib29sIGhhbmRsZUludHJpbnNpY0dldHRlcihpbnQgcmVzdWx0T3BlcmFuZCwgY29uc3QgR2V0
QnlJZFZhcmlhbnQmIGludHJpbnNpY1ZhcmlhbnQsIE5vZGUqIHRoaXNOb2RlLCBjb25zdCBDaGVj
a3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpOworICAgIGJvb2wgaGFuZGxlSW50cmluc2ljR2V0dGVy
KGludCByZXN1bHRPcGVyYW5kLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBjb25zdCBHZXRC
eUlkVmFyaWFudCYgaW50cmluc2ljVmFyaWFudCwgTm9kZSogdGhpc05vZGUsIGNvbnN0IENoZWNr
c0Z1bmN0b3ImIGluc2VydENoZWNrcyk7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVu
Y3Rvcj4KICAgICBib29sIGhhbmRsZVR5cGVkQXJyYXlDb25zdHJ1Y3RvcihpbnQgcmVzdWx0T3Bl
cmFuZCwgSW50ZXJuYWxGdW5jdGlvbiosIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzLCBUeXBlZEFycmF5VHlwZSwgY29uc3QgQ2hlY2tzRnVuY3RvciYg
aW5zZXJ0Q2hlY2tzKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgpAQCAt
MjYyMCw2ICsyNjIwLDI0IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0Nh
bGwoTm9kZSogY2FsbGVlLCBpbnQgcmVzdWx0T3BlcmFuZCwgSW50cmluCiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KIAorICAgIGNhc2UgT2JqZWN0R2V0UHJvdG90eXBlT2ZJbnRyaW5zaWM6
IHsKKyAgICAgICAgaWYgKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICE9IDIpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgaW5zZXJ0Q2hlY2tzKCk7CisgICAgICAgIHNl
dChWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0T3BlcmFuZCksIGFkZFRvR3JhcGgoR2V0UHJvdG90eXBl
T2YsIE9wSW5mbygwKSwgT3BJbmZvKHByZWRpY3Rpb24pLCBnZXQodmlydHVhbFJlZ2lzdGVyRm9y
QXJndW1lbnQoMSwgcmVnaXN0ZXJPZmZzZXQpKSkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisKKyAgICBjYXNlIFJlZmxlY3RHZXRQcm90b3R5cGVPZkludHJpbnNpYzogeworICAgICAg
ICBpZiAoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgIT0gMikKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgICAgICBpbnNlcnRDaGVja3MoKTsKKyAgICAgICAgc2V0KFZpcnR1YWxS
ZWdpc3RlcihyZXN1bHRPcGVyYW5kKSwgYWRkVG9HcmFwaChHZXRQcm90b3R5cGVPZiwgT3BJbmZv
KDApLCBPcEluZm8ocHJlZGljdGlvbiksIEVkZ2UoZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3Vt
ZW50KDEsIHJlZ2lzdGVyT2Zmc2V0KSksIE9iamVjdFVzZSkpKTsKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgfQorCiAgICAgY2FzZSBJc1R5cGVkQXJyYXlWaWV3SW50cmluc2ljOiB7CiAgICAg
ICAgIEFTU0VSVChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA9PSAyKTsKIApAQCAtMjk2Nyw3
ICsyOTg1LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlRE9NSklUQ2FsbChOb2RlKiBj
YWxsVGFyZ2V0LCBpbnQgcmVzdWx0T3BlcmFuZCwgY29uc3QKIAogCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDaGVja3NGdW5jdG9yPgotYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljR2V0
dGVyKGludCByZXN1bHRPcGVyYW5kLCBjb25zdCBHZXRCeUlkVmFyaWFudCYgdmFyaWFudCwgTm9k
ZSogdGhpc05vZGUsIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcykKK2Jvb2wgQnl0
ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0dldHRlcihpbnQgcmVzdWx0T3BlcmFuZCwgU3Bl
Y3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgY29uc3QgR2V0QnlJZFZhcmlhbnQmIHZhcmlhbnQsIE5v
ZGUqIHRoaXNOb2RlLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpCiB7CiAgICAg
c3dpdGNoICh2YXJpYW50LmludHJpbnNpYygpKSB7CiAgICAgY2FzZSBUeXBlZEFycmF5Qnl0ZUxl
bmd0aEludHJpbnNpYzogewpAQCAtMzAzNCw2ICszMDUyLDQwIEBAIGJvb2wgQnl0ZUNvZGVQYXJz
ZXI6OmhhbmRsZUludHJpbnNpY0dldHRlcihpbnQgcmVzdWx0T3BlcmFuZCwgY29uc3QgR2V0QnlJ
ZFZhcmlhCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAorICAgIGNhc2UgVW5kZXJzY29y
ZVByb3RvSW50cmluc2ljOiB7CisgICAgICAgIGluc2VydENoZWNrcygpOworCisgICAgICAgIGJv
b2wgY2Fubm90Rm9sZCA9IGZhbHNlOworICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZTsKKyAgICAg
ICAgdmFyaWFudC5zdHJ1Y3R1cmVTZXQoKS5mb3JFYWNoKFsmXSAoU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpIHsKKyAgICAgICAgICAgIGF1dG8gZ2V0UHJvdG90eXBlTWV0aG9kID0gc3RydWN0dXJlLT5j
bGFzc0luZm8oKS0+bWV0aG9kVGFibGUuZ2V0UHJvdG90eXBlOworICAgICAgICAgICAgTWV0aG9k
VGFibGU6OkdldFByb3RvdHlwZUZ1bmN0aW9uUHRyIGRlZmF1bHRHZXRQcm90b3R5cGUgPSBKU09i
amVjdDo6Z2V0UHJvdG90eXBlOworICAgICAgICAgICAgaWYgKGdldFByb3RvdHlwZU1ldGhvZCAh
PSBkZWZhdWx0R2V0UHJvdG90eXBlKSB7CisgICAgICAgICAgICAgICAgY2Fubm90Rm9sZCA9IHRy
dWU7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBpZiAoc3RydWN0dXJlLT5oYXNQb2x5UHJvdG8oKSkgeworICAgICAgICAgICAgICAgIGNhbm5v
dEZvbGQgPSB0cnVlOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGlmICghcHJvdG90eXBlKQorICAgICAgICAgICAgICAgIHByb3RvdHlwZSA9IHN0
cnVjdHVyZS0+c3RvcmVkUHJvdG90eXBlKCk7CisgICAgICAgICAgICBlbHNlIGlmIChwcm90b3R5
cGUgIT0gc3RydWN0dXJlLT5zdG9yZWRQcm90b3R5cGUoKSkKKyAgICAgICAgICAgICAgICBjYW5u
b3RGb2xkID0gdHJ1ZTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgLy8gT0ssIG9ubHkgb25lIHBy
b3RvdHlwZSBpcyBmb3VuZC4gV2UgcGVyZm9ybSBjb25zdGFudCBmb2xkaW5nIGhlcmUuCisgICAg
ICAgIC8vIFRoaXMgaW5mb3JtYXRpb24gaXMgaW1wb3J0YW50IGZvciBzdXBlcidzIGNvbnN0cnVj
dG9yIGNhbGwgdG8gZ2V0IG5ldy50YXJnZXQgY29uc3RhbnQuCisgICAgICAgIGlmIChwcm90b3R5
cGUgJiYgIWNhbm5vdEZvbGQpIHsKKyAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIocmVz
dWx0T3BlcmFuZCksIHdlYWtKU0NvbnN0YW50KHByb3RvdHlwZSkpOworICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgIH0KKworICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKHJlc3Vs
dE9wZXJhbmQpLCBhZGRUb0dyYXBoKEdldFByb3RvdHlwZU9mLCBPcEluZm8oMCksIE9wSW5mbyhw
cmVkaWN0aW9uKSwgdGhpc05vZGUpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCiAg
ICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTM4MTcsNyArMzg2
OSw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5SWQoCiAgICAgCiAgICAgTm9k
ZSogZ2V0dGVyID0gYWRkVG9HcmFwaChHZXRHZXR0ZXIsIGxvYWRlZFZhbHVlKTsKIAotICAgIGlm
IChoYW5kbGVJbnRyaW5zaWNHZXR0ZXIoZGVzdGluYXRpb25PcGVyYW5kLCB2YXJpYW50LCBiYXNl
LAorICAgIGlmIChoYW5kbGVJbnRyaW5zaWNHZXR0ZXIoZGVzdGluYXRpb25PcGVyYW5kLCBwcmVk
aWN0aW9uLCB2YXJpYW50LCBiYXNlLAogICAgICAgICAgICAgWyZdICgpIHsKICAgICAgICAgICAg
ICAgICBhZGRUb0dyYXBoKENoZWNrQ2VsbCwgT3BJbmZvKG1fZ3JhcGguZnJlZXplKHZhcmlhbnQu
aW50cmluc2ljRnVuY3Rpb24oKSkpLCBnZXR0ZXIpOwogICAgICAgICAgICAgfSkpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKaW5kZXggNTY2NDkwYjEzYTgzNWMz
NjI1YzRkOTY2NzVkNTExZWI2MWFjNDE4Ni4uNmI1ZjY1Nzc4MTMzNzdjOGQzOWU2YjA4YmZhMmYz
ODhjNjE0MTdmMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9i
YmVyaXplLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgK
QEAgLTExMTQsNiArMTExNCwyMyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2Rl
KiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgICAgICBy
ZWFkKE1pc2NGaWVsZHMpOwogICAgICAgICBkZWYoSGVhcExvY2F0aW9uKFR5cGVkQXJyYXlCeXRl
T2Zmc2V0TG9jLCBNaXNjRmllbGRzLCBub2RlLT5jaGlsZDEoKSksIExhenlOb2RlKG5vZGUpKTsK
ICAgICAgICAgcmV0dXJuOworCisgICAgY2FzZSBHZXRQcm90b3R5cGVPZjogeworICAgICAgICBz
d2l0Y2ggKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkgeworICAgICAgICBjYXNlIEFycmF5VXNl
OgorICAgICAgICBjYXNlIEZ1bmN0aW9uVXNlOgorICAgICAgICBjYXNlIEZpbmFsT2JqZWN0VXNl
OgorICAgICAgICAgICAgcmVhZChKU0NlbGxfc3RydWN0dXJlSUQpOworICAgICAgICAgICAgcmVh
ZChKU09iamVjdF9idXR0ZXJmbHkpOworICAgICAgICAgICAgcmVhZChOYW1lZFByb3BlcnRpZXMp
OyAvLyBQb2x5IHByb3RvIGNvdWxkIGxvYWQgcHJvdG90eXBlIGZyb20gaXRzIHNsb3QuCisgICAg
ICAgICAgICBkZWYoSGVhcExvY2F0aW9uKFByb3RvdHlwZUxvYywgTmFtZWRQcm9wZXJ0aWVzLCBu
b2RlLT5jaGlsZDEoKSksIExhenlOb2RlKG5vZGUpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJlYWQoV29ybGQpOworICAgICAgICAgICAgd3Jp
dGUoSGVhcCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CiAgICAgICAg
IAogICAgIGNhc2UgR2V0QnlPZmZzZXQ6CiAgICAgY2FzZSBHZXRHZXR0ZXJTZXR0ZXJCeU9mZnNl
dDogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCmluZGV4IDU4YTc1ZjVl
ODVjZTI0ZThmODNlODE0ZjBjNmExZDQ1OTJhNjJjN2QuLmU1ZmE0ZjM3ODFmNmE4NGY3YTUyZjll
NTY1YmM5ZGNkZDBkNzU5ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRG9lc0dDLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5j
cHAKQEAgLTIzNiw2ICsyMzYsNyBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5v
ZGUpCiAgICAgY2FzZSBTdHJpbmdDaGFyQXQ6CiAgICAgY2FzZSBTdHJpbmdDaGFyQ29kZUF0Ogog
ICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQ6CisgICAgY2FzZSBHZXRQcm90b3R5cGVP
ZjoKICAgICBjYXNlIFB1dEJ5VmFsRGlyZWN0OgogICAgIGNhc2UgUHV0QnlWYWw6CiAgICAgY2Fz
ZSBQdXRCeVZhbEFsaWFzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFz
ZS5jcHAKaW5kZXggNWZmOThkYjU2YWVkN2QyMTJkMGNiMjg0MTQzNjE3MjE2MWJjNjlmMC4uNzA1
ZDJkOGQ3MmI1MmY3ODQwZjMxZTE1ZGIyZjA5MjA5NTg3ZTZhZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCkBAIC0xNTk3LDYgKzE1OTcsMTEgQEAgY2xh
c3MgRml4dXBQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogCisgICAgICAgIGNhc2UgR2V0UHJvdG90eXBlT2Y6IHsKKyAgICAgICAgICAgIGZpeHVw
R2V0UHJvdG90eXBlT2Yobm9kZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAg
ICAgICAgIGNhc2UgUGhpOgogICAgICAgICBjYXNlIFVwc2lsb246CiAgICAgICAgIGNhc2UgRW50
cnlTd2l0Y2g6CkBAIC0yMjk2LDYgKzIzMDEsNTkgQEAgY2xhc3MgRml4dXBQaGFzZSA6IHB1Ymxp
YyBQaGFzZSB7CiAgICAgICAgIH0KICAgICB9CiAKKyAgICB2b2lkIGZpeHVwR2V0UHJvdG90eXBl
T2YoTm9kZSogbm9kZSkKKyAgICB7CisgICAgICAgIC8vIFJlZmxlY3QuZ2V0UHJvdG90eXBlT2Yg
b25seSBhY2NlcHRzIE9iamVjdHMuIEZvciBSZWZsZWN0LmdldFByb3RvdHlwZU9mLCBCeXRlQ29k
ZVBhcnNlciBhdHRhY2hlcyBPYmplY3RVc2UgZWRnZSBmaWx0ZXIgYmVmb3JlIGZpeHVwIHBoYXNl
LgorICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpICE9IE9iamVjdFVzZSkgewor
ICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVTdHJpbmcoKSkg
eworICAgICAgICAgICAgICAgIGluc2VydENoZWNrPFN0cmluZ1VzZT4obm9kZS0+Y2hpbGQxKCku
bm9kZSgpKTsKKyAgICAgICAgICAgICAgICBtX2dyYXBoLmNvbnZlcnRUb0NvbnN0YW50KG5vZGUs
IG1fZ3JhcGguZnJlZXplKG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYyktPnN0cmluZ1Byb3RvdHlwZSgpKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxh
dGVJbnQzMigpKSB7CisgICAgICAgICAgICAgICAgaW5zZXJ0Q2hlY2s8SW50MzJVc2U+KG5vZGUt
PmNoaWxkMSgpLm5vZGUoKSk7CisgICAgICAgICAgICAgICAgbV9ncmFwaC5jb252ZXJ0VG9Db25z
dGFudChub2RlLCBtX2dyYXBoLmZyZWV6ZShtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpLT5udW1iZXJQcm90b3R5cGUoKSkpOworICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChlbmFibGVJbnQ1MigpICYmIG5v
ZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVBbnlJbnQoKSkgeworICAgICAgICAgICAgICAg
IGluc2VydENoZWNrPEludDUyUmVwVXNlPihub2RlLT5jaGlsZDEoKS5ub2RlKCkpOworICAgICAg
ICAgICAgICAgIG1fZ3JhcGguY29udmVydFRvQ29uc3RhbnQobm9kZSwgbV9ncmFwaC5mcmVlemUo
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+bnVtYmVyUHJv
dG90eXBlKCkpKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZU51bWJlcigpKSB7Cisg
ICAgICAgICAgICAgICAgaW5zZXJ0Q2hlY2s8TnVtYmVyVXNlPihub2RlLT5jaGlsZDEoKS5ub2Rl
KCkpOworICAgICAgICAgICAgICAgIG1fZ3JhcGguY29udmVydFRvQ29uc3RhbnQobm9kZSwgbV9n
cmFwaC5mcmVlemUobV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KS0+bnVtYmVyUHJvdG90eXBlKCkpKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZVN5
bWJvbCgpKSB7CisgICAgICAgICAgICAgICAgaW5zZXJ0Q2hlY2s8U3ltYm9sVXNlPihub2RlLT5j
aGlsZDEoKS5ub2RlKCkpOworICAgICAgICAgICAgICAgIG1fZ3JhcGguY29udmVydFRvQ29uc3Rh
bnQobm9kZSwgbV9ncmFwaC5mcmVlemUobV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKS0+c3ltYm9sUHJvdG90eXBlKCkpKTsKKyAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3Vs
ZFNwZWN1bGF0ZUJvb2xlYW4oKSkgeworICAgICAgICAgICAgICAgIGluc2VydENoZWNrPE51bWJl
clVzZT4obm9kZS0+Y2hpbGQxKCkubm9kZSgpKTsKKyAgICAgICAgICAgICAgICBtX2dyYXBoLmNv
bnZlcnRUb0NvbnN0YW50KG5vZGUsIG1fZ3JhcGguZnJlZXplKG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmJvb2xlYW5Qcm90b3R5cGUoKSkpOworICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlm
IChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlRmluYWxPYmplY3QoKSkgeworICAgICAg
ICAgICAgZml4RWRnZTxGaW5hbE9iamVjdFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAg
ICAgbm9kZS0+Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRlKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0
ZUFycmF5KCkpIHsKKyAgICAgICAgICAgIGZpeEVkZ2U8QXJyYXlVc2U+KG5vZGUtPmNoaWxkMSgp
KTsKKyAgICAgICAgICAgIG5vZGUtPmNsZWFyRmxhZ3MoTm9kZU11c3RHZW5lcmF0ZSk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5z
aG91bGRTcGVjdWxhdGVGdW5jdGlvbigpKSB7CisgICAgICAgICAgICBmaXhFZGdlPEZ1bmN0aW9u
VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBub2RlLT5jbGVhckZsYWdzKE5vZGVN
dXN0R2VuZXJhdGUpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorCiAg
ICAgdm9pZCBmaXh1cFRvVGhpcyhOb2RlKiBub2RlKQogICAgIHsKICAgICAgICAgRUNNQU1vZGUg
ZWNtYU1vZGUgPSBtX2dyYXBoLmV4ZWN1dGFibGVGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+
aXNTdHJpY3RNb2RlKCkgPyBTdHJpY3RNb2RlIDogTm90U3RyaWN0TW9kZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSGVhcExvY2F0aW9uLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHSGVhcExvY2F0aW9uLmNwcAppbmRleCA0ZWQwZTQ3NjJhNTFm
MjgwMjdjNzZjOGExNGMwZDJjMThmOWNkYjY2Li4yMGQ5MjY5ZmNlYTI4YWE0NzQzMDk4MWVlZDUz
NTMyNjY0MDQ4Njk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0hl
YXBMb2NhdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdIZWFwTG9j
YXRpb24uY3BwCkBAIC0xNTEsNiArMTUxLDEwIEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0
cmVhbSYgb3V0LCBMb2NhdGlvbktpbmQga2luZCkKICAgICBjYXNlIFR5cGVkQXJyYXlCeXRlT2Zm
c2V0TG9jOgogICAgICAgICBvdXQucHJpbnQoIlR5cGVkQXJyYXlCeXRlT2Zmc2V0TG9jIik7CiAg
ICAgICAgIHJldHVybjsKKworICAgIGNhc2UgUHJvdG90eXBlTG9jOgorICAgICAgICBvdXQucHJp
bnQoIlByb3RvdHlwZUxvYyIpOworICAgICAgICByZXR1cm47CiAgICAgICAgIAogICAgIGNhc2Ug
U3RydWN0dXJlTG9jOgogICAgICAgICBvdXQucHJpbnQoIlN0cnVjdHVyZUxvYyIpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdIZWFwTG9jYXRpb24uaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSGVhcExvY2F0aW9uLmgKaW5kZXggNjc2NTY1Y2ZiZjBk
MTMxMjE5OGNkNDE0YjJhM2JhNjc2MGEwYzkzYi4uYTdlMTQyN2YwYWRmNDRmNjVkZDFkMTY5NzRl
YmUyZGUxNjBiNGNkMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdI
ZWFwTG9jYXRpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0hlYXBMb2Nh
dGlvbi5oCkBAIC02MCw2ICs2MCw3IEBAIGVudW0gTG9jYXRpb25LaW5kIHsKICAgICBTZXR0ZXJM
b2MsCiAgICAgU3RydWN0dXJlTG9jLAogICAgIFR5cGVkQXJyYXlCeXRlT2Zmc2V0TG9jLAorICAg
IFByb3RvdHlwZUxvYywKICAgICBTdGFja0xvYywKICAgICBTdGFja1BheWxvYWRMb2MsCiAgICAg
TWFwQnVja2V0TG9jLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAppbmRleCA2MjhiZmM3
NTJmZmIyOWIzNTk1ZTlkODQ4ZjE1YTIzMzA0MDM2ZTYzLi5hNjkyMTQyOGQxNWEzZTA5ZWMyMDRh
OGE3MmRiOTYxZjY0ZjNjNWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaApAQCAt
MTU0OCw2ICsxNTQ4LDcgQEAgc3RydWN0IE5vZGUgewogICAgICAgICBjYXNlIEdldEJ5SWQ6CiAg
ICAgICAgIGNhc2UgR2V0QnlJZEZsdXNoOgogICAgICAgICBjYXNlIEdldEJ5SWRXaXRoVGhpczoK
KyAgICAgICAgY2FzZSBHZXRQcm90b3R5cGVPZjoKICAgICAgICAgY2FzZSBUcnlHZXRCeUlkOgog
ICAgICAgICBjYXNlIEdldEJ5VmFsOgogICAgICAgICBjYXNlIEdldEJ5VmFsV2l0aFRoaXM6CkBA
IC0yMzExLDYgKzIzMTIsMTEgQEAgc3RydWN0IE5vZGUgewogICAgICAgICByZXR1cm4gaXNBcnJh
eVNwZWN1bGF0aW9uKHByZWRpY3Rpb24oKSk7CiAgICAgfQogCisgICAgYm9vbCBzaG91bGRTcGVj
dWxhdGVGdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gaXNGdW5jdGlvblNwZWN1bGF0
aW9uKHByZWRpY3Rpb24oKSk7CisgICAgfQorCiAgICAgYm9vbCBzaG91bGRTcGVjdWxhdGVQcm94
eU9iamVjdCgpCiAgICAgewogICAgICAgICByZXR1cm4gaXNQcm94eU9iamVjdFNwZWN1bGF0aW9u
KHByZWRpY3Rpb24oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGVUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKaW5k
ZXggNmRjZWMyNGY3MTllYTI3NjEzNWQ4NTI4M2Q5ODVmYjY5MmY0ZjQ2NC4uOGNkZTE2NzY3OThl
N2QyZTI5OTk3OGVjZjg4YmVkYmQ0MzdlYzNjNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTm9kZVR5cGUuaApAQCAtMjUxLDYgKzI1MSw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgREZHIHsKICAgICBtYWNybyhDaGVja1R5cGVJbmZvRmxhZ3MsIE5vZGVNdXN0R2VuZXJhdGUp
IC8qIFRha2VzIGFuIE9wSW5mbyB3aXRoIHRoZSBmbGFncyB5b3Ugd2FudCB0byB0ZXN0IGFyZSBz
ZXQgKi9cCiAgICAgbWFjcm8oQ2hlY2tTdWJDbGFzcywgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAg
IG1hY3JvKFBhcnNlSW50LCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZVJlc3VsdEpTKSBcCisgICAg
bWFjcm8oR2V0UHJvdG90eXBlT2YsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlUmVzdWx0SlMpIFwK
ICAgICBcCiAgICAgLyogQXRvbWljcyBvYmplY3QgZnVuY3Rpb25zLiAqL1wKICAgICBtYWNybyhB
dG9taWNzQWRkLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUhhc1ZhckFy
Z3MpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9u
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCmluZGV4
IDM4YjNhM2M5ZDU4Y2Q4ZGVlOTU4Mzk4ZmYwNmQ3MzkwYzEzOGQ5NWYuLmM4ZmExMTJjOGZkZjJj
YWEwNjgyNzk0ZDc2ZDFjZWE0MGEzYTg4NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPcGVyYXRpb25zLmNwcApAQCAtNTIsNiArNTIsNyBAQAogI2luY2x1ZGUgIkpTQ0lubGlu
ZXMuaCIKICNpbmNsdWRlICJKU0ZpeGVkQXJyYXkuaCIKICNpbmNsdWRlICJKU0dlbmVyaWNUeXBl
ZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oIgorI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0
RnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKICNpbmNsdWRl
ICJKU01hcC5oIgogI2luY2x1ZGUgIkpTU2V0LmgiCkBAIC0yNTE3LDYgKzI1MTgsMjkgQEAgSlND
ZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkpTU2V0RmluZEJ1Y2tldChFeGVjU3RhdGUqIGV4
ZWMsIEpTQ2VsbCogbWFwLCBFbmMKICAgICByZXR1cm4gKmJ1Y2tldDsKIH0KIAorRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRQcm90b3R5cGVPZihFeGVjU3RhdGUqIGV4
ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK3sKKyAgICBWTSYgdm0gPSBleGVjLT52
bSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpLnRvVGhpcyhleGVjLCBTdHJpY3RN
b2RlKTsKKyAgICBpZiAodGhpc1ZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCisgICAgICAgIHJl
dHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgc2NvcGUsIGNyZWF0ZU5vdEFuT2JqZWN0RXJyb3IoZXhl
YywgdGhpc1ZhbHVlKSk7CisKKyAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGpzRHluYW1pY0Nh
c3Q8SlNPYmplY3QqPih2bSwgdGhpc1ZhbHVlKTsKKyAgICBpZiAoIXRoaXNPYmplY3QpIHsKKyAg
ICAgICAgSlNPYmplY3QqIHByb3RvdHlwZSA9IHRoaXNWYWx1ZS5zeW50aGVzaXplUHJvdG90eXBl
KGV4ZWMpOworICAgICAgICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0g
IXByb3RvdHlwZSk7CisgICAgICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBlKSkKKyAgICAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKKyAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShwcm90b3R5cGUpOworICAgIH0KKworICAgIHNjb3BlLnJlbGVhc2UoKTsK
KyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRoaXNPYmplY3QtPmdldFByb3RvdHlwZSh2bSwg
ZXhlYykpOworfQorCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVGhyb3dERkcoRXhlY1N0
YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSB2YWx1ZVRvVGhyb3cpCiB7CiAgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3Bl
cmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKaW5k
ZXggYjE2NWE5YmM2MGE2ODNmNDU1ZTYwZTdmZmZiMjgzNmJiOTExMGUwZC4uNGM0YzFhZDkyYjJj
YTZkZGEyNDMzYmQ5NGI4YWVmMWU4M2E5ZjE4NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPcGVyYXRpb25zLmgKQEAgLTc3LDYgKzc3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25Ub1ByaW1pdGl2ZShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSkg
V1QKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVG9OdW1iZXIoRXhlY1N0
YXRlKiwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uR2V0QnlJZFdpdGhUaGlzKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7CiBF
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5VmFsV2l0aFRoaXMoRXhl
Y1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSkg
V1RGX0lOVEVSTkFMOworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRQ
cm90b3R5cGVPZihFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwogY2hh
ciogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdBcnJheShFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUq
LCB2b2lkKiwgc2l6ZV90KSBXVEZfSU5URVJOQUw7CiBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbk5ld0FycmF5QnVmZmVyKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIHNpemVfdCwgc2l6ZV90
KSBXVEZfSU5URVJOQUw7CiBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0VtcHR5QXJy
YXkoRXhlY1N0YXRlKiwgU3RydWN0dXJlKikgV1RGX0lOVEVSTkFMOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNl
LmNwcAppbmRleCBiYjNhMTFmZWRlZjJkNDFmMTA4NGE1MzkwMGQ4NThiNzYzOTlhYWMzLi41YmY3
YzJlMTIwZDc2Mjc3NjNiOTA5ZGRjYmFiOGMzODViMWNkYzkwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNl
LmNwcApAQCAtNzIzLDcgKzcyMyw4IEBAIGNsYXNzIFByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNl
IDogcHVibGljIFBoYXNlIHsKICAgICAgICAgY2FzZSBHZXRBcmd1bWVudDoKICAgICAgICAgY2Fz
ZSBDYWxsRE9NR2V0dGVyOgogICAgICAgICBjYXNlIEdldER5bmFtaWNWYXI6Ci0gICAgICAgIGNh
c2UgV2Vha01hcEdldDogeworICAgICAgICBjYXNlIFdlYWtNYXBHZXQ6CisgICAgICAgIGNhc2Ug
R2V0UHJvdG90eXBlT2Y6IHsKICAgICAgICAgICAgIHNldFByZWRpY3Rpb24obV9jdXJyZW50Tm9k
ZS0+Z2V0SGVhcFByZWRpY3Rpb24oKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAppbmRleCAyZTU0
Y2IwYjA2NWQ5YmM0OTZiYzA4YmY1ZjcwYjE0YWE2MDZhOTBiLi45Y2Y1MjFiMzI3MTdkMzhiYTdj
ZDQ1YTU3MWNkYmQ4YTkxMGY1ZjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NhZmVUb0V4ZWN1dGUuaApAQCAtMzk5LDYgKzM5OSw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShB
YnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBj
YXNlIEdldE15QXJndW1lbnRCeVZhbE91dE9mQm91bmRzOgogICAgIGNhc2UgRm9yd2FyZFZhcmFy
Z3M6CiAgICAgY2FzZSBDcmVhdGVSZXN0OgorICAgIGNhc2UgR2V0UHJvdG90eXBlT2Y6CiAgICAg
Y2FzZSBTdHJpbmdSZXBsYWNlOgogICAgIGNhc2UgU3RyaW5nUmVwbGFjZVJlZ0V4cDoKICAgICBj
YXNlIEdldFJlZ0V4cE9iamVjdExhc3RJbmRleDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggMzBhYjNhMmY3ZmRiY2QwZDZkYzhhYzgz
ZGE2Nzc2OTE4NTkxYzIwZS4uMTIwN2I4MGNhZDRkOGRlNzAxMGM1YWYxZDFiOTk1MjE2NDgzMzBj
OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5j
cHAKQEAgLTkxODEsMTMgKzkxODEsMjMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRl
T2JqZWN0KEVkZ2UgZWRnZSkKICAgICBzcGVjdWxhdGVPYmplY3QoZWRnZSwgb3BlcmFuZC5ncHIo
KSk7CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZUZ1bmN0aW9uKEVkZ2UgZWRn
ZSwgR1BSUmVnIGNlbGwpCit7CisgICAgc3BlY3VsYXRlQ2VsbFR5cGUoZWRnZSwgY2VsbCwgU3Bl
Y0Z1bmN0aW9uLCBKU0Z1bmN0aW9uVHlwZSk7Cit9CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNw
ZWN1bGF0ZUZ1bmN0aW9uKEVkZ2UgZWRnZSkKIHsKICAgICBpZiAoIW5lZWRzVHlwZUNoZWNrKGVk
Z2UsIFNwZWNGdW5jdGlvbikpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBTcGVjdWxhdGVD
ZWxsT3BlcmFuZCBvcGVyYW5kKHRoaXMsIGVkZ2UpOwotICAgIHNwZWN1bGF0ZUNlbGxUeXBlKGVk
Z2UsIG9wZXJhbmQuZ3ByKCksIFNwZWNGdW5jdGlvbiwgSlNGdW5jdGlvblR5cGUpOworICAgIHNw
ZWN1bGF0ZUZ1bmN0aW9uKGVkZ2UsIG9wZXJhbmQuZ3ByKCkpOworfQorCit2b2lkIFNwZWN1bGF0
aXZlSklUOjpzcGVjdWxhdGVGaW5hbE9iamVjdChFZGdlIGVkZ2UsIEdQUlJlZyBjZWxsKQorewor
ICAgIHNwZWN1bGF0ZUNlbGxUeXBlKGVkZ2UsIGNlbGwsIFNwZWNGaW5hbE9iamVjdCwgRmluYWxP
YmplY3RUeXBlKTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlRmluYWxPYmpl
Y3QoRWRnZSBlZGdlKQpAQCAtOTE5Niw3ICs5MjA2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
c3BlY3VsYXRlRmluYWxPYmplY3QoRWRnZSBlZGdlKQogICAgICAgICByZXR1cm47CiAgICAgCiAg
ICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgb3BlcmFuZCh0aGlzLCBlZGdlKTsKLSAgICBzcGVjdWxh
dGVDZWxsVHlwZShlZGdlLCBvcGVyYW5kLmdwcigpLCBTcGVjRmluYWxPYmplY3QsIEZpbmFsT2Jq
ZWN0VHlwZSk7CisgICAgc3BlY3VsYXRlRmluYWxPYmplY3QoZWRnZSwgb3BlcmFuZC5ncHIoKSk7
CiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZVJlZ0V4cE9iamVjdChFZGdlIGVk
Z2UsIEdQUlJlZyBjZWxsKQpAQCAtMTA3NjIsNiArMTA3NzIsMTM1IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVXZWFrTWFwR2V0KE5vZGUqIG5vZGUpCiAgICAganNWYWx1ZVJlc3VsdChy
ZXN1bHRSZWdzLCBub2RlKTsKIH0KIAordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFBy
b3RvdHlwZU9mKE5vZGUqIG5vZGUpCit7CisgICAgc3dpdGNoIChub2RlLT5jaGlsZDEoKS51c2VL
aW5kKCkpIHsKKyAgICBjYXNlIEFycmF5VXNlOgorICAgIGNhc2UgRnVuY3Rpb25Vc2U6CisgICAg
Y2FzZSBGaW5hbE9iamVjdFVzZTogeworICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBvYmpl
Y3QodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlz
KTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAyKHRoaXMpOworCisgICAgICAgIEdQUlJlZyBv
YmplY3RHUFIgPSBvYmplY3QuZ3ByKCk7CisgICAgICAgIEdQUlJlZyB0ZW1wR1BSID0gdGVtcC5n
cHIoKTsKKyAgICAgICAgR1BSUmVnIHRlbXAyR1BSID0gdGVtcDIuZ3ByKCk7CisKKyAgICAgICAg
c3dpdGNoIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpIHsKKyAgICAgICAgY2FzZSBBcnJheVVz
ZToKKyAgICAgICAgICAgIHNwZWN1bGF0ZUFycmF5KG5vZGUtPmNoaWxkMSgpLCBvYmplY3RHUFIp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRnVuY3Rpb25Vc2U6CisgICAgICAg
ICAgICBzcGVjdWxhdGVGdW5jdGlvbihub2RlLT5jaGlsZDEoKSwgb2JqZWN0R1BSKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEZpbmFsT2JqZWN0VXNlOgorICAgICAgICAgICAg
c3BlY3VsYXRlRmluYWxPYmplY3Qobm9kZS0+Y2hpbGQxKCksIG9iamVjdEdQUik7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAg
IG1faml0LmVtaXRMb2FkU3RydWN0dXJlKCptX2ppdC52bSgpLCBvYmplY3RHUFIsIHRlbXBHUFIs
IHRlbXAyR1BSKTsKKworICAgICAgICBBYnN0cmFjdFZhbHVlJiB2YWx1ZSA9IG1fc3RhdGUuZm9y
Tm9kZShub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIGlmICgodmFsdWUubV90eXBlICYmICEodmFs
dWUubV90eXBlICYgflNwZWNPYmplY3QpKSAmJiB2YWx1ZS5tX3N0cnVjdHVyZS5pc0Zpbml0ZSgp
KSB7CisgICAgICAgICAgICBib29sIGhhc1BvbHlQcm90byA9IGZhbHNlOworICAgICAgICAgICAg
Ym9vbCBoYXNNb25vUHJvdG8gPSBmYWxzZTsKKyAgICAgICAgICAgIHZhbHVlLm1fc3RydWN0dXJl
LmZvckVhY2goWyZdIChSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSkgeworICAgICAgICAg
ICAgICAgIGlmIChzdHJ1Y3R1cmUtPmhhc1BvbHlQcm90bygpKQorICAgICAgICAgICAgICAgICAg
ICBoYXNQb2x5UHJvdG8gPSB0cnVlOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICAgICAgaGFzTW9ub1Byb3RvID0gdHJ1ZTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAg
ICAgICBpZiAoaGFzTW9ub1Byb3RvICYmICFoYXNQb2x5UHJvdG8pIHsKKyNpZiBVU0UoSlNWQUxV
RTY0KQorICAgICAgICAgICAgICAgIG1faml0LmxvYWQ2NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyh0ZW1wR1BSLCBTdHJ1Y3R1cmU6OnByb3RvdHlwZU9mZnNldCgpKSwgdGVtcEdQUik7CisgICAg
ICAgICAgICAgICAganNWYWx1ZVJlc3VsdCh0ZW1wR1BSLCBub2RlKTsKKyNlbHNlCisgICAgICAg
ICAgICAgICAgbV9qaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXBHUFIsIFN0
cnVjdHVyZTo6cHJvdG90eXBlT2Zmc2V0KCkgKyBUYWdPZmZzZXQpLCB0ZW1wMkdQUik7CisgICAg
ICAgICAgICAgICAgbV9qaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXBHUFIs
IFN0cnVjdHVyZTo6cHJvdG90eXBlT2Zmc2V0KCkgKyBQYXlsb2FkT2Zmc2V0KSwgdGVtcEdQUik7
CisgICAgICAgICAgICAgICAganNWYWx1ZVJlc3VsdCh0ZW1wMkdQUiwgdGVtcEdQUiwgbm9kZSk7
CisjZW5kaWYKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIGlmIChoYXNQb2x5UHJvdG8gJiYgIWhhc01vbm9Qcm90bykgeworI2lmIFVTRShKU1ZB
TFVFNjQpCisgICAgICAgICAgICAgICAgbV9qaXQubG9hZDY0KE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKHRlbXBHUFIsIFN0cnVjdHVyZTo6cHJvdG90eXBlT2Zmc2V0KCkpLCB0ZW1wR1BSKTsKKyAg
ICAgICAgICAgICAgICBtX2ppdC56ZXJvRXh0ZW5kMzJUb1B0cih0ZW1wR1BSLCB0ZW1wR1BSKTsK
KyAgICAgICAgICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OkJhc2VJbmRleChvYmpl
Y3RHUFIsIHRlbXBHUFIsIEpJVENvbXBpbGVyOjpUaW1lc0VpZ2h0LCBKU09iamVjdDo6b2Zmc2V0
T2ZJbmxpbmVTdG9yYWdlKCkpLCB0ZW1wR1BSKTsKKyAgICAgICAgICAgICAgICBqc1ZhbHVlUmVz
dWx0KHRlbXBHUFIsIG5vZGUpOworI2Vsc2UKKyAgICAgICAgICAgICAgICBtX2ppdC5sb2FkMzIo
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcEdQUiwgU3RydWN0dXJlOjpwcm90b3R5cGVPZmZz
ZXQoKSArIFBheWxvYWRPZmZzZXQpLCB0ZW1wR1BSKTsKKyAgICAgICAgICAgICAgICBtX2ppdC5s
b2FkMzIoSklUQ29tcGlsZXI6OkJhc2VJbmRleChvYmplY3RHUFIsIHRlbXBHUFIsIEpJVENvbXBp
bGVyOjpUaW1lc0VpZ2h0LCBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgKyBUYWdP
ZmZzZXQpLCB0ZW1wMkdQUik7CisgICAgICAgICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBp
bGVyOjpCYXNlSW5kZXgob2JqZWN0R1BSLCB0ZW1wR1BSLCBKSVRDb21waWxlcjo6VGltZXNFaWdo
dCwgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpICsgUGF5bG9hZE9mZnNldCksIHRl
bXBHUFIpOworICAgICAgICAgICAgICAgIGpzVmFsdWVSZXN1bHQodGVtcDJHUFIsIHRlbXBHUFIs
IG5vZGUpOworI2VuZGlmCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBtX2ppdC5sb2FkNjQoTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcEdQUiwgU3RydWN0dXJlOjpwcm90b3R5cGVPZmZzZXQo
KSksIHRlbXBHUFIpOworICAgICAgICBhdXRvIGlzTW9ub1Byb3RvID0gbV9qaXQuYnJhbmNoSWZO
b3RJbnQzMihKU1ZhbHVlUmVncyh0ZW1wR1BSKSk7CisgICAgICAgIG1faml0Lnplcm9FeHRlbmQz
MlRvUHRyKHRlbXBHUFIsIHRlbXBHUFIpOworICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGls
ZXI6OkJhc2VJbmRleChvYmplY3RHUFIsIHRlbXBHUFIsIEpJVENvbXBpbGVyOjpUaW1lc0VpZ2h0
LCBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkpLCB0ZW1wR1BSKTsKKyAgICAgICAg
aXNNb25vUHJvdG8ubGluaygmbV9qaXQpOworICAgICAgICBqc1ZhbHVlUmVzdWx0KHRlbXBHUFIs
IG5vZGUpOworI2Vsc2UKKyAgICAgICAgbV9qaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKHRlbXBHUFIsIFN0cnVjdHVyZTo6cHJvdG90eXBlT2Zmc2V0KCkgKyBUYWdPZmZzZXQpLCB0
ZW1wMkdQUik7CisgICAgICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0
ZW1wR1BSLCBTdHJ1Y3R1cmU6OnByb3RvdHlwZU9mZnNldCgpICsgUGF5bG9hZE9mZnNldCksIHRl
bXBHUFIpOworICAgICAgICBhdXRvIGlzTW9ub1Byb3RvID0gbV9qaXQuYnJhbmNoMzIoQ0NhbGxI
ZWxwZXJzOjpOb3RFcXVhbCwgdGVtcDJHUFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRh
ZykpOworICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OkJhc2VJbmRleChvYmplY3RH
UFIsIHRlbXBHUFIsIEpJVENvbXBpbGVyOjpUaW1lc0VpZ2h0LCBKU09iamVjdDo6b2Zmc2V0T2ZJ
bmxpbmVTdG9yYWdlKCkgKyBUYWdPZmZzZXQpLCB0ZW1wMkdQUik7CisgICAgICAgIG1faml0Lmxv
YWQzMihKSVRDb21waWxlcjo6QmFzZUluZGV4KG9iamVjdEdQUiwgdGVtcEdQUiwgSklUQ29tcGls
ZXI6OlRpbWVzRWlnaHQsIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSArIFBheWxv
YWRPZmZzZXQpLCB0ZW1wR1BSKTsKKyAgICAgICAgaXNNb25vUHJvdG8ubGluaygmbV9qaXQpOwor
ICAgICAgICBqc1ZhbHVlUmVzdWx0KHRlbXAyR1BSLCB0ZW1wR1BSLCBub2RlKTsKKyNlbmRpZgor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIGNhc2UgT2JqZWN0VXNlOiB7CisgICAgICAgIFNw
ZWN1bGF0ZUNlbGxPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAg
SlNWYWx1ZVJlZ3NUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworCisgICAgICAgIEdQUlJlZyB2YWx1
ZUdQUiA9IHZhbHVlLmdwcigpOworICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVz
dWx0LnJlZ3MoKTsKKworICAgICAgICBzcGVjdWxhdGVPYmplY3Qobm9kZS0+Y2hpbGQxKCksIHZh
bHVlR1BSKTsKKworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7
CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uR2V0UHJvdG90eXBlT2YsIHJlc3VsdFJl
Z3MsIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seSh2YWx1ZUdQUikpOworICAgICAgICBtX2ppdC5l
eGNlcHRpb25DaGVjaygpOworICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUp
OworCisjZWxzZQorICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxs
VGFnKSwgcmVzdWx0UmVncy50YWdHUFIoKSk7CisgICAgICAgIG1faml0Lm1vdmUodmFsdWVHUFIs
IHJlc3VsdFJlZ3MucGF5bG9hZEdQUigpKTsKKyAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAg
ICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25HZXRQcm90b3R5cGVPZiwgcmVzdWx0UmVncywg
cmVzdWx0UmVncyk7CisgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CisgICAgICAgIGpz
VmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSk7CisjZW5kaWYKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICBkZWZhdWx0OiB7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMs
IG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkgcmVzdWx0KHRo
aXMpOworCisgICAgICAgIEpTVmFsdWVSZWdzIHZhbHVlUmVncyA9IHZhbHVlLmpzVmFsdWVSZWdz
KCk7CisgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOworCisg
ICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9u
R2V0UHJvdG90eXBlT2YsIHJlc3VsdFJlZ3MsIHZhbHVlUmVncyk7CisgICAgICAgIG1faml0LmV4
Y2VwdGlvbkNoZWNrKCk7CisgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgfQorfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpT
Qzo6REZHCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5oCmluZGV4IDI1ODIyYWU0OTI1ODJlYmVmOTJkYjFkOTI4MWFiYzA5MjA0MWE4NzAu
LmQxMDkzODA1ZGYxMTg1MGU2MzRlZDIwYWJkYWJmMDkyNjEyMWM2NGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKQEAgLTI4MzQsNiArMjgzNCw3
IEBAIGNsYXNzIFNwZWN1bGF0aXZlSklUIHsKICAgICB2b2lkIGNvbXBpbGVXZWFrTWFwR2V0KE5v
ZGUqKTsKICAgICB2b2lkIGNvbXBpbGVMb2FkS2V5RnJvbU1hcEJ1Y2tldChOb2RlKik7CiAgICAg
dm9pZCBjb21waWxlTG9hZFZhbHVlRnJvbU1hcEJ1Y2tldChOb2RlKik7CisgICAgdm9pZCBjb21w
aWxlR2V0UHJvdG90eXBlT2YoTm9kZSopOwogICAgIAogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgQmFzZU9wZXJhbmRUeXBlLCB0eXBlbmFtZSBQcm9wZXJ0eU9w
ZXJhbmRUeXBlLCB0eXBlbmFtZSBWYWx1ZU9wZXJhbmRUeXBlLCB0eXBlbmFtZSBUYWdUeXBlPgpA
QCAtMzA4Myw3ICszMDg0LDkgQEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQgewogICAgIHZvaWQgc3Bl
Y3VsYXRlT2JqZWN0KEVkZ2UpOwogICAgIHZvaWQgc3BlY3VsYXRlQXJyYXkoRWRnZSwgR1BSUmVn
IGNlbGwpOwogICAgIHZvaWQgc3BlY3VsYXRlQXJyYXkoRWRnZSk7CisgICAgdm9pZCBzcGVjdWxh
dGVGdW5jdGlvbihFZGdlLCBHUFJSZWcgY2VsbCk7CiAgICAgdm9pZCBzcGVjdWxhdGVGdW5jdGlv
bihFZGdlKTsKKyAgICB2b2lkIHNwZWN1bGF0ZUZpbmFsT2JqZWN0KEVkZ2UsIEdQUlJlZyBjZWxs
KTsKICAgICB2b2lkIHNwZWN1bGF0ZUZpbmFsT2JqZWN0KEVkZ2UpOwogICAgIHZvaWQgc3BlY3Vs
YXRlUmVnRXhwT2JqZWN0KEVkZ2UsIEdQUlJlZyBjZWxsKTsKICAgICB2b2lkIHNwZWN1bGF0ZVJl
Z0V4cE9iamVjdChFZGdlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4IDQzZDBkYWNkYTBlYzAwNzcwZmIzOGZhY2Yz
MDc2Nzc1MTk0YjRlMDUuLjE4NGY0NWVmZjE0Yjg5ZjlhNjhmZTc1NThlODljMTYwY2NlNDljNDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQz
Ml82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDMyXzY0LmNwcApAQCAtNDQyNiw2ICs0NDI2LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgY29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0
KG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9CisKKyAgICBjYXNlIEdldFByb3RvdHlwZU9m
OiB7CisgICAgICAgIGNvbXBpbGVHZXRQcm90b3R5cGVPZihub2RlKTsKKyAgICAgICAgYnJlYWs7
CisgICAgfQogICAgICAgICAKICAgICBjYXNlIEdldEJ5T2Zmc2V0OiB7CiAgICAgICAgIFN0b3Jh
Z2VPcGVyYW5kIHN0b3JhZ2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXggY2Y2NmU2YWY2
OWU0MTZkZTZkYzgxZThmNjdjMTc5YTQ0MmZlNjc4Ny4uZDdiNGVjZmIwNDk2ZWI1NDgwNzM0Y2Q1
MWM0MDFhY2U2MTU1YjViMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC00NjQyLDYgKzQ2NDIsMTEgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjb21waWxlR2V0VHlwZWRBcnJh
eUJ5dGVPZmZzZXQobm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KKworICAgIGNhc2UgR2V0
UHJvdG90eXBlT2Y6IHsKKyAgICAgICAgY29tcGlsZUdldFByb3RvdHlwZU9mKG5vZGUpOworICAg
ICAgICBicmVhazsKKyAgICB9CiAgICAgICAgIAogICAgIGNhc2UgR2V0QnlPZmZzZXQ6CiAgICAg
Y2FzZSBHZXRHZXR0ZXJTZXR0ZXJCeU9mZnNldDogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCmluZGV4IDEzMDllOWVhYTE5MTE1NzJkYWFkMWI5NmFm
YWNmMjdmZGVkYThhOTEuLjUxYjMwN2Y2Njk3ZDgyMGQyNmFlYzYyY2JlMGE5MzY4YTE5NWZmODgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKQEAg
LTE0NCw2ICsxNDQsNyBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSog
bm9kZSkKICAgICBjYXNlIFJlYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2U6CiAgICAgY2FzZSBOdWtl
U3RydWN0dXJlQW5kU2V0QnV0dGVyZmx5OgogICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZz
ZXQ6CisgICAgY2FzZSBHZXRQcm90b3R5cGVPZjoKICAgICBjYXNlIE5vdGlmeVdyaXRlOgogICAg
IGNhc2UgU3RvcmVCYXJyaWVyOgogICAgIGNhc2UgRmVuY2VkU3RvcmVCYXJyaWVyOgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDIyODAyMTU0
YjgwMjVmYmZhZDc1MDJmMWM1NmJkODVmZGYxMTkyMWQuLmVlOTU2Zjg0NzYxYTc0ODRhZmMxNTE3
OTIyYTZiODdkYjk4Y2M3ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExv
d2VyREZHVG9CMy5jcHAKQEAgLTgyMSw2ICs4MjEsOSBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewog
ICAgICAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0OgogICAgICAgICAgICAgY29tcGls
ZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0KCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBHZXRQcm90b3R5cGVPZjoKKyAgICAgICAgICAgIGNvbXBpbGVHZXRQcm90b3R5cGVPZigp
OworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQWxsb2NhdGVQcm9wZXJ0eVN0b3Jh
Z2U6CiAgICAgICAgICAgICBjb21waWxlQWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UoKTsKICAgICAg
ICAgICAgIGJyZWFrOwpAQCAtMzQyMyw2ICszNDI2LDgyIEBAIGNsYXNzIExvd2VyREZHVG9CMyB7
CiAKICAgICAgICAgc2V0SW50MzIobV9vdXQuY2FzdFRvSW50MzIobV9vdXQucGhpKHBvaW50ZXJU
eXBlKCksIHNpbXBsZU91dCwgd2FzdGVmdWxPdXQpKSk7CiAgICAgfQorCisgICAgdm9pZCBjb21w
aWxlR2V0UHJvdG90eXBlT2YoKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChtX25vZGUtPmNoaWxk
MSgpLnVzZUtpbmQoKSkgeworICAgICAgICBjYXNlIEFycmF5VXNlOgorICAgICAgICBjYXNlIEZ1
bmN0aW9uVXNlOgorICAgICAgICBjYXNlIEZpbmFsT2JqZWN0VXNlOiB7CisgICAgICAgICAgICBM
VmFsdWUgb2JqZWN0ID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIHN3
aXRjaCAobV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpIHsKKyAgICAgICAgICAgIGNhc2UgQXJy
YXlVc2U6CisgICAgICAgICAgICAgICAgc3BlY3VsYXRlQXJyYXkobV9ub2RlLT5jaGlsZDEoKSwg
b2JqZWN0KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgRnVuY3Rp
b25Vc2U6CisgICAgICAgICAgICAgICAgc3BlY3VsYXRlRnVuY3Rpb24obV9ub2RlLT5jaGlsZDEo
KSwgb2JqZWN0KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgRmlu
YWxPYmplY3RVc2U6CisgICAgICAgICAgICAgICAgc3BlY3VsYXRlRmluYWxPYmplY3QobV9ub2Rl
LT5jaGlsZDEoKSwgb2JqZWN0KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgTFZh
bHVlIHN0cnVjdHVyZSA9IGxvYWRTdHJ1Y3R1cmUob2JqZWN0KTsKKworICAgICAgICAgICAgQWJz
dHJhY3RWYWx1ZSYgdmFsdWUgPSBtX3N0YXRlLmZvck5vZGUobV9ub2RlLT5jaGlsZDEoKSk7Cisg
ICAgICAgICAgICBpZiAoKHZhbHVlLm1fdHlwZSAmJiAhKHZhbHVlLm1fdHlwZSAmIH5TcGVjT2Jq
ZWN0KSkgJiYgdmFsdWUubV9zdHJ1Y3R1cmUuaXNGaW5pdGUoKSkgeworICAgICAgICAgICAgICAg
IGJvb2wgaGFzUG9seVByb3RvID0gZmFsc2U7CisgICAgICAgICAgICAgICAgYm9vbCBoYXNNb25v
UHJvdG8gPSBmYWxzZTsKKyAgICAgICAgICAgICAgICB2YWx1ZS5tX3N0cnVjdHVyZS5mb3JFYWNo
KFsmXSAoUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUpIHsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKHN0cnVjdHVyZS0+aGFzUG9seVByb3RvKCkpCisgICAgICAgICAgICAgICAgICAgICAg
ICBoYXNQb2x5UHJvdG8gPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgICAgICAgICBoYXNNb25vUHJvdG8gPSB0cnVlOworICAgICAgICAgICAgICAgIH0p
OworCisgICAgICAgICAgICAgICAgaWYgKGhhc01vbm9Qcm90byAmJiAhaGFzUG9seVByb3RvKSB7
CisgICAgICAgICAgICAgICAgICAgIHNldEpTVmFsdWUobV9vdXQubG9hZDY0KHN0cnVjdHVyZSwg
bV9oZWFwcy5TdHJ1Y3R1cmVfcHJvdG90eXBlKSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAoaGFzUG9seVByb3Rv
ICYmICFoYXNNb25vUHJvdG8pIHsKKyAgICAgICAgICAgICAgICAgICAgTFZhbHVlIHByb3RvdHlw
ZUJpdHMgPSBtX291dC5sb2FkNjQoc3RydWN0dXJlLCBtX2hlYXBzLlN0cnVjdHVyZV9wcm90b3R5
cGUpOworICAgICAgICAgICAgICAgICAgICBMVmFsdWUgaW5kZXggPSBtX291dC5iaXRBbmQocHJv
dG90eXBlQml0cywgbV9vdXQuY29uc3RJbnQ2NChVSU5UX01BWCkpOworICAgICAgICAgICAgICAg
ICAgICBzZXRKU1ZhbHVlKG1fb3V0LmxvYWQ2NChtX291dC5iYXNlSW5kZXgobV9oZWFwcy5wcm9w
ZXJ0aWVzLmF0QW55TnVtYmVyKCksIG9iamVjdCwgaW5kZXgsIFNjYWxlRWlnaHQsIEpTT2JqZWN0
OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSkpKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgTEJhc2lj
QmxvY2sgY29udGludWF0aW9uID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgICAgIExCYXNp
Y0Jsb2NrIGxvYWRQb2x5UHJvdG8gPSBtX291dC5uZXdCbG9jaygpOworCisgICAgICAgICAgICBM
VmFsdWUgcHJvdG90eXBlQml0cyA9IG1fb3V0LmxvYWQ2NChzdHJ1Y3R1cmUsIG1faGVhcHMuU3Ry
dWN0dXJlX3Byb3RvdHlwZSk7CisgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBkaXJlY3RQcm90
b3R5cGUgPSBtX291dC5hbmNob3IocHJvdG90eXBlQml0cyk7CisgICAgICAgICAgICBtX291dC5i
cmFuY2goaXNJbnQzMihwcm90b3R5cGVCaXRzKSwgdW5zdXJlKGxvYWRQb2x5UHJvdG8pLCB1bnN1
cmUoY29udGludWF0aW9uKSk7CisKKyAgICAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0g
bV9vdXQuYXBwZW5kVG8obG9hZFBvbHlQcm90bywgY29udGludWF0aW9uKTsKKyAgICAgICAgICAg
IExWYWx1ZSBpbmRleCA9IG1fb3V0LmJpdEFuZChwcm90b3R5cGVCaXRzLCBtX291dC5jb25zdElu
dDY0KFVJTlRfTUFYKSk7CisgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBwb2x5UHJvdG8gPSBt
X291dC5hbmNob3IoCisgICAgICAgICAgICAgICAgbV9vdXQubG9hZDY0KG1fb3V0LmJhc2VJbmRl
eChtX2hlYXBzLnByb3BlcnRpZXMuYXRBbnlOdW1iZXIoKSwgb2JqZWN0LCBpbmRleCwgU2NhbGVF
aWdodCwgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpKSkpOworICAgICAgICAgICAg
bV9vdXQuanVtcChjb250aW51YXRpb24pOworCisgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhj
b250aW51YXRpb24sIGxhc3ROZXh0KTsKKyAgICAgICAgICAgIHNldEpTVmFsdWUobV9vdXQucGhp
KEludDY0LCBkaXJlY3RQcm90b3R5cGUsIHBvbHlQcm90bykpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisgICAgICAgIGNhc2UgT2JqZWN0VXNlOiB7CisgICAgICAgICAgICBzZXRK
U1ZhbHVlKHZtQ2FsbChJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkdldFByb3RvdHlw
ZU9mKSwgbV9jYWxsRnJhbWUsIGxvd09iamVjdChtX25vZGUtPmNoaWxkMSgpKSkpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGRlZmF1bHQ6IHsKKyAgICAgICAgICAg
IHNldEpTVmFsdWUodm1DYWxsKEludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uR2V0UHJv
dG90eXBlT2YpLCBtX2NhbGxGcmFtZSwgbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpKSkpOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CiAgICAgCiAg
ICAgdm9pZCBjb21waWxlR2V0QXJyYXlMZW5ndGgoKQogICAgIHsKQEAgLTg5ODcsNyArOTA2Niw3
IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIExWYWx1ZSBzdHJ1Y3R1cmUgPSBsb2Fk
U3RydWN0dXJlKHZhbHVlKTsKIAogICAgICAgICBMVmFsdWUgcHJvdG90eXBlQml0cyA9IG1fb3V0
LmxvYWQ2NChzdHJ1Y3R1cmUsIG1faGVhcHMuU3RydWN0dXJlX3Byb3RvdHlwZSk7Ci0gICAgICAg
IFZhbHVlRnJvbUJsb2NrIGRpcmVjdFByb3RveXBlID0gbV9vdXQuYW5jaG9yKHByb3RvdHlwZUJp
dHMpOworICAgICAgICBWYWx1ZUZyb21CbG9jayBkaXJlY3RQcm90b3R5cGUgPSBtX291dC5hbmNo
b3IocHJvdG90eXBlQml0cyk7CiAgICAgICAgIG1fb3V0LmJyYW5jaChpc0ludDMyKHByb3RvdHlw
ZUJpdHMpLCB1bnN1cmUobG9hZFBvbHlQcm90byksIHVuc3VyZShjb21wYXJlUHJvdG90eXBlKSk7
CiAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8obG9hZFBvbHlQcm90bywgY29tcGFyZVByb3RvdHlw
ZSk7CkBAIC04OTk3LDcgKzkwNzYsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBt
X291dC5qdW1wKGNvbXBhcmVQcm90b3R5cGUpOwogCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNv
bXBhcmVQcm90b3R5cGUsIG5vdFlldEluc3RhbmNlKTsKLSAgICAgICAgTFZhbHVlIGN1cnJlbnRQ
cm90b3R5cGUgPSBtX291dC5waGkoSW50NjQsIGRpcmVjdFByb3RveXBlLCBwb2x5UHJvdG8pOwor
ICAgICAgICBMVmFsdWUgY3VycmVudFByb3RvdHlwZSA9IG1fb3V0LnBoaShJbnQ2NCwgZGlyZWN0
UHJvdG90eXBlLCBwb2x5UHJvdG8pOwogICAgICAgICBWYWx1ZUZyb21CbG9jayBpc0luc3RhbmNl
UmVzdWx0ID0gbV9vdXQuYW5jaG9yKG1fb3V0LmJvb2xlYW5UcnVlKTsKICAgICAgICAgbV9vdXQu
YnJhbmNoKAogICAgICAgICAgICAgbV9vdXQuZXF1YWwoY3VycmVudFByb3RvdHlwZSwgcHJvdG90
eXBlKSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSW50cmluc2ljRW1p
dHRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0ludHJpbnNpY0VtaXR0ZXIuY3Bw
CmluZGV4IDRmYjdhNTkwOWRkZDVhZmMyYzU0MWQyYTNiMmViYWEyY2Q3Nzc0NzYuLmE1ZTBhYzk5
YzI5ZWYyNGI5OTJlN2EzNTMzY2VlMTRlOTAyNTE1MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSW50cmluc2ljRW1pdHRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9JbnRyaW5zaWNFbWl0dGVyLmNwcApAQCAtNjMsNiArNjMsMTEgQEAgYm9vbCBJ
bnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlOjpjYW5FbWl0SW50cmluc2ljR2V0dGVyKEpTRnVuY3Rp
b24qIGdldHRlciwgU3RydWMKICAgICAgICAgCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
KyAgICBjYXNlIFVuZGVyc2NvcmVQcm90b0ludHJpbnNpYzogeworICAgICAgICBhdXRvIGdldFBy
b3RvdHlwZU1ldGhvZCA9IHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCktPm1ldGhvZFRhYmxlLmdldFBy
b3RvdHlwZTsKKyAgICAgICAgTWV0aG9kVGFibGU6OkdldFByb3RvdHlwZUZ1bmN0aW9uUHRyIGRl
ZmF1bHRHZXRQcm90b3R5cGUgPSBKU09iamVjdDo6Z2V0UHJvdG90eXBlOworICAgICAgICByZXR1
cm4gZ2V0UHJvdG90eXBlTWV0aG9kID09IGRlZmF1bHRHZXRQcm90b3R5cGU7CisgICAgfQogICAg
IGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC0xMjUsNiArMTMwLDE3
IEBAIHZvaWQgSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZTo6ZW1pdEludHJpbnNpY0dldHRlcihB
Y2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAg
ICBjYXNlIFVuZGVyc2NvcmVQcm90b0ludHJpbnNpYzogeworICAgICAgICBpZiAoc3RydWN0dXJl
KCktPmhhc01vbm9Qcm90bygpKSB7CisgICAgICAgICAgICBqaXQubW92ZVZhbHVlKHN0cnVjdHVy
ZSgpLT5zdG9yZWRQcm90b3R5cGUoKSwgdmFsdWVSZWdzKTsKKyAgICAgICAgICAgIHN0YXRlLnN1
Y2NlZWQoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBqaXQubG9h
ZFZhbHVlKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIHNpemVvZihFbmNvZGVkSlNW
YWx1ZSkgKiBzdHJ1Y3R1cmUoKS0+cG9seVByb3RvT2Zmc2V0KCkgKyBKU09iamVjdDo6b2Zmc2V0
T2ZJbmxpbmVTdG9yYWdlKCkpLCB2YWx1ZVJlZ3MpOworICAgICAgICBzdGF0ZS5zdWNjZWVkKCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5z
aWMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmNwcAppbmRl
eCA5ZDEyZmZmOWRmNzVjZTE3ZDZhMDFiMzAzNmExYmE3YmExMzYzOTEzLi45YjViZDA4MDhkNjIy
ZWQ2NTQ5MzAwOTAxODRjYmY2M2IxYjExMDU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRyaW5zaWMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludHJpbnNpYy5jcHAKQEAgLTExMSw2ICsxMTEsMTAgQEAgY29uc3QgY2hhciogaW50
cmluc2ljTmFtZShJbnRyaW5zaWMgaW50cmluc2ljKQogICAgICAgICByZXR1cm4gIlJlZ0V4cFRl
c3RJbnRyaW5zaWMiOwogICAgIGNhc2UgUmVnRXhwVGVzdEZhc3RJbnRyaW5zaWM6CiAgICAgICAg
IHJldHVybiAiUmVnRXhwVGVzdEZhc3RJbnRyaW5zaWMiOworICAgIGNhc2UgT2JqZWN0R2V0UHJv
dG90eXBlT2ZJbnRyaW5zaWM6CisgICAgICAgIHJldHVybiAiT2JqZWN0R2V0UHJvdG90eXBlT2ZJ
bnRyaW5zaWMiOworICAgIGNhc2UgUmVmbGVjdEdldFByb3RvdHlwZU9mSW50cmluc2ljOgorICAg
ICAgICByZXR1cm4gIlJlZmxlY3RHZXRQcm90b3R5cGVPZkludHJpbnNpYyI7CiAgICAgY2FzZSBT
dHJpbmdQcm90b3R5cGVWYWx1ZU9mSW50cmluc2ljOgogICAgICAgICByZXR1cm4gIlN0cmluZ1By
b3RvdHlwZVZhbHVlT2ZJbnRyaW5zaWMiOwogICAgIGNhc2UgU3RyaW5nUHJvdG90eXBlUmVwbGFj
ZUludHJpbnNpYzoKQEAgLTE4OSw2ICsxOTMsOCBAQCBjb25zdCBjaGFyKiBpbnRyaW5zaWNOYW1l
KEludHJpbnNpYyBpbnRyaW5zaWMpCiAgICAgICAgIHJldHVybiAiVHlwZWRBcnJheUJ5dGVMZW5n
dGhJbnRyaW5zaWMiOwogICAgIGNhc2UgVHlwZWRBcnJheUJ5dGVPZmZzZXRJbnRyaW5zaWM6CiAg
ICAgICAgIHJldHVybiAiVHlwZWRBcnJheUJ5dGVPZmZzZXRJbnRyaW5zaWMiOworICAgIGNhc2Ug
VW5kZXJzY29yZVByb3RvSW50cmluc2ljOgorICAgICAgICByZXR1cm4gIlVuZGVyc2NvcmVQcm90
b0ludHJpbnNpYyI7CiAgICAgY2FzZSBERkdUcnVlSW50cmluc2ljOgogICAgICAgICByZXR1cm4g
IkRGR1RydWVJbnRyaW5zaWMiOwogICAgIGNhc2UgT1NSRXhpdEludHJpbnNpYzoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmgKaW5kZXggMjlkOTVmNzI5YWM1NGMxZjNh
NTcwZmFiZjY4NGZlN2UzYjU3N2Q5MC4uMDZjYjI4YTQyZWJhMWYwOTg2OGJlNDkyZjExYjI1ZjM5
ZjJiOTM1OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmlu
c2ljLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmgKQEAg
LTY4LDYgKzY4LDggQEAgZW51bSBJbnRyaW5zaWMgewogICAgIFJlZ0V4cEV4ZWNJbnRyaW5zaWMs
CiAgICAgUmVnRXhwVGVzdEludHJpbnNpYywKICAgICBSZWdFeHBUZXN0RmFzdEludHJpbnNpYywK
KyAgICBPYmplY3RHZXRQcm90b3R5cGVPZkludHJpbnNpYywKKyAgICBSZWZsZWN0R2V0UHJvdG90
eXBlT2ZJbnRyaW5zaWMsCiAgICAgU3RyaW5nUHJvdG90eXBlVmFsdWVPZkludHJpbnNpYywKICAg
ICBTdHJpbmdQcm90b3R5cGVSZXBsYWNlSW50cmluc2ljLAogICAgIFN0cmluZ1Byb3RvdHlwZVJl
cGxhY2VSZWdFeHBJbnRyaW5zaWMsCkBAIC0xMDksNiArMTExLDcgQEAgZW51bSBJbnRyaW5zaWMg
ewogICAgIFR5cGVkQXJyYXlMZW5ndGhJbnRyaW5zaWMsCiAgICAgVHlwZWRBcnJheUJ5dGVMZW5n
dGhJbnRyaW5zaWMsCiAgICAgVHlwZWRBcnJheUJ5dGVPZmZzZXRJbnRyaW5zaWMsCisgICAgVW5k
ZXJzY29yZVByb3RvSW50cmluc2ljLAogCiAgICAgLy8gRGVidWdnaW5nIGludHJpbnNpY3MuIFRo
ZXNlIGFyZSBtZWFudCB0byBiZSB1c2VkIGFzIHRlc3RpbmcgaGFja3Mgd2l0aGluCiAgICAgLy8g
anNjLmNwcCBhbmQgc2hvdWxkIG5ldmVyIGJlIGV4cG9zZWQgdG8gdXNlcnMuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggNDBlNGY0
MWU4MjNjNjMwYjVhN2NlNWM2NTkxNzU3MDUxZmYxMGYzMS4uMTcwZTI2MGI2MDAyOWZlM2YzNTg5
YTgyZjBhYjE1NmI2MmUzYzMwMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtNDUwLDcgKzQ1MCw3IEBAIHZvaWQgSlNHbG9iYWxP
YmplY3Q6OmluaXQoVk0mIHZtKQogICAgIG1fbnVsbFNldHRlckZ1bmN0aW9uLnNldCh2bSwgdGhp
cywgTnVsbFNldHRlckZ1bmN0aW9uOjpjcmVhdGUodm0sIE51bGxTZXR0ZXJGdW5jdGlvbjo6Y3Jl
YXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSkpOwogICAg
IG1fb2JqZWN0UHJvdG90eXBlLnNldCh2bSwgdGhpcywgT2JqZWN0UHJvdG90eXBlOjpjcmVhdGUo
dm0sIHRoaXMsIE9iamVjdFByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBqc051
bGwoKSkpKTsKICAgICBHZXR0ZXJTZXR0ZXIqIHByb3RvQWNjZXNzb3IgPSBHZXR0ZXJTZXR0ZXI6
OmNyZWF0ZSh2bSwgdGhpcyk7Ci0gICAgcHJvdG9BY2Nlc3Nvci0+c2V0R2V0dGVyKHZtLCB0aGlz
LCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDAsIG1ha2VTdHJpbmcoImdldCAiLCB2bS5w
cm9wZXJ0eU5hbWVzLT51bmRlcnNjb3JlUHJvdG8uc3RyaW5nKCkpLCBnbG9iYWxGdW5jUHJvdG9H
ZXR0ZXIpKTsKKyAgICBwcm90b0FjY2Vzc29yLT5zZXRHZXR0ZXIodm0sIHRoaXMsIEpTRnVuY3Rp
b246OmNyZWF0ZSh2bSwgdGhpcywgMCwgbWFrZVN0cmluZygiZ2V0ICIsIHZtLnByb3BlcnR5TmFt
ZXMtPnVuZGVyc2NvcmVQcm90by5zdHJpbmcoKSksIGdsb2JhbEZ1bmNQcm90b0dldHRlciwgVW5k
ZXJzY29yZVByb3RvSW50cmluc2ljKSk7CiAgICAgcHJvdG9BY2Nlc3Nvci0+c2V0U2V0dGVyKHZt
LCB0aGlzLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDAsIG1ha2VTdHJpbmcoInNldCAi
LCB2bS5wcm9wZXJ0eU5hbWVzLT51bmRlcnNjb3JlUHJvdG8uc3RyaW5nKCkpLCBnbG9iYWxGdW5j
UHJvdG9TZXR0ZXIpKTsKICAgICBtX29iamVjdFByb3RvdHlwZS0+cHV0RGlyZWN0Tm9uSW5kZXhB
Y2Nlc3Nvcih2bSwgdm0ucHJvcGVydHlOYW1lcy0+dW5kZXJzY29yZVByb3RvLCBwcm90b0FjY2Vz
c29yLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3IgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pOwogICAgIG1fZnVuY3Rpb25Qcm90b3R5cGUtPnN0cnVjdHVyZSgpLT5zZXRQcm90b3R5
cGVXaXRob3V0VHJhbnNpdGlvbih2bSwgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlv
bnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5j
dGlvbnMuY3BwCmluZGV4IDM3MTkxOTc1ZTE5MTQ3NGFiNmVhMzRmZGJjMmE4YWRiZjk3YWFhMDIu
LmViZDhkOWU3ZDY0NDY0MTA5NWY0NWU5MGRkODJkNWU4MGE0ZDk2YWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9u
cy5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFVuaWNvZGU7CiAKIG5hbWVz
cGFjZSBKU0MgewogCi1zdGF0aWMgY29uc3QgY2hhciogY29uc3QgT2JqZWN0UHJvdG9DYWxsZWRP
bk51bGxPclVuZGVmaW5lZEVycm9yID0gIk9iamVjdC5wcm90b3R5cGUuX19wcm90b19fIGNhbGxl
ZCBvbiBudWxsIG9yIHVuZGVmaW5lZCI7Citjb25zdCBjaGFyKiBjb25zdCBPYmplY3RQcm90b0Nh
bGxlZE9uTnVsbE9yVW5kZWZpbmVkRXJyb3IgPSAiT2JqZWN0LnByb3RvdHlwZS5fX3Byb3RvX18g
Y2FsbGVkIG9uIG51bGwgb3IgdW5kZWZpbmVkIjsKIAogdGVtcGxhdGU8dW5zaWduZWQgY2hhcmFj
dGVyc0NvdW50Pgogc3RhdGljIEJpdG1hcDwyNTY+IG1ha2VDaGFyYWN0ZXJCaXRtYXAoY29uc3Qg
Y2hhciAoJmNoYXJhY3RlcnMpW2NoYXJhY3RlcnNDb3VudF0pCkBAIC03MDYsMTEgKzcwNiwxMSBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNQcm90b0dldHRlcihFeGVj
U3RhdGUqIGV4ZWMpCiAKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgp
LnRvVGhpcyhleGVjLCBTdHJpY3RNb2RlKTsKICAgICBpZiAodGhpc1ZhbHVlLmlzVW5kZWZpbmVk
T3JOdWxsKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBB
U0NJSUxpdGVyYWwoT2JqZWN0UHJvdG9DYWxsZWRPbk51bGxPclVuZGVmaW5lZEVycm9yKSk7Cisg
ICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgc2NvcGUsIGNyZWF0ZU5vdEFuT2JqZWN0
RXJyb3IoZXhlYywgdGhpc1ZhbHVlKSk7CiAKICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGpz
RHluYW1pY0Nhc3Q8SlNPYmplY3QqPih2bSwgdGhpc1ZhbHVlKTsKICAgICBpZiAoIXRoaXNPYmpl
Y3QpIHsKLSAgICAgICAgSlNPYmplY3QqIHByb3RvdHlwZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpLnN5
bnRoZXNpemVQcm90b3R5cGUoZXhlYyk7CisgICAgICAgIEpTT2JqZWN0KiBwcm90b3R5cGUgPSB0
aGlzVmFsdWUuc3ludGhlc2l6ZVByb3RvdHlwZShleGVjKTsKICAgICAgICAgRVhDRVBUSU9OX0FT
U0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpID09ICFwcm90b3R5cGUpOwogICAgICAgICBpZiAoVU5M
SUtFTFkoIXByb3RvdHlwZSkpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpT
VmFsdWUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdEZ1bmN0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3RGdW5jdGlvbnMuaAppbmRleCA0ZTg1ZWRhZWRhNGYwMDUxNzcxODg1NzRlNTMx
ZDRkNTM1YzQwZWJhLi5iNjc5OWUyNzYyZGI5ZjMxM2Y4ZDQxZTEzMzVlMjljZjBmODIxZTc3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1
bmN0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0RnVuY3Rpb25zLmgKQEAgLTM1LDYgKzM1LDggQEAgY2xhc3MgSlNPYmplY3Q7CiAvLyBGSVhN
RTogVGhlc2UgZnVuY3Rpb25zIHNob3VsZCByZWFsbHkgYmUgaW4gSlNHbG9iYWxPYmplY3QuY3Bw
LCBidXQgcHV0dGluZyB0aGVtIHRoZXJlCiAvLyBpcyBhIDAuNSUgcmVkdWN0aW9uLgogCitleHRl
cm4gY29uc3QgY2hhciogY29uc3QgT2JqZWN0UHJvdG9DYWxsZWRPbk51bGxPclVuZGVmaW5lZEVy
cm9yOworCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNFdmFsKEV4ZWNT
dGF0ZSopOwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jUGFyc2VJbnQo
RXhlY1N0YXRlKik7CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNQYXJz
ZUZsb2F0KEV4ZWNTdGF0ZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCmluZGV4IDIyODcyN2I2ZTUzNDViOWNjZmI1MTg0YjM0
OGQ5MzA5Zjc1NDdiZTYuLmY2NzBiZDMyNDAwNzY0ZjM5YTYxZjM0NGQ0OGNhNmJkMzY4OGNlYjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVj
dG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1
Y3Rvci5jcHAKQEAgLTY3LDcgKzY3LDcgQEAgY29uc3QgQ2xhc3NJbmZvIE9iamVjdENvbnN0cnVj
dG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZJbnRlcm5hbEZ1bmN0aW9uOjpzX2kKIAogLyog
U291cmNlIGZvciBPYmplY3RDb25zdHJ1Y3Rvci5sdXQuaAogQGJlZ2luIG9iamVjdENvbnN0cnVj
dG9yVGFibGUKLSAgZ2V0UHJvdG90eXBlT2YgICAgICAgICAgICBvYmplY3RDb25zdHJ1Y3Rvckdl
dFByb3RvdHlwZU9mICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgZ2V0UHJvdG90
eXBlT2YgICAgICAgICAgICBvYmplY3RDb25zdHJ1Y3RvckdldFByb3RvdHlwZU9mICAgICAgICAg
ICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEgT2JqZWN0R2V0UHJvdG90eXBlT2ZJbnRyaW5zaWMKICAg
c2V0UHJvdG90eXBlT2YgICAgICAgICAgICBvYmplY3RDb25zdHJ1Y3RvclNldFByb3RvdHlwZU9m
ICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKICAgZ2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yICBvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5RGVzY3JpcHRvciAgIERvbnRFbnVt
fEZ1bmN0aW9uIDIKICAgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyBvYmplY3RDb25zdHJ1Y3Rv
ckdldE93blByb3BlcnR5RGVzY3JpcHRvcnMgIERvbnRFbnVtfEZ1bmN0aW9uIDEKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZmxlY3RPYmplY3QuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVmbGVjdE9iamVjdC5jcHAKaW5kZXggNDBlMTlm
M2Q1NDUzZjdiZTBiNjRkMzE2NzVjYjM5YmZiNjMzMDE1Yy4uZGQwZTE4ZTE0NDZiYTI2OWU3OWUw
ZGY0Yjc4ZGY2YTU2ZDNlNzg4YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVmbGVjdE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVmbGVjdE9iamVjdC5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgY29uc3QgQ2xhc3NJbmZvIFJl
ZmxlY3RPYmplY3Q6OnNfaW5mbyA9IHsgIk9iamVjdCIsICZCYXNlOjpzX2luZm8sICZyZWZsZWN0
T2JqZWMKICAgICBkZWxldGVQcm9wZXJ0eSAgICAgICAgICAgSlNCdWlsdGluICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCiAgICAgZ2V0ICAgICAgICAgICAg
ICAgICAgICAgIHJlZmxlY3RPYmplY3RHZXQgICAgICAgICAgICAgICAgICAgICAgRG9udEVudW18
RnVuY3Rpb24gMgogICAgIGdldE93blByb3BlcnR5RGVzY3JpcHRvciByZWZsZWN0T2JqZWN0R2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yIERvbnRFbnVtfEZ1bmN0aW9uIDIKLSAgICBnZXRQcm90b3R5
cGVPZiAgICAgICAgICAgcmVmbGVjdE9iamVjdEdldFByb3RvdHlwZU9mICAgICAgICAgICBEb250
RW51bXxGdW5jdGlvbiAxCisgICAgZ2V0UHJvdG90eXBlT2YgICAgICAgICAgIHJlZmxlY3RPYmpl
Y3RHZXRQcm90b3R5cGVPZiAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMSBSZWZsZWN0R2V0
UHJvdG90eXBlT2ZJbnRyaW5zaWMKICAgICBoYXMgICAgICAgICAgICAgICAgICAgICAgSlNCdWls
dGluICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCiAgICAg
aXNFeHRlbnNpYmxlICAgICAgICAgICAgIHJlZmxlY3RPYmplY3RJc0V4dGVuc2libGUgICAgICAg
ICAgICAgRG9udEVudW18RnVuY3Rpb24gMQogICAgIG93bktleXMgICAgICAgICAgICAgICAgICBy
ZWZsZWN0T2JqZWN0T3duS2V5cyAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA4M2M3M2ZmNzkxYjI4NzU5MzYxMzNjNDdhYzk5NWZhOThmNGRjZjAzLi42MDIwZDRl
MjgxY2FlNGNjMTc4M2ZmODNlYmMyYmVlMDMyMDhmYmIzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMTctMTAtMTAgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAg
ICAgICAgW0pTQ10gX19wcm90b19fIGdldHRlciBzaG91bGQgYmUgZmFzdAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4MDY3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBqcy9vYmplY3QtbGl0ZXJhbC1z
aG9ydGhhbmQtY29uc3RydWN0aW9uLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBqcy9zY3JpcHQt
dGVzdHMvb2JqZWN0LWxpdGVyYWwtc2hvcnRoYW5kLWNvbnN0cnVjdGlvbi5qczoKKyAgICAgICAg
KHNldCAyKToKKyAgICAgICAgKGdldCAxKToKKyAgICAgICAgKiBqcy9zY3JpcHQtdGVzdHMvc2xv
cHB5LWdldHRlci1zZXR0ZXItZ2xvYmFsLW9iamVjdC5qczoKKyAgICAgICAgKiBqcy9zbG9wcHkt
Z2V0dGVyLXNldHRlci1nbG9iYWwtb2JqZWN0LWV4cGVjdGVkLnR4dDoKKwogMjAxNy0xMC0wOSAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIENhbGxpbmcgZmlsZVN5
c3RlbURpcmVjdG9yeUVudHJ5LmdldERpcmVjdG9yeSgpIHdpdGggZW1wdHkgcGF0aCBzaG91bGQg
bm90IGZhaWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL29iamVjdC1saXRlcmFsLXNob3J0
aGFuZC1jb25zdHJ1Y3Rpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvb2JqZWN0LWxp
dGVyYWwtc2hvcnRoYW5kLWNvbnN0cnVjdGlvbi1leHBlY3RlZC50eHQKaW5kZXggZWUxNmI4NTli
YmMyNzI3MjE0ODQ0ZWJhMmYyOTNlZThkODUzZDQ3MC4uNmZiMTc3NWIwNTMxODhmMGZlM2UzOGY1
YTdiNDhkOGI5ZTBjYTE2MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvanMvb2JqZWN0LWxpdGVy
YWwtc2hvcnRoYW5kLWNvbnN0cnVjdGlvbi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
anMvb2JqZWN0LWxpdGVyYWwtc2hvcnRoYW5kLWNvbnN0cnVjdGlvbi1leHBlY3RlZC50eHQKQEAg
LTY0LDcgKzY0LDcgQEAgUEFTUyAhIU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioe3Nl
dCA0Mih2YWx1ZSl7fX0sICc0MicpLnNldCBpcyB0cnVlCiBQQVNTIHRoaXMuX19wcm90b19fID0g
W10gdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQ2Fubm90IHNldCBwcm90b3R5cGUgb2YgaW1t
dXRhYmxlIHByb3RvdHlwZSBvYmplY3QuCiBQQVNTICh7X19wcm90b19fOiB0aGlzLl9fcHJvdG9f
X30pIGluc3RhbmNlb2YgQXJyYXkgaXMgZmFsc2UKIFBBU1MgX19wcm90b19fID0gW10gdGhyZXcg
ZXhjZXB0aW9uIFR5cGVFcnJvcjogT2JqZWN0LnByb3RvdHlwZS5fX3Byb3RvX18gY2FsbGVkIG9u
IG51bGwgb3IgdW5kZWZpbmVkLgotUEFTUyAoe19fcHJvdG9fXzogX19wcm90b19ffSkgaW5zdGFu
Y2VvZiBBcnJheSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBPYmplY3QucHJvdG90eXBlLl9f
cHJvdG9fXyBjYWxsZWQgb24gbnVsbCBvciB1bmRlZmluZWQuCitQQVNTICh7X19wcm90b19fOiBf
X3Byb3RvX199KSBpbnN0YW5jZW9mIEFycmF5IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IHVu
ZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdfX3Byb3RvX18nKS4KIFN5bnRh
eEVycm9ycwogUEFTUyAoe2JyZWFrfSkgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBDYW5u
b3QgdXNlIHRoZSBrZXl3b3JkICdicmVhaycgYXMgYSBzaG9ydGhhbmQgcHJvcGVydHkgbmFtZS4u
CiBQQVNTICh7Y2FzZX0pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogQ2Fubm90IHVzZSB0
aGUga2V5d29yZCAnY2FzZScgYXMgYSBzaG9ydGhhbmQgcHJvcGVydHkgbmFtZS4uCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvb2JqZWN0LWxpdGVyYWwtc2hvcnRoYW5k
LWNvbnN0cnVjdGlvbi5qcyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9vYmplY3QtbGl0
ZXJhbC1zaG9ydGhhbmQtY29uc3RydWN0aW9uLmpzCmluZGV4IDA0NjBiNjZiOTE3YTNlNTJhYTc3
MGM0MWMwZjQ1ZmYyMDU3OGFjNTMuLmQ2MDQ4OTQzMjc2NzFkOWE3MmFiZDA5Zjk0MWE3NTU2OWI1
ZTdhZjkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9vYmplY3QtbGl0
ZXJhbC1zaG9ydGhhbmQtY29uc3RydWN0aW9uLmpzCisrKyBiL0xheW91dFRlc3RzL2pzL3Njcmlw
dC10ZXN0cy9vYmplY3QtbGl0ZXJhbC1zaG9ydGhhbmQtY29uc3RydWN0aW9uLmpzCkBAIC0xMTMs
NyArMTEzLDcgQEAgZnVuY3Rpb24gdGVzdFNob3J0aGFuZENvbnN0cnVjdGlvbk5vdEVxdWl2YWxl
bnQoZXhwcjEsIGV4cHIyKSB7CiBzaG91bGRUaHJvdygidGhpcy5fX3Byb3RvX18gPSBbXSIpOwog
c2hvdWxkQmVGYWxzZSgiKHtfX3Byb3RvX186IHRoaXMuX19wcm90b19ffSkgaW5zdGFuY2VvZiBB
cnJheSIpOwogc2hvdWxkVGhyb3coIl9fcHJvdG9fXyA9IFtdIiwgJyJUeXBlRXJyb3I6IE9iamVj
dC5wcm90b3R5cGUuX19wcm90b19fIGNhbGxlZCBvbiBudWxsIG9yIHVuZGVmaW5lZCInKTsKLXNo
b3VsZFRocm93KCIoe19fcHJvdG9fXzogX19wcm90b19ffSkgaW5zdGFuY2VvZiBBcnJheSIsICci
VHlwZUVycm9yOiBPYmplY3QucHJvdG90eXBlLl9fcHJvdG9fXyBjYWxsZWQgb24gbnVsbCBvciB1
bmRlZmluZWQiJyk7CitzaG91bGRUaHJvdygiKHtfX3Byb3RvX186IF9fcHJvdG9fX30pIGluc3Rh
bmNlb2YgQXJyYXkiLCAnIlR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2
YWx1YXRpbmcgXCdfX3Byb3RvX19cJykiJyk7CiAKIC8vIEtleXdvcmRzIC0gU3ludGF4IEVycm9y
cwogZGVidWcoIlN5bnRheEVycm9ycyIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvc2Ny
aXB0LXRlc3RzL3Nsb3BweS1nZXR0ZXItc2V0dGVyLWdsb2JhbC1vYmplY3QuanMgYi9MYXlvdXRU
ZXN0cy9qcy9zY3JpcHQtdGVzdHMvc2xvcHB5LWdldHRlci1zZXR0ZXItZ2xvYmFsLW9iamVjdC5q
cwppbmRleCBlYmNiZWE5OTlmYzI5MTY4ZWU4OThmOTUyZGZmN2E0MGEzNmE4YzkzLi44ODAzZTZi
OWJlY2EwY2QwY2NjMDdhMzE2MmM1ODMxMzVhOTUyODk1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9qcy9zY3JpcHQtdGVzdHMvc2xvcHB5LWdldHRlci1zZXR0ZXItZ2xvYmFsLW9iamVjdC5qcwor
KysgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvc2xvcHB5LWdldHRlci1zZXR0ZXItZ2xv
YmFsLW9iamVjdC5qcwpAQCAtMjUsMTIgKzI1LDEyIEBACiBzaG91bGROb3RUaHJvdygiT2JqZWN0
LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihPYmplY3QucHJvdG90eXBlLCdfX3Byb3RvX18nKS5n
ZXQoKSIpOwogc2hvdWxkTm90VGhyb3coIk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
T2JqZWN0LnByb3RvdHlwZSwnX19wcm90b19fJykuc2V0KFsnZm9vJ10pIik7CiAKLXNob3VsZFRo
cm93KCIoMCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE9iamVjdC5wcm90b3R5cGUs
J19fcHJvdG9fXycpLmdldCkoKSIsICJcIlR5cGVFcnJvcjogT2JqZWN0LnByb3RvdHlwZS5fX3By
b3RvX18gY2FsbGVkIG9uIG51bGwgb3IgdW5kZWZpbmVkXCIiKTsKK3Nob3VsZFRocm93KCIoMCxP
YmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE9iamVjdC5wcm90b3R5cGUsJ19fcHJvdG9f
XycpLmdldCkoKSIsICJcIlR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2
YWx1YXRpbmcgJygwLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoT2JqZWN0LnByb3Rv
dHlwZSwnX19wcm90b19fJykuZ2V0KSgpJylcIiIpOwogc2hvdWxkVGhyb3coIigwLE9iamVjdC5n
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoT2JqZWN0LnByb3RvdHlwZSwnX19wcm90b19fJykuc2V0
KShbJ2ZvbyddKSIsICJcIlR5cGVFcnJvcjogT2JqZWN0LnByb3RvdHlwZS5fX3Byb3RvX18gY2Fs
bGVkIG9uIG51bGwgb3IgdW5kZWZpbmVkXCIiKTsKIAogCiB2YXIgdG9wX2xldmVsX3Nsb3BweV9n
ZXR0ZXIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE9iamVjdC5wcm90b3R5cGUs
J19fcHJvdG9fXycpLmdldDsKLXNob3VsZFRocm93KCJ0b3BfbGV2ZWxfc2xvcHB5X2dldHRlcigp
OyIsICJcIlR5cGVFcnJvcjogT2JqZWN0LnByb3RvdHlwZS5fX3Byb3RvX18gY2FsbGVkIG9uIG51
bGwgb3IgdW5kZWZpbmVkXCIiKTsKK3Nob3VsZFRocm93KCJ0b3BfbGV2ZWxfc2xvcHB5X2dldHRl
cigpOyIsICJcIlR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRp
bmcgJ3RvcF9sZXZlbF9zbG9wcHlfZ2V0dGVyKCknKVwiIik7CiAKIHZhciB0b3BfbGV2ZWxfc2xv
cHB5X3NldHRlciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoT2JqZWN0LnByb3Rv
dHlwZSwnX19wcm90b19fJykuc2V0Owogc2hvdWxkVGhyb3coInRvcF9sZXZlbF9zbG9wcHlfc2V0
dGVyKFsnZm9vJ10pOyIsICJcIlR5cGVFcnJvcjogT2JqZWN0LnByb3RvdHlwZS5fX3Byb3RvX18g
Y2FsbGVkIG9uIG51bGwgb3IgdW5kZWZpbmVkXCIiKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2pzL3Nsb3BweS1nZXR0ZXItc2V0dGVyLWdsb2JhbC1vYmplY3QtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvanMvc2xvcHB5LWdldHRlci1zZXR0ZXItZ2xvYmFsLW9iamVjdC1leHBlY3RlZC50
eHQKaW5kZXggOTMzOWRkM2FhMzE2NTdkYmZjMmQ1ZTQ4ZjM2NWIyNDI4MDc2NjYxYy4uOGZhYTQ3
NTI2YjYzZTQxNDU0YjNkNjMwODc4ZmRhOTcxNWE4MDBlNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvanMvc2xvcHB5LWdldHRlci1zZXR0ZXItZ2xvYmFsLW9iamVjdC1leHBlY3RlZC50eHQKKysr
IGIvTGF5b3V0VGVzdHMvanMvc2xvcHB5LWdldHRlci1zZXR0ZXItZ2xvYmFsLW9iamVjdC1leHBl
Y3RlZC50eHQKQEAgLTgsOSArOCw5IEBAIFBBU1MgT2JqZWN0LnByb3RvdHlwZS52YWx1ZU9mLmNh
bGwoMyk7IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgogUEFTUyBPYmplY3QucHJvdG90eXBlLnZh
bHVlT2YuY2FsbChudWxsKTsgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogbnVsbCBpcyBub3Qg
YW4gb2JqZWN0IChldmFsdWF0aW5nICdPYmplY3QucHJvdG90eXBlLnZhbHVlT2YuY2FsbChudWxs
KScpLgogUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE9iamVjdC5wcm90b3R5
cGUsJ19fcHJvdG9fXycpLmdldCgpIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgogUEFTUyBPYmpl
Y3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE9iamVjdC5wcm90b3R5cGUsJ19fcHJvdG9fXycp
LnNldChbJ2ZvbyddKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KLVBBU1MgKDAsT2JqZWN0Lmdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihPYmplY3QucHJvdG90eXBlLCdfX3Byb3RvX18nKS5nZXQp
KCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogT2JqZWN0LnByb3RvdHlwZS5fX3Byb3RvX18g
Y2FsbGVkIG9uIG51bGwgb3IgdW5kZWZpbmVkLgorUEFTUyAoMCxPYmplY3QuZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKE9iamVjdC5wcm90b3R5cGUsJ19fcHJvdG9fXycpLmdldCkoKSB0aHJldyBl
eGNlcHRpb24gVHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGlu
ZyAnKDAsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihPYmplY3QucHJvdG90eXBlLCdf
X3Byb3RvX18nKS5nZXQpKCknKS4KIFBBU1MgKDAsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihPYmplY3QucHJvdG90eXBlLCdfX3Byb3RvX18nKS5zZXQpKFsnZm9vJ10pIHRocmV3IGV4
Y2VwdGlvbiBUeXBlRXJyb3I6IE9iamVjdC5wcm90b3R5cGUuX19wcm90b19fIGNhbGxlZCBvbiBu
dWxsIG9yIHVuZGVmaW5lZC4KLVBBU1MgdG9wX2xldmVsX3Nsb3BweV9nZXR0ZXIoKTsgdGhyZXcg
ZXhjZXB0aW9uIFR5cGVFcnJvcjogT2JqZWN0LnByb3RvdHlwZS5fX3Byb3RvX18gY2FsbGVkIG9u
IG51bGwgb3IgdW5kZWZpbmVkLgorUEFTUyB0b3BfbGV2ZWxfc2xvcHB5X2dldHRlcigpOyB0aHJl
dyBleGNlcHRpb24gVHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVh
dGluZyAndG9wX2xldmVsX3Nsb3BweV9nZXR0ZXIoKScpLgogUEFTUyB0b3BfbGV2ZWxfc2xvcHB5
X3NldHRlcihbJ2ZvbyddKTsgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogT2JqZWN0LnByb3Rv
dHlwZS5fX3Byb3RvX18gY2FsbGVkIG9uIG51bGwgb3IgdW5kZWZpbmVkLgogUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pT
VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGUwNTQzN2E3MGYzZjYzODRkYjdiOTAyZTY4M2U2ZTg0MDI0
ZWEyNWYuLjE0OGRlNjQ0NzQzYTJkY2U4YjU5ZGRkNTU0M2NkYWE0ZTYyNTA4OGUgMTAwNjQ0Ci0t
LSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NzAgQEAKKzIwMTctMTAtMTAgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+
CisKKyAgICAgICAgW0pTQ10gX19wcm90b19fIGdldHRlciBzaG91bGQgYmUgZmFzdAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4MDY3CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdHJlc3MvZGZnLW9i
amVjdC1wcm90by1hY2Nlc3Nvci5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAg
ICAgIChzaG91bGRUaHJvdyk6CisgICAgICAgICh0YXJnZXQpOgorICAgICAgICAqIHN0cmVzcy9k
Zmctb2JqZWN0LXByb3RvLWdldHRlci5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6Cisg
ICAgICAgIChzaG91bGRUaHJvdyk6CisgICAgICAgICh0YXJnZXQpOgorICAgICAgICAqIHN0cmVz
cy9kZmctb2JqZWN0LXByb3RvdHlwZS1vZi5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6
CisgICAgICAgIChzaG91bGRUaHJvdyk6CisgICAgICAgICh0YXJnZXQpOgorICAgICAgICAqIHN0
cmVzcy9kZmctcmVmbGVjdC1nZXQtcHJvdG90eXBlLW9mLmpzOiBBZGRlZC4KKyAgICAgICAgKHNo
b3VsZEJlKToKKyAgICAgICAgKHNob3VsZFRocm93KToKKyAgICAgICAgKHRhcmdldCk6CisgICAg
ICAgICogc3RyZXNzL29iamVjdC1nZXQtcHJvdG90eXBlLW9mLWZpbHRlcmVkLmpzOiBBZGRlZC4K
KyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHNob3VsZFRocm93KToKKyAgICAgICAgKHRh
cmdldCk6CisgICAgICAgIChpLkNvY29hKToKKyAgICAgICAgKiBzdHJlc3Mvb2JqZWN0LWdldC1w
cm90b3R5cGUtb2YtbW9uby1wcm90by5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6Cisg
ICAgICAgIChtYWtlUG9seVByb3RvT2JqZWN0LmZvby5DKToKKyAgICAgICAgKG1ha2VQb2x5UHJv
dG9PYmplY3QuZm9vKToKKyAgICAgICAgKG1ha2VQb2x5UHJvdG9PYmplY3QpOgorICAgICAgICAo
dGFyZ2V0KToKKyAgICAgICAgKiBzdHJlc3Mvb2JqZWN0LWdldC1wcm90b3R5cGUtb2YtcG9seS1t
b25vLXByb3RvLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKG1ha2VQ
b2x5UHJvdG9PYmplY3QuZm9vLkMpOgorICAgICAgICAobWFrZVBvbHlQcm90b09iamVjdC5mb28p
OgorICAgICAgICAobWFrZVBvbHlQcm90b09iamVjdCk6CisgICAgICAgICh0YXJnZXQpOgorICAg
ICAgICAqIHN0cmVzcy9vYmplY3QtZ2V0LXByb3RvdHlwZS1vZi1wb2x5LXByb3RvLmpzOiBBZGRl
ZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKG1ha2VQb2x5UHJvdG9PYmplY3QuZm9v
LkMpOgorICAgICAgICAobWFrZVBvbHlQcm90b09iamVjdC5mb28pOgorICAgICAgICAobWFrZVBv
bHlQcm90b09iamVjdCk6CisgICAgICAgICh0YXJnZXQpOgorICAgICAgICAqIHN0cmVzcy9vYmpl
Y3QtcHJvdG8tZ2V0dGVyLWZpbHRlcmVkLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToK
KyAgICAgICAgKHNob3VsZFRocm93KToKKyAgICAgICAgKHRhcmdldCk6CisgICAgICAgIChpLkNv
Y29hKToKKyAgICAgICAgKiBzdHJlc3Mvb2JqZWN0LXByb3RvLWdldHRlci1wb2x5LW1vbm8tcHJv
dG8uanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAobWFrZVBvbHlQcm90
b09iamVjdC5mb28uQyk6CisgICAgICAgIChtYWtlUG9seVByb3RvT2JqZWN0LmZvbyk6CisgICAg
ICAgIChtYWtlUG9seVByb3RvT2JqZWN0KToKKyAgICAgICAgKHRhcmdldCk6CisgICAgICAgICog
c3RyZXNzL29iamVjdC1wcm90by1nZXR0ZXItcG9seS1wcm90by5qczogQWRkZWQuCisgICAgICAg
IChzaG91bGRCZSk6CisgICAgICAgIChtYWtlUG9seVByb3RvT2JqZWN0LmZvby5DKToKKyAgICAg
ICAgKG1ha2VQb2x5UHJvdG9PYmplY3QuZm9vKToKKyAgICAgICAgKG1ha2VQb2x5UHJvdG9PYmpl
Y3QpOgorICAgICAgICAodGFyZ2V0KToKKyAgICAgICAgKiBzdHJlc3Mvc3RyaW5nLXByb3RvLmpz
OiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHRhcmdldCk6CisKIDIwMTct
MTAtMDkgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAg
YGFzeW5jYCBzaG91bGQgYmUgYWJsZSB0byBiZSB1c2VkIGFzIGFuIGltcG9ydGVkIGJpbmRpbmcg
bmFtZQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZGZnLW9iamVjdC1wcm90by1hY2Nlc3Nv
ci5qcyBiL0pTVGVzdHMvc3RyZXNzL2RmZy1vYmplY3QtcHJvdG8tYWNjZXNzb3IuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMGY2ZGI3Yjc0ZTBhMGZhNjY3M2NiZjEyMjkwNmI4MTZlYjJlZTgyMwotLS0gL2Rldi9u
dWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2RmZy1vYmplY3QtcHJvdG8tYWNjZXNzb3IuanMKQEAg
LTAsMCArMSwxMTUgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpCit7Cisg
ICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFk
IHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKworZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJy
b3JNZXNzYWdlKSB7CisgICAgdmFyIGVycm9yVGhyb3duID0gZmFsc2U7CisgICAgdmFyIGVycm9y
ID0gbnVsbDsKKyAgICB0cnkgeworICAgICAgICBmdW5jKCk7CisgICAgfSBjYXRjaCAoZSkgewor
ICAgICAgICBlcnJvclRocm93biA9IHRydWU7CisgICAgICAgIGVycm9yID0gZTsKKyAgICB9Cisg
ICAgaWYgKCFlcnJvclRocm93bikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdub3QgdGhyb3du
Jyk7CisgICAgaWYgKFN0cmluZyhlcnJvcikgIT09IGVycm9yTWVzc2FnZSkKKyAgICAgICAgdGhy
b3cgbmV3IEVycm9yKGBiYWQgZXJyb3I6ICR7U3RyaW5nKGVycm9yKX1gKTsKK30KKworKGZ1bmN0
aW9uICgpIHsKKyAgICBmdW5jdGlvbiB0YXJnZXQob2JqZWN0KQorICAgIHsKKyAgICAgICAgcmV0
dXJuIG9iamVjdC5fX3Byb3RvX187CisgICAgfQorICAgIG5vSW5saW5lKHRhcmdldCk7CisKKyAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IDFlMzsgKytpKQorICAgICAgICBzaG91bGRCZSh0YXJnZXQo
e30pLCBPYmplY3QucHJvdG90eXBlKTsKK30oKSk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAgZnVu
Y3Rpb24gdGFyZ2V0KG9iamVjdCkKKyAgICB7CisgICAgICAgIHJldHVybiBvYmplY3QuX19wcm90
b19fOworICAgIH0KKyAgICBub0lubGluZSh0YXJnZXQpOworCisgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCAxZTM7ICsraSkgeworICAgICAgICBzaG91bGRUaHJvdygoKSA9PiB0YXJnZXQobnVsbCks
IGBUeXBlRXJyb3I6IG51bGwgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnb2JqZWN0Ll9f
cHJvdG9fXycpYCk7CisgICAgICAgIHNob3VsZFRocm93KCgpID0+IHRhcmdldCh1bmRlZmluZWQp
LCBgVHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnb2Jq
ZWN0Ll9fcHJvdG9fXycpYCk7CisgICAgfQorfSgpKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBm
dW5jdGlvbiB0YXJnZXQob2JqZWN0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIG9iamVjdC5fX3By
b3RvX187CisgICAgfQorICAgIG5vSW5saW5lKHRhcmdldCk7CisKKyAgICBmb3IgKHZhciBpID0g
MDsgaSA8IDFlMzsgKytpKQorICAgICAgICBzaG91bGRCZSh0YXJnZXQoIkNvY29hIiksIFN0cmlu
Zy5wcm90b3R5cGUpOworfSgpKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiB0YXJn
ZXQob2JqZWN0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIG9iamVjdC5fX3Byb3RvX187CisgICAg
fQorICAgIG5vSW5saW5lKHRhcmdldCk7CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDFlMzsg
KytpKQorICAgICAgICBzaG91bGRCZSh0YXJnZXQoNDIpLCBOdW1iZXIucHJvdG90eXBlKTsKK30o
KSk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAgZnVuY3Rpb24gdGFyZ2V0KG9iamVjdCkKKyAgICB7
CisgICAgICAgIHJldHVybiBvYmplY3QuX19wcm90b19fOworICAgIH0KKyAgICBub0lubGluZSh0
YXJnZXQpOworCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxZTM7ICsraSkKKyAgICAgICAgc2hv
dWxkQmUodGFyZ2V0KDQyLjE5NSksIE51bWJlci5wcm90b3R5cGUpOworfSgpKTsKKworKGZ1bmN0
aW9uICgpIHsKKyAgICBmdW5jdGlvbiB0YXJnZXQob2JqZWN0KQorICAgIHsKKyAgICAgICAgcmV0
dXJuIG9iamVjdC5fX3Byb3RvX187CisgICAgfQorICAgIG5vSW5saW5lKHRhcmdldCk7CisKKyAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IDFlMzsgKytpKQorICAgICAgICBzaG91bGRCZSh0YXJnZXQo
dHJ1ZSksIEJvb2xlYW4ucHJvdG90eXBlKTsKK30oKSk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAg
ZnVuY3Rpb24gdGFyZ2V0KG9iamVjdCkKKyAgICB7CisgICAgICAgIHJldHVybiBvYmplY3QuX19w
cm90b19fOworICAgIH0KKyAgICBub0lubGluZSh0YXJnZXQpOworCisgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCAxZTM7ICsraSkKKyAgICAgICAgc2hvdWxkQmUodGFyZ2V0KFN5bWJvbCgiQ29jb2Ei
KSksIFN5bWJvbC5wcm90b3R5cGUpOworfSgpKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5j
dGlvbiB0YXJnZXQob2JqZWN0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIG9iamVjdC5fX3Byb3Rv
X187CisgICAgfQorICAgIG5vSW5saW5lKHRhcmdldCk7CisKKyAgICBmb3IgKHZhciBpID0gMDsg
aSA8IDFlMzsgKytpKSB7CisgICAgICAgIHNob3VsZEJlKHRhcmdldCgiQ29jb2EiKSwgU3RyaW5n
LnByb3RvdHlwZSk7CisgICAgICAgIHNob3VsZEJlKHRhcmdldCg0MiksIE51bWJlci5wcm90b3R5
cGUpOworICAgICAgICBzaG91bGRCZSh0YXJnZXQoNDIuMTk1KSwgTnVtYmVyLnByb3RvdHlwZSk7
CisgICAgICAgIHNob3VsZEJlKHRhcmdldCh0cnVlKSwgQm9vbGVhbi5wcm90b3R5cGUpOworICAg
ICAgICBzaG91bGRCZSh0YXJnZXQoU3ltYm9sKCJDb2NvYSIpKSwgU3ltYm9sLnByb3RvdHlwZSk7
CisgICAgfQorfSgpKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2RmZy1vYmplY3QtcHJv
dG8tZ2V0dGVyLmpzIGIvSlNUZXN0cy9zdHJlc3MvZGZnLW9iamVjdC1wcm90by1nZXR0ZXIuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uOWEwNzE2ZDVhYTViMWNlYjdmNzhlNWQ0NGM5OTU0ZDlmZTUwZGEzYQotLS0g
L2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2RmZy1vYmplY3QtcHJvdG8tZ2V0dGVyLmpz
CkBAIC0wLDAgKzEsMTE3IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKQor
eworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
J2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMs
IGVycm9yTWVzc2FnZSkgeworICAgIHZhciBlcnJvclRocm93biA9IGZhbHNlOworICAgIHZhciBl
cnJvciA9IG51bGw7CisgICAgdHJ5IHsKKyAgICAgICAgZnVuYygpOworICAgIH0gY2F0Y2ggKGUp
IHsKKyAgICAgICAgZXJyb3JUaHJvd24gPSB0cnVlOworICAgICAgICBlcnJvciA9IGU7CisgICAg
fQorICAgIGlmICghZXJyb3JUaHJvd24pCisgICAgICAgIHRocm93IG5ldyBFcnJvcignbm90IHRo
cm93bicpOworICAgIGlmIChTdHJpbmcoZXJyb3IpICE9PSBlcnJvck1lc3NhZ2UpCisgICAgICAg
IHRocm93IG5ldyBFcnJvcihgYmFkIGVycm9yOiAke1N0cmluZyhlcnJvcil9YCk7Cit9CisKK3Zh
ciBwcm90b0Z1bmN0aW9uID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihPYmplY3Qu
cHJvdG90eXBlLCAiX19wcm90b19fIikuZ2V0OworCisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0
aW9uIHRhcmdldChvYmplY3QpCisgICAgeworICAgICAgICByZXR1cm4gcHJvdG9GdW5jdGlvbi5j
YWxsKG9iamVjdCk7CisgICAgfQorICAgIG5vSW5saW5lKHRhcmdldCk7CisKKyAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IDFlMzsgKytpKQorICAgICAgICBzaG91bGRCZSh0YXJnZXQoe30pLCBPYmpl
Y3QucHJvdG90eXBlKTsKK30oKSk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAgZnVuY3Rpb24gdGFy
Z2V0KG9iamVjdCkKKyAgICB7CisgICAgICAgIHJldHVybiBwcm90b0Z1bmN0aW9uLmNhbGwob2Jq
ZWN0KTsKKyAgICB9CisgICAgbm9JbmxpbmUodGFyZ2V0KTsKKworICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgMWUzOyArK2kpIHsKKyAgICAgICAgc2hvdWxkVGhyb3coKCkgPT4gdGFyZ2V0KG51bGwp
LCBgVHlwZUVycm9yOiBudWxsIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ3Byb3RvRnVu
Y3Rpb24uY2FsbChvYmplY3QpJylgKTsKKyAgICAgICAgc2hvdWxkVGhyb3coKCkgPT4gdGFyZ2V0
KHVuZGVmaW5lZCksIGBUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFs
dWF0aW5nICdwcm90b0Z1bmN0aW9uLmNhbGwob2JqZWN0KScpYCk7CisgICAgfQorfSgpKTsKKwor
KGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiB0YXJnZXQob2JqZWN0KQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIHByb3RvRnVuY3Rpb24uY2FsbChvYmplY3QpOworICAgIH0KKyAgICBub0lubGlu
ZSh0YXJnZXQpOworCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxZTM7ICsraSkKKyAgICAgICAg
c2hvdWxkQmUodGFyZ2V0KCJDb2NvYSIpLCBTdHJpbmcucHJvdG90eXBlKTsKK30oKSk7CisKKyhm
dW5jdGlvbiAoKSB7CisgICAgZnVuY3Rpb24gdGFyZ2V0KG9iamVjdCkKKyAgICB7CisgICAgICAg
IHJldHVybiBwcm90b0Z1bmN0aW9uLmNhbGwob2JqZWN0KTsKKyAgICB9CisgICAgbm9JbmxpbmUo
dGFyZ2V0KTsKKworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMWUzOyArK2kpCisgICAgICAgIHNo
b3VsZEJlKHRhcmdldCg0MiksIE51bWJlci5wcm90b3R5cGUpOworfSgpKTsKKworKGZ1bmN0aW9u
ICgpIHsKKyAgICBmdW5jdGlvbiB0YXJnZXQob2JqZWN0KQorICAgIHsKKyAgICAgICAgcmV0dXJu
IHByb3RvRnVuY3Rpb24uY2FsbChvYmplY3QpOworICAgIH0KKyAgICBub0lubGluZSh0YXJnZXQp
OworCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxZTM7ICsraSkKKyAgICAgICAgc2hvdWxkQmUo
dGFyZ2V0KDQyLjE5NSksIE51bWJlci5wcm90b3R5cGUpOworfSgpKTsKKworKGZ1bmN0aW9uICgp
IHsKKyAgICBmdW5jdGlvbiB0YXJnZXQob2JqZWN0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHBy
b3RvRnVuY3Rpb24uY2FsbChvYmplY3QpOworICAgIH0KKyAgICBub0lubGluZSh0YXJnZXQpOwor
CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxZTM7ICsraSkKKyAgICAgICAgc2hvdWxkQmUodGFy
Z2V0KHRydWUpLCBCb29sZWFuLnByb3RvdHlwZSk7Cit9KCkpOworCisoZnVuY3Rpb24gKCkgewor
ICAgIGZ1bmN0aW9uIHRhcmdldChvYmplY3QpCisgICAgeworICAgICAgICByZXR1cm4gcHJvdG9G
dW5jdGlvbi5jYWxsKG9iamVjdCk7CisgICAgfQorICAgIG5vSW5saW5lKHRhcmdldCk7CisKKyAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IDFlMzsgKytpKQorICAgICAgICBzaG91bGRCZSh0YXJnZXQo
U3ltYm9sKCJDb2NvYSIpKSwgU3ltYm9sLnByb3RvdHlwZSk7Cit9KCkpOworCisoZnVuY3Rpb24g
KCkgeworICAgIGZ1bmN0aW9uIHRhcmdldChvYmplY3QpCisgICAgeworICAgICAgICByZXR1cm4g
cHJvdG9GdW5jdGlvbi5jYWxsKG9iamVjdCk7CisgICAgfQorICAgIG5vSW5saW5lKHRhcmdldCk7
CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDFlMzsgKytpKSB7CisgICAgICAgIHNob3VsZEJl
KHRhcmdldCgiQ29jb2EiKSwgU3RyaW5nLnByb3RvdHlwZSk7CisgICAgICAgIHNob3VsZEJlKHRh
cmdldCg0MiksIE51bWJlci5wcm90b3R5cGUpOworICAgICAgICBzaG91bGRCZSh0YXJnZXQoNDIu
MTk1KSwgTnVtYmVyLnByb3RvdHlwZSk7CisgICAgICAgIHNob3VsZEJlKHRhcmdldCh0cnVlKSwg
Qm9vbGVhbi5wcm90b3R5cGUpOworICAgICAgICBzaG91bGRCZSh0YXJnZXQoU3ltYm9sKCJDb2Nv
YSIpKSwgU3ltYm9sLnByb3RvdHlwZSk7CisgICAgfQorfSgpKTsKZGlmZiAtLWdpdCBhL0pTVGVz
dHMvc3RyZXNzL2RmZy1vYmplY3QtcHJvdG90eXBlLW9mLmpzIGIvSlNUZXN0cy9zdHJlc3MvZGZn
LW9iamVjdC1wcm90b3R5cGUtb2YuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGUyNjg0ZDc5ODkxYWVmY2YzODY4
NWY0ZjcxNmZmMDJkOTg4MDY0NQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2Rm
Zy1vYmplY3QtcHJvdG90eXBlLW9mLmpzCkBAIC0wLDAgKzEsMTE1IEBACitmdW5jdGlvbiBzaG91
bGRCZShhY3R1YWwsIGV4cGVjdGVkKQoreworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQor
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK2Z1
bmN0aW9uIHNob3VsZFRocm93KGZ1bmMsIGVycm9yTWVzc2FnZSkgeworICAgIHZhciBlcnJvclRo
cm93biA9IGZhbHNlOworICAgIHZhciBlcnJvciA9IG51bGw7CisgICAgdHJ5IHsKKyAgICAgICAg
ZnVuYygpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZXJyb3JUaHJvd24gPSB0cnVlOwor
ICAgICAgICBlcnJvciA9IGU7CisgICAgfQorICAgIGlmICghZXJyb3JUaHJvd24pCisgICAgICAg
IHRocm93IG5ldyBFcnJvcignbm90IHRocm93bicpOworICAgIGlmIChTdHJpbmcoZXJyb3IpICE9
PSBlcnJvck1lc3NhZ2UpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIGVycm9yOiAke1N0
cmluZyhlcnJvcil9YCk7Cit9CisKKyhmdW5jdGlvbiAoKSB7CisgICAgZnVuY3Rpb24gdGFyZ2V0
KG9iamVjdCkKKyAgICB7CisgICAgICAgIHJldHVybiBPYmplY3QuZ2V0UHJvdG90eXBlT2Yob2Jq
ZWN0KTsKKyAgICB9CisgICAgbm9JbmxpbmUodGFyZ2V0KTsKKworICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgMWUzOyArK2kpCisgICAgICAgIHNob3VsZEJlKHRhcmdldCh7fSksIE9iamVjdC5wcm90
b3R5cGUpOworfSgpKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiB0YXJnZXQob2Jq
ZWN0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIE9iamVjdC5nZXRQcm90b3R5cGVPZihvYmplY3Qp
OworICAgIH0KKyAgICBub0lubGluZSh0YXJnZXQpOworCisgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCAxZTM7ICsraSkgeworICAgICAgICBzaG91bGRUaHJvdygoKSA9PiB0YXJnZXQobnVsbCksIGBU
eXBlRXJyb3I6IG51bGwgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnT2JqZWN0LmdldFBy
b3RvdHlwZU9mKG9iamVjdCknKWApOworICAgICAgICBzaG91bGRUaHJvdygoKSA9PiB0YXJnZXQo
dW5kZWZpbmVkKSwgYFR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1
YXRpbmcgJ09iamVjdC5nZXRQcm90b3R5cGVPZihvYmplY3QpJylgKTsKKyAgICB9Cit9KCkpOwor
CisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9uIHRhcmdldChvYmplY3QpCisgICAgeworICAg
ICAgICByZXR1cm4gT2JqZWN0LmdldFByb3RvdHlwZU9mKG9iamVjdCk7CisgICAgfQorICAgIG5v
SW5saW5lKHRhcmdldCk7CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDFlMzsgKytpKQorICAg
ICAgICBzaG91bGRCZSh0YXJnZXQoIkNvY29hIiksIFN0cmluZy5wcm90b3R5cGUpOworfSgpKTsK
KworKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiB0YXJnZXQob2JqZWN0KQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIE9iamVjdC5nZXRQcm90b3R5cGVPZihvYmplY3QpOworICAgIH0KKyAgICBu
b0lubGluZSh0YXJnZXQpOworCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxZTM7ICsraSkKKyAg
ICAgICAgc2hvdWxkQmUodGFyZ2V0KDQyKSwgTnVtYmVyLnByb3RvdHlwZSk7Cit9KCkpOworCiso
ZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9uIHRhcmdldChvYmplY3QpCisgICAgeworICAgICAg
ICByZXR1cm4gT2JqZWN0LmdldFByb3RvdHlwZU9mKG9iamVjdCk7CisgICAgfQorICAgIG5vSW5s
aW5lKHRhcmdldCk7CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDFlMzsgKytpKQorICAgICAg
ICBzaG91bGRCZSh0YXJnZXQoNDIuMTk1KSwgTnVtYmVyLnByb3RvdHlwZSk7Cit9KCkpOworCiso
ZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9uIHRhcmdldChvYmplY3QpCisgICAgeworICAgICAg
ICByZXR1cm4gT2JqZWN0LmdldFByb3RvdHlwZU9mKG9iamVjdCk7CisgICAgfQorICAgIG5vSW5s
aW5lKHRhcmdldCk7CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDFlMzsgKytpKQorICAgICAg
ICBzaG91bGRCZSh0YXJnZXQodHJ1ZSksIEJvb2xlYW4ucHJvdG90eXBlKTsKK30oKSk7CisKKyhm
dW5jdGlvbiAoKSB7CisgICAgZnVuY3Rpb24gdGFyZ2V0KG9iamVjdCkKKyAgICB7CisgICAgICAg
IHJldHVybiBPYmplY3QuZ2V0UHJvdG90eXBlT2Yob2JqZWN0KTsKKyAgICB9CisgICAgbm9Jbmxp
bmUodGFyZ2V0KTsKKworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMWUzOyArK2kpCisgICAgICAg
IHNob3VsZEJlKHRhcmdldChTeW1ib2woIkNvY29hIikpLCBTeW1ib2wucHJvdG90eXBlKTsKK30o
KSk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAgZnVuY3Rpb24gdGFyZ2V0KG9iamVjdCkKKyAgICB7
CisgICAgICAgIHJldHVybiBPYmplY3QuZ2V0UHJvdG90eXBlT2Yob2JqZWN0KTsKKyAgICB9Cisg
ICAgbm9JbmxpbmUodGFyZ2V0KTsKKworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMWUzOyArK2kp
IHsKKyAgICAgICAgc2hvdWxkQmUodGFyZ2V0KCJDb2NvYSIpLCBTdHJpbmcucHJvdG90eXBlKTsK
KyAgICAgICAgc2hvdWxkQmUodGFyZ2V0KDQyKSwgTnVtYmVyLnByb3RvdHlwZSk7CisgICAgICAg
IHNob3VsZEJlKHRhcmdldCg0Mi4xOTUpLCBOdW1iZXIucHJvdG90eXBlKTsKKyAgICAgICAgc2hv
dWxkQmUodGFyZ2V0KHRydWUpLCBCb29sZWFuLnByb3RvdHlwZSk7CisgICAgICAgIHNob3VsZEJl
KHRhcmdldChTeW1ib2woIkNvY29hIikpLCBTeW1ib2wucHJvdG90eXBlKTsKKyAgICB9Cit9KCkp
OwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZGZnLXJlZmxlY3QtZ2V0LXByb3RvdHlwZS1v
Zi5qcyBiL0pTVGVzdHMvc3RyZXNzL2RmZy1yZWZsZWN0LWdldC1wcm90b3R5cGUtb2YuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uN2M4ODhmZjkwMjE1ZjY5ODViMDIxNDg2MjE4ZWE0NGFlZjM4MmVkMQotLS0gL2Rl
di9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2RmZy1yZWZsZWN0LWdldC1wcm90b3R5cGUtb2Yu
anMKQEAgLTAsMCArMSw1OCBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkK
K3sKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9y
KCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCitmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5j
LCBlcnJvck1lc3NhZ2UpIHsKKyAgICB2YXIgZXJyb3JUaHJvd24gPSBmYWxzZTsKKyAgICB2YXIg
ZXJyb3IgPSBudWxsOworICAgIHRyeSB7CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChl
KSB7CisgICAgICAgIGVycm9yVGhyb3duID0gdHJ1ZTsKKyAgICAgICAgZXJyb3IgPSBlOworICAg
IH0KKyAgICBpZiAoIWVycm9yVGhyb3duKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCB0
aHJvd24nKTsKKyAgICBpZiAoU3RyaW5nKGVycm9yKSAhPT0gZXJyb3JNZXNzYWdlKQorICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoYGJhZCBlcnJvcjogJHtTdHJpbmcoZXJyb3IpfWApOworfQorCiso
ZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9uIHRhcmdldChvYmplY3QpCisgICAgeworICAgICAg
ICByZXR1cm4gUmVmbGVjdC5nZXRQcm90b3R5cGVPZihvYmplY3QpOworICAgIH0KKyAgICBub0lu
bGluZSh0YXJnZXQpOworCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxZTM7ICsraSkKKyAgICAg
ICAgc2hvdWxkQmUodGFyZ2V0KHt9KSwgT2JqZWN0LnByb3RvdHlwZSk7Cit9KCkpOworCisoZnVu
Y3Rpb24gKCkgeworICAgIGZ1bmN0aW9uIHRhcmdldChvYmplY3QpCisgICAgeworICAgICAgICBy
ZXR1cm4gUmVmbGVjdC5nZXRQcm90b3R5cGVPZihvYmplY3QpOworICAgIH0KKyAgICBub0lubGlu
ZSh0YXJnZXQpOworCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxZTM7ICsraSkgeworICAgICAg
ICBzaG91bGRUaHJvdygoKSA9PiB0YXJnZXQobnVsbCksIGBUeXBlRXJyb3I6IFJlZmxlY3QuZ2V0
UHJvdG90eXBlT2YgcmVxdWlyZXMgdGhlIGZpcnN0IGFyZ3VtZW50IGJlIGFuIG9iamVjdGApOwor
ICAgICAgICBzaG91bGRUaHJvdygoKSA9PiB0YXJnZXQodW5kZWZpbmVkKSwgYFR5cGVFcnJvcjog
UmVmbGVjdC5nZXRQcm90b3R5cGVPZiByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYW4g
b2JqZWN0YCk7CisgICAgfQorfSgpKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiB0
YXJnZXQob2JqZWN0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIFJlZmxlY3QuZ2V0UHJvdG90eXBl
T2Yob2JqZWN0KTsKKyAgICB9CisgICAgbm9JbmxpbmUodGFyZ2V0KTsKKworICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgMWUzOyArK2kpIHsKKyAgICAgICAgc2hvdWxkVGhyb3coKCkgPT4gdGFyZ2V0
KCJDb2NvYSIpLCBgVHlwZUVycm9yOiBSZWZsZWN0LmdldFByb3RvdHlwZU9mIHJlcXVpcmVzIHRo
ZSBmaXJzdCBhcmd1bWVudCBiZSBhbiBvYmplY3RgKTsKKyAgICAgICAgc2hvdWxkVGhyb3coKCkg
PT4gdGFyZ2V0KDQyKSwgYFR5cGVFcnJvcjogUmVmbGVjdC5nZXRQcm90b3R5cGVPZiByZXF1aXJl
cyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYW4gb2JqZWN0YCk7CisgICAgICAgIHNob3VsZFRocm93
KCgpID0+IHRhcmdldCh0cnVlKSwgYFR5cGVFcnJvcjogUmVmbGVjdC5nZXRQcm90b3R5cGVPZiBy
ZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYW4gb2JqZWN0YCk7CisgICAgfQorfSgpKTsK
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL29iamVjdC1nZXQtcHJvdG90eXBlLW9mLWZpbHRl
cmVkLmpzIGIvSlNUZXN0cy9zdHJlc3Mvb2JqZWN0LWdldC1wcm90b3R5cGUtb2YtZmlsdGVyZWQu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZTFhMDgwOGQwOTgxYmYzNjY5ZmVjOWYxN2FmMDE5ZGUwMzI5ZjFhMgot
LS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL29iamVjdC1nZXQtcHJvdG90eXBlLW9m
LWZpbHRlcmVkLmpzCkBAIC0wLDAgKzEsNjQgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwg
ZXhwZWN0ZWQpCit7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93
IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKworZnVuY3Rpb24gc2hvdWxk
VGhyb3coZnVuYywgZXJyb3JNZXNzYWdlKSB7CisgICAgdmFyIGVycm9yVGhyb3duID0gZmFsc2U7
CisgICAgdmFyIGVycm9yID0gbnVsbDsKKyAgICB0cnkgeworICAgICAgICBmdW5jKCk7CisgICAg
fSBjYXRjaCAoZSkgeworICAgICAgICBlcnJvclRocm93biA9IHRydWU7CisgICAgICAgIGVycm9y
ID0gZTsKKyAgICB9CisgICAgaWYgKCFlcnJvclRocm93bikKKyAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCdub3QgdGhyb3duJyk7CisgICAgaWYgKFN0cmluZyhlcnJvcikgIT09IGVycm9yTWVzc2Fn
ZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgZXJyb3I6ICR7U3RyaW5nKGVycm9yKX1g
KTsKK30KKworLy8gSW4gdGhpcyBjYXNlLCB3ZSBjYW5ub3QgaGFuZGxlIGl0IGFzIEdldFByb3Rv
dHlwZU9mIHNpbmNlIEdldEJ5SWQgaXMgb3BhcXVlLgorCisoZnVuY3Rpb24gKCkgeworICAgIGZ1
bmN0aW9uIHRhcmdldChvYmplY3QpCisgICAgeworICAgICAgICByZXR1cm4gT2JqZWN0LmdldFBy
b3RvdHlwZU9mKG9iamVjdCk7CisgICAgfQorICAgIG5vSW5saW5lKHRhcmdldCk7CisKKyAgICBm
b3IgKHZhciBpID0gMDsgaSA8IDFlNDsgKytpKSB7CisgICAgICAgIHZhciBvYmplY3QgPSB7fTsK
KyAgICAgICAgb2JqZWN0W2BDb2NvYSR7aX1gXSA9IGBDb2NvYWA7CisgICAgICAgIHNob3VsZEJl
KHRhcmdldChvYmplY3QpLCBPYmplY3QucHJvdG90eXBlKTsKKyAgICB9Cit9KCkpOworCisoZnVu
Y3Rpb24gKCkgeworICAgIGZ1bmN0aW9uIHRhcmdldChvYmplY3QpCisgICAgeworICAgICAgICBy
ZXR1cm4gT2JqZWN0LmdldFByb3RvdHlwZU9mKG9iamVjdCk7CisgICAgfQorICAgIG5vSW5saW5l
KHRhcmdldCk7CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDFlNDsgKytpKSB7CisgICAgICAg
IHZhciBhcnJheSA9IFtdOworICAgICAgICBhcnJheVtgQ29jb2Eke2l9YF0gPSBgQ29jb2FgOwor
ICAgICAgICBzaG91bGRCZSh0YXJnZXQoYXJyYXkpLCBBcnJheS5wcm90b3R5cGUpOworICAgIH0K
K30oKSk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAgZnVuY3Rpb24gdGFyZ2V0KG9iamVjdCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBPYmplY3QuZ2V0UHJvdG90eXBlT2Yob2JqZWN0KTsKKyAgICB9
CisgICAgbm9JbmxpbmUodGFyZ2V0KTsKKworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMWU0OyAr
K2kpIHsKKyAgICAgICAgZnVuY3Rpb24gQ29jb2EoKSB7IH0KKyAgICAgICAgQ29jb2FbYENvY29h
JHtpfWBdID0gYENvY29hYDsKKyAgICAgICAgc2hvdWxkQmUodGFyZ2V0KENvY29hKSwgRnVuY3Rp
b24ucHJvdG90eXBlKTsKKyAgICB9Cit9KCkpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mv
b2JqZWN0LWdldC1wcm90b3R5cGUtb2YtbW9uby1wcm90by5qcyBiL0pTVGVzdHMvc3RyZXNzL29i
amVjdC1nZXQtcHJvdG90eXBlLW9mLW1vbm8tcHJvdG8uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWUwNzU0ZTIw
ZjBiNWJiMTZlZmJiNTZmYjljNDI2ZmFkMmZlNmMzYQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVz
dHMvc3RyZXNzL29iamVjdC1nZXQtcHJvdG90eXBlLW9mLW1vbm8tcHJvdG8uanMKQEAgLTAsMCAr
MSwzNCBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChh
Y3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTog
JyArIGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9uIG1ha2VQb2x5UHJvdG9PYmplY3QoKSB7CisgICAg
ZnVuY3Rpb24gZm9vKCkgeworICAgICAgICBjbGFzcyBDIHsKKyAgICAgICAgICAgIGNvbnN0cnVj
dG9yKCkgeworICAgICAgICAgICAgICAgIHRoaXMuX2ZpZWxkID0gNDI7CisgICAgICAgICAgICAg
ICAgdGhpcy5oZWxsbyA9IDMzOworICAgICAgICAgICAgfQorICAgICAgICB9OworICAgICAgICBy
ZXR1cm4gbmV3IEM7CisgICAgfQorICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTU7ICsraSkKKyAg
ICAgICAgZm9vKCk7CisgICAgcmV0dXJuIGZvbygpOworfQorCitmdW5jdGlvbiB0YXJnZXQob2Jq
ZWN0KQoreworICAgIHJldHVybiBbb2JqZWN0LmhlbGxvLCBPYmplY3QuZ2V0UHJvdG90eXBlT2Yo
b2JqZWN0KV07Cit9Citub0lubGluZSh0YXJnZXQpOworCit2YXIgcG9seVByb3RvT2JqZWN0ID0g
bWFrZVBvbHlQcm90b09iamVjdCgpOwordmFyIHByb3RvdHlwZSA9IFJlZmxlY3QuZ2V0UHJvdG90
eXBlT2YocG9seVByb3RvT2JqZWN0KTsKK3ZhciBvYmplY3QxID0geyBfX3Byb3RvX186IHByb3Rv
dHlwZSwgaGVsbG86IDQ0IH07Cit2YXIgb2JqZWN0MiA9IHsgaGVsbG86IDQ1IH07Citmb3IgKHZh
ciBpID0gMDsgaSA8IDFlNTsgKytpKSB7CisgICAgc2hvdWxkQmUodGFyZ2V0KG9iamVjdDEpWzFd
LCBwcm90b3R5cGUpOworICAgIHNob3VsZEJlKHRhcmdldChvYmplY3QyKVsxXSwgT2JqZWN0LnBy
b3RvdHlwZSk7Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9vYmplY3QtZ2V0LXByb3Rv
dHlwZS1vZi1wb2x5LW1vbm8tcHJvdG8uanMgYi9KU1Rlc3RzL3N0cmVzcy9vYmplY3QtZ2V0LXBy
b3RvdHlwZS1vZi1wb2x5LW1vbm8tcHJvdG8uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2ZhMDllZjA5NmQyNmM3
MjRmMjQzNzA1ZWNhYjA5OTllMTdjMDcwNQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3Ry
ZXNzL29iamVjdC1nZXQtcHJvdG90eXBlLW9mLXBvbHktbW9uby1wcm90by5qcwpAQCAtMCwwICsx
LDMzIEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFj
dHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAn
ICsgYWN0dWFsKTsKK30KKworZnVuY3Rpb24gbWFrZVBvbHlQcm90b09iamVjdCgpIHsKKyAgICBm
dW5jdGlvbiBmb28oKSB7CisgICAgICAgIGNsYXNzIEMgeworICAgICAgICAgICAgY29uc3RydWN0
b3IoKSB7CisgICAgICAgICAgICAgICAgdGhpcy5fZmllbGQgPSA0MjsKKyAgICAgICAgICAgICAg
ICB0aGlzLmhlbGxvID0gMzM7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgICAgIHJl
dHVybiBuZXcgQzsKKyAgICB9CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxNTsgKytpKQorICAg
ICAgICBmb28oKTsKKyAgICByZXR1cm4gZm9vKCk7Cit9CisKK2Z1bmN0aW9uIHRhcmdldChvYmpl
Y3QpCit7CisgICAgcmV0dXJuIFtvYmplY3QuaGVsbG8sIE9iamVjdC5nZXRQcm90b3R5cGVPZihv
YmplY3QpXTsKK30KK25vSW5saW5lKHRhcmdldCk7CisKK3ZhciBwb2x5UHJvdG9PYmplY3QgPSBt
YWtlUG9seVByb3RvT2JqZWN0KCk7Cit2YXIgcHJvdG90eXBlID0gUmVmbGVjdC5nZXRQcm90b3R5
cGVPZihwb2x5UHJvdG9PYmplY3QpOwordmFyIG9iamVjdCA9IHsgX19wcm90b19fOiBwcm90b3R5
cGUsIGhlbGxvOiA0NCB9OworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTU7ICsraSkgeworICAgIHNo
b3VsZEJlKHRhcmdldChwb2x5UHJvdG9PYmplY3QpWzFdLCBwcm90b3R5cGUpOworICAgIHNob3Vs
ZEJlKHRhcmdldChvYmplY3QpWzFdLCBwcm90b3R5cGUpOworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0
cy9zdHJlc3Mvb2JqZWN0LWdldC1wcm90b3R5cGUtb2YtcG9seS1wcm90by5qcyBiL0pTVGVzdHMv
c3RyZXNzL29iamVjdC1nZXQtcHJvdG90eXBlLW9mLXBvbHktcHJvdG8uanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NDNkNjQ5ZDc0M2Y4MmI2NTkxMTdhMjU0MjY0Y2JmOWY0OTNkMjA2OQotLS0gL2Rldi9udWxsCisr
KyBiL0pTVGVzdHMvc3RyZXNzL29iamVjdC1nZXQtcHJvdG90eXBlLW9mLXBvbHktcHJvdG8uanMK
QEAgLTAsMCArMSwzMCBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgewor
ICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2Jh
ZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9uIG1ha2VQb2x5UHJvdG9PYmplY3Qo
KSB7CisgICAgZnVuY3Rpb24gZm9vKCkgeworICAgICAgICBjbGFzcyBDIHsKKyAgICAgICAgICAg
IGNvbnN0cnVjdG9yKCkgeworICAgICAgICAgICAgICAgIHRoaXMuX2ZpZWxkID0gNDI7CisgICAg
ICAgICAgICAgICAgdGhpcy5oZWxsbyA9IDMzOworICAgICAgICAgICAgfQorICAgICAgICB9Owor
ICAgICAgICByZXR1cm4gbmV3IEM7CisgICAgfQorICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTU7
ICsraSkKKyAgICAgICAgZm9vKCk7CisgICAgcmV0dXJuIGZvbygpOworfQorCitmdW5jdGlvbiB0
YXJnZXQob2JqZWN0KQoreworICAgIHJldHVybiBbb2JqZWN0LmhlbGxvLCBPYmplY3QuZ2V0UHJv
dG90eXBlT2Yob2JqZWN0KV07Cit9Citub0lubGluZSh0YXJnZXQpOworCit2YXIgcG9seVByb3Rv
T2JqZWN0ID0gbWFrZVBvbHlQcm90b09iamVjdCgpOwordmFyIHByb3RvdHlwZSA9IFJlZmxlY3Qu
Z2V0UHJvdG90eXBlT2YocG9seVByb3RvT2JqZWN0KTsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU1
OyArK2kpCisgICAgc2hvdWxkQmUodGFyZ2V0KHBvbHlQcm90b09iamVjdClbMV0sIHByb3RvdHlw
ZSk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9vYmplY3QtcHJvdG8tZ2V0dGVyLWZpbHRl
cmVkLmpzIGIvSlNUZXN0cy9zdHJlc3Mvb2JqZWN0LXByb3RvLWdldHRlci1maWx0ZXJlZC5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4zM2ZiNTI3YzU2ZDkzNzc1M2E3N2YzMjhmNzMwMjQwNzZhZGMwYzM3Ci0tLSAv
ZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mvb2JqZWN0LXByb3RvLWdldHRlci1maWx0ZXJl
ZC5qcwpAQCAtMCwwICsxLDYyIEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVk
KQoreworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZFRocm93KGZ1
bmMsIGVycm9yTWVzc2FnZSkgeworICAgIHZhciBlcnJvclRocm93biA9IGZhbHNlOworICAgIHZh
ciBlcnJvciA9IG51bGw7CisgICAgdHJ5IHsKKyAgICAgICAgZnVuYygpOworICAgIH0gY2F0Y2gg
KGUpIHsKKyAgICAgICAgZXJyb3JUaHJvd24gPSB0cnVlOworICAgICAgICBlcnJvciA9IGU7Cisg
ICAgfQorICAgIGlmICghZXJyb3JUaHJvd24pCisgICAgICAgIHRocm93IG5ldyBFcnJvcignbm90
IHRocm93bicpOworICAgIGlmIChTdHJpbmcoZXJyb3IpICE9PSBlcnJvck1lc3NhZ2UpCisgICAg
ICAgIHRocm93IG5ldyBFcnJvcihgYmFkIGVycm9yOiAke1N0cmluZyhlcnJvcil9YCk7Cit9CisK
KyhmdW5jdGlvbiAoKSB7CisgICAgZnVuY3Rpb24gdGFyZ2V0KG9iamVjdCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBvYmplY3QuX19wcm90b19fOworICAgIH0KKyAgICBub0lubGluZSh0YXJnZXQp
OworCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxZTQ7ICsraSkgeworICAgICAgICB2YXIgb2Jq
ZWN0ID0ge307CisgICAgICAgIG9iamVjdFtgQ29jb2Eke2l9YF0gPSBgQ29jb2FgOworICAgICAg
ICBzaG91bGRCZSh0YXJnZXQob2JqZWN0KSwgT2JqZWN0LnByb3RvdHlwZSk7CisgICAgfQorfSgp
KTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiB0YXJnZXQob2JqZWN0KQorICAgIHsK
KyAgICAgICAgcmV0dXJuIG9iamVjdC5fX3Byb3RvX187CisgICAgfQorICAgIG5vSW5saW5lKHRh
cmdldCk7CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDFlNDsgKytpKSB7CisgICAgICAgIHZh
ciBhcnJheSA9IFtdOworICAgICAgICBhcnJheVtgQ29jb2Eke2l9YF0gPSBgQ29jb2FgOworICAg
ICAgICBzaG91bGRCZSh0YXJnZXQoYXJyYXkpLCBBcnJheS5wcm90b3R5cGUpOworICAgIH0KK30o
KSk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAgZnVuY3Rpb24gdGFyZ2V0KG9iamVjdCkKKyAgICB7
CisgICAgICAgIHJldHVybiBvYmplY3QuX19wcm90b19fOworICAgIH0KKyAgICBub0lubGluZSh0
YXJnZXQpOworCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxZTQ7ICsraSkgeworICAgICAgICBm
dW5jdGlvbiBDb2NvYSgpIHsgfQorICAgICAgICBDb2NvYVtgQ29jb2Eke2l9YF0gPSBgQ29jb2Fg
OworICAgICAgICBzaG91bGRCZSh0YXJnZXQoQ29jb2EpLCBGdW5jdGlvbi5wcm90b3R5cGUpOwor
ICAgIH0KK30oKSk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9vYmplY3QtcHJvdG8tZ2V0
dGVyLXBvbHktbW9uby1wcm90by5qcyBiL0pTVGVzdHMvc3RyZXNzL29iamVjdC1wcm90by1nZXR0
ZXItcG9seS1tb25vLXByb3RvLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFjYzc3ZTU4YWM3NjlhZTJmZTBkM2I1
NjE2MTVhODdlNmIyMjQ0NDUKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9vYmpl
Y3QtcHJvdG8tZ2V0dGVyLXBvbHktbW9uby1wcm90by5qcwpAQCAtMCwwICsxLDM0IEBACitmdW5j
dGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhw
ZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsK
K30KKworZnVuY3Rpb24gbWFrZVBvbHlQcm90b09iamVjdCgpIHsKKyAgICBmdW5jdGlvbiBmb28o
KSB7CisgICAgICAgIGNsYXNzIEMgeworICAgICAgICAgICAgY29uc3RydWN0b3IoKSB7CisgICAg
ICAgICAgICAgICAgdGhpcy5fZmllbGQgPSA0MjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsK
KyAgICAgICAgcmV0dXJuIG5ldyBDOworICAgIH0KKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDE1
OyArK2kpCisgICAgICAgIGZvbygpOworICAgIHJldHVybiBmb28oKTsKK30KKworZnVuY3Rpb24g
dGFyZ2V0KG9iamVjdCkKK3sKKyAgICByZXR1cm4gb2JqZWN0Ll9fcHJvdG9fXzsKK30KK25vSW5s
aW5lKHRhcmdldCk7CisKK3ZhciBwb2x5UHJvdG9PYmplY3QgPSBtYWtlUG9seVByb3RvT2JqZWN0
KCk7Cit2YXIgcHJvdG90eXBlID0gUmVmbGVjdC5nZXRQcm90b3R5cGVPZihwb2x5UHJvdG9PYmpl
Y3QpOwordmFyIG9iamVjdCA9IHsKKyAgICBfX3Byb3RvX186IHByb3RvdHlwZQorfTsKK2ZvciAo
dmFyIGkgPSAwOyBpIDwgMWU1OyArK2kpIHsKKyAgICBzaG91bGRCZSh0YXJnZXQocG9seVByb3Rv
T2JqZWN0KSwgcHJvdG90eXBlKTsKKyAgICBzaG91bGRCZSh0YXJnZXQob2JqZWN0KSwgcHJvdG90
eXBlKTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL29iamVjdC1wcm90by1nZXR0ZXIt
cG9seS1wcm90by5qcyBiL0pTVGVzdHMvc3RyZXNzL29iamVjdC1wcm90by1nZXR0ZXItcG9seS1w
cm90by5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi45YjhlZmQ5MTU1MWI1YmFmYjE4ZDhiZDg2YmFiNmQxMTc4NDZl
ZGZjCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mvb2JqZWN0LXByb3RvLWdldHRl
ci1wb2x5LXByb3RvLmpzCkBAIC0wLDAgKzEsMjkgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVh
bCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhy
b3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCitmdW5jdGlvbiBtYWtl
UG9seVByb3RvT2JqZWN0KCkgeworICAgIGZ1bmN0aW9uIGZvbygpIHsKKyAgICAgICAgY2xhc3Mg
QyB7CisgICAgICAgICAgICBjb25zdHJ1Y3RvcigpIHsKKyAgICAgICAgICAgICAgICB0aGlzLl9m
aWVsZCA9IDQyOworICAgICAgICAgICAgfQorICAgICAgICB9OworICAgICAgICByZXR1cm4gbmV3
IEM7CisgICAgfQorICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTU7ICsraSkKKyAgICAgICAgZm9v
KCk7CisgICAgcmV0dXJuIGZvbygpOworfQorCitmdW5jdGlvbiB0YXJnZXQob2JqZWN0KQorewor
ICAgIHJldHVybiBvYmplY3QuX19wcm90b19fOworfQorbm9JbmxpbmUodGFyZ2V0KTsKKwordmFy
IHBvbHlQcm90b09iamVjdCA9IG1ha2VQb2x5UHJvdG9PYmplY3QoKTsKK3ZhciBwcm90b3R5cGUg
PSBSZWZsZWN0LmdldFByb3RvdHlwZU9mKHBvbHlQcm90b09iamVjdCk7Citmb3IgKHZhciBpID0g
MDsgaSA8IDFlNTsgKytpKQorICAgIHNob3VsZEJlKHRhcmdldChwb2x5UHJvdG9PYmplY3QpLCBw
cm90b3R5cGUpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mvc3RyaW5nLXByb3RvLmpzIGIv
SlNUZXN0cy9zdHJlc3Mvc3RyaW5nLXByb3RvLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRkY2YwMTJhMDc2MmZi
ODU1YWUyYzQ1OGQyNjY2OTg3MGFlOTA4NTgKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0
cmVzcy9zdHJpbmctcHJvdG8uanMKQEAgLTAsMCArMSwxMiBAQAorZnVuY3Rpb24gc2hvdWxkQmUo
YWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9u
IHRhcmdldCh2YWx1ZSkKK3sKKyAgICByZXR1cm4gdmFsdWUuX19wcm90b19fOworfQorbm9Jbmxp
bmUodGFyZ2V0KTsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU2OyArK2kpCisgICAgc2hvdWxkQmUo
dGFyZ2V0KCJDb2NvYSIpLCBTdHJpbmcucHJvdG90eXBlKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>323295</attachid>
            <date>2017-10-10 03:34:02 -0700</date>
            <delta_ts>2017-10-10 07:42:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178067-20171010193401.patch</filename>
            <type>text/plain</type>
            <size>78303</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIzMTI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
Zjk5MWQwOWIwMTkwYWE0ZTE1ZTc5MDZjZmMyZGJlMjU5MzJmNjE2Li41NGZhZDIzODE4Yzk4ZTFl
ZTE2MTE5ZTVkNDRmYTA0ZmYzOGNmZTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5MiBAQAorMjAxNy0xMC0xMCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbSlNDXSBfX3Byb3RvX18gZ2V0dGVyIHNob3VsZCBiZSBmYXN0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzgwNjcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbiBvdXIgRVM2
IGNsYXNzIGltcGxlbWVudGF0aW9uLCB3ZSBhY2Nlc3MgX19wcm90b19fIGZpZWxkIHRvIHJldHJp
ZXZlIHN1cGVyIGNvbnN0cnVjdG9yLgorICAgICAgICBDdXJyZW50bHksIGl0IGlzIGhhbmRsZWQg
YXMgYW4gdXN1YWwgZ2V0dGVyIGNhbGwgdG8gYSBnZW5lcmljIGZ1bmN0aW9uLiBBbmQgREZHIGp1
c3QgZW1pdHMKKyAgICAgICAgQ2FsbCBub2RlIGZvciB0aGlzLiBJdCBpcyBpbmVmZmljaWVudCBz
aW5jZSB0eXBpY2FsbHkgd2Uga25vdyB0aGUgYHByb3RvdHlwZWAgb2YgdGhlIGdpdmVuCisgICAg
ICAgIG9iamVjdCB3aGVuIGFjY2Vzc2luZyBgb2JqZWN0Ll9fcHJvdG9fX2Agc2luY2Ugd2UgZW1p
dCBDaGVja1N0cnVjdHVyZSBmb3IgdGhpcyBgb2JqZWN0YC4KKyAgICAgICAgSWYgU3RydWN0dXJl
IGhhcyBtb25vIHByb3RvLCB3ZSBjYW4gaW1tZWRpYXRlbHkgZm9sZCBpdCB0byBjb25zdGFudCB2
YWx1ZS4gSWYgaXQgaXMgcG9seSBwcm90bywKKyAgICAgICAgd2UgY2FuIHN0aWxsIGNoYW5nZSB0
aGlzIHRvIGVmZmljaWVudCBhY2Nlc3MgdG8gcG9seSBwcm90byBzbG90LgorCisgICAgICAgIFRo
aXMgcGF0Y2ggaW1wbGVtZW50cyBHZXRQcm90b3R5cGVPZiBERkcgbm9kZS4gVGhpcyBub2RlIGVm
ZmljaWVudGx5IGFjY2Vzc2VzIHRvIHByb3RvdHlwZSBvZgorICAgICAgICB0aGUgZ2l2ZW4gb2Jq
ZWN0LiBBbmQgaW4gQUkgYW5kIEJ5dGVDb2RlUGFyc2VyIHBoYXNlLCB3ZSBhdHRlbXB0IHRvIGZv
bGQgaXQgdG8gY29uc3RhbnQuCisgICAgICAgIEJ5dGVDb2RlUGFyc2VyJ3MgZm9sZGluZyBpcyBh
IGJpdCBpbXBvcnRhbnQgc2luY2Ugd2UgaGF2ZSBgY2FsbGVlLl9fcHJvdG9fX2AgY29kZSB0byBn
ZXQgc3VwZXIKKyAgICAgICAgY29uc3RydWN0b3IuIElmIHdlIGNhbiBjaGFuZ2UgdGhpcyB0byBj
b25zdGFudCwgd2UgY2FuIHJlaWZ5IENhbGxMaW5rSW5mbyB3aXRoIHRoaXMgY29uc3RhbnQuCisg
ICAgICAgIFRoaXMgcGF2ZXMgdGhlIHdheSB0byBvcHRpbWl6aW5nIEFycmF5Q29uc3RydWN0b3Ig
c3VwZXIgY2FsbHNbMV0sIHdoaWNoIGlzIHBhcnRpY3VsYXJseSBpbXBvcnRhbnQKKyAgICAgICAg
Zm9yIEFSRVMtNiBNTC4KKworICAgICAgICBBbmQgd2UgYWxzbyBvcHRpbWl6ZSBSZWZsZWN0Lmdl
dFByb3RvdHlwZU9mIGFuZCBPYmplY3QuZ2V0UHJvdG90eXBlT2Ygd2l0aCB0aGlzIEdldFByb3Rv
dHlwZU9mIG5vZGUuCisKKyAgICAgICAgQ3VycmVudGx5LCBfX3Byb3RvX18gYWNjZXNzIGZvciBw
b2x5IHByb3RvIG9iamVjdCBpcyBub3QgaGFuZGxlZCB3ZWxsIGluIElDLiBCdXQgd2UgYWRkIGNv
ZGUgaGFuZGxpbmcKKyAgICAgICAgcG9seSBwcm90byBpbiBHZXRQcm90b3R5cGVPZiBzaW5jZSBS
ZWZsZWN0LmdldFByb3RvdHlwZU9mIGFuZCBPYmplY3QuZ2V0UHJvdG90eXBlT2YgY2FuIHVzZSBp
dC4KKyAgICAgICAgT25jZSBJQyBzdGFydHMgaGFuZGxpbmcgcG9seSBwcm90byAmIGludHJpbnNp
YyBnZXR0ZXIgd2VsbCwgdGhpcyBjb2RlIHdpbGwgYmUgdXNlZCBmb3IgdGhhdCB0b28uCisKKyAg
ICAgICAgVGhpcyBwYXRjaCBpbXByb3ZlcyBTaXhTcGVlZCBzdXBlci5lczYgYnkgMy40MnguCisK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VsaW5lICAgICAgICAgICAgICAg
ICAgcGF0Y2hlZAorCisgICAgICAgIHN1cGVyLmVzNiAgICAgICAgICAgMTIzLjY2NjYrLTMuOTkx
NyAgICAgXiAgICAgMzYuMTY4NCstMS4wMzUxICAgICAgICBeIGRlZmluaXRlbHkgMy40MTkyeCBm
YXN0ZXIKKworICAgICAgICBbMV06IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzgwNjQKKworICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5l
cy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0
ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2Vy
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2lj
Q2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNp
Y0dldHRlcik6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5
SWQpOgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyaXplLmg6CisgICAgICAgIChKU0M6OkRGRzo6
Y2xvYmJlcml6ZSk6CisgICAgICAgICogZGZnL0RGR0RvZXNHQy5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6ZG9lc0dDKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpG
aXh1cFBoYXNlOjpmaXh1cEdldFByb3RvdHlwZU9mKToKKyAgICAgICAgKiBkZmcvREZHSGVhcExv
Y2F0aW9uLmNwcDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogZGZn
L0RGR0hlYXBMb2NhdGlvbi5oOgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAgIChK
U0M6OkRGRzo6Tm9kZTo6aGFzSGVhcFByZWRpY3Rpb24pOgorICAgICAgICAoSlNDOjpERkc6Ok5v
ZGU6OnNob3VsZFNwZWN1bGF0ZUZ1bmN0aW9uKToKKyAgICAgICAgKiBkZmcvREZHTm9kZVR5cGUu
aDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogZGZnL0RGR09w
ZXJhdGlvbnMuaDoKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2Uu
Y3BwOgorICAgICAgICAqIGRmZy9ERkdTYWZlVG9FeGVjdXRlLmg6CisgICAgICAgIChKU0M6OkRG
Rzo6c2FmZVRvRXhlY3V0ZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlRnVuY3Rpb24pOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVGaW5hbE9iamVjdCk6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRQcm90b3R5cGVP
Zik6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgICogZGZnL0RG
R1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGZ0
bC9GVExDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNhbkNvbXBpbGUpOgor
ICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjb21waWxlTm9kZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpM
b3dlckRGR1RvQjM6OmNvbXBpbGVHZXRQcm90b3R5cGVPZik6CisgICAgICAgIChKU0M6OkZUTDo6
REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVJbnN0YW5jZU9mKToKKyAgICAgICAgKiBqaXQvSW50
cmluc2ljRW1pdHRlci5jcHA6CisgICAgICAgIChKU0M6OkludHJpbnNpY0dldHRlckFjY2Vzc0Nh
c2U6OmNhbkVtaXRJbnRyaW5zaWNHZXR0ZXIpOgorICAgICAgICAoSlNDOjpJbnRyaW5zaWNHZXR0
ZXJBY2Nlc3NDYXNlOjplbWl0SW50cmluc2ljR2V0dGVyKToKKyAgICAgICAgKiBydW50aW1lL0lu
dHJpbnNpYy5jcHA6CisgICAgICAgIChKU0M6OmludHJpbnNpY05hbWUpOgorICAgICAgICAqIHJ1
bnRpbWUvSW50cmluc2ljLmg6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6
CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0KToKKyAgICAgICAgKiBydW50aW1l
L0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6Z2xvYmFsRnVuY1By
b3RvR2V0dGVyKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmg6
CisgICAgICAgICogcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgICogcnVu
dGltZS9SZWZsZWN0T2JqZWN0LmNwcDoKKwogMjAxNy0xMC0wOSAgWXVzdWtlIFN1enVraSAgPHV0
YXRhbmUudGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBgYXN5bmNgIHNob3VsZCBiZSBhYmxlIHRv
IGJlIHVzZWQgYXMgYW4gaW1wb3J0ZWQgYmluZGluZyBuYW1lCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5k
ZXggYmVhMTY4OWFhYmQ1MzAzODA2MmVlYzgwOTNhMTYwNjZmOGNkMWI2Yy4uNzViMDI5ZmY4Y2Q2
MDQ0N2QwNGNhYzY5YTA5MTZkNTdiYzU0MzBjMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaApAQCAtMjY5
OSw2ICsyNjk5LDQ4IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlw
ZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgIGZvck5vZGUo
bm9kZSkuc2V0VHlwZShTcGVjSW50MzJPbmx5KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorCisg
ICAgY2FzZSBHZXRQcm90b3R5cGVPZjogeworICAgICAgICBBYnN0cmFjdFZhbHVlJiB2YWx1ZSA9
IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBpZiAoKHZhbHVlLm1fdHlwZSAmJiAh
KHZhbHVlLm1fdHlwZSAmIH5TcGVjT2JqZWN0KSkgJiYgdmFsdWUubV9zdHJ1Y3R1cmUuaXNGaW5p
dGUoKSkgeworICAgICAgICAgICAgYm9vbCBjYW5ub3RGb2xkID0gZmFsc2U7CisgICAgICAgICAg
ICBKU1ZhbHVlIHByb3RvdHlwZTsKKyAgICAgICAgICAgIHZhbHVlLm1fc3RydWN0dXJlLmZvckVh
Y2goWyZdIChSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSkgeworICAgICAgICAgICAgICAg
IGF1dG8gZ2V0UHJvdG90eXBlTWV0aG9kID0gc3RydWN0dXJlLT5jbGFzc0luZm8oKS0+bWV0aG9k
VGFibGUuZ2V0UHJvdG90eXBlOworICAgICAgICAgICAgICAgIE1ldGhvZFRhYmxlOjpHZXRQcm90
b3R5cGVGdW5jdGlvblB0ciBkZWZhdWx0R2V0UHJvdG90eXBlID0gSlNPYmplY3Q6OmdldFByb3Rv
dHlwZTsKKyAgICAgICAgICAgICAgICBpZiAoZ2V0UHJvdG90eXBlTWV0aG9kICE9IGRlZmF1bHRH
ZXRQcm90b3R5cGUpIHsKKyAgICAgICAgICAgICAgICAgICAgY2Fubm90Rm9sZCA9IHRydWU7Cisg
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgICAgICBpZiAoc3RydWN0dXJlLT5oYXNQb2x5UHJvdG8oKSkgeworICAgICAgICAgICAgICAg
ICAgICBjYW5ub3RGb2xkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoIXByb3RvdHlwZSkKKyAgICAgICAg
ICAgICAgICAgICAgcHJvdG90eXBlID0gc3RydWN0dXJlLT5zdG9yZWRQcm90b3R5cGUoKTsKKyAg
ICAgICAgICAgICAgICBlbHNlIGlmIChwcm90b3R5cGUgIT0gc3RydWN0dXJlLT5zdG9yZWRQcm90
b3R5cGUoKSkKKyAgICAgICAgICAgICAgICAgICAgY2Fubm90Rm9sZCA9IHRydWU7CisgICAgICAg
ICAgICB9KTsKKworICAgICAgICAgICAgaWYgKHByb3RvdHlwZSAmJiAhY2Fubm90Rm9sZCkgewor
ICAgICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsICptX2dyYXBoLmZyZWV6ZShwcm90b3R5
cGUpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
CisgICAgICAgIHN3aXRjaCAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7CisgICAgICAgIGNh
c2UgQXJyYXlVc2U6CisgICAgICAgIGNhc2UgRnVuY3Rpb25Vc2U6CisgICAgICAgIGNhc2UgRmlu
YWxPYmplY3RVc2U6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgIGNsb2JiZXJXb3JsZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNsb2JiZXJMaW1pdCk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBmb3JOb2RlKG5vZGUpLnNl
dFR5cGUobV9ncmFwaCwgU3BlY09iamVjdCB8IFNwZWNPdGhlcik7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBHZXRCeU9mZnNldDogewogICAgICAgICBTdG9yYWdl
QWNjZXNzRGF0YSYgZGF0YSA9IG5vZGUtPnN0b3JhZ2VBY2Nlc3NEYXRhKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IGQwZWYyZjlh
MDk1Njk0NGY5ZjExNWU1MDFlYWZjNzk0YzhjMDM0YTcuLjhkMWUwNjA0MzU5ZGY1YTNmMjkzNWNi
OTg0ZmNmYzA0NzAxY2VlZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Qnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC0yMzgsNyArMjM4LDcgQEAgY2xhc3MgQnl0ZUNvZGVQYXJz
ZXIgewogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+CiAgICAgYm9vbCBoYW5k
bGVET01KSVRDYWxsKE5vZGUqIGNhbGxlZSwgaW50IHJlc3VsdE9wZXJhbmQsIGNvbnN0IERPTUpJ
VDo6U2lnbmF0dXJlKiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIGNvbnN0IENoZWNrc0Z1bmN0b3Im
IGluc2VydENoZWNrcyk7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4KLSAg
ICBib29sIGhhbmRsZUludHJpbnNpY0dldHRlcihpbnQgcmVzdWx0T3BlcmFuZCwgY29uc3QgR2V0
QnlJZFZhcmlhbnQmIGludHJpbnNpY1ZhcmlhbnQsIE5vZGUqIHRoaXNOb2RlLCBjb25zdCBDaGVj
a3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpOworICAgIGJvb2wgaGFuZGxlSW50cmluc2ljR2V0dGVy
KGludCByZXN1bHRPcGVyYW5kLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBjb25zdCBHZXRC
eUlkVmFyaWFudCYgaW50cmluc2ljVmFyaWFudCwgTm9kZSogdGhpc05vZGUsIGNvbnN0IENoZWNr
c0Z1bmN0b3ImIGluc2VydENoZWNrcyk7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVu
Y3Rvcj4KICAgICBib29sIGhhbmRsZVR5cGVkQXJyYXlDb25zdHJ1Y3RvcihpbnQgcmVzdWx0T3Bl
cmFuZCwgSW50ZXJuYWxGdW5jdGlvbiosIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzLCBUeXBlZEFycmF5VHlwZSwgY29uc3QgQ2hlY2tzRnVuY3RvciYg
aW5zZXJ0Q2hlY2tzKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgpAQCAt
MjYyMCw2ICsyNjIwLDI0IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0Nh
bGwoTm9kZSogY2FsbGVlLCBpbnQgcmVzdWx0T3BlcmFuZCwgSW50cmluCiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KIAorICAgIGNhc2UgT2JqZWN0R2V0UHJvdG90eXBlT2ZJbnRyaW5zaWM6
IHsKKyAgICAgICAgaWYgKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICE9IDIpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgaW5zZXJ0Q2hlY2tzKCk7CisgICAgICAgIHNl
dChWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0T3BlcmFuZCksIGFkZFRvR3JhcGgoR2V0UHJvdG90eXBl
T2YsIE9wSW5mbygwKSwgT3BJbmZvKHByZWRpY3Rpb24pLCBnZXQodmlydHVhbFJlZ2lzdGVyRm9y
QXJndW1lbnQoMSwgcmVnaXN0ZXJPZmZzZXQpKSkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisKKyAgICBjYXNlIFJlZmxlY3RHZXRQcm90b3R5cGVPZkludHJpbnNpYzogeworICAgICAg
ICBpZiAoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgIT0gMikKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgICAgICBpbnNlcnRDaGVja3MoKTsKKyAgICAgICAgc2V0KFZpcnR1YWxS
ZWdpc3RlcihyZXN1bHRPcGVyYW5kKSwgYWRkVG9HcmFwaChHZXRQcm90b3R5cGVPZiwgT3BJbmZv
KDApLCBPcEluZm8ocHJlZGljdGlvbiksIEVkZ2UoZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3Vt
ZW50KDEsIHJlZ2lzdGVyT2Zmc2V0KSksIE9iamVjdFVzZSkpKTsKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgfQorCiAgICAgY2FzZSBJc1R5cGVkQXJyYXlWaWV3SW50cmluc2ljOiB7CiAgICAg
ICAgIEFTU0VSVChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA9PSAyKTsKIApAQCAtMjk2Nyw3
ICsyOTg1LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlRE9NSklUQ2FsbChOb2RlKiBj
YWxsVGFyZ2V0LCBpbnQgcmVzdWx0T3BlcmFuZCwgY29uc3QKIAogCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDaGVja3NGdW5jdG9yPgotYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljR2V0
dGVyKGludCByZXN1bHRPcGVyYW5kLCBjb25zdCBHZXRCeUlkVmFyaWFudCYgdmFyaWFudCwgTm9k
ZSogdGhpc05vZGUsIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcykKK2Jvb2wgQnl0
ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0dldHRlcihpbnQgcmVzdWx0T3BlcmFuZCwgU3Bl
Y3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgY29uc3QgR2V0QnlJZFZhcmlhbnQmIHZhcmlhbnQsIE5v
ZGUqIHRoaXNOb2RlLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpCiB7CiAgICAg
c3dpdGNoICh2YXJpYW50LmludHJpbnNpYygpKSB7CiAgICAgY2FzZSBUeXBlZEFycmF5Qnl0ZUxl
bmd0aEludHJpbnNpYzogewpAQCAtMzAzNCw2ICszMDUyLDQwIEBAIGJvb2wgQnl0ZUNvZGVQYXJz
ZXI6OmhhbmRsZUludHJpbnNpY0dldHRlcihpbnQgcmVzdWx0T3BlcmFuZCwgY29uc3QgR2V0QnlJ
ZFZhcmlhCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAorICAgIGNhc2UgVW5kZXJzY29y
ZVByb3RvSW50cmluc2ljOiB7CisgICAgICAgIGluc2VydENoZWNrcygpOworCisgICAgICAgIGJv
b2wgY2Fubm90Rm9sZCA9IGZhbHNlOworICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZTsKKyAgICAg
ICAgdmFyaWFudC5zdHJ1Y3R1cmVTZXQoKS5mb3JFYWNoKFsmXSAoU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpIHsKKyAgICAgICAgICAgIGF1dG8gZ2V0UHJvdG90eXBlTWV0aG9kID0gc3RydWN0dXJlLT5j
bGFzc0luZm8oKS0+bWV0aG9kVGFibGUuZ2V0UHJvdG90eXBlOworICAgICAgICAgICAgTWV0aG9k
VGFibGU6OkdldFByb3RvdHlwZUZ1bmN0aW9uUHRyIGRlZmF1bHRHZXRQcm90b3R5cGUgPSBKU09i
amVjdDo6Z2V0UHJvdG90eXBlOworICAgICAgICAgICAgaWYgKGdldFByb3RvdHlwZU1ldGhvZCAh
PSBkZWZhdWx0R2V0UHJvdG90eXBlKSB7CisgICAgICAgICAgICAgICAgY2Fubm90Rm9sZCA9IHRy
dWU7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBpZiAoc3RydWN0dXJlLT5oYXNQb2x5UHJvdG8oKSkgeworICAgICAgICAgICAgICAgIGNhbm5v
dEZvbGQgPSB0cnVlOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGlmICghcHJvdG90eXBlKQorICAgICAgICAgICAgICAgIHByb3RvdHlwZSA9IHN0
cnVjdHVyZS0+c3RvcmVkUHJvdG90eXBlKCk7CisgICAgICAgICAgICBlbHNlIGlmIChwcm90b3R5
cGUgIT0gc3RydWN0dXJlLT5zdG9yZWRQcm90b3R5cGUoKSkKKyAgICAgICAgICAgICAgICBjYW5u
b3RGb2xkID0gdHJ1ZTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgLy8gT0ssIG9ubHkgb25lIHBy
b3RvdHlwZSBpcyBmb3VuZC4gV2UgcGVyZm9ybSBjb25zdGFudCBmb2xkaW5nIGhlcmUuCisgICAg
ICAgIC8vIFRoaXMgaW5mb3JtYXRpb24gaXMgaW1wb3J0YW50IGZvciBzdXBlcidzIGNvbnN0cnVj
dG9yIGNhbGwgdG8gZ2V0IG5ldy50YXJnZXQgY29uc3RhbnQuCisgICAgICAgIGlmIChwcm90b3R5
cGUgJiYgIWNhbm5vdEZvbGQpIHsKKyAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIocmVz
dWx0T3BlcmFuZCksIHdlYWtKU0NvbnN0YW50KHByb3RvdHlwZSkpOworICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgIH0KKworICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKHJlc3Vs
dE9wZXJhbmQpLCBhZGRUb0dyYXBoKEdldFByb3RvdHlwZU9mLCBPcEluZm8oMCksIE9wSW5mbyhw
cmVkaWN0aW9uKSwgdGhpc05vZGUpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCiAg
ICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTM4MTcsNyArMzg2
OSw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5SWQoCiAgICAgCiAgICAgTm9k
ZSogZ2V0dGVyID0gYWRkVG9HcmFwaChHZXRHZXR0ZXIsIGxvYWRlZFZhbHVlKTsKIAotICAgIGlm
IChoYW5kbGVJbnRyaW5zaWNHZXR0ZXIoZGVzdGluYXRpb25PcGVyYW5kLCB2YXJpYW50LCBiYXNl
LAorICAgIGlmIChoYW5kbGVJbnRyaW5zaWNHZXR0ZXIoZGVzdGluYXRpb25PcGVyYW5kLCBwcmVk
aWN0aW9uLCB2YXJpYW50LCBiYXNlLAogICAgICAgICAgICAgWyZdICgpIHsKICAgICAgICAgICAg
ICAgICBhZGRUb0dyYXBoKENoZWNrQ2VsbCwgT3BJbmZvKG1fZ3JhcGguZnJlZXplKHZhcmlhbnQu
aW50cmluc2ljRnVuY3Rpb24oKSkpLCBnZXR0ZXIpOwogICAgICAgICAgICAgfSkpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKaW5kZXggNTY2NDkwYjEzYTgzNWMz
NjI1YzRkOTY2NzVkNTExZWI2MWFjNDE4Ni4uNmI1ZjY1Nzc4MTMzNzdjOGQzOWU2YjA4YmZhMmYz
ODhjNjE0MTdmMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9i
YmVyaXplLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgK
QEAgLTExMTQsNiArMTExNCwyMyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2Rl
KiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgICAgICBy
ZWFkKE1pc2NGaWVsZHMpOwogICAgICAgICBkZWYoSGVhcExvY2F0aW9uKFR5cGVkQXJyYXlCeXRl
T2Zmc2V0TG9jLCBNaXNjRmllbGRzLCBub2RlLT5jaGlsZDEoKSksIExhenlOb2RlKG5vZGUpKTsK
ICAgICAgICAgcmV0dXJuOworCisgICAgY2FzZSBHZXRQcm90b3R5cGVPZjogeworICAgICAgICBz
d2l0Y2ggKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkgeworICAgICAgICBjYXNlIEFycmF5VXNl
OgorICAgICAgICBjYXNlIEZ1bmN0aW9uVXNlOgorICAgICAgICBjYXNlIEZpbmFsT2JqZWN0VXNl
OgorICAgICAgICAgICAgcmVhZChKU0NlbGxfc3RydWN0dXJlSUQpOworICAgICAgICAgICAgcmVh
ZChKU09iamVjdF9idXR0ZXJmbHkpOworICAgICAgICAgICAgcmVhZChOYW1lZFByb3BlcnRpZXMp
OyAvLyBQb2x5IHByb3RvIGNvdWxkIGxvYWQgcHJvdG90eXBlIGZyb20gaXRzIHNsb3QuCisgICAg
ICAgICAgICBkZWYoSGVhcExvY2F0aW9uKFByb3RvdHlwZUxvYywgTmFtZWRQcm9wZXJ0aWVzLCBu
b2RlLT5jaGlsZDEoKSksIExhenlOb2RlKG5vZGUpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJlYWQoV29ybGQpOworICAgICAgICAgICAgd3Jp
dGUoSGVhcCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CiAgICAgICAg
IAogICAgIGNhc2UgR2V0QnlPZmZzZXQ6CiAgICAgY2FzZSBHZXRHZXR0ZXJTZXR0ZXJCeU9mZnNl
dDogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCmluZGV4IDU4YTc1ZjVl
ODVjZTI0ZThmODNlODE0ZjBjNmExZDQ1OTJhNjJjN2QuLmU1ZmE0ZjM3ODFmNmE4NGY3YTUyZjll
NTY1YmM5ZGNkZDBkNzU5ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRG9lc0dDLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5j
cHAKQEAgLTIzNiw2ICsyMzYsNyBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5v
ZGUpCiAgICAgY2FzZSBTdHJpbmdDaGFyQXQ6CiAgICAgY2FzZSBTdHJpbmdDaGFyQ29kZUF0Ogog
ICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQ6CisgICAgY2FzZSBHZXRQcm90b3R5cGVP
ZjoKICAgICBjYXNlIFB1dEJ5VmFsRGlyZWN0OgogICAgIGNhc2UgUHV0QnlWYWw6CiAgICAgY2Fz
ZSBQdXRCeVZhbEFsaWFzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFz
ZS5jcHAKaW5kZXggNWZmOThkYjU2YWVkN2QyMTJkMGNiMjg0MTQzNjE3MjE2MWJjNjlmMC4uNzA1
ZDJkOGQ3MmI1MmY3ODQwZjMxZTE1ZGIyZjA5MjA5NTg3ZTZhZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCkBAIC0xNTk3LDYgKzE1OTcsMTEgQEAgY2xh
c3MgRml4dXBQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogCisgICAgICAgIGNhc2UgR2V0UHJvdG90eXBlT2Y6IHsKKyAgICAgICAgICAgIGZpeHVw
R2V0UHJvdG90eXBlT2Yobm9kZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAg
ICAgICAgIGNhc2UgUGhpOgogICAgICAgICBjYXNlIFVwc2lsb246CiAgICAgICAgIGNhc2UgRW50
cnlTd2l0Y2g6CkBAIC0yMjk2LDYgKzIzMDEsNTkgQEAgY2xhc3MgRml4dXBQaGFzZSA6IHB1Ymxp
YyBQaGFzZSB7CiAgICAgICAgIH0KICAgICB9CiAKKyAgICB2b2lkIGZpeHVwR2V0UHJvdG90eXBl
T2YoTm9kZSogbm9kZSkKKyAgICB7CisgICAgICAgIC8vIFJlZmxlY3QuZ2V0UHJvdG90eXBlT2Yg
b25seSBhY2NlcHRzIE9iamVjdHMuIEZvciBSZWZsZWN0LmdldFByb3RvdHlwZU9mLCBCeXRlQ29k
ZVBhcnNlciBhdHRhY2hlcyBPYmplY3RVc2UgZWRnZSBmaWx0ZXIgYmVmb3JlIGZpeHVwIHBoYXNl
LgorICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpICE9IE9iamVjdFVzZSkgewor
ICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVTdHJpbmcoKSkg
eworICAgICAgICAgICAgICAgIGluc2VydENoZWNrPFN0cmluZ1VzZT4obm9kZS0+Y2hpbGQxKCku
bm9kZSgpKTsKKyAgICAgICAgICAgICAgICBtX2dyYXBoLmNvbnZlcnRUb0NvbnN0YW50KG5vZGUs
IG1fZ3JhcGguZnJlZXplKG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYyktPnN0cmluZ1Byb3RvdHlwZSgpKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxh
dGVJbnQzMigpKSB7CisgICAgICAgICAgICAgICAgaW5zZXJ0Q2hlY2s8SW50MzJVc2U+KG5vZGUt
PmNoaWxkMSgpLm5vZGUoKSk7CisgICAgICAgICAgICAgICAgbV9ncmFwaC5jb252ZXJ0VG9Db25z
dGFudChub2RlLCBtX2dyYXBoLmZyZWV6ZShtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpLT5udW1iZXJQcm90b3R5cGUoKSkpOworICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChlbmFibGVJbnQ1MigpICYmIG5v
ZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVBbnlJbnQoKSkgeworICAgICAgICAgICAgICAg
IGluc2VydENoZWNrPEludDUyUmVwVXNlPihub2RlLT5jaGlsZDEoKS5ub2RlKCkpOworICAgICAg
ICAgICAgICAgIG1fZ3JhcGguY29udmVydFRvQ29uc3RhbnQobm9kZSwgbV9ncmFwaC5mcmVlemUo
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+bnVtYmVyUHJv
dG90eXBlKCkpKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZU51bWJlcigpKSB7Cisg
ICAgICAgICAgICAgICAgaW5zZXJ0Q2hlY2s8TnVtYmVyVXNlPihub2RlLT5jaGlsZDEoKS5ub2Rl
KCkpOworICAgICAgICAgICAgICAgIG1fZ3JhcGguY29udmVydFRvQ29uc3RhbnQobm9kZSwgbV9n
cmFwaC5mcmVlemUobV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KS0+bnVtYmVyUHJvdG90eXBlKCkpKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZVN5
bWJvbCgpKSB7CisgICAgICAgICAgICAgICAgaW5zZXJ0Q2hlY2s8U3ltYm9sVXNlPihub2RlLT5j
aGlsZDEoKS5ub2RlKCkpOworICAgICAgICAgICAgICAgIG1fZ3JhcGguY29udmVydFRvQ29uc3Rh
bnQobm9kZSwgbV9ncmFwaC5mcmVlemUobV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKS0+c3ltYm9sUHJvdG90eXBlKCkpKTsKKyAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3Vs
ZFNwZWN1bGF0ZUJvb2xlYW4oKSkgeworICAgICAgICAgICAgICAgIGluc2VydENoZWNrPE51bWJl
clVzZT4obm9kZS0+Y2hpbGQxKCkubm9kZSgpKTsKKyAgICAgICAgICAgICAgICBtX2dyYXBoLmNv
bnZlcnRUb0NvbnN0YW50KG5vZGUsIG1fZ3JhcGguZnJlZXplKG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmJvb2xlYW5Qcm90b3R5cGUoKSkpOworICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlm
IChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlRmluYWxPYmplY3QoKSkgeworICAgICAg
ICAgICAgZml4RWRnZTxGaW5hbE9iamVjdFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAg
ICAgbm9kZS0+Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRlKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0
ZUFycmF5KCkpIHsKKyAgICAgICAgICAgIGZpeEVkZ2U8QXJyYXlVc2U+KG5vZGUtPmNoaWxkMSgp
KTsKKyAgICAgICAgICAgIG5vZGUtPmNsZWFyRmxhZ3MoTm9kZU11c3RHZW5lcmF0ZSk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5z
aG91bGRTcGVjdWxhdGVGdW5jdGlvbigpKSB7CisgICAgICAgICAgICBmaXhFZGdlPEZ1bmN0aW9u
VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBub2RlLT5jbGVhckZsYWdzKE5vZGVN
dXN0R2VuZXJhdGUpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorCiAg
ICAgdm9pZCBmaXh1cFRvVGhpcyhOb2RlKiBub2RlKQogICAgIHsKICAgICAgICAgRUNNQU1vZGUg
ZWNtYU1vZGUgPSBtX2dyYXBoLmV4ZWN1dGFibGVGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+
aXNTdHJpY3RNb2RlKCkgPyBTdHJpY3RNb2RlIDogTm90U3RyaWN0TW9kZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSGVhcExvY2F0aW9uLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHSGVhcExvY2F0aW9uLmNwcAppbmRleCA0ZWQwZTQ3NjJhNTFm
MjgwMjdjNzZjOGExNGMwZDJjMThmOWNkYjY2Li4yMGQ5MjY5ZmNlYTI4YWE0NzQzMDk4MWVlZDUz
NTMyNjY0MDQ4Njk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0hl
YXBMb2NhdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdIZWFwTG9j
YXRpb24uY3BwCkBAIC0xNTEsNiArMTUxLDEwIEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0
cmVhbSYgb3V0LCBMb2NhdGlvbktpbmQga2luZCkKICAgICBjYXNlIFR5cGVkQXJyYXlCeXRlT2Zm
c2V0TG9jOgogICAgICAgICBvdXQucHJpbnQoIlR5cGVkQXJyYXlCeXRlT2Zmc2V0TG9jIik7CiAg
ICAgICAgIHJldHVybjsKKworICAgIGNhc2UgUHJvdG90eXBlTG9jOgorICAgICAgICBvdXQucHJp
bnQoIlByb3RvdHlwZUxvYyIpOworICAgICAgICByZXR1cm47CiAgICAgICAgIAogICAgIGNhc2Ug
U3RydWN0dXJlTG9jOgogICAgICAgICBvdXQucHJpbnQoIlN0cnVjdHVyZUxvYyIpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdIZWFwTG9jYXRpb24uaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSGVhcExvY2F0aW9uLmgKaW5kZXggNjc2NTY1Y2ZiZjBk
MTMxMjE5OGNkNDE0YjJhM2JhNjc2MGEwYzkzYi4uYTdlMTQyN2YwYWRmNDRmNjVkZDFkMTY5NzRl
YmUyZGUxNjBiNGNkMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdI
ZWFwTG9jYXRpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0hlYXBMb2Nh
dGlvbi5oCkBAIC02MCw2ICs2MCw3IEBAIGVudW0gTG9jYXRpb25LaW5kIHsKICAgICBTZXR0ZXJM
b2MsCiAgICAgU3RydWN0dXJlTG9jLAogICAgIFR5cGVkQXJyYXlCeXRlT2Zmc2V0TG9jLAorICAg
IFByb3RvdHlwZUxvYywKICAgICBTdGFja0xvYywKICAgICBTdGFja1BheWxvYWRMb2MsCiAgICAg
TWFwQnVja2V0TG9jLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAppbmRleCA2MjhiZmM3
NTJmZmIyOWIzNTk1ZTlkODQ4ZjE1YTIzMzA0MDM2ZTYzLi5hNjkyMTQyOGQxNWEzZTA5ZWMyMDRh
OGE3MmRiOTYxZjY0ZjNjNWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaApAQCAt
MTU0OCw2ICsxNTQ4LDcgQEAgc3RydWN0IE5vZGUgewogICAgICAgICBjYXNlIEdldEJ5SWQ6CiAg
ICAgICAgIGNhc2UgR2V0QnlJZEZsdXNoOgogICAgICAgICBjYXNlIEdldEJ5SWRXaXRoVGhpczoK
KyAgICAgICAgY2FzZSBHZXRQcm90b3R5cGVPZjoKICAgICAgICAgY2FzZSBUcnlHZXRCeUlkOgog
ICAgICAgICBjYXNlIEdldEJ5VmFsOgogICAgICAgICBjYXNlIEdldEJ5VmFsV2l0aFRoaXM6CkBA
IC0yMzExLDYgKzIzMTIsMTEgQEAgc3RydWN0IE5vZGUgewogICAgICAgICByZXR1cm4gaXNBcnJh
eVNwZWN1bGF0aW9uKHByZWRpY3Rpb24oKSk7CiAgICAgfQogCisgICAgYm9vbCBzaG91bGRTcGVj
dWxhdGVGdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gaXNGdW5jdGlvblNwZWN1bGF0
aW9uKHByZWRpY3Rpb24oKSk7CisgICAgfQorCiAgICAgYm9vbCBzaG91bGRTcGVjdWxhdGVQcm94
eU9iamVjdCgpCiAgICAgewogICAgICAgICByZXR1cm4gaXNQcm94eU9iamVjdFNwZWN1bGF0aW9u
KHByZWRpY3Rpb24oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGVUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKaW5k
ZXggNmRjZWMyNGY3MTllYTI3NjEzNWQ4NTI4M2Q5ODVmYjY5MmY0ZjQ2NC4uOGNkZTE2NzY3OThl
N2QyZTI5OTk3OGVjZjg4YmVkYmQ0MzdlYzNjNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTm9kZVR5cGUuaApAQCAtMjUxLDYgKzI1MSw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgREZHIHsKICAgICBtYWNybyhDaGVja1R5cGVJbmZvRmxhZ3MsIE5vZGVNdXN0R2VuZXJhdGUp
IC8qIFRha2VzIGFuIE9wSW5mbyB3aXRoIHRoZSBmbGFncyB5b3Ugd2FudCB0byB0ZXN0IGFyZSBz
ZXQgKi9cCiAgICAgbWFjcm8oQ2hlY2tTdWJDbGFzcywgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAg
IG1hY3JvKFBhcnNlSW50LCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZVJlc3VsdEpTKSBcCisgICAg
bWFjcm8oR2V0UHJvdG90eXBlT2YsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlUmVzdWx0SlMpIFwK
ICAgICBcCiAgICAgLyogQXRvbWljcyBvYmplY3QgZnVuY3Rpb25zLiAqL1wKICAgICBtYWNybyhB
dG9taWNzQWRkLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUhhc1ZhckFy
Z3MpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9u
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCmluZGV4
IDM4YjNhM2M5ZDU4Y2Q4ZGVlOTU4Mzk4ZmYwNmQ3MzkwYzEzOGQ5NWYuLmM4ZmExMTJjOGZkZjJj
YWEwNjgyNzk0ZDc2ZDFjZWE0MGEzYTg4NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPcGVyYXRpb25zLmNwcApAQCAtNTIsNiArNTIsNyBAQAogI2luY2x1ZGUgIkpTQ0lubGlu
ZXMuaCIKICNpbmNsdWRlICJKU0ZpeGVkQXJyYXkuaCIKICNpbmNsdWRlICJKU0dlbmVyaWNUeXBl
ZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oIgorI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0
RnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKICNpbmNsdWRl
ICJKU01hcC5oIgogI2luY2x1ZGUgIkpTU2V0LmgiCkBAIC0yNTE3LDYgKzI1MTgsMjkgQEAgSlND
ZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkpTU2V0RmluZEJ1Y2tldChFeGVjU3RhdGUqIGV4
ZWMsIEpTQ2VsbCogbWFwLCBFbmMKICAgICByZXR1cm4gKmJ1Y2tldDsKIH0KIAorRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRQcm90b3R5cGVPZihFeGVjU3RhdGUqIGV4
ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK3sKKyAgICBWTSYgdm0gPSBleGVjLT52
bSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpLnRvVGhpcyhleGVjLCBTdHJpY3RN
b2RlKTsKKyAgICBpZiAodGhpc1ZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCisgICAgICAgIHJl
dHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgc2NvcGUsIGNyZWF0ZU5vdEFuT2JqZWN0RXJyb3IoZXhl
YywgdGhpc1ZhbHVlKSk7CisKKyAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGpzRHluYW1pY0Nh
c3Q8SlNPYmplY3QqPih2bSwgdGhpc1ZhbHVlKTsKKyAgICBpZiAoIXRoaXNPYmplY3QpIHsKKyAg
ICAgICAgSlNPYmplY3QqIHByb3RvdHlwZSA9IHRoaXNWYWx1ZS5zeW50aGVzaXplUHJvdG90eXBl
KGV4ZWMpOworICAgICAgICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0g
IXByb3RvdHlwZSk7CisgICAgICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBlKSkKKyAgICAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKKyAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShwcm90b3R5cGUpOworICAgIH0KKworICAgIHNjb3BlLnJlbGVhc2UoKTsK
KyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRoaXNPYmplY3QtPmdldFByb3RvdHlwZSh2bSwg
ZXhlYykpOworfQorCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVGhyb3dERkcoRXhlY1N0
YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSB2YWx1ZVRvVGhyb3cpCiB7CiAgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3Bl
cmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKaW5k
ZXggYjE2NWE5YmM2MGE2ODNmNDU1ZTYwZTdmZmZiMjgzNmJiOTExMGUwZC4uNGM0YzFhZDkyYjJj
YTZkZGEyNDMzYmQ5NGI4YWVmMWU4M2E5ZjE4NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPcGVyYXRpb25zLmgKQEAgLTc3LDYgKzc3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25Ub1ByaW1pdGl2ZShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSkg
V1QKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVG9OdW1iZXIoRXhlY1N0
YXRlKiwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uR2V0QnlJZFdpdGhUaGlzKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7CiBF
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5VmFsV2l0aFRoaXMoRXhl
Y1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSkg
V1RGX0lOVEVSTkFMOworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRQ
cm90b3R5cGVPZihFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwogY2hh
ciogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdBcnJheShFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUq
LCB2b2lkKiwgc2l6ZV90KSBXVEZfSU5URVJOQUw7CiBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbk5ld0FycmF5QnVmZmVyKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIHNpemVfdCwgc2l6ZV90
KSBXVEZfSU5URVJOQUw7CiBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0VtcHR5QXJy
YXkoRXhlY1N0YXRlKiwgU3RydWN0dXJlKikgV1RGX0lOVEVSTkFMOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNl
LmNwcAppbmRleCBiYjNhMTFmZWRlZjJkNDFmMTA4NGE1MzkwMGQ4NThiNzYzOTlhYWMzLi41YmY3
YzJlMTIwZDc2Mjc3NjNiOTA5ZGRjYmFiOGMzODViMWNkYzkwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNl
LmNwcApAQCAtNzIzLDcgKzcyMyw4IEBAIGNsYXNzIFByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNl
IDogcHVibGljIFBoYXNlIHsKICAgICAgICAgY2FzZSBHZXRBcmd1bWVudDoKICAgICAgICAgY2Fz
ZSBDYWxsRE9NR2V0dGVyOgogICAgICAgICBjYXNlIEdldER5bmFtaWNWYXI6Ci0gICAgICAgIGNh
c2UgV2Vha01hcEdldDogeworICAgICAgICBjYXNlIFdlYWtNYXBHZXQ6CisgICAgICAgIGNhc2Ug
R2V0UHJvdG90eXBlT2Y6IHsKICAgICAgICAgICAgIHNldFByZWRpY3Rpb24obV9jdXJyZW50Tm9k
ZS0+Z2V0SGVhcFByZWRpY3Rpb24oKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAppbmRleCAyZTU0
Y2IwYjA2NWQ5YmM0OTZiYzA4YmY1ZjcwYjE0YWE2MDZhOTBiLi45Y2Y1MjFiMzI3MTdkMzhiYTdj
ZDQ1YTU3MWNkYmQ4YTkxMGY1ZjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NhZmVUb0V4ZWN1dGUuaApAQCAtMzk5LDYgKzM5OSw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShB
YnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBj
YXNlIEdldE15QXJndW1lbnRCeVZhbE91dE9mQm91bmRzOgogICAgIGNhc2UgRm9yd2FyZFZhcmFy
Z3M6CiAgICAgY2FzZSBDcmVhdGVSZXN0OgorICAgIGNhc2UgR2V0UHJvdG90eXBlT2Y6CiAgICAg
Y2FzZSBTdHJpbmdSZXBsYWNlOgogICAgIGNhc2UgU3RyaW5nUmVwbGFjZVJlZ0V4cDoKICAgICBj
YXNlIEdldFJlZ0V4cE9iamVjdExhc3RJbmRleDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggMzBhYjNhMmY3ZmRiY2QwZDZkYzhhYzgz
ZGE2Nzc2OTE4NTkxYzIwZS4uMTIwN2I4MGNhZDRkOGRlNzAxMGM1YWYxZDFiOTk1MjE2NDgzMzBj
OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5j
cHAKQEAgLTkxODEsMTMgKzkxODEsMjMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRl
T2JqZWN0KEVkZ2UgZWRnZSkKICAgICBzcGVjdWxhdGVPYmplY3QoZWRnZSwgb3BlcmFuZC5ncHIo
KSk7CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZUZ1bmN0aW9uKEVkZ2UgZWRn
ZSwgR1BSUmVnIGNlbGwpCit7CisgICAgc3BlY3VsYXRlQ2VsbFR5cGUoZWRnZSwgY2VsbCwgU3Bl
Y0Z1bmN0aW9uLCBKU0Z1bmN0aW9uVHlwZSk7Cit9CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNw
ZWN1bGF0ZUZ1bmN0aW9uKEVkZ2UgZWRnZSkKIHsKICAgICBpZiAoIW5lZWRzVHlwZUNoZWNrKGVk
Z2UsIFNwZWNGdW5jdGlvbikpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBTcGVjdWxhdGVD
ZWxsT3BlcmFuZCBvcGVyYW5kKHRoaXMsIGVkZ2UpOwotICAgIHNwZWN1bGF0ZUNlbGxUeXBlKGVk
Z2UsIG9wZXJhbmQuZ3ByKCksIFNwZWNGdW5jdGlvbiwgSlNGdW5jdGlvblR5cGUpOworICAgIHNw
ZWN1bGF0ZUZ1bmN0aW9uKGVkZ2UsIG9wZXJhbmQuZ3ByKCkpOworfQorCit2b2lkIFNwZWN1bGF0
aXZlSklUOjpzcGVjdWxhdGVGaW5hbE9iamVjdChFZGdlIGVkZ2UsIEdQUlJlZyBjZWxsKQorewor
ICAgIHNwZWN1bGF0ZUNlbGxUeXBlKGVkZ2UsIGNlbGwsIFNwZWNGaW5hbE9iamVjdCwgRmluYWxP
YmplY3RUeXBlKTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlRmluYWxPYmpl
Y3QoRWRnZSBlZGdlKQpAQCAtOTE5Niw3ICs5MjA2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
c3BlY3VsYXRlRmluYWxPYmplY3QoRWRnZSBlZGdlKQogICAgICAgICByZXR1cm47CiAgICAgCiAg
ICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgb3BlcmFuZCh0aGlzLCBlZGdlKTsKLSAgICBzcGVjdWxh
dGVDZWxsVHlwZShlZGdlLCBvcGVyYW5kLmdwcigpLCBTcGVjRmluYWxPYmplY3QsIEZpbmFsT2Jq
ZWN0VHlwZSk7CisgICAgc3BlY3VsYXRlRmluYWxPYmplY3QoZWRnZSwgb3BlcmFuZC5ncHIoKSk7
CiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZVJlZ0V4cE9iamVjdChFZGdlIGVk
Z2UsIEdQUlJlZyBjZWxsKQpAQCAtMTA3NjIsNiArMTA3NzIsMTM1IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVXZWFrTWFwR2V0KE5vZGUqIG5vZGUpCiAgICAganNWYWx1ZVJlc3VsdChy
ZXN1bHRSZWdzLCBub2RlKTsKIH0KIAordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFBy
b3RvdHlwZU9mKE5vZGUqIG5vZGUpCit7CisgICAgc3dpdGNoIChub2RlLT5jaGlsZDEoKS51c2VL
aW5kKCkpIHsKKyAgICBjYXNlIEFycmF5VXNlOgorICAgIGNhc2UgRnVuY3Rpb25Vc2U6CisgICAg
Y2FzZSBGaW5hbE9iamVjdFVzZTogeworICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBvYmpl
Y3QodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlz
KTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAyKHRoaXMpOworCisgICAgICAgIEdQUlJlZyBv
YmplY3RHUFIgPSBvYmplY3QuZ3ByKCk7CisgICAgICAgIEdQUlJlZyB0ZW1wR1BSID0gdGVtcC5n
cHIoKTsKKyAgICAgICAgR1BSUmVnIHRlbXAyR1BSID0gdGVtcDIuZ3ByKCk7CisKKyAgICAgICAg
c3dpdGNoIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpIHsKKyAgICAgICAgY2FzZSBBcnJheVVz
ZToKKyAgICAgICAgICAgIHNwZWN1bGF0ZUFycmF5KG5vZGUtPmNoaWxkMSgpLCBvYmplY3RHUFIp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRnVuY3Rpb25Vc2U6CisgICAgICAg
ICAgICBzcGVjdWxhdGVGdW5jdGlvbihub2RlLT5jaGlsZDEoKSwgb2JqZWN0R1BSKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEZpbmFsT2JqZWN0VXNlOgorICAgICAgICAgICAg
c3BlY3VsYXRlRmluYWxPYmplY3Qobm9kZS0+Y2hpbGQxKCksIG9iamVjdEdQUik7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAg
IG1faml0LmVtaXRMb2FkU3RydWN0dXJlKCptX2ppdC52bSgpLCBvYmplY3RHUFIsIHRlbXBHUFIs
IHRlbXAyR1BSKTsKKworICAgICAgICBBYnN0cmFjdFZhbHVlJiB2YWx1ZSA9IG1fc3RhdGUuZm9y
Tm9kZShub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIGlmICgodmFsdWUubV90eXBlICYmICEodmFs
dWUubV90eXBlICYgflNwZWNPYmplY3QpKSAmJiB2YWx1ZS5tX3N0cnVjdHVyZS5pc0Zpbml0ZSgp
KSB7CisgICAgICAgICAgICBib29sIGhhc1BvbHlQcm90byA9IGZhbHNlOworICAgICAgICAgICAg
Ym9vbCBoYXNNb25vUHJvdG8gPSBmYWxzZTsKKyAgICAgICAgICAgIHZhbHVlLm1fc3RydWN0dXJl
LmZvckVhY2goWyZdIChSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSkgeworICAgICAgICAg
ICAgICAgIGlmIChzdHJ1Y3R1cmUtPmhhc1BvbHlQcm90bygpKQorICAgICAgICAgICAgICAgICAg
ICBoYXNQb2x5UHJvdG8gPSB0cnVlOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICAgICAgaGFzTW9ub1Byb3RvID0gdHJ1ZTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAg
ICAgICBpZiAoaGFzTW9ub1Byb3RvICYmICFoYXNQb2x5UHJvdG8pIHsKKyNpZiBVU0UoSlNWQUxV
RTY0KQorICAgICAgICAgICAgICAgIG1faml0LmxvYWQ2NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyh0ZW1wR1BSLCBTdHJ1Y3R1cmU6OnByb3RvdHlwZU9mZnNldCgpKSwgdGVtcEdQUik7CisgICAg
ICAgICAgICAgICAganNWYWx1ZVJlc3VsdCh0ZW1wR1BSLCBub2RlKTsKKyNlbHNlCisgICAgICAg
ICAgICAgICAgbV9qaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXBHUFIsIFN0
cnVjdHVyZTo6cHJvdG90eXBlT2Zmc2V0KCkgKyBUYWdPZmZzZXQpLCB0ZW1wMkdQUik7CisgICAg
ICAgICAgICAgICAgbV9qaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXBHUFIs
IFN0cnVjdHVyZTo6cHJvdG90eXBlT2Zmc2V0KCkgKyBQYXlsb2FkT2Zmc2V0KSwgdGVtcEdQUik7
CisgICAgICAgICAgICAgICAganNWYWx1ZVJlc3VsdCh0ZW1wMkdQUiwgdGVtcEdQUiwgbm9kZSk7
CisjZW5kaWYKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIGlmIChoYXNQb2x5UHJvdG8gJiYgIWhhc01vbm9Qcm90bykgeworI2lmIFVTRShKU1ZB
TFVFNjQpCisgICAgICAgICAgICAgICAgbV9qaXQubG9hZDY0KE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKHRlbXBHUFIsIFN0cnVjdHVyZTo6cHJvdG90eXBlT2Zmc2V0KCkpLCB0ZW1wR1BSKTsKKyAg
ICAgICAgICAgICAgICBtX2ppdC56ZXJvRXh0ZW5kMzJUb1B0cih0ZW1wR1BSLCB0ZW1wR1BSKTsK
KyAgICAgICAgICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OkJhc2VJbmRleChvYmpl
Y3RHUFIsIHRlbXBHUFIsIEpJVENvbXBpbGVyOjpUaW1lc0VpZ2h0LCBKU09iamVjdDo6b2Zmc2V0
T2ZJbmxpbmVTdG9yYWdlKCkpLCB0ZW1wR1BSKTsKKyAgICAgICAgICAgICAgICBqc1ZhbHVlUmVz
dWx0KHRlbXBHUFIsIG5vZGUpOworI2Vsc2UKKyAgICAgICAgICAgICAgICBtX2ppdC5sb2FkMzIo
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcEdQUiwgU3RydWN0dXJlOjpwcm90b3R5cGVPZmZz
ZXQoKSArIFBheWxvYWRPZmZzZXQpLCB0ZW1wR1BSKTsKKyAgICAgICAgICAgICAgICBtX2ppdC5s
b2FkMzIoSklUQ29tcGlsZXI6OkJhc2VJbmRleChvYmplY3RHUFIsIHRlbXBHUFIsIEpJVENvbXBp
bGVyOjpUaW1lc0VpZ2h0LCBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgKyBUYWdP
ZmZzZXQpLCB0ZW1wMkdQUik7CisgICAgICAgICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBp
bGVyOjpCYXNlSW5kZXgob2JqZWN0R1BSLCB0ZW1wR1BSLCBKSVRDb21waWxlcjo6VGltZXNFaWdo
dCwgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpICsgUGF5bG9hZE9mZnNldCksIHRl
bXBHUFIpOworICAgICAgICAgICAgICAgIGpzVmFsdWVSZXN1bHQodGVtcDJHUFIsIHRlbXBHUFIs
IG5vZGUpOworI2VuZGlmCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBtX2ppdC5sb2FkNjQoTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcEdQUiwgU3RydWN0dXJlOjpwcm90b3R5cGVPZmZzZXQo
KSksIHRlbXBHUFIpOworICAgICAgICBhdXRvIGlzTW9ub1Byb3RvID0gbV9qaXQuYnJhbmNoSWZO
b3RJbnQzMihKU1ZhbHVlUmVncyh0ZW1wR1BSKSk7CisgICAgICAgIG1faml0Lnplcm9FeHRlbmQz
MlRvUHRyKHRlbXBHUFIsIHRlbXBHUFIpOworICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGls
ZXI6OkJhc2VJbmRleChvYmplY3RHUFIsIHRlbXBHUFIsIEpJVENvbXBpbGVyOjpUaW1lc0VpZ2h0
LCBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkpLCB0ZW1wR1BSKTsKKyAgICAgICAg
aXNNb25vUHJvdG8ubGluaygmbV9qaXQpOworICAgICAgICBqc1ZhbHVlUmVzdWx0KHRlbXBHUFIs
IG5vZGUpOworI2Vsc2UKKyAgICAgICAgbV9qaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKHRlbXBHUFIsIFN0cnVjdHVyZTo6cHJvdG90eXBlT2Zmc2V0KCkgKyBUYWdPZmZzZXQpLCB0
ZW1wMkdQUik7CisgICAgICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0
ZW1wR1BSLCBTdHJ1Y3R1cmU6OnByb3RvdHlwZU9mZnNldCgpICsgUGF5bG9hZE9mZnNldCksIHRl
bXBHUFIpOworICAgICAgICBhdXRvIGlzTW9ub1Byb3RvID0gbV9qaXQuYnJhbmNoMzIoQ0NhbGxI
ZWxwZXJzOjpOb3RFcXVhbCwgdGVtcDJHUFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRh
ZykpOworICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OkJhc2VJbmRleChvYmplY3RH
UFIsIHRlbXBHUFIsIEpJVENvbXBpbGVyOjpUaW1lc0VpZ2h0LCBKU09iamVjdDo6b2Zmc2V0T2ZJ
bmxpbmVTdG9yYWdlKCkgKyBUYWdPZmZzZXQpLCB0ZW1wMkdQUik7CisgICAgICAgIG1faml0Lmxv
YWQzMihKSVRDb21waWxlcjo6QmFzZUluZGV4KG9iamVjdEdQUiwgdGVtcEdQUiwgSklUQ29tcGls
ZXI6OlRpbWVzRWlnaHQsIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSArIFBheWxv
YWRPZmZzZXQpLCB0ZW1wR1BSKTsKKyAgICAgICAgaXNNb25vUHJvdG8ubGluaygmbV9qaXQpOwor
ICAgICAgICBqc1ZhbHVlUmVzdWx0KHRlbXAyR1BSLCB0ZW1wR1BSLCBub2RlKTsKKyNlbmRpZgor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIGNhc2UgT2JqZWN0VXNlOiB7CisgICAgICAgIFNw
ZWN1bGF0ZUNlbGxPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAg
SlNWYWx1ZVJlZ3NUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworCisgICAgICAgIEdQUlJlZyB2YWx1
ZUdQUiA9IHZhbHVlLmdwcigpOworICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVz
dWx0LnJlZ3MoKTsKKworICAgICAgICBzcGVjdWxhdGVPYmplY3Qobm9kZS0+Y2hpbGQxKCksIHZh
bHVlR1BSKTsKKworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7
CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uR2V0UHJvdG90eXBlT2YsIHJlc3VsdFJl
Z3MsIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seSh2YWx1ZUdQUikpOworICAgICAgICBtX2ppdC5l
eGNlcHRpb25DaGVjaygpOworICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUp
OworCisjZWxzZQorICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxs
VGFnKSwgcmVzdWx0UmVncy50YWdHUFIoKSk7CisgICAgICAgIG1faml0Lm1vdmUodmFsdWVHUFIs
IHJlc3VsdFJlZ3MucGF5bG9hZEdQUigpKTsKKyAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAg
ICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25HZXRQcm90b3R5cGVPZiwgcmVzdWx0UmVncywg
cmVzdWx0UmVncyk7CisgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CisgICAgICAgIGpz
VmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSk7CisjZW5kaWYKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICBkZWZhdWx0OiB7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMs
IG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkgcmVzdWx0KHRo
aXMpOworCisgICAgICAgIEpTVmFsdWVSZWdzIHZhbHVlUmVncyA9IHZhbHVlLmpzVmFsdWVSZWdz
KCk7CisgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOworCisg
ICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9u
R2V0UHJvdG90eXBlT2YsIHJlc3VsdFJlZ3MsIHZhbHVlUmVncyk7CisgICAgICAgIG1faml0LmV4
Y2VwdGlvbkNoZWNrKCk7CisgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgfQorfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpT
Qzo6REZHCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5oCmluZGV4IDI1ODIyYWU0OTI1ODJlYmVmOTJkYjFkOTI4MWFiYzA5MjA0MWE4NzAu
LmQxMDkzODA1ZGYxMTg1MGU2MzRlZDIwYWJkYWJmMDkyNjEyMWM2NGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKQEAgLTI4MzQsNiArMjgzNCw3
IEBAIGNsYXNzIFNwZWN1bGF0aXZlSklUIHsKICAgICB2b2lkIGNvbXBpbGVXZWFrTWFwR2V0KE5v
ZGUqKTsKICAgICB2b2lkIGNvbXBpbGVMb2FkS2V5RnJvbU1hcEJ1Y2tldChOb2RlKik7CiAgICAg
dm9pZCBjb21waWxlTG9hZFZhbHVlRnJvbU1hcEJ1Y2tldChOb2RlKik7CisgICAgdm9pZCBjb21w
aWxlR2V0UHJvdG90eXBlT2YoTm9kZSopOwogICAgIAogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgQmFzZU9wZXJhbmRUeXBlLCB0eXBlbmFtZSBQcm9wZXJ0eU9w
ZXJhbmRUeXBlLCB0eXBlbmFtZSBWYWx1ZU9wZXJhbmRUeXBlLCB0eXBlbmFtZSBUYWdUeXBlPgpA
QCAtMzA4Myw3ICszMDg0LDkgQEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQgewogICAgIHZvaWQgc3Bl
Y3VsYXRlT2JqZWN0KEVkZ2UpOwogICAgIHZvaWQgc3BlY3VsYXRlQXJyYXkoRWRnZSwgR1BSUmVn
IGNlbGwpOwogICAgIHZvaWQgc3BlY3VsYXRlQXJyYXkoRWRnZSk7CisgICAgdm9pZCBzcGVjdWxh
dGVGdW5jdGlvbihFZGdlLCBHUFJSZWcgY2VsbCk7CiAgICAgdm9pZCBzcGVjdWxhdGVGdW5jdGlv
bihFZGdlKTsKKyAgICB2b2lkIHNwZWN1bGF0ZUZpbmFsT2JqZWN0KEVkZ2UsIEdQUlJlZyBjZWxs
KTsKICAgICB2b2lkIHNwZWN1bGF0ZUZpbmFsT2JqZWN0KEVkZ2UpOwogICAgIHZvaWQgc3BlY3Vs
YXRlUmVnRXhwT2JqZWN0KEVkZ2UsIEdQUlJlZyBjZWxsKTsKICAgICB2b2lkIHNwZWN1bGF0ZVJl
Z0V4cE9iamVjdChFZGdlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4IDQzZDBkYWNkYTBlYzAwNzcwZmIzOGZhY2Yz
MDc2Nzc1MTk0YjRlMDUuLjE4NGY0NWVmZjE0Yjg5ZjlhNjhmZTc1NThlODljMTYwY2NlNDljNDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQz
Ml82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDMyXzY0LmNwcApAQCAtNDQyNiw2ICs0NDI2LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgY29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0
KG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9CisKKyAgICBjYXNlIEdldFByb3RvdHlwZU9m
OiB7CisgICAgICAgIGNvbXBpbGVHZXRQcm90b3R5cGVPZihub2RlKTsKKyAgICAgICAgYnJlYWs7
CisgICAgfQogICAgICAgICAKICAgICBjYXNlIEdldEJ5T2Zmc2V0OiB7CiAgICAgICAgIFN0b3Jh
Z2VPcGVyYW5kIHN0b3JhZ2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXggY2Y2NmU2YWY2
OWU0MTZkZTZkYzgxZThmNjdjMTc5YTQ0MmZlNjc4Ny4uZDdiNGVjZmIwNDk2ZWI1NDgwNzM0Y2Q1
MWM0MDFhY2U2MTU1YjViMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC00NjQyLDYgKzQ2NDIsMTEgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjb21waWxlR2V0VHlwZWRBcnJh
eUJ5dGVPZmZzZXQobm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KKworICAgIGNhc2UgR2V0
UHJvdG90eXBlT2Y6IHsKKyAgICAgICAgY29tcGlsZUdldFByb3RvdHlwZU9mKG5vZGUpOworICAg
ICAgICBicmVhazsKKyAgICB9CiAgICAgICAgIAogICAgIGNhc2UgR2V0QnlPZmZzZXQ6CiAgICAg
Y2FzZSBHZXRHZXR0ZXJTZXR0ZXJCeU9mZnNldDogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCmluZGV4IDEzMDllOWVhYTE5MTE1NzJkYWFkMWI5NmFm
YWNmMjdmZGVkYThhOTEuLjUxYjMwN2Y2Njk3ZDgyMGQyNmFlYzYyY2JlMGE5MzY4YTE5NWZmODgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKQEAg
LTE0NCw2ICsxNDQsNyBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSog
bm9kZSkKICAgICBjYXNlIFJlYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2U6CiAgICAgY2FzZSBOdWtl
U3RydWN0dXJlQW5kU2V0QnV0dGVyZmx5OgogICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZz
ZXQ6CisgICAgY2FzZSBHZXRQcm90b3R5cGVPZjoKICAgICBjYXNlIE5vdGlmeVdyaXRlOgogICAg
IGNhc2UgU3RvcmVCYXJyaWVyOgogICAgIGNhc2UgRmVuY2VkU3RvcmVCYXJyaWVyOgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDIyODAyMTU0
YjgwMjVmYmZhZDc1MDJmMWM1NmJkODVmZGYxMTkyMWQuLmVlOTU2Zjg0NzYxYTc0ODRhZmMxNTE3
OTIyYTZiODdkYjk4Y2M3ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExv
d2VyREZHVG9CMy5jcHAKQEAgLTgyMSw2ICs4MjEsOSBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewog
ICAgICAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0OgogICAgICAgICAgICAgY29tcGls
ZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0KCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBHZXRQcm90b3R5cGVPZjoKKyAgICAgICAgICAgIGNvbXBpbGVHZXRQcm90b3R5cGVPZigp
OworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQWxsb2NhdGVQcm9wZXJ0eVN0b3Jh
Z2U6CiAgICAgICAgICAgICBjb21waWxlQWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UoKTsKICAgICAg
ICAgICAgIGJyZWFrOwpAQCAtMzQyMyw2ICszNDI2LDgyIEBAIGNsYXNzIExvd2VyREZHVG9CMyB7
CiAKICAgICAgICAgc2V0SW50MzIobV9vdXQuY2FzdFRvSW50MzIobV9vdXQucGhpKHBvaW50ZXJU
eXBlKCksIHNpbXBsZU91dCwgd2FzdGVmdWxPdXQpKSk7CiAgICAgfQorCisgICAgdm9pZCBjb21w
aWxlR2V0UHJvdG90eXBlT2YoKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChtX25vZGUtPmNoaWxk
MSgpLnVzZUtpbmQoKSkgeworICAgICAgICBjYXNlIEFycmF5VXNlOgorICAgICAgICBjYXNlIEZ1
bmN0aW9uVXNlOgorICAgICAgICBjYXNlIEZpbmFsT2JqZWN0VXNlOiB7CisgICAgICAgICAgICBM
VmFsdWUgb2JqZWN0ID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIHN3
aXRjaCAobV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpIHsKKyAgICAgICAgICAgIGNhc2UgQXJy
YXlVc2U6CisgICAgICAgICAgICAgICAgc3BlY3VsYXRlQXJyYXkobV9ub2RlLT5jaGlsZDEoKSwg
b2JqZWN0KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgRnVuY3Rp
b25Vc2U6CisgICAgICAgICAgICAgICAgc3BlY3VsYXRlRnVuY3Rpb24obV9ub2RlLT5jaGlsZDEo
KSwgb2JqZWN0KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgRmlu
YWxPYmplY3RVc2U6CisgICAgICAgICAgICAgICAgc3BlY3VsYXRlRmluYWxPYmplY3QobV9ub2Rl
LT5jaGlsZDEoKSwgb2JqZWN0KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgTFZh
bHVlIHN0cnVjdHVyZSA9IGxvYWRTdHJ1Y3R1cmUob2JqZWN0KTsKKworICAgICAgICAgICAgQWJz
dHJhY3RWYWx1ZSYgdmFsdWUgPSBtX3N0YXRlLmZvck5vZGUobV9ub2RlLT5jaGlsZDEoKSk7Cisg
ICAgICAgICAgICBpZiAoKHZhbHVlLm1fdHlwZSAmJiAhKHZhbHVlLm1fdHlwZSAmIH5TcGVjT2Jq
ZWN0KSkgJiYgdmFsdWUubV9zdHJ1Y3R1cmUuaXNGaW5pdGUoKSkgeworICAgICAgICAgICAgICAg
IGJvb2wgaGFzUG9seVByb3RvID0gZmFsc2U7CisgICAgICAgICAgICAgICAgYm9vbCBoYXNNb25v
UHJvdG8gPSBmYWxzZTsKKyAgICAgICAgICAgICAgICB2YWx1ZS5tX3N0cnVjdHVyZS5mb3JFYWNo
KFsmXSAoUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUpIHsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKHN0cnVjdHVyZS0+aGFzUG9seVByb3RvKCkpCisgICAgICAgICAgICAgICAgICAgICAg
ICBoYXNQb2x5UHJvdG8gPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgICAgICAgICBoYXNNb25vUHJvdG8gPSB0cnVlOworICAgICAgICAgICAgICAgIH0p
OworCisgICAgICAgICAgICAgICAgaWYgKGhhc01vbm9Qcm90byAmJiAhaGFzUG9seVByb3RvKSB7
CisgICAgICAgICAgICAgICAgICAgIHNldEpTVmFsdWUobV9vdXQubG9hZDY0KHN0cnVjdHVyZSwg
bV9oZWFwcy5TdHJ1Y3R1cmVfcHJvdG90eXBlKSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAoaGFzUG9seVByb3Rv
ICYmICFoYXNNb25vUHJvdG8pIHsKKyAgICAgICAgICAgICAgICAgICAgTFZhbHVlIHByb3RvdHlw
ZUJpdHMgPSBtX291dC5sb2FkNjQoc3RydWN0dXJlLCBtX2hlYXBzLlN0cnVjdHVyZV9wcm90b3R5
cGUpOworICAgICAgICAgICAgICAgICAgICBMVmFsdWUgaW5kZXggPSBtX291dC5iaXRBbmQocHJv
dG90eXBlQml0cywgbV9vdXQuY29uc3RJbnQ2NChVSU5UX01BWCkpOworICAgICAgICAgICAgICAg
ICAgICBzZXRKU1ZhbHVlKG1fb3V0LmxvYWQ2NChtX291dC5iYXNlSW5kZXgobV9oZWFwcy5wcm9w
ZXJ0aWVzLmF0QW55TnVtYmVyKCksIG9iamVjdCwgaW5kZXgsIFNjYWxlRWlnaHQsIEpTT2JqZWN0
OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSkpKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgTEJhc2lj
QmxvY2sgY29udGludWF0aW9uID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgICAgIExCYXNp
Y0Jsb2NrIGxvYWRQb2x5UHJvdG8gPSBtX291dC5uZXdCbG9jaygpOworCisgICAgICAgICAgICBM
VmFsdWUgcHJvdG90eXBlQml0cyA9IG1fb3V0LmxvYWQ2NChzdHJ1Y3R1cmUsIG1faGVhcHMuU3Ry
dWN0dXJlX3Byb3RvdHlwZSk7CisgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBkaXJlY3RQcm90
b3R5cGUgPSBtX291dC5hbmNob3IocHJvdG90eXBlQml0cyk7CisgICAgICAgICAgICBtX291dC5i
cmFuY2goaXNJbnQzMihwcm90b3R5cGVCaXRzKSwgdW5zdXJlKGxvYWRQb2x5UHJvdG8pLCB1bnN1
cmUoY29udGludWF0aW9uKSk7CisKKyAgICAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0g
bV9vdXQuYXBwZW5kVG8obG9hZFBvbHlQcm90bywgY29udGludWF0aW9uKTsKKyAgICAgICAgICAg
IExWYWx1ZSBpbmRleCA9IG1fb3V0LmJpdEFuZChwcm90b3R5cGVCaXRzLCBtX291dC5jb25zdElu
dDY0KFVJTlRfTUFYKSk7CisgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBwb2x5UHJvdG8gPSBt
X291dC5hbmNob3IoCisgICAgICAgICAgICAgICAgbV9vdXQubG9hZDY0KG1fb3V0LmJhc2VJbmRl
eChtX2hlYXBzLnByb3BlcnRpZXMuYXRBbnlOdW1iZXIoKSwgb2JqZWN0LCBpbmRleCwgU2NhbGVF
aWdodCwgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpKSkpOworICAgICAgICAgICAg
bV9vdXQuanVtcChjb250aW51YXRpb24pOworCisgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhj
b250aW51YXRpb24sIGxhc3ROZXh0KTsKKyAgICAgICAgICAgIHNldEpTVmFsdWUobV9vdXQucGhp
KEludDY0LCBkaXJlY3RQcm90b3R5cGUsIHBvbHlQcm90bykpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisgICAgICAgIGNhc2UgT2JqZWN0VXNlOiB7CisgICAgICAgICAgICBzZXRK
U1ZhbHVlKHZtQ2FsbChJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkdldFByb3RvdHlw
ZU9mKSwgbV9jYWxsRnJhbWUsIGxvd09iamVjdChtX25vZGUtPmNoaWxkMSgpKSkpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGRlZmF1bHQ6IHsKKyAgICAgICAgICAg
IHNldEpTVmFsdWUodm1DYWxsKEludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uR2V0UHJv
dG90eXBlT2YpLCBtX2NhbGxGcmFtZSwgbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpKSkpOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CiAgICAgCiAg
ICAgdm9pZCBjb21waWxlR2V0QXJyYXlMZW5ndGgoKQogICAgIHsKQEAgLTg5ODcsNyArOTA2Niw3
IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIExWYWx1ZSBzdHJ1Y3R1cmUgPSBsb2Fk
U3RydWN0dXJlKHZhbHVlKTsKIAogICAgICAgICBMVmFsdWUgcHJvdG90eXBlQml0cyA9IG1fb3V0
LmxvYWQ2NChzdHJ1Y3R1cmUsIG1faGVhcHMuU3RydWN0dXJlX3Byb3RvdHlwZSk7Ci0gICAgICAg
IFZhbHVlRnJvbUJsb2NrIGRpcmVjdFByb3RveXBlID0gbV9vdXQuYW5jaG9yKHByb3RvdHlwZUJp
dHMpOworICAgICAgICBWYWx1ZUZyb21CbG9jayBkaXJlY3RQcm90b3R5cGUgPSBtX291dC5hbmNo
b3IocHJvdG90eXBlQml0cyk7CiAgICAgICAgIG1fb3V0LmJyYW5jaChpc0ludDMyKHByb3RvdHlw
ZUJpdHMpLCB1bnN1cmUobG9hZFBvbHlQcm90byksIHVuc3VyZShjb21wYXJlUHJvdG90eXBlKSk7
CiAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8obG9hZFBvbHlQcm90bywgY29tcGFyZVByb3RvdHlw
ZSk7CkBAIC04OTk3LDcgKzkwNzYsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBt
X291dC5qdW1wKGNvbXBhcmVQcm90b3R5cGUpOwogCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNv
bXBhcmVQcm90b3R5cGUsIG5vdFlldEluc3RhbmNlKTsKLSAgICAgICAgTFZhbHVlIGN1cnJlbnRQ
cm90b3R5cGUgPSBtX291dC5waGkoSW50NjQsIGRpcmVjdFByb3RveXBlLCBwb2x5UHJvdG8pOwor
ICAgICAgICBMVmFsdWUgY3VycmVudFByb3RvdHlwZSA9IG1fb3V0LnBoaShJbnQ2NCwgZGlyZWN0
UHJvdG90eXBlLCBwb2x5UHJvdG8pOwogICAgICAgICBWYWx1ZUZyb21CbG9jayBpc0luc3RhbmNl
UmVzdWx0ID0gbV9vdXQuYW5jaG9yKG1fb3V0LmJvb2xlYW5UcnVlKTsKICAgICAgICAgbV9vdXQu
YnJhbmNoKAogICAgICAgICAgICAgbV9vdXQuZXF1YWwoY3VycmVudFByb3RvdHlwZSwgcHJvdG90
eXBlKSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSW50cmluc2ljRW1p
dHRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0ludHJpbnNpY0VtaXR0ZXIuY3Bw
CmluZGV4IDRmYjdhNTkwOWRkZDVhZmMyYzU0MWQyYTNiMmViYWEyY2Q3Nzc0NzYuLmE1ZTBhYzk5
YzI5ZWYyNGI5OTJlN2EzNTMzY2VlMTRlOTAyNTE1MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSW50cmluc2ljRW1pdHRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9JbnRyaW5zaWNFbWl0dGVyLmNwcApAQCAtNjMsNiArNjMsMTEgQEAgYm9vbCBJ
bnRyaW5zaWNHZXR0ZXJBY2Nlc3NDYXNlOjpjYW5FbWl0SW50cmluc2ljR2V0dGVyKEpTRnVuY3Rp
b24qIGdldHRlciwgU3RydWMKICAgICAgICAgCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
KyAgICBjYXNlIFVuZGVyc2NvcmVQcm90b0ludHJpbnNpYzogeworICAgICAgICBhdXRvIGdldFBy
b3RvdHlwZU1ldGhvZCA9IHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCktPm1ldGhvZFRhYmxlLmdldFBy
b3RvdHlwZTsKKyAgICAgICAgTWV0aG9kVGFibGU6OkdldFByb3RvdHlwZUZ1bmN0aW9uUHRyIGRl
ZmF1bHRHZXRQcm90b3R5cGUgPSBKU09iamVjdDo6Z2V0UHJvdG90eXBlOworICAgICAgICByZXR1
cm4gZ2V0UHJvdG90eXBlTWV0aG9kID09IGRlZmF1bHRHZXRQcm90b3R5cGU7CisgICAgfQogICAg
IGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC0xMjUsNiArMTMwLDE3
IEBAIHZvaWQgSW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZTo6ZW1pdEludHJpbnNpY0dldHRlcihB
Y2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAg
ICBjYXNlIFVuZGVyc2NvcmVQcm90b0ludHJpbnNpYzogeworICAgICAgICBpZiAoc3RydWN0dXJl
KCktPmhhc01vbm9Qcm90bygpKSB7CisgICAgICAgICAgICBqaXQubW92ZVZhbHVlKHN0cnVjdHVy
ZSgpLT5zdG9yZWRQcm90b3R5cGUoKSwgdmFsdWVSZWdzKTsKKyAgICAgICAgICAgIHN0YXRlLnN1
Y2NlZWQoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBqaXQubG9h
ZFZhbHVlKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIHNpemVvZihFbmNvZGVkSlNW
YWx1ZSkgKiBzdHJ1Y3R1cmUoKS0+cG9seVByb3RvT2Zmc2V0KCkgKyBKU09iamVjdDo6b2Zmc2V0
T2ZJbmxpbmVTdG9yYWdlKCkpLCB2YWx1ZVJlZ3MpOworICAgICAgICBzdGF0ZS5zdWNjZWVkKCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5z
aWMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmNwcAppbmRl
eCA5ZDEyZmZmOWRmNzVjZTE3ZDZhMDFiMzAzNmExYmE3YmExMzYzOTEzLi45YjViZDA4MDhkNjIy
ZWQ2NTQ5MzAwOTAxODRjYmY2M2IxYjExMDU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRyaW5zaWMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludHJpbnNpYy5jcHAKQEAgLTExMSw2ICsxMTEsMTAgQEAgY29uc3QgY2hhciogaW50
cmluc2ljTmFtZShJbnRyaW5zaWMgaW50cmluc2ljKQogICAgICAgICByZXR1cm4gIlJlZ0V4cFRl
c3RJbnRyaW5zaWMiOwogICAgIGNhc2UgUmVnRXhwVGVzdEZhc3RJbnRyaW5zaWM6CiAgICAgICAg
IHJldHVybiAiUmVnRXhwVGVzdEZhc3RJbnRyaW5zaWMiOworICAgIGNhc2UgT2JqZWN0R2V0UHJv
dG90eXBlT2ZJbnRyaW5zaWM6CisgICAgICAgIHJldHVybiAiT2JqZWN0R2V0UHJvdG90eXBlT2ZJ
bnRyaW5zaWMiOworICAgIGNhc2UgUmVmbGVjdEdldFByb3RvdHlwZU9mSW50cmluc2ljOgorICAg
ICAgICByZXR1cm4gIlJlZmxlY3RHZXRQcm90b3R5cGVPZkludHJpbnNpYyI7CiAgICAgY2FzZSBT
dHJpbmdQcm90b3R5cGVWYWx1ZU9mSW50cmluc2ljOgogICAgICAgICByZXR1cm4gIlN0cmluZ1By
b3RvdHlwZVZhbHVlT2ZJbnRyaW5zaWMiOwogICAgIGNhc2UgU3RyaW5nUHJvdG90eXBlUmVwbGFj
ZUludHJpbnNpYzoKQEAgLTE4OSw2ICsxOTMsOCBAQCBjb25zdCBjaGFyKiBpbnRyaW5zaWNOYW1l
KEludHJpbnNpYyBpbnRyaW5zaWMpCiAgICAgICAgIHJldHVybiAiVHlwZWRBcnJheUJ5dGVMZW5n
dGhJbnRyaW5zaWMiOwogICAgIGNhc2UgVHlwZWRBcnJheUJ5dGVPZmZzZXRJbnRyaW5zaWM6CiAg
ICAgICAgIHJldHVybiAiVHlwZWRBcnJheUJ5dGVPZmZzZXRJbnRyaW5zaWMiOworICAgIGNhc2Ug
VW5kZXJzY29yZVByb3RvSW50cmluc2ljOgorICAgICAgICByZXR1cm4gIlVuZGVyc2NvcmVQcm90
b0ludHJpbnNpYyI7CiAgICAgY2FzZSBERkdUcnVlSW50cmluc2ljOgogICAgICAgICByZXR1cm4g
IkRGR1RydWVJbnRyaW5zaWMiOwogICAgIGNhc2UgT1NSRXhpdEludHJpbnNpYzoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmgKaW5kZXggMjlkOTVmNzI5YWM1NGMxZjNh
NTcwZmFiZjY4NGZlN2UzYjU3N2Q5MC4uMDZjYjI4YTQyZWJhMWYwOTg2OGJlNDkyZjExYjI1ZjM5
ZjJiOTM1OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmlu
c2ljLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmgKQEAg
LTY4LDYgKzY4LDggQEAgZW51bSBJbnRyaW5zaWMgewogICAgIFJlZ0V4cEV4ZWNJbnRyaW5zaWMs
CiAgICAgUmVnRXhwVGVzdEludHJpbnNpYywKICAgICBSZWdFeHBUZXN0RmFzdEludHJpbnNpYywK
KyAgICBPYmplY3RHZXRQcm90b3R5cGVPZkludHJpbnNpYywKKyAgICBSZWZsZWN0R2V0UHJvdG90
eXBlT2ZJbnRyaW5zaWMsCiAgICAgU3RyaW5nUHJvdG90eXBlVmFsdWVPZkludHJpbnNpYywKICAg
ICBTdHJpbmdQcm90b3R5cGVSZXBsYWNlSW50cmluc2ljLAogICAgIFN0cmluZ1Byb3RvdHlwZVJl
cGxhY2VSZWdFeHBJbnRyaW5zaWMsCkBAIC0xMDksNiArMTExLDcgQEAgZW51bSBJbnRyaW5zaWMg
ewogICAgIFR5cGVkQXJyYXlMZW5ndGhJbnRyaW5zaWMsCiAgICAgVHlwZWRBcnJheUJ5dGVMZW5n
dGhJbnRyaW5zaWMsCiAgICAgVHlwZWRBcnJheUJ5dGVPZmZzZXRJbnRyaW5zaWMsCisgICAgVW5k
ZXJzY29yZVByb3RvSW50cmluc2ljLAogCiAgICAgLy8gRGVidWdnaW5nIGludHJpbnNpY3MuIFRo
ZXNlIGFyZSBtZWFudCB0byBiZSB1c2VkIGFzIHRlc3RpbmcgaGFja3Mgd2l0aGluCiAgICAgLy8g
anNjLmNwcCBhbmQgc2hvdWxkIG5ldmVyIGJlIGV4cG9zZWQgdG8gdXNlcnMuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggNDBlNGY0
MWU4MjNjNjMwYjVhN2NlNWM2NTkxNzU3MDUxZmYxMGYzMS4uMTcwZTI2MGI2MDAyOWZlM2YzNTg5
YTgyZjBhYjE1NmI2MmUzYzMwMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtNDUwLDcgKzQ1MCw3IEBAIHZvaWQgSlNHbG9iYWxP
YmplY3Q6OmluaXQoVk0mIHZtKQogICAgIG1fbnVsbFNldHRlckZ1bmN0aW9uLnNldCh2bSwgdGhp
cywgTnVsbFNldHRlckZ1bmN0aW9uOjpjcmVhdGUodm0sIE51bGxTZXR0ZXJGdW5jdGlvbjo6Y3Jl
YXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSkpOwogICAg
IG1fb2JqZWN0UHJvdG90eXBlLnNldCh2bSwgdGhpcywgT2JqZWN0UHJvdG90eXBlOjpjcmVhdGUo
dm0sIHRoaXMsIE9iamVjdFByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBqc051
bGwoKSkpKTsKICAgICBHZXR0ZXJTZXR0ZXIqIHByb3RvQWNjZXNzb3IgPSBHZXR0ZXJTZXR0ZXI6
OmNyZWF0ZSh2bSwgdGhpcyk7Ci0gICAgcHJvdG9BY2Nlc3Nvci0+c2V0R2V0dGVyKHZtLCB0aGlz
LCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDAsIG1ha2VTdHJpbmcoImdldCAiLCB2bS5w
cm9wZXJ0eU5hbWVzLT51bmRlcnNjb3JlUHJvdG8uc3RyaW5nKCkpLCBnbG9iYWxGdW5jUHJvdG9H
ZXR0ZXIpKTsKKyAgICBwcm90b0FjY2Vzc29yLT5zZXRHZXR0ZXIodm0sIHRoaXMsIEpTRnVuY3Rp
b246OmNyZWF0ZSh2bSwgdGhpcywgMCwgbWFrZVN0cmluZygiZ2V0ICIsIHZtLnByb3BlcnR5TmFt
ZXMtPnVuZGVyc2NvcmVQcm90by5zdHJpbmcoKSksIGdsb2JhbEZ1bmNQcm90b0dldHRlciwgVW5k
ZXJzY29yZVByb3RvSW50cmluc2ljKSk7CiAgICAgcHJvdG9BY2Nlc3Nvci0+c2V0U2V0dGVyKHZt
LCB0aGlzLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDAsIG1ha2VTdHJpbmcoInNldCAi
LCB2bS5wcm9wZXJ0eU5hbWVzLT51bmRlcnNjb3JlUHJvdG8uc3RyaW5nKCkpLCBnbG9iYWxGdW5j
UHJvdG9TZXR0ZXIpKTsKICAgICBtX29iamVjdFByb3RvdHlwZS0+cHV0RGlyZWN0Tm9uSW5kZXhB
Y2Nlc3Nvcih2bSwgdm0ucHJvcGVydHlOYW1lcy0+dW5kZXJzY29yZVByb3RvLCBwcm90b0FjY2Vz
c29yLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3IgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pOwogICAgIG1fZnVuY3Rpb25Qcm90b3R5cGUtPnN0cnVjdHVyZSgpLT5zZXRQcm90b3R5
cGVXaXRob3V0VHJhbnNpdGlvbih2bSwgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlv
bnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5j
dGlvbnMuY3BwCmluZGV4IDM3MTkxOTc1ZTE5MTQ3NGFiNmVhMzRmZGJjMmE4YWRiZjk3YWFhMDIu
LmViZDhkOWU3ZDY0NDY0MTA5NWY0NWU5MGRkODJkNWU4MGE0ZDk2YWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9u
cy5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFVuaWNvZGU7CiAKIG5hbWVz
cGFjZSBKU0MgewogCi1zdGF0aWMgY29uc3QgY2hhciogY29uc3QgT2JqZWN0UHJvdG9DYWxsZWRP
bk51bGxPclVuZGVmaW5lZEVycm9yID0gIk9iamVjdC5wcm90b3R5cGUuX19wcm90b19fIGNhbGxl
ZCBvbiBudWxsIG9yIHVuZGVmaW5lZCI7Citjb25zdCBjaGFyKiBjb25zdCBPYmplY3RQcm90b0Nh
bGxlZE9uTnVsbE9yVW5kZWZpbmVkRXJyb3IgPSAiT2JqZWN0LnByb3RvdHlwZS5fX3Byb3RvX18g
Y2FsbGVkIG9uIG51bGwgb3IgdW5kZWZpbmVkIjsKIAogdGVtcGxhdGU8dW5zaWduZWQgY2hhcmFj
dGVyc0NvdW50Pgogc3RhdGljIEJpdG1hcDwyNTY+IG1ha2VDaGFyYWN0ZXJCaXRtYXAoY29uc3Qg
Y2hhciAoJmNoYXJhY3RlcnMpW2NoYXJhY3RlcnNDb3VudF0pCkBAIC03MDYsMTEgKzcwNiwxMSBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNQcm90b0dldHRlcihFeGVj
U3RhdGUqIGV4ZWMpCiAKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgp
LnRvVGhpcyhleGVjLCBTdHJpY3RNb2RlKTsKICAgICBpZiAodGhpc1ZhbHVlLmlzVW5kZWZpbmVk
T3JOdWxsKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBB
U0NJSUxpdGVyYWwoT2JqZWN0UHJvdG9DYWxsZWRPbk51bGxPclVuZGVmaW5lZEVycm9yKSk7Cisg
ICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgc2NvcGUsIGNyZWF0ZU5vdEFuT2JqZWN0
RXJyb3IoZXhlYywgdGhpc1ZhbHVlKSk7CiAKICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGpz
RHluYW1pY0Nhc3Q8SlNPYmplY3QqPih2bSwgdGhpc1ZhbHVlKTsKICAgICBpZiAoIXRoaXNPYmpl
Y3QpIHsKLSAgICAgICAgSlNPYmplY3QqIHByb3RvdHlwZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpLnN5
bnRoZXNpemVQcm90b3R5cGUoZXhlYyk7CisgICAgICAgIEpTT2JqZWN0KiBwcm90b3R5cGUgPSB0
aGlzVmFsdWUuc3ludGhlc2l6ZVByb3RvdHlwZShleGVjKTsKICAgICAgICAgRVhDRVBUSU9OX0FT
U0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpID09ICFwcm90b3R5cGUpOwogICAgICAgICBpZiAoVU5M
SUtFTFkoIXByb3RvdHlwZSkpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpT
VmFsdWUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdEZ1bmN0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3RGdW5jdGlvbnMuaAppbmRleCA0ZTg1ZWRhZWRhNGYwMDUxNzcxODg1NzRlNTMx
ZDRkNTM1YzQwZWJhLi5iNjc5OWUyNzYyZGI5ZjMxM2Y4ZDQxZTEzMzVlMjljZjBmODIxZTc3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1
bmN0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0RnVuY3Rpb25zLmgKQEAgLTM1LDYgKzM1LDggQEAgY2xhc3MgSlNPYmplY3Q7CiAvLyBGSVhN
RTogVGhlc2UgZnVuY3Rpb25zIHNob3VsZCByZWFsbHkgYmUgaW4gSlNHbG9iYWxPYmplY3QuY3Bw
LCBidXQgcHV0dGluZyB0aGVtIHRoZXJlCiAvLyBpcyBhIDAuNSUgcmVkdWN0aW9uLgogCitleHRl
cm4gY29uc3QgY2hhciogY29uc3QgT2JqZWN0UHJvdG9DYWxsZWRPbk51bGxPclVuZGVmaW5lZEVy
cm9yOworCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNFdmFsKEV4ZWNT
dGF0ZSopOwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jUGFyc2VJbnQo
RXhlY1N0YXRlKik7CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNQYXJz
ZUZsb2F0KEV4ZWNTdGF0ZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCmluZGV4IDIyODcyN2I2ZTUzNDViOWNjZmI1MTg0YjM0
OGQ5MzA5Zjc1NDdiZTYuLmY2NzBiZDMyNDAwNzY0ZjM5YTYxZjM0NGQ0OGNhNmJkMzY4OGNlYjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVj
dG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1
Y3Rvci5jcHAKQEAgLTY3LDcgKzY3LDcgQEAgY29uc3QgQ2xhc3NJbmZvIE9iamVjdENvbnN0cnVj
dG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZJbnRlcm5hbEZ1bmN0aW9uOjpzX2kKIAogLyog
U291cmNlIGZvciBPYmplY3RDb25zdHJ1Y3Rvci5sdXQuaAogQGJlZ2luIG9iamVjdENvbnN0cnVj
dG9yVGFibGUKLSAgZ2V0UHJvdG90eXBlT2YgICAgICAgICAgICBvYmplY3RDb25zdHJ1Y3Rvckdl
dFByb3RvdHlwZU9mICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgZ2V0UHJvdG90
eXBlT2YgICAgICAgICAgICBvYmplY3RDb25zdHJ1Y3RvckdldFByb3RvdHlwZU9mICAgICAgICAg
ICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEgT2JqZWN0R2V0UHJvdG90eXBlT2ZJbnRyaW5zaWMKICAg
c2V0UHJvdG90eXBlT2YgICAgICAgICAgICBvYmplY3RDb25zdHJ1Y3RvclNldFByb3RvdHlwZU9m
ICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKICAgZ2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yICBvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5RGVzY3JpcHRvciAgIERvbnRFbnVt
fEZ1bmN0aW9uIDIKICAgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyBvYmplY3RDb25zdHJ1Y3Rv
ckdldE93blByb3BlcnR5RGVzY3JpcHRvcnMgIERvbnRFbnVtfEZ1bmN0aW9uIDEKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZmxlY3RPYmplY3QuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVmbGVjdE9iamVjdC5jcHAKaW5kZXggNDBlMTlm
M2Q1NDUzZjdiZTBiNjRkMzE2NzVjYjM5YmZiNjMzMDE1Yy4uZGQwZTE4ZTE0NDZiYTI2OWU3OWUw
ZGY0Yjc4ZGY2YTU2ZDNlNzg4YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVmbGVjdE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVmbGVjdE9iamVjdC5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgY29uc3QgQ2xhc3NJbmZvIFJl
ZmxlY3RPYmplY3Q6OnNfaW5mbyA9IHsgIk9iamVjdCIsICZCYXNlOjpzX2luZm8sICZyZWZsZWN0
T2JqZWMKICAgICBkZWxldGVQcm9wZXJ0eSAgICAgICAgICAgSlNCdWlsdGluICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCiAgICAgZ2V0ICAgICAgICAgICAg
ICAgICAgICAgIHJlZmxlY3RPYmplY3RHZXQgICAgICAgICAgICAgICAgICAgICAgRG9udEVudW18
RnVuY3Rpb24gMgogICAgIGdldE93blByb3BlcnR5RGVzY3JpcHRvciByZWZsZWN0T2JqZWN0R2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yIERvbnRFbnVtfEZ1bmN0aW9uIDIKLSAgICBnZXRQcm90b3R5
cGVPZiAgICAgICAgICAgcmVmbGVjdE9iamVjdEdldFByb3RvdHlwZU9mICAgICAgICAgICBEb250
RW51bXxGdW5jdGlvbiAxCisgICAgZ2V0UHJvdG90eXBlT2YgICAgICAgICAgIHJlZmxlY3RPYmpl
Y3RHZXRQcm90b3R5cGVPZiAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMSBSZWZsZWN0R2V0
UHJvdG90eXBlT2ZJbnRyaW5zaWMKICAgICBoYXMgICAgICAgICAgICAgICAgICAgICAgSlNCdWls
dGluICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCiAgICAg
aXNFeHRlbnNpYmxlICAgICAgICAgICAgIHJlZmxlY3RPYmplY3RJc0V4dGVuc2libGUgICAgICAg
ICAgICAgRG9udEVudW18RnVuY3Rpb24gMQogICAgIG93bktleXMgICAgICAgICAgICAgICAgICBy
ZWZsZWN0T2JqZWN0T3duS2V5cyAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA4M2M3M2ZmNzkxYjI4NzU5MzYxMzNjNDdhYzk5NWZhOThmNGRjZjAzLi42MDIwZDRl
MjgxY2FlNGNjMTc4M2ZmODNlYmMyYmVlMDMyMDhmYmIzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMTctMTAtMTAgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAg
ICAgICAgW0pTQ10gX19wcm90b19fIGdldHRlciBzaG91bGQgYmUgZmFzdAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4MDY3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBqcy9vYmplY3QtbGl0ZXJhbC1z
aG9ydGhhbmQtY29uc3RydWN0aW9uLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBqcy9zY3JpcHQt
dGVzdHMvb2JqZWN0LWxpdGVyYWwtc2hvcnRoYW5kLWNvbnN0cnVjdGlvbi5qczoKKyAgICAgICAg
KHNldCAyKToKKyAgICAgICAgKGdldCAxKToKKyAgICAgICAgKiBqcy9zY3JpcHQtdGVzdHMvc2xv
cHB5LWdldHRlci1zZXR0ZXItZ2xvYmFsLW9iamVjdC5qczoKKyAgICAgICAgKiBqcy9zbG9wcHkt
Z2V0dGVyLXNldHRlci1nbG9iYWwtb2JqZWN0LWV4cGVjdGVkLnR4dDoKKwogMjAxNy0xMC0wOSAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIENhbGxpbmcgZmlsZVN5
c3RlbURpcmVjdG9yeUVudHJ5LmdldERpcmVjdG9yeSgpIHdpdGggZW1wdHkgcGF0aCBzaG91bGQg
bm90IGZhaWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL29iamVjdC1saXRlcmFsLXNob3J0
aGFuZC1jb25zdHJ1Y3Rpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvb2JqZWN0LWxp
dGVyYWwtc2hvcnRoYW5kLWNvbnN0cnVjdGlvbi1leHBlY3RlZC50eHQKaW5kZXggZWUxNmI4NTli
YmMyNzI3MjE0ODQ0ZWJhMmYyOTNlZThkODUzZDQ3MC4uNmZiMTc3NWIwNTMxODhmMGZlM2UzOGY1
YTdiNDhkOGI5ZTBjYTE2MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvanMvb2JqZWN0LWxpdGVy
YWwtc2hvcnRoYW5kLWNvbnN0cnVjdGlvbi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
anMvb2JqZWN0LWxpdGVyYWwtc2hvcnRoYW5kLWNvbnN0cnVjdGlvbi1leHBlY3RlZC50eHQKQEAg
LTY0LDcgKzY0LDcgQEAgUEFTUyAhIU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioe3Nl
dCA0Mih2YWx1ZSl7fX0sICc0MicpLnNldCBpcyB0cnVlCiBQQVNTIHRoaXMuX19wcm90b19fID0g
W10gdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQ2Fubm90IHNldCBwcm90b3R5cGUgb2YgaW1t
dXRhYmxlIHByb3RvdHlwZSBvYmplY3QuCiBQQVNTICh7X19wcm90b19fOiB0aGlzLl9fcHJvdG9f
X30pIGluc3RhbmNlb2YgQXJyYXkgaXMgZmFsc2UKIFBBU1MgX19wcm90b19fID0gW10gdGhyZXcg
ZXhjZXB0aW9uIFR5cGVFcnJvcjogT2JqZWN0LnByb3RvdHlwZS5fX3Byb3RvX18gY2FsbGVkIG9u
IG51bGwgb3IgdW5kZWZpbmVkLgotUEFTUyAoe19fcHJvdG9fXzogX19wcm90b19ffSkgaW5zdGFu
Y2VvZiBBcnJheSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBPYmplY3QucHJvdG90eXBlLl9f
cHJvdG9fXyBjYWxsZWQgb24gbnVsbCBvciB1bmRlZmluZWQuCitQQVNTICh7X19wcm90b19fOiBf
X3Byb3RvX199KSBpbnN0YW5jZW9mIEFycmF5IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IHVu
ZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdfX3Byb3RvX18nKS4KIFN5bnRh
eEVycm9ycwogUEFTUyAoe2JyZWFrfSkgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBDYW5u
b3QgdXNlIHRoZSBrZXl3b3JkICdicmVhaycgYXMgYSBzaG9ydGhhbmQgcHJvcGVydHkgbmFtZS4u
CiBQQVNTICh7Y2FzZX0pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogQ2Fubm90IHVzZSB0
aGUga2V5d29yZCAnY2FzZScgYXMgYSBzaG9ydGhhbmQgcHJvcGVydHkgbmFtZS4uCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvb2JqZWN0LWxpdGVyYWwtc2hvcnRoYW5k
LWNvbnN0cnVjdGlvbi5qcyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9vYmplY3QtbGl0
ZXJhbC1zaG9ydGhhbmQtY29uc3RydWN0aW9uLmpzCmluZGV4IDA0NjBiNjZiOTE3YTNlNTJhYTc3
MGM0MWMwZjQ1ZmYyMDU3OGFjNTMuLmQ2MDQ4OTQzMjc2NzFkOWE3MmFiZDA5Zjk0MWE3NTU2OWI1
ZTdhZjkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9vYmplY3QtbGl0
ZXJhbC1zaG9ydGhhbmQtY29uc3RydWN0aW9uLmpzCisrKyBiL0xheW91dFRlc3RzL2pzL3Njcmlw
dC10ZXN0cy9vYmplY3QtbGl0ZXJhbC1zaG9ydGhhbmQtY29uc3RydWN0aW9uLmpzCkBAIC0xMTMs
NyArMTEzLDcgQEAgZnVuY3Rpb24gdGVzdFNob3J0aGFuZENvbnN0cnVjdGlvbk5vdEVxdWl2YWxl
bnQoZXhwcjEsIGV4cHIyKSB7CiBzaG91bGRUaHJvdygidGhpcy5fX3Byb3RvX18gPSBbXSIpOwog
c2hvdWxkQmVGYWxzZSgiKHtfX3Byb3RvX186IHRoaXMuX19wcm90b19ffSkgaW5zdGFuY2VvZiBB
cnJheSIpOwogc2hvdWxkVGhyb3coIl9fcHJvdG9fXyA9IFtdIiwgJyJUeXBlRXJyb3I6IE9iamVj
dC5wcm90b3R5cGUuX19wcm90b19fIGNhbGxlZCBvbiBudWxsIG9yIHVuZGVmaW5lZCInKTsKLXNo
b3VsZFRocm93KCIoe19fcHJvdG9fXzogX19wcm90b19ffSkgaW5zdGFuY2VvZiBBcnJheSIsICci
VHlwZUVycm9yOiBPYmplY3QucHJvdG90eXBlLl9fcHJvdG9fXyBjYWxsZWQgb24gbnVsbCBvciB1
bmRlZmluZWQiJyk7CitzaG91bGRUaHJvdygiKHtfX3Byb3RvX186IF9fcHJvdG9fX30pIGluc3Rh
bmNlb2YgQXJyYXkiLCAnIlR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2
YWx1YXRpbmcgXCdfX3Byb3RvX19cJykiJyk7CiAKIC8vIEtleXdvcmRzIC0gU3ludGF4IEVycm9y
cwogZGVidWcoIlN5bnRheEVycm9ycyIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvc2Ny
aXB0LXRlc3RzL3Nsb3BweS1nZXR0ZXItc2V0dGVyLWdsb2JhbC1vYmplY3QuanMgYi9MYXlvdXRU
ZXN0cy9qcy9zY3JpcHQtdGVzdHMvc2xvcHB5LWdldHRlci1zZXR0ZXItZ2xvYmFsLW9iamVjdC5q
cwppbmRleCBlYmNiZWE5OTlmYzI5MTY4ZWU4OThmOTUyZGZmN2E0MGEzNmE4YzkzLi44ODAzZTZi
OWJlY2EwY2QwY2NjMDdhMzE2MmM1ODMxMzVhOTUyODk1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9qcy9zY3JpcHQtdGVzdHMvc2xvcHB5LWdldHRlci1zZXR0ZXItZ2xvYmFsLW9iamVjdC5qcwor
KysgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvc2xvcHB5LWdldHRlci1zZXR0ZXItZ2xv
YmFsLW9iamVjdC5qcwpAQCAtMjUsMTIgKzI1LDEyIEBACiBzaG91bGROb3RUaHJvdygiT2JqZWN0
LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihPYmplY3QucHJvdG90eXBlLCdfX3Byb3RvX18nKS5n
ZXQoKSIpOwogc2hvdWxkTm90VGhyb3coIk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
T2JqZWN0LnByb3RvdHlwZSwnX19wcm90b19fJykuc2V0KFsnZm9vJ10pIik7CiAKLXNob3VsZFRo
cm93KCIoMCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE9iamVjdC5wcm90b3R5cGUs
J19fcHJvdG9fXycpLmdldCkoKSIsICJcIlR5cGVFcnJvcjogT2JqZWN0LnByb3RvdHlwZS5fX3By
b3RvX18gY2FsbGVkIG9uIG51bGwgb3IgdW5kZWZpbmVkXCIiKTsKK3Nob3VsZFRocm93KCIoMCxP
YmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE9iamVjdC5wcm90b3R5cGUsJ19fcHJvdG9f
XycpLmdldCkoKSIsICJcIlR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2
YWx1YXRpbmcgJygwLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoT2JqZWN0LnByb3Rv
dHlwZSwnX19wcm90b19fJykuZ2V0KSgpJylcIiIpOwogc2hvdWxkVGhyb3coIigwLE9iamVjdC5n
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoT2JqZWN0LnByb3RvdHlwZSwnX19wcm90b19fJykuc2V0
KShbJ2ZvbyddKSIsICJcIlR5cGVFcnJvcjogT2JqZWN0LnByb3RvdHlwZS5fX3Byb3RvX18gY2Fs
bGVkIG9uIG51bGwgb3IgdW5kZWZpbmVkXCIiKTsKIAogCiB2YXIgdG9wX2xldmVsX3Nsb3BweV9n
ZXR0ZXIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE9iamVjdC5wcm90b3R5cGUs
J19fcHJvdG9fXycpLmdldDsKLXNob3VsZFRocm93KCJ0b3BfbGV2ZWxfc2xvcHB5X2dldHRlcigp
OyIsICJcIlR5cGVFcnJvcjogT2JqZWN0LnByb3RvdHlwZS5fX3Byb3RvX18gY2FsbGVkIG9uIG51
bGwgb3IgdW5kZWZpbmVkXCIiKTsKK3Nob3VsZFRocm93KCJ0b3BfbGV2ZWxfc2xvcHB5X2dldHRl
cigpOyIsICJcIlR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRp
bmcgJ3RvcF9sZXZlbF9zbG9wcHlfZ2V0dGVyKCknKVwiIik7CiAKIHZhciB0b3BfbGV2ZWxfc2xv
cHB5X3NldHRlciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoT2JqZWN0LnByb3Rv
dHlwZSwnX19wcm90b19fJykuc2V0Owogc2hvdWxkVGhyb3coInRvcF9sZXZlbF9zbG9wcHlfc2V0
dGVyKFsnZm9vJ10pOyIsICJcIlR5cGVFcnJvcjogT2JqZWN0LnByb3RvdHlwZS5fX3Byb3RvX18g
Y2FsbGVkIG9uIG51bGwgb3IgdW5kZWZpbmVkXCIiKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2pzL3Nsb3BweS1nZXR0ZXItc2V0dGVyLWdsb2JhbC1vYmplY3QtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvanMvc2xvcHB5LWdldHRlci1zZXR0ZXItZ2xvYmFsLW9iamVjdC1leHBlY3RlZC50
eHQKaW5kZXggOTMzOWRkM2FhMzE2NTdkYmZjMmQ1ZTQ4ZjM2NWIyNDI4MDc2NjYxYy4uOGZhYTQ3
NTI2YjYzZTQxNDU0YjNkNjMwODc4ZmRhOTcxNWE4MDBlNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvanMvc2xvcHB5LWdldHRlci1zZXR0ZXItZ2xvYmFsLW9iamVjdC1leHBlY3RlZC50eHQKKysr
IGIvTGF5b3V0VGVzdHMvanMvc2xvcHB5LWdldHRlci1zZXR0ZXItZ2xvYmFsLW9iamVjdC1leHBl
Y3RlZC50eHQKQEAgLTgsOSArOCw5IEBAIFBBU1MgT2JqZWN0LnByb3RvdHlwZS52YWx1ZU9mLmNh
bGwoMyk7IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgogUEFTUyBPYmplY3QucHJvdG90eXBlLnZh
bHVlT2YuY2FsbChudWxsKTsgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogbnVsbCBpcyBub3Qg
YW4gb2JqZWN0IChldmFsdWF0aW5nICdPYmplY3QucHJvdG90eXBlLnZhbHVlT2YuY2FsbChudWxs
KScpLgogUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE9iamVjdC5wcm90b3R5
cGUsJ19fcHJvdG9fXycpLmdldCgpIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgogUEFTUyBPYmpl
Y3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE9iamVjdC5wcm90b3R5cGUsJ19fcHJvdG9fXycp
LnNldChbJ2ZvbyddKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KLVBBU1MgKDAsT2JqZWN0Lmdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihPYmplY3QucHJvdG90eXBlLCdfX3Byb3RvX18nKS5nZXQp
KCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogT2JqZWN0LnByb3RvdHlwZS5fX3Byb3RvX18g
Y2FsbGVkIG9uIG51bGwgb3IgdW5kZWZpbmVkLgorUEFTUyAoMCxPYmplY3QuZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKE9iamVjdC5wcm90b3R5cGUsJ19fcHJvdG9fXycpLmdldCkoKSB0aHJldyBl
eGNlcHRpb24gVHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGlu
ZyAnKDAsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihPYmplY3QucHJvdG90eXBlLCdf
X3Byb3RvX18nKS5nZXQpKCknKS4KIFBBU1MgKDAsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihPYmplY3QucHJvdG90eXBlLCdfX3Byb3RvX18nKS5zZXQpKFsnZm9vJ10pIHRocmV3IGV4
Y2VwdGlvbiBUeXBlRXJyb3I6IE9iamVjdC5wcm90b3R5cGUuX19wcm90b19fIGNhbGxlZCBvbiBu
dWxsIG9yIHVuZGVmaW5lZC4KLVBBU1MgdG9wX2xldmVsX3Nsb3BweV9nZXR0ZXIoKTsgdGhyZXcg
ZXhjZXB0aW9uIFR5cGVFcnJvcjogT2JqZWN0LnByb3RvdHlwZS5fX3Byb3RvX18gY2FsbGVkIG9u
IG51bGwgb3IgdW5kZWZpbmVkLgorUEFTUyB0b3BfbGV2ZWxfc2xvcHB5X2dldHRlcigpOyB0aHJl
dyBleGNlcHRpb24gVHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVh
dGluZyAndG9wX2xldmVsX3Nsb3BweV9nZXR0ZXIoKScpLgogUEFTUyB0b3BfbGV2ZWxfc2xvcHB5
X3NldHRlcihbJ2ZvbyddKTsgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogT2JqZWN0LnByb3Rv
dHlwZS5fX3Byb3RvX18gY2FsbGVkIG9uIG51bGwgb3IgdW5kZWZpbmVkLgogUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pT
VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGUwNTQzN2E3MGYzZjYzODRkYjdiOTAyZTY4M2U2ZTg0MDI0
ZWEyNWYuLjA0ZjA4NDllMWM2YmVmMDY2ZTE4ZjliYjRhZGU1OGI1ZGUyMjA5YjggMTAwNjQ0Ci0t
LSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NzEgQEAKKzIwMTctMTAtMTAgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+
CisKKyAgICAgICAgW0pTQ10gX19wcm90b19fIGdldHRlciBzaG91bGQgYmUgZmFzdAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4MDY3CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdHJlc3MvZGZnLW9i
amVjdC1wcm90by1hY2Nlc3Nvci5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAg
ICAgIChzaG91bGRUaHJvdyk6CisgICAgICAgICh0YXJnZXQpOgorICAgICAgICAqIHN0cmVzcy9k
Zmctb2JqZWN0LXByb3RvLWdldHRlci5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6Cisg
ICAgICAgIChzaG91bGRUaHJvdyk6CisgICAgICAgICh0YXJnZXQpOgorICAgICAgICAqIHN0cmVz
cy9kZmctb2JqZWN0LXByb3RvdHlwZS1vZi5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6
CisgICAgICAgIChzaG91bGRUaHJvdyk6CisgICAgICAgICh0YXJnZXQpOgorICAgICAgICAqIHN0
cmVzcy9kZmctcmVmbGVjdC1nZXQtcHJvdG90eXBlLW9mLmpzOiBBZGRlZC4KKyAgICAgICAgKHNo
b3VsZEJlKToKKyAgICAgICAgKHNob3VsZFRocm93KToKKyAgICAgICAgKHRhcmdldCk6CisgICAg
ICAgICogc3RyZXNzL29iamVjdC1nZXQtcHJvdG90eXBlLW9mLWZpbHRlcmVkLmpzOiBBZGRlZC4K
KyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHNob3VsZFRocm93KToKKyAgICAgICAgKHRh
cmdldCk6CisgICAgICAgIChpLkNvY29hKToKKyAgICAgICAgKiBzdHJlc3Mvb2JqZWN0LWdldC1w
cm90b3R5cGUtb2YtbW9uby1wcm90by5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6Cisg
ICAgICAgIChtYWtlUG9seVByb3RvT2JqZWN0LmZvby5DKToKKyAgICAgICAgKG1ha2VQb2x5UHJv
dG9PYmplY3QuZm9vKToKKyAgICAgICAgKG1ha2VQb2x5UHJvdG9PYmplY3QpOgorICAgICAgICAo
dGFyZ2V0KToKKyAgICAgICAgKiBzdHJlc3Mvb2JqZWN0LWdldC1wcm90b3R5cGUtb2YtcG9seS1t
b25vLXByb3RvLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKG1ha2VQ
b2x5UHJvdG9PYmplY3QuZm9vLkMpOgorICAgICAgICAobWFrZVBvbHlQcm90b09iamVjdC5mb28p
OgorICAgICAgICAobWFrZVBvbHlQcm90b09iamVjdCk6CisgICAgICAgICh0YXJnZXQpOgorICAg
ICAgICAqIHN0cmVzcy9vYmplY3QtZ2V0LXByb3RvdHlwZS1vZi1wb2x5LXByb3RvLmpzOiBBZGRl
ZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKG1ha2VQb2x5UHJvdG9PYmplY3QuZm9v
LkMpOgorICAgICAgICAobWFrZVBvbHlQcm90b09iamVjdC5mb28pOgorICAgICAgICAobWFrZVBv
bHlQcm90b09iamVjdCk6CisgICAgICAgICh0YXJnZXQpOgorICAgICAgICAqIHN0cmVzcy9vYmpl
Y3QtcHJvdG8tZ2V0dGVyLWZpbHRlcmVkLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToK
KyAgICAgICAgKHNob3VsZFRocm93KToKKyAgICAgICAgKHRhcmdldCk6CisgICAgICAgIChpLkNv
Y29hKToKKyAgICAgICAgKiBzdHJlc3Mvb2JqZWN0LXByb3RvLWdldHRlci1wb2x5LW1vbm8tcHJv
dG8uanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAobWFrZVBvbHlQcm90
b09iamVjdC5mb28uQyk6CisgICAgICAgIChtYWtlUG9seVByb3RvT2JqZWN0LmZvbyk6CisgICAg
ICAgIChtYWtlUG9seVByb3RvT2JqZWN0KToKKyAgICAgICAgKHRhcmdldCk6CisgICAgICAgICog
c3RyZXNzL29iamVjdC1wcm90by1nZXR0ZXItcG9seS1wcm90by5qczogQWRkZWQuCisgICAgICAg
IChzaG91bGRCZSk6CisgICAgICAgIChtYWtlUG9seVByb3RvT2JqZWN0LmZvby5DKToKKyAgICAg
ICAgKG1ha2VQb2x5UHJvdG9PYmplY3QuZm9vKToKKyAgICAgICAgKG1ha2VQb2x5UHJvdG9PYmpl
Y3QpOgorICAgICAgICAodGFyZ2V0KToKKyAgICAgICAgKiBzdHJlc3Mvb2JqZWN0LXByb3RvdHlw
ZS1wcm90by1hY2Nlc3NvcnMtc2hvdWxkLXRocm93LW9uLXVuZGVmaW5lZC10aGlzLmpzOgorICAg
ICAgICAqIHN0cmVzcy9zdHJpbmctcHJvdG8uanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUp
OgorICAgICAgICAodGFyZ2V0KToKKwogMjAxNy0xMC0wOSAgWXVzdWtlIFN1enVraSAgPHV0YXRh
bmUudGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBgYXN5bmNgIHNob3VsZCBiZSBhYmxlIHRvIGJl
IHVzZWQgYXMgYW4gaW1wb3J0ZWQgYmluZGluZyBuYW1lCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0
cmVzcy9kZmctb2JqZWN0LXByb3RvLWFjY2Vzc29yLmpzIGIvSlNUZXN0cy9zdHJlc3MvZGZnLW9i
amVjdC1wcm90by1hY2Nlc3Nvci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZjZkYjdiNzRlMGEwZmE2NjczY2Jm
MTIyOTA2YjgxNmViMmVlODIzCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZGZn
LW9iamVjdC1wcm90by1hY2Nlc3Nvci5qcwpAQCAtMCwwICsxLDExNSBAQAorZnVuY3Rpb24gc2hv
dWxkQmUoYWN0dWFsLCBleHBlY3RlZCkKK3sKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkK
KyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCitm
dW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJvck1lc3NhZ2UpIHsKKyAgICB2YXIgZXJyb3JU
aHJvd24gPSBmYWxzZTsKKyAgICB2YXIgZXJyb3IgPSBudWxsOworICAgIHRyeSB7CisgICAgICAg
IGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9yVGhyb3duID0gdHJ1ZTsK
KyAgICAgICAgZXJyb3IgPSBlOworICAgIH0KKyAgICBpZiAoIWVycm9yVGhyb3duKQorICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoJ25vdCB0aHJvd24nKTsKKyAgICBpZiAoU3RyaW5nKGVycm9yKSAh
PT0gZXJyb3JNZXNzYWdlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCBlcnJvcjogJHtT
dHJpbmcoZXJyb3IpfWApOworfQorCisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9uIHRhcmdl
dChvYmplY3QpCisgICAgeworICAgICAgICByZXR1cm4gb2JqZWN0Ll9fcHJvdG9fXzsKKyAgICB9
CisgICAgbm9JbmxpbmUodGFyZ2V0KTsKKworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMWUzOyAr
K2kpCisgICAgICAgIHNob3VsZEJlKHRhcmdldCh7fSksIE9iamVjdC5wcm90b3R5cGUpOworfSgp
KTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiB0YXJnZXQob2JqZWN0KQorICAgIHsK
KyAgICAgICAgcmV0dXJuIG9iamVjdC5fX3Byb3RvX187CisgICAgfQorICAgIG5vSW5saW5lKHRh
cmdldCk7CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDFlMzsgKytpKSB7CisgICAgICAgIHNo
b3VsZFRocm93KCgpID0+IHRhcmdldChudWxsKSwgYFR5cGVFcnJvcjogbnVsbCBpcyBub3QgYW4g
b2JqZWN0IChldmFsdWF0aW5nICdvYmplY3QuX19wcm90b19fJylgKTsKKyAgICAgICAgc2hvdWxk
VGhyb3coKCkgPT4gdGFyZ2V0KHVuZGVmaW5lZCksIGBUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBu
b3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdvYmplY3QuX19wcm90b19fJylgKTsKKyAgICB9Cit9
KCkpOworCisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9uIHRhcmdldChvYmplY3QpCisgICAg
eworICAgICAgICByZXR1cm4gb2JqZWN0Ll9fcHJvdG9fXzsKKyAgICB9CisgICAgbm9JbmxpbmUo
dGFyZ2V0KTsKKworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMWUzOyArK2kpCisgICAgICAgIHNo
b3VsZEJlKHRhcmdldCgiQ29jb2EiKSwgU3RyaW5nLnByb3RvdHlwZSk7Cit9KCkpOworCisoZnVu
Y3Rpb24gKCkgeworICAgIGZ1bmN0aW9uIHRhcmdldChvYmplY3QpCisgICAgeworICAgICAgICBy
ZXR1cm4gb2JqZWN0Ll9fcHJvdG9fXzsKKyAgICB9CisgICAgbm9JbmxpbmUodGFyZ2V0KTsKKwor
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMWUzOyArK2kpCisgICAgICAgIHNob3VsZEJlKHRhcmdl
dCg0MiksIE51bWJlci5wcm90b3R5cGUpOworfSgpKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBm
dW5jdGlvbiB0YXJnZXQob2JqZWN0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIG9iamVjdC5fX3By
b3RvX187CisgICAgfQorICAgIG5vSW5saW5lKHRhcmdldCk7CisKKyAgICBmb3IgKHZhciBpID0g
MDsgaSA8IDFlMzsgKytpKQorICAgICAgICBzaG91bGRCZSh0YXJnZXQoNDIuMTk1KSwgTnVtYmVy
LnByb3RvdHlwZSk7Cit9KCkpOworCisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9uIHRhcmdl
dChvYmplY3QpCisgICAgeworICAgICAgICByZXR1cm4gb2JqZWN0Ll9fcHJvdG9fXzsKKyAgICB9
CisgICAgbm9JbmxpbmUodGFyZ2V0KTsKKworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMWUzOyAr
K2kpCisgICAgICAgIHNob3VsZEJlKHRhcmdldCh0cnVlKSwgQm9vbGVhbi5wcm90b3R5cGUpOwor
fSgpKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiB0YXJnZXQob2JqZWN0KQorICAg
IHsKKyAgICAgICAgcmV0dXJuIG9iamVjdC5fX3Byb3RvX187CisgICAgfQorICAgIG5vSW5saW5l
KHRhcmdldCk7CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDFlMzsgKytpKQorICAgICAgICBz
aG91bGRCZSh0YXJnZXQoU3ltYm9sKCJDb2NvYSIpKSwgU3ltYm9sLnByb3RvdHlwZSk7Cit9KCkp
OworCisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9uIHRhcmdldChvYmplY3QpCisgICAgewor
ICAgICAgICByZXR1cm4gb2JqZWN0Ll9fcHJvdG9fXzsKKyAgICB9CisgICAgbm9JbmxpbmUodGFy
Z2V0KTsKKworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMWUzOyArK2kpIHsKKyAgICAgICAgc2hv
dWxkQmUodGFyZ2V0KCJDb2NvYSIpLCBTdHJpbmcucHJvdG90eXBlKTsKKyAgICAgICAgc2hvdWxk
QmUodGFyZ2V0KDQyKSwgTnVtYmVyLnByb3RvdHlwZSk7CisgICAgICAgIHNob3VsZEJlKHRhcmdl
dCg0Mi4xOTUpLCBOdW1iZXIucHJvdG90eXBlKTsKKyAgICAgICAgc2hvdWxkQmUodGFyZ2V0KHRy
dWUpLCBCb29sZWFuLnByb3RvdHlwZSk7CisgICAgICAgIHNob3VsZEJlKHRhcmdldChTeW1ib2wo
IkNvY29hIikpLCBTeW1ib2wucHJvdG90eXBlKTsKKyAgICB9Cit9KCkpOwpkaWZmIC0tZ2l0IGEv
SlNUZXN0cy9zdHJlc3MvZGZnLW9iamVjdC1wcm90by1nZXR0ZXIuanMgYi9KU1Rlc3RzL3N0cmVz
cy9kZmctb2JqZWN0LXByb3RvLWdldHRlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YTA3MTZkNWFhNWIxY2Vi
N2Y3OGU1ZDQ0Yzk5NTRkOWZlNTBkYTNhCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJl
c3MvZGZnLW9iamVjdC1wcm90by1nZXR0ZXIuanMKQEAgLTAsMCArMSwxMTcgQEAKK2Z1bmN0aW9u
IHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpCit7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0
ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30K
KworZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJyb3JNZXNzYWdlKSB7CisgICAgdmFyIGVy
cm9yVGhyb3duID0gZmFsc2U7CisgICAgdmFyIGVycm9yID0gbnVsbDsKKyAgICB0cnkgeworICAg
ICAgICBmdW5jKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBlcnJvclRocm93biA9IHRy
dWU7CisgICAgICAgIGVycm9yID0gZTsKKyAgICB9CisgICAgaWYgKCFlcnJvclRocm93bikKKyAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCdub3QgdGhyb3duJyk7CisgICAgaWYgKFN0cmluZyhlcnJv
cikgIT09IGVycm9yTWVzc2FnZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgZXJyb3I6
ICR7U3RyaW5nKGVycm9yKX1gKTsKK30KKwordmFyIHByb3RvRnVuY3Rpb24gPSBPYmplY3QuZ2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKE9iamVjdC5wcm90b3R5cGUsICJfX3Byb3RvX18iKS5nZXQ7
CisKKyhmdW5jdGlvbiAoKSB7CisgICAgZnVuY3Rpb24gdGFyZ2V0KG9iamVjdCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBwcm90b0Z1bmN0aW9uLmNhbGwob2JqZWN0KTsKKyAgICB9CisgICAgbm9J
bmxpbmUodGFyZ2V0KTsKKworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMWUzOyArK2kpCisgICAg
ICAgIHNob3VsZEJlKHRhcmdldCh7fSksIE9iamVjdC5wcm90b3R5cGUpOworfSgpKTsKKworKGZ1
bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiB0YXJnZXQob2JqZWN0KQorICAgIHsKKyAgICAgICAg
cmV0dXJuIHByb3RvRnVuY3Rpb24uY2FsbChvYmplY3QpOworICAgIH0KKyAgICBub0lubGluZSh0
YXJnZXQpOworCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxZTM7ICsraSkgeworICAgICAgICBz
aG91bGRUaHJvdygoKSA9PiB0YXJnZXQobnVsbCksIGBUeXBlRXJyb3I6IG51bGwgaXMgbm90IGFu
IG9iamVjdCAoZXZhbHVhdGluZyAncHJvdG9GdW5jdGlvbi5jYWxsKG9iamVjdCknKWApOworICAg
ICAgICBzaG91bGRUaHJvdygoKSA9PiB0YXJnZXQodW5kZWZpbmVkKSwgYFR5cGVFcnJvcjogdW5k
ZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ3Byb3RvRnVuY3Rpb24uY2FsbChv
YmplY3QpJylgKTsKKyAgICB9Cit9KCkpOworCisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9u
IHRhcmdldChvYmplY3QpCisgICAgeworICAgICAgICByZXR1cm4gcHJvdG9GdW5jdGlvbi5jYWxs
KG9iamVjdCk7CisgICAgfQorICAgIG5vSW5saW5lKHRhcmdldCk7CisKKyAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IDFlMzsgKytpKQorICAgICAgICBzaG91bGRCZSh0YXJnZXQoIkNvY29hIiksIFN0
cmluZy5wcm90b3R5cGUpOworfSgpKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiB0
YXJnZXQob2JqZWN0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHByb3RvRnVuY3Rpb24uY2FsbChv
YmplY3QpOworICAgIH0KKyAgICBub0lubGluZSh0YXJnZXQpOworCisgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCAxZTM7ICsraSkKKyAgICAgICAgc2hvdWxkQmUodGFyZ2V0KDQyKSwgTnVtYmVyLnBy
b3RvdHlwZSk7Cit9KCkpOworCisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9uIHRhcmdldChv
YmplY3QpCisgICAgeworICAgICAgICByZXR1cm4gcHJvdG9GdW5jdGlvbi5jYWxsKG9iamVjdCk7
CisgICAgfQorICAgIG5vSW5saW5lKHRhcmdldCk7CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8
IDFlMzsgKytpKQorICAgICAgICBzaG91bGRCZSh0YXJnZXQoNDIuMTk1KSwgTnVtYmVyLnByb3Rv
dHlwZSk7Cit9KCkpOworCisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9uIHRhcmdldChvYmpl
Y3QpCisgICAgeworICAgICAgICByZXR1cm4gcHJvdG9GdW5jdGlvbi5jYWxsKG9iamVjdCk7Cisg
ICAgfQorICAgIG5vSW5saW5lKHRhcmdldCk7CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDFl
MzsgKytpKQorICAgICAgICBzaG91bGRCZSh0YXJnZXQodHJ1ZSksIEJvb2xlYW4ucHJvdG90eXBl
KTsKK30oKSk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAgZnVuY3Rpb24gdGFyZ2V0KG9iamVjdCkK
KyAgICB7CisgICAgICAgIHJldHVybiBwcm90b0Z1bmN0aW9uLmNhbGwob2JqZWN0KTsKKyAgICB9
CisgICAgbm9JbmxpbmUodGFyZ2V0KTsKKworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMWUzOyAr
K2kpCisgICAgICAgIHNob3VsZEJlKHRhcmdldChTeW1ib2woIkNvY29hIikpLCBTeW1ib2wucHJv
dG90eXBlKTsKK30oKSk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAgZnVuY3Rpb24gdGFyZ2V0KG9i
amVjdCkKKyAgICB7CisgICAgICAgIHJldHVybiBwcm90b0Z1bmN0aW9uLmNhbGwob2JqZWN0KTsK
KyAgICB9CisgICAgbm9JbmxpbmUodGFyZ2V0KTsKKworICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
MWUzOyArK2kpIHsKKyAgICAgICAgc2hvdWxkQmUodGFyZ2V0KCJDb2NvYSIpLCBTdHJpbmcucHJv
dG90eXBlKTsKKyAgICAgICAgc2hvdWxkQmUodGFyZ2V0KDQyKSwgTnVtYmVyLnByb3RvdHlwZSk7
CisgICAgICAgIHNob3VsZEJlKHRhcmdldCg0Mi4xOTUpLCBOdW1iZXIucHJvdG90eXBlKTsKKyAg
ICAgICAgc2hvdWxkQmUodGFyZ2V0KHRydWUpLCBCb29sZWFuLnByb3RvdHlwZSk7CisgICAgICAg
IHNob3VsZEJlKHRhcmdldChTeW1ib2woIkNvY29hIikpLCBTeW1ib2wucHJvdG90eXBlKTsKKyAg
ICB9Cit9KCkpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZGZnLW9iamVjdC1wcm90b3R5
cGUtb2YuanMgYi9KU1Rlc3RzL3N0cmVzcy9kZmctb2JqZWN0LXByb3RvdHlwZS1vZi5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZTI2ODRkNzk4OTFhZWZjZjM4Njg1ZjRmNzE2ZmYwMmQ5ODgwNjQ1Ci0tLSAvZGV2
L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZGZnLW9iamVjdC1wcm90b3R5cGUtb2YuanMKQEAg
LTAsMCArMSwxMTUgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpCit7Cisg
ICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFk
IHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKworZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJy
b3JNZXNzYWdlKSB7CisgICAgdmFyIGVycm9yVGhyb3duID0gZmFsc2U7CisgICAgdmFyIGVycm9y
ID0gbnVsbDsKKyAgICB0cnkgeworICAgICAgICBmdW5jKCk7CisgICAgfSBjYXRjaCAoZSkgewor
ICAgICAgICBlcnJvclRocm93biA9IHRydWU7CisgICAgICAgIGVycm9yID0gZTsKKyAgICB9Cisg
ICAgaWYgKCFlcnJvclRocm93bikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdub3QgdGhyb3du
Jyk7CisgICAgaWYgKFN0cmluZyhlcnJvcikgIT09IGVycm9yTWVzc2FnZSkKKyAgICAgICAgdGhy
b3cgbmV3IEVycm9yKGBiYWQgZXJyb3I6ICR7U3RyaW5nKGVycm9yKX1gKTsKK30KKworKGZ1bmN0
aW9uICgpIHsKKyAgICBmdW5jdGlvbiB0YXJnZXQob2JqZWN0KQorICAgIHsKKyAgICAgICAgcmV0
dXJuIE9iamVjdC5nZXRQcm90b3R5cGVPZihvYmplY3QpOworICAgIH0KKyAgICBub0lubGluZSh0
YXJnZXQpOworCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxZTM7ICsraSkKKyAgICAgICAgc2hv
dWxkQmUodGFyZ2V0KHt9KSwgT2JqZWN0LnByb3RvdHlwZSk7Cit9KCkpOworCisoZnVuY3Rpb24g
KCkgeworICAgIGZ1bmN0aW9uIHRhcmdldChvYmplY3QpCisgICAgeworICAgICAgICByZXR1cm4g
T2JqZWN0LmdldFByb3RvdHlwZU9mKG9iamVjdCk7CisgICAgfQorICAgIG5vSW5saW5lKHRhcmdl
dCk7CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDFlMzsgKytpKSB7CisgICAgICAgIHNob3Vs
ZFRocm93KCgpID0+IHRhcmdldChudWxsKSwgYFR5cGVFcnJvcjogbnVsbCBpcyBub3QgYW4gb2Jq
ZWN0IChldmFsdWF0aW5nICdPYmplY3QuZ2V0UHJvdG90eXBlT2Yob2JqZWN0KScpYCk7CisgICAg
ICAgIHNob3VsZFRocm93KCgpID0+IHRhcmdldCh1bmRlZmluZWQpLCBgVHlwZUVycm9yOiB1bmRl
ZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnT2JqZWN0LmdldFByb3RvdHlwZU9m
KG9iamVjdCknKWApOworICAgIH0KK30oKSk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAgZnVuY3Rp
b24gdGFyZ2V0KG9iamVjdCkKKyAgICB7CisgICAgICAgIHJldHVybiBPYmplY3QuZ2V0UHJvdG90
eXBlT2Yob2JqZWN0KTsKKyAgICB9CisgICAgbm9JbmxpbmUodGFyZ2V0KTsKKworICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgMWUzOyArK2kpCisgICAgICAgIHNob3VsZEJlKHRhcmdldCgiQ29jb2Ei
KSwgU3RyaW5nLnByb3RvdHlwZSk7Cit9KCkpOworCisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0
aW9uIHRhcmdldChvYmplY3QpCisgICAgeworICAgICAgICByZXR1cm4gT2JqZWN0LmdldFByb3Rv
dHlwZU9mKG9iamVjdCk7CisgICAgfQorICAgIG5vSW5saW5lKHRhcmdldCk7CisKKyAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IDFlMzsgKytpKQorICAgICAgICBzaG91bGRCZSh0YXJnZXQoNDIpLCBO
dW1iZXIucHJvdG90eXBlKTsKK30oKSk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAgZnVuY3Rpb24g
dGFyZ2V0KG9iamVjdCkKKyAgICB7CisgICAgICAgIHJldHVybiBPYmplY3QuZ2V0UHJvdG90eXBl
T2Yob2JqZWN0KTsKKyAgICB9CisgICAgbm9JbmxpbmUodGFyZ2V0KTsKKworICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgMWUzOyArK2kpCisgICAgICAgIHNob3VsZEJlKHRhcmdldCg0Mi4xOTUpLCBO
dW1iZXIucHJvdG90eXBlKTsKK30oKSk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAgZnVuY3Rpb24g
dGFyZ2V0KG9iamVjdCkKKyAgICB7CisgICAgICAgIHJldHVybiBPYmplY3QuZ2V0UHJvdG90eXBl
T2Yob2JqZWN0KTsKKyAgICB9CisgICAgbm9JbmxpbmUodGFyZ2V0KTsKKworICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgMWUzOyArK2kpCisgICAgICAgIHNob3VsZEJlKHRhcmdldCh0cnVlKSwgQm9v
bGVhbi5wcm90b3R5cGUpOworfSgpKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiB0
YXJnZXQob2JqZWN0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIE9iamVjdC5nZXRQcm90b3R5cGVP
ZihvYmplY3QpOworICAgIH0KKyAgICBub0lubGluZSh0YXJnZXQpOworCisgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCAxZTM7ICsraSkKKyAgICAgICAgc2hvdWxkQmUodGFyZ2V0KFN5bWJvbCgiQ29j
b2EiKSksIFN5bWJvbC5wcm90b3R5cGUpOworfSgpKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBm
dW5jdGlvbiB0YXJnZXQob2JqZWN0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIE9iamVjdC5nZXRQ
cm90b3R5cGVPZihvYmplY3QpOworICAgIH0KKyAgICBub0lubGluZSh0YXJnZXQpOworCisgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCAxZTM7ICsraSkgeworICAgICAgICBzaG91bGRCZSh0YXJnZXQo
IkNvY29hIiksIFN0cmluZy5wcm90b3R5cGUpOworICAgICAgICBzaG91bGRCZSh0YXJnZXQoNDIp
LCBOdW1iZXIucHJvdG90eXBlKTsKKyAgICAgICAgc2hvdWxkQmUodGFyZ2V0KDQyLjE5NSksIE51
bWJlci5wcm90b3R5cGUpOworICAgICAgICBzaG91bGRCZSh0YXJnZXQodHJ1ZSksIEJvb2xlYW4u
cHJvdG90eXBlKTsKKyAgICAgICAgc2hvdWxkQmUodGFyZ2V0KFN5bWJvbCgiQ29jb2EiKSksIFN5
bWJvbC5wcm90b3R5cGUpOworICAgIH0KK30oKSk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVz
cy9kZmctcmVmbGVjdC1nZXQtcHJvdG90eXBlLW9mLmpzIGIvSlNUZXN0cy9zdHJlc3MvZGZnLXJl
ZmxlY3QtZ2V0LXByb3RvdHlwZS1vZi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43Yzg4OGZmOTAyMTVmNjk4NWIw
MjE0ODYyMThlYTQ0YWVmMzgyZWQxCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mv
ZGZnLXJlZmxlY3QtZ2V0LXByb3RvdHlwZS1vZi5qcwpAQCAtMCwwICsxLDU4IEBACitmdW5jdGlv
biBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKQoreworICAgIGlmIChhY3R1YWwgIT09IGV4cGVj
dGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9
CisKK2Z1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMsIGVycm9yTWVzc2FnZSkgeworICAgIHZhciBl
cnJvclRocm93biA9IGZhbHNlOworICAgIHZhciBlcnJvciA9IG51bGw7CisgICAgdHJ5IHsKKyAg
ICAgICAgZnVuYygpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZXJyb3JUaHJvd24gPSB0
cnVlOworICAgICAgICBlcnJvciA9IGU7CisgICAgfQorICAgIGlmICghZXJyb3JUaHJvd24pCisg
ICAgICAgIHRocm93IG5ldyBFcnJvcignbm90IHRocm93bicpOworICAgIGlmIChTdHJpbmcoZXJy
b3IpICE9PSBlcnJvck1lc3NhZ2UpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIGVycm9y
OiAke1N0cmluZyhlcnJvcil9YCk7Cit9CisKKyhmdW5jdGlvbiAoKSB7CisgICAgZnVuY3Rpb24g
dGFyZ2V0KG9iamVjdCkKKyAgICB7CisgICAgICAgIHJldHVybiBSZWZsZWN0LmdldFByb3RvdHlw
ZU9mKG9iamVjdCk7CisgICAgfQorICAgIG5vSW5saW5lKHRhcmdldCk7CisKKyAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IDFlMzsgKytpKQorICAgICAgICBzaG91bGRCZSh0YXJnZXQoe30pLCBPYmpl
Y3QucHJvdG90eXBlKTsKK30oKSk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAgZnVuY3Rpb24gdGFy
Z2V0KG9iamVjdCkKKyAgICB7CisgICAgICAgIHJldHVybiBSZWZsZWN0LmdldFByb3RvdHlwZU9m
KG9iamVjdCk7CisgICAgfQorICAgIG5vSW5saW5lKHRhcmdldCk7CisKKyAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IDFlMzsgKytpKSB7CisgICAgICAgIHNob3VsZFRocm93KCgpID0+IHRhcmdldChu
dWxsKSwgYFR5cGVFcnJvcjogUmVmbGVjdC5nZXRQcm90b3R5cGVPZiByZXF1aXJlcyB0aGUgZmly
c3QgYXJndW1lbnQgYmUgYW4gb2JqZWN0YCk7CisgICAgICAgIHNob3VsZFRocm93KCgpID0+IHRh
cmdldCh1bmRlZmluZWQpLCBgVHlwZUVycm9yOiBSZWZsZWN0LmdldFByb3RvdHlwZU9mIHJlcXVp
cmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhbiBvYmplY3RgKTsKKyAgICB9Cit9KCkpOworCiso
ZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9uIHRhcmdldChvYmplY3QpCisgICAgeworICAgICAg
ICByZXR1cm4gUmVmbGVjdC5nZXRQcm90b3R5cGVPZihvYmplY3QpOworICAgIH0KKyAgICBub0lu
bGluZSh0YXJnZXQpOworCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxZTM7ICsraSkgeworICAg
ICAgICBzaG91bGRUaHJvdygoKSA9PiB0YXJnZXQoIkNvY29hIiksIGBUeXBlRXJyb3I6IFJlZmxl
Y3QuZ2V0UHJvdG90eXBlT2YgcmVxdWlyZXMgdGhlIGZpcnN0IGFyZ3VtZW50IGJlIGFuIG9iamVj
dGApOworICAgICAgICBzaG91bGRUaHJvdygoKSA9PiB0YXJnZXQoNDIpLCBgVHlwZUVycm9yOiBS
ZWZsZWN0LmdldFByb3RvdHlwZU9mIHJlcXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhbiBv
YmplY3RgKTsKKyAgICAgICAgc2hvdWxkVGhyb3coKCkgPT4gdGFyZ2V0KHRydWUpLCBgVHlwZUVy
cm9yOiBSZWZsZWN0LmdldFByb3RvdHlwZU9mIHJlcXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVudCBi
ZSBhbiBvYmplY3RgKTsKKyAgICB9Cit9KCkpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mv
b2JqZWN0LWdldC1wcm90b3R5cGUtb2YtZmlsdGVyZWQuanMgYi9KU1Rlc3RzL3N0cmVzcy9vYmpl
Y3QtZ2V0LXByb3RvdHlwZS1vZi1maWx0ZXJlZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMWEwODA4ZDA5ODFi
ZjM2NjlmZWM5ZjE3YWYwMTlkZTAzMjlmMWEyCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9z
dHJlc3Mvb2JqZWN0LWdldC1wcm90b3R5cGUtb2YtZmlsdGVyZWQuanMKQEAgLTAsMCArMSw2NCBA
QAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkKK3sKKyAgICBpZiAoYWN0dWFs
ICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBh
Y3R1YWwpOworfQorCitmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJvck1lc3NhZ2UpIHsK
KyAgICB2YXIgZXJyb3JUaHJvd24gPSBmYWxzZTsKKyAgICB2YXIgZXJyb3IgPSBudWxsOworICAg
IHRyeSB7CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9y
VGhyb3duID0gdHJ1ZTsKKyAgICAgICAgZXJyb3IgPSBlOworICAgIH0KKyAgICBpZiAoIWVycm9y
VGhyb3duKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCB0aHJvd24nKTsKKyAgICBpZiAo
U3RyaW5nKGVycm9yKSAhPT0gZXJyb3JNZXNzYWdlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
YGJhZCBlcnJvcjogJHtTdHJpbmcoZXJyb3IpfWApOworfQorCisvLyBJbiB0aGlzIGNhc2UsIHdl
IGNhbm5vdCBoYW5kbGUgaXQgYXMgR2V0UHJvdG90eXBlT2Ygc2luY2UgR2V0QnlJZCBpcyBvcGFx
dWUuCisKKyhmdW5jdGlvbiAoKSB7CisgICAgZnVuY3Rpb24gdGFyZ2V0KG9iamVjdCkKKyAgICB7
CisgICAgICAgIHJldHVybiBPYmplY3QuZ2V0UHJvdG90eXBlT2Yob2JqZWN0KTsKKyAgICB9Cisg
ICAgbm9JbmxpbmUodGFyZ2V0KTsKKworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMWU0OyArK2kp
IHsKKyAgICAgICAgdmFyIG9iamVjdCA9IHt9OworICAgICAgICBvYmplY3RbYENvY29hJHtpfWBd
ID0gYENvY29hYDsKKyAgICAgICAgc2hvdWxkQmUodGFyZ2V0KG9iamVjdCksIE9iamVjdC5wcm90
b3R5cGUpOworICAgIH0KK30oKSk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAgZnVuY3Rpb24gdGFy
Z2V0KG9iamVjdCkKKyAgICB7CisgICAgICAgIHJldHVybiBPYmplY3QuZ2V0UHJvdG90eXBlT2Yo
b2JqZWN0KTsKKyAgICB9CisgICAgbm9JbmxpbmUodGFyZ2V0KTsKKworICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgMWU0OyArK2kpIHsKKyAgICAgICAgdmFyIGFycmF5ID0gW107CisgICAgICAgIGFy
cmF5W2BDb2NvYSR7aX1gXSA9IGBDb2NvYWA7CisgICAgICAgIHNob3VsZEJlKHRhcmdldChhcnJh
eSksIEFycmF5LnByb3RvdHlwZSk7CisgICAgfQorfSgpKTsKKworKGZ1bmN0aW9uICgpIHsKKyAg
ICBmdW5jdGlvbiB0YXJnZXQob2JqZWN0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIE9iamVjdC5n
ZXRQcm90b3R5cGVPZihvYmplY3QpOworICAgIH0KKyAgICBub0lubGluZSh0YXJnZXQpOworCisg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxZTQ7ICsraSkgeworICAgICAgICBmdW5jdGlvbiBDb2Nv
YSgpIHsgfQorICAgICAgICBDb2NvYVtgQ29jb2Eke2l9YF0gPSBgQ29jb2FgOworICAgICAgICBz
aG91bGRCZSh0YXJnZXQoQ29jb2EpLCBGdW5jdGlvbi5wcm90b3R5cGUpOworICAgIH0KK30oKSk7
CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9vYmplY3QtZ2V0LXByb3RvdHlwZS1vZi1tb25v
LXByb3RvLmpzIGIvSlNUZXN0cy9zdHJlc3Mvb2JqZWN0LWdldC1wcm90b3R5cGUtb2YtbW9uby1w
cm90by5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi41ZTA3NTRlMjBmMGI1YmIxNmVmYmI1NmZiOWM0MjZmYWQyZmU2
YzNhCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mvb2JqZWN0LWdldC1wcm90b3R5
cGUtb2YtbW9uby1wcm90by5qcwpAQCAtMCwwICsxLDM0IEBACitmdW5jdGlvbiBzaG91bGRCZShh
Y3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAg
IHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKworZnVuY3Rpb24g
bWFrZVBvbHlQcm90b09iamVjdCgpIHsKKyAgICBmdW5jdGlvbiBmb28oKSB7CisgICAgICAgIGNs
YXNzIEMgeworICAgICAgICAgICAgY29uc3RydWN0b3IoKSB7CisgICAgICAgICAgICAgICAgdGhp
cy5fZmllbGQgPSA0MjsKKyAgICAgICAgICAgICAgICB0aGlzLmhlbGxvID0gMzM7CisgICAgICAg
ICAgICB9CisgICAgICAgIH07CisgICAgICAgIHJldHVybiBuZXcgQzsKKyAgICB9CisgICAgZm9y
IChsZXQgaSA9IDA7IGkgPCAxNTsgKytpKQorICAgICAgICBmb28oKTsKKyAgICByZXR1cm4gZm9v
KCk7Cit9CisKK2Z1bmN0aW9uIHRhcmdldChvYmplY3QpCit7CisgICAgcmV0dXJuIFtvYmplY3Qu
aGVsbG8sIE9iamVjdC5nZXRQcm90b3R5cGVPZihvYmplY3QpXTsKK30KK25vSW5saW5lKHRhcmdl
dCk7CisKK3ZhciBwb2x5UHJvdG9PYmplY3QgPSBtYWtlUG9seVByb3RvT2JqZWN0KCk7Cit2YXIg
cHJvdG90eXBlID0gUmVmbGVjdC5nZXRQcm90b3R5cGVPZihwb2x5UHJvdG9PYmplY3QpOwordmFy
IG9iamVjdDEgPSB7IF9fcHJvdG9fXzogcHJvdG90eXBlLCBoZWxsbzogNDQgfTsKK3ZhciBvYmpl
Y3QyID0geyBoZWxsbzogNDUgfTsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU1OyArK2kpIHsKKyAg
ICBzaG91bGRCZSh0YXJnZXQob2JqZWN0MSlbMV0sIHByb3RvdHlwZSk7CisgICAgc2hvdWxkQmUo
dGFyZ2V0KG9iamVjdDIpWzFdLCBPYmplY3QucHJvdG90eXBlKTsKK30KZGlmZiAtLWdpdCBhL0pT
VGVzdHMvc3RyZXNzL29iamVjdC1nZXQtcHJvdG90eXBlLW9mLXBvbHktbW9uby1wcm90by5qcyBi
L0pTVGVzdHMvc3RyZXNzL29iamVjdC1nZXQtcHJvdG90eXBlLW9mLXBvbHktbW9uby1wcm90by5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4zZmEwOWVmMDk2ZDI2YzcyNGYyNDM3MDVlY2FiMDk5OWUxN2MwNzA1Ci0t
LSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mvb2JqZWN0LWdldC1wcm90b3R5cGUtb2Yt
cG9seS1tb25vLXByb3RvLmpzCkBAIC0wLDAgKzEsMzMgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFj
dHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCitmdW5jdGlvbiBt
YWtlUG9seVByb3RvT2JqZWN0KCkgeworICAgIGZ1bmN0aW9uIGZvbygpIHsKKyAgICAgICAgY2xh
c3MgQyB7CisgICAgICAgICAgICBjb25zdHJ1Y3RvcigpIHsKKyAgICAgICAgICAgICAgICB0aGlz
Ll9maWVsZCA9IDQyOworICAgICAgICAgICAgICAgIHRoaXMuaGVsbG8gPSAzMzsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfTsKKyAgICAgICAgcmV0dXJuIG5ldyBDOworICAgIH0KKyAgICBmb3Ig
KGxldCBpID0gMDsgaSA8IDE1OyArK2kpCisgICAgICAgIGZvbygpOworICAgIHJldHVybiBmb28o
KTsKK30KKworZnVuY3Rpb24gdGFyZ2V0KG9iamVjdCkKK3sKKyAgICByZXR1cm4gW29iamVjdC5o
ZWxsbywgT2JqZWN0LmdldFByb3RvdHlwZU9mKG9iamVjdCldOworfQorbm9JbmxpbmUodGFyZ2V0
KTsKKwordmFyIHBvbHlQcm90b09iamVjdCA9IG1ha2VQb2x5UHJvdG9PYmplY3QoKTsKK3ZhciBw
cm90b3R5cGUgPSBSZWZsZWN0LmdldFByb3RvdHlwZU9mKHBvbHlQcm90b09iamVjdCk7Cit2YXIg
b2JqZWN0ID0geyBfX3Byb3RvX186IHByb3RvdHlwZSwgaGVsbG86IDQ0IH07Citmb3IgKHZhciBp
ID0gMDsgaSA8IDFlNTsgKytpKSB7CisgICAgc2hvdWxkQmUodGFyZ2V0KHBvbHlQcm90b09iamVj
dClbMV0sIHByb3RvdHlwZSk7CisgICAgc2hvdWxkQmUodGFyZ2V0KG9iamVjdClbMV0sIHByb3Rv
dHlwZSk7Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9vYmplY3QtZ2V0LXByb3RvdHlw
ZS1vZi1wb2x5LXByb3RvLmpzIGIvSlNUZXN0cy9zdHJlc3Mvb2JqZWN0LWdldC1wcm90b3R5cGUt
b2YtcG9seS1wcm90by5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40M2Q2NDlkNzQzZjgyYjY1OTExN2EyNTQyNjRj
YmY5ZjQ5M2QyMDY5Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mvb2JqZWN0LWdl
dC1wcm90b3R5cGUtb2YtcG9seS1wcm90by5qcwpAQCAtMCwwICsxLDMwIEBACitmdW5jdGlvbiBz
aG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQp
CisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKwor
ZnVuY3Rpb24gbWFrZVBvbHlQcm90b09iamVjdCgpIHsKKyAgICBmdW5jdGlvbiBmb28oKSB7Cisg
ICAgICAgIGNsYXNzIEMgeworICAgICAgICAgICAgY29uc3RydWN0b3IoKSB7CisgICAgICAgICAg
ICAgICAgdGhpcy5fZmllbGQgPSA0MjsKKyAgICAgICAgICAgICAgICB0aGlzLmhlbGxvID0gMzM7
CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgICAgIHJldHVybiBuZXcgQzsKKyAgICB9
CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxNTsgKytpKQorICAgICAgICBmb28oKTsKKyAgICBy
ZXR1cm4gZm9vKCk7Cit9CisKK2Z1bmN0aW9uIHRhcmdldChvYmplY3QpCit7CisgICAgcmV0dXJu
IFtvYmplY3QuaGVsbG8sIE9iamVjdC5nZXRQcm90b3R5cGVPZihvYmplY3QpXTsKK30KK25vSW5s
aW5lKHRhcmdldCk7CisKK3ZhciBwb2x5UHJvdG9PYmplY3QgPSBtYWtlUG9seVByb3RvT2JqZWN0
KCk7Cit2YXIgcHJvdG90eXBlID0gUmVmbGVjdC5nZXRQcm90b3R5cGVPZihwb2x5UHJvdG9PYmpl
Y3QpOworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTU7ICsraSkKKyAgICBzaG91bGRCZSh0YXJnZXQo
cG9seVByb3RvT2JqZWN0KVsxXSwgcHJvdG90eXBlKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3Ry
ZXNzL29iamVjdC1wcm90by1nZXR0ZXItZmlsdGVyZWQuanMgYi9KU1Rlc3RzL3N0cmVzcy9vYmpl
Y3QtcHJvdG8tZ2V0dGVyLWZpbHRlcmVkLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMzZmI1MjdjNTZkOTM3NzUz
YTc3ZjMyOGY3MzAyNDA3NmFkYzBjMzcKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVz
cy9vYmplY3QtcHJvdG8tZ2V0dGVyLWZpbHRlcmVkLmpzCkBAIC0wLDAgKzEsNjIgQEAKK2Z1bmN0
aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpCit7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhw
ZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsK
K30KKworZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJyb3JNZXNzYWdlKSB7CisgICAgdmFy
IGVycm9yVGhyb3duID0gZmFsc2U7CisgICAgdmFyIGVycm9yID0gbnVsbDsKKyAgICB0cnkgewor
ICAgICAgICBmdW5jKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBlcnJvclRocm93biA9
IHRydWU7CisgICAgICAgIGVycm9yID0gZTsKKyAgICB9CisgICAgaWYgKCFlcnJvclRocm93bikK
KyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdub3QgdGhyb3duJyk7CisgICAgaWYgKFN0cmluZyhl
cnJvcikgIT09IGVycm9yTWVzc2FnZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgZXJy
b3I6ICR7U3RyaW5nKGVycm9yKX1gKTsKK30KKworKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlv
biB0YXJnZXQob2JqZWN0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIG9iamVjdC5fX3Byb3RvX187
CisgICAgfQorICAgIG5vSW5saW5lKHRhcmdldCk7CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8
IDFlNDsgKytpKSB7CisgICAgICAgIHZhciBvYmplY3QgPSB7fTsKKyAgICAgICAgb2JqZWN0W2BD
b2NvYSR7aX1gXSA9IGBDb2NvYWA7CisgICAgICAgIHNob3VsZEJlKHRhcmdldChvYmplY3QpLCBP
YmplY3QucHJvdG90eXBlKTsKKyAgICB9Cit9KCkpOworCisoZnVuY3Rpb24gKCkgeworICAgIGZ1
bmN0aW9uIHRhcmdldChvYmplY3QpCisgICAgeworICAgICAgICByZXR1cm4gb2JqZWN0Ll9fcHJv
dG9fXzsKKyAgICB9CisgICAgbm9JbmxpbmUodGFyZ2V0KTsKKworICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgMWU0OyArK2kpIHsKKyAgICAgICAgdmFyIGFycmF5ID0gW107CisgICAgICAgIGFycmF5
W2BDb2NvYSR7aX1gXSA9IGBDb2NvYWA7CisgICAgICAgIHNob3VsZEJlKHRhcmdldChhcnJheSks
IEFycmF5LnByb3RvdHlwZSk7CisgICAgfQorfSgpKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBm
dW5jdGlvbiB0YXJnZXQob2JqZWN0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIG9iamVjdC5fX3By
b3RvX187CisgICAgfQorICAgIG5vSW5saW5lKHRhcmdldCk7CisKKyAgICBmb3IgKHZhciBpID0g
MDsgaSA8IDFlNDsgKytpKSB7CisgICAgICAgIGZ1bmN0aW9uIENvY29hKCkgeyB9CisgICAgICAg
IENvY29hW2BDb2NvYSR7aX1gXSA9IGBDb2NvYWA7CisgICAgICAgIHNob3VsZEJlKHRhcmdldChD
b2NvYSksIEZ1bmN0aW9uLnByb3RvdHlwZSk7CisgICAgfQorfSgpKTsKZGlmZiAtLWdpdCBhL0pT
VGVzdHMvc3RyZXNzL29iamVjdC1wcm90by1nZXR0ZXItcG9seS1tb25vLXByb3RvLmpzIGIvSlNU
ZXN0cy9zdHJlc3Mvb2JqZWN0LXByb3RvLWdldHRlci1wb2x5LW1vbm8tcHJvdG8uanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMWNjNzdlNThhYzc2OWFlMmZlMGQzYjU2MTYxNWE4N2U2YjIyNDQ0NQotLS0gL2Rldi9u
dWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL29iamVjdC1wcm90by1nZXR0ZXItcG9seS1tb25vLXBy
b3RvLmpzCkBAIC0wLDAgKzEsMzQgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0
ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCitmdW5jdGlvbiBtYWtlUG9seVByb3Rv
T2JqZWN0KCkgeworICAgIGZ1bmN0aW9uIGZvbygpIHsKKyAgICAgICAgY2xhc3MgQyB7CisgICAg
ICAgICAgICBjb25zdHJ1Y3RvcigpIHsKKyAgICAgICAgICAgICAgICB0aGlzLl9maWVsZCA9IDQy
OworICAgICAgICAgICAgfQorICAgICAgICB9OworICAgICAgICByZXR1cm4gbmV3IEM7CisgICAg
fQorICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTU7ICsraSkKKyAgICAgICAgZm9vKCk7CisgICAg
cmV0dXJuIGZvbygpOworfQorCitmdW5jdGlvbiB0YXJnZXQob2JqZWN0KQoreworICAgIHJldHVy
biBvYmplY3QuX19wcm90b19fOworfQorbm9JbmxpbmUodGFyZ2V0KTsKKwordmFyIHBvbHlQcm90
b09iamVjdCA9IG1ha2VQb2x5UHJvdG9PYmplY3QoKTsKK3ZhciBwcm90b3R5cGUgPSBSZWZsZWN0
LmdldFByb3RvdHlwZU9mKHBvbHlQcm90b09iamVjdCk7Cit2YXIgb2JqZWN0ID0geworICAgIF9f
cHJvdG9fXzogcHJvdG90eXBlCit9OworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTU7ICsraSkgewor
ICAgIHNob3VsZEJlKHRhcmdldChwb2x5UHJvdG9PYmplY3QpLCBwcm90b3R5cGUpOworICAgIHNo
b3VsZEJlKHRhcmdldChvYmplY3QpLCBwcm90b3R5cGUpOworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0
cy9zdHJlc3Mvb2JqZWN0LXByb3RvLWdldHRlci1wb2x5LXByb3RvLmpzIGIvSlNUZXN0cy9zdHJl
c3Mvb2JqZWN0LXByb3RvLWdldHRlci1wb2x5LXByb3RvLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjliOGVmZDkx
NTUxYjViYWZiMThkOGJkODZiYWI2ZDExNzg0NmVkZmMKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rl
c3RzL3N0cmVzcy9vYmplY3QtcHJvdG8tZ2V0dGVyLXBvbHktcHJvdG8uanMKQEAgLTAsMCArMSwy
OSBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1
YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyAr
IGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9uIG1ha2VQb2x5UHJvdG9PYmplY3QoKSB7CisgICAgZnVu
Y3Rpb24gZm9vKCkgeworICAgICAgICBjbGFzcyBDIHsKKyAgICAgICAgICAgIGNvbnN0cnVjdG9y
KCkgeworICAgICAgICAgICAgICAgIHRoaXMuX2ZpZWxkID0gNDI7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH07CisgICAgICAgIHJldHVybiBuZXcgQzsKKyAgICB9CisgICAgZm9yIChsZXQgaSA9
IDA7IGkgPCAxNTsgKytpKQorICAgICAgICBmb28oKTsKKyAgICByZXR1cm4gZm9vKCk7Cit9CisK
K2Z1bmN0aW9uIHRhcmdldChvYmplY3QpCit7CisgICAgcmV0dXJuIG9iamVjdC5fX3Byb3RvX187
Cit9Citub0lubGluZSh0YXJnZXQpOworCit2YXIgcG9seVByb3RvT2JqZWN0ID0gbWFrZVBvbHlQ
cm90b09iamVjdCgpOwordmFyIHByb3RvdHlwZSA9IFJlZmxlY3QuZ2V0UHJvdG90eXBlT2YocG9s
eVByb3RvT2JqZWN0KTsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU1OyArK2kpCisgICAgc2hvdWxk
QmUodGFyZ2V0KHBvbHlQcm90b09iamVjdCksIHByb3RvdHlwZSk7CmRpZmYgLS1naXQgYS9KU1Rl
c3RzL3N0cmVzcy9vYmplY3QtcHJvdG90eXBlLXByb3RvLWFjY2Vzc29ycy1zaG91bGQtdGhyb3ct
b24tdW5kZWZpbmVkLXRoaXMuanMgYi9KU1Rlc3RzL3N0cmVzcy9vYmplY3QtcHJvdG90eXBlLXBy
b3RvLWFjY2Vzc29ycy1zaG91bGQtdGhyb3ctb24tdW5kZWZpbmVkLXRoaXMuanMKaW5kZXggNWZm
YjRhYWFkNjc5ZWViMzY1MzAwZDFlOWE4MzAzZTdiMjU5NDk5My4uNWQ0NTA1Yjc3ODkzODY4MzU4
MGNhZmI0M2ZhYzQ2OTk0MmJlMjc1MSAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3Mvb2JqZWN0
LXByb3RvdHlwZS1wcm90by1hY2Nlc3NvcnMtc2hvdWxkLXRocm93LW9uLXVuZGVmaW5lZC10aGlz
LmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL29iamVjdC1wcm90b3R5cGUtcHJvdG8tYWNjZXNzb3Jz
LXNob3VsZC10aHJvdy1vbi11bmRlZmluZWQtdGhpcy5qcwpAQCAtMzQsNSArMzQsNSBAQCBmdW5j
dGlvbiBydW5UZXN0KHRlc3RJZCwgdGVzdCwgZXhwZWN0ZWRSZXN1bHQsIGV4cGVjdGVkRXhjZXB0
aW9uKSB7CiAgICAgfQogfQogCi1ydW5UZXN0KDEwMDAwLCB0ZXN0SW52b2tlR2V0dGVyLCB1bmRl
ZmluZWQsICJUeXBlRXJyb3I6IE9iamVjdC5wcm90b3R5cGUuX19wcm90b19fIGNhbGxlZCBvbiBu
dWxsIG9yIHVuZGVmaW5lZCIpOworcnVuVGVzdCgxMDAwMCwgdGVzdEludm9rZUdldHRlciwgdW5k
ZWZpbmVkLCAiVHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGlu
ZyAnZ2V0dGVyKCknKSIpOwogcnVuVGVzdCgxMDEwMCwgdGVzdEludm9rZVNldHRlciwgdW5kZWZp
bmVkLCAiVHlwZUVycm9yOiBPYmplY3QucHJvdG90eXBlLl9fcHJvdG9fXyBjYWxsZWQgb24gbnVs
bCBvciB1bmRlZmluZWQiKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3N0cmluZy1wcm90
by5qcyBiL0pTVGVzdHMvc3RyZXNzL3N0cmluZy1wcm90by5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZGNmMDEy
YTA3NjJmYjg1NWFlMmM0NThkMjY2Njk4NzBhZTkwODU4Ci0tLSAvZGV2L251bGwKKysrIGIvSlNU
ZXN0cy9zdHJlc3Mvc3RyaW5nLXByb3RvLmpzCkBAIC0wLDAgKzEsMTIgQEAKK2Z1bmN0aW9uIHNo
b3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkK
KyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCitm
dW5jdGlvbiB0YXJnZXQodmFsdWUpCit7CisgICAgcmV0dXJuIHZhbHVlLl9fcHJvdG9fXzsKK30K
K25vSW5saW5lKHRhcmdldCk7Citmb3IgKHZhciBpID0gMDsgaSA8IDFlNjsgKytpKQorICAgIHNo
b3VsZEJlKHRhcmdldCgiQ29jb2EiKSwgU3RyaW5nLnByb3RvdHlwZSkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>323308</attachid>
            <date>2017-10-10 07:42:13 -0700</date>
            <delta_ts>2017-10-16 11:33:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178067-20171010234212.patch</filename>
            <type>text/plain</type>
            <size>78304</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIzMTI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
Zjk5MWQwOWIwMTkwYWE0ZTE1ZTc5MDZjZmMyZGJlMjU5MzJmNjE2Li41NGZhZDIzODE4Yzk4ZTFl
ZTE2MTE5ZTVkNDRmYTA0ZmYzOGNmZTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5MiBAQAorMjAxNy0xMC0xMCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbSlNDXSBfX3Byb3RvX18gZ2V0dGVyIHNob3VsZCBiZSBmYXN0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzgwNjcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbiBvdXIgRVM2
IGNsYXNzIGltcGxlbWVudGF0aW9uLCB3ZSBhY2Nlc3MgX19wcm90b19fIGZpZWxkIHRvIHJldHJp
ZXZlIHN1cGVyIGNvbnN0cnVjdG9yLgorICAgICAgICBDdXJyZW50bHksIGl0IGlzIGhhbmRsZWQg
YXMgYW4gdXN1YWwgZ2V0dGVyIGNhbGwgdG8gYSBnZW5lcmljIGZ1bmN0aW9uLiBBbmQgREZHIGp1
c3QgZW1pdHMKKyAgICAgICAgQ2FsbCBub2RlIGZvciB0aGlzLiBJdCBpcyBpbmVmZmljaWVudCBz
aW5jZSB0eXBpY2FsbHkgd2Uga25vdyB0aGUgYHByb3RvdHlwZWAgb2YgdGhlIGdpdmVuCisgICAg
ICAgIG9iamVjdCB3aGVuIGFjY2Vzc2luZyBgb2JqZWN0Ll9fcHJvdG9fX2Agc2luY2Ugd2UgZW1p
dCBDaGVja1N0cnVjdHVyZSBmb3IgdGhpcyBgb2JqZWN0YC4KKyAgICAgICAgSWYgU3RydWN0dXJl
IGhhcyBtb25vIHByb3RvLCB3ZSBjYW4gaW1tZWRpYXRlbHkgZm9sZCBpdCB0byBjb25zdGFudCB2
YWx1ZS4gSWYgaXQgaXMgcG9seSBwcm90bywKKyAgICAgICAgd2UgY2FuIHN0aWxsIGNoYW5nZSB0
aGlzIHRvIGVmZmljaWVudCBhY2Nlc3MgdG8gcG9seSBwcm90byBzbG90LgorCisgICAgICAgIFRo
aXMgcGF0Y2ggaW1wbGVtZW50cyBHZXRQcm90b3R5cGVPZiBERkcgbm9kZS4gVGhpcyBub2RlIGVm
ZmljaWVudGx5IGFjY2Vzc2VzIHRvIHByb3RvdHlwZSBvZgorICAgICAgICB0aGUgZ2l2ZW4gb2Jq
ZWN0LiBBbmQgaW4gQUkgYW5kIEJ5dGVDb2RlUGFyc2VyIHBoYXNlLCB3ZSBhdHRlbXB0IHRvIGZv
bGQgaXQgdG8gY29uc3RhbnQuCisgICAgICAgIEJ5dGVDb2RlUGFyc2VyJ3MgZm9sZGluZyBpcyBh
IGJpdCBpbXBvcnRhbnQgc2luY2Ugd2UgaGF2ZSBgY2FsbGVlLl9fcHJvdG9fX2AgY29kZSB0byBn
ZXQgc3VwZXIKKyAgICAgICAgY29uc3RydWN0b3IuIElmIHdlIGNhbiBjaGFuZ2UgdGhpcyB0byBj
b25zdGFudCwgd2UgY2FuIHJlaWZ5IENhbGxMaW5rSW5mbyB3aXRoIHRoaXMgY29uc3RhbnQuCisg
ICAgICAgIFRoaXMgcGF2ZXMgdGhlIHdheSB0byBvcHRpbWl6aW5nIEFycmF5Q29uc3RydWN0b3Ig
c3VwZXIgY2FsbHNbMV0sIHdoaWNoIGlzIHBhcnRpY3VsYXJseSBpbXBvcnRhbnQKKyAgICAgICAg
Zm9yIEFSRVMtNiBNTC4KKworICAgICAgICBBbmQgd2UgYWxzbyBvcHRpbWl6ZSBSZWZsZWN0Lmdl
dFByb3RvdHlwZU9mIGFuZCBPYmplY3QuZ2V0UHJvdG90eXBlT2Ygd2l0aCB0aGlzIEdldFByb3Rv
dHlwZU9mIG5vZGUuCisKKyAgICAgICAgQ3VycmVudGx5LCBfX3Byb3RvX18gYWNjZXNzIGZvciBw
b2x5IHByb3RvIG9iamVjdCBpcyBub3QgaGFuZGxlZCB3ZWxsIGluIElDLiBCdXQgd2UgYWRkIGNv
ZGUgaGFuZGxpbmcKKyAgICAgICAgcG9seSBwcm90byBpbiBHZXRQcm90b3R5cGVPZiBzaW5jZSBS
ZWZsZWN0LmdldFByb3RvdHlwZU9mIGFuZCBPYmplY3QuZ2V0UHJvdG90eXBlT2YgY2FuIHVzZSBp
dC4KKyAgICAgICAgT25jZSBJQyBzdGFydHMgaGFuZGxpbmcgcG9seSBwcm90byAmIGludHJpbnNp
YyBnZXR0ZXIgd2VsbCwgdGhpcyBjb2RlIHdpbGwgYmUgdXNlZCBmb3IgdGhhdCB0b28uCisKKyAg
ICAgICAgVGhpcyBwYXRjaCBpbXByb3ZlcyBTaXhTcGVlZCBzdXBlci5lczYgYnkgMy40MnguCisK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VsaW5lICAgICAgICAgICAgICAg
ICAgcGF0Y2hlZAorCisgICAgICAgIHN1cGVyLmVzNiAgICAgICAgICAgMTIzLjY2NjYrLTMuOTkx
NyAgICAgXiAgICAgMzYuMTY4NCstMS4wMzUxICAgICAgICBeIGRlZmluaXRlbHkgMy40MTkyeCBm
YXN0ZXIKKworICAgICAgICBbMV06IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzgwNjQKKworICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5l
cy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0
ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2Vy
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2lj
Q2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNp
Y0dldHRlcik6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5
SWQpOgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyaXplLmg6CisgICAgICAgIChKU0M6OkRGRzo6
Y2xvYmJlcml6ZSk6CisgICAgICAgICogZGZnL0RGR0RvZXNHQy5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6ZG9lc0dDKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpG
aXh1cFBoYXNlOjpmaXh1cEdldFByb3RvdHlwZU9mKToKKyAgICAgICAgKiBkZmcvREZHSGVhcExv
Y2F0aW9uLmNwcDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogZGZn
L0RGR0hlYXBMb2NhdGlvbi5oOgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAgIChK
U0M6OkRGRzo6Tm9kZTo6aGFzSGVhcFByZWRpY3Rpb24pOgorICAgICAgICAoSlNDOjpERkc6Ok5v
ZGU6OnNob3VsZFNwZWN1bGF0ZUZ1bmN0aW9uKToKKyAgICAgICAgKiBkZmcvREZHTm9kZVR5cGUu
aDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogZGZnL0RGR09w
ZXJhdGlvbnMuaDoKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2Uu
Y3BwOgorICAgICAgICAqIGRmZy9ERkdTYWZlVG9FeGVjdXRlLmg6CisgICAgICAgIChKU0M6OkRG
Rzo6c2FmZVRvRXhlY3V0ZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlRnVuY3Rpb24pOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVGaW5hbE9iamVjdCk6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRQcm90b3R5cGVP
Zik6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgICogZGZnL0RG
R1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGZ0
bC9GVExDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNhbkNvbXBpbGUpOgor
ICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjb21waWxlTm9kZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpM
b3dlckRGR1RvQjM6OmNvbXBpbGVHZXRQcm90b3R5cGVPZik6CisgICAgICAgIChKU0M6OkZUTDo6
REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVJbnN0YW5jZU9mKToKKyAgICAgICAgKiBqaXQvSW50
cmluc2ljRW1pdHRlci5jcHA6CisgICAgICAgIChKU0M6OkludHJpbnNpY0dldHRlckFjY2Vzc0Nh
c2U6OmNhbkVtaXRJbnRyaW5zaWNHZXR0ZXIpOgorICAgICAgICAoSlNDOjpJbnRyaW5zaWNHZXR0
ZXJBY2Nlc3NDYXNlOjplbWl0SW50cmluc2ljR2V0dGVyKToKKyAgICAgICAgKiBydW50aW1lL0lu
dHJpbnNpYy5jcHA6CisgICAgICAgIChKU0M6OmludHJpbnNpY05hbWUpOgorICAgICAgICAqIHJ1
bnRpbWUvSW50cmluc2ljLmg6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6
CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0KToKKyAgICAgICAgKiBydW50aW1l
L0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6Z2xvYmFsRnVuY1By
b3RvR2V0dGVyKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmg6
CisgICAgICAgICogcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgICogcnVu
dGltZS9SZWZsZWN0T2JqZWN0LmNwcDoKKwogMjAxNy0xMC0wOSAgWXVzdWtlIFN1enVraSAgPHV0
YXRhbmUudGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBgYXN5bmNgIHNob3VsZCBiZSBhYmxlIHRv
IGJlIHVzZWQgYXMgYW4gaW1wb3J0ZWQgYmluZGluZyBuYW1lCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5k
ZXggYmVhMTY4OWFhYmQ1MzAzODA2MmVlYzgwOTNhMTYwNjZmOGNkMWI2Yy4uNzViMDI5ZmY4Y2Q2
MDQ0N2QwNGNhYzY5YTA5MTZkNTdiYzU0MzBjMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaApAQCAtMjY5
OSw2ICsyNjk5LDQ4IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlw
ZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgIGZvck5vZGUo
bm9kZSkuc2V0VHlwZShTcGVjSW50MzJPbmx5KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorCisg
ICAgY2FzZSBHZXRQcm90b3R5cGVPZjogeworICAgICAgICBBYnN0cmFjdFZhbHVlJiB2YWx1ZSA9
IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBpZiAoKHZhbHVlLm1fdHlwZSAmJiAh
KHZhbHVlLm1fdHlwZSAmIH5TcGVjT2JqZWN0KSkgJiYgdmFsdWUubV9zdHJ1Y3R1cmUuaXNGaW5p
dGUoKSkgeworICAgICAgICAgICAgYm9vbCBjYW5ub3RGb2xkID0gZmFsc2U7CisgICAgICAgICAg
ICBKU1ZhbHVlIHByb3RvdHlwZTsKKyAgICAgICAgICAgIHZhbHVlLm1fc3RydWN0dXJlLmZvckVh
Y2goWyZdIChSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSkgeworICAgICAgICAgICAgICAg
IGF1dG8gZ2V0UHJvdG90eXBlTWV0aG9kID0gc3RydWN0dXJlLT5jbGFzc0luZm8oKS0+bWV0aG9k
VGFibGUuZ2V0UHJvdG90eXBlOworICAgICAgICAgICAgICAgIE1ldGhvZFRhYmxlOjpHZXRQcm90
b3R5cGVGdW5jdGlvblB0ciBkZWZhdWx0R2V0UHJvdG90eXBlID0gSlNPYmplY3Q6OmdldFByb3Rv
dHlwZTsKKyAgICAgICAgICAgICAgICBpZiAoZ2V0UHJvdG90eXBlTWV0aG9kICE9IGRlZmF1bHRH
ZXRQcm90b3R5cGUpIHsKKyAgICAgICAgICAgICAgICAgICAgY2Fubm90Rm9sZCA9IHRydWU7Cisg
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgICAgICBpZiAoc3RydWN0dXJlLT5oYXNQb2x5UHJvdG8oKSkgeworICAgICAgICAgICAgICAg
ICAgICBjYW5ub3RGb2xkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoIXByb3RvdHlwZSkKKyAgICAgICAg
ICAgICAgICAgICAgcHJvdG90eXBlID0gc3RydWN0dXJlLT5zdG9yZWRQcm90b3R5cGUoKTsKKyAg
ICAgICAgICAgICAgICBlbHNlIGlmIChwcm90b3R5cGUgIT0gc3RydWN0dXJlLT5zdG9yZWRQcm90
b3R5cGUoKSkKKyAgICAgICAgICAgICAgICAgICAgY2Fubm90Rm9sZCA9IHRydWU7CisgICAgICAg
ICAgICB9KTsKKworICAgICAgICAgICAgaWYgKHByb3RvdHlwZSAmJiAhY2Fubm90Rm9sZCkgewor
ICAgICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsICptX2dyYXBoLmZyZWV6ZShwcm90b3R5
cGUpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
CisgICAgICAgIHN3aXRjaCAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7CisgICAgICAgIGNh
c2UgQXJyYXlVc2U6CisgICAgICAgIGNhc2UgRnVuY3Rpb25Vc2U6CisgICAgICAgIGNhc2UgRmlu
YWxPYmplY3RVc2U6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgIGNsb2JiZXJXb3JsZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNsb2JiZXJMaW1pdCk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBmb3JOb2RlKG5vZGUpLnNl
dFR5cGUobV9ncmFwaCwgU3BlY09iamVjdCB8IFNwZWNPdGhlcik7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBHZXRCeU9mZnNldDogewogICAgICAgICBTdG9yYWdl
QWNjZXNzRGF0YSYgZGF0YSA9IG5vZGUtPnN0b3JhZ2VBY2Nlc3NEYXRhKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IGQwZWYyZjlh
MDk1Njk0NGY5ZjExNWU1MDFlYWZjNzk0YzhjMDM0YTcuLjhkMWUwNjA0MzU5ZGY1YTNmMjkzNWNi
OTg0ZmNmYzA0NzAxY2VlZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Qnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC0yMzgsNyArMjM4LDcgQEAgY2xhc3MgQnl0ZUNvZGVQYXJz
ZXIgewogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+CiAgICAgYm9vbCBoYW5k
bGVET01KSVRDYWxsKE5vZGUqIGNhbGxlZSwgaW50IHJlc3VsdE9wZXJhbmQsIGNvbnN0IERPTUpJ
VDo6U2lnbmF0dXJlKiwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIGNvbnN0IENoZWNrc0Z1bmN0b3Im
IGluc2VydENoZWNrcyk7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4KLSAg
ICBib29sIGhhbmRsZUludHJpbnNpY0dldHRlcihpbnQgcmVzdWx0T3BlcmFuZCwgY29uc3QgR2V0
QnlJZFZhcmlhbnQmIGludHJpbnNpY1ZhcmlhbnQsIE5vZGUqIHRoaXNOb2RlLCBjb25zdCBDaGVj
a3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpOworICAgIGJvb2wgaGFuZGxlSW50cmluc2ljR2V0dGVy
KGludCByZXN1bHRPcGVyYW5kLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBjb25zdCBHZXRC
eUlkVmFyaWFudCYgaW50cmluc2ljVmFyaWFudCwgTm9kZSogdGhpc05vZGUsIGNvbnN0IENoZWNr
c0Z1bmN0b3ImIGluc2VydENoZWNrcyk7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVu
Y3Rvcj4KICAgICBib29sIGhhbmRsZVR5cGVkQXJyYXlDb25zdHJ1Y3RvcihpbnQgcmVzdWx0T3Bl
cmFuZCwgSW50ZXJuYWxGdW5jdGlvbiosIGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzLCBUeXBlZEFycmF5VHlwZSwgY29uc3QgQ2hlY2tzRnVuY3RvciYg
aW5zZXJ0Q2hlY2tzKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgpAQCAt
MjYyMCw2ICsyNjIwLDI0IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0Nh
bGwoTm9kZSogY2FsbGVlLCBpbnQgcmVzdWx0T3BlcmFuZCwgSW50cmluCiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KIAorICAgIGNhc2UgT2JqZWN0R2V0UHJvdG90eXBlT2ZJbnRyaW5zaWM6
IHsKKyAgICAgICAgaWYgKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICE9IDIpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgaW5zZXJ0Q2hlY2tzKCk7CisgICAgICAgIHNl
dChWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0T3BlcmFuZCksIGFkZFRvR3JhcGgoR2V0UHJvdG90eXBl
T2YsIE9wSW5mbygwKSwgT3BJbmZvKHByZWRpY3Rpb24pLCBnZXQodmlydHVhbFJlZ2lzdGVyRm9y
QXJndW1lbnQoMSwgcmVnaXN0ZXJPZmZzZXQpKSkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisKKyAgICBjYXNlIFJlZmxlY3RHZXRQcm90b3R5cGVPZkludHJpbnNpYzogeworICAgICAg
ICBpZiAoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgIT0gMikKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgICAgICBpbnNlcnRDaGVja3MoKTsKKyAgICAgICAgc2V0KFZpcnR1YWxS
ZWdpc3RlcihyZXN1bHRPcGVyYW5kKSwgYWRkVG9HcmFwaChHZXRQcm90b3R5cGVPZiwgT3BJbmZv
KDApLCBPcEluZm8ocHJlZGljdGlvbiksIEVkZ2UoZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3Vt
ZW50KDEsIHJlZ2lzdGVyT2Zmc2V0KSksIE9iamVjdFVzZSkpKTsKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgfQorCiAgICAgY2FzZSBJc1R5cGVkQXJyYXlWaWV3SW50cmluc2ljOiB7CiAgICAg
ICAgIEFTU0VSVChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA9PSAyKTsKIApAQCAtMjk2Nyw3
ICsyOTg1LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlRE9NSklUQ2FsbChOb2RlKiBj
YWxsVGFyZ2V0LCBpbnQgcmVzdWx0T3BlcmFuZCwgY29uc3QKIAogCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDaGVja3NGdW5jdG9yPgotYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljR2V0
dGVyKGludCByZXN1bHRPcGVyYW5kLCBjb25zdCBHZXRCeUlkVmFyaWFudCYgdmFyaWFudCwgTm9k
ZSogdGhpc05vZGUsIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcykKK2Jvb2wgQnl0
ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0dldHRlcihpbnQgcmVzdWx0T3BlcmFuZCwgU3Bl
Y3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgY29uc3QgR2V0QnlJZFZhcmlhbnQmIHZhcmlhbnQsIE5v
ZGUqIHRoaXNOb2RlLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpCiB7CiAgICAg
c3dpdGNoICh2YXJpYW50LmludHJpbnNpYygpKSB7CiAgICAgY2FzZSBUeXBlZEFycmF5Qnl0ZUxl
bmd0aEludHJpbnNpYzogewpAQCAtMzAzNCw2ICszMDUyLDQwIEBAIGJvb2wgQnl0ZUNvZGVQYXJz
ZXI6OmhhbmRsZUludHJpbnNpY0dldHRlcihpbnQgcmVzdWx0T3BlcmFuZCwgY29uc3QgR2V0QnlJ
ZFZhcmlhCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAorICAgIGNhc2UgVW5kZXJzY29y
ZVByb3RvSW50cmluc2ljOiB7CisgICAgICAgIGluc2VydENoZWNrcygpOworCisgICAgICAgIGJv
b2wgY2Fubm90Rm9sZCA9IGZhbHNlOworICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZTsKKyAgICAg
ICAgdmFyaWFudC5zdHJ1Y3R1cmVTZXQoKS5mb3JFYWNoKFsmXSAoU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpIHsKKyAgICAgICAgICAgIGF1dG8gZ2V0UHJvdG90eXBlTWV0aG9kID0gc3RydWN0dXJlLT5j
bGFzc0luZm8oKS0+bWV0aG9kVGFibGUuZ2V0UHJvdG90eXBlOworICAgICAgICAgICAgTWV0aG9k
VGFibGU6OkdldFByb3RvdHlwZUZ1bmN0aW9uUHRyIGRlZmF1bHRHZXRQcm90b3R5cGUgPSBKU09i
amVjdDo6Z2V0UHJvdG90eXBlOworICAgICAgICAgICAgaWYgKGdldFByb3RvdHlwZU1ldGhvZCAh
PSBkZWZhdWx0R2V0UHJvdG90eXBlKSB7CisgICAgICAgICAgICAgICAgY2Fubm90Rm9sZCA9IHRy
dWU7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBpZiAoc3RydWN0dXJlLT5oYXNQb2x5UHJvdG8oKSkgeworICAgICAgICAgICAgICAgIGNhbm5v
dEZvbGQgPSB0cnVlOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGlmICghcHJvdG90eXBlKQorICAgICAgICAgICAgICAgIHByb3RvdHlwZSA9IHN0
cnVjdHVyZS0+c3RvcmVkUHJvdG90eXBlKCk7CisgICAgICAgICAgICBlbHNlIGlmIChwcm90b3R5
cGUgIT0gc3RydWN0dXJlLT5zdG9yZWRQcm90b3R5cGUoKSkKKyAgICAgICAgICAgICAgICBjYW5u
b3RGb2xkID0gdHJ1ZTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgLy8gT0ssIG9ubHkgb25lIHBy
b3RvdHlwZSBpcyBmb3VuZC4gV2UgcGVyZm9ybSBjb25zdGFudCBmb2xkaW5nIGhlcmUuCisgICAg
ICAgIC8vIFRoaXMgaW5mb3JtYXRpb24gaXMgaW1wb3J0YW50IGZvciBzdXBlcidzIGNvbnN0cnVj
dG9yIGNhbGwgdG8gZ2V0IG5ldy50YXJnZXQgY29uc3RhbnQuCisgICAgICAgIGlmIChwcm90b3R5
cGUgJiYgIWNhbm5vdEZvbGQpIHsKKyAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIocmVz
dWx0T3BlcmFuZCksIHdlYWtKU0NvbnN0YW50KHByb3RvdHlwZSkpOworICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgIH0KKworICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKHJlc3Vs
dE9wZXJhbmQpLCBhZGRUb0dyYXBoKEdldFByb3RvdHlwZU9mLCBPcEluZm8oMCksIE9wSW5mbyhw
cmVkaWN0aW9uKSwgdGhpc05vZGUpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCiAg
ICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTM4MTcsNyArMzg2
OSw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5SWQoCiAgICAgCiAgICAgTm9k
ZSogZ2V0dGVyID0gYWRkVG9HcmFwaChHZXRHZXR0ZXIsIGxvYWRlZFZhbHVlKTsKIAotICAgIGlm
IChoYW5kbGVJbnRyaW5zaWNHZXR0ZXIoZGVzdGluYXRpb25PcGVyYW5kLCB2YXJpYW50LCBiYXNl
LAorICAgIGlmIChoYW5kbGVJbnRyaW5zaWNHZXR0ZXIoZGVzdGluYXRpb25PcGVyYW5kLCBwcmVk
aWN0aW9uLCB2YXJpYW50LCBiYXNlLAogICAgICAgICAgICAgWyZdICgpIHsKICAgICAgICAgICAg
ICAgICBhZGRUb0dyYXBoKENoZWNrQ2VsbCwgT3BJbmZvKG1fZ3JhcGguZnJlZXplKHZhcmlhbnQu
aW50cmluc2ljRnVuY3Rpb24oKSkpLCBnZXR0ZXIpOwogICAgICAgICAgICAgfSkpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKaW5kZXggNTY2NDkwYjEzYTgzNWMz
NjI1YzRkOTY2NzVkNTExZWI2MWFjNDE4Ni4uNmI1ZjY1Nzc4MTMzNzdjOGQzOWU2YjA4YmZhMmYz
ODhjNjE0MTdmMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9i
YmVyaXplLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgK
QEAgLTExMTQsNiArMTExNCwyMyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2Rl
KiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgICAgICBy
ZWFkKE1pc2NGaWVsZHMpOwogICAgICAgICBkZWYoSGVhcExvY2F0aW9uKFR5cGVkQXJyYXlCeXRl
T2Zmc2V0TG9jLCBNaXNjRmllbGRzLCBub2RlLT5jaGlsZDEoKSksIExhenlOb2RlKG5vZGUpKTsK
ICAgICAgICAgcmV0dXJuOworCisgICAgY2FzZSBHZXRQcm90b3R5cGVPZjogeworICAgICAgICBz
d2l0Y2ggKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkgeworICAgICAgICBjYXNlIEFycmF5VXNl
OgorICAgICAgICBjYXNlIEZ1bmN0aW9uVXNlOgorICAgICAgICBjYXNlIEZpbmFsT2JqZWN0VXNl
OgorICAgICAgICAgICAgcmVhZChKU0NlbGxfc3RydWN0dXJlSUQpOworICAgICAgICAgICAgcmVh
ZChKU09iamVjdF9idXR0ZXJmbHkpOworICAgICAgICAgICAgcmVhZChOYW1lZFByb3BlcnRpZXMp
OyAvLyBQb2x5IHByb3RvIGNvdWxkIGxvYWQgcHJvdG90eXBlIGZyb20gaXRzIHNsb3QuCisgICAg
ICAgICAgICBkZWYoSGVhcExvY2F0aW9uKFByb3RvdHlwZUxvYywgTmFtZWRQcm9wZXJ0aWVzLCBu
b2RlLT5jaGlsZDEoKSksIExhenlOb2RlKG5vZGUpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJlYWQoV29ybGQpOworICAgICAgICAgICAgd3Jp
dGUoSGVhcCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CiAgICAgICAg
IAogICAgIGNhc2UgR2V0QnlPZmZzZXQ6CiAgICAgY2FzZSBHZXRHZXR0ZXJTZXR0ZXJCeU9mZnNl
dDogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCmluZGV4IDU4YTc1ZjVl
ODVjZTI0ZThmODNlODE0ZjBjNmExZDQ1OTJhNjJjN2QuLmU1ZmE0ZjM3ODFmNmE4NGY3YTUyZjll
NTY1YmM5ZGNkZDBkNzU5ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRG9lc0dDLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5j
cHAKQEAgLTIzNiw2ICsyMzYsNyBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5v
ZGUpCiAgICAgY2FzZSBTdHJpbmdDaGFyQXQ6CiAgICAgY2FzZSBTdHJpbmdDaGFyQ29kZUF0Ogog
ICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQ6CisgICAgY2FzZSBHZXRQcm90b3R5cGVP
ZjoKICAgICBjYXNlIFB1dEJ5VmFsRGlyZWN0OgogICAgIGNhc2UgUHV0QnlWYWw6CiAgICAgY2Fz
ZSBQdXRCeVZhbEFsaWFzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFz
ZS5jcHAKaW5kZXggNWZmOThkYjU2YWVkN2QyMTJkMGNiMjg0MTQzNjE3MjE2MWJjNjlmMC4uOGU1
ZjJlZjhhNDVmMzRjMDgzOGQ3N2RkZmQ4ZTljMjQ4MTc4ZTRjYSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCkBAIC0xNTk3LDYgKzE1OTcsMTEgQEAgY2xh
c3MgRml4dXBQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogCisgICAgICAgIGNhc2UgR2V0UHJvdG90eXBlT2Y6IHsKKyAgICAgICAgICAgIGZpeHVw
R2V0UHJvdG90eXBlT2Yobm9kZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAg
ICAgICAgIGNhc2UgUGhpOgogICAgICAgICBjYXNlIFVwc2lsb246CiAgICAgICAgIGNhc2UgRW50
cnlTd2l0Y2g6CkBAIC0yMjk2LDYgKzIzMDEsNTkgQEAgY2xhc3MgRml4dXBQaGFzZSA6IHB1Ymxp
YyBQaGFzZSB7CiAgICAgICAgIH0KICAgICB9CiAKKyAgICB2b2lkIGZpeHVwR2V0UHJvdG90eXBl
T2YoTm9kZSogbm9kZSkKKyAgICB7CisgICAgICAgIC8vIFJlZmxlY3QuZ2V0UHJvdG90eXBlT2Yg
b25seSBhY2NlcHRzIE9iamVjdHMuIEZvciBSZWZsZWN0LmdldFByb3RvdHlwZU9mLCBCeXRlQ29k
ZVBhcnNlciBhdHRhY2hlcyBPYmplY3RVc2UgZWRnZSBmaWx0ZXIgYmVmb3JlIGZpeHVwIHBoYXNl
LgorICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpICE9IE9iamVjdFVzZSkgewor
ICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVTdHJpbmcoKSkg
eworICAgICAgICAgICAgICAgIGluc2VydENoZWNrPFN0cmluZ1VzZT4obm9kZS0+Y2hpbGQxKCku
bm9kZSgpKTsKKyAgICAgICAgICAgICAgICBtX2dyYXBoLmNvbnZlcnRUb0NvbnN0YW50KG5vZGUs
IG1fZ3JhcGguZnJlZXplKG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYyktPnN0cmluZ1Byb3RvdHlwZSgpKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxh
dGVJbnQzMigpKSB7CisgICAgICAgICAgICAgICAgaW5zZXJ0Q2hlY2s8SW50MzJVc2U+KG5vZGUt
PmNoaWxkMSgpLm5vZGUoKSk7CisgICAgICAgICAgICAgICAgbV9ncmFwaC5jb252ZXJ0VG9Db25z
dGFudChub2RlLCBtX2dyYXBoLmZyZWV6ZShtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpLT5udW1iZXJQcm90b3R5cGUoKSkpOworICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChlbmFibGVJbnQ1MigpICYmIG5v
ZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVBbnlJbnQoKSkgeworICAgICAgICAgICAgICAg
IGluc2VydENoZWNrPEludDUyUmVwVXNlPihub2RlLT5jaGlsZDEoKS5ub2RlKCkpOworICAgICAg
ICAgICAgICAgIG1fZ3JhcGguY29udmVydFRvQ29uc3RhbnQobm9kZSwgbV9ncmFwaC5mcmVlemUo
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+bnVtYmVyUHJv
dG90eXBlKCkpKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZU51bWJlcigpKSB7Cisg
ICAgICAgICAgICAgICAgaW5zZXJ0Q2hlY2s8TnVtYmVyVXNlPihub2RlLT5jaGlsZDEoKS5ub2Rl
KCkpOworICAgICAgICAgICAgICAgIG1fZ3JhcGguY29udmVydFRvQ29uc3RhbnQobm9kZSwgbV9n
cmFwaC5mcmVlemUobV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KS0+bnVtYmVyUHJvdG90eXBlKCkpKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZVN5
bWJvbCgpKSB7CisgICAgICAgICAgICAgICAgaW5zZXJ0Q2hlY2s8U3ltYm9sVXNlPihub2RlLT5j
aGlsZDEoKS5ub2RlKCkpOworICAgICAgICAgICAgICAgIG1fZ3JhcGguY29udmVydFRvQ29uc3Rh
bnQobm9kZSwgbV9ncmFwaC5mcmVlemUobV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKS0+c3ltYm9sUHJvdG90eXBlKCkpKTsKKyAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3Vs
ZFNwZWN1bGF0ZUJvb2xlYW4oKSkgeworICAgICAgICAgICAgICAgIGluc2VydENoZWNrPEJvb2xl
YW5Vc2U+KG5vZGUtPmNoaWxkMSgpLm5vZGUoKSk7CisgICAgICAgICAgICAgICAgbV9ncmFwaC5j
b252ZXJ0VG9Db25zdGFudChub2RlLCBtX2dyYXBoLmZyZWV6ZShtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5ib29sZWFuUHJvdG90eXBlKCkpKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBp
ZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUZpbmFsT2JqZWN0KCkpIHsKKyAgICAg
ICAgICAgIGZpeEVkZ2U8RmluYWxPYmplY3RVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAg
ICAgIG5vZGUtPmNsZWFyRmxhZ3MoTm9kZU11c3RHZW5lcmF0ZSk7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxh
dGVBcnJheSgpKSB7CisgICAgICAgICAgICBmaXhFZGdlPEFycmF5VXNlPihub2RlLT5jaGlsZDEo
KSk7CisgICAgICAgICAgICBub2RlLT5jbGVhckZsYWdzKE5vZGVNdXN0R2VuZXJhdGUpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+
c2hvdWxkU3BlY3VsYXRlRnVuY3Rpb24oKSkgeworICAgICAgICAgICAgZml4RWRnZTxGdW5jdGlv
blVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgbm9kZS0+Y2xlYXJGbGFncyhOb2Rl
TXVzdEdlbmVyYXRlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKwog
ICAgIHZvaWQgZml4dXBUb1RoaXMoTm9kZSogbm9kZSkKICAgICB7CiAgICAgICAgIEVDTUFNb2Rl
IGVjbWFNb2RlID0gbV9ncmFwaC5leGVjdXRhYmxlRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykt
PmlzU3RyaWN0TW9kZSgpID8gU3RyaWN0TW9kZSA6IE5vdFN0cmljdE1vZGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0hlYXBMb2NhdGlvbi5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0hlYXBMb2NhdGlvbi5jcHAKaW5kZXggNGVkMGU0NzYyYTUx
ZjI4MDI3Yzc2YzhhMTRjMGQyYzE4ZjljZGI2Ni4uMjBkOTI2OWZjZWEyOGFhNDc0MzA5ODFlZWQ1
MzUzMjY2NDA0ODY5OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdI
ZWFwTG9jYXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSGVhcExv
Y2F0aW9uLmNwcApAQCAtMTUxLDYgKzE1MSwxMCBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRT
dHJlYW0mIG91dCwgTG9jYXRpb25LaW5kIGtpbmQpCiAgICAgY2FzZSBUeXBlZEFycmF5Qnl0ZU9m
ZnNldExvYzoKICAgICAgICAgb3V0LnByaW50KCJUeXBlZEFycmF5Qnl0ZU9mZnNldExvYyIpOwog
ICAgICAgICByZXR1cm47CisKKyAgICBjYXNlIFByb3RvdHlwZUxvYzoKKyAgICAgICAgb3V0LnBy
aW50KCJQcm90b3R5cGVMb2MiKTsKKyAgICAgICAgcmV0dXJuOwogICAgICAgICAKICAgICBjYXNl
IFN0cnVjdHVyZUxvYzoKICAgICAgICAgb3V0LnByaW50KCJTdHJ1Y3R1cmVMb2MiKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSGVhcExvY2F0aW9uLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0hlYXBMb2NhdGlvbi5oCmluZGV4IDY3NjU2NWNmYmYw
ZDEzMTIxOThjZDQxNGIyYTNiYTY3NjBhMGM5M2IuLmE3ZTE0MjdmMGFkZjQ0ZjY1ZGQxZDE2OTc0
ZWJlMmRlMTYwYjRjZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
SGVhcExvY2F0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdIZWFwTG9j
YXRpb24uaApAQCAtNjAsNiArNjAsNyBAQCBlbnVtIExvY2F0aW9uS2luZCB7CiAgICAgU2V0dGVy
TG9jLAogICAgIFN0cnVjdHVyZUxvYywKICAgICBUeXBlZEFycmF5Qnl0ZU9mZnNldExvYywKKyAg
ICBQcm90b3R5cGVMb2MsCiAgICAgU3RhY2tMb2MsCiAgICAgU3RhY2tQYXlsb2FkTG9jLAogICAg
IE1hcEJ1Y2tldExvYywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKaW5kZXggNjI4YmZj
NzUyZmZiMjliMzU5NWU5ZDg0OGYxNWEyMzMwNDAzNmU2My4uYTY5MjE0MjhkMTVhM2UwOWVjMjA0
YThhNzJkYjk2MWY2NGYzYzVmZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdOb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKQEAg
LTE1NDgsNiArMTU0OCw3IEBAIHN0cnVjdCBOb2RlIHsKICAgICAgICAgY2FzZSBHZXRCeUlkOgog
ICAgICAgICBjYXNlIEdldEJ5SWRGbHVzaDoKICAgICAgICAgY2FzZSBHZXRCeUlkV2l0aFRoaXM6
CisgICAgICAgIGNhc2UgR2V0UHJvdG90eXBlT2Y6CiAgICAgICAgIGNhc2UgVHJ5R2V0QnlJZDoK
ICAgICAgICAgY2FzZSBHZXRCeVZhbDoKICAgICAgICAgY2FzZSBHZXRCeVZhbFdpdGhUaGlzOgpA
QCAtMjMxMSw2ICsyMzEyLDExIEBAIHN0cnVjdCBOb2RlIHsKICAgICAgICAgcmV0dXJuIGlzQXJy
YXlTcGVjdWxhdGlvbihwcmVkaWN0aW9uKCkpOwogICAgIH0KIAorICAgIGJvb2wgc2hvdWxkU3Bl
Y3VsYXRlRnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGlzRnVuY3Rpb25TcGVjdWxh
dGlvbihwcmVkaWN0aW9uKCkpOworICAgIH0KKwogICAgIGJvb2wgc2hvdWxkU3BlY3VsYXRlUHJv
eHlPYmplY3QoKQogICAgIHsKICAgICAgICAgcmV0dXJuIGlzUHJveHlPYmplY3RTcGVjdWxhdGlv
bihwcmVkaWN0aW9uKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlVHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCmlu
ZGV4IDZkY2VjMjRmNzE5ZWEyNzYxMzVkODUyODNkOTg1ZmI2OTJmNGY0NjQuLjhjZGUxNjc2Nzk4
ZTdkMmUyOTk5NzhlY2Y4OGJlZGJkNDM3ZWMzYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGVUeXBlLmgKQEAgLTI1MSw2ICsyNTEsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNw
YWNlIERGRyB7CiAgICAgbWFjcm8oQ2hlY2tUeXBlSW5mb0ZsYWdzLCBOb2RlTXVzdEdlbmVyYXRl
KSAvKiBUYWtlcyBhbiBPcEluZm8gd2l0aCB0aGUgZmxhZ3MgeW91IHdhbnQgdG8gdGVzdCBhcmUg
c2V0ICovXAogICAgIG1hY3JvKENoZWNrU3ViQ2xhc3MsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAg
ICBtYWNybyhQYXJzZUludCwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVSZXN1bHRKUykgXAorICAg
IG1hY3JvKEdldFByb3RvdHlwZU9mLCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZVJlc3VsdEpTKSBc
CiAgICAgXAogICAgIC8qIEF0b21pY3Mgb2JqZWN0IGZ1bmN0aW9ucy4gKi9cCiAgICAgbWFjcm8o
QXRvbWljc0FkZCwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVIYXNWYXJB
cmdzKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlv
bnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAppbmRl
eCAzOGIzYTNjOWQ1OGNkOGRlZTk1ODM5OGZmMDZkNzM5MGMxMzhkOTVmLi5jOGZhMTEyYzhmZGYy
Y2FhMDY4Mjc5NGQ3NmQxY2VhNDBhM2E4ODRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT3BlcmF0aW9ucy5jcHAKQEAgLTUyLDYgKzUyLDcgQEAKICNpbmNsdWRlICJKU0NJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiSlNGaXhlZEFycmF5LmgiCiAjaW5jbHVkZSAiSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaCIKKyNpbmNsdWRlICJKU0dsb2JhbE9iamVj
dEZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCiAjaW5jbHVk
ZSAiSlNNYXAuaCIKICNpbmNsdWRlICJKU1NldC5oIgpAQCAtMjUxNyw2ICsyNTE4LDI5IEBAIEpT
Q2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25KU1NldEZpbmRCdWNrZXQoRXhlY1N0YXRlKiBl
eGVjLCBKU0NlbGwqIG1hcCwgRW5jCiAgICAgcmV0dXJuICpidWNrZXQ7CiB9CiAKK0VuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0UHJvdG90eXBlT2YoRXhlY1N0YXRlKiBl
eGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCit7CisgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSlNWYWx1ZSB0aGlz
VmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKS50b1RoaXMoZXhlYywgU3RyaWN0
TW9kZSk7CisgICAgaWYgKHRoaXNWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKQorICAgICAgICBy
ZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIHNjb3BlLCBjcmVhdGVOb3RBbk9iamVjdEVycm9yKGV4
ZWMsIHRoaXNWYWx1ZSkpOworCisgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBqc0R5bmFtaWND
YXN0PEpTT2JqZWN0Kj4odm0sIHRoaXNWYWx1ZSk7CisgICAgaWYgKCF0aGlzT2JqZWN0KSB7Cisg
ICAgICAgIEpTT2JqZWN0KiBwcm90b3R5cGUgPSB0aGlzVmFsdWUuc3ludGhlc2l6ZVByb3RvdHlw
ZShleGVjKTsKKyAgICAgICAgRVhDRVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpID09
ICFwcm90b3R5cGUpOworICAgICAgICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpCisgICAgICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CisgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUocHJvdG90eXBlKTsKKyAgICB9CisKKyAgICBzY29wZS5yZWxlYXNlKCk7
CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGUodm0s
IGV4ZWMpKTsKK30KKwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRocm93REZHKEV4ZWNT
dGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgdmFsdWVUb1Rocm93KQogewogICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
ZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCmlu
ZGV4IGIxNjVhOWJjNjBhNjgzZjQ1NWU2MGU3ZmZmYjI4MzZiYjkxMTBlMGQuLjRjNGMxYWQ5MmIy
Y2E2ZGRhMjQzM2JkOTRiOGFlZjFlODNhOWYxODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT3BlcmF0aW9ucy5oCkBAIC03Nyw2ICs3Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uVG9QcmltaXRpdmUoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUp
IFdUCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRvTnVtYmVyKEV4ZWNT
dGF0ZSosIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5SWRXaXRoVGhpcyhFeGVjU3RhdGUqLCBFbmNvZGVkSlNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUsIFVuaXF1ZWRTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwog
RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeVZhbFdpdGhUaGlzKEV4
ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUp
IFdURl9JTlRFUk5BTDsKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0
UHJvdG90eXBlT2YoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsKIGNo
YXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXJyYXkoRXhlY1N0YXRlKiwgU3RydWN0dXJl
Kiwgdm9pZCosIHNpemVfdCkgV1RGX0lOVEVSTkFMOwogY2hhciogSklUX09QRVJBVElPTiBvcGVy
YXRpb25OZXdBcnJheUJ1ZmZlcihFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBzaXplX3QsIHNpemVf
dCkgV1RGX0lOVEVSTkFMOwogY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdFbXB0eUFy
cmF5KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSopIFdURl9JTlRFUk5BTDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFz
ZS5jcHAKaW5kZXggYmIzYTExZmVkZWYyZDQxZjEwODRhNTM5MDBkODU4Yjc2Mzk5YWFjMy4uNWJm
N2MyZTEyMGQ3NjI3NzYzYjkwOWRkY2JhYjhjMzg1YjFjZGM5MCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFz
ZS5jcHAKQEAgLTcyMyw3ICs3MjMsOCBAQCBjbGFzcyBQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFz
ZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgIGNhc2UgR2V0QXJndW1lbnQ6CiAgICAgICAgIGNh
c2UgQ2FsbERPTUdldHRlcjoKICAgICAgICAgY2FzZSBHZXREeW5hbWljVmFyOgotICAgICAgICBj
YXNlIFdlYWtNYXBHZXQ6IHsKKyAgICAgICAgY2FzZSBXZWFrTWFwR2V0OgorICAgICAgICBjYXNl
IEdldFByb3RvdHlwZU9mOiB7CiAgICAgICAgICAgICBzZXRQcmVkaWN0aW9uKG1fY3VycmVudE5v
ZGUtPmdldEhlYXBQcmVkaWN0aW9uKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKaW5kZXggMmU1
NGNiMGIwNjVkOWJjNDk2YmMwOGJmNWY3MGIxNGFhNjA2YTkwYi4uOWNmNTIxYjMyNzE3ZDM4YmE3
Y2Q0NWE1NzFjZGJkOGE5MTBmNWY2ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTYWZlVG9FeGVjdXRlLmgKQEAgLTM5OSw2ICszOTksNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUo
QWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAg
Y2FzZSBHZXRNeUFyZ3VtZW50QnlWYWxPdXRPZkJvdW5kczoKICAgICBjYXNlIEZvcndhcmRWYXJh
cmdzOgogICAgIGNhc2UgQ3JlYXRlUmVzdDoKKyAgICBjYXNlIEdldFByb3RvdHlwZU9mOgogICAg
IGNhc2UgU3RyaW5nUmVwbGFjZToKICAgICBjYXNlIFN0cmluZ1JlcGxhY2VSZWdFeHA6CiAgICAg
Y2FzZSBHZXRSZWdFeHBPYmplY3RMYXN0SW5kZXg6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IDMwYWIzYTJmN2ZkYmNkMGQ2ZGM4YWM4
M2RhNjc3NjkxODU5MWMyMGUuLjEyMDdiODBjYWQ0ZDhkZTcwMTBjNWFmMWQxYjk5NTIxNjQ4MzMw
YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwCkBAIC05MTgxLDEzICs5MTgxLDIzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0
ZU9iamVjdChFZGdlIGVkZ2UpCiAgICAgc3BlY3VsYXRlT2JqZWN0KGVkZ2UsIG9wZXJhbmQuZ3By
KCkpOwogfQogCit2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVGdW5jdGlvbihFZGdlIGVk
Z2UsIEdQUlJlZyBjZWxsKQoreworICAgIHNwZWN1bGF0ZUNlbGxUeXBlKGVkZ2UsIGNlbGwsIFNw
ZWNGdW5jdGlvbiwgSlNGdW5jdGlvblR5cGUpOworfQorCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpz
cGVjdWxhdGVGdW5jdGlvbihFZGdlIGVkZ2UpCiB7CiAgICAgaWYgKCFuZWVkc1R5cGVDaGVjayhl
ZGdlLCBTcGVjRnVuY3Rpb24pKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgU3BlY3VsYXRl
Q2VsbE9wZXJhbmQgb3BlcmFuZCh0aGlzLCBlZGdlKTsKLSAgICBzcGVjdWxhdGVDZWxsVHlwZShl
ZGdlLCBvcGVyYW5kLmdwcigpLCBTcGVjRnVuY3Rpb24sIEpTRnVuY3Rpb25UeXBlKTsKKyAgICBz
cGVjdWxhdGVGdW5jdGlvbihlZGdlLCBvcGVyYW5kLmdwcigpKTsKK30KKwordm9pZCBTcGVjdWxh
dGl2ZUpJVDo6c3BlY3VsYXRlRmluYWxPYmplY3QoRWRnZSBlZGdlLCBHUFJSZWcgY2VsbCkKK3sK
KyAgICBzcGVjdWxhdGVDZWxsVHlwZShlZGdlLCBjZWxsLCBTcGVjRmluYWxPYmplY3QsIEZpbmFs
T2JqZWN0VHlwZSk7CiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZUZpbmFsT2Jq
ZWN0KEVkZ2UgZWRnZSkKQEAgLTkxOTYsNyArOTIwNiw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OnNwZWN1bGF0ZUZpbmFsT2JqZWN0KEVkZ2UgZWRnZSkKICAgICAgICAgcmV0dXJuOwogICAgIAog
ICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIG9wZXJhbmQodGhpcywgZWRnZSk7Ci0gICAgc3BlY3Vs
YXRlQ2VsbFR5cGUoZWRnZSwgb3BlcmFuZC5ncHIoKSwgU3BlY0ZpbmFsT2JqZWN0LCBGaW5hbE9i
amVjdFR5cGUpOworICAgIHNwZWN1bGF0ZUZpbmFsT2JqZWN0KGVkZ2UsIG9wZXJhbmQuZ3ByKCkp
OwogfQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVSZWdFeHBPYmplY3QoRWRnZSBl
ZGdlLCBHUFJSZWcgY2VsbCkKQEAgLTEwNzYyLDYgKzEwNzcyLDEzNSBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlV2Vha01hcEdldChOb2RlKiBub2RlKQogICAgIGpzVmFsdWVSZXN1bHQo
cmVzdWx0UmVncywgbm9kZSk7CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRQ
cm90b3R5cGVPZihOb2RlKiBub2RlKQoreworICAgIHN3aXRjaCAobm9kZS0+Y2hpbGQxKCkudXNl
S2luZCgpKSB7CisgICAgY2FzZSBBcnJheVVzZToKKyAgICBjYXNlIEZ1bmN0aW9uVXNlOgorICAg
IGNhc2UgRmluYWxPYmplY3RVc2U6IHsKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgb2Jq
ZWN0KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhp
cyk7CisgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wMih0aGlzKTsKKworICAgICAgICBHUFJSZWcg
b2JqZWN0R1BSID0gb2JqZWN0LmdwcigpOworICAgICAgICBHUFJSZWcgdGVtcEdQUiA9IHRlbXAu
Z3ByKCk7CisgICAgICAgIEdQUlJlZyB0ZW1wMkdQUiA9IHRlbXAyLmdwcigpOworCisgICAgICAg
IHN3aXRjaCAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7CisgICAgICAgIGNhc2UgQXJyYXlV
c2U6CisgICAgICAgICAgICBzcGVjdWxhdGVBcnJheShub2RlLT5jaGlsZDEoKSwgb2JqZWN0R1BS
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEZ1bmN0aW9uVXNlOgorICAgICAg
ICAgICAgc3BlY3VsYXRlRnVuY3Rpb24obm9kZS0+Y2hpbGQxKCksIG9iamVjdEdQUik7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBGaW5hbE9iamVjdFVzZToKKyAgICAgICAgICAg
IHNwZWN1bGF0ZUZpbmFsT2JqZWN0KG5vZGUtPmNoaWxkMSgpLCBvYmplY3RHUFIpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAg
ICBtX2ppdC5lbWl0TG9hZFN0cnVjdHVyZSgqbV9qaXQudm0oKSwgb2JqZWN0R1BSLCB0ZW1wR1BS
LCB0ZW1wMkdQUik7CisKKyAgICAgICAgQWJzdHJhY3RWYWx1ZSYgdmFsdWUgPSBtX3N0YXRlLmZv
ck5vZGUobm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBpZiAoKHZhbHVlLm1fdHlwZSAmJiAhKHZh
bHVlLm1fdHlwZSAmIH5TcGVjT2JqZWN0KSkgJiYgdmFsdWUubV9zdHJ1Y3R1cmUuaXNGaW5pdGUo
KSkgeworICAgICAgICAgICAgYm9vbCBoYXNQb2x5UHJvdG8gPSBmYWxzZTsKKyAgICAgICAgICAg
IGJvb2wgaGFzTW9ub1Byb3RvID0gZmFsc2U7CisgICAgICAgICAgICB2YWx1ZS5tX3N0cnVjdHVy
ZS5mb3JFYWNoKFsmXSAoUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUpIHsKKyAgICAgICAg
ICAgICAgICBpZiAoc3RydWN0dXJlLT5oYXNQb2x5UHJvdG8oKSkKKyAgICAgICAgICAgICAgICAg
ICAgaGFzUG9seVByb3RvID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgICAgIGhhc01vbm9Qcm90byA9IHRydWU7CisgICAgICAgICAgICB9KTsKKworICAgICAg
ICAgICAgaWYgKGhhc01vbm9Qcm90byAmJiAhaGFzUG9seVByb3RvKSB7CisjaWYgVVNFKEpTVkFM
VUU2NCkKKyAgICAgICAgICAgICAgICBtX2ppdC5sb2FkNjQoTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3ModGVtcEdQUiwgU3RydWN0dXJlOjpwcm90b3R5cGVPZmZzZXQoKSksIHRlbXBHUFIpOworICAg
ICAgICAgICAgICAgIGpzVmFsdWVSZXN1bHQodGVtcEdQUiwgbm9kZSk7CisjZWxzZQorICAgICAg
ICAgICAgICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wR1BSLCBT
dHJ1Y3R1cmU6OnByb3RvdHlwZU9mZnNldCgpICsgVGFnT2Zmc2V0KSwgdGVtcDJHUFIpOworICAg
ICAgICAgICAgICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wR1BS
LCBTdHJ1Y3R1cmU6OnByb3RvdHlwZU9mZnNldCgpICsgUGF5bG9hZE9mZnNldCksIHRlbXBHUFIp
OworICAgICAgICAgICAgICAgIGpzVmFsdWVSZXN1bHQodGVtcDJHUFIsIHRlbXBHUFIsIG5vZGUp
OworI2VuZGlmCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBpZiAoaGFzUG9seVByb3RvICYmICFoYXNNb25vUHJvdG8pIHsKKyNpZiBVU0UoSlNW
QUxVRTY0KQorICAgICAgICAgICAgICAgIG1faml0LmxvYWQ2NChNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyh0ZW1wR1BSLCBTdHJ1Y3R1cmU6OnByb3RvdHlwZU9mZnNldCgpKSwgdGVtcEdQUik7Cisg
ICAgICAgICAgICAgICAgbV9qaXQuemVyb0V4dGVuZDMyVG9QdHIodGVtcEdQUiwgdGVtcEdQUik7
CisgICAgICAgICAgICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjpCYXNlSW5kZXgob2Jq
ZWN0R1BSLCB0ZW1wR1BSLCBKSVRDb21waWxlcjo6VGltZXNFaWdodCwgSlNPYmplY3Q6Om9mZnNl
dE9mSW5saW5lU3RvcmFnZSgpKSwgdGVtcEdQUik7CisgICAgICAgICAgICAgICAganNWYWx1ZVJl
c3VsdCh0ZW1wR1BSLCBub2RlKTsKKyNlbHNlCisgICAgICAgICAgICAgICAgbV9qaXQubG9hZDMy
KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXBHUFIsIFN0cnVjdHVyZTo6cHJvdG90eXBlT2Zm
c2V0KCkgKyBQYXlsb2FkT2Zmc2V0KSwgdGVtcEdQUik7CisgICAgICAgICAgICAgICAgbV9qaXQu
bG9hZDMyKEpJVENvbXBpbGVyOjpCYXNlSW5kZXgob2JqZWN0R1BSLCB0ZW1wR1BSLCBKSVRDb21w
aWxlcjo6VGltZXNFaWdodCwgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpICsgVGFn
T2Zmc2V0KSwgdGVtcDJHUFIpOworICAgICAgICAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21w
aWxlcjo6QmFzZUluZGV4KG9iamVjdEdQUiwgdGVtcEdQUiwgSklUQ29tcGlsZXI6OlRpbWVzRWln
aHQsIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSArIFBheWxvYWRPZmZzZXQpLCB0
ZW1wR1BSKTsKKyAgICAgICAgICAgICAgICBqc1ZhbHVlUmVzdWx0KHRlbXAyR1BSLCB0ZW1wR1BS
LCBub2RlKTsKKyNlbmRpZgorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgbV9qaXQubG9hZDY0KE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXBHUFIsIFN0cnVjdHVyZTo6cHJvdG90eXBlT2Zmc2V0
KCkpLCB0ZW1wR1BSKTsKKyAgICAgICAgYXV0byBpc01vbm9Qcm90byA9IG1faml0LmJyYW5jaElm
Tm90SW50MzIoSlNWYWx1ZVJlZ3ModGVtcEdQUikpOworICAgICAgICBtX2ppdC56ZXJvRXh0ZW5k
MzJUb1B0cih0ZW1wR1BSLCB0ZW1wR1BSKTsKKyAgICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBp
bGVyOjpCYXNlSW5kZXgob2JqZWN0R1BSLCB0ZW1wR1BSLCBKSVRDb21waWxlcjo6VGltZXNFaWdo
dCwgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpKSwgdGVtcEdQUik7CisgICAgICAg
IGlzTW9ub1Byb3RvLmxpbmsoJm1faml0KTsKKyAgICAgICAganNWYWx1ZVJlc3VsdCh0ZW1wR1BS
LCBub2RlKTsKKyNlbHNlCisgICAgICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyh0ZW1wR1BSLCBTdHJ1Y3R1cmU6OnByb3RvdHlwZU9mZnNldCgpICsgVGFnT2Zmc2V0KSwg
dGVtcDJHUFIpOworICAgICAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
dGVtcEdQUiwgU3RydWN0dXJlOjpwcm90b3R5cGVPZmZzZXQoKSArIFBheWxvYWRPZmZzZXQpLCB0
ZW1wR1BSKTsKKyAgICAgICAgYXV0byBpc01vbm9Qcm90byA9IG1faml0LmJyYW5jaDMyKENDYWxs
SGVscGVyczo6Tm90RXF1YWwsIHRlbXAyR1BSLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6SW50MzJU
YWcpKTsKKyAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpCYXNlSW5kZXgob2JqZWN0
R1BSLCB0ZW1wR1BSLCBKSVRDb21waWxlcjo6VGltZXNFaWdodCwgSlNPYmplY3Q6Om9mZnNldE9m
SW5saW5lU3RvcmFnZSgpICsgVGFnT2Zmc2V0KSwgdGVtcDJHUFIpOworICAgICAgICBtX2ppdC5s
b2FkMzIoSklUQ29tcGlsZXI6OkJhc2VJbmRleChvYmplY3RHUFIsIHRlbXBHUFIsIEpJVENvbXBp
bGVyOjpUaW1lc0VpZ2h0LCBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgKyBQYXls
b2FkT2Zmc2V0KSwgdGVtcEdQUik7CisgICAgICAgIGlzTW9ub1Byb3RvLmxpbmsoJm1faml0KTsK
KyAgICAgICAganNWYWx1ZVJlc3VsdCh0ZW1wMkdQUiwgdGVtcEdQUiwgbm9kZSk7CisjZW5kaWYK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBjYXNlIE9iamVjdFVzZTogeworICAgICAgICBT
cGVjdWxhdGVDZWxsT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAg
IEpTVmFsdWVSZWdzVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKworICAgICAgICBHUFJSZWcgdmFs
dWVHUFIgPSB2YWx1ZS5ncHIoKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJl
c3VsdC5yZWdzKCk7CisKKyAgICAgICAgc3BlY3VsYXRlT2JqZWN0KG5vZGUtPmNoaWxkMSgpLCB2
YWx1ZUdQUik7CisKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBmbHVzaFJlZ2lzdGVycygp
OworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkdldFByb3RvdHlwZU9mLCByZXN1bHRS
ZWdzLCBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkodmFsdWVHUFIpKTsKKyAgICAgICAgbV9qaXQu
ZXhjZXB0aW9uQ2hlY2soKTsKKyAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2Rl
KTsKKworI2Vsc2UKKyAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2Vs
bFRhZyksIHJlc3VsdFJlZ3MudGFnR1BSKCkpOworICAgICAgICBtX2ppdC5tb3ZlKHZhbHVlR1BS
LCByZXN1bHRSZWdzLnBheWxvYWRHUFIoKSk7CisgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Cisg
ICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uR2V0UHJvdG90eXBlT2YsIHJlc3VsdFJlZ3Ms
IHJlc3VsdFJlZ3MpOworICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOworICAgICAgICBq
c1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOworI2VuZGlmCisgICAgICAgIHJldHVybjsK
KyAgICB9CisgICAgZGVmYXVsdDogeworICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlz
LCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIEpTVmFsdWVSZWdzVGVtcG9yYXJ5IHJlc3VsdCh0
aGlzKTsKKworICAgICAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVn
cygpOworICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKKwor
ICAgICAgICBmbHVzaFJlZ2lzdGVycygpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
bkdldFByb3RvdHlwZU9mLCByZXN1bHRSZWdzLCB2YWx1ZVJlZ3MpOworICAgICAgICBtX2ppdC5l
eGNlcHRpb25DaGVjaygpOworICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUp
OworICAgICAgICByZXR1cm47CisgICAgfQorICAgIH0KK30KKwogfSB9IC8vIG5hbWVzcGFjZSBK
U0M6OkRGRwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuaAppbmRleCAyNTgyMmFlNDkyNTgyZWJlZjkyZGIxZDkyODFhYmMwOTIwNDFhODcw
Li5kMTA5MzgwNWRmMTE4NTBlNjM0ZWQyMGFiZGFiZjA5MjYxMjFjNjRmIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCkBAIC0yODM0LDYgKzI4MzQs
NyBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVCB7CiAgICAgdm9pZCBjb21waWxlV2Vha01hcEdldChO
b2RlKik7CiAgICAgdm9pZCBjb21waWxlTG9hZEtleUZyb21NYXBCdWNrZXQoTm9kZSopOwogICAg
IHZvaWQgY29tcGlsZUxvYWRWYWx1ZUZyb21NYXBCdWNrZXQoTm9kZSopOworICAgIHZvaWQgY29t
cGlsZUdldFByb3RvdHlwZU9mKE5vZGUqKTsKICAgICAKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEJhc2VPcGVyYW5kVHlwZSwgdHlwZW5hbWUgUHJvcGVydHlP
cGVyYW5kVHlwZSwgdHlwZW5hbWUgVmFsdWVPcGVyYW5kVHlwZSwgdHlwZW5hbWUgVGFnVHlwZT4K
QEAgLTMwODMsNyArMzA4NCw5IEBAIGNsYXNzIFNwZWN1bGF0aXZlSklUIHsKICAgICB2b2lkIHNw
ZWN1bGF0ZU9iamVjdChFZGdlKTsKICAgICB2b2lkIHNwZWN1bGF0ZUFycmF5KEVkZ2UsIEdQUlJl
ZyBjZWxsKTsKICAgICB2b2lkIHNwZWN1bGF0ZUFycmF5KEVkZ2UpOworICAgIHZvaWQgc3BlY3Vs
YXRlRnVuY3Rpb24oRWRnZSwgR1BSUmVnIGNlbGwpOwogICAgIHZvaWQgc3BlY3VsYXRlRnVuY3Rp
b24oRWRnZSk7CisgICAgdm9pZCBzcGVjdWxhdGVGaW5hbE9iamVjdChFZGdlLCBHUFJSZWcgY2Vs
bCk7CiAgICAgdm9pZCBzcGVjdWxhdGVGaW5hbE9iamVjdChFZGdlKTsKICAgICB2b2lkIHNwZWN1
bGF0ZVJlZ0V4cE9iamVjdChFZGdlLCBHUFJSZWcgY2VsbCk7CiAgICAgdm9pZCBzcGVjdWxhdGVS
ZWdFeHBPYmplY3QoRWRnZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCA0M2QwZGFjZGEwZWMwMDc3MGZiMzhmYWNm
MzA3Njc3NTE5NGI0ZTA1Li4xODRmNDVlZmYxNGI4OWY5YTY4ZmU3NTU4ZTg5YzE2MGNjZTQ5YzQ3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQzMl82NC5jcHAKQEAgLTQ0MjYsNiArNDQyNiwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNl
dChub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorCisgICAgY2FzZSBHZXRQcm90b3R5cGVP
ZjogeworICAgICAgICBjb21waWxlR2V0UHJvdG90eXBlT2Yobm9kZSk7CisgICAgICAgIGJyZWFr
OworICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBHZXRCeU9mZnNldDogewogICAgICAgICBTdG9y
YWdlT3BlcmFuZCBzdG9yYWdlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IGNmNjZlNmFm
NjllNDE2ZGU2ZGM4MWU4ZjY3YzE3OWE0NDJmZTY3ODcuLmQ3YjRlY2ZiMDQ5NmViNTQ4MDczNGNk
NTFjNDAxYWNlNjE1NWI1YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtNDY0Miw2ICs0NjQyLDExIEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgY29tcGlsZUdldFR5cGVkQXJy
YXlCeXRlT2Zmc2V0KG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9CisKKyAgICBjYXNlIEdl
dFByb3RvdHlwZU9mOiB7CisgICAgICAgIGNvbXBpbGVHZXRQcm90b3R5cGVPZihub2RlKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgfQogICAgICAgICAKICAgICBjYXNlIEdldEJ5T2Zmc2V0OgogICAg
IGNhc2UgR2V0R2V0dGVyU2V0dGVyQnlPZmZzZXQ6IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAppbmRleCAxMzA5ZTllYWExOTExNTcyZGFhZDFiOTZh
ZmFjZjI3ZmRlZGE4YTkxLi41MWIzMDdmNjY5N2Q4MjBkMjZhZWM2MmNiZTBhOTM2OGExOTVmZjg4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCkBA
IC0xNDQsNiArMTQ0LDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUq
IG5vZGUpCiAgICAgY2FzZSBSZWFsbG9jYXRlUHJvcGVydHlTdG9yYWdlOgogICAgIGNhc2UgTnVr
ZVN0cnVjdHVyZUFuZFNldEJ1dHRlcmZseToKICAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zm
c2V0OgorICAgIGNhc2UgR2V0UHJvdG90eXBlT2Y6CiAgICAgY2FzZSBOb3RpZnlXcml0ZToKICAg
ICBjYXNlIFN0b3JlQmFycmllcjoKICAgICBjYXNlIEZlbmNlZFN0b3JlQmFycmllcjoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCAyMjgwMjE1
NGI4MDI1ZmJmYWQ3NTAyZjFjNTZiZDg1ZmRmMTE5MjFkLi5lZTk1NmY4NDc2MWE3NDg0YWZjMTUx
NzkyMmE2Yjg3ZGI5OGNjNzgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExM
b3dlckRGR1RvQjMuY3BwCkBAIC04MjEsNiArODIxLDkgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsK
ICAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldDoKICAgICAgICAgICAgIGNvbXBp
bGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldCgpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgR2V0UHJvdG90eXBlT2Y6CisgICAgICAgICAgICBjb21waWxlR2V0UHJvdG90eXBlT2Yo
KTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFsbG9jYXRlUHJvcGVydHlTdG9y
YWdlOgogICAgICAgICAgICAgY29tcGlsZUFsbG9jYXRlUHJvcGVydHlTdG9yYWdlKCk7CiAgICAg
ICAgICAgICBicmVhazsKQEAgLTM0MjMsNiArMzQyNiw4MiBAQCBjbGFzcyBMb3dlckRGR1RvQjMg
ewogCiAgICAgICAgIHNldEludDMyKG1fb3V0LmNhc3RUb0ludDMyKG1fb3V0LnBoaShwb2ludGVy
VHlwZSgpLCBzaW1wbGVPdXQsIHdhc3RlZnVsT3V0KSkpOwogICAgIH0KKworICAgIHZvaWQgY29t
cGlsZUdldFByb3RvdHlwZU9mKCkKKyAgICB7CisgICAgICAgIHN3aXRjaCAobV9ub2RlLT5jaGls
ZDEoKS51c2VLaW5kKCkpIHsKKyAgICAgICAgY2FzZSBBcnJheVVzZToKKyAgICAgICAgY2FzZSBG
dW5jdGlvblVzZToKKyAgICAgICAgY2FzZSBGaW5hbE9iamVjdFVzZTogeworICAgICAgICAgICAg
TFZhbHVlIG9iamVjdCA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBz
d2l0Y2ggKG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7CisgICAgICAgICAgICBjYXNlIEFy
cmF5VXNlOgorICAgICAgICAgICAgICAgIHNwZWN1bGF0ZUFycmF5KG1fbm9kZS0+Y2hpbGQxKCks
IG9iamVjdCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEZ1bmN0
aW9uVXNlOgorICAgICAgICAgICAgICAgIHNwZWN1bGF0ZUZ1bmN0aW9uKG1fbm9kZS0+Y2hpbGQx
KCksIG9iamVjdCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEZp
bmFsT2JqZWN0VXNlOgorICAgICAgICAgICAgICAgIHNwZWN1bGF0ZUZpbmFsT2JqZWN0KG1fbm9k
ZS0+Y2hpbGQxKCksIG9iamVjdCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIExW
YWx1ZSBzdHJ1Y3R1cmUgPSBsb2FkU3RydWN0dXJlKG9iamVjdCk7CisKKyAgICAgICAgICAgIEFi
c3RyYWN0VmFsdWUmIHZhbHVlID0gbV9zdGF0ZS5mb3JOb2RlKG1fbm9kZS0+Y2hpbGQxKCkpOwor
ICAgICAgICAgICAgaWYgKCh2YWx1ZS5tX3R5cGUgJiYgISh2YWx1ZS5tX3R5cGUgJiB+U3BlY09i
amVjdCkpICYmIHZhbHVlLm1fc3RydWN0dXJlLmlzRmluaXRlKCkpIHsKKyAgICAgICAgICAgICAg
ICBib29sIGhhc1BvbHlQcm90byA9IGZhbHNlOworICAgICAgICAgICAgICAgIGJvb2wgaGFzTW9u
b1Byb3RvID0gZmFsc2U7CisgICAgICAgICAgICAgICAgdmFsdWUubV9zdHJ1Y3R1cmUuZm9yRWFj
aChbJl0gKFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlKSB7CisgICAgICAgICAgICAgICAg
ICAgIGlmIChzdHJ1Y3R1cmUtPmhhc1BvbHlQcm90bygpKQorICAgICAgICAgICAgICAgICAgICAg
ICAgaGFzUG9seVByb3RvID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgICAgICAgICAgaGFzTW9ub1Byb3RvID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9
KTsKKworICAgICAgICAgICAgICAgIGlmIChoYXNNb25vUHJvdG8gJiYgIWhhc1BvbHlQcm90bykg
eworICAgICAgICAgICAgICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LmxvYWQ2NChzdHJ1Y3R1cmUs
IG1faGVhcHMuU3RydWN0dXJlX3Byb3RvdHlwZSkpOworICAgICAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKGhhc1BvbHlQcm90
byAmJiAhaGFzTW9ub1Byb3RvKSB7CisgICAgICAgICAgICAgICAgICAgIExWYWx1ZSBwcm90b3R5
cGVCaXRzID0gbV9vdXQubG9hZDY0KHN0cnVjdHVyZSwgbV9oZWFwcy5TdHJ1Y3R1cmVfcHJvdG90
eXBlKTsKKyAgICAgICAgICAgICAgICAgICAgTFZhbHVlIGluZGV4ID0gbV9vdXQuYml0QW5kKHBy
b3RvdHlwZUJpdHMsIG1fb3V0LmNvbnN0SW50NjQoVUlOVF9NQVgpKTsKKyAgICAgICAgICAgICAg
ICAgICAgc2V0SlNWYWx1ZShtX291dC5sb2FkNjQobV9vdXQuYmFzZUluZGV4KG1faGVhcHMucHJv
cGVydGllcy5hdEFueU51bWJlcigpLCBvYmplY3QsIGluZGV4LCBTY2FsZUVpZ2h0LCBKU09iamVj
dDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkpKSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIExCYXNp
Y0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICBMQmFz
aWNCbG9jayBsb2FkUG9seVByb3RvID0gbV9vdXQubmV3QmxvY2soKTsKKworICAgICAgICAgICAg
TFZhbHVlIHByb3RvdHlwZUJpdHMgPSBtX291dC5sb2FkNjQoc3RydWN0dXJlLCBtX2hlYXBzLlN0
cnVjdHVyZV9wcm90b3R5cGUpOworICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgZGlyZWN0UHJv
dG90eXBlID0gbV9vdXQuYW5jaG9yKHByb3RvdHlwZUJpdHMpOworICAgICAgICAgICAgbV9vdXQu
YnJhbmNoKGlzSW50MzIocHJvdG90eXBlQml0cyksIHVuc3VyZShsb2FkUG9seVByb3RvKSwgdW5z
dXJlKGNvbnRpbnVhdGlvbikpOworCisgICAgICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9
IG1fb3V0LmFwcGVuZFRvKGxvYWRQb2x5UHJvdG8sIGNvbnRpbnVhdGlvbik7CisgICAgICAgICAg
ICBMVmFsdWUgaW5kZXggPSBtX291dC5iaXRBbmQocHJvdG90eXBlQml0cywgbV9vdXQuY29uc3RJ
bnQ2NChVSU5UX01BWCkpOworICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgcG9seVByb3RvID0g
bV9vdXQuYW5jaG9yKAorICAgICAgICAgICAgICAgIG1fb3V0LmxvYWQ2NChtX291dC5iYXNlSW5k
ZXgobV9oZWFwcy5wcm9wZXJ0aWVzLmF0QW55TnVtYmVyKCksIG9iamVjdCwgaW5kZXgsIFNjYWxl
RWlnaHQsIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSkpKTsKKyAgICAgICAgICAg
IG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8o
Y29udGludWF0aW9uLCBsYXN0TmV4dCk7CisgICAgICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LnBo
aShJbnQ2NCwgZGlyZWN0UHJvdG90eXBlLCBwb2x5UHJvdG8pKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorICAgICAgICBjYXNlIE9iamVjdFVzZTogeworICAgICAgICAgICAgc2V0
SlNWYWx1ZSh2bUNhbGwoSW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25HZXRQcm90b3R5
cGVPZiksIG1fY2FsbEZyYW1lLCBsb3dPYmplY3QobV9ub2RlLT5jaGlsZDEoKSkpKTsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBkZWZhdWx0OiB7CisgICAgICAgICAg
ICBzZXRKU1ZhbHVlKHZtQ2FsbChJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkdldFBy
b3RvdHlwZU9mKSwgbV9jYWxsRnJhbWUsIGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSkpKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICB9CisgICAgfQogICAgIAog
ICAgIHZvaWQgY29tcGlsZUdldEFycmF5TGVuZ3RoKCkKICAgICB7CkBAIC04OTg3LDcgKzkwNjYs
NyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBMVmFsdWUgc3RydWN0dXJlID0gbG9h
ZFN0cnVjdHVyZSh2YWx1ZSk7CiAKICAgICAgICAgTFZhbHVlIHByb3RvdHlwZUJpdHMgPSBtX291
dC5sb2FkNjQoc3RydWN0dXJlLCBtX2hlYXBzLlN0cnVjdHVyZV9wcm90b3R5cGUpOwotICAgICAg
ICBWYWx1ZUZyb21CbG9jayBkaXJlY3RQcm90b3lwZSA9IG1fb3V0LmFuY2hvcihwcm90b3R5cGVC
aXRzKTsKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgZGlyZWN0UHJvdG90eXBlID0gbV9vdXQuYW5j
aG9yKHByb3RvdHlwZUJpdHMpOwogICAgICAgICBtX291dC5icmFuY2goaXNJbnQzMihwcm90b3R5
cGVCaXRzKSwgdW5zdXJlKGxvYWRQb2x5UHJvdG8pLCB1bnN1cmUoY29tcGFyZVByb3RvdHlwZSkp
OwogCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGxvYWRQb2x5UHJvdG8sIGNvbXBhcmVQcm90b3R5
cGUpOwpAQCAtODk5Nyw3ICs5MDc2LDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAg
bV9vdXQuanVtcChjb21wYXJlUHJvdG90eXBlKTsKIAogICAgICAgICBtX291dC5hcHBlbmRUbyhj
b21wYXJlUHJvdG90eXBlLCBub3RZZXRJbnN0YW5jZSk7Ci0gICAgICAgIExWYWx1ZSBjdXJyZW50
UHJvdG90eXBlID0gbV9vdXQucGhpKEludDY0LCBkaXJlY3RQcm90b3lwZSwgcG9seVByb3RvKTsK
KyAgICAgICAgTFZhbHVlIGN1cnJlbnRQcm90b3R5cGUgPSBtX291dC5waGkoSW50NjQsIGRpcmVj
dFByb3RvdHlwZSwgcG9seVByb3RvKTsKICAgICAgICAgVmFsdWVGcm9tQmxvY2sgaXNJbnN0YW5j
ZVJlc3VsdCA9IG1fb3V0LmFuY2hvcihtX291dC5ib29sZWFuVHJ1ZSk7CiAgICAgICAgIG1fb3V0
LmJyYW5jaCgKICAgICAgICAgICAgIG1fb3V0LmVxdWFsKGN1cnJlbnRQcm90b3R5cGUsIHByb3Rv
dHlwZSksCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0ludHJpbnNpY0Vt
aXR0ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JbnRyaW5zaWNFbWl0dGVyLmNw
cAppbmRleCA0ZmI3YTU5MDlkZGQ1YWZjMmM1NDFkMmEzYjJlYmFhMmNkNzc3NDc2Li5hNWUwYWM5
OWMyOWVmMjRiOTkyZTdhMzUzM2NlZTE0ZTkwMjUxNTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0ludHJpbnNpY0VtaXR0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSW50cmluc2ljRW1pdHRlci5jcHAKQEAgLTYzLDYgKzYzLDExIEBAIGJvb2wg
SW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZTo6Y2FuRW1pdEludHJpbnNpY0dldHRlcihKU0Z1bmN0
aW9uKiBnZXR0ZXIsIFN0cnVjCiAgICAgICAgIAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
CisgICAgY2FzZSBVbmRlcnNjb3JlUHJvdG9JbnRyaW5zaWM6IHsKKyAgICAgICAgYXV0byBnZXRQ
cm90b3R5cGVNZXRob2QgPSBzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLT5tZXRob2RUYWJsZS5nZXRQ
cm90b3R5cGU7CisgICAgICAgIE1ldGhvZFRhYmxlOjpHZXRQcm90b3R5cGVGdW5jdGlvblB0ciBk
ZWZhdWx0R2V0UHJvdG90eXBlID0gSlNPYmplY3Q6OmdldFByb3RvdHlwZTsKKyAgICAgICAgcmV0
dXJuIGdldFByb3RvdHlwZU1ldGhvZCA9PSBkZWZhdWx0R2V0UHJvdG90eXBlOworICAgIH0KICAg
ICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtMTI1LDYgKzEzMCwx
NyBAQCB2b2lkIEludHJpbnNpY0dldHRlckFjY2Vzc0Nhc2U6OmVtaXRJbnRyaW5zaWNHZXR0ZXIo
QWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZQogICAgICAgICByZXR1cm47CiAgICAgfQogCisg
ICAgY2FzZSBVbmRlcnNjb3JlUHJvdG9JbnRyaW5zaWM6IHsKKyAgICAgICAgaWYgKHN0cnVjdHVy
ZSgpLT5oYXNNb25vUHJvdG8oKSkgeworICAgICAgICAgICAgaml0Lm1vdmVWYWx1ZShzdHJ1Y3R1
cmUoKS0+c3RvcmVkUHJvdG90eXBlKCksIHZhbHVlUmVncyk7CisgICAgICAgICAgICBzdGF0ZS5z
dWNjZWVkKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaml0Lmxv
YWRWYWx1ZShNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBzaXplb2YoRW5jb2RlZEpT
VmFsdWUpICogc3RydWN0dXJlKCktPnBvbHlQcm90b09mZnNldCgpICsgSlNPYmplY3Q6Om9mZnNl
dE9mSW5saW5lU3RvcmFnZSgpKSwgdmFsdWVSZWdzKTsKKyAgICAgICAgc3RhdGUuc3VjY2VlZCgp
OworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmlu
c2ljLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5jcHAKaW5k
ZXggOWQxMmZmZjlkZjc1Y2UxN2Q2YTAxYjMwMzZhMWJhN2JhMTM2MzkxMy4uOWI1YmQwODA4ZDYy
MmVkNjU0OTMwMDkwMTg0Y2JmNjNiMWIxMTA1NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRyaW5zaWMuY3BwCkBAIC0xMTEsNiArMTExLDEwIEBAIGNvbnN0IGNoYXIqIGlu
dHJpbnNpY05hbWUoSW50cmluc2ljIGludHJpbnNpYykKICAgICAgICAgcmV0dXJuICJSZWdFeHBU
ZXN0SW50cmluc2ljIjsKICAgICBjYXNlIFJlZ0V4cFRlc3RGYXN0SW50cmluc2ljOgogICAgICAg
ICByZXR1cm4gIlJlZ0V4cFRlc3RGYXN0SW50cmluc2ljIjsKKyAgICBjYXNlIE9iamVjdEdldFBy
b3RvdHlwZU9mSW50cmluc2ljOgorICAgICAgICByZXR1cm4gIk9iamVjdEdldFByb3RvdHlwZU9m
SW50cmluc2ljIjsKKyAgICBjYXNlIFJlZmxlY3RHZXRQcm90b3R5cGVPZkludHJpbnNpYzoKKyAg
ICAgICAgcmV0dXJuICJSZWZsZWN0R2V0UHJvdG90eXBlT2ZJbnRyaW5zaWMiOwogICAgIGNhc2Ug
U3RyaW5nUHJvdG90eXBlVmFsdWVPZkludHJpbnNpYzoKICAgICAgICAgcmV0dXJuICJTdHJpbmdQ
cm90b3R5cGVWYWx1ZU9mSW50cmluc2ljIjsKICAgICBjYXNlIFN0cmluZ1Byb3RvdHlwZVJlcGxh
Y2VJbnRyaW5zaWM6CkBAIC0xODksNiArMTkzLDggQEAgY29uc3QgY2hhciogaW50cmluc2ljTmFt
ZShJbnRyaW5zaWMgaW50cmluc2ljKQogICAgICAgICByZXR1cm4gIlR5cGVkQXJyYXlCeXRlTGVu
Z3RoSW50cmluc2ljIjsKICAgICBjYXNlIFR5cGVkQXJyYXlCeXRlT2Zmc2V0SW50cmluc2ljOgog
ICAgICAgICByZXR1cm4gIlR5cGVkQXJyYXlCeXRlT2Zmc2V0SW50cmluc2ljIjsKKyAgICBjYXNl
IFVuZGVyc2NvcmVQcm90b0ludHJpbnNpYzoKKyAgICAgICAgcmV0dXJuICJVbmRlcnNjb3JlUHJv
dG9JbnRyaW5zaWMiOwogICAgIGNhc2UgREZHVHJ1ZUludHJpbnNpYzoKICAgICAgICAgcmV0dXJu
ICJERkdUcnVlSW50cmluc2ljIjsKICAgICBjYXNlIE9TUkV4aXRJbnRyaW5zaWM6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5oCmluZGV4IDI5ZDk1ZjcyOWFjNTRjMWYz
YTU3MGZhYmY2ODRmZTdlM2I1NzdkOTAuLjA2Y2IyOGE0MmViYTFmMDk4NjhiZTQ5MmYxMWIyNWYz
OWYyYjkzNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJp
bnNpYy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5oCkBA
IC02OCw2ICs2OCw4IEBAIGVudW0gSW50cmluc2ljIHsKICAgICBSZWdFeHBFeGVjSW50cmluc2lj
LAogICAgIFJlZ0V4cFRlc3RJbnRyaW5zaWMsCiAgICAgUmVnRXhwVGVzdEZhc3RJbnRyaW5zaWMs
CisgICAgT2JqZWN0R2V0UHJvdG90eXBlT2ZJbnRyaW5zaWMsCisgICAgUmVmbGVjdEdldFByb3Rv
dHlwZU9mSW50cmluc2ljLAogICAgIFN0cmluZ1Byb3RvdHlwZVZhbHVlT2ZJbnRyaW5zaWMsCiAg
ICAgU3RyaW5nUHJvdG90eXBlUmVwbGFjZUludHJpbnNpYywKICAgICBTdHJpbmdQcm90b3R5cGVS
ZXBsYWNlUmVnRXhwSW50cmluc2ljLApAQCAtMTA5LDYgKzExMSw3IEBAIGVudW0gSW50cmluc2lj
IHsKICAgICBUeXBlZEFycmF5TGVuZ3RoSW50cmluc2ljLAogICAgIFR5cGVkQXJyYXlCeXRlTGVu
Z3RoSW50cmluc2ljLAogICAgIFR5cGVkQXJyYXlCeXRlT2Zmc2V0SW50cmluc2ljLAorICAgIFVu
ZGVyc2NvcmVQcm90b0ludHJpbnNpYywKIAogICAgIC8vIERlYnVnZ2luZyBpbnRyaW5zaWNzLiBU
aGVzZSBhcmUgbWVhbnQgdG8gYmUgdXNlZCBhcyB0ZXN0aW5nIGhhY2tzIHdpdGhpbgogICAgIC8v
IGpzYy5jcHAgYW5kIHNob3VsZCBuZXZlciBiZSBleHBvc2VkIHRvIHVzZXJzLgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IDQwZTRm
NDFlODIzYzYzMGI1YTdjZTVjNjU5MTc1NzA1MWZmMTBmMzEuLjE3MGUyNjBiNjAwMjlmZTNmMzU4
OWE4MmYwYWIxNTZiNjJlM2MzMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTQ1MCw3ICs0NTAsNyBAQCB2b2lkIEpTR2xvYmFs
T2JqZWN0Ojppbml0KFZNJiB2bSkKICAgICBtX251bGxTZXR0ZXJGdW5jdGlvbi5zZXQodm0sIHRo
aXMsIE51bGxTZXR0ZXJGdW5jdGlvbjo6Y3JlYXRlKHZtLCBOdWxsU2V0dGVyRnVuY3Rpb246OmNy
ZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSkpKTsKICAg
ICBtX29iamVjdFByb3RvdHlwZS5zZXQodm0sIHRoaXMsIE9iamVjdFByb3RvdHlwZTo6Y3JlYXRl
KHZtLCB0aGlzLCBPYmplY3RQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywganNO
dWxsKCkpKSk7CiAgICAgR2V0dGVyU2V0dGVyKiBwcm90b0FjY2Vzc29yID0gR2V0dGVyU2V0dGVy
OjpjcmVhdGUodm0sIHRoaXMpOwotICAgIHByb3RvQWNjZXNzb3ItPnNldEdldHRlcih2bSwgdGhp
cywgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBtYWtlU3RyaW5nKCJnZXQgIiwgdm0u
cHJvcGVydHlOYW1lcy0+dW5kZXJzY29yZVByb3RvLnN0cmluZygpKSwgZ2xvYmFsRnVuY1Byb3Rv
R2V0dGVyKSk7CisgICAgcHJvdG9BY2Nlc3Nvci0+c2V0R2V0dGVyKHZtLCB0aGlzLCBKU0Z1bmN0
aW9uOjpjcmVhdGUodm0sIHRoaXMsIDAsIG1ha2VTdHJpbmcoImdldCAiLCB2bS5wcm9wZXJ0eU5h
bWVzLT51bmRlcnNjb3JlUHJvdG8uc3RyaW5nKCkpLCBnbG9iYWxGdW5jUHJvdG9HZXR0ZXIsIFVu
ZGVyc2NvcmVQcm90b0ludHJpbnNpYykpOwogICAgIHByb3RvQWNjZXNzb3ItPnNldFNldHRlcih2
bSwgdGhpcywgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBtYWtlU3RyaW5nKCJzZXQg
Iiwgdm0ucHJvcGVydHlOYW1lcy0+dW5kZXJzY29yZVByb3RvLnN0cmluZygpKSwgZ2xvYmFsRnVu
Y1Byb3RvU2V0dGVyKSk7CiAgICAgbV9vYmplY3RQcm90b3R5cGUtPnB1dERpcmVjdE5vbkluZGV4
QWNjZXNzb3Iodm0sIHZtLnByb3BlcnR5TmFtZXMtPnVuZGVyc2NvcmVQcm90bywgcHJvdG9BY2Nl
c3NvciwgUHJvcGVydHlBdHRyaWJ1dGU6OkFjY2Vzc29yIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKTsKICAgICBtX2Z1bmN0aW9uUHJvdG90eXBlLT5zdHJ1Y3R1cmUoKS0+c2V0UHJvdG90
eXBlV2l0aG91dFRyYW5zaXRpb24odm0sIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rp
b25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVu
Y3Rpb25zLmNwcAppbmRleCAzNzE5MTk3NWUxOTE0NzRhYjZlYTM0ZmRiYzJhOGFkYmY5N2FhYTAy
Li5lYmQ4ZDllN2Q2NDQ2NDEwOTVmNDVlOTBkZDgyZDVlODBhNGQ5NmFiIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlv
bnMuY3BwCkBAIC02NCw3ICs2NCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBVbmljb2RlOwogCiBuYW1l
c3BhY2UgSlNDIHsKIAotc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IE9iamVjdFByb3RvQ2FsbGVk
T25OdWxsT3JVbmRlZmluZWRFcnJvciA9ICJPYmplY3QucHJvdG90eXBlLl9fcHJvdG9fXyBjYWxs
ZWQgb24gbnVsbCBvciB1bmRlZmluZWQiOworY29uc3QgY2hhciogY29uc3QgT2JqZWN0UHJvdG9D
YWxsZWRPbk51bGxPclVuZGVmaW5lZEVycm9yID0gIk9iamVjdC5wcm90b3R5cGUuX19wcm90b19f
IGNhbGxlZCBvbiBudWxsIG9yIHVuZGVmaW5lZCI7CiAKIHRlbXBsYXRlPHVuc2lnbmVkIGNoYXJh
Y3RlcnNDb3VudD4KIHN0YXRpYyBCaXRtYXA8MjU2PiBtYWtlQ2hhcmFjdGVyQml0bWFwKGNvbnN0
IGNoYXIgKCZjaGFyYWN0ZXJzKVtjaGFyYWN0ZXJzQ291bnRdKQpAQCAtNzA2LDExICs3MDYsMTEg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jUHJvdG9HZXR0ZXIoRXhl
Y1N0YXRlKiBleGVjKQogCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUo
KS50b1RoaXMoZXhlYywgU3RyaWN0TW9kZSk7CiAgICAgaWYgKHRoaXNWYWx1ZS5pc1VuZGVmaW5l
ZE9yTnVsbCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwg
QVNDSUlMaXRlcmFsKE9iamVjdFByb3RvQ2FsbGVkT25OdWxsT3JVbmRlZmluZWRFcnJvcikpOwor
ICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIHNjb3BlLCBjcmVhdGVOb3RBbk9iamVj
dEVycm9yKGV4ZWMsIHRoaXNWYWx1ZSkpOwogCiAgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBq
c0R5bmFtaWNDYXN0PEpTT2JqZWN0Kj4odm0sIHRoaXNWYWx1ZSk7CiAgICAgaWYgKCF0aGlzT2Jq
ZWN0KSB7Ci0gICAgICAgIEpTT2JqZWN0KiBwcm90b3R5cGUgPSBleGVjLT50aGlzVmFsdWUoKS5z
eW50aGVzaXplUHJvdG90eXBlKGV4ZWMpOworICAgICAgICBKU09iamVjdCogcHJvdG90eXBlID0g
dGhpc1ZhbHVlLnN5bnRoZXNpemVQcm90b3R5cGUoZXhlYyk7CiAgICAgICAgIEVYQ0VQVElPTl9B
U1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAhcHJvdG90eXBlKTsKICAgICAgICAgaWYgKFVO
TElLRUxZKCFwcm90b3R5cGUpKQogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShK
U1ZhbHVlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3RGdW5jdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgKaW5kZXggNGU4NWVkYWVkYTRmMDA1MTc3MTg4NTc0ZTUz
MWQ0ZDUzNWM0MGViYS4uYjY3OTllMjc2MmRiOWYzMTNmOGQ0MWUxMzM1ZTI5Y2YwZjgyMWU3NyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RG
dW5jdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdEZ1bmN0aW9ucy5oCkBAIC0zNSw2ICszNSw4IEBAIGNsYXNzIEpTT2JqZWN0OwogLy8gRklY
TUU6IFRoZXNlIGZ1bmN0aW9ucyBzaG91bGQgcmVhbGx5IGJlIGluIEpTR2xvYmFsT2JqZWN0LmNw
cCwgYnV0IHB1dHRpbmcgdGhlbSB0aGVyZQogLy8gaXMgYSAwLjUlIHJlZHVjdGlvbi4KIAorZXh0
ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IE9iamVjdFByb3RvQ2FsbGVkT25OdWxsT3JVbmRlZmluZWRF
cnJvcjsKKwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jRXZhbChFeGVj
U3RhdGUqKTsKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY1BhcnNlSW50
KEV4ZWNTdGF0ZSopOwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jUGFy
c2VGbG9hdChFeGVjU3RhdGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAppbmRleCAyMjg3MjdiNmU1MzQ1YjljY2ZiNTE4NGIz
NDhkOTMwOWY3NTQ3YmU2Li5mNjcwYmQzMjQwMDc2NGYzOWE2MWYzNDRkNDhjYTZiZDM2ODhjZWIw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1
Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3Ry
dWN0b3IuY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIGNvbnN0IENsYXNzSW5mbyBPYmplY3RDb25zdHJ1
Y3Rvcjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmSW50ZXJuYWxGdW5jdGlvbjo6c19pCiAKIC8q
IFNvdXJjZSBmb3IgT2JqZWN0Q29uc3RydWN0b3IubHV0LmgKIEBiZWdpbiBvYmplY3RDb25zdHJ1
Y3RvclRhYmxlCi0gIGdldFByb3RvdHlwZU9mICAgICAgICAgICAgb2JqZWN0Q29uc3RydWN0b3JH
ZXRQcm90b3R5cGVPZiAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgIGdldFByb3Rv
dHlwZU9mICAgICAgICAgICAgb2JqZWN0Q29uc3RydWN0b3JHZXRQcm90b3R5cGVPZiAgICAgICAg
ICAgICBEb250RW51bXxGdW5jdGlvbiAxIE9iamVjdEdldFByb3RvdHlwZU9mSW50cmluc2ljCiAg
IHNldFByb3RvdHlwZU9mICAgICAgICAgICAgb2JqZWN0Q29uc3RydWN0b3JTZXRQcm90b3R5cGVP
ZiAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCiAgIGdldE93blByb3BlcnR5RGVzY3Jp
cHRvciAgb2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgICBEb250RW51
bXxGdW5jdGlvbiAyCiAgIGdldE93blByb3BlcnR5RGVzY3JpcHRvcnMgb2JqZWN0Q29uc3RydWN0
b3JHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzICBEb250RW51bXxGdW5jdGlvbiAxCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWZsZWN0T2JqZWN0LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZmxlY3RPYmplY3QuY3BwCmluZGV4IDQwZTE5
ZjNkNTQ1M2Y3YmUwYjY0ZDMxNjc1Y2IzOWJmYjYzMzAxNWMuLmRkMGUxOGUxNDQ2YmEyNjllNzll
MGRmNGI3OGRmNmE1NmQzZTc4OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JlZmxlY3RPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1JlZmxlY3RPYmplY3QuY3BwCkBAIC02Myw3ICs2Myw3IEBAIGNvbnN0IENsYXNzSW5mbyBS
ZWZsZWN0T2JqZWN0OjpzX2luZm8gPSB7ICJPYmplY3QiLCAmQmFzZTo6c19pbmZvLCAmcmVmbGVj
dE9iamVjCiAgICAgZGVsZXRlUHJvcGVydHkgICAgICAgICAgIEpTQnVpbHRpbiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMgogICAgIGdldCAgICAgICAgICAg
ICAgICAgICAgICByZWZsZWN0T2JqZWN0R2V0ICAgICAgICAgICAgICAgICAgICAgIERvbnRFbnVt
fEZ1bmN0aW9uIDIKICAgICBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgcmVmbGVjdE9iamVjdEdl
dE93blByb3BlcnR5RGVzY3JpcHRvciBEb250RW51bXxGdW5jdGlvbiAyCi0gICAgZ2V0UHJvdG90
eXBlT2YgICAgICAgICAgIHJlZmxlY3RPYmplY3RHZXRQcm90b3R5cGVPZiAgICAgICAgICAgRG9u
dEVudW18RnVuY3Rpb24gMQorICAgIGdldFByb3RvdHlwZU9mICAgICAgICAgICByZWZsZWN0T2Jq
ZWN0R2V0UHJvdG90eXBlT2YgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEgUmVmbGVjdEdl
dFByb3RvdHlwZU9mSW50cmluc2ljCiAgICAgaGFzICAgICAgICAgICAgICAgICAgICAgIEpTQnVp
bHRpbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMgogICAg
IGlzRXh0ZW5zaWJsZSAgICAgICAgICAgICByZWZsZWN0T2JqZWN0SXNFeHRlbnNpYmxlICAgICAg
ICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKICAgICBvd25LZXlzICAgICAgICAgICAgICAgICAg
cmVmbGVjdE9iamVjdE93bktleXMgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAx
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggODNjNzNmZjc5MWIyODc1OTM2MTMzYzQ3YWM5OTVmYTk4ZjRkY2YwMy4uNjAyMGQ0
ZTI4MWNhZTRjYzE3ODNmZjgzZWJjMmJlZTAzMjA4ZmJiMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBA
CisyMDE3LTEwLTEwICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisg
ICAgICAgIFtKU0NdIF9fcHJvdG9fXyBnZXR0ZXIgc2hvdWxkIGJlIGZhc3QKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODA2NworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICoganMvb2JqZWN0LWxpdGVyYWwt
c2hvcnRoYW5kLWNvbnN0cnVjdGlvbi1leHBlY3RlZC50eHQ6CisgICAgICAgICoganMvc2NyaXB0
LXRlc3RzL29iamVjdC1saXRlcmFsLXNob3J0aGFuZC1jb25zdHJ1Y3Rpb24uanM6CisgICAgICAg
IChzZXQgMik6CisgICAgICAgIChnZXQgMSk6CisgICAgICAgICoganMvc2NyaXB0LXRlc3RzL3Ns
b3BweS1nZXR0ZXItc2V0dGVyLWdsb2JhbC1vYmplY3QuanM6CisgICAgICAgICoganMvc2xvcHB5
LWdldHRlci1zZXR0ZXItZ2xvYmFsLW9iamVjdC1leHBlY3RlZC50eHQ6CisKIDIwMTctMTAtMDkg
IENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBDYWxsaW5nIGZpbGVT
eXN0ZW1EaXJlY3RvcnlFbnRyeS5nZXREaXJlY3RvcnkoKSB3aXRoIGVtcHR5IHBhdGggc2hvdWxk
IG5vdCBmYWlsCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9vYmplY3QtbGl0ZXJhbC1zaG9y
dGhhbmQtY29uc3RydWN0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL29iamVjdC1s
aXRlcmFsLXNob3J0aGFuZC1jb25zdHJ1Y3Rpb24tZXhwZWN0ZWQudHh0CmluZGV4IGVlMTZiODU5
YmJjMjcyNzIxNDg0NGViYTJmMjkzZWU4ZDg1M2Q0NzAuLjZmYjE3NzViMDUzMTg4ZjBmZTNlMzhm
NWE3YjQ4ZDhiOWUwY2ExNjAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL29iamVjdC1saXRl
cmFsLXNob3J0aGFuZC1jb25zdHJ1Y3Rpb24tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L2pzL29iamVjdC1saXRlcmFsLXNob3J0aGFuZC1jb25zdHJ1Y3Rpb24tZXhwZWN0ZWQudHh0CkBA
IC02NCw3ICs2NCw3IEBAIFBBU1MgISFPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHtz
ZXQgNDIodmFsdWUpe319LCAnNDInKS5zZXQgaXMgdHJ1ZQogUEFTUyB0aGlzLl9fcHJvdG9fXyA9
IFtdIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IENhbm5vdCBzZXQgcHJvdG90eXBlIG9mIGlt
bXV0YWJsZSBwcm90b3R5cGUgb2JqZWN0LgogUEFTUyAoe19fcHJvdG9fXzogdGhpcy5fX3Byb3Rv
X199KSBpbnN0YW5jZW9mIEFycmF5IGlzIGZhbHNlCiBQQVNTIF9fcHJvdG9fXyA9IFtdIHRocmV3
IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE9iamVjdC5wcm90b3R5cGUuX19wcm90b19fIGNhbGxlZCBv
biBudWxsIG9yIHVuZGVmaW5lZC4KLVBBU1MgKHtfX3Byb3RvX186IF9fcHJvdG9fX30pIGluc3Rh
bmNlb2YgQXJyYXkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogT2JqZWN0LnByb3RvdHlwZS5f
X3Byb3RvX18gY2FsbGVkIG9uIG51bGwgb3IgdW5kZWZpbmVkLgorUEFTUyAoe19fcHJvdG9fXzog
X19wcm90b19ffSkgaW5zdGFuY2VvZiBBcnJheSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiB1
bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnX19wcm90b19fJykuCiBTeW50
YXhFcnJvcnMKIFBBU1MgKHticmVha30pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogQ2Fu
bm90IHVzZSB0aGUga2V5d29yZCAnYnJlYWsnIGFzIGEgc2hvcnRoYW5kIHByb3BlcnR5IG5hbWUu
LgogUEFTUyAoe2Nhc2V9KSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IENhbm5vdCB1c2Ug
dGhlIGtleXdvcmQgJ2Nhc2UnIGFzIGEgc2hvcnRoYW5kIHByb3BlcnR5IG5hbWUuLgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL29iamVjdC1saXRlcmFsLXNob3J0aGFu
ZC1jb25zdHJ1Y3Rpb24uanMgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvb2JqZWN0LWxp
dGVyYWwtc2hvcnRoYW5kLWNvbnN0cnVjdGlvbi5qcwppbmRleCAwNDYwYjY2YjkxN2EzZTUyYWE3
NzBjNDFjMGY0NWZmMjA1NzhhYzUzLi5kNjA0ODk0MzI3NjcxZDlhNzJhYmQwOWY5NDFhNzU1Njli
NWU3YWY5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvb2JqZWN0LWxp
dGVyYWwtc2hvcnRoYW5kLWNvbnN0cnVjdGlvbi5qcworKysgYi9MYXlvdXRUZXN0cy9qcy9zY3Jp
cHQtdGVzdHMvb2JqZWN0LWxpdGVyYWwtc2hvcnRoYW5kLWNvbnN0cnVjdGlvbi5qcwpAQCAtMTEz
LDcgKzExMyw3IEBAIGZ1bmN0aW9uIHRlc3RTaG9ydGhhbmRDb25zdHJ1Y3Rpb25Ob3RFcXVpdmFs
ZW50KGV4cHIxLCBleHByMikgewogc2hvdWxkVGhyb3coInRoaXMuX19wcm90b19fID0gW10iKTsK
IHNob3VsZEJlRmFsc2UoIih7X19wcm90b19fOiB0aGlzLl9fcHJvdG9fX30pIGluc3RhbmNlb2Yg
QXJyYXkiKTsKIHNob3VsZFRocm93KCJfX3Byb3RvX18gPSBbXSIsICciVHlwZUVycm9yOiBPYmpl
Y3QucHJvdG90eXBlLl9fcHJvdG9fXyBjYWxsZWQgb24gbnVsbCBvciB1bmRlZmluZWQiJyk7Ci1z
aG91bGRUaHJvdygiKHtfX3Byb3RvX186IF9fcHJvdG9fX30pIGluc3RhbmNlb2YgQXJyYXkiLCAn
IlR5cGVFcnJvcjogT2JqZWN0LnByb3RvdHlwZS5fX3Byb3RvX18gY2FsbGVkIG9uIG51bGwgb3Ig
dW5kZWZpbmVkIicpOworc2hvdWxkVGhyb3coIih7X19wcm90b19fOiBfX3Byb3RvX199KSBpbnN0
YW5jZW9mIEFycmF5IiwgJyJUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChl
dmFsdWF0aW5nIFwnX19wcm90b19fXCcpIicpOwogCiAvLyBLZXl3b3JkcyAtIFN5bnRheCBFcnJv
cnMKIGRlYnVnKCJTeW50YXhFcnJvcnMiKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3Nj
cmlwdC10ZXN0cy9zbG9wcHktZ2V0dGVyLXNldHRlci1nbG9iYWwtb2JqZWN0LmpzIGIvTGF5b3V0
VGVzdHMvanMvc2NyaXB0LXRlc3RzL3Nsb3BweS1nZXR0ZXItc2V0dGVyLWdsb2JhbC1vYmplY3Qu
anMKaW5kZXggZWJjYmVhOTk5ZmMyOTE2OGVlODk4Zjk1MmRmZjdhNDBhMzZhOGM5My4uODgwM2U2
YjliZWNhMGNkMGNjYzA3YTMxNjJjNTgzMTM1YTk1Mjg5NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvanMvc2NyaXB0LXRlc3RzL3Nsb3BweS1nZXR0ZXItc2V0dGVyLWdsb2JhbC1vYmplY3QuanMK
KysrIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL3Nsb3BweS1nZXR0ZXItc2V0dGVyLWds
b2JhbC1vYmplY3QuanMKQEAgLTI1LDEyICsyNSwxMiBAQAogc2hvdWxkTm90VGhyb3coIk9iamVj
dC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoT2JqZWN0LnByb3RvdHlwZSwnX19wcm90b19fJyku
Z2V0KCkiKTsKIHNob3VsZE5vdFRocm93KCJPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KE9iamVjdC5wcm90b3R5cGUsJ19fcHJvdG9fXycpLnNldChbJ2ZvbyddKSIpOwogCi1zaG91bGRU
aHJvdygiKDAsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihPYmplY3QucHJvdG90eXBl
LCdfX3Byb3RvX18nKS5nZXQpKCkiLCAiXCJUeXBlRXJyb3I6IE9iamVjdC5wcm90b3R5cGUuX19w
cm90b19fIGNhbGxlZCBvbiBudWxsIG9yIHVuZGVmaW5lZFwiIik7CitzaG91bGRUaHJvdygiKDAs
T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihPYmplY3QucHJvdG90eXBlLCdfX3Byb3Rv
X18nKS5nZXQpKCkiLCAiXCJUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChl
dmFsdWF0aW5nICcoMCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE9iamVjdC5wcm90
b3R5cGUsJ19fcHJvdG9fXycpLmdldCkoKScpXCIiKTsKIHNob3VsZFRocm93KCIoMCxPYmplY3Qu
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE9iamVjdC5wcm90b3R5cGUsJ19fcHJvdG9fXycpLnNl
dCkoWydmb28nXSkiLCAiXCJUeXBlRXJyb3I6IE9iamVjdC5wcm90b3R5cGUuX19wcm90b19fIGNh
bGxlZCBvbiBudWxsIG9yIHVuZGVmaW5lZFwiIik7CiAKIAogdmFyIHRvcF9sZXZlbF9zbG9wcHlf
Z2V0dGVyID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihPYmplY3QucHJvdG90eXBl
LCdfX3Byb3RvX18nKS5nZXQ7Ci1zaG91bGRUaHJvdygidG9wX2xldmVsX3Nsb3BweV9nZXR0ZXIo
KTsiLCAiXCJUeXBlRXJyb3I6IE9iamVjdC5wcm90b3R5cGUuX19wcm90b19fIGNhbGxlZCBvbiBu
dWxsIG9yIHVuZGVmaW5lZFwiIik7CitzaG91bGRUaHJvdygidG9wX2xldmVsX3Nsb3BweV9nZXR0
ZXIoKTsiLCAiXCJUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0
aW5nICd0b3BfbGV2ZWxfc2xvcHB5X2dldHRlcigpJylcIiIpOwogCiB2YXIgdG9wX2xldmVsX3Ns
b3BweV9zZXR0ZXIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE9iamVjdC5wcm90
b3R5cGUsJ19fcHJvdG9fXycpLnNldDsKIHNob3VsZFRocm93KCJ0b3BfbGV2ZWxfc2xvcHB5X3Nl
dHRlcihbJ2ZvbyddKTsiLCAiXCJUeXBlRXJyb3I6IE9iamVjdC5wcm90b3R5cGUuX19wcm90b19f
IGNhbGxlZCBvbiBudWxsIG9yIHVuZGVmaW5lZFwiIik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9qcy9zbG9wcHktZ2V0dGVyLXNldHRlci1nbG9iYWwtb2JqZWN0LWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2pzL3Nsb3BweS1nZXR0ZXItc2V0dGVyLWdsb2JhbC1vYmplY3QtZXhwZWN0ZWQu
dHh0CmluZGV4IDkzMzlkZDNhYTMxNjU3ZGJmYzJkNWU0OGYzNjViMjQyODA3NjY2MWMuLjhmYWE0
NzUyNmI2M2U0MTQ1NGIzZDYzMDg3OGZkYTk3MTVhODAwZTUgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2pzL3Nsb3BweS1nZXR0ZXItc2V0dGVyLWdsb2JhbC1vYmplY3QtZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL2pzL3Nsb3BweS1nZXR0ZXItc2V0dGVyLWdsb2JhbC1vYmplY3QtZXhw
ZWN0ZWQudHh0CkBAIC04LDkgKzgsOSBAQCBQQVNTIE9iamVjdC5wcm90b3R5cGUudmFsdWVPZi5j
YWxsKDMpOyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KIFBBU1MgT2JqZWN0LnByb3RvdHlwZS52
YWx1ZU9mLmNhbGwobnVsbCk7IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IG51bGwgaXMgbm90
IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnT2JqZWN0LnByb3RvdHlwZS52YWx1ZU9mLmNhbGwobnVs
bCknKS4KIFBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihPYmplY3QucHJvdG90
eXBlLCdfX3Byb3RvX18nKS5nZXQoKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KIFBBU1MgT2Jq
ZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihPYmplY3QucHJvdG90eXBlLCdfX3Byb3RvX18n
KS5zZXQoWydmb28nXSkgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCi1QQVNTICgwLE9iamVjdC5n
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoT2JqZWN0LnByb3RvdHlwZSwnX19wcm90b19fJykuZ2V0
KSgpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE9iamVjdC5wcm90b3R5cGUuX19wcm90b19f
IGNhbGxlZCBvbiBudWxsIG9yIHVuZGVmaW5lZC4KK1BBU1MgKDAsT2JqZWN0LmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcihPYmplY3QucHJvdG90eXBlLCdfX3Byb3RvX18nKS5nZXQpKCkgdGhyZXcg
ZXhjZXB0aW9uIFR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRp
bmcgJygwLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoT2JqZWN0LnByb3RvdHlwZSwn
X19wcm90b19fJykuZ2V0KSgpJykuCiBQQVNTICgwLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IoT2JqZWN0LnByb3RvdHlwZSwnX19wcm90b19fJykuc2V0KShbJ2ZvbyddKSB0aHJldyBl
eGNlcHRpb24gVHlwZUVycm9yOiBPYmplY3QucHJvdG90eXBlLl9fcHJvdG9fXyBjYWxsZWQgb24g
bnVsbCBvciB1bmRlZmluZWQuCi1QQVNTIHRvcF9sZXZlbF9zbG9wcHlfZ2V0dGVyKCk7IHRocmV3
IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE9iamVjdC5wcm90b3R5cGUuX19wcm90b19fIGNhbGxlZCBv
biBudWxsIG9yIHVuZGVmaW5lZC4KK1BBU1MgdG9wX2xldmVsX3Nsb3BweV9nZXR0ZXIoKTsgdGhy
ZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1
YXRpbmcgJ3RvcF9sZXZlbF9zbG9wcHlfZ2V0dGVyKCknKS4KIFBBU1MgdG9wX2xldmVsX3Nsb3Bw
eV9zZXR0ZXIoWydmb28nXSk7IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE9iamVjdC5wcm90
b3R5cGUuX19wcm90b19fIGNhbGxlZCBvbiBudWxsIG9yIHVuZGVmaW5lZC4KIFBBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKIApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9K
U1Rlc3RzL0NoYW5nZUxvZwppbmRleCBlMDU0MzdhNzBmM2Y2Mzg0ZGI3YjkwMmU2ODNlNmU4NDAy
NGVhMjVmLi4wNGYwODQ5ZTFjNmJlZjA2NmUxOGY5YmI0YWRlNThiNWRlMjIwOWI4IDEwMDY0NAot
LS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDcxIEBACisyMDE3LTEwLTEwICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29t
PgorCisgICAgICAgIFtKU0NdIF9fcHJvdG9fXyBnZXR0ZXIgc2hvdWxkIGJlIGZhc3QKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODA2NworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RyZXNzL2RmZy1v
YmplY3QtcHJvdG8tYWNjZXNzb3IuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAg
ICAgICAoc2hvdWxkVGhyb3cpOgorICAgICAgICAodGFyZ2V0KToKKyAgICAgICAgKiBzdHJlc3Mv
ZGZnLW9iamVjdC1wcm90by1nZXR0ZXIuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgor
ICAgICAgICAoc2hvdWxkVGhyb3cpOgorICAgICAgICAodGFyZ2V0KToKKyAgICAgICAgKiBzdHJl
c3MvZGZnLW9iamVjdC1wcm90b3R5cGUtb2YuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUp
OgorICAgICAgICAoc2hvdWxkVGhyb3cpOgorICAgICAgICAodGFyZ2V0KToKKyAgICAgICAgKiBz
dHJlc3MvZGZnLXJlZmxlY3QtZ2V0LXByb3RvdHlwZS1vZi5qczogQWRkZWQuCisgICAgICAgIChz
aG91bGRCZSk6CisgICAgICAgIChzaG91bGRUaHJvdyk6CisgICAgICAgICh0YXJnZXQpOgorICAg
ICAgICAqIHN0cmVzcy9vYmplY3QtZ2V0LXByb3RvdHlwZS1vZi1maWx0ZXJlZC5qczogQWRkZWQu
CisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChzaG91bGRUaHJvdyk6CisgICAgICAgICh0
YXJnZXQpOgorICAgICAgICAoaS5Db2NvYSk6CisgICAgICAgICogc3RyZXNzL29iamVjdC1nZXQt
cHJvdG90eXBlLW9mLW1vbm8tcHJvdG8uanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgor
ICAgICAgICAobWFrZVBvbHlQcm90b09iamVjdC5mb28uQyk6CisgICAgICAgIChtYWtlUG9seVBy
b3RvT2JqZWN0LmZvbyk6CisgICAgICAgIChtYWtlUG9seVByb3RvT2JqZWN0KToKKyAgICAgICAg
KHRhcmdldCk6CisgICAgICAgICogc3RyZXNzL29iamVjdC1nZXQtcHJvdG90eXBlLW9mLXBvbHkt
bW9uby1wcm90by5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChtYWtl
UG9seVByb3RvT2JqZWN0LmZvby5DKToKKyAgICAgICAgKG1ha2VQb2x5UHJvdG9PYmplY3QuZm9v
KToKKyAgICAgICAgKG1ha2VQb2x5UHJvdG9PYmplY3QpOgorICAgICAgICAodGFyZ2V0KToKKyAg
ICAgICAgKiBzdHJlc3Mvb2JqZWN0LWdldC1wcm90b3R5cGUtb2YtcG9seS1wcm90by5qczogQWRk
ZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChtYWtlUG9seVByb3RvT2JqZWN0LmZv
by5DKToKKyAgICAgICAgKG1ha2VQb2x5UHJvdG9PYmplY3QuZm9vKToKKyAgICAgICAgKG1ha2VQ
b2x5UHJvdG9PYmplY3QpOgorICAgICAgICAodGFyZ2V0KToKKyAgICAgICAgKiBzdHJlc3Mvb2Jq
ZWN0LXByb3RvLWdldHRlci1maWx0ZXJlZC5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6
CisgICAgICAgIChzaG91bGRUaHJvdyk6CisgICAgICAgICh0YXJnZXQpOgorICAgICAgICAoaS5D
b2NvYSk6CisgICAgICAgICogc3RyZXNzL29iamVjdC1wcm90by1nZXR0ZXItcG9seS1tb25vLXBy
b3RvLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKG1ha2VQb2x5UHJv
dG9PYmplY3QuZm9vLkMpOgorICAgICAgICAobWFrZVBvbHlQcm90b09iamVjdC5mb28pOgorICAg
ICAgICAobWFrZVBvbHlQcm90b09iamVjdCk6CisgICAgICAgICh0YXJnZXQpOgorICAgICAgICAq
IHN0cmVzcy9vYmplY3QtcHJvdG8tZ2V0dGVyLXBvbHktcHJvdG8uanM6IEFkZGVkLgorICAgICAg
ICAoc2hvdWxkQmUpOgorICAgICAgICAobWFrZVBvbHlQcm90b09iamVjdC5mb28uQyk6CisgICAg
ICAgIChtYWtlUG9seVByb3RvT2JqZWN0LmZvbyk6CisgICAgICAgIChtYWtlUG9seVByb3RvT2Jq
ZWN0KToKKyAgICAgICAgKHRhcmdldCk6CisgICAgICAgICogc3RyZXNzL29iamVjdC1wcm90b3R5
cGUtcHJvdG8tYWNjZXNzb3JzLXNob3VsZC10aHJvdy1vbi11bmRlZmluZWQtdGhpcy5qczoKKyAg
ICAgICAgKiBzdHJlc3Mvc3RyaW5nLXByb3RvLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJl
KToKKyAgICAgICAgKHRhcmdldCk6CisKIDIwMTctMTAtMDkgIFl1c3VrZSBTdXp1a2kgIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgYGFzeW5jYCBzaG91bGQgYmUgYWJsZSB0byBi
ZSB1c2VkIGFzIGFuIGltcG9ydGVkIGJpbmRpbmcgbmFtZQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9z
dHJlc3MvZGZnLW9iamVjdC1wcm90by1hY2Nlc3Nvci5qcyBiL0pTVGVzdHMvc3RyZXNzL2RmZy1v
YmplY3QtcHJvdG8tYWNjZXNzb3IuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGY2ZGI3Yjc0ZTBhMGZhNjY3M2Ni
ZjEyMjkwNmI4MTZlYjJlZTgyMwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2Rm
Zy1vYmplY3QtcHJvdG8tYWNjZXNzb3IuanMKQEAgLTAsMCArMSwxMTUgQEAKK2Z1bmN0aW9uIHNo
b3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpCit7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQp
CisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKwor
ZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJyb3JNZXNzYWdlKSB7CisgICAgdmFyIGVycm9y
VGhyb3duID0gZmFsc2U7CisgICAgdmFyIGVycm9yID0gbnVsbDsKKyAgICB0cnkgeworICAgICAg
ICBmdW5jKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBlcnJvclRocm93biA9IHRydWU7
CisgICAgICAgIGVycm9yID0gZTsKKyAgICB9CisgICAgaWYgKCFlcnJvclRocm93bikKKyAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCdub3QgdGhyb3duJyk7CisgICAgaWYgKFN0cmluZyhlcnJvcikg
IT09IGVycm9yTWVzc2FnZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgZXJyb3I6ICR7
U3RyaW5nKGVycm9yKX1gKTsKK30KKworKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiB0YXJn
ZXQob2JqZWN0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIG9iamVjdC5fX3Byb3RvX187CisgICAg
fQorICAgIG5vSW5saW5lKHRhcmdldCk7CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDFlMzsg
KytpKQorICAgICAgICBzaG91bGRCZSh0YXJnZXQoe30pLCBPYmplY3QucHJvdG90eXBlKTsKK30o
KSk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAgZnVuY3Rpb24gdGFyZ2V0KG9iamVjdCkKKyAgICB7
CisgICAgICAgIHJldHVybiBvYmplY3QuX19wcm90b19fOworICAgIH0KKyAgICBub0lubGluZSh0
YXJnZXQpOworCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxZTM7ICsraSkgeworICAgICAgICBz
aG91bGRUaHJvdygoKSA9PiB0YXJnZXQobnVsbCksIGBUeXBlRXJyb3I6IG51bGwgaXMgbm90IGFu
IG9iamVjdCAoZXZhbHVhdGluZyAnb2JqZWN0Ll9fcHJvdG9fXycpYCk7CisgICAgICAgIHNob3Vs
ZFRocm93KCgpID0+IHRhcmdldCh1bmRlZmluZWQpLCBgVHlwZUVycm9yOiB1bmRlZmluZWQgaXMg
bm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnb2JqZWN0Ll9fcHJvdG9fXycpYCk7CisgICAgfQor
fSgpKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiB0YXJnZXQob2JqZWN0KQorICAg
IHsKKyAgICAgICAgcmV0dXJuIG9iamVjdC5fX3Byb3RvX187CisgICAgfQorICAgIG5vSW5saW5l
KHRhcmdldCk7CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDFlMzsgKytpKQorICAgICAgICBz
aG91bGRCZSh0YXJnZXQoIkNvY29hIiksIFN0cmluZy5wcm90b3R5cGUpOworfSgpKTsKKworKGZ1
bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiB0YXJnZXQob2JqZWN0KQorICAgIHsKKyAgICAgICAg
cmV0dXJuIG9iamVjdC5fX3Byb3RvX187CisgICAgfQorICAgIG5vSW5saW5lKHRhcmdldCk7CisK
KyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDFlMzsgKytpKQorICAgICAgICBzaG91bGRCZSh0YXJn
ZXQoNDIpLCBOdW1iZXIucHJvdG90eXBlKTsKK30oKSk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAg
ZnVuY3Rpb24gdGFyZ2V0KG9iamVjdCkKKyAgICB7CisgICAgICAgIHJldHVybiBvYmplY3QuX19w
cm90b19fOworICAgIH0KKyAgICBub0lubGluZSh0YXJnZXQpOworCisgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCAxZTM7ICsraSkKKyAgICAgICAgc2hvdWxkQmUodGFyZ2V0KDQyLjE5NSksIE51bWJl
ci5wcm90b3R5cGUpOworfSgpKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiB0YXJn
ZXQob2JqZWN0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIG9iamVjdC5fX3Byb3RvX187CisgICAg
fQorICAgIG5vSW5saW5lKHRhcmdldCk7CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDFlMzsg
KytpKQorICAgICAgICBzaG91bGRCZSh0YXJnZXQodHJ1ZSksIEJvb2xlYW4ucHJvdG90eXBlKTsK
K30oKSk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAgZnVuY3Rpb24gdGFyZ2V0KG9iamVjdCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBvYmplY3QuX19wcm90b19fOworICAgIH0KKyAgICBub0lubGlu
ZSh0YXJnZXQpOworCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxZTM7ICsraSkKKyAgICAgICAg
c2hvdWxkQmUodGFyZ2V0KFN5bWJvbCgiQ29jb2EiKSksIFN5bWJvbC5wcm90b3R5cGUpOworfSgp
KTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiB0YXJnZXQob2JqZWN0KQorICAgIHsK
KyAgICAgICAgcmV0dXJuIG9iamVjdC5fX3Byb3RvX187CisgICAgfQorICAgIG5vSW5saW5lKHRh
cmdldCk7CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDFlMzsgKytpKSB7CisgICAgICAgIHNo
b3VsZEJlKHRhcmdldCgiQ29jb2EiKSwgU3RyaW5nLnByb3RvdHlwZSk7CisgICAgICAgIHNob3Vs
ZEJlKHRhcmdldCg0MiksIE51bWJlci5wcm90b3R5cGUpOworICAgICAgICBzaG91bGRCZSh0YXJn
ZXQoNDIuMTk1KSwgTnVtYmVyLnByb3RvdHlwZSk7CisgICAgICAgIHNob3VsZEJlKHRhcmdldCh0
cnVlKSwgQm9vbGVhbi5wcm90b3R5cGUpOworICAgICAgICBzaG91bGRCZSh0YXJnZXQoU3ltYm9s
KCJDb2NvYSIpKSwgU3ltYm9sLnByb3RvdHlwZSk7CisgICAgfQorfSgpKTsKZGlmZiAtLWdpdCBh
L0pTVGVzdHMvc3RyZXNzL2RmZy1vYmplY3QtcHJvdG8tZ2V0dGVyLmpzIGIvSlNUZXN0cy9zdHJl
c3MvZGZnLW9iamVjdC1wcm90by1nZXR0ZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWEwNzE2ZDVhYTViMWNl
YjdmNzhlNWQ0NGM5OTU0ZDlmZTUwZGEzYQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3Ry
ZXNzL2RmZy1vYmplY3QtcHJvdG8tZ2V0dGVyLmpzCkBAIC0wLDAgKzEsMTE3IEBACitmdW5jdGlv
biBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKQoreworICAgIGlmIChhY3R1YWwgIT09IGV4cGVj
dGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9
CisKK2Z1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMsIGVycm9yTWVzc2FnZSkgeworICAgIHZhciBl
cnJvclRocm93biA9IGZhbHNlOworICAgIHZhciBlcnJvciA9IG51bGw7CisgICAgdHJ5IHsKKyAg
ICAgICAgZnVuYygpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZXJyb3JUaHJvd24gPSB0
cnVlOworICAgICAgICBlcnJvciA9IGU7CisgICAgfQorICAgIGlmICghZXJyb3JUaHJvd24pCisg
ICAgICAgIHRocm93IG5ldyBFcnJvcignbm90IHRocm93bicpOworICAgIGlmIChTdHJpbmcoZXJy
b3IpICE9PSBlcnJvck1lc3NhZ2UpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIGVycm9y
OiAke1N0cmluZyhlcnJvcil9YCk7Cit9CisKK3ZhciBwcm90b0Z1bmN0aW9uID0gT2JqZWN0Lmdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihPYmplY3QucHJvdG90eXBlLCAiX19wcm90b19fIikuZ2V0
OworCisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9uIHRhcmdldChvYmplY3QpCisgICAgewor
ICAgICAgICByZXR1cm4gcHJvdG9GdW5jdGlvbi5jYWxsKG9iamVjdCk7CisgICAgfQorICAgIG5v
SW5saW5lKHRhcmdldCk7CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDFlMzsgKytpKQorICAg
ICAgICBzaG91bGRCZSh0YXJnZXQoe30pLCBPYmplY3QucHJvdG90eXBlKTsKK30oKSk7CisKKyhm
dW5jdGlvbiAoKSB7CisgICAgZnVuY3Rpb24gdGFyZ2V0KG9iamVjdCkKKyAgICB7CisgICAgICAg
IHJldHVybiBwcm90b0Z1bmN0aW9uLmNhbGwob2JqZWN0KTsKKyAgICB9CisgICAgbm9JbmxpbmUo
dGFyZ2V0KTsKKworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMWUzOyArK2kpIHsKKyAgICAgICAg
c2hvdWxkVGhyb3coKCkgPT4gdGFyZ2V0KG51bGwpLCBgVHlwZUVycm9yOiBudWxsIGlzIG5vdCBh
biBvYmplY3QgKGV2YWx1YXRpbmcgJ3Byb3RvRnVuY3Rpb24uY2FsbChvYmplY3QpJylgKTsKKyAg
ICAgICAgc2hvdWxkVGhyb3coKCkgPT4gdGFyZ2V0KHVuZGVmaW5lZCksIGBUeXBlRXJyb3I6IHVu
ZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdwcm90b0Z1bmN0aW9uLmNhbGwo
b2JqZWN0KScpYCk7CisgICAgfQorfSgpKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlv
biB0YXJnZXQob2JqZWN0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHByb3RvRnVuY3Rpb24uY2Fs
bChvYmplY3QpOworICAgIH0KKyAgICBub0lubGluZSh0YXJnZXQpOworCisgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCAxZTM7ICsraSkKKyAgICAgICAgc2hvdWxkQmUodGFyZ2V0KCJDb2NvYSIpLCBT
dHJpbmcucHJvdG90eXBlKTsKK30oKSk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAgZnVuY3Rpb24g
dGFyZ2V0KG9iamVjdCkKKyAgICB7CisgICAgICAgIHJldHVybiBwcm90b0Z1bmN0aW9uLmNhbGwo
b2JqZWN0KTsKKyAgICB9CisgICAgbm9JbmxpbmUodGFyZ2V0KTsKKworICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgMWUzOyArK2kpCisgICAgICAgIHNob3VsZEJlKHRhcmdldCg0MiksIE51bWJlci5w
cm90b3R5cGUpOworfSgpKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiB0YXJnZXQo
b2JqZWN0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHByb3RvRnVuY3Rpb24uY2FsbChvYmplY3Qp
OworICAgIH0KKyAgICBub0lubGluZSh0YXJnZXQpOworCisgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCAxZTM7ICsraSkKKyAgICAgICAgc2hvdWxkQmUodGFyZ2V0KDQyLjE5NSksIE51bWJlci5wcm90
b3R5cGUpOworfSgpKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiB0YXJnZXQob2Jq
ZWN0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHByb3RvRnVuY3Rpb24uY2FsbChvYmplY3QpOwor
ICAgIH0KKyAgICBub0lubGluZSh0YXJnZXQpOworCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAx
ZTM7ICsraSkKKyAgICAgICAgc2hvdWxkQmUodGFyZ2V0KHRydWUpLCBCb29sZWFuLnByb3RvdHlw
ZSk7Cit9KCkpOworCisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9uIHRhcmdldChvYmplY3Qp
CisgICAgeworICAgICAgICByZXR1cm4gcHJvdG9GdW5jdGlvbi5jYWxsKG9iamVjdCk7CisgICAg
fQorICAgIG5vSW5saW5lKHRhcmdldCk7CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDFlMzsg
KytpKQorICAgICAgICBzaG91bGRCZSh0YXJnZXQoU3ltYm9sKCJDb2NvYSIpKSwgU3ltYm9sLnBy
b3RvdHlwZSk7Cit9KCkpOworCisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9uIHRhcmdldChv
YmplY3QpCisgICAgeworICAgICAgICByZXR1cm4gcHJvdG9GdW5jdGlvbi5jYWxsKG9iamVjdCk7
CisgICAgfQorICAgIG5vSW5saW5lKHRhcmdldCk7CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8
IDFlMzsgKytpKSB7CisgICAgICAgIHNob3VsZEJlKHRhcmdldCgiQ29jb2EiKSwgU3RyaW5nLnBy
b3RvdHlwZSk7CisgICAgICAgIHNob3VsZEJlKHRhcmdldCg0MiksIE51bWJlci5wcm90b3R5cGUp
OworICAgICAgICBzaG91bGRCZSh0YXJnZXQoNDIuMTk1KSwgTnVtYmVyLnByb3RvdHlwZSk7Cisg
ICAgICAgIHNob3VsZEJlKHRhcmdldCh0cnVlKSwgQm9vbGVhbi5wcm90b3R5cGUpOworICAgICAg
ICBzaG91bGRCZSh0YXJnZXQoU3ltYm9sKCJDb2NvYSIpKSwgU3ltYm9sLnByb3RvdHlwZSk7Cisg
ICAgfQorfSgpKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2RmZy1vYmplY3QtcHJvdG90
eXBlLW9mLmpzIGIvSlNUZXN0cy9zdHJlc3MvZGZnLW9iamVjdC1wcm90b3R5cGUtb2YuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGUyNjg0ZDc5ODkxYWVmY2YzODY4NWY0ZjcxNmZmMDJkOTg4MDY0NQotLS0gL2Rl
di9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2RmZy1vYmplY3QtcHJvdG90eXBlLW9mLmpzCkBA
IC0wLDAgKzEsMTE1IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKQorewor
ICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2Jh
ZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMsIGVy
cm9yTWVzc2FnZSkgeworICAgIHZhciBlcnJvclRocm93biA9IGZhbHNlOworICAgIHZhciBlcnJv
ciA9IG51bGw7CisgICAgdHJ5IHsKKyAgICAgICAgZnVuYygpOworICAgIH0gY2F0Y2ggKGUpIHsK
KyAgICAgICAgZXJyb3JUaHJvd24gPSB0cnVlOworICAgICAgICBlcnJvciA9IGU7CisgICAgfQor
ICAgIGlmICghZXJyb3JUaHJvd24pCisgICAgICAgIHRocm93IG5ldyBFcnJvcignbm90IHRocm93
bicpOworICAgIGlmIChTdHJpbmcoZXJyb3IpICE9PSBlcnJvck1lc3NhZ2UpCisgICAgICAgIHRo
cm93IG5ldyBFcnJvcihgYmFkIGVycm9yOiAke1N0cmluZyhlcnJvcil9YCk7Cit9CisKKyhmdW5j
dGlvbiAoKSB7CisgICAgZnVuY3Rpb24gdGFyZ2V0KG9iamVjdCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBPYmplY3QuZ2V0UHJvdG90eXBlT2Yob2JqZWN0KTsKKyAgICB9CisgICAgbm9JbmxpbmUo
dGFyZ2V0KTsKKworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMWUzOyArK2kpCisgICAgICAgIHNo
b3VsZEJlKHRhcmdldCh7fSksIE9iamVjdC5wcm90b3R5cGUpOworfSgpKTsKKworKGZ1bmN0aW9u
ICgpIHsKKyAgICBmdW5jdGlvbiB0YXJnZXQob2JqZWN0KQorICAgIHsKKyAgICAgICAgcmV0dXJu
IE9iamVjdC5nZXRQcm90b3R5cGVPZihvYmplY3QpOworICAgIH0KKyAgICBub0lubGluZSh0YXJn
ZXQpOworCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxZTM7ICsraSkgeworICAgICAgICBzaG91
bGRUaHJvdygoKSA9PiB0YXJnZXQobnVsbCksIGBUeXBlRXJyb3I6IG51bGwgaXMgbm90IGFuIG9i
amVjdCAoZXZhbHVhdGluZyAnT2JqZWN0LmdldFByb3RvdHlwZU9mKG9iamVjdCknKWApOworICAg
ICAgICBzaG91bGRUaHJvdygoKSA9PiB0YXJnZXQodW5kZWZpbmVkKSwgYFR5cGVFcnJvcjogdW5k
ZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ09iamVjdC5nZXRQcm90b3R5cGVP
ZihvYmplY3QpJylgKTsKKyAgICB9Cit9KCkpOworCisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0
aW9uIHRhcmdldChvYmplY3QpCisgICAgeworICAgICAgICByZXR1cm4gT2JqZWN0LmdldFByb3Rv
dHlwZU9mKG9iamVjdCk7CisgICAgfQorICAgIG5vSW5saW5lKHRhcmdldCk7CisKKyAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IDFlMzsgKytpKQorICAgICAgICBzaG91bGRCZSh0YXJnZXQoIkNvY29h
IiksIFN0cmluZy5wcm90b3R5cGUpOworfSgpKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5j
dGlvbiB0YXJnZXQob2JqZWN0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIE9iamVjdC5nZXRQcm90
b3R5cGVPZihvYmplY3QpOworICAgIH0KKyAgICBub0lubGluZSh0YXJnZXQpOworCisgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCAxZTM7ICsraSkKKyAgICAgICAgc2hvdWxkQmUodGFyZ2V0KDQyKSwg
TnVtYmVyLnByb3RvdHlwZSk7Cit9KCkpOworCisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9u
IHRhcmdldChvYmplY3QpCisgICAgeworICAgICAgICByZXR1cm4gT2JqZWN0LmdldFByb3RvdHlw
ZU9mKG9iamVjdCk7CisgICAgfQorICAgIG5vSW5saW5lKHRhcmdldCk7CisKKyAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IDFlMzsgKytpKQorICAgICAgICBzaG91bGRCZSh0YXJnZXQoNDIuMTk1KSwg
TnVtYmVyLnByb3RvdHlwZSk7Cit9KCkpOworCisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9u
IHRhcmdldChvYmplY3QpCisgICAgeworICAgICAgICByZXR1cm4gT2JqZWN0LmdldFByb3RvdHlw
ZU9mKG9iamVjdCk7CisgICAgfQorICAgIG5vSW5saW5lKHRhcmdldCk7CisKKyAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IDFlMzsgKytpKQorICAgICAgICBzaG91bGRCZSh0YXJnZXQodHJ1ZSksIEJv
b2xlYW4ucHJvdG90eXBlKTsKK30oKSk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAgZnVuY3Rpb24g
dGFyZ2V0KG9iamVjdCkKKyAgICB7CisgICAgICAgIHJldHVybiBPYmplY3QuZ2V0UHJvdG90eXBl
T2Yob2JqZWN0KTsKKyAgICB9CisgICAgbm9JbmxpbmUodGFyZ2V0KTsKKworICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgMWUzOyArK2kpCisgICAgICAgIHNob3VsZEJlKHRhcmdldChTeW1ib2woIkNv
Y29hIikpLCBTeW1ib2wucHJvdG90eXBlKTsKK30oKSk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAg
ZnVuY3Rpb24gdGFyZ2V0KG9iamVjdCkKKyAgICB7CisgICAgICAgIHJldHVybiBPYmplY3QuZ2V0
UHJvdG90eXBlT2Yob2JqZWN0KTsKKyAgICB9CisgICAgbm9JbmxpbmUodGFyZ2V0KTsKKworICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgMWUzOyArK2kpIHsKKyAgICAgICAgc2hvdWxkQmUodGFyZ2V0
KCJDb2NvYSIpLCBTdHJpbmcucHJvdG90eXBlKTsKKyAgICAgICAgc2hvdWxkQmUodGFyZ2V0KDQy
KSwgTnVtYmVyLnByb3RvdHlwZSk7CisgICAgICAgIHNob3VsZEJlKHRhcmdldCg0Mi4xOTUpLCBO
dW1iZXIucHJvdG90eXBlKTsKKyAgICAgICAgc2hvdWxkQmUodGFyZ2V0KHRydWUpLCBCb29sZWFu
LnByb3RvdHlwZSk7CisgICAgICAgIHNob3VsZEJlKHRhcmdldChTeW1ib2woIkNvY29hIikpLCBT
eW1ib2wucHJvdG90eXBlKTsKKyAgICB9Cit9KCkpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJl
c3MvZGZnLXJlZmxlY3QtZ2V0LXByb3RvdHlwZS1vZi5qcyBiL0pTVGVzdHMvc3RyZXNzL2RmZy1y
ZWZsZWN0LWdldC1wcm90b3R5cGUtb2YuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2M4ODhmZjkwMjE1ZjY5ODVi
MDIxNDg2MjE4ZWE0NGFlZjM4MmVkMQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNz
L2RmZy1yZWZsZWN0LWdldC1wcm90b3R5cGUtb2YuanMKQEAgLTAsMCArMSw1OCBAQAorZnVuY3Rp
b24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkKK3sKKyAgICBpZiAoYWN0dWFsICE9PSBleHBl
Y3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOwor
fQorCitmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJvck1lc3NhZ2UpIHsKKyAgICB2YXIg
ZXJyb3JUaHJvd24gPSBmYWxzZTsKKyAgICB2YXIgZXJyb3IgPSBudWxsOworICAgIHRyeSB7Cisg
ICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9yVGhyb3duID0g
dHJ1ZTsKKyAgICAgICAgZXJyb3IgPSBlOworICAgIH0KKyAgICBpZiAoIWVycm9yVGhyb3duKQor
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCB0aHJvd24nKTsKKyAgICBpZiAoU3RyaW5nKGVy
cm9yKSAhPT0gZXJyb3JNZXNzYWdlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCBlcnJv
cjogJHtTdHJpbmcoZXJyb3IpfWApOworfQorCisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9u
IHRhcmdldChvYmplY3QpCisgICAgeworICAgICAgICByZXR1cm4gUmVmbGVjdC5nZXRQcm90b3R5
cGVPZihvYmplY3QpOworICAgIH0KKyAgICBub0lubGluZSh0YXJnZXQpOworCisgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCAxZTM7ICsraSkKKyAgICAgICAgc2hvdWxkQmUodGFyZ2V0KHt9KSwgT2Jq
ZWN0LnByb3RvdHlwZSk7Cit9KCkpOworCisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9uIHRh
cmdldChvYmplY3QpCisgICAgeworICAgICAgICByZXR1cm4gUmVmbGVjdC5nZXRQcm90b3R5cGVP
ZihvYmplY3QpOworICAgIH0KKyAgICBub0lubGluZSh0YXJnZXQpOworCisgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCAxZTM7ICsraSkgeworICAgICAgICBzaG91bGRUaHJvdygoKSA9PiB0YXJnZXQo
bnVsbCksIGBUeXBlRXJyb3I6IFJlZmxlY3QuZ2V0UHJvdG90eXBlT2YgcmVxdWlyZXMgdGhlIGZp
cnN0IGFyZ3VtZW50IGJlIGFuIG9iamVjdGApOworICAgICAgICBzaG91bGRUaHJvdygoKSA9PiB0
YXJnZXQodW5kZWZpbmVkKSwgYFR5cGVFcnJvcjogUmVmbGVjdC5nZXRQcm90b3R5cGVPZiByZXF1
aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYW4gb2JqZWN0YCk7CisgICAgfQorfSgpKTsKKwor
KGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiB0YXJnZXQob2JqZWN0KQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIFJlZmxlY3QuZ2V0UHJvdG90eXBlT2Yob2JqZWN0KTsKKyAgICB9CisgICAgbm9J
bmxpbmUodGFyZ2V0KTsKKworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMWUzOyArK2kpIHsKKyAg
ICAgICAgc2hvdWxkVGhyb3coKCkgPT4gdGFyZ2V0KCJDb2NvYSIpLCBgVHlwZUVycm9yOiBSZWZs
ZWN0LmdldFByb3RvdHlwZU9mIHJlcXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhbiBvYmpl
Y3RgKTsKKyAgICAgICAgc2hvdWxkVGhyb3coKCkgPT4gdGFyZ2V0KDQyKSwgYFR5cGVFcnJvcjog
UmVmbGVjdC5nZXRQcm90b3R5cGVPZiByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYW4g
b2JqZWN0YCk7CisgICAgICAgIHNob3VsZFRocm93KCgpID0+IHRhcmdldCh0cnVlKSwgYFR5cGVF
cnJvcjogUmVmbGVjdC5nZXRQcm90b3R5cGVPZiByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQg
YmUgYW4gb2JqZWN0YCk7CisgICAgfQorfSgpKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNz
L29iamVjdC1nZXQtcHJvdG90eXBlLW9mLWZpbHRlcmVkLmpzIGIvSlNUZXN0cy9zdHJlc3Mvb2Jq
ZWN0LWdldC1wcm90b3R5cGUtb2YtZmlsdGVyZWQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTFhMDgwOGQwOTgx
YmYzNjY5ZmVjOWYxN2FmMDE5ZGUwMzI5ZjFhMgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMv
c3RyZXNzL29iamVjdC1nZXQtcHJvdG90eXBlLW9mLWZpbHRlcmVkLmpzCkBAIC0wLDAgKzEsNjQg
QEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpCit7CisgICAgaWYgKGFjdHVh
bCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsg
YWN0dWFsKTsKK30KKworZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJyb3JNZXNzYWdlKSB7
CisgICAgdmFyIGVycm9yVGhyb3duID0gZmFsc2U7CisgICAgdmFyIGVycm9yID0gbnVsbDsKKyAg
ICB0cnkgeworICAgICAgICBmdW5jKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBlcnJv
clRocm93biA9IHRydWU7CisgICAgICAgIGVycm9yID0gZTsKKyAgICB9CisgICAgaWYgKCFlcnJv
clRocm93bikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdub3QgdGhyb3duJyk7CisgICAgaWYg
KFN0cmluZyhlcnJvcikgIT09IGVycm9yTWVzc2FnZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9y
KGBiYWQgZXJyb3I6ICR7U3RyaW5nKGVycm9yKX1gKTsKK30KKworLy8gSW4gdGhpcyBjYXNlLCB3
ZSBjYW5ub3QgaGFuZGxlIGl0IGFzIEdldFByb3RvdHlwZU9mIHNpbmNlIEdldEJ5SWQgaXMgb3Bh
cXVlLgorCisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9uIHRhcmdldChvYmplY3QpCisgICAg
eworICAgICAgICByZXR1cm4gT2JqZWN0LmdldFByb3RvdHlwZU9mKG9iamVjdCk7CisgICAgfQor
ICAgIG5vSW5saW5lKHRhcmdldCk7CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDFlNDsgKytp
KSB7CisgICAgICAgIHZhciBvYmplY3QgPSB7fTsKKyAgICAgICAgb2JqZWN0W2BDb2NvYSR7aX1g
XSA9IGBDb2NvYWA7CisgICAgICAgIHNob3VsZEJlKHRhcmdldChvYmplY3QpLCBPYmplY3QucHJv
dG90eXBlKTsKKyAgICB9Cit9KCkpOworCisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9uIHRh
cmdldChvYmplY3QpCisgICAgeworICAgICAgICByZXR1cm4gT2JqZWN0LmdldFByb3RvdHlwZU9m
KG9iamVjdCk7CisgICAgfQorICAgIG5vSW5saW5lKHRhcmdldCk7CisKKyAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IDFlNDsgKytpKSB7CisgICAgICAgIHZhciBhcnJheSA9IFtdOworICAgICAgICBh
cnJheVtgQ29jb2Eke2l9YF0gPSBgQ29jb2FgOworICAgICAgICBzaG91bGRCZSh0YXJnZXQoYXJy
YXkpLCBBcnJheS5wcm90b3R5cGUpOworICAgIH0KK30oKSk7CisKKyhmdW5jdGlvbiAoKSB7Cisg
ICAgZnVuY3Rpb24gdGFyZ2V0KG9iamVjdCkKKyAgICB7CisgICAgICAgIHJldHVybiBPYmplY3Qu
Z2V0UHJvdG90eXBlT2Yob2JqZWN0KTsKKyAgICB9CisgICAgbm9JbmxpbmUodGFyZ2V0KTsKKwor
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAgICAgICAgZnVuY3Rpb24gQ29j
b2EoKSB7IH0KKyAgICAgICAgQ29jb2FbYENvY29hJHtpfWBdID0gYENvY29hYDsKKyAgICAgICAg
c2hvdWxkQmUodGFyZ2V0KENvY29hKSwgRnVuY3Rpb24ucHJvdG90eXBlKTsKKyAgICB9Cit9KCkp
OwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mvb2JqZWN0LWdldC1wcm90b3R5cGUtb2YtbW9u
by1wcm90by5qcyBiL0pTVGVzdHMvc3RyZXNzL29iamVjdC1nZXQtcHJvdG90eXBlLW9mLW1vbm8t
cHJvdG8uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNWUwNzU0ZTIwZjBiNWJiMTZlZmJiNTZmYjljNDI2ZmFkMmZl
NmMzYQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL29iamVjdC1nZXQtcHJvdG90
eXBlLW9mLW1vbm8tcHJvdG8uanMKQEAgLTAsMCArMSwzNCBAQAorZnVuY3Rpb24gc2hvdWxkQmUo
YWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9u
IG1ha2VQb2x5UHJvdG9PYmplY3QoKSB7CisgICAgZnVuY3Rpb24gZm9vKCkgeworICAgICAgICBj
bGFzcyBDIHsKKyAgICAgICAgICAgIGNvbnN0cnVjdG9yKCkgeworICAgICAgICAgICAgICAgIHRo
aXMuX2ZpZWxkID0gNDI7CisgICAgICAgICAgICAgICAgdGhpcy5oZWxsbyA9IDMzOworICAgICAg
ICAgICAgfQorICAgICAgICB9OworICAgICAgICByZXR1cm4gbmV3IEM7CisgICAgfQorICAgIGZv
ciAobGV0IGkgPSAwOyBpIDwgMTU7ICsraSkKKyAgICAgICAgZm9vKCk7CisgICAgcmV0dXJuIGZv
bygpOworfQorCitmdW5jdGlvbiB0YXJnZXQob2JqZWN0KQoreworICAgIHJldHVybiBbb2JqZWN0
LmhlbGxvLCBPYmplY3QuZ2V0UHJvdG90eXBlT2Yob2JqZWN0KV07Cit9Citub0lubGluZSh0YXJn
ZXQpOworCit2YXIgcG9seVByb3RvT2JqZWN0ID0gbWFrZVBvbHlQcm90b09iamVjdCgpOwordmFy
IHByb3RvdHlwZSA9IFJlZmxlY3QuZ2V0UHJvdG90eXBlT2YocG9seVByb3RvT2JqZWN0KTsKK3Zh
ciBvYmplY3QxID0geyBfX3Byb3RvX186IHByb3RvdHlwZSwgaGVsbG86IDQ0IH07Cit2YXIgb2Jq
ZWN0MiA9IHsgaGVsbG86IDQ1IH07Citmb3IgKHZhciBpID0gMDsgaSA8IDFlNTsgKytpKSB7Cisg
ICAgc2hvdWxkQmUodGFyZ2V0KG9iamVjdDEpWzFdLCBwcm90b3R5cGUpOworICAgIHNob3VsZEJl
KHRhcmdldChvYmplY3QyKVsxXSwgT2JqZWN0LnByb3RvdHlwZSk7Cit9CmRpZmYgLS1naXQgYS9K
U1Rlc3RzL3N0cmVzcy9vYmplY3QtZ2V0LXByb3RvdHlwZS1vZi1wb2x5LW1vbm8tcHJvdG8uanMg
Yi9KU1Rlc3RzL3N0cmVzcy9vYmplY3QtZ2V0LXByb3RvdHlwZS1vZi1wb2x5LW1vbm8tcHJvdG8u
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uM2ZhMDllZjA5NmQyNmM3MjRmMjQzNzA1ZWNhYjA5OTllMTdjMDcwNQot
LS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL29iamVjdC1nZXQtcHJvdG90eXBlLW9m
LXBvbHktbW9uby1wcm90by5qcwpAQCAtMCwwICsxLDMzIEBACitmdW5jdGlvbiBzaG91bGRCZShh
Y3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAg
IHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKworZnVuY3Rpb24g
bWFrZVBvbHlQcm90b09iamVjdCgpIHsKKyAgICBmdW5jdGlvbiBmb28oKSB7CisgICAgICAgIGNs
YXNzIEMgeworICAgICAgICAgICAgY29uc3RydWN0b3IoKSB7CisgICAgICAgICAgICAgICAgdGhp
cy5fZmllbGQgPSA0MjsKKyAgICAgICAgICAgICAgICB0aGlzLmhlbGxvID0gMzM7CisgICAgICAg
ICAgICB9CisgICAgICAgIH07CisgICAgICAgIHJldHVybiBuZXcgQzsKKyAgICB9CisgICAgZm9y
IChsZXQgaSA9IDA7IGkgPCAxNTsgKytpKQorICAgICAgICBmb28oKTsKKyAgICByZXR1cm4gZm9v
KCk7Cit9CisKK2Z1bmN0aW9uIHRhcmdldChvYmplY3QpCit7CisgICAgcmV0dXJuIFtvYmplY3Qu
aGVsbG8sIE9iamVjdC5nZXRQcm90b3R5cGVPZihvYmplY3QpXTsKK30KK25vSW5saW5lKHRhcmdl
dCk7CisKK3ZhciBwb2x5UHJvdG9PYmplY3QgPSBtYWtlUG9seVByb3RvT2JqZWN0KCk7Cit2YXIg
cHJvdG90eXBlID0gUmVmbGVjdC5nZXRQcm90b3R5cGVPZihwb2x5UHJvdG9PYmplY3QpOwordmFy
IG9iamVjdCA9IHsgX19wcm90b19fOiBwcm90b3R5cGUsIGhlbGxvOiA0NCB9OworZm9yICh2YXIg
aSA9IDA7IGkgPCAxZTU7ICsraSkgeworICAgIHNob3VsZEJlKHRhcmdldChwb2x5UHJvdG9PYmpl
Y3QpWzFdLCBwcm90b3R5cGUpOworICAgIHNob3VsZEJlKHRhcmdldChvYmplY3QpWzFdLCBwcm90
b3R5cGUpOworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mvb2JqZWN0LWdldC1wcm90b3R5
cGUtb2YtcG9seS1wcm90by5qcyBiL0pTVGVzdHMvc3RyZXNzL29iamVjdC1nZXQtcHJvdG90eXBl
LW9mLXBvbHktcHJvdG8uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDNkNjQ5ZDc0M2Y4MmI2NTkxMTdhMjU0MjY0
Y2JmOWY0OTNkMjA2OQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL29iamVjdC1n
ZXQtcHJvdG90eXBlLW9mLXBvbHktcHJvdG8uanMKQEAgLTAsMCArMSwzMCBAQAorZnVuY3Rpb24g
c2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVk
KQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisK
K2Z1bmN0aW9uIG1ha2VQb2x5UHJvdG9PYmplY3QoKSB7CisgICAgZnVuY3Rpb24gZm9vKCkgewor
ICAgICAgICBjbGFzcyBDIHsKKyAgICAgICAgICAgIGNvbnN0cnVjdG9yKCkgeworICAgICAgICAg
ICAgICAgIHRoaXMuX2ZpZWxkID0gNDI7CisgICAgICAgICAgICAgICAgdGhpcy5oZWxsbyA9IDMz
OworICAgICAgICAgICAgfQorICAgICAgICB9OworICAgICAgICByZXR1cm4gbmV3IEM7CisgICAg
fQorICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTU7ICsraSkKKyAgICAgICAgZm9vKCk7CisgICAg
cmV0dXJuIGZvbygpOworfQorCitmdW5jdGlvbiB0YXJnZXQob2JqZWN0KQoreworICAgIHJldHVy
biBbb2JqZWN0LmhlbGxvLCBPYmplY3QuZ2V0UHJvdG90eXBlT2Yob2JqZWN0KV07Cit9Citub0lu
bGluZSh0YXJnZXQpOworCit2YXIgcG9seVByb3RvT2JqZWN0ID0gbWFrZVBvbHlQcm90b09iamVj
dCgpOwordmFyIHByb3RvdHlwZSA9IFJlZmxlY3QuZ2V0UHJvdG90eXBlT2YocG9seVByb3RvT2Jq
ZWN0KTsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU1OyArK2kpCisgICAgc2hvdWxkQmUodGFyZ2V0
KHBvbHlQcm90b09iamVjdClbMV0sIHByb3RvdHlwZSk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0
cmVzcy9vYmplY3QtcHJvdG8tZ2V0dGVyLWZpbHRlcmVkLmpzIGIvSlNUZXN0cy9zdHJlc3Mvb2Jq
ZWN0LXByb3RvLWdldHRlci1maWx0ZXJlZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zM2ZiNTI3YzU2ZDkzNzc1
M2E3N2YzMjhmNzMwMjQwNzZhZGMwYzM3Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJl
c3Mvb2JqZWN0LXByb3RvLWdldHRlci1maWx0ZXJlZC5qcwpAQCAtMCwwICsxLDYyIEBACitmdW5j
dGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKQoreworICAgIGlmIChhY3R1YWwgIT09IGV4
cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7
Cit9CisKK2Z1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMsIGVycm9yTWVzc2FnZSkgeworICAgIHZh
ciBlcnJvclRocm93biA9IGZhbHNlOworICAgIHZhciBlcnJvciA9IG51bGw7CisgICAgdHJ5IHsK
KyAgICAgICAgZnVuYygpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZXJyb3JUaHJvd24g
PSB0cnVlOworICAgICAgICBlcnJvciA9IGU7CisgICAgfQorICAgIGlmICghZXJyb3JUaHJvd24p
CisgICAgICAgIHRocm93IG5ldyBFcnJvcignbm90IHRocm93bicpOworICAgIGlmIChTdHJpbmco
ZXJyb3IpICE9PSBlcnJvck1lc3NhZ2UpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIGVy
cm9yOiAke1N0cmluZyhlcnJvcil9YCk7Cit9CisKKyhmdW5jdGlvbiAoKSB7CisgICAgZnVuY3Rp
b24gdGFyZ2V0KG9iamVjdCkKKyAgICB7CisgICAgICAgIHJldHVybiBvYmplY3QuX19wcm90b19f
OworICAgIH0KKyAgICBub0lubGluZSh0YXJnZXQpOworCisgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCAxZTQ7ICsraSkgeworICAgICAgICB2YXIgb2JqZWN0ID0ge307CisgICAgICAgIG9iamVjdFtg
Q29jb2Eke2l9YF0gPSBgQ29jb2FgOworICAgICAgICBzaG91bGRCZSh0YXJnZXQob2JqZWN0KSwg
T2JqZWN0LnByb3RvdHlwZSk7CisgICAgfQorfSgpKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBm
dW5jdGlvbiB0YXJnZXQob2JqZWN0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIG9iamVjdC5fX3By
b3RvX187CisgICAgfQorICAgIG5vSW5saW5lKHRhcmdldCk7CisKKyAgICBmb3IgKHZhciBpID0g
MDsgaSA8IDFlNDsgKytpKSB7CisgICAgICAgIHZhciBhcnJheSA9IFtdOworICAgICAgICBhcnJh
eVtgQ29jb2Eke2l9YF0gPSBgQ29jb2FgOworICAgICAgICBzaG91bGRCZSh0YXJnZXQoYXJyYXkp
LCBBcnJheS5wcm90b3R5cGUpOworICAgIH0KK30oKSk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAg
ZnVuY3Rpb24gdGFyZ2V0KG9iamVjdCkKKyAgICB7CisgICAgICAgIHJldHVybiBvYmplY3QuX19w
cm90b19fOworICAgIH0KKyAgICBub0lubGluZSh0YXJnZXQpOworCisgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCAxZTQ7ICsraSkgeworICAgICAgICBmdW5jdGlvbiBDb2NvYSgpIHsgfQorICAgICAg
ICBDb2NvYVtgQ29jb2Eke2l9YF0gPSBgQ29jb2FgOworICAgICAgICBzaG91bGRCZSh0YXJnZXQo
Q29jb2EpLCBGdW5jdGlvbi5wcm90b3R5cGUpOworICAgIH0KK30oKSk7CmRpZmYgLS1naXQgYS9K
U1Rlc3RzL3N0cmVzcy9vYmplY3QtcHJvdG8tZ2V0dGVyLXBvbHktbW9uby1wcm90by5qcyBiL0pT
VGVzdHMvc3RyZXNzL29iamVjdC1wcm90by1nZXR0ZXItcG9seS1tb25vLXByb3RvLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjFjYzc3ZTU4YWM3NjlhZTJmZTBkM2I1NjE2MTVhODdlNmIyMjQ0NDUKLS0tIC9kZXYv
bnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9vYmplY3QtcHJvdG8tZ2V0dGVyLXBvbHktbW9uby1w
cm90by5qcwpAQCAtMCwwICsxLDM0IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVj
dGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBF
cnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKworZnVuY3Rpb24gbWFrZVBvbHlQcm90
b09iamVjdCgpIHsKKyAgICBmdW5jdGlvbiBmb28oKSB7CisgICAgICAgIGNsYXNzIEMgeworICAg
ICAgICAgICAgY29uc3RydWN0b3IoKSB7CisgICAgICAgICAgICAgICAgdGhpcy5fZmllbGQgPSA0
MjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICAgICAgcmV0dXJuIG5ldyBDOworICAg
IH0KKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDE1OyArK2kpCisgICAgICAgIGZvbygpOworICAg
IHJldHVybiBmb28oKTsKK30KKworZnVuY3Rpb24gdGFyZ2V0KG9iamVjdCkKK3sKKyAgICByZXR1
cm4gb2JqZWN0Ll9fcHJvdG9fXzsKK30KK25vSW5saW5lKHRhcmdldCk7CisKK3ZhciBwb2x5UHJv
dG9PYmplY3QgPSBtYWtlUG9seVByb3RvT2JqZWN0KCk7Cit2YXIgcHJvdG90eXBlID0gUmVmbGVj
dC5nZXRQcm90b3R5cGVPZihwb2x5UHJvdG9PYmplY3QpOwordmFyIG9iamVjdCA9IHsKKyAgICBf
X3Byb3RvX186IHByb3RvdHlwZQorfTsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU1OyArK2kpIHsK
KyAgICBzaG91bGRCZSh0YXJnZXQocG9seVByb3RvT2JqZWN0KSwgcHJvdG90eXBlKTsKKyAgICBz
aG91bGRCZSh0YXJnZXQob2JqZWN0KSwgcHJvdG90eXBlKTsKK30KZGlmZiAtLWdpdCBhL0pTVGVz
dHMvc3RyZXNzL29iamVjdC1wcm90by1nZXR0ZXItcG9seS1wcm90by5qcyBiL0pTVGVzdHMvc3Ry
ZXNzL29iamVjdC1wcm90by1nZXR0ZXItcG9seS1wcm90by5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YjhlZmQ5
MTU1MWI1YmFmYjE4ZDhiZDg2YmFiNmQxMTc4NDZlZGZjCi0tLSAvZGV2L251bGwKKysrIGIvSlNU
ZXN0cy9zdHJlc3Mvb2JqZWN0LXByb3RvLWdldHRlci1wb2x5LXByb3RvLmpzCkBAIC0wLDAgKzEs
MjkgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0
dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcg
KyBhY3R1YWwpOworfQorCitmdW5jdGlvbiBtYWtlUG9seVByb3RvT2JqZWN0KCkgeworICAgIGZ1
bmN0aW9uIGZvbygpIHsKKyAgICAgICAgY2xhc3MgQyB7CisgICAgICAgICAgICBjb25zdHJ1Y3Rv
cigpIHsKKyAgICAgICAgICAgICAgICB0aGlzLl9maWVsZCA9IDQyOworICAgICAgICAgICAgfQor
ICAgICAgICB9OworICAgICAgICByZXR1cm4gbmV3IEM7CisgICAgfQorICAgIGZvciAobGV0IGkg
PSAwOyBpIDwgMTU7ICsraSkKKyAgICAgICAgZm9vKCk7CisgICAgcmV0dXJuIGZvbygpOworfQor
CitmdW5jdGlvbiB0YXJnZXQob2JqZWN0KQoreworICAgIHJldHVybiBvYmplY3QuX19wcm90b19f
OworfQorbm9JbmxpbmUodGFyZ2V0KTsKKwordmFyIHBvbHlQcm90b09iamVjdCA9IG1ha2VQb2x5
UHJvdG9PYmplY3QoKTsKK3ZhciBwcm90b3R5cGUgPSBSZWZsZWN0LmdldFByb3RvdHlwZU9mKHBv
bHlQcm90b09iamVjdCk7Citmb3IgKHZhciBpID0gMDsgaSA8IDFlNTsgKytpKQorICAgIHNob3Vs
ZEJlKHRhcmdldChwb2x5UHJvdG9PYmplY3QpLCBwcm90b3R5cGUpOwpkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy9zdHJlc3Mvb2JqZWN0LXByb3RvdHlwZS1wcm90by1hY2Nlc3NvcnMtc2hvdWxkLXRocm93
LW9uLXVuZGVmaW5lZC10aGlzLmpzIGIvSlNUZXN0cy9zdHJlc3Mvb2JqZWN0LXByb3RvdHlwZS1w
cm90by1hY2Nlc3NvcnMtc2hvdWxkLXRocm93LW9uLXVuZGVmaW5lZC10aGlzLmpzCmluZGV4IDVm
ZmI0YWFhZDY3OWVlYjM2NTMwMGQxZTlhODMwM2U3YjI1OTQ5OTMuLjVkNDUwNWI3Nzg5Mzg2ODM1
ODBjYWZiNDNmYWM0Njk5NDJiZTI3NTEgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL29iamVj
dC1wcm90b3R5cGUtcHJvdG8tYWNjZXNzb3JzLXNob3VsZC10aHJvdy1vbi11bmRlZmluZWQtdGhp
cy5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9vYmplY3QtcHJvdG90eXBlLXByb3RvLWFjY2Vzc29y
cy1zaG91bGQtdGhyb3ctb24tdW5kZWZpbmVkLXRoaXMuanMKQEAgLTM0LDUgKzM0LDUgQEAgZnVu
Y3Rpb24gcnVuVGVzdCh0ZXN0SWQsIHRlc3QsIGV4cGVjdGVkUmVzdWx0LCBleHBlY3RlZEV4Y2Vw
dGlvbikgewogICAgIH0KIH0KIAotcnVuVGVzdCgxMDAwMCwgdGVzdEludm9rZUdldHRlciwgdW5k
ZWZpbmVkLCAiVHlwZUVycm9yOiBPYmplY3QucHJvdG90eXBlLl9fcHJvdG9fXyBjYWxsZWQgb24g
bnVsbCBvciB1bmRlZmluZWQiKTsKK3J1blRlc3QoMTAwMDAsIHRlc3RJbnZva2VHZXR0ZXIsIHVu
ZGVmaW5lZCwgIlR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRp
bmcgJ2dldHRlcigpJykiKTsKIHJ1blRlc3QoMTAxMDAsIHRlc3RJbnZva2VTZXR0ZXIsIHVuZGVm
aW5lZCwgIlR5cGVFcnJvcjogT2JqZWN0LnByb3RvdHlwZS5fX3Byb3RvX18gY2FsbGVkIG9uIG51
bGwgb3IgdW5kZWZpbmVkIik7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9zdHJpbmctcHJv
dG8uanMgYi9KU1Rlc3RzL3N0cmVzcy9zdHJpbmctcHJvdG8uanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGRjZjAx
MmEwNzYyZmI4NTVhZTJjNDU4ZDI2NjY5ODcwYWU5MDg1OAotLS0gL2Rldi9udWxsCisrKyBiL0pT
VGVzdHMvc3RyZXNzL3N0cmluZy1wcm90by5qcwpAQCAtMCwwICsxLDEyIEBACitmdW5jdGlvbiBz
aG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQp
CisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKwor
ZnVuY3Rpb24gdGFyZ2V0KHZhbHVlKQoreworICAgIHJldHVybiB2YWx1ZS5fX3Byb3RvX187Cit9
Citub0lubGluZSh0YXJnZXQpOworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTY7ICsraSkKKyAgICBz
aG91bGRCZSh0YXJnZXQoIkNvY29hIiksIFN0cmluZy5wcm90b3R5cGUpCg==
</data>
<flag name="review"
          id="343078"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>