<?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>162108</bug_id>
          
          <creation_ts>2016-09-16 18:07:30 -0700</creation_ts>
          <short_desc>[JSC] Add a new byte code op_define_property instead of calling defineProperty</short_desc>
          <delta_ts>2016-10-11 21:22:17 -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>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>162111</dependson>
    
    <dependson>162964</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1230732</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-09-16 18:07:30 -0700</bug_when>
    <thetext>We now sometimes call defineProperty to set class methods etc.
But, it&apos;s super costly because it creates a new object for property descriptor.
This object is always allocated because defineProperty host function escapes it even in FTL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1230769</commentid>
    <comment_count>1</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-09-16 22:55:29 -0700</bug_when>
    <thetext>BTW, I&apos;ve just come up with the idea, moving defineProperty to builtin js and wrapping this bytecode. This allows defineProperty sinking its parameter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1233081</commentid>
    <comment_count>2</comment_count>
      <attachid>289730</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-09-23 18:15:31 -0700</bug_when>
    <thetext>Created attachment 289730
Patch

WIP: 64bit is done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1233572</commentid>
    <comment_count>3</comment_count>
      <attachid>289867</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-09-26 14:20:41 -0700</bug_when>
    <thetext>Created attachment 289867
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1233573</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-26 14:22:48 -0700</bug_when>
    <thetext>Attachment 289867 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/DefinePropertyAttributes.h:34:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 1 in 37 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>1233579</commentid>
    <comment_count>5</comment_count>
      <attachid>289870</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-09-26 14:32:22 -0700</bug_when>
    <thetext>Created attachment 289870
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1233580</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-26 14:33:39 -0700</bug_when>
    <thetext>Attachment 289870 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/DefinePropertyAttributes.h:34:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 1 in 37 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>1233591</commentid>
    <comment_count>7</comment_count>
      <attachid>289876</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-09-26 14:47:36 -0700</bug_when>
    <thetext>Created attachment 289876
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1233594</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-26 14:49:39 -0700</bug_when>
    <thetext>Attachment 289876 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/DefinePropertyAttributes.h:34:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 1 in 37 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>1233634</commentid>
    <comment_count>9</comment_count>
      <attachid>289884</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-09-26 16:09:53 -0700</bug_when>
    <thetext>Created attachment 289884
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1233657</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-26 16:48:01 -0700</bug_when>
    <thetext>Attachment 289884 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/DefinePropertyAttributes.h:34:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 1 in 37 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>1233717</commentid>
    <comment_count>11</comment_count>
      <attachid>289910</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-09-26 21:20:03 -0700</bug_when>
    <thetext>Created attachment 289910
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1233720</commentid>
    <comment_count>12</comment_count>
      <attachid>289911</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-09-26 21:22:11 -0700</bug_when>
    <thetext>Created attachment 289911
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1233721</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-26 21:23:28 -0700</bug_when>
    <thetext>Attachment 289911 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/DefinePropertyAttributes.h:34:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 1 in 38 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>1233732</commentid>
    <comment_count>14</comment_count>
      <attachid>289915</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-09-26 22:23:58 -0700</bug_when>
    <thetext>Created attachment 289915
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1233734</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-26 22:26:58 -0700</bug_when>
    <thetext>Attachment 289915 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/DefinePropertyAttributes.h:34:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 1 in 38 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>1233928</commentid>
    <comment_count>16</comment_count>
      <attachid>289963</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-09-27 10:13:32 -0700</bug_when>
    <thetext>Created attachment 289963
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1233932</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-27 10:17:04 -0700</bug_when>
    <thetext>Attachment 289963 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/DefinePropertyAttributes.h:34:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 1 in 38 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>1233946</commentid>
    <comment_count>18</comment_count>
      <attachid>289968</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-09-27 10:33:55 -0700</bug_when>
    <thetext>Created attachment 289968
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1233951</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-27 10:37:04 -0700</bug_when>
    <thetext>Attachment 289968 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/DefinePropertyAttributes.h:34:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 1 in 38 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>1233963</commentid>
    <comment_count>20</comment_count>
      <attachid>289976</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-09-27 10:48:09 -0700</bug_when>
    <thetext>Created attachment 289976
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1233965</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-27 10:50:03 -0700</bug_when>
    <thetext>Attachment 289976 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/DefinePropertyAttributes.h:34:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 1 in 38 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>1233974</commentid>
    <comment_count>22</comment_count>
      <attachid>289976</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-09-27 10:59:49 -0700</bug_when>
    <thetext>Comment on attachment 289976
Patch

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

I&apos;ll look more closely later today.

&gt; Source/JavaScriptCore/ChangeLog:40
&gt; +        Run ES6SampleBench/Air 20 times. The result shows ~2% performance improvement.

Nice

&gt; Source/JavaScriptCore/jit/CCallHelpers.h:2497
&gt; +            ASSERT_WITH_MESSAGE(set.numberOfSetGPRs() == 4, &quot;Destinations should not be aliased.&quot;);

This assertion needs to be updated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1233978</commentid>
    <comment_count>23</comment_count>
      <attachid>289976</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-09-27 11:04:55 -0700</bug_when>
    <thetext>Comment on attachment 289976
Patch

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

&gt;&gt; Source/JavaScriptCore/jit/CCallHelpers.h:2497
&gt;&gt; +            ASSERT_WITH_MESSAGE(set.numberOfSetGPRs() == 4, &quot;Destinations should not be aliased.&quot;);
&gt; 
&gt; This assertion needs to be updated.

Thanks! Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1233979</commentid>
    <comment_count>24</comment_count>
      <attachid>289976</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-09-27 11:05:34 -0700</bug_when>
    <thetext>Comment on attachment 289976
Patch

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

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:3320
&gt; +        instructions().append(emitLoad(nullptr, jsNumber(attributes.rawRepresentation()))-&gt;index());

I wouldn&apos;t make this a JSValue. Why not just make it part of the instruction stream as an unsigned int and then part of the OpInfo in the DFG?

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:3326
&gt; +        instructions().append(emitLoad(nullptr, jsNumber(attributes.rawRepresentation()))-&gt;index());

Ditto

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:8657
&gt; +    SpeculateInt32Operand attributes(this, m_jit.graph().varArgChild(node, 3));
&gt; +    GPRReg attributesGPR = attributes.gpr();

Then this can just be a constant from OpInfo

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:8738
&gt; +    GPRReg attributesGPR = attributes.gpr();

And this</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1233981</commentid>
    <comment_count>25</comment_count>
      <attachid>289976</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-09-27 11:09:11 -0700</bug_when>
    <thetext>Comment on attachment 289976
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:38
&gt; +        at bytecode compiling time.

This is the reason why we pass this attributes as a register.

&gt;&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:3320
&gt;&gt; +        instructions().append(emitLoad(nullptr, jsNumber(attributes.rawRepresentation()))-&gt;index());
&gt; 
&gt; I wouldn&apos;t make this a JSValue. Why not just make it part of the instruction stream as an unsigned int and then part of the OpInfo in the DFG?

This is because we are planning to use this byte code later for Object.defineProperty implementation.
At that time, this bit representation is not defined statically at byte code compiling time.

&gt;&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:3326
&gt;&gt; +        instructions().append(emitLoad(nullptr, jsNumber(attributes.rawRepresentation()))-&gt;index());
&gt; 
&gt; Ditto

The same reason, to use this bytecode in Object.defineProperty later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1233983</commentid>
    <comment_count>26</comment_count>
      <attachid>289984</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-09-27 11:15:51 -0700</bug_when>
    <thetext>Created attachment 289984
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1233984</commentid>
    <comment_count>27</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-27 11:18:42 -0700</bug_when>
    <thetext>Attachment 289984 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/DefinePropertyAttributes.h:34:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 1 in 38 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>1236012</commentid>
    <comment_count>28</comment_count>
      <attachid>289984</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-10-03 18:03:08 -0700</bug_when>
    <thetext>Comment on attachment 289984
Patch

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

r=me with some suggestions.

&gt; Source/JavaScriptCore/ChangeLog:14
&gt; +        However, this has a problems. Every time we define a class method, we need to create

&quot;this has a problems&quot; =&gt; &quot;this approach has problems&quot;

&gt; Source/JavaScriptCore/ChangeLog:24
&gt; +        Originally, I attempted to create one bytecode, op_define_property. However, it takes too much

s/much/many

&gt; Source/JavaScriptCore/ChangeLog:25
&gt; +        children in DFG and uses so much registers in DFG. This leads tricky program in 32bit platforms.

s/much/many

&gt; Source/JavaScriptCore/ChangeLog:32
&gt; +        in comparison with JSValueOperand. To make children Cells even if we do not specify some accessors (for
&gt; +        example, { get: func, set: null } case), we fill registers with special throwTypeErrorFunction.

This seems weird. Why not just have a variable number of children in the DFG/FTL and then just pass in JSValue() to the C functions or something.

&gt; Source/JavaScriptCore/dfg/DFGFixupPhase.cpp:1617
&gt; +            fixEdge&lt;Int32Use&gt;(m_graph.varArgChild(node, 3));

This should be KnownInt32Use

&gt; Source/JavaScriptCore/dfg/DFGFixupPhase.cpp:1634
&gt; +            fixEdge&lt;Int32Use&gt;(m_graph.varArgChild(node, 4));

This should KnownInt32Use

&gt; Source/JavaScriptCore/dfg/DFGOperations.cpp:1002
&gt; +    base-&gt;methodTable(vm)-&gt;defineOwnProperty(base, exec, propertyName, descriptor, true);

It might be profitable to do this check:
if (base-&gt;methodTabale(vm)-&gt;defineOwnProperty == JSObject::defineOwnProperty) doADirectCall
else doVirtualMethodTableCall

&gt; Source/JavaScriptCore/dfg/DFGOperations.cpp:1045
&gt; +    base-&gt;methodTable(vm)-&gt;defineOwnProperty(base, exec, propertyName, descriptor, true);

ditto

&gt; Source/JavaScriptCore/runtime/CommonSlowPaths.cpp:947
&gt; +    base-&gt;methodTable(vm)-&gt;defineOwnProperty(base, exec, propertyName, descriptor, true);

ditto here about checking for a direct call.

&gt; Source/JavaScriptCore/runtime/DefinePropertyAttributes.h:96
&gt; +    TriState writable()

Suggestion: I&apos;d make these return true/false and have methods like hasWritable, hasConfigurable, etc. Seems like less of an information leak about the internal representation of this class.
Also, you could make these return Optional&lt;bool&gt; and then have the call sites instead of checking != MixedTriState just do:
if (Optional&lt;bool&gt; writable = d.writable()) ... 
Maybe Optional&lt;&gt; is the best way to go. That way you could also remove the hasGet, hasSet, etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236066</commentid>
    <comment_count>29</comment_count>
      <attachid>289984</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-03 22:13:42 -0700</bug_when>
    <thetext>Comment on attachment 289984
Patch

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

Thanks!

&gt;&gt; Source/JavaScriptCore/ChangeLog:14
&gt;&gt; +        However, this has a problems. Every time we define a class method, we need to create
&gt; 
&gt; &quot;this has a problems&quot; =&gt; &quot;this approach has problems&quot;

Fixed.

&gt;&gt; Source/JavaScriptCore/ChangeLog:24
&gt;&gt; +        Originally, I attempted to create one bytecode, op_define_property. However, it takes too much
&gt; 
&gt; s/much/many

Fixed.

&gt;&gt; Source/JavaScriptCore/ChangeLog:25
&gt;&gt; +        children in DFG and uses so much registers in DFG. This leads tricky program in 32bit platforms.
&gt; 
&gt; s/much/many

Fixed.

&gt;&gt; Source/JavaScriptCore/ChangeLog:32
&gt;&gt; +        example, { get: func, set: null } case), we fill registers with special throwTypeErrorFunction.
&gt; 
&gt; This seems weird. Why not just have a variable number of children in the DFG/FTL and then just pass in JSValue() to the C functions or something.

You mean keeping the number of children in DFG node&apos;s OpInfo, correct?
But if we take this design, we need to emit a byte code with embedded constant int. (When emitting byte code we should know the number of children).
So, when using it in Object.defineProperty, we need to write it like,

if (value case) {
    @defineDataProperty(..., value);
} if (getter || setter) {
    if (getter)
        @defineAccessorProperty(..., getter, 1);
    else
        @defineAccessorProperty(..., setter, 1);
} else {
    @defineAccessorProperty(..., getter, setter, 2);
}

instead of

if (value case)
    @defineDataProperty(..., value);
else
    @defineAccessorProperty(..., getter, setter);

&gt;&gt; Source/JavaScriptCore/dfg/DFGFixupPhase.cpp:1617
&gt;&gt; +            fixEdge&lt;Int32Use&gt;(m_graph.varArgChild(node, 3));
&gt; 
&gt; This should be KnownInt32Use

Done.

&gt;&gt; Source/JavaScriptCore/dfg/DFGFixupPhase.cpp:1634
&gt;&gt; +            fixEdge&lt;Int32Use&gt;(m_graph.varArgChild(node, 4));
&gt; 
&gt; This should KnownInt32Use

Done.

&gt;&gt; Source/JavaScriptCore/dfg/DFGOperations.cpp:1002
&gt;&gt; +    base-&gt;methodTable(vm)-&gt;defineOwnProperty(base, exec, propertyName, descriptor, true);
&gt; 
&gt; It might be profitable to do this check:
&gt; if (base-&gt;methodTabale(vm)-&gt;defineOwnProperty == JSObject::defineOwnProperty) doADirectCall
&gt; else doVirtualMethodTableCall

Nice. Fixed.

&gt;&gt; Source/JavaScriptCore/dfg/DFGOperations.cpp:1045
&gt;&gt; +    base-&gt;methodTable(vm)-&gt;defineOwnProperty(base, exec, propertyName, descriptor, true);
&gt; 
&gt; ditto

Fixed.

&gt;&gt; Source/JavaScriptCore/runtime/CommonSlowPaths.cpp:947
&gt;&gt; +    base-&gt;methodTable(vm)-&gt;defineOwnProperty(base, exec, propertyName, descriptor, true);
&gt; 
&gt; ditto here about checking for a direct call.

Done.

&gt;&gt; Source/JavaScriptCore/runtime/DefinePropertyAttributes.h:96
&gt;&gt; +    TriState writable()
&gt; 
&gt; Suggestion: I&apos;d make these return true/false and have methods like hasWritable, hasConfigurable, etc. Seems like less of an information leak about the internal representation of this class.
&gt; Also, you could make these return Optional&lt;bool&gt; and then have the call sites instead of checking != MixedTriState just do:
&gt; if (Optional&lt;bool&gt; writable = d.writable()) ... 
&gt; Maybe Optional&lt;&gt; is the best way to go. That way you could also remove the hasGet, hasSet, etc.

Sounds nice. Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236320</commentid>
    <comment_count>30</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-04 12:33:56 -0700</bug_when>
    <thetext>Committed r206778: &lt;http://trac.webkit.org/changeset/206778&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236537</commentid>
    <comment_count>31</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-10-04 22:45:07 -0700</bug_when>
    <thetext>(In reply to comment #29)
&gt; Comment on attachment 289984 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=289984&amp;action=review
&gt; 
&gt; Thanks!
&gt; 
&gt; &gt;&gt; Source/JavaScriptCore/ChangeLog:14
&gt; &gt;&gt; +        However, this has a problems. Every time we define a class method, we need to create
&gt; &gt; 
&gt; &gt; &quot;this has a problems&quot; =&gt; &quot;this approach has problems&quot;
&gt; 
&gt; Fixed.
&gt; 
&gt; &gt;&gt; Source/JavaScriptCore/ChangeLog:24
&gt; &gt;&gt; +        Originally, I attempted to create one bytecode, op_define_property. However, it takes too much
&gt; &gt; 
&gt; &gt; s/much/many
&gt; 
&gt; Fixed.
&gt; 
&gt; &gt;&gt; Source/JavaScriptCore/ChangeLog:25
&gt; &gt;&gt; +        children in DFG and uses so much registers in DFG. This leads tricky program in 32bit platforms.
&gt; &gt; 
&gt; &gt; s/much/many
&gt; 
&gt; Fixed.
&gt; 
&gt; &gt;&gt; Source/JavaScriptCore/ChangeLog:32
&gt; &gt;&gt; +        example, { get: func, set: null } case), we fill registers with special throwTypeErrorFunction.
&gt; &gt; 
&gt; &gt; This seems weird. Why not just have a variable number of children in the DFG/FTL and then just pass in JSValue() to the C functions or something.
&gt; 
&gt; You mean keeping the number of children in DFG node&apos;s OpInfo, correct?
&gt; But if we take this design, we need to emit a byte code with embedded
&gt; constant int. (When emitting byte code we should know the number of
&gt; children).
&gt; So, when using it in Object.defineProperty, we need to write it like,
&gt; 
&gt; if (value case) {
&gt;     @defineDataProperty(..., value);
&gt; } if (getter || setter) {
&gt;     if (getter)
&gt;         @defineAccessorProperty(..., getter, 1);
&gt;     else
&gt;         @defineAccessorProperty(..., setter, 1);
&gt; } else {
&gt;     @defineAccessorProperty(..., getter, setter, 2);
&gt; }
&gt; 
&gt; instead of
&gt; 
&gt; if (value case)
&gt;     @defineDataProperty(..., value);
&gt; else
&gt;     @defineAccessorProperty(..., getter, setter);
I don&apos;t completely follow. Why can&apos;t we just use jsNull() or jsUndefined()
to indicate that a setter/getter is not present? It seems like this would
work fine once you make Object.defineProperty a bytecode intrinsic as well.
Something like:
if (value case)
    ....
else if (getter &amp;&amp; setter)
    ...
else if (getter)
    @defineAccessorProperty(..., getter, null)
else
    @defineAccessorProperty(..., null, setter)

&gt; 
&gt; &gt;&gt; Source/JavaScriptCore/dfg/DFGFixupPhase.cpp:1617
&gt; &gt;&gt; +            fixEdge&lt;Int32Use&gt;(m_graph.varArgChild(node, 3));
&gt; &gt; 
&gt; &gt; This should be KnownInt32Use
&gt; 
&gt; Done.
&gt; 
&gt; &gt;&gt; Source/JavaScriptCore/dfg/DFGFixupPhase.cpp:1634
&gt; &gt;&gt; +            fixEdge&lt;Int32Use&gt;(m_graph.varArgChild(node, 4));
&gt; &gt; 
&gt; &gt; This should KnownInt32Use
&gt; 
&gt; Done.
&gt; 
&gt; &gt;&gt; Source/JavaScriptCore/dfg/DFGOperations.cpp:1002
&gt; &gt;&gt; +    base-&gt;methodTable(vm)-&gt;defineOwnProperty(base, exec, propertyName, descriptor, true);
&gt; &gt; 
&gt; &gt; It might be profitable to do this check:
&gt; &gt; if (base-&gt;methodTabale(vm)-&gt;defineOwnProperty == JSObject::defineOwnProperty) doADirectCall
&gt; &gt; else doVirtualMethodTableCall
&gt; 
&gt; Nice. Fixed.
&gt; 
&gt; &gt;&gt; Source/JavaScriptCore/dfg/DFGOperations.cpp:1045
&gt; &gt;&gt; +    base-&gt;methodTable(vm)-&gt;defineOwnProperty(base, exec, propertyName, descriptor, true);
&gt; &gt; 
&gt; &gt; ditto
&gt; 
&gt; Fixed.
&gt; 
&gt; &gt;&gt; Source/JavaScriptCore/runtime/CommonSlowPaths.cpp:947
&gt; &gt;&gt; +    base-&gt;methodTable(vm)-&gt;defineOwnProperty(base, exec, propertyName, descriptor, true);
&gt; &gt; 
&gt; &gt; ditto here about checking for a direct call.
&gt; 
&gt; Done.
&gt; 
&gt; &gt;&gt; Source/JavaScriptCore/runtime/DefinePropertyAttributes.h:96
&gt; &gt;&gt; +    TriState writable()
&gt; &gt; 
&gt; &gt; Suggestion: I&apos;d make these return true/false and have methods like hasWritable, hasConfigurable, etc. Seems like less of an information leak about the internal representation of this class.
&gt; &gt; Also, you could make these return Optional&lt;bool&gt; and then have the call sites instead of checking != MixedTriState just do:
&gt; &gt; if (Optional&lt;bool&gt; writable = d.writable()) ... 
&gt; &gt; Maybe Optional&lt;&gt; is the best way to go. That way you could also remove the hasGet, hasSet, etc.
&gt; 
&gt; Sounds nice. Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236542</commentid>
    <comment_count>32</comment_count>
      <attachid>289984</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-04 23:19:03 -0700</bug_when>
    <thetext>Comment on attachment 289984
Patch

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

&gt;&gt;&gt;&gt; Source/JavaScriptCore/ChangeLog:14
&gt;&gt;&gt;&gt; +        However, this has a problems. Every time we define a class method, we need to create
&gt;&gt;&gt; 
&gt;&gt;&gt; &quot;this has a problems&quot; =&gt; &quot;this approach has problems&quot;
&gt;&gt; 
&gt;&gt; Fixed.
&gt; 
&gt; I don&apos;t completely follow. Why can&apos;t we just use jsNull() or jsUndefined()
&gt; to indicate that a setter/getter is not present? It seems like this would
&gt; work fine once you make Object.defineProperty a bytecode intrinsic as well.
&gt; Something like:
&gt; if (value case)
&gt;     ....
&gt; else if (getter &amp;&amp; setter)
&gt;     ...
&gt; else if (getter)
&gt;     @defineAccessorProperty(..., getter, null)
&gt; else
&gt;     @defineAccessorProperty(..., null, setter)

In the current design, we can write the code for Object.defineProperty like the following.

...

let getter = @throwTypeError;
if (hasGetter) {
    checking getter;
    getter = ...;
}

let setter = @throwTypeError;
if (hasSetter) {
    checking setter;
    setter = ...;
}

// some checks.

if (hasGetter || hasSetter)
    @defineAccessorProperty(..., getter, setter);
else
    @defineDataProperty(..., value);


I think this design is clean since

1. we do not need to consider the number of children in DFG&apos;s DefineAccessorProperty.
2. we do not need to create else-if sequence in JS builtin code.

What do you think of?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239166</commentid>
    <comment_count>33</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-10-11 21:17:20 -0700</bug_when>
    <thetext>(In reply to comment #32)
&gt; Comment on attachment 289984 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=289984&amp;action=review
&gt; 
&gt; &gt;&gt;&gt;&gt; Source/JavaScriptCore/ChangeLog:14
&gt; &gt;&gt;&gt;&gt; +        However, this has a problems. Every time we define a class method, we need to create
&gt; &gt;&gt;&gt; 
&gt; &gt;&gt;&gt; &quot;this has a problems&quot; =&gt; &quot;this approach has problems&quot;
&gt; &gt;&gt; 
&gt; &gt;&gt; Fixed.
&gt; &gt; 
&gt; &gt; I don&apos;t completely follow. Why can&apos;t we just use jsNull() or jsUndefined()
&gt; &gt; to indicate that a setter/getter is not present? It seems like this would
&gt; &gt; work fine once you make Object.defineProperty a bytecode intrinsic as well.
&gt; &gt; Something like:
&gt; &gt; if (value case)
&gt; &gt;     ....
&gt; &gt; else if (getter &amp;&amp; setter)
&gt; &gt;     ...
&gt; &gt; else if (getter)
&gt; &gt;     @defineAccessorProperty(..., getter, null)
&gt; &gt; else
&gt; &gt;     @defineAccessorProperty(..., null, setter)
&gt; 
&gt; In the current design, we can write the code for Object.defineProperty like
&gt; the following.
&gt; 
&gt; ...
&gt; 
&gt; let getter = @throwTypeError;
&gt; if (hasGetter) {
&gt;     checking getter;
&gt;     getter = ...;
&gt; }
&gt; 
&gt; let setter = @throwTypeError;
&gt; if (hasSetter) {
&gt;     checking setter;
&gt;     setter = ...;
&gt; }
&gt; 
&gt; // some checks.
&gt; 
&gt; if (hasGetter || hasSetter)
&gt;     @defineAccessorProperty(..., getter, setter);
&gt; else
&gt;     @defineDataProperty(..., value);
&gt; 
&gt; 
&gt; I think this design is clean since
&gt; 
&gt; 1. we do not need to consider the number of children in DFG&apos;s
&gt; DefineAccessorProperty.
&gt; 2. we do not need to create else-if sequence in JS builtin code.
&gt; 
&gt; What do you think of?

Sounds good. It&apos;s impossible for user code to ever access @throwTypeError function, correct?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239167</commentid>
    <comment_count>34</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-11 21:22:17 -0700</bug_when>
    <thetext>(In reply to comment #33)
&gt; 
&gt; Sounds good. It&apos;s impossible for user code to ever access @throwTypeError
&gt; function, correct?

We can retrieve this throwTypeError function from the other place (This throwTypeError in global object is used for argument.caller getter in strict mode).
But it&apos;s not a problem since the attributes bitset holds &quot;HasGet&quot; / &quot;HasSet&quot; information. Users can pass throwTypeError to Object.defineProperty. But in that case, the attributes bitset says we have a getter/setter.

So, any function is ok for this. We just used @throwTypeError since it is held by global object.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>289730</attachid>
            <date>2016-09-23 18:15:31 -0700</date>
            <delta_ts>2016-09-26 14:20:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162108-20160924101238.patch</filename>
            <type>text/plain</type>
            <size>88293</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA2Mjc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
YjM1NWIwYTkzZTZmOGE1YWE3ZjVlMWJhMjYwMmViOGI2MzdhMjViLi41MjFjMzkyZjNkZDJlMGRm
ZDhmNjQxNWI4ZTI4ZDViNTFlMmE0MWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDYgQEAKKzIwMTYtMDktMjMgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0pTQ10gQWRkIGEgbmV3IGJ5dGUgY29kZSBvcF9kZWZpbmVfcHJv
cGVydHkgaW5zdGVhZCBvZiBjYWxsaW5nIGRlZmluZVByb3BlcnR5CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjIxMDgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb246
CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaDoKKyAgICAgICAgKEpTQzo6Y29t
cHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OmNvbXB1dGVEZWZzRm9y
Qnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKToKKyAgICAgICAgKiBieXRlY29kZS9T
cGVjaWFsUG9pbnRlci5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TW92ZUxpbmtUaW1l
Q29uc3RhbnQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENhbGxEZWZp
bmVQcm9wZXJ0eSk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6
CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6
OlByb3BlcnR5TGlzdE5vZGU6OmVtaXRQdXRDb25zdGFudFByb3BlcnR5KToKKyAgICAgICAgKEpT
Qzo6Qml0d2lzZU5vdE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkNsYXNzRXhw
ck5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6Ok9iamVjdFBhdHRlcm5Ob2RlOjpi
aW5kVmFsdWUpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5o
OgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5
cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAg
ICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Y2FwYWJp
bGl0eUxldmVsKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcml6ZS5oOgorICAgICAgICAoSlND
OjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAqIGRmZy9ERkdEb2VzR0MuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OmRvZXNHQyk6CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6CisgICAgICAgICogZGZn
L0RGR05vZGVUeXBlLmg6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAg
ICAqIGRmZy9ERkdPcGVyYXRpb25zLmg6CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9w
YWdhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHU2FmZVRvRXhlY3V0ZS5oOgorICAg
ICAgICAoSlNDOjpERkc6OnNhZmVUb0V4ZWN1dGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5oOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWxsT3BlcmF0
aW9uKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdT
cGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTENhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChK
U0M6OkZUTDo6Y2FuQ29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOb2RlKToKKyAg
ICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZURlZmluZURhdGFQcm9w
ZXJ0eSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVEZWZp
bmVBY2Nlc3NvclByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9C
Mzo6Y29tcGlsZVB1dEJ5VmFsV2l0aFRoaXMpOiBEZWxldGVkLgorICAgICAgICAqIGppdC9DQ2Fs
bEhlbHBlcnMuY3BwOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OnNldHVwRm91clN0dWJB
cmdzR1BSKTogRGVsZXRlZC4KKyAgICAgICAgKiBqaXQvQ0NhbGxIZWxwZXJzLmg6CisgICAgICAg
IChKU0M6OkNDYWxsSGVscGVyczo6c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKToKKyAgICAg
ICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpzZXR1cEZvdXJTdHViQXJnc0dQUik6CisgICAgICAgIChK
U0M6OkNDYWxsSGVscGVyczo6c2V0dXBGaXZlU3R1YkFyZ3NHUFIpOgorICAgICAgICAoSlNDOjpD
Q2FsbEhlbHBlcnM6OnNldHVwU3R1YkFyZ3NHUFIpOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBl
cnM6OnByZXBhcmVGb3JUYWlsQ2FsbFNsb3cpOiBEZWxldGVkLgorICAgICAgICAqIGppdC9KSVQu
Y3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgorICAgICAg
ICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5oOgorICAgICAgICAq
IGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9k
ZWZpbmVfZGF0YV9wcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9kZWZpbmVf
YWNjZXNzb3JfcHJvcGVydHkpOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIu
YXNtOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpT
Qzo6U0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmg6
CisgICAgICAgICogcnVudGltZS9EZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaDogQWRkZWQuCisg
ICAgICAgIChKU0M6OkRlZmluZVByb3BlcnR5QXR0cmlidXRlczo6RGVmaW5lUHJvcGVydHlBdHRy
aWJ1dGVzKToKKyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzOjpyYXdSZXBy
ZXNlbnRhdGlvbik6CisgICAgICAgIChKU0M6OkRlZmluZVByb3BlcnR5QXR0cmlidXRlczo6aGFz
VmFsdWUpOgorICAgICAgICAoSlNDOjpEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXM6OnNldFZhbHVl
KToKKyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzOjpoYXNHZXQpOgorICAg
ICAgICAoSlNDOjpEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXM6OnNldEdldCk6CisgICAgICAgIChK
U0M6OkRlZmluZVByb3BlcnR5QXR0cmlidXRlczo6aGFzU2V0KToKKyAgICAgICAgKEpTQzo6RGVm
aW5lUHJvcGVydHlBdHRyaWJ1dGVzOjpzZXRTZXQpOgorICAgICAgICAoSlNDOjpEZWZpbmVQcm9w
ZXJ0eUF0dHJpYnV0ZXM6OndyaXRhYmxlKToKKyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVydHlB
dHRyaWJ1dGVzOjpjb25maWd1cmFibGUpOgorICAgICAgICAoSlNDOjpEZWZpbmVQcm9wZXJ0eUF0
dHJpYnV0ZXM6OmVudW1lcmFibGUpOgorICAgICAgICAoSlNDOjpEZWZpbmVQcm9wZXJ0eUF0dHJp
YnV0ZXM6OnNldFdyaXRhYmxlKToKKyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVydHlBdHRyaWJ1
dGVzOjpzZXRDb25maWd1cmFibGUpOgorICAgICAgICAoSlNDOjpEZWZpbmVQcm9wZXJ0eUF0dHJp
YnV0ZXM6OnNldEVudW1lcmFibGUpOgorICAgICAgICAoSlNDOjpEZWZpbmVQcm9wZXJ0eUF0dHJp
YnV0ZXM6OmZpbGxXaXRoVHJpU3RhdGUpOgorICAgICAgICAoSlNDOjpEZWZpbmVQcm9wZXJ0eUF0
dHJpYnV0ZXM6OmV4dHJhY3RUcmlTdGF0ZSk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9i
amVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0KToKKyAgICAgICAg
KEpTQzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUv
SlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnRocm93VHlw
ZUVycm9yRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6ZGVmaW5lUHJv
cGVydHlGdW5jdGlvbik6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9PYmplY3RDb25zdHJ1
Y3Rvci5jcHA6CisgICAgICAgIChKU0M6Ok9iamVjdENvbnN0cnVjdG9yOjphZGREZWZpbmVQcm9w
ZXJ0eSk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5oOgor
ICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlEZXNjcmlwdG9yLmg6CisgICAgICAgIChKU0M6OnRv
UHJvcGVydHlEZXNjcmlwdG9yKToKKwogMjAxNi0wOS0yMiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9A
YXBwbGUuY29tPgogCiAgICAgICAgIEZlbmNlcyBvbiB4ODYgc2hvdWxkIGJlIGEgbG90IGNoZWFw
ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOWM2YmQ3YTQ3NDNlNjIxZjgwZDgy
M2FiMzYzY2YyMDJmOTNlZTllZS4uNDEyNjQ4YzA0MTBjZDZlYmJiYjgyMmExYTc0ZTk0ZmNlZDRm
N2I1OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIxNjcsNiArMjE2Nyw3IEBA
CiAJCUZFRDk0RjJGMTcxRTNFMjMwMEJFNzdBNCAvKiBXYXRjaGRvZy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVEOTRGMkMxNzFFM0UyMzAwQkU3N0E0
IC8qIFdhdGNoZG9nLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJRkVGMDQwNTExQUFFNjYyRDAwQkQyOEIwIC8qIENvbXBhcmVBbmRTd2FwVGVzdC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUYwNDA1
MDFBQUU2NjJEMDBCRDI4QjAgLyogQ29tcGFyZUFuZFN3YXBUZXN0LmNwcCAqLzsgfTsKIAkJRkVG
RDZGQzYxRDVFNzk5MjAwOEYyRjBCIC8qIEpTU3RyaW5nSW5saW5lcy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVGRDZGQzUxRDVFNzk3MDAwOEYyRjBC
IC8qIEpTU3RyaW5nSW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTQ3M0RBNEE0NzY0QzQ1RkU4NzFCMDQ4NSAvKiBEZWZpbmVQcm9wZXJ0
eUF0dHJpYnV0ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDE2OTk0OEVERTY4RDQwNTRCMDFFRjc5NyAvKiBEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMu
aCAqLzsgfTsKIC8qIEVuZCBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhD
b250YWluZXJJdGVtUHJveHkgc2VjdGlvbiAqLwpAQCAtNDQ5Niw2ICs0NDk3LDcgQEAKIAkJRkVG
MDQwNTAxQUFFNjYyRDAwQkQyOEIwIC8qIENvbXBhcmVBbmRTd2FwVGVzdC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBDb21wYXJlQW5kU3dhcFRlc3QuY3BwOyBwYXRo
ID0gQVBJL3Rlc3RzL0NvbXBhcmVBbmRTd2FwVGVzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUZFRjA0MDUyMUFBRUM0RUQwMEJEMjhCMCAvKiBDb21wYXJlQW5kU3dhcFRlc3Qu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQ29tcGFyZUFuZFN3YXBUZXN0Lmg7
IHBhdGggPSBBUEkvdGVzdHMvQ29tcGFyZUFuZFN3YXBUZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUZFRkQ2RkM1MUQ1RTc5NzAwMDhGMkYwQiAvKiBKU1N0cmluZ0lubGluZXMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTdHJpbmdJbmxpbmVzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE2OTk0OEVERTY4RDQwNTRCMDFFRjc5NyAvKiBE
ZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzLmg7IHBhdGggPSBEZWZpbmVQcm9wZXJ0eUF0dHJp
YnV0ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIC8qIEVuZCBQQlhGaWxlUmVmZXJl
bmNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2Ugc2VjdGlv
biAqLwpAQCAtNjIzOSw2ICs2MjQxLDcgQEAKIAkJCQk3MDlGQjg2NjFBRTMzNUM2MDAzOUQwNjkg
LyogV2Vha1NldFByb3RvdHlwZS5oICovLAogCQkJCUE3RENCNzc5MTJFM0Q5MDUwMDkxMTk0MCAv
KiBXcml0ZUJhcnJpZXIuaCAqLywKIAkJCQlDMkI2RDc1MjE4QTMzNzkzMDA0QTkzMDEgLyogV3Jp
dGVCYXJyaWVySW5saW5lcy5oICovLAorCQkJCTE2OTk0OEVERTY4RDQwNTRCMDFFRjc5NyAvKiBE
ZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gcnVudGltZTsK
IAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC04MzcyLDYgKzgzNzUsNyBAQAogCQkJCTg2
NzA0QjQzMTJEQjhBODEwMEE5RkU3QiAvKiBZYXJyU3ludGF4Q2hlY2tlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTc5RDNFRDlDNTA2NEREMEE4NDY2QTNBIC8qIE1vZHVsZVNjb3BlRGF0YS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRDk3MjI3NTJEQzU0NDU5QjkxMjVCNTM5IC8qIEpTTW9kdWxlTG9h
ZGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk0NzNEQTRBNDc2NEM0NUZFODcxQjA0ODUgLyogRGVm
aW5lUHJvcGVydHlBdHRyaWJ1dGVzLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5
Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbiBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgppbmRleCBiMWFiYWI5ZTAxZDUy
OTMwMjk2MTA0ZDI2MTVhZDhkMzFlYmM3YjU0Li5jODQ3ZjQ0OWNlODhkNmI5OTViODRiZmQ5NmI3
OWYwZjBiMzA1ZmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVMaXN0Lmpzb24KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlTGlzdC5qc29uCkBAIC04MSw2ICs4MSw4IEBACiAgICAgICAgICAgICB7ICJuYW1lIiA6
ICJvcF9wdXRfZ2V0dGVyX3NldHRlcl9ieV9pZCIsICJsZW5ndGgiIDogNiB9LAogICAgICAgICAg
ICAgeyAibmFtZSIgOiAib3BfcHV0X2dldHRlcl9ieV92YWwiLCAibGVuZ3RoIiA6IDUgfSwKICAg
ICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3B1dF9zZXR0ZXJfYnlfdmFsIiwgImxlbmd0aCIgOiA1
IH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9kZWZpbmVfZGF0YV9wcm9wZXJ0eSIsICJs
ZW5ndGgiIDogNSB9LAorICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfZGVmaW5lX2FjY2Vzc29y
X3Byb3BlcnR5IiwgImxlbmd0aCIgOiA2IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9q
bXAiLCAibGVuZ3RoIiA6IDIgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2p0cnVlIiwg
Imxlbmd0aCIgOiAzIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9qZmFsc2UiLCAibGVu
Z3RoIiA6IDMgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZVVzZURlZi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
VXNlRGVmLmgKaW5kZXggZGFiY2U0ZWRmMDMyNjQ4YzA4OTY4OTk4MmE4ODE3ZWM2MDBhODE3ZS4u
NDVhOWUwOWNiZDgyZWY2ODlkM2IzNGY4ZWU1MGUxMWViOTVhMzc2MiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKQEAgLTE0NCw2ICsxNDQs
MjMgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KEJsb2NrKiBjb2RlQmxvY2ss
IE9wY29kZUlEIG9wY29kZUlELCBJbnN0cnVjdGkKICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ss
IGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KKyAgICBjYXNlIG9wX2RlZmluZV9kYXRhX3Byb3BlcnR5OiB7Cisg
ICAgICAgIEFTU0VSVChvcGNvZGVMZW5ndGhzW29wY29kZUlEXSA+IDQpOworICAgICAgICBmdW5j
dG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlvblsxXS51Lm9w
ZXJhbmQpOworICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlE
LCBpbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpOworICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywg
aW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpOworICAgICAg
ICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlvbls0
XS51Lm9wZXJhbmQpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGNhc2Ugb3BfZGVmaW5l
X2FjY2Vzc29yX3Byb3BlcnR5OiB7CisgICAgICAgIEFTU0VSVChvcGNvZGVMZW5ndGhzW29wY29k
ZUlEXSA+IDUpOworICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29k
ZUlELCBpbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOworICAgICAgICBmdW5jdG9yKGNvZGVCbG9j
aywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpOworICAg
ICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlv
blszXS51Lm9wZXJhbmQpOworICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24s
IG9wY29kZUlELCBpbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQpOworICAgICAgICBmdW5jdG9yKGNv
ZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlvbls1XS51Lm9wZXJhbmQp
OworICAgICAgICByZXR1cm47CisgICAgfQogICAgIGNhc2Ugb3BfZ2V0X3Byb3BlcnR5X2VudW1l
cmF0b3I6CiAgICAgY2FzZSBvcF9nZXRfZW51bWVyYWJsZV9sZW5ndGg6CiAgICAgY2FzZSBvcF9u
ZXdfZnVuY19leHA6CkBAIC0zMzIsNiArMzQ5LDggQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVj
b2RlT2Zmc2V0KEJsb2NrKiBjb2RlQmxvY2ssIE9wY29kZUlEIG9wY29kZUlELCBJbnN0cnVjdGkK
ICAgICBjYXNlIG9wX3B1dF9ieV92YWw6CiAgICAgY2FzZSBvcF9wdXRfYnlfdmFsX2RpcmVjdDoK
ICAgICBjYXNlIG9wX3B1dF9ieV9pbmRleDoKKyAgICBjYXNlIG9wX2RlZmluZV9kYXRhX3Byb3Bl
cnR5OgorICAgIGNhc2Ugb3BfZGVmaW5lX2FjY2Vzc29yX3Byb3BlcnR5OgogICAgIGNhc2Ugb3Bf
cHJvZmlsZV90eXBlOgogICAgIGNhc2Ugb3BfcHJvZmlsZV9jb250cm9sX2Zsb3c6CiAgICAgY2Fz
ZSBvcF9wdXRfdG9fYXJndW1lbnRzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcAppbmRleCBjMGIwMzFiNDM2NWE4OWRjMzk0M2UyMzY3NWNmODllYjMzNTFj
OGIwLi5lNjEwMjJlNDM5M2Y1NzI2ZjZiMGM3ZTIzOTAzZjYxMGJiODdlMDNiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtMTIzMyw2ICsxMjMz
LDI1IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoCiAgICAgICAgICAgICBvdXQucHJp
bnRmKCIlcywgJXMsICVkLCAlcyIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5h
bWUocjEpLmRhdGEoKSwgbjAsIHJlZ2lzdGVyTmFtZShyMikuZGF0YSgpKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CisgICAgICAgIGNhc2Ugb3BfZGVmaW5lX2RhdGFfcHJvcGVydHk6
IHsKKyAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAg
aW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBpbnQgcjIgPSAoKytpdCkt
PnUub3BlcmFuZDsKKyAgICAgICAgICAgIGludCByMyA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAg
ICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAiZGVm
aW5lX2RhdGFfcHJvcGVydHkiKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAlcywgJXMs
ICVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBy
ZWdpc3Rlck5hbWUocjIpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIzKS5kYXRhKCkpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9kZWZpbmVfYWNjZXNzb3Jf
cHJvcGVydHk6IHsKKyAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAg
ICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBpbnQgcjIg
PSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIGludCByMyA9ICgrK2l0KS0+dS5vcGVy
YW5kOworICAgICAgICAgICAgaW50IHI0ID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAg
ICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJkZWZpbmVfYWNj
ZXNzb3JfcHJvcGVydHkiKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAlcywgJXMsICVz
LCAlcyIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSwg
cmVnaXN0ZXJOYW1lKHIyKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMykuZGF0YSgpLCByZWdpc3Rl
ck5hbWUocjQpLmRhdGEoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAg
ICBjYXNlIG9wX2RlbF9ieV9pZDogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9w
ZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjaWFsUG9pbnRlci5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWNpYWxQb2ludGVyLmgKaW5kZXggNjRmYjIz
ZmNmMjdkNDEyNTA0ODAyMTllOGM4YzQxYjdjNDFhN2VmNS4uOTBjYjNhOTkyNmQ2MmU2MDRiMThj
M2IzZGJkNTUyMmI0NTJhZWRmYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1NwZWNpYWxQb2ludGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1NwZWNpYWxQb2ludGVyLmgKQEAgLTQyLDcgKzQyLDcgQEAgZW51bSBQb2ludGVyIHsKIH0g
Ly8gbmFtZXNwYWNlIFNwZWNpYWwKIAogZW51bSBjbGFzcyBMaW5rVGltZUNvbnN0YW50IHsKLSAg
ICBEZWZpbmVQcm9wZXJ0eUZ1bmN0aW9uLAorICAgIFRocm93VHlwZUVycm9yRnVuY3Rpb24sCiB9
OwogY29uc3QgdW5zaWduZWQgTGlua1RpbWVDb25zdGFudENvdW50ID0gMTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmNwcAppbmRleCAwNzVmNWNkOTZhYjllMmQ2ZmEyYThiZTA3MDAwNjFmZTFhNTAzOTZkLi5iODNl
OGExNmYzYjMyN2ZlOTVmZTU2ZmIxMWU2ODMyNTEyMTY4YTdhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApA
QCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkJ1aWx0aW5FeGVjdXRhYmxlcy5oIgogI2luY2x1
ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVMaXZl
bmVzc0FuYWx5c2lzLmgiCisjaW5jbHVkZSAiRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzLmgiCiAj
aW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVk
ZSAiSlNHZW5lcmF0b3JGdW5jdGlvbi5oIgpAQCAtMTU0Myw2ICsxNTQ0LDkgQEAgUmVnaXN0ZXJJ
RCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRNb3ZlTGlua1RpbWVDb25zdGFudChSZWdpc3RlcklE
KiBkc3QsIExpbmtUaW0KICAgICAgICAgbV9saW5rVGltZUNvbnN0YW50UmVnaXN0ZXJzW2NvbnN0
YW50SW5kZXhdID0gJm1fY29uc3RhbnRQb29sUmVnaXN0ZXJzW2luZGV4XTsKICAgICB9CiAKKyAg
ICBpZiAoIWRzdCkKKyAgICAgICAgcmV0dXJuIG1fbGlua1RpbWVDb25zdGFudFJlZ2lzdGVyc1tj
b25zdGFudEluZGV4XTsKKwogICAgIGVtaXRPcGNvZGUob3BfbW92KTsKICAgICBpbnN0cnVjdGlv
bnMoKS5hcHBlbmQoZHN0LT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobV9s
aW5rVGltZUNvbnN0YW50UmVnaXN0ZXJzW2NvbnN0YW50SW5kZXhdLT5pbmRleCgpKTsKQEAgLTMy
NTcsMzggKzMyNjEsNTkgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdExvZ1NoYWRvd0No
aWNrZW5UYWlsSWZOZWNlc3NhcnkoKQogfQogCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
Q2FsbERlZmluZVByb3BlcnR5KFJlZ2lzdGVySUQqIG5ld09iaiwgUmVnaXN0ZXJJRCogcHJvcGVy
dHlOYW1lUmVnaXN0ZXIsCi0gICAgUmVnaXN0ZXJJRCogdmFsdWVSZWdpc3RlciwgUmVnaXN0ZXJJ
RCogZ2V0dGVyUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIHNldHRlclJlZ2lzdGVyLCB1bnNpZ25lZCBv
cHRpb25zLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgcG9zaXRpb24pCisgICAgUmVnaXN0ZXJJRCog
dmFsdWVSZWdpc3RlciwgUmVnaXN0ZXJJRCogZ2V0dGVyUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIHNl
dHRlclJlZ2lzdGVyLCB1bnNpZ25lZCBvcHRpb25zKQogewotICAgIFJlZlB0cjxSZWdpc3RlcklE
PiBkZXNjcmlwdG9yUmVnaXN0ZXIgPSBlbWl0TmV3T2JqZWN0KG5ld1RlbXBvcmFyeSgpKTsKLQot
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0cnVlUmVnaXN0ZXIgPSBlbWl0TG9hZChuZXdUZW1wb3Jh
cnkoKSwgdHJ1ZSk7CisgICAgRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzIGF0dHJpYnV0ZXM7CiAg
ICAgaWYgKG9wdGlvbnMgJiBQcm9wZXJ0eUNvbmZpZ3VyYWJsZSkKLSAgICAgICAgZW1pdERpcmVj
dFB1dEJ5SWQoZGVzY3JpcHRvclJlZ2lzdGVyLmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkuY29uZmln
dXJhYmxlLCB0cnVlUmVnaXN0ZXIuZ2V0KCksIFByb3BlcnR5Tm9kZTo6VW5rbm93bik7CisgICAg
ICAgIGF0dHJpYnV0ZXMuc2V0Q29uZmlndXJhYmxlKHRydWUpOworCiAgICAgaWYgKG9wdGlvbnMg
JiBQcm9wZXJ0eVdyaXRhYmxlKQotICAgICAgICBlbWl0RGlyZWN0UHV0QnlJZChkZXNjcmlwdG9y
UmVnaXN0ZXIuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS53cml0YWJsZSwgdHJ1ZVJlZ2lzdGVyLmdl
dCgpLCBQcm9wZXJ0eU5vZGU6OlVua25vd24pOwotICAgIGVsc2UgaWYgKHZhbHVlUmVnaXN0ZXIp
IHsKLSAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGZhbHNlUmVnaXN0ZXIgPSBlbWl0TG9hZChu
ZXdUZW1wb3JhcnkoKSwgZmFsc2UpOwotICAgICAgICBlbWl0RGlyZWN0UHV0QnlJZChkZXNjcmlw
dG9yUmVnaXN0ZXIuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS53cml0YWJsZSwgZmFsc2VSZWdpc3Rl
ci5nZXQoKSwgUHJvcGVydHlOb2RlOjpVbmtub3duKTsKLSAgICB9CisgICAgICAgIGF0dHJpYnV0
ZXMuc2V0V3JpdGFibGUodHJ1ZSk7CisgICAgZWxzZSBpZiAodmFsdWVSZWdpc3RlcikKKyAgICAg
ICAgYXR0cmlidXRlcy5zZXRXcml0YWJsZShmYWxzZSk7CisKICAgICBpZiAob3B0aW9ucyAmIFBy
b3BlcnR5RW51bWVyYWJsZSkKLSAgICAgICAgZW1pdERpcmVjdFB1dEJ5SWQoZGVzY3JpcHRvclJl
Z2lzdGVyLmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkuZW51bWVyYWJsZSwgdHJ1ZVJlZ2lzdGVyLmdl
dCgpLCBQcm9wZXJ0eU5vZGU6OlVua25vd24pOworICAgICAgICBhdHRyaWJ1dGVzLnNldEVudW1l
cmFibGUodHJ1ZSk7CiAKICAgICBpZiAodmFsdWVSZWdpc3RlcikKLSAgICAgICAgZW1pdERpcmVj
dFB1dEJ5SWQoZGVzY3JpcHRvclJlZ2lzdGVyLmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkudmFsdWUs
IHZhbHVlUmVnaXN0ZXIsIFByb3BlcnR5Tm9kZTo6VW5rbm93bik7CisgICAgICAgIGF0dHJpYnV0
ZXMuc2V0VmFsdWUoKTsKICAgICBpZiAoZ2V0dGVyUmVnaXN0ZXIpCi0gICAgICAgIGVtaXREaXJl
Y3RQdXRCeUlkKGRlc2NyaXB0b3JSZWdpc3Rlci5nZXQoKSwgcHJvcGVydHlOYW1lcygpLmdldCwg
Z2V0dGVyUmVnaXN0ZXIsIFByb3BlcnR5Tm9kZTo6VW5rbm93bik7CisgICAgICAgIGF0dHJpYnV0
ZXMuc2V0R2V0KCk7CiAgICAgaWYgKHNldHRlclJlZ2lzdGVyKQotICAgICAgICBlbWl0RGlyZWN0
UHV0QnlJZChkZXNjcmlwdG9yUmVnaXN0ZXIuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS5zZXQsIHNl
dHRlclJlZ2lzdGVyLCBQcm9wZXJ0eU5vZGU6OlVua25vd24pOworICAgICAgICBhdHRyaWJ1dGVz
LnNldFNldCgpOwogCi0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGRlZmluZVByb3BlcnR5UmVnaXN0
ZXIgPSBlbWl0TW92ZUxpbmtUaW1lQ29uc3RhbnQobmV3VGVtcG9yYXJ5KCksIExpbmtUaW1lQ29u
c3RhbnQ6OkRlZmluZVByb3BlcnR5RnVuY3Rpb24pOworICAgIEFTU0VSVCghdmFsdWVSZWdpc3Rl
ciB8fCAoIWdldHRlclJlZ2lzdGVyICYmICFzZXR0ZXJSZWdpc3RlcikpOwogCi0gICAgQ2FsbEFy
Z3VtZW50cyBjYWxsQXJndW1lbnRzKCp0aGlzLCBudWxscHRyLCAzKTsKLSAgICBlbWl0TG9hZChj
YWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBqc1VuZGVmaW5lZCgpKTsKLSAgICBlbWl0TW92
ZShjYWxsQXJndW1lbnRzLmFyZ3VtZW50UmVnaXN0ZXIoMCksIG5ld09iaik7Ci0gICAgZW1pdE1v
dmUoY2FsbEFyZ3VtZW50cy5hcmd1bWVudFJlZ2lzdGVyKDEpLCBwcm9wZXJ0eU5hbWVSZWdpc3Rl
cik7Ci0gICAgZW1pdE1vdmUoY2FsbEFyZ3VtZW50cy5hcmd1bWVudFJlZ2lzdGVyKDIpLCBkZXNj
cmlwdG9yUmVnaXN0ZXIuZ2V0KCkpOworICAgIGlmIChhdHRyaWJ1dGVzLmhhc0dldCgpIHx8IGF0
dHJpYnV0ZXMuaGFzU2V0KCkpIHsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRocm93VHlw
ZUVycm9yRnVuY3Rpb247CisgICAgICAgIGlmICghYXR0cmlidXRlcy5oYXNHZXQoKSB8fCAhYXR0
cmlidXRlcy5oYXNTZXQoKSkKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yRnVuY3Rpb24gPSBl
bWl0TW92ZUxpbmtUaW1lQ29uc3RhbnQobnVsbHB0ciwgTGlua1RpbWVDb25zdGFudDo6VGhyb3dU
eXBlRXJyb3JGdW5jdGlvbik7CiAKLSAgICBlbWl0Q2FsbChuZXdUZW1wb3JhcnkoKSwgZGVmaW5l
UHJvcGVydHlSZWdpc3Rlci5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRz
LCBwb3NpdGlvbiwgcG9zaXRpb24sIHBvc2l0aW9uKTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IGdldHRlcjsKKyAgICAgICAgaWYgKGF0dHJpYnV0ZXMuaGFzR2V0KCkpCisgICAgICAgICAg
ICBnZXR0ZXIgPSBnZXR0ZXJSZWdpc3RlcjsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZ2V0
dGVyID0gdGhyb3dUeXBlRXJyb3JGdW5jdGlvbjsKKworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gc2V0dGVyOworICAgICAgICBpZiAoYXR0cmlidXRlcy5oYXNTZXQoKSkKKyAgICAgICAgICAg
IHNldHRlciA9IHNldHRlclJlZ2lzdGVyOworICAgICAgICBlbHNlCisgICAgICAgICAgICBzZXR0
ZXIgPSB0aHJvd1R5cGVFcnJvckZ1bmN0aW9uOworCisgICAgICAgIGVtaXRPcGNvZGUob3BfZGVm
aW5lX2FjY2Vzc29yX3Byb3BlcnR5KTsKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG5l
d09iai0+aW5kZXgoKSk7CisgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChwcm9wZXJ0eU5h
bWVSZWdpc3Rlci0+aW5kZXgoKSk7CisgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChnZXR0
ZXItPmluZGV4KCkpOworICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoc2V0dGVyLT5pbmRl
eCgpKTsKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGVtaXRMb2FkKG51bGxwdHIsIGpz
TnVtYmVyKGF0dHJpYnV0ZXMucmF3UmVwcmVzZW50YXRpb24oKSkpLT5pbmRleCgpKTsKKyAgICB9
IGVsc2UgeworICAgICAgICBlbWl0T3Bjb2RlKG9wX2RlZmluZV9kYXRhX3Byb3BlcnR5KTsKKyAg
ICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG5ld09iai0+aW5kZXgoKSk7CisgICAgICAgIGlu
c3RydWN0aW9ucygpLmFwcGVuZChwcm9wZXJ0eU5hbWVSZWdpc3Rlci0+aW5kZXgoKSk7CisgICAg
ICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCh2YWx1ZVJlZ2lzdGVyLT5pbmRleCgpKTsKKyAgICAg
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKGF0dHJp
YnV0ZXMucmF3UmVwcmVzZW50YXRpb24oKSkpLT5pbmRleCgpKTsKKyAgICB9CiB9CiAKIFJlZ2lz
dGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmV0dXJuKFJlZ2lzdGVySUQqIHNyYykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuaAppbmRleCA5MDQ3M2JmMDJlNjg0Y2ZhYWU1M2MxMzU3MmI4OGRiNTFkYmFmZWE5Li5j
ZTIwZjYwMWZmMDZiNDkxZDI1YzkxMzM2YTRhYjc4ZDQ4Y2I0N2ZiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBA
IC01ODcsNyArNTg3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBQcm9wZXJ0eUVu
dW1lcmFibGUgICA9IDEgPDwgMiwKICAgICAgICAgfTsKICAgICAgICAgdm9pZCBlbWl0Q2FsbERl
ZmluZVByb3BlcnR5KFJlZ2lzdGVySUQqIG5ld09iaiwgUmVnaXN0ZXJJRCogcHJvcGVydHlOYW1l
UmVnaXN0ZXIsCi0gICAgICAgICAgICBSZWdpc3RlcklEKiB2YWx1ZVJlZ2lzdGVyLCBSZWdpc3Rl
cklEKiBnZXR0ZXJSZWdpc3RlciwgUmVnaXN0ZXJJRCogc2V0dGVyUmVnaXN0ZXIsIHVuc2lnbmVk
IG9wdGlvbnMsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJik7CisgICAgICAgICAgICBSZWdpc3RlcklE
KiB2YWx1ZVJlZ2lzdGVyLCBSZWdpc3RlcklEKiBnZXR0ZXJSZWdpc3RlciwgUmVnaXN0ZXJJRCog
c2V0dGVyUmVnaXN0ZXIsIHVuc2lnbmVkIG9wdGlvbnMpOwogCiAgICAgICAgIHZvaWQgZW1pdEVu
dW1lcmF0aW9uKFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBlbnVtZXJhdGlvbk5vZGUsIEV4cHJl
c3Npb25Ob2RlKiBzdWJqZWN0Tm9kZSwgY29uc3Qgc3RkOjpmdW5jdGlvbjx2b2lkKEJ5dGVjb2Rl
R2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCopPiYgY2FsbEJhY2ssIFZhcmlhYmxlRW52aXJvbm1lbnRO
b2RlKiA9IG51bGxwdHIsIFJlZ2lzdGVySUQqIGZvckxvb3BTeW1ib2xUYWJsZSA9IG51bGxwdHIp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVz
Q29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29k
ZWdlbi5jcHAKaW5kZXggMTg3MDJmMGE0Y2ZmZGMyM2M1ZGRkYWZlMjFlNzFkNThiMGJkMzE4OC4u
NWFhNjNhZmQ3ZDQwMTI0ZjJmY2UyYjE3YzllOGNlMjBhNDJhYjZlNCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtNTkw
LDEyICs1OTAsMTIgQEAgdm9pZCBQcm9wZXJ0eUxpc3ROb2RlOjplbWl0UHV0Q29uc3RhbnRQcm9w
ZXJ0eShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWcKICAgICAgICAgQVNTRVJUKG5v
ZGUubmVlZHNTdXBlckJpbmRpbmcoKSk7CiAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcm9w
ZXJ0eU5hbWVSZWdpc3RlcjsKICAgICAgICAgaWYgKG5vZGUubmFtZSgpKQotICAgICAgICAgICAg
cHJvcGVydHlOYW1lUmVnaXN0ZXIgPSBnZW5lcmF0b3IuZW1pdExvYWQoZ2VuZXJhdG9yLm5ld1Rl
bXBvcmFyeSgpLCAqbm9kZS5uYW1lKCkpOworICAgICAgICAgICAgcHJvcGVydHlOYW1lUmVnaXN0
ZXIgPSBnZW5lcmF0b3IuZW1pdExvYWQobnVsbHB0ciwgKm5vZGUubmFtZSgpKTsKICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgcHJvcGVydHlOYW1lUmVnaXN0ZXIgPSBnZW5lcmF0b3IuZW1pdE5v
ZGUobm9kZS5tX2V4cHJlc3Npb24pOwogCiAgICAgICAgIGdlbmVyYXRvci5lbWl0U2V0RnVuY3Rp
b25OYW1lSWZOZWVkZWQobm9kZS5tX2Fzc2lnbiwgdmFsdWUuZ2V0KCksIHByb3BlcnR5TmFtZVJl
Z2lzdGVyLmdldCgpKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsRGVmaW5lUHJvcGVydHko
bmV3T2JqLCBwcm9wZXJ0eU5hbWVSZWdpc3Rlci5nZXQoKSwgdmFsdWUuZ2V0KCksIG51bGxwdHIs
IG51bGxwdHIsIEJ5dGVjb2RlR2VuZXJhdG9yOjpQcm9wZXJ0eUNvbmZpZ3VyYWJsZSB8IEJ5dGVj
b2RlR2VuZXJhdG9yOjpQcm9wZXJ0eVdyaXRhYmxlLCBtX3Bvc2l0aW9uKTsKKyAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRDYWxsRGVmaW5lUHJvcGVydHkobmV3T2JqLCBwcm9wZXJ0eU5hbWVSZWdpc3Rl
ci5nZXQoKSwgdmFsdWUuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIsIEJ5dGVjb2RlR2VuZXJhdG9y
OjpQcm9wZXJ0eUNvbmZpZ3VyYWJsZSB8IEJ5dGVjb2RlR2VuZXJhdG9yOjpQcm9wZXJ0eVdyaXRh
YmxlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAoY29uc3QgYXV0byogaWRlbnRp
ZmllciA9IG5vZGUubmFtZSgpKSB7CkBAIC02MDUsNyArNjA1LDcgQEAgdm9pZCBQcm9wZXJ0eUxp
c3ROb2RlOjplbWl0UHV0Q29uc3RhbnRQcm9wZXJ0eShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLCBSZWcKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIFJlZlB0
cjxSZWdpc3RlcklEPiBpbmRleCA9IGdlbmVyYXRvci5lbWl0TG9hZChnZW5lcmF0b3IubmV3VGVt
cG9yYXJ5KCksIGpzTnVtYmVyKG9wdGlvbmFsSW5kZXgudmFsdWUoKSkpOworICAgICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gaW5kZXggPSBnZW5lcmF0b3IuZW1pdExvYWQobnVsbHB0ciwganNOdW1i
ZXIob3B0aW9uYWxJbmRleC52YWx1ZSgpKSk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0RGlyZWN0
UHV0QnlWYWwobmV3T2JqLCBpbmRleC5nZXQoKSwgdmFsdWUuZ2V0KCkpOwogICAgICAgICByZXR1
cm47CiAgICAgfQpAQCAtMTYyMyw3ICsxNjIzLDcgQEAgUmVnaXN0ZXJJRCogVW5hcnlQbHVzTm9k
ZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQK
ICAKIFJlZ2lzdGVySUQqIEJpdHdpc2VOb3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewotICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiBzcmMyID0gZ2VuZXJhdG9yLmVtaXRMb2FkKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwg
anNOdW1iZXIoLTEpKTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc3JjMiA9IGdlbmVyYXRvci5l
bWl0TG9hZChudWxscHRyLCBqc051bWJlcigtMSkpOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBz
cmMxID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fZXhwcik7CiAgICAgcmV0dXJuIGdlbmVyYXRvci5l
bWl0QmluYXJ5T3Aob3BfYml0eG9yLCBnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QsIHNy
YzEuZ2V0KCkpLCBzcmMxLmdldCgpLCBzcmMyLmdldCgpLCBPcGVyYW5kVHlwZXMobV9leHByLT5y
ZXN1bHREZXNjcmlwdG9yKCksIFJlc3VsdFR5cGU6Om51bWJlclR5cGVJc0ludDMyKCkpKTsKIH0K
QEAgLTM1OTEsMTIgKzM1OTEsMTIgQEAgUmVnaXN0ZXJJRCogQ2xhc3NFeHByTm9kZTo6ZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQKICAgICAgICAg
ZW1pdFB1dEhvbWVPYmplY3QoZ2VuZXJhdG9yLCBjb25zdHJ1Y3Rvci5nZXQoKSwgcHJvdG90eXBl
LmdldCgpKTsKICAgICB9CiAKLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gY29uc3RydWN0b3JOYW1l
UmVnaXN0ZXIgPSBnZW5lcmF0b3IuZW1pdExvYWQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBw
cm9wZXJ0eU5hbWVzLmNvbnN0cnVjdG9yKTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gY29uc3Ry
dWN0b3JOYW1lUmVnaXN0ZXIgPSBnZW5lcmF0b3IuZW1pdExvYWQobnVsbHB0ciwgcHJvcGVydHlO
YW1lcy5jb25zdHJ1Y3Rvcik7CiAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsRGVmaW5lUHJvcGVydHko
cHJvdG90eXBlLmdldCgpLCBjb25zdHJ1Y3Rvck5hbWVSZWdpc3Rlci5nZXQoKSwgY29uc3RydWN0
b3IuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIsCi0gICAgICAgIEJ5dGVjb2RlR2VuZXJhdG9yOjpQ
cm9wZXJ0eUNvbmZpZ3VyYWJsZSB8IEJ5dGVjb2RlR2VuZXJhdG9yOjpQcm9wZXJ0eVdyaXRhYmxl
LCBtX3Bvc2l0aW9uKTsKKyAgICAgICAgQnl0ZWNvZGVHZW5lcmF0b3I6OlByb3BlcnR5Q29uZmln
dXJhYmxlIHwgQnl0ZWNvZGVHZW5lcmF0b3I6OlByb3BlcnR5V3JpdGFibGUpOwogCi0gICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IHByb3RvdHlwZU5hbWVSZWdpc3RlciA9IGdlbmVyYXRvci5lbWl0TG9h
ZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHByb3BlcnR5TmFtZXMucHJvdG90eXBlKTsKLSAg
ICBnZW5lcmF0b3IuZW1pdENhbGxEZWZpbmVQcm9wZXJ0eShjb25zdHJ1Y3Rvci5nZXQoKSwgcHJv
dG90eXBlTmFtZVJlZ2lzdGVyLmdldCgpLCBwcm90b3R5cGUuZ2V0KCksIG51bGxwdHIsIG51bGxw
dHIsIDAsIG1fcG9zaXRpb24pOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcm90b3R5cGVOYW1l
UmVnaXN0ZXIgPSBnZW5lcmF0b3IuZW1pdExvYWQobnVsbHB0ciwgcHJvcGVydHlOYW1lcy5wcm90
b3R5cGUpOworICAgIGdlbmVyYXRvci5lbWl0Q2FsbERlZmluZVByb3BlcnR5KGNvbnN0cnVjdG9y
LmdldCgpLCBwcm90b3R5cGVOYW1lUmVnaXN0ZXIuZ2V0KCksIHByb3RvdHlwZS5nZXQoKSwgbnVs
bHB0ciwgbnVsbHB0ciwgMCk7CiAKICAgICBpZiAobV9zdGF0aWNNZXRob2RzKQogICAgICAgICBn
ZW5lcmF0b3IuZW1pdE5vZGUoY29uc3RydWN0b3IuZ2V0KCksIG1fc3RhdGljTWV0aG9kcyk7CkBA
IC0zODU4LDcgKzM4NTgsNyBAQCB2b2lkIE9iamVjdFBhdHRlcm5Ob2RlOjpiaW5kVmFsdWUoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogcmhzKQogICAgICAgICAgICAg
aWYgKCFvcHRpb25hbEluZGV4KQogICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0R2V0QnlJ
ZCh0ZW1wLmdldCgpLCByaHMsIHRhcmdldC5wcm9wZXJ0eU5hbWUpOwogICAgICAgICAgICAgZWxz
ZSB7Ci0gICAgICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGluZGV4ID0gZ2VuZXJhdG9y
LmVtaXRMb2FkKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwganNOdW1iZXIob3B0aW9uYWxJbmRl
eC52YWx1ZSgpKSk7CisgICAgICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGluZGV4ID0g
Z2VuZXJhdG9yLmVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKG9wdGlvbmFsSW5kZXgudmFsdWUo
KSkpOwogICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0R2V0QnlWYWwodGVtcC5nZXQoKSwg
cmhzLCBpbmRleC5nZXQoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJ
bmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0
ZXJJbmxpbmVzLmgKaW5kZXggOGM3NDEyNjYyNjVjODE0ODA2ZjFmMGZiNzE0ODM3ZTIzYzUwZGM4
ZC4uZTk2YjEwNWNhZjFhMmUxMDQxYzk5YmY2MWE4YjhiNjczNGRhYzFkMyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklu
bGluZXMuaApAQCAtMjY1Nyw2ICsyNjU3LDExIEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxB
YnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAg
ICAgICAgIGNsb2JiZXJXb3JsZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNsb2JiZXJMaW1pdCk7
CiAgICAgICAgIGJyZWFrOwogICAgIH0KKworICAgIGNhc2UgRGVmaW5lRGF0YVByb3BlcnR5Ogor
ICAgIGNhc2UgRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eToKKyAgICAgICAgY2xvYmJlcldvcmxkKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYywgY2xvYmJlckxpbWl0KTsKKyAgICAgICAgYnJlYWs7CiAgICAg
ICAgIAogICAgIGNhc2UgSW46IHsKICAgICAgICAgLy8gRklYTUU6IFdlIGNhbiBkZXRlcm1pbmUg
d2hlbiB0aGUgcHJvcGVydHkgZGVmaW5pdGVseSBleGlzdHMgYmFzZWQgb24gYWJzdHJhY3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKaW5kZXgg
MDQ1MjI4MGRkMjZmNDBiMGJjYTQ1ZDM4NTFkMTEwZGY0MTZhMGZhNy4uMGI1ZmI5NWQ5NTdiMTJh
NDM4MWNmZmI5YjZjMmE0ZWIzMmFiM2E0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTQyMzgsNiArNDIzOCwzOCBAQCBib29sIEJ5
dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgTkVY
VF9PUENPREUob3BfcHV0X2J5X3ZhbF93aXRoX3RoaXMpOwogICAgICAgICB9CiAKKyAgICAgICAg
Y2FzZSBvcF9kZWZpbmVfZGF0YV9wcm9wZXJ0eTogeworICAgICAgICAgICAgTm9kZSogYmFzZSA9
IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCkpOwor
ICAgICAgICAgICAgTm9kZSogcHJvcGVydHkgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJ
bnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpKTsKKyAgICAgICAgICAgIE5vZGUqIHZhbHVlID0gZ2V0
KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKSk7CisgICAg
ICAgICAgICBOb2RlKiBhdHRyaWJ1dGVzID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5z
dHJ1Y3Rpb25bNF0udS5vcGVyYW5kKSk7CisKKyAgICAgICAgICAgIGFkZFZhckFyZ0NoaWxkKGJh
c2UpOworICAgICAgICAgICAgYWRkVmFyQXJnQ2hpbGQocHJvcGVydHkpOworICAgICAgICAgICAg
YWRkVmFyQXJnQ2hpbGQodmFsdWUpOworICAgICAgICAgICAgYWRkVmFyQXJnQ2hpbGQoYXR0cmli
dXRlcyk7CisgICAgICAgICAgICBhZGRUb0dyYXBoKE5vZGU6OlZhckFyZywgRGVmaW5lRGF0YVBy
b3BlcnR5LCBPcEluZm8oMCksIE9wSW5mbygwKSk7CisKKyAgICAgICAgICAgIE5FWFRfT1BDT0RF
KG9wX2RlZmluZV9kYXRhX3Byb3BlcnR5KTsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2Ugb3Bf
ZGVmaW5lX2FjY2Vzc29yX3Byb3BlcnR5OiB7CisgICAgICAgICAgICBOb2RlKiBiYXNlID0gZ2V0
KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSk7CisgICAg
ICAgICAgICBOb2RlKiBwcm9wZXJ0eSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3Ry
dWN0aW9uWzJdLnUub3BlcmFuZCkpOworICAgICAgICAgICAgTm9kZSogZ2V0dGVyID0gZ2V0KFZp
cnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKSk7CisgICAgICAg
ICAgICBOb2RlKiBzZXR0ZXIgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlv
bls0XS51Lm9wZXJhbmQpKTsKKyAgICAgICAgICAgIE5vZGUqIGF0dHJpYnV0ZXMgPSBnZXQoVmly
dHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvbls1XS51Lm9wZXJhbmQpKTsKKworICAgICAg
ICAgICAgYWRkVmFyQXJnQ2hpbGQoYmFzZSk7CisgICAgICAgICAgICBhZGRWYXJBcmdDaGlsZChw
cm9wZXJ0eSk7CisgICAgICAgICAgICBhZGRWYXJBcmdDaGlsZChnZXR0ZXIpOworICAgICAgICAg
ICAgYWRkVmFyQXJnQ2hpbGQoc2V0dGVyKTsKKyAgICAgICAgICAgIGFkZFZhckFyZ0NoaWxkKGF0
dHJpYnV0ZXMpOworICAgICAgICAgICAgYWRkVG9HcmFwaChOb2RlOjpWYXJBcmcsIERlZmluZUFj
Y2Vzc29yUHJvcGVydHksIE9wSW5mbygwKSwgT3BJbmZvKDApKTsKKworICAgICAgICAgICAgTkVY
VF9PUENPREUob3BfZGVmaW5lX2FjY2Vzc29yX3Byb3BlcnR5KTsKKyAgICAgICAgfQorCiAgICAg
ICAgIGNhc2Ugb3BfdHJ5X2dldF9ieV9pZDoKICAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWQ6CiAg
ICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkX3Byb3RvX2xvYWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKaW5kZXggNDhmYTQ5NTcyZWM1MGVjMTVkMDM3
NzZhNTIyZDZmYmQzNTJiZmU5YS4uYzMyM2Q0NmZiYzNjZjVjMTA0OWZhMjZmYzBlMTkwZjIyNzFh
NDcxOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRp
ZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNw
cApAQCAtMTczLDYgKzE3Myw4IEBAIENhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwoT3Bj
b2RlSUQgb3Bjb2RlSUQsIENvZGVCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjCiAgICAgY2FzZSBv
cF9wdXRfZ2V0dGVyX3NldHRlcl9ieV9pZDoKICAgICBjYXNlIG9wX3B1dF9nZXR0ZXJfYnlfdmFs
OgogICAgIGNhc2Ugb3BfcHV0X3NldHRlcl9ieV92YWw6CisgICAgY2FzZSBvcF9kZWZpbmVfZGF0
YV9wcm9wZXJ0eToKKyAgICBjYXNlIG9wX2RlZmluZV9hY2Nlc3Nvcl9wcm9wZXJ0eToKICAgICBj
YXNlIG9wX2RlbF9ieV9pZDoKICAgICBjYXNlIG9wX2RlbF9ieV92YWw6CiAgICAgY2FzZSBvcF9q
bXA6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmluZGV4IGMxYzNm
ZGRkYjdhN2E2MGI0NjUyYTE3Y2FlMWE5ODNmOGNhZTk2MTEuLmNjY2RmOGJjZDYyNmFhNGQ2NzYz
NzNjZDI4NDJlMmU1NmFlMGFjMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ2xvYmJlcml6ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xv
YmJlcml6ZS5oCkBAIC00ODYsNiArNDg2LDggQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFw
aCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKICAg
ICBjYXNlIFB1dEdldHRlclNldHRlckJ5SWQ6CiAgICAgY2FzZSBQdXRHZXR0ZXJCeVZhbDoKICAg
ICBjYXNlIFB1dFNldHRlckJ5VmFsOgorICAgIGNhc2UgRGVmaW5lRGF0YVByb3BlcnR5OgorICAg
IGNhc2UgRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eToKICAgICBjYXNlIERlbGV0ZUJ5SWQ6CiAgICAg
Y2FzZSBEZWxldGVCeVZhbDoKICAgICBjYXNlIEFycmF5UHVzaDoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRG9lc0dDLmNwcAppbmRleCAyZGNmNTVkMmVkMjhhYWU2MGI2YjhiN2I5YmY2ZGEw
NzE5ZDkyZGQ1Li5mNjlkMmY5ZmY5N2Q0MDhhOGYyZTgxNzZmNWFhN2IzYzljNzUzZGJmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCkBAIC0xMTEsNiArMTExLDggQEAg
Ym9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgUHV0R2V0dGVy
U2V0dGVyQnlJZDoKICAgICBjYXNlIFB1dEdldHRlckJ5VmFsOgogICAgIGNhc2UgUHV0U2V0dGVy
QnlWYWw6CisgICAgY2FzZSBEZWZpbmVEYXRhUHJvcGVydHk6CisgICAgY2FzZSBEZWZpbmVBY2Nl
c3NvclByb3BlcnR5OgogICAgIGNhc2UgRGVsZXRlQnlJZDoKICAgICBjYXNlIERlbGV0ZUJ5VmFs
OgogICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdGaXh1cFBoYXNlLmNwcAppbmRleCA2ZWU1MTQyZjc4ZjYwYmYxMDk2ODNjOGI4OWMxNWQwZTQ1
OGIzZmUwLi43MGVkOGFlMzQwYWMyYzg0M2RlYzE3ZWUxMDdlYThmNmRkNzhmM2IzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKQEAgLTE2MDIsNiArMTYw
MiwzMSBAQCBjbGFzcyBGaXh1cFBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgIGZp
eEVkZ2U8VW50eXBlZFVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAK
KyAgICAgICAgY2FzZSBEZWZpbmVEYXRhUHJvcGVydHk6IHsKKyAgICAgICAgICAgIGZpeEVkZ2U8
Q2VsbFVzZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAwKSk7CisgICAgICAgICAgICBFZGdl
JiBwcm9wZXJ0eUVkZ2UgPSBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpOworICAgICAgICAg
ICAgaWYgKHByb3BlcnR5RWRnZS0+c2hvdWxkU3BlY3VsYXRlU3ltYm9sKCkpCisgICAgICAgICAg
ICAgICAgZml4RWRnZTxTeW1ib2xVc2U+KHByb3BlcnR5RWRnZSk7CisgICAgICAgICAgICBlbHNl
IGlmIChwcm9wZXJ0eUVkZ2UtPnNob3VsZFNwZWN1bGF0ZVN0cmluZygpKQorICAgICAgICAgICAg
ICAgIGZpeEVkZ2U8U3RyaW5nVXNlPihwcm9wZXJ0eUVkZ2UpOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIGZpeEVkZ2U8VW50eXBlZFVzZT4ocHJvcGVydHlFZGdlKTsKKyAgICAg
ICAgICAgIGZpeEVkZ2U8VW50eXBlZFVzZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAyKSk7
CisgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUs
IDMpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBEZWZp
bmVBY2Nlc3NvclByb3BlcnR5OiB7CisgICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG1fZ3Jh
cGgudmFyQXJnQ2hpbGQobm9kZSwgMCkpOworICAgICAgICAgICAgZml4RWRnZTxVbnR5cGVkVXNl
PihtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpKTsKKyAgICAgICAgICAgIGZpeEVkZ2U8Q2Vs
bFVzZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAyKSk7CisgICAgICAgICAgICBmaXhFZGdl
PENlbGxVc2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMykpOworICAgICAgICAgICAgZml4
RWRnZTxJbnQzMlVzZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCA0KSk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorCisKKwogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICAgICAg
Ly8gSGF2ZSB0aGVzZSBuby1vcCBjYXNlcyBoZXJlIHRvIGVuc3VyZSB0aGF0IG5vYm9keSBmb3Jn
ZXRzIHRvIGFkZCBoYW5kbGVycyBmb3IgbmV3IG9wY29kZXMuCiAgICAgICAgIGNhc2UgU2V0QXJn
dW1lbnQ6CkBAIC0xNjcxLDggKzE2OTYsNiBAQCBjbGFzcyBGaXh1cFBoYXNlIDogcHVibGljIFBo
YXNlIHsKICAgICAgICAgY2FzZSBHZXRCeVZhbFdpdGhUaGlzOgogICAgICAgICBjYXNlIENvbXBh
cmVFcVB0cjoKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBi
cmVhazsKICNlbHNlCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBicmVhazsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAppbmRleCAxZjM1ZWIyZDkwM2I0NjZjMjQx
OGMzZGMxYjYxODUzZWJlNWQ2OTc5Li4yNTE1ZWIzNDJiZDczODllMTE4ODdhYmQ4MmYwZWNmZjAx
MDdkYmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCkBAIC0xOTks
NiArMTk5LDggQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKFB1
dEdldHRlclNldHRlckJ5SWQsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhQdXRHZXR0
ZXJCeVZhbCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFB1dFNldHRlckJ5VmFsLCBO
b2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8oRGVmaW5lRGF0YVByb3BlcnR5LCBOb2RlTXVz
dEdlbmVyYXRlIHwgTm9kZUhhc1ZhckFyZ3MpIFwKKyAgICBtYWNybyhEZWZpbmVBY2Nlc3NvclBy
b3BlcnR5LCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUhhc1ZhckFyZ3MpIFwKICAgICBtYWNybyhE
ZWxldGVCeUlkLCBOb2RlUmVzdWx0Qm9vbGVhbiB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBt
YWNybyhEZWxldGVCeVZhbCwgTm9kZVJlc3VsdEJvb2xlYW4gfCBOb2RlTXVzdEdlbmVyYXRlKSBc
CiAgICAgbWFjcm8oQ2hlY2tTdHJ1Y3R1cmUsIE5vZGVNdXN0R2VuZXJhdGUpIFwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCmluZGV4IGYxMDdiNThjNTBmOGM4
NDA4YzliMTU2M2M0ODc4NDBjNTgzMzE1MGMuLjM1MWViZTNjMDFmZjlmNmY5ZDFlY2RkMGEzMzli
MDA4MTBiZmE5YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3Bl
cmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25z
LmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkRGR1RvRlRMRGVmZXJyZWRDb21waWxh
dGlvbkNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiREZHVG9GVExGb3JPU1JFbnRyeURlZmVycmVkQ29t
cGlsYXRpb25DYWxsYmFjay5oIgogI2luY2x1ZGUgIkRGR1dvcmtsaXN0LmgiCisjaW5jbHVkZSAi
RGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzLmgiCiAjaW5jbHVkZSAiRGlyZWN0QXJndW1lbnRzLmgi
CiAjaW5jbHVkZSAiRlRMRm9yT1NSRW50cnlKSVRDb2RlLmgiCiAjaW5jbHVkZSAiRlRMT1NSRW50
cnkuaCIKQEAgLTEwMjEsNiArMTAyMiw4MiBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
UHV0QnlWYWxXaXRoVGhpcyhFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuYwogICAg
IHB1dFdpdGhUaGlzPGZhbHNlPihleGVjLCBlbmNvZGVkQmFzZSwgZW5jb2RlZFRoaXMsIGVuY29k
ZWRWYWx1ZSwgcHJvcGVydHkpOwogfQogCitBTFdBWVNfSU5MSU5FIHN0YXRpYyB2b2lkIGRlZmlu
ZURhdGFQcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwgSlNPYmplY3QqIGJhc2UsIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgaW50MzJfdCBhdHRy
aWJ1dGVzKQoreworICAgIFByb3BlcnR5RGVzY3JpcHRvciBkZXNjcmlwdG9yID0gdG9Qcm9wZXJ0
eURlc2NyaXB0b3IodmFsdWUsIGpzVW5kZWZpbmVkKCksIGpzVW5kZWZpbmVkKCksIERlZmluZVBy
b3BlcnR5QXR0cmlidXRlcyhhdHRyaWJ1dGVzKSk7CisgICAgQVNTRVJUKChkZXNjcmlwdG9yLmF0
dHJpYnV0ZXMoKSAmIEFjY2Vzc29yKSB8fCAoIWRlc2NyaXB0b3IuaXNBY2Nlc3NvckRlc2NyaXB0
b3IoKSkpOworICAgIGJhc2UtPm1ldGhvZFRhYmxlKHZtKS0+ZGVmaW5lT3duUHJvcGVydHkoYmFz
ZSwgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCB0cnVlKTsKK30KKwordm9pZCBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkRlZmluZURhdGFQcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIEpT
T2JqZWN0KiBiYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkUHJvcGVydHksIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSwgaW50MzJfdCBhdHRyaWJ1dGVzKQoreworICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIElkZW50aWZp
ZXIgcHJvcGVydHlOYW1lID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRQcm9wZXJ0eSkudG9Qcm9w
ZXJ0eUtleShleGVjKTsKKyAgICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0aW9uKCkpKQorICAg
ICAgICByZXR1cm47CisgICAgZGVmaW5lRGF0YVByb3BlcnR5KGV4ZWMsIHZtLCBiYXNlLCBwcm9w
ZXJ0eU5hbWUsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpLCBhdHRyaWJ1dGVzKTsKK30K
Kwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlZmluZURhdGFQcm9wZXJ0eVN0cmluZyhF
eGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlLCBKU1N0cmluZyogcHJvcGVydHksIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgaW50MzJfdCBhdHRyaWJ1dGVzKQoreworICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4
ZWMpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIElk
ZW50aWZpZXIgcHJvcGVydHlOYW1lID0gcHJvcGVydHktPnRvSWRlbnRpZmllcihleGVjKTsKKyAg
ICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0aW9uKCkpKQorICAgICAgICByZXR1cm47CisgICAg
ZGVmaW5lRGF0YVByb3BlcnR5KGV4ZWMsIHZtLCBiYXNlLCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkVmFsdWUpLCBhdHRyaWJ1dGVzKTsKK30KKwordm9pZCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkRlZmluZURhdGFQcm9wZXJ0eVN5bWJvbChFeGVjU3RhdGUqIGV4ZWMsIEpT
T2JqZWN0KiBiYXNlLCBTeW1ib2wqIHByb3BlcnR5LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUsIGludDMyX3QgYXR0cmlidXRlcykKK3sKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKKyAgICBkZWZpbmVEYXRh
UHJvcGVydHkoZXhlYywgdm0sIGJhc2UsIElkZW50aWZpZXI6OmZyb21VaWQocHJvcGVydHktPnBy
aXZhdGVOYW1lKCkpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSwgYXR0cmlidXRlcyk7
Cit9CisKK0FMV0FZU19JTkxJTkUgc3RhdGljIHZvaWQgZGVmaW5lQWNjZXNzb3JQcm9wZXJ0eShF
eGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwgSlNPYmplY3QqIGJhc2UsIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgSlNPYmplY3QqIGdldHRlciwgSlNPYmplY3QqIHNldHRlciwgaW50MzJf
dCBhdHRyaWJ1dGVzKQoreworICAgIFByb3BlcnR5RGVzY3JpcHRvciBkZXNjcmlwdG9yID0gdG9Q
cm9wZXJ0eURlc2NyaXB0b3IoanNVbmRlZmluZWQoKSwgZ2V0dGVyLCBzZXR0ZXIsIERlZmluZVBy
b3BlcnR5QXR0cmlidXRlcyhhdHRyaWJ1dGVzKSk7CisgICAgQVNTRVJUKChkZXNjcmlwdG9yLmF0
dHJpYnV0ZXMoKSAmIEFjY2Vzc29yKSB8fCAoIWRlc2NyaXB0b3IuaXNBY2Nlc3NvckRlc2NyaXB0
b3IoKSkpOworICAgIGJhc2UtPm1ldGhvZFRhYmxlKHZtKS0+ZGVmaW5lT3duUHJvcGVydHkoYmFz
ZSwgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCB0cnVlKTsKK30KKwordm9pZCBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkRlZmluZUFjY2Vzc29yUHJvcGVydHkoRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCogYmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFByb3BlcnR5LCBKU09iamVj
dCogZ2V0dGVyLCBKU09iamVjdCogc2V0dGVyLCBpbnQzMl90IGF0dHJpYnV0ZXMpCit7CisgICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2
bSwgZXhlYyk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisg
ICAgSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFByb3Bl
cnR5KS50b1Byb3BlcnR5S2V5KGV4ZWMpOworICAgIGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRp
b24oKSkpCisgICAgICAgIHJldHVybjsKKyAgICBkZWZpbmVBY2Nlc3NvclByb3BlcnR5KGV4ZWMs
IHZtLCBiYXNlLCBwcm9wZXJ0eU5hbWUsIGdldHRlciwgc2V0dGVyLCBhdHRyaWJ1dGVzKTsKK30K
Kwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlZmluZUFjY2Vzc29yUHJvcGVydHlTdHJp
bmcoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogYmFzZSwgSlNTdHJpbmcqIHByb3BlcnR5LCBK
U09iamVjdCogZ2V0dGVyLCBKU09iamVjdCogc2V0dGVyLCBpbnQzMl90IGF0dHJpYnV0ZXMpCit7
CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKCZ2bSwgZXhlYyk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworCisgICAgSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUgPSBwcm9wZXJ0eS0+dG9JZGVudGlmaWVy
KGV4ZWMpOworICAgIGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRpb24oKSkpCisgICAgICAgIHJl
dHVybjsKKyAgICBkZWZpbmVBY2Nlc3NvclByb3BlcnR5KGV4ZWMsIHZtLCBiYXNlLCBwcm9wZXJ0
eU5hbWUsIGdldHRlciwgc2V0dGVyLCBhdHRyaWJ1dGVzKTsKK30KKwordm9pZCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkRlZmluZUFjY2Vzc29yUHJvcGVydHlTeW1ib2woRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCogYmFzZSwgU3ltYm9sKiBwcm9wZXJ0eSwgSlNPYmplY3QqIGdldHRlciwgSlNP
YmplY3QqIHNldHRlciwgaW50MzJfdCBhdHRyaWJ1dGVzKQoreworICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOworICAg
IGRlZmluZUFjY2Vzc29yUHJvcGVydHkoZXhlYywgdm0sIGJhc2UsIElkZW50aWZpZXI6OmZyb21V
aWQocHJvcGVydHktPnByaXZhdGVOYW1lKCkpLCBnZXR0ZXIsIHNldHRlciwgYXR0cmlidXRlcyk7
Cit9CisKIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXJyYXkoRXhlY1N0YXRlKiBl
eGVjLCBTdHJ1Y3R1cmUqIGFycmF5U3RydWN0dXJlLCB2b2lkKiBidWZmZXIsIHNpemVfdCBzaXpl
KQogewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09wZXJhdGlvbnMuaAppbmRleCA1MjdiZmU1ODc2YWZjNzgzN2JhMzBmZDIxMGQ1YTQ3YzNi
Mjk1MWU0Li42ODZlNjNiOWQzNDIzNTM2MDE2MTEyMDZiODBhYzMzOTVkNzNjYmU2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaApAQCAtMTE0LDYgKzExNCwxMiBA
QCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFdpdGhUaGlzKEV4ZWNTdGF0ZSos
IEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSgogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1
dEJ5SWRXaXRoVGhpc1N0cmljdChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBVbmlxdWVkU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsK
IHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbFdpdGhUaGlzKEV4ZWNTdGF0ZSos
IEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRK
U1ZhbHVlKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlW
YWxXaXRoVGhpc1N0cmljdChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwordm9pZCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlZmluZURhdGFQcm9wZXJ0eShFeGVjU3RhdGUqLCBKU09i
amVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgaW50MzJfdCkgV1RGX0lOVEVS
TkFMOwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlZmluZURhdGFQcm9wZXJ0eVN0cmlu
ZyhFeGVjU3RhdGUqLCBKU09iamVjdCosIEpTU3RyaW5nKiwgRW5jb2RlZEpTVmFsdWUsIGludDMy
X3QpIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWZpbmVEYXRh
UHJvcGVydHlTeW1ib2woRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBTeW1ib2wqLCBFbmNvZGVkSlNW
YWx1ZSwgaW50MzJfdCkgV1RGX0lOVEVSTkFMOwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkRlZmluZUFjY2Vzc29yUHJvcGVydHkoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBFbmNvZGVkSlNW
YWx1ZSwgSlNPYmplY3QqLCBKU09iamVjdCosIGludDMyX3QpIFdURl9JTlRFUk5BTDsKK3ZvaWQg
SklUX09QRVJBVElPTiBvcGVyYXRpb25EZWZpbmVBY2Nlc3NvclByb3BlcnR5U3RyaW5nKEV4ZWNT
dGF0ZSosIEpTT2JqZWN0KiwgSlNTdHJpbmcqLCBKU09iamVjdCosIEpTT2JqZWN0KiwgaW50MzJf
dCkgV1RGX0lOVEVSTkFMOwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlZmluZUFjY2Vz
c29yUHJvcGVydHlTeW1ib2woRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBTeW1ib2wqLCBKU09iamVj
dCosIEpTT2JqZWN0KiwgaW50MzJfdCkgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklU
X09QRVJBVElPTiBvcGVyYXRpb25BcnJheVB1c2goRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlLCBKU0FycmF5KikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklU
X09QRVJBVElPTiBvcGVyYXRpb25BcnJheVB1c2hEb3VibGUoRXhlY1N0YXRlKiwgZG91YmxlIHZh
bHVlLCBKU0FycmF5KikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25BcnJheVBvcChFeGVjU3RhdGUqLCBKU0FycmF5KikgV1RGX0lOVEVSTkFMOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFn
YXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlLmNwcAppbmRleCAwNmRiNDBlYjY3NjY3MjQ2ZDM0OTA5MDU5MTliZjVh
YmQwMGViOTllLi44N2RiZTgzYTg4OTBjMWQ3YWQzNDhlMDU0ZTVhNzllOWQ1YTQ0MmQ4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlv
blBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlLmNwcApAQCAtMTA0MCw2ICsxMDQwLDggQEAgY2xhc3MgUHJlZGljdGlv
blByb3BhZ2F0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICBjYXNlIFB1dEdldHRl
clNldHRlckJ5SWQ6CiAgICAgICAgIGNhc2UgUHV0R2V0dGVyQnlWYWw6CiAgICAgICAgIGNhc2Ug
UHV0U2V0dGVyQnlWYWw6CisgICAgICAgIGNhc2UgRGVmaW5lRGF0YVByb3BlcnR5OgorICAgICAg
ICBjYXNlIERlZmluZUFjY2Vzc29yUHJvcGVydHk6CiAgICAgICAgIGNhc2UgREZHOjpKdW1wOgog
ICAgICAgICBjYXNlIEJyYW5jaDoKICAgICAgICAgY2FzZSBTd2l0Y2g6CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCmluZGV4IDIyYjkzNDAwNTgzYWM2ZGY4
NjNiMGJlMzhmNmI4MzM2YTUwNDE5YWMuLmMxMzJmOTU3NGIyNWU2NGU2YWNjNTYxNjBiOTQ3OTU4
MmI5M2FmMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRv
RXhlY3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0
ZS5oCkBAIC0yMTQsNiArMjE0LDggQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVU
eXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgUHV0R2V0dGVy
U2V0dGVyQnlJZDoKICAgICBjYXNlIFB1dEdldHRlckJ5VmFsOgogICAgIGNhc2UgUHV0U2V0dGVy
QnlWYWw6CisgICAgY2FzZSBEZWZpbmVEYXRhUHJvcGVydHk6CisgICAgY2FzZSBEZWZpbmVBY2Nl
c3NvclByb3BlcnR5OgogICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmU6CiAgICAgY2FzZSBHZXRFeGVj
dXRhYmxlOgogICAgIGNhc2UgR2V0QnV0dGVyZmx5OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCmluZGV4IDQ3ZWFkMzBhYzVjNTVmMmMzNTg2ZmQyNjBm
YjQ0Mjg4ZTA2ODdkOWIuLmUwYjJkZWJhMjcxYTM2MDA2Y2Y5ODk1MmRmYzU0ODhjNDYzNDk1N2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKQEAg
LTEzNDQsNiArMTM0NCwzNiBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVCB7CiAgICAgICAgIG1faml0
LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczLCBhcmc0KTsKICAg
ICAgICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKICAgICB9CisgICAgSklUQ29tcGls
ZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FT0pKWiBvcGVyYXRpb24sIEdQ
UlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMsIEdQUlJlZyBhcmc0KQorICAgIHsK
KyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFy
ZzMsIGFyZzQpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOworICAgIH0K
KyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VPSnNz
Slogb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJS
ZWcgYXJnNCkKKyAgICB7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShhcmcxLCBhcmcyLCBhcmczLCBhcmc0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGwob3Bl
cmF0aW9uKTsKKyAgICB9CisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJ
VE9wZXJhdGlvbl9FT1N5bUpaIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBH
UFJSZWcgYXJnMywgR1BSUmVnIGFyZzQpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMywgYXJnNCk7CisgICAgICAgIHJldHVy
biBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CisgICAgfQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNh
bGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRU9KT09aIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEs
IEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVnIGFyZzQsIEdQUlJlZyBhcmc1KQorICAg
IHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIs
IGFyZzMsIGFyZzQsIGFyZzUpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24p
OworICAgIH0KKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0
aW9uX0VPSnNzT09aIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcg
YXJnMywgR1BSUmVnIGFyZzQsIEdQUlJlZyBhcmc1KQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMsIGFyZzQsIGFyZzUpOwor
ICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOworICAgIH0KKyAgICBKSVRDb21w
aWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VPU3ltT09aIG9wZXJhdGlv
biwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVnIGFyZzQsIEdQ
UlJlZyBhcmc1KQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0
YXRlKGFyZzEsIGFyZzIsIGFyZzMsIGFyZzQsIGFyZzUpOworICAgICAgICByZXR1cm4gYXBwZW5k
Q2FsbChvcGVyYXRpb24pOworICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0
aW9uKFZfSklUT3BlcmF0aW9uX0VPSklVaSBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBHUFJSZWcg
YXJnMiwgVW5pcXVlZFN0cmluZ0ltcGwqIGltcGwsIHVuc2lnbmVkIHZhbHVlKQogICAgIHsKICAg
ICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIFRydXN0
ZWRJbW1QdHIoaW1wbCksIFRydXN0ZWRJbW0zMih2YWx1ZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKaW5kZXggYTIyZGJl
YWRlNzEwOGY3NTU5NjY2YjkzZjlhZWM3ZWY1MGMxMzk1Yi4uZTNkNmViZTk2MzhhOGI1ZGFiMzVh
YjcwYjVmNzFhMjIzYmMwYTY0YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCkBAIC00NDkxLDYgKzQ0OTEsMjExIEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogCisgICAgY2FzZSBEZWZpbmVQcm9wZXJ0eTogeworI2lmIENQVShYODYpCisgICAgICAg
IC8vIFdlIGRvbid0IGhhdmUgZW5vdWdoIHJlZ2lzdGVycyBvbiBYODYgdG8gZG8gdGhpcworICAg
ICAgICAvLyB3aXRob3V0IHNldHRpbmcgdXAgdGhlIGNhbGwgZnJhbWUgaW5jcmVtZW50YWxseS4K
KyAgICAgICAgdW5zaWduZWQgaW5kZXggPSAwOworICAgICAgICBtX2ppdC5wb2tlKEdQUkluZm86
OmNhbGxGcmFtZVJlZ2lzdGVyLCBpbmRleCsrKTsKKworICAgICAgICB7CisgICAgICAgICAgICBT
cGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQo
bm9kZSwgMCkpOworICAgICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOworCisg
ICAgICAgICAgICBtX2ppdC5wb2tlKGJhc2VHUFIsIGluZGV4KyspOworCisgICAgICAgICAgICBF
ZGdlJiBwcm9wZXJ0eUVkZ2UgPSBtX2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIDEpOwor
ICAgICAgICAgICAgc3dpdGNoIChwcm9wZXJ0eUVkZ2UudXNlS2luZCgpKSB7CisgICAgICAgICAg
ICBjYXNlIFVudHlwZWRVc2U6IHsKKyAgICAgICAgICAgICAgICBKU1ZhbHVlT3BlcmFuZCBwcm9w
ZXJ0eSh0aGlzLCBwcm9wZXJ0eUVkZ2UpOworICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzIHBy
b3BlcnR5UmVncyA9IHByb3BlcnR5LmpzVmFsdWVSZWdzKCk7CisKKyAgICAgICAgICAgICAgICBt
X2ppdC5wb2tlKHByb3BlcnR5UmVncy5wYXlsb2FkR1BSKCksIGluZGV4KyspOworICAgICAgICAg
ICAgICAgIG1faml0LnBva2UocHJvcGVydHlSZWdzLnRhZ0dQUigpLCBpbmRleCsrKTsKKworICAg
ICAgICAgICAgICAgIG9wZXJhdGlvbiA9IG9wZXJhdGlvbkRlZmluZVByb3BlcnR5OworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjYXNlIFN5bWJv
bFVzZTogeworICAgICAgICAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHByb3BlcnR5KHRo
aXMsIHByb3BlcnR5RWRnZSk7CisgICAgICAgICAgICAgICAgR1BSUmVnIHByb3BlcnR5R1BSID0g
cHJvcGVydHkuZ3ByKCk7CisgICAgICAgICAgICAgICAgc3BlY3VsYXRlU3ltYm9sKHByb3BlcnR5
RWRnZSwgcHJvcGVydHlHUFIpOworCisgICAgICAgICAgICAgICAgbV9qaXQucG9rZShwcm9wZXJ0
eUdQUiwgaW5kZXgrKyk7CisKKyAgICAgICAgICAgICAgICBvcGVyYXRpb24gPSBvcGVyYXRpb25E
ZWZpbmVQcm9wZXJ0eVN5bWJvbDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgY2FzZSBTdHJpbmdVc2U6IHsKKyAgICAgICAgICAgICAgICBTcGVj
dWxhdGVDZWxsT3BlcmFuZCBwcm9wZXJ0eSh0aGlzLCBwcm9wZXJ0eUVkZ2UpOworICAgICAgICAg
ICAgICAgIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IHByb3BlcnR5LmdwcigpOworICAgICAgICAgICAg
ICAgIHNwZWN1bGF0ZVN0cmluZyhwcm9wZXJ0eUVkZ2UsIHByb3BlcnR5R1BSKTsKKworICAgICAg
ICAgICAgICAgIG1faml0LnBva2UocHJvcGVydHlHUFIsIGluZGV4KyspOworCisgICAgICAgICAg
ICAgICAgb3BlcmF0aW9uID0gb3BlcmF0aW9uRGVmaW5lUHJvcGVydHlTdHJpbmc7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWVPckdldHRlcih0aGlzLCBtX2pp
dC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIDIpKTsKKyAgICAgICAgICAgIEpTVmFsdWVSZWdz
IHZhbHVlT3JHZXR0ZXJSZWdzID0gdmFsdWVPckdldHRlci5qc1ZhbHVlUmVncygpOworCisgICAg
ICAgICAgICBtX2ppdC5wb2tlKHZhbHVlT3JHZXR0ZXJSZWdzLnBheWxvYWRHUFIoKSwgaW5kZXgr
Kyk7CisgICAgICAgICAgICBtX2ppdC5wb2tlKHZhbHVlT3JHZXR0ZXJSZWdzLnRhZ0dQUigpLCBp
bmRleCsrKTsKKworICAgICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAgICAgICAgfQorCisg
ICAgICAgIEpTVmFsdWVPcGVyYW5kIHNldHRlcih0aGlzLCBtX2ppdC5ncmFwaCgpLnZhckFyZ0No
aWxkKG5vZGUsIDMpKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3Mgc2V0dGVyUmVncyA9IHNldHRlci5q
c1ZhbHVlUmVncygpOworCisgICAgICAgIFNwZWN1bGF0ZUludDMyT3BlcmFuZCBhdHRyaWJ1dGVz
KHRoaXMsIG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgNCkpOworICAgICAgICBHUFJS
ZWcgYXR0cmlidXRlc0dQUiA9IGF0dHJpYnV0ZXMuZ3ByKCk7CisKKyAgICAgICAgbV9qaXQucG9r
ZShzZXR0ZXJSZWdzLnBheWxvYWRHUFIoKSwgaW5kZXgrKyk7CisgICAgICAgIG1faml0LnBva2Uo
c2V0dGVyUmVncy50YWdHUFIoKSwgaW5kZXgrKyk7CisKKyAgICAgICAgbV9qaXQucG9rZShhdHRy
aWJ1dGVzR1BSLCBpbmRleCsrKTsKKworICAgICAgICBmbHVzaFJlZ2lzdGVycygpOworICAgICAg
ICBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CisgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7
CisjZWxpZiBDUFUoTUlQUykKKyAgICAgICAgLy8gV2UgZG9uJ3QgaGF2ZSBlbm91Z2ggcmVnaXN0
ZXJzIG9uIE1JUFMgZWl0aGVyIGJ1dCB0aGUgQUJJIGlzIGEgbGl0dGxlIGRpZmZlcmVudC4KKyAg
ICAgICAgdW5zaWduZWQgaW5kZXggPSA0OworICAgICAgICBtX2ppdC5tb3ZlKEdQUkluZm86OmNh
bGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAgICB7CisgICAg
ICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG1faml0LmdyYXBoKCkudmFy
QXJnQ2hpbGQobm9kZSwgMCkpOworICAgICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdw
cigpOworCisgICAgICAgICAgICBtX2ppdC5tb3ZlKGJhc2VHUFIsIEdQUkluZm86OmFyZ3VtZW50
R1BSMSk7CisKKyAgICAgICAgICAgIEVkZ2UmIHByb3BlcnR5RWRnZSA9IG1faml0LmdyYXBoKCku
dmFyQXJnQ2hpbGQobm9kZSwgMSk7CisgICAgICAgICAgICBzd2l0Y2ggKHByb3BlcnR5RWRnZS51
c2VLaW5kKCkpIHsKKyAgICAgICAgICAgIGNhc2UgVW50eXBlZFVzZTogeworICAgICAgICAgICAg
ICAgIEpTVmFsdWVPcGVyYW5kIHByb3BlcnR5KHRoaXMsIHByb3BlcnR5RWRnZSk7CisgICAgICAg
ICAgICAgICAgSlNWYWx1ZVJlZ3MgcHJvcGVydHlSZWdzID0gcHJvcGVydHkuanNWYWx1ZVJlZ3Mo
KTsKKworICAgICAgICAgICAgICAgIG1faml0Lm1vdmUocHJvcGVydHlSZWdzLnBheWxvYWRHUFIo
KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKKyAgICAgICAgICAgICAgICBtX2ppdC5wb2tlKHBy
b3BlcnR5UmVncy50YWdHUFIoKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIzKTsKKworICAgICAgICAg
ICAgICAgIG9wZXJhdGlvbiA9IG9wZXJhdGlvbkRlZmluZVByb3BlcnR5OworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjYXNlIFN5bWJvbFVzZTog
eworICAgICAgICAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHByb3BlcnR5KHRoaXMsIHBy
b3BlcnR5RWRnZSk7CisgICAgICAgICAgICAgICAgR1BSUmVnIHByb3BlcnR5R1BSID0gcHJvcGVy
dHkuZ3ByKCk7CisgICAgICAgICAgICAgICAgc3BlY3VsYXRlU3ltYm9sKHByb3BlcnR5RWRnZSwg
cHJvcGVydHlHUFIpOworCisgICAgICAgICAgICAgICAgbV9qaXQucG9rZShwcm9wZXJ0eUdQUiwg
R1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKKworICAgICAgICAgICAgICAgIG9wZXJhdGlvbiA9IG9w
ZXJhdGlvbkRlZmluZVByb3BlcnR5U3ltYm9sOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBjYXNlIFN0cmluZ1VzZTogeworICAgICAgICAgICAg
ICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHByb3BlcnR5KHRoaXMsIHByb3BlcnR5RWRnZSk7Cisg
ICAgICAgICAgICAgICAgR1BSUmVnIHByb3BlcnR5R1BSID0gcHJvcGVydHkuZ3ByKCk7CisgICAg
ICAgICAgICAgICAgc3BlY3VsYXRlU3RyaW5nKHByb3BlcnR5RWRnZSwgcHJvcGVydHlHUFIpOwor
CisgICAgICAgICAgICAgICAgbV9qaXQucG9rZShwcm9wZXJ0eUdQUiwgR1BSSW5mbzo6YXJndW1l
bnRHUFIyKTsKKworICAgICAgICAgICAgICAgIG9wZXJhdGlvbiA9IG9wZXJhdGlvbkRlZmluZVBy
b3BlcnR5U3RyaW5nOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZh
bHVlT3JHZXR0ZXIodGhpcywgbV9qaXQuZ3JhcGgoKS52YXJBcmdDaGlsZChub2RlLCAyKSk7Cisg
ICAgICAgICAgICBKU1ZhbHVlUmVncyB2YWx1ZU9yR2V0dGVyUmVncyA9IHZhbHVlT3JHZXR0ZXIu
anNWYWx1ZVJlZ3MoKTsKKworICAgICAgICAgICAgbV9qaXQucG9rZSh2YWx1ZU9yR2V0dGVyUmVn
cy5wYXlsb2FkR1BSKCksIGluZGV4KyspOworICAgICAgICAgICAgbV9qaXQucG9rZSh2YWx1ZU9y
R2V0dGVyUmVncy50YWdHUFIoKSwgaW5kZXgrKyk7CisKKyAgICAgICAgICAgIGZsdXNoUmVnaXN0
ZXJzKCk7CisgICAgICAgIH0KKworICAgICAgICBKU1ZhbHVlT3BlcmFuZCBzZXR0ZXIodGhpcywg
bV9qaXQuZ3JhcGgoKS52YXJBcmdDaGlsZChub2RlLCAzKSk7CisgICAgICAgIEpTVmFsdWVSZWdz
IHNldHRlclJlZ3MgPSBzZXR0ZXIuanNWYWx1ZVJlZ3MoKTsKKworICAgICAgICBTcGVjdWxhdGVJ
bnQzMk9wZXJhbmQgYXR0cmlidXRlcyh0aGlzLCBtX2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5v
ZGUsIDQpKTsKKyAgICAgICAgR1BSUmVnIGF0dHJpYnV0ZXNHUFIgPSBhdHRyaWJ1dGVzLmdwcigp
OworCisgICAgICAgIG1faml0LnBva2Uoc2V0dGVyUmVncy5wYXlsb2FkR1BSKCksIGluZGV4Kysp
OworICAgICAgICBtX2ppdC5wb2tlKHNldHRlclJlZ3MudGFnR1BSKCksIGluZGV4KyspOworCisg
ICAgICAgIG1faml0LnBva2UoYXR0cmlidXRlc0dQUiwgaW5kZXgrKyk7CisKKyAgICAgICAgZmx1
c2hSZWdpc3RlcnMoKTsKKyAgICAgICAgYXBwZW5kQ2FsbChvcGVyYXRpb24pOworICAgICAgICBt
X2ppdC5leGNlcHRpb25DaGVjaygpOworI2Vsc2UKKyAgICAgICAgc3RhdGljX2Fzc2VydChHUFJJ
bmZvOjpudW1iZXJPZlJlZ2lzdGVycyA+PSA4LCAiV2UgYXJlIGFzc3VtaW5nIHdlIGhhdmUgZW5v
dWdoIHJlZ2lzdGVycyB0byBtYWtlIHRoaXMgY2FsbCB3aXRob3V0IGluY3JlbWVudGFsbHkgc2V0
dGluZyB1cCB0aGUgYXJndW1lbnRzLiIpOworCisgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5k
IGJhc2UodGhpcywgbV9qaXQuZ3JhcGgoKS52YXJBcmdDaGlsZChub2RlLCAwKSk7CisgICAgICAg
IEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKKworICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2
YWx1ZU9yR2V0dGVyKHRoaXMsIG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMikpOwor
ICAgICAgICBKU1ZhbHVlUmVncyB2YWx1ZU9yR2V0dGVyUmVncyA9IHZhbHVlT3JHZXR0ZXIuanNW
YWx1ZVJlZ3MoKTsKKworICAgICAgICBKU1ZhbHVlT3BlcmFuZCBzZXR0ZXIodGhpcywgbV9qaXQu
Z3JhcGgoKS52YXJBcmdDaGlsZChub2RlLCAzKSk7CisgICAgICAgIEpTVmFsdWVSZWdzIHNldHRl
clJlZ3MgPSBzZXR0ZXIuanNWYWx1ZVJlZ3MoKTsKKworICAgICAgICBTcGVjdWxhdGVJbnQzMk9w
ZXJhbmQgYXR0cmlidXRlcyh0aGlzLCBtX2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIDQp
KTsKKyAgICAgICAgR1BSUmVnIGF0dHJpYnV0ZXNHUFIgPSBhdHRyaWJ1dGVzLmdwcigpOworCisg
ICAgICAgIEVkZ2UmIHByb3BlcnR5RWRnZSA9IG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9k
ZSwgMSk7CisgICAgICAgIHN3aXRjaCAocHJvcGVydHlFZGdlLnVzZUtpbmQoKSkgeworICAgICAg
ICBjYXNlIFVudHlwZWRVc2U6IHsKKyAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHByb3BlcnR5
KHRoaXMsIHByb3BlcnR5RWRnZSk7CisgICAgICAgICAgICBKU1ZhbHVlUmVncyBwcm9wZXJ0eVJl
Z3MgPSBwcm9wZXJ0eS5qc1ZhbHVlUmVncygpOworCisgICAgICAgICAgICBmbHVzaFJlZ2lzdGVy
cygpOworICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWZpbmVQcm9wZXJ0eSwg
Tm9SZXN1bHQsIGJhc2VHUFIsIHByb3BlcnR5UmVncywgdmFsdWVPckdldHRlclJlZ3MsIHNldHRl
clJlZ3MsIGF0dHJpYnV0ZXNHUFIpOworICAgICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2so
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBTeW1ib2xV
c2U6IHsKKyAgICAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHByb3BlcnR5KHRoaXMsIHBy
b3BlcnR5RWRnZSk7CisgICAgICAgICAgICBHUFJSZWcgcHJvcGVydHlHUFIgPSBwcm9wZXJ0eS5n
cHIoKTsKKyAgICAgICAgICAgIHNwZWN1bGF0ZVN5bWJvbChwcm9wZXJ0eUVkZ2UsIHByb3BlcnR5
R1BSKTsKKworICAgICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAgICAgICAgICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uRGVmaW5lUHJvcGVydHlTeW1ib2wsIE5vUmVzdWx0LCBiYXNlR1BS
LCBwcm9wZXJ0eUdQUiwgdmFsdWVPckdldHRlclJlZ3MsIHNldHRlclJlZ3MsIGF0dHJpYnV0ZXNS
ZWdzKTsKKyAgICAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgU3RyaW5nVXNlOiB7CisgICAgICAgICAg
ICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBwcm9wZXJ0eSh0aGlzLCBwcm9wZXJ0eUVkZ2UpOworICAg
ICAgICAgICAgR1BSUmVnIHByb3BlcnR5R1BSID0gcHJvcGVydHkuZ3ByKCk7CisgICAgICAgICAg
ICBzcGVjdWxhdGVTdHJpbmcocHJvcGVydHlFZGdlLCBwcm9wZXJ0eUdQUik7CisKKyAgICAgICAg
ICAgIGZsdXNoUmVnaXN0ZXJzKCk7CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
bkRlZmluZVByb3BlcnR5U3RyaW5nLCBOb1Jlc3VsdCwgYmFzZUdQUiwgcHJvcGVydHlHUFIsIHZh
bHVlT3JHZXR0ZXJSZWdzLCBzZXR0ZXJSZWdzLCBhdHRyaWJ1dGVzR1BSKTsKKyAgICAgICAgICAg
IG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICB9CisjZW5kaWYKKworICAgICAgICBub1Jlc3VsdChub2RlKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBHZXRHbG9iYWxMZXhpY2FsVmFyaWFibGU6CiAg
ICAgY2FzZSBHZXRHbG9iYWxWYXI6IHsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdFBheWxv
YWQodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDY0LmNwcAppbmRleCBhYjI4ODYyYzE2MjY5NDMzNjJjMWE1NTdiYmVlMzIwZWQzZjNkNGMx
Li5hNzRmNzlhZjFiOTZhNzBhZDY0ODhlYzMxODBiNWMxN2NkY2NhMjlhIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTQ0NDgs
NiArNDQ0OCwxMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQog
ICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIERlZmluZURhdGFQcm9wZXJ0eTogewor
ICAgICAgICBzdGF0aWNfYXNzZXJ0KEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzID49IDQsICJX
ZSBhcmUgYXNzdW1pbmcgd2UgaGF2ZSBlbm91Z2ggcmVnaXN0ZXJzIHRvIG1ha2UgdGhpcyBjYWxs
IHdpdGhvdXQgaW5jcmVtZW50YWxseSBzZXR0aW5nIHVwIHRoZSBhcmd1bWVudHMuIik7CisKKyAg
ICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBtX2ppdC5ncmFwaCgpLnZhckFy
Z0NoaWxkKG5vZGUsIDApKTsKKyAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwor
CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG1faml0LmdyYXBoKCkudmFyQXJn
Q2hpbGQobm9kZSwgMikpOworICAgICAgICBHUFJSZWcgdmFsdWVHUFIgPSB2YWx1ZS5ncHIoKTsK
KworICAgICAgICBTcGVjdWxhdGVJbnQzMk9wZXJhbmQgYXR0cmlidXRlcyh0aGlzLCBtX2ppdC5n
cmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIDMpKTsKKyAgICAgICAgR1BSUmVnIGF0dHJpYnV0ZXNH
UFIgPSBhdHRyaWJ1dGVzLmdwcigpOworCisgICAgICAgIEVkZ2UmIHByb3BlcnR5RWRnZSA9IG1f
aml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMSk7CisgICAgICAgIHN3aXRjaCAocHJvcGVy
dHlFZGdlLnVzZUtpbmQoKSkgeworICAgICAgICBjYXNlIFN0cmluZ1VzZTogeworICAgICAgICAg
ICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgcHJvcGVydHkodGhpcywgcHJvcGVydHlFZGdlKTsKKyAg
ICAgICAgICAgIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IHByb3BlcnR5LmdwcigpOworICAgICAgICAg
ICAgc3BlY3VsYXRlU3RyaW5nKHByb3BlcnR5RWRnZSwgcHJvcGVydHlHUFIpOworCisgICAgICAg
ICAgICBmbHVzaFJlZ2lzdGVycygpOworICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25EZWZpbmVEYXRhUHJvcGVydHlTdHJpbmcsIE5vUmVzdWx0LCBiYXNlR1BSLCBwcm9wZXJ0eUdQ
UiwgdmFsdWVHUFIsIGF0dHJpYnV0ZXNHUFIpOworICAgICAgICAgICAgbV9qaXQuZXhjZXB0aW9u
Q2hlY2soKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgU3lt
Ym9sVXNlOiB7CisgICAgICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBwcm9wZXJ0eSh0aGlz
LCBwcm9wZXJ0eUVkZ2UpOworICAgICAgICAgICAgR1BSUmVnIHByb3BlcnR5R1BSID0gcHJvcGVy
dHkuZ3ByKCk7CisgICAgICAgICAgICBzcGVjdWxhdGVTeW1ib2wocHJvcGVydHlFZGdlLCBwcm9w
ZXJ0eUdQUik7CisKKyAgICAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CisgICAgICAgICAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlZmluZURhdGFQcm9wZXJ0eVN5bWJvbCwgTm9SZXN1bHQs
IGJhc2VHUFIsIHByb3BlcnR5R1BSLCB2YWx1ZUdQUiwgYXR0cmlidXRlc0dQUik7CisgICAgICAg
ICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKyAgICAgICAgY2FzZSBVbnR5cGVkVXNlOiB7CisgICAgICAgICAgICBKU1ZhbHVlT3BlcmFu
ZCBwcm9wZXJ0eSh0aGlzLCBwcm9wZXJ0eUVkZ2UpOworICAgICAgICAgICAgR1BSUmVnIHByb3Bl
cnR5R1BSID0gcHJvcGVydHkuZ3ByKCk7CisKKyAgICAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7
CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlZmluZURhdGFQcm9wZXJ0eSwg
Tm9SZXN1bHQsIGJhc2VHUFIsIHByb3BlcnR5R1BSLCB2YWx1ZUdQUiwgYXR0cmlidXRlc0dQUik7
CisgICAgICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKworICAgICAgICBub1Jlc3VsdChub2RlKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgfQorCisgICAgY2FzZSBEZWZpbmVBY2Nlc3NvclByb3BlcnR5OiB7
CisgICAgICAgIHN0YXRpY19hc3NlcnQoR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMgPj0gNSwg
IldlIGFyZSBhc3N1bWluZyB3ZSBoYXZlIGVub3VnaCByZWdpc3RlcnMgdG8gbWFrZSB0aGlzIGNh
bGwgd2l0aG91dCBpbmNyZW1lbnRhbGx5IHNldHRpbmcgdXAgdGhlIGFyZ3VtZW50cy4iKTsKKwor
ICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG1faml0LmdyYXBoKCkudmFy
QXJnQ2hpbGQobm9kZSwgMCkpOworICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7
CisKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgZ2V0dGVyKHRoaXMsIG1faml0LmdyYXBo
KCkudmFyQXJnQ2hpbGQobm9kZSwgMikpOworICAgICAgICBHUFJSZWcgZ2V0dGVyR1BSID0gZ2V0
dGVyLmdwcigpOworCisgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHNldHRlcih0aGlzLCBt
X2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIDMpKTsKKyAgICAgICAgR1BSUmVnIHNldHRl
ckdQUiA9IHNldHRlci5ncHIoKTsKKworICAgICAgICBTcGVjdWxhdGVJbnQzMk9wZXJhbmQgYXR0
cmlidXRlcyh0aGlzLCBtX2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIDQpKTsKKyAgICAg
ICAgR1BSUmVnIGF0dHJpYnV0ZXNHUFIgPSBhdHRyaWJ1dGVzLmdwcigpOworCisgICAgICAgIEVk
Z2UmIHByb3BlcnR5RWRnZSA9IG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMSk7Cisg
ICAgICAgIHN3aXRjaCAocHJvcGVydHlFZGdlLnVzZUtpbmQoKSkgeworICAgICAgICBjYXNlIFN0
cmluZ1VzZTogeworICAgICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgcHJvcGVydHkodGhp
cywgcHJvcGVydHlFZGdlKTsKKyAgICAgICAgICAgIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IHByb3Bl
cnR5LmdwcigpOworICAgICAgICAgICAgc3BlY3VsYXRlU3RyaW5nKHByb3BlcnR5RWRnZSwgcHJv
cGVydHlHUFIpOworCisgICAgICAgICAgICBmbHVzaFJlZ2lzdGVycygpOworICAgICAgICAgICAg
Y2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWZpbmVBY2Nlc3NvclByb3BlcnR5U3RyaW5nLCBOb1Jl
c3VsdCwgYmFzZUdQUiwgcHJvcGVydHlHUFIsIGdldHRlckdQUiwgc2V0dGVyR1BSLCBhdHRyaWJ1
dGVzR1BSKTsKKyAgICAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFN5bWJvbFVzZTogeworICAgICAgICAg
ICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgcHJvcGVydHkodGhpcywgcHJvcGVydHlFZGdlKTsKKyAg
ICAgICAgICAgIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IHByb3BlcnR5LmdwcigpOworICAgICAgICAg
ICAgc3BlY3VsYXRlU3ltYm9sKHByb3BlcnR5RWRnZSwgcHJvcGVydHlHUFIpOworCisgICAgICAg
ICAgICBmbHVzaFJlZ2lzdGVycygpOworICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25EZWZpbmVBY2Nlc3NvclByb3BlcnR5U3ltYm9sLCBOb1Jlc3VsdCwgYmFzZUdQUiwgcHJvcGVy
dHlHUFIsIGdldHRlckdQUiwgc2V0dGVyR1BSLCBhdHRyaWJ1dGVzR1BSKTsKKyAgICAgICAgICAg
IG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
ICAgICAgICBjYXNlIFVudHlwZWRVc2U6IHsKKyAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHBy
b3BlcnR5KHRoaXMsIHByb3BlcnR5RWRnZSk7CisgICAgICAgICAgICBHUFJSZWcgcHJvcGVydHlH
UFIgPSBwcm9wZXJ0eS5ncHIoKTsKKworICAgICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAg
ICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eSwg
Tm9SZXN1bHQsIGJhc2VHUFIsIHByb3BlcnR5R1BSLCBnZXR0ZXJHUFIsIHNldHRlckdQUiwgYXR0
cmlidXRlc0dQUik7CisgICAgICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKworICAgICAgICBub1Jlc3Vs
dChub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBHZXRHbG9iYWxMZXhp
Y2FsVmFyaWFibGU6CiAgICAgY2FzZSBHZXRHbG9iYWxWYXI6IHsKICAgICAgICAgR1BSVGVtcG9y
YXJ5IHJlc3VsdCh0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJp
bGl0aWVzLmNwcAppbmRleCBjYWQ0NWZkYmFiZTkwZjQ0OTM0ZDE0YTRiZTNiZDEwZmM4Mjc2NDQ5
Li5hMWNmODA4ODUyM2JkZDM3Y2IyMGRmMDgxYjRhMDFkZDFhYmMwZDY1IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCkBAIC0yNjIsNiArMjYyLDgg
QEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2Fz
ZSBDb21wYXJlR3JlYXRlcjoKICAgICBjYXNlIENvbXBhcmVHcmVhdGVyRXE6CiAgICAgY2FzZSBD
b21wYXJlU3RyaWN0RXE6CisgICAgY2FzZSBEZWZpbmVEYXRhUHJvcGVydHk6CisgICAgY2FzZSBE
ZWZpbmVBY2Nlc3NvclByb3BlcnR5OgogICAgICAgICAvLyBUaGVzZSBhcmUgT0suCiAgICAgICAg
IGJyZWFrOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2Vy
REZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5j
cHAKaW5kZXggMjE5ODI2OWJiY2NjNjk1ZjNhMDkxNmE4Y2RhM2Y2MTg2MDRmNWE5Zi4uMTZhZmMy
NGI1ZDZiYzNlYjFmMWFkZmVkYmMyMDQ3Nzk4OTIwYTA3NiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtNjkwLDYgKzY5MCwxMiBAQCBjbGFz
cyBMb3dlckRGR1RvQjMgewogICAgICAgICBjYXNlIFB1dEJ5VmFsV2l0aFRoaXM6CiAgICAgICAg
ICAgICBjb21waWxlUHV0QnlWYWxXaXRoVGhpcygpOwogICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgRGVmaW5lRGF0YVByb3BlcnR5OgorICAgICAgICAgICAgY29tcGlsZURlZmluZURh
dGFQcm9wZXJ0eSgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRGVmaW5lQWNj
ZXNzb3JQcm9wZXJ0eToKKyAgICAgICAgICAgIGNvbXBpbGVEZWZpbmVBY2Nlc3NvclByb3BlcnR5
KCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBBcnJheVB1c2g6CiAgICAgICAg
ICAgICBjb21waWxlQXJyYXlQdXNoKCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTI3NTksNiAr
Mjc2NSw2MSBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICB2bUNhbGwoVm9pZCwgbV9v
dXQub3BlcmF0aW9uKG1fZ3JhcGguaXNTdHJpY3RNb2RlRm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFu
dGljKSA/IG9wZXJhdGlvblB1dEJ5VmFsV2l0aFRoaXNTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZh
bFdpdGhUaGlzKSwKICAgICAgICAgICAgIG1fY2FsbEZyYW1lLCBiYXNlLCB0aGlzVmFsdWUsIHBy
b3BlcnR5LCB2YWx1ZSk7CiAgICAgfQorCisgICAgdm9pZCBjb21waWxlRGVmaW5lRGF0YVByb3Bl
cnR5KCkKKyAgICB7CisgICAgICAgIExWYWx1ZSBiYXNlID0gbG93Q2VsbChtX2dyYXBoLnZhckFy
Z0NoaWxkKG1fbm9kZSwgMCkpOworICAgICAgICBMVmFsdWUgdmFsdWUgID0gbG93SlNWYWx1ZSht
X2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMikpOworICAgICAgICBMVmFsdWUgYXR0cmlidXRl
cyA9IGxvd0ludDMyKG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCAzKSk7CisgICAgICAgIEVk
Z2UmIHByb3BlcnR5RWRnZSA9IG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCAxKTsKKyAgICAg
ICAgc3dpdGNoIChwcm9wZXJ0eUVkZ2UudXNlS2luZCgpKSB7CisgICAgICAgIGNhc2UgU3RyaW5n
VXNlOiB7CisgICAgICAgICAgICBMVmFsdWUgcHJvcGVydHkgPSBsb3dTdHJpbmcocHJvcGVydHlF
ZGdlKTsKKyAgICAgICAgICAgIHZtQ2FsbChWb2lkLCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9u
RGVmaW5lRGF0YVByb3BlcnR5U3RyaW5nKSwgbV9jYWxsRnJhbWUsIGJhc2UsIHByb3BlcnR5LCB2
YWx1ZSwgYXR0cmlidXRlcyk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAg
ICBjYXNlIFN5bWJvbFVzZTogeworICAgICAgICAgICAgTFZhbHVlIHByb3BlcnR5ID0gbG93U3lt
Ym9sKHByb3BlcnR5RWRnZSk7CisgICAgICAgICAgICB2bUNhbGwoVm9pZCwgbV9vdXQub3BlcmF0
aW9uKG9wZXJhdGlvbkRlZmluZURhdGFQcm9wZXJ0eVN5bWJvbCksIG1fY2FsbEZyYW1lLCBiYXNl
LCBwcm9wZXJ0eSwgdmFsdWUsIGF0dHJpYnV0ZXMpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKyAgICAgICAgY2FzZSBVbnR5cGVkVXNlOiB7CisgICAgICAgICAgICBMVmFsdWUgcHJv
cGVydHkgPSBsb3dKU1ZhbHVlKHByb3BlcnR5RWRnZSk7CisgICAgICAgICAgICB2bUNhbGwoVm9p
ZCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkRlZmluZURhdGFQcm9wZXJ0eSksIG1fY2FsbEZy
YW1lLCBiYXNlLCBwcm9wZXJ0eSwgdmFsdWUsIGF0dHJpYnV0ZXMpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIGNvbXBpbGVE
ZWZpbmVBY2Nlc3NvclByb3BlcnR5KCkKKyAgICB7CisgICAgICAgIExWYWx1ZSBiYXNlID0gbG93
Q2VsbChtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMCkpOworICAgICAgICBMVmFsdWUgZ2V0
dGVyID0gbG93Q2VsbChtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMikpOworICAgICAgICBM
VmFsdWUgc2V0dGVyID0gbG93Q2VsbChtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMykpOwor
ICAgICAgICBMVmFsdWUgYXR0cmlidXRlcyA9IGxvd0ludDMyKG1fZ3JhcGgudmFyQXJnQ2hpbGQo
bV9ub2RlLCA0KSk7CisgICAgICAgIEVkZ2UmIHByb3BlcnR5RWRnZSA9IG1fZ3JhcGgudmFyQXJn
Q2hpbGQobV9ub2RlLCAxKTsKKyAgICAgICAgc3dpdGNoIChwcm9wZXJ0eUVkZ2UudXNlS2luZCgp
KSB7CisgICAgICAgIGNhc2UgU3RyaW5nVXNlOiB7CisgICAgICAgICAgICBMVmFsdWUgcHJvcGVy
dHkgPSBsb3dTdHJpbmcocHJvcGVydHlFZGdlKTsKKyAgICAgICAgICAgIHZtQ2FsbChWb2lkLCBt
X291dC5vcGVyYXRpb24ob3BlcmF0aW9uRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eVN0cmluZyksIG1f
Y2FsbEZyYW1lLCBiYXNlLCBwcm9wZXJ0eSwgZ2V0dGVyLCBzZXR0ZXIsIGF0dHJpYnV0ZXMpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBTeW1ib2xVc2U6IHsK
KyAgICAgICAgICAgIExWYWx1ZSBwcm9wZXJ0eSA9IGxvd1N5bWJvbChwcm9wZXJ0eUVkZ2UpOwor
ICAgICAgICAgICAgdm1DYWxsKFZvaWQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25EZWZpbmVB
Y2Nlc3NvclByb3BlcnR5U3ltYm9sKSwgbV9jYWxsRnJhbWUsIGJhc2UsIHByb3BlcnR5LCBnZXR0
ZXIsIHNldHRlciwgYXR0cmlidXRlcyk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
ICAgICAgICBjYXNlIFVudHlwZWRVc2U6IHsKKyAgICAgICAgICAgIExWYWx1ZSBwcm9wZXJ0eSA9
IGxvd0pTVmFsdWUocHJvcGVydHlFZGdlKTsKKyAgICAgICAgICAgIHZtQ2FsbChWb2lkLCBtX291
dC5vcGVyYXRpb24ob3BlcmF0aW9uRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eSksIG1fY2FsbEZyYW1l
LCBiYXNlLCBwcm9wZXJ0eSwgZ2V0dGVyLCBzZXR0ZXIsIGF0dHJpYnV0ZXMpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICB9CiAgICAgCiAgICAgdm9p
ZCBjb21waWxlUHV0QnlJZCgpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9DQ2FsbEhlbHBlcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2Fs
bEhlbHBlcnMuY3BwCmluZGV4IDc1ZDE1YTYyM2M3MmM0NGFkYzRhNGI5YzEzZjg1ODZmMjcyMjZi
ODUuLjNjM2RmNjE4Zjk5ZmViOTQxNTQ0MDA5OTg1NWRlMWZiYWY1Y2I5ZDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5jcHAKQEAgLTY4LDEwNyArNjgsNiBAQCB2
b2lkIENDYWxsSGVscGVyczo6ZW5zdXJlU2hhZG93Q2hpY2tlblBhY2tldChHUFJSZWcgc2hhZG93
UGFja2V0LCBHUFJSZWcgc2NyYXRjaAogICAgIHN0b3JlUHRyKHNjcmF0Y2gyLCBBZGRyZXNzKHNj
cmF0Y2gxTm9uQXJnR1BSKSk7CiB9CiAKLSNpZiBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJT
ID49IDQKLXZvaWQgQ0NhbGxIZWxwZXJzOjpzZXR1cEZvdXJTdHViQXJnc0dQUihHUFJSZWcgZGVz
dEEsIEdQUlJlZyBkZXN0QiwgR1BSUmVnIGRlc3RDLCBHUFJSZWcgZGVzdEQsIEdQUlJlZyBzcmNB
LCBHUFJSZWcgc3JjQiwgR1BSUmVnIHNyY0MsIEdQUlJlZyBzcmNEKQotewotICAgIGlmICghQVNT
RVJUX0RJU0FCTEVEKSB7Ci0gICAgICAgIFJlZ2lzdGVyU2V0IGRlc3RpbmF0aW9ucyhkZXN0QSwg
ZGVzdEIsIGRlc3RDLCBkZXN0RCk7Ci0gICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoZGVzdGlu
YXRpb25zLm51bWJlck9mU2V0R1BScygpID09IDQsICJEZXN0aW5hdGlvbnMgc2hvdWxkIG5vdCBi
ZSBhbGlhc2VkLiIpOwotICAgIH0KLQotICAgIHR5cGVkZWYgc3RkOjpwYWlyPEdQUlJlZywgR1BS
UmVnPiBSZWdQYWlyOwotICAgIFZlY3RvcjxSZWdQYWlyLCA0PiBwYWlyczsKLQotICAgIGlmIChz
cmNBICE9IGRlc3RBKQotICAgICAgICBwYWlycy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoc3JjQSwg
ZGVzdEEpKTsKLSAgICBpZiAoc3JjQiAhPSBkZXN0QikKLSAgICAgICAgcGFpcnMuYXBwZW5kKHN0
ZDo6bWFrZV9wYWlyKHNyY0IsIGRlc3RCKSk7Ci0gICAgaWYgKHNyY0MgIT0gZGVzdEMpCi0gICAg
ICAgIHBhaXJzLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihzcmNDLCBkZXN0QykpOwotICAgIGlmIChz
cmNEICE9IGRlc3REKQotICAgICAgICBwYWlycy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoc3JjRCwg
ZGVzdEQpKTsKLQotCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAotICAgIGF1dG8gbnVtVW5pcXVlU291
cmNlcyA9IFsmXSAoKSAtPiB1bnNpZ25lZCB7Ci0gICAgICAgIFJlZ2lzdGVyU2V0IHNldDsKLSAg
ICAgICAgZm9yIChhdXRvJiBwYWlyIDogcGFpcnMpIHsKLSAgICAgICAgICAgIEdQUlJlZyBzb3Vy
Y2UgPSBwYWlyLmZpcnN0OwotICAgICAgICAgICAgc2V0LnNldChzb3VyY2UpOwotICAgICAgICB9
Ci0gICAgICAgIHJldHVybiBzZXQubnVtYmVyT2ZTZXRHUFJzKCk7Ci0gICAgfTsKLQotICAgIGF1
dG8gbnVtVW5pcXVlRGVzdHMgPSBbJl0gKCkgLT4gdW5zaWduZWQgewotICAgICAgICBSZWdpc3Rl
clNldCBzZXQ7Ci0gICAgICAgIGZvciAoYXV0byYgcGFpciA6IHBhaXJzKSB7Ci0gICAgICAgICAg
ICBHUFJSZWcgZGVzdCA9IHBhaXIuc2Vjb25kOwotICAgICAgICAgICAgc2V0LnNldChkZXN0KTsK
LSAgICAgICAgfQotICAgICAgICByZXR1cm4gc2V0Lm51bWJlck9mU2V0R1BScygpOwotICAgIH07
Ci0jZW5kaWYKLQotICAgIHdoaWxlIChwYWlycy5zaXplKCkpIHsKLSAgICAgICAgUmVnaXN0ZXJT
ZXQgZnJlZURlc3RpbmF0aW9uczsKLSAgICAgICAgZm9yIChhdXRvJiBwYWlyIDogcGFpcnMpIHsK
LSAgICAgICAgICAgIEdQUlJlZyBkZXN0ID0gcGFpci5zZWNvbmQ7Ci0gICAgICAgICAgICBmcmVl
RGVzdGluYXRpb25zLnNldChkZXN0KTsKLSAgICAgICAgfQotICAgICAgICBmb3IgKGF1dG8mIHBh
aXIgOiBwYWlycykgewotICAgICAgICAgICAgR1BSUmVnIHNvdXJjZSA9IHBhaXIuZmlyc3Q7Ci0g
ICAgICAgICAgICBmcmVlRGVzdGluYXRpb25zLmNsZWFyKHNvdXJjZSk7Ci0gICAgICAgIH0KLQot
ICAgICAgICBpZiAoZnJlZURlc3RpbmF0aW9ucy5udW1iZXJPZlNldEdQUnMoKSkgewotICAgICAg
ICAgICAgYm9vbCBtYWRlTW92ZSA9IGZhbHNlOwotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IHBhaXJzLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgYXV0byYgcGFp
ciA9IHBhaXJzW2ldOwotICAgICAgICAgICAgICAgIEdQUlJlZyBzb3VyY2UgPSBwYWlyLmZpcnN0
OwotICAgICAgICAgICAgICAgIEdQUlJlZyBkZXN0ID0gcGFpci5zZWNvbmQ7Ci0gICAgICAgICAg
ICAgICAgaWYgKGZyZWVEZXN0aW5hdGlvbnMuZ2V0KGRlc3QpKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIG1vdmUoc291cmNlLCBkZXN0KTsKLSAgICAgICAgICAgICAgICAgICAgcGFpcnMucmVtb3Zl
KGkpOwotICAgICAgICAgICAgICAgICAgICBtYWRlTW92ZSA9IHRydWU7Ci0gICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIEFTU0VSVF9VTlVTRUQobWFkZU1vdmUsIG1hZGVNb3ZlKTsKLSAgICAgICAgICAgIGNvbnRp
bnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgQVNTRVJUKG51bVVuaXF1ZURlc3RzKCkgPT0gbnVt
VW5pcXVlU291cmNlcygpKTsKLSAgICAgICAgQVNTRVJUKG51bVVuaXF1ZURlc3RzKCkgPT0gcGFp
cnMuc2l6ZSgpKTsKLSAgICAgICAgLy8gVGhlIHNldCBvZiBzb3VyY2UgYW5kIGRlc3RpbmF0aW9u
IHJlZ2lzdGVycyBhcmUgZXF1aXZhbGVudCBzZXRzLiBUaGlzIG1lYW5zIHdlIGRvbid0IGhhdmUK
LSAgICAgICAgLy8gYW55IGZyZWUgZGVzdGluYXRpb24gcmVnaXN0ZXJzIHRoYXQgd29uJ3QgYWxz
byBjbG9iYmVyIGEgc291cmNlLiBXZSBnZXQgYXJvdW5kIHRoaXMgYnkKLSAgICAgICAgLy8gZXhj
aGFuZ2luZyByZWdpc3RlcnMuCi0KLSAgICAgICAgR1BSUmVnIHNvdXJjZSA9IHBhaXJzWzBdLmZp
cnN0OwotICAgICAgICBHUFJSZWcgZGVzdCA9IHBhaXJzWzBdLnNlY29uZDsKLSAgICAgICAgc3dh
cChzb3VyY2UsIGRlc3QpOwotICAgICAgICBwYWlycy5yZW1vdmUoMCk7Ci0KLSAgICAgICAgR1BS
UmVnIG5ld1NvdXJjZSA9IHNvdXJjZTsKLSAgICAgICAgZm9yIChhdXRvJiBwYWlyIDogcGFpcnMp
IHsKLSAgICAgICAgICAgIEdQUlJlZyBzb3VyY2UgPSBwYWlyLmZpcnN0OwotICAgICAgICAgICAg
aWYgKHNvdXJjZSA9PSBkZXN0KSB7Ci0gICAgICAgICAgICAgICAgcGFpci5maXJzdCA9IG5ld1Nv
dXJjZTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQot
Ci0gICAgICAgIC8vIFdlIG1heSBoYXZlIGludHJvZHVjZWQgcGFpcnMgdGhhdCBoYXZlIHRoZSBz
YW1lIHNvdXJjZSBhbmQgZGVzdGluYXRpb24uIFJlbW92ZSB0aG9zZSBub3cuCi0gICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBwYWlycy5zaXplKCk7IGkrKykgewotICAgICAgICAgICAg
YXV0byYgcGFpciA9IHBhaXJzW2ldOwotICAgICAgICAgICAgaWYgKHBhaXIuZmlyc3QgPT0gcGFp
ci5zZWNvbmQpIHsKLSAgICAgICAgICAgICAgICBwYWlycy5yZW1vdmUoaSk7Ci0gICAgICAgICAg
ICAgICAgaS0tOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotfQotI2VuZGlmIC8v
IE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMgPj0gNAotCiB9IC8vIG5hbWVzcGFjZSBKU0MK
IAogI2VuZGlmIC8vIEVOQUJMRShKSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0NDYWxsSGVscGVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhl
bHBlcnMuaAppbmRleCA4NjRkZjc0OWZhNWFiMzdmNTAzNDY4NTQ0Njk4YmQxY2IwNTcwNmJkLi5i
ZWFhYzdmMjE3YTUwZDgyMGI0ZTI1MWM5Y2JhY2YxMWU5OTRiZWQxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgKQEAgLTg3Nyw2ICs4NzcsMTcgQEAgY2xhc3MgQ0Nh
bGxIZWxwZXJzIDogcHVibGljIEFzc2VtYmx5SGVscGVycyB7CiAgICAgICAgIGFkZENhbGxBcmd1
bWVudChhcmczKTsKICAgICB9CiAKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVu
dHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1JSZWcgYXJnMywgR1JS
ZWcgYXJnNCwgR1JSZWcgYXJnNSkKKyAgICB7CisgICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygp
OworICAgICAgICBhZGRDYWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOwor
ICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMSk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChh
cmcyKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzMpOworICAgICAgICBhZGRDYWxsQXJn
dW1lbnQoYXJnNCk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmc1KTsKKyAgICB9CisKICAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBh
cmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMsIEdQUlJlZyBhcmc0LCBHUFJSZWcgYXJnNSwg
R1BSUmVnIGFyZzYsIEdQUlJlZyBhcmc3LCBHUFJSZWcgYXJnOCkKICAgICB7CiAgICAgICAgIHJl
c2V0Q2FsbEFyZ3VtZW50cygpOwpAQCAtOTc3LDcgKzk4OCwxNCBAQCBjbGFzcyBDQ2FsbEhlbHBl
cnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJzIHsKICAgICAgICAgICAgIHN3YXAoZGVzdEIsIGRl
c3RDKTsKICAgICB9CiAKLSAgICB2b2lkIHNldHVwRm91clN0dWJBcmdzR1BSKEdQUlJlZyBkZXN0
QSwgR1BSUmVnIGRlc3RCLCBHUFJSZWcgZGVzdEMsIEdQUlJlZyBkZXN0RCwgR1BSUmVnIHNyY0Es
IEdQUlJlZyBzcmNCLCBHUFJSZWcgc3JjQywgR1BSUmVnIHNyY0QpOworICAgIHZvaWQgc2V0dXBG
b3VyU3R1YkFyZ3NHUFIoR1BSUmVnIGRlc3RBLCBHUFJSZWcgZGVzdEIsIEdQUlJlZyBkZXN0Qywg
R1BSUmVnIGRlc3RELCBHUFJSZWcgc3JjQSwgR1BSUmVnIHNyY0IsIEdQUlJlZyBzcmNDLCBHUFJS
ZWcgc3JjRCkKKyAgICB7CisgICAgICAgIHNldHVwU3R1YkFyZ3NHUFI8ND4oeyB7IGRlc3RBLCBk
ZXN0QiwgZGVzdEMsIGRlc3REIH0gfSwgeyB7IHNyY0EsIHNyY0IsIHNyY0MsIHNyY0QgfSB9KTsK
KyAgICB9CisgICAgdm9pZCBzZXR1cEZpdmVTdHViQXJnc0dQUihHUFJSZWcgZGVzdEEsIEdQUlJl
ZyBkZXN0QiwgR1BSUmVnIGRlc3RDLCBHUFJSZWcgZGVzdEQsIEdQUlJlZyBkZXN0RSwgR1BSUmVn
IHNyY0EsIEdQUlJlZyBzcmNCLCBHUFJSZWcgc3JjQywgR1BSUmVnIHNyY0QsIEdQUlJlZyBzcmNF
KQorICAgIHsKKyAgICAgICAgc2V0dXBTdHViQXJnc0dQUjw1Pih7IHsgZGVzdEEsIGRlc3RCLCBk
ZXN0QywgZGVzdEQsIGRlc3RFIH0gfSwgeyB7IHNyY0EsIHNyY0IsIHNyY0MsIHNyY0QsIHNyY0Ug
fSB9KTsKKyAgICB9CiAKICNpZiBDUFUoWDg2XzY0KSB8fCBDUFUoQVJNNjQpCiAgICAgdGVtcGxh
dGU8RlBSUmVnIGRlc3RBLCBGUFJSZWcgZGVzdEI+CkBAIC0xNjA0LDYgKzE2MjIsMTMgQEAgY2xh
c3MgQ0NhbGxIZWxwZXJzIDogcHVibGljIEFzc2VtYmx5SGVscGVycyB7CiAgICAgICAgIHNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKICAgICB9CiAKKyAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcx
LCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMsIEdQUlJlZyBhcmc0LCBHUFJSZWcgYXJnNSkKKyAg
ICB7CisgICAgICAgIHBva2UoYXJnNSwgUE9LRV9BUkdVTUVOVF9PRkZTRVQgKyAxKTsKKyAgICAg
ICAgcG9rZShhcmc0LCBQT0tFX0FSR1VNRU5UX09GRlNFVCk7CisgICAgICAgIHNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKKyAgICB9CisKICAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJS
ZWcgYXJnMiwgVHJ1c3RlZEltbVB0ciBhcmczLCBUcnVzdGVkSW1tMzIgYXJnNCkKICAgICB7CiAg
ICAgICAgIHBva2UoYXJnNCwgUE9LRV9BUkdVTUVOVF9PRkZTRVQpOwpAQCAtMjE2Nyw2ICsyMTky
LDEyIEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewogICAg
ICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApOwogICAgIH0KIAorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVnIGFy
ZzQsIEdQUlJlZyBhcmc1KQorICAgIHsKKyAgICAgICAgc2V0dXBGaXZlU3R1YkFyZ3NHUFIoR1BS
SW5mbzo6YXJndW1lbnRHUFIxLCBHUFJJbmZvOjphcmd1bWVudEdQUjIsIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMywgR1BSSW5mbzo6YXJndW1lbnRHUFI0LCBHUFJJbmZvOjphcmd1bWVudEdQUjUsIGFy
ZzEsIGFyZzIsIGFyZzMsIGFyZzQsIGFyZzUpOworICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxG
cmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIH0KKwogICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIFRy
dXN0ZWRJbW1QdHIgYXJnMiwgR1BSUmVnIGFyZzMsIEdQUlJlZyBhcmc0KQogICAgIHsKICAgICAg
ICAgc2V0dXBTdHViQXJndW1lbnRzMTM0KGFyZzEsIGFyZzMsIGFyZzQpOwpAQCAtMjQyOCw2ICsy
NDU5LDEwNSBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJzIHsK
ICAgICAgICAgLy8gUmVhZHkgZm9yIGEganVtcCEKICAgICAgICAgbW92ZShuZXdGcmFtZVBvaW50
ZXIsIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKICAgICB9CisKKyNpZiBOVU1CRVJfT0ZfQVJHVU1F
TlRfUkVHSVNURVJTID49IDQKKyAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBOdW1iZXJPZlJlZ2lzdGVy
cz4KKyAgICB2b2lkIHNldHVwU3R1YkFyZ3NHUFIoc3RkOjphcnJheTxHUFJSZWcsIE51bWJlck9m
UmVnaXN0ZXJzPiBkZXN0aW5hdGlvbnMsIHN0ZDo6YXJyYXk8R1BSUmVnLCBOdW1iZXJPZlJlZ2lz
dGVycz4gc291cmNlcykKKyAgICB7CisgICAgICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7Cisg
ICAgICAgICAgICBSZWdpc3RlclNldCBzZXQ7CisgICAgICAgICAgICBmb3IgKEdQUlJlZyBkZXN0
IDogZGVzdGluYXRpb25zKQorICAgICAgICAgICAgICAgIHNldC5zZXQoZGVzdCk7CisgICAgICAg
ICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKHNldC5udW1iZXJPZlNldEdQUnMoKSA9PSA0LCAiRGVz
dGluYXRpb25zIHNob3VsZCBub3QgYmUgYWxpYXNlZC4iKTsKKyAgICAgICAgfQorCisgICAgICAg
IHR5cGVkZWYgc3RkOjpwYWlyPEdQUlJlZywgR1BSUmVnPiBSZWdQYWlyOworICAgICAgICBWZWN0
b3I8UmVnUGFpciwgTnVtYmVyT2ZSZWdpc3RlcnM+IHBhaXJzOworCisgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBOdW1iZXJPZlJlZ2lzdGVyczsgKytpKSB7CisgICAgICAgICAgICBp
ZiAoc291cmNlc1tpXSAhPSBkZXN0aW5hdGlvbnNbaV0pCisgICAgICAgICAgICAgICAgcGFpcnMu
YXBwZW5kKHN0ZDo6bWFrZV9wYWlyKHNvdXJjZXNbaV0sIGRlc3RpbmF0aW9uc1tpXSkpOworICAg
ICAgICB9CisKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgICAgIGF1dG8gbnVtVW5pcXVlU291
cmNlcyA9IFsmXSAoKSAtPiB1bnNpZ25lZCB7CisgICAgICAgICAgICBSZWdpc3RlclNldCBzZXQ7
CisgICAgICAgICAgICBmb3IgKGF1dG8mIHBhaXIgOiBwYWlycykgeworICAgICAgICAgICAgICAg
IEdQUlJlZyBzb3VyY2UgPSBwYWlyLmZpcnN0OworICAgICAgICAgICAgICAgIHNldC5zZXQoc291
cmNlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBzZXQubnVtYmVyT2ZTZXRH
UFJzKCk7CisgICAgICAgIH07CisKKyAgICAgICAgYXV0byBudW1VbmlxdWVEZXN0cyA9IFsmXSAo
KSAtPiB1bnNpZ25lZCB7CisgICAgICAgICAgICBSZWdpc3RlclNldCBzZXQ7CisgICAgICAgICAg
ICBmb3IgKGF1dG8mIHBhaXIgOiBwYWlycykgeworICAgICAgICAgICAgICAgIEdQUlJlZyBkZXN0
ID0gcGFpci5zZWNvbmQ7CisgICAgICAgICAgICAgICAgc2V0LnNldChkZXN0KTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIHJldHVybiBzZXQubnVtYmVyT2ZTZXRHUFJzKCk7CisgICAgICAg
IH07CisjZW5kaWYKKworICAgICAgICB3aGlsZSAocGFpcnMuc2l6ZSgpKSB7CisgICAgICAgICAg
ICBSZWdpc3RlclNldCBmcmVlRGVzdGluYXRpb25zOworICAgICAgICAgICAgZm9yIChhdXRvJiBw
YWlyIDogcGFpcnMpIHsKKyAgICAgICAgICAgICAgICBHUFJSZWcgZGVzdCA9IHBhaXIuc2Vjb25k
OworICAgICAgICAgICAgICAgIGZyZWVEZXN0aW5hdGlvbnMuc2V0KGRlc3QpOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgZm9yIChhdXRvJiBwYWlyIDogcGFpcnMpIHsKKyAgICAgICAgICAg
ICAgICBHUFJSZWcgc291cmNlID0gcGFpci5maXJzdDsKKyAgICAgICAgICAgICAgICBmcmVlRGVz
dGluYXRpb25zLmNsZWFyKHNvdXJjZSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlm
IChmcmVlRGVzdGluYXRpb25zLm51bWJlck9mU2V0R1BScygpKSB7CisgICAgICAgICAgICAgICAg
Ym9vbCBtYWRlTW92ZSA9IGZhbHNlOworICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBwYWlycy5zaXplKCk7IGkrKykgeworICAgICAgICAgICAgICAgICAgICBhdXRvJiBw
YWlyID0gcGFpcnNbaV07CisgICAgICAgICAgICAgICAgICAgIEdQUlJlZyBzb3VyY2UgPSBwYWly
LmZpcnN0OworICAgICAgICAgICAgICAgICAgICBHUFJSZWcgZGVzdCA9IHBhaXIuc2Vjb25kOwor
ICAgICAgICAgICAgICAgICAgICBpZiAoZnJlZURlc3RpbmF0aW9ucy5nZXQoZGVzdCkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIG1vdmUoc291cmNlLCBkZXN0KTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHBhaXJzLnJlbW92ZShpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1hZGVN
b3ZlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIEFTU0VSVF9VTlVT
RUQobWFkZU1vdmUsIG1hZGVNb3ZlKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgQVNTRVJUKG51bVVuaXF1ZURlc3RzKCkgPT0gbnVtVW5p
cXVlU291cmNlcygpKTsKKyAgICAgICAgICAgIEFTU0VSVChudW1VbmlxdWVEZXN0cygpID09IHBh
aXJzLnNpemUoKSk7CisgICAgICAgICAgICAvLyBUaGUgc2V0IG9mIHNvdXJjZSBhbmQgZGVzdGlu
YXRpb24gcmVnaXN0ZXJzIGFyZSBlcXVpdmFsZW50IHNldHMuIFRoaXMgbWVhbnMgd2UgZG9uJ3Qg
aGF2ZQorICAgICAgICAgICAgLy8gYW55IGZyZWUgZGVzdGluYXRpb24gcmVnaXN0ZXJzIHRoYXQg
d29uJ3QgYWxzbyBjbG9iYmVyIGEgc291cmNlLiBXZSBnZXQgYXJvdW5kIHRoaXMgYnkKKyAgICAg
ICAgICAgIC8vIGV4Y2hhbmdpbmcgcmVnaXN0ZXJzLgorCisgICAgICAgICAgICBHUFJSZWcgc291
cmNlID0gcGFpcnNbMF0uZmlyc3Q7CisgICAgICAgICAgICBHUFJSZWcgZGVzdCA9IHBhaXJzWzBd
LnNlY29uZDsKKyAgICAgICAgICAgIHN3YXAoc291cmNlLCBkZXN0KTsKKyAgICAgICAgICAgIHBh
aXJzLnJlbW92ZSgwKTsKKworICAgICAgICAgICAgR1BSUmVnIG5ld1NvdXJjZSA9IHNvdXJjZTsK
KyAgICAgICAgICAgIGZvciAoYXV0byYgcGFpciA6IHBhaXJzKSB7CisgICAgICAgICAgICAgICAg
R1BSUmVnIHNvdXJjZSA9IHBhaXIuZmlyc3Q7CisgICAgICAgICAgICAgICAgaWYgKHNvdXJjZSA9
PSBkZXN0KSB7CisgICAgICAgICAgICAgICAgICAgIHBhaXIuZmlyc3QgPSBuZXdTb3VyY2U7Cisg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgLy8gV2UgbWF5IGhhdmUgaW50cm9kdWNlZCBwYWlycyB0aGF0IGhh
dmUgdGhlIHNhbWUgc291cmNlIGFuZCBkZXN0aW5hdGlvbi4gUmVtb3ZlIHRob3NlIG5vdy4KKyAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwYWlycy5zaXplKCk7IGkrKykgewor
ICAgICAgICAgICAgICAgIGF1dG8mIHBhaXIgPSBwYWlyc1tpXTsKKyAgICAgICAgICAgICAgICBp
ZiAocGFpci5maXJzdCA9PSBwYWlyLnNlY29uZCkgeworICAgICAgICAgICAgICAgICAgICBwYWly
cy5yZW1vdmUoaSk7CisgICAgICAgICAgICAgICAgICAgIGktLTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYgLy8gTlVNQkVSX09GX0FS
R1VNRU5UX1JFR0lTVEVSUyA+PSA0CiAgICAgCiAgICAgLy8gVGhlc2Ugb3BlcmF0aW9ucyBjbG9i
YmVyIGFsbCB2b2xhdGlsZSByZWdpc3RlcnMuIFRoZXkgYXNzdW1lIHRoYXQgdGhlcmUgaXMgcm9v
bSBvbiB0aGUgdG9wIG9mCiAgICAgLy8gc3RhY2sgdG8gbWFyc2hhbGwgY2FsbCBhcmd1bWVudHMu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXggMWFiZTdjNDM0MTc0NjNmOTY5MTY1Mjlh
NmU2MTRlZGUwOWM3ZmQzOS4uMjM3ZDE5YTRiMDgyZjFjYjBlMDJjMmVhNTc3Y2MxY2MzMTA3OTQz
MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtMzIyLDYgKzMyMiw4IEBAIHZvaWQg
SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9n
ZXR0ZXJfc2V0dGVyX2J5X2lkKQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2dldHRlcl9ieV92
YWwpCiAgICAgICAgIERFRklORV9PUChvcF9wdXRfc2V0dGVyX2J5X3ZhbCkKKyAgICAgICAgREVG
SU5FX09QKG9wX2RlZmluZV9kYXRhX3Byb3BlcnR5KQorICAgICAgICBERUZJTkVfT1Aob3BfZGVm
aW5lX2FjY2Vzc29yX3Byb3BlcnR5KQogCiAgICAgICAgIERFRklORV9PUChvcF9yZXQpCiAgICAg
ICAgIERFRklORV9PUChvcF9yc2hpZnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCAzZDIy
MDhiMGUxOGM2OGI1N2VkMGQwOWMyNjMyN2U4ODM4ZDUyNzI3Li5hOWI5ZTliNzIwMjdkYzQ4ZGY3
N2JmNzIxNjgxNTM4NzQ3YWUzNGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTU2Nyw2
ICs1NjcsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9nZXR0
ZXJfc2V0dGVyX2J5X2lkKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9wdXRf
Z2V0dGVyX2J5X3ZhbChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X3Nl
dHRlcl9ieV92YWwoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2RlZmluZV9k
YXRhX3Byb3BlcnR5KEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9kZWZpbmVf
YWNjZXNzb3JfcHJvcGVydHkoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3Jl
dChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfcnNoaWZ0KEluc3RydWN0aW9u
Kik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9zZXRfZnVuY3Rpb25fbmFtZShJbnN0cnVjdGlvbiop
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAppbmRleCA2MDQ4ODJm
MDVjNzMyNjg2Yzg1YzQwOWQ2OTIxZDRkNjI2MDFlMmU3Li45ZDUxOTg3MDU3Nzk2MDQxMTljOThm
ZjZlMTk1Yzc0YTdhNDkwNWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuaApAQCAtNTksNiArNTksNyBAQCBjbGFzcyBSZWdFeHBPYmplY3Q7CiBjbGFzcyBSZWdp
c3RlcjsKIGNsYXNzIFN0cnVjdHVyZTsKIGNsYXNzIFN0cnVjdHVyZVN0dWJJbmZvOworY2xhc3Mg
U3ltYm9sOwogY2xhc3MgU3ltYm9sVGFibGU7CiBjbGFzcyBXYXRjaHBvaW50U2V0OwogCkBAIC0x
MTEsNiArMTEyLDcgQEAgdHlwZWRlZiBjaGFyKiBVbnVzZWRQdHI7CiAgICAgU3NpOiBTdHJ1Y3R1
cmVTdHViSW5mbyoKICAgICBTdDogU3RydWN0dXJlKgogICAgIFN5bXRhYjogU3ltYm9sVGFibGUq
CisgICAgU3ltOiBTeW1ib2wqCiAgICAgVDogU3RyaW5nSW1wbCoKICAgICBWOiB2b2lkCiAgICAg
Vm06IFZNKgpAQCAtMjY4LDYgKzI3MCwxMiBAQCB0eXBlZGVmIHZvaWQgKEpJVF9PUEVSQVRJT04g
KlZfSklUT3BlcmF0aW9uX0VQWkopKEV4ZWNTdGF0ZSosIHZvaWQqLCBpbnQzMl90LCBFbgogdHlw
ZWRlZiB2b2lkIChKSVRfT1BFUkFUSU9OICpWX0pJVE9wZXJhdGlvbl9FU3NpSkpJKShFeGVjU3Rh
dGUqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwg
VW5pcXVlZFN0cmluZ0ltcGwqKTsKIHR5cGVkZWYgdm9pZCAoSklUX09QRVJBVElPTiAqVl9KSVRP
cGVyYXRpb25fRUpKSkkpKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUsIFVuaXF1ZWRTdHJpbmdJbXBsKik7CiB0eXBlZGVmIHZvaWQgKEpJ
VF9PUEVSQVRJT04gKlZfSklUT3BlcmF0aW9uX0VKSkpKKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSk7Cit0
eXBlZGVmIHZvaWQgKEpJVF9PUEVSQVRJT04gKlZfSklUT3BlcmF0aW9uX0VPSkpaKShFeGVjU3Rh
dGUqLCBKU09iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgaW50MzJfdCk7
Cit0eXBlZGVmIHZvaWQgKEpJVF9PUEVSQVRJT04gKlZfSklUT3BlcmF0aW9uX0VPSnNzSlopKEV4
ZWNTdGF0ZSosIEpTT2JqZWN0KiwgSlNTdHJpbmcqLCBFbmNvZGVkSlNWYWx1ZSwgaW50MzJfdCk7
Cit0eXBlZGVmIHZvaWQgKEpJVF9PUEVSQVRJT04gKlZfSklUT3BlcmF0aW9uX0VPU3ltSlopKEV4
ZWNTdGF0ZSosIEpTT2JqZWN0KiwgU3ltYm9sKiwgRW5jb2RlZEpTVmFsdWUsIGludDMyX3QpOwor
dHlwZWRlZiB2b2lkIChKSVRfT1BFUkFUSU9OICpWX0pJVE9wZXJhdGlvbl9FT0pPT1opKEV4ZWNT
dGF0ZSosIEpTT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEpTT2JqZWN0KiwgSlNPYmplY3QqLCBp
bnQzMl90KTsKK3R5cGVkZWYgdm9pZCAoSklUX09QRVJBVElPTiAqVl9KSVRPcGVyYXRpb25fRU9K
c3NPT1opKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgSlNTdHJpbmcqLCBKU09iamVjdCosIEpTT2Jq
ZWN0KiwgaW50MzJfdCk7Cit0eXBlZGVmIHZvaWQgKEpJVF9PUEVSQVRJT04gKlZfSklUT3BlcmF0
aW9uX0VPU3ltT09aKShFeGVjU3RhdGUqLCBKU09iamVjdCosIFN5bWJvbCosIEpTT2JqZWN0Kiwg
SlNPYmplY3QqLCBpbnQzMl90KTsKIHR5cGVkZWYgdm9pZCAoSklUX09QRVJBVElPTiAqVl9KSVRP
cGVyYXRpb25fRVdzKShFeGVjU3RhdGUqLCBXYXRjaHBvaW50U2V0Kik7CiB0eXBlZGVmIHZvaWQg
KEpJVF9PUEVSQVRJT04gKlZfSklUT3BlcmF0aW9uX0VaKShFeGVjU3RhdGUqLCBpbnQzMl90KTsK
IHR5cGVkZWYgdm9pZCAoSklUX09QRVJBVElPTiAqVl9KSVRPcGVyYXRpb25fRVpKKShFeGVjU3Rh
dGUqLCBpbnQzMl90LCBFbmNvZGVkSlNWYWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCmluZGV4IDU2MDI2OGI1YzMxNDc4NDEzNjA3MmRk
ZDgwMDc3NzgwZjMzNzhiMmIuLjlkNGZkMWFhNmFmNjRiNDhkN2JlMWIzZWI0NjkzMGI1M2YzNWY0
YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nl
c3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3Mu
Y3BwCkBAIC0xNzczLDYgKzE3NzMsMTggQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRGbG9hdFR5
cGVkQXJyYXlQdXRCeVZhbChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLAogICAgIHJl
dHVybiBzbG93Q2FzZXM7CiB9CiAKK3ZvaWQgSklUOjplbWl0X29wX2RlZmluZV9kYXRhX3Byb3Bl
cnR5KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgSklUU2xvd1BhdGhD
YWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9kZWZp
bmVfZGF0YV9wcm9wZXJ0eSk7CisgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKK30KKwordm9pZCBK
SVQ6OmVtaXRfb3BfZGVmaW5lX2FjY2Vzc29yX3Byb3BlcnR5KEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCit7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBj
dXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9kZWZpbmVfYWNjZXNzb3JfcHJvcGVydHkpOwor
ICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5k
aWYgLy8gRU5BQkxFKEpJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyLmFzbQppbmRleCBkN2ExZGVlMzJkNGVjOGUzMjU0ZGRmM2NiMGZk
NTI4NWE4MzFlYzgxLi42OTZiOGM2NjMzMzVlNWM0MzQ2YTZmOGNlMzExM2UwYjJkNDJmMjUyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIuYXNtCkBAIC0xNDUyLDYgKzE0NTIsMTggQEAgX2xsaW50X29wX3B1dF9zZXR0ZXJfYnlfdmFs
OgogICAgIGRpc3BhdGNoKDUpCiAKIAorX2xsaW50X29wX2RlZmluZV9kYXRhX3Byb3BlcnR5Ogor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsT3Bjb2RlU2xvd1BhdGgoX3Nsb3dfcGF0aF9k
ZWZpbmVfZGF0YV9wcm9wZXJ0eSkKKyAgICBkaXNwYXRjaCg1KQorCisKK19sbGludF9vcF9kZWZp
bmVfYWNjZXNzb3JfcHJvcGVydHk6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxPcGNv
ZGVTbG93UGF0aChfc2xvd19wYXRoX2RlZmluZV9hY2Nlc3Nvcl9wcm9wZXJ0eSkKKyAgICBkaXNw
YXRjaCg2KQorCisKIF9sbGludF9vcF9qdHJ1ZToKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAg
anVtcFRydWVPckZhbHNlKApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uU2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vblNsb3dQYXRocy5jcHAKaW5kZXggYTMxNzA5MGRjM2Y3NzVmOTI3MjE1ZTJkMjNhM2U4Mjg5
MThlMDQ0NS4uNzU3MTBhMDFiOTFjZWIxOTFlMWI2NTczYTQyYjE4NDU2OWEyZDg0OCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCkBA
IC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiQ2xvbmVkQXJndW1lbnRzLmgiCiAjaW5jbHVkZSAi
Q29kZVByb2ZpbGluZy5oIgogI2luY2x1ZGUgIkNvbW1vblNsb3dQYXRoc0V4Y2VwdGlvbnMuaCIK
KyNpbmNsdWRlICJEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaCIKICNpbmNsdWRlICJEaXJlY3RB
cmd1bWVudHMuaCIKICNpbmNsdWRlICJFcnJvci5oIgogI2luY2x1ZGUgIkVycm9ySGFuZGxpbmdT
Y29wZS5oIgpAQCAtODk2LDQgKzg5NywzOSBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0
X2J5X3ZhbF93aXRoX3RoaXMpCiAgICAgRU5EKCk7CiB9CiAKK1NMT1dfUEFUSF9ERUNMKHNsb3df
cGF0aF9kZWZpbmVfZGF0YV9wcm9wZXJ0eSkKK3sKKyAgICBCRUdJTigpOworICAgIEpTT2JqZWN0
KiBiYXNlID0gYXNPYmplY3QoT1BfQygxKS5qc1ZhbHVlKCkpOworICAgIEpTVmFsdWUgcHJvcGVy
dHkgPSBPUF9DKDIpLmpzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gT1BfQygzKS5qc1Zh
bHVlKCk7CisgICAgSlNWYWx1ZSBhdHRyaWJ1dGVzID0gT1BfQyg0KS5qc1ZhbHVlKCk7CisgICAg
QVNTRVJUKGF0dHJpYnV0ZXMuaXNJbnQzMigpKTsKKworICAgIGF1dG8gcHJvcGVydHlOYW1lID0g
cHJvcGVydHkudG9Qcm9wZXJ0eUtleShleGVjKTsKKyAgICBDSEVDS19FWENFUFRJT04oKTsKKyAg
ICBQcm9wZXJ0eURlc2NyaXB0b3IgZGVzY3JpcHRvciA9IHRvUHJvcGVydHlEZXNjcmlwdG9yKHZh
bHVlLCBqc1VuZGVmaW5lZCgpLCBqc1VuZGVmaW5lZCgpLCBEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0
ZXMoYXR0cmlidXRlcy5hc0ludDMyKCkpKTsKKyAgICBBU1NFUlQoKGRlc2NyaXB0b3IuYXR0cmli
dXRlcygpICYgQWNjZXNzb3IpIHx8ICghZGVzY3JpcHRvci5pc0FjY2Vzc29yRGVzY3JpcHRvcigp
KSk7CisgICAgYmFzZS0+bWV0aG9kVGFibGUodm0pLT5kZWZpbmVPd25Qcm9wZXJ0eShiYXNlLCBl
eGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHRydWUpOworICAgIEVORCgpOworfQorCitT
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfZGVmaW5lX2FjY2Vzc29yX3Byb3BlcnR5KQoreworICAg
IEJFR0lOKCk7CisgICAgSlNPYmplY3QqIGJhc2UgPSBhc09iamVjdChPUF9DKDEpLmpzVmFsdWUo
KSk7CisgICAgSlNWYWx1ZSBwcm9wZXJ0eSA9IE9QX0MoMikuanNWYWx1ZSgpOworICAgIEpTVmFs
dWUgZ2V0dGVyID0gT1BfQygzKS5qc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSBzZXR0ZXIgPSBPUF9D
KDQpLmpzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIGF0dHJpYnV0ZXMgPSBPUF9DKDUpLmpzVmFsdWUo
KTsKKyAgICBBU1NFUlQoYXR0cmlidXRlcy5pc0ludDMyKCkpOworCisgICAgYXV0byBwcm9wZXJ0
eU5hbWUgPSBwcm9wZXJ0eS50b1Byb3BlcnR5S2V5KGV4ZWMpOworICAgIENIRUNLX0VYQ0VQVElP
TigpOworICAgIFByb3BlcnR5RGVzY3JpcHRvciBkZXNjcmlwdG9yID0gdG9Qcm9wZXJ0eURlc2Ny
aXB0b3IoanNVbmRlZmluZWQoKSwgZ2V0dGVyLCBzZXR0ZXIsIERlZmluZVByb3BlcnR5QXR0cmli
dXRlcyhhdHRyaWJ1dGVzLmFzSW50MzIoKSkpOworICAgIEFTU0VSVCgoZGVzY3JpcHRvci5hdHRy
aWJ1dGVzKCkgJiBBY2Nlc3NvcikgfHwgKCFkZXNjcmlwdG9yLmlzQWNjZXNzb3JEZXNjcmlwdG9y
KCkpKTsKKyAgICBiYXNlLT5tZXRob2RUYWJsZSh2bSktPmRlZmluZU93blByb3BlcnR5KGJhc2Us
IGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgdHJ1ZSk7CisgICAgRU5EKCk7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25TbG93UGF0aHMuaAppbmRleCBjMjZhOGM3Y2QzYmQzNTM0NWJlOWVjYzM1MGFhNDIxZTU0
MTY4NjVmLi5jZGQ0ZjQ0N2Q1MThjZjRiNDFmZjg1OGRiZDgwOGVmZTdiYjM1MWE1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaApAQCAtMjU4
LDYgKzI1OCw4IEBAIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZ2V0X2J5X2lkX3dp
dGhfdGhpcyk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2dldF9ieV92YWxfd2l0
aF90aGlzKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHV0X2J5X2lkX3dpdGhf
dGhpcyk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3B1dF9ieV92YWxfd2l0aF90
aGlzKTsKK1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZGVmaW5lX2RhdGFfcHJvcGVy
dHkpOworU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9kZWZpbmVfYWNjZXNzb3JfcHJv
cGVydHkpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9EZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4zZDhhMjQ4YjkxNjBjNDc2NGIxMGNhNDExZmIyZjJjNzVjYTk4MzYwCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGVmaW5lUHJvcGVydHlBdHRyaWJ1
dGVzLmgKQEAgLTAsMCArMSwxNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9UcmlTdGF0ZS5oPgor
CituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzIHsKK3B1
YmxpYzoKKyAgICBzdGF0aWNfYXNzZXJ0KEZhbHNlVHJpU3RhdGUgPT0gMCwgIkZhbHNlVHJpU3Rh
dGUgaXMgMC4iKTsKKyAgICBzdGF0aWNfYXNzZXJ0KFRydWVUcmlTdGF0ZSA9PSAxLCAiVHJ1ZVRy
aVN0YXRlIGlzIDEuIik7CisgICAgc3RhdGljX2Fzc2VydChNaXhlZFRyaVN0YXRlID09IDIsICJN
aXhlZFRyaVN0YXRlIGlzIDIuIik7CisKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgQ29uZmln
dXJhYmxlU2hpZnQgPSAwOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBFbnVtZXJhYmxlU2hp
ZnQgPSAyOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBXcml0YWJsZVNoaWZ0ID0gNDsKKyAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgVmFsdWVTaGlmdCA9IDY7CisgICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIEdldFNoaWZ0ID0gNzsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU2V0U2hp
ZnQgPSA4OworCisgICAgRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzKCkKKyAgICAgICAgOiBtX2F0
dHJpYnV0ZXMoCisgICAgICAgICAgICAoTWl4ZWRUcmlTdGF0ZSA8PCBDb25maWd1cmFibGVTaGlm
dCkKKyAgICAgICAgICAgIHwgKE1peGVkVHJpU3RhdGUgPDwgRW51bWVyYWJsZVNoaWZ0KQorICAg
ICAgICAgICAgfCAoTWl4ZWRUcmlTdGF0ZSA8PCBXcml0YWJsZVNoaWZ0KQorICAgICAgICAgICAg
fCAoMCA8PCBWYWx1ZVNoaWZ0KQorICAgICAgICAgICAgfCAoMCA8PCBHZXRTaGlmdCkKKyAgICAg
ICAgICAgIHwgKDAgPDwgU2V0U2hpZnQpKQorICAgIHsKKyAgICB9CisKKyAgICBleHBsaWNpdCBE
ZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXModW5zaWduZWQgYXR0cmlidXRlcykKKyAgICAgICAgOiBt
X2F0dHJpYnV0ZXMoYXR0cmlidXRlcykKKyAgICB7CisgICAgfQorCisgICAgdW5zaWduZWQgcmF3
UmVwcmVzZW50YXRpb24oKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYXR0cmlidXRl
czsKKyAgICB9CisKKyAgICBib29sIGhhc1ZhbHVlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBt
X2F0dHJpYnV0ZXMgJiAoMGIxIDw8IFZhbHVlU2hpZnQpOworICAgIH0KKworICAgIHZvaWQgc2V0
VmFsdWUoKQorICAgIHsKKyAgICAgICAgbV9hdHRyaWJ1dGVzID0gbV9hdHRyaWJ1dGVzIHwgKDBi
MSA8PCBWYWx1ZVNoaWZ0KTsKKyAgICB9CisKKyAgICBib29sIGhhc0dldCgpCisgICAgeworICAg
ICAgICByZXR1cm4gbV9hdHRyaWJ1dGVzICYgKDBiMSA8PCBHZXRTaGlmdCk7CisgICAgfQorCisg
ICAgdm9pZCBzZXRHZXQoKQorICAgIHsKKyAgICAgICAgbV9hdHRyaWJ1dGVzID0gbV9hdHRyaWJ1
dGVzIHwgKDBiMSA8PCBHZXRTaGlmdCk7CisgICAgfQorCisgICAgYm9vbCBoYXNTZXQoKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIG1fYXR0cmlidXRlcyAmICgwYjEgPDwgU2V0U2hpZnQpOworICAg
IH0KKworICAgIHZvaWQgc2V0U2V0KCkKKyAgICB7CisgICAgICAgIG1fYXR0cmlidXRlcyA9IG1f
YXR0cmlidXRlcyB8ICgwYjEgPDwgU2V0U2hpZnQpOworICAgIH0KKworICAgIFRyaVN0YXRlIHdy
aXRhYmxlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBleHRyYWN0VHJpU3RhdGUoV3JpdGFibGVT
aGlmdCk7CisgICAgfQorCisgICAgVHJpU3RhdGUgY29uZmlndXJhYmxlKCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBleHRyYWN0VHJpU3RhdGUoQ29uZmlndXJhYmxlU2hpZnQpOworICAgIH0KKwor
ICAgIFRyaVN0YXRlIGVudW1lcmFibGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGV4dHJhY3RU
cmlTdGF0ZShFbnVtZXJhYmxlU2hpZnQpOworICAgIH0KKworICAgIHZvaWQgc2V0V3JpdGFibGUo
Ym9vbCB2YWx1ZSkKKyAgICB7CisgICAgICAgIGZpbGxXaXRoVHJpU3RhdGUodmFsdWUgPyBUcnVl
VHJpU3RhdGUgOiBGYWxzZVRyaVN0YXRlLCBXcml0YWJsZVNoaWZ0KTsKKyAgICB9CisKKyAgICB2
b2lkIHNldENvbmZpZ3VyYWJsZShib29sIHZhbHVlKQorICAgIHsKKyAgICAgICAgZmlsbFdpdGhU
cmlTdGF0ZSh2YWx1ZSA/IFRydWVUcmlTdGF0ZSA6IEZhbHNlVHJpU3RhdGUsIENvbmZpZ3VyYWJs
ZVNoaWZ0KTsKKyAgICB9CisKKyAgICB2b2lkIHNldEVudW1lcmFibGUoYm9vbCB2YWx1ZSkKKyAg
ICB7CisgICAgICAgIGZpbGxXaXRoVHJpU3RhdGUodmFsdWUgPyBUcnVlVHJpU3RhdGUgOiBGYWxz
ZVRyaVN0YXRlLCBFbnVtZXJhYmxlU2hpZnQpOworICAgIH0KKworcHJpdmF0ZToKKyAgICB2b2lk
IGZpbGxXaXRoVHJpU3RhdGUoVHJpU3RhdGUgc3RhdGUsIHVuc2lnbmVkIHNoaWZ0KQorICAgIHsK
KyAgICAgICAgdW5zaWduZWQgbWFzayA9IDBiMTEgPDwgc2hpZnQ7CisgICAgICAgIG1fYXR0cmli
dXRlcyA9IChtX2F0dHJpYnV0ZXMgJiB+bWFzaykgfCAoc3RhdGUgPDwgc2hpZnQpOworICAgIH0K
KworICAgIFRyaVN0YXRlIGV4dHJhY3RUcmlTdGF0ZSh1bnNpZ25lZCBzaGlmdCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUcmlTdGF0ZT4oKG1fYXR0cmlidXRlcyA+PiBzaGlm
dCkgJiAwYjExKTsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBtX2F0dHJpYnV0ZXM7Cit9OworCisK
K30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IDk3M2MyZTgxNjllYjhmYzVlYWVmNjQ2NzBiNDYxMTM2
MjFhNTU4YTAuLjVjOTRiOTI1Y2JlNjVlMTkyNDFkNDlhMjhmMWUxMWEwOWY2NzEyNzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAg
LTQwNCw3ICs0MDQsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2bSkKICAgICBt
X2Z1bmN0aW9uUHJvdG9IYXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9uLnNldCh2bSwgdGhpcywgaGFz
SW5zdGFuY2VTeW1ib2xGdW5jdGlvbik7CiAgICAgbV90aHJvd1R5cGVFcnJvckdldHRlclNldHRl
ci5pbml0TGF0ZXIoCiAgICAgICAgIFtdIChjb25zdCBJbml0aWFsaXplcjxHZXR0ZXJTZXR0ZXI+
JiBpbml0KSB7Ci0gICAgICAgICAgICBKU0Z1bmN0aW9uKiB0aHJvd2VyID0gSlNGdW5jdGlvbjo6
Y3JlYXRlKGluaXQudm0sIGluaXQub3duZXIsIDAsIFN0cmluZygpLCBnbG9iYWxGdW5jVGhyb3dU
eXBlRXJyb3IpOworICAgICAgICAgICAgSlNGdW5jdGlvbiogdGhyb3dlciA9IGluaXQub3duZXIt
PnRocm93VHlwZUVycm9yRnVuY3Rpb24oKTsKICAgICAgICAgICAgIEdldHRlclNldHRlciogZ2V0
dGVyU2V0dGVyID0gR2V0dGVyU2V0dGVyOjpjcmVhdGUoaW5pdC52bSwgaW5pdC5vd25lcik7CiAg
ICAgICAgICAgICBnZXR0ZXJTZXR0ZXItPnNldEdldHRlcihpbml0LnZtLCBpbml0Lm93bmVyLCB0
aHJvd2VyKTsKICAgICAgICAgICAgIGdldHRlclNldHRlci0+c2V0U2V0dGVyKGluaXQudm0sIGlu
aXQub3duZXIsIHRocm93ZXIpOwpAQCAtNTgxLDggKzU4MSw4IEBAIG1fICMjIHByb3Blck5hbWUg
IyMgU3RydWN0dXJlLnNldCh2bSwgdGhpcywgaW5zdGFuY2VUeXBlOjpjcmVhdGVTdHJ1Y3R1cmUo
dm0sIHRoCiAgICAgT2JqZWN0Q29uc3RydWN0b3IqIG9iamVjdENvbnN0cnVjdG9yID0gT2JqZWN0
Q29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgdGhpcywgT2JqZWN0Q29uc3RydWN0b3I6OmNyZWF0ZVN0
cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1fb2JqZWN0UHJv
dG90eXBlLmdldCgpKTsKICAgICBtX29iamVjdENvbnN0cnVjdG9yLnNldCh2bSwgdGhpcywgb2Jq
ZWN0Q29uc3RydWN0b3IpOwogCi0gICAgSlNGdW5jdGlvbiogZGVmaW5lUHJvcGVydHlGdW5jdGlv
biA9IG1fb2JqZWN0Q29uc3RydWN0b3ItPmFkZERlZmluZVByb3BlcnR5KGV4ZWMsIHRoaXMpOwot
ICAgIG1fZGVmaW5lUHJvcGVydHlGdW5jdGlvbi5zZXQodm0sIHRoaXMsIGRlZmluZVByb3BlcnR5
RnVuY3Rpb24pOworICAgIEpTRnVuY3Rpb24qIHRocm93VHlwZUVycm9yRnVuY3Rpb24gPSBKU0Z1
bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDAsIFN0cmluZygpLCBnbG9iYWxGdW5jVGhyb3dUeXBl
RXJyb3IpOworICAgIG1fdGhyb3dUeXBlRXJyb3JGdW5jdGlvbi5zZXQodm0sIHRoaXMsIHRocm93
VHlwZUVycm9yRnVuY3Rpb24pOwogCiAgICAgSlNDZWxsKiBmdW5jdGlvbkNvbnN0cnVjdG9yID0g
RnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBGdW5jdGlvbkNvbnN0cnVjdG9yOjpjcmVh
dGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBtX2Z1bmN0
aW9uUHJvdG90eXBlLmdldCgpKTsKICAgICBBcnJheUNvbnN0cnVjdG9yKiBhcnJheUNvbnN0cnVj
dG9yID0gQXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCB0aGlzLCBBcnJheUNvbnN0cnVjdG9y
OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBt
X2FycmF5UHJvdG90eXBlLmdldCgpLCBtX3NwZWNpZXNHZXR0ZXJTZXR0ZXIuZ2V0KCkpOwpAQCAt
ODAzLDcgKzgwMyw3IEBAIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT4ganNOYW1lLCBsb3dlck5hbWUgIyMgQ29uc3RydWN0CiAgICAgbV9zcGVjaWFsUG9p
bnRlcnNbU3BlY2lhbDo6T2JqZWN0Q29uc3RydWN0b3JdID0gb2JqZWN0Q29uc3RydWN0b3I7CiAg
ICAgbV9zcGVjaWFsUG9pbnRlcnNbU3BlY2lhbDo6QXJyYXlDb25zdHJ1Y3Rvcl0gPSBhcnJheUNv
bnN0cnVjdG9yOwogCi0gICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oTGlua1RpbWVDb25zdGFudDo6RGVmaW5lUHJvcGVydHlGdW5jdGlvbildID0gbV9kZWZpbmVQ
cm9wZXJ0eUZ1bmN0aW9uLmdldCgpOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OlRocm93VHlwZUVycm9yRnVuY3Rpb24pXSA9
IG1fdGhyb3dUeXBlRXJyb3JGdW5jdGlvbi5nZXQoKTsKIAogICAgIGlmIChVTkxJS0VMWShPcHRp
b25zOjp1c2VEb2xsYXJWTSgpKSkgewogICAgICAgICBKU0RvbGxhclZNUHJvdG90eXBlKiBkb2xs
YXJWTVByb3RvdHlwZSA9IEpTRG9sbGFyVk1Qcm90b3R5cGU6OmNyZWF0ZSh2bSwgdGhpcywgSlNE
b2xsYXJWTVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX29iamVjdFByb3Rv
dHlwZS5nZXQoKSkpOwpAQCAtMTA2Niw3ICsxMDY2LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6
dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIHZp
c2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2V2YWxGdW5jdGlvbik7CiAgICAgdmlzaXRvci5h
cHBlbmQoJnRoaXNPYmplY3QtPm1fY2FsbEZ1bmN0aW9uKTsKICAgICB2aXNpdG9yLmFwcGVuZCgm
dGhpc09iamVjdC0+bV9hcHBseUZ1bmN0aW9uKTsKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09i
amVjdC0+bV9kZWZpbmVQcm9wZXJ0eUZ1bmN0aW9uKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhp
c09iamVjdC0+bV90aHJvd1R5cGVFcnJvckZ1bmN0aW9uKTsKICAgICB0aGlzT2JqZWN0LT5tX2Fy
cmF5UHJvdG9Ub1N0cmluZ0Z1bmN0aW9uLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3Qt
Pm1fYXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmpl
Y3QtPm1faW5pdGlhbGl6ZVByb21pc2VGdW5jdGlvbi52aXNpdCh2aXNpdG9yKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IDM1Y2QwNWZm
ZDBmNzE0ZGRhNGU1MWJkZWUwODVmYWQyNTBiNDAwMTMuLjA1YWI5YTBjNDIwYzVhMzczMjZlNTdj
NTg5YWM0ZmExOGExZThhZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuaApAQCAtMjM0LDcgKzIzNCw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0
IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIFdyaXRlQmFycmllcjxK
U0Z1bmN0aW9uPiBtX2V2YWxGdW5jdGlvbjsKICAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4g
bV9jYWxsRnVuY3Rpb247CiAgICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1fYXBwbHlGdW5j
dGlvbjsKLSAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9kZWZpbmVQcm9wZXJ0eUZ1bmN0
aW9uOworICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBtX3Rocm93VHlwZUVycm9yRnVuY3Rp
b247CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBKU0Z1bmN0aW9uPiBtX2FycmF5
UHJvdG9Ub1N0cmluZ0Z1bmN0aW9uOwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwg
SlNGdW5jdGlvbj4gbV9hcnJheVByb3RvVmFsdWVzRnVuY3Rpb247CiAgICAgTGF6eVByb3BlcnR5
PEpTR2xvYmFsT2JqZWN0LCBKU0Z1bmN0aW9uPiBtX2luaXRpYWxpemVQcm9taXNlRnVuY3Rpb247
CkBAIC00NzksNyArNDc5LDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdt
ZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgSlNGdW5jdGlvbiogZXZhbEZ1bmN0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9ldmFsRnVuY3Rpb24uZ2V0KCk7IH0KICAgICBKU0Z1bmN0aW9uKiBjYWxs
RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2NhbGxGdW5jdGlvbi5nZXQoKTsgfQogICAgIEpT
RnVuY3Rpb24qIGFwcGx5RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2FwcGx5RnVuY3Rpb24u
Z2V0KCk7IH0KLSAgICBKU0Z1bmN0aW9uKiBkZWZpbmVQcm9wZXJ0eUZ1bmN0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9kZWZpbmVQcm9wZXJ0eUZ1bmN0aW9uLmdldCgpOyB9CisgICAgSlNGdW5jdGlv
biogdGhyb3dUeXBlRXJyb3JGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdGhyb3dUeXBlRXJy
b3JGdW5jdGlvbi5nZXQoKTsgfQogICAgIEpTRnVuY3Rpb24qIGFycmF5UHJvdG9Ub1N0cmluZ0Z1
bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9hcnJheVByb3RvVG9TdHJpbmdGdW5jdGlvbi5nZXQo
dGhpcyk7IH0KICAgICBKU0Z1bmN0aW9uKiBhcnJheVByb3RvVmFsdWVzRnVuY3Rpb24oKSBjb25z
dCB7IHJldHVybiBtX2FycmF5UHJvdG9WYWx1ZXNGdW5jdGlvbi5nZXQodGhpcyk7IH0KICAgICBK
U0Z1bmN0aW9uKiBpbml0aWFsaXplUHJvbWlzZUZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9p
bml0aWFsaXplUHJvbWlzZUZ1bmN0aW9uLmdldCh0aGlzKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCmluZGV4IGQ5OTE0OWFh
NDFjNjEyYTYyYTZkOTJlOTI0YTZjODQ4YjUxNmNmY2QuLjkzYWNjYzExOWZhODc4MDY4YmRmMGYx
Y2JkZThhNTcxZjk2NzZjMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKQEAgLTEwNywxNCArMTA3LDYgQEAgdm9pZCBPYmpl
Y3RDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBPYmoKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElP
Tih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZXRPd25Qcm9wZXJ0eU5hbWVzUHJp
dmF0ZU5hbWUoKSwgb2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eU5hbWVzLCBEb250RW51
bSwgMSk7CiB9CiAKLUpTRnVuY3Rpb24qIE9iamVjdENvbnN0cnVjdG9yOjphZGREZWZpbmVQcm9w
ZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCi17Ci0g
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBKU0Z1bmN0aW9uKiBkZWZpbmVQcm9wZXJ0eUZ1
bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDMsIHZtLnByb3Bl
cnR5TmFtZXMtPmRlZmluZVByb3BlcnR5LnN0cmluZygpLCBvYmplY3RDb25zdHJ1Y3RvckRlZmlu
ZVByb3BlcnR5KTsKLSAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+ZGVmaW5lUHJvcGVydHksIGRlZmluZVByb3BlcnR5RnVuY3Rpb24sIERvbnRFbnVt
KTsKLSAgICByZXR1cm4gZGVmaW5lUHJvcGVydHlGdW5jdGlvbjsKLX0KLQogLy8gRVMgMTkuMS4x
LjEgT2JqZWN0KFt2YWx1ZV0pCiBzdGF0aWMgQUxXQVlTX0lOTElORSBKU09iamVjdCogY29uc3Ry
dWN0T2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBuZXdUYXJnZXQpCiB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuaAppbmRleCBi
MTYxNGRhYmRiMzg1YzdjZDZlMmYyZDVjZGQ2ODcxZTc5N2Q0MThjLi4yYWFhODE1NDI1MmI5NzFi
NmU3MjhmYTZkMDAxOTk0NDA0NGJkOTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmgKQEAgLTU0LDggKzU0LDYgQEAgY2xhc3MgT2Jq
ZWN0Q29uc3RydWN0b3IgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CiAgICAgICAgIHJldHVy
biBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZv
KE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKICAgICB9CiAKLSAgICBKU0Z1
bmN0aW9uKiBhZGREZWZpbmVQcm9wZXJ0eShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCopOwot
CiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0
KiwgT2JqZWN0UHJvdG90eXBlKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUHJvcGVydHlEZXNjcmlwdG9yLmgKaW5kZXggYWE2MWVlYTQ5NWM0ZDFjOWQ1YTBmODI0
NzlkMzI0NTM2NjU1YTM2NS4uZWU5NzFmNTUwMzY3NjczMjA5Nzk5ZTgxOWU1ZDQzMDFkZDU4NDQ4
NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlEZXNj
cmlwdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlEZXNj
cmlwdG9yLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgUHJvcGVydHlEZXNjcmlwdG9yX2gK
ICNkZWZpbmUgUHJvcGVydHlEZXNjcmlwdG9yX2gKIAorI2luY2x1ZGUgIkRlZmluZVByb3BlcnR5
QXR0cmlidXRlcy5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKIAogbmFtZXNwYWNlIEpTQyB7
CkBAIC05Myw2ICs5NCwzMiBAQCBjbGFzcyBQcm9wZXJ0eURlc2NyaXB0b3IgewogICAgIHVuc2ln
bmVkIG1fc2VlbkF0dHJpYnV0ZXM7CiB9OwogCitpbmxpbmUgUHJvcGVydHlEZXNjcmlwdG9yIHRv
UHJvcGVydHlEZXNjcmlwdG9yKEpTVmFsdWUgdmFsdWUsIEpTVmFsdWUgZ2V0dGVyLCBKU1ZhbHVl
IHNldHRlciwgRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMpCit7CisgICAgLy8g
V2UgYXNzdW1lIHRoYXQgdmFsaWRhdGlvbiBpcyBhbHJlYWR5IGRvbmUuCisgICAgUHJvcGVydHlE
ZXNjcmlwdG9yIGRlc2M7CisKKyAgICBpZiAoYXR0cmlidXRlcy5lbnVtZXJhYmxlKCkgIT0gTWl4
ZWRUcmlTdGF0ZSkKKyAgICAgICAgZGVzYy5zZXRFbnVtZXJhYmxlKGF0dHJpYnV0ZXMuZW51bWVy
YWJsZSgpKTsKKworICAgIGlmIChhdHRyaWJ1dGVzLmNvbmZpZ3VyYWJsZSgpICE9IE1peGVkVHJp
U3RhdGUpCisgICAgICAgIGRlc2Muc2V0Q29uZmlndXJhYmxlKGF0dHJpYnV0ZXMuY29uZmlndXJh
YmxlKCkpOworCisgICAgaWYgKGF0dHJpYnV0ZXMuaGFzVmFsdWUoKSkKKyAgICAgICAgZGVzYy5z
ZXRWYWx1ZSh2YWx1ZSk7CisKKyAgICBpZiAoYXR0cmlidXRlcy53cml0YWJsZSgpICE9IE1peGVk
VHJpU3RhdGUpCisgICAgICAgIGRlc2Muc2V0V3JpdGFibGUoYXR0cmlidXRlcy53cml0YWJsZSgp
KTsKKworICAgIGlmIChhdHRyaWJ1dGVzLmhhc0dldCgpKQorICAgICAgICBkZXNjLnNldEdldHRl
cihnZXR0ZXIpOworCisgICAgaWYgKGF0dHJpYnV0ZXMuaGFzU2V0KCkpCisgICAgICAgIGRlc2Mu
c2V0U2V0dGVyKHNldHRlcik7CisKKyAgICByZXR1cm4gZGVzYzsKK30KKwogfQogCiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>289867</attachid>
            <date>2016-09-26 14:20:41 -0700</date>
            <delta_ts>2016-09-26 14:32:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162108-20160926141744.patch</filename>
            <type>text/plain</type>
            <size>86878</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA2Mzc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
ZmFjYTk1OGQ0YzdiMWViMWE1MjFiYjEwNjQwNDMxZTQ4NjVjOTRkLi5lZDM2YWQ3OGE5ZDY0ZDQ3
YzMyNDI3ZDAxZTExZTI0OTZjNTFlM2YwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEg
KzEsMTA0IEBACisyMDE2LTA5LTI2ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwu
Y29tPgorCisgICAgICAgIFtKU0NdIEFkZCBhIG5ldyBieXRlIGNvZGUgb3BfZGVmaW5lX3Byb3Bl
cnR5IGluc3RlYWQgb2YgY2FsbGluZyBkZWZpbmVQcm9wZXJ0eQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyMTA4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uOgor
ICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmg6CisgICAgICAgIChKU0M6OmNvbXB1
dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpjb21wdXRlRGVmc0ZvckJ5
dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAg
ICAoSlNDOjpDb2RlQmxvY2s6OmR1bXBCeXRlY29kZSk6CisgICAgICAgICogYnl0ZWNvZGUvU3Bl
Y2lhbFBvaW50ZXIuaDoKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
Y3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE1vdmVMaW5rVGltZUNv
bnN0YW50KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxsRGVmaW5l
UHJvcGVydHkpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgor
ICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpQ
cm9wZXJ0eUxpc3ROb2RlOjplbWl0UHV0Q29uc3RhbnRQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6
OkJpdHdpc2VOb3ROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpDbGFzc0V4cHJO
b2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpPYmplY3RQYXR0ZXJuTm9kZTo6Ymlu
ZFZhbHVlKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoK
KyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBl
Pjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAg
ICAqIGRmZy9ERkdDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNhcGFiaWxp
dHlMZXZlbCk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6
REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAqIGRmZy9E
RkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAg
KiBkZmcvREZHT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFn
YXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAg
ICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRp
dmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FsbE9wZXJhdGlv
bik6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3Bl
Y3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlND
OjpGVEw6OmNhbkNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgor
ICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTm9kZSk6CisgICAg
ICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVEZWZpbmVEYXRhUHJvcGVy
dHkpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlRGVmaW5l
QWNjZXNzb3JQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6
OmNvbXBpbGVQdXRCeVZhbFdpdGhUaGlzKTogRGVsZXRlZC4KKyAgICAgICAgKiBqaXQvQ0NhbGxI
ZWxwZXJzLmNwcDoKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpzZXR1cEZvdXJTdHViQXJn
c0dQUik6IERlbGV0ZWQuCisgICAgICAgICogaml0L0NDYWxsSGVscGVycy5oOgorICAgICAgICAo
SlNDOjpDQ2FsbEhlbHBlcnM6OnNldHVwRm91clN0dWJBcmdzR1BSKToKKyAgICAgICAgKEpTQzo6
Q0NhbGxIZWxwZXJzOjpzZXR1cEZpdmVTdHViQXJnc0dQUik6CisgICAgICAgIChKU0M6OkNDYWxs
SGVscGVyczo6c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKToKKyAgICAgICAgKEpTQzo6Q0Nh
bGxIZWxwZXJzOjpzZXR1cFN0dWJBcmdzR1BSKToKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJz
OjpwcmVwYXJlRm9yVGFpbENhbGxTbG93KTogRGVsZXRlZC4KKyAgICAgICAgKiBqaXQvSklULmNw
cDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAgICAgICAg
KiBqaXQvSklULmg6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBq
aXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZGVm
aW5lX2RhdGFfcHJvcGVydHkpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZGVmaW5lX2Fj
Y2Vzc29yX3Byb3BlcnR5KToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFz
bToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6
OlNMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5oOgor
ICAgICAgICAqIHJ1bnRpbWUvRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzLmg6IEFkZGVkLgorICAg
ICAgICAoSlNDOjpEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXM6OkRlZmluZVByb3BlcnR5QXR0cmli
dXRlcyk6CisgICAgICAgIChKU0M6OkRlZmluZVByb3BlcnR5QXR0cmlidXRlczo6cmF3UmVwcmVz
ZW50YXRpb24pOgorICAgICAgICAoSlNDOjpEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXM6Omhhc1Zh
bHVlKToKKyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzOjpzZXRWYWx1ZSk6
CisgICAgICAgIChKU0M6OkRlZmluZVByb3BlcnR5QXR0cmlidXRlczo6aGFzR2V0KToKKyAgICAg
ICAgKEpTQzo6RGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzOjpzZXRHZXQpOgorICAgICAgICAoSlND
OjpEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXM6Omhhc1NldCk6CisgICAgICAgIChKU0M6OkRlZmlu
ZVByb3BlcnR5QXR0cmlidXRlczo6c2V0U2V0KToKKyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVy
dHlBdHRyaWJ1dGVzOjp3cml0YWJsZSk6CisgICAgICAgIChKU0M6OkRlZmluZVByb3BlcnR5QXR0
cmlidXRlczo6Y29uZmlndXJhYmxlKToKKyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVydHlBdHRy
aWJ1dGVzOjplbnVtZXJhYmxlKToKKyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVydHlBdHRyaWJ1
dGVzOjpzZXRXcml0YWJsZSk6CisgICAgICAgIChKU0M6OkRlZmluZVByb3BlcnR5QXR0cmlidXRl
czo6c2V0Q29uZmlndXJhYmxlKToKKyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVydHlBdHRyaWJ1
dGVzOjpzZXRFbnVtZXJhYmxlKToKKyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVydHlBdHRyaWJ1
dGVzOjpmaWxsV2l0aFRyaVN0YXRlKToKKyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVydHlBdHRy
aWJ1dGVzOjpleHRyYWN0VHJpU3RhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgIChK
U0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0pT
R2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp0aHJvd1R5cGVF
cnJvckZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmRlZmluZVByb3Bl
cnR5RnVuY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0
b3IuY3BwOgorICAgICAgICAoSlNDOjpPYmplY3RDb25zdHJ1Y3Rvcjo6YWRkRGVmaW5lUHJvcGVy
dHkpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuaDoKKyAg
ICAgICAgKiBydW50aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5oOgorICAgICAgICAoSlNDOjp0b1By
b3BlcnR5RGVzY3JpcHRvcik6CisKID09IFJvbGxlZCBvdmVyIHRvIENoYW5nZUxvZy0yMDE2LTA5
LTI2ID09CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGY3MzRmOTE2MjNmYTQzZGQ1
NGE2YTA4Njg5MmE5YWFmYjUxODE1MzUuLjlkZjU1ZTc2MjBmMGY1Mjc0ZDQ1MDM3M2M3YTExZDc0
Mjc3ZmRmOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMTY4LDYgKzIxNjgs
NyBAQAogCQlGRUQ5NEYyRjE3MUUzRTIzMDBCRTc3QTQgLyogV2F0Y2hkb2cuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFRDk0RjJDMTcxRTNFMjMwMEJF
NzdBNCAvKiBXYXRjaGRvZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUZFRjA0MDUxMUFBRTY2MkQwMEJEMjhCMCAvKiBDb21wYXJlQW5kU3dhcFRl
c3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVG
MDQwNTAxQUFFNjYyRDAwQkQyOEIwIC8qIENvbXBhcmVBbmRTd2FwVGVzdC5jcHAgKi87IH07CiAJ
CUZFRkQ2RkM2MUQ1RTc5OTIwMDhGMkYwQiAvKiBKU1N0cmluZ0lubGluZXMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFRkQ2RkM1MUQ1RTc5NzAwMDhG
MkYwQiAvKiBKU1N0cmluZ0lubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQk0NzNEQTRBNDc2NEM0NUZFODcxQjA0ODUgLyogRGVmaW5lUHJv
cGVydHlBdHRyaWJ1dGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxNjk5NDhFREU2OEQ0MDU0QjAxRUY3OTcgLyogRGVmaW5lUHJvcGVydHlBdHRyaWJ1
dGVzLmggKi87IH07CiAvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4g
UEJYQ29udGFpbmVySXRlbVByb3h5IHNlY3Rpb24gKi8KQEAgLTQ0OTgsNiArNDQ5OSw3IEBACiAJ
CUZFRjA0MDUwMUFBRTY2MkQwMEJEMjhCMCAvKiBDb21wYXJlQW5kU3dhcFRlc3QuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQ29tcGFyZUFuZFN3YXBUZXN0LmNwcDsg
cGF0aCA9IEFQSS90ZXN0cy9Db21wYXJlQW5kU3dhcFRlc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlGRUYwNDA1MjFBQUVDNEVEMDBCRDI4QjAgLyogQ29tcGFyZUFuZFN3YXBU
ZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IENvbXBhcmVBbmRTd2FwVGVz
dC5oOyBwYXRoID0gQVBJL3Rlc3RzL0NvbXBhcmVBbmRTd2FwVGVzdC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlGRUZENkZDNTFENUU3OTcwMDA4RjJGMEIgLyogSlNTdHJpbmdJbmxp
bmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU3RyaW5nSW5saW5lcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNjk5NDhFREU2OEQ0MDU0QjAxRUY3OTcg
LyogRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IERlZmluZVByb3BlcnR5QXR0cmlidXRlcy5oOyBwYXRoID0gRGVmaW5lUHJvcGVydHlB
dHRyaWJ1dGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAvKiBFbmQgUEJYRmlsZVJl
ZmVyZW5jZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlIHNl
Y3Rpb24gKi8KQEAgLTYyNDEsNiArNjI0Myw3IEBACiAJCQkJNzA5RkI4NjYxQUUzMzVDNjAwMzlE
MDY5IC8qIFdlYWtTZXRQcm90b3R5cGUuaCAqLywKIAkJCQlBN0RDQjc3OTEyRTNEOTA1MDA5MTE5
NDAgLyogV3JpdGVCYXJyaWVyLmggKi8sCiAJCQkJQzJCNkQ3NTIxOEEzMzc5MzAwNEE5MzAxIC8q
IFdyaXRlQmFycmllcklubGluZXMuaCAqLywKKwkJCQkxNjk5NDhFREU2OEQ0MDU0QjAxRUY3OTcg
LyogRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IHJ1bnRp
bWU7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtODM3Niw2ICs4Mzc5LDcgQEAKIAkJ
CQk4NjcwNEI0MzEyREI4QTgxMDBBOUZFN0IgLyogWWFyclN5bnRheENoZWNrZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE3OUQzRUQ5QzUwNjRERDBBODQ2NkEzQSAvKiBNb2R1bGVTY29wZURhdGEu
aCBpbiBIZWFkZXJzICovLAogCQkJCUQ5NzIyNzUyREM1NDQ1OUI5MTI1QjUzOSAvKiBKU01vZHVs
ZUxvYWRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDczREE0QTQ3NjRDNDVGRTg3MUIwNDg1IC8q
IERlZmluZVByb3BlcnR5QXR0cmlidXRlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVu
T25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24gYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KaW5kZXggZGM1OTk4MDU2
OTFjZGE1N2I1ZDM2MTE1OTlkZDVmMjhkNzEwMmRiZS4uNTc2ZGU0MDA2MDRkMTAxNDc1MWNjNjNi
ZWFjZWM3N2E1NWZkNGZmNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlTGlzdC5qc29uCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUxpc3QuanNvbgpAQCAtODEsNiArODEsOCBAQAogICAgICAgICAgICAgeyAibmFt
ZSIgOiAib3BfcHV0X2dldHRlcl9zZXR0ZXJfYnlfaWQiLCAibGVuZ3RoIiA6IDYgfSwKICAgICAg
ICAgICAgIHsgIm5hbWUiIDogIm9wX3B1dF9nZXR0ZXJfYnlfdmFsIiwgImxlbmd0aCIgOiA1IH0s
CiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9wdXRfc2V0dGVyX2J5X3ZhbCIsICJsZW5ndGgi
IDogNSB9LAorICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfZGVmaW5lX2RhdGFfcHJvcGVydHki
LCAibGVuZ3RoIiA6IDUgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2RlZmluZV9hY2Nl
c3Nvcl9wcm9wZXJ0eSIsICJsZW5ndGgiIDogNiB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAi
b3Bfam1wIiwgImxlbmd0aCIgOiAyIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9qdHJ1
ZSIsICJsZW5ndGgiIDogMyB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfamZhbHNlIiwg
Imxlbmd0aCIgOiAzIH0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVVc2VEZWYuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZVVzZURlZi5oCmluZGV4IGRhYmNlNGVkZjAzMjY0OGMwODk2ODk5ODJhODgxN2VjNjAwYTgx
N2UuLjQ1YTllMDljYmQ4MmVmNjg5ZDNiMzRmOGVlNTBlMTFlYjk1YTM3NjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCkBAIC0xNDQsNiAr
MTQ0LDIzIEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChCbG9jayogY29kZUJs
b2NrLCBPcGNvZGVJRCBvcGNvZGVJRCwgSW5zdHJ1Y3RpCiAgICAgICAgIGZ1bmN0b3IoY29kZUJs
b2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzRdLnUub3BlcmFuZCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CisgICAgY2FzZSBvcF9kZWZpbmVfZGF0YV9wcm9wZXJ0eTog
eworICAgICAgICBBU1NFUlQob3Bjb2RlTGVuZ3Roc1tvcGNvZGVJRF0gPiA0KTsKKyAgICAgICAg
ZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25bMV0u
dS5vcGVyYW5kKTsKKyAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNv
ZGVJRCwgaW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsKKyAgICAgICAgZnVuY3Rvcihjb2RlQmxv
Y2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKTsKKyAg
ICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rp
b25bNF0udS5vcGVyYW5kKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBjYXNlIG9wX2Rl
ZmluZV9hY2Nlc3Nvcl9wcm9wZXJ0eTogeworICAgICAgICBBU1NFUlQob3Bjb2RlTGVuZ3Roc1tv
cGNvZGVJRF0gPiA1KTsKKyAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBv
cGNvZGVJRCwgaW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKKyAgICAgICAgZnVuY3Rvcihjb2Rl
QmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsK
KyAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1
Y3Rpb25bM10udS5vcGVyYW5kKTsKKyAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0
aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kKTsKKyAgICAgICAgZnVuY3Rv
cihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25bNV0udS5vcGVy
YW5kKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICAgICBjYXNlIG9wX2dldF9wcm9wZXJ0eV9l
bnVtZXJhdG9yOgogICAgIGNhc2Ugb3BfZ2V0X2VudW1lcmFibGVfbGVuZ3RoOgogICAgIGNhc2Ug
b3BfbmV3X2Z1bmNfZXhwOgpAQCAtMzMyLDYgKzM0OSw4IEBAIHZvaWQgY29tcHV0ZURlZnNGb3JC
eXRlY29kZU9mZnNldChCbG9jayogY29kZUJsb2NrLCBPcGNvZGVJRCBvcGNvZGVJRCwgSW5zdHJ1
Y3RpCiAgICAgY2FzZSBvcF9wdXRfYnlfdmFsOgogICAgIGNhc2Ugb3BfcHV0X2J5X3ZhbF9kaXJl
Y3Q6CiAgICAgY2FzZSBvcF9wdXRfYnlfaW5kZXg6CisgICAgY2FzZSBvcF9kZWZpbmVfZGF0YV9w
cm9wZXJ0eToKKyAgICBjYXNlIG9wX2RlZmluZV9hY2Nlc3Nvcl9wcm9wZXJ0eToKICAgICBjYXNl
IG9wX3Byb2ZpbGVfdHlwZToKICAgICBjYXNlIG9wX3Byb2ZpbGVfY29udHJvbF9mbG93OgogICAg
IGNhc2Ugb3BfcHV0X3RvX2FyZ3VtZW50czoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5jcHAKaW5kZXggZjAwZDk4YzMwNjlmMTMwZWI5MDI4Y2I3M2VlYTAxYWQ4
MDcyNTJkNS4uOGFhOTk3NTkyNjVmNDJmMTcxNWE4NDc3MjM0OTRlMWRiOTNhYTU0OSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTEyMzMsNiAr
MTIzMywyNSBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKAogICAgICAgICAgICAgb3V0
LnByaW50ZigiJXMsICVzLCAlZCwgJXMiLCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgcmVnaXN0
ZXJOYW1lKHIxKS5kYXRhKCksIG4wLCByZWdpc3Rlck5hbWUocjIpLmRhdGEoKSk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBjYXNlIG9wX2RlZmluZV9kYXRhX3Byb3Bl
cnR5OiB7CisgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAg
ICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgaW50IHIyID0gKCsr
aXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBpbnQgcjMgPSAoKytpdCktPnUub3BlcmFuZDsK
KyAgICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwg
ImRlZmluZV9kYXRhX3Byb3BlcnR5Iik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMs
ICVzLCAlcyIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjEpLmRhdGEo
KSwgcmVnaXN0ZXJOYW1lKHIyKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMykuZGF0YSgpKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2Ugb3BfZGVmaW5lX2FjY2Vz
c29yX3Byb3BlcnR5OiB7CisgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsK
KyAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgaW50
IHIyID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBpbnQgcjMgPSAoKytpdCktPnUu
b3BlcmFuZDsKKyAgICAgICAgICAgIGludCByNCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAg
ICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAiZGVmaW5l
X2FjY2Vzc29yX3Byb3BlcnR5Iik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsICVz
LCAlcywgJXMiLCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRh
KCksIHJlZ2lzdGVyTmFtZShyMikuZGF0YSgpLCByZWdpc3Rlck5hbWUocjMpLmRhdGEoKSwgcmVn
aXN0ZXJOYW1lKHI0KS5kYXRhKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAg
ICAgICAgY2FzZSBvcF9kZWxfYnlfaWQ6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+
dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY2lhbFBvaW50ZXIuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjaWFsUG9pbnRlci5oCmluZGV4IDY0
ZmIyM2ZjZjI3ZDQxMjUwNDgwMjE5ZThjOGM0MWI3YzQxYTdlZjUuLjkwY2IzYTk5MjZkNjJlNjA0
YjE4YzNiM2RiZDU1MjJiNDUyYWVkZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9TcGVjaWFsUG9pbnRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9TcGVjaWFsUG9pbnRlci5oCkBAIC00Miw3ICs0Miw3IEBAIGVudW0gUG9pbnRlciB7
CiB9IC8vIG5hbWVzcGFjZSBTcGVjaWFsCiAKIGVudW0gY2xhc3MgTGlua1RpbWVDb25zdGFudCB7
Ci0gICAgRGVmaW5lUHJvcGVydHlGdW5jdGlvbiwKKyAgICBUaHJvd1R5cGVFcnJvckZ1bmN0aW9u
LAogfTsKIGNvbnN0IHVuc2lnbmVkIExpbmtUaW1lQ29uc3RhbnRDb3VudCA9IDE7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5jcHAKaW5kZXggY2M3MTcyM2VmM2MwZjVkNGJiM2NjZGVjYjhiYTk3NjI3MjNkMzJmZS4u
YjBjM2NjZDVhY2IyNTU2MTg4ZDkyODIyMjVhNTc0YjFmMDQ3MmMyMyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5j
cHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJCdWlsdGluRXhlY3V0YWJsZXMuaCIKICNp
bmNsdWRlICJCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oIgogI2luY2x1ZGUgIkJ5dGVjb2Rl
TGl2ZW5lc3NBbmFseXNpcy5oIgorI2luY2x1ZGUgIkRlZmluZVByb3BlcnR5QXR0cmlidXRlcy5o
IgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2lu
Y2x1ZGUgIkpTR2VuZXJhdG9yRnVuY3Rpb24uaCIKQEAgLTE1NDMsNiArMTU0NCw5IEBAIFJlZ2lz
dGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TW92ZUxpbmtUaW1lQ29uc3RhbnQoUmVnaXN0
ZXJJRCogZHN0LCBMaW5rVGltCiAgICAgICAgIG1fbGlua1RpbWVDb25zdGFudFJlZ2lzdGVyc1tj
b25zdGFudEluZGV4XSA9ICZtX2NvbnN0YW50UG9vbFJlZ2lzdGVyc1tpbmRleF07CiAgICAgfQog
CisgICAgaWYgKCFkc3QpCisgICAgICAgIHJldHVybiBtX2xpbmtUaW1lQ29uc3RhbnRSZWdpc3Rl
cnNbY29uc3RhbnRJbmRleF07CisKICAgICBlbWl0T3Bjb2RlKG9wX21vdik7CiAgICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KG1fbGlua1RpbWVDb25zdGFudFJlZ2lzdGVyc1tjb25zdGFudEluZGV4XS0+aW5kZXgoKSk7CkBA
IC0zMjY4LDM4ICszMjcyLDU5IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRMb2dTaGFk
b3dDaGlja2VuVGFpbElmTmVjZXNzYXJ5KCkKIH0KIAogdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdENhbGxEZWZpbmVQcm9wZXJ0eShSZWdpc3RlcklEKiBuZXdPYmosIFJlZ2lzdGVySUQqIHBy
b3BlcnR5TmFtZVJlZ2lzdGVyLAotICAgIFJlZ2lzdGVySUQqIHZhbHVlUmVnaXN0ZXIsIFJlZ2lz
dGVySUQqIGdldHRlclJlZ2lzdGVyLCBSZWdpc3RlcklEKiBzZXR0ZXJSZWdpc3RlciwgdW5zaWdu
ZWQgb3B0aW9ucywgY29uc3QgSlNUZXh0UG9zaXRpb24mIHBvc2l0aW9uKQorICAgIFJlZ2lzdGVy
SUQqIHZhbHVlUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIGdldHRlclJlZ2lzdGVyLCBSZWdpc3RlcklE
KiBzZXR0ZXJSZWdpc3RlciwgdW5zaWduZWQgb3B0aW9ucykKIHsKLSAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gZGVzY3JpcHRvclJlZ2lzdGVyID0gZW1pdE5ld09iamVjdChuZXdUZW1wb3JhcnkoKSk7
Ci0KLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdHJ1ZVJlZ2lzdGVyID0gZW1pdExvYWQobmV3VGVt
cG9yYXJ5KCksIHRydWUpOworICAgIERlZmluZVByb3BlcnR5QXR0cmlidXRlcyBhdHRyaWJ1dGVz
OwogICAgIGlmIChvcHRpb25zICYgUHJvcGVydHlDb25maWd1cmFibGUpCi0gICAgICAgIGVtaXRE
aXJlY3RQdXRCeUlkKGRlc2NyaXB0b3JSZWdpc3Rlci5nZXQoKSwgcHJvcGVydHlOYW1lcygpLmNv
bmZpZ3VyYWJsZSwgdHJ1ZVJlZ2lzdGVyLmdldCgpLCBQcm9wZXJ0eU5vZGU6OlVua25vd24pOwor
ICAgICAgICBhdHRyaWJ1dGVzLnNldENvbmZpZ3VyYWJsZSh0cnVlKTsKKwogICAgIGlmIChvcHRp
b25zICYgUHJvcGVydHlXcml0YWJsZSkKLSAgICAgICAgZW1pdERpcmVjdFB1dEJ5SWQoZGVzY3Jp
cHRvclJlZ2lzdGVyLmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkud3JpdGFibGUsIHRydWVSZWdpc3Rl
ci5nZXQoKSwgUHJvcGVydHlOb2RlOjpVbmtub3duKTsKLSAgICBlbHNlIGlmICh2YWx1ZVJlZ2lz
dGVyKSB7Ci0gICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBmYWxzZVJlZ2lzdGVyID0gZW1pdExv
YWQobmV3VGVtcG9yYXJ5KCksIGZhbHNlKTsKLSAgICAgICAgZW1pdERpcmVjdFB1dEJ5SWQoZGVz
Y3JpcHRvclJlZ2lzdGVyLmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkud3JpdGFibGUsIGZhbHNlUmVn
aXN0ZXIuZ2V0KCksIFByb3BlcnR5Tm9kZTo6VW5rbm93bik7Ci0gICAgfQorICAgICAgICBhdHRy
aWJ1dGVzLnNldFdyaXRhYmxlKHRydWUpOworICAgIGVsc2UgaWYgKHZhbHVlUmVnaXN0ZXIpCisg
ICAgICAgIGF0dHJpYnV0ZXMuc2V0V3JpdGFibGUoZmFsc2UpOworCiAgICAgaWYgKG9wdGlvbnMg
JiBQcm9wZXJ0eUVudW1lcmFibGUpCi0gICAgICAgIGVtaXREaXJlY3RQdXRCeUlkKGRlc2NyaXB0
b3JSZWdpc3Rlci5nZXQoKSwgcHJvcGVydHlOYW1lcygpLmVudW1lcmFibGUsIHRydWVSZWdpc3Rl
ci5nZXQoKSwgUHJvcGVydHlOb2RlOjpVbmtub3duKTsKKyAgICAgICAgYXR0cmlidXRlcy5zZXRF
bnVtZXJhYmxlKHRydWUpOwogCiAgICAgaWYgKHZhbHVlUmVnaXN0ZXIpCi0gICAgICAgIGVtaXRE
aXJlY3RQdXRCeUlkKGRlc2NyaXB0b3JSZWdpc3Rlci5nZXQoKSwgcHJvcGVydHlOYW1lcygpLnZh
bHVlLCB2YWx1ZVJlZ2lzdGVyLCBQcm9wZXJ0eU5vZGU6OlVua25vd24pOworICAgICAgICBhdHRy
aWJ1dGVzLnNldFZhbHVlKCk7CiAgICAgaWYgKGdldHRlclJlZ2lzdGVyKQotICAgICAgICBlbWl0
RGlyZWN0UHV0QnlJZChkZXNjcmlwdG9yUmVnaXN0ZXIuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS5n
ZXQsIGdldHRlclJlZ2lzdGVyLCBQcm9wZXJ0eU5vZGU6OlVua25vd24pOworICAgICAgICBhdHRy
aWJ1dGVzLnNldEdldCgpOwogICAgIGlmIChzZXR0ZXJSZWdpc3RlcikKLSAgICAgICAgZW1pdERp
cmVjdFB1dEJ5SWQoZGVzY3JpcHRvclJlZ2lzdGVyLmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkuc2V0
LCBzZXR0ZXJSZWdpc3RlciwgUHJvcGVydHlOb2RlOjpVbmtub3duKTsKKyAgICAgICAgYXR0cmli
dXRlcy5zZXRTZXQoKTsKIAotICAgIFJlZlB0cjxSZWdpc3RlcklEPiBkZWZpbmVQcm9wZXJ0eVJl
Z2lzdGVyID0gZW1pdE1vdmVMaW5rVGltZUNvbnN0YW50KG5ld1RlbXBvcmFyeSgpLCBMaW5rVGlt
ZUNvbnN0YW50OjpEZWZpbmVQcm9wZXJ0eUZ1bmN0aW9uKTsKKyAgICBBU1NFUlQoIXZhbHVlUmVn
aXN0ZXIgfHwgKCFnZXR0ZXJSZWdpc3RlciAmJiAhc2V0dGVyUmVnaXN0ZXIpKTsKIAotICAgIENh
bGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cygqdGhpcywgbnVsbHB0ciwgMyk7Ci0gICAgZW1pdExv
YWQoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwganNVbmRlZmluZWQoKSk7Ci0gICAgZW1p
dE1vdmUoY2FsbEFyZ3VtZW50cy5hcmd1bWVudFJlZ2lzdGVyKDApLCBuZXdPYmopOwotICAgIGVt
aXRNb3ZlKGNhbGxBcmd1bWVudHMuYXJndW1lbnRSZWdpc3RlcigxKSwgcHJvcGVydHlOYW1lUmVn
aXN0ZXIpOwotICAgIGVtaXRNb3ZlKGNhbGxBcmd1bWVudHMuYXJndW1lbnRSZWdpc3RlcigyKSwg
ZGVzY3JpcHRvclJlZ2lzdGVyLmdldCgpKTsKKyAgICBpZiAoYXR0cmlidXRlcy5oYXNHZXQoKSB8
fCBhdHRyaWJ1dGVzLmhhc1NldCgpKSB7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0aHJv
d1R5cGVFcnJvckZ1bmN0aW9uOworICAgICAgICBpZiAoIWF0dHJpYnV0ZXMuaGFzR2V0KCkgfHwg
IWF0dHJpYnV0ZXMuaGFzU2V0KCkpCisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvckZ1bmN0aW9u
ID0gZW1pdE1vdmVMaW5rVGltZUNvbnN0YW50KG51bGxwdHIsIExpbmtUaW1lQ29uc3RhbnQ6OlRo
cm93VHlwZUVycm9yRnVuY3Rpb24pOwogCi0gICAgZW1pdENhbGwobmV3VGVtcG9yYXJ5KCksIGRl
ZmluZVByb3BlcnR5UmVnaXN0ZXIuZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3Vt
ZW50cywgcG9zaXRpb24sIHBvc2l0aW9uLCBwb3NpdGlvbik7CisgICAgICAgIFJlZlB0cjxSZWdp
c3RlcklEPiBnZXR0ZXI7CisgICAgICAgIGlmIChhdHRyaWJ1dGVzLmhhc0dldCgpKQorICAgICAg
ICAgICAgZ2V0dGVyID0gZ2V0dGVyUmVnaXN0ZXI7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IGdldHRlciA9IHRocm93VHlwZUVycm9yRnVuY3Rpb247CisKKyAgICAgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IHNldHRlcjsKKyAgICAgICAgaWYgKGF0dHJpYnV0ZXMuaGFzU2V0KCkpCisgICAgICAg
ICAgICBzZXR0ZXIgPSBzZXR0ZXJSZWdpc3RlcjsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
c2V0dGVyID0gdGhyb3dUeXBlRXJyb3JGdW5jdGlvbjsKKworICAgICAgICBlbWl0T3Bjb2RlKG9w
X2RlZmluZV9hY2Nlc3Nvcl9wcm9wZXJ0eSk7CisgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVu
ZChuZXdPYmotPmluZGV4KCkpOworICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQocHJvcGVy
dHlOYW1lUmVnaXN0ZXItPmluZGV4KCkpOworICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
Z2V0dGVyLT5pbmRleCgpKTsKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHNldHRlci0+
aW5kZXgoKSk7CisgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChlbWl0TG9hZChudWxscHRy
LCBqc051bWJlcihhdHRyaWJ1dGVzLnJhd1JlcHJlc2VudGF0aW9uKCkpKS0+aW5kZXgoKSk7Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgZW1pdE9wY29kZShvcF9kZWZpbmVfZGF0YV9wcm9wZXJ0eSk7
CisgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChuZXdPYmotPmluZGV4KCkpOworICAgICAg
ICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQocHJvcGVydHlOYW1lUmVnaXN0ZXItPmluZGV4KCkpOwor
ICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQodmFsdWVSZWdpc3Rlci0+aW5kZXgoKSk7Cisg
ICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChlbWl0TG9hZChudWxscHRyLCBqc051bWJlcihh
dHRyaWJ1dGVzLnJhd1JlcHJlc2VudGF0aW9uKCkpKS0+aW5kZXgoKSk7CisgICAgfQogfQogCiBS
ZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJldHVybihSZWdpc3RlcklEKiBzcmMp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmgKaW5kZXggZDMyNjRjNGEwODc3YTM2MmU5MDRlMWY4MzZiYmQ0NTYwNDI5ZTBm
ZS4uOWU2Y2RiYTM2MjNlOTI2MjZjYzhmZDM5N2YwOWU3MTQzM2ZiMWNhZSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
aApAQCAtNTg4LDcgKzU4OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgUHJvcGVy
dHlFbnVtZXJhYmxlICAgPSAxIDw8IDIsCiAgICAgICAgIH07CiAgICAgICAgIHZvaWQgZW1pdENh
bGxEZWZpbmVQcm9wZXJ0eShSZWdpc3RlcklEKiBuZXdPYmosIFJlZ2lzdGVySUQqIHByb3BlcnR5
TmFtZVJlZ2lzdGVyLAotICAgICAgICAgICAgUmVnaXN0ZXJJRCogdmFsdWVSZWdpc3RlciwgUmVn
aXN0ZXJJRCogZ2V0dGVyUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIHNldHRlclJlZ2lzdGVyLCB1bnNp
Z25lZCBvcHRpb25zLCBjb25zdCBKU1RleHRQb3NpdGlvbiYpOworICAgICAgICAgICAgUmVnaXN0
ZXJJRCogdmFsdWVSZWdpc3RlciwgUmVnaXN0ZXJJRCogZ2V0dGVyUmVnaXN0ZXIsIFJlZ2lzdGVy
SUQqIHNldHRlclJlZ2lzdGVyLCB1bnNpZ25lZCBvcHRpb25zKTsKIAogICAgICAgICB2b2lkIGVt
aXRFbnVtZXJhdGlvbihUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogZW51bWVyYXRpb25Ob2RlLCBF
eHByZXNzaW9uTm9kZSogc3ViamVjdE5vZGUsIGNvbnN0IHN0ZDo6ZnVuY3Rpb248dm9pZChCeXRl
Y29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqKT4mIGNhbGxCYWNrLCBWYXJpYWJsZUVudmlyb25t
ZW50Tm9kZSogPSBudWxscHRyLCBSZWdpc3RlcklEKiBmb3JMb29wU3ltYm9sVGFibGUgPSBudWxs
cHRyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9O
b2Rlc0NvZGVnZW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rl
c0NvZGVnZW4uY3BwCmluZGV4IGMyNjhhMjYwOGQzOGQ2ZGVhN2FjYjgxNzcwN2U1OWYxYzUyNWYy
ODIuLjJiNTkwYzg3YzBmMTZiMDBmNjJjMDNmZjg2NjFiNTkzMGZkNjBlOWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKQEAg
LTU5MCwxMiArNTkwLDEyIEBAIHZvaWQgUHJvcGVydHlMaXN0Tm9kZTo6ZW1pdFB1dENvbnN0YW50
UHJvcGVydHkoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnCiAgICAgICAgIEFTU0VS
VChub2RlLm5lZWRzU3VwZXJCaW5kaW5nKCkpOwogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
cHJvcGVydHlOYW1lUmVnaXN0ZXI7CiAgICAgICAgIGlmIChub2RlLm5hbWUoKSkKLSAgICAgICAg
ICAgIHByb3BlcnR5TmFtZVJlZ2lzdGVyID0gZ2VuZXJhdG9yLmVtaXRMb2FkKGdlbmVyYXRvci5u
ZXdUZW1wb3JhcnkoKSwgKm5vZGUubmFtZSgpKTsKKyAgICAgICAgICAgIHByb3BlcnR5TmFtZVJl
Z2lzdGVyID0gZ2VuZXJhdG9yLmVtaXRMb2FkKG51bGxwdHIsICpub2RlLm5hbWUoKSk7CiAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgIHByb3BlcnR5TmFtZVJlZ2lzdGVyID0gZ2VuZXJhdG9yLmVt
aXROb2RlKG5vZGUubV9leHByZXNzaW9uKTsKIAogICAgICAgICBnZW5lcmF0b3IuZW1pdFNldEZ1
bmN0aW9uTmFtZUlmTmVlZGVkKG5vZGUubV9hc3NpZ24sIHZhbHVlLmdldCgpLCBwcm9wZXJ0eU5h
bWVSZWdpc3Rlci5nZXQoKSk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbERlZmluZVByb3Bl
cnR5KG5ld09iaiwgcHJvcGVydHlOYW1lUmVnaXN0ZXIuZ2V0KCksIHZhbHVlLmdldCgpLCBudWxs
cHRyLCBudWxscHRyLCBCeXRlY29kZUdlbmVyYXRvcjo6UHJvcGVydHlDb25maWd1cmFibGUgfCBC
eXRlY29kZUdlbmVyYXRvcjo6UHJvcGVydHlXcml0YWJsZSwgbV9wb3NpdGlvbik7CisgICAgICAg
IGdlbmVyYXRvci5lbWl0Q2FsbERlZmluZVByb3BlcnR5KG5ld09iaiwgcHJvcGVydHlOYW1lUmVn
aXN0ZXIuZ2V0KCksIHZhbHVlLmdldCgpLCBudWxscHRyLCBudWxscHRyLCBCeXRlY29kZUdlbmVy
YXRvcjo6UHJvcGVydHlDb25maWd1cmFibGUgfCBCeXRlY29kZUdlbmVyYXRvcjo6UHJvcGVydHlX
cml0YWJsZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKGNvbnN0IGF1dG8qIGlk
ZW50aWZpZXIgPSBub2RlLm5hbWUoKSkgewpAQCAtNjA1LDcgKzYwNSw3IEBAIHZvaWQgUHJvcGVy
dHlMaXN0Tm9kZTo6ZW1pdFB1dENvbnN0YW50UHJvcGVydHkoQnl0ZWNvZGVHZW5lcmF0b3ImIGdl
bmVyYXRvciwgUmVnCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gaW5kZXggPSBnZW5lcmF0b3IuZW1pdExvYWQoZ2VuZXJhdG9yLm5l
d1RlbXBvcmFyeSgpLCBqc051bWJlcihvcHRpb25hbEluZGV4LnZhbHVlKCkpKTsKKyAgICAgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IGluZGV4ID0gZ2VuZXJhdG9yLmVtaXRMb2FkKG51bGxwdHIsIGpz
TnVtYmVyKG9wdGlvbmFsSW5kZXgudmFsdWUoKSkpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdERp
cmVjdFB1dEJ5VmFsKG5ld09iaiwgaW5kZXguZ2V0KCksIHZhbHVlLmdldCgpKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KQEAgLTE2MjMsNyArMTYyMyw3IEBAIFJlZ2lzdGVySUQqIFVuYXJ5UGx1
c05vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3Rl
cklECiAgCiBSZWdpc3RlcklEKiBCaXR3aXNlTm90Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKLSAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gc3JjMiA9IGdlbmVyYXRvci5lbWl0TG9hZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5
KCksIGpzTnVtYmVyKC0xKSk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNyYzIgPSBnZW5lcmF0
b3IuZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoLTEpKTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gc3JjMSA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX2V4cHIpOwogICAgIHJldHVybiBnZW5lcmF0
b3IuZW1pdEJpbmFyeU9wKG9wX2JpdHhvciwgZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0
LCBzcmMxLmdldCgpKSwgc3JjMS5nZXQoKSwgc3JjMi5nZXQoKSwgT3BlcmFuZFR5cGVzKG1fZXhw
ci0+cmVzdWx0RGVzY3JpcHRvcigpLCBSZXN1bHRUeXBlOjpudW1iZXJUeXBlSXNJbnQzMigpKSk7
CiB9CkBAIC0zNjAzLDEyICszNjAzLDEyIEBAIFJlZ2lzdGVySUQqIENsYXNzRXhwck5vZGU6OmVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklECiAgICAg
ICAgIGVtaXRQdXRIb21lT2JqZWN0KGdlbmVyYXRvciwgY29uc3RydWN0b3IuZ2V0KCksIHByb3Rv
dHlwZS5nZXQoKSk7CiAgICAgfQogCi0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGNvbnN0cnVjdG9y
TmFtZVJlZ2lzdGVyID0gZ2VuZXJhdG9yLmVtaXRMb2FkKGdlbmVyYXRvci5uZXdUZW1wb3Jhcnko
KSwgcHJvcGVydHlOYW1lcy5jb25zdHJ1Y3Rvcik7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGNv
bnN0cnVjdG9yTmFtZVJlZ2lzdGVyID0gZ2VuZXJhdG9yLmVtaXRMb2FkKG51bGxwdHIsIHByb3Bl
cnR5TmFtZXMuY29uc3RydWN0b3IpOwogICAgIGdlbmVyYXRvci5lbWl0Q2FsbERlZmluZVByb3Bl
cnR5KHByb3RvdHlwZS5nZXQoKSwgY29uc3RydWN0b3JOYW1lUmVnaXN0ZXIuZ2V0KCksIGNvbnN0
cnVjdG9yLmdldCgpLCBudWxscHRyLCBudWxscHRyLAotICAgICAgICBCeXRlY29kZUdlbmVyYXRv
cjo6UHJvcGVydHlDb25maWd1cmFibGUgfCBCeXRlY29kZUdlbmVyYXRvcjo6UHJvcGVydHlXcml0
YWJsZSwgbV9wb3NpdGlvbik7CisgICAgICAgIEJ5dGVjb2RlR2VuZXJhdG9yOjpQcm9wZXJ0eUNv
bmZpZ3VyYWJsZSB8IEJ5dGVjb2RlR2VuZXJhdG9yOjpQcm9wZXJ0eVdyaXRhYmxlKTsKIAotICAg
IFJlZlB0cjxSZWdpc3RlcklEPiBwcm90b3R5cGVOYW1lUmVnaXN0ZXIgPSBnZW5lcmF0b3IuZW1p
dExvYWQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBwcm9wZXJ0eU5hbWVzLnByb3RvdHlwZSk7
Ci0gICAgZ2VuZXJhdG9yLmVtaXRDYWxsRGVmaW5lUHJvcGVydHkoY29uc3RydWN0b3IuZ2V0KCks
IHByb3RvdHlwZU5hbWVSZWdpc3Rlci5nZXQoKSwgcHJvdG90eXBlLmdldCgpLCBudWxscHRyLCBu
dWxscHRyLCAwLCBtX3Bvc2l0aW9uKTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJvdG90eXBl
TmFtZVJlZ2lzdGVyID0gZ2VuZXJhdG9yLmVtaXRMb2FkKG51bGxwdHIsIHByb3BlcnR5TmFtZXMu
cHJvdG90eXBlKTsKKyAgICBnZW5lcmF0b3IuZW1pdENhbGxEZWZpbmVQcm9wZXJ0eShjb25zdHJ1
Y3Rvci5nZXQoKSwgcHJvdG90eXBlTmFtZVJlZ2lzdGVyLmdldCgpLCBwcm90b3R5cGUuZ2V0KCks
IG51bGxwdHIsIG51bGxwdHIsIDApOwogCiAgICAgaWYgKG1fc3RhdGljTWV0aG9kcykKICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXROb2RlKGNvbnN0cnVjdG9yLmdldCgpLCBtX3N0YXRpY01ldGhvZHMp
OwpAQCAtMzg3MCw3ICszODcwLDcgQEAgdm9pZCBPYmplY3RQYXR0ZXJuTm9kZTo6YmluZFZhbHVl
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIHJocykKICAgICAgICAg
ICAgIGlmICghb3B0aW9uYWxJbmRleCkKICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEdl
dEJ5SWQodGVtcC5nZXQoKSwgcmhzLCB0YXJnZXQucHJvcGVydHlOYW1lKTsKICAgICAgICAgICAg
IGVsc2UgewotICAgICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBpbmRleCA9IGdlbmVy
YXRvci5lbWl0TG9hZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIGpzTnVtYmVyKG9wdGlvbmFs
SW5kZXgudmFsdWUoKSkpOworICAgICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBpbmRl
eCA9IGdlbmVyYXRvci5lbWl0TG9hZChudWxscHRyLCBqc051bWJlcihvcHRpb25hbEluZGV4LnZh
bHVlKCkpKTsKICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEdldEJ5VmFsKHRlbXAuZ2V0
KCksIHJocywgaW5kZXguZ2V0KCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2Ugewpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJl
dGVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVy
cHJldGVySW5saW5lcy5oCmluZGV4IDhjNzQxMjY2MjY1YzgxNDgwNmYxZjBmYjcxNDgzN2UyM2M1
MGRjOGQuLmU5NmIxMDVjYWYxYTJlMTA0MWM5OWJmNjFhOGI4YjY3MzRkYWMxZDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGlu
ZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0
ZXJJbmxpbmVzLmgKQEAgLTI2NTcsNiArMjY1NywxMSBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0
ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGlt
aQogICAgICAgICBjbG9iYmVyV29ybGQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBjbG9iYmVyTGlt
aXQpOwogICAgICAgICBicmVhazsKICAgICB9CisKKyAgICBjYXNlIERlZmluZURhdGFQcm9wZXJ0
eToKKyAgICBjYXNlIERlZmluZUFjY2Vzc29yUHJvcGVydHk6CisgICAgICAgIGNsb2JiZXJXb3Js
ZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNsb2JiZXJMaW1pdCk7CisgICAgICAgIGJyZWFrOwog
ICAgICAgICAKICAgICBjYXNlIEluOiB7CiAgICAgICAgIC8vIEZJWE1FOiBXZSBjYW4gZGV0ZXJt
aW5lIHdoZW4gdGhlIHByb3BlcnR5IGRlZmluaXRlbHkgZXhpc3RzIGJhc2VkIG9uIGFic3RyYWN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2Vy
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmlu
ZGV4IDA0NTIyODBkZDI2ZjQwYjBiY2E0NWQzODUxZDExMGRmNDE2YTBmYTcuLjBiNWZiOTVkOTU3
YjEyYTQzODFjZmZiOWI2YzJhNGViMzJhYjNhNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC00MjM4LDYgKzQyMzgsMzggQEAgYm9v
bCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAg
IE5FWFRfT1BDT0RFKG9wX3B1dF9ieV92YWxfd2l0aF90aGlzKTsKICAgICAgICAgfQogCisgICAg
ICAgIGNhc2Ugb3BfZGVmaW5lX2RhdGFfcHJvcGVydHk6IHsKKyAgICAgICAgICAgIE5vZGUqIGJh
c2UgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQp
KTsKKyAgICAgICAgICAgIE5vZGUqIHByb3BlcnR5ID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJy
ZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSk7CisgICAgICAgICAgICBOb2RlKiB2YWx1ZSA9
IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCkpOwor
ICAgICAgICAgICAgTm9kZSogYXR0cmlidXRlcyA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVu
dEluc3RydWN0aW9uWzRdLnUub3BlcmFuZCkpOworCisgICAgICAgICAgICBhZGRWYXJBcmdDaGls
ZChiYXNlKTsKKyAgICAgICAgICAgIGFkZFZhckFyZ0NoaWxkKHByb3BlcnR5KTsKKyAgICAgICAg
ICAgIGFkZFZhckFyZ0NoaWxkKHZhbHVlKTsKKyAgICAgICAgICAgIGFkZFZhckFyZ0NoaWxkKGF0
dHJpYnV0ZXMpOworICAgICAgICAgICAgYWRkVG9HcmFwaChOb2RlOjpWYXJBcmcsIERlZmluZURh
dGFQcm9wZXJ0eSwgT3BJbmZvKDApLCBPcEluZm8oMCkpOworCisgICAgICAgICAgICBORVhUX09Q
Q09ERShvcF9kZWZpbmVfZGF0YV9wcm9wZXJ0eSk7CisgICAgICAgIH0KKworICAgICAgICBjYXNl
IG9wX2RlZmluZV9hY2Nlc3Nvcl9wcm9wZXJ0eTogeworICAgICAgICAgICAgTm9kZSogYmFzZSA9
IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCkpOwor
ICAgICAgICAgICAgTm9kZSogcHJvcGVydHkgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJ
bnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpKTsKKyAgICAgICAgICAgIE5vZGUqIGdldHRlciA9IGdl
dChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCkpOworICAg
ICAgICAgICAgTm9kZSogc2V0dGVyID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1
Y3Rpb25bNF0udS5vcGVyYW5kKSk7CisgICAgICAgICAgICBOb2RlKiBhdHRyaWJ1dGVzID0gZ2V0
KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bNV0udS5vcGVyYW5kKSk7CisKKyAg
ICAgICAgICAgIGFkZFZhckFyZ0NoaWxkKGJhc2UpOworICAgICAgICAgICAgYWRkVmFyQXJnQ2hp
bGQocHJvcGVydHkpOworICAgICAgICAgICAgYWRkVmFyQXJnQ2hpbGQoZ2V0dGVyKTsKKyAgICAg
ICAgICAgIGFkZFZhckFyZ0NoaWxkKHNldHRlcik7CisgICAgICAgICAgICBhZGRWYXJBcmdDaGls
ZChhdHRyaWJ1dGVzKTsKKyAgICAgICAgICAgIGFkZFRvR3JhcGgoTm9kZTo6VmFyQXJnLCBEZWZp
bmVBY2Nlc3NvclByb3BlcnR5LCBPcEluZm8oMCksIE9wSW5mbygwKSk7CisKKyAgICAgICAgICAg
IE5FWFRfT1BDT0RFKG9wX2RlZmluZV9hY2Nlc3Nvcl9wcm9wZXJ0eSk7CisgICAgICAgIH0KKwog
ICAgICAgICBjYXNlIG9wX3RyeV9nZXRfYnlfaWQ6CiAgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lk
OgogICAgICAgICBjYXNlIG9wX2dldF9ieV9pZF9wcm90b19sb2FkOgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCmluZGV4IDQ4ZmE0OTU3MmVjNTBlYzE1
ZDAzNzc2YTUyMmQ2ZmJkMzUyYmZlOWEuLmMzMjNkNDZmYmMzY2Y1YzEwNDlmYTI2ZmMwZTE5MGYy
MjcxYTQ3MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJp
bGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGll
cy5jcHAKQEAgLTE3Myw2ICsxNzMsOCBAQCBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVs
KE9wY29kZUlEIG9wY29kZUlELCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1YwogICAgIGNh
c2Ugb3BfcHV0X2dldHRlcl9zZXR0ZXJfYnlfaWQ6CiAgICAgY2FzZSBvcF9wdXRfZ2V0dGVyX2J5
X3ZhbDoKICAgICBjYXNlIG9wX3B1dF9zZXR0ZXJfYnlfdmFsOgorICAgIGNhc2Ugb3BfZGVmaW5l
X2RhdGFfcHJvcGVydHk6CisgICAgY2FzZSBvcF9kZWZpbmVfYWNjZXNzb3JfcHJvcGVydHk6CiAg
ICAgY2FzZSBvcF9kZWxfYnlfaWQ6CiAgICAgY2FzZSBvcF9kZWxfYnlfdmFsOgogICAgIGNhc2Ug
b3Bfam1wOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVy
aXplLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAppbmRleCBj
MWMzZmRkZGI3YTdhNjBiNDY1MmExN2NhZTFhOTgzZjhjYWU5NjExLi5jY2NkZjhiY2Q2MjZhYTRk
Njc2MzczY2QyODQyZTJlNTZhZTBhYzEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Nsb2JiZXJpemUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Nsb2JiZXJpemUuaApAQCAtNDg2LDYgKzQ4Niw4IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYg
Z3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1
CiAgICAgY2FzZSBQdXRHZXR0ZXJTZXR0ZXJCeUlkOgogICAgIGNhc2UgUHV0R2V0dGVyQnlWYWw6
CiAgICAgY2FzZSBQdXRTZXR0ZXJCeVZhbDoKKyAgICBjYXNlIERlZmluZURhdGFQcm9wZXJ0eToK
KyAgICBjYXNlIERlZmluZUFjY2Vzc29yUHJvcGVydHk6CiAgICAgY2FzZSBEZWxldGVCeUlkOgog
ICAgIGNhc2UgRGVsZXRlQnlWYWw6CiAgICAgY2FzZSBBcnJheVB1c2g6CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKaW5kZXggMmRjZjU1ZDJlZDI4YWFlNjBiNmI4YjdiOWJm
NmRhMDcxOWQ5MmRkNS4uZjY5ZDJmOWZmOTdkNDA4YThmMmU4MTc2ZjVhYTdiM2M5Yzc1M2RiZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAtMTExLDYgKzExMSw4
IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIFB1dEdl
dHRlclNldHRlckJ5SWQ6CiAgICAgY2FzZSBQdXRHZXR0ZXJCeVZhbDoKICAgICBjYXNlIFB1dFNl
dHRlckJ5VmFsOgorICAgIGNhc2UgRGVmaW5lRGF0YVByb3BlcnR5OgorICAgIGNhc2UgRGVmaW5l
QWNjZXNzb3JQcm9wZXJ0eToKICAgICBjYXNlIERlbGV0ZUJ5SWQ6CiAgICAgY2FzZSBEZWxldGVC
eVZhbDoKICAgICBjYXNlIENoZWNrU3RydWN0dXJlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggNmVlNTE0MmY3OGY2MGJmMTA5NjgzYzhiODljMTVk
MGU0NThiM2ZlMC4uNzVhM2I1ZDQ1NjdlNzRkYTg1MmU0NDkyNWZhN2RiZjE0MDkwNTM1NyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCkBAIC0xNjAyLDYg
KzE2MDIsMzUgQEAgY2xhc3MgRml4dXBQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAg
ICBmaXhFZGdlPFVudHlwZWRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIGJyZWFr
OwogCisgICAgICAgIGNhc2UgRGVmaW5lRGF0YVByb3BlcnR5OiB7CisgICAgICAgICAgICBmaXhF
ZGdlPENlbGxVc2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCkpOworICAgICAgICAgICAg
RWRnZSYgcHJvcGVydHlFZGdlID0gbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKTsKKyAgICAg
ICAgICAgIGlmIChwcm9wZXJ0eUVkZ2UtPnNob3VsZFNwZWN1bGF0ZVN5bWJvbCgpKQorICAgICAg
ICAgICAgICAgIGZpeEVkZ2U8U3ltYm9sVXNlPihwcm9wZXJ0eUVkZ2UpOworICAgICAgICAgICAg
ZWxzZSBpZiAocHJvcGVydHlFZGdlLT5zaG91bGRTcGVjdWxhdGVTdHJpbmcoKSkKKyAgICAgICAg
ICAgICAgICBmaXhFZGdlPFN0cmluZ1VzZT4ocHJvcGVydHlFZGdlKTsKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICBmaXhFZGdlPFVudHlwZWRVc2U+KHByb3BlcnR5RWRnZSk7Cisg
ICAgICAgICAgICBmaXhFZGdlPFVudHlwZWRVc2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwg
MikpOworICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obV9ncmFwaC52YXJBcmdDaGlsZChu
b2RlLCAzKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2Ug
RGVmaW5lQWNjZXNzb3JQcm9wZXJ0eTogeworICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNlPiht
X2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDApKTsKKyAgICAgICAgICAgIEVkZ2UmIHByb3BlcnR5
RWRnZSA9IG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSk7CisgICAgICAgICAgICBpZiAocHJv
cGVydHlFZGdlLT5zaG91bGRTcGVjdWxhdGVTeW1ib2woKSkKKyAgICAgICAgICAgICAgICBmaXhF
ZGdlPFN5bWJvbFVzZT4ocHJvcGVydHlFZGdlKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHByb3Bl
cnR5RWRnZS0+c2hvdWxkU3BlY3VsYXRlU3RyaW5nKCkpCisgICAgICAgICAgICAgICAgZml4RWRn
ZTxTdHJpbmdVc2U+KHByb3BlcnR5RWRnZSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgZml4RWRnZTxVbnR5cGVkVXNlPihwcm9wZXJ0eUVkZ2UpOworICAgICAgICAgICAgZml4
RWRnZTxDZWxsVXNlPihtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDIpKTsKKyAgICAgICAgICAg
IGZpeEVkZ2U8Q2VsbFVzZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAzKSk7CisgICAgICAg
ICAgICBmaXhFZGdlPEludDMyVXNlPihtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDQpKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAg
ICAgIC8vIEhhdmUgdGhlc2Ugbm8tb3AgY2FzZXMgaGVyZSB0byBlbnN1cmUgdGhhdCBub2JvZHkg
Zm9yZ2V0cyB0byBhZGQgaGFuZGxlcnMgZm9yIG5ldyBvcGNvZGVzLgogICAgICAgICBjYXNlIFNl
dEFyZ3VtZW50OgpAQCAtMTY3MSw4ICsxNzAwLDYgQEAgY2xhc3MgRml4dXBQaGFzZSA6IHB1Ymxp
YyBQaGFzZSB7CiAgICAgICAgIGNhc2UgR2V0QnlWYWxXaXRoVGhpczoKICAgICAgICAgY2FzZSBD
b21wYXJlRXFQdHI6CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIAotICAgICAgICAg
ICAgYnJlYWs7CiAjZWxzZQogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgYnJlYWs7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKaW5kZXggMWYzNWViMmQ5MDNiNDY2
YzI0MThjM2RjMWI2MTg1M2ViZTVkNjk3OS4uMjUxNWViMzQyYmQ3Mzg5ZTExODg3YWJkODJmMGVj
ZmYwMTA3ZGJiMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
VHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaApAQCAt
MTk5LDYgKzE5OSw4IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNy
byhQdXRHZXR0ZXJTZXR0ZXJCeUlkLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oUHV0
R2V0dGVyQnlWYWwsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhQdXRTZXR0ZXJCeVZh
bCwgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAgIG1hY3JvKERlZmluZURhdGFQcm9wZXJ0eSwgTm9k
ZU11c3RHZW5lcmF0ZSB8IE5vZGVIYXNWYXJBcmdzKSBcCisgICAgbWFjcm8oRGVmaW5lQWNjZXNz
b3JQcm9wZXJ0eSwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVIYXNWYXJBcmdzKSBcCiAgICAgbWFj
cm8oRGVsZXRlQnlJZCwgTm9kZVJlc3VsdEJvb2xlYW4gfCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAg
ICAgbWFjcm8oRGVsZXRlQnlWYWwsIE5vZGVSZXN1bHRCb29sZWFuIHwgTm9kZU11c3RHZW5lcmF0
ZSkgXAogICAgIG1hY3JvKENoZWNrU3RydWN0dXJlLCBOb2RlTXVzdEdlbmVyYXRlKSBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAppbmRleCBkMjE5MTZhMjU0
YzcyOTZhOWVkNmJkNzMzM2VjZDM2MmZkZTNhMTkyLi5kNTMwNTYyMDg3YjI5MzNmN2Q4ZjYyMTQz
N2U3YTU1NDNjMjI4ZmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0
aW9ucy5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJERkdUb0ZUTERlZmVycmVkQ29t
cGlsYXRpb25DYWxsYmFjay5oIgogI2luY2x1ZGUgIkRGR1RvRlRMRm9yT1NSRW50cnlEZWZlcnJl
ZENvbXBpbGF0aW9uQ2FsbGJhY2suaCIKICNpbmNsdWRlICJERkdXb3JrbGlzdC5oIgorI2luY2x1
ZGUgIkRlZmluZVByb3BlcnR5QXR0cmlidXRlcy5oIgogI2luY2x1ZGUgIkRpcmVjdEFyZ3VtZW50
cy5oIgogI2luY2x1ZGUgIkZUTEZvck9TUkVudHJ5SklUQ29kZS5oIgogI2luY2x1ZGUgIkZUTE9T
UkVudHJ5LmgiCkBAIC0xMDIyLDYgKzEwMjMsODIgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblB1dEJ5VmFsV2l0aFRoaXMoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmMK
ICAgICBwdXRXaXRoVGhpczxmYWxzZT4oZXhlYywgZW5jb2RlZEJhc2UsIGVuY29kZWRUaGlzLCBl
bmNvZGVkVmFsdWUsIHByb3BlcnR5KTsKIH0KIAorQUxXQVlTX0lOTElORSBzdGF0aWMgdm9pZCBk
ZWZpbmVEYXRhUHJvcGVydHkoRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0sIEpTT2JqZWN0KiBiYXNl
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIGludDMyX3Qg
YXR0cmlidXRlcykKK3sKKyAgICBQcm9wZXJ0eURlc2NyaXB0b3IgZGVzY3JpcHRvciA9IHRvUHJv
cGVydHlEZXNjcmlwdG9yKHZhbHVlLCBqc1VuZGVmaW5lZCgpLCBqc1VuZGVmaW5lZCgpLCBEZWZp
bmVQcm9wZXJ0eUF0dHJpYnV0ZXMoYXR0cmlidXRlcykpOworICAgIEFTU0VSVCgoZGVzY3JpcHRv
ci5hdHRyaWJ1dGVzKCkgJiBBY2Nlc3NvcikgfHwgKCFkZXNjcmlwdG9yLmlzQWNjZXNzb3JEZXNj
cmlwdG9yKCkpKTsKKyAgICBiYXNlLT5tZXRob2RUYWJsZSh2bSktPmRlZmluZU93blByb3BlcnR5
KGJhc2UsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgdHJ1ZSk7Cit9CisKK3ZvaWQg
SklUX09QRVJBVElPTiBvcGVyYXRpb25EZWZpbmVEYXRhUHJvcGVydHkoRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCogYmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFByb3BlcnR5LCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUsIGludDMyX3QgYXR0cmlidXRlcykKK3sKKyAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVj
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBJZGVu
dGlmaWVyIHByb3BlcnR5TmFtZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkUHJvcGVydHkpLnRv
UHJvcGVydHlLZXkoZXhlYyk7CisgICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkK
KyAgICAgICAgcmV0dXJuOworICAgIGRlZmluZURhdGFQcm9wZXJ0eShleGVjLCB2bSwgYmFzZSwg
cHJvcGVydHlOYW1lLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSwgYXR0cmlidXRlcyk7
Cit9CisKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWZpbmVEYXRhUHJvcGVydHlTdHJp
bmcoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogYmFzZSwgSlNTdHJpbmcqIHByb3BlcnR5LCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIGludDMyX3QgYXR0cmlidXRlcykKK3sKKyAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZt
LCBleGVjKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAg
ICBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSA9IHByb3BlcnR5LT50b0lkZW50aWZpZXIoZXhlYyk7
CisgICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkKKyAgICAgICAgcmV0dXJuOwor
ICAgIGRlZmluZURhdGFQcm9wZXJ0eShleGVjLCB2bSwgYmFzZSwgcHJvcGVydHlOYW1lLCBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSwgYXR0cmlidXRlcyk7Cit9CisKK3ZvaWQgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25EZWZpbmVEYXRhUHJvcGVydHlTeW1ib2woRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCogYmFzZSwgU3ltYm9sKiBwcm9wZXJ0eSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlLCBpbnQzMl90IGF0dHJpYnV0ZXMpCit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CisgICAgZGVmaW5l
RGF0YVByb3BlcnR5KGV4ZWMsIHZtLCBiYXNlLCBJZGVudGlmaWVyOjpmcm9tVWlkKHByb3BlcnR5
LT5wcml2YXRlTmFtZSgpKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSksIGF0dHJpYnV0
ZXMpOworfQorCitBTFdBWVNfSU5MSU5FIHN0YXRpYyB2b2lkIGRlZmluZUFjY2Vzc29yUHJvcGVy
dHkoRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0sIEpTT2JqZWN0KiBiYXNlLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIEpTT2JqZWN0KiBnZXR0ZXIsIEpTT2JqZWN0KiBzZXR0ZXIsIGlu
dDMyX3QgYXR0cmlidXRlcykKK3sKKyAgICBQcm9wZXJ0eURlc2NyaXB0b3IgZGVzY3JpcHRvciA9
IHRvUHJvcGVydHlEZXNjcmlwdG9yKGpzVW5kZWZpbmVkKCksIGdldHRlciwgc2V0dGVyLCBEZWZp
bmVQcm9wZXJ0eUF0dHJpYnV0ZXMoYXR0cmlidXRlcykpOworICAgIEFTU0VSVCgoZGVzY3JpcHRv
ci5hdHRyaWJ1dGVzKCkgJiBBY2Nlc3NvcikgfHwgKCFkZXNjcmlwdG9yLmlzQWNjZXNzb3JEZXNj
cmlwdG9yKCkpKTsKKyAgICBiYXNlLT5tZXRob2RUYWJsZSh2bSktPmRlZmluZU93blByb3BlcnR5
KGJhc2UsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgdHJ1ZSk7Cit9CisKK3ZvaWQg
SklUX09QRVJBVElPTiBvcGVyYXRpb25EZWZpbmVBY2Nlc3NvclByb3BlcnR5KEV4ZWNTdGF0ZSog
ZXhlYywgSlNPYmplY3QqIGJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRQcm9wZXJ0eSwgSlNP
YmplY3QqIGdldHRlciwgSlNPYmplY3QqIHNldHRlciwgaW50MzJfdCBhdHRyaWJ1dGVzKQorewor
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cigmdm0sIGV4ZWMpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KworICAgIElkZW50aWZpZXIgcHJvcGVydHlOYW1lID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRQ
cm9wZXJ0eSkudG9Qcm9wZXJ0eUtleShleGVjKTsKKyAgICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhj
ZXB0aW9uKCkpKQorICAgICAgICByZXR1cm47CisgICAgZGVmaW5lQWNjZXNzb3JQcm9wZXJ0eShl
eGVjLCB2bSwgYmFzZSwgcHJvcGVydHlOYW1lLCBnZXR0ZXIsIHNldHRlciwgYXR0cmlidXRlcyk7
Cit9CisKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWZpbmVBY2Nlc3NvclByb3BlcnR5
U3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGJhc2UsIEpTU3RyaW5nKiBwcm9wZXJ0
eSwgSlNPYmplY3QqIGdldHRlciwgSlNPYmplY3QqIHNldHRlciwgaW50MzJfdCBhdHRyaWJ1dGVz
KQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcigmdm0sIGV4ZWMpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKworICAgIElkZW50aWZpZXIgcHJvcGVydHlOYW1lID0gcHJvcGVydHktPnRvSWRlbnRp
ZmllcihleGVjKTsKKyAgICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0aW9uKCkpKQorICAgICAg
ICByZXR1cm47CisgICAgZGVmaW5lQWNjZXNzb3JQcm9wZXJ0eShleGVjLCB2bSwgYmFzZSwgcHJv
cGVydHlOYW1lLCBnZXR0ZXIsIHNldHRlciwgYXR0cmlidXRlcyk7Cit9CisKK3ZvaWQgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25EZWZpbmVBY2Nlc3NvclByb3BlcnR5U3ltYm9sKEV4ZWNTdGF0ZSog
ZXhlYywgSlNPYmplY3QqIGJhc2UsIFN5bWJvbCogcHJvcGVydHksIEpTT2JqZWN0KiBnZXR0ZXIs
IEpTT2JqZWN0KiBzZXR0ZXIsIGludDMyX3QgYXR0cmlidXRlcykKK3sKKyAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsK
KyAgICBkZWZpbmVBY2Nlc3NvclByb3BlcnR5KGV4ZWMsIHZtLCBiYXNlLCBJZGVudGlmaWVyOjpm
cm9tVWlkKHByb3BlcnR5LT5wcml2YXRlTmFtZSgpKSwgZ2V0dGVyLCBzZXR0ZXIsIGF0dHJpYnV0
ZXMpOworfQorCiBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0FycmF5KEV4ZWNTdGF0
ZSogZXhlYywgU3RydWN0dXJlKiBhcnJheVN0cnVjdHVyZSwgdm9pZCogYnVmZmVyLCBzaXplX3Qg
c2l6ZSkKIHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPcGVyYXRpb25zLmgKaW5kZXggNTI3YmZlNTg3NmFmYzc4MzdiYTMwZmQyMTBkNWE0
N2MzYjI5NTFlNC4uNjg2ZTYzYjlkMzQyMzUzNjAxNjExMjA2YjgwYWMzMzk1ZDczY2JlNiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKQEAgLTExNCw2ICsxMTQs
MTIgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRXaXRoVGhpcyhFeGVjU3Rh
dGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEoKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRp
b25QdXRCeUlkV2l0aFRoaXNTdHJpY3QoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJO
QUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxXaXRoVGhpcyhFeGVjU3Rh
dGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1
dEJ5VmFsV2l0aFRoaXNTdHJpY3QoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRK
U1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsKK3Zv
aWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWZpbmVEYXRhUHJvcGVydHkoRXhlY1N0YXRlKiwg
SlNPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIGludDMyX3QpIFdURl9J
TlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWZpbmVEYXRhUHJvcGVydHlT
dHJpbmcoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBKU1N0cmluZyosIEVuY29kZWRKU1ZhbHVlLCBp
bnQzMl90KSBXVEZfSU5URVJOQUw7Cit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVmaW5l
RGF0YVByb3BlcnR5U3ltYm9sKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgU3ltYm9sKiwgRW5jb2Rl
ZEpTVmFsdWUsIGludDMyX3QpIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVy
YXRpb25EZWZpbmVBY2Nlc3NvclByb3BlcnR5KEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgRW5jb2Rl
ZEpTVmFsdWUsIEpTT2JqZWN0KiwgSlNPYmplY3QqLCBpbnQzMl90KSBXVEZfSU5URVJOQUw7Cit2
b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eVN0cmluZyhF
eGVjU3RhdGUqLCBKU09iamVjdCosIEpTU3RyaW5nKiwgSlNPYmplY3QqLCBKU09iamVjdCosIGlu
dDMyX3QpIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWZpbmVB
Y2Nlc3NvclByb3BlcnR5U3ltYm9sKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgU3ltYm9sKiwgSlNP
YmplY3QqLCBKU09iamVjdCosIGludDMyX3QpIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVl
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJyYXlQdXNoKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSwgSlNBcnJheSopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVl
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJyYXlQdXNoRG91YmxlKEV4ZWNTdGF0ZSosIGRvdWJs
ZSB2YWx1ZSwgSlNBcnJheSopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uQXJyYXlQb3AoRXhlY1N0YXRlKiwgSlNBcnJheSopIFdURl9JTlRFUk5B
TDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblBy
b3BhZ2F0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0
aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKaW5kZXggMDZkYjQwZWI2NzY2NzI0NmQzNDkwOTA1OTE5
YmY1YWJkMDBlYjk5ZS4uODdkYmU4M2E4ODkwYzFkN2FkMzQ4ZTA1NGU1YTc5ZTlkNWE0NDJkOCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFn
YXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0
aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKQEAgLTEwNDAsNiArMTA0MCw4IEBAIGNsYXNzIFByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgY2FzZSBQdXRH
ZXR0ZXJTZXR0ZXJCeUlkOgogICAgICAgICBjYXNlIFB1dEdldHRlckJ5VmFsOgogICAgICAgICBj
YXNlIFB1dFNldHRlckJ5VmFsOgorICAgICAgICBjYXNlIERlZmluZURhdGFQcm9wZXJ0eToKKyAg
ICAgICAgY2FzZSBEZWZpbmVBY2Nlc3NvclByb3BlcnR5OgogICAgICAgICBjYXNlIERGRzo6SnVt
cDoKICAgICAgICAgY2FzZSBCcmFuY2g6CiAgICAgICAgIGNhc2UgU3dpdGNoOgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAppbmRleCAyMmI5MzQwMDU4M2Fj
NmRmODYzYjBiZTM4ZjZiODMzNmE1MDQxOWFjLi5jMTMyZjk1NzRiMjVlNjRlNmFjYzU2MTYwYjk0
Nzk1ODJiOTNhZjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nh
ZmVUb0V4ZWN1dGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4
ZWN1dGUuaApAQCAtMjE0LDYgKzIxNCw4IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0
YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIFB1dEdl
dHRlclNldHRlckJ5SWQ6CiAgICAgY2FzZSBQdXRHZXR0ZXJCeVZhbDoKICAgICBjYXNlIFB1dFNl
dHRlckJ5VmFsOgorICAgIGNhc2UgRGVmaW5lRGF0YVByb3BlcnR5OgorICAgIGNhc2UgRGVmaW5l
QWNjZXNzb3JQcm9wZXJ0eToKICAgICBjYXNlIENoZWNrU3RydWN0dXJlOgogICAgIGNhc2UgR2V0
RXhlY3V0YWJsZToKICAgICBjYXNlIEdldEJ1dHRlcmZseToKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAppbmRleCBlN2EyOWI0MzM0NmIyNDgyM2E5OTg5
ZmVlOTVkNjQwNWMzMThkYTczLi5mZDAzNTEzNmQwMTE5MTYxYzU4NjQ0YWU1ZjQ0MjBiMmE1NmUz
YWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5o
CkBAIC0xMzQ0LDYgKzEzNDQsMzYgQEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQgewogICAgICAgICBt
X2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMywgYXJnNCk7
CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CiAgICAgfQorICAgIEpJVENv
bXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRU9KSlogb3BlcmF0aW9u
LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcgYXJnNCkKKyAg
ICB7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcy
LCBhcmczLCBhcmc0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKKyAg
ICB9CisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9F
T0pzc0paIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywg
R1BSUmVnIGFyZzQpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoYXJnMSwgYXJnMiwgYXJnMywgYXJnNCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxs
KG9wZXJhdGlvbik7CisgICAgfQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24o
Vl9KSVRPcGVyYXRpb25fRU9TeW1KWiBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJn
MiwgR1BSUmVnIGFyZzMsIEdQUlJlZyBhcmc0KQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMsIGFyZzQpOworICAgICAgICBy
ZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOworICAgIH0KKyAgICBKSVRDb21waWxlcjo6Q2Fs
bCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VPSk9PWiBvcGVyYXRpb24sIEdQUlJlZyBh
cmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMsIEdQUlJlZyBhcmc0LCBHUFJSZWcgYXJnNSkK
KyAgICB7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBh
cmcyLCBhcmczLCBhcmc0LCBhcmc1KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0
aW9uKTsKKyAgICB9CisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9w
ZXJhdGlvbl9FT0pzc09PWiBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BS
UmVnIGFyZzMsIEdQUlJlZyBhcmc0LCBHUFJSZWcgYXJnNSkKKyAgICB7CisgICAgICAgIG1faml0
LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczLCBhcmc0LCBhcmc1
KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKKyAgICB9CisgICAgSklU
Q29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FT1N5bU9PWiBvcGVy
YXRpb24sIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMsIEdQUlJlZyBhcmc0
LCBHUFJSZWcgYXJnNSkKKyAgICB7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4
ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczLCBhcmc0LCBhcmc1KTsKKyAgICAgICAgcmV0dXJuIGFw
cGVuZENhbGwob3BlcmF0aW9uKTsKKyAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9w
ZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FT0pJVWkgb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgR1BS
UmVnIGFyZzIsIFVuaXF1ZWRTdHJpbmdJbXBsKiBpbXBsLCB1bnNpZ25lZCB2YWx1ZSkKICAgICB7
CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBU
cnVzdGVkSW1tUHRyKGltcGwpLCBUcnVzdGVkSW1tMzIodmFsdWUpKTsKQEAgLTE3ODgsNyArMTgx
OCwzNiBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVCB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShFQUJJXzMyQklUX0RVTU1ZX0FSRyBhcmcxLnBheWxvYWRHUFIoKSwg
YXJnMS50YWdHUFIoKSwgYXJnMi5wYXlsb2FkR1BSKCksIGFyZzIudGFnR1BSKCksIGFyZzMucGF5
bG9hZEdQUigpLCBhcmczLnRhZ0dQUigpLCBhcmc0LnBheWxvYWRHUFIoKSwgYXJnNC50YWdHUFIo
KSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CiAgICAgfQotCisgICAg
SklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FT0pKWiBvcGVy
YXRpb24sIEdQUlJlZyBhcmcxLCBKU1ZhbHVlUmVncyBhcmcyLCBKU1ZhbHVlUmVncyBhcmczLCBH
UFJSZWcgYXJnNCkKKyAgICB7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZShhcmcxLCBhcmcyLnBheWxvYWRHUFIoKSwgYXJnMi50YWdHUFIoKSwgYXJnMy5wYXlsb2Fk
R1BSKCksIGFyZzMudGFnR1BSKCksIGFyZzQpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChv
cGVyYXRpb24pOworICAgIH0KKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZf
SklUT3BlcmF0aW9uX0VPSnNzSlogb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIs
IEpTVmFsdWVSZWdzIGFyZzMsIEdQUlJlZyBhcmc0KQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIEVBQklfMzJCSVRfRFVNTVlfQVJH
IGFyZzMucGF5bG9hZEdQUigpLCBhcmczLnRhZ0dQUigpLCBhcmc0KTsKKyAgICAgICAgcmV0dXJu
IGFwcGVuZENhbGwob3BlcmF0aW9uKTsKKyAgICB9CisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2Fs
bE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FT1N5bUpaIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEs
IEdQUlJlZyBhcmcyLCBKU1ZhbHVlUmVncyBhcmczLCBHUFJSZWcgYXJnNCkKKyAgICB7CisgICAg
ICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBFQUJJXzMy
QklUX0RVTU1ZX0FSRyBhcmczLnBheWxvYWRHUFIoKSwgYXJnMy50YWdHUFIoKSwgYXJnNCk7Cisg
ICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CisgICAgfQorICAgIEpJVENvbXBp
bGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRU9KT09aIG9wZXJhdGlvbiwg
R1BSUmVnIGFyZzEsIEpTVmFsdWVSZWdzIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcgYXJnNCwg
R1BSUmVnIGFyZzUpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoYXJnMSwgYXJnMi5wYXlsb2FkR1BSKCksIGFyZzIudGFnR1BSKCksIGFyZzMsIGFyZzQs
IGFyZzUpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOworICAgIH0KKyAg
ICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VPSnNzT09a
IG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVn
IGFyZzQsIEdQUlJlZyBhcmc1KQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNX
aXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMsIGFyZzQsIGFyZzUpOworICAgICAgICByZXR1
cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOworICAgIH0KKyAgICBKSVRDb21waWxlcjo6Q2FsbCBj
YWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VPU3ltT09aIG9wZXJhdGlvbiwgR1BSUmVnIGFy
ZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVnIGFyZzQsIEdQUlJlZyBhcmc1KQor
ICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFy
ZzIsIGFyZzMsIGFyZzQsIGFyZzUpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRp
b24pOworICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3Bl
cmF0aW9uX0VPSklVaSBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBKU1ZhbHVlUmVncyBhcmcyLCBV
bmlxdWVkU3RyaW5nSW1wbCogaW1wbCwgdW5zaWduZWQgdmFsdWUpCiAgICAgewogICAgICAgICBt
X2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMi5wYXlsb2FkR1BSKCks
IGFyZzIudGFnR1BSKCksIFRydXN0ZWRJbW1QdHIoaW1wbCksIFRydXN0ZWRJbW0zMih2YWx1ZSkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQz
Ml82NC5jcHAKaW5kZXggYTIyZGJlYWRlNzEwOGY3NTU5NjY2YjkzZjlhZWM3ZWY1MGMxMzk1Yi4u
ZmRlNmYyZmNkMzA3YzQ3NWM1ODRiMmIzOGEwNTkxYjQ3ZTNjYTE0YyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCkBAIC00
NDkxLDYgKzQ0OTEsMTExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9k
ZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBEZWZpbmVEYXRhUHJvcGVydHk6
IHsKKyAgICAgICAgc3RhdGljX2Fzc2VydChHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycyA+PSA2
LCAiV2UgYXJlIGFzc3VtaW5nIHdlIGhhdmUgZW5vdWdoIHJlZ2lzdGVycyB0byBtYWtlIHRoaXMg
Y2FsbCB3aXRob3V0IGluY3JlbWVudGFsbHkgc2V0dGluZyB1cCB0aGUgYXJndW1lbnRzLiIpOwor
CisgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbV9qaXQuZ3JhcGgoKS52
YXJBcmdDaGlsZChub2RlLCAwKSk7CisgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIo
KTsKKworICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBtX2ppdC5ncmFwaCgpLnZh
ckFyZ0NoaWxkKG5vZGUsIDIpKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFs
dWVPckdldHRlci5qc1ZhbHVlUmVncygpOworCisgICAgICAgIFNwZWN1bGF0ZUludDMyT3BlcmFu
ZCBhdHRyaWJ1dGVzKHRoaXMsIG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMykpOwor
ICAgICAgICBHUFJSZWcgYXR0cmlidXRlc0dQUiA9IGF0dHJpYnV0ZXMuZ3ByKCk7CisKKyAgICAg
ICAgRWRnZSYgcHJvcGVydHlFZGdlID0gbV9qaXQuZ3JhcGgoKS52YXJBcmdDaGlsZChub2RlLCAx
KTsKKyAgICAgICAgc3dpdGNoIChwcm9wZXJ0eUVkZ2UudXNlS2luZCgpKSB7CisgICAgICAgIGNh
c2UgU3RyaW5nVXNlOiB7CisgICAgICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBwcm9wZXJ0
eSh0aGlzLCBwcm9wZXJ0eUVkZ2UpOworICAgICAgICAgICAgR1BSUmVnIHByb3BlcnR5R1BSID0g
cHJvcGVydHkuZ3ByKCk7CisgICAgICAgICAgICBzcGVjdWxhdGVTdHJpbmcocHJvcGVydHlFZGdl
LCBwcm9wZXJ0eUdQUik7CisKKyAgICAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CisgICAgICAg
ICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlZmluZVByb3BlcnR5U3RyaW5nLCBOb1Jlc3Vs
dCwgYmFzZUdQUiwgcHJvcGVydHlHUFIsIHZhbHVlUmVncywgYXR0cmlidXRlc0dQUik7CisgICAg
ICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKyAgICAgICAgY2FzZSBTeW1ib2xVc2U6IHsKKyAgICAgICAgICAgIFNwZWN1bGF0ZUNl
bGxPcGVyYW5kIHByb3BlcnR5KHRoaXMsIHByb3BlcnR5RWRnZSk7CisgICAgICAgICAgICBHUFJS
ZWcgcHJvcGVydHlHUFIgPSBwcm9wZXJ0eS5ncHIoKTsKKyAgICAgICAgICAgIHNwZWN1bGF0ZVN5
bWJvbChwcm9wZXJ0eUVkZ2UsIHByb3BlcnR5R1BSKTsKKworICAgICAgICAgICAgZmx1c2hSZWdp
c3RlcnMoKTsKKyAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVmaW5lUHJvcGVy
dHlTeW1ib2wsIE5vUmVzdWx0LCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgdmFsdWVSZWdzLCBhdHRy
aWJ1dGVzR1BSKTsKKyAgICAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFVudHlwZWRVc2U6IHsKKyAgICAg
ICAgICAgIEpTVmFsdWVPcGVyYW5kIHByb3BlcnR5KHRoaXMsIHByb3BlcnR5RWRnZSk7CisgICAg
ICAgICAgICBKU1ZhbHVlUmVncyBwcm9wZXJ0eVJlZ3MgPSBwcm9wZXJ0eS5qc1ZhbHVlUmVncygp
OworCisgICAgICAgICAgICBmbHVzaFJlZ2lzdGVycygpOworICAgICAgICAgICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25EZWZpbmVQcm9wZXJ0eSwgTm9SZXN1bHQsIGJhc2VHUFIsIHByb3BlcnR5
UmVncywgdmFsdWVSZWdzLCBhdHRyaWJ1dGVzR1BSKTsKKyAgICAgICAgICAgIG1faml0LmV4Y2Vw
dGlvbkNoZWNrKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
fQorCisgICAgICAgIG5vUmVzdWx0KG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAg
ICBjYXNlIERlZmluZUFjY2Vzc29yUHJvcGVydHk6IHsKKyAgICAgICAgc3RhdGljX2Fzc2VydChH
UFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycyA+PSA2LCAiV2UgYXJlIGFzc3VtaW5nIHdlIGhhdmUg
ZW5vdWdoIHJlZ2lzdGVycyB0byBtYWtlIHRoaXMgY2FsbCB3aXRob3V0IGluY3JlbWVudGFsbHkg
c2V0dGluZyB1cCB0aGUgYXJndW1lbnRzLiIpOworCisgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVy
YW5kIGJhc2UodGhpcywgbV9qaXQuZ3JhcGgoKS52YXJBcmdDaGlsZChub2RlLCAwKSk7CisgICAg
ICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKKworICAgICAgICBTcGVjdWxhdGVDZWxs
T3BlcmFuZCBnZXR0ZXIodGhpcywgbV9qaXQuZ3JhcGgoKS52YXJBcmdDaGlsZChub2RlLCAyKSk7
CisgICAgICAgIEdQUlJlZyBnZXR0ZXJHUFIgPSBnZXR0ZXIuZ3ByKCk7CisKKyAgICAgICAgU3Bl
Y3VsYXRlQ2VsbE9wZXJhbmQgc2V0dGVyKHRoaXMsIG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQo
bm9kZSwgMykpOworICAgICAgICBHUFJSZWcgc2V0dGVyR1BSID0gc2V0dGVyLmdwcigpOworCisg
ICAgICAgIFNwZWN1bGF0ZUludDMyT3BlcmFuZCBhdHRyaWJ1dGVzKHRoaXMsIG1faml0LmdyYXBo
KCkudmFyQXJnQ2hpbGQobm9kZSwgNCkpOworICAgICAgICBHUFJSZWcgYXR0cmlidXRlc0dQUiA9
IGF0dHJpYnV0ZXMuZ3ByKCk7CisKKyAgICAgICAgRWRnZSYgcHJvcGVydHlFZGdlID0gbV9qaXQu
Z3JhcGgoKS52YXJBcmdDaGlsZChub2RlLCAxKTsKKyAgICAgICAgc3dpdGNoIChwcm9wZXJ0eUVk
Z2UudXNlS2luZCgpKSB7CisgICAgICAgIGNhc2UgU3RyaW5nVXNlOiB7CisgICAgICAgICAgICBT
cGVjdWxhdGVDZWxsT3BlcmFuZCBwcm9wZXJ0eSh0aGlzLCBwcm9wZXJ0eUVkZ2UpOworICAgICAg
ICAgICAgR1BSUmVnIHByb3BlcnR5R1BSID0gcHJvcGVydHkuZ3ByKCk7CisgICAgICAgICAgICBz
cGVjdWxhdGVTdHJpbmcocHJvcGVydHlFZGdlLCBwcm9wZXJ0eUdQUik7CisKKyAgICAgICAgICAg
IGZsdXNoUmVnaXN0ZXJzKCk7CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRl
ZmluZUFjY2Vzc29yUHJvcGVydHlTdHJpbmcsIE5vUmVzdWx0LCBiYXNlR1BSLCBwcm9wZXJ0eUdQ
UiwgZ2V0dGVyR1BSLCBzZXR0ZXJHUFIsIGF0dHJpYnV0ZXNHUFIpOworICAgICAgICAgICAgbV9q
aXQuZXhjZXB0aW9uQ2hlY2soKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
ICAgIGNhc2UgU3ltYm9sVXNlOiB7CisgICAgICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBw
cm9wZXJ0eSh0aGlzLCBwcm9wZXJ0eUVkZ2UpOworICAgICAgICAgICAgR1BSUmVnIHByb3BlcnR5
R1BSID0gcHJvcGVydHkuZ3ByKCk7CisgICAgICAgICAgICBzcGVjdWxhdGVTeW1ib2wocHJvcGVy
dHlFZGdlLCBwcm9wZXJ0eUdQUik7CisKKyAgICAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Cisg
ICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlZmluZUFjY2Vzc29yUHJvcGVydHlT
eW1ib2wsIE5vUmVzdWx0LCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgZ2V0dGVyR1BSLCBzZXR0ZXJH
UFIsIGF0dHJpYnV0ZXNHUFIpOworICAgICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgVW50eXBlZFVzZTog
eworICAgICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgcHJvcGVydHkodGhpcywgcHJvcGVydHlFZGdl
KTsKKyAgICAgICAgICAgIEpTVmFsdWVSZWdzIHByb3BlcnR5R1BSID0gcHJvcGVydHkuanNWYWx1
ZVJlZ3MoKTsKKworICAgICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAgICAgICAgICAgIGNh
bGxPcGVyYXRpb24ob3BlcmF0aW9uRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eSwgTm9SZXN1bHQsIGJh
c2VHUFIsIHByb3BlcnR5R1BSLCBnZXR0ZXJHUFIsIHNldHRlckdQUiwgYXR0cmlidXRlc0dQUik7
CisgICAgICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKworICAgICAgICBub1Jlc3VsdChub2RlKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBHZXRHbG9iYWxMZXhpY2FsVmFyaWFibGU6
CiAgICAgY2FzZSBHZXRHbG9iYWxWYXI6IHsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdFBh
eWxvYWQodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDY0LmNwcAppbmRleCBhYjI4ODYyYzE2MjY5NDMzNjJjMWE1NTdiYmVlMzIwZWQzZjNk
NGMxLi5hNzRmNzlhZjFiOTZhNzBhZDY0ODhlYzMxODBiNWMxN2NkY2NhMjlhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTQ0
NDgsNiArNDQ0OCwxMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2Rl
KQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIERlZmluZURhdGFQcm9wZXJ0eTog
eworICAgICAgICBzdGF0aWNfYXNzZXJ0KEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzID49IDQs
ICJXZSBhcmUgYXNzdW1pbmcgd2UgaGF2ZSBlbm91Z2ggcmVnaXN0ZXJzIHRvIG1ha2UgdGhpcyBj
YWxsIHdpdGhvdXQgaW5jcmVtZW50YWxseSBzZXR0aW5nIHVwIHRoZSBhcmd1bWVudHMuIik7CisK
KyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBtX2ppdC5ncmFwaCgpLnZh
ckFyZ0NoaWxkKG5vZGUsIDApKTsKKyAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigp
OworCisgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG1faml0LmdyYXBoKCkudmFy
QXJnQ2hpbGQobm9kZSwgMikpOworICAgICAgICBHUFJSZWcgdmFsdWVHUFIgPSB2YWx1ZS5ncHIo
KTsKKworICAgICAgICBTcGVjdWxhdGVJbnQzMk9wZXJhbmQgYXR0cmlidXRlcyh0aGlzLCBtX2pp
dC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIDMpKTsKKyAgICAgICAgR1BSUmVnIGF0dHJpYnV0
ZXNHUFIgPSBhdHRyaWJ1dGVzLmdwcigpOworCisgICAgICAgIEVkZ2UmIHByb3BlcnR5RWRnZSA9
IG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMSk7CisgICAgICAgIHN3aXRjaCAocHJv
cGVydHlFZGdlLnVzZUtpbmQoKSkgeworICAgICAgICBjYXNlIFN0cmluZ1VzZTogeworICAgICAg
ICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgcHJvcGVydHkodGhpcywgcHJvcGVydHlFZGdlKTsK
KyAgICAgICAgICAgIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IHByb3BlcnR5LmdwcigpOworICAgICAg
ICAgICAgc3BlY3VsYXRlU3RyaW5nKHByb3BlcnR5RWRnZSwgcHJvcGVydHlHUFIpOworCisgICAg
ICAgICAgICBmbHVzaFJlZ2lzdGVycygpOworICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVy
YXRpb25EZWZpbmVEYXRhUHJvcGVydHlTdHJpbmcsIE5vUmVzdWx0LCBiYXNlR1BSLCBwcm9wZXJ0
eUdQUiwgdmFsdWVHUFIsIGF0dHJpYnV0ZXNHUFIpOworICAgICAgICAgICAgbV9qaXQuZXhjZXB0
aW9uQ2hlY2soKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2Ug
U3ltYm9sVXNlOiB7CisgICAgICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBwcm9wZXJ0eSh0
aGlzLCBwcm9wZXJ0eUVkZ2UpOworICAgICAgICAgICAgR1BSUmVnIHByb3BlcnR5R1BSID0gcHJv
cGVydHkuZ3ByKCk7CisgICAgICAgICAgICBzcGVjdWxhdGVTeW1ib2wocHJvcGVydHlFZGdlLCBw
cm9wZXJ0eUdQUik7CisKKyAgICAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CisgICAgICAgICAg
ICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlZmluZURhdGFQcm9wZXJ0eVN5bWJvbCwgTm9SZXN1
bHQsIGJhc2VHUFIsIHByb3BlcnR5R1BSLCB2YWx1ZUdQUiwgYXR0cmlidXRlc0dQUik7CisgICAg
ICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKyAgICAgICAgY2FzZSBVbnR5cGVkVXNlOiB7CisgICAgICAgICAgICBKU1ZhbHVlT3Bl
cmFuZCBwcm9wZXJ0eSh0aGlzLCBwcm9wZXJ0eUVkZ2UpOworICAgICAgICAgICAgR1BSUmVnIHBy
b3BlcnR5R1BSID0gcHJvcGVydHkuZ3ByKCk7CisKKyAgICAgICAgICAgIGZsdXNoUmVnaXN0ZXJz
KCk7CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlZmluZURhdGFQcm9wZXJ0
eSwgTm9SZXN1bHQsIGJhc2VHUFIsIHByb3BlcnR5R1BSLCB2YWx1ZUdQUiwgYXR0cmlidXRlc0dQ
Uik7CisgICAgICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKworICAgICAgICBub1Jlc3VsdChub2RlKTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgY2FzZSBEZWZpbmVBY2Nlc3NvclByb3BlcnR5
OiB7CisgICAgICAgIHN0YXRpY19hc3NlcnQoR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMgPj0g
NSwgIldlIGFyZSBhc3N1bWluZyB3ZSBoYXZlIGVub3VnaCByZWdpc3RlcnMgdG8gbWFrZSB0aGlz
IGNhbGwgd2l0aG91dCBpbmNyZW1lbnRhbGx5IHNldHRpbmcgdXAgdGhlIGFyZ3VtZW50cy4iKTsK
KworICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG1faml0LmdyYXBoKCku
dmFyQXJnQ2hpbGQobm9kZSwgMCkpOworICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3By
KCk7CisKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgZ2V0dGVyKHRoaXMsIG1faml0Lmdy
YXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMikpOworICAgICAgICBHUFJSZWcgZ2V0dGVyR1BSID0g
Z2V0dGVyLmdwcigpOworCisgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHNldHRlcih0aGlz
LCBtX2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIDMpKTsKKyAgICAgICAgR1BSUmVnIHNl
dHRlckdQUiA9IHNldHRlci5ncHIoKTsKKworICAgICAgICBTcGVjdWxhdGVJbnQzMk9wZXJhbmQg
YXR0cmlidXRlcyh0aGlzLCBtX2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIDQpKTsKKyAg
ICAgICAgR1BSUmVnIGF0dHJpYnV0ZXNHUFIgPSBhdHRyaWJ1dGVzLmdwcigpOworCisgICAgICAg
IEVkZ2UmIHByb3BlcnR5RWRnZSA9IG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMSk7
CisgICAgICAgIHN3aXRjaCAocHJvcGVydHlFZGdlLnVzZUtpbmQoKSkgeworICAgICAgICBjYXNl
IFN0cmluZ1VzZTogeworICAgICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgcHJvcGVydHko
dGhpcywgcHJvcGVydHlFZGdlKTsKKyAgICAgICAgICAgIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IHBy
b3BlcnR5LmdwcigpOworICAgICAgICAgICAgc3BlY3VsYXRlU3RyaW5nKHByb3BlcnR5RWRnZSwg
cHJvcGVydHlHUFIpOworCisgICAgICAgICAgICBmbHVzaFJlZ2lzdGVycygpOworICAgICAgICAg
ICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWZpbmVBY2Nlc3NvclByb3BlcnR5U3RyaW5nLCBO
b1Jlc3VsdCwgYmFzZUdQUiwgcHJvcGVydHlHUFIsIGdldHRlckdQUiwgc2V0dGVyR1BSLCBhdHRy
aWJ1dGVzR1BSKTsKKyAgICAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFN5bWJvbFVzZTogeworICAgICAg
ICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgcHJvcGVydHkodGhpcywgcHJvcGVydHlFZGdlKTsK
KyAgICAgICAgICAgIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IHByb3BlcnR5LmdwcigpOworICAgICAg
ICAgICAgc3BlY3VsYXRlU3ltYm9sKHByb3BlcnR5RWRnZSwgcHJvcGVydHlHUFIpOworCisgICAg
ICAgICAgICBmbHVzaFJlZ2lzdGVycygpOworICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVy
YXRpb25EZWZpbmVBY2Nlc3NvclByb3BlcnR5U3ltYm9sLCBOb1Jlc3VsdCwgYmFzZUdQUiwgcHJv
cGVydHlHUFIsIGdldHRlckdQUiwgc2V0dGVyR1BSLCBhdHRyaWJ1dGVzR1BSKTsKKyAgICAgICAg
ICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorICAgICAgICBjYXNlIFVudHlwZWRVc2U6IHsKKyAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5k
IHByb3BlcnR5KHRoaXMsIHByb3BlcnR5RWRnZSk7CisgICAgICAgICAgICBHUFJSZWcgcHJvcGVy
dHlHUFIgPSBwcm9wZXJ0eS5ncHIoKTsKKworICAgICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsK
KyAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVmaW5lQWNjZXNzb3JQcm9wZXJ0
eSwgTm9SZXN1bHQsIGJhc2VHUFIsIHByb3BlcnR5R1BSLCBnZXR0ZXJHUFIsIHNldHRlckdQUiwg
YXR0cmlidXRlc0dQUik7CisgICAgICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKworICAgICAgICBub1Jl
c3VsdChub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBHZXRHbG9iYWxM
ZXhpY2FsVmFyaWFibGU6CiAgICAgY2FzZSBHZXRHbG9iYWxWYXI6IHsKICAgICAgICAgR1BSVGVt
cG9yYXJ5IHJlc3VsdCh0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2Fw
YWJpbGl0aWVzLmNwcAppbmRleCBjYWQ0NWZkYmFiZTkwZjQ0OTM0ZDE0YTRiZTNiZDEwZmM4Mjc2
NDQ5Li5hMWNmODA4ODUyM2JkZDM3Y2IyMGRmMDgxYjRhMDFkZDFhYmMwZDY1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCkBAIC0yNjIsNiArMjYy
LDggQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAg
Y2FzZSBDb21wYXJlR3JlYXRlcjoKICAgICBjYXNlIENvbXBhcmVHcmVhdGVyRXE6CiAgICAgY2Fz
ZSBDb21wYXJlU3RyaWN0RXE6CisgICAgY2FzZSBEZWZpbmVEYXRhUHJvcGVydHk6CisgICAgY2Fz
ZSBEZWZpbmVBY2Nlc3NvclByb3BlcnR5OgogICAgICAgICAvLyBUaGVzZSBhcmUgT0suCiAgICAg
ICAgIGJyZWFrOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExv
d2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9C
My5jcHAKaW5kZXggYTA4NTU1NjRhZDgxNDdjMjQ1MmNjZGYwNWExNzJhNDY5ZTI0M2E5Yi4uYzA3
YTM2MmFmMDYxNTgzYmYxNmQyNjE3NTcyOTBlNzEyNWNhN2YxZiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtNjkwLDYgKzY5MCwxMiBAQCBj
bGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBjYXNlIFB1dEJ5VmFsV2l0aFRoaXM6CiAgICAg
ICAgICAgICBjb21waWxlUHV0QnlWYWxXaXRoVGhpcygpOwogICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgRGVmaW5lRGF0YVByb3BlcnR5OgorICAgICAgICAgICAgY29tcGlsZURlZmlu
ZURhdGFQcm9wZXJ0eSgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRGVmaW5l
QWNjZXNzb3JQcm9wZXJ0eToKKyAgICAgICAgICAgIGNvbXBpbGVEZWZpbmVBY2Nlc3NvclByb3Bl
cnR5KCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBBcnJheVB1c2g6CiAgICAg
ICAgICAgICBjb21waWxlQXJyYXlQdXNoKCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTI3NTks
NiArMjc2NSw2MSBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICB2bUNhbGwoVm9pZCwg
bV9vdXQub3BlcmF0aW9uKG1fZ3JhcGguaXNTdHJpY3RNb2RlRm9yKG1fbm9kZS0+b3JpZ2luLnNl
bWFudGljKSA/IG9wZXJhdGlvblB1dEJ5VmFsV2l0aFRoaXNTdHJpY3QgOiBvcGVyYXRpb25QdXRC
eVZhbFdpdGhUaGlzKSwKICAgICAgICAgICAgIG1fY2FsbEZyYW1lLCBiYXNlLCB0aGlzVmFsdWUs
IHByb3BlcnR5LCB2YWx1ZSk7CiAgICAgfQorCisgICAgdm9pZCBjb21waWxlRGVmaW5lRGF0YVBy
b3BlcnR5KCkKKyAgICB7CisgICAgICAgIExWYWx1ZSBiYXNlID0gbG93Q2VsbChtX2dyYXBoLnZh
ckFyZ0NoaWxkKG1fbm9kZSwgMCkpOworICAgICAgICBMVmFsdWUgdmFsdWUgID0gbG93SlNWYWx1
ZShtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMikpOworICAgICAgICBMVmFsdWUgYXR0cmli
dXRlcyA9IGxvd0ludDMyKG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCAzKSk7CisgICAgICAg
IEVkZ2UmIHByb3BlcnR5RWRnZSA9IG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCAxKTsKKyAg
ICAgICAgc3dpdGNoIChwcm9wZXJ0eUVkZ2UudXNlS2luZCgpKSB7CisgICAgICAgIGNhc2UgU3Ry
aW5nVXNlOiB7CisgICAgICAgICAgICBMVmFsdWUgcHJvcGVydHkgPSBsb3dTdHJpbmcocHJvcGVy
dHlFZGdlKTsKKyAgICAgICAgICAgIHZtQ2FsbChWb2lkLCBtX291dC5vcGVyYXRpb24ob3BlcmF0
aW9uRGVmaW5lRGF0YVByb3BlcnR5U3RyaW5nKSwgbV9jYWxsRnJhbWUsIGJhc2UsIHByb3BlcnR5
LCB2YWx1ZSwgYXR0cmlidXRlcyk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAg
ICAgICBjYXNlIFN5bWJvbFVzZTogeworICAgICAgICAgICAgTFZhbHVlIHByb3BlcnR5ID0gbG93
U3ltYm9sKHByb3BlcnR5RWRnZSk7CisgICAgICAgICAgICB2bUNhbGwoVm9pZCwgbV9vdXQub3Bl
cmF0aW9uKG9wZXJhdGlvbkRlZmluZURhdGFQcm9wZXJ0eVN5bWJvbCksIG1fY2FsbEZyYW1lLCBi
YXNlLCBwcm9wZXJ0eSwgdmFsdWUsIGF0dHJpYnV0ZXMpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKyAgICAgICAgY2FzZSBVbnR5cGVkVXNlOiB7CisgICAgICAgICAgICBMVmFsdWUg
cHJvcGVydHkgPSBsb3dKU1ZhbHVlKHByb3BlcnR5RWRnZSk7CisgICAgICAgICAgICB2bUNhbGwo
Vm9pZCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkRlZmluZURhdGFQcm9wZXJ0eSksIG1fY2Fs
bEZyYW1lLCBiYXNlLCBwcm9wZXJ0eSwgdmFsdWUsIGF0dHJpYnV0ZXMpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIGNvbXBp
bGVEZWZpbmVBY2Nlc3NvclByb3BlcnR5KCkKKyAgICB7CisgICAgICAgIExWYWx1ZSBiYXNlID0g
bG93Q2VsbChtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMCkpOworICAgICAgICBMVmFsdWUg
Z2V0dGVyID0gbG93Q2VsbChtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMikpOworICAgICAg
ICBMVmFsdWUgc2V0dGVyID0gbG93Q2VsbChtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMykp
OworICAgICAgICBMVmFsdWUgYXR0cmlidXRlcyA9IGxvd0ludDMyKG1fZ3JhcGgudmFyQXJnQ2hp
bGQobV9ub2RlLCA0KSk7CisgICAgICAgIEVkZ2UmIHByb3BlcnR5RWRnZSA9IG1fZ3JhcGgudmFy
QXJnQ2hpbGQobV9ub2RlLCAxKTsKKyAgICAgICAgc3dpdGNoIChwcm9wZXJ0eUVkZ2UudXNlS2lu
ZCgpKSB7CisgICAgICAgIGNhc2UgU3RyaW5nVXNlOiB7CisgICAgICAgICAgICBMVmFsdWUgcHJv
cGVydHkgPSBsb3dTdHJpbmcocHJvcGVydHlFZGdlKTsKKyAgICAgICAgICAgIHZtQ2FsbChWb2lk
LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eVN0cmluZyks
IG1fY2FsbEZyYW1lLCBiYXNlLCBwcm9wZXJ0eSwgZ2V0dGVyLCBzZXR0ZXIsIGF0dHJpYnV0ZXMp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBTeW1ib2xVc2U6
IHsKKyAgICAgICAgICAgIExWYWx1ZSBwcm9wZXJ0eSA9IGxvd1N5bWJvbChwcm9wZXJ0eUVkZ2Up
OworICAgICAgICAgICAgdm1DYWxsKFZvaWQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25EZWZp
bmVBY2Nlc3NvclByb3BlcnR5U3ltYm9sKSwgbV9jYWxsRnJhbWUsIGJhc2UsIHByb3BlcnR5LCBn
ZXR0ZXIsIHNldHRlciwgYXR0cmlidXRlcyk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorICAgICAgICBjYXNlIFVudHlwZWRVc2U6IHsKKyAgICAgICAgICAgIExWYWx1ZSBwcm9wZXJ0
eSA9IGxvd0pTVmFsdWUocHJvcGVydHlFZGdlKTsKKyAgICAgICAgICAgIHZtQ2FsbChWb2lkLCBt
X291dC5vcGVyYXRpb24ob3BlcmF0aW9uRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eSksIG1fY2FsbEZy
YW1lLCBiYXNlLCBwcm9wZXJ0eSwgZ2V0dGVyLCBzZXR0ZXIsIGF0dHJpYnV0ZXMpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICB9CiAgICAgCiAgICAg
dm9pZCBjb21waWxlUHV0QnlJZCgpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9D
Q2FsbEhlbHBlcnMuY3BwCmluZGV4IDc1ZDE1YTYyM2M3MmM0NGFkYzRhNGI5YzEzZjg1ODZmMjcy
MjZiODUuLjNjM2RmNjE4Zjk5ZmViOTQxNTQ0MDA5OTg1NWRlMWZiYWY1Y2I5ZDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5jcHAKQEAgLTY4LDEwNyArNjgsNiBA
QCB2b2lkIENDYWxsSGVscGVyczo6ZW5zdXJlU2hhZG93Q2hpY2tlblBhY2tldChHUFJSZWcgc2hh
ZG93UGFja2V0LCBHUFJSZWcgc2NyYXRjaAogICAgIHN0b3JlUHRyKHNjcmF0Y2gyLCBBZGRyZXNz
KHNjcmF0Y2gxTm9uQXJnR1BSKSk7CiB9CiAKLSNpZiBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNU
RVJTID49IDQKLXZvaWQgQ0NhbGxIZWxwZXJzOjpzZXR1cEZvdXJTdHViQXJnc0dQUihHUFJSZWcg
ZGVzdEEsIEdQUlJlZyBkZXN0QiwgR1BSUmVnIGRlc3RDLCBHUFJSZWcgZGVzdEQsIEdQUlJlZyBz
cmNBLCBHUFJSZWcgc3JjQiwgR1BSUmVnIHNyY0MsIEdQUlJlZyBzcmNEKQotewotICAgIGlmICgh
QVNTRVJUX0RJU0FCTEVEKSB7Ci0gICAgICAgIFJlZ2lzdGVyU2V0IGRlc3RpbmF0aW9ucyhkZXN0
QSwgZGVzdEIsIGRlc3RDLCBkZXN0RCk7Ci0gICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoZGVz
dGluYXRpb25zLm51bWJlck9mU2V0R1BScygpID09IDQsICJEZXN0aW5hdGlvbnMgc2hvdWxkIG5v
dCBiZSBhbGlhc2VkLiIpOwotICAgIH0KLQotICAgIHR5cGVkZWYgc3RkOjpwYWlyPEdQUlJlZywg
R1BSUmVnPiBSZWdQYWlyOwotICAgIFZlY3RvcjxSZWdQYWlyLCA0PiBwYWlyczsKLQotICAgIGlm
IChzcmNBICE9IGRlc3RBKQotICAgICAgICBwYWlycy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoc3Jj
QSwgZGVzdEEpKTsKLSAgICBpZiAoc3JjQiAhPSBkZXN0QikKLSAgICAgICAgcGFpcnMuYXBwZW5k
KHN0ZDo6bWFrZV9wYWlyKHNyY0IsIGRlc3RCKSk7Ci0gICAgaWYgKHNyY0MgIT0gZGVzdEMpCi0g
ICAgICAgIHBhaXJzLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihzcmNDLCBkZXN0QykpOwotICAgIGlm
IChzcmNEICE9IGRlc3REKQotICAgICAgICBwYWlycy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoc3Jj
RCwgZGVzdEQpKTsKLQotCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAotICAgIGF1dG8gbnVtVW5pcXVl
U291cmNlcyA9IFsmXSAoKSAtPiB1bnNpZ25lZCB7Ci0gICAgICAgIFJlZ2lzdGVyU2V0IHNldDsK
LSAgICAgICAgZm9yIChhdXRvJiBwYWlyIDogcGFpcnMpIHsKLSAgICAgICAgICAgIEdQUlJlZyBz
b3VyY2UgPSBwYWlyLmZpcnN0OwotICAgICAgICAgICAgc2V0LnNldChzb3VyY2UpOwotICAgICAg
ICB9Ci0gICAgICAgIHJldHVybiBzZXQubnVtYmVyT2ZTZXRHUFJzKCk7Ci0gICAgfTsKLQotICAg
IGF1dG8gbnVtVW5pcXVlRGVzdHMgPSBbJl0gKCkgLT4gdW5zaWduZWQgewotICAgICAgICBSZWdp
c3RlclNldCBzZXQ7Ci0gICAgICAgIGZvciAoYXV0byYgcGFpciA6IHBhaXJzKSB7Ci0gICAgICAg
ICAgICBHUFJSZWcgZGVzdCA9IHBhaXIuc2Vjb25kOwotICAgICAgICAgICAgc2V0LnNldChkZXN0
KTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gc2V0Lm51bWJlck9mU2V0R1BScygpOwotICAg
IH07Ci0jZW5kaWYKLQotICAgIHdoaWxlIChwYWlycy5zaXplKCkpIHsKLSAgICAgICAgUmVnaXN0
ZXJTZXQgZnJlZURlc3RpbmF0aW9uczsKLSAgICAgICAgZm9yIChhdXRvJiBwYWlyIDogcGFpcnMp
IHsKLSAgICAgICAgICAgIEdQUlJlZyBkZXN0ID0gcGFpci5zZWNvbmQ7Ci0gICAgICAgICAgICBm
cmVlRGVzdGluYXRpb25zLnNldChkZXN0KTsKLSAgICAgICAgfQotICAgICAgICBmb3IgKGF1dG8m
IHBhaXIgOiBwYWlycykgewotICAgICAgICAgICAgR1BSUmVnIHNvdXJjZSA9IHBhaXIuZmlyc3Q7
Ci0gICAgICAgICAgICBmcmVlRGVzdGluYXRpb25zLmNsZWFyKHNvdXJjZSk7Ci0gICAgICAgIH0K
LQotICAgICAgICBpZiAoZnJlZURlc3RpbmF0aW9ucy5udW1iZXJPZlNldEdQUnMoKSkgewotICAg
ICAgICAgICAgYm9vbCBtYWRlTW92ZSA9IGZhbHNlOwotICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IHBhaXJzLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgYXV0byYg
cGFpciA9IHBhaXJzW2ldOwotICAgICAgICAgICAgICAgIEdQUlJlZyBzb3VyY2UgPSBwYWlyLmZp
cnN0OwotICAgICAgICAgICAgICAgIEdQUlJlZyBkZXN0ID0gcGFpci5zZWNvbmQ7Ci0gICAgICAg
ICAgICAgICAgaWYgKGZyZWVEZXN0aW5hdGlvbnMuZ2V0KGRlc3QpKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIG1vdmUoc291cmNlLCBkZXN0KTsKLSAgICAgICAgICAgICAgICAgICAgcGFpcnMucmVt
b3ZlKGkpOwotICAgICAgICAgICAgICAgICAgICBtYWRlTW92ZSA9IHRydWU7Ci0gICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIEFTU0VSVF9VTlVTRUQobWFkZU1vdmUsIG1hZGVNb3ZlKTsKLSAgICAgICAgICAgIGNv
bnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgQVNTRVJUKG51bVVuaXF1ZURlc3RzKCkgPT0g
bnVtVW5pcXVlU291cmNlcygpKTsKLSAgICAgICAgQVNTRVJUKG51bVVuaXF1ZURlc3RzKCkgPT0g
cGFpcnMuc2l6ZSgpKTsKLSAgICAgICAgLy8gVGhlIHNldCBvZiBzb3VyY2UgYW5kIGRlc3RpbmF0
aW9uIHJlZ2lzdGVycyBhcmUgZXF1aXZhbGVudCBzZXRzLiBUaGlzIG1lYW5zIHdlIGRvbid0IGhh
dmUKLSAgICAgICAgLy8gYW55IGZyZWUgZGVzdGluYXRpb24gcmVnaXN0ZXJzIHRoYXQgd29uJ3Qg
YWxzbyBjbG9iYmVyIGEgc291cmNlLiBXZSBnZXQgYXJvdW5kIHRoaXMgYnkKLSAgICAgICAgLy8g
ZXhjaGFuZ2luZyByZWdpc3RlcnMuCi0KLSAgICAgICAgR1BSUmVnIHNvdXJjZSA9IHBhaXJzWzBd
LmZpcnN0OwotICAgICAgICBHUFJSZWcgZGVzdCA9IHBhaXJzWzBdLnNlY29uZDsKLSAgICAgICAg
c3dhcChzb3VyY2UsIGRlc3QpOwotICAgICAgICBwYWlycy5yZW1vdmUoMCk7Ci0KLSAgICAgICAg
R1BSUmVnIG5ld1NvdXJjZSA9IHNvdXJjZTsKLSAgICAgICAgZm9yIChhdXRvJiBwYWlyIDogcGFp
cnMpIHsKLSAgICAgICAgICAgIEdQUlJlZyBzb3VyY2UgPSBwYWlyLmZpcnN0OwotICAgICAgICAg
ICAgaWYgKHNvdXJjZSA9PSBkZXN0KSB7Ci0gICAgICAgICAgICAgICAgcGFpci5maXJzdCA9IG5l
d1NvdXJjZTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
fQotCi0gICAgICAgIC8vIFdlIG1heSBoYXZlIGludHJvZHVjZWQgcGFpcnMgdGhhdCBoYXZlIHRo
ZSBzYW1lIHNvdXJjZSBhbmQgZGVzdGluYXRpb24uIFJlbW92ZSB0aG9zZSBub3cuCi0gICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwYWlycy5zaXplKCk7IGkrKykgewotICAgICAgICAg
ICAgYXV0byYgcGFpciA9IHBhaXJzW2ldOwotICAgICAgICAgICAgaWYgKHBhaXIuZmlyc3QgPT0g
cGFpci5zZWNvbmQpIHsKLSAgICAgICAgICAgICAgICBwYWlycy5yZW1vdmUoaSk7Ci0gICAgICAg
ICAgICAgICAgaS0tOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotfQotI2VuZGlm
IC8vIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMgPj0gNAotCiB9IC8vIG5hbWVzcGFjZSBK
U0MKIAogI2VuZGlmIC8vIEVOQUJMRShKSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0NDYWxsSGVscGVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2Fs
bEhlbHBlcnMuaAppbmRleCA3OTQ1NDZiMGJkMjdhOTljMGMxOTg5YmUyZTQxMzE0MzRkYTQ4ZmFl
Li40MjYyY2JlZTJhOGE4MTRlNDZjOGNkMWViNGY1ZTYwODg4MzdlNDVlIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgKQEAgLTk4Nyw3ICs5ODcsMTQgQEAgY2xhc3Mg
Q0NhbGxIZWxwZXJzIDogcHVibGljIEFzc2VtYmx5SGVscGVycyB7CiAgICAgICAgICAgICBzd2Fw
KGRlc3RCLCBkZXN0Qyk7CiAgICAgfQogCi0gICAgdm9pZCBzZXR1cEZvdXJTdHViQXJnc0dQUihH
UFJSZWcgZGVzdEEsIEdQUlJlZyBkZXN0QiwgR1BSUmVnIGRlc3RDLCBHUFJSZWcgZGVzdEQsIEdQ
UlJlZyBzcmNBLCBHUFJSZWcgc3JjQiwgR1BSUmVnIHNyY0MsIEdQUlJlZyBzcmNEKTsKKyAgICB2
b2lkIHNldHVwRm91clN0dWJBcmdzR1BSKEdQUlJlZyBkZXN0QSwgR1BSUmVnIGRlc3RCLCBHUFJS
ZWcgZGVzdEMsIEdQUlJlZyBkZXN0RCwgR1BSUmVnIHNyY0EsIEdQUlJlZyBzcmNCLCBHUFJSZWcg
c3JjQywgR1BSUmVnIHNyY0QpCisgICAgeworICAgICAgICBzZXR1cFN0dWJBcmdzR1BSPDQ+KHsg
eyBkZXN0QSwgZGVzdEIsIGRlc3RDLCBkZXN0RCB9IH0sIHsgeyBzcmNBLCBzcmNCLCBzcmNDLCBz
cmNEIH0gfSk7CisgICAgfQorICAgIHZvaWQgc2V0dXBGaXZlU3R1YkFyZ3NHUFIoR1BSUmVnIGRl
c3RBLCBHUFJSZWcgZGVzdEIsIEdQUlJlZyBkZXN0QywgR1BSUmVnIGRlc3RELCBHUFJSZWcgZGVz
dEUsIEdQUlJlZyBzcmNBLCBHUFJSZWcgc3JjQiwgR1BSUmVnIHNyY0MsIEdQUlJlZyBzcmNELCBH
UFJSZWcgc3JjRSkKKyAgICB7CisgICAgICAgIHNldHVwU3R1YkFyZ3NHUFI8NT4oeyB7IGRlc3RB
LCBkZXN0QiwgZGVzdEMsIGRlc3RELCBkZXN0RSB9IH0sIHsgeyBzcmNBLCBzcmNCLCBzcmNDLCBz
cmNELCBzcmNFIH0gfSk7CisgICAgfQogCiAjaWYgQ1BVKFg4Nl82NCkgfHwgQ1BVKEFSTTY0KQog
ICAgIHRlbXBsYXRlPEZQUlJlZyBkZXN0QSwgRlBSUmVnIGRlc3RCPgpAQCAtMTYxNCw2ICsxNjIx
LDEzIEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewogICAg
ICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CiAgICAg
fQogCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShH
UFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcgYXJnNCwgR1BSUmVn
IGFyZzUpCisgICAgeworICAgICAgICBwb2tlKGFyZzUsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUICsg
MSk7CisgICAgICAgIHBva2UoYXJnNCwgUE9LRV9BUkdVTUVOVF9PRkZTRVQpOworICAgICAgICBz
ZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CisgICAgfQorCiAg
ICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcg
YXJnMSwgR1BSUmVnIGFyZzIsIFRydXN0ZWRJbW1QdHIgYXJnMywgVHJ1c3RlZEltbTMyIGFyZzQp
CiAgICAgewogICAgICAgICBwb2tlKGFyZzQsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUKTsKQEAgLTIx
ODQsNiArMjE5OCwxMiBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxw
ZXJzIHsKICAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6
YXJndW1lbnRHUFIwKTsKICAgICB9CiAKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1
bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMs
IEdQUlJlZyBhcmc0LCBHUFJSZWcgYXJnNSkKKyAgICB7CisgICAgICAgIHNldHVwRml2ZVN0dWJB
cmdzR1BSKEdQUkluZm86OmFyZ3VtZW50R1BSMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjMsIEdQUkluZm86OmFyZ3VtZW50R1BSNCwgR1BSSW5mbzo6YXJndW1l
bnRHUFI1LCBhcmcxLCBhcmcyLCBhcmczLCBhcmc0LCBhcmc1KTsKKyAgICAgICAgbW92ZShHUFJJ
bmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICB9CisK
ICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJl
ZyBhcmcxLCBUcnVzdGVkSW1tUHRyIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcgYXJnNCkKICAg
ICB7CiAgICAgICAgIHNldHVwU3R1YkFyZ3VtZW50czEzNChhcmcxLCBhcmczLCBhcmc0KTsKQEAg
LTI0NzIsNiArMjQ5MiwxMDUgQEAgY2xhc3MgQ0NhbGxIZWxwZXJzIDogcHVibGljIEFzc2VtYmx5
SGVscGVycyB7CiAgICAgICAgIC8vIFJlYWR5IGZvciBhIGp1bXAhCiAgICAgICAgIG1vdmUobmV3
RnJhbWVQb2ludGVyLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7CiAgICAgfQorCisjaWYgTlVNQkVS
X09GX0FSR1VNRU5UX1JFR0lTVEVSUyA+PSA0CisgICAgdGVtcGxhdGU8dW5zaWduZWQgTnVtYmVy
T2ZSZWdpc3RlcnM+CisgICAgdm9pZCBzZXR1cFN0dWJBcmdzR1BSKHN0ZDo6YXJyYXk8R1BSUmVn
LCBOdW1iZXJPZlJlZ2lzdGVycz4gZGVzdGluYXRpb25zLCBzdGQ6OmFycmF5PEdQUlJlZywgTnVt
YmVyT2ZSZWdpc3RlcnM+IHNvdXJjZXMpCisgICAgeworICAgICAgICBpZiAoIUFTU0VSVF9ESVNB
QkxFRCkgeworICAgICAgICAgICAgUmVnaXN0ZXJTZXQgc2V0OworICAgICAgICAgICAgZm9yIChH
UFJSZWcgZGVzdCA6IGRlc3RpbmF0aW9ucykKKyAgICAgICAgICAgICAgICBzZXQuc2V0KGRlc3Qp
OworICAgICAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShzZXQubnVtYmVyT2ZTZXRHUFJzKCkg
PT0gNCwgIkRlc3RpbmF0aW9ucyBzaG91bGQgbm90IGJlIGFsaWFzZWQuIik7CisgICAgICAgIH0K
KworICAgICAgICB0eXBlZGVmIHN0ZDo6cGFpcjxHUFJSZWcsIEdQUlJlZz4gUmVnUGFpcjsKKyAg
ICAgICAgVmVjdG9yPFJlZ1BhaXIsIE51bWJlck9mUmVnaXN0ZXJzPiBwYWlyczsKKworICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgTnVtYmVyT2ZSZWdpc3RlcnM7ICsraSkgeworICAg
ICAgICAgICAgaWYgKHNvdXJjZXNbaV0gIT0gZGVzdGluYXRpb25zW2ldKQorICAgICAgICAgICAg
ICAgIHBhaXJzLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihzb3VyY2VzW2ldLCBkZXN0aW5hdGlvbnNb
aV0pKTsKKyAgICAgICAgfQorCisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgICAgICBhdXRvIG51
bVVuaXF1ZVNvdXJjZXMgPSBbJl0gKCkgLT4gdW5zaWduZWQgeworICAgICAgICAgICAgUmVnaXN0
ZXJTZXQgc2V0OworICAgICAgICAgICAgZm9yIChhdXRvJiBwYWlyIDogcGFpcnMpIHsKKyAgICAg
ICAgICAgICAgICBHUFJSZWcgc291cmNlID0gcGFpci5maXJzdDsKKyAgICAgICAgICAgICAgICBz
ZXQuc2V0KHNvdXJjZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gc2V0Lm51
bWJlck9mU2V0R1BScygpOworICAgICAgICB9OworCisgICAgICAgIGF1dG8gbnVtVW5pcXVlRGVz
dHMgPSBbJl0gKCkgLT4gdW5zaWduZWQgeworICAgICAgICAgICAgUmVnaXN0ZXJTZXQgc2V0Owor
ICAgICAgICAgICAgZm9yIChhdXRvJiBwYWlyIDogcGFpcnMpIHsKKyAgICAgICAgICAgICAgICBH
UFJSZWcgZGVzdCA9IHBhaXIuc2Vjb25kOworICAgICAgICAgICAgICAgIHNldC5zZXQoZGVzdCk7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gc2V0Lm51bWJlck9mU2V0R1BScygp
OworICAgICAgICB9OworI2VuZGlmCisKKyAgICAgICAgd2hpbGUgKHBhaXJzLnNpemUoKSkgewor
ICAgICAgICAgICAgUmVnaXN0ZXJTZXQgZnJlZURlc3RpbmF0aW9uczsKKyAgICAgICAgICAgIGZv
ciAoYXV0byYgcGFpciA6IHBhaXJzKSB7CisgICAgICAgICAgICAgICAgR1BSUmVnIGRlc3QgPSBw
YWlyLnNlY29uZDsKKyAgICAgICAgICAgICAgICBmcmVlRGVzdGluYXRpb25zLnNldChkZXN0KTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZvciAoYXV0byYgcGFpciA6IHBhaXJzKSB7Cisg
ICAgICAgICAgICAgICAgR1BSUmVnIHNvdXJjZSA9IHBhaXIuZmlyc3Q7CisgICAgICAgICAgICAg
ICAgZnJlZURlc3RpbmF0aW9ucy5jbGVhcihzb3VyY2UpOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBpZiAoZnJlZURlc3RpbmF0aW9ucy5udW1iZXJPZlNldEdQUnMoKSkgeworICAgICAg
ICAgICAgICAgIGJvb2wgbWFkZU1vdmUgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgcGFpcnMuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgICAgICAgICAg
ICAgYXV0byYgcGFpciA9IHBhaXJzW2ldOworICAgICAgICAgICAgICAgICAgICBHUFJSZWcgc291
cmNlID0gcGFpci5maXJzdDsKKyAgICAgICAgICAgICAgICAgICAgR1BSUmVnIGRlc3QgPSBwYWly
LnNlY29uZDsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGZyZWVEZXN0aW5hdGlvbnMuZ2V0KGRl
c3QpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBtb3ZlKHNvdXJjZSwgZGVzdCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBwYWlycy5yZW1vdmUoaSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBtYWRlTW92ZSA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBB
U1NFUlRfVU5VU0VEKG1hZGVNb3ZlLCBtYWRlTW92ZSk7CisgICAgICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIEFTU0VSVChudW1VbmlxdWVEZXN0cygp
ID09IG51bVVuaXF1ZVNvdXJjZXMoKSk7CisgICAgICAgICAgICBBU1NFUlQobnVtVW5pcXVlRGVz
dHMoKSA9PSBwYWlycy5zaXplKCkpOworICAgICAgICAgICAgLy8gVGhlIHNldCBvZiBzb3VyY2Ug
YW5kIGRlc3RpbmF0aW9uIHJlZ2lzdGVycyBhcmUgZXF1aXZhbGVudCBzZXRzLiBUaGlzIG1lYW5z
IHdlIGRvbid0IGhhdmUKKyAgICAgICAgICAgIC8vIGFueSBmcmVlIGRlc3RpbmF0aW9uIHJlZ2lz
dGVycyB0aGF0IHdvbid0IGFsc28gY2xvYmJlciBhIHNvdXJjZS4gV2UgZ2V0IGFyb3VuZCB0aGlz
IGJ5CisgICAgICAgICAgICAvLyBleGNoYW5naW5nIHJlZ2lzdGVycy4KKworICAgICAgICAgICAg
R1BSUmVnIHNvdXJjZSA9IHBhaXJzWzBdLmZpcnN0OworICAgICAgICAgICAgR1BSUmVnIGRlc3Qg
PSBwYWlyc1swXS5zZWNvbmQ7CisgICAgICAgICAgICBzd2FwKHNvdXJjZSwgZGVzdCk7CisgICAg
ICAgICAgICBwYWlycy5yZW1vdmUoMCk7CisKKyAgICAgICAgICAgIEdQUlJlZyBuZXdTb3VyY2Ug
PSBzb3VyY2U7CisgICAgICAgICAgICBmb3IgKGF1dG8mIHBhaXIgOiBwYWlycykgeworICAgICAg
ICAgICAgICAgIEdQUlJlZyBzb3VyY2UgPSBwYWlyLmZpcnN0OworICAgICAgICAgICAgICAgIGlm
IChzb3VyY2UgPT0gZGVzdCkgeworICAgICAgICAgICAgICAgICAgICBwYWlyLmZpcnN0ID0gbmV3
U291cmNlOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFdlIG1heSBoYXZlIGludHJvZHVjZWQgcGFp
cnMgdGhhdCBoYXZlIHRoZSBzYW1lIHNvdXJjZSBhbmQgZGVzdGluYXRpb24uIFJlbW92ZSB0aG9z
ZSBub3cuCisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGFpcnMuc2l6ZSgp
OyBpKyspIHsKKyAgICAgICAgICAgICAgICBhdXRvJiBwYWlyID0gcGFpcnNbaV07CisgICAgICAg
ICAgICAgICAgaWYgKHBhaXIuZmlyc3QgPT0gcGFpci5zZWNvbmQpIHsKKyAgICAgICAgICAgICAg
ICAgICAgcGFpcnMucmVtb3ZlKGkpOworICAgICAgICAgICAgICAgICAgICBpLS07CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorI2VuZGlmIC8vIE5V
TUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMgPj0gNAogICAgIAogICAgIC8vIFRoZXNlIG9wZXJh
dGlvbnMgY2xvYmJlciBhbGwgdm9sYXRpbGUgcmVnaXN0ZXJzLiBUaGV5IGFzc3VtZSB0aGF0IHRo
ZXJlIGlzIHJvb20gb24gdGhlIHRvcCBvZgogICAgIC8vIHN0YWNrIHRvIG1hcnNoYWxsIGNhbGwg
YXJndW1lbnRzLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IDFhYmU3YzQzNDE3NDYz
Zjk2OTE2NTI5YTZlNjE0ZWRlMDljN2ZkMzkuLjIzN2QxOWE0YjA4MmYxY2IwZTAyYzJlYTU3N2Nj
MWNjMzEwNzk0MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTMyMiw2ICszMjIs
OCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9P
UChvcF9wdXRfZ2V0dGVyX3NldHRlcl9ieV9pZCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9n
ZXR0ZXJfYnlfdmFsKQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X3NldHRlcl9ieV92YWwpCisg
ICAgICAgIERFRklORV9PUChvcF9kZWZpbmVfZGF0YV9wcm9wZXJ0eSkKKyAgICAgICAgREVGSU5F
X09QKG9wX2RlZmluZV9hY2Nlc3Nvcl9wcm9wZXJ0eSkKIAogICAgICAgICBERUZJTkVfT1Aob3Bf
cmV0KQogICAgICAgICBERUZJTkVfT1Aob3BfcnNoaWZ0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgK
aW5kZXggMWI3NTg1Y2RmOWVlMTZkYjgwNzg0ZWE4NTZhNGY0ZDBlMDFhMjAyNS4uMzU3ZTg0ZGFj
YTRjZTNiMDk1ZTc0Mjc0YzJmYzUyMGY0Yzg5MzA1OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5o
CkBAIC01NjcsNiArNTY3LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdF9v
cF9wdXRfZ2V0dGVyX3NldHRlcl9ieV9pZChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVt
aXRfb3BfcHV0X2dldHRlcl9ieV92YWwoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0
X29wX3B1dF9zZXR0ZXJfYnlfdmFsKEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9v
cF9kZWZpbmVfZGF0YV9wcm9wZXJ0eShJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRf
b3BfZGVmaW5lX2FjY2Vzc29yX3Byb3BlcnR5KEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQg
ZW1pdF9vcF9yZXQoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3JzaGlmdChJ
bnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3Bfc2V0X2Z1bmN0aW9uX25hbWUoSW5z
dHJ1Y3Rpb24qKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKaW5k
ZXggNjcyNjQwNzRlZTQ3Y2IxNTE2MWRiMDkyN2I0M2ZmNzgwODNhNWM3Zi4uMTZjM2I1OGI0Y2Vj
MjRmNjE3MWM1MTg2MTU2MmEzZjg4MDg5MzEwMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGVyYXRpb25zLmgKQEAgLTU5LDYgKzU5LDcgQEAgY2xhc3MgUmVnRXhwT2JqZWN0Owog
Y2xhc3MgUmVnaXN0ZXI7CiBjbGFzcyBTdHJ1Y3R1cmU7CiBjbGFzcyBTdHJ1Y3R1cmVTdHViSW5m
bzsKK2NsYXNzIFN5bWJvbDsKIGNsYXNzIFN5bWJvbFRhYmxlOwogY2xhc3MgV2F0Y2hwb2ludFNl
dDsKIApAQCAtMTExLDYgKzExMiw3IEBAIHR5cGVkZWYgY2hhciogVW51c2VkUHRyOwogICAgIFNz
aTogU3RydWN0dXJlU3R1YkluZm8qCiAgICAgU3Q6IFN0cnVjdHVyZSoKICAgICBTeW10YWI6IFN5
bWJvbFRhYmxlKgorICAgIFN5bTogU3ltYm9sKgogICAgIFQ6IFN0cmluZ0ltcGwqCiAgICAgVjog
dm9pZAogICAgIFZtOiBWTSoKQEAgLTI3MCw2ICsyNzIsMTIgQEAgdHlwZWRlZiB2b2lkIChKSVRf
T1BFUkFUSU9OICpWX0pJVE9wZXJhdGlvbl9FUFpKKShFeGVjU3RhdGUqLCB2b2lkKiwgaW50MzJf
dCwgRW4KIHR5cGVkZWYgdm9pZCAoSklUX09QRVJBVElPTiAqVl9KSVRPcGVyYXRpb25fRVNzaUpK
SSkoRXhlY1N0YXRlKiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUsIFVuaXF1ZWRTdHJpbmdJbXBsKik7CiB0eXBlZGVmIHZvaWQgKEpJVF9PUEVSQVRJ
T04gKlZfSklUT3BlcmF0aW9uX0VKSkpJKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBVbmlxdWVkU3RyaW5nSW1wbCopOwogdHlwZWRl
ZiB2b2lkIChKSVRfT1BFUkFUSU9OICpWX0pJVE9wZXJhdGlvbl9FSkpKSikoRXhlY1N0YXRlKiwg
RW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUpOwordHlwZWRlZiB2b2lkIChKSVRfT1BFUkFUSU9OICpWX0pJVE9wZXJhdGlvbl9FT0pK
WikoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUs
IGludDMyX3QpOwordHlwZWRlZiB2b2lkIChKSVRfT1BFUkFUSU9OICpWX0pJVE9wZXJhdGlvbl9F
T0pzc0paKShFeGVjU3RhdGUqLCBKU09iamVjdCosIEpTU3RyaW5nKiwgRW5jb2RlZEpTVmFsdWUs
IGludDMyX3QpOwordHlwZWRlZiB2b2lkIChKSVRfT1BFUkFUSU9OICpWX0pJVE9wZXJhdGlvbl9F
T1N5bUpaKShFeGVjU3RhdGUqLCBKU09iamVjdCosIFN5bWJvbCosIEVuY29kZWRKU1ZhbHVlLCBp
bnQzMl90KTsKK3R5cGVkZWYgdm9pZCAoSklUX09QRVJBVElPTiAqVl9KSVRPcGVyYXRpb25fRU9K
T09aKShFeGVjU3RhdGUqLCBKU09iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBKU09iamVjdCosIEpT
T2JqZWN0KiwgaW50MzJfdCk7Cit0eXBlZGVmIHZvaWQgKEpJVF9PUEVSQVRJT04gKlZfSklUT3Bl
cmF0aW9uX0VPSnNzT09aKShFeGVjU3RhdGUqLCBKU09iamVjdCosIEpTU3RyaW5nKiwgSlNPYmpl
Y3QqLCBKU09iamVjdCosIGludDMyX3QpOwordHlwZWRlZiB2b2lkIChKSVRfT1BFUkFUSU9OICpW
X0pJVE9wZXJhdGlvbl9FT1N5bU9PWikoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBTeW1ib2wqLCBK
U09iamVjdCosIEpTT2JqZWN0KiwgaW50MzJfdCk7CiB0eXBlZGVmIHZvaWQgKEpJVF9PUEVSQVRJ
T04gKlZfSklUT3BlcmF0aW9uX0VXcykoRXhlY1N0YXRlKiwgV2F0Y2hwb2ludFNldCopOwogdHlw
ZWRlZiB2b2lkIChKSVRfT1BFUkFUSU9OICpWX0pJVE9wZXJhdGlvbl9FWikoRXhlY1N0YXRlKiwg
aW50MzJfdCk7CiB0eXBlZGVmIHZvaWQgKEpJVF9PUEVSQVRJT04gKlZfSklUT3BlcmF0aW9uX0Va
SikoRXhlY1N0YXRlKiwgaW50MzJfdCwgRW5jb2RlZEpTVmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAppbmRleCA1NjAyNjhiNWMzMTQ3
ODQxMzYwNzJkZGQ4MDA3Nzc4MGYzMzc4YjJiLi45ZDRmZDFhYTZhZjY0YjQ4ZDdiZTFiM2ViNDY5
MzBiNTNmMzVmNGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFBy
b3BlcnR5QWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3Bl
cnR5QWNjZXNzLmNwcApAQCAtMTc3Myw2ICsxNzczLDE4IEBAIEpJVDo6SnVtcExpc3QgSklUOjpl
bWl0RmxvYXRUeXBlZEFycmF5UHV0QnlWYWwoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
biwKICAgICByZXR1cm4gc2xvd0Nhc2VzOwogfQogCit2b2lkIEpJVDo6ZW1pdF9vcF9kZWZpbmVf
ZGF0YV9wcm9wZXJ0eShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIEpJ
VFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93
X3BhdGhfZGVmaW5lX2RhdGFfcHJvcGVydHkpOworICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7Cit9
CisKK3ZvaWQgSklUOjplbWl0X29wX2RlZmluZV9hY2Nlc3Nvcl9wcm9wZXJ0eShJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENh
bGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfZGVmaW5lX2FjY2Vzc29yX3By
b3BlcnR5KTsKKyAgICBzbG93UGF0aENhbGwuY2FsbCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBK
U0MKIAogI2VuZGlmIC8vIEVOQUJMRShKSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggMTAwMzdhZjU2Y2U2YzdmMWE5
M2U1MmQyYTcxN2UyOTRlMDEwNWY5YS4uYzliODQ0MzdjNjU3NDU1M2UzODBlNTIxMjI2MWFiOTI2
OTZiZTM0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyLmFzbQpAQCAtMTQ1Nyw2ICsxNDU3LDE4IEBAIF9sbGludF9vcF9wdXRfc2V0
dGVyX2J5X3ZhbDoKICAgICBkaXNwYXRjaCg1KQogCiAKK19sbGludF9vcF9kZWZpbmVfZGF0YV9w
cm9wZXJ0eToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbE9wY29kZVNsb3dQYXRoKF9z
bG93X3BhdGhfZGVmaW5lX2RhdGFfcHJvcGVydHkpCisgICAgZGlzcGF0Y2goNSkKKworCitfbGxp
bnRfb3BfZGVmaW5lX2FjY2Vzc29yX3Byb3BlcnR5OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBjYWxsT3Bjb2RlU2xvd1BhdGgoX3Nsb3dfcGF0aF9kZWZpbmVfYWNjZXNzb3JfcHJvcGVydHkp
CisgICAgZGlzcGF0Y2goNikKKworCiBfbGxpbnRfb3BfanRydWU6CiAgICAgdHJhY2VFeGVjdXRp
b24oKQogICAgIGp1bXBUcnVlT3JGYWxzZSgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCmluZGV4IGNhZjgyNmRjMmFjZGFiNmQ5YTM5NThh
MGNmMDMxMTQzNjIzYmJhM2YuLmYyNWVlODExYWNhOWVjYTRhOTZkYTkwZTVlMGE5NDI1Yjk3NDU4
YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQ
YXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1Bh
dGhzLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkNsb25lZEFyZ3VtZW50cy5oIgog
I2luY2x1ZGUgIkNvZGVQcm9maWxpbmcuaCIKICNpbmNsdWRlICJDb21tb25TbG93UGF0aHNFeGNl
cHRpb25zLmgiCisjaW5jbHVkZSAiRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzLmgiCiAjaW5jbHVk
ZSAiRGlyZWN0QXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiRXJyb3IuaCIKICNpbmNsdWRlICJFcnJv
ckhhbmRsaW5nU2NvcGUuaCIKQEAgLTkzMCw0ICs5MzEsMzkgQEAgU0xPV19QQVRIX0RFQ0woc2xv
d19wYXRoX3B1dF9ieV92YWxfd2l0aF90aGlzKQogICAgIEVORCgpOwogfQogCitTTE9XX1BBVEhf
REVDTChzbG93X3BhdGhfZGVmaW5lX2RhdGFfcHJvcGVydHkpCit7CisgICAgQkVHSU4oKTsKKyAg
ICBKU09iamVjdCogYmFzZSA9IGFzT2JqZWN0KE9QX0MoMSkuanNWYWx1ZSgpKTsKKyAgICBKU1Zh
bHVlIHByb3BlcnR5ID0gT1BfQygyKS5qc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IE9Q
X0MoMykuanNWYWx1ZSgpOworICAgIEpTVmFsdWUgYXR0cmlidXRlcyA9IE9QX0MoNCkuanNWYWx1
ZSgpOworICAgIEFTU0VSVChhdHRyaWJ1dGVzLmlzSW50MzIoKSk7CisKKyAgICBhdXRvIHByb3Bl
cnR5TmFtZSA9IHByb3BlcnR5LnRvUHJvcGVydHlLZXkoZXhlYyk7CisgICAgQ0hFQ0tfRVhDRVBU
SU9OKCk7CisgICAgUHJvcGVydHlEZXNjcmlwdG9yIGRlc2NyaXB0b3IgPSB0b1Byb3BlcnR5RGVz
Y3JpcHRvcih2YWx1ZSwganNVbmRlZmluZWQoKSwganNVbmRlZmluZWQoKSwgRGVmaW5lUHJvcGVy
dHlBdHRyaWJ1dGVzKGF0dHJpYnV0ZXMuYXNJbnQzMigpKSk7CisgICAgQVNTRVJUKChkZXNjcmlw
dG9yLmF0dHJpYnV0ZXMoKSAmIEFjY2Vzc29yKSB8fCAoIWRlc2NyaXB0b3IuaXNBY2Nlc3NvckRl
c2NyaXB0b3IoKSkpOworICAgIGJhc2UtPm1ldGhvZFRhYmxlKHZtKS0+ZGVmaW5lT3duUHJvcGVy
dHkoYmFzZSwgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCB0cnVlKTsKKyAgICBFTkQo
KTsKK30KKworU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2RlZmluZV9hY2Nlc3Nvcl9wcm9wZXJ0
eSkKK3sKKyAgICBCRUdJTigpOworICAgIEpTT2JqZWN0KiBiYXNlID0gYXNPYmplY3QoT1BfQygx
KS5qc1ZhbHVlKCkpOworICAgIEpTVmFsdWUgcHJvcGVydHkgPSBPUF9DKDIpLmpzVmFsdWUoKTsK
KyAgICBKU1ZhbHVlIGdldHRlciA9IE9QX0MoMykuanNWYWx1ZSgpOworICAgIEpTVmFsdWUgc2V0
dGVyID0gT1BfQyg0KS5qc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSBhdHRyaWJ1dGVzID0gT1BfQyg1
KS5qc1ZhbHVlKCk7CisgICAgQVNTRVJUKGF0dHJpYnV0ZXMuaXNJbnQzMigpKTsKKworICAgIGF1
dG8gcHJvcGVydHlOYW1lID0gcHJvcGVydHkudG9Qcm9wZXJ0eUtleShleGVjKTsKKyAgICBDSEVD
S19FWENFUFRJT04oKTsKKyAgICBQcm9wZXJ0eURlc2NyaXB0b3IgZGVzY3JpcHRvciA9IHRvUHJv
cGVydHlEZXNjcmlwdG9yKGpzVW5kZWZpbmVkKCksIGdldHRlciwgc2V0dGVyLCBEZWZpbmVQcm9w
ZXJ0eUF0dHJpYnV0ZXMoYXR0cmlidXRlcy5hc0ludDMyKCkpKTsKKyAgICBBU1NFUlQoKGRlc2Ny
aXB0b3IuYXR0cmlidXRlcygpICYgQWNjZXNzb3IpIHx8ICghZGVzY3JpcHRvci5pc0FjY2Vzc29y
RGVzY3JpcHRvcigpKSk7CisgICAgYmFzZS0+bWV0aG9kVGFibGUodm0pLT5kZWZpbmVPd25Qcm9w
ZXJ0eShiYXNlLCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHRydWUpOworICAgIEVO
RCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKaW5kZXggYzI2YThjN2NkM2JkMzUzNDViZTllY2Mz
NTBhYTQyMWU1NDE2ODY1Zi4uY2RkNGY0NDdkNTE4Y2Y0YjQxZmY4NThkYmQ4MDhlZmU3YmIzNTFh
NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1Bh
dGhzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhz
LmgKQEAgLTI1OCw2ICsyNTgsOCBAQCBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2dl
dF9ieV9pZF93aXRoX3RoaXMpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9nZXRf
YnlfdmFsX3dpdGhfdGhpcyk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3B1dF9i
eV9pZF93aXRoX3RoaXMpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wdXRfYnlf
dmFsX3dpdGhfdGhpcyk7CitTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2RlZmluZV9k
YXRhX3Byb3BlcnR5KTsKK1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZGVmaW5lX2Fj
Y2Vzc29yX3Byb3BlcnR5KTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RlZmluZVByb3BlcnR5QXR0cmlidXRlcy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uM2Q4YTI0OGI5MTYwYzQ3NjRiMTBjYTQxMWZiMmYyYzc1Y2E5ODM2MAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RlZmluZVByb3Bl
cnR5QXR0cmlidXRlcy5oCkBAIC0wLDAgKzEsMTQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvVHJp
U3RhdGUuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIERlZmluZVByb3BlcnR5QXR0cmli
dXRlcyB7CitwdWJsaWM6CisgICAgc3RhdGljX2Fzc2VydChGYWxzZVRyaVN0YXRlID09IDAsICJG
YWxzZVRyaVN0YXRlIGlzIDAuIik7CisgICAgc3RhdGljX2Fzc2VydChUcnVlVHJpU3RhdGUgPT0g
MSwgIlRydWVUcmlTdGF0ZSBpcyAxLiIpOworICAgIHN0YXRpY19hc3NlcnQoTWl4ZWRUcmlTdGF0
ZSA9PSAyLCAiTWl4ZWRUcmlTdGF0ZSBpcyAyLiIpOworCisgICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIENvbmZpZ3VyYWJsZVNoaWZ0ID0gMDsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgRW51
bWVyYWJsZVNoaWZ0ID0gMjsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgV3JpdGFibGVTaGlm
dCA9IDQ7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFZhbHVlU2hpZnQgPSA2OworICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBHZXRTaGlmdCA9IDc7CisgICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIFNldFNoaWZ0ID0gODsKKworICAgIERlZmluZVByb3BlcnR5QXR0cmlidXRlcygpCisgICAg
ICAgIDogbV9hdHRyaWJ1dGVzKAorICAgICAgICAgICAgKE1peGVkVHJpU3RhdGUgPDwgQ29uZmln
dXJhYmxlU2hpZnQpCisgICAgICAgICAgICB8IChNaXhlZFRyaVN0YXRlIDw8IEVudW1lcmFibGVT
aGlmdCkKKyAgICAgICAgICAgIHwgKE1peGVkVHJpU3RhdGUgPDwgV3JpdGFibGVTaGlmdCkKKyAg
ICAgICAgICAgIHwgKDAgPDwgVmFsdWVTaGlmdCkKKyAgICAgICAgICAgIHwgKDAgPDwgR2V0U2hp
ZnQpCisgICAgICAgICAgICB8ICgwIDw8IFNldFNoaWZ0KSkKKyAgICB7CisgICAgfQorCisgICAg
ZXhwbGljaXQgRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzKHVuc2lnbmVkIGF0dHJpYnV0ZXMpCisg
ICAgICAgIDogbV9hdHRyaWJ1dGVzKGF0dHJpYnV0ZXMpCisgICAgeworICAgIH0KKworICAgIHVu
c2lnbmVkIHJhd1JlcHJlc2VudGF0aW9uKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBt
X2F0dHJpYnV0ZXM7CisgICAgfQorCisgICAgYm9vbCBoYXNWYWx1ZSgpCisgICAgeworICAgICAg
ICByZXR1cm4gbV9hdHRyaWJ1dGVzICYgKDBiMSA8PCBWYWx1ZVNoaWZ0KTsKKyAgICB9CisKKyAg
ICB2b2lkIHNldFZhbHVlKCkKKyAgICB7CisgICAgICAgIG1fYXR0cmlidXRlcyA9IG1fYXR0cmli
dXRlcyB8ICgwYjEgPDwgVmFsdWVTaGlmdCk7CisgICAgfQorCisgICAgYm9vbCBoYXNHZXQoKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYXR0cmlidXRlcyAmICgwYjEgPDwgR2V0U2hpZnQpOwor
ICAgIH0KKworICAgIHZvaWQgc2V0R2V0KCkKKyAgICB7CisgICAgICAgIG1fYXR0cmlidXRlcyA9
IG1fYXR0cmlidXRlcyB8ICgwYjEgPDwgR2V0U2hpZnQpOworICAgIH0KKworICAgIGJvb2wgaGFz
U2V0KCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX2F0dHJpYnV0ZXMgJiAoMGIxIDw8IFNldFNo
aWZ0KTsKKyAgICB9CisKKyAgICB2b2lkIHNldFNldCgpCisgICAgeworICAgICAgICBtX2F0dHJp
YnV0ZXMgPSBtX2F0dHJpYnV0ZXMgfCAoMGIxIDw8IFNldFNoaWZ0KTsKKyAgICB9CisKKyAgICBU
cmlTdGF0ZSB3cml0YWJsZSgpCisgICAgeworICAgICAgICByZXR1cm4gZXh0cmFjdFRyaVN0YXRl
KFdyaXRhYmxlU2hpZnQpOworICAgIH0KKworICAgIFRyaVN0YXRlIGNvbmZpZ3VyYWJsZSgpCisg
ICAgeworICAgICAgICByZXR1cm4gZXh0cmFjdFRyaVN0YXRlKENvbmZpZ3VyYWJsZVNoaWZ0KTsK
KyAgICB9CisKKyAgICBUcmlTdGF0ZSBlbnVtZXJhYmxlKCkKKyAgICB7CisgICAgICAgIHJldHVy
biBleHRyYWN0VHJpU3RhdGUoRW51bWVyYWJsZVNoaWZ0KTsKKyAgICB9CisKKyAgICB2b2lkIHNl
dFdyaXRhYmxlKGJvb2wgdmFsdWUpCisgICAgeworICAgICAgICBmaWxsV2l0aFRyaVN0YXRlKHZh
bHVlID8gVHJ1ZVRyaVN0YXRlIDogRmFsc2VUcmlTdGF0ZSwgV3JpdGFibGVTaGlmdCk7CisgICAg
fQorCisgICAgdm9pZCBzZXRDb25maWd1cmFibGUoYm9vbCB2YWx1ZSkKKyAgICB7CisgICAgICAg
IGZpbGxXaXRoVHJpU3RhdGUodmFsdWUgPyBUcnVlVHJpU3RhdGUgOiBGYWxzZVRyaVN0YXRlLCBD
b25maWd1cmFibGVTaGlmdCk7CisgICAgfQorCisgICAgdm9pZCBzZXRFbnVtZXJhYmxlKGJvb2wg
dmFsdWUpCisgICAgeworICAgICAgICBmaWxsV2l0aFRyaVN0YXRlKHZhbHVlID8gVHJ1ZVRyaVN0
YXRlIDogRmFsc2VUcmlTdGF0ZSwgRW51bWVyYWJsZVNoaWZ0KTsKKyAgICB9CisKK3ByaXZhdGU6
CisgICAgdm9pZCBmaWxsV2l0aFRyaVN0YXRlKFRyaVN0YXRlIHN0YXRlLCB1bnNpZ25lZCBzaGlm
dCkKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIG1hc2sgPSAwYjExIDw8IHNoaWZ0OworICAgICAg
ICBtX2F0dHJpYnV0ZXMgPSAobV9hdHRyaWJ1dGVzICYgfm1hc2spIHwgKHN0YXRlIDw8IHNoaWZ0
KTsKKyAgICB9CisKKyAgICBUcmlTdGF0ZSBleHRyYWN0VHJpU3RhdGUodW5zaWduZWQgc2hpZnQp
CisgICAgeworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VHJpU3RhdGU+KChtX2F0dHJpYnV0
ZXMgPj4gc2hpZnQpICYgMGIxMSk7CisgICAgfQorCisgICAgdW5zaWduZWQgbV9hdHRyaWJ1dGVz
OworfTsKKworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCA5NzNjMmU4MTY5ZWI4ZmM1ZWFlZjY0
NjcwYjQ2MTEzNjIxYTU1OGEwLi41Yzk0YjkyNWNiZTY1ZTE5MjQxZDQ5YTI4ZjFlMTFhMDlmNjcx
MjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuY3BwCkBAIC00MDQsNyArNDA0LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYg
dm0pCiAgICAgbV9mdW5jdGlvblByb3RvSGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlvbi5zZXQodm0s
IHRoaXMsIGhhc0luc3RhbmNlU3ltYm9sRnVuY3Rpb24pOwogICAgIG1fdGhyb3dUeXBlRXJyb3JH
ZXR0ZXJTZXR0ZXIuaW5pdExhdGVyKAogICAgICAgICBbXSAoY29uc3QgSW5pdGlhbGl6ZXI8R2V0
dGVyU2V0dGVyPiYgaW5pdCkgewotICAgICAgICAgICAgSlNGdW5jdGlvbiogdGhyb3dlciA9IEpT
RnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBpbml0Lm93bmVyLCAwLCBTdHJpbmcoKSwgZ2xvYmFs
RnVuY1Rocm93VHlwZUVycm9yKTsKKyAgICAgICAgICAgIEpTRnVuY3Rpb24qIHRocm93ZXIgPSBp
bml0Lm93bmVyLT50aHJvd1R5cGVFcnJvckZ1bmN0aW9uKCk7CiAgICAgICAgICAgICBHZXR0ZXJT
ZXR0ZXIqIGdldHRlclNldHRlciA9IEdldHRlclNldHRlcjo6Y3JlYXRlKGluaXQudm0sIGluaXQu
b3duZXIpOwogICAgICAgICAgICAgZ2V0dGVyU2V0dGVyLT5zZXRHZXR0ZXIoaW5pdC52bSwgaW5p
dC5vd25lciwgdGhyb3dlcik7CiAgICAgICAgICAgICBnZXR0ZXJTZXR0ZXItPnNldFNldHRlcihp
bml0LnZtLCBpbml0Lm93bmVyLCB0aHJvd2VyKTsKQEAgLTU4MSw4ICs1ODEsOCBAQCBtXyAjIyBw
cm9wZXJOYW1lICMjIFN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIGluc3RhbmNlVHlwZTo6Y3JlYXRl
U3RydWN0dXJlKHZtLCB0aAogICAgIE9iamVjdENvbnN0cnVjdG9yKiBvYmplY3RDb25zdHJ1Y3Rv
ciA9IE9iamVjdENvbnN0cnVjdG9yOjpjcmVhdGUodm0sIHRoaXMsIE9iamVjdENvbnN0cnVjdG9y
OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBt
X29iamVjdFByb3RvdHlwZS5nZXQoKSk7CiAgICAgbV9vYmplY3RDb25zdHJ1Y3Rvci5zZXQodm0s
IHRoaXMsIG9iamVjdENvbnN0cnVjdG9yKTsKIAotICAgIEpTRnVuY3Rpb24qIGRlZmluZVByb3Bl
cnR5RnVuY3Rpb24gPSBtX29iamVjdENvbnN0cnVjdG9yLT5hZGREZWZpbmVQcm9wZXJ0eShleGVj
LCB0aGlzKTsKLSAgICBtX2RlZmluZVByb3BlcnR5RnVuY3Rpb24uc2V0KHZtLCB0aGlzLCBkZWZp
bmVQcm9wZXJ0eUZ1bmN0aW9uKTsKKyAgICBKU0Z1bmN0aW9uKiB0aHJvd1R5cGVFcnJvckZ1bmN0
aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJpbmcoKSwgZ2xvYmFsRnVu
Y1Rocm93VHlwZUVycm9yKTsKKyAgICBtX3Rocm93VHlwZUVycm9yRnVuY3Rpb24uc2V0KHZtLCB0
aGlzLCB0aHJvd1R5cGVFcnJvckZ1bmN0aW9uKTsKIAogICAgIEpTQ2VsbCogZnVuY3Rpb25Db25z
dHJ1Y3RvciA9IEZ1bmN0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgRnVuY3Rpb25Db25zdHJ1
Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgp
KSwgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSk7CiAgICAgQXJyYXlDb25zdHJ1Y3RvciogYXJy
YXlDb25zdHJ1Y3RvciA9IEFycmF5Q29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgdGhpcywgQXJyYXlD
b25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBl
LmdldCgpKSwgbV9hcnJheVByb3RvdHlwZS5nZXQoKSwgbV9zcGVjaWVzR2V0dGVyU2V0dGVyLmdl
dCgpKTsKQEAgLTgwMyw3ICs4MDMsNyBAQCBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwg
dm0ucHJvcGVydHlOYW1lcy0+IGpzTmFtZSwgbG93ZXJOYW1lICMjIENvbnN0cnVjdAogICAgIG1f
c3BlY2lhbFBvaW50ZXJzW1NwZWNpYWw6Ok9iamVjdENvbnN0cnVjdG9yXSA9IG9iamVjdENvbnN0
cnVjdG9yOwogICAgIG1fc3BlY2lhbFBvaW50ZXJzW1NwZWNpYWw6OkFycmF5Q29uc3RydWN0b3Jd
ID0gYXJyYXlDb25zdHJ1Y3RvcjsKIAotICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OkRlZmluZVByb3BlcnR5RnVuY3Rpb24pXSA9
IG1fZGVmaW5lUHJvcGVydHlGdW5jdGlvbi5nZXQoKTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRz
W3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpUaHJvd1R5cGVFcnJvckZ1
bmN0aW9uKV0gPSBtX3Rocm93VHlwZUVycm9yRnVuY3Rpb24uZ2V0KCk7CiAKICAgICBpZiAoVU5M
SUtFTFkoT3B0aW9uczo6dXNlRG9sbGFyVk0oKSkpIHsKICAgICAgICAgSlNEb2xsYXJWTVByb3Rv
dHlwZSogZG9sbGFyVk1Qcm90b3R5cGUgPSBKU0RvbGxhclZNUHJvdG90eXBlOjpjcmVhdGUodm0s
IHRoaXMsIEpTRG9sbGFyVk1Qcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9v
YmplY3RQcm90b3R5cGUuZ2V0KCkpKTsKQEAgLTEwNjYsNyArMTA2Niw3IEBAIHZvaWQgSlNHbG9i
YWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRv
cikKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9ldmFsRnVuY3Rpb24pOwogICAg
IHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2NhbGxGdW5jdGlvbik7CiAgICAgdmlzaXRv
ci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fYXBwbHlGdW5jdGlvbik7Ci0gICAgdmlzaXRvci5hcHBl
bmQoJnRoaXNPYmplY3QtPm1fZGVmaW5lUHJvcGVydHlGdW5jdGlvbik7CisgICAgdmlzaXRvci5h
cHBlbmQoJnRoaXNPYmplY3QtPm1fdGhyb3dUeXBlRXJyb3JGdW5jdGlvbik7CiAgICAgdGhpc09i
amVjdC0+bV9hcnJheVByb3RvVG9TdHJpbmdGdW5jdGlvbi52aXNpdCh2aXNpdG9yKTsKICAgICB0
aGlzT2JqZWN0LT5tX2FycmF5UHJvdG9WYWx1ZXNGdW5jdGlvbi52aXNpdCh2aXNpdG9yKTsKICAg
ICB0aGlzT2JqZWN0LT5tX2luaXRpYWxpemVQcm9taXNlRnVuY3Rpb24udmlzaXQodmlzaXRvcik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRl
eCAzNWNkMDVmZmQwZjcxNGRkYTRlNTFiZGVlMDg1ZmFkMjUwYjQwMDEzLi4wNWFiOWEwYzQyMGM1
YTM3MzI2ZTU3YzU4OWFjNGZhMThhMWU4YWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTIzNCw3ICsyMzQsNyBAQCBjbGFzcyBKU0ds
b2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBXcml0
ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9ldmFsRnVuY3Rpb247CiAgICAgV3JpdGVCYXJyaWVyPEpT
RnVuY3Rpb24+IG1fY2FsbEZ1bmN0aW9uOwogICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBt
X2FwcGx5RnVuY3Rpb247Ci0gICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1fZGVmaW5lUHJv
cGVydHlGdW5jdGlvbjsKKyAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV90aHJvd1R5cGVF
cnJvckZ1bmN0aW9uOwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgSlNGdW5jdGlv
bj4gbV9hcnJheVByb3RvVG9TdHJpbmdGdW5jdGlvbjsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9i
YWxPYmplY3QsIEpTRnVuY3Rpb24+IG1fYXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uOwogICAgIExh
enlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgSlNGdW5jdGlvbj4gbV9pbml0aWFsaXplUHJvbWlz
ZUZ1bmN0aW9uOwpAQCAtNDc5LDcgKzQ3OSw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVi
bGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIEpTRnVuY3Rpb24qIGV2YWxGdW5j
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZXZhbEZ1bmN0aW9uLmdldCgpOyB9CiAgICAgSlNGdW5j
dGlvbiogY2FsbEZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jYWxsRnVuY3Rpb24uZ2V0KCk7
IH0KICAgICBKU0Z1bmN0aW9uKiBhcHBseUZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9hcHBs
eUZ1bmN0aW9uLmdldCgpOyB9Ci0gICAgSlNGdW5jdGlvbiogZGVmaW5lUHJvcGVydHlGdW5jdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fZGVmaW5lUHJvcGVydHlGdW5jdGlvbi5nZXQoKTsgfQorICAg
IEpTRnVuY3Rpb24qIHRocm93VHlwZUVycm9yRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3Ro
cm93VHlwZUVycm9yRnVuY3Rpb24uZ2V0KCk7IH0KICAgICBKU0Z1bmN0aW9uKiBhcnJheVByb3Rv
VG9TdHJpbmdGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYXJyYXlQcm90b1RvU3RyaW5nRnVu
Y3Rpb24uZ2V0KHRoaXMpOyB9CiAgICAgSlNGdW5jdGlvbiogYXJyYXlQcm90b1ZhbHVlc0Z1bmN0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9hcnJheVByb3RvVmFsdWVzRnVuY3Rpb24uZ2V0KHRoaXMp
OyB9CiAgICAgSlNGdW5jdGlvbiogaW5pdGlhbGl6ZVByb21pc2VGdW5jdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1faW5pdGlhbGl6ZVByb21pc2VGdW5jdGlvbi5nZXQodGhpcyk7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAppbmRl
eCBkOTkxNDlhYTQxYzYxMmE2MmE2ZDkyZTkyNGE2Yzg0OGI1MTZjZmNkLi45M2FjY2MxMTlmYTg3
ODA2OGJkZjBmMWNiZGU4YTU3MWY5Njc2YzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCkBAIC0xMDcsMTQgKzEwNyw2IEBA
IHZvaWQgT2JqZWN0Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgT2JqCiAgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VU
X1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2V0T3duUHJvcGVy
dHlOYW1lc1ByaXZhdGVOYW1lKCksIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlOYW1l
cywgRG9udEVudW0sIDEpOwogfQogCi1KU0Z1bmN0aW9uKiBPYmplY3RDb25zdHJ1Y3Rvcjo6YWRk
RGVmaW5lUHJvcGVydHkoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0KQotewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgSlNGdW5jdGlvbiogZGVmaW5l
UHJvcGVydHlGdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAz
LCB2bS5wcm9wZXJ0eU5hbWVzLT5kZWZpbmVQcm9wZXJ0eS5zdHJpbmcoKSwgb2JqZWN0Q29uc3Ry
dWN0b3JEZWZpbmVQcm9wZXJ0eSk7Ci0gICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0s
IHZtLnByb3BlcnR5TmFtZXMtPmRlZmluZVByb3BlcnR5LCBkZWZpbmVQcm9wZXJ0eUZ1bmN0aW9u
LCBEb250RW51bSk7Ci0gICAgcmV0dXJuIGRlZmluZVByb3BlcnR5RnVuY3Rpb247Ci19Ci0KIC8v
IEVTIDE5LjEuMS4xIE9iamVjdChbdmFsdWVdKQogc3RhdGljIEFMV0FZU19JTkxJTkUgSlNPYmpl
Y3QqIGNvbnN0cnVjdE9iamVjdChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgbmV3VGFyZ2V0KQog
ewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3Ry
dWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9y
LmgKaW5kZXggYjE2MTRkYWJkYjM4NWM3Y2Q2ZTJmMmQ1Y2RkNjg3MWU3OTdkNDE4Yy4uMmFhYTgx
NTQyNTJiOTcxYjZlNzI4ZmE2ZDAwMTk5NDQwNDRiZDkxOCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5oCkBAIC01NCw4ICs1NCw2IEBA
IGNsYXNzIE9iamVjdENvbnN0cnVjdG9yIDogcHVibGljIEludGVybmFsRnVuY3Rpb24gewogICAg
ICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBl
LCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiAgICAgfQog
Ci0gICAgSlNGdW5jdGlvbiogYWRkRGVmaW5lUHJvcGVydHkoRXhlY1N0YXRlKiwgSlNHbG9iYWxP
YmplY3QqKTsKLQogcHJvdGVjdGVkOgogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU0ds
b2JhbE9iamVjdCosIE9iamVjdFByb3RvdHlwZSopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eURlc2NyaXB0b3IuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5oCmluZGV4IGFhNjFlZWE0OTVjNGQx
YzlkNWEwZjgyNDc5ZDMyNDUzNjY1NWEzNjUuLmVlOTcxZjU1MDM2NzY3MzIwOTc5OWU4MTllNWQ0
MzAxZGQ1ODQ0ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1By
b3BlcnR5RGVzY3JpcHRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1By
b3BlcnR5RGVzY3JpcHRvci5oCkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIFByb3BlcnR5RGVz
Y3JpcHRvcl9oCiAjZGVmaW5lIFByb3BlcnR5RGVzY3JpcHRvcl9oCiAKKyNpbmNsdWRlICJEZWZp
bmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAKIG5hbWVz
cGFjZSBKU0MgewpAQCAtOTMsNiArOTQsMzIgQEAgY2xhc3MgUHJvcGVydHlEZXNjcmlwdG9yIHsK
ICAgICB1bnNpZ25lZCBtX3NlZW5BdHRyaWJ1dGVzOwogfTsKIAoraW5saW5lIFByb3BlcnR5RGVz
Y3JpcHRvciB0b1Byb3BlcnR5RGVzY3JpcHRvcihKU1ZhbHVlIHZhbHVlLCBKU1ZhbHVlIGdldHRl
ciwgSlNWYWx1ZSBzZXR0ZXIsIERlZmluZVByb3BlcnR5QXR0cmlidXRlcyBhdHRyaWJ1dGVzKQor
eworICAgIC8vIFdlIGFzc3VtZSB0aGF0IHZhbGlkYXRpb24gaXMgYWxyZWFkeSBkb25lLgorICAg
IFByb3BlcnR5RGVzY3JpcHRvciBkZXNjOworCisgICAgaWYgKGF0dHJpYnV0ZXMuZW51bWVyYWJs
ZSgpICE9IE1peGVkVHJpU3RhdGUpCisgICAgICAgIGRlc2Muc2V0RW51bWVyYWJsZShhdHRyaWJ1
dGVzLmVudW1lcmFibGUoKSk7CisKKyAgICBpZiAoYXR0cmlidXRlcy5jb25maWd1cmFibGUoKSAh
PSBNaXhlZFRyaVN0YXRlKQorICAgICAgICBkZXNjLnNldENvbmZpZ3VyYWJsZShhdHRyaWJ1dGVz
LmNvbmZpZ3VyYWJsZSgpKTsKKworICAgIGlmIChhdHRyaWJ1dGVzLmhhc1ZhbHVlKCkpCisgICAg
ICAgIGRlc2Muc2V0VmFsdWUodmFsdWUpOworCisgICAgaWYgKGF0dHJpYnV0ZXMud3JpdGFibGUo
KSAhPSBNaXhlZFRyaVN0YXRlKQorICAgICAgICBkZXNjLnNldFdyaXRhYmxlKGF0dHJpYnV0ZXMu
d3JpdGFibGUoKSk7CisKKyAgICBpZiAoYXR0cmlidXRlcy5oYXNHZXQoKSkKKyAgICAgICAgZGVz
Yy5zZXRHZXR0ZXIoZ2V0dGVyKTsKKworICAgIGlmIChhdHRyaWJ1dGVzLmhhc1NldCgpKQorICAg
ICAgICBkZXNjLnNldFNldHRlcihzZXR0ZXIpOworCisgICAgcmV0dXJuIGRlc2M7Cit9CisKIH0K
IAogI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>289870</attachid>
            <date>2016-09-26 14:32:22 -0700</date>
            <delta_ts>2016-09-26 14:47:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162108-20160926142925.patch</filename>
            <type>text/plain</type>
            <size>86882</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA2Mzc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
ZmFjYTk1OGQ0YzdiMWViMWE1MjFiYjEwNjQwNDMxZTQ4NjVjOTRkLi5lZDM2YWQ3OGE5ZDY0ZDQ3
YzMyNDI3ZDAxZTExZTI0OTZjNTFlM2YwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEg
KzEsMTA0IEBACisyMDE2LTA5LTI2ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwu
Y29tPgorCisgICAgICAgIFtKU0NdIEFkZCBhIG5ldyBieXRlIGNvZGUgb3BfZGVmaW5lX3Byb3Bl
cnR5IGluc3RlYWQgb2YgY2FsbGluZyBkZWZpbmVQcm9wZXJ0eQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyMTA4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uOgor
ICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmg6CisgICAgICAgIChKU0M6OmNvbXB1
dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpjb21wdXRlRGVmc0ZvckJ5
dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAg
ICAoSlNDOjpDb2RlQmxvY2s6OmR1bXBCeXRlY29kZSk6CisgICAgICAgICogYnl0ZWNvZGUvU3Bl
Y2lhbFBvaW50ZXIuaDoKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
Y3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE1vdmVMaW5rVGltZUNv
bnN0YW50KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxsRGVmaW5l
UHJvcGVydHkpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgor
ICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpQ
cm9wZXJ0eUxpc3ROb2RlOjplbWl0UHV0Q29uc3RhbnRQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6
OkJpdHdpc2VOb3ROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpDbGFzc0V4cHJO
b2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpPYmplY3RQYXR0ZXJuTm9kZTo6Ymlu
ZFZhbHVlKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoK
KyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBl
Pjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAg
ICAqIGRmZy9ERkdDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNhcGFiaWxp
dHlMZXZlbCk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6
REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAqIGRmZy9E
RkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAg
KiBkZmcvREZHT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFn
YXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAg
ICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRp
dmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FsbE9wZXJhdGlv
bik6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3Bl
Y3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlND
OjpGVEw6OmNhbkNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgor
ICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTm9kZSk6CisgICAg
ICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVEZWZpbmVEYXRhUHJvcGVy
dHkpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlRGVmaW5l
QWNjZXNzb3JQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6
OmNvbXBpbGVQdXRCeVZhbFdpdGhUaGlzKTogRGVsZXRlZC4KKyAgICAgICAgKiBqaXQvQ0NhbGxI
ZWxwZXJzLmNwcDoKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpzZXR1cEZvdXJTdHViQXJn
c0dQUik6IERlbGV0ZWQuCisgICAgICAgICogaml0L0NDYWxsSGVscGVycy5oOgorICAgICAgICAo
SlNDOjpDQ2FsbEhlbHBlcnM6OnNldHVwRm91clN0dWJBcmdzR1BSKToKKyAgICAgICAgKEpTQzo6
Q0NhbGxIZWxwZXJzOjpzZXR1cEZpdmVTdHViQXJnc0dQUik6CisgICAgICAgIChKU0M6OkNDYWxs
SGVscGVyczo6c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKToKKyAgICAgICAgKEpTQzo6Q0Nh
bGxIZWxwZXJzOjpzZXR1cFN0dWJBcmdzR1BSKToKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJz
OjpwcmVwYXJlRm9yVGFpbENhbGxTbG93KTogRGVsZXRlZC4KKyAgICAgICAgKiBqaXQvSklULmNw
cDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAgICAgICAg
KiBqaXQvSklULmg6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBq
aXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZGVm
aW5lX2RhdGFfcHJvcGVydHkpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZGVmaW5lX2Fj
Y2Vzc29yX3Byb3BlcnR5KToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFz
bToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6
OlNMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5oOgor
ICAgICAgICAqIHJ1bnRpbWUvRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzLmg6IEFkZGVkLgorICAg
ICAgICAoSlNDOjpEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXM6OkRlZmluZVByb3BlcnR5QXR0cmli
dXRlcyk6CisgICAgICAgIChKU0M6OkRlZmluZVByb3BlcnR5QXR0cmlidXRlczo6cmF3UmVwcmVz
ZW50YXRpb24pOgorICAgICAgICAoSlNDOjpEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXM6Omhhc1Zh
bHVlKToKKyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzOjpzZXRWYWx1ZSk6
CisgICAgICAgIChKU0M6OkRlZmluZVByb3BlcnR5QXR0cmlidXRlczo6aGFzR2V0KToKKyAgICAg
ICAgKEpTQzo6RGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzOjpzZXRHZXQpOgorICAgICAgICAoSlND
OjpEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXM6Omhhc1NldCk6CisgICAgICAgIChKU0M6OkRlZmlu
ZVByb3BlcnR5QXR0cmlidXRlczo6c2V0U2V0KToKKyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVy
dHlBdHRyaWJ1dGVzOjp3cml0YWJsZSk6CisgICAgICAgIChKU0M6OkRlZmluZVByb3BlcnR5QXR0
cmlidXRlczo6Y29uZmlndXJhYmxlKToKKyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVydHlBdHRy
aWJ1dGVzOjplbnVtZXJhYmxlKToKKyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVydHlBdHRyaWJ1
dGVzOjpzZXRXcml0YWJsZSk6CisgICAgICAgIChKU0M6OkRlZmluZVByb3BlcnR5QXR0cmlidXRl
czo6c2V0Q29uZmlndXJhYmxlKToKKyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVydHlBdHRyaWJ1
dGVzOjpzZXRFbnVtZXJhYmxlKToKKyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVydHlBdHRyaWJ1
dGVzOjpmaWxsV2l0aFRyaVN0YXRlKToKKyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVydHlBdHRy
aWJ1dGVzOjpleHRyYWN0VHJpU3RhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgIChK
U0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0pT
R2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp0aHJvd1R5cGVF
cnJvckZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmRlZmluZVByb3Bl
cnR5RnVuY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0
b3IuY3BwOgorICAgICAgICAoSlNDOjpPYmplY3RDb25zdHJ1Y3Rvcjo6YWRkRGVmaW5lUHJvcGVy
dHkpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuaDoKKyAg
ICAgICAgKiBydW50aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5oOgorICAgICAgICAoSlNDOjp0b1By
b3BlcnR5RGVzY3JpcHRvcik6CisKID09IFJvbGxlZCBvdmVyIHRvIENoYW5nZUxvZy0yMDE2LTA5
LTI2ID09CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGY3MzRmOTE2MjNmYTQzZGQ1
NGE2YTA4Njg5MmE5YWFmYjUxODE1MzUuLjlkZjU1ZTc2MjBmMGY1Mjc0ZDQ1MDM3M2M3YTExZDc0
Mjc3ZmRmOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMTY4LDYgKzIxNjgs
NyBAQAogCQlGRUQ5NEYyRjE3MUUzRTIzMDBCRTc3QTQgLyogV2F0Y2hkb2cuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFRDk0RjJDMTcxRTNFMjMwMEJF
NzdBNCAvKiBXYXRjaGRvZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUZFRjA0MDUxMUFBRTY2MkQwMEJEMjhCMCAvKiBDb21wYXJlQW5kU3dhcFRl
c3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVG
MDQwNTAxQUFFNjYyRDAwQkQyOEIwIC8qIENvbXBhcmVBbmRTd2FwVGVzdC5jcHAgKi87IH07CiAJ
CUZFRkQ2RkM2MUQ1RTc5OTIwMDhGMkYwQiAvKiBKU1N0cmluZ0lubGluZXMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFRkQ2RkM1MUQ1RTc5NzAwMDhG
MkYwQiAvKiBKU1N0cmluZ0lubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQk0NzNEQTRBNDc2NEM0NUZFODcxQjA0ODUgLyogRGVmaW5lUHJv
cGVydHlBdHRyaWJ1dGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxNjk5NDhFREU2OEQ0MDU0QjAxRUY3OTcgLyogRGVmaW5lUHJvcGVydHlBdHRyaWJ1
dGVzLmggKi87IH07CiAvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4g
UEJYQ29udGFpbmVySXRlbVByb3h5IHNlY3Rpb24gKi8KQEAgLTQ0OTgsNiArNDQ5OSw3IEBACiAJ
CUZFRjA0MDUwMUFBRTY2MkQwMEJEMjhCMCAvKiBDb21wYXJlQW5kU3dhcFRlc3QuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQ29tcGFyZUFuZFN3YXBUZXN0LmNwcDsg
cGF0aCA9IEFQSS90ZXN0cy9Db21wYXJlQW5kU3dhcFRlc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlGRUYwNDA1MjFBQUVDNEVEMDBCRDI4QjAgLyogQ29tcGFyZUFuZFN3YXBU
ZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IENvbXBhcmVBbmRTd2FwVGVz
dC5oOyBwYXRoID0gQVBJL3Rlc3RzL0NvbXBhcmVBbmRTd2FwVGVzdC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlGRUZENkZDNTFENUU3OTcwMDA4RjJGMEIgLyogSlNTdHJpbmdJbmxp
bmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU3RyaW5nSW5saW5lcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNjk5NDhFREU2OEQ0MDU0QjAxRUY3OTcg
LyogRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IERlZmluZVByb3BlcnR5QXR0cmlidXRlcy5oOyBwYXRoID0gRGVmaW5lUHJvcGVydHlB
dHRyaWJ1dGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAvKiBFbmQgUEJYRmlsZVJl
ZmVyZW5jZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlIHNl
Y3Rpb24gKi8KQEAgLTYyNDEsNiArNjI0Myw3IEBACiAJCQkJNzA5RkI4NjYxQUUzMzVDNjAwMzlE
MDY5IC8qIFdlYWtTZXRQcm90b3R5cGUuaCAqLywKIAkJCQlBN0RDQjc3OTEyRTNEOTA1MDA5MTE5
NDAgLyogV3JpdGVCYXJyaWVyLmggKi8sCiAJCQkJQzJCNkQ3NTIxOEEzMzc5MzAwNEE5MzAxIC8q
IFdyaXRlQmFycmllcklubGluZXMuaCAqLywKKwkJCQkxNjk5NDhFREU2OEQ0MDU0QjAxRUY3OTcg
LyogRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IHJ1bnRp
bWU7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtODM3Niw2ICs4Mzc5LDcgQEAKIAkJ
CQk4NjcwNEI0MzEyREI4QTgxMDBBOUZFN0IgLyogWWFyclN5bnRheENoZWNrZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE3OUQzRUQ5QzUwNjRERDBBODQ2NkEzQSAvKiBNb2R1bGVTY29wZURhdGEu
aCBpbiBIZWFkZXJzICovLAogCQkJCUQ5NzIyNzUyREM1NDQ1OUI5MTI1QjUzOSAvKiBKU01vZHVs
ZUxvYWRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDczREE0QTQ3NjRDNDVGRTg3MUIwNDg1IC8q
IERlZmluZVByb3BlcnR5QXR0cmlidXRlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVu
T25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24gYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KaW5kZXggZGM1OTk4MDU2
OTFjZGE1N2I1ZDM2MTE1OTlkZDVmMjhkNzEwMmRiZS4uNTc2ZGU0MDA2MDRkMTAxNDc1MWNjNjNi
ZWFjZWM3N2E1NWZkNGZmNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlTGlzdC5qc29uCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUxpc3QuanNvbgpAQCAtODEsNiArODEsOCBAQAogICAgICAgICAgICAgeyAibmFt
ZSIgOiAib3BfcHV0X2dldHRlcl9zZXR0ZXJfYnlfaWQiLCAibGVuZ3RoIiA6IDYgfSwKICAgICAg
ICAgICAgIHsgIm5hbWUiIDogIm9wX3B1dF9nZXR0ZXJfYnlfdmFsIiwgImxlbmd0aCIgOiA1IH0s
CiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9wdXRfc2V0dGVyX2J5X3ZhbCIsICJsZW5ndGgi
IDogNSB9LAorICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfZGVmaW5lX2RhdGFfcHJvcGVydHki
LCAibGVuZ3RoIiA6IDUgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2RlZmluZV9hY2Nl
c3Nvcl9wcm9wZXJ0eSIsICJsZW5ndGgiIDogNiB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAi
b3Bfam1wIiwgImxlbmd0aCIgOiAyIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9qdHJ1
ZSIsICJsZW5ndGgiIDogMyB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfamZhbHNlIiwg
Imxlbmd0aCIgOiAzIH0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVVc2VEZWYuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZVVzZURlZi5oCmluZGV4IGRhYmNlNGVkZjAzMjY0OGMwODk2ODk5ODJhODgxN2VjNjAwYTgx
N2UuLjQ1YTllMDljYmQ4MmVmNjg5ZDNiMzRmOGVlNTBlMTFlYjk1YTM3NjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCkBAIC0xNDQsNiAr
MTQ0LDIzIEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChCbG9jayogY29kZUJs
b2NrLCBPcGNvZGVJRCBvcGNvZGVJRCwgSW5zdHJ1Y3RpCiAgICAgICAgIGZ1bmN0b3IoY29kZUJs
b2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzRdLnUub3BlcmFuZCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CisgICAgY2FzZSBvcF9kZWZpbmVfZGF0YV9wcm9wZXJ0eTog
eworICAgICAgICBBU1NFUlQob3Bjb2RlTGVuZ3Roc1tvcGNvZGVJRF0gPiA0KTsKKyAgICAgICAg
ZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25bMV0u
dS5vcGVyYW5kKTsKKyAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNv
ZGVJRCwgaW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsKKyAgICAgICAgZnVuY3Rvcihjb2RlQmxv
Y2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKTsKKyAg
ICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rp
b25bNF0udS5vcGVyYW5kKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBjYXNlIG9wX2Rl
ZmluZV9hY2Nlc3Nvcl9wcm9wZXJ0eTogeworICAgICAgICBBU1NFUlQob3Bjb2RlTGVuZ3Roc1tv
cGNvZGVJRF0gPiA1KTsKKyAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBv
cGNvZGVJRCwgaW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKKyAgICAgICAgZnVuY3Rvcihjb2Rl
QmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsK
KyAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1
Y3Rpb25bM10udS5vcGVyYW5kKTsKKyAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0
aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kKTsKKyAgICAgICAgZnVuY3Rv
cihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25bNV0udS5vcGVy
YW5kKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICAgICBjYXNlIG9wX2dldF9wcm9wZXJ0eV9l
bnVtZXJhdG9yOgogICAgIGNhc2Ugb3BfZ2V0X2VudW1lcmFibGVfbGVuZ3RoOgogICAgIGNhc2Ug
b3BfbmV3X2Z1bmNfZXhwOgpAQCAtMzMyLDYgKzM0OSw4IEBAIHZvaWQgY29tcHV0ZURlZnNGb3JC
eXRlY29kZU9mZnNldChCbG9jayogY29kZUJsb2NrLCBPcGNvZGVJRCBvcGNvZGVJRCwgSW5zdHJ1
Y3RpCiAgICAgY2FzZSBvcF9wdXRfYnlfdmFsOgogICAgIGNhc2Ugb3BfcHV0X2J5X3ZhbF9kaXJl
Y3Q6CiAgICAgY2FzZSBvcF9wdXRfYnlfaW5kZXg6CisgICAgY2FzZSBvcF9kZWZpbmVfZGF0YV9w
cm9wZXJ0eToKKyAgICBjYXNlIG9wX2RlZmluZV9hY2Nlc3Nvcl9wcm9wZXJ0eToKICAgICBjYXNl
IG9wX3Byb2ZpbGVfdHlwZToKICAgICBjYXNlIG9wX3Byb2ZpbGVfY29udHJvbF9mbG93OgogICAg
IGNhc2Ugb3BfcHV0X3RvX2FyZ3VtZW50czoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5jcHAKaW5kZXggZjAwZDk4YzMwNjlmMTMwZWI5MDI4Y2I3M2VlYTAxYWQ4
MDcyNTJkNS4uOGFhOTk3NTkyNjVmNDJmMTcxNWE4NDc3MjM0OTRlMWRiOTNhYTU0OSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTEyMzMsNiAr
MTIzMywyNSBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKAogICAgICAgICAgICAgb3V0
LnByaW50ZigiJXMsICVzLCAlZCwgJXMiLCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgcmVnaXN0
ZXJOYW1lKHIxKS5kYXRhKCksIG4wLCByZWdpc3Rlck5hbWUocjIpLmRhdGEoKSk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBjYXNlIG9wX2RlZmluZV9kYXRhX3Byb3Bl
cnR5OiB7CisgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAg
ICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgaW50IHIyID0gKCsr
aXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBpbnQgcjMgPSAoKytpdCktPnUub3BlcmFuZDsK
KyAgICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwg
ImRlZmluZV9kYXRhX3Byb3BlcnR5Iik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMs
ICVzLCAlcyIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjEpLmRhdGEo
KSwgcmVnaXN0ZXJOYW1lKHIyKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMykuZGF0YSgpKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2Ugb3BfZGVmaW5lX2FjY2Vz
c29yX3Byb3BlcnR5OiB7CisgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsK
KyAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgaW50
IHIyID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBpbnQgcjMgPSAoKytpdCktPnUu
b3BlcmFuZDsKKyAgICAgICAgICAgIGludCByNCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAg
ICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAiZGVmaW5l
X2FjY2Vzc29yX3Byb3BlcnR5Iik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsICVz
LCAlcywgJXMiLCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRh
KCksIHJlZ2lzdGVyTmFtZShyMikuZGF0YSgpLCByZWdpc3Rlck5hbWUocjMpLmRhdGEoKSwgcmVn
aXN0ZXJOYW1lKHI0KS5kYXRhKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAg
ICAgICAgY2FzZSBvcF9kZWxfYnlfaWQ6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+
dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY2lhbFBvaW50ZXIuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjaWFsUG9pbnRlci5oCmluZGV4IDY0
ZmIyM2ZjZjI3ZDQxMjUwNDgwMjE5ZThjOGM0MWI3YzQxYTdlZjUuLjkwY2IzYTk5MjZkNjJlNjA0
YjE4YzNiM2RiZDU1MjJiNDUyYWVkZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9TcGVjaWFsUG9pbnRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9TcGVjaWFsUG9pbnRlci5oCkBAIC00Miw3ICs0Miw3IEBAIGVudW0gUG9pbnRlciB7
CiB9IC8vIG5hbWVzcGFjZSBTcGVjaWFsCiAKIGVudW0gY2xhc3MgTGlua1RpbWVDb25zdGFudCB7
Ci0gICAgRGVmaW5lUHJvcGVydHlGdW5jdGlvbiwKKyAgICBUaHJvd1R5cGVFcnJvckZ1bmN0aW9u
LAogfTsKIGNvbnN0IHVuc2lnbmVkIExpbmtUaW1lQ29uc3RhbnRDb3VudCA9IDE7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5jcHAKaW5kZXggY2M3MTcyM2VmM2MwZjVkNGJiM2NjZGVjYjhiYTk3NjI3MjNkMzJmZS4u
YjBjM2NjZDVhY2IyNTU2MTg4ZDkyODIyMjVhNTc0YjFmMDQ3MmMyMyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5j
cHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJCdWlsdGluRXhlY3V0YWJsZXMuaCIKICNp
bmNsdWRlICJCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oIgogI2luY2x1ZGUgIkJ5dGVjb2Rl
TGl2ZW5lc3NBbmFseXNpcy5oIgorI2luY2x1ZGUgIkRlZmluZVByb3BlcnR5QXR0cmlidXRlcy5o
IgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2lu
Y2x1ZGUgIkpTR2VuZXJhdG9yRnVuY3Rpb24uaCIKQEAgLTE1NDMsNiArMTU0NCw5IEBAIFJlZ2lz
dGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TW92ZUxpbmtUaW1lQ29uc3RhbnQoUmVnaXN0
ZXJJRCogZHN0LCBMaW5rVGltCiAgICAgICAgIG1fbGlua1RpbWVDb25zdGFudFJlZ2lzdGVyc1tj
b25zdGFudEluZGV4XSA9ICZtX2NvbnN0YW50UG9vbFJlZ2lzdGVyc1tpbmRleF07CiAgICAgfQog
CisgICAgaWYgKCFkc3QpCisgICAgICAgIHJldHVybiBtX2xpbmtUaW1lQ29uc3RhbnRSZWdpc3Rl
cnNbY29uc3RhbnRJbmRleF07CisKICAgICBlbWl0T3Bjb2RlKG9wX21vdik7CiAgICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KG1fbGlua1RpbWVDb25zdGFudFJlZ2lzdGVyc1tjb25zdGFudEluZGV4XS0+aW5kZXgoKSk7CkBA
IC0zMjY4LDM4ICszMjcyLDU5IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRMb2dTaGFk
b3dDaGlja2VuVGFpbElmTmVjZXNzYXJ5KCkKIH0KIAogdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdENhbGxEZWZpbmVQcm9wZXJ0eShSZWdpc3RlcklEKiBuZXdPYmosIFJlZ2lzdGVySUQqIHBy
b3BlcnR5TmFtZVJlZ2lzdGVyLAotICAgIFJlZ2lzdGVySUQqIHZhbHVlUmVnaXN0ZXIsIFJlZ2lz
dGVySUQqIGdldHRlclJlZ2lzdGVyLCBSZWdpc3RlcklEKiBzZXR0ZXJSZWdpc3RlciwgdW5zaWdu
ZWQgb3B0aW9ucywgY29uc3QgSlNUZXh0UG9zaXRpb24mIHBvc2l0aW9uKQorICAgIFJlZ2lzdGVy
SUQqIHZhbHVlUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIGdldHRlclJlZ2lzdGVyLCBSZWdpc3RlcklE
KiBzZXR0ZXJSZWdpc3RlciwgdW5zaWduZWQgb3B0aW9ucykKIHsKLSAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gZGVzY3JpcHRvclJlZ2lzdGVyID0gZW1pdE5ld09iamVjdChuZXdUZW1wb3JhcnkoKSk7
Ci0KLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdHJ1ZVJlZ2lzdGVyID0gZW1pdExvYWQobmV3VGVt
cG9yYXJ5KCksIHRydWUpOworICAgIERlZmluZVByb3BlcnR5QXR0cmlidXRlcyBhdHRyaWJ1dGVz
OwogICAgIGlmIChvcHRpb25zICYgUHJvcGVydHlDb25maWd1cmFibGUpCi0gICAgICAgIGVtaXRE
aXJlY3RQdXRCeUlkKGRlc2NyaXB0b3JSZWdpc3Rlci5nZXQoKSwgcHJvcGVydHlOYW1lcygpLmNv
bmZpZ3VyYWJsZSwgdHJ1ZVJlZ2lzdGVyLmdldCgpLCBQcm9wZXJ0eU5vZGU6OlVua25vd24pOwor
ICAgICAgICBhdHRyaWJ1dGVzLnNldENvbmZpZ3VyYWJsZSh0cnVlKTsKKwogICAgIGlmIChvcHRp
b25zICYgUHJvcGVydHlXcml0YWJsZSkKLSAgICAgICAgZW1pdERpcmVjdFB1dEJ5SWQoZGVzY3Jp
cHRvclJlZ2lzdGVyLmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkud3JpdGFibGUsIHRydWVSZWdpc3Rl
ci5nZXQoKSwgUHJvcGVydHlOb2RlOjpVbmtub3duKTsKLSAgICBlbHNlIGlmICh2YWx1ZVJlZ2lz
dGVyKSB7Ci0gICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBmYWxzZVJlZ2lzdGVyID0gZW1pdExv
YWQobmV3VGVtcG9yYXJ5KCksIGZhbHNlKTsKLSAgICAgICAgZW1pdERpcmVjdFB1dEJ5SWQoZGVz
Y3JpcHRvclJlZ2lzdGVyLmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkud3JpdGFibGUsIGZhbHNlUmVn
aXN0ZXIuZ2V0KCksIFByb3BlcnR5Tm9kZTo6VW5rbm93bik7Ci0gICAgfQorICAgICAgICBhdHRy
aWJ1dGVzLnNldFdyaXRhYmxlKHRydWUpOworICAgIGVsc2UgaWYgKHZhbHVlUmVnaXN0ZXIpCisg
ICAgICAgIGF0dHJpYnV0ZXMuc2V0V3JpdGFibGUoZmFsc2UpOworCiAgICAgaWYgKG9wdGlvbnMg
JiBQcm9wZXJ0eUVudW1lcmFibGUpCi0gICAgICAgIGVtaXREaXJlY3RQdXRCeUlkKGRlc2NyaXB0
b3JSZWdpc3Rlci5nZXQoKSwgcHJvcGVydHlOYW1lcygpLmVudW1lcmFibGUsIHRydWVSZWdpc3Rl
ci5nZXQoKSwgUHJvcGVydHlOb2RlOjpVbmtub3duKTsKKyAgICAgICAgYXR0cmlidXRlcy5zZXRF
bnVtZXJhYmxlKHRydWUpOwogCiAgICAgaWYgKHZhbHVlUmVnaXN0ZXIpCi0gICAgICAgIGVtaXRE
aXJlY3RQdXRCeUlkKGRlc2NyaXB0b3JSZWdpc3Rlci5nZXQoKSwgcHJvcGVydHlOYW1lcygpLnZh
bHVlLCB2YWx1ZVJlZ2lzdGVyLCBQcm9wZXJ0eU5vZGU6OlVua25vd24pOworICAgICAgICBhdHRy
aWJ1dGVzLnNldFZhbHVlKCk7CiAgICAgaWYgKGdldHRlclJlZ2lzdGVyKQotICAgICAgICBlbWl0
RGlyZWN0UHV0QnlJZChkZXNjcmlwdG9yUmVnaXN0ZXIuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS5n
ZXQsIGdldHRlclJlZ2lzdGVyLCBQcm9wZXJ0eU5vZGU6OlVua25vd24pOworICAgICAgICBhdHRy
aWJ1dGVzLnNldEdldCgpOwogICAgIGlmIChzZXR0ZXJSZWdpc3RlcikKLSAgICAgICAgZW1pdERp
cmVjdFB1dEJ5SWQoZGVzY3JpcHRvclJlZ2lzdGVyLmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkuc2V0
LCBzZXR0ZXJSZWdpc3RlciwgUHJvcGVydHlOb2RlOjpVbmtub3duKTsKKyAgICAgICAgYXR0cmli
dXRlcy5zZXRTZXQoKTsKIAotICAgIFJlZlB0cjxSZWdpc3RlcklEPiBkZWZpbmVQcm9wZXJ0eVJl
Z2lzdGVyID0gZW1pdE1vdmVMaW5rVGltZUNvbnN0YW50KG5ld1RlbXBvcmFyeSgpLCBMaW5rVGlt
ZUNvbnN0YW50OjpEZWZpbmVQcm9wZXJ0eUZ1bmN0aW9uKTsKKyAgICBBU1NFUlQoIXZhbHVlUmVn
aXN0ZXIgfHwgKCFnZXR0ZXJSZWdpc3RlciAmJiAhc2V0dGVyUmVnaXN0ZXIpKTsKIAotICAgIENh
bGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cygqdGhpcywgbnVsbHB0ciwgMyk7Ci0gICAgZW1pdExv
YWQoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwganNVbmRlZmluZWQoKSk7Ci0gICAgZW1p
dE1vdmUoY2FsbEFyZ3VtZW50cy5hcmd1bWVudFJlZ2lzdGVyKDApLCBuZXdPYmopOwotICAgIGVt
aXRNb3ZlKGNhbGxBcmd1bWVudHMuYXJndW1lbnRSZWdpc3RlcigxKSwgcHJvcGVydHlOYW1lUmVn
aXN0ZXIpOwotICAgIGVtaXRNb3ZlKGNhbGxBcmd1bWVudHMuYXJndW1lbnRSZWdpc3RlcigyKSwg
ZGVzY3JpcHRvclJlZ2lzdGVyLmdldCgpKTsKKyAgICBpZiAoYXR0cmlidXRlcy5oYXNHZXQoKSB8
fCBhdHRyaWJ1dGVzLmhhc1NldCgpKSB7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0aHJv
d1R5cGVFcnJvckZ1bmN0aW9uOworICAgICAgICBpZiAoIWF0dHJpYnV0ZXMuaGFzR2V0KCkgfHwg
IWF0dHJpYnV0ZXMuaGFzU2V0KCkpCisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvckZ1bmN0aW9u
ID0gZW1pdE1vdmVMaW5rVGltZUNvbnN0YW50KG51bGxwdHIsIExpbmtUaW1lQ29uc3RhbnQ6OlRo
cm93VHlwZUVycm9yRnVuY3Rpb24pOwogCi0gICAgZW1pdENhbGwobmV3VGVtcG9yYXJ5KCksIGRl
ZmluZVByb3BlcnR5UmVnaXN0ZXIuZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3Vt
ZW50cywgcG9zaXRpb24sIHBvc2l0aW9uLCBwb3NpdGlvbik7CisgICAgICAgIFJlZlB0cjxSZWdp
c3RlcklEPiBnZXR0ZXI7CisgICAgICAgIGlmIChhdHRyaWJ1dGVzLmhhc0dldCgpKQorICAgICAg
ICAgICAgZ2V0dGVyID0gZ2V0dGVyUmVnaXN0ZXI7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IGdldHRlciA9IHRocm93VHlwZUVycm9yRnVuY3Rpb247CisKKyAgICAgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IHNldHRlcjsKKyAgICAgICAgaWYgKGF0dHJpYnV0ZXMuaGFzU2V0KCkpCisgICAgICAg
ICAgICBzZXR0ZXIgPSBzZXR0ZXJSZWdpc3RlcjsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
c2V0dGVyID0gdGhyb3dUeXBlRXJyb3JGdW5jdGlvbjsKKworICAgICAgICBlbWl0T3Bjb2RlKG9w
X2RlZmluZV9hY2Nlc3Nvcl9wcm9wZXJ0eSk7CisgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVu
ZChuZXdPYmotPmluZGV4KCkpOworICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQocHJvcGVy
dHlOYW1lUmVnaXN0ZXItPmluZGV4KCkpOworICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
Z2V0dGVyLT5pbmRleCgpKTsKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHNldHRlci0+
aW5kZXgoKSk7CisgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChlbWl0TG9hZChudWxscHRy
LCBqc051bWJlcihhdHRyaWJ1dGVzLnJhd1JlcHJlc2VudGF0aW9uKCkpKS0+aW5kZXgoKSk7Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgZW1pdE9wY29kZShvcF9kZWZpbmVfZGF0YV9wcm9wZXJ0eSk7
CisgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChuZXdPYmotPmluZGV4KCkpOworICAgICAg
ICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQocHJvcGVydHlOYW1lUmVnaXN0ZXItPmluZGV4KCkpOwor
ICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQodmFsdWVSZWdpc3Rlci0+aW5kZXgoKSk7Cisg
ICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChlbWl0TG9hZChudWxscHRyLCBqc051bWJlcihh
dHRyaWJ1dGVzLnJhd1JlcHJlc2VudGF0aW9uKCkpKS0+aW5kZXgoKSk7CisgICAgfQogfQogCiBS
ZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJldHVybihSZWdpc3RlcklEKiBzcmMp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmgKaW5kZXggZDMyNjRjNGEwODc3YTM2MmU5MDRlMWY4MzZiYmQ0NTYwNDI5ZTBm
ZS4uOWU2Y2RiYTM2MjNlOTI2MjZjYzhmZDM5N2YwOWU3MTQzM2ZiMWNhZSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
aApAQCAtNTg4LDcgKzU4OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgUHJvcGVy
dHlFbnVtZXJhYmxlICAgPSAxIDw8IDIsCiAgICAgICAgIH07CiAgICAgICAgIHZvaWQgZW1pdENh
bGxEZWZpbmVQcm9wZXJ0eShSZWdpc3RlcklEKiBuZXdPYmosIFJlZ2lzdGVySUQqIHByb3BlcnR5
TmFtZVJlZ2lzdGVyLAotICAgICAgICAgICAgUmVnaXN0ZXJJRCogdmFsdWVSZWdpc3RlciwgUmVn
aXN0ZXJJRCogZ2V0dGVyUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIHNldHRlclJlZ2lzdGVyLCB1bnNp
Z25lZCBvcHRpb25zLCBjb25zdCBKU1RleHRQb3NpdGlvbiYpOworICAgICAgICAgICAgUmVnaXN0
ZXJJRCogdmFsdWVSZWdpc3RlciwgUmVnaXN0ZXJJRCogZ2V0dGVyUmVnaXN0ZXIsIFJlZ2lzdGVy
SUQqIHNldHRlclJlZ2lzdGVyLCB1bnNpZ25lZCBvcHRpb25zKTsKIAogICAgICAgICB2b2lkIGVt
aXRFbnVtZXJhdGlvbihUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogZW51bWVyYXRpb25Ob2RlLCBF
eHByZXNzaW9uTm9kZSogc3ViamVjdE5vZGUsIGNvbnN0IHN0ZDo6ZnVuY3Rpb248dm9pZChCeXRl
Y29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqKT4mIGNhbGxCYWNrLCBWYXJpYWJsZUVudmlyb25t
ZW50Tm9kZSogPSBudWxscHRyLCBSZWdpc3RlcklEKiBmb3JMb29wU3ltYm9sVGFibGUgPSBudWxs
cHRyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9O
b2Rlc0NvZGVnZW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rl
c0NvZGVnZW4uY3BwCmluZGV4IGMyNjhhMjYwOGQzOGQ2ZGVhN2FjYjgxNzcwN2U1OWYxYzUyNWYy
ODIuLjJiNTkwYzg3YzBmMTZiMDBmNjJjMDNmZjg2NjFiNTkzMGZkNjBlOWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKQEAg
LTU5MCwxMiArNTkwLDEyIEBAIHZvaWQgUHJvcGVydHlMaXN0Tm9kZTo6ZW1pdFB1dENvbnN0YW50
UHJvcGVydHkoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnCiAgICAgICAgIEFTU0VS
VChub2RlLm5lZWRzU3VwZXJCaW5kaW5nKCkpOwogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
cHJvcGVydHlOYW1lUmVnaXN0ZXI7CiAgICAgICAgIGlmIChub2RlLm5hbWUoKSkKLSAgICAgICAg
ICAgIHByb3BlcnR5TmFtZVJlZ2lzdGVyID0gZ2VuZXJhdG9yLmVtaXRMb2FkKGdlbmVyYXRvci5u
ZXdUZW1wb3JhcnkoKSwgKm5vZGUubmFtZSgpKTsKKyAgICAgICAgICAgIHByb3BlcnR5TmFtZVJl
Z2lzdGVyID0gZ2VuZXJhdG9yLmVtaXRMb2FkKG51bGxwdHIsICpub2RlLm5hbWUoKSk7CiAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgIHByb3BlcnR5TmFtZVJlZ2lzdGVyID0gZ2VuZXJhdG9yLmVt
aXROb2RlKG5vZGUubV9leHByZXNzaW9uKTsKIAogICAgICAgICBnZW5lcmF0b3IuZW1pdFNldEZ1
bmN0aW9uTmFtZUlmTmVlZGVkKG5vZGUubV9hc3NpZ24sIHZhbHVlLmdldCgpLCBwcm9wZXJ0eU5h
bWVSZWdpc3Rlci5nZXQoKSk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbERlZmluZVByb3Bl
cnR5KG5ld09iaiwgcHJvcGVydHlOYW1lUmVnaXN0ZXIuZ2V0KCksIHZhbHVlLmdldCgpLCBudWxs
cHRyLCBudWxscHRyLCBCeXRlY29kZUdlbmVyYXRvcjo6UHJvcGVydHlDb25maWd1cmFibGUgfCBC
eXRlY29kZUdlbmVyYXRvcjo6UHJvcGVydHlXcml0YWJsZSwgbV9wb3NpdGlvbik7CisgICAgICAg
IGdlbmVyYXRvci5lbWl0Q2FsbERlZmluZVByb3BlcnR5KG5ld09iaiwgcHJvcGVydHlOYW1lUmVn
aXN0ZXIuZ2V0KCksIHZhbHVlLmdldCgpLCBudWxscHRyLCBudWxscHRyLCBCeXRlY29kZUdlbmVy
YXRvcjo6UHJvcGVydHlDb25maWd1cmFibGUgfCBCeXRlY29kZUdlbmVyYXRvcjo6UHJvcGVydHlX
cml0YWJsZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKGNvbnN0IGF1dG8qIGlk
ZW50aWZpZXIgPSBub2RlLm5hbWUoKSkgewpAQCAtNjA1LDcgKzYwNSw3IEBAIHZvaWQgUHJvcGVy
dHlMaXN0Tm9kZTo6ZW1pdFB1dENvbnN0YW50UHJvcGVydHkoQnl0ZWNvZGVHZW5lcmF0b3ImIGdl
bmVyYXRvciwgUmVnCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gaW5kZXggPSBnZW5lcmF0b3IuZW1pdExvYWQoZ2VuZXJhdG9yLm5l
d1RlbXBvcmFyeSgpLCBqc051bWJlcihvcHRpb25hbEluZGV4LnZhbHVlKCkpKTsKKyAgICAgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IGluZGV4ID0gZ2VuZXJhdG9yLmVtaXRMb2FkKG51bGxwdHIsIGpz
TnVtYmVyKG9wdGlvbmFsSW5kZXgudmFsdWUoKSkpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdERp
cmVjdFB1dEJ5VmFsKG5ld09iaiwgaW5kZXguZ2V0KCksIHZhbHVlLmdldCgpKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KQEAgLTE2MjMsNyArMTYyMyw3IEBAIFJlZ2lzdGVySUQqIFVuYXJ5UGx1
c05vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3Rl
cklECiAgCiBSZWdpc3RlcklEKiBCaXR3aXNlTm90Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKLSAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gc3JjMiA9IGdlbmVyYXRvci5lbWl0TG9hZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5
KCksIGpzTnVtYmVyKC0xKSk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNyYzIgPSBnZW5lcmF0
b3IuZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoLTEpKTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gc3JjMSA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX2V4cHIpOwogICAgIHJldHVybiBnZW5lcmF0
b3IuZW1pdEJpbmFyeU9wKG9wX2JpdHhvciwgZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0
LCBzcmMxLmdldCgpKSwgc3JjMS5nZXQoKSwgc3JjMi5nZXQoKSwgT3BlcmFuZFR5cGVzKG1fZXhw
ci0+cmVzdWx0RGVzY3JpcHRvcigpLCBSZXN1bHRUeXBlOjpudW1iZXJUeXBlSXNJbnQzMigpKSk7
CiB9CkBAIC0zNjAzLDEyICszNjAzLDEyIEBAIFJlZ2lzdGVySUQqIENsYXNzRXhwck5vZGU6OmVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklECiAgICAg
ICAgIGVtaXRQdXRIb21lT2JqZWN0KGdlbmVyYXRvciwgY29uc3RydWN0b3IuZ2V0KCksIHByb3Rv
dHlwZS5nZXQoKSk7CiAgICAgfQogCi0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGNvbnN0cnVjdG9y
TmFtZVJlZ2lzdGVyID0gZ2VuZXJhdG9yLmVtaXRMb2FkKGdlbmVyYXRvci5uZXdUZW1wb3Jhcnko
KSwgcHJvcGVydHlOYW1lcy5jb25zdHJ1Y3Rvcik7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGNv
bnN0cnVjdG9yTmFtZVJlZ2lzdGVyID0gZ2VuZXJhdG9yLmVtaXRMb2FkKG51bGxwdHIsIHByb3Bl
cnR5TmFtZXMuY29uc3RydWN0b3IpOwogICAgIGdlbmVyYXRvci5lbWl0Q2FsbERlZmluZVByb3Bl
cnR5KHByb3RvdHlwZS5nZXQoKSwgY29uc3RydWN0b3JOYW1lUmVnaXN0ZXIuZ2V0KCksIGNvbnN0
cnVjdG9yLmdldCgpLCBudWxscHRyLCBudWxscHRyLAotICAgICAgICBCeXRlY29kZUdlbmVyYXRv
cjo6UHJvcGVydHlDb25maWd1cmFibGUgfCBCeXRlY29kZUdlbmVyYXRvcjo6UHJvcGVydHlXcml0
YWJsZSwgbV9wb3NpdGlvbik7CisgICAgICAgIEJ5dGVjb2RlR2VuZXJhdG9yOjpQcm9wZXJ0eUNv
bmZpZ3VyYWJsZSB8IEJ5dGVjb2RlR2VuZXJhdG9yOjpQcm9wZXJ0eVdyaXRhYmxlKTsKIAotICAg
IFJlZlB0cjxSZWdpc3RlcklEPiBwcm90b3R5cGVOYW1lUmVnaXN0ZXIgPSBnZW5lcmF0b3IuZW1p
dExvYWQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBwcm9wZXJ0eU5hbWVzLnByb3RvdHlwZSk7
Ci0gICAgZ2VuZXJhdG9yLmVtaXRDYWxsRGVmaW5lUHJvcGVydHkoY29uc3RydWN0b3IuZ2V0KCks
IHByb3RvdHlwZU5hbWVSZWdpc3Rlci5nZXQoKSwgcHJvdG90eXBlLmdldCgpLCBudWxscHRyLCBu
dWxscHRyLCAwLCBtX3Bvc2l0aW9uKTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJvdG90eXBl
TmFtZVJlZ2lzdGVyID0gZ2VuZXJhdG9yLmVtaXRMb2FkKG51bGxwdHIsIHByb3BlcnR5TmFtZXMu
cHJvdG90eXBlKTsKKyAgICBnZW5lcmF0b3IuZW1pdENhbGxEZWZpbmVQcm9wZXJ0eShjb25zdHJ1
Y3Rvci5nZXQoKSwgcHJvdG90eXBlTmFtZVJlZ2lzdGVyLmdldCgpLCBwcm90b3R5cGUuZ2V0KCks
IG51bGxwdHIsIG51bGxwdHIsIDApOwogCiAgICAgaWYgKG1fc3RhdGljTWV0aG9kcykKICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXROb2RlKGNvbnN0cnVjdG9yLmdldCgpLCBtX3N0YXRpY01ldGhvZHMp
OwpAQCAtMzg3MCw3ICszODcwLDcgQEAgdm9pZCBPYmplY3RQYXR0ZXJuTm9kZTo6YmluZFZhbHVl
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIHJocykKICAgICAgICAg
ICAgIGlmICghb3B0aW9uYWxJbmRleCkKICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEdl
dEJ5SWQodGVtcC5nZXQoKSwgcmhzLCB0YXJnZXQucHJvcGVydHlOYW1lKTsKICAgICAgICAgICAg
IGVsc2UgewotICAgICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBpbmRleCA9IGdlbmVy
YXRvci5lbWl0TG9hZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIGpzTnVtYmVyKG9wdGlvbmFs
SW5kZXgudmFsdWUoKSkpOworICAgICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBpbmRl
eCA9IGdlbmVyYXRvci5lbWl0TG9hZChudWxscHRyLCBqc051bWJlcihvcHRpb25hbEluZGV4LnZh
bHVlKCkpKTsKICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEdldEJ5VmFsKHRlbXAuZ2V0
KCksIHJocywgaW5kZXguZ2V0KCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2Ugewpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJl
dGVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVy
cHJldGVySW5saW5lcy5oCmluZGV4IDhjNzQxMjY2MjY1YzgxNDgwNmYxZjBmYjcxNDgzN2UyM2M1
MGRjOGQuLmU5NmIxMDVjYWYxYTJlMTA0MWM5OWJmNjFhOGI4YjY3MzRkYWMxZDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGlu
ZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0
ZXJJbmxpbmVzLmgKQEAgLTI2NTcsNiArMjY1NywxMSBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0
ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGlt
aQogICAgICAgICBjbG9iYmVyV29ybGQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBjbG9iYmVyTGlt
aXQpOwogICAgICAgICBicmVhazsKICAgICB9CisKKyAgICBjYXNlIERlZmluZURhdGFQcm9wZXJ0
eToKKyAgICBjYXNlIERlZmluZUFjY2Vzc29yUHJvcGVydHk6CisgICAgICAgIGNsb2JiZXJXb3Js
ZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNsb2JiZXJMaW1pdCk7CisgICAgICAgIGJyZWFrOwog
ICAgICAgICAKICAgICBjYXNlIEluOiB7CiAgICAgICAgIC8vIEZJWE1FOiBXZSBjYW4gZGV0ZXJt
aW5lIHdoZW4gdGhlIHByb3BlcnR5IGRlZmluaXRlbHkgZXhpc3RzIGJhc2VkIG9uIGFic3RyYWN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2Vy
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmlu
ZGV4IDA0NTIyODBkZDI2ZjQwYjBiY2E0NWQzODUxZDExMGRmNDE2YTBmYTcuLjBiNWZiOTVkOTU3
YjEyYTQzODFjZmZiOWI2YzJhNGViMzJhYjNhNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC00MjM4LDYgKzQyMzgsMzggQEAgYm9v
bCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAg
IE5FWFRfT1BDT0RFKG9wX3B1dF9ieV92YWxfd2l0aF90aGlzKTsKICAgICAgICAgfQogCisgICAg
ICAgIGNhc2Ugb3BfZGVmaW5lX2RhdGFfcHJvcGVydHk6IHsKKyAgICAgICAgICAgIE5vZGUqIGJh
c2UgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQp
KTsKKyAgICAgICAgICAgIE5vZGUqIHByb3BlcnR5ID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJy
ZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSk7CisgICAgICAgICAgICBOb2RlKiB2YWx1ZSA9
IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCkpOwor
ICAgICAgICAgICAgTm9kZSogYXR0cmlidXRlcyA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVu
dEluc3RydWN0aW9uWzRdLnUub3BlcmFuZCkpOworCisgICAgICAgICAgICBhZGRWYXJBcmdDaGls
ZChiYXNlKTsKKyAgICAgICAgICAgIGFkZFZhckFyZ0NoaWxkKHByb3BlcnR5KTsKKyAgICAgICAg
ICAgIGFkZFZhckFyZ0NoaWxkKHZhbHVlKTsKKyAgICAgICAgICAgIGFkZFZhckFyZ0NoaWxkKGF0
dHJpYnV0ZXMpOworICAgICAgICAgICAgYWRkVG9HcmFwaChOb2RlOjpWYXJBcmcsIERlZmluZURh
dGFQcm9wZXJ0eSwgT3BJbmZvKDApLCBPcEluZm8oMCkpOworCisgICAgICAgICAgICBORVhUX09Q
Q09ERShvcF9kZWZpbmVfZGF0YV9wcm9wZXJ0eSk7CisgICAgICAgIH0KKworICAgICAgICBjYXNl
IG9wX2RlZmluZV9hY2Nlc3Nvcl9wcm9wZXJ0eTogeworICAgICAgICAgICAgTm9kZSogYmFzZSA9
IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCkpOwor
ICAgICAgICAgICAgTm9kZSogcHJvcGVydHkgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJ
bnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpKTsKKyAgICAgICAgICAgIE5vZGUqIGdldHRlciA9IGdl
dChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCkpOworICAg
ICAgICAgICAgTm9kZSogc2V0dGVyID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1
Y3Rpb25bNF0udS5vcGVyYW5kKSk7CisgICAgICAgICAgICBOb2RlKiBhdHRyaWJ1dGVzID0gZ2V0
KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bNV0udS5vcGVyYW5kKSk7CisKKyAg
ICAgICAgICAgIGFkZFZhckFyZ0NoaWxkKGJhc2UpOworICAgICAgICAgICAgYWRkVmFyQXJnQ2hp
bGQocHJvcGVydHkpOworICAgICAgICAgICAgYWRkVmFyQXJnQ2hpbGQoZ2V0dGVyKTsKKyAgICAg
ICAgICAgIGFkZFZhckFyZ0NoaWxkKHNldHRlcik7CisgICAgICAgICAgICBhZGRWYXJBcmdDaGls
ZChhdHRyaWJ1dGVzKTsKKyAgICAgICAgICAgIGFkZFRvR3JhcGgoTm9kZTo6VmFyQXJnLCBEZWZp
bmVBY2Nlc3NvclByb3BlcnR5LCBPcEluZm8oMCksIE9wSW5mbygwKSk7CisKKyAgICAgICAgICAg
IE5FWFRfT1BDT0RFKG9wX2RlZmluZV9hY2Nlc3Nvcl9wcm9wZXJ0eSk7CisgICAgICAgIH0KKwog
ICAgICAgICBjYXNlIG9wX3RyeV9nZXRfYnlfaWQ6CiAgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lk
OgogICAgICAgICBjYXNlIG9wX2dldF9ieV9pZF9wcm90b19sb2FkOgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCmluZGV4IDQ4ZmE0OTU3MmVjNTBlYzE1
ZDAzNzc2YTUyMmQ2ZmJkMzUyYmZlOWEuLmMzMjNkNDZmYmMzY2Y1YzEwNDlmYTI2ZmMwZTE5MGYy
MjcxYTQ3MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJp
bGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGll
cy5jcHAKQEAgLTE3Myw2ICsxNzMsOCBAQCBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVs
KE9wY29kZUlEIG9wY29kZUlELCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1YwogICAgIGNh
c2Ugb3BfcHV0X2dldHRlcl9zZXR0ZXJfYnlfaWQ6CiAgICAgY2FzZSBvcF9wdXRfZ2V0dGVyX2J5
X3ZhbDoKICAgICBjYXNlIG9wX3B1dF9zZXR0ZXJfYnlfdmFsOgorICAgIGNhc2Ugb3BfZGVmaW5l
X2RhdGFfcHJvcGVydHk6CisgICAgY2FzZSBvcF9kZWZpbmVfYWNjZXNzb3JfcHJvcGVydHk6CiAg
ICAgY2FzZSBvcF9kZWxfYnlfaWQ6CiAgICAgY2FzZSBvcF9kZWxfYnlfdmFsOgogICAgIGNhc2Ug
b3Bfam1wOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVy
aXplLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAppbmRleCBj
MWMzZmRkZGI3YTdhNjBiNDY1MmExN2NhZTFhOTgzZjhjYWU5NjExLi5jY2NkZjhiY2Q2MjZhYTRk
Njc2MzczY2QyODQyZTJlNTZhZTBhYzEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Nsb2JiZXJpemUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Nsb2JiZXJpemUuaApAQCAtNDg2LDYgKzQ4Niw4IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYg
Z3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1
CiAgICAgY2FzZSBQdXRHZXR0ZXJTZXR0ZXJCeUlkOgogICAgIGNhc2UgUHV0R2V0dGVyQnlWYWw6
CiAgICAgY2FzZSBQdXRTZXR0ZXJCeVZhbDoKKyAgICBjYXNlIERlZmluZURhdGFQcm9wZXJ0eToK
KyAgICBjYXNlIERlZmluZUFjY2Vzc29yUHJvcGVydHk6CiAgICAgY2FzZSBEZWxldGVCeUlkOgog
ICAgIGNhc2UgRGVsZXRlQnlWYWw6CiAgICAgY2FzZSBBcnJheVB1c2g6CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKaW5kZXggMmRjZjU1ZDJlZDI4YWFlNjBiNmI4YjdiOWJm
NmRhMDcxOWQ5MmRkNS4uZjY5ZDJmOWZmOTdkNDA4YThmMmU4MTc2ZjVhYTdiM2M5Yzc1M2RiZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAtMTExLDYgKzExMSw4
IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIFB1dEdl
dHRlclNldHRlckJ5SWQ6CiAgICAgY2FzZSBQdXRHZXR0ZXJCeVZhbDoKICAgICBjYXNlIFB1dFNl
dHRlckJ5VmFsOgorICAgIGNhc2UgRGVmaW5lRGF0YVByb3BlcnR5OgorICAgIGNhc2UgRGVmaW5l
QWNjZXNzb3JQcm9wZXJ0eToKICAgICBjYXNlIERlbGV0ZUJ5SWQ6CiAgICAgY2FzZSBEZWxldGVC
eVZhbDoKICAgICBjYXNlIENoZWNrU3RydWN0dXJlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggNmVlNTE0MmY3OGY2MGJmMTA5NjgzYzhiODljMTVk
MGU0NThiM2ZlMC4uNzVhM2I1ZDQ1NjdlNzRkYTg1MmU0NDkyNWZhN2RiZjE0MDkwNTM1NyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCkBAIC0xNjAyLDYg
KzE2MDIsMzUgQEAgY2xhc3MgRml4dXBQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAg
ICBmaXhFZGdlPFVudHlwZWRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIGJyZWFr
OwogCisgICAgICAgIGNhc2UgRGVmaW5lRGF0YVByb3BlcnR5OiB7CisgICAgICAgICAgICBmaXhF
ZGdlPENlbGxVc2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCkpOworICAgICAgICAgICAg
RWRnZSYgcHJvcGVydHlFZGdlID0gbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKTsKKyAgICAg
ICAgICAgIGlmIChwcm9wZXJ0eUVkZ2UtPnNob3VsZFNwZWN1bGF0ZVN5bWJvbCgpKQorICAgICAg
ICAgICAgICAgIGZpeEVkZ2U8U3ltYm9sVXNlPihwcm9wZXJ0eUVkZ2UpOworICAgICAgICAgICAg
ZWxzZSBpZiAocHJvcGVydHlFZGdlLT5zaG91bGRTcGVjdWxhdGVTdHJpbmcoKSkKKyAgICAgICAg
ICAgICAgICBmaXhFZGdlPFN0cmluZ1VzZT4ocHJvcGVydHlFZGdlKTsKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICBmaXhFZGdlPFVudHlwZWRVc2U+KHByb3BlcnR5RWRnZSk7Cisg
ICAgICAgICAgICBmaXhFZGdlPFVudHlwZWRVc2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwg
MikpOworICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obV9ncmFwaC52YXJBcmdDaGlsZChu
b2RlLCAzKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2Ug
RGVmaW5lQWNjZXNzb3JQcm9wZXJ0eTogeworICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNlPiht
X2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDApKTsKKyAgICAgICAgICAgIEVkZ2UmIHByb3BlcnR5
RWRnZSA9IG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSk7CisgICAgICAgICAgICBpZiAocHJv
cGVydHlFZGdlLT5zaG91bGRTcGVjdWxhdGVTeW1ib2woKSkKKyAgICAgICAgICAgICAgICBmaXhF
ZGdlPFN5bWJvbFVzZT4ocHJvcGVydHlFZGdlKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHByb3Bl
cnR5RWRnZS0+c2hvdWxkU3BlY3VsYXRlU3RyaW5nKCkpCisgICAgICAgICAgICAgICAgZml4RWRn
ZTxTdHJpbmdVc2U+KHByb3BlcnR5RWRnZSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgZml4RWRnZTxVbnR5cGVkVXNlPihwcm9wZXJ0eUVkZ2UpOworICAgICAgICAgICAgZml4
RWRnZTxDZWxsVXNlPihtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDIpKTsKKyAgICAgICAgICAg
IGZpeEVkZ2U8Q2VsbFVzZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAzKSk7CisgICAgICAg
ICAgICBmaXhFZGdlPEludDMyVXNlPihtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDQpKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAg
ICAgIC8vIEhhdmUgdGhlc2Ugbm8tb3AgY2FzZXMgaGVyZSB0byBlbnN1cmUgdGhhdCBub2JvZHkg
Zm9yZ2V0cyB0byBhZGQgaGFuZGxlcnMgZm9yIG5ldyBvcGNvZGVzLgogICAgICAgICBjYXNlIFNl
dEFyZ3VtZW50OgpAQCAtMTY3MSw4ICsxNzAwLDYgQEAgY2xhc3MgRml4dXBQaGFzZSA6IHB1Ymxp
YyBQaGFzZSB7CiAgICAgICAgIGNhc2UgR2V0QnlWYWxXaXRoVGhpczoKICAgICAgICAgY2FzZSBD
b21wYXJlRXFQdHI6CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIAotICAgICAgICAg
ICAgYnJlYWs7CiAjZWxzZQogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgYnJlYWs7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKaW5kZXggMWYzNWViMmQ5MDNiNDY2
YzI0MThjM2RjMWI2MTg1M2ViZTVkNjk3OS4uMjUxNWViMzQyYmQ3Mzg5ZTExODg3YWJkODJmMGVj
ZmYwMTA3ZGJiMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
VHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaApAQCAt
MTk5LDYgKzE5OSw4IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNy
byhQdXRHZXR0ZXJTZXR0ZXJCeUlkLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oUHV0
R2V0dGVyQnlWYWwsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhQdXRTZXR0ZXJCeVZh
bCwgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAgIG1hY3JvKERlZmluZURhdGFQcm9wZXJ0eSwgTm9k
ZU11c3RHZW5lcmF0ZSB8IE5vZGVIYXNWYXJBcmdzKSBcCisgICAgbWFjcm8oRGVmaW5lQWNjZXNz
b3JQcm9wZXJ0eSwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVIYXNWYXJBcmdzKSBcCiAgICAgbWFj
cm8oRGVsZXRlQnlJZCwgTm9kZVJlc3VsdEJvb2xlYW4gfCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAg
ICAgbWFjcm8oRGVsZXRlQnlWYWwsIE5vZGVSZXN1bHRCb29sZWFuIHwgTm9kZU11c3RHZW5lcmF0
ZSkgXAogICAgIG1hY3JvKENoZWNrU3RydWN0dXJlLCBOb2RlTXVzdEdlbmVyYXRlKSBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAppbmRleCBkMjE5MTZhMjU0
YzcyOTZhOWVkNmJkNzMzM2VjZDM2MmZkZTNhMTkyLi5kNTMwNTYyMDg3YjI5MzNmN2Q4ZjYyMTQz
N2U3YTU1NDNjMjI4ZmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0
aW9ucy5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJERkdUb0ZUTERlZmVycmVkQ29t
cGlsYXRpb25DYWxsYmFjay5oIgogI2luY2x1ZGUgIkRGR1RvRlRMRm9yT1NSRW50cnlEZWZlcnJl
ZENvbXBpbGF0aW9uQ2FsbGJhY2suaCIKICNpbmNsdWRlICJERkdXb3JrbGlzdC5oIgorI2luY2x1
ZGUgIkRlZmluZVByb3BlcnR5QXR0cmlidXRlcy5oIgogI2luY2x1ZGUgIkRpcmVjdEFyZ3VtZW50
cy5oIgogI2luY2x1ZGUgIkZUTEZvck9TUkVudHJ5SklUQ29kZS5oIgogI2luY2x1ZGUgIkZUTE9T
UkVudHJ5LmgiCkBAIC0xMDIyLDYgKzEwMjMsODIgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblB1dEJ5VmFsV2l0aFRoaXMoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmMK
ICAgICBwdXRXaXRoVGhpczxmYWxzZT4oZXhlYywgZW5jb2RlZEJhc2UsIGVuY29kZWRUaGlzLCBl
bmNvZGVkVmFsdWUsIHByb3BlcnR5KTsKIH0KIAorQUxXQVlTX0lOTElORSBzdGF0aWMgdm9pZCBk
ZWZpbmVEYXRhUHJvcGVydHkoRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0sIEpTT2JqZWN0KiBiYXNl
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIGludDMyX3Qg
YXR0cmlidXRlcykKK3sKKyAgICBQcm9wZXJ0eURlc2NyaXB0b3IgZGVzY3JpcHRvciA9IHRvUHJv
cGVydHlEZXNjcmlwdG9yKHZhbHVlLCBqc1VuZGVmaW5lZCgpLCBqc1VuZGVmaW5lZCgpLCBEZWZp
bmVQcm9wZXJ0eUF0dHJpYnV0ZXMoYXR0cmlidXRlcykpOworICAgIEFTU0VSVCgoZGVzY3JpcHRv
ci5hdHRyaWJ1dGVzKCkgJiBBY2Nlc3NvcikgfHwgKCFkZXNjcmlwdG9yLmlzQWNjZXNzb3JEZXNj
cmlwdG9yKCkpKTsKKyAgICBiYXNlLT5tZXRob2RUYWJsZSh2bSktPmRlZmluZU93blByb3BlcnR5
KGJhc2UsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgdHJ1ZSk7Cit9CisKK3ZvaWQg
SklUX09QRVJBVElPTiBvcGVyYXRpb25EZWZpbmVEYXRhUHJvcGVydHkoRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCogYmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFByb3BlcnR5LCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUsIGludDMyX3QgYXR0cmlidXRlcykKK3sKKyAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVj
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBJZGVu
dGlmaWVyIHByb3BlcnR5TmFtZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkUHJvcGVydHkpLnRv
UHJvcGVydHlLZXkoZXhlYyk7CisgICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkK
KyAgICAgICAgcmV0dXJuOworICAgIGRlZmluZURhdGFQcm9wZXJ0eShleGVjLCB2bSwgYmFzZSwg
cHJvcGVydHlOYW1lLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSwgYXR0cmlidXRlcyk7
Cit9CisKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWZpbmVEYXRhUHJvcGVydHlTdHJp
bmcoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogYmFzZSwgSlNTdHJpbmcqIHByb3BlcnR5LCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIGludDMyX3QgYXR0cmlidXRlcykKK3sKKyAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZt
LCBleGVjKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAg
ICBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSA9IHByb3BlcnR5LT50b0lkZW50aWZpZXIoZXhlYyk7
CisgICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkKKyAgICAgICAgcmV0dXJuOwor
ICAgIGRlZmluZURhdGFQcm9wZXJ0eShleGVjLCB2bSwgYmFzZSwgcHJvcGVydHlOYW1lLCBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSwgYXR0cmlidXRlcyk7Cit9CisKK3ZvaWQgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25EZWZpbmVEYXRhUHJvcGVydHlTeW1ib2woRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCogYmFzZSwgU3ltYm9sKiBwcm9wZXJ0eSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlLCBpbnQzMl90IGF0dHJpYnV0ZXMpCit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CisgICAgZGVmaW5l
RGF0YVByb3BlcnR5KGV4ZWMsIHZtLCBiYXNlLCBJZGVudGlmaWVyOjpmcm9tVWlkKHByb3BlcnR5
LT5wcml2YXRlTmFtZSgpKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSksIGF0dHJpYnV0
ZXMpOworfQorCitBTFdBWVNfSU5MSU5FIHN0YXRpYyB2b2lkIGRlZmluZUFjY2Vzc29yUHJvcGVy
dHkoRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0sIEpTT2JqZWN0KiBiYXNlLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIEpTT2JqZWN0KiBnZXR0ZXIsIEpTT2JqZWN0KiBzZXR0ZXIsIGlu
dDMyX3QgYXR0cmlidXRlcykKK3sKKyAgICBQcm9wZXJ0eURlc2NyaXB0b3IgZGVzY3JpcHRvciA9
IHRvUHJvcGVydHlEZXNjcmlwdG9yKGpzVW5kZWZpbmVkKCksIGdldHRlciwgc2V0dGVyLCBEZWZp
bmVQcm9wZXJ0eUF0dHJpYnV0ZXMoYXR0cmlidXRlcykpOworICAgIEFTU0VSVCgoZGVzY3JpcHRv
ci5hdHRyaWJ1dGVzKCkgJiBBY2Nlc3NvcikgfHwgKCFkZXNjcmlwdG9yLmlzQWNjZXNzb3JEZXNj
cmlwdG9yKCkpKTsKKyAgICBiYXNlLT5tZXRob2RUYWJsZSh2bSktPmRlZmluZU93blByb3BlcnR5
KGJhc2UsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgdHJ1ZSk7Cit9CisKK3ZvaWQg
SklUX09QRVJBVElPTiBvcGVyYXRpb25EZWZpbmVBY2Nlc3NvclByb3BlcnR5KEV4ZWNTdGF0ZSog
ZXhlYywgSlNPYmplY3QqIGJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRQcm9wZXJ0eSwgSlNP
YmplY3QqIGdldHRlciwgSlNPYmplY3QqIHNldHRlciwgaW50MzJfdCBhdHRyaWJ1dGVzKQorewor
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cigmdm0sIGV4ZWMpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KworICAgIElkZW50aWZpZXIgcHJvcGVydHlOYW1lID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRQ
cm9wZXJ0eSkudG9Qcm9wZXJ0eUtleShleGVjKTsKKyAgICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhj
ZXB0aW9uKCkpKQorICAgICAgICByZXR1cm47CisgICAgZGVmaW5lQWNjZXNzb3JQcm9wZXJ0eShl
eGVjLCB2bSwgYmFzZSwgcHJvcGVydHlOYW1lLCBnZXR0ZXIsIHNldHRlciwgYXR0cmlidXRlcyk7
Cit9CisKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWZpbmVBY2Nlc3NvclByb3BlcnR5
U3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGJhc2UsIEpTU3RyaW5nKiBwcm9wZXJ0
eSwgSlNPYmplY3QqIGdldHRlciwgSlNPYmplY3QqIHNldHRlciwgaW50MzJfdCBhdHRyaWJ1dGVz
KQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcigmdm0sIGV4ZWMpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKworICAgIElkZW50aWZpZXIgcHJvcGVydHlOYW1lID0gcHJvcGVydHktPnRvSWRlbnRp
ZmllcihleGVjKTsKKyAgICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0aW9uKCkpKQorICAgICAg
ICByZXR1cm47CisgICAgZGVmaW5lQWNjZXNzb3JQcm9wZXJ0eShleGVjLCB2bSwgYmFzZSwgcHJv
cGVydHlOYW1lLCBnZXR0ZXIsIHNldHRlciwgYXR0cmlidXRlcyk7Cit9CisKK3ZvaWQgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25EZWZpbmVBY2Nlc3NvclByb3BlcnR5U3ltYm9sKEV4ZWNTdGF0ZSog
ZXhlYywgSlNPYmplY3QqIGJhc2UsIFN5bWJvbCogcHJvcGVydHksIEpTT2JqZWN0KiBnZXR0ZXIs
IEpTT2JqZWN0KiBzZXR0ZXIsIGludDMyX3QgYXR0cmlidXRlcykKK3sKKyAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsK
KyAgICBkZWZpbmVBY2Nlc3NvclByb3BlcnR5KGV4ZWMsIHZtLCBiYXNlLCBJZGVudGlmaWVyOjpm
cm9tVWlkKHByb3BlcnR5LT5wcml2YXRlTmFtZSgpKSwgZ2V0dGVyLCBzZXR0ZXIsIGF0dHJpYnV0
ZXMpOworfQorCiBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0FycmF5KEV4ZWNTdGF0
ZSogZXhlYywgU3RydWN0dXJlKiBhcnJheVN0cnVjdHVyZSwgdm9pZCogYnVmZmVyLCBzaXplX3Qg
c2l6ZSkKIHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPcGVyYXRpb25zLmgKaW5kZXggNTI3YmZlNTg3NmFmYzc4MzdiYTMwZmQyMTBkNWE0
N2MzYjI5NTFlNC4uNjg2ZTYzYjlkMzQyMzUzNjAxNjExMjA2YjgwYWMzMzk1ZDczY2JlNiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKQEAgLTExNCw2ICsxMTQs
MTIgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRXaXRoVGhpcyhFeGVjU3Rh
dGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEoKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRp
b25QdXRCeUlkV2l0aFRoaXNTdHJpY3QoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJO
QUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxXaXRoVGhpcyhFeGVjU3Rh
dGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1
dEJ5VmFsV2l0aFRoaXNTdHJpY3QoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRK
U1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsKK3Zv
aWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWZpbmVEYXRhUHJvcGVydHkoRXhlY1N0YXRlKiwg
SlNPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIGludDMyX3QpIFdURl9J
TlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWZpbmVEYXRhUHJvcGVydHlT
dHJpbmcoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBKU1N0cmluZyosIEVuY29kZWRKU1ZhbHVlLCBp
bnQzMl90KSBXVEZfSU5URVJOQUw7Cit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVmaW5l
RGF0YVByb3BlcnR5U3ltYm9sKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgU3ltYm9sKiwgRW5jb2Rl
ZEpTVmFsdWUsIGludDMyX3QpIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVy
YXRpb25EZWZpbmVBY2Nlc3NvclByb3BlcnR5KEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgRW5jb2Rl
ZEpTVmFsdWUsIEpTT2JqZWN0KiwgSlNPYmplY3QqLCBpbnQzMl90KSBXVEZfSU5URVJOQUw7Cit2
b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eVN0cmluZyhF
eGVjU3RhdGUqLCBKU09iamVjdCosIEpTU3RyaW5nKiwgSlNPYmplY3QqLCBKU09iamVjdCosIGlu
dDMyX3QpIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWZpbmVB
Y2Nlc3NvclByb3BlcnR5U3ltYm9sKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgU3ltYm9sKiwgSlNP
YmplY3QqLCBKU09iamVjdCosIGludDMyX3QpIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVl
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJyYXlQdXNoKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSwgSlNBcnJheSopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVl
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJyYXlQdXNoRG91YmxlKEV4ZWNTdGF0ZSosIGRvdWJs
ZSB2YWx1ZSwgSlNBcnJheSopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uQXJyYXlQb3AoRXhlY1N0YXRlKiwgSlNBcnJheSopIFdURl9JTlRFUk5B
TDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblBy
b3BhZ2F0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0
aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKaW5kZXggMDZkYjQwZWI2NzY2NzI0NmQzNDkwOTA1OTE5
YmY1YWJkMDBlYjk5ZS4uODdkYmU4M2E4ODkwYzFkN2FkMzQ4ZTA1NGU1YTc5ZTlkNWE0NDJkOCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFn
YXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0
aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKQEAgLTEwNDAsNiArMTA0MCw4IEBAIGNsYXNzIFByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgY2FzZSBQdXRH
ZXR0ZXJTZXR0ZXJCeUlkOgogICAgICAgICBjYXNlIFB1dEdldHRlckJ5VmFsOgogICAgICAgICBj
YXNlIFB1dFNldHRlckJ5VmFsOgorICAgICAgICBjYXNlIERlZmluZURhdGFQcm9wZXJ0eToKKyAg
ICAgICAgY2FzZSBEZWZpbmVBY2Nlc3NvclByb3BlcnR5OgogICAgICAgICBjYXNlIERGRzo6SnVt
cDoKICAgICAgICAgY2FzZSBCcmFuY2g6CiAgICAgICAgIGNhc2UgU3dpdGNoOgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAppbmRleCAyMmI5MzQwMDU4M2Fj
NmRmODYzYjBiZTM4ZjZiODMzNmE1MDQxOWFjLi5jMTMyZjk1NzRiMjVlNjRlNmFjYzU2MTYwYjk0
Nzk1ODJiOTNhZjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nh
ZmVUb0V4ZWN1dGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4
ZWN1dGUuaApAQCAtMjE0LDYgKzIxNCw4IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0
YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIFB1dEdl
dHRlclNldHRlckJ5SWQ6CiAgICAgY2FzZSBQdXRHZXR0ZXJCeVZhbDoKICAgICBjYXNlIFB1dFNl
dHRlckJ5VmFsOgorICAgIGNhc2UgRGVmaW5lRGF0YVByb3BlcnR5OgorICAgIGNhc2UgRGVmaW5l
QWNjZXNzb3JQcm9wZXJ0eToKICAgICBjYXNlIENoZWNrU3RydWN0dXJlOgogICAgIGNhc2UgR2V0
RXhlY3V0YWJsZToKICAgICBjYXNlIEdldEJ1dHRlcmZseToKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAppbmRleCBlN2EyOWI0MzM0NmIyNDgyM2E5OTg5
ZmVlOTVkNjQwNWMzMThkYTczLi5mZDAzNTEzNmQwMTE5MTYxYzU4NjQ0YWU1ZjQ0MjBiMmE1NmUz
YWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5o
CkBAIC0xMzQ0LDYgKzEzNDQsMzYgQEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQgewogICAgICAgICBt
X2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMywgYXJnNCk7
CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CiAgICAgfQorICAgIEpJVENv
bXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRU9KSlogb3BlcmF0aW9u
LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcgYXJnNCkKKyAg
ICB7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcy
LCBhcmczLCBhcmc0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKKyAg
ICB9CisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9F
T0pzc0paIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywg
R1BSUmVnIGFyZzQpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoYXJnMSwgYXJnMiwgYXJnMywgYXJnNCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxs
KG9wZXJhdGlvbik7CisgICAgfQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24o
Vl9KSVRPcGVyYXRpb25fRU9TeW1KWiBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJn
MiwgR1BSUmVnIGFyZzMsIEdQUlJlZyBhcmc0KQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMsIGFyZzQpOworICAgICAgICBy
ZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOworICAgIH0KKyAgICBKSVRDb21waWxlcjo6Q2Fs
bCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VPSk9PWiBvcGVyYXRpb24sIEdQUlJlZyBh
cmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMsIEdQUlJlZyBhcmc0LCBHUFJSZWcgYXJnNSkK
KyAgICB7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBh
cmcyLCBhcmczLCBhcmc0LCBhcmc1KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0
aW9uKTsKKyAgICB9CisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9w
ZXJhdGlvbl9FT0pzc09PWiBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BS
UmVnIGFyZzMsIEdQUlJlZyBhcmc0LCBHUFJSZWcgYXJnNSkKKyAgICB7CisgICAgICAgIG1faml0
LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczLCBhcmc0LCBhcmc1
KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKKyAgICB9CisgICAgSklU
Q29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FT1N5bU9PWiBvcGVy
YXRpb24sIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMsIEdQUlJlZyBhcmc0
LCBHUFJSZWcgYXJnNSkKKyAgICB7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4
ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczLCBhcmc0LCBhcmc1KTsKKyAgICAgICAgcmV0dXJuIGFw
cGVuZENhbGwob3BlcmF0aW9uKTsKKyAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9w
ZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FT0pJVWkgb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgR1BS
UmVnIGFyZzIsIFVuaXF1ZWRTdHJpbmdJbXBsKiBpbXBsLCB1bnNpZ25lZCB2YWx1ZSkKICAgICB7
CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBU
cnVzdGVkSW1tUHRyKGltcGwpLCBUcnVzdGVkSW1tMzIodmFsdWUpKTsKQEAgLTE3ODgsNyArMTgx
OCwzNiBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVCB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShFQUJJXzMyQklUX0RVTU1ZX0FSRyBhcmcxLnBheWxvYWRHUFIoKSwg
YXJnMS50YWdHUFIoKSwgYXJnMi5wYXlsb2FkR1BSKCksIGFyZzIudGFnR1BSKCksIGFyZzMucGF5
bG9hZEdQUigpLCBhcmczLnRhZ0dQUigpLCBhcmc0LnBheWxvYWRHUFIoKSwgYXJnNC50YWdHUFIo
KSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CiAgICAgfQotCisgICAg
SklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FT0pKWiBvcGVy
YXRpb24sIEdQUlJlZyBhcmcxLCBKU1ZhbHVlUmVncyBhcmcyLCBKU1ZhbHVlUmVncyBhcmczLCBH
UFJSZWcgYXJnNCkKKyAgICB7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZShhcmcxLCBhcmcyLnBheWxvYWRHUFIoKSwgYXJnMi50YWdHUFIoKSwgYXJnMy5wYXlsb2Fk
R1BSKCksIGFyZzMudGFnR1BSKCksIGFyZzQpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChv
cGVyYXRpb24pOworICAgIH0KKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZf
SklUT3BlcmF0aW9uX0VPSnNzSlogb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIs
IEpTVmFsdWVSZWdzIGFyZzMsIEdQUlJlZyBhcmc0KQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIEVBQklfMzJCSVRfRFVNTVlfQVJH
IGFyZzMucGF5bG9hZEdQUigpLCBhcmczLnRhZ0dQUigpLCBhcmc0KTsKKyAgICAgICAgcmV0dXJu
IGFwcGVuZENhbGwob3BlcmF0aW9uKTsKKyAgICB9CisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2Fs
bE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FT1N5bUpaIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEs
IEdQUlJlZyBhcmcyLCBKU1ZhbHVlUmVncyBhcmczLCBHUFJSZWcgYXJnNCkKKyAgICB7CisgICAg
ICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBFQUJJXzMy
QklUX0RVTU1ZX0FSRyBhcmczLnBheWxvYWRHUFIoKSwgYXJnMy50YWdHUFIoKSwgYXJnNCk7Cisg
ICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CisgICAgfQorICAgIEpJVENvbXBp
bGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRU9KT09aIG9wZXJhdGlvbiwg
R1BSUmVnIGFyZzEsIEpTVmFsdWVSZWdzIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcgYXJnNCwg
R1BSUmVnIGFyZzUpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoYXJnMSwgYXJnMi5wYXlsb2FkR1BSKCksIGFyZzIudGFnR1BSKCksIGFyZzMsIGFyZzQs
IGFyZzUpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOworICAgIH0KKyAg
ICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VPSnNzT09a
IG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVn
IGFyZzQsIEdQUlJlZyBhcmc1KQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNX
aXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMsIGFyZzQsIGFyZzUpOworICAgICAgICByZXR1
cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOworICAgIH0KKyAgICBKSVRDb21waWxlcjo6Q2FsbCBj
YWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VPU3ltT09aIG9wZXJhdGlvbiwgR1BSUmVnIGFy
ZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVnIGFyZzQsIEdQUlJlZyBhcmc1KQor
ICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFy
ZzIsIGFyZzMsIGFyZzQsIGFyZzUpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRp
b24pOworICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3Bl
cmF0aW9uX0VPSklVaSBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBKU1ZhbHVlUmVncyBhcmcyLCBV
bmlxdWVkU3RyaW5nSW1wbCogaW1wbCwgdW5zaWduZWQgdmFsdWUpCiAgICAgewogICAgICAgICBt
X2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMi5wYXlsb2FkR1BSKCks
IGFyZzIudGFnR1BSKCksIFRydXN0ZWRJbW1QdHIoaW1wbCksIFRydXN0ZWRJbW0zMih2YWx1ZSkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQz
Ml82NC5jcHAKaW5kZXggYTIyZGJlYWRlNzEwOGY3NTU5NjY2YjkzZjlhZWM3ZWY1MGMxMzk1Yi4u
NDZmMTliNjRhZDY0MWM2YzM2OTA5YjMyNDQzYWE4YjVlMDhmN2ZiYyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCkBAIC00
NDkxLDYgKzQ0OTEsMTExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9k
ZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBEZWZpbmVEYXRhUHJvcGVydHk6
IHsKKyAgICAgICAgc3RhdGljX2Fzc2VydChHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycyA+PSA2
LCAiV2UgYXJlIGFzc3VtaW5nIHdlIGhhdmUgZW5vdWdoIHJlZ2lzdGVycyB0byBtYWtlIHRoaXMg
Y2FsbCB3aXRob3V0IGluY3JlbWVudGFsbHkgc2V0dGluZyB1cCB0aGUgYXJndW1lbnRzLiIpOwor
CisgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbV9qaXQuZ3JhcGgoKS52
YXJBcmdDaGlsZChub2RlLCAwKSk7CisgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIo
KTsKKworICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBtX2ppdC5ncmFwaCgpLnZh
ckFyZ0NoaWxkKG5vZGUsIDIpKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFs
dWUuanNWYWx1ZVJlZ3MoKTsKKworICAgICAgICBTcGVjdWxhdGVJbnQzMk9wZXJhbmQgYXR0cmli
dXRlcyh0aGlzLCBtX2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIDMpKTsKKyAgICAgICAg
R1BSUmVnIGF0dHJpYnV0ZXNHUFIgPSBhdHRyaWJ1dGVzLmdwcigpOworCisgICAgICAgIEVkZ2Um
IHByb3BlcnR5RWRnZSA9IG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMSk7CisgICAg
ICAgIHN3aXRjaCAocHJvcGVydHlFZGdlLnVzZUtpbmQoKSkgeworICAgICAgICBjYXNlIFN0cmlu
Z1VzZTogeworICAgICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgcHJvcGVydHkodGhpcywg
cHJvcGVydHlFZGdlKTsKKyAgICAgICAgICAgIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IHByb3BlcnR5
LmdwcigpOworICAgICAgICAgICAgc3BlY3VsYXRlU3RyaW5nKHByb3BlcnR5RWRnZSwgcHJvcGVy
dHlHUFIpOworCisgICAgICAgICAgICBmbHVzaFJlZ2lzdGVycygpOworICAgICAgICAgICAgY2Fs
bE9wZXJhdGlvbihvcGVyYXRpb25EZWZpbmVEYXRhUHJvcGVydHlTdHJpbmcsIE5vUmVzdWx0LCBi
YXNlR1BSLCBwcm9wZXJ0eUdQUiwgdmFsdWVSZWdzLCBhdHRyaWJ1dGVzR1BSKTsKKyAgICAgICAg
ICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorICAgICAgICBjYXNlIFN5bWJvbFVzZTogeworICAgICAgICAgICAgU3BlY3VsYXRlQ2VsbE9w
ZXJhbmQgcHJvcGVydHkodGhpcywgcHJvcGVydHlFZGdlKTsKKyAgICAgICAgICAgIEdQUlJlZyBw
cm9wZXJ0eUdQUiA9IHByb3BlcnR5LmdwcigpOworICAgICAgICAgICAgc3BlY3VsYXRlU3ltYm9s
KHByb3BlcnR5RWRnZSwgcHJvcGVydHlHUFIpOworCisgICAgICAgICAgICBmbHVzaFJlZ2lzdGVy
cygpOworICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWZpbmVEYXRhUHJvcGVy
dHlTeW1ib2wsIE5vUmVzdWx0LCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgdmFsdWVSZWdzLCBhdHRy
aWJ1dGVzR1BSKTsKKyAgICAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFVudHlwZWRVc2U6IHsKKyAgICAg
ICAgICAgIEpTVmFsdWVPcGVyYW5kIHByb3BlcnR5KHRoaXMsIHByb3BlcnR5RWRnZSk7CisgICAg
ICAgICAgICBKU1ZhbHVlUmVncyBwcm9wZXJ0eVJlZ3MgPSBwcm9wZXJ0eS5qc1ZhbHVlUmVncygp
OworCisgICAgICAgICAgICBmbHVzaFJlZ2lzdGVycygpOworICAgICAgICAgICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25EZWZpbmVEYXRhUHJvcGVydHksIE5vUmVzdWx0LCBiYXNlR1BSLCBwcm9w
ZXJ0eVJlZ3MsIHZhbHVlUmVncywgYXR0cmlidXRlc0dQUik7CisgICAgICAgICAgICBtX2ppdC5l
eGNlcHRpb25DaGVjaygpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
ICAgIH0KKworICAgICAgICBub1Jlc3VsdChub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQor
CisgICAgY2FzZSBEZWZpbmVBY2Nlc3NvclByb3BlcnR5OiB7CisgICAgICAgIHN0YXRpY19hc3Nl
cnQoR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMgPj0gNiwgIldlIGFyZSBhc3N1bWluZyB3ZSBo
YXZlIGVub3VnaCByZWdpc3RlcnMgdG8gbWFrZSB0aGlzIGNhbGwgd2l0aG91dCBpbmNyZW1lbnRh
bGx5IHNldHRpbmcgdXAgdGhlIGFyZ3VtZW50cy4iKTsKKworICAgICAgICBTcGVjdWxhdGVDZWxs
T3BlcmFuZCBiYXNlKHRoaXMsIG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMCkpOwor
ICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CisKKyAgICAgICAgU3BlY3VsYXRl
Q2VsbE9wZXJhbmQgZ2V0dGVyKHRoaXMsIG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwg
MikpOworICAgICAgICBHUFJSZWcgZ2V0dGVyR1BSID0gZ2V0dGVyLmdwcigpOworCisgICAgICAg
IFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHNldHRlcih0aGlzLCBtX2ppdC5ncmFwaCgpLnZhckFyZ0No
aWxkKG5vZGUsIDMpKTsKKyAgICAgICAgR1BSUmVnIHNldHRlckdQUiA9IHNldHRlci5ncHIoKTsK
KworICAgICAgICBTcGVjdWxhdGVJbnQzMk9wZXJhbmQgYXR0cmlidXRlcyh0aGlzLCBtX2ppdC5n
cmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIDQpKTsKKyAgICAgICAgR1BSUmVnIGF0dHJpYnV0ZXNH
UFIgPSBhdHRyaWJ1dGVzLmdwcigpOworCisgICAgICAgIEVkZ2UmIHByb3BlcnR5RWRnZSA9IG1f
aml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMSk7CisgICAgICAgIHN3aXRjaCAocHJvcGVy
dHlFZGdlLnVzZUtpbmQoKSkgeworICAgICAgICBjYXNlIFN0cmluZ1VzZTogeworICAgICAgICAg
ICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgcHJvcGVydHkodGhpcywgcHJvcGVydHlFZGdlKTsKKyAg
ICAgICAgICAgIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IHByb3BlcnR5LmdwcigpOworICAgICAgICAg
ICAgc3BlY3VsYXRlU3RyaW5nKHByb3BlcnR5RWRnZSwgcHJvcGVydHlHUFIpOworCisgICAgICAg
ICAgICBmbHVzaFJlZ2lzdGVycygpOworICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25EZWZpbmVBY2Nlc3NvclByb3BlcnR5U3RyaW5nLCBOb1Jlc3VsdCwgYmFzZUdQUiwgcHJvcGVy
dHlHUFIsIGdldHRlckdQUiwgc2V0dGVyR1BSLCBhdHRyaWJ1dGVzR1BSKTsKKyAgICAgICAgICAg
IG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
ICAgICAgICBjYXNlIFN5bWJvbFVzZTogeworICAgICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJh
bmQgcHJvcGVydHkodGhpcywgcHJvcGVydHlFZGdlKTsKKyAgICAgICAgICAgIEdQUlJlZyBwcm9w
ZXJ0eUdQUiA9IHByb3BlcnR5LmdwcigpOworICAgICAgICAgICAgc3BlY3VsYXRlU3ltYm9sKHBy
b3BlcnR5RWRnZSwgcHJvcGVydHlHUFIpOworCisgICAgICAgICAgICBmbHVzaFJlZ2lzdGVycygp
OworICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWZpbmVBY2Nlc3NvclByb3Bl
cnR5U3ltYm9sLCBOb1Jlc3VsdCwgYmFzZUdQUiwgcHJvcGVydHlHUFIsIGdldHRlckdQUiwgc2V0
dGVyR1BSLCBhdHRyaWJ1dGVzR1BSKTsKKyAgICAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNr
KCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFVudHlwZWRV
c2U6IHsKKyAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHByb3BlcnR5KHRoaXMsIHByb3BlcnR5
RWRnZSk7CisgICAgICAgICAgICBKU1ZhbHVlUmVncyBwcm9wZXJ0eUdQUiA9IHByb3BlcnR5Lmpz
VmFsdWVSZWdzKCk7CisKKyAgICAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CisgICAgICAgICAg
ICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlZmluZUFjY2Vzc29yUHJvcGVydHksIE5vUmVzdWx0
LCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgZ2V0dGVyR1BSLCBzZXR0ZXJHUFIsIGF0dHJpYnV0ZXNH
UFIpOworICAgICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisKKyAgICAgICAgbm9SZXN1bHQobm9kZSk7
CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgR2V0R2xvYmFsTGV4aWNhbFZhcmlh
YmxlOgogICAgIGNhc2UgR2V0R2xvYmFsVmFyOiB7CiAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1
bHRQYXlsb2FkKHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXggYWIyODg2MmMxNjI2OTQzMzYyYzFhNTU3YmJlZTMyMGVk
M2YzZDRjMS4uYTc0Zjc5YWYxYjk2YTcwYWQ2NDg4ZWMzMTgwYjVjMTdjZGNjYTI5YSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBA
IC00NDQ4LDYgKzQ0NDgsMTExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSog
bm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBEZWZpbmVEYXRhUHJvcGVy
dHk6IHsKKyAgICAgICAgc3RhdGljX2Fzc2VydChHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycyA+
PSA0LCAiV2UgYXJlIGFzc3VtaW5nIHdlIGhhdmUgZW5vdWdoIHJlZ2lzdGVycyB0byBtYWtlIHRo
aXMgY2FsbCB3aXRob3V0IGluY3JlbWVudGFsbHkgc2V0dGluZyB1cCB0aGUgYXJndW1lbnRzLiIp
OworCisgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbV9qaXQuZ3JhcGgo
KS52YXJBcmdDaGlsZChub2RlLCAwKSk7CisgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5n
cHIoKTsKKworICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBtX2ppdC5ncmFwaCgp
LnZhckFyZ0NoaWxkKG5vZGUsIDIpKTsKKyAgICAgICAgR1BSUmVnIHZhbHVlR1BSID0gdmFsdWUu
Z3ByKCk7CisKKyAgICAgICAgU3BlY3VsYXRlSW50MzJPcGVyYW5kIGF0dHJpYnV0ZXModGhpcywg
bV9qaXQuZ3JhcGgoKS52YXJBcmdDaGlsZChub2RlLCAzKSk7CisgICAgICAgIEdQUlJlZyBhdHRy
aWJ1dGVzR1BSID0gYXR0cmlidXRlcy5ncHIoKTsKKworICAgICAgICBFZGdlJiBwcm9wZXJ0eUVk
Z2UgPSBtX2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIDEpOworICAgICAgICBzd2l0Y2gg
KHByb3BlcnR5RWRnZS51c2VLaW5kKCkpIHsKKyAgICAgICAgY2FzZSBTdHJpbmdVc2U6IHsKKyAg
ICAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHByb3BlcnR5KHRoaXMsIHByb3BlcnR5RWRn
ZSk7CisgICAgICAgICAgICBHUFJSZWcgcHJvcGVydHlHUFIgPSBwcm9wZXJ0eS5ncHIoKTsKKyAg
ICAgICAgICAgIHNwZWN1bGF0ZVN0cmluZyhwcm9wZXJ0eUVkZ2UsIHByb3BlcnR5R1BSKTsKKwor
ICAgICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAgICAgICAgICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uRGVmaW5lRGF0YVByb3BlcnR5U3RyaW5nLCBOb1Jlc3VsdCwgYmFzZUdQUiwgcHJv
cGVydHlHUFIsIHZhbHVlR1BSLCBhdHRyaWJ1dGVzR1BSKTsKKyAgICAgICAgICAgIG1faml0LmV4
Y2VwdGlvbkNoZWNrKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBj
YXNlIFN5bWJvbFVzZTogeworICAgICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgcHJvcGVy
dHkodGhpcywgcHJvcGVydHlFZGdlKTsKKyAgICAgICAgICAgIEdQUlJlZyBwcm9wZXJ0eUdQUiA9
IHByb3BlcnR5LmdwcigpOworICAgICAgICAgICAgc3BlY3VsYXRlU3ltYm9sKHByb3BlcnR5RWRn
ZSwgcHJvcGVydHlHUFIpOworCisgICAgICAgICAgICBmbHVzaFJlZ2lzdGVycygpOworICAgICAg
ICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWZpbmVEYXRhUHJvcGVydHlTeW1ib2wsIE5v
UmVzdWx0LCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgdmFsdWVHUFIsIGF0dHJpYnV0ZXNHUFIpOwor
ICAgICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisgICAgICAgIGNhc2UgVW50eXBlZFVzZTogeworICAgICAgICAgICAgSlNWYWx1
ZU9wZXJhbmQgcHJvcGVydHkodGhpcywgcHJvcGVydHlFZGdlKTsKKyAgICAgICAgICAgIEdQUlJl
ZyBwcm9wZXJ0eUdQUiA9IHByb3BlcnR5LmdwcigpOworCisgICAgICAgICAgICBmbHVzaFJlZ2lz
dGVycygpOworICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWZpbmVEYXRhUHJv
cGVydHksIE5vUmVzdWx0LCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgdmFsdWVHUFIsIGF0dHJpYnV0
ZXNHUFIpOworICAgICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisKKyAgICAgICAgbm9SZXN1bHQobm9k
ZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGNhc2UgRGVmaW5lQWNjZXNzb3JQcm9w
ZXJ0eTogeworICAgICAgICBzdGF0aWNfYXNzZXJ0KEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJz
ID49IDUsICJXZSBhcmUgYXNzdW1pbmcgd2UgaGF2ZSBlbm91Z2ggcmVnaXN0ZXJzIHRvIG1ha2Ug
dGhpcyBjYWxsIHdpdGhvdXQgaW5jcmVtZW50YWxseSBzZXR0aW5nIHVwIHRoZSBhcmd1bWVudHMu
Iik7CisKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBtX2ppdC5ncmFw
aCgpLnZhckFyZ0NoaWxkKG5vZGUsIDApKTsKKyAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNl
LmdwcigpOworCisgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGdldHRlcih0aGlzLCBtX2pp
dC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIDIpKTsKKyAgICAgICAgR1BSUmVnIGdldHRlckdQ
UiA9IGdldHRlci5ncHIoKTsKKworICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBzZXR0ZXIo
dGhpcywgbV9qaXQuZ3JhcGgoKS52YXJBcmdDaGlsZChub2RlLCAzKSk7CisgICAgICAgIEdQUlJl
ZyBzZXR0ZXJHUFIgPSBzZXR0ZXIuZ3ByKCk7CisKKyAgICAgICAgU3BlY3VsYXRlSW50MzJPcGVy
YW5kIGF0dHJpYnV0ZXModGhpcywgbV9qaXQuZ3JhcGgoKS52YXJBcmdDaGlsZChub2RlLCA0KSk7
CisgICAgICAgIEdQUlJlZyBhdHRyaWJ1dGVzR1BSID0gYXR0cmlidXRlcy5ncHIoKTsKKworICAg
ICAgICBFZGdlJiBwcm9wZXJ0eUVkZ2UgPSBtX2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUs
IDEpOworICAgICAgICBzd2l0Y2ggKHByb3BlcnR5RWRnZS51c2VLaW5kKCkpIHsKKyAgICAgICAg
Y2FzZSBTdHJpbmdVc2U6IHsKKyAgICAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHByb3Bl
cnR5KHRoaXMsIHByb3BlcnR5RWRnZSk7CisgICAgICAgICAgICBHUFJSZWcgcHJvcGVydHlHUFIg
PSBwcm9wZXJ0eS5ncHIoKTsKKyAgICAgICAgICAgIHNwZWN1bGF0ZVN0cmluZyhwcm9wZXJ0eUVk
Z2UsIHByb3BlcnR5R1BSKTsKKworICAgICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAgICAg
ICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eVN0cmlu
ZywgTm9SZXN1bHQsIGJhc2VHUFIsIHByb3BlcnR5R1BSLCBnZXR0ZXJHUFIsIHNldHRlckdQUiwg
YXR0cmlidXRlc0dQUik7CisgICAgICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBTeW1ib2xVc2U6IHsKKyAg
ICAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHByb3BlcnR5KHRoaXMsIHByb3BlcnR5RWRn
ZSk7CisgICAgICAgICAgICBHUFJSZWcgcHJvcGVydHlHUFIgPSBwcm9wZXJ0eS5ncHIoKTsKKyAg
ICAgICAgICAgIHNwZWN1bGF0ZVN5bWJvbChwcm9wZXJ0eUVkZ2UsIHByb3BlcnR5R1BSKTsKKwor
ICAgICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAgICAgICAgICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eVN5bWJvbCwgTm9SZXN1bHQsIGJhc2VHUFIs
IHByb3BlcnR5R1BSLCBnZXR0ZXJHUFIsIHNldHRlckdQUiwgYXR0cmlidXRlc0dQUik7CisgICAg
ICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKyAgICAgICAgY2FzZSBVbnR5cGVkVXNlOiB7CisgICAgICAgICAgICBKU1ZhbHVlT3Bl
cmFuZCBwcm9wZXJ0eSh0aGlzLCBwcm9wZXJ0eUVkZ2UpOworICAgICAgICAgICAgR1BSUmVnIHBy
b3BlcnR5R1BSID0gcHJvcGVydHkuZ3ByKCk7CisKKyAgICAgICAgICAgIGZsdXNoUmVnaXN0ZXJz
KCk7CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlZmluZUFjY2Vzc29yUHJv
cGVydHksIE5vUmVzdWx0LCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgZ2V0dGVyR1BSLCBzZXR0ZXJH
UFIsIGF0dHJpYnV0ZXNHUFIpOworICAgICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisKKyAgICAgICAg
bm9SZXN1bHQobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgR2V0R2xv
YmFsTGV4aWNhbFZhcmlhYmxlOgogICAgIGNhc2UgR2V0R2xvYmFsVmFyOiB7CiAgICAgICAgIEdQ
UlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TENhcGFiaWxpdGllcy5jcHAKaW5kZXggY2FkNDVmZGJhYmU5MGY0NDkzNGQxNGE0YmUzYmQxMGZj
ODI3NjQ0OS4uYTFjZjgwODg1MjNiZGQzN2NiMjBkZjA4MWI0YTAxZGQxYWJjMGQ2NSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcApAQCAtMjYyLDYg
KzI2Miw4IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQog
ICAgIGNhc2UgQ29tcGFyZUdyZWF0ZXI6CiAgICAgY2FzZSBDb21wYXJlR3JlYXRlckVxOgogICAg
IGNhc2UgQ29tcGFyZVN0cmljdEVxOgorICAgIGNhc2UgRGVmaW5lRGF0YVByb3BlcnR5OgorICAg
IGNhc2UgRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eToKICAgICAgICAgLy8gVGhlc2UgYXJlIE9LLgog
ICAgICAgICBicmVhazsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRG
R1RvQjMuY3BwCmluZGV4IGEwODU1NTY0YWQ4MTQ3YzI0NTJjY2RmMDVhMTcyYTQ2OWUyNDNhOWIu
LmMwN2EzNjJhZjA2MTU4M2JmMTZkMjYxNzU3MjkwZTcxMjVjYTdmMWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTY5MCw2ICs2OTAsMTIg
QEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgY2FzZSBQdXRCeVZhbFdpdGhUaGlzOgog
ICAgICAgICAgICAgY29tcGlsZVB1dEJ5VmFsV2l0aFRoaXMoKTsKICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIERlZmluZURhdGFQcm9wZXJ0eToKKyAgICAgICAgICAgIGNvbXBpbGVE
ZWZpbmVEYXRhUHJvcGVydHkoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERl
ZmluZUFjY2Vzc29yUHJvcGVydHk6CisgICAgICAgICAgICBjb21waWxlRGVmaW5lQWNjZXNzb3JQ
cm9wZXJ0eSgpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQXJyYXlQdXNoOgog
ICAgICAgICAgICAgY29tcGlsZUFycmF5UHVzaCgpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0y
NzU5LDYgKzI3NjUsNjEgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgdm1DYWxsKFZv
aWQsIG1fb3V0Lm9wZXJhdGlvbihtX2dyYXBoLmlzU3RyaWN0TW9kZUZvcihtX25vZGUtPm9yaWdp
bi5zZW1hbnRpYykgPyBvcGVyYXRpb25QdXRCeVZhbFdpdGhUaGlzU3RyaWN0IDogb3BlcmF0aW9u
UHV0QnlWYWxXaXRoVGhpcyksCiAgICAgICAgICAgICBtX2NhbGxGcmFtZSwgYmFzZSwgdGhpc1Zh
bHVlLCBwcm9wZXJ0eSwgdmFsdWUpOwogICAgIH0KKworICAgIHZvaWQgY29tcGlsZURlZmluZURh
dGFQcm9wZXJ0eSgpCisgICAgeworICAgICAgICBMVmFsdWUgYmFzZSA9IGxvd0NlbGwobV9ncmFw
aC52YXJBcmdDaGlsZChtX25vZGUsIDApKTsKKyAgICAgICAgTFZhbHVlIHZhbHVlICA9IGxvd0pT
VmFsdWUobV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDIpKTsKKyAgICAgICAgTFZhbHVlIGF0
dHJpYnV0ZXMgPSBsb3dJbnQzMihtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMykpOworICAg
ICAgICBFZGdlJiBwcm9wZXJ0eUVkZ2UgPSBtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMSk7
CisgICAgICAgIHN3aXRjaCAocHJvcGVydHlFZGdlLnVzZUtpbmQoKSkgeworICAgICAgICBjYXNl
IFN0cmluZ1VzZTogeworICAgICAgICAgICAgTFZhbHVlIHByb3BlcnR5ID0gbG93U3RyaW5nKHBy
b3BlcnR5RWRnZSk7CisgICAgICAgICAgICB2bUNhbGwoVm9pZCwgbV9vdXQub3BlcmF0aW9uKG9w
ZXJhdGlvbkRlZmluZURhdGFQcm9wZXJ0eVN0cmluZyksIG1fY2FsbEZyYW1lLCBiYXNlLCBwcm9w
ZXJ0eSwgdmFsdWUsIGF0dHJpYnV0ZXMpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
KyAgICAgICAgY2FzZSBTeW1ib2xVc2U6IHsKKyAgICAgICAgICAgIExWYWx1ZSBwcm9wZXJ0eSA9
IGxvd1N5bWJvbChwcm9wZXJ0eUVkZ2UpOworICAgICAgICAgICAgdm1DYWxsKFZvaWQsIG1fb3V0
Lm9wZXJhdGlvbihvcGVyYXRpb25EZWZpbmVEYXRhUHJvcGVydHlTeW1ib2wpLCBtX2NhbGxGcmFt
ZSwgYmFzZSwgcHJvcGVydHksIHZhbHVlLCBhdHRyaWJ1dGVzKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisgICAgICAgIGNhc2UgVW50eXBlZFVzZTogeworICAgICAgICAgICAgTFZh
bHVlIHByb3BlcnR5ID0gbG93SlNWYWx1ZShwcm9wZXJ0eUVkZ2UpOworICAgICAgICAgICAgdm1D
YWxsKFZvaWQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25EZWZpbmVEYXRhUHJvcGVydHkpLCBt
X2NhbGxGcmFtZSwgYmFzZSwgcHJvcGVydHksIHZhbHVlLCBhdHRyaWJ1dGVzKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBj
b21waWxlRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eSgpCisgICAgeworICAgICAgICBMVmFsdWUgYmFz
ZSA9IGxvd0NlbGwobV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDApKTsKKyAgICAgICAgTFZh
bHVlIGdldHRlciA9IGxvd0NlbGwobV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDIpKTsKKyAg
ICAgICAgTFZhbHVlIHNldHRlciA9IGxvd0NlbGwobV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUs
IDMpKTsKKyAgICAgICAgTFZhbHVlIGF0dHJpYnV0ZXMgPSBsb3dJbnQzMihtX2dyYXBoLnZhckFy
Z0NoaWxkKG1fbm9kZSwgNCkpOworICAgICAgICBFZGdlJiBwcm9wZXJ0eUVkZ2UgPSBtX2dyYXBo
LnZhckFyZ0NoaWxkKG1fbm9kZSwgMSk7CisgICAgICAgIHN3aXRjaCAocHJvcGVydHlFZGdlLnVz
ZUtpbmQoKSkgeworICAgICAgICBjYXNlIFN0cmluZ1VzZTogeworICAgICAgICAgICAgTFZhbHVl
IHByb3BlcnR5ID0gbG93U3RyaW5nKHByb3BlcnR5RWRnZSk7CisgICAgICAgICAgICB2bUNhbGwo
Vm9pZCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkRlZmluZUFjY2Vzc29yUHJvcGVydHlTdHJp
bmcpLCBtX2NhbGxGcmFtZSwgYmFzZSwgcHJvcGVydHksIGdldHRlciwgc2V0dGVyLCBhdHRyaWJ1
dGVzKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgU3ltYm9s
VXNlOiB7CisgICAgICAgICAgICBMVmFsdWUgcHJvcGVydHkgPSBsb3dTeW1ib2wocHJvcGVydHlF
ZGdlKTsKKyAgICAgICAgICAgIHZtQ2FsbChWb2lkLCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9u
RGVmaW5lQWNjZXNzb3JQcm9wZXJ0eVN5bWJvbCksIG1fY2FsbEZyYW1lLCBiYXNlLCBwcm9wZXJ0
eSwgZ2V0dGVyLCBzZXR0ZXIsIGF0dHJpYnV0ZXMpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKyAgICAgICAgY2FzZSBVbnR5cGVkVXNlOiB7CisgICAgICAgICAgICBMVmFsdWUgcHJv
cGVydHkgPSBsb3dKU1ZhbHVlKHByb3BlcnR5RWRnZSk7CisgICAgICAgICAgICB2bUNhbGwoVm9p
ZCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkRlZmluZUFjY2Vzc29yUHJvcGVydHkpLCBtX2Nh
bGxGcmFtZSwgYmFzZSwgcHJvcGVydHksIGdldHRlciwgc2V0dGVyLCBhdHRyaWJ1dGVzKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgfQogICAgIAog
ICAgIHZvaWQgY29tcGlsZVB1dEJ5SWQoKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvQ0NhbGxIZWxwZXJzLmNwcAppbmRleCA3NWQxNWE2MjNjNzJjNDRhZGM0YTRiOWMxM2Y4NTg2
ZjI3MjI2Yjg1Li4zYzNkZjYxOGY5OWZlYjk0MTU0NDAwOTk4NTVkZTFmYmFmNWNiOWQxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuY3BwCkBAIC02OCwxMDcgKzY4
LDYgQEAgdm9pZCBDQ2FsbEhlbHBlcnM6OmVuc3VyZVNoYWRvd0NoaWNrZW5QYWNrZXQoR1BSUmVn
IHNoYWRvd1BhY2tldCwgR1BSUmVnIHNjcmF0Y2gKICAgICBzdG9yZVB0cihzY3JhdGNoMiwgQWRk
cmVzcyhzY3JhdGNoMU5vbkFyZ0dQUikpOwogfQogCi0jaWYgTlVNQkVSX09GX0FSR1VNRU5UX1JF
R0lTVEVSUyA+PSA0Ci12b2lkIENDYWxsSGVscGVyczo6c2V0dXBGb3VyU3R1YkFyZ3NHUFIoR1BS
UmVnIGRlc3RBLCBHUFJSZWcgZGVzdEIsIEdQUlJlZyBkZXN0QywgR1BSUmVnIGRlc3RELCBHUFJS
ZWcgc3JjQSwgR1BSUmVnIHNyY0IsIEdQUlJlZyBzcmNDLCBHUFJSZWcgc3JjRCkKLXsKLSAgICBp
ZiAoIUFTU0VSVF9ESVNBQkxFRCkgewotICAgICAgICBSZWdpc3RlclNldCBkZXN0aW5hdGlvbnMo
ZGVzdEEsIGRlc3RCLCBkZXN0QywgZGVzdEQpOwotICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdF
KGRlc3RpbmF0aW9ucy5udW1iZXJPZlNldEdQUnMoKSA9PSA0LCAiRGVzdGluYXRpb25zIHNob3Vs
ZCBub3QgYmUgYWxpYXNlZC4iKTsKLSAgICB9Ci0KLSAgICB0eXBlZGVmIHN0ZDo6cGFpcjxHUFJS
ZWcsIEdQUlJlZz4gUmVnUGFpcjsKLSAgICBWZWN0b3I8UmVnUGFpciwgND4gcGFpcnM7Ci0KLSAg
ICBpZiAoc3JjQSAhPSBkZXN0QSkKLSAgICAgICAgcGFpcnMuYXBwZW5kKHN0ZDo6bWFrZV9wYWly
KHNyY0EsIGRlc3RBKSk7Ci0gICAgaWYgKHNyY0IgIT0gZGVzdEIpCi0gICAgICAgIHBhaXJzLmFw
cGVuZChzdGQ6Om1ha2VfcGFpcihzcmNCLCBkZXN0QikpOwotICAgIGlmIChzcmNDICE9IGRlc3RD
KQotICAgICAgICBwYWlycy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoc3JjQywgZGVzdEMpKTsKLSAg
ICBpZiAoc3JjRCAhPSBkZXN0RCkKLSAgICAgICAgcGFpcnMuYXBwZW5kKHN0ZDo6bWFrZV9wYWly
KHNyY0QsIGRlc3REKSk7Ci0KLQotI2lmICFBU1NFUlRfRElTQUJMRUQKLSAgICBhdXRvIG51bVVu
aXF1ZVNvdXJjZXMgPSBbJl0gKCkgLT4gdW5zaWduZWQgewotICAgICAgICBSZWdpc3RlclNldCBz
ZXQ7Ci0gICAgICAgIGZvciAoYXV0byYgcGFpciA6IHBhaXJzKSB7Ci0gICAgICAgICAgICBHUFJS
ZWcgc291cmNlID0gcGFpci5maXJzdDsKLSAgICAgICAgICAgIHNldC5zZXQoc291cmNlKTsKLSAg
ICAgICAgfQotICAgICAgICByZXR1cm4gc2V0Lm51bWJlck9mU2V0R1BScygpOwotICAgIH07Ci0K
LSAgICBhdXRvIG51bVVuaXF1ZURlc3RzID0gWyZdICgpIC0+IHVuc2lnbmVkIHsKLSAgICAgICAg
UmVnaXN0ZXJTZXQgc2V0OwotICAgICAgICBmb3IgKGF1dG8mIHBhaXIgOiBwYWlycykgewotICAg
ICAgICAgICAgR1BSUmVnIGRlc3QgPSBwYWlyLnNlY29uZDsKLSAgICAgICAgICAgIHNldC5zZXQo
ZGVzdCk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHNldC5udW1iZXJPZlNldEdQUnMoKTsK
LSAgICB9OwotI2VuZGlmCi0KLSAgICB3aGlsZSAocGFpcnMuc2l6ZSgpKSB7Ci0gICAgICAgIFJl
Z2lzdGVyU2V0IGZyZWVEZXN0aW5hdGlvbnM7Ci0gICAgICAgIGZvciAoYXV0byYgcGFpciA6IHBh
aXJzKSB7Ci0gICAgICAgICAgICBHUFJSZWcgZGVzdCA9IHBhaXIuc2Vjb25kOwotICAgICAgICAg
ICAgZnJlZURlc3RpbmF0aW9ucy5zZXQoZGVzdCk7Ci0gICAgICAgIH0KLSAgICAgICAgZm9yIChh
dXRvJiBwYWlyIDogcGFpcnMpIHsKLSAgICAgICAgICAgIEdQUlJlZyBzb3VyY2UgPSBwYWlyLmZp
cnN0OwotICAgICAgICAgICAgZnJlZURlc3RpbmF0aW9ucy5jbGVhcihzb3VyY2UpOwotICAgICAg
ICB9Ci0KLSAgICAgICAgaWYgKGZyZWVEZXN0aW5hdGlvbnMubnVtYmVyT2ZTZXRHUFJzKCkpIHsK
LSAgICAgICAgICAgIGJvb2wgbWFkZU1vdmUgPSBmYWxzZTsKLSAgICAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBwYWlycy5zaXplKCk7IGkrKykgewotICAgICAgICAgICAgICAgIGF1
dG8mIHBhaXIgPSBwYWlyc1tpXTsKLSAgICAgICAgICAgICAgICBHUFJSZWcgc291cmNlID0gcGFp
ci5maXJzdDsKLSAgICAgICAgICAgICAgICBHUFJSZWcgZGVzdCA9IHBhaXIuc2Vjb25kOwotICAg
ICAgICAgICAgICAgIGlmIChmcmVlRGVzdGluYXRpb25zLmdldChkZXN0KSkgewotICAgICAgICAg
ICAgICAgICAgICBtb3ZlKHNvdXJjZSwgZGVzdCk7Ci0gICAgICAgICAgICAgICAgICAgIHBhaXJz
LnJlbW92ZShpKTsKLSAgICAgICAgICAgICAgICAgICAgbWFkZU1vdmUgPSB0cnVlOwotICAgICAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBBU1NFUlRfVU5VU0VEKG1hZGVNb3ZlLCBtYWRlTW92ZSk7Ci0gICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgfQotCi0gICAgICAgIEFTU0VSVChudW1VbmlxdWVEZXN0cygp
ID09IG51bVVuaXF1ZVNvdXJjZXMoKSk7Ci0gICAgICAgIEFTU0VSVChudW1VbmlxdWVEZXN0cygp
ID09IHBhaXJzLnNpemUoKSk7Ci0gICAgICAgIC8vIFRoZSBzZXQgb2Ygc291cmNlIGFuZCBkZXN0
aW5hdGlvbiByZWdpc3RlcnMgYXJlIGVxdWl2YWxlbnQgc2V0cy4gVGhpcyBtZWFucyB3ZSBkb24n
dCBoYXZlCi0gICAgICAgIC8vIGFueSBmcmVlIGRlc3RpbmF0aW9uIHJlZ2lzdGVycyB0aGF0IHdv
bid0IGFsc28gY2xvYmJlciBhIHNvdXJjZS4gV2UgZ2V0IGFyb3VuZCB0aGlzIGJ5Ci0gICAgICAg
IC8vIGV4Y2hhbmdpbmcgcmVnaXN0ZXJzLgotCi0gICAgICAgIEdQUlJlZyBzb3VyY2UgPSBwYWly
c1swXS5maXJzdDsKLSAgICAgICAgR1BSUmVnIGRlc3QgPSBwYWlyc1swXS5zZWNvbmQ7Ci0gICAg
ICAgIHN3YXAoc291cmNlLCBkZXN0KTsKLSAgICAgICAgcGFpcnMucmVtb3ZlKDApOwotCi0gICAg
ICAgIEdQUlJlZyBuZXdTb3VyY2UgPSBzb3VyY2U7Ci0gICAgICAgIGZvciAoYXV0byYgcGFpciA6
IHBhaXJzKSB7Ci0gICAgICAgICAgICBHUFJSZWcgc291cmNlID0gcGFpci5maXJzdDsKLSAgICAg
ICAgICAgIGlmIChzb3VyY2UgPT0gZGVzdCkgewotICAgICAgICAgICAgICAgIHBhaXIuZmlyc3Qg
PSBuZXdTb3VyY2U7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0KLQotICAgICAgICAvLyBXZSBtYXkgaGF2ZSBpbnRyb2R1Y2VkIHBhaXJzIHRoYXQgaGF2
ZSB0aGUgc2FtZSBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uLiBSZW1vdmUgdGhvc2Ugbm93LgotICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGFpcnMuc2l6ZSgpOyBpKyspIHsKLSAgICAg
ICAgICAgIGF1dG8mIHBhaXIgPSBwYWlyc1tpXTsKLSAgICAgICAgICAgIGlmIChwYWlyLmZpcnN0
ID09IHBhaXIuc2Vjb25kKSB7Ci0gICAgICAgICAgICAgICAgcGFpcnMucmVtb3ZlKGkpOwotICAg
ICAgICAgICAgICAgIGktLTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLX0KLSNl
bmRpZiAvLyBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTID49IDQKLQogfSAvLyBuYW1lc3Bh
Y2UgSlNDCiAKICNlbmRpZiAvLyBFTkFCTEUoSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
Q0NhbGxIZWxwZXJzLmgKaW5kZXggNzk0NTQ2YjBiZDI3YTk5YzBjMTk4OWJlMmU0MTMxNDM0ZGE0
OGZhZS4uNDI2MmNiZWUyYThhODE0ZTQ2YzhjZDFlYjRmNWU2MDg4ODM3ZTQ1ZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oCkBAIC05ODcsNyArOTg3LDE0IEBAIGNs
YXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewogICAgICAgICAgICAg
c3dhcChkZXN0QiwgZGVzdEMpOwogICAgIH0KIAotICAgIHZvaWQgc2V0dXBGb3VyU3R1YkFyZ3NH
UFIoR1BSUmVnIGRlc3RBLCBHUFJSZWcgZGVzdEIsIEdQUlJlZyBkZXN0QywgR1BSUmVnIGRlc3RE
LCBHUFJSZWcgc3JjQSwgR1BSUmVnIHNyY0IsIEdQUlJlZyBzcmNDLCBHUFJSZWcgc3JjRCk7Cisg
ICAgdm9pZCBzZXR1cEZvdXJTdHViQXJnc0dQUihHUFJSZWcgZGVzdEEsIEdQUlJlZyBkZXN0Qiwg
R1BSUmVnIGRlc3RDLCBHUFJSZWcgZGVzdEQsIEdQUlJlZyBzcmNBLCBHUFJSZWcgc3JjQiwgR1BS
UmVnIHNyY0MsIEdQUlJlZyBzcmNEKQorICAgIHsKKyAgICAgICAgc2V0dXBTdHViQXJnc0dQUjw0
Pih7IHsgZGVzdEEsIGRlc3RCLCBkZXN0QywgZGVzdEQgfSB9LCB7IHsgc3JjQSwgc3JjQiwgc3Jj
Qywgc3JjRCB9IH0pOworICAgIH0KKyAgICB2b2lkIHNldHVwRml2ZVN0dWJBcmdzR1BSKEdQUlJl
ZyBkZXN0QSwgR1BSUmVnIGRlc3RCLCBHUFJSZWcgZGVzdEMsIEdQUlJlZyBkZXN0RCwgR1BSUmVn
IGRlc3RFLCBHUFJSZWcgc3JjQSwgR1BSUmVnIHNyY0IsIEdQUlJlZyBzcmNDLCBHUFJSZWcgc3Jj
RCwgR1BSUmVnIHNyY0UpCisgICAgeworICAgICAgICBzZXR1cFN0dWJBcmdzR1BSPDU+KHsgeyBk
ZXN0QSwgZGVzdEIsIGRlc3RDLCBkZXN0RCwgZGVzdEUgfSB9LCB7IHsgc3JjQSwgc3JjQiwgc3Jj
Qywgc3JjRCwgc3JjRSB9IH0pOworICAgIH0KIAogI2lmIENQVShYODZfNjQpIHx8IENQVShBUk02
NCkKICAgICB0ZW1wbGF0ZTxGUFJSZWcgZGVzdEEsIEZQUlJlZyBkZXN0Qj4KQEAgLTE2MTQsNiAr
MTYyMSwxMyBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJzIHsK
ICAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwog
ICAgIH0KIAorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVnIGFyZzQsIEdQ
UlJlZyBhcmc1KQorICAgIHsKKyAgICAgICAgcG9rZShhcmc1LCBQT0tFX0FSR1VNRU5UX09GRlNF
VCArIDEpOworICAgICAgICBwb2tlKGFyZzQsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUKTsKKyAgICAg
ICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOworICAgIH0K
KwogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BS
UmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBUcnVzdGVkSW1tUHRyIGFyZzMsIFRydXN0ZWRJbW0zMiBh
cmc0KQogICAgIHsKICAgICAgICAgcG9rZShhcmc0LCBQT0tFX0FSR1VNRU5UX09GRlNFVCk7CkBA
IC0yMTg0LDYgKzIxOTgsMTIgQEAgY2xhc3MgQ0NhbGxIZWxwZXJzIDogcHVibGljIEFzc2VtYmx5
SGVscGVycyB7CiAgICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUklu
Zm86OmFyZ3VtZW50R1BSMCk7CiAgICAgfQogCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBh
cmczLCBHUFJSZWcgYXJnNCwgR1BSUmVnIGFyZzUpCisgICAgeworICAgICAgICBzZXR1cEZpdmVT
dHViQXJnc0dQUihHUFJJbmZvOjphcmd1bWVudEdQUjEsIEdQUkluZm86OmFyZ3VtZW50R1BSMiwg
R1BSSW5mbzo6YXJndW1lbnRHUFIzLCBHUFJJbmZvOjphcmd1bWVudEdQUjQsIEdQUkluZm86OmFy
Z3VtZW50R1BSNSwgYXJnMSwgYXJnMiwgYXJnMywgYXJnNCwgYXJnNSk7CisgICAgICAgIG1vdmUo
R1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAg
fQorCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShH
UFJSZWcgYXJnMSwgVHJ1c3RlZEltbVB0ciBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVnIGFyZzQp
CiAgICAgewogICAgICAgICBzZXR1cFN0dWJBcmd1bWVudHMxMzQoYXJnMSwgYXJnMywgYXJnNCk7
CkBAIC0yNDcyLDYgKzI0OTIsMTA1IEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3Nl
bWJseUhlbHBlcnMgewogICAgICAgICAvLyBSZWFkeSBmb3IgYSBqdW1wIQogICAgICAgICBtb3Zl
KG5ld0ZyYW1lUG9pbnRlciwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogICAgIH0KKworI2lmIE5V
TUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMgPj0gNAorICAgIHRlbXBsYXRlPHVuc2lnbmVkIE51
bWJlck9mUmVnaXN0ZXJzPgorICAgIHZvaWQgc2V0dXBTdHViQXJnc0dQUihzdGQ6OmFycmF5PEdQ
UlJlZywgTnVtYmVyT2ZSZWdpc3RlcnM+IGRlc3RpbmF0aW9ucywgc3RkOjphcnJheTxHUFJSZWcs
IE51bWJlck9mUmVnaXN0ZXJzPiBzb3VyY2VzKQorICAgIHsKKyAgICAgICAgaWYgKCFBU1NFUlRf
RElTQUJMRUQpIHsKKyAgICAgICAgICAgIFJlZ2lzdGVyU2V0IHNldDsKKyAgICAgICAgICAgIGZv
ciAoR1BSUmVnIGRlc3QgOiBkZXN0aW5hdGlvbnMpCisgICAgICAgICAgICAgICAgc2V0LnNldChk
ZXN0KTsKKyAgICAgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0Uoc2V0Lm51bWJlck9mU2V0R1BS
cygpID09IDQsICJEZXN0aW5hdGlvbnMgc2hvdWxkIG5vdCBiZSBhbGlhc2VkLiIpOworICAgICAg
ICB9CisKKyAgICAgICAgdHlwZWRlZiBzdGQ6OnBhaXI8R1BSUmVnLCBHUFJSZWc+IFJlZ1BhaXI7
CisgICAgICAgIFZlY3RvcjxSZWdQYWlyLCBOdW1iZXJPZlJlZ2lzdGVycz4gcGFpcnM7CisKKyAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IE51bWJlck9mUmVnaXN0ZXJzOyArK2kpIHsK
KyAgICAgICAgICAgIGlmIChzb3VyY2VzW2ldICE9IGRlc3RpbmF0aW9uc1tpXSkKKyAgICAgICAg
ICAgICAgICBwYWlycy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoc291cmNlc1tpXSwgZGVzdGluYXRp
b25zW2ldKSk7CisgICAgICAgIH0KKworI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICAgICAgYXV0
byBudW1VbmlxdWVTb3VyY2VzID0gWyZdICgpIC0+IHVuc2lnbmVkIHsKKyAgICAgICAgICAgIFJl
Z2lzdGVyU2V0IHNldDsKKyAgICAgICAgICAgIGZvciAoYXV0byYgcGFpciA6IHBhaXJzKSB7Cisg
ICAgICAgICAgICAgICAgR1BSUmVnIHNvdXJjZSA9IHBhaXIuZmlyc3Q7CisgICAgICAgICAgICAg
ICAgc2V0LnNldChzb3VyY2UpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHNl
dC5udW1iZXJPZlNldEdQUnMoKTsKKyAgICAgICAgfTsKKworICAgICAgICBhdXRvIG51bVVuaXF1
ZURlc3RzID0gWyZdICgpIC0+IHVuc2lnbmVkIHsKKyAgICAgICAgICAgIFJlZ2lzdGVyU2V0IHNl
dDsKKyAgICAgICAgICAgIGZvciAoYXV0byYgcGFpciA6IHBhaXJzKSB7CisgICAgICAgICAgICAg
ICAgR1BSUmVnIGRlc3QgPSBwYWlyLnNlY29uZDsKKyAgICAgICAgICAgICAgICBzZXQuc2V0KGRl
c3QpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHNldC5udW1iZXJPZlNldEdQ
UnMoKTsKKyAgICAgICAgfTsKKyNlbmRpZgorCisgICAgICAgIHdoaWxlIChwYWlycy5zaXplKCkp
IHsKKyAgICAgICAgICAgIFJlZ2lzdGVyU2V0IGZyZWVEZXN0aW5hdGlvbnM7CisgICAgICAgICAg
ICBmb3IgKGF1dG8mIHBhaXIgOiBwYWlycykgeworICAgICAgICAgICAgICAgIEdQUlJlZyBkZXN0
ID0gcGFpci5zZWNvbmQ7CisgICAgICAgICAgICAgICAgZnJlZURlc3RpbmF0aW9ucy5zZXQoZGVz
dCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmb3IgKGF1dG8mIHBhaXIgOiBwYWlycykg
eworICAgICAgICAgICAgICAgIEdQUlJlZyBzb3VyY2UgPSBwYWlyLmZpcnN0OworICAgICAgICAg
ICAgICAgIGZyZWVEZXN0aW5hdGlvbnMuY2xlYXIoc291cmNlKTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgaWYgKGZyZWVEZXN0aW5hdGlvbnMubnVtYmVyT2ZTZXRHUFJzKCkpIHsKKyAg
ICAgICAgICAgICAgICBib29sIG1hZGVNb3ZlID0gZmFsc2U7CisgICAgICAgICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IHBhaXJzLnNpemUoKTsgaSsrKSB7CisgICAgICAgICAgICAg
ICAgICAgIGF1dG8mIHBhaXIgPSBwYWlyc1tpXTsKKyAgICAgICAgICAgICAgICAgICAgR1BSUmVn
IHNvdXJjZSA9IHBhaXIuZmlyc3Q7CisgICAgICAgICAgICAgICAgICAgIEdQUlJlZyBkZXN0ID0g
cGFpci5zZWNvbmQ7CisgICAgICAgICAgICAgICAgICAgIGlmIChmcmVlRGVzdGluYXRpb25zLmdl
dChkZXN0KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgbW92ZShzb3VyY2UsIGRlc3QpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgcGFpcnMucmVtb3ZlKGkpOworICAgICAgICAgICAgICAg
ICAgICAgICAgbWFkZU1vdmUgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgQVNTRVJUX1VOVVNFRChtYWRlTW92ZSwgbWFkZU1vdmUpOworICAgICAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBBU1NFUlQobnVtVW5pcXVlRGVz
dHMoKSA9PSBudW1VbmlxdWVTb3VyY2VzKCkpOworICAgICAgICAgICAgQVNTRVJUKG51bVVuaXF1
ZURlc3RzKCkgPT0gcGFpcnMuc2l6ZSgpKTsKKyAgICAgICAgICAgIC8vIFRoZSBzZXQgb2Ygc291
cmNlIGFuZCBkZXN0aW5hdGlvbiByZWdpc3RlcnMgYXJlIGVxdWl2YWxlbnQgc2V0cy4gVGhpcyBt
ZWFucyB3ZSBkb24ndCBoYXZlCisgICAgICAgICAgICAvLyBhbnkgZnJlZSBkZXN0aW5hdGlvbiBy
ZWdpc3RlcnMgdGhhdCB3b24ndCBhbHNvIGNsb2JiZXIgYSBzb3VyY2UuIFdlIGdldCBhcm91bmQg
dGhpcyBieQorICAgICAgICAgICAgLy8gZXhjaGFuZ2luZyByZWdpc3RlcnMuCisKKyAgICAgICAg
ICAgIEdQUlJlZyBzb3VyY2UgPSBwYWlyc1swXS5maXJzdDsKKyAgICAgICAgICAgIEdQUlJlZyBk
ZXN0ID0gcGFpcnNbMF0uc2Vjb25kOworICAgICAgICAgICAgc3dhcChzb3VyY2UsIGRlc3QpOwor
ICAgICAgICAgICAgcGFpcnMucmVtb3ZlKDApOworCisgICAgICAgICAgICBHUFJSZWcgbmV3U291
cmNlID0gc291cmNlOworICAgICAgICAgICAgZm9yIChhdXRvJiBwYWlyIDogcGFpcnMpIHsKKyAg
ICAgICAgICAgICAgICBHUFJSZWcgc291cmNlID0gcGFpci5maXJzdDsKKyAgICAgICAgICAgICAg
ICBpZiAoc291cmNlID09IGRlc3QpIHsKKyAgICAgICAgICAgICAgICAgICAgcGFpci5maXJzdCA9
IG5ld1NvdXJjZTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBXZSBtYXkgaGF2ZSBpbnRyb2R1Y2Vk
IHBhaXJzIHRoYXQgaGF2ZSB0aGUgc2FtZSBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uLiBSZW1vdmUg
dGhvc2Ugbm93LgorICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBhaXJzLnNp
emUoKTsgaSsrKSB7CisgICAgICAgICAgICAgICAgYXV0byYgcGFpciA9IHBhaXJzW2ldOworICAg
ICAgICAgICAgICAgIGlmIChwYWlyLmZpcnN0ID09IHBhaXIuc2Vjb25kKSB7CisgICAgICAgICAg
ICAgICAgICAgIHBhaXJzLnJlbW92ZShpKTsKKyAgICAgICAgICAgICAgICAgICAgaS0tOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyNlbmRpZiAv
LyBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTID49IDQKICAgICAKICAgICAvLyBUaGVzZSBv
cGVyYXRpb25zIGNsb2JiZXIgYWxsIHZvbGF0aWxlIHJlZ2lzdGVycy4gVGhleSBhc3N1bWUgdGhh
dCB0aGVyZSBpcyByb29tIG9uIHRoZSB0b3Agb2YKICAgICAvLyBzdGFjayB0byBtYXJzaGFsbCBj
YWxsIGFyZ3VtZW50cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRleCAxYWJlN2M0MzQx
NzQ2M2Y5NjkxNjUyOWE2ZTYxNGVkZTA5YzdmZDM5Li4yMzdkMTlhNGIwODJmMWNiMGUwMmMyZWE1
NzdjYzFjYzMxMDc5NDMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC0zMjIsNiAr
MzIyLDggQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJ
TkVfT1Aob3BfcHV0X2dldHRlcl9zZXR0ZXJfYnlfaWQpCiAgICAgICAgIERFRklORV9PUChvcF9w
dXRfZ2V0dGVyX2J5X3ZhbCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9zZXR0ZXJfYnlfdmFs
KQorICAgICAgICBERUZJTkVfT1Aob3BfZGVmaW5lX2RhdGFfcHJvcGVydHkpCisgICAgICAgIERF
RklORV9PUChvcF9kZWZpbmVfYWNjZXNzb3JfcHJvcGVydHkpCiAKICAgICAgICAgREVGSU5FX09Q
KG9wX3JldCkKICAgICAgICAgREVGSU5FX09QKG9wX3JzaGlmdCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VC5oCmluZGV4IDFiNzU4NWNkZjllZTE2ZGI4MDc4NGVhODU2YTRmNGQwZTAxYTIwMjUuLjM1N2U4
NGRhY2E0Y2UzYjA5NWU3NDI3NGMyZmM1MjBmNGM4OTMwNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuaApAQCAtNTY3LDYgKzU2Nyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVt
aXRfb3BfcHV0X2dldHRlcl9zZXR0ZXJfYnlfaWQoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9p
ZCBlbWl0X29wX3B1dF9nZXR0ZXJfYnlfdmFsKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQg
ZW1pdF9vcF9wdXRfc2V0dGVyX2J5X3ZhbChJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVt
aXRfb3BfZGVmaW5lX2RhdGFfcHJvcGVydHkoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBl
bWl0X29wX2RlZmluZV9hY2Nlc3Nvcl9wcm9wZXJ0eShJbnN0cnVjdGlvbiopOwogICAgICAgICB2
b2lkIGVtaXRfb3BfcmV0KEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9yc2hp
ZnQoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3NldF9mdW5jdGlvbl9uYW1l
KEluc3RydWN0aW9uKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5o
CmluZGV4IDY3MjY0MDc0ZWU0N2NiMTUxNjFkYjA5MjdiNDNmZjc4MDgzYTVjN2YuLjE2YzNiNThi
NGNlYzI0ZjYxNzFjNTE4NjE1NjJhM2Y4ODA4OTMxMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5oCkBAIC01OSw2ICs1OSw3IEBAIGNsYXNzIFJlZ0V4cE9iamVj
dDsKIGNsYXNzIFJlZ2lzdGVyOwogY2xhc3MgU3RydWN0dXJlOwogY2xhc3MgU3RydWN0dXJlU3R1
YkluZm87CitjbGFzcyBTeW1ib2w7CiBjbGFzcyBTeW1ib2xUYWJsZTsKIGNsYXNzIFdhdGNocG9p
bnRTZXQ7CiAKQEAgLTExMSw2ICsxMTIsNyBAQCB0eXBlZGVmIGNoYXIqIFVudXNlZFB0cjsKICAg
ICBTc2k6IFN0cnVjdHVyZVN0dWJJbmZvKgogICAgIFN0OiBTdHJ1Y3R1cmUqCiAgICAgU3ltdGFi
OiBTeW1ib2xUYWJsZSoKKyAgICBTeW06IFN5bWJvbCoKICAgICBUOiBTdHJpbmdJbXBsKgogICAg
IFY6IHZvaWQKICAgICBWbTogVk0qCkBAIC0yNzAsNiArMjcyLDEyIEBAIHR5cGVkZWYgdm9pZCAo
SklUX09QRVJBVElPTiAqVl9KSVRPcGVyYXRpb25fRVBaSikoRXhlY1N0YXRlKiwgdm9pZCosIGlu
dDMyX3QsIEVuCiB0eXBlZGVmIHZvaWQgKEpJVF9PUEVSQVRJT04gKlZfSklUT3BlcmF0aW9uX0VT
c2lKSkkpKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlLCBVbmlxdWVkU3RyaW5nSW1wbCopOwogdHlwZWRlZiB2b2lkIChKSVRfT1BF
UkFUSU9OICpWX0pJVE9wZXJhdGlvbl9FSkpKSSkoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUs
IEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgVW5pcXVlZFN0cmluZ0ltcGwqKTsKIHR5
cGVkZWYgdm9pZCAoSklUX09QRVJBVElPTiAqVl9KSVRPcGVyYXRpb25fRUpKSkopKEV4ZWNTdGF0
ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlKTsKK3R5cGVkZWYgdm9pZCAoSklUX09QRVJBVElPTiAqVl9KSVRPcGVyYXRpb25f
RU9KSlopKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1Zh
bHVlLCBpbnQzMl90KTsKK3R5cGVkZWYgdm9pZCAoSklUX09QRVJBVElPTiAqVl9KSVRPcGVyYXRp
b25fRU9Kc3NKWikoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBKU1N0cmluZyosIEVuY29kZWRKU1Zh
bHVlLCBpbnQzMl90KTsKK3R5cGVkZWYgdm9pZCAoSklUX09QRVJBVElPTiAqVl9KSVRPcGVyYXRp
b25fRU9TeW1KWikoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBTeW1ib2wqLCBFbmNvZGVkSlNWYWx1
ZSwgaW50MzJfdCk7Cit0eXBlZGVmIHZvaWQgKEpJVF9PUEVSQVRJT04gKlZfSklUT3BlcmF0aW9u
X0VPSk9PWikoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgSlNPYmplY3Qq
LCBKU09iamVjdCosIGludDMyX3QpOwordHlwZWRlZiB2b2lkIChKSVRfT1BFUkFUSU9OICpWX0pJ
VE9wZXJhdGlvbl9FT0pzc09PWikoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBKU1N0cmluZyosIEpT
T2JqZWN0KiwgSlNPYmplY3QqLCBpbnQzMl90KTsKK3R5cGVkZWYgdm9pZCAoSklUX09QRVJBVElP
TiAqVl9KSVRPcGVyYXRpb25fRU9TeW1PT1opKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgU3ltYm9s
KiwgSlNPYmplY3QqLCBKU09iamVjdCosIGludDMyX3QpOwogdHlwZWRlZiB2b2lkIChKSVRfT1BF
UkFUSU9OICpWX0pJVE9wZXJhdGlvbl9FV3MpKEV4ZWNTdGF0ZSosIFdhdGNocG9pbnRTZXQqKTsK
IHR5cGVkZWYgdm9pZCAoSklUX09QRVJBVElPTiAqVl9KSVRPcGVyYXRpb25fRVopKEV4ZWNTdGF0
ZSosIGludDMyX3QpOwogdHlwZWRlZiB2b2lkIChKSVRfT1BFUkFUSU9OICpWX0pJVE9wZXJhdGlv
bl9FWkopKEV4ZWNTdGF0ZSosIGludDMyX3QsIEVuY29kZWRKU1ZhbHVlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKaW5kZXggNTYwMjY4YjVj
MzE0Nzg0MTM2MDcyZGRkODAwNzc3ODBmMzM3OGIyYi4uOWQ0ZmQxYWE2YWY2NGI0OGQ3YmUxYjNl
YjQ2OTMwYjUzZjM1ZjRiNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRQcm9wZXJ0eUFjY2Vzcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQ
cm9wZXJ0eUFjY2Vzcy5jcHAKQEAgLTE3NzMsNiArMTc3MywxOCBAQCBKSVQ6Okp1bXBMaXN0IEpJ
VDo6ZW1pdEZsb2F0VHlwZWRBcnJheVB1dEJ5VmFsKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24sCiAgICAgcmV0dXJuIHNsb3dDYXNlczsKIH0KIAordm9pZCBKSVQ6OmVtaXRfb3BfZGVm
aW5lX2RhdGFfcHJvcGVydHkoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAg
ICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwg
c2xvd19wYXRoX2RlZmluZV9kYXRhX3Byb3BlcnR5KTsKKyAgICBzbG93UGF0aENhbGwuY2FsbCgp
OworfQorCit2b2lkIEpJVDo6ZW1pdF9vcF9kZWZpbmVfYWNjZXNzb3JfcHJvcGVydHkoSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1Bh
dGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX2RlZmluZV9hY2Nlc3Nv
cl9wcm9wZXJ0eSk7CisgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgSlNDCiAKICNlbmRpZiAvLyBFTkFCTEUoSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCmluZGV4IDEwMDM3YWY1NmNlNmM3
ZjFhOTNlNTJkMmE3MTdlMjk0ZTAxMDVmOWEuLmM5Yjg0NDM3YzY1NzQ1NTNlMzgwZTUyMTIyNjFh
YjkyNjk2YmUzNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyLmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlci5hc20KQEAgLTE0NTcsNiArMTQ1NywxOCBAQCBfbGxpbnRfb3BfcHV0
X3NldHRlcl9ieV92YWw6CiAgICAgZGlzcGF0Y2goNSkKIAogCitfbGxpbnRfb3BfZGVmaW5lX2Rh
dGFfcHJvcGVydHk6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxPcGNvZGVTbG93UGF0
aChfc2xvd19wYXRoX2RlZmluZV9kYXRhX3Byb3BlcnR5KQorICAgIGRpc3BhdGNoKDUpCisKKwor
X2xsaW50X29wX2RlZmluZV9hY2Nlc3Nvcl9wcm9wZXJ0eToKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgY2FsbE9wY29kZVNsb3dQYXRoKF9zbG93X3BhdGhfZGVmaW5lX2FjY2Vzc29yX3Byb3Bl
cnR5KQorICAgIGRpc3BhdGNoKDYpCisKKwogX2xsaW50X29wX2p0cnVlOgogICAgIHRyYWNlRXhl
Y3V0aW9uKCkKICAgICBqdW1wVHJ1ZU9yRmFsc2UoCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAppbmRleCBjYWY4MjZkYzJhY2RhYjZkOWEz
OTU4YTBjZjAzMTE0MzYyM2JiYTNmLi5mMjVlZTgxMWFjYTllY2E0YTk2ZGE5MGU1ZTBhOTQyNWI5
NzQ1OGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25T
bG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNs
b3dQYXRocy5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJDbG9uZWRBcmd1bWVudHMu
aCIKICNpbmNsdWRlICJDb2RlUHJvZmlsaW5nLmgiCiAjaW5jbHVkZSAiQ29tbW9uU2xvd1BhdGhz
RXhjZXB0aW9ucy5oIgorI2luY2x1ZGUgIkRlZmluZVByb3BlcnR5QXR0cmlidXRlcy5oIgogI2lu
Y2x1ZGUgIkRpcmVjdEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIkVycm9yLmgiCiAjaW5jbHVkZSAi
RXJyb3JIYW5kbGluZ1Njb3BlLmgiCkBAIC05MzAsNCArOTMxLDM5IEBAIFNMT1dfUEFUSF9ERUNM
KHNsb3dfcGF0aF9wdXRfYnlfdmFsX3dpdGhfdGhpcykKICAgICBFTkQoKTsKIH0KIAorU0xPV19Q
QVRIX0RFQ0woc2xvd19wYXRoX2RlZmluZV9kYXRhX3Byb3BlcnR5KQoreworICAgIEJFR0lOKCk7
CisgICAgSlNPYmplY3QqIGJhc2UgPSBhc09iamVjdChPUF9DKDEpLmpzVmFsdWUoKSk7CisgICAg
SlNWYWx1ZSBwcm9wZXJ0eSA9IE9QX0MoMikuanNWYWx1ZSgpOworICAgIEpTVmFsdWUgdmFsdWUg
PSBPUF9DKDMpLmpzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIGF0dHJpYnV0ZXMgPSBPUF9DKDQpLmpz
VmFsdWUoKTsKKyAgICBBU1NFUlQoYXR0cmlidXRlcy5pc0ludDMyKCkpOworCisgICAgYXV0byBw
cm9wZXJ0eU5hbWUgPSBwcm9wZXJ0eS50b1Byb3BlcnR5S2V5KGV4ZWMpOworICAgIENIRUNLX0VY
Q0VQVElPTigpOworICAgIFByb3BlcnR5RGVzY3JpcHRvciBkZXNjcmlwdG9yID0gdG9Qcm9wZXJ0
eURlc2NyaXB0b3IodmFsdWUsIGpzVW5kZWZpbmVkKCksIGpzVW5kZWZpbmVkKCksIERlZmluZVBy
b3BlcnR5QXR0cmlidXRlcyhhdHRyaWJ1dGVzLmFzSW50MzIoKSkpOworICAgIEFTU0VSVCgoZGVz
Y3JpcHRvci5hdHRyaWJ1dGVzKCkgJiBBY2Nlc3NvcikgfHwgKCFkZXNjcmlwdG9yLmlzQWNjZXNz
b3JEZXNjcmlwdG9yKCkpKTsKKyAgICBiYXNlLT5tZXRob2RUYWJsZSh2bSktPmRlZmluZU93blBy
b3BlcnR5KGJhc2UsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgdHJ1ZSk7CisgICAg
RU5EKCk7Cit9CisKK1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9kZWZpbmVfYWNjZXNzb3JfcHJv
cGVydHkpCit7CisgICAgQkVHSU4oKTsKKyAgICBKU09iamVjdCogYmFzZSA9IGFzT2JqZWN0KE9Q
X0MoMSkuanNWYWx1ZSgpKTsKKyAgICBKU1ZhbHVlIHByb3BlcnR5ID0gT1BfQygyKS5qc1ZhbHVl
KCk7CisgICAgSlNWYWx1ZSBnZXR0ZXIgPSBPUF9DKDMpLmpzVmFsdWUoKTsKKyAgICBKU1ZhbHVl
IHNldHRlciA9IE9QX0MoNCkuanNWYWx1ZSgpOworICAgIEpTVmFsdWUgYXR0cmlidXRlcyA9IE9Q
X0MoNSkuanNWYWx1ZSgpOworICAgIEFTU0VSVChhdHRyaWJ1dGVzLmlzSW50MzIoKSk7CisKKyAg
ICBhdXRvIHByb3BlcnR5TmFtZSA9IHByb3BlcnR5LnRvUHJvcGVydHlLZXkoZXhlYyk7CisgICAg
Q0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgUHJvcGVydHlEZXNjcmlwdG9yIGRlc2NyaXB0b3IgPSB0
b1Byb3BlcnR5RGVzY3JpcHRvcihqc1VuZGVmaW5lZCgpLCBnZXR0ZXIsIHNldHRlciwgRGVmaW5l
UHJvcGVydHlBdHRyaWJ1dGVzKGF0dHJpYnV0ZXMuYXNJbnQzMigpKSk7CisgICAgQVNTRVJUKChk
ZXNjcmlwdG9yLmF0dHJpYnV0ZXMoKSAmIEFjY2Vzc29yKSB8fCAoIWRlc2NyaXB0b3IuaXNBY2Nl
c3NvckRlc2NyaXB0b3IoKSkpOworICAgIGJhc2UtPm1ldGhvZFRhYmxlKHZtKS0+ZGVmaW5lT3du
UHJvcGVydHkoYmFzZSwgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCB0cnVlKTsKKyAg
ICBFTkQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCmluZGV4IGMyNmE4YzdjZDNiZDM1MzQ1YmU5
ZWNjMzUwYWE0MjFlNTQxNjg2NWYuLmNkZDRmNDQ3ZDUxOGNmNGI0MWZmODU4ZGJkODA4ZWZlN2Ji
MzUxYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNs
b3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQ
YXRocy5oCkBAIC0yNTgsNiArMjU4LDggQEAgU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0
aF9nZXRfYnlfaWRfd2l0aF90aGlzKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhf
Z2V0X2J5X3ZhbF93aXRoX3RoaXMpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9w
dXRfYnlfaWRfd2l0aF90aGlzKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHV0
X2J5X3ZhbF93aXRoX3RoaXMpOworU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9kZWZp
bmVfZGF0YV9wcm9wZXJ0eSk7CitTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2RlZmlu
ZV9hY2Nlc3Nvcl9wcm9wZXJ0eSk7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RlZmluZVByb3BlcnR5QXR0cmlidXRl
cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjNkOGEyNDhiOTE2MGM0NzY0YjEwY2E0MTFmYjJmMmM3NWNhOTgzNjAK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EZWZpbmVQ
cm9wZXJ0eUF0dHJpYnV0ZXMuaApAQCAtMCwwICsxLDE0MiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3Rm
L1RyaVN0YXRlLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBEZWZpbmVQcm9wZXJ0eUF0
dHJpYnV0ZXMgeworcHVibGljOgorICAgIHN0YXRpY19hc3NlcnQoRmFsc2VUcmlTdGF0ZSA9PSAw
LCAiRmFsc2VUcmlTdGF0ZSBpcyAwLiIpOworICAgIHN0YXRpY19hc3NlcnQoVHJ1ZVRyaVN0YXRl
ID09IDEsICJUcnVlVHJpU3RhdGUgaXMgMS4iKTsKKyAgICBzdGF0aWNfYXNzZXJ0KE1peGVkVHJp
U3RhdGUgPT0gMiwgIk1peGVkVHJpU3RhdGUgaXMgMi4iKTsKKworICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBDb25maWd1cmFibGVTaGlmdCA9IDA7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IEVudW1lcmFibGVTaGlmdCA9IDI7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFdyaXRhYmxl
U2hpZnQgPSA0OworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBWYWx1ZVNoaWZ0ID0gNjsKKyAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgR2V0U2hpZnQgPSA3OworICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBTZXRTaGlmdCA9IDg7CisKKyAgICBEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMoKQor
ICAgICAgICA6IG1fYXR0cmlidXRlcygKKyAgICAgICAgICAgIChNaXhlZFRyaVN0YXRlIDw8IENv
bmZpZ3VyYWJsZVNoaWZ0KQorICAgICAgICAgICAgfCAoTWl4ZWRUcmlTdGF0ZSA8PCBFbnVtZXJh
YmxlU2hpZnQpCisgICAgICAgICAgICB8IChNaXhlZFRyaVN0YXRlIDw8IFdyaXRhYmxlU2hpZnQp
CisgICAgICAgICAgICB8ICgwIDw8IFZhbHVlU2hpZnQpCisgICAgICAgICAgICB8ICgwIDw8IEdl
dFNoaWZ0KQorICAgICAgICAgICAgfCAoMCA8PCBTZXRTaGlmdCkpCisgICAgeworICAgIH0KKwor
ICAgIGV4cGxpY2l0IERlZmluZVByb3BlcnR5QXR0cmlidXRlcyh1bnNpZ25lZCBhdHRyaWJ1dGVz
KQorICAgICAgICA6IG1fYXR0cmlidXRlcyhhdHRyaWJ1dGVzKQorICAgIHsKKyAgICB9CisKKyAg
ICB1bnNpZ25lZCByYXdSZXByZXNlbnRhdGlvbigpIGNvbnN0CisgICAgeworICAgICAgICByZXR1
cm4gbV9hdHRyaWJ1dGVzOworICAgIH0KKworICAgIGJvb2wgaGFzVmFsdWUoKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIG1fYXR0cmlidXRlcyAmICgwYjEgPDwgVmFsdWVTaGlmdCk7CisgICAgfQor
CisgICAgdm9pZCBzZXRWYWx1ZSgpCisgICAgeworICAgICAgICBtX2F0dHJpYnV0ZXMgPSBtX2F0
dHJpYnV0ZXMgfCAoMGIxIDw8IFZhbHVlU2hpZnQpOworICAgIH0KKworICAgIGJvb2wgaGFzR2V0
KCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX2F0dHJpYnV0ZXMgJiAoMGIxIDw8IEdldFNoaWZ0
KTsKKyAgICB9CisKKyAgICB2b2lkIHNldEdldCgpCisgICAgeworICAgICAgICBtX2F0dHJpYnV0
ZXMgPSBtX2F0dHJpYnV0ZXMgfCAoMGIxIDw8IEdldFNoaWZ0KTsKKyAgICB9CisKKyAgICBib29s
IGhhc1NldCgpCisgICAgeworICAgICAgICByZXR1cm4gbV9hdHRyaWJ1dGVzICYgKDBiMSA8PCBT
ZXRTaGlmdCk7CisgICAgfQorCisgICAgdm9pZCBzZXRTZXQoKQorICAgIHsKKyAgICAgICAgbV9h
dHRyaWJ1dGVzID0gbV9hdHRyaWJ1dGVzIHwgKDBiMSA8PCBTZXRTaGlmdCk7CisgICAgfQorCisg
ICAgVHJpU3RhdGUgd3JpdGFibGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGV4dHJhY3RUcmlT
dGF0ZShXcml0YWJsZVNoaWZ0KTsKKyAgICB9CisKKyAgICBUcmlTdGF0ZSBjb25maWd1cmFibGUo
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGV4dHJhY3RUcmlTdGF0ZShDb25maWd1cmFibGVTaGlm
dCk7CisgICAgfQorCisgICAgVHJpU3RhdGUgZW51bWVyYWJsZSgpCisgICAgeworICAgICAgICBy
ZXR1cm4gZXh0cmFjdFRyaVN0YXRlKEVudW1lcmFibGVTaGlmdCk7CisgICAgfQorCisgICAgdm9p
ZCBzZXRXcml0YWJsZShib29sIHZhbHVlKQorICAgIHsKKyAgICAgICAgZmlsbFdpdGhUcmlTdGF0
ZSh2YWx1ZSA/IFRydWVUcmlTdGF0ZSA6IEZhbHNlVHJpU3RhdGUsIFdyaXRhYmxlU2hpZnQpOwor
ICAgIH0KKworICAgIHZvaWQgc2V0Q29uZmlndXJhYmxlKGJvb2wgdmFsdWUpCisgICAgeworICAg
ICAgICBmaWxsV2l0aFRyaVN0YXRlKHZhbHVlID8gVHJ1ZVRyaVN0YXRlIDogRmFsc2VUcmlTdGF0
ZSwgQ29uZmlndXJhYmxlU2hpZnQpOworICAgIH0KKworICAgIHZvaWQgc2V0RW51bWVyYWJsZShi
b29sIHZhbHVlKQorICAgIHsKKyAgICAgICAgZmlsbFdpdGhUcmlTdGF0ZSh2YWx1ZSA/IFRydWVU
cmlTdGF0ZSA6IEZhbHNlVHJpU3RhdGUsIEVudW1lcmFibGVTaGlmdCk7CisgICAgfQorCitwcml2
YXRlOgorICAgIHZvaWQgZmlsbFdpdGhUcmlTdGF0ZShUcmlTdGF0ZSBzdGF0ZSwgdW5zaWduZWQg
c2hpZnQpCisgICAgeworICAgICAgICB1bnNpZ25lZCBtYXNrID0gMGIxMSA8PCBzaGlmdDsKKyAg
ICAgICAgbV9hdHRyaWJ1dGVzID0gKG1fYXR0cmlidXRlcyAmIH5tYXNrKSB8IChzdGF0ZSA8PCBz
aGlmdCk7CisgICAgfQorCisgICAgVHJpU3RhdGUgZXh0cmFjdFRyaVN0YXRlKHVuc2lnbmVkIHNo
aWZ0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFRyaVN0YXRlPigobV9hdHRy
aWJ1dGVzID4+IHNoaWZ0KSAmIDBiMTEpOworICAgIH0KKworICAgIHVuc2lnbmVkIG1fYXR0cmli
dXRlczsKK307CisKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggOTczYzJlODE2OWViOGZjNWVh
ZWY2NDY3MGI0NjExMzYyMWE1NThhMC4uNWM5NGI5MjVjYmU2NWUxOTI0MWQ0OWEyOGYxZTExYTA5
ZjY3MTI3MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmNwcApAQCAtNDA0LDcgKzQwNCw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQo
Vk0mIHZtKQogICAgIG1fZnVuY3Rpb25Qcm90b0hhc0luc3RhbmNlU3ltYm9sRnVuY3Rpb24uc2V0
KHZtLCB0aGlzLCBoYXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9uKTsKICAgICBtX3Rocm93VHlwZUVy
cm9yR2V0dGVyU2V0dGVyLmluaXRMYXRlcigKICAgICAgICAgW10gKGNvbnN0IEluaXRpYWxpemVy
PEdldHRlclNldHRlcj4mIGluaXQpIHsKLSAgICAgICAgICAgIEpTRnVuY3Rpb24qIHRocm93ZXIg
PSBKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwgaW5pdC5vd25lciwgMCwgU3RyaW5nKCksIGds
b2JhbEZ1bmNUaHJvd1R5cGVFcnJvcik7CisgICAgICAgICAgICBKU0Z1bmN0aW9uKiB0aHJvd2Vy
ID0gaW5pdC5vd25lci0+dGhyb3dUeXBlRXJyb3JGdW5jdGlvbigpOwogICAgICAgICAgICAgR2V0
dGVyU2V0dGVyKiBnZXR0ZXJTZXR0ZXIgPSBHZXR0ZXJTZXR0ZXI6OmNyZWF0ZShpbml0LnZtLCBp
bml0Lm93bmVyKTsKICAgICAgICAgICAgIGdldHRlclNldHRlci0+c2V0R2V0dGVyKGluaXQudm0s
IGluaXQub3duZXIsIHRocm93ZXIpOwogICAgICAgICAgICAgZ2V0dGVyU2V0dGVyLT5zZXRTZXR0
ZXIoaW5pdC52bSwgaW5pdC5vd25lciwgdGhyb3dlcik7CkBAIC01ODEsOCArNTgxLDggQEAgbV8g
IyMgcHJvcGVyTmFtZSAjIyBTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBpbnN0YW5jZVR5cGU6OmNy
ZWF0ZVN0cnVjdHVyZSh2bSwgdGgKICAgICBPYmplY3RDb25zdHJ1Y3Rvciogb2JqZWN0Q29uc3Ry
dWN0b3IgPSBPYmplY3RDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCB0aGlzLCBPYmplY3RDb25zdHJ1
Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgp
KSwgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpOwogICAgIG1fb2JqZWN0Q29uc3RydWN0b3Iuc2V0
KHZtLCB0aGlzLCBvYmplY3RDb25zdHJ1Y3Rvcik7CiAKLSAgICBKU0Z1bmN0aW9uKiBkZWZpbmVQ
cm9wZXJ0eUZ1bmN0aW9uID0gbV9vYmplY3RDb25zdHJ1Y3Rvci0+YWRkRGVmaW5lUHJvcGVydHko
ZXhlYywgdGhpcyk7Ci0gICAgbV9kZWZpbmVQcm9wZXJ0eUZ1bmN0aW9uLnNldCh2bSwgdGhpcywg
ZGVmaW5lUHJvcGVydHlGdW5jdGlvbik7CisgICAgSlNGdW5jdGlvbiogdGhyb3dUeXBlRXJyb3JG
dW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCksIGdsb2Jh
bEZ1bmNUaHJvd1R5cGVFcnJvcik7CisgICAgbV90aHJvd1R5cGVFcnJvckZ1bmN0aW9uLnNldCh2
bSwgdGhpcywgdGhyb3dUeXBlRXJyb3JGdW5jdGlvbik7CiAKICAgICBKU0NlbGwqIGZ1bmN0aW9u
Q29uc3RydWN0b3IgPSBGdW5jdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIEZ1bmN0aW9uQ29u
c3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5n
ZXQoKSksIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpOwogICAgIEFycmF5Q29uc3RydWN0b3Iq
IGFycmF5Q29uc3RydWN0b3IgPSBBcnJheUNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIHRoaXMsIEFy
cmF5Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3Rv
dHlwZS5nZXQoKSksIG1fYXJyYXlQcm90b3R5cGUuZ2V0KCksIG1fc3BlY2llc0dldHRlclNldHRl
ci5nZXQoKSk7CkBAIC04MDMsNyArODAzLDcgQEAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24o
dm0sIHZtLnByb3BlcnR5TmFtZXMtPiBqc05hbWUsIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3QKICAg
ICBtX3NwZWNpYWxQb2ludGVyc1tTcGVjaWFsOjpPYmplY3RDb25zdHJ1Y3Rvcl0gPSBvYmplY3RD
b25zdHJ1Y3RvcjsKICAgICBtX3NwZWNpYWxQb2ludGVyc1tTcGVjaWFsOjpBcnJheUNvbnN0cnVj
dG9yXSA9IGFycmF5Q29uc3RydWN0b3I7CiAKLSAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRp
Y19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpEZWZpbmVQcm9wZXJ0eUZ1bmN0aW9u
KV0gPSBtX2RlZmluZVByb3BlcnR5RnVuY3Rpb24uZ2V0KCk7CisgICAgbV9saW5rVGltZUNvbnN0
YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6VGhyb3dUeXBlRXJy
b3JGdW5jdGlvbildID0gbV90aHJvd1R5cGVFcnJvckZ1bmN0aW9uLmdldCgpOwogCiAgICAgaWYg
KFVOTElLRUxZKE9wdGlvbnM6OnVzZURvbGxhclZNKCkpKSB7CiAgICAgICAgIEpTRG9sbGFyVk1Q
cm90b3R5cGUqIGRvbGxhclZNUHJvdG90eXBlID0gSlNEb2xsYXJWTVByb3RvdHlwZTo6Y3JlYXRl
KHZtLCB0aGlzLCBKU0RvbGxhclZNUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMs
IG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSk7CkBAIC0xMDY2LDcgKzEwNjYsNyBAQCB2b2lkIEpT
R2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZp
c2l0b3IpCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZXZhbEZ1bmN0aW9uKTsK
ICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9jYWxsRnVuY3Rpb24pOwogICAgIHZp
c2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2FwcGx5RnVuY3Rpb24pOwotICAgIHZpc2l0b3Iu
YXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2RlZmluZVByb3BlcnR5RnVuY3Rpb24pOworICAgIHZpc2l0
b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3Rocm93VHlwZUVycm9yRnVuY3Rpb24pOwogICAgIHRo
aXNPYmplY3QtPm1fYXJyYXlQcm90b1RvU3RyaW5nRnVuY3Rpb24udmlzaXQodmlzaXRvcik7CiAg
ICAgdGhpc09iamVjdC0+bV9hcnJheVByb3RvVmFsdWVzRnVuY3Rpb24udmlzaXQodmlzaXRvcik7
CiAgICAgdGhpc09iamVjdC0+bV9pbml0aWFsaXplUHJvbWlzZUZ1bmN0aW9uLnZpc2l0KHZpc2l0
b3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgK
aW5kZXggMzVjZDA1ZmZkMGY3MTRkZGE0ZTUxYmRlZTA4NWZhZDI1MGI0MDAxMy4uMDVhYjlhMGM0
MjBjNWEzNzMyNmU1N2M1ODlhYzRmYTE4YTFlOGFlYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC0yMzQsNyArMjM0LDcgQEAgY2xhc3Mg
SlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAg
V3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1fZXZhbEZ1bmN0aW9uOwogICAgIFdyaXRlQmFycmll
cjxKU0Z1bmN0aW9uPiBtX2NhbGxGdW5jdGlvbjsKICAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlv
bj4gbV9hcHBseUZ1bmN0aW9uOwotICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBtX2RlZmlu
ZVByb3BlcnR5RnVuY3Rpb247CisgICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1fdGhyb3dU
eXBlRXJyb3JGdW5jdGlvbjsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIEpTRnVu
Y3Rpb24+IG1fYXJyYXlQcm90b1RvU3RyaW5nRnVuY3Rpb247CiAgICAgTGF6eVByb3BlcnR5PEpT
R2xvYmFsT2JqZWN0LCBKU0Z1bmN0aW9uPiBtX2FycmF5UHJvdG9WYWx1ZXNGdW5jdGlvbjsKICAg
ICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIEpTRnVuY3Rpb24+IG1faW5pdGlhbGl6ZVBy
b21pc2VGdW5jdGlvbjsKQEAgLTQ3OSw3ICs0NzksNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6
IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBKU0Z1bmN0aW9uKiBldmFs
RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2V2YWxGdW5jdGlvbi5nZXQoKTsgfQogICAgIEpT
RnVuY3Rpb24qIGNhbGxGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbEZ1bmN0aW9uLmdl
dCgpOyB9CiAgICAgSlNGdW5jdGlvbiogYXBwbHlGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
YXBwbHlGdW5jdGlvbi5nZXQoKTsgfQotICAgIEpTRnVuY3Rpb24qIGRlZmluZVByb3BlcnR5RnVu
Y3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2RlZmluZVByb3BlcnR5RnVuY3Rpb24uZ2V0KCk7IH0K
KyAgICBKU0Z1bmN0aW9uKiB0aHJvd1R5cGVFcnJvckZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV90aHJvd1R5cGVFcnJvckZ1bmN0aW9uLmdldCgpOyB9CiAgICAgSlNGdW5jdGlvbiogYXJyYXlQ
cm90b1RvU3RyaW5nRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2FycmF5UHJvdG9Ub1N0cmlu
Z0Z1bmN0aW9uLmdldCh0aGlzKTsgfQogICAgIEpTRnVuY3Rpb24qIGFycmF5UHJvdG9WYWx1ZXNG
dW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uLmdldCh0
aGlzKTsgfQogICAgIEpTRnVuY3Rpb24qIGluaXRpYWxpemVQcm9taXNlRnVuY3Rpb24oKSBjb25z
dCB7IHJldHVybiBtX2luaXRpYWxpemVQcm9taXNlRnVuY3Rpb24uZ2V0KHRoaXMpOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAK
aW5kZXggZDk5MTQ5YWE0MWM2MTJhNjJhNmQ5MmU5MjRhNmM4NDhiNTE2Y2ZjZC4uOTNhY2NjMTE5
ZmE4NzgwNjhiZGYwZjFjYmRlOGE1NzFmOTY3NmMyNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcApAQCAtMTA3LDE0ICsxMDcs
NiBAQCB2b2lkIE9iamVjdENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE9iagogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lU
SE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdldE93blBy
b3BlcnR5TmFtZXNQcml2YXRlTmFtZSgpLCBvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5
TmFtZXMsIERvbnRFbnVtLCAxKTsKIH0KIAotSlNGdW5jdGlvbiogT2JqZWN0Q29uc3RydWN0b3I6
OmFkZERlZmluZVByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCkKLXsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgIEpTRnVuY3Rpb24qIGRl
ZmluZVByb3BlcnR5RnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVj
dCwgMywgdm0ucHJvcGVydHlOYW1lcy0+ZGVmaW5lUHJvcGVydHkuc3RyaW5nKCksIG9iamVjdENv
bnN0cnVjdG9yRGVmaW5lUHJvcGVydHkpOwotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9u
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5kZWZpbmVQcm9wZXJ0eSwgZGVmaW5lUHJvcGVydHlGdW5j
dGlvbiwgRG9udEVudW0pOwotICAgIHJldHVybiBkZWZpbmVQcm9wZXJ0eUZ1bmN0aW9uOwotfQot
CiAvLyBFUyAxOS4xLjEuMSBPYmplY3QoW3ZhbHVlXSkKIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpT
T2JqZWN0KiBjb25zdHJ1Y3RPYmplY3QoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIG5ld1Rhcmdl
dCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENv
bnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1
Y3Rvci5oCmluZGV4IGIxNjE0ZGFiZGIzODVjN2NkNmUyZjJkNWNkZDY4NzFlNzk3ZDQxOGMuLjJh
YWE4MTU0MjUyYjk3MWI2ZTcyOGZhNmQwMDE5OTQ0MDQ0YmQ5MTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuaApAQCAtNTQsOCArNTQs
NiBAQCBjbGFzcyBPYmplY3RDb25zdHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsK
ICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3Rv
dHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogICAg
IH0KIAotICAgIEpTRnVuY3Rpb24qIGFkZERlZmluZVByb3BlcnR5KEV4ZWNTdGF0ZSosIEpTR2xv
YmFsT2JqZWN0Kik7Ci0KIHByb3RlY3RlZDoKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwg
SlNHbG9iYWxPYmplY3QqLCBPYmplY3RQcm90b3R5cGUqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlEZXNjcmlwdG9yLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eURlc2NyaXB0b3IuaAppbmRleCBhYTYxZWVhNDk1
YzRkMWM5ZDVhMGY4MjQ3OWQzMjQ1MzY2NTVhMzY1Li5lZTk3MWY1NTAzNjc2NzMyMDk3OTllODE5
ZTVkNDMwMWRkNTg0NDg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Qcm9wZXJ0eURlc2NyaXB0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Qcm9wZXJ0eURlc2NyaXB0b3IuaApAQCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBQcm9wZXJ0
eURlc2NyaXB0b3JfaAogI2RlZmluZSBQcm9wZXJ0eURlc2NyaXB0b3JfaAogCisjaW5jbHVkZSAi
RGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogCiBu
YW1lc3BhY2UgSlNDIHsKQEAgLTkzLDYgKzk0LDMyIEBAIGNsYXNzIFByb3BlcnR5RGVzY3JpcHRv
ciB7CiAgICAgdW5zaWduZWQgbV9zZWVuQXR0cmlidXRlczsKIH07CiAKK2lubGluZSBQcm9wZXJ0
eURlc2NyaXB0b3IgdG9Qcm9wZXJ0eURlc2NyaXB0b3IoSlNWYWx1ZSB2YWx1ZSwgSlNWYWx1ZSBn
ZXR0ZXIsIEpTVmFsdWUgc2V0dGVyLCBEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMgYXR0cmlidXRl
cykKK3sKKyAgICAvLyBXZSBhc3N1bWUgdGhhdCB2YWxpZGF0aW9uIGlzIGFscmVhZHkgZG9uZS4K
KyAgICBQcm9wZXJ0eURlc2NyaXB0b3IgZGVzYzsKKworICAgIGlmIChhdHRyaWJ1dGVzLmVudW1l
cmFibGUoKSAhPSBNaXhlZFRyaVN0YXRlKQorICAgICAgICBkZXNjLnNldEVudW1lcmFibGUoYXR0
cmlidXRlcy5lbnVtZXJhYmxlKCkpOworCisgICAgaWYgKGF0dHJpYnV0ZXMuY29uZmlndXJhYmxl
KCkgIT0gTWl4ZWRUcmlTdGF0ZSkKKyAgICAgICAgZGVzYy5zZXRDb25maWd1cmFibGUoYXR0cmli
dXRlcy5jb25maWd1cmFibGUoKSk7CisKKyAgICBpZiAoYXR0cmlidXRlcy5oYXNWYWx1ZSgpKQor
ICAgICAgICBkZXNjLnNldFZhbHVlKHZhbHVlKTsKKworICAgIGlmIChhdHRyaWJ1dGVzLndyaXRh
YmxlKCkgIT0gTWl4ZWRUcmlTdGF0ZSkKKyAgICAgICAgZGVzYy5zZXRXcml0YWJsZShhdHRyaWJ1
dGVzLndyaXRhYmxlKCkpOworCisgICAgaWYgKGF0dHJpYnV0ZXMuaGFzR2V0KCkpCisgICAgICAg
IGRlc2Muc2V0R2V0dGVyKGdldHRlcik7CisKKyAgICBpZiAoYXR0cmlidXRlcy5oYXNTZXQoKSkK
KyAgICAgICAgZGVzYy5zZXRTZXR0ZXIoc2V0dGVyKTsKKworICAgIHJldHVybiBkZXNjOworfQor
CiB9CiAKICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>289876</attachid>
            <date>2016-09-26 14:47:36 -0700</date>
            <delta_ts>2016-09-26 16:09:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162108-20160926144439.patch</filename>
            <type>text/plain</type>
            <size>86923</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA2Mzc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
ZmFjYTk1OGQ0YzdiMWViMWE1MjFiYjEwNjQwNDMxZTQ4NjVjOTRkLi5lZDM2YWQ3OGE5ZDY0ZDQ3
YzMyNDI3ZDAxZTExZTI0OTZjNTFlM2YwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEg
KzEsMTA0IEBACisyMDE2LTA5LTI2ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwu
Y29tPgorCisgICAgICAgIFtKU0NdIEFkZCBhIG5ldyBieXRlIGNvZGUgb3BfZGVmaW5lX3Byb3Bl
cnR5IGluc3RlYWQgb2YgY2FsbGluZyBkZWZpbmVQcm9wZXJ0eQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyMTA4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uOgor
ICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmg6CisgICAgICAgIChKU0M6OmNvbXB1
dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpjb21wdXRlRGVmc0ZvckJ5
dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAg
ICAoSlNDOjpDb2RlQmxvY2s6OmR1bXBCeXRlY29kZSk6CisgICAgICAgICogYnl0ZWNvZGUvU3Bl
Y2lhbFBvaW50ZXIuaDoKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
Y3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE1vdmVMaW5rVGltZUNv
bnN0YW50KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxsRGVmaW5l
UHJvcGVydHkpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgor
ICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpQ
cm9wZXJ0eUxpc3ROb2RlOjplbWl0UHV0Q29uc3RhbnRQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6
OkJpdHdpc2VOb3ROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpDbGFzc0V4cHJO
b2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpPYmplY3RQYXR0ZXJuTm9kZTo6Ymlu
ZFZhbHVlKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoK
KyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBl
Pjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAg
ICAqIGRmZy9ERkdDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNhcGFiaWxp
dHlMZXZlbCk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6
REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAqIGRmZy9E
RkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAg
KiBkZmcvREZHT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFn
YXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAg
ICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRp
dmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FsbE9wZXJhdGlv
bik6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3Bl
Y3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlND
OjpGVEw6OmNhbkNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgor
ICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTm9kZSk6CisgICAg
ICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVEZWZpbmVEYXRhUHJvcGVy
dHkpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlRGVmaW5l
QWNjZXNzb3JQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6
OmNvbXBpbGVQdXRCeVZhbFdpdGhUaGlzKTogRGVsZXRlZC4KKyAgICAgICAgKiBqaXQvQ0NhbGxI
ZWxwZXJzLmNwcDoKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpzZXR1cEZvdXJTdHViQXJn
c0dQUik6IERlbGV0ZWQuCisgICAgICAgICogaml0L0NDYWxsSGVscGVycy5oOgorICAgICAgICAo
SlNDOjpDQ2FsbEhlbHBlcnM6OnNldHVwRm91clN0dWJBcmdzR1BSKToKKyAgICAgICAgKEpTQzo6
Q0NhbGxIZWxwZXJzOjpzZXR1cEZpdmVTdHViQXJnc0dQUik6CisgICAgICAgIChKU0M6OkNDYWxs
SGVscGVyczo6c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKToKKyAgICAgICAgKEpTQzo6Q0Nh
bGxIZWxwZXJzOjpzZXR1cFN0dWJBcmdzR1BSKToKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJz
OjpwcmVwYXJlRm9yVGFpbENhbGxTbG93KTogRGVsZXRlZC4KKyAgICAgICAgKiBqaXQvSklULmNw
cDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAgICAgICAg
KiBqaXQvSklULmg6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBq
aXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZGVm
aW5lX2RhdGFfcHJvcGVydHkpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZGVmaW5lX2Fj
Y2Vzc29yX3Byb3BlcnR5KToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFz
bToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6
OlNMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5oOgor
ICAgICAgICAqIHJ1bnRpbWUvRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzLmg6IEFkZGVkLgorICAg
ICAgICAoSlNDOjpEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXM6OkRlZmluZVByb3BlcnR5QXR0cmli
dXRlcyk6CisgICAgICAgIChKU0M6OkRlZmluZVByb3BlcnR5QXR0cmlidXRlczo6cmF3UmVwcmVz
ZW50YXRpb24pOgorICAgICAgICAoSlNDOjpEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXM6Omhhc1Zh
bHVlKToKKyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzOjpzZXRWYWx1ZSk6
CisgICAgICAgIChKU0M6OkRlZmluZVByb3BlcnR5QXR0cmlidXRlczo6aGFzR2V0KToKKyAgICAg
ICAgKEpTQzo6RGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzOjpzZXRHZXQpOgorICAgICAgICAoSlND
OjpEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXM6Omhhc1NldCk6CisgICAgICAgIChKU0M6OkRlZmlu
ZVByb3BlcnR5QXR0cmlidXRlczo6c2V0U2V0KToKKyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVy
dHlBdHRyaWJ1dGVzOjp3cml0YWJsZSk6CisgICAgICAgIChKU0M6OkRlZmluZVByb3BlcnR5QXR0
cmlidXRlczo6Y29uZmlndXJhYmxlKToKKyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVydHlBdHRy
aWJ1dGVzOjplbnVtZXJhYmxlKToKKyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVydHlBdHRyaWJ1
dGVzOjpzZXRXcml0YWJsZSk6CisgICAgICAgIChKU0M6OkRlZmluZVByb3BlcnR5QXR0cmlidXRl
czo6c2V0Q29uZmlndXJhYmxlKToKKyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVydHlBdHRyaWJ1
dGVzOjpzZXRFbnVtZXJhYmxlKToKKyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVydHlBdHRyaWJ1
dGVzOjpmaWxsV2l0aFRyaVN0YXRlKToKKyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVydHlBdHRy
aWJ1dGVzOjpleHRyYWN0VHJpU3RhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgIChK
U0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0pT
R2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp0aHJvd1R5cGVF
cnJvckZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmRlZmluZVByb3Bl
cnR5RnVuY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0
b3IuY3BwOgorICAgICAgICAoSlNDOjpPYmplY3RDb25zdHJ1Y3Rvcjo6YWRkRGVmaW5lUHJvcGVy
dHkpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuaDoKKyAg
ICAgICAgKiBydW50aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5oOgorICAgICAgICAoSlNDOjp0b1By
b3BlcnR5RGVzY3JpcHRvcik6CisKID09IFJvbGxlZCBvdmVyIHRvIENoYW5nZUxvZy0yMDE2LTA5
LTI2ID09CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGY3MzRmOTE2MjNmYTQzZGQ1
NGE2YTA4Njg5MmE5YWFmYjUxODE1MzUuLjdjN2M0NmJkZmYxMWJmNTRkZGE4OTc1NTVlM2JkMDM2
YWYxOWI3OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMTY4LDYgKzIxNjgs
NyBAQAogCQlGRUQ5NEYyRjE3MUUzRTIzMDBCRTc3QTQgLyogV2F0Y2hkb2cuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFRDk0RjJDMTcxRTNFMjMwMEJF
NzdBNCAvKiBXYXRjaGRvZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUZFRjA0MDUxMUFBRTY2MkQwMEJEMjhCMCAvKiBDb21wYXJlQW5kU3dhcFRl
c3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVG
MDQwNTAxQUFFNjYyRDAwQkQyOEIwIC8qIENvbXBhcmVBbmRTd2FwVGVzdC5jcHAgKi87IH07CiAJ
CUZFRkQ2RkM2MUQ1RTc5OTIwMDhGMkYwQiAvKiBKU1N0cmluZ0lubGluZXMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFRkQ2RkM1MUQ1RTc5NzAwMDhG
MkYwQiAvKiBKU1N0cmluZ0lubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQk0NzNEQTRBNDc2NEM0NUZFODcxQjA0ODUgLyogRGVmaW5lUHJv
cGVydHlBdHRyaWJ1dGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxNjk5NDhFREU2OEQ0MDU0QjAxRUY3OTcgLyogRGVmaW5lUHJvcGVydHlBdHRyaWJ1
dGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIC8q
IEVuZCBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhDb250YWluZXJJdGVt
UHJveHkgc2VjdGlvbiAqLwpAQCAtNDQ5OCw2ICs0NDk5LDcgQEAKIAkJRkVGMDQwNTAxQUFFNjYy
RDAwQkQyOEIwIC8qIENvbXBhcmVBbmRTd2FwVGVzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBDb21wYXJlQW5kU3dhcFRlc3QuY3BwOyBwYXRoID0gQVBJL3Rlc3Rz
L0NvbXBhcmVBbmRTd2FwVGVzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZF
RjA0MDUyMUFBRUM0RUQwMEJEMjhCMCAvKiBDb21wYXJlQW5kU3dhcFRlc3QuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQ29tcGFyZUFuZFN3YXBUZXN0Lmg7IHBhdGggPSBBUEkv
dGVzdHMvQ29tcGFyZUFuZFN3YXBUZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUZFRkQ2RkM1MUQ1RTc5NzAwMDhGMkYwQiAvKiBKU1N0cmluZ0lubGluZXMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTdHJpbmdJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTE2OTk0OEVERTY4RDQwNTRCMDFFRjc5NyAvKiBEZWZpbmVQcm9wZXJ0
eUF0dHJpYnV0ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRGVmaW5lUHJv
cGVydHlBdHRyaWJ1dGVzLmg7IHBhdGggPSBEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIC8qIEVuZCBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24g
Ki8KIAogLyogQmVnaW4gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwpAQCAtNjI0
MSw2ICs2MjQzLDcgQEAKIAkJCQk3MDlGQjg2NjFBRTMzNUM2MDAzOUQwNjkgLyogV2Vha1NldFBy
b3RvdHlwZS5oICovLAogCQkJCUE3RENCNzc5MTJFM0Q5MDUwMDkxMTk0MCAvKiBXcml0ZUJhcnJp
ZXIuaCAqLywKIAkJCQlDMkI2RDc1MjE4QTMzNzkzMDA0QTkzMDEgLyogV3JpdGVCYXJyaWVySW5s
aW5lcy5oICovLAorCQkJCTE2OTk0OEVERTY4RDQwNTRCMDFFRjc5NyAvKiBEZWZpbmVQcm9wZXJ0
eUF0dHJpYnV0ZXMuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gcnVudGltZTsKIAkJCXNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7CkBAIC04Mzc2LDYgKzgzNzksNyBAQAogCQkJCTg2NzA0QjQzMTJEQjhB
ODEwMEE5RkU3QiAvKiBZYXJyU3ludGF4Q2hlY2tlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc5
RDNFRDlDNTA2NEREMEE4NDY2QTNBIC8qIE1vZHVsZVNjb3BlRGF0YS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRDk3MjI3NTJEQzU0NDU5QjkxMjVCNTM5IC8qIEpTTW9kdWxlTG9hZGVyLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk0NzNEQTRBNDc2NEM0NUZFODcxQjA0ODUgLyogRGVmaW5lUHJvcGVydHlB
dHRyaWJ1dGVzLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVu
dFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgppbmRleCBkYzU5OTgwNTY5MWNkYTU3YjVkMzYxMTU5
OWRkNWYyOGQ3MTAyZGJlLi41NzZkZTQwMDYwNGQxMDE0NzUxY2M2M2JlYWNlYzc3YTU1ZmQ0ZmY3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0
Lmpzb24KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5q
c29uCkBAIC04MSw2ICs4MSw4IEBACiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9wdXRfZ2V0
dGVyX3NldHRlcl9ieV9pZCIsICJsZW5ndGgiIDogNiB9LAogICAgICAgICAgICAgeyAibmFtZSIg
OiAib3BfcHV0X2dldHRlcl9ieV92YWwiLCAibGVuZ3RoIiA6IDUgfSwKICAgICAgICAgICAgIHsg
Im5hbWUiIDogIm9wX3B1dF9zZXR0ZXJfYnlfdmFsIiwgImxlbmd0aCIgOiA1IH0sCisgICAgICAg
ICAgICB7ICJuYW1lIiA6ICJvcF9kZWZpbmVfZGF0YV9wcm9wZXJ0eSIsICJsZW5ndGgiIDogNSB9
LAorICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfZGVmaW5lX2FjY2Vzc29yX3Byb3BlcnR5Iiwg
Imxlbmd0aCIgOiA2IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9qbXAiLCAibGVuZ3Ro
IiA6IDIgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2p0cnVlIiwgImxlbmd0aCIgOiAz
IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9qZmFsc2UiLCAibGVuZ3RoIiA6IDMgfSwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURl
Zi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKaW5k
ZXggZGFiY2U0ZWRmMDMyNjQ4YzA4OTY4OTk4MmE4ODE3ZWM2MDBhODE3ZS4uNDVhOWUwOWNiZDgy
ZWY2ODlkM2IzNGY4ZWU1MGUxMWViOTVhMzc2MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKQEAgLTE0NCw2ICsxNDQsMjMgQEAgdm9pZCBj
b21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KEJsb2NrKiBjb2RlQmxvY2ssIE9wY29kZUlEIG9w
Y29kZUlELCBJbnN0cnVjdGkKICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9u
LCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KKyAgICBjYXNlIG9wX2RlZmluZV9kYXRhX3Byb3BlcnR5OiB7CisgICAgICAgIEFTU0VS
VChvcGNvZGVMZW5ndGhzW29wY29kZUlEXSA+IDQpOworICAgICAgICBmdW5jdG9yKGNvZGVCbG9j
aywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOworICAg
ICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlv
blsyXS51Lm9wZXJhbmQpOworICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24s
IG9wY29kZUlELCBpbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpOworICAgICAgICBmdW5jdG9yKGNv
ZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQp
OworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGNhc2Ugb3BfZGVmaW5lX2FjY2Vzc29yX3By
b3BlcnR5OiB7CisgICAgICAgIEFTU0VSVChvcGNvZGVMZW5ndGhzW29wY29kZUlEXSA+IDUpOwor
ICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVj
dGlvblsxXS51Lm9wZXJhbmQpOworICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rp
b24sIG9wY29kZUlELCBpbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpOworICAgICAgICBmdW5jdG9y
KGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlvblszXS51Lm9wZXJh
bmQpOworICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBp
bnN0cnVjdGlvbls0XS51Lm9wZXJhbmQpOworICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5z
dHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlvbls1XS51Lm9wZXJhbmQpOworICAgICAgICBy
ZXR1cm47CisgICAgfQogICAgIGNhc2Ugb3BfZ2V0X3Byb3BlcnR5X2VudW1lcmF0b3I6CiAgICAg
Y2FzZSBvcF9nZXRfZW51bWVyYWJsZV9sZW5ndGg6CiAgICAgY2FzZSBvcF9uZXdfZnVuY19leHA6
CkBAIC0zMzIsNiArMzQ5LDggQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KEJs
b2NrKiBjb2RlQmxvY2ssIE9wY29kZUlEIG9wY29kZUlELCBJbnN0cnVjdGkKICAgICBjYXNlIG9w
X3B1dF9ieV92YWw6CiAgICAgY2FzZSBvcF9wdXRfYnlfdmFsX2RpcmVjdDoKICAgICBjYXNlIG9w
X3B1dF9ieV9pbmRleDoKKyAgICBjYXNlIG9wX2RlZmluZV9kYXRhX3Byb3BlcnR5OgorICAgIGNh
c2Ugb3BfZGVmaW5lX2FjY2Vzc29yX3Byb3BlcnR5OgogICAgIGNhc2Ugb3BfcHJvZmlsZV90eXBl
OgogICAgIGNhc2Ugb3BfcHJvZmlsZV9jb250cm9sX2Zsb3c6CiAgICAgY2FzZSBvcF9wdXRfdG9f
YXJndW1lbnRzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNw
cAppbmRleCBmMDBkOThjMzA2OWYxMzBlYjkwMjhjYjczZWVhMDFhZDgwNzI1MmQ1Li44YWE5OTc1
OTI2NWY0MmYxNzE1YTg0NzcyMzQ5NGUxZGI5M2FhNTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtMTIzMyw2ICsxMjMzLDI1IEBAIHZvaWQg
Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoCiAgICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMs
ICVkLCAlcyIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjEpLmRhdGEo
KSwgbjAsIHJlZ2lzdGVyTmFtZShyMikuZGF0YSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CisgICAgICAgIGNhc2Ugb3BfZGVmaW5lX2RhdGFfcHJvcGVydHk6IHsKKyAgICAgICAg
ICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgaW50IHIxID0gKCsr
aXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBpbnQgcjIgPSAoKytpdCktPnUub3BlcmFuZDsK
KyAgICAgICAgICAgIGludCByMyA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgcHJp
bnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAiZGVmaW5lX2RhdGFfcHJv
cGVydHkiKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAlcywgJXMsICVzIiwgcmVnaXN0
ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCByZWdpc3Rlck5hbWUo
cjIpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIzKS5kYXRhKCkpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9kZWZpbmVfYWNjZXNzb3JfcHJvcGVydHk6IHsK
KyAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgaW50
IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBpbnQgcjIgPSAoKytpdCktPnUu
b3BlcmFuZDsKKyAgICAgICAgICAgIGludCByMyA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAg
ICAgICAgaW50IHI0ID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBwcmludExvY2F0
aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJkZWZpbmVfYWNjZXNzb3JfcHJvcGVy
dHkiKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAlcywgJXMsICVzLCAlcyIsIHJlZ2lz
dGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSwgcmVnaXN0ZXJOYW1l
KHIyKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMykuZGF0YSgpLCByZWdpc3Rlck5hbWUocjQpLmRh
dGEoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2Rl
bF9ieV9pZDogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAg
ICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjaWFsUG9pbnRlci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1NwZWNpYWxQb2ludGVyLmgKaW5kZXggNjRmYjIzZmNmMjdkNDEyNTA0
ODAyMTllOGM4YzQxYjdjNDFhN2VmNS4uOTBjYjNhOTkyNmQ2MmU2MDRiMThjM2IzZGJkNTUyMmI0
NTJhZWRmYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWNp
YWxQb2ludGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWNpYWxQ
b2ludGVyLmgKQEAgLTQyLDcgKzQyLDcgQEAgZW51bSBQb2ludGVyIHsKIH0gLy8gbmFtZXNwYWNl
IFNwZWNpYWwKIAogZW51bSBjbGFzcyBMaW5rVGltZUNvbnN0YW50IHsKLSAgICBEZWZpbmVQcm9w
ZXJ0eUZ1bmN0aW9uLAorICAgIFRocm93VHlwZUVycm9yRnVuY3Rpb24sCiB9OwogY29uc3QgdW5z
aWduZWQgTGlua1RpbWVDb25zdGFudENvdW50ID0gMTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCBj
YzcxNzIzZWYzYzBmNWQ0YmIzY2NkZWNiOGJhOTc2MjcyM2QzMmZlLi5iMGMzY2NkNWFjYjI1NTYx
ODhkOTI4MjIyNWE1NzRiMWYwNDcyYzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtMzUsNiArMzUs
NyBAQAogI2luY2x1ZGUgIkJ1aWx0aW5FeGVjdXRhYmxlcy5oIgogI2luY2x1ZGUgIkJ5dGVjb2Rl
R2VuZXJhdG9yaWZpY2F0aW9uLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lz
LmgiCisjaW5jbHVkZSAiRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzLmgiCiAjaW5jbHVkZSAiSW50
ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNHZW5lcmF0
b3JGdW5jdGlvbi5oIgpAQCAtMTU0Myw2ICsxNTQ0LDkgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRNb3ZlTGlua1RpbWVDb25zdGFudChSZWdpc3RlcklEKiBkc3QsIExpbmtU
aW0KICAgICAgICAgbV9saW5rVGltZUNvbnN0YW50UmVnaXN0ZXJzW2NvbnN0YW50SW5kZXhdID0g
Jm1fY29uc3RhbnRQb29sUmVnaXN0ZXJzW2luZGV4XTsKICAgICB9CiAKKyAgICBpZiAoIWRzdCkK
KyAgICAgICAgcmV0dXJuIG1fbGlua1RpbWVDb25zdGFudFJlZ2lzdGVyc1tjb25zdGFudEluZGV4
XTsKKwogICAgIGVtaXRPcGNvZGUob3BfbW92KTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
ZHN0LT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobV9saW5rVGltZUNvbnN0
YW50UmVnaXN0ZXJzW2NvbnN0YW50SW5kZXhdLT5pbmRleCgpKTsKQEAgLTMyNjgsMzggKzMyNzIs
NTkgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdExvZ1NoYWRvd0NoaWNrZW5UYWlsSWZO
ZWNlc3NhcnkoKQogfQogCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2FsbERlZmluZVBy
b3BlcnR5KFJlZ2lzdGVySUQqIG5ld09iaiwgUmVnaXN0ZXJJRCogcHJvcGVydHlOYW1lUmVnaXN0
ZXIsCi0gICAgUmVnaXN0ZXJJRCogdmFsdWVSZWdpc3RlciwgUmVnaXN0ZXJJRCogZ2V0dGVyUmVn
aXN0ZXIsIFJlZ2lzdGVySUQqIHNldHRlclJlZ2lzdGVyLCB1bnNpZ25lZCBvcHRpb25zLCBjb25z
dCBKU1RleHRQb3NpdGlvbiYgcG9zaXRpb24pCisgICAgUmVnaXN0ZXJJRCogdmFsdWVSZWdpc3Rl
ciwgUmVnaXN0ZXJJRCogZ2V0dGVyUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIHNldHRlclJlZ2lzdGVy
LCB1bnNpZ25lZCBvcHRpb25zKQogewotICAgIFJlZlB0cjxSZWdpc3RlcklEPiBkZXNjcmlwdG9y
UmVnaXN0ZXIgPSBlbWl0TmV3T2JqZWN0KG5ld1RlbXBvcmFyeSgpKTsKLQotICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiB0cnVlUmVnaXN0ZXIgPSBlbWl0TG9hZChuZXdUZW1wb3JhcnkoKSwgdHJ1ZSk7
CisgICAgRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzIGF0dHJpYnV0ZXM7CiAgICAgaWYgKG9wdGlv
bnMgJiBQcm9wZXJ0eUNvbmZpZ3VyYWJsZSkKLSAgICAgICAgZW1pdERpcmVjdFB1dEJ5SWQoZGVz
Y3JpcHRvclJlZ2lzdGVyLmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkuY29uZmlndXJhYmxlLCB0cnVl
UmVnaXN0ZXIuZ2V0KCksIFByb3BlcnR5Tm9kZTo6VW5rbm93bik7CisgICAgICAgIGF0dHJpYnV0
ZXMuc2V0Q29uZmlndXJhYmxlKHRydWUpOworCiAgICAgaWYgKG9wdGlvbnMgJiBQcm9wZXJ0eVdy
aXRhYmxlKQotICAgICAgICBlbWl0RGlyZWN0UHV0QnlJZChkZXNjcmlwdG9yUmVnaXN0ZXIuZ2V0
KCksIHByb3BlcnR5TmFtZXMoKS53cml0YWJsZSwgdHJ1ZVJlZ2lzdGVyLmdldCgpLCBQcm9wZXJ0
eU5vZGU6OlVua25vd24pOwotICAgIGVsc2UgaWYgKHZhbHVlUmVnaXN0ZXIpIHsKLSAgICAgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IGZhbHNlUmVnaXN0ZXIgPSBlbWl0TG9hZChuZXdUZW1wb3Jhcnko
KSwgZmFsc2UpOwotICAgICAgICBlbWl0RGlyZWN0UHV0QnlJZChkZXNjcmlwdG9yUmVnaXN0ZXIu
Z2V0KCksIHByb3BlcnR5TmFtZXMoKS53cml0YWJsZSwgZmFsc2VSZWdpc3Rlci5nZXQoKSwgUHJv
cGVydHlOb2RlOjpVbmtub3duKTsKLSAgICB9CisgICAgICAgIGF0dHJpYnV0ZXMuc2V0V3JpdGFi
bGUodHJ1ZSk7CisgICAgZWxzZSBpZiAodmFsdWVSZWdpc3RlcikKKyAgICAgICAgYXR0cmlidXRl
cy5zZXRXcml0YWJsZShmYWxzZSk7CisKICAgICBpZiAob3B0aW9ucyAmIFByb3BlcnR5RW51bWVy
YWJsZSkKLSAgICAgICAgZW1pdERpcmVjdFB1dEJ5SWQoZGVzY3JpcHRvclJlZ2lzdGVyLmdldCgp
LCBwcm9wZXJ0eU5hbWVzKCkuZW51bWVyYWJsZSwgdHJ1ZVJlZ2lzdGVyLmdldCgpLCBQcm9wZXJ0
eU5vZGU6OlVua25vd24pOworICAgICAgICBhdHRyaWJ1dGVzLnNldEVudW1lcmFibGUodHJ1ZSk7
CiAKICAgICBpZiAodmFsdWVSZWdpc3RlcikKLSAgICAgICAgZW1pdERpcmVjdFB1dEJ5SWQoZGVz
Y3JpcHRvclJlZ2lzdGVyLmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkudmFsdWUsIHZhbHVlUmVnaXN0
ZXIsIFByb3BlcnR5Tm9kZTo6VW5rbm93bik7CisgICAgICAgIGF0dHJpYnV0ZXMuc2V0VmFsdWUo
KTsKICAgICBpZiAoZ2V0dGVyUmVnaXN0ZXIpCi0gICAgICAgIGVtaXREaXJlY3RQdXRCeUlkKGRl
c2NyaXB0b3JSZWdpc3Rlci5nZXQoKSwgcHJvcGVydHlOYW1lcygpLmdldCwgZ2V0dGVyUmVnaXN0
ZXIsIFByb3BlcnR5Tm9kZTo6VW5rbm93bik7CisgICAgICAgIGF0dHJpYnV0ZXMuc2V0R2V0KCk7
CiAgICAgaWYgKHNldHRlclJlZ2lzdGVyKQotICAgICAgICBlbWl0RGlyZWN0UHV0QnlJZChkZXNj
cmlwdG9yUmVnaXN0ZXIuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS5zZXQsIHNldHRlclJlZ2lzdGVy
LCBQcm9wZXJ0eU5vZGU6OlVua25vd24pOworICAgICAgICBhdHRyaWJ1dGVzLnNldFNldCgpOwog
Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGRlZmluZVByb3BlcnR5UmVnaXN0ZXIgPSBlbWl0TW92
ZUxpbmtUaW1lQ29uc3RhbnQobmV3VGVtcG9yYXJ5KCksIExpbmtUaW1lQ29uc3RhbnQ6OkRlZmlu
ZVByb3BlcnR5RnVuY3Rpb24pOworICAgIEFTU0VSVCghdmFsdWVSZWdpc3RlciB8fCAoIWdldHRl
clJlZ2lzdGVyICYmICFzZXR0ZXJSZWdpc3RlcikpOwogCi0gICAgQ2FsbEFyZ3VtZW50cyBjYWxs
QXJndW1lbnRzKCp0aGlzLCBudWxscHRyLCAzKTsKLSAgICBlbWl0TG9hZChjYWxsQXJndW1lbnRz
LnRoaXNSZWdpc3RlcigpLCBqc1VuZGVmaW5lZCgpKTsKLSAgICBlbWl0TW92ZShjYWxsQXJndW1l
bnRzLmFyZ3VtZW50UmVnaXN0ZXIoMCksIG5ld09iaik7Ci0gICAgZW1pdE1vdmUoY2FsbEFyZ3Vt
ZW50cy5hcmd1bWVudFJlZ2lzdGVyKDEpLCBwcm9wZXJ0eU5hbWVSZWdpc3Rlcik7Ci0gICAgZW1p
dE1vdmUoY2FsbEFyZ3VtZW50cy5hcmd1bWVudFJlZ2lzdGVyKDIpLCBkZXNjcmlwdG9yUmVnaXN0
ZXIuZ2V0KCkpOworICAgIGlmIChhdHRyaWJ1dGVzLmhhc0dldCgpIHx8IGF0dHJpYnV0ZXMuaGFz
U2V0KCkpIHsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRocm93VHlwZUVycm9yRnVuY3Rp
b247CisgICAgICAgIGlmICghYXR0cmlidXRlcy5oYXNHZXQoKSB8fCAhYXR0cmlidXRlcy5oYXNT
ZXQoKSkKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yRnVuY3Rpb24gPSBlbWl0TW92ZUxpbmtU
aW1lQ29uc3RhbnQobnVsbHB0ciwgTGlua1RpbWVDb25zdGFudDo6VGhyb3dUeXBlRXJyb3JGdW5j
dGlvbik7CiAKLSAgICBlbWl0Q2FsbChuZXdUZW1wb3JhcnkoKSwgZGVmaW5lUHJvcGVydHlSZWdp
c3Rlci5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBwb3NpdGlvbiwg
cG9zaXRpb24sIHBvc2l0aW9uKTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGdldHRlcjsK
KyAgICAgICAgaWYgKGF0dHJpYnV0ZXMuaGFzR2V0KCkpCisgICAgICAgICAgICBnZXR0ZXIgPSBn
ZXR0ZXJSZWdpc3RlcjsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZ2V0dGVyID0gdGhyb3dU
eXBlRXJyb3JGdW5jdGlvbjsKKworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2V0dGVyOwor
ICAgICAgICBpZiAoYXR0cmlidXRlcy5oYXNTZXQoKSkKKyAgICAgICAgICAgIHNldHRlciA9IHNl
dHRlclJlZ2lzdGVyOworICAgICAgICBlbHNlCisgICAgICAgICAgICBzZXR0ZXIgPSB0aHJvd1R5
cGVFcnJvckZ1bmN0aW9uOworCisgICAgICAgIGVtaXRPcGNvZGUob3BfZGVmaW5lX2FjY2Vzc29y
X3Byb3BlcnR5KTsKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG5ld09iai0+aW5kZXgo
KSk7CisgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChwcm9wZXJ0eU5hbWVSZWdpc3Rlci0+
aW5kZXgoKSk7CisgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChnZXR0ZXItPmluZGV4KCkp
OworICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoc2V0dGVyLT5pbmRleCgpKTsKKyAgICAg
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKGF0dHJp
YnV0ZXMucmF3UmVwcmVzZW50YXRpb24oKSkpLT5pbmRleCgpKTsKKyAgICB9IGVsc2UgeworICAg
ICAgICBlbWl0T3Bjb2RlKG9wX2RlZmluZV9kYXRhX3Byb3BlcnR5KTsKKyAgICAgICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKG5ld09iai0+aW5kZXgoKSk7CisgICAgICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZChwcm9wZXJ0eU5hbWVSZWdpc3Rlci0+aW5kZXgoKSk7CisgICAgICAgIGluc3RydWN0
aW9ucygpLmFwcGVuZCh2YWx1ZVJlZ2lzdGVyLT5pbmRleCgpKTsKKyAgICAgICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKGVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKGF0dHJpYnV0ZXMucmF3UmVw
cmVzZW50YXRpb24oKSkpLT5pbmRleCgpKTsKKyAgICB9CiB9CiAKIFJlZ2lzdGVySUQqIEJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0UmV0dXJuKFJlZ2lzdGVySUQqIHNyYykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRl
eCBkMzI2NGM0YTA4NzdhMzYyZTkwNGUxZjgzNmJiZDQ1NjA0MjllMGZlLi45ZTZjZGJhMzYyM2U5
MjYyNmNjOGZkMzk3ZjA5ZTcxNDMzZmIxY2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBAIC01ODgsNyArNTg4
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBQcm9wZXJ0eUVudW1lcmFibGUgICA9
IDEgPDwgMiwKICAgICAgICAgfTsKICAgICAgICAgdm9pZCBlbWl0Q2FsbERlZmluZVByb3BlcnR5
KFJlZ2lzdGVySUQqIG5ld09iaiwgUmVnaXN0ZXJJRCogcHJvcGVydHlOYW1lUmVnaXN0ZXIsCi0g
ICAgICAgICAgICBSZWdpc3RlcklEKiB2YWx1ZVJlZ2lzdGVyLCBSZWdpc3RlcklEKiBnZXR0ZXJS
ZWdpc3RlciwgUmVnaXN0ZXJJRCogc2V0dGVyUmVnaXN0ZXIsIHVuc2lnbmVkIG9wdGlvbnMsIGNv
bnN0IEpTVGV4dFBvc2l0aW9uJik7CisgICAgICAgICAgICBSZWdpc3RlcklEKiB2YWx1ZVJlZ2lz
dGVyLCBSZWdpc3RlcklEKiBnZXR0ZXJSZWdpc3RlciwgUmVnaXN0ZXJJRCogc2V0dGVyUmVnaXN0
ZXIsIHVuc2lnbmVkIG9wdGlvbnMpOwogCiAgICAgICAgIHZvaWQgZW1pdEVudW1lcmF0aW9uKFRo
cm93YWJsZUV4cHJlc3Npb25EYXRhKiBlbnVtZXJhdGlvbk5vZGUsIEV4cHJlc3Npb25Ob2RlKiBz
dWJqZWN0Tm9kZSwgY29uc3Qgc3RkOjpmdW5jdGlvbjx2b2lkKEJ5dGVjb2RlR2VuZXJhdG9yJiwg
UmVnaXN0ZXJJRCopPiYgY2FsbEJhY2ssIFZhcmlhYmxlRW52aXJvbm1lbnROb2RlKiA9IG51bGxw
dHIsIFJlZ2lzdGVySUQqIGZvckxvb3BTeW1ib2xUYWJsZSA9IG51bGxwdHIpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5k
ZXggYzI2OGEyNjA4ZDM4ZDZkZWE3YWNiODE3NzA3ZTU5ZjFjNTI1ZjI4Mi4uMmI1OTBjODdjMGYx
NmIwMGY2MmMwM2ZmODY2MWI1OTMwZmQ2MGU5YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtNTkwLDEyICs1OTAsMTIg
QEAgdm9pZCBQcm9wZXJ0eUxpc3ROb2RlOjplbWl0UHV0Q29uc3RhbnRQcm9wZXJ0eShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWcKICAgICAgICAgQVNTRVJUKG5vZGUubmVlZHNTdXBl
ckJpbmRpbmcoKSk7CiAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcm9wZXJ0eU5hbWVSZWdp
c3RlcjsKICAgICAgICAgaWYgKG5vZGUubmFtZSgpKQotICAgICAgICAgICAgcHJvcGVydHlOYW1l
UmVnaXN0ZXIgPSBnZW5lcmF0b3IuZW1pdExvYWQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCAq
bm9kZS5uYW1lKCkpOworICAgICAgICAgICAgcHJvcGVydHlOYW1lUmVnaXN0ZXIgPSBnZW5lcmF0
b3IuZW1pdExvYWQobnVsbHB0ciwgKm5vZGUubmFtZSgpKTsKICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgcHJvcGVydHlOYW1lUmVnaXN0ZXIgPSBnZW5lcmF0b3IuZW1pdE5vZGUobm9kZS5tX2V4
cHJlc3Npb24pOwogCiAgICAgICAgIGdlbmVyYXRvci5lbWl0U2V0RnVuY3Rpb25OYW1lSWZOZWVk
ZWQobm9kZS5tX2Fzc2lnbiwgdmFsdWUuZ2V0KCksIHByb3BlcnR5TmFtZVJlZ2lzdGVyLmdldCgp
KTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsRGVmaW5lUHJvcGVydHkobmV3T2JqLCBwcm9w
ZXJ0eU5hbWVSZWdpc3Rlci5nZXQoKSwgdmFsdWUuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIsIEJ5
dGVjb2RlR2VuZXJhdG9yOjpQcm9wZXJ0eUNvbmZpZ3VyYWJsZSB8IEJ5dGVjb2RlR2VuZXJhdG9y
OjpQcm9wZXJ0eVdyaXRhYmxlLCBtX3Bvc2l0aW9uKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRD
YWxsRGVmaW5lUHJvcGVydHkobmV3T2JqLCBwcm9wZXJ0eU5hbWVSZWdpc3Rlci5nZXQoKSwgdmFs
dWUuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIsIEJ5dGVjb2RlR2VuZXJhdG9yOjpQcm9wZXJ0eUNv
bmZpZ3VyYWJsZSB8IEJ5dGVjb2RlR2VuZXJhdG9yOjpQcm9wZXJ0eVdyaXRhYmxlKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAoY29uc3QgYXV0byogaWRlbnRpZmllciA9IG5vZGUu
bmFtZSgpKSB7CkBAIC02MDUsNyArNjA1LDcgQEAgdm9pZCBQcm9wZXJ0eUxpc3ROb2RlOjplbWl0
UHV0Q29uc3RhbnRQcm9wZXJ0eShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWcKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIFJlZlB0cjxSZWdpc3RlcklE
PiBpbmRleCA9IGdlbmVyYXRvci5lbWl0TG9hZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIGpz
TnVtYmVyKG9wdGlvbmFsSW5kZXgudmFsdWUoKSkpOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gaW5kZXggPSBnZW5lcmF0b3IuZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIob3B0aW9uYWxJ
bmRleC52YWx1ZSgpKSk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0RGlyZWN0UHV0QnlWYWwobmV3
T2JqLCBpbmRleC5nZXQoKSwgdmFsdWUuZ2V0KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQpA
QCAtMTYyMyw3ICsxNjIzLDcgQEAgUmVnaXN0ZXJJRCogVW5hcnlQbHVzTm9kZTo6ZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQKICAKIFJlZ2lzdGVy
SUQqIEJpdHdpc2VOb3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVy
YXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewotICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzcmMyID0g
Z2VuZXJhdG9yLmVtaXRMb2FkKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwganNOdW1iZXIoLTEp
KTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc3JjMiA9IGdlbmVyYXRvci5lbWl0TG9hZChudWxs
cHRyLCBqc051bWJlcigtMSkpOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzcmMxID0gZ2VuZXJh
dG9yLmVtaXROb2RlKG1fZXhwcik7CiAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0QmluYXJ5T3Ao
b3BfYml0eG9yLCBnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QsIHNyYzEuZ2V0KCkpLCBz
cmMxLmdldCgpLCBzcmMyLmdldCgpLCBPcGVyYW5kVHlwZXMobV9leHByLT5yZXN1bHREZXNjcmlw
dG9yKCksIFJlc3VsdFR5cGU6Om51bWJlclR5cGVJc0ludDMyKCkpKTsKIH0KQEAgLTM2MDMsMTIg
KzM2MDMsMTIgQEAgUmVnaXN0ZXJJRCogQ2xhc3NFeHByTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQKICAgICAgICAgZW1pdFB1dEhvbWVP
YmplY3QoZ2VuZXJhdG9yLCBjb25zdHJ1Y3Rvci5nZXQoKSwgcHJvdG90eXBlLmdldCgpKTsKICAg
ICB9CiAKLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gY29uc3RydWN0b3JOYW1lUmVnaXN0ZXIgPSBn
ZW5lcmF0b3IuZW1pdExvYWQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBwcm9wZXJ0eU5hbWVz
LmNvbnN0cnVjdG9yKTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gY29uc3RydWN0b3JOYW1lUmVn
aXN0ZXIgPSBnZW5lcmF0b3IuZW1pdExvYWQobnVsbHB0ciwgcHJvcGVydHlOYW1lcy5jb25zdHJ1
Y3Rvcik7CiAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsRGVmaW5lUHJvcGVydHkocHJvdG90eXBlLmdl
dCgpLCBjb25zdHJ1Y3Rvck5hbWVSZWdpc3Rlci5nZXQoKSwgY29uc3RydWN0b3IuZ2V0KCksIG51
bGxwdHIsIG51bGxwdHIsCi0gICAgICAgIEJ5dGVjb2RlR2VuZXJhdG9yOjpQcm9wZXJ0eUNvbmZp
Z3VyYWJsZSB8IEJ5dGVjb2RlR2VuZXJhdG9yOjpQcm9wZXJ0eVdyaXRhYmxlLCBtX3Bvc2l0aW9u
KTsKKyAgICAgICAgQnl0ZWNvZGVHZW5lcmF0b3I6OlByb3BlcnR5Q29uZmlndXJhYmxlIHwgQnl0
ZWNvZGVHZW5lcmF0b3I6OlByb3BlcnR5V3JpdGFibGUpOwogCi0gICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IHByb3RvdHlwZU5hbWVSZWdpc3RlciA9IGdlbmVyYXRvci5lbWl0TG9hZChnZW5lcmF0b3Iu
bmV3VGVtcG9yYXJ5KCksIHByb3BlcnR5TmFtZXMucHJvdG90eXBlKTsKLSAgICBnZW5lcmF0b3Iu
ZW1pdENhbGxEZWZpbmVQcm9wZXJ0eShjb25zdHJ1Y3Rvci5nZXQoKSwgcHJvdG90eXBlTmFtZVJl
Z2lzdGVyLmdldCgpLCBwcm90b3R5cGUuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIsIDAsIG1fcG9z
aXRpb24pOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcm90b3R5cGVOYW1lUmVnaXN0ZXIgPSBn
ZW5lcmF0b3IuZW1pdExvYWQobnVsbHB0ciwgcHJvcGVydHlOYW1lcy5wcm90b3R5cGUpOworICAg
IGdlbmVyYXRvci5lbWl0Q2FsbERlZmluZVByb3BlcnR5KGNvbnN0cnVjdG9yLmdldCgpLCBwcm90
b3R5cGVOYW1lUmVnaXN0ZXIuZ2V0KCksIHByb3RvdHlwZS5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0
ciwgMCk7CiAKICAgICBpZiAobV9zdGF0aWNNZXRob2RzKQogICAgICAgICBnZW5lcmF0b3IuZW1p
dE5vZGUoY29uc3RydWN0b3IuZ2V0KCksIG1fc3RhdGljTWV0aG9kcyk7CkBAIC0zODcwLDcgKzM4
NzAsNyBAQCB2b2lkIE9iamVjdFBhdHRlcm5Ob2RlOjpiaW5kVmFsdWUoQnl0ZWNvZGVHZW5lcmF0
b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogcmhzKQogICAgICAgICAgICAgaWYgKCFvcHRpb25h
bEluZGV4KQogICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0R2V0QnlJZCh0ZW1wLmdldCgp
LCByaHMsIHRhcmdldC5wcm9wZXJ0eU5hbWUpOwogICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAg
ICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGluZGV4ID0gZ2VuZXJhdG9yLmVtaXRMb2FkKGdl
bmVyYXRvci5uZXdUZW1wb3JhcnkoKSwganNOdW1iZXIob3B0aW9uYWxJbmRleC52YWx1ZSgpKSk7
CisgICAgICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGluZGV4ID0gZ2VuZXJhdG9yLmVt
aXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKG9wdGlvbmFsSW5kZXgudmFsdWUoKSkpOwogICAgICAg
ICAgICAgICAgIGdlbmVyYXRvci5lbWl0R2V0QnlWYWwodGVtcC5nZXQoKSwgcmhzLCBpbmRleC5n
ZXQoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgK
aW5kZXggOGM3NDEyNjYyNjVjODE0ODA2ZjFmMGZiNzE0ODM3ZTIzYzUwZGM4ZC4uZTk2YjEwNWNh
ZjFhMmUxMDQxYzk5YmY2MWE4YjhiNjczNGRhYzFkMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaApAQCAt
MjY1Nyw2ICsyNjU3LDExIEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRl
VHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgIGNsb2Ji
ZXJXb3JsZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNsb2JiZXJMaW1pdCk7CiAgICAgICAgIGJy
ZWFrOwogICAgIH0KKworICAgIGNhc2UgRGVmaW5lRGF0YVByb3BlcnR5OgorICAgIGNhc2UgRGVm
aW5lQWNjZXNzb3JQcm9wZXJ0eToKKyAgICAgICAgY2xvYmJlcldvcmxkKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYywgY2xvYmJlckxpbWl0KTsKKyAgICAgICAgYnJlYWs7CiAgICAgICAgIAogICAgIGNh
c2UgSW46IHsKICAgICAgICAgLy8gRklYTUU6IFdlIGNhbiBkZXRlcm1pbmUgd2hlbiB0aGUgcHJv
cGVydHkgZGVmaW5pdGVseSBleGlzdHMgYmFzZWQgb24gYWJzdHJhY3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKaW5kZXggMDQ1MjI4MGRkMjZm
NDBiMGJjYTQ1ZDM4NTFkMTEwZGY0MTZhMGZhNy4uMGI1ZmI5NWQ5NTdiMTJhNDM4MWNmZmI5YjZj
MmE0ZWIzMmFiM2E0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdC
eXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHAKQEAgLTQyMzgsNiArNDIzOCwzOCBAQCBib29sIEJ5dGVDb2RlUGFyc2Vy
OjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgTkVYVF9PUENPREUob3Bf
cHV0X2J5X3ZhbF93aXRoX3RoaXMpOwogICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBvcF9kZWZp
bmVfZGF0YV9wcm9wZXJ0eTogeworICAgICAgICAgICAgTm9kZSogYmFzZSA9IGdldChWaXJ0dWFs
UmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCkpOworICAgICAgICAgICAg
Tm9kZSogcHJvcGVydHkgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsy
XS51Lm9wZXJhbmQpKTsKKyAgICAgICAgICAgIE5vZGUqIHZhbHVlID0gZ2V0KFZpcnR1YWxSZWdp
c3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKSk7CisgICAgICAgICAgICBOb2Rl
KiBhdHRyaWJ1dGVzID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bNF0u
dS5vcGVyYW5kKSk7CisKKyAgICAgICAgICAgIGFkZFZhckFyZ0NoaWxkKGJhc2UpOworICAgICAg
ICAgICAgYWRkVmFyQXJnQ2hpbGQocHJvcGVydHkpOworICAgICAgICAgICAgYWRkVmFyQXJnQ2hp
bGQodmFsdWUpOworICAgICAgICAgICAgYWRkVmFyQXJnQ2hpbGQoYXR0cmlidXRlcyk7CisgICAg
ICAgICAgICBhZGRUb0dyYXBoKE5vZGU6OlZhckFyZywgRGVmaW5lRGF0YVByb3BlcnR5LCBPcElu
Zm8oMCksIE9wSW5mbygwKSk7CisKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2RlZmluZV9k
YXRhX3Byb3BlcnR5KTsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2Ugb3BfZGVmaW5lX2FjY2Vz
c29yX3Byb3BlcnR5OiB7CisgICAgICAgICAgICBOb2RlKiBiYXNlID0gZ2V0KFZpcnR1YWxSZWdp
c3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSk7CisgICAgICAgICAgICBOb2Rl
KiBwcm9wZXJ0eSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzJdLnUu
b3BlcmFuZCkpOworICAgICAgICAgICAgTm9kZSogZ2V0dGVyID0gZ2V0KFZpcnR1YWxSZWdpc3Rl
cihjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKSk7CisgICAgICAgICAgICBOb2RlKiBz
ZXR0ZXIgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvbls0XS51Lm9wZXJh
bmQpKTsKKyAgICAgICAgICAgIE5vZGUqIGF0dHJpYnV0ZXMgPSBnZXQoVmlydHVhbFJlZ2lzdGVy
KGN1cnJlbnRJbnN0cnVjdGlvbls1XS51Lm9wZXJhbmQpKTsKKworICAgICAgICAgICAgYWRkVmFy
QXJnQ2hpbGQoYmFzZSk7CisgICAgICAgICAgICBhZGRWYXJBcmdDaGlsZChwcm9wZXJ0eSk7Cisg
ICAgICAgICAgICBhZGRWYXJBcmdDaGlsZChnZXR0ZXIpOworICAgICAgICAgICAgYWRkVmFyQXJn
Q2hpbGQoc2V0dGVyKTsKKyAgICAgICAgICAgIGFkZFZhckFyZ0NoaWxkKGF0dHJpYnV0ZXMpOwor
ICAgICAgICAgICAgYWRkVG9HcmFwaChOb2RlOjpWYXJBcmcsIERlZmluZUFjY2Vzc29yUHJvcGVy
dHksIE9wSW5mbygwKSwgT3BJbmZvKDApKTsKKworICAgICAgICAgICAgTkVYVF9PUENPREUob3Bf
ZGVmaW5lX2FjY2Vzc29yX3Byb3BlcnR5KTsKKyAgICAgICAgfQorCiAgICAgICAgIGNhc2Ugb3Bf
dHJ5X2dldF9ieV9pZDoKICAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWQ6CiAgICAgICAgIGNhc2Ug
b3BfZ2V0X2J5X2lkX3Byb3RvX2xvYWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NhcGFiaWxpdGllcy5jcHAKaW5kZXggNDhmYTQ5NTcyZWM1MGVjMTVkMDM3NzZhNTIyZDZmYmQz
NTJiZmU5YS4uYzMyM2Q0NmZiYzNjZjVjMTA0OWZhMjZmYzBlMTkwZjIyNzFhNDcxOCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcApAQCAtMTczLDYg
KzE3Myw4IEBAIENhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwoT3Bjb2RlSUQgb3Bjb2Rl
SUQsIENvZGVCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjCiAgICAgY2FzZSBvcF9wdXRfZ2V0dGVy
X3NldHRlcl9ieV9pZDoKICAgICBjYXNlIG9wX3B1dF9nZXR0ZXJfYnlfdmFsOgogICAgIGNhc2Ug
b3BfcHV0X3NldHRlcl9ieV92YWw6CisgICAgY2FzZSBvcF9kZWZpbmVfZGF0YV9wcm9wZXJ0eToK
KyAgICBjYXNlIG9wX2RlZmluZV9hY2Nlc3Nvcl9wcm9wZXJ0eToKICAgICBjYXNlIG9wX2RlbF9i
eV9pZDoKICAgICBjYXNlIG9wX2RlbF9ieV92YWw6CiAgICAgY2FzZSBvcF9qbXA6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmluZGV4IGMxYzNmZGRkYjdhN2E2MGI0
NjUyYTE3Y2FlMWE5ODNmOGNhZTk2MTEuLmNjY2RmOGJjZDYyNmFhNGQ2NzYzNzNjZDI4NDJlMmU1
NmFlMGFjMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJl
cml6ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCkBA
IC00ODYsNiArNDg2LDggQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9k
ZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKICAgICBjYXNlIFB1dEdl
dHRlclNldHRlckJ5SWQ6CiAgICAgY2FzZSBQdXRHZXR0ZXJCeVZhbDoKICAgICBjYXNlIFB1dFNl
dHRlckJ5VmFsOgorICAgIGNhc2UgRGVmaW5lRGF0YVByb3BlcnR5OgorICAgIGNhc2UgRGVmaW5l
QWNjZXNzb3JQcm9wZXJ0eToKICAgICBjYXNlIERlbGV0ZUJ5SWQ6CiAgICAgY2FzZSBEZWxldGVC
eVZhbDoKICAgICBjYXNlIEFycmF5UHVzaDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRG9lc0dDLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9l
c0dDLmNwcAppbmRleCAyZGNmNTVkMmVkMjhhYWU2MGI2YjhiN2I5YmY2ZGEwNzE5ZDkyZGQ1Li5m
NjlkMmY5ZmY5N2Q0MDhhOGYyZTgxNzZmNWFhN2IzYzljNzUzZGJmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCkBAIC0xMTEsNiArMTExLDggQEAgYm9vbCBkb2VzR0Mo
R3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgUHV0R2V0dGVyU2V0dGVyQnlJZDoK
ICAgICBjYXNlIFB1dEdldHRlckJ5VmFsOgogICAgIGNhc2UgUHV0U2V0dGVyQnlWYWw6CisgICAg
Y2FzZSBEZWZpbmVEYXRhUHJvcGVydHk6CisgICAgY2FzZSBEZWZpbmVBY2Nlc3NvclByb3BlcnR5
OgogICAgIGNhc2UgRGVsZXRlQnlJZDoKICAgICBjYXNlIERlbGV0ZUJ5VmFsOgogICAgIGNhc2Ug
Q2hlY2tTdHJ1Y3R1cmU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0ZpeHVwUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNl
LmNwcAppbmRleCA2ZWU1MTQyZjc4ZjYwYmYxMDk2ODNjOGI4OWMxNWQwZTQ1OGIzZmUwLi43NWEz
YjVkNDU2N2U3NGRhODUyZTQ0OTI1ZmE3ZGJmMTQwOTA1MzU3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKQEAgLTE2MDIsNiArMTYwMiwzNSBAQCBjbGFz
cyBGaXh1cFBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgIGZpeEVkZ2U8VW50eXBl
ZFVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAKKyAgICAgICAgY2Fz
ZSBEZWZpbmVEYXRhUHJvcGVydHk6IHsKKyAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVzZT4obV9n
cmFwaC52YXJBcmdDaGlsZChub2RlLCAwKSk7CisgICAgICAgICAgICBFZGdlJiBwcm9wZXJ0eUVk
Z2UgPSBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpOworICAgICAgICAgICAgaWYgKHByb3Bl
cnR5RWRnZS0+c2hvdWxkU3BlY3VsYXRlU3ltYm9sKCkpCisgICAgICAgICAgICAgICAgZml4RWRn
ZTxTeW1ib2xVc2U+KHByb3BlcnR5RWRnZSk7CisgICAgICAgICAgICBlbHNlIGlmIChwcm9wZXJ0
eUVkZ2UtPnNob3VsZFNwZWN1bGF0ZVN0cmluZygpKQorICAgICAgICAgICAgICAgIGZpeEVkZ2U8
U3RyaW5nVXNlPihwcm9wZXJ0eUVkZ2UpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIGZpeEVkZ2U8VW50eXBlZFVzZT4ocHJvcGVydHlFZGdlKTsKKyAgICAgICAgICAgIGZpeEVk
Z2U8VW50eXBlZFVzZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAyKSk7CisgICAgICAgICAg
ICBmaXhFZGdlPEludDMyVXNlPihtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDMpKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBEZWZpbmVBY2Nlc3NvclBy
b3BlcnR5OiB7CisgICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG1fZ3JhcGgudmFyQXJnQ2hp
bGQobm9kZSwgMCkpOworICAgICAgICAgICAgRWRnZSYgcHJvcGVydHlFZGdlID0gbV9ncmFwaC52
YXJBcmdDaGlsZChub2RlLCAxKTsKKyAgICAgICAgICAgIGlmIChwcm9wZXJ0eUVkZ2UtPnNob3Vs
ZFNwZWN1bGF0ZVN5bWJvbCgpKQorICAgICAgICAgICAgICAgIGZpeEVkZ2U8U3ltYm9sVXNlPihw
cm9wZXJ0eUVkZ2UpOworICAgICAgICAgICAgZWxzZSBpZiAocHJvcGVydHlFZGdlLT5zaG91bGRT
cGVjdWxhdGVTdHJpbmcoKSkKKyAgICAgICAgICAgICAgICBmaXhFZGdlPFN0cmluZ1VzZT4ocHJv
cGVydHlFZGdlKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBmaXhFZGdlPFVu
dHlwZWRVc2U+KHByb3BlcnR5RWRnZSk7CisgICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG1f
Z3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMikpOworICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNl
PihtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDMpKTsKKyAgICAgICAgICAgIGZpeEVkZ2U8SW50
MzJVc2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgNCkpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKwogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICAgICAgLy8gSGF2ZSB0aGVz
ZSBuby1vcCBjYXNlcyBoZXJlIHRvIGVuc3VyZSB0aGF0IG5vYm9keSBmb3JnZXRzIHRvIGFkZCBo
YW5kbGVycyBmb3IgbmV3IG9wY29kZXMuCiAgICAgICAgIGNhc2UgU2V0QXJndW1lbnQ6CkBAIC0x
NjcxLDggKzE3MDAsNiBAQCBjbGFzcyBGaXh1cFBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAg
ICAgY2FzZSBHZXRCeVZhbFdpdGhUaGlzOgogICAgICAgICBjYXNlIENvbXBhcmVFcVB0cjoKICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBicmVhazsKICNlbHNl
CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZVR5cGUuaAppbmRleCAxZjM1ZWIyZDkwM2I0NjZjMjQxOGMzZGMxYjYxODUz
ZWJlNWQ2OTc5Li4yNTE1ZWIzNDJiZDczODllMTE4ODdhYmQ4MmYwZWNmZjAxMDdkYmIyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCkBAIC0xOTksNiArMTk5LDggQEAg
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKFB1dEdldHRlclNldHRl
ckJ5SWQsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhQdXRHZXR0ZXJCeVZhbCwgTm9k
ZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFB1dFNldHRlckJ5VmFsLCBOb2RlTXVzdEdlbmVy
YXRlKSBcCisgICAgbWFjcm8oRGVmaW5lRGF0YVByb3BlcnR5LCBOb2RlTXVzdEdlbmVyYXRlIHwg
Tm9kZUhhc1ZhckFyZ3MpIFwKKyAgICBtYWNybyhEZWZpbmVBY2Nlc3NvclByb3BlcnR5LCBOb2Rl
TXVzdEdlbmVyYXRlIHwgTm9kZUhhc1ZhckFyZ3MpIFwKICAgICBtYWNybyhEZWxldGVCeUlkLCBO
b2RlUmVzdWx0Qm9vbGVhbiB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhEZWxldGVC
eVZhbCwgTm9kZVJlc3VsdEJvb2xlYW4gfCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8o
Q2hlY2tTdHJ1Y3R1cmUsIE5vZGVNdXN0R2VuZXJhdGUpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCmluZGV4IGQyMTkxNmEyNTRjNzI5NmE5ZWQ2YmQ3MzMz
ZWNkMzYyZmRlM2ExOTIuLmQ1MzA1NjIwODdiMjkzM2Y3ZDhmNjIxNDM3ZTdhNTU0M2MyMjhmYjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcApAQCAtMzgs
NiArMzgsNyBAQAogI2luY2x1ZGUgIkRGR1RvRlRMRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNr
LmgiCiAjaW5jbHVkZSAiREZHVG9GVExGb3JPU1JFbnRyeURlZmVycmVkQ29tcGlsYXRpb25DYWxs
YmFjay5oIgogI2luY2x1ZGUgIkRGR1dvcmtsaXN0LmgiCisjaW5jbHVkZSAiRGVmaW5lUHJvcGVy
dHlBdHRyaWJ1dGVzLmgiCiAjaW5jbHVkZSAiRGlyZWN0QXJndW1lbnRzLmgiCiAjaW5jbHVkZSAi
RlRMRm9yT1NSRW50cnlKSVRDb2RlLmgiCiAjaW5jbHVkZSAiRlRMT1NSRW50cnkuaCIKQEAgLTEw
MjIsNiArMTAyMyw4MiBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxXaXRo
VGhpcyhFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuYwogICAgIHB1dFdpdGhUaGlz
PGZhbHNlPihleGVjLCBlbmNvZGVkQmFzZSwgZW5jb2RlZFRoaXMsIGVuY29kZWRWYWx1ZSwgcHJv
cGVydHkpOwogfQogCitBTFdBWVNfSU5MSU5FIHN0YXRpYyB2b2lkIGRlZmluZURhdGFQcm9wZXJ0
eShFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwgSlNPYmplY3QqIGJhc2UsIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgaW50MzJfdCBhdHRyaWJ1dGVzKQorewor
ICAgIFByb3BlcnR5RGVzY3JpcHRvciBkZXNjcmlwdG9yID0gdG9Qcm9wZXJ0eURlc2NyaXB0b3Io
dmFsdWUsIGpzVW5kZWZpbmVkKCksIGpzVW5kZWZpbmVkKCksIERlZmluZVByb3BlcnR5QXR0cmli
dXRlcyhhdHRyaWJ1dGVzKSk7CisgICAgQVNTRVJUKChkZXNjcmlwdG9yLmF0dHJpYnV0ZXMoKSAm
IEFjY2Vzc29yKSB8fCAoIWRlc2NyaXB0b3IuaXNBY2Nlc3NvckRlc2NyaXB0b3IoKSkpOworICAg
IGJhc2UtPm1ldGhvZFRhYmxlKHZtKS0+ZGVmaW5lT3duUHJvcGVydHkoYmFzZSwgZXhlYywgcHJv
cGVydHlOYW1lLCBkZXNjcmlwdG9yLCB0cnVlKTsKK30KKwordm9pZCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkRlZmluZURhdGFQcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkUHJvcGVydHksIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSwgaW50MzJfdCBhdHRyaWJ1dGVzKQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIElkZW50aWZpZXIgcHJvcGVydHlO
YW1lID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRQcm9wZXJ0eSkudG9Qcm9wZXJ0eUtleShleGVj
KTsKKyAgICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0aW9uKCkpKQorICAgICAgICByZXR1cm47
CisgICAgZGVmaW5lRGF0YVByb3BlcnR5KGV4ZWMsIHZtLCBiYXNlLCBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpLCBhdHRyaWJ1dGVzKTsKK30KKwordm9pZCBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkRlZmluZURhdGFQcm9wZXJ0eVN0cmluZyhFeGVjU3RhdGUqIGV4
ZWMsIEpTT2JqZWN0KiBiYXNlLCBKU1N0cmluZyogcHJvcGVydHksIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSwgaW50MzJfdCBhdHRyaWJ1dGVzKQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIElkZW50aWZpZXIgcHJv
cGVydHlOYW1lID0gcHJvcGVydHktPnRvSWRlbnRpZmllcihleGVjKTsKKyAgICBpZiAoVU5MSUtF
TFkoc2NvcGUuZXhjZXB0aW9uKCkpKQorICAgICAgICByZXR1cm47CisgICAgZGVmaW5lRGF0YVBy
b3BlcnR5KGV4ZWMsIHZtLCBiYXNlLCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkVmFsdWUpLCBhdHRyaWJ1dGVzKTsKK30KKwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkRlZmluZURhdGFQcm9wZXJ0eVN5bWJvbChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNl
LCBTeW1ib2wqIHByb3BlcnR5LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIGludDMyX3Qg
YXR0cmlidXRlcykKK3sKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE5hdGl2ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKKyAgICBkZWZpbmVEYXRhUHJvcGVydHkoZXhl
Yywgdm0sIGJhc2UsIElkZW50aWZpZXI6OmZyb21VaWQocHJvcGVydHktPnByaXZhdGVOYW1lKCkp
LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSwgYXR0cmlidXRlcyk7Cit9CisKK0FMV0FZ
U19JTkxJTkUgc3RhdGljIHZvaWQgZGVmaW5lQWNjZXNzb3JQcm9wZXJ0eShFeGVjU3RhdGUqIGV4
ZWMsIFZNJiB2bSwgSlNPYmplY3QqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSwgSlNPYmplY3QqIGdldHRlciwgSlNPYmplY3QqIHNldHRlciwgaW50MzJfdCBhdHRyaWJ1dGVz
KQoreworICAgIFByb3BlcnR5RGVzY3JpcHRvciBkZXNjcmlwdG9yID0gdG9Qcm9wZXJ0eURlc2Ny
aXB0b3IoanNVbmRlZmluZWQoKSwgZ2V0dGVyLCBzZXR0ZXIsIERlZmluZVByb3BlcnR5QXR0cmli
dXRlcyhhdHRyaWJ1dGVzKSk7CisgICAgQVNTRVJUKChkZXNjcmlwdG9yLmF0dHJpYnV0ZXMoKSAm
IEFjY2Vzc29yKSB8fCAoIWRlc2NyaXB0b3IuaXNBY2Nlc3NvckRlc2NyaXB0b3IoKSkpOworICAg
IGJhc2UtPm1ldGhvZFRhYmxlKHZtKS0+ZGVmaW5lT3duUHJvcGVydHkoYmFzZSwgZXhlYywgcHJv
cGVydHlOYW1lLCBkZXNjcmlwdG9yLCB0cnVlKTsKK30KKwordm9pZCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkRlZmluZUFjY2Vzc29yUHJvcGVydHkoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCog
YmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFByb3BlcnR5LCBKU09iamVjdCogZ2V0dGVyLCBK
U09iamVjdCogc2V0dGVyLCBpbnQzMl90IGF0dHJpYnV0ZXMpCit7CisgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSWRlbnRpZmll
ciBwcm9wZXJ0eU5hbWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFByb3BlcnR5KS50b1Byb3Bl
cnR5S2V5KGV4ZWMpOworICAgIGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRpb24oKSkpCisgICAg
ICAgIHJldHVybjsKKyAgICBkZWZpbmVBY2Nlc3NvclByb3BlcnR5KGV4ZWMsIHZtLCBiYXNlLCBw
cm9wZXJ0eU5hbWUsIGdldHRlciwgc2V0dGVyLCBhdHRyaWJ1dGVzKTsKK30KKwordm9pZCBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkRlZmluZUFjY2Vzc29yUHJvcGVydHlTdHJpbmcoRXhlY1N0YXRl
KiBleGVjLCBKU09iamVjdCogYmFzZSwgSlNTdHJpbmcqIHByb3BlcnR5LCBKU09iamVjdCogZ2V0
dGVyLCBKU09iamVjdCogc2V0dGVyLCBpbnQzMl90IGF0dHJpYnV0ZXMpCit7CisgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhl
Yyk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSWRl
bnRpZmllciBwcm9wZXJ0eU5hbWUgPSBwcm9wZXJ0eS0+dG9JZGVudGlmaWVyKGV4ZWMpOworICAg
IGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRpb24oKSkpCisgICAgICAgIHJldHVybjsKKyAgICBk
ZWZpbmVBY2Nlc3NvclByb3BlcnR5KGV4ZWMsIHZtLCBiYXNlLCBwcm9wZXJ0eU5hbWUsIGdldHRl
ciwgc2V0dGVyLCBhdHRyaWJ1dGVzKTsKK30KKwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkRlZmluZUFjY2Vzc29yUHJvcGVydHlTeW1ib2woRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCog
YmFzZSwgU3ltYm9sKiBwcm9wZXJ0eSwgSlNPYmplY3QqIGdldHRlciwgSlNPYmplY3QqIHNldHRl
ciwgaW50MzJfdCBhdHRyaWJ1dGVzKQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOworICAgIGRlZmluZUFjY2Vz
c29yUHJvcGVydHkoZXhlYywgdm0sIGJhc2UsIElkZW50aWZpZXI6OmZyb21VaWQocHJvcGVydHkt
PnByaXZhdGVOYW1lKCkpLCBnZXR0ZXIsIHNldHRlciwgYXR0cmlidXRlcyk7Cit9CisKIGNoYXIq
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXJyYXkoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1
cmUqIGFycmF5U3RydWN0dXJlLCB2b2lkKiBidWZmZXIsIHNpemVfdCBzaXplKQogewogICAgIFZN
KiB2bSA9ICZleGVjLT52bSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlv
bnMuaAppbmRleCA1MjdiZmU1ODc2YWZjNzgzN2JhMzBmZDIxMGQ1YTQ3YzNiMjk1MWU0Li42ODZl
NjNiOWQzNDIzNTM2MDE2MTEyMDZiODBhYzMzOTVkNzNjYmU2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaApAQCAtMTE0LDYgKzExNCwxMiBAQCB2b2lkIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFdpdGhUaGlzKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1Zh
bHVlLCBFbmNvZGVkSgogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRXaXRoVGhp
c1N0cmljdChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlLCBVbmlxdWVkU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbFdpdGhUaGlzKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlKSBXVEZf
SU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxXaXRoVGhpc1N0
cmljdChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRK
U1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwordm9pZCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkRlZmluZURhdGFQcm9wZXJ0eShFeGVjU3RhdGUqLCBKU09iamVjdCosIEVuY29k
ZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgaW50MzJfdCkgV1RGX0lOVEVSTkFMOwordm9pZCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlZmluZURhdGFQcm9wZXJ0eVN0cmluZyhFeGVjU3RhdGUq
LCBKU09iamVjdCosIEpTU3RyaW5nKiwgRW5jb2RlZEpTVmFsdWUsIGludDMyX3QpIFdURl9JTlRF
Uk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWZpbmVEYXRhUHJvcGVydHlTeW1i
b2woRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBTeW1ib2wqLCBFbmNvZGVkSlNWYWx1ZSwgaW50MzJf
dCkgV1RGX0lOVEVSTkFMOwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlZmluZUFjY2Vz
c29yUHJvcGVydHkoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgSlNPYmpl
Y3QqLCBKU09iamVjdCosIGludDMyX3QpIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElP
TiBvcGVyYXRpb25EZWZpbmVBY2Nlc3NvclByb3BlcnR5U3RyaW5nKEV4ZWNTdGF0ZSosIEpTT2Jq
ZWN0KiwgSlNTdHJpbmcqLCBKU09iamVjdCosIEpTT2JqZWN0KiwgaW50MzJfdCkgV1RGX0lOVEVS
TkFMOwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlZmluZUFjY2Vzc29yUHJvcGVydHlT
eW1ib2woRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBTeW1ib2wqLCBKU09iamVjdCosIEpTT2JqZWN0
KiwgaW50MzJfdCkgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25BcnJheVB1c2goRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
LCBKU0FycmF5KikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25BcnJheVB1c2hEb3VibGUoRXhlY1N0YXRlKiwgZG91YmxlIHZhbHVlLCBKU0FycmF5
KikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25B
cnJheVBvcChFeGVjU3RhdGUqLCBKU0FycmF5KikgV1RGX0lOVEVSTkFMOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBo
YXNlLmNwcAppbmRleCAwNmRiNDBlYjY3NjY3MjQ2ZDM0OTA5MDU5MTliZjVhYmQwMGViOTllLi44
N2RiZTgzYTg4OTBjMWQ3YWQzNDhlMDU0ZTVhNzllOWQ1YTQ0MmQ4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBo
YXNlLmNwcApAQCAtMTA0MCw2ICsxMDQwLDggQEAgY2xhc3MgUHJlZGljdGlvblByb3BhZ2F0aW9u
UGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICBjYXNlIFB1dEdldHRlclNldHRlckJ5SWQ6
CiAgICAgICAgIGNhc2UgUHV0R2V0dGVyQnlWYWw6CiAgICAgICAgIGNhc2UgUHV0U2V0dGVyQnlW
YWw6CisgICAgICAgIGNhc2UgRGVmaW5lRGF0YVByb3BlcnR5OgorICAgICAgICBjYXNlIERlZmlu
ZUFjY2Vzc29yUHJvcGVydHk6CiAgICAgICAgIGNhc2UgREZHOjpKdW1wOgogICAgICAgICBjYXNl
IEJyYW5jaDoKICAgICAgICAgY2FzZSBTd2l0Y2g6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU2FmZVRvRXhlY3V0ZS5oCmluZGV4IDIyYjkzNDAwNTgzYWM2ZGY4NjNiMGJlMzhmNmI4
MzM2YTUwNDE5YWMuLmMxMzJmOTU3NGIyNWU2NGU2YWNjNTYxNjBiOTQ3OTU4MmI5M2FmMTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCkBAIC0yMTQs
NiArMjE0LDggQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwg
R3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgUHV0R2V0dGVyU2V0dGVyQnlJZDoK
ICAgICBjYXNlIFB1dEdldHRlckJ5VmFsOgogICAgIGNhc2UgUHV0U2V0dGVyQnlWYWw6CisgICAg
Y2FzZSBEZWZpbmVEYXRhUHJvcGVydHk6CisgICAgY2FzZSBEZWZpbmVBY2Nlc3NvclByb3BlcnR5
OgogICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmU6CiAgICAgY2FzZSBHZXRFeGVjdXRhYmxlOgogICAg
IGNhc2UgR2V0QnV0dGVyZmx5OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5oCmluZGV4IGU3YTI5YjQzMzQ2YjI0ODIzYTk5ODlmZWU5NWQ2NDA1YzMxOGRh
NzMuLmZkMDM1MTM2ZDAxMTkxNjFjNTg2NDRhZTVmNDQyMGIyYTU2ZTNhZjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKQEAgLTEzNDQsNiArMTM0
NCwzNiBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVCB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczLCBhcmc0KTsKICAgICAgICAgcmV0dXJu
IGFwcGVuZENhbGwob3BlcmF0aW9uKTsKICAgICB9CisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2Fs
bE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FT0pKWiBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBH
UFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMsIEdQUlJlZyBhcmc0KQorICAgIHsKKyAgICAgICAgbV9q
aXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMsIGFyZzQpOwor
ICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOworICAgIH0KKyAgICBKSVRDb21w
aWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VPSnNzSlogb3BlcmF0aW9u
LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcgYXJnNCkKKyAg
ICB7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcy
LCBhcmczLCBhcmc0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKKyAg
ICB9CisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9F
T1N5bUpaIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywg
R1BSUmVnIGFyZzQpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoYXJnMSwgYXJnMiwgYXJnMywgYXJnNCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxs
KG9wZXJhdGlvbik7CisgICAgfQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24o
Vl9KSVRPcGVyYXRpb25fRU9KT09aIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcy
LCBHUFJSZWcgYXJnMywgR1BSUmVnIGFyZzQsIEdQUlJlZyBhcmc1KQorICAgIHsKKyAgICAgICAg
bV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMsIGFyZzQs
IGFyZzUpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOworICAgIH0KKyAg
ICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VPSnNzT09a
IG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVn
IGFyZzQsIEdQUlJlZyBhcmc1KQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNX
aXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMsIGFyZzQsIGFyZzUpOworICAgICAgICByZXR1
cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOworICAgIH0KKyAgICBKSVRDb21waWxlcjo6Q2FsbCBj
YWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VPU3ltT09aIG9wZXJhdGlvbiwgR1BSUmVnIGFy
ZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVnIGFyZzQsIEdQUlJlZyBhcmc1KQor
ICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFy
ZzIsIGFyZzMsIGFyZzQsIGFyZzUpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRp
b24pOworICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3Bl
cmF0aW9uX0VPSklVaSBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgVW5pcXVl
ZFN0cmluZ0ltcGwqIGltcGwsIHVuc2lnbmVkIHZhbHVlKQogICAgIHsKICAgICAgICAgbV9qaXQu
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIFRydXN0ZWRJbW1QdHIoaW1w
bCksIFRydXN0ZWRJbW0zMih2YWx1ZSkpOwpAQCAtMTc4OCw3ICsxODE4LDM2IEBAIGNsYXNzIFNw
ZWN1bGF0aXZlSklUIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KEVBQklfMzJCSVRfRFVNTVlfQVJHIGFyZzEucGF5bG9hZEdQUigpLCBhcmcxLnRhZ0dQUigpLCBh
cmcyLnBheWxvYWRHUFIoKSwgYXJnMi50YWdHUFIoKSwgYXJnMy5wYXlsb2FkR1BSKCksIGFyZzMu
dGFnR1BSKCksIGFyZzQucGF5bG9hZEdQUigpLCBhcmc0LnRhZ0dQUigpKTsKICAgICAgICAgcmV0
dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKICAgICB9Ci0KKyAgICBKSVRDb21waWxlcjo6Q2Fs
bCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VPSkpaIG9wZXJhdGlvbiwgR1BSUmVnIGFy
ZzEsIEpTVmFsdWVSZWdzIGFyZzIsIEpTVmFsdWVSZWdzIGFyZzMsIEdQUlJlZyBhcmc0KQorICAg
IHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIu
cGF5bG9hZEdQUigpLCBhcmcyLnRhZ0dQUigpLCBhcmczLnBheWxvYWRHUFIoKSwgYXJnMy50YWdH
UFIoKSwgYXJnNCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CisgICAg
fQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRU9K
c3NKWiBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgSlNWYWx1ZVJlZ3MgYXJn
MywgR1BSUmVnIGFyZzQpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUoYXJnMSwgYXJnMiwgRUFCSV8zMkJJVF9EVU1NWV9BUkcgYXJnMy5wYXlsb2FkR1BS
KCksIGFyZzMudGFnR1BSKCksIGFyZzQpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVy
YXRpb24pOworICAgIH0KKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklU
T3BlcmF0aW9uX0VPU3ltSlogb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEpT
VmFsdWVSZWdzIGFyZzMsIEdQUlJlZyBhcmc0KQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIEVBQklfMzJCSVRfRFVNTVlfQVJHIGFy
ZzMucGF5bG9hZEdQUigpLCBhcmczLnRhZ0dQUigpLCBhcmc0KTsKKyAgICAgICAgcmV0dXJuIGFw
cGVuZENhbGwob3BlcmF0aW9uKTsKKyAgICB9CisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9w
ZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FT0pPT1ogb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgSlNW
YWx1ZVJlZ3MgYXJnMiwgR1BSUmVnIGFyZzMsIEdQUlJlZyBhcmc0LCBHUFJSZWcgYXJnNSkKKyAg
ICB7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcy
LnBheWxvYWRHUFIoKSwgYXJnMi50YWdHUFIoKSwgYXJnMywgYXJnNCwgYXJnNSk7CisgICAgICAg
IHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CisgICAgfQorICAgIEpJVENvbXBpbGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRU9Kc3NPT1ogb3BlcmF0aW9uLCBHUFJS
ZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcgYXJnNCwgR1BSUmVnIGFy
ZzUpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJn
MSwgYXJnMiwgYXJnMywgYXJnNCwgYXJnNSk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9w
ZXJhdGlvbik7CisgICAgfQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9K
SVRPcGVyYXRpb25fRU9TeW1PT1ogb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIs
IEdQUlJlZyBhcmczLCBHUFJSZWcgYXJnNCwgR1BSUmVnIGFyZzUpCisgICAgeworICAgICAgICBt
X2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMywgYXJnNCwg
YXJnNSk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CisgICAgfQogICAg
IEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRU9KSVVpIG9w
ZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEpTVmFsdWVSZWdzIGFyZzIsIFVuaXF1ZWRTdHJpbmdJbXBs
KiBpbXBsLCB1bnNpZ25lZCB2YWx1ZSkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLnBheWxvYWRHUFIoKSwgYXJnMi50YWdHUFIoKSwg
VHJ1c3RlZEltbVB0cihpbXBsKSwgVHJ1c3RlZEltbTMyKHZhbHVlKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCBh
MjJkYmVhZGU3MTA4Zjc1NTk2NjZiOTNmOWFlYzdlZjUwYzEzOTViLi40NmYxOWI2NGFkNjQxYzZj
MzY5MDliMzI0NDNhYThiNWUwOGY3ZmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTQ0OTEsNiArNDQ5MSwxMTEg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVh
azsKICAgICB9CiAKKyAgICBjYXNlIERlZmluZURhdGFQcm9wZXJ0eTogeworICAgICAgICBzdGF0
aWNfYXNzZXJ0KEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzID49IDYsICJXZSBhcmUgYXNzdW1p
bmcgd2UgaGF2ZSBlbm91Z2ggcmVnaXN0ZXJzIHRvIG1ha2UgdGhpcyBjYWxsIHdpdGhvdXQgaW5j
cmVtZW50YWxseSBzZXR0aW5nIHVwIHRoZSBhcmd1bWVudHMuIik7CisKKyAgICAgICAgU3BlY3Vs
YXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBtX2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUs
IDApKTsKKyAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOworCisgICAgICAgIEpT
VmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwg
MikpOworICAgICAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygp
OworCisgICAgICAgIFNwZWN1bGF0ZUludDMyT3BlcmFuZCBhdHRyaWJ1dGVzKHRoaXMsIG1faml0
LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMykpOworICAgICAgICBHUFJSZWcgYXR0cmlidXRl
c0dQUiA9IGF0dHJpYnV0ZXMuZ3ByKCk7CisKKyAgICAgICAgRWRnZSYgcHJvcGVydHlFZGdlID0g
bV9qaXQuZ3JhcGgoKS52YXJBcmdDaGlsZChub2RlLCAxKTsKKyAgICAgICAgc3dpdGNoIChwcm9w
ZXJ0eUVkZ2UudXNlS2luZCgpKSB7CisgICAgICAgIGNhc2UgU3RyaW5nVXNlOiB7CisgICAgICAg
ICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBwcm9wZXJ0eSh0aGlzLCBwcm9wZXJ0eUVkZ2UpOwor
ICAgICAgICAgICAgR1BSUmVnIHByb3BlcnR5R1BSID0gcHJvcGVydHkuZ3ByKCk7CisgICAgICAg
ICAgICBzcGVjdWxhdGVTdHJpbmcocHJvcGVydHlFZGdlLCBwcm9wZXJ0eUdQUik7CisKKyAgICAg
ICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvbkRlZmluZURhdGFQcm9wZXJ0eVN0cmluZywgTm9SZXN1bHQsIGJhc2VHUFIsIHByb3BlcnR5
R1BSLCB2YWx1ZVJlZ3MsIGF0dHJpYnV0ZXNHUFIpOworICAgICAgICAgICAgbV9qaXQuZXhjZXB0
aW9uQ2hlY2soKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2Ug
U3ltYm9sVXNlOiB7CisgICAgICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBwcm9wZXJ0eSh0
aGlzLCBwcm9wZXJ0eUVkZ2UpOworICAgICAgICAgICAgR1BSUmVnIHByb3BlcnR5R1BSID0gcHJv
cGVydHkuZ3ByKCk7CisgICAgICAgICAgICBzcGVjdWxhdGVTeW1ib2wocHJvcGVydHlFZGdlLCBw
cm9wZXJ0eUdQUik7CisKKyAgICAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CisgICAgICAgICAg
ICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlZmluZURhdGFQcm9wZXJ0eVN5bWJvbCwgTm9SZXN1
bHQsIGJhc2VHUFIsIHByb3BlcnR5R1BSLCB2YWx1ZVJlZ3MsIGF0dHJpYnV0ZXNHUFIpOworICAg
ICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisgICAgICAgIGNhc2UgVW50eXBlZFVzZTogeworICAgICAgICAgICAgSlNWYWx1ZU9w
ZXJhbmQgcHJvcGVydHkodGhpcywgcHJvcGVydHlFZGdlKTsKKyAgICAgICAgICAgIEpTVmFsdWVS
ZWdzIHByb3BlcnR5UmVncyA9IHByb3BlcnR5LmpzVmFsdWVSZWdzKCk7CisKKyAgICAgICAgICAg
IGZsdXNoUmVnaXN0ZXJzKCk7CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRl
ZmluZURhdGFQcm9wZXJ0eSwgTm9SZXN1bHQsIGJhc2VHUFIsIHByb3BlcnR5UmVncywgdmFsdWVS
ZWdzLCBhdHRyaWJ1dGVzR1BSKTsKKyAgICAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorCisgICAgICAg
IG5vUmVzdWx0KG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBjYXNlIERlZmlu
ZUFjY2Vzc29yUHJvcGVydHk6IHsKKyAgICAgICAgc3RhdGljX2Fzc2VydChHUFJJbmZvOjpudW1i
ZXJPZlJlZ2lzdGVycyA+PSA2LCAiV2UgYXJlIGFzc3VtaW5nIHdlIGhhdmUgZW5vdWdoIHJlZ2lz
dGVycyB0byBtYWtlIHRoaXMgY2FsbCB3aXRob3V0IGluY3JlbWVudGFsbHkgc2V0dGluZyB1cCB0
aGUgYXJndW1lbnRzLiIpOworCisgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhp
cywgbV9qaXQuZ3JhcGgoKS52YXJBcmdDaGlsZChub2RlLCAwKSk7CisgICAgICAgIEdQUlJlZyBi
YXNlR1BSID0gYmFzZS5ncHIoKTsKKworICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBnZXR0
ZXIodGhpcywgbV9qaXQuZ3JhcGgoKS52YXJBcmdDaGlsZChub2RlLCAyKSk7CisgICAgICAgIEdQ
UlJlZyBnZXR0ZXJHUFIgPSBnZXR0ZXIuZ3ByKCk7CisKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9w
ZXJhbmQgc2V0dGVyKHRoaXMsIG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMykpOwor
ICAgICAgICBHUFJSZWcgc2V0dGVyR1BSID0gc2V0dGVyLmdwcigpOworCisgICAgICAgIFNwZWN1
bGF0ZUludDMyT3BlcmFuZCBhdHRyaWJ1dGVzKHRoaXMsIG1faml0LmdyYXBoKCkudmFyQXJnQ2hp
bGQobm9kZSwgNCkpOworICAgICAgICBHUFJSZWcgYXR0cmlidXRlc0dQUiA9IGF0dHJpYnV0ZXMu
Z3ByKCk7CisKKyAgICAgICAgRWRnZSYgcHJvcGVydHlFZGdlID0gbV9qaXQuZ3JhcGgoKS52YXJB
cmdDaGlsZChub2RlLCAxKTsKKyAgICAgICAgc3dpdGNoIChwcm9wZXJ0eUVkZ2UudXNlS2luZCgp
KSB7CisgICAgICAgIGNhc2UgU3RyaW5nVXNlOiB7CisgICAgICAgICAgICBTcGVjdWxhdGVDZWxs
T3BlcmFuZCBwcm9wZXJ0eSh0aGlzLCBwcm9wZXJ0eUVkZ2UpOworICAgICAgICAgICAgR1BSUmVn
IHByb3BlcnR5R1BSID0gcHJvcGVydHkuZ3ByKCk7CisgICAgICAgICAgICBzcGVjdWxhdGVTdHJp
bmcocHJvcGVydHlFZGdlLCBwcm9wZXJ0eUdQUik7CisKKyAgICAgICAgICAgIGZsdXNoUmVnaXN0
ZXJzKCk7CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlZmluZUFjY2Vzc29y
UHJvcGVydHlTdHJpbmcsIE5vUmVzdWx0LCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgZ2V0dGVyR1BS
LCBzZXR0ZXJHUFIsIGF0dHJpYnV0ZXNHUFIpOworICAgICAgICAgICAgbV9qaXQuZXhjZXB0aW9u
Q2hlY2soKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgU3lt
Ym9sVXNlOiB7CisgICAgICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBwcm9wZXJ0eSh0aGlz
LCBwcm9wZXJ0eUVkZ2UpOworICAgICAgICAgICAgR1BSUmVnIHByb3BlcnR5R1BSID0gcHJvcGVy
dHkuZ3ByKCk7CisgICAgICAgICAgICBzcGVjdWxhdGVTeW1ib2wocHJvcGVydHlFZGdlLCBwcm9w
ZXJ0eUdQUik7CisKKyAgICAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CisgICAgICAgICAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlZmluZUFjY2Vzc29yUHJvcGVydHlTeW1ib2wsIE5vUmVz
dWx0LCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgZ2V0dGVyR1BSLCBzZXR0ZXJHUFIsIGF0dHJpYnV0
ZXNHUFIpOworICAgICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgVW50eXBlZFVzZTogeworICAgICAgICAg
ICAgSlNWYWx1ZU9wZXJhbmQgcHJvcGVydHkodGhpcywgcHJvcGVydHlFZGdlKTsKKyAgICAgICAg
ICAgIEpTVmFsdWVSZWdzIHByb3BlcnR5R1BSID0gcHJvcGVydHkuanNWYWx1ZVJlZ3MoKTsKKwor
ICAgICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAgICAgICAgICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eSwgTm9SZXN1bHQsIGJhc2VHUFIsIHByb3Bl
cnR5R1BSLCBnZXR0ZXJHUFIsIHNldHRlckdQUiwgYXR0cmlidXRlc0dQUik7CisgICAgICAgICAg
ICBtX2ppdC5leGNlcHRpb25DaGVjaygpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
KyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgICAgIH0KKworICAgICAgICBub1Jlc3VsdChub2RlKTsKKyAgICAgICAgYnJlYWs7
CisgICAgfQorCiAgICAgY2FzZSBHZXRHbG9iYWxMZXhpY2FsVmFyaWFibGU6CiAgICAgY2FzZSBH
ZXRHbG9iYWxWYXI6IHsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdFBheWxvYWQodGhpcyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
NjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cAppbmRleCBhYjI4ODYyYzE2MjY5NDMzNjJjMWE1NTdiYmVlMzIwZWQzZjNkNGMxLi5hNzRmNzlh
ZjFiOTZhNzBhZDY0ODhlYzMxODBiNWMxN2NkY2NhMjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTQ0NDgsNiArNDQ0OCwx
MTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBi
cmVhazsKICAgICB9CiAKKyAgICBjYXNlIERlZmluZURhdGFQcm9wZXJ0eTogeworICAgICAgICBz
dGF0aWNfYXNzZXJ0KEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzID49IDQsICJXZSBhcmUgYXNz
dW1pbmcgd2UgaGF2ZSBlbm91Z2ggcmVnaXN0ZXJzIHRvIG1ha2UgdGhpcyBjYWxsIHdpdGhvdXQg
aW5jcmVtZW50YWxseSBzZXR0aW5nIHVwIHRoZSBhcmd1bWVudHMuIik7CisKKyAgICAgICAgU3Bl
Y3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBtX2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5v
ZGUsIDApKTsKKyAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOworCisgICAgICAg
IEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9k
ZSwgMikpOworICAgICAgICBHUFJSZWcgdmFsdWVHUFIgPSB2YWx1ZS5ncHIoKTsKKworICAgICAg
ICBTcGVjdWxhdGVJbnQzMk9wZXJhbmQgYXR0cmlidXRlcyh0aGlzLCBtX2ppdC5ncmFwaCgpLnZh
ckFyZ0NoaWxkKG5vZGUsIDMpKTsKKyAgICAgICAgR1BSUmVnIGF0dHJpYnV0ZXNHUFIgPSBhdHRy
aWJ1dGVzLmdwcigpOworCisgICAgICAgIEVkZ2UmIHByb3BlcnR5RWRnZSA9IG1faml0LmdyYXBo
KCkudmFyQXJnQ2hpbGQobm9kZSwgMSk7CisgICAgICAgIHN3aXRjaCAocHJvcGVydHlFZGdlLnVz
ZUtpbmQoKSkgeworICAgICAgICBjYXNlIFN0cmluZ1VzZTogeworICAgICAgICAgICAgU3BlY3Vs
YXRlQ2VsbE9wZXJhbmQgcHJvcGVydHkodGhpcywgcHJvcGVydHlFZGdlKTsKKyAgICAgICAgICAg
IEdQUlJlZyBwcm9wZXJ0eUdQUiA9IHByb3BlcnR5LmdwcigpOworICAgICAgICAgICAgc3BlY3Vs
YXRlU3RyaW5nKHByb3BlcnR5RWRnZSwgcHJvcGVydHlHUFIpOworCisgICAgICAgICAgICBmbHVz
aFJlZ2lzdGVycygpOworICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWZpbmVE
YXRhUHJvcGVydHlTdHJpbmcsIE5vUmVzdWx0LCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgdmFsdWVH
UFIsIGF0dHJpYnV0ZXNHUFIpOworICAgICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgU3ltYm9sVXNlOiB7
CisgICAgICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBwcm9wZXJ0eSh0aGlzLCBwcm9wZXJ0
eUVkZ2UpOworICAgICAgICAgICAgR1BSUmVnIHByb3BlcnR5R1BSID0gcHJvcGVydHkuZ3ByKCk7
CisgICAgICAgICAgICBzcGVjdWxhdGVTeW1ib2wocHJvcGVydHlFZGdlLCBwcm9wZXJ0eUdQUik7
CisKKyAgICAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CisgICAgICAgICAgICBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvbkRlZmluZURhdGFQcm9wZXJ0eVN5bWJvbCwgTm9SZXN1bHQsIGJhc2VHUFIs
IHByb3BlcnR5R1BSLCB2YWx1ZUdQUiwgYXR0cmlidXRlc0dQUik7CisgICAgICAgICAgICBtX2pp
dC5leGNlcHRpb25DaGVjaygpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAg
ICAgY2FzZSBVbnR5cGVkVXNlOiB7CisgICAgICAgICAgICBKU1ZhbHVlT3BlcmFuZCBwcm9wZXJ0
eSh0aGlzLCBwcm9wZXJ0eUVkZ2UpOworICAgICAgICAgICAgR1BSUmVnIHByb3BlcnR5R1BSID0g
cHJvcGVydHkuZ3ByKCk7CisKKyAgICAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CisgICAgICAg
ICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlZmluZURhdGFQcm9wZXJ0eSwgTm9SZXN1bHQs
IGJhc2VHUFIsIHByb3BlcnR5R1BSLCB2YWx1ZUdQUiwgYXR0cmlidXRlc0dQUik7CisgICAgICAg
ICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgIH0KKworICAgICAgICBub1Jlc3VsdChub2RlKTsKKyAgICAgICAgYnJl
YWs7CisgICAgfQorCisgICAgY2FzZSBEZWZpbmVBY2Nlc3NvclByb3BlcnR5OiB7CisgICAgICAg
IHN0YXRpY19hc3NlcnQoR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMgPj0gNSwgIldlIGFyZSBh
c3N1bWluZyB3ZSBoYXZlIGVub3VnaCByZWdpc3RlcnMgdG8gbWFrZSB0aGlzIGNhbGwgd2l0aG91
dCBpbmNyZW1lbnRhbGx5IHNldHRpbmcgdXAgdGhlIGFyZ3VtZW50cy4iKTsKKworICAgICAgICBT
cGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQo
bm9kZSwgMCkpOworICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CisKKyAgICAg
ICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgZ2V0dGVyKHRoaXMsIG1faml0LmdyYXBoKCkudmFyQXJn
Q2hpbGQobm9kZSwgMikpOworICAgICAgICBHUFJSZWcgZ2V0dGVyR1BSID0gZ2V0dGVyLmdwcigp
OworCisgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHNldHRlcih0aGlzLCBtX2ppdC5ncmFw
aCgpLnZhckFyZ0NoaWxkKG5vZGUsIDMpKTsKKyAgICAgICAgR1BSUmVnIHNldHRlckdQUiA9IHNl
dHRlci5ncHIoKTsKKworICAgICAgICBTcGVjdWxhdGVJbnQzMk9wZXJhbmQgYXR0cmlidXRlcyh0
aGlzLCBtX2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIDQpKTsKKyAgICAgICAgR1BSUmVn
IGF0dHJpYnV0ZXNHUFIgPSBhdHRyaWJ1dGVzLmdwcigpOworCisgICAgICAgIEVkZ2UmIHByb3Bl
cnR5RWRnZSA9IG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMSk7CisgICAgICAgIHN3
aXRjaCAocHJvcGVydHlFZGdlLnVzZUtpbmQoKSkgeworICAgICAgICBjYXNlIFN0cmluZ1VzZTog
eworICAgICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgcHJvcGVydHkodGhpcywgcHJvcGVy
dHlFZGdlKTsKKyAgICAgICAgICAgIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IHByb3BlcnR5Lmdwcigp
OworICAgICAgICAgICAgc3BlY3VsYXRlU3RyaW5nKHByb3BlcnR5RWRnZSwgcHJvcGVydHlHUFIp
OworCisgICAgICAgICAgICBmbHVzaFJlZ2lzdGVycygpOworICAgICAgICAgICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25EZWZpbmVBY2Nlc3NvclByb3BlcnR5U3RyaW5nLCBOb1Jlc3VsdCwgYmFz
ZUdQUiwgcHJvcGVydHlHUFIsIGdldHRlckdQUiwgc2V0dGVyR1BSLCBhdHRyaWJ1dGVzR1BSKTsK
KyAgICAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorICAgICAgICBjYXNlIFN5bWJvbFVzZTogeworICAgICAgICAgICAgU3BlY3Vs
YXRlQ2VsbE9wZXJhbmQgcHJvcGVydHkodGhpcywgcHJvcGVydHlFZGdlKTsKKyAgICAgICAgICAg
IEdQUlJlZyBwcm9wZXJ0eUdQUiA9IHByb3BlcnR5LmdwcigpOworICAgICAgICAgICAgc3BlY3Vs
YXRlU3ltYm9sKHByb3BlcnR5RWRnZSwgcHJvcGVydHlHUFIpOworCisgICAgICAgICAgICBmbHVz
aFJlZ2lzdGVycygpOworICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWZpbmVB
Y2Nlc3NvclByb3BlcnR5U3ltYm9sLCBOb1Jlc3VsdCwgYmFzZUdQUiwgcHJvcGVydHlHUFIsIGdl
dHRlckdQUiwgc2V0dGVyR1BSLCBhdHRyaWJ1dGVzR1BSKTsKKyAgICAgICAgICAgIG1faml0LmV4
Y2VwdGlvbkNoZWNrKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBj
YXNlIFVudHlwZWRVc2U6IHsKKyAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHByb3BlcnR5KHRo
aXMsIHByb3BlcnR5RWRnZSk7CisgICAgICAgICAgICBHUFJSZWcgcHJvcGVydHlHUFIgPSBwcm9w
ZXJ0eS5ncHIoKTsKKworICAgICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAgICAgICAgICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eSwgTm9SZXN1bHQs
IGJhc2VHUFIsIHByb3BlcnR5R1BSLCBnZXR0ZXJHUFIsIHNldHRlckdQUiwgYXR0cmlidXRlc0dQ
Uik7CisgICAgICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKworICAgICAgICBub1Jlc3VsdChub2RlKTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBHZXRHbG9iYWxMZXhpY2FsVmFyaWFi
bGU6CiAgICAgY2FzZSBHZXRHbG9iYWxWYXI6IHsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3Vs
dCh0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJp
bGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNw
cAppbmRleCBjYWQ0NWZkYmFiZTkwZjQ0OTM0ZDE0YTRiZTNiZDEwZmM4Mjc2NDQ5Li5hMWNmODA4
ODUyM2JkZDM3Y2IyMGRmMDgxYjRhMDFkZDFhYmMwZDY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCkBAIC0yNjIsNiArMjYyLDggQEAgaW5saW5l
IENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBDb21wYXJl
R3JlYXRlcjoKICAgICBjYXNlIENvbXBhcmVHcmVhdGVyRXE6CiAgICAgY2FzZSBDb21wYXJlU3Ry
aWN0RXE6CisgICAgY2FzZSBEZWZpbmVEYXRhUHJvcGVydHk6CisgICAgY2FzZSBEZWZpbmVBY2Nl
c3NvclByb3BlcnR5OgogICAgICAgICAvLyBUaGVzZSBhcmUgT0suCiAgICAgICAgIGJyZWFrOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXgg
YTA4NTU1NjRhZDgxNDdjMjQ1MmNjZGYwNWExNzJhNDY5ZTI0M2E5Yi4uYzA3YTM2MmFmMDYxNTgz
YmYxNmQyNjE3NTcyOTBlNzEyNWNhN2YxZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtNjkwLDYgKzY5MCwxMiBAQCBjbGFzcyBMb3dlckRG
R1RvQjMgewogICAgICAgICBjYXNlIFB1dEJ5VmFsV2l0aFRoaXM6CiAgICAgICAgICAgICBjb21w
aWxlUHV0QnlWYWxXaXRoVGhpcygpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
RGVmaW5lRGF0YVByb3BlcnR5OgorICAgICAgICAgICAgY29tcGlsZURlZmluZURhdGFQcm9wZXJ0
eSgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRGVmaW5lQWNjZXNzb3JQcm9w
ZXJ0eToKKyAgICAgICAgICAgIGNvbXBpbGVEZWZpbmVBY2Nlc3NvclByb3BlcnR5KCk7CisgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBBcnJheVB1c2g6CiAgICAgICAgICAgICBjb21w
aWxlQXJyYXlQdXNoKCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTI3NTksNiArMjc2NSw2MSBA
QCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICB2bUNhbGwoVm9pZCwgbV9vdXQub3BlcmF0
aW9uKG1fZ3JhcGguaXNTdHJpY3RNb2RlRm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKSA/IG9w
ZXJhdGlvblB1dEJ5VmFsV2l0aFRoaXNTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbFdpdGhUaGlz
KSwKICAgICAgICAgICAgIG1fY2FsbEZyYW1lLCBiYXNlLCB0aGlzVmFsdWUsIHByb3BlcnR5LCB2
YWx1ZSk7CiAgICAgfQorCisgICAgdm9pZCBjb21waWxlRGVmaW5lRGF0YVByb3BlcnR5KCkKKyAg
ICB7CisgICAgICAgIExWYWx1ZSBiYXNlID0gbG93Q2VsbChtX2dyYXBoLnZhckFyZ0NoaWxkKG1f
bm9kZSwgMCkpOworICAgICAgICBMVmFsdWUgdmFsdWUgID0gbG93SlNWYWx1ZShtX2dyYXBoLnZh
ckFyZ0NoaWxkKG1fbm9kZSwgMikpOworICAgICAgICBMVmFsdWUgYXR0cmlidXRlcyA9IGxvd0lu
dDMyKG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCAzKSk7CisgICAgICAgIEVkZ2UmIHByb3Bl
cnR5RWRnZSA9IG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCAxKTsKKyAgICAgICAgc3dpdGNo
IChwcm9wZXJ0eUVkZ2UudXNlS2luZCgpKSB7CisgICAgICAgIGNhc2UgU3RyaW5nVXNlOiB7Cisg
ICAgICAgICAgICBMVmFsdWUgcHJvcGVydHkgPSBsb3dTdHJpbmcocHJvcGVydHlFZGdlKTsKKyAg
ICAgICAgICAgIHZtQ2FsbChWb2lkLCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uRGVmaW5lRGF0
YVByb3BlcnR5U3RyaW5nKSwgbV9jYWxsRnJhbWUsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSwgYXR0
cmlidXRlcyk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFN5
bWJvbFVzZTogeworICAgICAgICAgICAgTFZhbHVlIHByb3BlcnR5ID0gbG93U3ltYm9sKHByb3Bl
cnR5RWRnZSk7CisgICAgICAgICAgICB2bUNhbGwoVm9pZCwgbV9vdXQub3BlcmF0aW9uKG9wZXJh
dGlvbkRlZmluZURhdGFQcm9wZXJ0eVN5bWJvbCksIG1fY2FsbEZyYW1lLCBiYXNlLCBwcm9wZXJ0
eSwgdmFsdWUsIGF0dHJpYnV0ZXMpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAg
ICAgICAgY2FzZSBVbnR5cGVkVXNlOiB7CisgICAgICAgICAgICBMVmFsdWUgcHJvcGVydHkgPSBs
b3dKU1ZhbHVlKHByb3BlcnR5RWRnZSk7CisgICAgICAgICAgICB2bUNhbGwoVm9pZCwgbV9vdXQu
b3BlcmF0aW9uKG9wZXJhdGlvbkRlZmluZURhdGFQcm9wZXJ0eSksIG1fY2FsbEZyYW1lLCBiYXNl
LCBwcm9wZXJ0eSwgdmFsdWUsIGF0dHJpYnV0ZXMpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIGNvbXBpbGVEZWZpbmVBY2Nl
c3NvclByb3BlcnR5KCkKKyAgICB7CisgICAgICAgIExWYWx1ZSBiYXNlID0gbG93Q2VsbChtX2dy
YXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMCkpOworICAgICAgICBMVmFsdWUgZ2V0dGVyID0gbG93
Q2VsbChtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMikpOworICAgICAgICBMVmFsdWUgc2V0
dGVyID0gbG93Q2VsbChtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMykpOworICAgICAgICBM
VmFsdWUgYXR0cmlidXRlcyA9IGxvd0ludDMyKG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCA0
KSk7CisgICAgICAgIEVkZ2UmIHByb3BlcnR5RWRnZSA9IG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9u
b2RlLCAxKTsKKyAgICAgICAgc3dpdGNoIChwcm9wZXJ0eUVkZ2UudXNlS2luZCgpKSB7CisgICAg
ICAgIGNhc2UgU3RyaW5nVXNlOiB7CisgICAgICAgICAgICBMVmFsdWUgcHJvcGVydHkgPSBsb3dT
dHJpbmcocHJvcGVydHlFZGdlKTsKKyAgICAgICAgICAgIHZtQ2FsbChWb2lkLCBtX291dC5vcGVy
YXRpb24ob3BlcmF0aW9uRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eVN0cmluZyksIG1fY2FsbEZyYW1l
LCBiYXNlLCBwcm9wZXJ0eSwgZ2V0dGVyLCBzZXR0ZXIsIGF0dHJpYnV0ZXMpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBTeW1ib2xVc2U6IHsKKyAgICAgICAg
ICAgIExWYWx1ZSBwcm9wZXJ0eSA9IGxvd1N5bWJvbChwcm9wZXJ0eUVkZ2UpOworICAgICAgICAg
ICAgdm1DYWxsKFZvaWQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25EZWZpbmVBY2Nlc3NvclBy
b3BlcnR5U3ltYm9sKSwgbV9jYWxsRnJhbWUsIGJhc2UsIHByb3BlcnR5LCBnZXR0ZXIsIHNldHRl
ciwgYXR0cmlidXRlcyk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBj
YXNlIFVudHlwZWRVc2U6IHsKKyAgICAgICAgICAgIExWYWx1ZSBwcm9wZXJ0eSA9IGxvd0pTVmFs
dWUocHJvcGVydHlFZGdlKTsKKyAgICAgICAgICAgIHZtQ2FsbChWb2lkLCBtX291dC5vcGVyYXRp
b24ob3BlcmF0aW9uRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eSksIG1fY2FsbEZyYW1lLCBiYXNlLCBw
cm9wZXJ0eSwgZ2V0dGVyLCBzZXR0ZXIsIGF0dHJpYnV0ZXMpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICB9CiAgICAgCiAgICAgdm9pZCBjb21waWxl
UHV0QnlJZCgpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9D
Q2FsbEhlbHBlcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMu
Y3BwCmluZGV4IDc1ZDE1YTYyM2M3MmM0NGFkYzRhNGI5YzEzZjg1ODZmMjcyMjZiODUuLjNjM2Rm
NjE4Zjk5ZmViOTQxNTQ0MDA5OTg1NWRlMWZiYWY1Y2I5ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0NDYWxsSGVscGVycy5jcHAKQEAgLTY4LDEwNyArNjgsNiBAQCB2b2lkIENDYWxs
SGVscGVyczo6ZW5zdXJlU2hhZG93Q2hpY2tlblBhY2tldChHUFJSZWcgc2hhZG93UGFja2V0LCBH
UFJSZWcgc2NyYXRjaAogICAgIHN0b3JlUHRyKHNjcmF0Y2gyLCBBZGRyZXNzKHNjcmF0Y2gxTm9u
QXJnR1BSKSk7CiB9CiAKLSNpZiBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTID49IDQKLXZv
aWQgQ0NhbGxIZWxwZXJzOjpzZXR1cEZvdXJTdHViQXJnc0dQUihHUFJSZWcgZGVzdEEsIEdQUlJl
ZyBkZXN0QiwgR1BSUmVnIGRlc3RDLCBHUFJSZWcgZGVzdEQsIEdQUlJlZyBzcmNBLCBHUFJSZWcg
c3JjQiwgR1BSUmVnIHNyY0MsIEdQUlJlZyBzcmNEKQotewotICAgIGlmICghQVNTRVJUX0RJU0FC
TEVEKSB7Ci0gICAgICAgIFJlZ2lzdGVyU2V0IGRlc3RpbmF0aW9ucyhkZXN0QSwgZGVzdEIsIGRl
c3RDLCBkZXN0RCk7Ci0gICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoZGVzdGluYXRpb25zLm51
bWJlck9mU2V0R1BScygpID09IDQsICJEZXN0aW5hdGlvbnMgc2hvdWxkIG5vdCBiZSBhbGlhc2Vk
LiIpOwotICAgIH0KLQotICAgIHR5cGVkZWYgc3RkOjpwYWlyPEdQUlJlZywgR1BSUmVnPiBSZWdQ
YWlyOwotICAgIFZlY3RvcjxSZWdQYWlyLCA0PiBwYWlyczsKLQotICAgIGlmIChzcmNBICE9IGRl
c3RBKQotICAgICAgICBwYWlycy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoc3JjQSwgZGVzdEEpKTsK
LSAgICBpZiAoc3JjQiAhPSBkZXN0QikKLSAgICAgICAgcGFpcnMuYXBwZW5kKHN0ZDo6bWFrZV9w
YWlyKHNyY0IsIGRlc3RCKSk7Ci0gICAgaWYgKHNyY0MgIT0gZGVzdEMpCi0gICAgICAgIHBhaXJz
LmFwcGVuZChzdGQ6Om1ha2VfcGFpcihzcmNDLCBkZXN0QykpOwotICAgIGlmIChzcmNEICE9IGRl
c3REKQotICAgICAgICBwYWlycy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoc3JjRCwgZGVzdEQpKTsK
LQotCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAotICAgIGF1dG8gbnVtVW5pcXVlU291cmNlcyA9IFsm
XSAoKSAtPiB1bnNpZ25lZCB7Ci0gICAgICAgIFJlZ2lzdGVyU2V0IHNldDsKLSAgICAgICAgZm9y
IChhdXRvJiBwYWlyIDogcGFpcnMpIHsKLSAgICAgICAgICAgIEdQUlJlZyBzb3VyY2UgPSBwYWly
LmZpcnN0OwotICAgICAgICAgICAgc2V0LnNldChzb3VyY2UpOwotICAgICAgICB9Ci0gICAgICAg
IHJldHVybiBzZXQubnVtYmVyT2ZTZXRHUFJzKCk7Ci0gICAgfTsKLQotICAgIGF1dG8gbnVtVW5p
cXVlRGVzdHMgPSBbJl0gKCkgLT4gdW5zaWduZWQgewotICAgICAgICBSZWdpc3RlclNldCBzZXQ7
Ci0gICAgICAgIGZvciAoYXV0byYgcGFpciA6IHBhaXJzKSB7Ci0gICAgICAgICAgICBHUFJSZWcg
ZGVzdCA9IHBhaXIuc2Vjb25kOwotICAgICAgICAgICAgc2V0LnNldChkZXN0KTsKLSAgICAgICAg
fQotICAgICAgICByZXR1cm4gc2V0Lm51bWJlck9mU2V0R1BScygpOwotICAgIH07Ci0jZW5kaWYK
LQotICAgIHdoaWxlIChwYWlycy5zaXplKCkpIHsKLSAgICAgICAgUmVnaXN0ZXJTZXQgZnJlZURl
c3RpbmF0aW9uczsKLSAgICAgICAgZm9yIChhdXRvJiBwYWlyIDogcGFpcnMpIHsKLSAgICAgICAg
ICAgIEdQUlJlZyBkZXN0ID0gcGFpci5zZWNvbmQ7Ci0gICAgICAgICAgICBmcmVlRGVzdGluYXRp
b25zLnNldChkZXN0KTsKLSAgICAgICAgfQotICAgICAgICBmb3IgKGF1dG8mIHBhaXIgOiBwYWly
cykgewotICAgICAgICAgICAgR1BSUmVnIHNvdXJjZSA9IHBhaXIuZmlyc3Q7Ci0gICAgICAgICAg
ICBmcmVlRGVzdGluYXRpb25zLmNsZWFyKHNvdXJjZSk7Ci0gICAgICAgIH0KLQotICAgICAgICBp
ZiAoZnJlZURlc3RpbmF0aW9ucy5udW1iZXJPZlNldEdQUnMoKSkgewotICAgICAgICAgICAgYm9v
bCBtYWRlTW92ZSA9IGZhbHNlOwotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IHBhaXJzLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgYXV0byYgcGFpciA9IHBhaXJz
W2ldOwotICAgICAgICAgICAgICAgIEdQUlJlZyBzb3VyY2UgPSBwYWlyLmZpcnN0OwotICAgICAg
ICAgICAgICAgIEdQUlJlZyBkZXN0ID0gcGFpci5zZWNvbmQ7Ci0gICAgICAgICAgICAgICAgaWYg
KGZyZWVEZXN0aW5hdGlvbnMuZ2V0KGRlc3QpKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1vdmUo
c291cmNlLCBkZXN0KTsKLSAgICAgICAgICAgICAgICAgICAgcGFpcnMucmVtb3ZlKGkpOwotICAg
ICAgICAgICAgICAgICAgICBtYWRlTW92ZSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIEFTU0VS
VF9VTlVTRUQobWFkZU1vdmUsIG1hZGVNb3ZlKTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAg
ICAgICB9Ci0KLSAgICAgICAgQVNTRVJUKG51bVVuaXF1ZURlc3RzKCkgPT0gbnVtVW5pcXVlU291
cmNlcygpKTsKLSAgICAgICAgQVNTRVJUKG51bVVuaXF1ZURlc3RzKCkgPT0gcGFpcnMuc2l6ZSgp
KTsKLSAgICAgICAgLy8gVGhlIHNldCBvZiBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIHJlZ2lzdGVy
cyBhcmUgZXF1aXZhbGVudCBzZXRzLiBUaGlzIG1lYW5zIHdlIGRvbid0IGhhdmUKLSAgICAgICAg
Ly8gYW55IGZyZWUgZGVzdGluYXRpb24gcmVnaXN0ZXJzIHRoYXQgd29uJ3QgYWxzbyBjbG9iYmVy
IGEgc291cmNlLiBXZSBnZXQgYXJvdW5kIHRoaXMgYnkKLSAgICAgICAgLy8gZXhjaGFuZ2luZyBy
ZWdpc3RlcnMuCi0KLSAgICAgICAgR1BSUmVnIHNvdXJjZSA9IHBhaXJzWzBdLmZpcnN0OwotICAg
ICAgICBHUFJSZWcgZGVzdCA9IHBhaXJzWzBdLnNlY29uZDsKLSAgICAgICAgc3dhcChzb3VyY2Us
IGRlc3QpOwotICAgICAgICBwYWlycy5yZW1vdmUoMCk7Ci0KLSAgICAgICAgR1BSUmVnIG5ld1Nv
dXJjZSA9IHNvdXJjZTsKLSAgICAgICAgZm9yIChhdXRvJiBwYWlyIDogcGFpcnMpIHsKLSAgICAg
ICAgICAgIEdQUlJlZyBzb3VyY2UgPSBwYWlyLmZpcnN0OwotICAgICAgICAgICAgaWYgKHNvdXJj
ZSA9PSBkZXN0KSB7Ci0gICAgICAgICAgICAgICAgcGFpci5maXJzdCA9IG5ld1NvdXJjZTsKLSAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAg
IC8vIFdlIG1heSBoYXZlIGludHJvZHVjZWQgcGFpcnMgdGhhdCBoYXZlIHRoZSBzYW1lIHNvdXJj
ZSBhbmQgZGVzdGluYXRpb24uIFJlbW92ZSB0aG9zZSBub3cuCi0gICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBwYWlycy5zaXplKCk7IGkrKykgewotICAgICAgICAgICAgYXV0byYgcGFp
ciA9IHBhaXJzW2ldOwotICAgICAgICAgICAgaWYgKHBhaXIuZmlyc3QgPT0gcGFpci5zZWNvbmQp
IHsKLSAgICAgICAgICAgICAgICBwYWlycy5yZW1vdmUoaSk7Ci0gICAgICAgICAgICAgICAgaS0t
OwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotfQotI2VuZGlmIC8vIE5VTUJFUl9P
Rl9BUkdVTUVOVF9SRUdJU1RFUlMgPj0gNAotCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlm
IC8vIEVOQUJMRShKSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0ND
YWxsSGVscGVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaApp
bmRleCA3OTQ1NDZiMGJkMjdhOTljMGMxOTg5YmUyZTQxMzE0MzRkYTQ4ZmFlLi40MjYyY2JlZTJh
OGE4MTRlNDZjOGNkMWViNGY1ZTYwODg4MzdlNDVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvQ0NhbGxIZWxwZXJzLmgKQEAgLTk4Nyw3ICs5ODcsMTQgQEAgY2xhc3MgQ0NhbGxIZWxwZXJz
IDogcHVibGljIEFzc2VtYmx5SGVscGVycyB7CiAgICAgICAgICAgICBzd2FwKGRlc3RCLCBkZXN0
Qyk7CiAgICAgfQogCi0gICAgdm9pZCBzZXR1cEZvdXJTdHViQXJnc0dQUihHUFJSZWcgZGVzdEEs
IEdQUlJlZyBkZXN0QiwgR1BSUmVnIGRlc3RDLCBHUFJSZWcgZGVzdEQsIEdQUlJlZyBzcmNBLCBH
UFJSZWcgc3JjQiwgR1BSUmVnIHNyY0MsIEdQUlJlZyBzcmNEKTsKKyAgICB2b2lkIHNldHVwRm91
clN0dWJBcmdzR1BSKEdQUlJlZyBkZXN0QSwgR1BSUmVnIGRlc3RCLCBHUFJSZWcgZGVzdEMsIEdQ
UlJlZyBkZXN0RCwgR1BSUmVnIHNyY0EsIEdQUlJlZyBzcmNCLCBHUFJSZWcgc3JjQywgR1BSUmVn
IHNyY0QpCisgICAgeworICAgICAgICBzZXR1cFN0dWJBcmdzR1BSPDQ+KHsgeyBkZXN0QSwgZGVz
dEIsIGRlc3RDLCBkZXN0RCB9IH0sIHsgeyBzcmNBLCBzcmNCLCBzcmNDLCBzcmNEIH0gfSk7Cisg
ICAgfQorICAgIHZvaWQgc2V0dXBGaXZlU3R1YkFyZ3NHUFIoR1BSUmVnIGRlc3RBLCBHUFJSZWcg
ZGVzdEIsIEdQUlJlZyBkZXN0QywgR1BSUmVnIGRlc3RELCBHUFJSZWcgZGVzdEUsIEdQUlJlZyBz
cmNBLCBHUFJSZWcgc3JjQiwgR1BSUmVnIHNyY0MsIEdQUlJlZyBzcmNELCBHUFJSZWcgc3JjRSkK
KyAgICB7CisgICAgICAgIHNldHVwU3R1YkFyZ3NHUFI8NT4oeyB7IGRlc3RBLCBkZXN0QiwgZGVz
dEMsIGRlc3RELCBkZXN0RSB9IH0sIHsgeyBzcmNBLCBzcmNCLCBzcmNDLCBzcmNELCBzcmNFIH0g
fSk7CisgICAgfQogCiAjaWYgQ1BVKFg4Nl82NCkgfHwgQ1BVKEFSTTY0KQogICAgIHRlbXBsYXRl
PEZQUlJlZyBkZXN0QSwgRlBSUmVnIGRlc3RCPgpAQCAtMTYxNCw2ICsxNjIxLDEzIEBAIGNsYXNz
IENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewogICAgICAgICBzZXR1cEFy
Z3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CiAgICAgfQogCisgICAgQUxX
QVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwg
R1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcgYXJnNCwgR1BSUmVnIGFyZzUpCisgICAg
eworICAgICAgICBwb2tlKGFyZzUsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUICsgMSk7CisgICAgICAg
IHBva2UoYXJnNCwgUE9LRV9BUkdVTUVOVF9PRkZTRVQpOworICAgICAgICBzZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CisgICAgfQorCiAgICAgQUxXQVlTX0lO
TElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVn
IGFyZzIsIFRydXN0ZWRJbW1QdHIgYXJnMywgVHJ1c3RlZEltbTMyIGFyZzQpCiAgICAgewogICAg
ICAgICBwb2tlKGFyZzQsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUKTsKQEAgLTIxODQsNiArMjE5OCwx
MiBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJzIHsKICAgICAg
ICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIw
KTsKICAgICB9CiAKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMsIEdQUlJlZyBhcmc0
LCBHUFJSZWcgYXJnNSkKKyAgICB7CisgICAgICAgIHNldHVwRml2ZVN0dWJBcmdzR1BSKEdQUklu
Zm86OmFyZ3VtZW50R1BSMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjMsIEdQUkluZm86OmFyZ3VtZW50R1BSNCwgR1BSSW5mbzo6YXJndW1lbnRHUFI1LCBhcmcx
LCBhcmcyLCBhcmczLCBhcmc0LCBhcmc1KTsKKyAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJh
bWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICB9CisKICAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBUcnVz
dGVkSW1tUHRyIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcgYXJnNCkKICAgICB7CiAgICAgICAg
IHNldHVwU3R1YkFyZ3VtZW50czEzNChhcmcxLCBhcmczLCBhcmc0KTsKQEAgLTI0NzIsNiArMjQ5
MiwxMDUgQEAgY2xhc3MgQ0NhbGxIZWxwZXJzIDogcHVibGljIEFzc2VtYmx5SGVscGVycyB7CiAg
ICAgICAgIC8vIFJlYWR5IGZvciBhIGp1bXAhCiAgICAgICAgIG1vdmUobmV3RnJhbWVQb2ludGVy
LCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7CiAgICAgfQorCisjaWYgTlVNQkVSX09GX0FSR1VNRU5U
X1JFR0lTVEVSUyA+PSA0CisgICAgdGVtcGxhdGU8dW5zaWduZWQgTnVtYmVyT2ZSZWdpc3RlcnM+
CisgICAgdm9pZCBzZXR1cFN0dWJBcmdzR1BSKHN0ZDo6YXJyYXk8R1BSUmVnLCBOdW1iZXJPZlJl
Z2lzdGVycz4gZGVzdGluYXRpb25zLCBzdGQ6OmFycmF5PEdQUlJlZywgTnVtYmVyT2ZSZWdpc3Rl
cnM+IHNvdXJjZXMpCisgICAgeworICAgICAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkgeworICAg
ICAgICAgICAgUmVnaXN0ZXJTZXQgc2V0OworICAgICAgICAgICAgZm9yIChHUFJSZWcgZGVzdCA6
IGRlc3RpbmF0aW9ucykKKyAgICAgICAgICAgICAgICBzZXQuc2V0KGRlc3QpOworICAgICAgICAg
ICAgQVNTRVJUX1dJVEhfTUVTU0FHRShzZXQubnVtYmVyT2ZTZXRHUFJzKCkgPT0gNCwgIkRlc3Rp
bmF0aW9ucyBzaG91bGQgbm90IGJlIGFsaWFzZWQuIik7CisgICAgICAgIH0KKworICAgICAgICB0
eXBlZGVmIHN0ZDo6cGFpcjxHUFJSZWcsIEdQUlJlZz4gUmVnUGFpcjsKKyAgICAgICAgVmVjdG9y
PFJlZ1BhaXIsIE51bWJlck9mUmVnaXN0ZXJzPiBwYWlyczsKKworICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgTnVtYmVyT2ZSZWdpc3RlcnM7ICsraSkgeworICAgICAgICAgICAgaWYg
KHNvdXJjZXNbaV0gIT0gZGVzdGluYXRpb25zW2ldKQorICAgICAgICAgICAgICAgIHBhaXJzLmFw
cGVuZChzdGQ6Om1ha2VfcGFpcihzb3VyY2VzW2ldLCBkZXN0aW5hdGlvbnNbaV0pKTsKKyAgICAg
ICAgfQorCisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgICAgICBhdXRvIG51bVVuaXF1ZVNvdXJj
ZXMgPSBbJl0gKCkgLT4gdW5zaWduZWQgeworICAgICAgICAgICAgUmVnaXN0ZXJTZXQgc2V0Owor
ICAgICAgICAgICAgZm9yIChhdXRvJiBwYWlyIDogcGFpcnMpIHsKKyAgICAgICAgICAgICAgICBH
UFJSZWcgc291cmNlID0gcGFpci5maXJzdDsKKyAgICAgICAgICAgICAgICBzZXQuc2V0KHNvdXJj
ZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gc2V0Lm51bWJlck9mU2V0R1BS
cygpOworICAgICAgICB9OworCisgICAgICAgIGF1dG8gbnVtVW5pcXVlRGVzdHMgPSBbJl0gKCkg
LT4gdW5zaWduZWQgeworICAgICAgICAgICAgUmVnaXN0ZXJTZXQgc2V0OworICAgICAgICAgICAg
Zm9yIChhdXRvJiBwYWlyIDogcGFpcnMpIHsKKyAgICAgICAgICAgICAgICBHUFJSZWcgZGVzdCA9
IHBhaXIuc2Vjb25kOworICAgICAgICAgICAgICAgIHNldC5zZXQoZGVzdCk7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICByZXR1cm4gc2V0Lm51bWJlck9mU2V0R1BScygpOworICAgICAgICB9
OworI2VuZGlmCisKKyAgICAgICAgd2hpbGUgKHBhaXJzLnNpemUoKSkgeworICAgICAgICAgICAg
UmVnaXN0ZXJTZXQgZnJlZURlc3RpbmF0aW9uczsKKyAgICAgICAgICAgIGZvciAoYXV0byYgcGFp
ciA6IHBhaXJzKSB7CisgICAgICAgICAgICAgICAgR1BSUmVnIGRlc3QgPSBwYWlyLnNlY29uZDsK
KyAgICAgICAgICAgICAgICBmcmVlRGVzdGluYXRpb25zLnNldChkZXN0KTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGZvciAoYXV0byYgcGFpciA6IHBhaXJzKSB7CisgICAgICAgICAgICAg
ICAgR1BSUmVnIHNvdXJjZSA9IHBhaXIuZmlyc3Q7CisgICAgICAgICAgICAgICAgZnJlZURlc3Rp
bmF0aW9ucy5jbGVhcihzb3VyY2UpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAo
ZnJlZURlc3RpbmF0aW9ucy5udW1iZXJPZlNldEdQUnMoKSkgeworICAgICAgICAgICAgICAgIGJv
b2wgbWFkZU1vdmUgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgcGFpcnMuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgYXV0byYgcGFp
ciA9IHBhaXJzW2ldOworICAgICAgICAgICAgICAgICAgICBHUFJSZWcgc291cmNlID0gcGFpci5m
aXJzdDsKKyAgICAgICAgICAgICAgICAgICAgR1BSUmVnIGRlc3QgPSBwYWlyLnNlY29uZDsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKGZyZWVEZXN0aW5hdGlvbnMuZ2V0KGRlc3QpKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBtb3ZlKHNvdXJjZSwgZGVzdCk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBwYWlycy5yZW1vdmUoaSk7CisgICAgICAgICAgICAgICAgICAgICAgICBtYWRlTW92
ZSA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBBU1NFUlRfVU5VU0VE
KG1hZGVNb3ZlLCBtYWRlTW92ZSk7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIEFTU0VSVChudW1VbmlxdWVEZXN0cygpID09IG51bVVuaXF1
ZVNvdXJjZXMoKSk7CisgICAgICAgICAgICBBU1NFUlQobnVtVW5pcXVlRGVzdHMoKSA9PSBwYWly
cy5zaXplKCkpOworICAgICAgICAgICAgLy8gVGhlIHNldCBvZiBzb3VyY2UgYW5kIGRlc3RpbmF0
aW9uIHJlZ2lzdGVycyBhcmUgZXF1aXZhbGVudCBzZXRzLiBUaGlzIG1lYW5zIHdlIGRvbid0IGhh
dmUKKyAgICAgICAgICAgIC8vIGFueSBmcmVlIGRlc3RpbmF0aW9uIHJlZ2lzdGVycyB0aGF0IHdv
bid0IGFsc28gY2xvYmJlciBhIHNvdXJjZS4gV2UgZ2V0IGFyb3VuZCB0aGlzIGJ5CisgICAgICAg
ICAgICAvLyBleGNoYW5naW5nIHJlZ2lzdGVycy4KKworICAgICAgICAgICAgR1BSUmVnIHNvdXJj
ZSA9IHBhaXJzWzBdLmZpcnN0OworICAgICAgICAgICAgR1BSUmVnIGRlc3QgPSBwYWlyc1swXS5z
ZWNvbmQ7CisgICAgICAgICAgICBzd2FwKHNvdXJjZSwgZGVzdCk7CisgICAgICAgICAgICBwYWly
cy5yZW1vdmUoMCk7CisKKyAgICAgICAgICAgIEdQUlJlZyBuZXdTb3VyY2UgPSBzb3VyY2U7Cisg
ICAgICAgICAgICBmb3IgKGF1dG8mIHBhaXIgOiBwYWlycykgeworICAgICAgICAgICAgICAgIEdQ
UlJlZyBzb3VyY2UgPSBwYWlyLmZpcnN0OworICAgICAgICAgICAgICAgIGlmIChzb3VyY2UgPT0g
ZGVzdCkgeworICAgICAgICAgICAgICAgICAgICBwYWlyLmZpcnN0ID0gbmV3U291cmNlOworICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIC8vIFdlIG1heSBoYXZlIGludHJvZHVjZWQgcGFpcnMgdGhhdCBoYXZl
IHRoZSBzYW1lIHNvdXJjZSBhbmQgZGVzdGluYXRpb24uIFJlbW92ZSB0aG9zZSBub3cuCisgICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGFpcnMuc2l6ZSgpOyBpKyspIHsKKyAg
ICAgICAgICAgICAgICBhdXRvJiBwYWlyID0gcGFpcnNbaV07CisgICAgICAgICAgICAgICAgaWYg
KHBhaXIuZmlyc3QgPT0gcGFpci5zZWNvbmQpIHsKKyAgICAgICAgICAgICAgICAgICAgcGFpcnMu
cmVtb3ZlKGkpOworICAgICAgICAgICAgICAgICAgICBpLS07CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorI2VuZGlmIC8vIE5VTUJFUl9PRl9BUkdV
TUVOVF9SRUdJU1RFUlMgPj0gNAogICAgIAogICAgIC8vIFRoZXNlIG9wZXJhdGlvbnMgY2xvYmJl
ciBhbGwgdm9sYXRpbGUgcmVnaXN0ZXJzLiBUaGV5IGFzc3VtZSB0aGF0IHRoZXJlIGlzIHJvb20g
b24gdGhlIHRvcCBvZgogICAgIC8vIHN0YWNrIHRvIG1hcnNoYWxsIGNhbGwgYXJndW1lbnRzLgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IDFhYmU3YzQzNDE3NDYzZjk2OTE2NTI5YTZl
NjE0ZWRlMDljN2ZkMzkuLjIzN2QxOWE0YjA4MmYxY2IwZTAyYzJlYTU3N2NjMWNjMzEwNzk0MzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTMyMiw2ICszMjIsOCBAQCB2b2lkIEpJ
VDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF9wdXRfZ2V0
dGVyX3NldHRlcl9ieV9pZCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9nZXR0ZXJfYnlfdmFs
KQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X3NldHRlcl9ieV92YWwpCisgICAgICAgIERFRklO
RV9PUChvcF9kZWZpbmVfZGF0YV9wcm9wZXJ0eSkKKyAgICAgICAgREVGSU5FX09QKG9wX2RlZmlu
ZV9hY2Nlc3Nvcl9wcm9wZXJ0eSkKIAogICAgICAgICBERUZJTkVfT1Aob3BfcmV0KQogICAgICAg
ICBERUZJTkVfT1Aob3BfcnNoaWZ0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXggMWI3NTg1
Y2RmOWVlMTZkYjgwNzg0ZWE4NTZhNGY0ZDBlMDFhMjAyNS4uMzU3ZTg0ZGFjYTRjZTNiMDk1ZTc0
Mjc0YzJmYzUyMGY0Yzg5MzA1OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC01NjcsNiAr
NTY3LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfZ2V0dGVy
X3NldHRlcl9ieV9pZChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X2dl
dHRlcl9ieV92YWwoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9zZXR0
ZXJfYnlfdmFsKEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9kZWZpbmVfZGF0
YV9wcm9wZXJ0eShJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfZGVmaW5lX2Fj
Y2Vzc29yX3Byb3BlcnR5KEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9yZXQo
SW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3JzaGlmdChJbnN0cnVjdGlvbiop
OwogICAgICAgICB2b2lkIGVtaXRfb3Bfc2V0X2Z1bmN0aW9uX25hbWUoSW5zdHJ1Y3Rpb24qKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKaW5kZXggNjcyNjQwNzRl
ZTQ3Y2IxNTE2MWRiMDkyN2I0M2ZmNzgwODNhNWM3Zi4uMTZjM2I1OGI0Y2VjMjRmNjE3MWM1MTg2
MTU2MmEzZjg4MDg5MzEwMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRp
b25zLmgKQEAgLTU5LDYgKzU5LDcgQEAgY2xhc3MgUmVnRXhwT2JqZWN0OwogY2xhc3MgUmVnaXN0
ZXI7CiBjbGFzcyBTdHJ1Y3R1cmU7CiBjbGFzcyBTdHJ1Y3R1cmVTdHViSW5mbzsKK2NsYXNzIFN5
bWJvbDsKIGNsYXNzIFN5bWJvbFRhYmxlOwogY2xhc3MgV2F0Y2hwb2ludFNldDsKIApAQCAtMTEx
LDYgKzExMiw3IEBAIHR5cGVkZWYgY2hhciogVW51c2VkUHRyOwogICAgIFNzaTogU3RydWN0dXJl
U3R1YkluZm8qCiAgICAgU3Q6IFN0cnVjdHVyZSoKICAgICBTeW10YWI6IFN5bWJvbFRhYmxlKgor
ICAgIFN5bTogU3ltYm9sKgogICAgIFQ6IFN0cmluZ0ltcGwqCiAgICAgVjogdm9pZAogICAgIFZt
OiBWTSoKQEAgLTI3MCw2ICsyNzIsMTIgQEAgdHlwZWRlZiB2b2lkIChKSVRfT1BFUkFUSU9OICpW
X0pJVE9wZXJhdGlvbl9FUFpKKShFeGVjU3RhdGUqLCB2b2lkKiwgaW50MzJfdCwgRW4KIHR5cGVk
ZWYgdm9pZCAoSklUX09QRVJBVElPTiAqVl9KSVRPcGVyYXRpb25fRVNzaUpKSSkoRXhlY1N0YXRl
KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIFVu
aXF1ZWRTdHJpbmdJbXBsKik7CiB0eXBlZGVmIHZvaWQgKEpJVF9PUEVSQVRJT04gKlZfSklUT3Bl
cmF0aW9uX0VKSkpJKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUs
IEVuY29kZWRKU1ZhbHVlLCBVbmlxdWVkU3RyaW5nSW1wbCopOwogdHlwZWRlZiB2b2lkIChKSVRf
T1BFUkFUSU9OICpWX0pJVE9wZXJhdGlvbl9FSkpKSikoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFs
dWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUpOwordHlw
ZWRlZiB2b2lkIChKSVRfT1BFUkFUSU9OICpWX0pJVE9wZXJhdGlvbl9FT0pKWikoRXhlY1N0YXRl
KiwgSlNPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIGludDMyX3QpOwor
dHlwZWRlZiB2b2lkIChKSVRfT1BFUkFUSU9OICpWX0pJVE9wZXJhdGlvbl9FT0pzc0paKShFeGVj
U3RhdGUqLCBKU09iamVjdCosIEpTU3RyaW5nKiwgRW5jb2RlZEpTVmFsdWUsIGludDMyX3QpOwor
dHlwZWRlZiB2b2lkIChKSVRfT1BFUkFUSU9OICpWX0pJVE9wZXJhdGlvbl9FT1N5bUpaKShFeGVj
U3RhdGUqLCBKU09iamVjdCosIFN5bWJvbCosIEVuY29kZWRKU1ZhbHVlLCBpbnQzMl90KTsKK3R5
cGVkZWYgdm9pZCAoSklUX09QRVJBVElPTiAqVl9KSVRPcGVyYXRpb25fRU9KT09aKShFeGVjU3Rh
dGUqLCBKU09iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBKU09iamVjdCosIEpTT2JqZWN0KiwgaW50
MzJfdCk7Cit0eXBlZGVmIHZvaWQgKEpJVF9PUEVSQVRJT04gKlZfSklUT3BlcmF0aW9uX0VPSnNz
T09aKShFeGVjU3RhdGUqLCBKU09iamVjdCosIEpTU3RyaW5nKiwgSlNPYmplY3QqLCBKU09iamVj
dCosIGludDMyX3QpOwordHlwZWRlZiB2b2lkIChKSVRfT1BFUkFUSU9OICpWX0pJVE9wZXJhdGlv
bl9FT1N5bU9PWikoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBTeW1ib2wqLCBKU09iamVjdCosIEpT
T2JqZWN0KiwgaW50MzJfdCk7CiB0eXBlZGVmIHZvaWQgKEpJVF9PUEVSQVRJT04gKlZfSklUT3Bl
cmF0aW9uX0VXcykoRXhlY1N0YXRlKiwgV2F0Y2hwb2ludFNldCopOwogdHlwZWRlZiB2b2lkIChK
SVRfT1BFUkFUSU9OICpWX0pJVE9wZXJhdGlvbl9FWikoRXhlY1N0YXRlKiwgaW50MzJfdCk7CiB0
eXBlZGVmIHZvaWQgKEpJVF9PUEVSQVRJT04gKlZfSklUT3BlcmF0aW9uX0VaSikoRXhlY1N0YXRl
KiwgaW50MzJfdCwgRW5jb2RlZEpTVmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAppbmRleCA1NjAyNjhiNWMzMTQ3ODQxMzYwNzJkZGQ4
MDA3Nzc4MGYzMzc4YjJiLi45ZDRmZDFhYTZhZjY0YjQ4ZDdiZTFiM2ViNDY5MzBiNTNmMzVmNGI3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNz
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNw
cApAQCAtMTc3Myw2ICsxNzczLDE4IEBAIEpJVDo6SnVtcExpc3QgSklUOjplbWl0RmxvYXRUeXBl
ZEFycmF5UHV0QnlWYWwoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwKICAgICByZXR1
cm4gc2xvd0Nhc2VzOwogfQogCit2b2lkIEpJVDo6ZW1pdF9vcF9kZWZpbmVfZGF0YV9wcm9wZXJ0
eShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIEpJVFNsb3dQYXRoQ2Fs
bCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfZGVmaW5l
X2RhdGFfcHJvcGVydHkpOworICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7Cit9CisKK3ZvaWQgSklU
OjplbWl0X29wX2RlZmluZV9hY2Nlc3Nvcl9wcm9wZXJ0eShJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQoreworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3Vy
cmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfZGVmaW5lX2FjY2Vzc29yX3Byb3BlcnR5KTsKKyAg
ICBzbG93UGF0aENhbGwuY2FsbCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlm
IC8vIEVOQUJMRShKSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggMTAwMzdhZjU2Y2U2YzdmMWE5M2U1MmQyYTcxN2Uy
OTRlMDEwNWY5YS4uYzliODQ0MzdjNjU3NDU1M2UzODBlNTIxMjI2MWFiOTI2OTZiZTM0ZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIu
YXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
LmFzbQpAQCAtMTQ1Nyw2ICsxNDU3LDE4IEBAIF9sbGludF9vcF9wdXRfc2V0dGVyX2J5X3ZhbDoK
ICAgICBkaXNwYXRjaCg1KQogCiAKK19sbGludF9vcF9kZWZpbmVfZGF0YV9wcm9wZXJ0eToKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbE9wY29kZVNsb3dQYXRoKF9zbG93X3BhdGhfZGVm
aW5lX2RhdGFfcHJvcGVydHkpCisgICAgZGlzcGF0Y2goNSkKKworCitfbGxpbnRfb3BfZGVmaW5l
X2FjY2Vzc29yX3Byb3BlcnR5OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsT3Bjb2Rl
U2xvd1BhdGgoX3Nsb3dfcGF0aF9kZWZpbmVfYWNjZXNzb3JfcHJvcGVydHkpCisgICAgZGlzcGF0
Y2goNikKKworCiBfbGxpbnRfb3BfanRydWU6CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGp1
bXBUcnVlT3JGYWxzZSgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25TbG93UGF0aHMuY3BwCmluZGV4IGNhZjgyNmRjMmFjZGFiNmQ5YTM5NThhMGNmMDMxMTQzNjIz
YmJhM2YuLmYyNWVlODExYWNhOWVjYTRhOTZkYTkwZTVlMGE5NDI1Yjk3NDU4YzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcApAQCAt
MzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkNsb25lZEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIkNv
ZGVQcm9maWxpbmcuaCIKICNpbmNsdWRlICJDb21tb25TbG93UGF0aHNFeGNlcHRpb25zLmgiCisj
aW5jbHVkZSAiRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzLmgiCiAjaW5jbHVkZSAiRGlyZWN0QXJn
dW1lbnRzLmgiCiAjaW5jbHVkZSAiRXJyb3IuaCIKICNpbmNsdWRlICJFcnJvckhhbmRsaW5nU2Nv
cGUuaCIKQEAgLTkzMCw0ICs5MzEsMzkgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF9i
eV92YWxfd2l0aF90aGlzKQogICAgIEVORCgpOwogfQogCitTTE9XX1BBVEhfREVDTChzbG93X3Bh
dGhfZGVmaW5lX2RhdGFfcHJvcGVydHkpCit7CisgICAgQkVHSU4oKTsKKyAgICBKU09iamVjdCog
YmFzZSA9IGFzT2JqZWN0KE9QX0MoMSkuanNWYWx1ZSgpKTsKKyAgICBKU1ZhbHVlIHByb3BlcnR5
ID0gT1BfQygyKS5qc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IE9QX0MoMykuanNWYWx1
ZSgpOworICAgIEpTVmFsdWUgYXR0cmlidXRlcyA9IE9QX0MoNCkuanNWYWx1ZSgpOworICAgIEFT
U0VSVChhdHRyaWJ1dGVzLmlzSW50MzIoKSk7CisKKyAgICBhdXRvIHByb3BlcnR5TmFtZSA9IHBy
b3BlcnR5LnRvUHJvcGVydHlLZXkoZXhlYyk7CisgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAg
UHJvcGVydHlEZXNjcmlwdG9yIGRlc2NyaXB0b3IgPSB0b1Byb3BlcnR5RGVzY3JpcHRvcih2YWx1
ZSwganNVbmRlZmluZWQoKSwganNVbmRlZmluZWQoKSwgRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVz
KGF0dHJpYnV0ZXMuYXNJbnQzMigpKSk7CisgICAgQVNTRVJUKChkZXNjcmlwdG9yLmF0dHJpYnV0
ZXMoKSAmIEFjY2Vzc29yKSB8fCAoIWRlc2NyaXB0b3IuaXNBY2Nlc3NvckRlc2NyaXB0b3IoKSkp
OworICAgIGJhc2UtPm1ldGhvZFRhYmxlKHZtKS0+ZGVmaW5lT3duUHJvcGVydHkoYmFzZSwgZXhl
YywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCB0cnVlKTsKKyAgICBFTkQoKTsKK30KKworU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX2RlZmluZV9hY2Nlc3Nvcl9wcm9wZXJ0eSkKK3sKKyAgICBC
RUdJTigpOworICAgIEpTT2JqZWN0KiBiYXNlID0gYXNPYmplY3QoT1BfQygxKS5qc1ZhbHVlKCkp
OworICAgIEpTVmFsdWUgcHJvcGVydHkgPSBPUF9DKDIpLmpzVmFsdWUoKTsKKyAgICBKU1ZhbHVl
IGdldHRlciA9IE9QX0MoMykuanNWYWx1ZSgpOworICAgIEpTVmFsdWUgc2V0dGVyID0gT1BfQyg0
KS5qc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSBhdHRyaWJ1dGVzID0gT1BfQyg1KS5qc1ZhbHVlKCk7
CisgICAgQVNTRVJUKGF0dHJpYnV0ZXMuaXNJbnQzMigpKTsKKworICAgIGF1dG8gcHJvcGVydHlO
YW1lID0gcHJvcGVydHkudG9Qcm9wZXJ0eUtleShleGVjKTsKKyAgICBDSEVDS19FWENFUFRJT04o
KTsKKyAgICBQcm9wZXJ0eURlc2NyaXB0b3IgZGVzY3JpcHRvciA9IHRvUHJvcGVydHlEZXNjcmlw
dG9yKGpzVW5kZWZpbmVkKCksIGdldHRlciwgc2V0dGVyLCBEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0
ZXMoYXR0cmlidXRlcy5hc0ludDMyKCkpKTsKKyAgICBBU1NFUlQoKGRlc2NyaXB0b3IuYXR0cmli
dXRlcygpICYgQWNjZXNzb3IpIHx8ICghZGVzY3JpcHRvci5pc0FjY2Vzc29yRGVzY3JpcHRvcigp
KSk7CisgICAgYmFzZS0+bWV0aG9kVGFibGUodm0pLT5kZWZpbmVPd25Qcm9wZXJ0eShiYXNlLCBl
eGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHRydWUpOworICAgIEVORCgpOworfQorCiB9
IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vblNsb3dQYXRocy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uU2xvd1BhdGhzLmgKaW5kZXggYzI2YThjN2NkM2JkMzUzNDViZTllY2MzNTBhYTQyMWU1NDE2
ODY1Zi4uY2RkNGY0NDdkNTE4Y2Y0YjQxZmY4NThkYmQ4MDhlZmU3YmIzNTFhNSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKQEAgLTI1OCw2
ICsyNTgsOCBAQCBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2dldF9ieV9pZF93aXRo
X3RoaXMpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9nZXRfYnlfdmFsX3dpdGhf
dGhpcyk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3B1dF9ieV9pZF93aXRoX3Ro
aXMpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfdmFsX3dpdGhfdGhp
cyk7CitTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2RlZmluZV9kYXRhX3Byb3BlcnR5
KTsKK1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZGVmaW5lX2FjY2Vzc29yX3Byb3Bl
cnR5KTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0RlZmluZVByb3BlcnR5QXR0cmlidXRlcy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
M2Q4YTI0OGI5MTYwYzQ3NjRiMTBjYTQxMWZiMmYyYzc1Y2E5ODM2MAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RlZmluZVByb3BlcnR5QXR0cmlidXRl
cy5oCkBAIC0wLDAgKzEsMTQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvVHJpU3RhdGUuaD4KKwor
bmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIERlZmluZVByb3BlcnR5QXR0cmlidXRlcyB7CitwdWJs
aWM6CisgICAgc3RhdGljX2Fzc2VydChGYWxzZVRyaVN0YXRlID09IDAsICJGYWxzZVRyaVN0YXRl
IGlzIDAuIik7CisgICAgc3RhdGljX2Fzc2VydChUcnVlVHJpU3RhdGUgPT0gMSwgIlRydWVUcmlT
dGF0ZSBpcyAxLiIpOworICAgIHN0YXRpY19hc3NlcnQoTWl4ZWRUcmlTdGF0ZSA9PSAyLCAiTWl4
ZWRUcmlTdGF0ZSBpcyAyLiIpOworCisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIENvbmZpZ3Vy
YWJsZVNoaWZ0ID0gMDsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgRW51bWVyYWJsZVNoaWZ0
ID0gMjsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgV3JpdGFibGVTaGlmdCA9IDQ7CisgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIFZhbHVlU2hpZnQgPSA2OworICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBHZXRTaGlmdCA9IDc7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFNldFNoaWZ0
ID0gODsKKworICAgIERlZmluZVByb3BlcnR5QXR0cmlidXRlcygpCisgICAgICAgIDogbV9hdHRy
aWJ1dGVzKAorICAgICAgICAgICAgKE1peGVkVHJpU3RhdGUgPDwgQ29uZmlndXJhYmxlU2hpZnQp
CisgICAgICAgICAgICB8IChNaXhlZFRyaVN0YXRlIDw8IEVudW1lcmFibGVTaGlmdCkKKyAgICAg
ICAgICAgIHwgKE1peGVkVHJpU3RhdGUgPDwgV3JpdGFibGVTaGlmdCkKKyAgICAgICAgICAgIHwg
KDAgPDwgVmFsdWVTaGlmdCkKKyAgICAgICAgICAgIHwgKDAgPDwgR2V0U2hpZnQpCisgICAgICAg
ICAgICB8ICgwIDw8IFNldFNoaWZ0KSkKKyAgICB7CisgICAgfQorCisgICAgZXhwbGljaXQgRGVm
aW5lUHJvcGVydHlBdHRyaWJ1dGVzKHVuc2lnbmVkIGF0dHJpYnV0ZXMpCisgICAgICAgIDogbV9h
dHRyaWJ1dGVzKGF0dHJpYnV0ZXMpCisgICAgeworICAgIH0KKworICAgIHVuc2lnbmVkIHJhd1Jl
cHJlc2VudGF0aW9uKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2F0dHJpYnV0ZXM7
CisgICAgfQorCisgICAgYm9vbCBoYXNWYWx1ZSgpCisgICAgeworICAgICAgICByZXR1cm4gbV9h
dHRyaWJ1dGVzICYgKDBiMSA8PCBWYWx1ZVNoaWZ0KTsKKyAgICB9CisKKyAgICB2b2lkIHNldFZh
bHVlKCkKKyAgICB7CisgICAgICAgIG1fYXR0cmlidXRlcyA9IG1fYXR0cmlidXRlcyB8ICgwYjEg
PDwgVmFsdWVTaGlmdCk7CisgICAgfQorCisgICAgYm9vbCBoYXNHZXQoKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIG1fYXR0cmlidXRlcyAmICgwYjEgPDwgR2V0U2hpZnQpOworICAgIH0KKworICAg
IHZvaWQgc2V0R2V0KCkKKyAgICB7CisgICAgICAgIG1fYXR0cmlidXRlcyA9IG1fYXR0cmlidXRl
cyB8ICgwYjEgPDwgR2V0U2hpZnQpOworICAgIH0KKworICAgIGJvb2wgaGFzU2V0KCkKKyAgICB7
CisgICAgICAgIHJldHVybiBtX2F0dHJpYnV0ZXMgJiAoMGIxIDw8IFNldFNoaWZ0KTsKKyAgICB9
CisKKyAgICB2b2lkIHNldFNldCgpCisgICAgeworICAgICAgICBtX2F0dHJpYnV0ZXMgPSBtX2F0
dHJpYnV0ZXMgfCAoMGIxIDw8IFNldFNoaWZ0KTsKKyAgICB9CisKKyAgICBUcmlTdGF0ZSB3cml0
YWJsZSgpCisgICAgeworICAgICAgICByZXR1cm4gZXh0cmFjdFRyaVN0YXRlKFdyaXRhYmxlU2hp
ZnQpOworICAgIH0KKworICAgIFRyaVN0YXRlIGNvbmZpZ3VyYWJsZSgpCisgICAgeworICAgICAg
ICByZXR1cm4gZXh0cmFjdFRyaVN0YXRlKENvbmZpZ3VyYWJsZVNoaWZ0KTsKKyAgICB9CisKKyAg
ICBUcmlTdGF0ZSBlbnVtZXJhYmxlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBleHRyYWN0VHJp
U3RhdGUoRW51bWVyYWJsZVNoaWZ0KTsKKyAgICB9CisKKyAgICB2b2lkIHNldFdyaXRhYmxlKGJv
b2wgdmFsdWUpCisgICAgeworICAgICAgICBmaWxsV2l0aFRyaVN0YXRlKHZhbHVlID8gVHJ1ZVRy
aVN0YXRlIDogRmFsc2VUcmlTdGF0ZSwgV3JpdGFibGVTaGlmdCk7CisgICAgfQorCisgICAgdm9p
ZCBzZXRDb25maWd1cmFibGUoYm9vbCB2YWx1ZSkKKyAgICB7CisgICAgICAgIGZpbGxXaXRoVHJp
U3RhdGUodmFsdWUgPyBUcnVlVHJpU3RhdGUgOiBGYWxzZVRyaVN0YXRlLCBDb25maWd1cmFibGVT
aGlmdCk7CisgICAgfQorCisgICAgdm9pZCBzZXRFbnVtZXJhYmxlKGJvb2wgdmFsdWUpCisgICAg
eworICAgICAgICBmaWxsV2l0aFRyaVN0YXRlKHZhbHVlID8gVHJ1ZVRyaVN0YXRlIDogRmFsc2VU
cmlTdGF0ZSwgRW51bWVyYWJsZVNoaWZ0KTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgdm9pZCBm
aWxsV2l0aFRyaVN0YXRlKFRyaVN0YXRlIHN0YXRlLCB1bnNpZ25lZCBzaGlmdCkKKyAgICB7Cisg
ICAgICAgIHVuc2lnbmVkIG1hc2sgPSAwYjExIDw8IHNoaWZ0OworICAgICAgICBtX2F0dHJpYnV0
ZXMgPSAobV9hdHRyaWJ1dGVzICYgfm1hc2spIHwgKHN0YXRlIDw8IHNoaWZ0KTsKKyAgICB9CisK
KyAgICBUcmlTdGF0ZSBleHRyYWN0VHJpU3RhdGUodW5zaWduZWQgc2hpZnQpCisgICAgeworICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VHJpU3RhdGU+KChtX2F0dHJpYnV0ZXMgPj4gc2hpZnQp
ICYgMGIxMSk7CisgICAgfQorCisgICAgdW5zaWduZWQgbV9hdHRyaWJ1dGVzOworfTsKKworCit9
IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcAppbmRleCA5NzNjMmU4MTY5ZWI4ZmM1ZWFlZjY0NjcwYjQ2MTEzNjIx
YTU1OGEwLi41Yzk0YjkyNWNiZTY1ZTE5MjQxZDQ5YTI4ZjFlMTFhMDlmNjcxMjcwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC00
MDQsNyArNDA0LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgbV9m
dW5jdGlvblByb3RvSGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlvbi5zZXQodm0sIHRoaXMsIGhhc0lu
c3RhbmNlU3ltYm9sRnVuY3Rpb24pOwogICAgIG1fdGhyb3dUeXBlRXJyb3JHZXR0ZXJTZXR0ZXIu
aW5pdExhdGVyKAogICAgICAgICBbXSAoY29uc3QgSW5pdGlhbGl6ZXI8R2V0dGVyU2V0dGVyPiYg
aW5pdCkgewotICAgICAgICAgICAgSlNGdW5jdGlvbiogdGhyb3dlciA9IEpTRnVuY3Rpb246OmNy
ZWF0ZShpbml0LnZtLCBpbml0Lm93bmVyLCAwLCBTdHJpbmcoKSwgZ2xvYmFsRnVuY1Rocm93VHlw
ZUVycm9yKTsKKyAgICAgICAgICAgIEpTRnVuY3Rpb24qIHRocm93ZXIgPSBpbml0Lm93bmVyLT50
aHJvd1R5cGVFcnJvckZ1bmN0aW9uKCk7CiAgICAgICAgICAgICBHZXR0ZXJTZXR0ZXIqIGdldHRl
clNldHRlciA9IEdldHRlclNldHRlcjo6Y3JlYXRlKGluaXQudm0sIGluaXQub3duZXIpOwogICAg
ICAgICAgICAgZ2V0dGVyU2V0dGVyLT5zZXRHZXR0ZXIoaW5pdC52bSwgaW5pdC5vd25lciwgdGhy
b3dlcik7CiAgICAgICAgICAgICBnZXR0ZXJTZXR0ZXItPnNldFNldHRlcihpbml0LnZtLCBpbml0
Lm93bmVyLCB0aHJvd2VyKTsKQEAgLTU4MSw4ICs1ODEsOCBAQCBtXyAjIyBwcm9wZXJOYW1lICMj
IFN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIGluc3RhbmNlVHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZt
LCB0aAogICAgIE9iamVjdENvbnN0cnVjdG9yKiBvYmplY3RDb25zdHJ1Y3RvciA9IE9iamVjdENv
bnN0cnVjdG9yOjpjcmVhdGUodm0sIHRoaXMsIE9iamVjdENvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1
Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBtX29iamVjdFByb3Rv
dHlwZS5nZXQoKSk7CiAgICAgbV9vYmplY3RDb25zdHJ1Y3Rvci5zZXQodm0sIHRoaXMsIG9iamVj
dENvbnN0cnVjdG9yKTsKIAotICAgIEpTRnVuY3Rpb24qIGRlZmluZVByb3BlcnR5RnVuY3Rpb24g
PSBtX29iamVjdENvbnN0cnVjdG9yLT5hZGREZWZpbmVQcm9wZXJ0eShleGVjLCB0aGlzKTsKLSAg
ICBtX2RlZmluZVByb3BlcnR5RnVuY3Rpb24uc2V0KHZtLCB0aGlzLCBkZWZpbmVQcm9wZXJ0eUZ1
bmN0aW9uKTsKKyAgICBKU0Z1bmN0aW9uKiB0aHJvd1R5cGVFcnJvckZ1bmN0aW9uID0gSlNGdW5j
dGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJpbmcoKSwgZ2xvYmFsRnVuY1Rocm93VHlwZUVy
cm9yKTsKKyAgICBtX3Rocm93VHlwZUVycm9yRnVuY3Rpb24uc2V0KHZtLCB0aGlzLCB0aHJvd1R5
cGVFcnJvckZ1bmN0aW9uKTsKIAogICAgIEpTQ2VsbCogZnVuY3Rpb25Db25zdHJ1Y3RvciA9IEZ1
bmN0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRl
U3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9mdW5jdGlv
blByb3RvdHlwZS5nZXQoKSk7CiAgICAgQXJyYXlDb25zdHJ1Y3RvciogYXJyYXlDb25zdHJ1Y3Rv
ciA9IEFycmF5Q29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgdGhpcywgQXJyYXlDb25zdHJ1Y3Rvcjo6
Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9h
cnJheVByb3RvdHlwZS5nZXQoKSwgbV9zcGVjaWVzR2V0dGVyU2V0dGVyLmdldCgpKTsKQEAgLTgw
Myw3ICs4MDMsNyBAQCBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlO
YW1lcy0+IGpzTmFtZSwgbG93ZXJOYW1lICMjIENvbnN0cnVjdAogICAgIG1fc3BlY2lhbFBvaW50
ZXJzW1NwZWNpYWw6Ok9iamVjdENvbnN0cnVjdG9yXSA9IG9iamVjdENvbnN0cnVjdG9yOwogICAg
IG1fc3BlY2lhbFBvaW50ZXJzW1NwZWNpYWw6OkFycmF5Q29uc3RydWN0b3JdID0gYXJyYXlDb25z
dHJ1Y3RvcjsKIAotICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KExpbmtUaW1lQ29uc3RhbnQ6OkRlZmluZVByb3BlcnR5RnVuY3Rpb24pXSA9IG1fZGVmaW5lUHJv
cGVydHlGdW5jdGlvbi5nZXQoKTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0
PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpUaHJvd1R5cGVFcnJvckZ1bmN0aW9uKV0gPSBt
X3Rocm93VHlwZUVycm9yRnVuY3Rpb24uZ2V0KCk7CiAKICAgICBpZiAoVU5MSUtFTFkoT3B0aW9u
czo6dXNlRG9sbGFyVk0oKSkpIHsKICAgICAgICAgSlNEb2xsYXJWTVByb3RvdHlwZSogZG9sbGFy
Vk1Qcm90b3R5cGUgPSBKU0RvbGxhclZNUHJvdG90eXBlOjpjcmVhdGUodm0sIHRoaXMsIEpTRG9s
bGFyVk1Qcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9vYmplY3RQcm90b3R5
cGUuZ2V0KCkpKTsKQEAgLTEwNjYsNyArMTA2Niw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZp
c2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNp
dG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9ldmFsRnVuY3Rpb24pOwogICAgIHZpc2l0b3IuYXBw
ZW5kKCZ0aGlzT2JqZWN0LT5tX2NhbGxGdW5jdGlvbik7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRo
aXNPYmplY3QtPm1fYXBwbHlGdW5jdGlvbik7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmpl
Y3QtPm1fZGVmaW5lUHJvcGVydHlGdW5jdGlvbik7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNP
YmplY3QtPm1fdGhyb3dUeXBlRXJyb3JGdW5jdGlvbik7CiAgICAgdGhpc09iamVjdC0+bV9hcnJh
eVByb3RvVG9TdHJpbmdGdW5jdGlvbi52aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0LT5t
X2FycmF5UHJvdG9WYWx1ZXNGdW5jdGlvbi52aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0
LT5tX2luaXRpYWxpemVQcm9taXNlRnVuY3Rpb24udmlzaXQodmlzaXRvcik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCAzNWNkMDVmZmQw
ZjcxNGRkYTRlNTFiZGVlMDg1ZmFkMjUwYjQwMDEzLi4wNWFiOWEwYzQyMGM1YTM3MzI2ZTU3YzU4
OWFjNGZhMThhMWU4YWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmgKQEAgLTIzNCw3ICsyMzQsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6
IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBXcml0ZUJhcnJpZXI8SlNG
dW5jdGlvbj4gbV9ldmFsRnVuY3Rpb247CiAgICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1f
Y2FsbEZ1bmN0aW9uOwogICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBtX2FwcGx5RnVuY3Rp
b247Ci0gICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1fZGVmaW5lUHJvcGVydHlGdW5jdGlv
bjsKKyAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV90aHJvd1R5cGVFcnJvckZ1bmN0aW9u
OwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgSlNGdW5jdGlvbj4gbV9hcnJheVBy
b3RvVG9TdHJpbmdGdW5jdGlvbjsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIEpT
RnVuY3Rpb24+IG1fYXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uOwogICAgIExhenlQcm9wZXJ0eTxK
U0dsb2JhbE9iamVjdCwgSlNGdW5jdGlvbj4gbV9pbml0aWFsaXplUHJvbWlzZUZ1bmN0aW9uOwpA
QCAtNDc5LDcgKzQ3OSw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVu
dGVkVmFyaWFibGVPYmplY3QgewogICAgIEpTRnVuY3Rpb24qIGV2YWxGdW5jdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1fZXZhbEZ1bmN0aW9uLmdldCgpOyB9CiAgICAgSlNGdW5jdGlvbiogY2FsbEZ1
bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jYWxsRnVuY3Rpb24uZ2V0KCk7IH0KICAgICBKU0Z1
bmN0aW9uKiBhcHBseUZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9hcHBseUZ1bmN0aW9uLmdl
dCgpOyB9Ci0gICAgSlNGdW5jdGlvbiogZGVmaW5lUHJvcGVydHlGdW5jdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1fZGVmaW5lUHJvcGVydHlGdW5jdGlvbi5nZXQoKTsgfQorICAgIEpTRnVuY3Rpb24q
IHRocm93VHlwZUVycm9yRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3Rocm93VHlwZUVycm9y
RnVuY3Rpb24uZ2V0KCk7IH0KICAgICBKU0Z1bmN0aW9uKiBhcnJheVByb3RvVG9TdHJpbmdGdW5j
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYXJyYXlQcm90b1RvU3RyaW5nRnVuY3Rpb24uZ2V0KHRo
aXMpOyB9CiAgICAgSlNGdW5jdGlvbiogYXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9hcnJheVByb3RvVmFsdWVzRnVuY3Rpb24uZ2V0KHRoaXMpOyB9CiAgICAgSlNG
dW5jdGlvbiogaW5pdGlhbGl6ZVByb21pc2VGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faW5p
dGlhbGl6ZVByb21pc2VGdW5jdGlvbi5nZXQodGhpcyk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAppbmRleCBkOTkxNDlhYTQx
YzYxMmE2MmE2ZDkyZTkyNGE2Yzg0OGI1MTZjZmNkLi45M2FjY2MxMTlmYTg3ODA2OGJkZjBmMWNi
ZGU4YTU3MWY5Njc2YzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCkBAIC0xMDcsMTQgKzEwNyw2IEBAIHZvaWQgT2JqZWN0
Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgT2JqCiAgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04o
dm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2V0T3duUHJvcGVydHlOYW1lc1ByaXZh
dGVOYW1lKCksIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlOYW1lcywgRG9udEVudW0s
IDEpOwogfQogCi1KU0Z1bmN0aW9uKiBPYmplY3RDb25zdHJ1Y3Rvcjo6YWRkRGVmaW5lUHJvcGVy
dHkoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQotewotICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgSlNGdW5jdGlvbiogZGVmaW5lUHJvcGVydHlGdW5j
dGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAzLCB2bS5wcm9wZXJ0
eU5hbWVzLT5kZWZpbmVQcm9wZXJ0eS5zdHJpbmcoKSwgb2JqZWN0Q29uc3RydWN0b3JEZWZpbmVQ
cm9wZXJ0eSk7Ci0gICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5
TmFtZXMtPmRlZmluZVByb3BlcnR5LCBkZWZpbmVQcm9wZXJ0eUZ1bmN0aW9uLCBEb250RW51bSk7
Ci0gICAgcmV0dXJuIGRlZmluZVByb3BlcnR5RnVuY3Rpb247Ci19Ci0KIC8vIEVTIDE5LjEuMS4x
IE9iamVjdChbdmFsdWVdKQogc3RhdGljIEFMV0FZU19JTkxJTkUgSlNPYmplY3QqIGNvbnN0cnVj
dE9iamVjdChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgbmV3VGFyZ2V0KQogewpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmgKaW5kZXggYjE2
MTRkYWJkYjM4NWM3Y2Q2ZTJmMmQ1Y2RkNjg3MWU3OTdkNDE4Yy4uMmFhYTgxNTQyNTJiOTcxYjZl
NzI4ZmE2ZDAwMTk5NDQwNDRiZDkxOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5oCkBAIC01NCw4ICs1NCw2IEBAIGNsYXNzIE9iamVj
dENvbnN0cnVjdG9yIDogcHVibGljIEludGVybmFsRnVuY3Rpb24gewogICAgICAgICByZXR1cm4g
U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhP
YmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiAgICAgfQogCi0gICAgSlNGdW5j
dGlvbiogYWRkRGVmaW5lUHJvcGVydHkoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqKTsKLQog
cHJvdGVjdGVkOgogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCos
IE9iamVjdFByb3RvdHlwZSopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Qcm9wZXJ0eURlc2NyaXB0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5oCmluZGV4IGFhNjFlZWE0OTVjNGQxYzlkNWEwZjgyNDc5
ZDMyNDUzNjY1NWEzNjUuLmVlOTcxZjU1MDM2NzY3MzIwOTc5OWU4MTllNWQ0MzAxZGQ1ODQ0ODcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5RGVzY3Jp
cHRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5RGVzY3Jp
cHRvci5oCkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIFByb3BlcnR5RGVzY3JpcHRvcl9oCiAj
ZGVmaW5lIFByb3BlcnR5RGVzY3JpcHRvcl9oCiAKKyNpbmNsdWRlICJEZWZpbmVQcm9wZXJ0eUF0
dHJpYnV0ZXMuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpA
QCAtOTMsNiArOTQsMzIgQEAgY2xhc3MgUHJvcGVydHlEZXNjcmlwdG9yIHsKICAgICB1bnNpZ25l
ZCBtX3NlZW5BdHRyaWJ1dGVzOwogfTsKIAoraW5saW5lIFByb3BlcnR5RGVzY3JpcHRvciB0b1By
b3BlcnR5RGVzY3JpcHRvcihKU1ZhbHVlIHZhbHVlLCBKU1ZhbHVlIGdldHRlciwgSlNWYWx1ZSBz
ZXR0ZXIsIERlZmluZVByb3BlcnR5QXR0cmlidXRlcyBhdHRyaWJ1dGVzKQoreworICAgIC8vIFdl
IGFzc3VtZSB0aGF0IHZhbGlkYXRpb24gaXMgYWxyZWFkeSBkb25lLgorICAgIFByb3BlcnR5RGVz
Y3JpcHRvciBkZXNjOworCisgICAgaWYgKGF0dHJpYnV0ZXMuZW51bWVyYWJsZSgpICE9IE1peGVk
VHJpU3RhdGUpCisgICAgICAgIGRlc2Muc2V0RW51bWVyYWJsZShhdHRyaWJ1dGVzLmVudW1lcmFi
bGUoKSk7CisKKyAgICBpZiAoYXR0cmlidXRlcy5jb25maWd1cmFibGUoKSAhPSBNaXhlZFRyaVN0
YXRlKQorICAgICAgICBkZXNjLnNldENvbmZpZ3VyYWJsZShhdHRyaWJ1dGVzLmNvbmZpZ3VyYWJs
ZSgpKTsKKworICAgIGlmIChhdHRyaWJ1dGVzLmhhc1ZhbHVlKCkpCisgICAgICAgIGRlc2Muc2V0
VmFsdWUodmFsdWUpOworCisgICAgaWYgKGF0dHJpYnV0ZXMud3JpdGFibGUoKSAhPSBNaXhlZFRy
aVN0YXRlKQorICAgICAgICBkZXNjLnNldFdyaXRhYmxlKGF0dHJpYnV0ZXMud3JpdGFibGUoKSk7
CisKKyAgICBpZiAoYXR0cmlidXRlcy5oYXNHZXQoKSkKKyAgICAgICAgZGVzYy5zZXRHZXR0ZXIo
Z2V0dGVyKTsKKworICAgIGlmIChhdHRyaWJ1dGVzLmhhc1NldCgpKQorICAgICAgICBkZXNjLnNl
dFNldHRlcihzZXR0ZXIpOworCisgICAgcmV0dXJuIGRlc2M7Cit9CisKIH0KIAogI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>289884</attachid>
            <date>2016-09-26 16:09:53 -0700</date>
            <delta_ts>2016-09-26 21:20:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162108-20160926160656.patch</filename>
            <type>text/plain</type>
            <size>87513</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA2Mzc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
ZmFjYTk1OGQ0YzdiMWViMWE1MjFiYjEwNjQwNDMxZTQ4NjVjOTRkLi5lZDM2YWQ3OGE5ZDY0ZDQ3
YzMyNDI3ZDAxZTExZTI0OTZjNTFlM2YwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEg
KzEsMTA0IEBACisyMDE2LTA5LTI2ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwu
Y29tPgorCisgICAgICAgIFtKU0NdIEFkZCBhIG5ldyBieXRlIGNvZGUgb3BfZGVmaW5lX3Byb3Bl
cnR5IGluc3RlYWQgb2YgY2FsbGluZyBkZWZpbmVQcm9wZXJ0eQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyMTA4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uOgor
ICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmg6CisgICAgICAgIChKU0M6OmNvbXB1
dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpjb21wdXRlRGVmc0ZvckJ5
dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAg
ICAoSlNDOjpDb2RlQmxvY2s6OmR1bXBCeXRlY29kZSk6CisgICAgICAgICogYnl0ZWNvZGUvU3Bl
Y2lhbFBvaW50ZXIuaDoKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
Y3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE1vdmVMaW5rVGltZUNv
bnN0YW50KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxsRGVmaW5l
UHJvcGVydHkpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgor
ICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpQ
cm9wZXJ0eUxpc3ROb2RlOjplbWl0UHV0Q29uc3RhbnRQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6
OkJpdHdpc2VOb3ROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpDbGFzc0V4cHJO
b2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpPYmplY3RQYXR0ZXJuTm9kZTo6Ymlu
ZFZhbHVlKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoK
KyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBl
Pjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAg
ICAqIGRmZy9ERkdDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNhcGFiaWxp
dHlMZXZlbCk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6
REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAqIGRmZy9E
RkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAg
KiBkZmcvREZHT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFn
YXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAg
ICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRp
dmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FsbE9wZXJhdGlv
bik6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3Bl
Y3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlND
OjpGVEw6OmNhbkNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgor
ICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTm9kZSk6CisgICAg
ICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVEZWZpbmVEYXRhUHJvcGVy
dHkpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlRGVmaW5l
QWNjZXNzb3JQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6
OmNvbXBpbGVQdXRCeVZhbFdpdGhUaGlzKTogRGVsZXRlZC4KKyAgICAgICAgKiBqaXQvQ0NhbGxI
ZWxwZXJzLmNwcDoKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpzZXR1cEZvdXJTdHViQXJn
c0dQUik6IERlbGV0ZWQuCisgICAgICAgICogaml0L0NDYWxsSGVscGVycy5oOgorICAgICAgICAo
SlNDOjpDQ2FsbEhlbHBlcnM6OnNldHVwRm91clN0dWJBcmdzR1BSKToKKyAgICAgICAgKEpTQzo6
Q0NhbGxIZWxwZXJzOjpzZXR1cEZpdmVTdHViQXJnc0dQUik6CisgICAgICAgIChKU0M6OkNDYWxs
SGVscGVyczo6c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKToKKyAgICAgICAgKEpTQzo6Q0Nh
bGxIZWxwZXJzOjpzZXR1cFN0dWJBcmdzR1BSKToKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJz
OjpwcmVwYXJlRm9yVGFpbENhbGxTbG93KTogRGVsZXRlZC4KKyAgICAgICAgKiBqaXQvSklULmNw
cDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAgICAgICAg
KiBqaXQvSklULmg6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBq
aXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZGVm
aW5lX2RhdGFfcHJvcGVydHkpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZGVmaW5lX2Fj
Y2Vzc29yX3Byb3BlcnR5KToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFz
bToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6
OlNMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5oOgor
ICAgICAgICAqIHJ1bnRpbWUvRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzLmg6IEFkZGVkLgorICAg
ICAgICAoSlNDOjpEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXM6OkRlZmluZVByb3BlcnR5QXR0cmli
dXRlcyk6CisgICAgICAgIChKU0M6OkRlZmluZVByb3BlcnR5QXR0cmlidXRlczo6cmF3UmVwcmVz
ZW50YXRpb24pOgorICAgICAgICAoSlNDOjpEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXM6Omhhc1Zh
bHVlKToKKyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzOjpzZXRWYWx1ZSk6
CisgICAgICAgIChKU0M6OkRlZmluZVByb3BlcnR5QXR0cmlidXRlczo6aGFzR2V0KToKKyAgICAg
ICAgKEpTQzo6RGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzOjpzZXRHZXQpOgorICAgICAgICAoSlND
OjpEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXM6Omhhc1NldCk6CisgICAgICAgIChKU0M6OkRlZmlu
ZVByb3BlcnR5QXR0cmlidXRlczo6c2V0U2V0KToKKyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVy
dHlBdHRyaWJ1dGVzOjp3cml0YWJsZSk6CisgICAgICAgIChKU0M6OkRlZmluZVByb3BlcnR5QXR0
cmlidXRlczo6Y29uZmlndXJhYmxlKToKKyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVydHlBdHRy
aWJ1dGVzOjplbnVtZXJhYmxlKToKKyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVydHlBdHRyaWJ1
dGVzOjpzZXRXcml0YWJsZSk6CisgICAgICAgIChKU0M6OkRlZmluZVByb3BlcnR5QXR0cmlidXRl
czo6c2V0Q29uZmlndXJhYmxlKToKKyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVydHlBdHRyaWJ1
dGVzOjpzZXRFbnVtZXJhYmxlKToKKyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVydHlBdHRyaWJ1
dGVzOjpmaWxsV2l0aFRyaVN0YXRlKToKKyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVydHlBdHRy
aWJ1dGVzOjpleHRyYWN0VHJpU3RhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgIChK
U0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0pT
R2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp0aHJvd1R5cGVF
cnJvckZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmRlZmluZVByb3Bl
cnR5RnVuY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0
b3IuY3BwOgorICAgICAgICAoSlNDOjpPYmplY3RDb25zdHJ1Y3Rvcjo6YWRkRGVmaW5lUHJvcGVy
dHkpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuaDoKKyAg
ICAgICAgKiBydW50aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5oOgorICAgICAgICAoSlNDOjp0b1By
b3BlcnR5RGVzY3JpcHRvcik6CisKID09IFJvbGxlZCBvdmVyIHRvIENoYW5nZUxvZy0yMDE2LTA5
LTI2ID09CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGY3MzRmOTE2MjNmYTQzZGQ1
NGE2YTA4Njg5MmE5YWFmYjUxODE1MzUuLjdjN2M0NmJkZmYxMWJmNTRkZGE4OTc1NTVlM2JkMDM2
YWYxOWI3OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMTY4LDYgKzIxNjgs
NyBAQAogCQlGRUQ5NEYyRjE3MUUzRTIzMDBCRTc3QTQgLyogV2F0Y2hkb2cuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFRDk0RjJDMTcxRTNFMjMwMEJF
NzdBNCAvKiBXYXRjaGRvZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUZFRjA0MDUxMUFBRTY2MkQwMEJEMjhCMCAvKiBDb21wYXJlQW5kU3dhcFRl
c3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVG
MDQwNTAxQUFFNjYyRDAwQkQyOEIwIC8qIENvbXBhcmVBbmRTd2FwVGVzdC5jcHAgKi87IH07CiAJ
CUZFRkQ2RkM2MUQ1RTc5OTIwMDhGMkYwQiAvKiBKU1N0cmluZ0lubGluZXMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFRkQ2RkM1MUQ1RTc5NzAwMDhG
MkYwQiAvKiBKU1N0cmluZ0lubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQk0NzNEQTRBNDc2NEM0NUZFODcxQjA0ODUgLyogRGVmaW5lUHJv
cGVydHlBdHRyaWJ1dGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxNjk5NDhFREU2OEQ0MDU0QjAxRUY3OTcgLyogRGVmaW5lUHJvcGVydHlBdHRyaWJ1
dGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIC8q
IEVuZCBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhDb250YWluZXJJdGVt
UHJveHkgc2VjdGlvbiAqLwpAQCAtNDQ5OCw2ICs0NDk5LDcgQEAKIAkJRkVGMDQwNTAxQUFFNjYy
RDAwQkQyOEIwIC8qIENvbXBhcmVBbmRTd2FwVGVzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBDb21wYXJlQW5kU3dhcFRlc3QuY3BwOyBwYXRoID0gQVBJL3Rlc3Rz
L0NvbXBhcmVBbmRTd2FwVGVzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZF
RjA0MDUyMUFBRUM0RUQwMEJEMjhCMCAvKiBDb21wYXJlQW5kU3dhcFRlc3QuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQ29tcGFyZUFuZFN3YXBUZXN0Lmg7IHBhdGggPSBBUEkv
dGVzdHMvQ29tcGFyZUFuZFN3YXBUZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUZFRkQ2RkM1MUQ1RTc5NzAwMDhGMkYwQiAvKiBKU1N0cmluZ0lubGluZXMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTdHJpbmdJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTE2OTk0OEVERTY4RDQwNTRCMDFFRjc5NyAvKiBEZWZpbmVQcm9wZXJ0
eUF0dHJpYnV0ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRGVmaW5lUHJv
cGVydHlBdHRyaWJ1dGVzLmg7IHBhdGggPSBEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIC8qIEVuZCBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24g
Ki8KIAogLyogQmVnaW4gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwpAQCAtNjI0
MSw2ICs2MjQzLDcgQEAKIAkJCQk3MDlGQjg2NjFBRTMzNUM2MDAzOUQwNjkgLyogV2Vha1NldFBy
b3RvdHlwZS5oICovLAogCQkJCUE3RENCNzc5MTJFM0Q5MDUwMDkxMTk0MCAvKiBXcml0ZUJhcnJp
ZXIuaCAqLywKIAkJCQlDMkI2RDc1MjE4QTMzNzkzMDA0QTkzMDEgLyogV3JpdGVCYXJyaWVySW5s
aW5lcy5oICovLAorCQkJCTE2OTk0OEVERTY4RDQwNTRCMDFFRjc5NyAvKiBEZWZpbmVQcm9wZXJ0
eUF0dHJpYnV0ZXMuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gcnVudGltZTsKIAkJCXNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7CkBAIC04Mzc2LDYgKzgzNzksNyBAQAogCQkJCTg2NzA0QjQzMTJEQjhB
ODEwMEE5RkU3QiAvKiBZYXJyU3ludGF4Q2hlY2tlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc5
RDNFRDlDNTA2NEREMEE4NDY2QTNBIC8qIE1vZHVsZVNjb3BlRGF0YS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRDk3MjI3NTJEQzU0NDU5QjkxMjVCNTM5IC8qIEpTTW9kdWxlTG9hZGVyLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk0NzNEQTRBNDc2NEM0NUZFODcxQjA0ODUgLyogRGVmaW5lUHJvcGVydHlB
dHRyaWJ1dGVzLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVu
dFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgppbmRleCBkYzU5OTgwNTY5MWNkYTU3YjVkMzYxMTU5
OWRkNWYyOGQ3MTAyZGJlLi41NzZkZTQwMDYwNGQxMDE0NzUxY2M2M2JlYWNlYzc3YTU1ZmQ0ZmY3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0
Lmpzb24KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5q
c29uCkBAIC04MSw2ICs4MSw4IEBACiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9wdXRfZ2V0
dGVyX3NldHRlcl9ieV9pZCIsICJsZW5ndGgiIDogNiB9LAogICAgICAgICAgICAgeyAibmFtZSIg
OiAib3BfcHV0X2dldHRlcl9ieV92YWwiLCAibGVuZ3RoIiA6IDUgfSwKICAgICAgICAgICAgIHsg
Im5hbWUiIDogIm9wX3B1dF9zZXR0ZXJfYnlfdmFsIiwgImxlbmd0aCIgOiA1IH0sCisgICAgICAg
ICAgICB7ICJuYW1lIiA6ICJvcF9kZWZpbmVfZGF0YV9wcm9wZXJ0eSIsICJsZW5ndGgiIDogNSB9
LAorICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfZGVmaW5lX2FjY2Vzc29yX3Byb3BlcnR5Iiwg
Imxlbmd0aCIgOiA2IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9qbXAiLCAibGVuZ3Ro
IiA6IDIgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2p0cnVlIiwgImxlbmd0aCIgOiAz
IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9qZmFsc2UiLCAibGVuZ3RoIiA6IDMgfSwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURl
Zi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKaW5k
ZXggZGFiY2U0ZWRmMDMyNjQ4YzA4OTY4OTk4MmE4ODE3ZWM2MDBhODE3ZS4uNDVhOWUwOWNiZDgy
ZWY2ODlkM2IzNGY4ZWU1MGUxMWViOTVhMzc2MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKQEAgLTE0NCw2ICsxNDQsMjMgQEAgdm9pZCBj
b21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KEJsb2NrKiBjb2RlQmxvY2ssIE9wY29kZUlEIG9w
Y29kZUlELCBJbnN0cnVjdGkKICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9u
LCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KKyAgICBjYXNlIG9wX2RlZmluZV9kYXRhX3Byb3BlcnR5OiB7CisgICAgICAgIEFTU0VS
VChvcGNvZGVMZW5ndGhzW29wY29kZUlEXSA+IDQpOworICAgICAgICBmdW5jdG9yKGNvZGVCbG9j
aywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOworICAg
ICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlv
blsyXS51Lm9wZXJhbmQpOworICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24s
IG9wY29kZUlELCBpbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpOworICAgICAgICBmdW5jdG9yKGNv
ZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQp
OworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGNhc2Ugb3BfZGVmaW5lX2FjY2Vzc29yX3By
b3BlcnR5OiB7CisgICAgICAgIEFTU0VSVChvcGNvZGVMZW5ndGhzW29wY29kZUlEXSA+IDUpOwor
ICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVj
dGlvblsxXS51Lm9wZXJhbmQpOworICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rp
b24sIG9wY29kZUlELCBpbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpOworICAgICAgICBmdW5jdG9y
KGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlvblszXS51Lm9wZXJh
bmQpOworICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBp
bnN0cnVjdGlvbls0XS51Lm9wZXJhbmQpOworICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5z
dHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlvbls1XS51Lm9wZXJhbmQpOworICAgICAgICBy
ZXR1cm47CisgICAgfQogICAgIGNhc2Ugb3BfZ2V0X3Byb3BlcnR5X2VudW1lcmF0b3I6CiAgICAg
Y2FzZSBvcF9nZXRfZW51bWVyYWJsZV9sZW5ndGg6CiAgICAgY2FzZSBvcF9uZXdfZnVuY19leHA6
CkBAIC0zMzIsNiArMzQ5LDggQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KEJs
b2NrKiBjb2RlQmxvY2ssIE9wY29kZUlEIG9wY29kZUlELCBJbnN0cnVjdGkKICAgICBjYXNlIG9w
X3B1dF9ieV92YWw6CiAgICAgY2FzZSBvcF9wdXRfYnlfdmFsX2RpcmVjdDoKICAgICBjYXNlIG9w
X3B1dF9ieV9pbmRleDoKKyAgICBjYXNlIG9wX2RlZmluZV9kYXRhX3Byb3BlcnR5OgorICAgIGNh
c2Ugb3BfZGVmaW5lX2FjY2Vzc29yX3Byb3BlcnR5OgogICAgIGNhc2Ugb3BfcHJvZmlsZV90eXBl
OgogICAgIGNhc2Ugb3BfcHJvZmlsZV9jb250cm9sX2Zsb3c6CiAgICAgY2FzZSBvcF9wdXRfdG9f
YXJndW1lbnRzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNw
cAppbmRleCBmMDBkOThjMzA2OWYxMzBlYjkwMjhjYjczZWVhMDFhZDgwNzI1MmQ1Li44YWE5OTc1
OTI2NWY0MmYxNzE1YTg0NzcyMzQ5NGUxZGI5M2FhNTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtMTIzMyw2ICsxMjMzLDI1IEBAIHZvaWQg
Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoCiAgICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMs
ICVkLCAlcyIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjEpLmRhdGEo
KSwgbjAsIHJlZ2lzdGVyTmFtZShyMikuZGF0YSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CisgICAgICAgIGNhc2Ugb3BfZGVmaW5lX2RhdGFfcHJvcGVydHk6IHsKKyAgICAgICAg
ICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgaW50IHIxID0gKCsr
aXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBpbnQgcjIgPSAoKytpdCktPnUub3BlcmFuZDsK
KyAgICAgICAgICAgIGludCByMyA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgcHJp
bnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAiZGVmaW5lX2RhdGFfcHJv
cGVydHkiKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAlcywgJXMsICVzIiwgcmVnaXN0
ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCByZWdpc3Rlck5hbWUo
cjIpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIzKS5kYXRhKCkpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9kZWZpbmVfYWNjZXNzb3JfcHJvcGVydHk6IHsK
KyAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgaW50
IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBpbnQgcjIgPSAoKytpdCktPnUu
b3BlcmFuZDsKKyAgICAgICAgICAgIGludCByMyA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAg
ICAgICAgaW50IHI0ID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBwcmludExvY2F0
aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJkZWZpbmVfYWNjZXNzb3JfcHJvcGVy
dHkiKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAlcywgJXMsICVzLCAlcyIsIHJlZ2lz
dGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSwgcmVnaXN0ZXJOYW1l
KHIyKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMykuZGF0YSgpLCByZWdpc3Rlck5hbWUocjQpLmRh
dGEoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2Rl
bF9ieV9pZDogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAg
ICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjaWFsUG9pbnRlci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1NwZWNpYWxQb2ludGVyLmgKaW5kZXggNjRmYjIzZmNmMjdkNDEyNTA0
ODAyMTllOGM4YzQxYjdjNDFhN2VmNS4uOTBjYjNhOTkyNmQ2MmU2MDRiMThjM2IzZGJkNTUyMmI0
NTJhZWRmYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWNp
YWxQb2ludGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWNpYWxQ
b2ludGVyLmgKQEAgLTQyLDcgKzQyLDcgQEAgZW51bSBQb2ludGVyIHsKIH0gLy8gbmFtZXNwYWNl
IFNwZWNpYWwKIAogZW51bSBjbGFzcyBMaW5rVGltZUNvbnN0YW50IHsKLSAgICBEZWZpbmVQcm9w
ZXJ0eUZ1bmN0aW9uLAorICAgIFRocm93VHlwZUVycm9yRnVuY3Rpb24sCiB9OwogY29uc3QgdW5z
aWduZWQgTGlua1RpbWVDb25zdGFudENvdW50ID0gMTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCBj
YzcxNzIzZWYzYzBmNWQ0YmIzY2NkZWNiOGJhOTc2MjcyM2QzMmZlLi5iMGMzY2NkNWFjYjI1NTYx
ODhkOTI4MjIyNWE1NzRiMWYwNDcyYzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtMzUsNiArMzUs
NyBAQAogI2luY2x1ZGUgIkJ1aWx0aW5FeGVjdXRhYmxlcy5oIgogI2luY2x1ZGUgIkJ5dGVjb2Rl
R2VuZXJhdG9yaWZpY2F0aW9uLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lz
LmgiCisjaW5jbHVkZSAiRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzLmgiCiAjaW5jbHVkZSAiSW50
ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNHZW5lcmF0
b3JGdW5jdGlvbi5oIgpAQCAtMTU0Myw2ICsxNTQ0LDkgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRNb3ZlTGlua1RpbWVDb25zdGFudChSZWdpc3RlcklEKiBkc3QsIExpbmtU
aW0KICAgICAgICAgbV9saW5rVGltZUNvbnN0YW50UmVnaXN0ZXJzW2NvbnN0YW50SW5kZXhdID0g
Jm1fY29uc3RhbnRQb29sUmVnaXN0ZXJzW2luZGV4XTsKICAgICB9CiAKKyAgICBpZiAoIWRzdCkK
KyAgICAgICAgcmV0dXJuIG1fbGlua1RpbWVDb25zdGFudFJlZ2lzdGVyc1tjb25zdGFudEluZGV4
XTsKKwogICAgIGVtaXRPcGNvZGUob3BfbW92KTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
ZHN0LT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobV9saW5rVGltZUNvbnN0
YW50UmVnaXN0ZXJzW2NvbnN0YW50SW5kZXhdLT5pbmRleCgpKTsKQEAgLTMyNjgsMzggKzMyNzIs
NTkgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdExvZ1NoYWRvd0NoaWNrZW5UYWlsSWZO
ZWNlc3NhcnkoKQogfQogCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2FsbERlZmluZVBy
b3BlcnR5KFJlZ2lzdGVySUQqIG5ld09iaiwgUmVnaXN0ZXJJRCogcHJvcGVydHlOYW1lUmVnaXN0
ZXIsCi0gICAgUmVnaXN0ZXJJRCogdmFsdWVSZWdpc3RlciwgUmVnaXN0ZXJJRCogZ2V0dGVyUmVn
aXN0ZXIsIFJlZ2lzdGVySUQqIHNldHRlclJlZ2lzdGVyLCB1bnNpZ25lZCBvcHRpb25zLCBjb25z
dCBKU1RleHRQb3NpdGlvbiYgcG9zaXRpb24pCisgICAgUmVnaXN0ZXJJRCogdmFsdWVSZWdpc3Rl
ciwgUmVnaXN0ZXJJRCogZ2V0dGVyUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIHNldHRlclJlZ2lzdGVy
LCB1bnNpZ25lZCBvcHRpb25zKQogewotICAgIFJlZlB0cjxSZWdpc3RlcklEPiBkZXNjcmlwdG9y
UmVnaXN0ZXIgPSBlbWl0TmV3T2JqZWN0KG5ld1RlbXBvcmFyeSgpKTsKLQotICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiB0cnVlUmVnaXN0ZXIgPSBlbWl0TG9hZChuZXdUZW1wb3JhcnkoKSwgdHJ1ZSk7
CisgICAgRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzIGF0dHJpYnV0ZXM7CiAgICAgaWYgKG9wdGlv
bnMgJiBQcm9wZXJ0eUNvbmZpZ3VyYWJsZSkKLSAgICAgICAgZW1pdERpcmVjdFB1dEJ5SWQoZGVz
Y3JpcHRvclJlZ2lzdGVyLmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkuY29uZmlndXJhYmxlLCB0cnVl
UmVnaXN0ZXIuZ2V0KCksIFByb3BlcnR5Tm9kZTo6VW5rbm93bik7CisgICAgICAgIGF0dHJpYnV0
ZXMuc2V0Q29uZmlndXJhYmxlKHRydWUpOworCiAgICAgaWYgKG9wdGlvbnMgJiBQcm9wZXJ0eVdy
aXRhYmxlKQotICAgICAgICBlbWl0RGlyZWN0UHV0QnlJZChkZXNjcmlwdG9yUmVnaXN0ZXIuZ2V0
KCksIHByb3BlcnR5TmFtZXMoKS53cml0YWJsZSwgdHJ1ZVJlZ2lzdGVyLmdldCgpLCBQcm9wZXJ0
eU5vZGU6OlVua25vd24pOwotICAgIGVsc2UgaWYgKHZhbHVlUmVnaXN0ZXIpIHsKLSAgICAgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IGZhbHNlUmVnaXN0ZXIgPSBlbWl0TG9hZChuZXdUZW1wb3Jhcnko
KSwgZmFsc2UpOwotICAgICAgICBlbWl0RGlyZWN0UHV0QnlJZChkZXNjcmlwdG9yUmVnaXN0ZXIu
Z2V0KCksIHByb3BlcnR5TmFtZXMoKS53cml0YWJsZSwgZmFsc2VSZWdpc3Rlci5nZXQoKSwgUHJv
cGVydHlOb2RlOjpVbmtub3duKTsKLSAgICB9CisgICAgICAgIGF0dHJpYnV0ZXMuc2V0V3JpdGFi
bGUodHJ1ZSk7CisgICAgZWxzZSBpZiAodmFsdWVSZWdpc3RlcikKKyAgICAgICAgYXR0cmlidXRl
cy5zZXRXcml0YWJsZShmYWxzZSk7CisKICAgICBpZiAob3B0aW9ucyAmIFByb3BlcnR5RW51bWVy
YWJsZSkKLSAgICAgICAgZW1pdERpcmVjdFB1dEJ5SWQoZGVzY3JpcHRvclJlZ2lzdGVyLmdldCgp
LCBwcm9wZXJ0eU5hbWVzKCkuZW51bWVyYWJsZSwgdHJ1ZVJlZ2lzdGVyLmdldCgpLCBQcm9wZXJ0
eU5vZGU6OlVua25vd24pOworICAgICAgICBhdHRyaWJ1dGVzLnNldEVudW1lcmFibGUodHJ1ZSk7
CiAKICAgICBpZiAodmFsdWVSZWdpc3RlcikKLSAgICAgICAgZW1pdERpcmVjdFB1dEJ5SWQoZGVz
Y3JpcHRvclJlZ2lzdGVyLmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkudmFsdWUsIHZhbHVlUmVnaXN0
ZXIsIFByb3BlcnR5Tm9kZTo6VW5rbm93bik7CisgICAgICAgIGF0dHJpYnV0ZXMuc2V0VmFsdWUo
KTsKICAgICBpZiAoZ2V0dGVyUmVnaXN0ZXIpCi0gICAgICAgIGVtaXREaXJlY3RQdXRCeUlkKGRl
c2NyaXB0b3JSZWdpc3Rlci5nZXQoKSwgcHJvcGVydHlOYW1lcygpLmdldCwgZ2V0dGVyUmVnaXN0
ZXIsIFByb3BlcnR5Tm9kZTo6VW5rbm93bik7CisgICAgICAgIGF0dHJpYnV0ZXMuc2V0R2V0KCk7
CiAgICAgaWYgKHNldHRlclJlZ2lzdGVyKQotICAgICAgICBlbWl0RGlyZWN0UHV0QnlJZChkZXNj
cmlwdG9yUmVnaXN0ZXIuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS5zZXQsIHNldHRlclJlZ2lzdGVy
LCBQcm9wZXJ0eU5vZGU6OlVua25vd24pOworICAgICAgICBhdHRyaWJ1dGVzLnNldFNldCgpOwog
Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGRlZmluZVByb3BlcnR5UmVnaXN0ZXIgPSBlbWl0TW92
ZUxpbmtUaW1lQ29uc3RhbnQobmV3VGVtcG9yYXJ5KCksIExpbmtUaW1lQ29uc3RhbnQ6OkRlZmlu
ZVByb3BlcnR5RnVuY3Rpb24pOworICAgIEFTU0VSVCghdmFsdWVSZWdpc3RlciB8fCAoIWdldHRl
clJlZ2lzdGVyICYmICFzZXR0ZXJSZWdpc3RlcikpOwogCi0gICAgQ2FsbEFyZ3VtZW50cyBjYWxs
QXJndW1lbnRzKCp0aGlzLCBudWxscHRyLCAzKTsKLSAgICBlbWl0TG9hZChjYWxsQXJndW1lbnRz
LnRoaXNSZWdpc3RlcigpLCBqc1VuZGVmaW5lZCgpKTsKLSAgICBlbWl0TW92ZShjYWxsQXJndW1l
bnRzLmFyZ3VtZW50UmVnaXN0ZXIoMCksIG5ld09iaik7Ci0gICAgZW1pdE1vdmUoY2FsbEFyZ3Vt
ZW50cy5hcmd1bWVudFJlZ2lzdGVyKDEpLCBwcm9wZXJ0eU5hbWVSZWdpc3Rlcik7Ci0gICAgZW1p
dE1vdmUoY2FsbEFyZ3VtZW50cy5hcmd1bWVudFJlZ2lzdGVyKDIpLCBkZXNjcmlwdG9yUmVnaXN0
ZXIuZ2V0KCkpOworICAgIGlmIChhdHRyaWJ1dGVzLmhhc0dldCgpIHx8IGF0dHJpYnV0ZXMuaGFz
U2V0KCkpIHsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRocm93VHlwZUVycm9yRnVuY3Rp
b247CisgICAgICAgIGlmICghYXR0cmlidXRlcy5oYXNHZXQoKSB8fCAhYXR0cmlidXRlcy5oYXNT
ZXQoKSkKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yRnVuY3Rpb24gPSBlbWl0TW92ZUxpbmtU
aW1lQ29uc3RhbnQobnVsbHB0ciwgTGlua1RpbWVDb25zdGFudDo6VGhyb3dUeXBlRXJyb3JGdW5j
dGlvbik7CiAKLSAgICBlbWl0Q2FsbChuZXdUZW1wb3JhcnkoKSwgZGVmaW5lUHJvcGVydHlSZWdp
c3Rlci5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBwb3NpdGlvbiwg
cG9zaXRpb24sIHBvc2l0aW9uKTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGdldHRlcjsK
KyAgICAgICAgaWYgKGF0dHJpYnV0ZXMuaGFzR2V0KCkpCisgICAgICAgICAgICBnZXR0ZXIgPSBn
ZXR0ZXJSZWdpc3RlcjsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZ2V0dGVyID0gdGhyb3dU
eXBlRXJyb3JGdW5jdGlvbjsKKworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2V0dGVyOwor
ICAgICAgICBpZiAoYXR0cmlidXRlcy5oYXNTZXQoKSkKKyAgICAgICAgICAgIHNldHRlciA9IHNl
dHRlclJlZ2lzdGVyOworICAgICAgICBlbHNlCisgICAgICAgICAgICBzZXR0ZXIgPSB0aHJvd1R5
cGVFcnJvckZ1bmN0aW9uOworCisgICAgICAgIGVtaXRPcGNvZGUob3BfZGVmaW5lX2FjY2Vzc29y
X3Byb3BlcnR5KTsKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG5ld09iai0+aW5kZXgo
KSk7CisgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChwcm9wZXJ0eU5hbWVSZWdpc3Rlci0+
aW5kZXgoKSk7CisgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChnZXR0ZXItPmluZGV4KCkp
OworICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoc2V0dGVyLT5pbmRleCgpKTsKKyAgICAg
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKGF0dHJp
YnV0ZXMucmF3UmVwcmVzZW50YXRpb24oKSkpLT5pbmRleCgpKTsKKyAgICB9IGVsc2UgeworICAg
ICAgICBlbWl0T3Bjb2RlKG9wX2RlZmluZV9kYXRhX3Byb3BlcnR5KTsKKyAgICAgICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKG5ld09iai0+aW5kZXgoKSk7CisgICAgICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZChwcm9wZXJ0eU5hbWVSZWdpc3Rlci0+aW5kZXgoKSk7CisgICAgICAgIGluc3RydWN0
aW9ucygpLmFwcGVuZCh2YWx1ZVJlZ2lzdGVyLT5pbmRleCgpKTsKKyAgICAgICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKGVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKGF0dHJpYnV0ZXMucmF3UmVw
cmVzZW50YXRpb24oKSkpLT5pbmRleCgpKTsKKyAgICB9CiB9CiAKIFJlZ2lzdGVySUQqIEJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0UmV0dXJuKFJlZ2lzdGVySUQqIHNyYykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRl
eCBkMzI2NGM0YTA4NzdhMzYyZTkwNGUxZjgzNmJiZDQ1NjA0MjllMGZlLi45ZTZjZGJhMzYyM2U5
MjYyNmNjOGZkMzk3ZjA5ZTcxNDMzZmIxY2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBAIC01ODgsNyArNTg4
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBQcm9wZXJ0eUVudW1lcmFibGUgICA9
IDEgPDwgMiwKICAgICAgICAgfTsKICAgICAgICAgdm9pZCBlbWl0Q2FsbERlZmluZVByb3BlcnR5
KFJlZ2lzdGVySUQqIG5ld09iaiwgUmVnaXN0ZXJJRCogcHJvcGVydHlOYW1lUmVnaXN0ZXIsCi0g
ICAgICAgICAgICBSZWdpc3RlcklEKiB2YWx1ZVJlZ2lzdGVyLCBSZWdpc3RlcklEKiBnZXR0ZXJS
ZWdpc3RlciwgUmVnaXN0ZXJJRCogc2V0dGVyUmVnaXN0ZXIsIHVuc2lnbmVkIG9wdGlvbnMsIGNv
bnN0IEpTVGV4dFBvc2l0aW9uJik7CisgICAgICAgICAgICBSZWdpc3RlcklEKiB2YWx1ZVJlZ2lz
dGVyLCBSZWdpc3RlcklEKiBnZXR0ZXJSZWdpc3RlciwgUmVnaXN0ZXJJRCogc2V0dGVyUmVnaXN0
ZXIsIHVuc2lnbmVkIG9wdGlvbnMpOwogCiAgICAgICAgIHZvaWQgZW1pdEVudW1lcmF0aW9uKFRo
cm93YWJsZUV4cHJlc3Npb25EYXRhKiBlbnVtZXJhdGlvbk5vZGUsIEV4cHJlc3Npb25Ob2RlKiBz
dWJqZWN0Tm9kZSwgY29uc3Qgc3RkOjpmdW5jdGlvbjx2b2lkKEJ5dGVjb2RlR2VuZXJhdG9yJiwg
UmVnaXN0ZXJJRCopPiYgY2FsbEJhY2ssIFZhcmlhYmxlRW52aXJvbm1lbnROb2RlKiA9IG51bGxw
dHIsIFJlZ2lzdGVySUQqIGZvckxvb3BTeW1ib2xUYWJsZSA9IG51bGxwdHIpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5k
ZXggYzI2OGEyNjA4ZDM4ZDZkZWE3YWNiODE3NzA3ZTU5ZjFjNTI1ZjI4Mi4uMmI1OTBjODdjMGYx
NmIwMGY2MmMwM2ZmODY2MWI1OTMwZmQ2MGU5YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtNTkwLDEyICs1OTAsMTIg
QEAgdm9pZCBQcm9wZXJ0eUxpc3ROb2RlOjplbWl0UHV0Q29uc3RhbnRQcm9wZXJ0eShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWcKICAgICAgICAgQVNTRVJUKG5vZGUubmVlZHNTdXBl
ckJpbmRpbmcoKSk7CiAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcm9wZXJ0eU5hbWVSZWdp
c3RlcjsKICAgICAgICAgaWYgKG5vZGUubmFtZSgpKQotICAgICAgICAgICAgcHJvcGVydHlOYW1l
UmVnaXN0ZXIgPSBnZW5lcmF0b3IuZW1pdExvYWQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCAq
bm9kZS5uYW1lKCkpOworICAgICAgICAgICAgcHJvcGVydHlOYW1lUmVnaXN0ZXIgPSBnZW5lcmF0
b3IuZW1pdExvYWQobnVsbHB0ciwgKm5vZGUubmFtZSgpKTsKICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgcHJvcGVydHlOYW1lUmVnaXN0ZXIgPSBnZW5lcmF0b3IuZW1pdE5vZGUobm9kZS5tX2V4
cHJlc3Npb24pOwogCiAgICAgICAgIGdlbmVyYXRvci5lbWl0U2V0RnVuY3Rpb25OYW1lSWZOZWVk
ZWQobm9kZS5tX2Fzc2lnbiwgdmFsdWUuZ2V0KCksIHByb3BlcnR5TmFtZVJlZ2lzdGVyLmdldCgp
KTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsRGVmaW5lUHJvcGVydHkobmV3T2JqLCBwcm9w
ZXJ0eU5hbWVSZWdpc3Rlci5nZXQoKSwgdmFsdWUuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIsIEJ5
dGVjb2RlR2VuZXJhdG9yOjpQcm9wZXJ0eUNvbmZpZ3VyYWJsZSB8IEJ5dGVjb2RlR2VuZXJhdG9y
OjpQcm9wZXJ0eVdyaXRhYmxlLCBtX3Bvc2l0aW9uKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRD
YWxsRGVmaW5lUHJvcGVydHkobmV3T2JqLCBwcm9wZXJ0eU5hbWVSZWdpc3Rlci5nZXQoKSwgdmFs
dWUuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIsIEJ5dGVjb2RlR2VuZXJhdG9yOjpQcm9wZXJ0eUNv
bmZpZ3VyYWJsZSB8IEJ5dGVjb2RlR2VuZXJhdG9yOjpQcm9wZXJ0eVdyaXRhYmxlKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAoY29uc3QgYXV0byogaWRlbnRpZmllciA9IG5vZGUu
bmFtZSgpKSB7CkBAIC02MDUsNyArNjA1LDcgQEAgdm9pZCBQcm9wZXJ0eUxpc3ROb2RlOjplbWl0
UHV0Q29uc3RhbnRQcm9wZXJ0eShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWcKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIFJlZlB0cjxSZWdpc3RlcklE
PiBpbmRleCA9IGdlbmVyYXRvci5lbWl0TG9hZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIGpz
TnVtYmVyKG9wdGlvbmFsSW5kZXgudmFsdWUoKSkpOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gaW5kZXggPSBnZW5lcmF0b3IuZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIob3B0aW9uYWxJ
bmRleC52YWx1ZSgpKSk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0RGlyZWN0UHV0QnlWYWwobmV3
T2JqLCBpbmRleC5nZXQoKSwgdmFsdWUuZ2V0KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQpA
QCAtMTYyMyw3ICsxNjIzLDcgQEAgUmVnaXN0ZXJJRCogVW5hcnlQbHVzTm9kZTo6ZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQKICAKIFJlZ2lzdGVy
SUQqIEJpdHdpc2VOb3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVy
YXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewotICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzcmMyID0g
Z2VuZXJhdG9yLmVtaXRMb2FkKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwganNOdW1iZXIoLTEp
KTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc3JjMiA9IGdlbmVyYXRvci5lbWl0TG9hZChudWxs
cHRyLCBqc051bWJlcigtMSkpOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzcmMxID0gZ2VuZXJh
dG9yLmVtaXROb2RlKG1fZXhwcik7CiAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0QmluYXJ5T3Ao
b3BfYml0eG9yLCBnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QsIHNyYzEuZ2V0KCkpLCBz
cmMxLmdldCgpLCBzcmMyLmdldCgpLCBPcGVyYW5kVHlwZXMobV9leHByLT5yZXN1bHREZXNjcmlw
dG9yKCksIFJlc3VsdFR5cGU6Om51bWJlclR5cGVJc0ludDMyKCkpKTsKIH0KQEAgLTM2MDMsMTIg
KzM2MDMsMTIgQEAgUmVnaXN0ZXJJRCogQ2xhc3NFeHByTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQKICAgICAgICAgZW1pdFB1dEhvbWVP
YmplY3QoZ2VuZXJhdG9yLCBjb25zdHJ1Y3Rvci5nZXQoKSwgcHJvdG90eXBlLmdldCgpKTsKICAg
ICB9CiAKLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gY29uc3RydWN0b3JOYW1lUmVnaXN0ZXIgPSBn
ZW5lcmF0b3IuZW1pdExvYWQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBwcm9wZXJ0eU5hbWVz
LmNvbnN0cnVjdG9yKTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gY29uc3RydWN0b3JOYW1lUmVn
aXN0ZXIgPSBnZW5lcmF0b3IuZW1pdExvYWQobnVsbHB0ciwgcHJvcGVydHlOYW1lcy5jb25zdHJ1
Y3Rvcik7CiAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsRGVmaW5lUHJvcGVydHkocHJvdG90eXBlLmdl
dCgpLCBjb25zdHJ1Y3Rvck5hbWVSZWdpc3Rlci5nZXQoKSwgY29uc3RydWN0b3IuZ2V0KCksIG51
bGxwdHIsIG51bGxwdHIsCi0gICAgICAgIEJ5dGVjb2RlR2VuZXJhdG9yOjpQcm9wZXJ0eUNvbmZp
Z3VyYWJsZSB8IEJ5dGVjb2RlR2VuZXJhdG9yOjpQcm9wZXJ0eVdyaXRhYmxlLCBtX3Bvc2l0aW9u
KTsKKyAgICAgICAgQnl0ZWNvZGVHZW5lcmF0b3I6OlByb3BlcnR5Q29uZmlndXJhYmxlIHwgQnl0
ZWNvZGVHZW5lcmF0b3I6OlByb3BlcnR5V3JpdGFibGUpOwogCi0gICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IHByb3RvdHlwZU5hbWVSZWdpc3RlciA9IGdlbmVyYXRvci5lbWl0TG9hZChnZW5lcmF0b3Iu
bmV3VGVtcG9yYXJ5KCksIHByb3BlcnR5TmFtZXMucHJvdG90eXBlKTsKLSAgICBnZW5lcmF0b3Iu
ZW1pdENhbGxEZWZpbmVQcm9wZXJ0eShjb25zdHJ1Y3Rvci5nZXQoKSwgcHJvdG90eXBlTmFtZVJl
Z2lzdGVyLmdldCgpLCBwcm90b3R5cGUuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIsIDAsIG1fcG9z
aXRpb24pOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcm90b3R5cGVOYW1lUmVnaXN0ZXIgPSBn
ZW5lcmF0b3IuZW1pdExvYWQobnVsbHB0ciwgcHJvcGVydHlOYW1lcy5wcm90b3R5cGUpOworICAg
IGdlbmVyYXRvci5lbWl0Q2FsbERlZmluZVByb3BlcnR5KGNvbnN0cnVjdG9yLmdldCgpLCBwcm90
b3R5cGVOYW1lUmVnaXN0ZXIuZ2V0KCksIHByb3RvdHlwZS5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0
ciwgMCk7CiAKICAgICBpZiAobV9zdGF0aWNNZXRob2RzKQogICAgICAgICBnZW5lcmF0b3IuZW1p
dE5vZGUoY29uc3RydWN0b3IuZ2V0KCksIG1fc3RhdGljTWV0aG9kcyk7CkBAIC0zODcwLDcgKzM4
NzAsNyBAQCB2b2lkIE9iamVjdFBhdHRlcm5Ob2RlOjpiaW5kVmFsdWUoQnl0ZWNvZGVHZW5lcmF0
b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogcmhzKQogICAgICAgICAgICAgaWYgKCFvcHRpb25h
bEluZGV4KQogICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0R2V0QnlJZCh0ZW1wLmdldCgp
LCByaHMsIHRhcmdldC5wcm9wZXJ0eU5hbWUpOwogICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAg
ICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGluZGV4ID0gZ2VuZXJhdG9yLmVtaXRMb2FkKGdl
bmVyYXRvci5uZXdUZW1wb3JhcnkoKSwganNOdW1iZXIob3B0aW9uYWxJbmRleC52YWx1ZSgpKSk7
CisgICAgICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGluZGV4ID0gZ2VuZXJhdG9yLmVt
aXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKG9wdGlvbmFsSW5kZXgudmFsdWUoKSkpOwogICAgICAg
ICAgICAgICAgIGdlbmVyYXRvci5lbWl0R2V0QnlWYWwodGVtcC5nZXQoKSwgcmhzLCBpbmRleC5n
ZXQoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgK
aW5kZXggOGM3NDEyNjYyNjVjODE0ODA2ZjFmMGZiNzE0ODM3ZTIzYzUwZGM4ZC4uZTk2YjEwNWNh
ZjFhMmUxMDQxYzk5YmY2MWE4YjhiNjczNGRhYzFkMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaApAQCAt
MjY1Nyw2ICsyNjU3LDExIEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRl
VHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgIGNsb2Ji
ZXJXb3JsZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNsb2JiZXJMaW1pdCk7CiAgICAgICAgIGJy
ZWFrOwogICAgIH0KKworICAgIGNhc2UgRGVmaW5lRGF0YVByb3BlcnR5OgorICAgIGNhc2UgRGVm
aW5lQWNjZXNzb3JQcm9wZXJ0eToKKyAgICAgICAgY2xvYmJlcldvcmxkKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYywgY2xvYmJlckxpbWl0KTsKKyAgICAgICAgYnJlYWs7CiAgICAgICAgIAogICAgIGNh
c2UgSW46IHsKICAgICAgICAgLy8gRklYTUU6IFdlIGNhbiBkZXRlcm1pbmUgd2hlbiB0aGUgcHJv
cGVydHkgZGVmaW5pdGVseSBleGlzdHMgYmFzZWQgb24gYWJzdHJhY3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKaW5kZXggMDQ1MjI4MGRkMjZm
NDBiMGJjYTQ1ZDM4NTFkMTEwZGY0MTZhMGZhNy4uMGI1ZmI5NWQ5NTdiMTJhNDM4MWNmZmI5YjZj
MmE0ZWIzMmFiM2E0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdC
eXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHAKQEAgLTQyMzgsNiArNDIzOCwzOCBAQCBib29sIEJ5dGVDb2RlUGFyc2Vy
OjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgTkVYVF9PUENPREUob3Bf
cHV0X2J5X3ZhbF93aXRoX3RoaXMpOwogICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBvcF9kZWZp
bmVfZGF0YV9wcm9wZXJ0eTogeworICAgICAgICAgICAgTm9kZSogYmFzZSA9IGdldChWaXJ0dWFs
UmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCkpOworICAgICAgICAgICAg
Tm9kZSogcHJvcGVydHkgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsy
XS51Lm9wZXJhbmQpKTsKKyAgICAgICAgICAgIE5vZGUqIHZhbHVlID0gZ2V0KFZpcnR1YWxSZWdp
c3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKSk7CisgICAgICAgICAgICBOb2Rl
KiBhdHRyaWJ1dGVzID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bNF0u
dS5vcGVyYW5kKSk7CisKKyAgICAgICAgICAgIGFkZFZhckFyZ0NoaWxkKGJhc2UpOworICAgICAg
ICAgICAgYWRkVmFyQXJnQ2hpbGQocHJvcGVydHkpOworICAgICAgICAgICAgYWRkVmFyQXJnQ2hp
bGQodmFsdWUpOworICAgICAgICAgICAgYWRkVmFyQXJnQ2hpbGQoYXR0cmlidXRlcyk7CisgICAg
ICAgICAgICBhZGRUb0dyYXBoKE5vZGU6OlZhckFyZywgRGVmaW5lRGF0YVByb3BlcnR5LCBPcElu
Zm8oMCksIE9wSW5mbygwKSk7CisKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2RlZmluZV9k
YXRhX3Byb3BlcnR5KTsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2Ugb3BfZGVmaW5lX2FjY2Vz
c29yX3Byb3BlcnR5OiB7CisgICAgICAgICAgICBOb2RlKiBiYXNlID0gZ2V0KFZpcnR1YWxSZWdp
c3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSk7CisgICAgICAgICAgICBOb2Rl
KiBwcm9wZXJ0eSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzJdLnUu
b3BlcmFuZCkpOworICAgICAgICAgICAgTm9kZSogZ2V0dGVyID0gZ2V0KFZpcnR1YWxSZWdpc3Rl
cihjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKSk7CisgICAgICAgICAgICBOb2RlKiBz
ZXR0ZXIgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvbls0XS51Lm9wZXJh
bmQpKTsKKyAgICAgICAgICAgIE5vZGUqIGF0dHJpYnV0ZXMgPSBnZXQoVmlydHVhbFJlZ2lzdGVy
KGN1cnJlbnRJbnN0cnVjdGlvbls1XS51Lm9wZXJhbmQpKTsKKworICAgICAgICAgICAgYWRkVmFy
QXJnQ2hpbGQoYmFzZSk7CisgICAgICAgICAgICBhZGRWYXJBcmdDaGlsZChwcm9wZXJ0eSk7Cisg
ICAgICAgICAgICBhZGRWYXJBcmdDaGlsZChnZXR0ZXIpOworICAgICAgICAgICAgYWRkVmFyQXJn
Q2hpbGQoc2V0dGVyKTsKKyAgICAgICAgICAgIGFkZFZhckFyZ0NoaWxkKGF0dHJpYnV0ZXMpOwor
ICAgICAgICAgICAgYWRkVG9HcmFwaChOb2RlOjpWYXJBcmcsIERlZmluZUFjY2Vzc29yUHJvcGVy
dHksIE9wSW5mbygwKSwgT3BJbmZvKDApKTsKKworICAgICAgICAgICAgTkVYVF9PUENPREUob3Bf
ZGVmaW5lX2FjY2Vzc29yX3Byb3BlcnR5KTsKKyAgICAgICAgfQorCiAgICAgICAgIGNhc2Ugb3Bf
dHJ5X2dldF9ieV9pZDoKICAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWQ6CiAgICAgICAgIGNhc2Ug
b3BfZ2V0X2J5X2lkX3Byb3RvX2xvYWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NhcGFiaWxpdGllcy5jcHAKaW5kZXggNDhmYTQ5NTcyZWM1MGVjMTVkMDM3NzZhNTIyZDZmYmQz
NTJiZmU5YS4uYzMyM2Q0NmZiYzNjZjVjMTA0OWZhMjZmYzBlMTkwZjIyNzFhNDcxOCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcApAQCAtMTczLDYg
KzE3Myw4IEBAIENhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwoT3Bjb2RlSUQgb3Bjb2Rl
SUQsIENvZGVCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjCiAgICAgY2FzZSBvcF9wdXRfZ2V0dGVy
X3NldHRlcl9ieV9pZDoKICAgICBjYXNlIG9wX3B1dF9nZXR0ZXJfYnlfdmFsOgogICAgIGNhc2Ug
b3BfcHV0X3NldHRlcl9ieV92YWw6CisgICAgY2FzZSBvcF9kZWZpbmVfZGF0YV9wcm9wZXJ0eToK
KyAgICBjYXNlIG9wX2RlZmluZV9hY2Nlc3Nvcl9wcm9wZXJ0eToKICAgICBjYXNlIG9wX2RlbF9i
eV9pZDoKICAgICBjYXNlIG9wX2RlbF9ieV92YWw6CiAgICAgY2FzZSBvcF9qbXA6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmluZGV4IGMxYzNmZGRkYjdhN2E2MGI0
NjUyYTE3Y2FlMWE5ODNmOGNhZTk2MTEuLmNjY2RmOGJjZDYyNmFhNGQ2NzYzNzNjZDI4NDJlMmU1
NmFlMGFjMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJl
cml6ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCkBA
IC00ODYsNiArNDg2LDggQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9k
ZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKICAgICBjYXNlIFB1dEdl
dHRlclNldHRlckJ5SWQ6CiAgICAgY2FzZSBQdXRHZXR0ZXJCeVZhbDoKICAgICBjYXNlIFB1dFNl
dHRlckJ5VmFsOgorICAgIGNhc2UgRGVmaW5lRGF0YVByb3BlcnR5OgorICAgIGNhc2UgRGVmaW5l
QWNjZXNzb3JQcm9wZXJ0eToKICAgICBjYXNlIERlbGV0ZUJ5SWQ6CiAgICAgY2FzZSBEZWxldGVC
eVZhbDoKICAgICBjYXNlIEFycmF5UHVzaDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRG9lc0dDLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9l
c0dDLmNwcAppbmRleCAyZGNmNTVkMmVkMjhhYWU2MGI2YjhiN2I5YmY2ZGEwNzE5ZDkyZGQ1Li5m
NjlkMmY5ZmY5N2Q0MDhhOGYyZTgxNzZmNWFhN2IzYzljNzUzZGJmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCkBAIC0xMTEsNiArMTExLDggQEAgYm9vbCBkb2VzR0Mo
R3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgUHV0R2V0dGVyU2V0dGVyQnlJZDoK
ICAgICBjYXNlIFB1dEdldHRlckJ5VmFsOgogICAgIGNhc2UgUHV0U2V0dGVyQnlWYWw6CisgICAg
Y2FzZSBEZWZpbmVEYXRhUHJvcGVydHk6CisgICAgY2FzZSBEZWZpbmVBY2Nlc3NvclByb3BlcnR5
OgogICAgIGNhc2UgRGVsZXRlQnlJZDoKICAgICBjYXNlIERlbGV0ZUJ5VmFsOgogICAgIGNhc2Ug
Q2hlY2tTdHJ1Y3R1cmU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0ZpeHVwUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNl
LmNwcAppbmRleCA2ZWU1MTQyZjc4ZjYwYmYxMDk2ODNjOGI4OWMxNWQwZTQ1OGIzZmUwLi43NWEz
YjVkNDU2N2U3NGRhODUyZTQ0OTI1ZmE3ZGJmMTQwOTA1MzU3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKQEAgLTE2MDIsNiArMTYwMiwzNSBAQCBjbGFz
cyBGaXh1cFBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgIGZpeEVkZ2U8VW50eXBl
ZFVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAKKyAgICAgICAgY2Fz
ZSBEZWZpbmVEYXRhUHJvcGVydHk6IHsKKyAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVzZT4obV9n
cmFwaC52YXJBcmdDaGlsZChub2RlLCAwKSk7CisgICAgICAgICAgICBFZGdlJiBwcm9wZXJ0eUVk
Z2UgPSBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpOworICAgICAgICAgICAgaWYgKHByb3Bl
cnR5RWRnZS0+c2hvdWxkU3BlY3VsYXRlU3ltYm9sKCkpCisgICAgICAgICAgICAgICAgZml4RWRn
ZTxTeW1ib2xVc2U+KHByb3BlcnR5RWRnZSk7CisgICAgICAgICAgICBlbHNlIGlmIChwcm9wZXJ0
eUVkZ2UtPnNob3VsZFNwZWN1bGF0ZVN0cmluZygpKQorICAgICAgICAgICAgICAgIGZpeEVkZ2U8
U3RyaW5nVXNlPihwcm9wZXJ0eUVkZ2UpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIGZpeEVkZ2U8VW50eXBlZFVzZT4ocHJvcGVydHlFZGdlKTsKKyAgICAgICAgICAgIGZpeEVk
Z2U8VW50eXBlZFVzZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAyKSk7CisgICAgICAgICAg
ICBmaXhFZGdlPEludDMyVXNlPihtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDMpKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBEZWZpbmVBY2Nlc3NvclBy
b3BlcnR5OiB7CisgICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG1fZ3JhcGgudmFyQXJnQ2hp
bGQobm9kZSwgMCkpOworICAgICAgICAgICAgRWRnZSYgcHJvcGVydHlFZGdlID0gbV9ncmFwaC52
YXJBcmdDaGlsZChub2RlLCAxKTsKKyAgICAgICAgICAgIGlmIChwcm9wZXJ0eUVkZ2UtPnNob3Vs
ZFNwZWN1bGF0ZVN5bWJvbCgpKQorICAgICAgICAgICAgICAgIGZpeEVkZ2U8U3ltYm9sVXNlPihw
cm9wZXJ0eUVkZ2UpOworICAgICAgICAgICAgZWxzZSBpZiAocHJvcGVydHlFZGdlLT5zaG91bGRT
cGVjdWxhdGVTdHJpbmcoKSkKKyAgICAgICAgICAgICAgICBmaXhFZGdlPFN0cmluZ1VzZT4ocHJv
cGVydHlFZGdlKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBmaXhFZGdlPFVu
dHlwZWRVc2U+KHByb3BlcnR5RWRnZSk7CisgICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG1f
Z3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMikpOworICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNl
PihtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDMpKTsKKyAgICAgICAgICAgIGZpeEVkZ2U8SW50
MzJVc2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgNCkpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKwogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICAgICAgLy8gSGF2ZSB0aGVz
ZSBuby1vcCBjYXNlcyBoZXJlIHRvIGVuc3VyZSB0aGF0IG5vYm9keSBmb3JnZXRzIHRvIGFkZCBo
YW5kbGVycyBmb3IgbmV3IG9wY29kZXMuCiAgICAgICAgIGNhc2UgU2V0QXJndW1lbnQ6CkBAIC0x
NjcxLDggKzE3MDAsNiBAQCBjbGFzcyBGaXh1cFBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAg
ICAgY2FzZSBHZXRCeVZhbFdpdGhUaGlzOgogICAgICAgICBjYXNlIENvbXBhcmVFcVB0cjoKICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBicmVhazsKICNlbHNl
CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZVR5cGUuaAppbmRleCAxZjM1ZWIyZDkwM2I0NjZjMjQxOGMzZGMxYjYxODUz
ZWJlNWQ2OTc5Li4yNTE1ZWIzNDJiZDczODllMTE4ODdhYmQ4MmYwZWNmZjAxMDdkYmIyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCkBAIC0xOTksNiArMTk5LDggQEAg
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKFB1dEdldHRlclNldHRl
ckJ5SWQsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhQdXRHZXR0ZXJCeVZhbCwgTm9k
ZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFB1dFNldHRlckJ5VmFsLCBOb2RlTXVzdEdlbmVy
YXRlKSBcCisgICAgbWFjcm8oRGVmaW5lRGF0YVByb3BlcnR5LCBOb2RlTXVzdEdlbmVyYXRlIHwg
Tm9kZUhhc1ZhckFyZ3MpIFwKKyAgICBtYWNybyhEZWZpbmVBY2Nlc3NvclByb3BlcnR5LCBOb2Rl
TXVzdEdlbmVyYXRlIHwgTm9kZUhhc1ZhckFyZ3MpIFwKICAgICBtYWNybyhEZWxldGVCeUlkLCBO
b2RlUmVzdWx0Qm9vbGVhbiB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhEZWxldGVC
eVZhbCwgTm9kZVJlc3VsdEJvb2xlYW4gfCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8o
Q2hlY2tTdHJ1Y3R1cmUsIE5vZGVNdXN0R2VuZXJhdGUpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCmluZGV4IGQyMTkxNmEyNTRjNzI5NmE5ZWQ2YmQ3MzMz
ZWNkMzYyZmRlM2ExOTIuLmQ1MzA1NjIwODdiMjkzM2Y3ZDhmNjIxNDM3ZTdhNTU0M2MyMjhmYjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcApAQCAtMzgs
NiArMzgsNyBAQAogI2luY2x1ZGUgIkRGR1RvRlRMRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNr
LmgiCiAjaW5jbHVkZSAiREZHVG9GVExGb3JPU1JFbnRyeURlZmVycmVkQ29tcGlsYXRpb25DYWxs
YmFjay5oIgogI2luY2x1ZGUgIkRGR1dvcmtsaXN0LmgiCisjaW5jbHVkZSAiRGVmaW5lUHJvcGVy
dHlBdHRyaWJ1dGVzLmgiCiAjaW5jbHVkZSAiRGlyZWN0QXJndW1lbnRzLmgiCiAjaW5jbHVkZSAi
RlRMRm9yT1NSRW50cnlKSVRDb2RlLmgiCiAjaW5jbHVkZSAiRlRMT1NSRW50cnkuaCIKQEAgLTEw
MjIsNiArMTAyMyw4MiBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxXaXRo
VGhpcyhFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuYwogICAgIHB1dFdpdGhUaGlz
PGZhbHNlPihleGVjLCBlbmNvZGVkQmFzZSwgZW5jb2RlZFRoaXMsIGVuY29kZWRWYWx1ZSwgcHJv
cGVydHkpOwogfQogCitBTFdBWVNfSU5MSU5FIHN0YXRpYyB2b2lkIGRlZmluZURhdGFQcm9wZXJ0
eShFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwgSlNPYmplY3QqIGJhc2UsIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgaW50MzJfdCBhdHRyaWJ1dGVzKQorewor
ICAgIFByb3BlcnR5RGVzY3JpcHRvciBkZXNjcmlwdG9yID0gdG9Qcm9wZXJ0eURlc2NyaXB0b3Io
dmFsdWUsIGpzVW5kZWZpbmVkKCksIGpzVW5kZWZpbmVkKCksIERlZmluZVByb3BlcnR5QXR0cmli
dXRlcyhhdHRyaWJ1dGVzKSk7CisgICAgQVNTRVJUKChkZXNjcmlwdG9yLmF0dHJpYnV0ZXMoKSAm
IEFjY2Vzc29yKSB8fCAoIWRlc2NyaXB0b3IuaXNBY2Nlc3NvckRlc2NyaXB0b3IoKSkpOworICAg
IGJhc2UtPm1ldGhvZFRhYmxlKHZtKS0+ZGVmaW5lT3duUHJvcGVydHkoYmFzZSwgZXhlYywgcHJv
cGVydHlOYW1lLCBkZXNjcmlwdG9yLCB0cnVlKTsKK30KKwordm9pZCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkRlZmluZURhdGFQcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkUHJvcGVydHksIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSwgaW50MzJfdCBhdHRyaWJ1dGVzKQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIElkZW50aWZpZXIgcHJvcGVydHlO
YW1lID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRQcm9wZXJ0eSkudG9Qcm9wZXJ0eUtleShleGVj
KTsKKyAgICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0aW9uKCkpKQorICAgICAgICByZXR1cm47
CisgICAgZGVmaW5lRGF0YVByb3BlcnR5KGV4ZWMsIHZtLCBiYXNlLCBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpLCBhdHRyaWJ1dGVzKTsKK30KKwordm9pZCBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkRlZmluZURhdGFQcm9wZXJ0eVN0cmluZyhFeGVjU3RhdGUqIGV4
ZWMsIEpTT2JqZWN0KiBiYXNlLCBKU1N0cmluZyogcHJvcGVydHksIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSwgaW50MzJfdCBhdHRyaWJ1dGVzKQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIElkZW50aWZpZXIgcHJv
cGVydHlOYW1lID0gcHJvcGVydHktPnRvSWRlbnRpZmllcihleGVjKTsKKyAgICBpZiAoVU5MSUtF
TFkoc2NvcGUuZXhjZXB0aW9uKCkpKQorICAgICAgICByZXR1cm47CisgICAgZGVmaW5lRGF0YVBy
b3BlcnR5KGV4ZWMsIHZtLCBiYXNlLCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkVmFsdWUpLCBhdHRyaWJ1dGVzKTsKK30KKwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkRlZmluZURhdGFQcm9wZXJ0eVN5bWJvbChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNl
LCBTeW1ib2wqIHByb3BlcnR5LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIGludDMyX3Qg
YXR0cmlidXRlcykKK3sKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE5hdGl2ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKKyAgICBkZWZpbmVEYXRhUHJvcGVydHkoZXhl
Yywgdm0sIGJhc2UsIElkZW50aWZpZXI6OmZyb21VaWQocHJvcGVydHktPnByaXZhdGVOYW1lKCkp
LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSwgYXR0cmlidXRlcyk7Cit9CisKK0FMV0FZ
U19JTkxJTkUgc3RhdGljIHZvaWQgZGVmaW5lQWNjZXNzb3JQcm9wZXJ0eShFeGVjU3RhdGUqIGV4
ZWMsIFZNJiB2bSwgSlNPYmplY3QqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSwgSlNPYmplY3QqIGdldHRlciwgSlNPYmplY3QqIHNldHRlciwgaW50MzJfdCBhdHRyaWJ1dGVz
KQoreworICAgIFByb3BlcnR5RGVzY3JpcHRvciBkZXNjcmlwdG9yID0gdG9Qcm9wZXJ0eURlc2Ny
aXB0b3IoanNVbmRlZmluZWQoKSwgZ2V0dGVyLCBzZXR0ZXIsIERlZmluZVByb3BlcnR5QXR0cmli
dXRlcyhhdHRyaWJ1dGVzKSk7CisgICAgQVNTRVJUKChkZXNjcmlwdG9yLmF0dHJpYnV0ZXMoKSAm
IEFjY2Vzc29yKSB8fCAoIWRlc2NyaXB0b3IuaXNBY2Nlc3NvckRlc2NyaXB0b3IoKSkpOworICAg
IGJhc2UtPm1ldGhvZFRhYmxlKHZtKS0+ZGVmaW5lT3duUHJvcGVydHkoYmFzZSwgZXhlYywgcHJv
cGVydHlOYW1lLCBkZXNjcmlwdG9yLCB0cnVlKTsKK30KKwordm9pZCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkRlZmluZUFjY2Vzc29yUHJvcGVydHkoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCog
YmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFByb3BlcnR5LCBKU09iamVjdCogZ2V0dGVyLCBK
U09iamVjdCogc2V0dGVyLCBpbnQzMl90IGF0dHJpYnV0ZXMpCit7CisgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSWRlbnRpZmll
ciBwcm9wZXJ0eU5hbWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFByb3BlcnR5KS50b1Byb3Bl
cnR5S2V5KGV4ZWMpOworICAgIGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRpb24oKSkpCisgICAg
ICAgIHJldHVybjsKKyAgICBkZWZpbmVBY2Nlc3NvclByb3BlcnR5KGV4ZWMsIHZtLCBiYXNlLCBw
cm9wZXJ0eU5hbWUsIGdldHRlciwgc2V0dGVyLCBhdHRyaWJ1dGVzKTsKK30KKwordm9pZCBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkRlZmluZUFjY2Vzc29yUHJvcGVydHlTdHJpbmcoRXhlY1N0YXRl
KiBleGVjLCBKU09iamVjdCogYmFzZSwgSlNTdHJpbmcqIHByb3BlcnR5LCBKU09iamVjdCogZ2V0
dGVyLCBKU09iamVjdCogc2V0dGVyLCBpbnQzMl90IGF0dHJpYnV0ZXMpCit7CisgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhl
Yyk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSWRl
bnRpZmllciBwcm9wZXJ0eU5hbWUgPSBwcm9wZXJ0eS0+dG9JZGVudGlmaWVyKGV4ZWMpOworICAg
IGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRpb24oKSkpCisgICAgICAgIHJldHVybjsKKyAgICBk
ZWZpbmVBY2Nlc3NvclByb3BlcnR5KGV4ZWMsIHZtLCBiYXNlLCBwcm9wZXJ0eU5hbWUsIGdldHRl
ciwgc2V0dGVyLCBhdHRyaWJ1dGVzKTsKK30KKwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkRlZmluZUFjY2Vzc29yUHJvcGVydHlTeW1ib2woRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCog
YmFzZSwgU3ltYm9sKiBwcm9wZXJ0eSwgSlNPYmplY3QqIGdldHRlciwgSlNPYmplY3QqIHNldHRl
ciwgaW50MzJfdCBhdHRyaWJ1dGVzKQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOworICAgIGRlZmluZUFjY2Vz
c29yUHJvcGVydHkoZXhlYywgdm0sIGJhc2UsIElkZW50aWZpZXI6OmZyb21VaWQocHJvcGVydHkt
PnByaXZhdGVOYW1lKCkpLCBnZXR0ZXIsIHNldHRlciwgYXR0cmlidXRlcyk7Cit9CisKIGNoYXIq
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXJyYXkoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1
cmUqIGFycmF5U3RydWN0dXJlLCB2b2lkKiBidWZmZXIsIHNpemVfdCBzaXplKQogewogICAgIFZN
KiB2bSA9ICZleGVjLT52bSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlv
bnMuaAppbmRleCA1MjdiZmU1ODc2YWZjNzgzN2JhMzBmZDIxMGQ1YTQ3YzNiMjk1MWU0Li42ODZl
NjNiOWQzNDIzNTM2MDE2MTEyMDZiODBhYzMzOTVkNzNjYmU2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaApAQCAtMTE0LDYgKzExNCwxMiBAQCB2b2lkIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFdpdGhUaGlzKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1Zh
bHVlLCBFbmNvZGVkSgogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRXaXRoVGhp
c1N0cmljdChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlLCBVbmlxdWVkU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbFdpdGhUaGlzKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlKSBXVEZf
SU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxXaXRoVGhpc1N0
cmljdChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRK
U1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwordm9pZCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkRlZmluZURhdGFQcm9wZXJ0eShFeGVjU3RhdGUqLCBKU09iamVjdCosIEVuY29k
ZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgaW50MzJfdCkgV1RGX0lOVEVSTkFMOwordm9pZCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlZmluZURhdGFQcm9wZXJ0eVN0cmluZyhFeGVjU3RhdGUq
LCBKU09iamVjdCosIEpTU3RyaW5nKiwgRW5jb2RlZEpTVmFsdWUsIGludDMyX3QpIFdURl9JTlRF
Uk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWZpbmVEYXRhUHJvcGVydHlTeW1i
b2woRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBTeW1ib2wqLCBFbmNvZGVkSlNWYWx1ZSwgaW50MzJf
dCkgV1RGX0lOVEVSTkFMOwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlZmluZUFjY2Vz
c29yUHJvcGVydHkoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgSlNPYmpl
Y3QqLCBKU09iamVjdCosIGludDMyX3QpIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElP
TiBvcGVyYXRpb25EZWZpbmVBY2Nlc3NvclByb3BlcnR5U3RyaW5nKEV4ZWNTdGF0ZSosIEpTT2Jq
ZWN0KiwgSlNTdHJpbmcqLCBKU09iamVjdCosIEpTT2JqZWN0KiwgaW50MzJfdCkgV1RGX0lOVEVS
TkFMOwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlZmluZUFjY2Vzc29yUHJvcGVydHlT
eW1ib2woRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBTeW1ib2wqLCBKU09iamVjdCosIEpTT2JqZWN0
KiwgaW50MzJfdCkgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25BcnJheVB1c2goRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
LCBKU0FycmF5KikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25BcnJheVB1c2hEb3VibGUoRXhlY1N0YXRlKiwgZG91YmxlIHZhbHVlLCBKU0FycmF5
KikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25B
cnJheVBvcChFeGVjU3RhdGUqLCBKU0FycmF5KikgV1RGX0lOVEVSTkFMOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBo
YXNlLmNwcAppbmRleCAwNmRiNDBlYjY3NjY3MjQ2ZDM0OTA5MDU5MTliZjVhYmQwMGViOTllLi44
N2RiZTgzYTg4OTBjMWQ3YWQzNDhlMDU0ZTVhNzllOWQ1YTQ0MmQ4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBo
YXNlLmNwcApAQCAtMTA0MCw2ICsxMDQwLDggQEAgY2xhc3MgUHJlZGljdGlvblByb3BhZ2F0aW9u
UGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICBjYXNlIFB1dEdldHRlclNldHRlckJ5SWQ6
CiAgICAgICAgIGNhc2UgUHV0R2V0dGVyQnlWYWw6CiAgICAgICAgIGNhc2UgUHV0U2V0dGVyQnlW
YWw6CisgICAgICAgIGNhc2UgRGVmaW5lRGF0YVByb3BlcnR5OgorICAgICAgICBjYXNlIERlZmlu
ZUFjY2Vzc29yUHJvcGVydHk6CiAgICAgICAgIGNhc2UgREZHOjpKdW1wOgogICAgICAgICBjYXNl
IEJyYW5jaDoKICAgICAgICAgY2FzZSBTd2l0Y2g6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU2FmZVRvRXhlY3V0ZS5oCmluZGV4IDIyYjkzNDAwNTgzYWM2ZGY4NjNiMGJlMzhmNmI4
MzM2YTUwNDE5YWMuLmMxMzJmOTU3NGIyNWU2NGU2YWNjNTYxNjBiOTQ3OTU4MmI5M2FmMTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCkBAIC0yMTQs
NiArMjE0LDggQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwg
R3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgUHV0R2V0dGVyU2V0dGVyQnlJZDoK
ICAgICBjYXNlIFB1dEdldHRlckJ5VmFsOgogICAgIGNhc2UgUHV0U2V0dGVyQnlWYWw6CisgICAg
Y2FzZSBEZWZpbmVEYXRhUHJvcGVydHk6CisgICAgY2FzZSBEZWZpbmVBY2Nlc3NvclByb3BlcnR5
OgogICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmU6CiAgICAgY2FzZSBHZXRFeGVjdXRhYmxlOgogICAg
IGNhc2UgR2V0QnV0dGVyZmx5OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5oCmluZGV4IGU3YTI5YjQzMzQ2YjI0ODIzYTk5ODlmZWU5NWQ2NDA1YzMxOGRh
NzMuLmZkMDM1MTM2ZDAxMTkxNjFjNTg2NDRhZTVmNDQyMGIyYTU2ZTNhZjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKQEAgLTEzNDQsNiArMTM0
NCwzNiBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVCB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczLCBhcmc0KTsKICAgICAgICAgcmV0dXJu
IGFwcGVuZENhbGwob3BlcmF0aW9uKTsKICAgICB9CisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2Fs
bE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FT0pKWiBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBH
UFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMsIEdQUlJlZyBhcmc0KQorICAgIHsKKyAgICAgICAgbV9q
aXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMsIGFyZzQpOwor
ICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOworICAgIH0KKyAgICBKSVRDb21w
aWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VPSnNzSlogb3BlcmF0aW9u
LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcgYXJnNCkKKyAg
ICB7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcy
LCBhcmczLCBhcmc0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKKyAg
ICB9CisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9F
T1N5bUpaIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywg
R1BSUmVnIGFyZzQpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoYXJnMSwgYXJnMiwgYXJnMywgYXJnNCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxs
KG9wZXJhdGlvbik7CisgICAgfQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24o
Vl9KSVRPcGVyYXRpb25fRU9KT09aIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcy
LCBHUFJSZWcgYXJnMywgR1BSUmVnIGFyZzQsIEdQUlJlZyBhcmc1KQorICAgIHsKKyAgICAgICAg
bV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMsIGFyZzQs
IGFyZzUpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOworICAgIH0KKyAg
ICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VPSnNzT09a
IG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVn
IGFyZzQsIEdQUlJlZyBhcmc1KQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNX
aXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMsIGFyZzQsIGFyZzUpOworICAgICAgICByZXR1
cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOworICAgIH0KKyAgICBKSVRDb21waWxlcjo6Q2FsbCBj
YWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VPU3ltT09aIG9wZXJhdGlvbiwgR1BSUmVnIGFy
ZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVnIGFyZzQsIEdQUlJlZyBhcmc1KQor
ICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFy
ZzIsIGFyZzMsIGFyZzQsIGFyZzUpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRp
b24pOworICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3Bl
cmF0aW9uX0VPSklVaSBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgVW5pcXVl
ZFN0cmluZ0ltcGwqIGltcGwsIHVuc2lnbmVkIHZhbHVlKQogICAgIHsKICAgICAgICAgbV9qaXQu
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIFRydXN0ZWRJbW1QdHIoaW1w
bCksIFRydXN0ZWRJbW0zMih2YWx1ZSkpOwpAQCAtMTc4OCw3ICsxODE4LDM2IEBAIGNsYXNzIFNw
ZWN1bGF0aXZlSklUIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KEVBQklfMzJCSVRfRFVNTVlfQVJHIGFyZzEucGF5bG9hZEdQUigpLCBhcmcxLnRhZ0dQUigpLCBh
cmcyLnBheWxvYWRHUFIoKSwgYXJnMi50YWdHUFIoKSwgYXJnMy5wYXlsb2FkR1BSKCksIGFyZzMu
dGFnR1BSKCksIGFyZzQucGF5bG9hZEdQUigpLCBhcmc0LnRhZ0dQUigpKTsKICAgICAgICAgcmV0
dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKICAgICB9Ci0KKyAgICBKSVRDb21waWxlcjo6Q2Fs
bCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VPSkpaIG9wZXJhdGlvbiwgR1BSUmVnIGFy
ZzEsIEpTVmFsdWVSZWdzIGFyZzIsIEpTVmFsdWVSZWdzIGFyZzMsIEdQUlJlZyBhcmc0KQorICAg
IHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIu
cGF5bG9hZEdQUigpLCBhcmcyLnRhZ0dQUigpLCBhcmczLnBheWxvYWRHUFIoKSwgYXJnMy50YWdH
UFIoKSwgYXJnNCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CisgICAg
fQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRU9K
c3NKWiBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgSlNWYWx1ZVJlZ3MgYXJn
MywgR1BSUmVnIGFyZzQpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUoYXJnMSwgYXJnMiwgRUFCSV8zMkJJVF9EVU1NWV9BUkcgYXJnMy5wYXlsb2FkR1BS
KCksIGFyZzMudGFnR1BSKCksIGFyZzQpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVy
YXRpb24pOworICAgIH0KKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklU
T3BlcmF0aW9uX0VPU3ltSlogb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEpT
VmFsdWVSZWdzIGFyZzMsIEdQUlJlZyBhcmc0KQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIEVBQklfMzJCSVRfRFVNTVlfQVJHIGFy
ZzMucGF5bG9hZEdQUigpLCBhcmczLnRhZ0dQUigpLCBhcmc0KTsKKyAgICAgICAgcmV0dXJuIGFw
cGVuZENhbGwob3BlcmF0aW9uKTsKKyAgICB9CisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9w
ZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FT0pPT1ogb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgSlNW
YWx1ZVJlZ3MgYXJnMiwgR1BSUmVnIGFyZzMsIEdQUlJlZyBhcmc0LCBHUFJSZWcgYXJnNSkKKyAg
ICB7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcy
LnBheWxvYWRHUFIoKSwgYXJnMi50YWdHUFIoKSwgYXJnMywgYXJnNCwgYXJnNSk7CisgICAgICAg
IHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CisgICAgfQorICAgIEpJVENvbXBpbGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRU9Kc3NPT1ogb3BlcmF0aW9uLCBHUFJS
ZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcgYXJnNCwgR1BSUmVnIGFy
ZzUpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJn
MSwgYXJnMiwgYXJnMywgYXJnNCwgYXJnNSk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9w
ZXJhdGlvbik7CisgICAgfQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9K
SVRPcGVyYXRpb25fRU9TeW1PT1ogb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIs
IEdQUlJlZyBhcmczLCBHUFJSZWcgYXJnNCwgR1BSUmVnIGFyZzUpCisgICAgeworICAgICAgICBt
X2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMywgYXJnNCwg
YXJnNSk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CisgICAgfQogICAg
IEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRU9KSVVpIG9w
ZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEpTVmFsdWVSZWdzIGFyZzIsIFVuaXF1ZWRTdHJpbmdJbXBs
KiBpbXBsLCB1bnNpZ25lZCB2YWx1ZSkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLnBheWxvYWRHUFIoKSwgYXJnMi50YWdHUFIoKSwg
VHJ1c3RlZEltbVB0cihpbXBsKSwgVHJ1c3RlZEltbTMyKHZhbHVlKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCBh
MjJkYmVhZGU3MTA4Zjc1NTk2NjZiOTNmOWFlYzdlZjUwYzEzOTViLi40NmYxOWI2NGFkNjQxYzZj
MzY5MDliMzI0NDNhYThiNWUwOGY3ZmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTQ0OTEsNiArNDQ5MSwxMTEg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVh
azsKICAgICB9CiAKKyAgICBjYXNlIERlZmluZURhdGFQcm9wZXJ0eTogeworICAgICAgICBzdGF0
aWNfYXNzZXJ0KEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzID49IDYsICJXZSBhcmUgYXNzdW1p
bmcgd2UgaGF2ZSBlbm91Z2ggcmVnaXN0ZXJzIHRvIG1ha2UgdGhpcyBjYWxsIHdpdGhvdXQgaW5j
cmVtZW50YWxseSBzZXR0aW5nIHVwIHRoZSBhcmd1bWVudHMuIik7CisKKyAgICAgICAgU3BlY3Vs
YXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBtX2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUs
IDApKTsKKyAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOworCisgICAgICAgIEpT
VmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwg
MikpOworICAgICAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygp
OworCisgICAgICAgIFNwZWN1bGF0ZUludDMyT3BlcmFuZCBhdHRyaWJ1dGVzKHRoaXMsIG1faml0
LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMykpOworICAgICAgICBHUFJSZWcgYXR0cmlidXRl
c0dQUiA9IGF0dHJpYnV0ZXMuZ3ByKCk7CisKKyAgICAgICAgRWRnZSYgcHJvcGVydHlFZGdlID0g
bV9qaXQuZ3JhcGgoKS52YXJBcmdDaGlsZChub2RlLCAxKTsKKyAgICAgICAgc3dpdGNoIChwcm9w
ZXJ0eUVkZ2UudXNlS2luZCgpKSB7CisgICAgICAgIGNhc2UgU3RyaW5nVXNlOiB7CisgICAgICAg
ICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBwcm9wZXJ0eSh0aGlzLCBwcm9wZXJ0eUVkZ2UpOwor
ICAgICAgICAgICAgR1BSUmVnIHByb3BlcnR5R1BSID0gcHJvcGVydHkuZ3ByKCk7CisgICAgICAg
ICAgICBzcGVjdWxhdGVTdHJpbmcocHJvcGVydHlFZGdlLCBwcm9wZXJ0eUdQUik7CisKKyAgICAg
ICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvbkRlZmluZURhdGFQcm9wZXJ0eVN0cmluZywgTm9SZXN1bHQsIGJhc2VHUFIsIHByb3BlcnR5
R1BSLCB2YWx1ZVJlZ3MsIGF0dHJpYnV0ZXNHUFIpOworICAgICAgICAgICAgbV9qaXQuZXhjZXB0
aW9uQ2hlY2soKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2Ug
U3ltYm9sVXNlOiB7CisgICAgICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBwcm9wZXJ0eSh0
aGlzLCBwcm9wZXJ0eUVkZ2UpOworICAgICAgICAgICAgR1BSUmVnIHByb3BlcnR5R1BSID0gcHJv
cGVydHkuZ3ByKCk7CisgICAgICAgICAgICBzcGVjdWxhdGVTeW1ib2wocHJvcGVydHlFZGdlLCBw
cm9wZXJ0eUdQUik7CisKKyAgICAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CisgICAgICAgICAg
ICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlZmluZURhdGFQcm9wZXJ0eVN5bWJvbCwgTm9SZXN1
bHQsIGJhc2VHUFIsIHByb3BlcnR5R1BSLCB2YWx1ZVJlZ3MsIGF0dHJpYnV0ZXNHUFIpOworICAg
ICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisgICAgICAgIGNhc2UgVW50eXBlZFVzZTogeworICAgICAgICAgICAgSlNWYWx1ZU9w
ZXJhbmQgcHJvcGVydHkodGhpcywgcHJvcGVydHlFZGdlKTsKKyAgICAgICAgICAgIEpTVmFsdWVS
ZWdzIHByb3BlcnR5UmVncyA9IHByb3BlcnR5LmpzVmFsdWVSZWdzKCk7CisKKyAgICAgICAgICAg
IGZsdXNoUmVnaXN0ZXJzKCk7CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRl
ZmluZURhdGFQcm9wZXJ0eSwgTm9SZXN1bHQsIGJhc2VHUFIsIHByb3BlcnR5UmVncywgdmFsdWVS
ZWdzLCBhdHRyaWJ1dGVzR1BSKTsKKyAgICAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorCisgICAgICAg
IG5vUmVzdWx0KG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBjYXNlIERlZmlu
ZUFjY2Vzc29yUHJvcGVydHk6IHsKKyAgICAgICAgc3RhdGljX2Fzc2VydChHUFJJbmZvOjpudW1i
ZXJPZlJlZ2lzdGVycyA+PSA2LCAiV2UgYXJlIGFzc3VtaW5nIHdlIGhhdmUgZW5vdWdoIHJlZ2lz
dGVycyB0byBtYWtlIHRoaXMgY2FsbCB3aXRob3V0IGluY3JlbWVudGFsbHkgc2V0dGluZyB1cCB0
aGUgYXJndW1lbnRzLiIpOworCisgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhp
cywgbV9qaXQuZ3JhcGgoKS52YXJBcmdDaGlsZChub2RlLCAwKSk7CisgICAgICAgIEdQUlJlZyBi
YXNlR1BSID0gYmFzZS5ncHIoKTsKKworICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBnZXR0
ZXIodGhpcywgbV9qaXQuZ3JhcGgoKS52YXJBcmdDaGlsZChub2RlLCAyKSk7CisgICAgICAgIEdQ
UlJlZyBnZXR0ZXJHUFIgPSBnZXR0ZXIuZ3ByKCk7CisKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9w
ZXJhbmQgc2V0dGVyKHRoaXMsIG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMykpOwor
ICAgICAgICBHUFJSZWcgc2V0dGVyR1BSID0gc2V0dGVyLmdwcigpOworCisgICAgICAgIFNwZWN1
bGF0ZUludDMyT3BlcmFuZCBhdHRyaWJ1dGVzKHRoaXMsIG1faml0LmdyYXBoKCkudmFyQXJnQ2hp
bGQobm9kZSwgNCkpOworICAgICAgICBHUFJSZWcgYXR0cmlidXRlc0dQUiA9IGF0dHJpYnV0ZXMu
Z3ByKCk7CisKKyAgICAgICAgRWRnZSYgcHJvcGVydHlFZGdlID0gbV9qaXQuZ3JhcGgoKS52YXJB
cmdDaGlsZChub2RlLCAxKTsKKyAgICAgICAgc3dpdGNoIChwcm9wZXJ0eUVkZ2UudXNlS2luZCgp
KSB7CisgICAgICAgIGNhc2UgU3RyaW5nVXNlOiB7CisgICAgICAgICAgICBTcGVjdWxhdGVDZWxs
T3BlcmFuZCBwcm9wZXJ0eSh0aGlzLCBwcm9wZXJ0eUVkZ2UpOworICAgICAgICAgICAgR1BSUmVn
IHByb3BlcnR5R1BSID0gcHJvcGVydHkuZ3ByKCk7CisgICAgICAgICAgICBzcGVjdWxhdGVTdHJp
bmcocHJvcGVydHlFZGdlLCBwcm9wZXJ0eUdQUik7CisKKyAgICAgICAgICAgIGZsdXNoUmVnaXN0
ZXJzKCk7CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlZmluZUFjY2Vzc29y
UHJvcGVydHlTdHJpbmcsIE5vUmVzdWx0LCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgZ2V0dGVyR1BS
LCBzZXR0ZXJHUFIsIGF0dHJpYnV0ZXNHUFIpOworICAgICAgICAgICAgbV9qaXQuZXhjZXB0aW9u
Q2hlY2soKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgU3lt
Ym9sVXNlOiB7CisgICAgICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBwcm9wZXJ0eSh0aGlz
LCBwcm9wZXJ0eUVkZ2UpOworICAgICAgICAgICAgR1BSUmVnIHByb3BlcnR5R1BSID0gcHJvcGVy
dHkuZ3ByKCk7CisgICAgICAgICAgICBzcGVjdWxhdGVTeW1ib2wocHJvcGVydHlFZGdlLCBwcm9w
ZXJ0eUdQUik7CisKKyAgICAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CisgICAgICAgICAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlZmluZUFjY2Vzc29yUHJvcGVydHlTeW1ib2wsIE5vUmVz
dWx0LCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgZ2V0dGVyR1BSLCBzZXR0ZXJHUFIsIGF0dHJpYnV0
ZXNHUFIpOworICAgICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgVW50eXBlZFVzZTogeworICAgICAgICAg
ICAgSlNWYWx1ZU9wZXJhbmQgcHJvcGVydHkodGhpcywgcHJvcGVydHlFZGdlKTsKKyAgICAgICAg
ICAgIEpTVmFsdWVSZWdzIHByb3BlcnR5R1BSID0gcHJvcGVydHkuanNWYWx1ZVJlZ3MoKTsKKwor
ICAgICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAgICAgICAgICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eSwgTm9SZXN1bHQsIGJhc2VHUFIsIHByb3Bl
cnR5R1BSLCBnZXR0ZXJHUFIsIHNldHRlckdQUiwgYXR0cmlidXRlc0dQUik7CisgICAgICAgICAg
ICBtX2ppdC5leGNlcHRpb25DaGVjaygpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
KyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgICAgIH0KKworICAgICAgICBub1Jlc3VsdChub2RlKTsKKyAgICAgICAgYnJlYWs7
CisgICAgfQorCiAgICAgY2FzZSBHZXRHbG9iYWxMZXhpY2FsVmFyaWFibGU6CiAgICAgY2FzZSBH
ZXRHbG9iYWxWYXI6IHsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdFBheWxvYWQodGhpcyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
NjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cAppbmRleCBhYjI4ODYyYzE2MjY5NDMzNjJjMWE1NTdiYmVlMzIwZWQzZjNkNGMxLi5hNzRmNzlh
ZjFiOTZhNzBhZDY0ODhlYzMxODBiNWMxN2NkY2NhMjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTQ0NDgsNiArNDQ0OCwx
MTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBi
cmVhazsKICAgICB9CiAKKyAgICBjYXNlIERlZmluZURhdGFQcm9wZXJ0eTogeworICAgICAgICBz
dGF0aWNfYXNzZXJ0KEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzID49IDQsICJXZSBhcmUgYXNz
dW1pbmcgd2UgaGF2ZSBlbm91Z2ggcmVnaXN0ZXJzIHRvIG1ha2UgdGhpcyBjYWxsIHdpdGhvdXQg
aW5jcmVtZW50YWxseSBzZXR0aW5nIHVwIHRoZSBhcmd1bWVudHMuIik7CisKKyAgICAgICAgU3Bl
Y3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBtX2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5v
ZGUsIDApKTsKKyAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOworCisgICAgICAg
IEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9k
ZSwgMikpOworICAgICAgICBHUFJSZWcgdmFsdWVHUFIgPSB2YWx1ZS5ncHIoKTsKKworICAgICAg
ICBTcGVjdWxhdGVJbnQzMk9wZXJhbmQgYXR0cmlidXRlcyh0aGlzLCBtX2ppdC5ncmFwaCgpLnZh
ckFyZ0NoaWxkKG5vZGUsIDMpKTsKKyAgICAgICAgR1BSUmVnIGF0dHJpYnV0ZXNHUFIgPSBhdHRy
aWJ1dGVzLmdwcigpOworCisgICAgICAgIEVkZ2UmIHByb3BlcnR5RWRnZSA9IG1faml0LmdyYXBo
KCkudmFyQXJnQ2hpbGQobm9kZSwgMSk7CisgICAgICAgIHN3aXRjaCAocHJvcGVydHlFZGdlLnVz
ZUtpbmQoKSkgeworICAgICAgICBjYXNlIFN0cmluZ1VzZTogeworICAgICAgICAgICAgU3BlY3Vs
YXRlQ2VsbE9wZXJhbmQgcHJvcGVydHkodGhpcywgcHJvcGVydHlFZGdlKTsKKyAgICAgICAgICAg
IEdQUlJlZyBwcm9wZXJ0eUdQUiA9IHByb3BlcnR5LmdwcigpOworICAgICAgICAgICAgc3BlY3Vs
YXRlU3RyaW5nKHByb3BlcnR5RWRnZSwgcHJvcGVydHlHUFIpOworCisgICAgICAgICAgICBmbHVz
aFJlZ2lzdGVycygpOworICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWZpbmVE
YXRhUHJvcGVydHlTdHJpbmcsIE5vUmVzdWx0LCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgdmFsdWVH
UFIsIGF0dHJpYnV0ZXNHUFIpOworICAgICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgU3ltYm9sVXNlOiB7
CisgICAgICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBwcm9wZXJ0eSh0aGlzLCBwcm9wZXJ0
eUVkZ2UpOworICAgICAgICAgICAgR1BSUmVnIHByb3BlcnR5R1BSID0gcHJvcGVydHkuZ3ByKCk7
CisgICAgICAgICAgICBzcGVjdWxhdGVTeW1ib2wocHJvcGVydHlFZGdlLCBwcm9wZXJ0eUdQUik7
CisKKyAgICAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CisgICAgICAgICAgICBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvbkRlZmluZURhdGFQcm9wZXJ0eVN5bWJvbCwgTm9SZXN1bHQsIGJhc2VHUFIs
IHByb3BlcnR5R1BSLCB2YWx1ZUdQUiwgYXR0cmlidXRlc0dQUik7CisgICAgICAgICAgICBtX2pp
dC5leGNlcHRpb25DaGVjaygpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAg
ICAgY2FzZSBVbnR5cGVkVXNlOiB7CisgICAgICAgICAgICBKU1ZhbHVlT3BlcmFuZCBwcm9wZXJ0
eSh0aGlzLCBwcm9wZXJ0eUVkZ2UpOworICAgICAgICAgICAgR1BSUmVnIHByb3BlcnR5R1BSID0g
cHJvcGVydHkuZ3ByKCk7CisKKyAgICAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CisgICAgICAg
ICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlZmluZURhdGFQcm9wZXJ0eSwgTm9SZXN1bHQs
IGJhc2VHUFIsIHByb3BlcnR5R1BSLCB2YWx1ZUdQUiwgYXR0cmlidXRlc0dQUik7CisgICAgICAg
ICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgIH0KKworICAgICAgICBub1Jlc3VsdChub2RlKTsKKyAgICAgICAgYnJl
YWs7CisgICAgfQorCisgICAgY2FzZSBEZWZpbmVBY2Nlc3NvclByb3BlcnR5OiB7CisgICAgICAg
IHN0YXRpY19hc3NlcnQoR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMgPj0gNSwgIldlIGFyZSBh
c3N1bWluZyB3ZSBoYXZlIGVub3VnaCByZWdpc3RlcnMgdG8gbWFrZSB0aGlzIGNhbGwgd2l0aG91
dCBpbmNyZW1lbnRhbGx5IHNldHRpbmcgdXAgdGhlIGFyZ3VtZW50cy4iKTsKKworICAgICAgICBT
cGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQo
bm9kZSwgMCkpOworICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CisKKyAgICAg
ICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgZ2V0dGVyKHRoaXMsIG1faml0LmdyYXBoKCkudmFyQXJn
Q2hpbGQobm9kZSwgMikpOworICAgICAgICBHUFJSZWcgZ2V0dGVyR1BSID0gZ2V0dGVyLmdwcigp
OworCisgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHNldHRlcih0aGlzLCBtX2ppdC5ncmFw
aCgpLnZhckFyZ0NoaWxkKG5vZGUsIDMpKTsKKyAgICAgICAgR1BSUmVnIHNldHRlckdQUiA9IHNl
dHRlci5ncHIoKTsKKworICAgICAgICBTcGVjdWxhdGVJbnQzMk9wZXJhbmQgYXR0cmlidXRlcyh0
aGlzLCBtX2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIDQpKTsKKyAgICAgICAgR1BSUmVn
IGF0dHJpYnV0ZXNHUFIgPSBhdHRyaWJ1dGVzLmdwcigpOworCisgICAgICAgIEVkZ2UmIHByb3Bl
cnR5RWRnZSA9IG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMSk7CisgICAgICAgIHN3
aXRjaCAocHJvcGVydHlFZGdlLnVzZUtpbmQoKSkgeworICAgICAgICBjYXNlIFN0cmluZ1VzZTog
eworICAgICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgcHJvcGVydHkodGhpcywgcHJvcGVy
dHlFZGdlKTsKKyAgICAgICAgICAgIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IHByb3BlcnR5Lmdwcigp
OworICAgICAgICAgICAgc3BlY3VsYXRlU3RyaW5nKHByb3BlcnR5RWRnZSwgcHJvcGVydHlHUFIp
OworCisgICAgICAgICAgICBmbHVzaFJlZ2lzdGVycygpOworICAgICAgICAgICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25EZWZpbmVBY2Nlc3NvclByb3BlcnR5U3RyaW5nLCBOb1Jlc3VsdCwgYmFz
ZUdQUiwgcHJvcGVydHlHUFIsIGdldHRlckdQUiwgc2V0dGVyR1BSLCBhdHRyaWJ1dGVzR1BSKTsK
KyAgICAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorICAgICAgICBjYXNlIFN5bWJvbFVzZTogeworICAgICAgICAgICAgU3BlY3Vs
YXRlQ2VsbE9wZXJhbmQgcHJvcGVydHkodGhpcywgcHJvcGVydHlFZGdlKTsKKyAgICAgICAgICAg
IEdQUlJlZyBwcm9wZXJ0eUdQUiA9IHByb3BlcnR5LmdwcigpOworICAgICAgICAgICAgc3BlY3Vs
YXRlU3ltYm9sKHByb3BlcnR5RWRnZSwgcHJvcGVydHlHUFIpOworCisgICAgICAgICAgICBmbHVz
aFJlZ2lzdGVycygpOworICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWZpbmVB
Y2Nlc3NvclByb3BlcnR5U3ltYm9sLCBOb1Jlc3VsdCwgYmFzZUdQUiwgcHJvcGVydHlHUFIsIGdl
dHRlckdQUiwgc2V0dGVyR1BSLCBhdHRyaWJ1dGVzR1BSKTsKKyAgICAgICAgICAgIG1faml0LmV4
Y2VwdGlvbkNoZWNrKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBj
YXNlIFVudHlwZWRVc2U6IHsKKyAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHByb3BlcnR5KHRo
aXMsIHByb3BlcnR5RWRnZSk7CisgICAgICAgICAgICBHUFJSZWcgcHJvcGVydHlHUFIgPSBwcm9w
ZXJ0eS5ncHIoKTsKKworICAgICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAgICAgICAgICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eSwgTm9SZXN1bHQs
IGJhc2VHUFIsIHByb3BlcnR5R1BSLCBnZXR0ZXJHUFIsIHNldHRlckdQUiwgYXR0cmlidXRlc0dQ
Uik7CisgICAgICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKworICAgICAgICBub1Jlc3VsdChub2RlKTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBHZXRHbG9iYWxMZXhpY2FsVmFyaWFi
bGU6CiAgICAgY2FzZSBHZXRHbG9iYWxWYXI6IHsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3Vs
dCh0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJp
bGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNw
cAppbmRleCBjYWQ0NWZkYmFiZTkwZjQ0OTM0ZDE0YTRiZTNiZDEwZmM4Mjc2NDQ5Li5hMWNmODA4
ODUyM2JkZDM3Y2IyMGRmMDgxYjRhMDFkZDFhYmMwZDY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCkBAIC0yNjIsNiArMjYyLDggQEAgaW5saW5l
IENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBDb21wYXJl
R3JlYXRlcjoKICAgICBjYXNlIENvbXBhcmVHcmVhdGVyRXE6CiAgICAgY2FzZSBDb21wYXJlU3Ry
aWN0RXE6CisgICAgY2FzZSBEZWZpbmVEYXRhUHJvcGVydHk6CisgICAgY2FzZSBEZWZpbmVBY2Nl
c3NvclByb3BlcnR5OgogICAgICAgICAvLyBUaGVzZSBhcmUgT0suCiAgICAgICAgIGJyZWFrOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXgg
YTA4NTU1NjRhZDgxNDdjMjQ1MmNjZGYwNWExNzJhNDY5ZTI0M2E5Yi4uYzA3YTM2MmFmMDYxNTgz
YmYxNmQyNjE3NTcyOTBlNzEyNWNhN2YxZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtNjkwLDYgKzY5MCwxMiBAQCBjbGFzcyBMb3dlckRG
R1RvQjMgewogICAgICAgICBjYXNlIFB1dEJ5VmFsV2l0aFRoaXM6CiAgICAgICAgICAgICBjb21w
aWxlUHV0QnlWYWxXaXRoVGhpcygpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
RGVmaW5lRGF0YVByb3BlcnR5OgorICAgICAgICAgICAgY29tcGlsZURlZmluZURhdGFQcm9wZXJ0
eSgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRGVmaW5lQWNjZXNzb3JQcm9w
ZXJ0eToKKyAgICAgICAgICAgIGNvbXBpbGVEZWZpbmVBY2Nlc3NvclByb3BlcnR5KCk7CisgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBBcnJheVB1c2g6CiAgICAgICAgICAgICBjb21w
aWxlQXJyYXlQdXNoKCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTI3NTksNiArMjc2NSw2MSBA
QCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICB2bUNhbGwoVm9pZCwgbV9vdXQub3BlcmF0
aW9uKG1fZ3JhcGguaXNTdHJpY3RNb2RlRm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKSA/IG9w
ZXJhdGlvblB1dEJ5VmFsV2l0aFRoaXNTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbFdpdGhUaGlz
KSwKICAgICAgICAgICAgIG1fY2FsbEZyYW1lLCBiYXNlLCB0aGlzVmFsdWUsIHByb3BlcnR5LCB2
YWx1ZSk7CiAgICAgfQorCisgICAgdm9pZCBjb21waWxlRGVmaW5lRGF0YVByb3BlcnR5KCkKKyAg
ICB7CisgICAgICAgIExWYWx1ZSBiYXNlID0gbG93Q2VsbChtX2dyYXBoLnZhckFyZ0NoaWxkKG1f
bm9kZSwgMCkpOworICAgICAgICBMVmFsdWUgdmFsdWUgID0gbG93SlNWYWx1ZShtX2dyYXBoLnZh
ckFyZ0NoaWxkKG1fbm9kZSwgMikpOworICAgICAgICBMVmFsdWUgYXR0cmlidXRlcyA9IGxvd0lu
dDMyKG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCAzKSk7CisgICAgICAgIEVkZ2UmIHByb3Bl
cnR5RWRnZSA9IG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCAxKTsKKyAgICAgICAgc3dpdGNo
IChwcm9wZXJ0eUVkZ2UudXNlS2luZCgpKSB7CisgICAgICAgIGNhc2UgU3RyaW5nVXNlOiB7Cisg
ICAgICAgICAgICBMVmFsdWUgcHJvcGVydHkgPSBsb3dTdHJpbmcocHJvcGVydHlFZGdlKTsKKyAg
ICAgICAgICAgIHZtQ2FsbChWb2lkLCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uRGVmaW5lRGF0
YVByb3BlcnR5U3RyaW5nKSwgbV9jYWxsRnJhbWUsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSwgYXR0
cmlidXRlcyk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFN5
bWJvbFVzZTogeworICAgICAgICAgICAgTFZhbHVlIHByb3BlcnR5ID0gbG93U3ltYm9sKHByb3Bl
cnR5RWRnZSk7CisgICAgICAgICAgICB2bUNhbGwoVm9pZCwgbV9vdXQub3BlcmF0aW9uKG9wZXJh
dGlvbkRlZmluZURhdGFQcm9wZXJ0eVN5bWJvbCksIG1fY2FsbEZyYW1lLCBiYXNlLCBwcm9wZXJ0
eSwgdmFsdWUsIGF0dHJpYnV0ZXMpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAg
ICAgICAgY2FzZSBVbnR5cGVkVXNlOiB7CisgICAgICAgICAgICBMVmFsdWUgcHJvcGVydHkgPSBs
b3dKU1ZhbHVlKHByb3BlcnR5RWRnZSk7CisgICAgICAgICAgICB2bUNhbGwoVm9pZCwgbV9vdXQu
b3BlcmF0aW9uKG9wZXJhdGlvbkRlZmluZURhdGFQcm9wZXJ0eSksIG1fY2FsbEZyYW1lLCBiYXNl
LCBwcm9wZXJ0eSwgdmFsdWUsIGF0dHJpYnV0ZXMpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIGNvbXBpbGVEZWZpbmVBY2Nl
c3NvclByb3BlcnR5KCkKKyAgICB7CisgICAgICAgIExWYWx1ZSBiYXNlID0gbG93Q2VsbChtX2dy
YXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMCkpOworICAgICAgICBMVmFsdWUgZ2V0dGVyID0gbG93
Q2VsbChtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMikpOworICAgICAgICBMVmFsdWUgc2V0
dGVyID0gbG93Q2VsbChtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMykpOworICAgICAgICBM
VmFsdWUgYXR0cmlidXRlcyA9IGxvd0ludDMyKG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCA0
KSk7CisgICAgICAgIEVkZ2UmIHByb3BlcnR5RWRnZSA9IG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9u
b2RlLCAxKTsKKyAgICAgICAgc3dpdGNoIChwcm9wZXJ0eUVkZ2UudXNlS2luZCgpKSB7CisgICAg
ICAgIGNhc2UgU3RyaW5nVXNlOiB7CisgICAgICAgICAgICBMVmFsdWUgcHJvcGVydHkgPSBsb3dT
dHJpbmcocHJvcGVydHlFZGdlKTsKKyAgICAgICAgICAgIHZtQ2FsbChWb2lkLCBtX291dC5vcGVy
YXRpb24ob3BlcmF0aW9uRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eVN0cmluZyksIG1fY2FsbEZyYW1l
LCBiYXNlLCBwcm9wZXJ0eSwgZ2V0dGVyLCBzZXR0ZXIsIGF0dHJpYnV0ZXMpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBTeW1ib2xVc2U6IHsKKyAgICAgICAg
ICAgIExWYWx1ZSBwcm9wZXJ0eSA9IGxvd1N5bWJvbChwcm9wZXJ0eUVkZ2UpOworICAgICAgICAg
ICAgdm1DYWxsKFZvaWQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25EZWZpbmVBY2Nlc3NvclBy
b3BlcnR5U3ltYm9sKSwgbV9jYWxsRnJhbWUsIGJhc2UsIHByb3BlcnR5LCBnZXR0ZXIsIHNldHRl
ciwgYXR0cmlidXRlcyk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBj
YXNlIFVudHlwZWRVc2U6IHsKKyAgICAgICAgICAgIExWYWx1ZSBwcm9wZXJ0eSA9IGxvd0pTVmFs
dWUocHJvcGVydHlFZGdlKTsKKyAgICAgICAgICAgIHZtQ2FsbChWb2lkLCBtX291dC5vcGVyYXRp
b24ob3BlcmF0aW9uRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eSksIG1fY2FsbEZyYW1lLCBiYXNlLCBw
cm9wZXJ0eSwgZ2V0dGVyLCBzZXR0ZXIsIGF0dHJpYnV0ZXMpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICB9CiAgICAgCiAgICAgdm9pZCBjb21waWxl
UHV0QnlJZCgpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9D
Q2FsbEhlbHBlcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMu
Y3BwCmluZGV4IDc1ZDE1YTYyM2M3MmM0NGFkYzRhNGI5YzEzZjg1ODZmMjcyMjZiODUuLjNjM2Rm
NjE4Zjk5ZmViOTQxNTQ0MDA5OTg1NWRlMWZiYWY1Y2I5ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0NDYWxsSGVscGVycy5jcHAKQEAgLTY4LDEwNyArNjgsNiBAQCB2b2lkIENDYWxs
SGVscGVyczo6ZW5zdXJlU2hhZG93Q2hpY2tlblBhY2tldChHUFJSZWcgc2hhZG93UGFja2V0LCBH
UFJSZWcgc2NyYXRjaAogICAgIHN0b3JlUHRyKHNjcmF0Y2gyLCBBZGRyZXNzKHNjcmF0Y2gxTm9u
QXJnR1BSKSk7CiB9CiAKLSNpZiBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTID49IDQKLXZv
aWQgQ0NhbGxIZWxwZXJzOjpzZXR1cEZvdXJTdHViQXJnc0dQUihHUFJSZWcgZGVzdEEsIEdQUlJl
ZyBkZXN0QiwgR1BSUmVnIGRlc3RDLCBHUFJSZWcgZGVzdEQsIEdQUlJlZyBzcmNBLCBHUFJSZWcg
c3JjQiwgR1BSUmVnIHNyY0MsIEdQUlJlZyBzcmNEKQotewotICAgIGlmICghQVNTRVJUX0RJU0FC
TEVEKSB7Ci0gICAgICAgIFJlZ2lzdGVyU2V0IGRlc3RpbmF0aW9ucyhkZXN0QSwgZGVzdEIsIGRl
c3RDLCBkZXN0RCk7Ci0gICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoZGVzdGluYXRpb25zLm51
bWJlck9mU2V0R1BScygpID09IDQsICJEZXN0aW5hdGlvbnMgc2hvdWxkIG5vdCBiZSBhbGlhc2Vk
LiIpOwotICAgIH0KLQotICAgIHR5cGVkZWYgc3RkOjpwYWlyPEdQUlJlZywgR1BSUmVnPiBSZWdQ
YWlyOwotICAgIFZlY3RvcjxSZWdQYWlyLCA0PiBwYWlyczsKLQotICAgIGlmIChzcmNBICE9IGRl
c3RBKQotICAgICAgICBwYWlycy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoc3JjQSwgZGVzdEEpKTsK
LSAgICBpZiAoc3JjQiAhPSBkZXN0QikKLSAgICAgICAgcGFpcnMuYXBwZW5kKHN0ZDo6bWFrZV9w
YWlyKHNyY0IsIGRlc3RCKSk7Ci0gICAgaWYgKHNyY0MgIT0gZGVzdEMpCi0gICAgICAgIHBhaXJz
LmFwcGVuZChzdGQ6Om1ha2VfcGFpcihzcmNDLCBkZXN0QykpOwotICAgIGlmIChzcmNEICE9IGRl
c3REKQotICAgICAgICBwYWlycy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoc3JjRCwgZGVzdEQpKTsK
LQotCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAotICAgIGF1dG8gbnVtVW5pcXVlU291cmNlcyA9IFsm
XSAoKSAtPiB1bnNpZ25lZCB7Ci0gICAgICAgIFJlZ2lzdGVyU2V0IHNldDsKLSAgICAgICAgZm9y
IChhdXRvJiBwYWlyIDogcGFpcnMpIHsKLSAgICAgICAgICAgIEdQUlJlZyBzb3VyY2UgPSBwYWly
LmZpcnN0OwotICAgICAgICAgICAgc2V0LnNldChzb3VyY2UpOwotICAgICAgICB9Ci0gICAgICAg
IHJldHVybiBzZXQubnVtYmVyT2ZTZXRHUFJzKCk7Ci0gICAgfTsKLQotICAgIGF1dG8gbnVtVW5p
cXVlRGVzdHMgPSBbJl0gKCkgLT4gdW5zaWduZWQgewotICAgICAgICBSZWdpc3RlclNldCBzZXQ7
Ci0gICAgICAgIGZvciAoYXV0byYgcGFpciA6IHBhaXJzKSB7Ci0gICAgICAgICAgICBHUFJSZWcg
ZGVzdCA9IHBhaXIuc2Vjb25kOwotICAgICAgICAgICAgc2V0LnNldChkZXN0KTsKLSAgICAgICAg
fQotICAgICAgICByZXR1cm4gc2V0Lm51bWJlck9mU2V0R1BScygpOwotICAgIH07Ci0jZW5kaWYK
LQotICAgIHdoaWxlIChwYWlycy5zaXplKCkpIHsKLSAgICAgICAgUmVnaXN0ZXJTZXQgZnJlZURl
c3RpbmF0aW9uczsKLSAgICAgICAgZm9yIChhdXRvJiBwYWlyIDogcGFpcnMpIHsKLSAgICAgICAg
ICAgIEdQUlJlZyBkZXN0ID0gcGFpci5zZWNvbmQ7Ci0gICAgICAgICAgICBmcmVlRGVzdGluYXRp
b25zLnNldChkZXN0KTsKLSAgICAgICAgfQotICAgICAgICBmb3IgKGF1dG8mIHBhaXIgOiBwYWly
cykgewotICAgICAgICAgICAgR1BSUmVnIHNvdXJjZSA9IHBhaXIuZmlyc3Q7Ci0gICAgICAgICAg
ICBmcmVlRGVzdGluYXRpb25zLmNsZWFyKHNvdXJjZSk7Ci0gICAgICAgIH0KLQotICAgICAgICBp
ZiAoZnJlZURlc3RpbmF0aW9ucy5udW1iZXJPZlNldEdQUnMoKSkgewotICAgICAgICAgICAgYm9v
bCBtYWRlTW92ZSA9IGZhbHNlOwotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IHBhaXJzLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgYXV0byYgcGFpciA9IHBhaXJz
W2ldOwotICAgICAgICAgICAgICAgIEdQUlJlZyBzb3VyY2UgPSBwYWlyLmZpcnN0OwotICAgICAg
ICAgICAgICAgIEdQUlJlZyBkZXN0ID0gcGFpci5zZWNvbmQ7Ci0gICAgICAgICAgICAgICAgaWYg
KGZyZWVEZXN0aW5hdGlvbnMuZ2V0KGRlc3QpKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1vdmUo
c291cmNlLCBkZXN0KTsKLSAgICAgICAgICAgICAgICAgICAgcGFpcnMucmVtb3ZlKGkpOwotICAg
ICAgICAgICAgICAgICAgICBtYWRlTW92ZSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIEFTU0VS
VF9VTlVTRUQobWFkZU1vdmUsIG1hZGVNb3ZlKTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAg
ICAgICB9Ci0KLSAgICAgICAgQVNTRVJUKG51bVVuaXF1ZURlc3RzKCkgPT0gbnVtVW5pcXVlU291
cmNlcygpKTsKLSAgICAgICAgQVNTRVJUKG51bVVuaXF1ZURlc3RzKCkgPT0gcGFpcnMuc2l6ZSgp
KTsKLSAgICAgICAgLy8gVGhlIHNldCBvZiBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIHJlZ2lzdGVy
cyBhcmUgZXF1aXZhbGVudCBzZXRzLiBUaGlzIG1lYW5zIHdlIGRvbid0IGhhdmUKLSAgICAgICAg
Ly8gYW55IGZyZWUgZGVzdGluYXRpb24gcmVnaXN0ZXJzIHRoYXQgd29uJ3QgYWxzbyBjbG9iYmVy
IGEgc291cmNlLiBXZSBnZXQgYXJvdW5kIHRoaXMgYnkKLSAgICAgICAgLy8gZXhjaGFuZ2luZyBy
ZWdpc3RlcnMuCi0KLSAgICAgICAgR1BSUmVnIHNvdXJjZSA9IHBhaXJzWzBdLmZpcnN0OwotICAg
ICAgICBHUFJSZWcgZGVzdCA9IHBhaXJzWzBdLnNlY29uZDsKLSAgICAgICAgc3dhcChzb3VyY2Us
IGRlc3QpOwotICAgICAgICBwYWlycy5yZW1vdmUoMCk7Ci0KLSAgICAgICAgR1BSUmVnIG5ld1Nv
dXJjZSA9IHNvdXJjZTsKLSAgICAgICAgZm9yIChhdXRvJiBwYWlyIDogcGFpcnMpIHsKLSAgICAg
ICAgICAgIEdQUlJlZyBzb3VyY2UgPSBwYWlyLmZpcnN0OwotICAgICAgICAgICAgaWYgKHNvdXJj
ZSA9PSBkZXN0KSB7Ci0gICAgICAgICAgICAgICAgcGFpci5maXJzdCA9IG5ld1NvdXJjZTsKLSAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAg
IC8vIFdlIG1heSBoYXZlIGludHJvZHVjZWQgcGFpcnMgdGhhdCBoYXZlIHRoZSBzYW1lIHNvdXJj
ZSBhbmQgZGVzdGluYXRpb24uIFJlbW92ZSB0aG9zZSBub3cuCi0gICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBwYWlycy5zaXplKCk7IGkrKykgewotICAgICAgICAgICAgYXV0byYgcGFp
ciA9IHBhaXJzW2ldOwotICAgICAgICAgICAgaWYgKHBhaXIuZmlyc3QgPT0gcGFpci5zZWNvbmQp
IHsKLSAgICAgICAgICAgICAgICBwYWlycy5yZW1vdmUoaSk7Ci0gICAgICAgICAgICAgICAgaS0t
OwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotfQotI2VuZGlmIC8vIE5VTUJFUl9P
Rl9BUkdVTUVOVF9SRUdJU1RFUlMgPj0gNAotCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlm
IC8vIEVOQUJMRShKSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0ND
YWxsSGVscGVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaApp
bmRleCA3OTQ1NDZiMGJkMjdhOTljMGMxOTg5YmUyZTQxMzE0MzRkYTQ4ZmFlLi5mNzExMTg5M2My
Y2E3OWQxMWUxZjAxZDJiOGQ5NTM0OThlMjJmNjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvQ0NhbGxIZWxwZXJzLmgKQEAgLTk4Nyw3ICs5ODcsMTQgQEAgY2xhc3MgQ0NhbGxIZWxwZXJz
IDogcHVibGljIEFzc2VtYmx5SGVscGVycyB7CiAgICAgICAgICAgICBzd2FwKGRlc3RCLCBkZXN0
Qyk7CiAgICAgfQogCi0gICAgdm9pZCBzZXR1cEZvdXJTdHViQXJnc0dQUihHUFJSZWcgZGVzdEEs
IEdQUlJlZyBkZXN0QiwgR1BSUmVnIGRlc3RDLCBHUFJSZWcgZGVzdEQsIEdQUlJlZyBzcmNBLCBH
UFJSZWcgc3JjQiwgR1BSUmVnIHNyY0MsIEdQUlJlZyBzcmNEKTsKKyAgICB2b2lkIHNldHVwRm91
clN0dWJBcmdzR1BSKEdQUlJlZyBkZXN0QSwgR1BSUmVnIGRlc3RCLCBHUFJSZWcgZGVzdEMsIEdQ
UlJlZyBkZXN0RCwgR1BSUmVnIHNyY0EsIEdQUlJlZyBzcmNCLCBHUFJSZWcgc3JjQywgR1BSUmVn
IHNyY0QpCisgICAgeworICAgICAgICBzZXR1cFN0dWJBcmdzR1BSPDQ+KHsgeyBkZXN0QSwgZGVz
dEIsIGRlc3RDLCBkZXN0RCB9IH0sIHsgeyBzcmNBLCBzcmNCLCBzcmNDLCBzcmNEIH0gfSk7Cisg
ICAgfQorICAgIHZvaWQgc2V0dXBGaXZlU3R1YkFyZ3NHUFIoR1BSUmVnIGRlc3RBLCBHUFJSZWcg
ZGVzdEIsIEdQUlJlZyBkZXN0QywgR1BSUmVnIGRlc3RELCBHUFJSZWcgZGVzdEUsIEdQUlJlZyBz
cmNBLCBHUFJSZWcgc3JjQiwgR1BSUmVnIHNyY0MsIEdQUlJlZyBzcmNELCBHUFJSZWcgc3JjRSkK
KyAgICB7CisgICAgICAgIHNldHVwU3R1YkFyZ3NHUFI8NT4oeyB7IGRlc3RBLCBkZXN0QiwgZGVz
dEMsIGRlc3RELCBkZXN0RSB9IH0sIHsgeyBzcmNBLCBzcmNCLCBzcmNDLCBzcmNELCBzcmNFIH0g
fSk7CisgICAgfQogCiAjaWYgQ1BVKFg4Nl82NCkgfHwgQ1BVKEFSTTY0KQogICAgIHRlbXBsYXRl
PEZQUlJlZyBkZXN0QSwgRlBSUmVnIGRlc3RCPgpAQCAtMTYxNCw2ICsxNjIxLDEzIEBAIGNsYXNz
IENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewogICAgICAgICBzZXR1cEFy
Z3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CiAgICAgfQogCisgICAgQUxX
QVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwg
R1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcgYXJnNCwgR1BSUmVnIGFyZzUpCisgICAg
eworICAgICAgICBwb2tlKGFyZzUsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUICsgMSk7CisgICAgICAg
IHBva2UoYXJnNCwgUE9LRV9BUkdVTUVOVF9PRkZTRVQpOworICAgICAgICBzZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CisgICAgfQorCiAgICAgQUxXQVlTX0lO
TElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVn
IGFyZzIsIFRydXN0ZWRJbW1QdHIgYXJnMywgVHJ1c3RlZEltbTMyIGFyZzQpCiAgICAgewogICAg
ICAgICBwb2tlKGFyZzQsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUKTsKQEAgLTE3NjYsMTMgKzE3ODAs
NiBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJzIHsKICAgICAg
ICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwogICAgIH0K
IAotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BS
UmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVnIGFyZzQsIEdQUlJlZyBh
cmc1KQotICAgIHsKLSAgICAgICAgcG9rZShhcmc1LCBQT0tFX0FSR1VNRU5UX09GRlNFVCArIDEp
OwotICAgICAgICBwb2tlKGFyZzQsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUKTsKLSAgICAgICAgc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwotICAgIH0KLQogICAg
IEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFy
ZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVnIGFyZzQsIFRydXN0ZWRJbW0zMiBh
cmc1KQogICAgIHsKICAgICAgICAgcG9rZShhcmc1LCBQT0tFX0FSR1VNRU5UX09GRlNFVCArIDEp
OwpAQCAtMjE4NCw2ICsyMTkxLDEyIEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3Nl
bWJseUhlbHBlcnMgewogICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBH
UFJJbmZvOjphcmd1bWVudEdQUjApOwogICAgIH0KIAorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBz
ZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJS
ZWcgYXJnMywgR1BSUmVnIGFyZzQsIEdQUlJlZyBhcmc1KQorICAgIHsKKyAgICAgICAgc2V0dXBG
aXZlU3R1YkFyZ3NHUFIoR1BSSW5mbzo6YXJndW1lbnRHUFIxLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjIsIEdQUkluZm86OmFyZ3VtZW50R1BSMywgR1BSSW5mbzo6YXJndW1lbnRHUFI0LCBHUFJJbmZv
Ojphcmd1bWVudEdQUjUsIGFyZzEsIGFyZzIsIGFyZzMsIGFyZzQsIGFyZzUpOworICAgICAgICBt
b3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwor
ICAgIH0KKwogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoR1BSUmVnIGFyZzEsIFRydXN0ZWRJbW1QdHIgYXJnMiwgR1BSUmVnIGFyZzMsIEdQUlJlZyBh
cmc0KQogICAgIHsKICAgICAgICAgc2V0dXBTdHViQXJndW1lbnRzMTM0KGFyZzEsIGFyZzMsIGFy
ZzQpOwpAQCAtMjQ3Miw2ICsyNDg1LDEwNSBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMg
QXNzZW1ibHlIZWxwZXJzIHsKICAgICAgICAgLy8gUmVhZHkgZm9yIGEganVtcCEKICAgICAgICAg
bW92ZShuZXdGcmFtZVBvaW50ZXIsIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKICAgICB9CisKKyNp
ZiBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTID49IDQKKyAgICB0ZW1wbGF0ZTx1bnNpZ25l
ZCBOdW1iZXJPZlJlZ2lzdGVycz4KKyAgICB2b2lkIHNldHVwU3R1YkFyZ3NHUFIoc3RkOjphcnJh
eTxHUFJSZWcsIE51bWJlck9mUmVnaXN0ZXJzPiBkZXN0aW5hdGlvbnMsIHN0ZDo6YXJyYXk8R1BS
UmVnLCBOdW1iZXJPZlJlZ2lzdGVycz4gc291cmNlcykKKyAgICB7CisgICAgICAgIGlmICghQVNT
RVJUX0RJU0FCTEVEKSB7CisgICAgICAgICAgICBSZWdpc3RlclNldCBzZXQ7CisgICAgICAgICAg
ICBmb3IgKEdQUlJlZyBkZXN0IDogZGVzdGluYXRpb25zKQorICAgICAgICAgICAgICAgIHNldC5z
ZXQoZGVzdCk7CisgICAgICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKHNldC5udW1iZXJPZlNl
dEdQUnMoKSA9PSA0LCAiRGVzdGluYXRpb25zIHNob3VsZCBub3QgYmUgYWxpYXNlZC4iKTsKKyAg
ICAgICAgfQorCisgICAgICAgIHR5cGVkZWYgc3RkOjpwYWlyPEdQUlJlZywgR1BSUmVnPiBSZWdQ
YWlyOworICAgICAgICBWZWN0b3I8UmVnUGFpciwgTnVtYmVyT2ZSZWdpc3RlcnM+IHBhaXJzOwor
CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBOdW1iZXJPZlJlZ2lzdGVyczsgKytp
KSB7CisgICAgICAgICAgICBpZiAoc291cmNlc1tpXSAhPSBkZXN0aW5hdGlvbnNbaV0pCisgICAg
ICAgICAgICAgICAgcGFpcnMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKHNvdXJjZXNbaV0sIGRlc3Rp
bmF0aW9uc1tpXSkpOworICAgICAgICB9CisKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgICAg
IGF1dG8gbnVtVW5pcXVlU291cmNlcyA9IFsmXSAoKSAtPiB1bnNpZ25lZCB7CisgICAgICAgICAg
ICBSZWdpc3RlclNldCBzZXQ7CisgICAgICAgICAgICBmb3IgKGF1dG8mIHBhaXIgOiBwYWlycykg
eworICAgICAgICAgICAgICAgIEdQUlJlZyBzb3VyY2UgPSBwYWlyLmZpcnN0OworICAgICAgICAg
ICAgICAgIHNldC5zZXQoc291cmNlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVy
biBzZXQubnVtYmVyT2ZTZXRHUFJzKCk7CisgICAgICAgIH07CisKKyAgICAgICAgYXV0byBudW1V
bmlxdWVEZXN0cyA9IFsmXSAoKSAtPiB1bnNpZ25lZCB7CisgICAgICAgICAgICBSZWdpc3RlclNl
dCBzZXQ7CisgICAgICAgICAgICBmb3IgKGF1dG8mIHBhaXIgOiBwYWlycykgeworICAgICAgICAg
ICAgICAgIEdQUlJlZyBkZXN0ID0gcGFpci5zZWNvbmQ7CisgICAgICAgICAgICAgICAgc2V0LnNl
dChkZXN0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBzZXQubnVtYmVyT2ZT
ZXRHUFJzKCk7CisgICAgICAgIH07CisjZW5kaWYKKworICAgICAgICB3aGlsZSAocGFpcnMuc2l6
ZSgpKSB7CisgICAgICAgICAgICBSZWdpc3RlclNldCBmcmVlRGVzdGluYXRpb25zOworICAgICAg
ICAgICAgZm9yIChhdXRvJiBwYWlyIDogcGFpcnMpIHsKKyAgICAgICAgICAgICAgICBHUFJSZWcg
ZGVzdCA9IHBhaXIuc2Vjb25kOworICAgICAgICAgICAgICAgIGZyZWVEZXN0aW5hdGlvbnMuc2V0
KGRlc3QpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZm9yIChhdXRvJiBwYWlyIDogcGFp
cnMpIHsKKyAgICAgICAgICAgICAgICBHUFJSZWcgc291cmNlID0gcGFpci5maXJzdDsKKyAgICAg
ICAgICAgICAgICBmcmVlRGVzdGluYXRpb25zLmNsZWFyKHNvdXJjZSk7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIGlmIChmcmVlRGVzdGluYXRpb25zLm51bWJlck9mU2V0R1BScygpKSB7
CisgICAgICAgICAgICAgICAgYm9vbCBtYWRlTW92ZSA9IGZhbHNlOworICAgICAgICAgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwYWlycy5zaXplKCk7IGkrKykgeworICAgICAgICAg
ICAgICAgICAgICBhdXRvJiBwYWlyID0gcGFpcnNbaV07CisgICAgICAgICAgICAgICAgICAgIEdQ
UlJlZyBzb3VyY2UgPSBwYWlyLmZpcnN0OworICAgICAgICAgICAgICAgICAgICBHUFJSZWcgZGVz
dCA9IHBhaXIuc2Vjb25kOworICAgICAgICAgICAgICAgICAgICBpZiAoZnJlZURlc3RpbmF0aW9u
cy5nZXQoZGVzdCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1vdmUoc291cmNlLCBkZXN0
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhaXJzLnJlbW92ZShpKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIG1hZGVNb3ZlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIEFTU0VSVF9VTlVTRUQobWFkZU1vdmUsIG1hZGVNb3ZlKTsKKyAgICAgICAgICAgICAg
ICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgQVNTRVJUKG51bVVuaXF1
ZURlc3RzKCkgPT0gbnVtVW5pcXVlU291cmNlcygpKTsKKyAgICAgICAgICAgIEFTU0VSVChudW1V
bmlxdWVEZXN0cygpID09IHBhaXJzLnNpemUoKSk7CisgICAgICAgICAgICAvLyBUaGUgc2V0IG9m
IHNvdXJjZSBhbmQgZGVzdGluYXRpb24gcmVnaXN0ZXJzIGFyZSBlcXVpdmFsZW50IHNldHMuIFRo
aXMgbWVhbnMgd2UgZG9uJ3QgaGF2ZQorICAgICAgICAgICAgLy8gYW55IGZyZWUgZGVzdGluYXRp
b24gcmVnaXN0ZXJzIHRoYXQgd29uJ3QgYWxzbyBjbG9iYmVyIGEgc291cmNlLiBXZSBnZXQgYXJv
dW5kIHRoaXMgYnkKKyAgICAgICAgICAgIC8vIGV4Y2hhbmdpbmcgcmVnaXN0ZXJzLgorCisgICAg
ICAgICAgICBHUFJSZWcgc291cmNlID0gcGFpcnNbMF0uZmlyc3Q7CisgICAgICAgICAgICBHUFJS
ZWcgZGVzdCA9IHBhaXJzWzBdLnNlY29uZDsKKyAgICAgICAgICAgIHN3YXAoc291cmNlLCBkZXN0
KTsKKyAgICAgICAgICAgIHBhaXJzLnJlbW92ZSgwKTsKKworICAgICAgICAgICAgR1BSUmVnIG5l
d1NvdXJjZSA9IHNvdXJjZTsKKyAgICAgICAgICAgIGZvciAoYXV0byYgcGFpciA6IHBhaXJzKSB7
CisgICAgICAgICAgICAgICAgR1BSUmVnIHNvdXJjZSA9IHBhaXIuZmlyc3Q7CisgICAgICAgICAg
ICAgICAgaWYgKHNvdXJjZSA9PSBkZXN0KSB7CisgICAgICAgICAgICAgICAgICAgIHBhaXIuZmly
c3QgPSBuZXdTb3VyY2U7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gV2UgbWF5IGhhdmUgaW50cm9k
dWNlZCBwYWlycyB0aGF0IGhhdmUgdGhlIHNhbWUgc291cmNlIGFuZCBkZXN0aW5hdGlvbi4gUmVt
b3ZlIHRob3NlIG5vdy4KKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwYWly
cy5zaXplKCk7IGkrKykgeworICAgICAgICAgICAgICAgIGF1dG8mIHBhaXIgPSBwYWlyc1tpXTsK
KyAgICAgICAgICAgICAgICBpZiAocGFpci5maXJzdCA9PSBwYWlyLnNlY29uZCkgeworICAgICAg
ICAgICAgICAgICAgICBwYWlycy5yZW1vdmUoaSk7CisgICAgICAgICAgICAgICAgICAgIGktLTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisjZW5k
aWYgLy8gTlVNQkVSX09GX0FSR1VNRU5UX1JFR0lTVEVSUyA+PSA0CiAgICAgCiAgICAgLy8gVGhl
c2Ugb3BlcmF0aW9ucyBjbG9iYmVyIGFsbCB2b2xhdGlsZSByZWdpc3RlcnMuIFRoZXkgYXNzdW1l
IHRoYXQgdGhlcmUgaXMgcm9vbSBvbiB0aGUgdG9wIG9mCiAgICAgLy8gc3RhY2sgdG8gbWFyc2hh
bGwgY2FsbCBhcmd1bWVudHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXggMWFiZTdj
NDM0MTc0NjNmOTY5MTY1MjlhNmU2MTRlZGUwOWM3ZmQzOS4uMjM3ZDE5YTRiMDgyZjFjYjBlMDJj
MmVhNTc3Y2MxY2MzMTA3OTQzMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtMzIy
LDYgKzMyMiw4IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAg
REVGSU5FX09QKG9wX3B1dF9nZXR0ZXJfc2V0dGVyX2J5X2lkKQogICAgICAgICBERUZJTkVfT1Ao
b3BfcHV0X2dldHRlcl9ieV92YWwpCiAgICAgICAgIERFRklORV9PUChvcF9wdXRfc2V0dGVyX2J5
X3ZhbCkKKyAgICAgICAgREVGSU5FX09QKG9wX2RlZmluZV9kYXRhX3Byb3BlcnR5KQorICAgICAg
ICBERUZJTkVfT1Aob3BfZGVmaW5lX2FjY2Vzc29yX3Byb3BlcnR5KQogCiAgICAgICAgIERFRklO
RV9PUChvcF9yZXQpCiAgICAgICAgIERFRklORV9PUChvcF9yc2hpZnQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuaAppbmRleCAxYjc1ODVjZGY5ZWUxNmRiODA3ODRlYTg1NmE0ZjRkMGUwMWEyMDI1Li4z
NTdlODRkYWNhNGNlM2IwOTVlNzQyNzRjMmZjNTIwZjRjODkzMDU4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmgKQEAgLTU2Nyw2ICs1NjcsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9p
ZCBlbWl0X29wX3B1dF9nZXR0ZXJfc2V0dGVyX2J5X2lkKEluc3RydWN0aW9uKik7CiAgICAgICAg
IHZvaWQgZW1pdF9vcF9wdXRfZ2V0dGVyX2J5X3ZhbChJbnN0cnVjdGlvbiopOwogICAgICAgICB2
b2lkIGVtaXRfb3BfcHV0X3NldHRlcl9ieV92YWwoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9p
ZCBlbWl0X29wX2RlZmluZV9kYXRhX3Byb3BlcnR5KEluc3RydWN0aW9uKik7CisgICAgICAgIHZv
aWQgZW1pdF9vcF9kZWZpbmVfYWNjZXNzb3JfcHJvcGVydHkoSW5zdHJ1Y3Rpb24qKTsKICAgICAg
ICAgdm9pZCBlbWl0X29wX3JldChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3Bf
cnNoaWZ0KEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9zZXRfZnVuY3Rpb25f
bmFtZShJbnN0cnVjdGlvbiopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlv
bnMuaAppbmRleCA2NzI2NDA3NGVlNDdjYjE1MTYxZGIwOTI3YjQzZmY3ODA4M2E1YzdmLi4xNmMz
YjU4YjRjZWMyNGY2MTcxYzUxODYxNTYyYTNmODgwODkzMTAxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaApAQCAtNTksNiArNTksNyBAQCBjbGFzcyBSZWdFeHBP
YmplY3Q7CiBjbGFzcyBSZWdpc3RlcjsKIGNsYXNzIFN0cnVjdHVyZTsKIGNsYXNzIFN0cnVjdHVy
ZVN0dWJJbmZvOworY2xhc3MgU3ltYm9sOwogY2xhc3MgU3ltYm9sVGFibGU7CiBjbGFzcyBXYXRj
aHBvaW50U2V0OwogCkBAIC0xMTEsNiArMTEyLDcgQEAgdHlwZWRlZiBjaGFyKiBVbnVzZWRQdHI7
CiAgICAgU3NpOiBTdHJ1Y3R1cmVTdHViSW5mbyoKICAgICBTdDogU3RydWN0dXJlKgogICAgIFN5
bXRhYjogU3ltYm9sVGFibGUqCisgICAgU3ltOiBTeW1ib2wqCiAgICAgVDogU3RyaW5nSW1wbCoK
ICAgICBWOiB2b2lkCiAgICAgVm06IFZNKgpAQCAtMjcwLDYgKzI3MiwxMiBAQCB0eXBlZGVmIHZv
aWQgKEpJVF9PUEVSQVRJT04gKlZfSklUT3BlcmF0aW9uX0VQWkopKEV4ZWNTdGF0ZSosIHZvaWQq
LCBpbnQzMl90LCBFbgogdHlwZWRlZiB2b2lkIChKSVRfT1BFUkFUSU9OICpWX0pJVE9wZXJhdGlv
bl9FU3NpSkpJKShFeGVjU3RhdGUqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSwgVW5pcXVlZFN0cmluZ0ltcGwqKTsKIHR5cGVkZWYgdm9pZCAoSklU
X09QRVJBVElPTiAqVl9KSVRPcGVyYXRpb25fRUpKSkkpKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIFVuaXF1ZWRTdHJpbmdJbXBsKik7
CiB0eXBlZGVmIHZvaWQgKEpJVF9PUEVSQVRJT04gKlZfSklUT3BlcmF0aW9uX0VKSkpKKShFeGVj
U3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSk7Cit0eXBlZGVmIHZvaWQgKEpJVF9PUEVSQVRJT04gKlZfSklUT3BlcmF0
aW9uX0VPSkpaKShFeGVjU3RhdGUqLCBKU09iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSwgaW50MzJfdCk7Cit0eXBlZGVmIHZvaWQgKEpJVF9PUEVSQVRJT04gKlZfSklUT3Bl
cmF0aW9uX0VPSnNzSlopKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgSlNTdHJpbmcqLCBFbmNvZGVk
SlNWYWx1ZSwgaW50MzJfdCk7Cit0eXBlZGVmIHZvaWQgKEpJVF9PUEVSQVRJT04gKlZfSklUT3Bl
cmF0aW9uX0VPU3ltSlopKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgU3ltYm9sKiwgRW5jb2RlZEpT
VmFsdWUsIGludDMyX3QpOwordHlwZWRlZiB2b2lkIChKSVRfT1BFUkFUSU9OICpWX0pJVE9wZXJh
dGlvbl9FT0pPT1opKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEpTT2Jq
ZWN0KiwgSlNPYmplY3QqLCBpbnQzMl90KTsKK3R5cGVkZWYgdm9pZCAoSklUX09QRVJBVElPTiAq
Vl9KSVRPcGVyYXRpb25fRU9Kc3NPT1opKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgSlNTdHJpbmcq
LCBKU09iamVjdCosIEpTT2JqZWN0KiwgaW50MzJfdCk7Cit0eXBlZGVmIHZvaWQgKEpJVF9PUEVS
QVRJT04gKlZfSklUT3BlcmF0aW9uX0VPU3ltT09aKShFeGVjU3RhdGUqLCBKU09iamVjdCosIFN5
bWJvbCosIEpTT2JqZWN0KiwgSlNPYmplY3QqLCBpbnQzMl90KTsKIHR5cGVkZWYgdm9pZCAoSklU
X09QRVJBVElPTiAqVl9KSVRPcGVyYXRpb25fRVdzKShFeGVjU3RhdGUqLCBXYXRjaHBvaW50U2V0
Kik7CiB0eXBlZGVmIHZvaWQgKEpJVF9PUEVSQVRJT04gKlZfSklUT3BlcmF0aW9uX0VaKShFeGVj
U3RhdGUqLCBpbnQzMl90KTsKIHR5cGVkZWYgdm9pZCAoSklUX09QRVJBVElPTiAqVl9KSVRPcGVy
YXRpb25fRVpKKShFeGVjU3RhdGUqLCBpbnQzMl90LCBFbmNvZGVkSlNWYWx1ZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCmluZGV4IDU2MDI2
OGI1YzMxNDc4NDEzNjA3MmRkZDgwMDc3NzgwZjMzNzhiMmIuLjlkNGZkMWFhNmFmNjRiNDhkN2Jl
MWIzZWI0NjkzMGI1M2YzNWY0YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUUHJvcGVydHlBY2Nlc3MuY3BwCkBAIC0xNzczLDYgKzE3NzMsMTggQEAgSklUOjpKdW1wTGlz
dCBKSVQ6OmVtaXRGbG9hdFR5cGVkQXJyYXlQdXRCeVZhbChJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uLAogICAgIHJldHVybiBzbG93Q2FzZXM7CiB9CiAKK3ZvaWQgSklUOjplbWl0X29w
X2RlZmluZV9kYXRhX3Byb3BlcnR5KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7
CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rp
b24sIHNsb3dfcGF0aF9kZWZpbmVfZGF0YV9wcm9wZXJ0eSk7CisgICAgc2xvd1BhdGhDYWxsLmNh
bGwoKTsKK30KKwordm9pZCBKSVQ6OmVtaXRfb3BfZGVmaW5lX2FjY2Vzc29yX3Byb3BlcnR5KElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgSklUU2xvd1BhdGhDYWxsIHNs
b3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9kZWZpbmVfYWNj
ZXNzb3JfcHJvcGVydHkpOworICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQppbmRleCAxMDAzN2FmNTZj
ZTZjN2YxYTkzZTUyZDJhNzE3ZTI5NGUwMTA1ZjlhLi5jOWI4NDQzN2M2NTc0NTUzZTM4MGU1MjEy
MjYxYWI5MjY5NmJlMzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlci5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC0xNDU3LDYgKzE0NTcsMTggQEAgX2xsaW50X29w
X3B1dF9zZXR0ZXJfYnlfdmFsOgogICAgIGRpc3BhdGNoKDUpCiAKIAorX2xsaW50X29wX2RlZmlu
ZV9kYXRhX3Byb3BlcnR5OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsT3Bjb2RlU2xv
d1BhdGgoX3Nsb3dfcGF0aF9kZWZpbmVfZGF0YV9wcm9wZXJ0eSkKKyAgICBkaXNwYXRjaCg1KQor
CisKK19sbGludF9vcF9kZWZpbmVfYWNjZXNzb3JfcHJvcGVydHk6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGNhbGxPcGNvZGVTbG93UGF0aChfc2xvd19wYXRoX2RlZmluZV9hY2Nlc3Nvcl9w
cm9wZXJ0eSkKKyAgICBkaXNwYXRjaCg2KQorCisKIF9sbGludF9vcF9qdHJ1ZToKICAgICB0cmFj
ZUV4ZWN1dGlvbigpCiAgICAganVtcFRydWVPckZhbHNlKApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKaW5kZXggY2FmODI2ZGMyYWNkYWI2
ZDlhMzk1OGEwY2YwMzExNDM2MjNiYmEzZi4uZjI1ZWU4MTFhY2E5ZWNhNGE5NmRhOTBlNWUwYTk0
MjViOTc0NThjMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uU2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25TbG93UGF0aHMuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiQ2xvbmVkQXJndW1l
bnRzLmgiCiAjaW5jbHVkZSAiQ29kZVByb2ZpbGluZy5oIgogI2luY2x1ZGUgIkNvbW1vblNsb3dQ
YXRoc0V4Y2VwdGlvbnMuaCIKKyNpbmNsdWRlICJEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaCIK
ICNpbmNsdWRlICJEaXJlY3RBcmd1bWVudHMuaCIKICNpbmNsdWRlICJFcnJvci5oIgogI2luY2x1
ZGUgIkVycm9ySGFuZGxpbmdTY29wZS5oIgpAQCAtOTMwLDQgKzkzMSwzOSBAQCBTTE9XX1BBVEhf
REVDTChzbG93X3BhdGhfcHV0X2J5X3ZhbF93aXRoX3RoaXMpCiAgICAgRU5EKCk7CiB9CiAKK1NM
T1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9kZWZpbmVfZGF0YV9wcm9wZXJ0eSkKK3sKKyAgICBCRUdJ
TigpOworICAgIEpTT2JqZWN0KiBiYXNlID0gYXNPYmplY3QoT1BfQygxKS5qc1ZhbHVlKCkpOwor
ICAgIEpTVmFsdWUgcHJvcGVydHkgPSBPUF9DKDIpLmpzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHZh
bHVlID0gT1BfQygzKS5qc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSBhdHRyaWJ1dGVzID0gT1BfQyg0
KS5qc1ZhbHVlKCk7CisgICAgQVNTRVJUKGF0dHJpYnV0ZXMuaXNJbnQzMigpKTsKKworICAgIGF1
dG8gcHJvcGVydHlOYW1lID0gcHJvcGVydHkudG9Qcm9wZXJ0eUtleShleGVjKTsKKyAgICBDSEVD
S19FWENFUFRJT04oKTsKKyAgICBQcm9wZXJ0eURlc2NyaXB0b3IgZGVzY3JpcHRvciA9IHRvUHJv
cGVydHlEZXNjcmlwdG9yKHZhbHVlLCBqc1VuZGVmaW5lZCgpLCBqc1VuZGVmaW5lZCgpLCBEZWZp
bmVQcm9wZXJ0eUF0dHJpYnV0ZXMoYXR0cmlidXRlcy5hc0ludDMyKCkpKTsKKyAgICBBU1NFUlQo
KGRlc2NyaXB0b3IuYXR0cmlidXRlcygpICYgQWNjZXNzb3IpIHx8ICghZGVzY3JpcHRvci5pc0Fj
Y2Vzc29yRGVzY3JpcHRvcigpKSk7CisgICAgYmFzZS0+bWV0aG9kVGFibGUodm0pLT5kZWZpbmVP
d25Qcm9wZXJ0eShiYXNlLCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHRydWUpOwor
ICAgIEVORCgpOworfQorCitTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZGVmaW5lX2FjY2Vzc29y
X3Byb3BlcnR5KQoreworICAgIEJFR0lOKCk7CisgICAgSlNPYmplY3QqIGJhc2UgPSBhc09iamVj
dChPUF9DKDEpLmpzVmFsdWUoKSk7CisgICAgSlNWYWx1ZSBwcm9wZXJ0eSA9IE9QX0MoMikuanNW
YWx1ZSgpOworICAgIEpTVmFsdWUgZ2V0dGVyID0gT1BfQygzKS5qc1ZhbHVlKCk7CisgICAgSlNW
YWx1ZSBzZXR0ZXIgPSBPUF9DKDQpLmpzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIGF0dHJpYnV0ZXMg
PSBPUF9DKDUpLmpzVmFsdWUoKTsKKyAgICBBU1NFUlQoYXR0cmlidXRlcy5pc0ludDMyKCkpOwor
CisgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBwcm9wZXJ0eS50b1Byb3BlcnR5S2V5KGV4ZWMpOwor
ICAgIENIRUNLX0VYQ0VQVElPTigpOworICAgIFByb3BlcnR5RGVzY3JpcHRvciBkZXNjcmlwdG9y
ID0gdG9Qcm9wZXJ0eURlc2NyaXB0b3IoanNVbmRlZmluZWQoKSwgZ2V0dGVyLCBzZXR0ZXIsIERl
ZmluZVByb3BlcnR5QXR0cmlidXRlcyhhdHRyaWJ1dGVzLmFzSW50MzIoKSkpOworICAgIEFTU0VS
VCgoZGVzY3JpcHRvci5hdHRyaWJ1dGVzKCkgJiBBY2Nlc3NvcikgfHwgKCFkZXNjcmlwdG9yLmlz
QWNjZXNzb3JEZXNjcmlwdG9yKCkpKTsKKyAgICBiYXNlLT5tZXRob2RUYWJsZSh2bSktPmRlZmlu
ZU93blByb3BlcnR5KGJhc2UsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgdHJ1ZSk7
CisgICAgRU5EKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAppbmRleCBjMjZhOGM3Y2QzYmQzNTM0
NWJlOWVjYzM1MGFhNDIxZTU0MTY4NjVmLi5jZGQ0ZjQ0N2Q1MThjZjRiNDFmZjg1OGRiZDgwOGVm
ZTdiYjM1MWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25TbG93UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25T
bG93UGF0aHMuaApAQCAtMjU4LDYgKzI1OCw4IEBAIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93
X3BhdGhfZ2V0X2J5X2lkX3dpdGhfdGhpcyk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19w
YXRoX2dldF9ieV92YWxfd2l0aF90aGlzKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3Bh
dGhfcHV0X2J5X2lkX3dpdGhfdGhpcyk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRo
X3B1dF9ieV92YWxfd2l0aF90aGlzKTsKK1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhf
ZGVmaW5lX2RhdGFfcHJvcGVydHkpOworU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9k
ZWZpbmVfYWNjZXNzb3JfcHJvcGVydHkpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGVmaW5lUHJvcGVydHlBdHRyaWJ1
dGVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EZWZpbmVQcm9wZXJ0eUF0dHJp
YnV0ZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4zZDhhMjQ4YjkxNjBjNDc2NGIxMGNhNDExZmIyZjJjNzVjYTk4
MzYwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGVm
aW5lUHJvcGVydHlBdHRyaWJ1dGVzLmgKQEAgLTAsMCArMSwxNDIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUg
PHd0Zi9UcmlTdGF0ZS5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgRGVmaW5lUHJvcGVy
dHlBdHRyaWJ1dGVzIHsKK3B1YmxpYzoKKyAgICBzdGF0aWNfYXNzZXJ0KEZhbHNlVHJpU3RhdGUg
PT0gMCwgIkZhbHNlVHJpU3RhdGUgaXMgMC4iKTsKKyAgICBzdGF0aWNfYXNzZXJ0KFRydWVUcmlT
dGF0ZSA9PSAxLCAiVHJ1ZVRyaVN0YXRlIGlzIDEuIik7CisgICAgc3RhdGljX2Fzc2VydChNaXhl
ZFRyaVN0YXRlID09IDIsICJNaXhlZFRyaVN0YXRlIGlzIDIuIik7CisKKyAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgQ29uZmlndXJhYmxlU2hpZnQgPSAwOworICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBFbnVtZXJhYmxlU2hpZnQgPSAyOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBXcml0
YWJsZVNoaWZ0ID0gNDsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgVmFsdWVTaGlmdCA9IDY7
CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIEdldFNoaWZ0ID0gNzsKKyAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgU2V0U2hpZnQgPSA4OworCisgICAgRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVz
KCkKKyAgICAgICAgOiBtX2F0dHJpYnV0ZXMoCisgICAgICAgICAgICAoTWl4ZWRUcmlTdGF0ZSA8
PCBDb25maWd1cmFibGVTaGlmdCkKKyAgICAgICAgICAgIHwgKE1peGVkVHJpU3RhdGUgPDwgRW51
bWVyYWJsZVNoaWZ0KQorICAgICAgICAgICAgfCAoTWl4ZWRUcmlTdGF0ZSA8PCBXcml0YWJsZVNo
aWZ0KQorICAgICAgICAgICAgfCAoMCA8PCBWYWx1ZVNoaWZ0KQorICAgICAgICAgICAgfCAoMCA8
PCBHZXRTaGlmdCkKKyAgICAgICAgICAgIHwgKDAgPDwgU2V0U2hpZnQpKQorICAgIHsKKyAgICB9
CisKKyAgICBleHBsaWNpdCBEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXModW5zaWduZWQgYXR0cmli
dXRlcykKKyAgICAgICAgOiBtX2F0dHJpYnV0ZXMoYXR0cmlidXRlcykKKyAgICB7CisgICAgfQor
CisgICAgdW5zaWduZWQgcmF3UmVwcmVzZW50YXRpb24oKSBjb25zdAorICAgIHsKKyAgICAgICAg
cmV0dXJuIG1fYXR0cmlidXRlczsKKyAgICB9CisKKyAgICBib29sIGhhc1ZhbHVlKCkKKyAgICB7
CisgICAgICAgIHJldHVybiBtX2F0dHJpYnV0ZXMgJiAoMGIxIDw8IFZhbHVlU2hpZnQpOworICAg
IH0KKworICAgIHZvaWQgc2V0VmFsdWUoKQorICAgIHsKKyAgICAgICAgbV9hdHRyaWJ1dGVzID0g
bV9hdHRyaWJ1dGVzIHwgKDBiMSA8PCBWYWx1ZVNoaWZ0KTsKKyAgICB9CisKKyAgICBib29sIGhh
c0dldCgpCisgICAgeworICAgICAgICByZXR1cm4gbV9hdHRyaWJ1dGVzICYgKDBiMSA8PCBHZXRT
aGlmdCk7CisgICAgfQorCisgICAgdm9pZCBzZXRHZXQoKQorICAgIHsKKyAgICAgICAgbV9hdHRy
aWJ1dGVzID0gbV9hdHRyaWJ1dGVzIHwgKDBiMSA8PCBHZXRTaGlmdCk7CisgICAgfQorCisgICAg
Ym9vbCBoYXNTZXQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYXR0cmlidXRlcyAmICgwYjEg
PDwgU2V0U2hpZnQpOworICAgIH0KKworICAgIHZvaWQgc2V0U2V0KCkKKyAgICB7CisgICAgICAg
IG1fYXR0cmlidXRlcyA9IG1fYXR0cmlidXRlcyB8ICgwYjEgPDwgU2V0U2hpZnQpOworICAgIH0K
KworICAgIFRyaVN0YXRlIHdyaXRhYmxlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBleHRyYWN0
VHJpU3RhdGUoV3JpdGFibGVTaGlmdCk7CisgICAgfQorCisgICAgVHJpU3RhdGUgY29uZmlndXJh
YmxlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBleHRyYWN0VHJpU3RhdGUoQ29uZmlndXJhYmxl
U2hpZnQpOworICAgIH0KKworICAgIFRyaVN0YXRlIGVudW1lcmFibGUoKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGV4dHJhY3RUcmlTdGF0ZShFbnVtZXJhYmxlU2hpZnQpOworICAgIH0KKworICAg
IHZvaWQgc2V0V3JpdGFibGUoYm9vbCB2YWx1ZSkKKyAgICB7CisgICAgICAgIGZpbGxXaXRoVHJp
U3RhdGUodmFsdWUgPyBUcnVlVHJpU3RhdGUgOiBGYWxzZVRyaVN0YXRlLCBXcml0YWJsZVNoaWZ0
KTsKKyAgICB9CisKKyAgICB2b2lkIHNldENvbmZpZ3VyYWJsZShib29sIHZhbHVlKQorICAgIHsK
KyAgICAgICAgZmlsbFdpdGhUcmlTdGF0ZSh2YWx1ZSA/IFRydWVUcmlTdGF0ZSA6IEZhbHNlVHJp
U3RhdGUsIENvbmZpZ3VyYWJsZVNoaWZ0KTsKKyAgICB9CisKKyAgICB2b2lkIHNldEVudW1lcmFi
bGUoYm9vbCB2YWx1ZSkKKyAgICB7CisgICAgICAgIGZpbGxXaXRoVHJpU3RhdGUodmFsdWUgPyBU
cnVlVHJpU3RhdGUgOiBGYWxzZVRyaVN0YXRlLCBFbnVtZXJhYmxlU2hpZnQpOworICAgIH0KKwor
cHJpdmF0ZToKKyAgICB2b2lkIGZpbGxXaXRoVHJpU3RhdGUoVHJpU3RhdGUgc3RhdGUsIHVuc2ln
bmVkIHNoaWZ0KQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgbWFzayA9IDBiMTEgPDwgc2hpZnQ7
CisgICAgICAgIG1fYXR0cmlidXRlcyA9IChtX2F0dHJpYnV0ZXMgJiB+bWFzaykgfCAoc3RhdGUg
PDwgc2hpZnQpOworICAgIH0KKworICAgIFRyaVN0YXRlIGV4dHJhY3RUcmlTdGF0ZSh1bnNpZ25l
ZCBzaGlmdCkKKyAgICB7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUcmlTdGF0ZT4oKG1f
YXR0cmlidXRlcyA+PiBzaGlmdCkgJiAwYjExKTsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBtX2F0
dHJpYnV0ZXM7Cit9OworCisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IDk3M2MyZTgxNjllYjhm
YzVlYWVmNjQ2NzBiNDYxMTM2MjFhNTU4YTAuLjVjOTRiOTI1Y2JlNjVlMTkyNDFkNDlhMjhmMWUx
MWEwOWY2NzEyNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5jcHAKQEAgLTQwNCw3ICs0MDQsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojpp
bml0KFZNJiB2bSkKICAgICBtX2Z1bmN0aW9uUHJvdG9IYXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9u
LnNldCh2bSwgdGhpcywgaGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlvbik7CiAgICAgbV90aHJvd1R5
cGVFcnJvckdldHRlclNldHRlci5pbml0TGF0ZXIoCiAgICAgICAgIFtdIChjb25zdCBJbml0aWFs
aXplcjxHZXR0ZXJTZXR0ZXI+JiBpbml0KSB7Ci0gICAgICAgICAgICBKU0Z1bmN0aW9uKiB0aHJv
d2VyID0gSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGluaXQub3duZXIsIDAsIFN0cmluZygp
LCBnbG9iYWxGdW5jVGhyb3dUeXBlRXJyb3IpOworICAgICAgICAgICAgSlNGdW5jdGlvbiogdGhy
b3dlciA9IGluaXQub3duZXItPnRocm93VHlwZUVycm9yRnVuY3Rpb24oKTsKICAgICAgICAgICAg
IEdldHRlclNldHRlciogZ2V0dGVyU2V0dGVyID0gR2V0dGVyU2V0dGVyOjpjcmVhdGUoaW5pdC52
bSwgaW5pdC5vd25lcik7CiAgICAgICAgICAgICBnZXR0ZXJTZXR0ZXItPnNldEdldHRlcihpbml0
LnZtLCBpbml0Lm93bmVyLCB0aHJvd2VyKTsKICAgICAgICAgICAgIGdldHRlclNldHRlci0+c2V0
U2V0dGVyKGluaXQudm0sIGluaXQub3duZXIsIHRocm93ZXIpOwpAQCAtNTgxLDggKzU4MSw4IEBA
IG1fICMjIHByb3Blck5hbWUgIyMgU3RydWN0dXJlLnNldCh2bSwgdGhpcywgaW5zdGFuY2VUeXBl
OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoCiAgICAgT2JqZWN0Q29uc3RydWN0b3IqIG9iamVjdENv
bnN0cnVjdG9yID0gT2JqZWN0Q29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgdGhpcywgT2JqZWN0Q29u
c3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5n
ZXQoKSksIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKTsKICAgICBtX29iamVjdENvbnN0cnVjdG9y
LnNldCh2bSwgdGhpcywgb2JqZWN0Q29uc3RydWN0b3IpOwogCi0gICAgSlNGdW5jdGlvbiogZGVm
aW5lUHJvcGVydHlGdW5jdGlvbiA9IG1fb2JqZWN0Q29uc3RydWN0b3ItPmFkZERlZmluZVByb3Bl
cnR5KGV4ZWMsIHRoaXMpOwotICAgIG1fZGVmaW5lUHJvcGVydHlGdW5jdGlvbi5zZXQodm0sIHRo
aXMsIGRlZmluZVByb3BlcnR5RnVuY3Rpb24pOworICAgIEpTRnVuY3Rpb24qIHRocm93VHlwZUVy
cm9yRnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDAsIFN0cmluZygpLCBn
bG9iYWxGdW5jVGhyb3dUeXBlRXJyb3IpOworICAgIG1fdGhyb3dUeXBlRXJyb3JGdW5jdGlvbi5z
ZXQodm0sIHRoaXMsIHRocm93VHlwZUVycm9yRnVuY3Rpb24pOwogCiAgICAgSlNDZWxsKiBmdW5j
dGlvbkNvbnN0cnVjdG9yID0gRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBGdW5jdGlv
bkNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5
cGUuZ2V0KCkpLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKTsKICAgICBBcnJheUNvbnN0cnVj
dG9yKiBhcnJheUNvbnN0cnVjdG9yID0gQXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCB0aGlz
LCBBcnJheUNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Q
cm90b3R5cGUuZ2V0KCkpLCBtX2FycmF5UHJvdG90eXBlLmdldCgpLCBtX3NwZWNpZXNHZXR0ZXJT
ZXR0ZXIuZ2V0KCkpOwpAQCAtODAzLDcgKzgwMyw3IEBAIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0
aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT4ganNOYW1lLCBsb3dlck5hbWUgIyMgQ29uc3RydWN0
CiAgICAgbV9zcGVjaWFsUG9pbnRlcnNbU3BlY2lhbDo6T2JqZWN0Q29uc3RydWN0b3JdID0gb2Jq
ZWN0Q29uc3RydWN0b3I7CiAgICAgbV9zcGVjaWFsUG9pbnRlcnNbU3BlY2lhbDo6QXJyYXlDb25z
dHJ1Y3Rvcl0gPSBhcnJheUNvbnN0cnVjdG9yOwogCi0gICAgbV9saW5rVGltZUNvbnN0YW50c1tz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6RGVmaW5lUHJvcGVydHlGdW5j
dGlvbildID0gbV9kZWZpbmVQcm9wZXJ0eUZ1bmN0aW9uLmdldCgpOworICAgIG1fbGlua1RpbWVD
b25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OlRocm93VHlw
ZUVycm9yRnVuY3Rpb24pXSA9IG1fdGhyb3dUeXBlRXJyb3JGdW5jdGlvbi5nZXQoKTsKIAogICAg
IGlmIChVTkxJS0VMWShPcHRpb25zOjp1c2VEb2xsYXJWTSgpKSkgewogICAgICAgICBKU0RvbGxh
clZNUHJvdG90eXBlKiBkb2xsYXJWTVByb3RvdHlwZSA9IEpTRG9sbGFyVk1Qcm90b3R5cGU6OmNy
ZWF0ZSh2bSwgdGhpcywgSlNEb2xsYXJWTVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0
aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpOwpAQCAtMTA2Niw3ICsxMDY2LDcgQEAgdm9p
ZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9y
JiB2aXNpdG9yKQogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2V2YWxGdW5jdGlv
bik7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fY2FsbEZ1bmN0aW9uKTsKICAg
ICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9hcHBseUZ1bmN0aW9uKTsKLSAgICB2aXNp
dG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9kZWZpbmVQcm9wZXJ0eUZ1bmN0aW9uKTsKKyAgICB2
aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV90aHJvd1R5cGVFcnJvckZ1bmN0aW9uKTsKICAg
ICB0aGlzT2JqZWN0LT5tX2FycmF5UHJvdG9Ub1N0cmluZ0Z1bmN0aW9uLnZpc2l0KHZpc2l0b3Ip
OwogICAgIHRoaXNPYmplY3QtPm1fYXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uLnZpc2l0KHZpc2l0
b3IpOwogICAgIHRoaXNPYmplY3QtPm1faW5pdGlhbGl6ZVByb21pc2VGdW5jdGlvbi52aXNpdCh2
aXNpdG9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5oCmluZGV4IDM1Y2QwNWZmZDBmNzE0ZGRhNGU1MWJkZWUwODVmYWQyNTBiNDAwMTMuLjA1YWI5
YTBjNDIwYzVhMzczMjZlNTdjNTg5YWM0ZmExOGExZThhZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtMjM0LDcgKzIzNCw3IEBAIGNs
YXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3Qgewog
ICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBtX2V2YWxGdW5jdGlvbjsKICAgICBXcml0ZUJh
cnJpZXI8SlNGdW5jdGlvbj4gbV9jYWxsRnVuY3Rpb247CiAgICAgV3JpdGVCYXJyaWVyPEpTRnVu
Y3Rpb24+IG1fYXBwbHlGdW5jdGlvbjsKLSAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9k
ZWZpbmVQcm9wZXJ0eUZ1bmN0aW9uOworICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBtX3Ro
cm93VHlwZUVycm9yRnVuY3Rpb247CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBK
U0Z1bmN0aW9uPiBtX2FycmF5UHJvdG9Ub1N0cmluZ0Z1bmN0aW9uOwogICAgIExhenlQcm9wZXJ0
eTxKU0dsb2JhbE9iamVjdCwgSlNGdW5jdGlvbj4gbV9hcnJheVByb3RvVmFsdWVzRnVuY3Rpb247
CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBKU0Z1bmN0aW9uPiBtX2luaXRpYWxp
emVQcm9taXNlRnVuY3Rpb247CkBAIC00NzksNyArNDc5LDcgQEAgY2xhc3MgSlNHbG9iYWxPYmpl
Y3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgSlNGdW5jdGlvbiog
ZXZhbEZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9ldmFsRnVuY3Rpb24uZ2V0KCk7IH0KICAg
ICBKU0Z1bmN0aW9uKiBjYWxsRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2NhbGxGdW5jdGlv
bi5nZXQoKTsgfQogICAgIEpTRnVuY3Rpb24qIGFwcGx5RnVuY3Rpb24oKSBjb25zdCB7IHJldHVy
biBtX2FwcGx5RnVuY3Rpb24uZ2V0KCk7IH0KLSAgICBKU0Z1bmN0aW9uKiBkZWZpbmVQcm9wZXJ0
eUZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9kZWZpbmVQcm9wZXJ0eUZ1bmN0aW9uLmdldCgp
OyB9CisgICAgSlNGdW5jdGlvbiogdGhyb3dUeXBlRXJyb3JGdW5jdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fdGhyb3dUeXBlRXJyb3JGdW5jdGlvbi5nZXQoKTsgfQogICAgIEpTRnVuY3Rpb24qIGFy
cmF5UHJvdG9Ub1N0cmluZ0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9hcnJheVByb3RvVG9T
dHJpbmdGdW5jdGlvbi5nZXQodGhpcyk7IH0KICAgICBKU0Z1bmN0aW9uKiBhcnJheVByb3RvVmFs
dWVzRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2FycmF5UHJvdG9WYWx1ZXNGdW5jdGlvbi5n
ZXQodGhpcyk7IH0KICAgICBKU0Z1bmN0aW9uKiBpbml0aWFsaXplUHJvbWlzZUZ1bmN0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9pbml0aWFsaXplUHJvbWlzZUZ1bmN0aW9uLmdldCh0aGlzKTsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0
b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3Iu
Y3BwCmluZGV4IGQ5OTE0OWFhNDFjNjEyYTYyYTZkOTJlOTI0YTZjODQ4YjUxNmNmY2QuLjkzYWNj
YzExOWZhODc4MDY4YmRmMGYxY2JkZThhNTcxZjk2NzZjMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKQEAgLTEwNywxNCAr
MTA3LDYgQEAgdm9pZCBPYmplY3RDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBPYmoKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9O
X1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZXRP
d25Qcm9wZXJ0eU5hbWVzUHJpdmF0ZU5hbWUoKSwgb2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9w
ZXJ0eU5hbWVzLCBEb250RW51bSwgMSk7CiB9CiAKLUpTRnVuY3Rpb24qIE9iamVjdENvbnN0cnVj
dG9yOjphZGREZWZpbmVQcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QpCi17Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBKU0Z1bmN0aW9u
KiBkZWZpbmVQcm9wZXJ0eUZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxP
YmplY3QsIDMsIHZtLnByb3BlcnR5TmFtZXMtPmRlZmluZVByb3BlcnR5LnN0cmluZygpLCBvYmpl
Y3RDb25zdHJ1Y3RvckRlZmluZVByb3BlcnR5KTsKLSAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNp
dGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+ZGVmaW5lUHJvcGVydHksIGRlZmluZVByb3BlcnR5
RnVuY3Rpb24sIERvbnRFbnVtKTsKLSAgICByZXR1cm4gZGVmaW5lUHJvcGVydHlGdW5jdGlvbjsK
LX0KLQogLy8gRVMgMTkuMS4xLjEgT2JqZWN0KFt2YWx1ZV0pCiBzdGF0aWMgQUxXQVlTX0lOTElO
RSBKU09iamVjdCogY29uc3RydWN0T2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBuZXdU
YXJnZXQpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmpl
Y3RDb25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29u
c3RydWN0b3IuaAppbmRleCBiMTYxNGRhYmRiMzg1YzdjZDZlMmYyZDVjZGQ2ODcxZTc5N2Q0MThj
Li4yYWFhODE1NDI1MmI5NzFiNmU3MjhmYTZkMDAxOTk0NDA0NGJkOTE4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmgKQEAgLTU0LDgg
KzU0LDYgQEAgY2xhc3MgT2JqZWN0Q29uc3RydWN0b3IgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlv
biB7CiAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBw
cm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsK
ICAgICB9CiAKLSAgICBKU0Z1bmN0aW9uKiBhZGREZWZpbmVQcm9wZXJ0eShFeGVjU3RhdGUqLCBK
U0dsb2JhbE9iamVjdCopOwotCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihW
TSYsIEpTR2xvYmFsT2JqZWN0KiwgT2JqZWN0UHJvdG90eXBlKik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlEZXNjcmlwdG9yLmgKaW5kZXggYWE2MWVl
YTQ5NWM0ZDFjOWQ1YTBmODI0NzlkMzI0NTM2NjU1YTM2NS4uZWU5NzFmNTUwMzY3NjczMjA5Nzk5
ZTgxOWU1ZDQzMDFkZDU4NDQ4NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUHJvcGVydHlEZXNjcmlwdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUHJvcGVydHlEZXNjcmlwdG9yLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgUHJv
cGVydHlEZXNjcmlwdG9yX2gKICNkZWZpbmUgUHJvcGVydHlEZXNjcmlwdG9yX2gKIAorI2luY2x1
ZGUgIkRlZmluZVByb3BlcnR5QXR0cmlidXRlcy5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIK
IAogbmFtZXNwYWNlIEpTQyB7CkBAIC05Myw2ICs5NCwzMiBAQCBjbGFzcyBQcm9wZXJ0eURlc2Ny
aXB0b3IgewogICAgIHVuc2lnbmVkIG1fc2VlbkF0dHJpYnV0ZXM7CiB9OwogCitpbmxpbmUgUHJv
cGVydHlEZXNjcmlwdG9yIHRvUHJvcGVydHlEZXNjcmlwdG9yKEpTVmFsdWUgdmFsdWUsIEpTVmFs
dWUgZ2V0dGVyLCBKU1ZhbHVlIHNldHRlciwgRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzIGF0dHJp
YnV0ZXMpCit7CisgICAgLy8gV2UgYXNzdW1lIHRoYXQgdmFsaWRhdGlvbiBpcyBhbHJlYWR5IGRv
bmUuCisgICAgUHJvcGVydHlEZXNjcmlwdG9yIGRlc2M7CisKKyAgICBpZiAoYXR0cmlidXRlcy5l
bnVtZXJhYmxlKCkgIT0gTWl4ZWRUcmlTdGF0ZSkKKyAgICAgICAgZGVzYy5zZXRFbnVtZXJhYmxl
KGF0dHJpYnV0ZXMuZW51bWVyYWJsZSgpKTsKKworICAgIGlmIChhdHRyaWJ1dGVzLmNvbmZpZ3Vy
YWJsZSgpICE9IE1peGVkVHJpU3RhdGUpCisgICAgICAgIGRlc2Muc2V0Q29uZmlndXJhYmxlKGF0
dHJpYnV0ZXMuY29uZmlndXJhYmxlKCkpOworCisgICAgaWYgKGF0dHJpYnV0ZXMuaGFzVmFsdWUo
KSkKKyAgICAgICAgZGVzYy5zZXRWYWx1ZSh2YWx1ZSk7CisKKyAgICBpZiAoYXR0cmlidXRlcy53
cml0YWJsZSgpICE9IE1peGVkVHJpU3RhdGUpCisgICAgICAgIGRlc2Muc2V0V3JpdGFibGUoYXR0
cmlidXRlcy53cml0YWJsZSgpKTsKKworICAgIGlmIChhdHRyaWJ1dGVzLmhhc0dldCgpKQorICAg
ICAgICBkZXNjLnNldEdldHRlcihnZXR0ZXIpOworCisgICAgaWYgKGF0dHJpYnV0ZXMuaGFzU2V0
KCkpCisgICAgICAgIGRlc2Muc2V0U2V0dGVyKHNldHRlcik7CisKKyAgICByZXR1cm4gZGVzYzsK
K30KKwogfQogCiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>289910</attachid>
            <date>2016-09-26 21:20:03 -0700</date>
            <delta_ts>2016-09-26 21:22:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162108-20160926211706.patch</filename>
            <type>text/plain</type>
            <size>97065</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA2NDExCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
MjE2ZGRiZWMwNWQ2YThjYWMzZDdkYWQwMmI1MmFiYTA4ZTQ1OWYyLi4xOWVlM2IwM2E2YjQzZjhi
NGRhYzUxYmIzMzlmYzgwMjlmMDk0Mzg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNTUgQEAKKzIwMTYtMDktMjYgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0pTQ10gQWRkIGEgbmV3IGJ5dGUgY29kZSBvcF9kZWZpbmVfcHJv
cGVydHkgaW5zdGVhZCBvZiBjYWxsaW5nIGRlZmluZVByb3BlcnR5CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjIxMDgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUbyBjb25zdHJ1Y3QgRVM2IGNsYXNzLCB3
ZSBlbWl0dGVkIGJ5dGVjb2RlIHRoYXQgcGVyZm9ybXMgdGhlIGZvbGxvd2luZyBvcGVyYXRpb25z
LgorCisgICAgICAgICAgICAxLiBjb25zdHJ1Y3QgYSBuZXcgb2JqZWN0CisgICAgICAgICAgICAy
LiBwdXQgImNvbmZpZ3VyYWJsZSIsICJlbnVtZXJhYmxlIiBldGMuIGZpZWxkcworICAgICAgICAg
ICAgMy4gY2FsbCAiZGVmaW5lUHJvcGVydHkiIGZ1bmN0aW9uCisKKyAgICAgICAgSG93ZXZlciwg
dGhpcyBoYXMgYSBwcm9ibGVtcy4gRXZlcnkgdGltZSB3ZSBkZWZpbmUgYSBjbGFzcyBtZXRob2Qs
IHdlIG5lZWQgdG8gY3JlYXRlCisgICAgICAgIGEgbmV3IG9iamVjdCB0byByZXByZXNlbnQgcHJv
cGVydHkgZGVzY3JpcHRvci4gVGhpcyBjYW4gYmUgcmVtb3ZlZCBpZiB3ZSBjYW4gaW50cm9kdWNl
CisgICAgICAgIGEgc3BlY2lhbCBieXRlY29kZSBvciBzcGVjaWFsIGZ1bmN0aW9uLgorCisgICAg
ICAgIFRoaXMgcGF0Y2ggaW50cm9kdWNlcyBuZXcgYnl0ZWNvZGVzLCBvcF9kZWZpbmVfZGF0YV9w
cm9wZXJ0eSBhbmQgb3BfZGVmaW5lX2FjY2Vzc29yX3Byb3BlcnR5LgorICAgICAgICBJbnN0ZWFk
IG9mIHRha2luZyBhbiBvYmplY3QsIHRoZXkgdGFrZXMgc2V2ZXJhbCByZWdpc3RlcnMgdG8gYXZv
aWQgb2JqZWN0IGFsbG9jYXRpb25zLgorICAgICAgICBXZSdyZSBwbGFubmluZyB0byB1c2UgdGhp
cyBieXRlY29kZSB0byBpbXBsZW1lbnQgT2JqZWN0LmRlZmluZVByb3BlcnR5IGluIGJ1aWx0aW4g
SlMgbmV4dC4KKyAgICAgICAgVGhpcyBhbGxvd3MgdXMgdG8gbGV2ZXJhZ2Ugb2JqZWN0IGFsbG9j
YXRpb24gc2lua2luZy4gQW5kIGl0IGFsc28gZ2l2ZXMgdXMgYSBjaGFuY2UgdG8gdXNlCisgICAg
ICAgIGZhc3RlciA6OmdldCBhbmQgOjpoYXNQcm9wZXJ0eSBpbiBKUy4KKworICAgICAgICBPcmln
aW5hbGx5LCBJIGF0dGVtcHRlZCB0byBjcmVhdGUgb25lIGJ5dGVjb2RlLCBvcF9kZWZpbmVfcHJv
cGVydHkuIEhvd2V2ZXIsIGl0IHRha2VzIHRvbyBtdWNoCisgICAgICAgIGNoaWxkcmVuIGluIERG
RyBhbmQgdXNlcyBzbyBtdWNoIHJlZ2lzdGVycyBpbiBERkcuIFRoaXMgbGVhZHMgdHJpY2t5IHBy
b2dyYW0gaW4gMzJiaXQgcGxhdGZvcm1zLgorICAgICAgICBGdXJ0aGVybW9yZSwgaXQgZG9lcyBu
b3QgZml0IHRvIHRoZSBudW1iZXIgb2YgeDY0IGFyZ3VtZW50IHJlZ2lzdGVycy4gU28gaW5zdGVh
ZCwgd2UgaW50cm9kdWNlCisgICAgICAgIHR3byBieXRlY29kZXMuCisKKyAgICAgICAgQW5kIGZv
ciBvcF9kZWZpbmVfYWNjZXNzb3JfcHJvcGVydHksIHdlIHBlcmZvcm0gQ2VsbFVzZSBlZGdlIGZp
bHRlciB0byBnZXR0ZXIgYW5kIHNldHRlciBjaGlsZHJlbi4KKyAgICAgICAgVGhpcyBlZGdlIGZp
bHRlciBtYWtlcyB1cyBwb3NzaWJsZSB0byB1c2UgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYW5kIHJl
ZHVjZSB0aGUgbnVtYmVyIG9mIHVzZWQgcmVnaXN0ZXJzCisgICAgICAgIGluIGNvbXBhcmlzb24g
d2l0aCBKU1ZhbHVlT3BlcmFuZC4gVG8gbWFrZSBjaGlsZHJlbiBDZWxscyBldmVuIGlmIHdlIGRv
IG5vdCBzcGVjaWZ5IHNvbWUgYWNjZXNzb3JzIChmb3IKKyAgICAgICAgZXhhbXBsZSwgeyBnZXQ6
IGZ1bmMsIHNldDogbnVsbCB9IGNhc2UpLCB3ZSBmaWxsIHJlZ2lzdGVycyB3aXRoIHNwZWNpYWwg
dGhyb3dUeXBlRXJyb3JGdW5jdGlvbi4KKyAgICAgICAgVGhlIGF0dHJpYnV0ZXMgYml0c2V0IGtl
ZXAgaW5mb3JtYXRpb24gbGlrZSAiVGhpcyBwcm9wZXJ0eSBkZXNjcmlwdG9yIG9ubHkgaGFzIGdl
dHRlciBzbG90Ii4KKworICAgICAgICBJbiB0aGVzZSB0d28gYnl0ZWNvZGVzLCB3ZSB0YWtlIGF0
dHJpYnV0ZXMgKGNvbmZpZ3VyYWJsZSwgZW51bWVyYWJsZSwgd3JpdGFibGUsIGhhc0dldHRlciBl
dGMuKSBhcworICAgICAgICByZWdpc3RlciBpbnN0ZWFkIG9mIGVtYmVkZGluZyBjb25zdGFudCBp
bnQgdmFsdWUgYmVjYXVzZSB3ZSB3aWxsIHVzZSB0aGVzZSBieXRlY29kZXMgdG8gaW1wbGVtZW50
CisgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSBuZXh0LiBJbiBPYmplY3QuZGVmaW5lUHJv
cGVydHkgY2FzZSwgYW4gYXR0cmlidXRlcyBhcmUgbm90IHN0YXRpY2FsbHkgZGVmaW5lZAorICAg
ICAgICBhdCBieXRlY29kZSBjb21waWxpbmcgdGltZS4KKworICAgICAgICBSdW4gRVM2U2FtcGxl
QmVuY2gvQWlyIDIwIHRpbWVzLiBUaGUgcmVzdWx0IHNob3dzIH4yJSBwZXJmb3JtYW5jZSBpbXBy
b3ZlbWVudC4KKworICAgICAgICBCYXNlbGluZToKKyAgICAgICAgICAgIGZpcnN0SXRlcmF0aW9u
OiAgICAgODQuMDUgbXMgKy0gNC4zNyBtcworICAgICAgICAgICAgYXZlcmFnZVdvcnN0Q2FzZTog
ICA0MC41NCBtcyArLSAyLjgxIG1zCisgICAgICAgICAgICBzdGVhZHlTdGF0ZTogICAgICAgIDMz
MTcuNDkgbXMgKy0gNDguMjUgbXMKKyAgICAgICAgICAgIHN1bW1hcnk6ICAgICAgICAgICAgMjIz
LjUxIG1zICstIDUuMDcgbXMKKworICAgICAgICBQYXRjaGVkOgorICAgICAgICAgICAgZmlyc3RJ
dGVyYXRpb246ICAgICA4NC40NiBtcyArLSA0LjIyIG1zCisgICAgICAgICAgICBhdmVyYWdlV29y
c3RDYXNlOiAgIDQxLjQ4IG1zICstIDIuMzMgbXMKKyAgICAgICAgICAgIHN0ZWFkeVN0YXRlOiAg
ICAgICAgMzI1My40OCBtcyArLSAyOS4zMSBtcworICAgICAgICAgICAgc3VtbWFyeTogICAgICAg
ICAgICAyMjQuNDAgbXMgKy0gNC43MiBtcworCisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3Qu
anNvbjoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVVzZURlZi5oOgorICAgICAgICAoSlND
Ojpjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZURl
ZnNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoK
KyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUpOgorICAgICAgICAqIGJ5dGVj
b2RlL1NwZWNpYWxQb2ludGVyLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRNb3ZlTGlu
a1RpbWVDb25zdGFudCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2Fs
bERlZmluZVByb3BlcnR5KToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuaDoKKyAgICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAg
KEpTQzo6UHJvcGVydHlMaXN0Tm9kZTo6ZW1pdFB1dENvbnN0YW50UHJvcGVydHkpOgorICAgICAg
ICAoSlNDOjpCaXR3aXNlTm90Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Q2xh
c3NFeHByTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6T2JqZWN0UGF0dGVybk5v
ZGU6OmJpbmRWYWx1ZSk6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxp
bmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0
YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToK
KyAgICAgICAgKiBkZmcvREZHQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpj
YXBhYmlsaXR5TGV2ZWwpOgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyaXplLmg6CisgICAgICAg
IChKU0M6OkRGRzo6Y2xvYmJlcml6ZSk6CisgICAgICAgICogZGZnL0RGR0RvZXNHQy5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6ZG9lc0dDKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAg
KiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6Cisg
ICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlv
blByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdTYWZlVG9FeGVjdXRlLmg6
CisgICAgICAgIChKU0M6OkRGRzo6c2FmZVRvRXhlY3V0ZSk6CisgICAgICAgICogZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZURlZmluZURhdGFQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVEZWZpbmVBY2Nlc3NvclByb3BlcnR5KToKKyAgICAgICAgKiBkZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FsbE9w
ZXJhdGlvbik6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcv
REZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExDYXBhYmlsaXRpZXMuY3BwOgorICAgICAg
ICAoSlNDOjpGVEw6OmNhbkNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMu
Y3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTm9kZSk6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVEZWZpbmVEYXRh
UHJvcGVydHkpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxl
RGVmaW5lQWNjZXNzb3JQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvQjM6OmNvbXBpbGVQdXRCeVZhbFdpdGhUaGlzKTogRGVsZXRlZC4KKyAgICAgICAgKiBqaXQv
Q0NhbGxIZWxwZXJzLmNwcDoKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpzZXR1cEZvdXJT
dHViQXJnc0dQUik6IERlbGV0ZWQuCisgICAgICAgICogaml0L0NDYWxsSGVscGVycy5oOgorICAg
ICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OnNldHVwRm91clN0dWJBcmdzR1BSKToKKyAgICAgICAg
KEpTQzo6Q0NhbGxIZWxwZXJzOjpzZXR1cEZpdmVTdHViQXJnc0dQUik6CisgICAgICAgIChKU0M6
OkNDYWxsSGVscGVyczo6c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKToKKyAgICAgICAgKEpT
Qzo6Q0NhbGxIZWxwZXJzOjpzZXR1cFN0dWJBcmdzR1BSKToKKyAgICAgICAgKEpTQzo6Q0NhbGxI
ZWxwZXJzOjpwcmVwYXJlRm9yVGFpbENhbGxTbG93KTogRGVsZXRlZC4KKyAgICAgICAgKiBqaXQv
SklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAg
ICAgICAgKiBqaXQvSklULmg6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuaDoKKyAgICAg
ICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRf
b3BfZGVmaW5lX2RhdGFfcHJvcGVydHkpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZGVm
aW5lX2FjY2Vzc29yX3Byb3BlcnR5KToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJl
dGVyLmFzbToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6CisgICAgICAg
IChKU0M6OlNMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRo
cy5oOgorICAgICAgICAqIHJ1bnRpbWUvRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzLmg6IEFkZGVk
LgorICAgICAgICAoSlNDOjpEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXM6OkRlZmluZVByb3BlcnR5
QXR0cmlidXRlcyk6CisgICAgICAgIChKU0M6OkRlZmluZVByb3BlcnR5QXR0cmlidXRlczo6cmF3
UmVwcmVzZW50YXRpb24pOgorICAgICAgICAoSlNDOjpEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXM6
Omhhc1ZhbHVlKToKKyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzOjpzZXRW
YWx1ZSk6CisgICAgICAgIChKU0M6OkRlZmluZVByb3BlcnR5QXR0cmlidXRlczo6aGFzR2V0KToK
KyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzOjpzZXRHZXQpOgorICAgICAg
ICAoSlNDOjpEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXM6Omhhc1NldCk6CisgICAgICAgIChKU0M6
OkRlZmluZVByb3BlcnR5QXR0cmlidXRlczo6c2V0U2V0KToKKyAgICAgICAgKEpTQzo6RGVmaW5l
UHJvcGVydHlBdHRyaWJ1dGVzOjp3cml0YWJsZSk6CisgICAgICAgIChKU0M6OkRlZmluZVByb3Bl
cnR5QXR0cmlidXRlczo6Y29uZmlndXJhYmxlKToKKyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVy
dHlBdHRyaWJ1dGVzOjplbnVtZXJhYmxlKToKKyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVydHlB
dHRyaWJ1dGVzOjpzZXRXcml0YWJsZSk6CisgICAgICAgIChKU0M6OkRlZmluZVByb3BlcnR5QXR0
cmlidXRlczo6c2V0Q29uZmlndXJhYmxlKToKKyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVydHlB
dHRyaWJ1dGVzOjpzZXRFbnVtZXJhYmxlKToKKyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVydHlB
dHRyaWJ1dGVzOjpmaWxsV2l0aFRyaVN0YXRlKToKKyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVy
dHlBdHRyaWJ1dGVzOjpleHRyYWN0VHJpU3RhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9i
YWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAg
ICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50
aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp0aHJv
d1R5cGVFcnJvckZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmRlZmlu
ZVByb3BlcnR5RnVuY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0Q29u
c3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpPYmplY3RDb25zdHJ1Y3Rvcjo6YWRkRGVmaW5l
UHJvcGVydHkpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3Iu
aDoKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5oOgorICAgICAgICAoSlND
Ojp0b1Byb3BlcnR5RGVzY3JpcHRvcik6CisKIDIwMTYtMDktMjYgIFNhbSBXZWluaWcgIDxzYW1A
d2Via2l0Lm9yZz4KIAogICAgICAgICBNYWtlIERGR1Nsb3dQYXRoR2VuZXJhdG9yIGEgYml0IG1v
cmUgdmFyaWFkaWMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZjczNGY5MTYyM2Zh
NDNkZDU0YTZhMDg2ODkyYTlhYWZiNTE4MTUzNS4uN2M3YzQ2YmRmZjExYmY1NGRkYTg5NzU1NWUz
YmQwMzZhZjE5Yjc5OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIxNjgsNiAr
MjE2OCw3IEBACiAJCUZFRDk0RjJGMTcxRTNFMjMwMEJFNzdBNCAvKiBXYXRjaGRvZy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVEOTRGMkMxNzFFM0Uy
MzAwQkU3N0E0IC8qIFdhdGNoZG9nLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJRkVGMDQwNTExQUFFNjYyRDAwQkQyOEIwIC8qIENvbXBhcmVBbmRT
d2FwVGVzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGRUYwNDA1MDFBQUU2NjJEMDBCRDI4QjAgLyogQ29tcGFyZUFuZFN3YXBUZXN0LmNwcCAqLzsg
fTsKIAkJRkVGRDZGQzYxRDVFNzk5MjAwOEYyRjBCIC8qIEpTU3RyaW5nSW5saW5lcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVGRDZGQzUxRDVFNzk3
MDAwOEYyRjBCIC8qIEpTU3RyaW5nSW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ3M0RBNEE0NzY0QzQ1RkU4NzFCMDQ4NSAvKiBEZWZp
bmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDE2OTk0OEVERTY4RDQwNTRCMDFFRjc5NyAvKiBEZWZpbmVQcm9wZXJ0eUF0
dHJpYnV0ZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWENvbnRhaW5l
ckl0ZW1Qcm94eSBzZWN0aW9uICovCkBAIC00NDk4LDYgKzQ0OTksNyBAQAogCQlGRUYwNDA1MDFB
QUU2NjJEMDBCRDI4QjAgLyogQ29tcGFyZUFuZFN3YXBUZXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENvbXBhcmVBbmRTd2FwVGVzdC5jcHA7IHBhdGggPSBBUEkv
dGVzdHMvQ29tcGFyZUFuZFN3YXBUZXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRkVGMDQwNTIxQUFFQzRFRDAwQkQyOEIwIC8qIENvbXBhcmVBbmRTd2FwVGVzdC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBDb21wYXJlQW5kU3dhcFRlc3QuaDsgcGF0aCA9
IEFQSS90ZXN0cy9Db21wYXJlQW5kU3dhcFRlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRkVGRDZGQzUxRDVFNzk3MDAwOEYyRjBCIC8qIEpTU3RyaW5nSW5saW5lcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1N0cmluZ0lubGluZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTY5OTQ4RURFNjhENDA1NEIwMUVGNzk3IC8qIERlZmluZVBy
b3BlcnR5QXR0cmlidXRlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBEZWZp
bmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaDsgcGF0aCA9IERlZmluZVByb3BlcnR5QXR0cmlidXRlcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogLyogRW5kIFBCWEZpbGVSZWZlcmVuY2Ugc2Vj
dGlvbiAqLwogCiAvKiBCZWdpbiBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9uICovCkBA
IC02MjQxLDYgKzYyNDMsNyBAQAogCQkJCTcwOUZCODY2MUFFMzM1QzYwMDM5RDA2OSAvKiBXZWFr
U2V0UHJvdG90eXBlLmggKi8sCiAJCQkJQTdEQ0I3NzkxMkUzRDkwNTAwOTExOTQwIC8qIFdyaXRl
QmFycmllci5oICovLAogCQkJCUMyQjZENzUyMThBMzM3OTMwMDRBOTMwMSAvKiBXcml0ZUJhcnJp
ZXJJbmxpbmVzLmggKi8sCisJCQkJMTY5OTQ4RURFNjhENDA1NEIwMUVGNzk3IC8qIERlZmluZVBy
b3BlcnR5QXR0cmlidXRlcy5oICovLAogCQkJKTsKIAkJCXBhdGggPSBydW50aW1lOwogCQkJc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTgzNzYsNiArODM3OSw3IEBACiAJCQkJODY3MDRCNDMx
MkRCOEE4MTAwQTlGRTdCIC8qIFlhcnJTeW50YXhDaGVja2VyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBNzlEM0VEOUM1MDY0REQwQTg0NjZBM0EgLyogTW9kdWxlU2NvcGVEYXRhLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlEOTcyMjc1MkRDNTQ0NTlCOTEyNUI1MzkgLyogSlNNb2R1bGVMb2FkZXIuaCBp
biBIZWFkZXJzICovLAorCQkJCTQ3M0RBNEE0NzY0QzQ1RkU4NzFCMDQ4NSAvKiBEZWZpbmVQcm9w
ZXJ0eUF0dHJpYnV0ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBs
b3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCmluZGV4IGRjNTk5ODA1NjkxY2RhNTdiNWQz
NjExNTk5ZGQ1ZjI4ZDcxMDJkYmUuLjU3NmRlNDAwNjA0ZDEwMTQ3NTFjYzYzYmVhY2VjNzdhNTVm
ZDRmZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUxpc3QuanNvbgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVM
aXN0Lmpzb24KQEAgLTgxLDYgKzgxLDggQEAKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3B1
dF9nZXR0ZXJfc2V0dGVyX2J5X2lkIiwgImxlbmd0aCIgOiA2IH0sCiAgICAgICAgICAgICB7ICJu
YW1lIiA6ICJvcF9wdXRfZ2V0dGVyX2J5X3ZhbCIsICJsZW5ndGgiIDogNSB9LAogICAgICAgICAg
ICAgeyAibmFtZSIgOiAib3BfcHV0X3NldHRlcl9ieV92YWwiLCAibGVuZ3RoIiA6IDUgfSwKKyAg
ICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2RlZmluZV9kYXRhX3Byb3BlcnR5IiwgImxlbmd0aCIg
OiA1IH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9kZWZpbmVfYWNjZXNzb3JfcHJvcGVy
dHkiLCAibGVuZ3RoIiA6IDYgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2ptcCIsICJs
ZW5ndGgiIDogMiB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfanRydWUiLCAibGVuZ3Ro
IiA6IDMgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2pmYWxzZSIsICJsZW5ndGgiIDog
MyB9LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
VXNlRGVmLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYu
aAppbmRleCBkYWJjZTRlZGYwMzI2NDhjMDg5Njg5OTgyYTg4MTdlYzYwMGE4MTdlLi40NWE5ZTA5
Y2JkODJlZjY4OWQzYjM0ZjhlZTUwZTExZWI5NWEzNzYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaApAQCAtMTQ0LDYgKzE0NCwyMyBAQCB2
b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqIGNvZGVCbG9jaywgT3Bjb2Rl
SUQgb3Bjb2RlSUQsIEluc3RydWN0aQogICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1
Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQpOwogICAgICAgICByZXR1
cm47CiAgICAgfQorICAgIGNhc2Ugb3BfZGVmaW5lX2RhdGFfcHJvcGVydHk6IHsKKyAgICAgICAg
QVNTRVJUKG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdID4gNCk7CisgICAgICAgIGZ1bmN0b3IoY29k
ZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7
CisgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3Ry
dWN0aW9uWzJdLnUub3BlcmFuZCk7CisgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVj
dGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzNdLnUub3BlcmFuZCk7CisgICAgICAgIGZ1bmN0
b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzRdLnUub3Bl
cmFuZCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgY2FzZSBvcF9kZWZpbmVfYWNjZXNz
b3JfcHJvcGVydHk6IHsKKyAgICAgICAgQVNTRVJUKG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdID4g
NSk7CisgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGlu
c3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CisgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0
cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzJdLnUub3BlcmFuZCk7CisgICAgICAgIGZ1
bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzNdLnUu
b3BlcmFuZCk7CisgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2Rl
SUQsIGluc3RydWN0aW9uWzRdLnUub3BlcmFuZCk7CisgICAgICAgIGZ1bmN0b3IoY29kZUJsb2Nr
LCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzVdLnUub3BlcmFuZCk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CiAgICAgY2FzZSBvcF9nZXRfcHJvcGVydHlfZW51bWVyYXRvcjoK
ICAgICBjYXNlIG9wX2dldF9lbnVtZXJhYmxlX2xlbmd0aDoKICAgICBjYXNlIG9wX25ld19mdW5j
X2V4cDoKQEAgLTMzMiw2ICszNDksOCBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZz
ZXQoQmxvY2sqIGNvZGVCbG9jaywgT3Bjb2RlSUQgb3Bjb2RlSUQsIEluc3RydWN0aQogICAgIGNh
c2Ugb3BfcHV0X2J5X3ZhbDoKICAgICBjYXNlIG9wX3B1dF9ieV92YWxfZGlyZWN0OgogICAgIGNh
c2Ugb3BfcHV0X2J5X2luZGV4OgorICAgIGNhc2Ugb3BfZGVmaW5lX2RhdGFfcHJvcGVydHk6Cisg
ICAgY2FzZSBvcF9kZWZpbmVfYWNjZXNzb3JfcHJvcGVydHk6CiAgICAgY2FzZSBvcF9wcm9maWxl
X3R5cGU6CiAgICAgY2FzZSBvcF9wcm9maWxlX2NvbnRyb2xfZmxvdzoKICAgICBjYXNlIG9wX3B1
dF90b19hcmd1bWVudHM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suY3BwCmluZGV4IDdjOWI1YzJiYTZkNmQ0MjdkMDc5N2IyYWY0ODE4ZGI5M2Y4OTkxNjkuLjdm
Nzc0YTkxNmJiMTQyMDgxMTQ4NGQwNWY1NGQyYTI5NGFmNWM2NDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC0xMjMzLDYgKzEyMzMsMjUgQEAg
dm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZSgKICAgICAgICAgICAgIG91dC5wcmludGYoIiVz
LCAlcywgJWQsICVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSku
ZGF0YSgpLCBuMCwgcmVnaXN0ZXJOYW1lKHIyKS5kYXRhKCkpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9kZWZpbmVfZGF0YV9wcm9wZXJ0eTogeworICAg
ICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBpbnQgcjEg
PSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIGludCByMiA9ICgrK2l0KS0+dS5vcGVy
YW5kOworICAgICAgICAgICAgaW50IHIzID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAg
ICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJkZWZpbmVfZGF0
YV9wcm9wZXJ0eSIpOworICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCAlcywgJXMiLCBy
ZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIHJlZ2lzdGVy
TmFtZShyMikuZGF0YSgpLCByZWdpc3Rlck5hbWUocjMpLmRhdGEoKSk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIG9wX2RlZmluZV9hY2Nlc3Nvcl9wcm9wZXJ0
eTogeworICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAg
ICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIGludCByMiA9ICgrK2l0
KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgaW50IHIzID0gKCsraXQpLT51Lm9wZXJhbmQ7Cisg
ICAgICAgICAgICBpbnQgcjQgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIHByaW50
TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgImRlZmluZV9hY2Nlc3Nvcl9w
cm9wZXJ0eSIpOworICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCAlcywgJXMsICVzIiwg
cmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCByZWdpc3Rl
ck5hbWUocjIpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIzKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShy
NCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGNhc2Ug
b3BfZGVsX2J5X2lkOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsK
ICAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWNpYWxQb2ludGVyLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY2lhbFBvaW50ZXIuaAppbmRleCA2NGZiMjNmY2YyN2Q0
MTI1MDQ4MDIxOWU4YzhjNDFiN2M0MWE3ZWY1Li45MGNiM2E5OTI2ZDYyZTYwNGIxOGMzYjNkYmQ1
NTIyYjQ1MmFlZGZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
U3BlY2lhbFBvaW50ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3Bl
Y2lhbFBvaW50ZXIuaApAQCAtNDIsNyArNDIsNyBAQCBlbnVtIFBvaW50ZXIgewogfSAvLyBuYW1l
c3BhY2UgU3BlY2lhbAogCiBlbnVtIGNsYXNzIExpbmtUaW1lQ29uc3RhbnQgewotICAgIERlZmlu
ZVByb3BlcnR5RnVuY3Rpb24sCisgICAgVGhyb3dUeXBlRXJyb3JGdW5jdGlvbiwKIH07CiBjb25z
dCB1bnNpZ25lZCBMaW5rVGltZUNvbnN0YW50Q291bnQgPSAxOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmlu
ZGV4IGNjNzE3MjNlZjNjMGY1ZDRiYjNjY2RlY2I4YmE5NzYyNzIzZDMyZmUuLmIwYzNjY2Q1YWNi
MjU1NjE4OGQ5MjgyMjI1YTU3NGIxZjA0NzJjMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0zNSw2
ICszNSw3IEBACiAjaW5jbHVkZSAiQnVpbHRpbkV4ZWN1dGFibGVzLmgiCiAjaW5jbHVkZSAiQnl0
ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uaCIKICNpbmNsdWRlICJCeXRlY29kZUxpdmVuZXNzQW5h
bHlzaXMuaCIKKyNpbmNsdWRlICJEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaCIKICNpbmNsdWRl
ICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0dl
bmVyYXRvckZ1bmN0aW9uLmgiCkBAIC0xNTQzLDYgKzE1NDQsOSBAQCBSZWdpc3RlcklEKiBCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdE1vdmVMaW5rVGltZUNvbnN0YW50KFJlZ2lzdGVySUQqIGRzdCwg
TGlua1RpbQogICAgICAgICBtX2xpbmtUaW1lQ29uc3RhbnRSZWdpc3RlcnNbY29uc3RhbnRJbmRl
eF0gPSAmbV9jb25zdGFudFBvb2xSZWdpc3RlcnNbaW5kZXhdOwogICAgIH0KIAorICAgIGlmICgh
ZHN0KQorICAgICAgICByZXR1cm4gbV9saW5rVGltZUNvbnN0YW50UmVnaXN0ZXJzW2NvbnN0YW50
SW5kZXhdOworCiAgICAgZW1pdE9wY29kZShvcF9tb3YpOwogICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZChkc3QtPmluZGV4KCkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtX2xpbmtUaW1l
Q29uc3RhbnRSZWdpc3RlcnNbY29uc3RhbnRJbmRleF0tPmluZGV4KCkpOwpAQCAtMzI2OCwzOCAr
MzI3Miw1OSBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TG9nU2hhZG93Q2hpY2tlblRh
aWxJZk5lY2Vzc2FyeSgpCiB9CiAKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxsRGVm
aW5lUHJvcGVydHkoUmVnaXN0ZXJJRCogbmV3T2JqLCBSZWdpc3RlcklEKiBwcm9wZXJ0eU5hbWVS
ZWdpc3RlciwKLSAgICBSZWdpc3RlcklEKiB2YWx1ZVJlZ2lzdGVyLCBSZWdpc3RlcklEKiBnZXR0
ZXJSZWdpc3RlciwgUmVnaXN0ZXJJRCogc2V0dGVyUmVnaXN0ZXIsIHVuc2lnbmVkIG9wdGlvbnMs
IGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBwb3NpdGlvbikKKyAgICBSZWdpc3RlcklEKiB2YWx1ZVJl
Z2lzdGVyLCBSZWdpc3RlcklEKiBnZXR0ZXJSZWdpc3RlciwgUmVnaXN0ZXJJRCogc2V0dGVyUmVn
aXN0ZXIsIHVuc2lnbmVkIG9wdGlvbnMpCiB7Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGRlc2Ny
aXB0b3JSZWdpc3RlciA9IGVtaXROZXdPYmplY3QobmV3VGVtcG9yYXJ5KCkpOwotCi0gICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IHRydWVSZWdpc3RlciA9IGVtaXRMb2FkKG5ld1RlbXBvcmFyeSgpLCB0
cnVlKTsKKyAgICBEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMgYXR0cmlidXRlczsKICAgICBpZiAo
b3B0aW9ucyAmIFByb3BlcnR5Q29uZmlndXJhYmxlKQotICAgICAgICBlbWl0RGlyZWN0UHV0QnlJ
ZChkZXNjcmlwdG9yUmVnaXN0ZXIuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS5jb25maWd1cmFibGUs
IHRydWVSZWdpc3Rlci5nZXQoKSwgUHJvcGVydHlOb2RlOjpVbmtub3duKTsKKyAgICAgICAgYXR0
cmlidXRlcy5zZXRDb25maWd1cmFibGUodHJ1ZSk7CisKICAgICBpZiAob3B0aW9ucyAmIFByb3Bl
cnR5V3JpdGFibGUpCi0gICAgICAgIGVtaXREaXJlY3RQdXRCeUlkKGRlc2NyaXB0b3JSZWdpc3Rl
ci5nZXQoKSwgcHJvcGVydHlOYW1lcygpLndyaXRhYmxlLCB0cnVlUmVnaXN0ZXIuZ2V0KCksIFBy
b3BlcnR5Tm9kZTo6VW5rbm93bik7Ci0gICAgZWxzZSBpZiAodmFsdWVSZWdpc3RlcikgewotICAg
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZmFsc2VSZWdpc3RlciA9IGVtaXRMb2FkKG5ld1RlbXBv
cmFyeSgpLCBmYWxzZSk7Ci0gICAgICAgIGVtaXREaXJlY3RQdXRCeUlkKGRlc2NyaXB0b3JSZWdp
c3Rlci5nZXQoKSwgcHJvcGVydHlOYW1lcygpLndyaXRhYmxlLCBmYWxzZVJlZ2lzdGVyLmdldCgp
LCBQcm9wZXJ0eU5vZGU6OlVua25vd24pOwotICAgIH0KKyAgICAgICAgYXR0cmlidXRlcy5zZXRX
cml0YWJsZSh0cnVlKTsKKyAgICBlbHNlIGlmICh2YWx1ZVJlZ2lzdGVyKQorICAgICAgICBhdHRy
aWJ1dGVzLnNldFdyaXRhYmxlKGZhbHNlKTsKKwogICAgIGlmIChvcHRpb25zICYgUHJvcGVydHlF
bnVtZXJhYmxlKQotICAgICAgICBlbWl0RGlyZWN0UHV0QnlJZChkZXNjcmlwdG9yUmVnaXN0ZXIu
Z2V0KCksIHByb3BlcnR5TmFtZXMoKS5lbnVtZXJhYmxlLCB0cnVlUmVnaXN0ZXIuZ2V0KCksIFBy
b3BlcnR5Tm9kZTo6VW5rbm93bik7CisgICAgICAgIGF0dHJpYnV0ZXMuc2V0RW51bWVyYWJsZSh0
cnVlKTsKIAogICAgIGlmICh2YWx1ZVJlZ2lzdGVyKQotICAgICAgICBlbWl0RGlyZWN0UHV0QnlJ
ZChkZXNjcmlwdG9yUmVnaXN0ZXIuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS52YWx1ZSwgdmFsdWVS
ZWdpc3RlciwgUHJvcGVydHlOb2RlOjpVbmtub3duKTsKKyAgICAgICAgYXR0cmlidXRlcy5zZXRW
YWx1ZSgpOwogICAgIGlmIChnZXR0ZXJSZWdpc3RlcikKLSAgICAgICAgZW1pdERpcmVjdFB1dEJ5
SWQoZGVzY3JpcHRvclJlZ2lzdGVyLmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkuZ2V0LCBnZXR0ZXJS
ZWdpc3RlciwgUHJvcGVydHlOb2RlOjpVbmtub3duKTsKKyAgICAgICAgYXR0cmlidXRlcy5zZXRH
ZXQoKTsKICAgICBpZiAoc2V0dGVyUmVnaXN0ZXIpCi0gICAgICAgIGVtaXREaXJlY3RQdXRCeUlk
KGRlc2NyaXB0b3JSZWdpc3Rlci5nZXQoKSwgcHJvcGVydHlOYW1lcygpLnNldCwgc2V0dGVyUmVn
aXN0ZXIsIFByb3BlcnR5Tm9kZTo6VW5rbm93bik7CisgICAgICAgIGF0dHJpYnV0ZXMuc2V0U2V0
KCk7CiAKLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZGVmaW5lUHJvcGVydHlSZWdpc3RlciA9IGVt
aXRNb3ZlTGlua1RpbWVDb25zdGFudChuZXdUZW1wb3JhcnkoKSwgTGlua1RpbWVDb25zdGFudDo6
RGVmaW5lUHJvcGVydHlGdW5jdGlvbik7CisgICAgQVNTRVJUKCF2YWx1ZVJlZ2lzdGVyIHx8ICgh
Z2V0dGVyUmVnaXN0ZXIgJiYgIXNldHRlclJlZ2lzdGVyKSk7CiAKLSAgICBDYWxsQXJndW1lbnRz
IGNhbGxBcmd1bWVudHMoKnRoaXMsIG51bGxwdHIsIDMpOwotICAgIGVtaXRMb2FkKGNhbGxBcmd1
bWVudHMudGhpc1JlZ2lzdGVyKCksIGpzVW5kZWZpbmVkKCkpOwotICAgIGVtaXRNb3ZlKGNhbGxB
cmd1bWVudHMuYXJndW1lbnRSZWdpc3RlcigwKSwgbmV3T2JqKTsKLSAgICBlbWl0TW92ZShjYWxs
QXJndW1lbnRzLmFyZ3VtZW50UmVnaXN0ZXIoMSksIHByb3BlcnR5TmFtZVJlZ2lzdGVyKTsKLSAg
ICBlbWl0TW92ZShjYWxsQXJndW1lbnRzLmFyZ3VtZW50UmVnaXN0ZXIoMiksIGRlc2NyaXB0b3JS
ZWdpc3Rlci5nZXQoKSk7CisgICAgaWYgKGF0dHJpYnV0ZXMuaGFzR2V0KCkgfHwgYXR0cmlidXRl
cy5oYXNTZXQoKSkgeworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGhyb3dUeXBlRXJyb3JG
dW5jdGlvbjsKKyAgICAgICAgaWYgKCFhdHRyaWJ1dGVzLmhhc0dldCgpIHx8ICFhdHRyaWJ1dGVz
Lmhhc1NldCgpKQorICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3JGdW5jdGlvbiA9IGVtaXRNb3Zl
TGlua1RpbWVDb25zdGFudChudWxscHRyLCBMaW5rVGltZUNvbnN0YW50OjpUaHJvd1R5cGVFcnJv
ckZ1bmN0aW9uKTsKIAotICAgIGVtaXRDYWxsKG5ld1RlbXBvcmFyeSgpLCBkZWZpbmVQcm9wZXJ0
eVJlZ2lzdGVyLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIHBvc2l0
aW9uLCBwb3NpdGlvbiwgcG9zaXRpb24pOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZ2V0
dGVyOworICAgICAgICBpZiAoYXR0cmlidXRlcy5oYXNHZXQoKSkKKyAgICAgICAgICAgIGdldHRl
ciA9IGdldHRlclJlZ2lzdGVyOworICAgICAgICBlbHNlCisgICAgICAgICAgICBnZXR0ZXIgPSB0
aHJvd1R5cGVFcnJvckZ1bmN0aW9uOworCisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzZXR0
ZXI7CisgICAgICAgIGlmIChhdHRyaWJ1dGVzLmhhc1NldCgpKQorICAgICAgICAgICAgc2V0dGVy
ID0gc2V0dGVyUmVnaXN0ZXI7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHNldHRlciA9IHRo
cm93VHlwZUVycm9yRnVuY3Rpb247CisKKyAgICAgICAgZW1pdE9wY29kZShvcF9kZWZpbmVfYWNj
ZXNzb3JfcHJvcGVydHkpOworICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobmV3T2JqLT5p
bmRleCgpKTsKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHByb3BlcnR5TmFtZVJlZ2lz
dGVyLT5pbmRleCgpKTsKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGdldHRlci0+aW5k
ZXgoKSk7CisgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChzZXR0ZXItPmluZGV4KCkpOwor
ICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIo
YXR0cmlidXRlcy5yYXdSZXByZXNlbnRhdGlvbigpKSktPmluZGV4KCkpOworICAgIH0gZWxzZSB7
CisgICAgICAgIGVtaXRPcGNvZGUob3BfZGVmaW5lX2RhdGFfcHJvcGVydHkpOworICAgICAgICBp
bnN0cnVjdGlvbnMoKS5hcHBlbmQobmV3T2JqLT5pbmRleCgpKTsKKyAgICAgICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKHByb3BlcnR5TmFtZVJlZ2lzdGVyLT5pbmRleCgpKTsKKyAgICAgICAgaW5z
dHJ1Y3Rpb25zKCkuYXBwZW5kKHZhbHVlUmVnaXN0ZXItPmluZGV4KCkpOworICAgICAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQoZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoYXR0cmlidXRlcy5y
YXdSZXByZXNlbnRhdGlvbigpKSktPmluZGV4KCkpOworICAgIH0KIH0KIAogUmVnaXN0ZXJJRCog
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXR1cm4oUmVnaXN0ZXJJRCogc3JjKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5o
CmluZGV4IGQzMjY0YzRhMDg3N2EzNjJlOTA0ZTFmODM2YmJkNDU2MDQyOWUwZmUuLjllNmNkYmEz
NjIzZTkyNjI2Y2M4ZmQzOTdmMDllNzE0MzNmYjFjYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTU4OCw3
ICs1ODgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIFByb3BlcnR5RW51bWVyYWJs
ZSAgID0gMSA8PCAyLAogICAgICAgICB9OwogICAgICAgICB2b2lkIGVtaXRDYWxsRGVmaW5lUHJv
cGVydHkoUmVnaXN0ZXJJRCogbmV3T2JqLCBSZWdpc3RlcklEKiBwcm9wZXJ0eU5hbWVSZWdpc3Rl
ciwKLSAgICAgICAgICAgIFJlZ2lzdGVySUQqIHZhbHVlUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIGdl
dHRlclJlZ2lzdGVyLCBSZWdpc3RlcklEKiBzZXR0ZXJSZWdpc3RlciwgdW5zaWduZWQgb3B0aW9u
cywgY29uc3QgSlNUZXh0UG9zaXRpb24mKTsKKyAgICAgICAgICAgIFJlZ2lzdGVySUQqIHZhbHVl
UmVnaXN0ZXIsIFJlZ2lzdGVySUQqIGdldHRlclJlZ2lzdGVyLCBSZWdpc3RlcklEKiBzZXR0ZXJS
ZWdpc3RlciwgdW5zaWduZWQgb3B0aW9ucyk7CiAKICAgICAgICAgdm9pZCBlbWl0RW51bWVyYXRp
b24oVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIGVudW1lcmF0aW9uTm9kZSwgRXhwcmVzc2lvbk5v
ZGUqIHN1YmplY3ROb2RlLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPHZvaWQoQnl0ZWNvZGVHZW5lcmF0
b3ImLCBSZWdpc3RlcklEKik+JiBjYWxsQmFjaywgVmFyaWFibGVFbnZpcm9ubWVudE5vZGUqID0g
bnVsbHB0ciwgUmVnaXN0ZXJJRCogZm9yTG9vcFN5bWJvbFRhYmxlID0gbnVsbHB0cik7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2Vu
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNw
cAppbmRleCBjMjY4YTI2MDhkMzhkNmRlYTdhY2I4MTc3MDdlNTlmMWM1MjVmMjgyLi4yYjU5MGM4
N2MwZjE2YjAwZjYyYzAzZmY4NjYxYjU5MzBmZDYwZTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC01OTAsMTIgKzU5
MCwxMiBAQCB2b2lkIFByb3BlcnR5TGlzdE5vZGU6OmVtaXRQdXRDb25zdGFudFByb3BlcnR5KEJ5
dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZwogICAgICAgICBBU1NFUlQobm9kZS5uZWVk
c1N1cGVyQmluZGluZygpKTsKICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByb3BlcnR5TmFt
ZVJlZ2lzdGVyOwogICAgICAgICBpZiAobm9kZS5uYW1lKCkpCi0gICAgICAgICAgICBwcm9wZXJ0
eU5hbWVSZWdpc3RlciA9IGdlbmVyYXRvci5lbWl0TG9hZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5
KCksICpub2RlLm5hbWUoKSk7CisgICAgICAgICAgICBwcm9wZXJ0eU5hbWVSZWdpc3RlciA9IGdl
bmVyYXRvci5lbWl0TG9hZChudWxscHRyLCAqbm9kZS5uYW1lKCkpOwogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICBwcm9wZXJ0eU5hbWVSZWdpc3RlciA9IGdlbmVyYXRvci5lbWl0Tm9kZShub2Rl
Lm1fZXhwcmVzc2lvbik7CiAKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRTZXRGdW5jdGlvbk5hbWVJ
Zk5lZWRlZChub2RlLm1fYXNzaWduLCB2YWx1ZS5nZXQoKSwgcHJvcGVydHlOYW1lUmVnaXN0ZXIu
Z2V0KCkpOwotICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGxEZWZpbmVQcm9wZXJ0eShuZXdPYmos
IHByb3BlcnR5TmFtZVJlZ2lzdGVyLmdldCgpLCB2YWx1ZS5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0
ciwgQnl0ZWNvZGVHZW5lcmF0b3I6OlByb3BlcnR5Q29uZmlndXJhYmxlIHwgQnl0ZWNvZGVHZW5l
cmF0b3I6OlByb3BlcnR5V3JpdGFibGUsIG1fcG9zaXRpb24pOworICAgICAgICBnZW5lcmF0b3Iu
ZW1pdENhbGxEZWZpbmVQcm9wZXJ0eShuZXdPYmosIHByb3BlcnR5TmFtZVJlZ2lzdGVyLmdldCgp
LCB2YWx1ZS5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0ciwgQnl0ZWNvZGVHZW5lcmF0b3I6OlByb3Bl
cnR5Q29uZmlndXJhYmxlIHwgQnl0ZWNvZGVHZW5lcmF0b3I6OlByb3BlcnR5V3JpdGFibGUpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmIChjb25zdCBhdXRvKiBpZGVudGlmaWVyID0g
bm9kZS5uYW1lKCkpIHsKQEAgLTYwNSw3ICs2MDUsNyBAQCB2b2lkIFByb3BlcnR5TGlzdE5vZGU6
OmVtaXRQdXRDb25zdGFudFByb3BlcnR5KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJl
ZwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IGluZGV4ID0gZ2VuZXJhdG9yLmVtaXRMb2FkKGdlbmVyYXRvci5uZXdUZW1wb3Jhcnko
KSwganNOdW1iZXIob3B0aW9uYWxJbmRleC52YWx1ZSgpKSk7CisgICAgICAgIFJlZlB0cjxSZWdp
c3RlcklEPiBpbmRleCA9IGdlbmVyYXRvci5lbWl0TG9hZChudWxscHRyLCBqc051bWJlcihvcHRp
b25hbEluZGV4LnZhbHVlKCkpKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXREaXJlY3RQdXRCeVZh
bChuZXdPYmosIGluZGV4LmdldCgpLCB2YWx1ZS5nZXQoKSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CkBAIC0xNjIzLDcgKzE2MjMsNyBAQCBSZWdpc3RlcklEKiBVbmFyeVBsdXNOb2RlOjplbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRAogIAogUmVn
aXN0ZXJJRCogQml0d2lzZU5vdE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYg
Z2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNy
YzIgPSBnZW5lcmF0b3IuZW1pdExvYWQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBqc051bWJl
cigtMSkpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzcmMyID0gZ2VuZXJhdG9yLmVtaXRMb2Fk
KG51bGxwdHIsIGpzTnVtYmVyKC0xKSk7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNyYzEgPSBn
ZW5lcmF0b3IuZW1pdE5vZGUobV9leHByKTsKICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRCaW5h
cnlPcChvcF9iaXR4b3IsIGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgc3JjMS5nZXQo
KSksIHNyYzEuZ2V0KCksIHNyYzIuZ2V0KCksIE9wZXJhbmRUeXBlcyhtX2V4cHItPnJlc3VsdERl
c2NyaXB0b3IoKSwgUmVzdWx0VHlwZTo6bnVtYmVyVHlwZUlzSW50MzIoKSkpOwogfQpAQCAtMzYw
MywxMiArMzYwMywxMiBAQCBSZWdpc3RlcklEKiBDbGFzc0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRAogICAgICAgICBlbWl0UHV0
SG9tZU9iamVjdChnZW5lcmF0b3IsIGNvbnN0cnVjdG9yLmdldCgpLCBwcm90b3R5cGUuZ2V0KCkp
OwogICAgIH0KIAotICAgIFJlZlB0cjxSZWdpc3RlcklEPiBjb25zdHJ1Y3Rvck5hbWVSZWdpc3Rl
ciA9IGdlbmVyYXRvci5lbWl0TG9hZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHByb3BlcnR5
TmFtZXMuY29uc3RydWN0b3IpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBjb25zdHJ1Y3Rvck5h
bWVSZWdpc3RlciA9IGdlbmVyYXRvci5lbWl0TG9hZChudWxscHRyLCBwcm9wZXJ0eU5hbWVzLmNv
bnN0cnVjdG9yKTsKICAgICBnZW5lcmF0b3IuZW1pdENhbGxEZWZpbmVQcm9wZXJ0eShwcm90b3R5
cGUuZ2V0KCksIGNvbnN0cnVjdG9yTmFtZVJlZ2lzdGVyLmdldCgpLCBjb25zdHJ1Y3Rvci5nZXQo
KSwgbnVsbHB0ciwgbnVsbHB0ciwKLSAgICAgICAgQnl0ZWNvZGVHZW5lcmF0b3I6OlByb3BlcnR5
Q29uZmlndXJhYmxlIHwgQnl0ZWNvZGVHZW5lcmF0b3I6OlByb3BlcnR5V3JpdGFibGUsIG1fcG9z
aXRpb24pOworICAgICAgICBCeXRlY29kZUdlbmVyYXRvcjo6UHJvcGVydHlDb25maWd1cmFibGUg
fCBCeXRlY29kZUdlbmVyYXRvcjo6UHJvcGVydHlXcml0YWJsZSk7CiAKLSAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gcHJvdG90eXBlTmFtZVJlZ2lzdGVyID0gZ2VuZXJhdG9yLmVtaXRMb2FkKGdlbmVy
YXRvci5uZXdUZW1wb3JhcnkoKSwgcHJvcGVydHlOYW1lcy5wcm90b3R5cGUpOwotICAgIGdlbmVy
YXRvci5lbWl0Q2FsbERlZmluZVByb3BlcnR5KGNvbnN0cnVjdG9yLmdldCgpLCBwcm90b3R5cGVO
YW1lUmVnaXN0ZXIuZ2V0KCksIHByb3RvdHlwZS5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0ciwgMCwg
bV9wb3NpdGlvbik7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByb3RvdHlwZU5hbWVSZWdpc3Rl
ciA9IGdlbmVyYXRvci5lbWl0TG9hZChudWxscHRyLCBwcm9wZXJ0eU5hbWVzLnByb3RvdHlwZSk7
CisgICAgZ2VuZXJhdG9yLmVtaXRDYWxsRGVmaW5lUHJvcGVydHkoY29uc3RydWN0b3IuZ2V0KCks
IHByb3RvdHlwZU5hbWVSZWdpc3Rlci5nZXQoKSwgcHJvdG90eXBlLmdldCgpLCBudWxscHRyLCBu
dWxscHRyLCAwKTsKIAogICAgIGlmIChtX3N0YXRpY01ldGhvZHMpCiAgICAgICAgIGdlbmVyYXRv
ci5lbWl0Tm9kZShjb25zdHJ1Y3Rvci5nZXQoKSwgbV9zdGF0aWNNZXRob2RzKTsKQEAgLTM4NzAs
NyArMzg3MCw3IEBAIHZvaWQgT2JqZWN0UGF0dGVybk5vZGU6OmJpbmRWYWx1ZShCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiByaHMpCiAgICAgICAgICAgICBpZiAoIW9w
dGlvbmFsSW5kZXgpCiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKHRlbXAu
Z2V0KCksIHJocywgdGFyZ2V0LnByb3BlcnR5TmFtZSk7CiAgICAgICAgICAgICBlbHNlIHsKLSAg
ICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaW5kZXggPSBnZW5lcmF0b3IuZW1pdExv
YWQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBqc051bWJlcihvcHRpb25hbEluZGV4LnZhbHVl
KCkpKTsKKyAgICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaW5kZXggPSBnZW5lcmF0
b3IuZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIob3B0aW9uYWxJbmRleC52YWx1ZSgpKSk7CiAg
ICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRCeVZhbCh0ZW1wLmdldCgpLCByaHMsIGlu
ZGV4LmdldCgpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGlu
ZXMuaAppbmRleCA4Yzc0MTI2NjI2NWM4MTQ4MDZmMWYwZmI3MTQ4MzdlMjNjNTBkYzhkLi5lOTZi
MTA1Y2FmMWEyZTEwNDFjOTliZjYxYThiOGI2NzM0ZGFjMWQzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5o
CkBAIC0yNjU3LDYgKzI2NTcsMTEgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0
U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAg
Y2xvYmJlcldvcmxkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2xvYmJlckxpbWl0KTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQorCisgICAgY2FzZSBEZWZpbmVEYXRhUHJvcGVydHk6CisgICAgY2Fz
ZSBEZWZpbmVBY2Nlc3NvclByb3BlcnR5OgorICAgICAgICBjbG9iYmVyV29ybGQobm9kZS0+b3Jp
Z2luLnNlbWFudGljLCBjbG9iYmVyTGltaXQpOworICAgICAgICBicmVhazsKICAgICAgICAgCiAg
ICAgY2FzZSBJbjogewogICAgICAgICAvLyBGSVhNRTogV2UgY2FuIGRldGVybWluZSB3aGVuIHRo
ZSBwcm9wZXJ0eSBkZWZpbml0ZWx5IGV4aXN0cyBiYXNlZCBvbiBhYnN0cmFjdApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCAwNDUyMjgw
ZGQyNmY0MGIwYmNhNDVkMzg1MWQxMTBkZjQxNmEwZmE3Li4wYjVmYjk1ZDk1N2IxMmE0MzgxY2Zm
YjliNmMyYTRlYjMyYWIzYTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtNDIzOCw2ICs0MjM4LDM4IEBAIGJvb2wgQnl0ZUNvZGVQ
YXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICBORVhUX09QQ09E
RShvcF9wdXRfYnlfdmFsX3dpdGhfdGhpcyk7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIG9w
X2RlZmluZV9kYXRhX3Byb3BlcnR5OiB7CisgICAgICAgICAgICBOb2RlKiBiYXNlID0gZ2V0KFZp
cnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSk7CisgICAgICAg
ICAgICBOb2RlKiBwcm9wZXJ0eSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0
aW9uWzJdLnUub3BlcmFuZCkpOworICAgICAgICAgICAgTm9kZSogdmFsdWUgPSBnZXQoVmlydHVh
bFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpKTsKKyAgICAgICAgICAg
IE5vZGUqIGF0dHJpYnV0ZXMgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlv
bls0XS51Lm9wZXJhbmQpKTsKKworICAgICAgICAgICAgYWRkVmFyQXJnQ2hpbGQoYmFzZSk7Cisg
ICAgICAgICAgICBhZGRWYXJBcmdDaGlsZChwcm9wZXJ0eSk7CisgICAgICAgICAgICBhZGRWYXJB
cmdDaGlsZCh2YWx1ZSk7CisgICAgICAgICAgICBhZGRWYXJBcmdDaGlsZChhdHRyaWJ1dGVzKTsK
KyAgICAgICAgICAgIGFkZFRvR3JhcGgoTm9kZTo6VmFyQXJnLCBEZWZpbmVEYXRhUHJvcGVydHks
IE9wSW5mbygwKSwgT3BJbmZvKDApKTsKKworICAgICAgICAgICAgTkVYVF9PUENPREUob3BfZGVm
aW5lX2RhdGFfcHJvcGVydHkpOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBvcF9kZWZpbmVf
YWNjZXNzb3JfcHJvcGVydHk6IHsKKyAgICAgICAgICAgIE5vZGUqIGJhc2UgPSBnZXQoVmlydHVh
bFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpKTsKKyAgICAgICAgICAg
IE5vZGUqIHByb3BlcnR5ID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25b
Ml0udS5vcGVyYW5kKSk7CisgICAgICAgICAgICBOb2RlKiBnZXR0ZXIgPSBnZXQoVmlydHVhbFJl
Z2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpKTsKKyAgICAgICAgICAgIE5v
ZGUqIHNldHRlciA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzRdLnUu
b3BlcmFuZCkpOworICAgICAgICAgICAgTm9kZSogYXR0cmlidXRlcyA9IGdldChWaXJ0dWFsUmVn
aXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzVdLnUub3BlcmFuZCkpOworCisgICAgICAgICAgICBh
ZGRWYXJBcmdDaGlsZChiYXNlKTsKKyAgICAgICAgICAgIGFkZFZhckFyZ0NoaWxkKHByb3BlcnR5
KTsKKyAgICAgICAgICAgIGFkZFZhckFyZ0NoaWxkKGdldHRlcik7CisgICAgICAgICAgICBhZGRW
YXJBcmdDaGlsZChzZXR0ZXIpOworICAgICAgICAgICAgYWRkVmFyQXJnQ2hpbGQoYXR0cmlidXRl
cyk7CisgICAgICAgICAgICBhZGRUb0dyYXBoKE5vZGU6OlZhckFyZywgRGVmaW5lQWNjZXNzb3JQ
cm9wZXJ0eSwgT3BJbmZvKDApLCBPcEluZm8oMCkpOworCisgICAgICAgICAgICBORVhUX09QQ09E
RShvcF9kZWZpbmVfYWNjZXNzb3JfcHJvcGVydHkpOworICAgICAgICB9CisKICAgICAgICAgY2Fz
ZSBvcF90cnlfZ2V0X2J5X2lkOgogICAgICAgICBjYXNlIG9wX2dldF9ieV9pZDoKICAgICAgICAg
Y2FzZSBvcF9nZXRfYnlfaWRfcHJvdG9fbG9hZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAppbmRleCA0OGZhNDk1NzJlYzUwZWMxNWQwMzc3NmE1MjJk
NmZiZDM1MmJmZTlhLi5jMzIzZDQ2ZmJjM2NmNWMxMDQ5ZmEyNmZjMGUxOTBmMjI3MWE0NzE4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCkBAIC0x
NzMsNiArMTczLDggQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJRCBv
cGNvZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWMKICAgICBjYXNlIG9wX3B1dF9n
ZXR0ZXJfc2V0dGVyX2J5X2lkOgogICAgIGNhc2Ugb3BfcHV0X2dldHRlcl9ieV92YWw6CiAgICAg
Y2FzZSBvcF9wdXRfc2V0dGVyX2J5X3ZhbDoKKyAgICBjYXNlIG9wX2RlZmluZV9kYXRhX3Byb3Bl
cnR5OgorICAgIGNhc2Ugb3BfZGVmaW5lX2FjY2Vzc29yX3Byb3BlcnR5OgogICAgIGNhc2Ugb3Bf
ZGVsX2J5X2lkOgogICAgIGNhc2Ugb3BfZGVsX2J5X3ZhbDoKICAgICBjYXNlIG9wX2ptcDoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKaW5kZXggYzFjM2ZkZGRiN2E3
YTYwYjQ2NTJhMTdjYWUxYTk4M2Y4Y2FlOTYxMS4uY2NjZGY4YmNkNjI2YWE0ZDY3NjM3M2NkMjg0
MmUyZTU2YWUwYWMxMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
bG9iYmVyaXplLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXpl
LmgKQEAgLTQ4Niw2ICs0ODYsOCBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2Rl
KiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgIGNhc2Ug
UHV0R2V0dGVyU2V0dGVyQnlJZDoKICAgICBjYXNlIFB1dEdldHRlckJ5VmFsOgogICAgIGNhc2Ug
UHV0U2V0dGVyQnlWYWw6CisgICAgY2FzZSBEZWZpbmVEYXRhUHJvcGVydHk6CisgICAgY2FzZSBE
ZWZpbmVBY2Nlc3NvclByb3BlcnR5OgogICAgIGNhc2UgRGVsZXRlQnlJZDoKICAgICBjYXNlIERl
bGV0ZUJ5VmFsOgogICAgIGNhc2UgQXJyYXlQdXNoOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdEb2VzR0MuY3BwCmluZGV4IDJkY2Y1NWQyZWQyOGFhZTYwYjZiOGI3YjliZjZkYTA3MTlkOTJk
ZDUuLmY2OWQyZjlmZjk3ZDQwOGE4ZjJlODE3NmY1YWE3YjNjOWM3NTNkYmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKQEAgLTExMSw2ICsxMTEsOCBAQCBib29sIGRv
ZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBQdXRHZXR0ZXJTZXR0ZXJC
eUlkOgogICAgIGNhc2UgUHV0R2V0dGVyQnlWYWw6CiAgICAgY2FzZSBQdXRTZXR0ZXJCeVZhbDoK
KyAgICBjYXNlIERlZmluZURhdGFQcm9wZXJ0eToKKyAgICBjYXNlIERlZmluZUFjY2Vzc29yUHJv
cGVydHk6CiAgICAgY2FzZSBEZWxldGVCeUlkOgogICAgIGNhc2UgRGVsZXRlQnlWYWw6CiAgICAg
Y2FzZSBDaGVja1N0cnVjdHVyZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRml4dXBQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVw
UGhhc2UuY3BwCmluZGV4IDZlZTUxNDJmNzhmNjBiZjEwOTY4M2M4Yjg5YzE1ZDBlNDU4YjNmZTAu
LmQzYzU5NDEwNGFjOTMwZDU0MWUyNjY5MmEwNWFkNTViOWRkNjk5MzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcApAQCAtMTYwMiw2ICsxNjAyLDM5IEBA
IGNsYXNzIEZpeHVwUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgZml4RWRnZTxV
bnR5cGVkVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBicmVhazsKIAorICAgICAg
ICBjYXNlIERlZmluZURhdGFQcm9wZXJ0eTogeworICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNl
PihtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDApKTsKKyAgICAgICAgICAgIEVkZ2UmIHByb3Bl
cnR5RWRnZSA9IG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSk7CisgICAgICAgICAgICBpZiAo
cHJvcGVydHlFZGdlLT5zaG91bGRTcGVjdWxhdGVTeW1ib2woKSkKKyAgICAgICAgICAgICAgICBm
aXhFZGdlPFN5bWJvbFVzZT4ocHJvcGVydHlFZGdlKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHBy
b3BlcnR5RWRnZS0+c2hvdWxkU3BlY3VsYXRlU3RyaW5nSWRlbnQoKSkKKyAgICAgICAgICAgICAg
ICBmaXhFZGdlPFN0cmluZ0lkZW50VXNlPihwcm9wZXJ0eUVkZ2UpOworICAgICAgICAgICAgZWxz
ZSBpZiAocHJvcGVydHlFZGdlLT5zaG91bGRTcGVjdWxhdGVTdHJpbmcoKSkKKyAgICAgICAgICAg
ICAgICBmaXhFZGdlPFN0cmluZ1VzZT4ocHJvcGVydHlFZGdlKTsKKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICBmaXhFZGdlPFVudHlwZWRVc2U+KHByb3BlcnR5RWRnZSk7CisgICAg
ICAgICAgICBmaXhFZGdlPFVudHlwZWRVc2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMikp
OworICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2Rl
LCAzKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgRGVm
aW5lQWNjZXNzb3JQcm9wZXJ0eTogeworICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNlPihtX2dy
YXBoLnZhckFyZ0NoaWxkKG5vZGUsIDApKTsKKyAgICAgICAgICAgIEVkZ2UmIHByb3BlcnR5RWRn
ZSA9IG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSk7CisgICAgICAgICAgICBpZiAocHJvcGVy
dHlFZGdlLT5zaG91bGRTcGVjdWxhdGVTeW1ib2woKSkKKyAgICAgICAgICAgICAgICBmaXhFZGdl
PFN5bWJvbFVzZT4ocHJvcGVydHlFZGdlKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHByb3BlcnR5
RWRnZS0+c2hvdWxkU3BlY3VsYXRlU3RyaW5nSWRlbnQoKSkKKyAgICAgICAgICAgICAgICBmaXhF
ZGdlPFN0cmluZ0lkZW50VXNlPihwcm9wZXJ0eUVkZ2UpOworICAgICAgICAgICAgZWxzZSBpZiAo
cHJvcGVydHlFZGdlLT5zaG91bGRTcGVjdWxhdGVTdHJpbmcoKSkKKyAgICAgICAgICAgICAgICBm
aXhFZGdlPFN0cmluZ1VzZT4ocHJvcGVydHlFZGdlKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICBmaXhFZGdlPFVudHlwZWRVc2U+KHByb3BlcnR5RWRnZSk7CisgICAgICAgICAg
ICBmaXhFZGdlPENlbGxVc2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMikpOworICAgICAg
ICAgICAgZml4RWRnZTxDZWxsVXNlPihtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDMpKTsKKyAg
ICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgNCkp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwogI2lmICFBU1NFUlRfRElTQUJMRUQK
ICAgICAgICAgLy8gSGF2ZSB0aGVzZSBuby1vcCBjYXNlcyBoZXJlIHRvIGVuc3VyZSB0aGF0IG5v
Ym9keSBmb3JnZXRzIHRvIGFkZCBoYW5kbGVycyBmb3IgbmV3IG9wY29kZXMuCiAgICAgICAgIGNh
c2UgU2V0QXJndW1lbnQ6CkBAIC0xNjcxLDggKzE3MDQsNiBAQCBjbGFzcyBGaXh1cFBoYXNlIDog
cHVibGljIFBoYXNlIHsKICAgICAgICAgY2FzZSBHZXRCeVZhbFdpdGhUaGlzOgogICAgICAgICBj
YXNlIENvbXBhcmVFcVB0cjoKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgCi0gICAg
ICAgICAgICBicmVhazsKICNlbHNlCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBicmVh
azsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAppbmRleCAxZjM1ZWIyZDkw
M2I0NjZjMjQxOGMzZGMxYjYxODUzZWJlNWQ2OTc5Li4yNTE1ZWIzNDJiZDczODllMTE4ODdhYmQ4
MmYwZWNmZjAxMDdkYmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGVUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5o
CkBAIC0xOTksNiArMTk5LDggQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAg
IG1hY3JvKFB1dEdldHRlclNldHRlckJ5SWQsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNy
byhQdXRHZXR0ZXJCeVZhbCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFB1dFNldHRl
ckJ5VmFsLCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8oRGVmaW5lRGF0YVByb3BlcnR5
LCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUhhc1ZhckFyZ3MpIFwKKyAgICBtYWNybyhEZWZpbmVB
Y2Nlc3NvclByb3BlcnR5LCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUhhc1ZhckFyZ3MpIFwKICAg
ICBtYWNybyhEZWxldGVCeUlkLCBOb2RlUmVzdWx0Qm9vbGVhbiB8IE5vZGVNdXN0R2VuZXJhdGUp
IFwKICAgICBtYWNybyhEZWxldGVCeVZhbCwgTm9kZVJlc3VsdEJvb2xlYW4gfCBOb2RlTXVzdEdl
bmVyYXRlKSBcCiAgICAgbWFjcm8oQ2hlY2tTdHJ1Y3R1cmUsIE5vZGVNdXN0R2VuZXJhdGUpIFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCmluZGV4IDdlOGNj
NThjOGQ4MzM4OWI2Y2QyOTExZDVhYWU4ZDM3ODQ2NTA1ODguLjgxMzRlZDE1NTY0NDQ3MDU5OGUx
YTBhYzc0MTRiMTgzMGY2MjM1ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
cGVyYXRpb25zLmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkRGR1RvRlRMRGVmZXJy
ZWRDb21waWxhdGlvbkNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiREZHVG9GVExGb3JPU1JFbnRyeURl
ZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5oIgogI2luY2x1ZGUgIkRGR1dvcmtsaXN0LmgiCisj
aW5jbHVkZSAiRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzLmgiCiAjaW5jbHVkZSAiRGlyZWN0QXJn
dW1lbnRzLmgiCiAjaW5jbHVkZSAiRlRMRm9yT1NSRW50cnlKSVRDb2RlLmgiCiAjaW5jbHVkZSAi
RlRMT1NSRW50cnkuaCIKQEAgLTk5NCw2ICs5OTUsOTYgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblB1dEJ5VmFsV2l0aFRoaXMoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBl
bmMKICAgICBwdXRXaXRoVGhpczxmYWxzZT4oZXhlYywgZW5jb2RlZEJhc2UsIGVuY29kZWRUaGlz
LCBlbmNvZGVkVmFsdWUsIHByb3BlcnR5KTsKIH0KIAorQUxXQVlTX0lOTElORSBzdGF0aWMgdm9p
ZCBkZWZpbmVEYXRhUHJvcGVydHkoRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0sIEpTT2JqZWN0KiBi
YXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIGludDMy
X3QgYXR0cmlidXRlcykKK3sKKyAgICBQcm9wZXJ0eURlc2NyaXB0b3IgZGVzY3JpcHRvciA9IHRv
UHJvcGVydHlEZXNjcmlwdG9yKHZhbHVlLCBqc1VuZGVmaW5lZCgpLCBqc1VuZGVmaW5lZCgpLCBE
ZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMoYXR0cmlidXRlcykpOworICAgIEFTU0VSVCgoZGVzY3Jp
cHRvci5hdHRyaWJ1dGVzKCkgJiBBY2Nlc3NvcikgfHwgKCFkZXNjcmlwdG9yLmlzQWNjZXNzb3JE
ZXNjcmlwdG9yKCkpKTsKKyAgICBiYXNlLT5tZXRob2RUYWJsZSh2bSktPmRlZmluZU93blByb3Bl
cnR5KGJhc2UsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgdHJ1ZSk7Cit9CisKK3Zv
aWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWZpbmVEYXRhUHJvcGVydHkoRXhlY1N0YXRlKiBl
eGVjLCBKU09iamVjdCogYmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFByb3BlcnR5LCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIGludDMyX3QgYXR0cmlidXRlcykKK3sKKyAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBl
eGVjKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBJ
ZGVudGlmaWVyIHByb3BlcnR5TmFtZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkUHJvcGVydHkp
LnRvUHJvcGVydHlLZXkoZXhlYyk7CisgICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlvbigp
KSkKKyAgICAgICAgcmV0dXJuOworICAgIGRlZmluZURhdGFQcm9wZXJ0eShleGVjLCB2bSwgYmFz
ZSwgcHJvcGVydHlOYW1lLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSwgYXR0cmlidXRl
cyk7Cit9CisKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWZpbmVEYXRhUHJvcGVydHlT
dHJpbmcoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogYmFzZSwgSlNTdHJpbmcqIHByb3BlcnR5
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIGludDMyX3QgYXR0cmlidXRlcykKK3sKKyAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
JnZtLCBleGVjKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
KyAgICBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSA9IHByb3BlcnR5LT50b0lkZW50aWZpZXIoZXhl
Yyk7CisgICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkKKyAgICAgICAgcmV0dXJu
OworICAgIGRlZmluZURhdGFQcm9wZXJ0eShleGVjLCB2bSwgYmFzZSwgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSwgYXR0cmlidXRlcyk7Cit9CisKK3ZvaWQgSklU
X09QRVJBVElPTiBvcGVyYXRpb25EZWZpbmVEYXRhUHJvcGVydHlTdHJpbmdJZGVudChFeGVjU3Rh
dGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCogcHJvcGVydHksIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgaW50MzJfdCBhdHRyaWJ1dGVzKQoreworICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0s
IGV4ZWMpOworICAgIGRlZmluZURhdGFQcm9wZXJ0eShleGVjLCB2bSwgYmFzZSwgSWRlbnRpZmll
cjo6ZnJvbVVpZCgmdm0sIHByb3BlcnR5KSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSks
IGF0dHJpYnV0ZXMpOworfQorCit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVmaW5lRGF0
YVByb3BlcnR5U3ltYm9sKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGJhc2UsIFN5bWJvbCog
cHJvcGVydHksIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgaW50MzJfdCBhdHRyaWJ1dGVz
KQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcigmdm0sIGV4ZWMpOworICAgIGRlZmluZURhdGFQcm9wZXJ0eShleGVjLCB2bSwgYmFz
ZSwgSWRlbnRpZmllcjo6ZnJvbVVpZChwcm9wZXJ0eS0+cHJpdmF0ZU5hbWUoKSksIEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkVmFsdWUpLCBhdHRyaWJ1dGVzKTsKK30KKworQUxXQVlTX0lOTElORSBz
dGF0aWMgdm9pZCBkZWZpbmVBY2Nlc3NvclByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywgVk0mIHZt
LCBKU09iamVjdCogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU09iamVj
dCogZ2V0dGVyLCBKU09iamVjdCogc2V0dGVyLCBpbnQzMl90IGF0dHJpYnV0ZXMpCit7CisgICAg
UHJvcGVydHlEZXNjcmlwdG9yIGRlc2NyaXB0b3IgPSB0b1Byb3BlcnR5RGVzY3JpcHRvcihqc1Vu
ZGVmaW5lZCgpLCBnZXR0ZXIsIHNldHRlciwgRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzKGF0dHJp
YnV0ZXMpKTsKKyAgICBBU1NFUlQoKGRlc2NyaXB0b3IuYXR0cmlidXRlcygpICYgQWNjZXNzb3Ip
IHx8ICghZGVzY3JpcHRvci5pc0FjY2Vzc29yRGVzY3JpcHRvcigpKSk7CisgICAgYmFzZS0+bWV0
aG9kVGFibGUodm0pLT5kZWZpbmVPd25Qcm9wZXJ0eShiYXNlLCBleGVjLCBwcm9wZXJ0eU5hbWUs
IGRlc2NyaXB0b3IsIHRydWUpOworfQorCit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVm
aW5lQWNjZXNzb3JQcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkUHJvcGVydHksIEpTT2JqZWN0KiBnZXR0ZXIsIEpTT2JqZWN0KiBz
ZXR0ZXIsIGludDMyX3QgYXR0cmlidXRlcykKK3sKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBJZGVudGlmaWVyIHByb3BlcnR5
TmFtZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkUHJvcGVydHkpLnRvUHJvcGVydHlLZXkoZXhl
Yyk7CisgICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkKKyAgICAgICAgcmV0dXJu
OworICAgIGRlZmluZUFjY2Vzc29yUHJvcGVydHkoZXhlYywgdm0sIGJhc2UsIHByb3BlcnR5TmFt
ZSwgZ2V0dGVyLCBzZXR0ZXIsIGF0dHJpYnV0ZXMpOworfQorCit2b2lkIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eVN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIEpT
T2JqZWN0KiBiYXNlLCBKU1N0cmluZyogcHJvcGVydHksIEpTT2JqZWN0KiBnZXR0ZXIsIEpTT2Jq
ZWN0KiBzZXR0ZXIsIGludDMyX3QgYXR0cmlidXRlcykKK3sKKyAgICBWTSYgdm0gPSBleGVjLT52
bSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBJZGVudGlmaWVyIHBy
b3BlcnR5TmFtZSA9IHByb3BlcnR5LT50b0lkZW50aWZpZXIoZXhlYyk7CisgICAgaWYgKFVOTElL
RUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkKKyAgICAgICAgcmV0dXJuOworICAgIGRlZmluZUFjY2Vz
c29yUHJvcGVydHkoZXhlYywgdm0sIGJhc2UsIHByb3BlcnR5TmFtZSwgZ2V0dGVyLCBzZXR0ZXIs
IGF0dHJpYnV0ZXMpOworfQorCit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVmaW5lQWNj
ZXNzb3JQcm9wZXJ0eVN0cmluZ0lkZW50KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGJhc2Us
IFVuaXF1ZWRTdHJpbmdJbXBsKiBwcm9wZXJ0eSwgSlNPYmplY3QqIGdldHRlciwgSlNPYmplY3Qq
IHNldHRlciwgaW50MzJfdCBhdHRyaWJ1dGVzKQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOworICAgIGRlZmlu
ZUFjY2Vzc29yUHJvcGVydHkoZXhlYywgdm0sIGJhc2UsIElkZW50aWZpZXI6OmZyb21VaWQoJnZt
LCBwcm9wZXJ0eSksIGdldHRlciwgc2V0dGVyLCBhdHRyaWJ1dGVzKTsKK30KKwordm9pZCBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkRlZmluZUFjY2Vzc29yUHJvcGVydHlTeW1ib2woRXhlY1N0YXRl
KiBleGVjLCBKU09iamVjdCogYmFzZSwgU3ltYm9sKiBwcm9wZXJ0eSwgSlNPYmplY3QqIGdldHRl
ciwgSlNPYmplY3QqIHNldHRlciwgaW50MzJfdCBhdHRyaWJ1dGVzKQoreworICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMp
OworICAgIGRlZmluZUFjY2Vzc29yUHJvcGVydHkoZXhlYywgdm0sIGJhc2UsIElkZW50aWZpZXI6
OmZyb21VaWQocHJvcGVydHktPnByaXZhdGVOYW1lKCkpLCBnZXR0ZXIsIHNldHRlciwgYXR0cmli
dXRlcyk7Cit9CisKIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXJyYXkoRXhlY1N0
YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIGFycmF5U3RydWN0dXJlLCB2b2lkKiBidWZmZXIsIHNpemVf
dCBzaXplKQogewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09wZXJhdGlvbnMuaAppbmRleCA1MjdiZmU1ODc2YWZjNzgzN2JhMzBmZDIxMGQ1
YTQ3YzNiMjk1MWU0Li44NDIyMzg3NDExMjVmZjRlMTVjYzM3YjQ2MDBiMGNiZmMxNDI5MDYzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaApAQCAtMTE0LDYgKzEx
NCwxNCBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFdpdGhUaGlzKEV4ZWNT
dGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSgogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblB1dEJ5SWRXaXRoVGhpc1N0cmljdChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBVbmlxdWVkU3RyaW5nSW1wbCopIFdURl9JTlRF
Uk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbFdpdGhUaGlzKEV4ZWNT
dGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
UHV0QnlWYWxXaXRoVGhpc1N0cmljdChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwor
dm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlZmluZURhdGFQcm9wZXJ0eShFeGVjU3RhdGUq
LCBKU09iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgaW50MzJfdCkgV1RG
X0lOVEVSTkFMOwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlZmluZURhdGFQcm9wZXJ0
eVN0cmluZyhFeGVjU3RhdGUqLCBKU09iamVjdCosIEpTU3RyaW5nKiwgRW5jb2RlZEpTVmFsdWUs
IGludDMyX3QpIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWZp
bmVEYXRhUHJvcGVydHlTdHJpbmdJZGVudChFeGVjU3RhdGUqLCBKU09iamVjdCosIFVuaXF1ZWRT
dHJpbmdJbXBsKiwgRW5jb2RlZEpTVmFsdWUsIGludDMyX3QpIFdURl9JTlRFUk5BTDsKK3ZvaWQg
SklUX09QRVJBVElPTiBvcGVyYXRpb25EZWZpbmVEYXRhUHJvcGVydHlTeW1ib2woRXhlY1N0YXRl
KiwgSlNPYmplY3QqLCBTeW1ib2wqLCBFbmNvZGVkSlNWYWx1ZSwgaW50MzJfdCkgV1RGX0lOVEVS
TkFMOwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlZmluZUFjY2Vzc29yUHJvcGVydHko
RXhlY1N0YXRlKiwgSlNPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgSlNPYmplY3QqLCBKU09iamVj
dCosIGludDMyX3QpIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25E
ZWZpbmVBY2Nlc3NvclByb3BlcnR5U3RyaW5nKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgSlNTdHJp
bmcqLCBKU09iamVjdCosIEpTT2JqZWN0KiwgaW50MzJfdCkgV1RGX0lOVEVSTkFMOwordm9pZCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlZmluZUFjY2Vzc29yUHJvcGVydHlTdHJpbmdJZGVudChF
eGVjU3RhdGUqLCBKU09iamVjdCosIFVuaXF1ZWRTdHJpbmdJbXBsKiwgSlNPYmplY3QqLCBKU09i
amVjdCosIGludDMyX3QpIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRp
b25EZWZpbmVBY2Nlc3NvclByb3BlcnR5U3ltYm9sKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgU3lt
Ym9sKiwgSlNPYmplY3QqLCBKU09iamVjdCosIGludDMyX3QpIFdURl9JTlRFUk5BTDsKIEVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJyYXlQdXNoKEV4ZWNTdGF0ZSosIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgSlNBcnJheSopIFdURl9JTlRFUk5BTDsKIEVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJyYXlQdXNoRG91YmxlKEV4ZWNTdGF0
ZSosIGRvdWJsZSB2YWx1ZSwgSlNBcnJheSopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVl
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJyYXlQb3AoRXhlY1N0YXRlKiwgSlNBcnJheSopIFdU
Rl9JTlRFUk5BTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJl
ZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKaW5kZXggMDZkYjQwZWI2NzY2NzI0NmQz
NDkwOTA1OTE5YmY1YWJkMDBlYjk5ZS4uODdkYmU4M2E4ODkwYzFkN2FkMzQ4ZTA1NGU1YTc5ZTlk
NWE0NDJkOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0
aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKQEAgLTEwNDAsNiArMTA0MCw4IEBAIGNs
YXNzIFByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAg
Y2FzZSBQdXRHZXR0ZXJTZXR0ZXJCeUlkOgogICAgICAgICBjYXNlIFB1dEdldHRlckJ5VmFsOgog
ICAgICAgICBjYXNlIFB1dFNldHRlckJ5VmFsOgorICAgICAgICBjYXNlIERlZmluZURhdGFQcm9w
ZXJ0eToKKyAgICAgICAgY2FzZSBEZWZpbmVBY2Nlc3NvclByb3BlcnR5OgogICAgICAgICBjYXNl
IERGRzo6SnVtcDoKICAgICAgICAgY2FzZSBCcmFuY2g6CiAgICAgICAgIGNhc2UgU3dpdGNoOgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAppbmRleCAyMmI5
MzQwMDU4M2FjNmRmODYzYjBiZTM4ZjZiODMzNmE1MDQxOWFjLi5jMTMyZjk1NzRiMjVlNjRlNmFj
YzU2MTYwYjk0Nzk1ODJiOTNhZjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NhZmVUb0V4ZWN1dGUuaApAQCAtMjE0LDYgKzIxNCw4IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShB
YnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBj
YXNlIFB1dEdldHRlclNldHRlckJ5SWQ6CiAgICAgY2FzZSBQdXRHZXR0ZXJCeVZhbDoKICAgICBj
YXNlIFB1dFNldHRlckJ5VmFsOgorICAgIGNhc2UgRGVmaW5lRGF0YVByb3BlcnR5OgorICAgIGNh
c2UgRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eToKICAgICBjYXNlIENoZWNrU3RydWN0dXJlOgogICAg
IGNhc2UgR2V0RXhlY3V0YWJsZToKICAgICBjYXNlIEdldEJ1dHRlcmZseToKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggNzc3MWE5NTEx
YjJhODVhMjBjODg5MTZmYTQxOTMxNDc3YmM3NjA1Ny4uNTAwMjNiN2U4YmM0ZmIyYzQyZjNkMTA3
OTBmZDkyNjgxNDliNmJlNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTg2MzksNiArODYzOSwxODMgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZUNvbXBhcmVFcVB0cihOb2RlKiBub2RlKQogICAgIGJsZXNzZWRCb29sZWFu
UmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVEZWZpbmVEYXRhUHJvcGVydHkoTm9kZSogbm9kZSkKK3sKKyNpZiBVU0UoSlNWQUxVRTY0KQor
ICAgIHN0YXRpY19hc3NlcnQoR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMgPj0gNSwgIldlIGFy
ZSBhc3N1bWluZyB3ZSBoYXZlIGVub3VnaCByZWdpc3RlcnMgdG8gbWFrZSB0aGlzIGNhbGwgd2l0
aG91dCBpbmNyZW1lbnRhbGx5IHNldHRpbmcgdXAgdGhlIGFyZ3VtZW50cy4iKTsKKyNlbHNlCisg
ICAgc3RhdGljX2Fzc2VydChHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycyA+PSA2LCAiV2UgYXJl
IGFzc3VtaW5nIHdlIGhhdmUgZW5vdWdoIHJlZ2lzdGVycyB0byBtYWtlIHRoaXMgY2FsbCB3aXRo
b3V0IGluY3JlbWVudGFsbHkgc2V0dGluZyB1cCB0aGUgYXJndW1lbnRzLiIpOworI2VuZGlmCisK
KyAgICBhdXRvIGNvbXBpbGVXaXRoQXR0cmlidXRlID0gWyZdKGF1dG8gYXR0cmlidXRlcykgewor
ICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG1faml0LmdyYXBoKCkudmFy
QXJnQ2hpbGQobm9kZSwgMCkpOworICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7
CisKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbV9qaXQuZ3JhcGgoKS52YXJB
cmdDaGlsZChub2RlLCAyKSk7CisgICAgICAgIEpTVmFsdWVSZWdzIHZhbHVlR1BSID0gdmFsdWUu
Z3ByKCk7CisKKyAgICAgICAgRWRnZSYgcHJvcGVydHlFZGdlID0gbV9qaXQuZ3JhcGgoKS52YXJB
cmdDaGlsZChub2RlLCAxKTsKKyAgICAgICAgc3dpdGNoIChwcm9wZXJ0eUVkZ2UudXNlS2luZCgp
KSB7CisgICAgICAgIGNhc2UgU3RyaW5nVXNlOiB7CisgICAgICAgICAgICBTcGVjdWxhdGVDZWxs
T3BlcmFuZCBwcm9wZXJ0eSh0aGlzLCBwcm9wZXJ0eUVkZ2UpOworICAgICAgICAgICAgR1BSUmVn
IHByb3BlcnR5R1BSID0gcHJvcGVydHkuZ3ByKCk7CisgICAgICAgICAgICBzcGVjdWxhdGVTdHJp
bmcocHJvcGVydHlFZGdlLCBwcm9wZXJ0eUdQUik7CisKKyAgICAgICAgICAgIHVzZUNoaWxkcmVu
KG5vZGUpOworCisgICAgICAgICAgICBmbHVzaFJlZ2lzdGVycygpOworICAgICAgICAgICAgY2Fs
bE9wZXJhdGlvbihvcGVyYXRpb25EZWZpbmVEYXRhUHJvcGVydHlTdHJpbmcsIE5vUmVzdWx0LCBi
YXNlR1BSLCBwcm9wZXJ0eUdQUiwgdmFsdWVHUFIsIGF0dHJpYnV0ZXMpOworICAgICAgICAgICAg
bV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9Cisg
ICAgICAgIGNhc2UgU3RyaW5nSWRlbnRVc2U6IHsKKyAgICAgICAgICAgIFNwZWN1bGF0ZUNlbGxP
cGVyYW5kIHByb3BlcnR5KHRoaXMsIHByb3BlcnR5RWRnZSk7CisgICAgICAgICAgICBHUFJUZW1w
b3JhcnkgaWRlbnQodGhpcyk7CisKKyAgICAgICAgICAgIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IHBy
b3BlcnR5LmdwcigpOworICAgICAgICAgICAgR1BSUmVnIGlkZW50R1BSID0gaWRlbnQuZ3ByKCk7
CisKKyAgICAgICAgICAgIHNwZWN1bGF0ZVN0cmluZyhwcm9wZXJ0eUVkZ2UsIHByb3BlcnR5R1BS
KTsKKyAgICAgICAgICAgIHNwZWN1bGF0ZVN0cmluZ0lkZW50QW5kTG9hZFN0b3JhZ2UocHJvcGVy
dHlFZGdlLCBwcm9wZXJ0eUdQUiwgaWRlbnRHUFIpOworCisgICAgICAgICAgICB1c2VDaGlsZHJl
bihub2RlKTsKKworICAgICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAgICAgICAgICAgIGNh
bGxPcGVyYXRpb24ob3BlcmF0aW9uRGVmaW5lRGF0YVByb3BlcnR5U3RyaW5nSWRlbnQsIE5vUmVz
dWx0LCBiYXNlR1BSLCBpZGVudEdQUiwgdmFsdWVHUFIsIGF0dHJpYnV0ZXMpOworICAgICAgICAg
ICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CisgICAgICAgIGNhc2UgU3ltYm9sVXNlOiB7CisgICAgICAgICAgICBTcGVjdWxhdGVDZWxsT3Bl
cmFuZCBwcm9wZXJ0eSh0aGlzLCBwcm9wZXJ0eUVkZ2UpOworICAgICAgICAgICAgR1BSUmVnIHBy
b3BlcnR5R1BSID0gcHJvcGVydHkuZ3ByKCk7CisgICAgICAgICAgICBzcGVjdWxhdGVTeW1ib2wo
cHJvcGVydHlFZGdlLCBwcm9wZXJ0eUdQUik7CisKKyAgICAgICAgICAgIHVzZUNoaWxkcmVuKG5v
ZGUpOworCisgICAgICAgICAgICBmbHVzaFJlZ2lzdGVycygpOworICAgICAgICAgICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25EZWZpbmVEYXRhUHJvcGVydHlTeW1ib2wsIE5vUmVzdWx0LCBiYXNl
R1BSLCBwcm9wZXJ0eUdQUiwgdmFsdWVHUFIsIGF0dHJpYnV0ZXMpOworICAgICAgICAgICAgbV9q
aXQuZXhjZXB0aW9uQ2hlY2soKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
ICAgIGNhc2UgVW50eXBlZFVzZTogeworICAgICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgcHJvcGVy
dHkodGhpcywgcHJvcGVydHlFZGdlKTsKKyAgICAgICAgICAgIEpTVmFsdWVSZWdzIHByb3BlcnR5
R1BSID0gcHJvcGVydHkuZ3ByKCk7CisKKyAgICAgICAgICAgIHVzZUNoaWxkcmVuKG5vZGUpOwor
CisgICAgICAgICAgICBmbHVzaFJlZ2lzdGVycygpOworICAgICAgICAgICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25EZWZpbmVEYXRhUHJvcGVydHksIE5vUmVzdWx0LCBiYXNlR1BSLCBwcm9wZXJ0
eUdQUiwgdmFsdWVHUFIsIGF0dHJpYnV0ZXMpOworICAgICAgICAgICAgbV9qaXQuZXhjZXB0aW9u
Q2hlY2soKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9Cisg
ICAgfTsKKworICAgIEVkZ2UmIGF0dHJpYnV0ZXNFZGdlID0gbV9qaXQuZ3JhcGgoKS52YXJBcmdD
aGlsZChub2RlLCAzKTsKKyAgICBpZiAoYXR0cmlidXRlc0VkZ2UtPmhhc0NvbnN0YW50KCkpCisg
ICAgICAgIGNvbXBpbGVXaXRoQXR0cmlidXRlKGF0dHJpYnV0ZXNFZGdlLT5hc0ludDMyKCkpOwor
ICAgIGVsc2UgeworICAgICAgICBTcGVjdWxhdGVJbnQzMk9wZXJhbmQgYXR0cmlidXRlcyh0aGlz
LCBhdHRyaWJ1dGVzRWRnZSk7CisgICAgICAgIEdQUlJlZyBhdHRyaWJ1dGVzR1BSID0gYXR0cmli
dXRlcy5ncHIoKTsKKworICAgICAgICBjb21waWxlV2l0aEF0dHJpYnV0ZShhdHRyaWJ1dGVzR1BS
KTsKKyAgICB9CisKKyAgICBub1Jlc3VsdChub2RlLCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0
bHkpOworfQorCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVmaW5lQWNjZXNzb3JQcm9w
ZXJ0eShOb2RlKiBub2RlKQoreworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgc3RhdGljX2Fzc2Vy
dChHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycyA+PSA1LCAiV2UgYXJlIGFzc3VtaW5nIHdlIGhh
dmUgZW5vdWdoIHJlZ2lzdGVycyB0byBtYWtlIHRoaXMgY2FsbCB3aXRob3V0IGluY3JlbWVudGFs
bHkgc2V0dGluZyB1cCB0aGUgYXJndW1lbnRzLiIpOworI2Vsc2UKKyAgICBzdGF0aWNfYXNzZXJ0
KEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzID49IDYsICJXZSBhcmUgYXNzdW1pbmcgd2UgaGF2
ZSBlbm91Z2ggcmVnaXN0ZXJzIHRvIG1ha2UgdGhpcyBjYWxsIHdpdGhvdXQgaW5jcmVtZW50YWxs
eSBzZXR0aW5nIHVwIHRoZSBhcmd1bWVudHMuIik7CisjZW5kaWYKKworICAgIGF1dG8gY29tcGls
ZVdpdGhBdHRyaWJ1dGVzID0gWyZdKGF1dG8gYXR0cmlidXRlcykgeworICAgICAgICBTcGVjdWxh
dGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwg
MCkpOworICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CisKKyAgICAgICAgU3Bl
Y3VsYXRlQ2VsbE9wZXJhbmQgZ2V0dGVyKHRoaXMsIG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQo
bm9kZSwgMikpOworICAgICAgICBHUFJSZWcgZ2V0dGVyR1BSID0gZ2V0dGVyLmdwcigpOworCisg
ICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHNldHRlcih0aGlzLCBtX2ppdC5ncmFwaCgpLnZh
ckFyZ0NoaWxkKG5vZGUsIDMpKTsKKyAgICAgICAgR1BSUmVnIHNldHRlckdQUiA9IHNldHRlci5n
cHIoKTsKKworICAgICAgICBFZGdlJiBwcm9wZXJ0eUVkZ2UgPSBtX2ppdC5ncmFwaCgpLnZhckFy
Z0NoaWxkKG5vZGUsIDEpOworICAgICAgICBzd2l0Y2ggKHByb3BlcnR5RWRnZS51c2VLaW5kKCkp
IHsKKyAgICAgICAgY2FzZSBTdHJpbmdVc2U6IHsKKyAgICAgICAgICAgIFNwZWN1bGF0ZUNlbGxP
cGVyYW5kIHByb3BlcnR5KHRoaXMsIHByb3BlcnR5RWRnZSk7CisgICAgICAgICAgICBHUFJSZWcg
cHJvcGVydHlHUFIgPSBwcm9wZXJ0eS5ncHIoKTsKKyAgICAgICAgICAgIHNwZWN1bGF0ZVN0cmlu
Zyhwcm9wZXJ0eUVkZ2UsIHByb3BlcnR5R1BSKTsKKworICAgICAgICAgICAgdXNlQ2hpbGRyZW4o
bm9kZSk7CisKKyAgICAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CisgICAgICAgICAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvbkRlZmluZUFjY2Vzc29yUHJvcGVydHlTdHJpbmcsIE5vUmVzdWx0
LCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgZ2V0dGVyR1BSLCBzZXR0ZXJHUFIsIGF0dHJpYnV0ZXMp
OworICAgICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisgICAgICAgIGNhc2UgU3RyaW5nSWRlbnRVc2U6IHsKKyAgICAgICAgICAg
IFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHByb3BlcnR5KHRoaXMsIHByb3BlcnR5RWRnZSk7CisgICAg
ICAgICAgICBHUFJUZW1wb3JhcnkgaWRlbnQodGhpcyk7CisKKyAgICAgICAgICAgIEdQUlJlZyBw
cm9wZXJ0eUdQUiA9IHByb3BlcnR5LmdwcigpOworICAgICAgICAgICAgR1BSUmVnIGlkZW50R1BS
ID0gaWRlbnQuZ3ByKCk7CisKKyAgICAgICAgICAgIHNwZWN1bGF0ZVN0cmluZyhwcm9wZXJ0eUVk
Z2UsIHByb3BlcnR5R1BSKTsKKyAgICAgICAgICAgIHNwZWN1bGF0ZVN0cmluZ0lkZW50QW5kTG9h
ZFN0b3JhZ2UocHJvcGVydHlFZGdlLCBwcm9wZXJ0eUdQUiwgaWRlbnRHUFIpOworCisgICAgICAg
ICAgICB1c2VDaGlsZHJlbihub2RlKTsKKworICAgICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsK
KyAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVmaW5lQWNjZXNzb3JQcm9wZXJ0
eVN0cmluZ0lkZW50LCBOb1Jlc3VsdCwgYmFzZUdQUiwgaWRlbnRHUFIsIGdldHRlckdQUiwgc2V0
dGVyR1BSLCBhdHRyaWJ1dGVzKTsKKyAgICAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFN5bWJvbFVzZTog
eworICAgICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgcHJvcGVydHkodGhpcywgcHJvcGVy
dHlFZGdlKTsKKyAgICAgICAgICAgIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IHByb3BlcnR5Lmdwcigp
OworICAgICAgICAgICAgc3BlY3VsYXRlU3ltYm9sKHByb3BlcnR5RWRnZSwgcHJvcGVydHlHUFIp
OworCisgICAgICAgICAgICB1c2VDaGlsZHJlbihub2RlKTsKKworICAgICAgICAgICAgZmx1c2hS
ZWdpc3RlcnMoKTsKKyAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVmaW5lQWNj
ZXNzb3JQcm9wZXJ0eVN5bWJvbCwgTm9SZXN1bHQsIGJhc2VHUFIsIHByb3BlcnR5R1BSLCBnZXR0
ZXJHUFIsIHNldHRlckdQUiwgYXR0cmlidXRlcyk7CisgICAgICAgICAgICBtX2ppdC5leGNlcHRp
b25DaGVjaygpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBV
bnR5cGVkVXNlOiB7CisgICAgICAgICAgICBKU1ZhbHVlT3BlcmFuZCBwcm9wZXJ0eSh0aGlzLCBw
cm9wZXJ0eUVkZ2UpOworICAgICAgICAgICAgSlNWYWx1ZVJlZ3MgcHJvcGVydHlHUFIgPSBwcm9w
ZXJ0eS5qc1ZhbHVlUmVncygpOworCisgICAgICAgICAgICB1c2VDaGlsZHJlbihub2RlKTsKKwor
ICAgICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAgICAgICAgICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eSwgTm9SZXN1bHQsIGJhc2VHUFIsIHByb3Bl
cnR5R1BSLCBnZXR0ZXJHUFIsIHNldHRlckdQUiwgYXR0cmlidXRlcyk7CisgICAgICAgICAgICBt
X2ppdC5leGNlcHRpb25DaGVjaygpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgICAgIH0KKyAgICB9OworCisgICAgRWRnZSYgYXR0cmlidXRlc0VkZ2UgPSBtX2ppdC5n
cmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIDQpOworICAgIGlmIChhdHRyaWJ1dGVzRWRnZS0+aGFz
Q29uc3RhbnQoKSkKKyAgICAgICAgY29tcGlsZVdpdGhBdHRyaWJ1dGVzKGF0dHJpYnV0ZXNFZGdl
LT5hc0ludDMyKCkpOworICAgIGVsc2UgeworICAgICAgICBTcGVjdWxhdGVJbnQzMk9wZXJhbmQg
YXR0cmlidXRlcyh0aGlzLCBhdHRyaWJ1dGVzRWRnZSk7CisgICAgICAgIEdQUlJlZyBhdHRyaWJ1
dGVzR1BSID0gYXR0cmlidXRlcy5ncHIoKTsKKworICAgICAgICBjb21waWxlV2l0aEF0dHJpYnV0
ZXMoYXR0cmlidXRlc0dQUik7CisgICAgfQorCisgICAgbm9SZXN1bHQobm9kZSwgVXNlQ2hpbGRy
ZW5DYWxsZWRFeHBsaWNpdGx5KTsKK30KKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwogCiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaApp
bmRleCBlN2EyOWI0MzM0NmIyNDgyM2E5OTg5ZmVlOTVkNjQwNWMzMThkYTczLi4wMDk5MjJkZGE2
YzdlM2U0MTZkZmU0M2Q4ZjUyZGU3ZDI1NWI5OGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCkBAIC0xMzQ0LDYgKzEzNDQsODYgQEAgY2xhc3Mg
U3BlY3VsYXRpdmVKSVQgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoYXJnMSwgYXJnMiwgYXJnMywgYXJnNCk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9w
ZXJhdGlvbik7CiAgICAgfQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9K
SVRPcGVyYXRpb25fRU9KSlogb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgSlNWYWx1ZVJlZ3MgYXJn
MiwgSlNWYWx1ZVJlZ3MgYXJnMywgR1BSUmVnIGFyZzQpCisgICAgeworICAgICAgICBtX2ppdC5z
ZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMi5wYXlsb2FkR1BSKCksIGFyZzMu
cGF5bG9hZEdQUigpLCBhcmc0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9u
KTsKKyAgICB9CisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJh
dGlvbl9FT0pzc0paIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBKU1ZhbHVl
UmVncyBhcmczLCBHUFJSZWcgYXJnNCkKKyAgICB7CisgICAgICAgIG1faml0LnNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczLnBheWxvYWRHUFIoKSwgYXJnNCk7Cisg
ICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CisgICAgfQorICAgIEpJVENvbXBp
bGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRU9JSlogb3BlcmF0aW9uLCBH
UFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEpTVmFsdWVSZWdzIGFyZzMsIEdQUlJlZyBhcmc0KQor
ICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFy
ZzIsIGFyZzMucGF5bG9hZEdQUigpLCBhcmc0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGwo
b3BlcmF0aW9uKTsKKyAgICB9CisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihW
X0pJVE9wZXJhdGlvbl9FT1N5bUpaIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcy
LCBKU1ZhbHVlUmVncyBhcmczLCBHUFJSZWcgYXJnNCkKKyAgICB7CisgICAgICAgIG1faml0LnNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczLnBheWxvYWRHUFIoKSwg
YXJnNCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CisgICAgfQorICAg
IEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRU9KSlogb3Bl
cmF0aW9uLCBHUFJSZWcgYXJnMSwgSlNWYWx1ZVJlZ3MgYXJnMiwgSlNWYWx1ZVJlZ3MgYXJnMywg
aW50MzJfdCBhcmc0KQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKGFyZzEsIGFyZzIucGF5bG9hZEdQUigpLCBhcmczLnBheWxvYWRHUFIoKSwgVHJ1c3Rl
ZEltbTMyKGFyZzQpKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKKyAg
ICB9CisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9F
T0pzc0paIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBKU1ZhbHVlUmVncyBh
cmczLCBpbnQzMl90IGFyZzQpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMy5wYXlsb2FkR1BSKCksIFRydXN0ZWRJbW0zMihh
cmc0KSk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CisgICAgfQorICAg
IEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRU9JSlogb3Bl
cmF0aW9uLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEpTVmFsdWVSZWdzIGFyZzMsIGludDMy
X3QgYXJnNCkKKyAgICB7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShhcmcxLCBhcmcyLCBhcmczLnBheWxvYWRHUFIoKSwgVHJ1c3RlZEltbTMyKGFyZzQpKTsKKyAg
ICAgICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKKyAgICB9CisgICAgSklUQ29tcGls
ZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FT1N5bUpaIG9wZXJhdGlvbiwg
R1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBKU1ZhbHVlUmVncyBhcmczLCBpbnQzMl90IGFyZzQp
CisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwg
YXJnMiwgYXJnMy5wYXlsb2FkR1BSKCksIFRydXN0ZWRJbW0zMihhcmc0KSk7CisgICAgICAgIHJl
dHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CisgICAgfQorICAgIEpJVENvbXBpbGVyOjpDYWxs
IGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRU9KT09aIG9wZXJhdGlvbiwgR1BSUmVnIGFy
ZzEsIEpTVmFsdWVSZWdzIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcgYXJnNCwgR1BSUmVnIGFy
ZzUpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJn
MSwgYXJnMi5wYXlsb2FkR1BSKCksIGFyZzMsIGFyZzQsIGFyZzUpOworICAgICAgICByZXR1cm4g
YXBwZW5kQ2FsbChvcGVyYXRpb24pOworICAgIH0KKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxs
T3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VPSnNzT09aIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEs
IEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVnIGFyZzQsIEdQUlJlZyBhcmc1KQorICAg
IHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIs
IGFyZzMsIGFyZzQsIGFyZzUpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24p
OworICAgIH0KKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0
aW9uX0VPSU9PWiBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFy
ZzMsIEdQUlJlZyBhcmc0LCBHUFJSZWcgYXJnNSkKKyAgICB7CisgICAgICAgIG1faml0LnNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczLCBhcmc0LCBhcmc1KTsKKyAg
ICAgICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKKyAgICB9CisgICAgSklUQ29tcGls
ZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FT1N5bU9PWiBvcGVyYXRpb24s
IEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMsIEdQUlJlZyBhcmc0LCBHUFJS
ZWcgYXJnNSkKKyAgICB7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShhcmcxLCBhcmcyLCBhcmczLCBhcmc0LCBhcmc1KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENh
bGwob3BlcmF0aW9uKTsKKyAgICB9CisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlv
bihWX0pJVE9wZXJhdGlvbl9FT0pPT1ogb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgSlNWYWx1ZVJl
Z3MgYXJnMiwgR1BSUmVnIGFyZzMsIEdQUlJlZyBhcmc0LCBpbnQzMl90IGFyZzUpCisgICAgewor
ICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMi5wYXls
b2FkR1BSKCksIGFyZzMsIGFyZzQsIFRydXN0ZWRJbW0zMihhcmc1KSk7CisgICAgICAgIHJldHVy
biBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CisgICAgfQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNh
bGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRU9Kc3NPT1ogb3BlcmF0aW9uLCBHUFJSZWcgYXJn
MSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcgYXJnNCwgaW50MzJfdCBhcmc1KQor
ICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFy
ZzIsIGFyZzMsIGFyZzQsIFRydXN0ZWRJbW0zMihhcmc1KSk7CisgICAgICAgIHJldHVybiBhcHBl
bmRDYWxsKG9wZXJhdGlvbik7CisgICAgfQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVy
YXRpb24oVl9KSVRPcGVyYXRpb25fRU9JT09aIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEdQUlJl
ZyBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVnIGFyZzQsIGludDMyX3QgYXJnNSkKKyAgICB7Cisg
ICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmcz
LCBhcmc0LCBUcnVzdGVkSW1tMzIoYXJnNSkpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChv
cGVyYXRpb24pOworICAgIH0KKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZf
SklUT3BlcmF0aW9uX0VPU3ltT09aIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcy
LCBHUFJSZWcgYXJnMywgR1BSUmVnIGFyZzQsIGludDMyX3QgYXJnNSkKKyAgICB7CisgICAgICAg
IG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczLCBhcmc0
LCBUcnVzdGVkSW1tMzIoYXJnNSkpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRp
b24pOworICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3Bl
cmF0aW9uX0VPSklVaSBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgVW5pcXVl
ZFN0cmluZ0ltcGwqIGltcGwsIHVuc2lnbmVkIHZhbHVlKQogICAgIHsKICAgICAgICAgbV9qaXQu
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIFRydXN0ZWRJbW1QdHIoaW1w
bCksIFRydXN0ZWRJbW0zMih2YWx1ZSkpOwpAQCAtMTc4OCw3ICsxODY4LDg2IEBAIGNsYXNzIFNw
ZWN1bGF0aXZlSklUIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KEVBQklfMzJCSVRfRFVNTVlfQVJHIGFyZzEucGF5bG9hZEdQUigpLCBhcmcxLnRhZ0dQUigpLCBh
cmcyLnBheWxvYWRHUFIoKSwgYXJnMi50YWdHUFIoKSwgYXJnMy5wYXlsb2FkR1BSKCksIGFyZzMu
dGFnR1BSKCksIGFyZzQucGF5bG9hZEdQUigpLCBhcmc0LnRhZ0dQUigpKTsKICAgICAgICAgcmV0
dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKICAgICB9Ci0KKyAgICBKSVRDb21waWxlcjo6Q2Fs
bCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VPSkpaIG9wZXJhdGlvbiwgR1BSUmVnIGFy
ZzEsIEpTVmFsdWVSZWdzIGFyZzIsIEpTVmFsdWVSZWdzIGFyZzMsIEdQUlJlZyBhcmc0KQorICAg
IHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIu
cGF5bG9hZEdQUigpLCBhcmcyLnRhZ0dQUigpLCBhcmczLnBheWxvYWRHUFIoKSwgYXJnMy50YWdH
UFIoKSwgYXJnNCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CisgICAg
fQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRU9K
c3NKWiBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgSlNWYWx1ZVJlZ3MgYXJn
MywgR1BSUmVnIGFyZzQpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUoYXJnMSwgYXJnMiwgRUFCSV8zMkJJVF9EVU1NWV9BUkcgYXJnMy5wYXlsb2FkR1BS
KCksIGFyZzMudGFnR1BSKCksIGFyZzQpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVy
YXRpb24pOworICAgIH0KKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklU
T3BlcmF0aW9uX0VPSUpaIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBKU1Zh
bHVlUmVncyBhcmczLCBHUFJSZWcgYXJnNCkKKyAgICB7CisgICAgICAgIG1faml0LnNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBFQUJJXzMyQklUX0RVTU1ZX0FSRyBhcmcz
LnBheWxvYWRHUFIoKSwgYXJnMy50YWdHUFIoKSwgYXJnNCk7CisgICAgICAgIHJldHVybiBhcHBl
bmRDYWxsKG9wZXJhdGlvbik7CisgICAgfQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVy
YXRpb24oVl9KSVRPcGVyYXRpb25fRU9TeW1KWiBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBHUFJS
ZWcgYXJnMiwgSlNWYWx1ZVJlZ3MgYXJnMywgR1BSUmVnIGFyZzQpCisgICAgeworICAgICAgICBt
X2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgRUFCSV8zMkJJVF9E
VU1NWV9BUkcgYXJnMy5wYXlsb2FkR1BSKCksIGFyZzMudGFnR1BSKCksIGFyZzQpOworICAgICAg
ICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOworICAgIH0KKyAgICBKSVRDb21waWxlcjo6
Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VPSkpaIG9wZXJhdGlvbiwgR1BSUmVn
IGFyZzEsIEpTVmFsdWVSZWdzIGFyZzIsIEpTVmFsdWVSZWdzIGFyZzMsIGludDMyX3QgYXJnNCkK
KyAgICB7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBh
cmcyLnBheWxvYWRHUFIoKSwgYXJnMi50YWdHUFIoKSwgYXJnMy5wYXlsb2FkR1BSKCksIGFyZzMu
dGFnR1BSKCksIFRydXN0ZWRJbW0zMihhcmc0KSk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxs
KG9wZXJhdGlvbik7CisgICAgfQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24o
Vl9KSVRPcGVyYXRpb25fRU9Kc3NKWiBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJn
MiwgSlNWYWx1ZVJlZ3MgYXJnMywgaW50MzJfdCBhcmc0KQorICAgIHsKKyAgICAgICAgbV9qaXQu
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIEVBQklfMzJCSVRfRFVNTVlf
QVJHIGFyZzMucGF5bG9hZEdQUigpLCBhcmczLnRhZ0dQUigpLCBUcnVzdGVkSW1tMzIoYXJnNCkp
OworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOworICAgIH0KKyAgICBKSVRD
b21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VPSUpaIG9wZXJhdGlv
biwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBKU1ZhbHVlUmVncyBhcmczLCBpbnQzMl90IGFy
ZzQpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJn
MSwgYXJnMiwgRUFCSV8zMkJJVF9EVU1NWV9BUkcgYXJnMy5wYXlsb2FkR1BSKCksIGFyZzMudGFn
R1BSKCksIFRydXN0ZWRJbW0zMihhcmc0KSk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9w
ZXJhdGlvbik7CisgICAgfQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9K
SVRPcGVyYXRpb25fRU9TeW1KWiBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwg
SlNWYWx1ZVJlZ3MgYXJnMywgaW50MzJfdCBhcmc0KQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIEVBQklfMzJCSVRfRFVNTVlfQVJH
IGFyZzMucGF5bG9hZEdQUigpLCBhcmczLnRhZ0dQUigpLCBUcnVzdGVkSW1tMzIoYXJnNCkpOwor
ICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOworICAgIH0KKyAgICBKSVRDb21w
aWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VPSk9PWiBvcGVyYXRpb24s
IEdQUlJlZyBhcmcxLCBKU1ZhbHVlUmVncyBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVnIGFyZzQs
IEdQUlJlZyBhcmc1KQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKGFyZzEsIGFyZzIucGF5bG9hZEdQUigpLCBhcmcyLnRhZ0dQUigpLCBhcmczLCBhcmc0
LCBhcmc1KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKKyAgICB9Cisg
ICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FT0pzc09P
WiBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMsIEdQUlJl
ZyBhcmc0LCBHUFJSZWcgYXJnNSkKKyAgICB7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczLCBhcmc0LCBhcmc1KTsKKyAgICAgICAgcmV0
dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKKyAgICB9CisgICAgSklUQ29tcGlsZXI6OkNhbGwg
Y2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FT0lPT1ogb3BlcmF0aW9uLCBHUFJSZWcgYXJn
MSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcgYXJnNCwgR1BSUmVnIGFyZzUpCisg
ICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJn
MiwgYXJnMywgYXJnNCwgYXJnNSk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlv
bik7CisgICAgfQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVy
YXRpb25fRU9TeW1PT1ogb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJl
ZyBhcmczLCBHUFJSZWcgYXJnNCwgR1BSUmVnIGFyZzUpCisgICAgeworICAgICAgICBtX2ppdC5z
ZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMywgYXJnNCwgYXJnNSk7
CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CisgICAgfQorICAgIEpJVENv
bXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRU9KT09aIG9wZXJhdGlv
biwgR1BSUmVnIGFyZzEsIEpTVmFsdWVSZWdzIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcgYXJn
NCwgaW50MzJfdCBhcmc1KQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKGFyZzEsIGFyZzIucGF5bG9hZEdQUigpLCBhcmcyLnRhZ0dQUigpLCBhcmczLCBh
cmc0LCBUcnVzdGVkSW1tMzIoYXJnNSkpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVy
YXRpb24pOworICAgIH0KKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklU
T3BlcmF0aW9uX0VPSnNzT09aIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBH
UFJSZWcgYXJnMywgR1BSUmVnIGFyZzQsIGludDMyX3QgYXJnNSkKKyAgICB7CisgICAgICAgIG1f
aml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczLCBhcmc0LCBU
cnVzdGVkSW1tMzIoYXJnNSkpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24p
OworICAgIH0KKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0
aW9uX0VPSU9PWiBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFy
ZzMsIEdQUlJlZyBhcmc0LCBpbnQzMl90IGFyZzUpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMywgYXJnNCwgVHJ1c3RlZElt
bTMyKGFyZzUpKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKKyAgICB9
CisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FT1N5
bU9PWiBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMsIEdQ
UlJlZyBhcmc0LCBpbnQzMl90IGFyZzUpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMywgYXJnNCwgVHJ1c3RlZEltbTMyKGFy
ZzUpKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKKyAgICB9CiAgICAg
SklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FT0pJVWkgb3Bl
cmF0aW9uLCBHUFJSZWcgYXJnMSwgSlNWYWx1ZVJlZ3MgYXJnMiwgVW5pcXVlZFN0cmluZ0ltcGwq
IGltcGwsIHVuc2lnbmVkIHZhbHVlKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVu
dHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIucGF5bG9hZEdQUigpLCBhcmcyLnRhZ0dQUigpLCBU
cnVzdGVkSW1tUHRyKGltcGwpLCBUcnVzdGVkSW1tMzIodmFsdWUpKTsKQEAgLTI1NzksNiArMjcz
OCw4IEBAIGNsYXNzIFNwZWN1bGF0aXZlSklUIHsKICAgICB2b2lkIGNvbXBpbGVHZXREeW5hbWlj
VmFyKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVQdXREeW5hbWljVmFyKE5vZGUqKTsKICAgICB2
b2lkIGNvbXBpbGVDb21wYXJlRXFQdHIoTm9kZSopOworICAgIHZvaWQgY29tcGlsZURlZmluZURh
dGFQcm9wZXJ0eShOb2RlKik7CisgICAgdm9pZCBjb21waWxlRGVmaW5lQWNjZXNzb3JQcm9wZXJ0
eShOb2RlKik7CiAKICAgICB2b2lkIG1vdmVUcnVlVG8oR1BSUmVnKTsKICAgICB2b2lkIG1vdmVG
YWxzZVRvKEdQUlJlZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCBhMjJkYmVhZGU3MTA4Zjc1NTk2NjZiOTNmOWFl
YzdlZjUwYzEzOTViLi5hYTc4YjBlNjllNGJlYjg1ZTJlMjE2YzhlZjU1OWVhMWY3M2FhZDljIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJf
NjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQz
Ml82NC5jcHAKQEAgLTQ0OTEsNiArNDQ5MSwxNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgRGVmaW5l
RGF0YVByb3BlcnR5OiB7CisgICAgICAgIGNvbXBpbGVEZWZpbmVEYXRhUHJvcGVydHkobm9kZSk7
CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGNhc2UgRGVmaW5lQWNjZXNzb3JQcm9wZXJ0
eTogeworICAgICAgICBjb21waWxlRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eShub2RlKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBHZXRHbG9iYWxMZXhpY2FsVmFyaWFibGU6CiAg
ICAgY2FzZSBHZXRHbG9iYWxWYXI6IHsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdFBheWxv
YWQodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDY0LmNwcAppbmRleCA4Y2Q1ZDcxMzhmMDdjZGRkYzJjMmU3MGQ2ZjZkZjNjMWZiMWFkYjZl
Li43MjEwOTI1MjNlYjM3ZmFjY2YyMjY4ZGJiZmU3ZjE5NGUzMzI1MDAzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTQ0NDks
NiArNDQ0OSwxNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAg
ICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgRGVmaW5lRGF0YVByb3BlcnR5OiB7Cisg
ICAgICAgIGNvbXBpbGVEZWZpbmVEYXRhUHJvcGVydHkobm9kZSk7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KKworICAgIGNhc2UgRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eTogeworICAgICAgICBjb21w
aWxlRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eShub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQor
CiAgICAgY2FzZSBHZXRHbG9iYWxMZXhpY2FsVmFyaWFibGU6CiAgICAgY2FzZSBHZXRHbG9iYWxW
YXI6IHsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAppbmRleCBjYWQ0NWZkYmFiZTkwZjQ0
OTM0ZDE0YTRiZTNiZDEwZmM4Mjc2NDQ5Li5hMWNmODA4ODUyM2JkZDM3Y2IyMGRmMDgxYjRhMDFk
ZDFhYmMwZDY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFi
aWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRp
ZXMuY3BwCkBAIC0yNjIsNiArMjYyLDggQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21w
aWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBDb21wYXJlR3JlYXRlcjoKICAgICBjYXNlIENvbXBh
cmVHcmVhdGVyRXE6CiAgICAgY2FzZSBDb21wYXJlU3RyaWN0RXE6CisgICAgY2FzZSBEZWZpbmVE
YXRhUHJvcGVydHk6CisgICAgY2FzZSBEZWZpbmVBY2Nlc3NvclByb3BlcnR5OgogICAgICAgICAv
LyBUaGVzZSBhcmUgT0suCiAgICAgICAgIGJyZWFrOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggOWY4ODViODcxMzgzOTIwYjliZDRmMzg1
ZTk5MjI0NzJmOWYyMzA2Zi4uMWZmMTAzODJhMmU0YjQ1ZmI4OTM2MDFiYTgzMzE3N2Y2ODliMDVl
MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApA
QCAtNjkwLDYgKzY5MCwxMiBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBjYXNlIFB1
dEJ5VmFsV2l0aFRoaXM6CiAgICAgICAgICAgICBjb21waWxlUHV0QnlWYWxXaXRoVGhpcygpOwog
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRGVmaW5lRGF0YVByb3BlcnR5OgorICAg
ICAgICAgICAgY29tcGlsZURlZmluZURhdGFQcm9wZXJ0eSgpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eToKKyAgICAgICAgICAgIGNvbXBp
bGVEZWZpbmVBY2Nlc3NvclByb3BlcnR5KCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBBcnJheVB1c2g6CiAgICAgICAgICAgICBjb21waWxlQXJyYXlQdXNoKCk7CiAgICAgICAg
ICAgICBicmVhazsKQEAgLTI3NjEsNiArMjc2Nyw3MSBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewog
ICAgICAgICB2bUNhbGwoVm9pZCwgbV9vdXQub3BlcmF0aW9uKG1fZ3JhcGguaXNTdHJpY3RNb2Rl
Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKSA/IG9wZXJhdGlvblB1dEJ5VmFsV2l0aFRoaXNT
dHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbFdpdGhUaGlzKSwKICAgICAgICAgICAgIG1fY2FsbEZy
YW1lLCBiYXNlLCB0aGlzVmFsdWUsIHByb3BlcnR5LCB2YWx1ZSk7CiAgICAgfQorCisgICAgdm9p
ZCBjb21waWxlRGVmaW5lRGF0YVByb3BlcnR5KCkKKyAgICB7CisgICAgICAgIExWYWx1ZSBiYXNl
ID0gbG93Q2VsbChtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMCkpOworICAgICAgICBMVmFs
dWUgdmFsdWUgID0gbG93SlNWYWx1ZShtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMikpOwor
ICAgICAgICBMVmFsdWUgYXR0cmlidXRlcyA9IGxvd0ludDMyKG1fZ3JhcGgudmFyQXJnQ2hpbGQo
bV9ub2RlLCAzKSk7CisgICAgICAgIEVkZ2UmIHByb3BlcnR5RWRnZSA9IG1fZ3JhcGgudmFyQXJn
Q2hpbGQobV9ub2RlLCAxKTsKKyAgICAgICAgc3dpdGNoIChwcm9wZXJ0eUVkZ2UudXNlS2luZCgp
KSB7CisgICAgICAgIGNhc2UgU3RyaW5nVXNlOiB7CisgICAgICAgICAgICBMVmFsdWUgcHJvcGVy
dHkgPSBsb3dTdHJpbmcocHJvcGVydHlFZGdlKTsKKyAgICAgICAgICAgIHZtQ2FsbChWb2lkLCBt
X291dC5vcGVyYXRpb24ob3BlcmF0aW9uRGVmaW5lRGF0YVByb3BlcnR5U3RyaW5nKSwgbV9jYWxs
RnJhbWUsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSwgYXR0cmlidXRlcyk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFN0cmluZ0lkZW50VXNlOiB7CisgICAgICAg
ICAgICBMVmFsdWUgcHJvcGVydHkgPSBsb3dTdHJpbmdJZGVudChwcm9wZXJ0eUVkZ2UpOworICAg
ICAgICAgICAgdm1DYWxsKFZvaWQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25EZWZpbmVEYXRh
UHJvcGVydHlTdHJpbmdJZGVudCksIG1fY2FsbEZyYW1lLCBiYXNlLCBwcm9wZXJ0eSwgdmFsdWUs
IGF0dHJpYnV0ZXMpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2Fz
ZSBTeW1ib2xVc2U6IHsKKyAgICAgICAgICAgIExWYWx1ZSBwcm9wZXJ0eSA9IGxvd1N5bWJvbChw
cm9wZXJ0eUVkZ2UpOworICAgICAgICAgICAgdm1DYWxsKFZvaWQsIG1fb3V0Lm9wZXJhdGlvbihv
cGVyYXRpb25EZWZpbmVEYXRhUHJvcGVydHlTeW1ib2wpLCBtX2NhbGxGcmFtZSwgYmFzZSwgcHJv
cGVydHksIHZhbHVlLCBhdHRyaWJ1dGVzKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CisgICAgICAgIGNhc2UgVW50eXBlZFVzZTogeworICAgICAgICAgICAgTFZhbHVlIHByb3BlcnR5
ID0gbG93SlNWYWx1ZShwcm9wZXJ0eUVkZ2UpOworICAgICAgICAgICAgdm1DYWxsKFZvaWQsIG1f
b3V0Lm9wZXJhdGlvbihvcGVyYXRpb25EZWZpbmVEYXRhUHJvcGVydHkpLCBtX2NhbGxGcmFtZSwg
YmFzZSwgcHJvcGVydHksIHZhbHVlLCBhdHRyaWJ1dGVzKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBjb21waWxlRGVmaW5l
QWNjZXNzb3JQcm9wZXJ0eSgpCisgICAgeworICAgICAgICBMVmFsdWUgYmFzZSA9IGxvd0NlbGwo
bV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDApKTsKKyAgICAgICAgTFZhbHVlIGdldHRlciA9
IGxvd0NlbGwobV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDIpKTsKKyAgICAgICAgTFZhbHVl
IHNldHRlciA9IGxvd0NlbGwobV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDMpKTsKKyAgICAg
ICAgTFZhbHVlIGF0dHJpYnV0ZXMgPSBsb3dJbnQzMihtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9k
ZSwgNCkpOworICAgICAgICBFZGdlJiBwcm9wZXJ0eUVkZ2UgPSBtX2dyYXBoLnZhckFyZ0NoaWxk
KG1fbm9kZSwgMSk7CisgICAgICAgIHN3aXRjaCAocHJvcGVydHlFZGdlLnVzZUtpbmQoKSkgewor
ICAgICAgICBjYXNlIFN0cmluZ1VzZTogeworICAgICAgICAgICAgTFZhbHVlIHByb3BlcnR5ID0g
bG93U3RyaW5nKHByb3BlcnR5RWRnZSk7CisgICAgICAgICAgICB2bUNhbGwoVm9pZCwgbV9vdXQu
b3BlcmF0aW9uKG9wZXJhdGlvbkRlZmluZUFjY2Vzc29yUHJvcGVydHlTdHJpbmcpLCBtX2NhbGxG
cmFtZSwgYmFzZSwgcHJvcGVydHksIGdldHRlciwgc2V0dGVyLCBhdHRyaWJ1dGVzKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgU3RyaW5nSWRlbnRVc2U6IHsK
KyAgICAgICAgICAgIExWYWx1ZSBwcm9wZXJ0eSA9IGxvd1N0cmluZ0lkZW50KHByb3BlcnR5RWRn
ZSk7CisgICAgICAgICAgICB2bUNhbGwoVm9pZCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkRl
ZmluZUFjY2Vzc29yUHJvcGVydHlTdHJpbmdJZGVudCksIG1fY2FsbEZyYW1lLCBiYXNlLCBwcm9w
ZXJ0eSwgZ2V0dGVyLCBzZXR0ZXIsIGF0dHJpYnV0ZXMpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKyAgICAgICAgY2FzZSBTeW1ib2xVc2U6IHsKKyAgICAgICAgICAgIExWYWx1ZSBw
cm9wZXJ0eSA9IGxvd1N5bWJvbChwcm9wZXJ0eUVkZ2UpOworICAgICAgICAgICAgdm1DYWxsKFZv
aWQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25EZWZpbmVBY2Nlc3NvclByb3BlcnR5U3ltYm9s
KSwgbV9jYWxsRnJhbWUsIGJhc2UsIHByb3BlcnR5LCBnZXR0ZXIsIHNldHRlciwgYXR0cmlidXRl
cyk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFVudHlwZWRV
c2U6IHsKKyAgICAgICAgICAgIExWYWx1ZSBwcm9wZXJ0eSA9IGxvd0pTVmFsdWUocHJvcGVydHlF
ZGdlKTsKKyAgICAgICAgICAgIHZtQ2FsbChWb2lkLCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9u
RGVmaW5lQWNjZXNzb3JQcm9wZXJ0eSksIG1fY2FsbEZyYW1lLCBiYXNlLCBwcm9wZXJ0eSwgZ2V0
dGVyLCBzZXR0ZXIsIGF0dHJpYnV0ZXMpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
KyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgICAgIH0KKyAgICB9CiAgICAgCiAgICAgdm9pZCBjb21waWxlUHV0QnlJZCgpCiAg
ICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuY3BwCmluZGV4IDc1
ZDE1YTYyM2M3MmM0NGFkYzRhNGI5YzEzZjg1ODZmMjcyMjZiODUuLjNjM2RmNjE4Zjk5ZmViOTQx
NTQ0MDA5OTg1NWRlMWZiYWY1Y2I5ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvQ0NhbGxIZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0ND
YWxsSGVscGVycy5jcHAKQEAgLTY4LDEwNyArNjgsNiBAQCB2b2lkIENDYWxsSGVscGVyczo6ZW5z
dXJlU2hhZG93Q2hpY2tlblBhY2tldChHUFJSZWcgc2hhZG93UGFja2V0LCBHUFJSZWcgc2NyYXRj
aAogICAgIHN0b3JlUHRyKHNjcmF0Y2gyLCBBZGRyZXNzKHNjcmF0Y2gxTm9uQXJnR1BSKSk7CiB9
CiAKLSNpZiBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTID49IDQKLXZvaWQgQ0NhbGxIZWxw
ZXJzOjpzZXR1cEZvdXJTdHViQXJnc0dQUihHUFJSZWcgZGVzdEEsIEdQUlJlZyBkZXN0QiwgR1BS
UmVnIGRlc3RDLCBHUFJSZWcgZGVzdEQsIEdQUlJlZyBzcmNBLCBHUFJSZWcgc3JjQiwgR1BSUmVn
IHNyY0MsIEdQUlJlZyBzcmNEKQotewotICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7Ci0gICAg
ICAgIFJlZ2lzdGVyU2V0IGRlc3RpbmF0aW9ucyhkZXN0QSwgZGVzdEIsIGRlc3RDLCBkZXN0RCk7
Ci0gICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoZGVzdGluYXRpb25zLm51bWJlck9mU2V0R1BS
cygpID09IDQsICJEZXN0aW5hdGlvbnMgc2hvdWxkIG5vdCBiZSBhbGlhc2VkLiIpOwotICAgIH0K
LQotICAgIHR5cGVkZWYgc3RkOjpwYWlyPEdQUlJlZywgR1BSUmVnPiBSZWdQYWlyOwotICAgIFZl
Y3RvcjxSZWdQYWlyLCA0PiBwYWlyczsKLQotICAgIGlmIChzcmNBICE9IGRlc3RBKQotICAgICAg
ICBwYWlycy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoc3JjQSwgZGVzdEEpKTsKLSAgICBpZiAoc3Jj
QiAhPSBkZXN0QikKLSAgICAgICAgcGFpcnMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKHNyY0IsIGRl
c3RCKSk7Ci0gICAgaWYgKHNyY0MgIT0gZGVzdEMpCi0gICAgICAgIHBhaXJzLmFwcGVuZChzdGQ6
Om1ha2VfcGFpcihzcmNDLCBkZXN0QykpOwotICAgIGlmIChzcmNEICE9IGRlc3REKQotICAgICAg
ICBwYWlycy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoc3JjRCwgZGVzdEQpKTsKLQotCi0jaWYgIUFT
U0VSVF9ESVNBQkxFRAotICAgIGF1dG8gbnVtVW5pcXVlU291cmNlcyA9IFsmXSAoKSAtPiB1bnNp
Z25lZCB7Ci0gICAgICAgIFJlZ2lzdGVyU2V0IHNldDsKLSAgICAgICAgZm9yIChhdXRvJiBwYWly
IDogcGFpcnMpIHsKLSAgICAgICAgICAgIEdQUlJlZyBzb3VyY2UgPSBwYWlyLmZpcnN0OwotICAg
ICAgICAgICAgc2V0LnNldChzb3VyY2UpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBzZXQu
bnVtYmVyT2ZTZXRHUFJzKCk7Ci0gICAgfTsKLQotICAgIGF1dG8gbnVtVW5pcXVlRGVzdHMgPSBb
Jl0gKCkgLT4gdW5zaWduZWQgewotICAgICAgICBSZWdpc3RlclNldCBzZXQ7Ci0gICAgICAgIGZv
ciAoYXV0byYgcGFpciA6IHBhaXJzKSB7Ci0gICAgICAgICAgICBHUFJSZWcgZGVzdCA9IHBhaXIu
c2Vjb25kOwotICAgICAgICAgICAgc2V0LnNldChkZXN0KTsKLSAgICAgICAgfQotICAgICAgICBy
ZXR1cm4gc2V0Lm51bWJlck9mU2V0R1BScygpOwotICAgIH07Ci0jZW5kaWYKLQotICAgIHdoaWxl
IChwYWlycy5zaXplKCkpIHsKLSAgICAgICAgUmVnaXN0ZXJTZXQgZnJlZURlc3RpbmF0aW9uczsK
LSAgICAgICAgZm9yIChhdXRvJiBwYWlyIDogcGFpcnMpIHsKLSAgICAgICAgICAgIEdQUlJlZyBk
ZXN0ID0gcGFpci5zZWNvbmQ7Ci0gICAgICAgICAgICBmcmVlRGVzdGluYXRpb25zLnNldChkZXN0
KTsKLSAgICAgICAgfQotICAgICAgICBmb3IgKGF1dG8mIHBhaXIgOiBwYWlycykgewotICAgICAg
ICAgICAgR1BSUmVnIHNvdXJjZSA9IHBhaXIuZmlyc3Q7Ci0gICAgICAgICAgICBmcmVlRGVzdGlu
YXRpb25zLmNsZWFyKHNvdXJjZSk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoZnJlZURlc3Rp
bmF0aW9ucy5udW1iZXJPZlNldEdQUnMoKSkgewotICAgICAgICAgICAgYm9vbCBtYWRlTW92ZSA9
IGZhbHNlOwotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBhaXJzLnNpemUo
KTsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgYXV0byYgcGFpciA9IHBhaXJzW2ldOwotICAgICAg
ICAgICAgICAgIEdQUlJlZyBzb3VyY2UgPSBwYWlyLmZpcnN0OwotICAgICAgICAgICAgICAgIEdQ
UlJlZyBkZXN0ID0gcGFpci5zZWNvbmQ7Ci0gICAgICAgICAgICAgICAgaWYgKGZyZWVEZXN0aW5h
dGlvbnMuZ2V0KGRlc3QpKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1vdmUoc291cmNlLCBkZXN0
KTsKLSAgICAgICAgICAgICAgICAgICAgcGFpcnMucmVtb3ZlKGkpOwotICAgICAgICAgICAgICAg
ICAgICBtYWRlTW92ZSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQobWFk
ZU1vdmUsIG1hZGVNb3ZlKTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0KLSAg
ICAgICAgQVNTRVJUKG51bVVuaXF1ZURlc3RzKCkgPT0gbnVtVW5pcXVlU291cmNlcygpKTsKLSAg
ICAgICAgQVNTRVJUKG51bVVuaXF1ZURlc3RzKCkgPT0gcGFpcnMuc2l6ZSgpKTsKLSAgICAgICAg
Ly8gVGhlIHNldCBvZiBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIHJlZ2lzdGVycyBhcmUgZXF1aXZh
bGVudCBzZXRzLiBUaGlzIG1lYW5zIHdlIGRvbid0IGhhdmUKLSAgICAgICAgLy8gYW55IGZyZWUg
ZGVzdGluYXRpb24gcmVnaXN0ZXJzIHRoYXQgd29uJ3QgYWxzbyBjbG9iYmVyIGEgc291cmNlLiBX
ZSBnZXQgYXJvdW5kIHRoaXMgYnkKLSAgICAgICAgLy8gZXhjaGFuZ2luZyByZWdpc3RlcnMuCi0K
LSAgICAgICAgR1BSUmVnIHNvdXJjZSA9IHBhaXJzWzBdLmZpcnN0OwotICAgICAgICBHUFJSZWcg
ZGVzdCA9IHBhaXJzWzBdLnNlY29uZDsKLSAgICAgICAgc3dhcChzb3VyY2UsIGRlc3QpOwotICAg
ICAgICBwYWlycy5yZW1vdmUoMCk7Ci0KLSAgICAgICAgR1BSUmVnIG5ld1NvdXJjZSA9IHNvdXJj
ZTsKLSAgICAgICAgZm9yIChhdXRvJiBwYWlyIDogcGFpcnMpIHsKLSAgICAgICAgICAgIEdQUlJl
ZyBzb3VyY2UgPSBwYWlyLmZpcnN0OwotICAgICAgICAgICAgaWYgKHNvdXJjZSA9PSBkZXN0KSB7
Ci0gICAgICAgICAgICAgICAgcGFpci5maXJzdCA9IG5ld1NvdXJjZTsKLSAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIC8vIFdlIG1heSBo
YXZlIGludHJvZHVjZWQgcGFpcnMgdGhhdCBoYXZlIHRoZSBzYW1lIHNvdXJjZSBhbmQgZGVzdGlu
YXRpb24uIFJlbW92ZSB0aG9zZSBub3cuCi0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBwYWlycy5zaXplKCk7IGkrKykgewotICAgICAgICAgICAgYXV0byYgcGFpciA9IHBhaXJzW2ld
OwotICAgICAgICAgICAgaWYgKHBhaXIuZmlyc3QgPT0gcGFpci5zZWNvbmQpIHsKLSAgICAgICAg
ICAgICAgICBwYWlycy5yZW1vdmUoaSk7Ci0gICAgICAgICAgICAgICAgaS0tOwotICAgICAgICAg
ICAgfQotICAgICAgICB9Ci0gICAgfQotfQotI2VuZGlmIC8vIE5VTUJFUl9PRl9BUkdVTUVOVF9S
RUdJU1RFUlMgPj0gNAotCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEVOQUJMRShK
SVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAppbmRleCA3OTQ1NDZi
MGJkMjdhOTljMGMxOTg5YmUyZTQxMzE0MzRkYTQ4ZmFlLi5hY2E5ZTFmNzRkYzhlYTE2NmVmOTUy
ZTM1YmQwMWFmZDJkOTQ3ZmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0NDYWxsSGVscGVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxw
ZXJzLmgKQEAgLTk4Nyw3ICs5ODcsMTQgQEAgY2xhc3MgQ0NhbGxIZWxwZXJzIDogcHVibGljIEFz
c2VtYmx5SGVscGVycyB7CiAgICAgICAgICAgICBzd2FwKGRlc3RCLCBkZXN0Qyk7CiAgICAgfQog
Ci0gICAgdm9pZCBzZXR1cEZvdXJTdHViQXJnc0dQUihHUFJSZWcgZGVzdEEsIEdQUlJlZyBkZXN0
QiwgR1BSUmVnIGRlc3RDLCBHUFJSZWcgZGVzdEQsIEdQUlJlZyBzcmNBLCBHUFJSZWcgc3JjQiwg
R1BSUmVnIHNyY0MsIEdQUlJlZyBzcmNEKTsKKyAgICB2b2lkIHNldHVwRm91clN0dWJBcmdzR1BS
KEdQUlJlZyBkZXN0QSwgR1BSUmVnIGRlc3RCLCBHUFJSZWcgZGVzdEMsIEdQUlJlZyBkZXN0RCwg
R1BSUmVnIHNyY0EsIEdQUlJlZyBzcmNCLCBHUFJSZWcgc3JjQywgR1BSUmVnIHNyY0QpCisgICAg
eworICAgICAgICBzZXR1cFN0dWJBcmdzR1BSPDQ+KHsgeyBkZXN0QSwgZGVzdEIsIGRlc3RDLCBk
ZXN0RCB9IH0sIHsgeyBzcmNBLCBzcmNCLCBzcmNDLCBzcmNEIH0gfSk7CisgICAgfQorICAgIHZv
aWQgc2V0dXBGaXZlU3R1YkFyZ3NHUFIoR1BSUmVnIGRlc3RBLCBHUFJSZWcgZGVzdEIsIEdQUlJl
ZyBkZXN0QywgR1BSUmVnIGRlc3RELCBHUFJSZWcgZGVzdEUsIEdQUlJlZyBzcmNBLCBHUFJSZWcg
c3JjQiwgR1BSUmVnIHNyY0MsIEdQUlJlZyBzcmNELCBHUFJSZWcgc3JjRSkKKyAgICB7CisgICAg
ICAgIHNldHVwU3R1YkFyZ3NHUFI8NT4oeyB7IGRlc3RBLCBkZXN0QiwgZGVzdEMsIGRlc3RELCBk
ZXN0RSB9IH0sIHsgeyBzcmNBLCBzcmNCLCBzcmNDLCBzcmNELCBzcmNFIH0gfSk7CisgICAgfQog
CiAjaWYgQ1BVKFg4Nl82NCkgfHwgQ1BVKEFSTTY0KQogICAgIHRlbXBsYXRlPEZQUlJlZyBkZXN0
QSwgRlBSUmVnIGRlc3RCPgpAQCAtMjE4NCw2ICsyMTkxLDE5IEBAIGNsYXNzIENDYWxsSGVscGVy
cyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewogICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxG
cmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwogICAgIH0KIAorICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQ
UlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVnIGFyZzQsIEdQUlJlZyBhcmc1KQorICAgIHsK
KyAgICAgICAgc2V0dXBGaXZlU3R1YkFyZ3NHUFIoR1BSSW5mbzo6YXJndW1lbnRHUFIxLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjIsIEdQUkluZm86OmFyZ3VtZW50R1BSMywgR1BSSW5mbzo6YXJndW1l
bnRHUFI0LCBHUFJJbmZvOjphcmd1bWVudEdQUjUsIGFyZzEsIGFyZzIsIGFyZzMsIGFyZzQsIGFy
ZzUpOworICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjph
cmd1bWVudEdQUjApOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywg
R1BSUmVnIGFyZzQsIFRydXN0ZWRJbW0zMiBhcmc1KQorICAgIHsKKyAgICAgICAgc2V0dXBGb3Vy
U3R1YkFyZ3NHUFIoR1BSSW5mbzo6YXJndW1lbnRHUFIxLCBHUFJJbmZvOjphcmd1bWVudEdQUjIs
IEdQUkluZm86OmFyZ3VtZW50R1BSMywgR1BSSW5mbzo6YXJndW1lbnRHUFI0LCBhcmcxLCBhcmcy
LCBhcmczLCBhcmc0KTsKKyAgICAgICAgbW92ZShhcmc1LCBHUFJJbmZvOjphcmd1bWVudEdQUjUp
OworICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1
bWVudEdQUjApOworICAgIH0KKwogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIFRydXN0ZWRJbW1QdHIgYXJnMiwgR1BSUmVnIGFy
ZzMsIEdQUlJlZyBhcmc0KQogICAgIHsKICAgICAgICAgc2V0dXBTdHViQXJndW1lbnRzMTM0KGFy
ZzEsIGFyZzMsIGFyZzQpOwpAQCAtMjQ3Miw2ICsyNDkyLDEwNSBAQCBjbGFzcyBDQ2FsbEhlbHBl
cnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJzIHsKICAgICAgICAgLy8gUmVhZHkgZm9yIGEganVt
cCEKICAgICAgICAgbW92ZShuZXdGcmFtZVBvaW50ZXIsIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsK
ICAgICB9CisKKyNpZiBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTID49IDQKKyAgICB0ZW1w
bGF0ZTx1bnNpZ25lZCBOdW1iZXJPZlJlZ2lzdGVycz4KKyAgICB2b2lkIHNldHVwU3R1YkFyZ3NH
UFIoc3RkOjphcnJheTxHUFJSZWcsIE51bWJlck9mUmVnaXN0ZXJzPiBkZXN0aW5hdGlvbnMsIHN0
ZDo6YXJyYXk8R1BSUmVnLCBOdW1iZXJPZlJlZ2lzdGVycz4gc291cmNlcykKKyAgICB7CisgICAg
ICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7CisgICAgICAgICAgICBSZWdpc3RlclNldCBzZXQ7
CisgICAgICAgICAgICBmb3IgKEdQUlJlZyBkZXN0IDogZGVzdGluYXRpb25zKQorICAgICAgICAg
ICAgICAgIHNldC5zZXQoZGVzdCk7CisgICAgICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKHNl
dC5udW1iZXJPZlNldEdQUnMoKSA9PSA0LCAiRGVzdGluYXRpb25zIHNob3VsZCBub3QgYmUgYWxp
YXNlZC4iKTsKKyAgICAgICAgfQorCisgICAgICAgIHR5cGVkZWYgc3RkOjpwYWlyPEdQUlJlZywg
R1BSUmVnPiBSZWdQYWlyOworICAgICAgICBWZWN0b3I8UmVnUGFpciwgTnVtYmVyT2ZSZWdpc3Rl
cnM+IHBhaXJzOworCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBOdW1iZXJPZlJl
Z2lzdGVyczsgKytpKSB7CisgICAgICAgICAgICBpZiAoc291cmNlc1tpXSAhPSBkZXN0aW5hdGlv
bnNbaV0pCisgICAgICAgICAgICAgICAgcGFpcnMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKHNvdXJj
ZXNbaV0sIGRlc3RpbmF0aW9uc1tpXSkpOworICAgICAgICB9CisKKyNpZiAhQVNTRVJUX0RJU0FC
TEVECisgICAgICAgIGF1dG8gbnVtVW5pcXVlU291cmNlcyA9IFsmXSAoKSAtPiB1bnNpZ25lZCB7
CisgICAgICAgICAgICBSZWdpc3RlclNldCBzZXQ7CisgICAgICAgICAgICBmb3IgKGF1dG8mIHBh
aXIgOiBwYWlycykgeworICAgICAgICAgICAgICAgIEdQUlJlZyBzb3VyY2UgPSBwYWlyLmZpcnN0
OworICAgICAgICAgICAgICAgIHNldC5zZXQoc291cmNlKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIHJldHVybiBzZXQubnVtYmVyT2ZTZXRHUFJzKCk7CisgICAgICAgIH07CisKKyAgICAg
ICAgYXV0byBudW1VbmlxdWVEZXN0cyA9IFsmXSAoKSAtPiB1bnNpZ25lZCB7CisgICAgICAgICAg
ICBSZWdpc3RlclNldCBzZXQ7CisgICAgICAgICAgICBmb3IgKGF1dG8mIHBhaXIgOiBwYWlycykg
eworICAgICAgICAgICAgICAgIEdQUlJlZyBkZXN0ID0gcGFpci5zZWNvbmQ7CisgICAgICAgICAg
ICAgICAgc2V0LnNldChkZXN0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBz
ZXQubnVtYmVyT2ZTZXRHUFJzKCk7CisgICAgICAgIH07CisjZW5kaWYKKworICAgICAgICB3aGls
ZSAocGFpcnMuc2l6ZSgpKSB7CisgICAgICAgICAgICBSZWdpc3RlclNldCBmcmVlRGVzdGluYXRp
b25zOworICAgICAgICAgICAgZm9yIChhdXRvJiBwYWlyIDogcGFpcnMpIHsKKyAgICAgICAgICAg
ICAgICBHUFJSZWcgZGVzdCA9IHBhaXIuc2Vjb25kOworICAgICAgICAgICAgICAgIGZyZWVEZXN0
aW5hdGlvbnMuc2V0KGRlc3QpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZm9yIChhdXRv
JiBwYWlyIDogcGFpcnMpIHsKKyAgICAgICAgICAgICAgICBHUFJSZWcgc291cmNlID0gcGFpci5m
aXJzdDsKKyAgICAgICAgICAgICAgICBmcmVlRGVzdGluYXRpb25zLmNsZWFyKHNvdXJjZSk7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChmcmVlRGVzdGluYXRpb25zLm51bWJlck9m
U2V0R1BScygpKSB7CisgICAgICAgICAgICAgICAgYm9vbCBtYWRlTW92ZSA9IGZhbHNlOworICAg
ICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwYWlycy5zaXplKCk7IGkrKykg
eworICAgICAgICAgICAgICAgICAgICBhdXRvJiBwYWlyID0gcGFpcnNbaV07CisgICAgICAgICAg
ICAgICAgICAgIEdQUlJlZyBzb3VyY2UgPSBwYWlyLmZpcnN0OworICAgICAgICAgICAgICAgICAg
ICBHUFJSZWcgZGVzdCA9IHBhaXIuc2Vjb25kOworICAgICAgICAgICAgICAgICAgICBpZiAoZnJl
ZURlc3RpbmF0aW9ucy5nZXQoZGVzdCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1vdmUo
c291cmNlLCBkZXN0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhaXJzLnJlbW92ZShpKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIG1hZGVNb3ZlID0gdHJ1ZTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQobWFkZU1vdmUsIG1hZGVNb3ZlKTsKKyAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgQVNT
RVJUKG51bVVuaXF1ZURlc3RzKCkgPT0gbnVtVW5pcXVlU291cmNlcygpKTsKKyAgICAgICAgICAg
IEFTU0VSVChudW1VbmlxdWVEZXN0cygpID09IHBhaXJzLnNpemUoKSk7CisgICAgICAgICAgICAv
LyBUaGUgc2V0IG9mIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gcmVnaXN0ZXJzIGFyZSBlcXVpdmFs
ZW50IHNldHMuIFRoaXMgbWVhbnMgd2UgZG9uJ3QgaGF2ZQorICAgICAgICAgICAgLy8gYW55IGZy
ZWUgZGVzdGluYXRpb24gcmVnaXN0ZXJzIHRoYXQgd29uJ3QgYWxzbyBjbG9iYmVyIGEgc291cmNl
LiBXZSBnZXQgYXJvdW5kIHRoaXMgYnkKKyAgICAgICAgICAgIC8vIGV4Y2hhbmdpbmcgcmVnaXN0
ZXJzLgorCisgICAgICAgICAgICBHUFJSZWcgc291cmNlID0gcGFpcnNbMF0uZmlyc3Q7CisgICAg
ICAgICAgICBHUFJSZWcgZGVzdCA9IHBhaXJzWzBdLnNlY29uZDsKKyAgICAgICAgICAgIHN3YXAo
c291cmNlLCBkZXN0KTsKKyAgICAgICAgICAgIHBhaXJzLnJlbW92ZSgwKTsKKworICAgICAgICAg
ICAgR1BSUmVnIG5ld1NvdXJjZSA9IHNvdXJjZTsKKyAgICAgICAgICAgIGZvciAoYXV0byYgcGFp
ciA6IHBhaXJzKSB7CisgICAgICAgICAgICAgICAgR1BSUmVnIHNvdXJjZSA9IHBhaXIuZmlyc3Q7
CisgICAgICAgICAgICAgICAgaWYgKHNvdXJjZSA9PSBkZXN0KSB7CisgICAgICAgICAgICAgICAg
ICAgIHBhaXIuZmlyc3QgPSBuZXdTb3VyY2U7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gV2UgbWF5
IGhhdmUgaW50cm9kdWNlZCBwYWlycyB0aGF0IGhhdmUgdGhlIHNhbWUgc291cmNlIGFuZCBkZXN0
aW5hdGlvbi4gUmVtb3ZlIHRob3NlIG5vdy4KKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBwYWlycy5zaXplKCk7IGkrKykgeworICAgICAgICAgICAgICAgIGF1dG8mIHBhaXIg
PSBwYWlyc1tpXTsKKyAgICAgICAgICAgICAgICBpZiAocGFpci5maXJzdCA9PSBwYWlyLnNlY29u
ZCkgeworICAgICAgICAgICAgICAgICAgICBwYWlycy5yZW1vdmUoaSk7CisgICAgICAgICAgICAg
ICAgICAgIGktLTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICB9CisjZW5kaWYgLy8gTlVNQkVSX09GX0FSR1VNRU5UX1JFR0lTVEVSUyA+PSA0CiAgICAg
CiAgICAgLy8gVGhlc2Ugb3BlcmF0aW9ucyBjbG9iYmVyIGFsbCB2b2xhdGlsZSByZWdpc3RlcnMu
IFRoZXkgYXNzdW1lIHRoYXQgdGhlcmUgaXMgcm9vbSBvbiB0aGUgdG9wIG9mCiAgICAgLy8gc3Rh
Y2sgdG8gbWFyc2hhbGwgY2FsbCBhcmd1bWVudHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAK
aW5kZXggMWFiZTdjNDM0MTc0NjNmOTY5MTY1MjlhNmU2MTRlZGUwOWM3ZmQzOS4uMjM3ZDE5YTRi
MDgyZjFjYjBlMDJjMmVhNTc3Y2MxY2MzMTA3OTQzMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmNwcApAQCAtMzIyLDYgKzMyMiw4IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNz
KCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9nZXR0ZXJfc2V0dGVyX2J5X2lkKQogICAgICAg
ICBERUZJTkVfT1Aob3BfcHV0X2dldHRlcl9ieV92YWwpCiAgICAgICAgIERFRklORV9PUChvcF9w
dXRfc2V0dGVyX2J5X3ZhbCkKKyAgICAgICAgREVGSU5FX09QKG9wX2RlZmluZV9kYXRhX3Byb3Bl
cnR5KQorICAgICAgICBERUZJTkVfT1Aob3BfZGVmaW5lX2FjY2Vzc29yX3Byb3BlcnR5KQogCiAg
ICAgICAgIERFRklORV9PUChvcF9yZXQpCiAgICAgICAgIERFRklORV9PUChvcF9yc2hpZnQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCBhMTRhODU2YTA3YmQyNWFhZDdjY2UwZDNiODQwZWUy
NzNlZWNkZmM1Li40NTFhMjBkNTY0MTM4ZWNiZDc1YzRkZDMyYWQ0ZGNmYTY0NjI2NjE3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTU2Nyw2ICs1NjcsOCBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9nZXR0ZXJfc2V0dGVyX2J5X2lkKEluc3RydWN0aW9u
Kik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfZ2V0dGVyX2J5X3ZhbChJbnN0cnVjdGlvbiop
OwogICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X3NldHRlcl9ieV92YWwoSW5zdHJ1Y3Rpb24qKTsK
KyAgICAgICAgdm9pZCBlbWl0X29wX2RlZmluZV9kYXRhX3Byb3BlcnR5KEluc3RydWN0aW9uKik7
CisgICAgICAgIHZvaWQgZW1pdF9vcF9kZWZpbmVfYWNjZXNzb3JfcHJvcGVydHkoSW5zdHJ1Y3Rp
b24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3JldChJbnN0cnVjdGlvbiopOwogICAgICAgICB2
b2lkIGVtaXRfb3BfcnNoaWZ0KEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9z
ZXRfZnVuY3Rpb25fbmFtZShJbnN0cnVjdGlvbiopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wZXJhdGlvbnMuaAppbmRleCA5MzVjNGZhYjE5ZDJkNzc5YTUwZWI0ZTc3ZjM1MTg2MWIy
MTFhM2Y2Li40N2ZlOTU3M2ZhZDc1NmEyNjI2NzQ4MWZkNmFjZWFiODZlOTNlNTI4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaApAQCAtNTksNiArNTksNyBAQCBj
bGFzcyBSZWdFeHBPYmplY3Q7CiBjbGFzcyBSZWdpc3RlcjsKIGNsYXNzIFN0cnVjdHVyZTsKIGNs
YXNzIFN0cnVjdHVyZVN0dWJJbmZvOworY2xhc3MgU3ltYm9sOwogY2xhc3MgU3ltYm9sVGFibGU7
CiBjbGFzcyBXYXRjaHBvaW50U2V0OwogCkBAIC0xMTEsNiArMTEyLDcgQEAgdHlwZWRlZiBjaGFy
KiBVbnVzZWRQdHI7CiAgICAgU3NpOiBTdHJ1Y3R1cmVTdHViSW5mbyoKICAgICBTdDogU3RydWN0
dXJlKgogICAgIFN5bXRhYjogU3ltYm9sVGFibGUqCisgICAgU3ltOiBTeW1ib2wqCiAgICAgVDog
U3RyaW5nSW1wbCoKICAgICBWOiB2b2lkCiAgICAgVm06IFZNKgpAQCAtMjY5LDYgKzI3MSwxNCBA
QCB0eXBlZGVmIHZvaWQgKEpJVF9PUEVSQVRJT04gKlZfSklUT3BlcmF0aW9uX0VQWkopKEV4ZWNT
dGF0ZSosIHZvaWQqLCBpbnQzMl90LCBFbgogdHlwZWRlZiB2b2lkIChKSVRfT1BFUkFUSU9OICpW
X0pJVE9wZXJhdGlvbl9FU3NpSkpJKShFeGVjU3RhdGUqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVu
Y29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgVW5pcXVlZFN0cmluZ0ltcGwqKTsKIHR5cGVk
ZWYgdm9pZCAoSklUX09QRVJBVElPTiAqVl9KSVRPcGVyYXRpb25fRUpKSkkpKEV4ZWNTdGF0ZSos
IEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIFVuaXF1ZWRT
dHJpbmdJbXBsKik7CiB0eXBlZGVmIHZvaWQgKEpJVF9PUEVSQVRJT04gKlZfSklUT3BlcmF0aW9u
X0VKSkpKKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSk7Cit0eXBlZGVmIHZvaWQgKEpJVF9PUEVSQVRJT04g
KlZfSklUT3BlcmF0aW9uX0VPSkpaKShFeGVjU3RhdGUqLCBKU09iamVjdCosIEVuY29kZWRKU1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSwgaW50MzJfdCk7Cit0eXBlZGVmIHZvaWQgKEpJVF9PUEVSQVRJ
T04gKlZfSklUT3BlcmF0aW9uX0VPSnNzSlopKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgSlNTdHJp
bmcqLCBFbmNvZGVkSlNWYWx1ZSwgaW50MzJfdCk7Cit0eXBlZGVmIHZvaWQgKEpJVF9PUEVSQVRJ
T04gKlZfSklUT3BlcmF0aW9uX0VPSUpaKShFeGVjU3RhdGUqLCBKU09iamVjdCosIFVuaXF1ZWRT
dHJpbmdJbXBsKiwgRW5jb2RlZEpTVmFsdWUsIGludDMyX3QpOwordHlwZWRlZiB2b2lkIChKSVRf
T1BFUkFUSU9OICpWX0pJVE9wZXJhdGlvbl9FT1N5bUpaKShFeGVjU3RhdGUqLCBKU09iamVjdCos
IFN5bWJvbCosIEVuY29kZWRKU1ZhbHVlLCBpbnQzMl90KTsKK3R5cGVkZWYgdm9pZCAoSklUX09Q
RVJBVElPTiAqVl9KSVRPcGVyYXRpb25fRU9KT09aKShFeGVjU3RhdGUqLCBKU09iamVjdCosIEVu
Y29kZWRKU1ZhbHVlLCBKU09iamVjdCosIEpTT2JqZWN0KiwgaW50MzJfdCk7Cit0eXBlZGVmIHZv
aWQgKEpJVF9PUEVSQVRJT04gKlZfSklUT3BlcmF0aW9uX0VPSnNzT09aKShFeGVjU3RhdGUqLCBK
U09iamVjdCosIEpTU3RyaW5nKiwgSlNPYmplY3QqLCBKU09iamVjdCosIGludDMyX3QpOwordHlw
ZWRlZiB2b2lkIChKSVRfT1BFUkFUSU9OICpWX0pJVE9wZXJhdGlvbl9FT0lPT1opKEV4ZWNTdGF0
ZSosIEpTT2JqZWN0KiwgVW5pcXVlZFN0cmluZ0ltcGwqLCBKU09iamVjdCosIEpTT2JqZWN0Kiwg
aW50MzJfdCk7Cit0eXBlZGVmIHZvaWQgKEpJVF9PUEVSQVRJT04gKlZfSklUT3BlcmF0aW9uX0VP
U3ltT09aKShFeGVjU3RhdGUqLCBKU09iamVjdCosIFN5bWJvbCosIEpTT2JqZWN0KiwgSlNPYmpl
Y3QqLCBpbnQzMl90KTsKIHR5cGVkZWYgdm9pZCAoSklUX09QRVJBVElPTiAqVl9KSVRPcGVyYXRp
b25fRVdzKShFeGVjU3RhdGUqLCBXYXRjaHBvaW50U2V0Kik7CiB0eXBlZGVmIHZvaWQgKEpJVF9P
UEVSQVRJT04gKlZfSklUT3BlcmF0aW9uX0VaKShFeGVjU3RhdGUqLCBpbnQzMl90KTsKIHR5cGVk
ZWYgdm9pZCAoSklUX09QRVJBVElPTiAqVl9KSVRPcGVyYXRpb25fRVpKKShFeGVjU3RhdGUqLCBp
bnQzMl90LCBFbmNvZGVkSlNWYWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUUHJvcGVydHlBY2Nlc3MuY3BwCmluZGV4IDU2MDI2OGI1YzMxNDc4NDEzNjA3MmRkZDgwMDc3
NzgwZjMzNzhiMmIuLjlkNGZkMWFhNmFmNjRiNDhkN2JlMWIzZWI0NjkzMGI1M2YzNWY0YjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCkBA
IC0xNzczLDYgKzE3NzMsMTggQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRGbG9hdFR5cGVkQXJy
YXlQdXRCeVZhbChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLAogICAgIHJldHVybiBz
bG93Q2FzZXM7CiB9CiAKK3ZvaWQgSklUOjplbWl0X29wX2RlZmluZV9kYXRhX3Byb3BlcnR5KElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgSklUU2xvd1BhdGhDYWxsIHNs
b3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9kZWZpbmVfZGF0
YV9wcm9wZXJ0eSk7CisgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKK30KKwordm9pZCBKSVQ6OmVt
aXRfb3BfZGVmaW5lX2FjY2Vzc29yX3Byb3BlcnR5KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCit7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50
SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9kZWZpbmVfYWNjZXNzb3JfcHJvcGVydHkpOworICAgIHNs
b3dQYXRoQ2FsbC5jYWxsKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8g
RU5BQkxFKEpJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyLmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyLmFzbQppbmRleCAxMDAzN2FmNTZjZTZjN2YxYTkzZTUyZDJhNzE3ZTI5NGUw
MTA1ZjlhLi5jOWI4NDQzN2M2NTc0NTUzZTM4MGU1MjEyMjYxYWI5MjY5NmJlMzRkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20K
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNt
CkBAIC0xNDU3LDYgKzE0NTcsMTggQEAgX2xsaW50X29wX3B1dF9zZXR0ZXJfYnlfdmFsOgogICAg
IGRpc3BhdGNoKDUpCiAKIAorX2xsaW50X29wX2RlZmluZV9kYXRhX3Byb3BlcnR5OgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsT3Bjb2RlU2xvd1BhdGgoX3Nsb3dfcGF0aF9kZWZpbmVf
ZGF0YV9wcm9wZXJ0eSkKKyAgICBkaXNwYXRjaCg1KQorCisKK19sbGludF9vcF9kZWZpbmVfYWNj
ZXNzb3JfcHJvcGVydHk6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxPcGNvZGVTbG93
UGF0aChfc2xvd19wYXRoX2RlZmluZV9hY2Nlc3Nvcl9wcm9wZXJ0eSkKKyAgICBkaXNwYXRjaCg2
KQorCisKIF9sbGludF9vcF9qdHJ1ZToKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAganVtcFRy
dWVPckZhbHNlKApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uU2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNs
b3dQYXRocy5jcHAKaW5kZXggY2FmODI2ZGMyYWNkYWI2ZDlhMzk1OGEwY2YwMzExNDM2MjNiYmEz
Zi4uZjI1ZWU4MTFhY2E5ZWNhNGE5NmRhOTBlNWUwYTk0MjViOTc0NThjMCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCkBAIC0zMyw2
ICszMyw3IEBACiAjaW5jbHVkZSAiQ2xvbmVkQXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiQ29kZVBy
b2ZpbGluZy5oIgogI2luY2x1ZGUgIkNvbW1vblNsb3dQYXRoc0V4Y2VwdGlvbnMuaCIKKyNpbmNs
dWRlICJEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaCIKICNpbmNsdWRlICJEaXJlY3RBcmd1bWVu
dHMuaCIKICNpbmNsdWRlICJFcnJvci5oIgogI2luY2x1ZGUgIkVycm9ySGFuZGxpbmdTY29wZS5o
IgpAQCAtOTMwLDQgKzkzMSwzOSBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0X2J5X3Zh
bF93aXRoX3RoaXMpCiAgICAgRU5EKCk7CiB9CiAKK1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9k
ZWZpbmVfZGF0YV9wcm9wZXJ0eSkKK3sKKyAgICBCRUdJTigpOworICAgIEpTT2JqZWN0KiBiYXNl
ID0gYXNPYmplY3QoT1BfQygxKS5qc1ZhbHVlKCkpOworICAgIEpTVmFsdWUgcHJvcGVydHkgPSBP
UF9DKDIpLmpzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gT1BfQygzKS5qc1ZhbHVlKCk7
CisgICAgSlNWYWx1ZSBhdHRyaWJ1dGVzID0gT1BfQyg0KS5qc1ZhbHVlKCk7CisgICAgQVNTRVJU
KGF0dHJpYnV0ZXMuaXNJbnQzMigpKTsKKworICAgIGF1dG8gcHJvcGVydHlOYW1lID0gcHJvcGVy
dHkudG9Qcm9wZXJ0eUtleShleGVjKTsKKyAgICBDSEVDS19FWENFUFRJT04oKTsKKyAgICBQcm9w
ZXJ0eURlc2NyaXB0b3IgZGVzY3JpcHRvciA9IHRvUHJvcGVydHlEZXNjcmlwdG9yKHZhbHVlLCBq
c1VuZGVmaW5lZCgpLCBqc1VuZGVmaW5lZCgpLCBEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMoYXR0
cmlidXRlcy5hc0ludDMyKCkpKTsKKyAgICBBU1NFUlQoKGRlc2NyaXB0b3IuYXR0cmlidXRlcygp
ICYgQWNjZXNzb3IpIHx8ICghZGVzY3JpcHRvci5pc0FjY2Vzc29yRGVzY3JpcHRvcigpKSk7Cisg
ICAgYmFzZS0+bWV0aG9kVGFibGUodm0pLT5kZWZpbmVPd25Qcm9wZXJ0eShiYXNlLCBleGVjLCBw
cm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHRydWUpOworICAgIEVORCgpOworfQorCitTTE9XX1BB
VEhfREVDTChzbG93X3BhdGhfZGVmaW5lX2FjY2Vzc29yX3Byb3BlcnR5KQoreworICAgIEJFR0lO
KCk7CisgICAgSlNPYmplY3QqIGJhc2UgPSBhc09iamVjdChPUF9DKDEpLmpzVmFsdWUoKSk7Cisg
ICAgSlNWYWx1ZSBwcm9wZXJ0eSA9IE9QX0MoMikuanNWYWx1ZSgpOworICAgIEpTVmFsdWUgZ2V0
dGVyID0gT1BfQygzKS5qc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSBzZXR0ZXIgPSBPUF9DKDQpLmpz
VmFsdWUoKTsKKyAgICBKU1ZhbHVlIGF0dHJpYnV0ZXMgPSBPUF9DKDUpLmpzVmFsdWUoKTsKKyAg
ICBBU1NFUlQoYXR0cmlidXRlcy5pc0ludDMyKCkpOworCisgICAgYXV0byBwcm9wZXJ0eU5hbWUg
PSBwcm9wZXJ0eS50b1Byb3BlcnR5S2V5KGV4ZWMpOworICAgIENIRUNLX0VYQ0VQVElPTigpOwor
ICAgIFByb3BlcnR5RGVzY3JpcHRvciBkZXNjcmlwdG9yID0gdG9Qcm9wZXJ0eURlc2NyaXB0b3Io
anNVbmRlZmluZWQoKSwgZ2V0dGVyLCBzZXR0ZXIsIERlZmluZVByb3BlcnR5QXR0cmlidXRlcyhh
dHRyaWJ1dGVzLmFzSW50MzIoKSkpOworICAgIEFTU0VSVCgoZGVzY3JpcHRvci5hdHRyaWJ1dGVz
KCkgJiBBY2Nlc3NvcikgfHwgKCFkZXNjcmlwdG9yLmlzQWNjZXNzb3JEZXNjcmlwdG9yKCkpKTsK
KyAgICBiYXNlLT5tZXRob2RUYWJsZSh2bSktPmRlZmluZU93blByb3BlcnR5KGJhc2UsIGV4ZWMs
IHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgdHJ1ZSk7CisgICAgRU5EKCk7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tbW9uU2xvd1BhdGhzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25T
bG93UGF0aHMuaAppbmRleCA4ZWU1YmUzMWFkM2NlZWI2MTEwMzlmMjk4ZTdkYjM2ZmI5NDlmZjk5
Li40NzViNzdlMThmZTIyZDA2ODhhMjVlMWY1N2I4NGU0YzA4MmI4ZmNkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaApAQCAtMjU3LDYgKzI1
Nyw4IEBAIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZ2V0X2J5X2lkX3dpdGhfdGhp
cyk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2dldF9ieV92YWxfd2l0aF90aGlz
KTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHV0X2J5X2lkX3dpdGhfdGhpcyk7
CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3B1dF9ieV92YWxfd2l0aF90aGlzKTsK
K1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZGVmaW5lX2RhdGFfcHJvcGVydHkpOwor
U0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9kZWZpbmVfYWNjZXNzb3JfcHJvcGVydHkp
OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9EZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZDhh
MjQ4YjkxNjBjNDc2NGIxMGNhNDExZmIyZjJjNzVjYTk4MzYwCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzLmgK
QEAgLTAsMCArMSwxNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9UcmlTdGF0ZS5oPgorCituYW1l
c3BhY2UgSlNDIHsKKworY2xhc3MgRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzIHsKK3B1YmxpYzoK
KyAgICBzdGF0aWNfYXNzZXJ0KEZhbHNlVHJpU3RhdGUgPT0gMCwgIkZhbHNlVHJpU3RhdGUgaXMg
MC4iKTsKKyAgICBzdGF0aWNfYXNzZXJ0KFRydWVUcmlTdGF0ZSA9PSAxLCAiVHJ1ZVRyaVN0YXRl
IGlzIDEuIik7CisgICAgc3RhdGljX2Fzc2VydChNaXhlZFRyaVN0YXRlID09IDIsICJNaXhlZFRy
aVN0YXRlIGlzIDIuIik7CisKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgQ29uZmlndXJhYmxl
U2hpZnQgPSAwOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBFbnVtZXJhYmxlU2hpZnQgPSAy
OworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBXcml0YWJsZVNoaWZ0ID0gNDsKKyAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgVmFsdWVTaGlmdCA9IDY7CisgICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIEdldFNoaWZ0ID0gNzsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU2V0U2hpZnQgPSA4
OworCisgICAgRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzKCkKKyAgICAgICAgOiBtX2F0dHJpYnV0
ZXMoCisgICAgICAgICAgICAoTWl4ZWRUcmlTdGF0ZSA8PCBDb25maWd1cmFibGVTaGlmdCkKKyAg
ICAgICAgICAgIHwgKE1peGVkVHJpU3RhdGUgPDwgRW51bWVyYWJsZVNoaWZ0KQorICAgICAgICAg
ICAgfCAoTWl4ZWRUcmlTdGF0ZSA8PCBXcml0YWJsZVNoaWZ0KQorICAgICAgICAgICAgfCAoMCA8
PCBWYWx1ZVNoaWZ0KQorICAgICAgICAgICAgfCAoMCA8PCBHZXRTaGlmdCkKKyAgICAgICAgICAg
IHwgKDAgPDwgU2V0U2hpZnQpKQorICAgIHsKKyAgICB9CisKKyAgICBleHBsaWNpdCBEZWZpbmVQ
cm9wZXJ0eUF0dHJpYnV0ZXModW5zaWduZWQgYXR0cmlidXRlcykKKyAgICAgICAgOiBtX2F0dHJp
YnV0ZXMoYXR0cmlidXRlcykKKyAgICB7CisgICAgfQorCisgICAgdW5zaWduZWQgcmF3UmVwcmVz
ZW50YXRpb24oKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYXR0cmlidXRlczsKKyAg
ICB9CisKKyAgICBib29sIGhhc1ZhbHVlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX2F0dHJp
YnV0ZXMgJiAoMGIxIDw8IFZhbHVlU2hpZnQpOworICAgIH0KKworICAgIHZvaWQgc2V0VmFsdWUo
KQorICAgIHsKKyAgICAgICAgbV9hdHRyaWJ1dGVzID0gbV9hdHRyaWJ1dGVzIHwgKDBiMSA8PCBW
YWx1ZVNoaWZ0KTsKKyAgICB9CisKKyAgICBib29sIGhhc0dldCgpCisgICAgeworICAgICAgICBy
ZXR1cm4gbV9hdHRyaWJ1dGVzICYgKDBiMSA8PCBHZXRTaGlmdCk7CisgICAgfQorCisgICAgdm9p
ZCBzZXRHZXQoKQorICAgIHsKKyAgICAgICAgbV9hdHRyaWJ1dGVzID0gbV9hdHRyaWJ1dGVzIHwg
KDBiMSA8PCBHZXRTaGlmdCk7CisgICAgfQorCisgICAgYm9vbCBoYXNTZXQoKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIG1fYXR0cmlidXRlcyAmICgwYjEgPDwgU2V0U2hpZnQpOworICAgIH0KKwor
ICAgIHZvaWQgc2V0U2V0KCkKKyAgICB7CisgICAgICAgIG1fYXR0cmlidXRlcyA9IG1fYXR0cmli
dXRlcyB8ICgwYjEgPDwgU2V0U2hpZnQpOworICAgIH0KKworICAgIFRyaVN0YXRlIHdyaXRhYmxl
KCkKKyAgICB7CisgICAgICAgIHJldHVybiBleHRyYWN0VHJpU3RhdGUoV3JpdGFibGVTaGlmdCk7
CisgICAgfQorCisgICAgVHJpU3RhdGUgY29uZmlndXJhYmxlKCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBleHRyYWN0VHJpU3RhdGUoQ29uZmlndXJhYmxlU2hpZnQpOworICAgIH0KKworICAgIFRy
aVN0YXRlIGVudW1lcmFibGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGV4dHJhY3RUcmlTdGF0
ZShFbnVtZXJhYmxlU2hpZnQpOworICAgIH0KKworICAgIHZvaWQgc2V0V3JpdGFibGUoYm9vbCB2
YWx1ZSkKKyAgICB7CisgICAgICAgIGZpbGxXaXRoVHJpU3RhdGUodmFsdWUgPyBUcnVlVHJpU3Rh
dGUgOiBGYWxzZVRyaVN0YXRlLCBXcml0YWJsZVNoaWZ0KTsKKyAgICB9CisKKyAgICB2b2lkIHNl
dENvbmZpZ3VyYWJsZShib29sIHZhbHVlKQorICAgIHsKKyAgICAgICAgZmlsbFdpdGhUcmlTdGF0
ZSh2YWx1ZSA/IFRydWVUcmlTdGF0ZSA6IEZhbHNlVHJpU3RhdGUsIENvbmZpZ3VyYWJsZVNoaWZ0
KTsKKyAgICB9CisKKyAgICB2b2lkIHNldEVudW1lcmFibGUoYm9vbCB2YWx1ZSkKKyAgICB7Cisg
ICAgICAgIGZpbGxXaXRoVHJpU3RhdGUodmFsdWUgPyBUcnVlVHJpU3RhdGUgOiBGYWxzZVRyaVN0
YXRlLCBFbnVtZXJhYmxlU2hpZnQpOworICAgIH0KKworcHJpdmF0ZToKKyAgICB2b2lkIGZpbGxX
aXRoVHJpU3RhdGUoVHJpU3RhdGUgc3RhdGUsIHVuc2lnbmVkIHNoaWZ0KQorICAgIHsKKyAgICAg
ICAgdW5zaWduZWQgbWFzayA9IDBiMTEgPDwgc2hpZnQ7CisgICAgICAgIG1fYXR0cmlidXRlcyA9
IChtX2F0dHJpYnV0ZXMgJiB+bWFzaykgfCAoc3RhdGUgPDwgc2hpZnQpOworICAgIH0KKworICAg
IFRyaVN0YXRlIGV4dHJhY3RUcmlTdGF0ZSh1bnNpZ25lZCBzaGlmdCkKKyAgICB7CisgICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDxUcmlTdGF0ZT4oKG1fYXR0cmlidXRlcyA+PiBzaGlmdCkgJiAw
YjExKTsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBtX2F0dHJpYnV0ZXM7Cit9OworCisKK30gLy8g
bmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuY3BwCmluZGV4IDk3M2MyZTgxNjllYjhmYzVlYWVmNjQ2NzBiNDYxMTM2MjFhNTU4
YTAuLjVjOTRiOTI1Y2JlNjVlMTkyNDFkNDlhMjhmMWUxMWEwOWY2NzEyNzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTQwNCw3
ICs0MDQsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2bSkKICAgICBtX2Z1bmN0
aW9uUHJvdG9IYXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9uLnNldCh2bSwgdGhpcywgaGFzSW5zdGFu
Y2VTeW1ib2xGdW5jdGlvbik7CiAgICAgbV90aHJvd1R5cGVFcnJvckdldHRlclNldHRlci5pbml0
TGF0ZXIoCiAgICAgICAgIFtdIChjb25zdCBJbml0aWFsaXplcjxHZXR0ZXJTZXR0ZXI+JiBpbml0
KSB7Ci0gICAgICAgICAgICBKU0Z1bmN0aW9uKiB0aHJvd2VyID0gSlNGdW5jdGlvbjo6Y3JlYXRl
KGluaXQudm0sIGluaXQub3duZXIsIDAsIFN0cmluZygpLCBnbG9iYWxGdW5jVGhyb3dUeXBlRXJy
b3IpOworICAgICAgICAgICAgSlNGdW5jdGlvbiogdGhyb3dlciA9IGluaXQub3duZXItPnRocm93
VHlwZUVycm9yRnVuY3Rpb24oKTsKICAgICAgICAgICAgIEdldHRlclNldHRlciogZ2V0dGVyU2V0
dGVyID0gR2V0dGVyU2V0dGVyOjpjcmVhdGUoaW5pdC52bSwgaW5pdC5vd25lcik7CiAgICAgICAg
ICAgICBnZXR0ZXJTZXR0ZXItPnNldEdldHRlcihpbml0LnZtLCBpbml0Lm93bmVyLCB0aHJvd2Vy
KTsKICAgICAgICAgICAgIGdldHRlclNldHRlci0+c2V0U2V0dGVyKGluaXQudm0sIGluaXQub3du
ZXIsIHRocm93ZXIpOwpAQCAtNTgxLDggKzU4MSw4IEBAIG1fICMjIHByb3Blck5hbWUgIyMgU3Ry
dWN0dXJlLnNldCh2bSwgdGhpcywgaW5zdGFuY2VUeXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRo
CiAgICAgT2JqZWN0Q29uc3RydWN0b3IqIG9iamVjdENvbnN0cnVjdG9yID0gT2JqZWN0Q29uc3Ry
dWN0b3I6OmNyZWF0ZSh2bSwgdGhpcywgT2JqZWN0Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVy
ZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1fb2JqZWN0UHJvdG90eXBl
LmdldCgpKTsKICAgICBtX29iamVjdENvbnN0cnVjdG9yLnNldCh2bSwgdGhpcywgb2JqZWN0Q29u
c3RydWN0b3IpOwogCi0gICAgSlNGdW5jdGlvbiogZGVmaW5lUHJvcGVydHlGdW5jdGlvbiA9IG1f
b2JqZWN0Q29uc3RydWN0b3ItPmFkZERlZmluZVByb3BlcnR5KGV4ZWMsIHRoaXMpOwotICAgIG1f
ZGVmaW5lUHJvcGVydHlGdW5jdGlvbi5zZXQodm0sIHRoaXMsIGRlZmluZVByb3BlcnR5RnVuY3Rp
b24pOworICAgIEpTRnVuY3Rpb24qIHRocm93VHlwZUVycm9yRnVuY3Rpb24gPSBKU0Z1bmN0aW9u
OjpjcmVhdGUodm0sIHRoaXMsIDAsIFN0cmluZygpLCBnbG9iYWxGdW5jVGhyb3dUeXBlRXJyb3Ip
OworICAgIG1fdGhyb3dUeXBlRXJyb3JGdW5jdGlvbi5zZXQodm0sIHRoaXMsIHRocm93VHlwZUVy
cm9yRnVuY3Rpb24pOwogCiAgICAgSlNDZWxsKiBmdW5jdGlvbkNvbnN0cnVjdG9yID0gRnVuY3Rp
b25Db25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBGdW5jdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1
Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBtX2Z1bmN0aW9uUHJv
dG90eXBlLmdldCgpKTsKICAgICBBcnJheUNvbnN0cnVjdG9yKiBhcnJheUNvbnN0cnVjdG9yID0g
QXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCB0aGlzLCBBcnJheUNvbnN0cnVjdG9yOjpjcmVh
dGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBtX2FycmF5
UHJvdG90eXBlLmdldCgpLCBtX3NwZWNpZXNHZXR0ZXJTZXR0ZXIuZ2V0KCkpOwpAQCAtODAzLDcg
KzgwMyw3IEBAIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT4ganNOYW1lLCBsb3dlck5hbWUgIyMgQ29uc3RydWN0CiAgICAgbV9zcGVjaWFsUG9pbnRlcnNb
U3BlY2lhbDo6T2JqZWN0Q29uc3RydWN0b3JdID0gb2JqZWN0Q29uc3RydWN0b3I7CiAgICAgbV9z
cGVjaWFsUG9pbnRlcnNbU3BlY2lhbDo6QXJyYXlDb25zdHJ1Y3Rvcl0gPSBhcnJheUNvbnN0cnVj
dG9yOwogCi0gICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlu
a1RpbWVDb25zdGFudDo6RGVmaW5lUHJvcGVydHlGdW5jdGlvbildID0gbV9kZWZpbmVQcm9wZXJ0
eUZ1bmN0aW9uLmdldCgpOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OlRocm93VHlwZUVycm9yRnVuY3Rpb24pXSA9IG1fdGhy
b3dUeXBlRXJyb3JGdW5jdGlvbi5nZXQoKTsKIAogICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjp1
c2VEb2xsYXJWTSgpKSkgewogICAgICAgICBKU0RvbGxhclZNUHJvdG90eXBlKiBkb2xsYXJWTVBy
b3RvdHlwZSA9IEpTRG9sbGFyVk1Qcm90b3R5cGU6OmNyZWF0ZSh2bSwgdGhpcywgSlNEb2xsYXJW
TVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5n
ZXQoKSkpOwpAQCAtMTA2Niw3ICsxMDY2LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRD
aGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIHZpc2l0b3Iu
YXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2V2YWxGdW5jdGlvbik7CiAgICAgdmlzaXRvci5hcHBlbmQo
JnRoaXNPYmplY3QtPm1fY2FsbEZ1bmN0aW9uKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09i
amVjdC0+bV9hcHBseUZ1bmN0aW9uKTsKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+
bV9kZWZpbmVQcm9wZXJ0eUZ1bmN0aW9uKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVj
dC0+bV90aHJvd1R5cGVFcnJvckZ1bmN0aW9uKTsKICAgICB0aGlzT2JqZWN0LT5tX2FycmF5UHJv
dG9Ub1N0cmluZ0Z1bmN0aW9uLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1fYXJy
YXlQcm90b1ZhbHVlc0Z1bmN0aW9uLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1f
aW5pdGlhbGl6ZVByb21pc2VGdW5jdGlvbi52aXNpdCh2aXNpdG9yKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IDBkZWFkMmJmODRiNTU4
NzExMmRjODdjZjk0OTYwNDE3OWQzMmU5NDguLjk0ZDdlMjMwNTM1ODc2OTFlYTI3YWIwZGZkM2Y2
NjZlMTljNzZiZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuaApAQCAtMjM0LDcgKzIzNCw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVi
bGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0
aW9uPiBtX2V2YWxGdW5jdGlvbjsKICAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9jYWxs
RnVuY3Rpb247CiAgICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1fYXBwbHlGdW5jdGlvbjsK
LSAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9kZWZpbmVQcm9wZXJ0eUZ1bmN0aW9uOwor
ICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBtX3Rocm93VHlwZUVycm9yRnVuY3Rpb247CiAg
ICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBKU0Z1bmN0aW9uPiBtX2FycmF5UHJvdG9U
b1N0cmluZ0Z1bmN0aW9uOwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgSlNGdW5j
dGlvbj4gbV9hcnJheVByb3RvVmFsdWVzRnVuY3Rpb247CiAgICAgTGF6eVByb3BlcnR5PEpTR2xv
YmFsT2JqZWN0LCBKU0Z1bmN0aW9uPiBtX2luaXRpYWxpemVQcm9taXNlRnVuY3Rpb247CkBAIC00
NzksNyArNDc5LDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRW
YXJpYWJsZU9iamVjdCB7CiAgICAgSlNGdW5jdGlvbiogZXZhbEZ1bmN0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9ldmFsRnVuY3Rpb24uZ2V0KCk7IH0KICAgICBKU0Z1bmN0aW9uKiBjYWxsRnVuY3Rp
b24oKSBjb25zdCB7IHJldHVybiBtX2NhbGxGdW5jdGlvbi5nZXQoKTsgfQogICAgIEpTRnVuY3Rp
b24qIGFwcGx5RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2FwcGx5RnVuY3Rpb24uZ2V0KCk7
IH0KLSAgICBKU0Z1bmN0aW9uKiBkZWZpbmVQcm9wZXJ0eUZ1bmN0aW9uKCkgY29uc3QgeyByZXR1
cm4gbV9kZWZpbmVQcm9wZXJ0eUZ1bmN0aW9uLmdldCgpOyB9CisgICAgSlNGdW5jdGlvbiogdGhy
b3dUeXBlRXJyb3JGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdGhyb3dUeXBlRXJyb3JGdW5j
dGlvbi5nZXQoKTsgfQogICAgIEpTRnVuY3Rpb24qIGFycmF5UHJvdG9Ub1N0cmluZ0Z1bmN0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9hcnJheVByb3RvVG9TdHJpbmdGdW5jdGlvbi5nZXQodGhpcyk7
IH0KICAgICBKU0Z1bmN0aW9uKiBhcnJheVByb3RvVmFsdWVzRnVuY3Rpb24oKSBjb25zdCB7IHJl
dHVybiBtX2FycmF5UHJvdG9WYWx1ZXNGdW5jdGlvbi5nZXQodGhpcyk7IH0KICAgICBKU0Z1bmN0
aW9uKiBpbml0aWFsaXplUHJvbWlzZUZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pbml0aWFs
aXplUHJvbWlzZUZ1bmN0aW9uLmdldCh0aGlzKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCmluZGV4IDc4MWZjYmNlNTVjNzI1
MjY4MjAyMTY3MmNlODlkYmE5YTUyMWY0Y2EuLjBmYTBjZTZkMGFmMWIzMDkxZTJmNzI4ZDEwNzlh
MzY5Y2RmMWZkOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09i
amVjdENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
YmplY3RDb25zdHJ1Y3Rvci5jcHAKQEAgLTEwNywxNCArMTA3LDYgQEAgdm9pZCBPYmplY3RDb25z
dHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBPYmoKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5w
cm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZXRPd25Qcm9wZXJ0eU5hbWVzUHJpdmF0ZU5h
bWUoKSwgb2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eU5hbWVzLCBEb250RW51bSwgMSk7
CiB9CiAKLUpTRnVuY3Rpb24qIE9iamVjdENvbnN0cnVjdG9yOjphZGREZWZpbmVQcm9wZXJ0eShF
eGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCi17Ci0gICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKLSAgICBKU0Z1bmN0aW9uKiBkZWZpbmVQcm9wZXJ0eUZ1bmN0aW9u
ID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDMsIHZtLnByb3BlcnR5TmFt
ZXMtPmRlZmluZVByb3BlcnR5LnN0cmluZygpLCBvYmplY3RDb25zdHJ1Y3RvckRlZmluZVByb3Bl
cnR5KTsKLSAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1l
cy0+ZGVmaW5lUHJvcGVydHksIGRlZmluZVByb3BlcnR5RnVuY3Rpb24sIERvbnRFbnVtKTsKLSAg
ICByZXR1cm4gZGVmaW5lUHJvcGVydHlGdW5jdGlvbjsKLX0KLQogLy8gRVMgMTkuMS4xLjEgT2Jq
ZWN0KFt2YWx1ZV0pCiBzdGF0aWMgQUxXQVlTX0lOTElORSBKU09iamVjdCogY29uc3RydWN0T2Jq
ZWN0KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBuZXdUYXJnZXQpCiB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuaAppbmRleCA4OWQ3NDRh
Mjc3NGNkNDc4ZTA4MjdmZTFmM2M0YmFhOWFlZjY0Y2Q5Li44ZmYyYzU1YWVjMjlkOTUxY2NiNDQw
N2ZhNWM2MjMxM2Y3ZjFkMGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PYmplY3RDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09iamVjdENvbnN0cnVjdG9yLmgKQEAgLTU0LDggKzU0LDYgQEAgY2xhc3MgT2JqZWN0Q29u
c3RydWN0b3IgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CiAgICAgICAgIHJldHVybiBTdHJ1
Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVj
dFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKICAgICB9CiAKLSAgICBKU0Z1bmN0aW9u
KiBhZGREZWZpbmVQcm9wZXJ0eShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCopOwotCiBwcm90
ZWN0ZWQ6CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgT2Jq
ZWN0UHJvdG90eXBlKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UHJvcGVydHlEZXNjcmlwdG9yLmgKaW5kZXggYWE2MWVlYTQ5NWM0ZDFjOWQ1YTBmODI0NzlkMzI0
NTM2NjU1YTM2NS4uZWU5NzFmNTUwMzY3NjczMjA5Nzk5ZTgxOWU1ZDQzMDFkZDU4NDQ4NyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlEZXNjcmlwdG9y
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlEZXNjcmlwdG9y
LmgKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgUHJvcGVydHlEZXNjcmlwdG9yX2gKICNkZWZp
bmUgUHJvcGVydHlEZXNjcmlwdG9yX2gKIAorI2luY2x1ZGUgIkRlZmluZVByb3BlcnR5QXR0cmli
dXRlcy5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC05
Myw2ICs5NCwzMiBAQCBjbGFzcyBQcm9wZXJ0eURlc2NyaXB0b3IgewogICAgIHVuc2lnbmVkIG1f
c2VlbkF0dHJpYnV0ZXM7CiB9OwogCitpbmxpbmUgUHJvcGVydHlEZXNjcmlwdG9yIHRvUHJvcGVy
dHlEZXNjcmlwdG9yKEpTVmFsdWUgdmFsdWUsIEpTVmFsdWUgZ2V0dGVyLCBKU1ZhbHVlIHNldHRl
ciwgRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMpCit7CisgICAgLy8gV2UgYXNz
dW1lIHRoYXQgdmFsaWRhdGlvbiBpcyBhbHJlYWR5IGRvbmUuCisgICAgUHJvcGVydHlEZXNjcmlw
dG9yIGRlc2M7CisKKyAgICBpZiAoYXR0cmlidXRlcy5lbnVtZXJhYmxlKCkgIT0gTWl4ZWRUcmlT
dGF0ZSkKKyAgICAgICAgZGVzYy5zZXRFbnVtZXJhYmxlKGF0dHJpYnV0ZXMuZW51bWVyYWJsZSgp
KTsKKworICAgIGlmIChhdHRyaWJ1dGVzLmNvbmZpZ3VyYWJsZSgpICE9IE1peGVkVHJpU3RhdGUp
CisgICAgICAgIGRlc2Muc2V0Q29uZmlndXJhYmxlKGF0dHJpYnV0ZXMuY29uZmlndXJhYmxlKCkp
OworCisgICAgaWYgKGF0dHJpYnV0ZXMuaGFzVmFsdWUoKSkKKyAgICAgICAgZGVzYy5zZXRWYWx1
ZSh2YWx1ZSk7CisKKyAgICBpZiAoYXR0cmlidXRlcy53cml0YWJsZSgpICE9IE1peGVkVHJpU3Rh
dGUpCisgICAgICAgIGRlc2Muc2V0V3JpdGFibGUoYXR0cmlidXRlcy53cml0YWJsZSgpKTsKKwor
ICAgIGlmIChhdHRyaWJ1dGVzLmhhc0dldCgpKQorICAgICAgICBkZXNjLnNldEdldHRlcihnZXR0
ZXIpOworCisgICAgaWYgKGF0dHJpYnV0ZXMuaGFzU2V0KCkpCisgICAgICAgIGRlc2Muc2V0U2V0
dGVyKHNldHRlcik7CisKKyAgICByZXR1cm4gZGVzYzsKK30KKwogfQogCiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>289911</attachid>
            <date>2016-09-26 21:22:11 -0700</date>
            <delta_ts>2016-09-26 22:23:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162108-20160926211914.patch</filename>
            <type>text/plain</type>
            <size>97009</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA2NDExCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
MjE2ZGRiZWMwNWQ2YThjYWMzZDdkYWQwMmI1MmFiYTA4ZTQ1OWYyLi4xOWVlM2IwM2E2YjQzZjhi
NGRhYzUxYmIzMzlmYzgwMjlmMDk0Mzg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNTUgQEAKKzIwMTYtMDktMjYgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0pTQ10gQWRkIGEgbmV3IGJ5dGUgY29kZSBvcF9kZWZpbmVfcHJv
cGVydHkgaW5zdGVhZCBvZiBjYWxsaW5nIGRlZmluZVByb3BlcnR5CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjIxMDgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUbyBjb25zdHJ1Y3QgRVM2IGNsYXNzLCB3
ZSBlbWl0dGVkIGJ5dGVjb2RlIHRoYXQgcGVyZm9ybXMgdGhlIGZvbGxvd2luZyBvcGVyYXRpb25z
LgorCisgICAgICAgICAgICAxLiBjb25zdHJ1Y3QgYSBuZXcgb2JqZWN0CisgICAgICAgICAgICAy
LiBwdXQgImNvbmZpZ3VyYWJsZSIsICJlbnVtZXJhYmxlIiBldGMuIGZpZWxkcworICAgICAgICAg
ICAgMy4gY2FsbCAiZGVmaW5lUHJvcGVydHkiIGZ1bmN0aW9uCisKKyAgICAgICAgSG93ZXZlciwg
dGhpcyBoYXMgYSBwcm9ibGVtcy4gRXZlcnkgdGltZSB3ZSBkZWZpbmUgYSBjbGFzcyBtZXRob2Qs
IHdlIG5lZWQgdG8gY3JlYXRlCisgICAgICAgIGEgbmV3IG9iamVjdCB0byByZXByZXNlbnQgcHJv
cGVydHkgZGVzY3JpcHRvci4gVGhpcyBjYW4gYmUgcmVtb3ZlZCBpZiB3ZSBjYW4gaW50cm9kdWNl
CisgICAgICAgIGEgc3BlY2lhbCBieXRlY29kZSBvciBzcGVjaWFsIGZ1bmN0aW9uLgorCisgICAg
ICAgIFRoaXMgcGF0Y2ggaW50cm9kdWNlcyBuZXcgYnl0ZWNvZGVzLCBvcF9kZWZpbmVfZGF0YV9w
cm9wZXJ0eSBhbmQgb3BfZGVmaW5lX2FjY2Vzc29yX3Byb3BlcnR5LgorICAgICAgICBJbnN0ZWFk
IG9mIHRha2luZyBhbiBvYmplY3QsIHRoZXkgdGFrZXMgc2V2ZXJhbCByZWdpc3RlcnMgdG8gYXZv
aWQgb2JqZWN0IGFsbG9jYXRpb25zLgorICAgICAgICBXZSdyZSBwbGFubmluZyB0byB1c2UgdGhp
cyBieXRlY29kZSB0byBpbXBsZW1lbnQgT2JqZWN0LmRlZmluZVByb3BlcnR5IGluIGJ1aWx0aW4g
SlMgbmV4dC4KKyAgICAgICAgVGhpcyBhbGxvd3MgdXMgdG8gbGV2ZXJhZ2Ugb2JqZWN0IGFsbG9j
YXRpb24gc2lua2luZy4gQW5kIGl0IGFsc28gZ2l2ZXMgdXMgYSBjaGFuY2UgdG8gdXNlCisgICAg
ICAgIGZhc3RlciA6OmdldCBhbmQgOjpoYXNQcm9wZXJ0eSBpbiBKUy4KKworICAgICAgICBPcmln
aW5hbGx5LCBJIGF0dGVtcHRlZCB0byBjcmVhdGUgb25lIGJ5dGVjb2RlLCBvcF9kZWZpbmVfcHJv
cGVydHkuIEhvd2V2ZXIsIGl0IHRha2VzIHRvbyBtdWNoCisgICAgICAgIGNoaWxkcmVuIGluIERG
RyBhbmQgdXNlcyBzbyBtdWNoIHJlZ2lzdGVycyBpbiBERkcuIFRoaXMgbGVhZHMgdHJpY2t5IHBy
b2dyYW0gaW4gMzJiaXQgcGxhdGZvcm1zLgorICAgICAgICBGdXJ0aGVybW9yZSwgaXQgZG9lcyBu
b3QgZml0IHRvIHRoZSBudW1iZXIgb2YgeDY0IGFyZ3VtZW50IHJlZ2lzdGVycy4gU28gaW5zdGVh
ZCwgd2UgaW50cm9kdWNlCisgICAgICAgIHR3byBieXRlY29kZXMuCisKKyAgICAgICAgQW5kIGZv
ciBvcF9kZWZpbmVfYWNjZXNzb3JfcHJvcGVydHksIHdlIHBlcmZvcm0gQ2VsbFVzZSBlZGdlIGZp
bHRlciB0byBnZXR0ZXIgYW5kIHNldHRlciBjaGlsZHJlbi4KKyAgICAgICAgVGhpcyBlZGdlIGZp
bHRlciBtYWtlcyB1cyBwb3NzaWJsZSB0byB1c2UgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYW5kIHJl
ZHVjZSB0aGUgbnVtYmVyIG9mIHVzZWQgcmVnaXN0ZXJzCisgICAgICAgIGluIGNvbXBhcmlzb24g
d2l0aCBKU1ZhbHVlT3BlcmFuZC4gVG8gbWFrZSBjaGlsZHJlbiBDZWxscyBldmVuIGlmIHdlIGRv
IG5vdCBzcGVjaWZ5IHNvbWUgYWNjZXNzb3JzIChmb3IKKyAgICAgICAgZXhhbXBsZSwgeyBnZXQ6
IGZ1bmMsIHNldDogbnVsbCB9IGNhc2UpLCB3ZSBmaWxsIHJlZ2lzdGVycyB3aXRoIHNwZWNpYWwg
dGhyb3dUeXBlRXJyb3JGdW5jdGlvbi4KKyAgICAgICAgVGhlIGF0dHJpYnV0ZXMgYml0c2V0IGtl
ZXAgaW5mb3JtYXRpb24gbGlrZSAiVGhpcyBwcm9wZXJ0eSBkZXNjcmlwdG9yIG9ubHkgaGFzIGdl
dHRlciBzbG90Ii4KKworICAgICAgICBJbiB0aGVzZSB0d28gYnl0ZWNvZGVzLCB3ZSB0YWtlIGF0
dHJpYnV0ZXMgKGNvbmZpZ3VyYWJsZSwgZW51bWVyYWJsZSwgd3JpdGFibGUsIGhhc0dldHRlciBl
dGMuKSBhcworICAgICAgICByZWdpc3RlciBpbnN0ZWFkIG9mIGVtYmVkZGluZyBjb25zdGFudCBp
bnQgdmFsdWUgYmVjYXVzZSB3ZSB3aWxsIHVzZSB0aGVzZSBieXRlY29kZXMgdG8gaW1wbGVtZW50
CisgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSBuZXh0LiBJbiBPYmplY3QuZGVmaW5lUHJv
cGVydHkgY2FzZSwgYW4gYXR0cmlidXRlcyBhcmUgbm90IHN0YXRpY2FsbHkgZGVmaW5lZAorICAg
ICAgICBhdCBieXRlY29kZSBjb21waWxpbmcgdGltZS4KKworICAgICAgICBSdW4gRVM2U2FtcGxl
QmVuY2gvQWlyIDIwIHRpbWVzLiBUaGUgcmVzdWx0IHNob3dzIH4yJSBwZXJmb3JtYW5jZSBpbXBy
b3ZlbWVudC4KKworICAgICAgICBCYXNlbGluZToKKyAgICAgICAgICAgIGZpcnN0SXRlcmF0aW9u
OiAgICAgODQuMDUgbXMgKy0gNC4zNyBtcworICAgICAgICAgICAgYXZlcmFnZVdvcnN0Q2FzZTog
ICA0MC41NCBtcyArLSAyLjgxIG1zCisgICAgICAgICAgICBzdGVhZHlTdGF0ZTogICAgICAgIDMz
MTcuNDkgbXMgKy0gNDguMjUgbXMKKyAgICAgICAgICAgIHN1bW1hcnk6ICAgICAgICAgICAgMjIz
LjUxIG1zICstIDUuMDcgbXMKKworICAgICAgICBQYXRjaGVkOgorICAgICAgICAgICAgZmlyc3RJ
dGVyYXRpb246ICAgICA4NC40NiBtcyArLSA0LjIyIG1zCisgICAgICAgICAgICBhdmVyYWdlV29y
c3RDYXNlOiAgIDQxLjQ4IG1zICstIDIuMzMgbXMKKyAgICAgICAgICAgIHN0ZWFkeVN0YXRlOiAg
ICAgICAgMzI1My40OCBtcyArLSAyOS4zMSBtcworICAgICAgICAgICAgc3VtbWFyeTogICAgICAg
ICAgICAyMjQuNDAgbXMgKy0gNC43MiBtcworCisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3Qu
anNvbjoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVVzZURlZi5oOgorICAgICAgICAoSlND
Ojpjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZURl
ZnNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoK
KyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUpOgorICAgICAgICAqIGJ5dGVj
b2RlL1NwZWNpYWxQb2ludGVyLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRNb3ZlTGlu
a1RpbWVDb25zdGFudCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2Fs
bERlZmluZVByb3BlcnR5KToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuaDoKKyAgICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAg
KEpTQzo6UHJvcGVydHlMaXN0Tm9kZTo6ZW1pdFB1dENvbnN0YW50UHJvcGVydHkpOgorICAgICAg
ICAoSlNDOjpCaXR3aXNlTm90Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Q2xh
c3NFeHByTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6T2JqZWN0UGF0dGVybk5v
ZGU6OmJpbmRWYWx1ZSk6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxp
bmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0
YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToK
KyAgICAgICAgKiBkZmcvREZHQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpj
YXBhYmlsaXR5TGV2ZWwpOgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyaXplLmg6CisgICAgICAg
IChKU0M6OkRGRzo6Y2xvYmJlcml6ZSk6CisgICAgICAgICogZGZnL0RGR0RvZXNHQy5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6ZG9lc0dDKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAg
KiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6Cisg
ICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlv
blByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdTYWZlVG9FeGVjdXRlLmg6
CisgICAgICAgIChKU0M6OkRGRzo6c2FmZVRvRXhlY3V0ZSk6CisgICAgICAgICogZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZURlZmluZURhdGFQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVEZWZpbmVBY2Nlc3NvclByb3BlcnR5KToKKyAgICAgICAgKiBkZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FsbE9w
ZXJhdGlvbik6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcv
REZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExDYXBhYmlsaXRpZXMuY3BwOgorICAgICAg
ICAoSlNDOjpGVEw6OmNhbkNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMu
Y3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTm9kZSk6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVEZWZpbmVEYXRh
UHJvcGVydHkpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxl
RGVmaW5lQWNjZXNzb3JQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvQjM6OmNvbXBpbGVQdXRCeVZhbFdpdGhUaGlzKTogRGVsZXRlZC4KKyAgICAgICAgKiBqaXQv
Q0NhbGxIZWxwZXJzLmNwcDoKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpzZXR1cEZvdXJT
dHViQXJnc0dQUik6IERlbGV0ZWQuCisgICAgICAgICogaml0L0NDYWxsSGVscGVycy5oOgorICAg
ICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OnNldHVwRm91clN0dWJBcmdzR1BSKToKKyAgICAgICAg
KEpTQzo6Q0NhbGxIZWxwZXJzOjpzZXR1cEZpdmVTdHViQXJnc0dQUik6CisgICAgICAgIChKU0M6
OkNDYWxsSGVscGVyczo6c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKToKKyAgICAgICAgKEpT
Qzo6Q0NhbGxIZWxwZXJzOjpzZXR1cFN0dWJBcmdzR1BSKToKKyAgICAgICAgKEpTQzo6Q0NhbGxI
ZWxwZXJzOjpwcmVwYXJlRm9yVGFpbENhbGxTbG93KTogRGVsZXRlZC4KKyAgICAgICAgKiBqaXQv
SklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAg
ICAgICAgKiBqaXQvSklULmg6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuaDoKKyAgICAg
ICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRf
b3BfZGVmaW5lX2RhdGFfcHJvcGVydHkpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZGVm
aW5lX2FjY2Vzc29yX3Byb3BlcnR5KToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJl
dGVyLmFzbToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6CisgICAgICAg
IChKU0M6OlNMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRo
cy5oOgorICAgICAgICAqIHJ1bnRpbWUvRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzLmg6IEFkZGVk
LgorICAgICAgICAoSlNDOjpEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXM6OkRlZmluZVByb3BlcnR5
QXR0cmlidXRlcyk6CisgICAgICAgIChKU0M6OkRlZmluZVByb3BlcnR5QXR0cmlidXRlczo6cmF3
UmVwcmVzZW50YXRpb24pOgorICAgICAgICAoSlNDOjpEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXM6
Omhhc1ZhbHVlKToKKyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzOjpzZXRW
YWx1ZSk6CisgICAgICAgIChKU0M6OkRlZmluZVByb3BlcnR5QXR0cmlidXRlczo6aGFzR2V0KToK
KyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzOjpzZXRHZXQpOgorICAgICAg
ICAoSlNDOjpEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXM6Omhhc1NldCk6CisgICAgICAgIChKU0M6
OkRlZmluZVByb3BlcnR5QXR0cmlidXRlczo6c2V0U2V0KToKKyAgICAgICAgKEpTQzo6RGVmaW5l
UHJvcGVydHlBdHRyaWJ1dGVzOjp3cml0YWJsZSk6CisgICAgICAgIChKU0M6OkRlZmluZVByb3Bl
cnR5QXR0cmlidXRlczo6Y29uZmlndXJhYmxlKToKKyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVy
dHlBdHRyaWJ1dGVzOjplbnVtZXJhYmxlKToKKyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVydHlB
dHRyaWJ1dGVzOjpzZXRXcml0YWJsZSk6CisgICAgICAgIChKU0M6OkRlZmluZVByb3BlcnR5QXR0
cmlidXRlczo6c2V0Q29uZmlndXJhYmxlKToKKyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVydHlB
dHRyaWJ1dGVzOjpzZXRFbnVtZXJhYmxlKToKKyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVydHlB
dHRyaWJ1dGVzOjpmaWxsV2l0aFRyaVN0YXRlKToKKyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVy
dHlBdHRyaWJ1dGVzOjpleHRyYWN0VHJpU3RhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9i
YWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAg
ICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50
aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp0aHJv
d1R5cGVFcnJvckZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmRlZmlu
ZVByb3BlcnR5RnVuY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0Q29u
c3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpPYmplY3RDb25zdHJ1Y3Rvcjo6YWRkRGVmaW5l
UHJvcGVydHkpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3Iu
aDoKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5oOgorICAgICAgICAoSlND
Ojp0b1Byb3BlcnR5RGVzY3JpcHRvcik6CisKIDIwMTYtMDktMjYgIFNhbSBXZWluaWcgIDxzYW1A
d2Via2l0Lm9yZz4KIAogICAgICAgICBNYWtlIERGR1Nsb3dQYXRoR2VuZXJhdG9yIGEgYml0IG1v
cmUgdmFyaWFkaWMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZjczNGY5MTYyM2Zh
NDNkZDU0YTZhMDg2ODkyYTlhYWZiNTE4MTUzNS4uN2M3YzQ2YmRmZjExYmY1NGRkYTg5NzU1NWUz
YmQwMzZhZjE5Yjc5OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIxNjgsNiAr
MjE2OCw3IEBACiAJCUZFRDk0RjJGMTcxRTNFMjMwMEJFNzdBNCAvKiBXYXRjaGRvZy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVEOTRGMkMxNzFFM0Uy
MzAwQkU3N0E0IC8qIFdhdGNoZG9nLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJRkVGMDQwNTExQUFFNjYyRDAwQkQyOEIwIC8qIENvbXBhcmVBbmRT
d2FwVGVzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGRUYwNDA1MDFBQUU2NjJEMDBCRDI4QjAgLyogQ29tcGFyZUFuZFN3YXBUZXN0LmNwcCAqLzsg
fTsKIAkJRkVGRDZGQzYxRDVFNzk5MjAwOEYyRjBCIC8qIEpTU3RyaW5nSW5saW5lcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVGRDZGQzUxRDVFNzk3
MDAwOEYyRjBCIC8qIEpTU3RyaW5nSW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ3M0RBNEE0NzY0QzQ1RkU4NzFCMDQ4NSAvKiBEZWZp
bmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDE2OTk0OEVERTY4RDQwNTRCMDFFRjc5NyAvKiBEZWZpbmVQcm9wZXJ0eUF0
dHJpYnV0ZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWENvbnRhaW5l
ckl0ZW1Qcm94eSBzZWN0aW9uICovCkBAIC00NDk4LDYgKzQ0OTksNyBAQAogCQlGRUYwNDA1MDFB
QUU2NjJEMDBCRDI4QjAgLyogQ29tcGFyZUFuZFN3YXBUZXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENvbXBhcmVBbmRTd2FwVGVzdC5jcHA7IHBhdGggPSBBUEkv
dGVzdHMvQ29tcGFyZUFuZFN3YXBUZXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRkVGMDQwNTIxQUFFQzRFRDAwQkQyOEIwIC8qIENvbXBhcmVBbmRTd2FwVGVzdC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBDb21wYXJlQW5kU3dhcFRlc3QuaDsgcGF0aCA9
IEFQSS90ZXN0cy9Db21wYXJlQW5kU3dhcFRlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRkVGRDZGQzUxRDVFNzk3MDAwOEYyRjBCIC8qIEpTU3RyaW5nSW5saW5lcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1N0cmluZ0lubGluZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTY5OTQ4RURFNjhENDA1NEIwMUVGNzk3IC8qIERlZmluZVBy
b3BlcnR5QXR0cmlidXRlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBEZWZp
bmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaDsgcGF0aCA9IERlZmluZVByb3BlcnR5QXR0cmlidXRlcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogLyogRW5kIFBCWEZpbGVSZWZlcmVuY2Ugc2Vj
dGlvbiAqLwogCiAvKiBCZWdpbiBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9uICovCkBA
IC02MjQxLDYgKzYyNDMsNyBAQAogCQkJCTcwOUZCODY2MUFFMzM1QzYwMDM5RDA2OSAvKiBXZWFr
U2V0UHJvdG90eXBlLmggKi8sCiAJCQkJQTdEQ0I3NzkxMkUzRDkwNTAwOTExOTQwIC8qIFdyaXRl
QmFycmllci5oICovLAogCQkJCUMyQjZENzUyMThBMzM3OTMwMDRBOTMwMSAvKiBXcml0ZUJhcnJp
ZXJJbmxpbmVzLmggKi8sCisJCQkJMTY5OTQ4RURFNjhENDA1NEIwMUVGNzk3IC8qIERlZmluZVBy
b3BlcnR5QXR0cmlidXRlcy5oICovLAogCQkJKTsKIAkJCXBhdGggPSBydW50aW1lOwogCQkJc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTgzNzYsNiArODM3OSw3IEBACiAJCQkJODY3MDRCNDMx
MkRCOEE4MTAwQTlGRTdCIC8qIFlhcnJTeW50YXhDaGVja2VyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBNzlEM0VEOUM1MDY0REQwQTg0NjZBM0EgLyogTW9kdWxlU2NvcGVEYXRhLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlEOTcyMjc1MkRDNTQ0NTlCOTEyNUI1MzkgLyogSlNNb2R1bGVMb2FkZXIuaCBp
biBIZWFkZXJzICovLAorCQkJCTQ3M0RBNEE0NzY0QzQ1RkU4NzFCMDQ4NSAvKiBEZWZpbmVQcm9w
ZXJ0eUF0dHJpYnV0ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBs
b3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCmluZGV4IGRjNTk5ODA1NjkxY2RhNTdiNWQz
NjExNTk5ZGQ1ZjI4ZDcxMDJkYmUuLjU3NmRlNDAwNjA0ZDEwMTQ3NTFjYzYzYmVhY2VjNzdhNTVm
ZDRmZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUxpc3QuanNvbgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVM
aXN0Lmpzb24KQEAgLTgxLDYgKzgxLDggQEAKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3B1
dF9nZXR0ZXJfc2V0dGVyX2J5X2lkIiwgImxlbmd0aCIgOiA2IH0sCiAgICAgICAgICAgICB7ICJu
YW1lIiA6ICJvcF9wdXRfZ2V0dGVyX2J5X3ZhbCIsICJsZW5ndGgiIDogNSB9LAogICAgICAgICAg
ICAgeyAibmFtZSIgOiAib3BfcHV0X3NldHRlcl9ieV92YWwiLCAibGVuZ3RoIiA6IDUgfSwKKyAg
ICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2RlZmluZV9kYXRhX3Byb3BlcnR5IiwgImxlbmd0aCIg
OiA1IH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9kZWZpbmVfYWNjZXNzb3JfcHJvcGVy
dHkiLCAibGVuZ3RoIiA6IDYgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2ptcCIsICJs
ZW5ndGgiIDogMiB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfanRydWUiLCAibGVuZ3Ro
IiA6IDMgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2pmYWxzZSIsICJsZW5ndGgiIDog
MyB9LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
VXNlRGVmLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYu
aAppbmRleCBkYWJjZTRlZGYwMzI2NDhjMDg5Njg5OTgyYTg4MTdlYzYwMGE4MTdlLi40NWE5ZTA5
Y2JkODJlZjY4OWQzYjM0ZjhlZTUwZTExZWI5NWEzNzYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaApAQCAtMTQ0LDYgKzE0NCwyMyBAQCB2
b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqIGNvZGVCbG9jaywgT3Bjb2Rl
SUQgb3Bjb2RlSUQsIEluc3RydWN0aQogICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1
Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQpOwogICAgICAgICByZXR1
cm47CiAgICAgfQorICAgIGNhc2Ugb3BfZGVmaW5lX2RhdGFfcHJvcGVydHk6IHsKKyAgICAgICAg
QVNTRVJUKG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdID4gNCk7CisgICAgICAgIGZ1bmN0b3IoY29k
ZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7
CisgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3Ry
dWN0aW9uWzJdLnUub3BlcmFuZCk7CisgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVj
dGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzNdLnUub3BlcmFuZCk7CisgICAgICAgIGZ1bmN0
b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzRdLnUub3Bl
cmFuZCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgY2FzZSBvcF9kZWZpbmVfYWNjZXNz
b3JfcHJvcGVydHk6IHsKKyAgICAgICAgQVNTRVJUKG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdID4g
NSk7CisgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGlu
c3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CisgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0
cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzJdLnUub3BlcmFuZCk7CisgICAgICAgIGZ1
bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzNdLnUu
b3BlcmFuZCk7CisgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2Rl
SUQsIGluc3RydWN0aW9uWzRdLnUub3BlcmFuZCk7CisgICAgICAgIGZ1bmN0b3IoY29kZUJsb2Nr
LCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzVdLnUub3BlcmFuZCk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CiAgICAgY2FzZSBvcF9nZXRfcHJvcGVydHlfZW51bWVyYXRvcjoK
ICAgICBjYXNlIG9wX2dldF9lbnVtZXJhYmxlX2xlbmd0aDoKICAgICBjYXNlIG9wX25ld19mdW5j
X2V4cDoKQEAgLTMzMiw2ICszNDksOCBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZz
ZXQoQmxvY2sqIGNvZGVCbG9jaywgT3Bjb2RlSUQgb3Bjb2RlSUQsIEluc3RydWN0aQogICAgIGNh
c2Ugb3BfcHV0X2J5X3ZhbDoKICAgICBjYXNlIG9wX3B1dF9ieV92YWxfZGlyZWN0OgogICAgIGNh
c2Ugb3BfcHV0X2J5X2luZGV4OgorICAgIGNhc2Ugb3BfZGVmaW5lX2RhdGFfcHJvcGVydHk6Cisg
ICAgY2FzZSBvcF9kZWZpbmVfYWNjZXNzb3JfcHJvcGVydHk6CiAgICAgY2FzZSBvcF9wcm9maWxl
X3R5cGU6CiAgICAgY2FzZSBvcF9wcm9maWxlX2NvbnRyb2xfZmxvdzoKICAgICBjYXNlIG9wX3B1
dF90b19hcmd1bWVudHM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suY3BwCmluZGV4IDdjOWI1YzJiYTZkNmQ0MjdkMDc5N2IyYWY0ODE4ZGI5M2Y4OTkxNjkuLjdm
Nzc0YTkxNmJiMTQyMDgxMTQ4NGQwNWY1NGQyYTI5NGFmNWM2NDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC0xMjMzLDYgKzEyMzMsMjUgQEAg
dm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZSgKICAgICAgICAgICAgIG91dC5wcmludGYoIiVz
LCAlcywgJWQsICVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSku
ZGF0YSgpLCBuMCwgcmVnaXN0ZXJOYW1lKHIyKS5kYXRhKCkpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9kZWZpbmVfZGF0YV9wcm9wZXJ0eTogeworICAg
ICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBpbnQgcjEg
PSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIGludCByMiA9ICgrK2l0KS0+dS5vcGVy
YW5kOworICAgICAgICAgICAgaW50IHIzID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAg
ICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJkZWZpbmVfZGF0
YV9wcm9wZXJ0eSIpOworICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCAlcywgJXMiLCBy
ZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIHJlZ2lzdGVy
TmFtZShyMikuZGF0YSgpLCByZWdpc3Rlck5hbWUocjMpLmRhdGEoKSk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIG9wX2RlZmluZV9hY2Nlc3Nvcl9wcm9wZXJ0
eTogeworICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAg
ICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIGludCByMiA9ICgrK2l0
KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgaW50IHIzID0gKCsraXQpLT51Lm9wZXJhbmQ7Cisg
ICAgICAgICAgICBpbnQgcjQgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIHByaW50
TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgImRlZmluZV9hY2Nlc3Nvcl9w
cm9wZXJ0eSIpOworICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCAlcywgJXMsICVzIiwg
cmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCByZWdpc3Rl
ck5hbWUocjIpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIzKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShy
NCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGNhc2Ug
b3BfZGVsX2J5X2lkOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsK
ICAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWNpYWxQb2ludGVyLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY2lhbFBvaW50ZXIuaAppbmRleCA2NGZiMjNmY2YyN2Q0
MTI1MDQ4MDIxOWU4YzhjNDFiN2M0MWE3ZWY1Li45MGNiM2E5OTI2ZDYyZTYwNGIxOGMzYjNkYmQ1
NTIyYjQ1MmFlZGZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
U3BlY2lhbFBvaW50ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3Bl
Y2lhbFBvaW50ZXIuaApAQCAtNDIsNyArNDIsNyBAQCBlbnVtIFBvaW50ZXIgewogfSAvLyBuYW1l
c3BhY2UgU3BlY2lhbAogCiBlbnVtIGNsYXNzIExpbmtUaW1lQ29uc3RhbnQgewotICAgIERlZmlu
ZVByb3BlcnR5RnVuY3Rpb24sCisgICAgVGhyb3dUeXBlRXJyb3JGdW5jdGlvbiwKIH07CiBjb25z
dCB1bnNpZ25lZCBMaW5rVGltZUNvbnN0YW50Q291bnQgPSAxOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmlu
ZGV4IGNjNzE3MjNlZjNjMGY1ZDRiYjNjY2RlY2I4YmE5NzYyNzIzZDMyZmUuLmIwYzNjY2Q1YWNi
MjU1NjE4OGQ5MjgyMjI1YTU3NGIxZjA0NzJjMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0zNSw2
ICszNSw3IEBACiAjaW5jbHVkZSAiQnVpbHRpbkV4ZWN1dGFibGVzLmgiCiAjaW5jbHVkZSAiQnl0
ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uaCIKICNpbmNsdWRlICJCeXRlY29kZUxpdmVuZXNzQW5h
bHlzaXMuaCIKKyNpbmNsdWRlICJEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaCIKICNpbmNsdWRl
ICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0dl
bmVyYXRvckZ1bmN0aW9uLmgiCkBAIC0xNTQzLDYgKzE1NDQsOSBAQCBSZWdpc3RlcklEKiBCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdE1vdmVMaW5rVGltZUNvbnN0YW50KFJlZ2lzdGVySUQqIGRzdCwg
TGlua1RpbQogICAgICAgICBtX2xpbmtUaW1lQ29uc3RhbnRSZWdpc3RlcnNbY29uc3RhbnRJbmRl
eF0gPSAmbV9jb25zdGFudFBvb2xSZWdpc3RlcnNbaW5kZXhdOwogICAgIH0KIAorICAgIGlmICgh
ZHN0KQorICAgICAgICByZXR1cm4gbV9saW5rVGltZUNvbnN0YW50UmVnaXN0ZXJzW2NvbnN0YW50
SW5kZXhdOworCiAgICAgZW1pdE9wY29kZShvcF9tb3YpOwogICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZChkc3QtPmluZGV4KCkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtX2xpbmtUaW1l
Q29uc3RhbnRSZWdpc3RlcnNbY29uc3RhbnRJbmRleF0tPmluZGV4KCkpOwpAQCAtMzI2OCwzOCAr
MzI3Miw1OSBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TG9nU2hhZG93Q2hpY2tlblRh
aWxJZk5lY2Vzc2FyeSgpCiB9CiAKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxsRGVm
aW5lUHJvcGVydHkoUmVnaXN0ZXJJRCogbmV3T2JqLCBSZWdpc3RlcklEKiBwcm9wZXJ0eU5hbWVS
ZWdpc3RlciwKLSAgICBSZWdpc3RlcklEKiB2YWx1ZVJlZ2lzdGVyLCBSZWdpc3RlcklEKiBnZXR0
ZXJSZWdpc3RlciwgUmVnaXN0ZXJJRCogc2V0dGVyUmVnaXN0ZXIsIHVuc2lnbmVkIG9wdGlvbnMs
IGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBwb3NpdGlvbikKKyAgICBSZWdpc3RlcklEKiB2YWx1ZVJl
Z2lzdGVyLCBSZWdpc3RlcklEKiBnZXR0ZXJSZWdpc3RlciwgUmVnaXN0ZXJJRCogc2V0dGVyUmVn
aXN0ZXIsIHVuc2lnbmVkIG9wdGlvbnMpCiB7Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGRlc2Ny
aXB0b3JSZWdpc3RlciA9IGVtaXROZXdPYmplY3QobmV3VGVtcG9yYXJ5KCkpOwotCi0gICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IHRydWVSZWdpc3RlciA9IGVtaXRMb2FkKG5ld1RlbXBvcmFyeSgpLCB0
cnVlKTsKKyAgICBEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMgYXR0cmlidXRlczsKICAgICBpZiAo
b3B0aW9ucyAmIFByb3BlcnR5Q29uZmlndXJhYmxlKQotICAgICAgICBlbWl0RGlyZWN0UHV0QnlJ
ZChkZXNjcmlwdG9yUmVnaXN0ZXIuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS5jb25maWd1cmFibGUs
IHRydWVSZWdpc3Rlci5nZXQoKSwgUHJvcGVydHlOb2RlOjpVbmtub3duKTsKKyAgICAgICAgYXR0
cmlidXRlcy5zZXRDb25maWd1cmFibGUodHJ1ZSk7CisKICAgICBpZiAob3B0aW9ucyAmIFByb3Bl
cnR5V3JpdGFibGUpCi0gICAgICAgIGVtaXREaXJlY3RQdXRCeUlkKGRlc2NyaXB0b3JSZWdpc3Rl
ci5nZXQoKSwgcHJvcGVydHlOYW1lcygpLndyaXRhYmxlLCB0cnVlUmVnaXN0ZXIuZ2V0KCksIFBy
b3BlcnR5Tm9kZTo6VW5rbm93bik7Ci0gICAgZWxzZSBpZiAodmFsdWVSZWdpc3RlcikgewotICAg
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZmFsc2VSZWdpc3RlciA9IGVtaXRMb2FkKG5ld1RlbXBv
cmFyeSgpLCBmYWxzZSk7Ci0gICAgICAgIGVtaXREaXJlY3RQdXRCeUlkKGRlc2NyaXB0b3JSZWdp
c3Rlci5nZXQoKSwgcHJvcGVydHlOYW1lcygpLndyaXRhYmxlLCBmYWxzZVJlZ2lzdGVyLmdldCgp
LCBQcm9wZXJ0eU5vZGU6OlVua25vd24pOwotICAgIH0KKyAgICAgICAgYXR0cmlidXRlcy5zZXRX
cml0YWJsZSh0cnVlKTsKKyAgICBlbHNlIGlmICh2YWx1ZVJlZ2lzdGVyKQorICAgICAgICBhdHRy
aWJ1dGVzLnNldFdyaXRhYmxlKGZhbHNlKTsKKwogICAgIGlmIChvcHRpb25zICYgUHJvcGVydHlF
bnVtZXJhYmxlKQotICAgICAgICBlbWl0RGlyZWN0UHV0QnlJZChkZXNjcmlwdG9yUmVnaXN0ZXIu
Z2V0KCksIHByb3BlcnR5TmFtZXMoKS5lbnVtZXJhYmxlLCB0cnVlUmVnaXN0ZXIuZ2V0KCksIFBy
b3BlcnR5Tm9kZTo6VW5rbm93bik7CisgICAgICAgIGF0dHJpYnV0ZXMuc2V0RW51bWVyYWJsZSh0
cnVlKTsKIAogICAgIGlmICh2YWx1ZVJlZ2lzdGVyKQotICAgICAgICBlbWl0RGlyZWN0UHV0QnlJ
ZChkZXNjcmlwdG9yUmVnaXN0ZXIuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS52YWx1ZSwgdmFsdWVS
ZWdpc3RlciwgUHJvcGVydHlOb2RlOjpVbmtub3duKTsKKyAgICAgICAgYXR0cmlidXRlcy5zZXRW
YWx1ZSgpOwogICAgIGlmIChnZXR0ZXJSZWdpc3RlcikKLSAgICAgICAgZW1pdERpcmVjdFB1dEJ5
SWQoZGVzY3JpcHRvclJlZ2lzdGVyLmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkuZ2V0LCBnZXR0ZXJS
ZWdpc3RlciwgUHJvcGVydHlOb2RlOjpVbmtub3duKTsKKyAgICAgICAgYXR0cmlidXRlcy5zZXRH
ZXQoKTsKICAgICBpZiAoc2V0dGVyUmVnaXN0ZXIpCi0gICAgICAgIGVtaXREaXJlY3RQdXRCeUlk
KGRlc2NyaXB0b3JSZWdpc3Rlci5nZXQoKSwgcHJvcGVydHlOYW1lcygpLnNldCwgc2V0dGVyUmVn
aXN0ZXIsIFByb3BlcnR5Tm9kZTo6VW5rbm93bik7CisgICAgICAgIGF0dHJpYnV0ZXMuc2V0U2V0
KCk7CiAKLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZGVmaW5lUHJvcGVydHlSZWdpc3RlciA9IGVt
aXRNb3ZlTGlua1RpbWVDb25zdGFudChuZXdUZW1wb3JhcnkoKSwgTGlua1RpbWVDb25zdGFudDo6
RGVmaW5lUHJvcGVydHlGdW5jdGlvbik7CisgICAgQVNTRVJUKCF2YWx1ZVJlZ2lzdGVyIHx8ICgh
Z2V0dGVyUmVnaXN0ZXIgJiYgIXNldHRlclJlZ2lzdGVyKSk7CiAKLSAgICBDYWxsQXJndW1lbnRz
IGNhbGxBcmd1bWVudHMoKnRoaXMsIG51bGxwdHIsIDMpOwotICAgIGVtaXRMb2FkKGNhbGxBcmd1
bWVudHMudGhpc1JlZ2lzdGVyKCksIGpzVW5kZWZpbmVkKCkpOwotICAgIGVtaXRNb3ZlKGNhbGxB
cmd1bWVudHMuYXJndW1lbnRSZWdpc3RlcigwKSwgbmV3T2JqKTsKLSAgICBlbWl0TW92ZShjYWxs
QXJndW1lbnRzLmFyZ3VtZW50UmVnaXN0ZXIoMSksIHByb3BlcnR5TmFtZVJlZ2lzdGVyKTsKLSAg
ICBlbWl0TW92ZShjYWxsQXJndW1lbnRzLmFyZ3VtZW50UmVnaXN0ZXIoMiksIGRlc2NyaXB0b3JS
ZWdpc3Rlci5nZXQoKSk7CisgICAgaWYgKGF0dHJpYnV0ZXMuaGFzR2V0KCkgfHwgYXR0cmlidXRl
cy5oYXNTZXQoKSkgeworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGhyb3dUeXBlRXJyb3JG
dW5jdGlvbjsKKyAgICAgICAgaWYgKCFhdHRyaWJ1dGVzLmhhc0dldCgpIHx8ICFhdHRyaWJ1dGVz
Lmhhc1NldCgpKQorICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3JGdW5jdGlvbiA9IGVtaXRNb3Zl
TGlua1RpbWVDb25zdGFudChudWxscHRyLCBMaW5rVGltZUNvbnN0YW50OjpUaHJvd1R5cGVFcnJv
ckZ1bmN0aW9uKTsKIAotICAgIGVtaXRDYWxsKG5ld1RlbXBvcmFyeSgpLCBkZWZpbmVQcm9wZXJ0
eVJlZ2lzdGVyLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIHBvc2l0
aW9uLCBwb3NpdGlvbiwgcG9zaXRpb24pOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZ2V0
dGVyOworICAgICAgICBpZiAoYXR0cmlidXRlcy5oYXNHZXQoKSkKKyAgICAgICAgICAgIGdldHRl
ciA9IGdldHRlclJlZ2lzdGVyOworICAgICAgICBlbHNlCisgICAgICAgICAgICBnZXR0ZXIgPSB0
aHJvd1R5cGVFcnJvckZ1bmN0aW9uOworCisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzZXR0
ZXI7CisgICAgICAgIGlmIChhdHRyaWJ1dGVzLmhhc1NldCgpKQorICAgICAgICAgICAgc2V0dGVy
ID0gc2V0dGVyUmVnaXN0ZXI7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHNldHRlciA9IHRo
cm93VHlwZUVycm9yRnVuY3Rpb247CisKKyAgICAgICAgZW1pdE9wY29kZShvcF9kZWZpbmVfYWNj
ZXNzb3JfcHJvcGVydHkpOworICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobmV3T2JqLT5p
bmRleCgpKTsKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHByb3BlcnR5TmFtZVJlZ2lz
dGVyLT5pbmRleCgpKTsKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGdldHRlci0+aW5k
ZXgoKSk7CisgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChzZXR0ZXItPmluZGV4KCkpOwor
ICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIo
YXR0cmlidXRlcy5yYXdSZXByZXNlbnRhdGlvbigpKSktPmluZGV4KCkpOworICAgIH0gZWxzZSB7
CisgICAgICAgIGVtaXRPcGNvZGUob3BfZGVmaW5lX2RhdGFfcHJvcGVydHkpOworICAgICAgICBp
bnN0cnVjdGlvbnMoKS5hcHBlbmQobmV3T2JqLT5pbmRleCgpKTsKKyAgICAgICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKHByb3BlcnR5TmFtZVJlZ2lzdGVyLT5pbmRleCgpKTsKKyAgICAgICAgaW5z
dHJ1Y3Rpb25zKCkuYXBwZW5kKHZhbHVlUmVnaXN0ZXItPmluZGV4KCkpOworICAgICAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQoZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoYXR0cmlidXRlcy5y
YXdSZXByZXNlbnRhdGlvbigpKSktPmluZGV4KCkpOworICAgIH0KIH0KIAogUmVnaXN0ZXJJRCog
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXR1cm4oUmVnaXN0ZXJJRCogc3JjKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5o
CmluZGV4IGQzMjY0YzRhMDg3N2EzNjJlOTA0ZTFmODM2YmJkNDU2MDQyOWUwZmUuLjllNmNkYmEz
NjIzZTkyNjI2Y2M4ZmQzOTdmMDllNzE0MzNmYjFjYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTU4OCw3
ICs1ODgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIFByb3BlcnR5RW51bWVyYWJs
ZSAgID0gMSA8PCAyLAogICAgICAgICB9OwogICAgICAgICB2b2lkIGVtaXRDYWxsRGVmaW5lUHJv
cGVydHkoUmVnaXN0ZXJJRCogbmV3T2JqLCBSZWdpc3RlcklEKiBwcm9wZXJ0eU5hbWVSZWdpc3Rl
ciwKLSAgICAgICAgICAgIFJlZ2lzdGVySUQqIHZhbHVlUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIGdl
dHRlclJlZ2lzdGVyLCBSZWdpc3RlcklEKiBzZXR0ZXJSZWdpc3RlciwgdW5zaWduZWQgb3B0aW9u
cywgY29uc3QgSlNUZXh0UG9zaXRpb24mKTsKKyAgICAgICAgICAgIFJlZ2lzdGVySUQqIHZhbHVl
UmVnaXN0ZXIsIFJlZ2lzdGVySUQqIGdldHRlclJlZ2lzdGVyLCBSZWdpc3RlcklEKiBzZXR0ZXJS
ZWdpc3RlciwgdW5zaWduZWQgb3B0aW9ucyk7CiAKICAgICAgICAgdm9pZCBlbWl0RW51bWVyYXRp
b24oVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIGVudW1lcmF0aW9uTm9kZSwgRXhwcmVzc2lvbk5v
ZGUqIHN1YmplY3ROb2RlLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPHZvaWQoQnl0ZWNvZGVHZW5lcmF0
b3ImLCBSZWdpc3RlcklEKik+JiBjYWxsQmFjaywgVmFyaWFibGVFbnZpcm9ubWVudE5vZGUqID0g
bnVsbHB0ciwgUmVnaXN0ZXJJRCogZm9yTG9vcFN5bWJvbFRhYmxlID0gbnVsbHB0cik7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2Vu
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNw
cAppbmRleCBjMjY4YTI2MDhkMzhkNmRlYTdhY2I4MTc3MDdlNTlmMWM1MjVmMjgyLi4yYjU5MGM4
N2MwZjE2YjAwZjYyYzAzZmY4NjYxYjU5MzBmZDYwZTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC01OTAsMTIgKzU5
MCwxMiBAQCB2b2lkIFByb3BlcnR5TGlzdE5vZGU6OmVtaXRQdXRDb25zdGFudFByb3BlcnR5KEJ5
dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZwogICAgICAgICBBU1NFUlQobm9kZS5uZWVk
c1N1cGVyQmluZGluZygpKTsKICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByb3BlcnR5TmFt
ZVJlZ2lzdGVyOwogICAgICAgICBpZiAobm9kZS5uYW1lKCkpCi0gICAgICAgICAgICBwcm9wZXJ0
eU5hbWVSZWdpc3RlciA9IGdlbmVyYXRvci5lbWl0TG9hZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5
KCksICpub2RlLm5hbWUoKSk7CisgICAgICAgICAgICBwcm9wZXJ0eU5hbWVSZWdpc3RlciA9IGdl
bmVyYXRvci5lbWl0TG9hZChudWxscHRyLCAqbm9kZS5uYW1lKCkpOwogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICBwcm9wZXJ0eU5hbWVSZWdpc3RlciA9IGdlbmVyYXRvci5lbWl0Tm9kZShub2Rl
Lm1fZXhwcmVzc2lvbik7CiAKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRTZXRGdW5jdGlvbk5hbWVJ
Zk5lZWRlZChub2RlLm1fYXNzaWduLCB2YWx1ZS5nZXQoKSwgcHJvcGVydHlOYW1lUmVnaXN0ZXIu
Z2V0KCkpOwotICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGxEZWZpbmVQcm9wZXJ0eShuZXdPYmos
IHByb3BlcnR5TmFtZVJlZ2lzdGVyLmdldCgpLCB2YWx1ZS5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0
ciwgQnl0ZWNvZGVHZW5lcmF0b3I6OlByb3BlcnR5Q29uZmlndXJhYmxlIHwgQnl0ZWNvZGVHZW5l
cmF0b3I6OlByb3BlcnR5V3JpdGFibGUsIG1fcG9zaXRpb24pOworICAgICAgICBnZW5lcmF0b3Iu
ZW1pdENhbGxEZWZpbmVQcm9wZXJ0eShuZXdPYmosIHByb3BlcnR5TmFtZVJlZ2lzdGVyLmdldCgp
LCB2YWx1ZS5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0ciwgQnl0ZWNvZGVHZW5lcmF0b3I6OlByb3Bl
cnR5Q29uZmlndXJhYmxlIHwgQnl0ZWNvZGVHZW5lcmF0b3I6OlByb3BlcnR5V3JpdGFibGUpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmIChjb25zdCBhdXRvKiBpZGVudGlmaWVyID0g
bm9kZS5uYW1lKCkpIHsKQEAgLTYwNSw3ICs2MDUsNyBAQCB2b2lkIFByb3BlcnR5TGlzdE5vZGU6
OmVtaXRQdXRDb25zdGFudFByb3BlcnR5KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJl
ZwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IGluZGV4ID0gZ2VuZXJhdG9yLmVtaXRMb2FkKGdlbmVyYXRvci5uZXdUZW1wb3Jhcnko
KSwganNOdW1iZXIob3B0aW9uYWxJbmRleC52YWx1ZSgpKSk7CisgICAgICAgIFJlZlB0cjxSZWdp
c3RlcklEPiBpbmRleCA9IGdlbmVyYXRvci5lbWl0TG9hZChudWxscHRyLCBqc051bWJlcihvcHRp
b25hbEluZGV4LnZhbHVlKCkpKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXREaXJlY3RQdXRCeVZh
bChuZXdPYmosIGluZGV4LmdldCgpLCB2YWx1ZS5nZXQoKSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CkBAIC0xNjIzLDcgKzE2MjMsNyBAQCBSZWdpc3RlcklEKiBVbmFyeVBsdXNOb2RlOjplbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRAogIAogUmVn
aXN0ZXJJRCogQml0d2lzZU5vdE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYg
Z2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNy
YzIgPSBnZW5lcmF0b3IuZW1pdExvYWQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBqc051bWJl
cigtMSkpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzcmMyID0gZ2VuZXJhdG9yLmVtaXRMb2Fk
KG51bGxwdHIsIGpzTnVtYmVyKC0xKSk7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNyYzEgPSBn
ZW5lcmF0b3IuZW1pdE5vZGUobV9leHByKTsKICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRCaW5h
cnlPcChvcF9iaXR4b3IsIGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgc3JjMS5nZXQo
KSksIHNyYzEuZ2V0KCksIHNyYzIuZ2V0KCksIE9wZXJhbmRUeXBlcyhtX2V4cHItPnJlc3VsdERl
c2NyaXB0b3IoKSwgUmVzdWx0VHlwZTo6bnVtYmVyVHlwZUlzSW50MzIoKSkpOwogfQpAQCAtMzYw
MywxMiArMzYwMywxMiBAQCBSZWdpc3RlcklEKiBDbGFzc0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRAogICAgICAgICBlbWl0UHV0
SG9tZU9iamVjdChnZW5lcmF0b3IsIGNvbnN0cnVjdG9yLmdldCgpLCBwcm90b3R5cGUuZ2V0KCkp
OwogICAgIH0KIAotICAgIFJlZlB0cjxSZWdpc3RlcklEPiBjb25zdHJ1Y3Rvck5hbWVSZWdpc3Rl
ciA9IGdlbmVyYXRvci5lbWl0TG9hZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHByb3BlcnR5
TmFtZXMuY29uc3RydWN0b3IpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBjb25zdHJ1Y3Rvck5h
bWVSZWdpc3RlciA9IGdlbmVyYXRvci5lbWl0TG9hZChudWxscHRyLCBwcm9wZXJ0eU5hbWVzLmNv
bnN0cnVjdG9yKTsKICAgICBnZW5lcmF0b3IuZW1pdENhbGxEZWZpbmVQcm9wZXJ0eShwcm90b3R5
cGUuZ2V0KCksIGNvbnN0cnVjdG9yTmFtZVJlZ2lzdGVyLmdldCgpLCBjb25zdHJ1Y3Rvci5nZXQo
KSwgbnVsbHB0ciwgbnVsbHB0ciwKLSAgICAgICAgQnl0ZWNvZGVHZW5lcmF0b3I6OlByb3BlcnR5
Q29uZmlndXJhYmxlIHwgQnl0ZWNvZGVHZW5lcmF0b3I6OlByb3BlcnR5V3JpdGFibGUsIG1fcG9z
aXRpb24pOworICAgICAgICBCeXRlY29kZUdlbmVyYXRvcjo6UHJvcGVydHlDb25maWd1cmFibGUg
fCBCeXRlY29kZUdlbmVyYXRvcjo6UHJvcGVydHlXcml0YWJsZSk7CiAKLSAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gcHJvdG90eXBlTmFtZVJlZ2lzdGVyID0gZ2VuZXJhdG9yLmVtaXRMb2FkKGdlbmVy
YXRvci5uZXdUZW1wb3JhcnkoKSwgcHJvcGVydHlOYW1lcy5wcm90b3R5cGUpOwotICAgIGdlbmVy
YXRvci5lbWl0Q2FsbERlZmluZVByb3BlcnR5KGNvbnN0cnVjdG9yLmdldCgpLCBwcm90b3R5cGVO
YW1lUmVnaXN0ZXIuZ2V0KCksIHByb3RvdHlwZS5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0ciwgMCwg
bV9wb3NpdGlvbik7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByb3RvdHlwZU5hbWVSZWdpc3Rl
ciA9IGdlbmVyYXRvci5lbWl0TG9hZChudWxscHRyLCBwcm9wZXJ0eU5hbWVzLnByb3RvdHlwZSk7
CisgICAgZ2VuZXJhdG9yLmVtaXRDYWxsRGVmaW5lUHJvcGVydHkoY29uc3RydWN0b3IuZ2V0KCks
IHByb3RvdHlwZU5hbWVSZWdpc3Rlci5nZXQoKSwgcHJvdG90eXBlLmdldCgpLCBudWxscHRyLCBu
dWxscHRyLCAwKTsKIAogICAgIGlmIChtX3N0YXRpY01ldGhvZHMpCiAgICAgICAgIGdlbmVyYXRv
ci5lbWl0Tm9kZShjb25zdHJ1Y3Rvci5nZXQoKSwgbV9zdGF0aWNNZXRob2RzKTsKQEAgLTM4NzAs
NyArMzg3MCw3IEBAIHZvaWQgT2JqZWN0UGF0dGVybk5vZGU6OmJpbmRWYWx1ZShCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiByaHMpCiAgICAgICAgICAgICBpZiAoIW9w
dGlvbmFsSW5kZXgpCiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKHRlbXAu
Z2V0KCksIHJocywgdGFyZ2V0LnByb3BlcnR5TmFtZSk7CiAgICAgICAgICAgICBlbHNlIHsKLSAg
ICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaW5kZXggPSBnZW5lcmF0b3IuZW1pdExv
YWQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBqc051bWJlcihvcHRpb25hbEluZGV4LnZhbHVl
KCkpKTsKKyAgICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaW5kZXggPSBnZW5lcmF0
b3IuZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIob3B0aW9uYWxJbmRleC52YWx1ZSgpKSk7CiAg
ICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRCeVZhbCh0ZW1wLmdldCgpLCByaHMsIGlu
ZGV4LmdldCgpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGlu
ZXMuaAppbmRleCA4Yzc0MTI2NjI2NWM4MTQ4MDZmMWYwZmI3MTQ4MzdlMjNjNTBkYzhkLi5lOTZi
MTA1Y2FmMWEyZTEwNDFjOTliZjYxYThiOGI2NzM0ZGFjMWQzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5o
CkBAIC0yNjU3LDYgKzI2NTcsMTEgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0
U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAg
Y2xvYmJlcldvcmxkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2xvYmJlckxpbWl0KTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQorCisgICAgY2FzZSBEZWZpbmVEYXRhUHJvcGVydHk6CisgICAgY2Fz
ZSBEZWZpbmVBY2Nlc3NvclByb3BlcnR5OgorICAgICAgICBjbG9iYmVyV29ybGQobm9kZS0+b3Jp
Z2luLnNlbWFudGljLCBjbG9iYmVyTGltaXQpOworICAgICAgICBicmVhazsKICAgICAgICAgCiAg
ICAgY2FzZSBJbjogewogICAgICAgICAvLyBGSVhNRTogV2UgY2FuIGRldGVybWluZSB3aGVuIHRo
ZSBwcm9wZXJ0eSBkZWZpbml0ZWx5IGV4aXN0cyBiYXNlZCBvbiBhYnN0cmFjdApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCAwNDUyMjgw
ZGQyNmY0MGIwYmNhNDVkMzg1MWQxMTBkZjQxNmEwZmE3Li4wYjVmYjk1ZDk1N2IxMmE0MzgxY2Zm
YjliNmMyYTRlYjMyYWIzYTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtNDIzOCw2ICs0MjM4LDM4IEBAIGJvb2wgQnl0ZUNvZGVQ
YXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICBORVhUX09QQ09E
RShvcF9wdXRfYnlfdmFsX3dpdGhfdGhpcyk7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIG9w
X2RlZmluZV9kYXRhX3Byb3BlcnR5OiB7CisgICAgICAgICAgICBOb2RlKiBiYXNlID0gZ2V0KFZp
cnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSk7CisgICAgICAg
ICAgICBOb2RlKiBwcm9wZXJ0eSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0
aW9uWzJdLnUub3BlcmFuZCkpOworICAgICAgICAgICAgTm9kZSogdmFsdWUgPSBnZXQoVmlydHVh
bFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpKTsKKyAgICAgICAgICAg
IE5vZGUqIGF0dHJpYnV0ZXMgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlv
bls0XS51Lm9wZXJhbmQpKTsKKworICAgICAgICAgICAgYWRkVmFyQXJnQ2hpbGQoYmFzZSk7Cisg
ICAgICAgICAgICBhZGRWYXJBcmdDaGlsZChwcm9wZXJ0eSk7CisgICAgICAgICAgICBhZGRWYXJB
cmdDaGlsZCh2YWx1ZSk7CisgICAgICAgICAgICBhZGRWYXJBcmdDaGlsZChhdHRyaWJ1dGVzKTsK
KyAgICAgICAgICAgIGFkZFRvR3JhcGgoTm9kZTo6VmFyQXJnLCBEZWZpbmVEYXRhUHJvcGVydHks
IE9wSW5mbygwKSwgT3BJbmZvKDApKTsKKworICAgICAgICAgICAgTkVYVF9PUENPREUob3BfZGVm
aW5lX2RhdGFfcHJvcGVydHkpOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBvcF9kZWZpbmVf
YWNjZXNzb3JfcHJvcGVydHk6IHsKKyAgICAgICAgICAgIE5vZGUqIGJhc2UgPSBnZXQoVmlydHVh
bFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpKTsKKyAgICAgICAgICAg
IE5vZGUqIHByb3BlcnR5ID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25b
Ml0udS5vcGVyYW5kKSk7CisgICAgICAgICAgICBOb2RlKiBnZXR0ZXIgPSBnZXQoVmlydHVhbFJl
Z2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpKTsKKyAgICAgICAgICAgIE5v
ZGUqIHNldHRlciA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzRdLnUu
b3BlcmFuZCkpOworICAgICAgICAgICAgTm9kZSogYXR0cmlidXRlcyA9IGdldChWaXJ0dWFsUmVn
aXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzVdLnUub3BlcmFuZCkpOworCisgICAgICAgICAgICBh
ZGRWYXJBcmdDaGlsZChiYXNlKTsKKyAgICAgICAgICAgIGFkZFZhckFyZ0NoaWxkKHByb3BlcnR5
KTsKKyAgICAgICAgICAgIGFkZFZhckFyZ0NoaWxkKGdldHRlcik7CisgICAgICAgICAgICBhZGRW
YXJBcmdDaGlsZChzZXR0ZXIpOworICAgICAgICAgICAgYWRkVmFyQXJnQ2hpbGQoYXR0cmlidXRl
cyk7CisgICAgICAgICAgICBhZGRUb0dyYXBoKE5vZGU6OlZhckFyZywgRGVmaW5lQWNjZXNzb3JQ
cm9wZXJ0eSwgT3BJbmZvKDApLCBPcEluZm8oMCkpOworCisgICAgICAgICAgICBORVhUX09QQ09E
RShvcF9kZWZpbmVfYWNjZXNzb3JfcHJvcGVydHkpOworICAgICAgICB9CisKICAgICAgICAgY2Fz
ZSBvcF90cnlfZ2V0X2J5X2lkOgogICAgICAgICBjYXNlIG9wX2dldF9ieV9pZDoKICAgICAgICAg
Y2FzZSBvcF9nZXRfYnlfaWRfcHJvdG9fbG9hZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAppbmRleCA0OGZhNDk1NzJlYzUwZWMxNWQwMzc3NmE1MjJk
NmZiZDM1MmJmZTlhLi5jMzIzZDQ2ZmJjM2NmNWMxMDQ5ZmEyNmZjMGUxOTBmMjI3MWE0NzE4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCkBAIC0x
NzMsNiArMTczLDggQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJRCBv
cGNvZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWMKICAgICBjYXNlIG9wX3B1dF9n
ZXR0ZXJfc2V0dGVyX2J5X2lkOgogICAgIGNhc2Ugb3BfcHV0X2dldHRlcl9ieV92YWw6CiAgICAg
Y2FzZSBvcF9wdXRfc2V0dGVyX2J5X3ZhbDoKKyAgICBjYXNlIG9wX2RlZmluZV9kYXRhX3Byb3Bl
cnR5OgorICAgIGNhc2Ugb3BfZGVmaW5lX2FjY2Vzc29yX3Byb3BlcnR5OgogICAgIGNhc2Ugb3Bf
ZGVsX2J5X2lkOgogICAgIGNhc2Ugb3BfZGVsX2J5X3ZhbDoKICAgICBjYXNlIG9wX2ptcDoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKaW5kZXggYzFjM2ZkZGRiN2E3
YTYwYjQ2NTJhMTdjYWUxYTk4M2Y4Y2FlOTYxMS4uY2NjZGY4YmNkNjI2YWE0ZDY3NjM3M2NkMjg0
MmUyZTU2YWUwYWMxMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
bG9iYmVyaXplLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXpl
LmgKQEAgLTQ4Niw2ICs0ODYsOCBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2Rl
KiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgIGNhc2Ug
UHV0R2V0dGVyU2V0dGVyQnlJZDoKICAgICBjYXNlIFB1dEdldHRlckJ5VmFsOgogICAgIGNhc2Ug
UHV0U2V0dGVyQnlWYWw6CisgICAgY2FzZSBEZWZpbmVEYXRhUHJvcGVydHk6CisgICAgY2FzZSBE
ZWZpbmVBY2Nlc3NvclByb3BlcnR5OgogICAgIGNhc2UgRGVsZXRlQnlJZDoKICAgICBjYXNlIERl
bGV0ZUJ5VmFsOgogICAgIGNhc2UgQXJyYXlQdXNoOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdEb2VzR0MuY3BwCmluZGV4IDJkY2Y1NWQyZWQyOGFhZTYwYjZiOGI3YjliZjZkYTA3MTlkOTJk
ZDUuLmY2OWQyZjlmZjk3ZDQwOGE4ZjJlODE3NmY1YWE3YjNjOWM3NTNkYmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKQEAgLTExMSw2ICsxMTEsOCBAQCBib29sIGRv
ZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBQdXRHZXR0ZXJTZXR0ZXJC
eUlkOgogICAgIGNhc2UgUHV0R2V0dGVyQnlWYWw6CiAgICAgY2FzZSBQdXRTZXR0ZXJCeVZhbDoK
KyAgICBjYXNlIERlZmluZURhdGFQcm9wZXJ0eToKKyAgICBjYXNlIERlZmluZUFjY2Vzc29yUHJv
cGVydHk6CiAgICAgY2FzZSBEZWxldGVCeUlkOgogICAgIGNhc2UgRGVsZXRlQnlWYWw6CiAgICAg
Y2FzZSBDaGVja1N0cnVjdHVyZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRml4dXBQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVw
UGhhc2UuY3BwCmluZGV4IDZlZTUxNDJmNzhmNjBiZjEwOTY4M2M4Yjg5YzE1ZDBlNDU4YjNmZTAu
LmQzYzU5NDEwNGFjOTMwZDU0MWUyNjY5MmEwNWFkNTViOWRkNjk5MzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcApAQCAtMTYwMiw2ICsxNjAyLDM5IEBA
IGNsYXNzIEZpeHVwUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgZml4RWRnZTxV
bnR5cGVkVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBicmVhazsKIAorICAgICAg
ICBjYXNlIERlZmluZURhdGFQcm9wZXJ0eTogeworICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNl
PihtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDApKTsKKyAgICAgICAgICAgIEVkZ2UmIHByb3Bl
cnR5RWRnZSA9IG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSk7CisgICAgICAgICAgICBpZiAo
cHJvcGVydHlFZGdlLT5zaG91bGRTcGVjdWxhdGVTeW1ib2woKSkKKyAgICAgICAgICAgICAgICBm
aXhFZGdlPFN5bWJvbFVzZT4ocHJvcGVydHlFZGdlKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHBy
b3BlcnR5RWRnZS0+c2hvdWxkU3BlY3VsYXRlU3RyaW5nSWRlbnQoKSkKKyAgICAgICAgICAgICAg
ICBmaXhFZGdlPFN0cmluZ0lkZW50VXNlPihwcm9wZXJ0eUVkZ2UpOworICAgICAgICAgICAgZWxz
ZSBpZiAocHJvcGVydHlFZGdlLT5zaG91bGRTcGVjdWxhdGVTdHJpbmcoKSkKKyAgICAgICAgICAg
ICAgICBmaXhFZGdlPFN0cmluZ1VzZT4ocHJvcGVydHlFZGdlKTsKKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICBmaXhFZGdlPFVudHlwZWRVc2U+KHByb3BlcnR5RWRnZSk7CisgICAg
ICAgICAgICBmaXhFZGdlPFVudHlwZWRVc2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMikp
OworICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2Rl
LCAzKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgRGVm
aW5lQWNjZXNzb3JQcm9wZXJ0eTogeworICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNlPihtX2dy
YXBoLnZhckFyZ0NoaWxkKG5vZGUsIDApKTsKKyAgICAgICAgICAgIEVkZ2UmIHByb3BlcnR5RWRn
ZSA9IG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSk7CisgICAgICAgICAgICBpZiAocHJvcGVy
dHlFZGdlLT5zaG91bGRTcGVjdWxhdGVTeW1ib2woKSkKKyAgICAgICAgICAgICAgICBmaXhFZGdl
PFN5bWJvbFVzZT4ocHJvcGVydHlFZGdlKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHByb3BlcnR5
RWRnZS0+c2hvdWxkU3BlY3VsYXRlU3RyaW5nSWRlbnQoKSkKKyAgICAgICAgICAgICAgICBmaXhF
ZGdlPFN0cmluZ0lkZW50VXNlPihwcm9wZXJ0eUVkZ2UpOworICAgICAgICAgICAgZWxzZSBpZiAo
cHJvcGVydHlFZGdlLT5zaG91bGRTcGVjdWxhdGVTdHJpbmcoKSkKKyAgICAgICAgICAgICAgICBm
aXhFZGdlPFN0cmluZ1VzZT4ocHJvcGVydHlFZGdlKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICBmaXhFZGdlPFVudHlwZWRVc2U+KHByb3BlcnR5RWRnZSk7CisgICAgICAgICAg
ICBmaXhFZGdlPENlbGxVc2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMikpOworICAgICAg
ICAgICAgZml4RWRnZTxDZWxsVXNlPihtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDMpKTsKKyAg
ICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgNCkp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwogI2lmICFBU1NFUlRfRElTQUJMRUQK
ICAgICAgICAgLy8gSGF2ZSB0aGVzZSBuby1vcCBjYXNlcyBoZXJlIHRvIGVuc3VyZSB0aGF0IG5v
Ym9keSBmb3JnZXRzIHRvIGFkZCBoYW5kbGVycyBmb3IgbmV3IG9wY29kZXMuCiAgICAgICAgIGNh
c2UgU2V0QXJndW1lbnQ6CkBAIC0xNjcxLDggKzE3MDQsNiBAQCBjbGFzcyBGaXh1cFBoYXNlIDog
cHVibGljIFBoYXNlIHsKICAgICAgICAgY2FzZSBHZXRCeVZhbFdpdGhUaGlzOgogICAgICAgICBj
YXNlIENvbXBhcmVFcVB0cjoKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgCi0gICAg
ICAgICAgICBicmVhazsKICNlbHNlCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBicmVh
azsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAppbmRleCAxZjM1ZWIyZDkw
M2I0NjZjMjQxOGMzZGMxYjYxODUzZWJlNWQ2OTc5Li4yNTE1ZWIzNDJiZDczODllMTE4ODdhYmQ4
MmYwZWNmZjAxMDdkYmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGVUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5o
CkBAIC0xOTksNiArMTk5LDggQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAg
IG1hY3JvKFB1dEdldHRlclNldHRlckJ5SWQsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNy
byhQdXRHZXR0ZXJCeVZhbCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFB1dFNldHRl
ckJ5VmFsLCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8oRGVmaW5lRGF0YVByb3BlcnR5
LCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUhhc1ZhckFyZ3MpIFwKKyAgICBtYWNybyhEZWZpbmVB
Y2Nlc3NvclByb3BlcnR5LCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUhhc1ZhckFyZ3MpIFwKICAg
ICBtYWNybyhEZWxldGVCeUlkLCBOb2RlUmVzdWx0Qm9vbGVhbiB8IE5vZGVNdXN0R2VuZXJhdGUp
IFwKICAgICBtYWNybyhEZWxldGVCeVZhbCwgTm9kZVJlc3VsdEJvb2xlYW4gfCBOb2RlTXVzdEdl
bmVyYXRlKSBcCiAgICAgbWFjcm8oQ2hlY2tTdHJ1Y3R1cmUsIE5vZGVNdXN0R2VuZXJhdGUpIFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCmluZGV4IDdlOGNj
NThjOGQ4MzM4OWI2Y2QyOTExZDVhYWU4ZDM3ODQ2NTA1ODguLmI2OGM4YWQxNTQ3YjZlZGU5ODMy
MWVkMWYzMzA2MmNiZjgzMDM5NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
cGVyYXRpb25zLmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkRGR1RvRlRMRGVmZXJy
ZWRDb21waWxhdGlvbkNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiREZHVG9GVExGb3JPU1JFbnRyeURl
ZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5oIgogI2luY2x1ZGUgIkRGR1dvcmtsaXN0LmgiCisj
aW5jbHVkZSAiRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzLmgiCiAjaW5jbHVkZSAiRGlyZWN0QXJn
dW1lbnRzLmgiCiAjaW5jbHVkZSAiRlRMRm9yT1NSRW50cnlKSVRDb2RlLmgiCiAjaW5jbHVkZSAi
RlRMT1NSRW50cnkuaCIKQEAgLTk5NCw2ICs5OTUsOTIgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblB1dEJ5VmFsV2l0aFRoaXMoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBl
bmMKICAgICBwdXRXaXRoVGhpczxmYWxzZT4oZXhlYywgZW5jb2RlZEJhc2UsIGVuY29kZWRUaGlz
LCBlbmNvZGVkVmFsdWUsIHByb3BlcnR5KTsKIH0KIAorQUxXQVlTX0lOTElORSBzdGF0aWMgdm9p
ZCBkZWZpbmVEYXRhUHJvcGVydHkoRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0sIEpTT2JqZWN0KiBi
YXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIGludDMy
X3QgYXR0cmlidXRlcykKK3sKKyAgICBQcm9wZXJ0eURlc2NyaXB0b3IgZGVzY3JpcHRvciA9IHRv
UHJvcGVydHlEZXNjcmlwdG9yKHZhbHVlLCBqc1VuZGVmaW5lZCgpLCBqc1VuZGVmaW5lZCgpLCBE
ZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMoYXR0cmlidXRlcykpOworICAgIEFTU0VSVCgoZGVzY3Jp
cHRvci5hdHRyaWJ1dGVzKCkgJiBBY2Nlc3NvcikgfHwgKCFkZXNjcmlwdG9yLmlzQWNjZXNzb3JE
ZXNjcmlwdG9yKCkpKTsKKyAgICBiYXNlLT5tZXRob2RUYWJsZSh2bSktPmRlZmluZU93blByb3Bl
cnR5KGJhc2UsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgdHJ1ZSk7Cit9CisKK3Zv
aWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWZpbmVEYXRhUHJvcGVydHkoRXhlY1N0YXRlKiBl
eGVjLCBKU09iamVjdCogYmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFByb3BlcnR5LCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIGludDMyX3QgYXR0cmlidXRlcykKK3sKKyAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBl
eGVjKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBJ
ZGVudGlmaWVyIHByb3BlcnR5TmFtZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkUHJvcGVydHkp
LnRvUHJvcGVydHlLZXkoZXhlYyk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9p
ZCgpKTsKKyAgICBkZWZpbmVEYXRhUHJvcGVydHkoZXhlYywgdm0sIGJhc2UsIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSksIGF0dHJpYnV0ZXMpOworfQorCit2b2lk
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVmaW5lRGF0YVByb3BlcnR5U3RyaW5nKEV4ZWNTdGF0
ZSogZXhlYywgSlNPYmplY3QqIGJhc2UsIEpTU3RyaW5nKiBwcm9wZXJ0eSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlLCBpbnQzMl90IGF0dHJpYnV0ZXMpCit7CisgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSWRlbnRpZmll
ciBwcm9wZXJ0eU5hbWUgPSBwcm9wZXJ0eS0+dG9JZGVudGlmaWVyKGV4ZWMpOworICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisgICAgZGVmaW5lRGF0YVByb3BlcnR5KGV4
ZWMsIHZtLCBiYXNlLCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUp
LCBhdHRyaWJ1dGVzKTsKK30KKwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlZmluZURh
dGFQcm9wZXJ0eVN0cmluZ0lkZW50KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGJhc2UsIFVu
aXF1ZWRTdHJpbmdJbXBsKiBwcm9wZXJ0eSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBp
bnQzMl90IGF0dHJpYnV0ZXMpCit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBOYXRp
dmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CisgICAgZGVmaW5lRGF0YVByb3Bl
cnR5KGV4ZWMsIHZtLCBiYXNlLCBJZGVudGlmaWVyOjpmcm9tVWlkKCZ2bSwgcHJvcGVydHkpLCBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSwgYXR0cmlidXRlcyk7Cit9CisKK3ZvaWQgSklU
X09QRVJBVElPTiBvcGVyYXRpb25EZWZpbmVEYXRhUHJvcGVydHlTeW1ib2woRXhlY1N0YXRlKiBl
eGVjLCBKU09iamVjdCogYmFzZSwgU3ltYm9sKiBwcm9wZXJ0eSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlLCBpbnQzMl90IGF0dHJpYnV0ZXMpCit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CisgICAgZGVm
aW5lRGF0YVByb3BlcnR5KGV4ZWMsIHZtLCBiYXNlLCBJZGVudGlmaWVyOjpmcm9tVWlkKHByb3Bl
cnR5LT5wcml2YXRlTmFtZSgpKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSksIGF0dHJp
YnV0ZXMpOworfQorCitBTFdBWVNfSU5MSU5FIHN0YXRpYyB2b2lkIGRlZmluZUFjY2Vzc29yUHJv
cGVydHkoRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0sIEpTT2JqZWN0KiBiYXNlLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTT2JqZWN0KiBnZXR0ZXIsIEpTT2JqZWN0KiBzZXR0ZXIs
IGludDMyX3QgYXR0cmlidXRlcykKK3sKKyAgICBQcm9wZXJ0eURlc2NyaXB0b3IgZGVzY3JpcHRv
ciA9IHRvUHJvcGVydHlEZXNjcmlwdG9yKGpzVW5kZWZpbmVkKCksIGdldHRlciwgc2V0dGVyLCBE
ZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMoYXR0cmlidXRlcykpOworICAgIEFTU0VSVCgoZGVzY3Jp
cHRvci5hdHRyaWJ1dGVzKCkgJiBBY2Nlc3NvcikgfHwgKCFkZXNjcmlwdG9yLmlzQWNjZXNzb3JE
ZXNjcmlwdG9yKCkpKTsKKyAgICBiYXNlLT5tZXRob2RUYWJsZSh2bSktPmRlZmluZU93blByb3Bl
cnR5KGJhc2UsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgdHJ1ZSk7Cit9CisKK3Zv
aWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWZpbmVBY2Nlc3NvclByb3BlcnR5KEV4ZWNTdGF0
ZSogZXhlYywgSlNPYmplY3QqIGJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRQcm9wZXJ0eSwg
SlNPYmplY3QqIGdldHRlciwgSlNPYmplY3QqIHNldHRlciwgaW50MzJfdCBhdHRyaWJ1dGVzKQor
eworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcigmdm0sIGV4ZWMpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKworICAgIElkZW50aWZpZXIgcHJvcGVydHlOYW1lID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRQcm9wZXJ0eSkudG9Qcm9wZXJ0eUtleShleGVjKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCB2b2lkKCkpOworICAgIGRlZmluZUFjY2Vzc29yUHJvcGVydHkoZXhlYywgdm0sIGJh
c2UsIHByb3BlcnR5TmFtZSwgZ2V0dGVyLCBzZXR0ZXIsIGF0dHJpYnV0ZXMpOworfQorCit2b2lk
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eVN0cmluZyhFeGVj
U3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlLCBKU1N0cmluZyogcHJvcGVydHksIEpTT2JqZWN0
KiBnZXR0ZXIsIEpTT2JqZWN0KiBzZXR0ZXIsIGludDMyX3QgYXR0cmlidXRlcykKK3sKKyAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZt
LCBleGVjKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAg
ICBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSA9IHByb3BlcnR5LT50b0lkZW50aWZpZXIoZXhlYyk7
CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICBkZWZpbmVBY2Nl
c3NvclByb3BlcnR5KGV4ZWMsIHZtLCBiYXNlLCBwcm9wZXJ0eU5hbWUsIGdldHRlciwgc2V0dGVy
LCBhdHRyaWJ1dGVzKTsKK30KKwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlZmluZUFj
Y2Vzc29yUHJvcGVydHlTdHJpbmdJZGVudChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNl
LCBVbmlxdWVkU3RyaW5nSW1wbCogcHJvcGVydHksIEpTT2JqZWN0KiBnZXR0ZXIsIEpTT2JqZWN0
KiBzZXR0ZXIsIGludDMyX3QgYXR0cmlidXRlcykKK3sKKyAgICBWTSYgdm0gPSBleGVjLT52bSgp
OworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKKyAgICBkZWZp
bmVBY2Nlc3NvclByb3BlcnR5KGV4ZWMsIHZtLCBiYXNlLCBJZGVudGlmaWVyOjpmcm9tVWlkKCZ2
bSwgcHJvcGVydHkpLCBnZXR0ZXIsIHNldHRlciwgYXR0cmlidXRlcyk7Cit9CisKK3ZvaWQgSklU
X09QRVJBVElPTiBvcGVyYXRpb25EZWZpbmVBY2Nlc3NvclByb3BlcnR5U3ltYm9sKEV4ZWNTdGF0
ZSogZXhlYywgSlNPYmplY3QqIGJhc2UsIFN5bWJvbCogcHJvcGVydHksIEpTT2JqZWN0KiBnZXR0
ZXIsIEpTT2JqZWN0KiBzZXR0ZXIsIGludDMyX3QgYXR0cmlidXRlcykKK3sKKyAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVj
KTsKKyAgICBkZWZpbmVBY2Nlc3NvclByb3BlcnR5KGV4ZWMsIHZtLCBiYXNlLCBJZGVudGlmaWVy
Ojpmcm9tVWlkKHByb3BlcnR5LT5wcml2YXRlTmFtZSgpKSwgZ2V0dGVyLCBzZXR0ZXIsIGF0dHJp
YnV0ZXMpOworfQorCiBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0FycmF5KEV4ZWNT
dGF0ZSogZXhlYywgU3RydWN0dXJlKiBhcnJheVN0cnVjdHVyZSwgdm9pZCogYnVmZmVyLCBzaXpl
X3Qgc2l6ZSkKIHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKaW5kZXggNTI3YmZlNTg3NmFmYzc4MzdiYTMwZmQyMTBk
NWE0N2MzYjI5NTFlNC4uODQyMjM4NzQxMTI1ZmY0ZTE1Y2MzN2I0NjAwYjBjYmZjMTQyOTA2MyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKQEAgLTExNCw2ICsx
MTQsMTQgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRXaXRoVGhpcyhFeGVj
U3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEoKIHZvaWQgSklUX09QRVJBVElPTiBvcGVy
YXRpb25QdXRCeUlkV2l0aFRoaXNTdHJpY3QoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5U
RVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxXaXRoVGhpcyhFeGVj
U3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blB1dEJ5VmFsV2l0aFRoaXNTdHJpY3QoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsK
K3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWZpbmVEYXRhUHJvcGVydHkoRXhlY1N0YXRl
KiwgSlNPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIGludDMyX3QpIFdU
Rl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWZpbmVEYXRhUHJvcGVy
dHlTdHJpbmcoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBKU1N0cmluZyosIEVuY29kZWRKU1ZhbHVl
LCBpbnQzMl90KSBXVEZfSU5URVJOQUw7Cit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVm
aW5lRGF0YVByb3BlcnR5U3RyaW5nSWRlbnQoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBVbmlxdWVk
U3RyaW5nSW1wbCosIEVuY29kZWRKU1ZhbHVlLCBpbnQzMl90KSBXVEZfSU5URVJOQUw7Cit2b2lk
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVmaW5lRGF0YVByb3BlcnR5U3ltYm9sKEV4ZWNTdGF0
ZSosIEpTT2JqZWN0KiwgU3ltYm9sKiwgRW5jb2RlZEpTVmFsdWUsIGludDMyX3QpIFdURl9JTlRF
Uk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWZpbmVBY2Nlc3NvclByb3BlcnR5
KEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEpTT2JqZWN0KiwgSlNPYmpl
Y3QqLCBpbnQzMl90KSBXVEZfSU5URVJOQUw7Cit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
RGVmaW5lQWNjZXNzb3JQcm9wZXJ0eVN0cmluZyhFeGVjU3RhdGUqLCBKU09iamVjdCosIEpTU3Ry
aW5nKiwgSlNPYmplY3QqLCBKU09iamVjdCosIGludDMyX3QpIFdURl9JTlRFUk5BTDsKK3ZvaWQg
SklUX09QRVJBVElPTiBvcGVyYXRpb25EZWZpbmVBY2Nlc3NvclByb3BlcnR5U3RyaW5nSWRlbnQo
RXhlY1N0YXRlKiwgSlNPYmplY3QqLCBVbmlxdWVkU3RyaW5nSW1wbCosIEpTT2JqZWN0KiwgSlNP
YmplY3QqLCBpbnQzMl90KSBXVEZfSU5URVJOQUw7Cit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eVN5bWJvbChFeGVjU3RhdGUqLCBKU09iamVjdCosIFN5
bWJvbCosIEpTT2JqZWN0KiwgSlNPYmplY3QqLCBpbnQzMl90KSBXVEZfSU5URVJOQUw7CiBFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFycmF5UHVzaChFeGVjU3RhdGUqLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEpTQXJyYXkqKSBXVEZfSU5URVJOQUw7CiBFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFycmF5UHVzaERvdWJsZShFeGVjU3Rh
dGUqLCBkb3VibGUgdmFsdWUsIEpTQXJyYXkqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFycmF5UG9wKEV4ZWNTdGF0ZSosIEpTQXJyYXkqKSBX
VEZfSU5URVJOQUw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1By
ZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4IDA2ZGI0MGViNjc2NjcyNDZk
MzQ5MDkwNTkxOWJmNWFiZDAwZWI5OWUuLjg3ZGJlODNhODg5MGMxZDdhZDM0OGUwNTRlNWE3OWU5
ZDVhNDQyZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGlj
dGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC0xMDQwLDYgKzEwNDAsOCBAQCBj
bGFzcyBQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAg
IGNhc2UgUHV0R2V0dGVyU2V0dGVyQnlJZDoKICAgICAgICAgY2FzZSBQdXRHZXR0ZXJCeVZhbDoK
ICAgICAgICAgY2FzZSBQdXRTZXR0ZXJCeVZhbDoKKyAgICAgICAgY2FzZSBEZWZpbmVEYXRhUHJv
cGVydHk6CisgICAgICAgIGNhc2UgRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eToKICAgICAgICAgY2Fz
ZSBERkc6Okp1bXA6CiAgICAgICAgIGNhc2UgQnJhbmNoOgogICAgICAgICBjYXNlIFN3aXRjaDoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKaW5kZXggMjJi
OTM0MDA1ODNhYzZkZjg2M2IwYmUzOGY2YjgzMzZhNTA0MTlhYy4uYzEzMmY5NTc0YjI1ZTY0ZTZh
Y2M1NjE2MGI5NDc5NTgyYjkzYWYxMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTYWZlVG9FeGVjdXRlLmgKQEAgLTIxNCw2ICsyMTQsOCBAQCBib29sIHNhZmVUb0V4ZWN1dGUo
QWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAg
Y2FzZSBQdXRHZXR0ZXJTZXR0ZXJCeUlkOgogICAgIGNhc2UgUHV0R2V0dGVyQnlWYWw6CiAgICAg
Y2FzZSBQdXRTZXR0ZXJCeVZhbDoKKyAgICBjYXNlIERlZmluZURhdGFQcm9wZXJ0eToKKyAgICBj
YXNlIERlZmluZUFjY2Vzc29yUHJvcGVydHk6CiAgICAgY2FzZSBDaGVja1N0cnVjdHVyZToKICAg
ICBjYXNlIEdldEV4ZWN1dGFibGU6CiAgICAgY2FzZSBHZXRCdXR0ZXJmbHk6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IDc3NzFhOTUx
MWIyYTg1YTIwYzg4OTE2ZmE0MTkzMTQ3N2JjNzYwNTcuLjUwMDIzYjdlOGJjNGZiMmM0MmYzZDEw
NzkwZmQ5MjY4MTQ5YjZiZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwCkBAIC04NjM5LDYgKzg2MzksMTgzIEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVDb21wYXJlRXFQdHIoTm9kZSogbm9kZSkKICAgICBibGVzc2VkQm9vbGVh
blJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogfQogCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlRGVmaW5lRGF0YVByb3BlcnR5KE5vZGUqIG5vZGUpCit7CisjaWYgVVNFKEpTVkFMVUU2NCkK
KyAgICBzdGF0aWNfYXNzZXJ0KEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzID49IDUsICJXZSBh
cmUgYXNzdW1pbmcgd2UgaGF2ZSBlbm91Z2ggcmVnaXN0ZXJzIHRvIG1ha2UgdGhpcyBjYWxsIHdp
dGhvdXQgaW5jcmVtZW50YWxseSBzZXR0aW5nIHVwIHRoZSBhcmd1bWVudHMuIik7CisjZWxzZQor
ICAgIHN0YXRpY19hc3NlcnQoR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMgPj0gNiwgIldlIGFy
ZSBhc3N1bWluZyB3ZSBoYXZlIGVub3VnaCByZWdpc3RlcnMgdG8gbWFrZSB0aGlzIGNhbGwgd2l0
aG91dCBpbmNyZW1lbnRhbGx5IHNldHRpbmcgdXAgdGhlIGFyZ3VtZW50cy4iKTsKKyNlbmRpZgor
CisgICAgYXV0byBjb21waWxlV2l0aEF0dHJpYnV0ZSA9IFsmXShhdXRvIGF0dHJpYnV0ZXMpIHsK
KyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBtX2ppdC5ncmFwaCgpLnZh
ckFyZ0NoaWxkKG5vZGUsIDApKTsKKyAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigp
OworCisgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG1faml0LmdyYXBoKCkudmFy
QXJnQ2hpbGQobm9kZSwgMikpOworICAgICAgICBKU1ZhbHVlUmVncyB2YWx1ZUdQUiA9IHZhbHVl
LmdwcigpOworCisgICAgICAgIEVkZ2UmIHByb3BlcnR5RWRnZSA9IG1faml0LmdyYXBoKCkudmFy
QXJnQ2hpbGQobm9kZSwgMSk7CisgICAgICAgIHN3aXRjaCAocHJvcGVydHlFZGdlLnVzZUtpbmQo
KSkgeworICAgICAgICBjYXNlIFN0cmluZ1VzZTogeworICAgICAgICAgICAgU3BlY3VsYXRlQ2Vs
bE9wZXJhbmQgcHJvcGVydHkodGhpcywgcHJvcGVydHlFZGdlKTsKKyAgICAgICAgICAgIEdQUlJl
ZyBwcm9wZXJ0eUdQUiA9IHByb3BlcnR5LmdwcigpOworICAgICAgICAgICAgc3BlY3VsYXRlU3Ry
aW5nKHByb3BlcnR5RWRnZSwgcHJvcGVydHlHUFIpOworCisgICAgICAgICAgICB1c2VDaGlsZHJl
bihub2RlKTsKKworICAgICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAgICAgICAgICAgIGNh
bGxPcGVyYXRpb24ob3BlcmF0aW9uRGVmaW5lRGF0YVByb3BlcnR5U3RyaW5nLCBOb1Jlc3VsdCwg
YmFzZUdQUiwgcHJvcGVydHlHUFIsIHZhbHVlR1BSLCBhdHRyaWJ1dGVzKTsKKyAgICAgICAgICAg
IG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
ICAgICAgICBjYXNlIFN0cmluZ0lkZW50VXNlOiB7CisgICAgICAgICAgICBTcGVjdWxhdGVDZWxs
T3BlcmFuZCBwcm9wZXJ0eSh0aGlzLCBwcm9wZXJ0eUVkZ2UpOworICAgICAgICAgICAgR1BSVGVt
cG9yYXJ5IGlkZW50KHRoaXMpOworCisgICAgICAgICAgICBHUFJSZWcgcHJvcGVydHlHUFIgPSBw
cm9wZXJ0eS5ncHIoKTsKKyAgICAgICAgICAgIEdQUlJlZyBpZGVudEdQUiA9IGlkZW50Lmdwcigp
OworCisgICAgICAgICAgICBzcGVjdWxhdGVTdHJpbmcocHJvcGVydHlFZGdlLCBwcm9wZXJ0eUdQ
Uik7CisgICAgICAgICAgICBzcGVjdWxhdGVTdHJpbmdJZGVudEFuZExvYWRTdG9yYWdlKHByb3Bl
cnR5RWRnZSwgcHJvcGVydHlHUFIsIGlkZW50R1BSKTsKKworICAgICAgICAgICAgdXNlQ2hpbGRy
ZW4obm9kZSk7CisKKyAgICAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CisgICAgICAgICAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlZmluZURhdGFQcm9wZXJ0eVN0cmluZ0lkZW50LCBOb1Jl
c3VsdCwgYmFzZUdQUiwgaWRlbnRHUFIsIHZhbHVlR1BSLCBhdHRyaWJ1dGVzKTsKKyAgICAgICAg
ICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorICAgICAgICBjYXNlIFN5bWJvbFVzZTogeworICAgICAgICAgICAgU3BlY3VsYXRlQ2VsbE9w
ZXJhbmQgcHJvcGVydHkodGhpcywgcHJvcGVydHlFZGdlKTsKKyAgICAgICAgICAgIEdQUlJlZyBw
cm9wZXJ0eUdQUiA9IHByb3BlcnR5LmdwcigpOworICAgICAgICAgICAgc3BlY3VsYXRlU3ltYm9s
KHByb3BlcnR5RWRnZSwgcHJvcGVydHlHUFIpOworCisgICAgICAgICAgICB1c2VDaGlsZHJlbihu
b2RlKTsKKworICAgICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAgICAgICAgICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uRGVmaW5lRGF0YVByb3BlcnR5U3ltYm9sLCBOb1Jlc3VsdCwgYmFz
ZUdQUiwgcHJvcGVydHlHUFIsIHZhbHVlR1BSLCBhdHRyaWJ1dGVzKTsKKyAgICAgICAgICAgIG1f
aml0LmV4Y2VwdGlvbkNoZWNrKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAg
ICAgICBjYXNlIFVudHlwZWRVc2U6IHsKKyAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHByb3Bl
cnR5KHRoaXMsIHByb3BlcnR5RWRnZSk7CisgICAgICAgICAgICBKU1ZhbHVlUmVncyBwcm9wZXJ0
eUdQUiA9IHByb3BlcnR5LmdwcigpOworCisgICAgICAgICAgICB1c2VDaGlsZHJlbihub2RlKTsK
KworICAgICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAgICAgICAgICAgIGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uRGVmaW5lRGF0YVByb3BlcnR5LCBOb1Jlc3VsdCwgYmFzZUdQUiwgcHJvcGVy
dHlHUFIsIHZhbHVlR1BSLCBhdHRyaWJ1dGVzKTsKKyAgICAgICAgICAgIG1faml0LmV4Y2VwdGlv
bkNoZWNrKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQor
ICAgIH07CisKKyAgICBFZGdlJiBhdHRyaWJ1dGVzRWRnZSA9IG1faml0LmdyYXBoKCkudmFyQXJn
Q2hpbGQobm9kZSwgMyk7CisgICAgaWYgKGF0dHJpYnV0ZXNFZGdlLT5oYXNDb25zdGFudCgpKQor
ICAgICAgICBjb21waWxlV2l0aEF0dHJpYnV0ZShhdHRyaWJ1dGVzRWRnZS0+YXNJbnQzMigpKTsK
KyAgICBlbHNlIHsKKyAgICAgICAgU3BlY3VsYXRlSW50MzJPcGVyYW5kIGF0dHJpYnV0ZXModGhp
cywgYXR0cmlidXRlc0VkZ2UpOworICAgICAgICBHUFJSZWcgYXR0cmlidXRlc0dQUiA9IGF0dHJp
YnV0ZXMuZ3ByKCk7CisKKyAgICAgICAgY29tcGlsZVdpdGhBdHRyaWJ1dGUoYXR0cmlidXRlc0dQ
Uik7CisgICAgfQorCisgICAgbm9SZXN1bHQobm9kZSwgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNp
dGx5KTsKK30KKwordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlZmluZUFjY2Vzc29yUHJv
cGVydHkoTm9kZSogbm9kZSkKK3sKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIHN0YXRpY19hc3Nl
cnQoR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMgPj0gNSwgIldlIGFyZSBhc3N1bWluZyB3ZSBo
YXZlIGVub3VnaCByZWdpc3RlcnMgdG8gbWFrZSB0aGlzIGNhbGwgd2l0aG91dCBpbmNyZW1lbnRh
bGx5IHNldHRpbmcgdXAgdGhlIGFyZ3VtZW50cy4iKTsKKyNlbHNlCisgICAgc3RhdGljX2Fzc2Vy
dChHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycyA+PSA2LCAiV2UgYXJlIGFzc3VtaW5nIHdlIGhh
dmUgZW5vdWdoIHJlZ2lzdGVycyB0byBtYWtlIHRoaXMgY2FsbCB3aXRob3V0IGluY3JlbWVudGFs
bHkgc2V0dGluZyB1cCB0aGUgYXJndW1lbnRzLiIpOworI2VuZGlmCisKKyAgICBhdXRvIGNvbXBp
bGVXaXRoQXR0cmlidXRlcyA9IFsmXShhdXRvIGF0dHJpYnV0ZXMpIHsKKyAgICAgICAgU3BlY3Vs
YXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBtX2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUs
IDApKTsKKyAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOworCisgICAgICAgIFNw
ZWN1bGF0ZUNlbGxPcGVyYW5kIGdldHRlcih0aGlzLCBtX2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxk
KG5vZGUsIDIpKTsKKyAgICAgICAgR1BSUmVnIGdldHRlckdQUiA9IGdldHRlci5ncHIoKTsKKwor
ICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBzZXR0ZXIodGhpcywgbV9qaXQuZ3JhcGgoKS52
YXJBcmdDaGlsZChub2RlLCAzKSk7CisgICAgICAgIEdQUlJlZyBzZXR0ZXJHUFIgPSBzZXR0ZXIu
Z3ByKCk7CisKKyAgICAgICAgRWRnZSYgcHJvcGVydHlFZGdlID0gbV9qaXQuZ3JhcGgoKS52YXJB
cmdDaGlsZChub2RlLCAxKTsKKyAgICAgICAgc3dpdGNoIChwcm9wZXJ0eUVkZ2UudXNlS2luZCgp
KSB7CisgICAgICAgIGNhc2UgU3RyaW5nVXNlOiB7CisgICAgICAgICAgICBTcGVjdWxhdGVDZWxs
T3BlcmFuZCBwcm9wZXJ0eSh0aGlzLCBwcm9wZXJ0eUVkZ2UpOworICAgICAgICAgICAgR1BSUmVn
IHByb3BlcnR5R1BSID0gcHJvcGVydHkuZ3ByKCk7CisgICAgICAgICAgICBzcGVjdWxhdGVTdHJp
bmcocHJvcGVydHlFZGdlLCBwcm9wZXJ0eUdQUik7CisKKyAgICAgICAgICAgIHVzZUNoaWxkcmVu
KG5vZGUpOworCisgICAgICAgICAgICBmbHVzaFJlZ2lzdGVycygpOworICAgICAgICAgICAgY2Fs
bE9wZXJhdGlvbihvcGVyYXRpb25EZWZpbmVBY2Nlc3NvclByb3BlcnR5U3RyaW5nLCBOb1Jlc3Vs
dCwgYmFzZUdQUiwgcHJvcGVydHlHUFIsIGdldHRlckdQUiwgc2V0dGVyR1BSLCBhdHRyaWJ1dGVz
KTsKKyAgICAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFN0cmluZ0lkZW50VXNlOiB7CisgICAgICAgICAg
ICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBwcm9wZXJ0eSh0aGlzLCBwcm9wZXJ0eUVkZ2UpOworICAg
ICAgICAgICAgR1BSVGVtcG9yYXJ5IGlkZW50KHRoaXMpOworCisgICAgICAgICAgICBHUFJSZWcg
cHJvcGVydHlHUFIgPSBwcm9wZXJ0eS5ncHIoKTsKKyAgICAgICAgICAgIEdQUlJlZyBpZGVudEdQ
UiA9IGlkZW50LmdwcigpOworCisgICAgICAgICAgICBzcGVjdWxhdGVTdHJpbmcocHJvcGVydHlF
ZGdlLCBwcm9wZXJ0eUdQUik7CisgICAgICAgICAgICBzcGVjdWxhdGVTdHJpbmdJZGVudEFuZExv
YWRTdG9yYWdlKHByb3BlcnR5RWRnZSwgcHJvcGVydHlHUFIsIGlkZW50R1BSKTsKKworICAgICAg
ICAgICAgdXNlQ2hpbGRyZW4obm9kZSk7CisKKyAgICAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7
CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlZmluZUFjY2Vzc29yUHJvcGVy
dHlTdHJpbmdJZGVudCwgTm9SZXN1bHQsIGJhc2VHUFIsIGlkZW50R1BSLCBnZXR0ZXJHUFIsIHNl
dHRlckdQUiwgYXR0cmlidXRlcyk7CisgICAgICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBTeW1ib2xVc2U6
IHsKKyAgICAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHByb3BlcnR5KHRoaXMsIHByb3Bl
cnR5RWRnZSk7CisgICAgICAgICAgICBHUFJSZWcgcHJvcGVydHlHUFIgPSBwcm9wZXJ0eS5ncHIo
KTsKKyAgICAgICAgICAgIHNwZWN1bGF0ZVN5bWJvbChwcm9wZXJ0eUVkZ2UsIHByb3BlcnR5R1BS
KTsKKworICAgICAgICAgICAgdXNlQ2hpbGRyZW4obm9kZSk7CisKKyAgICAgICAgICAgIGZsdXNo
UmVnaXN0ZXJzKCk7CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlZmluZUFj
Y2Vzc29yUHJvcGVydHlTeW1ib2wsIE5vUmVzdWx0LCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgZ2V0
dGVyR1BSLCBzZXR0ZXJHUFIsIGF0dHJpYnV0ZXMpOworICAgICAgICAgICAgbV9qaXQuZXhjZXB0
aW9uQ2hlY2soKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2Ug
VW50eXBlZFVzZTogeworICAgICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgcHJvcGVydHkodGhpcywg
cHJvcGVydHlFZGdlKTsKKyAgICAgICAgICAgIEpTVmFsdWVSZWdzIHByb3BlcnR5R1BSID0gcHJv
cGVydHkuanNWYWx1ZVJlZ3MoKTsKKworICAgICAgICAgICAgdXNlQ2hpbGRyZW4obm9kZSk7CisK
KyAgICAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9u
KG9wZXJhdGlvbkRlZmluZUFjY2Vzc29yUHJvcGVydHksIE5vUmVzdWx0LCBiYXNlR1BSLCBwcm9w
ZXJ0eUdQUiwgZ2V0dGVyR1BSLCBzZXR0ZXJHUFIsIGF0dHJpYnV0ZXMpOworICAgICAgICAgICAg
bV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9Cisg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICB9CisgICAgfTsKKworICAgIEVkZ2UmIGF0dHJpYnV0ZXNFZGdlID0gbV9qaXQu
Z3JhcGgoKS52YXJBcmdDaGlsZChub2RlLCA0KTsKKyAgICBpZiAoYXR0cmlidXRlc0VkZ2UtPmhh
c0NvbnN0YW50KCkpCisgICAgICAgIGNvbXBpbGVXaXRoQXR0cmlidXRlcyhhdHRyaWJ1dGVzRWRn
ZS0+YXNJbnQzMigpKTsKKyAgICBlbHNlIHsKKyAgICAgICAgU3BlY3VsYXRlSW50MzJPcGVyYW5k
IGF0dHJpYnV0ZXModGhpcywgYXR0cmlidXRlc0VkZ2UpOworICAgICAgICBHUFJSZWcgYXR0cmli
dXRlc0dQUiA9IGF0dHJpYnV0ZXMuZ3ByKCk7CisKKyAgICAgICAgY29tcGlsZVdpdGhBdHRyaWJ1
dGVzKGF0dHJpYnV0ZXNHUFIpOworICAgIH0KKworICAgIG5vUmVzdWx0KG5vZGUsIFVzZUNoaWxk
cmVuQ2FsbGVkRXhwbGljaXRseSk7Cit9CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKIAog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgK
aW5kZXggZTdhMjliNDMzNDZiMjQ4MjNhOTk4OWZlZTk1ZDY0MDVjMzE4ZGE3My4uMDA5OTIyZGRh
NmM3ZTNlNDE2ZGZlNDNkOGY1MmRlN2QyNTViOThkNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaApAQCAtMTM0NCw2ICsxMzQ0LDg2IEBAIGNsYXNz
IFNwZWN1bGF0aXZlSklUIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0
YXRlKGFyZzEsIGFyZzIsIGFyZzMsIGFyZzQpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChv
cGVyYXRpb24pOwogICAgIH0KKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZf
SklUT3BlcmF0aW9uX0VPSkpaIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEpTVmFsdWVSZWdzIGFy
ZzIsIEpTVmFsdWVSZWdzIGFyZzMsIEdQUlJlZyBhcmc0KQorICAgIHsKKyAgICAgICAgbV9qaXQu
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIucGF5bG9hZEdQUigpLCBhcmcz
LnBheWxvYWRHUFIoKSwgYXJnNCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlv
bik7CisgICAgfQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVy
YXRpb25fRU9Kc3NKWiBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgSlNWYWx1
ZVJlZ3MgYXJnMywgR1BSUmVnIGFyZzQpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMy5wYXlsb2FkR1BSKCksIGFyZzQpOwor
ICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOworICAgIH0KKyAgICBKSVRDb21w
aWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VPSUpaIG9wZXJhdGlvbiwg
R1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBKU1ZhbHVlUmVncyBhcmczLCBHUFJSZWcgYXJnNCkK
KyAgICB7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBh
cmcyLCBhcmczLnBheWxvYWRHUFIoKSwgYXJnNCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxs
KG9wZXJhdGlvbik7CisgICAgfQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24o
Vl9KSVRPcGVyYXRpb25fRU9TeW1KWiBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJn
MiwgSlNWYWx1ZVJlZ3MgYXJnMywgR1BSUmVnIGFyZzQpCisgICAgeworICAgICAgICBtX2ppdC5z
ZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMy5wYXlsb2FkR1BSKCks
IGFyZzQpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOworICAgIH0KKyAg
ICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VPSkpaIG9w
ZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEpTVmFsdWVSZWdzIGFyZzIsIEpTVmFsdWVSZWdzIGFyZzMs
IGludDMyX3QgYXJnNCkKKyAgICB7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4
ZWNTdGF0ZShhcmcxLCBhcmcyLnBheWxvYWRHUFIoKSwgYXJnMy5wYXlsb2FkR1BSKCksIFRydXN0
ZWRJbW0zMihhcmc0KSk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7Cisg
ICAgfQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25f
RU9Kc3NKWiBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgSlNWYWx1ZVJlZ3Mg
YXJnMywgaW50MzJfdCBhcmc0KQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNX
aXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMucGF5bG9hZEdQUigpLCBUcnVzdGVkSW1tMzIo
YXJnNCkpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOworICAgIH0KKyAg
ICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VPSUpaIG9w
ZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBKU1ZhbHVlUmVncyBhcmczLCBpbnQz
Ml90IGFyZzQpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoYXJnMSwgYXJnMiwgYXJnMy5wYXlsb2FkR1BSKCksIFRydXN0ZWRJbW0zMihhcmc0KSk7Cisg
ICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CisgICAgfQorICAgIEpJVENvbXBp
bGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRU9TeW1KWiBvcGVyYXRpb24s
IEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgSlNWYWx1ZVJlZ3MgYXJnMywgaW50MzJfdCBhcmc0
KQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEs
IGFyZzIsIGFyZzMucGF5bG9hZEdQUigpLCBUcnVzdGVkSW1tMzIoYXJnNCkpOworICAgICAgICBy
ZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOworICAgIH0KKyAgICBKSVRDb21waWxlcjo6Q2Fs
bCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VPSk9PWiBvcGVyYXRpb24sIEdQUlJlZyBh
cmcxLCBKU1ZhbHVlUmVncyBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVnIGFyZzQsIEdQUlJlZyBh
cmc1KQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFy
ZzEsIGFyZzIucGF5bG9hZEdQUigpLCBhcmczLCBhcmc0LCBhcmc1KTsKKyAgICAgICAgcmV0dXJu
IGFwcGVuZENhbGwob3BlcmF0aW9uKTsKKyAgICB9CisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2Fs
bE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FT0pzc09PWiBvcGVyYXRpb24sIEdQUlJlZyBhcmcx
LCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMsIEdQUlJlZyBhcmc0LCBHUFJSZWcgYXJnNSkKKyAg
ICB7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcy
LCBhcmczLCBhcmc0LCBhcmc1KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9u
KTsKKyAgICB9CisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJh
dGlvbl9FT0lPT1ogb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBh
cmczLCBHUFJSZWcgYXJnNCwgR1BSUmVnIGFyZzUpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMywgYXJnNCwgYXJnNSk7Cisg
ICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CisgICAgfQorICAgIEpJVENvbXBp
bGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRU9TeW1PT1ogb3BlcmF0aW9u
LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcgYXJnNCwgR1BS
UmVnIGFyZzUpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoYXJnMSwgYXJnMiwgYXJnMywgYXJnNCwgYXJnNSk7CisgICAgICAgIHJldHVybiBhcHBlbmRD
YWxsKG9wZXJhdGlvbik7CisgICAgfQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRp
b24oVl9KSVRPcGVyYXRpb25fRU9KT09aIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEpTVmFsdWVS
ZWdzIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcgYXJnNCwgaW50MzJfdCBhcmc1KQorICAgIHsK
KyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIucGF5
bG9hZEdQUigpLCBhcmczLCBhcmc0LCBUcnVzdGVkSW1tMzIoYXJnNSkpOworICAgICAgICByZXR1
cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOworICAgIH0KKyAgICBKSVRDb21waWxlcjo6Q2FsbCBj
YWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VPSnNzT09aIG9wZXJhdGlvbiwgR1BSUmVnIGFy
ZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVnIGFyZzQsIGludDMyX3QgYXJnNSkK
KyAgICB7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBh
cmcyLCBhcmczLCBhcmc0LCBUcnVzdGVkSW1tMzIoYXJnNSkpOworICAgICAgICByZXR1cm4gYXBw
ZW5kQ2FsbChvcGVyYXRpb24pOworICAgIH0KKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3Bl
cmF0aW9uKFZfSklUT3BlcmF0aW9uX0VPSU9PWiBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBHUFJS
ZWcgYXJnMiwgR1BSUmVnIGFyZzMsIEdQUlJlZyBhcmc0LCBpbnQzMl90IGFyZzUpCisgICAgewor
ICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJn
MywgYXJnNCwgVHJ1c3RlZEltbTMyKGFyZzUpKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGwo
b3BlcmF0aW9uKTsKKyAgICB9CisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihW
X0pJVE9wZXJhdGlvbl9FT1N5bU9PWiBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJn
MiwgR1BSUmVnIGFyZzMsIEdQUlJlZyBhcmc0LCBpbnQzMl90IGFyZzUpCisgICAgeworICAgICAg
ICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMywgYXJn
NCwgVHJ1c3RlZEltbTMyKGFyZzUpKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0
aW9uKTsKKyAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9w
ZXJhdGlvbl9FT0pJVWkgb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIFVuaXF1
ZWRTdHJpbmdJbXBsKiBpbXBsLCB1bnNpZ25lZCB2YWx1ZSkKICAgICB7CiAgICAgICAgIG1faml0
LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBUcnVzdGVkSW1tUHRyKGlt
cGwpLCBUcnVzdGVkSW1tMzIodmFsdWUpKTsKQEAgLTE3ODgsNyArMTg2OCw4NiBAQCBjbGFzcyBT
cGVjdWxhdGl2ZUpJVCB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShFQUJJXzMyQklUX0RVTU1ZX0FSRyBhcmcxLnBheWxvYWRHUFIoKSwgYXJnMS50YWdHUFIoKSwg
YXJnMi5wYXlsb2FkR1BSKCksIGFyZzIudGFnR1BSKCksIGFyZzMucGF5bG9hZEdQUigpLCBhcmcz
LnRhZ0dQUigpLCBhcmc0LnBheWxvYWRHUFIoKSwgYXJnNC50YWdHUFIoKSk7CiAgICAgICAgIHJl
dHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CiAgICAgfQotCisgICAgSklUQ29tcGlsZXI6OkNh
bGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FT0pKWiBvcGVyYXRpb24sIEdQUlJlZyBh
cmcxLCBKU1ZhbHVlUmVncyBhcmcyLCBKU1ZhbHVlUmVncyBhcmczLCBHUFJSZWcgYXJnNCkKKyAg
ICB7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcy
LnBheWxvYWRHUFIoKSwgYXJnMi50YWdHUFIoKSwgYXJnMy5wYXlsb2FkR1BSKCksIGFyZzMudGFn
R1BSKCksIGFyZzQpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOworICAg
IH0KKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VP
SnNzSlogb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEpTVmFsdWVSZWdzIGFy
ZzMsIEdQUlJlZyBhcmc0KQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKGFyZzEsIGFyZzIsIEVBQklfMzJCSVRfRFVNTVlfQVJHIGFyZzMucGF5bG9hZEdQ
UigpLCBhcmczLnRhZ0dQUigpLCBhcmc0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGwob3Bl
cmF0aW9uKTsKKyAgICB9CisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJ
VE9wZXJhdGlvbl9FT0lKWiBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgSlNW
YWx1ZVJlZ3MgYXJnMywgR1BSUmVnIGFyZzQpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFy
Z3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgRUFCSV8zMkJJVF9EVU1NWV9BUkcgYXJn
My5wYXlsb2FkR1BSKCksIGFyZzMudGFnR1BSKCksIGFyZzQpOworICAgICAgICByZXR1cm4gYXBw
ZW5kQ2FsbChvcGVyYXRpb24pOworICAgIH0KKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3Bl
cmF0aW9uKFZfSklUT3BlcmF0aW9uX0VPU3ltSlogb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgR1BS
UmVnIGFyZzIsIEpTVmFsdWVSZWdzIGFyZzMsIEdQUlJlZyBhcmc0KQorICAgIHsKKyAgICAgICAg
bV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIEVBQklfMzJCSVRf
RFVNTVlfQVJHIGFyZzMucGF5bG9hZEdQUigpLCBhcmczLnRhZ0dQUigpLCBhcmc0KTsKKyAgICAg
ICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKKyAgICB9CisgICAgSklUQ29tcGlsZXI6
OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FT0pKWiBvcGVyYXRpb24sIEdQUlJl
ZyBhcmcxLCBKU1ZhbHVlUmVncyBhcmcyLCBKU1ZhbHVlUmVncyBhcmczLCBpbnQzMl90IGFyZzQp
CisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwg
YXJnMi5wYXlsb2FkR1BSKCksIGFyZzIudGFnR1BSKCksIGFyZzMucGF5bG9hZEdQUigpLCBhcmcz
LnRhZ0dQUigpLCBUcnVzdGVkSW1tMzIoYXJnNCkpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2Fs
bChvcGVyYXRpb24pOworICAgIH0KKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9u
KFZfSklUT3BlcmF0aW9uX0VPSnNzSlogb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFy
ZzIsIEpTVmFsdWVSZWdzIGFyZzMsIGludDMyX3QgYXJnNCkKKyAgICB7CisgICAgICAgIG1faml0
LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBFQUJJXzMyQklUX0RVTU1Z
X0FSRyBhcmczLnBheWxvYWRHUFIoKSwgYXJnMy50YWdHUFIoKSwgVHJ1c3RlZEltbTMyKGFyZzQp
KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKKyAgICB9CisgICAgSklU
Q29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FT0lKWiBvcGVyYXRp
b24sIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgSlNWYWx1ZVJlZ3MgYXJnMywgaW50MzJfdCBh
cmc0KQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFy
ZzEsIGFyZzIsIEVBQklfMzJCSVRfRFVNTVlfQVJHIGFyZzMucGF5bG9hZEdQUigpLCBhcmczLnRh
Z0dQUigpLCBUcnVzdGVkSW1tMzIoYXJnNCkpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChv
cGVyYXRpb24pOworICAgIH0KKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZf
SklUT3BlcmF0aW9uX0VPU3ltSlogb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIs
IEpTVmFsdWVSZWdzIGFyZzMsIGludDMyX3QgYXJnNCkKKyAgICB7CisgICAgICAgIG1faml0LnNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBFQUJJXzMyQklUX0RVTU1ZX0FS
RyBhcmczLnBheWxvYWRHUFIoKSwgYXJnMy50YWdHUFIoKSwgVHJ1c3RlZEltbTMyKGFyZzQpKTsK
KyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKKyAgICB9CisgICAgSklUQ29t
cGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FT0pPT1ogb3BlcmF0aW9u
LCBHUFJSZWcgYXJnMSwgSlNWYWx1ZVJlZ3MgYXJnMiwgR1BSUmVnIGFyZzMsIEdQUlJlZyBhcmc0
LCBHUFJSZWcgYXJnNSkKKyAgICB7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4
ZWNTdGF0ZShhcmcxLCBhcmcyLnBheWxvYWRHUFIoKSwgYXJnMi50YWdHUFIoKSwgYXJnMywgYXJn
NCwgYXJnNSk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CisgICAgfQor
ICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRU9Kc3NP
T1ogb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJS
ZWcgYXJnNCwgR1BSUmVnIGFyZzUpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMywgYXJnNCwgYXJnNSk7CisgICAgICAgIHJl
dHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CisgICAgfQorICAgIEpJVENvbXBpbGVyOjpDYWxs
IGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRU9JT09aIG9wZXJhdGlvbiwgR1BSUmVnIGFy
ZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVnIGFyZzQsIEdQUlJlZyBhcmc1KQor
ICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFy
ZzIsIGFyZzMsIGFyZzQsIGFyZzUpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRp
b24pOworICAgIH0KKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3Bl
cmF0aW9uX0VPU3ltT09aIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJS
ZWcgYXJnMywgR1BSUmVnIGFyZzQsIEdQUlJlZyBhcmc1KQorICAgIHsKKyAgICAgICAgbV9qaXQu
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMsIGFyZzQsIGFyZzUp
OworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOworICAgIH0KKyAgICBKSVRD
b21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VPSk9PWiBvcGVyYXRp
b24sIEdQUlJlZyBhcmcxLCBKU1ZhbHVlUmVncyBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVnIGFy
ZzQsIGludDMyX3QgYXJnNSkKKyAgICB7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLnBheWxvYWRHUFIoKSwgYXJnMi50YWdHUFIoKSwgYXJnMywg
YXJnNCwgVHJ1c3RlZEltbTMyKGFyZzUpKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGwob3Bl
cmF0aW9uKTsKKyAgICB9CisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJ
VE9wZXJhdGlvbl9FT0pzc09PWiBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwg
R1BSUmVnIGFyZzMsIEdQUlJlZyBhcmc0LCBpbnQzMl90IGFyZzUpCisgICAgeworICAgICAgICBt
X2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMywgYXJnNCwg
VHJ1c3RlZEltbTMyKGFyZzUpKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9u
KTsKKyAgICB9CisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJh
dGlvbl9FT0lPT1ogb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBh
cmczLCBHUFJSZWcgYXJnNCwgaW50MzJfdCBhcmc1KQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMsIGFyZzQsIFRydXN0ZWRJ
bW0zMihhcmc1KSk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CisgICAg
fQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRU9T
eW1PT1ogb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBH
UFJSZWcgYXJnNCwgaW50MzJfdCBhcmc1KQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1
bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMsIGFyZzQsIFRydXN0ZWRJbW0zMihh
cmc1KSk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CisgICAgfQogICAg
IEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRU9KSVVpIG9w
ZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEpTVmFsdWVSZWdzIGFyZzIsIFVuaXF1ZWRTdHJpbmdJbXBs
KiBpbXBsLCB1bnNpZ25lZCB2YWx1ZSkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLnBheWxvYWRHUFIoKSwgYXJnMi50YWdHUFIoKSwg
VHJ1c3RlZEltbVB0cihpbXBsKSwgVHJ1c3RlZEltbTMyKHZhbHVlKSk7CkBAIC0yNTc5LDYgKzI3
MzgsOCBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVCB7CiAgICAgdm9pZCBjb21waWxlR2V0RHluYW1p
Y1ZhcihOb2RlKik7CiAgICAgdm9pZCBjb21waWxlUHV0RHluYW1pY1ZhcihOb2RlKik7CiAgICAg
dm9pZCBjb21waWxlQ29tcGFyZUVxUHRyKE5vZGUqKTsKKyAgICB2b2lkIGNvbXBpbGVEZWZpbmVE
YXRhUHJvcGVydHkoTm9kZSopOworICAgIHZvaWQgY29tcGlsZURlZmluZUFjY2Vzc29yUHJvcGVy
dHkoTm9kZSopOwogCiAgICAgdm9pZCBtb3ZlVHJ1ZVRvKEdQUlJlZyk7CiAgICAgdm9pZCBtb3Zl
RmFsc2VUbyhHUFJSZWcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKaW5kZXggYTIyZGJlYWRlNzEwOGY3NTU5NjY2YjkzZjlh
ZWM3ZWY1MGMxMzk1Yi4uYWE3OGIwZTY5ZTRiZWI4NWUyZTIxNmM4ZWY1NTllYTFmNzNhYWQ5YyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMy
XzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwCkBAIC00NDkxLDYgKzQ0OTEsMTYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIERlZmlu
ZURhdGFQcm9wZXJ0eTogeworICAgICAgICBjb21waWxlRGVmaW5lRGF0YVByb3BlcnR5KG5vZGUp
OworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBjYXNlIERlZmluZUFjY2Vzc29yUHJvcGVy
dHk6IHsKKyAgICAgICAgY29tcGlsZURlZmluZUFjY2Vzc29yUHJvcGVydHkobm9kZSk7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgR2V0R2xvYmFsTGV4aWNhbFZhcmlhYmxlOgog
ICAgIGNhc2UgR2V0R2xvYmFsVmFyOiB7CiAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHRQYXls
b2FkKHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQ2NC5jcHAKaW5kZXggOGNkNWQ3MTM4ZjA3Y2RkZGMyYzJlNzBkNmY2ZGYzYzFmYjFhZGI2
ZS4uNzIxMDkyNTIzZWIzN2ZhY2NmMjI2OGRiYmZlN2YxOTRlMzMyNTAwMyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC00NDQ5
LDYgKzQ0NDksMTYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQog
ICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIERlZmluZURhdGFQcm9wZXJ0eTogewor
ICAgICAgICBjb21waWxlRGVmaW5lRGF0YVByb3BlcnR5KG5vZGUpOworICAgICAgICBicmVhazsK
KyAgICB9CisKKyAgICBjYXNlIERlZmluZUFjY2Vzc29yUHJvcGVydHk6IHsKKyAgICAgICAgY29t
cGlsZURlZmluZUFjY2Vzc29yUHJvcGVydHkobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0K
KwogICAgIGNhc2UgR2V0R2xvYmFsTGV4aWNhbFZhcmlhYmxlOgogICAgIGNhc2UgR2V0R2xvYmFs
VmFyOiB7CiAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKaW5kZXggY2FkNDVmZGJhYmU5MGY0
NDkzNGQxNGE0YmUzYmQxMGZjODI3NjQ0OS4uYTFjZjgwODg1MjNiZGQzN2NiMjBkZjA4MWI0YTAx
ZGQxYWJjMGQ2NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBh
YmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0
aWVzLmNwcApAQCAtMjYyLDYgKzI2Miw4IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29t
cGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgQ29tcGFyZUdyZWF0ZXI6CiAgICAgY2FzZSBDb21w
YXJlR3JlYXRlckVxOgogICAgIGNhc2UgQ29tcGFyZVN0cmljdEVxOgorICAgIGNhc2UgRGVmaW5l
RGF0YVByb3BlcnR5OgorICAgIGNhc2UgRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eToKICAgICAgICAg
Ly8gVGhlc2UgYXJlIE9LLgogICAgICAgICBicmVhazsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDlmODg1Yjg3MTM4MzkyMGI5YmQ0ZjM4
NWU5OTIyNDcyZjlmMjMwNmYuLjFmZjEwMzgyYTJlNGI0NWZiODkzNjAxYmE4MzMxNzdmNjg5YjA1
ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0Iz
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAK
QEAgLTY5MCw2ICs2OTAsMTIgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgY2FzZSBQ
dXRCeVZhbFdpdGhUaGlzOgogICAgICAgICAgICAgY29tcGlsZVB1dEJ5VmFsV2l0aFRoaXMoKTsK
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERlZmluZURhdGFQcm9wZXJ0eToKKyAg
ICAgICAgICAgIGNvbXBpbGVEZWZpbmVEYXRhUHJvcGVydHkoKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIERlZmluZUFjY2Vzc29yUHJvcGVydHk6CisgICAgICAgICAgICBjb21w
aWxlRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eSgpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IGNhc2UgQXJyYXlQdXNoOgogICAgICAgICAgICAgY29tcGlsZUFycmF5UHVzaCgpOwogICAgICAg
ICAgICAgYnJlYWs7CkBAIC0yNzYxLDYgKzI3NjcsNzEgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsK
ICAgICAgICAgdm1DYWxsKFZvaWQsIG1fb3V0Lm9wZXJhdGlvbihtX2dyYXBoLmlzU3RyaWN0TW9k
ZUZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYykgPyBvcGVyYXRpb25QdXRCeVZhbFdpdGhUaGlz
U3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxXaXRoVGhpcyksCiAgICAgICAgICAgICBtX2NhbGxG
cmFtZSwgYmFzZSwgdGhpc1ZhbHVlLCBwcm9wZXJ0eSwgdmFsdWUpOwogICAgIH0KKworICAgIHZv
aWQgY29tcGlsZURlZmluZURhdGFQcm9wZXJ0eSgpCisgICAgeworICAgICAgICBMVmFsdWUgYmFz
ZSA9IGxvd0NlbGwobV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDApKTsKKyAgICAgICAgTFZh
bHVlIHZhbHVlICA9IGxvd0pTVmFsdWUobV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDIpKTsK
KyAgICAgICAgTFZhbHVlIGF0dHJpYnV0ZXMgPSBsb3dJbnQzMihtX2dyYXBoLnZhckFyZ0NoaWxk
KG1fbm9kZSwgMykpOworICAgICAgICBFZGdlJiBwcm9wZXJ0eUVkZ2UgPSBtX2dyYXBoLnZhckFy
Z0NoaWxkKG1fbm9kZSwgMSk7CisgICAgICAgIHN3aXRjaCAocHJvcGVydHlFZGdlLnVzZUtpbmQo
KSkgeworICAgICAgICBjYXNlIFN0cmluZ1VzZTogeworICAgICAgICAgICAgTFZhbHVlIHByb3Bl
cnR5ID0gbG93U3RyaW5nKHByb3BlcnR5RWRnZSk7CisgICAgICAgICAgICB2bUNhbGwoVm9pZCwg
bV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkRlZmluZURhdGFQcm9wZXJ0eVN0cmluZyksIG1fY2Fs
bEZyYW1lLCBiYXNlLCBwcm9wZXJ0eSwgdmFsdWUsIGF0dHJpYnV0ZXMpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBTdHJpbmdJZGVudFVzZTogeworICAgICAg
ICAgICAgTFZhbHVlIHByb3BlcnR5ID0gbG93U3RyaW5nSWRlbnQocHJvcGVydHlFZGdlKTsKKyAg
ICAgICAgICAgIHZtQ2FsbChWb2lkLCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uRGVmaW5lRGF0
YVByb3BlcnR5U3RyaW5nSWRlbnQpLCBtX2NhbGxGcmFtZSwgYmFzZSwgcHJvcGVydHksIHZhbHVl
LCBhdHRyaWJ1dGVzKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNh
c2UgU3ltYm9sVXNlOiB7CisgICAgICAgICAgICBMVmFsdWUgcHJvcGVydHkgPSBsb3dTeW1ib2wo
cHJvcGVydHlFZGdlKTsKKyAgICAgICAgICAgIHZtQ2FsbChWb2lkLCBtX291dC5vcGVyYXRpb24o
b3BlcmF0aW9uRGVmaW5lRGF0YVByb3BlcnR5U3ltYm9sKSwgbV9jYWxsRnJhbWUsIGJhc2UsIHBy
b3BlcnR5LCB2YWx1ZSwgYXR0cmlidXRlcyk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorICAgICAgICBjYXNlIFVudHlwZWRVc2U6IHsKKyAgICAgICAgICAgIExWYWx1ZSBwcm9wZXJ0
eSA9IGxvd0pTVmFsdWUocHJvcGVydHlFZGdlKTsKKyAgICAgICAgICAgIHZtQ2FsbChWb2lkLCBt
X291dC5vcGVyYXRpb24ob3BlcmF0aW9uRGVmaW5lRGF0YVByb3BlcnR5KSwgbV9jYWxsRnJhbWUs
IGJhc2UsIHByb3BlcnR5LCB2YWx1ZSwgYXR0cmlidXRlcyk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgY29tcGlsZURlZmlu
ZUFjY2Vzc29yUHJvcGVydHkoKQorICAgIHsKKyAgICAgICAgTFZhbHVlIGJhc2UgPSBsb3dDZWxs
KG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCAwKSk7CisgICAgICAgIExWYWx1ZSBnZXR0ZXIg
PSBsb3dDZWxsKG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCAyKSk7CisgICAgICAgIExWYWx1
ZSBzZXR0ZXIgPSBsb3dDZWxsKG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCAzKSk7CisgICAg
ICAgIExWYWx1ZSBhdHRyaWJ1dGVzID0gbG93SW50MzIobV9ncmFwaC52YXJBcmdDaGlsZChtX25v
ZGUsIDQpKTsKKyAgICAgICAgRWRnZSYgcHJvcGVydHlFZGdlID0gbV9ncmFwaC52YXJBcmdDaGls
ZChtX25vZGUsIDEpOworICAgICAgICBzd2l0Y2ggKHByb3BlcnR5RWRnZS51c2VLaW5kKCkpIHsK
KyAgICAgICAgY2FzZSBTdHJpbmdVc2U6IHsKKyAgICAgICAgICAgIExWYWx1ZSBwcm9wZXJ0eSA9
IGxvd1N0cmluZyhwcm9wZXJ0eUVkZ2UpOworICAgICAgICAgICAgdm1DYWxsKFZvaWQsIG1fb3V0
Lm9wZXJhdGlvbihvcGVyYXRpb25EZWZpbmVBY2Nlc3NvclByb3BlcnR5U3RyaW5nKSwgbV9jYWxs
RnJhbWUsIGJhc2UsIHByb3BlcnR5LCBnZXR0ZXIsIHNldHRlciwgYXR0cmlidXRlcyk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFN0cmluZ0lkZW50VXNlOiB7
CisgICAgICAgICAgICBMVmFsdWUgcHJvcGVydHkgPSBsb3dTdHJpbmdJZGVudChwcm9wZXJ0eUVk
Z2UpOworICAgICAgICAgICAgdm1DYWxsKFZvaWQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25E
ZWZpbmVBY2Nlc3NvclByb3BlcnR5U3RyaW5nSWRlbnQpLCBtX2NhbGxGcmFtZSwgYmFzZSwgcHJv
cGVydHksIGdldHRlciwgc2V0dGVyLCBhdHRyaWJ1dGVzKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisgICAgICAgIGNhc2UgU3ltYm9sVXNlOiB7CisgICAgICAgICAgICBMVmFsdWUg
cHJvcGVydHkgPSBsb3dTeW1ib2wocHJvcGVydHlFZGdlKTsKKyAgICAgICAgICAgIHZtQ2FsbChW
b2lkLCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eVN5bWJv
bCksIG1fY2FsbEZyYW1lLCBiYXNlLCBwcm9wZXJ0eSwgZ2V0dGVyLCBzZXR0ZXIsIGF0dHJpYnV0
ZXMpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBVbnR5cGVk
VXNlOiB7CisgICAgICAgICAgICBMVmFsdWUgcHJvcGVydHkgPSBsb3dKU1ZhbHVlKHByb3BlcnR5
RWRnZSk7CisgICAgICAgICAgICB2bUNhbGwoVm9pZCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlv
bkRlZmluZUFjY2Vzc29yUHJvcGVydHkpLCBtX2NhbGxGcmFtZSwgYmFzZSwgcHJvcGVydHksIGdl
dHRlciwgc2V0dGVyLCBhdHRyaWJ1dGVzKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICB9CisgICAgfQogICAgIAogICAgIHZvaWQgY29tcGlsZVB1dEJ5SWQoKQog
ICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmNwcAppbmRleCA3
NWQxNWE2MjNjNzJjNDRhZGM0YTRiOWMxM2Y4NTg2ZjI3MjI2Yjg1Li4zYzNkZjYxOGY5OWZlYjk0
MTU0NDAwOTk4NTVkZTFmYmFmNWNiOWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0NDYWxsSGVscGVycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9D
Q2FsbEhlbHBlcnMuY3BwCkBAIC02OCwxMDcgKzY4LDYgQEAgdm9pZCBDQ2FsbEhlbHBlcnM6OmVu
c3VyZVNoYWRvd0NoaWNrZW5QYWNrZXQoR1BSUmVnIHNoYWRvd1BhY2tldCwgR1BSUmVnIHNjcmF0
Y2gKICAgICBzdG9yZVB0cihzY3JhdGNoMiwgQWRkcmVzcyhzY3JhdGNoMU5vbkFyZ0dQUikpOwog
fQogCi0jaWYgTlVNQkVSX09GX0FSR1VNRU5UX1JFR0lTVEVSUyA+PSA0Ci12b2lkIENDYWxsSGVs
cGVyczo6c2V0dXBGb3VyU3R1YkFyZ3NHUFIoR1BSUmVnIGRlc3RBLCBHUFJSZWcgZGVzdEIsIEdQ
UlJlZyBkZXN0QywgR1BSUmVnIGRlc3RELCBHUFJSZWcgc3JjQSwgR1BSUmVnIHNyY0IsIEdQUlJl
ZyBzcmNDLCBHUFJSZWcgc3JjRCkKLXsKLSAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkgewotICAg
ICAgICBSZWdpc3RlclNldCBkZXN0aW5hdGlvbnMoZGVzdEEsIGRlc3RCLCBkZXN0QywgZGVzdEQp
OwotICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGRlc3RpbmF0aW9ucy5udW1iZXJPZlNldEdQ
UnMoKSA9PSA0LCAiRGVzdGluYXRpb25zIHNob3VsZCBub3QgYmUgYWxpYXNlZC4iKTsKLSAgICB9
Ci0KLSAgICB0eXBlZGVmIHN0ZDo6cGFpcjxHUFJSZWcsIEdQUlJlZz4gUmVnUGFpcjsKLSAgICBW
ZWN0b3I8UmVnUGFpciwgND4gcGFpcnM7Ci0KLSAgICBpZiAoc3JjQSAhPSBkZXN0QSkKLSAgICAg
ICAgcGFpcnMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKHNyY0EsIGRlc3RBKSk7Ci0gICAgaWYgKHNy
Y0IgIT0gZGVzdEIpCi0gICAgICAgIHBhaXJzLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihzcmNCLCBk
ZXN0QikpOwotICAgIGlmIChzcmNDICE9IGRlc3RDKQotICAgICAgICBwYWlycy5hcHBlbmQoc3Rk
OjptYWtlX3BhaXIoc3JjQywgZGVzdEMpKTsKLSAgICBpZiAoc3JjRCAhPSBkZXN0RCkKLSAgICAg
ICAgcGFpcnMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKHNyY0QsIGRlc3REKSk7Ci0KLQotI2lmICFB
U1NFUlRfRElTQUJMRUQKLSAgICBhdXRvIG51bVVuaXF1ZVNvdXJjZXMgPSBbJl0gKCkgLT4gdW5z
aWduZWQgewotICAgICAgICBSZWdpc3RlclNldCBzZXQ7Ci0gICAgICAgIGZvciAoYXV0byYgcGFp
ciA6IHBhaXJzKSB7Ci0gICAgICAgICAgICBHUFJSZWcgc291cmNlID0gcGFpci5maXJzdDsKLSAg
ICAgICAgICAgIHNldC5zZXQoc291cmNlKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gc2V0
Lm51bWJlck9mU2V0R1BScygpOwotICAgIH07Ci0KLSAgICBhdXRvIG51bVVuaXF1ZURlc3RzID0g
WyZdICgpIC0+IHVuc2lnbmVkIHsKLSAgICAgICAgUmVnaXN0ZXJTZXQgc2V0OwotICAgICAgICBm
b3IgKGF1dG8mIHBhaXIgOiBwYWlycykgewotICAgICAgICAgICAgR1BSUmVnIGRlc3QgPSBwYWly
LnNlY29uZDsKLSAgICAgICAgICAgIHNldC5zZXQoZGVzdCk7Ci0gICAgICAgIH0KLSAgICAgICAg
cmV0dXJuIHNldC5udW1iZXJPZlNldEdQUnMoKTsKLSAgICB9OwotI2VuZGlmCi0KLSAgICB3aGls
ZSAocGFpcnMuc2l6ZSgpKSB7Ci0gICAgICAgIFJlZ2lzdGVyU2V0IGZyZWVEZXN0aW5hdGlvbnM7
Ci0gICAgICAgIGZvciAoYXV0byYgcGFpciA6IHBhaXJzKSB7Ci0gICAgICAgICAgICBHUFJSZWcg
ZGVzdCA9IHBhaXIuc2Vjb25kOwotICAgICAgICAgICAgZnJlZURlc3RpbmF0aW9ucy5zZXQoZGVz
dCk7Ci0gICAgICAgIH0KLSAgICAgICAgZm9yIChhdXRvJiBwYWlyIDogcGFpcnMpIHsKLSAgICAg
ICAgICAgIEdQUlJlZyBzb3VyY2UgPSBwYWlyLmZpcnN0OwotICAgICAgICAgICAgZnJlZURlc3Rp
bmF0aW9ucy5jbGVhcihzb3VyY2UpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGZyZWVEZXN0
aW5hdGlvbnMubnVtYmVyT2ZTZXRHUFJzKCkpIHsKLSAgICAgICAgICAgIGJvb2wgbWFkZU1vdmUg
PSBmYWxzZTsKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwYWlycy5zaXpl
KCk7IGkrKykgewotICAgICAgICAgICAgICAgIGF1dG8mIHBhaXIgPSBwYWlyc1tpXTsKLSAgICAg
ICAgICAgICAgICBHUFJSZWcgc291cmNlID0gcGFpci5maXJzdDsKLSAgICAgICAgICAgICAgICBH
UFJSZWcgZGVzdCA9IHBhaXIuc2Vjb25kOwotICAgICAgICAgICAgICAgIGlmIChmcmVlRGVzdGlu
YXRpb25zLmdldChkZXN0KSkgewotICAgICAgICAgICAgICAgICAgICBtb3ZlKHNvdXJjZSwgZGVz
dCk7Ci0gICAgICAgICAgICAgICAgICAgIHBhaXJzLnJlbW92ZShpKTsKLSAgICAgICAgICAgICAg
ICAgICAgbWFkZU1vdmUgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBBU1NFUlRfVU5VU0VEKG1h
ZGVNb3ZlLCBtYWRlTW92ZSk7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotCi0g
ICAgICAgIEFTU0VSVChudW1VbmlxdWVEZXN0cygpID09IG51bVVuaXF1ZVNvdXJjZXMoKSk7Ci0g
ICAgICAgIEFTU0VSVChudW1VbmlxdWVEZXN0cygpID09IHBhaXJzLnNpemUoKSk7Ci0gICAgICAg
IC8vIFRoZSBzZXQgb2Ygc291cmNlIGFuZCBkZXN0aW5hdGlvbiByZWdpc3RlcnMgYXJlIGVxdWl2
YWxlbnQgc2V0cy4gVGhpcyBtZWFucyB3ZSBkb24ndCBoYXZlCi0gICAgICAgIC8vIGFueSBmcmVl
IGRlc3RpbmF0aW9uIHJlZ2lzdGVycyB0aGF0IHdvbid0IGFsc28gY2xvYmJlciBhIHNvdXJjZS4g
V2UgZ2V0IGFyb3VuZCB0aGlzIGJ5Ci0gICAgICAgIC8vIGV4Y2hhbmdpbmcgcmVnaXN0ZXJzLgot
Ci0gICAgICAgIEdQUlJlZyBzb3VyY2UgPSBwYWlyc1swXS5maXJzdDsKLSAgICAgICAgR1BSUmVn
IGRlc3QgPSBwYWlyc1swXS5zZWNvbmQ7Ci0gICAgICAgIHN3YXAoc291cmNlLCBkZXN0KTsKLSAg
ICAgICAgcGFpcnMucmVtb3ZlKDApOwotCi0gICAgICAgIEdQUlJlZyBuZXdTb3VyY2UgPSBzb3Vy
Y2U7Ci0gICAgICAgIGZvciAoYXV0byYgcGFpciA6IHBhaXJzKSB7Ci0gICAgICAgICAgICBHUFJS
ZWcgc291cmNlID0gcGFpci5maXJzdDsKLSAgICAgICAgICAgIGlmIChzb3VyY2UgPT0gZGVzdCkg
ewotICAgICAgICAgICAgICAgIHBhaXIuZmlyc3QgPSBuZXdTb3VyY2U7Ci0gICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBXZSBtYXkg
aGF2ZSBpbnRyb2R1Y2VkIHBhaXJzIHRoYXQgaGF2ZSB0aGUgc2FtZSBzb3VyY2UgYW5kIGRlc3Rp
bmF0aW9uLiBSZW1vdmUgdGhvc2Ugbm93LgotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgcGFpcnMuc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgICAgIGF1dG8mIHBhaXIgPSBwYWlyc1tp
XTsKLSAgICAgICAgICAgIGlmIChwYWlyLmZpcnN0ID09IHBhaXIuc2Vjb25kKSB7Ci0gICAgICAg
ICAgICAgICAgcGFpcnMucmVtb3ZlKGkpOwotICAgICAgICAgICAgICAgIGktLTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfQotICAgIH0KLX0KLSNlbmRpZiAvLyBOVU1CRVJfT0ZfQVJHVU1FTlRf
UkVHSVNURVJTID49IDQKLQogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBFTkFCTEUo
SklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgKaW5kZXggNzk0NTQ2
YjBiZDI3YTk5YzBjMTk4OWJlMmU0MTMxNDM0ZGE0OGZhZS4uYWNhOWUxZjc0ZGM4ZWExNjZlZjk1
MmUzNWJkMDFhZmQyZDk0N2ZhMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9DQ2FsbEhlbHBlcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVs
cGVycy5oCkBAIC05ODcsNyArOTg3LDE0IEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBB
c3NlbWJseUhlbHBlcnMgewogICAgICAgICAgICAgc3dhcChkZXN0QiwgZGVzdEMpOwogICAgIH0K
IAotICAgIHZvaWQgc2V0dXBGb3VyU3R1YkFyZ3NHUFIoR1BSUmVnIGRlc3RBLCBHUFJSZWcgZGVz
dEIsIEdQUlJlZyBkZXN0QywgR1BSUmVnIGRlc3RELCBHUFJSZWcgc3JjQSwgR1BSUmVnIHNyY0Is
IEdQUlJlZyBzcmNDLCBHUFJSZWcgc3JjRCk7CisgICAgdm9pZCBzZXR1cEZvdXJTdHViQXJnc0dQ
UihHUFJSZWcgZGVzdEEsIEdQUlJlZyBkZXN0QiwgR1BSUmVnIGRlc3RDLCBHUFJSZWcgZGVzdEQs
IEdQUlJlZyBzcmNBLCBHUFJSZWcgc3JjQiwgR1BSUmVnIHNyY0MsIEdQUlJlZyBzcmNEKQorICAg
IHsKKyAgICAgICAgc2V0dXBTdHViQXJnc0dQUjw0Pih7IHsgZGVzdEEsIGRlc3RCLCBkZXN0Qywg
ZGVzdEQgfSB9LCB7IHsgc3JjQSwgc3JjQiwgc3JjQywgc3JjRCB9IH0pOworICAgIH0KKyAgICB2
b2lkIHNldHVwRml2ZVN0dWJBcmdzR1BSKEdQUlJlZyBkZXN0QSwgR1BSUmVnIGRlc3RCLCBHUFJS
ZWcgZGVzdEMsIEdQUlJlZyBkZXN0RCwgR1BSUmVnIGRlc3RFLCBHUFJSZWcgc3JjQSwgR1BSUmVn
IHNyY0IsIEdQUlJlZyBzcmNDLCBHUFJSZWcgc3JjRCwgR1BSUmVnIHNyY0UpCisgICAgeworICAg
ICAgICBzZXR1cFN0dWJBcmdzR1BSPDU+KHsgeyBkZXN0QSwgZGVzdEIsIGRlc3RDLCBkZXN0RCwg
ZGVzdEUgfSB9LCB7IHsgc3JjQSwgc3JjQiwgc3JjQywgc3JjRCwgc3JjRSB9IH0pOworICAgIH0K
IAogI2lmIENQVShYODZfNjQpIHx8IENQVShBUk02NCkKICAgICB0ZW1wbGF0ZTxGUFJSZWcgZGVz
dEEsIEZQUlJlZyBkZXN0Qj4KQEAgLTIxODQsNiArMjE5MSwxOSBAQCBjbGFzcyBDQ2FsbEhlbHBl
cnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJzIHsKICAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxs
RnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKICAgICB9CiAKKyAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBH
UFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMsIEdQUlJlZyBhcmc0LCBHUFJSZWcgYXJnNSkKKyAgICB7
CisgICAgICAgIHNldHVwRml2ZVN0dWJBcmdzR1BSKEdQUkluZm86OmFyZ3VtZW50R1BSMSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIyLCBHUFJJbmZvOjphcmd1bWVudEdQUjMsIEdQUkluZm86OmFyZ3Vt
ZW50R1BSNCwgR1BSSW5mbzo6YXJndW1lbnRHUFI1LCBhcmcxLCBhcmcyLCBhcmczLCBhcmc0LCBh
cmc1KTsKKyAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6
YXJndW1lbnRHUFIwKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1
bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMs
IEdQUlJlZyBhcmc0LCBUcnVzdGVkSW1tMzIgYXJnNSkKKyAgICB7CisgICAgICAgIHNldHVwRm91
clN0dWJBcmdzR1BSKEdQUkluZm86OmFyZ3VtZW50R1BSMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIy
LCBHUFJJbmZvOjphcmd1bWVudEdQUjMsIEdQUkluZm86OmFyZ3VtZW50R1BSNCwgYXJnMSwgYXJn
MiwgYXJnMywgYXJnNCk7CisgICAgICAgIG1vdmUoYXJnNSwgR1BSSW5mbzo6YXJndW1lbnRHUFI1
KTsKKyAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIwKTsKKyAgICB9CisKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVu
dHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBUcnVzdGVkSW1tUHRyIGFyZzIsIEdQUlJlZyBh
cmczLCBHUFJSZWcgYXJnNCkKICAgICB7CiAgICAgICAgIHNldHVwU3R1YkFyZ3VtZW50czEzNChh
cmcxLCBhcmczLCBhcmc0KTsKQEAgLTI0NzIsNiArMjQ5MiwxMDUgQEAgY2xhc3MgQ0NhbGxIZWxw
ZXJzIDogcHVibGljIEFzc2VtYmx5SGVscGVycyB7CiAgICAgICAgIC8vIFJlYWR5IGZvciBhIGp1
bXAhCiAgICAgICAgIG1vdmUobmV3RnJhbWVQb2ludGVyLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7
CiAgICAgfQorCisjaWYgTlVNQkVSX09GX0FSR1VNRU5UX1JFR0lTVEVSUyA+PSA0CisgICAgdGVt
cGxhdGU8dW5zaWduZWQgTnVtYmVyT2ZSZWdpc3RlcnM+CisgICAgdm9pZCBzZXR1cFN0dWJBcmdz
R1BSKHN0ZDo6YXJyYXk8R1BSUmVnLCBOdW1iZXJPZlJlZ2lzdGVycz4gZGVzdGluYXRpb25zLCBz
dGQ6OmFycmF5PEdQUlJlZywgTnVtYmVyT2ZSZWdpc3RlcnM+IHNvdXJjZXMpCisgICAgeworICAg
ICAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkgeworICAgICAgICAgICAgUmVnaXN0ZXJTZXQgc2V0
OworICAgICAgICAgICAgZm9yIChHUFJSZWcgZGVzdCA6IGRlc3RpbmF0aW9ucykKKyAgICAgICAg
ICAgICAgICBzZXQuc2V0KGRlc3QpOworICAgICAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShz
ZXQubnVtYmVyT2ZTZXRHUFJzKCkgPT0gNCwgIkRlc3RpbmF0aW9ucyBzaG91bGQgbm90IGJlIGFs
aWFzZWQuIik7CisgICAgICAgIH0KKworICAgICAgICB0eXBlZGVmIHN0ZDo6cGFpcjxHUFJSZWcs
IEdQUlJlZz4gUmVnUGFpcjsKKyAgICAgICAgVmVjdG9yPFJlZ1BhaXIsIE51bWJlck9mUmVnaXN0
ZXJzPiBwYWlyczsKKworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgTnVtYmVyT2ZS
ZWdpc3RlcnM7ICsraSkgeworICAgICAgICAgICAgaWYgKHNvdXJjZXNbaV0gIT0gZGVzdGluYXRp
b25zW2ldKQorICAgICAgICAgICAgICAgIHBhaXJzLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihzb3Vy
Y2VzW2ldLCBkZXN0aW5hdGlvbnNbaV0pKTsKKyAgICAgICAgfQorCisjaWYgIUFTU0VSVF9ESVNB
QkxFRAorICAgICAgICBhdXRvIG51bVVuaXF1ZVNvdXJjZXMgPSBbJl0gKCkgLT4gdW5zaWduZWQg
eworICAgICAgICAgICAgUmVnaXN0ZXJTZXQgc2V0OworICAgICAgICAgICAgZm9yIChhdXRvJiBw
YWlyIDogcGFpcnMpIHsKKyAgICAgICAgICAgICAgICBHUFJSZWcgc291cmNlID0gcGFpci5maXJz
dDsKKyAgICAgICAgICAgICAgICBzZXQuc2V0KHNvdXJjZSk7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICByZXR1cm4gc2V0Lm51bWJlck9mU2V0R1BScygpOworICAgICAgICB9OworCisgICAg
ICAgIGF1dG8gbnVtVW5pcXVlRGVzdHMgPSBbJl0gKCkgLT4gdW5zaWduZWQgeworICAgICAgICAg
ICAgUmVnaXN0ZXJTZXQgc2V0OworICAgICAgICAgICAgZm9yIChhdXRvJiBwYWlyIDogcGFpcnMp
IHsKKyAgICAgICAgICAgICAgICBHUFJSZWcgZGVzdCA9IHBhaXIuc2Vjb25kOworICAgICAgICAg
ICAgICAgIHNldC5zZXQoZGVzdCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4g
c2V0Lm51bWJlck9mU2V0R1BScygpOworICAgICAgICB9OworI2VuZGlmCisKKyAgICAgICAgd2hp
bGUgKHBhaXJzLnNpemUoKSkgeworICAgICAgICAgICAgUmVnaXN0ZXJTZXQgZnJlZURlc3RpbmF0
aW9uczsKKyAgICAgICAgICAgIGZvciAoYXV0byYgcGFpciA6IHBhaXJzKSB7CisgICAgICAgICAg
ICAgICAgR1BSUmVnIGRlc3QgPSBwYWlyLnNlY29uZDsKKyAgICAgICAgICAgICAgICBmcmVlRGVz
dGluYXRpb25zLnNldChkZXN0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZvciAoYXV0
byYgcGFpciA6IHBhaXJzKSB7CisgICAgICAgICAgICAgICAgR1BSUmVnIHNvdXJjZSA9IHBhaXIu
Zmlyc3Q7CisgICAgICAgICAgICAgICAgZnJlZURlc3RpbmF0aW9ucy5jbGVhcihzb3VyY2UpOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoZnJlZURlc3RpbmF0aW9ucy5udW1iZXJP
ZlNldEdQUnMoKSkgeworICAgICAgICAgICAgICAgIGJvb2wgbWFkZU1vdmUgPSBmYWxzZTsKKyAg
ICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGFpcnMuc2l6ZSgpOyBpKysp
IHsKKyAgICAgICAgICAgICAgICAgICAgYXV0byYgcGFpciA9IHBhaXJzW2ldOworICAgICAgICAg
ICAgICAgICAgICBHUFJSZWcgc291cmNlID0gcGFpci5maXJzdDsKKyAgICAgICAgICAgICAgICAg
ICAgR1BSUmVnIGRlc3QgPSBwYWlyLnNlY29uZDsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGZy
ZWVEZXN0aW5hdGlvbnMuZ2V0KGRlc3QpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBtb3Zl
KHNvdXJjZSwgZGVzdCk7CisgICAgICAgICAgICAgICAgICAgICAgICBwYWlycy5yZW1vdmUoaSk7
CisgICAgICAgICAgICAgICAgICAgICAgICBtYWRlTW92ZSA9IHRydWU7CisgICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKG1hZGVNb3ZlLCBtYWRlTW92ZSk7Cisg
ICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIEFT
U0VSVChudW1VbmlxdWVEZXN0cygpID09IG51bVVuaXF1ZVNvdXJjZXMoKSk7CisgICAgICAgICAg
ICBBU1NFUlQobnVtVW5pcXVlRGVzdHMoKSA9PSBwYWlycy5zaXplKCkpOworICAgICAgICAgICAg
Ly8gVGhlIHNldCBvZiBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIHJlZ2lzdGVycyBhcmUgZXF1aXZh
bGVudCBzZXRzLiBUaGlzIG1lYW5zIHdlIGRvbid0IGhhdmUKKyAgICAgICAgICAgIC8vIGFueSBm
cmVlIGRlc3RpbmF0aW9uIHJlZ2lzdGVycyB0aGF0IHdvbid0IGFsc28gY2xvYmJlciBhIHNvdXJj
ZS4gV2UgZ2V0IGFyb3VuZCB0aGlzIGJ5CisgICAgICAgICAgICAvLyBleGNoYW5naW5nIHJlZ2lz
dGVycy4KKworICAgICAgICAgICAgR1BSUmVnIHNvdXJjZSA9IHBhaXJzWzBdLmZpcnN0OworICAg
ICAgICAgICAgR1BSUmVnIGRlc3QgPSBwYWlyc1swXS5zZWNvbmQ7CisgICAgICAgICAgICBzd2Fw
KHNvdXJjZSwgZGVzdCk7CisgICAgICAgICAgICBwYWlycy5yZW1vdmUoMCk7CisKKyAgICAgICAg
ICAgIEdQUlJlZyBuZXdTb3VyY2UgPSBzb3VyY2U7CisgICAgICAgICAgICBmb3IgKGF1dG8mIHBh
aXIgOiBwYWlycykgeworICAgICAgICAgICAgICAgIEdQUlJlZyBzb3VyY2UgPSBwYWlyLmZpcnN0
OworICAgICAgICAgICAgICAgIGlmIChzb3VyY2UgPT0gZGVzdCkgeworICAgICAgICAgICAgICAg
ICAgICBwYWlyLmZpcnN0ID0gbmV3U291cmNlOworICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFdlIG1h
eSBoYXZlIGludHJvZHVjZWQgcGFpcnMgdGhhdCBoYXZlIHRoZSBzYW1lIHNvdXJjZSBhbmQgZGVz
dGluYXRpb24uIFJlbW92ZSB0aG9zZSBub3cuCisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgcGFpcnMuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgICAgICAgICBhdXRvJiBwYWly
ID0gcGFpcnNbaV07CisgICAgICAgICAgICAgICAgaWYgKHBhaXIuZmlyc3QgPT0gcGFpci5zZWNv
bmQpIHsKKyAgICAgICAgICAgICAgICAgICAgcGFpcnMucmVtb3ZlKGkpOworICAgICAgICAgICAg
ICAgICAgICBpLS07CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgfQorI2VuZGlmIC8vIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMgPj0gNAogICAg
IAogICAgIC8vIFRoZXNlIG9wZXJhdGlvbnMgY2xvYmJlciBhbGwgdm9sYXRpbGUgcmVnaXN0ZXJz
LiBUaGV5IGFzc3VtZSB0aGF0IHRoZXJlIGlzIHJvb20gb24gdGhlIHRvcCBvZgogICAgIC8vIHN0
YWNrIHRvIG1hcnNoYWxsIGNhbGwgYXJndW1lbnRzLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3Bw
CmluZGV4IDFhYmU3YzQzNDE3NDYzZjk2OTE2NTI5YTZlNjE0ZWRlMDljN2ZkMzkuLjIzN2QxOWE0
YjA4MmYxY2IwZTAyYzJlYTU3N2NjMWNjMzEwNzk0MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VC5jcHAKQEAgLTMyMiw2ICszMjIsOCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFz
cygpCiAgICAgICAgIERFRklORV9PUChvcF9wdXRfZ2V0dGVyX3NldHRlcl9ieV9pZCkKICAgICAg
ICAgREVGSU5FX09QKG9wX3B1dF9nZXR0ZXJfYnlfdmFsKQogICAgICAgICBERUZJTkVfT1Aob3Bf
cHV0X3NldHRlcl9ieV92YWwpCisgICAgICAgIERFRklORV9PUChvcF9kZWZpbmVfZGF0YV9wcm9w
ZXJ0eSkKKyAgICAgICAgREVGSU5FX09QKG9wX2RlZmluZV9hY2Nlc3Nvcl9wcm9wZXJ0eSkKIAog
ICAgICAgICBERUZJTkVfT1Aob3BfcmV0KQogICAgICAgICBERUZJTkVfT1Aob3BfcnNoaWZ0KQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXggYTE0YTg1NmEwN2JkMjVhYWQ3Y2NlMGQzYjg0MGVl
MjczZWVjZGZjNS4uNDUxYTIwZDU2NDEzOGVjYmQ3NWM0ZGQzMmFkNGRjZmE2NDYyNjYxNyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC01NjcsNiArNTY3LDggQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfZ2V0dGVyX3NldHRlcl9ieV9pZChJbnN0cnVjdGlv
biopOwogICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X2dldHRlcl9ieV92YWwoSW5zdHJ1Y3Rpb24q
KTsKICAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9zZXR0ZXJfYnlfdmFsKEluc3RydWN0aW9uKik7
CisgICAgICAgIHZvaWQgZW1pdF9vcF9kZWZpbmVfZGF0YV9wcm9wZXJ0eShJbnN0cnVjdGlvbiop
OworICAgICAgICB2b2lkIGVtaXRfb3BfZGVmaW5lX2FjY2Vzc29yX3Byb3BlcnR5KEluc3RydWN0
aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9yZXQoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAg
dm9pZCBlbWl0X29wX3JzaGlmdChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3Bf
c2V0X2Z1bmN0aW9uX25hbWUoSW5zdHJ1Y3Rpb24qKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGVyYXRpb25zLmgKaW5kZXggOTM1YzRmYWIxOWQyZDc3OWE1MGViNGU3N2YzNTE4NjFi
MjExYTNmNi4uNDdmZTk1NzNmYWQ3NTZhMjYyNjc0ODFmZDZhY2VhYjg2ZTkzZTUyOCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKQEAgLTU5LDYgKzU5LDcgQEAg
Y2xhc3MgUmVnRXhwT2JqZWN0OwogY2xhc3MgUmVnaXN0ZXI7CiBjbGFzcyBTdHJ1Y3R1cmU7CiBj
bGFzcyBTdHJ1Y3R1cmVTdHViSW5mbzsKK2NsYXNzIFN5bWJvbDsKIGNsYXNzIFN5bWJvbFRhYmxl
OwogY2xhc3MgV2F0Y2hwb2ludFNldDsKIApAQCAtMTExLDYgKzExMiw3IEBAIHR5cGVkZWYgY2hh
ciogVW51c2VkUHRyOwogICAgIFNzaTogU3RydWN0dXJlU3R1YkluZm8qCiAgICAgU3Q6IFN0cnVj
dHVyZSoKICAgICBTeW10YWI6IFN5bWJvbFRhYmxlKgorICAgIFN5bTogU3ltYm9sKgogICAgIFQ6
IFN0cmluZ0ltcGwqCiAgICAgVjogdm9pZAogICAgIFZtOiBWTSoKQEAgLTI2OSw2ICsyNzEsMTQg
QEAgdHlwZWRlZiB2b2lkIChKSVRfT1BFUkFUSU9OICpWX0pJVE9wZXJhdGlvbl9FUFpKKShFeGVj
U3RhdGUqLCB2b2lkKiwgaW50MzJfdCwgRW4KIHR5cGVkZWYgdm9pZCAoSklUX09QRVJBVElPTiAq
Vl9KSVRPcGVyYXRpb25fRVNzaUpKSSkoRXhlY1N0YXRlKiwgU3RydWN0dXJlU3R1YkluZm8qLCBF
bmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIFVuaXF1ZWRTdHJpbmdJbXBsKik7CiB0eXBl
ZGVmIHZvaWQgKEpJVF9PUEVSQVRJT04gKlZfSklUT3BlcmF0aW9uX0VKSkpJKShFeGVjU3RhdGUq
LCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBVbmlxdWVk
U3RyaW5nSW1wbCopOwogdHlwZWRlZiB2b2lkIChKSVRfT1BFUkFUSU9OICpWX0pJVE9wZXJhdGlv
bl9FSkpKSikoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUpOwordHlwZWRlZiB2b2lkIChKSVRfT1BFUkFUSU9O
ICpWX0pJVE9wZXJhdGlvbl9FT0pKWikoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBFbmNvZGVkSlNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUsIGludDMyX3QpOwordHlwZWRlZiB2b2lkIChKSVRfT1BFUkFU
SU9OICpWX0pJVE9wZXJhdGlvbl9FT0pzc0paKShFeGVjU3RhdGUqLCBKU09iamVjdCosIEpTU3Ry
aW5nKiwgRW5jb2RlZEpTVmFsdWUsIGludDMyX3QpOwordHlwZWRlZiB2b2lkIChKSVRfT1BFUkFU
SU9OICpWX0pJVE9wZXJhdGlvbl9FT0lKWikoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBVbmlxdWVk
U3RyaW5nSW1wbCosIEVuY29kZWRKU1ZhbHVlLCBpbnQzMl90KTsKK3R5cGVkZWYgdm9pZCAoSklU
X09QRVJBVElPTiAqVl9KSVRPcGVyYXRpb25fRU9TeW1KWikoRXhlY1N0YXRlKiwgSlNPYmplY3Qq
LCBTeW1ib2wqLCBFbmNvZGVkSlNWYWx1ZSwgaW50MzJfdCk7Cit0eXBlZGVmIHZvaWQgKEpJVF9P
UEVSQVRJT04gKlZfSklUT3BlcmF0aW9uX0VPSk9PWikoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBF
bmNvZGVkSlNWYWx1ZSwgSlNPYmplY3QqLCBKU09iamVjdCosIGludDMyX3QpOwordHlwZWRlZiB2
b2lkIChKSVRfT1BFUkFUSU9OICpWX0pJVE9wZXJhdGlvbl9FT0pzc09PWikoRXhlY1N0YXRlKiwg
SlNPYmplY3QqLCBKU1N0cmluZyosIEpTT2JqZWN0KiwgSlNPYmplY3QqLCBpbnQzMl90KTsKK3R5
cGVkZWYgdm9pZCAoSklUX09QRVJBVElPTiAqVl9KSVRPcGVyYXRpb25fRU9JT09aKShFeGVjU3Rh
dGUqLCBKU09iamVjdCosIFVuaXF1ZWRTdHJpbmdJbXBsKiwgSlNPYmplY3QqLCBKU09iamVjdCos
IGludDMyX3QpOwordHlwZWRlZiB2b2lkIChKSVRfT1BFUkFUSU9OICpWX0pJVE9wZXJhdGlvbl9F
T1N5bU9PWikoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBTeW1ib2wqLCBKU09iamVjdCosIEpTT2Jq
ZWN0KiwgaW50MzJfdCk7CiB0eXBlZGVmIHZvaWQgKEpJVF9PUEVSQVRJT04gKlZfSklUT3BlcmF0
aW9uX0VXcykoRXhlY1N0YXRlKiwgV2F0Y2hwb2ludFNldCopOwogdHlwZWRlZiB2b2lkIChKSVRf
T1BFUkFUSU9OICpWX0pJVE9wZXJhdGlvbl9FWikoRXhlY1N0YXRlKiwgaW50MzJfdCk7CiB0eXBl
ZGVmIHZvaWQgKEpJVF9PUEVSQVRJT04gKlZfSklUT3BlcmF0aW9uX0VaSikoRXhlY1N0YXRlKiwg
aW50MzJfdCwgRW5jb2RlZEpTVmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVFByb3BlcnR5QWNjZXNzLmNwcAppbmRleCA1NjAyNjhiNWMzMTQ3ODQxMzYwNzJkZGQ4MDA3
Nzc4MGYzMzc4YjJiLi45ZDRmZDFhYTZhZjY0YjQ4ZDdiZTFiM2ViNDY5MzBiNTNmMzVmNGI3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcApA
QCAtMTc3Myw2ICsxNzczLDE4IEBAIEpJVDo6SnVtcExpc3QgSklUOjplbWl0RmxvYXRUeXBlZEFy
cmF5UHV0QnlWYWwoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwKICAgICByZXR1cm4g
c2xvd0Nhc2VzOwogfQogCit2b2lkIEpJVDo6ZW1pdF9vcF9kZWZpbmVfZGF0YV9wcm9wZXJ0eShJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIEpJVFNsb3dQYXRoQ2FsbCBz
bG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfZGVmaW5lX2Rh
dGFfcHJvcGVydHkpOworICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7Cit9CisKK3ZvaWQgSklUOjpl
bWl0X29wX2RlZmluZV9hY2Nlc3Nvcl9wcm9wZXJ0eShJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQoreworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVu
dEluc3RydWN0aW9uLCBzbG93X3BhdGhfZGVmaW5lX2FjY2Vzc29yX3Byb3BlcnR5KTsKKyAgICBz
bG93UGF0aENhbGwuY2FsbCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8v
IEVOQUJMRShKSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlci5hc20KaW5kZXggMTAwMzdhZjU2Y2U2YzdmMWE5M2U1MmQyYTcxN2UyOTRl
MDEwNWY5YS4uYzliODQ0MzdjNjU3NDU1M2UzODBlNTIxMjI2MWFiOTI2OTZiZTM0ZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNt
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFz
bQpAQCAtMTQ1Nyw2ICsxNDU3LDE4IEBAIF9sbGludF9vcF9wdXRfc2V0dGVyX2J5X3ZhbDoKICAg
ICBkaXNwYXRjaCg1KQogCiAKK19sbGludF9vcF9kZWZpbmVfZGF0YV9wcm9wZXJ0eToKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbE9wY29kZVNsb3dQYXRoKF9zbG93X3BhdGhfZGVmaW5l
X2RhdGFfcHJvcGVydHkpCisgICAgZGlzcGF0Y2goNSkKKworCitfbGxpbnRfb3BfZGVmaW5lX2Fj
Y2Vzc29yX3Byb3BlcnR5OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsT3Bjb2RlU2xv
d1BhdGgoX3Nsb3dfcGF0aF9kZWZpbmVfYWNjZXNzb3JfcHJvcGVydHkpCisgICAgZGlzcGF0Y2go
NikKKworCiBfbGxpbnRfb3BfanRydWU6CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGp1bXBU
cnVlT3JGYWxzZSgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25T
bG93UGF0aHMuY3BwCmluZGV4IGNhZjgyNmRjMmFjZGFiNmQ5YTM5NThhMGNmMDMxMTQzNjIzYmJh
M2YuLmYyNWVlODExYWNhOWVjYTRhOTZkYTkwZTVlMGE5NDI1Yjk3NDU4YzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcApAQCAtMzMs
NiArMzMsNyBAQAogI2luY2x1ZGUgIkNsb25lZEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIkNvZGVQ
cm9maWxpbmcuaCIKICNpbmNsdWRlICJDb21tb25TbG93UGF0aHNFeGNlcHRpb25zLmgiCisjaW5j
bHVkZSAiRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzLmgiCiAjaW5jbHVkZSAiRGlyZWN0QXJndW1l
bnRzLmgiCiAjaW5jbHVkZSAiRXJyb3IuaCIKICNpbmNsdWRlICJFcnJvckhhbmRsaW5nU2NvcGUu
aCIKQEAgLTkzMCw0ICs5MzEsMzkgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF9ieV92
YWxfd2l0aF90aGlzKQogICAgIEVORCgpOwogfQogCitTTE9XX1BBVEhfREVDTChzbG93X3BhdGhf
ZGVmaW5lX2RhdGFfcHJvcGVydHkpCit7CisgICAgQkVHSU4oKTsKKyAgICBKU09iamVjdCogYmFz
ZSA9IGFzT2JqZWN0KE9QX0MoMSkuanNWYWx1ZSgpKTsKKyAgICBKU1ZhbHVlIHByb3BlcnR5ID0g
T1BfQygyKS5qc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IE9QX0MoMykuanNWYWx1ZSgp
OworICAgIEpTVmFsdWUgYXR0cmlidXRlcyA9IE9QX0MoNCkuanNWYWx1ZSgpOworICAgIEFTU0VS
VChhdHRyaWJ1dGVzLmlzSW50MzIoKSk7CisKKyAgICBhdXRvIHByb3BlcnR5TmFtZSA9IHByb3Bl
cnR5LnRvUHJvcGVydHlLZXkoZXhlYyk7CisgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgUHJv
cGVydHlEZXNjcmlwdG9yIGRlc2NyaXB0b3IgPSB0b1Byb3BlcnR5RGVzY3JpcHRvcih2YWx1ZSwg
anNVbmRlZmluZWQoKSwganNVbmRlZmluZWQoKSwgRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzKGF0
dHJpYnV0ZXMuYXNJbnQzMigpKSk7CisgICAgQVNTRVJUKChkZXNjcmlwdG9yLmF0dHJpYnV0ZXMo
KSAmIEFjY2Vzc29yKSB8fCAoIWRlc2NyaXB0b3IuaXNBY2Nlc3NvckRlc2NyaXB0b3IoKSkpOwor
ICAgIGJhc2UtPm1ldGhvZFRhYmxlKHZtKS0+ZGVmaW5lT3duUHJvcGVydHkoYmFzZSwgZXhlYywg
cHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCB0cnVlKTsKKyAgICBFTkQoKTsKK30KKworU0xPV19Q
QVRIX0RFQ0woc2xvd19wYXRoX2RlZmluZV9hY2Nlc3Nvcl9wcm9wZXJ0eSkKK3sKKyAgICBCRUdJ
TigpOworICAgIEpTT2JqZWN0KiBiYXNlID0gYXNPYmplY3QoT1BfQygxKS5qc1ZhbHVlKCkpOwor
ICAgIEpTVmFsdWUgcHJvcGVydHkgPSBPUF9DKDIpLmpzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIGdl
dHRlciA9IE9QX0MoMykuanNWYWx1ZSgpOworICAgIEpTVmFsdWUgc2V0dGVyID0gT1BfQyg0KS5q
c1ZhbHVlKCk7CisgICAgSlNWYWx1ZSBhdHRyaWJ1dGVzID0gT1BfQyg1KS5qc1ZhbHVlKCk7Cisg
ICAgQVNTRVJUKGF0dHJpYnV0ZXMuaXNJbnQzMigpKTsKKworICAgIGF1dG8gcHJvcGVydHlOYW1l
ID0gcHJvcGVydHkudG9Qcm9wZXJ0eUtleShleGVjKTsKKyAgICBDSEVDS19FWENFUFRJT04oKTsK
KyAgICBQcm9wZXJ0eURlc2NyaXB0b3IgZGVzY3JpcHRvciA9IHRvUHJvcGVydHlEZXNjcmlwdG9y
KGpzVW5kZWZpbmVkKCksIGdldHRlciwgc2V0dGVyLCBEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMo
YXR0cmlidXRlcy5hc0ludDMyKCkpKTsKKyAgICBBU1NFUlQoKGRlc2NyaXB0b3IuYXR0cmlidXRl
cygpICYgQWNjZXNzb3IpIHx8ICghZGVzY3JpcHRvci5pc0FjY2Vzc29yRGVzY3JpcHRvcigpKSk7
CisgICAgYmFzZS0+bWV0aG9kVGFibGUodm0pLT5kZWZpbmVPd25Qcm9wZXJ0eShiYXNlLCBleGVj
LCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHRydWUpOworICAgIEVORCgpOworfQorCiB9IC8v
IG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vblNsb3dQYXRocy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9u
U2xvd1BhdGhzLmgKaW5kZXggOGVlNWJlMzFhZDNjZWViNjExMDM5ZjI5OGU3ZGIzNmZiOTQ5ZmY5
OS4uNDc1Yjc3ZTE4ZmUyMmQwNjg4YTI1ZTFmNTdiODRlNGMwODJiOGZjZCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKQEAgLTI1Nyw2ICsy
NTcsOCBAQCBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2dldF9ieV9pZF93aXRoX3Ro
aXMpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9nZXRfYnlfdmFsX3dpdGhfdGhp
cyk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3B1dF9ieV9pZF93aXRoX3RoaXMp
OwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfdmFsX3dpdGhfdGhpcyk7
CitTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2RlZmluZV9kYXRhX3Byb3BlcnR5KTsK
K1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZGVmaW5lX2FjY2Vzc29yX3Byb3BlcnR5
KTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0RlZmluZVByb3BlcnR5QXR0cmlidXRlcy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2Q4
YTI0OGI5MTYwYzQ3NjRiMTBjYTQxMWZiMmYyYzc1Y2E5ODM2MAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RlZmluZVByb3BlcnR5QXR0cmlidXRlcy5o
CkBAIC0wLDAgKzEsMTQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvVHJpU3RhdGUuaD4KKworbmFt
ZXNwYWNlIEpTQyB7CisKK2NsYXNzIERlZmluZVByb3BlcnR5QXR0cmlidXRlcyB7CitwdWJsaWM6
CisgICAgc3RhdGljX2Fzc2VydChGYWxzZVRyaVN0YXRlID09IDAsICJGYWxzZVRyaVN0YXRlIGlz
IDAuIik7CisgICAgc3RhdGljX2Fzc2VydChUcnVlVHJpU3RhdGUgPT0gMSwgIlRydWVUcmlTdGF0
ZSBpcyAxLiIpOworICAgIHN0YXRpY19hc3NlcnQoTWl4ZWRUcmlTdGF0ZSA9PSAyLCAiTWl4ZWRU
cmlTdGF0ZSBpcyAyLiIpOworCisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIENvbmZpZ3VyYWJs
ZVNoaWZ0ID0gMDsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgRW51bWVyYWJsZVNoaWZ0ID0g
MjsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgV3JpdGFibGVTaGlmdCA9IDQ7CisgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIFZhbHVlU2hpZnQgPSA2OworICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBHZXRTaGlmdCA9IDc7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFNldFNoaWZ0ID0g
ODsKKworICAgIERlZmluZVByb3BlcnR5QXR0cmlidXRlcygpCisgICAgICAgIDogbV9hdHRyaWJ1
dGVzKAorICAgICAgICAgICAgKE1peGVkVHJpU3RhdGUgPDwgQ29uZmlndXJhYmxlU2hpZnQpCisg
ICAgICAgICAgICB8IChNaXhlZFRyaVN0YXRlIDw8IEVudW1lcmFibGVTaGlmdCkKKyAgICAgICAg
ICAgIHwgKE1peGVkVHJpU3RhdGUgPDwgV3JpdGFibGVTaGlmdCkKKyAgICAgICAgICAgIHwgKDAg
PDwgVmFsdWVTaGlmdCkKKyAgICAgICAgICAgIHwgKDAgPDwgR2V0U2hpZnQpCisgICAgICAgICAg
ICB8ICgwIDw8IFNldFNoaWZ0KSkKKyAgICB7CisgICAgfQorCisgICAgZXhwbGljaXQgRGVmaW5l
UHJvcGVydHlBdHRyaWJ1dGVzKHVuc2lnbmVkIGF0dHJpYnV0ZXMpCisgICAgICAgIDogbV9hdHRy
aWJ1dGVzKGF0dHJpYnV0ZXMpCisgICAgeworICAgIH0KKworICAgIHVuc2lnbmVkIHJhd1JlcHJl
c2VudGF0aW9uKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2F0dHJpYnV0ZXM7Cisg
ICAgfQorCisgICAgYm9vbCBoYXNWYWx1ZSgpCisgICAgeworICAgICAgICByZXR1cm4gbV9hdHRy
aWJ1dGVzICYgKDBiMSA8PCBWYWx1ZVNoaWZ0KTsKKyAgICB9CisKKyAgICB2b2lkIHNldFZhbHVl
KCkKKyAgICB7CisgICAgICAgIG1fYXR0cmlidXRlcyA9IG1fYXR0cmlidXRlcyB8ICgwYjEgPDwg
VmFsdWVTaGlmdCk7CisgICAgfQorCisgICAgYm9vbCBoYXNHZXQoKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIG1fYXR0cmlidXRlcyAmICgwYjEgPDwgR2V0U2hpZnQpOworICAgIH0KKworICAgIHZv
aWQgc2V0R2V0KCkKKyAgICB7CisgICAgICAgIG1fYXR0cmlidXRlcyA9IG1fYXR0cmlidXRlcyB8
ICgwYjEgPDwgR2V0U2hpZnQpOworICAgIH0KKworICAgIGJvb2wgaGFzU2V0KCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBtX2F0dHJpYnV0ZXMgJiAoMGIxIDw8IFNldFNoaWZ0KTsKKyAgICB9CisK
KyAgICB2b2lkIHNldFNldCgpCisgICAgeworICAgICAgICBtX2F0dHJpYnV0ZXMgPSBtX2F0dHJp
YnV0ZXMgfCAoMGIxIDw8IFNldFNoaWZ0KTsKKyAgICB9CisKKyAgICBUcmlTdGF0ZSB3cml0YWJs
ZSgpCisgICAgeworICAgICAgICByZXR1cm4gZXh0cmFjdFRyaVN0YXRlKFdyaXRhYmxlU2hpZnQp
OworICAgIH0KKworICAgIFRyaVN0YXRlIGNvbmZpZ3VyYWJsZSgpCisgICAgeworICAgICAgICBy
ZXR1cm4gZXh0cmFjdFRyaVN0YXRlKENvbmZpZ3VyYWJsZVNoaWZ0KTsKKyAgICB9CisKKyAgICBU
cmlTdGF0ZSBlbnVtZXJhYmxlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBleHRyYWN0VHJpU3Rh
dGUoRW51bWVyYWJsZVNoaWZ0KTsKKyAgICB9CisKKyAgICB2b2lkIHNldFdyaXRhYmxlKGJvb2wg
dmFsdWUpCisgICAgeworICAgICAgICBmaWxsV2l0aFRyaVN0YXRlKHZhbHVlID8gVHJ1ZVRyaVN0
YXRlIDogRmFsc2VUcmlTdGF0ZSwgV3JpdGFibGVTaGlmdCk7CisgICAgfQorCisgICAgdm9pZCBz
ZXRDb25maWd1cmFibGUoYm9vbCB2YWx1ZSkKKyAgICB7CisgICAgICAgIGZpbGxXaXRoVHJpU3Rh
dGUodmFsdWUgPyBUcnVlVHJpU3RhdGUgOiBGYWxzZVRyaVN0YXRlLCBDb25maWd1cmFibGVTaGlm
dCk7CisgICAgfQorCisgICAgdm9pZCBzZXRFbnVtZXJhYmxlKGJvb2wgdmFsdWUpCisgICAgewor
ICAgICAgICBmaWxsV2l0aFRyaVN0YXRlKHZhbHVlID8gVHJ1ZVRyaVN0YXRlIDogRmFsc2VUcmlT
dGF0ZSwgRW51bWVyYWJsZVNoaWZ0KTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgdm9pZCBmaWxs
V2l0aFRyaVN0YXRlKFRyaVN0YXRlIHN0YXRlLCB1bnNpZ25lZCBzaGlmdCkKKyAgICB7CisgICAg
ICAgIHVuc2lnbmVkIG1hc2sgPSAwYjExIDw8IHNoaWZ0OworICAgICAgICBtX2F0dHJpYnV0ZXMg
PSAobV9hdHRyaWJ1dGVzICYgfm1hc2spIHwgKHN0YXRlIDw8IHNoaWZ0KTsKKyAgICB9CisKKyAg
ICBUcmlTdGF0ZSBleHRyYWN0VHJpU3RhdGUodW5zaWduZWQgc2hpZnQpCisgICAgeworICAgICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8VHJpU3RhdGU+KChtX2F0dHJpYnV0ZXMgPj4gc2hpZnQpICYg
MGIxMSk7CisgICAgfQorCisgICAgdW5zaWduZWQgbV9hdHRyaWJ1dGVzOworfTsKKworCit9IC8v
IG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmNwcAppbmRleCA5NzNjMmU4MTY5ZWI4ZmM1ZWFlZjY0NjcwYjQ2MTEzNjIxYTU1
OGEwLi41Yzk0YjkyNWNiZTY1ZTE5MjQxZDQ5YTI4ZjFlMTFhMDlmNjcxMjcwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC00MDQs
NyArNDA0LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgbV9mdW5j
dGlvblByb3RvSGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlvbi5zZXQodm0sIHRoaXMsIGhhc0luc3Rh
bmNlU3ltYm9sRnVuY3Rpb24pOwogICAgIG1fdGhyb3dUeXBlRXJyb3JHZXR0ZXJTZXR0ZXIuaW5p
dExhdGVyKAogICAgICAgICBbXSAoY29uc3QgSW5pdGlhbGl6ZXI8R2V0dGVyU2V0dGVyPiYgaW5p
dCkgewotICAgICAgICAgICAgSlNGdW5jdGlvbiogdGhyb3dlciA9IEpTRnVuY3Rpb246OmNyZWF0
ZShpbml0LnZtLCBpbml0Lm93bmVyLCAwLCBTdHJpbmcoKSwgZ2xvYmFsRnVuY1Rocm93VHlwZUVy
cm9yKTsKKyAgICAgICAgICAgIEpTRnVuY3Rpb24qIHRocm93ZXIgPSBpbml0Lm93bmVyLT50aHJv
d1R5cGVFcnJvckZ1bmN0aW9uKCk7CiAgICAgICAgICAgICBHZXR0ZXJTZXR0ZXIqIGdldHRlclNl
dHRlciA9IEdldHRlclNldHRlcjo6Y3JlYXRlKGluaXQudm0sIGluaXQub3duZXIpOwogICAgICAg
ICAgICAgZ2V0dGVyU2V0dGVyLT5zZXRHZXR0ZXIoaW5pdC52bSwgaW5pdC5vd25lciwgdGhyb3dl
cik7CiAgICAgICAgICAgICBnZXR0ZXJTZXR0ZXItPnNldFNldHRlcihpbml0LnZtLCBpbml0Lm93
bmVyLCB0aHJvd2VyKTsKQEAgLTU4MSw4ICs1ODEsOCBAQCBtXyAjIyBwcm9wZXJOYW1lICMjIFN0
cnVjdHVyZS5zZXQodm0sIHRoaXMsIGluc3RhbmNlVHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0
aAogICAgIE9iamVjdENvbnN0cnVjdG9yKiBvYmplY3RDb25zdHJ1Y3RvciA9IE9iamVjdENvbnN0
cnVjdG9yOjpjcmVhdGUodm0sIHRoaXMsIE9iamVjdENvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1
cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBtX29iamVjdFByb3RvdHlw
ZS5nZXQoKSk7CiAgICAgbV9vYmplY3RDb25zdHJ1Y3Rvci5zZXQodm0sIHRoaXMsIG9iamVjdENv
bnN0cnVjdG9yKTsKIAotICAgIEpTRnVuY3Rpb24qIGRlZmluZVByb3BlcnR5RnVuY3Rpb24gPSBt
X29iamVjdENvbnN0cnVjdG9yLT5hZGREZWZpbmVQcm9wZXJ0eShleGVjLCB0aGlzKTsKLSAgICBt
X2RlZmluZVByb3BlcnR5RnVuY3Rpb24uc2V0KHZtLCB0aGlzLCBkZWZpbmVQcm9wZXJ0eUZ1bmN0
aW9uKTsKKyAgICBKU0Z1bmN0aW9uKiB0aHJvd1R5cGVFcnJvckZ1bmN0aW9uID0gSlNGdW5jdGlv
bjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJpbmcoKSwgZ2xvYmFsRnVuY1Rocm93VHlwZUVycm9y
KTsKKyAgICBtX3Rocm93VHlwZUVycm9yRnVuY3Rpb24uc2V0KHZtLCB0aGlzLCB0aHJvd1R5cGVF
cnJvckZ1bmN0aW9uKTsKIAogICAgIEpTQ2VsbCogZnVuY3Rpb25Db25zdHJ1Y3RvciA9IEZ1bmN0
aW9uQ29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlU3Ry
dWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9mdW5jdGlvblBy
b3RvdHlwZS5nZXQoKSk7CiAgICAgQXJyYXlDb25zdHJ1Y3RvciogYXJyYXlDb25zdHJ1Y3RvciA9
IEFycmF5Q29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgdGhpcywgQXJyYXlDb25zdHJ1Y3Rvcjo6Y3Jl
YXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9hcnJh
eVByb3RvdHlwZS5nZXQoKSwgbV9zcGVjaWVzR2V0dGVyU2V0dGVyLmdldCgpKTsKQEAgLTgwMyw3
ICs4MDMsNyBAQCBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1l
cy0+IGpzTmFtZSwgbG93ZXJOYW1lICMjIENvbnN0cnVjdAogICAgIG1fc3BlY2lhbFBvaW50ZXJz
W1NwZWNpYWw6Ok9iamVjdENvbnN0cnVjdG9yXSA9IG9iamVjdENvbnN0cnVjdG9yOwogICAgIG1f
c3BlY2lhbFBvaW50ZXJzW1NwZWNpYWw6OkFycmF5Q29uc3RydWN0b3JdID0gYXJyYXlDb25zdHJ1
Y3RvcjsKIAotICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExp
bmtUaW1lQ29uc3RhbnQ6OkRlZmluZVByb3BlcnR5RnVuY3Rpb24pXSA9IG1fZGVmaW5lUHJvcGVy
dHlGdW5jdGlvbi5nZXQoKTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVu
c2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpUaHJvd1R5cGVFcnJvckZ1bmN0aW9uKV0gPSBtX3Ro
cm93VHlwZUVycm9yRnVuY3Rpb24uZ2V0KCk7CiAKICAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6
dXNlRG9sbGFyVk0oKSkpIHsKICAgICAgICAgSlNEb2xsYXJWTVByb3RvdHlwZSogZG9sbGFyVk1Q
cm90b3R5cGUgPSBKU0RvbGxhclZNUHJvdG90eXBlOjpjcmVhdGUodm0sIHRoaXMsIEpTRG9sbGFy
Vk1Qcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUu
Z2V0KCkpKTsKQEAgLTEwNjYsNyArMTA2Niw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0
Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNpdG9y
LmFwcGVuZCgmdGhpc09iamVjdC0+bV9ldmFsRnVuY3Rpb24pOwogICAgIHZpc2l0b3IuYXBwZW5k
KCZ0aGlzT2JqZWN0LT5tX2NhbGxGdW5jdGlvbik7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNP
YmplY3QtPm1fYXBwbHlGdW5jdGlvbik7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3Qt
Pm1fZGVmaW5lUHJvcGVydHlGdW5jdGlvbik7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmpl
Y3QtPm1fdGhyb3dUeXBlRXJyb3JGdW5jdGlvbik7CiAgICAgdGhpc09iamVjdC0+bV9hcnJheVBy
b3RvVG9TdHJpbmdGdW5jdGlvbi52aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0LT5tX2Fy
cmF5UHJvdG9WYWx1ZXNGdW5jdGlvbi52aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0LT5t
X2luaXRpYWxpemVQcm9taXNlRnVuY3Rpb24udmlzaXQodmlzaXRvcik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCAwZGVhZDJiZjg0YjU1
ODcxMTJkYzg3Y2Y5NDk2MDQxNzlkMzJlOTQ4Li45NGQ3ZTIzMDUzNTg3NjkxZWEyN2FiMGRmZDNm
NjY2ZTE5Yzc2YmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmgKQEAgLTIzNCw3ICsyMzQsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1
YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBXcml0ZUJhcnJpZXI8SlNGdW5j
dGlvbj4gbV9ldmFsRnVuY3Rpb247CiAgICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1fY2Fs
bEZ1bmN0aW9uOwogICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBtX2FwcGx5RnVuY3Rpb247
Ci0gICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1fZGVmaW5lUHJvcGVydHlGdW5jdGlvbjsK
KyAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV90aHJvd1R5cGVFcnJvckZ1bmN0aW9uOwog
ICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgSlNGdW5jdGlvbj4gbV9hcnJheVByb3Rv
VG9TdHJpbmdGdW5jdGlvbjsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIEpTRnVu
Y3Rpb24+IG1fYXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uOwogICAgIExhenlQcm9wZXJ0eTxKU0ds
b2JhbE9iamVjdCwgSlNGdW5jdGlvbj4gbV9pbml0aWFsaXplUHJvbWlzZUZ1bmN0aW9uOwpAQCAt
NDc5LDcgKzQ3OSw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVk
VmFyaWFibGVPYmplY3QgewogICAgIEpTRnVuY3Rpb24qIGV2YWxGdW5jdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1fZXZhbEZ1bmN0aW9uLmdldCgpOyB9CiAgICAgSlNGdW5jdGlvbiogY2FsbEZ1bmN0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jYWxsRnVuY3Rpb24uZ2V0KCk7IH0KICAgICBKU0Z1bmN0
aW9uKiBhcHBseUZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9hcHBseUZ1bmN0aW9uLmdldCgp
OyB9Ci0gICAgSlNGdW5jdGlvbiogZGVmaW5lUHJvcGVydHlGdW5jdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fZGVmaW5lUHJvcGVydHlGdW5jdGlvbi5nZXQoKTsgfQorICAgIEpTRnVuY3Rpb24qIHRo
cm93VHlwZUVycm9yRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3Rocm93VHlwZUVycm9yRnVu
Y3Rpb24uZ2V0KCk7IH0KICAgICBKU0Z1bmN0aW9uKiBhcnJheVByb3RvVG9TdHJpbmdGdW5jdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fYXJyYXlQcm90b1RvU3RyaW5nRnVuY3Rpb24uZ2V0KHRoaXMp
OyB9CiAgICAgSlNGdW5jdGlvbiogYXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9hcnJheVByb3RvVmFsdWVzRnVuY3Rpb24uZ2V0KHRoaXMpOyB9CiAgICAgSlNGdW5j
dGlvbiogaW5pdGlhbGl6ZVByb21pc2VGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faW5pdGlh
bGl6ZVByb21pc2VGdW5jdGlvbi5nZXQodGhpcyk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAppbmRleCA3ODFmY2JjZTU1Yzcy
NTI2ODIwMjE2NzJjZTg5ZGJhOWE1MjFmNGNhLi4wZmEwY2U2ZDBhZjFiMzA5MWUyZjcyOGQxMDc5
YTM2OWNkZjFmZDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
YmplY3RDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T2JqZWN0Q29uc3RydWN0b3IuY3BwCkBAIC0xMDcsMTQgKzEwNyw2IEBAIHZvaWQgT2JqZWN0Q29u
c3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgT2JqCiAgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0u
cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2V0T3duUHJvcGVydHlOYW1lc1ByaXZhdGVO
YW1lKCksIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlOYW1lcywgRG9udEVudW0sIDEp
OwogfQogCi1KU0Z1bmN0aW9uKiBPYmplY3RDb25zdHJ1Y3Rvcjo6YWRkRGVmaW5lUHJvcGVydHko
RXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQotewotICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgSlNGdW5jdGlvbiogZGVmaW5lUHJvcGVydHlGdW5jdGlv
biA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAzLCB2bS5wcm9wZXJ0eU5h
bWVzLT5kZWZpbmVQcm9wZXJ0eS5zdHJpbmcoKSwgb2JqZWN0Q29uc3RydWN0b3JEZWZpbmVQcm9w
ZXJ0eSk7Ci0gICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFt
ZXMtPmRlZmluZVByb3BlcnR5LCBkZWZpbmVQcm9wZXJ0eUZ1bmN0aW9uLCBEb250RW51bSk7Ci0g
ICAgcmV0dXJuIGRlZmluZVByb3BlcnR5RnVuY3Rpb247Ci19Ci0KIC8vIEVTIDE5LjEuMS4xIE9i
amVjdChbdmFsdWVdKQogc3RhdGljIEFMV0FZU19JTkxJTkUgSlNPYmplY3QqIGNvbnN0cnVjdE9i
amVjdChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgbmV3VGFyZ2V0KQogewpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmgKaW5kZXggODlkNzQ0
YTI3NzRjZDQ3OGUwODI3ZmUxZjNjNGJhYTlhZWY2NGNkOS4uOGZmMmM1NWFlYzI5ZDk1MWNjYjQ0
MDdmYTVjNjIzMTNmN2YxZDBiZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PYmplY3RDb25zdHJ1Y3Rvci5oCkBAIC01NCw4ICs1NCw2IEBAIGNsYXNzIE9iamVjdENv
bnN0cnVjdG9yIDogcHVibGljIEludGVybmFsRnVuY3Rpb24gewogICAgICAgICByZXR1cm4gU3Ry
dWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmpl
Y3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiAgICAgfQogCi0gICAgSlNGdW5jdGlv
biogYWRkRGVmaW5lUHJvcGVydHkoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqKTsKLQogcHJv
dGVjdGVkOgogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCosIE9i
amVjdFByb3RvdHlwZSopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Qcm9wZXJ0eURlc2NyaXB0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Byb3BlcnR5RGVzY3JpcHRvci5oCmluZGV4IGFhNjFlZWE0OTVjNGQxYzlkNWEwZjgyNDc5ZDMy
NDUzNjY1NWEzNjUuLmVlOTcxZjU1MDM2NzY3MzIwOTc5OWU4MTllNWQ0MzAxZGQ1ODQ0ODcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5RGVzY3JpcHRv
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5RGVzY3JpcHRv
ci5oCkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIFByb3BlcnR5RGVzY3JpcHRvcl9oCiAjZGVm
aW5lIFByb3BlcnR5RGVzY3JpcHRvcl9oCiAKKyNpbmNsdWRlICJEZWZpbmVQcm9wZXJ0eUF0dHJp
YnV0ZXMuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpAQCAt
OTMsNiArOTQsMzIgQEAgY2xhc3MgUHJvcGVydHlEZXNjcmlwdG9yIHsKICAgICB1bnNpZ25lZCBt
X3NlZW5BdHRyaWJ1dGVzOwogfTsKIAoraW5saW5lIFByb3BlcnR5RGVzY3JpcHRvciB0b1Byb3Bl
cnR5RGVzY3JpcHRvcihKU1ZhbHVlIHZhbHVlLCBKU1ZhbHVlIGdldHRlciwgSlNWYWx1ZSBzZXR0
ZXIsIERlZmluZVByb3BlcnR5QXR0cmlidXRlcyBhdHRyaWJ1dGVzKQoreworICAgIC8vIFdlIGFz
c3VtZSB0aGF0IHZhbGlkYXRpb24gaXMgYWxyZWFkeSBkb25lLgorICAgIFByb3BlcnR5RGVzY3Jp
cHRvciBkZXNjOworCisgICAgaWYgKGF0dHJpYnV0ZXMuZW51bWVyYWJsZSgpICE9IE1peGVkVHJp
U3RhdGUpCisgICAgICAgIGRlc2Muc2V0RW51bWVyYWJsZShhdHRyaWJ1dGVzLmVudW1lcmFibGUo
KSk7CisKKyAgICBpZiAoYXR0cmlidXRlcy5jb25maWd1cmFibGUoKSAhPSBNaXhlZFRyaVN0YXRl
KQorICAgICAgICBkZXNjLnNldENvbmZpZ3VyYWJsZShhdHRyaWJ1dGVzLmNvbmZpZ3VyYWJsZSgp
KTsKKworICAgIGlmIChhdHRyaWJ1dGVzLmhhc1ZhbHVlKCkpCisgICAgICAgIGRlc2Muc2V0VmFs
dWUodmFsdWUpOworCisgICAgaWYgKGF0dHJpYnV0ZXMud3JpdGFibGUoKSAhPSBNaXhlZFRyaVN0
YXRlKQorICAgICAgICBkZXNjLnNldFdyaXRhYmxlKGF0dHJpYnV0ZXMud3JpdGFibGUoKSk7CisK
KyAgICBpZiAoYXR0cmlidXRlcy5oYXNHZXQoKSkKKyAgICAgICAgZGVzYy5zZXRHZXR0ZXIoZ2V0
dGVyKTsKKworICAgIGlmIChhdHRyaWJ1dGVzLmhhc1NldCgpKQorICAgICAgICBkZXNjLnNldFNl
dHRlcihzZXR0ZXIpOworCisgICAgcmV0dXJuIGRlc2M7Cit9CisKIH0KIAogI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>289915</attachid>
            <date>2016-09-26 22:23:58 -0700</date>
            <delta_ts>2016-09-27 10:13:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162108-20160927142059.patch</filename>
            <type>text/plain</type>
            <size>97032</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA2NDEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
MjE2ZGRiZWMwNWQ2YThjYWMzZDdkYWQwMmI1MmFiYTA4ZTQ1OWYyLi4xOWVlM2IwM2E2YjQzZjhi
NGRhYzUxYmIzMzlmYzgwMjlmMDk0Mzg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNTUgQEAKKzIwMTYtMDktMjYgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0pTQ10gQWRkIGEgbmV3IGJ5dGUgY29kZSBvcF9kZWZpbmVfcHJv
cGVydHkgaW5zdGVhZCBvZiBjYWxsaW5nIGRlZmluZVByb3BlcnR5CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjIxMDgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUbyBjb25zdHJ1Y3QgRVM2IGNsYXNzLCB3
ZSBlbWl0dGVkIGJ5dGVjb2RlIHRoYXQgcGVyZm9ybXMgdGhlIGZvbGxvd2luZyBvcGVyYXRpb25z
LgorCisgICAgICAgICAgICAxLiBjb25zdHJ1Y3QgYSBuZXcgb2JqZWN0CisgICAgICAgICAgICAy
LiBwdXQgImNvbmZpZ3VyYWJsZSIsICJlbnVtZXJhYmxlIiBldGMuIGZpZWxkcworICAgICAgICAg
ICAgMy4gY2FsbCAiZGVmaW5lUHJvcGVydHkiIGZ1bmN0aW9uCisKKyAgICAgICAgSG93ZXZlciwg
dGhpcyBoYXMgYSBwcm9ibGVtcy4gRXZlcnkgdGltZSB3ZSBkZWZpbmUgYSBjbGFzcyBtZXRob2Qs
IHdlIG5lZWQgdG8gY3JlYXRlCisgICAgICAgIGEgbmV3IG9iamVjdCB0byByZXByZXNlbnQgcHJv
cGVydHkgZGVzY3JpcHRvci4gVGhpcyBjYW4gYmUgcmVtb3ZlZCBpZiB3ZSBjYW4gaW50cm9kdWNl
CisgICAgICAgIGEgc3BlY2lhbCBieXRlY29kZSBvciBzcGVjaWFsIGZ1bmN0aW9uLgorCisgICAg
ICAgIFRoaXMgcGF0Y2ggaW50cm9kdWNlcyBuZXcgYnl0ZWNvZGVzLCBvcF9kZWZpbmVfZGF0YV9w
cm9wZXJ0eSBhbmQgb3BfZGVmaW5lX2FjY2Vzc29yX3Byb3BlcnR5LgorICAgICAgICBJbnN0ZWFk
IG9mIHRha2luZyBhbiBvYmplY3QsIHRoZXkgdGFrZXMgc2V2ZXJhbCByZWdpc3RlcnMgdG8gYXZv
aWQgb2JqZWN0IGFsbG9jYXRpb25zLgorICAgICAgICBXZSdyZSBwbGFubmluZyB0byB1c2UgdGhp
cyBieXRlY29kZSB0byBpbXBsZW1lbnQgT2JqZWN0LmRlZmluZVByb3BlcnR5IGluIGJ1aWx0aW4g
SlMgbmV4dC4KKyAgICAgICAgVGhpcyBhbGxvd3MgdXMgdG8gbGV2ZXJhZ2Ugb2JqZWN0IGFsbG9j
YXRpb24gc2lua2luZy4gQW5kIGl0IGFsc28gZ2l2ZXMgdXMgYSBjaGFuY2UgdG8gdXNlCisgICAg
ICAgIGZhc3RlciA6OmdldCBhbmQgOjpoYXNQcm9wZXJ0eSBpbiBKUy4KKworICAgICAgICBPcmln
aW5hbGx5LCBJIGF0dGVtcHRlZCB0byBjcmVhdGUgb25lIGJ5dGVjb2RlLCBvcF9kZWZpbmVfcHJv
cGVydHkuIEhvd2V2ZXIsIGl0IHRha2VzIHRvbyBtdWNoCisgICAgICAgIGNoaWxkcmVuIGluIERG
RyBhbmQgdXNlcyBzbyBtdWNoIHJlZ2lzdGVycyBpbiBERkcuIFRoaXMgbGVhZHMgdHJpY2t5IHBy
b2dyYW0gaW4gMzJiaXQgcGxhdGZvcm1zLgorICAgICAgICBGdXJ0aGVybW9yZSwgaXQgZG9lcyBu
b3QgZml0IHRvIHRoZSBudW1iZXIgb2YgeDY0IGFyZ3VtZW50IHJlZ2lzdGVycy4gU28gaW5zdGVh
ZCwgd2UgaW50cm9kdWNlCisgICAgICAgIHR3byBieXRlY29kZXMuCisKKyAgICAgICAgQW5kIGZv
ciBvcF9kZWZpbmVfYWNjZXNzb3JfcHJvcGVydHksIHdlIHBlcmZvcm0gQ2VsbFVzZSBlZGdlIGZp
bHRlciB0byBnZXR0ZXIgYW5kIHNldHRlciBjaGlsZHJlbi4KKyAgICAgICAgVGhpcyBlZGdlIGZp
bHRlciBtYWtlcyB1cyBwb3NzaWJsZSB0byB1c2UgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYW5kIHJl
ZHVjZSB0aGUgbnVtYmVyIG9mIHVzZWQgcmVnaXN0ZXJzCisgICAgICAgIGluIGNvbXBhcmlzb24g
d2l0aCBKU1ZhbHVlT3BlcmFuZC4gVG8gbWFrZSBjaGlsZHJlbiBDZWxscyBldmVuIGlmIHdlIGRv
IG5vdCBzcGVjaWZ5IHNvbWUgYWNjZXNzb3JzIChmb3IKKyAgICAgICAgZXhhbXBsZSwgeyBnZXQ6
IGZ1bmMsIHNldDogbnVsbCB9IGNhc2UpLCB3ZSBmaWxsIHJlZ2lzdGVycyB3aXRoIHNwZWNpYWwg
dGhyb3dUeXBlRXJyb3JGdW5jdGlvbi4KKyAgICAgICAgVGhlIGF0dHJpYnV0ZXMgYml0c2V0IGtl
ZXAgaW5mb3JtYXRpb24gbGlrZSAiVGhpcyBwcm9wZXJ0eSBkZXNjcmlwdG9yIG9ubHkgaGFzIGdl
dHRlciBzbG90Ii4KKworICAgICAgICBJbiB0aGVzZSB0d28gYnl0ZWNvZGVzLCB3ZSB0YWtlIGF0
dHJpYnV0ZXMgKGNvbmZpZ3VyYWJsZSwgZW51bWVyYWJsZSwgd3JpdGFibGUsIGhhc0dldHRlciBl
dGMuKSBhcworICAgICAgICByZWdpc3RlciBpbnN0ZWFkIG9mIGVtYmVkZGluZyBjb25zdGFudCBp
bnQgdmFsdWUgYmVjYXVzZSB3ZSB3aWxsIHVzZSB0aGVzZSBieXRlY29kZXMgdG8gaW1wbGVtZW50
CisgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSBuZXh0LiBJbiBPYmplY3QuZGVmaW5lUHJv
cGVydHkgY2FzZSwgYW4gYXR0cmlidXRlcyBhcmUgbm90IHN0YXRpY2FsbHkgZGVmaW5lZAorICAg
ICAgICBhdCBieXRlY29kZSBjb21waWxpbmcgdGltZS4KKworICAgICAgICBSdW4gRVM2U2FtcGxl
QmVuY2gvQWlyIDIwIHRpbWVzLiBUaGUgcmVzdWx0IHNob3dzIH4yJSBwZXJmb3JtYW5jZSBpbXBy
b3ZlbWVudC4KKworICAgICAgICBCYXNlbGluZToKKyAgICAgICAgICAgIGZpcnN0SXRlcmF0aW9u
OiAgICAgODQuMDUgbXMgKy0gNC4zNyBtcworICAgICAgICAgICAgYXZlcmFnZVdvcnN0Q2FzZTog
ICA0MC41NCBtcyArLSAyLjgxIG1zCisgICAgICAgICAgICBzdGVhZHlTdGF0ZTogICAgICAgIDMz
MTcuNDkgbXMgKy0gNDguMjUgbXMKKyAgICAgICAgICAgIHN1bW1hcnk6ICAgICAgICAgICAgMjIz
LjUxIG1zICstIDUuMDcgbXMKKworICAgICAgICBQYXRjaGVkOgorICAgICAgICAgICAgZmlyc3RJ
dGVyYXRpb246ICAgICA4NC40NiBtcyArLSA0LjIyIG1zCisgICAgICAgICAgICBhdmVyYWdlV29y
c3RDYXNlOiAgIDQxLjQ4IG1zICstIDIuMzMgbXMKKyAgICAgICAgICAgIHN0ZWFkeVN0YXRlOiAg
ICAgICAgMzI1My40OCBtcyArLSAyOS4zMSBtcworICAgICAgICAgICAgc3VtbWFyeTogICAgICAg
ICAgICAyMjQuNDAgbXMgKy0gNC43MiBtcworCisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3Qu
anNvbjoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVVzZURlZi5oOgorICAgICAgICAoSlND
Ojpjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZURl
ZnNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoK
KyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUpOgorICAgICAgICAqIGJ5dGVj
b2RlL1NwZWNpYWxQb2ludGVyLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRNb3ZlTGlu
a1RpbWVDb25zdGFudCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2Fs
bERlZmluZVByb3BlcnR5KToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuaDoKKyAgICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAg
KEpTQzo6UHJvcGVydHlMaXN0Tm9kZTo6ZW1pdFB1dENvbnN0YW50UHJvcGVydHkpOgorICAgICAg
ICAoSlNDOjpCaXR3aXNlTm90Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Q2xh
c3NFeHByTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6T2JqZWN0UGF0dGVybk5v
ZGU6OmJpbmRWYWx1ZSk6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxp
bmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0
YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToK
KyAgICAgICAgKiBkZmcvREZHQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpj
YXBhYmlsaXR5TGV2ZWwpOgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyaXplLmg6CisgICAgICAg
IChKU0M6OkRGRzo6Y2xvYmJlcml6ZSk6CisgICAgICAgICogZGZnL0RGR0RvZXNHQy5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6ZG9lc0dDKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAg
KiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6Cisg
ICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlv
blByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdTYWZlVG9FeGVjdXRlLmg6
CisgICAgICAgIChKU0M6OkRGRzo6c2FmZVRvRXhlY3V0ZSk6CisgICAgICAgICogZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZURlZmluZURhdGFQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVEZWZpbmVBY2Nlc3NvclByb3BlcnR5KToKKyAgICAgICAgKiBkZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FsbE9w
ZXJhdGlvbik6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcv
REZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExDYXBhYmlsaXRpZXMuY3BwOgorICAgICAg
ICAoSlNDOjpGVEw6OmNhbkNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMu
Y3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTm9kZSk6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVEZWZpbmVEYXRh
UHJvcGVydHkpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxl
RGVmaW5lQWNjZXNzb3JQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvQjM6OmNvbXBpbGVQdXRCeVZhbFdpdGhUaGlzKTogRGVsZXRlZC4KKyAgICAgICAgKiBqaXQv
Q0NhbGxIZWxwZXJzLmNwcDoKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpzZXR1cEZvdXJT
dHViQXJnc0dQUik6IERlbGV0ZWQuCisgICAgICAgICogaml0L0NDYWxsSGVscGVycy5oOgorICAg
ICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OnNldHVwRm91clN0dWJBcmdzR1BSKToKKyAgICAgICAg
KEpTQzo6Q0NhbGxIZWxwZXJzOjpzZXR1cEZpdmVTdHViQXJnc0dQUik6CisgICAgICAgIChKU0M6
OkNDYWxsSGVscGVyczo6c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKToKKyAgICAgICAgKEpT
Qzo6Q0NhbGxIZWxwZXJzOjpzZXR1cFN0dWJBcmdzR1BSKToKKyAgICAgICAgKEpTQzo6Q0NhbGxI
ZWxwZXJzOjpwcmVwYXJlRm9yVGFpbENhbGxTbG93KTogRGVsZXRlZC4KKyAgICAgICAgKiBqaXQv
SklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAg
ICAgICAgKiBqaXQvSklULmg6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuaDoKKyAgICAg
ICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRf
b3BfZGVmaW5lX2RhdGFfcHJvcGVydHkpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZGVm
aW5lX2FjY2Vzc29yX3Byb3BlcnR5KToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJl
dGVyLmFzbToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6CisgICAgICAg
IChKU0M6OlNMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRo
cy5oOgorICAgICAgICAqIHJ1bnRpbWUvRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzLmg6IEFkZGVk
LgorICAgICAgICAoSlNDOjpEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXM6OkRlZmluZVByb3BlcnR5
QXR0cmlidXRlcyk6CisgICAgICAgIChKU0M6OkRlZmluZVByb3BlcnR5QXR0cmlidXRlczo6cmF3
UmVwcmVzZW50YXRpb24pOgorICAgICAgICAoSlNDOjpEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXM6
Omhhc1ZhbHVlKToKKyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzOjpzZXRW
YWx1ZSk6CisgICAgICAgIChKU0M6OkRlZmluZVByb3BlcnR5QXR0cmlidXRlczo6aGFzR2V0KToK
KyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzOjpzZXRHZXQpOgorICAgICAg
ICAoSlNDOjpEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXM6Omhhc1NldCk6CisgICAgICAgIChKU0M6
OkRlZmluZVByb3BlcnR5QXR0cmlidXRlczo6c2V0U2V0KToKKyAgICAgICAgKEpTQzo6RGVmaW5l
UHJvcGVydHlBdHRyaWJ1dGVzOjp3cml0YWJsZSk6CisgICAgICAgIChKU0M6OkRlZmluZVByb3Bl
cnR5QXR0cmlidXRlczo6Y29uZmlndXJhYmxlKToKKyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVy
dHlBdHRyaWJ1dGVzOjplbnVtZXJhYmxlKToKKyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVydHlB
dHRyaWJ1dGVzOjpzZXRXcml0YWJsZSk6CisgICAgICAgIChKU0M6OkRlZmluZVByb3BlcnR5QXR0
cmlidXRlczo6c2V0Q29uZmlndXJhYmxlKToKKyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVydHlB
dHRyaWJ1dGVzOjpzZXRFbnVtZXJhYmxlKToKKyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVydHlB
dHRyaWJ1dGVzOjpmaWxsV2l0aFRyaVN0YXRlKToKKyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVy
dHlBdHRyaWJ1dGVzOjpleHRyYWN0VHJpU3RhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9i
YWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAg
ICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50
aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp0aHJv
d1R5cGVFcnJvckZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmRlZmlu
ZVByb3BlcnR5RnVuY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0Q29u
c3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpPYmplY3RDb25zdHJ1Y3Rvcjo6YWRkRGVmaW5l
UHJvcGVydHkpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3Iu
aDoKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5oOgorICAgICAgICAoSlND
Ojp0b1Byb3BlcnR5RGVzY3JpcHRvcik6CisKIDIwMTYtMDktMjYgIFNhbSBXZWluaWcgIDxzYW1A
d2Via2l0Lm9yZz4KIAogICAgICAgICBNYWtlIERGR1Nsb3dQYXRoR2VuZXJhdG9yIGEgYml0IG1v
cmUgdmFyaWFkaWMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZjczNGY5MTYyM2Zh
NDNkZDU0YTZhMDg2ODkyYTlhYWZiNTE4MTUzNS4uN2M3YzQ2YmRmZjExYmY1NGRkYTg5NzU1NWUz
YmQwMzZhZjE5Yjc5OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIxNjgsNiAr
MjE2OCw3IEBACiAJCUZFRDk0RjJGMTcxRTNFMjMwMEJFNzdBNCAvKiBXYXRjaGRvZy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVEOTRGMkMxNzFFM0Uy
MzAwQkU3N0E0IC8qIFdhdGNoZG9nLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJRkVGMDQwNTExQUFFNjYyRDAwQkQyOEIwIC8qIENvbXBhcmVBbmRT
d2FwVGVzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGRUYwNDA1MDFBQUU2NjJEMDBCRDI4QjAgLyogQ29tcGFyZUFuZFN3YXBUZXN0LmNwcCAqLzsg
fTsKIAkJRkVGRDZGQzYxRDVFNzk5MjAwOEYyRjBCIC8qIEpTU3RyaW5nSW5saW5lcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVGRDZGQzUxRDVFNzk3
MDAwOEYyRjBCIC8qIEpTU3RyaW5nSW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ3M0RBNEE0NzY0QzQ1RkU4NzFCMDQ4NSAvKiBEZWZp
bmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDE2OTk0OEVERTY4RDQwNTRCMDFFRjc5NyAvKiBEZWZpbmVQcm9wZXJ0eUF0
dHJpYnV0ZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWENvbnRhaW5l
ckl0ZW1Qcm94eSBzZWN0aW9uICovCkBAIC00NDk4LDYgKzQ0OTksNyBAQAogCQlGRUYwNDA1MDFB
QUU2NjJEMDBCRDI4QjAgLyogQ29tcGFyZUFuZFN3YXBUZXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENvbXBhcmVBbmRTd2FwVGVzdC5jcHA7IHBhdGggPSBBUEkv
dGVzdHMvQ29tcGFyZUFuZFN3YXBUZXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRkVGMDQwNTIxQUFFQzRFRDAwQkQyOEIwIC8qIENvbXBhcmVBbmRTd2FwVGVzdC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBDb21wYXJlQW5kU3dhcFRlc3QuaDsgcGF0aCA9
IEFQSS90ZXN0cy9Db21wYXJlQW5kU3dhcFRlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRkVGRDZGQzUxRDVFNzk3MDAwOEYyRjBCIC8qIEpTU3RyaW5nSW5saW5lcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1N0cmluZ0lubGluZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTY5OTQ4RURFNjhENDA1NEIwMUVGNzk3IC8qIERlZmluZVBy
b3BlcnR5QXR0cmlidXRlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBEZWZp
bmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaDsgcGF0aCA9IERlZmluZVByb3BlcnR5QXR0cmlidXRlcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogLyogRW5kIFBCWEZpbGVSZWZlcmVuY2Ugc2Vj
dGlvbiAqLwogCiAvKiBCZWdpbiBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9uICovCkBA
IC02MjQxLDYgKzYyNDMsNyBAQAogCQkJCTcwOUZCODY2MUFFMzM1QzYwMDM5RDA2OSAvKiBXZWFr
U2V0UHJvdG90eXBlLmggKi8sCiAJCQkJQTdEQ0I3NzkxMkUzRDkwNTAwOTExOTQwIC8qIFdyaXRl
QmFycmllci5oICovLAogCQkJCUMyQjZENzUyMThBMzM3OTMwMDRBOTMwMSAvKiBXcml0ZUJhcnJp
ZXJJbmxpbmVzLmggKi8sCisJCQkJMTY5OTQ4RURFNjhENDA1NEIwMUVGNzk3IC8qIERlZmluZVBy
b3BlcnR5QXR0cmlidXRlcy5oICovLAogCQkJKTsKIAkJCXBhdGggPSBydW50aW1lOwogCQkJc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTgzNzYsNiArODM3OSw3IEBACiAJCQkJODY3MDRCNDMx
MkRCOEE4MTAwQTlGRTdCIC8qIFlhcnJTeW50YXhDaGVja2VyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBNzlEM0VEOUM1MDY0REQwQTg0NjZBM0EgLyogTW9kdWxlU2NvcGVEYXRhLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlEOTcyMjc1MkRDNTQ0NTlCOTEyNUI1MzkgLyogSlNNb2R1bGVMb2FkZXIuaCBp
biBIZWFkZXJzICovLAorCQkJCTQ3M0RBNEE0NzY0QzQ1RkU4NzFCMDQ4NSAvKiBEZWZpbmVQcm9w
ZXJ0eUF0dHJpYnV0ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBs
b3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCmluZGV4IGRjNTk5ODA1NjkxY2RhNTdiNWQz
NjExNTk5ZGQ1ZjI4ZDcxMDJkYmUuLjU3NmRlNDAwNjA0ZDEwMTQ3NTFjYzYzYmVhY2VjNzdhNTVm
ZDRmZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUxpc3QuanNvbgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVM
aXN0Lmpzb24KQEAgLTgxLDYgKzgxLDggQEAKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3B1
dF9nZXR0ZXJfc2V0dGVyX2J5X2lkIiwgImxlbmd0aCIgOiA2IH0sCiAgICAgICAgICAgICB7ICJu
YW1lIiA6ICJvcF9wdXRfZ2V0dGVyX2J5X3ZhbCIsICJsZW5ndGgiIDogNSB9LAogICAgICAgICAg
ICAgeyAibmFtZSIgOiAib3BfcHV0X3NldHRlcl9ieV92YWwiLCAibGVuZ3RoIiA6IDUgfSwKKyAg
ICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2RlZmluZV9kYXRhX3Byb3BlcnR5IiwgImxlbmd0aCIg
OiA1IH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9kZWZpbmVfYWNjZXNzb3JfcHJvcGVy
dHkiLCAibGVuZ3RoIiA6IDYgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2ptcCIsICJs
ZW5ndGgiIDogMiB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfanRydWUiLCAibGVuZ3Ro
IiA6IDMgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2pmYWxzZSIsICJsZW5ndGgiIDog
MyB9LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
VXNlRGVmLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYu
aAppbmRleCBkYWJjZTRlZGYwMzI2NDhjMDg5Njg5OTgyYTg4MTdlYzYwMGE4MTdlLi40NWE5ZTA5
Y2JkODJlZjY4OWQzYjM0ZjhlZTUwZTExZWI5NWEzNzYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaApAQCAtMTQ0LDYgKzE0NCwyMyBAQCB2
b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqIGNvZGVCbG9jaywgT3Bjb2Rl
SUQgb3Bjb2RlSUQsIEluc3RydWN0aQogICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1
Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQpOwogICAgICAgICByZXR1
cm47CiAgICAgfQorICAgIGNhc2Ugb3BfZGVmaW5lX2RhdGFfcHJvcGVydHk6IHsKKyAgICAgICAg
QVNTRVJUKG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdID4gNCk7CisgICAgICAgIGZ1bmN0b3IoY29k
ZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7
CisgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3Ry
dWN0aW9uWzJdLnUub3BlcmFuZCk7CisgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVj
dGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzNdLnUub3BlcmFuZCk7CisgICAgICAgIGZ1bmN0
b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzRdLnUub3Bl
cmFuZCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgY2FzZSBvcF9kZWZpbmVfYWNjZXNz
b3JfcHJvcGVydHk6IHsKKyAgICAgICAgQVNTRVJUKG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdID4g
NSk7CisgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGlu
c3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CisgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0
cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzJdLnUub3BlcmFuZCk7CisgICAgICAgIGZ1
bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzNdLnUu
b3BlcmFuZCk7CisgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2Rl
SUQsIGluc3RydWN0aW9uWzRdLnUub3BlcmFuZCk7CisgICAgICAgIGZ1bmN0b3IoY29kZUJsb2Nr
LCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzVdLnUub3BlcmFuZCk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CiAgICAgY2FzZSBvcF9nZXRfcHJvcGVydHlfZW51bWVyYXRvcjoK
ICAgICBjYXNlIG9wX2dldF9lbnVtZXJhYmxlX2xlbmd0aDoKICAgICBjYXNlIG9wX25ld19mdW5j
X2V4cDoKQEAgLTMzMiw2ICszNDksOCBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZz
ZXQoQmxvY2sqIGNvZGVCbG9jaywgT3Bjb2RlSUQgb3Bjb2RlSUQsIEluc3RydWN0aQogICAgIGNh
c2Ugb3BfcHV0X2J5X3ZhbDoKICAgICBjYXNlIG9wX3B1dF9ieV92YWxfZGlyZWN0OgogICAgIGNh
c2Ugb3BfcHV0X2J5X2luZGV4OgorICAgIGNhc2Ugb3BfZGVmaW5lX2RhdGFfcHJvcGVydHk6Cisg
ICAgY2FzZSBvcF9kZWZpbmVfYWNjZXNzb3JfcHJvcGVydHk6CiAgICAgY2FzZSBvcF9wcm9maWxl
X3R5cGU6CiAgICAgY2FzZSBvcF9wcm9maWxlX2NvbnRyb2xfZmxvdzoKICAgICBjYXNlIG9wX3B1
dF90b19hcmd1bWVudHM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suY3BwCmluZGV4IDdjOWI1YzJiYTZkNmQ0MjdkMDc5N2IyYWY0ODE4ZGI5M2Y4OTkxNjkuLjdm
Nzc0YTkxNmJiMTQyMDgxMTQ4NGQwNWY1NGQyYTI5NGFmNWM2NDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC0xMjMzLDYgKzEyMzMsMjUgQEAg
dm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZSgKICAgICAgICAgICAgIG91dC5wcmludGYoIiVz
LCAlcywgJWQsICVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSku
ZGF0YSgpLCBuMCwgcmVnaXN0ZXJOYW1lKHIyKS5kYXRhKCkpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9kZWZpbmVfZGF0YV9wcm9wZXJ0eTogeworICAg
ICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBpbnQgcjEg
PSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIGludCByMiA9ICgrK2l0KS0+dS5vcGVy
YW5kOworICAgICAgICAgICAgaW50IHIzID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAg
ICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJkZWZpbmVfZGF0
YV9wcm9wZXJ0eSIpOworICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCAlcywgJXMiLCBy
ZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIHJlZ2lzdGVy
TmFtZShyMikuZGF0YSgpLCByZWdpc3Rlck5hbWUocjMpLmRhdGEoKSk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIG9wX2RlZmluZV9hY2Nlc3Nvcl9wcm9wZXJ0
eTogeworICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAg
ICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIGludCByMiA9ICgrK2l0
KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgaW50IHIzID0gKCsraXQpLT51Lm9wZXJhbmQ7Cisg
ICAgICAgICAgICBpbnQgcjQgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIHByaW50
TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgImRlZmluZV9hY2Nlc3Nvcl9w
cm9wZXJ0eSIpOworICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCAlcywgJXMsICVzIiwg
cmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCByZWdpc3Rl
ck5hbWUocjIpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIzKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShy
NCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGNhc2Ug
b3BfZGVsX2J5X2lkOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsK
ICAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWNpYWxQb2ludGVyLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY2lhbFBvaW50ZXIuaAppbmRleCA2NGZiMjNmY2YyN2Q0
MTI1MDQ4MDIxOWU4YzhjNDFiN2M0MWE3ZWY1Li45MGNiM2E5OTI2ZDYyZTYwNGIxOGMzYjNkYmQ1
NTIyYjQ1MmFlZGZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
U3BlY2lhbFBvaW50ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3Bl
Y2lhbFBvaW50ZXIuaApAQCAtNDIsNyArNDIsNyBAQCBlbnVtIFBvaW50ZXIgewogfSAvLyBuYW1l
c3BhY2UgU3BlY2lhbAogCiBlbnVtIGNsYXNzIExpbmtUaW1lQ29uc3RhbnQgewotICAgIERlZmlu
ZVByb3BlcnR5RnVuY3Rpb24sCisgICAgVGhyb3dUeXBlRXJyb3JGdW5jdGlvbiwKIH07CiBjb25z
dCB1bnNpZ25lZCBMaW5rVGltZUNvbnN0YW50Q291bnQgPSAxOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmlu
ZGV4IGNjNzE3MjNlZjNjMGY1ZDRiYjNjY2RlY2I4YmE5NzYyNzIzZDMyZmUuLmIwYzNjY2Q1YWNi
MjU1NjE4OGQ5MjgyMjI1YTU3NGIxZjA0NzJjMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0zNSw2
ICszNSw3IEBACiAjaW5jbHVkZSAiQnVpbHRpbkV4ZWN1dGFibGVzLmgiCiAjaW5jbHVkZSAiQnl0
ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uaCIKICNpbmNsdWRlICJCeXRlY29kZUxpdmVuZXNzQW5h
bHlzaXMuaCIKKyNpbmNsdWRlICJEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaCIKICNpbmNsdWRl
ICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0dl
bmVyYXRvckZ1bmN0aW9uLmgiCkBAIC0xNTQzLDYgKzE1NDQsOSBAQCBSZWdpc3RlcklEKiBCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdE1vdmVMaW5rVGltZUNvbnN0YW50KFJlZ2lzdGVySUQqIGRzdCwg
TGlua1RpbQogICAgICAgICBtX2xpbmtUaW1lQ29uc3RhbnRSZWdpc3RlcnNbY29uc3RhbnRJbmRl
eF0gPSAmbV9jb25zdGFudFBvb2xSZWdpc3RlcnNbaW5kZXhdOwogICAgIH0KIAorICAgIGlmICgh
ZHN0KQorICAgICAgICByZXR1cm4gbV9saW5rVGltZUNvbnN0YW50UmVnaXN0ZXJzW2NvbnN0YW50
SW5kZXhdOworCiAgICAgZW1pdE9wY29kZShvcF9tb3YpOwogICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZChkc3QtPmluZGV4KCkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtX2xpbmtUaW1l
Q29uc3RhbnRSZWdpc3RlcnNbY29uc3RhbnRJbmRleF0tPmluZGV4KCkpOwpAQCAtMzI2OCwzOCAr
MzI3Miw1OSBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TG9nU2hhZG93Q2hpY2tlblRh
aWxJZk5lY2Vzc2FyeSgpCiB9CiAKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxsRGVm
aW5lUHJvcGVydHkoUmVnaXN0ZXJJRCogbmV3T2JqLCBSZWdpc3RlcklEKiBwcm9wZXJ0eU5hbWVS
ZWdpc3RlciwKLSAgICBSZWdpc3RlcklEKiB2YWx1ZVJlZ2lzdGVyLCBSZWdpc3RlcklEKiBnZXR0
ZXJSZWdpc3RlciwgUmVnaXN0ZXJJRCogc2V0dGVyUmVnaXN0ZXIsIHVuc2lnbmVkIG9wdGlvbnMs
IGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBwb3NpdGlvbikKKyAgICBSZWdpc3RlcklEKiB2YWx1ZVJl
Z2lzdGVyLCBSZWdpc3RlcklEKiBnZXR0ZXJSZWdpc3RlciwgUmVnaXN0ZXJJRCogc2V0dGVyUmVn
aXN0ZXIsIHVuc2lnbmVkIG9wdGlvbnMpCiB7Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGRlc2Ny
aXB0b3JSZWdpc3RlciA9IGVtaXROZXdPYmplY3QobmV3VGVtcG9yYXJ5KCkpOwotCi0gICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IHRydWVSZWdpc3RlciA9IGVtaXRMb2FkKG5ld1RlbXBvcmFyeSgpLCB0
cnVlKTsKKyAgICBEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMgYXR0cmlidXRlczsKICAgICBpZiAo
b3B0aW9ucyAmIFByb3BlcnR5Q29uZmlndXJhYmxlKQotICAgICAgICBlbWl0RGlyZWN0UHV0QnlJ
ZChkZXNjcmlwdG9yUmVnaXN0ZXIuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS5jb25maWd1cmFibGUs
IHRydWVSZWdpc3Rlci5nZXQoKSwgUHJvcGVydHlOb2RlOjpVbmtub3duKTsKKyAgICAgICAgYXR0
cmlidXRlcy5zZXRDb25maWd1cmFibGUodHJ1ZSk7CisKICAgICBpZiAob3B0aW9ucyAmIFByb3Bl
cnR5V3JpdGFibGUpCi0gICAgICAgIGVtaXREaXJlY3RQdXRCeUlkKGRlc2NyaXB0b3JSZWdpc3Rl
ci5nZXQoKSwgcHJvcGVydHlOYW1lcygpLndyaXRhYmxlLCB0cnVlUmVnaXN0ZXIuZ2V0KCksIFBy
b3BlcnR5Tm9kZTo6VW5rbm93bik7Ci0gICAgZWxzZSBpZiAodmFsdWVSZWdpc3RlcikgewotICAg
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZmFsc2VSZWdpc3RlciA9IGVtaXRMb2FkKG5ld1RlbXBv
cmFyeSgpLCBmYWxzZSk7Ci0gICAgICAgIGVtaXREaXJlY3RQdXRCeUlkKGRlc2NyaXB0b3JSZWdp
c3Rlci5nZXQoKSwgcHJvcGVydHlOYW1lcygpLndyaXRhYmxlLCBmYWxzZVJlZ2lzdGVyLmdldCgp
LCBQcm9wZXJ0eU5vZGU6OlVua25vd24pOwotICAgIH0KKyAgICAgICAgYXR0cmlidXRlcy5zZXRX
cml0YWJsZSh0cnVlKTsKKyAgICBlbHNlIGlmICh2YWx1ZVJlZ2lzdGVyKQorICAgICAgICBhdHRy
aWJ1dGVzLnNldFdyaXRhYmxlKGZhbHNlKTsKKwogICAgIGlmIChvcHRpb25zICYgUHJvcGVydHlF
bnVtZXJhYmxlKQotICAgICAgICBlbWl0RGlyZWN0UHV0QnlJZChkZXNjcmlwdG9yUmVnaXN0ZXIu
Z2V0KCksIHByb3BlcnR5TmFtZXMoKS5lbnVtZXJhYmxlLCB0cnVlUmVnaXN0ZXIuZ2V0KCksIFBy
b3BlcnR5Tm9kZTo6VW5rbm93bik7CisgICAgICAgIGF0dHJpYnV0ZXMuc2V0RW51bWVyYWJsZSh0
cnVlKTsKIAogICAgIGlmICh2YWx1ZVJlZ2lzdGVyKQotICAgICAgICBlbWl0RGlyZWN0UHV0QnlJ
ZChkZXNjcmlwdG9yUmVnaXN0ZXIuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS52YWx1ZSwgdmFsdWVS
ZWdpc3RlciwgUHJvcGVydHlOb2RlOjpVbmtub3duKTsKKyAgICAgICAgYXR0cmlidXRlcy5zZXRW
YWx1ZSgpOwogICAgIGlmIChnZXR0ZXJSZWdpc3RlcikKLSAgICAgICAgZW1pdERpcmVjdFB1dEJ5
SWQoZGVzY3JpcHRvclJlZ2lzdGVyLmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkuZ2V0LCBnZXR0ZXJS
ZWdpc3RlciwgUHJvcGVydHlOb2RlOjpVbmtub3duKTsKKyAgICAgICAgYXR0cmlidXRlcy5zZXRH
ZXQoKTsKICAgICBpZiAoc2V0dGVyUmVnaXN0ZXIpCi0gICAgICAgIGVtaXREaXJlY3RQdXRCeUlk
KGRlc2NyaXB0b3JSZWdpc3Rlci5nZXQoKSwgcHJvcGVydHlOYW1lcygpLnNldCwgc2V0dGVyUmVn
aXN0ZXIsIFByb3BlcnR5Tm9kZTo6VW5rbm93bik7CisgICAgICAgIGF0dHJpYnV0ZXMuc2V0U2V0
KCk7CiAKLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZGVmaW5lUHJvcGVydHlSZWdpc3RlciA9IGVt
aXRNb3ZlTGlua1RpbWVDb25zdGFudChuZXdUZW1wb3JhcnkoKSwgTGlua1RpbWVDb25zdGFudDo6
RGVmaW5lUHJvcGVydHlGdW5jdGlvbik7CisgICAgQVNTRVJUKCF2YWx1ZVJlZ2lzdGVyIHx8ICgh
Z2V0dGVyUmVnaXN0ZXIgJiYgIXNldHRlclJlZ2lzdGVyKSk7CiAKLSAgICBDYWxsQXJndW1lbnRz
IGNhbGxBcmd1bWVudHMoKnRoaXMsIG51bGxwdHIsIDMpOwotICAgIGVtaXRMb2FkKGNhbGxBcmd1
bWVudHMudGhpc1JlZ2lzdGVyKCksIGpzVW5kZWZpbmVkKCkpOwotICAgIGVtaXRNb3ZlKGNhbGxB
cmd1bWVudHMuYXJndW1lbnRSZWdpc3RlcigwKSwgbmV3T2JqKTsKLSAgICBlbWl0TW92ZShjYWxs
QXJndW1lbnRzLmFyZ3VtZW50UmVnaXN0ZXIoMSksIHByb3BlcnR5TmFtZVJlZ2lzdGVyKTsKLSAg
ICBlbWl0TW92ZShjYWxsQXJndW1lbnRzLmFyZ3VtZW50UmVnaXN0ZXIoMiksIGRlc2NyaXB0b3JS
ZWdpc3Rlci5nZXQoKSk7CisgICAgaWYgKGF0dHJpYnV0ZXMuaGFzR2V0KCkgfHwgYXR0cmlidXRl
cy5oYXNTZXQoKSkgeworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGhyb3dUeXBlRXJyb3JG
dW5jdGlvbjsKKyAgICAgICAgaWYgKCFhdHRyaWJ1dGVzLmhhc0dldCgpIHx8ICFhdHRyaWJ1dGVz
Lmhhc1NldCgpKQorICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3JGdW5jdGlvbiA9IGVtaXRNb3Zl
TGlua1RpbWVDb25zdGFudChudWxscHRyLCBMaW5rVGltZUNvbnN0YW50OjpUaHJvd1R5cGVFcnJv
ckZ1bmN0aW9uKTsKIAotICAgIGVtaXRDYWxsKG5ld1RlbXBvcmFyeSgpLCBkZWZpbmVQcm9wZXJ0
eVJlZ2lzdGVyLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIHBvc2l0
aW9uLCBwb3NpdGlvbiwgcG9zaXRpb24pOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZ2V0
dGVyOworICAgICAgICBpZiAoYXR0cmlidXRlcy5oYXNHZXQoKSkKKyAgICAgICAgICAgIGdldHRl
ciA9IGdldHRlclJlZ2lzdGVyOworICAgICAgICBlbHNlCisgICAgICAgICAgICBnZXR0ZXIgPSB0
aHJvd1R5cGVFcnJvckZ1bmN0aW9uOworCisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzZXR0
ZXI7CisgICAgICAgIGlmIChhdHRyaWJ1dGVzLmhhc1NldCgpKQorICAgICAgICAgICAgc2V0dGVy
ID0gc2V0dGVyUmVnaXN0ZXI7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHNldHRlciA9IHRo
cm93VHlwZUVycm9yRnVuY3Rpb247CisKKyAgICAgICAgZW1pdE9wY29kZShvcF9kZWZpbmVfYWNj
ZXNzb3JfcHJvcGVydHkpOworICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobmV3T2JqLT5p
bmRleCgpKTsKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHByb3BlcnR5TmFtZVJlZ2lz
dGVyLT5pbmRleCgpKTsKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGdldHRlci0+aW5k
ZXgoKSk7CisgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChzZXR0ZXItPmluZGV4KCkpOwor
ICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIo
YXR0cmlidXRlcy5yYXdSZXByZXNlbnRhdGlvbigpKSktPmluZGV4KCkpOworICAgIH0gZWxzZSB7
CisgICAgICAgIGVtaXRPcGNvZGUob3BfZGVmaW5lX2RhdGFfcHJvcGVydHkpOworICAgICAgICBp
bnN0cnVjdGlvbnMoKS5hcHBlbmQobmV3T2JqLT5pbmRleCgpKTsKKyAgICAgICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKHByb3BlcnR5TmFtZVJlZ2lzdGVyLT5pbmRleCgpKTsKKyAgICAgICAgaW5z
dHJ1Y3Rpb25zKCkuYXBwZW5kKHZhbHVlUmVnaXN0ZXItPmluZGV4KCkpOworICAgICAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQoZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoYXR0cmlidXRlcy5y
YXdSZXByZXNlbnRhdGlvbigpKSktPmluZGV4KCkpOworICAgIH0KIH0KIAogUmVnaXN0ZXJJRCog
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXR1cm4oUmVnaXN0ZXJJRCogc3JjKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5o
CmluZGV4IGQzMjY0YzRhMDg3N2EzNjJlOTA0ZTFmODM2YmJkNDU2MDQyOWUwZmUuLjllNmNkYmEz
NjIzZTkyNjI2Y2M4ZmQzOTdmMDllNzE0MzNmYjFjYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTU4OCw3
ICs1ODgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIFByb3BlcnR5RW51bWVyYWJs
ZSAgID0gMSA8PCAyLAogICAgICAgICB9OwogICAgICAgICB2b2lkIGVtaXRDYWxsRGVmaW5lUHJv
cGVydHkoUmVnaXN0ZXJJRCogbmV3T2JqLCBSZWdpc3RlcklEKiBwcm9wZXJ0eU5hbWVSZWdpc3Rl
ciwKLSAgICAgICAgICAgIFJlZ2lzdGVySUQqIHZhbHVlUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIGdl
dHRlclJlZ2lzdGVyLCBSZWdpc3RlcklEKiBzZXR0ZXJSZWdpc3RlciwgdW5zaWduZWQgb3B0aW9u
cywgY29uc3QgSlNUZXh0UG9zaXRpb24mKTsKKyAgICAgICAgICAgIFJlZ2lzdGVySUQqIHZhbHVl
UmVnaXN0ZXIsIFJlZ2lzdGVySUQqIGdldHRlclJlZ2lzdGVyLCBSZWdpc3RlcklEKiBzZXR0ZXJS
ZWdpc3RlciwgdW5zaWduZWQgb3B0aW9ucyk7CiAKICAgICAgICAgdm9pZCBlbWl0RW51bWVyYXRp
b24oVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIGVudW1lcmF0aW9uTm9kZSwgRXhwcmVzc2lvbk5v
ZGUqIHN1YmplY3ROb2RlLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPHZvaWQoQnl0ZWNvZGVHZW5lcmF0
b3ImLCBSZWdpc3RlcklEKik+JiBjYWxsQmFjaywgVmFyaWFibGVFbnZpcm9ubWVudE5vZGUqID0g
bnVsbHB0ciwgUmVnaXN0ZXJJRCogZm9yTG9vcFN5bWJvbFRhYmxlID0gbnVsbHB0cik7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2Vu
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNw
cAppbmRleCBjMjY4YTI2MDhkMzhkNmRlYTdhY2I4MTc3MDdlNTlmMWM1MjVmMjgyLi4yYjU5MGM4
N2MwZjE2YjAwZjYyYzAzZmY4NjYxYjU5MzBmZDYwZTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC01OTAsMTIgKzU5
MCwxMiBAQCB2b2lkIFByb3BlcnR5TGlzdE5vZGU6OmVtaXRQdXRDb25zdGFudFByb3BlcnR5KEJ5
dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZwogICAgICAgICBBU1NFUlQobm9kZS5uZWVk
c1N1cGVyQmluZGluZygpKTsKICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByb3BlcnR5TmFt
ZVJlZ2lzdGVyOwogICAgICAgICBpZiAobm9kZS5uYW1lKCkpCi0gICAgICAgICAgICBwcm9wZXJ0
eU5hbWVSZWdpc3RlciA9IGdlbmVyYXRvci5lbWl0TG9hZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5
KCksICpub2RlLm5hbWUoKSk7CisgICAgICAgICAgICBwcm9wZXJ0eU5hbWVSZWdpc3RlciA9IGdl
bmVyYXRvci5lbWl0TG9hZChudWxscHRyLCAqbm9kZS5uYW1lKCkpOwogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICBwcm9wZXJ0eU5hbWVSZWdpc3RlciA9IGdlbmVyYXRvci5lbWl0Tm9kZShub2Rl
Lm1fZXhwcmVzc2lvbik7CiAKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRTZXRGdW5jdGlvbk5hbWVJ
Zk5lZWRlZChub2RlLm1fYXNzaWduLCB2YWx1ZS5nZXQoKSwgcHJvcGVydHlOYW1lUmVnaXN0ZXIu
Z2V0KCkpOwotICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGxEZWZpbmVQcm9wZXJ0eShuZXdPYmos
IHByb3BlcnR5TmFtZVJlZ2lzdGVyLmdldCgpLCB2YWx1ZS5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0
ciwgQnl0ZWNvZGVHZW5lcmF0b3I6OlByb3BlcnR5Q29uZmlndXJhYmxlIHwgQnl0ZWNvZGVHZW5l
cmF0b3I6OlByb3BlcnR5V3JpdGFibGUsIG1fcG9zaXRpb24pOworICAgICAgICBnZW5lcmF0b3Iu
ZW1pdENhbGxEZWZpbmVQcm9wZXJ0eShuZXdPYmosIHByb3BlcnR5TmFtZVJlZ2lzdGVyLmdldCgp
LCB2YWx1ZS5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0ciwgQnl0ZWNvZGVHZW5lcmF0b3I6OlByb3Bl
cnR5Q29uZmlndXJhYmxlIHwgQnl0ZWNvZGVHZW5lcmF0b3I6OlByb3BlcnR5V3JpdGFibGUpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmIChjb25zdCBhdXRvKiBpZGVudGlmaWVyID0g
bm9kZS5uYW1lKCkpIHsKQEAgLTYwNSw3ICs2MDUsNyBAQCB2b2lkIFByb3BlcnR5TGlzdE5vZGU6
OmVtaXRQdXRDb25zdGFudFByb3BlcnR5KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJl
ZwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IGluZGV4ID0gZ2VuZXJhdG9yLmVtaXRMb2FkKGdlbmVyYXRvci5uZXdUZW1wb3Jhcnko
KSwganNOdW1iZXIob3B0aW9uYWxJbmRleC52YWx1ZSgpKSk7CisgICAgICAgIFJlZlB0cjxSZWdp
c3RlcklEPiBpbmRleCA9IGdlbmVyYXRvci5lbWl0TG9hZChudWxscHRyLCBqc051bWJlcihvcHRp
b25hbEluZGV4LnZhbHVlKCkpKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXREaXJlY3RQdXRCeVZh
bChuZXdPYmosIGluZGV4LmdldCgpLCB2YWx1ZS5nZXQoKSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CkBAIC0xNjIzLDcgKzE2MjMsNyBAQCBSZWdpc3RlcklEKiBVbmFyeVBsdXNOb2RlOjplbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRAogIAogUmVn
aXN0ZXJJRCogQml0d2lzZU5vdE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYg
Z2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNy
YzIgPSBnZW5lcmF0b3IuZW1pdExvYWQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBqc051bWJl
cigtMSkpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzcmMyID0gZ2VuZXJhdG9yLmVtaXRMb2Fk
KG51bGxwdHIsIGpzTnVtYmVyKC0xKSk7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNyYzEgPSBn
ZW5lcmF0b3IuZW1pdE5vZGUobV9leHByKTsKICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRCaW5h
cnlPcChvcF9iaXR4b3IsIGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgc3JjMS5nZXQo
KSksIHNyYzEuZ2V0KCksIHNyYzIuZ2V0KCksIE9wZXJhbmRUeXBlcyhtX2V4cHItPnJlc3VsdERl
c2NyaXB0b3IoKSwgUmVzdWx0VHlwZTo6bnVtYmVyVHlwZUlzSW50MzIoKSkpOwogfQpAQCAtMzYw
MywxMiArMzYwMywxMiBAQCBSZWdpc3RlcklEKiBDbGFzc0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRAogICAgICAgICBlbWl0UHV0
SG9tZU9iamVjdChnZW5lcmF0b3IsIGNvbnN0cnVjdG9yLmdldCgpLCBwcm90b3R5cGUuZ2V0KCkp
OwogICAgIH0KIAotICAgIFJlZlB0cjxSZWdpc3RlcklEPiBjb25zdHJ1Y3Rvck5hbWVSZWdpc3Rl
ciA9IGdlbmVyYXRvci5lbWl0TG9hZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHByb3BlcnR5
TmFtZXMuY29uc3RydWN0b3IpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBjb25zdHJ1Y3Rvck5h
bWVSZWdpc3RlciA9IGdlbmVyYXRvci5lbWl0TG9hZChudWxscHRyLCBwcm9wZXJ0eU5hbWVzLmNv
bnN0cnVjdG9yKTsKICAgICBnZW5lcmF0b3IuZW1pdENhbGxEZWZpbmVQcm9wZXJ0eShwcm90b3R5
cGUuZ2V0KCksIGNvbnN0cnVjdG9yTmFtZVJlZ2lzdGVyLmdldCgpLCBjb25zdHJ1Y3Rvci5nZXQo
KSwgbnVsbHB0ciwgbnVsbHB0ciwKLSAgICAgICAgQnl0ZWNvZGVHZW5lcmF0b3I6OlByb3BlcnR5
Q29uZmlndXJhYmxlIHwgQnl0ZWNvZGVHZW5lcmF0b3I6OlByb3BlcnR5V3JpdGFibGUsIG1fcG9z
aXRpb24pOworICAgICAgICBCeXRlY29kZUdlbmVyYXRvcjo6UHJvcGVydHlDb25maWd1cmFibGUg
fCBCeXRlY29kZUdlbmVyYXRvcjo6UHJvcGVydHlXcml0YWJsZSk7CiAKLSAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gcHJvdG90eXBlTmFtZVJlZ2lzdGVyID0gZ2VuZXJhdG9yLmVtaXRMb2FkKGdlbmVy
YXRvci5uZXdUZW1wb3JhcnkoKSwgcHJvcGVydHlOYW1lcy5wcm90b3R5cGUpOwotICAgIGdlbmVy
YXRvci5lbWl0Q2FsbERlZmluZVByb3BlcnR5KGNvbnN0cnVjdG9yLmdldCgpLCBwcm90b3R5cGVO
YW1lUmVnaXN0ZXIuZ2V0KCksIHByb3RvdHlwZS5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0ciwgMCwg
bV9wb3NpdGlvbik7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByb3RvdHlwZU5hbWVSZWdpc3Rl
ciA9IGdlbmVyYXRvci5lbWl0TG9hZChudWxscHRyLCBwcm9wZXJ0eU5hbWVzLnByb3RvdHlwZSk7
CisgICAgZ2VuZXJhdG9yLmVtaXRDYWxsRGVmaW5lUHJvcGVydHkoY29uc3RydWN0b3IuZ2V0KCks
IHByb3RvdHlwZU5hbWVSZWdpc3Rlci5nZXQoKSwgcHJvdG90eXBlLmdldCgpLCBudWxscHRyLCBu
dWxscHRyLCAwKTsKIAogICAgIGlmIChtX3N0YXRpY01ldGhvZHMpCiAgICAgICAgIGdlbmVyYXRv
ci5lbWl0Tm9kZShjb25zdHJ1Y3Rvci5nZXQoKSwgbV9zdGF0aWNNZXRob2RzKTsKQEAgLTM4NzAs
NyArMzg3MCw3IEBAIHZvaWQgT2JqZWN0UGF0dGVybk5vZGU6OmJpbmRWYWx1ZShCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiByaHMpCiAgICAgICAgICAgICBpZiAoIW9w
dGlvbmFsSW5kZXgpCiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKHRlbXAu
Z2V0KCksIHJocywgdGFyZ2V0LnByb3BlcnR5TmFtZSk7CiAgICAgICAgICAgICBlbHNlIHsKLSAg
ICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaW5kZXggPSBnZW5lcmF0b3IuZW1pdExv
YWQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBqc051bWJlcihvcHRpb25hbEluZGV4LnZhbHVl
KCkpKTsKKyAgICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaW5kZXggPSBnZW5lcmF0
b3IuZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIob3B0aW9uYWxJbmRleC52YWx1ZSgpKSk7CiAg
ICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRCeVZhbCh0ZW1wLmdldCgpLCByaHMsIGlu
ZGV4LmdldCgpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGlu
ZXMuaAppbmRleCA4Yzc0MTI2NjI2NWM4MTQ4MDZmMWYwZmI3MTQ4MzdlMjNjNTBkYzhkLi5lOTZi
MTA1Y2FmMWEyZTEwNDFjOTliZjYxYThiOGI2NzM0ZGFjMWQzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5o
CkBAIC0yNjU3LDYgKzI2NTcsMTEgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0
U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAg
Y2xvYmJlcldvcmxkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2xvYmJlckxpbWl0KTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQorCisgICAgY2FzZSBEZWZpbmVEYXRhUHJvcGVydHk6CisgICAgY2Fz
ZSBEZWZpbmVBY2Nlc3NvclByb3BlcnR5OgorICAgICAgICBjbG9iYmVyV29ybGQobm9kZS0+b3Jp
Z2luLnNlbWFudGljLCBjbG9iYmVyTGltaXQpOworICAgICAgICBicmVhazsKICAgICAgICAgCiAg
ICAgY2FzZSBJbjogewogICAgICAgICAvLyBGSVhNRTogV2UgY2FuIGRldGVybWluZSB3aGVuIHRo
ZSBwcm9wZXJ0eSBkZWZpbml0ZWx5IGV4aXN0cyBiYXNlZCBvbiBhYnN0cmFjdApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCAwNDUyMjgw
ZGQyNmY0MGIwYmNhNDVkMzg1MWQxMTBkZjQxNmEwZmE3Li4wYjVmYjk1ZDk1N2IxMmE0MzgxY2Zm
YjliNmMyYTRlYjMyYWIzYTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtNDIzOCw2ICs0MjM4LDM4IEBAIGJvb2wgQnl0ZUNvZGVQ
YXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICBORVhUX09QQ09E
RShvcF9wdXRfYnlfdmFsX3dpdGhfdGhpcyk7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIG9w
X2RlZmluZV9kYXRhX3Byb3BlcnR5OiB7CisgICAgICAgICAgICBOb2RlKiBiYXNlID0gZ2V0KFZp
cnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSk7CisgICAgICAg
ICAgICBOb2RlKiBwcm9wZXJ0eSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0
aW9uWzJdLnUub3BlcmFuZCkpOworICAgICAgICAgICAgTm9kZSogdmFsdWUgPSBnZXQoVmlydHVh
bFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpKTsKKyAgICAgICAgICAg
IE5vZGUqIGF0dHJpYnV0ZXMgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlv
bls0XS51Lm9wZXJhbmQpKTsKKworICAgICAgICAgICAgYWRkVmFyQXJnQ2hpbGQoYmFzZSk7Cisg
ICAgICAgICAgICBhZGRWYXJBcmdDaGlsZChwcm9wZXJ0eSk7CisgICAgICAgICAgICBhZGRWYXJB
cmdDaGlsZCh2YWx1ZSk7CisgICAgICAgICAgICBhZGRWYXJBcmdDaGlsZChhdHRyaWJ1dGVzKTsK
KyAgICAgICAgICAgIGFkZFRvR3JhcGgoTm9kZTo6VmFyQXJnLCBEZWZpbmVEYXRhUHJvcGVydHks
IE9wSW5mbygwKSwgT3BJbmZvKDApKTsKKworICAgICAgICAgICAgTkVYVF9PUENPREUob3BfZGVm
aW5lX2RhdGFfcHJvcGVydHkpOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBvcF9kZWZpbmVf
YWNjZXNzb3JfcHJvcGVydHk6IHsKKyAgICAgICAgICAgIE5vZGUqIGJhc2UgPSBnZXQoVmlydHVh
bFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpKTsKKyAgICAgICAgICAg
IE5vZGUqIHByb3BlcnR5ID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25b
Ml0udS5vcGVyYW5kKSk7CisgICAgICAgICAgICBOb2RlKiBnZXR0ZXIgPSBnZXQoVmlydHVhbFJl
Z2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpKTsKKyAgICAgICAgICAgIE5v
ZGUqIHNldHRlciA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzRdLnUu
b3BlcmFuZCkpOworICAgICAgICAgICAgTm9kZSogYXR0cmlidXRlcyA9IGdldChWaXJ0dWFsUmVn
aXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzVdLnUub3BlcmFuZCkpOworCisgICAgICAgICAgICBh
ZGRWYXJBcmdDaGlsZChiYXNlKTsKKyAgICAgICAgICAgIGFkZFZhckFyZ0NoaWxkKHByb3BlcnR5
KTsKKyAgICAgICAgICAgIGFkZFZhckFyZ0NoaWxkKGdldHRlcik7CisgICAgICAgICAgICBhZGRW
YXJBcmdDaGlsZChzZXR0ZXIpOworICAgICAgICAgICAgYWRkVmFyQXJnQ2hpbGQoYXR0cmlidXRl
cyk7CisgICAgICAgICAgICBhZGRUb0dyYXBoKE5vZGU6OlZhckFyZywgRGVmaW5lQWNjZXNzb3JQ
cm9wZXJ0eSwgT3BJbmZvKDApLCBPcEluZm8oMCkpOworCisgICAgICAgICAgICBORVhUX09QQ09E
RShvcF9kZWZpbmVfYWNjZXNzb3JfcHJvcGVydHkpOworICAgICAgICB9CisKICAgICAgICAgY2Fz
ZSBvcF90cnlfZ2V0X2J5X2lkOgogICAgICAgICBjYXNlIG9wX2dldF9ieV9pZDoKICAgICAgICAg
Y2FzZSBvcF9nZXRfYnlfaWRfcHJvdG9fbG9hZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAppbmRleCA0OGZhNDk1NzJlYzUwZWMxNWQwMzc3NmE1MjJk
NmZiZDM1MmJmZTlhLi5jMzIzZDQ2ZmJjM2NmNWMxMDQ5ZmEyNmZjMGUxOTBmMjI3MWE0NzE4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCkBAIC0x
NzMsNiArMTczLDggQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJRCBv
cGNvZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWMKICAgICBjYXNlIG9wX3B1dF9n
ZXR0ZXJfc2V0dGVyX2J5X2lkOgogICAgIGNhc2Ugb3BfcHV0X2dldHRlcl9ieV92YWw6CiAgICAg
Y2FzZSBvcF9wdXRfc2V0dGVyX2J5X3ZhbDoKKyAgICBjYXNlIG9wX2RlZmluZV9kYXRhX3Byb3Bl
cnR5OgorICAgIGNhc2Ugb3BfZGVmaW5lX2FjY2Vzc29yX3Byb3BlcnR5OgogICAgIGNhc2Ugb3Bf
ZGVsX2J5X2lkOgogICAgIGNhc2Ugb3BfZGVsX2J5X3ZhbDoKICAgICBjYXNlIG9wX2ptcDoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKaW5kZXggYzFjM2ZkZGRiN2E3
YTYwYjQ2NTJhMTdjYWUxYTk4M2Y4Y2FlOTYxMS4uY2NjZGY4YmNkNjI2YWE0ZDY3NjM3M2NkMjg0
MmUyZTU2YWUwYWMxMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
bG9iYmVyaXplLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXpl
LmgKQEAgLTQ4Niw2ICs0ODYsOCBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2Rl
KiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgIGNhc2Ug
UHV0R2V0dGVyU2V0dGVyQnlJZDoKICAgICBjYXNlIFB1dEdldHRlckJ5VmFsOgogICAgIGNhc2Ug
UHV0U2V0dGVyQnlWYWw6CisgICAgY2FzZSBEZWZpbmVEYXRhUHJvcGVydHk6CisgICAgY2FzZSBE
ZWZpbmVBY2Nlc3NvclByb3BlcnR5OgogICAgIGNhc2UgRGVsZXRlQnlJZDoKICAgICBjYXNlIERl
bGV0ZUJ5VmFsOgogICAgIGNhc2UgQXJyYXlQdXNoOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdEb2VzR0MuY3BwCmluZGV4IDJkY2Y1NWQyZWQyOGFhZTYwYjZiOGI3YjliZjZkYTA3MTlkOTJk
ZDUuLmY2OWQyZjlmZjk3ZDQwOGE4ZjJlODE3NmY1YWE3YjNjOWM3NTNkYmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKQEAgLTExMSw2ICsxMTEsOCBAQCBib29sIGRv
ZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBQdXRHZXR0ZXJTZXR0ZXJC
eUlkOgogICAgIGNhc2UgUHV0R2V0dGVyQnlWYWw6CiAgICAgY2FzZSBQdXRTZXR0ZXJCeVZhbDoK
KyAgICBjYXNlIERlZmluZURhdGFQcm9wZXJ0eToKKyAgICBjYXNlIERlZmluZUFjY2Vzc29yUHJv
cGVydHk6CiAgICAgY2FzZSBEZWxldGVCeUlkOgogICAgIGNhc2UgRGVsZXRlQnlWYWw6CiAgICAg
Y2FzZSBDaGVja1N0cnVjdHVyZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRml4dXBQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVw
UGhhc2UuY3BwCmluZGV4IDZlZTUxNDJmNzhmNjBiZjEwOTY4M2M4Yjg5YzE1ZDBlNDU4YjNmZTAu
LmQzYzU5NDEwNGFjOTMwZDU0MWUyNjY5MmEwNWFkNTViOWRkNjk5MzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcApAQCAtMTYwMiw2ICsxNjAyLDM5IEBA
IGNsYXNzIEZpeHVwUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgZml4RWRnZTxV
bnR5cGVkVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBicmVhazsKIAorICAgICAg
ICBjYXNlIERlZmluZURhdGFQcm9wZXJ0eTogeworICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNl
PihtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDApKTsKKyAgICAgICAgICAgIEVkZ2UmIHByb3Bl
cnR5RWRnZSA9IG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSk7CisgICAgICAgICAgICBpZiAo
cHJvcGVydHlFZGdlLT5zaG91bGRTcGVjdWxhdGVTeW1ib2woKSkKKyAgICAgICAgICAgICAgICBm
aXhFZGdlPFN5bWJvbFVzZT4ocHJvcGVydHlFZGdlKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHBy
b3BlcnR5RWRnZS0+c2hvdWxkU3BlY3VsYXRlU3RyaW5nSWRlbnQoKSkKKyAgICAgICAgICAgICAg
ICBmaXhFZGdlPFN0cmluZ0lkZW50VXNlPihwcm9wZXJ0eUVkZ2UpOworICAgICAgICAgICAgZWxz
ZSBpZiAocHJvcGVydHlFZGdlLT5zaG91bGRTcGVjdWxhdGVTdHJpbmcoKSkKKyAgICAgICAgICAg
ICAgICBmaXhFZGdlPFN0cmluZ1VzZT4ocHJvcGVydHlFZGdlKTsKKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICBmaXhFZGdlPFVudHlwZWRVc2U+KHByb3BlcnR5RWRnZSk7CisgICAg
ICAgICAgICBmaXhFZGdlPFVudHlwZWRVc2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMikp
OworICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2Rl
LCAzKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgRGVm
aW5lQWNjZXNzb3JQcm9wZXJ0eTogeworICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNlPihtX2dy
YXBoLnZhckFyZ0NoaWxkKG5vZGUsIDApKTsKKyAgICAgICAgICAgIEVkZ2UmIHByb3BlcnR5RWRn
ZSA9IG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSk7CisgICAgICAgICAgICBpZiAocHJvcGVy
dHlFZGdlLT5zaG91bGRTcGVjdWxhdGVTeW1ib2woKSkKKyAgICAgICAgICAgICAgICBmaXhFZGdl
PFN5bWJvbFVzZT4ocHJvcGVydHlFZGdlKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHByb3BlcnR5
RWRnZS0+c2hvdWxkU3BlY3VsYXRlU3RyaW5nSWRlbnQoKSkKKyAgICAgICAgICAgICAgICBmaXhF
ZGdlPFN0cmluZ0lkZW50VXNlPihwcm9wZXJ0eUVkZ2UpOworICAgICAgICAgICAgZWxzZSBpZiAo
cHJvcGVydHlFZGdlLT5zaG91bGRTcGVjdWxhdGVTdHJpbmcoKSkKKyAgICAgICAgICAgICAgICBm
aXhFZGdlPFN0cmluZ1VzZT4ocHJvcGVydHlFZGdlKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICBmaXhFZGdlPFVudHlwZWRVc2U+KHByb3BlcnR5RWRnZSk7CisgICAgICAgICAg
ICBmaXhFZGdlPENlbGxVc2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMikpOworICAgICAg
ICAgICAgZml4RWRnZTxDZWxsVXNlPihtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDMpKTsKKyAg
ICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgNCkp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwogI2lmICFBU1NFUlRfRElTQUJMRUQK
ICAgICAgICAgLy8gSGF2ZSB0aGVzZSBuby1vcCBjYXNlcyBoZXJlIHRvIGVuc3VyZSB0aGF0IG5v
Ym9keSBmb3JnZXRzIHRvIGFkZCBoYW5kbGVycyBmb3IgbmV3IG9wY29kZXMuCiAgICAgICAgIGNh
c2UgU2V0QXJndW1lbnQ6CkBAIC0xNjcxLDggKzE3MDQsNiBAQCBjbGFzcyBGaXh1cFBoYXNlIDog
cHVibGljIFBoYXNlIHsKICAgICAgICAgY2FzZSBHZXRCeVZhbFdpdGhUaGlzOgogICAgICAgICBj
YXNlIENvbXBhcmVFcVB0cjoKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgCi0gICAg
ICAgICAgICBicmVhazsKICNlbHNlCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBicmVh
azsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAppbmRleCAxZjM1ZWIyZDkw
M2I0NjZjMjQxOGMzZGMxYjYxODUzZWJlNWQ2OTc5Li4yNTE1ZWIzNDJiZDczODllMTE4ODdhYmQ4
MmYwZWNmZjAxMDdkYmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGVUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5o
CkBAIC0xOTksNiArMTk5LDggQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAg
IG1hY3JvKFB1dEdldHRlclNldHRlckJ5SWQsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNy
byhQdXRHZXR0ZXJCeVZhbCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFB1dFNldHRl
ckJ5VmFsLCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8oRGVmaW5lRGF0YVByb3BlcnR5
LCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUhhc1ZhckFyZ3MpIFwKKyAgICBtYWNybyhEZWZpbmVB
Y2Nlc3NvclByb3BlcnR5LCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUhhc1ZhckFyZ3MpIFwKICAg
ICBtYWNybyhEZWxldGVCeUlkLCBOb2RlUmVzdWx0Qm9vbGVhbiB8IE5vZGVNdXN0R2VuZXJhdGUp
IFwKICAgICBtYWNybyhEZWxldGVCeVZhbCwgTm9kZVJlc3VsdEJvb2xlYW4gfCBOb2RlTXVzdEdl
bmVyYXRlKSBcCiAgICAgbWFjcm8oQ2hlY2tTdHJ1Y3R1cmUsIE5vZGVNdXN0R2VuZXJhdGUpIFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCmluZGV4IDdlOGNj
NThjOGQ4MzM4OWI2Y2QyOTExZDVhYWU4ZDM3ODQ2NTA1ODguLmI2OGM4YWQxNTQ3YjZlZGU5ODMy
MWVkMWYzMzA2MmNiZjgzMDM5NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
cGVyYXRpb25zLmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkRGR1RvRlRMRGVmZXJy
ZWRDb21waWxhdGlvbkNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiREZHVG9GVExGb3JPU1JFbnRyeURl
ZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5oIgogI2luY2x1ZGUgIkRGR1dvcmtsaXN0LmgiCisj
aW5jbHVkZSAiRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzLmgiCiAjaW5jbHVkZSAiRGlyZWN0QXJn
dW1lbnRzLmgiCiAjaW5jbHVkZSAiRlRMRm9yT1NSRW50cnlKSVRDb2RlLmgiCiAjaW5jbHVkZSAi
RlRMT1NSRW50cnkuaCIKQEAgLTk5NCw2ICs5OTUsOTIgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblB1dEJ5VmFsV2l0aFRoaXMoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBl
bmMKICAgICBwdXRXaXRoVGhpczxmYWxzZT4oZXhlYywgZW5jb2RlZEJhc2UsIGVuY29kZWRUaGlz
LCBlbmNvZGVkVmFsdWUsIHByb3BlcnR5KTsKIH0KIAorQUxXQVlTX0lOTElORSBzdGF0aWMgdm9p
ZCBkZWZpbmVEYXRhUHJvcGVydHkoRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0sIEpTT2JqZWN0KiBi
YXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIGludDMy
X3QgYXR0cmlidXRlcykKK3sKKyAgICBQcm9wZXJ0eURlc2NyaXB0b3IgZGVzY3JpcHRvciA9IHRv
UHJvcGVydHlEZXNjcmlwdG9yKHZhbHVlLCBqc1VuZGVmaW5lZCgpLCBqc1VuZGVmaW5lZCgpLCBE
ZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMoYXR0cmlidXRlcykpOworICAgIEFTU0VSVCgoZGVzY3Jp
cHRvci5hdHRyaWJ1dGVzKCkgJiBBY2Nlc3NvcikgfHwgKCFkZXNjcmlwdG9yLmlzQWNjZXNzb3JE
ZXNjcmlwdG9yKCkpKTsKKyAgICBiYXNlLT5tZXRob2RUYWJsZSh2bSktPmRlZmluZU93blByb3Bl
cnR5KGJhc2UsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgdHJ1ZSk7Cit9CisKK3Zv
aWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWZpbmVEYXRhUHJvcGVydHkoRXhlY1N0YXRlKiBl
eGVjLCBKU09iamVjdCogYmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFByb3BlcnR5LCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIGludDMyX3QgYXR0cmlidXRlcykKK3sKKyAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBl
eGVjKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBJ
ZGVudGlmaWVyIHByb3BlcnR5TmFtZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkUHJvcGVydHkp
LnRvUHJvcGVydHlLZXkoZXhlYyk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9p
ZCgpKTsKKyAgICBkZWZpbmVEYXRhUHJvcGVydHkoZXhlYywgdm0sIGJhc2UsIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSksIGF0dHJpYnV0ZXMpOworfQorCit2b2lk
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVmaW5lRGF0YVByb3BlcnR5U3RyaW5nKEV4ZWNTdGF0
ZSogZXhlYywgSlNPYmplY3QqIGJhc2UsIEpTU3RyaW5nKiBwcm9wZXJ0eSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlLCBpbnQzMl90IGF0dHJpYnV0ZXMpCit7CisgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSWRlbnRpZmll
ciBwcm9wZXJ0eU5hbWUgPSBwcm9wZXJ0eS0+dG9JZGVudGlmaWVyKGV4ZWMpOworICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisgICAgZGVmaW5lRGF0YVByb3BlcnR5KGV4
ZWMsIHZtLCBiYXNlLCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUp
LCBhdHRyaWJ1dGVzKTsKK30KKwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlZmluZURh
dGFQcm9wZXJ0eVN0cmluZ0lkZW50KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGJhc2UsIFVu
aXF1ZWRTdHJpbmdJbXBsKiBwcm9wZXJ0eSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBp
bnQzMl90IGF0dHJpYnV0ZXMpCit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBOYXRp
dmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CisgICAgZGVmaW5lRGF0YVByb3Bl
cnR5KGV4ZWMsIHZtLCBiYXNlLCBJZGVudGlmaWVyOjpmcm9tVWlkKCZ2bSwgcHJvcGVydHkpLCBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSwgYXR0cmlidXRlcyk7Cit9CisKK3ZvaWQgSklU
X09QRVJBVElPTiBvcGVyYXRpb25EZWZpbmVEYXRhUHJvcGVydHlTeW1ib2woRXhlY1N0YXRlKiBl
eGVjLCBKU09iamVjdCogYmFzZSwgU3ltYm9sKiBwcm9wZXJ0eSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlLCBpbnQzMl90IGF0dHJpYnV0ZXMpCit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CisgICAgZGVm
aW5lRGF0YVByb3BlcnR5KGV4ZWMsIHZtLCBiYXNlLCBJZGVudGlmaWVyOjpmcm9tVWlkKHByb3Bl
cnR5LT5wcml2YXRlTmFtZSgpKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSksIGF0dHJp
YnV0ZXMpOworfQorCitBTFdBWVNfSU5MSU5FIHN0YXRpYyB2b2lkIGRlZmluZUFjY2Vzc29yUHJv
cGVydHkoRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0sIEpTT2JqZWN0KiBiYXNlLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTT2JqZWN0KiBnZXR0ZXIsIEpTT2JqZWN0KiBzZXR0ZXIs
IGludDMyX3QgYXR0cmlidXRlcykKK3sKKyAgICBQcm9wZXJ0eURlc2NyaXB0b3IgZGVzY3JpcHRv
ciA9IHRvUHJvcGVydHlEZXNjcmlwdG9yKGpzVW5kZWZpbmVkKCksIGdldHRlciwgc2V0dGVyLCBE
ZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMoYXR0cmlidXRlcykpOworICAgIEFTU0VSVCgoZGVzY3Jp
cHRvci5hdHRyaWJ1dGVzKCkgJiBBY2Nlc3NvcikgfHwgKCFkZXNjcmlwdG9yLmlzQWNjZXNzb3JE
ZXNjcmlwdG9yKCkpKTsKKyAgICBiYXNlLT5tZXRob2RUYWJsZSh2bSktPmRlZmluZU93blByb3Bl
cnR5KGJhc2UsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgdHJ1ZSk7Cit9CisKK3Zv
aWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWZpbmVBY2Nlc3NvclByb3BlcnR5KEV4ZWNTdGF0
ZSogZXhlYywgSlNPYmplY3QqIGJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRQcm9wZXJ0eSwg
SlNPYmplY3QqIGdldHRlciwgSlNPYmplY3QqIHNldHRlciwgaW50MzJfdCBhdHRyaWJ1dGVzKQor
eworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcigmdm0sIGV4ZWMpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKworICAgIElkZW50aWZpZXIgcHJvcGVydHlOYW1lID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRQcm9wZXJ0eSkudG9Qcm9wZXJ0eUtleShleGVjKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCB2b2lkKCkpOworICAgIGRlZmluZUFjY2Vzc29yUHJvcGVydHkoZXhlYywgdm0sIGJh
c2UsIHByb3BlcnR5TmFtZSwgZ2V0dGVyLCBzZXR0ZXIsIGF0dHJpYnV0ZXMpOworfQorCit2b2lk
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eVN0cmluZyhFeGVj
U3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlLCBKU1N0cmluZyogcHJvcGVydHksIEpTT2JqZWN0
KiBnZXR0ZXIsIEpTT2JqZWN0KiBzZXR0ZXIsIGludDMyX3QgYXR0cmlidXRlcykKK3sKKyAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZt
LCBleGVjKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAg
ICBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSA9IHByb3BlcnR5LT50b0lkZW50aWZpZXIoZXhlYyk7
CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICBkZWZpbmVBY2Nl
c3NvclByb3BlcnR5KGV4ZWMsIHZtLCBiYXNlLCBwcm9wZXJ0eU5hbWUsIGdldHRlciwgc2V0dGVy
LCBhdHRyaWJ1dGVzKTsKK30KKwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlZmluZUFj
Y2Vzc29yUHJvcGVydHlTdHJpbmdJZGVudChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNl
LCBVbmlxdWVkU3RyaW5nSW1wbCogcHJvcGVydHksIEpTT2JqZWN0KiBnZXR0ZXIsIEpTT2JqZWN0
KiBzZXR0ZXIsIGludDMyX3QgYXR0cmlidXRlcykKK3sKKyAgICBWTSYgdm0gPSBleGVjLT52bSgp
OworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKKyAgICBkZWZp
bmVBY2Nlc3NvclByb3BlcnR5KGV4ZWMsIHZtLCBiYXNlLCBJZGVudGlmaWVyOjpmcm9tVWlkKCZ2
bSwgcHJvcGVydHkpLCBnZXR0ZXIsIHNldHRlciwgYXR0cmlidXRlcyk7Cit9CisKK3ZvaWQgSklU
X09QRVJBVElPTiBvcGVyYXRpb25EZWZpbmVBY2Nlc3NvclByb3BlcnR5U3ltYm9sKEV4ZWNTdGF0
ZSogZXhlYywgSlNPYmplY3QqIGJhc2UsIFN5bWJvbCogcHJvcGVydHksIEpTT2JqZWN0KiBnZXR0
ZXIsIEpTT2JqZWN0KiBzZXR0ZXIsIGludDMyX3QgYXR0cmlidXRlcykKK3sKKyAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVj
KTsKKyAgICBkZWZpbmVBY2Nlc3NvclByb3BlcnR5KGV4ZWMsIHZtLCBiYXNlLCBJZGVudGlmaWVy
Ojpmcm9tVWlkKHByb3BlcnR5LT5wcml2YXRlTmFtZSgpKSwgZ2V0dGVyLCBzZXR0ZXIsIGF0dHJp
YnV0ZXMpOworfQorCiBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0FycmF5KEV4ZWNT
dGF0ZSogZXhlYywgU3RydWN0dXJlKiBhcnJheVN0cnVjdHVyZSwgdm9pZCogYnVmZmVyLCBzaXpl
X3Qgc2l6ZSkKIHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKaW5kZXggNTI3YmZlNTg3NmFmYzc4MzdiYTMwZmQyMTBk
NWE0N2MzYjI5NTFlNC4uODQyMjM4NzQxMTI1ZmY0ZTE1Y2MzN2I0NjAwYjBjYmZjMTQyOTA2MyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKQEAgLTExNCw2ICsx
MTQsMTQgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRXaXRoVGhpcyhFeGVj
U3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEoKIHZvaWQgSklUX09QRVJBVElPTiBvcGVy
YXRpb25QdXRCeUlkV2l0aFRoaXNTdHJpY3QoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5U
RVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxXaXRoVGhpcyhFeGVj
U3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blB1dEJ5VmFsV2l0aFRoaXNTdHJpY3QoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsK
K3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWZpbmVEYXRhUHJvcGVydHkoRXhlY1N0YXRl
KiwgSlNPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIGludDMyX3QpIFdU
Rl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWZpbmVEYXRhUHJvcGVy
dHlTdHJpbmcoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBKU1N0cmluZyosIEVuY29kZWRKU1ZhbHVl
LCBpbnQzMl90KSBXVEZfSU5URVJOQUw7Cit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVm
aW5lRGF0YVByb3BlcnR5U3RyaW5nSWRlbnQoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBVbmlxdWVk
U3RyaW5nSW1wbCosIEVuY29kZWRKU1ZhbHVlLCBpbnQzMl90KSBXVEZfSU5URVJOQUw7Cit2b2lk
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVmaW5lRGF0YVByb3BlcnR5U3ltYm9sKEV4ZWNTdGF0
ZSosIEpTT2JqZWN0KiwgU3ltYm9sKiwgRW5jb2RlZEpTVmFsdWUsIGludDMyX3QpIFdURl9JTlRF
Uk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWZpbmVBY2Nlc3NvclByb3BlcnR5
KEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEpTT2JqZWN0KiwgSlNPYmpl
Y3QqLCBpbnQzMl90KSBXVEZfSU5URVJOQUw7Cit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
RGVmaW5lQWNjZXNzb3JQcm9wZXJ0eVN0cmluZyhFeGVjU3RhdGUqLCBKU09iamVjdCosIEpTU3Ry
aW5nKiwgSlNPYmplY3QqLCBKU09iamVjdCosIGludDMyX3QpIFdURl9JTlRFUk5BTDsKK3ZvaWQg
SklUX09QRVJBVElPTiBvcGVyYXRpb25EZWZpbmVBY2Nlc3NvclByb3BlcnR5U3RyaW5nSWRlbnQo
RXhlY1N0YXRlKiwgSlNPYmplY3QqLCBVbmlxdWVkU3RyaW5nSW1wbCosIEpTT2JqZWN0KiwgSlNP
YmplY3QqLCBpbnQzMl90KSBXVEZfSU5URVJOQUw7Cit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eVN5bWJvbChFeGVjU3RhdGUqLCBKU09iamVjdCosIFN5
bWJvbCosIEpTT2JqZWN0KiwgSlNPYmplY3QqLCBpbnQzMl90KSBXVEZfSU5URVJOQUw7CiBFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFycmF5UHVzaChFeGVjU3RhdGUqLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEpTQXJyYXkqKSBXVEZfSU5URVJOQUw7CiBFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFycmF5UHVzaERvdWJsZShFeGVjU3Rh
dGUqLCBkb3VibGUgdmFsdWUsIEpTQXJyYXkqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFycmF5UG9wKEV4ZWNTdGF0ZSosIEpTQXJyYXkqKSBX
VEZfSU5URVJOQUw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1By
ZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4IDA2ZGI0MGViNjc2NjcyNDZk
MzQ5MDkwNTkxOWJmNWFiZDAwZWI5OWUuLjg3ZGJlODNhODg5MGMxZDdhZDM0OGUwNTRlNWE3OWU5
ZDVhNDQyZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGlj
dGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC0xMDQwLDYgKzEwNDAsOCBAQCBj
bGFzcyBQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAg
IGNhc2UgUHV0R2V0dGVyU2V0dGVyQnlJZDoKICAgICAgICAgY2FzZSBQdXRHZXR0ZXJCeVZhbDoK
ICAgICAgICAgY2FzZSBQdXRTZXR0ZXJCeVZhbDoKKyAgICAgICAgY2FzZSBEZWZpbmVEYXRhUHJv
cGVydHk6CisgICAgICAgIGNhc2UgRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eToKICAgICAgICAgY2Fz
ZSBERkc6Okp1bXA6CiAgICAgICAgIGNhc2UgQnJhbmNoOgogICAgICAgICBjYXNlIFN3aXRjaDoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKaW5kZXggMjJi
OTM0MDA1ODNhYzZkZjg2M2IwYmUzOGY2YjgzMzZhNTA0MTlhYy4uYzEzMmY5NTc0YjI1ZTY0ZTZh
Y2M1NjE2MGI5NDc5NTgyYjkzYWYxMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTYWZlVG9FeGVjdXRlLmgKQEAgLTIxNCw2ICsyMTQsOCBAQCBib29sIHNhZmVUb0V4ZWN1dGUo
QWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAg
Y2FzZSBQdXRHZXR0ZXJTZXR0ZXJCeUlkOgogICAgIGNhc2UgUHV0R2V0dGVyQnlWYWw6CiAgICAg
Y2FzZSBQdXRTZXR0ZXJCeVZhbDoKKyAgICBjYXNlIERlZmluZURhdGFQcm9wZXJ0eToKKyAgICBj
YXNlIERlZmluZUFjY2Vzc29yUHJvcGVydHk6CiAgICAgY2FzZSBDaGVja1N0cnVjdHVyZToKICAg
ICBjYXNlIEdldEV4ZWN1dGFibGU6CiAgICAgY2FzZSBHZXRCdXR0ZXJmbHk6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IDc3NzFhOTUx
MWIyYTg1YTIwYzg4OTE2ZmE0MTkzMTQ3N2JjNzYwNTcuLjNkNGI4ZDlhYWI1MTEwNGU3YTliYzI3
OGFmZTJjMTZjNGMwOWE0MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwCkBAIC04NjM5LDYgKzg2MzksMTgzIEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVDb21wYXJlRXFQdHIoTm9kZSogbm9kZSkKICAgICBibGVzc2VkQm9vbGVh
blJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogfQogCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlRGVmaW5lRGF0YVByb3BlcnR5KE5vZGUqIG5vZGUpCit7CisjaWYgVVNFKEpTVkFMVUU2NCkK
KyAgICBzdGF0aWNfYXNzZXJ0KEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzID49IDUsICJXZSBh
cmUgYXNzdW1pbmcgd2UgaGF2ZSBlbm91Z2ggcmVnaXN0ZXJzIHRvIG1ha2UgdGhpcyBjYWxsIHdp
dGhvdXQgaW5jcmVtZW50YWxseSBzZXR0aW5nIHVwIHRoZSBhcmd1bWVudHMuIik7CisjZWxzZQor
ICAgIHN0YXRpY19hc3NlcnQoR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMgPj0gNiwgIldlIGFy
ZSBhc3N1bWluZyB3ZSBoYXZlIGVub3VnaCByZWdpc3RlcnMgdG8gbWFrZSB0aGlzIGNhbGwgd2l0
aG91dCBpbmNyZW1lbnRhbGx5IHNldHRpbmcgdXAgdGhlIGFyZ3VtZW50cy4iKTsKKyNlbmRpZgor
CisgICAgYXV0byBjb21waWxlV2l0aEF0dHJpYnV0ZSA9IFsmXShhdXRvIGF0dHJpYnV0ZXMpIHsK
KyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBtX2ppdC5ncmFwaCgpLnZh
ckFyZ0NoaWxkKG5vZGUsIDApKTsKKyAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigp
OworCisgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG1faml0LmdyYXBoKCkudmFy
QXJnQ2hpbGQobm9kZSwgMikpOworICAgICAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1
ZS5qc1ZhbHVlUmVncygpOworCisgICAgICAgIEVkZ2UmIHByb3BlcnR5RWRnZSA9IG1faml0Lmdy
YXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMSk7CisgICAgICAgIHN3aXRjaCAocHJvcGVydHlFZGdl
LnVzZUtpbmQoKSkgeworICAgICAgICBjYXNlIFN0cmluZ1VzZTogeworICAgICAgICAgICAgU3Bl
Y3VsYXRlQ2VsbE9wZXJhbmQgcHJvcGVydHkodGhpcywgcHJvcGVydHlFZGdlKTsKKyAgICAgICAg
ICAgIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IHByb3BlcnR5LmdwcigpOworICAgICAgICAgICAgc3Bl
Y3VsYXRlU3RyaW5nKHByb3BlcnR5RWRnZSwgcHJvcGVydHlHUFIpOworCisgICAgICAgICAgICB1
c2VDaGlsZHJlbihub2RlKTsKKworICAgICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAgICAg
ICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVmaW5lRGF0YVByb3BlcnR5U3RyaW5nLCBO
b1Jlc3VsdCwgYmFzZUdQUiwgcHJvcGVydHlHUFIsIHZhbHVlUmVncywgYXR0cmlidXRlcyk7Cisg
ICAgICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKyAgICAgICAgY2FzZSBTdHJpbmdJZGVudFVzZTogeworICAgICAgICAgICAgU3Bl
Y3VsYXRlQ2VsbE9wZXJhbmQgcHJvcGVydHkodGhpcywgcHJvcGVydHlFZGdlKTsKKyAgICAgICAg
ICAgIEdQUlRlbXBvcmFyeSBpZGVudCh0aGlzKTsKKworICAgICAgICAgICAgR1BSUmVnIHByb3Bl
cnR5R1BSID0gcHJvcGVydHkuZ3ByKCk7CisgICAgICAgICAgICBHUFJSZWcgaWRlbnRHUFIgPSBp
ZGVudC5ncHIoKTsKKworICAgICAgICAgICAgc3BlY3VsYXRlU3RyaW5nKHByb3BlcnR5RWRnZSwg
cHJvcGVydHlHUFIpOworICAgICAgICAgICAgc3BlY3VsYXRlU3RyaW5nSWRlbnRBbmRMb2FkU3Rv
cmFnZShwcm9wZXJ0eUVkZ2UsIHByb3BlcnR5R1BSLCBpZGVudEdQUik7CisKKyAgICAgICAgICAg
IHVzZUNoaWxkcmVuKG5vZGUpOworCisgICAgICAgICAgICBmbHVzaFJlZ2lzdGVycygpOworICAg
ICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWZpbmVEYXRhUHJvcGVydHlTdHJpbmdJ
ZGVudCwgTm9SZXN1bHQsIGJhc2VHUFIsIGlkZW50R1BSLCB2YWx1ZVJlZ3MsIGF0dHJpYnV0ZXMp
OworICAgICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisgICAgICAgIGNhc2UgU3ltYm9sVXNlOiB7CisgICAgICAgICAgICBTcGVj
dWxhdGVDZWxsT3BlcmFuZCBwcm9wZXJ0eSh0aGlzLCBwcm9wZXJ0eUVkZ2UpOworICAgICAgICAg
ICAgR1BSUmVnIHByb3BlcnR5R1BSID0gcHJvcGVydHkuZ3ByKCk7CisgICAgICAgICAgICBzcGVj
dWxhdGVTeW1ib2wocHJvcGVydHlFZGdlLCBwcm9wZXJ0eUdQUik7CisKKyAgICAgICAgICAgIHVz
ZUNoaWxkcmVuKG5vZGUpOworCisgICAgICAgICAgICBmbHVzaFJlZ2lzdGVycygpOworICAgICAg
ICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWZpbmVEYXRhUHJvcGVydHlTeW1ib2wsIE5v
UmVzdWx0LCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgdmFsdWVSZWdzLCBhdHRyaWJ1dGVzKTsKKyAg
ICAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorICAgICAgICBjYXNlIFVudHlwZWRVc2U6IHsKKyAgICAgICAgICAgIEpTVmFsdWVP
cGVyYW5kIHByb3BlcnR5KHRoaXMsIHByb3BlcnR5RWRnZSk7CisgICAgICAgICAgICBKU1ZhbHVl
UmVncyBwcm9wZXJ0eVJlZ3MgPSBwcm9wZXJ0eS5qc1ZhbHVlUmVncygpOworCisgICAgICAgICAg
ICB1c2VDaGlsZHJlbihub2RlKTsKKworICAgICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAg
ICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVmaW5lRGF0YVByb3BlcnR5LCBOb1Jl
c3VsdCwgYmFzZUdQUiwgcHJvcGVydHlSZWdzLCB2YWx1ZVJlZ3MsIGF0dHJpYnV0ZXMpOworICAg
ICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICB9CisgICAgfTsKKworICAgIEVkZ2UmIGF0dHJpYnV0ZXNFZGdl
ID0gbV9qaXQuZ3JhcGgoKS52YXJBcmdDaGlsZChub2RlLCAzKTsKKyAgICBpZiAoYXR0cmlidXRl
c0VkZ2UtPmhhc0NvbnN0YW50KCkpCisgICAgICAgIGNvbXBpbGVXaXRoQXR0cmlidXRlKGF0dHJp
YnV0ZXNFZGdlLT5hc0ludDMyKCkpOworICAgIGVsc2UgeworICAgICAgICBTcGVjdWxhdGVJbnQz
Mk9wZXJhbmQgYXR0cmlidXRlcyh0aGlzLCBhdHRyaWJ1dGVzRWRnZSk7CisgICAgICAgIEdQUlJl
ZyBhdHRyaWJ1dGVzR1BSID0gYXR0cmlidXRlcy5ncHIoKTsKKworICAgICAgICBjb21waWxlV2l0
aEF0dHJpYnV0ZShhdHRyaWJ1dGVzR1BSKTsKKyAgICB9CisKKyAgICBub1Jlc3VsdChub2RlLCBV
c2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkpOworfQorCit2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eShOb2RlKiBub2RlKQoreworI2lmIFVTRShKU1ZB
TFVFNjQpCisgICAgc3RhdGljX2Fzc2VydChHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycyA+PSA1
LCAiV2UgYXJlIGFzc3VtaW5nIHdlIGhhdmUgZW5vdWdoIHJlZ2lzdGVycyB0byBtYWtlIHRoaXMg
Y2FsbCB3aXRob3V0IGluY3JlbWVudGFsbHkgc2V0dGluZyB1cCB0aGUgYXJndW1lbnRzLiIpOwor
I2Vsc2UKKyAgICBzdGF0aWNfYXNzZXJ0KEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzID49IDYs
ICJXZSBhcmUgYXNzdW1pbmcgd2UgaGF2ZSBlbm91Z2ggcmVnaXN0ZXJzIHRvIG1ha2UgdGhpcyBj
YWxsIHdpdGhvdXQgaW5jcmVtZW50YWxseSBzZXR0aW5nIHVwIHRoZSBhcmd1bWVudHMuIik7Cisj
ZW5kaWYKKworICAgIGF1dG8gY29tcGlsZVdpdGhBdHRyaWJ1dGVzID0gWyZdKGF1dG8gYXR0cmli
dXRlcykgeworICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG1faml0Lmdy
YXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMCkpOworICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJh
c2UuZ3ByKCk7CisKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgZ2V0dGVyKHRoaXMsIG1f
aml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMikpOworICAgICAgICBHUFJSZWcgZ2V0dGVy
R1BSID0gZ2V0dGVyLmdwcigpOworCisgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHNldHRl
cih0aGlzLCBtX2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIDMpKTsKKyAgICAgICAgR1BS
UmVnIHNldHRlckdQUiA9IHNldHRlci5ncHIoKTsKKworICAgICAgICBFZGdlJiBwcm9wZXJ0eUVk
Z2UgPSBtX2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIDEpOworICAgICAgICBzd2l0Y2gg
KHByb3BlcnR5RWRnZS51c2VLaW5kKCkpIHsKKyAgICAgICAgY2FzZSBTdHJpbmdVc2U6IHsKKyAg
ICAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHByb3BlcnR5KHRoaXMsIHByb3BlcnR5RWRn
ZSk7CisgICAgICAgICAgICBHUFJSZWcgcHJvcGVydHlHUFIgPSBwcm9wZXJ0eS5ncHIoKTsKKyAg
ICAgICAgICAgIHNwZWN1bGF0ZVN0cmluZyhwcm9wZXJ0eUVkZ2UsIHByb3BlcnR5R1BSKTsKKwor
ICAgICAgICAgICAgdXNlQ2hpbGRyZW4obm9kZSk7CisKKyAgICAgICAgICAgIGZsdXNoUmVnaXN0
ZXJzKCk7CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlZmluZUFjY2Vzc29y
UHJvcGVydHlTdHJpbmcsIE5vUmVzdWx0LCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgZ2V0dGVyR1BS
LCBzZXR0ZXJHUFIsIGF0dHJpYnV0ZXMpOworICAgICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hl
Y2soKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgU3RyaW5n
SWRlbnRVc2U6IHsKKyAgICAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHByb3BlcnR5KHRo
aXMsIHByb3BlcnR5RWRnZSk7CisgICAgICAgICAgICBHUFJUZW1wb3JhcnkgaWRlbnQodGhpcyk7
CisKKyAgICAgICAgICAgIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IHByb3BlcnR5LmdwcigpOworICAg
ICAgICAgICAgR1BSUmVnIGlkZW50R1BSID0gaWRlbnQuZ3ByKCk7CisKKyAgICAgICAgICAgIHNw
ZWN1bGF0ZVN0cmluZyhwcm9wZXJ0eUVkZ2UsIHByb3BlcnR5R1BSKTsKKyAgICAgICAgICAgIHNw
ZWN1bGF0ZVN0cmluZ0lkZW50QW5kTG9hZFN0b3JhZ2UocHJvcGVydHlFZGdlLCBwcm9wZXJ0eUdQ
UiwgaWRlbnRHUFIpOworCisgICAgICAgICAgICB1c2VDaGlsZHJlbihub2RlKTsKKworICAgICAg
ICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0
aW9uRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eVN0cmluZ0lkZW50LCBOb1Jlc3VsdCwgYmFzZUdQUiwg
aWRlbnRHUFIsIGdldHRlckdQUiwgc2V0dGVyR1BSLCBhdHRyaWJ1dGVzKTsKKyAgICAgICAgICAg
IG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
ICAgICAgICBjYXNlIFN5bWJvbFVzZTogeworICAgICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJh
bmQgcHJvcGVydHkodGhpcywgcHJvcGVydHlFZGdlKTsKKyAgICAgICAgICAgIEdQUlJlZyBwcm9w
ZXJ0eUdQUiA9IHByb3BlcnR5LmdwcigpOworICAgICAgICAgICAgc3BlY3VsYXRlU3ltYm9sKHBy
b3BlcnR5RWRnZSwgcHJvcGVydHlHUFIpOworCisgICAgICAgICAgICB1c2VDaGlsZHJlbihub2Rl
KTsKKworICAgICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAgICAgICAgICAgIGNhbGxPcGVy
YXRpb24ob3BlcmF0aW9uRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eVN5bWJvbCwgTm9SZXN1bHQsIGJh
c2VHUFIsIHByb3BlcnR5R1BSLCBnZXR0ZXJHUFIsIHNldHRlckdQUiwgYXR0cmlidXRlcyk7Cisg
ICAgICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKyAgICAgICAgY2FzZSBVbnR5cGVkVXNlOiB7CisgICAgICAgICAgICBKU1ZhbHVl
T3BlcmFuZCBwcm9wZXJ0eSh0aGlzLCBwcm9wZXJ0eUVkZ2UpOworICAgICAgICAgICAgSlNWYWx1
ZVJlZ3MgcHJvcGVydHlHUFIgPSBwcm9wZXJ0eS5qc1ZhbHVlUmVncygpOworCisgICAgICAgICAg
ICB1c2VDaGlsZHJlbihub2RlKTsKKworICAgICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAg
ICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eSwg
Tm9SZXN1bHQsIGJhc2VHUFIsIHByb3BlcnR5R1BSLCBnZXR0ZXJHUFIsIHNldHRlckdQUiwgYXR0
cmlidXRlcyk7CisgICAgICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICB9OworCisgICAgRWRnZSYg
YXR0cmlidXRlc0VkZ2UgPSBtX2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIDQpOworICAg
IGlmIChhdHRyaWJ1dGVzRWRnZS0+aGFzQ29uc3RhbnQoKSkKKyAgICAgICAgY29tcGlsZVdpdGhB
dHRyaWJ1dGVzKGF0dHJpYnV0ZXNFZGdlLT5hc0ludDMyKCkpOworICAgIGVsc2UgeworICAgICAg
ICBTcGVjdWxhdGVJbnQzMk9wZXJhbmQgYXR0cmlidXRlcyh0aGlzLCBhdHRyaWJ1dGVzRWRnZSk7
CisgICAgICAgIEdQUlJlZyBhdHRyaWJ1dGVzR1BSID0gYXR0cmlidXRlcy5ncHIoKTsKKworICAg
ICAgICBjb21waWxlV2l0aEF0dHJpYnV0ZXMoYXR0cmlidXRlc0dQUik7CisgICAgfQorCisgICAg
bm9SZXN1bHQobm9kZSwgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKK30KKwogfSB9IC8v
IG5hbWVzcGFjZSBKU0M6OkRGRwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuaAppbmRleCBlN2EyOWI0MzM0NmIyNDgyM2E5OTg5ZmVlOTVk
NjQwNWMzMThkYTczLi4wMDk5MjJkZGE2YzdlM2U0MTZkZmU0M2Q4ZjUyZGU3ZDI1NWI5OGQ3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCkBAIC0x
MzQ0LDYgKzEzNDQsODYgQEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQgewogICAgICAgICBtX2ppdC5z
ZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMywgYXJnNCk7CiAgICAg
ICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CiAgICAgfQorICAgIEpJVENvbXBpbGVy
OjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRU9KSlogb3BlcmF0aW9uLCBHUFJS
ZWcgYXJnMSwgSlNWYWx1ZVJlZ3MgYXJnMiwgSlNWYWx1ZVJlZ3MgYXJnMywgR1BSUmVnIGFyZzQp
CisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwg
YXJnMi5wYXlsb2FkR1BSKCksIGFyZzMucGF5bG9hZEdQUigpLCBhcmc0KTsKKyAgICAgICAgcmV0
dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKKyAgICB9CisgICAgSklUQ29tcGlsZXI6OkNhbGwg
Y2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FT0pzc0paIG9wZXJhdGlvbiwgR1BSUmVnIGFy
ZzEsIEdQUlJlZyBhcmcyLCBKU1ZhbHVlUmVncyBhcmczLCBHUFJSZWcgYXJnNCkKKyAgICB7Cisg
ICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmcz
LnBheWxvYWRHUFIoKSwgYXJnNCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlv
bik7CisgICAgfQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVy
YXRpb25fRU9JSlogb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEpTVmFsdWVS
ZWdzIGFyZzMsIEdQUlJlZyBhcmc0KQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVu
dHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMucGF5bG9hZEdQUigpLCBhcmc0KTsKKyAg
ICAgICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKKyAgICB9CisgICAgSklUQ29tcGls
ZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FT1N5bUpaIG9wZXJhdGlvbiwg
R1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBKU1ZhbHVlUmVncyBhcmczLCBHUFJSZWcgYXJnNCkK
KyAgICB7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBh
cmcyLCBhcmczLnBheWxvYWRHUFIoKSwgYXJnNCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxs
KG9wZXJhdGlvbik7CisgICAgfQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24o
Vl9KSVRPcGVyYXRpb25fRU9KSlogb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgSlNWYWx1ZVJlZ3Mg
YXJnMiwgSlNWYWx1ZVJlZ3MgYXJnMywgaW50MzJfdCBhcmc0KQorICAgIHsKKyAgICAgICAgbV9q
aXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIucGF5bG9hZEdQUigpLCBh
cmczLnBheWxvYWRHUFIoKSwgVHJ1c3RlZEltbTMyKGFyZzQpKTsKKyAgICAgICAgcmV0dXJuIGFw
cGVuZENhbGwob3BlcmF0aW9uKTsKKyAgICB9CisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9w
ZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FT0pzc0paIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEdQ
UlJlZyBhcmcyLCBKU1ZhbHVlUmVncyBhcmczLCBpbnQzMl90IGFyZzQpCisgICAgeworICAgICAg
ICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMy5wYXls
b2FkR1BSKCksIFRydXN0ZWRJbW0zMihhcmc0KSk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxs
KG9wZXJhdGlvbik7CisgICAgfQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24o
Vl9KSVRPcGVyYXRpb25fRU9JSlogb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIs
IEpTVmFsdWVSZWdzIGFyZzMsIGludDMyX3QgYXJnNCkKKyAgICB7CisgICAgICAgIG1faml0LnNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczLnBheWxvYWRHUFIoKSwg
VHJ1c3RlZEltbTMyKGFyZzQpKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9u
KTsKKyAgICB9CisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJh
dGlvbl9FT1N5bUpaIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBKU1ZhbHVl
UmVncyBhcmczLCBpbnQzMl90IGFyZzQpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMy5wYXlsb2FkR1BSKCksIFRydXN0ZWRJ
bW0zMihhcmc0KSk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CisgICAg
fQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRU9K
T09aIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEpTVmFsdWVSZWdzIGFyZzIsIEdQUlJlZyBhcmcz
LCBHUFJSZWcgYXJnNCwgR1BSUmVnIGFyZzUpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFy
Z3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMi5wYXlsb2FkR1BSKCksIGFyZzMsIGFyZzQs
IGFyZzUpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOworICAgIH0KKyAg
ICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VPSnNzT09a
IG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVn
IGFyZzQsIEdQUlJlZyBhcmc1KQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNX
aXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMsIGFyZzQsIGFyZzUpOworICAgICAgICByZXR1
cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOworICAgIH0KKyAgICBKSVRDb21waWxlcjo6Q2FsbCBj
YWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VPSU9PWiBvcGVyYXRpb24sIEdQUlJlZyBhcmcx
LCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMsIEdQUlJlZyBhcmc0LCBHUFJSZWcgYXJnNSkKKyAg
ICB7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcy
LCBhcmczLCBhcmc0LCBhcmc1KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9u
KTsKKyAgICB9CisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJh
dGlvbl9FT1N5bU9PWiBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVn
IGFyZzMsIEdQUlJlZyBhcmc0LCBHUFJSZWcgYXJnNSkKKyAgICB7CisgICAgICAgIG1faml0LnNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczLCBhcmc0LCBhcmc1KTsK
KyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKKyAgICB9CisgICAgSklUQ29t
cGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FT0pPT1ogb3BlcmF0aW9u
LCBHUFJSZWcgYXJnMSwgSlNWYWx1ZVJlZ3MgYXJnMiwgR1BSUmVnIGFyZzMsIEdQUlJlZyBhcmc0
LCBpbnQzMl90IGFyZzUpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUoYXJnMSwgYXJnMi5wYXlsb2FkR1BSKCksIGFyZzMsIGFyZzQsIFRydXN0ZWRJbW0z
Mihhcmc1KSk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CisgICAgfQor
ICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRU9Kc3NP
T1ogb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJS
ZWcgYXJnNCwgaW50MzJfdCBhcmc1KQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVu
dHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMsIGFyZzQsIFRydXN0ZWRJbW0zMihhcmc1
KSk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CisgICAgfQorICAgIEpJ
VENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRU9JT09aIG9wZXJh
dGlvbiwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVnIGFyZzQs
IGludDMyX3QgYXJnNSkKKyAgICB7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4
ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczLCBhcmc0LCBUcnVzdGVkSW1tMzIoYXJnNSkpOworICAg
ICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOworICAgIH0KKyAgICBKSVRDb21waWxl
cjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VPU3ltT09aIG9wZXJhdGlvbiwg
R1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVnIGFyZzQsIGludDMy
X3QgYXJnNSkKKyAgICB7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShhcmcxLCBhcmcyLCBhcmczLCBhcmc0LCBUcnVzdGVkSW1tMzIoYXJnNSkpOworICAgICAgICBy
ZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOworICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2Fs
bCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VPSklVaSBvcGVyYXRpb24sIEdQUlJlZyBh
cmcxLCBHUFJSZWcgYXJnMiwgVW5pcXVlZFN0cmluZ0ltcGwqIGltcGwsIHVuc2lnbmVkIHZhbHVl
KQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEs
IGFyZzIsIFRydXN0ZWRJbW1QdHIoaW1wbCksIFRydXN0ZWRJbW0zMih2YWx1ZSkpOwpAQCAtMTc4
OCw3ICsxODY4LDg2IEBAIGNsYXNzIFNwZWN1bGF0aXZlSklUIHsKICAgICAgICAgbV9qaXQuc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEVBQklfMzJCSVRfRFVNTVlfQVJHIGFyZzEucGF5bG9h
ZEdQUigpLCBhcmcxLnRhZ0dQUigpLCBhcmcyLnBheWxvYWRHUFIoKSwgYXJnMi50YWdHUFIoKSwg
YXJnMy5wYXlsb2FkR1BSKCksIGFyZzMudGFnR1BSKCksIGFyZzQucGF5bG9hZEdQUigpLCBhcmc0
LnRhZ0dQUigpKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKICAgICB9
Ci0KKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VP
SkpaIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEpTVmFsdWVSZWdzIGFyZzIsIEpTVmFsdWVSZWdz
IGFyZzMsIEdQUlJlZyBhcmc0KQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNX
aXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIucGF5bG9hZEdQUigpLCBhcmcyLnRhZ0dQUigpLCBhcmcz
LnBheWxvYWRHUFIoKSwgYXJnMy50YWdHUFIoKSwgYXJnNCk7CisgICAgICAgIHJldHVybiBhcHBl
bmRDYWxsKG9wZXJhdGlvbik7CisgICAgfQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVy
YXRpb24oVl9KSVRPcGVyYXRpb25fRU9Kc3NKWiBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBHUFJS
ZWcgYXJnMiwgSlNWYWx1ZVJlZ3MgYXJnMywgR1BSUmVnIGFyZzQpCisgICAgeworICAgICAgICBt
X2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgRUFCSV8zMkJJVF9E
VU1NWV9BUkcgYXJnMy5wYXlsb2FkR1BSKCksIGFyZzMudGFnR1BSKCksIGFyZzQpOworICAgICAg
ICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOworICAgIH0KKyAgICBKSVRDb21waWxlcjo6
Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VPSUpaIG9wZXJhdGlvbiwgR1BSUmVn
IGFyZzEsIEdQUlJlZyBhcmcyLCBKU1ZhbHVlUmVncyBhcmczLCBHUFJSZWcgYXJnNCkKKyAgICB7
CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBF
QUJJXzMyQklUX0RVTU1ZX0FSRyBhcmczLnBheWxvYWRHUFIoKSwgYXJnMy50YWdHUFIoKSwgYXJn
NCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CisgICAgfQorICAgIEpJ
VENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRU9TeW1KWiBvcGVy
YXRpb24sIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgSlNWYWx1ZVJlZ3MgYXJnMywgR1BSUmVn
IGFyZzQpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUo
YXJnMSwgYXJnMiwgRUFCSV8zMkJJVF9EVU1NWV9BUkcgYXJnMy5wYXlsb2FkR1BSKCksIGFyZzMu
dGFnR1BSKCksIGFyZzQpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOwor
ICAgIH0KKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9u
X0VPSkpaIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEpTVmFsdWVSZWdzIGFyZzIsIEpTVmFsdWVS
ZWdzIGFyZzMsIGludDMyX3QgYXJnNCkKKyAgICB7CisgICAgICAgIG1faml0LnNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLnBheWxvYWRHUFIoKSwgYXJnMi50YWdHUFIoKSwg
YXJnMy5wYXlsb2FkR1BSKCksIGFyZzMudGFnR1BSKCksIFRydXN0ZWRJbW0zMihhcmc0KSk7Cisg
ICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CisgICAgfQorICAgIEpJVENvbXBp
bGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRU9Kc3NKWiBvcGVyYXRpb24s
IEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgSlNWYWx1ZVJlZ3MgYXJnMywgaW50MzJfdCBhcmc0
KQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEs
IGFyZzIsIEVBQklfMzJCSVRfRFVNTVlfQVJHIGFyZzMucGF5bG9hZEdQUigpLCBhcmczLnRhZ0dQ
UigpLCBUcnVzdGVkSW1tMzIoYXJnNCkpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVy
YXRpb24pOworICAgIH0KKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklU
T3BlcmF0aW9uX0VPSUpaIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBKU1Zh
bHVlUmVncyBhcmczLCBpbnQzMl90IGFyZzQpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFy
Z3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgRUFCSV8zMkJJVF9EVU1NWV9BUkcgYXJn
My5wYXlsb2FkR1BSKCksIGFyZzMudGFnR1BSKCksIFRydXN0ZWRJbW0zMihhcmc0KSk7CisgICAg
ICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CisgICAgfQorICAgIEpJVENvbXBpbGVy
OjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRU9TeW1KWiBvcGVyYXRpb24sIEdQ
UlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgSlNWYWx1ZVJlZ3MgYXJnMywgaW50MzJfdCBhcmc0KQor
ICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFy
ZzIsIEVBQklfMzJCSVRfRFVNTVlfQVJHIGFyZzMucGF5bG9hZEdQUigpLCBhcmczLnRhZ0dQUigp
LCBUcnVzdGVkSW1tMzIoYXJnNCkpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRp
b24pOworICAgIH0KKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3Bl
cmF0aW9uX0VPSk9PWiBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBKU1ZhbHVlUmVncyBhcmcyLCBH
UFJSZWcgYXJnMywgR1BSUmVnIGFyZzQsIEdQUlJlZyBhcmc1KQorICAgIHsKKyAgICAgICAgbV9q
aXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIucGF5bG9hZEdQUigpLCBh
cmcyLnRhZ0dQUigpLCBhcmczLCBhcmc0LCBhcmc1KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENh
bGwob3BlcmF0aW9uKTsKKyAgICB9CisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlv
bihWX0pJVE9wZXJhdGlvbl9FT0pzc09PWiBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBHUFJSZWcg
YXJnMiwgR1BSUmVnIGFyZzMsIEdQUlJlZyBhcmc0LCBHUFJSZWcgYXJnNSkKKyAgICB7CisgICAg
ICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczLCBh
cmc0LCBhcmc1KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKKyAgICB9
CisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FT0lP
T1ogb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJS
ZWcgYXJnNCwgR1BSUmVnIGFyZzUpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMywgYXJnNCwgYXJnNSk7CisgICAgICAgIHJl
dHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CisgICAgfQorICAgIEpJVENvbXBpbGVyOjpDYWxs
IGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRU9TeW1PT1ogb3BlcmF0aW9uLCBHUFJSZWcg
YXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcgYXJnNCwgR1BSUmVnIGFyZzUp
CisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwg
YXJnMiwgYXJnMywgYXJnNCwgYXJnNSk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJh
dGlvbik7CisgICAgfQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRP
cGVyYXRpb25fRU9KT09aIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEpTVmFsdWVSZWdzIGFyZzIs
IEdQUlJlZyBhcmczLCBHUFJSZWcgYXJnNCwgaW50MzJfdCBhcmc1KQorICAgIHsKKyAgICAgICAg
bV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIucGF5bG9hZEdQUigp
LCBhcmcyLnRhZ0dQUigpLCBhcmczLCBhcmc0LCBUcnVzdGVkSW1tMzIoYXJnNSkpOworICAgICAg
ICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOworICAgIH0KKyAgICBKSVRDb21waWxlcjo6
Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VPSnNzT09aIG9wZXJhdGlvbiwgR1BS
UmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVnIGFyZzQsIGludDMyX3Qg
YXJnNSkKKyAgICB7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShh
cmcxLCBhcmcyLCBhcmczLCBhcmc0LCBUcnVzdGVkSW1tMzIoYXJnNSkpOworICAgICAgICByZXR1
cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOworICAgIH0KKyAgICBKSVRDb21waWxlcjo6Q2FsbCBj
YWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VPSU9PWiBvcGVyYXRpb24sIEdQUlJlZyBhcmcx
LCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMsIEdQUlJlZyBhcmc0LCBpbnQzMl90IGFyZzUpCisg
ICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJn
MiwgYXJnMywgYXJnNCwgVHJ1c3RlZEltbTMyKGFyZzUpKTsKKyAgICAgICAgcmV0dXJuIGFwcGVu
ZENhbGwob3BlcmF0aW9uKTsKKyAgICB9CisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJh
dGlvbihWX0pJVE9wZXJhdGlvbl9FT1N5bU9PWiBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBHUFJS
ZWcgYXJnMiwgR1BSUmVnIGFyZzMsIEdQUlJlZyBhcmc0LCBpbnQzMl90IGFyZzUpCisgICAgewor
ICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJn
MywgYXJnNCwgVHJ1c3RlZEltbTMyKGFyZzUpKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGwo
b3BlcmF0aW9uKTsKKyAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihW
X0pJVE9wZXJhdGlvbl9FT0pJVWkgb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgSlNWYWx1ZVJlZ3Mg
YXJnMiwgVW5pcXVlZFN0cmluZ0ltcGwqIGltcGwsIHVuc2lnbmVkIHZhbHVlKQogICAgIHsKICAg
ICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIucGF5bG9h
ZEdQUigpLCBhcmcyLnRhZ0dQUigpLCBUcnVzdGVkSW1tUHRyKGltcGwpLCBUcnVzdGVkSW1tMzIo
dmFsdWUpKTsKQEAgLTI1NzksNiArMjczOCw4IEBAIGNsYXNzIFNwZWN1bGF0aXZlSklUIHsKICAg
ICB2b2lkIGNvbXBpbGVHZXREeW5hbWljVmFyKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVQdXRE
eW5hbWljVmFyKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVDb21wYXJlRXFQdHIoTm9kZSopOwor
ICAgIHZvaWQgY29tcGlsZURlZmluZURhdGFQcm9wZXJ0eShOb2RlKik7CisgICAgdm9pZCBjb21w
aWxlRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eShOb2RlKik7CiAKICAgICB2b2lkIG1vdmVUcnVlVG8o
R1BSUmVnKTsKICAgICB2b2lkIG1vdmVGYWxzZVRvKEdQUlJlZyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCBhMjJk
YmVhZGU3MTA4Zjc1NTk2NjZiOTNmOWFlYzdlZjUwYzEzOTViLi5hYTc4YjBlNjllNGJlYjg1ZTJl
MjE2YzhlZjU1OWVhMWY3M2FhZDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTQ0OTEsNiArNDQ5MSwxNiBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwog
ICAgIH0KIAorICAgIGNhc2UgRGVmaW5lRGF0YVByb3BlcnR5OiB7CisgICAgICAgIGNvbXBpbGVE
ZWZpbmVEYXRhUHJvcGVydHkobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGNh
c2UgRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eTogeworICAgICAgICBjb21waWxlRGVmaW5lQWNjZXNz
b3JQcm9wZXJ0eShub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBHZXRH
bG9iYWxMZXhpY2FsVmFyaWFibGU6CiAgICAgY2FzZSBHZXRHbG9iYWxWYXI6IHsKICAgICAgICAg
R1BSVGVtcG9yYXJ5IHJlc3VsdFBheWxvYWQodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAppbmRleCA4Y2Q1ZDcxMzhmMDdjZGRk
YzJjMmU3MGQ2ZjZkZjNjMWZiMWFkYjZlLi43MjEwOTI1MjNlYjM3ZmFjY2YyMjY4ZGJiZmU3ZjE5
NGUzMzI1MDAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklUNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQ2NC5jcHAKQEAgLTQ0NDksNiArNDQ0OSwxNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2Ug
RGVmaW5lRGF0YVByb3BlcnR5OiB7CisgICAgICAgIGNvbXBpbGVEZWZpbmVEYXRhUHJvcGVydHko
bm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGNhc2UgRGVmaW5lQWNjZXNzb3JQ
cm9wZXJ0eTogeworICAgICAgICBjb21waWxlRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eShub2RlKTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBHZXRHbG9iYWxMZXhpY2FsVmFyaWFi
bGU6CiAgICAgY2FzZSBHZXRHbG9iYWxWYXI6IHsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3Vs
dCh0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJp
bGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNw
cAppbmRleCBjYWQ0NWZkYmFiZTkwZjQ0OTM0ZDE0YTRiZTNiZDEwZmM4Mjc2NDQ5Li5hMWNmODA4
ODUyM2JkZDM3Y2IyMGRmMDgxYjRhMDFkZDFhYmMwZDY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCkBAIC0yNjIsNiArMjYyLDggQEAgaW5saW5l
IENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBDb21wYXJl
R3JlYXRlcjoKICAgICBjYXNlIENvbXBhcmVHcmVhdGVyRXE6CiAgICAgY2FzZSBDb21wYXJlU3Ry
aWN0RXE6CisgICAgY2FzZSBEZWZpbmVEYXRhUHJvcGVydHk6CisgICAgY2FzZSBEZWZpbmVBY2Nl
c3NvclByb3BlcnR5OgogICAgICAgICAvLyBUaGVzZSBhcmUgT0suCiAgICAgICAgIGJyZWFrOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXgg
OWY4ODViODcxMzgzOTIwYjliZDRmMzg1ZTk5MjI0NzJmOWYyMzA2Zi4uMWZmMTAzODJhMmU0YjQ1
ZmI4OTM2MDFiYTgzMzE3N2Y2ODliMDVlMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtNjkwLDYgKzY5MCwxMiBAQCBjbGFzcyBMb3dlckRG
R1RvQjMgewogICAgICAgICBjYXNlIFB1dEJ5VmFsV2l0aFRoaXM6CiAgICAgICAgICAgICBjb21w
aWxlUHV0QnlWYWxXaXRoVGhpcygpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
RGVmaW5lRGF0YVByb3BlcnR5OgorICAgICAgICAgICAgY29tcGlsZURlZmluZURhdGFQcm9wZXJ0
eSgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRGVmaW5lQWNjZXNzb3JQcm9w
ZXJ0eToKKyAgICAgICAgICAgIGNvbXBpbGVEZWZpbmVBY2Nlc3NvclByb3BlcnR5KCk7CisgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBBcnJheVB1c2g6CiAgICAgICAgICAgICBjb21w
aWxlQXJyYXlQdXNoKCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTI3NjEsNiArMjc2Nyw3MSBA
QCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICB2bUNhbGwoVm9pZCwgbV9vdXQub3BlcmF0
aW9uKG1fZ3JhcGguaXNTdHJpY3RNb2RlRm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKSA/IG9w
ZXJhdGlvblB1dEJ5VmFsV2l0aFRoaXNTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbFdpdGhUaGlz
KSwKICAgICAgICAgICAgIG1fY2FsbEZyYW1lLCBiYXNlLCB0aGlzVmFsdWUsIHByb3BlcnR5LCB2
YWx1ZSk7CiAgICAgfQorCisgICAgdm9pZCBjb21waWxlRGVmaW5lRGF0YVByb3BlcnR5KCkKKyAg
ICB7CisgICAgICAgIExWYWx1ZSBiYXNlID0gbG93Q2VsbChtX2dyYXBoLnZhckFyZ0NoaWxkKG1f
bm9kZSwgMCkpOworICAgICAgICBMVmFsdWUgdmFsdWUgID0gbG93SlNWYWx1ZShtX2dyYXBoLnZh
ckFyZ0NoaWxkKG1fbm9kZSwgMikpOworICAgICAgICBMVmFsdWUgYXR0cmlidXRlcyA9IGxvd0lu
dDMyKG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCAzKSk7CisgICAgICAgIEVkZ2UmIHByb3Bl
cnR5RWRnZSA9IG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCAxKTsKKyAgICAgICAgc3dpdGNo
IChwcm9wZXJ0eUVkZ2UudXNlS2luZCgpKSB7CisgICAgICAgIGNhc2UgU3RyaW5nVXNlOiB7Cisg
ICAgICAgICAgICBMVmFsdWUgcHJvcGVydHkgPSBsb3dTdHJpbmcocHJvcGVydHlFZGdlKTsKKyAg
ICAgICAgICAgIHZtQ2FsbChWb2lkLCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uRGVmaW5lRGF0
YVByb3BlcnR5U3RyaW5nKSwgbV9jYWxsRnJhbWUsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSwgYXR0
cmlidXRlcyk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFN0
cmluZ0lkZW50VXNlOiB7CisgICAgICAgICAgICBMVmFsdWUgcHJvcGVydHkgPSBsb3dTdHJpbmdJ
ZGVudChwcm9wZXJ0eUVkZ2UpOworICAgICAgICAgICAgdm1DYWxsKFZvaWQsIG1fb3V0Lm9wZXJh
dGlvbihvcGVyYXRpb25EZWZpbmVEYXRhUHJvcGVydHlTdHJpbmdJZGVudCksIG1fY2FsbEZyYW1l
LCBiYXNlLCBwcm9wZXJ0eSwgdmFsdWUsIGF0dHJpYnV0ZXMpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBTeW1ib2xVc2U6IHsKKyAgICAgICAgICAgIExWYWx1
ZSBwcm9wZXJ0eSA9IGxvd1N5bWJvbChwcm9wZXJ0eUVkZ2UpOworICAgICAgICAgICAgdm1DYWxs
KFZvaWQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25EZWZpbmVEYXRhUHJvcGVydHlTeW1ib2wp
LCBtX2NhbGxGcmFtZSwgYmFzZSwgcHJvcGVydHksIHZhbHVlLCBhdHRyaWJ1dGVzKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgVW50eXBlZFVzZTogeworICAg
ICAgICAgICAgTFZhbHVlIHByb3BlcnR5ID0gbG93SlNWYWx1ZShwcm9wZXJ0eUVkZ2UpOworICAg
ICAgICAgICAgdm1DYWxsKFZvaWQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25EZWZpbmVEYXRh
UHJvcGVydHkpLCBtX2NhbGxGcmFtZSwgYmFzZSwgcHJvcGVydHksIHZhbHVlLCBhdHRyaWJ1dGVz
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgfQor
CisgICAgdm9pZCBjb21waWxlRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eSgpCisgICAgeworICAgICAg
ICBMVmFsdWUgYmFzZSA9IGxvd0NlbGwobV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDApKTsK
KyAgICAgICAgTFZhbHVlIGdldHRlciA9IGxvd0NlbGwobV9ncmFwaC52YXJBcmdDaGlsZChtX25v
ZGUsIDIpKTsKKyAgICAgICAgTFZhbHVlIHNldHRlciA9IGxvd0NlbGwobV9ncmFwaC52YXJBcmdD
aGlsZChtX25vZGUsIDMpKTsKKyAgICAgICAgTFZhbHVlIGF0dHJpYnV0ZXMgPSBsb3dJbnQzMiht
X2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgNCkpOworICAgICAgICBFZGdlJiBwcm9wZXJ0eUVk
Z2UgPSBtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMSk7CisgICAgICAgIHN3aXRjaCAocHJv
cGVydHlFZGdlLnVzZUtpbmQoKSkgeworICAgICAgICBjYXNlIFN0cmluZ1VzZTogeworICAgICAg
ICAgICAgTFZhbHVlIHByb3BlcnR5ID0gbG93U3RyaW5nKHByb3BlcnR5RWRnZSk7CisgICAgICAg
ICAgICB2bUNhbGwoVm9pZCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkRlZmluZUFjY2Vzc29y
UHJvcGVydHlTdHJpbmcpLCBtX2NhbGxGcmFtZSwgYmFzZSwgcHJvcGVydHksIGdldHRlciwgc2V0
dGVyLCBhdHRyaWJ1dGVzKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAg
IGNhc2UgU3RyaW5nSWRlbnRVc2U6IHsKKyAgICAgICAgICAgIExWYWx1ZSBwcm9wZXJ0eSA9IGxv
d1N0cmluZ0lkZW50KHByb3BlcnR5RWRnZSk7CisgICAgICAgICAgICB2bUNhbGwoVm9pZCwgbV9v
dXQub3BlcmF0aW9uKG9wZXJhdGlvbkRlZmluZUFjY2Vzc29yUHJvcGVydHlTdHJpbmdJZGVudCks
IG1fY2FsbEZyYW1lLCBiYXNlLCBwcm9wZXJ0eSwgZ2V0dGVyLCBzZXR0ZXIsIGF0dHJpYnV0ZXMp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBTeW1ib2xVc2U6
IHsKKyAgICAgICAgICAgIExWYWx1ZSBwcm9wZXJ0eSA9IGxvd1N5bWJvbChwcm9wZXJ0eUVkZ2Up
OworICAgICAgICAgICAgdm1DYWxsKFZvaWQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25EZWZp
bmVBY2Nlc3NvclByb3BlcnR5U3ltYm9sKSwgbV9jYWxsRnJhbWUsIGJhc2UsIHByb3BlcnR5LCBn
ZXR0ZXIsIHNldHRlciwgYXR0cmlidXRlcyk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorICAgICAgICBjYXNlIFVudHlwZWRVc2U6IHsKKyAgICAgICAgICAgIExWYWx1ZSBwcm9wZXJ0
eSA9IGxvd0pTVmFsdWUocHJvcGVydHlFZGdlKTsKKyAgICAgICAgICAgIHZtQ2FsbChWb2lkLCBt
X291dC5vcGVyYXRpb24ob3BlcmF0aW9uRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eSksIG1fY2FsbEZy
YW1lLCBiYXNlLCBwcm9wZXJ0eSwgZ2V0dGVyLCBzZXR0ZXIsIGF0dHJpYnV0ZXMpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICB9CiAgICAgCiAgICAg
dm9pZCBjb21waWxlUHV0QnlJZCgpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9D
Q2FsbEhlbHBlcnMuY3BwCmluZGV4IDc1ZDE1YTYyM2M3MmM0NGFkYzRhNGI5YzEzZjg1ODZmMjcy
MjZiODUuLjNjM2RmNjE4Zjk5ZmViOTQxNTQ0MDA5OTg1NWRlMWZiYWY1Y2I5ZDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5jcHAKQEAgLTY4LDEwNyArNjgsNiBA
QCB2b2lkIENDYWxsSGVscGVyczo6ZW5zdXJlU2hhZG93Q2hpY2tlblBhY2tldChHUFJSZWcgc2hh
ZG93UGFja2V0LCBHUFJSZWcgc2NyYXRjaAogICAgIHN0b3JlUHRyKHNjcmF0Y2gyLCBBZGRyZXNz
KHNjcmF0Y2gxTm9uQXJnR1BSKSk7CiB9CiAKLSNpZiBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNU
RVJTID49IDQKLXZvaWQgQ0NhbGxIZWxwZXJzOjpzZXR1cEZvdXJTdHViQXJnc0dQUihHUFJSZWcg
ZGVzdEEsIEdQUlJlZyBkZXN0QiwgR1BSUmVnIGRlc3RDLCBHUFJSZWcgZGVzdEQsIEdQUlJlZyBz
cmNBLCBHUFJSZWcgc3JjQiwgR1BSUmVnIHNyY0MsIEdQUlJlZyBzcmNEKQotewotICAgIGlmICgh
QVNTRVJUX0RJU0FCTEVEKSB7Ci0gICAgICAgIFJlZ2lzdGVyU2V0IGRlc3RpbmF0aW9ucyhkZXN0
QSwgZGVzdEIsIGRlc3RDLCBkZXN0RCk7Ci0gICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoZGVz
dGluYXRpb25zLm51bWJlck9mU2V0R1BScygpID09IDQsICJEZXN0aW5hdGlvbnMgc2hvdWxkIG5v
dCBiZSBhbGlhc2VkLiIpOwotICAgIH0KLQotICAgIHR5cGVkZWYgc3RkOjpwYWlyPEdQUlJlZywg
R1BSUmVnPiBSZWdQYWlyOwotICAgIFZlY3RvcjxSZWdQYWlyLCA0PiBwYWlyczsKLQotICAgIGlm
IChzcmNBICE9IGRlc3RBKQotICAgICAgICBwYWlycy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoc3Jj
QSwgZGVzdEEpKTsKLSAgICBpZiAoc3JjQiAhPSBkZXN0QikKLSAgICAgICAgcGFpcnMuYXBwZW5k
KHN0ZDo6bWFrZV9wYWlyKHNyY0IsIGRlc3RCKSk7Ci0gICAgaWYgKHNyY0MgIT0gZGVzdEMpCi0g
ICAgICAgIHBhaXJzLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihzcmNDLCBkZXN0QykpOwotICAgIGlm
IChzcmNEICE9IGRlc3REKQotICAgICAgICBwYWlycy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoc3Jj
RCwgZGVzdEQpKTsKLQotCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAotICAgIGF1dG8gbnVtVW5pcXVl
U291cmNlcyA9IFsmXSAoKSAtPiB1bnNpZ25lZCB7Ci0gICAgICAgIFJlZ2lzdGVyU2V0IHNldDsK
LSAgICAgICAgZm9yIChhdXRvJiBwYWlyIDogcGFpcnMpIHsKLSAgICAgICAgICAgIEdQUlJlZyBz
b3VyY2UgPSBwYWlyLmZpcnN0OwotICAgICAgICAgICAgc2V0LnNldChzb3VyY2UpOwotICAgICAg
ICB9Ci0gICAgICAgIHJldHVybiBzZXQubnVtYmVyT2ZTZXRHUFJzKCk7Ci0gICAgfTsKLQotICAg
IGF1dG8gbnVtVW5pcXVlRGVzdHMgPSBbJl0gKCkgLT4gdW5zaWduZWQgewotICAgICAgICBSZWdp
c3RlclNldCBzZXQ7Ci0gICAgICAgIGZvciAoYXV0byYgcGFpciA6IHBhaXJzKSB7Ci0gICAgICAg
ICAgICBHUFJSZWcgZGVzdCA9IHBhaXIuc2Vjb25kOwotICAgICAgICAgICAgc2V0LnNldChkZXN0
KTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gc2V0Lm51bWJlck9mU2V0R1BScygpOwotICAg
IH07Ci0jZW5kaWYKLQotICAgIHdoaWxlIChwYWlycy5zaXplKCkpIHsKLSAgICAgICAgUmVnaXN0
ZXJTZXQgZnJlZURlc3RpbmF0aW9uczsKLSAgICAgICAgZm9yIChhdXRvJiBwYWlyIDogcGFpcnMp
IHsKLSAgICAgICAgICAgIEdQUlJlZyBkZXN0ID0gcGFpci5zZWNvbmQ7Ci0gICAgICAgICAgICBm
cmVlRGVzdGluYXRpb25zLnNldChkZXN0KTsKLSAgICAgICAgfQotICAgICAgICBmb3IgKGF1dG8m
IHBhaXIgOiBwYWlycykgewotICAgICAgICAgICAgR1BSUmVnIHNvdXJjZSA9IHBhaXIuZmlyc3Q7
Ci0gICAgICAgICAgICBmcmVlRGVzdGluYXRpb25zLmNsZWFyKHNvdXJjZSk7Ci0gICAgICAgIH0K
LQotICAgICAgICBpZiAoZnJlZURlc3RpbmF0aW9ucy5udW1iZXJPZlNldEdQUnMoKSkgewotICAg
ICAgICAgICAgYm9vbCBtYWRlTW92ZSA9IGZhbHNlOwotICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IHBhaXJzLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgYXV0byYg
cGFpciA9IHBhaXJzW2ldOwotICAgICAgICAgICAgICAgIEdQUlJlZyBzb3VyY2UgPSBwYWlyLmZp
cnN0OwotICAgICAgICAgICAgICAgIEdQUlJlZyBkZXN0ID0gcGFpci5zZWNvbmQ7Ci0gICAgICAg
ICAgICAgICAgaWYgKGZyZWVEZXN0aW5hdGlvbnMuZ2V0KGRlc3QpKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIG1vdmUoc291cmNlLCBkZXN0KTsKLSAgICAgICAgICAgICAgICAgICAgcGFpcnMucmVt
b3ZlKGkpOwotICAgICAgICAgICAgICAgICAgICBtYWRlTW92ZSA9IHRydWU7Ci0gICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIEFTU0VSVF9VTlVTRUQobWFkZU1vdmUsIG1hZGVNb3ZlKTsKLSAgICAgICAgICAgIGNv
bnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgQVNTRVJUKG51bVVuaXF1ZURlc3RzKCkgPT0g
bnVtVW5pcXVlU291cmNlcygpKTsKLSAgICAgICAgQVNTRVJUKG51bVVuaXF1ZURlc3RzKCkgPT0g
cGFpcnMuc2l6ZSgpKTsKLSAgICAgICAgLy8gVGhlIHNldCBvZiBzb3VyY2UgYW5kIGRlc3RpbmF0
aW9uIHJlZ2lzdGVycyBhcmUgZXF1aXZhbGVudCBzZXRzLiBUaGlzIG1lYW5zIHdlIGRvbid0IGhh
dmUKLSAgICAgICAgLy8gYW55IGZyZWUgZGVzdGluYXRpb24gcmVnaXN0ZXJzIHRoYXQgd29uJ3Qg
YWxzbyBjbG9iYmVyIGEgc291cmNlLiBXZSBnZXQgYXJvdW5kIHRoaXMgYnkKLSAgICAgICAgLy8g
ZXhjaGFuZ2luZyByZWdpc3RlcnMuCi0KLSAgICAgICAgR1BSUmVnIHNvdXJjZSA9IHBhaXJzWzBd
LmZpcnN0OwotICAgICAgICBHUFJSZWcgZGVzdCA9IHBhaXJzWzBdLnNlY29uZDsKLSAgICAgICAg
c3dhcChzb3VyY2UsIGRlc3QpOwotICAgICAgICBwYWlycy5yZW1vdmUoMCk7Ci0KLSAgICAgICAg
R1BSUmVnIG5ld1NvdXJjZSA9IHNvdXJjZTsKLSAgICAgICAgZm9yIChhdXRvJiBwYWlyIDogcGFp
cnMpIHsKLSAgICAgICAgICAgIEdQUlJlZyBzb3VyY2UgPSBwYWlyLmZpcnN0OwotICAgICAgICAg
ICAgaWYgKHNvdXJjZSA9PSBkZXN0KSB7Ci0gICAgICAgICAgICAgICAgcGFpci5maXJzdCA9IG5l
d1NvdXJjZTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
fQotCi0gICAgICAgIC8vIFdlIG1heSBoYXZlIGludHJvZHVjZWQgcGFpcnMgdGhhdCBoYXZlIHRo
ZSBzYW1lIHNvdXJjZSBhbmQgZGVzdGluYXRpb24uIFJlbW92ZSB0aG9zZSBub3cuCi0gICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwYWlycy5zaXplKCk7IGkrKykgewotICAgICAgICAg
ICAgYXV0byYgcGFpciA9IHBhaXJzW2ldOwotICAgICAgICAgICAgaWYgKHBhaXIuZmlyc3QgPT0g
cGFpci5zZWNvbmQpIHsKLSAgICAgICAgICAgICAgICBwYWlycy5yZW1vdmUoaSk7Ci0gICAgICAg
ICAgICAgICAgaS0tOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotfQotI2VuZGlm
IC8vIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMgPj0gNAotCiB9IC8vIG5hbWVzcGFjZSBK
U0MKIAogI2VuZGlmIC8vIEVOQUJMRShKSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0NDYWxsSGVscGVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2Fs
bEhlbHBlcnMuaAppbmRleCA3OTQ1NDZiMGJkMjdhOTljMGMxOTg5YmUyZTQxMzE0MzRkYTQ4ZmFl
Li5hY2E5ZTFmNzRkYzhlYTE2NmVmOTUyZTM1YmQwMWFmZDJkOTQ3ZmEyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgKQEAgLTk4Nyw3ICs5ODcsMTQgQEAgY2xhc3Mg
Q0NhbGxIZWxwZXJzIDogcHVibGljIEFzc2VtYmx5SGVscGVycyB7CiAgICAgICAgICAgICBzd2Fw
KGRlc3RCLCBkZXN0Qyk7CiAgICAgfQogCi0gICAgdm9pZCBzZXR1cEZvdXJTdHViQXJnc0dQUihH
UFJSZWcgZGVzdEEsIEdQUlJlZyBkZXN0QiwgR1BSUmVnIGRlc3RDLCBHUFJSZWcgZGVzdEQsIEdQ
UlJlZyBzcmNBLCBHUFJSZWcgc3JjQiwgR1BSUmVnIHNyY0MsIEdQUlJlZyBzcmNEKTsKKyAgICB2
b2lkIHNldHVwRm91clN0dWJBcmdzR1BSKEdQUlJlZyBkZXN0QSwgR1BSUmVnIGRlc3RCLCBHUFJS
ZWcgZGVzdEMsIEdQUlJlZyBkZXN0RCwgR1BSUmVnIHNyY0EsIEdQUlJlZyBzcmNCLCBHUFJSZWcg
c3JjQywgR1BSUmVnIHNyY0QpCisgICAgeworICAgICAgICBzZXR1cFN0dWJBcmdzR1BSPDQ+KHsg
eyBkZXN0QSwgZGVzdEIsIGRlc3RDLCBkZXN0RCB9IH0sIHsgeyBzcmNBLCBzcmNCLCBzcmNDLCBz
cmNEIH0gfSk7CisgICAgfQorICAgIHZvaWQgc2V0dXBGaXZlU3R1YkFyZ3NHUFIoR1BSUmVnIGRl
c3RBLCBHUFJSZWcgZGVzdEIsIEdQUlJlZyBkZXN0QywgR1BSUmVnIGRlc3RELCBHUFJSZWcgZGVz
dEUsIEdQUlJlZyBzcmNBLCBHUFJSZWcgc3JjQiwgR1BSUmVnIHNyY0MsIEdQUlJlZyBzcmNELCBH
UFJSZWcgc3JjRSkKKyAgICB7CisgICAgICAgIHNldHVwU3R1YkFyZ3NHUFI8NT4oeyB7IGRlc3RB
LCBkZXN0QiwgZGVzdEMsIGRlc3RELCBkZXN0RSB9IH0sIHsgeyBzcmNBLCBzcmNCLCBzcmNDLCBz
cmNELCBzcmNFIH0gfSk7CisgICAgfQogCiAjaWYgQ1BVKFg4Nl82NCkgfHwgQ1BVKEFSTTY0KQog
ICAgIHRlbXBsYXRlPEZQUlJlZyBkZXN0QSwgRlBSUmVnIGRlc3RCPgpAQCAtMjE4NCw2ICsyMTkx
LDE5IEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewogICAg
ICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApOwogICAgIH0KIAorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVnIGFy
ZzQsIEdQUlJlZyBhcmc1KQorICAgIHsKKyAgICAgICAgc2V0dXBGaXZlU3R1YkFyZ3NHUFIoR1BS
SW5mbzo6YXJndW1lbnRHUFIxLCBHUFJJbmZvOjphcmd1bWVudEdQUjIsIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMywgR1BSSW5mbzo6YXJndW1lbnRHUFI0LCBHUFJJbmZvOjphcmd1bWVudEdQUjUsIGFy
ZzEsIGFyZzIsIGFyZzMsIGFyZzQsIGFyZzUpOworICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxG
cmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIH0KKworICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQ
UlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVnIGFyZzQsIFRydXN0ZWRJbW0zMiBhcmc1KQor
ICAgIHsKKyAgICAgICAgc2V0dXBGb3VyU3R1YkFyZ3NHUFIoR1BSSW5mbzo6YXJndW1lbnRHUFIx
LCBHUFJJbmZvOjphcmd1bWVudEdQUjIsIEdQUkluZm86OmFyZ3VtZW50R1BSMywgR1BSSW5mbzo6
YXJndW1lbnRHUFI0LCBhcmcxLCBhcmcyLCBhcmczLCBhcmc0KTsKKyAgICAgICAgbW92ZShhcmc1
LCBHUFJJbmZvOjphcmd1bWVudEdQUjUpOworICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFt
ZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIH0KKwogICAgIEFMV0FZU19J
TkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIFRydXN0
ZWRJbW1QdHIgYXJnMiwgR1BSUmVnIGFyZzMsIEdQUlJlZyBhcmc0KQogICAgIHsKICAgICAgICAg
c2V0dXBTdHViQXJndW1lbnRzMTM0KGFyZzEsIGFyZzMsIGFyZzQpOwpAQCAtMjQ3Miw2ICsyNDky
LDEwNSBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJzIHsKICAg
ICAgICAgLy8gUmVhZHkgZm9yIGEganVtcCEKICAgICAgICAgbW92ZShuZXdGcmFtZVBvaW50ZXIs
IHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKICAgICB9CisKKyNpZiBOVU1CRVJfT0ZfQVJHVU1FTlRf
UkVHSVNURVJTID49IDQKKyAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBOdW1iZXJPZlJlZ2lzdGVycz4K
KyAgICB2b2lkIHNldHVwU3R1YkFyZ3NHUFIoc3RkOjphcnJheTxHUFJSZWcsIE51bWJlck9mUmVn
aXN0ZXJzPiBkZXN0aW5hdGlvbnMsIHN0ZDo6YXJyYXk8R1BSUmVnLCBOdW1iZXJPZlJlZ2lzdGVy
cz4gc291cmNlcykKKyAgICB7CisgICAgICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7CisgICAg
ICAgICAgICBSZWdpc3RlclNldCBzZXQ7CisgICAgICAgICAgICBmb3IgKEdQUlJlZyBkZXN0IDog
ZGVzdGluYXRpb25zKQorICAgICAgICAgICAgICAgIHNldC5zZXQoZGVzdCk7CisgICAgICAgICAg
ICBBU1NFUlRfV0lUSF9NRVNTQUdFKHNldC5udW1iZXJPZlNldEdQUnMoKSA9PSA0LCAiRGVzdGlu
YXRpb25zIHNob3VsZCBub3QgYmUgYWxpYXNlZC4iKTsKKyAgICAgICAgfQorCisgICAgICAgIHR5
cGVkZWYgc3RkOjpwYWlyPEdQUlJlZywgR1BSUmVnPiBSZWdQYWlyOworICAgICAgICBWZWN0b3I8
UmVnUGFpciwgTnVtYmVyT2ZSZWdpc3RlcnM+IHBhaXJzOworCisgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBOdW1iZXJPZlJlZ2lzdGVyczsgKytpKSB7CisgICAgICAgICAgICBpZiAo
c291cmNlc1tpXSAhPSBkZXN0aW5hdGlvbnNbaV0pCisgICAgICAgICAgICAgICAgcGFpcnMuYXBw
ZW5kKHN0ZDo6bWFrZV9wYWlyKHNvdXJjZXNbaV0sIGRlc3RpbmF0aW9uc1tpXSkpOworICAgICAg
ICB9CisKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgICAgIGF1dG8gbnVtVW5pcXVlU291cmNl
cyA9IFsmXSAoKSAtPiB1bnNpZ25lZCB7CisgICAgICAgICAgICBSZWdpc3RlclNldCBzZXQ7Cisg
ICAgICAgICAgICBmb3IgKGF1dG8mIHBhaXIgOiBwYWlycykgeworICAgICAgICAgICAgICAgIEdQ
UlJlZyBzb3VyY2UgPSBwYWlyLmZpcnN0OworICAgICAgICAgICAgICAgIHNldC5zZXQoc291cmNl
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBzZXQubnVtYmVyT2ZTZXRHUFJz
KCk7CisgICAgICAgIH07CisKKyAgICAgICAgYXV0byBudW1VbmlxdWVEZXN0cyA9IFsmXSAoKSAt
PiB1bnNpZ25lZCB7CisgICAgICAgICAgICBSZWdpc3RlclNldCBzZXQ7CisgICAgICAgICAgICBm
b3IgKGF1dG8mIHBhaXIgOiBwYWlycykgeworICAgICAgICAgICAgICAgIEdQUlJlZyBkZXN0ID0g
cGFpci5zZWNvbmQ7CisgICAgICAgICAgICAgICAgc2V0LnNldChkZXN0KTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIHJldHVybiBzZXQubnVtYmVyT2ZTZXRHUFJzKCk7CisgICAgICAgIH07
CisjZW5kaWYKKworICAgICAgICB3aGlsZSAocGFpcnMuc2l6ZSgpKSB7CisgICAgICAgICAgICBS
ZWdpc3RlclNldCBmcmVlRGVzdGluYXRpb25zOworICAgICAgICAgICAgZm9yIChhdXRvJiBwYWly
IDogcGFpcnMpIHsKKyAgICAgICAgICAgICAgICBHUFJSZWcgZGVzdCA9IHBhaXIuc2Vjb25kOwor
ICAgICAgICAgICAgICAgIGZyZWVEZXN0aW5hdGlvbnMuc2V0KGRlc3QpOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgZm9yIChhdXRvJiBwYWlyIDogcGFpcnMpIHsKKyAgICAgICAgICAgICAg
ICBHUFJSZWcgc291cmNlID0gcGFpci5maXJzdDsKKyAgICAgICAgICAgICAgICBmcmVlRGVzdGlu
YXRpb25zLmNsZWFyKHNvdXJjZSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChm
cmVlRGVzdGluYXRpb25zLm51bWJlck9mU2V0R1BScygpKSB7CisgICAgICAgICAgICAgICAgYm9v
bCBtYWRlTW92ZSA9IGZhbHNlOworICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBwYWlycy5zaXplKCk7IGkrKykgeworICAgICAgICAgICAgICAgICAgICBhdXRvJiBwYWly
ID0gcGFpcnNbaV07CisgICAgICAgICAgICAgICAgICAgIEdQUlJlZyBzb3VyY2UgPSBwYWlyLmZp
cnN0OworICAgICAgICAgICAgICAgICAgICBHUFJSZWcgZGVzdCA9IHBhaXIuc2Vjb25kOworICAg
ICAgICAgICAgICAgICAgICBpZiAoZnJlZURlc3RpbmF0aW9ucy5nZXQoZGVzdCkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIG1vdmUoc291cmNlLCBkZXN0KTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHBhaXJzLnJlbW92ZShpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1hZGVNb3Zl
ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQo
bWFkZU1vdmUsIG1hZGVNb3ZlKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgQVNTRVJUKG51bVVuaXF1ZURlc3RzKCkgPT0gbnVtVW5pcXVl
U291cmNlcygpKTsKKyAgICAgICAgICAgIEFTU0VSVChudW1VbmlxdWVEZXN0cygpID09IHBhaXJz
LnNpemUoKSk7CisgICAgICAgICAgICAvLyBUaGUgc2V0IG9mIHNvdXJjZSBhbmQgZGVzdGluYXRp
b24gcmVnaXN0ZXJzIGFyZSBlcXVpdmFsZW50IHNldHMuIFRoaXMgbWVhbnMgd2UgZG9uJ3QgaGF2
ZQorICAgICAgICAgICAgLy8gYW55IGZyZWUgZGVzdGluYXRpb24gcmVnaXN0ZXJzIHRoYXQgd29u
J3QgYWxzbyBjbG9iYmVyIGEgc291cmNlLiBXZSBnZXQgYXJvdW5kIHRoaXMgYnkKKyAgICAgICAg
ICAgIC8vIGV4Y2hhbmdpbmcgcmVnaXN0ZXJzLgorCisgICAgICAgICAgICBHUFJSZWcgc291cmNl
ID0gcGFpcnNbMF0uZmlyc3Q7CisgICAgICAgICAgICBHUFJSZWcgZGVzdCA9IHBhaXJzWzBdLnNl
Y29uZDsKKyAgICAgICAgICAgIHN3YXAoc291cmNlLCBkZXN0KTsKKyAgICAgICAgICAgIHBhaXJz
LnJlbW92ZSgwKTsKKworICAgICAgICAgICAgR1BSUmVnIG5ld1NvdXJjZSA9IHNvdXJjZTsKKyAg
ICAgICAgICAgIGZvciAoYXV0byYgcGFpciA6IHBhaXJzKSB7CisgICAgICAgICAgICAgICAgR1BS
UmVnIHNvdXJjZSA9IHBhaXIuZmlyc3Q7CisgICAgICAgICAgICAgICAgaWYgKHNvdXJjZSA9PSBk
ZXN0KSB7CisgICAgICAgICAgICAgICAgICAgIHBhaXIuZmlyc3QgPSBuZXdTb3VyY2U7CisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgLy8gV2UgbWF5IGhhdmUgaW50cm9kdWNlZCBwYWlycyB0aGF0IGhhdmUg
dGhlIHNhbWUgc291cmNlIGFuZCBkZXN0aW5hdGlvbi4gUmVtb3ZlIHRob3NlIG5vdy4KKyAgICAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwYWlycy5zaXplKCk7IGkrKykgeworICAg
ICAgICAgICAgICAgIGF1dG8mIHBhaXIgPSBwYWlyc1tpXTsKKyAgICAgICAgICAgICAgICBpZiAo
cGFpci5maXJzdCA9PSBwYWlyLnNlY29uZCkgeworICAgICAgICAgICAgICAgICAgICBwYWlycy5y
ZW1vdmUoaSk7CisgICAgICAgICAgICAgICAgICAgIGktLTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYgLy8gTlVNQkVSX09GX0FSR1VN
RU5UX1JFR0lTVEVSUyA+PSA0CiAgICAgCiAgICAgLy8gVGhlc2Ugb3BlcmF0aW9ucyBjbG9iYmVy
IGFsbCB2b2xhdGlsZSByZWdpc3RlcnMuIFRoZXkgYXNzdW1lIHRoYXQgdGhlcmUgaXMgcm9vbSBv
biB0aGUgdG9wIG9mCiAgICAgLy8gc3RhY2sgdG8gbWFyc2hhbGwgY2FsbCBhcmd1bWVudHMuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXggMWFiZTdjNDM0MTc0NjNmOTY5MTY1MjlhNmU2
MTRlZGUwOWM3ZmQzOS4uMjM3ZDE5YTRiMDgyZjFjYjBlMDJjMmVhNTc3Y2MxY2MzMTA3OTQzMSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtMzIyLDYgKzMyMiw4IEBAIHZvaWQgSklU
Ojpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9nZXR0
ZXJfc2V0dGVyX2J5X2lkKQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2dldHRlcl9ieV92YWwp
CiAgICAgICAgIERFRklORV9PUChvcF9wdXRfc2V0dGVyX2J5X3ZhbCkKKyAgICAgICAgREVGSU5F
X09QKG9wX2RlZmluZV9kYXRhX3Byb3BlcnR5KQorICAgICAgICBERUZJTkVfT1Aob3BfZGVmaW5l
X2FjY2Vzc29yX3Byb3BlcnR5KQogCiAgICAgICAgIERFRklORV9PUChvcF9yZXQpCiAgICAgICAg
IERFRklORV9PUChvcF9yc2hpZnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCBhMTRhODU2
YTA3YmQyNWFhZDdjY2UwZDNiODQwZWUyNzNlZWNkZmM1Li40NTFhMjBkNTY0MTM4ZWNiZDc1YzRk
ZDMyYWQ0ZGNmYTY0NjI2NjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTU2Nyw2ICs1
NjcsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9nZXR0ZXJf
c2V0dGVyX2J5X2lkKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfZ2V0
dGVyX2J5X3ZhbChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X3NldHRl
cl9ieV92YWwoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2RlZmluZV9kYXRh
X3Byb3BlcnR5KEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9kZWZpbmVfYWNj
ZXNzb3JfcHJvcGVydHkoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3JldChJ
bnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfcnNoaWZ0KEluc3RydWN0aW9uKik7
CiAgICAgICAgIHZvaWQgZW1pdF9vcF9zZXRfZnVuY3Rpb25fbmFtZShJbnN0cnVjdGlvbiopOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAppbmRleCA5MzVjNGZhYjE5
ZDJkNzc5YTUwZWI0ZTc3ZjM1MTg2MWIyMTFhM2Y2Li40N2ZlOTU3M2ZhZDc1NmEyNjI2NzQ4MWZk
NmFjZWFiODZlOTNlNTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlv
bnMuaApAQCAtNTksNiArNTksNyBAQCBjbGFzcyBSZWdFeHBPYmplY3Q7CiBjbGFzcyBSZWdpc3Rl
cjsKIGNsYXNzIFN0cnVjdHVyZTsKIGNsYXNzIFN0cnVjdHVyZVN0dWJJbmZvOworY2xhc3MgU3lt
Ym9sOwogY2xhc3MgU3ltYm9sVGFibGU7CiBjbGFzcyBXYXRjaHBvaW50U2V0OwogCkBAIC0xMTEs
NiArMTEyLDcgQEAgdHlwZWRlZiBjaGFyKiBVbnVzZWRQdHI7CiAgICAgU3NpOiBTdHJ1Y3R1cmVT
dHViSW5mbyoKICAgICBTdDogU3RydWN0dXJlKgogICAgIFN5bXRhYjogU3ltYm9sVGFibGUqCisg
ICAgU3ltOiBTeW1ib2wqCiAgICAgVDogU3RyaW5nSW1wbCoKICAgICBWOiB2b2lkCiAgICAgVm06
IFZNKgpAQCAtMjY5LDYgKzI3MSwxNCBAQCB0eXBlZGVmIHZvaWQgKEpJVF9PUEVSQVRJT04gKlZf
SklUT3BlcmF0aW9uX0VQWkopKEV4ZWNTdGF0ZSosIHZvaWQqLCBpbnQzMl90LCBFbgogdHlwZWRl
ZiB2b2lkIChKSVRfT1BFUkFUSU9OICpWX0pJVE9wZXJhdGlvbl9FU3NpSkpJKShFeGVjU3RhdGUq
LCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgVW5p
cXVlZFN0cmluZ0ltcGwqKTsKIHR5cGVkZWYgdm9pZCAoSklUX09QRVJBVElPTiAqVl9KSVRPcGVy
YXRpb25fRUpKSkkpKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUsIFVuaXF1ZWRTdHJpbmdJbXBsKik7CiB0eXBlZGVmIHZvaWQgKEpJVF9P
UEVSQVRJT04gKlZfSklUT3BlcmF0aW9uX0VKSkpKKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSk7Cit0eXBl
ZGVmIHZvaWQgKEpJVF9PUEVSQVRJT04gKlZfSklUT3BlcmF0aW9uX0VPSkpaKShFeGVjU3RhdGUq
LCBKU09iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgaW50MzJfdCk7Cit0
eXBlZGVmIHZvaWQgKEpJVF9PUEVSQVRJT04gKlZfSklUT3BlcmF0aW9uX0VPSnNzSlopKEV4ZWNT
dGF0ZSosIEpTT2JqZWN0KiwgSlNTdHJpbmcqLCBFbmNvZGVkSlNWYWx1ZSwgaW50MzJfdCk7Cit0
eXBlZGVmIHZvaWQgKEpJVF9PUEVSQVRJT04gKlZfSklUT3BlcmF0aW9uX0VPSUpaKShFeGVjU3Rh
dGUqLCBKU09iamVjdCosIFVuaXF1ZWRTdHJpbmdJbXBsKiwgRW5jb2RlZEpTVmFsdWUsIGludDMy
X3QpOwordHlwZWRlZiB2b2lkIChKSVRfT1BFUkFUSU9OICpWX0pJVE9wZXJhdGlvbl9FT1N5bUpa
KShFeGVjU3RhdGUqLCBKU09iamVjdCosIFN5bWJvbCosIEVuY29kZWRKU1ZhbHVlLCBpbnQzMl90
KTsKK3R5cGVkZWYgdm9pZCAoSklUX09QRVJBVElPTiAqVl9KSVRPcGVyYXRpb25fRU9KT09aKShF
eGVjU3RhdGUqLCBKU09iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBKU09iamVjdCosIEpTT2JqZWN0
KiwgaW50MzJfdCk7Cit0eXBlZGVmIHZvaWQgKEpJVF9PUEVSQVRJT04gKlZfSklUT3BlcmF0aW9u
X0VPSnNzT09aKShFeGVjU3RhdGUqLCBKU09iamVjdCosIEpTU3RyaW5nKiwgSlNPYmplY3QqLCBK
U09iamVjdCosIGludDMyX3QpOwordHlwZWRlZiB2b2lkIChKSVRfT1BFUkFUSU9OICpWX0pJVE9w
ZXJhdGlvbl9FT0lPT1opKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgVW5pcXVlZFN0cmluZ0ltcGwq
LCBKU09iamVjdCosIEpTT2JqZWN0KiwgaW50MzJfdCk7Cit0eXBlZGVmIHZvaWQgKEpJVF9PUEVS
QVRJT04gKlZfSklUT3BlcmF0aW9uX0VPU3ltT09aKShFeGVjU3RhdGUqLCBKU09iamVjdCosIFN5
bWJvbCosIEpTT2JqZWN0KiwgSlNPYmplY3QqLCBpbnQzMl90KTsKIHR5cGVkZWYgdm9pZCAoSklU
X09QRVJBVElPTiAqVl9KSVRPcGVyYXRpb25fRVdzKShFeGVjU3RhdGUqLCBXYXRjaHBvaW50U2V0
Kik7CiB0eXBlZGVmIHZvaWQgKEpJVF9PUEVSQVRJT04gKlZfSklUT3BlcmF0aW9uX0VaKShFeGVj
U3RhdGUqLCBpbnQzMl90KTsKIHR5cGVkZWYgdm9pZCAoSklUX09QRVJBVElPTiAqVl9KSVRPcGVy
YXRpb25fRVpKKShFeGVjU3RhdGUqLCBpbnQzMl90LCBFbmNvZGVkSlNWYWx1ZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCmluZGV4IDU2MDI2
OGI1YzMxNDc4NDEzNjA3MmRkZDgwMDc3NzgwZjMzNzhiMmIuLjlkNGZkMWFhNmFmNjRiNDhkN2Jl
MWIzZWI0NjkzMGI1M2YzNWY0YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUUHJvcGVydHlBY2Nlc3MuY3BwCkBAIC0xNzczLDYgKzE3NzMsMTggQEAgSklUOjpKdW1wTGlz
dCBKSVQ6OmVtaXRGbG9hdFR5cGVkQXJyYXlQdXRCeVZhbChJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uLAogICAgIHJldHVybiBzbG93Q2FzZXM7CiB9CiAKK3ZvaWQgSklUOjplbWl0X29w
X2RlZmluZV9kYXRhX3Byb3BlcnR5KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7
CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rp
b24sIHNsb3dfcGF0aF9kZWZpbmVfZGF0YV9wcm9wZXJ0eSk7CisgICAgc2xvd1BhdGhDYWxsLmNh
bGwoKTsKK30KKwordm9pZCBKSVQ6OmVtaXRfb3BfZGVmaW5lX2FjY2Vzc29yX3Byb3BlcnR5KElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgSklUU2xvd1BhdGhDYWxsIHNs
b3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9kZWZpbmVfYWNj
ZXNzb3JfcHJvcGVydHkpOworICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQppbmRleCAxMDAzN2FmNTZj
ZTZjN2YxYTkzZTUyZDJhNzE3ZTI5NGUwMTA1ZjlhLi5jOWI4NDQzN2M2NTc0NTUzZTM4MGU1MjEy
MjYxYWI5MjY5NmJlMzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlci5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC0xNDU3LDYgKzE0NTcsMTggQEAgX2xsaW50X29w
X3B1dF9zZXR0ZXJfYnlfdmFsOgogICAgIGRpc3BhdGNoKDUpCiAKIAorX2xsaW50X29wX2RlZmlu
ZV9kYXRhX3Byb3BlcnR5OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsT3Bjb2RlU2xv
d1BhdGgoX3Nsb3dfcGF0aF9kZWZpbmVfZGF0YV9wcm9wZXJ0eSkKKyAgICBkaXNwYXRjaCg1KQor
CisKK19sbGludF9vcF9kZWZpbmVfYWNjZXNzb3JfcHJvcGVydHk6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGNhbGxPcGNvZGVTbG93UGF0aChfc2xvd19wYXRoX2RlZmluZV9hY2Nlc3Nvcl9w
cm9wZXJ0eSkKKyAgICBkaXNwYXRjaCg2KQorCisKIF9sbGludF9vcF9qdHJ1ZToKICAgICB0cmFj
ZUV4ZWN1dGlvbigpCiAgICAganVtcFRydWVPckZhbHNlKApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKaW5kZXggY2FmODI2ZGMyYWNkYWI2
ZDlhMzk1OGEwY2YwMzExNDM2MjNiYmEzZi4uZjI1ZWU4MTFhY2E5ZWNhNGE5NmRhOTBlNWUwYTk0
MjViOTc0NThjMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uU2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25TbG93UGF0aHMuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiQ2xvbmVkQXJndW1l
bnRzLmgiCiAjaW5jbHVkZSAiQ29kZVByb2ZpbGluZy5oIgogI2luY2x1ZGUgIkNvbW1vblNsb3dQ
YXRoc0V4Y2VwdGlvbnMuaCIKKyNpbmNsdWRlICJEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaCIK
ICNpbmNsdWRlICJEaXJlY3RBcmd1bWVudHMuaCIKICNpbmNsdWRlICJFcnJvci5oIgogI2luY2x1
ZGUgIkVycm9ySGFuZGxpbmdTY29wZS5oIgpAQCAtOTMwLDQgKzkzMSwzOSBAQCBTTE9XX1BBVEhf
REVDTChzbG93X3BhdGhfcHV0X2J5X3ZhbF93aXRoX3RoaXMpCiAgICAgRU5EKCk7CiB9CiAKK1NM
T1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9kZWZpbmVfZGF0YV9wcm9wZXJ0eSkKK3sKKyAgICBCRUdJ
TigpOworICAgIEpTT2JqZWN0KiBiYXNlID0gYXNPYmplY3QoT1BfQygxKS5qc1ZhbHVlKCkpOwor
ICAgIEpTVmFsdWUgcHJvcGVydHkgPSBPUF9DKDIpLmpzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHZh
bHVlID0gT1BfQygzKS5qc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSBhdHRyaWJ1dGVzID0gT1BfQyg0
KS5qc1ZhbHVlKCk7CisgICAgQVNTRVJUKGF0dHJpYnV0ZXMuaXNJbnQzMigpKTsKKworICAgIGF1
dG8gcHJvcGVydHlOYW1lID0gcHJvcGVydHkudG9Qcm9wZXJ0eUtleShleGVjKTsKKyAgICBDSEVD
S19FWENFUFRJT04oKTsKKyAgICBQcm9wZXJ0eURlc2NyaXB0b3IgZGVzY3JpcHRvciA9IHRvUHJv
cGVydHlEZXNjcmlwdG9yKHZhbHVlLCBqc1VuZGVmaW5lZCgpLCBqc1VuZGVmaW5lZCgpLCBEZWZp
bmVQcm9wZXJ0eUF0dHJpYnV0ZXMoYXR0cmlidXRlcy5hc0ludDMyKCkpKTsKKyAgICBBU1NFUlQo
KGRlc2NyaXB0b3IuYXR0cmlidXRlcygpICYgQWNjZXNzb3IpIHx8ICghZGVzY3JpcHRvci5pc0Fj
Y2Vzc29yRGVzY3JpcHRvcigpKSk7CisgICAgYmFzZS0+bWV0aG9kVGFibGUodm0pLT5kZWZpbmVP
d25Qcm9wZXJ0eShiYXNlLCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHRydWUpOwor
ICAgIEVORCgpOworfQorCitTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZGVmaW5lX2FjY2Vzc29y
X3Byb3BlcnR5KQoreworICAgIEJFR0lOKCk7CisgICAgSlNPYmplY3QqIGJhc2UgPSBhc09iamVj
dChPUF9DKDEpLmpzVmFsdWUoKSk7CisgICAgSlNWYWx1ZSBwcm9wZXJ0eSA9IE9QX0MoMikuanNW
YWx1ZSgpOworICAgIEpTVmFsdWUgZ2V0dGVyID0gT1BfQygzKS5qc1ZhbHVlKCk7CisgICAgSlNW
YWx1ZSBzZXR0ZXIgPSBPUF9DKDQpLmpzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIGF0dHJpYnV0ZXMg
PSBPUF9DKDUpLmpzVmFsdWUoKTsKKyAgICBBU1NFUlQoYXR0cmlidXRlcy5pc0ludDMyKCkpOwor
CisgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBwcm9wZXJ0eS50b1Byb3BlcnR5S2V5KGV4ZWMpOwor
ICAgIENIRUNLX0VYQ0VQVElPTigpOworICAgIFByb3BlcnR5RGVzY3JpcHRvciBkZXNjcmlwdG9y
ID0gdG9Qcm9wZXJ0eURlc2NyaXB0b3IoanNVbmRlZmluZWQoKSwgZ2V0dGVyLCBzZXR0ZXIsIERl
ZmluZVByb3BlcnR5QXR0cmlidXRlcyhhdHRyaWJ1dGVzLmFzSW50MzIoKSkpOworICAgIEFTU0VS
VCgoZGVzY3JpcHRvci5hdHRyaWJ1dGVzKCkgJiBBY2Nlc3NvcikgfHwgKCFkZXNjcmlwdG9yLmlz
QWNjZXNzb3JEZXNjcmlwdG9yKCkpKTsKKyAgICBiYXNlLT5tZXRob2RUYWJsZSh2bSktPmRlZmlu
ZU93blByb3BlcnR5KGJhc2UsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgdHJ1ZSk7
CisgICAgRU5EKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAppbmRleCA4ZWU1YmUzMWFkM2NlZWI2
MTEwMzlmMjk4ZTdkYjM2ZmI5NDlmZjk5Li40NzViNzdlMThmZTIyZDA2ODhhMjVlMWY1N2I4NGU0
YzA4MmI4ZmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25TbG93UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25T
bG93UGF0aHMuaApAQCAtMjU3LDYgKzI1Nyw4IEBAIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93
X3BhdGhfZ2V0X2J5X2lkX3dpdGhfdGhpcyk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19w
YXRoX2dldF9ieV92YWxfd2l0aF90aGlzKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3Bh
dGhfcHV0X2J5X2lkX3dpdGhfdGhpcyk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRo
X3B1dF9ieV92YWxfd2l0aF90aGlzKTsKK1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhf
ZGVmaW5lX2RhdGFfcHJvcGVydHkpOworU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9k
ZWZpbmVfYWNjZXNzb3JfcHJvcGVydHkpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGVmaW5lUHJvcGVydHlBdHRyaWJ1
dGVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EZWZpbmVQcm9wZXJ0eUF0dHJp
YnV0ZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4zZDhhMjQ4YjkxNjBjNDc2NGIxMGNhNDExZmIyZjJjNzVjYTk4
MzYwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGVm
aW5lUHJvcGVydHlBdHRyaWJ1dGVzLmgKQEAgLTAsMCArMSwxNDIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUg
PHd0Zi9UcmlTdGF0ZS5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgRGVmaW5lUHJvcGVy
dHlBdHRyaWJ1dGVzIHsKK3B1YmxpYzoKKyAgICBzdGF0aWNfYXNzZXJ0KEZhbHNlVHJpU3RhdGUg
PT0gMCwgIkZhbHNlVHJpU3RhdGUgaXMgMC4iKTsKKyAgICBzdGF0aWNfYXNzZXJ0KFRydWVUcmlT
dGF0ZSA9PSAxLCAiVHJ1ZVRyaVN0YXRlIGlzIDEuIik7CisgICAgc3RhdGljX2Fzc2VydChNaXhl
ZFRyaVN0YXRlID09IDIsICJNaXhlZFRyaVN0YXRlIGlzIDIuIik7CisKKyAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgQ29uZmlndXJhYmxlU2hpZnQgPSAwOworICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBFbnVtZXJhYmxlU2hpZnQgPSAyOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBXcml0
YWJsZVNoaWZ0ID0gNDsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgVmFsdWVTaGlmdCA9IDY7
CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIEdldFNoaWZ0ID0gNzsKKyAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgU2V0U2hpZnQgPSA4OworCisgICAgRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVz
KCkKKyAgICAgICAgOiBtX2F0dHJpYnV0ZXMoCisgICAgICAgICAgICAoTWl4ZWRUcmlTdGF0ZSA8
PCBDb25maWd1cmFibGVTaGlmdCkKKyAgICAgICAgICAgIHwgKE1peGVkVHJpU3RhdGUgPDwgRW51
bWVyYWJsZVNoaWZ0KQorICAgICAgICAgICAgfCAoTWl4ZWRUcmlTdGF0ZSA8PCBXcml0YWJsZVNo
aWZ0KQorICAgICAgICAgICAgfCAoMCA8PCBWYWx1ZVNoaWZ0KQorICAgICAgICAgICAgfCAoMCA8
PCBHZXRTaGlmdCkKKyAgICAgICAgICAgIHwgKDAgPDwgU2V0U2hpZnQpKQorICAgIHsKKyAgICB9
CisKKyAgICBleHBsaWNpdCBEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXModW5zaWduZWQgYXR0cmli
dXRlcykKKyAgICAgICAgOiBtX2F0dHJpYnV0ZXMoYXR0cmlidXRlcykKKyAgICB7CisgICAgfQor
CisgICAgdW5zaWduZWQgcmF3UmVwcmVzZW50YXRpb24oKSBjb25zdAorICAgIHsKKyAgICAgICAg
cmV0dXJuIG1fYXR0cmlidXRlczsKKyAgICB9CisKKyAgICBib29sIGhhc1ZhbHVlKCkKKyAgICB7
CisgICAgICAgIHJldHVybiBtX2F0dHJpYnV0ZXMgJiAoMGIxIDw8IFZhbHVlU2hpZnQpOworICAg
IH0KKworICAgIHZvaWQgc2V0VmFsdWUoKQorICAgIHsKKyAgICAgICAgbV9hdHRyaWJ1dGVzID0g
bV9hdHRyaWJ1dGVzIHwgKDBiMSA8PCBWYWx1ZVNoaWZ0KTsKKyAgICB9CisKKyAgICBib29sIGhh
c0dldCgpCisgICAgeworICAgICAgICByZXR1cm4gbV9hdHRyaWJ1dGVzICYgKDBiMSA8PCBHZXRT
aGlmdCk7CisgICAgfQorCisgICAgdm9pZCBzZXRHZXQoKQorICAgIHsKKyAgICAgICAgbV9hdHRy
aWJ1dGVzID0gbV9hdHRyaWJ1dGVzIHwgKDBiMSA8PCBHZXRTaGlmdCk7CisgICAgfQorCisgICAg
Ym9vbCBoYXNTZXQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYXR0cmlidXRlcyAmICgwYjEg
PDwgU2V0U2hpZnQpOworICAgIH0KKworICAgIHZvaWQgc2V0U2V0KCkKKyAgICB7CisgICAgICAg
IG1fYXR0cmlidXRlcyA9IG1fYXR0cmlidXRlcyB8ICgwYjEgPDwgU2V0U2hpZnQpOworICAgIH0K
KworICAgIFRyaVN0YXRlIHdyaXRhYmxlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBleHRyYWN0
VHJpU3RhdGUoV3JpdGFibGVTaGlmdCk7CisgICAgfQorCisgICAgVHJpU3RhdGUgY29uZmlndXJh
YmxlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBleHRyYWN0VHJpU3RhdGUoQ29uZmlndXJhYmxl
U2hpZnQpOworICAgIH0KKworICAgIFRyaVN0YXRlIGVudW1lcmFibGUoKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGV4dHJhY3RUcmlTdGF0ZShFbnVtZXJhYmxlU2hpZnQpOworICAgIH0KKworICAg
IHZvaWQgc2V0V3JpdGFibGUoYm9vbCB2YWx1ZSkKKyAgICB7CisgICAgICAgIGZpbGxXaXRoVHJp
U3RhdGUodmFsdWUgPyBUcnVlVHJpU3RhdGUgOiBGYWxzZVRyaVN0YXRlLCBXcml0YWJsZVNoaWZ0
KTsKKyAgICB9CisKKyAgICB2b2lkIHNldENvbmZpZ3VyYWJsZShib29sIHZhbHVlKQorICAgIHsK
KyAgICAgICAgZmlsbFdpdGhUcmlTdGF0ZSh2YWx1ZSA/IFRydWVUcmlTdGF0ZSA6IEZhbHNlVHJp
U3RhdGUsIENvbmZpZ3VyYWJsZVNoaWZ0KTsKKyAgICB9CisKKyAgICB2b2lkIHNldEVudW1lcmFi
bGUoYm9vbCB2YWx1ZSkKKyAgICB7CisgICAgICAgIGZpbGxXaXRoVHJpU3RhdGUodmFsdWUgPyBU
cnVlVHJpU3RhdGUgOiBGYWxzZVRyaVN0YXRlLCBFbnVtZXJhYmxlU2hpZnQpOworICAgIH0KKwor
cHJpdmF0ZToKKyAgICB2b2lkIGZpbGxXaXRoVHJpU3RhdGUoVHJpU3RhdGUgc3RhdGUsIHVuc2ln
bmVkIHNoaWZ0KQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgbWFzayA9IDBiMTEgPDwgc2hpZnQ7
CisgICAgICAgIG1fYXR0cmlidXRlcyA9IChtX2F0dHJpYnV0ZXMgJiB+bWFzaykgfCAoc3RhdGUg
PDwgc2hpZnQpOworICAgIH0KKworICAgIFRyaVN0YXRlIGV4dHJhY3RUcmlTdGF0ZSh1bnNpZ25l
ZCBzaGlmdCkKKyAgICB7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUcmlTdGF0ZT4oKG1f
YXR0cmlidXRlcyA+PiBzaGlmdCkgJiAwYjExKTsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBtX2F0
dHJpYnV0ZXM7Cit9OworCisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IDk3M2MyZTgxNjllYjhm
YzVlYWVmNjQ2NzBiNDYxMTM2MjFhNTU4YTAuLjVjOTRiOTI1Y2JlNjVlMTkyNDFkNDlhMjhmMWUx
MWEwOWY2NzEyNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5jcHAKQEAgLTQwNCw3ICs0MDQsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojpp
bml0KFZNJiB2bSkKICAgICBtX2Z1bmN0aW9uUHJvdG9IYXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9u
LnNldCh2bSwgdGhpcywgaGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlvbik7CiAgICAgbV90aHJvd1R5
cGVFcnJvckdldHRlclNldHRlci5pbml0TGF0ZXIoCiAgICAgICAgIFtdIChjb25zdCBJbml0aWFs
aXplcjxHZXR0ZXJTZXR0ZXI+JiBpbml0KSB7Ci0gICAgICAgICAgICBKU0Z1bmN0aW9uKiB0aHJv
d2VyID0gSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGluaXQub3duZXIsIDAsIFN0cmluZygp
LCBnbG9iYWxGdW5jVGhyb3dUeXBlRXJyb3IpOworICAgICAgICAgICAgSlNGdW5jdGlvbiogdGhy
b3dlciA9IGluaXQub3duZXItPnRocm93VHlwZUVycm9yRnVuY3Rpb24oKTsKICAgICAgICAgICAg
IEdldHRlclNldHRlciogZ2V0dGVyU2V0dGVyID0gR2V0dGVyU2V0dGVyOjpjcmVhdGUoaW5pdC52
bSwgaW5pdC5vd25lcik7CiAgICAgICAgICAgICBnZXR0ZXJTZXR0ZXItPnNldEdldHRlcihpbml0
LnZtLCBpbml0Lm93bmVyLCB0aHJvd2VyKTsKICAgICAgICAgICAgIGdldHRlclNldHRlci0+c2V0
U2V0dGVyKGluaXQudm0sIGluaXQub3duZXIsIHRocm93ZXIpOwpAQCAtNTgxLDggKzU4MSw4IEBA
IG1fICMjIHByb3Blck5hbWUgIyMgU3RydWN0dXJlLnNldCh2bSwgdGhpcywgaW5zdGFuY2VUeXBl
OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoCiAgICAgT2JqZWN0Q29uc3RydWN0b3IqIG9iamVjdENv
bnN0cnVjdG9yID0gT2JqZWN0Q29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgdGhpcywgT2JqZWN0Q29u
c3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5n
ZXQoKSksIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKTsKICAgICBtX29iamVjdENvbnN0cnVjdG9y
LnNldCh2bSwgdGhpcywgb2JqZWN0Q29uc3RydWN0b3IpOwogCi0gICAgSlNGdW5jdGlvbiogZGVm
aW5lUHJvcGVydHlGdW5jdGlvbiA9IG1fb2JqZWN0Q29uc3RydWN0b3ItPmFkZERlZmluZVByb3Bl
cnR5KGV4ZWMsIHRoaXMpOwotICAgIG1fZGVmaW5lUHJvcGVydHlGdW5jdGlvbi5zZXQodm0sIHRo
aXMsIGRlZmluZVByb3BlcnR5RnVuY3Rpb24pOworICAgIEpTRnVuY3Rpb24qIHRocm93VHlwZUVy
cm9yRnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDAsIFN0cmluZygpLCBn
bG9iYWxGdW5jVGhyb3dUeXBlRXJyb3IpOworICAgIG1fdGhyb3dUeXBlRXJyb3JGdW5jdGlvbi5z
ZXQodm0sIHRoaXMsIHRocm93VHlwZUVycm9yRnVuY3Rpb24pOwogCiAgICAgSlNDZWxsKiBmdW5j
dGlvbkNvbnN0cnVjdG9yID0gRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBGdW5jdGlv
bkNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5
cGUuZ2V0KCkpLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKTsKICAgICBBcnJheUNvbnN0cnVj
dG9yKiBhcnJheUNvbnN0cnVjdG9yID0gQXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCB0aGlz
LCBBcnJheUNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Q
cm90b3R5cGUuZ2V0KCkpLCBtX2FycmF5UHJvdG90eXBlLmdldCgpLCBtX3NwZWNpZXNHZXR0ZXJT
ZXR0ZXIuZ2V0KCkpOwpAQCAtODAzLDcgKzgwMyw3IEBAIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0
aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT4ganNOYW1lLCBsb3dlck5hbWUgIyMgQ29uc3RydWN0
CiAgICAgbV9zcGVjaWFsUG9pbnRlcnNbU3BlY2lhbDo6T2JqZWN0Q29uc3RydWN0b3JdID0gb2Jq
ZWN0Q29uc3RydWN0b3I7CiAgICAgbV9zcGVjaWFsUG9pbnRlcnNbU3BlY2lhbDo6QXJyYXlDb25z
dHJ1Y3Rvcl0gPSBhcnJheUNvbnN0cnVjdG9yOwogCi0gICAgbV9saW5rVGltZUNvbnN0YW50c1tz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6RGVmaW5lUHJvcGVydHlGdW5j
dGlvbildID0gbV9kZWZpbmVQcm9wZXJ0eUZ1bmN0aW9uLmdldCgpOworICAgIG1fbGlua1RpbWVD
b25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OlRocm93VHlw
ZUVycm9yRnVuY3Rpb24pXSA9IG1fdGhyb3dUeXBlRXJyb3JGdW5jdGlvbi5nZXQoKTsKIAogICAg
IGlmIChVTkxJS0VMWShPcHRpb25zOjp1c2VEb2xsYXJWTSgpKSkgewogICAgICAgICBKU0RvbGxh
clZNUHJvdG90eXBlKiBkb2xsYXJWTVByb3RvdHlwZSA9IEpTRG9sbGFyVk1Qcm90b3R5cGU6OmNy
ZWF0ZSh2bSwgdGhpcywgSlNEb2xsYXJWTVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0
aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpOwpAQCAtMTA2Niw3ICsxMDY2LDcgQEAgdm9p
ZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9y
JiB2aXNpdG9yKQogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2V2YWxGdW5jdGlv
bik7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fY2FsbEZ1bmN0aW9uKTsKICAg
ICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9hcHBseUZ1bmN0aW9uKTsKLSAgICB2aXNp
dG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9kZWZpbmVQcm9wZXJ0eUZ1bmN0aW9uKTsKKyAgICB2
aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV90aHJvd1R5cGVFcnJvckZ1bmN0aW9uKTsKICAg
ICB0aGlzT2JqZWN0LT5tX2FycmF5UHJvdG9Ub1N0cmluZ0Z1bmN0aW9uLnZpc2l0KHZpc2l0b3Ip
OwogICAgIHRoaXNPYmplY3QtPm1fYXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uLnZpc2l0KHZpc2l0
b3IpOwogICAgIHRoaXNPYmplY3QtPm1faW5pdGlhbGl6ZVByb21pc2VGdW5jdGlvbi52aXNpdCh2
aXNpdG9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5oCmluZGV4IDBkZWFkMmJmODRiNTU4NzExMmRjODdjZjk0OTYwNDE3OWQzMmU5NDguLjk0ZDdl
MjMwNTM1ODc2OTFlYTI3YWIwZGZkM2Y2NjZlMTljNzZiZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtMjM0LDcgKzIzNCw3IEBAIGNs
YXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3Qgewog
ICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBtX2V2YWxGdW5jdGlvbjsKICAgICBXcml0ZUJh
cnJpZXI8SlNGdW5jdGlvbj4gbV9jYWxsRnVuY3Rpb247CiAgICAgV3JpdGVCYXJyaWVyPEpTRnVu
Y3Rpb24+IG1fYXBwbHlGdW5jdGlvbjsKLSAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9k
ZWZpbmVQcm9wZXJ0eUZ1bmN0aW9uOworICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBtX3Ro
cm93VHlwZUVycm9yRnVuY3Rpb247CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBK
U0Z1bmN0aW9uPiBtX2FycmF5UHJvdG9Ub1N0cmluZ0Z1bmN0aW9uOwogICAgIExhenlQcm9wZXJ0
eTxKU0dsb2JhbE9iamVjdCwgSlNGdW5jdGlvbj4gbV9hcnJheVByb3RvVmFsdWVzRnVuY3Rpb247
CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBKU0Z1bmN0aW9uPiBtX2luaXRpYWxp
emVQcm9taXNlRnVuY3Rpb247CkBAIC00NzksNyArNDc5LDcgQEAgY2xhc3MgSlNHbG9iYWxPYmpl
Y3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgSlNGdW5jdGlvbiog
ZXZhbEZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9ldmFsRnVuY3Rpb24uZ2V0KCk7IH0KICAg
ICBKU0Z1bmN0aW9uKiBjYWxsRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2NhbGxGdW5jdGlv
bi5nZXQoKTsgfQogICAgIEpTRnVuY3Rpb24qIGFwcGx5RnVuY3Rpb24oKSBjb25zdCB7IHJldHVy
biBtX2FwcGx5RnVuY3Rpb24uZ2V0KCk7IH0KLSAgICBKU0Z1bmN0aW9uKiBkZWZpbmVQcm9wZXJ0
eUZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9kZWZpbmVQcm9wZXJ0eUZ1bmN0aW9uLmdldCgp
OyB9CisgICAgSlNGdW5jdGlvbiogdGhyb3dUeXBlRXJyb3JGdW5jdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fdGhyb3dUeXBlRXJyb3JGdW5jdGlvbi5nZXQoKTsgfQogICAgIEpTRnVuY3Rpb24qIGFy
cmF5UHJvdG9Ub1N0cmluZ0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9hcnJheVByb3RvVG9T
dHJpbmdGdW5jdGlvbi5nZXQodGhpcyk7IH0KICAgICBKU0Z1bmN0aW9uKiBhcnJheVByb3RvVmFs
dWVzRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2FycmF5UHJvdG9WYWx1ZXNGdW5jdGlvbi5n
ZXQodGhpcyk7IH0KICAgICBKU0Z1bmN0aW9uKiBpbml0aWFsaXplUHJvbWlzZUZ1bmN0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9pbml0aWFsaXplUHJvbWlzZUZ1bmN0aW9uLmdldCh0aGlzKTsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0
b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3Iu
Y3BwCmluZGV4IDc4MWZjYmNlNTVjNzI1MjY4MjAyMTY3MmNlODlkYmE5YTUyMWY0Y2EuLjBmYTBj
ZTZkMGFmMWIzMDkxZTJmNzI4ZDEwNzlhMzY5Y2RmMWZkOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKQEAgLTEwNywxNCAr
MTA3LDYgQEAgdm9pZCBPYmplY3RDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBPYmoKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9O
X1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZXRP
d25Qcm9wZXJ0eU5hbWVzUHJpdmF0ZU5hbWUoKSwgb2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9w
ZXJ0eU5hbWVzLCBEb250RW51bSwgMSk7CiB9CiAKLUpTRnVuY3Rpb24qIE9iamVjdENvbnN0cnVj
dG9yOjphZGREZWZpbmVQcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QpCi17Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBKU0Z1bmN0aW9u
KiBkZWZpbmVQcm9wZXJ0eUZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxP
YmplY3QsIDMsIHZtLnByb3BlcnR5TmFtZXMtPmRlZmluZVByb3BlcnR5LnN0cmluZygpLCBvYmpl
Y3RDb25zdHJ1Y3RvckRlZmluZVByb3BlcnR5KTsKLSAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNp
dGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+ZGVmaW5lUHJvcGVydHksIGRlZmluZVByb3BlcnR5
RnVuY3Rpb24sIERvbnRFbnVtKTsKLSAgICByZXR1cm4gZGVmaW5lUHJvcGVydHlGdW5jdGlvbjsK
LX0KLQogLy8gRVMgMTkuMS4xLjEgT2JqZWN0KFt2YWx1ZV0pCiBzdGF0aWMgQUxXQVlTX0lOTElO
RSBKU09iamVjdCogY29uc3RydWN0T2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBuZXdU
YXJnZXQpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmpl
Y3RDb25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29u
c3RydWN0b3IuaAppbmRleCA4OWQ3NDRhMjc3NGNkNDc4ZTA4MjdmZTFmM2M0YmFhOWFlZjY0Y2Q5
Li44ZmYyYzU1YWVjMjlkOTUxY2NiNDQwN2ZhNWM2MjMxM2Y3ZjFkMGJkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmgKQEAgLTU0LDgg
KzU0LDYgQEAgY2xhc3MgT2JqZWN0Q29uc3RydWN0b3IgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlv
biB7CiAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBw
cm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsK
ICAgICB9CiAKLSAgICBKU0Z1bmN0aW9uKiBhZGREZWZpbmVQcm9wZXJ0eShFeGVjU3RhdGUqLCBK
U0dsb2JhbE9iamVjdCopOwotCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihW
TSYsIEpTR2xvYmFsT2JqZWN0KiwgT2JqZWN0UHJvdG90eXBlKik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlEZXNjcmlwdG9yLmgKaW5kZXggYWE2MWVl
YTQ5NWM0ZDFjOWQ1YTBmODI0NzlkMzI0NTM2NjU1YTM2NS4uZWU5NzFmNTUwMzY3NjczMjA5Nzk5
ZTgxOWU1ZDQzMDFkZDU4NDQ4NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUHJvcGVydHlEZXNjcmlwdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUHJvcGVydHlEZXNjcmlwdG9yLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgUHJv
cGVydHlEZXNjcmlwdG9yX2gKICNkZWZpbmUgUHJvcGVydHlEZXNjcmlwdG9yX2gKIAorI2luY2x1
ZGUgIkRlZmluZVByb3BlcnR5QXR0cmlidXRlcy5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIK
IAogbmFtZXNwYWNlIEpTQyB7CkBAIC05Myw2ICs5NCwzMiBAQCBjbGFzcyBQcm9wZXJ0eURlc2Ny
aXB0b3IgewogICAgIHVuc2lnbmVkIG1fc2VlbkF0dHJpYnV0ZXM7CiB9OwogCitpbmxpbmUgUHJv
cGVydHlEZXNjcmlwdG9yIHRvUHJvcGVydHlEZXNjcmlwdG9yKEpTVmFsdWUgdmFsdWUsIEpTVmFs
dWUgZ2V0dGVyLCBKU1ZhbHVlIHNldHRlciwgRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzIGF0dHJp
YnV0ZXMpCit7CisgICAgLy8gV2UgYXNzdW1lIHRoYXQgdmFsaWRhdGlvbiBpcyBhbHJlYWR5IGRv
bmUuCisgICAgUHJvcGVydHlEZXNjcmlwdG9yIGRlc2M7CisKKyAgICBpZiAoYXR0cmlidXRlcy5l
bnVtZXJhYmxlKCkgIT0gTWl4ZWRUcmlTdGF0ZSkKKyAgICAgICAgZGVzYy5zZXRFbnVtZXJhYmxl
KGF0dHJpYnV0ZXMuZW51bWVyYWJsZSgpKTsKKworICAgIGlmIChhdHRyaWJ1dGVzLmNvbmZpZ3Vy
YWJsZSgpICE9IE1peGVkVHJpU3RhdGUpCisgICAgICAgIGRlc2Muc2V0Q29uZmlndXJhYmxlKGF0
dHJpYnV0ZXMuY29uZmlndXJhYmxlKCkpOworCisgICAgaWYgKGF0dHJpYnV0ZXMuaGFzVmFsdWUo
KSkKKyAgICAgICAgZGVzYy5zZXRWYWx1ZSh2YWx1ZSk7CisKKyAgICBpZiAoYXR0cmlidXRlcy53
cml0YWJsZSgpICE9IE1peGVkVHJpU3RhdGUpCisgICAgICAgIGRlc2Muc2V0V3JpdGFibGUoYXR0
cmlidXRlcy53cml0YWJsZSgpKTsKKworICAgIGlmIChhdHRyaWJ1dGVzLmhhc0dldCgpKQorICAg
ICAgICBkZXNjLnNldEdldHRlcihnZXR0ZXIpOworCisgICAgaWYgKGF0dHJpYnV0ZXMuaGFzU2V0
KCkpCisgICAgICAgIGRlc2Muc2V0U2V0dGVyKHNldHRlcik7CisKKyAgICByZXR1cm4gZGVzYzsK
K30KKwogfQogCiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>289963</attachid>
            <date>2016-09-27 10:13:32 -0700</date>
            <delta_ts>2016-09-27 10:33:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162108-20160927101033.patch</filename>
            <type>text/plain</type>
            <size>90975</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA2NDExCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
MjE2ZGRiZWMwNWQ2YThjYWMzZDdkYWQwMmI1MmFiYTA4ZTQ1OWYyLi42ZGMxMWQ3ODNmMDYyZTZm
ZWQxMGM3OTZjZjFiOGExYzcxZDU3M2NmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNTUgQEAKKzIwMTYtMDktMjcgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0pTQ10gQWRkIGEgbmV3IGJ5dGUgY29kZSBvcF9kZWZpbmVfcHJv
cGVydHkgaW5zdGVhZCBvZiBjYWxsaW5nIGRlZmluZVByb3BlcnR5CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjIxMDgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUbyBjb25zdHJ1Y3QgRVM2IGNsYXNzLCB3
ZSBlbWl0dGVkIGJ5dGVjb2RlIHRoYXQgcGVyZm9ybXMgdGhlIGZvbGxvd2luZyBvcGVyYXRpb25z
LgorCisgICAgICAgICAgICAxLiBjb25zdHJ1Y3QgYSBuZXcgb2JqZWN0CisgICAgICAgICAgICAy
LiBwdXQgImNvbmZpZ3VyYWJsZSIsICJlbnVtZXJhYmxlIiBldGMuIGZpZWxkcworICAgICAgICAg
ICAgMy4gY2FsbCAiZGVmaW5lUHJvcGVydHkiIGZ1bmN0aW9uCisKKyAgICAgICAgSG93ZXZlciwg
dGhpcyBoYXMgYSBwcm9ibGVtcy4gRXZlcnkgdGltZSB3ZSBkZWZpbmUgYSBjbGFzcyBtZXRob2Qs
IHdlIG5lZWQgdG8gY3JlYXRlCisgICAgICAgIGEgbmV3IG9iamVjdCB0byByZXByZXNlbnQgcHJv
cGVydHkgZGVzY3JpcHRvci4gVGhpcyBjYW4gYmUgcmVtb3ZlZCBpZiB3ZSBjYW4gaW50cm9kdWNl
CisgICAgICAgIGEgc3BlY2lhbCBieXRlY29kZSBvciBzcGVjaWFsIGZ1bmN0aW9uLgorCisgICAg
ICAgIFRoaXMgcGF0Y2ggaW50cm9kdWNlcyBuZXcgYnl0ZWNvZGVzLCBvcF9kZWZpbmVfZGF0YV9w
cm9wZXJ0eSBhbmQgb3BfZGVmaW5lX2FjY2Vzc29yX3Byb3BlcnR5LgorICAgICAgICBJbnN0ZWFk
IG9mIHRha2luZyBhbiBvYmplY3QsIHRoZXkgdGFrZXMgc2V2ZXJhbCByZWdpc3RlcnMgdG8gYXZv
aWQgb2JqZWN0IGFsbG9jYXRpb25zLgorICAgICAgICBXZSdyZSBwbGFubmluZyB0byB1c2UgdGhp
cyBieXRlY29kZSB0byBpbXBsZW1lbnQgT2JqZWN0LmRlZmluZVByb3BlcnR5IGluIGJ1aWx0aW4g
SlMgbmV4dC4KKyAgICAgICAgVGhpcyBhbGxvd3MgdXMgdG8gbGV2ZXJhZ2Ugb2JqZWN0IGFsbG9j
YXRpb24gc2lua2luZy4gQW5kIGl0IGFsc28gZ2l2ZXMgdXMgYSBjaGFuY2UgdG8gdXNlCisgICAg
ICAgIGZhc3RlciA6OmdldCBhbmQgOjpoYXNQcm9wZXJ0eSBpbiBKUy4KKworICAgICAgICBPcmln
aW5hbGx5LCBJIGF0dGVtcHRlZCB0byBjcmVhdGUgb25lIGJ5dGVjb2RlLCBvcF9kZWZpbmVfcHJv
cGVydHkuIEhvd2V2ZXIsIGl0IHRha2VzIHRvbyBtdWNoCisgICAgICAgIGNoaWxkcmVuIGluIERG
RyBhbmQgdXNlcyBzbyBtdWNoIHJlZ2lzdGVycyBpbiBERkcuIFRoaXMgbGVhZHMgdHJpY2t5IHBy
b2dyYW0gaW4gMzJiaXQgcGxhdGZvcm1zLgorICAgICAgICBGdXJ0aGVybW9yZSwgaXQgZG9lcyBu
b3QgZml0IHRvIHRoZSBudW1iZXIgb2YgeDY0IGFyZ3VtZW50IHJlZ2lzdGVycy4gU28gaW5zdGVh
ZCwgd2UgaW50cm9kdWNlCisgICAgICAgIHR3byBieXRlY29kZXMuCisKKyAgICAgICAgQW5kIGZv
ciBvcF9kZWZpbmVfYWNjZXNzb3JfcHJvcGVydHksIHdlIHBlcmZvcm0gQ2VsbFVzZSBlZGdlIGZp
bHRlciB0byBnZXR0ZXIgYW5kIHNldHRlciBjaGlsZHJlbi4KKyAgICAgICAgVGhpcyBlZGdlIGZp
bHRlciBtYWtlcyB1cyBwb3NzaWJsZSB0byB1c2UgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYW5kIHJl
ZHVjZSB0aGUgbnVtYmVyIG9mIHVzZWQgcmVnaXN0ZXJzCisgICAgICAgIGluIGNvbXBhcmlzb24g
d2l0aCBKU1ZhbHVlT3BlcmFuZC4gVG8gbWFrZSBjaGlsZHJlbiBDZWxscyBldmVuIGlmIHdlIGRv
IG5vdCBzcGVjaWZ5IHNvbWUgYWNjZXNzb3JzIChmb3IKKyAgICAgICAgZXhhbXBsZSwgeyBnZXQ6
IGZ1bmMsIHNldDogbnVsbCB9IGNhc2UpLCB3ZSBmaWxsIHJlZ2lzdGVycyB3aXRoIHNwZWNpYWwg
dGhyb3dUeXBlRXJyb3JGdW5jdGlvbi4KKyAgICAgICAgVGhlIGF0dHJpYnV0ZXMgYml0c2V0IGtl
ZXAgaW5mb3JtYXRpb24gbGlrZSAiVGhpcyBwcm9wZXJ0eSBkZXNjcmlwdG9yIG9ubHkgaGFzIGdl
dHRlciBzbG90Ii4KKworICAgICAgICBJbiB0aGVzZSB0d28gYnl0ZWNvZGVzLCB3ZSB0YWtlIGF0
dHJpYnV0ZXMgKGNvbmZpZ3VyYWJsZSwgZW51bWVyYWJsZSwgd3JpdGFibGUsIGhhc0dldHRlciBl
dGMuKSBhcworICAgICAgICByZWdpc3RlciBpbnN0ZWFkIG9mIGVtYmVkZGluZyBjb25zdGFudCBp
bnQgdmFsdWUgYmVjYXVzZSB3ZSB3aWxsIHVzZSB0aGVzZSBieXRlY29kZXMgdG8gaW1wbGVtZW50
CisgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSBuZXh0LiBJbiBPYmplY3QuZGVmaW5lUHJv
cGVydHkgY2FzZSwgYW4gYXR0cmlidXRlcyBhcmUgbm90IHN0YXRpY2FsbHkgZGVmaW5lZAorICAg
ICAgICBhdCBieXRlY29kZSBjb21waWxpbmcgdGltZS4KKworICAgICAgICBSdW4gRVM2U2FtcGxl
QmVuY2gvQWlyIDIwIHRpbWVzLiBUaGUgcmVzdWx0IHNob3dzIH4yJSBwZXJmb3JtYW5jZSBpbXBy
b3ZlbWVudC4KKworICAgICAgICBCYXNlbGluZToKKyAgICAgICAgICAgIGZpcnN0SXRlcmF0aW9u
OiAgICAgODQuMDUgbXMgKy0gNC4zNyBtcworICAgICAgICAgICAgYXZlcmFnZVdvcnN0Q2FzZTog
ICA0MC41NCBtcyArLSAyLjgxIG1zCisgICAgICAgICAgICBzdGVhZHlTdGF0ZTogICAgICAgIDMz
MTcuNDkgbXMgKy0gNDguMjUgbXMKKyAgICAgICAgICAgIHN1bW1hcnk6ICAgICAgICAgICAgMjIz
LjUxIG1zICstIDUuMDcgbXMKKworICAgICAgICBQYXRjaGVkOgorICAgICAgICAgICAgZmlyc3RJ
dGVyYXRpb246ICAgICA4NC40NiBtcyArLSA0LjIyIG1zCisgICAgICAgICAgICBhdmVyYWdlV29y
c3RDYXNlOiAgIDQxLjQ4IG1zICstIDIuMzMgbXMKKyAgICAgICAgICAgIHN0ZWFkeVN0YXRlOiAg
ICAgICAgMzI1My40OCBtcyArLSAyOS4zMSBtcworICAgICAgICAgICAgc3VtbWFyeTogICAgICAg
ICAgICAyMjQuNDAgbXMgKy0gNC43MiBtcworCisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3Qu
anNvbjoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVVzZURlZi5oOgorICAgICAgICAoSlND
Ojpjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZURl
ZnNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoK
KyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUpOgorICAgICAgICAqIGJ5dGVj
b2RlL1NwZWNpYWxQb2ludGVyLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRNb3ZlTGlu
a1RpbWVDb25zdGFudCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2Fs
bERlZmluZVByb3BlcnR5KToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuaDoKKyAgICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAg
KEpTQzo6UHJvcGVydHlMaXN0Tm9kZTo6ZW1pdFB1dENvbnN0YW50UHJvcGVydHkpOgorICAgICAg
ICAoSlNDOjpCaXR3aXNlTm90Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Q2xh
c3NFeHByTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6T2JqZWN0UGF0dGVybk5v
ZGU6OmJpbmRWYWx1ZSk6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxp
bmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0
YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToK
KyAgICAgICAgKiBkZmcvREZHQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpj
YXBhYmlsaXR5TGV2ZWwpOgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyaXplLmg6CisgICAgICAg
IChKU0M6OkRGRzo6Y2xvYmJlcml6ZSk6CisgICAgICAgICogZGZnL0RGR0RvZXNHQy5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6ZG9lc0dDKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAg
KiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6Cisg
ICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlv
blByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdTYWZlVG9FeGVjdXRlLmg6
CisgICAgICAgIChKU0M6OkRGRzo6c2FmZVRvRXhlY3V0ZSk6CisgICAgICAgICogZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZURlZmluZURhdGFQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVEZWZpbmVBY2Nlc3NvclByb3BlcnR5KToKKyAgICAgICAgKiBkZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FsbE9w
ZXJhdGlvbik6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcv
REZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExDYXBhYmlsaXRpZXMuY3BwOgorICAgICAg
ICAoSlNDOjpGVEw6OmNhbkNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMu
Y3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTm9kZSk6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVEZWZpbmVEYXRh
UHJvcGVydHkpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxl
RGVmaW5lQWNjZXNzb3JQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvQjM6OmNvbXBpbGVQdXRCeVZhbFdpdGhUaGlzKTogRGVsZXRlZC4KKyAgICAgICAgKiBqaXQv
Q0NhbGxIZWxwZXJzLmNwcDoKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpzZXR1cEZvdXJT
dHViQXJnc0dQUik6IERlbGV0ZWQuCisgICAgICAgICogaml0L0NDYWxsSGVscGVycy5oOgorICAg
ICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OnNldHVwRm91clN0dWJBcmdzR1BSKToKKyAgICAgICAg
KEpTQzo6Q0NhbGxIZWxwZXJzOjpzZXR1cEZpdmVTdHViQXJnc0dQUik6CisgICAgICAgIChKU0M6
OkNDYWxsSGVscGVyczo6c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKToKKyAgICAgICAgKEpT
Qzo6Q0NhbGxIZWxwZXJzOjpzZXR1cFN0dWJBcmdzR1BSKToKKyAgICAgICAgKEpTQzo6Q0NhbGxI
ZWxwZXJzOjpwcmVwYXJlRm9yVGFpbENhbGxTbG93KTogRGVsZXRlZC4KKyAgICAgICAgKiBqaXQv
SklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAg
ICAgICAgKiBqaXQvSklULmg6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuaDoKKyAgICAg
ICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRf
b3BfZGVmaW5lX2RhdGFfcHJvcGVydHkpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZGVm
aW5lX2FjY2Vzc29yX3Byb3BlcnR5KToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJl
dGVyLmFzbToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6CisgICAgICAg
IChKU0M6OlNMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRo
cy5oOgorICAgICAgICAqIHJ1bnRpbWUvRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzLmg6IEFkZGVk
LgorICAgICAgICAoSlNDOjpEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXM6OkRlZmluZVByb3BlcnR5
QXR0cmlidXRlcyk6CisgICAgICAgIChKU0M6OkRlZmluZVByb3BlcnR5QXR0cmlidXRlczo6cmF3
UmVwcmVzZW50YXRpb24pOgorICAgICAgICAoSlNDOjpEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXM6
Omhhc1ZhbHVlKToKKyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzOjpzZXRW
YWx1ZSk6CisgICAgICAgIChKU0M6OkRlZmluZVByb3BlcnR5QXR0cmlidXRlczo6aGFzR2V0KToK
KyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzOjpzZXRHZXQpOgorICAgICAg
ICAoSlNDOjpEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXM6Omhhc1NldCk6CisgICAgICAgIChKU0M6
OkRlZmluZVByb3BlcnR5QXR0cmlidXRlczo6c2V0U2V0KToKKyAgICAgICAgKEpTQzo6RGVmaW5l
UHJvcGVydHlBdHRyaWJ1dGVzOjp3cml0YWJsZSk6CisgICAgICAgIChKU0M6OkRlZmluZVByb3Bl
cnR5QXR0cmlidXRlczo6Y29uZmlndXJhYmxlKToKKyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVy
dHlBdHRyaWJ1dGVzOjplbnVtZXJhYmxlKToKKyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVydHlB
dHRyaWJ1dGVzOjpzZXRXcml0YWJsZSk6CisgICAgICAgIChKU0M6OkRlZmluZVByb3BlcnR5QXR0
cmlidXRlczo6c2V0Q29uZmlndXJhYmxlKToKKyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVydHlB
dHRyaWJ1dGVzOjpzZXRFbnVtZXJhYmxlKToKKyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVydHlB
dHRyaWJ1dGVzOjpmaWxsV2l0aFRyaVN0YXRlKToKKyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVy
dHlBdHRyaWJ1dGVzOjpleHRyYWN0VHJpU3RhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9i
YWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAg
ICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50
aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp0aHJv
d1R5cGVFcnJvckZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmRlZmlu
ZVByb3BlcnR5RnVuY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0Q29u
c3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpPYmplY3RDb25zdHJ1Y3Rvcjo6YWRkRGVmaW5l
UHJvcGVydHkpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3Iu
aDoKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5oOgorICAgICAgICAoSlND
Ojp0b1Byb3BlcnR5RGVzY3JpcHRvcik6CisKIDIwMTYtMDktMjYgIFNhbSBXZWluaWcgIDxzYW1A
d2Via2l0Lm9yZz4KIAogICAgICAgICBNYWtlIERGR1Nsb3dQYXRoR2VuZXJhdG9yIGEgYml0IG1v
cmUgdmFyaWFkaWMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZjczNGY5MTYyM2Zh
NDNkZDU0YTZhMDg2ODkyYTlhYWZiNTE4MTUzNS4uN2M3YzQ2YmRmZjExYmY1NGRkYTg5NzU1NWUz
YmQwMzZhZjE5Yjc5OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIxNjgsNiAr
MjE2OCw3IEBACiAJCUZFRDk0RjJGMTcxRTNFMjMwMEJFNzdBNCAvKiBXYXRjaGRvZy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVEOTRGMkMxNzFFM0Uy
MzAwQkU3N0E0IC8qIFdhdGNoZG9nLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJRkVGMDQwNTExQUFFNjYyRDAwQkQyOEIwIC8qIENvbXBhcmVBbmRT
d2FwVGVzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGRUYwNDA1MDFBQUU2NjJEMDBCRDI4QjAgLyogQ29tcGFyZUFuZFN3YXBUZXN0LmNwcCAqLzsg
fTsKIAkJRkVGRDZGQzYxRDVFNzk5MjAwOEYyRjBCIC8qIEpTU3RyaW5nSW5saW5lcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVGRDZGQzUxRDVFNzk3
MDAwOEYyRjBCIC8qIEpTU3RyaW5nSW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ3M0RBNEE0NzY0QzQ1RkU4NzFCMDQ4NSAvKiBEZWZp
bmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDE2OTk0OEVERTY4RDQwNTRCMDFFRjc5NyAvKiBEZWZpbmVQcm9wZXJ0eUF0
dHJpYnV0ZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWENvbnRhaW5l
ckl0ZW1Qcm94eSBzZWN0aW9uICovCkBAIC00NDk4LDYgKzQ0OTksNyBAQAogCQlGRUYwNDA1MDFB
QUU2NjJEMDBCRDI4QjAgLyogQ29tcGFyZUFuZFN3YXBUZXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENvbXBhcmVBbmRTd2FwVGVzdC5jcHA7IHBhdGggPSBBUEkv
dGVzdHMvQ29tcGFyZUFuZFN3YXBUZXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRkVGMDQwNTIxQUFFQzRFRDAwQkQyOEIwIC8qIENvbXBhcmVBbmRTd2FwVGVzdC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBDb21wYXJlQW5kU3dhcFRlc3QuaDsgcGF0aCA9
IEFQSS90ZXN0cy9Db21wYXJlQW5kU3dhcFRlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRkVGRDZGQzUxRDVFNzk3MDAwOEYyRjBCIC8qIEpTU3RyaW5nSW5saW5lcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1N0cmluZ0lubGluZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTY5OTQ4RURFNjhENDA1NEIwMUVGNzk3IC8qIERlZmluZVBy
b3BlcnR5QXR0cmlidXRlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBEZWZp
bmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaDsgcGF0aCA9IERlZmluZVByb3BlcnR5QXR0cmlidXRlcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogLyogRW5kIFBCWEZpbGVSZWZlcmVuY2Ugc2Vj
dGlvbiAqLwogCiAvKiBCZWdpbiBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9uICovCkBA
IC02MjQxLDYgKzYyNDMsNyBAQAogCQkJCTcwOUZCODY2MUFFMzM1QzYwMDM5RDA2OSAvKiBXZWFr
U2V0UHJvdG90eXBlLmggKi8sCiAJCQkJQTdEQ0I3NzkxMkUzRDkwNTAwOTExOTQwIC8qIFdyaXRl
QmFycmllci5oICovLAogCQkJCUMyQjZENzUyMThBMzM3OTMwMDRBOTMwMSAvKiBXcml0ZUJhcnJp
ZXJJbmxpbmVzLmggKi8sCisJCQkJMTY5OTQ4RURFNjhENDA1NEIwMUVGNzk3IC8qIERlZmluZVBy
b3BlcnR5QXR0cmlidXRlcy5oICovLAogCQkJKTsKIAkJCXBhdGggPSBydW50aW1lOwogCQkJc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTgzNzYsNiArODM3OSw3IEBACiAJCQkJODY3MDRCNDMx
MkRCOEE4MTAwQTlGRTdCIC8qIFlhcnJTeW50YXhDaGVja2VyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBNzlEM0VEOUM1MDY0REQwQTg0NjZBM0EgLyogTW9kdWxlU2NvcGVEYXRhLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlEOTcyMjc1MkRDNTQ0NTlCOTEyNUI1MzkgLyogSlNNb2R1bGVMb2FkZXIuaCBp
biBIZWFkZXJzICovLAorCQkJCTQ3M0RBNEE0NzY0QzQ1RkU4NzFCMDQ4NSAvKiBEZWZpbmVQcm9w
ZXJ0eUF0dHJpYnV0ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBs
b3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCmluZGV4IGRjNTk5ODA1NjkxY2RhNTdiNWQz
NjExNTk5ZGQ1ZjI4ZDcxMDJkYmUuLjU3NmRlNDAwNjA0ZDEwMTQ3NTFjYzYzYmVhY2VjNzdhNTVm
ZDRmZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUxpc3QuanNvbgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVM
aXN0Lmpzb24KQEAgLTgxLDYgKzgxLDggQEAKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3B1
dF9nZXR0ZXJfc2V0dGVyX2J5X2lkIiwgImxlbmd0aCIgOiA2IH0sCiAgICAgICAgICAgICB7ICJu
YW1lIiA6ICJvcF9wdXRfZ2V0dGVyX2J5X3ZhbCIsICJsZW5ndGgiIDogNSB9LAogICAgICAgICAg
ICAgeyAibmFtZSIgOiAib3BfcHV0X3NldHRlcl9ieV92YWwiLCAibGVuZ3RoIiA6IDUgfSwKKyAg
ICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2RlZmluZV9kYXRhX3Byb3BlcnR5IiwgImxlbmd0aCIg
OiA1IH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9kZWZpbmVfYWNjZXNzb3JfcHJvcGVy
dHkiLCAibGVuZ3RoIiA6IDYgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2ptcCIsICJs
ZW5ndGgiIDogMiB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfanRydWUiLCAibGVuZ3Ro
IiA6IDMgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2pmYWxzZSIsICJsZW5ndGgiIDog
MyB9LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
VXNlRGVmLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYu
aAppbmRleCBkYWJjZTRlZGYwMzI2NDhjMDg5Njg5OTgyYTg4MTdlYzYwMGE4MTdlLi40NWE5ZTA5
Y2JkODJlZjY4OWQzYjM0ZjhlZTUwZTExZWI5NWEzNzYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaApAQCAtMTQ0LDYgKzE0NCwyMyBAQCB2
b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqIGNvZGVCbG9jaywgT3Bjb2Rl
SUQgb3Bjb2RlSUQsIEluc3RydWN0aQogICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1
Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQpOwogICAgICAgICByZXR1
cm47CiAgICAgfQorICAgIGNhc2Ugb3BfZGVmaW5lX2RhdGFfcHJvcGVydHk6IHsKKyAgICAgICAg
QVNTRVJUKG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdID4gNCk7CisgICAgICAgIGZ1bmN0b3IoY29k
ZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7
CisgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3Ry
dWN0aW9uWzJdLnUub3BlcmFuZCk7CisgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVj
dGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzNdLnUub3BlcmFuZCk7CisgICAgICAgIGZ1bmN0
b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzRdLnUub3Bl
cmFuZCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgY2FzZSBvcF9kZWZpbmVfYWNjZXNz
b3JfcHJvcGVydHk6IHsKKyAgICAgICAgQVNTRVJUKG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdID4g
NSk7CisgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGlu
c3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CisgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0
cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzJdLnUub3BlcmFuZCk7CisgICAgICAgIGZ1
bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzNdLnUu
b3BlcmFuZCk7CisgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2Rl
SUQsIGluc3RydWN0aW9uWzRdLnUub3BlcmFuZCk7CisgICAgICAgIGZ1bmN0b3IoY29kZUJsb2Nr
LCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzVdLnUub3BlcmFuZCk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CiAgICAgY2FzZSBvcF9nZXRfcHJvcGVydHlfZW51bWVyYXRvcjoK
ICAgICBjYXNlIG9wX2dldF9lbnVtZXJhYmxlX2xlbmd0aDoKICAgICBjYXNlIG9wX25ld19mdW5j
X2V4cDoKQEAgLTMzMiw2ICszNDksOCBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZz
ZXQoQmxvY2sqIGNvZGVCbG9jaywgT3Bjb2RlSUQgb3Bjb2RlSUQsIEluc3RydWN0aQogICAgIGNh
c2Ugb3BfcHV0X2J5X3ZhbDoKICAgICBjYXNlIG9wX3B1dF9ieV92YWxfZGlyZWN0OgogICAgIGNh
c2Ugb3BfcHV0X2J5X2luZGV4OgorICAgIGNhc2Ugb3BfZGVmaW5lX2RhdGFfcHJvcGVydHk6Cisg
ICAgY2FzZSBvcF9kZWZpbmVfYWNjZXNzb3JfcHJvcGVydHk6CiAgICAgY2FzZSBvcF9wcm9maWxl
X3R5cGU6CiAgICAgY2FzZSBvcF9wcm9maWxlX2NvbnRyb2xfZmxvdzoKICAgICBjYXNlIG9wX3B1
dF90b19hcmd1bWVudHM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suY3BwCmluZGV4IDdjOWI1YzJiYTZkNmQ0MjdkMDc5N2IyYWY0ODE4ZGI5M2Y4OTkxNjkuLjdm
Nzc0YTkxNmJiMTQyMDgxMTQ4NGQwNWY1NGQyYTI5NGFmNWM2NDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC0xMjMzLDYgKzEyMzMsMjUgQEAg
dm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZSgKICAgICAgICAgICAgIG91dC5wcmludGYoIiVz
LCAlcywgJWQsICVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSku
ZGF0YSgpLCBuMCwgcmVnaXN0ZXJOYW1lKHIyKS5kYXRhKCkpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9kZWZpbmVfZGF0YV9wcm9wZXJ0eTogeworICAg
ICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBpbnQgcjEg
PSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIGludCByMiA9ICgrK2l0KS0+dS5vcGVy
YW5kOworICAgICAgICAgICAgaW50IHIzID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAg
ICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJkZWZpbmVfZGF0
YV9wcm9wZXJ0eSIpOworICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCAlcywgJXMiLCBy
ZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIHJlZ2lzdGVy
TmFtZShyMikuZGF0YSgpLCByZWdpc3Rlck5hbWUocjMpLmRhdGEoKSk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIG9wX2RlZmluZV9hY2Nlc3Nvcl9wcm9wZXJ0
eTogeworICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAg
ICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIGludCByMiA9ICgrK2l0
KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgaW50IHIzID0gKCsraXQpLT51Lm9wZXJhbmQ7Cisg
ICAgICAgICAgICBpbnQgcjQgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIHByaW50
TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgImRlZmluZV9hY2Nlc3Nvcl9w
cm9wZXJ0eSIpOworICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCAlcywgJXMsICVzIiwg
cmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCByZWdpc3Rl
ck5hbWUocjIpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIzKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShy
NCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGNhc2Ug
b3BfZGVsX2J5X2lkOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsK
ICAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWNpYWxQb2ludGVyLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY2lhbFBvaW50ZXIuaAppbmRleCA2NGZiMjNmY2YyN2Q0
MTI1MDQ4MDIxOWU4YzhjNDFiN2M0MWE3ZWY1Li45MGNiM2E5OTI2ZDYyZTYwNGIxOGMzYjNkYmQ1
NTIyYjQ1MmFlZGZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
U3BlY2lhbFBvaW50ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3Bl
Y2lhbFBvaW50ZXIuaApAQCAtNDIsNyArNDIsNyBAQCBlbnVtIFBvaW50ZXIgewogfSAvLyBuYW1l
c3BhY2UgU3BlY2lhbAogCiBlbnVtIGNsYXNzIExpbmtUaW1lQ29uc3RhbnQgewotICAgIERlZmlu
ZVByb3BlcnR5RnVuY3Rpb24sCisgICAgVGhyb3dUeXBlRXJyb3JGdW5jdGlvbiwKIH07CiBjb25z
dCB1bnNpZ25lZCBMaW5rVGltZUNvbnN0YW50Q291bnQgPSAxOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmlu
ZGV4IGNjNzE3MjNlZjNjMGY1ZDRiYjNjY2RlY2I4YmE5NzYyNzIzZDMyZmUuLmIwYzNjY2Q1YWNi
MjU1NjE4OGQ5MjgyMjI1YTU3NGIxZjA0NzJjMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0zNSw2
ICszNSw3IEBACiAjaW5jbHVkZSAiQnVpbHRpbkV4ZWN1dGFibGVzLmgiCiAjaW5jbHVkZSAiQnl0
ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uaCIKICNpbmNsdWRlICJCeXRlY29kZUxpdmVuZXNzQW5h
bHlzaXMuaCIKKyNpbmNsdWRlICJEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaCIKICNpbmNsdWRl
ICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0dl
bmVyYXRvckZ1bmN0aW9uLmgiCkBAIC0xNTQzLDYgKzE1NDQsOSBAQCBSZWdpc3RlcklEKiBCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdE1vdmVMaW5rVGltZUNvbnN0YW50KFJlZ2lzdGVySUQqIGRzdCwg
TGlua1RpbQogICAgICAgICBtX2xpbmtUaW1lQ29uc3RhbnRSZWdpc3RlcnNbY29uc3RhbnRJbmRl
eF0gPSAmbV9jb25zdGFudFBvb2xSZWdpc3RlcnNbaW5kZXhdOwogICAgIH0KIAorICAgIGlmICgh
ZHN0KQorICAgICAgICByZXR1cm4gbV9saW5rVGltZUNvbnN0YW50UmVnaXN0ZXJzW2NvbnN0YW50
SW5kZXhdOworCiAgICAgZW1pdE9wY29kZShvcF9tb3YpOwogICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZChkc3QtPmluZGV4KCkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtX2xpbmtUaW1l
Q29uc3RhbnRSZWdpc3RlcnNbY29uc3RhbnRJbmRleF0tPmluZGV4KCkpOwpAQCAtMzI2OCwzOCAr
MzI3Miw1OSBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TG9nU2hhZG93Q2hpY2tlblRh
aWxJZk5lY2Vzc2FyeSgpCiB9CiAKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxsRGVm
aW5lUHJvcGVydHkoUmVnaXN0ZXJJRCogbmV3T2JqLCBSZWdpc3RlcklEKiBwcm9wZXJ0eU5hbWVS
ZWdpc3RlciwKLSAgICBSZWdpc3RlcklEKiB2YWx1ZVJlZ2lzdGVyLCBSZWdpc3RlcklEKiBnZXR0
ZXJSZWdpc3RlciwgUmVnaXN0ZXJJRCogc2V0dGVyUmVnaXN0ZXIsIHVuc2lnbmVkIG9wdGlvbnMs
IGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBwb3NpdGlvbikKKyAgICBSZWdpc3RlcklEKiB2YWx1ZVJl
Z2lzdGVyLCBSZWdpc3RlcklEKiBnZXR0ZXJSZWdpc3RlciwgUmVnaXN0ZXJJRCogc2V0dGVyUmVn
aXN0ZXIsIHVuc2lnbmVkIG9wdGlvbnMpCiB7Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGRlc2Ny
aXB0b3JSZWdpc3RlciA9IGVtaXROZXdPYmplY3QobmV3VGVtcG9yYXJ5KCkpOwotCi0gICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IHRydWVSZWdpc3RlciA9IGVtaXRMb2FkKG5ld1RlbXBvcmFyeSgpLCB0
cnVlKTsKKyAgICBEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMgYXR0cmlidXRlczsKICAgICBpZiAo
b3B0aW9ucyAmIFByb3BlcnR5Q29uZmlndXJhYmxlKQotICAgICAgICBlbWl0RGlyZWN0UHV0QnlJ
ZChkZXNjcmlwdG9yUmVnaXN0ZXIuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS5jb25maWd1cmFibGUs
IHRydWVSZWdpc3Rlci5nZXQoKSwgUHJvcGVydHlOb2RlOjpVbmtub3duKTsKKyAgICAgICAgYXR0
cmlidXRlcy5zZXRDb25maWd1cmFibGUodHJ1ZSk7CisKICAgICBpZiAob3B0aW9ucyAmIFByb3Bl
cnR5V3JpdGFibGUpCi0gICAgICAgIGVtaXREaXJlY3RQdXRCeUlkKGRlc2NyaXB0b3JSZWdpc3Rl
ci5nZXQoKSwgcHJvcGVydHlOYW1lcygpLndyaXRhYmxlLCB0cnVlUmVnaXN0ZXIuZ2V0KCksIFBy
b3BlcnR5Tm9kZTo6VW5rbm93bik7Ci0gICAgZWxzZSBpZiAodmFsdWVSZWdpc3RlcikgewotICAg
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZmFsc2VSZWdpc3RlciA9IGVtaXRMb2FkKG5ld1RlbXBv
cmFyeSgpLCBmYWxzZSk7Ci0gICAgICAgIGVtaXREaXJlY3RQdXRCeUlkKGRlc2NyaXB0b3JSZWdp
c3Rlci5nZXQoKSwgcHJvcGVydHlOYW1lcygpLndyaXRhYmxlLCBmYWxzZVJlZ2lzdGVyLmdldCgp
LCBQcm9wZXJ0eU5vZGU6OlVua25vd24pOwotICAgIH0KKyAgICAgICAgYXR0cmlidXRlcy5zZXRX
cml0YWJsZSh0cnVlKTsKKyAgICBlbHNlIGlmICh2YWx1ZVJlZ2lzdGVyKQorICAgICAgICBhdHRy
aWJ1dGVzLnNldFdyaXRhYmxlKGZhbHNlKTsKKwogICAgIGlmIChvcHRpb25zICYgUHJvcGVydHlF
bnVtZXJhYmxlKQotICAgICAgICBlbWl0RGlyZWN0UHV0QnlJZChkZXNjcmlwdG9yUmVnaXN0ZXIu
Z2V0KCksIHByb3BlcnR5TmFtZXMoKS5lbnVtZXJhYmxlLCB0cnVlUmVnaXN0ZXIuZ2V0KCksIFBy
b3BlcnR5Tm9kZTo6VW5rbm93bik7CisgICAgICAgIGF0dHJpYnV0ZXMuc2V0RW51bWVyYWJsZSh0
cnVlKTsKIAogICAgIGlmICh2YWx1ZVJlZ2lzdGVyKQotICAgICAgICBlbWl0RGlyZWN0UHV0QnlJ
ZChkZXNjcmlwdG9yUmVnaXN0ZXIuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS52YWx1ZSwgdmFsdWVS
ZWdpc3RlciwgUHJvcGVydHlOb2RlOjpVbmtub3duKTsKKyAgICAgICAgYXR0cmlidXRlcy5zZXRW
YWx1ZSgpOwogICAgIGlmIChnZXR0ZXJSZWdpc3RlcikKLSAgICAgICAgZW1pdERpcmVjdFB1dEJ5
SWQoZGVzY3JpcHRvclJlZ2lzdGVyLmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkuZ2V0LCBnZXR0ZXJS
ZWdpc3RlciwgUHJvcGVydHlOb2RlOjpVbmtub3duKTsKKyAgICAgICAgYXR0cmlidXRlcy5zZXRH
ZXQoKTsKICAgICBpZiAoc2V0dGVyUmVnaXN0ZXIpCi0gICAgICAgIGVtaXREaXJlY3RQdXRCeUlk
KGRlc2NyaXB0b3JSZWdpc3Rlci5nZXQoKSwgcHJvcGVydHlOYW1lcygpLnNldCwgc2V0dGVyUmVn
aXN0ZXIsIFByb3BlcnR5Tm9kZTo6VW5rbm93bik7CisgICAgICAgIGF0dHJpYnV0ZXMuc2V0U2V0
KCk7CiAKLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZGVmaW5lUHJvcGVydHlSZWdpc3RlciA9IGVt
aXRNb3ZlTGlua1RpbWVDb25zdGFudChuZXdUZW1wb3JhcnkoKSwgTGlua1RpbWVDb25zdGFudDo6
RGVmaW5lUHJvcGVydHlGdW5jdGlvbik7CisgICAgQVNTRVJUKCF2YWx1ZVJlZ2lzdGVyIHx8ICgh
Z2V0dGVyUmVnaXN0ZXIgJiYgIXNldHRlclJlZ2lzdGVyKSk7CiAKLSAgICBDYWxsQXJndW1lbnRz
IGNhbGxBcmd1bWVudHMoKnRoaXMsIG51bGxwdHIsIDMpOwotICAgIGVtaXRMb2FkKGNhbGxBcmd1
bWVudHMudGhpc1JlZ2lzdGVyKCksIGpzVW5kZWZpbmVkKCkpOwotICAgIGVtaXRNb3ZlKGNhbGxB
cmd1bWVudHMuYXJndW1lbnRSZWdpc3RlcigwKSwgbmV3T2JqKTsKLSAgICBlbWl0TW92ZShjYWxs
QXJndW1lbnRzLmFyZ3VtZW50UmVnaXN0ZXIoMSksIHByb3BlcnR5TmFtZVJlZ2lzdGVyKTsKLSAg
ICBlbWl0TW92ZShjYWxsQXJndW1lbnRzLmFyZ3VtZW50UmVnaXN0ZXIoMiksIGRlc2NyaXB0b3JS
ZWdpc3Rlci5nZXQoKSk7CisgICAgaWYgKGF0dHJpYnV0ZXMuaGFzR2V0KCkgfHwgYXR0cmlidXRl
cy5oYXNTZXQoKSkgeworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGhyb3dUeXBlRXJyb3JG
dW5jdGlvbjsKKyAgICAgICAgaWYgKCFhdHRyaWJ1dGVzLmhhc0dldCgpIHx8ICFhdHRyaWJ1dGVz
Lmhhc1NldCgpKQorICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3JGdW5jdGlvbiA9IGVtaXRNb3Zl
TGlua1RpbWVDb25zdGFudChudWxscHRyLCBMaW5rVGltZUNvbnN0YW50OjpUaHJvd1R5cGVFcnJv
ckZ1bmN0aW9uKTsKIAotICAgIGVtaXRDYWxsKG5ld1RlbXBvcmFyeSgpLCBkZWZpbmVQcm9wZXJ0
eVJlZ2lzdGVyLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIHBvc2l0
aW9uLCBwb3NpdGlvbiwgcG9zaXRpb24pOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZ2V0
dGVyOworICAgICAgICBpZiAoYXR0cmlidXRlcy5oYXNHZXQoKSkKKyAgICAgICAgICAgIGdldHRl
ciA9IGdldHRlclJlZ2lzdGVyOworICAgICAgICBlbHNlCisgICAgICAgICAgICBnZXR0ZXIgPSB0
aHJvd1R5cGVFcnJvckZ1bmN0aW9uOworCisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzZXR0
ZXI7CisgICAgICAgIGlmIChhdHRyaWJ1dGVzLmhhc1NldCgpKQorICAgICAgICAgICAgc2V0dGVy
ID0gc2V0dGVyUmVnaXN0ZXI7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHNldHRlciA9IHRo
cm93VHlwZUVycm9yRnVuY3Rpb247CisKKyAgICAgICAgZW1pdE9wY29kZShvcF9kZWZpbmVfYWNj
ZXNzb3JfcHJvcGVydHkpOworICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobmV3T2JqLT5p
bmRleCgpKTsKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHByb3BlcnR5TmFtZVJlZ2lz
dGVyLT5pbmRleCgpKTsKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGdldHRlci0+aW5k
ZXgoKSk7CisgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChzZXR0ZXItPmluZGV4KCkpOwor
ICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIo
YXR0cmlidXRlcy5yYXdSZXByZXNlbnRhdGlvbigpKSktPmluZGV4KCkpOworICAgIH0gZWxzZSB7
CisgICAgICAgIGVtaXRPcGNvZGUob3BfZGVmaW5lX2RhdGFfcHJvcGVydHkpOworICAgICAgICBp
bnN0cnVjdGlvbnMoKS5hcHBlbmQobmV3T2JqLT5pbmRleCgpKTsKKyAgICAgICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKHByb3BlcnR5TmFtZVJlZ2lzdGVyLT5pbmRleCgpKTsKKyAgICAgICAgaW5z
dHJ1Y3Rpb25zKCkuYXBwZW5kKHZhbHVlUmVnaXN0ZXItPmluZGV4KCkpOworICAgICAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQoZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoYXR0cmlidXRlcy5y
YXdSZXByZXNlbnRhdGlvbigpKSktPmluZGV4KCkpOworICAgIH0KIH0KIAogUmVnaXN0ZXJJRCog
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXR1cm4oUmVnaXN0ZXJJRCogc3JjKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5o
CmluZGV4IGQzMjY0YzRhMDg3N2EzNjJlOTA0ZTFmODM2YmJkNDU2MDQyOWUwZmUuLjllNmNkYmEz
NjIzZTkyNjI2Y2M4ZmQzOTdmMDllNzE0MzNmYjFjYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTU4OCw3
ICs1ODgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIFByb3BlcnR5RW51bWVyYWJs
ZSAgID0gMSA8PCAyLAogICAgICAgICB9OwogICAgICAgICB2b2lkIGVtaXRDYWxsRGVmaW5lUHJv
cGVydHkoUmVnaXN0ZXJJRCogbmV3T2JqLCBSZWdpc3RlcklEKiBwcm9wZXJ0eU5hbWVSZWdpc3Rl
ciwKLSAgICAgICAgICAgIFJlZ2lzdGVySUQqIHZhbHVlUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIGdl
dHRlclJlZ2lzdGVyLCBSZWdpc3RlcklEKiBzZXR0ZXJSZWdpc3RlciwgdW5zaWduZWQgb3B0aW9u
cywgY29uc3QgSlNUZXh0UG9zaXRpb24mKTsKKyAgICAgICAgICAgIFJlZ2lzdGVySUQqIHZhbHVl
UmVnaXN0ZXIsIFJlZ2lzdGVySUQqIGdldHRlclJlZ2lzdGVyLCBSZWdpc3RlcklEKiBzZXR0ZXJS
ZWdpc3RlciwgdW5zaWduZWQgb3B0aW9ucyk7CiAKICAgICAgICAgdm9pZCBlbWl0RW51bWVyYXRp
b24oVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIGVudW1lcmF0aW9uTm9kZSwgRXhwcmVzc2lvbk5v
ZGUqIHN1YmplY3ROb2RlLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPHZvaWQoQnl0ZWNvZGVHZW5lcmF0
b3ImLCBSZWdpc3RlcklEKik+JiBjYWxsQmFjaywgVmFyaWFibGVFbnZpcm9ubWVudE5vZGUqID0g
bnVsbHB0ciwgUmVnaXN0ZXJJRCogZm9yTG9vcFN5bWJvbFRhYmxlID0gbnVsbHB0cik7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2Vu
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNw
cAppbmRleCBjMjY4YTI2MDhkMzhkNmRlYTdhY2I4MTc3MDdlNTlmMWM1MjVmMjgyLi4yYjU5MGM4
N2MwZjE2YjAwZjYyYzAzZmY4NjYxYjU5MzBmZDYwZTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC01OTAsMTIgKzU5
MCwxMiBAQCB2b2lkIFByb3BlcnR5TGlzdE5vZGU6OmVtaXRQdXRDb25zdGFudFByb3BlcnR5KEJ5
dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZwogICAgICAgICBBU1NFUlQobm9kZS5uZWVk
c1N1cGVyQmluZGluZygpKTsKICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByb3BlcnR5TmFt
ZVJlZ2lzdGVyOwogICAgICAgICBpZiAobm9kZS5uYW1lKCkpCi0gICAgICAgICAgICBwcm9wZXJ0
eU5hbWVSZWdpc3RlciA9IGdlbmVyYXRvci5lbWl0TG9hZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5
KCksICpub2RlLm5hbWUoKSk7CisgICAgICAgICAgICBwcm9wZXJ0eU5hbWVSZWdpc3RlciA9IGdl
bmVyYXRvci5lbWl0TG9hZChudWxscHRyLCAqbm9kZS5uYW1lKCkpOwogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICBwcm9wZXJ0eU5hbWVSZWdpc3RlciA9IGdlbmVyYXRvci5lbWl0Tm9kZShub2Rl
Lm1fZXhwcmVzc2lvbik7CiAKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRTZXRGdW5jdGlvbk5hbWVJ
Zk5lZWRlZChub2RlLm1fYXNzaWduLCB2YWx1ZS5nZXQoKSwgcHJvcGVydHlOYW1lUmVnaXN0ZXIu
Z2V0KCkpOwotICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGxEZWZpbmVQcm9wZXJ0eShuZXdPYmos
IHByb3BlcnR5TmFtZVJlZ2lzdGVyLmdldCgpLCB2YWx1ZS5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0
ciwgQnl0ZWNvZGVHZW5lcmF0b3I6OlByb3BlcnR5Q29uZmlndXJhYmxlIHwgQnl0ZWNvZGVHZW5l
cmF0b3I6OlByb3BlcnR5V3JpdGFibGUsIG1fcG9zaXRpb24pOworICAgICAgICBnZW5lcmF0b3Iu
ZW1pdENhbGxEZWZpbmVQcm9wZXJ0eShuZXdPYmosIHByb3BlcnR5TmFtZVJlZ2lzdGVyLmdldCgp
LCB2YWx1ZS5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0ciwgQnl0ZWNvZGVHZW5lcmF0b3I6OlByb3Bl
cnR5Q29uZmlndXJhYmxlIHwgQnl0ZWNvZGVHZW5lcmF0b3I6OlByb3BlcnR5V3JpdGFibGUpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmIChjb25zdCBhdXRvKiBpZGVudGlmaWVyID0g
bm9kZS5uYW1lKCkpIHsKQEAgLTYwNSw3ICs2MDUsNyBAQCB2b2lkIFByb3BlcnR5TGlzdE5vZGU6
OmVtaXRQdXRDb25zdGFudFByb3BlcnR5KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJl
ZwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IGluZGV4ID0gZ2VuZXJhdG9yLmVtaXRMb2FkKGdlbmVyYXRvci5uZXdUZW1wb3Jhcnko
KSwganNOdW1iZXIob3B0aW9uYWxJbmRleC52YWx1ZSgpKSk7CisgICAgICAgIFJlZlB0cjxSZWdp
c3RlcklEPiBpbmRleCA9IGdlbmVyYXRvci5lbWl0TG9hZChudWxscHRyLCBqc051bWJlcihvcHRp
b25hbEluZGV4LnZhbHVlKCkpKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXREaXJlY3RQdXRCeVZh
bChuZXdPYmosIGluZGV4LmdldCgpLCB2YWx1ZS5nZXQoKSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CkBAIC0xNjIzLDcgKzE2MjMsNyBAQCBSZWdpc3RlcklEKiBVbmFyeVBsdXNOb2RlOjplbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRAogIAogUmVn
aXN0ZXJJRCogQml0d2lzZU5vdE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYg
Z2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNy
YzIgPSBnZW5lcmF0b3IuZW1pdExvYWQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBqc051bWJl
cigtMSkpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzcmMyID0gZ2VuZXJhdG9yLmVtaXRMb2Fk
KG51bGxwdHIsIGpzTnVtYmVyKC0xKSk7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNyYzEgPSBn
ZW5lcmF0b3IuZW1pdE5vZGUobV9leHByKTsKICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRCaW5h
cnlPcChvcF9iaXR4b3IsIGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgc3JjMS5nZXQo
KSksIHNyYzEuZ2V0KCksIHNyYzIuZ2V0KCksIE9wZXJhbmRUeXBlcyhtX2V4cHItPnJlc3VsdERl
c2NyaXB0b3IoKSwgUmVzdWx0VHlwZTo6bnVtYmVyVHlwZUlzSW50MzIoKSkpOwogfQpAQCAtMzYw
MywxMiArMzYwMywxMiBAQCBSZWdpc3RlcklEKiBDbGFzc0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRAogICAgICAgICBlbWl0UHV0
SG9tZU9iamVjdChnZW5lcmF0b3IsIGNvbnN0cnVjdG9yLmdldCgpLCBwcm90b3R5cGUuZ2V0KCkp
OwogICAgIH0KIAotICAgIFJlZlB0cjxSZWdpc3RlcklEPiBjb25zdHJ1Y3Rvck5hbWVSZWdpc3Rl
ciA9IGdlbmVyYXRvci5lbWl0TG9hZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHByb3BlcnR5
TmFtZXMuY29uc3RydWN0b3IpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBjb25zdHJ1Y3Rvck5h
bWVSZWdpc3RlciA9IGdlbmVyYXRvci5lbWl0TG9hZChudWxscHRyLCBwcm9wZXJ0eU5hbWVzLmNv
bnN0cnVjdG9yKTsKICAgICBnZW5lcmF0b3IuZW1pdENhbGxEZWZpbmVQcm9wZXJ0eShwcm90b3R5
cGUuZ2V0KCksIGNvbnN0cnVjdG9yTmFtZVJlZ2lzdGVyLmdldCgpLCBjb25zdHJ1Y3Rvci5nZXQo
KSwgbnVsbHB0ciwgbnVsbHB0ciwKLSAgICAgICAgQnl0ZWNvZGVHZW5lcmF0b3I6OlByb3BlcnR5
Q29uZmlndXJhYmxlIHwgQnl0ZWNvZGVHZW5lcmF0b3I6OlByb3BlcnR5V3JpdGFibGUsIG1fcG9z
aXRpb24pOworICAgICAgICBCeXRlY29kZUdlbmVyYXRvcjo6UHJvcGVydHlDb25maWd1cmFibGUg
fCBCeXRlY29kZUdlbmVyYXRvcjo6UHJvcGVydHlXcml0YWJsZSk7CiAKLSAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gcHJvdG90eXBlTmFtZVJlZ2lzdGVyID0gZ2VuZXJhdG9yLmVtaXRMb2FkKGdlbmVy
YXRvci5uZXdUZW1wb3JhcnkoKSwgcHJvcGVydHlOYW1lcy5wcm90b3R5cGUpOwotICAgIGdlbmVy
YXRvci5lbWl0Q2FsbERlZmluZVByb3BlcnR5KGNvbnN0cnVjdG9yLmdldCgpLCBwcm90b3R5cGVO
YW1lUmVnaXN0ZXIuZ2V0KCksIHByb3RvdHlwZS5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0ciwgMCwg
bV9wb3NpdGlvbik7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByb3RvdHlwZU5hbWVSZWdpc3Rl
ciA9IGdlbmVyYXRvci5lbWl0TG9hZChudWxscHRyLCBwcm9wZXJ0eU5hbWVzLnByb3RvdHlwZSk7
CisgICAgZ2VuZXJhdG9yLmVtaXRDYWxsRGVmaW5lUHJvcGVydHkoY29uc3RydWN0b3IuZ2V0KCks
IHByb3RvdHlwZU5hbWVSZWdpc3Rlci5nZXQoKSwgcHJvdG90eXBlLmdldCgpLCBudWxscHRyLCBu
dWxscHRyLCAwKTsKIAogICAgIGlmIChtX3N0YXRpY01ldGhvZHMpCiAgICAgICAgIGdlbmVyYXRv
ci5lbWl0Tm9kZShjb25zdHJ1Y3Rvci5nZXQoKSwgbV9zdGF0aWNNZXRob2RzKTsKQEAgLTM4NzAs
NyArMzg3MCw3IEBAIHZvaWQgT2JqZWN0UGF0dGVybk5vZGU6OmJpbmRWYWx1ZShCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiByaHMpCiAgICAgICAgICAgICBpZiAoIW9w
dGlvbmFsSW5kZXgpCiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKHRlbXAu
Z2V0KCksIHJocywgdGFyZ2V0LnByb3BlcnR5TmFtZSk7CiAgICAgICAgICAgICBlbHNlIHsKLSAg
ICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaW5kZXggPSBnZW5lcmF0b3IuZW1pdExv
YWQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBqc051bWJlcihvcHRpb25hbEluZGV4LnZhbHVl
KCkpKTsKKyAgICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaW5kZXggPSBnZW5lcmF0
b3IuZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIob3B0aW9uYWxJbmRleC52YWx1ZSgpKSk7CiAg
ICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRCeVZhbCh0ZW1wLmdldCgpLCByaHMsIGlu
ZGV4LmdldCgpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGlu
ZXMuaAppbmRleCA4Yzc0MTI2NjI2NWM4MTQ4MDZmMWYwZmI3MTQ4MzdlMjNjNTBkYzhkLi5lOTZi
MTA1Y2FmMWEyZTEwNDFjOTliZjYxYThiOGI2NzM0ZGFjMWQzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5o
CkBAIC0yNjU3LDYgKzI2NTcsMTEgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0
U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAg
Y2xvYmJlcldvcmxkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2xvYmJlckxpbWl0KTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQorCisgICAgY2FzZSBEZWZpbmVEYXRhUHJvcGVydHk6CisgICAgY2Fz
ZSBEZWZpbmVBY2Nlc3NvclByb3BlcnR5OgorICAgICAgICBjbG9iYmVyV29ybGQobm9kZS0+b3Jp
Z2luLnNlbWFudGljLCBjbG9iYmVyTGltaXQpOworICAgICAgICBicmVhazsKICAgICAgICAgCiAg
ICAgY2FzZSBJbjogewogICAgICAgICAvLyBGSVhNRTogV2UgY2FuIGRldGVybWluZSB3aGVuIHRo
ZSBwcm9wZXJ0eSBkZWZpbml0ZWx5IGV4aXN0cyBiYXNlZCBvbiBhYnN0cmFjdApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCAwNDUyMjgw
ZGQyNmY0MGIwYmNhNDVkMzg1MWQxMTBkZjQxNmEwZmE3Li4wYjVmYjk1ZDk1N2IxMmE0MzgxY2Zm
YjliNmMyYTRlYjMyYWIzYTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtNDIzOCw2ICs0MjM4LDM4IEBAIGJvb2wgQnl0ZUNvZGVQ
YXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICBORVhUX09QQ09E
RShvcF9wdXRfYnlfdmFsX3dpdGhfdGhpcyk7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIG9w
X2RlZmluZV9kYXRhX3Byb3BlcnR5OiB7CisgICAgICAgICAgICBOb2RlKiBiYXNlID0gZ2V0KFZp
cnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSk7CisgICAgICAg
ICAgICBOb2RlKiBwcm9wZXJ0eSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0
aW9uWzJdLnUub3BlcmFuZCkpOworICAgICAgICAgICAgTm9kZSogdmFsdWUgPSBnZXQoVmlydHVh
bFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpKTsKKyAgICAgICAgICAg
IE5vZGUqIGF0dHJpYnV0ZXMgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlv
bls0XS51Lm9wZXJhbmQpKTsKKworICAgICAgICAgICAgYWRkVmFyQXJnQ2hpbGQoYmFzZSk7Cisg
ICAgICAgICAgICBhZGRWYXJBcmdDaGlsZChwcm9wZXJ0eSk7CisgICAgICAgICAgICBhZGRWYXJB
cmdDaGlsZCh2YWx1ZSk7CisgICAgICAgICAgICBhZGRWYXJBcmdDaGlsZChhdHRyaWJ1dGVzKTsK
KyAgICAgICAgICAgIGFkZFRvR3JhcGgoTm9kZTo6VmFyQXJnLCBEZWZpbmVEYXRhUHJvcGVydHks
IE9wSW5mbygwKSwgT3BJbmZvKDApKTsKKworICAgICAgICAgICAgTkVYVF9PUENPREUob3BfZGVm
aW5lX2RhdGFfcHJvcGVydHkpOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBvcF9kZWZpbmVf
YWNjZXNzb3JfcHJvcGVydHk6IHsKKyAgICAgICAgICAgIE5vZGUqIGJhc2UgPSBnZXQoVmlydHVh
bFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpKTsKKyAgICAgICAgICAg
IE5vZGUqIHByb3BlcnR5ID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25b
Ml0udS5vcGVyYW5kKSk7CisgICAgICAgICAgICBOb2RlKiBnZXR0ZXIgPSBnZXQoVmlydHVhbFJl
Z2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpKTsKKyAgICAgICAgICAgIE5v
ZGUqIHNldHRlciA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzRdLnUu
b3BlcmFuZCkpOworICAgICAgICAgICAgTm9kZSogYXR0cmlidXRlcyA9IGdldChWaXJ0dWFsUmVn
aXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzVdLnUub3BlcmFuZCkpOworCisgICAgICAgICAgICBh
ZGRWYXJBcmdDaGlsZChiYXNlKTsKKyAgICAgICAgICAgIGFkZFZhckFyZ0NoaWxkKHByb3BlcnR5
KTsKKyAgICAgICAgICAgIGFkZFZhckFyZ0NoaWxkKGdldHRlcik7CisgICAgICAgICAgICBhZGRW
YXJBcmdDaGlsZChzZXR0ZXIpOworICAgICAgICAgICAgYWRkVmFyQXJnQ2hpbGQoYXR0cmlidXRl
cyk7CisgICAgICAgICAgICBhZGRUb0dyYXBoKE5vZGU6OlZhckFyZywgRGVmaW5lQWNjZXNzb3JQ
cm9wZXJ0eSwgT3BJbmZvKDApLCBPcEluZm8oMCkpOworCisgICAgICAgICAgICBORVhUX09QQ09E
RShvcF9kZWZpbmVfYWNjZXNzb3JfcHJvcGVydHkpOworICAgICAgICB9CisKICAgICAgICAgY2Fz
ZSBvcF90cnlfZ2V0X2J5X2lkOgogICAgICAgICBjYXNlIG9wX2dldF9ieV9pZDoKICAgICAgICAg
Y2FzZSBvcF9nZXRfYnlfaWRfcHJvdG9fbG9hZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAppbmRleCA0OGZhNDk1NzJlYzUwZWMxNWQwMzc3NmE1MjJk
NmZiZDM1MmJmZTlhLi5jMzIzZDQ2ZmJjM2NmNWMxMDQ5ZmEyNmZjMGUxOTBmMjI3MWE0NzE4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCkBAIC0x
NzMsNiArMTczLDggQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJRCBv
cGNvZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWMKICAgICBjYXNlIG9wX3B1dF9n
ZXR0ZXJfc2V0dGVyX2J5X2lkOgogICAgIGNhc2Ugb3BfcHV0X2dldHRlcl9ieV92YWw6CiAgICAg
Y2FzZSBvcF9wdXRfc2V0dGVyX2J5X3ZhbDoKKyAgICBjYXNlIG9wX2RlZmluZV9kYXRhX3Byb3Bl
cnR5OgorICAgIGNhc2Ugb3BfZGVmaW5lX2FjY2Vzc29yX3Byb3BlcnR5OgogICAgIGNhc2Ugb3Bf
ZGVsX2J5X2lkOgogICAgIGNhc2Ugb3BfZGVsX2J5X3ZhbDoKICAgICBjYXNlIG9wX2ptcDoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKaW5kZXggYzFjM2ZkZGRiN2E3
YTYwYjQ2NTJhMTdjYWUxYTk4M2Y4Y2FlOTYxMS4uY2NjZGY4YmNkNjI2YWE0ZDY3NjM3M2NkMjg0
MmUyZTU2YWUwYWMxMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
bG9iYmVyaXplLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXpl
LmgKQEAgLTQ4Niw2ICs0ODYsOCBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2Rl
KiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgIGNhc2Ug
UHV0R2V0dGVyU2V0dGVyQnlJZDoKICAgICBjYXNlIFB1dEdldHRlckJ5VmFsOgogICAgIGNhc2Ug
UHV0U2V0dGVyQnlWYWw6CisgICAgY2FzZSBEZWZpbmVEYXRhUHJvcGVydHk6CisgICAgY2FzZSBE
ZWZpbmVBY2Nlc3NvclByb3BlcnR5OgogICAgIGNhc2UgRGVsZXRlQnlJZDoKICAgICBjYXNlIERl
bGV0ZUJ5VmFsOgogICAgIGNhc2UgQXJyYXlQdXNoOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdEb2VzR0MuY3BwCmluZGV4IDJkY2Y1NWQyZWQyOGFhZTYwYjZiOGI3YjliZjZkYTA3MTlkOTJk
ZDUuLmY2OWQyZjlmZjk3ZDQwOGE4ZjJlODE3NmY1YWE3YjNjOWM3NTNkYmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKQEAgLTExMSw2ICsxMTEsOCBAQCBib29sIGRv
ZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBQdXRHZXR0ZXJTZXR0ZXJC
eUlkOgogICAgIGNhc2UgUHV0R2V0dGVyQnlWYWw6CiAgICAgY2FzZSBQdXRTZXR0ZXJCeVZhbDoK
KyAgICBjYXNlIERlZmluZURhdGFQcm9wZXJ0eToKKyAgICBjYXNlIERlZmluZUFjY2Vzc29yUHJv
cGVydHk6CiAgICAgY2FzZSBEZWxldGVCeUlkOgogICAgIGNhc2UgRGVsZXRlQnlWYWw6CiAgICAg
Y2FzZSBDaGVja1N0cnVjdHVyZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRml4dXBQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVw
UGhhc2UuY3BwCmluZGV4IDZlZTUxNDJmNzhmNjBiZjEwOTY4M2M4Yjg5YzE1ZDBlNDU4YjNmZTAu
LmQzYzU5NDEwNGFjOTMwZDU0MWUyNjY5MmEwNWFkNTViOWRkNjk5MzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcApAQCAtMTYwMiw2ICsxNjAyLDM5IEBA
IGNsYXNzIEZpeHVwUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgZml4RWRnZTxV
bnR5cGVkVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBicmVhazsKIAorICAgICAg
ICBjYXNlIERlZmluZURhdGFQcm9wZXJ0eTogeworICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNl
PihtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDApKTsKKyAgICAgICAgICAgIEVkZ2UmIHByb3Bl
cnR5RWRnZSA9IG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSk7CisgICAgICAgICAgICBpZiAo
cHJvcGVydHlFZGdlLT5zaG91bGRTcGVjdWxhdGVTeW1ib2woKSkKKyAgICAgICAgICAgICAgICBm
aXhFZGdlPFN5bWJvbFVzZT4ocHJvcGVydHlFZGdlKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHBy
b3BlcnR5RWRnZS0+c2hvdWxkU3BlY3VsYXRlU3RyaW5nSWRlbnQoKSkKKyAgICAgICAgICAgICAg
ICBmaXhFZGdlPFN0cmluZ0lkZW50VXNlPihwcm9wZXJ0eUVkZ2UpOworICAgICAgICAgICAgZWxz
ZSBpZiAocHJvcGVydHlFZGdlLT5zaG91bGRTcGVjdWxhdGVTdHJpbmcoKSkKKyAgICAgICAgICAg
ICAgICBmaXhFZGdlPFN0cmluZ1VzZT4ocHJvcGVydHlFZGdlKTsKKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICBmaXhFZGdlPFVudHlwZWRVc2U+KHByb3BlcnR5RWRnZSk7CisgICAg
ICAgICAgICBmaXhFZGdlPFVudHlwZWRVc2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMikp
OworICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2Rl
LCAzKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgRGVm
aW5lQWNjZXNzb3JQcm9wZXJ0eTogeworICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNlPihtX2dy
YXBoLnZhckFyZ0NoaWxkKG5vZGUsIDApKTsKKyAgICAgICAgICAgIEVkZ2UmIHByb3BlcnR5RWRn
ZSA9IG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSk7CisgICAgICAgICAgICBpZiAocHJvcGVy
dHlFZGdlLT5zaG91bGRTcGVjdWxhdGVTeW1ib2woKSkKKyAgICAgICAgICAgICAgICBmaXhFZGdl
PFN5bWJvbFVzZT4ocHJvcGVydHlFZGdlKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHByb3BlcnR5
RWRnZS0+c2hvdWxkU3BlY3VsYXRlU3RyaW5nSWRlbnQoKSkKKyAgICAgICAgICAgICAgICBmaXhF
ZGdlPFN0cmluZ0lkZW50VXNlPihwcm9wZXJ0eUVkZ2UpOworICAgICAgICAgICAgZWxzZSBpZiAo
cHJvcGVydHlFZGdlLT5zaG91bGRTcGVjdWxhdGVTdHJpbmcoKSkKKyAgICAgICAgICAgICAgICBm
aXhFZGdlPFN0cmluZ1VzZT4ocHJvcGVydHlFZGdlKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICBmaXhFZGdlPFVudHlwZWRVc2U+KHByb3BlcnR5RWRnZSk7CisgICAgICAgICAg
ICBmaXhFZGdlPENlbGxVc2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMikpOworICAgICAg
ICAgICAgZml4RWRnZTxDZWxsVXNlPihtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDMpKTsKKyAg
ICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgNCkp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwogI2lmICFBU1NFUlRfRElTQUJMRUQK
ICAgICAgICAgLy8gSGF2ZSB0aGVzZSBuby1vcCBjYXNlcyBoZXJlIHRvIGVuc3VyZSB0aGF0IG5v
Ym9keSBmb3JnZXRzIHRvIGFkZCBoYW5kbGVycyBmb3IgbmV3IG9wY29kZXMuCiAgICAgICAgIGNh
c2UgU2V0QXJndW1lbnQ6CkBAIC0xNjcxLDggKzE3MDQsNiBAQCBjbGFzcyBGaXh1cFBoYXNlIDog
cHVibGljIFBoYXNlIHsKICAgICAgICAgY2FzZSBHZXRCeVZhbFdpdGhUaGlzOgogICAgICAgICBj
YXNlIENvbXBhcmVFcVB0cjoKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgCi0gICAg
ICAgICAgICBicmVhazsKICNlbHNlCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBicmVh
azsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAppbmRleCAxZjM1ZWIyZDkw
M2I0NjZjMjQxOGMzZGMxYjYxODUzZWJlNWQ2OTc5Li4yNTE1ZWIzNDJiZDczODllMTE4ODdhYmQ4
MmYwZWNmZjAxMDdkYmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGVUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5o
CkBAIC0xOTksNiArMTk5LDggQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAg
IG1hY3JvKFB1dEdldHRlclNldHRlckJ5SWQsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNy
byhQdXRHZXR0ZXJCeVZhbCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFB1dFNldHRl
ckJ5VmFsLCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8oRGVmaW5lRGF0YVByb3BlcnR5
LCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUhhc1ZhckFyZ3MpIFwKKyAgICBtYWNybyhEZWZpbmVB
Y2Nlc3NvclByb3BlcnR5LCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUhhc1ZhckFyZ3MpIFwKICAg
ICBtYWNybyhEZWxldGVCeUlkLCBOb2RlUmVzdWx0Qm9vbGVhbiB8IE5vZGVNdXN0R2VuZXJhdGUp
IFwKICAgICBtYWNybyhEZWxldGVCeVZhbCwgTm9kZVJlc3VsdEJvb2xlYW4gfCBOb2RlTXVzdEdl
bmVyYXRlKSBcCiAgICAgbWFjcm8oQ2hlY2tTdHJ1Y3R1cmUsIE5vZGVNdXN0R2VuZXJhdGUpIFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCmluZGV4IDdlOGNj
NThjOGQ4MzM4OWI2Y2QyOTExZDVhYWU4ZDM3ODQ2NTA1ODguLmI2OGM4YWQxNTQ3YjZlZGU5ODMy
MWVkMWYzMzA2MmNiZjgzMDM5NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
cGVyYXRpb25zLmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkRGR1RvRlRMRGVmZXJy
ZWRDb21waWxhdGlvbkNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiREZHVG9GVExGb3JPU1JFbnRyeURl
ZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5oIgogI2luY2x1ZGUgIkRGR1dvcmtsaXN0LmgiCisj
aW5jbHVkZSAiRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzLmgiCiAjaW5jbHVkZSAiRGlyZWN0QXJn
dW1lbnRzLmgiCiAjaW5jbHVkZSAiRlRMRm9yT1NSRW50cnlKSVRDb2RlLmgiCiAjaW5jbHVkZSAi
RlRMT1NSRW50cnkuaCIKQEAgLTk5NCw2ICs5OTUsOTIgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblB1dEJ5VmFsV2l0aFRoaXMoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBl
bmMKICAgICBwdXRXaXRoVGhpczxmYWxzZT4oZXhlYywgZW5jb2RlZEJhc2UsIGVuY29kZWRUaGlz
LCBlbmNvZGVkVmFsdWUsIHByb3BlcnR5KTsKIH0KIAorQUxXQVlTX0lOTElORSBzdGF0aWMgdm9p
ZCBkZWZpbmVEYXRhUHJvcGVydHkoRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0sIEpTT2JqZWN0KiBi
YXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIGludDMy
X3QgYXR0cmlidXRlcykKK3sKKyAgICBQcm9wZXJ0eURlc2NyaXB0b3IgZGVzY3JpcHRvciA9IHRv
UHJvcGVydHlEZXNjcmlwdG9yKHZhbHVlLCBqc1VuZGVmaW5lZCgpLCBqc1VuZGVmaW5lZCgpLCBE
ZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMoYXR0cmlidXRlcykpOworICAgIEFTU0VSVCgoZGVzY3Jp
cHRvci5hdHRyaWJ1dGVzKCkgJiBBY2Nlc3NvcikgfHwgKCFkZXNjcmlwdG9yLmlzQWNjZXNzb3JE
ZXNjcmlwdG9yKCkpKTsKKyAgICBiYXNlLT5tZXRob2RUYWJsZSh2bSktPmRlZmluZU93blByb3Bl
cnR5KGJhc2UsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgdHJ1ZSk7Cit9CisKK3Zv
aWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWZpbmVEYXRhUHJvcGVydHkoRXhlY1N0YXRlKiBl
eGVjLCBKU09iamVjdCogYmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFByb3BlcnR5LCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIGludDMyX3QgYXR0cmlidXRlcykKK3sKKyAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBl
eGVjKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBJ
ZGVudGlmaWVyIHByb3BlcnR5TmFtZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkUHJvcGVydHkp
LnRvUHJvcGVydHlLZXkoZXhlYyk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9p
ZCgpKTsKKyAgICBkZWZpbmVEYXRhUHJvcGVydHkoZXhlYywgdm0sIGJhc2UsIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSksIGF0dHJpYnV0ZXMpOworfQorCit2b2lk
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVmaW5lRGF0YVByb3BlcnR5U3RyaW5nKEV4ZWNTdGF0
ZSogZXhlYywgSlNPYmplY3QqIGJhc2UsIEpTU3RyaW5nKiBwcm9wZXJ0eSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlLCBpbnQzMl90IGF0dHJpYnV0ZXMpCit7CisgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSWRlbnRpZmll
ciBwcm9wZXJ0eU5hbWUgPSBwcm9wZXJ0eS0+dG9JZGVudGlmaWVyKGV4ZWMpOworICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisgICAgZGVmaW5lRGF0YVByb3BlcnR5KGV4
ZWMsIHZtLCBiYXNlLCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUp
LCBhdHRyaWJ1dGVzKTsKK30KKwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlZmluZURh
dGFQcm9wZXJ0eVN0cmluZ0lkZW50KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGJhc2UsIFVu
aXF1ZWRTdHJpbmdJbXBsKiBwcm9wZXJ0eSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBp
bnQzMl90IGF0dHJpYnV0ZXMpCit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBOYXRp
dmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CisgICAgZGVmaW5lRGF0YVByb3Bl
cnR5KGV4ZWMsIHZtLCBiYXNlLCBJZGVudGlmaWVyOjpmcm9tVWlkKCZ2bSwgcHJvcGVydHkpLCBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSwgYXR0cmlidXRlcyk7Cit9CisKK3ZvaWQgSklU
X09QRVJBVElPTiBvcGVyYXRpb25EZWZpbmVEYXRhUHJvcGVydHlTeW1ib2woRXhlY1N0YXRlKiBl
eGVjLCBKU09iamVjdCogYmFzZSwgU3ltYm9sKiBwcm9wZXJ0eSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlLCBpbnQzMl90IGF0dHJpYnV0ZXMpCit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CisgICAgZGVm
aW5lRGF0YVByb3BlcnR5KGV4ZWMsIHZtLCBiYXNlLCBJZGVudGlmaWVyOjpmcm9tVWlkKHByb3Bl
cnR5LT5wcml2YXRlTmFtZSgpKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSksIGF0dHJp
YnV0ZXMpOworfQorCitBTFdBWVNfSU5MSU5FIHN0YXRpYyB2b2lkIGRlZmluZUFjY2Vzc29yUHJv
cGVydHkoRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0sIEpTT2JqZWN0KiBiYXNlLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTT2JqZWN0KiBnZXR0ZXIsIEpTT2JqZWN0KiBzZXR0ZXIs
IGludDMyX3QgYXR0cmlidXRlcykKK3sKKyAgICBQcm9wZXJ0eURlc2NyaXB0b3IgZGVzY3JpcHRv
ciA9IHRvUHJvcGVydHlEZXNjcmlwdG9yKGpzVW5kZWZpbmVkKCksIGdldHRlciwgc2V0dGVyLCBE
ZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMoYXR0cmlidXRlcykpOworICAgIEFTU0VSVCgoZGVzY3Jp
cHRvci5hdHRyaWJ1dGVzKCkgJiBBY2Nlc3NvcikgfHwgKCFkZXNjcmlwdG9yLmlzQWNjZXNzb3JE
ZXNjcmlwdG9yKCkpKTsKKyAgICBiYXNlLT5tZXRob2RUYWJsZSh2bSktPmRlZmluZU93blByb3Bl
cnR5KGJhc2UsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgdHJ1ZSk7Cit9CisKK3Zv
aWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWZpbmVBY2Nlc3NvclByb3BlcnR5KEV4ZWNTdGF0
ZSogZXhlYywgSlNPYmplY3QqIGJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRQcm9wZXJ0eSwg
SlNPYmplY3QqIGdldHRlciwgSlNPYmplY3QqIHNldHRlciwgaW50MzJfdCBhdHRyaWJ1dGVzKQor
eworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcigmdm0sIGV4ZWMpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKworICAgIElkZW50aWZpZXIgcHJvcGVydHlOYW1lID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRQcm9wZXJ0eSkudG9Qcm9wZXJ0eUtleShleGVjKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCB2b2lkKCkpOworICAgIGRlZmluZUFjY2Vzc29yUHJvcGVydHkoZXhlYywgdm0sIGJh
c2UsIHByb3BlcnR5TmFtZSwgZ2V0dGVyLCBzZXR0ZXIsIGF0dHJpYnV0ZXMpOworfQorCit2b2lk
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eVN0cmluZyhFeGVj
U3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlLCBKU1N0cmluZyogcHJvcGVydHksIEpTT2JqZWN0
KiBnZXR0ZXIsIEpTT2JqZWN0KiBzZXR0ZXIsIGludDMyX3QgYXR0cmlidXRlcykKK3sKKyAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZt
LCBleGVjKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAg
ICBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSA9IHByb3BlcnR5LT50b0lkZW50aWZpZXIoZXhlYyk7
CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICBkZWZpbmVBY2Nl
c3NvclByb3BlcnR5KGV4ZWMsIHZtLCBiYXNlLCBwcm9wZXJ0eU5hbWUsIGdldHRlciwgc2V0dGVy
LCBhdHRyaWJ1dGVzKTsKK30KKwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlZmluZUFj
Y2Vzc29yUHJvcGVydHlTdHJpbmdJZGVudChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNl
LCBVbmlxdWVkU3RyaW5nSW1wbCogcHJvcGVydHksIEpTT2JqZWN0KiBnZXR0ZXIsIEpTT2JqZWN0
KiBzZXR0ZXIsIGludDMyX3QgYXR0cmlidXRlcykKK3sKKyAgICBWTSYgdm0gPSBleGVjLT52bSgp
OworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKKyAgICBkZWZp
bmVBY2Nlc3NvclByb3BlcnR5KGV4ZWMsIHZtLCBiYXNlLCBJZGVudGlmaWVyOjpmcm9tVWlkKCZ2
bSwgcHJvcGVydHkpLCBnZXR0ZXIsIHNldHRlciwgYXR0cmlidXRlcyk7Cit9CisKK3ZvaWQgSklU
X09QRVJBVElPTiBvcGVyYXRpb25EZWZpbmVBY2Nlc3NvclByb3BlcnR5U3ltYm9sKEV4ZWNTdGF0
ZSogZXhlYywgSlNPYmplY3QqIGJhc2UsIFN5bWJvbCogcHJvcGVydHksIEpTT2JqZWN0KiBnZXR0
ZXIsIEpTT2JqZWN0KiBzZXR0ZXIsIGludDMyX3QgYXR0cmlidXRlcykKK3sKKyAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVj
KTsKKyAgICBkZWZpbmVBY2Nlc3NvclByb3BlcnR5KGV4ZWMsIHZtLCBiYXNlLCBJZGVudGlmaWVy
Ojpmcm9tVWlkKHByb3BlcnR5LT5wcml2YXRlTmFtZSgpKSwgZ2V0dGVyLCBzZXR0ZXIsIGF0dHJp
YnV0ZXMpOworfQorCiBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0FycmF5KEV4ZWNT
dGF0ZSogZXhlYywgU3RydWN0dXJlKiBhcnJheVN0cnVjdHVyZSwgdm9pZCogYnVmZmVyLCBzaXpl
X3Qgc2l6ZSkKIHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKaW5kZXggNTI3YmZlNTg3NmFmYzc4MzdiYTMwZmQyMTBk
NWE0N2MzYjI5NTFlNC4uODQyMjM4NzQxMTI1ZmY0ZTE1Y2MzN2I0NjAwYjBjYmZjMTQyOTA2MyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKQEAgLTExNCw2ICsx
MTQsMTQgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRXaXRoVGhpcyhFeGVj
U3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEoKIHZvaWQgSklUX09QRVJBVElPTiBvcGVy
YXRpb25QdXRCeUlkV2l0aFRoaXNTdHJpY3QoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5U
RVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxXaXRoVGhpcyhFeGVj
U3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blB1dEJ5VmFsV2l0aFRoaXNTdHJpY3QoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsK
K3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWZpbmVEYXRhUHJvcGVydHkoRXhlY1N0YXRl
KiwgSlNPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIGludDMyX3QpIFdU
Rl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWZpbmVEYXRhUHJvcGVy
dHlTdHJpbmcoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBKU1N0cmluZyosIEVuY29kZWRKU1ZhbHVl
LCBpbnQzMl90KSBXVEZfSU5URVJOQUw7Cit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVm
aW5lRGF0YVByb3BlcnR5U3RyaW5nSWRlbnQoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBVbmlxdWVk
U3RyaW5nSW1wbCosIEVuY29kZWRKU1ZhbHVlLCBpbnQzMl90KSBXVEZfSU5URVJOQUw7Cit2b2lk
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVmaW5lRGF0YVByb3BlcnR5U3ltYm9sKEV4ZWNTdGF0
ZSosIEpTT2JqZWN0KiwgU3ltYm9sKiwgRW5jb2RlZEpTVmFsdWUsIGludDMyX3QpIFdURl9JTlRF
Uk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWZpbmVBY2Nlc3NvclByb3BlcnR5
KEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEpTT2JqZWN0KiwgSlNPYmpl
Y3QqLCBpbnQzMl90KSBXVEZfSU5URVJOQUw7Cit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
RGVmaW5lQWNjZXNzb3JQcm9wZXJ0eVN0cmluZyhFeGVjU3RhdGUqLCBKU09iamVjdCosIEpTU3Ry
aW5nKiwgSlNPYmplY3QqLCBKU09iamVjdCosIGludDMyX3QpIFdURl9JTlRFUk5BTDsKK3ZvaWQg
SklUX09QRVJBVElPTiBvcGVyYXRpb25EZWZpbmVBY2Nlc3NvclByb3BlcnR5U3RyaW5nSWRlbnQo
RXhlY1N0YXRlKiwgSlNPYmplY3QqLCBVbmlxdWVkU3RyaW5nSW1wbCosIEpTT2JqZWN0KiwgSlNP
YmplY3QqLCBpbnQzMl90KSBXVEZfSU5URVJOQUw7Cit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eVN5bWJvbChFeGVjU3RhdGUqLCBKU09iamVjdCosIFN5
bWJvbCosIEpTT2JqZWN0KiwgSlNPYmplY3QqLCBpbnQzMl90KSBXVEZfSU5URVJOQUw7CiBFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFycmF5UHVzaChFeGVjU3RhdGUqLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEpTQXJyYXkqKSBXVEZfSU5URVJOQUw7CiBFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFycmF5UHVzaERvdWJsZShFeGVjU3Rh
dGUqLCBkb3VibGUgdmFsdWUsIEpTQXJyYXkqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFycmF5UG9wKEV4ZWNTdGF0ZSosIEpTQXJyYXkqKSBX
VEZfSU5URVJOQUw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1By
ZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4IDA2ZGI0MGViNjc2NjcyNDZk
MzQ5MDkwNTkxOWJmNWFiZDAwZWI5OWUuLjg3ZGJlODNhODg5MGMxZDdhZDM0OGUwNTRlNWE3OWU5
ZDVhNDQyZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGlj
dGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC0xMDQwLDYgKzEwNDAsOCBAQCBj
bGFzcyBQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAg
IGNhc2UgUHV0R2V0dGVyU2V0dGVyQnlJZDoKICAgICAgICAgY2FzZSBQdXRHZXR0ZXJCeVZhbDoK
ICAgICAgICAgY2FzZSBQdXRTZXR0ZXJCeVZhbDoKKyAgICAgICAgY2FzZSBEZWZpbmVEYXRhUHJv
cGVydHk6CisgICAgICAgIGNhc2UgRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eToKICAgICAgICAgY2Fz
ZSBERkc6Okp1bXA6CiAgICAgICAgIGNhc2UgQnJhbmNoOgogICAgICAgICBjYXNlIFN3aXRjaDoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKaW5kZXggMjJi
OTM0MDA1ODNhYzZkZjg2M2IwYmUzOGY2YjgzMzZhNTA0MTlhYy4uYzEzMmY5NTc0YjI1ZTY0ZTZh
Y2M1NjE2MGI5NDc5NTgyYjkzYWYxMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTYWZlVG9FeGVjdXRlLmgKQEAgLTIxNCw2ICsyMTQsOCBAQCBib29sIHNhZmVUb0V4ZWN1dGUo
QWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAg
Y2FzZSBQdXRHZXR0ZXJTZXR0ZXJCeUlkOgogICAgIGNhc2UgUHV0R2V0dGVyQnlWYWw6CiAgICAg
Y2FzZSBQdXRTZXR0ZXJCeVZhbDoKKyAgICBjYXNlIERlZmluZURhdGFQcm9wZXJ0eToKKyAgICBj
YXNlIERlZmluZUFjY2Vzc29yUHJvcGVydHk6CiAgICAgY2FzZSBDaGVja1N0cnVjdHVyZToKICAg
ICBjYXNlIEdldEV4ZWN1dGFibGU6CiAgICAgY2FzZSBHZXRCdXR0ZXJmbHk6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IDc3NzFhOTUx
MWIyYTg1YTIwYzg4OTE2ZmE0MTkzMTQ3N2JjNzYwNTcuLjhiMjk4N2EzNmQwYmJiZWJiZjExODRh
OWRiZjgyMDU0MjY2NzNkNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwCkBAIC04NjM5LDYgKzg2MzksMTY1IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVDb21wYXJlRXFQdHIoTm9kZSogbm9kZSkKICAgICBibGVzc2VkQm9vbGVh
blJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogfQogCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlRGVmaW5lRGF0YVByb3BlcnR5KE5vZGUqIG5vZGUpCit7CisjaWYgVVNFKEpTVkFMVUU2NCkK
KyAgICBzdGF0aWNfYXNzZXJ0KEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzID49IDUsICJXZSBh
cmUgYXNzdW1pbmcgd2UgaGF2ZSBlbm91Z2ggcmVnaXN0ZXJzIHRvIG1ha2UgdGhpcyBjYWxsIHdp
dGhvdXQgaW5jcmVtZW50YWxseSBzZXR0aW5nIHVwIHRoZSBhcmd1bWVudHMuIik7CisjZWxzZQor
ICAgIHN0YXRpY19hc3NlcnQoR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMgPj0gNiwgIldlIGFy
ZSBhc3N1bWluZyB3ZSBoYXZlIGVub3VnaCByZWdpc3RlcnMgdG8gbWFrZSB0aGlzIGNhbGwgd2l0
aG91dCBpbmNyZW1lbnRhbGx5IHNldHRpbmcgdXAgdGhlIGFyZ3VtZW50cy4iKTsKKyNlbmRpZgor
CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBtX2ppdC5ncmFwaCgpLnZhckFy
Z0NoaWxkKG5vZGUsIDApKTsKKyAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CisKKyAg
ICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBtX2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5v
ZGUsIDIpKTsKKyAgICBKU1ZhbHVlUmVncyB2YWx1ZUdQUiA9IHZhbHVlLmdwcigpOworCisgICAg
U3BlY3VsYXRlSW50MzJPcGVyYW5kIGF0dHJpYnV0ZXModGhpcywgbV9qaXQuZ3JhcGgoKS52YXJB
cmdDaGlsZChub2RlLCAzKSk7CisgICAgR1BSUmVnIGF0dHJpYnV0ZXNHUFIgPSBhdHRyaWJ1dGVz
LmdwcigpOworCisgICAgRWRnZSYgcHJvcGVydHlFZGdlID0gbV9qaXQuZ3JhcGgoKS52YXJBcmdD
aGlsZChub2RlLCAxKTsKKyAgICBzd2l0Y2ggKHByb3BlcnR5RWRnZS51c2VLaW5kKCkpIHsKKyAg
ICBjYXNlIFN0cmluZ1VzZTogeworICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBwcm9wZXJ0
eSh0aGlzLCBwcm9wZXJ0eUVkZ2UpOworICAgICAgICBHUFJSZWcgcHJvcGVydHlHUFIgPSBwcm9w
ZXJ0eS5ncHIoKTsKKyAgICAgICAgc3BlY3VsYXRlU3RyaW5nKHByb3BlcnR5RWRnZSwgcHJvcGVy
dHlHUFIpOworCisgICAgICAgIHVzZUNoaWxkcmVuKG5vZGUpOworCisgICAgICAgIGZsdXNoUmVn
aXN0ZXJzKCk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVmaW5lRGF0YVByb3Bl
cnR5U3RyaW5nLCBOb1Jlc3VsdCwgYmFzZUdQUiwgcHJvcGVydHlHUFIsIHZhbHVlR1BSLCBhdHRy
aWJ1dGVzKTsKKyAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKKyAgICAgICAgYnJlYWs7
CisgICAgfQorICAgIGNhc2UgU3RyaW5nSWRlbnRVc2U6IHsKKyAgICAgICAgU3BlY3VsYXRlQ2Vs
bE9wZXJhbmQgcHJvcGVydHkodGhpcywgcHJvcGVydHlFZGdlKTsKKyAgICAgICAgR1BSVGVtcG9y
YXJ5IGlkZW50KHRoaXMpOworCisgICAgICAgIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IHByb3BlcnR5
LmdwcigpOworICAgICAgICBHUFJSZWcgaWRlbnRHUFIgPSBpZGVudC5ncHIoKTsKKworICAgICAg
ICBzcGVjdWxhdGVTdHJpbmcocHJvcGVydHlFZGdlLCBwcm9wZXJ0eUdQUik7CisgICAgICAgIHNw
ZWN1bGF0ZVN0cmluZ0lkZW50QW5kTG9hZFN0b3JhZ2UocHJvcGVydHlFZGdlLCBwcm9wZXJ0eUdQ
UiwgaWRlbnRHUFIpOworCisgICAgICAgIHVzZUNoaWxkcmVuKG5vZGUpOworCisgICAgICAgIGZs
dXNoUmVnaXN0ZXJzKCk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVmaW5lRGF0
YVByb3BlcnR5U3RyaW5nSWRlbnQsIE5vUmVzdWx0LCBiYXNlR1BSLCBpZGVudEdQUiwgdmFsdWVH
UFIsIGF0dHJpYnV0ZXMpOworICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOworICAgICAg
ICBicmVhazsKKyAgICB9CisgICAgY2FzZSBTeW1ib2xVc2U6IHsKKyAgICAgICAgU3BlY3VsYXRl
Q2VsbE9wZXJhbmQgcHJvcGVydHkodGhpcywgcHJvcGVydHlFZGdlKTsKKyAgICAgICAgR1BSUmVn
IHByb3BlcnR5R1BSID0gcHJvcGVydHkuZ3ByKCk7CisgICAgICAgIHNwZWN1bGF0ZVN5bWJvbChw
cm9wZXJ0eUVkZ2UsIHByb3BlcnR5R1BSKTsKKworICAgICAgICB1c2VDaGlsZHJlbihub2RlKTsK
KworICAgICAgICBmbHVzaFJlZ2lzdGVycygpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvbkRlZmluZURhdGFQcm9wZXJ0eVN5bWJvbCwgTm9SZXN1bHQsIGJhc2VHUFIsIHByb3BlcnR5
R1BSLCB2YWx1ZUdQUiwgYXR0cmlidXRlcyk7CisgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNr
KCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIFVudHlwZWRVc2U6IHsKKyAgICAg
ICAgSlNWYWx1ZU9wZXJhbmQgcHJvcGVydHkodGhpcywgcHJvcGVydHlFZGdlKTsKKyAgICAgICAg
SlNWYWx1ZVJlZ3MgcHJvcGVydHlHUFIgPSBwcm9wZXJ0eS5ncHIoKTsKKworICAgICAgICB1c2VD
aGlsZHJlbihub2RlKTsKKworICAgICAgICBmbHVzaFJlZ2lzdGVycygpOworICAgICAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvbkRlZmluZURhdGFQcm9wZXJ0eSwgTm9SZXN1bHQsIGJhc2VHUFIs
IHByb3BlcnR5R1BSLCB2YWx1ZUdQUiwgYXR0cmlidXRlcyk7CisgICAgICAgIG1faml0LmV4Y2Vw
dGlvbkNoZWNrKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKworICAgIG5vUmVzdWx0KG5v
ZGUsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVEZWZpbmVBY2Nlc3NvclByb3BlcnR5KE5vZGUqIG5vZGUpCit7CisjaWYgVVNF
KEpTVkFMVUU2NCkKKyAgICBzdGF0aWNfYXNzZXJ0KEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJz
ID49IDUsICJXZSBhcmUgYXNzdW1pbmcgd2UgaGF2ZSBlbm91Z2ggcmVnaXN0ZXJzIHRvIG1ha2Ug
dGhpcyBjYWxsIHdpdGhvdXQgaW5jcmVtZW50YWxseSBzZXR0aW5nIHVwIHRoZSBhcmd1bWVudHMu
Iik7CisjZWxzZQorICAgIHN0YXRpY19hc3NlcnQoR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMg
Pj0gNiwgIldlIGFyZSBhc3N1bWluZyB3ZSBoYXZlIGVub3VnaCByZWdpc3RlcnMgdG8gbWFrZSB0
aGlzIGNhbGwgd2l0aG91dCBpbmNyZW1lbnRhbGx5IHNldHRpbmcgdXAgdGhlIGFyZ3VtZW50cy4i
KTsKKyNlbmRpZgorCisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBtX2ppdC5n
cmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIDApKTsKKyAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2Uu
Z3ByKCk7CisKKyAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBnZXR0ZXIodGhpcywgbV9qaXQuZ3Jh
cGgoKS52YXJBcmdDaGlsZChub2RlLCAyKSk7CisgICAgR1BSUmVnIGdldHRlckdQUiA9IGdldHRl
ci5ncHIoKTsKKworICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHNldHRlcih0aGlzLCBtX2ppdC5n
cmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIDMpKTsKKyAgICBHUFJSZWcgc2V0dGVyR1BSID0gc2V0
dGVyLmdwcigpOworCisgICAgU3BlY3VsYXRlSW50MzJPcGVyYW5kIGF0dHJpYnV0ZXModGhpcywg
bV9qaXQuZ3JhcGgoKS52YXJBcmdDaGlsZChub2RlLCA0KSk7CisgICAgR1BSUmVnIGF0dHJpYnV0
ZXNHUFIgPSBhdHRyaWJ1dGVzLmdwcigpOworCisgICAgRWRnZSYgcHJvcGVydHlFZGdlID0gbV9q
aXQuZ3JhcGgoKS52YXJBcmdDaGlsZChub2RlLCAxKTsKKyAgICBzd2l0Y2ggKHByb3BlcnR5RWRn
ZS51c2VLaW5kKCkpIHsKKyAgICBjYXNlIFN0cmluZ1VzZTogeworICAgICAgICBTcGVjdWxhdGVD
ZWxsT3BlcmFuZCBwcm9wZXJ0eSh0aGlzLCBwcm9wZXJ0eUVkZ2UpOworICAgICAgICBHUFJSZWcg
cHJvcGVydHlHUFIgPSBwcm9wZXJ0eS5ncHIoKTsKKyAgICAgICAgc3BlY3VsYXRlU3RyaW5nKHBy
b3BlcnR5RWRnZSwgcHJvcGVydHlHUFIpOworCisgICAgICAgIHVzZUNoaWxkcmVuKG5vZGUpOwor
CisgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0
aW9uRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eVN0cmluZywgTm9SZXN1bHQsIGJhc2VHUFIsIHByb3Bl
cnR5R1BSLCBnZXR0ZXJHUFIsIHNldHRlckdQUiwgYXR0cmlidXRlcyk7CisgICAgICAgIG1faml0
LmV4Y2VwdGlvbkNoZWNrKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIFN0cmlu
Z0lkZW50VXNlOiB7CisgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHByb3BlcnR5KHRoaXMs
IHByb3BlcnR5RWRnZSk7CisgICAgICAgIEdQUlRlbXBvcmFyeSBpZGVudCh0aGlzKTsKKworICAg
ICAgICBHUFJSZWcgcHJvcGVydHlHUFIgPSBwcm9wZXJ0eS5ncHIoKTsKKyAgICAgICAgR1BSUmVn
IGlkZW50R1BSID0gaWRlbnQuZ3ByKCk7CisKKyAgICAgICAgc3BlY3VsYXRlU3RyaW5nKHByb3Bl
cnR5RWRnZSwgcHJvcGVydHlHUFIpOworICAgICAgICBzcGVjdWxhdGVTdHJpbmdJZGVudEFuZExv
YWRTdG9yYWdlKHByb3BlcnR5RWRnZSwgcHJvcGVydHlHUFIsIGlkZW50R1BSKTsKKworICAgICAg
ICB1c2VDaGlsZHJlbihub2RlKTsKKworICAgICAgICBmbHVzaFJlZ2lzdGVycygpOworICAgICAg
ICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlZmluZUFjY2Vzc29yUHJvcGVydHlTdHJpbmdJZGVu
dCwgTm9SZXN1bHQsIGJhc2VHUFIsIGlkZW50R1BSLCBnZXR0ZXJHUFIsIHNldHRlckdQUiwgYXR0
cmlidXRlcyk7CisgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CisgICAgICAgIGJyZWFr
OworICAgIH0KKyAgICBjYXNlIFN5bWJvbFVzZTogeworICAgICAgICBTcGVjdWxhdGVDZWxsT3Bl
cmFuZCBwcm9wZXJ0eSh0aGlzLCBwcm9wZXJ0eUVkZ2UpOworICAgICAgICBHUFJSZWcgcHJvcGVy
dHlHUFIgPSBwcm9wZXJ0eS5ncHIoKTsKKyAgICAgICAgc3BlY3VsYXRlU3ltYm9sKHByb3BlcnR5
RWRnZSwgcHJvcGVydHlHUFIpOworCisgICAgICAgIHVzZUNoaWxkcmVuKG5vZGUpOworCisgICAg
ICAgIGZsdXNoUmVnaXN0ZXJzKCk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVm
aW5lQWNjZXNzb3JQcm9wZXJ0eVN5bWJvbCwgTm9SZXN1bHQsIGJhc2VHUFIsIHByb3BlcnR5R1BS
LCBnZXR0ZXJHUFIsIHNldHRlckdQUiwgYXR0cmlidXRlcyk7CisgICAgICAgIG1faml0LmV4Y2Vw
dGlvbkNoZWNrKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIFVudHlwZWRVc2U6
IHsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgcHJvcGVydHkodGhpcywgcHJvcGVydHlFZGdlKTsK
KyAgICAgICAgSlNWYWx1ZVJlZ3MgcHJvcGVydHlHUFIgPSBwcm9wZXJ0eS5qc1ZhbHVlUmVncygp
OworCisgICAgICAgIHVzZUNoaWxkcmVuKG5vZGUpOworCisgICAgICAgIGZsdXNoUmVnaXN0ZXJz
KCk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVmaW5lQWNjZXNzb3JQcm9wZXJ0
eSwgTm9SZXN1bHQsIGJhc2VHUFIsIHByb3BlcnR5R1BSLCBnZXR0ZXJHUFIsIHNldHRlckdQUiwg
YXR0cmlidXRlcyk7CisgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CisgICAgICAgIGJy
ZWFrOworICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgIH0KKworICAgIG5vUmVzdWx0KG5vZGUsIFVzZUNoaWxkcmVuQ2FsbGVkRXhw
bGljaXRseSk7Cit9CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKIAogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXggZTdhMjli
NDMzNDZiMjQ4MjNhOTk4OWZlZTk1ZDY0MDVjMzE4ZGE3My4uYzJhM2NkMDAwOGRkZTU4NjQ0Mzcy
N2NkNDZlMGNkOTg3Y2YyOGVhZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuaApAQCAtMTM0NCw2ICsxMzQ0LDQ2IEBAIGNsYXNzIFNwZWN1bGF0aXZl
SklUIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFy
ZzIsIGFyZzMsIGFyZzQpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOwog
ICAgIH0KKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9u
X0VPSkpaIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEpTVmFsdWVSZWdzIGFyZzIsIEpTVmFsdWVS
ZWdzIGFyZzMsIEdQUlJlZyBhcmc0KQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVu
dHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIucGF5bG9hZEdQUigpLCBhcmczLnBheWxvYWRHUFIo
KSwgYXJnNCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CisgICAgfQor
ICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRU9Kc3NK
WiBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgSlNWYWx1ZVJlZ3MgYXJnMywg
R1BSUmVnIGFyZzQpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoYXJnMSwgYXJnMiwgYXJnMy5wYXlsb2FkR1BSKCksIGFyZzQpOworICAgICAgICByZXR1
cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOworICAgIH0KKyAgICBKSVRDb21waWxlcjo6Q2FsbCBj
YWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VPSUpaIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEs
IEdQUlJlZyBhcmcyLCBKU1ZhbHVlUmVncyBhcmczLCBHUFJSZWcgYXJnNCkKKyAgICB7CisgICAg
ICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczLnBh
eWxvYWRHUFIoKSwgYXJnNCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7
CisgICAgfQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRp
b25fRU9TeW1KWiBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgSlNWYWx1ZVJl
Z3MgYXJnMywgR1BSUmVnIGFyZzQpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMy5wYXlsb2FkR1BSKCksIGFyZzQpOworICAg
ICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOworICAgIH0KKyAgICBKSVRDb21waWxl
cjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VPSk9PWiBvcGVyYXRpb24sIEdQ
UlJlZyBhcmcxLCBKU1ZhbHVlUmVncyBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVnIGFyZzQsIEdQ
UlJlZyBhcmc1KQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0
YXRlKGFyZzEsIGFyZzIucGF5bG9hZEdQUigpLCBhcmczLCBhcmc0LCBhcmc1KTsKKyAgICAgICAg
cmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKKyAgICB9CisgICAgSklUQ29tcGlsZXI6OkNh
bGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FT0pzc09PWiBvcGVyYXRpb24sIEdQUlJl
ZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMsIEdQUlJlZyBhcmc0LCBHUFJSZWcgYXJn
NSkKKyAgICB7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcx
LCBhcmcyLCBhcmczLCBhcmc0LCBhcmc1KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGwob3Bl
cmF0aW9uKTsKKyAgICB9CisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJ
VE9wZXJhdGlvbl9FT0lPT1ogb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQ
UlJlZyBhcmczLCBHUFJSZWcgYXJnNCwgR1BSUmVnIGFyZzUpCisgICAgeworICAgICAgICBtX2pp
dC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMywgYXJnNCwgYXJn
NSk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CisgICAgfQorICAgIEpJ
VENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRU9TeW1PT1ogb3Bl
cmF0aW9uLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcgYXJn
NCwgR1BSUmVnIGFyZzUpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMywgYXJnNCwgYXJnNSk7CisgICAgICAgIHJldHVybiBh
cHBlbmRDYWxsKG9wZXJhdGlvbik7CisgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxP
cGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRU9KSVVpIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEdQ
UlJlZyBhcmcyLCBVbmlxdWVkU3RyaW5nSW1wbCogaW1wbCwgdW5zaWduZWQgdmFsdWUpCiAgICAg
ewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwg
VHJ1c3RlZEltbVB0cihpbXBsKSwgVHJ1c3RlZEltbTMyKHZhbHVlKSk7CkBAIC0xNzg4LDcgKzE4
MjgsNDYgQEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoRUFCSV8zMkJJVF9EVU1NWV9BUkcgYXJnMS5wYXlsb2FkR1BSKCks
IGFyZzEudGFnR1BSKCksIGFyZzIucGF5bG9hZEdQUigpLCBhcmcyLnRhZ0dQUigpLCBhcmczLnBh
eWxvYWRHUFIoKSwgYXJnMy50YWdHUFIoKSwgYXJnNC5wYXlsb2FkR1BSKCksIGFyZzQudGFnR1BS
KCkpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOwogICAgIH0KLQorICAg
IEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRU9KSlogb3Bl
cmF0aW9uLCBHUFJSZWcgYXJnMSwgSlNWYWx1ZVJlZ3MgYXJnMiwgSlNWYWx1ZVJlZ3MgYXJnMywg
R1BSUmVnIGFyZzQpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoYXJnMSwgYXJnMi5wYXlsb2FkR1BSKCksIGFyZzIudGFnR1BSKCksIGFyZzMucGF5bG9h
ZEdQUigpLCBhcmczLnRhZ0dQUigpLCBhcmc0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGwo
b3BlcmF0aW9uKTsKKyAgICB9CisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihW
X0pJVE9wZXJhdGlvbl9FT0pzc0paIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcy
LCBKU1ZhbHVlUmVncyBhcmczLCBHUFJSZWcgYXJnNCkKKyAgICB7CisgICAgICAgIG1faml0LnNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBFQUJJXzMyQklUX0RVTU1ZX0FS
RyBhcmczLnBheWxvYWRHUFIoKSwgYXJnMy50YWdHUFIoKSwgYXJnNCk7CisgICAgICAgIHJldHVy
biBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CisgICAgfQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNh
bGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRU9JSlogb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwg
R1BSUmVnIGFyZzIsIEpTVmFsdWVSZWdzIGFyZzMsIEdQUlJlZyBhcmc0KQorICAgIHsKKyAgICAg
ICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIEVBQklfMzJC
SVRfRFVNTVlfQVJHIGFyZzMucGF5bG9hZEdQUigpLCBhcmczLnRhZ0dQUigpLCBhcmc0KTsKKyAg
ICAgICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKKyAgICB9CisgICAgSklUQ29tcGls
ZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FT1N5bUpaIG9wZXJhdGlvbiwg
R1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBKU1ZhbHVlUmVncyBhcmczLCBHUFJSZWcgYXJnNCkK
KyAgICB7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBh
cmcyLCBFQUJJXzMyQklUX0RVTU1ZX0FSRyBhcmczLnBheWxvYWRHUFIoKSwgYXJnMy50YWdHUFIo
KSwgYXJnNCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CisgICAgfQor
ICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRU9KT09a
IG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEpTVmFsdWVSZWdzIGFyZzIsIEdQUlJlZyBhcmczLCBH
UFJSZWcgYXJnNCwgR1BSUmVnIGFyZzUpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMi5wYXlsb2FkR1BSKCksIGFyZzIudGFnR1BSKCks
IGFyZzMsIGFyZzQsIGFyZzUpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24p
OworICAgIH0KKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0
aW9uX0VPSnNzT09aIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcg
YXJnMywgR1BSUmVnIGFyZzQsIEdQUlJlZyBhcmc1KQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMsIGFyZzQsIGFyZzUpOwor
ICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOworICAgIH0KKyAgICBKSVRDb21w
aWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VPSU9PWiBvcGVyYXRpb24s
IEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMsIEdQUlJlZyBhcmc0LCBHUFJS
ZWcgYXJnNSkKKyAgICB7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShhcmcxLCBhcmcyLCBhcmczLCBhcmc0LCBhcmc1KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENh
bGwob3BlcmF0aW9uKTsKKyAgICB9CisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlv
bihWX0pJVE9wZXJhdGlvbl9FT1N5bU9PWiBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBHUFJSZWcg
YXJnMiwgR1BSUmVnIGFyZzMsIEdQUlJlZyBhcmc0LCBHUFJSZWcgYXJnNSkKKyAgICB7CisgICAg
ICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczLCBh
cmc0LCBhcmc1KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKKyAgICB9
CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FT0pJ
VWkgb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgSlNWYWx1ZVJlZ3MgYXJnMiwgVW5pcXVlZFN0cmlu
Z0ltcGwqIGltcGwsIHVuc2lnbmVkIHZhbHVlKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIucGF5bG9hZEdQUigpLCBhcmcyLnRhZ0dQ
UigpLCBUcnVzdGVkSW1tUHRyKGltcGwpLCBUcnVzdGVkSW1tMzIodmFsdWUpKTsKQEAgLTI1Nzks
NiArMjY1OCw4IEBAIGNsYXNzIFNwZWN1bGF0aXZlSklUIHsKICAgICB2b2lkIGNvbXBpbGVHZXRE
eW5hbWljVmFyKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVQdXREeW5hbWljVmFyKE5vZGUqKTsK
ICAgICB2b2lkIGNvbXBpbGVDb21wYXJlRXFQdHIoTm9kZSopOworICAgIHZvaWQgY29tcGlsZURl
ZmluZURhdGFQcm9wZXJ0eShOb2RlKik7CisgICAgdm9pZCBjb21waWxlRGVmaW5lQWNjZXNzb3JQ
cm9wZXJ0eShOb2RlKik7CiAKICAgICB2b2lkIG1vdmVUcnVlVG8oR1BSUmVnKTsKICAgICB2b2lk
IG1vdmVGYWxzZVRvKEdQUlJlZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCBhMjJkYmVhZGU3MTA4Zjc1NTk2NjZi
OTNmOWFlYzdlZjUwYzEzOTViLi5hYTc4YjBlNjllNGJlYjg1ZTJlMjE2YzhlZjU1OWVhMWY3M2Fh
ZDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQzMl82NC5jcHAKQEAgLTQ0OTEsNiArNDQ5MSwxNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2Ug
RGVmaW5lRGF0YVByb3BlcnR5OiB7CisgICAgICAgIGNvbXBpbGVEZWZpbmVEYXRhUHJvcGVydHko
bm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGNhc2UgRGVmaW5lQWNjZXNzb3JQ
cm9wZXJ0eTogeworICAgICAgICBjb21waWxlRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eShub2RlKTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBHZXRHbG9iYWxMZXhpY2FsVmFyaWFi
bGU6CiAgICAgY2FzZSBHZXRHbG9iYWxWYXI6IHsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3Vs
dFBheWxvYWQodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDY0LmNwcAppbmRleCA4Y2Q1ZDcxMzhmMDdjZGRkYzJjMmU3MGQ2ZjZkZjNjMWZi
MWFkYjZlLi43MjEwOTI1MjNlYjM3ZmFjY2YyMjY4ZGJiZmU3ZjE5NGUzMzI1MDAzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAg
LTQ0NDksNiArNDQ0OSwxNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5v
ZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgRGVmaW5lRGF0YVByb3BlcnR5
OiB7CisgICAgICAgIGNvbXBpbGVEZWZpbmVEYXRhUHJvcGVydHkobm9kZSk7CisgICAgICAgIGJy
ZWFrOworICAgIH0KKworICAgIGNhc2UgRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eTogeworICAgICAg
ICBjb21waWxlRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eShub2RlKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorCiAgICAgY2FzZSBHZXRHbG9iYWxMZXhpY2FsVmFyaWFibGU6CiAgICAgY2FzZSBHZXRH
bG9iYWxWYXI6IHsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAppbmRleCBjYWQ0NWZkYmFi
ZTkwZjQ0OTM0ZDE0YTRiZTNiZDEwZmM4Mjc2NDQ5Li5hMWNmODA4ODUyM2JkZDM3Y2IyMGRmMDgx
YjRhMDFkZDFhYmMwZDY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TENhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBh
YmlsaXRpZXMuY3BwCkBAIC0yNjIsNiArMjYyLDggQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBj
YW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBDb21wYXJlR3JlYXRlcjoKICAgICBjYXNl
IENvbXBhcmVHcmVhdGVyRXE6CiAgICAgY2FzZSBDb21wYXJlU3RyaWN0RXE6CisgICAgY2FzZSBE
ZWZpbmVEYXRhUHJvcGVydHk6CisgICAgY2FzZSBEZWZpbmVBY2Nlc3NvclByb3BlcnR5OgogICAg
ICAgICAvLyBUaGVzZSBhcmUgT0suCiAgICAgICAgIGJyZWFrOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggOWY4ODViODcxMzgzOTIwYjli
ZDRmMzg1ZTk5MjI0NzJmOWYyMzA2Zi4uMWZmMTAzODJhMmU0YjQ1ZmI4OTM2MDFiYTgzMzE3N2Y2
ODliMDVlMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRG
R1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0Iz
LmNwcApAQCAtNjkwLDYgKzY5MCwxMiBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBj
YXNlIFB1dEJ5VmFsV2l0aFRoaXM6CiAgICAgICAgICAgICBjb21waWxlUHV0QnlWYWxXaXRoVGhp
cygpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRGVmaW5lRGF0YVByb3BlcnR5
OgorICAgICAgICAgICAgY29tcGlsZURlZmluZURhdGFQcm9wZXJ0eSgpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eToKKyAgICAgICAgICAg
IGNvbXBpbGVEZWZpbmVBY2Nlc3NvclByb3BlcnR5KCk7CisgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBBcnJheVB1c2g6CiAgICAgICAgICAgICBjb21waWxlQXJyYXlQdXNoKCk7CiAg
ICAgICAgICAgICBicmVhazsKQEAgLTI3NjEsNiArMjc2Nyw3MSBAQCBjbGFzcyBMb3dlckRGR1Rv
QjMgewogICAgICAgICB2bUNhbGwoVm9pZCwgbV9vdXQub3BlcmF0aW9uKG1fZ3JhcGguaXNTdHJp
Y3RNb2RlRm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKSA/IG9wZXJhdGlvblB1dEJ5VmFsV2l0
aFRoaXNTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbFdpdGhUaGlzKSwKICAgICAgICAgICAgIG1f
Y2FsbEZyYW1lLCBiYXNlLCB0aGlzVmFsdWUsIHByb3BlcnR5LCB2YWx1ZSk7CiAgICAgfQorCisg
ICAgdm9pZCBjb21waWxlRGVmaW5lRGF0YVByb3BlcnR5KCkKKyAgICB7CisgICAgICAgIExWYWx1
ZSBiYXNlID0gbG93Q2VsbChtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMCkpOworICAgICAg
ICBMVmFsdWUgdmFsdWUgID0gbG93SlNWYWx1ZShtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwg
MikpOworICAgICAgICBMVmFsdWUgYXR0cmlidXRlcyA9IGxvd0ludDMyKG1fZ3JhcGgudmFyQXJn
Q2hpbGQobV9ub2RlLCAzKSk7CisgICAgICAgIEVkZ2UmIHByb3BlcnR5RWRnZSA9IG1fZ3JhcGgu
dmFyQXJnQ2hpbGQobV9ub2RlLCAxKTsKKyAgICAgICAgc3dpdGNoIChwcm9wZXJ0eUVkZ2UudXNl
S2luZCgpKSB7CisgICAgICAgIGNhc2UgU3RyaW5nVXNlOiB7CisgICAgICAgICAgICBMVmFsdWUg
cHJvcGVydHkgPSBsb3dTdHJpbmcocHJvcGVydHlFZGdlKTsKKyAgICAgICAgICAgIHZtQ2FsbChW
b2lkLCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uRGVmaW5lRGF0YVByb3BlcnR5U3RyaW5nKSwg
bV9jYWxsRnJhbWUsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSwgYXR0cmlidXRlcyk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFN0cmluZ0lkZW50VXNlOiB7Cisg
ICAgICAgICAgICBMVmFsdWUgcHJvcGVydHkgPSBsb3dTdHJpbmdJZGVudChwcm9wZXJ0eUVkZ2Up
OworICAgICAgICAgICAgdm1DYWxsKFZvaWQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25EZWZp
bmVEYXRhUHJvcGVydHlTdHJpbmdJZGVudCksIG1fY2FsbEZyYW1lLCBiYXNlLCBwcm9wZXJ0eSwg
dmFsdWUsIGF0dHJpYnV0ZXMpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAg
ICAgY2FzZSBTeW1ib2xVc2U6IHsKKyAgICAgICAgICAgIExWYWx1ZSBwcm9wZXJ0eSA9IGxvd1N5
bWJvbChwcm9wZXJ0eUVkZ2UpOworICAgICAgICAgICAgdm1DYWxsKFZvaWQsIG1fb3V0Lm9wZXJh
dGlvbihvcGVyYXRpb25EZWZpbmVEYXRhUHJvcGVydHlTeW1ib2wpLCBtX2NhbGxGcmFtZSwgYmFz
ZSwgcHJvcGVydHksIHZhbHVlLCBhdHRyaWJ1dGVzKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisgICAgICAgIGNhc2UgVW50eXBlZFVzZTogeworICAgICAgICAgICAgTFZhbHVlIHBy
b3BlcnR5ID0gbG93SlNWYWx1ZShwcm9wZXJ0eUVkZ2UpOworICAgICAgICAgICAgdm1DYWxsKFZv
aWQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25EZWZpbmVEYXRhUHJvcGVydHkpLCBtX2NhbGxG
cmFtZSwgYmFzZSwgcHJvcGVydHksIHZhbHVlLCBhdHRyaWJ1dGVzKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBjb21waWxl
RGVmaW5lQWNjZXNzb3JQcm9wZXJ0eSgpCisgICAgeworICAgICAgICBMVmFsdWUgYmFzZSA9IGxv
d0NlbGwobV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDApKTsKKyAgICAgICAgTFZhbHVlIGdl
dHRlciA9IGxvd0NlbGwobV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDIpKTsKKyAgICAgICAg
TFZhbHVlIHNldHRlciA9IGxvd0NlbGwobV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDMpKTsK
KyAgICAgICAgTFZhbHVlIGF0dHJpYnV0ZXMgPSBsb3dJbnQzMihtX2dyYXBoLnZhckFyZ0NoaWxk
KG1fbm9kZSwgNCkpOworICAgICAgICBFZGdlJiBwcm9wZXJ0eUVkZ2UgPSBtX2dyYXBoLnZhckFy
Z0NoaWxkKG1fbm9kZSwgMSk7CisgICAgICAgIHN3aXRjaCAocHJvcGVydHlFZGdlLnVzZUtpbmQo
KSkgeworICAgICAgICBjYXNlIFN0cmluZ1VzZTogeworICAgICAgICAgICAgTFZhbHVlIHByb3Bl
cnR5ID0gbG93U3RyaW5nKHByb3BlcnR5RWRnZSk7CisgICAgICAgICAgICB2bUNhbGwoVm9pZCwg
bV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkRlZmluZUFjY2Vzc29yUHJvcGVydHlTdHJpbmcpLCBt
X2NhbGxGcmFtZSwgYmFzZSwgcHJvcGVydHksIGdldHRlciwgc2V0dGVyLCBhdHRyaWJ1dGVzKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgU3RyaW5nSWRlbnRV
c2U6IHsKKyAgICAgICAgICAgIExWYWx1ZSBwcm9wZXJ0eSA9IGxvd1N0cmluZ0lkZW50KHByb3Bl
cnR5RWRnZSk7CisgICAgICAgICAgICB2bUNhbGwoVm9pZCwgbV9vdXQub3BlcmF0aW9uKG9wZXJh
dGlvbkRlZmluZUFjY2Vzc29yUHJvcGVydHlTdHJpbmdJZGVudCksIG1fY2FsbEZyYW1lLCBiYXNl
LCBwcm9wZXJ0eSwgZ2V0dGVyLCBzZXR0ZXIsIGF0dHJpYnV0ZXMpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBTeW1ib2xVc2U6IHsKKyAgICAgICAgICAgIExW
YWx1ZSBwcm9wZXJ0eSA9IGxvd1N5bWJvbChwcm9wZXJ0eUVkZ2UpOworICAgICAgICAgICAgdm1D
YWxsKFZvaWQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25EZWZpbmVBY2Nlc3NvclByb3BlcnR5
U3ltYm9sKSwgbV9jYWxsRnJhbWUsIGJhc2UsIHByb3BlcnR5LCBnZXR0ZXIsIHNldHRlciwgYXR0
cmlidXRlcyk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFVu
dHlwZWRVc2U6IHsKKyAgICAgICAgICAgIExWYWx1ZSBwcm9wZXJ0eSA9IGxvd0pTVmFsdWUocHJv
cGVydHlFZGdlKTsKKyAgICAgICAgICAgIHZtQ2FsbChWb2lkLCBtX291dC5vcGVyYXRpb24ob3Bl
cmF0aW9uRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eSksIG1fY2FsbEZyYW1lLCBiYXNlLCBwcm9wZXJ0
eSwgZ2V0dGVyLCBzZXR0ZXIsIGF0dHJpYnV0ZXMpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgIH0KKyAgICB9CiAgICAgCiAgICAgdm9pZCBjb21waWxlUHV0QnlJ
ZCgpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhl
bHBlcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuY3BwCmlu
ZGV4IDc1ZDE1YTYyM2M3MmM0NGFkYzRhNGI5YzEzZjg1ODZmMjcyMjZiODUuLjNjM2RmNjE4Zjk5
ZmViOTQxNTQ0MDA5OTg1NWRlMWZiYWY1Y2I5ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0NDYWxsSGVscGVycy5jcHAKQEAgLTY4LDEwNyArNjgsNiBAQCB2b2lkIENDYWxsSGVscGVy
czo6ZW5zdXJlU2hhZG93Q2hpY2tlblBhY2tldChHUFJSZWcgc2hhZG93UGFja2V0LCBHUFJSZWcg
c2NyYXRjaAogICAgIHN0b3JlUHRyKHNjcmF0Y2gyLCBBZGRyZXNzKHNjcmF0Y2gxTm9uQXJnR1BS
KSk7CiB9CiAKLSNpZiBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTID49IDQKLXZvaWQgQ0Nh
bGxIZWxwZXJzOjpzZXR1cEZvdXJTdHViQXJnc0dQUihHUFJSZWcgZGVzdEEsIEdQUlJlZyBkZXN0
QiwgR1BSUmVnIGRlc3RDLCBHUFJSZWcgZGVzdEQsIEdQUlJlZyBzcmNBLCBHUFJSZWcgc3JjQiwg
R1BSUmVnIHNyY0MsIEdQUlJlZyBzcmNEKQotewotICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7
Ci0gICAgICAgIFJlZ2lzdGVyU2V0IGRlc3RpbmF0aW9ucyhkZXN0QSwgZGVzdEIsIGRlc3RDLCBk
ZXN0RCk7Ci0gICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoZGVzdGluYXRpb25zLm51bWJlck9m
U2V0R1BScygpID09IDQsICJEZXN0aW5hdGlvbnMgc2hvdWxkIG5vdCBiZSBhbGlhc2VkLiIpOwot
ICAgIH0KLQotICAgIHR5cGVkZWYgc3RkOjpwYWlyPEdQUlJlZywgR1BSUmVnPiBSZWdQYWlyOwot
ICAgIFZlY3RvcjxSZWdQYWlyLCA0PiBwYWlyczsKLQotICAgIGlmIChzcmNBICE9IGRlc3RBKQot
ICAgICAgICBwYWlycy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoc3JjQSwgZGVzdEEpKTsKLSAgICBp
ZiAoc3JjQiAhPSBkZXN0QikKLSAgICAgICAgcGFpcnMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKHNy
Y0IsIGRlc3RCKSk7Ci0gICAgaWYgKHNyY0MgIT0gZGVzdEMpCi0gICAgICAgIHBhaXJzLmFwcGVu
ZChzdGQ6Om1ha2VfcGFpcihzcmNDLCBkZXN0QykpOwotICAgIGlmIChzcmNEICE9IGRlc3REKQot
ICAgICAgICBwYWlycy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoc3JjRCwgZGVzdEQpKTsKLQotCi0j
aWYgIUFTU0VSVF9ESVNBQkxFRAotICAgIGF1dG8gbnVtVW5pcXVlU291cmNlcyA9IFsmXSAoKSAt
PiB1bnNpZ25lZCB7Ci0gICAgICAgIFJlZ2lzdGVyU2V0IHNldDsKLSAgICAgICAgZm9yIChhdXRv
JiBwYWlyIDogcGFpcnMpIHsKLSAgICAgICAgICAgIEdQUlJlZyBzb3VyY2UgPSBwYWlyLmZpcnN0
OwotICAgICAgICAgICAgc2V0LnNldChzb3VyY2UpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVy
biBzZXQubnVtYmVyT2ZTZXRHUFJzKCk7Ci0gICAgfTsKLQotICAgIGF1dG8gbnVtVW5pcXVlRGVz
dHMgPSBbJl0gKCkgLT4gdW5zaWduZWQgewotICAgICAgICBSZWdpc3RlclNldCBzZXQ7Ci0gICAg
ICAgIGZvciAoYXV0byYgcGFpciA6IHBhaXJzKSB7Ci0gICAgICAgICAgICBHUFJSZWcgZGVzdCA9
IHBhaXIuc2Vjb25kOwotICAgICAgICAgICAgc2V0LnNldChkZXN0KTsKLSAgICAgICAgfQotICAg
ICAgICByZXR1cm4gc2V0Lm51bWJlck9mU2V0R1BScygpOwotICAgIH07Ci0jZW5kaWYKLQotICAg
IHdoaWxlIChwYWlycy5zaXplKCkpIHsKLSAgICAgICAgUmVnaXN0ZXJTZXQgZnJlZURlc3RpbmF0
aW9uczsKLSAgICAgICAgZm9yIChhdXRvJiBwYWlyIDogcGFpcnMpIHsKLSAgICAgICAgICAgIEdQ
UlJlZyBkZXN0ID0gcGFpci5zZWNvbmQ7Ci0gICAgICAgICAgICBmcmVlRGVzdGluYXRpb25zLnNl
dChkZXN0KTsKLSAgICAgICAgfQotICAgICAgICBmb3IgKGF1dG8mIHBhaXIgOiBwYWlycykgewot
ICAgICAgICAgICAgR1BSUmVnIHNvdXJjZSA9IHBhaXIuZmlyc3Q7Ci0gICAgICAgICAgICBmcmVl
RGVzdGluYXRpb25zLmNsZWFyKHNvdXJjZSk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoZnJl
ZURlc3RpbmF0aW9ucy5udW1iZXJPZlNldEdQUnMoKSkgewotICAgICAgICAgICAgYm9vbCBtYWRl
TW92ZSA9IGZhbHNlOwotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBhaXJz
LnNpemUoKTsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgYXV0byYgcGFpciA9IHBhaXJzW2ldOwot
ICAgICAgICAgICAgICAgIEdQUlJlZyBzb3VyY2UgPSBwYWlyLmZpcnN0OwotICAgICAgICAgICAg
ICAgIEdQUlJlZyBkZXN0ID0gcGFpci5zZWNvbmQ7Ci0gICAgICAgICAgICAgICAgaWYgKGZyZWVE
ZXN0aW5hdGlvbnMuZ2V0KGRlc3QpKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1vdmUoc291cmNl
LCBkZXN0KTsKLSAgICAgICAgICAgICAgICAgICAgcGFpcnMucmVtb3ZlKGkpOwotICAgICAgICAg
ICAgICAgICAgICBtYWRlTW92ZSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIEFTU0VSVF9VTlVT
RUQobWFkZU1vdmUsIG1hZGVNb3ZlKTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9
Ci0KLSAgICAgICAgQVNTRVJUKG51bVVuaXF1ZURlc3RzKCkgPT0gbnVtVW5pcXVlU291cmNlcygp
KTsKLSAgICAgICAgQVNTRVJUKG51bVVuaXF1ZURlc3RzKCkgPT0gcGFpcnMuc2l6ZSgpKTsKLSAg
ICAgICAgLy8gVGhlIHNldCBvZiBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIHJlZ2lzdGVycyBhcmUg
ZXF1aXZhbGVudCBzZXRzLiBUaGlzIG1lYW5zIHdlIGRvbid0IGhhdmUKLSAgICAgICAgLy8gYW55
IGZyZWUgZGVzdGluYXRpb24gcmVnaXN0ZXJzIHRoYXQgd29uJ3QgYWxzbyBjbG9iYmVyIGEgc291
cmNlLiBXZSBnZXQgYXJvdW5kIHRoaXMgYnkKLSAgICAgICAgLy8gZXhjaGFuZ2luZyByZWdpc3Rl
cnMuCi0KLSAgICAgICAgR1BSUmVnIHNvdXJjZSA9IHBhaXJzWzBdLmZpcnN0OwotICAgICAgICBH
UFJSZWcgZGVzdCA9IHBhaXJzWzBdLnNlY29uZDsKLSAgICAgICAgc3dhcChzb3VyY2UsIGRlc3Qp
OwotICAgICAgICBwYWlycy5yZW1vdmUoMCk7Ci0KLSAgICAgICAgR1BSUmVnIG5ld1NvdXJjZSA9
IHNvdXJjZTsKLSAgICAgICAgZm9yIChhdXRvJiBwYWlyIDogcGFpcnMpIHsKLSAgICAgICAgICAg
IEdQUlJlZyBzb3VyY2UgPSBwYWlyLmZpcnN0OwotICAgICAgICAgICAgaWYgKHNvdXJjZSA9PSBk
ZXN0KSB7Ci0gICAgICAgICAgICAgICAgcGFpci5maXJzdCA9IG5ld1NvdXJjZTsKLSAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIC8vIFdl
IG1heSBoYXZlIGludHJvZHVjZWQgcGFpcnMgdGhhdCBoYXZlIHRoZSBzYW1lIHNvdXJjZSBhbmQg
ZGVzdGluYXRpb24uIFJlbW92ZSB0aG9zZSBub3cuCi0gICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBwYWlycy5zaXplKCk7IGkrKykgewotICAgICAgICAgICAgYXV0byYgcGFpciA9IHBh
aXJzW2ldOwotICAgICAgICAgICAgaWYgKHBhaXIuZmlyc3QgPT0gcGFpci5zZWNvbmQpIHsKLSAg
ICAgICAgICAgICAgICBwYWlycy5yZW1vdmUoaSk7Ci0gICAgICAgICAgICAgICAgaS0tOwotICAg
ICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotfQotI2VuZGlmIC8vIE5VTUJFUl9PRl9BUkdV
TUVOVF9SRUdJU1RFUlMgPj0gNAotCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEVO
QUJMRShKSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVs
cGVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAppbmRleCA3
OTQ1NDZiMGJkMjdhOTljMGMxOTg5YmUyZTQxMzE0MzRkYTQ4ZmFlLi5lYThlY2RlYTI5Mjg4Yjcw
MTZjYzRlODQyNzNmZTMyOGQ4NWU2NzgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0NDYWxsSGVscGVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0Nh
bGxIZWxwZXJzLmgKQEAgLTk4Nyw3ICs5ODcsMTQgQEAgY2xhc3MgQ0NhbGxIZWxwZXJzIDogcHVi
bGljIEFzc2VtYmx5SGVscGVycyB7CiAgICAgICAgICAgICBzd2FwKGRlc3RCLCBkZXN0Qyk7CiAg
ICAgfQogCi0gICAgdm9pZCBzZXR1cEZvdXJTdHViQXJnc0dQUihHUFJSZWcgZGVzdEEsIEdQUlJl
ZyBkZXN0QiwgR1BSUmVnIGRlc3RDLCBHUFJSZWcgZGVzdEQsIEdQUlJlZyBzcmNBLCBHUFJSZWcg
c3JjQiwgR1BSUmVnIHNyY0MsIEdQUlJlZyBzcmNEKTsKKyAgICB2b2lkIHNldHVwRm91clN0dWJB
cmdzR1BSKEdQUlJlZyBkZXN0QSwgR1BSUmVnIGRlc3RCLCBHUFJSZWcgZGVzdEMsIEdQUlJlZyBk
ZXN0RCwgR1BSUmVnIHNyY0EsIEdQUlJlZyBzcmNCLCBHUFJSZWcgc3JjQywgR1BSUmVnIHNyY0Qp
CisgICAgeworICAgICAgICBzZXR1cFN0dWJBcmdzR1BSPDQ+KHsgeyBkZXN0QSwgZGVzdEIsIGRl
c3RDLCBkZXN0RCB9IH0sIHsgeyBzcmNBLCBzcmNCLCBzcmNDLCBzcmNEIH0gfSk7CisgICAgfQor
ICAgIHZvaWQgc2V0dXBGaXZlU3R1YkFyZ3NHUFIoR1BSUmVnIGRlc3RBLCBHUFJSZWcgZGVzdEIs
IEdQUlJlZyBkZXN0QywgR1BSUmVnIGRlc3RELCBHUFJSZWcgZGVzdEUsIEdQUlJlZyBzcmNBLCBH
UFJSZWcgc3JjQiwgR1BSUmVnIHNyY0MsIEdQUlJlZyBzcmNELCBHUFJSZWcgc3JjRSkKKyAgICB7
CisgICAgICAgIHNldHVwU3R1YkFyZ3NHUFI8NT4oeyB7IGRlc3RBLCBkZXN0QiwgZGVzdEMsIGRl
c3RELCBkZXN0RSB9IH0sIHsgeyBzcmNBLCBzcmNCLCBzcmNDLCBzcmNELCBzcmNFIH0gfSk7Cisg
ICAgfQogCiAjaWYgQ1BVKFg4Nl82NCkgfHwgQ1BVKEFSTTY0KQogICAgIHRlbXBsYXRlPEZQUlJl
ZyBkZXN0QSwgRlBSUmVnIGRlc3RCPgpAQCAtMjE4NCw2ICsyMTkxLDEyIEBAIGNsYXNzIENDYWxs
SGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewogICAgICAgICBtb3ZlKEdQUkluZm86
OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwogICAgIH0KIAorICAg
IEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFy
ZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVnIGFyZzQsIEdQUlJlZyBhcmc1KQor
ICAgIHsKKyAgICAgICAgc2V0dXBGaXZlU3R1YkFyZ3NHUFIoR1BSSW5mbzo6YXJndW1lbnRHUFIx
LCBHUFJJbmZvOjphcmd1bWVudEdQUjIsIEdQUkluZm86OmFyZ3VtZW50R1BSMywgR1BSSW5mbzo6
YXJndW1lbnRHUFI0LCBHUFJJbmZvOjphcmd1bWVudEdQUjUsIGFyZzEsIGFyZzIsIGFyZzMsIGFy
ZzQsIGFyZzUpOworICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjApOworICAgIH0KKwogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIFRydXN0ZWRJbW1QdHIgYXJnMiwg
R1BSUmVnIGFyZzMsIEdQUlJlZyBhcmc0KQogICAgIHsKICAgICAgICAgc2V0dXBTdHViQXJndW1l
bnRzMTM0KGFyZzEsIGFyZzMsIGFyZzQpOwpAQCAtMjQ3Miw2ICsyNDg1LDEwNSBAQCBjbGFzcyBD
Q2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJzIHsKICAgICAgICAgLy8gUmVhZHkg
Zm9yIGEganVtcCEKICAgICAgICAgbW92ZShuZXdGcmFtZVBvaW50ZXIsIHN0YWNrUG9pbnRlclJl
Z2lzdGVyKTsKICAgICB9CisKKyNpZiBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTID49IDQK
KyAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBOdW1iZXJPZlJlZ2lzdGVycz4KKyAgICB2b2lkIHNldHVw
U3R1YkFyZ3NHUFIoc3RkOjphcnJheTxHUFJSZWcsIE51bWJlck9mUmVnaXN0ZXJzPiBkZXN0aW5h
dGlvbnMsIHN0ZDo6YXJyYXk8R1BSUmVnLCBOdW1iZXJPZlJlZ2lzdGVycz4gc291cmNlcykKKyAg
ICB7CisgICAgICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7CisgICAgICAgICAgICBSZWdpc3Rl
clNldCBzZXQ7CisgICAgICAgICAgICBmb3IgKEdQUlJlZyBkZXN0IDogZGVzdGluYXRpb25zKQor
ICAgICAgICAgICAgICAgIHNldC5zZXQoZGVzdCk7CisgICAgICAgICAgICBBU1NFUlRfV0lUSF9N
RVNTQUdFKHNldC5udW1iZXJPZlNldEdQUnMoKSA9PSA0LCAiRGVzdGluYXRpb25zIHNob3VsZCBu
b3QgYmUgYWxpYXNlZC4iKTsKKyAgICAgICAgfQorCisgICAgICAgIHR5cGVkZWYgc3RkOjpwYWly
PEdQUlJlZywgR1BSUmVnPiBSZWdQYWlyOworICAgICAgICBWZWN0b3I8UmVnUGFpciwgTnVtYmVy
T2ZSZWdpc3RlcnM+IHBhaXJzOworCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBO
dW1iZXJPZlJlZ2lzdGVyczsgKytpKSB7CisgICAgICAgICAgICBpZiAoc291cmNlc1tpXSAhPSBk
ZXN0aW5hdGlvbnNbaV0pCisgICAgICAgICAgICAgICAgcGFpcnMuYXBwZW5kKHN0ZDo6bWFrZV9w
YWlyKHNvdXJjZXNbaV0sIGRlc3RpbmF0aW9uc1tpXSkpOworICAgICAgICB9CisKKyNpZiAhQVNT
RVJUX0RJU0FCTEVECisgICAgICAgIGF1dG8gbnVtVW5pcXVlU291cmNlcyA9IFsmXSAoKSAtPiB1
bnNpZ25lZCB7CisgICAgICAgICAgICBSZWdpc3RlclNldCBzZXQ7CisgICAgICAgICAgICBmb3Ig
KGF1dG8mIHBhaXIgOiBwYWlycykgeworICAgICAgICAgICAgICAgIEdQUlJlZyBzb3VyY2UgPSBw
YWlyLmZpcnN0OworICAgICAgICAgICAgICAgIHNldC5zZXQoc291cmNlKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIHJldHVybiBzZXQubnVtYmVyT2ZTZXRHUFJzKCk7CisgICAgICAgIH07
CisKKyAgICAgICAgYXV0byBudW1VbmlxdWVEZXN0cyA9IFsmXSAoKSAtPiB1bnNpZ25lZCB7Cisg
ICAgICAgICAgICBSZWdpc3RlclNldCBzZXQ7CisgICAgICAgICAgICBmb3IgKGF1dG8mIHBhaXIg
OiBwYWlycykgeworICAgICAgICAgICAgICAgIEdQUlJlZyBkZXN0ID0gcGFpci5zZWNvbmQ7Cisg
ICAgICAgICAgICAgICAgc2V0LnNldChkZXN0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IHJldHVybiBzZXQubnVtYmVyT2ZTZXRHUFJzKCk7CisgICAgICAgIH07CisjZW5kaWYKKworICAg
ICAgICB3aGlsZSAocGFpcnMuc2l6ZSgpKSB7CisgICAgICAgICAgICBSZWdpc3RlclNldCBmcmVl
RGVzdGluYXRpb25zOworICAgICAgICAgICAgZm9yIChhdXRvJiBwYWlyIDogcGFpcnMpIHsKKyAg
ICAgICAgICAgICAgICBHUFJSZWcgZGVzdCA9IHBhaXIuc2Vjb25kOworICAgICAgICAgICAgICAg
IGZyZWVEZXN0aW5hdGlvbnMuc2V0KGRlc3QpOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
Zm9yIChhdXRvJiBwYWlyIDogcGFpcnMpIHsKKyAgICAgICAgICAgICAgICBHUFJSZWcgc291cmNl
ID0gcGFpci5maXJzdDsKKyAgICAgICAgICAgICAgICBmcmVlRGVzdGluYXRpb25zLmNsZWFyKHNv
dXJjZSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChmcmVlRGVzdGluYXRpb25z
Lm51bWJlck9mU2V0R1BScygpKSB7CisgICAgICAgICAgICAgICAgYm9vbCBtYWRlTW92ZSA9IGZh
bHNlOworICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwYWlycy5zaXpl
KCk7IGkrKykgeworICAgICAgICAgICAgICAgICAgICBhdXRvJiBwYWlyID0gcGFpcnNbaV07Cisg
ICAgICAgICAgICAgICAgICAgIEdQUlJlZyBzb3VyY2UgPSBwYWlyLmZpcnN0OworICAgICAgICAg
ICAgICAgICAgICBHUFJSZWcgZGVzdCA9IHBhaXIuc2Vjb25kOworICAgICAgICAgICAgICAgICAg
ICBpZiAoZnJlZURlc3RpbmF0aW9ucy5nZXQoZGVzdCkpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIG1vdmUoc291cmNlLCBkZXN0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhaXJzLnJl
bW92ZShpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1hZGVNb3ZlID0gdHJ1ZTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQobWFkZU1vdmUsIG1hZGVN
b3ZlKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgQVNTRVJUKG51bVVuaXF1ZURlc3RzKCkgPT0gbnVtVW5pcXVlU291cmNlcygpKTsKKyAg
ICAgICAgICAgIEFTU0VSVChudW1VbmlxdWVEZXN0cygpID09IHBhaXJzLnNpemUoKSk7CisgICAg
ICAgICAgICAvLyBUaGUgc2V0IG9mIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gcmVnaXN0ZXJzIGFy
ZSBlcXVpdmFsZW50IHNldHMuIFRoaXMgbWVhbnMgd2UgZG9uJ3QgaGF2ZQorICAgICAgICAgICAg
Ly8gYW55IGZyZWUgZGVzdGluYXRpb24gcmVnaXN0ZXJzIHRoYXQgd29uJ3QgYWxzbyBjbG9iYmVy
IGEgc291cmNlLiBXZSBnZXQgYXJvdW5kIHRoaXMgYnkKKyAgICAgICAgICAgIC8vIGV4Y2hhbmdp
bmcgcmVnaXN0ZXJzLgorCisgICAgICAgICAgICBHUFJSZWcgc291cmNlID0gcGFpcnNbMF0uZmly
c3Q7CisgICAgICAgICAgICBHUFJSZWcgZGVzdCA9IHBhaXJzWzBdLnNlY29uZDsKKyAgICAgICAg
ICAgIHN3YXAoc291cmNlLCBkZXN0KTsKKyAgICAgICAgICAgIHBhaXJzLnJlbW92ZSgwKTsKKwor
ICAgICAgICAgICAgR1BSUmVnIG5ld1NvdXJjZSA9IHNvdXJjZTsKKyAgICAgICAgICAgIGZvciAo
YXV0byYgcGFpciA6IHBhaXJzKSB7CisgICAgICAgICAgICAgICAgR1BSUmVnIHNvdXJjZSA9IHBh
aXIuZmlyc3Q7CisgICAgICAgICAgICAgICAgaWYgKHNvdXJjZSA9PSBkZXN0KSB7CisgICAgICAg
ICAgICAgICAgICAgIHBhaXIuZmlyc3QgPSBuZXdTb3VyY2U7CisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
Ly8gV2UgbWF5IGhhdmUgaW50cm9kdWNlZCBwYWlycyB0aGF0IGhhdmUgdGhlIHNhbWUgc291cmNl
IGFuZCBkZXN0aW5hdGlvbi4gUmVtb3ZlIHRob3NlIG5vdy4KKyAgICAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBwYWlycy5zaXplKCk7IGkrKykgeworICAgICAgICAgICAgICAgIGF1
dG8mIHBhaXIgPSBwYWlyc1tpXTsKKyAgICAgICAgICAgICAgICBpZiAocGFpci5maXJzdCA9PSBw
YWlyLnNlY29uZCkgeworICAgICAgICAgICAgICAgICAgICBwYWlycy5yZW1vdmUoaSk7CisgICAg
ICAgICAgICAgICAgICAgIGktLTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICB9CisjZW5kaWYgLy8gTlVNQkVSX09GX0FSR1VNRU5UX1JFR0lTVEVSUyA+
PSA0CiAgICAgCiAgICAgLy8gVGhlc2Ugb3BlcmF0aW9ucyBjbG9iYmVyIGFsbCB2b2xhdGlsZSBy
ZWdpc3RlcnMuIFRoZXkgYXNzdW1lIHRoYXQgdGhlcmUgaXMgcm9vbSBvbiB0aGUgdG9wIG9mCiAg
ICAgLy8gc3RhY2sgdG8gbWFyc2hhbGwgY2FsbCBhcmd1bWVudHMuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5jcHAKaW5kZXggMWFiZTdjNDM0MTc0NjNmOTY5MTY1MjlhNmU2MTRlZGUwOWM3ZmQzOS4u
MjM3ZDE5YTRiMDgyZjFjYjBlMDJjMmVhNTc3Y2MxY2MzMTA3OTQzMSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmNwcApAQCAtMzIyLDYgKzMyMiw4IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGls
ZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9nZXR0ZXJfc2V0dGVyX2J5X2lk
KQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2dldHRlcl9ieV92YWwpCiAgICAgICAgIERFRklO
RV9PUChvcF9wdXRfc2V0dGVyX2J5X3ZhbCkKKyAgICAgICAgREVGSU5FX09QKG9wX2RlZmluZV9k
YXRhX3Byb3BlcnR5KQorICAgICAgICBERUZJTkVfT1Aob3BfZGVmaW5lX2FjY2Vzc29yX3Byb3Bl
cnR5KQogCiAgICAgICAgIERFRklORV9PUChvcF9yZXQpCiAgICAgICAgIERFRklORV9PUChvcF9y
c2hpZnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCBhMTRhODU2YTA3YmQyNWFhZDdjY2Uw
ZDNiODQwZWUyNzNlZWNkZmM1Li40NTFhMjBkNTY0MTM4ZWNiZDc1YzRkZDMyYWQ0ZGNmYTY0NjI2
NjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTU2Nyw2ICs1NjcsOCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9nZXR0ZXJfc2V0dGVyX2J5X2lkKElu
c3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfZ2V0dGVyX2J5X3ZhbChJbnN0
cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X3NldHRlcl9ieV92YWwoSW5zdHJ1
Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2RlZmluZV9kYXRhX3Byb3BlcnR5KEluc3Ry
dWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9kZWZpbmVfYWNjZXNzb3JfcHJvcGVydHko
SW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3JldChJbnN0cnVjdGlvbiopOwog
ICAgICAgICB2b2lkIGVtaXRfb3BfcnNoaWZ0KEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQg
ZW1pdF9vcF9zZXRfZnVuY3Rpb25fbmFtZShJbnN0cnVjdGlvbiopOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAppbmRleCA5MzVjNGZhYjE5ZDJkNzc5YTUwZWI0ZTc3
ZjM1MTg2MWIyMTFhM2Y2Li40N2ZlOTU3M2ZhZDc1NmEyNjI2NzQ4MWZkNmFjZWFiODZlOTNlNTI4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaApAQCAtNTksNiAr
NTksNyBAQCBjbGFzcyBSZWdFeHBPYmplY3Q7CiBjbGFzcyBSZWdpc3RlcjsKIGNsYXNzIFN0cnVj
dHVyZTsKIGNsYXNzIFN0cnVjdHVyZVN0dWJJbmZvOworY2xhc3MgU3ltYm9sOwogY2xhc3MgU3lt
Ym9sVGFibGU7CiBjbGFzcyBXYXRjaHBvaW50U2V0OwogCkBAIC0xMTEsNiArMTEyLDcgQEAgdHlw
ZWRlZiBjaGFyKiBVbnVzZWRQdHI7CiAgICAgU3NpOiBTdHJ1Y3R1cmVTdHViSW5mbyoKICAgICBT
dDogU3RydWN0dXJlKgogICAgIFN5bXRhYjogU3ltYm9sVGFibGUqCisgICAgU3ltOiBTeW1ib2wq
CiAgICAgVDogU3RyaW5nSW1wbCoKICAgICBWOiB2b2lkCiAgICAgVm06IFZNKgpAQCAtMjY5LDYg
KzI3MSwxNCBAQCB0eXBlZGVmIHZvaWQgKEpJVF9PUEVSQVRJT04gKlZfSklUT3BlcmF0aW9uX0VQ
WkopKEV4ZWNTdGF0ZSosIHZvaWQqLCBpbnQzMl90LCBFbgogdHlwZWRlZiB2b2lkIChKSVRfT1BF
UkFUSU9OICpWX0pJVE9wZXJhdGlvbl9FU3NpSkpJKShFeGVjU3RhdGUqLCBTdHJ1Y3R1cmVTdHVi
SW5mbyosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgVW5pcXVlZFN0cmluZ0ltcGwq
KTsKIHR5cGVkZWYgdm9pZCAoSklUX09QRVJBVElPTiAqVl9KSVRPcGVyYXRpb25fRUpKSkkpKEV4
ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUs
IFVuaXF1ZWRTdHJpbmdJbXBsKik7CiB0eXBlZGVmIHZvaWQgKEpJVF9PUEVSQVRJT04gKlZfSklU
T3BlcmF0aW9uX0VKSkpKKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSk7Cit0eXBlZGVmIHZvaWQgKEpJVF9P
UEVSQVRJT04gKlZfSklUT3BlcmF0aW9uX0VPSkpaKShFeGVjU3RhdGUqLCBKU09iamVjdCosIEVu
Y29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgaW50MzJfdCk7Cit0eXBlZGVmIHZvaWQgKEpJ
VF9PUEVSQVRJT04gKlZfSklUT3BlcmF0aW9uX0VPSnNzSlopKEV4ZWNTdGF0ZSosIEpTT2JqZWN0
KiwgSlNTdHJpbmcqLCBFbmNvZGVkSlNWYWx1ZSwgaW50MzJfdCk7Cit0eXBlZGVmIHZvaWQgKEpJ
VF9PUEVSQVRJT04gKlZfSklUT3BlcmF0aW9uX0VPSUpaKShFeGVjU3RhdGUqLCBKU09iamVjdCos
IFVuaXF1ZWRTdHJpbmdJbXBsKiwgRW5jb2RlZEpTVmFsdWUsIGludDMyX3QpOwordHlwZWRlZiB2
b2lkIChKSVRfT1BFUkFUSU9OICpWX0pJVE9wZXJhdGlvbl9FT1N5bUpaKShFeGVjU3RhdGUqLCBK
U09iamVjdCosIFN5bWJvbCosIEVuY29kZWRKU1ZhbHVlLCBpbnQzMl90KTsKK3R5cGVkZWYgdm9p
ZCAoSklUX09QRVJBVElPTiAqVl9KSVRPcGVyYXRpb25fRU9KT09aKShFeGVjU3RhdGUqLCBKU09i
amVjdCosIEVuY29kZWRKU1ZhbHVlLCBKU09iamVjdCosIEpTT2JqZWN0KiwgaW50MzJfdCk7Cit0
eXBlZGVmIHZvaWQgKEpJVF9PUEVSQVRJT04gKlZfSklUT3BlcmF0aW9uX0VPSnNzT09aKShFeGVj
U3RhdGUqLCBKU09iamVjdCosIEpTU3RyaW5nKiwgSlNPYmplY3QqLCBKU09iamVjdCosIGludDMy
X3QpOwordHlwZWRlZiB2b2lkIChKSVRfT1BFUkFUSU9OICpWX0pJVE9wZXJhdGlvbl9FT0lPT1op
KEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgVW5pcXVlZFN0cmluZ0ltcGwqLCBKU09iamVjdCosIEpT
T2JqZWN0KiwgaW50MzJfdCk7Cit0eXBlZGVmIHZvaWQgKEpJVF9PUEVSQVRJT04gKlZfSklUT3Bl
cmF0aW9uX0VPU3ltT09aKShFeGVjU3RhdGUqLCBKU09iamVjdCosIFN5bWJvbCosIEpTT2JqZWN0
KiwgSlNPYmplY3QqLCBpbnQzMl90KTsKIHR5cGVkZWYgdm9pZCAoSklUX09QRVJBVElPTiAqVl9K
SVRPcGVyYXRpb25fRVdzKShFeGVjU3RhdGUqLCBXYXRjaHBvaW50U2V0Kik7CiB0eXBlZGVmIHZv
aWQgKEpJVF9PUEVSQVRJT04gKlZfSklUT3BlcmF0aW9uX0VaKShFeGVjU3RhdGUqLCBpbnQzMl90
KTsKIHR5cGVkZWYgdm9pZCAoSklUX09QRVJBVElPTiAqVl9KSVRPcGVyYXRpb25fRVpKKShFeGVj
U3RhdGUqLCBpbnQzMl90LCBFbmNvZGVkSlNWYWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCmluZGV4IDU2MDI2OGI1YzMxNDc4NDEzNjA3
MmRkZDgwMDc3NzgwZjMzNzhiMmIuLjlkNGZkMWFhNmFmNjRiNDhkN2JlMWIzZWI0NjkzMGI1M2Yz
NWY0YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlB
Y2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nl
c3MuY3BwCkBAIC0xNzczLDYgKzE3NzMsMTggQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRGbG9h
dFR5cGVkQXJyYXlQdXRCeVZhbChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLAogICAg
IHJldHVybiBzbG93Q2FzZXM7CiB9CiAKK3ZvaWQgSklUOjplbWl0X29wX2RlZmluZV9kYXRhX3By
b3BlcnR5KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgSklUU2xvd1Bh
dGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9k
ZWZpbmVfZGF0YV9wcm9wZXJ0eSk7CisgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKK30KKwordm9p
ZCBKSVQ6OmVtaXRfb3BfZGVmaW5lX2FjY2Vzc29yX3Byb3BlcnR5KEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlz
LCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9kZWZpbmVfYWNjZXNzb3JfcHJvcGVydHkp
OworICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAj
ZW5kaWYgLy8gRU5BQkxFKEpJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQppbmRleCAxMDAzN2FmNTZjZTZjN2YxYTkzZTUyZDJh
NzE3ZTI5NGUwMTA1ZjlhLi5jOWI4NDQzN2M2NTc0NTUzZTM4MGU1MjEyMjYxYWI5MjY5NmJlMzRk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlci5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIuYXNtCkBAIC0xNDU3LDYgKzE0NTcsMTggQEAgX2xsaW50X29wX3B1dF9zZXR0ZXJfYnlf
dmFsOgogICAgIGRpc3BhdGNoKDUpCiAKIAorX2xsaW50X29wX2RlZmluZV9kYXRhX3Byb3BlcnR5
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsT3Bjb2RlU2xvd1BhdGgoX3Nsb3dfcGF0
aF9kZWZpbmVfZGF0YV9wcm9wZXJ0eSkKKyAgICBkaXNwYXRjaCg1KQorCisKK19sbGludF9vcF9k
ZWZpbmVfYWNjZXNzb3JfcHJvcGVydHk6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxP
cGNvZGVTbG93UGF0aChfc2xvd19wYXRoX2RlZmluZV9hY2Nlc3Nvcl9wcm9wZXJ0eSkKKyAgICBk
aXNwYXRjaCg2KQorCisKIF9sbGludF9vcF9qdHJ1ZToKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAg
ICAganVtcFRydWVPckZhbHNlKApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vblNsb3dQYXRocy5jcHAKaW5kZXggY2FmODI2ZGMyYWNkYWI2ZDlhMzk1OGEwY2YwMzEx
NDM2MjNiYmEzZi4uZjI1ZWU4MTFhY2E5ZWNhNGE5NmRhOTBlNWUwYTk0MjViOTc0NThjMCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3Bw
CkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiQ2xvbmVkQXJndW1lbnRzLmgiCiAjaW5jbHVk
ZSAiQ29kZVByb2ZpbGluZy5oIgogI2luY2x1ZGUgIkNvbW1vblNsb3dQYXRoc0V4Y2VwdGlvbnMu
aCIKKyNpbmNsdWRlICJEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaCIKICNpbmNsdWRlICJEaXJl
Y3RBcmd1bWVudHMuaCIKICNpbmNsdWRlICJFcnJvci5oIgogI2luY2x1ZGUgIkVycm9ySGFuZGxp
bmdTY29wZS5oIgpAQCAtOTMwLDQgKzkzMSwzOSBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhf
cHV0X2J5X3ZhbF93aXRoX3RoaXMpCiAgICAgRU5EKCk7CiB9CiAKK1NMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9kZWZpbmVfZGF0YV9wcm9wZXJ0eSkKK3sKKyAgICBCRUdJTigpOworICAgIEpTT2Jq
ZWN0KiBiYXNlID0gYXNPYmplY3QoT1BfQygxKS5qc1ZhbHVlKCkpOworICAgIEpTVmFsdWUgcHJv
cGVydHkgPSBPUF9DKDIpLmpzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gT1BfQygzKS5q
c1ZhbHVlKCk7CisgICAgSlNWYWx1ZSBhdHRyaWJ1dGVzID0gT1BfQyg0KS5qc1ZhbHVlKCk7Cisg
ICAgQVNTRVJUKGF0dHJpYnV0ZXMuaXNJbnQzMigpKTsKKworICAgIGF1dG8gcHJvcGVydHlOYW1l
ID0gcHJvcGVydHkudG9Qcm9wZXJ0eUtleShleGVjKTsKKyAgICBDSEVDS19FWENFUFRJT04oKTsK
KyAgICBQcm9wZXJ0eURlc2NyaXB0b3IgZGVzY3JpcHRvciA9IHRvUHJvcGVydHlEZXNjcmlwdG9y
KHZhbHVlLCBqc1VuZGVmaW5lZCgpLCBqc1VuZGVmaW5lZCgpLCBEZWZpbmVQcm9wZXJ0eUF0dHJp
YnV0ZXMoYXR0cmlidXRlcy5hc0ludDMyKCkpKTsKKyAgICBBU1NFUlQoKGRlc2NyaXB0b3IuYXR0
cmlidXRlcygpICYgQWNjZXNzb3IpIHx8ICghZGVzY3JpcHRvci5pc0FjY2Vzc29yRGVzY3JpcHRv
cigpKSk7CisgICAgYmFzZS0+bWV0aG9kVGFibGUodm0pLT5kZWZpbmVPd25Qcm9wZXJ0eShiYXNl
LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHRydWUpOworICAgIEVORCgpOworfQor
CitTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZGVmaW5lX2FjY2Vzc29yX3Byb3BlcnR5KQorewor
ICAgIEJFR0lOKCk7CisgICAgSlNPYmplY3QqIGJhc2UgPSBhc09iamVjdChPUF9DKDEpLmpzVmFs
dWUoKSk7CisgICAgSlNWYWx1ZSBwcm9wZXJ0eSA9IE9QX0MoMikuanNWYWx1ZSgpOworICAgIEpT
VmFsdWUgZ2V0dGVyID0gT1BfQygzKS5qc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSBzZXR0ZXIgPSBP
UF9DKDQpLmpzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIGF0dHJpYnV0ZXMgPSBPUF9DKDUpLmpzVmFs
dWUoKTsKKyAgICBBU1NFUlQoYXR0cmlidXRlcy5pc0ludDMyKCkpOworCisgICAgYXV0byBwcm9w
ZXJ0eU5hbWUgPSBwcm9wZXJ0eS50b1Byb3BlcnR5S2V5KGV4ZWMpOworICAgIENIRUNLX0VYQ0VQ
VElPTigpOworICAgIFByb3BlcnR5RGVzY3JpcHRvciBkZXNjcmlwdG9yID0gdG9Qcm9wZXJ0eURl
c2NyaXB0b3IoanNVbmRlZmluZWQoKSwgZ2V0dGVyLCBzZXR0ZXIsIERlZmluZVByb3BlcnR5QXR0
cmlidXRlcyhhdHRyaWJ1dGVzLmFzSW50MzIoKSkpOworICAgIEFTU0VSVCgoZGVzY3JpcHRvci5h
dHRyaWJ1dGVzKCkgJiBBY2Nlc3NvcikgfHwgKCFkZXNjcmlwdG9yLmlzQWNjZXNzb3JEZXNjcmlw
dG9yKCkpKTsKKyAgICBiYXNlLT5tZXRob2RUYWJsZSh2bSktPmRlZmluZU93blByb3BlcnR5KGJh
c2UsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgdHJ1ZSk7CisgICAgRU5EKCk7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25TbG93UGF0aHMuaAppbmRleCA4ZWU1YmUzMWFkM2NlZWI2MTEwMzlmMjk4ZTdkYjM2
ZmI5NDlmZjk5Li40NzViNzdlMThmZTIyZDA2ODhhMjVlMWY1N2I4NGU0YzA4MmI4ZmNkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaApAQCAt
MjU3LDYgKzI1Nyw4IEBAIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZ2V0X2J5X2lk
X3dpdGhfdGhpcyk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2dldF9ieV92YWxf
d2l0aF90aGlzKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHV0X2J5X2lkX3dp
dGhfdGhpcyk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3B1dF9ieV92YWxfd2l0
aF90aGlzKTsKK1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZGVmaW5lX2RhdGFfcHJv
cGVydHkpOworU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9kZWZpbmVfYWNjZXNzb3Jf
cHJvcGVydHkpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9EZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4zZDhhMjQ4YjkxNjBjNDc2NGIxMGNhNDExZmIyZjJjNzVjYTk4MzYwCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGVmaW5lUHJvcGVydHlBdHRy
aWJ1dGVzLmgKQEAgLTAsMCArMSwxNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9UcmlTdGF0ZS5o
PgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzIHsK
K3B1YmxpYzoKKyAgICBzdGF0aWNfYXNzZXJ0KEZhbHNlVHJpU3RhdGUgPT0gMCwgIkZhbHNlVHJp
U3RhdGUgaXMgMC4iKTsKKyAgICBzdGF0aWNfYXNzZXJ0KFRydWVUcmlTdGF0ZSA9PSAxLCAiVHJ1
ZVRyaVN0YXRlIGlzIDEuIik7CisgICAgc3RhdGljX2Fzc2VydChNaXhlZFRyaVN0YXRlID09IDIs
ICJNaXhlZFRyaVN0YXRlIGlzIDIuIik7CisKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgQ29u
ZmlndXJhYmxlU2hpZnQgPSAwOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBFbnVtZXJhYmxl
U2hpZnQgPSAyOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBXcml0YWJsZVNoaWZ0ID0gNDsK
KyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgVmFsdWVTaGlmdCA9IDY7CisgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIEdldFNoaWZ0ID0gNzsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU2V0
U2hpZnQgPSA4OworCisgICAgRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzKCkKKyAgICAgICAgOiBt
X2F0dHJpYnV0ZXMoCisgICAgICAgICAgICAoTWl4ZWRUcmlTdGF0ZSA8PCBDb25maWd1cmFibGVT
aGlmdCkKKyAgICAgICAgICAgIHwgKE1peGVkVHJpU3RhdGUgPDwgRW51bWVyYWJsZVNoaWZ0KQor
ICAgICAgICAgICAgfCAoTWl4ZWRUcmlTdGF0ZSA8PCBXcml0YWJsZVNoaWZ0KQorICAgICAgICAg
ICAgfCAoMCA8PCBWYWx1ZVNoaWZ0KQorICAgICAgICAgICAgfCAoMCA8PCBHZXRTaGlmdCkKKyAg
ICAgICAgICAgIHwgKDAgPDwgU2V0U2hpZnQpKQorICAgIHsKKyAgICB9CisKKyAgICBleHBsaWNp
dCBEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXModW5zaWduZWQgYXR0cmlidXRlcykKKyAgICAgICAg
OiBtX2F0dHJpYnV0ZXMoYXR0cmlidXRlcykKKyAgICB7CisgICAgfQorCisgICAgdW5zaWduZWQg
cmF3UmVwcmVzZW50YXRpb24oKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYXR0cmli
dXRlczsKKyAgICB9CisKKyAgICBib29sIGhhc1ZhbHVlKCkKKyAgICB7CisgICAgICAgIHJldHVy
biBtX2F0dHJpYnV0ZXMgJiAoMGIxIDw8IFZhbHVlU2hpZnQpOworICAgIH0KKworICAgIHZvaWQg
c2V0VmFsdWUoKQorICAgIHsKKyAgICAgICAgbV9hdHRyaWJ1dGVzID0gbV9hdHRyaWJ1dGVzIHwg
KDBiMSA8PCBWYWx1ZVNoaWZ0KTsKKyAgICB9CisKKyAgICBib29sIGhhc0dldCgpCisgICAgewor
ICAgICAgICByZXR1cm4gbV9hdHRyaWJ1dGVzICYgKDBiMSA8PCBHZXRTaGlmdCk7CisgICAgfQor
CisgICAgdm9pZCBzZXRHZXQoKQorICAgIHsKKyAgICAgICAgbV9hdHRyaWJ1dGVzID0gbV9hdHRy
aWJ1dGVzIHwgKDBiMSA8PCBHZXRTaGlmdCk7CisgICAgfQorCisgICAgYm9vbCBoYXNTZXQoKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYXR0cmlidXRlcyAmICgwYjEgPDwgU2V0U2hpZnQpOwor
ICAgIH0KKworICAgIHZvaWQgc2V0U2V0KCkKKyAgICB7CisgICAgICAgIG1fYXR0cmlidXRlcyA9
IG1fYXR0cmlidXRlcyB8ICgwYjEgPDwgU2V0U2hpZnQpOworICAgIH0KKworICAgIFRyaVN0YXRl
IHdyaXRhYmxlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBleHRyYWN0VHJpU3RhdGUoV3JpdGFi
bGVTaGlmdCk7CisgICAgfQorCisgICAgVHJpU3RhdGUgY29uZmlndXJhYmxlKCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBleHRyYWN0VHJpU3RhdGUoQ29uZmlndXJhYmxlU2hpZnQpOworICAgIH0K
KworICAgIFRyaVN0YXRlIGVudW1lcmFibGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGV4dHJh
Y3RUcmlTdGF0ZShFbnVtZXJhYmxlU2hpZnQpOworICAgIH0KKworICAgIHZvaWQgc2V0V3JpdGFi
bGUoYm9vbCB2YWx1ZSkKKyAgICB7CisgICAgICAgIGZpbGxXaXRoVHJpU3RhdGUodmFsdWUgPyBU
cnVlVHJpU3RhdGUgOiBGYWxzZVRyaVN0YXRlLCBXcml0YWJsZVNoaWZ0KTsKKyAgICB9CisKKyAg
ICB2b2lkIHNldENvbmZpZ3VyYWJsZShib29sIHZhbHVlKQorICAgIHsKKyAgICAgICAgZmlsbFdp
dGhUcmlTdGF0ZSh2YWx1ZSA/IFRydWVUcmlTdGF0ZSA6IEZhbHNlVHJpU3RhdGUsIENvbmZpZ3Vy
YWJsZVNoaWZ0KTsKKyAgICB9CisKKyAgICB2b2lkIHNldEVudW1lcmFibGUoYm9vbCB2YWx1ZSkK
KyAgICB7CisgICAgICAgIGZpbGxXaXRoVHJpU3RhdGUodmFsdWUgPyBUcnVlVHJpU3RhdGUgOiBG
YWxzZVRyaVN0YXRlLCBFbnVtZXJhYmxlU2hpZnQpOworICAgIH0KKworcHJpdmF0ZToKKyAgICB2
b2lkIGZpbGxXaXRoVHJpU3RhdGUoVHJpU3RhdGUgc3RhdGUsIHVuc2lnbmVkIHNoaWZ0KQorICAg
IHsKKyAgICAgICAgdW5zaWduZWQgbWFzayA9IDBiMTEgPDwgc2hpZnQ7CisgICAgICAgIG1fYXR0
cmlidXRlcyA9IChtX2F0dHJpYnV0ZXMgJiB+bWFzaykgfCAoc3RhdGUgPDwgc2hpZnQpOworICAg
IH0KKworICAgIFRyaVN0YXRlIGV4dHJhY3RUcmlTdGF0ZSh1bnNpZ25lZCBzaGlmdCkKKyAgICB7
CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUcmlTdGF0ZT4oKG1fYXR0cmlidXRlcyA+PiBz
aGlmdCkgJiAwYjExKTsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBtX2F0dHJpYnV0ZXM7Cit9Owor
CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IDk3M2MyZTgxNjllYjhmYzVlYWVmNjQ2NzBiNDYx
MTM2MjFhNTU4YTAuLjVjOTRiOTI1Y2JlNjVlMTkyNDFkNDlhMjhmMWUxMWEwOWY2NzEyNzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAK
QEAgLTQwNCw3ICs0MDQsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2bSkKICAg
ICBtX2Z1bmN0aW9uUHJvdG9IYXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9uLnNldCh2bSwgdGhpcywg
aGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlvbik7CiAgICAgbV90aHJvd1R5cGVFcnJvckdldHRlclNl
dHRlci5pbml0TGF0ZXIoCiAgICAgICAgIFtdIChjb25zdCBJbml0aWFsaXplcjxHZXR0ZXJTZXR0
ZXI+JiBpbml0KSB7Ci0gICAgICAgICAgICBKU0Z1bmN0aW9uKiB0aHJvd2VyID0gSlNGdW5jdGlv
bjo6Y3JlYXRlKGluaXQudm0sIGluaXQub3duZXIsIDAsIFN0cmluZygpLCBnbG9iYWxGdW5jVGhy
b3dUeXBlRXJyb3IpOworICAgICAgICAgICAgSlNGdW5jdGlvbiogdGhyb3dlciA9IGluaXQub3du
ZXItPnRocm93VHlwZUVycm9yRnVuY3Rpb24oKTsKICAgICAgICAgICAgIEdldHRlclNldHRlciog
Z2V0dGVyU2V0dGVyID0gR2V0dGVyU2V0dGVyOjpjcmVhdGUoaW5pdC52bSwgaW5pdC5vd25lcik7
CiAgICAgICAgICAgICBnZXR0ZXJTZXR0ZXItPnNldEdldHRlcihpbml0LnZtLCBpbml0Lm93bmVy
LCB0aHJvd2VyKTsKICAgICAgICAgICAgIGdldHRlclNldHRlci0+c2V0U2V0dGVyKGluaXQudm0s
IGluaXQub3duZXIsIHRocm93ZXIpOwpAQCAtNTgxLDggKzU4MSw4IEBAIG1fICMjIHByb3Blck5h
bWUgIyMgU3RydWN0dXJlLnNldCh2bSwgdGhpcywgaW5zdGFuY2VUeXBlOjpjcmVhdGVTdHJ1Y3R1
cmUodm0sIHRoCiAgICAgT2JqZWN0Q29uc3RydWN0b3IqIG9iamVjdENvbnN0cnVjdG9yID0gT2Jq
ZWN0Q29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgdGhpcywgT2JqZWN0Q29uc3RydWN0b3I6OmNyZWF0
ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1fb2JqZWN0
UHJvdG90eXBlLmdldCgpKTsKICAgICBtX29iamVjdENvbnN0cnVjdG9yLnNldCh2bSwgdGhpcywg
b2JqZWN0Q29uc3RydWN0b3IpOwogCi0gICAgSlNGdW5jdGlvbiogZGVmaW5lUHJvcGVydHlGdW5j
dGlvbiA9IG1fb2JqZWN0Q29uc3RydWN0b3ItPmFkZERlZmluZVByb3BlcnR5KGV4ZWMsIHRoaXMp
OwotICAgIG1fZGVmaW5lUHJvcGVydHlGdW5jdGlvbi5zZXQodm0sIHRoaXMsIGRlZmluZVByb3Bl
cnR5RnVuY3Rpb24pOworICAgIEpTRnVuY3Rpb24qIHRocm93VHlwZUVycm9yRnVuY3Rpb24gPSBK
U0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDAsIFN0cmluZygpLCBnbG9iYWxGdW5jVGhyb3dU
eXBlRXJyb3IpOworICAgIG1fdGhyb3dUeXBlRXJyb3JGdW5jdGlvbi5zZXQodm0sIHRoaXMsIHRo
cm93VHlwZUVycm9yRnVuY3Rpb24pOwogCiAgICAgSlNDZWxsKiBmdW5jdGlvbkNvbnN0cnVjdG9y
ID0gRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBGdW5jdGlvbkNvbnN0cnVjdG9yOjpj
cmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBtX2Z1
bmN0aW9uUHJvdG90eXBlLmdldCgpKTsKICAgICBBcnJheUNvbnN0cnVjdG9yKiBhcnJheUNvbnN0
cnVjdG9yID0gQXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCB0aGlzLCBBcnJheUNvbnN0cnVj
dG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkp
LCBtX2FycmF5UHJvdG90eXBlLmdldCgpLCBtX3NwZWNpZXNHZXR0ZXJTZXR0ZXIuZ2V0KCkpOwpA
QCAtODAzLDcgKzgwMyw3IEBAIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT4ganNOYW1lLCBsb3dlck5hbWUgIyMgQ29uc3RydWN0CiAgICAgbV9zcGVjaWFs
UG9pbnRlcnNbU3BlY2lhbDo6T2JqZWN0Q29uc3RydWN0b3JdID0gb2JqZWN0Q29uc3RydWN0b3I7
CiAgICAgbV9zcGVjaWFsUG9pbnRlcnNbU3BlY2lhbDo6QXJyYXlDb25zdHJ1Y3Rvcl0gPSBhcnJh
eUNvbnN0cnVjdG9yOwogCi0gICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oTGlua1RpbWVDb25zdGFudDo6RGVmaW5lUHJvcGVydHlGdW5jdGlvbildID0gbV9kZWZp
bmVQcm9wZXJ0eUZ1bmN0aW9uLmdldCgpOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OlRocm93VHlwZUVycm9yRnVuY3Rpb24p
XSA9IG1fdGhyb3dUeXBlRXJyb3JGdW5jdGlvbi5nZXQoKTsKIAogICAgIGlmIChVTkxJS0VMWShP
cHRpb25zOjp1c2VEb2xsYXJWTSgpKSkgewogICAgICAgICBKU0RvbGxhclZNUHJvdG90eXBlKiBk
b2xsYXJWTVByb3RvdHlwZSA9IEpTRG9sbGFyVk1Qcm90b3R5cGU6OmNyZWF0ZSh2bSwgdGhpcywg
SlNEb2xsYXJWTVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX29iamVjdFBy
b3RvdHlwZS5nZXQoKSkpOwpAQCAtMTA2Niw3ICsxMDY2LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVj
dDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAg
IHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2V2YWxGdW5jdGlvbik7CiAgICAgdmlzaXRv
ci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fY2FsbEZ1bmN0aW9uKTsKICAgICB2aXNpdG9yLmFwcGVu
ZCgmdGhpc09iamVjdC0+bV9hcHBseUZ1bmN0aW9uKTsKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhp
c09iamVjdC0+bV9kZWZpbmVQcm9wZXJ0eUZ1bmN0aW9uKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgm
dGhpc09iamVjdC0+bV90aHJvd1R5cGVFcnJvckZ1bmN0aW9uKTsKICAgICB0aGlzT2JqZWN0LT5t
X2FycmF5UHJvdG9Ub1N0cmluZ0Z1bmN0aW9uLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmpl
Y3QtPm1fYXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNP
YmplY3QtPm1faW5pdGlhbGl6ZVByb21pc2VGdW5jdGlvbi52aXNpdCh2aXNpdG9yKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IDBkZWFk
MmJmODRiNTU4NzExMmRjODdjZjk0OTYwNDE3OWQzMmU5NDguLjk0ZDdlMjMwNTM1ODc2OTFlYTI3
YWIwZGZkM2Y2NjZlMTljNzZiZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuaApAQCAtMjM0LDcgKzIzNCw3IEBAIGNsYXNzIEpTR2xvYmFsT2Jq
ZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIFdyaXRlQmFycmll
cjxKU0Z1bmN0aW9uPiBtX2V2YWxGdW5jdGlvbjsKICAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlv
bj4gbV9jYWxsRnVuY3Rpb247CiAgICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1fYXBwbHlG
dW5jdGlvbjsKLSAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9kZWZpbmVQcm9wZXJ0eUZ1
bmN0aW9uOworICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBtX3Rocm93VHlwZUVycm9yRnVu
Y3Rpb247CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBKU0Z1bmN0aW9uPiBtX2Fy
cmF5UHJvdG9Ub1N0cmluZ0Z1bmN0aW9uOwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVj
dCwgSlNGdW5jdGlvbj4gbV9hcnJheVByb3RvVmFsdWVzRnVuY3Rpb247CiAgICAgTGF6eVByb3Bl
cnR5PEpTR2xvYmFsT2JqZWN0LCBKU0Z1bmN0aW9uPiBtX2luaXRpYWxpemVQcm9taXNlRnVuY3Rp
b247CkBAIC00NzksNyArNDc5LDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNT
ZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgSlNGdW5jdGlvbiogZXZhbEZ1bmN0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9ldmFsRnVuY3Rpb24uZ2V0KCk7IH0KICAgICBKU0Z1bmN0aW9uKiBj
YWxsRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2NhbGxGdW5jdGlvbi5nZXQoKTsgfQogICAg
IEpTRnVuY3Rpb24qIGFwcGx5RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2FwcGx5RnVuY3Rp
b24uZ2V0KCk7IH0KLSAgICBKU0Z1bmN0aW9uKiBkZWZpbmVQcm9wZXJ0eUZ1bmN0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9kZWZpbmVQcm9wZXJ0eUZ1bmN0aW9uLmdldCgpOyB9CisgICAgSlNGdW5j
dGlvbiogdGhyb3dUeXBlRXJyb3JGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdGhyb3dUeXBl
RXJyb3JGdW5jdGlvbi5nZXQoKTsgfQogICAgIEpTRnVuY3Rpb24qIGFycmF5UHJvdG9Ub1N0cmlu
Z0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9hcnJheVByb3RvVG9TdHJpbmdGdW5jdGlvbi5n
ZXQodGhpcyk7IH0KICAgICBKU0Z1bmN0aW9uKiBhcnJheVByb3RvVmFsdWVzRnVuY3Rpb24oKSBj
b25zdCB7IHJldHVybiBtX2FycmF5UHJvdG9WYWx1ZXNGdW5jdGlvbi5nZXQodGhpcyk7IH0KICAg
ICBKU0Z1bmN0aW9uKiBpbml0aWFsaXplUHJvbWlzZUZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV9pbml0aWFsaXplUHJvbWlzZUZ1bmN0aW9uLmdldCh0aGlzKTsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCmluZGV4IDc4MWZj
YmNlNTVjNzI1MjY4MjAyMTY3MmNlODlkYmE5YTUyMWY0Y2EuLjBmYTBjZTZkMGFmMWIzMDkxZTJm
NzI4ZDEwNzlhMzY5Y2RmMWZkOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKQEAgLTEwNywxNCArMTA3LDYgQEAgdm9pZCBP
YmplY3RDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBPYmoKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJ
VElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZXRPd25Qcm9wZXJ0eU5hbWVz
UHJpdmF0ZU5hbWUoKSwgb2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eU5hbWVzLCBEb250
RW51bSwgMSk7CiB9CiAKLUpTRnVuY3Rpb24qIE9iamVjdENvbnN0cnVjdG9yOjphZGREZWZpbmVQ
cm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCi17
Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBKU0Z1bmN0aW9uKiBkZWZpbmVQcm9wZXJ0
eUZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDMsIHZtLnBy
b3BlcnR5TmFtZXMtPmRlZmluZVByb3BlcnR5LnN0cmluZygpLCBvYmplY3RDb25zdHJ1Y3RvckRl
ZmluZVByb3BlcnR5KTsKLSAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJv
cGVydHlOYW1lcy0+ZGVmaW5lUHJvcGVydHksIGRlZmluZVByb3BlcnR5RnVuY3Rpb24sIERvbnRF
bnVtKTsKLSAgICByZXR1cm4gZGVmaW5lUHJvcGVydHlGdW5jdGlvbjsKLX0KLQogLy8gRVMgMTku
MS4xLjEgT2JqZWN0KFt2YWx1ZV0pCiBzdGF0aWMgQUxXQVlTX0lOTElORSBKU09iamVjdCogY29u
c3RydWN0T2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBuZXdUYXJnZXQpCiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuaAppbmRl
eCA4OWQ3NDRhMjc3NGNkNDc4ZTA4MjdmZTFmM2M0YmFhOWFlZjY0Y2Q5Li44ZmYyYzU1YWVjMjlk
OTUxY2NiNDQwN2ZhNWM2MjMxM2Y3ZjFkMGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmgKQEAgLTU0LDggKzU0LDYgQEAgY2xhc3Mg
T2JqZWN0Q29uc3RydWN0b3IgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CiAgICAgICAgIHJl
dHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJ
bmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKICAgICB9CiAKLSAgICBK
U0Z1bmN0aW9uKiBhZGREZWZpbmVQcm9wZXJ0eShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCop
OwotCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTR2xvYmFsT2Jq
ZWN0KiwgT2JqZWN0UHJvdG90eXBlKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUHJvcGVydHlEZXNjcmlwdG9yLmgKaW5kZXggYWE2MWVlYTQ5NWM0ZDFjOWQ1YTBm
ODI0NzlkMzI0NTM2NjU1YTM2NS4uZWU5NzFmNTUwMzY3NjczMjA5Nzk5ZTgxOWU1ZDQzMDFkZDU4
NDQ4NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlE
ZXNjcmlwdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlE
ZXNjcmlwdG9yLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgUHJvcGVydHlEZXNjcmlwdG9y
X2gKICNkZWZpbmUgUHJvcGVydHlEZXNjcmlwdG9yX2gKIAorI2luY2x1ZGUgIkRlZmluZVByb3Bl
cnR5QXR0cmlidXRlcy5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKIAogbmFtZXNwYWNlIEpT
QyB7CkBAIC05Myw2ICs5NCwzMiBAQCBjbGFzcyBQcm9wZXJ0eURlc2NyaXB0b3IgewogICAgIHVu
c2lnbmVkIG1fc2VlbkF0dHJpYnV0ZXM7CiB9OwogCitpbmxpbmUgUHJvcGVydHlEZXNjcmlwdG9y
IHRvUHJvcGVydHlEZXNjcmlwdG9yKEpTVmFsdWUgdmFsdWUsIEpTVmFsdWUgZ2V0dGVyLCBKU1Zh
bHVlIHNldHRlciwgRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMpCit7CisgICAg
Ly8gV2UgYXNzdW1lIHRoYXQgdmFsaWRhdGlvbiBpcyBhbHJlYWR5IGRvbmUuCisgICAgUHJvcGVy
dHlEZXNjcmlwdG9yIGRlc2M7CisKKyAgICBpZiAoYXR0cmlidXRlcy5lbnVtZXJhYmxlKCkgIT0g
TWl4ZWRUcmlTdGF0ZSkKKyAgICAgICAgZGVzYy5zZXRFbnVtZXJhYmxlKGF0dHJpYnV0ZXMuZW51
bWVyYWJsZSgpKTsKKworICAgIGlmIChhdHRyaWJ1dGVzLmNvbmZpZ3VyYWJsZSgpICE9IE1peGVk
VHJpU3RhdGUpCisgICAgICAgIGRlc2Muc2V0Q29uZmlndXJhYmxlKGF0dHJpYnV0ZXMuY29uZmln
dXJhYmxlKCkpOworCisgICAgaWYgKGF0dHJpYnV0ZXMuaGFzVmFsdWUoKSkKKyAgICAgICAgZGVz
Yy5zZXRWYWx1ZSh2YWx1ZSk7CisKKyAgICBpZiAoYXR0cmlidXRlcy53cml0YWJsZSgpICE9IE1p
eGVkVHJpU3RhdGUpCisgICAgICAgIGRlc2Muc2V0V3JpdGFibGUoYXR0cmlidXRlcy53cml0YWJs
ZSgpKTsKKworICAgIGlmIChhdHRyaWJ1dGVzLmhhc0dldCgpKQorICAgICAgICBkZXNjLnNldEdl
dHRlcihnZXR0ZXIpOworCisgICAgaWYgKGF0dHJpYnV0ZXMuaGFzU2V0KCkpCisgICAgICAgIGRl
c2Muc2V0U2V0dGVyKHNldHRlcik7CisKKyAgICByZXR1cm4gZGVzYzsKK30KKwogfQogCiAjZW5k
aWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>289968</attachid>
            <date>2016-09-27 10:33:55 -0700</date>
            <delta_ts>2016-09-27 10:48:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162108-20160927103056.patch</filename>
            <type>text/plain</type>
            <size>91016</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA2NDExCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
MjE2ZGRiZWMwNWQ2YThjYWMzZDdkYWQwMmI1MmFiYTA4ZTQ1OWYyLi42ZGMxMWQ3ODNmMDYyZTZm
ZWQxMGM3OTZjZjFiOGExYzcxZDU3M2NmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNTUgQEAKKzIwMTYtMDktMjcgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0pTQ10gQWRkIGEgbmV3IGJ5dGUgY29kZSBvcF9kZWZpbmVfcHJv
cGVydHkgaW5zdGVhZCBvZiBjYWxsaW5nIGRlZmluZVByb3BlcnR5CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjIxMDgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUbyBjb25zdHJ1Y3QgRVM2IGNsYXNzLCB3
ZSBlbWl0dGVkIGJ5dGVjb2RlIHRoYXQgcGVyZm9ybXMgdGhlIGZvbGxvd2luZyBvcGVyYXRpb25z
LgorCisgICAgICAgICAgICAxLiBjb25zdHJ1Y3QgYSBuZXcgb2JqZWN0CisgICAgICAgICAgICAy
LiBwdXQgImNvbmZpZ3VyYWJsZSIsICJlbnVtZXJhYmxlIiBldGMuIGZpZWxkcworICAgICAgICAg
ICAgMy4gY2FsbCAiZGVmaW5lUHJvcGVydHkiIGZ1bmN0aW9uCisKKyAgICAgICAgSG93ZXZlciwg
dGhpcyBoYXMgYSBwcm9ibGVtcy4gRXZlcnkgdGltZSB3ZSBkZWZpbmUgYSBjbGFzcyBtZXRob2Qs
IHdlIG5lZWQgdG8gY3JlYXRlCisgICAgICAgIGEgbmV3IG9iamVjdCB0byByZXByZXNlbnQgcHJv
cGVydHkgZGVzY3JpcHRvci4gVGhpcyBjYW4gYmUgcmVtb3ZlZCBpZiB3ZSBjYW4gaW50cm9kdWNl
CisgICAgICAgIGEgc3BlY2lhbCBieXRlY29kZSBvciBzcGVjaWFsIGZ1bmN0aW9uLgorCisgICAg
ICAgIFRoaXMgcGF0Y2ggaW50cm9kdWNlcyBuZXcgYnl0ZWNvZGVzLCBvcF9kZWZpbmVfZGF0YV9w
cm9wZXJ0eSBhbmQgb3BfZGVmaW5lX2FjY2Vzc29yX3Byb3BlcnR5LgorICAgICAgICBJbnN0ZWFk
IG9mIHRha2luZyBhbiBvYmplY3QsIHRoZXkgdGFrZXMgc2V2ZXJhbCByZWdpc3RlcnMgdG8gYXZv
aWQgb2JqZWN0IGFsbG9jYXRpb25zLgorICAgICAgICBXZSdyZSBwbGFubmluZyB0byB1c2UgdGhp
cyBieXRlY29kZSB0byBpbXBsZW1lbnQgT2JqZWN0LmRlZmluZVByb3BlcnR5IGluIGJ1aWx0aW4g
SlMgbmV4dC4KKyAgICAgICAgVGhpcyBhbGxvd3MgdXMgdG8gbGV2ZXJhZ2Ugb2JqZWN0IGFsbG9j
YXRpb24gc2lua2luZy4gQW5kIGl0IGFsc28gZ2l2ZXMgdXMgYSBjaGFuY2UgdG8gdXNlCisgICAg
ICAgIGZhc3RlciA6OmdldCBhbmQgOjpoYXNQcm9wZXJ0eSBpbiBKUy4KKworICAgICAgICBPcmln
aW5hbGx5LCBJIGF0dGVtcHRlZCB0byBjcmVhdGUgb25lIGJ5dGVjb2RlLCBvcF9kZWZpbmVfcHJv
cGVydHkuIEhvd2V2ZXIsIGl0IHRha2VzIHRvbyBtdWNoCisgICAgICAgIGNoaWxkcmVuIGluIERG
RyBhbmQgdXNlcyBzbyBtdWNoIHJlZ2lzdGVycyBpbiBERkcuIFRoaXMgbGVhZHMgdHJpY2t5IHBy
b2dyYW0gaW4gMzJiaXQgcGxhdGZvcm1zLgorICAgICAgICBGdXJ0aGVybW9yZSwgaXQgZG9lcyBu
b3QgZml0IHRvIHRoZSBudW1iZXIgb2YgeDY0IGFyZ3VtZW50IHJlZ2lzdGVycy4gU28gaW5zdGVh
ZCwgd2UgaW50cm9kdWNlCisgICAgICAgIHR3byBieXRlY29kZXMuCisKKyAgICAgICAgQW5kIGZv
ciBvcF9kZWZpbmVfYWNjZXNzb3JfcHJvcGVydHksIHdlIHBlcmZvcm0gQ2VsbFVzZSBlZGdlIGZp
bHRlciB0byBnZXR0ZXIgYW5kIHNldHRlciBjaGlsZHJlbi4KKyAgICAgICAgVGhpcyBlZGdlIGZp
bHRlciBtYWtlcyB1cyBwb3NzaWJsZSB0byB1c2UgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYW5kIHJl
ZHVjZSB0aGUgbnVtYmVyIG9mIHVzZWQgcmVnaXN0ZXJzCisgICAgICAgIGluIGNvbXBhcmlzb24g
d2l0aCBKU1ZhbHVlT3BlcmFuZC4gVG8gbWFrZSBjaGlsZHJlbiBDZWxscyBldmVuIGlmIHdlIGRv
IG5vdCBzcGVjaWZ5IHNvbWUgYWNjZXNzb3JzIChmb3IKKyAgICAgICAgZXhhbXBsZSwgeyBnZXQ6
IGZ1bmMsIHNldDogbnVsbCB9IGNhc2UpLCB3ZSBmaWxsIHJlZ2lzdGVycyB3aXRoIHNwZWNpYWwg
dGhyb3dUeXBlRXJyb3JGdW5jdGlvbi4KKyAgICAgICAgVGhlIGF0dHJpYnV0ZXMgYml0c2V0IGtl
ZXAgaW5mb3JtYXRpb24gbGlrZSAiVGhpcyBwcm9wZXJ0eSBkZXNjcmlwdG9yIG9ubHkgaGFzIGdl
dHRlciBzbG90Ii4KKworICAgICAgICBJbiB0aGVzZSB0d28gYnl0ZWNvZGVzLCB3ZSB0YWtlIGF0
dHJpYnV0ZXMgKGNvbmZpZ3VyYWJsZSwgZW51bWVyYWJsZSwgd3JpdGFibGUsIGhhc0dldHRlciBl
dGMuKSBhcworICAgICAgICByZWdpc3RlciBpbnN0ZWFkIG9mIGVtYmVkZGluZyBjb25zdGFudCBp
bnQgdmFsdWUgYmVjYXVzZSB3ZSB3aWxsIHVzZSB0aGVzZSBieXRlY29kZXMgdG8gaW1wbGVtZW50
CisgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSBuZXh0LiBJbiBPYmplY3QuZGVmaW5lUHJv
cGVydHkgY2FzZSwgYW4gYXR0cmlidXRlcyBhcmUgbm90IHN0YXRpY2FsbHkgZGVmaW5lZAorICAg
ICAgICBhdCBieXRlY29kZSBjb21waWxpbmcgdGltZS4KKworICAgICAgICBSdW4gRVM2U2FtcGxl
QmVuY2gvQWlyIDIwIHRpbWVzLiBUaGUgcmVzdWx0IHNob3dzIH4yJSBwZXJmb3JtYW5jZSBpbXBy
b3ZlbWVudC4KKworICAgICAgICBCYXNlbGluZToKKyAgICAgICAgICAgIGZpcnN0SXRlcmF0aW9u
OiAgICAgODQuMDUgbXMgKy0gNC4zNyBtcworICAgICAgICAgICAgYXZlcmFnZVdvcnN0Q2FzZTog
ICA0MC41NCBtcyArLSAyLjgxIG1zCisgICAgICAgICAgICBzdGVhZHlTdGF0ZTogICAgICAgIDMz
MTcuNDkgbXMgKy0gNDguMjUgbXMKKyAgICAgICAgICAgIHN1bW1hcnk6ICAgICAgICAgICAgMjIz
LjUxIG1zICstIDUuMDcgbXMKKworICAgICAgICBQYXRjaGVkOgorICAgICAgICAgICAgZmlyc3RJ
dGVyYXRpb246ICAgICA4NC40NiBtcyArLSA0LjIyIG1zCisgICAgICAgICAgICBhdmVyYWdlV29y
c3RDYXNlOiAgIDQxLjQ4IG1zICstIDIuMzMgbXMKKyAgICAgICAgICAgIHN0ZWFkeVN0YXRlOiAg
ICAgICAgMzI1My40OCBtcyArLSAyOS4zMSBtcworICAgICAgICAgICAgc3VtbWFyeTogICAgICAg
ICAgICAyMjQuNDAgbXMgKy0gNC43MiBtcworCisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3Qu
anNvbjoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVVzZURlZi5oOgorICAgICAgICAoSlND
Ojpjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZURl
ZnNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoK
KyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUpOgorICAgICAgICAqIGJ5dGVj
b2RlL1NwZWNpYWxQb2ludGVyLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRNb3ZlTGlu
a1RpbWVDb25zdGFudCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2Fs
bERlZmluZVByb3BlcnR5KToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuaDoKKyAgICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAg
KEpTQzo6UHJvcGVydHlMaXN0Tm9kZTo6ZW1pdFB1dENvbnN0YW50UHJvcGVydHkpOgorICAgICAg
ICAoSlNDOjpCaXR3aXNlTm90Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Q2xh
c3NFeHByTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6T2JqZWN0UGF0dGVybk5v
ZGU6OmJpbmRWYWx1ZSk6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxp
bmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0
YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToK
KyAgICAgICAgKiBkZmcvREZHQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpj
YXBhYmlsaXR5TGV2ZWwpOgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyaXplLmg6CisgICAgICAg
IChKU0M6OkRGRzo6Y2xvYmJlcml6ZSk6CisgICAgICAgICogZGZnL0RGR0RvZXNHQy5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6ZG9lc0dDKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAg
KiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6Cisg
ICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlv
blByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdTYWZlVG9FeGVjdXRlLmg6
CisgICAgICAgIChKU0M6OkRGRzo6c2FmZVRvRXhlY3V0ZSk6CisgICAgICAgICogZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZURlZmluZURhdGFQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVEZWZpbmVBY2Nlc3NvclByb3BlcnR5KToKKyAgICAgICAgKiBkZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FsbE9w
ZXJhdGlvbik6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcv
REZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExDYXBhYmlsaXRpZXMuY3BwOgorICAgICAg
ICAoSlNDOjpGVEw6OmNhbkNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMu
Y3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTm9kZSk6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVEZWZpbmVEYXRh
UHJvcGVydHkpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxl
RGVmaW5lQWNjZXNzb3JQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvQjM6OmNvbXBpbGVQdXRCeVZhbFdpdGhUaGlzKTogRGVsZXRlZC4KKyAgICAgICAgKiBqaXQv
Q0NhbGxIZWxwZXJzLmNwcDoKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpzZXR1cEZvdXJT
dHViQXJnc0dQUik6IERlbGV0ZWQuCisgICAgICAgICogaml0L0NDYWxsSGVscGVycy5oOgorICAg
ICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OnNldHVwRm91clN0dWJBcmdzR1BSKToKKyAgICAgICAg
KEpTQzo6Q0NhbGxIZWxwZXJzOjpzZXR1cEZpdmVTdHViQXJnc0dQUik6CisgICAgICAgIChKU0M6
OkNDYWxsSGVscGVyczo6c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKToKKyAgICAgICAgKEpT
Qzo6Q0NhbGxIZWxwZXJzOjpzZXR1cFN0dWJBcmdzR1BSKToKKyAgICAgICAgKEpTQzo6Q0NhbGxI
ZWxwZXJzOjpwcmVwYXJlRm9yVGFpbENhbGxTbG93KTogRGVsZXRlZC4KKyAgICAgICAgKiBqaXQv
SklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAg
ICAgICAgKiBqaXQvSklULmg6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuaDoKKyAgICAg
ICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRf
b3BfZGVmaW5lX2RhdGFfcHJvcGVydHkpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZGVm
aW5lX2FjY2Vzc29yX3Byb3BlcnR5KToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJl
dGVyLmFzbToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6CisgICAgICAg
IChKU0M6OlNMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRo
cy5oOgorICAgICAgICAqIHJ1bnRpbWUvRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzLmg6IEFkZGVk
LgorICAgICAgICAoSlNDOjpEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXM6OkRlZmluZVByb3BlcnR5
QXR0cmlidXRlcyk6CisgICAgICAgIChKU0M6OkRlZmluZVByb3BlcnR5QXR0cmlidXRlczo6cmF3
UmVwcmVzZW50YXRpb24pOgorICAgICAgICAoSlNDOjpEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXM6
Omhhc1ZhbHVlKToKKyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzOjpzZXRW
YWx1ZSk6CisgICAgICAgIChKU0M6OkRlZmluZVByb3BlcnR5QXR0cmlidXRlczo6aGFzR2V0KToK
KyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzOjpzZXRHZXQpOgorICAgICAg
ICAoSlNDOjpEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXM6Omhhc1NldCk6CisgICAgICAgIChKU0M6
OkRlZmluZVByb3BlcnR5QXR0cmlidXRlczo6c2V0U2V0KToKKyAgICAgICAgKEpTQzo6RGVmaW5l
UHJvcGVydHlBdHRyaWJ1dGVzOjp3cml0YWJsZSk6CisgICAgICAgIChKU0M6OkRlZmluZVByb3Bl
cnR5QXR0cmlidXRlczo6Y29uZmlndXJhYmxlKToKKyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVy
dHlBdHRyaWJ1dGVzOjplbnVtZXJhYmxlKToKKyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVydHlB
dHRyaWJ1dGVzOjpzZXRXcml0YWJsZSk6CisgICAgICAgIChKU0M6OkRlZmluZVByb3BlcnR5QXR0
cmlidXRlczo6c2V0Q29uZmlndXJhYmxlKToKKyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVydHlB
dHRyaWJ1dGVzOjpzZXRFbnVtZXJhYmxlKToKKyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVydHlB
dHRyaWJ1dGVzOjpmaWxsV2l0aFRyaVN0YXRlKToKKyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVy
dHlBdHRyaWJ1dGVzOjpleHRyYWN0VHJpU3RhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9i
YWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAg
ICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50
aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp0aHJv
d1R5cGVFcnJvckZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmRlZmlu
ZVByb3BlcnR5RnVuY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0Q29u
c3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpPYmplY3RDb25zdHJ1Y3Rvcjo6YWRkRGVmaW5l
UHJvcGVydHkpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3Iu
aDoKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5oOgorICAgICAgICAoSlND
Ojp0b1Byb3BlcnR5RGVzY3JpcHRvcik6CisKIDIwMTYtMDktMjYgIFNhbSBXZWluaWcgIDxzYW1A
d2Via2l0Lm9yZz4KIAogICAgICAgICBNYWtlIERGR1Nsb3dQYXRoR2VuZXJhdG9yIGEgYml0IG1v
cmUgdmFyaWFkaWMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZjczNGY5MTYyM2Zh
NDNkZDU0YTZhMDg2ODkyYTlhYWZiNTE4MTUzNS4uN2M3YzQ2YmRmZjExYmY1NGRkYTg5NzU1NWUz
YmQwMzZhZjE5Yjc5OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIxNjgsNiAr
MjE2OCw3IEBACiAJCUZFRDk0RjJGMTcxRTNFMjMwMEJFNzdBNCAvKiBXYXRjaGRvZy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVEOTRGMkMxNzFFM0Uy
MzAwQkU3N0E0IC8qIFdhdGNoZG9nLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJRkVGMDQwNTExQUFFNjYyRDAwQkQyOEIwIC8qIENvbXBhcmVBbmRT
d2FwVGVzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGRUYwNDA1MDFBQUU2NjJEMDBCRDI4QjAgLyogQ29tcGFyZUFuZFN3YXBUZXN0LmNwcCAqLzsg
fTsKIAkJRkVGRDZGQzYxRDVFNzk5MjAwOEYyRjBCIC8qIEpTU3RyaW5nSW5saW5lcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVGRDZGQzUxRDVFNzk3
MDAwOEYyRjBCIC8qIEpTU3RyaW5nSW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ3M0RBNEE0NzY0QzQ1RkU4NzFCMDQ4NSAvKiBEZWZp
bmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDE2OTk0OEVERTY4RDQwNTRCMDFFRjc5NyAvKiBEZWZpbmVQcm9wZXJ0eUF0
dHJpYnV0ZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWENvbnRhaW5l
ckl0ZW1Qcm94eSBzZWN0aW9uICovCkBAIC00NDk4LDYgKzQ0OTksNyBAQAogCQlGRUYwNDA1MDFB
QUU2NjJEMDBCRDI4QjAgLyogQ29tcGFyZUFuZFN3YXBUZXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENvbXBhcmVBbmRTd2FwVGVzdC5jcHA7IHBhdGggPSBBUEkv
dGVzdHMvQ29tcGFyZUFuZFN3YXBUZXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRkVGMDQwNTIxQUFFQzRFRDAwQkQyOEIwIC8qIENvbXBhcmVBbmRTd2FwVGVzdC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBDb21wYXJlQW5kU3dhcFRlc3QuaDsgcGF0aCA9
IEFQSS90ZXN0cy9Db21wYXJlQW5kU3dhcFRlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRkVGRDZGQzUxRDVFNzk3MDAwOEYyRjBCIC8qIEpTU3RyaW5nSW5saW5lcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1N0cmluZ0lubGluZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTY5OTQ4RURFNjhENDA1NEIwMUVGNzk3IC8qIERlZmluZVBy
b3BlcnR5QXR0cmlidXRlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBEZWZp
bmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaDsgcGF0aCA9IERlZmluZVByb3BlcnR5QXR0cmlidXRlcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogLyogRW5kIFBCWEZpbGVSZWZlcmVuY2Ugc2Vj
dGlvbiAqLwogCiAvKiBCZWdpbiBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9uICovCkBA
IC02MjQxLDYgKzYyNDMsNyBAQAogCQkJCTcwOUZCODY2MUFFMzM1QzYwMDM5RDA2OSAvKiBXZWFr
U2V0UHJvdG90eXBlLmggKi8sCiAJCQkJQTdEQ0I3NzkxMkUzRDkwNTAwOTExOTQwIC8qIFdyaXRl
QmFycmllci5oICovLAogCQkJCUMyQjZENzUyMThBMzM3OTMwMDRBOTMwMSAvKiBXcml0ZUJhcnJp
ZXJJbmxpbmVzLmggKi8sCisJCQkJMTY5OTQ4RURFNjhENDA1NEIwMUVGNzk3IC8qIERlZmluZVBy
b3BlcnR5QXR0cmlidXRlcy5oICovLAogCQkJKTsKIAkJCXBhdGggPSBydW50aW1lOwogCQkJc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTgzNzYsNiArODM3OSw3IEBACiAJCQkJODY3MDRCNDMx
MkRCOEE4MTAwQTlGRTdCIC8qIFlhcnJTeW50YXhDaGVja2VyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBNzlEM0VEOUM1MDY0REQwQTg0NjZBM0EgLyogTW9kdWxlU2NvcGVEYXRhLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlEOTcyMjc1MkRDNTQ0NTlCOTEyNUI1MzkgLyogSlNNb2R1bGVMb2FkZXIuaCBp
biBIZWFkZXJzICovLAorCQkJCTQ3M0RBNEE0NzY0QzQ1RkU4NzFCMDQ4NSAvKiBEZWZpbmVQcm9w
ZXJ0eUF0dHJpYnV0ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBs
b3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCmluZGV4IGRjNTk5ODA1NjkxY2RhNTdiNWQz
NjExNTk5ZGQ1ZjI4ZDcxMDJkYmUuLjU3NmRlNDAwNjA0ZDEwMTQ3NTFjYzYzYmVhY2VjNzdhNTVm
ZDRmZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUxpc3QuanNvbgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVM
aXN0Lmpzb24KQEAgLTgxLDYgKzgxLDggQEAKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3B1
dF9nZXR0ZXJfc2V0dGVyX2J5X2lkIiwgImxlbmd0aCIgOiA2IH0sCiAgICAgICAgICAgICB7ICJu
YW1lIiA6ICJvcF9wdXRfZ2V0dGVyX2J5X3ZhbCIsICJsZW5ndGgiIDogNSB9LAogICAgICAgICAg
ICAgeyAibmFtZSIgOiAib3BfcHV0X3NldHRlcl9ieV92YWwiLCAibGVuZ3RoIiA6IDUgfSwKKyAg
ICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2RlZmluZV9kYXRhX3Byb3BlcnR5IiwgImxlbmd0aCIg
OiA1IH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9kZWZpbmVfYWNjZXNzb3JfcHJvcGVy
dHkiLCAibGVuZ3RoIiA6IDYgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2ptcCIsICJs
ZW5ndGgiIDogMiB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfanRydWUiLCAibGVuZ3Ro
IiA6IDMgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2pmYWxzZSIsICJsZW5ndGgiIDog
MyB9LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
VXNlRGVmLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYu
aAppbmRleCBkYWJjZTRlZGYwMzI2NDhjMDg5Njg5OTgyYTg4MTdlYzYwMGE4MTdlLi40NWE5ZTA5
Y2JkODJlZjY4OWQzYjM0ZjhlZTUwZTExZWI5NWEzNzYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaApAQCAtMTQ0LDYgKzE0NCwyMyBAQCB2
b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqIGNvZGVCbG9jaywgT3Bjb2Rl
SUQgb3Bjb2RlSUQsIEluc3RydWN0aQogICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1
Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQpOwogICAgICAgICByZXR1
cm47CiAgICAgfQorICAgIGNhc2Ugb3BfZGVmaW5lX2RhdGFfcHJvcGVydHk6IHsKKyAgICAgICAg
QVNTRVJUKG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdID4gNCk7CisgICAgICAgIGZ1bmN0b3IoY29k
ZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7
CisgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3Ry
dWN0aW9uWzJdLnUub3BlcmFuZCk7CisgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVj
dGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzNdLnUub3BlcmFuZCk7CisgICAgICAgIGZ1bmN0
b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzRdLnUub3Bl
cmFuZCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgY2FzZSBvcF9kZWZpbmVfYWNjZXNz
b3JfcHJvcGVydHk6IHsKKyAgICAgICAgQVNTRVJUKG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdID4g
NSk7CisgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGlu
c3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CisgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0
cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzJdLnUub3BlcmFuZCk7CisgICAgICAgIGZ1
bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzNdLnUu
b3BlcmFuZCk7CisgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2Rl
SUQsIGluc3RydWN0aW9uWzRdLnUub3BlcmFuZCk7CisgICAgICAgIGZ1bmN0b3IoY29kZUJsb2Nr
LCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzVdLnUub3BlcmFuZCk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CiAgICAgY2FzZSBvcF9nZXRfcHJvcGVydHlfZW51bWVyYXRvcjoK
ICAgICBjYXNlIG9wX2dldF9lbnVtZXJhYmxlX2xlbmd0aDoKICAgICBjYXNlIG9wX25ld19mdW5j
X2V4cDoKQEAgLTMzMiw2ICszNDksOCBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZz
ZXQoQmxvY2sqIGNvZGVCbG9jaywgT3Bjb2RlSUQgb3Bjb2RlSUQsIEluc3RydWN0aQogICAgIGNh
c2Ugb3BfcHV0X2J5X3ZhbDoKICAgICBjYXNlIG9wX3B1dF9ieV92YWxfZGlyZWN0OgogICAgIGNh
c2Ugb3BfcHV0X2J5X2luZGV4OgorICAgIGNhc2Ugb3BfZGVmaW5lX2RhdGFfcHJvcGVydHk6Cisg
ICAgY2FzZSBvcF9kZWZpbmVfYWNjZXNzb3JfcHJvcGVydHk6CiAgICAgY2FzZSBvcF9wcm9maWxl
X3R5cGU6CiAgICAgY2FzZSBvcF9wcm9maWxlX2NvbnRyb2xfZmxvdzoKICAgICBjYXNlIG9wX3B1
dF90b19hcmd1bWVudHM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suY3BwCmluZGV4IDdjOWI1YzJiYTZkNmQ0MjdkMDc5N2IyYWY0ODE4ZGI5M2Y4OTkxNjkuLjdm
Nzc0YTkxNmJiMTQyMDgxMTQ4NGQwNWY1NGQyYTI5NGFmNWM2NDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC0xMjMzLDYgKzEyMzMsMjUgQEAg
dm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZSgKICAgICAgICAgICAgIG91dC5wcmludGYoIiVz
LCAlcywgJWQsICVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSku
ZGF0YSgpLCBuMCwgcmVnaXN0ZXJOYW1lKHIyKS5kYXRhKCkpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9kZWZpbmVfZGF0YV9wcm9wZXJ0eTogeworICAg
ICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBpbnQgcjEg
PSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIGludCByMiA9ICgrK2l0KS0+dS5vcGVy
YW5kOworICAgICAgICAgICAgaW50IHIzID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAg
ICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJkZWZpbmVfZGF0
YV9wcm9wZXJ0eSIpOworICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCAlcywgJXMiLCBy
ZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIHJlZ2lzdGVy
TmFtZShyMikuZGF0YSgpLCByZWdpc3Rlck5hbWUocjMpLmRhdGEoKSk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIG9wX2RlZmluZV9hY2Nlc3Nvcl9wcm9wZXJ0
eTogeworICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAg
ICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIGludCByMiA9ICgrK2l0
KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgaW50IHIzID0gKCsraXQpLT51Lm9wZXJhbmQ7Cisg
ICAgICAgICAgICBpbnQgcjQgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIHByaW50
TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgImRlZmluZV9hY2Nlc3Nvcl9w
cm9wZXJ0eSIpOworICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCAlcywgJXMsICVzIiwg
cmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCByZWdpc3Rl
ck5hbWUocjIpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIzKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShy
NCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGNhc2Ug
b3BfZGVsX2J5X2lkOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsK
ICAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWNpYWxQb2ludGVyLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY2lhbFBvaW50ZXIuaAppbmRleCA2NGZiMjNmY2YyN2Q0
MTI1MDQ4MDIxOWU4YzhjNDFiN2M0MWE3ZWY1Li45MGNiM2E5OTI2ZDYyZTYwNGIxOGMzYjNkYmQ1
NTIyYjQ1MmFlZGZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
U3BlY2lhbFBvaW50ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3Bl
Y2lhbFBvaW50ZXIuaApAQCAtNDIsNyArNDIsNyBAQCBlbnVtIFBvaW50ZXIgewogfSAvLyBuYW1l
c3BhY2UgU3BlY2lhbAogCiBlbnVtIGNsYXNzIExpbmtUaW1lQ29uc3RhbnQgewotICAgIERlZmlu
ZVByb3BlcnR5RnVuY3Rpb24sCisgICAgVGhyb3dUeXBlRXJyb3JGdW5jdGlvbiwKIH07CiBjb25z
dCB1bnNpZ25lZCBMaW5rVGltZUNvbnN0YW50Q291bnQgPSAxOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmlu
ZGV4IGNjNzE3MjNlZjNjMGY1ZDRiYjNjY2RlY2I4YmE5NzYyNzIzZDMyZmUuLmIwYzNjY2Q1YWNi
MjU1NjE4OGQ5MjgyMjI1YTU3NGIxZjA0NzJjMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0zNSw2
ICszNSw3IEBACiAjaW5jbHVkZSAiQnVpbHRpbkV4ZWN1dGFibGVzLmgiCiAjaW5jbHVkZSAiQnl0
ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uaCIKICNpbmNsdWRlICJCeXRlY29kZUxpdmVuZXNzQW5h
bHlzaXMuaCIKKyNpbmNsdWRlICJEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaCIKICNpbmNsdWRl
ICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0dl
bmVyYXRvckZ1bmN0aW9uLmgiCkBAIC0xNTQzLDYgKzE1NDQsOSBAQCBSZWdpc3RlcklEKiBCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdE1vdmVMaW5rVGltZUNvbnN0YW50KFJlZ2lzdGVySUQqIGRzdCwg
TGlua1RpbQogICAgICAgICBtX2xpbmtUaW1lQ29uc3RhbnRSZWdpc3RlcnNbY29uc3RhbnRJbmRl
eF0gPSAmbV9jb25zdGFudFBvb2xSZWdpc3RlcnNbaW5kZXhdOwogICAgIH0KIAorICAgIGlmICgh
ZHN0KQorICAgICAgICByZXR1cm4gbV9saW5rVGltZUNvbnN0YW50UmVnaXN0ZXJzW2NvbnN0YW50
SW5kZXhdOworCiAgICAgZW1pdE9wY29kZShvcF9tb3YpOwogICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZChkc3QtPmluZGV4KCkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtX2xpbmtUaW1l
Q29uc3RhbnRSZWdpc3RlcnNbY29uc3RhbnRJbmRleF0tPmluZGV4KCkpOwpAQCAtMzI2OCwzOCAr
MzI3Miw1OSBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TG9nU2hhZG93Q2hpY2tlblRh
aWxJZk5lY2Vzc2FyeSgpCiB9CiAKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxsRGVm
aW5lUHJvcGVydHkoUmVnaXN0ZXJJRCogbmV3T2JqLCBSZWdpc3RlcklEKiBwcm9wZXJ0eU5hbWVS
ZWdpc3RlciwKLSAgICBSZWdpc3RlcklEKiB2YWx1ZVJlZ2lzdGVyLCBSZWdpc3RlcklEKiBnZXR0
ZXJSZWdpc3RlciwgUmVnaXN0ZXJJRCogc2V0dGVyUmVnaXN0ZXIsIHVuc2lnbmVkIG9wdGlvbnMs
IGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBwb3NpdGlvbikKKyAgICBSZWdpc3RlcklEKiB2YWx1ZVJl
Z2lzdGVyLCBSZWdpc3RlcklEKiBnZXR0ZXJSZWdpc3RlciwgUmVnaXN0ZXJJRCogc2V0dGVyUmVn
aXN0ZXIsIHVuc2lnbmVkIG9wdGlvbnMpCiB7Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGRlc2Ny
aXB0b3JSZWdpc3RlciA9IGVtaXROZXdPYmplY3QobmV3VGVtcG9yYXJ5KCkpOwotCi0gICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IHRydWVSZWdpc3RlciA9IGVtaXRMb2FkKG5ld1RlbXBvcmFyeSgpLCB0
cnVlKTsKKyAgICBEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMgYXR0cmlidXRlczsKICAgICBpZiAo
b3B0aW9ucyAmIFByb3BlcnR5Q29uZmlndXJhYmxlKQotICAgICAgICBlbWl0RGlyZWN0UHV0QnlJ
ZChkZXNjcmlwdG9yUmVnaXN0ZXIuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS5jb25maWd1cmFibGUs
IHRydWVSZWdpc3Rlci5nZXQoKSwgUHJvcGVydHlOb2RlOjpVbmtub3duKTsKKyAgICAgICAgYXR0
cmlidXRlcy5zZXRDb25maWd1cmFibGUodHJ1ZSk7CisKICAgICBpZiAob3B0aW9ucyAmIFByb3Bl
cnR5V3JpdGFibGUpCi0gICAgICAgIGVtaXREaXJlY3RQdXRCeUlkKGRlc2NyaXB0b3JSZWdpc3Rl
ci5nZXQoKSwgcHJvcGVydHlOYW1lcygpLndyaXRhYmxlLCB0cnVlUmVnaXN0ZXIuZ2V0KCksIFBy
b3BlcnR5Tm9kZTo6VW5rbm93bik7Ci0gICAgZWxzZSBpZiAodmFsdWVSZWdpc3RlcikgewotICAg
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZmFsc2VSZWdpc3RlciA9IGVtaXRMb2FkKG5ld1RlbXBv
cmFyeSgpLCBmYWxzZSk7Ci0gICAgICAgIGVtaXREaXJlY3RQdXRCeUlkKGRlc2NyaXB0b3JSZWdp
c3Rlci5nZXQoKSwgcHJvcGVydHlOYW1lcygpLndyaXRhYmxlLCBmYWxzZVJlZ2lzdGVyLmdldCgp
LCBQcm9wZXJ0eU5vZGU6OlVua25vd24pOwotICAgIH0KKyAgICAgICAgYXR0cmlidXRlcy5zZXRX
cml0YWJsZSh0cnVlKTsKKyAgICBlbHNlIGlmICh2YWx1ZVJlZ2lzdGVyKQorICAgICAgICBhdHRy
aWJ1dGVzLnNldFdyaXRhYmxlKGZhbHNlKTsKKwogICAgIGlmIChvcHRpb25zICYgUHJvcGVydHlF
bnVtZXJhYmxlKQotICAgICAgICBlbWl0RGlyZWN0UHV0QnlJZChkZXNjcmlwdG9yUmVnaXN0ZXIu
Z2V0KCksIHByb3BlcnR5TmFtZXMoKS5lbnVtZXJhYmxlLCB0cnVlUmVnaXN0ZXIuZ2V0KCksIFBy
b3BlcnR5Tm9kZTo6VW5rbm93bik7CisgICAgICAgIGF0dHJpYnV0ZXMuc2V0RW51bWVyYWJsZSh0
cnVlKTsKIAogICAgIGlmICh2YWx1ZVJlZ2lzdGVyKQotICAgICAgICBlbWl0RGlyZWN0UHV0QnlJ
ZChkZXNjcmlwdG9yUmVnaXN0ZXIuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS52YWx1ZSwgdmFsdWVS
ZWdpc3RlciwgUHJvcGVydHlOb2RlOjpVbmtub3duKTsKKyAgICAgICAgYXR0cmlidXRlcy5zZXRW
YWx1ZSgpOwogICAgIGlmIChnZXR0ZXJSZWdpc3RlcikKLSAgICAgICAgZW1pdERpcmVjdFB1dEJ5
SWQoZGVzY3JpcHRvclJlZ2lzdGVyLmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkuZ2V0LCBnZXR0ZXJS
ZWdpc3RlciwgUHJvcGVydHlOb2RlOjpVbmtub3duKTsKKyAgICAgICAgYXR0cmlidXRlcy5zZXRH
ZXQoKTsKICAgICBpZiAoc2V0dGVyUmVnaXN0ZXIpCi0gICAgICAgIGVtaXREaXJlY3RQdXRCeUlk
KGRlc2NyaXB0b3JSZWdpc3Rlci5nZXQoKSwgcHJvcGVydHlOYW1lcygpLnNldCwgc2V0dGVyUmVn
aXN0ZXIsIFByb3BlcnR5Tm9kZTo6VW5rbm93bik7CisgICAgICAgIGF0dHJpYnV0ZXMuc2V0U2V0
KCk7CiAKLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZGVmaW5lUHJvcGVydHlSZWdpc3RlciA9IGVt
aXRNb3ZlTGlua1RpbWVDb25zdGFudChuZXdUZW1wb3JhcnkoKSwgTGlua1RpbWVDb25zdGFudDo6
RGVmaW5lUHJvcGVydHlGdW5jdGlvbik7CisgICAgQVNTRVJUKCF2YWx1ZVJlZ2lzdGVyIHx8ICgh
Z2V0dGVyUmVnaXN0ZXIgJiYgIXNldHRlclJlZ2lzdGVyKSk7CiAKLSAgICBDYWxsQXJndW1lbnRz
IGNhbGxBcmd1bWVudHMoKnRoaXMsIG51bGxwdHIsIDMpOwotICAgIGVtaXRMb2FkKGNhbGxBcmd1
bWVudHMudGhpc1JlZ2lzdGVyKCksIGpzVW5kZWZpbmVkKCkpOwotICAgIGVtaXRNb3ZlKGNhbGxB
cmd1bWVudHMuYXJndW1lbnRSZWdpc3RlcigwKSwgbmV3T2JqKTsKLSAgICBlbWl0TW92ZShjYWxs
QXJndW1lbnRzLmFyZ3VtZW50UmVnaXN0ZXIoMSksIHByb3BlcnR5TmFtZVJlZ2lzdGVyKTsKLSAg
ICBlbWl0TW92ZShjYWxsQXJndW1lbnRzLmFyZ3VtZW50UmVnaXN0ZXIoMiksIGRlc2NyaXB0b3JS
ZWdpc3Rlci5nZXQoKSk7CisgICAgaWYgKGF0dHJpYnV0ZXMuaGFzR2V0KCkgfHwgYXR0cmlidXRl
cy5oYXNTZXQoKSkgeworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGhyb3dUeXBlRXJyb3JG
dW5jdGlvbjsKKyAgICAgICAgaWYgKCFhdHRyaWJ1dGVzLmhhc0dldCgpIHx8ICFhdHRyaWJ1dGVz
Lmhhc1NldCgpKQorICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3JGdW5jdGlvbiA9IGVtaXRNb3Zl
TGlua1RpbWVDb25zdGFudChudWxscHRyLCBMaW5rVGltZUNvbnN0YW50OjpUaHJvd1R5cGVFcnJv
ckZ1bmN0aW9uKTsKIAotICAgIGVtaXRDYWxsKG5ld1RlbXBvcmFyeSgpLCBkZWZpbmVQcm9wZXJ0
eVJlZ2lzdGVyLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIHBvc2l0
aW9uLCBwb3NpdGlvbiwgcG9zaXRpb24pOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZ2V0
dGVyOworICAgICAgICBpZiAoYXR0cmlidXRlcy5oYXNHZXQoKSkKKyAgICAgICAgICAgIGdldHRl
ciA9IGdldHRlclJlZ2lzdGVyOworICAgICAgICBlbHNlCisgICAgICAgICAgICBnZXR0ZXIgPSB0
aHJvd1R5cGVFcnJvckZ1bmN0aW9uOworCisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzZXR0
ZXI7CisgICAgICAgIGlmIChhdHRyaWJ1dGVzLmhhc1NldCgpKQorICAgICAgICAgICAgc2V0dGVy
ID0gc2V0dGVyUmVnaXN0ZXI7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHNldHRlciA9IHRo
cm93VHlwZUVycm9yRnVuY3Rpb247CisKKyAgICAgICAgZW1pdE9wY29kZShvcF9kZWZpbmVfYWNj
ZXNzb3JfcHJvcGVydHkpOworICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobmV3T2JqLT5p
bmRleCgpKTsKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHByb3BlcnR5TmFtZVJlZ2lz
dGVyLT5pbmRleCgpKTsKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGdldHRlci0+aW5k
ZXgoKSk7CisgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChzZXR0ZXItPmluZGV4KCkpOwor
ICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIo
YXR0cmlidXRlcy5yYXdSZXByZXNlbnRhdGlvbigpKSktPmluZGV4KCkpOworICAgIH0gZWxzZSB7
CisgICAgICAgIGVtaXRPcGNvZGUob3BfZGVmaW5lX2RhdGFfcHJvcGVydHkpOworICAgICAgICBp
bnN0cnVjdGlvbnMoKS5hcHBlbmQobmV3T2JqLT5pbmRleCgpKTsKKyAgICAgICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKHByb3BlcnR5TmFtZVJlZ2lzdGVyLT5pbmRleCgpKTsKKyAgICAgICAgaW5z
dHJ1Y3Rpb25zKCkuYXBwZW5kKHZhbHVlUmVnaXN0ZXItPmluZGV4KCkpOworICAgICAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQoZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoYXR0cmlidXRlcy5y
YXdSZXByZXNlbnRhdGlvbigpKSktPmluZGV4KCkpOworICAgIH0KIH0KIAogUmVnaXN0ZXJJRCog
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXR1cm4oUmVnaXN0ZXJJRCogc3JjKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5o
CmluZGV4IGQzMjY0YzRhMDg3N2EzNjJlOTA0ZTFmODM2YmJkNDU2MDQyOWUwZmUuLjllNmNkYmEz
NjIzZTkyNjI2Y2M4ZmQzOTdmMDllNzE0MzNmYjFjYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTU4OCw3
ICs1ODgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIFByb3BlcnR5RW51bWVyYWJs
ZSAgID0gMSA8PCAyLAogICAgICAgICB9OwogICAgICAgICB2b2lkIGVtaXRDYWxsRGVmaW5lUHJv
cGVydHkoUmVnaXN0ZXJJRCogbmV3T2JqLCBSZWdpc3RlcklEKiBwcm9wZXJ0eU5hbWVSZWdpc3Rl
ciwKLSAgICAgICAgICAgIFJlZ2lzdGVySUQqIHZhbHVlUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIGdl
dHRlclJlZ2lzdGVyLCBSZWdpc3RlcklEKiBzZXR0ZXJSZWdpc3RlciwgdW5zaWduZWQgb3B0aW9u
cywgY29uc3QgSlNUZXh0UG9zaXRpb24mKTsKKyAgICAgICAgICAgIFJlZ2lzdGVySUQqIHZhbHVl
UmVnaXN0ZXIsIFJlZ2lzdGVySUQqIGdldHRlclJlZ2lzdGVyLCBSZWdpc3RlcklEKiBzZXR0ZXJS
ZWdpc3RlciwgdW5zaWduZWQgb3B0aW9ucyk7CiAKICAgICAgICAgdm9pZCBlbWl0RW51bWVyYXRp
b24oVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIGVudW1lcmF0aW9uTm9kZSwgRXhwcmVzc2lvbk5v
ZGUqIHN1YmplY3ROb2RlLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPHZvaWQoQnl0ZWNvZGVHZW5lcmF0
b3ImLCBSZWdpc3RlcklEKik+JiBjYWxsQmFjaywgVmFyaWFibGVFbnZpcm9ubWVudE5vZGUqID0g
bnVsbHB0ciwgUmVnaXN0ZXJJRCogZm9yTG9vcFN5bWJvbFRhYmxlID0gbnVsbHB0cik7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2Vu
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNw
cAppbmRleCBjMjY4YTI2MDhkMzhkNmRlYTdhY2I4MTc3MDdlNTlmMWM1MjVmMjgyLi4yYjU5MGM4
N2MwZjE2YjAwZjYyYzAzZmY4NjYxYjU5MzBmZDYwZTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC01OTAsMTIgKzU5
MCwxMiBAQCB2b2lkIFByb3BlcnR5TGlzdE5vZGU6OmVtaXRQdXRDb25zdGFudFByb3BlcnR5KEJ5
dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZwogICAgICAgICBBU1NFUlQobm9kZS5uZWVk
c1N1cGVyQmluZGluZygpKTsKICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByb3BlcnR5TmFt
ZVJlZ2lzdGVyOwogICAgICAgICBpZiAobm9kZS5uYW1lKCkpCi0gICAgICAgICAgICBwcm9wZXJ0
eU5hbWVSZWdpc3RlciA9IGdlbmVyYXRvci5lbWl0TG9hZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5
KCksICpub2RlLm5hbWUoKSk7CisgICAgICAgICAgICBwcm9wZXJ0eU5hbWVSZWdpc3RlciA9IGdl
bmVyYXRvci5lbWl0TG9hZChudWxscHRyLCAqbm9kZS5uYW1lKCkpOwogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICBwcm9wZXJ0eU5hbWVSZWdpc3RlciA9IGdlbmVyYXRvci5lbWl0Tm9kZShub2Rl
Lm1fZXhwcmVzc2lvbik7CiAKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRTZXRGdW5jdGlvbk5hbWVJ
Zk5lZWRlZChub2RlLm1fYXNzaWduLCB2YWx1ZS5nZXQoKSwgcHJvcGVydHlOYW1lUmVnaXN0ZXIu
Z2V0KCkpOwotICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGxEZWZpbmVQcm9wZXJ0eShuZXdPYmos
IHByb3BlcnR5TmFtZVJlZ2lzdGVyLmdldCgpLCB2YWx1ZS5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0
ciwgQnl0ZWNvZGVHZW5lcmF0b3I6OlByb3BlcnR5Q29uZmlndXJhYmxlIHwgQnl0ZWNvZGVHZW5l
cmF0b3I6OlByb3BlcnR5V3JpdGFibGUsIG1fcG9zaXRpb24pOworICAgICAgICBnZW5lcmF0b3Iu
ZW1pdENhbGxEZWZpbmVQcm9wZXJ0eShuZXdPYmosIHByb3BlcnR5TmFtZVJlZ2lzdGVyLmdldCgp
LCB2YWx1ZS5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0ciwgQnl0ZWNvZGVHZW5lcmF0b3I6OlByb3Bl
cnR5Q29uZmlndXJhYmxlIHwgQnl0ZWNvZGVHZW5lcmF0b3I6OlByb3BlcnR5V3JpdGFibGUpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmIChjb25zdCBhdXRvKiBpZGVudGlmaWVyID0g
bm9kZS5uYW1lKCkpIHsKQEAgLTYwNSw3ICs2MDUsNyBAQCB2b2lkIFByb3BlcnR5TGlzdE5vZGU6
OmVtaXRQdXRDb25zdGFudFByb3BlcnR5KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJl
ZwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IGluZGV4ID0gZ2VuZXJhdG9yLmVtaXRMb2FkKGdlbmVyYXRvci5uZXdUZW1wb3Jhcnko
KSwganNOdW1iZXIob3B0aW9uYWxJbmRleC52YWx1ZSgpKSk7CisgICAgICAgIFJlZlB0cjxSZWdp
c3RlcklEPiBpbmRleCA9IGdlbmVyYXRvci5lbWl0TG9hZChudWxscHRyLCBqc051bWJlcihvcHRp
b25hbEluZGV4LnZhbHVlKCkpKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXREaXJlY3RQdXRCeVZh
bChuZXdPYmosIGluZGV4LmdldCgpLCB2YWx1ZS5nZXQoKSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CkBAIC0xNjIzLDcgKzE2MjMsNyBAQCBSZWdpc3RlcklEKiBVbmFyeVBsdXNOb2RlOjplbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRAogIAogUmVn
aXN0ZXJJRCogQml0d2lzZU5vdE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYg
Z2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNy
YzIgPSBnZW5lcmF0b3IuZW1pdExvYWQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBqc051bWJl
cigtMSkpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzcmMyID0gZ2VuZXJhdG9yLmVtaXRMb2Fk
KG51bGxwdHIsIGpzTnVtYmVyKC0xKSk7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNyYzEgPSBn
ZW5lcmF0b3IuZW1pdE5vZGUobV9leHByKTsKICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRCaW5h
cnlPcChvcF9iaXR4b3IsIGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgc3JjMS5nZXQo
KSksIHNyYzEuZ2V0KCksIHNyYzIuZ2V0KCksIE9wZXJhbmRUeXBlcyhtX2V4cHItPnJlc3VsdERl
c2NyaXB0b3IoKSwgUmVzdWx0VHlwZTo6bnVtYmVyVHlwZUlzSW50MzIoKSkpOwogfQpAQCAtMzYw
MywxMiArMzYwMywxMiBAQCBSZWdpc3RlcklEKiBDbGFzc0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRAogICAgICAgICBlbWl0UHV0
SG9tZU9iamVjdChnZW5lcmF0b3IsIGNvbnN0cnVjdG9yLmdldCgpLCBwcm90b3R5cGUuZ2V0KCkp
OwogICAgIH0KIAotICAgIFJlZlB0cjxSZWdpc3RlcklEPiBjb25zdHJ1Y3Rvck5hbWVSZWdpc3Rl
ciA9IGdlbmVyYXRvci5lbWl0TG9hZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHByb3BlcnR5
TmFtZXMuY29uc3RydWN0b3IpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBjb25zdHJ1Y3Rvck5h
bWVSZWdpc3RlciA9IGdlbmVyYXRvci5lbWl0TG9hZChudWxscHRyLCBwcm9wZXJ0eU5hbWVzLmNv
bnN0cnVjdG9yKTsKICAgICBnZW5lcmF0b3IuZW1pdENhbGxEZWZpbmVQcm9wZXJ0eShwcm90b3R5
cGUuZ2V0KCksIGNvbnN0cnVjdG9yTmFtZVJlZ2lzdGVyLmdldCgpLCBjb25zdHJ1Y3Rvci5nZXQo
KSwgbnVsbHB0ciwgbnVsbHB0ciwKLSAgICAgICAgQnl0ZWNvZGVHZW5lcmF0b3I6OlByb3BlcnR5
Q29uZmlndXJhYmxlIHwgQnl0ZWNvZGVHZW5lcmF0b3I6OlByb3BlcnR5V3JpdGFibGUsIG1fcG9z
aXRpb24pOworICAgICAgICBCeXRlY29kZUdlbmVyYXRvcjo6UHJvcGVydHlDb25maWd1cmFibGUg
fCBCeXRlY29kZUdlbmVyYXRvcjo6UHJvcGVydHlXcml0YWJsZSk7CiAKLSAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gcHJvdG90eXBlTmFtZVJlZ2lzdGVyID0gZ2VuZXJhdG9yLmVtaXRMb2FkKGdlbmVy
YXRvci5uZXdUZW1wb3JhcnkoKSwgcHJvcGVydHlOYW1lcy5wcm90b3R5cGUpOwotICAgIGdlbmVy
YXRvci5lbWl0Q2FsbERlZmluZVByb3BlcnR5KGNvbnN0cnVjdG9yLmdldCgpLCBwcm90b3R5cGVO
YW1lUmVnaXN0ZXIuZ2V0KCksIHByb3RvdHlwZS5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0ciwgMCwg
bV9wb3NpdGlvbik7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByb3RvdHlwZU5hbWVSZWdpc3Rl
ciA9IGdlbmVyYXRvci5lbWl0TG9hZChudWxscHRyLCBwcm9wZXJ0eU5hbWVzLnByb3RvdHlwZSk7
CisgICAgZ2VuZXJhdG9yLmVtaXRDYWxsRGVmaW5lUHJvcGVydHkoY29uc3RydWN0b3IuZ2V0KCks
IHByb3RvdHlwZU5hbWVSZWdpc3Rlci5nZXQoKSwgcHJvdG90eXBlLmdldCgpLCBudWxscHRyLCBu
dWxscHRyLCAwKTsKIAogICAgIGlmIChtX3N0YXRpY01ldGhvZHMpCiAgICAgICAgIGdlbmVyYXRv
ci5lbWl0Tm9kZShjb25zdHJ1Y3Rvci5nZXQoKSwgbV9zdGF0aWNNZXRob2RzKTsKQEAgLTM4NzAs
NyArMzg3MCw3IEBAIHZvaWQgT2JqZWN0UGF0dGVybk5vZGU6OmJpbmRWYWx1ZShCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiByaHMpCiAgICAgICAgICAgICBpZiAoIW9w
dGlvbmFsSW5kZXgpCiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKHRlbXAu
Z2V0KCksIHJocywgdGFyZ2V0LnByb3BlcnR5TmFtZSk7CiAgICAgICAgICAgICBlbHNlIHsKLSAg
ICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaW5kZXggPSBnZW5lcmF0b3IuZW1pdExv
YWQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBqc051bWJlcihvcHRpb25hbEluZGV4LnZhbHVl
KCkpKTsKKyAgICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaW5kZXggPSBnZW5lcmF0
b3IuZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIob3B0aW9uYWxJbmRleC52YWx1ZSgpKSk7CiAg
ICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRCeVZhbCh0ZW1wLmdldCgpLCByaHMsIGlu
ZGV4LmdldCgpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGlu
ZXMuaAppbmRleCA4Yzc0MTI2NjI2NWM4MTQ4MDZmMWYwZmI3MTQ4MzdlMjNjNTBkYzhkLi5lOTZi
MTA1Y2FmMWEyZTEwNDFjOTliZjYxYThiOGI2NzM0ZGFjMWQzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5o
CkBAIC0yNjU3LDYgKzI2NTcsMTEgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0
U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAg
Y2xvYmJlcldvcmxkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2xvYmJlckxpbWl0KTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQorCisgICAgY2FzZSBEZWZpbmVEYXRhUHJvcGVydHk6CisgICAgY2Fz
ZSBEZWZpbmVBY2Nlc3NvclByb3BlcnR5OgorICAgICAgICBjbG9iYmVyV29ybGQobm9kZS0+b3Jp
Z2luLnNlbWFudGljLCBjbG9iYmVyTGltaXQpOworICAgICAgICBicmVhazsKICAgICAgICAgCiAg
ICAgY2FzZSBJbjogewogICAgICAgICAvLyBGSVhNRTogV2UgY2FuIGRldGVybWluZSB3aGVuIHRo
ZSBwcm9wZXJ0eSBkZWZpbml0ZWx5IGV4aXN0cyBiYXNlZCBvbiBhYnN0cmFjdApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCAwNDUyMjgw
ZGQyNmY0MGIwYmNhNDVkMzg1MWQxMTBkZjQxNmEwZmE3Li4wYjVmYjk1ZDk1N2IxMmE0MzgxY2Zm
YjliNmMyYTRlYjMyYWIzYTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtNDIzOCw2ICs0MjM4LDM4IEBAIGJvb2wgQnl0ZUNvZGVQ
YXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICBORVhUX09QQ09E
RShvcF9wdXRfYnlfdmFsX3dpdGhfdGhpcyk7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIG9w
X2RlZmluZV9kYXRhX3Byb3BlcnR5OiB7CisgICAgICAgICAgICBOb2RlKiBiYXNlID0gZ2V0KFZp
cnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSk7CisgICAgICAg
ICAgICBOb2RlKiBwcm9wZXJ0eSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0
aW9uWzJdLnUub3BlcmFuZCkpOworICAgICAgICAgICAgTm9kZSogdmFsdWUgPSBnZXQoVmlydHVh
bFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpKTsKKyAgICAgICAgICAg
IE5vZGUqIGF0dHJpYnV0ZXMgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlv
bls0XS51Lm9wZXJhbmQpKTsKKworICAgICAgICAgICAgYWRkVmFyQXJnQ2hpbGQoYmFzZSk7Cisg
ICAgICAgICAgICBhZGRWYXJBcmdDaGlsZChwcm9wZXJ0eSk7CisgICAgICAgICAgICBhZGRWYXJB
cmdDaGlsZCh2YWx1ZSk7CisgICAgICAgICAgICBhZGRWYXJBcmdDaGlsZChhdHRyaWJ1dGVzKTsK
KyAgICAgICAgICAgIGFkZFRvR3JhcGgoTm9kZTo6VmFyQXJnLCBEZWZpbmVEYXRhUHJvcGVydHks
IE9wSW5mbygwKSwgT3BJbmZvKDApKTsKKworICAgICAgICAgICAgTkVYVF9PUENPREUob3BfZGVm
aW5lX2RhdGFfcHJvcGVydHkpOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBvcF9kZWZpbmVf
YWNjZXNzb3JfcHJvcGVydHk6IHsKKyAgICAgICAgICAgIE5vZGUqIGJhc2UgPSBnZXQoVmlydHVh
bFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpKTsKKyAgICAgICAgICAg
IE5vZGUqIHByb3BlcnR5ID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25b
Ml0udS5vcGVyYW5kKSk7CisgICAgICAgICAgICBOb2RlKiBnZXR0ZXIgPSBnZXQoVmlydHVhbFJl
Z2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpKTsKKyAgICAgICAgICAgIE5v
ZGUqIHNldHRlciA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzRdLnUu
b3BlcmFuZCkpOworICAgICAgICAgICAgTm9kZSogYXR0cmlidXRlcyA9IGdldChWaXJ0dWFsUmVn
aXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzVdLnUub3BlcmFuZCkpOworCisgICAgICAgICAgICBh
ZGRWYXJBcmdDaGlsZChiYXNlKTsKKyAgICAgICAgICAgIGFkZFZhckFyZ0NoaWxkKHByb3BlcnR5
KTsKKyAgICAgICAgICAgIGFkZFZhckFyZ0NoaWxkKGdldHRlcik7CisgICAgICAgICAgICBhZGRW
YXJBcmdDaGlsZChzZXR0ZXIpOworICAgICAgICAgICAgYWRkVmFyQXJnQ2hpbGQoYXR0cmlidXRl
cyk7CisgICAgICAgICAgICBhZGRUb0dyYXBoKE5vZGU6OlZhckFyZywgRGVmaW5lQWNjZXNzb3JQ
cm9wZXJ0eSwgT3BJbmZvKDApLCBPcEluZm8oMCkpOworCisgICAgICAgICAgICBORVhUX09QQ09E
RShvcF9kZWZpbmVfYWNjZXNzb3JfcHJvcGVydHkpOworICAgICAgICB9CisKICAgICAgICAgY2Fz
ZSBvcF90cnlfZ2V0X2J5X2lkOgogICAgICAgICBjYXNlIG9wX2dldF9ieV9pZDoKICAgICAgICAg
Y2FzZSBvcF9nZXRfYnlfaWRfcHJvdG9fbG9hZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAppbmRleCA0OGZhNDk1NzJlYzUwZWMxNWQwMzc3NmE1MjJk
NmZiZDM1MmJmZTlhLi5jMzIzZDQ2ZmJjM2NmNWMxMDQ5ZmEyNmZjMGUxOTBmMjI3MWE0NzE4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCkBAIC0x
NzMsNiArMTczLDggQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJRCBv
cGNvZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWMKICAgICBjYXNlIG9wX3B1dF9n
ZXR0ZXJfc2V0dGVyX2J5X2lkOgogICAgIGNhc2Ugb3BfcHV0X2dldHRlcl9ieV92YWw6CiAgICAg
Y2FzZSBvcF9wdXRfc2V0dGVyX2J5X3ZhbDoKKyAgICBjYXNlIG9wX2RlZmluZV9kYXRhX3Byb3Bl
cnR5OgorICAgIGNhc2Ugb3BfZGVmaW5lX2FjY2Vzc29yX3Byb3BlcnR5OgogICAgIGNhc2Ugb3Bf
ZGVsX2J5X2lkOgogICAgIGNhc2Ugb3BfZGVsX2J5X3ZhbDoKICAgICBjYXNlIG9wX2ptcDoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKaW5kZXggYzFjM2ZkZGRiN2E3
YTYwYjQ2NTJhMTdjYWUxYTk4M2Y4Y2FlOTYxMS4uY2NjZGY4YmNkNjI2YWE0ZDY3NjM3M2NkMjg0
MmUyZTU2YWUwYWMxMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
bG9iYmVyaXplLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXpl
LmgKQEAgLTQ4Niw2ICs0ODYsOCBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2Rl
KiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgIGNhc2Ug
UHV0R2V0dGVyU2V0dGVyQnlJZDoKICAgICBjYXNlIFB1dEdldHRlckJ5VmFsOgogICAgIGNhc2Ug
UHV0U2V0dGVyQnlWYWw6CisgICAgY2FzZSBEZWZpbmVEYXRhUHJvcGVydHk6CisgICAgY2FzZSBE
ZWZpbmVBY2Nlc3NvclByb3BlcnR5OgogICAgIGNhc2UgRGVsZXRlQnlJZDoKICAgICBjYXNlIERl
bGV0ZUJ5VmFsOgogICAgIGNhc2UgQXJyYXlQdXNoOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdEb2VzR0MuY3BwCmluZGV4IDJkY2Y1NWQyZWQyOGFhZTYwYjZiOGI3YjliZjZkYTA3MTlkOTJk
ZDUuLmY2OWQyZjlmZjk3ZDQwOGE4ZjJlODE3NmY1YWE3YjNjOWM3NTNkYmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKQEAgLTExMSw2ICsxMTEsOCBAQCBib29sIGRv
ZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBQdXRHZXR0ZXJTZXR0ZXJC
eUlkOgogICAgIGNhc2UgUHV0R2V0dGVyQnlWYWw6CiAgICAgY2FzZSBQdXRTZXR0ZXJCeVZhbDoK
KyAgICBjYXNlIERlZmluZURhdGFQcm9wZXJ0eToKKyAgICBjYXNlIERlZmluZUFjY2Vzc29yUHJv
cGVydHk6CiAgICAgY2FzZSBEZWxldGVCeUlkOgogICAgIGNhc2UgRGVsZXRlQnlWYWw6CiAgICAg
Y2FzZSBDaGVja1N0cnVjdHVyZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRml4dXBQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVw
UGhhc2UuY3BwCmluZGV4IDZlZTUxNDJmNzhmNjBiZjEwOTY4M2M4Yjg5YzE1ZDBlNDU4YjNmZTAu
LmQzYzU5NDEwNGFjOTMwZDU0MWUyNjY5MmEwNWFkNTViOWRkNjk5MzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcApAQCAtMTYwMiw2ICsxNjAyLDM5IEBA
IGNsYXNzIEZpeHVwUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgZml4RWRnZTxV
bnR5cGVkVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBicmVhazsKIAorICAgICAg
ICBjYXNlIERlZmluZURhdGFQcm9wZXJ0eTogeworICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNl
PihtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDApKTsKKyAgICAgICAgICAgIEVkZ2UmIHByb3Bl
cnR5RWRnZSA9IG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSk7CisgICAgICAgICAgICBpZiAo
cHJvcGVydHlFZGdlLT5zaG91bGRTcGVjdWxhdGVTeW1ib2woKSkKKyAgICAgICAgICAgICAgICBm
aXhFZGdlPFN5bWJvbFVzZT4ocHJvcGVydHlFZGdlKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHBy
b3BlcnR5RWRnZS0+c2hvdWxkU3BlY3VsYXRlU3RyaW5nSWRlbnQoKSkKKyAgICAgICAgICAgICAg
ICBmaXhFZGdlPFN0cmluZ0lkZW50VXNlPihwcm9wZXJ0eUVkZ2UpOworICAgICAgICAgICAgZWxz
ZSBpZiAocHJvcGVydHlFZGdlLT5zaG91bGRTcGVjdWxhdGVTdHJpbmcoKSkKKyAgICAgICAgICAg
ICAgICBmaXhFZGdlPFN0cmluZ1VzZT4ocHJvcGVydHlFZGdlKTsKKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICBmaXhFZGdlPFVudHlwZWRVc2U+KHByb3BlcnR5RWRnZSk7CisgICAg
ICAgICAgICBmaXhFZGdlPFVudHlwZWRVc2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMikp
OworICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2Rl
LCAzKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgRGVm
aW5lQWNjZXNzb3JQcm9wZXJ0eTogeworICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNlPihtX2dy
YXBoLnZhckFyZ0NoaWxkKG5vZGUsIDApKTsKKyAgICAgICAgICAgIEVkZ2UmIHByb3BlcnR5RWRn
ZSA9IG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSk7CisgICAgICAgICAgICBpZiAocHJvcGVy
dHlFZGdlLT5zaG91bGRTcGVjdWxhdGVTeW1ib2woKSkKKyAgICAgICAgICAgICAgICBmaXhFZGdl
PFN5bWJvbFVzZT4ocHJvcGVydHlFZGdlKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHByb3BlcnR5
RWRnZS0+c2hvdWxkU3BlY3VsYXRlU3RyaW5nSWRlbnQoKSkKKyAgICAgICAgICAgICAgICBmaXhF
ZGdlPFN0cmluZ0lkZW50VXNlPihwcm9wZXJ0eUVkZ2UpOworICAgICAgICAgICAgZWxzZSBpZiAo
cHJvcGVydHlFZGdlLT5zaG91bGRTcGVjdWxhdGVTdHJpbmcoKSkKKyAgICAgICAgICAgICAgICBm
aXhFZGdlPFN0cmluZ1VzZT4ocHJvcGVydHlFZGdlKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICBmaXhFZGdlPFVudHlwZWRVc2U+KHByb3BlcnR5RWRnZSk7CisgICAgICAgICAg
ICBmaXhFZGdlPENlbGxVc2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMikpOworICAgICAg
ICAgICAgZml4RWRnZTxDZWxsVXNlPihtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDMpKTsKKyAg
ICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgNCkp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwogI2lmICFBU1NFUlRfRElTQUJMRUQK
ICAgICAgICAgLy8gSGF2ZSB0aGVzZSBuby1vcCBjYXNlcyBoZXJlIHRvIGVuc3VyZSB0aGF0IG5v
Ym9keSBmb3JnZXRzIHRvIGFkZCBoYW5kbGVycyBmb3IgbmV3IG9wY29kZXMuCiAgICAgICAgIGNh
c2UgU2V0QXJndW1lbnQ6CkBAIC0xNjcxLDggKzE3MDQsNiBAQCBjbGFzcyBGaXh1cFBoYXNlIDog
cHVibGljIFBoYXNlIHsKICAgICAgICAgY2FzZSBHZXRCeVZhbFdpdGhUaGlzOgogICAgICAgICBj
YXNlIENvbXBhcmVFcVB0cjoKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgCi0gICAg
ICAgICAgICBicmVhazsKICNlbHNlCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBicmVh
azsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAppbmRleCAxZjM1ZWIyZDkw
M2I0NjZjMjQxOGMzZGMxYjYxODUzZWJlNWQ2OTc5Li4yNTE1ZWIzNDJiZDczODllMTE4ODdhYmQ4
MmYwZWNmZjAxMDdkYmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGVUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5o
CkBAIC0xOTksNiArMTk5LDggQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAg
IG1hY3JvKFB1dEdldHRlclNldHRlckJ5SWQsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNy
byhQdXRHZXR0ZXJCeVZhbCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFB1dFNldHRl
ckJ5VmFsLCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8oRGVmaW5lRGF0YVByb3BlcnR5
LCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUhhc1ZhckFyZ3MpIFwKKyAgICBtYWNybyhEZWZpbmVB
Y2Nlc3NvclByb3BlcnR5LCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUhhc1ZhckFyZ3MpIFwKICAg
ICBtYWNybyhEZWxldGVCeUlkLCBOb2RlUmVzdWx0Qm9vbGVhbiB8IE5vZGVNdXN0R2VuZXJhdGUp
IFwKICAgICBtYWNybyhEZWxldGVCeVZhbCwgTm9kZVJlc3VsdEJvb2xlYW4gfCBOb2RlTXVzdEdl
bmVyYXRlKSBcCiAgICAgbWFjcm8oQ2hlY2tTdHJ1Y3R1cmUsIE5vZGVNdXN0R2VuZXJhdGUpIFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCmluZGV4IDdlOGNj
NThjOGQ4MzM4OWI2Y2QyOTExZDVhYWU4ZDM3ODQ2NTA1ODguLmI2OGM4YWQxNTQ3YjZlZGU5ODMy
MWVkMWYzMzA2MmNiZjgzMDM5NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
cGVyYXRpb25zLmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkRGR1RvRlRMRGVmZXJy
ZWRDb21waWxhdGlvbkNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiREZHVG9GVExGb3JPU1JFbnRyeURl
ZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5oIgogI2luY2x1ZGUgIkRGR1dvcmtsaXN0LmgiCisj
aW5jbHVkZSAiRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzLmgiCiAjaW5jbHVkZSAiRGlyZWN0QXJn
dW1lbnRzLmgiCiAjaW5jbHVkZSAiRlRMRm9yT1NSRW50cnlKSVRDb2RlLmgiCiAjaW5jbHVkZSAi
RlRMT1NSRW50cnkuaCIKQEAgLTk5NCw2ICs5OTUsOTIgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblB1dEJ5VmFsV2l0aFRoaXMoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBl
bmMKICAgICBwdXRXaXRoVGhpczxmYWxzZT4oZXhlYywgZW5jb2RlZEJhc2UsIGVuY29kZWRUaGlz
LCBlbmNvZGVkVmFsdWUsIHByb3BlcnR5KTsKIH0KIAorQUxXQVlTX0lOTElORSBzdGF0aWMgdm9p
ZCBkZWZpbmVEYXRhUHJvcGVydHkoRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0sIEpTT2JqZWN0KiBi
YXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIGludDMy
X3QgYXR0cmlidXRlcykKK3sKKyAgICBQcm9wZXJ0eURlc2NyaXB0b3IgZGVzY3JpcHRvciA9IHRv
UHJvcGVydHlEZXNjcmlwdG9yKHZhbHVlLCBqc1VuZGVmaW5lZCgpLCBqc1VuZGVmaW5lZCgpLCBE
ZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMoYXR0cmlidXRlcykpOworICAgIEFTU0VSVCgoZGVzY3Jp
cHRvci5hdHRyaWJ1dGVzKCkgJiBBY2Nlc3NvcikgfHwgKCFkZXNjcmlwdG9yLmlzQWNjZXNzb3JE
ZXNjcmlwdG9yKCkpKTsKKyAgICBiYXNlLT5tZXRob2RUYWJsZSh2bSktPmRlZmluZU93blByb3Bl
cnR5KGJhc2UsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgdHJ1ZSk7Cit9CisKK3Zv
aWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWZpbmVEYXRhUHJvcGVydHkoRXhlY1N0YXRlKiBl
eGVjLCBKU09iamVjdCogYmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFByb3BlcnR5LCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIGludDMyX3QgYXR0cmlidXRlcykKK3sKKyAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBl
eGVjKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBJ
ZGVudGlmaWVyIHByb3BlcnR5TmFtZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkUHJvcGVydHkp
LnRvUHJvcGVydHlLZXkoZXhlYyk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9p
ZCgpKTsKKyAgICBkZWZpbmVEYXRhUHJvcGVydHkoZXhlYywgdm0sIGJhc2UsIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSksIGF0dHJpYnV0ZXMpOworfQorCit2b2lk
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVmaW5lRGF0YVByb3BlcnR5U3RyaW5nKEV4ZWNTdGF0
ZSogZXhlYywgSlNPYmplY3QqIGJhc2UsIEpTU3RyaW5nKiBwcm9wZXJ0eSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlLCBpbnQzMl90IGF0dHJpYnV0ZXMpCit7CisgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSWRlbnRpZmll
ciBwcm9wZXJ0eU5hbWUgPSBwcm9wZXJ0eS0+dG9JZGVudGlmaWVyKGV4ZWMpOworICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisgICAgZGVmaW5lRGF0YVByb3BlcnR5KGV4
ZWMsIHZtLCBiYXNlLCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUp
LCBhdHRyaWJ1dGVzKTsKK30KKwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlZmluZURh
dGFQcm9wZXJ0eVN0cmluZ0lkZW50KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGJhc2UsIFVu
aXF1ZWRTdHJpbmdJbXBsKiBwcm9wZXJ0eSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBp
bnQzMl90IGF0dHJpYnV0ZXMpCit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBOYXRp
dmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CisgICAgZGVmaW5lRGF0YVByb3Bl
cnR5KGV4ZWMsIHZtLCBiYXNlLCBJZGVudGlmaWVyOjpmcm9tVWlkKCZ2bSwgcHJvcGVydHkpLCBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSwgYXR0cmlidXRlcyk7Cit9CisKK3ZvaWQgSklU
X09QRVJBVElPTiBvcGVyYXRpb25EZWZpbmVEYXRhUHJvcGVydHlTeW1ib2woRXhlY1N0YXRlKiBl
eGVjLCBKU09iamVjdCogYmFzZSwgU3ltYm9sKiBwcm9wZXJ0eSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlLCBpbnQzMl90IGF0dHJpYnV0ZXMpCit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CisgICAgZGVm
aW5lRGF0YVByb3BlcnR5KGV4ZWMsIHZtLCBiYXNlLCBJZGVudGlmaWVyOjpmcm9tVWlkKHByb3Bl
cnR5LT5wcml2YXRlTmFtZSgpKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSksIGF0dHJp
YnV0ZXMpOworfQorCitBTFdBWVNfSU5MSU5FIHN0YXRpYyB2b2lkIGRlZmluZUFjY2Vzc29yUHJv
cGVydHkoRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0sIEpTT2JqZWN0KiBiYXNlLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTT2JqZWN0KiBnZXR0ZXIsIEpTT2JqZWN0KiBzZXR0ZXIs
IGludDMyX3QgYXR0cmlidXRlcykKK3sKKyAgICBQcm9wZXJ0eURlc2NyaXB0b3IgZGVzY3JpcHRv
ciA9IHRvUHJvcGVydHlEZXNjcmlwdG9yKGpzVW5kZWZpbmVkKCksIGdldHRlciwgc2V0dGVyLCBE
ZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMoYXR0cmlidXRlcykpOworICAgIEFTU0VSVCgoZGVzY3Jp
cHRvci5hdHRyaWJ1dGVzKCkgJiBBY2Nlc3NvcikgfHwgKCFkZXNjcmlwdG9yLmlzQWNjZXNzb3JE
ZXNjcmlwdG9yKCkpKTsKKyAgICBiYXNlLT5tZXRob2RUYWJsZSh2bSktPmRlZmluZU93blByb3Bl
cnR5KGJhc2UsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgdHJ1ZSk7Cit9CisKK3Zv
aWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWZpbmVBY2Nlc3NvclByb3BlcnR5KEV4ZWNTdGF0
ZSogZXhlYywgSlNPYmplY3QqIGJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRQcm9wZXJ0eSwg
SlNPYmplY3QqIGdldHRlciwgSlNPYmplY3QqIHNldHRlciwgaW50MzJfdCBhdHRyaWJ1dGVzKQor
eworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcigmdm0sIGV4ZWMpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKworICAgIElkZW50aWZpZXIgcHJvcGVydHlOYW1lID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRQcm9wZXJ0eSkudG9Qcm9wZXJ0eUtleShleGVjKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCB2b2lkKCkpOworICAgIGRlZmluZUFjY2Vzc29yUHJvcGVydHkoZXhlYywgdm0sIGJh
c2UsIHByb3BlcnR5TmFtZSwgZ2V0dGVyLCBzZXR0ZXIsIGF0dHJpYnV0ZXMpOworfQorCit2b2lk
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eVN0cmluZyhFeGVj
U3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlLCBKU1N0cmluZyogcHJvcGVydHksIEpTT2JqZWN0
KiBnZXR0ZXIsIEpTT2JqZWN0KiBzZXR0ZXIsIGludDMyX3QgYXR0cmlidXRlcykKK3sKKyAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZt
LCBleGVjKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAg
ICBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSA9IHByb3BlcnR5LT50b0lkZW50aWZpZXIoZXhlYyk7
CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICBkZWZpbmVBY2Nl
c3NvclByb3BlcnR5KGV4ZWMsIHZtLCBiYXNlLCBwcm9wZXJ0eU5hbWUsIGdldHRlciwgc2V0dGVy
LCBhdHRyaWJ1dGVzKTsKK30KKwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlZmluZUFj
Y2Vzc29yUHJvcGVydHlTdHJpbmdJZGVudChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNl
LCBVbmlxdWVkU3RyaW5nSW1wbCogcHJvcGVydHksIEpTT2JqZWN0KiBnZXR0ZXIsIEpTT2JqZWN0
KiBzZXR0ZXIsIGludDMyX3QgYXR0cmlidXRlcykKK3sKKyAgICBWTSYgdm0gPSBleGVjLT52bSgp
OworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKKyAgICBkZWZp
bmVBY2Nlc3NvclByb3BlcnR5KGV4ZWMsIHZtLCBiYXNlLCBJZGVudGlmaWVyOjpmcm9tVWlkKCZ2
bSwgcHJvcGVydHkpLCBnZXR0ZXIsIHNldHRlciwgYXR0cmlidXRlcyk7Cit9CisKK3ZvaWQgSklU
X09QRVJBVElPTiBvcGVyYXRpb25EZWZpbmVBY2Nlc3NvclByb3BlcnR5U3ltYm9sKEV4ZWNTdGF0
ZSogZXhlYywgSlNPYmplY3QqIGJhc2UsIFN5bWJvbCogcHJvcGVydHksIEpTT2JqZWN0KiBnZXR0
ZXIsIEpTT2JqZWN0KiBzZXR0ZXIsIGludDMyX3QgYXR0cmlidXRlcykKK3sKKyAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVj
KTsKKyAgICBkZWZpbmVBY2Nlc3NvclByb3BlcnR5KGV4ZWMsIHZtLCBiYXNlLCBJZGVudGlmaWVy
Ojpmcm9tVWlkKHByb3BlcnR5LT5wcml2YXRlTmFtZSgpKSwgZ2V0dGVyLCBzZXR0ZXIsIGF0dHJp
YnV0ZXMpOworfQorCiBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0FycmF5KEV4ZWNT
dGF0ZSogZXhlYywgU3RydWN0dXJlKiBhcnJheVN0cnVjdHVyZSwgdm9pZCogYnVmZmVyLCBzaXpl
X3Qgc2l6ZSkKIHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKaW5kZXggNTI3YmZlNTg3NmFmYzc4MzdiYTMwZmQyMTBk
NWE0N2MzYjI5NTFlNC4uODQyMjM4NzQxMTI1ZmY0ZTE1Y2MzN2I0NjAwYjBjYmZjMTQyOTA2MyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKQEAgLTExNCw2ICsx
MTQsMTQgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRXaXRoVGhpcyhFeGVj
U3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEoKIHZvaWQgSklUX09QRVJBVElPTiBvcGVy
YXRpb25QdXRCeUlkV2l0aFRoaXNTdHJpY3QoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5U
RVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxXaXRoVGhpcyhFeGVj
U3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blB1dEJ5VmFsV2l0aFRoaXNTdHJpY3QoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsK
K3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWZpbmVEYXRhUHJvcGVydHkoRXhlY1N0YXRl
KiwgSlNPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIGludDMyX3QpIFdU
Rl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWZpbmVEYXRhUHJvcGVy
dHlTdHJpbmcoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBKU1N0cmluZyosIEVuY29kZWRKU1ZhbHVl
LCBpbnQzMl90KSBXVEZfSU5URVJOQUw7Cit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVm
aW5lRGF0YVByb3BlcnR5U3RyaW5nSWRlbnQoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBVbmlxdWVk
U3RyaW5nSW1wbCosIEVuY29kZWRKU1ZhbHVlLCBpbnQzMl90KSBXVEZfSU5URVJOQUw7Cit2b2lk
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVmaW5lRGF0YVByb3BlcnR5U3ltYm9sKEV4ZWNTdGF0
ZSosIEpTT2JqZWN0KiwgU3ltYm9sKiwgRW5jb2RlZEpTVmFsdWUsIGludDMyX3QpIFdURl9JTlRF
Uk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWZpbmVBY2Nlc3NvclByb3BlcnR5
KEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEpTT2JqZWN0KiwgSlNPYmpl
Y3QqLCBpbnQzMl90KSBXVEZfSU5URVJOQUw7Cit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
RGVmaW5lQWNjZXNzb3JQcm9wZXJ0eVN0cmluZyhFeGVjU3RhdGUqLCBKU09iamVjdCosIEpTU3Ry
aW5nKiwgSlNPYmplY3QqLCBKU09iamVjdCosIGludDMyX3QpIFdURl9JTlRFUk5BTDsKK3ZvaWQg
SklUX09QRVJBVElPTiBvcGVyYXRpb25EZWZpbmVBY2Nlc3NvclByb3BlcnR5U3RyaW5nSWRlbnQo
RXhlY1N0YXRlKiwgSlNPYmplY3QqLCBVbmlxdWVkU3RyaW5nSW1wbCosIEpTT2JqZWN0KiwgSlNP
YmplY3QqLCBpbnQzMl90KSBXVEZfSU5URVJOQUw7Cit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eVN5bWJvbChFeGVjU3RhdGUqLCBKU09iamVjdCosIFN5
bWJvbCosIEpTT2JqZWN0KiwgSlNPYmplY3QqLCBpbnQzMl90KSBXVEZfSU5URVJOQUw7CiBFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFycmF5UHVzaChFeGVjU3RhdGUqLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEpTQXJyYXkqKSBXVEZfSU5URVJOQUw7CiBFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFycmF5UHVzaERvdWJsZShFeGVjU3Rh
dGUqLCBkb3VibGUgdmFsdWUsIEpTQXJyYXkqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFycmF5UG9wKEV4ZWNTdGF0ZSosIEpTQXJyYXkqKSBX
VEZfSU5URVJOQUw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1By
ZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4IDA2ZGI0MGViNjc2NjcyNDZk
MzQ5MDkwNTkxOWJmNWFiZDAwZWI5OWUuLjg3ZGJlODNhODg5MGMxZDdhZDM0OGUwNTRlNWE3OWU5
ZDVhNDQyZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGlj
dGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC0xMDQwLDYgKzEwNDAsOCBAQCBj
bGFzcyBQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAg
IGNhc2UgUHV0R2V0dGVyU2V0dGVyQnlJZDoKICAgICAgICAgY2FzZSBQdXRHZXR0ZXJCeVZhbDoK
ICAgICAgICAgY2FzZSBQdXRTZXR0ZXJCeVZhbDoKKyAgICAgICAgY2FzZSBEZWZpbmVEYXRhUHJv
cGVydHk6CisgICAgICAgIGNhc2UgRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eToKICAgICAgICAgY2Fz
ZSBERkc6Okp1bXA6CiAgICAgICAgIGNhc2UgQnJhbmNoOgogICAgICAgICBjYXNlIFN3aXRjaDoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKaW5kZXggMjJi
OTM0MDA1ODNhYzZkZjg2M2IwYmUzOGY2YjgzMzZhNTA0MTlhYy4uYzEzMmY5NTc0YjI1ZTY0ZTZh
Y2M1NjE2MGI5NDc5NTgyYjkzYWYxMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTYWZlVG9FeGVjdXRlLmgKQEAgLTIxNCw2ICsyMTQsOCBAQCBib29sIHNhZmVUb0V4ZWN1dGUo
QWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAg
Y2FzZSBQdXRHZXR0ZXJTZXR0ZXJCeUlkOgogICAgIGNhc2UgUHV0R2V0dGVyQnlWYWw6CiAgICAg
Y2FzZSBQdXRTZXR0ZXJCeVZhbDoKKyAgICBjYXNlIERlZmluZURhdGFQcm9wZXJ0eToKKyAgICBj
YXNlIERlZmluZUFjY2Vzc29yUHJvcGVydHk6CiAgICAgY2FzZSBDaGVja1N0cnVjdHVyZToKICAg
ICBjYXNlIEdldEV4ZWN1dGFibGU6CiAgICAgY2FzZSBHZXRCdXR0ZXJmbHk6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IDc3NzFhOTUx
MWIyYTg1YTIwYzg4OTE2ZmE0MTkzMTQ3N2JjNzYwNTcuLjRhNzNhZTI5OTEwMGEwYTI1N2FlZmJj
YjkxYjdiMTZkNGFlYWVjNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwCkBAIC04NjM5LDYgKzg2MzksMTY1IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVDb21wYXJlRXFQdHIoTm9kZSogbm9kZSkKICAgICBibGVzc2VkQm9vbGVh
blJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogfQogCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlRGVmaW5lRGF0YVByb3BlcnR5KE5vZGUqIG5vZGUpCit7CisjaWYgVVNFKEpTVkFMVUU2NCkK
KyAgICBzdGF0aWNfYXNzZXJ0KEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzID49IDUsICJXZSBh
cmUgYXNzdW1pbmcgd2UgaGF2ZSBlbm91Z2ggcmVnaXN0ZXJzIHRvIG1ha2UgdGhpcyBjYWxsIHdp
dGhvdXQgaW5jcmVtZW50YWxseSBzZXR0aW5nIHVwIHRoZSBhcmd1bWVudHMuIik7CisjZWxzZQor
ICAgIHN0YXRpY19hc3NlcnQoR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMgPj0gNiwgIldlIGFy
ZSBhc3N1bWluZyB3ZSBoYXZlIGVub3VnaCByZWdpc3RlcnMgdG8gbWFrZSB0aGlzIGNhbGwgd2l0
aG91dCBpbmNyZW1lbnRhbGx5IHNldHRpbmcgdXAgdGhlIGFyZ3VtZW50cy4iKTsKKyNlbmRpZgor
CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBtX2ppdC5ncmFwaCgpLnZhckFy
Z0NoaWxkKG5vZGUsIDApKTsKKyAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CisKKyAg
ICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBtX2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5v
ZGUsIDIpKTsKKyAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygp
OworCisgICAgU3BlY3VsYXRlSW50MzJPcGVyYW5kIGF0dHJpYnV0ZXModGhpcywgbV9qaXQuZ3Jh
cGgoKS52YXJBcmdDaGlsZChub2RlLCAzKSk7CisgICAgR1BSUmVnIGF0dHJpYnV0ZXNHUFIgPSBh
dHRyaWJ1dGVzLmdwcigpOworCisgICAgRWRnZSYgcHJvcGVydHlFZGdlID0gbV9qaXQuZ3JhcGgo
KS52YXJBcmdDaGlsZChub2RlLCAxKTsKKyAgICBzd2l0Y2ggKHByb3BlcnR5RWRnZS51c2VLaW5k
KCkpIHsKKyAgICBjYXNlIFN0cmluZ1VzZTogeworICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFu
ZCBwcm9wZXJ0eSh0aGlzLCBwcm9wZXJ0eUVkZ2UpOworICAgICAgICBHUFJSZWcgcHJvcGVydHlH
UFIgPSBwcm9wZXJ0eS5ncHIoKTsKKyAgICAgICAgc3BlY3VsYXRlU3RyaW5nKHByb3BlcnR5RWRn
ZSwgcHJvcGVydHlHUFIpOworCisgICAgICAgIHVzZUNoaWxkcmVuKG5vZGUpOworCisgICAgICAg
IGZsdXNoUmVnaXN0ZXJzKCk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVmaW5l
RGF0YVByb3BlcnR5U3RyaW5nLCBOb1Jlc3VsdCwgYmFzZUdQUiwgcHJvcGVydHlHUFIsIHZhbHVl
UmVncywgYXR0cmlidXRlR1BSKTsKKyAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgU3RyaW5nSWRlbnRVc2U6IHsKKyAgICAgICAg
U3BlY3VsYXRlQ2VsbE9wZXJhbmQgcHJvcGVydHkodGhpcywgcHJvcGVydHlFZGdlKTsKKyAgICAg
ICAgR1BSVGVtcG9yYXJ5IGlkZW50KHRoaXMpOworCisgICAgICAgIEdQUlJlZyBwcm9wZXJ0eUdQ
UiA9IHByb3BlcnR5LmdwcigpOworICAgICAgICBHUFJSZWcgaWRlbnRHUFIgPSBpZGVudC5ncHIo
KTsKKworICAgICAgICBzcGVjdWxhdGVTdHJpbmcocHJvcGVydHlFZGdlLCBwcm9wZXJ0eUdQUik7
CisgICAgICAgIHNwZWN1bGF0ZVN0cmluZ0lkZW50QW5kTG9hZFN0b3JhZ2UocHJvcGVydHlFZGdl
LCBwcm9wZXJ0eUdQUiwgaWRlbnRHUFIpOworCisgICAgICAgIHVzZUNoaWxkcmVuKG5vZGUpOwor
CisgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0
aW9uRGVmaW5lRGF0YVByb3BlcnR5U3RyaW5nSWRlbnQsIE5vUmVzdWx0LCBiYXNlR1BSLCBpZGVu
dEdQUiwgdmFsdWVSZWdzLCBhdHRyaWJ1dGVHUFIpOworICAgICAgICBtX2ppdC5leGNlcHRpb25D
aGVjaygpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBTeW1ib2xVc2U6IHsKKyAg
ICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgcHJvcGVydHkodGhpcywgcHJvcGVydHlFZGdlKTsK
KyAgICAgICAgR1BSUmVnIHByb3BlcnR5R1BSID0gcHJvcGVydHkuZ3ByKCk7CisgICAgICAgIHNw
ZWN1bGF0ZVN5bWJvbChwcm9wZXJ0eUVkZ2UsIHByb3BlcnR5R1BSKTsKKworICAgICAgICB1c2VD
aGlsZHJlbihub2RlKTsKKworICAgICAgICBmbHVzaFJlZ2lzdGVycygpOworICAgICAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvbkRlZmluZURhdGFQcm9wZXJ0eVN5bWJvbCwgTm9SZXN1bHQsIGJh
c2VHUFIsIHByb3BlcnR5R1BSLCB2YWx1ZVJlZ3MsIGF0dHJpYnV0ZUdQUik7CisgICAgICAgIG1f
aml0LmV4Y2VwdGlvbkNoZWNrKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIFVu
dHlwZWRVc2U6IHsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgcHJvcGVydHkodGhpcywgcHJvcGVy
dHlFZGdlKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3MgcHJvcGVydHlSZWdzID0gcHJvcGVydHkuanNW
YWx1ZVJlZ3MoKTsKKworICAgICAgICB1c2VDaGlsZHJlbihub2RlKTsKKworICAgICAgICBmbHVz
aFJlZ2lzdGVycygpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlZmluZURhdGFQ
cm9wZXJ0eSwgTm9SZXN1bHQsIGJhc2VHUFIsIHByb3BlcnR5UmVncywgdmFsdWVSZWdzLCBhdHRy
aWJ1dGVHUFIpOworICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOworICAgICAgICBicmVh
azsKKyAgICB9CisgICAgZGVmYXVsdDoKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICB9CisKKyAgICBub1Jlc3VsdChub2RlLCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxp
Y2l0bHkpOworfQorCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVmaW5lQWNjZXNzb3JQ
cm9wZXJ0eShOb2RlKiBub2RlKQoreworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgc3RhdGljX2Fz
c2VydChHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycyA+PSA1LCAiV2UgYXJlIGFzc3VtaW5nIHdl
IGhhdmUgZW5vdWdoIHJlZ2lzdGVycyB0byBtYWtlIHRoaXMgY2FsbCB3aXRob3V0IGluY3JlbWVu
dGFsbHkgc2V0dGluZyB1cCB0aGUgYXJndW1lbnRzLiIpOworI2Vsc2UKKyAgICBzdGF0aWNfYXNz
ZXJ0KEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzID49IDYsICJXZSBhcmUgYXNzdW1pbmcgd2Ug
aGF2ZSBlbm91Z2ggcmVnaXN0ZXJzIHRvIG1ha2UgdGhpcyBjYWxsIHdpdGhvdXQgaW5jcmVtZW50
YWxseSBzZXR0aW5nIHVwIHRoZSBhcmd1bWVudHMuIik7CisjZW5kaWYKKworICAgIFNwZWN1bGF0
ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbV9qaXQuZ3JhcGgoKS52YXJBcmdDaGlsZChub2RlLCAw
KSk7CisgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOworCisgICAgU3BlY3VsYXRlQ2Vs
bE9wZXJhbmQgZ2V0dGVyKHRoaXMsIG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMikp
OworICAgIEdQUlJlZyBnZXR0ZXJHUFIgPSBnZXR0ZXIuZ3ByKCk7CisKKyAgICBTcGVjdWxhdGVD
ZWxsT3BlcmFuZCBzZXR0ZXIodGhpcywgbV9qaXQuZ3JhcGgoKS52YXJBcmdDaGlsZChub2RlLCAz
KSk7CisgICAgR1BSUmVnIHNldHRlckdQUiA9IHNldHRlci5ncHIoKTsKKworICAgIFNwZWN1bGF0
ZUludDMyT3BlcmFuZCBhdHRyaWJ1dGVzKHRoaXMsIG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQo
bm9kZSwgNCkpOworICAgIEdQUlJlZyBhdHRyaWJ1dGVzR1BSID0gYXR0cmlidXRlcy5ncHIoKTsK
KworICAgIEVkZ2UmIHByb3BlcnR5RWRnZSA9IG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9k
ZSwgMSk7CisgICAgc3dpdGNoIChwcm9wZXJ0eUVkZ2UudXNlS2luZCgpKSB7CisgICAgY2FzZSBT
dHJpbmdVc2U6IHsKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgcHJvcGVydHkodGhpcywg
cHJvcGVydHlFZGdlKTsKKyAgICAgICAgR1BSUmVnIHByb3BlcnR5R1BSID0gcHJvcGVydHkuZ3By
KCk7CisgICAgICAgIHNwZWN1bGF0ZVN0cmluZyhwcm9wZXJ0eUVkZ2UsIHByb3BlcnR5R1BSKTsK
KworICAgICAgICB1c2VDaGlsZHJlbihub2RlKTsKKworICAgICAgICBmbHVzaFJlZ2lzdGVycygp
OworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlZmluZUFjY2Vzc29yUHJvcGVydHlT
dHJpbmcsIE5vUmVzdWx0LCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgZ2V0dGVyR1BSLCBzZXR0ZXJH
UFIsIGF0dHJpYnV0ZUdQUik7CisgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIFN0cmluZ0lkZW50VXNlOiB7CisgICAgICAgIFNw
ZWN1bGF0ZUNlbGxPcGVyYW5kIHByb3BlcnR5KHRoaXMsIHByb3BlcnR5RWRnZSk7CisgICAgICAg
IEdQUlRlbXBvcmFyeSBpZGVudCh0aGlzKTsKKworICAgICAgICBHUFJSZWcgcHJvcGVydHlHUFIg
PSBwcm9wZXJ0eS5ncHIoKTsKKyAgICAgICAgR1BSUmVnIGlkZW50R1BSID0gaWRlbnQuZ3ByKCk7
CisKKyAgICAgICAgc3BlY3VsYXRlU3RyaW5nKHByb3BlcnR5RWRnZSwgcHJvcGVydHlHUFIpOwor
ICAgICAgICBzcGVjdWxhdGVTdHJpbmdJZGVudEFuZExvYWRTdG9yYWdlKHByb3BlcnR5RWRnZSwg
cHJvcGVydHlHUFIsIGlkZW50R1BSKTsKKworICAgICAgICB1c2VDaGlsZHJlbihub2RlKTsKKwor
ICAgICAgICBmbHVzaFJlZ2lzdGVycygpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
bkRlZmluZUFjY2Vzc29yUHJvcGVydHlTdHJpbmdJZGVudCwgTm9SZXN1bHQsIGJhc2VHUFIsIGlk
ZW50R1BSLCBnZXR0ZXJHUFIsIHNldHRlckdQUiwgYXR0cmlidXRlR1BSKTsKKyAgICAgICAgbV9q
aXQuZXhjZXB0aW9uQ2hlY2soKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgU3lt
Ym9sVXNlOiB7CisgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHByb3BlcnR5KHRoaXMsIHBy
b3BlcnR5RWRnZSk7CisgICAgICAgIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IHByb3BlcnR5Lmdwcigp
OworICAgICAgICBzcGVjdWxhdGVTeW1ib2wocHJvcGVydHlFZGdlLCBwcm9wZXJ0eUdQUik7CisK
KyAgICAgICAgdXNlQ2hpbGRyZW4obm9kZSk7CisKKyAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsK
KyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWZpbmVBY2Nlc3NvclByb3BlcnR5U3lt
Ym9sLCBOb1Jlc3VsdCwgYmFzZUdQUiwgcHJvcGVydHlHUFIsIGdldHRlckdQUiwgc2V0dGVyR1BS
LCBhdHRyaWJ1dGVHUFIpOworICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOworICAgICAg
ICBicmVhazsKKyAgICB9CisgICAgY2FzZSBVbnR5cGVkVXNlOiB7CisgICAgICAgIEpTVmFsdWVP
cGVyYW5kIHByb3BlcnR5KHRoaXMsIHByb3BlcnR5RWRnZSk7CisgICAgICAgIEpTVmFsdWVSZWdz
IHByb3BlcnR5UmVncyA9IHByb3BlcnR5LmpzVmFsdWVSZWdzKCk7CisKKyAgICAgICAgdXNlQ2hp
bGRyZW4obm9kZSk7CisKKyAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAgICAgICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25EZWZpbmVBY2Nlc3NvclByb3BlcnR5LCBOb1Jlc3VsdCwgYmFzZUdQ
UiwgcHJvcGVydHlSZWdzLCBnZXR0ZXJHUFIsIHNldHRlckdQUiwgYXR0cmlidXRlR1BSKTsKKyAg
ICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAg
IGRlZmF1bHQ6CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQor
CisgICAgbm9SZXN1bHQobm9kZSwgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKK30KKwog
fSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAppbmRleCBlN2EyOWI0MzM0NmIyNDgyM2E5OTg5
ZmVlOTVkNjQwNWMzMThkYTczLi5jMmEzY2QwMDA4ZGRlNTg2NDQzNzI3Y2Q0NmUwY2Q5ODdjZjI4
ZWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5o
CkBAIC0xMzQ0LDYgKzEzNDQsNDYgQEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQgewogICAgICAgICBt
X2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMywgYXJnNCk7
CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CiAgICAgfQorICAgIEpJVENv
bXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRU9KSlogb3BlcmF0aW9u
LCBHUFJSZWcgYXJnMSwgSlNWYWx1ZVJlZ3MgYXJnMiwgSlNWYWx1ZVJlZ3MgYXJnMywgR1BSUmVn
IGFyZzQpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUo
YXJnMSwgYXJnMi5wYXlsb2FkR1BSKCksIGFyZzMucGF5bG9hZEdQUigpLCBhcmc0KTsKKyAgICAg
ICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKKyAgICB9CisgICAgSklUQ29tcGlsZXI6
OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FT0pzc0paIG9wZXJhdGlvbiwgR1BS
UmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBKU1ZhbHVlUmVncyBhcmczLCBHUFJSZWcgYXJnNCkKKyAg
ICB7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcy
LCBhcmczLnBheWxvYWRHUFIoKSwgYXJnNCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9w
ZXJhdGlvbik7CisgICAgfQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9K
SVRPcGVyYXRpb25fRU9JSlogb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEpT
VmFsdWVSZWdzIGFyZzMsIEdQUlJlZyBhcmc0KQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMucGF5bG9hZEdQUigpLCBhcmc0
KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKKyAgICB9CisgICAgSklU
Q29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FT1N5bUpaIG9wZXJh
dGlvbiwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBKU1ZhbHVlUmVncyBhcmczLCBHUFJSZWcg
YXJnNCkKKyAgICB7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShh
cmcxLCBhcmcyLCBhcmczLnBheWxvYWRHUFIoKSwgYXJnNCk7CisgICAgICAgIHJldHVybiBhcHBl
bmRDYWxsKG9wZXJhdGlvbik7CisgICAgfQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVy
YXRpb24oVl9KSVRPcGVyYXRpb25fRU9KT09aIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEpTVmFs
dWVSZWdzIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcgYXJnNCwgR1BSUmVnIGFyZzUpCisgICAg
eworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMi5w
YXlsb2FkR1BSKCksIGFyZzMsIGFyZzQsIGFyZzUpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2Fs
bChvcGVyYXRpb24pOworICAgIH0KKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9u
KFZfSklUT3BlcmF0aW9uX0VPSnNzT09aIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEdQUlJlZyBh
cmcyLCBHUFJSZWcgYXJnMywgR1BSUmVnIGFyZzQsIEdQUlJlZyBhcmc1KQorICAgIHsKKyAgICAg
ICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMsIGFy
ZzQsIGFyZzUpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOworICAgIH0K
KyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VPSU9P
WiBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMsIEdQUlJl
ZyBhcmc0LCBHUFJSZWcgYXJnNSkKKyAgICB7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczLCBhcmc0LCBhcmc1KTsKKyAgICAgICAgcmV0
dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKKyAgICB9CisgICAgSklUQ29tcGlsZXI6OkNhbGwg
Y2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FT1N5bU9PWiBvcGVyYXRpb24sIEdQUlJlZyBh
cmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMsIEdQUlJlZyBhcmc0LCBHUFJSZWcgYXJnNSkK
KyAgICB7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBh
cmcyLCBhcmczLCBhcmc0LCBhcmc1KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0
aW9uKTsKKyAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9w
ZXJhdGlvbl9FT0pJVWkgb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIFVuaXF1
ZWRTdHJpbmdJbXBsKiBpbXBsLCB1bnNpZ25lZCB2YWx1ZSkKICAgICB7CiAgICAgICAgIG1faml0
LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBUcnVzdGVkSW1tUHRyKGlt
cGwpLCBUcnVzdGVkSW1tMzIodmFsdWUpKTsKQEAgLTE3ODgsNyArMTgyOCw0NiBAQCBjbGFzcyBT
cGVjdWxhdGl2ZUpJVCB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShFQUJJXzMyQklUX0RVTU1ZX0FSRyBhcmcxLnBheWxvYWRHUFIoKSwgYXJnMS50YWdHUFIoKSwg
YXJnMi5wYXlsb2FkR1BSKCksIGFyZzIudGFnR1BSKCksIGFyZzMucGF5bG9hZEdQUigpLCBhcmcz
LnRhZ0dQUigpLCBhcmc0LnBheWxvYWRHUFIoKSwgYXJnNC50YWdHUFIoKSk7CiAgICAgICAgIHJl
dHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CiAgICAgfQotCisgICAgSklUQ29tcGlsZXI6OkNh
bGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FT0pKWiBvcGVyYXRpb24sIEdQUlJlZyBh
cmcxLCBKU1ZhbHVlUmVncyBhcmcyLCBKU1ZhbHVlUmVncyBhcmczLCBHUFJSZWcgYXJnNCkKKyAg
ICB7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcy
LnBheWxvYWRHUFIoKSwgYXJnMi50YWdHUFIoKSwgYXJnMy5wYXlsb2FkR1BSKCksIGFyZzMudGFn
R1BSKCksIGFyZzQpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOworICAg
IH0KKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VP
SnNzSlogb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEpTVmFsdWVSZWdzIGFy
ZzMsIEdQUlJlZyBhcmc0KQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKGFyZzEsIGFyZzIsIEVBQklfMzJCSVRfRFVNTVlfQVJHIGFyZzMucGF5bG9hZEdQ
UigpLCBhcmczLnRhZ0dQUigpLCBhcmc0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGwob3Bl
cmF0aW9uKTsKKyAgICB9CisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJ
VE9wZXJhdGlvbl9FT0lKWiBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgSlNW
YWx1ZVJlZ3MgYXJnMywgR1BSUmVnIGFyZzQpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFy
Z3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgRUFCSV8zMkJJVF9EVU1NWV9BUkcgYXJn
My5wYXlsb2FkR1BSKCksIGFyZzMudGFnR1BSKCksIGFyZzQpOworICAgICAgICByZXR1cm4gYXBw
ZW5kQ2FsbChvcGVyYXRpb24pOworICAgIH0KKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3Bl
cmF0aW9uKFZfSklUT3BlcmF0aW9uX0VPU3ltSlogb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgR1BS
UmVnIGFyZzIsIEpTVmFsdWVSZWdzIGFyZzMsIEdQUlJlZyBhcmc0KQorICAgIHsKKyAgICAgICAg
bV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIEVBQklfMzJCSVRf
RFVNTVlfQVJHIGFyZzMucGF5bG9hZEdQUigpLCBhcmczLnRhZ0dQUigpLCBhcmc0KTsKKyAgICAg
ICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKKyAgICB9CisgICAgSklUQ29tcGlsZXI6
OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FT0pPT1ogb3BlcmF0aW9uLCBHUFJS
ZWcgYXJnMSwgSlNWYWx1ZVJlZ3MgYXJnMiwgR1BSUmVnIGFyZzMsIEdQUlJlZyBhcmc0LCBHUFJS
ZWcgYXJnNSkKKyAgICB7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShhcmcxLCBhcmcyLnBheWxvYWRHUFIoKSwgYXJnMi50YWdHUFIoKSwgYXJnMywgYXJnNCwgYXJn
NSk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CisgICAgfQorICAgIEpJ
VENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRU9Kc3NPT1ogb3Bl
cmF0aW9uLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcgYXJn
NCwgR1BSUmVnIGFyZzUpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMywgYXJnNCwgYXJnNSk7CisgICAgICAgIHJldHVybiBh
cHBlbmRDYWxsKG9wZXJhdGlvbik7CisgICAgfQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxP
cGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRU9JT09aIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEdQ
UlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVnIGFyZzQsIEdQUlJlZyBhcmc1KQorICAgIHsK
KyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFy
ZzMsIGFyZzQsIGFyZzUpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOwor
ICAgIH0KKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9u
X0VPU3ltT09aIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJn
MywgR1BSUmVnIGFyZzQsIEdQUlJlZyBhcmc1KQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMsIGFyZzQsIGFyZzUpOworICAg
ICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOworICAgIH0KICAgICBKSVRDb21waWxl
cjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VPSklVaSBvcGVyYXRpb24sIEdQ
UlJlZyBhcmcxLCBKU1ZhbHVlUmVncyBhcmcyLCBVbmlxdWVkU3RyaW5nSW1wbCogaW1wbCwgdW5z
aWduZWQgdmFsdWUpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoYXJnMSwgYXJnMi5wYXlsb2FkR1BSKCksIGFyZzIudGFnR1BSKCksIFRydXN0ZWRJbW1Q
dHIoaW1wbCksIFRydXN0ZWRJbW0zMih2YWx1ZSkpOwpAQCAtMjU3OSw2ICsyNjU4LDggQEAgY2xh
c3MgU3BlY3VsYXRpdmVKSVQgewogICAgIHZvaWQgY29tcGlsZUdldER5bmFtaWNWYXIoTm9kZSop
OwogICAgIHZvaWQgY29tcGlsZVB1dER5bmFtaWNWYXIoTm9kZSopOwogICAgIHZvaWQgY29tcGls
ZUNvbXBhcmVFcVB0cihOb2RlKik7CisgICAgdm9pZCBjb21waWxlRGVmaW5lRGF0YVByb3BlcnR5
KE5vZGUqKTsKKyAgICB2b2lkIGNvbXBpbGVEZWZpbmVBY2Nlc3NvclByb3BlcnR5KE5vZGUqKTsK
IAogICAgIHZvaWQgbW92ZVRydWVUbyhHUFJSZWcpOwogICAgIHZvaWQgbW92ZUZhbHNlVG8oR1BS
UmVnKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUMzJfNjQuY3BwCmluZGV4IGEyMmRiZWFkZTcxMDhmNzU1OTY2NmI5M2Y5YWVjN2VmNTBjMTM5
NWIuLmFhNzhiMGU2OWU0YmViODVlMmUyMTZjOGVmNTU5ZWExZjczYWFkOWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApA
QCAtNDQ5MSw2ICs0NDkxLDE2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSog
bm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBEZWZpbmVEYXRhUHJvcGVy
dHk6IHsKKyAgICAgICAgY29tcGlsZURlZmluZURhdGFQcm9wZXJ0eShub2RlKTsKKyAgICAgICAg
YnJlYWs7CisgICAgfQorCisgICAgY2FzZSBEZWZpbmVBY2Nlc3NvclByb3BlcnR5OiB7CisgICAg
ICAgIGNvbXBpbGVEZWZpbmVBY2Nlc3NvclByb3BlcnR5KG5vZGUpOworICAgICAgICBicmVhazsK
KyAgICB9CisKICAgICBjYXNlIEdldEdsb2JhbExleGljYWxWYXJpYWJsZToKICAgICBjYXNlIEdl
dEdsb2JhbFZhcjogewogICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0UGF5bG9hZCh0aGlzKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3Bw
CmluZGV4IDhjZDVkNzEzOGYwN2NkZGRjMmMyZTcwZDZmNmRmM2MxZmIxYWRiNmUuLjcyMTA5MjUy
M2ViMzdmYWNjZjIyNjhkYmJmZTdmMTk0ZTMzMjUwMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtNDQ0OSw2ICs0NDQ5LDE2
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJl
YWs7CiAgICAgfQogCisgICAgY2FzZSBEZWZpbmVEYXRhUHJvcGVydHk6IHsKKyAgICAgICAgY29t
cGlsZURlZmluZURhdGFQcm9wZXJ0eShub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisg
ICAgY2FzZSBEZWZpbmVBY2Nlc3NvclByb3BlcnR5OiB7CisgICAgICAgIGNvbXBpbGVEZWZpbmVB
Y2Nlc3NvclByb3BlcnR5KG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNl
IEdldEdsb2JhbExleGljYWxWYXJpYWJsZToKICAgICBjYXNlIEdldEdsb2JhbFZhcjogewogICAg
ICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCmluZGV4IGNhZDQ1ZmRiYWJlOTBmNDQ5MzRkMTRhNGJl
M2JkMTBmYzgyNzY0NDkuLmExY2Y4MDg4NTIzYmRkMzdjYjIwZGYwODFiNGEwMWRkMWFiYzBkNjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKQEAg
LTI2Miw2ICsyNjIsOCBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSog
bm9kZSkKICAgICBjYXNlIENvbXBhcmVHcmVhdGVyOgogICAgIGNhc2UgQ29tcGFyZUdyZWF0ZXJF
cToKICAgICBjYXNlIENvbXBhcmVTdHJpY3RFcToKKyAgICBjYXNlIERlZmluZURhdGFQcm9wZXJ0
eToKKyAgICBjYXNlIERlZmluZUFjY2Vzc29yUHJvcGVydHk6CiAgICAgICAgIC8vIFRoZXNlIGFy
ZSBPSy4KICAgICAgICAgYnJlYWs7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG93ZXJERkdUb0IzLmNwcAppbmRleCA5Zjg4NWI4NzEzODM5MjBiOWJkNGYzODVlOTkyMjQ3MmY5
ZjIzMDZmLi4xZmYxMDM4MmEyZTRiNDVmYjg5MzYwMWJhODMzMTc3ZjY4OWIwNWUxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC02OTAsNiAr
NjkwLDEyIEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIGNhc2UgUHV0QnlWYWxXaXRo
VGhpczoKICAgICAgICAgICAgIGNvbXBpbGVQdXRCeVZhbFdpdGhUaGlzKCk7CiAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBEZWZpbmVEYXRhUHJvcGVydHk6CisgICAgICAgICAgICBj
b21waWxlRGVmaW5lRGF0YVByb3BlcnR5KCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBEZWZpbmVBY2Nlc3NvclByb3BlcnR5OgorICAgICAgICAgICAgY29tcGlsZURlZmluZUFj
Y2Vzc29yUHJvcGVydHkoKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFycmF5
UHVzaDoKICAgICAgICAgICAgIGNvbXBpbGVBcnJheVB1c2goKTsKICAgICAgICAgICAgIGJyZWFr
OwpAQCAtMjc2MSw2ICsyNzY3LDcxIEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIHZt
Q2FsbChWb2lkLCBtX291dC5vcGVyYXRpb24obV9ncmFwaC5pc1N0cmljdE1vZGVGb3IobV9ub2Rl
LT5vcmlnaW4uc2VtYW50aWMpID8gb3BlcmF0aW9uUHV0QnlWYWxXaXRoVGhpc1N0cmljdCA6IG9w
ZXJhdGlvblB1dEJ5VmFsV2l0aFRoaXMpLAogICAgICAgICAgICAgbV9jYWxsRnJhbWUsIGJhc2Us
IHRoaXNWYWx1ZSwgcHJvcGVydHksIHZhbHVlKTsKICAgICB9CisKKyAgICB2b2lkIGNvbXBpbGVE
ZWZpbmVEYXRhUHJvcGVydHkoKQorICAgIHsKKyAgICAgICAgTFZhbHVlIGJhc2UgPSBsb3dDZWxs
KG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCAwKSk7CisgICAgICAgIExWYWx1ZSB2YWx1ZSAg
PSBsb3dKU1ZhbHVlKG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCAyKSk7CisgICAgICAgIExW
YWx1ZSBhdHRyaWJ1dGVzID0gbG93SW50MzIobV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDMp
KTsKKyAgICAgICAgRWRnZSYgcHJvcGVydHlFZGdlID0gbV9ncmFwaC52YXJBcmdDaGlsZChtX25v
ZGUsIDEpOworICAgICAgICBzd2l0Y2ggKHByb3BlcnR5RWRnZS51c2VLaW5kKCkpIHsKKyAgICAg
ICAgY2FzZSBTdHJpbmdVc2U6IHsKKyAgICAgICAgICAgIExWYWx1ZSBwcm9wZXJ0eSA9IGxvd1N0
cmluZyhwcm9wZXJ0eUVkZ2UpOworICAgICAgICAgICAgdm1DYWxsKFZvaWQsIG1fb3V0Lm9wZXJh
dGlvbihvcGVyYXRpb25EZWZpbmVEYXRhUHJvcGVydHlTdHJpbmcpLCBtX2NhbGxGcmFtZSwgYmFz
ZSwgcHJvcGVydHksIHZhbHVlLCBhdHRyaWJ1dGVzKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisgICAgICAgIGNhc2UgU3RyaW5nSWRlbnRVc2U6IHsKKyAgICAgICAgICAgIExWYWx1
ZSBwcm9wZXJ0eSA9IGxvd1N0cmluZ0lkZW50KHByb3BlcnR5RWRnZSk7CisgICAgICAgICAgICB2
bUNhbGwoVm9pZCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkRlZmluZURhdGFQcm9wZXJ0eVN0
cmluZ0lkZW50KSwgbV9jYWxsRnJhbWUsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSwgYXR0cmlidXRl
cyk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFN5bWJvbFVz
ZTogeworICAgICAgICAgICAgTFZhbHVlIHByb3BlcnR5ID0gbG93U3ltYm9sKHByb3BlcnR5RWRn
ZSk7CisgICAgICAgICAgICB2bUNhbGwoVm9pZCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkRl
ZmluZURhdGFQcm9wZXJ0eVN5bWJvbCksIG1fY2FsbEZyYW1lLCBiYXNlLCBwcm9wZXJ0eSwgdmFs
dWUsIGF0dHJpYnV0ZXMpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAg
Y2FzZSBVbnR5cGVkVXNlOiB7CisgICAgICAgICAgICBMVmFsdWUgcHJvcGVydHkgPSBsb3dKU1Zh
bHVlKHByb3BlcnR5RWRnZSk7CisgICAgICAgICAgICB2bUNhbGwoVm9pZCwgbV9vdXQub3BlcmF0
aW9uKG9wZXJhdGlvbkRlZmluZURhdGFQcm9wZXJ0eSksIG1fY2FsbEZyYW1lLCBiYXNlLCBwcm9w
ZXJ0eSwgdmFsdWUsIGF0dHJpYnV0ZXMpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
KyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIGNvbXBpbGVEZWZpbmVBY2Nlc3NvclBy
b3BlcnR5KCkKKyAgICB7CisgICAgICAgIExWYWx1ZSBiYXNlID0gbG93Q2VsbChtX2dyYXBoLnZh
ckFyZ0NoaWxkKG1fbm9kZSwgMCkpOworICAgICAgICBMVmFsdWUgZ2V0dGVyID0gbG93Q2VsbCht
X2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMikpOworICAgICAgICBMVmFsdWUgc2V0dGVyID0g
bG93Q2VsbChtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMykpOworICAgICAgICBMVmFsdWUg
YXR0cmlidXRlcyA9IGxvd0ludDMyKG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCA0KSk7Cisg
ICAgICAgIEVkZ2UmIHByb3BlcnR5RWRnZSA9IG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCAx
KTsKKyAgICAgICAgc3dpdGNoIChwcm9wZXJ0eUVkZ2UudXNlS2luZCgpKSB7CisgICAgICAgIGNh
c2UgU3RyaW5nVXNlOiB7CisgICAgICAgICAgICBMVmFsdWUgcHJvcGVydHkgPSBsb3dTdHJpbmco
cHJvcGVydHlFZGdlKTsKKyAgICAgICAgICAgIHZtQ2FsbChWb2lkLCBtX291dC5vcGVyYXRpb24o
b3BlcmF0aW9uRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eVN0cmluZyksIG1fY2FsbEZyYW1lLCBiYXNl
LCBwcm9wZXJ0eSwgZ2V0dGVyLCBzZXR0ZXIsIGF0dHJpYnV0ZXMpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBTdHJpbmdJZGVudFVzZTogeworICAgICAgICAg
ICAgTFZhbHVlIHByb3BlcnR5ID0gbG93U3RyaW5nSWRlbnQocHJvcGVydHlFZGdlKTsKKyAgICAg
ICAgICAgIHZtQ2FsbChWb2lkLCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uRGVmaW5lQWNjZXNz
b3JQcm9wZXJ0eVN0cmluZ0lkZW50KSwgbV9jYWxsRnJhbWUsIGJhc2UsIHByb3BlcnR5LCBnZXR0
ZXIsIHNldHRlciwgYXR0cmlidXRlcyk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
ICAgICAgICBjYXNlIFN5bWJvbFVzZTogeworICAgICAgICAgICAgTFZhbHVlIHByb3BlcnR5ID0g
bG93U3ltYm9sKHByb3BlcnR5RWRnZSk7CisgICAgICAgICAgICB2bUNhbGwoVm9pZCwgbV9vdXQu
b3BlcmF0aW9uKG9wZXJhdGlvbkRlZmluZUFjY2Vzc29yUHJvcGVydHlTeW1ib2wpLCBtX2NhbGxG
cmFtZSwgYmFzZSwgcHJvcGVydHksIGdldHRlciwgc2V0dGVyLCBhdHRyaWJ1dGVzKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgVW50eXBlZFVzZTogeworICAg
ICAgICAgICAgTFZhbHVlIHByb3BlcnR5ID0gbG93SlNWYWx1ZShwcm9wZXJ0eUVkZ2UpOworICAg
ICAgICAgICAgdm1DYWxsKFZvaWQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25EZWZpbmVBY2Nl
c3NvclByb3BlcnR5KSwgbV9jYWxsRnJhbWUsIGJhc2UsIHByb3BlcnR5LCBnZXR0ZXIsIHNldHRl
ciwgYXR0cmlidXRlcyk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgfQorICAgIH0KICAgICAKICAgICB2b2lkIGNvbXBpbGVQdXRCeUlkKCkKICAgICB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5jcHAKaW5kZXggNzVkMTVhNjIzYzcy
YzQ0YWRjNGE0YjljMTNmODU4NmYyNzIyNmI4NS4uM2MzZGY2MThmOTlmZWI5NDE1NDQwMDk5ODU1
ZGUxZmJhZjVjYjlkMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2Fs
bEhlbHBlcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJz
LmNwcApAQCAtNjgsMTA3ICs2OCw2IEBAIHZvaWQgQ0NhbGxIZWxwZXJzOjplbnN1cmVTaGFkb3dD
aGlja2VuUGFja2V0KEdQUlJlZyBzaGFkb3dQYWNrZXQsIEdQUlJlZyBzY3JhdGNoCiAgICAgc3Rv
cmVQdHIoc2NyYXRjaDIsIEFkZHJlc3Moc2NyYXRjaDFOb25BcmdHUFIpKTsKIH0KIAotI2lmIE5V
TUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMgPj0gNAotdm9pZCBDQ2FsbEhlbHBlcnM6OnNldHVw
Rm91clN0dWJBcmdzR1BSKEdQUlJlZyBkZXN0QSwgR1BSUmVnIGRlc3RCLCBHUFJSZWcgZGVzdEMs
IEdQUlJlZyBkZXN0RCwgR1BSUmVnIHNyY0EsIEdQUlJlZyBzcmNCLCBHUFJSZWcgc3JjQywgR1BS
UmVnIHNyY0QpCi17Ci0gICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKLSAgICAgICAgUmVnaXN0
ZXJTZXQgZGVzdGluYXRpb25zKGRlc3RBLCBkZXN0QiwgZGVzdEMsIGRlc3REKTsKLSAgICAgICAg
QVNTRVJUX1dJVEhfTUVTU0FHRShkZXN0aW5hdGlvbnMubnVtYmVyT2ZTZXRHUFJzKCkgPT0gNCwg
IkRlc3RpbmF0aW9ucyBzaG91bGQgbm90IGJlIGFsaWFzZWQuIik7Ci0gICAgfQotCi0gICAgdHlw
ZWRlZiBzdGQ6OnBhaXI8R1BSUmVnLCBHUFJSZWc+IFJlZ1BhaXI7Ci0gICAgVmVjdG9yPFJlZ1Bh
aXIsIDQ+IHBhaXJzOwotCi0gICAgaWYgKHNyY0EgIT0gZGVzdEEpCi0gICAgICAgIHBhaXJzLmFw
cGVuZChzdGQ6Om1ha2VfcGFpcihzcmNBLCBkZXN0QSkpOwotICAgIGlmIChzcmNCICE9IGRlc3RC
KQotICAgICAgICBwYWlycy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoc3JjQiwgZGVzdEIpKTsKLSAg
ICBpZiAoc3JjQyAhPSBkZXN0QykKLSAgICAgICAgcGFpcnMuYXBwZW5kKHN0ZDo6bWFrZV9wYWly
KHNyY0MsIGRlc3RDKSk7Ci0gICAgaWYgKHNyY0QgIT0gZGVzdEQpCi0gICAgICAgIHBhaXJzLmFw
cGVuZChzdGQ6Om1ha2VfcGFpcihzcmNELCBkZXN0RCkpOwotCi0KLSNpZiAhQVNTRVJUX0RJU0FC
TEVECi0gICAgYXV0byBudW1VbmlxdWVTb3VyY2VzID0gWyZdICgpIC0+IHVuc2lnbmVkIHsKLSAg
ICAgICAgUmVnaXN0ZXJTZXQgc2V0OwotICAgICAgICBmb3IgKGF1dG8mIHBhaXIgOiBwYWlycykg
ewotICAgICAgICAgICAgR1BSUmVnIHNvdXJjZSA9IHBhaXIuZmlyc3Q7Ci0gICAgICAgICAgICBz
ZXQuc2V0KHNvdXJjZSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHNldC5udW1iZXJPZlNl
dEdQUnMoKTsKLSAgICB9OwotCi0gICAgYXV0byBudW1VbmlxdWVEZXN0cyA9IFsmXSAoKSAtPiB1
bnNpZ25lZCB7Ci0gICAgICAgIFJlZ2lzdGVyU2V0IHNldDsKLSAgICAgICAgZm9yIChhdXRvJiBw
YWlyIDogcGFpcnMpIHsKLSAgICAgICAgICAgIEdQUlJlZyBkZXN0ID0gcGFpci5zZWNvbmQ7Ci0g
ICAgICAgICAgICBzZXQuc2V0KGRlc3QpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBzZXQu
bnVtYmVyT2ZTZXRHUFJzKCk7Ci0gICAgfTsKLSNlbmRpZgotCi0gICAgd2hpbGUgKHBhaXJzLnNp
emUoKSkgewotICAgICAgICBSZWdpc3RlclNldCBmcmVlRGVzdGluYXRpb25zOwotICAgICAgICBm
b3IgKGF1dG8mIHBhaXIgOiBwYWlycykgewotICAgICAgICAgICAgR1BSUmVnIGRlc3QgPSBwYWly
LnNlY29uZDsKLSAgICAgICAgICAgIGZyZWVEZXN0aW5hdGlvbnMuc2V0KGRlc3QpOwotICAgICAg
ICB9Ci0gICAgICAgIGZvciAoYXV0byYgcGFpciA6IHBhaXJzKSB7Ci0gICAgICAgICAgICBHUFJS
ZWcgc291cmNlID0gcGFpci5maXJzdDsKLSAgICAgICAgICAgIGZyZWVEZXN0aW5hdGlvbnMuY2xl
YXIoc291cmNlKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChmcmVlRGVzdGluYXRpb25zLm51
bWJlck9mU2V0R1BScygpKSB7Ci0gICAgICAgICAgICBib29sIG1hZGVNb3ZlID0gZmFsc2U7Ci0g
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGFpcnMuc2l6ZSgpOyBpKyspIHsK
LSAgICAgICAgICAgICAgICBhdXRvJiBwYWlyID0gcGFpcnNbaV07Ci0gICAgICAgICAgICAgICAg
R1BSUmVnIHNvdXJjZSA9IHBhaXIuZmlyc3Q7Ci0gICAgICAgICAgICAgICAgR1BSUmVnIGRlc3Qg
PSBwYWlyLnNlY29uZDsKLSAgICAgICAgICAgICAgICBpZiAoZnJlZURlc3RpbmF0aW9ucy5nZXQo
ZGVzdCkpIHsKLSAgICAgICAgICAgICAgICAgICAgbW92ZShzb3VyY2UsIGRlc3QpOwotICAgICAg
ICAgICAgICAgICAgICBwYWlycy5yZW1vdmUoaSk7Ci0gICAgICAgICAgICAgICAgICAgIG1hZGVN
b3ZlID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgfQotICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChtYWRlTW92ZSwgbWFk
ZU1vdmUpOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLQotICAgICAgICBBU1NF
UlQobnVtVW5pcXVlRGVzdHMoKSA9PSBudW1VbmlxdWVTb3VyY2VzKCkpOwotICAgICAgICBBU1NF
UlQobnVtVW5pcXVlRGVzdHMoKSA9PSBwYWlycy5zaXplKCkpOwotICAgICAgICAvLyBUaGUgc2V0
IG9mIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gcmVnaXN0ZXJzIGFyZSBlcXVpdmFsZW50IHNldHMu
IFRoaXMgbWVhbnMgd2UgZG9uJ3QgaGF2ZQotICAgICAgICAvLyBhbnkgZnJlZSBkZXN0aW5hdGlv
biByZWdpc3RlcnMgdGhhdCB3b24ndCBhbHNvIGNsb2JiZXIgYSBzb3VyY2UuIFdlIGdldCBhcm91
bmQgdGhpcyBieQotICAgICAgICAvLyBleGNoYW5naW5nIHJlZ2lzdGVycy4KLQotICAgICAgICBH
UFJSZWcgc291cmNlID0gcGFpcnNbMF0uZmlyc3Q7Ci0gICAgICAgIEdQUlJlZyBkZXN0ID0gcGFp
cnNbMF0uc2Vjb25kOwotICAgICAgICBzd2FwKHNvdXJjZSwgZGVzdCk7Ci0gICAgICAgIHBhaXJz
LnJlbW92ZSgwKTsKLQotICAgICAgICBHUFJSZWcgbmV3U291cmNlID0gc291cmNlOwotICAgICAg
ICBmb3IgKGF1dG8mIHBhaXIgOiBwYWlycykgewotICAgICAgICAgICAgR1BSUmVnIHNvdXJjZSA9
IHBhaXIuZmlyc3Q7Ci0gICAgICAgICAgICBpZiAoc291cmNlID09IGRlc3QpIHsKLSAgICAgICAg
ICAgICAgICBwYWlyLmZpcnN0ID0gbmV3U291cmNlOwotICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgLy8gV2UgbWF5IGhhdmUgaW50cm9k
dWNlZCBwYWlycyB0aGF0IGhhdmUgdGhlIHNhbWUgc291cmNlIGFuZCBkZXN0aW5hdGlvbi4gUmVt
b3ZlIHRob3NlIG5vdy4KLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBhaXJzLnNp
emUoKTsgaSsrKSB7Ci0gICAgICAgICAgICBhdXRvJiBwYWlyID0gcGFpcnNbaV07Ci0gICAgICAg
ICAgICBpZiAocGFpci5maXJzdCA9PSBwYWlyLnNlY29uZCkgewotICAgICAgICAgICAgICAgIHBh
aXJzLnJlbW92ZShpKTsKLSAgICAgICAgICAgICAgICBpLS07Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0KLSAgICB9Ci19Ci0jZW5kaWYgLy8gTlVNQkVSX09GX0FSR1VNRU5UX1JFR0lTVEVSUyA+
PSA0Ci0KIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oCmluZGV4IDc5NDU0NmIwYmQyN2E5OWMw
YzE5ODliZTJlNDEzMTQzNGRhNDhmYWUuLmVhOGVjZGVhMjkyODhiNzAxNmNjNGU4NDI3M2ZlMzI4
ZDg1ZTY3ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxw
ZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaApAQCAt
OTg3LDcgKzk4NywxNCBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxw
ZXJzIHsKICAgICAgICAgICAgIHN3YXAoZGVzdEIsIGRlc3RDKTsKICAgICB9CiAKLSAgICB2b2lk
IHNldHVwRm91clN0dWJBcmdzR1BSKEdQUlJlZyBkZXN0QSwgR1BSUmVnIGRlc3RCLCBHUFJSZWcg
ZGVzdEMsIEdQUlJlZyBkZXN0RCwgR1BSUmVnIHNyY0EsIEdQUlJlZyBzcmNCLCBHUFJSZWcgc3Jj
QywgR1BSUmVnIHNyY0QpOworICAgIHZvaWQgc2V0dXBGb3VyU3R1YkFyZ3NHUFIoR1BSUmVnIGRl
c3RBLCBHUFJSZWcgZGVzdEIsIEdQUlJlZyBkZXN0QywgR1BSUmVnIGRlc3RELCBHUFJSZWcgc3Jj
QSwgR1BSUmVnIHNyY0IsIEdQUlJlZyBzcmNDLCBHUFJSZWcgc3JjRCkKKyAgICB7CisgICAgICAg
IHNldHVwU3R1YkFyZ3NHUFI8ND4oeyB7IGRlc3RBLCBkZXN0QiwgZGVzdEMsIGRlc3REIH0gfSwg
eyB7IHNyY0EsIHNyY0IsIHNyY0MsIHNyY0QgfSB9KTsKKyAgICB9CisgICAgdm9pZCBzZXR1cEZp
dmVTdHViQXJnc0dQUihHUFJSZWcgZGVzdEEsIEdQUlJlZyBkZXN0QiwgR1BSUmVnIGRlc3RDLCBH
UFJSZWcgZGVzdEQsIEdQUlJlZyBkZXN0RSwgR1BSUmVnIHNyY0EsIEdQUlJlZyBzcmNCLCBHUFJS
ZWcgc3JjQywgR1BSUmVnIHNyY0QsIEdQUlJlZyBzcmNFKQorICAgIHsKKyAgICAgICAgc2V0dXBT
dHViQXJnc0dQUjw1Pih7IHsgZGVzdEEsIGRlc3RCLCBkZXN0QywgZGVzdEQsIGRlc3RFIH0gfSwg
eyB7IHNyY0EsIHNyY0IsIHNyY0MsIHNyY0QsIHNyY0UgfSB9KTsKKyAgICB9CiAKICNpZiBDUFUo
WDg2XzY0KSB8fCBDUFUoQVJNNjQpCiAgICAgdGVtcGxhdGU8RlBSUmVnIGRlc3RBLCBGUFJSZWcg
ZGVzdEI+CkBAIC0yMTg0LDYgKzIxOTEsMTIgQEAgY2xhc3MgQ0NhbGxIZWxwZXJzIDogcHVibGlj
IEFzc2VtYmx5SGVscGVycyB7CiAgICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0
ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CiAgICAgfQogCisgICAgQUxXQVlTX0lOTElORSB2
b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIs
IEdQUlJlZyBhcmczLCBHUFJSZWcgYXJnNCwgR1BSUmVnIGFyZzUpCisgICAgeworICAgICAgICBz
ZXR1cEZpdmVTdHViQXJnc0dQUihHUFJJbmZvOjphcmd1bWVudEdQUjEsIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIzLCBHUFJJbmZvOjphcmd1bWVudEdQUjQsIEdQ
UkluZm86OmFyZ3VtZW50R1BSNSwgYXJnMSwgYXJnMiwgYXJnMywgYXJnNCwgYXJnNSk7CisgICAg
ICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BS
MCk7CisgICAgfQorCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4
ZWNTdGF0ZShHUFJSZWcgYXJnMSwgVHJ1c3RlZEltbVB0ciBhcmcyLCBHUFJSZWcgYXJnMywgR1BS
UmVnIGFyZzQpCiAgICAgewogICAgICAgICBzZXR1cFN0dWJBcmd1bWVudHMxMzQoYXJnMSwgYXJn
MywgYXJnNCk7CkBAIC0yNDcyLDYgKzI0ODUsMTA1IEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1
YmxpYyBBc3NlbWJseUhlbHBlcnMgewogICAgICAgICAvLyBSZWFkeSBmb3IgYSBqdW1wIQogICAg
ICAgICBtb3ZlKG5ld0ZyYW1lUG9pbnRlciwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogICAgIH0K
KworI2lmIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMgPj0gNAorICAgIHRlbXBsYXRlPHVu
c2lnbmVkIE51bWJlck9mUmVnaXN0ZXJzPgorICAgIHZvaWQgc2V0dXBTdHViQXJnc0dQUihzdGQ6
OmFycmF5PEdQUlJlZywgTnVtYmVyT2ZSZWdpc3RlcnM+IGRlc3RpbmF0aW9ucywgc3RkOjphcnJh
eTxHUFJSZWcsIE51bWJlck9mUmVnaXN0ZXJzPiBzb3VyY2VzKQorICAgIHsKKyAgICAgICAgaWYg
KCFBU1NFUlRfRElTQUJMRUQpIHsKKyAgICAgICAgICAgIFJlZ2lzdGVyU2V0IHNldDsKKyAgICAg
ICAgICAgIGZvciAoR1BSUmVnIGRlc3QgOiBkZXN0aW5hdGlvbnMpCisgICAgICAgICAgICAgICAg
c2V0LnNldChkZXN0KTsKKyAgICAgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0Uoc2V0Lm51bWJl
ck9mU2V0R1BScygpID09IDQsICJEZXN0aW5hdGlvbnMgc2hvdWxkIG5vdCBiZSBhbGlhc2VkLiIp
OworICAgICAgICB9CisKKyAgICAgICAgdHlwZWRlZiBzdGQ6OnBhaXI8R1BSUmVnLCBHUFJSZWc+
IFJlZ1BhaXI7CisgICAgICAgIFZlY3RvcjxSZWdQYWlyLCBOdW1iZXJPZlJlZ2lzdGVycz4gcGFp
cnM7CisKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IE51bWJlck9mUmVnaXN0ZXJz
OyArK2kpIHsKKyAgICAgICAgICAgIGlmIChzb3VyY2VzW2ldICE9IGRlc3RpbmF0aW9uc1tpXSkK
KyAgICAgICAgICAgICAgICBwYWlycy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoc291cmNlc1tpXSwg
ZGVzdGluYXRpb25zW2ldKSk7CisgICAgICAgIH0KKworI2lmICFBU1NFUlRfRElTQUJMRUQKKyAg
ICAgICAgYXV0byBudW1VbmlxdWVTb3VyY2VzID0gWyZdICgpIC0+IHVuc2lnbmVkIHsKKyAgICAg
ICAgICAgIFJlZ2lzdGVyU2V0IHNldDsKKyAgICAgICAgICAgIGZvciAoYXV0byYgcGFpciA6IHBh
aXJzKSB7CisgICAgICAgICAgICAgICAgR1BSUmVnIHNvdXJjZSA9IHBhaXIuZmlyc3Q7CisgICAg
ICAgICAgICAgICAgc2V0LnNldChzb3VyY2UpOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
cmV0dXJuIHNldC5udW1iZXJPZlNldEdQUnMoKTsKKyAgICAgICAgfTsKKworICAgICAgICBhdXRv
IG51bVVuaXF1ZURlc3RzID0gWyZdICgpIC0+IHVuc2lnbmVkIHsKKyAgICAgICAgICAgIFJlZ2lz
dGVyU2V0IHNldDsKKyAgICAgICAgICAgIGZvciAoYXV0byYgcGFpciA6IHBhaXJzKSB7CisgICAg
ICAgICAgICAgICAgR1BSUmVnIGRlc3QgPSBwYWlyLnNlY29uZDsKKyAgICAgICAgICAgICAgICBz
ZXQuc2V0KGRlc3QpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHNldC5udW1i
ZXJPZlNldEdQUnMoKTsKKyAgICAgICAgfTsKKyNlbmRpZgorCisgICAgICAgIHdoaWxlIChwYWly
cy5zaXplKCkpIHsKKyAgICAgICAgICAgIFJlZ2lzdGVyU2V0IGZyZWVEZXN0aW5hdGlvbnM7Cisg
ICAgICAgICAgICBmb3IgKGF1dG8mIHBhaXIgOiBwYWlycykgeworICAgICAgICAgICAgICAgIEdQ
UlJlZyBkZXN0ID0gcGFpci5zZWNvbmQ7CisgICAgICAgICAgICAgICAgZnJlZURlc3RpbmF0aW9u
cy5zZXQoZGVzdCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmb3IgKGF1dG8mIHBhaXIg
OiBwYWlycykgeworICAgICAgICAgICAgICAgIEdQUlJlZyBzb3VyY2UgPSBwYWlyLmZpcnN0Owor
ICAgICAgICAgICAgICAgIGZyZWVEZXN0aW5hdGlvbnMuY2xlYXIoc291cmNlKTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgaWYgKGZyZWVEZXN0aW5hdGlvbnMubnVtYmVyT2ZTZXRHUFJz
KCkpIHsKKyAgICAgICAgICAgICAgICBib29sIG1hZGVNb3ZlID0gZmFsc2U7CisgICAgICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBhaXJzLnNpemUoKTsgaSsrKSB7CisgICAg
ICAgICAgICAgICAgICAgIGF1dG8mIHBhaXIgPSBwYWlyc1tpXTsKKyAgICAgICAgICAgICAgICAg
ICAgR1BSUmVnIHNvdXJjZSA9IHBhaXIuZmlyc3Q7CisgICAgICAgICAgICAgICAgICAgIEdQUlJl
ZyBkZXN0ID0gcGFpci5zZWNvbmQ7CisgICAgICAgICAgICAgICAgICAgIGlmIChmcmVlRGVzdGlu
YXRpb25zLmdldChkZXN0KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgbW92ZShzb3VyY2Us
IGRlc3QpOworICAgICAgICAgICAgICAgICAgICAgICAgcGFpcnMucmVtb3ZlKGkpOworICAgICAg
ICAgICAgICAgICAgICAgICAgbWFkZU1vdmUgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChtYWRlTW92ZSwgbWFkZU1vdmUpOworICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBBU1NFUlQobnVt
VW5pcXVlRGVzdHMoKSA9PSBudW1VbmlxdWVTb3VyY2VzKCkpOworICAgICAgICAgICAgQVNTRVJU
KG51bVVuaXF1ZURlc3RzKCkgPT0gcGFpcnMuc2l6ZSgpKTsKKyAgICAgICAgICAgIC8vIFRoZSBz
ZXQgb2Ygc291cmNlIGFuZCBkZXN0aW5hdGlvbiByZWdpc3RlcnMgYXJlIGVxdWl2YWxlbnQgc2V0
cy4gVGhpcyBtZWFucyB3ZSBkb24ndCBoYXZlCisgICAgICAgICAgICAvLyBhbnkgZnJlZSBkZXN0
aW5hdGlvbiByZWdpc3RlcnMgdGhhdCB3b24ndCBhbHNvIGNsb2JiZXIgYSBzb3VyY2UuIFdlIGdl
dCBhcm91bmQgdGhpcyBieQorICAgICAgICAgICAgLy8gZXhjaGFuZ2luZyByZWdpc3RlcnMuCisK
KyAgICAgICAgICAgIEdQUlJlZyBzb3VyY2UgPSBwYWlyc1swXS5maXJzdDsKKyAgICAgICAgICAg
IEdQUlJlZyBkZXN0ID0gcGFpcnNbMF0uc2Vjb25kOworICAgICAgICAgICAgc3dhcChzb3VyY2Us
IGRlc3QpOworICAgICAgICAgICAgcGFpcnMucmVtb3ZlKDApOworCisgICAgICAgICAgICBHUFJS
ZWcgbmV3U291cmNlID0gc291cmNlOworICAgICAgICAgICAgZm9yIChhdXRvJiBwYWlyIDogcGFp
cnMpIHsKKyAgICAgICAgICAgICAgICBHUFJSZWcgc291cmNlID0gcGFpci5maXJzdDsKKyAgICAg
ICAgICAgICAgICBpZiAoc291cmNlID09IGRlc3QpIHsKKyAgICAgICAgICAgICAgICAgICAgcGFp
ci5maXJzdCA9IG5ld1NvdXJjZTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBXZSBtYXkgaGF2ZSBp
bnRyb2R1Y2VkIHBhaXJzIHRoYXQgaGF2ZSB0aGUgc2FtZSBzb3VyY2UgYW5kIGRlc3RpbmF0aW9u
LiBSZW1vdmUgdGhvc2Ugbm93LgorICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IHBhaXJzLnNpemUoKTsgaSsrKSB7CisgICAgICAgICAgICAgICAgYXV0byYgcGFpciA9IHBhaXJz
W2ldOworICAgICAgICAgICAgICAgIGlmIChwYWlyLmZpcnN0ID09IHBhaXIuc2Vjb25kKSB7Cisg
ICAgICAgICAgICAgICAgICAgIHBhaXJzLnJlbW92ZShpKTsKKyAgICAgICAgICAgICAgICAgICAg
aS0tOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0K
KyNlbmRpZiAvLyBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTID49IDQKICAgICAKICAgICAv
LyBUaGVzZSBvcGVyYXRpb25zIGNsb2JiZXIgYWxsIHZvbGF0aWxlIHJlZ2lzdGVycy4gVGhleSBh
c3N1bWUgdGhhdCB0aGVyZSBpcyByb29tIG9uIHRoZSB0b3Agb2YKICAgICAvLyBzdGFjayB0byBt
YXJzaGFsbCBjYWxsIGFyZ3VtZW50cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRleCAx
YWJlN2M0MzQxNzQ2M2Y5NjkxNjUyOWE2ZTYxNGVkZTA5YzdmZDM5Li4yMzdkMTlhNGIwODJmMWNi
MGUwMmMyZWE1NzdjYzFjYzMxMDc5NDMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBA
IC0zMjIsNiArMzIyLDggQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAg
ICAgICBERUZJTkVfT1Aob3BfcHV0X2dldHRlcl9zZXR0ZXJfYnlfaWQpCiAgICAgICAgIERFRklO
RV9PUChvcF9wdXRfZ2V0dGVyX2J5X3ZhbCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9zZXR0
ZXJfYnlfdmFsKQorICAgICAgICBERUZJTkVfT1Aob3BfZGVmaW5lX2RhdGFfcHJvcGVydHkpCisg
ICAgICAgIERFRklORV9PUChvcF9kZWZpbmVfYWNjZXNzb3JfcHJvcGVydHkpCiAKICAgICAgICAg
REVGSU5FX09QKG9wX3JldCkKICAgICAgICAgREVGSU5FX09QKG9wX3JzaGlmdCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5oCmluZGV4IGExNGE4NTZhMDdiZDI1YWFkN2NjZTBkM2I4NDBlZTI3M2VlY2Rm
YzUuLjQ1MWEyMGQ1NjQxMzhlY2JkNzVjNGRkMzJhZDRkY2ZhNjQ2MjY2MTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuaApAQCAtNTY3LDYgKzU2Nyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICB2b2lkIGVtaXRfb3BfcHV0X2dldHRlcl9zZXR0ZXJfYnlfaWQoSW5zdHJ1Y3Rpb24qKTsKICAg
ICAgICAgdm9pZCBlbWl0X29wX3B1dF9nZXR0ZXJfYnlfdmFsKEluc3RydWN0aW9uKik7CiAgICAg
ICAgIHZvaWQgZW1pdF9vcF9wdXRfc2V0dGVyX2J5X3ZhbChJbnN0cnVjdGlvbiopOworICAgICAg
ICB2b2lkIGVtaXRfb3BfZGVmaW5lX2RhdGFfcHJvcGVydHkoSW5zdHJ1Y3Rpb24qKTsKKyAgICAg
ICAgdm9pZCBlbWl0X29wX2RlZmluZV9hY2Nlc3Nvcl9wcm9wZXJ0eShJbnN0cnVjdGlvbiopOwog
ICAgICAgICB2b2lkIGVtaXRfb3BfcmV0KEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1p
dF9vcF9yc2hpZnQoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3NldF9mdW5j
dGlvbl9uYW1lKEluc3RydWN0aW9uKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5oCmluZGV4IDkzNWM0ZmFiMTlkMmQ3NzlhNTBlYjRlNzdmMzUxODYxYjIxMWEzZjYu
LjQ3ZmU5NTczZmFkNzU2YTI2MjY3NDgxZmQ2YWNlYWI4NmU5M2U1MjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCkBAIC01OSw2ICs1OSw3IEBAIGNsYXNzIFJl
Z0V4cE9iamVjdDsKIGNsYXNzIFJlZ2lzdGVyOwogY2xhc3MgU3RydWN0dXJlOwogY2xhc3MgU3Ry
dWN0dXJlU3R1YkluZm87CitjbGFzcyBTeW1ib2w7CiBjbGFzcyBTeW1ib2xUYWJsZTsKIGNsYXNz
IFdhdGNocG9pbnRTZXQ7CiAKQEAgLTExMSw2ICsxMTIsNyBAQCB0eXBlZGVmIGNoYXIqIFVudXNl
ZFB0cjsKICAgICBTc2k6IFN0cnVjdHVyZVN0dWJJbmZvKgogICAgIFN0OiBTdHJ1Y3R1cmUqCiAg
ICAgU3ltdGFiOiBTeW1ib2xUYWJsZSoKKyAgICBTeW06IFN5bWJvbCoKICAgICBUOiBTdHJpbmdJ
bXBsKgogICAgIFY6IHZvaWQKICAgICBWbTogVk0qCkBAIC0yNjksNiArMjcxLDE0IEBAIHR5cGVk
ZWYgdm9pZCAoSklUX09QRVJBVElPTiAqVl9KSVRPcGVyYXRpb25fRVBaSikoRXhlY1N0YXRlKiwg
dm9pZCosIGludDMyX3QsIEVuCiB0eXBlZGVmIHZvaWQgKEpJVF9PUEVSQVRJT04gKlZfSklUT3Bl
cmF0aW9uX0VTc2lKSkkpKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpT
VmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBVbmlxdWVkU3RyaW5nSW1wbCopOwogdHlwZWRlZiB2b2lk
IChKSVRfT1BFUkFUSU9OICpWX0pJVE9wZXJhdGlvbl9FSkpKSSkoRXhlY1N0YXRlKiwgRW5jb2Rl
ZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgVW5pcXVlZFN0cmluZ0lt
cGwqKTsKIHR5cGVkZWYgdm9pZCAoSklUX09QRVJBVElPTiAqVl9KSVRPcGVyYXRpb25fRUpKSkop
KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUsIEVuY29kZWRKU1ZhbHVlKTsKK3R5cGVkZWYgdm9pZCAoSklUX09QRVJBVElPTiAqVl9KSVRP
cGVyYXRpb25fRU9KSlopKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlLCBpbnQzMl90KTsKK3R5cGVkZWYgdm9pZCAoSklUX09QRVJBVElPTiAqVl9K
SVRPcGVyYXRpb25fRU9Kc3NKWikoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBKU1N0cmluZyosIEVu
Y29kZWRKU1ZhbHVlLCBpbnQzMl90KTsKK3R5cGVkZWYgdm9pZCAoSklUX09QRVJBVElPTiAqVl9K
SVRPcGVyYXRpb25fRU9JSlopKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgVW5pcXVlZFN0cmluZ0lt
cGwqLCBFbmNvZGVkSlNWYWx1ZSwgaW50MzJfdCk7Cit0eXBlZGVmIHZvaWQgKEpJVF9PUEVSQVRJ
T04gKlZfSklUT3BlcmF0aW9uX0VPU3ltSlopKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgU3ltYm9s
KiwgRW5jb2RlZEpTVmFsdWUsIGludDMyX3QpOwordHlwZWRlZiB2b2lkIChKSVRfT1BFUkFUSU9O
ICpWX0pJVE9wZXJhdGlvbl9FT0pPT1opKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgRW5jb2RlZEpT
VmFsdWUsIEpTT2JqZWN0KiwgSlNPYmplY3QqLCBpbnQzMl90KTsKK3R5cGVkZWYgdm9pZCAoSklU
X09QRVJBVElPTiAqVl9KSVRPcGVyYXRpb25fRU9Kc3NPT1opKEV4ZWNTdGF0ZSosIEpTT2JqZWN0
KiwgSlNTdHJpbmcqLCBKU09iamVjdCosIEpTT2JqZWN0KiwgaW50MzJfdCk7Cit0eXBlZGVmIHZv
aWQgKEpJVF9PUEVSQVRJT04gKlZfSklUT3BlcmF0aW9uX0VPSU9PWikoRXhlY1N0YXRlKiwgSlNP
YmplY3QqLCBVbmlxdWVkU3RyaW5nSW1wbCosIEpTT2JqZWN0KiwgSlNPYmplY3QqLCBpbnQzMl90
KTsKK3R5cGVkZWYgdm9pZCAoSklUX09QRVJBVElPTiAqVl9KSVRPcGVyYXRpb25fRU9TeW1PT1op
KEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgU3ltYm9sKiwgSlNPYmplY3QqLCBKU09iamVjdCosIGlu
dDMyX3QpOwogdHlwZWRlZiB2b2lkIChKSVRfT1BFUkFUSU9OICpWX0pJVE9wZXJhdGlvbl9FV3Mp
KEV4ZWNTdGF0ZSosIFdhdGNocG9pbnRTZXQqKTsKIHR5cGVkZWYgdm9pZCAoSklUX09QRVJBVElP
TiAqVl9KSVRPcGVyYXRpb25fRVopKEV4ZWNTdGF0ZSosIGludDMyX3QpOwogdHlwZWRlZiB2b2lk
IChKSVRfT1BFUkFUSU9OICpWX0pJVE9wZXJhdGlvbl9FWkopKEV4ZWNTdGF0ZSosIGludDMyX3Qs
IEVuY29kZWRKU1ZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUUHJvcGVydHlBY2Nlc3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9w
ZXJ0eUFjY2Vzcy5jcHAKaW5kZXggNTYwMjY4YjVjMzE0Nzg0MTM2MDcyZGRkODAwNzc3ODBmMzM3
OGIyYi4uOWQ0ZmQxYWE2YWY2NGI0OGQ3YmUxYjNlYjQ2OTMwYjUzZjM1ZjRiNyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKQEAgLTE3NzMs
NiArMTc3MywxOCBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEZsb2F0VHlwZWRBcnJheVB1dEJ5
VmFsKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sCiAgICAgcmV0dXJuIHNsb3dDYXNl
czsKIH0KIAordm9pZCBKSVQ6OmVtaXRfb3BfZGVmaW5lX2RhdGFfcHJvcGVydHkoSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhD
YWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX2RlZmluZV9kYXRhX3Byb3Bl
cnR5KTsKKyAgICBzbG93UGF0aENhbGwuY2FsbCgpOworfQorCit2b2lkIEpJVDo6ZW1pdF9vcF9k
ZWZpbmVfYWNjZXNzb3JfcHJvcGVydHkoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
K3sKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVj
dGlvbiwgc2xvd19wYXRoX2RlZmluZV9hY2Nlc3Nvcl9wcm9wZXJ0eSk7CisgICAgc2xvd1BhdGhD
YWxsLmNhbGwoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBFTkFCTEUo
SklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIuYXNtCmluZGV4IDEwMDM3YWY1NmNlNmM3ZjFhOTNlNTJkMmE3MTdlMjk0ZTAxMDVmOWEu
LmM5Yjg0NDM3YzY1NzQ1NTNlMzgwZTUyMTIyNjFhYjkyNjk2YmUzNGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KQEAgLTE0
NTcsNiArMTQ1NywxOCBAQCBfbGxpbnRfb3BfcHV0X3NldHRlcl9ieV92YWw6CiAgICAgZGlzcGF0
Y2goNSkKIAogCitfbGxpbnRfb3BfZGVmaW5lX2RhdGFfcHJvcGVydHk6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGNhbGxPcGNvZGVTbG93UGF0aChfc2xvd19wYXRoX2RlZmluZV9kYXRhX3By
b3BlcnR5KQorICAgIGRpc3BhdGNoKDUpCisKKworX2xsaW50X29wX2RlZmluZV9hY2Nlc3Nvcl9w
cm9wZXJ0eToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbE9wY29kZVNsb3dQYXRoKF9z
bG93X3BhdGhfZGVmaW5lX2FjY2Vzc29yX3Byb3BlcnR5KQorICAgIGRpc3BhdGNoKDYpCisKKwog
X2xsaW50X29wX2p0cnVlOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBqdW1wVHJ1ZU9yRmFs
c2UoCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93
UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhz
LmNwcAppbmRleCBjYWY4MjZkYzJhY2RhYjZkOWEzOTU4YTBjZjAzMTE0MzYyM2JiYTNmLi5mMjVl
ZTgxMWFjYTllY2E0YTk2ZGE5MGU1ZTBhOTQyNWI5NzQ1OGMwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKQEAgLTMzLDYgKzMzLDcg
QEAKICNpbmNsdWRlICJDbG9uZWRBcmd1bWVudHMuaCIKICNpbmNsdWRlICJDb2RlUHJvZmlsaW5n
LmgiCiAjaW5jbHVkZSAiQ29tbW9uU2xvd1BhdGhzRXhjZXB0aW9ucy5oIgorI2luY2x1ZGUgIkRl
ZmluZVByb3BlcnR5QXR0cmlidXRlcy5oIgogI2luY2x1ZGUgIkRpcmVjdEFyZ3VtZW50cy5oIgog
I2luY2x1ZGUgIkVycm9yLmgiCiAjaW5jbHVkZSAiRXJyb3JIYW5kbGluZ1Njb3BlLmgiCkBAIC05
MzAsNCArOTMxLDM5IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfdmFsX3dpdGhf
dGhpcykKICAgICBFTkQoKTsKIH0KIAorU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2RlZmluZV9k
YXRhX3Byb3BlcnR5KQoreworICAgIEJFR0lOKCk7CisgICAgSlNPYmplY3QqIGJhc2UgPSBhc09i
amVjdChPUF9DKDEpLmpzVmFsdWUoKSk7CisgICAgSlNWYWx1ZSBwcm9wZXJ0eSA9IE9QX0MoMiku
anNWYWx1ZSgpOworICAgIEpTVmFsdWUgdmFsdWUgPSBPUF9DKDMpLmpzVmFsdWUoKTsKKyAgICBK
U1ZhbHVlIGF0dHJpYnV0ZXMgPSBPUF9DKDQpLmpzVmFsdWUoKTsKKyAgICBBU1NFUlQoYXR0cmli
dXRlcy5pc0ludDMyKCkpOworCisgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBwcm9wZXJ0eS50b1By
b3BlcnR5S2V5KGV4ZWMpOworICAgIENIRUNLX0VYQ0VQVElPTigpOworICAgIFByb3BlcnR5RGVz
Y3JpcHRvciBkZXNjcmlwdG9yID0gdG9Qcm9wZXJ0eURlc2NyaXB0b3IodmFsdWUsIGpzVW5kZWZp
bmVkKCksIGpzVW5kZWZpbmVkKCksIERlZmluZVByb3BlcnR5QXR0cmlidXRlcyhhdHRyaWJ1dGVz
LmFzSW50MzIoKSkpOworICAgIEFTU0VSVCgoZGVzY3JpcHRvci5hdHRyaWJ1dGVzKCkgJiBBY2Nl
c3NvcikgfHwgKCFkZXNjcmlwdG9yLmlzQWNjZXNzb3JEZXNjcmlwdG9yKCkpKTsKKyAgICBiYXNl
LT5tZXRob2RUYWJsZSh2bSktPmRlZmluZU93blByb3BlcnR5KGJhc2UsIGV4ZWMsIHByb3BlcnR5
TmFtZSwgZGVzY3JpcHRvciwgdHJ1ZSk7CisgICAgRU5EKCk7Cit9CisKK1NMT1dfUEFUSF9ERUNM
KHNsb3dfcGF0aF9kZWZpbmVfYWNjZXNzb3JfcHJvcGVydHkpCit7CisgICAgQkVHSU4oKTsKKyAg
ICBKU09iamVjdCogYmFzZSA9IGFzT2JqZWN0KE9QX0MoMSkuanNWYWx1ZSgpKTsKKyAgICBKU1Zh
bHVlIHByb3BlcnR5ID0gT1BfQygyKS5qc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSBnZXR0ZXIgPSBP
UF9DKDMpLmpzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHNldHRlciA9IE9QX0MoNCkuanNWYWx1ZSgp
OworICAgIEpTVmFsdWUgYXR0cmlidXRlcyA9IE9QX0MoNSkuanNWYWx1ZSgpOworICAgIEFTU0VS
VChhdHRyaWJ1dGVzLmlzSW50MzIoKSk7CisKKyAgICBhdXRvIHByb3BlcnR5TmFtZSA9IHByb3Bl
cnR5LnRvUHJvcGVydHlLZXkoZXhlYyk7CisgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgUHJv
cGVydHlEZXNjcmlwdG9yIGRlc2NyaXB0b3IgPSB0b1Byb3BlcnR5RGVzY3JpcHRvcihqc1VuZGVm
aW5lZCgpLCBnZXR0ZXIsIHNldHRlciwgRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzKGF0dHJpYnV0
ZXMuYXNJbnQzMigpKSk7CisgICAgQVNTRVJUKChkZXNjcmlwdG9yLmF0dHJpYnV0ZXMoKSAmIEFj
Y2Vzc29yKSB8fCAoIWRlc2NyaXB0b3IuaXNBY2Nlc3NvckRlc2NyaXB0b3IoKSkpOworICAgIGJh
c2UtPm1ldGhvZFRhYmxlKHZtKS0+ZGVmaW5lT3duUHJvcGVydHkoYmFzZSwgZXhlYywgcHJvcGVy
dHlOYW1lLCBkZXNjcmlwdG9yLCB0cnVlKTsKKyAgICBFTkQoKTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25T
bG93UGF0aHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRo
cy5oCmluZGV4IDhlZTViZTMxYWQzY2VlYjYxMTAzOWYyOThlN2RiMzZmYjk0OWZmOTkuLjQ3NWI3
N2UxOGZlMjJkMDY4OGEyNWUxZjU3Yjg0ZTRjMDgyYjhmY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCkBAIC0yNTcsNiArMjU3LDggQEAg
U0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9nZXRfYnlfaWRfd2l0aF90aGlzKTsKIFNM
T1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZ2V0X2J5X3ZhbF93aXRoX3RoaXMpOwogU0xP
V19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfaWRfd2l0aF90aGlzKTsKIFNMT1df
UEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHV0X2J5X3ZhbF93aXRoX3RoaXMpOworU0xPV19Q
QVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9kZWZpbmVfZGF0YV9wcm9wZXJ0eSk7CitTTE9XX1BB
VEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2RlZmluZV9hY2Nlc3Nvcl9wcm9wZXJ0eSk7CiAKIH0g
Ly8gbmFtZXNwYWNlIEpTQwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9EZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0RlZmluZVByb3BlcnR5QXR0cmlidXRlcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNkOGEyNDhiOTE2
MGM0NzY0YjEwY2E0MTFmYjJmMmM3NWNhOTgzNjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9EZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaApAQCAtMCww
ICsxLDE0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL1RyaVN0YXRlLmg+CisKK25hbWVzcGFjZSBK
U0MgeworCitjbGFzcyBEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMgeworcHVibGljOgorICAgIHN0
YXRpY19hc3NlcnQoRmFsc2VUcmlTdGF0ZSA9PSAwLCAiRmFsc2VUcmlTdGF0ZSBpcyAwLiIpOwor
ICAgIHN0YXRpY19hc3NlcnQoVHJ1ZVRyaVN0YXRlID09IDEsICJUcnVlVHJpU3RhdGUgaXMgMS4i
KTsKKyAgICBzdGF0aWNfYXNzZXJ0KE1peGVkVHJpU3RhdGUgPT0gMiwgIk1peGVkVHJpU3RhdGUg
aXMgMi4iKTsKKworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBDb25maWd1cmFibGVTaGlmdCA9
IDA7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIEVudW1lcmFibGVTaGlmdCA9IDI7CisgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIFdyaXRhYmxlU2hpZnQgPSA0OworICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBWYWx1ZVNoaWZ0ID0gNjsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgR2V0
U2hpZnQgPSA3OworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTZXRTaGlmdCA9IDg7CisKKyAg
ICBEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMoKQorICAgICAgICA6IG1fYXR0cmlidXRlcygKKyAg
ICAgICAgICAgIChNaXhlZFRyaVN0YXRlIDw8IENvbmZpZ3VyYWJsZVNoaWZ0KQorICAgICAgICAg
ICAgfCAoTWl4ZWRUcmlTdGF0ZSA8PCBFbnVtZXJhYmxlU2hpZnQpCisgICAgICAgICAgICB8IChN
aXhlZFRyaVN0YXRlIDw8IFdyaXRhYmxlU2hpZnQpCisgICAgICAgICAgICB8ICgwIDw8IFZhbHVl
U2hpZnQpCisgICAgICAgICAgICB8ICgwIDw8IEdldFNoaWZ0KQorICAgICAgICAgICAgfCAoMCA8
PCBTZXRTaGlmdCkpCisgICAgeworICAgIH0KKworICAgIGV4cGxpY2l0IERlZmluZVByb3BlcnR5
QXR0cmlidXRlcyh1bnNpZ25lZCBhdHRyaWJ1dGVzKQorICAgICAgICA6IG1fYXR0cmlidXRlcyhh
dHRyaWJ1dGVzKQorICAgIHsKKyAgICB9CisKKyAgICB1bnNpZ25lZCByYXdSZXByZXNlbnRhdGlv
bigpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9hdHRyaWJ1dGVzOworICAgIH0KKwor
ICAgIGJvb2wgaGFzVmFsdWUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYXR0cmlidXRlcyAm
ICgwYjEgPDwgVmFsdWVTaGlmdCk7CisgICAgfQorCisgICAgdm9pZCBzZXRWYWx1ZSgpCisgICAg
eworICAgICAgICBtX2F0dHJpYnV0ZXMgPSBtX2F0dHJpYnV0ZXMgfCAoMGIxIDw8IFZhbHVlU2hp
ZnQpOworICAgIH0KKworICAgIGJvb2wgaGFzR2V0KCkKKyAgICB7CisgICAgICAgIHJldHVybiBt
X2F0dHJpYnV0ZXMgJiAoMGIxIDw8IEdldFNoaWZ0KTsKKyAgICB9CisKKyAgICB2b2lkIHNldEdl
dCgpCisgICAgeworICAgICAgICBtX2F0dHJpYnV0ZXMgPSBtX2F0dHJpYnV0ZXMgfCAoMGIxIDw8
IEdldFNoaWZ0KTsKKyAgICB9CisKKyAgICBib29sIGhhc1NldCgpCisgICAgeworICAgICAgICBy
ZXR1cm4gbV9hdHRyaWJ1dGVzICYgKDBiMSA8PCBTZXRTaGlmdCk7CisgICAgfQorCisgICAgdm9p
ZCBzZXRTZXQoKQorICAgIHsKKyAgICAgICAgbV9hdHRyaWJ1dGVzID0gbV9hdHRyaWJ1dGVzIHwg
KDBiMSA8PCBTZXRTaGlmdCk7CisgICAgfQorCisgICAgVHJpU3RhdGUgd3JpdGFibGUoKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGV4dHJhY3RUcmlTdGF0ZShXcml0YWJsZVNoaWZ0KTsKKyAgICB9
CisKKyAgICBUcmlTdGF0ZSBjb25maWd1cmFibGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGV4
dHJhY3RUcmlTdGF0ZShDb25maWd1cmFibGVTaGlmdCk7CisgICAgfQorCisgICAgVHJpU3RhdGUg
ZW51bWVyYWJsZSgpCisgICAgeworICAgICAgICByZXR1cm4gZXh0cmFjdFRyaVN0YXRlKEVudW1l
cmFibGVTaGlmdCk7CisgICAgfQorCisgICAgdm9pZCBzZXRXcml0YWJsZShib29sIHZhbHVlKQor
ICAgIHsKKyAgICAgICAgZmlsbFdpdGhUcmlTdGF0ZSh2YWx1ZSA/IFRydWVUcmlTdGF0ZSA6IEZh
bHNlVHJpU3RhdGUsIFdyaXRhYmxlU2hpZnQpOworICAgIH0KKworICAgIHZvaWQgc2V0Q29uZmln
dXJhYmxlKGJvb2wgdmFsdWUpCisgICAgeworICAgICAgICBmaWxsV2l0aFRyaVN0YXRlKHZhbHVl
ID8gVHJ1ZVRyaVN0YXRlIDogRmFsc2VUcmlTdGF0ZSwgQ29uZmlndXJhYmxlU2hpZnQpOworICAg
IH0KKworICAgIHZvaWQgc2V0RW51bWVyYWJsZShib29sIHZhbHVlKQorICAgIHsKKyAgICAgICAg
ZmlsbFdpdGhUcmlTdGF0ZSh2YWx1ZSA/IFRydWVUcmlTdGF0ZSA6IEZhbHNlVHJpU3RhdGUsIEVu
dW1lcmFibGVTaGlmdCk7CisgICAgfQorCitwcml2YXRlOgorICAgIHZvaWQgZmlsbFdpdGhUcmlT
dGF0ZShUcmlTdGF0ZSBzdGF0ZSwgdW5zaWduZWQgc2hpZnQpCisgICAgeworICAgICAgICB1bnNp
Z25lZCBtYXNrID0gMGIxMSA8PCBzaGlmdDsKKyAgICAgICAgbV9hdHRyaWJ1dGVzID0gKG1fYXR0
cmlidXRlcyAmIH5tYXNrKSB8IChzdGF0ZSA8PCBzaGlmdCk7CisgICAgfQorCisgICAgVHJpU3Rh
dGUgZXh0cmFjdFRyaVN0YXRlKHVuc2lnbmVkIHNoaWZ0KQorICAgIHsKKyAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PFRyaVN0YXRlPigobV9hdHRyaWJ1dGVzID4+IHNoaWZ0KSAmIDBiMTEpOwor
ICAgIH0KKworICAgIHVuc2lnbmVkIG1fYXR0cmlidXRlczsKK307CisKKworfSAvLyBuYW1lc3Bh
Y2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHAKaW5kZXggOTczYzJlODE2OWViOGZjNWVhZWY2NDY3MGI0NjExMzYyMWE1NThhMC4uNWM5
NGI5MjVjYmU2NWUxOTI0MWQ0OWEyOGYxZTExYTA5ZjY3MTI3MCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtNDA0LDcgKzQwNCw3
IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQogICAgIG1fZnVuY3Rpb25Qcm90
b0hhc0luc3RhbmNlU3ltYm9sRnVuY3Rpb24uc2V0KHZtLCB0aGlzLCBoYXNJbnN0YW5jZVN5bWJv
bEZ1bmN0aW9uKTsKICAgICBtX3Rocm93VHlwZUVycm9yR2V0dGVyU2V0dGVyLmluaXRMYXRlcigK
ICAgICAgICAgW10gKGNvbnN0IEluaXRpYWxpemVyPEdldHRlclNldHRlcj4mIGluaXQpIHsKLSAg
ICAgICAgICAgIEpTRnVuY3Rpb24qIHRocm93ZXIgPSBKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52
bSwgaW5pdC5vd25lciwgMCwgU3RyaW5nKCksIGdsb2JhbEZ1bmNUaHJvd1R5cGVFcnJvcik7Cisg
ICAgICAgICAgICBKU0Z1bmN0aW9uKiB0aHJvd2VyID0gaW5pdC5vd25lci0+dGhyb3dUeXBlRXJy
b3JGdW5jdGlvbigpOwogICAgICAgICAgICAgR2V0dGVyU2V0dGVyKiBnZXR0ZXJTZXR0ZXIgPSBH
ZXR0ZXJTZXR0ZXI6OmNyZWF0ZShpbml0LnZtLCBpbml0Lm93bmVyKTsKICAgICAgICAgICAgIGdl
dHRlclNldHRlci0+c2V0R2V0dGVyKGluaXQudm0sIGluaXQub3duZXIsIHRocm93ZXIpOwogICAg
ICAgICAgICAgZ2V0dGVyU2V0dGVyLT5zZXRTZXR0ZXIoaW5pdC52bSwgaW5pdC5vd25lciwgdGhy
b3dlcik7CkBAIC01ODEsOCArNTgxLDggQEAgbV8gIyMgcHJvcGVyTmFtZSAjIyBTdHJ1Y3R1cmUu
c2V0KHZtLCB0aGlzLCBpbnN0YW5jZVR5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGgKICAgICBP
YmplY3RDb25zdHJ1Y3Rvciogb2JqZWN0Q29uc3RydWN0b3IgPSBPYmplY3RDb25zdHJ1Y3Rvcjo6
Y3JlYXRlKHZtLCB0aGlzLCBPYmplY3RDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0
aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkp
OwogICAgIG1fb2JqZWN0Q29uc3RydWN0b3Iuc2V0KHZtLCB0aGlzLCBvYmplY3RDb25zdHJ1Y3Rv
cik7CiAKLSAgICBKU0Z1bmN0aW9uKiBkZWZpbmVQcm9wZXJ0eUZ1bmN0aW9uID0gbV9vYmplY3RD
b25zdHJ1Y3Rvci0+YWRkRGVmaW5lUHJvcGVydHkoZXhlYywgdGhpcyk7Ci0gICAgbV9kZWZpbmVQ
cm9wZXJ0eUZ1bmN0aW9uLnNldCh2bSwgdGhpcywgZGVmaW5lUHJvcGVydHlGdW5jdGlvbik7Cisg
ICAgSlNGdW5jdGlvbiogdGhyb3dUeXBlRXJyb3JGdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0
ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCksIGdsb2JhbEZ1bmNUaHJvd1R5cGVFcnJvcik7CisgICAg
bV90aHJvd1R5cGVFcnJvckZ1bmN0aW9uLnNldCh2bSwgdGhpcywgdGhyb3dUeXBlRXJyb3JGdW5j
dGlvbik7CiAKICAgICBKU0NlbGwqIGZ1bmN0aW9uQ29uc3RydWN0b3IgPSBGdW5jdGlvbkNvbnN0
cnVjdG9yOjpjcmVhdGUodm0sIEZ1bmN0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2
bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1fZnVuY3Rpb25Qcm90b3R5cGUu
Z2V0KCkpOwogICAgIEFycmF5Q29uc3RydWN0b3IqIGFycmF5Q29uc3RydWN0b3IgPSBBcnJheUNv
bnN0cnVjdG9yOjpjcmVhdGUodm0sIHRoaXMsIEFycmF5Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVj
dHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1fYXJyYXlQcm90b3R5
cGUuZ2V0KCksIG1fc3BlY2llc0dldHRlclNldHRlci5nZXQoKSk7CkBAIC04MDMsNyArODAzLDcg
QEAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPiBqc05h
bWUsIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3QKICAgICBtX3NwZWNpYWxQb2ludGVyc1tTcGVjaWFs
OjpPYmplY3RDb25zdHJ1Y3Rvcl0gPSBvYmplY3RDb25zdHJ1Y3RvcjsKICAgICBtX3NwZWNpYWxQ
b2ludGVyc1tTcGVjaWFsOjpBcnJheUNvbnN0cnVjdG9yXSA9IGFycmF5Q29uc3RydWN0b3I7CiAK
LSAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNv
bnN0YW50OjpEZWZpbmVQcm9wZXJ0eUZ1bmN0aW9uKV0gPSBtX2RlZmluZVByb3BlcnR5RnVuY3Rp
b24uZ2V0KCk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
TGlua1RpbWVDb25zdGFudDo6VGhyb3dUeXBlRXJyb3JGdW5jdGlvbildID0gbV90aHJvd1R5cGVF
cnJvckZ1bmN0aW9uLmdldCgpOwogCiAgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OnVzZURvbGxh
clZNKCkpKSB7CiAgICAgICAgIEpTRG9sbGFyVk1Qcm90b3R5cGUqIGRvbGxhclZNUHJvdG90eXBl
ID0gSlNEb2xsYXJWTVByb3RvdHlwZTo6Y3JlYXRlKHZtLCB0aGlzLCBKU0RvbGxhclZNUHJvdG90
eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSk7
CkBAIC0xMDY2LDcgKzEwNjYsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVu
KEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdmlzaXRvci5hcHBlbmQo
JnRoaXNPYmplY3QtPm1fZXZhbEZ1bmN0aW9uKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09i
amVjdC0+bV9jYWxsRnVuY3Rpb24pOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5t
X2FwcGx5RnVuY3Rpb24pOwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2RlZmlu
ZVByb3BlcnR5RnVuY3Rpb24pOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3Ro
cm93VHlwZUVycm9yRnVuY3Rpb24pOwogICAgIHRoaXNPYmplY3QtPm1fYXJyYXlQcm90b1RvU3Ry
aW5nRnVuY3Rpb24udmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9hcnJheVByb3Rv
VmFsdWVzRnVuY3Rpb24udmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9pbml0aWFs
aXplUHJvbWlzZUZ1bmN0aW9uLnZpc2l0KHZpc2l0b3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggMGRlYWQyYmY4NGI1NTg3MTEyZGM4
N2NmOTQ5NjA0MTc5ZDMyZTk0OC4uOTRkN2UyMzA1MzU4NzY5MWVhMjdhYjBkZmQzZjY2NmUxOWM3
NmJlYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5oCkBAIC0yMzQsNyArMjM0LDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNT
ZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1f
ZXZhbEZ1bmN0aW9uOwogICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBtX2NhbGxGdW5jdGlv
bjsKICAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9hcHBseUZ1bmN0aW9uOwotICAgIFdy
aXRlQmFycmllcjxKU0Z1bmN0aW9uPiBtX2RlZmluZVByb3BlcnR5RnVuY3Rpb247CisgICAgV3Jp
dGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1fdGhyb3dUeXBlRXJyb3JGdW5jdGlvbjsKICAgICBMYXp5
UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIEpTRnVuY3Rpb24+IG1fYXJyYXlQcm90b1RvU3RyaW5n
RnVuY3Rpb247CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBKU0Z1bmN0aW9uPiBt
X2FycmF5UHJvdG9WYWx1ZXNGdW5jdGlvbjsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmpl
Y3QsIEpTRnVuY3Rpb24+IG1faW5pdGlhbGl6ZVByb21pc2VGdW5jdGlvbjsKQEAgLTQ3OSw3ICs0
NzksNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxl
T2JqZWN0IHsKICAgICBKU0Z1bmN0aW9uKiBldmFsRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBt
X2V2YWxGdW5jdGlvbi5nZXQoKTsgfQogICAgIEpTRnVuY3Rpb24qIGNhbGxGdW5jdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1fY2FsbEZ1bmN0aW9uLmdldCgpOyB9CiAgICAgSlNGdW5jdGlvbiogYXBw
bHlGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYXBwbHlGdW5jdGlvbi5nZXQoKTsgfQotICAg
IEpTRnVuY3Rpb24qIGRlZmluZVByb3BlcnR5RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2Rl
ZmluZVByb3BlcnR5RnVuY3Rpb24uZ2V0KCk7IH0KKyAgICBKU0Z1bmN0aW9uKiB0aHJvd1R5cGVF
cnJvckZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV90aHJvd1R5cGVFcnJvckZ1bmN0aW9uLmdl
dCgpOyB9CiAgICAgSlNGdW5jdGlvbiogYXJyYXlQcm90b1RvU3RyaW5nRnVuY3Rpb24oKSBjb25z
dCB7IHJldHVybiBtX2FycmF5UHJvdG9Ub1N0cmluZ0Z1bmN0aW9uLmdldCh0aGlzKTsgfQogICAg
IEpTRnVuY3Rpb24qIGFycmF5UHJvdG9WYWx1ZXNGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
YXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uLmdldCh0aGlzKTsgfQogICAgIEpTRnVuY3Rpb24qIGlu
aXRpYWxpemVQcm9taXNlRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2luaXRpYWxpemVQcm9t
aXNlRnVuY3Rpb24uZ2V0KHRoaXMpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKaW5kZXggNzgxZmNiY2U1NWM3MjUyNjgyMDIx
NjcyY2U4OWRiYTlhNTIxZjRjYS4uMGZhMGNlNmQwYWYxYjMwOTFlMmY3MjhkMTA3OWEzNjljZGYx
ZmQ4YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29u
c3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENv
bnN0cnVjdG9yLmNwcApAQCAtMTA3LDE0ICsxMDcsNiBAQCB2b2lkIE9iamVjdENvbnN0cnVjdG9y
OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE9i
agogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5
TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdldE93blByb3BlcnR5TmFtZXNQcml2YXRlTmFtZSgpLCBv
YmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5TmFtZXMsIERvbnRFbnVtLCAxKTsKIH0KIAot
SlNGdW5jdGlvbiogT2JqZWN0Q29uc3RydWN0b3I6OmFkZERlZmluZVByb3BlcnR5KEV4ZWNTdGF0
ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKLXsKLSAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOwotICAgIEpTRnVuY3Rpb24qIGRlZmluZVByb3BlcnR5RnVuY3Rpb24gPSBKU0Z1
bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMywgdm0ucHJvcGVydHlOYW1lcy0+ZGVm
aW5lUHJvcGVydHkuc3RyaW5nKCksIG9iamVjdENvbnN0cnVjdG9yRGVmaW5lUHJvcGVydHkpOwot
ICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5kZWZp
bmVQcm9wZXJ0eSwgZGVmaW5lUHJvcGVydHlGdW5jdGlvbiwgRG9udEVudW0pOwotICAgIHJldHVy
biBkZWZpbmVQcm9wZXJ0eUZ1bmN0aW9uOwotfQotCiAvLyBFUyAxOS4xLjEuMSBPYmplY3QoW3Zh
bHVlXSkKIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTT2JqZWN0KiBjb25zdHJ1Y3RPYmplY3QoRXhl
Y1N0YXRlKiBleGVjLCBKU1ZhbHVlIG5ld1RhcmdldCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5oCmluZGV4IDg5ZDc0NGEyNzc0Y2Q0
NzhlMDgyN2ZlMWYzYzRiYWE5YWVmNjRjZDkuLjhmZjJjNTVhZWMyOWQ5NTFjY2I0NDA3ZmE1YzYy
MzEzZjdmMWQwYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09i
amVjdENvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2Jq
ZWN0Q29uc3RydWN0b3IuaApAQCAtNTQsOCArNTQsNiBAQCBjbGFzcyBPYmplY3RDb25zdHJ1Y3Rv
ciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6
Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwg
U3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogICAgIH0KIAotICAgIEpTRnVuY3Rpb24qIGFkZERl
ZmluZVByb3BlcnR5KEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0Kik7Ci0KIHByb3RlY3RlZDoK
ICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBPYmplY3RQcm90
b3R5cGUqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJv
cGVydHlEZXNjcmlwdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0
eURlc2NyaXB0b3IuaAppbmRleCBhYTYxZWVhNDk1YzRkMWM5ZDVhMGY4MjQ3OWQzMjQ1MzY2NTVh
MzY1Li5lZTk3MWY1NTAzNjc2NzMyMDk3OTllODE5ZTVkNDMwMWRkNTg0NDg3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eURlc2NyaXB0b3IuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eURlc2NyaXB0b3IuaApAQCAt
MjYsNiArMjYsNyBAQAogI2lmbmRlZiBQcm9wZXJ0eURlc2NyaXB0b3JfaAogI2RlZmluZSBQcm9w
ZXJ0eURlc2NyaXB0b3JfaAogCisjaW5jbHVkZSAiRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzLmgi
CiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTkzLDYgKzk0
LDMyIEBAIGNsYXNzIFByb3BlcnR5RGVzY3JpcHRvciB7CiAgICAgdW5zaWduZWQgbV9zZWVuQXR0
cmlidXRlczsKIH07CiAKK2lubGluZSBQcm9wZXJ0eURlc2NyaXB0b3IgdG9Qcm9wZXJ0eURlc2Ny
aXB0b3IoSlNWYWx1ZSB2YWx1ZSwgSlNWYWx1ZSBnZXR0ZXIsIEpTVmFsdWUgc2V0dGVyLCBEZWZp
bmVQcm9wZXJ0eUF0dHJpYnV0ZXMgYXR0cmlidXRlcykKK3sKKyAgICAvLyBXZSBhc3N1bWUgdGhh
dCB2YWxpZGF0aW9uIGlzIGFscmVhZHkgZG9uZS4KKyAgICBQcm9wZXJ0eURlc2NyaXB0b3IgZGVz
YzsKKworICAgIGlmIChhdHRyaWJ1dGVzLmVudW1lcmFibGUoKSAhPSBNaXhlZFRyaVN0YXRlKQor
ICAgICAgICBkZXNjLnNldEVudW1lcmFibGUoYXR0cmlidXRlcy5lbnVtZXJhYmxlKCkpOworCisg
ICAgaWYgKGF0dHJpYnV0ZXMuY29uZmlndXJhYmxlKCkgIT0gTWl4ZWRUcmlTdGF0ZSkKKyAgICAg
ICAgZGVzYy5zZXRDb25maWd1cmFibGUoYXR0cmlidXRlcy5jb25maWd1cmFibGUoKSk7CisKKyAg
ICBpZiAoYXR0cmlidXRlcy5oYXNWYWx1ZSgpKQorICAgICAgICBkZXNjLnNldFZhbHVlKHZhbHVl
KTsKKworICAgIGlmIChhdHRyaWJ1dGVzLndyaXRhYmxlKCkgIT0gTWl4ZWRUcmlTdGF0ZSkKKyAg
ICAgICAgZGVzYy5zZXRXcml0YWJsZShhdHRyaWJ1dGVzLndyaXRhYmxlKCkpOworCisgICAgaWYg
KGF0dHJpYnV0ZXMuaGFzR2V0KCkpCisgICAgICAgIGRlc2Muc2V0R2V0dGVyKGdldHRlcik7CisK
KyAgICBpZiAoYXR0cmlidXRlcy5oYXNTZXQoKSkKKyAgICAgICAgZGVzYy5zZXRTZXR0ZXIoc2V0
dGVyKTsKKworICAgIHJldHVybiBkZXNjOworfQorCiB9CiAKICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>289976</attachid>
            <date>2016-09-27 10:48:09 -0700</date>
            <delta_ts>2016-09-27 11:15:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162108-20160928024510.patch</filename>
            <type>text/plain</type>
            <size>91032</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA2NDQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
NjIxZDM4MjdkNjJiN2JmNDkxMDM3NjFjNzFmOWQ4NjMyNDAyNGY5Li43ZDY2NjFiMTFlMWEwYmI0
YWM3Nzg2YjJhZTE1YjlkOTNiYTA4ODJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNTUgQEAKKzIwMTYtMDktMjcgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0pTQ10gQWRkIGEgbmV3IGJ5dGUgY29kZSBvcF9kZWZpbmVfcHJv
cGVydHkgaW5zdGVhZCBvZiBjYWxsaW5nIGRlZmluZVByb3BlcnR5CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjIxMDgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUbyBjb25zdHJ1Y3QgRVM2IGNsYXNzLCB3
ZSBlbWl0dGVkIGJ5dGVjb2RlIHRoYXQgcGVyZm9ybXMgdGhlIGZvbGxvd2luZyBvcGVyYXRpb25z
LgorCisgICAgICAgICAgICAxLiBjb25zdHJ1Y3QgYSBuZXcgb2JqZWN0CisgICAgICAgICAgICAy
LiBwdXQgImNvbmZpZ3VyYWJsZSIsICJlbnVtZXJhYmxlIiBldGMuIGZpZWxkcworICAgICAgICAg
ICAgMy4gY2FsbCAiZGVmaW5lUHJvcGVydHkiIGZ1bmN0aW9uCisKKyAgICAgICAgSG93ZXZlciwg
dGhpcyBoYXMgYSBwcm9ibGVtcy4gRXZlcnkgdGltZSB3ZSBkZWZpbmUgYSBjbGFzcyBtZXRob2Qs
IHdlIG5lZWQgdG8gY3JlYXRlCisgICAgICAgIGEgbmV3IG9iamVjdCB0byByZXByZXNlbnQgcHJv
cGVydHkgZGVzY3JpcHRvci4gVGhpcyBjYW4gYmUgcmVtb3ZlZCBpZiB3ZSBjYW4gaW50cm9kdWNl
CisgICAgICAgIGEgc3BlY2lhbCBieXRlY29kZSBvciBzcGVjaWFsIGZ1bmN0aW9uLgorCisgICAg
ICAgIFRoaXMgcGF0Y2ggaW50cm9kdWNlcyBuZXcgYnl0ZWNvZGVzLCBvcF9kZWZpbmVfZGF0YV9w
cm9wZXJ0eSBhbmQgb3BfZGVmaW5lX2FjY2Vzc29yX3Byb3BlcnR5LgorICAgICAgICBJbnN0ZWFk
IG9mIHRha2luZyBhbiBvYmplY3QsIHRoZXkgdGFrZXMgc2V2ZXJhbCByZWdpc3RlcnMgdG8gYXZv
aWQgb2JqZWN0IGFsbG9jYXRpb25zLgorICAgICAgICBXZSdyZSBwbGFubmluZyB0byB1c2UgdGhp
cyBieXRlY29kZSB0byBpbXBsZW1lbnQgT2JqZWN0LmRlZmluZVByb3BlcnR5IGluIGJ1aWx0aW4g
SlMgbmV4dC4KKyAgICAgICAgVGhpcyBhbGxvd3MgdXMgdG8gbGV2ZXJhZ2Ugb2JqZWN0IGFsbG9j
YXRpb24gc2lua2luZy4gQW5kIGl0IGFsc28gZ2l2ZXMgdXMgYSBjaGFuY2UgdG8gdXNlCisgICAg
ICAgIGZhc3RlciA6OmdldCBhbmQgOjpoYXNQcm9wZXJ0eSBpbiBKUy4KKworICAgICAgICBPcmln
aW5hbGx5LCBJIGF0dGVtcHRlZCB0byBjcmVhdGUgb25lIGJ5dGVjb2RlLCBvcF9kZWZpbmVfcHJv
cGVydHkuIEhvd2V2ZXIsIGl0IHRha2VzIHRvbyBtdWNoCisgICAgICAgIGNoaWxkcmVuIGluIERG
RyBhbmQgdXNlcyBzbyBtdWNoIHJlZ2lzdGVycyBpbiBERkcuIFRoaXMgbGVhZHMgdHJpY2t5IHBy
b2dyYW0gaW4gMzJiaXQgcGxhdGZvcm1zLgorICAgICAgICBGdXJ0aGVybW9yZSwgaXQgZG9lcyBu
b3QgZml0IHRvIHRoZSBudW1iZXIgb2YgeDY0IGFyZ3VtZW50IHJlZ2lzdGVycy4gU28gaW5zdGVh
ZCwgd2UgaW50cm9kdWNlCisgICAgICAgIHR3byBieXRlY29kZXMuCisKKyAgICAgICAgQW5kIGZv
ciBvcF9kZWZpbmVfYWNjZXNzb3JfcHJvcGVydHksIHdlIHBlcmZvcm0gQ2VsbFVzZSBlZGdlIGZp
bHRlciB0byBnZXR0ZXIgYW5kIHNldHRlciBjaGlsZHJlbi4KKyAgICAgICAgVGhpcyBlZGdlIGZp
bHRlciBtYWtlcyB1cyBwb3NzaWJsZSB0byB1c2UgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYW5kIHJl
ZHVjZSB0aGUgbnVtYmVyIG9mIHVzZWQgcmVnaXN0ZXJzCisgICAgICAgIGluIGNvbXBhcmlzb24g
d2l0aCBKU1ZhbHVlT3BlcmFuZC4gVG8gbWFrZSBjaGlsZHJlbiBDZWxscyBldmVuIGlmIHdlIGRv
IG5vdCBzcGVjaWZ5IHNvbWUgYWNjZXNzb3JzIChmb3IKKyAgICAgICAgZXhhbXBsZSwgeyBnZXQ6
IGZ1bmMsIHNldDogbnVsbCB9IGNhc2UpLCB3ZSBmaWxsIHJlZ2lzdGVycyB3aXRoIHNwZWNpYWwg
dGhyb3dUeXBlRXJyb3JGdW5jdGlvbi4KKyAgICAgICAgVGhlIGF0dHJpYnV0ZXMgYml0c2V0IGtl
ZXAgaW5mb3JtYXRpb24gbGlrZSAiVGhpcyBwcm9wZXJ0eSBkZXNjcmlwdG9yIG9ubHkgaGFzIGdl
dHRlciBzbG90Ii4KKworICAgICAgICBJbiB0aGVzZSB0d28gYnl0ZWNvZGVzLCB3ZSB0YWtlIGF0
dHJpYnV0ZXMgKGNvbmZpZ3VyYWJsZSwgZW51bWVyYWJsZSwgd3JpdGFibGUsIGhhc0dldHRlciBl
dGMuKSBhcworICAgICAgICByZWdpc3RlciBpbnN0ZWFkIG9mIGVtYmVkZGluZyBjb25zdGFudCBp
bnQgdmFsdWUgYmVjYXVzZSB3ZSB3aWxsIHVzZSB0aGVzZSBieXRlY29kZXMgdG8gaW1wbGVtZW50
CisgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSBuZXh0LiBJbiBPYmplY3QuZGVmaW5lUHJv
cGVydHkgY2FzZSwgYW4gYXR0cmlidXRlcyBhcmUgbm90IHN0YXRpY2FsbHkgZGVmaW5lZAorICAg
ICAgICBhdCBieXRlY29kZSBjb21waWxpbmcgdGltZS4KKworICAgICAgICBSdW4gRVM2U2FtcGxl
QmVuY2gvQWlyIDIwIHRpbWVzLiBUaGUgcmVzdWx0IHNob3dzIH4yJSBwZXJmb3JtYW5jZSBpbXBy
b3ZlbWVudC4KKworICAgICAgICBCYXNlbGluZToKKyAgICAgICAgICAgIGZpcnN0SXRlcmF0aW9u
OiAgICAgODQuMDUgbXMgKy0gNC4zNyBtcworICAgICAgICAgICAgYXZlcmFnZVdvcnN0Q2FzZTog
ICA0MC41NCBtcyArLSAyLjgxIG1zCisgICAgICAgICAgICBzdGVhZHlTdGF0ZTogICAgICAgIDMz
MTcuNDkgbXMgKy0gNDguMjUgbXMKKyAgICAgICAgICAgIHN1bW1hcnk6ICAgICAgICAgICAgMjIz
LjUxIG1zICstIDUuMDcgbXMKKworICAgICAgICBQYXRjaGVkOgorICAgICAgICAgICAgZmlyc3RJ
dGVyYXRpb246ICAgICA4NC40NiBtcyArLSA0LjIyIG1zCisgICAgICAgICAgICBhdmVyYWdlV29y
c3RDYXNlOiAgIDQxLjQ4IG1zICstIDIuMzMgbXMKKyAgICAgICAgICAgIHN0ZWFkeVN0YXRlOiAg
ICAgICAgMzI1My40OCBtcyArLSAyOS4zMSBtcworICAgICAgICAgICAgc3VtbWFyeTogICAgICAg
ICAgICAyMjQuNDAgbXMgKy0gNC43MiBtcworCisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3Qu
anNvbjoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVVzZURlZi5oOgorICAgICAgICAoSlND
Ojpjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZURl
ZnNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoK
KyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUpOgorICAgICAgICAqIGJ5dGVj
b2RlL1NwZWNpYWxQb2ludGVyLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRNb3ZlTGlu
a1RpbWVDb25zdGFudCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2Fs
bERlZmluZVByb3BlcnR5KToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuaDoKKyAgICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAg
KEpTQzo6UHJvcGVydHlMaXN0Tm9kZTo6ZW1pdFB1dENvbnN0YW50UHJvcGVydHkpOgorICAgICAg
ICAoSlNDOjpCaXR3aXNlTm90Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Q2xh
c3NFeHByTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6T2JqZWN0UGF0dGVybk5v
ZGU6OmJpbmRWYWx1ZSk6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxp
bmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0
YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToK
KyAgICAgICAgKiBkZmcvREZHQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpj
YXBhYmlsaXR5TGV2ZWwpOgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyaXplLmg6CisgICAgICAg
IChKU0M6OkRGRzo6Y2xvYmJlcml6ZSk6CisgICAgICAgICogZGZnL0RGR0RvZXNHQy5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6ZG9lc0dDKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAg
KiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6Cisg
ICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlv
blByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdTYWZlVG9FeGVjdXRlLmg6
CisgICAgICAgIChKU0M6OkRGRzo6c2FmZVRvRXhlY3V0ZSk6CisgICAgICAgICogZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZURlZmluZURhdGFQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVEZWZpbmVBY2Nlc3NvclByb3BlcnR5KToKKyAgICAgICAgKiBkZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FsbE9w
ZXJhdGlvbik6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcv
REZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExDYXBhYmlsaXRpZXMuY3BwOgorICAgICAg
ICAoSlNDOjpGVEw6OmNhbkNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMu
Y3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTm9kZSk6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVEZWZpbmVEYXRh
UHJvcGVydHkpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxl
RGVmaW5lQWNjZXNzb3JQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvQjM6OmNvbXBpbGVQdXRCeVZhbFdpdGhUaGlzKTogRGVsZXRlZC4KKyAgICAgICAgKiBqaXQv
Q0NhbGxIZWxwZXJzLmNwcDoKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpzZXR1cEZvdXJT
dHViQXJnc0dQUik6IERlbGV0ZWQuCisgICAgICAgICogaml0L0NDYWxsSGVscGVycy5oOgorICAg
ICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OnNldHVwRm91clN0dWJBcmdzR1BSKToKKyAgICAgICAg
KEpTQzo6Q0NhbGxIZWxwZXJzOjpzZXR1cEZpdmVTdHViQXJnc0dQUik6CisgICAgICAgIChKU0M6
OkNDYWxsSGVscGVyczo6c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKToKKyAgICAgICAgKEpT
Qzo6Q0NhbGxIZWxwZXJzOjpzZXR1cFN0dWJBcmdzR1BSKToKKyAgICAgICAgKEpTQzo6Q0NhbGxI
ZWxwZXJzOjpwcmVwYXJlRm9yVGFpbENhbGxTbG93KTogRGVsZXRlZC4KKyAgICAgICAgKiBqaXQv
SklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAg
ICAgICAgKiBqaXQvSklULmg6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuaDoKKyAgICAg
ICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRf
b3BfZGVmaW5lX2RhdGFfcHJvcGVydHkpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZGVm
aW5lX2FjY2Vzc29yX3Byb3BlcnR5KToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJl
dGVyLmFzbToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6CisgICAgICAg
IChKU0M6OlNMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRo
cy5oOgorICAgICAgICAqIHJ1bnRpbWUvRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzLmg6IEFkZGVk
LgorICAgICAgICAoSlNDOjpEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXM6OkRlZmluZVByb3BlcnR5
QXR0cmlidXRlcyk6CisgICAgICAgIChKU0M6OkRlZmluZVByb3BlcnR5QXR0cmlidXRlczo6cmF3
UmVwcmVzZW50YXRpb24pOgorICAgICAgICAoSlNDOjpEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXM6
Omhhc1ZhbHVlKToKKyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzOjpzZXRW
YWx1ZSk6CisgICAgICAgIChKU0M6OkRlZmluZVByb3BlcnR5QXR0cmlidXRlczo6aGFzR2V0KToK
KyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzOjpzZXRHZXQpOgorICAgICAg
ICAoSlNDOjpEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXM6Omhhc1NldCk6CisgICAgICAgIChKU0M6
OkRlZmluZVByb3BlcnR5QXR0cmlidXRlczo6c2V0U2V0KToKKyAgICAgICAgKEpTQzo6RGVmaW5l
UHJvcGVydHlBdHRyaWJ1dGVzOjp3cml0YWJsZSk6CisgICAgICAgIChKU0M6OkRlZmluZVByb3Bl
cnR5QXR0cmlidXRlczo6Y29uZmlndXJhYmxlKToKKyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVy
dHlBdHRyaWJ1dGVzOjplbnVtZXJhYmxlKToKKyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVydHlB
dHRyaWJ1dGVzOjpzZXRXcml0YWJsZSk6CisgICAgICAgIChKU0M6OkRlZmluZVByb3BlcnR5QXR0
cmlidXRlczo6c2V0Q29uZmlndXJhYmxlKToKKyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVydHlB
dHRyaWJ1dGVzOjpzZXRFbnVtZXJhYmxlKToKKyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVydHlB
dHRyaWJ1dGVzOjpmaWxsV2l0aFRyaVN0YXRlKToKKyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVy
dHlBdHRyaWJ1dGVzOjpleHRyYWN0VHJpU3RhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9i
YWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAg
ICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50
aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp0aHJv
d1R5cGVFcnJvckZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmRlZmlu
ZVByb3BlcnR5RnVuY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0Q29u
c3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpPYmplY3RDb25zdHJ1Y3Rvcjo6YWRkRGVmaW5l
UHJvcGVydHkpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3Iu
aDoKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5oOgorICAgICAgICAoSlND
Ojp0b1Byb3BlcnR5RGVzY3JpcHRvcik6CisKIDIwMTYtMDktMjcgIEplciBOb2JsZSAgPGplci5u
b2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIGRlcHJlY2F0ZWQgRU5DUllQVEVEX01F
RElBIGltcGxlbWVudGF0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBmNzM0
ZjkxNjIzZmE0M2RkNTRhNmEwODY4OTJhOWFhZmI1MTgxNTM1Li43YzdjNDZiZGZmMTFiZjU0ZGRh
ODk3NTU1ZTNiZDAzNmFmMTliNzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
MjE2OCw2ICsyMTY4LDcgQEAKIAkJRkVEOTRGMkYxNzFFM0UyMzAwQkU3N0E0IC8qIFdhdGNoZG9n
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUQ5NEYy
QzE3MUUzRTIzMDBCRTc3QTQgLyogV2F0Y2hkb2cuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRUYwNDA1MTFBQUU2NjJEMDBCRDI4QjAgLyogQ29t
cGFyZUFuZFN3YXBUZXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEZFRjA0MDUwMUFBRTY2MkQwMEJEMjhCMCAvKiBDb21wYXJlQW5kU3dhcFRlc3Qu
Y3BwICovOyB9OwogCQlGRUZENkZDNjFENUU3OTkyMDA4RjJGMEIgLyogSlNTdHJpbmdJbmxpbmVz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUZENkZD
NTFENUU3OTcwMDA4RjJGMEIgLyogSlNTdHJpbmdJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDczREE0QTQ3NjRDNDVGRTg3MUIwNDg1
IC8qIERlZmluZVByb3BlcnR5QXR0cmlidXRlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMTY5OTQ4RURFNjhENDA1NEIwMUVGNzk3IC8qIERlZmluZVBy
b3BlcnR5QXR0cmlidXRlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJY
Q29udGFpbmVySXRlbVByb3h5IHNlY3Rpb24gKi8KQEAgLTQ0OTgsNiArNDQ5OSw3IEBACiAJCUZF
RjA0MDUwMUFBRTY2MkQwMEJEMjhCMCAvKiBDb21wYXJlQW5kU3dhcFRlc3QuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQ29tcGFyZUFuZFN3YXBUZXN0LmNwcDsgcGF0
aCA9IEFQSS90ZXN0cy9Db21wYXJlQW5kU3dhcFRlc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlGRUYwNDA1MjFBQUVDNEVEMDBCRDI4QjAgLyogQ29tcGFyZUFuZFN3YXBUZXN0
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IENvbXBhcmVBbmRTd2FwVGVzdC5o
OyBwYXRoID0gQVBJL3Rlc3RzL0NvbXBhcmVBbmRTd2FwVGVzdC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlGRUZENkZDNTFENUU3OTcwMDA4RjJGMEIgLyogSlNTdHJpbmdJbmxpbmVz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU3RyaW5nSW5saW5lcy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNjk5NDhFREU2OEQ0MDU0QjAxRUY3OTcgLyog
RGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IERlZmluZVByb3BlcnR5QXR0cmlidXRlcy5oOyBwYXRoID0gRGVmaW5lUHJvcGVydHlBdHRy
aWJ1dGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAvKiBFbmQgUEJYRmlsZVJlZmVy
ZW5jZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlIHNlY3Rp
b24gKi8KQEAgLTYyNDEsNiArNjI0Myw3IEBACiAJCQkJNzA5RkI4NjYxQUUzMzVDNjAwMzlEMDY5
IC8qIFdlYWtTZXRQcm90b3R5cGUuaCAqLywKIAkJCQlBN0RDQjc3OTEyRTNEOTA1MDA5MTE5NDAg
LyogV3JpdGVCYXJyaWVyLmggKi8sCiAJCQkJQzJCNkQ3NTIxOEEzMzc5MzAwNEE5MzAxIC8qIFdy
aXRlQmFycmllcklubGluZXMuaCAqLywKKwkJCQkxNjk5NDhFREU2OEQ0MDU0QjAxRUY3OTcgLyog
RGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IHJ1bnRpbWU7
CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtODM3Niw2ICs4Mzc5LDcgQEAKIAkJCQk4
NjcwNEI0MzEyREI4QTgxMDBBOUZFN0IgLyogWWFyclN5bnRheENoZWNrZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE3OUQzRUQ5QzUwNjRERDBBODQ2NkEzQSAvKiBNb2R1bGVTY29wZURhdGEuaCBp
biBIZWFkZXJzICovLAogCQkJCUQ5NzIyNzUyREM1NDQ1OUI5MTI1QjUzOSAvKiBKU01vZHVsZUxv
YWRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDczREE0QTQ3NjRDNDVGRTg3MUIwNDg1IC8qIERl
ZmluZVByb3BlcnR5QXR0cmlidXRlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25s
eUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24gYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KaW5kZXggZGM1OTk4MDU2OTFj
ZGE1N2I1ZDM2MTE1OTlkZDVmMjhkNzEwMmRiZS4uNTc2ZGU0MDA2MDRkMTAxNDc1MWNjNjNiZWFj
ZWM3N2E1NWZkNGZmNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlTGlzdC5qc29uCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUxpc3QuanNvbgpAQCAtODEsNiArODEsOCBAQAogICAgICAgICAgICAgeyAibmFtZSIg
OiAib3BfcHV0X2dldHRlcl9zZXR0ZXJfYnlfaWQiLCAibGVuZ3RoIiA6IDYgfSwKICAgICAgICAg
ICAgIHsgIm5hbWUiIDogIm9wX3B1dF9nZXR0ZXJfYnlfdmFsIiwgImxlbmd0aCIgOiA1IH0sCiAg
ICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9wdXRfc2V0dGVyX2J5X3ZhbCIsICJsZW5ndGgiIDog
NSB9LAorICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfZGVmaW5lX2RhdGFfcHJvcGVydHkiLCAi
bGVuZ3RoIiA6IDUgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2RlZmluZV9hY2Nlc3Nv
cl9wcm9wZXJ0eSIsICJsZW5ndGgiIDogNiB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3Bf
am1wIiwgImxlbmd0aCIgOiAyIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9qdHJ1ZSIs
ICJsZW5ndGgiIDogMyB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfamZhbHNlIiwgImxl
bmd0aCIgOiAzIH0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVVc2VEZWYuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZVVzZURlZi5oCmluZGV4IGRhYmNlNGVkZjAzMjY0OGMwODk2ODk5ODJhODgxN2VjNjAwYTgxN2Uu
LjQ1YTllMDljYmQ4MmVmNjg5ZDNiMzRmOGVlNTBlMTFlYjk1YTM3NjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCkBAIC0xNDQsNiArMTQ0
LDIzIEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChCbG9jayogY29kZUJsb2Nr
LCBPcGNvZGVJRCBvcGNvZGVJRCwgSW5zdHJ1Y3RpCiAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2Nr
LCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzRdLnUub3BlcmFuZCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CisgICAgY2FzZSBvcF9kZWZpbmVfZGF0YV9wcm9wZXJ0eTogewor
ICAgICAgICBBU1NFUlQob3Bjb2RlTGVuZ3Roc1tvcGNvZGVJRF0gPiA0KTsKKyAgICAgICAgZnVu
Y3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25bMV0udS5v
cGVyYW5kKTsKKyAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJ
RCwgaW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsKKyAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ss
IGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKTsKKyAgICAg
ICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25b
NF0udS5vcGVyYW5kKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBjYXNlIG9wX2RlZmlu
ZV9hY2Nlc3Nvcl9wcm9wZXJ0eTogeworICAgICAgICBBU1NFUlQob3Bjb2RlTGVuZ3Roc1tvcGNv
ZGVJRF0gPiA1KTsKKyAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNv
ZGVJRCwgaW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKKyAgICAgICAgZnVuY3Rvcihjb2RlQmxv
Y2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsKKyAg
ICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rp
b25bM10udS5vcGVyYW5kKTsKKyAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9u
LCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kKTsKKyAgICAgICAgZnVuY3Rvcihj
b2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25bNV0udS5vcGVyYW5k
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICAgICBjYXNlIG9wX2dldF9wcm9wZXJ0eV9lbnVt
ZXJhdG9yOgogICAgIGNhc2Ugb3BfZ2V0X2VudW1lcmFibGVfbGVuZ3RoOgogICAgIGNhc2Ugb3Bf
bmV3X2Z1bmNfZXhwOgpAQCAtMzMyLDYgKzM0OSw4IEBAIHZvaWQgY29tcHV0ZURlZnNGb3JCeXRl
Y29kZU9mZnNldChCbG9jayogY29kZUJsb2NrLCBPcGNvZGVJRCBvcGNvZGVJRCwgSW5zdHJ1Y3Rp
CiAgICAgY2FzZSBvcF9wdXRfYnlfdmFsOgogICAgIGNhc2Ugb3BfcHV0X2J5X3ZhbF9kaXJlY3Q6
CiAgICAgY2FzZSBvcF9wdXRfYnlfaW5kZXg6CisgICAgY2FzZSBvcF9kZWZpbmVfZGF0YV9wcm9w
ZXJ0eToKKyAgICBjYXNlIG9wX2RlZmluZV9hY2Nlc3Nvcl9wcm9wZXJ0eToKICAgICBjYXNlIG9w
X3Byb2ZpbGVfdHlwZToKICAgICBjYXNlIG9wX3Byb2ZpbGVfY29udHJvbF9mbG93OgogICAgIGNh
c2Ugb3BfcHV0X3RvX2FyZ3VtZW50czoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5jcHAKaW5kZXggN2M5YjVjMmJhNmQ2ZDQyN2QwNzk3YjJhZjQ4MThkYjkzZjg5
OTE2OS4uN2Y3NzRhOTE2YmIxNDIwODExNDg0ZDA1ZjU0ZDJhMjk0YWY1YzY0NSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTEyMzMsNiArMTIz
MywyNSBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKAogICAgICAgICAgICAgb3V0LnBy
aW50ZigiJXMsICVzLCAlZCwgJXMiLCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgcmVnaXN0ZXJO
YW1lKHIxKS5kYXRhKCksIG4wLCByZWdpc3Rlck5hbWUocjIpLmRhdGEoKSk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQorICAgICAgICBjYXNlIG9wX2RlZmluZV9kYXRhX3Byb3BlcnR5
OiB7CisgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAg
IGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgaW50IHIyID0gKCsraXQp
LT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBpbnQgcjMgPSAoKytpdCktPnUub3BlcmFuZDsKKyAg
ICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgImRl
ZmluZV9kYXRhX3Byb3BlcnR5Iik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsICVz
LCAlcyIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSwg
cmVnaXN0ZXJOYW1lKHIyKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMykuZGF0YSgpKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2Ugb3BfZGVmaW5lX2FjY2Vzc29y
X3Byb3BlcnR5OiB7CisgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAg
ICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgaW50IHIy
ID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBpbnQgcjMgPSAoKytpdCktPnUub3Bl
cmFuZDsKKyAgICAgICAgICAgIGludCByNCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAg
ICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAiZGVmaW5lX2Fj
Y2Vzc29yX3Byb3BlcnR5Iik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsICVzLCAl
cywgJXMiLCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCks
IHJlZ2lzdGVyTmFtZShyMikuZGF0YSgpLCByZWdpc3Rlck5hbWUocjMpLmRhdGEoKSwgcmVnaXN0
ZXJOYW1lKHI0KS5kYXRhKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAg
ICAgY2FzZSBvcF9kZWxfYnlfaWQ6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5v
cGVyYW5kOwogICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY2lhbFBvaW50ZXIuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjaWFsUG9pbnRlci5oCmluZGV4IDY0ZmIy
M2ZjZjI3ZDQxMjUwNDgwMjE5ZThjOGM0MWI3YzQxYTdlZjUuLjkwY2IzYTk5MjZkNjJlNjA0YjE4
YzNiM2RiZDU1MjJiNDUyYWVkZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9TcGVjaWFsUG9pbnRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9TcGVjaWFsUG9pbnRlci5oCkBAIC00Miw3ICs0Miw3IEBAIGVudW0gUG9pbnRlciB7CiB9
IC8vIG5hbWVzcGFjZSBTcGVjaWFsCiAKIGVudW0gY2xhc3MgTGlua1RpbWVDb25zdGFudCB7Ci0g
ICAgRGVmaW5lUHJvcGVydHlGdW5jdGlvbiwKKyAgICBUaHJvd1R5cGVFcnJvckZ1bmN0aW9uLAog
fTsKIGNvbnN0IHVuc2lnbmVkIExpbmtUaW1lQ29uc3RhbnRDb3VudCA9IDE7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5jcHAKaW5kZXggY2M3MTcyM2VmM2MwZjVkNGJiM2NjZGVjYjhiYTk3NjI3MjNkMzJmZS4uYjBj
M2NjZDVhY2IyNTU2MTg4ZDkyODIyMjVhNTc0YjFmMDQ3MmMyMyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAK
QEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJCdWlsdGluRXhlY3V0YWJsZXMuaCIKICNpbmNs
dWRlICJCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oIgogI2luY2x1ZGUgIkJ5dGVjb2RlTGl2
ZW5lc3NBbmFseXNpcy5oIgorI2luY2x1ZGUgIkRlZmluZVByb3BlcnR5QXR0cmlidXRlcy5oIgog
I2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1
ZGUgIkpTR2VuZXJhdG9yRnVuY3Rpb24uaCIKQEAgLTE1NDMsNiArMTU0NCw5IEBAIFJlZ2lzdGVy
SUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TW92ZUxpbmtUaW1lQ29uc3RhbnQoUmVnaXN0ZXJJ
RCogZHN0LCBMaW5rVGltCiAgICAgICAgIG1fbGlua1RpbWVDb25zdGFudFJlZ2lzdGVyc1tjb25z
dGFudEluZGV4XSA9ICZtX2NvbnN0YW50UG9vbFJlZ2lzdGVyc1tpbmRleF07CiAgICAgfQogCisg
ICAgaWYgKCFkc3QpCisgICAgICAgIHJldHVybiBtX2xpbmtUaW1lQ29uc3RhbnRSZWdpc3RlcnNb
Y29uc3RhbnRJbmRleF07CisKICAgICBlbWl0T3Bjb2RlKG9wX21vdik7CiAgICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1f
bGlua1RpbWVDb25zdGFudFJlZ2lzdGVyc1tjb25zdGFudEluZGV4XS0+aW5kZXgoKSk7CkBAIC0z
MjY4LDM4ICszMjcyLDU5IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRMb2dTaGFkb3dD
aGlja2VuVGFpbElmTmVjZXNzYXJ5KCkKIH0KIAogdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dENhbGxEZWZpbmVQcm9wZXJ0eShSZWdpc3RlcklEKiBuZXdPYmosIFJlZ2lzdGVySUQqIHByb3Bl
cnR5TmFtZVJlZ2lzdGVyLAotICAgIFJlZ2lzdGVySUQqIHZhbHVlUmVnaXN0ZXIsIFJlZ2lzdGVy
SUQqIGdldHRlclJlZ2lzdGVyLCBSZWdpc3RlcklEKiBzZXR0ZXJSZWdpc3RlciwgdW5zaWduZWQg
b3B0aW9ucywgY29uc3QgSlNUZXh0UG9zaXRpb24mIHBvc2l0aW9uKQorICAgIFJlZ2lzdGVySUQq
IHZhbHVlUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIGdldHRlclJlZ2lzdGVyLCBSZWdpc3RlcklEKiBz
ZXR0ZXJSZWdpc3RlciwgdW5zaWduZWQgb3B0aW9ucykKIHsKLSAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gZGVzY3JpcHRvclJlZ2lzdGVyID0gZW1pdE5ld09iamVjdChuZXdUZW1wb3JhcnkoKSk7Ci0K
LSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdHJ1ZVJlZ2lzdGVyID0gZW1pdExvYWQobmV3VGVtcG9y
YXJ5KCksIHRydWUpOworICAgIERlZmluZVByb3BlcnR5QXR0cmlidXRlcyBhdHRyaWJ1dGVzOwog
ICAgIGlmIChvcHRpb25zICYgUHJvcGVydHlDb25maWd1cmFibGUpCi0gICAgICAgIGVtaXREaXJl
Y3RQdXRCeUlkKGRlc2NyaXB0b3JSZWdpc3Rlci5nZXQoKSwgcHJvcGVydHlOYW1lcygpLmNvbmZp
Z3VyYWJsZSwgdHJ1ZVJlZ2lzdGVyLmdldCgpLCBQcm9wZXJ0eU5vZGU6OlVua25vd24pOworICAg
ICAgICBhdHRyaWJ1dGVzLnNldENvbmZpZ3VyYWJsZSh0cnVlKTsKKwogICAgIGlmIChvcHRpb25z
ICYgUHJvcGVydHlXcml0YWJsZSkKLSAgICAgICAgZW1pdERpcmVjdFB1dEJ5SWQoZGVzY3JpcHRv
clJlZ2lzdGVyLmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkud3JpdGFibGUsIHRydWVSZWdpc3Rlci5n
ZXQoKSwgUHJvcGVydHlOb2RlOjpVbmtub3duKTsKLSAgICBlbHNlIGlmICh2YWx1ZVJlZ2lzdGVy
KSB7Ci0gICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBmYWxzZVJlZ2lzdGVyID0gZW1pdExvYWQo
bmV3VGVtcG9yYXJ5KCksIGZhbHNlKTsKLSAgICAgICAgZW1pdERpcmVjdFB1dEJ5SWQoZGVzY3Jp
cHRvclJlZ2lzdGVyLmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkud3JpdGFibGUsIGZhbHNlUmVnaXN0
ZXIuZ2V0KCksIFByb3BlcnR5Tm9kZTo6VW5rbm93bik7Ci0gICAgfQorICAgICAgICBhdHRyaWJ1
dGVzLnNldFdyaXRhYmxlKHRydWUpOworICAgIGVsc2UgaWYgKHZhbHVlUmVnaXN0ZXIpCisgICAg
ICAgIGF0dHJpYnV0ZXMuc2V0V3JpdGFibGUoZmFsc2UpOworCiAgICAgaWYgKG9wdGlvbnMgJiBQ
cm9wZXJ0eUVudW1lcmFibGUpCi0gICAgICAgIGVtaXREaXJlY3RQdXRCeUlkKGRlc2NyaXB0b3JS
ZWdpc3Rlci5nZXQoKSwgcHJvcGVydHlOYW1lcygpLmVudW1lcmFibGUsIHRydWVSZWdpc3Rlci5n
ZXQoKSwgUHJvcGVydHlOb2RlOjpVbmtub3duKTsKKyAgICAgICAgYXR0cmlidXRlcy5zZXRFbnVt
ZXJhYmxlKHRydWUpOwogCiAgICAgaWYgKHZhbHVlUmVnaXN0ZXIpCi0gICAgICAgIGVtaXREaXJl
Y3RQdXRCeUlkKGRlc2NyaXB0b3JSZWdpc3Rlci5nZXQoKSwgcHJvcGVydHlOYW1lcygpLnZhbHVl
LCB2YWx1ZVJlZ2lzdGVyLCBQcm9wZXJ0eU5vZGU6OlVua25vd24pOworICAgICAgICBhdHRyaWJ1
dGVzLnNldFZhbHVlKCk7CiAgICAgaWYgKGdldHRlclJlZ2lzdGVyKQotICAgICAgICBlbWl0RGly
ZWN0UHV0QnlJZChkZXNjcmlwdG9yUmVnaXN0ZXIuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS5nZXQs
IGdldHRlclJlZ2lzdGVyLCBQcm9wZXJ0eU5vZGU6OlVua25vd24pOworICAgICAgICBhdHRyaWJ1
dGVzLnNldEdldCgpOwogICAgIGlmIChzZXR0ZXJSZWdpc3RlcikKLSAgICAgICAgZW1pdERpcmVj
dFB1dEJ5SWQoZGVzY3JpcHRvclJlZ2lzdGVyLmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkuc2V0LCBz
ZXR0ZXJSZWdpc3RlciwgUHJvcGVydHlOb2RlOjpVbmtub3duKTsKKyAgICAgICAgYXR0cmlidXRl
cy5zZXRTZXQoKTsKIAotICAgIFJlZlB0cjxSZWdpc3RlcklEPiBkZWZpbmVQcm9wZXJ0eVJlZ2lz
dGVyID0gZW1pdE1vdmVMaW5rVGltZUNvbnN0YW50KG5ld1RlbXBvcmFyeSgpLCBMaW5rVGltZUNv
bnN0YW50OjpEZWZpbmVQcm9wZXJ0eUZ1bmN0aW9uKTsKKyAgICBBU1NFUlQoIXZhbHVlUmVnaXN0
ZXIgfHwgKCFnZXR0ZXJSZWdpc3RlciAmJiAhc2V0dGVyUmVnaXN0ZXIpKTsKIAotICAgIENhbGxB
cmd1bWVudHMgY2FsbEFyZ3VtZW50cygqdGhpcywgbnVsbHB0ciwgMyk7Ci0gICAgZW1pdExvYWQo
Y2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwganNVbmRlZmluZWQoKSk7Ci0gICAgZW1pdE1v
dmUoY2FsbEFyZ3VtZW50cy5hcmd1bWVudFJlZ2lzdGVyKDApLCBuZXdPYmopOwotICAgIGVtaXRN
b3ZlKGNhbGxBcmd1bWVudHMuYXJndW1lbnRSZWdpc3RlcigxKSwgcHJvcGVydHlOYW1lUmVnaXN0
ZXIpOwotICAgIGVtaXRNb3ZlKGNhbGxBcmd1bWVudHMuYXJndW1lbnRSZWdpc3RlcigyKSwgZGVz
Y3JpcHRvclJlZ2lzdGVyLmdldCgpKTsKKyAgICBpZiAoYXR0cmlidXRlcy5oYXNHZXQoKSB8fCBh
dHRyaWJ1dGVzLmhhc1NldCgpKSB7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0aHJvd1R5
cGVFcnJvckZ1bmN0aW9uOworICAgICAgICBpZiAoIWF0dHJpYnV0ZXMuaGFzR2V0KCkgfHwgIWF0
dHJpYnV0ZXMuaGFzU2V0KCkpCisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvckZ1bmN0aW9uID0g
ZW1pdE1vdmVMaW5rVGltZUNvbnN0YW50KG51bGxwdHIsIExpbmtUaW1lQ29uc3RhbnQ6OlRocm93
VHlwZUVycm9yRnVuY3Rpb24pOwogCi0gICAgZW1pdENhbGwobmV3VGVtcG9yYXJ5KCksIGRlZmlu
ZVByb3BlcnR5UmVnaXN0ZXIuZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50
cywgcG9zaXRpb24sIHBvc2l0aW9uLCBwb3NpdGlvbik7CisgICAgICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiBnZXR0ZXI7CisgICAgICAgIGlmIChhdHRyaWJ1dGVzLmhhc0dldCgpKQorICAgICAgICAg
ICAgZ2V0dGVyID0gZ2V0dGVyUmVnaXN0ZXI7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGdl
dHRlciA9IHRocm93VHlwZUVycm9yRnVuY3Rpb247CisKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IHNldHRlcjsKKyAgICAgICAgaWYgKGF0dHJpYnV0ZXMuaGFzU2V0KCkpCisgICAgICAgICAg
ICBzZXR0ZXIgPSBzZXR0ZXJSZWdpc3RlcjsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc2V0
dGVyID0gdGhyb3dUeXBlRXJyb3JGdW5jdGlvbjsKKworICAgICAgICBlbWl0T3Bjb2RlKG9wX2Rl
ZmluZV9hY2Nlc3Nvcl9wcm9wZXJ0eSk7CisgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChu
ZXdPYmotPmluZGV4KCkpOworICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQocHJvcGVydHlO
YW1lUmVnaXN0ZXItPmluZGV4KCkpOworICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZ2V0
dGVyLT5pbmRleCgpKTsKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHNldHRlci0+aW5k
ZXgoKSk7CisgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChlbWl0TG9hZChudWxscHRyLCBq
c051bWJlcihhdHRyaWJ1dGVzLnJhd1JlcHJlc2VudGF0aW9uKCkpKS0+aW5kZXgoKSk7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgZW1pdE9wY29kZShvcF9kZWZpbmVfZGF0YV9wcm9wZXJ0eSk7Cisg
ICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChuZXdPYmotPmluZGV4KCkpOworICAgICAgICBp
bnN0cnVjdGlvbnMoKS5hcHBlbmQocHJvcGVydHlOYW1lUmVnaXN0ZXItPmluZGV4KCkpOworICAg
ICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQodmFsdWVSZWdpc3Rlci0+aW5kZXgoKSk7CisgICAg
ICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChlbWl0TG9hZChudWxscHRyLCBqc051bWJlcihhdHRy
aWJ1dGVzLnJhd1JlcHJlc2VudGF0aW9uKCkpKS0+aW5kZXgoKSk7CisgICAgfQogfQogCiBSZWdp
c3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJldHVybihSZWdpc3RlcklEKiBzcmMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmgKaW5kZXggZDMyNjRjNGEwODc3YTM2MmU5MDRlMWY4MzZiYmQ0NTYwNDI5ZTBmZS4u
OWU2Y2RiYTM2MjNlOTI2MjZjYzhmZDM5N2YwOWU3MTQzM2ZiMWNhZSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApA
QCAtNTg4LDcgKzU4OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgUHJvcGVydHlF
bnVtZXJhYmxlICAgPSAxIDw8IDIsCiAgICAgICAgIH07CiAgICAgICAgIHZvaWQgZW1pdENhbGxE
ZWZpbmVQcm9wZXJ0eShSZWdpc3RlcklEKiBuZXdPYmosIFJlZ2lzdGVySUQqIHByb3BlcnR5TmFt
ZVJlZ2lzdGVyLAotICAgICAgICAgICAgUmVnaXN0ZXJJRCogdmFsdWVSZWdpc3RlciwgUmVnaXN0
ZXJJRCogZ2V0dGVyUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIHNldHRlclJlZ2lzdGVyLCB1bnNpZ25l
ZCBvcHRpb25zLCBjb25zdCBKU1RleHRQb3NpdGlvbiYpOworICAgICAgICAgICAgUmVnaXN0ZXJJ
RCogdmFsdWVSZWdpc3RlciwgUmVnaXN0ZXJJRCogZ2V0dGVyUmVnaXN0ZXIsIFJlZ2lzdGVySUQq
IHNldHRlclJlZ2lzdGVyLCB1bnNpZ25lZCBvcHRpb25zKTsKIAogICAgICAgICB2b2lkIGVtaXRF
bnVtZXJhdGlvbihUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogZW51bWVyYXRpb25Ob2RlLCBFeHBy
ZXNzaW9uTm9kZSogc3ViamVjdE5vZGUsIGNvbnN0IHN0ZDo6ZnVuY3Rpb248dm9pZChCeXRlY29k
ZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqKT4mIGNhbGxCYWNrLCBWYXJpYWJsZUVudmlyb25tZW50
Tm9kZSogPSBudWxscHRyLCBSZWdpc3RlcklEKiBmb3JMb29wU3ltYm9sVGFibGUgPSBudWxscHRy
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rl
c0NvZGVnZW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0Nv
ZGVnZW4uY3BwCmluZGV4IGMyNjhhMjYwOGQzOGQ2ZGVhN2FjYjgxNzcwN2U1OWYxYzUyNWYyODIu
LjJiNTkwYzg3YzBmMTZiMDBmNjJjMDNmZjg2NjFiNTkzMGZkNjBlOWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKQEAgLTU5
MCwxMiArNTkwLDEyIEBAIHZvaWQgUHJvcGVydHlMaXN0Tm9kZTo6ZW1pdFB1dENvbnN0YW50UHJv
cGVydHkoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnCiAgICAgICAgIEFTU0VSVChu
b2RlLm5lZWRzU3VwZXJCaW5kaW5nKCkpOwogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJv
cGVydHlOYW1lUmVnaXN0ZXI7CiAgICAgICAgIGlmIChub2RlLm5hbWUoKSkKLSAgICAgICAgICAg
IHByb3BlcnR5TmFtZVJlZ2lzdGVyID0gZ2VuZXJhdG9yLmVtaXRMb2FkKGdlbmVyYXRvci5uZXdU
ZW1wb3JhcnkoKSwgKm5vZGUubmFtZSgpKTsKKyAgICAgICAgICAgIHByb3BlcnR5TmFtZVJlZ2lz
dGVyID0gZ2VuZXJhdG9yLmVtaXRMb2FkKG51bGxwdHIsICpub2RlLm5hbWUoKSk7CiAgICAgICAg
IGVsc2UKICAgICAgICAgICAgIHByb3BlcnR5TmFtZVJlZ2lzdGVyID0gZ2VuZXJhdG9yLmVtaXRO
b2RlKG5vZGUubV9leHByZXNzaW9uKTsKIAogICAgICAgICBnZW5lcmF0b3IuZW1pdFNldEZ1bmN0
aW9uTmFtZUlmTmVlZGVkKG5vZGUubV9hc3NpZ24sIHZhbHVlLmdldCgpLCBwcm9wZXJ0eU5hbWVS
ZWdpc3Rlci5nZXQoKSk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbERlZmluZVByb3BlcnR5
KG5ld09iaiwgcHJvcGVydHlOYW1lUmVnaXN0ZXIuZ2V0KCksIHZhbHVlLmdldCgpLCBudWxscHRy
LCBudWxscHRyLCBCeXRlY29kZUdlbmVyYXRvcjo6UHJvcGVydHlDb25maWd1cmFibGUgfCBCeXRl
Y29kZUdlbmVyYXRvcjo6UHJvcGVydHlXcml0YWJsZSwgbV9wb3NpdGlvbik7CisgICAgICAgIGdl
bmVyYXRvci5lbWl0Q2FsbERlZmluZVByb3BlcnR5KG5ld09iaiwgcHJvcGVydHlOYW1lUmVnaXN0
ZXIuZ2V0KCksIHZhbHVlLmdldCgpLCBudWxscHRyLCBudWxscHRyLCBCeXRlY29kZUdlbmVyYXRv
cjo6UHJvcGVydHlDb25maWd1cmFibGUgfCBCeXRlY29kZUdlbmVyYXRvcjo6UHJvcGVydHlXcml0
YWJsZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKGNvbnN0IGF1dG8qIGlkZW50
aWZpZXIgPSBub2RlLm5hbWUoKSkgewpAQCAtNjA1LDcgKzYwNSw3IEBAIHZvaWQgUHJvcGVydHlM
aXN0Tm9kZTo6ZW1pdFB1dENvbnN0YW50UHJvcGVydHkoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVy
YXRvciwgUmVnCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gaW5kZXggPSBnZW5lcmF0b3IuZW1pdExvYWQoZ2VuZXJhdG9yLm5ld1Rl
bXBvcmFyeSgpLCBqc051bWJlcihvcHRpb25hbEluZGV4LnZhbHVlKCkpKTsKKyAgICAgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IGluZGV4ID0gZ2VuZXJhdG9yLmVtaXRMb2FkKG51bGxwdHIsIGpzTnVt
YmVyKG9wdGlvbmFsSW5kZXgudmFsdWUoKSkpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdERpcmVj
dFB1dEJ5VmFsKG5ld09iaiwgaW5kZXguZ2V0KCksIHZhbHVlLmdldCgpKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KQEAgLTE2MjMsNyArMTYyMyw3IEBAIFJlZ2lzdGVySUQqIFVuYXJ5UGx1c05v
ZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklE
CiAgCiBSZWdpc3RlcklEKiBCaXR3aXNlTm90Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKLSAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gc3JjMiA9IGdlbmVyYXRvci5lbWl0TG9hZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCks
IGpzTnVtYmVyKC0xKSk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNyYzIgPSBnZW5lcmF0b3Iu
ZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoLTEpKTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
c3JjMSA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX2V4cHIpOwogICAgIHJldHVybiBnZW5lcmF0b3Iu
ZW1pdEJpbmFyeU9wKG9wX2JpdHhvciwgZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0LCBz
cmMxLmdldCgpKSwgc3JjMS5nZXQoKSwgc3JjMi5nZXQoKSwgT3BlcmFuZFR5cGVzKG1fZXhwci0+
cmVzdWx0RGVzY3JpcHRvcigpLCBSZXN1bHRUeXBlOjpudW1iZXJUeXBlSXNJbnQzMigpKSk7CiB9
CkBAIC0zNjAzLDEyICszNjAzLDEyIEBAIFJlZ2lzdGVySUQqIENsYXNzRXhwck5vZGU6OmVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklECiAgICAgICAg
IGVtaXRQdXRIb21lT2JqZWN0KGdlbmVyYXRvciwgY29uc3RydWN0b3IuZ2V0KCksIHByb3RvdHlw
ZS5nZXQoKSk7CiAgICAgfQogCi0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGNvbnN0cnVjdG9yTmFt
ZVJlZ2lzdGVyID0gZ2VuZXJhdG9yLmVtaXRMb2FkKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwg
cHJvcGVydHlOYW1lcy5jb25zdHJ1Y3Rvcik7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGNvbnN0
cnVjdG9yTmFtZVJlZ2lzdGVyID0gZ2VuZXJhdG9yLmVtaXRMb2FkKG51bGxwdHIsIHByb3BlcnR5
TmFtZXMuY29uc3RydWN0b3IpOwogICAgIGdlbmVyYXRvci5lbWl0Q2FsbERlZmluZVByb3BlcnR5
KHByb3RvdHlwZS5nZXQoKSwgY29uc3RydWN0b3JOYW1lUmVnaXN0ZXIuZ2V0KCksIGNvbnN0cnVj
dG9yLmdldCgpLCBudWxscHRyLCBudWxscHRyLAotICAgICAgICBCeXRlY29kZUdlbmVyYXRvcjo6
UHJvcGVydHlDb25maWd1cmFibGUgfCBCeXRlY29kZUdlbmVyYXRvcjo6UHJvcGVydHlXcml0YWJs
ZSwgbV9wb3NpdGlvbik7CisgICAgICAgIEJ5dGVjb2RlR2VuZXJhdG9yOjpQcm9wZXJ0eUNvbmZp
Z3VyYWJsZSB8IEJ5dGVjb2RlR2VuZXJhdG9yOjpQcm9wZXJ0eVdyaXRhYmxlKTsKIAotICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiBwcm90b3R5cGVOYW1lUmVnaXN0ZXIgPSBnZW5lcmF0b3IuZW1pdExv
YWQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBwcm9wZXJ0eU5hbWVzLnByb3RvdHlwZSk7Ci0g
ICAgZ2VuZXJhdG9yLmVtaXRDYWxsRGVmaW5lUHJvcGVydHkoY29uc3RydWN0b3IuZ2V0KCksIHBy
b3RvdHlwZU5hbWVSZWdpc3Rlci5nZXQoKSwgcHJvdG90eXBlLmdldCgpLCBudWxscHRyLCBudWxs
cHRyLCAwLCBtX3Bvc2l0aW9uKTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJvdG90eXBlTmFt
ZVJlZ2lzdGVyID0gZ2VuZXJhdG9yLmVtaXRMb2FkKG51bGxwdHIsIHByb3BlcnR5TmFtZXMucHJv
dG90eXBlKTsKKyAgICBnZW5lcmF0b3IuZW1pdENhbGxEZWZpbmVQcm9wZXJ0eShjb25zdHJ1Y3Rv
ci5nZXQoKSwgcHJvdG90eXBlTmFtZVJlZ2lzdGVyLmdldCgpLCBwcm90b3R5cGUuZ2V0KCksIG51
bGxwdHIsIG51bGxwdHIsIDApOwogCiAgICAgaWYgKG1fc3RhdGljTWV0aG9kcykKICAgICAgICAg
Z2VuZXJhdG9yLmVtaXROb2RlKGNvbnN0cnVjdG9yLmdldCgpLCBtX3N0YXRpY01ldGhvZHMpOwpA
QCAtMzg3MCw3ICszODcwLDcgQEAgdm9pZCBPYmplY3RQYXR0ZXJuTm9kZTo6YmluZFZhbHVlKEJ5
dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIHJocykKICAgICAgICAgICAg
IGlmICghb3B0aW9uYWxJbmRleCkKICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEdldEJ5
SWQodGVtcC5nZXQoKSwgcmhzLCB0YXJnZXQucHJvcGVydHlOYW1lKTsKICAgICAgICAgICAgIGVs
c2UgewotICAgICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBpbmRleCA9IGdlbmVyYXRv
ci5lbWl0TG9hZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIGpzTnVtYmVyKG9wdGlvbmFsSW5k
ZXgudmFsdWUoKSkpOworICAgICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBpbmRleCA9
IGdlbmVyYXRvci5lbWl0TG9hZChudWxscHRyLCBqc051bWJlcihvcHRpb25hbEluZGV4LnZhbHVl
KCkpKTsKICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEdldEJ5VmFsKHRlbXAuZ2V0KCks
IHJocywgaW5kZXguZ2V0KCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVy
SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJl
dGVySW5saW5lcy5oCmluZGV4IDhjNzQxMjY2MjY1YzgxNDgwNmYxZjBmYjcxNDgzN2UyM2M1MGRj
OGQuLmU5NmIxMDVjYWYxYTJlMTA0MWM5OWJmNjFhOGI4YjY3MzRkYWMxZDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJ
bmxpbmVzLmgKQEAgLTI2NTcsNiArMjY1NywxMSBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8
QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQog
ICAgICAgICBjbG9iYmVyV29ybGQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBjbG9iYmVyTGltaXQp
OwogICAgICAgICBicmVhazsKICAgICB9CisKKyAgICBjYXNlIERlZmluZURhdGFQcm9wZXJ0eToK
KyAgICBjYXNlIERlZmluZUFjY2Vzc29yUHJvcGVydHk6CisgICAgICAgIGNsb2JiZXJXb3JsZChu
b2RlLT5vcmlnaW4uc2VtYW50aWMsIGNsb2JiZXJMaW1pdCk7CisgICAgICAgIGJyZWFrOwogICAg
ICAgICAKICAgICBjYXNlIEluOiB7CiAgICAgICAgIC8vIEZJWE1FOiBXZSBjYW4gZGV0ZXJtaW5l
IHdoZW4gdGhlIHByb3BlcnR5IGRlZmluaXRlbHkgZXhpc3RzIGJhc2VkIG9uIGFic3RyYWN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4
IDA0NTIyODBkZDI2ZjQwYjBiY2E0NWQzODUxZDExMGRmNDE2YTBmYTcuLjBiNWZiOTVkOTU3YjEy
YTQzODFjZmZiOWI2YzJhNGViMzJhYjNhNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC00MjM4LDYgKzQyMzgsMzggQEAgYm9vbCBC
eXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgIE5F
WFRfT1BDT0RFKG9wX3B1dF9ieV92YWxfd2l0aF90aGlzKTsKICAgICAgICAgfQogCisgICAgICAg
IGNhc2Ugb3BfZGVmaW5lX2RhdGFfcHJvcGVydHk6IHsKKyAgICAgICAgICAgIE5vZGUqIGJhc2Ug
PSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpKTsK
KyAgICAgICAgICAgIE5vZGUqIHByb3BlcnR5ID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50
SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSk7CisgICAgICAgICAgICBOb2RlKiB2YWx1ZSA9IGdl
dChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCkpOworICAg
ICAgICAgICAgTm9kZSogYXR0cmlidXRlcyA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudElu
c3RydWN0aW9uWzRdLnUub3BlcmFuZCkpOworCisgICAgICAgICAgICBhZGRWYXJBcmdDaGlsZChi
YXNlKTsKKyAgICAgICAgICAgIGFkZFZhckFyZ0NoaWxkKHByb3BlcnR5KTsKKyAgICAgICAgICAg
IGFkZFZhckFyZ0NoaWxkKHZhbHVlKTsKKyAgICAgICAgICAgIGFkZFZhckFyZ0NoaWxkKGF0dHJp
YnV0ZXMpOworICAgICAgICAgICAgYWRkVG9HcmFwaChOb2RlOjpWYXJBcmcsIERlZmluZURhdGFQ
cm9wZXJ0eSwgT3BJbmZvKDApLCBPcEluZm8oMCkpOworCisgICAgICAgICAgICBORVhUX09QQ09E
RShvcF9kZWZpbmVfZGF0YV9wcm9wZXJ0eSk7CisgICAgICAgIH0KKworICAgICAgICBjYXNlIG9w
X2RlZmluZV9hY2Nlc3Nvcl9wcm9wZXJ0eTogeworICAgICAgICAgICAgTm9kZSogYmFzZSA9IGdl
dChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCkpOworICAg
ICAgICAgICAgTm9kZSogcHJvcGVydHkgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0
cnVjdGlvblsyXS51Lm9wZXJhbmQpKTsKKyAgICAgICAgICAgIE5vZGUqIGdldHRlciA9IGdldChW
aXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCkpOworICAgICAg
ICAgICAgTm9kZSogc2V0dGVyID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rp
b25bNF0udS5vcGVyYW5kKSk7CisgICAgICAgICAgICBOb2RlKiBhdHRyaWJ1dGVzID0gZ2V0KFZp
cnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bNV0udS5vcGVyYW5kKSk7CisKKyAgICAg
ICAgICAgIGFkZFZhckFyZ0NoaWxkKGJhc2UpOworICAgICAgICAgICAgYWRkVmFyQXJnQ2hpbGQo
cHJvcGVydHkpOworICAgICAgICAgICAgYWRkVmFyQXJnQ2hpbGQoZ2V0dGVyKTsKKyAgICAgICAg
ICAgIGFkZFZhckFyZ0NoaWxkKHNldHRlcik7CisgICAgICAgICAgICBhZGRWYXJBcmdDaGlsZChh
dHRyaWJ1dGVzKTsKKyAgICAgICAgICAgIGFkZFRvR3JhcGgoTm9kZTo6VmFyQXJnLCBEZWZpbmVB
Y2Nlc3NvclByb3BlcnR5LCBPcEluZm8oMCksIE9wSW5mbygwKSk7CisKKyAgICAgICAgICAgIE5F
WFRfT1BDT0RFKG9wX2RlZmluZV9hY2Nlc3Nvcl9wcm9wZXJ0eSk7CisgICAgICAgIH0KKwogICAg
ICAgICBjYXNlIG9wX3RyeV9nZXRfYnlfaWQ6CiAgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkOgog
ICAgICAgICBjYXNlIG9wX2dldF9ieV9pZF9wcm90b19sb2FkOgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCmluZGV4IDQ4ZmE0OTU3MmVjNTBlYzE1ZDAz
Nzc2YTUyMmQ2ZmJkMzUyYmZlOWEuLmMzMjNkNDZmYmMzY2Y1YzEwNDlmYTI2ZmMwZTE5MGYyMjcx
YTQ3MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0
aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5j
cHAKQEAgLTE3Myw2ICsxNzMsOCBAQCBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsKE9w
Y29kZUlEIG9wY29kZUlELCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1YwogICAgIGNhc2Ug
b3BfcHV0X2dldHRlcl9zZXR0ZXJfYnlfaWQ6CiAgICAgY2FzZSBvcF9wdXRfZ2V0dGVyX2J5X3Zh
bDoKICAgICBjYXNlIG9wX3B1dF9zZXR0ZXJfYnlfdmFsOgorICAgIGNhc2Ugb3BfZGVmaW5lX2Rh
dGFfcHJvcGVydHk6CisgICAgY2FzZSBvcF9kZWZpbmVfYWNjZXNzb3JfcHJvcGVydHk6CiAgICAg
Y2FzZSBvcF9kZWxfYnlfaWQ6CiAgICAgY2FzZSBvcF9kZWxfYnlfdmFsOgogICAgIGNhc2Ugb3Bf
am1wOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXpl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAppbmRleCBjMWMz
ZmRkZGI3YTdhNjBiNDY1MmExN2NhZTFhOTgzZjhjYWU5NjExLi5jY2NkZjhiY2Q2MjZhYTRkNjc2
MzczY2QyODQyZTJlNTZhZTBhYzEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Nsb2JiZXJpemUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Ns
b2JiZXJpemUuaApAQCAtNDg2LDYgKzQ4Niw4IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3Jh
cGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAg
ICAgY2FzZSBQdXRHZXR0ZXJTZXR0ZXJCeUlkOgogICAgIGNhc2UgUHV0R2V0dGVyQnlWYWw6CiAg
ICAgY2FzZSBQdXRTZXR0ZXJCeVZhbDoKKyAgICBjYXNlIERlZmluZURhdGFQcm9wZXJ0eToKKyAg
ICBjYXNlIERlZmluZUFjY2Vzc29yUHJvcGVydHk6CiAgICAgY2FzZSBEZWxldGVCeUlkOgogICAg
IGNhc2UgRGVsZXRlQnlWYWw6CiAgICAgY2FzZSBBcnJheVB1c2g6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0RvZXNHQy5jcHAKaW5kZXggMmRjZjU1ZDJlZDI4YWFlNjBiNmI4YjdiOWJmNmRh
MDcxOWQ5MmRkNS4uZjY5ZDJmOWZmOTdkNDA4YThmMmU4MTc2ZjVhYTdiM2M5Yzc1M2RiZiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAtMTExLDYgKzExMSw4IEBA
IGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIFB1dEdldHRl
clNldHRlckJ5SWQ6CiAgICAgY2FzZSBQdXRHZXR0ZXJCeVZhbDoKICAgICBjYXNlIFB1dFNldHRl
ckJ5VmFsOgorICAgIGNhc2UgRGVmaW5lRGF0YVByb3BlcnR5OgorICAgIGNhc2UgRGVmaW5lQWNj
ZXNzb3JQcm9wZXJ0eToKICAgICBjYXNlIERlbGV0ZUJ5SWQ6CiAgICAgY2FzZSBEZWxldGVCeVZh
bDoKICAgICBjYXNlIENoZWNrU3RydWN0dXJlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRml4dXBQaGFzZS5jcHAKaW5kZXggNmVlNTE0MmY3OGY2MGJmMTA5NjgzYzhiODljMTVkMGU0
NThiM2ZlMC4uZDNjNTk0MTA0YWM5MzBkNTQxZTI2NjkyYTA1YWQ1NWI5ZGQ2OTkzMiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCkBAIC0xNjAyLDYgKzE2
MDIsMzkgQEAgY2xhc3MgRml4dXBQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICBm
aXhFZGdlPFVudHlwZWRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIGJyZWFrOwog
CisgICAgICAgIGNhc2UgRGVmaW5lRGF0YVByb3BlcnR5OiB7CisgICAgICAgICAgICBmaXhFZGdl
PENlbGxVc2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCkpOworICAgICAgICAgICAgRWRn
ZSYgcHJvcGVydHlFZGdlID0gbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKTsKKyAgICAgICAg
ICAgIGlmIChwcm9wZXJ0eUVkZ2UtPnNob3VsZFNwZWN1bGF0ZVN5bWJvbCgpKQorICAgICAgICAg
ICAgICAgIGZpeEVkZ2U8U3ltYm9sVXNlPihwcm9wZXJ0eUVkZ2UpOworICAgICAgICAgICAgZWxz
ZSBpZiAocHJvcGVydHlFZGdlLT5zaG91bGRTcGVjdWxhdGVTdHJpbmdJZGVudCgpKQorICAgICAg
ICAgICAgICAgIGZpeEVkZ2U8U3RyaW5nSWRlbnRVc2U+KHByb3BlcnR5RWRnZSk7CisgICAgICAg
ICAgICBlbHNlIGlmIChwcm9wZXJ0eUVkZ2UtPnNob3VsZFNwZWN1bGF0ZVN0cmluZygpKQorICAg
ICAgICAgICAgICAgIGZpeEVkZ2U8U3RyaW5nVXNlPihwcm9wZXJ0eUVkZ2UpOworICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgIGZpeEVkZ2U8VW50eXBlZFVzZT4ocHJvcGVydHlFZGdl
KTsKKyAgICAgICAgICAgIGZpeEVkZ2U8VW50eXBlZFVzZT4obV9ncmFwaC52YXJBcmdDaGlsZChu
b2RlLCAyKSk7CisgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihtX2dyYXBoLnZhckFyZ0No
aWxkKG5vZGUsIDMpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAg
Y2FzZSBEZWZpbmVBY2Nlc3NvclByb3BlcnR5OiB7CisgICAgICAgICAgICBmaXhFZGdlPENlbGxV
c2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCkpOworICAgICAgICAgICAgRWRnZSYgcHJv
cGVydHlFZGdlID0gbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKTsKKyAgICAgICAgICAgIGlm
IChwcm9wZXJ0eUVkZ2UtPnNob3VsZFNwZWN1bGF0ZVN5bWJvbCgpKQorICAgICAgICAgICAgICAg
IGZpeEVkZ2U8U3ltYm9sVXNlPihwcm9wZXJ0eUVkZ2UpOworICAgICAgICAgICAgZWxzZSBpZiAo
cHJvcGVydHlFZGdlLT5zaG91bGRTcGVjdWxhdGVTdHJpbmdJZGVudCgpKQorICAgICAgICAgICAg
ICAgIGZpeEVkZ2U8U3RyaW5nSWRlbnRVc2U+KHByb3BlcnR5RWRnZSk7CisgICAgICAgICAgICBl
bHNlIGlmIChwcm9wZXJ0eUVkZ2UtPnNob3VsZFNwZWN1bGF0ZVN0cmluZygpKQorICAgICAgICAg
ICAgICAgIGZpeEVkZ2U8U3RyaW5nVXNlPihwcm9wZXJ0eUVkZ2UpOworICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgIGZpeEVkZ2U8VW50eXBlZFVzZT4ocHJvcGVydHlFZGdlKTsKKyAg
ICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVzZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAyKSk7
CisgICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwg
MykpOworICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obV9ncmFwaC52YXJBcmdDaGlsZChu
b2RlLCA0KSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAjaWYgIUFTU0VSVF9E
SVNBQkxFRAogICAgICAgICAvLyBIYXZlIHRoZXNlIG5vLW9wIGNhc2VzIGhlcmUgdG8gZW5zdXJl
IHRoYXQgbm9ib2R5IGZvcmdldHMgdG8gYWRkIGhhbmRsZXJzIGZvciBuZXcgb3Bjb2Rlcy4KICAg
ICAgICAgY2FzZSBTZXRBcmd1bWVudDoKQEAgLTE2NzEsOCArMTcwNCw2IEBAIGNsYXNzIEZpeHVw
UGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICBjYXNlIEdldEJ5VmFsV2l0aFRoaXM6CiAg
ICAgICAgIGNhc2UgQ29tcGFyZUVxUHRyOgogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICAKLSAgICAgICAgICAgIGJyZWFrOwogI2Vsc2UKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAg
ICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
VHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCmluZGV4IDFm
MzVlYjJkOTAzYjQ2NmMyNDE4YzNkYzFiNjE4NTNlYmU1ZDY5NzkuLjI1MTVlYjM0MmJkNzM4OWUx
MTg4N2FiZDgyZjBlY2ZmMDEwN2RiYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZVR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05v
ZGVUeXBlLmgKQEAgLTE5OSw2ICsxOTksOCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERG
RyB7CiAgICAgbWFjcm8oUHV0R2V0dGVyU2V0dGVyQnlJZCwgTm9kZU11c3RHZW5lcmF0ZSkgXAog
ICAgIG1hY3JvKFB1dEdldHRlckJ5VmFsLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8o
UHV0U2V0dGVyQnlWYWwsIE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNybyhEZWZpbmVEYXRh
UHJvcGVydHksIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlSGFzVmFyQXJncykgXAorICAgIG1hY3Jv
KERlZmluZUFjY2Vzc29yUHJvcGVydHksIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlSGFzVmFyQXJn
cykgXAogICAgIG1hY3JvKERlbGV0ZUJ5SWQsIE5vZGVSZXN1bHRCb29sZWFuIHwgTm9kZU11c3RH
ZW5lcmF0ZSkgXAogICAgIG1hY3JvKERlbGV0ZUJ5VmFsLCBOb2RlUmVzdWx0Qm9vbGVhbiB8IE5v
ZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhDaGVja1N0cnVjdHVyZSwgTm9kZU11c3RHZW5l
cmF0ZSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRp
b25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKaW5k
ZXggN2U4Y2M1OGM4ZDgzMzg5YjZjZDI5MTFkNWFhZThkMzc4NDY1MDU4OC4uYjY4YzhhZDE1NDdi
NmVkZTk4MzIxZWQxZjMzMDYyY2JmODMwMzk1ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09wZXJhdGlvbnMuY3BwCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiREZHVG9G
VExEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suaCIKICNpbmNsdWRlICJERkdUb0ZUTEZvck9T
UkVudHJ5RGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiREZHV29ya2xp
c3QuaCIKKyNpbmNsdWRlICJEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaCIKICNpbmNsdWRlICJE
aXJlY3RBcmd1bWVudHMuaCIKICNpbmNsdWRlICJGVExGb3JPU1JFbnRyeUpJVENvZGUuaCIKICNp
bmNsdWRlICJGVExPU1JFbnRyeS5oIgpAQCAtOTk0LDYgKzk5NSw5MiBAQCB2b2lkIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uUHV0QnlWYWxXaXRoVGhpcyhFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRK
U1ZhbHVlIGVuYwogICAgIHB1dFdpdGhUaGlzPGZhbHNlPihleGVjLCBlbmNvZGVkQmFzZSwgZW5j
b2RlZFRoaXMsIGVuY29kZWRWYWx1ZSwgcHJvcGVydHkpOwogfQogCitBTFdBWVNfSU5MSU5FIHN0
YXRpYyB2b2lkIGRlZmluZURhdGFQcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwgSlNP
YmplY3QqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1
ZSwgaW50MzJfdCBhdHRyaWJ1dGVzKQoreworICAgIFByb3BlcnR5RGVzY3JpcHRvciBkZXNjcmlw
dG9yID0gdG9Qcm9wZXJ0eURlc2NyaXB0b3IodmFsdWUsIGpzVW5kZWZpbmVkKCksIGpzVW5kZWZp
bmVkKCksIERlZmluZVByb3BlcnR5QXR0cmlidXRlcyhhdHRyaWJ1dGVzKSk7CisgICAgQVNTRVJU
KChkZXNjcmlwdG9yLmF0dHJpYnV0ZXMoKSAmIEFjY2Vzc29yKSB8fCAoIWRlc2NyaXB0b3IuaXNB
Y2Nlc3NvckRlc2NyaXB0b3IoKSkpOworICAgIGJhc2UtPm1ldGhvZFRhYmxlKHZtKS0+ZGVmaW5l
T3duUHJvcGVydHkoYmFzZSwgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCB0cnVlKTsK
K30KKwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlZmluZURhdGFQcm9wZXJ0eShFeGVj
U3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkUHJvcGVy
dHksIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgaW50MzJfdCBhdHRyaWJ1dGVzKQorewor
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cigmdm0sIGV4ZWMpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KworICAgIElkZW50aWZpZXIgcHJvcGVydHlOYW1lID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRQ
cm9wZXJ0eSkudG9Qcm9wZXJ0eUtleShleGVjKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB2b2lkKCkpOworICAgIGRlZmluZURhdGFQcm9wZXJ0eShleGVjLCB2bSwgYmFzZSwgcHJv
cGVydHlOYW1lLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSwgYXR0cmlidXRlcyk7Cit9
CisKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWZpbmVEYXRhUHJvcGVydHlTdHJpbmco
RXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogYmFzZSwgSlNTdHJpbmcqIHByb3BlcnR5LCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIGludDMyX3QgYXR0cmlidXRlcykKK3sKKyAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBl
eGVjKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBJ
ZGVudGlmaWVyIHByb3BlcnR5TmFtZSA9IHByb3BlcnR5LT50b0lkZW50aWZpZXIoZXhlYyk7Cisg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICBkZWZpbmVEYXRhUHJv
cGVydHkoZXhlYywgdm0sIGJhc2UsIHByb3BlcnR5TmFtZSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRWYWx1ZSksIGF0dHJpYnV0ZXMpOworfQorCit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
RGVmaW5lRGF0YVByb3BlcnR5U3RyaW5nSWRlbnQoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCog
YmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqIHByb3BlcnR5LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUsIGludDMyX3QgYXR0cmlidXRlcykKK3sKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKKyAgICBkZWZpbmVE
YXRhUHJvcGVydHkoZXhlYywgdm0sIGJhc2UsIElkZW50aWZpZXI6OmZyb21VaWQoJnZtLCBwcm9w
ZXJ0eSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpLCBhdHRyaWJ1dGVzKTsKK30KKwor
dm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlZmluZURhdGFQcm9wZXJ0eVN5bWJvbChFeGVj
U3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlLCBTeW1ib2wqIHByb3BlcnR5LCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUsIGludDMyX3QgYXR0cmlidXRlcykKK3sKKyAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsK
KyAgICBkZWZpbmVEYXRhUHJvcGVydHkoZXhlYywgdm0sIGJhc2UsIElkZW50aWZpZXI6OmZyb21V
aWQocHJvcGVydHktPnByaXZhdGVOYW1lKCkpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVl
KSwgYXR0cmlidXRlcyk7Cit9CisKK0FMV0FZU19JTkxJTkUgc3RhdGljIHZvaWQgZGVmaW5lQWNj
ZXNzb3JQcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwgSlNPYmplY3QqIGJhc2UsIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNPYmplY3QqIGdldHRlciwgSlNPYmplY3Qq
IHNldHRlciwgaW50MzJfdCBhdHRyaWJ1dGVzKQoreworICAgIFByb3BlcnR5RGVzY3JpcHRvciBk
ZXNjcmlwdG9yID0gdG9Qcm9wZXJ0eURlc2NyaXB0b3IoanNVbmRlZmluZWQoKSwgZ2V0dGVyLCBz
ZXR0ZXIsIERlZmluZVByb3BlcnR5QXR0cmlidXRlcyhhdHRyaWJ1dGVzKSk7CisgICAgQVNTRVJU
KChkZXNjcmlwdG9yLmF0dHJpYnV0ZXMoKSAmIEFjY2Vzc29yKSB8fCAoIWRlc2NyaXB0b3IuaXNB
Y2Nlc3NvckRlc2NyaXB0b3IoKSkpOworICAgIGJhc2UtPm1ldGhvZFRhYmxlKHZtKS0+ZGVmaW5l
T3duUHJvcGVydHkoYmFzZSwgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCB0cnVlKTsK
K30KKwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlZmluZUFjY2Vzc29yUHJvcGVydHko
RXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogYmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFBy
b3BlcnR5LCBKU09iamVjdCogZ2V0dGVyLCBKU09iamVjdCogc2V0dGVyLCBpbnQzMl90IGF0dHJp
YnV0ZXMpCit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworCisgICAgSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUgPSBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZFByb3BlcnR5KS50b1Byb3BlcnR5S2V5KGV4ZWMpOworICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisgICAgZGVmaW5lQWNjZXNzb3JQcm9wZXJ0eShleGVj
LCB2bSwgYmFzZSwgcHJvcGVydHlOYW1lLCBnZXR0ZXIsIHNldHRlciwgYXR0cmlidXRlcyk7Cit9
CisKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWZpbmVBY2Nlc3NvclByb3BlcnR5U3Ry
aW5nKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGJhc2UsIEpTU3RyaW5nKiBwcm9wZXJ0eSwg
SlNPYmplY3QqIGdldHRlciwgSlNPYmplY3QqIHNldHRlciwgaW50MzJfdCBhdHRyaWJ1dGVzKQor
eworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcigmdm0sIGV4ZWMpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKworICAgIElkZW50aWZpZXIgcHJvcGVydHlOYW1lID0gcHJvcGVydHktPnRvSWRlbnRpZmll
cihleGVjKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworICAgIGRl
ZmluZUFjY2Vzc29yUHJvcGVydHkoZXhlYywgdm0sIGJhc2UsIHByb3BlcnR5TmFtZSwgZ2V0dGVy
LCBzZXR0ZXIsIGF0dHJpYnV0ZXMpOworfQorCit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
RGVmaW5lQWNjZXNzb3JQcm9wZXJ0eVN0cmluZ0lkZW50KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmpl
Y3QqIGJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKiBwcm9wZXJ0eSwgSlNPYmplY3QqIGdldHRlciwg
SlNPYmplY3QqIHNldHRlciwgaW50MzJfdCBhdHRyaWJ1dGVzKQoreworICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOwor
ICAgIGRlZmluZUFjY2Vzc29yUHJvcGVydHkoZXhlYywgdm0sIGJhc2UsIElkZW50aWZpZXI6OmZy
b21VaWQoJnZtLCBwcm9wZXJ0eSksIGdldHRlciwgc2V0dGVyLCBhdHRyaWJ1dGVzKTsKK30KKwor
dm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlZmluZUFjY2Vzc29yUHJvcGVydHlTeW1ib2wo
RXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogYmFzZSwgU3ltYm9sKiBwcm9wZXJ0eSwgSlNPYmpl
Y3QqIGdldHRlciwgSlNPYmplY3QqIHNldHRlciwgaW50MzJfdCBhdHRyaWJ1dGVzKQoreworICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigm
dm0sIGV4ZWMpOworICAgIGRlZmluZUFjY2Vzc29yUHJvcGVydHkoZXhlYywgdm0sIGJhc2UsIElk
ZW50aWZpZXI6OmZyb21VaWQocHJvcGVydHktPnByaXZhdGVOYW1lKCkpLCBnZXR0ZXIsIHNldHRl
ciwgYXR0cmlidXRlcyk7Cit9CisKIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXJy
YXkoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIGFycmF5U3RydWN0dXJlLCB2b2lkKiBidWZm
ZXIsIHNpemVfdCBzaXplKQogewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAppbmRleCA1MjdiZmU1ODc2YWZjNzgzN2Jh
MzBmZDIxMGQ1YTQ3YzNiMjk1MWU0Li44NDIyMzg3NDExMjVmZjRlMTVjYzM3YjQ2MDBiMGNiZmMx
NDI5MDYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlv
bnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaApAQCAt
MTE0LDYgKzExNCwxNCBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFdpdGhU
aGlzKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSgogdm9pZCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblB1dEJ5SWRXaXRoVGhpc1N0cmljdChFeGVjU3RhdGUqLCBFbmNvZGVkSlNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBVbmlxdWVkU3RyaW5nSW1wbCop
IFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbFdpdGhU
aGlzKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUsIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uUHV0QnlWYWxXaXRoVGhpc1N0cmljdChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lO
VEVSTkFMOwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlZmluZURhdGFQcm9wZXJ0eShF
eGVjU3RhdGUqLCBKU09iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgaW50
MzJfdCkgV1RGX0lOVEVSTkFMOwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlZmluZURh
dGFQcm9wZXJ0eVN0cmluZyhFeGVjU3RhdGUqLCBKU09iamVjdCosIEpTU3RyaW5nKiwgRW5jb2Rl
ZEpTVmFsdWUsIGludDMyX3QpIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVy
YXRpb25EZWZpbmVEYXRhUHJvcGVydHlTdHJpbmdJZGVudChFeGVjU3RhdGUqLCBKU09iamVjdCos
IFVuaXF1ZWRTdHJpbmdJbXBsKiwgRW5jb2RlZEpTVmFsdWUsIGludDMyX3QpIFdURl9JTlRFUk5B
TDsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWZpbmVEYXRhUHJvcGVydHlTeW1ib2wo
RXhlY1N0YXRlKiwgSlNPYmplY3QqLCBTeW1ib2wqLCBFbmNvZGVkSlNWYWx1ZSwgaW50MzJfdCkg
V1RGX0lOVEVSTkFMOwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlZmluZUFjY2Vzc29y
UHJvcGVydHkoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgSlNPYmplY3Qq
LCBKU09iamVjdCosIGludDMyX3QpIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBv
cGVyYXRpb25EZWZpbmVBY2Nlc3NvclByb3BlcnR5U3RyaW5nKEV4ZWNTdGF0ZSosIEpTT2JqZWN0
KiwgSlNTdHJpbmcqLCBKU09iamVjdCosIEpTT2JqZWN0KiwgaW50MzJfdCkgV1RGX0lOVEVSTkFM
Owordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlZmluZUFjY2Vzc29yUHJvcGVydHlTdHJp
bmdJZGVudChFeGVjU3RhdGUqLCBKU09iamVjdCosIFVuaXF1ZWRTdHJpbmdJbXBsKiwgSlNPYmpl
Y3QqLCBKU09iamVjdCosIGludDMyX3QpIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElP
TiBvcGVyYXRpb25EZWZpbmVBY2Nlc3NvclByb3BlcnR5U3ltYm9sKEV4ZWNTdGF0ZSosIEpTT2Jq
ZWN0KiwgU3ltYm9sKiwgSlNPYmplY3QqLCBKU09iamVjdCosIGludDMyX3QpIFdURl9JTlRFUk5B
TDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJyYXlQdXNoKEV4ZWNT
dGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgSlNBcnJheSopIFdURl9JTlRFUk5B
TDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJyYXlQdXNoRG91Ymxl
KEV4ZWNTdGF0ZSosIGRvdWJsZSB2YWx1ZSwgSlNBcnJheSopIFdURl9JTlRFUk5BTDsKIEVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJyYXlQb3AoRXhlY1N0YXRlKiwgSlNB
cnJheSopIFdURl9JTlRFUk5BTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKaW5kZXggMDZkYjQwZWI2
NzY2NzI0NmQzNDkwOTA1OTE5YmY1YWJkMDBlYjk5ZS4uODdkYmU4M2E4ODkwYzFkN2FkMzQ4ZTA1
NGU1YTc5ZTlkNWE0NDJkOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKQEAgLTEwNDAsNiArMTA0
MCw4IEBAIGNsYXNzIFByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsK
ICAgICAgICAgY2FzZSBQdXRHZXR0ZXJTZXR0ZXJCeUlkOgogICAgICAgICBjYXNlIFB1dEdldHRl
ckJ5VmFsOgogICAgICAgICBjYXNlIFB1dFNldHRlckJ5VmFsOgorICAgICAgICBjYXNlIERlZmlu
ZURhdGFQcm9wZXJ0eToKKyAgICAgICAgY2FzZSBEZWZpbmVBY2Nlc3NvclByb3BlcnR5OgogICAg
ICAgICBjYXNlIERGRzo6SnVtcDoKICAgICAgICAgY2FzZSBCcmFuY2g6CiAgICAgICAgIGNhc2Ug
U3dpdGNoOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9F
eGVjdXRlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaApp
bmRleCAyMmI5MzQwMDU4M2FjNmRmODYzYjBiZTM4ZjZiODMzNmE1MDQxOWFjLi5jMTMyZjk1NzRi
MjVlNjRlNmFjYzU2MTYwYjk0Nzk1ODJiOTNhZjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaApAQCAtMjE0LDYgKzIxNCw4IEBAIGJvb2wgc2FmZVRv
RXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwgTm9kZSogbm9k
ZSkKICAgICBjYXNlIFB1dEdldHRlclNldHRlckJ5SWQ6CiAgICAgY2FzZSBQdXRHZXR0ZXJCeVZh
bDoKICAgICBjYXNlIFB1dFNldHRlckJ5VmFsOgorICAgIGNhc2UgRGVmaW5lRGF0YVByb3BlcnR5
OgorICAgIGNhc2UgRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eToKICAgICBjYXNlIENoZWNrU3RydWN0
dXJlOgogICAgIGNhc2UgR2V0RXhlY3V0YWJsZToKICAgICBjYXNlIEdldEJ1dHRlcmZseToKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXgg
Nzc3MWE5NTExYjJhODVhMjBjODg5MTZmYTQxOTMxNDc3YmM3NjA1Ny4uMTY0NWExZTc0ZGNjOWIw
ZmQyYzM4MjIzOWI5NDcyZTZlNThjM2JiNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTg2MzksNiArODYzOSwxNjUgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNvbXBhcmVFcVB0cihOb2RlKiBub2RlKQogICAgIGJsZXNz
ZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVEZWZpbmVEYXRhUHJvcGVydHkoTm9kZSogbm9kZSkKK3sKKyNpZiBVU0UoSlNW
QUxVRTY0KQorICAgIHN0YXRpY19hc3NlcnQoR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMgPj0g
NSwgIldlIGFyZSBhc3N1bWluZyB3ZSBoYXZlIGVub3VnaCByZWdpc3RlcnMgdG8gbWFrZSB0aGlz
IGNhbGwgd2l0aG91dCBpbmNyZW1lbnRhbGx5IHNldHRpbmcgdXAgdGhlIGFyZ3VtZW50cy4iKTsK
KyNlbHNlCisgICAgc3RhdGljX2Fzc2VydChHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycyA+PSA2
LCAiV2UgYXJlIGFzc3VtaW5nIHdlIGhhdmUgZW5vdWdoIHJlZ2lzdGVycyB0byBtYWtlIHRoaXMg
Y2FsbCB3aXRob3V0IGluY3JlbWVudGFsbHkgc2V0dGluZyB1cCB0aGUgYXJndW1lbnRzLiIpOwor
I2VuZGlmCisKKyAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG1faml0LmdyYXBo
KCkudmFyQXJnQ2hpbGQobm9kZSwgMCkpOworICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIo
KTsKKworICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG1faml0LmdyYXBoKCkudmFyQXJn
Q2hpbGQobm9kZSwgMikpOworICAgIEpTVmFsdWVSZWdzIHZhbHVlUmVncyA9IHZhbHVlLmpzVmFs
dWVSZWdzKCk7CisKKyAgICBTcGVjdWxhdGVJbnQzMk9wZXJhbmQgYXR0cmlidXRlcyh0aGlzLCBt
X2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIDMpKTsKKyAgICBHUFJSZWcgYXR0cmlidXRl
c0dQUiA9IGF0dHJpYnV0ZXMuZ3ByKCk7CisKKyAgICBFZGdlJiBwcm9wZXJ0eUVkZ2UgPSBtX2pp
dC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIDEpOworICAgIHN3aXRjaCAocHJvcGVydHlFZGdl
LnVzZUtpbmQoKSkgeworICAgIGNhc2UgU3RyaW5nVXNlOiB7CisgICAgICAgIFNwZWN1bGF0ZUNl
bGxPcGVyYW5kIHByb3BlcnR5KHRoaXMsIHByb3BlcnR5RWRnZSk7CisgICAgICAgIEdQUlJlZyBw
cm9wZXJ0eUdQUiA9IHByb3BlcnR5LmdwcigpOworICAgICAgICBzcGVjdWxhdGVTdHJpbmcocHJv
cGVydHlFZGdlLCBwcm9wZXJ0eUdQUik7CisKKyAgICAgICAgdXNlQ2hpbGRyZW4obm9kZSk7CisK
KyAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25EZWZpbmVEYXRhUHJvcGVydHlTdHJpbmcsIE5vUmVzdWx0LCBiYXNlR1BSLCBwcm9wZXJ0eUdQ
UiwgdmFsdWVSZWdzLCBhdHRyaWJ1dGVzR1BSKTsKKyAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hl
Y2soKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgU3RyaW5nSWRlbnRVc2U6IHsK
KyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgcHJvcGVydHkodGhpcywgcHJvcGVydHlFZGdl
KTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IGlkZW50KHRoaXMpOworCisgICAgICAgIEdQUlJlZyBw
cm9wZXJ0eUdQUiA9IHByb3BlcnR5LmdwcigpOworICAgICAgICBHUFJSZWcgaWRlbnRHUFIgPSBp
ZGVudC5ncHIoKTsKKworICAgICAgICBzcGVjdWxhdGVTdHJpbmcocHJvcGVydHlFZGdlLCBwcm9w
ZXJ0eUdQUik7CisgICAgICAgIHNwZWN1bGF0ZVN0cmluZ0lkZW50QW5kTG9hZFN0b3JhZ2UocHJv
cGVydHlFZGdlLCBwcm9wZXJ0eUdQUiwgaWRlbnRHUFIpOworCisgICAgICAgIHVzZUNoaWxkcmVu
KG5vZGUpOworCisgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CisgICAgICAgIGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uRGVmaW5lRGF0YVByb3BlcnR5U3RyaW5nSWRlbnQsIE5vUmVzdWx0LCBiYXNl
R1BSLCBpZGVudEdQUiwgdmFsdWVSZWdzLCBhdHRyaWJ1dGVzR1BSKTsKKyAgICAgICAgbV9qaXQu
ZXhjZXB0aW9uQ2hlY2soKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgU3ltYm9s
VXNlOiB7CisgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHByb3BlcnR5KHRoaXMsIHByb3Bl
cnR5RWRnZSk7CisgICAgICAgIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IHByb3BlcnR5LmdwcigpOwor
ICAgICAgICBzcGVjdWxhdGVTeW1ib2wocHJvcGVydHlFZGdlLCBwcm9wZXJ0eUdQUik7CisKKyAg
ICAgICAgdXNlQ2hpbGRyZW4obm9kZSk7CisKKyAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAg
ICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWZpbmVEYXRhUHJvcGVydHlTeW1ib2wsIE5v
UmVzdWx0LCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgdmFsdWVSZWdzLCBhdHRyaWJ1dGVzR1BSKTsK
KyAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQor
ICAgIGNhc2UgVW50eXBlZFVzZTogeworICAgICAgICBKU1ZhbHVlT3BlcmFuZCBwcm9wZXJ0eSh0
aGlzLCBwcm9wZXJ0eUVkZ2UpOworICAgICAgICBKU1ZhbHVlUmVncyBwcm9wZXJ0eVJlZ3MgPSBw
cm9wZXJ0eS5qc1ZhbHVlUmVncygpOworCisgICAgICAgIHVzZUNoaWxkcmVuKG5vZGUpOworCisg
ICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9u
RGVmaW5lRGF0YVByb3BlcnR5LCBOb1Jlc3VsdCwgYmFzZUdQUiwgcHJvcGVydHlSZWdzLCB2YWx1
ZVJlZ3MsIGF0dHJpYnV0ZXNHUFIpOworICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwor
ICAgICAgICBicmVhazsKKyAgICB9CisgICAgZGVmYXVsdDoKKyAgICAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisKKyAgICBub1Jlc3VsdChub2RlLCBVc2VDaGlsZHJl
bkNhbGxlZEV4cGxpY2l0bHkpOworfQorCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVm
aW5lQWNjZXNzb3JQcm9wZXJ0eShOb2RlKiBub2RlKQoreworI2lmIFVTRShKU1ZBTFVFNjQpCisg
ICAgc3RhdGljX2Fzc2VydChHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycyA+PSA1LCAiV2UgYXJl
IGFzc3VtaW5nIHdlIGhhdmUgZW5vdWdoIHJlZ2lzdGVycyB0byBtYWtlIHRoaXMgY2FsbCB3aXRo
b3V0IGluY3JlbWVudGFsbHkgc2V0dGluZyB1cCB0aGUgYXJndW1lbnRzLiIpOworI2Vsc2UKKyAg
ICBzdGF0aWNfYXNzZXJ0KEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzID49IDYsICJXZSBhcmUg
YXNzdW1pbmcgd2UgaGF2ZSBlbm91Z2ggcmVnaXN0ZXJzIHRvIG1ha2UgdGhpcyBjYWxsIHdpdGhv
dXQgaW5jcmVtZW50YWxseSBzZXR0aW5nIHVwIHRoZSBhcmd1bWVudHMuIik7CisjZW5kaWYKKwor
ICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbV9qaXQuZ3JhcGgoKS52YXJBcmdD
aGlsZChub2RlLCAwKSk7CisgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOworCisgICAg
U3BlY3VsYXRlQ2VsbE9wZXJhbmQgZ2V0dGVyKHRoaXMsIG1faml0LmdyYXBoKCkudmFyQXJnQ2hp
bGQobm9kZSwgMikpOworICAgIEdQUlJlZyBnZXR0ZXJHUFIgPSBnZXR0ZXIuZ3ByKCk7CisKKyAg
ICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBzZXR0ZXIodGhpcywgbV9qaXQuZ3JhcGgoKS52YXJBcmdD
aGlsZChub2RlLCAzKSk7CisgICAgR1BSUmVnIHNldHRlckdQUiA9IHNldHRlci5ncHIoKTsKKwor
ICAgIFNwZWN1bGF0ZUludDMyT3BlcmFuZCBhdHRyaWJ1dGVzKHRoaXMsIG1faml0LmdyYXBoKCku
dmFyQXJnQ2hpbGQobm9kZSwgNCkpOworICAgIEdQUlJlZyBhdHRyaWJ1dGVzR1BSID0gYXR0cmli
dXRlcy5ncHIoKTsKKworICAgIEVkZ2UmIHByb3BlcnR5RWRnZSA9IG1faml0LmdyYXBoKCkudmFy
QXJnQ2hpbGQobm9kZSwgMSk7CisgICAgc3dpdGNoIChwcm9wZXJ0eUVkZ2UudXNlS2luZCgpKSB7
CisgICAgY2FzZSBTdHJpbmdVc2U6IHsKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgcHJv
cGVydHkodGhpcywgcHJvcGVydHlFZGdlKTsKKyAgICAgICAgR1BSUmVnIHByb3BlcnR5R1BSID0g
cHJvcGVydHkuZ3ByKCk7CisgICAgICAgIHNwZWN1bGF0ZVN0cmluZyhwcm9wZXJ0eUVkZ2UsIHBy
b3BlcnR5R1BSKTsKKworICAgICAgICB1c2VDaGlsZHJlbihub2RlKTsKKworICAgICAgICBmbHVz
aFJlZ2lzdGVycygpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlZmluZUFjY2Vz
c29yUHJvcGVydHlTdHJpbmcsIE5vUmVzdWx0LCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgZ2V0dGVy
R1BSLCBzZXR0ZXJHUFIsIGF0dHJpYnV0ZXNHUFIpOworICAgICAgICBtX2ppdC5leGNlcHRpb25D
aGVjaygpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBTdHJpbmdJZGVudFVzZTog
eworICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBwcm9wZXJ0eSh0aGlzLCBwcm9wZXJ0eUVk
Z2UpOworICAgICAgICBHUFJUZW1wb3JhcnkgaWRlbnQodGhpcyk7CisKKyAgICAgICAgR1BSUmVn
IHByb3BlcnR5R1BSID0gcHJvcGVydHkuZ3ByKCk7CisgICAgICAgIEdQUlJlZyBpZGVudEdQUiA9
IGlkZW50LmdwcigpOworCisgICAgICAgIHNwZWN1bGF0ZVN0cmluZyhwcm9wZXJ0eUVkZ2UsIHBy
b3BlcnR5R1BSKTsKKyAgICAgICAgc3BlY3VsYXRlU3RyaW5nSWRlbnRBbmRMb2FkU3RvcmFnZShw
cm9wZXJ0eUVkZ2UsIHByb3BlcnR5R1BSLCBpZGVudEdQUik7CisKKyAgICAgICAgdXNlQ2hpbGRy
ZW4obm9kZSk7CisKKyAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAgICAgICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25EZWZpbmVBY2Nlc3NvclByb3BlcnR5U3RyaW5nSWRlbnQsIE5vUmVzdWx0
LCBiYXNlR1BSLCBpZGVudEdQUiwgZ2V0dGVyR1BSLCBzZXR0ZXJHUFIsIGF0dHJpYnV0ZXNHUFIp
OworICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOworICAgICAgICBicmVhazsKKyAgICB9
CisgICAgY2FzZSBTeW1ib2xVc2U6IHsKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgcHJv
cGVydHkodGhpcywgcHJvcGVydHlFZGdlKTsKKyAgICAgICAgR1BSUmVnIHByb3BlcnR5R1BSID0g
cHJvcGVydHkuZ3ByKCk7CisgICAgICAgIHNwZWN1bGF0ZVN5bWJvbChwcm9wZXJ0eUVkZ2UsIHBy
b3BlcnR5R1BSKTsKKworICAgICAgICB1c2VDaGlsZHJlbihub2RlKTsKKworICAgICAgICBmbHVz
aFJlZ2lzdGVycygpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlZmluZUFjY2Vz
c29yUHJvcGVydHlTeW1ib2wsIE5vUmVzdWx0LCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgZ2V0dGVy
R1BSLCBzZXR0ZXJHUFIsIGF0dHJpYnV0ZXNHUFIpOworICAgICAgICBtX2ppdC5leGNlcHRpb25D
aGVjaygpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBVbnR5cGVkVXNlOiB7Cisg
ICAgICAgIEpTVmFsdWVPcGVyYW5kIHByb3BlcnR5KHRoaXMsIHByb3BlcnR5RWRnZSk7CisgICAg
ICAgIEpTVmFsdWVSZWdzIHByb3BlcnR5UmVncyA9IHByb3BlcnR5LmpzVmFsdWVSZWdzKCk7CisK
KyAgICAgICAgdXNlQ2hpbGRyZW4obm9kZSk7CisKKyAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsK
KyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWZpbmVBY2Nlc3NvclByb3BlcnR5LCBO
b1Jlc3VsdCwgYmFzZUdQUiwgcHJvcGVydHlSZWdzLCBnZXR0ZXJHUFIsIHNldHRlckdQUiwgYXR0
cmlidXRlc0dQUik7CisgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CisgICAgICAgIGJy
ZWFrOworICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgIH0KKworICAgIG5vUmVzdWx0KG5vZGUsIFVzZUNoaWxkcmVuQ2FsbGVkRXhw
bGljaXRseSk7Cit9CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKIAogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXggZTdhMjli
NDMzNDZiMjQ4MjNhOTk4OWZlZTk1ZDY0MDVjMzE4ZGE3My4uYzJhM2NkMDAwOGRkZTU4NjQ0Mzcy
N2NkNDZlMGNkOTg3Y2YyOGVhZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuaApAQCAtMTM0NCw2ICsxMzQ0LDQ2IEBAIGNsYXNzIFNwZWN1bGF0aXZl
SklUIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFy
ZzIsIGFyZzMsIGFyZzQpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOwog
ICAgIH0KKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9u
X0VPSkpaIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEpTVmFsdWVSZWdzIGFyZzIsIEpTVmFsdWVS
ZWdzIGFyZzMsIEdQUlJlZyBhcmc0KQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVu
dHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIucGF5bG9hZEdQUigpLCBhcmczLnBheWxvYWRHUFIo
KSwgYXJnNCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CisgICAgfQor
ICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRU9Kc3NK
WiBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgSlNWYWx1ZVJlZ3MgYXJnMywg
R1BSUmVnIGFyZzQpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoYXJnMSwgYXJnMiwgYXJnMy5wYXlsb2FkR1BSKCksIGFyZzQpOworICAgICAgICByZXR1
cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOworICAgIH0KKyAgICBKSVRDb21waWxlcjo6Q2FsbCBj
YWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VPSUpaIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEs
IEdQUlJlZyBhcmcyLCBKU1ZhbHVlUmVncyBhcmczLCBHUFJSZWcgYXJnNCkKKyAgICB7CisgICAg
ICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczLnBh
eWxvYWRHUFIoKSwgYXJnNCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7
CisgICAgfQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRp
b25fRU9TeW1KWiBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgSlNWYWx1ZVJl
Z3MgYXJnMywgR1BSUmVnIGFyZzQpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMy5wYXlsb2FkR1BSKCksIGFyZzQpOworICAg
ICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOworICAgIH0KKyAgICBKSVRDb21waWxl
cjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VPSk9PWiBvcGVyYXRpb24sIEdQ
UlJlZyBhcmcxLCBKU1ZhbHVlUmVncyBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVnIGFyZzQsIEdQ
UlJlZyBhcmc1KQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0
YXRlKGFyZzEsIGFyZzIucGF5bG9hZEdQUigpLCBhcmczLCBhcmc0LCBhcmc1KTsKKyAgICAgICAg
cmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKKyAgICB9CisgICAgSklUQ29tcGlsZXI6OkNh
bGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FT0pzc09PWiBvcGVyYXRpb24sIEdQUlJl
ZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMsIEdQUlJlZyBhcmc0LCBHUFJSZWcgYXJn
NSkKKyAgICB7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcx
LCBhcmcyLCBhcmczLCBhcmc0LCBhcmc1KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGwob3Bl
cmF0aW9uKTsKKyAgICB9CisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJ
VE9wZXJhdGlvbl9FT0lPT1ogb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQ
UlJlZyBhcmczLCBHUFJSZWcgYXJnNCwgR1BSUmVnIGFyZzUpCisgICAgeworICAgICAgICBtX2pp
dC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMywgYXJnNCwgYXJn
NSk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CisgICAgfQorICAgIEpJ
VENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRU9TeW1PT1ogb3Bl
cmF0aW9uLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcgYXJn
NCwgR1BSUmVnIGFyZzUpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMywgYXJnNCwgYXJnNSk7CisgICAgICAgIHJldHVybiBh
cHBlbmRDYWxsKG9wZXJhdGlvbik7CisgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxP
cGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRU9KSVVpIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEdQ
UlJlZyBhcmcyLCBVbmlxdWVkU3RyaW5nSW1wbCogaW1wbCwgdW5zaWduZWQgdmFsdWUpCiAgICAg
ewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwg
VHJ1c3RlZEltbVB0cihpbXBsKSwgVHJ1c3RlZEltbTMyKHZhbHVlKSk7CkBAIC0xNzg4LDcgKzE4
MjgsNDYgQEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoRUFCSV8zMkJJVF9EVU1NWV9BUkcgYXJnMS5wYXlsb2FkR1BSKCks
IGFyZzEudGFnR1BSKCksIGFyZzIucGF5bG9hZEdQUigpLCBhcmcyLnRhZ0dQUigpLCBhcmczLnBh
eWxvYWRHUFIoKSwgYXJnMy50YWdHUFIoKSwgYXJnNC5wYXlsb2FkR1BSKCksIGFyZzQudGFnR1BS
KCkpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOwogICAgIH0KLQorICAg
IEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRU9KSlogb3Bl
cmF0aW9uLCBHUFJSZWcgYXJnMSwgSlNWYWx1ZVJlZ3MgYXJnMiwgSlNWYWx1ZVJlZ3MgYXJnMywg
R1BSUmVnIGFyZzQpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoYXJnMSwgYXJnMi5wYXlsb2FkR1BSKCksIGFyZzIudGFnR1BSKCksIGFyZzMucGF5bG9h
ZEdQUigpLCBhcmczLnRhZ0dQUigpLCBhcmc0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGwo
b3BlcmF0aW9uKTsKKyAgICB9CisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihW
X0pJVE9wZXJhdGlvbl9FT0pzc0paIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcy
LCBKU1ZhbHVlUmVncyBhcmczLCBHUFJSZWcgYXJnNCkKKyAgICB7CisgICAgICAgIG1faml0LnNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBFQUJJXzMyQklUX0RVTU1ZX0FS
RyBhcmczLnBheWxvYWRHUFIoKSwgYXJnMy50YWdHUFIoKSwgYXJnNCk7CisgICAgICAgIHJldHVy
biBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CisgICAgfQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNh
bGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRU9JSlogb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwg
R1BSUmVnIGFyZzIsIEpTVmFsdWVSZWdzIGFyZzMsIEdQUlJlZyBhcmc0KQorICAgIHsKKyAgICAg
ICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIEVBQklfMzJC
SVRfRFVNTVlfQVJHIGFyZzMucGF5bG9hZEdQUigpLCBhcmczLnRhZ0dQUigpLCBhcmc0KTsKKyAg
ICAgICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKKyAgICB9CisgICAgSklUQ29tcGls
ZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FT1N5bUpaIG9wZXJhdGlvbiwg
R1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBKU1ZhbHVlUmVncyBhcmczLCBHUFJSZWcgYXJnNCkK
KyAgICB7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBh
cmcyLCBFQUJJXzMyQklUX0RVTU1ZX0FSRyBhcmczLnBheWxvYWRHUFIoKSwgYXJnMy50YWdHUFIo
KSwgYXJnNCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CisgICAgfQor
ICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRU9KT09a
IG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEpTVmFsdWVSZWdzIGFyZzIsIEdQUlJlZyBhcmczLCBH
UFJSZWcgYXJnNCwgR1BSUmVnIGFyZzUpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMi5wYXlsb2FkR1BSKCksIGFyZzIudGFnR1BSKCks
IGFyZzMsIGFyZzQsIGFyZzUpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24p
OworICAgIH0KKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0
aW9uX0VPSnNzT09aIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcg
YXJnMywgR1BSUmVnIGFyZzQsIEdQUlJlZyBhcmc1KQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMsIGFyZzQsIGFyZzUpOwor
ICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOworICAgIH0KKyAgICBKSVRDb21w
aWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VPSU9PWiBvcGVyYXRpb24s
IEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMsIEdQUlJlZyBhcmc0LCBHUFJS
ZWcgYXJnNSkKKyAgICB7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShhcmcxLCBhcmcyLCBhcmczLCBhcmc0LCBhcmc1KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENh
bGwob3BlcmF0aW9uKTsKKyAgICB9CisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlv
bihWX0pJVE9wZXJhdGlvbl9FT1N5bU9PWiBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBHUFJSZWcg
YXJnMiwgR1BSUmVnIGFyZzMsIEdQUlJlZyBhcmc0LCBHUFJSZWcgYXJnNSkKKyAgICB7CisgICAg
ICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczLCBh
cmc0LCBhcmc1KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKKyAgICB9
CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FT0pJ
VWkgb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgSlNWYWx1ZVJlZ3MgYXJnMiwgVW5pcXVlZFN0cmlu
Z0ltcGwqIGltcGwsIHVuc2lnbmVkIHZhbHVlKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIucGF5bG9hZEdQUigpLCBhcmcyLnRhZ0dQ
UigpLCBUcnVzdGVkSW1tUHRyKGltcGwpLCBUcnVzdGVkSW1tMzIodmFsdWUpKTsKQEAgLTI1Nzks
NiArMjY1OCw4IEBAIGNsYXNzIFNwZWN1bGF0aXZlSklUIHsKICAgICB2b2lkIGNvbXBpbGVHZXRE
eW5hbWljVmFyKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVQdXREeW5hbWljVmFyKE5vZGUqKTsK
ICAgICB2b2lkIGNvbXBpbGVDb21wYXJlRXFQdHIoTm9kZSopOworICAgIHZvaWQgY29tcGlsZURl
ZmluZURhdGFQcm9wZXJ0eShOb2RlKik7CisgICAgdm9pZCBjb21waWxlRGVmaW5lQWNjZXNzb3JQ
cm9wZXJ0eShOb2RlKik7CiAKICAgICB2b2lkIG1vdmVUcnVlVG8oR1BSUmVnKTsKICAgICB2b2lk
IG1vdmVGYWxzZVRvKEdQUlJlZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCBhMjJkYmVhZGU3MTA4Zjc1NTk2NjZi
OTNmOWFlYzdlZjUwYzEzOTViLi5hYTc4YjBlNjllNGJlYjg1ZTJlMjE2YzhlZjU1OWVhMWY3M2Fh
ZDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQzMl82NC5jcHAKQEAgLTQ0OTEsNiArNDQ5MSwxNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2Ug
RGVmaW5lRGF0YVByb3BlcnR5OiB7CisgICAgICAgIGNvbXBpbGVEZWZpbmVEYXRhUHJvcGVydHko
bm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGNhc2UgRGVmaW5lQWNjZXNzb3JQ
cm9wZXJ0eTogeworICAgICAgICBjb21waWxlRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eShub2RlKTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBHZXRHbG9iYWxMZXhpY2FsVmFyaWFi
bGU6CiAgICAgY2FzZSBHZXRHbG9iYWxWYXI6IHsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3Vs
dFBheWxvYWQodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDY0LmNwcAppbmRleCA4Y2Q1ZDcxMzhmMDdjZGRkYzJjMmU3MGQ2ZjZkZjNjMWZi
MWFkYjZlLi43MjEwOTI1MjNlYjM3ZmFjY2YyMjY4ZGJiZmU3ZjE5NGUzMzI1MDAzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAg
LTQ0NDksNiArNDQ0OSwxNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5v
ZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgRGVmaW5lRGF0YVByb3BlcnR5
OiB7CisgICAgICAgIGNvbXBpbGVEZWZpbmVEYXRhUHJvcGVydHkobm9kZSk7CisgICAgICAgIGJy
ZWFrOworICAgIH0KKworICAgIGNhc2UgRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eTogeworICAgICAg
ICBjb21waWxlRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eShub2RlKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorCiAgICAgY2FzZSBHZXRHbG9iYWxMZXhpY2FsVmFyaWFibGU6CiAgICAgY2FzZSBHZXRH
bG9iYWxWYXI6IHsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAppbmRleCBjYWQ0NWZkYmFi
ZTkwZjQ0OTM0ZDE0YTRiZTNiZDEwZmM4Mjc2NDQ5Li5hMWNmODA4ODUyM2JkZDM3Y2IyMGRmMDgx
YjRhMDFkZDFhYmMwZDY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TENhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBh
YmlsaXRpZXMuY3BwCkBAIC0yNjIsNiArMjYyLDggQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBj
YW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBDb21wYXJlR3JlYXRlcjoKICAgICBjYXNl
IENvbXBhcmVHcmVhdGVyRXE6CiAgICAgY2FzZSBDb21wYXJlU3RyaWN0RXE6CisgICAgY2FzZSBE
ZWZpbmVEYXRhUHJvcGVydHk6CisgICAgY2FzZSBEZWZpbmVBY2Nlc3NvclByb3BlcnR5OgogICAg
ICAgICAvLyBUaGVzZSBhcmUgT0suCiAgICAgICAgIGJyZWFrOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggOWY4ODViODcxMzgzOTIwYjli
ZDRmMzg1ZTk5MjI0NzJmOWYyMzA2Zi4uMWZmMTAzODJhMmU0YjQ1ZmI4OTM2MDFiYTgzMzE3N2Y2
ODliMDVlMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRG
R1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0Iz
LmNwcApAQCAtNjkwLDYgKzY5MCwxMiBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBj
YXNlIFB1dEJ5VmFsV2l0aFRoaXM6CiAgICAgICAgICAgICBjb21waWxlUHV0QnlWYWxXaXRoVGhp
cygpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRGVmaW5lRGF0YVByb3BlcnR5
OgorICAgICAgICAgICAgY29tcGlsZURlZmluZURhdGFQcm9wZXJ0eSgpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eToKKyAgICAgICAgICAg
IGNvbXBpbGVEZWZpbmVBY2Nlc3NvclByb3BlcnR5KCk7CisgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBBcnJheVB1c2g6CiAgICAgICAgICAgICBjb21waWxlQXJyYXlQdXNoKCk7CiAg
ICAgICAgICAgICBicmVhazsKQEAgLTI3NjEsNiArMjc2Nyw3MSBAQCBjbGFzcyBMb3dlckRGR1Rv
QjMgewogICAgICAgICB2bUNhbGwoVm9pZCwgbV9vdXQub3BlcmF0aW9uKG1fZ3JhcGguaXNTdHJp
Y3RNb2RlRm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKSA/IG9wZXJhdGlvblB1dEJ5VmFsV2l0
aFRoaXNTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbFdpdGhUaGlzKSwKICAgICAgICAgICAgIG1f
Y2FsbEZyYW1lLCBiYXNlLCB0aGlzVmFsdWUsIHByb3BlcnR5LCB2YWx1ZSk7CiAgICAgfQorCisg
ICAgdm9pZCBjb21waWxlRGVmaW5lRGF0YVByb3BlcnR5KCkKKyAgICB7CisgICAgICAgIExWYWx1
ZSBiYXNlID0gbG93Q2VsbChtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMCkpOworICAgICAg
ICBMVmFsdWUgdmFsdWUgID0gbG93SlNWYWx1ZShtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwg
MikpOworICAgICAgICBMVmFsdWUgYXR0cmlidXRlcyA9IGxvd0ludDMyKG1fZ3JhcGgudmFyQXJn
Q2hpbGQobV9ub2RlLCAzKSk7CisgICAgICAgIEVkZ2UmIHByb3BlcnR5RWRnZSA9IG1fZ3JhcGgu
dmFyQXJnQ2hpbGQobV9ub2RlLCAxKTsKKyAgICAgICAgc3dpdGNoIChwcm9wZXJ0eUVkZ2UudXNl
S2luZCgpKSB7CisgICAgICAgIGNhc2UgU3RyaW5nVXNlOiB7CisgICAgICAgICAgICBMVmFsdWUg
cHJvcGVydHkgPSBsb3dTdHJpbmcocHJvcGVydHlFZGdlKTsKKyAgICAgICAgICAgIHZtQ2FsbChW
b2lkLCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uRGVmaW5lRGF0YVByb3BlcnR5U3RyaW5nKSwg
bV9jYWxsRnJhbWUsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSwgYXR0cmlidXRlcyk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFN0cmluZ0lkZW50VXNlOiB7Cisg
ICAgICAgICAgICBMVmFsdWUgcHJvcGVydHkgPSBsb3dTdHJpbmdJZGVudChwcm9wZXJ0eUVkZ2Up
OworICAgICAgICAgICAgdm1DYWxsKFZvaWQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25EZWZp
bmVEYXRhUHJvcGVydHlTdHJpbmdJZGVudCksIG1fY2FsbEZyYW1lLCBiYXNlLCBwcm9wZXJ0eSwg
dmFsdWUsIGF0dHJpYnV0ZXMpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAg
ICAgY2FzZSBTeW1ib2xVc2U6IHsKKyAgICAgICAgICAgIExWYWx1ZSBwcm9wZXJ0eSA9IGxvd1N5
bWJvbChwcm9wZXJ0eUVkZ2UpOworICAgICAgICAgICAgdm1DYWxsKFZvaWQsIG1fb3V0Lm9wZXJh
dGlvbihvcGVyYXRpb25EZWZpbmVEYXRhUHJvcGVydHlTeW1ib2wpLCBtX2NhbGxGcmFtZSwgYmFz
ZSwgcHJvcGVydHksIHZhbHVlLCBhdHRyaWJ1dGVzKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisgICAgICAgIGNhc2UgVW50eXBlZFVzZTogeworICAgICAgICAgICAgTFZhbHVlIHBy
b3BlcnR5ID0gbG93SlNWYWx1ZShwcm9wZXJ0eUVkZ2UpOworICAgICAgICAgICAgdm1DYWxsKFZv
aWQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25EZWZpbmVEYXRhUHJvcGVydHkpLCBtX2NhbGxG
cmFtZSwgYmFzZSwgcHJvcGVydHksIHZhbHVlLCBhdHRyaWJ1dGVzKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBjb21waWxl
RGVmaW5lQWNjZXNzb3JQcm9wZXJ0eSgpCisgICAgeworICAgICAgICBMVmFsdWUgYmFzZSA9IGxv
d0NlbGwobV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDApKTsKKyAgICAgICAgTFZhbHVlIGdl
dHRlciA9IGxvd0NlbGwobV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDIpKTsKKyAgICAgICAg
TFZhbHVlIHNldHRlciA9IGxvd0NlbGwobV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDMpKTsK
KyAgICAgICAgTFZhbHVlIGF0dHJpYnV0ZXMgPSBsb3dJbnQzMihtX2dyYXBoLnZhckFyZ0NoaWxk
KG1fbm9kZSwgNCkpOworICAgICAgICBFZGdlJiBwcm9wZXJ0eUVkZ2UgPSBtX2dyYXBoLnZhckFy
Z0NoaWxkKG1fbm9kZSwgMSk7CisgICAgICAgIHN3aXRjaCAocHJvcGVydHlFZGdlLnVzZUtpbmQo
KSkgeworICAgICAgICBjYXNlIFN0cmluZ1VzZTogeworICAgICAgICAgICAgTFZhbHVlIHByb3Bl
cnR5ID0gbG93U3RyaW5nKHByb3BlcnR5RWRnZSk7CisgICAgICAgICAgICB2bUNhbGwoVm9pZCwg
bV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkRlZmluZUFjY2Vzc29yUHJvcGVydHlTdHJpbmcpLCBt
X2NhbGxGcmFtZSwgYmFzZSwgcHJvcGVydHksIGdldHRlciwgc2V0dGVyLCBhdHRyaWJ1dGVzKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgU3RyaW5nSWRlbnRV
c2U6IHsKKyAgICAgICAgICAgIExWYWx1ZSBwcm9wZXJ0eSA9IGxvd1N0cmluZ0lkZW50KHByb3Bl
cnR5RWRnZSk7CisgICAgICAgICAgICB2bUNhbGwoVm9pZCwgbV9vdXQub3BlcmF0aW9uKG9wZXJh
dGlvbkRlZmluZUFjY2Vzc29yUHJvcGVydHlTdHJpbmdJZGVudCksIG1fY2FsbEZyYW1lLCBiYXNl
LCBwcm9wZXJ0eSwgZ2V0dGVyLCBzZXR0ZXIsIGF0dHJpYnV0ZXMpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBTeW1ib2xVc2U6IHsKKyAgICAgICAgICAgIExW
YWx1ZSBwcm9wZXJ0eSA9IGxvd1N5bWJvbChwcm9wZXJ0eUVkZ2UpOworICAgICAgICAgICAgdm1D
YWxsKFZvaWQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25EZWZpbmVBY2Nlc3NvclByb3BlcnR5
U3ltYm9sKSwgbV9jYWxsRnJhbWUsIGJhc2UsIHByb3BlcnR5LCBnZXR0ZXIsIHNldHRlciwgYXR0
cmlidXRlcyk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFVu
dHlwZWRVc2U6IHsKKyAgICAgICAgICAgIExWYWx1ZSBwcm9wZXJ0eSA9IGxvd0pTVmFsdWUocHJv
cGVydHlFZGdlKTsKKyAgICAgICAgICAgIHZtQ2FsbChWb2lkLCBtX291dC5vcGVyYXRpb24ob3Bl
cmF0aW9uRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eSksIG1fY2FsbEZyYW1lLCBiYXNlLCBwcm9wZXJ0
eSwgZ2V0dGVyLCBzZXR0ZXIsIGF0dHJpYnV0ZXMpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgIH0KKyAgICB9CiAgICAgCiAgICAgdm9pZCBjb21waWxlUHV0QnlJ
ZCgpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhl
bHBlcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuY3BwCmlu
ZGV4IDc1ZDE1YTYyM2M3MmM0NGFkYzRhNGI5YzEzZjg1ODZmMjcyMjZiODUuLjNjM2RmNjE4Zjk5
ZmViOTQxNTQ0MDA5OTg1NWRlMWZiYWY1Y2I5ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0NDYWxsSGVscGVycy5jcHAKQEAgLTY4LDEwNyArNjgsNiBAQCB2b2lkIENDYWxsSGVscGVy
czo6ZW5zdXJlU2hhZG93Q2hpY2tlblBhY2tldChHUFJSZWcgc2hhZG93UGFja2V0LCBHUFJSZWcg
c2NyYXRjaAogICAgIHN0b3JlUHRyKHNjcmF0Y2gyLCBBZGRyZXNzKHNjcmF0Y2gxTm9uQXJnR1BS
KSk7CiB9CiAKLSNpZiBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTID49IDQKLXZvaWQgQ0Nh
bGxIZWxwZXJzOjpzZXR1cEZvdXJTdHViQXJnc0dQUihHUFJSZWcgZGVzdEEsIEdQUlJlZyBkZXN0
QiwgR1BSUmVnIGRlc3RDLCBHUFJSZWcgZGVzdEQsIEdQUlJlZyBzcmNBLCBHUFJSZWcgc3JjQiwg
R1BSUmVnIHNyY0MsIEdQUlJlZyBzcmNEKQotewotICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7
Ci0gICAgICAgIFJlZ2lzdGVyU2V0IGRlc3RpbmF0aW9ucyhkZXN0QSwgZGVzdEIsIGRlc3RDLCBk
ZXN0RCk7Ci0gICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoZGVzdGluYXRpb25zLm51bWJlck9m
U2V0R1BScygpID09IDQsICJEZXN0aW5hdGlvbnMgc2hvdWxkIG5vdCBiZSBhbGlhc2VkLiIpOwot
ICAgIH0KLQotICAgIHR5cGVkZWYgc3RkOjpwYWlyPEdQUlJlZywgR1BSUmVnPiBSZWdQYWlyOwot
ICAgIFZlY3RvcjxSZWdQYWlyLCA0PiBwYWlyczsKLQotICAgIGlmIChzcmNBICE9IGRlc3RBKQot
ICAgICAgICBwYWlycy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoc3JjQSwgZGVzdEEpKTsKLSAgICBp
ZiAoc3JjQiAhPSBkZXN0QikKLSAgICAgICAgcGFpcnMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKHNy
Y0IsIGRlc3RCKSk7Ci0gICAgaWYgKHNyY0MgIT0gZGVzdEMpCi0gICAgICAgIHBhaXJzLmFwcGVu
ZChzdGQ6Om1ha2VfcGFpcihzcmNDLCBkZXN0QykpOwotICAgIGlmIChzcmNEICE9IGRlc3REKQot
ICAgICAgICBwYWlycy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoc3JjRCwgZGVzdEQpKTsKLQotCi0j
aWYgIUFTU0VSVF9ESVNBQkxFRAotICAgIGF1dG8gbnVtVW5pcXVlU291cmNlcyA9IFsmXSAoKSAt
PiB1bnNpZ25lZCB7Ci0gICAgICAgIFJlZ2lzdGVyU2V0IHNldDsKLSAgICAgICAgZm9yIChhdXRv
JiBwYWlyIDogcGFpcnMpIHsKLSAgICAgICAgICAgIEdQUlJlZyBzb3VyY2UgPSBwYWlyLmZpcnN0
OwotICAgICAgICAgICAgc2V0LnNldChzb3VyY2UpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVy
biBzZXQubnVtYmVyT2ZTZXRHUFJzKCk7Ci0gICAgfTsKLQotICAgIGF1dG8gbnVtVW5pcXVlRGVz
dHMgPSBbJl0gKCkgLT4gdW5zaWduZWQgewotICAgICAgICBSZWdpc3RlclNldCBzZXQ7Ci0gICAg
ICAgIGZvciAoYXV0byYgcGFpciA6IHBhaXJzKSB7Ci0gICAgICAgICAgICBHUFJSZWcgZGVzdCA9
IHBhaXIuc2Vjb25kOwotICAgICAgICAgICAgc2V0LnNldChkZXN0KTsKLSAgICAgICAgfQotICAg
ICAgICByZXR1cm4gc2V0Lm51bWJlck9mU2V0R1BScygpOwotICAgIH07Ci0jZW5kaWYKLQotICAg
IHdoaWxlIChwYWlycy5zaXplKCkpIHsKLSAgICAgICAgUmVnaXN0ZXJTZXQgZnJlZURlc3RpbmF0
aW9uczsKLSAgICAgICAgZm9yIChhdXRvJiBwYWlyIDogcGFpcnMpIHsKLSAgICAgICAgICAgIEdQ
UlJlZyBkZXN0ID0gcGFpci5zZWNvbmQ7Ci0gICAgICAgICAgICBmcmVlRGVzdGluYXRpb25zLnNl
dChkZXN0KTsKLSAgICAgICAgfQotICAgICAgICBmb3IgKGF1dG8mIHBhaXIgOiBwYWlycykgewot
ICAgICAgICAgICAgR1BSUmVnIHNvdXJjZSA9IHBhaXIuZmlyc3Q7Ci0gICAgICAgICAgICBmcmVl
RGVzdGluYXRpb25zLmNsZWFyKHNvdXJjZSk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoZnJl
ZURlc3RpbmF0aW9ucy5udW1iZXJPZlNldEdQUnMoKSkgewotICAgICAgICAgICAgYm9vbCBtYWRl
TW92ZSA9IGZhbHNlOwotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBhaXJz
LnNpemUoKTsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgYXV0byYgcGFpciA9IHBhaXJzW2ldOwot
ICAgICAgICAgICAgICAgIEdQUlJlZyBzb3VyY2UgPSBwYWlyLmZpcnN0OwotICAgICAgICAgICAg
ICAgIEdQUlJlZyBkZXN0ID0gcGFpci5zZWNvbmQ7Ci0gICAgICAgICAgICAgICAgaWYgKGZyZWVE
ZXN0aW5hdGlvbnMuZ2V0KGRlc3QpKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1vdmUoc291cmNl
LCBkZXN0KTsKLSAgICAgICAgICAgICAgICAgICAgcGFpcnMucmVtb3ZlKGkpOwotICAgICAgICAg
ICAgICAgICAgICBtYWRlTW92ZSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIEFTU0VSVF9VTlVT
RUQobWFkZU1vdmUsIG1hZGVNb3ZlKTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9
Ci0KLSAgICAgICAgQVNTRVJUKG51bVVuaXF1ZURlc3RzKCkgPT0gbnVtVW5pcXVlU291cmNlcygp
KTsKLSAgICAgICAgQVNTRVJUKG51bVVuaXF1ZURlc3RzKCkgPT0gcGFpcnMuc2l6ZSgpKTsKLSAg
ICAgICAgLy8gVGhlIHNldCBvZiBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIHJlZ2lzdGVycyBhcmUg
ZXF1aXZhbGVudCBzZXRzLiBUaGlzIG1lYW5zIHdlIGRvbid0IGhhdmUKLSAgICAgICAgLy8gYW55
IGZyZWUgZGVzdGluYXRpb24gcmVnaXN0ZXJzIHRoYXQgd29uJ3QgYWxzbyBjbG9iYmVyIGEgc291
cmNlLiBXZSBnZXQgYXJvdW5kIHRoaXMgYnkKLSAgICAgICAgLy8gZXhjaGFuZ2luZyByZWdpc3Rl
cnMuCi0KLSAgICAgICAgR1BSUmVnIHNvdXJjZSA9IHBhaXJzWzBdLmZpcnN0OwotICAgICAgICBH
UFJSZWcgZGVzdCA9IHBhaXJzWzBdLnNlY29uZDsKLSAgICAgICAgc3dhcChzb3VyY2UsIGRlc3Qp
OwotICAgICAgICBwYWlycy5yZW1vdmUoMCk7Ci0KLSAgICAgICAgR1BSUmVnIG5ld1NvdXJjZSA9
IHNvdXJjZTsKLSAgICAgICAgZm9yIChhdXRvJiBwYWlyIDogcGFpcnMpIHsKLSAgICAgICAgICAg
IEdQUlJlZyBzb3VyY2UgPSBwYWlyLmZpcnN0OwotICAgICAgICAgICAgaWYgKHNvdXJjZSA9PSBk
ZXN0KSB7Ci0gICAgICAgICAgICAgICAgcGFpci5maXJzdCA9IG5ld1NvdXJjZTsKLSAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIC8vIFdl
IG1heSBoYXZlIGludHJvZHVjZWQgcGFpcnMgdGhhdCBoYXZlIHRoZSBzYW1lIHNvdXJjZSBhbmQg
ZGVzdGluYXRpb24uIFJlbW92ZSB0aG9zZSBub3cuCi0gICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBwYWlycy5zaXplKCk7IGkrKykgewotICAgICAgICAgICAgYXV0byYgcGFpciA9IHBh
aXJzW2ldOwotICAgICAgICAgICAgaWYgKHBhaXIuZmlyc3QgPT0gcGFpci5zZWNvbmQpIHsKLSAg
ICAgICAgICAgICAgICBwYWlycy5yZW1vdmUoaSk7Ci0gICAgICAgICAgICAgICAgaS0tOwotICAg
ICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotfQotI2VuZGlmIC8vIE5VTUJFUl9PRl9BUkdV
TUVOVF9SRUdJU1RFUlMgPj0gNAotCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEVO
QUJMRShKSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVs
cGVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAppbmRleCA3
OTQ1NDZiMGJkMjdhOTljMGMxOTg5YmUyZTQxMzE0MzRkYTQ4ZmFlLi5lYThlY2RlYTI5Mjg4Yjcw
MTZjYzRlODQyNzNmZTMyOGQ4NWU2NzgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0NDYWxsSGVscGVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0Nh
bGxIZWxwZXJzLmgKQEAgLTk4Nyw3ICs5ODcsMTQgQEAgY2xhc3MgQ0NhbGxIZWxwZXJzIDogcHVi
bGljIEFzc2VtYmx5SGVscGVycyB7CiAgICAgICAgICAgICBzd2FwKGRlc3RCLCBkZXN0Qyk7CiAg
ICAgfQogCi0gICAgdm9pZCBzZXR1cEZvdXJTdHViQXJnc0dQUihHUFJSZWcgZGVzdEEsIEdQUlJl
ZyBkZXN0QiwgR1BSUmVnIGRlc3RDLCBHUFJSZWcgZGVzdEQsIEdQUlJlZyBzcmNBLCBHUFJSZWcg
c3JjQiwgR1BSUmVnIHNyY0MsIEdQUlJlZyBzcmNEKTsKKyAgICB2b2lkIHNldHVwRm91clN0dWJB
cmdzR1BSKEdQUlJlZyBkZXN0QSwgR1BSUmVnIGRlc3RCLCBHUFJSZWcgZGVzdEMsIEdQUlJlZyBk
ZXN0RCwgR1BSUmVnIHNyY0EsIEdQUlJlZyBzcmNCLCBHUFJSZWcgc3JjQywgR1BSUmVnIHNyY0Qp
CisgICAgeworICAgICAgICBzZXR1cFN0dWJBcmdzR1BSPDQ+KHsgeyBkZXN0QSwgZGVzdEIsIGRl
c3RDLCBkZXN0RCB9IH0sIHsgeyBzcmNBLCBzcmNCLCBzcmNDLCBzcmNEIH0gfSk7CisgICAgfQor
ICAgIHZvaWQgc2V0dXBGaXZlU3R1YkFyZ3NHUFIoR1BSUmVnIGRlc3RBLCBHUFJSZWcgZGVzdEIs
IEdQUlJlZyBkZXN0QywgR1BSUmVnIGRlc3RELCBHUFJSZWcgZGVzdEUsIEdQUlJlZyBzcmNBLCBH
UFJSZWcgc3JjQiwgR1BSUmVnIHNyY0MsIEdQUlJlZyBzcmNELCBHUFJSZWcgc3JjRSkKKyAgICB7
CisgICAgICAgIHNldHVwU3R1YkFyZ3NHUFI8NT4oeyB7IGRlc3RBLCBkZXN0QiwgZGVzdEMsIGRl
c3RELCBkZXN0RSB9IH0sIHsgeyBzcmNBLCBzcmNCLCBzcmNDLCBzcmNELCBzcmNFIH0gfSk7Cisg
ICAgfQogCiAjaWYgQ1BVKFg4Nl82NCkgfHwgQ1BVKEFSTTY0KQogICAgIHRlbXBsYXRlPEZQUlJl
ZyBkZXN0QSwgRlBSUmVnIGRlc3RCPgpAQCAtMjE4NCw2ICsyMTkxLDEyIEBAIGNsYXNzIENDYWxs
SGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewogICAgICAgICBtb3ZlKEdQUkluZm86
OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwogICAgIH0KIAorICAg
IEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFy
ZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVnIGFyZzQsIEdQUlJlZyBhcmc1KQor
ICAgIHsKKyAgICAgICAgc2V0dXBGaXZlU3R1YkFyZ3NHUFIoR1BSSW5mbzo6YXJndW1lbnRHUFIx
LCBHUFJJbmZvOjphcmd1bWVudEdQUjIsIEdQUkluZm86OmFyZ3VtZW50R1BSMywgR1BSSW5mbzo6
YXJndW1lbnRHUFI0LCBHUFJJbmZvOjphcmd1bWVudEdQUjUsIGFyZzEsIGFyZzIsIGFyZzMsIGFy
ZzQsIGFyZzUpOworICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjApOworICAgIH0KKwogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIFRydXN0ZWRJbW1QdHIgYXJnMiwg
R1BSUmVnIGFyZzMsIEdQUlJlZyBhcmc0KQogICAgIHsKICAgICAgICAgc2V0dXBTdHViQXJndW1l
bnRzMTM0KGFyZzEsIGFyZzMsIGFyZzQpOwpAQCAtMjQ3Miw2ICsyNDg1LDEwNSBAQCBjbGFzcyBD
Q2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJzIHsKICAgICAgICAgLy8gUmVhZHkg
Zm9yIGEganVtcCEKICAgICAgICAgbW92ZShuZXdGcmFtZVBvaW50ZXIsIHN0YWNrUG9pbnRlclJl
Z2lzdGVyKTsKICAgICB9CisKKyNpZiBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTID49IDQK
KyAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBOdW1iZXJPZlJlZ2lzdGVycz4KKyAgICB2b2lkIHNldHVw
U3R1YkFyZ3NHUFIoc3RkOjphcnJheTxHUFJSZWcsIE51bWJlck9mUmVnaXN0ZXJzPiBkZXN0aW5h
dGlvbnMsIHN0ZDo6YXJyYXk8R1BSUmVnLCBOdW1iZXJPZlJlZ2lzdGVycz4gc291cmNlcykKKyAg
ICB7CisgICAgICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7CisgICAgICAgICAgICBSZWdpc3Rl
clNldCBzZXQ7CisgICAgICAgICAgICBmb3IgKEdQUlJlZyBkZXN0IDogZGVzdGluYXRpb25zKQor
ICAgICAgICAgICAgICAgIHNldC5zZXQoZGVzdCk7CisgICAgICAgICAgICBBU1NFUlRfV0lUSF9N
RVNTQUdFKHNldC5udW1iZXJPZlNldEdQUnMoKSA9PSA0LCAiRGVzdGluYXRpb25zIHNob3VsZCBu
b3QgYmUgYWxpYXNlZC4iKTsKKyAgICAgICAgfQorCisgICAgICAgIHR5cGVkZWYgc3RkOjpwYWly
PEdQUlJlZywgR1BSUmVnPiBSZWdQYWlyOworICAgICAgICBWZWN0b3I8UmVnUGFpciwgTnVtYmVy
T2ZSZWdpc3RlcnM+IHBhaXJzOworCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBO
dW1iZXJPZlJlZ2lzdGVyczsgKytpKSB7CisgICAgICAgICAgICBpZiAoc291cmNlc1tpXSAhPSBk
ZXN0aW5hdGlvbnNbaV0pCisgICAgICAgICAgICAgICAgcGFpcnMuYXBwZW5kKHN0ZDo6bWFrZV9w
YWlyKHNvdXJjZXNbaV0sIGRlc3RpbmF0aW9uc1tpXSkpOworICAgICAgICB9CisKKyNpZiAhQVNT
RVJUX0RJU0FCTEVECisgICAgICAgIGF1dG8gbnVtVW5pcXVlU291cmNlcyA9IFsmXSAoKSAtPiB1
bnNpZ25lZCB7CisgICAgICAgICAgICBSZWdpc3RlclNldCBzZXQ7CisgICAgICAgICAgICBmb3Ig
KGF1dG8mIHBhaXIgOiBwYWlycykgeworICAgICAgICAgICAgICAgIEdQUlJlZyBzb3VyY2UgPSBw
YWlyLmZpcnN0OworICAgICAgICAgICAgICAgIHNldC5zZXQoc291cmNlKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIHJldHVybiBzZXQubnVtYmVyT2ZTZXRHUFJzKCk7CisgICAgICAgIH07
CisKKyAgICAgICAgYXV0byBudW1VbmlxdWVEZXN0cyA9IFsmXSAoKSAtPiB1bnNpZ25lZCB7Cisg
ICAgICAgICAgICBSZWdpc3RlclNldCBzZXQ7CisgICAgICAgICAgICBmb3IgKGF1dG8mIHBhaXIg
OiBwYWlycykgeworICAgICAgICAgICAgICAgIEdQUlJlZyBkZXN0ID0gcGFpci5zZWNvbmQ7Cisg
ICAgICAgICAgICAgICAgc2V0LnNldChkZXN0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IHJldHVybiBzZXQubnVtYmVyT2ZTZXRHUFJzKCk7CisgICAgICAgIH07CisjZW5kaWYKKworICAg
ICAgICB3aGlsZSAocGFpcnMuc2l6ZSgpKSB7CisgICAgICAgICAgICBSZWdpc3RlclNldCBmcmVl
RGVzdGluYXRpb25zOworICAgICAgICAgICAgZm9yIChhdXRvJiBwYWlyIDogcGFpcnMpIHsKKyAg
ICAgICAgICAgICAgICBHUFJSZWcgZGVzdCA9IHBhaXIuc2Vjb25kOworICAgICAgICAgICAgICAg
IGZyZWVEZXN0aW5hdGlvbnMuc2V0KGRlc3QpOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
Zm9yIChhdXRvJiBwYWlyIDogcGFpcnMpIHsKKyAgICAgICAgICAgICAgICBHUFJSZWcgc291cmNl
ID0gcGFpci5maXJzdDsKKyAgICAgICAgICAgICAgICBmcmVlRGVzdGluYXRpb25zLmNsZWFyKHNv
dXJjZSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChmcmVlRGVzdGluYXRpb25z
Lm51bWJlck9mU2V0R1BScygpKSB7CisgICAgICAgICAgICAgICAgYm9vbCBtYWRlTW92ZSA9IGZh
bHNlOworICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwYWlycy5zaXpl
KCk7IGkrKykgeworICAgICAgICAgICAgICAgICAgICBhdXRvJiBwYWlyID0gcGFpcnNbaV07Cisg
ICAgICAgICAgICAgICAgICAgIEdQUlJlZyBzb3VyY2UgPSBwYWlyLmZpcnN0OworICAgICAgICAg
ICAgICAgICAgICBHUFJSZWcgZGVzdCA9IHBhaXIuc2Vjb25kOworICAgICAgICAgICAgICAgICAg
ICBpZiAoZnJlZURlc3RpbmF0aW9ucy5nZXQoZGVzdCkpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIG1vdmUoc291cmNlLCBkZXN0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhaXJzLnJl
bW92ZShpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1hZGVNb3ZlID0gdHJ1ZTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQobWFkZU1vdmUsIG1hZGVN
b3ZlKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgQVNTRVJUKG51bVVuaXF1ZURlc3RzKCkgPT0gbnVtVW5pcXVlU291cmNlcygpKTsKKyAg
ICAgICAgICAgIEFTU0VSVChudW1VbmlxdWVEZXN0cygpID09IHBhaXJzLnNpemUoKSk7CisgICAg
ICAgICAgICAvLyBUaGUgc2V0IG9mIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gcmVnaXN0ZXJzIGFy
ZSBlcXVpdmFsZW50IHNldHMuIFRoaXMgbWVhbnMgd2UgZG9uJ3QgaGF2ZQorICAgICAgICAgICAg
Ly8gYW55IGZyZWUgZGVzdGluYXRpb24gcmVnaXN0ZXJzIHRoYXQgd29uJ3QgYWxzbyBjbG9iYmVy
IGEgc291cmNlLiBXZSBnZXQgYXJvdW5kIHRoaXMgYnkKKyAgICAgICAgICAgIC8vIGV4Y2hhbmdp
bmcgcmVnaXN0ZXJzLgorCisgICAgICAgICAgICBHUFJSZWcgc291cmNlID0gcGFpcnNbMF0uZmly
c3Q7CisgICAgICAgICAgICBHUFJSZWcgZGVzdCA9IHBhaXJzWzBdLnNlY29uZDsKKyAgICAgICAg
ICAgIHN3YXAoc291cmNlLCBkZXN0KTsKKyAgICAgICAgICAgIHBhaXJzLnJlbW92ZSgwKTsKKwor
ICAgICAgICAgICAgR1BSUmVnIG5ld1NvdXJjZSA9IHNvdXJjZTsKKyAgICAgICAgICAgIGZvciAo
YXV0byYgcGFpciA6IHBhaXJzKSB7CisgICAgICAgICAgICAgICAgR1BSUmVnIHNvdXJjZSA9IHBh
aXIuZmlyc3Q7CisgICAgICAgICAgICAgICAgaWYgKHNvdXJjZSA9PSBkZXN0KSB7CisgICAgICAg
ICAgICAgICAgICAgIHBhaXIuZmlyc3QgPSBuZXdTb3VyY2U7CisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
Ly8gV2UgbWF5IGhhdmUgaW50cm9kdWNlZCBwYWlycyB0aGF0IGhhdmUgdGhlIHNhbWUgc291cmNl
IGFuZCBkZXN0aW5hdGlvbi4gUmVtb3ZlIHRob3NlIG5vdy4KKyAgICAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBwYWlycy5zaXplKCk7IGkrKykgeworICAgICAgICAgICAgICAgIGF1
dG8mIHBhaXIgPSBwYWlyc1tpXTsKKyAgICAgICAgICAgICAgICBpZiAocGFpci5maXJzdCA9PSBw
YWlyLnNlY29uZCkgeworICAgICAgICAgICAgICAgICAgICBwYWlycy5yZW1vdmUoaSk7CisgICAg
ICAgICAgICAgICAgICAgIGktLTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICB9CisjZW5kaWYgLy8gTlVNQkVSX09GX0FSR1VNRU5UX1JFR0lTVEVSUyA+
PSA0CiAgICAgCiAgICAgLy8gVGhlc2Ugb3BlcmF0aW9ucyBjbG9iYmVyIGFsbCB2b2xhdGlsZSBy
ZWdpc3RlcnMuIFRoZXkgYXNzdW1lIHRoYXQgdGhlcmUgaXMgcm9vbSBvbiB0aGUgdG9wIG9mCiAg
ICAgLy8gc3RhY2sgdG8gbWFyc2hhbGwgY2FsbCBhcmd1bWVudHMuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5jcHAKaW5kZXggMWFiZTdjNDM0MTc0NjNmOTY5MTY1MjlhNmU2MTRlZGUwOWM3ZmQzOS4u
MjM3ZDE5YTRiMDgyZjFjYjBlMDJjMmVhNTc3Y2MxY2MzMTA3OTQzMSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmNwcApAQCAtMzIyLDYgKzMyMiw4IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGls
ZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9nZXR0ZXJfc2V0dGVyX2J5X2lk
KQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2dldHRlcl9ieV92YWwpCiAgICAgICAgIERFRklO
RV9PUChvcF9wdXRfc2V0dGVyX2J5X3ZhbCkKKyAgICAgICAgREVGSU5FX09QKG9wX2RlZmluZV9k
YXRhX3Byb3BlcnR5KQorICAgICAgICBERUZJTkVfT1Aob3BfZGVmaW5lX2FjY2Vzc29yX3Byb3Bl
cnR5KQogCiAgICAgICAgIERFRklORV9PUChvcF9yZXQpCiAgICAgICAgIERFRklORV9PUChvcF9y
c2hpZnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCBhMTRhODU2YTA3YmQyNWFhZDdjY2Uw
ZDNiODQwZWUyNzNlZWNkZmM1Li40NTFhMjBkNTY0MTM4ZWNiZDc1YzRkZDMyYWQ0ZGNmYTY0NjI2
NjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTU2Nyw2ICs1NjcsOCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9nZXR0ZXJfc2V0dGVyX2J5X2lkKElu
c3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfZ2V0dGVyX2J5X3ZhbChJbnN0
cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X3NldHRlcl9ieV92YWwoSW5zdHJ1
Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2RlZmluZV9kYXRhX3Byb3BlcnR5KEluc3Ry
dWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9kZWZpbmVfYWNjZXNzb3JfcHJvcGVydHko
SW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3JldChJbnN0cnVjdGlvbiopOwog
ICAgICAgICB2b2lkIGVtaXRfb3BfcnNoaWZ0KEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQg
ZW1pdF9vcF9zZXRfZnVuY3Rpb25fbmFtZShJbnN0cnVjdGlvbiopOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAppbmRleCA5MzVjNGZhYjE5ZDJkNzc5YTUwZWI0ZTc3
ZjM1MTg2MWIyMTFhM2Y2Li40N2ZlOTU3M2ZhZDc1NmEyNjI2NzQ4MWZkNmFjZWFiODZlOTNlNTI4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaApAQCAtNTksNiAr
NTksNyBAQCBjbGFzcyBSZWdFeHBPYmplY3Q7CiBjbGFzcyBSZWdpc3RlcjsKIGNsYXNzIFN0cnVj
dHVyZTsKIGNsYXNzIFN0cnVjdHVyZVN0dWJJbmZvOworY2xhc3MgU3ltYm9sOwogY2xhc3MgU3lt
Ym9sVGFibGU7CiBjbGFzcyBXYXRjaHBvaW50U2V0OwogCkBAIC0xMTEsNiArMTEyLDcgQEAgdHlw
ZWRlZiBjaGFyKiBVbnVzZWRQdHI7CiAgICAgU3NpOiBTdHJ1Y3R1cmVTdHViSW5mbyoKICAgICBT
dDogU3RydWN0dXJlKgogICAgIFN5bXRhYjogU3ltYm9sVGFibGUqCisgICAgU3ltOiBTeW1ib2wq
CiAgICAgVDogU3RyaW5nSW1wbCoKICAgICBWOiB2b2lkCiAgICAgVm06IFZNKgpAQCAtMjY5LDYg
KzI3MSwxNCBAQCB0eXBlZGVmIHZvaWQgKEpJVF9PUEVSQVRJT04gKlZfSklUT3BlcmF0aW9uX0VQ
WkopKEV4ZWNTdGF0ZSosIHZvaWQqLCBpbnQzMl90LCBFbgogdHlwZWRlZiB2b2lkIChKSVRfT1BF
UkFUSU9OICpWX0pJVE9wZXJhdGlvbl9FU3NpSkpJKShFeGVjU3RhdGUqLCBTdHJ1Y3R1cmVTdHVi
SW5mbyosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgVW5pcXVlZFN0cmluZ0ltcGwq
KTsKIHR5cGVkZWYgdm9pZCAoSklUX09QRVJBVElPTiAqVl9KSVRPcGVyYXRpb25fRUpKSkkpKEV4
ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUs
IFVuaXF1ZWRTdHJpbmdJbXBsKik7CiB0eXBlZGVmIHZvaWQgKEpJVF9PUEVSQVRJT04gKlZfSklU
T3BlcmF0aW9uX0VKSkpKKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSk7Cit0eXBlZGVmIHZvaWQgKEpJVF9P
UEVSQVRJT04gKlZfSklUT3BlcmF0aW9uX0VPSkpaKShFeGVjU3RhdGUqLCBKU09iamVjdCosIEVu
Y29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgaW50MzJfdCk7Cit0eXBlZGVmIHZvaWQgKEpJ
VF9PUEVSQVRJT04gKlZfSklUT3BlcmF0aW9uX0VPSnNzSlopKEV4ZWNTdGF0ZSosIEpTT2JqZWN0
KiwgSlNTdHJpbmcqLCBFbmNvZGVkSlNWYWx1ZSwgaW50MzJfdCk7Cit0eXBlZGVmIHZvaWQgKEpJ
VF9PUEVSQVRJT04gKlZfSklUT3BlcmF0aW9uX0VPSUpaKShFeGVjU3RhdGUqLCBKU09iamVjdCos
IFVuaXF1ZWRTdHJpbmdJbXBsKiwgRW5jb2RlZEpTVmFsdWUsIGludDMyX3QpOwordHlwZWRlZiB2
b2lkIChKSVRfT1BFUkFUSU9OICpWX0pJVE9wZXJhdGlvbl9FT1N5bUpaKShFeGVjU3RhdGUqLCBK
U09iamVjdCosIFN5bWJvbCosIEVuY29kZWRKU1ZhbHVlLCBpbnQzMl90KTsKK3R5cGVkZWYgdm9p
ZCAoSklUX09QRVJBVElPTiAqVl9KSVRPcGVyYXRpb25fRU9KT09aKShFeGVjU3RhdGUqLCBKU09i
amVjdCosIEVuY29kZWRKU1ZhbHVlLCBKU09iamVjdCosIEpTT2JqZWN0KiwgaW50MzJfdCk7Cit0
eXBlZGVmIHZvaWQgKEpJVF9PUEVSQVRJT04gKlZfSklUT3BlcmF0aW9uX0VPSnNzT09aKShFeGVj
U3RhdGUqLCBKU09iamVjdCosIEpTU3RyaW5nKiwgSlNPYmplY3QqLCBKU09iamVjdCosIGludDMy
X3QpOwordHlwZWRlZiB2b2lkIChKSVRfT1BFUkFUSU9OICpWX0pJVE9wZXJhdGlvbl9FT0lPT1op
KEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgVW5pcXVlZFN0cmluZ0ltcGwqLCBKU09iamVjdCosIEpT
T2JqZWN0KiwgaW50MzJfdCk7Cit0eXBlZGVmIHZvaWQgKEpJVF9PUEVSQVRJT04gKlZfSklUT3Bl
cmF0aW9uX0VPU3ltT09aKShFeGVjU3RhdGUqLCBKU09iamVjdCosIFN5bWJvbCosIEpTT2JqZWN0
KiwgSlNPYmplY3QqLCBpbnQzMl90KTsKIHR5cGVkZWYgdm9pZCAoSklUX09QRVJBVElPTiAqVl9K
SVRPcGVyYXRpb25fRVdzKShFeGVjU3RhdGUqLCBXYXRjaHBvaW50U2V0Kik7CiB0eXBlZGVmIHZv
aWQgKEpJVF9PUEVSQVRJT04gKlZfSklUT3BlcmF0aW9uX0VaKShFeGVjU3RhdGUqLCBpbnQzMl90
KTsKIHR5cGVkZWYgdm9pZCAoSklUX09QRVJBVElPTiAqVl9KSVRPcGVyYXRpb25fRVpKKShFeGVj
U3RhdGUqLCBpbnQzMl90LCBFbmNvZGVkSlNWYWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCmluZGV4IDU2MDI2OGI1YzMxNDc4NDEzNjA3
MmRkZDgwMDc3NzgwZjMzNzhiMmIuLjlkNGZkMWFhNmFmNjRiNDhkN2JlMWIzZWI0NjkzMGI1M2Yz
NWY0YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlB
Y2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nl
c3MuY3BwCkBAIC0xNzczLDYgKzE3NzMsMTggQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRGbG9h
dFR5cGVkQXJyYXlQdXRCeVZhbChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLAogICAg
IHJldHVybiBzbG93Q2FzZXM7CiB9CiAKK3ZvaWQgSklUOjplbWl0X29wX2RlZmluZV9kYXRhX3By
b3BlcnR5KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgSklUU2xvd1Bh
dGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9k
ZWZpbmVfZGF0YV9wcm9wZXJ0eSk7CisgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKK30KKwordm9p
ZCBKSVQ6OmVtaXRfb3BfZGVmaW5lX2FjY2Vzc29yX3Byb3BlcnR5KEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlz
LCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9kZWZpbmVfYWNjZXNzb3JfcHJvcGVydHkp
OworICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAj
ZW5kaWYgLy8gRU5BQkxFKEpJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQppbmRleCAxMDAzN2FmNTZjZTZjN2YxYTkzZTUyZDJh
NzE3ZTI5NGUwMTA1ZjlhLi5jOWI4NDQzN2M2NTc0NTUzZTM4MGU1MjEyMjYxYWI5MjY5NmJlMzRk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlci5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIuYXNtCkBAIC0xNDU3LDYgKzE0NTcsMTggQEAgX2xsaW50X29wX3B1dF9zZXR0ZXJfYnlf
dmFsOgogICAgIGRpc3BhdGNoKDUpCiAKIAorX2xsaW50X29wX2RlZmluZV9kYXRhX3Byb3BlcnR5
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsT3Bjb2RlU2xvd1BhdGgoX3Nsb3dfcGF0
aF9kZWZpbmVfZGF0YV9wcm9wZXJ0eSkKKyAgICBkaXNwYXRjaCg1KQorCisKK19sbGludF9vcF9k
ZWZpbmVfYWNjZXNzb3JfcHJvcGVydHk6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxP
cGNvZGVTbG93UGF0aChfc2xvd19wYXRoX2RlZmluZV9hY2Nlc3Nvcl9wcm9wZXJ0eSkKKyAgICBk
aXNwYXRjaCg2KQorCisKIF9sbGludF9vcF9qdHJ1ZToKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAg
ICAganVtcFRydWVPckZhbHNlKApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vblNsb3dQYXRocy5jcHAKaW5kZXggY2FmODI2ZGMyYWNkYWI2ZDlhMzk1OGEwY2YwMzEx
NDM2MjNiYmEzZi4uZjI1ZWU4MTFhY2E5ZWNhNGE5NmRhOTBlNWUwYTk0MjViOTc0NThjMCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3Bw
CkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiQ2xvbmVkQXJndW1lbnRzLmgiCiAjaW5jbHVk
ZSAiQ29kZVByb2ZpbGluZy5oIgogI2luY2x1ZGUgIkNvbW1vblNsb3dQYXRoc0V4Y2VwdGlvbnMu
aCIKKyNpbmNsdWRlICJEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaCIKICNpbmNsdWRlICJEaXJl
Y3RBcmd1bWVudHMuaCIKICNpbmNsdWRlICJFcnJvci5oIgogI2luY2x1ZGUgIkVycm9ySGFuZGxp
bmdTY29wZS5oIgpAQCAtOTMwLDQgKzkzMSwzOSBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhf
cHV0X2J5X3ZhbF93aXRoX3RoaXMpCiAgICAgRU5EKCk7CiB9CiAKK1NMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9kZWZpbmVfZGF0YV9wcm9wZXJ0eSkKK3sKKyAgICBCRUdJTigpOworICAgIEpTT2Jq
ZWN0KiBiYXNlID0gYXNPYmplY3QoT1BfQygxKS5qc1ZhbHVlKCkpOworICAgIEpTVmFsdWUgcHJv
cGVydHkgPSBPUF9DKDIpLmpzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gT1BfQygzKS5q
c1ZhbHVlKCk7CisgICAgSlNWYWx1ZSBhdHRyaWJ1dGVzID0gT1BfQyg0KS5qc1ZhbHVlKCk7Cisg
ICAgQVNTRVJUKGF0dHJpYnV0ZXMuaXNJbnQzMigpKTsKKworICAgIGF1dG8gcHJvcGVydHlOYW1l
ID0gcHJvcGVydHkudG9Qcm9wZXJ0eUtleShleGVjKTsKKyAgICBDSEVDS19FWENFUFRJT04oKTsK
KyAgICBQcm9wZXJ0eURlc2NyaXB0b3IgZGVzY3JpcHRvciA9IHRvUHJvcGVydHlEZXNjcmlwdG9y
KHZhbHVlLCBqc1VuZGVmaW5lZCgpLCBqc1VuZGVmaW5lZCgpLCBEZWZpbmVQcm9wZXJ0eUF0dHJp
YnV0ZXMoYXR0cmlidXRlcy5hc0ludDMyKCkpKTsKKyAgICBBU1NFUlQoKGRlc2NyaXB0b3IuYXR0
cmlidXRlcygpICYgQWNjZXNzb3IpIHx8ICghZGVzY3JpcHRvci5pc0FjY2Vzc29yRGVzY3JpcHRv
cigpKSk7CisgICAgYmFzZS0+bWV0aG9kVGFibGUodm0pLT5kZWZpbmVPd25Qcm9wZXJ0eShiYXNl
LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHRydWUpOworICAgIEVORCgpOworfQor
CitTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZGVmaW5lX2FjY2Vzc29yX3Byb3BlcnR5KQorewor
ICAgIEJFR0lOKCk7CisgICAgSlNPYmplY3QqIGJhc2UgPSBhc09iamVjdChPUF9DKDEpLmpzVmFs
dWUoKSk7CisgICAgSlNWYWx1ZSBwcm9wZXJ0eSA9IE9QX0MoMikuanNWYWx1ZSgpOworICAgIEpT
VmFsdWUgZ2V0dGVyID0gT1BfQygzKS5qc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSBzZXR0ZXIgPSBP
UF9DKDQpLmpzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIGF0dHJpYnV0ZXMgPSBPUF9DKDUpLmpzVmFs
dWUoKTsKKyAgICBBU1NFUlQoYXR0cmlidXRlcy5pc0ludDMyKCkpOworCisgICAgYXV0byBwcm9w
ZXJ0eU5hbWUgPSBwcm9wZXJ0eS50b1Byb3BlcnR5S2V5KGV4ZWMpOworICAgIENIRUNLX0VYQ0VQ
VElPTigpOworICAgIFByb3BlcnR5RGVzY3JpcHRvciBkZXNjcmlwdG9yID0gdG9Qcm9wZXJ0eURl
c2NyaXB0b3IoanNVbmRlZmluZWQoKSwgZ2V0dGVyLCBzZXR0ZXIsIERlZmluZVByb3BlcnR5QXR0
cmlidXRlcyhhdHRyaWJ1dGVzLmFzSW50MzIoKSkpOworICAgIEFTU0VSVCgoZGVzY3JpcHRvci5h
dHRyaWJ1dGVzKCkgJiBBY2Nlc3NvcikgfHwgKCFkZXNjcmlwdG9yLmlzQWNjZXNzb3JEZXNjcmlw
dG9yKCkpKTsKKyAgICBiYXNlLT5tZXRob2RUYWJsZSh2bSktPmRlZmluZU93blByb3BlcnR5KGJh
c2UsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgdHJ1ZSk7CisgICAgRU5EKCk7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25TbG93UGF0aHMuaAppbmRleCA4ZWU1YmUzMWFkM2NlZWI2MTEwMzlmMjk4ZTdkYjM2
ZmI5NDlmZjk5Li40NzViNzdlMThmZTIyZDA2ODhhMjVlMWY1N2I4NGU0YzA4MmI4ZmNkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaApAQCAt
MjU3LDYgKzI1Nyw4IEBAIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZ2V0X2J5X2lk
X3dpdGhfdGhpcyk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2dldF9ieV92YWxf
d2l0aF90aGlzKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHV0X2J5X2lkX3dp
dGhfdGhpcyk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3B1dF9ieV92YWxfd2l0
aF90aGlzKTsKK1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZGVmaW5lX2RhdGFfcHJv
cGVydHkpOworU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9kZWZpbmVfYWNjZXNzb3Jf
cHJvcGVydHkpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9EZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4zZDhhMjQ4YjkxNjBjNDc2NGIxMGNhNDExZmIyZjJjNzVjYTk4MzYwCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGVmaW5lUHJvcGVydHlBdHRy
aWJ1dGVzLmgKQEAgLTAsMCArMSwxNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9UcmlTdGF0ZS5o
PgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzIHsK
K3B1YmxpYzoKKyAgICBzdGF0aWNfYXNzZXJ0KEZhbHNlVHJpU3RhdGUgPT0gMCwgIkZhbHNlVHJp
U3RhdGUgaXMgMC4iKTsKKyAgICBzdGF0aWNfYXNzZXJ0KFRydWVUcmlTdGF0ZSA9PSAxLCAiVHJ1
ZVRyaVN0YXRlIGlzIDEuIik7CisgICAgc3RhdGljX2Fzc2VydChNaXhlZFRyaVN0YXRlID09IDIs
ICJNaXhlZFRyaVN0YXRlIGlzIDIuIik7CisKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgQ29u
ZmlndXJhYmxlU2hpZnQgPSAwOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBFbnVtZXJhYmxl
U2hpZnQgPSAyOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBXcml0YWJsZVNoaWZ0ID0gNDsK
KyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgVmFsdWVTaGlmdCA9IDY7CisgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIEdldFNoaWZ0ID0gNzsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU2V0
U2hpZnQgPSA4OworCisgICAgRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzKCkKKyAgICAgICAgOiBt
X2F0dHJpYnV0ZXMoCisgICAgICAgICAgICAoTWl4ZWRUcmlTdGF0ZSA8PCBDb25maWd1cmFibGVT
aGlmdCkKKyAgICAgICAgICAgIHwgKE1peGVkVHJpU3RhdGUgPDwgRW51bWVyYWJsZVNoaWZ0KQor
ICAgICAgICAgICAgfCAoTWl4ZWRUcmlTdGF0ZSA8PCBXcml0YWJsZVNoaWZ0KQorICAgICAgICAg
ICAgfCAoMCA8PCBWYWx1ZVNoaWZ0KQorICAgICAgICAgICAgfCAoMCA8PCBHZXRTaGlmdCkKKyAg
ICAgICAgICAgIHwgKDAgPDwgU2V0U2hpZnQpKQorICAgIHsKKyAgICB9CisKKyAgICBleHBsaWNp
dCBEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXModW5zaWduZWQgYXR0cmlidXRlcykKKyAgICAgICAg
OiBtX2F0dHJpYnV0ZXMoYXR0cmlidXRlcykKKyAgICB7CisgICAgfQorCisgICAgdW5zaWduZWQg
cmF3UmVwcmVzZW50YXRpb24oKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYXR0cmli
dXRlczsKKyAgICB9CisKKyAgICBib29sIGhhc1ZhbHVlKCkKKyAgICB7CisgICAgICAgIHJldHVy
biBtX2F0dHJpYnV0ZXMgJiAoMGIxIDw8IFZhbHVlU2hpZnQpOworICAgIH0KKworICAgIHZvaWQg
c2V0VmFsdWUoKQorICAgIHsKKyAgICAgICAgbV9hdHRyaWJ1dGVzID0gbV9hdHRyaWJ1dGVzIHwg
KDBiMSA8PCBWYWx1ZVNoaWZ0KTsKKyAgICB9CisKKyAgICBib29sIGhhc0dldCgpCisgICAgewor
ICAgICAgICByZXR1cm4gbV9hdHRyaWJ1dGVzICYgKDBiMSA8PCBHZXRTaGlmdCk7CisgICAgfQor
CisgICAgdm9pZCBzZXRHZXQoKQorICAgIHsKKyAgICAgICAgbV9hdHRyaWJ1dGVzID0gbV9hdHRy
aWJ1dGVzIHwgKDBiMSA8PCBHZXRTaGlmdCk7CisgICAgfQorCisgICAgYm9vbCBoYXNTZXQoKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYXR0cmlidXRlcyAmICgwYjEgPDwgU2V0U2hpZnQpOwor
ICAgIH0KKworICAgIHZvaWQgc2V0U2V0KCkKKyAgICB7CisgICAgICAgIG1fYXR0cmlidXRlcyA9
IG1fYXR0cmlidXRlcyB8ICgwYjEgPDwgU2V0U2hpZnQpOworICAgIH0KKworICAgIFRyaVN0YXRl
IHdyaXRhYmxlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBleHRyYWN0VHJpU3RhdGUoV3JpdGFi
bGVTaGlmdCk7CisgICAgfQorCisgICAgVHJpU3RhdGUgY29uZmlndXJhYmxlKCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBleHRyYWN0VHJpU3RhdGUoQ29uZmlndXJhYmxlU2hpZnQpOworICAgIH0K
KworICAgIFRyaVN0YXRlIGVudW1lcmFibGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGV4dHJh
Y3RUcmlTdGF0ZShFbnVtZXJhYmxlU2hpZnQpOworICAgIH0KKworICAgIHZvaWQgc2V0V3JpdGFi
bGUoYm9vbCB2YWx1ZSkKKyAgICB7CisgICAgICAgIGZpbGxXaXRoVHJpU3RhdGUodmFsdWUgPyBU
cnVlVHJpU3RhdGUgOiBGYWxzZVRyaVN0YXRlLCBXcml0YWJsZVNoaWZ0KTsKKyAgICB9CisKKyAg
ICB2b2lkIHNldENvbmZpZ3VyYWJsZShib29sIHZhbHVlKQorICAgIHsKKyAgICAgICAgZmlsbFdp
dGhUcmlTdGF0ZSh2YWx1ZSA/IFRydWVUcmlTdGF0ZSA6IEZhbHNlVHJpU3RhdGUsIENvbmZpZ3Vy
YWJsZVNoaWZ0KTsKKyAgICB9CisKKyAgICB2b2lkIHNldEVudW1lcmFibGUoYm9vbCB2YWx1ZSkK
KyAgICB7CisgICAgICAgIGZpbGxXaXRoVHJpU3RhdGUodmFsdWUgPyBUcnVlVHJpU3RhdGUgOiBG
YWxzZVRyaVN0YXRlLCBFbnVtZXJhYmxlU2hpZnQpOworICAgIH0KKworcHJpdmF0ZToKKyAgICB2
b2lkIGZpbGxXaXRoVHJpU3RhdGUoVHJpU3RhdGUgc3RhdGUsIHVuc2lnbmVkIHNoaWZ0KQorICAg
IHsKKyAgICAgICAgdW5zaWduZWQgbWFzayA9IDBiMTEgPDwgc2hpZnQ7CisgICAgICAgIG1fYXR0
cmlidXRlcyA9IChtX2F0dHJpYnV0ZXMgJiB+bWFzaykgfCAoc3RhdGUgPDwgc2hpZnQpOworICAg
IH0KKworICAgIFRyaVN0YXRlIGV4dHJhY3RUcmlTdGF0ZSh1bnNpZ25lZCBzaGlmdCkKKyAgICB7
CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUcmlTdGF0ZT4oKG1fYXR0cmlidXRlcyA+PiBz
aGlmdCkgJiAwYjExKTsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBtX2F0dHJpYnV0ZXM7Cit9Owor
CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IDk3M2MyZTgxNjllYjhmYzVlYWVmNjQ2NzBiNDYx
MTM2MjFhNTU4YTAuLjVjOTRiOTI1Y2JlNjVlMTkyNDFkNDlhMjhmMWUxMWEwOWY2NzEyNzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAK
QEAgLTQwNCw3ICs0MDQsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2bSkKICAg
ICBtX2Z1bmN0aW9uUHJvdG9IYXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9uLnNldCh2bSwgdGhpcywg
aGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlvbik7CiAgICAgbV90aHJvd1R5cGVFcnJvckdldHRlclNl
dHRlci5pbml0TGF0ZXIoCiAgICAgICAgIFtdIChjb25zdCBJbml0aWFsaXplcjxHZXR0ZXJTZXR0
ZXI+JiBpbml0KSB7Ci0gICAgICAgICAgICBKU0Z1bmN0aW9uKiB0aHJvd2VyID0gSlNGdW5jdGlv
bjo6Y3JlYXRlKGluaXQudm0sIGluaXQub3duZXIsIDAsIFN0cmluZygpLCBnbG9iYWxGdW5jVGhy
b3dUeXBlRXJyb3IpOworICAgICAgICAgICAgSlNGdW5jdGlvbiogdGhyb3dlciA9IGluaXQub3du
ZXItPnRocm93VHlwZUVycm9yRnVuY3Rpb24oKTsKICAgICAgICAgICAgIEdldHRlclNldHRlciog
Z2V0dGVyU2V0dGVyID0gR2V0dGVyU2V0dGVyOjpjcmVhdGUoaW5pdC52bSwgaW5pdC5vd25lcik7
CiAgICAgICAgICAgICBnZXR0ZXJTZXR0ZXItPnNldEdldHRlcihpbml0LnZtLCBpbml0Lm93bmVy
LCB0aHJvd2VyKTsKICAgICAgICAgICAgIGdldHRlclNldHRlci0+c2V0U2V0dGVyKGluaXQudm0s
IGluaXQub3duZXIsIHRocm93ZXIpOwpAQCAtNTgxLDggKzU4MSw4IEBAIG1fICMjIHByb3Blck5h
bWUgIyMgU3RydWN0dXJlLnNldCh2bSwgdGhpcywgaW5zdGFuY2VUeXBlOjpjcmVhdGVTdHJ1Y3R1
cmUodm0sIHRoCiAgICAgT2JqZWN0Q29uc3RydWN0b3IqIG9iamVjdENvbnN0cnVjdG9yID0gT2Jq
ZWN0Q29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgdGhpcywgT2JqZWN0Q29uc3RydWN0b3I6OmNyZWF0
ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1fb2JqZWN0
UHJvdG90eXBlLmdldCgpKTsKICAgICBtX29iamVjdENvbnN0cnVjdG9yLnNldCh2bSwgdGhpcywg
b2JqZWN0Q29uc3RydWN0b3IpOwogCi0gICAgSlNGdW5jdGlvbiogZGVmaW5lUHJvcGVydHlGdW5j
dGlvbiA9IG1fb2JqZWN0Q29uc3RydWN0b3ItPmFkZERlZmluZVByb3BlcnR5KGV4ZWMsIHRoaXMp
OwotICAgIG1fZGVmaW5lUHJvcGVydHlGdW5jdGlvbi5zZXQodm0sIHRoaXMsIGRlZmluZVByb3Bl
cnR5RnVuY3Rpb24pOworICAgIEpTRnVuY3Rpb24qIHRocm93VHlwZUVycm9yRnVuY3Rpb24gPSBK
U0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDAsIFN0cmluZygpLCBnbG9iYWxGdW5jVGhyb3dU
eXBlRXJyb3IpOworICAgIG1fdGhyb3dUeXBlRXJyb3JGdW5jdGlvbi5zZXQodm0sIHRoaXMsIHRo
cm93VHlwZUVycm9yRnVuY3Rpb24pOwogCiAgICAgSlNDZWxsKiBmdW5jdGlvbkNvbnN0cnVjdG9y
ID0gRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBGdW5jdGlvbkNvbnN0cnVjdG9yOjpj
cmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBtX2Z1
bmN0aW9uUHJvdG90eXBlLmdldCgpKTsKICAgICBBcnJheUNvbnN0cnVjdG9yKiBhcnJheUNvbnN0
cnVjdG9yID0gQXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCB0aGlzLCBBcnJheUNvbnN0cnVj
dG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkp
LCBtX2FycmF5UHJvdG90eXBlLmdldCgpLCBtX3NwZWNpZXNHZXR0ZXJTZXR0ZXIuZ2V0KCkpOwpA
QCAtODAzLDcgKzgwMyw3IEBAIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT4ganNOYW1lLCBsb3dlck5hbWUgIyMgQ29uc3RydWN0CiAgICAgbV9zcGVjaWFs
UG9pbnRlcnNbU3BlY2lhbDo6T2JqZWN0Q29uc3RydWN0b3JdID0gb2JqZWN0Q29uc3RydWN0b3I7
CiAgICAgbV9zcGVjaWFsUG9pbnRlcnNbU3BlY2lhbDo6QXJyYXlDb25zdHJ1Y3Rvcl0gPSBhcnJh
eUNvbnN0cnVjdG9yOwogCi0gICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oTGlua1RpbWVDb25zdGFudDo6RGVmaW5lUHJvcGVydHlGdW5jdGlvbildID0gbV9kZWZp
bmVQcm9wZXJ0eUZ1bmN0aW9uLmdldCgpOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OlRocm93VHlwZUVycm9yRnVuY3Rpb24p
XSA9IG1fdGhyb3dUeXBlRXJyb3JGdW5jdGlvbi5nZXQoKTsKIAogICAgIGlmIChVTkxJS0VMWShP
cHRpb25zOjp1c2VEb2xsYXJWTSgpKSkgewogICAgICAgICBKU0RvbGxhclZNUHJvdG90eXBlKiBk
b2xsYXJWTVByb3RvdHlwZSA9IEpTRG9sbGFyVk1Qcm90b3R5cGU6OmNyZWF0ZSh2bSwgdGhpcywg
SlNEb2xsYXJWTVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX29iamVjdFBy
b3RvdHlwZS5nZXQoKSkpOwpAQCAtMTA2Niw3ICsxMDY2LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVj
dDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAg
IHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2V2YWxGdW5jdGlvbik7CiAgICAgdmlzaXRv
ci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fY2FsbEZ1bmN0aW9uKTsKICAgICB2aXNpdG9yLmFwcGVu
ZCgmdGhpc09iamVjdC0+bV9hcHBseUZ1bmN0aW9uKTsKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhp
c09iamVjdC0+bV9kZWZpbmVQcm9wZXJ0eUZ1bmN0aW9uKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgm
dGhpc09iamVjdC0+bV90aHJvd1R5cGVFcnJvckZ1bmN0aW9uKTsKICAgICB0aGlzT2JqZWN0LT5t
X2FycmF5UHJvdG9Ub1N0cmluZ0Z1bmN0aW9uLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmpl
Y3QtPm1fYXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNP
YmplY3QtPm1faW5pdGlhbGl6ZVByb21pc2VGdW5jdGlvbi52aXNpdCh2aXNpdG9yKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IDBkZWFk
MmJmODRiNTU4NzExMmRjODdjZjk0OTYwNDE3OWQzMmU5NDguLjk0ZDdlMjMwNTM1ODc2OTFlYTI3
YWIwZGZkM2Y2NjZlMTljNzZiZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuaApAQCAtMjM0LDcgKzIzNCw3IEBAIGNsYXNzIEpTR2xvYmFsT2Jq
ZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIFdyaXRlQmFycmll
cjxKU0Z1bmN0aW9uPiBtX2V2YWxGdW5jdGlvbjsKICAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlv
bj4gbV9jYWxsRnVuY3Rpb247CiAgICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1fYXBwbHlG
dW5jdGlvbjsKLSAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9kZWZpbmVQcm9wZXJ0eUZ1
bmN0aW9uOworICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBtX3Rocm93VHlwZUVycm9yRnVu
Y3Rpb247CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBKU0Z1bmN0aW9uPiBtX2Fy
cmF5UHJvdG9Ub1N0cmluZ0Z1bmN0aW9uOwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVj
dCwgSlNGdW5jdGlvbj4gbV9hcnJheVByb3RvVmFsdWVzRnVuY3Rpb247CiAgICAgTGF6eVByb3Bl
cnR5PEpTR2xvYmFsT2JqZWN0LCBKU0Z1bmN0aW9uPiBtX2luaXRpYWxpemVQcm9taXNlRnVuY3Rp
b247CkBAIC00NzksNyArNDc5LDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNT
ZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgSlNGdW5jdGlvbiogZXZhbEZ1bmN0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9ldmFsRnVuY3Rpb24uZ2V0KCk7IH0KICAgICBKU0Z1bmN0aW9uKiBj
YWxsRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2NhbGxGdW5jdGlvbi5nZXQoKTsgfQogICAg
IEpTRnVuY3Rpb24qIGFwcGx5RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2FwcGx5RnVuY3Rp
b24uZ2V0KCk7IH0KLSAgICBKU0Z1bmN0aW9uKiBkZWZpbmVQcm9wZXJ0eUZ1bmN0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9kZWZpbmVQcm9wZXJ0eUZ1bmN0aW9uLmdldCgpOyB9CisgICAgSlNGdW5j
dGlvbiogdGhyb3dUeXBlRXJyb3JGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdGhyb3dUeXBl
RXJyb3JGdW5jdGlvbi5nZXQoKTsgfQogICAgIEpTRnVuY3Rpb24qIGFycmF5UHJvdG9Ub1N0cmlu
Z0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9hcnJheVByb3RvVG9TdHJpbmdGdW5jdGlvbi5n
ZXQodGhpcyk7IH0KICAgICBKU0Z1bmN0aW9uKiBhcnJheVByb3RvVmFsdWVzRnVuY3Rpb24oKSBj
b25zdCB7IHJldHVybiBtX2FycmF5UHJvdG9WYWx1ZXNGdW5jdGlvbi5nZXQodGhpcyk7IH0KICAg
ICBKU0Z1bmN0aW9uKiBpbml0aWFsaXplUHJvbWlzZUZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV9pbml0aWFsaXplUHJvbWlzZUZ1bmN0aW9uLmdldCh0aGlzKTsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCmluZGV4IDc4MWZj
YmNlNTVjNzI1MjY4MjAyMTY3MmNlODlkYmE5YTUyMWY0Y2EuLjBmYTBjZTZkMGFmMWIzMDkxZTJm
NzI4ZDEwNzlhMzY5Y2RmMWZkOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKQEAgLTEwNywxNCArMTA3LDYgQEAgdm9pZCBP
YmplY3RDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBPYmoKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJ
VElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZXRPd25Qcm9wZXJ0eU5hbWVz
UHJpdmF0ZU5hbWUoKSwgb2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eU5hbWVzLCBEb250
RW51bSwgMSk7CiB9CiAKLUpTRnVuY3Rpb24qIE9iamVjdENvbnN0cnVjdG9yOjphZGREZWZpbmVQ
cm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCi17
Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBKU0Z1bmN0aW9uKiBkZWZpbmVQcm9wZXJ0
eUZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDMsIHZtLnBy
b3BlcnR5TmFtZXMtPmRlZmluZVByb3BlcnR5LnN0cmluZygpLCBvYmplY3RDb25zdHJ1Y3RvckRl
ZmluZVByb3BlcnR5KTsKLSAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJv
cGVydHlOYW1lcy0+ZGVmaW5lUHJvcGVydHksIGRlZmluZVByb3BlcnR5RnVuY3Rpb24sIERvbnRF
bnVtKTsKLSAgICByZXR1cm4gZGVmaW5lUHJvcGVydHlGdW5jdGlvbjsKLX0KLQogLy8gRVMgMTku
MS4xLjEgT2JqZWN0KFt2YWx1ZV0pCiBzdGF0aWMgQUxXQVlTX0lOTElORSBKU09iamVjdCogY29u
c3RydWN0T2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBuZXdUYXJnZXQpCiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuaAppbmRl
eCA4OWQ3NDRhMjc3NGNkNDc4ZTA4MjdmZTFmM2M0YmFhOWFlZjY0Y2Q5Li44ZmYyYzU1YWVjMjlk
OTUxY2NiNDQwN2ZhNWM2MjMxM2Y3ZjFkMGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmgKQEAgLTU0LDggKzU0LDYgQEAgY2xhc3Mg
T2JqZWN0Q29uc3RydWN0b3IgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CiAgICAgICAgIHJl
dHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJ
bmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKICAgICB9CiAKLSAgICBK
U0Z1bmN0aW9uKiBhZGREZWZpbmVQcm9wZXJ0eShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCop
OwotCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTR2xvYmFsT2Jq
ZWN0KiwgT2JqZWN0UHJvdG90eXBlKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUHJvcGVydHlEZXNjcmlwdG9yLmgKaW5kZXggYWE2MWVlYTQ5NWM0ZDFjOWQ1YTBm
ODI0NzlkMzI0NTM2NjU1YTM2NS4uZWU5NzFmNTUwMzY3NjczMjA5Nzk5ZTgxOWU1ZDQzMDFkZDU4
NDQ4NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlE
ZXNjcmlwdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlE
ZXNjcmlwdG9yLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgUHJvcGVydHlEZXNjcmlwdG9y
X2gKICNkZWZpbmUgUHJvcGVydHlEZXNjcmlwdG9yX2gKIAorI2luY2x1ZGUgIkRlZmluZVByb3Bl
cnR5QXR0cmlidXRlcy5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKIAogbmFtZXNwYWNlIEpT
QyB7CkBAIC05Myw2ICs5NCwzMiBAQCBjbGFzcyBQcm9wZXJ0eURlc2NyaXB0b3IgewogICAgIHVu
c2lnbmVkIG1fc2VlbkF0dHJpYnV0ZXM7CiB9OwogCitpbmxpbmUgUHJvcGVydHlEZXNjcmlwdG9y
IHRvUHJvcGVydHlEZXNjcmlwdG9yKEpTVmFsdWUgdmFsdWUsIEpTVmFsdWUgZ2V0dGVyLCBKU1Zh
bHVlIHNldHRlciwgRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMpCit7CisgICAg
Ly8gV2UgYXNzdW1lIHRoYXQgdmFsaWRhdGlvbiBpcyBhbHJlYWR5IGRvbmUuCisgICAgUHJvcGVy
dHlEZXNjcmlwdG9yIGRlc2M7CisKKyAgICBpZiAoYXR0cmlidXRlcy5lbnVtZXJhYmxlKCkgIT0g
TWl4ZWRUcmlTdGF0ZSkKKyAgICAgICAgZGVzYy5zZXRFbnVtZXJhYmxlKGF0dHJpYnV0ZXMuZW51
bWVyYWJsZSgpKTsKKworICAgIGlmIChhdHRyaWJ1dGVzLmNvbmZpZ3VyYWJsZSgpICE9IE1peGVk
VHJpU3RhdGUpCisgICAgICAgIGRlc2Muc2V0Q29uZmlndXJhYmxlKGF0dHJpYnV0ZXMuY29uZmln
dXJhYmxlKCkpOworCisgICAgaWYgKGF0dHJpYnV0ZXMuaGFzVmFsdWUoKSkKKyAgICAgICAgZGVz
Yy5zZXRWYWx1ZSh2YWx1ZSk7CisKKyAgICBpZiAoYXR0cmlidXRlcy53cml0YWJsZSgpICE9IE1p
eGVkVHJpU3RhdGUpCisgICAgICAgIGRlc2Muc2V0V3JpdGFibGUoYXR0cmlidXRlcy53cml0YWJs
ZSgpKTsKKworICAgIGlmIChhdHRyaWJ1dGVzLmhhc0dldCgpKQorICAgICAgICBkZXNjLnNldEdl
dHRlcihnZXR0ZXIpOworCisgICAgaWYgKGF0dHJpYnV0ZXMuaGFzU2V0KCkpCisgICAgICAgIGRl
c2Muc2V0U2V0dGVyKHNldHRlcik7CisKKyAgICByZXR1cm4gZGVzYzsKK30KKwogfQogCiAjZW5k
aWYK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>289984</attachid>
            <date>2016-09-27 11:15:51 -0700</date>
            <delta_ts>2016-10-03 18:03:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162108-20160928031252.patch</filename>
            <type>text/plain</type>
            <size>91048</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA2NDQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
NjIxZDM4MjdkNjJiN2JmNDkxMDM3NjFjNzFmOWQ4NjMyNDAyNGY5Li43ZDY2NjFiMTFlMWEwYmI0
YWM3Nzg2YjJhZTE1YjlkOTNiYTA4ODJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNTUgQEAKKzIwMTYtMDktMjcgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0pTQ10gQWRkIGEgbmV3IGJ5dGUgY29kZSBvcF9kZWZpbmVfcHJv
cGVydHkgaW5zdGVhZCBvZiBjYWxsaW5nIGRlZmluZVByb3BlcnR5CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjIxMDgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUbyBjb25zdHJ1Y3QgRVM2IGNsYXNzLCB3
ZSBlbWl0dGVkIGJ5dGVjb2RlIHRoYXQgcGVyZm9ybXMgdGhlIGZvbGxvd2luZyBvcGVyYXRpb25z
LgorCisgICAgICAgICAgICAxLiBjb25zdHJ1Y3QgYSBuZXcgb2JqZWN0CisgICAgICAgICAgICAy
LiBwdXQgImNvbmZpZ3VyYWJsZSIsICJlbnVtZXJhYmxlIiBldGMuIGZpZWxkcworICAgICAgICAg
ICAgMy4gY2FsbCAiZGVmaW5lUHJvcGVydHkiIGZ1bmN0aW9uCisKKyAgICAgICAgSG93ZXZlciwg
dGhpcyBoYXMgYSBwcm9ibGVtcy4gRXZlcnkgdGltZSB3ZSBkZWZpbmUgYSBjbGFzcyBtZXRob2Qs
IHdlIG5lZWQgdG8gY3JlYXRlCisgICAgICAgIGEgbmV3IG9iamVjdCB0byByZXByZXNlbnQgcHJv
cGVydHkgZGVzY3JpcHRvci4gVGhpcyBjYW4gYmUgcmVtb3ZlZCBpZiB3ZSBjYW4gaW50cm9kdWNl
CisgICAgICAgIGEgc3BlY2lhbCBieXRlY29kZSBvciBzcGVjaWFsIGZ1bmN0aW9uLgorCisgICAg
ICAgIFRoaXMgcGF0Y2ggaW50cm9kdWNlcyBuZXcgYnl0ZWNvZGVzLCBvcF9kZWZpbmVfZGF0YV9w
cm9wZXJ0eSBhbmQgb3BfZGVmaW5lX2FjY2Vzc29yX3Byb3BlcnR5LgorICAgICAgICBJbnN0ZWFk
IG9mIHRha2luZyBhbiBvYmplY3QsIHRoZXkgdGFrZXMgc2V2ZXJhbCByZWdpc3RlcnMgdG8gYXZv
aWQgb2JqZWN0IGFsbG9jYXRpb25zLgorICAgICAgICBXZSdyZSBwbGFubmluZyB0byB1c2UgdGhp
cyBieXRlY29kZSB0byBpbXBsZW1lbnQgT2JqZWN0LmRlZmluZVByb3BlcnR5IGluIGJ1aWx0aW4g
SlMgbmV4dC4KKyAgICAgICAgVGhpcyBhbGxvd3MgdXMgdG8gbGV2ZXJhZ2Ugb2JqZWN0IGFsbG9j
YXRpb24gc2lua2luZy4gQW5kIGl0IGFsc28gZ2l2ZXMgdXMgYSBjaGFuY2UgdG8gdXNlCisgICAg
ICAgIGZhc3RlciA6OmdldCBhbmQgOjpoYXNQcm9wZXJ0eSBpbiBKUy4KKworICAgICAgICBPcmln
aW5hbGx5LCBJIGF0dGVtcHRlZCB0byBjcmVhdGUgb25lIGJ5dGVjb2RlLCBvcF9kZWZpbmVfcHJv
cGVydHkuIEhvd2V2ZXIsIGl0IHRha2VzIHRvbyBtdWNoCisgICAgICAgIGNoaWxkcmVuIGluIERG
RyBhbmQgdXNlcyBzbyBtdWNoIHJlZ2lzdGVycyBpbiBERkcuIFRoaXMgbGVhZHMgdHJpY2t5IHBy
b2dyYW0gaW4gMzJiaXQgcGxhdGZvcm1zLgorICAgICAgICBGdXJ0aGVybW9yZSwgaXQgZG9lcyBu
b3QgZml0IHRvIHRoZSBudW1iZXIgb2YgeDY0IGFyZ3VtZW50IHJlZ2lzdGVycy4gU28gaW5zdGVh
ZCwgd2UgaW50cm9kdWNlCisgICAgICAgIHR3byBieXRlY29kZXMuCisKKyAgICAgICAgQW5kIGZv
ciBvcF9kZWZpbmVfYWNjZXNzb3JfcHJvcGVydHksIHdlIHBlcmZvcm0gQ2VsbFVzZSBlZGdlIGZp
bHRlciB0byBnZXR0ZXIgYW5kIHNldHRlciBjaGlsZHJlbi4KKyAgICAgICAgVGhpcyBlZGdlIGZp
bHRlciBtYWtlcyB1cyBwb3NzaWJsZSB0byB1c2UgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYW5kIHJl
ZHVjZSB0aGUgbnVtYmVyIG9mIHVzZWQgcmVnaXN0ZXJzCisgICAgICAgIGluIGNvbXBhcmlzb24g
d2l0aCBKU1ZhbHVlT3BlcmFuZC4gVG8gbWFrZSBjaGlsZHJlbiBDZWxscyBldmVuIGlmIHdlIGRv
IG5vdCBzcGVjaWZ5IHNvbWUgYWNjZXNzb3JzIChmb3IKKyAgICAgICAgZXhhbXBsZSwgeyBnZXQ6
IGZ1bmMsIHNldDogbnVsbCB9IGNhc2UpLCB3ZSBmaWxsIHJlZ2lzdGVycyB3aXRoIHNwZWNpYWwg
dGhyb3dUeXBlRXJyb3JGdW5jdGlvbi4KKyAgICAgICAgVGhlIGF0dHJpYnV0ZXMgYml0c2V0IGtl
ZXAgaW5mb3JtYXRpb24gbGlrZSAiVGhpcyBwcm9wZXJ0eSBkZXNjcmlwdG9yIG9ubHkgaGFzIGdl
dHRlciBzbG90Ii4KKworICAgICAgICBJbiB0aGVzZSB0d28gYnl0ZWNvZGVzLCB3ZSB0YWtlIGF0
dHJpYnV0ZXMgKGNvbmZpZ3VyYWJsZSwgZW51bWVyYWJsZSwgd3JpdGFibGUsIGhhc0dldHRlciBl
dGMuKSBhcworICAgICAgICByZWdpc3RlciBpbnN0ZWFkIG9mIGVtYmVkZGluZyBjb25zdGFudCBp
bnQgdmFsdWUgYmVjYXVzZSB3ZSB3aWxsIHVzZSB0aGVzZSBieXRlY29kZXMgdG8gaW1wbGVtZW50
CisgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSBuZXh0LiBJbiBPYmplY3QuZGVmaW5lUHJv
cGVydHkgY2FzZSwgYW4gYXR0cmlidXRlcyBhcmUgbm90IHN0YXRpY2FsbHkgZGVmaW5lZAorICAg
ICAgICBhdCBieXRlY29kZSBjb21waWxpbmcgdGltZS4KKworICAgICAgICBSdW4gRVM2U2FtcGxl
QmVuY2gvQWlyIDIwIHRpbWVzLiBUaGUgcmVzdWx0IHNob3dzIH4yJSBwZXJmb3JtYW5jZSBpbXBy
b3ZlbWVudC4KKworICAgICAgICBCYXNlbGluZToKKyAgICAgICAgICAgIGZpcnN0SXRlcmF0aW9u
OiAgICAgODQuMDUgbXMgKy0gNC4zNyBtcworICAgICAgICAgICAgYXZlcmFnZVdvcnN0Q2FzZTog
ICA0MC41NCBtcyArLSAyLjgxIG1zCisgICAgICAgICAgICBzdGVhZHlTdGF0ZTogICAgICAgIDMz
MTcuNDkgbXMgKy0gNDguMjUgbXMKKyAgICAgICAgICAgIHN1bW1hcnk6ICAgICAgICAgICAgMjIz
LjUxIG1zICstIDUuMDcgbXMKKworICAgICAgICBQYXRjaGVkOgorICAgICAgICAgICAgZmlyc3RJ
dGVyYXRpb246ICAgICA4NC40NiBtcyArLSA0LjIyIG1zCisgICAgICAgICAgICBhdmVyYWdlV29y
c3RDYXNlOiAgIDQxLjQ4IG1zICstIDIuMzMgbXMKKyAgICAgICAgICAgIHN0ZWFkeVN0YXRlOiAg
ICAgICAgMzI1My40OCBtcyArLSAyOS4zMSBtcworICAgICAgICAgICAgc3VtbWFyeTogICAgICAg
ICAgICAyMjQuNDAgbXMgKy0gNC43MiBtcworCisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3Qu
anNvbjoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVVzZURlZi5oOgorICAgICAgICAoSlND
Ojpjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZURl
ZnNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoK
KyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUpOgorICAgICAgICAqIGJ5dGVj
b2RlL1NwZWNpYWxQb2ludGVyLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRNb3ZlTGlu
a1RpbWVDb25zdGFudCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2Fs
bERlZmluZVByb3BlcnR5KToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuaDoKKyAgICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAg
KEpTQzo6UHJvcGVydHlMaXN0Tm9kZTo6ZW1pdFB1dENvbnN0YW50UHJvcGVydHkpOgorICAgICAg
ICAoSlNDOjpCaXR3aXNlTm90Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Q2xh
c3NFeHByTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6T2JqZWN0UGF0dGVybk5v
ZGU6OmJpbmRWYWx1ZSk6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxp
bmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0
YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToK
KyAgICAgICAgKiBkZmcvREZHQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpj
YXBhYmlsaXR5TGV2ZWwpOgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyaXplLmg6CisgICAgICAg
IChKU0M6OkRGRzo6Y2xvYmJlcml6ZSk6CisgICAgICAgICogZGZnL0RGR0RvZXNHQy5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6ZG9lc0dDKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAg
KiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6Cisg
ICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlv
blByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdTYWZlVG9FeGVjdXRlLmg6
CisgICAgICAgIChKU0M6OkRGRzo6c2FmZVRvRXhlY3V0ZSk6CisgICAgICAgICogZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZURlZmluZURhdGFQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVEZWZpbmVBY2Nlc3NvclByb3BlcnR5KToKKyAgICAgICAgKiBkZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FsbE9w
ZXJhdGlvbik6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcv
REZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExDYXBhYmlsaXRpZXMuY3BwOgorICAgICAg
ICAoSlNDOjpGVEw6OmNhbkNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMu
Y3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTm9kZSk6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVEZWZpbmVEYXRh
UHJvcGVydHkpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxl
RGVmaW5lQWNjZXNzb3JQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvQjM6OmNvbXBpbGVQdXRCeVZhbFdpdGhUaGlzKTogRGVsZXRlZC4KKyAgICAgICAgKiBqaXQv
Q0NhbGxIZWxwZXJzLmNwcDoKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpzZXR1cEZvdXJT
dHViQXJnc0dQUik6IERlbGV0ZWQuCisgICAgICAgICogaml0L0NDYWxsSGVscGVycy5oOgorICAg
ICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OnNldHVwRm91clN0dWJBcmdzR1BSKToKKyAgICAgICAg
KEpTQzo6Q0NhbGxIZWxwZXJzOjpzZXR1cEZpdmVTdHViQXJnc0dQUik6CisgICAgICAgIChKU0M6
OkNDYWxsSGVscGVyczo6c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKToKKyAgICAgICAgKEpT
Qzo6Q0NhbGxIZWxwZXJzOjpzZXR1cFN0dWJBcmdzR1BSKToKKyAgICAgICAgKEpTQzo6Q0NhbGxI
ZWxwZXJzOjpwcmVwYXJlRm9yVGFpbENhbGxTbG93KTogRGVsZXRlZC4KKyAgICAgICAgKiBqaXQv
SklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAg
ICAgICAgKiBqaXQvSklULmg6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuaDoKKyAgICAg
ICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRf
b3BfZGVmaW5lX2RhdGFfcHJvcGVydHkpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZGVm
aW5lX2FjY2Vzc29yX3Byb3BlcnR5KToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJl
dGVyLmFzbToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6CisgICAgICAg
IChKU0M6OlNMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRo
cy5oOgorICAgICAgICAqIHJ1bnRpbWUvRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzLmg6IEFkZGVk
LgorICAgICAgICAoSlNDOjpEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXM6OkRlZmluZVByb3BlcnR5
QXR0cmlidXRlcyk6CisgICAgICAgIChKU0M6OkRlZmluZVByb3BlcnR5QXR0cmlidXRlczo6cmF3
UmVwcmVzZW50YXRpb24pOgorICAgICAgICAoSlNDOjpEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXM6
Omhhc1ZhbHVlKToKKyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzOjpzZXRW
YWx1ZSk6CisgICAgICAgIChKU0M6OkRlZmluZVByb3BlcnR5QXR0cmlidXRlczo6aGFzR2V0KToK
KyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzOjpzZXRHZXQpOgorICAgICAg
ICAoSlNDOjpEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXM6Omhhc1NldCk6CisgICAgICAgIChKU0M6
OkRlZmluZVByb3BlcnR5QXR0cmlidXRlczo6c2V0U2V0KToKKyAgICAgICAgKEpTQzo6RGVmaW5l
UHJvcGVydHlBdHRyaWJ1dGVzOjp3cml0YWJsZSk6CisgICAgICAgIChKU0M6OkRlZmluZVByb3Bl
cnR5QXR0cmlidXRlczo6Y29uZmlndXJhYmxlKToKKyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVy
dHlBdHRyaWJ1dGVzOjplbnVtZXJhYmxlKToKKyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVydHlB
dHRyaWJ1dGVzOjpzZXRXcml0YWJsZSk6CisgICAgICAgIChKU0M6OkRlZmluZVByb3BlcnR5QXR0
cmlidXRlczo6c2V0Q29uZmlndXJhYmxlKToKKyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVydHlB
dHRyaWJ1dGVzOjpzZXRFbnVtZXJhYmxlKToKKyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVydHlB
dHRyaWJ1dGVzOjpmaWxsV2l0aFRyaVN0YXRlKToKKyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVy
dHlBdHRyaWJ1dGVzOjpleHRyYWN0VHJpU3RhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9i
YWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAg
ICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50
aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp0aHJv
d1R5cGVFcnJvckZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmRlZmlu
ZVByb3BlcnR5RnVuY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0Q29u
c3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpPYmplY3RDb25zdHJ1Y3Rvcjo6YWRkRGVmaW5l
UHJvcGVydHkpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3Iu
aDoKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5oOgorICAgICAgICAoSlND
Ojp0b1Byb3BlcnR5RGVzY3JpcHRvcik6CisKIDIwMTYtMDktMjcgIEplciBOb2JsZSAgPGplci5u
b2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIGRlcHJlY2F0ZWQgRU5DUllQVEVEX01F
RElBIGltcGxlbWVudGF0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBmNzM0
ZjkxNjIzZmE0M2RkNTRhNmEwODY4OTJhOWFhZmI1MTgxNTM1Li43YzdjNDZiZGZmMTFiZjU0ZGRh
ODk3NTU1ZTNiZDAzNmFmMTliNzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
MjE2OCw2ICsyMTY4LDcgQEAKIAkJRkVEOTRGMkYxNzFFM0UyMzAwQkU3N0E0IC8qIFdhdGNoZG9n
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUQ5NEYy
QzE3MUUzRTIzMDBCRTc3QTQgLyogV2F0Y2hkb2cuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRUYwNDA1MTFBQUU2NjJEMDBCRDI4QjAgLyogQ29t
cGFyZUFuZFN3YXBUZXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEZFRjA0MDUwMUFBRTY2MkQwMEJEMjhCMCAvKiBDb21wYXJlQW5kU3dhcFRlc3Qu
Y3BwICovOyB9OwogCQlGRUZENkZDNjFENUU3OTkyMDA4RjJGMEIgLyogSlNTdHJpbmdJbmxpbmVz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUZENkZD
NTFENUU3OTcwMDA4RjJGMEIgLyogSlNTdHJpbmdJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDczREE0QTQ3NjRDNDVGRTg3MUIwNDg1
IC8qIERlZmluZVByb3BlcnR5QXR0cmlidXRlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMTY5OTQ4RURFNjhENDA1NEIwMUVGNzk3IC8qIERlZmluZVBy
b3BlcnR5QXR0cmlidXRlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJY
Q29udGFpbmVySXRlbVByb3h5IHNlY3Rpb24gKi8KQEAgLTQ0OTgsNiArNDQ5OSw3IEBACiAJCUZF
RjA0MDUwMUFBRTY2MkQwMEJEMjhCMCAvKiBDb21wYXJlQW5kU3dhcFRlc3QuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQ29tcGFyZUFuZFN3YXBUZXN0LmNwcDsgcGF0
aCA9IEFQSS90ZXN0cy9Db21wYXJlQW5kU3dhcFRlc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlGRUYwNDA1MjFBQUVDNEVEMDBCRDI4QjAgLyogQ29tcGFyZUFuZFN3YXBUZXN0
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IENvbXBhcmVBbmRTd2FwVGVzdC5o
OyBwYXRoID0gQVBJL3Rlc3RzL0NvbXBhcmVBbmRTd2FwVGVzdC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlGRUZENkZDNTFENUU3OTcwMDA4RjJGMEIgLyogSlNTdHJpbmdJbmxpbmVz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU3RyaW5nSW5saW5lcy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNjk5NDhFREU2OEQ0MDU0QjAxRUY3OTcgLyog
RGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IERlZmluZVByb3BlcnR5QXR0cmlidXRlcy5oOyBwYXRoID0gRGVmaW5lUHJvcGVydHlBdHRy
aWJ1dGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAvKiBFbmQgUEJYRmlsZVJlZmVy
ZW5jZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlIHNlY3Rp
b24gKi8KQEAgLTYyNDEsNiArNjI0Myw3IEBACiAJCQkJNzA5RkI4NjYxQUUzMzVDNjAwMzlEMDY5
IC8qIFdlYWtTZXRQcm90b3R5cGUuaCAqLywKIAkJCQlBN0RDQjc3OTEyRTNEOTA1MDA5MTE5NDAg
LyogV3JpdGVCYXJyaWVyLmggKi8sCiAJCQkJQzJCNkQ3NTIxOEEzMzc5MzAwNEE5MzAxIC8qIFdy
aXRlQmFycmllcklubGluZXMuaCAqLywKKwkJCQkxNjk5NDhFREU2OEQ0MDU0QjAxRUY3OTcgLyog
RGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IHJ1bnRpbWU7
CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtODM3Niw2ICs4Mzc5LDcgQEAKIAkJCQk4
NjcwNEI0MzEyREI4QTgxMDBBOUZFN0IgLyogWWFyclN5bnRheENoZWNrZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE3OUQzRUQ5QzUwNjRERDBBODQ2NkEzQSAvKiBNb2R1bGVTY29wZURhdGEuaCBp
biBIZWFkZXJzICovLAogCQkJCUQ5NzIyNzUyREM1NDQ1OUI5MTI1QjUzOSAvKiBKU01vZHVsZUxv
YWRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDczREE0QTQ3NjRDNDVGRTg3MUIwNDg1IC8qIERl
ZmluZVByb3BlcnR5QXR0cmlidXRlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25s
eUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24gYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KaW5kZXggZGM1OTk4MDU2OTFj
ZGE1N2I1ZDM2MTE1OTlkZDVmMjhkNzEwMmRiZS4uNTc2ZGU0MDA2MDRkMTAxNDc1MWNjNjNiZWFj
ZWM3N2E1NWZkNGZmNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlTGlzdC5qc29uCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUxpc3QuanNvbgpAQCAtODEsNiArODEsOCBAQAogICAgICAgICAgICAgeyAibmFtZSIg
OiAib3BfcHV0X2dldHRlcl9zZXR0ZXJfYnlfaWQiLCAibGVuZ3RoIiA6IDYgfSwKICAgICAgICAg
ICAgIHsgIm5hbWUiIDogIm9wX3B1dF9nZXR0ZXJfYnlfdmFsIiwgImxlbmd0aCIgOiA1IH0sCiAg
ICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9wdXRfc2V0dGVyX2J5X3ZhbCIsICJsZW5ndGgiIDog
NSB9LAorICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfZGVmaW5lX2RhdGFfcHJvcGVydHkiLCAi
bGVuZ3RoIiA6IDUgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2RlZmluZV9hY2Nlc3Nv
cl9wcm9wZXJ0eSIsICJsZW5ndGgiIDogNiB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3Bf
am1wIiwgImxlbmd0aCIgOiAyIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9qdHJ1ZSIs
ICJsZW5ndGgiIDogMyB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfamZhbHNlIiwgImxl
bmd0aCIgOiAzIH0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVVc2VEZWYuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZVVzZURlZi5oCmluZGV4IGRhYmNlNGVkZjAzMjY0OGMwODk2ODk5ODJhODgxN2VjNjAwYTgxN2Uu
LjQ1YTllMDljYmQ4MmVmNjg5ZDNiMzRmOGVlNTBlMTFlYjk1YTM3NjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCkBAIC0xNDQsNiArMTQ0
LDIzIEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChCbG9jayogY29kZUJsb2Nr
LCBPcGNvZGVJRCBvcGNvZGVJRCwgSW5zdHJ1Y3RpCiAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2Nr
LCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzRdLnUub3BlcmFuZCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CisgICAgY2FzZSBvcF9kZWZpbmVfZGF0YV9wcm9wZXJ0eTogewor
ICAgICAgICBBU1NFUlQob3Bjb2RlTGVuZ3Roc1tvcGNvZGVJRF0gPiA0KTsKKyAgICAgICAgZnVu
Y3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25bMV0udS5v
cGVyYW5kKTsKKyAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJ
RCwgaW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsKKyAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ss
IGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKTsKKyAgICAg
ICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25b
NF0udS5vcGVyYW5kKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBjYXNlIG9wX2RlZmlu
ZV9hY2Nlc3Nvcl9wcm9wZXJ0eTogeworICAgICAgICBBU1NFUlQob3Bjb2RlTGVuZ3Roc1tvcGNv
ZGVJRF0gPiA1KTsKKyAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNv
ZGVJRCwgaW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKKyAgICAgICAgZnVuY3Rvcihjb2RlQmxv
Y2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsKKyAg
ICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rp
b25bM10udS5vcGVyYW5kKTsKKyAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9u
LCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kKTsKKyAgICAgICAgZnVuY3Rvcihj
b2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25bNV0udS5vcGVyYW5k
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICAgICBjYXNlIG9wX2dldF9wcm9wZXJ0eV9lbnVt
ZXJhdG9yOgogICAgIGNhc2Ugb3BfZ2V0X2VudW1lcmFibGVfbGVuZ3RoOgogICAgIGNhc2Ugb3Bf
bmV3X2Z1bmNfZXhwOgpAQCAtMzMyLDYgKzM0OSw4IEBAIHZvaWQgY29tcHV0ZURlZnNGb3JCeXRl
Y29kZU9mZnNldChCbG9jayogY29kZUJsb2NrLCBPcGNvZGVJRCBvcGNvZGVJRCwgSW5zdHJ1Y3Rp
CiAgICAgY2FzZSBvcF9wdXRfYnlfdmFsOgogICAgIGNhc2Ugb3BfcHV0X2J5X3ZhbF9kaXJlY3Q6
CiAgICAgY2FzZSBvcF9wdXRfYnlfaW5kZXg6CisgICAgY2FzZSBvcF9kZWZpbmVfZGF0YV9wcm9w
ZXJ0eToKKyAgICBjYXNlIG9wX2RlZmluZV9hY2Nlc3Nvcl9wcm9wZXJ0eToKICAgICBjYXNlIG9w
X3Byb2ZpbGVfdHlwZToKICAgICBjYXNlIG9wX3Byb2ZpbGVfY29udHJvbF9mbG93OgogICAgIGNh
c2Ugb3BfcHV0X3RvX2FyZ3VtZW50czoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5jcHAKaW5kZXggN2M5YjVjMmJhNmQ2ZDQyN2QwNzk3YjJhZjQ4MThkYjkzZjg5
OTE2OS4uN2Y3NzRhOTE2YmIxNDIwODExNDg0ZDA1ZjU0ZDJhMjk0YWY1YzY0NSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTEyMzMsNiArMTIz
MywyNSBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKAogICAgICAgICAgICAgb3V0LnBy
aW50ZigiJXMsICVzLCAlZCwgJXMiLCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgcmVnaXN0ZXJO
YW1lKHIxKS5kYXRhKCksIG4wLCByZWdpc3Rlck5hbWUocjIpLmRhdGEoKSk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQorICAgICAgICBjYXNlIG9wX2RlZmluZV9kYXRhX3Byb3BlcnR5
OiB7CisgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAg
IGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgaW50IHIyID0gKCsraXQp
LT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBpbnQgcjMgPSAoKytpdCktPnUub3BlcmFuZDsKKyAg
ICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgImRl
ZmluZV9kYXRhX3Byb3BlcnR5Iik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsICVz
LCAlcyIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSwg
cmVnaXN0ZXJOYW1lKHIyKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMykuZGF0YSgpKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2Ugb3BfZGVmaW5lX2FjY2Vzc29y
X3Byb3BlcnR5OiB7CisgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAg
ICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgaW50IHIy
ID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBpbnQgcjMgPSAoKytpdCktPnUub3Bl
cmFuZDsKKyAgICAgICAgICAgIGludCByNCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAg
ICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAiZGVmaW5lX2Fj
Y2Vzc29yX3Byb3BlcnR5Iik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsICVzLCAl
cywgJXMiLCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCks
IHJlZ2lzdGVyTmFtZShyMikuZGF0YSgpLCByZWdpc3Rlck5hbWUocjMpLmRhdGEoKSwgcmVnaXN0
ZXJOYW1lKHI0KS5kYXRhKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAg
ICAgY2FzZSBvcF9kZWxfYnlfaWQ6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5v
cGVyYW5kOwogICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY2lhbFBvaW50ZXIuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjaWFsUG9pbnRlci5oCmluZGV4IDY0ZmIy
M2ZjZjI3ZDQxMjUwNDgwMjE5ZThjOGM0MWI3YzQxYTdlZjUuLjkwY2IzYTk5MjZkNjJlNjA0YjE4
YzNiM2RiZDU1MjJiNDUyYWVkZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9TcGVjaWFsUG9pbnRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9TcGVjaWFsUG9pbnRlci5oCkBAIC00Miw3ICs0Miw3IEBAIGVudW0gUG9pbnRlciB7CiB9
IC8vIG5hbWVzcGFjZSBTcGVjaWFsCiAKIGVudW0gY2xhc3MgTGlua1RpbWVDb25zdGFudCB7Ci0g
ICAgRGVmaW5lUHJvcGVydHlGdW5jdGlvbiwKKyAgICBUaHJvd1R5cGVFcnJvckZ1bmN0aW9uLAog
fTsKIGNvbnN0IHVuc2lnbmVkIExpbmtUaW1lQ29uc3RhbnRDb3VudCA9IDE7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5jcHAKaW5kZXggY2M3MTcyM2VmM2MwZjVkNGJiM2NjZGVjYjhiYTk3NjI3MjNkMzJmZS4uYjBj
M2NjZDVhY2IyNTU2MTg4ZDkyODIyMjVhNTc0YjFmMDQ3MmMyMyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAK
QEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJCdWlsdGluRXhlY3V0YWJsZXMuaCIKICNpbmNs
dWRlICJCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oIgogI2luY2x1ZGUgIkJ5dGVjb2RlTGl2
ZW5lc3NBbmFseXNpcy5oIgorI2luY2x1ZGUgIkRlZmluZVByb3BlcnR5QXR0cmlidXRlcy5oIgog
I2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1
ZGUgIkpTR2VuZXJhdG9yRnVuY3Rpb24uaCIKQEAgLTE1NDMsNiArMTU0NCw5IEBAIFJlZ2lzdGVy
SUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TW92ZUxpbmtUaW1lQ29uc3RhbnQoUmVnaXN0ZXJJ
RCogZHN0LCBMaW5rVGltCiAgICAgICAgIG1fbGlua1RpbWVDb25zdGFudFJlZ2lzdGVyc1tjb25z
dGFudEluZGV4XSA9ICZtX2NvbnN0YW50UG9vbFJlZ2lzdGVyc1tpbmRleF07CiAgICAgfQogCisg
ICAgaWYgKCFkc3QpCisgICAgICAgIHJldHVybiBtX2xpbmtUaW1lQ29uc3RhbnRSZWdpc3RlcnNb
Y29uc3RhbnRJbmRleF07CisKICAgICBlbWl0T3Bjb2RlKG9wX21vdik7CiAgICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1f
bGlua1RpbWVDb25zdGFudFJlZ2lzdGVyc1tjb25zdGFudEluZGV4XS0+aW5kZXgoKSk7CkBAIC0z
MjY4LDM4ICszMjcyLDU5IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRMb2dTaGFkb3dD
aGlja2VuVGFpbElmTmVjZXNzYXJ5KCkKIH0KIAogdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dENhbGxEZWZpbmVQcm9wZXJ0eShSZWdpc3RlcklEKiBuZXdPYmosIFJlZ2lzdGVySUQqIHByb3Bl
cnR5TmFtZVJlZ2lzdGVyLAotICAgIFJlZ2lzdGVySUQqIHZhbHVlUmVnaXN0ZXIsIFJlZ2lzdGVy
SUQqIGdldHRlclJlZ2lzdGVyLCBSZWdpc3RlcklEKiBzZXR0ZXJSZWdpc3RlciwgdW5zaWduZWQg
b3B0aW9ucywgY29uc3QgSlNUZXh0UG9zaXRpb24mIHBvc2l0aW9uKQorICAgIFJlZ2lzdGVySUQq
IHZhbHVlUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIGdldHRlclJlZ2lzdGVyLCBSZWdpc3RlcklEKiBz
ZXR0ZXJSZWdpc3RlciwgdW5zaWduZWQgb3B0aW9ucykKIHsKLSAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gZGVzY3JpcHRvclJlZ2lzdGVyID0gZW1pdE5ld09iamVjdChuZXdUZW1wb3JhcnkoKSk7Ci0K
LSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdHJ1ZVJlZ2lzdGVyID0gZW1pdExvYWQobmV3VGVtcG9y
YXJ5KCksIHRydWUpOworICAgIERlZmluZVByb3BlcnR5QXR0cmlidXRlcyBhdHRyaWJ1dGVzOwog
ICAgIGlmIChvcHRpb25zICYgUHJvcGVydHlDb25maWd1cmFibGUpCi0gICAgICAgIGVtaXREaXJl
Y3RQdXRCeUlkKGRlc2NyaXB0b3JSZWdpc3Rlci5nZXQoKSwgcHJvcGVydHlOYW1lcygpLmNvbmZp
Z3VyYWJsZSwgdHJ1ZVJlZ2lzdGVyLmdldCgpLCBQcm9wZXJ0eU5vZGU6OlVua25vd24pOworICAg
ICAgICBhdHRyaWJ1dGVzLnNldENvbmZpZ3VyYWJsZSh0cnVlKTsKKwogICAgIGlmIChvcHRpb25z
ICYgUHJvcGVydHlXcml0YWJsZSkKLSAgICAgICAgZW1pdERpcmVjdFB1dEJ5SWQoZGVzY3JpcHRv
clJlZ2lzdGVyLmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkud3JpdGFibGUsIHRydWVSZWdpc3Rlci5n
ZXQoKSwgUHJvcGVydHlOb2RlOjpVbmtub3duKTsKLSAgICBlbHNlIGlmICh2YWx1ZVJlZ2lzdGVy
KSB7Ci0gICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBmYWxzZVJlZ2lzdGVyID0gZW1pdExvYWQo
bmV3VGVtcG9yYXJ5KCksIGZhbHNlKTsKLSAgICAgICAgZW1pdERpcmVjdFB1dEJ5SWQoZGVzY3Jp
cHRvclJlZ2lzdGVyLmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkud3JpdGFibGUsIGZhbHNlUmVnaXN0
ZXIuZ2V0KCksIFByb3BlcnR5Tm9kZTo6VW5rbm93bik7Ci0gICAgfQorICAgICAgICBhdHRyaWJ1
dGVzLnNldFdyaXRhYmxlKHRydWUpOworICAgIGVsc2UgaWYgKHZhbHVlUmVnaXN0ZXIpCisgICAg
ICAgIGF0dHJpYnV0ZXMuc2V0V3JpdGFibGUoZmFsc2UpOworCiAgICAgaWYgKG9wdGlvbnMgJiBQ
cm9wZXJ0eUVudW1lcmFibGUpCi0gICAgICAgIGVtaXREaXJlY3RQdXRCeUlkKGRlc2NyaXB0b3JS
ZWdpc3Rlci5nZXQoKSwgcHJvcGVydHlOYW1lcygpLmVudW1lcmFibGUsIHRydWVSZWdpc3Rlci5n
ZXQoKSwgUHJvcGVydHlOb2RlOjpVbmtub3duKTsKKyAgICAgICAgYXR0cmlidXRlcy5zZXRFbnVt
ZXJhYmxlKHRydWUpOwogCiAgICAgaWYgKHZhbHVlUmVnaXN0ZXIpCi0gICAgICAgIGVtaXREaXJl
Y3RQdXRCeUlkKGRlc2NyaXB0b3JSZWdpc3Rlci5nZXQoKSwgcHJvcGVydHlOYW1lcygpLnZhbHVl
LCB2YWx1ZVJlZ2lzdGVyLCBQcm9wZXJ0eU5vZGU6OlVua25vd24pOworICAgICAgICBhdHRyaWJ1
dGVzLnNldFZhbHVlKCk7CiAgICAgaWYgKGdldHRlclJlZ2lzdGVyKQotICAgICAgICBlbWl0RGly
ZWN0UHV0QnlJZChkZXNjcmlwdG9yUmVnaXN0ZXIuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS5nZXQs
IGdldHRlclJlZ2lzdGVyLCBQcm9wZXJ0eU5vZGU6OlVua25vd24pOworICAgICAgICBhdHRyaWJ1
dGVzLnNldEdldCgpOwogICAgIGlmIChzZXR0ZXJSZWdpc3RlcikKLSAgICAgICAgZW1pdERpcmVj
dFB1dEJ5SWQoZGVzY3JpcHRvclJlZ2lzdGVyLmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkuc2V0LCBz
ZXR0ZXJSZWdpc3RlciwgUHJvcGVydHlOb2RlOjpVbmtub3duKTsKKyAgICAgICAgYXR0cmlidXRl
cy5zZXRTZXQoKTsKIAotICAgIFJlZlB0cjxSZWdpc3RlcklEPiBkZWZpbmVQcm9wZXJ0eVJlZ2lz
dGVyID0gZW1pdE1vdmVMaW5rVGltZUNvbnN0YW50KG5ld1RlbXBvcmFyeSgpLCBMaW5rVGltZUNv
bnN0YW50OjpEZWZpbmVQcm9wZXJ0eUZ1bmN0aW9uKTsKKyAgICBBU1NFUlQoIXZhbHVlUmVnaXN0
ZXIgfHwgKCFnZXR0ZXJSZWdpc3RlciAmJiAhc2V0dGVyUmVnaXN0ZXIpKTsKIAotICAgIENhbGxB
cmd1bWVudHMgY2FsbEFyZ3VtZW50cygqdGhpcywgbnVsbHB0ciwgMyk7Ci0gICAgZW1pdExvYWQo
Y2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwganNVbmRlZmluZWQoKSk7Ci0gICAgZW1pdE1v
dmUoY2FsbEFyZ3VtZW50cy5hcmd1bWVudFJlZ2lzdGVyKDApLCBuZXdPYmopOwotICAgIGVtaXRN
b3ZlKGNhbGxBcmd1bWVudHMuYXJndW1lbnRSZWdpc3RlcigxKSwgcHJvcGVydHlOYW1lUmVnaXN0
ZXIpOwotICAgIGVtaXRNb3ZlKGNhbGxBcmd1bWVudHMuYXJndW1lbnRSZWdpc3RlcigyKSwgZGVz
Y3JpcHRvclJlZ2lzdGVyLmdldCgpKTsKKyAgICBpZiAoYXR0cmlidXRlcy5oYXNHZXQoKSB8fCBh
dHRyaWJ1dGVzLmhhc1NldCgpKSB7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0aHJvd1R5
cGVFcnJvckZ1bmN0aW9uOworICAgICAgICBpZiAoIWF0dHJpYnV0ZXMuaGFzR2V0KCkgfHwgIWF0
dHJpYnV0ZXMuaGFzU2V0KCkpCisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvckZ1bmN0aW9uID0g
ZW1pdE1vdmVMaW5rVGltZUNvbnN0YW50KG51bGxwdHIsIExpbmtUaW1lQ29uc3RhbnQ6OlRocm93
VHlwZUVycm9yRnVuY3Rpb24pOwogCi0gICAgZW1pdENhbGwobmV3VGVtcG9yYXJ5KCksIGRlZmlu
ZVByb3BlcnR5UmVnaXN0ZXIuZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50
cywgcG9zaXRpb24sIHBvc2l0aW9uLCBwb3NpdGlvbik7CisgICAgICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiBnZXR0ZXI7CisgICAgICAgIGlmIChhdHRyaWJ1dGVzLmhhc0dldCgpKQorICAgICAgICAg
ICAgZ2V0dGVyID0gZ2V0dGVyUmVnaXN0ZXI7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGdl
dHRlciA9IHRocm93VHlwZUVycm9yRnVuY3Rpb247CisKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IHNldHRlcjsKKyAgICAgICAgaWYgKGF0dHJpYnV0ZXMuaGFzU2V0KCkpCisgICAgICAgICAg
ICBzZXR0ZXIgPSBzZXR0ZXJSZWdpc3RlcjsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc2V0
dGVyID0gdGhyb3dUeXBlRXJyb3JGdW5jdGlvbjsKKworICAgICAgICBlbWl0T3Bjb2RlKG9wX2Rl
ZmluZV9hY2Nlc3Nvcl9wcm9wZXJ0eSk7CisgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChu
ZXdPYmotPmluZGV4KCkpOworICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQocHJvcGVydHlO
YW1lUmVnaXN0ZXItPmluZGV4KCkpOworICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZ2V0
dGVyLT5pbmRleCgpKTsKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHNldHRlci0+aW5k
ZXgoKSk7CisgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChlbWl0TG9hZChudWxscHRyLCBq
c051bWJlcihhdHRyaWJ1dGVzLnJhd1JlcHJlc2VudGF0aW9uKCkpKS0+aW5kZXgoKSk7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgZW1pdE9wY29kZShvcF9kZWZpbmVfZGF0YV9wcm9wZXJ0eSk7Cisg
ICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChuZXdPYmotPmluZGV4KCkpOworICAgICAgICBp
bnN0cnVjdGlvbnMoKS5hcHBlbmQocHJvcGVydHlOYW1lUmVnaXN0ZXItPmluZGV4KCkpOworICAg
ICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQodmFsdWVSZWdpc3Rlci0+aW5kZXgoKSk7CisgICAg
ICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChlbWl0TG9hZChudWxscHRyLCBqc051bWJlcihhdHRy
aWJ1dGVzLnJhd1JlcHJlc2VudGF0aW9uKCkpKS0+aW5kZXgoKSk7CisgICAgfQogfQogCiBSZWdp
c3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJldHVybihSZWdpc3RlcklEKiBzcmMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmgKaW5kZXggZDMyNjRjNGEwODc3YTM2MmU5MDRlMWY4MzZiYmQ0NTYwNDI5ZTBmZS4u
OWU2Y2RiYTM2MjNlOTI2MjZjYzhmZDM5N2YwOWU3MTQzM2ZiMWNhZSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApA
QCAtNTg4LDcgKzU4OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgUHJvcGVydHlF
bnVtZXJhYmxlICAgPSAxIDw8IDIsCiAgICAgICAgIH07CiAgICAgICAgIHZvaWQgZW1pdENhbGxE
ZWZpbmVQcm9wZXJ0eShSZWdpc3RlcklEKiBuZXdPYmosIFJlZ2lzdGVySUQqIHByb3BlcnR5TmFt
ZVJlZ2lzdGVyLAotICAgICAgICAgICAgUmVnaXN0ZXJJRCogdmFsdWVSZWdpc3RlciwgUmVnaXN0
ZXJJRCogZ2V0dGVyUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIHNldHRlclJlZ2lzdGVyLCB1bnNpZ25l
ZCBvcHRpb25zLCBjb25zdCBKU1RleHRQb3NpdGlvbiYpOworICAgICAgICAgICAgUmVnaXN0ZXJJ
RCogdmFsdWVSZWdpc3RlciwgUmVnaXN0ZXJJRCogZ2V0dGVyUmVnaXN0ZXIsIFJlZ2lzdGVySUQq
IHNldHRlclJlZ2lzdGVyLCB1bnNpZ25lZCBvcHRpb25zKTsKIAogICAgICAgICB2b2lkIGVtaXRF
bnVtZXJhdGlvbihUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogZW51bWVyYXRpb25Ob2RlLCBFeHBy
ZXNzaW9uTm9kZSogc3ViamVjdE5vZGUsIGNvbnN0IHN0ZDo6ZnVuY3Rpb248dm9pZChCeXRlY29k
ZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqKT4mIGNhbGxCYWNrLCBWYXJpYWJsZUVudmlyb25tZW50
Tm9kZSogPSBudWxscHRyLCBSZWdpc3RlcklEKiBmb3JMb29wU3ltYm9sVGFibGUgPSBudWxscHRy
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rl
c0NvZGVnZW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0Nv
ZGVnZW4uY3BwCmluZGV4IGMyNjhhMjYwOGQzOGQ2ZGVhN2FjYjgxNzcwN2U1OWYxYzUyNWYyODIu
LjJiNTkwYzg3YzBmMTZiMDBmNjJjMDNmZjg2NjFiNTkzMGZkNjBlOWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKQEAgLTU5
MCwxMiArNTkwLDEyIEBAIHZvaWQgUHJvcGVydHlMaXN0Tm9kZTo6ZW1pdFB1dENvbnN0YW50UHJv
cGVydHkoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnCiAgICAgICAgIEFTU0VSVChu
b2RlLm5lZWRzU3VwZXJCaW5kaW5nKCkpOwogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJv
cGVydHlOYW1lUmVnaXN0ZXI7CiAgICAgICAgIGlmIChub2RlLm5hbWUoKSkKLSAgICAgICAgICAg
IHByb3BlcnR5TmFtZVJlZ2lzdGVyID0gZ2VuZXJhdG9yLmVtaXRMb2FkKGdlbmVyYXRvci5uZXdU
ZW1wb3JhcnkoKSwgKm5vZGUubmFtZSgpKTsKKyAgICAgICAgICAgIHByb3BlcnR5TmFtZVJlZ2lz
dGVyID0gZ2VuZXJhdG9yLmVtaXRMb2FkKG51bGxwdHIsICpub2RlLm5hbWUoKSk7CiAgICAgICAg
IGVsc2UKICAgICAgICAgICAgIHByb3BlcnR5TmFtZVJlZ2lzdGVyID0gZ2VuZXJhdG9yLmVtaXRO
b2RlKG5vZGUubV9leHByZXNzaW9uKTsKIAogICAgICAgICBnZW5lcmF0b3IuZW1pdFNldEZ1bmN0
aW9uTmFtZUlmTmVlZGVkKG5vZGUubV9hc3NpZ24sIHZhbHVlLmdldCgpLCBwcm9wZXJ0eU5hbWVS
ZWdpc3Rlci5nZXQoKSk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbERlZmluZVByb3BlcnR5
KG5ld09iaiwgcHJvcGVydHlOYW1lUmVnaXN0ZXIuZ2V0KCksIHZhbHVlLmdldCgpLCBudWxscHRy
LCBudWxscHRyLCBCeXRlY29kZUdlbmVyYXRvcjo6UHJvcGVydHlDb25maWd1cmFibGUgfCBCeXRl
Y29kZUdlbmVyYXRvcjo6UHJvcGVydHlXcml0YWJsZSwgbV9wb3NpdGlvbik7CisgICAgICAgIGdl
bmVyYXRvci5lbWl0Q2FsbERlZmluZVByb3BlcnR5KG5ld09iaiwgcHJvcGVydHlOYW1lUmVnaXN0
ZXIuZ2V0KCksIHZhbHVlLmdldCgpLCBudWxscHRyLCBudWxscHRyLCBCeXRlY29kZUdlbmVyYXRv
cjo6UHJvcGVydHlDb25maWd1cmFibGUgfCBCeXRlY29kZUdlbmVyYXRvcjo6UHJvcGVydHlXcml0
YWJsZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKGNvbnN0IGF1dG8qIGlkZW50
aWZpZXIgPSBub2RlLm5hbWUoKSkgewpAQCAtNjA1LDcgKzYwNSw3IEBAIHZvaWQgUHJvcGVydHlM
aXN0Tm9kZTo6ZW1pdFB1dENvbnN0YW50UHJvcGVydHkoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVy
YXRvciwgUmVnCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gaW5kZXggPSBnZW5lcmF0b3IuZW1pdExvYWQoZ2VuZXJhdG9yLm5ld1Rl
bXBvcmFyeSgpLCBqc051bWJlcihvcHRpb25hbEluZGV4LnZhbHVlKCkpKTsKKyAgICAgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IGluZGV4ID0gZ2VuZXJhdG9yLmVtaXRMb2FkKG51bGxwdHIsIGpzTnVt
YmVyKG9wdGlvbmFsSW5kZXgudmFsdWUoKSkpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdERpcmVj
dFB1dEJ5VmFsKG5ld09iaiwgaW5kZXguZ2V0KCksIHZhbHVlLmdldCgpKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KQEAgLTE2MjMsNyArMTYyMyw3IEBAIFJlZ2lzdGVySUQqIFVuYXJ5UGx1c05v
ZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklE
CiAgCiBSZWdpc3RlcklEKiBCaXR3aXNlTm90Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKLSAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gc3JjMiA9IGdlbmVyYXRvci5lbWl0TG9hZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCks
IGpzTnVtYmVyKC0xKSk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNyYzIgPSBnZW5lcmF0b3Iu
ZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoLTEpKTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
c3JjMSA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX2V4cHIpOwogICAgIHJldHVybiBnZW5lcmF0b3Iu
ZW1pdEJpbmFyeU9wKG9wX2JpdHhvciwgZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0LCBz
cmMxLmdldCgpKSwgc3JjMS5nZXQoKSwgc3JjMi5nZXQoKSwgT3BlcmFuZFR5cGVzKG1fZXhwci0+
cmVzdWx0RGVzY3JpcHRvcigpLCBSZXN1bHRUeXBlOjpudW1iZXJUeXBlSXNJbnQzMigpKSk7CiB9
CkBAIC0zNjAzLDEyICszNjAzLDEyIEBAIFJlZ2lzdGVySUQqIENsYXNzRXhwck5vZGU6OmVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklECiAgICAgICAg
IGVtaXRQdXRIb21lT2JqZWN0KGdlbmVyYXRvciwgY29uc3RydWN0b3IuZ2V0KCksIHByb3RvdHlw
ZS5nZXQoKSk7CiAgICAgfQogCi0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGNvbnN0cnVjdG9yTmFt
ZVJlZ2lzdGVyID0gZ2VuZXJhdG9yLmVtaXRMb2FkKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwg
cHJvcGVydHlOYW1lcy5jb25zdHJ1Y3Rvcik7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGNvbnN0
cnVjdG9yTmFtZVJlZ2lzdGVyID0gZ2VuZXJhdG9yLmVtaXRMb2FkKG51bGxwdHIsIHByb3BlcnR5
TmFtZXMuY29uc3RydWN0b3IpOwogICAgIGdlbmVyYXRvci5lbWl0Q2FsbERlZmluZVByb3BlcnR5
KHByb3RvdHlwZS5nZXQoKSwgY29uc3RydWN0b3JOYW1lUmVnaXN0ZXIuZ2V0KCksIGNvbnN0cnVj
dG9yLmdldCgpLCBudWxscHRyLCBudWxscHRyLAotICAgICAgICBCeXRlY29kZUdlbmVyYXRvcjo6
UHJvcGVydHlDb25maWd1cmFibGUgfCBCeXRlY29kZUdlbmVyYXRvcjo6UHJvcGVydHlXcml0YWJs
ZSwgbV9wb3NpdGlvbik7CisgICAgICAgIEJ5dGVjb2RlR2VuZXJhdG9yOjpQcm9wZXJ0eUNvbmZp
Z3VyYWJsZSB8IEJ5dGVjb2RlR2VuZXJhdG9yOjpQcm9wZXJ0eVdyaXRhYmxlKTsKIAotICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiBwcm90b3R5cGVOYW1lUmVnaXN0ZXIgPSBnZW5lcmF0b3IuZW1pdExv
YWQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBwcm9wZXJ0eU5hbWVzLnByb3RvdHlwZSk7Ci0g
ICAgZ2VuZXJhdG9yLmVtaXRDYWxsRGVmaW5lUHJvcGVydHkoY29uc3RydWN0b3IuZ2V0KCksIHBy
b3RvdHlwZU5hbWVSZWdpc3Rlci5nZXQoKSwgcHJvdG90eXBlLmdldCgpLCBudWxscHRyLCBudWxs
cHRyLCAwLCBtX3Bvc2l0aW9uKTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJvdG90eXBlTmFt
ZVJlZ2lzdGVyID0gZ2VuZXJhdG9yLmVtaXRMb2FkKG51bGxwdHIsIHByb3BlcnR5TmFtZXMucHJv
dG90eXBlKTsKKyAgICBnZW5lcmF0b3IuZW1pdENhbGxEZWZpbmVQcm9wZXJ0eShjb25zdHJ1Y3Rv
ci5nZXQoKSwgcHJvdG90eXBlTmFtZVJlZ2lzdGVyLmdldCgpLCBwcm90b3R5cGUuZ2V0KCksIG51
bGxwdHIsIG51bGxwdHIsIDApOwogCiAgICAgaWYgKG1fc3RhdGljTWV0aG9kcykKICAgICAgICAg
Z2VuZXJhdG9yLmVtaXROb2RlKGNvbnN0cnVjdG9yLmdldCgpLCBtX3N0YXRpY01ldGhvZHMpOwpA
QCAtMzg3MCw3ICszODcwLDcgQEAgdm9pZCBPYmplY3RQYXR0ZXJuTm9kZTo6YmluZFZhbHVlKEJ5
dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIHJocykKICAgICAgICAgICAg
IGlmICghb3B0aW9uYWxJbmRleCkKICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEdldEJ5
SWQodGVtcC5nZXQoKSwgcmhzLCB0YXJnZXQucHJvcGVydHlOYW1lKTsKICAgICAgICAgICAgIGVs
c2UgewotICAgICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBpbmRleCA9IGdlbmVyYXRv
ci5lbWl0TG9hZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIGpzTnVtYmVyKG9wdGlvbmFsSW5k
ZXgudmFsdWUoKSkpOworICAgICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBpbmRleCA9
IGdlbmVyYXRvci5lbWl0TG9hZChudWxscHRyLCBqc051bWJlcihvcHRpb25hbEluZGV4LnZhbHVl
KCkpKTsKICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEdldEJ5VmFsKHRlbXAuZ2V0KCks
IHJocywgaW5kZXguZ2V0KCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVy
SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJl
dGVySW5saW5lcy5oCmluZGV4IDhjNzQxMjY2MjY1YzgxNDgwNmYxZjBmYjcxNDgzN2UyM2M1MGRj
OGQuLmU5NmIxMDVjYWYxYTJlMTA0MWM5OWJmNjFhOGI4YjY3MzRkYWMxZDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJ
bmxpbmVzLmgKQEAgLTI2NTcsNiArMjY1NywxMSBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8
QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQog
ICAgICAgICBjbG9iYmVyV29ybGQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBjbG9iYmVyTGltaXQp
OwogICAgICAgICBicmVhazsKICAgICB9CisKKyAgICBjYXNlIERlZmluZURhdGFQcm9wZXJ0eToK
KyAgICBjYXNlIERlZmluZUFjY2Vzc29yUHJvcGVydHk6CisgICAgICAgIGNsb2JiZXJXb3JsZChu
b2RlLT5vcmlnaW4uc2VtYW50aWMsIGNsb2JiZXJMaW1pdCk7CisgICAgICAgIGJyZWFrOwogICAg
ICAgICAKICAgICBjYXNlIEluOiB7CiAgICAgICAgIC8vIEZJWE1FOiBXZSBjYW4gZGV0ZXJtaW5l
IHdoZW4gdGhlIHByb3BlcnR5IGRlZmluaXRlbHkgZXhpc3RzIGJhc2VkIG9uIGFic3RyYWN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4
IDA0NTIyODBkZDI2ZjQwYjBiY2E0NWQzODUxZDExMGRmNDE2YTBmYTcuLjBiNWZiOTVkOTU3YjEy
YTQzODFjZmZiOWI2YzJhNGViMzJhYjNhNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC00MjM4LDYgKzQyMzgsMzggQEAgYm9vbCBC
eXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgIE5F
WFRfT1BDT0RFKG9wX3B1dF9ieV92YWxfd2l0aF90aGlzKTsKICAgICAgICAgfQogCisgICAgICAg
IGNhc2Ugb3BfZGVmaW5lX2RhdGFfcHJvcGVydHk6IHsKKyAgICAgICAgICAgIE5vZGUqIGJhc2Ug
PSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpKTsK
KyAgICAgICAgICAgIE5vZGUqIHByb3BlcnR5ID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50
SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSk7CisgICAgICAgICAgICBOb2RlKiB2YWx1ZSA9IGdl
dChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCkpOworICAg
ICAgICAgICAgTm9kZSogYXR0cmlidXRlcyA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudElu
c3RydWN0aW9uWzRdLnUub3BlcmFuZCkpOworCisgICAgICAgICAgICBhZGRWYXJBcmdDaGlsZChi
YXNlKTsKKyAgICAgICAgICAgIGFkZFZhckFyZ0NoaWxkKHByb3BlcnR5KTsKKyAgICAgICAgICAg
IGFkZFZhckFyZ0NoaWxkKHZhbHVlKTsKKyAgICAgICAgICAgIGFkZFZhckFyZ0NoaWxkKGF0dHJp
YnV0ZXMpOworICAgICAgICAgICAgYWRkVG9HcmFwaChOb2RlOjpWYXJBcmcsIERlZmluZURhdGFQ
cm9wZXJ0eSwgT3BJbmZvKDApLCBPcEluZm8oMCkpOworCisgICAgICAgICAgICBORVhUX09QQ09E
RShvcF9kZWZpbmVfZGF0YV9wcm9wZXJ0eSk7CisgICAgICAgIH0KKworICAgICAgICBjYXNlIG9w
X2RlZmluZV9hY2Nlc3Nvcl9wcm9wZXJ0eTogeworICAgICAgICAgICAgTm9kZSogYmFzZSA9IGdl
dChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCkpOworICAg
ICAgICAgICAgTm9kZSogcHJvcGVydHkgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0
cnVjdGlvblsyXS51Lm9wZXJhbmQpKTsKKyAgICAgICAgICAgIE5vZGUqIGdldHRlciA9IGdldChW
aXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCkpOworICAgICAg
ICAgICAgTm9kZSogc2V0dGVyID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rp
b25bNF0udS5vcGVyYW5kKSk7CisgICAgICAgICAgICBOb2RlKiBhdHRyaWJ1dGVzID0gZ2V0KFZp
cnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bNV0udS5vcGVyYW5kKSk7CisKKyAgICAg
ICAgICAgIGFkZFZhckFyZ0NoaWxkKGJhc2UpOworICAgICAgICAgICAgYWRkVmFyQXJnQ2hpbGQo
cHJvcGVydHkpOworICAgICAgICAgICAgYWRkVmFyQXJnQ2hpbGQoZ2V0dGVyKTsKKyAgICAgICAg
ICAgIGFkZFZhckFyZ0NoaWxkKHNldHRlcik7CisgICAgICAgICAgICBhZGRWYXJBcmdDaGlsZChh
dHRyaWJ1dGVzKTsKKyAgICAgICAgICAgIGFkZFRvR3JhcGgoTm9kZTo6VmFyQXJnLCBEZWZpbmVB
Y2Nlc3NvclByb3BlcnR5LCBPcEluZm8oMCksIE9wSW5mbygwKSk7CisKKyAgICAgICAgICAgIE5F
WFRfT1BDT0RFKG9wX2RlZmluZV9hY2Nlc3Nvcl9wcm9wZXJ0eSk7CisgICAgICAgIH0KKwogICAg
ICAgICBjYXNlIG9wX3RyeV9nZXRfYnlfaWQ6CiAgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkOgog
ICAgICAgICBjYXNlIG9wX2dldF9ieV9pZF9wcm90b19sb2FkOgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCmluZGV4IDQ4ZmE0OTU3MmVjNTBlYzE1ZDAz
Nzc2YTUyMmQ2ZmJkMzUyYmZlOWEuLmMzMjNkNDZmYmMzY2Y1YzEwNDlmYTI2ZmMwZTE5MGYyMjcx
YTQ3MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0
aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5j
cHAKQEAgLTE3Myw2ICsxNzMsOCBAQCBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsKE9w
Y29kZUlEIG9wY29kZUlELCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1YwogICAgIGNhc2Ug
b3BfcHV0X2dldHRlcl9zZXR0ZXJfYnlfaWQ6CiAgICAgY2FzZSBvcF9wdXRfZ2V0dGVyX2J5X3Zh
bDoKICAgICBjYXNlIG9wX3B1dF9zZXR0ZXJfYnlfdmFsOgorICAgIGNhc2Ugb3BfZGVmaW5lX2Rh
dGFfcHJvcGVydHk6CisgICAgY2FzZSBvcF9kZWZpbmVfYWNjZXNzb3JfcHJvcGVydHk6CiAgICAg
Y2FzZSBvcF9kZWxfYnlfaWQ6CiAgICAgY2FzZSBvcF9kZWxfYnlfdmFsOgogICAgIGNhc2Ugb3Bf
am1wOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXpl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAppbmRleCBjMWMz
ZmRkZGI3YTdhNjBiNDY1MmExN2NhZTFhOTgzZjhjYWU5NjExLi5jY2NkZjhiY2Q2MjZhYTRkNjc2
MzczY2QyODQyZTJlNTZhZTBhYzEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Nsb2JiZXJpemUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Ns
b2JiZXJpemUuaApAQCAtNDg2LDYgKzQ4Niw4IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3Jh
cGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAg
ICAgY2FzZSBQdXRHZXR0ZXJTZXR0ZXJCeUlkOgogICAgIGNhc2UgUHV0R2V0dGVyQnlWYWw6CiAg
ICAgY2FzZSBQdXRTZXR0ZXJCeVZhbDoKKyAgICBjYXNlIERlZmluZURhdGFQcm9wZXJ0eToKKyAg
ICBjYXNlIERlZmluZUFjY2Vzc29yUHJvcGVydHk6CiAgICAgY2FzZSBEZWxldGVCeUlkOgogICAg
IGNhc2UgRGVsZXRlQnlWYWw6CiAgICAgY2FzZSBBcnJheVB1c2g6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0RvZXNHQy5jcHAKaW5kZXggMmRjZjU1ZDJlZDI4YWFlNjBiNmI4YjdiOWJmNmRh
MDcxOWQ5MmRkNS4uZjY5ZDJmOWZmOTdkNDA4YThmMmU4MTc2ZjVhYTdiM2M5Yzc1M2RiZiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAtMTExLDYgKzExMSw4IEBA
IGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIFB1dEdldHRl
clNldHRlckJ5SWQ6CiAgICAgY2FzZSBQdXRHZXR0ZXJCeVZhbDoKICAgICBjYXNlIFB1dFNldHRl
ckJ5VmFsOgorICAgIGNhc2UgRGVmaW5lRGF0YVByb3BlcnR5OgorICAgIGNhc2UgRGVmaW5lQWNj
ZXNzb3JQcm9wZXJ0eToKICAgICBjYXNlIERlbGV0ZUJ5SWQ6CiAgICAgY2FzZSBEZWxldGVCeVZh
bDoKICAgICBjYXNlIENoZWNrU3RydWN0dXJlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRml4dXBQaGFzZS5jcHAKaW5kZXggNmVlNTE0MmY3OGY2MGJmMTA5NjgzYzhiODljMTVkMGU0
NThiM2ZlMC4uZDNjNTk0MTA0YWM5MzBkNTQxZTI2NjkyYTA1YWQ1NWI5ZGQ2OTkzMiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCkBAIC0xNjAyLDYgKzE2
MDIsMzkgQEAgY2xhc3MgRml4dXBQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICBm
aXhFZGdlPFVudHlwZWRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIGJyZWFrOwog
CisgICAgICAgIGNhc2UgRGVmaW5lRGF0YVByb3BlcnR5OiB7CisgICAgICAgICAgICBmaXhFZGdl
PENlbGxVc2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCkpOworICAgICAgICAgICAgRWRn
ZSYgcHJvcGVydHlFZGdlID0gbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKTsKKyAgICAgICAg
ICAgIGlmIChwcm9wZXJ0eUVkZ2UtPnNob3VsZFNwZWN1bGF0ZVN5bWJvbCgpKQorICAgICAgICAg
ICAgICAgIGZpeEVkZ2U8U3ltYm9sVXNlPihwcm9wZXJ0eUVkZ2UpOworICAgICAgICAgICAgZWxz
ZSBpZiAocHJvcGVydHlFZGdlLT5zaG91bGRTcGVjdWxhdGVTdHJpbmdJZGVudCgpKQorICAgICAg
ICAgICAgICAgIGZpeEVkZ2U8U3RyaW5nSWRlbnRVc2U+KHByb3BlcnR5RWRnZSk7CisgICAgICAg
ICAgICBlbHNlIGlmIChwcm9wZXJ0eUVkZ2UtPnNob3VsZFNwZWN1bGF0ZVN0cmluZygpKQorICAg
ICAgICAgICAgICAgIGZpeEVkZ2U8U3RyaW5nVXNlPihwcm9wZXJ0eUVkZ2UpOworICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgIGZpeEVkZ2U8VW50eXBlZFVzZT4ocHJvcGVydHlFZGdl
KTsKKyAgICAgICAgICAgIGZpeEVkZ2U8VW50eXBlZFVzZT4obV9ncmFwaC52YXJBcmdDaGlsZChu
b2RlLCAyKSk7CisgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihtX2dyYXBoLnZhckFyZ0No
aWxkKG5vZGUsIDMpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAg
Y2FzZSBEZWZpbmVBY2Nlc3NvclByb3BlcnR5OiB7CisgICAgICAgICAgICBmaXhFZGdlPENlbGxV
c2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCkpOworICAgICAgICAgICAgRWRnZSYgcHJv
cGVydHlFZGdlID0gbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKTsKKyAgICAgICAgICAgIGlm
IChwcm9wZXJ0eUVkZ2UtPnNob3VsZFNwZWN1bGF0ZVN5bWJvbCgpKQorICAgICAgICAgICAgICAg
IGZpeEVkZ2U8U3ltYm9sVXNlPihwcm9wZXJ0eUVkZ2UpOworICAgICAgICAgICAgZWxzZSBpZiAo
cHJvcGVydHlFZGdlLT5zaG91bGRTcGVjdWxhdGVTdHJpbmdJZGVudCgpKQorICAgICAgICAgICAg
ICAgIGZpeEVkZ2U8U3RyaW5nSWRlbnRVc2U+KHByb3BlcnR5RWRnZSk7CisgICAgICAgICAgICBl
bHNlIGlmIChwcm9wZXJ0eUVkZ2UtPnNob3VsZFNwZWN1bGF0ZVN0cmluZygpKQorICAgICAgICAg
ICAgICAgIGZpeEVkZ2U8U3RyaW5nVXNlPihwcm9wZXJ0eUVkZ2UpOworICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgIGZpeEVkZ2U8VW50eXBlZFVzZT4ocHJvcGVydHlFZGdlKTsKKyAg
ICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVzZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAyKSk7
CisgICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwg
MykpOworICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obV9ncmFwaC52YXJBcmdDaGlsZChu
b2RlLCA0KSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAjaWYgIUFTU0VSVF9E
SVNBQkxFRAogICAgICAgICAvLyBIYXZlIHRoZXNlIG5vLW9wIGNhc2VzIGhlcmUgdG8gZW5zdXJl
IHRoYXQgbm9ib2R5IGZvcmdldHMgdG8gYWRkIGhhbmRsZXJzIGZvciBuZXcgb3Bjb2Rlcy4KICAg
ICAgICAgY2FzZSBTZXRBcmd1bWVudDoKQEAgLTE2NzEsOCArMTcwNCw2IEBAIGNsYXNzIEZpeHVw
UGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICBjYXNlIEdldEJ5VmFsV2l0aFRoaXM6CiAg
ICAgICAgIGNhc2UgQ29tcGFyZUVxUHRyOgogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICAKLSAgICAgICAgICAgIGJyZWFrOwogI2Vsc2UKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAg
ICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
VHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCmluZGV4IDFm
MzVlYjJkOTAzYjQ2NmMyNDE4YzNkYzFiNjE4NTNlYmU1ZDY5NzkuLjI1MTVlYjM0MmJkNzM4OWUx
MTg4N2FiZDgyZjBlY2ZmMDEwN2RiYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZVR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05v
ZGVUeXBlLmgKQEAgLTE5OSw2ICsxOTksOCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERG
RyB7CiAgICAgbWFjcm8oUHV0R2V0dGVyU2V0dGVyQnlJZCwgTm9kZU11c3RHZW5lcmF0ZSkgXAog
ICAgIG1hY3JvKFB1dEdldHRlckJ5VmFsLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8o
UHV0U2V0dGVyQnlWYWwsIE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNybyhEZWZpbmVEYXRh
UHJvcGVydHksIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlSGFzVmFyQXJncykgXAorICAgIG1hY3Jv
KERlZmluZUFjY2Vzc29yUHJvcGVydHksIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlSGFzVmFyQXJn
cykgXAogICAgIG1hY3JvKERlbGV0ZUJ5SWQsIE5vZGVSZXN1bHRCb29sZWFuIHwgTm9kZU11c3RH
ZW5lcmF0ZSkgXAogICAgIG1hY3JvKERlbGV0ZUJ5VmFsLCBOb2RlUmVzdWx0Qm9vbGVhbiB8IE5v
ZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhDaGVja1N0cnVjdHVyZSwgTm9kZU11c3RHZW5l
cmF0ZSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRp
b25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKaW5k
ZXggN2U4Y2M1OGM4ZDgzMzg5YjZjZDI5MTFkNWFhZThkMzc4NDY1MDU4OC4uYjY4YzhhZDE1NDdi
NmVkZTk4MzIxZWQxZjMzMDYyY2JmODMwMzk1ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09wZXJhdGlvbnMuY3BwCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiREZHVG9G
VExEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suaCIKICNpbmNsdWRlICJERkdUb0ZUTEZvck9T
UkVudHJ5RGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiREZHV29ya2xp
c3QuaCIKKyNpbmNsdWRlICJEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaCIKICNpbmNsdWRlICJE
aXJlY3RBcmd1bWVudHMuaCIKICNpbmNsdWRlICJGVExGb3JPU1JFbnRyeUpJVENvZGUuaCIKICNp
bmNsdWRlICJGVExPU1JFbnRyeS5oIgpAQCAtOTk0LDYgKzk5NSw5MiBAQCB2b2lkIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uUHV0QnlWYWxXaXRoVGhpcyhFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRK
U1ZhbHVlIGVuYwogICAgIHB1dFdpdGhUaGlzPGZhbHNlPihleGVjLCBlbmNvZGVkQmFzZSwgZW5j
b2RlZFRoaXMsIGVuY29kZWRWYWx1ZSwgcHJvcGVydHkpOwogfQogCitBTFdBWVNfSU5MSU5FIHN0
YXRpYyB2b2lkIGRlZmluZURhdGFQcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwgSlNP
YmplY3QqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1
ZSwgaW50MzJfdCBhdHRyaWJ1dGVzKQoreworICAgIFByb3BlcnR5RGVzY3JpcHRvciBkZXNjcmlw
dG9yID0gdG9Qcm9wZXJ0eURlc2NyaXB0b3IodmFsdWUsIGpzVW5kZWZpbmVkKCksIGpzVW5kZWZp
bmVkKCksIERlZmluZVByb3BlcnR5QXR0cmlidXRlcyhhdHRyaWJ1dGVzKSk7CisgICAgQVNTRVJU
KChkZXNjcmlwdG9yLmF0dHJpYnV0ZXMoKSAmIEFjY2Vzc29yKSB8fCAoIWRlc2NyaXB0b3IuaXNB
Y2Nlc3NvckRlc2NyaXB0b3IoKSkpOworICAgIGJhc2UtPm1ldGhvZFRhYmxlKHZtKS0+ZGVmaW5l
T3duUHJvcGVydHkoYmFzZSwgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCB0cnVlKTsK
K30KKwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlZmluZURhdGFQcm9wZXJ0eShFeGVj
U3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkUHJvcGVy
dHksIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgaW50MzJfdCBhdHRyaWJ1dGVzKQorewor
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cigmdm0sIGV4ZWMpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KworICAgIElkZW50aWZpZXIgcHJvcGVydHlOYW1lID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRQ
cm9wZXJ0eSkudG9Qcm9wZXJ0eUtleShleGVjKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB2b2lkKCkpOworICAgIGRlZmluZURhdGFQcm9wZXJ0eShleGVjLCB2bSwgYmFzZSwgcHJv
cGVydHlOYW1lLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSwgYXR0cmlidXRlcyk7Cit9
CisKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWZpbmVEYXRhUHJvcGVydHlTdHJpbmco
RXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogYmFzZSwgSlNTdHJpbmcqIHByb3BlcnR5LCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIGludDMyX3QgYXR0cmlidXRlcykKK3sKKyAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBl
eGVjKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBJ
ZGVudGlmaWVyIHByb3BlcnR5TmFtZSA9IHByb3BlcnR5LT50b0lkZW50aWZpZXIoZXhlYyk7Cisg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICBkZWZpbmVEYXRhUHJv
cGVydHkoZXhlYywgdm0sIGJhc2UsIHByb3BlcnR5TmFtZSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRWYWx1ZSksIGF0dHJpYnV0ZXMpOworfQorCit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
RGVmaW5lRGF0YVByb3BlcnR5U3RyaW5nSWRlbnQoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCog
YmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqIHByb3BlcnR5LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUsIGludDMyX3QgYXR0cmlidXRlcykKK3sKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKKyAgICBkZWZpbmVE
YXRhUHJvcGVydHkoZXhlYywgdm0sIGJhc2UsIElkZW50aWZpZXI6OmZyb21VaWQoJnZtLCBwcm9w
ZXJ0eSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpLCBhdHRyaWJ1dGVzKTsKK30KKwor
dm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlZmluZURhdGFQcm9wZXJ0eVN5bWJvbChFeGVj
U3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlLCBTeW1ib2wqIHByb3BlcnR5LCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUsIGludDMyX3QgYXR0cmlidXRlcykKK3sKKyAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsK
KyAgICBkZWZpbmVEYXRhUHJvcGVydHkoZXhlYywgdm0sIGJhc2UsIElkZW50aWZpZXI6OmZyb21V
aWQocHJvcGVydHktPnByaXZhdGVOYW1lKCkpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVl
KSwgYXR0cmlidXRlcyk7Cit9CisKK0FMV0FZU19JTkxJTkUgc3RhdGljIHZvaWQgZGVmaW5lQWNj
ZXNzb3JQcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwgSlNPYmplY3QqIGJhc2UsIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNPYmplY3QqIGdldHRlciwgSlNPYmplY3Qq
IHNldHRlciwgaW50MzJfdCBhdHRyaWJ1dGVzKQoreworICAgIFByb3BlcnR5RGVzY3JpcHRvciBk
ZXNjcmlwdG9yID0gdG9Qcm9wZXJ0eURlc2NyaXB0b3IoanNVbmRlZmluZWQoKSwgZ2V0dGVyLCBz
ZXR0ZXIsIERlZmluZVByb3BlcnR5QXR0cmlidXRlcyhhdHRyaWJ1dGVzKSk7CisgICAgQVNTRVJU
KChkZXNjcmlwdG9yLmF0dHJpYnV0ZXMoKSAmIEFjY2Vzc29yKSB8fCAoIWRlc2NyaXB0b3IuaXNB
Y2Nlc3NvckRlc2NyaXB0b3IoKSkpOworICAgIGJhc2UtPm1ldGhvZFRhYmxlKHZtKS0+ZGVmaW5l
T3duUHJvcGVydHkoYmFzZSwgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCB0cnVlKTsK
K30KKwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlZmluZUFjY2Vzc29yUHJvcGVydHko
RXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogYmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFBy
b3BlcnR5LCBKU09iamVjdCogZ2V0dGVyLCBKU09iamVjdCogc2V0dGVyLCBpbnQzMl90IGF0dHJp
YnV0ZXMpCit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworCisgICAgSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUgPSBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZFByb3BlcnR5KS50b1Byb3BlcnR5S2V5KGV4ZWMpOworICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisgICAgZGVmaW5lQWNjZXNzb3JQcm9wZXJ0eShleGVj
LCB2bSwgYmFzZSwgcHJvcGVydHlOYW1lLCBnZXR0ZXIsIHNldHRlciwgYXR0cmlidXRlcyk7Cit9
CisKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWZpbmVBY2Nlc3NvclByb3BlcnR5U3Ry
aW5nKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGJhc2UsIEpTU3RyaW5nKiBwcm9wZXJ0eSwg
SlNPYmplY3QqIGdldHRlciwgSlNPYmplY3QqIHNldHRlciwgaW50MzJfdCBhdHRyaWJ1dGVzKQor
eworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcigmdm0sIGV4ZWMpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKworICAgIElkZW50aWZpZXIgcHJvcGVydHlOYW1lID0gcHJvcGVydHktPnRvSWRlbnRpZmll
cihleGVjKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworICAgIGRl
ZmluZUFjY2Vzc29yUHJvcGVydHkoZXhlYywgdm0sIGJhc2UsIHByb3BlcnR5TmFtZSwgZ2V0dGVy
LCBzZXR0ZXIsIGF0dHJpYnV0ZXMpOworfQorCit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
RGVmaW5lQWNjZXNzb3JQcm9wZXJ0eVN0cmluZ0lkZW50KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmpl
Y3QqIGJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKiBwcm9wZXJ0eSwgSlNPYmplY3QqIGdldHRlciwg
SlNPYmplY3QqIHNldHRlciwgaW50MzJfdCBhdHRyaWJ1dGVzKQoreworICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOwor
ICAgIGRlZmluZUFjY2Vzc29yUHJvcGVydHkoZXhlYywgdm0sIGJhc2UsIElkZW50aWZpZXI6OmZy
b21VaWQoJnZtLCBwcm9wZXJ0eSksIGdldHRlciwgc2V0dGVyLCBhdHRyaWJ1dGVzKTsKK30KKwor
dm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlZmluZUFjY2Vzc29yUHJvcGVydHlTeW1ib2wo
RXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogYmFzZSwgU3ltYm9sKiBwcm9wZXJ0eSwgSlNPYmpl
Y3QqIGdldHRlciwgSlNPYmplY3QqIHNldHRlciwgaW50MzJfdCBhdHRyaWJ1dGVzKQoreworICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigm
dm0sIGV4ZWMpOworICAgIGRlZmluZUFjY2Vzc29yUHJvcGVydHkoZXhlYywgdm0sIGJhc2UsIElk
ZW50aWZpZXI6OmZyb21VaWQocHJvcGVydHktPnByaXZhdGVOYW1lKCkpLCBnZXR0ZXIsIHNldHRl
ciwgYXR0cmlidXRlcyk7Cit9CisKIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXJy
YXkoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIGFycmF5U3RydWN0dXJlLCB2b2lkKiBidWZm
ZXIsIHNpemVfdCBzaXplKQogewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAppbmRleCA1MjdiZmU1ODc2YWZjNzgzN2Jh
MzBmZDIxMGQ1YTQ3YzNiMjk1MWU0Li44NDIyMzg3NDExMjVmZjRlMTVjYzM3YjQ2MDBiMGNiZmMx
NDI5MDYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlv
bnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaApAQCAt
MTE0LDYgKzExNCwxNCBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFdpdGhU
aGlzKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSgogdm9pZCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblB1dEJ5SWRXaXRoVGhpc1N0cmljdChFeGVjU3RhdGUqLCBFbmNvZGVkSlNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBVbmlxdWVkU3RyaW5nSW1wbCop
IFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbFdpdGhU
aGlzKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUsIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uUHV0QnlWYWxXaXRoVGhpc1N0cmljdChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lO
VEVSTkFMOwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlZmluZURhdGFQcm9wZXJ0eShF
eGVjU3RhdGUqLCBKU09iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgaW50
MzJfdCkgV1RGX0lOVEVSTkFMOwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlZmluZURh
dGFQcm9wZXJ0eVN0cmluZyhFeGVjU3RhdGUqLCBKU09iamVjdCosIEpTU3RyaW5nKiwgRW5jb2Rl
ZEpTVmFsdWUsIGludDMyX3QpIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVy
YXRpb25EZWZpbmVEYXRhUHJvcGVydHlTdHJpbmdJZGVudChFeGVjU3RhdGUqLCBKU09iamVjdCos
IFVuaXF1ZWRTdHJpbmdJbXBsKiwgRW5jb2RlZEpTVmFsdWUsIGludDMyX3QpIFdURl9JTlRFUk5B
TDsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWZpbmVEYXRhUHJvcGVydHlTeW1ib2wo
RXhlY1N0YXRlKiwgSlNPYmplY3QqLCBTeW1ib2wqLCBFbmNvZGVkSlNWYWx1ZSwgaW50MzJfdCkg
V1RGX0lOVEVSTkFMOwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlZmluZUFjY2Vzc29y
UHJvcGVydHkoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgSlNPYmplY3Qq
LCBKU09iamVjdCosIGludDMyX3QpIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBv
cGVyYXRpb25EZWZpbmVBY2Nlc3NvclByb3BlcnR5U3RyaW5nKEV4ZWNTdGF0ZSosIEpTT2JqZWN0
KiwgSlNTdHJpbmcqLCBKU09iamVjdCosIEpTT2JqZWN0KiwgaW50MzJfdCkgV1RGX0lOVEVSTkFM
Owordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlZmluZUFjY2Vzc29yUHJvcGVydHlTdHJp
bmdJZGVudChFeGVjU3RhdGUqLCBKU09iamVjdCosIFVuaXF1ZWRTdHJpbmdJbXBsKiwgSlNPYmpl
Y3QqLCBKU09iamVjdCosIGludDMyX3QpIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElP
TiBvcGVyYXRpb25EZWZpbmVBY2Nlc3NvclByb3BlcnR5U3ltYm9sKEV4ZWNTdGF0ZSosIEpTT2Jq
ZWN0KiwgU3ltYm9sKiwgSlNPYmplY3QqLCBKU09iamVjdCosIGludDMyX3QpIFdURl9JTlRFUk5B
TDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJyYXlQdXNoKEV4ZWNT
dGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgSlNBcnJheSopIFdURl9JTlRFUk5B
TDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJyYXlQdXNoRG91Ymxl
KEV4ZWNTdGF0ZSosIGRvdWJsZSB2YWx1ZSwgSlNBcnJheSopIFdURl9JTlRFUk5BTDsKIEVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJyYXlQb3AoRXhlY1N0YXRlKiwgSlNB
cnJheSopIFdURl9JTlRFUk5BTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKaW5kZXggMDZkYjQwZWI2
NzY2NzI0NmQzNDkwOTA1OTE5YmY1YWJkMDBlYjk5ZS4uODdkYmU4M2E4ODkwYzFkN2FkMzQ4ZTA1
NGU1YTc5ZTlkNWE0NDJkOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKQEAgLTEwNDAsNiArMTA0
MCw4IEBAIGNsYXNzIFByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsK
ICAgICAgICAgY2FzZSBQdXRHZXR0ZXJTZXR0ZXJCeUlkOgogICAgICAgICBjYXNlIFB1dEdldHRl
ckJ5VmFsOgogICAgICAgICBjYXNlIFB1dFNldHRlckJ5VmFsOgorICAgICAgICBjYXNlIERlZmlu
ZURhdGFQcm9wZXJ0eToKKyAgICAgICAgY2FzZSBEZWZpbmVBY2Nlc3NvclByb3BlcnR5OgogICAg
ICAgICBjYXNlIERGRzo6SnVtcDoKICAgICAgICAgY2FzZSBCcmFuY2g6CiAgICAgICAgIGNhc2Ug
U3dpdGNoOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9F
eGVjdXRlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaApp
bmRleCAyMmI5MzQwMDU4M2FjNmRmODYzYjBiZTM4ZjZiODMzNmE1MDQxOWFjLi5jMTMyZjk1NzRi
MjVlNjRlNmFjYzU2MTYwYjk0Nzk1ODJiOTNhZjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaApAQCAtMjE0LDYgKzIxNCw4IEBAIGJvb2wgc2FmZVRv
RXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwgTm9kZSogbm9k
ZSkKICAgICBjYXNlIFB1dEdldHRlclNldHRlckJ5SWQ6CiAgICAgY2FzZSBQdXRHZXR0ZXJCeVZh
bDoKICAgICBjYXNlIFB1dFNldHRlckJ5VmFsOgorICAgIGNhc2UgRGVmaW5lRGF0YVByb3BlcnR5
OgorICAgIGNhc2UgRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eToKICAgICBjYXNlIENoZWNrU3RydWN0
dXJlOgogICAgIGNhc2UgR2V0RXhlY3V0YWJsZToKICAgICBjYXNlIEdldEJ1dHRlcmZseToKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXgg
Nzc3MWE5NTExYjJhODVhMjBjODg5MTZmYTQxOTMxNDc3YmM3NjA1Ny4uMTY0NWExZTc0ZGNjOWIw
ZmQyYzM4MjIzOWI5NDcyZTZlNThjM2JiNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTg2MzksNiArODYzOSwxNjUgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNvbXBhcmVFcVB0cihOb2RlKiBub2RlKQogICAgIGJsZXNz
ZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVEZWZpbmVEYXRhUHJvcGVydHkoTm9kZSogbm9kZSkKK3sKKyNpZiBVU0UoSlNW
QUxVRTY0KQorICAgIHN0YXRpY19hc3NlcnQoR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMgPj0g
NSwgIldlIGFyZSBhc3N1bWluZyB3ZSBoYXZlIGVub3VnaCByZWdpc3RlcnMgdG8gbWFrZSB0aGlz
IGNhbGwgd2l0aG91dCBpbmNyZW1lbnRhbGx5IHNldHRpbmcgdXAgdGhlIGFyZ3VtZW50cy4iKTsK
KyNlbHNlCisgICAgc3RhdGljX2Fzc2VydChHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycyA+PSA2
LCAiV2UgYXJlIGFzc3VtaW5nIHdlIGhhdmUgZW5vdWdoIHJlZ2lzdGVycyB0byBtYWtlIHRoaXMg
Y2FsbCB3aXRob3V0IGluY3JlbWVudGFsbHkgc2V0dGluZyB1cCB0aGUgYXJndW1lbnRzLiIpOwor
I2VuZGlmCisKKyAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG1faml0LmdyYXBo
KCkudmFyQXJnQ2hpbGQobm9kZSwgMCkpOworICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIo
KTsKKworICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG1faml0LmdyYXBoKCkudmFyQXJn
Q2hpbGQobm9kZSwgMikpOworICAgIEpTVmFsdWVSZWdzIHZhbHVlUmVncyA9IHZhbHVlLmpzVmFs
dWVSZWdzKCk7CisKKyAgICBTcGVjdWxhdGVJbnQzMk9wZXJhbmQgYXR0cmlidXRlcyh0aGlzLCBt
X2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIDMpKTsKKyAgICBHUFJSZWcgYXR0cmlidXRl
c0dQUiA9IGF0dHJpYnV0ZXMuZ3ByKCk7CisKKyAgICBFZGdlJiBwcm9wZXJ0eUVkZ2UgPSBtX2pp
dC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIDEpOworICAgIHN3aXRjaCAocHJvcGVydHlFZGdl
LnVzZUtpbmQoKSkgeworICAgIGNhc2UgU3RyaW5nVXNlOiB7CisgICAgICAgIFNwZWN1bGF0ZUNl
bGxPcGVyYW5kIHByb3BlcnR5KHRoaXMsIHByb3BlcnR5RWRnZSk7CisgICAgICAgIEdQUlJlZyBw
cm9wZXJ0eUdQUiA9IHByb3BlcnR5LmdwcigpOworICAgICAgICBzcGVjdWxhdGVTdHJpbmcocHJv
cGVydHlFZGdlLCBwcm9wZXJ0eUdQUik7CisKKyAgICAgICAgdXNlQ2hpbGRyZW4obm9kZSk7CisK
KyAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25EZWZpbmVEYXRhUHJvcGVydHlTdHJpbmcsIE5vUmVzdWx0LCBiYXNlR1BSLCBwcm9wZXJ0eUdQ
UiwgdmFsdWVSZWdzLCBhdHRyaWJ1dGVzR1BSKTsKKyAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hl
Y2soKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgU3RyaW5nSWRlbnRVc2U6IHsK
KyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgcHJvcGVydHkodGhpcywgcHJvcGVydHlFZGdl
KTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IGlkZW50KHRoaXMpOworCisgICAgICAgIEdQUlJlZyBw
cm9wZXJ0eUdQUiA9IHByb3BlcnR5LmdwcigpOworICAgICAgICBHUFJSZWcgaWRlbnRHUFIgPSBp
ZGVudC5ncHIoKTsKKworICAgICAgICBzcGVjdWxhdGVTdHJpbmcocHJvcGVydHlFZGdlLCBwcm9w
ZXJ0eUdQUik7CisgICAgICAgIHNwZWN1bGF0ZVN0cmluZ0lkZW50QW5kTG9hZFN0b3JhZ2UocHJv
cGVydHlFZGdlLCBwcm9wZXJ0eUdQUiwgaWRlbnRHUFIpOworCisgICAgICAgIHVzZUNoaWxkcmVu
KG5vZGUpOworCisgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CisgICAgICAgIGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uRGVmaW5lRGF0YVByb3BlcnR5U3RyaW5nSWRlbnQsIE5vUmVzdWx0LCBiYXNl
R1BSLCBpZGVudEdQUiwgdmFsdWVSZWdzLCBhdHRyaWJ1dGVzR1BSKTsKKyAgICAgICAgbV9qaXQu
ZXhjZXB0aW9uQ2hlY2soKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgU3ltYm9s
VXNlOiB7CisgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHByb3BlcnR5KHRoaXMsIHByb3Bl
cnR5RWRnZSk7CisgICAgICAgIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IHByb3BlcnR5LmdwcigpOwor
ICAgICAgICBzcGVjdWxhdGVTeW1ib2wocHJvcGVydHlFZGdlLCBwcm9wZXJ0eUdQUik7CisKKyAg
ICAgICAgdXNlQ2hpbGRyZW4obm9kZSk7CisKKyAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAg
ICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWZpbmVEYXRhUHJvcGVydHlTeW1ib2wsIE5v
UmVzdWx0LCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgdmFsdWVSZWdzLCBhdHRyaWJ1dGVzR1BSKTsK
KyAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQor
ICAgIGNhc2UgVW50eXBlZFVzZTogeworICAgICAgICBKU1ZhbHVlT3BlcmFuZCBwcm9wZXJ0eSh0
aGlzLCBwcm9wZXJ0eUVkZ2UpOworICAgICAgICBKU1ZhbHVlUmVncyBwcm9wZXJ0eVJlZ3MgPSBw
cm9wZXJ0eS5qc1ZhbHVlUmVncygpOworCisgICAgICAgIHVzZUNoaWxkcmVuKG5vZGUpOworCisg
ICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9u
RGVmaW5lRGF0YVByb3BlcnR5LCBOb1Jlc3VsdCwgYmFzZUdQUiwgcHJvcGVydHlSZWdzLCB2YWx1
ZVJlZ3MsIGF0dHJpYnV0ZXNHUFIpOworICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwor
ICAgICAgICBicmVhazsKKyAgICB9CisgICAgZGVmYXVsdDoKKyAgICAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisKKyAgICBub1Jlc3VsdChub2RlLCBVc2VDaGlsZHJl
bkNhbGxlZEV4cGxpY2l0bHkpOworfQorCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVm
aW5lQWNjZXNzb3JQcm9wZXJ0eShOb2RlKiBub2RlKQoreworI2lmIFVTRShKU1ZBTFVFNjQpCisg
ICAgc3RhdGljX2Fzc2VydChHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycyA+PSA1LCAiV2UgYXJl
IGFzc3VtaW5nIHdlIGhhdmUgZW5vdWdoIHJlZ2lzdGVycyB0byBtYWtlIHRoaXMgY2FsbCB3aXRo
b3V0IGluY3JlbWVudGFsbHkgc2V0dGluZyB1cCB0aGUgYXJndW1lbnRzLiIpOworI2Vsc2UKKyAg
ICBzdGF0aWNfYXNzZXJ0KEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzID49IDYsICJXZSBhcmUg
YXNzdW1pbmcgd2UgaGF2ZSBlbm91Z2ggcmVnaXN0ZXJzIHRvIG1ha2UgdGhpcyBjYWxsIHdpdGhv
dXQgaW5jcmVtZW50YWxseSBzZXR0aW5nIHVwIHRoZSBhcmd1bWVudHMuIik7CisjZW5kaWYKKwor
ICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbV9qaXQuZ3JhcGgoKS52YXJBcmdD
aGlsZChub2RlLCAwKSk7CisgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOworCisgICAg
U3BlY3VsYXRlQ2VsbE9wZXJhbmQgZ2V0dGVyKHRoaXMsIG1faml0LmdyYXBoKCkudmFyQXJnQ2hp
bGQobm9kZSwgMikpOworICAgIEdQUlJlZyBnZXR0ZXJHUFIgPSBnZXR0ZXIuZ3ByKCk7CisKKyAg
ICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBzZXR0ZXIodGhpcywgbV9qaXQuZ3JhcGgoKS52YXJBcmdD
aGlsZChub2RlLCAzKSk7CisgICAgR1BSUmVnIHNldHRlckdQUiA9IHNldHRlci5ncHIoKTsKKwor
ICAgIFNwZWN1bGF0ZUludDMyT3BlcmFuZCBhdHRyaWJ1dGVzKHRoaXMsIG1faml0LmdyYXBoKCku
dmFyQXJnQ2hpbGQobm9kZSwgNCkpOworICAgIEdQUlJlZyBhdHRyaWJ1dGVzR1BSID0gYXR0cmli
dXRlcy5ncHIoKTsKKworICAgIEVkZ2UmIHByb3BlcnR5RWRnZSA9IG1faml0LmdyYXBoKCkudmFy
QXJnQ2hpbGQobm9kZSwgMSk7CisgICAgc3dpdGNoIChwcm9wZXJ0eUVkZ2UudXNlS2luZCgpKSB7
CisgICAgY2FzZSBTdHJpbmdVc2U6IHsKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgcHJv
cGVydHkodGhpcywgcHJvcGVydHlFZGdlKTsKKyAgICAgICAgR1BSUmVnIHByb3BlcnR5R1BSID0g
cHJvcGVydHkuZ3ByKCk7CisgICAgICAgIHNwZWN1bGF0ZVN0cmluZyhwcm9wZXJ0eUVkZ2UsIHBy
b3BlcnR5R1BSKTsKKworICAgICAgICB1c2VDaGlsZHJlbihub2RlKTsKKworICAgICAgICBmbHVz
aFJlZ2lzdGVycygpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlZmluZUFjY2Vz
c29yUHJvcGVydHlTdHJpbmcsIE5vUmVzdWx0LCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgZ2V0dGVy
R1BSLCBzZXR0ZXJHUFIsIGF0dHJpYnV0ZXNHUFIpOworICAgICAgICBtX2ppdC5leGNlcHRpb25D
aGVjaygpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBTdHJpbmdJZGVudFVzZTog
eworICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBwcm9wZXJ0eSh0aGlzLCBwcm9wZXJ0eUVk
Z2UpOworICAgICAgICBHUFJUZW1wb3JhcnkgaWRlbnQodGhpcyk7CisKKyAgICAgICAgR1BSUmVn
IHByb3BlcnR5R1BSID0gcHJvcGVydHkuZ3ByKCk7CisgICAgICAgIEdQUlJlZyBpZGVudEdQUiA9
IGlkZW50LmdwcigpOworCisgICAgICAgIHNwZWN1bGF0ZVN0cmluZyhwcm9wZXJ0eUVkZ2UsIHBy
b3BlcnR5R1BSKTsKKyAgICAgICAgc3BlY3VsYXRlU3RyaW5nSWRlbnRBbmRMb2FkU3RvcmFnZShw
cm9wZXJ0eUVkZ2UsIHByb3BlcnR5R1BSLCBpZGVudEdQUik7CisKKyAgICAgICAgdXNlQ2hpbGRy
ZW4obm9kZSk7CisKKyAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAgICAgICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25EZWZpbmVBY2Nlc3NvclByb3BlcnR5U3RyaW5nSWRlbnQsIE5vUmVzdWx0
LCBiYXNlR1BSLCBpZGVudEdQUiwgZ2V0dGVyR1BSLCBzZXR0ZXJHUFIsIGF0dHJpYnV0ZXNHUFIp
OworICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOworICAgICAgICBicmVhazsKKyAgICB9
CisgICAgY2FzZSBTeW1ib2xVc2U6IHsKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgcHJv
cGVydHkodGhpcywgcHJvcGVydHlFZGdlKTsKKyAgICAgICAgR1BSUmVnIHByb3BlcnR5R1BSID0g
cHJvcGVydHkuZ3ByKCk7CisgICAgICAgIHNwZWN1bGF0ZVN5bWJvbChwcm9wZXJ0eUVkZ2UsIHBy
b3BlcnR5R1BSKTsKKworICAgICAgICB1c2VDaGlsZHJlbihub2RlKTsKKworICAgICAgICBmbHVz
aFJlZ2lzdGVycygpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlZmluZUFjY2Vz
c29yUHJvcGVydHlTeW1ib2wsIE5vUmVzdWx0LCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgZ2V0dGVy
R1BSLCBzZXR0ZXJHUFIsIGF0dHJpYnV0ZXNHUFIpOworICAgICAgICBtX2ppdC5leGNlcHRpb25D
aGVjaygpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBVbnR5cGVkVXNlOiB7Cisg
ICAgICAgIEpTVmFsdWVPcGVyYW5kIHByb3BlcnR5KHRoaXMsIHByb3BlcnR5RWRnZSk7CisgICAg
ICAgIEpTVmFsdWVSZWdzIHByb3BlcnR5UmVncyA9IHByb3BlcnR5LmpzVmFsdWVSZWdzKCk7CisK
KyAgICAgICAgdXNlQ2hpbGRyZW4obm9kZSk7CisKKyAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsK
KyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWZpbmVBY2Nlc3NvclByb3BlcnR5LCBO
b1Jlc3VsdCwgYmFzZUdQUiwgcHJvcGVydHlSZWdzLCBnZXR0ZXJHUFIsIHNldHRlckdQUiwgYXR0
cmlidXRlc0dQUik7CisgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CisgICAgICAgIGJy
ZWFrOworICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgIH0KKworICAgIG5vUmVzdWx0KG5vZGUsIFVzZUNoaWxkcmVuQ2FsbGVkRXhw
bGljaXRseSk7Cit9CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKIAogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXggZTdhMjli
NDMzNDZiMjQ4MjNhOTk4OWZlZTk1ZDY0MDVjMzE4ZGE3My4uYzJhM2NkMDAwOGRkZTU4NjQ0Mzcy
N2NkNDZlMGNkOTg3Y2YyOGVhZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuaApAQCAtMTM0NCw2ICsxMzQ0LDQ2IEBAIGNsYXNzIFNwZWN1bGF0aXZl
SklUIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFy
ZzIsIGFyZzMsIGFyZzQpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOwog
ICAgIH0KKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9u
X0VPSkpaIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEpTVmFsdWVSZWdzIGFyZzIsIEpTVmFsdWVS
ZWdzIGFyZzMsIEdQUlJlZyBhcmc0KQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVu
dHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIucGF5bG9hZEdQUigpLCBhcmczLnBheWxvYWRHUFIo
KSwgYXJnNCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CisgICAgfQor
ICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRU9Kc3NK
WiBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgSlNWYWx1ZVJlZ3MgYXJnMywg
R1BSUmVnIGFyZzQpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoYXJnMSwgYXJnMiwgYXJnMy5wYXlsb2FkR1BSKCksIGFyZzQpOworICAgICAgICByZXR1
cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOworICAgIH0KKyAgICBKSVRDb21waWxlcjo6Q2FsbCBj
YWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VPSUpaIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEs
IEdQUlJlZyBhcmcyLCBKU1ZhbHVlUmVncyBhcmczLCBHUFJSZWcgYXJnNCkKKyAgICB7CisgICAg
ICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczLnBh
eWxvYWRHUFIoKSwgYXJnNCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7
CisgICAgfQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRp
b25fRU9TeW1KWiBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgSlNWYWx1ZVJl
Z3MgYXJnMywgR1BSUmVnIGFyZzQpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMy5wYXlsb2FkR1BSKCksIGFyZzQpOworICAg
ICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOworICAgIH0KKyAgICBKSVRDb21waWxl
cjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VPSk9PWiBvcGVyYXRpb24sIEdQ
UlJlZyBhcmcxLCBKU1ZhbHVlUmVncyBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVnIGFyZzQsIEdQ
UlJlZyBhcmc1KQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0
YXRlKGFyZzEsIGFyZzIucGF5bG9hZEdQUigpLCBhcmczLCBhcmc0LCBhcmc1KTsKKyAgICAgICAg
cmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKKyAgICB9CisgICAgSklUQ29tcGlsZXI6OkNh
bGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FT0pzc09PWiBvcGVyYXRpb24sIEdQUlJl
ZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMsIEdQUlJlZyBhcmc0LCBHUFJSZWcgYXJn
NSkKKyAgICB7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcx
LCBhcmcyLCBhcmczLCBhcmc0LCBhcmc1KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGwob3Bl
cmF0aW9uKTsKKyAgICB9CisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJ
VE9wZXJhdGlvbl9FT0lPT1ogb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQ
UlJlZyBhcmczLCBHUFJSZWcgYXJnNCwgR1BSUmVnIGFyZzUpCisgICAgeworICAgICAgICBtX2pp
dC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMywgYXJnNCwgYXJn
NSk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CisgICAgfQorICAgIEpJ
VENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRU9TeW1PT1ogb3Bl
cmF0aW9uLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcgYXJn
NCwgR1BSUmVnIGFyZzUpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMywgYXJnNCwgYXJnNSk7CisgICAgICAgIHJldHVybiBh
cHBlbmRDYWxsKG9wZXJhdGlvbik7CisgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxP
cGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRU9KSVVpIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEdQ
UlJlZyBhcmcyLCBVbmlxdWVkU3RyaW5nSW1wbCogaW1wbCwgdW5zaWduZWQgdmFsdWUpCiAgICAg
ewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwg
VHJ1c3RlZEltbVB0cihpbXBsKSwgVHJ1c3RlZEltbTMyKHZhbHVlKSk7CkBAIC0xNzg4LDcgKzE4
MjgsNDYgQEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoRUFCSV8zMkJJVF9EVU1NWV9BUkcgYXJnMS5wYXlsb2FkR1BSKCks
IGFyZzEudGFnR1BSKCksIGFyZzIucGF5bG9hZEdQUigpLCBhcmcyLnRhZ0dQUigpLCBhcmczLnBh
eWxvYWRHUFIoKSwgYXJnMy50YWdHUFIoKSwgYXJnNC5wYXlsb2FkR1BSKCksIGFyZzQudGFnR1BS
KCkpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOwogICAgIH0KLQorICAg
IEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRU9KSlogb3Bl
cmF0aW9uLCBHUFJSZWcgYXJnMSwgSlNWYWx1ZVJlZ3MgYXJnMiwgSlNWYWx1ZVJlZ3MgYXJnMywg
R1BSUmVnIGFyZzQpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoYXJnMSwgYXJnMi5wYXlsb2FkR1BSKCksIGFyZzIudGFnR1BSKCksIGFyZzMucGF5bG9h
ZEdQUigpLCBhcmczLnRhZ0dQUigpLCBhcmc0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGwo
b3BlcmF0aW9uKTsKKyAgICB9CisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihW
X0pJVE9wZXJhdGlvbl9FT0pzc0paIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcy
LCBKU1ZhbHVlUmVncyBhcmczLCBHUFJSZWcgYXJnNCkKKyAgICB7CisgICAgICAgIG1faml0LnNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBFQUJJXzMyQklUX0RVTU1ZX0FS
RyBhcmczLnBheWxvYWRHUFIoKSwgYXJnMy50YWdHUFIoKSwgYXJnNCk7CisgICAgICAgIHJldHVy
biBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CisgICAgfQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNh
bGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRU9JSlogb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwg
R1BSUmVnIGFyZzIsIEpTVmFsdWVSZWdzIGFyZzMsIEdQUlJlZyBhcmc0KQorICAgIHsKKyAgICAg
ICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIEVBQklfMzJC
SVRfRFVNTVlfQVJHIGFyZzMucGF5bG9hZEdQUigpLCBhcmczLnRhZ0dQUigpLCBhcmc0KTsKKyAg
ICAgICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKKyAgICB9CisgICAgSklUQ29tcGls
ZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FT1N5bUpaIG9wZXJhdGlvbiwg
R1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBKU1ZhbHVlUmVncyBhcmczLCBHUFJSZWcgYXJnNCkK
KyAgICB7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBh
cmcyLCBFQUJJXzMyQklUX0RVTU1ZX0FSRyBhcmczLnBheWxvYWRHUFIoKSwgYXJnMy50YWdHUFIo
KSwgYXJnNCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CisgICAgfQor
ICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRU9KT09a
IG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEpTVmFsdWVSZWdzIGFyZzIsIEdQUlJlZyBhcmczLCBH
UFJSZWcgYXJnNCwgR1BSUmVnIGFyZzUpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMi5wYXlsb2FkR1BSKCksIGFyZzIudGFnR1BSKCks
IGFyZzMsIGFyZzQsIGFyZzUpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24p
OworICAgIH0KKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0
aW9uX0VPSnNzT09aIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcg
YXJnMywgR1BSUmVnIGFyZzQsIEdQUlJlZyBhcmc1KQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMsIGFyZzQsIGFyZzUpOwor
ICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOworICAgIH0KKyAgICBKSVRDb21w
aWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VPSU9PWiBvcGVyYXRpb24s
IEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMsIEdQUlJlZyBhcmc0LCBHUFJS
ZWcgYXJnNSkKKyAgICB7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShhcmcxLCBhcmcyLCBhcmczLCBhcmc0LCBhcmc1KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENh
bGwob3BlcmF0aW9uKTsKKyAgICB9CisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlv
bihWX0pJVE9wZXJhdGlvbl9FT1N5bU9PWiBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBHUFJSZWcg
YXJnMiwgR1BSUmVnIGFyZzMsIEdQUlJlZyBhcmc0LCBHUFJSZWcgYXJnNSkKKyAgICB7CisgICAg
ICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczLCBh
cmc0LCBhcmc1KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKKyAgICB9
CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FT0pJ
VWkgb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgSlNWYWx1ZVJlZ3MgYXJnMiwgVW5pcXVlZFN0cmlu
Z0ltcGwqIGltcGwsIHVuc2lnbmVkIHZhbHVlKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIucGF5bG9hZEdQUigpLCBhcmcyLnRhZ0dQ
UigpLCBUcnVzdGVkSW1tUHRyKGltcGwpLCBUcnVzdGVkSW1tMzIodmFsdWUpKTsKQEAgLTI1Nzks
NiArMjY1OCw4IEBAIGNsYXNzIFNwZWN1bGF0aXZlSklUIHsKICAgICB2b2lkIGNvbXBpbGVHZXRE
eW5hbWljVmFyKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVQdXREeW5hbWljVmFyKE5vZGUqKTsK
ICAgICB2b2lkIGNvbXBpbGVDb21wYXJlRXFQdHIoTm9kZSopOworICAgIHZvaWQgY29tcGlsZURl
ZmluZURhdGFQcm9wZXJ0eShOb2RlKik7CisgICAgdm9pZCBjb21waWxlRGVmaW5lQWNjZXNzb3JQ
cm9wZXJ0eShOb2RlKik7CiAKICAgICB2b2lkIG1vdmVUcnVlVG8oR1BSUmVnKTsKICAgICB2b2lk
IG1vdmVGYWxzZVRvKEdQUlJlZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCBhMjJkYmVhZGU3MTA4Zjc1NTk2NjZi
OTNmOWFlYzdlZjUwYzEzOTViLi5hYTc4YjBlNjllNGJlYjg1ZTJlMjE2YzhlZjU1OWVhMWY3M2Fh
ZDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQzMl82NC5jcHAKQEAgLTQ0OTEsNiArNDQ5MSwxNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2Ug
RGVmaW5lRGF0YVByb3BlcnR5OiB7CisgICAgICAgIGNvbXBpbGVEZWZpbmVEYXRhUHJvcGVydHko
bm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGNhc2UgRGVmaW5lQWNjZXNzb3JQ
cm9wZXJ0eTogeworICAgICAgICBjb21waWxlRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eShub2RlKTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBHZXRHbG9iYWxMZXhpY2FsVmFyaWFi
bGU6CiAgICAgY2FzZSBHZXRHbG9iYWxWYXI6IHsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3Vs
dFBheWxvYWQodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDY0LmNwcAppbmRleCA4Y2Q1ZDcxMzhmMDdjZGRkYzJjMmU3MGQ2ZjZkZjNjMWZi
MWFkYjZlLi43MjEwOTI1MjNlYjM3ZmFjY2YyMjY4ZGJiZmU3ZjE5NGUzMzI1MDAzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAg
LTQ0NDksNiArNDQ0OSwxNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5v
ZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgRGVmaW5lRGF0YVByb3BlcnR5
OiB7CisgICAgICAgIGNvbXBpbGVEZWZpbmVEYXRhUHJvcGVydHkobm9kZSk7CisgICAgICAgIGJy
ZWFrOworICAgIH0KKworICAgIGNhc2UgRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eTogeworICAgICAg
ICBjb21waWxlRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eShub2RlKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorCiAgICAgY2FzZSBHZXRHbG9iYWxMZXhpY2FsVmFyaWFibGU6CiAgICAgY2FzZSBHZXRH
bG9iYWxWYXI6IHsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAppbmRleCBjYWQ0NWZkYmFi
ZTkwZjQ0OTM0ZDE0YTRiZTNiZDEwZmM4Mjc2NDQ5Li5hMWNmODA4ODUyM2JkZDM3Y2IyMGRmMDgx
YjRhMDFkZDFhYmMwZDY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TENhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBh
YmlsaXRpZXMuY3BwCkBAIC0yNjIsNiArMjYyLDggQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBj
YW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBDb21wYXJlR3JlYXRlcjoKICAgICBjYXNl
IENvbXBhcmVHcmVhdGVyRXE6CiAgICAgY2FzZSBDb21wYXJlU3RyaWN0RXE6CisgICAgY2FzZSBE
ZWZpbmVEYXRhUHJvcGVydHk6CisgICAgY2FzZSBEZWZpbmVBY2Nlc3NvclByb3BlcnR5OgogICAg
ICAgICAvLyBUaGVzZSBhcmUgT0suCiAgICAgICAgIGJyZWFrOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggOWY4ODViODcxMzgzOTIwYjli
ZDRmMzg1ZTk5MjI0NzJmOWYyMzA2Zi4uMWZmMTAzODJhMmU0YjQ1ZmI4OTM2MDFiYTgzMzE3N2Y2
ODliMDVlMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRG
R1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0Iz
LmNwcApAQCAtNjkwLDYgKzY5MCwxMiBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBj
YXNlIFB1dEJ5VmFsV2l0aFRoaXM6CiAgICAgICAgICAgICBjb21waWxlUHV0QnlWYWxXaXRoVGhp
cygpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRGVmaW5lRGF0YVByb3BlcnR5
OgorICAgICAgICAgICAgY29tcGlsZURlZmluZURhdGFQcm9wZXJ0eSgpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eToKKyAgICAgICAgICAg
IGNvbXBpbGVEZWZpbmVBY2Nlc3NvclByb3BlcnR5KCk7CisgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBBcnJheVB1c2g6CiAgICAgICAgICAgICBjb21waWxlQXJyYXlQdXNoKCk7CiAg
ICAgICAgICAgICBicmVhazsKQEAgLTI3NjEsNiArMjc2Nyw3MSBAQCBjbGFzcyBMb3dlckRGR1Rv
QjMgewogICAgICAgICB2bUNhbGwoVm9pZCwgbV9vdXQub3BlcmF0aW9uKG1fZ3JhcGguaXNTdHJp
Y3RNb2RlRm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKSA/IG9wZXJhdGlvblB1dEJ5VmFsV2l0
aFRoaXNTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbFdpdGhUaGlzKSwKICAgICAgICAgICAgIG1f
Y2FsbEZyYW1lLCBiYXNlLCB0aGlzVmFsdWUsIHByb3BlcnR5LCB2YWx1ZSk7CiAgICAgfQorCisg
ICAgdm9pZCBjb21waWxlRGVmaW5lRGF0YVByb3BlcnR5KCkKKyAgICB7CisgICAgICAgIExWYWx1
ZSBiYXNlID0gbG93Q2VsbChtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMCkpOworICAgICAg
ICBMVmFsdWUgdmFsdWUgID0gbG93SlNWYWx1ZShtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwg
MikpOworICAgICAgICBMVmFsdWUgYXR0cmlidXRlcyA9IGxvd0ludDMyKG1fZ3JhcGgudmFyQXJn
Q2hpbGQobV9ub2RlLCAzKSk7CisgICAgICAgIEVkZ2UmIHByb3BlcnR5RWRnZSA9IG1fZ3JhcGgu
dmFyQXJnQ2hpbGQobV9ub2RlLCAxKTsKKyAgICAgICAgc3dpdGNoIChwcm9wZXJ0eUVkZ2UudXNl
S2luZCgpKSB7CisgICAgICAgIGNhc2UgU3RyaW5nVXNlOiB7CisgICAgICAgICAgICBMVmFsdWUg
cHJvcGVydHkgPSBsb3dTdHJpbmcocHJvcGVydHlFZGdlKTsKKyAgICAgICAgICAgIHZtQ2FsbChW
b2lkLCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uRGVmaW5lRGF0YVByb3BlcnR5U3RyaW5nKSwg
bV9jYWxsRnJhbWUsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSwgYXR0cmlidXRlcyk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFN0cmluZ0lkZW50VXNlOiB7Cisg
ICAgICAgICAgICBMVmFsdWUgcHJvcGVydHkgPSBsb3dTdHJpbmdJZGVudChwcm9wZXJ0eUVkZ2Up
OworICAgICAgICAgICAgdm1DYWxsKFZvaWQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25EZWZp
bmVEYXRhUHJvcGVydHlTdHJpbmdJZGVudCksIG1fY2FsbEZyYW1lLCBiYXNlLCBwcm9wZXJ0eSwg
dmFsdWUsIGF0dHJpYnV0ZXMpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAg
ICAgY2FzZSBTeW1ib2xVc2U6IHsKKyAgICAgICAgICAgIExWYWx1ZSBwcm9wZXJ0eSA9IGxvd1N5
bWJvbChwcm9wZXJ0eUVkZ2UpOworICAgICAgICAgICAgdm1DYWxsKFZvaWQsIG1fb3V0Lm9wZXJh
dGlvbihvcGVyYXRpb25EZWZpbmVEYXRhUHJvcGVydHlTeW1ib2wpLCBtX2NhbGxGcmFtZSwgYmFz
ZSwgcHJvcGVydHksIHZhbHVlLCBhdHRyaWJ1dGVzKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisgICAgICAgIGNhc2UgVW50eXBlZFVzZTogeworICAgICAgICAgICAgTFZhbHVlIHBy
b3BlcnR5ID0gbG93SlNWYWx1ZShwcm9wZXJ0eUVkZ2UpOworICAgICAgICAgICAgdm1DYWxsKFZv
aWQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25EZWZpbmVEYXRhUHJvcGVydHkpLCBtX2NhbGxG
cmFtZSwgYmFzZSwgcHJvcGVydHksIHZhbHVlLCBhdHRyaWJ1dGVzKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBjb21waWxl
RGVmaW5lQWNjZXNzb3JQcm9wZXJ0eSgpCisgICAgeworICAgICAgICBMVmFsdWUgYmFzZSA9IGxv
d0NlbGwobV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDApKTsKKyAgICAgICAgTFZhbHVlIGdl
dHRlciA9IGxvd0NlbGwobV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDIpKTsKKyAgICAgICAg
TFZhbHVlIHNldHRlciA9IGxvd0NlbGwobV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDMpKTsK
KyAgICAgICAgTFZhbHVlIGF0dHJpYnV0ZXMgPSBsb3dJbnQzMihtX2dyYXBoLnZhckFyZ0NoaWxk
KG1fbm9kZSwgNCkpOworICAgICAgICBFZGdlJiBwcm9wZXJ0eUVkZ2UgPSBtX2dyYXBoLnZhckFy
Z0NoaWxkKG1fbm9kZSwgMSk7CisgICAgICAgIHN3aXRjaCAocHJvcGVydHlFZGdlLnVzZUtpbmQo
KSkgeworICAgICAgICBjYXNlIFN0cmluZ1VzZTogeworICAgICAgICAgICAgTFZhbHVlIHByb3Bl
cnR5ID0gbG93U3RyaW5nKHByb3BlcnR5RWRnZSk7CisgICAgICAgICAgICB2bUNhbGwoVm9pZCwg
bV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkRlZmluZUFjY2Vzc29yUHJvcGVydHlTdHJpbmcpLCBt
X2NhbGxGcmFtZSwgYmFzZSwgcHJvcGVydHksIGdldHRlciwgc2V0dGVyLCBhdHRyaWJ1dGVzKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgU3RyaW5nSWRlbnRV
c2U6IHsKKyAgICAgICAgICAgIExWYWx1ZSBwcm9wZXJ0eSA9IGxvd1N0cmluZ0lkZW50KHByb3Bl
cnR5RWRnZSk7CisgICAgICAgICAgICB2bUNhbGwoVm9pZCwgbV9vdXQub3BlcmF0aW9uKG9wZXJh
dGlvbkRlZmluZUFjY2Vzc29yUHJvcGVydHlTdHJpbmdJZGVudCksIG1fY2FsbEZyYW1lLCBiYXNl
LCBwcm9wZXJ0eSwgZ2V0dGVyLCBzZXR0ZXIsIGF0dHJpYnV0ZXMpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBTeW1ib2xVc2U6IHsKKyAgICAgICAgICAgIExW
YWx1ZSBwcm9wZXJ0eSA9IGxvd1N5bWJvbChwcm9wZXJ0eUVkZ2UpOworICAgICAgICAgICAgdm1D
YWxsKFZvaWQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25EZWZpbmVBY2Nlc3NvclByb3BlcnR5
U3ltYm9sKSwgbV9jYWxsRnJhbWUsIGJhc2UsIHByb3BlcnR5LCBnZXR0ZXIsIHNldHRlciwgYXR0
cmlidXRlcyk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFVu
dHlwZWRVc2U6IHsKKyAgICAgICAgICAgIExWYWx1ZSBwcm9wZXJ0eSA9IGxvd0pTVmFsdWUocHJv
cGVydHlFZGdlKTsKKyAgICAgICAgICAgIHZtQ2FsbChWb2lkLCBtX291dC5vcGVyYXRpb24ob3Bl
cmF0aW9uRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eSksIG1fY2FsbEZyYW1lLCBiYXNlLCBwcm9wZXJ0
eSwgZ2V0dGVyLCBzZXR0ZXIsIGF0dHJpYnV0ZXMpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgIH0KKyAgICB9CiAgICAgCiAgICAgdm9pZCBjb21waWxlUHV0QnlJ
ZCgpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhl
bHBlcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuY3BwCmlu
ZGV4IDc1ZDE1YTYyM2M3MmM0NGFkYzRhNGI5YzEzZjg1ODZmMjcyMjZiODUuLjNjM2RmNjE4Zjk5
ZmViOTQxNTQ0MDA5OTg1NWRlMWZiYWY1Y2I5ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0NDYWxsSGVscGVycy5jcHAKQEAgLTY4LDEwNyArNjgsNiBAQCB2b2lkIENDYWxsSGVscGVy
czo6ZW5zdXJlU2hhZG93Q2hpY2tlblBhY2tldChHUFJSZWcgc2hhZG93UGFja2V0LCBHUFJSZWcg
c2NyYXRjaAogICAgIHN0b3JlUHRyKHNjcmF0Y2gyLCBBZGRyZXNzKHNjcmF0Y2gxTm9uQXJnR1BS
KSk7CiB9CiAKLSNpZiBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTID49IDQKLXZvaWQgQ0Nh
bGxIZWxwZXJzOjpzZXR1cEZvdXJTdHViQXJnc0dQUihHUFJSZWcgZGVzdEEsIEdQUlJlZyBkZXN0
QiwgR1BSUmVnIGRlc3RDLCBHUFJSZWcgZGVzdEQsIEdQUlJlZyBzcmNBLCBHUFJSZWcgc3JjQiwg
R1BSUmVnIHNyY0MsIEdQUlJlZyBzcmNEKQotewotICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7
Ci0gICAgICAgIFJlZ2lzdGVyU2V0IGRlc3RpbmF0aW9ucyhkZXN0QSwgZGVzdEIsIGRlc3RDLCBk
ZXN0RCk7Ci0gICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoZGVzdGluYXRpb25zLm51bWJlck9m
U2V0R1BScygpID09IDQsICJEZXN0aW5hdGlvbnMgc2hvdWxkIG5vdCBiZSBhbGlhc2VkLiIpOwot
ICAgIH0KLQotICAgIHR5cGVkZWYgc3RkOjpwYWlyPEdQUlJlZywgR1BSUmVnPiBSZWdQYWlyOwot
ICAgIFZlY3RvcjxSZWdQYWlyLCA0PiBwYWlyczsKLQotICAgIGlmIChzcmNBICE9IGRlc3RBKQot
ICAgICAgICBwYWlycy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoc3JjQSwgZGVzdEEpKTsKLSAgICBp
ZiAoc3JjQiAhPSBkZXN0QikKLSAgICAgICAgcGFpcnMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKHNy
Y0IsIGRlc3RCKSk7Ci0gICAgaWYgKHNyY0MgIT0gZGVzdEMpCi0gICAgICAgIHBhaXJzLmFwcGVu
ZChzdGQ6Om1ha2VfcGFpcihzcmNDLCBkZXN0QykpOwotICAgIGlmIChzcmNEICE9IGRlc3REKQot
ICAgICAgICBwYWlycy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoc3JjRCwgZGVzdEQpKTsKLQotCi0j
aWYgIUFTU0VSVF9ESVNBQkxFRAotICAgIGF1dG8gbnVtVW5pcXVlU291cmNlcyA9IFsmXSAoKSAt
PiB1bnNpZ25lZCB7Ci0gICAgICAgIFJlZ2lzdGVyU2V0IHNldDsKLSAgICAgICAgZm9yIChhdXRv
JiBwYWlyIDogcGFpcnMpIHsKLSAgICAgICAgICAgIEdQUlJlZyBzb3VyY2UgPSBwYWlyLmZpcnN0
OwotICAgICAgICAgICAgc2V0LnNldChzb3VyY2UpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVy
biBzZXQubnVtYmVyT2ZTZXRHUFJzKCk7Ci0gICAgfTsKLQotICAgIGF1dG8gbnVtVW5pcXVlRGVz
dHMgPSBbJl0gKCkgLT4gdW5zaWduZWQgewotICAgICAgICBSZWdpc3RlclNldCBzZXQ7Ci0gICAg
ICAgIGZvciAoYXV0byYgcGFpciA6IHBhaXJzKSB7Ci0gICAgICAgICAgICBHUFJSZWcgZGVzdCA9
IHBhaXIuc2Vjb25kOwotICAgICAgICAgICAgc2V0LnNldChkZXN0KTsKLSAgICAgICAgfQotICAg
ICAgICByZXR1cm4gc2V0Lm51bWJlck9mU2V0R1BScygpOwotICAgIH07Ci0jZW5kaWYKLQotICAg
IHdoaWxlIChwYWlycy5zaXplKCkpIHsKLSAgICAgICAgUmVnaXN0ZXJTZXQgZnJlZURlc3RpbmF0
aW9uczsKLSAgICAgICAgZm9yIChhdXRvJiBwYWlyIDogcGFpcnMpIHsKLSAgICAgICAgICAgIEdQ
UlJlZyBkZXN0ID0gcGFpci5zZWNvbmQ7Ci0gICAgICAgICAgICBmcmVlRGVzdGluYXRpb25zLnNl
dChkZXN0KTsKLSAgICAgICAgfQotICAgICAgICBmb3IgKGF1dG8mIHBhaXIgOiBwYWlycykgewot
ICAgICAgICAgICAgR1BSUmVnIHNvdXJjZSA9IHBhaXIuZmlyc3Q7Ci0gICAgICAgICAgICBmcmVl
RGVzdGluYXRpb25zLmNsZWFyKHNvdXJjZSk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoZnJl
ZURlc3RpbmF0aW9ucy5udW1iZXJPZlNldEdQUnMoKSkgewotICAgICAgICAgICAgYm9vbCBtYWRl
TW92ZSA9IGZhbHNlOwotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBhaXJz
LnNpemUoKTsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgYXV0byYgcGFpciA9IHBhaXJzW2ldOwot
ICAgICAgICAgICAgICAgIEdQUlJlZyBzb3VyY2UgPSBwYWlyLmZpcnN0OwotICAgICAgICAgICAg
ICAgIEdQUlJlZyBkZXN0ID0gcGFpci5zZWNvbmQ7Ci0gICAgICAgICAgICAgICAgaWYgKGZyZWVE
ZXN0aW5hdGlvbnMuZ2V0KGRlc3QpKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1vdmUoc291cmNl
LCBkZXN0KTsKLSAgICAgICAgICAgICAgICAgICAgcGFpcnMucmVtb3ZlKGkpOwotICAgICAgICAg
ICAgICAgICAgICBtYWRlTW92ZSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIEFTU0VSVF9VTlVT
RUQobWFkZU1vdmUsIG1hZGVNb3ZlKTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9
Ci0KLSAgICAgICAgQVNTRVJUKG51bVVuaXF1ZURlc3RzKCkgPT0gbnVtVW5pcXVlU291cmNlcygp
KTsKLSAgICAgICAgQVNTRVJUKG51bVVuaXF1ZURlc3RzKCkgPT0gcGFpcnMuc2l6ZSgpKTsKLSAg
ICAgICAgLy8gVGhlIHNldCBvZiBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIHJlZ2lzdGVycyBhcmUg
ZXF1aXZhbGVudCBzZXRzLiBUaGlzIG1lYW5zIHdlIGRvbid0IGhhdmUKLSAgICAgICAgLy8gYW55
IGZyZWUgZGVzdGluYXRpb24gcmVnaXN0ZXJzIHRoYXQgd29uJ3QgYWxzbyBjbG9iYmVyIGEgc291
cmNlLiBXZSBnZXQgYXJvdW5kIHRoaXMgYnkKLSAgICAgICAgLy8gZXhjaGFuZ2luZyByZWdpc3Rl
cnMuCi0KLSAgICAgICAgR1BSUmVnIHNvdXJjZSA9IHBhaXJzWzBdLmZpcnN0OwotICAgICAgICBH
UFJSZWcgZGVzdCA9IHBhaXJzWzBdLnNlY29uZDsKLSAgICAgICAgc3dhcChzb3VyY2UsIGRlc3Qp
OwotICAgICAgICBwYWlycy5yZW1vdmUoMCk7Ci0KLSAgICAgICAgR1BSUmVnIG5ld1NvdXJjZSA9
IHNvdXJjZTsKLSAgICAgICAgZm9yIChhdXRvJiBwYWlyIDogcGFpcnMpIHsKLSAgICAgICAgICAg
IEdQUlJlZyBzb3VyY2UgPSBwYWlyLmZpcnN0OwotICAgICAgICAgICAgaWYgKHNvdXJjZSA9PSBk
ZXN0KSB7Ci0gICAgICAgICAgICAgICAgcGFpci5maXJzdCA9IG5ld1NvdXJjZTsKLSAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIC8vIFdl
IG1heSBoYXZlIGludHJvZHVjZWQgcGFpcnMgdGhhdCBoYXZlIHRoZSBzYW1lIHNvdXJjZSBhbmQg
ZGVzdGluYXRpb24uIFJlbW92ZSB0aG9zZSBub3cuCi0gICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBwYWlycy5zaXplKCk7IGkrKykgewotICAgICAgICAgICAgYXV0byYgcGFpciA9IHBh
aXJzW2ldOwotICAgICAgICAgICAgaWYgKHBhaXIuZmlyc3QgPT0gcGFpci5zZWNvbmQpIHsKLSAg
ICAgICAgICAgICAgICBwYWlycy5yZW1vdmUoaSk7Ci0gICAgICAgICAgICAgICAgaS0tOwotICAg
ICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotfQotI2VuZGlmIC8vIE5VTUJFUl9PRl9BUkdV
TUVOVF9SRUdJU1RFUlMgPj0gNAotCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEVO
QUJMRShKSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVs
cGVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAppbmRleCA3
OTQ1NDZiMGJkMjdhOTljMGMxOTg5YmUyZTQxMzE0MzRkYTQ4ZmFlLi42Y2MwNThmZmZkNjk4MDlh
NjkwNjNkZmIzMzE5ZGQ3ODVhZDgwNjEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0NDYWxsSGVscGVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0Nh
bGxIZWxwZXJzLmgKQEAgLTk4Nyw3ICs5ODcsMTQgQEAgY2xhc3MgQ0NhbGxIZWxwZXJzIDogcHVi
bGljIEFzc2VtYmx5SGVscGVycyB7CiAgICAgICAgICAgICBzd2FwKGRlc3RCLCBkZXN0Qyk7CiAg
ICAgfQogCi0gICAgdm9pZCBzZXR1cEZvdXJTdHViQXJnc0dQUihHUFJSZWcgZGVzdEEsIEdQUlJl
ZyBkZXN0QiwgR1BSUmVnIGRlc3RDLCBHUFJSZWcgZGVzdEQsIEdQUlJlZyBzcmNBLCBHUFJSZWcg
c3JjQiwgR1BSUmVnIHNyY0MsIEdQUlJlZyBzcmNEKTsKKyAgICB2b2lkIHNldHVwRm91clN0dWJB
cmdzR1BSKEdQUlJlZyBkZXN0QSwgR1BSUmVnIGRlc3RCLCBHUFJSZWcgZGVzdEMsIEdQUlJlZyBk
ZXN0RCwgR1BSUmVnIHNyY0EsIEdQUlJlZyBzcmNCLCBHUFJSZWcgc3JjQywgR1BSUmVnIHNyY0Qp
CisgICAgeworICAgICAgICBzZXR1cFN0dWJBcmdzR1BSPDQ+KHsgeyBkZXN0QSwgZGVzdEIsIGRl
c3RDLCBkZXN0RCB9IH0sIHsgeyBzcmNBLCBzcmNCLCBzcmNDLCBzcmNEIH0gfSk7CisgICAgfQor
ICAgIHZvaWQgc2V0dXBGaXZlU3R1YkFyZ3NHUFIoR1BSUmVnIGRlc3RBLCBHUFJSZWcgZGVzdEIs
IEdQUlJlZyBkZXN0QywgR1BSUmVnIGRlc3RELCBHUFJSZWcgZGVzdEUsIEdQUlJlZyBzcmNBLCBH
UFJSZWcgc3JjQiwgR1BSUmVnIHNyY0MsIEdQUlJlZyBzcmNELCBHUFJSZWcgc3JjRSkKKyAgICB7
CisgICAgICAgIHNldHVwU3R1YkFyZ3NHUFI8NT4oeyB7IGRlc3RBLCBkZXN0QiwgZGVzdEMsIGRl
c3RELCBkZXN0RSB9IH0sIHsgeyBzcmNBLCBzcmNCLCBzcmNDLCBzcmNELCBzcmNFIH0gfSk7Cisg
ICAgfQogCiAjaWYgQ1BVKFg4Nl82NCkgfHwgQ1BVKEFSTTY0KQogICAgIHRlbXBsYXRlPEZQUlJl
ZyBkZXN0QSwgRlBSUmVnIGRlc3RCPgpAQCAtMjE4NCw2ICsyMTkxLDEyIEBAIGNsYXNzIENDYWxs
SGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewogICAgICAgICBtb3ZlKEdQUkluZm86
OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwogICAgIH0KIAorICAg
IEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFy
ZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVnIGFyZzQsIEdQUlJlZyBhcmc1KQor
ICAgIHsKKyAgICAgICAgc2V0dXBGaXZlU3R1YkFyZ3NHUFIoR1BSSW5mbzo6YXJndW1lbnRHUFIx
LCBHUFJJbmZvOjphcmd1bWVudEdQUjIsIEdQUkluZm86OmFyZ3VtZW50R1BSMywgR1BSSW5mbzo6
YXJndW1lbnRHUFI0LCBHUFJJbmZvOjphcmd1bWVudEdQUjUsIGFyZzEsIGFyZzIsIGFyZzMsIGFy
ZzQsIGFyZzUpOworICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjApOworICAgIH0KKwogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIFRydXN0ZWRJbW1QdHIgYXJnMiwg
R1BSUmVnIGFyZzMsIEdQUlJlZyBhcmc0KQogICAgIHsKICAgICAgICAgc2V0dXBTdHViQXJndW1l
bnRzMTM0KGFyZzEsIGFyZzMsIGFyZzQpOwpAQCAtMjQ3Miw2ICsyNDg1LDEwNSBAQCBjbGFzcyBD
Q2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJzIHsKICAgICAgICAgLy8gUmVhZHkg
Zm9yIGEganVtcCEKICAgICAgICAgbW92ZShuZXdGcmFtZVBvaW50ZXIsIHN0YWNrUG9pbnRlclJl
Z2lzdGVyKTsKICAgICB9CisKKyNpZiBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTID49IDQK
KyAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBOdW1iZXJPZlJlZ2lzdGVycz4KKyAgICB2b2lkIHNldHVw
U3R1YkFyZ3NHUFIoc3RkOjphcnJheTxHUFJSZWcsIE51bWJlck9mUmVnaXN0ZXJzPiBkZXN0aW5h
dGlvbnMsIHN0ZDo6YXJyYXk8R1BSUmVnLCBOdW1iZXJPZlJlZ2lzdGVycz4gc291cmNlcykKKyAg
ICB7CisgICAgICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7CisgICAgICAgICAgICBSZWdpc3Rl
clNldCBzZXQ7CisgICAgICAgICAgICBmb3IgKEdQUlJlZyBkZXN0IDogZGVzdGluYXRpb25zKQor
ICAgICAgICAgICAgICAgIHNldC5zZXQoZGVzdCk7CisgICAgICAgICAgICBBU1NFUlRfV0lUSF9N
RVNTQUdFKHNldC5udW1iZXJPZlNldEdQUnMoKSA9PSBOdW1iZXJPZlJlZ2lzdGVycywgIkRlc3Rp
bmF0aW9ucyBzaG91bGQgbm90IGJlIGFsaWFzZWQuIik7CisgICAgICAgIH0KKworICAgICAgICB0
eXBlZGVmIHN0ZDo6cGFpcjxHUFJSZWcsIEdQUlJlZz4gUmVnUGFpcjsKKyAgICAgICAgVmVjdG9y
PFJlZ1BhaXIsIE51bWJlck9mUmVnaXN0ZXJzPiBwYWlyczsKKworICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgTnVtYmVyT2ZSZWdpc3RlcnM7ICsraSkgeworICAgICAgICAgICAgaWYg
KHNvdXJjZXNbaV0gIT0gZGVzdGluYXRpb25zW2ldKQorICAgICAgICAgICAgICAgIHBhaXJzLmFw
cGVuZChzdGQ6Om1ha2VfcGFpcihzb3VyY2VzW2ldLCBkZXN0aW5hdGlvbnNbaV0pKTsKKyAgICAg
ICAgfQorCisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgICAgICBhdXRvIG51bVVuaXF1ZVNvdXJj
ZXMgPSBbJl0gKCkgLT4gdW5zaWduZWQgeworICAgICAgICAgICAgUmVnaXN0ZXJTZXQgc2V0Owor
ICAgICAgICAgICAgZm9yIChhdXRvJiBwYWlyIDogcGFpcnMpIHsKKyAgICAgICAgICAgICAgICBH
UFJSZWcgc291cmNlID0gcGFpci5maXJzdDsKKyAgICAgICAgICAgICAgICBzZXQuc2V0KHNvdXJj
ZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gc2V0Lm51bWJlck9mU2V0R1BS
cygpOworICAgICAgICB9OworCisgICAgICAgIGF1dG8gbnVtVW5pcXVlRGVzdHMgPSBbJl0gKCkg
LT4gdW5zaWduZWQgeworICAgICAgICAgICAgUmVnaXN0ZXJTZXQgc2V0OworICAgICAgICAgICAg
Zm9yIChhdXRvJiBwYWlyIDogcGFpcnMpIHsKKyAgICAgICAgICAgICAgICBHUFJSZWcgZGVzdCA9
IHBhaXIuc2Vjb25kOworICAgICAgICAgICAgICAgIHNldC5zZXQoZGVzdCk7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICByZXR1cm4gc2V0Lm51bWJlck9mU2V0R1BScygpOworICAgICAgICB9
OworI2VuZGlmCisKKyAgICAgICAgd2hpbGUgKHBhaXJzLnNpemUoKSkgeworICAgICAgICAgICAg
UmVnaXN0ZXJTZXQgZnJlZURlc3RpbmF0aW9uczsKKyAgICAgICAgICAgIGZvciAoYXV0byYgcGFp
ciA6IHBhaXJzKSB7CisgICAgICAgICAgICAgICAgR1BSUmVnIGRlc3QgPSBwYWlyLnNlY29uZDsK
KyAgICAgICAgICAgICAgICBmcmVlRGVzdGluYXRpb25zLnNldChkZXN0KTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGZvciAoYXV0byYgcGFpciA6IHBhaXJzKSB7CisgICAgICAgICAgICAg
ICAgR1BSUmVnIHNvdXJjZSA9IHBhaXIuZmlyc3Q7CisgICAgICAgICAgICAgICAgZnJlZURlc3Rp
bmF0aW9ucy5jbGVhcihzb3VyY2UpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAo
ZnJlZURlc3RpbmF0aW9ucy5udW1iZXJPZlNldEdQUnMoKSkgeworICAgICAgICAgICAgICAgIGJv
b2wgbWFkZU1vdmUgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgcGFpcnMuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgYXV0byYgcGFp
ciA9IHBhaXJzW2ldOworICAgICAgICAgICAgICAgICAgICBHUFJSZWcgc291cmNlID0gcGFpci5m
aXJzdDsKKyAgICAgICAgICAgICAgICAgICAgR1BSUmVnIGRlc3QgPSBwYWlyLnNlY29uZDsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKGZyZWVEZXN0aW5hdGlvbnMuZ2V0KGRlc3QpKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBtb3ZlKHNvdXJjZSwgZGVzdCk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBwYWlycy5yZW1vdmUoaSk7CisgICAgICAgICAgICAgICAgICAgICAgICBtYWRlTW92
ZSA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBBU1NFUlRfVU5VU0VE
KG1hZGVNb3ZlLCBtYWRlTW92ZSk7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIEFTU0VSVChudW1VbmlxdWVEZXN0cygpID09IG51bVVuaXF1
ZVNvdXJjZXMoKSk7CisgICAgICAgICAgICBBU1NFUlQobnVtVW5pcXVlRGVzdHMoKSA9PSBwYWly
cy5zaXplKCkpOworICAgICAgICAgICAgLy8gVGhlIHNldCBvZiBzb3VyY2UgYW5kIGRlc3RpbmF0
aW9uIHJlZ2lzdGVycyBhcmUgZXF1aXZhbGVudCBzZXRzLiBUaGlzIG1lYW5zIHdlIGRvbid0IGhh
dmUKKyAgICAgICAgICAgIC8vIGFueSBmcmVlIGRlc3RpbmF0aW9uIHJlZ2lzdGVycyB0aGF0IHdv
bid0IGFsc28gY2xvYmJlciBhIHNvdXJjZS4gV2UgZ2V0IGFyb3VuZCB0aGlzIGJ5CisgICAgICAg
ICAgICAvLyBleGNoYW5naW5nIHJlZ2lzdGVycy4KKworICAgICAgICAgICAgR1BSUmVnIHNvdXJj
ZSA9IHBhaXJzWzBdLmZpcnN0OworICAgICAgICAgICAgR1BSUmVnIGRlc3QgPSBwYWlyc1swXS5z
ZWNvbmQ7CisgICAgICAgICAgICBzd2FwKHNvdXJjZSwgZGVzdCk7CisgICAgICAgICAgICBwYWly
cy5yZW1vdmUoMCk7CisKKyAgICAgICAgICAgIEdQUlJlZyBuZXdTb3VyY2UgPSBzb3VyY2U7Cisg
ICAgICAgICAgICBmb3IgKGF1dG8mIHBhaXIgOiBwYWlycykgeworICAgICAgICAgICAgICAgIEdQ
UlJlZyBzb3VyY2UgPSBwYWlyLmZpcnN0OworICAgICAgICAgICAgICAgIGlmIChzb3VyY2UgPT0g
ZGVzdCkgeworICAgICAgICAgICAgICAgICAgICBwYWlyLmZpcnN0ID0gbmV3U291cmNlOworICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIC8vIFdlIG1heSBoYXZlIGludHJvZHVjZWQgcGFpcnMgdGhhdCBoYXZl
IHRoZSBzYW1lIHNvdXJjZSBhbmQgZGVzdGluYXRpb24uIFJlbW92ZSB0aG9zZSBub3cuCisgICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGFpcnMuc2l6ZSgpOyBpKyspIHsKKyAg
ICAgICAgICAgICAgICBhdXRvJiBwYWlyID0gcGFpcnNbaV07CisgICAgICAgICAgICAgICAgaWYg
KHBhaXIuZmlyc3QgPT0gcGFpci5zZWNvbmQpIHsKKyAgICAgICAgICAgICAgICAgICAgcGFpcnMu
cmVtb3ZlKGkpOworICAgICAgICAgICAgICAgICAgICBpLS07CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorI2VuZGlmIC8vIE5VTUJFUl9PRl9BUkdV
TUVOVF9SRUdJU1RFUlMgPj0gNAogICAgIAogICAgIC8vIFRoZXNlIG9wZXJhdGlvbnMgY2xvYmJl
ciBhbGwgdm9sYXRpbGUgcmVnaXN0ZXJzLiBUaGV5IGFzc3VtZSB0aGF0IHRoZXJlIGlzIHJvb20g
b24gdGhlIHRvcCBvZgogICAgIC8vIHN0YWNrIHRvIG1hcnNoYWxsIGNhbGwgYXJndW1lbnRzLgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IDFhYmU3YzQzNDE3NDYzZjk2OTE2NTI5YTZl
NjE0ZWRlMDljN2ZkMzkuLjIzN2QxOWE0YjA4MmYxY2IwZTAyYzJlYTU3N2NjMWNjMzEwNzk0MzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTMyMiw2ICszMjIsOCBAQCB2b2lkIEpJ
VDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF9wdXRfZ2V0
dGVyX3NldHRlcl9ieV9pZCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9nZXR0ZXJfYnlfdmFs
KQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X3NldHRlcl9ieV92YWwpCisgICAgICAgIERFRklO
RV9PUChvcF9kZWZpbmVfZGF0YV9wcm9wZXJ0eSkKKyAgICAgICAgREVGSU5FX09QKG9wX2RlZmlu
ZV9hY2Nlc3Nvcl9wcm9wZXJ0eSkKIAogICAgICAgICBERUZJTkVfT1Aob3BfcmV0KQogICAgICAg
ICBERUZJTkVfT1Aob3BfcnNoaWZ0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXggYTE0YTg1
NmEwN2JkMjVhYWQ3Y2NlMGQzYjg0MGVlMjczZWVjZGZjNS4uNDUxYTIwZDU2NDEzOGVjYmQ3NWM0
ZGQzMmFkNGRjZmE2NDYyNjYxNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC01NjcsNiAr
NTY3LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfZ2V0dGVy
X3NldHRlcl9ieV9pZChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X2dl
dHRlcl9ieV92YWwoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9zZXR0
ZXJfYnlfdmFsKEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9kZWZpbmVfZGF0
YV9wcm9wZXJ0eShJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfZGVmaW5lX2Fj
Y2Vzc29yX3Byb3BlcnR5KEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9yZXQo
SW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3JzaGlmdChJbnN0cnVjdGlvbiop
OwogICAgICAgICB2b2lkIGVtaXRfb3Bfc2V0X2Z1bmN0aW9uX25hbWUoSW5zdHJ1Y3Rpb24qKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKaW5kZXggOTM1YzRmYWIx
OWQyZDc3OWE1MGViNGU3N2YzNTE4NjFiMjExYTNmNi4uNDdmZTk1NzNmYWQ3NTZhMjYyNjc0ODFm
ZDZhY2VhYjg2ZTkzZTUyOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRp
b25zLmgKQEAgLTU5LDYgKzU5LDcgQEAgY2xhc3MgUmVnRXhwT2JqZWN0OwogY2xhc3MgUmVnaXN0
ZXI7CiBjbGFzcyBTdHJ1Y3R1cmU7CiBjbGFzcyBTdHJ1Y3R1cmVTdHViSW5mbzsKK2NsYXNzIFN5
bWJvbDsKIGNsYXNzIFN5bWJvbFRhYmxlOwogY2xhc3MgV2F0Y2hwb2ludFNldDsKIApAQCAtMTEx
LDYgKzExMiw3IEBAIHR5cGVkZWYgY2hhciogVW51c2VkUHRyOwogICAgIFNzaTogU3RydWN0dXJl
U3R1YkluZm8qCiAgICAgU3Q6IFN0cnVjdHVyZSoKICAgICBTeW10YWI6IFN5bWJvbFRhYmxlKgor
ICAgIFN5bTogU3ltYm9sKgogICAgIFQ6IFN0cmluZ0ltcGwqCiAgICAgVjogdm9pZAogICAgIFZt
OiBWTSoKQEAgLTI2OSw2ICsyNzEsMTQgQEAgdHlwZWRlZiB2b2lkIChKSVRfT1BFUkFUSU9OICpW
X0pJVE9wZXJhdGlvbl9FUFpKKShFeGVjU3RhdGUqLCB2b2lkKiwgaW50MzJfdCwgRW4KIHR5cGVk
ZWYgdm9pZCAoSklUX09QRVJBVElPTiAqVl9KSVRPcGVyYXRpb25fRVNzaUpKSSkoRXhlY1N0YXRl
KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIFVu
aXF1ZWRTdHJpbmdJbXBsKik7CiB0eXBlZGVmIHZvaWQgKEpJVF9PUEVSQVRJT04gKlZfSklUT3Bl
cmF0aW9uX0VKSkpJKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUs
IEVuY29kZWRKU1ZhbHVlLCBVbmlxdWVkU3RyaW5nSW1wbCopOwogdHlwZWRlZiB2b2lkIChKSVRf
T1BFUkFUSU9OICpWX0pJVE9wZXJhdGlvbl9FSkpKSikoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFs
dWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUpOwordHlw
ZWRlZiB2b2lkIChKSVRfT1BFUkFUSU9OICpWX0pJVE9wZXJhdGlvbl9FT0pKWikoRXhlY1N0YXRl
KiwgSlNPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIGludDMyX3QpOwor
dHlwZWRlZiB2b2lkIChKSVRfT1BFUkFUSU9OICpWX0pJVE9wZXJhdGlvbl9FT0pzc0paKShFeGVj
U3RhdGUqLCBKU09iamVjdCosIEpTU3RyaW5nKiwgRW5jb2RlZEpTVmFsdWUsIGludDMyX3QpOwor
dHlwZWRlZiB2b2lkIChKSVRfT1BFUkFUSU9OICpWX0pJVE9wZXJhdGlvbl9FT0lKWikoRXhlY1N0
YXRlKiwgSlNPYmplY3QqLCBVbmlxdWVkU3RyaW5nSW1wbCosIEVuY29kZWRKU1ZhbHVlLCBpbnQz
Ml90KTsKK3R5cGVkZWYgdm9pZCAoSklUX09QRVJBVElPTiAqVl9KSVRPcGVyYXRpb25fRU9TeW1K
WikoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBTeW1ib2wqLCBFbmNvZGVkSlNWYWx1ZSwgaW50MzJf
dCk7Cit0eXBlZGVmIHZvaWQgKEpJVF9PUEVSQVRJT04gKlZfSklUT3BlcmF0aW9uX0VPSk9PWiko
RXhlY1N0YXRlKiwgSlNPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgSlNPYmplY3QqLCBKU09iamVj
dCosIGludDMyX3QpOwordHlwZWRlZiB2b2lkIChKSVRfT1BFUkFUSU9OICpWX0pJVE9wZXJhdGlv
bl9FT0pzc09PWikoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBKU1N0cmluZyosIEpTT2JqZWN0Kiwg
SlNPYmplY3QqLCBpbnQzMl90KTsKK3R5cGVkZWYgdm9pZCAoSklUX09QRVJBVElPTiAqVl9KSVRP
cGVyYXRpb25fRU9JT09aKShFeGVjU3RhdGUqLCBKU09iamVjdCosIFVuaXF1ZWRTdHJpbmdJbXBs
KiwgSlNPYmplY3QqLCBKU09iamVjdCosIGludDMyX3QpOwordHlwZWRlZiB2b2lkIChKSVRfT1BF
UkFUSU9OICpWX0pJVE9wZXJhdGlvbl9FT1N5bU9PWikoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBT
eW1ib2wqLCBKU09iamVjdCosIEpTT2JqZWN0KiwgaW50MzJfdCk7CiB0eXBlZGVmIHZvaWQgKEpJ
VF9PUEVSQVRJT04gKlZfSklUT3BlcmF0aW9uX0VXcykoRXhlY1N0YXRlKiwgV2F0Y2hwb2ludFNl
dCopOwogdHlwZWRlZiB2b2lkIChKSVRfT1BFUkFUSU9OICpWX0pJVE9wZXJhdGlvbl9FWikoRXhl
Y1N0YXRlKiwgaW50MzJfdCk7CiB0eXBlZGVmIHZvaWQgKEpJVF9PUEVSQVRJT04gKlZfSklUT3Bl
cmF0aW9uX0VaSikoRXhlY1N0YXRlKiwgaW50MzJfdCwgRW5jb2RlZEpTVmFsdWUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAppbmRleCA1NjAy
NjhiNWMzMTQ3ODQxMzYwNzJkZGQ4MDA3Nzc4MGYzMzc4YjJiLi45ZDRmZDFhYTZhZjY0YjQ4ZDdi
ZTFiM2ViNDY5MzBiNTNmMzVmNGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVFByb3BlcnR5QWNjZXNzLmNwcApAQCAtMTc3Myw2ICsxNzczLDE4IEBAIEpJVDo6SnVtcExp
c3QgSklUOjplbWl0RmxvYXRUeXBlZEFycmF5UHV0QnlWYWwoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbiwKICAgICByZXR1cm4gc2xvd0Nhc2VzOwogfQogCit2b2lkIEpJVDo6ZW1pdF9v
cF9kZWZpbmVfZGF0YV9wcm9wZXJ0eShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQor
eworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0
aW9uLCBzbG93X3BhdGhfZGVmaW5lX2RhdGFfcHJvcGVydHkpOworICAgIHNsb3dQYXRoQ2FsbC5j
YWxsKCk7Cit9CisKK3ZvaWQgSklUOjplbWl0X29wX2RlZmluZV9hY2Nlc3Nvcl9wcm9wZXJ0eShJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIEpJVFNsb3dQYXRoQ2FsbCBz
bG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfZGVmaW5lX2Fj
Y2Vzc29yX3Byb3BlcnR5KTsKKyAgICBzbG93UGF0aENhbGwuY2FsbCgpOworfQorCiB9IC8vIG5h
bWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEVOQUJMRShKSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggMTAwMzdhZjU2
Y2U2YzdmMWE5M2U1MmQyYTcxN2UyOTRlMDEwNWY5YS4uYzliODQ0MzdjNjU3NDU1M2UzODBlNTIx
MjI2MWFiOTI2OTZiZTM0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQpAQCAtMTQ1Nyw2ICsxNDU3LDE4IEBAIF9sbGludF9v
cF9wdXRfc2V0dGVyX2J5X3ZhbDoKICAgICBkaXNwYXRjaCg1KQogCiAKK19sbGludF9vcF9kZWZp
bmVfZGF0YV9wcm9wZXJ0eToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbE9wY29kZVNs
b3dQYXRoKF9zbG93X3BhdGhfZGVmaW5lX2RhdGFfcHJvcGVydHkpCisgICAgZGlzcGF0Y2goNSkK
KworCitfbGxpbnRfb3BfZGVmaW5lX2FjY2Vzc29yX3Byb3BlcnR5OgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBjYWxsT3Bjb2RlU2xvd1BhdGgoX3Nsb3dfcGF0aF9kZWZpbmVfYWNjZXNzb3Jf
cHJvcGVydHkpCisgICAgZGlzcGF0Y2goNikKKworCiBfbGxpbnRfb3BfanRydWU6CiAgICAgdHJh
Y2VFeGVjdXRpb24oKQogICAgIGp1bXBUcnVlT3JGYWxzZSgKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCmluZGV4IGNhZjgyNmRjMmFjZGFi
NmQ5YTM5NThhMGNmMDMxMTQzNjIzYmJhM2YuLmYyNWVlODExYWNhOWVjYTRhOTZkYTkwZTVlMGE5
NDI1Yjk3NDU4YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vblNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uU2xvd1BhdGhzLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkNsb25lZEFyZ3Vt
ZW50cy5oIgogI2luY2x1ZGUgIkNvZGVQcm9maWxpbmcuaCIKICNpbmNsdWRlICJDb21tb25TbG93
UGF0aHNFeGNlcHRpb25zLmgiCisjaW5jbHVkZSAiRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzLmgi
CiAjaW5jbHVkZSAiRGlyZWN0QXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiRXJyb3IuaCIKICNpbmNs
dWRlICJFcnJvckhhbmRsaW5nU2NvcGUuaCIKQEAgLTkzMCw0ICs5MzEsMzkgQEAgU0xPV19QQVRI
X0RFQ0woc2xvd19wYXRoX3B1dF9ieV92YWxfd2l0aF90aGlzKQogICAgIEVORCgpOwogfQogCitT
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfZGVmaW5lX2RhdGFfcHJvcGVydHkpCit7CisgICAgQkVH
SU4oKTsKKyAgICBKU09iamVjdCogYmFzZSA9IGFzT2JqZWN0KE9QX0MoMSkuanNWYWx1ZSgpKTsK
KyAgICBKU1ZhbHVlIHByb3BlcnR5ID0gT1BfQygyKS5qc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB2
YWx1ZSA9IE9QX0MoMykuanNWYWx1ZSgpOworICAgIEpTVmFsdWUgYXR0cmlidXRlcyA9IE9QX0Mo
NCkuanNWYWx1ZSgpOworICAgIEFTU0VSVChhdHRyaWJ1dGVzLmlzSW50MzIoKSk7CisKKyAgICBh
dXRvIHByb3BlcnR5TmFtZSA9IHByb3BlcnR5LnRvUHJvcGVydHlLZXkoZXhlYyk7CisgICAgQ0hF
Q0tfRVhDRVBUSU9OKCk7CisgICAgUHJvcGVydHlEZXNjcmlwdG9yIGRlc2NyaXB0b3IgPSB0b1By
b3BlcnR5RGVzY3JpcHRvcih2YWx1ZSwganNVbmRlZmluZWQoKSwganNVbmRlZmluZWQoKSwgRGVm
aW5lUHJvcGVydHlBdHRyaWJ1dGVzKGF0dHJpYnV0ZXMuYXNJbnQzMigpKSk7CisgICAgQVNTRVJU
KChkZXNjcmlwdG9yLmF0dHJpYnV0ZXMoKSAmIEFjY2Vzc29yKSB8fCAoIWRlc2NyaXB0b3IuaXNB
Y2Nlc3NvckRlc2NyaXB0b3IoKSkpOworICAgIGJhc2UtPm1ldGhvZFRhYmxlKHZtKS0+ZGVmaW5l
T3duUHJvcGVydHkoYmFzZSwgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCB0cnVlKTsK
KyAgICBFTkQoKTsKK30KKworU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2RlZmluZV9hY2Nlc3Nv
cl9wcm9wZXJ0eSkKK3sKKyAgICBCRUdJTigpOworICAgIEpTT2JqZWN0KiBiYXNlID0gYXNPYmpl
Y3QoT1BfQygxKS5qc1ZhbHVlKCkpOworICAgIEpTVmFsdWUgcHJvcGVydHkgPSBPUF9DKDIpLmpz
VmFsdWUoKTsKKyAgICBKU1ZhbHVlIGdldHRlciA9IE9QX0MoMykuanNWYWx1ZSgpOworICAgIEpT
VmFsdWUgc2V0dGVyID0gT1BfQyg0KS5qc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSBhdHRyaWJ1dGVz
ID0gT1BfQyg1KS5qc1ZhbHVlKCk7CisgICAgQVNTRVJUKGF0dHJpYnV0ZXMuaXNJbnQzMigpKTsK
KworICAgIGF1dG8gcHJvcGVydHlOYW1lID0gcHJvcGVydHkudG9Qcm9wZXJ0eUtleShleGVjKTsK
KyAgICBDSEVDS19FWENFUFRJT04oKTsKKyAgICBQcm9wZXJ0eURlc2NyaXB0b3IgZGVzY3JpcHRv
ciA9IHRvUHJvcGVydHlEZXNjcmlwdG9yKGpzVW5kZWZpbmVkKCksIGdldHRlciwgc2V0dGVyLCBE
ZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMoYXR0cmlidXRlcy5hc0ludDMyKCkpKTsKKyAgICBBU1NF
UlQoKGRlc2NyaXB0b3IuYXR0cmlidXRlcygpICYgQWNjZXNzb3IpIHx8ICghZGVzY3JpcHRvci5p
c0FjY2Vzc29yRGVzY3JpcHRvcigpKSk7CisgICAgYmFzZS0+bWV0aG9kVGFibGUodm0pLT5kZWZp
bmVPd25Qcm9wZXJ0eShiYXNlLCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHRydWUp
OworICAgIEVORCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKaW5kZXggOGVlNWJlMzFhZDNjZWVi
NjExMDM5ZjI5OGU3ZGIzNmZiOTQ5ZmY5OS4uNDc1Yjc3ZTE4ZmUyMmQwNjg4YTI1ZTFmNTdiODRl
NGMwODJiOGZjZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uU2xvd1BhdGhzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9u
U2xvd1BhdGhzLmgKQEAgLTI1Nyw2ICsyNTcsOCBAQCBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xv
d19wYXRoX2dldF9ieV9pZF93aXRoX3RoaXMpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3df
cGF0aF9nZXRfYnlfdmFsX3dpdGhfdGhpcyk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19w
YXRoX3B1dF9ieV9pZF93aXRoX3RoaXMpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0
aF9wdXRfYnlfdmFsX3dpdGhfdGhpcyk7CitTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRo
X2RlZmluZV9kYXRhX3Byb3BlcnR5KTsKK1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhf
ZGVmaW5lX2FjY2Vzc29yX3Byb3BlcnR5KTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RlZmluZVByb3BlcnR5QXR0cmli
dXRlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGVmaW5lUHJvcGVydHlBdHRy
aWJ1dGVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uM2Q4YTI0OGI5MTYwYzQ3NjRiMTBjYTQxMWZiMmYyYzc1Y2E5
ODM2MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Rl
ZmluZVByb3BlcnR5QXR0cmlidXRlcy5oCkBAIC0wLDAgKzEsMTQyIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRl
IDx3dGYvVHJpU3RhdGUuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIERlZmluZVByb3Bl
cnR5QXR0cmlidXRlcyB7CitwdWJsaWM6CisgICAgc3RhdGljX2Fzc2VydChGYWxzZVRyaVN0YXRl
ID09IDAsICJGYWxzZVRyaVN0YXRlIGlzIDAuIik7CisgICAgc3RhdGljX2Fzc2VydChUcnVlVHJp
U3RhdGUgPT0gMSwgIlRydWVUcmlTdGF0ZSBpcyAxLiIpOworICAgIHN0YXRpY19hc3NlcnQoTWl4
ZWRUcmlTdGF0ZSA9PSAyLCAiTWl4ZWRUcmlTdGF0ZSBpcyAyLiIpOworCisgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIENvbmZpZ3VyYWJsZVNoaWZ0ID0gMDsKKyAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgRW51bWVyYWJsZVNoaWZ0ID0gMjsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgV3Jp
dGFibGVTaGlmdCA9IDQ7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFZhbHVlU2hpZnQgPSA2
OworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBHZXRTaGlmdCA9IDc7CisgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIFNldFNoaWZ0ID0gODsKKworICAgIERlZmluZVByb3BlcnR5QXR0cmlidXRl
cygpCisgICAgICAgIDogbV9hdHRyaWJ1dGVzKAorICAgICAgICAgICAgKE1peGVkVHJpU3RhdGUg
PDwgQ29uZmlndXJhYmxlU2hpZnQpCisgICAgICAgICAgICB8IChNaXhlZFRyaVN0YXRlIDw8IEVu
dW1lcmFibGVTaGlmdCkKKyAgICAgICAgICAgIHwgKE1peGVkVHJpU3RhdGUgPDwgV3JpdGFibGVT
aGlmdCkKKyAgICAgICAgICAgIHwgKDAgPDwgVmFsdWVTaGlmdCkKKyAgICAgICAgICAgIHwgKDAg
PDwgR2V0U2hpZnQpCisgICAgICAgICAgICB8ICgwIDw8IFNldFNoaWZ0KSkKKyAgICB7CisgICAg
fQorCisgICAgZXhwbGljaXQgRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzKHVuc2lnbmVkIGF0dHJp
YnV0ZXMpCisgICAgICAgIDogbV9hdHRyaWJ1dGVzKGF0dHJpYnV0ZXMpCisgICAgeworICAgIH0K
KworICAgIHVuc2lnbmVkIHJhd1JlcHJlc2VudGF0aW9uKCkgY29uc3QKKyAgICB7CisgICAgICAg
IHJldHVybiBtX2F0dHJpYnV0ZXM7CisgICAgfQorCisgICAgYm9vbCBoYXNWYWx1ZSgpCisgICAg
eworICAgICAgICByZXR1cm4gbV9hdHRyaWJ1dGVzICYgKDBiMSA8PCBWYWx1ZVNoaWZ0KTsKKyAg
ICB9CisKKyAgICB2b2lkIHNldFZhbHVlKCkKKyAgICB7CisgICAgICAgIG1fYXR0cmlidXRlcyA9
IG1fYXR0cmlidXRlcyB8ICgwYjEgPDwgVmFsdWVTaGlmdCk7CisgICAgfQorCisgICAgYm9vbCBo
YXNHZXQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYXR0cmlidXRlcyAmICgwYjEgPDwgR2V0
U2hpZnQpOworICAgIH0KKworICAgIHZvaWQgc2V0R2V0KCkKKyAgICB7CisgICAgICAgIG1fYXR0
cmlidXRlcyA9IG1fYXR0cmlidXRlcyB8ICgwYjEgPDwgR2V0U2hpZnQpOworICAgIH0KKworICAg
IGJvb2wgaGFzU2V0KCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX2F0dHJpYnV0ZXMgJiAoMGIx
IDw8IFNldFNoaWZ0KTsKKyAgICB9CisKKyAgICB2b2lkIHNldFNldCgpCisgICAgeworICAgICAg
ICBtX2F0dHJpYnV0ZXMgPSBtX2F0dHJpYnV0ZXMgfCAoMGIxIDw8IFNldFNoaWZ0KTsKKyAgICB9
CisKKyAgICBUcmlTdGF0ZSB3cml0YWJsZSgpCisgICAgeworICAgICAgICByZXR1cm4gZXh0cmFj
dFRyaVN0YXRlKFdyaXRhYmxlU2hpZnQpOworICAgIH0KKworICAgIFRyaVN0YXRlIGNvbmZpZ3Vy
YWJsZSgpCisgICAgeworICAgICAgICByZXR1cm4gZXh0cmFjdFRyaVN0YXRlKENvbmZpZ3VyYWJs
ZVNoaWZ0KTsKKyAgICB9CisKKyAgICBUcmlTdGF0ZSBlbnVtZXJhYmxlKCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBleHRyYWN0VHJpU3RhdGUoRW51bWVyYWJsZVNoaWZ0KTsKKyAgICB9CisKKyAg
ICB2b2lkIHNldFdyaXRhYmxlKGJvb2wgdmFsdWUpCisgICAgeworICAgICAgICBmaWxsV2l0aFRy
aVN0YXRlKHZhbHVlID8gVHJ1ZVRyaVN0YXRlIDogRmFsc2VUcmlTdGF0ZSwgV3JpdGFibGVTaGlm
dCk7CisgICAgfQorCisgICAgdm9pZCBzZXRDb25maWd1cmFibGUoYm9vbCB2YWx1ZSkKKyAgICB7
CisgICAgICAgIGZpbGxXaXRoVHJpU3RhdGUodmFsdWUgPyBUcnVlVHJpU3RhdGUgOiBGYWxzZVRy
aVN0YXRlLCBDb25maWd1cmFibGVTaGlmdCk7CisgICAgfQorCisgICAgdm9pZCBzZXRFbnVtZXJh
YmxlKGJvb2wgdmFsdWUpCisgICAgeworICAgICAgICBmaWxsV2l0aFRyaVN0YXRlKHZhbHVlID8g
VHJ1ZVRyaVN0YXRlIDogRmFsc2VUcmlTdGF0ZSwgRW51bWVyYWJsZVNoaWZ0KTsKKyAgICB9CisK
K3ByaXZhdGU6CisgICAgdm9pZCBmaWxsV2l0aFRyaVN0YXRlKFRyaVN0YXRlIHN0YXRlLCB1bnNp
Z25lZCBzaGlmdCkKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIG1hc2sgPSAwYjExIDw8IHNoaWZ0
OworICAgICAgICBtX2F0dHJpYnV0ZXMgPSAobV9hdHRyaWJ1dGVzICYgfm1hc2spIHwgKHN0YXRl
IDw8IHNoaWZ0KTsKKyAgICB9CisKKyAgICBUcmlTdGF0ZSBleHRyYWN0VHJpU3RhdGUodW5zaWdu
ZWQgc2hpZnQpCisgICAgeworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VHJpU3RhdGU+KCht
X2F0dHJpYnV0ZXMgPj4gc2hpZnQpICYgMGIxMSk7CisgICAgfQorCisgICAgdW5zaWduZWQgbV9h
dHRyaWJ1dGVzOworfTsKKworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCA5NzNjMmU4MTY5ZWI4
ZmM1ZWFlZjY0NjcwYjQ2MTEzNjIxYTU1OGEwLi41Yzk0YjkyNWNiZTY1ZTE5MjQxZDQ5YTI4ZjFl
MTFhMDlmNjcxMjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwCkBAIC00MDQsNyArNDA0LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6
aW5pdChWTSYgdm0pCiAgICAgbV9mdW5jdGlvblByb3RvSGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlv
bi5zZXQodm0sIHRoaXMsIGhhc0luc3RhbmNlU3ltYm9sRnVuY3Rpb24pOwogICAgIG1fdGhyb3dU
eXBlRXJyb3JHZXR0ZXJTZXR0ZXIuaW5pdExhdGVyKAogICAgICAgICBbXSAoY29uc3QgSW5pdGlh
bGl6ZXI8R2V0dGVyU2V0dGVyPiYgaW5pdCkgewotICAgICAgICAgICAgSlNGdW5jdGlvbiogdGhy
b3dlciA9IEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBpbml0Lm93bmVyLCAwLCBTdHJpbmco
KSwgZ2xvYmFsRnVuY1Rocm93VHlwZUVycm9yKTsKKyAgICAgICAgICAgIEpTRnVuY3Rpb24qIHRo
cm93ZXIgPSBpbml0Lm93bmVyLT50aHJvd1R5cGVFcnJvckZ1bmN0aW9uKCk7CiAgICAgICAgICAg
ICBHZXR0ZXJTZXR0ZXIqIGdldHRlclNldHRlciA9IEdldHRlclNldHRlcjo6Y3JlYXRlKGluaXQu
dm0sIGluaXQub3duZXIpOwogICAgICAgICAgICAgZ2V0dGVyU2V0dGVyLT5zZXRHZXR0ZXIoaW5p
dC52bSwgaW5pdC5vd25lciwgdGhyb3dlcik7CiAgICAgICAgICAgICBnZXR0ZXJTZXR0ZXItPnNl
dFNldHRlcihpbml0LnZtLCBpbml0Lm93bmVyLCB0aHJvd2VyKTsKQEAgLTU4MSw4ICs1ODEsOCBA
QCBtXyAjIyBwcm9wZXJOYW1lICMjIFN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIGluc3RhbmNlVHlw
ZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aAogICAgIE9iamVjdENvbnN0cnVjdG9yKiBvYmplY3RD
b25zdHJ1Y3RvciA9IE9iamVjdENvbnN0cnVjdG9yOjpjcmVhdGUodm0sIHRoaXMsIE9iamVjdENv
bnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUu
Z2V0KCkpLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSk7CiAgICAgbV9vYmplY3RDb25zdHJ1Y3Rv
ci5zZXQodm0sIHRoaXMsIG9iamVjdENvbnN0cnVjdG9yKTsKIAotICAgIEpTRnVuY3Rpb24qIGRl
ZmluZVByb3BlcnR5RnVuY3Rpb24gPSBtX29iamVjdENvbnN0cnVjdG9yLT5hZGREZWZpbmVQcm9w
ZXJ0eShleGVjLCB0aGlzKTsKLSAgICBtX2RlZmluZVByb3BlcnR5RnVuY3Rpb24uc2V0KHZtLCB0
aGlzLCBkZWZpbmVQcm9wZXJ0eUZ1bmN0aW9uKTsKKyAgICBKU0Z1bmN0aW9uKiB0aHJvd1R5cGVF
cnJvckZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJpbmcoKSwg
Z2xvYmFsRnVuY1Rocm93VHlwZUVycm9yKTsKKyAgICBtX3Rocm93VHlwZUVycm9yRnVuY3Rpb24u
c2V0KHZtLCB0aGlzLCB0aHJvd1R5cGVFcnJvckZ1bmN0aW9uKTsKIAogICAgIEpTQ2VsbCogZnVu
Y3Rpb25Db25zdHJ1Y3RvciA9IEZ1bmN0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgRnVuY3Rp
b25Db25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90
eXBlLmdldCgpKSwgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSk7CiAgICAgQXJyYXlDb25zdHJ1
Y3RvciogYXJyYXlDb25zdHJ1Y3RvciA9IEFycmF5Q29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgdGhp
cywgQXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9u
UHJvdG90eXBlLmdldCgpKSwgbV9hcnJheVByb3RvdHlwZS5nZXQoKSwgbV9zcGVjaWVzR2V0dGVy
U2V0dGVyLmdldCgpKTsKQEAgLTgwMyw3ICs4MDMsNyBAQCBwdXREaXJlY3RXaXRob3V0VHJhbnNp
dGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+IGpzTmFtZSwgbG93ZXJOYW1lICMjIENvbnN0cnVj
dAogICAgIG1fc3BlY2lhbFBvaW50ZXJzW1NwZWNpYWw6Ok9iamVjdENvbnN0cnVjdG9yXSA9IG9i
amVjdENvbnN0cnVjdG9yOwogICAgIG1fc3BlY2lhbFBvaW50ZXJzW1NwZWNpYWw6OkFycmF5Q29u
c3RydWN0b3JdID0gYXJyYXlDb25zdHJ1Y3RvcjsKIAotICAgIG1fbGlua1RpbWVDb25zdGFudHNb
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OkRlZmluZVByb3BlcnR5RnVu
Y3Rpb24pXSA9IG1fZGVmaW5lUHJvcGVydHlGdW5jdGlvbi5nZXQoKTsKKyAgICBtX2xpbmtUaW1l
Q29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpUaHJvd1R5
cGVFcnJvckZ1bmN0aW9uKV0gPSBtX3Rocm93VHlwZUVycm9yRnVuY3Rpb24uZ2V0KCk7CiAKICAg
ICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6dXNlRG9sbGFyVk0oKSkpIHsKICAgICAgICAgSlNEb2xs
YXJWTVByb3RvdHlwZSogZG9sbGFyVk1Qcm90b3R5cGUgPSBKU0RvbGxhclZNUHJvdG90eXBlOjpj
cmVhdGUodm0sIHRoaXMsIEpTRG9sbGFyVk1Qcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwg
dGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKTsKQEAgLTEwNjYsNyArMTA2Niw3IEBAIHZv
aWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRv
ciYgdmlzaXRvcikKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9ldmFsRnVuY3Rp
b24pOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2NhbGxGdW5jdGlvbik7CiAg
ICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fYXBwbHlGdW5jdGlvbik7Ci0gICAgdmlz
aXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZGVmaW5lUHJvcGVydHlGdW5jdGlvbik7CisgICAg
dmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fdGhyb3dUeXBlRXJyb3JGdW5jdGlvbik7CiAg
ICAgdGhpc09iamVjdC0+bV9hcnJheVByb3RvVG9TdHJpbmdGdW5jdGlvbi52aXNpdCh2aXNpdG9y
KTsKICAgICB0aGlzT2JqZWN0LT5tX2FycmF5UHJvdG9WYWx1ZXNGdW5jdGlvbi52aXNpdCh2aXNp
dG9yKTsKICAgICB0aGlzT2JqZWN0LT5tX2luaXRpYWxpemVQcm9taXNlRnVuY3Rpb24udmlzaXQo
dmlzaXRvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuaAppbmRleCAwZGVhZDJiZjg0YjU1ODcxMTJkYzg3Y2Y5NDk2MDQxNzlkMzJlOTQ4Li45NGQ3
ZTIzMDUzNTg3NjkxZWEyN2FiMGRmZDNmNjY2ZTE5Yzc2YmViIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTIzNCw3ICsyMzQsNyBAQCBj
bGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsK
ICAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9ldmFsRnVuY3Rpb247CiAgICAgV3JpdGVC
YXJyaWVyPEpTRnVuY3Rpb24+IG1fY2FsbEZ1bmN0aW9uOwogICAgIFdyaXRlQmFycmllcjxKU0Z1
bmN0aW9uPiBtX2FwcGx5RnVuY3Rpb247Ci0gICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1f
ZGVmaW5lUHJvcGVydHlGdW5jdGlvbjsKKyAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV90
aHJvd1R5cGVFcnJvckZ1bmN0aW9uOwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwg
SlNGdW5jdGlvbj4gbV9hcnJheVByb3RvVG9TdHJpbmdGdW5jdGlvbjsKICAgICBMYXp5UHJvcGVy
dHk8SlNHbG9iYWxPYmplY3QsIEpTRnVuY3Rpb24+IG1fYXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9u
OwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgSlNGdW5jdGlvbj4gbV9pbml0aWFs
aXplUHJvbWlzZUZ1bmN0aW9uOwpAQCAtNDc5LDcgKzQ3OSw3IEBAIGNsYXNzIEpTR2xvYmFsT2Jq
ZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIEpTRnVuY3Rpb24q
IGV2YWxGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZXZhbEZ1bmN0aW9uLmdldCgpOyB9CiAg
ICAgSlNGdW5jdGlvbiogY2FsbEZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jYWxsRnVuY3Rp
b24uZ2V0KCk7IH0KICAgICBKU0Z1bmN0aW9uKiBhcHBseUZ1bmN0aW9uKCkgY29uc3QgeyByZXR1
cm4gbV9hcHBseUZ1bmN0aW9uLmdldCgpOyB9Ci0gICAgSlNGdW5jdGlvbiogZGVmaW5lUHJvcGVy
dHlGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZGVmaW5lUHJvcGVydHlGdW5jdGlvbi5nZXQo
KTsgfQorICAgIEpTRnVuY3Rpb24qIHRocm93VHlwZUVycm9yRnVuY3Rpb24oKSBjb25zdCB7IHJl
dHVybiBtX3Rocm93VHlwZUVycm9yRnVuY3Rpb24uZ2V0KCk7IH0KICAgICBKU0Z1bmN0aW9uKiBh
cnJheVByb3RvVG9TdHJpbmdGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYXJyYXlQcm90b1Rv
U3RyaW5nRnVuY3Rpb24uZ2V0KHRoaXMpOyB9CiAgICAgSlNGdW5jdGlvbiogYXJyYXlQcm90b1Zh
bHVlc0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9hcnJheVByb3RvVmFsdWVzRnVuY3Rpb24u
Z2V0KHRoaXMpOyB9CiAgICAgSlNGdW5jdGlvbiogaW5pdGlhbGl6ZVByb21pc2VGdW5jdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1faW5pdGlhbGl6ZVByb21pc2VGdW5jdGlvbi5nZXQodGhpcyk7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVj
dG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9y
LmNwcAppbmRleCA3ODFmY2JjZTU1YzcyNTI2ODIwMjE2NzJjZTg5ZGJhOWE1MjFmNGNhLi4wZmEw
Y2U2ZDBhZjFiMzA5MWUyZjcyOGQxMDc5YTM2OWNkZjFmZDhjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCkBAIC0xMDcsMTQg
KzEwNyw2IEBAIHZvaWQgT2JqZWN0Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgT2JqCiAgICAgSlNDX05BVElWRV9GVU5DVElP
Tl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2V0
T3duUHJvcGVydHlOYW1lc1ByaXZhdGVOYW1lKCksIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJv
cGVydHlOYW1lcywgRG9udEVudW0sIDEpOwogfQogCi1KU0Z1bmN0aW9uKiBPYmplY3RDb25zdHJ1
Y3Rvcjo6YWRkRGVmaW5lUHJvcGVydHkoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0KQotewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgSlNGdW5jdGlv
biogZGVmaW5lUHJvcGVydHlGdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LCAzLCB2bS5wcm9wZXJ0eU5hbWVzLT5kZWZpbmVQcm9wZXJ0eS5zdHJpbmcoKSwgb2Jq
ZWN0Q29uc3RydWN0b3JEZWZpbmVQcm9wZXJ0eSk7Ci0gICAgcHV0RGlyZWN0V2l0aG91dFRyYW5z
aXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmRlZmluZVByb3BlcnR5LCBkZWZpbmVQcm9wZXJ0
eUZ1bmN0aW9uLCBEb250RW51bSk7Ci0gICAgcmV0dXJuIGRlZmluZVByb3BlcnR5RnVuY3Rpb247
Ci19Ci0KIC8vIEVTIDE5LjEuMS4xIE9iamVjdChbdmFsdWVdKQogc3RhdGljIEFMV0FZU19JTkxJ
TkUgSlNPYmplY3QqIGNvbnN0cnVjdE9iamVjdChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgbmV3
VGFyZ2V0KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2Jq
ZWN0Q29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENv
bnN0cnVjdG9yLmgKaW5kZXggODlkNzQ0YTI3NzRjZDQ3OGUwODI3ZmUxZjNjNGJhYTlhZWY2NGNk
OS4uOGZmMmM1NWFlYzI5ZDk1MWNjYjQ0MDdmYTVjNjIzMTNmN2YxZDBiZCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5oCkBAIC01NCw4
ICs1NCw2IEBAIGNsYXNzIE9iamVjdENvbnN0cnVjdG9yIDogcHVibGljIEludGVybmFsRnVuY3Rp
b24gewogICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwg
cHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7
CiAgICAgfQogCi0gICAgSlNGdW5jdGlvbiogYWRkRGVmaW5lUHJvcGVydHkoRXhlY1N0YXRlKiwg
SlNHbG9iYWxPYmplY3QqKTsKLQogcHJvdGVjdGVkOgogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24o
Vk0mLCBKU0dsb2JhbE9iamVjdCosIE9iamVjdFByb3RvdHlwZSopOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eURlc2NyaXB0b3IuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5oCmluZGV4IGFhNjFl
ZWE0OTVjNGQxYzlkNWEwZjgyNDc5ZDMyNDUzNjY1NWEzNjUuLmVlOTcxZjU1MDM2NzY3MzIwOTc5
OWU4MTllNWQ0MzAxZGQ1ODQ0ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5oCkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIFBy
b3BlcnR5RGVzY3JpcHRvcl9oCiAjZGVmaW5lIFByb3BlcnR5RGVzY3JpcHRvcl9oCiAKKyNpbmNs
dWRlICJEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgi
CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtOTMsNiArOTQsMzIgQEAgY2xhc3MgUHJvcGVydHlEZXNj
cmlwdG9yIHsKICAgICB1bnNpZ25lZCBtX3NlZW5BdHRyaWJ1dGVzOwogfTsKIAoraW5saW5lIFBy
b3BlcnR5RGVzY3JpcHRvciB0b1Byb3BlcnR5RGVzY3JpcHRvcihKU1ZhbHVlIHZhbHVlLCBKU1Zh
bHVlIGdldHRlciwgSlNWYWx1ZSBzZXR0ZXIsIERlZmluZVByb3BlcnR5QXR0cmlidXRlcyBhdHRy
aWJ1dGVzKQoreworICAgIC8vIFdlIGFzc3VtZSB0aGF0IHZhbGlkYXRpb24gaXMgYWxyZWFkeSBk
b25lLgorICAgIFByb3BlcnR5RGVzY3JpcHRvciBkZXNjOworCisgICAgaWYgKGF0dHJpYnV0ZXMu
ZW51bWVyYWJsZSgpICE9IE1peGVkVHJpU3RhdGUpCisgICAgICAgIGRlc2Muc2V0RW51bWVyYWJs
ZShhdHRyaWJ1dGVzLmVudW1lcmFibGUoKSk7CisKKyAgICBpZiAoYXR0cmlidXRlcy5jb25maWd1
cmFibGUoKSAhPSBNaXhlZFRyaVN0YXRlKQorICAgICAgICBkZXNjLnNldENvbmZpZ3VyYWJsZShh
dHRyaWJ1dGVzLmNvbmZpZ3VyYWJsZSgpKTsKKworICAgIGlmIChhdHRyaWJ1dGVzLmhhc1ZhbHVl
KCkpCisgICAgICAgIGRlc2Muc2V0VmFsdWUodmFsdWUpOworCisgICAgaWYgKGF0dHJpYnV0ZXMu
d3JpdGFibGUoKSAhPSBNaXhlZFRyaVN0YXRlKQorICAgICAgICBkZXNjLnNldFdyaXRhYmxlKGF0
dHJpYnV0ZXMud3JpdGFibGUoKSk7CisKKyAgICBpZiAoYXR0cmlidXRlcy5oYXNHZXQoKSkKKyAg
ICAgICAgZGVzYy5zZXRHZXR0ZXIoZ2V0dGVyKTsKKworICAgIGlmIChhdHRyaWJ1dGVzLmhhc1Nl
dCgpKQorICAgICAgICBkZXNjLnNldFNldHRlcihzZXR0ZXIpOworCisgICAgcmV0dXJuIGRlc2M7
Cit9CisKIH0KIAogI2VuZGlmCg==
</data>
<flag name="review"
          id="313178"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>