<?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>149615</bug_id>
          
          <creation_ts>2015-09-29 00:09:59 -0700</creation_ts>
          <short_desc>[ES6] Arrow function syntax. Arrow function specific features. Lexical bind &quot;super&quot; property</short_desc>
          <delta_ts>2015-12-30 13:08:43 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>149338</dependson>
          <blocked>140855</blocked>
    
    <blocked>150893</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="GSkachkov">gskachkov</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>rniwa</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1129166</commentid>
    <comment_count>0</comment_count>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2015-09-29 00:09:59 -0700</bug_when>
    <thetext>Arrow function doesn&apos;t raise early semantic errors if we are using &apos;super/super()&apos;, in comparison to the usual function (https://people.mozilla.org/~jorendorff/es6-draft.html#sec-function-definitions-static-semantics-early-errors, )
Also If I correctly understand this topic http://www.ecma-international.org/ecma-262/6.0/#sec-arrow-function-definitions-static-semantics-contains, then arrow function can contain &apos;super’ as SuperProperty and SuperCall.
At this topic  http://www.ecma-international.org/ecma-262/6.0/#sec-arrow-function-definitions-runtime-semantics-evaluation said: 
&quot;Any reference to arguments, super, this, or new.target within an ArrowFunction must resolve to a binding in a lexically enclosing environment. Typically this will be the Function Environment of an immediately enclosing function. Even though an ArrowFunction may contain references to super, the function object created in step 4 is not made into a method by performing MakeMethod. An ArrowFunction that references super is always contained within a non-ArrowFunction and the necessary state to implement super is accessible via the scope that is captured by the function object of the ArrowFunction.&quot;

So for my understanding arrow function can operate by &apos;super&apos; property and invoke the &apos;super()&apos; function. 
Later if it necessary we can split this issue into two issues for SuperProperty and SuperCall.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1137219</commentid>
    <comment_count>1</comment_count>
      <attachid>264232</attachid>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2015-10-28 12:23:30 -0700</bug_when>
    <thetext>Created attachment 264232
Patch

Init commit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139395</commentid>
    <comment_count>2</comment_count>
      <attachid>264803</attachid>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2015-11-04 11:37:34 -0800</bug_when>
    <thetext>Created attachment 264803
Patch

Small refactoring</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1148142</commentid>
    <comment_count>3</comment_count>
      <attachid>267097</attachid>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2015-12-10 05:51:28 -0800</bug_when>
    <thetext>Created attachment 267097
Patch

Init load</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1148153</commentid>
    <comment_count>4</comment_count>
      <attachid>267103</attachid>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2015-12-10 06:39:47 -0800</bug_when>
    <thetext>Created attachment 267103
Patch

Fix build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1148171</commentid>
    <comment_count>5</comment_count>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2015-12-10 07:24:10 -0800</bug_when>
    <thetext>In short patch for this issue should implement following script

var expectedValue  = &apos;test-value&apos;;

class A {
   getValue () {
      return expectedValue;
   }
};

class B extends A {
  getValueParentFunction() {
    var arrow  = () =&gt; super.getValue();
    return arrow();
  }
};

let b = new B();
b.getValueParentFunction() === expectedValue;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1148259</commentid>
    <comment_count>6</comment_count>
      <attachid>267103</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-12-10 10:58:32 -0800</bug_when>
    <thetext>Comment on attachment 267103
Patch

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

Mostly looks good to me but I have a question and some basic comments.

&gt; Source/JavaScriptCore/ChangeLog:9
&gt; +        inside of the arrow function in case if arrow function is nested in method, 

Might be worth explicitly adding constructor to this list of available contexts inside a class.

&gt; Source/JavaScriptCore/ChangeLog:11
&gt; +        class, lead to wrong type of error, should be SyntaxError and this will be fixed in separete patch.

Do you have a bug open for this? If you don&apos;t, you should make one.
You should link to it here

&gt; Source/JavaScriptCore/bytecode/ExecutableInfo.h:39
&gt; +    ExecutableInfo(bool needsActivation, bool usesEval, bool isStrictMode, bool isConstructor, bool isBuiltinFunction, ConstructorKind constructorKind, GeneratorThisMode generatorThisMode, SuperBinding superBinding, SourceParseMode parseMode, DerivedContextType _derivedContextType, bool _isArrowFunctionContext, bool isClassContext)

style: Remove the &quot;_&quot; prefixes.

&gt; Source/JavaScriptCore/bytecode/UnlinkedFunctionExecutable.cpp:70
&gt; +    // method, getter &amp; setter are part of the class, so this functionCodeBlock is part of the class
&gt; +    bool isClassContext = executable-&gt;parseMode() == SourceParseMode::MethodMode || executable-&gt;parseMode() == SourceParseMode::GetterMode || executable-&gt;parseMode() == SourceParseMode::SetterMode;

Is this always correct?
We could have code like this:
```
let x = {
    get y() { return 20; }
};
x.y
```
I&apos;m not sure if this would count as SourceParseMode::GetterMode.

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:578
&gt; +

style: revert newline.

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h:799
&gt; +            bool newisDerivedConstructorContext = constructorKind() == ConstructorKind::Derived || (derivedContextType() == DerivedContextType::DerivedConstructorContext &amp;&amp; metadata-&gt;parseMode() == SourceParseMode::ArrowFunctionMode);

This calculation doesn&apos;t seem right to me. Shouldn&apos;t we be interested in the fact that we&apos;re creating an arrow function or not?

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h:806
&gt; +                bool isArrowFunctionInClassContext = m_codeBlock-&gt;isClassContext() || (m_codeBlock-&gt;isArrowFunction() &amp;&amp; m_derivedContextType == DerivedContextType::DerivedMethodContext);
&gt; +                derivedContextType = isArrowFunctionInClassContext ? DerivedContextType::DerivedMethodContext : DerivedContextType::None;

same here.

&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:189
&gt; +

style: revert newline.

&gt; Source/JavaScriptCore/tests/stress/arrowfunction-lexical-bind-superproperty.js:1
&gt; +var testCase = function (actual, expected, message) {

Style: 4-space indent this file.

&gt; Source/JavaScriptCore/tests/stress/arrowfunction-lexical-bind-superproperty.js:158
&gt; +// Fixme: should by check if e instanceof SyntaxError https://bugs.webkit.org/show_bug.cgi?id=150893

Style: &quot;Fixme&quot; =&gt; &quot;FIXME&quot; and also indented properly.

&gt; Source/JavaScriptCore/tests/stress/arrowfunction-lexical-bind-superproperty.js:215
&gt; +// FIXME: Problem with access to the super before super in constructor
&gt; +// https://bugs.webkit.org/show_bug.cgi?id=152108
&gt; +//  let j2 = new J(true);
&gt; +//  testCase(j2._value, testValue, &apos;Error: Some problem with using &quot;super&quot; inside of the constructor&apos;);

Style: Indent this comment and all others to be at the level of block they&apos;re in.

&gt; LayoutTests/js/script-tests/arrowfunction-superproperty.js:1
&gt; +description(&apos;Tests for ES6 arrow function, access to the super property in arrow function&apos;);

Style: 4-space indent this file.

&gt; LayoutTests/js/script-tests/arrowfunction-superproperty.js:80
&gt; +//shouldThrow(&apos;(new C(false))&apos;, &apos;ReferenceError&apos;);

This should be &quot;new C(true)&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150801</commentid>
    <comment_count>7</comment_count>
      <attachid>267762</attachid>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2015-12-21 14:06:47 -0800</bug_when>
    <thetext>Created attachment 267762
Patch

Fix comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150806</commentid>
    <comment_count>8</comment_count>
      <attachid>267103</attachid>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2015-12-21 14:47:51 -0800</bug_when>
    <thetext>Comment on attachment 267103
Patch

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

&gt;&gt; Source/JavaScriptCore/ChangeLog:9
&gt;&gt; +        inside of the arrow function in case if arrow function is nested in method, 
&gt; 
&gt; Might be worth explicitly adding constructor to this list of available contexts inside a class.

Done

&gt;&gt; Source/JavaScriptCore/ChangeLog:11
&gt;&gt; +        class, lead to wrong type of error, should be SyntaxError and this will be fixed in separete patch.
&gt; 
&gt; Do you have a bug open for this? If you don&apos;t, you should make one.
&gt; You should link to it here

Done

&gt;&gt; Source/JavaScriptCore/bytecode/ExecutableInfo.h:39
&gt;&gt; +    ExecutableInfo(bool needsActivation, bool usesEval, bool isStrictMode, bool isConstructor, bool isBuiltinFunction, ConstructorKind constructorKind, GeneratorThisMode generatorThisMode, SuperBinding superBinding, SourceParseMode parseMode, DerivedContextType _derivedContextType, bool _isArrowFunctionContext, bool isClassContext)
&gt; 
&gt; style: Remove the &quot;_&quot; prefixes.

Removed

&gt;&gt; Source/JavaScriptCore/bytecode/UnlinkedFunctionExecutable.cpp:70
&gt;&gt; +    bool isClassContext = executable-&gt;parseMode() == SourceParseMode::MethodMode || executable-&gt;parseMode() == SourceParseMode::GetterMode || executable-&gt;parseMode() == SourceParseMode::SetterMode;
&gt; 
&gt; Is this always correct?
&gt; We could have code like this:
&gt; ```
&gt; let x = {
&gt;     get y() { return 20; }
&gt; };
&gt; x.y
&gt; ```
&gt; I&apos;m not sure if this would count as SourceParseMode::GetterMode.

Changed. Now I&apos;m rely on executable-&gt;superBinding() property that has value SuperBinding::Needed when it part of the class

&gt;&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:578
&gt;&gt; +
&gt; 
&gt; style: revert newline.

Done

&gt;&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h:799
&gt;&gt; +            bool newisDerivedConstructorContext = constructorKind() == ConstructorKind::Derived || (derivedContextType() == DerivedContextType::DerivedConstructorContext &amp;&amp; metadata-&gt;parseMode() == SourceParseMode::ArrowFunctionMode);
&gt; 
&gt; This calculation doesn&apos;t seem right to me. Shouldn&apos;t we be interested in the fact that we&apos;re creating an arrow function or not?

Added additional condition

&gt;&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:189
&gt;&gt; +
&gt; 
&gt; style: revert newline.

Done

&gt;&gt; Source/JavaScriptCore/tests/stress/arrowfunction-lexical-bind-superproperty.js:1
&gt;&gt; +var testCase = function (actual, expected, message) {
&gt; 
&gt; Style: 4-space indent this file.

Done

&gt;&gt; Source/JavaScriptCore/tests/stress/arrowfunction-lexical-bind-superproperty.js:158
&gt;&gt; +// Fixme: should by check if e instanceof SyntaxError https://bugs.webkit.org/show_bug.cgi?id=150893
&gt; 
&gt; Style: &quot;Fixme&quot; =&gt; &quot;FIXME&quot; and also indented properly.

Done

&gt;&gt; Source/JavaScriptCore/tests/stress/arrowfunction-lexical-bind-superproperty.js:215
&gt;&gt; +//  testCase(j2._value, testValue, &apos;Error: Some problem with using &quot;super&quot; inside of the constructor&apos;);
&gt; 
&gt; Style: Indent this comment and all others to be at the level of block they&apos;re in.

Done

&gt;&gt; LayoutTests/js/script-tests/arrowfunction-superproperty.js:1
&gt;&gt; +description(&apos;Tests for ES6 arrow function, access to the super property in arrow function&apos;);
&gt; 
&gt; Style: 4-space indent this file.

Done

&gt;&gt; LayoutTests/js/script-tests/arrowfunction-superproperty.js:80
&gt;&gt; +//shouldThrow(&apos;(new C(false))&apos;, &apos;ReferenceError&apos;);
&gt; 
&gt; This should be &quot;new C(true)&quot;

Yes, fixed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150807</commentid>
    <comment_count>9</comment_count>
      <attachid>267762</attachid>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2015-12-21 14:48:16 -0800</bug_when>
    <thetext>Comment on attachment 267762
Patch

F</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150943</commentid>
    <comment_count>10</comment_count>
      <attachid>267762</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-12-22 12:42:51 -0800</bug_when>
    <thetext>Comment on attachment 267762
Patch

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

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h:805
&gt; +            if (needsToUpdateArrowFunctionContext()) {

This condition confuses me here. Don&apos;t we only care about this if the function we&apos;re creating is an arrow function?
If it&apos;s not an arrow function, shouldn&apos;t we give it DerivedContextType::None?

&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:763
&gt; +

style: revert newline</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150951</commentid>
    <comment_count>11</comment_count>
      <attachid>267799</attachid>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2015-12-22 13:13:01 -0800</bug_when>
    <thetext>Created attachment 267799
Patch

Fixes small comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150952</commentid>
    <comment_count>12</comment_count>
      <attachid>267762</attachid>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2015-12-22 13:15:50 -0800</bug_when>
    <thetext>Comment on attachment 267762
Patch

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

&gt;&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h:805
&gt;&gt; +            if (needsToUpdateArrowFunctionContext()) {
&gt; 
&gt; This condition confuses me here. Don&apos;t we only care about this if the function we&apos;re creating is an arrow function?
&gt; If it&apos;s not an arrow function, shouldn&apos;t we give it DerivedContextType::None?

Ohh, OK. I got it. I&apos;ve added new condition to check if we&apos;re going to create new arrow function

&gt;&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:763
&gt;&gt; +
&gt; 
&gt; style: revert newline

Removed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151516</commentid>
    <comment_count>13</comment_count>
      <attachid>267799</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-12-28 20:12:53 -0800</bug_when>
    <thetext>Comment on attachment 267799
Patch

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

&gt; Source/JavaScriptCore/bytecode/UnlinkedFunctionExecutable.cpp:69
&gt; +    // this executable is part of the class

comment isn&apos;t needed

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:575
&gt; +    if (SourceParseMode::ArrowFunctionMode == parseMode &amp;&amp; (functionNode-&gt;usesThis() || isDerivedClassContext() || isDerivedConstructorContext()))

Why are these new conditions needed?
Why do we need to load this if we&apos;re &quot;SourceParseMode::ArrowFunctionMode == parseMode &amp;&amp; (isDerivedClassContext() || isDerivedConstructorContext())&quot;?

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:4050
&gt; +    if ((isConstructor() &amp;&amp; constructorKind() == ConstructorKind::Derived) || (m_codeBlock-&gt;isClassContext())) {

style: the parens around &quot;m_codeBlock-&gt;isClassContext()&quot; aren&apos;t needed.

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h:813
&gt; +                bool newisDerivedConstructorContext = constructorKind() == ConstructorKind::Derived || (derivedContextType() == DerivedContextType::DerivedConstructorContext);
&gt; +            
&gt; +                if (newisDerivedConstructorContext)
&gt; +                    newDerivedContextType = DerivedContextType::DerivedConstructorContext;
&gt; +                else  {
&gt; +                    bool isArrowFunctionInClassContext = m_codeBlock-&gt;isClassContext() || (m_codeBlock-&gt;isArrowFunction() &amp;&amp; m_derivedContextType == DerivedContextType::DerivedMethodContext);
&gt; +                    newDerivedContextType = isArrowFunctionInClassContext ? DerivedContextType::DerivedMethodContext : DerivedContextType::None;
&gt; +                }

Nit: I think this whole section of code would be easier to read like this:
```
if (constructorKind() == ConstructorKind::Derived || isDerivedConstructorContext())
    newDerivedContextType = DerivedContextType::DerivedConstructorContext;
else if (m_codeBlock-&gt;isClassContext() || (m_codeBlock-&gt;isArrowFunction() &amp;&amp; m_derivedContextType == DerivedContextType::DerivedMethodContext))
    newDerivedContextType =  DerivedContextType::DerivedMethodContext
```

Also, why do we need to check &quot;m_codeBlock-&gt;isArrowFunction()&quot; when checking &quot;m_derivedContextType == DerivedContextType::DerivedMethodContext&quot;?
When would we have &quot;!m_codeBlock-&gt;isArrowFunction() &amp;&amp; m_derivedContextType == DerivedContextType::DerivedMethodContext&quot;?

&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:182
&gt; +        RegisterID* scope = generator.emitLoadDerivedConstructorFromArrowFunctionLexicalEnvironment();    

This isn&apos;t a JSScope. Maybe a better variable name is &quot;derivedConstructor&quot; or something similar.

&gt; Source/JavaScriptCore/debugger/DebuggerCallFrame.cpp:195
&gt; +    EvalExecutable* eval = EvalExecutable::create(callFrame, makeSource(script), codeBlock.isStrictMode(), thisTDZMode, codeBlock.unlinkedCodeBlock()-&gt;derivedContextType(), codeBlock.unlinkedCodeBlock()-&gt;isArrowFunction(), &amp;variablesUnderTDZ);

have you tried this out inside the inspector to make sure it works?
I.e, pausing inside an arrow function and typing in &quot;super&quot; into the console?

&gt; Source/JavaScriptCore/tests/stress/arrowfunction-lexical-bind-superproperty.js:160
&gt; +      erorr = true;

typo: &quot;erorr&quot; =&gt; &quot;error&quot;

&gt; Source/JavaScriptCore/tests/stress/arrowfunction-lexical-bind-superproperty.js:162
&gt; +    testCase(erorr, true, &apos;Error: using &quot;super&quot; should lead to error&apos;);

ditto

&gt; LayoutTests/js/script-tests/arrowfunction-superproperty.js:78
&gt; +// FIXME: Problem with access to the super before super in constructor

nit: &quot;super before super&quot; =&gt; &quot;super before super()&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151557</commentid>
    <comment_count>14</comment_count>
      <attachid>267988</attachid>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2015-12-29 12:18:53 -0800</bug_when>
    <thetext>Created attachment 267988
Patch

Fix comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151558</commentid>
    <comment_count>15</comment_count>
      <attachid>267799</attachid>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2015-12-29 12:21:52 -0800</bug_when>
    <thetext>Comment on attachment 267799
Patch

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

&gt;&gt; Source/JavaScriptCore/bytecode/UnlinkedFunctionExecutable.cpp:69
&gt;&gt; +    // this executable is part of the class
&gt; 
&gt; comment isn&apos;t needed

Removed

&gt;&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:575
&gt;&gt; +    if (SourceParseMode::ArrowFunctionMode == parseMode &amp;&amp; (functionNode-&gt;usesThis() || isDerivedClassContext() || isDerivedConstructorContext()))
&gt; 
&gt; Why are these new conditions needed?
&gt; Why do we need to load this if we&apos;re &quot;SourceParseMode::ArrowFunctionMode == parseMode &amp;&amp; (isDerivedClassContext() || isDerivedConstructorContext())&quot;?

Without this condition following code will raise ReferenceError &apos;this&apos; is undefined so to fix this error I&apos;ve added this condition.

var A = class A {
    constructor() {
        this.value = &apos;testValue&apos;;
    }
    getValue () {
        return this.value;
    }
    
};

var B = class B extends A {
    getParentValue() {
        var arrow  = () =&gt; super.getValue();
        return arrow();
    }
};

var b = new B();
b. getParentValue()

&gt;&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:4050
&gt;&gt; +    if ((isConstructor() &amp;&amp; constructorKind() == ConstructorKind::Derived) || (m_codeBlock-&gt;isClassContext())) {
&gt; 
&gt; style: the parens around &quot;m_codeBlock-&gt;isClassContext()&quot; aren&apos;t needed.

Done

&gt;&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h:813
&gt;&gt; +                }
&gt; 
&gt; Nit: I think this whole section of code would be easier to read like this:
&gt; ```
&gt; if (constructorKind() == ConstructorKind::Derived || isDerivedConstructorContext())
&gt;     newDerivedContextType = DerivedContextType::DerivedConstructorContext;
&gt; else if (m_codeBlock-&gt;isClassContext() || (m_codeBlock-&gt;isArrowFunction() &amp;&amp; m_derivedContextType == DerivedContextType::DerivedMethodContext))
&gt;     newDerivedContextType =  DerivedContextType::DerivedMethodContext
&gt; ```
&gt; 
&gt; Also, why do we need to check &quot;m_codeBlock-&gt;isArrowFunction()&quot; when checking &quot;m_derivedContextType == DerivedContextType::DerivedMethodContext&quot;?
&gt; When would we have &quot;!m_codeBlock-&gt;isArrowFunction() &amp;&amp; m_derivedContextType == DerivedContextType::DerivedMethodContext&quot;?

Ohh, I see. We don&apos;t need to check m_codeBlock-&gt;isArrowFunction() because it already true because of this condition metadata-&gt;parseMode() == SourceParseMode::ArrowFunctionMode.

&gt;&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:182
&gt;&gt; +        RegisterID* scope = generator.emitLoadDerivedConstructorFromArrowFunctionLexicalEnvironment();    
&gt; 
&gt; This isn&apos;t a JSScope. Maybe a better variable name is &quot;derivedConstructor&quot; or something similar.

Renamed

&gt;&gt; Source/JavaScriptCore/debugger/DebuggerCallFrame.cpp:195
&gt;&gt; +    EvalExecutable* eval = EvalExecutable::create(callFrame, makeSource(script), codeBlock.isStrictMode(), thisTDZMode, codeBlock.unlinkedCodeBlock()-&gt;derivedContextType(), codeBlock.unlinkedCodeBlock()-&gt;isArrowFunction(), &amp;variablesUnderTDZ);
&gt; 
&gt; have you tried this out inside the inspector to make sure it works?
&gt; I.e, pausing inside an arrow function and typing in &quot;super&quot; into the console?

Good question. I vent done this. I&apos;ve checked and it does not work. When I typing &apos;super&apos; into console it raise exception &apos;SyntaxError: super is only valid inside functions.&apos; The same behavior inside of the method of class and inside of the arrow function in class method. Looks like bug in class implementation.

&gt;&gt; Source/JavaScriptCore/tests/stress/arrowfunction-lexical-bind-superproperty.js:160
&gt;&gt; +      erorr = true;
&gt; 
&gt; typo: &quot;erorr&quot; =&gt; &quot;error&quot;

Fixed

&gt;&gt; LayoutTests/js/script-tests/arrowfunction-superproperty.js:78
&gt;&gt; +// FIXME: Problem with access to the super before super in constructor
&gt; 
&gt; nit: &quot;super before super&quot; =&gt; &quot;super before super()&quot;

Done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151561</commentid>
    <comment_count>16</comment_count>
      <attachid>267990</attachid>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2015-12-29 12:41:14 -0800</bug_when>
    <thetext>Created attachment 267990
Patch

Fix comments &amp; Rebase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151566</commentid>
    <comment_count>17</comment_count>
      <attachid>267799</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-12-29 16:21:35 -0800</bug_when>
    <thetext>Comment on attachment 267799
Patch

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

&gt;&gt;&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:575
&gt;&gt;&gt; +    if (SourceParseMode::ArrowFunctionMode == parseMode &amp;&amp; (functionNode-&gt;usesThis() || isDerivedClassContext() || isDerivedConstructorContext()))
&gt;&gt; 
&gt;&gt; Why are these new conditions needed?
&gt;&gt; Why do we need to load this if we&apos;re &quot;SourceParseMode::ArrowFunctionMode == parseMode &amp;&amp; (isDerivedClassContext() || isDerivedConstructorContext())&quot;?
&gt; 
&gt; Without this condition following code will raise ReferenceError &apos;this&apos; is undefined so to fix this error I&apos;ve added this condition.
&gt; 
&gt; var A = class A {
&gt;     constructor() {
&gt;         this.value = &apos;testValue&apos;;
&gt;     }
&gt;     getValue () {
&gt;         return this.value;
&gt;     }
&gt;     
&gt; };
&gt; 
&gt; var B = class B extends A {
&gt;     getParentValue() {
&gt;         var arrow  = () =&gt; super.getValue();
&gt;         return arrow();
&gt;     }
&gt; };
&gt; 
&gt; var b = new B();
&gt; b. getParentValue()

Gotcha. Makes sense.

&gt;&gt;&gt; Source/JavaScriptCore/debugger/DebuggerCallFrame.cpp:195
&gt;&gt;&gt; +    EvalExecutable* eval = EvalExecutable::create(callFrame, makeSource(script), codeBlock.isStrictMode(), thisTDZMode, codeBlock.unlinkedCodeBlock()-&gt;derivedContextType(), codeBlock.unlinkedCodeBlock()-&gt;isArrowFunction(), &amp;variablesUnderTDZ);
&gt;&gt; 
&gt;&gt; have you tried this out inside the inspector to make sure it works?
&gt;&gt; I.e, pausing inside an arrow function and typing in &quot;super&quot; into the console?
&gt; 
&gt; Good question. I vent done this. I&apos;ve checked and it does not work. When I typing &apos;super&apos; into console it raise exception &apos;SyntaxError: super is only valid inside functions.&apos; The same behavior inside of the method of class and inside of the arrow function in class method. Looks like bug in class implementation.

It seems like we should just give our parser the ability to allow this behind some flag. super isn&apos;t allowed in &apos;eval&apos;, but it&apos;s obviously useful to have this ability inside the debugger when paused inside one of these methods/constructors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151569</commentid>
    <comment_count>18</comment_count>
      <attachid>267799</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-12-29 16:32:45 -0800</bug_when>
    <thetext>Comment on attachment 267799
Patch

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

&gt;&gt;&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h:813
&gt;&gt;&gt; +                }
&gt;&gt; 
&gt;&gt; Nit: I think this whole section of code would be easier to read like this:
&gt;&gt; ```
&gt;&gt; if (constructorKind() == ConstructorKind::Derived || isDerivedConstructorContext())
&gt;&gt;     newDerivedContextType = DerivedContextType::DerivedConstructorContext;
&gt;&gt; else if (m_codeBlock-&gt;isClassContext() || (m_codeBlock-&gt;isArrowFunction() &amp;&amp; m_derivedContextType == DerivedContextType::DerivedMethodContext))
&gt;&gt;     newDerivedContextType =  DerivedContextType::DerivedMethodContext
&gt;&gt; ```
&gt;&gt; 
&gt;&gt; Also, why do we need to check &quot;m_codeBlock-&gt;isArrowFunction()&quot; when checking &quot;m_derivedContextType == DerivedContextType::DerivedMethodContext&quot;?
&gt;&gt; When would we have &quot;!m_codeBlock-&gt;isArrowFunction() &amp;&amp; m_derivedContextType == DerivedContextType::DerivedMethodContext&quot;?
&gt; 
&gt; Ohh, I see. We don&apos;t need to check m_codeBlock-&gt;isArrowFunction() because it already true because of this condition metadata-&gt;parseMode() == SourceParseMode::ArrowFunctionMode.

No, that&apos;s not true.
m_codeBlock is the function we&apos;re generating code for. metadata is the inner function we&apos;re creating.
We could have &apos;metadata-&gt;parseMode() == ArrowFunctionMode&apos; but also have m_codeBlock be the global scope or an eval or a regular function.
The interesting thing here is m_derivedContextType.

My question is this:
Does &apos;m_derivedContextType == DerivedContextType::DerivedMethodSyntax&apos; imply that &apos;m_codeBlock-&gt;isArrowFunction()&apos;?
If that statement is not true, when would we have &apos;m_derivedContextType == DerivedContextType::DerivedMethodSyntax&apos; but also have &apos;!m_codeBlock-&gt;isArrowFunction()&apos;.
Is that even possible to have DerivedMethodSyntax when the parent function is not an arrow function? This seems like it should be impossible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151601</commentid>
    <comment_count>19</comment_count>
      <attachid>268003</attachid>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2015-12-30 03:11:40 -0800</bug_when>
    <thetext>Created attachment 268003
Patch

Small change in conditions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151608</commentid>
    <comment_count>20</comment_count>
      <attachid>267799</attachid>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2015-12-30 08:41:18 -0800</bug_when>
    <thetext>Comment on attachment 267799
Patch

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

&gt;&gt;&gt;&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h:813
&gt;&gt;&gt;&gt; +                }
&gt;&gt;&gt; 
&gt;&gt;&gt; Nit: I think this whole section of code would be easier to read like this:
&gt;&gt;&gt; ```
&gt;&gt;&gt; if (constructorKind() == ConstructorKind::Derived || isDerivedConstructorContext())
&gt;&gt;&gt;     newDerivedContextType = DerivedContextType::DerivedConstructorContext;
&gt;&gt;&gt; else if (m_codeBlock-&gt;isClassContext() || (m_codeBlock-&gt;isArrowFunction() &amp;&amp; m_derivedContextType == DerivedContextType::DerivedMethodContext))
&gt;&gt;&gt;     newDerivedContextType =  DerivedContextType::DerivedMethodContext
&gt;&gt;&gt; ```
&gt;&gt;&gt; 
&gt;&gt;&gt; Also, why do we need to check &quot;m_codeBlock-&gt;isArrowFunction()&quot; when checking &quot;m_derivedContextType == DerivedContextType::DerivedMethodContext&quot;?
&gt;&gt;&gt; When would we have &quot;!m_codeBlock-&gt;isArrowFunction() &amp;&amp; m_derivedContextType == DerivedContextType::DerivedMethodContext&quot;?
&gt;&gt; 
&gt;&gt; Ohh, I see. We don&apos;t need to check m_codeBlock-&gt;isArrowFunction() because it already true because of this condition metadata-&gt;parseMode() == SourceParseMode::ArrowFunctionMode.
&gt; 
&gt; No, that&apos;s not true.
&gt; m_codeBlock is the function we&apos;re generating code for. metadata is the inner function we&apos;re creating.
&gt; We could have &apos;metadata-&gt;parseMode() == ArrowFunctionMode&apos; but also have m_codeBlock be the global scope or an eval or a regular function.
&gt; The interesting thing here is m_derivedContextType.
&gt; 
&gt; My question is this:
&gt; Does &apos;m_derivedContextType == DerivedContextType::DerivedMethodSyntax&apos; imply that &apos;m_codeBlock-&gt;isArrowFunction()&apos;?
&gt; If that statement is not true, when would we have &apos;m_derivedContextType == DerivedContextType::DerivedMethodSyntax&apos; but also have &apos;!m_codeBlock-&gt;isArrowFunction()&apos;.
&gt; Is that even possible to have DerivedMethodSyntax when the parent function is not an arrow function? This seems like it should be impossible.

OK I see, I think also it impossible. At time when I start develop this patch I didn&apos;t use  parseMode. Now DerivedContextType::DerivedMethodSyntax can be set only for inner arrow function because of the condition metadata-&gt;parseMode() == ArrowFunctionMode.

Before idea of this condition was to explicitly allow inherit only of DerivedMethodContext for arrow function and prevent inherit for regular function.
var A = class A { 
      getValue () { 
            return this.value; 
      } 
}; 

var B = class B extends A { 
      getParentValueCase1() { 
            var arrow = () =&gt;  { 
                 var f = function () {
                        debug(&apos;There is no super&apos;); 
                        return &apos;&apos;;
                 };
                 return f();
            };
            return arrow(); 
      } 
      getParentValueCase2() { 
            var f = function () {
                   debug(&apos;There is no super&apos;);
                   return &apos;&apos;;
            };       
            return f(); 
      } 
};

&gt;&gt;&gt;&gt; Source/JavaScriptCore/debugger/DebuggerCallFrame.cpp:195
&gt;&gt;&gt;&gt; +    EvalExecutable* eval = EvalExecutable::create(callFrame, makeSource(script), codeBlock.isStrictMode(), thisTDZMode, codeBlock.unlinkedCodeBlock()-&gt;derivedContextType(), codeBlock.unlinkedCodeBlock()-&gt;isArrowFunction(), &amp;variablesUnderTDZ);
&gt;&gt;&gt; 
&gt;&gt;&gt; have you tried this out inside the inspector to make sure it works?
&gt;&gt;&gt; I.e, pausing inside an arrow function and typing in &quot;super&quot; into the console?
&gt;&gt; 
&gt;&gt; Good question. I vent done this. I&apos;ve checked and it does not work. When I typing &apos;super&apos; into console it raise exception &apos;SyntaxError: super is only valid inside functions.&apos; The same behavior inside of the method of class and inside of the arrow function in class method. Looks like bug in class implementation.
&gt; 
&gt; It seems like we should just give our parser the ability to allow this behind some flag. super isn&apos;t allowed in &apos;eval&apos;, but it&apos;s obviously useful to have this ability inside the debugger when paused inside one of these methods/constructors.

I&apos;ve created issue https://bugs.webkit.org/show_bug.cgi?id=152597</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151620</commentid>
    <comment_count>21</comment_count>
      <attachid>268003</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-12-30 12:23:41 -0800</bug_when>
    <thetext>Comment on attachment 268003
Patch

LGTM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151621</commentid>
    <comment_count>22</comment_count>
      <attachid>268003</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-12-30 13:08:39 -0800</bug_when>
    <thetext>Comment on attachment 268003
Patch

Clearing flags on attachment: 268003

Committed r194449: &lt;http://trac.webkit.org/changeset/194449&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151622</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-12-30 13:08:43 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264232</attachid>
            <date>2015-10-28 12:23:30 -0700</date>
            <delta_ts>2015-11-04 11:37:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-149615-20151028212258.patch</filename>
            <type>text/plain</type>
            <size>55046</size>
            <attacher name="GSkachkov">gskachkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkxNTMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
ZDk5ZTgxNGU4YWRhOWMzMzliMTRiZGQzOWM1ODMwNTA5NTMzZGU5Li4zNWU3ZWVjMTE5NGNiOTM1
OWUxZGU3MDQzMDliNmYxMGE3NzZkMzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1OSBAQAorMjAxNS0xMC0yOCAgU2thY2hrb3YgT2xla3NhbmRyICA8Z3NrYWNoa292QGdt
YWlsLmNvbT4KKworICAgICAgICBbRVM2XSBBcnJvdyBmdW5jdGlvbiBzeW50YXguIEFycm93IGZ1
bmN0aW9uIHNwZWNpZmljIGZlYXR1cmVzLiBMZXhpY2FsIGJpbmQgInN1cGVyIgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5NjE1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBidWlsdGlucy9CdWlsdGlu
RXhlY3V0YWJsZXMuY3BwOgorICAgICAgICAoSlNDOjpjcmVhdGVFeGVjdXRhYmxlSW50ZXJuYWwp
OgorICAgICAgICAqIGJ5dGVjb2RlL0V2YWxDb2RlQ2FjaGUuaDoKKyAgICAgICAgKEpTQzo6RXZh
bENvZGVDYWNoZTo6Z2V0U2xvdyk6CisgICAgICAgICogYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8u
aDoKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUluZm86OkV4ZWN1dGFibGVJbmZvKToKKyAgICAg
ICAgKEpTQzo6RXhlY3V0YWJsZUluZm86OmRlcml2ZWRDb250ZXh0VHlwZSk6CisgICAgICAgIChK
U0M6OkV4ZWN1dGFibGVJbmZvOjppc0NsYXNzQ29udGV4dCk6CisgICAgICAgICogYnl0ZWNvZGUv
VW5saW5rZWRDb2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6
VW5saW5rZWRDb2RlQmxvY2spOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
Lmg6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpkZXJpdmVkQ29udGV4dFR5cGUp
OgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6aXNDbGFzc0NvbnRleHQpOgorICAg
ICAgICAqIGJ5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcDoKKyAgICAgICAg
KEpTQzo6Z2VuZXJhdGVVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKToK
KyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oOgorICAgICAg
ICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR2VuZXJhdG9yOjppbml0aWFsaXplQXJyb3dGdW5jdGlvbkNvbnRleHRTY29wZUlmTmVlZGVk
KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRUaGlzVG9BcnJvd0Z1
bmN0aW9uQ29udGV4dFNjb3BlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRVcGRhdGVVbmRlcnNjb3JlUHJvdG9JblNjb3BlSWZOZWVkZWQpOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdFVwZGF0ZVN1cGVyUHJvcGVydHlJblNjb3BlSWZOZWVkZWQp
OgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dEhvbWVPYmplY3RUb0Nh
bGxlZSk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpkZXJpdmVkQ29udGV4dFR5cGUpOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6bWFrZUZ1bmN0aW9uKToKKyAgICAgICAgKiBieXRl
Y29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6VGhpc05vZGU6OmVtaXRC
eXRlY29kZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQ2FsbFZhbHVlTm9kZTo6ZW1pdEJ5dGVj
b2RlKToKKyAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHA6CisgICAgICAg
IChKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lOjpldmFsdWF0ZSk6CisgICAgICAgICogaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpldmFsKToKKyAgICAgICAgKiBydW50
aW1lL0NvZGVDYWNoZS5jcHA6CisgICAgICAgIChKU0M6OkNvZGVDYWNoZTo6Z2V0RnVuY3Rpb25F
eGVjdXRhYmxlRnJvbUdsb2JhbENvZGUpOgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5j
cHA6CisgICAgICAgIChKU0M6OlNjcmlwdEV4ZWN1dGFibGU6OlNjcmlwdEV4ZWN1dGFibGUpOgor
ICAgICAgICAoSlNDOjpFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6RXZh
bEV4ZWN1dGFibGU6OkV2YWxFeGVjdXRhYmxlKToKKyAgICAgICAgKEpTQzo6UHJvZ3JhbUV4ZWN1
dGFibGU6OlByb2dyYW1FeGVjdXRhYmxlKToKKyAgICAgICAgKEpTQzo6TW9kdWxlUHJvZ3JhbUV4
ZWN1dGFibGU6Ok1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKToKKyAgICAgICAgKEpTQzo6RnVuY3Rp
b25FeGVjdXRhYmxlOjpGdW5jdGlvbkV4ZWN1dGFibGUpOgorICAgICAgICAqIHJ1bnRpbWUvRXhl
Y3V0YWJsZS5oOgorICAgICAgICAoSlNDOjpTY3JpcHRFeGVjdXRhYmxlOjpkZXJpdmVkQ29udGV4
dFR5cGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwOgor
ICAgICAgICAoSlNDOjpnbG9iYWxGdW5jRXZhbCk6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fy
cm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXN1cGVycHJvcGVydHkuanM6IEFkZGVkLgorCiAyMDE1
LTEwLTI2IEFsZWtzYW5kciBTa2FjaGtvdiAgIDxnc2thY2hrb3ZAZ21haWwuY29tPgogCiAgICAg
ICAgIFtFUzZdIEFycm93IGZ1bmN0aW9uIGNyZWF0ZWQgYmVmb3JlIHN1cGVyKCkgY2F1c2VzIFRE
Wiwgc2hvdWxkIGl0PwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5z
L0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMv
QnVpbHRpbkV4ZWN1dGFibGVzLmNwcAppbmRleCBjODFlMjZjMzVkOTc0NzY0YzE3ODUyODE5MTlh
OGY4ZmMwYzZmODA5Li41ZTVmNmRmNzZiN2I3MmY5NmFiOThiODY5ZjBlNGM5YzBkMzUwYTc0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFi
bGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1
dGFibGVzLmNwcApAQCAtMTE1LDcgKzExNSw3IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
KiBjcmVhdGVFeGVjdXRhYmxlSW50ZXJuYWwoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzCiAg
ICAgfQogICAgIG1ldGFkYXRhLT5vdmVycmlkZU5hbWUobmFtZSk7CiAgICAgVmFyaWFibGVFbnZp
cm9ubWVudCBkdW1teVREWlZhcmlhYmxlczsKLSAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0
ZSgmdm0sIHNvdXJjZSwgbWV0YWRhdGEsIGtpbmQsIGNvbnN0cnVjdEFiaWxpdHksIGR1bW15VERa
VmFyaWFibGVzLCBmYWxzZSwgV1RGOjptb3ZlKHNvdXJjZU92ZXJyaWRlKSk7CisgICAgVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IFVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlOjpjcmVhdGUoJnZtLCBzb3VyY2UsIG1ldGFkYXRhLCBraW5kLCBjb25zdHJ1
Y3RBYmlsaXR5LCBkdW1teVREWlZhcmlhYmxlcywgRGVyaXZlZENvbnRleHRUeXBlOjpOb25lLCBX
VEY6Om1vdmUoc291cmNlT3ZlcnJpZGUpKTsKICAgICBmdW5jdGlvbkV4ZWN1dGFibGUtPnNldE5h
bWVWYWx1ZSh2bSwganNTdHJpbmcoJnZtLCBuYW1lLnN0cmluZygpKSk7CiAgICAgcmV0dXJuIGZ1
bmN0aW9uRXhlY3V0YWJsZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9FdmFsQ29kZUNhY2hlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
RXZhbENvZGVDYWNoZS5oCmluZGV4IGUyZDZhNDEzMGJmYmMzZWYyY2M4OTE4NzFkNmY5ZTYyMzU1
Njc0MTUuLjY4NjEyMDkxNjY1MGQwM2E2ZmRjYWJhMThkMjVhOTA2MDYzY2I0MzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FdmFsQ29kZUNhY2hlLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V2YWxDb2RlQ2FjaGUuaApAQCAtNTEsMTEg
KzUxLDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAg
IH0KIAotICAgICAgICBFdmFsRXhlY3V0YWJsZSogZ2V0U2xvdyhFeGVjU3RhdGUqIGV4ZWMsIEpT
Q2VsbCogb3duZXIsIGJvb2wgaW5TdHJpY3RDb250ZXh0LCBUaGlzVERaTW9kZSB0aGlzVERaTW9k
ZSwgYm9vbCBpc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQsIGJvb2wgaXNBcnJvd0Z1bmN0aW9u
Q29udGV4dCwgY29uc3QgU3RyaW5nJiBldmFsU291cmNlLCBKU1Njb3BlKiBzY29wZSkKKyAgICAg
ICAgRXZhbEV4ZWN1dGFibGUqIGdldFNsb3coRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwqIG93bmVy
LCBib29sIGluU3RyaWN0Q29udGV4dCwgVGhpc1REWk1vZGUgdGhpc1REWk1vZGUsIERlcml2ZWRD
b250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4
dCwgY29uc3QgU3RyaW5nJiBldmFsU291cmNlLCBKU1Njb3BlKiBzY29wZSkKICAgICAgICAgewog
ICAgICAgICAgICAgVmFyaWFibGVFbnZpcm9ubWVudCB2YXJpYWJsZXNVbmRlclREWjsKICAgICAg
ICAgICAgIEpTU2NvcGU6OmNvbGxlY3RWYXJpYWJsZXNVbmRlclREWihzY29wZSwgdmFyaWFibGVz
VW5kZXJURFopOwotICAgICAgICAgICAgRXZhbEV4ZWN1dGFibGUqIGV2YWxFeGVjdXRhYmxlID0g
RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShleGVjLCBtYWtlU291cmNlKGV2YWxTb3VyY2UpLCBpblN0
cmljdENvbnRleHQsIHRoaXNURFpNb2RlLCBpc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQsIGlz
QXJyb3dGdW5jdGlvbkNvbnRleHQsICZ2YXJpYWJsZXNVbmRlclREWik7CisgICAgICAgICAgICBF
dmFsRXhlY3V0YWJsZSogZXZhbEV4ZWN1dGFibGUgPSBFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKGV4
ZWMsIG1ha2VTb3VyY2UoZXZhbFNvdXJjZSksIGluU3RyaWN0Q29udGV4dCwgdGhpc1REWk1vZGUs
IGRlcml2ZWRDb250ZXh0VHlwZSwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgJnZhcmlhYmxlc1Vu
ZGVyVERaKTsKICAgICAgICAgICAgIGlmICghZXZhbEV4ZWN1dGFibGUpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9FeGVjdXRhYmxlSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1
dGFibGVJbmZvLmgKaW5kZXggMTMyNDZjY2E1NTQxMWEzNWJkNjUwMDM1MjNjOTBhNDY1YTU0ODhi
YS4uNWY1ODJkOGFlYjU4NzhkYzVmNTExNDU1YThmNDE4ODVhZTk4ZjViMiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVJbmZvLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVJbmZvLmgKQEAgLTI5LDkgKzI5
LDExIEBACiAjaW5jbHVkZSAiUGFyc2VyTW9kZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CisgICAg
CitlbnVtIGNsYXNzIERlcml2ZWRDb250ZXh0VHlwZSB7IE5vbmUsIERlcml2ZWRDb25zdHJ1Y3Rv
ckNvbnRleHQsIERlcml2ZWRNZXRob2RDb250ZXh0IH07CiAKIHN0cnVjdCBFeGVjdXRhYmxlSW5m
byB7Ci0gICAgRXhlY3V0YWJsZUluZm8oYm9vbCBuZWVkc0FjdGl2YXRpb24sIGJvb2wgdXNlc0V2
YWwsIGJvb2wgaXNTdHJpY3RNb2RlLCBib29sIGlzQ29uc3RydWN0b3IsIGJvb2wgaXNCdWlsdGlu
RnVuY3Rpb24sIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIGJvb2wgaXNBcnJvd0Z1
bmN0aW9uLCBib29sIGlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCwgYm9vbCBpc0Fycm93RnVu
Y3Rpb25Db250ZXh0KQorICAgIEV4ZWN1dGFibGVJbmZvKGJvb2wgbmVlZHNBY3RpdmF0aW9uLCBi
b29sIHVzZXNFdmFsLCBib29sIGlzU3RyaWN0TW9kZSwgYm9vbCBpc0NvbnN0cnVjdG9yLCBib29s
IGlzQnVpbHRpbkZ1bmN0aW9uLCBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBib29s
IGlzQXJyb3dGdW5jdGlvbiwgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSwg
Ym9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBib29sIGlzQ2xhc3NDb250ZXh0ID0gZmFsc2Up
CiAgICAgICAgIDogbV9uZWVkc0FjdGl2YXRpb24obmVlZHNBY3RpdmF0aW9uKQogICAgICAgICAs
IG1fdXNlc0V2YWwodXNlc0V2YWwpCiAgICAgICAgICwgbV9pc1N0cmljdE1vZGUoaXNTdHJpY3RN
b2RlKQpAQCAtMzksOCArNDEsOSBAQCBzdHJ1Y3QgRXhlY3V0YWJsZUluZm8gewogICAgICAgICAs
IG1faXNCdWlsdGluRnVuY3Rpb24oaXNCdWlsdGluRnVuY3Rpb24pCiAgICAgICAgICwgbV9jb25z
dHJ1Y3RvcktpbmQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvbnN0cnVjdG9yS2luZCkpCiAgICAg
ICAgICwgbV9pc0Fycm93RnVuY3Rpb24oaXNBcnJvd0Z1bmN0aW9uKQotICAgICAgICAsIG1faXNE
ZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KGlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCkKKyAg
ICAgICAgLCBtX2Rlcml2ZWRDb250ZXh0VHlwZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZGVyaXZl
ZENvbnRleHRUeXBlKSkKICAgICAgICAgLCBtX2lzQXJyb3dGdW5jdGlvbkNvbnRleHQoaXNBcnJv
d0Z1bmN0aW9uQ29udGV4dCkKKyAgICAgICAgLCBtX2lzQ2xhc3NDb250ZXh0KGlzQ2xhc3NDb250
ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKG1fY29uc3RydWN0b3JLaW5kID09IHN0YXRpY19j
YXN0PHVuc2lnbmVkPihjb25zdHJ1Y3RvcktpbmQpKTsKICAgICB9CkBAIC01Miw4ICs1NSw5IEBA
IHN0cnVjdCBFeGVjdXRhYmxlSW5mbyB7CiAgICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1faXNCdWlsdGluRnVuY3Rpb247IH0KICAgICBDb25zdHJ1Y3RvcktpbmQg
Y29uc3RydWN0b3JLaW5kKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29uc3RydWN0b3JL
aW5kPihtX2NvbnN0cnVjdG9yS2luZCk7IH0KICAgICBib29sIGlzQXJyb3dGdW5jdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1faXNBcnJvd0Z1bmN0aW9uOyB9Ci0gICAgYm9vbCBpc0Rlcml2ZWRDb25z
dHJ1Y3RvckNvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2lzRGVyaXZlZENvbnN0cnVjdG9yQ29u
dGV4dDsgfQorICAgIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUoKSBjb25z
dCB7IHJldHVybiBzdGF0aWNfY2FzdDxEZXJpdmVkQ29udGV4dFR5cGU+KG1fZGVyaXZlZENvbnRl
eHRUeXBlKTsgfQogICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCgpIGNvbnN0IHsgcmV0
dXJuIG1faXNBcnJvd0Z1bmN0aW9uQ29udGV4dDsgfQorICAgIGJvb2wgaXNDbGFzc0NvbnRleHQo
KSBjb25zdCB7IHJldHVybiBtX2lzQ2xhc3NDb250ZXh0OyB9CiAKIHByaXZhdGU6CiAgICAgdW5z
aWduZWQgbV9uZWVkc0FjdGl2YXRpb24gOiAxOwpAQCAtNjMsOCArNjcsOSBAQCBwcml2YXRlOgog
ICAgIHVuc2lnbmVkIG1faXNCdWlsdGluRnVuY3Rpb24gOiAxOwogICAgIHVuc2lnbmVkIG1fY29u
c3RydWN0b3JLaW5kIDogMjsKICAgICB1bnNpZ25lZCBtX2lzQXJyb3dGdW5jdGlvbiA6IDE7Ci0g
ICAgdW5zaWduZWQgbV9pc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQgOiAxOworICAgIHVuc2ln
bmVkIG1fZGVyaXZlZENvbnRleHRUeXBlIDogMjsKICAgICB1bnNpZ25lZCBtX2lzQXJyb3dGdW5j
dGlvbkNvbnRleHQgOiAxOworICAgIHVuc2lnbmVkIG1faXNDbGFzc0NvbnRleHQgOiAxOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAppbmRleCA0ZGU1OTRkYjE0YWJmYzBlYmFkM2M2
ZDNlMDIwNGY2MzU0MDliMWQwLi5mOTc4ZGU3ZTdkNjMzNmZhYjNkMjA3MjZhNmU1ZTE4YmFlZGZi
OWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRD
b2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxpbmtl
ZENvZGVCbG9jay5jcHAKQEAgLTY2LDggKzY2LDkgQEAgVW5saW5rZWRDb2RlQmxvY2s6OlVubGlu
a2VkQ29kZUJsb2NrKFZNKiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENvZGVUeXBlIGNvZGUK
ICAgICAsIG1faXNCdWlsdGluRnVuY3Rpb24oaW5mby5pc0J1aWx0aW5GdW5jdGlvbigpKQogICAg
ICwgbV9jb25zdHJ1Y3RvcktpbmQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluZm8uY29uc3RydWN0
b3JLaW5kKCkpKQogICAgICwgbV9pc0Fycm93RnVuY3Rpb24oaW5mby5pc0Fycm93RnVuY3Rpb24o
KSkKLSAgICAsIG1faXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KGluZm8uaXNEZXJpdmVkQ29u
c3RydWN0b3JDb250ZXh0KCkpCisgICAgLCBtX2Rlcml2ZWRDb250ZXh0VHlwZShzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oaW5mby5kZXJpdmVkQ29udGV4dFR5cGUoKSkpCiAgICAgLCBtX2lzQXJyb3dG
dW5jdGlvbkNvbnRleHQoaW5mby5pc0Fycm93RnVuY3Rpb25Db250ZXh0KCkpCisgICAgLCBtX2lz
Q2xhc3NDb250ZXh0KGluZm8uaXNDbGFzc0NvbnRleHQoKSkKICAgICAsIG1fZmlyc3RMaW5lKDAp
CiAgICAgLCBtX2xpbmVDb3VudCgwKQogICAgICwgbV9lbmRDb2x1bW4oVUlOVF9NQVgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2su
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCmlu
ZGV4IDMzODEyNjQ4MWM3Njg2ZjVlYTJjYTc2N2I1NzIyNjQxOTlmZDliMWMuLjIzNGViNjgwODYx
ZGMwYTI5MmIyMzgxNWI1ZTljM2ZlYjQ4ZjFkYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCkBAIC0xMTcsOCArMTE3LDkgQEAg
cHVibGljOgogICAgIGJvb2wgaXNTdHJpY3RNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9pc1N0cmlj
dE1vZGU7IH0KICAgICBib29sIHVzZXNFdmFsKCkgY29uc3QgeyByZXR1cm4gbV91c2VzRXZhbDsg
fQogICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0Fycm93RnVu
Y3Rpb247IH0KLSAgICBib29sIGlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCgpIGNvbnN0IHsg
cmV0dXJuIG1faXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0OyB9CisgICAgRGVyaXZlZENvbnRl
eHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PERl
cml2ZWRDb250ZXh0VHlwZT4obV9kZXJpdmVkQ29udGV4dFR5cGUpOyB9CiAgICAgYm9vbCBpc0Fy
cm93RnVuY3Rpb25Db250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9pc0Fycm93RnVuY3Rpb25Db250
ZXh0OyB9CisgICAgYm9vbCBpc0NsYXNzQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1faXNDbGFz
c0NvbnRleHQ7IH0KIAogICAgIGJvb2wgbmVlZHNGdWxsU2NvcGVDaGFpbigpIGNvbnN0IHsgcmV0
dXJuIG1fbmVlZHNGdWxsU2NvcGVDaGFpbjsgfQogCkBAIC0zOTAsOSArMzkxLDkgQEAgcHJpdmF0
ZToKICAgICB1bnNpZ25lZCBtX2lzQnVpbHRpbkZ1bmN0aW9uIDogMTsKICAgICB1bnNpZ25lZCBt
X2NvbnN0cnVjdG9yS2luZCA6IDI7CiAgICAgdW5zaWduZWQgbV9pc0Fycm93RnVuY3Rpb24gOiAx
OwotICAgIHVuc2lnbmVkIG1faXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0OiAxOwotICAgIHVu
c2lnbmVkIG1faXNBcnJvd0Z1bmN0aW9uQ29udGV4dDogMTsKLQorICAgIHVuc2lnbmVkIG1fZGVy
aXZlZENvbnRleHRUeXBlIDogMjsKKyAgICB1bnNpZ25lZCBtX2lzQXJyb3dGdW5jdGlvbkNvbnRl
eHQgOiAxOworICAgIHVuc2lnbmVkIG1faXNDbGFzc0NvbnRleHQgOiAxOwogICAgIHVuc2lnbmVk
IG1fZmlyc3RMaW5lOwogICAgIHVuc2lnbmVkIG1fbGluZUNvdW50OwogICAgIHVuc2lnbmVkIG1f
ZW5kQ29sdW1uOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKaW5kZXggMmVhYjFiNTdlYWQ5YzI1
N2YxNmE4NzU0YTk1MjlhNTc2NGRhNGIzNi4uYWQ5ZGI0OWYwMzAxMTBhMzllMWY1M2U1YzBiY2Uz
MzhjNzZjNWE2ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCkBAIC02Niw4ICs2NiwxMCBA
QCBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogZ2VuZXJhdGVVbmxpbmtlZEZ1bmN0
aW9uQ29kZUJsb2NrKAogICAgIGZ1bmN0aW9uLT5maW5pc2hQYXJzaW5nKGV4ZWN1dGFibGUtPm5h
bWUoKSwgZXhlY3V0YWJsZS0+ZnVuY3Rpb25Nb2RlKCkpOwogICAgIGV4ZWN1dGFibGUtPnJlY29y
ZFBhcnNlKGZ1bmN0aW9uLT5mZWF0dXJlcygpLCBmdW5jdGlvbi0+aGFzQ2FwdHVyZWRWYXJpYWJs
ZXMoKSk7CiAgICAgCi0gICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gVW5s
aW5rZWRGdW5jdGlvbkNvZGVCbG9jazo6Y3JlYXRlKCZ2bSwgRnVuY3Rpb25Db2RlLAotICAgICAg
ICBFeGVjdXRhYmxlSW5mbyhmdW5jdGlvbi0+bmVlZHNBY3RpdmF0aW9uKCksIGZ1bmN0aW9uLT51
c2VzRXZhbCgpLCBmdW5jdGlvbi0+aXNTdHJpY3RNb2RlKCksIGtpbmQgPT0gQ29kZUZvckNvbnN0
cnVjdCwgZnVuY3Rpb25LaW5kID09IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uLCBleGVjdXRhYmxl
LT5jb25zdHJ1Y3RvcktpbmQoKSwgaXNBcnJvd0Z1bmN0aW9uLCBleGVjdXRhYmxlLT5pc0Rlcml2
ZWRDb25zdHJ1Y3RvckNvbnRleHQoKSwgZmFsc2UpKTsKKyAgICAvLyBtZXRob2QsIGdldHRlciAm
IHNldHRlciBhcmUgcGFydCBvZiB0aGUgY2xhc3MsIHNvIHRoaXMgZnVuY3Rpb25Db2RlQmxvY2sg
aXMgcGFydCBvZiB0aGUgY2xhc3MKKyAgICBib29sIGlzQ2xhc3NDb250ZXh0ID0gZXhlY3V0YWJs
ZS0+cGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlIHx8IGV4ZWN1dGFi
bGUtPnBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6R2V0dGVyTW9kZSB8fCBleGVjdXRh
YmxlLT5wYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OlNldHRlck1vZGU7CisgICAgCisg
ICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gVW5saW5rZWRGdW5jdGlvbkNv
ZGVCbG9jazo6Y3JlYXRlKCZ2bSwgRnVuY3Rpb25Db2RlLCBFeGVjdXRhYmxlSW5mbyhmdW5jdGlv
bi0+bmVlZHNBY3RpdmF0aW9uKCksIGZ1bmN0aW9uLT51c2VzRXZhbCgpLCBmdW5jdGlvbi0+aXNT
dHJpY3RNb2RlKCksIGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCwgZnVuY3Rpb25LaW5kID09IFVu
bGlua2VkQnVpbHRpbkZ1bmN0aW9uLCBleGVjdXRhYmxlLT5jb25zdHJ1Y3RvcktpbmQoKSwgaXNB
cnJvd0Z1bmN0aW9uLCBleGVjdXRhYmxlLT5kZXJpdmVkQ29udGV4dFR5cGUoKSwgZmFsc2UsIGlz
Q2xhc3NDb250ZXh0KSk7CiAgICAgYXV0byBnZW5lcmF0b3Ioc3RkOjptYWtlX3VuaXF1ZTxCeXRl
Y29kZUdlbmVyYXRvcj4odm0sIGZ1bmN0aW9uLmdldCgpLCByZXN1bHQsIGRlYnVnZ2VyTW9kZSwg
cHJvZmlsZXJNb2RlLCBleGVjdXRhYmxlLT5wYXJlbnRTY29wZVREWlZhcmlhYmxlcygpKSk7CiAg
ICAgZXJyb3IgPSBnZW5lcmF0b3ItPmdlbmVyYXRlKCk7CiAgICAgaWYgKGVycm9yLmlzVmFsaWQo
KSkKQEAgLTc1LDcgKzc3LDcgQEAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGdl
bmVyYXRlVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaygKICAgICByZXR1cm4gcmVzdWx0OwogfQog
Ci1VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUo
Vk0qIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBS
ZWZQdHI8U291cmNlUHJvdmlkZXI+JiYgc291cmNlT3ZlcnJpZGUsIEZ1bmN0aW9uTWV0YWRhdGFO
b2RlKiBub2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCBraW5kLCBDb25zdHJ1Y3RBYmlsaXR5IGNv
bnN0cnVjdEFiaWxpdHksIFZhcmlhYmxlRW52aXJvbm1lbnQmIHBhcmVudFNjb3BlVERaVmFyaWFi
bGVzLCBib29sIGlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCkKK1VubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSogdm0sIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFJlZlB0cjxTb3VyY2VQcm92aWRl
cj4mJiBzb3VyY2VPdmVycmlkZSwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIG5vZGUsIFVubGlua2Vk
RnVuY3Rpb25LaW5kIGtpbmQsIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSwgVmFy
aWFibGVFbnZpcm9ubWVudCYgcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIERlcml2ZWRDb250ZXh0
VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUpCiAgICAgOiBCYXNlKCp2bSwgc3RydWN0dXJlKQogICAg
ICwgbV9uYW1lKG5vZGUtPmlkZW50KCkpCiAgICAgLCBtX2luZmVycmVkTmFtZShub2RlLT5pbmZl
cnJlZE5hbWUoKSkKQEAgLTEwMCw3ICsxMDIsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0qIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdAog
ICAgICwgbV9jb25zdHJ1Y3RvcktpbmQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG5vZGUtPmNvbnN0
cnVjdG9yS2luZCgpKSkKICAgICAsIG1fZnVuY3Rpb25Nb2RlKG5vZGUtPmZ1bmN0aW9uTW9kZSgp
KQogICAgICwgbV9pc0Fycm93RnVuY3Rpb24obm9kZS0+aXNBcnJvd0Z1bmN0aW9uKCkpCi0gICAg
LCBtX2lzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dChpc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRl
eHQpCisgICAgLCBtX2Rlcml2ZWRDb250ZXh0VHlwZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZGVy
aXZlZENvbnRleHRUeXBlKSkKIHsKICAgICBBU1NFUlQobV9jb25zdHJ1Y3RvcktpbmQgPT0gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KG5vZGUtPmNvbnN0cnVjdG9yS2luZCgpKSk7CiAgICAgbV9wYXJl
bnRTY29wZVREWlZhcmlhYmxlcy5zd2FwKHBhcmVudFNjb3BlVERaVmFyaWFibGVzKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlLmgKaW5kZXggNjFiOGQxMGU3YWE2ODA4YTRiY2UyYWQ4OGYxMmFmNjUwZWZm
NzkwMC4uZDk4OTRiY2Q4OWQ0YThjZjNkYzIwNDI2OGY3ZDMzZWZiNWJlZTU3ZiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJDb2RlU3BlY2lhbGl6
YXRpb25LaW5kLmgiCiAjaW5jbHVkZSAiQ29kZVR5cGUuaCIKICNpbmNsdWRlICJDb25zdHJ1Y3RB
YmlsaXR5LmgiCisjaW5jbHVkZSAiRXhlY3V0YWJsZUluZm8uaCIKICNpbmNsdWRlICJFeHByZXNz
aW9uUmFuZ2VJbmZvLmgiCiAjaW5jbHVkZSAiSGFuZGxlckluZm8uaCIKICNpbmNsdWRlICJJZGVu
dGlmaWVyLmgiCkBAIC02NSwxMCArNjYsMTAgQEAgcHVibGljOgogICAgIHR5cGVkZWYgSlNDZWxs
IEJhc2U7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6
U3RydWN0dXJlRmxhZ3MgfCBTdHJ1Y3R1cmVJc0ltbW9ydGFsOwogCi0gICAgc3RhdGljIFVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGUoVk0qIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBz
b3VyY2UsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBub2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCB1
bmxpbmtlZEZ1bmN0aW9uS2luZCwgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5LCBW
YXJpYWJsZUVudmlyb25tZW50JiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgYm9vbCBpc0Rlcml2
ZWRDb25zdHJ1Y3RvckNvbnRleHQsIFJlZlB0cjxTb3VyY2VQcm92aWRlcj4mJiBzb3VyY2VPdmVy
cmlkZSA9IG51bGxwdHIpCisgICAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBj
cmVhdGUoVk0qIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEZ1bmN0aW9uTWV0YWRhdGFO
b2RlKiBub2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCB1bmxpbmtlZEZ1bmN0aW9uS2luZCwgQ29u
c3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5LCBWYXJpYWJsZUVudmlyb25tZW50JiBwYXJl
bnRTY29wZVREWlZhcmlhYmxlcywgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlw
ZSwgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiYmIHNvdXJjZU92ZXJyaWRlID0gbnVsbHB0cikKICAg
ICB7CiAgICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBpbnN0YW5jZSA9IG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGVDZWxsPFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlPih2bS0+aGVh
cCkpCi0gICAgICAgICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSh2bSwgdm0tPnVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlU3RydWN0dXJlLmdldCgpLCBzb3VyY2UsIFdURjo6bW92ZShz
b3VyY2VPdmVycmlkZSksIG5vZGUsIHVubGlua2VkRnVuY3Rpb25LaW5kLCBjb25zdHJ1Y3RBYmls
aXR5LCBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgaXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0
KTsKKyAgICAgICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKHZtLCB2bS0+dW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIHNvdXJjZSwgV1RGOjptb3ZlKHNv
dXJjZU92ZXJyaWRlKSwgbm9kZSwgdW5saW5rZWRGdW5jdGlvbktpbmQsIGNvbnN0cnVjdEFiaWxp
dHksIHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBkZXJpdmVkQ29udGV4dFR5cGUpOwogICAgICAg
ICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24oKnZtKTsKICAgICAgICAgcmV0dXJuIGluc3RhbmNl
OwogICAgIH0KQEAgLTEyNiwxMCArMTI3LDEwIEBAIHB1YmxpYzoKICAgICBib29sIGlzQ2xhc3ND
b25zdHJ1Y3RvckZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gY29uc3RydWN0b3JLaW5kKCkgIT0g
Q29uc3RydWN0b3JLaW5kOjpOb25lOyB9CiAgICAgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCog
cGFyZW50U2NvcGVURFpWYXJpYWJsZXMoKSBjb25zdCB7IHJldHVybiAmbV9wYXJlbnRTY29wZVRE
WlZhcmlhYmxlczsgfQogICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV9pc0Fycm93RnVuY3Rpb247IH0KLSAgICBib29sIGlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4
dCgpIGNvbnN0IHtyZXR1cm4gbV9pc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQ7IH0KKyAgICBK
U0M6OkRlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUoKSBjb25zdCB7cmV0dXJu
IHN0YXRpY19jYXN0PEpTQzo6RGVyaXZlZENvbnRleHRUeXBlPihtX2Rlcml2ZWRDb250ZXh0VHlw
ZSk7IH0KIAogcHJpdmF0ZToKLSAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSosIFN0
cnVjdHVyZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBSZWZQdHI8U291cmNlUHJvdmlkZXI+JiYgc291
cmNlT3ZlcnJpZGUsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiwgVW5saW5rZWRGdW5jdGlvbktpbmQs
IENvbnN0cnVjdEFiaWxpdHksIFZhcmlhYmxlRW52aXJvbm1lbnQmLCBib29sKTsKKyAgICBVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSosIFN0cnVjdHVyZSosIGNvbnN0IFNvdXJjZUNvZGUm
LCBSZWZQdHI8U291cmNlUHJvdmlkZXI+JiYgc291cmNlT3ZlcnJpZGUsIEZ1bmN0aW9uTWV0YWRh
dGFOb2RlKiwgVW5saW5rZWRGdW5jdGlvbktpbmQsIENvbnN0cnVjdEFiaWxpdHksIFZhcmlhYmxl
RW52aXJvbm1lbnQmLCBKU0M6OkRlcml2ZWRDb250ZXh0VHlwZSk7CiAgICAgV3JpdGVCYXJyaWVy
PFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s+IG1fdW5saW5rZWRDb2RlQmxvY2tGb3JDYWxsOwog
ICAgIFdyaXRlQmFycmllcjxVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrPiBtX3VubGlua2VkQ29k
ZUJsb2NrRm9yQ29uc3RydWN0OwogCkBAIC0xNjAsNyArMTYxLDcgQEAgcHJpdmF0ZToKICAgICB1
bnNpZ25lZCBtX2NvbnN0cnVjdG9yS2luZCA6IDI7CiAgICAgdW5zaWduZWQgbV9mdW5jdGlvbk1v
ZGUgOiAxOyAvLyBGdW5jdGlvbk1vZGUKICAgICB1bnNpZ25lZCBtX2lzQXJyb3dGdW5jdGlvbiA6
IDE7Ci0gICAgdW5zaWduZWQgbV9pc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQ6IDE7CisgICAg
dW5zaWduZWQgbV9kZXJpdmVkQ29udGV4dFR5cGU6IDI7CiAKIHByb3RlY3RlZDoKICAgICB2b2lk
IGZpbmlzaENyZWF0aW9uKFZNJiB2bSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggOWY4NDA0NGY3MzZh
M2E3NzQ2NWIwNDk4OGIwNmZlNWFiNzM4YWMxZC4uOGEyMDcyZDZhOGU3MmRmNTZlYzgwNzk0MWE2
ZDQxYTc0YWJhY2YyYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTE1Miw3ICsxNTIsNyBAQCBCeXRl
Y29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBQcm9ncmFtTm9kZSogcHJv
Z3JhbU5vZGUsIFVubGlua2VkUAogICAgICwgbV90aGlzUmVnaXN0ZXIoQ2FsbEZyYW1lOjp0aGlz
QXJndW1lbnRPZmZzZXQoKSkKICAgICAsIG1fY29kZVR5cGUoR2xvYmFsQ29kZSkKICAgICAsIG1f
dm0oJnZtKQotICAgICwgbV9pc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoZmFsc2UpCisgICAg
LCBtX2Rlcml2ZWRDb250ZXh0VHlwZShEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUpCiB7CiAgICAg
QVNTRVJUX1VOVVNFRChwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgIXBhcmVudFNjb3BlVERaVmFy
aWFibGVzLT5zaXplKCkpOwogCkBAIC0yMDUsNyArMjA1LDcgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6
OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVu
bGlua2UKICAgICAvLyBjb21wYXRpYmxlIHdpdGggdGFpbCBjYWxscyAod2UgaGF2ZSBubyB3YXkg
b2YgZW1pdHRpbmcgb3BfZGlkX2NhbGwpLgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNDg4MTkKICAgICAsIG1faW5UYWlsUG9zaXRpb24oT3B0aW9uczo6
dXNlVGFpbENhbGxzKCkgJiYgIWlzQ29uc3RydWN0b3IoKSAmJiBjb25zdHJ1Y3RvcktpbmQoKSA9
PSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUgJiYgaXNTdHJpY3RNb2RlKCkgJiYgIW1fc2hvdWxkRW1p
dFByb2ZpbGVIb29rcykKLSAgICAsIG1faXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KGNvZGVC
bG9jay0+aXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KCkpCisgICAgLCBtX2Rlcml2ZWRDb250
ZXh0VHlwZShjb2RlQmxvY2stPmRlcml2ZWRDb250ZXh0VHlwZSgpKQogewogICAgIGZvciAoYXV0
byYgY29uc3RhbnRSZWdpc3RlciA6IG1fbGlua1RpbWVDb25zdGFudFJlZ2lzdGVycykKICAgICAg
ICAgY29uc3RhbnRSZWdpc3RlciA9IG51bGxwdHI7CkBAIC00ODcsMTQgKzQ4NywxNCBAQCBCeXRl
Y29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1
bmN0aW9uTm9kZSwgVW5saW5rZQogICAgIH0gZWxzZSB7CiAgICAgICAgIGVtaXRHZXROZXdUYXJn
ZXRGcm9tQXJyb3dGdW5jdGlvbkxleGljYWxFbnZpcm9ubWVudCgpOwogCi0gICAgICAgIGlmIChm
dW5jdGlvbk5vZGUtPnVzZXNUaGlzKCkgfHwgbV9pc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQp
IHsKKyAgICAgICAgaWYgKGZ1bmN0aW9uTm9kZS0+dXNlc1RoaXMoKSkKKyAgICAgICAgICAgIGVt
aXRHZXRUaGlzRnJvbUFycm93RnVuY3Rpb25MZXhpY2FsRW52aXJvbm1lbnQoKTsKIAotICAgICAg
ICAgICAgaWYgKGZ1bmN0aW9uTm9kZS0+dXNlc1RoaXMoKSkKLSAgICAgICAgICAgICAgICBlbWl0
R2V0VGhpc0Zyb21BcnJvd0Z1bmN0aW9uTGV4aWNhbEVudmlyb25tZW50KCk7Ci0KLSAgICAgICAg
ICAgIGlmIChtX2lzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCkKLSAgICAgICAgICAgICAgICBl
bWl0UHV0UHJvdG9Ub0NhbGxlZSgpOwotICAgICAgICB9CisgICAgICAgIGlmIChkZXJpdmVkQ29u
dGV4dFR5cGUoKSA9PSBEZXJpdmVkQ29udGV4dFR5cGU6OkRlcml2ZWRDb25zdHJ1Y3RvckNvbnRl
eHQpCisgICAgICAgICAgICBlbWl0UHV0UHJvdG9Ub0NhbGxlZSgpOworICAgICAgICAKKyAgICAg
ICAgaWYgKGRlcml2ZWRDb250ZXh0VHlwZSgpID09IERlcml2ZWRDb250ZXh0VHlwZTo6RGVyaXZl
ZE1ldGhvZENvbnRleHQpCisgICAgICAgICAgICBlbWl0UHV0SG9tZU9iamVjdFRvQ2FsbGVlKCk7
CiAgICAgfQogCiAgICAgLy8gQWxsICJhZGRWYXIoKSJzIG5lZWRzIHRvIGhhcHBlbiBiZWZvcmUg
ImluaXRpYWxpemVEZWZhdWx0UGFyYW1ldGVyVmFsdWVzQW5kU2V0dXBGdW5jdGlvblNjb3BlU3Rh
Y2soKSIgaXMgY2FsbGVkCkBAIC01MDUsNyArNTA1LDEwIEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpC
eXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxp
bmtlCiAgICAgaWYgKCFjb2RlQmxvY2stPmlzQXJyb3dGdW5jdGlvbigpICYmIChmdW5jdGlvbk5v
ZGUtPnVzZXNBcnJvd0Z1bmN0aW9uKCkgfHwgZnVuY3Rpb25Ob2RlLT51c2VzRXZhbCgpKSkgewog
ICAgICAgICBpbml0aWFsaXplQXJyb3dGdW5jdGlvbkNvbnRleHRTY29wZUlmTmVlZGVkKGZ1bmN0
aW9uU3ltYm9sVGFibGUpOwogICAgICAgICBlbWl0VXBkYXRlVmFyaWFibGVzSW5BcnJvd0Z1bmN0
aW9uQ29udGV4dFNjb3BlKCk7Ci0gICAgICAgIGVtaXRVcGRhdGVTdXBlckluU2NvcGVJZk5lZWRl
ZCgpOworICAgICAgICBlbWl0VXBkYXRlVW5kZXJzY29yZVByb3RvSW5TY29wZUlmTmVlZGVkKCk7
CisgICAgICAgIAorICAgICAgICBpZiAoY29kZUJsb2NrLT5pc0NsYXNzQ29udGV4dCgpKQorICAg
ICAgICAgICAgZW1pdFVwZGF0ZVN1cGVyUHJvcGVydHlJblNjb3BlSWZOZWVkZWQoKTsKICAgICB9
CiAKICAgICBwdXNoTGV4aWNhbFNjb3BlKG1fc2NvcGVOb2RlLCB0cnVlKTsKQEAgLTUyMCw3ICs1
MjMsNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBFdmFs
Tm9kZSogZXZhbE5vZGUsIFVubGlua2VkRXZhbENvZAogICAgICwgbV9jb2RlVHlwZShFdmFsQ29k
ZSkKICAgICAsIG1fdm0oJnZtKQogICAgICwgbV91c2VzTm9uU3RyaWN0RXZhbChjb2RlQmxvY2st
PnVzZXNFdmFsKCkgJiYgIWNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpCi0gICAgLCBtX2lzRGVy
aXZlZENvbnN0cnVjdG9yQ29udGV4dChjb2RlQmxvY2stPmlzRGVyaXZlZENvbnN0cnVjdG9yQ29u
dGV4dCgpKQorICAgICwgbV9kZXJpdmVkQ29udGV4dFR5cGUoY29kZUJsb2NrLT5kZXJpdmVkQ29u
dGV4dFR5cGUoKSkKIHsKICAgICBmb3IgKGF1dG8mIGNvbnN0YW50UmVnaXN0ZXIgOiBtX2xpbmtU
aW1lQ29uc3RhbnRSZWdpc3RlcnMpCiAgICAgICAgIGNvbnN0YW50UmVnaXN0ZXIgPSBudWxscHRy
OwpAQCAtNTcwLDcgKzU3Myw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRv
cihWTSYgdm0sIE1vZHVsZVByb2dyYW1Ob2RlKiBtb2R1bGVQcm9ncmFtTm9kCiAgICAgLCBtX2Nv
ZGVUeXBlKE1vZHVsZUNvZGUpCiAgICAgLCBtX3ZtKCZ2bSkKICAgICAsIG1fdXNlc05vblN0cmlj
dEV2YWwoZmFsc2UpCi0gICAgLCBtX2lzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dChmYWxzZSkK
KyAgICAsIG1fZGVyaXZlZENvbnRleHRUeXBlKERlcml2ZWRDb250ZXh0VHlwZTo6Tm9uZSkKIHsK
ICAgICBBU1NFUlRfVU5VU0VEKHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCAhcGFyZW50U2NvcGVU
RFpWYXJpYWJsZXMtPnNpemUoKSk7CiAKQEAgLTgyMiw2ICs4MjUsMTEgQEAgdm9pZCBCeXRlY29k
ZUdlbmVyYXRvcjo6aW5pdGlhbGl6ZUFycm93RnVuY3Rpb25Db250ZXh0U2NvcGVJZk5lZWRlZChT
eW1ib2xUYWJsZSoKICAgICAgICAgICAgICAgICBvZmZzZXQgPSBzeW1ib2xUYWJsZS0+dGFrZU5l
eHRTY29wZU9mZnNldCgpOwogICAgICAgICAgICAgICAgIHN5bWJvbFRhYmxlLT5zZXQocHJvcGVy
dHlOYW1lcygpLm5ld1RhcmdldExvY2FsUHJpdmF0ZU5hbWUuaW1wbCgpLCBTeW1ib2xUYWJsZUVu
dHJ5KFZhck9mZnNldChvZmZzZXQpKSk7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAg
ICAgICAgICAgIGlmIChtX2NvZGVCbG9jay0+aXNDbGFzc0NvbnRleHQoKSkgeworICAgICAgICAg
ICAgICAgIG9mZnNldCA9IHN5bWJvbFRhYmxlLT50YWtlTmV4dFNjb3BlT2Zmc2V0KCk7CisgICAg
ICAgICAgICAgICAgc3ltYm9sVGFibGUtPnNldChwcm9wZXJ0eU5hbWVzKCkuaG9tZU9iamVjdFBy
aXZhdGVOYW1lLmltcGwoKSwgU3ltYm9sVGFibGVFbnRyeShWYXJPZmZzZXQob2Zmc2V0KSkpOwor
ICAgICAgICAgICAgfQogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuOwpAQCAtODQzLDYgKzg1
MSwxMiBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjppbml0aWFsaXplQXJyb3dGdW5jdGlvbkNv
bnRleHRTY29wZUlmTmVlZGVkKFN5bWJvbFRhYmxlKgogICAgICAgICBwcm90b09iamVjdC5pdGVy
YXRvci0+dmFsdWUuc2V0SXNDYXB0dXJlZCgpOwogICAgICAgICBwcm90b09iamVjdC5pdGVyYXRv
ci0+dmFsdWUuc2V0SXNDb25zdCgpOwogICAgIH0KKyAgICAKKyAgICBpZiAobV9jb2RlQmxvY2st
PmlzQ2xhc3NDb250ZXh0KCkpIHsKKyAgICAgICAgYXV0byBob21lT2JqZWN0ID0gZW52aXJvbm1l
bnQuYWRkKHByb3BlcnR5TmFtZXMoKS5ob21lT2JqZWN0UHJpdmF0ZU5hbWUpOworICAgICAgICBo
b21lT2JqZWN0Lml0ZXJhdG9yLT52YWx1ZS5zZXRJc0NhcHR1cmVkKCk7CisgICAgICAgIGhvbWVP
YmplY3QuaXRlcmF0b3ItPnZhbHVlLnNldElzQ29uc3QoKTsKKyAgICB9CiAKICAgICBwdXNoTGV4
aWNhbFNjb3BlSW50ZXJuYWwoZW52aXJvbm1lbnQsIHRydWUsIG51bGxwdHIsIFREWlJlcXVpcmVt
ZW50OjpVbmRlclREWiwgU2NvcGVUeXBlOjpMZXRDb25zdFNjb3BlLCBTY29wZVJlZ2lzdGVyVHlw
ZTo6QmxvY2spOwogICAgIApAQCAtMjk5NSwyMyArMzAwOSwzMSBAQCB2b2lkIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0VXBkYXRlVmFyaWFibGVzSW5BcnJvd0Z1bmN0aW9uQ29udGV4dFNjb3BlKCkK
ICAgICAKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRUaGlzVG9BcnJvd0Z1bmN0aW9u
Q29udGV4dFNjb3BlKCkKIHsKLSAgICBBU1NFUlQoaXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0
KCkgfHwgbV9hcnJvd0Z1bmN0aW9uQ29udGV4dExleGljYWxFbnZpcm9ubWVudFJlZ2lzdGVyICE9
IG51bGxwdHIpOworICAgIEFTU0VSVChkZXJpdmVkQ29udGV4dFR5cGUoKSA9PSBEZXJpdmVkQ29u
dGV4dFR5cGU6OkRlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQgfHwgbV9hcnJvd0Z1bmN0aW9uQ29u
dGV4dExleGljYWxFbnZpcm9ubWVudFJlZ2lzdGVyICE9IG51bGxwdHIpOwogCiAgICAgVmFyaWFi
bGUgdGhpc1ZhciA9IHZhcmlhYmxlKHByb3BlcnR5TmFtZXMoKS50aGlzSWRlbnRpZmllciwgZmFs
c2UpOwogICAgIAotICAgIGVtaXRQdXRUb1Njb3BlKGlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4
dCgpID8gZW1pdFJlc29sdmVTY29wZShudWxscHRyLCB0aGlzVmFyKSA6IG1fYXJyb3dGdW5jdGlv
bkNvbnRleHRMZXhpY2FsRW52aXJvbm1lbnRSZWdpc3RlciwgdGhpc1ZhciwgdGhpc1JlZ2lzdGVy
KCksIERvTm90VGhyb3dJZk5vdEZvdW5kLCBOb3RJbml0aWFsaXphdGlvbik7CisgICAgZW1pdFB1
dFRvU2NvcGUoZGVyaXZlZENvbnRleHRUeXBlKCkgPT0gRGVyaXZlZENvbnRleHRUeXBlOjpEZXJp
dmVkQ29uc3RydWN0b3JDb250ZXh0ID8gZW1pdFJlc29sdmVTY29wZShudWxscHRyLCB0aGlzVmFy
KSA6IG1fYXJyb3dGdW5jdGlvbkNvbnRleHRMZXhpY2FsRW52aXJvbm1lbnRSZWdpc3RlciwgdGhp
c1ZhciwgdGhpc1JlZ2lzdGVyKCksIERvTm90VGhyb3dJZk5vdEZvdW5kLCBOb3RJbml0aWFsaXph
dGlvbik7CiB9CiAKLXZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRVcGRhdGVTdXBlckluU2Nv
cGVJZk5lZWRlZCgpCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0VXBkYXRlVW5kZXJzY29y
ZVByb3RvSW5TY29wZUlmTmVlZGVkKCkKIHsKICAgICBpZiAoaXNDb25zdHJ1Y3RvcigpICYmIGNv
bnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCkgewogICAgICAgICBB
U1NFUlQobV9hcnJvd0Z1bmN0aW9uQ29udGV4dExleGljYWxFbnZpcm9ubWVudFJlZ2lzdGVyICE9
IG51bGxwdHIpOwogICAgICAgICAKICAgICAgICAgUmVnaXN0ZXJJRCogcHJvdG9SZWdpc3Rlcklk
ID0gZW1pdEdldEJ5SWQobmV3VGVtcG9yYXJ5KCksICZtX2NhbGxlZVJlZ2lzdGVyLCBwcm9wZXJ0
eU5hbWVzKCkudW5kZXJzY29yZVByb3RvKTsKLSAgICAgICAgVmFyaWFibGUgcHJvdG9WYXIgPSB2
YXJpYWJsZShwcm9wZXJ0eU5hbWVzKCkudW5kZXJzY29yZVByb3RvLCBmYWxzZSk7CisgICAgICAg
IFZhcmlhYmxlIHByb3RvVmFyID0gdmFyaWFibGUocHJvcGVydHlOYW1lcygpLnVuZGVyc2NvcmVQ
cm90byk7CiAgICAgICAgIGVtaXRQdXRUb1Njb3BlKG1fYXJyb3dGdW5jdGlvbkNvbnRleHRMZXhp
Y2FsRW52aXJvbm1lbnRSZWdpc3RlciwgcHJvdG9WYXIsIHByb3RvUmVnaXN0ZXJJZCwgRG9Ob3RU
aHJvd0lmTm90Rm91bmQsIE5vdEluaXRpYWxpemF0aW9uKTsKICAgICB9CiB9CisgICAgCit2b2lk
IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0VXBkYXRlU3VwZXJQcm9wZXJ0eUluU2NvcGVJZk5lZWRl
ZCgpCit7CisgICAgQVNTRVJUKG1fYXJyb3dGdW5jdGlvbkNvbnRleHRMZXhpY2FsRW52aXJvbm1l
bnRSZWdpc3RlciAhPSBudWxscHRyKTsKKyAgICBSZWdpc3RlcklEKiBob21lUmVnaXN0ZXJJZCA9
IGVtaXRHZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCAmbV9jYWxsZWVSZWdpc3RlciwgcHJvcGVydHlO
YW1lcygpLmhvbWVPYmplY3RQcml2YXRlTmFtZSk7CisgICAgVmFyaWFibGUgaG9tZVZhciA9IHZh
cmlhYmxlKHByb3BlcnR5TmFtZXMoKS5ob21lT2JqZWN0UHJpdmF0ZU5hbWUpOworICAgIGVtaXRQ
dXRUb1Njb3BlKG1fYXJyb3dGdW5jdGlvbkNvbnRleHRMZXhpY2FsRW52aXJvbm1lbnRSZWdpc3Rl
ciwgaG9tZVZhciwgaG9tZVJlZ2lzdGVySWQsIERvTm90VGhyb3dJZk5vdEZvdW5kLCBOb3RJbml0
aWFsaXphdGlvbik7Cit9CiAKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWJ1Z0hvb2so
RGVidWdIb29rSUQgZGVidWdIb29rSUQsIHVuc2lnbmVkIGxpbmUsIHVuc2lnbmVkIGNoYXJPZmZz
ZXQsIHVuc2lnbmVkIGxpbmVTdGFydCkKIHsKQEAgLTM4ODMsNiArMzkwNSwxNCBAQCB2b2lkIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0UHJvdG9Ub0NhbGxlZSgpCiAgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IHByb3RvUmVnaXN0ZXIgPSBlbWl0R2V0RnJvbVNjb3BlKG5ld1RlbXBvcmFyeSgpLCBl
bWl0UmVzb2x2ZVNjb3BlKG51bGxwdHIsIHByb3RvVmFyKSwgcHJvdG9WYXIsIFRocm93SWZOb3RG
b3VuZCk7CiAgICAgZW1pdFB1dEJ5SWQoJm1fY2FsbGVlUmVnaXN0ZXIsIHByb3BlcnR5TmFtZXMo
KS51bmRlcnNjb3JlUHJvdG8sIHByb3RvUmVnaXN0ZXIuZ2V0KCkpOwogfQorICAgIAordm9pZCBC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dEhvbWVPYmplY3RUb0NhbGxlZSgpCit7CisgICAgVmFy
aWFibGUgaG9tZU9ialZhciA9IHZhcmlhYmxlKHByb3BlcnR5TmFtZXMoKS5ob21lT2JqZWN0UHJp
dmF0ZU5hbWUpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBob21lT2JqZVJlZ2lzdGVyID0gZW1p
dEdldEZyb21TY29wZShuZXdUZW1wb3JhcnkoKSwgZW1pdFJlc29sdmVTY29wZShudWxscHRyLCBo
b21lT2JqVmFyKSwgaG9tZU9ialZhciwgVGhyb3dJZk5vdEZvdW5kKTsKKyAgICBlbWl0VERaQ2hl
Y2soaG9tZU9iamVSZWdpc3Rlci5nZXQoKSk7CisgICAgZW1pdFB1dEJ5SWQoJm1fY2FsbGVlUmVn
aXN0ZXIsIHByb3BlcnR5TmFtZXMoKS5ob21lT2JqZWN0UHJpdmF0ZU5hbWUsIGhvbWVPYmplUmVn
aXN0ZXIuZ2V0KCkpOworfQogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdExv
YWRBcnJvd0Z1bmN0aW9uTGV4aWNhbEVudmlyb25tZW50KCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRleCBj
MzVlMzk3NWJjZDZiNmI5NDYwY2ExNWQwMWVjM2RlZjEwZTUwYTkyLi44ZmU0YzU5NmY4N2U0NjMy
MjY0M2VkYTZiMDliYzVlN2Q4YTdmZTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBAIC0yNzksNyArMjc5LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGNvbnN0IENvbW1vbklkZW50aWZpZXJzJiBwcm9w
ZXJ0eU5hbWVzKCkgY29uc3QgeyByZXR1cm4gKm1fdm0tPnByb3BlcnR5TmFtZXM7IH0KIAogICAg
ICAgICBib29sIGlzQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+aXND
b25zdHJ1Y3RvcigpOyB9Ci0gICAgICAgIGJvb2wgaXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0
KCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPmlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4
dCgpOyB9CisgICAgICAgIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUoKSBj
b25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+ZGVyaXZlZENvbnRleHRUeXBlKCk7IH0KICAgICAg
ICAgYm9vbCB1c2VzQXJyb3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc2NvcGVOb2RlLT51
c2VzQXJyb3dGdW5jdGlvbigpOyB9CiAgICAgICAgIGJvb2wgdXNlc0V2YWwoKSBjb25zdCB7IHJl
dHVybiBtX3Njb3BlTm9kZS0+dXNlc0V2YWwoKTsgfQogICAgICAgICBib29sIHVzZXNUaGlzKCkg
Y29uc3QgeyByZXR1cm4gbV9zY29wZU5vZGUtPnVzZXNUaGlzKCk7IH0KQEAgLTQ5MCw2ICs0OTAs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRM
b2FkQXJyb3dGdW5jdGlvbkxleGljYWxFbnZpcm9ubWVudCgpOwogICAgICAgICB2b2lkIGVtaXRQ
dXRQcm90b1RvQ2FsbGVlKCk7CisgICAgICAgIHZvaWQgZW1pdFB1dEhvbWVPYmplY3RUb0NhbGxl
ZSgpOwogICAgICAgICB2b2lkIGVtaXRHZXRUaGlzRnJvbUFycm93RnVuY3Rpb25MZXhpY2FsRW52
aXJvbm1lbnQoKTsKICAgICAgICAgdm9pZCBlbWl0R2V0TmV3VGFyZ2V0RnJvbUFycm93RnVuY3Rp
b25MZXhpY2FsRW52aXJvbm1lbnQoKTsKIApAQCAtNjM1LDcgKzYzNiw4IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICB2b2lkIGVtaXRQb3BXaXRoU2NvcGUoKTsKICAgICAgICAgdm9pZCBlbWl0
UHV0VGhpc1RvQXJyb3dGdW5jdGlvbkNvbnRleHRTY29wZSgpOwogICAgICAgICB2b2lkIGVtaXRV
cGRhdGVWYXJpYWJsZXNJbkFycm93RnVuY3Rpb25Db250ZXh0U2NvcGUoKTsKLSAgICAgICAgdm9p
ZCBlbWl0VXBkYXRlU3VwZXJJblNjb3BlSWZOZWVkZWQoKTsKKyAgICAgICAgdm9pZCBlbWl0VXBk
YXRlVW5kZXJzY29yZVByb3RvSW5TY29wZUlmTmVlZGVkKCk7CisgICAgICAgIHZvaWQgZW1pdFVw
ZGF0ZVN1cGVyUHJvcGVydHlJblNjb3BlSWZOZWVkZWQoKTsKIAogICAgICAgICB2b2lkIGVtaXRE
ZWJ1Z0hvb2soRGVidWdIb29rSUQsIHVuc2lnbmVkIGxpbmUsIHVuc2lnbmVkIGNoYXJPZmZzZXQs
IHVuc2lnbmVkIGxpbmVTdGFydCk7CiAKQEAgLTc2Miw3ICs3NjQsMTMgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIAogICAgICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogbWFrZUZ1
bmN0aW9uKEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBtZXRhZGF0YSkKICAgICAgICAgewotICAgICAg
ICAgICAgYm9vbCBuZXdpc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQgPSBjb25zdHJ1Y3Rvcktp
bmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQgfHwgKG1faXNEZXJpdmVkQ29uc3RydWN0
b3JDb250ZXh0ICYmIG1ldGFkYXRhLT5pc0Fycm93RnVuY3Rpb24oKSk7CisgICAgICAgICAgICBi
b29sIG5ld2lzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCA9IGNvbnN0cnVjdG9yS2luZCgpID09
IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCB8fCAoZGVyaXZlZENvbnRleHRUeXBlKCkgPT0gRGVy
aXZlZENvbnRleHRUeXBlOjpEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0ICYmIG1ldGFkYXRhLT5p
c0Fycm93RnVuY3Rpb24oKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIERlcml2ZWRDb250
ZXh0VHlwZSB0eXBlOworICAgICAgICAgICAgaWYgKG5ld2lzRGVyaXZlZENvbnN0cnVjdG9yQ29u
dGV4dCkKKyAgICAgICAgICAgICAgICB0eXBlID0gRGVyaXZlZENvbnRleHRUeXBlOjpEZXJpdmVk
Q29uc3RydWN0b3JDb250ZXh0OworICAgICAgICAgICAgZWxzZSAgCisgICAgICAgICAgICAgICAg
dHlwZSA9IG1fY29kZUJsb2NrLT5pc0NsYXNzQ29udGV4dCgpID8gRGVyaXZlZENvbnRleHRUeXBl
OjpEZXJpdmVkTWV0aG9kQ29udGV4dCA6IERlcml2ZWRDb250ZXh0VHlwZTo6Tm9uZTsKIAogICAg
ICAgICAgICAgVmFyaWFibGVFbnZpcm9ubWVudCB2YXJpYWJsZXNVbmRlclREWjsKICAgICAgICAg
ICAgIGdldFZhcmlhYmxlc1VuZGVyVERaKHZhcmlhYmxlc1VuZGVyVERaKTsKQEAgLTc3Miw3ICs3
ODAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIGlmIChwYXJzZU1vZGUgPT0gU291
cmNlUGFyc2VNb2RlOjpHZXR0ZXJNb2RlIHx8IHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6
OlNldHRlck1vZGUgfHwgcGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlv
bk1vZGUgfHwgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6Ok1ldGhvZE1vZGUgJiYgbWV0
YWRhdGEtPmNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6Tm9uZSkpCiAgICAg
ICAgICAgICAgICAgY29uc3RydWN0QWJpbGl0eSA9IENvbnN0cnVjdEFiaWxpdHk6OkNhbm5vdENv
bnN0cnVjdDsKIAotICAgICAgICAgICAgcmV0dXJuIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
OjpjcmVhdGUobV92bSwgbV9zY29wZU5vZGUtPnNvdXJjZSgpLCBtZXRhZGF0YSwgaXNCdWlsdGlu
RnVuY3Rpb24oKSA/IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uIDogVW5saW5rZWROb3JtYWxGdW5j
dGlvbiwgY29uc3RydWN0QWJpbGl0eSwgdmFyaWFibGVzVW5kZXJURFosIG5ld2lzRGVyaXZlZENv
bnN0cnVjdG9yQ29udGV4dCk7CisgICAgICAgICAgICByZXR1cm4gVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGU6OmNyZWF0ZShtX3ZtLCBtX3Njb3BlTm9kZS0+c291cmNlKCksIG1ldGFkYXRhLCBp
c0J1aWx0aW5GdW5jdGlvbigpID8gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24gOiBVbmxpbmtlZE5v
cm1hbEZ1bmN0aW9uLCBjb25zdHJ1Y3RBYmlsaXR5LCB2YXJpYWJsZXNVbmRlclREWiwgdHlwZSk7
CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIGdldFZhcmlhYmxlc1VuZGVyVERaKFZhcmlhYmxl
RW52aXJvbm1lbnQmKTsKQEAgLTg3OSw3ICs4ODcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgYm9vbCBtX2lzQnVpbHRpbkZ1bmN0aW9uIHsgZmFsc2UgfTsKICAgICAgICAgYm9vbCBtX3Vz
ZXNOb25TdHJpY3RFdmFsIHsgZmFsc2UgfTsKICAgICAgICAgYm9vbCBtX2luVGFpbFBvc2l0aW9u
IHsgZmFsc2UgfTsKLSAgICAgICAgYm9vbCBtX2lzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCB7
IGZhbHNlIH07CisgICAgICAgIERlcml2ZWRDb250ZXh0VHlwZSBtX2Rlcml2ZWRDb250ZXh0VHlw
ZSB7IERlcml2ZWRDb250ZXh0VHlwZTo6Tm9uZSB9OwogICAgIH07CiAKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCAz
YWQ2YzRmN2M1YWJmOTJlZmZhNTI3NzIwNTYxZDYxN2NlMzVhZmVhLi5iM2MzMmEwMTE5ZDIxNWJk
NThjNDcyMWY4ZTgwNzBlZDIxMzFhZmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC0xNDgsNyArMTQ4LDggQEAgUmVn
aXN0ZXJJRCogVGhpc05vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLCBSZWdpc3RlcklEKiBkc3QKICAgICBpZiAoZ2VuZXJhdG9yLmNvbnN0cnVjdG9yS2luZCgp
ID09IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCAmJiAoZ2VuZXJhdG9yLnVzZXNBcnJvd0Z1bmN0
aW9uKCkgfHwgZ2VuZXJhdG9yLnVzZXNFdmFsKCkpKQogICAgICAgICBnZW5lcmF0b3IuZW1pdEdl
dFRoaXNGcm9tQXJyb3dGdW5jdGlvbkxleGljYWxFbnZpcm9ubWVudCgpOwogICAgIAotICAgIGlm
IChtX3Nob3VsZEFsd2F5c0VtaXRURFpDaGVjayB8fCBnZW5lcmF0b3IuY29uc3RydWN0b3JLaW5k
KCkgPT0gQ29uc3RydWN0b3JLaW5kOjpEZXJpdmVkIHx8IGdlbmVyYXRvci5pc0Rlcml2ZWRDb25z
dHJ1Y3RvckNvbnRleHQoKSkKKyAgICBpZiAobV9zaG91bGRBbHdheXNFbWl0VERaQ2hlY2sgfHwg
Z2VuZXJhdG9yLmNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZAor
ICAgICAgICB8fCBnZW5lcmF0b3IuZGVyaXZlZENvbnRleHRUeXBlKCkgPT0gRGVyaXZlZENvbnRl
eHRUeXBlOjpEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KQogICAgICAgICBnZW5lcmF0b3IuZW1p
dFREWkNoZWNrKGdlbmVyYXRvci50aGlzUmVnaXN0ZXIoKSk7CiAKICAgICBpZiAoZHN0ID09IGdl
bmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpCkBAIC03MzgsMTUgKzczOSwxNiBAQCBSZWdpc3RlcklE
KiBGdW5jdGlvbkNhbGxWYWx1ZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYg
Z2VuZXJhdG9yLCBSZQogICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXR1cm5WYWx1ZSA9IGdlbmVy
YXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgZnVuYy5nZXQoKSk7CiAgICAgQ2FsbEFyZ3VtZW50
cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKICAgICBpZiAobV9leHByLT5pc1N1
cGVyTm9kZSgpKSB7Ci0gICAgICAgIEFTU0VSVChnZW5lcmF0b3IuaXNDb25zdHJ1Y3RvcigpIHx8
IGdlbmVyYXRvci5pc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoKSk7Ci0gICAgICAgIEFTU0VS
VChnZW5lcmF0b3IuY29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpEZXJpdmVk
IHx8IGdlbmVyYXRvci5pc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoKSk7CisgICAgICAgIGJv
b2wgaXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0ID0gZ2VuZXJhdG9yLmRlcml2ZWRDb250ZXh0
VHlwZSgpID09IERlcml2ZWRDb250ZXh0VHlwZTo6RGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dDsK
KyAgICAgICAgQVNTRVJUKGdlbmVyYXRvci5pc0NvbnN0cnVjdG9yKCkgfHwgaXNEZXJpdmVkQ29u
c3RydWN0b3JDb250ZXh0KTsKKyAgICAgICAgQVNTRVJUKGdlbmVyYXRvci5jb25zdHJ1Y3Rvcktp
bmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQgfHwgaXNEZXJpdmVkQ29uc3RydWN0b3JD
b250ZXh0KTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKGNhbGxBcmd1bWVudHMudGhpc1Jl
Z2lzdGVyKCksIGdlbmVyYXRvci5uZXdUYXJnZXQoKSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIHJl
dCA9IGdlbmVyYXRvci5lbWl0Q29uc3RydWN0KHJldHVyblZhbHVlLmdldCgpLCBmdW5jLmdldCgp
LCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQo
KSwgZGl2b3RFbmQoKSk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0b3IudGhp
c1JlZ2lzdGVyKCksIHJldCk7CiAgICAgICAgIAogICAgICAgICBib29sIGlzQ29uc3RydWN0b3JL
aW5kRGVyaXZlZCA9IGdlbmVyYXRvci5jb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3Rvcktp
bmQ6OkRlcml2ZWQ7CiAgICAgICAgIGJvb2wgdXNlc0Fycm93RnVuY3Rpb25PckV2YWwgID0gZ2Vu
ZXJhdG9yLnVzZXNBcnJvd0Z1bmN0aW9uKCkgfHwgZ2VuZXJhdG9yLnVzZXNFdmFsKCk7Ci0gICAg
ICAgIGlmIChnZW5lcmF0b3IuaXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KCkgfHwgKGlzQ29u
c3RydWN0b3JLaW5kRGVyaXZlZCAmJiB1c2VzQXJyb3dGdW5jdGlvbk9yRXZhbCkpCisgICAgICAg
IGlmIChpc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQgfHwgKGlzQ29uc3RydWN0b3JLaW5kRGVy
aXZlZCAmJiB1c2VzQXJyb3dGdW5jdGlvbk9yRXZhbCkpCiAgICAgICAgICAgICBnZW5lcmF0b3Iu
ZW1pdFB1dFRoaXNUb0Fycm93RnVuY3Rpb25Db250ZXh0U2NvcGUoKTsKICAgICAgICAgCiAgICAg
ICAgIHJldHVybiByZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdn
ZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2Vy
L0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcAppbmRleCBkNTQwNTUwZjVlMTRkNjAyYTk5Mjg4MGViYTBl
NmQxOWJlNjgzNzA0Li4xMWZiNjk1OGRkYzY1Y2QzOWRhZDI2ZGRmYjdkMDA3YmY5MGE0OGJmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJh
bWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxG
cmFtZS5jcHAKQEAgLTE5Niw3ICsxOTYsNyBAQCBKU1ZhbHVlIERlYnVnZ2VyQ2FsbEZyYW1lOjpl
dmFsdWF0ZShjb25zdCBTdHJpbmcmIHNjcmlwdCwgTmFrZWRQdHI8RXhjZXB0aW9uPiYgZQogICAg
IFZhcmlhYmxlRW52aXJvbm1lbnQgdmFyaWFibGVzVW5kZXJURFo7CiAgICAgSlNTY29wZTo6Y29s
bGVjdFZhcmlhYmxlc1VuZGVyVERaKHNjb3BlKCktPmpzU2NvcGUoKSwgdmFyaWFibGVzVW5kZXJU
RFopOwogCi0gICAgRXZhbEV4ZWN1dGFibGUqIGV2YWwgPSBFdmFsRXhlY3V0YWJsZTo6Y3JlYXRl
KGNhbGxGcmFtZSwgbWFrZVNvdXJjZShzY3JpcHQpLCBjb2RlQmxvY2suaXNTdHJpY3RNb2RlKCks
IHRoaXNURFpNb2RlLCBjb2RlQmxvY2sudW5saW5rZWRDb2RlQmxvY2soKS0+aXNEZXJpdmVkQ29u
c3RydWN0b3JDb250ZXh0KCksIGNvZGVCbG9jay51bmxpbmtlZENvZGVCbG9jaygpLT5pc0Fycm93
RnVuY3Rpb24oKSwgJnZhcmlhYmxlc1VuZGVyVERaKTsKKyAgICBFdmFsRXhlY3V0YWJsZSogZXZh
bCA9IEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoY2FsbEZyYW1lLCBtYWtlU291cmNlKHNjcmlwdCks
IGNvZGVCbG9jay5pc1N0cmljdE1vZGUoKSwgdGhpc1REWk1vZGUsIGNvZGVCbG9jay51bmxpbmtl
ZENvZGVCbG9jaygpLT5kZXJpdmVkQ29udGV4dFR5cGUoKSwgY29kZUJsb2NrLnVubGlua2VkQ29k
ZUJsb2NrKCktPmlzQXJyb3dGdW5jdGlvbigpLCAmdmFyaWFibGVzVW5kZXJURFopOwogICAgIGlm
ICh2bS5leGNlcHRpb24oKSkgewogICAgICAgICBleGNlcHRpb24gPSB2bS5leGNlcHRpb24oKTsK
ICAgICAgICAgdm0uY2xlYXJFeGNlcHRpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCmluZGV4IDUxZGQ0OTY1M2JlMWFkYmY0MjZm
MWIwNGUxZDYwNmIzYzRmN2JlOWMuLmYxOThmODVjNjJmODRjMGIwZjkyODI1YjQ0ODU4NWEyNDE3
YzUzNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRl
cnByZXRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVy
cHJldGVyLmNwcApAQCAtMTcyLDcgKzE3Miw3IEBAIEpTVmFsdWUgZXZhbChDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKICAgICAgICAgQVNTRVJUKCFjYWxsRnJhbWUtPnZtKCkuZXhjZXB0aW9uKCkpOwog
CiAgICAgICAgIFRoaXNURFpNb2RlIHRoaXNURFpNb2RlID0gY2FsbGVyQ29kZUJsb2NrLT51bmxp
bmtlZENvZGVCbG9jaygpLT5jb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRl
cml2ZWQgPyBUaGlzVERaTW9kZTo6QWx3YXlzQ2hlY2sgOiBUaGlzVERaTW9kZTo6Q2hlY2tJZk5l
ZWRlZDsKLSAgICAgICAgZXZhbCA9IGNhbGxlckNvZGVCbG9jay0+ZXZhbENvZGVDYWNoZSgpLmdl
dFNsb3coY2FsbEZyYW1lLCBjYWxsZXJDb2RlQmxvY2ssIGNhbGxlckNvZGVCbG9jay0+aXNTdHJp
Y3RNb2RlKCksIHRoaXNURFpNb2RlLCBjYWxsZXJDb2RlQmxvY2stPnVubGlua2VkQ29kZUJsb2Nr
KCktPmlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCgpLCBjYWxsZXJDb2RlQmxvY2stPnVubGlu
a2VkQ29kZUJsb2NrKCktPmlzQXJyb3dGdW5jdGlvbigpLCBwcm9ncmFtU291cmNlLCBjYWxsZXJT
Y29wZUNoYWluKTsKKyAgICAgICAgZXZhbCA9IGNhbGxlckNvZGVCbG9jay0+ZXZhbENvZGVDYWNo
ZSgpLmdldFNsb3coY2FsbEZyYW1lLCBjYWxsZXJDb2RlQmxvY2ssIGNhbGxlckNvZGVCbG9jay0+
aXNTdHJpY3RNb2RlKCksIHRoaXNURFpNb2RlLCBjYWxsZXJDb2RlQmxvY2stPnVubGlua2VkQ29k
ZUJsb2NrKCktPmRlcml2ZWRDb250ZXh0VHlwZSgpLCBjYWxsZXJDb2RlQmxvY2stPnVubGlua2Vk
Q29kZUJsb2NrKCktPmlzQXJyb3dGdW5jdGlvbigpLCBwcm9ncmFtU291cmNlLCBjYWxsZXJTY29w
ZUNoYWluKTsKICAgICAgICAgaWYgKCFldmFsKQogICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZp
bmVkKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29kZUNhY2hlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5j
cHAKaW5kZXggOGZjOWRkMDg3MWYyNDE0Yjg4OGVhZTg3ZTkyZDEwYzAzZTUwYTI5OS4uNGM4MGJm
YTFmNzI2Mjk2YzZkMGYxNGRjZjc0YmRlMDMwODBiMzVhYyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCkBAIC0xODcsNyArMTg3LDcgQEAgVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUqIENvZGVDYWNoZTo6Z2V0RnVuY3Rpb25FeGVjdXRhYmxlRnJvbUds
b2JhbENvZGUoVk0mIHYKICAgICBtZXRhZGF0YS0+c2V0RW5kUG9zaXRpb24ocG9zaXRpb25CZWZv
cmVMYXN0TmV3bGluZSk7CiAgICAgLy8gVGhlIEZ1bmN0aW9uIGNvbnN0cnVjdG9yIG9ubHkgaGFz
IGFjY2VzcyB0byBnbG9iYWwgdmFyaWFibGVzLCBzbyBubyB2YXJpYWJsZXMgd2lsbCBiZSB1bmRl
ciBURFouCiAgICAgVmFyaWFibGVFbnZpcm9ubWVudCBlbXB0eVREWlZhcmlhYmxlczsKLSAgICBV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSgmdm0sIHNvdXJjZSwgbWV0YWRhdGEsIFVubGlua2Vk
Tm9ybWFsRnVuY3Rpb24sIENvbnN0cnVjdEFiaWxpdHk6OkNhbkNvbnN0cnVjdCwgZW1wdHlURFpW
YXJpYWJsZXMsIGZhbHNlKTsKKyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rp
b25FeGVjdXRhYmxlID0gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSgmdm0sIHNv
dXJjZSwgbWV0YWRhdGEsIFVubGlua2VkTm9ybWFsRnVuY3Rpb24sIENvbnN0cnVjdEFiaWxpdHk6
OkNhbkNvbnN0cnVjdCwgZW1wdHlURFpWYXJpYWJsZXMsIERlcml2ZWRDb250ZXh0VHlwZTo6Tm9u
ZSk7CiAgICAgZnVuY3Rpb25FeGVjdXRhYmxlLT5tX25hbWVWYWx1ZS5zZXQodm0sIGZ1bmN0aW9u
RXhlY3V0YWJsZSwganNTdHJpbmcoJnZtLCBuYW1lLnN0cmluZygpKSk7CiAKICAgICBtX3NvdXJj
ZUNvZGUuYWRkQ2FjaGUoa2V5LCBTb3VyY2VDb2RlVmFsdWUodm0sIGZ1bmN0aW9uRXhlY3V0YWJs
ZSwgbV9zb3VyY2VDb2RlLmFnZSgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0V4ZWN1dGFibGUuY3BwCmluZGV4IDljNTVlZTQ3NTk2MTBiODZkYmQ2Yjg4YTVmNzUxZDM1NWQ5
ZTUzZGYuLjEwYTE2NjVmNWY0NDkwNTU0YjVhN2Q0OWIxNWMwZmMxYjVkODMzYTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCkBAIC0xMzEsMTQgKzEz
MSwxNCBAQCBJbnRyaW5zaWMgTmF0aXZlRXhlY3V0YWJsZTo6aW50cmluc2ljKCkgY29uc3QKIAog
Y29uc3QgQ2xhc3NJbmZvIFNjcmlwdEV4ZWN1dGFibGU6OnNfaW5mbyA9IHsgIlNjcmlwdEV4ZWN1
dGFibGUiLCAmRXhlY3V0YWJsZUJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShT
Y3JpcHRFeGVjdXRhYmxlKSB9OwogCi1TY3JpcHRFeGVjdXRhYmxlOjpTY3JpcHRFeGVjdXRhYmxl
KFN0cnVjdHVyZSogc3RydWN0dXJlLCBWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwg
Ym9vbCBpc0luU3RyaWN0Q29udGV4dCwgYm9vbCBpc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQs
IGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCkKK1NjcmlwdEV4ZWN1dGFibGU6OlNjcmlwdEV4
ZWN1dGFibGUoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYg
c291cmNlLCBib29sIGlzSW5TdHJpY3RDb250ZXh0LCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZl
ZENvbnRleHRUeXBlLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQpCiAgICAgOiBFeGVjdXRh
YmxlQmFzZSh2bSwgc3RydWN0dXJlLCBOVU1fUEFSQU1FVEVSU19OT1RfQ09NUElMRUQpCiAgICAg
LCBtX3NvdXJjZShzb3VyY2UpCiAgICAgLCBtX2ZlYXR1cmVzKGlzSW5TdHJpY3RDb250ZXh0ID8g
U3RyaWN0TW9kZUZlYXR1cmUgOiAwKQogICAgICwgbV9oYXNDYXB0dXJlZFZhcmlhYmxlcyhmYWxz
ZSkKICAgICAsIG1fbmV2ZXJJbmxpbmUoZmFsc2UpCiAgICAgLCBtX2RpZFRyeVRvRW50ZXJJbkxv
b3AoZmFsc2UpCi0gICAgLCBtX2lzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dChpc0Rlcml2ZWRD
b25zdHJ1Y3RvckNvbnRleHQpCisgICAgLCBtX2Rlcml2ZWRDb250ZXh0VHlwZShkZXJpdmVkQ29u
dGV4dFR5cGUpCiAgICAgLCBtX2lzQXJyb3dGdW5jdGlvbkNvbnRleHQoaXNBcnJvd0Z1bmN0aW9u
Q29udGV4dCkKICAgICAsIG1fb3ZlcnJpZGVMaW5lTnVtYmVyKC0xKQogICAgICwgbV9maXJzdExp
bmUoLTEpCkBAIC00MTQsNyArNDE0LDcgQEAgSlNPYmplY3QqIFNjcmlwdEV4ZWN1dGFibGU6OnBy
ZXBhcmVGb3JFeGVjdXRpb25JbXBsKAogCiBjb25zdCBDbGFzc0luZm8gRXZhbEV4ZWN1dGFibGU6
OnNfaW5mbyA9IHsgIkV2YWxFeGVjdXRhYmxlIiwgJlNjcmlwdEV4ZWN1dGFibGU6OnNfaW5mbywg
MCwgQ1JFQVRFX01FVEhPRF9UQUJMRShFdmFsRXhlY3V0YWJsZSkgfTsKIAotRXZhbEV4ZWN1dGFi
bGUqIEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VD
b2RlJiBzb3VyY2UsIGJvb2wgaXNJblN0cmljdENvbnRleHQsIFRoaXNURFpNb2RlIHRoaXNURFpN
b2RlLCBib29sIGlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCwgYm9vbCBpc0Fycm93RnVuY3Rp
b25Db250ZXh0LCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiB2YXJpYWJsZXNVbmRlclREWikK
K0V2YWxFeGVjdXRhYmxlKiBFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgU291cmNlQ29kZSYgc291cmNlLCBib29sIGlzSW5TdHJpY3RDb250ZXh0LCBUaGlzVERa
TW9kZSB0aGlzVERaTW9kZSwgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSwg
Ym9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiB2
YXJpYWJsZXNVbmRlclREWikKIHsKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
ZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOwogICAgIGlmICghZ2xvYmFsT2JqZWN0LT5ldmFs
RW5hYmxlZCgpKSB7CkBAIC00MjIsNyArNDIyLDcgQEAgRXZhbEV4ZWN1dGFibGUqIEV2YWxFeGVj
dXRhYmxlOjpjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UK
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgRXZhbEV4ZWN1dGFibGUqIGV4ZWN1dGFi
bGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxFdmFsRXhlY3V0YWJsZT4oKmV4ZWMtPmhl
YXAoKSkpIEV2YWxFeGVjdXRhYmxlKGV4ZWMsIHNvdXJjZSwgaXNJblN0cmljdENvbnRleHQsIGlz
RGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCk7CisgICAg
RXZhbEV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxF
dmFsRXhlY3V0YWJsZT4oKmV4ZWMtPmhlYXAoKSkpIEV2YWxFeGVjdXRhYmxlKGV4ZWMsIHNvdXJj
ZSwgaXNJblN0cmljdENvbnRleHQsIGRlcml2ZWRDb250ZXh0VHlwZSwgaXNBcnJvd0Z1bmN0aW9u
Q29udGV4dCk7CiAgICAgZXhlY3V0YWJsZS0+ZmluaXNoQ3JlYXRpb24oZXhlYy0+dm0oKSk7CiAK
ICAgICBVbmxpbmtlZEV2YWxDb2RlQmxvY2sqIHVubGlua2VkRXZhbENvZGUgPSBnbG9iYWxPYmpl
Y3QtPmNyZWF0ZUV2YWxDb2RlQmxvY2soZXhlYywgZXhlY3V0YWJsZSwgdGhpc1REWk1vZGUsIGlz
QXJyb3dGdW5jdGlvbkNvbnRleHQsIHZhcmlhYmxlc1VuZGVyVERaKTsKQEAgLTQzNCw4ICs0MzQs
OCBAQCBFdmFsRXhlY3V0YWJsZSogRXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZQogICAgIHJldHVybiBleGVjdXRhYmxlOwogfQog
Ci1FdmFsRXhlY3V0YWJsZTo6RXZhbEV4ZWN1dGFibGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBT
b3VyY2VDb2RlJiBzb3VyY2UsIGJvb2wgaW5TdHJpY3RDb250ZXh0LCBib29sIGlzRGVyaXZlZENv
bnN0cnVjdG9yQ29udGV4dCwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0KQotICAgIDogU2Ny
aXB0RXhlY3V0YWJsZShleGVjLT52bSgpLmV2YWxFeGVjdXRhYmxlU3RydWN0dXJlLmdldCgpLCBl
eGVjLT52bSgpLCBzb3VyY2UsIGluU3RyaWN0Q29udGV4dCwgaXNEZXJpdmVkQ29uc3RydWN0b3JD
b250ZXh0LCBpc0Fycm93RnVuY3Rpb25Db250ZXh0KQorRXZhbEV4ZWN1dGFibGU6OkV2YWxFeGVj
dXRhYmxlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBib29sIGlu
U3RyaWN0Q29udGV4dCwgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgYm9v
bCBpc0Fycm93RnVuY3Rpb25Db250ZXh0KQorICAgIDogU2NyaXB0RXhlY3V0YWJsZShleGVjLT52
bSgpLmV2YWxFeGVjdXRhYmxlU3RydWN0dXJlLmdldCgpLCBleGVjLT52bSgpLCBzb3VyY2UsIGlu
U3RyaWN0Q29udGV4dCwgZGVyaXZlZENvbnRleHRUeXBlLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0
KQogewogfQogCkBAIC00NDcsNyArNDQ3LDcgQEAgdm9pZCBFdmFsRXhlY3V0YWJsZTo6ZGVzdHJv
eShKU0NlbGwqIGNlbGwpCiBjb25zdCBDbGFzc0luZm8gUHJvZ3JhbUV4ZWN1dGFibGU6OnNfaW5m
byA9IHsgIlByb2dyYW1FeGVjdXRhYmxlIiwgJlNjcmlwdEV4ZWN1dGFibGU6OnNfaW5mbywgMCwg
Q1JFQVRFX01FVEhPRF9UQUJMRShQcm9ncmFtRXhlY3V0YWJsZSkgfTsKIAogUHJvZ3JhbUV4ZWN1
dGFibGU6OlByb2dyYW1FeGVjdXRhYmxlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29k
ZSYgc291cmNlKQotICAgIDogU2NyaXB0RXhlY3V0YWJsZShleGVjLT52bSgpLnByb2dyYW1FeGVj
dXRhYmxlU3RydWN0dXJlLmdldCgpLCBleGVjLT52bSgpLCBzb3VyY2UsIGZhbHNlLCBmYWxzZSwg
ZmFsc2UpCisgICAgOiBTY3JpcHRFeGVjdXRhYmxlKGV4ZWMtPnZtKCkucHJvZ3JhbUV4ZWN1dGFi
bGVTdHJ1Y3R1cmUuZ2V0KCksIGV4ZWMtPnZtKCksIHNvdXJjZSwgZmFsc2UsIERlcml2ZWRDb250
ZXh0VHlwZTo6Tm9uZSwgZmFsc2UpCiB7CiAgICAgbV90eXBlUHJvZmlsaW5nU3RhcnRPZmZzZXQg
PSAwOwogICAgIG1fdHlwZVByb2ZpbGluZ0VuZE9mZnNldCA9IHNvdXJjZS5sZW5ndGgoKSAtIDE7
CkBAIC00NjMsNyArNDYzLDcgQEAgdm9pZCBQcm9ncmFtRXhlY3V0YWJsZTo6ZGVzdHJveShKU0Nl
bGwqIGNlbGwpCiBjb25zdCBDbGFzc0luZm8gTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU6OnNfaW5m
byA9IHsgIk1vZHVsZVByb2dyYW1FeGVjdXRhYmxlIiwgJlNjcmlwdEV4ZWN1dGFibGU6OnNfaW5m
bywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSkgfTsKIAog
TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU6Ok1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cmNlKQotICAgIDogU2NyaXB0RXhlY3V0YWJs
ZShleGVjLT52bSgpLm1vZHVsZVByb2dyYW1FeGVjdXRhYmxlU3RydWN0dXJlLmdldCgpLCBleGVj
LT52bSgpLCBzb3VyY2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCisgICAgOiBTY3JpcHRFeGVjdXRh
YmxlKGV4ZWMtPnZtKCkubW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIGV4
ZWMtPnZtKCksIHNvdXJjZSwgZmFsc2UsIERlcml2ZWRDb250ZXh0VHlwZTo6Tm9uZSwgZmFsc2Up
CiB7CiAgICAgbV90eXBlUHJvZmlsaW5nU3RhcnRPZmZzZXQgPSAwOwogICAgIG1fdHlwZVByb2Zp
bGluZ0VuZE9mZnNldCA9IHNvdXJjZS5sZW5ndGgoKSAtIDE7CkBAIC00OTUsNyArNDk1LDcgQEAg
dm9pZCBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCiBjb25z
dCBDbGFzc0luZm8gRnVuY3Rpb25FeGVjdXRhYmxlOjpzX2luZm8gPSB7ICJGdW5jdGlvbkV4ZWN1
dGFibGUiLCAmU2NyaXB0RXhlY3V0YWJsZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxF
KEZ1bmN0aW9uRXhlY3V0YWJsZSkgfTsKIAogRnVuY3Rpb25FeGVjdXRhYmxlOjpGdW5jdGlvbkV4
ZWN1dGFibGUoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlKiB1bmxpbmtlZEV4ZWN1dGFibGUsIHVuc2lnbmVkIGZpcnN0TGluZSwgdW5z
aWduZWQgbGFzdExpbmUsIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4p
Ci0gICAgOiBTY3JpcHRFeGVjdXRhYmxlKHZtLmZ1bmN0aW9uRXhlY3V0YWJsZVN0cnVjdHVyZS5n
ZXQoKSwgdm0sIHNvdXJjZSwgdW5saW5rZWRFeGVjdXRhYmxlLT5pc0luU3RyaWN0Q29udGV4dCgp
LCB1bmxpbmtlZEV4ZWN1dGFibGUtPmlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCgpLCBmYWxz
ZSkKKyAgICA6IFNjcmlwdEV4ZWN1dGFibGUodm0uZnVuY3Rpb25FeGVjdXRhYmxlU3RydWN0dXJl
LmdldCgpLCB2bSwgc291cmNlLCB1bmxpbmtlZEV4ZWN1dGFibGUtPmlzSW5TdHJpY3RDb250ZXh0
KCksIHVubGlua2VkRXhlY3V0YWJsZS0+ZGVyaXZlZENvbnRleHRUeXBlKCksIGZhbHNlKQogICAg
ICwgbV91bmxpbmtlZEV4ZWN1dGFibGUodm0sIHRoaXMsIHVubGlua2VkRXhlY3V0YWJsZSkKIHsK
ICAgICBSRUxFQVNFX0FTU0VSVCghc291cmNlLmlzTnVsbCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAppbmRleCAzNTQ3MzE5ZWYzZmEwNTY4ZTVjZWI4ZWIw
NGE4NTkyZTA2OWIyOTliLi5iNWRkMTM1YmFkMGQ4OTFhMzc3N2E1NWE3OTJkODI4MjA3NTFkNzU1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCkBAIC0zNDYs
NyArMzQ2LDcgQEAgcHVibGljOgogICAgIGJvb2wgbmVlZHNBY3RpdmF0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9oYXNDYXB0dXJlZFZhcmlhYmxlcyB8fCBtX2ZlYXR1cmVzICYgKEV2YWxGZWF0dXJl
IHwgV2l0aEZlYXR1cmUpOyB9CiAgICAgYm9vbCBpc1N0cmljdE1vZGUoKSBjb25zdCB7IHJldHVy
biBtX2ZlYXR1cmVzICYgU3RyaWN0TW9kZUZlYXR1cmU7IH0KICAgICBib29sIGlzQXJyb3dGdW5j
dGlvbkNvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2lzQXJyb3dGdW5jdGlvbkNvbnRleHQ7IH0K
LSAgICBib29sIGlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0OyB9CisgICAgRGVyaXZlZENvbnRleHRUeXBlIGRl
cml2ZWRDb250ZXh0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVyaXZlZENvbnRleHRUeXBlOyB9
CiAgICAgRUNNQU1vZGUgZWNtYU1vZGUoKSBjb25zdCB7IHJldHVybiBpc1N0cmljdE1vZGUoKSA/
IFN0cmljdE1vZGUgOiBOb3RTdHJpY3RNb2RlOyB9CiAgICAgICAgIAogICAgIHZvaWQgc2V0TmV2
ZXJJbmxpbmUoYm9vbCB2YWx1ZSkgeyBtX25ldmVySW5saW5lID0gdmFsdWU7IH0KQEAgLTM5NSw3
ICszOTUsNyBAQCBwcml2YXRlOgogICAgIEpTT2JqZWN0KiBwcmVwYXJlRm9yRXhlY3V0aW9uSW1w
bChFeGVjU3RhdGUqLCBKU0Z1bmN0aW9uKiwgSlNTY29wZSosIENvZGVTcGVjaWFsaXphdGlvbktp
bmQpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgU2NyaXB0RXhlY3V0YWJsZShTdHJ1Y3R1cmUqLCBWTSYs
IGNvbnN0IFNvdXJjZUNvZGUmLCBib29sLCBib29sLCBib29sKTsKKyAgICBTY3JpcHRFeGVjdXRh
YmxlKFN0cnVjdHVyZSosIFZNJiwgY29uc3QgU291cmNlQ29kZSYsIGJvb2wsIERlcml2ZWRDb250
ZXh0VHlwZSwgYm9vbCk7CiAKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiB2bSkKICAgICB7
CkBAIC00MTQsNyArNDE0LDcgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgbV9uZXZlcklubGluZTsK
ICAgICBib29sIG1fbmV2ZXJPcHRpbWl6ZSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2RpZFRyeVRv
RW50ZXJJbkxvb3A7Ci0gICAgYm9vbCBtX2lzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dDsKKyAg
ICBEZXJpdmVkQ29udGV4dFR5cGUgbV9kZXJpdmVkQ29udGV4dFR5cGU7CiAgICAgYm9vbCBtX2lz
QXJyb3dGdW5jdGlvbkNvbnRleHQ7CiAgICAgaW50IG1fb3ZlcnJpZGVMaW5lTnVtYmVyOwogICAg
IGludCBtX2ZpcnN0TGluZTsKQEAgLTQzOCw3ICs0MzgsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiBtX2V2YWxDb2RlQmxvY2suZ2V0KCk7CiAgICAgfQogCi0gICAgc3RhdGljIEV2YWxFeGVj
dXRhYmxlKiBjcmVhdGUoRXhlY1N0YXRlKiwgY29uc3QgU291cmNlQ29kZSYsIGJvb2wgaXNJblN0
cmljdENvbnRleHQsIFRoaXNURFpNb2RlLCBib29sIGlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4
dCwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50
Kik7CisgICAgc3RhdGljIEV2YWxFeGVjdXRhYmxlKiBjcmVhdGUoRXhlY1N0YXRlKiwgY29uc3Qg
U291cmNlQ29kZSYsIGJvb2wgaXNJblN0cmljdENvbnRleHQsIFRoaXNURFpNb2RlLCBEZXJpdmVk
Q29udGV4dFR5cGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgY29uc3QgVmFyaWFibGVF
bnZpcm9ubWVudCopOwogCiAgICAgUGFzc1JlZlB0cjxKSVRDb2RlPiBnZW5lcmF0ZWRKSVRDb2Rl
KCkKICAgICB7CkBAIC00NTIsNyArNDUyLDcgQEAgcHVibGljOgogICAgICAgICAKICAgICBERUNM
QVJFX0lORk87CiAKLSAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsg
cmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0
cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIGZhbHNlLCBp
c0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoKSwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCgpKTsg
fQorICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhl
Y3V0YWJsZUluZm8obmVlZHNBY3RpdmF0aW9uKCksIHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgp
LCBmYWxzZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgZmFsc2UsIGRlcml2ZWRDb250
ZXh0VHlwZSgpLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0KCkpOyB9CiAKICAgICB1bnNpZ25lZCBu
dW1WYXJpYWJsZXMoKSB7IHJldHVybiBtX3VubGlua2VkRXZhbENvZGVCbG9jay0+bnVtVmFyaWFi
bGVzKCk7IH0KICAgICB1bnNpZ25lZCBudW1iZXJPZkZ1bmN0aW9uRGVjbHMoKSB7IHJldHVybiBt
X3VubGlua2VkRXZhbENvZGVCbG9jay0+bnVtYmVyT2ZGdW5jdGlvbkRlY2xzKCk7IH0KQEAgLTQ2
MCw3ICs0NjAsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBFeGVjdXRh
YmxlQmFzZTsKICAgICBmcmllbmQgY2xhc3MgU2NyaXB0RXhlY3V0YWJsZTsKLSAgICBFdmFsRXhl
Y3V0YWJsZShFeGVjU3RhdGUqLCBjb25zdCBTb3VyY2VDb2RlJiwgYm9vbCwgYm9vbCwgYm9vbCk7
CisgICAgRXZhbEV4ZWN1dGFibGUoRXhlY1N0YXRlKiwgY29uc3QgU291cmNlQ29kZSYsIGJvb2ws
IERlcml2ZWRDb250ZXh0VHlwZSwgYm9vbCk7CiAKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxk
cmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAKQEAgLTUwNSw3ICs1MDUsNyBAQCBwdWJsaWM6
CiAgICAgICAgIAogICAgIERFQ0xBUkVfSU5GTzsKIAotICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1
dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNBY3RpdmF0aW9u
KCksIHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UsIENvbnN0cnVjdG9y
S2luZDo6Tm9uZSwgZmFsc2UsIGlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCgpLCBmYWxzZSk7
IH0KKyAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4
ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUo
KSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIGZhbHNlLCBkZXJpdmVkQ29u
dGV4dFR5cGUoKSwgZmFsc2UpOyB9CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEV4ZWN1
dGFibGVCYXNlOwpAQCAtNTQ2LDcgKzU0Niw3IEBAIHB1YmxpYzoKIAogICAgIERFQ0xBUkVfSU5G
TzsKIAotICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4g
RXhlY3V0YWJsZUluZm8obmVlZHNBY3RpdmF0aW9uKCksIHVzZXNFdmFsKCksIGlzU3RyaWN0TW9k
ZSgpLCBmYWxzZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgZmFsc2UsIGlzRGVyaXZl
ZENvbnN0cnVjdG9yQ29udGV4dCgpLCBmYWxzZSk7IH0KKyAgICBFeGVjdXRhYmxlSW5mbyBleGVj
dXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlv
bigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3Rv
cktpbmQ6Ok5vbmUsIGZhbHNlLCBkZXJpdmVkQ29udGV4dFR5cGUoKSwgZmFsc2UpOyB9CiAKICAg
ICBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIHVubGlua2VkTW9kdWxlUHJvZ3JhbUNv
ZGVCbG9jaygpIHsgcmV0dXJuIG1fdW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrLmdldCgp
OyB9CiAKQEAgLTY1Niw3ICs2NTYsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0J1aWx0aW5GdW5j
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5pc0J1aWx0aW5GdW5j
dGlvbigpOyB9CiAgICAgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5KCkgY29uc3Qg
eyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPmNvbnN0cnVjdEFiaWxpdHkoKTsgfQogICAg
IGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFi
bGUtPmlzQXJyb3dGdW5jdGlvbigpOyB9Ci0gICAgYm9vbCBpc0Rlcml2ZWRDb25zdHJ1Y3RvckNv
bnRleHQoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+aXNEZXJpdmVkQ29u
c3RydWN0b3JDb250ZXh0KCk7IH0KKyAgICBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRl
eHRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPmRlcml2ZWRDb250
ZXh0VHlwZSgpOyB9CiAgICAgYm9vbCBpc0NsYXNzQ29uc3RydWN0b3JGdW5jdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5pc0NsYXNzQ29uc3RydWN0b3JGdW5jdGlv
bigpOyB9CiAgICAgY29uc3QgSWRlbnRpZmllciYgbmFtZSgpIHsgcmV0dXJuIG1fdW5saW5rZWRF
eGVjdXRhYmxlLT5uYW1lKCk7IH0KICAgICBjb25zdCBJZGVudGlmaWVyJiBpbmZlcnJlZE5hbWUo
KSB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+aW5mZXJyZWROYW1lKCk7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rp
b25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVu
Y3Rpb25zLmNwcAppbmRleCBjZTFlM2JiNzhmMGQ1MzlhMjY1ZTgyZWJmZDc1MDE1MDExOGU3MGMz
Li5kNmIyNzM1YjhkZGI4YWI1MzFlNDEyYTZjYjVkZjIzOTg0MTJkOTczIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlv
bnMuY3BwCkBAIC01ODEsNyArNTgxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBn
bG9iYWxGdW5jRXZhbChFeGVjU3RhdGUqIGV4ZWMpCiAKICAgICBKU0dsb2JhbE9iamVjdCogY2Fs
bGVlR2xvYmFsT2JqZWN0ID0gZXhlYy0+Y2FsbGVlKCktPmdsb2JhbE9iamVjdCgpOwogICAgIFZh
cmlhYmxlRW52aXJvbm1lbnQgZW1wdHlURFpWYXJpYWJsZXM7IC8vIEluZGlyZWN0IGV2YWwgZG9l
cyBub3QgaGF2ZSBhY2Nlc3MgdG8gdGhlIGxleGljYWwgc2NvcGUuCi0gICAgRXZhbEV4ZWN1dGFi
bGUqIGV2YWwgPSBFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKGV4ZWMsIG1ha2VTb3VyY2UocyksIGZh
bHNlLCBUaGlzVERaTW9kZTo6Q2hlY2tJZk5lZWRlZCwgZmFsc2UsIGZhbHNlLCAmZW1wdHlURFpW
YXJpYWJsZXMpOworICAgIEV2YWxFeGVjdXRhYmxlKiBldmFsID0gRXZhbEV4ZWN1dGFibGU6OmNy
ZWF0ZShleGVjLCBtYWtlU291cmNlKHMpLCBmYWxzZSwgVGhpc1REWk1vZGU6OkNoZWNrSWZOZWVk
ZWQsIERlcml2ZWRDb250ZXh0VHlwZTo6Tm9uZSwgZmFsc2UsICZlbXB0eVREWlZhcmlhYmxlcyk7
CiAgICAgaWYgKCFldmFsKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2Lnlh
bWwgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2LnlhbWwKaW5kZXggOTlhOWYyODM4
NmI5OWYxODRlZGJhN2ZkZjZlMzg0Y2VhZjYzOGRjNS4uYjc5ZDllMTc1YzYwYTEzNmM3NjczZmJh
Y2M2OTNkY2Q3MWE5YTk4ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L2VzNi55YW1sCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYueWFtbApAQCAt
NSwxMCArNSwxMCBAQAogIyBhcmUgbWV0OgogIwogIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisj
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCiAjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAogIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4gCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgogIwogIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQogIyBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECkBAIC03MzUsNyArNzM1LDcgQEAKIC0gcGF0aDogZXM2L2Fycm93X2Z1bmN0aW9u
c19sZXhpY2FsX25ldy50YXJnZXRfYmluZGluZy5qcwogICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAt
IHBhdGg6IGVzNi9hcnJvd19mdW5jdGlvbnNfbGV4aWNhbF9zdXBlcl9iaW5kaW5nLmpzCi0gIGNt
ZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2Fycm93
X2Z1bmN0aW9uc19ub19wcm90b3R5cGVfcHJvcGVydHkuanMKICAgY21kOiBydW5FUzYgOm5vcm1h
bAogLSBwYXRoOiBlczYvYmxvY2stbGV2ZWxfZnVuY3Rpb25fZGVjbGFyYXRpb24uanMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1s
ZXhpY2FsLWJpbmQtc3VwZXJwcm9wZXJ0eS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtc3VwZXJwcm9wZXJ0eS5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5kODE4OGY5YmU0ZTFhMDJkZjdhZjg5YzZmZGJkMThlMTQ2ZGI0YWQ4Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0
aW9uLWxleGljYWwtYmluZC1zdXBlcnByb3BlcnR5LmpzCkBAIC0wLDAgKzEsOTQgQEAKK3ZhciB0
ZXN0Q2FzZSA9IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7CisgIGlmIChh
Y3R1YWwgIT09IGV4cGVjdGVkKSB7CisgICAgdGhyb3cgbWVzc2FnZSArICIuIEV4cGVjdGVkICci
ICsgZXhwZWN0ZWQgKyAiJywgYnV0IHdhcyAnIiArIGFjdHVhbCArICInIjsKKyAgfQorfTsKKwor
dmFyIHRlc3RWYWx1ZSAgPSAndGVzdC12YWx1ZSc7CisKK3ZhciBBID0gY2xhc3MgQSB7CisgICAg
Z2V0VmFsdWUgKCkgeworICAgICAgcmV0dXJuIHRlc3RWYWx1ZTsKKyAgICB9Cit9OworCit2YXIg
QiA9IGNsYXNzIEIgZXh0ZW5kcyBBIHsKKyAgZ2V0UGFyZW50VmFsdWUoKSB7CisgICAgdmFyIGFy
cm93ICA9ICgpID0+IHN1cGVyLmdldFZhbHVlKCk7CisgICAgdmFyIHIgPSAgYXJyb3coKTsKKyAg
ICByZXR1cm4gcjsKKyAgfQorfTsKKwordmFyIEMgPSBjbGFzcyBDIHsKKyAgY29uc3RydWN0b3Io
KSB7CisgICAgdGhpcy52YWx1ZSA9IHRlc3RWYWx1ZTsKKyAgfQorICBzdGF0aWMgZ2V0U3RhdGlj
VmFsdWUoKSB7CisgICAgcmV0dXJuIHRlc3RWYWx1ZTsKKyAgfQorfTsKKwordmFyIEQgPSBjbGFz
cyBEIGV4dGVuZHMgQyB7CisgIHN0YXRpYyBnZXRQYXJlbnRTdGF0aWNWYWx1ZSgpIHsKKyAgICB2
YXIgYXJyb3cgID0gKCkgPT4gc3VwZXIuZ2V0U3RhdGljVmFsdWUoKTsKKyAgICByZXR1cm4gYXJy
b3coKTsKKyAgfQorfTsKKwordmFyIEUgPSBjbGFzcyBFIGV4dGVuZHMgQSB7CisgICAgIGNvbnN0
cnVjdG9yKCkgeworICAgICAgICAgc3VwZXIoKTsKKyAgICAgfQorICAgICBnZXQgcHJvcCgpIHsK
KyAgICAgICAgIHZhciBhcnJvdyA9ICgpID0+IHN1cGVyLmdldFZhbHVlKCkrICctJyArIHRoaXMu
dmFsdWU7CisgICAgICAgICByZXR1cm4gYXJyb3coKTsKKyAgICAgfQorICAgICBzZXQgcHJvcCh2
YWx1ZSkgeworICAgICAgICAgdmFyIGFycm93ID0gKG5ld1ZhbCkgPT4gdGhpcy52YWx1ZSA9IG5l
d1ZhbDsKKyAgICAgICAgIGFycm93KHZhbHVlKTsKKyAgICAgfQorICAgICBzZXRJbml0VmFsdWUo
KSB7CisgICAgICAgdGhpcy52YWx1ZSA9IHRlc3RWYWx1ZTsKKyAgICAgfQorIH0KKwordmFyIGIg
PSBuZXcgQigpOworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7CisgICB0ZXN0Q2Fz
ZShiLmdldFBhcmVudFZhbHVlKCksIHRlc3RWYWx1ZSwgaSk7Cit9CisKK2ZvciAodmFyIGkgPSAw
OyBpIDwgMTAwMDA7IGkrKykgeworICAgdGVzdENhc2UoRC5nZXRQYXJlbnRTdGF0aWNWYWx1ZSgp
LCB0ZXN0VmFsdWUsIGkpOworfQorCit2YXIgZSA9IG5ldyBFKCk7Citmb3IgKHZhciBpID0gMDsg
aSA8IDEwMDAwOyBpKyspIHsKKyAgIGUuc2V0SW5pdFZhbHVlKCk7CisgICB0ZXN0Q2FzZShlLnBy
b3AsIHRlc3RWYWx1ZSsnLScrdGVzdFZhbHVlLCBpKTsKKyAgIGUucHJvcCA9ICduZXctdGVzdC12
YWx1ZSc7CisgICB0ZXN0Q2FzZShlLnByb3AsIHRlc3RWYWx1ZSsnLW5ldy10ZXN0LXZhbHVlJywg
aSk7Cit9CisKKy8vIEZpeG1lOiBQcm9ibGVtIHRoYXQgYmV0d2VlbiAxNTAgYW5kIDY1MDAgdHVy
bnMgaXQgcmFpc2UgIlNlZ21lbnRhdGlvbiBmYXVsdDogMTEgaW5zdGVhZCBvZiBzeW50YXggZXJy
b3IiCisvKgordmFyIFggID0gY2xhc3MgWCBleHRlbmRzIEEgeworICBuZXdNZXRob2QoKSB7Cisg
ICAgdmFyIGFycm93ICA9ICgpID0+IGV2YWwoJ3N1cGVyLmdldFZhbHVlKCknKTsKKyAgICB2YXIg
ciA9IGFycm93KCk7CisgICAgcmV0dXJuIHI7CisgIH0KK307CisKK3ZhciB4ID0gbmV3IFgoKTsK
K25vSW5saW5lKGMubmV3TWV0aG9kKTsKK2ZvciAodmFyIGk9MDsgaSA8IDEwMDAwOyBpKyspIHsK
KyAgdHJ5IHsKKyAgICAgdmFyIHJlc3VsdCA9IHgubmV3TWV0aG9kKCk7CisgICAgIHRlc3RDYXNl
KHJlc3VsdCwgdGVzdFZhbHVlLCBpKTsKKyAgIH0gY2F0Y2goZSkgeworICAgICBpZiAoIShlIGlu
c3RhbmNlb2YgU3ludGF4RXJyb3IpKQorICAgICAgICB0aHJvdyBlOworICAgfQorfQorKi8KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpp
bmRleCA4N2M5OGViNzBhODk5ZmQ5NmFjMTNjYTYwNzQyMTMyMWUzNGM4NWM5Li5lODI1OTJiN2M4
MDExYzEzYmNiNGYwYWNmOGUwOGFlMGM0ZTY1YjdkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIw
MTUtMTAtMjggIFNrYWNoa292IE9sZWtzYW5kciAgPGdza2FjaGtvdkBnbWFpbC5jb20+CisKKyAg
ICAgICAgW0VTNl0gQXJyb3cgZnVuY3Rpb24gc3ludGF4LiBBcnJvdyBmdW5jdGlvbiBzcGVjaWZp
YyBmZWF0dXJlcy4gTGV4aWNhbCBiaW5kICJzdXBlciIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0OTYxNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICoganMvYXJyb3dmdW5jdGlvbi1zdXBlcnByb3BlcnR5
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvYXJyb3dmdW5jdGlvbi1zdXBlcnBy
b3BlcnR5Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0
aW9uLXN1cGVycHJvcGVydHkuanM6IEFkZGVkLgorCiAyMDE1LTEwLTI2ICBTa2FjaGtvdiBPbGVr
c2FuZHIgIDxnc2thY2hrb3ZAZ21haWwuY29tPgogCiAgICAgICAgIFtFUzZdIEFycm93IGZ1bmN0
aW9uIGNyZWF0ZWQgYmVmb3JlIHN1cGVyKCkgY2F1c2VzIFREWiwgc2hvdWxkIGl0PwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1zdXBlcnByb3BlcnR5LWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tc3VwZXJwcm9wZXJ0eS1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uY2Q5NTIzMDA1ODhkMDMzZDY5MjM1NjMwMWIxNTRkNDQ2YzM4M2Jl
MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tc3VwZXJw
cm9wZXJ0eS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNSBAQAorVGVzdHMgZm9yIEVTNiBhcnJv
dyBmdW5jdGlvbiwgYWNjZXNzIHRvIHRoZSBzdXBlciBwcm9wZXJ0eSBpbiBhcnJvdyBmdW5jdGlv
bgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2Vz
LCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyAobmV3IEIoKSkuZ2V0VmFs
dWVQYXJlbnRGdW5jdGlvbigpIGlzIGV4cGVjdGVkVmFsdWUKK1BBU1MgKG5ldyBDKGZhbHNlKSku
dmFsdWUgaXMgZXhwZWN0ZWRWYWx1ZQorUEFTUyAobmV3IEModHJ1ZSkpLnZhbHVlIGlzIGV4cGVj
dGVkVmFsdWUKK1BBU1MgRS5nZXRQYXJlbnRTdGF0aWNWYWx1ZSgpIGlzIGV4cGVjdGVkVmFsdWUK
K1BBU1MgZi5wcm9wIGlzIGV4cGVjdGVkVmFsdWUgKyAiLSIgKyBleHBlY3RlZFZhbHVlCitQQVNT
IGYucHJvcCBpcyBleHBlY3RlZFZhbHVlICsgIi0iICsgIm5ldy12YWx1ZSIKK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXN1cGVycHJvcGVydHkuaHRtbCBiL0xheW91dFRlc3Rz
L2pzL2Fycm93ZnVuY3Rpb24tc3VwZXJwcm9wZXJ0eS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAyYjUwNWY3
OTk0NWI3Y2EzOWM5NmNjNzE5YWNkYzk1ZmY1YmEwZmQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXN1cGVycHJvcGVydHkuaHRtbApAQCAtMCwwICsxLDEw
IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRt
bD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvYXJyb3dm
dW5jdGlvbi1zdXBlcnByb3BlcnR5LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXN1cGVycHJv
cGVydHkuanMgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1zdXBl
cnByb3BlcnR5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVmNDMyMmRhNGNhYmNjNTc0NjA4MTg1YzFhZDc3ODZm
ZmUwZjg0MDUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMv
YXJyb3dmdW5jdGlvbi1zdXBlcnByb3BlcnR5LmpzCkBAIC0wLDAgKzEsNzggQEAKK2Rlc2NyaXB0
aW9uKCdUZXN0cyBmb3IgRVM2IGFycm93IGZ1bmN0aW9uLCBhY2Nlc3MgdG8gdGhlIHN1cGVyIHBy
b3BlcnR5IGluIGFycm93IGZ1bmN0aW9uJyk7CisKK3ZhciBleHBlY3RlZFZhbHVlICA9ICd0ZXN0
LXZhbHVlJzsKKwordmFyIEEgPSBjbGFzcyBBIHsKKyAgICBnZXRWYWx1ZSAoKSB7CisgICAgICBy
ZXR1cm4gZXhwZWN0ZWRWYWx1ZTsKKyAgICB9Cit9OworCit2YXIgQiA9IGNsYXNzIEIgZXh0ZW5k
cyBBIHsKKyAgZ2V0VmFsdWVQYXJlbnRGdW5jdGlvbigpIHsKKyAgICB2YXIgYXJyb3cgID0gKCkg
PT4gc3VwZXIuZ2V0VmFsdWUoKTsKKyAgICByZXR1cm4gYXJyb3coKTsKKyAgfQorfTsKKwordmFy
IEMgPSBjbGFzcyBDIGV4dGVuZHMgQiB7CisgICBjb25zdHJ1Y3RvcihiZWZvcmVTdXBlcikgewor
ICAgICB2YXIgdmFsdWU7CisgICAgIHZhciBhcnJvdyA9ICgpID0+IHN1cGVyLmdldFZhbHVlKCk7
CisgICAgIGlmIChiZWZvcmVTdXBlcikgeworICAgICAgICB2YWx1ZSAgPSBhcnJvdygpOworICAg
ICAgICBzdXBlcigpOworICAgICB9IGVsc2UgeworICAgICAgICBzdXBlcigpOworICAgICAgICB2
YWx1ZSAgPSBhcnJvdygpOworICAgICB9CisgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTsKKyAgIH0K
K307CisKK3ZhciBEID0gY2xhc3MgRCB7CisgIGNvbnN0cnVjdG9yKCkgeworICAgIHRoaXMudmFs
dWUgPSBleHBlY3RlZFZhbHVlOworICB9CisgIHN0YXRpYyBnZXRTdGF0aWNWYWx1ZSgpIHsKKyAg
ICByZXR1cm4gZXhwZWN0ZWRWYWx1ZTsKKyAgfQorfTsKKwordmFyIEUgPSBjbGFzcyBFIGV4dGVu
ZHMgRCB7CisgIHN0YXRpYyBnZXRQYXJlbnRTdGF0aWNWYWx1ZSgpIHsKKyAgICB2YXIgYXJyb3cg
ID0gKCkgPT4gc3VwZXIuZ2V0U3RhdGljVmFsdWUoKTsKKyAgICByZXR1cm4gYXJyb3coKTsKKyAg
fQorfTsKKwordmFyIEYgPSBjbGFzcyBGIGV4dGVuZHMgQSB7CisgICAgIGNvbnN0cnVjdG9yKCkg
eworICAgICAgIHN1cGVyKCk7CisgICAgICAgdGhpcy52YWx1ZSA9IGV4cGVjdGVkVmFsdWU7Cisg
ICAgIH0KKyAgICAgZ2V0IHByb3AoKSB7CisgICAgICAgICB2YXIgYXJyb3cgPSAoKSA9PiBzdXBl
ci5nZXRWYWx1ZSgpKyAnLScgKyB0aGlzLnZhbHVlOworICAgICAgICAgcmV0dXJuIGFycm93KCk7
CisgICAgIH0KKyAgICAgc2V0IHByb3AodmFsdWUpIHsKKyAgICAgICAgIHZhciBhcnJvdyA9IChu
ZXdWYWwpID0+IHRoaXMudmFsdWUgPSBuZXdWYWw7CisgICAgICAgICBhcnJvdyh2YWx1ZSk7Cisg
ICAgIH0KKyB9CisKK3Nob3VsZEJlKCcobmV3IEIoKSkuZ2V0VmFsdWVQYXJlbnRGdW5jdGlvbigp
JywgJ2V4cGVjdGVkVmFsdWUnKTsKKworc2hvdWxkQmUoJyhuZXcgQyhmYWxzZSkpLnZhbHVlJywg
J2V4cGVjdGVkVmFsdWUnKTsKK3Nob3VsZEJlKCcobmV3IEModHJ1ZSkpLnZhbHVlJywgJ2V4cGVj
dGVkVmFsdWUnKTsKKworc2hvdWxkQmUoJ0UuZ2V0UGFyZW50U3RhdGljVmFsdWUoKScsICdleHBl
Y3RlZFZhbHVlJyk7CisKK3ZhciBmID0gbmV3IEYoKTsKKworc2hvdWxkQmUoJ2YucHJvcCcsICdl
eHBlY3RlZFZhbHVlICsgIi0iICsgZXhwZWN0ZWRWYWx1ZScpOworCitmLnByb3AgPSAnbmV3LXZh
bHVlJzsKK3Nob3VsZEJlKCdmLnByb3AnLCAnZXhwZWN0ZWRWYWx1ZSArICItIiArICJuZXctdmFs
dWUiJyk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264803</attachid>
            <date>2015-11-04 11:37:34 -0800</date>
            <delta_ts>2015-12-10 05:51:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-149615-20151104213632.patch</filename>
            <type>text/plain</type>
            <size>55660</size>
            <attacher name="GSkachkov">gskachkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkxOTM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
ZGFkNzRjMzcyNWJmZDA2NDJkZDgwYmY4ZDUxYWQ4NmNiY2JiZGZmLi4zOTMzMjI1ZTM3MWZjM2Ni
ZjFiZWZlNDM3NjE4NDAwNGUxODE3ZDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2NiBAQAorMjAxNS0xMS0wNCAgQWxla3NhbmRyIFNrYWNoa292ICA8Z3NrYWNoa292QGdt
YWlsLmNvbT4KKworICAgICAgICBbRVM2XSBBcnJvdyBmdW5jdGlvbiBzeW50YXguIEFycm93IGZ1
bmN0aW9uIHNwZWNpZmljIGZlYXR1cmVzLiBMZXhpY2FsIGJpbmQgInN1cGVyIgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5NjE1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50ZWQgbGV4aWNh
bCBiaW5kICJzdXBlciIgZm9yIGFycm93IGZ1bmN0aW9uLiAnc3VwZXInIHByb3BlcnR5IGNhbiBi
ZSBhY2Nlc3NlZCAKKyAgICAgICAgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlvbiBpbiBjYXNl
IGlmIGFycm93IGZ1bmN0aW9uIGlzIG5lc3RlZCBpbiBtZXRob2QsIAorICAgICAgICBnZXR0ZXIg
b3Igc2V0dGVyIG9mIGNsYXNzLiBJbiBjdXJyZW50IHBhdGNoIHVzaW5nICdzdXBlcicgaW4gYXJy
b3cgZnVuY3Rpb24sIHRoYXQgZGVjbGFyZWQgb3V0IG9mIHRoZSAKKyAgICAgICAgY2xhc3MsIGxl
YWQgdG8gd3JvbmcgdHlwZSBvZiBlcnJvciwgc2hvdWxkIGJlIFN5bnRheEVycm9yIGFuZCB0aGlz
IHdpbGwgYmUgZml4ZWQgaW4gc2VwYXJldGUgcGF0Y2guCisKKyAgICAgICAgKiBidWlsdGlucy9C
dWlsdGluRXhlY3V0YWJsZXMuY3BwOgorICAgICAgICAoSlNDOjpjcmVhdGVFeGVjdXRhYmxlSW50
ZXJuYWwpOgorICAgICAgICAqIGJ5dGVjb2RlL0V2YWxDb2RlQ2FjaGUuaDoKKyAgICAgICAgKEpT
Qzo6RXZhbENvZGVDYWNoZTo6Z2V0U2xvdyk6CisgICAgICAgICogYnl0ZWNvZGUvRXhlY3V0YWJs
ZUluZm8uaDoKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUluZm86OkV4ZWN1dGFibGVJbmZvKToK
KyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUluZm86OmRlcml2ZWRDb250ZXh0VHlwZSk6CisgICAg
ICAgIChKU0M6OkV4ZWN1dGFibGVJbmZvOjppc0NsYXNzQ29udGV4dCk6CisgICAgICAgICogYnl0
ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVC
bG9jazo6VW5saW5rZWRDb2RlQmxvY2spOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrLmg6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpkZXJpdmVkQ29udGV4
dFR5cGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6aXNDbGFzc0NvbnRleHQp
OgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcDoKKyAg
ICAgICAgKEpTQzo6Z2VuZXJhdGVVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKToKKyAgICAgICAg
KEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oOgor
ICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR2VuZXJhdG9yOjppbml0aWFsaXplQXJyb3dGdW5jdGlvbkNvbnRleHRTY29wZUlm
TmVlZGVkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRQcm90b1Rv
QXJyb3dGdW5jdGlvbkNvbnRleHRTY29wZSk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpkZXJpdmVk
Q29udGV4dFR5cGUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6aXNEZXJpdmVk
Q29uc3RydWN0b3JDb250ZXh0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6Omlz
RGVyaXZlZENsYXNzQ29udGV4dCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpp
c0Fycm93RnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6bWFrZUZ1
bmN0aW9uKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAg
ICAgKEpTQzo6VGhpc05vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OmVtaXRTdXBl
ckJhc2VGb3JDYWxsZWUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNhbGxWYWx1ZU5vZGU6OmVt
aXRCeXRlY29kZSk6CisgICAgICAgICogZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwOgor
ICAgICAgICAoSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZTo6ZXZhbHVhdGUpOgorICAgICAgICAqIGlu
dGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6ZXZhbCk6CisgICAgICAg
ICogcnVudGltZS9Db2RlQ2FjaGUuY3BwOgorICAgICAgICAoSlNDOjpDb2RlQ2FjaGU6OmdldEZ1
bmN0aW9uRXhlY3V0YWJsZUZyb21HbG9iYWxDb2RlKToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1
dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpTY3JpcHRFeGVjdXRhYmxlOjpTY3JpcHRFeGVjdXRh
YmxlKToKKyAgICAgICAgKEpTQzo6RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZSk6CisgICAgICAgIChK
U0M6OkV2YWxFeGVjdXRhYmxlOjpFdmFsRXhlY3V0YWJsZSk6CisgICAgICAgIChKU0M6OlByb2dy
YW1FeGVjdXRhYmxlOjpQcm9ncmFtRXhlY3V0YWJsZSk6CisgICAgICAgIChKU0M6Ok1vZHVsZVBy
b2dyYW1FeGVjdXRhYmxlOjpNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSk6CisgICAgICAgIChKU0M6
OkZ1bmN0aW9uRXhlY3V0YWJsZTo6RnVuY3Rpb25FeGVjdXRhYmxlKToKKyAgICAgICAgKiBydW50
aW1lL0V4ZWN1dGFibGUuaDoKKyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6ZGVyaXZl
ZENvbnRleHRUeXBlKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25z
LmNwcDoKKyAgICAgICAgKEpTQzo6Z2xvYmFsRnVuY0V2YWwpOgorICAgICAgICAqIHRlc3RzL2Vz
Ni55YW1sOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmlu
ZC1zdXBlcnByb3BlcnR5LmpzOiBBZGRlZC4KKwogMjAxNS0xMS0wMiBBbGVrc2FuZHIgU2thY2hr
b3YgICA8Z3NrYWNoa292QGdtYWlsLmNvbT4KIAogICAgICAgICBbRVM2XSBBcnJvdyBmdW5jdGlv
biBjcmVhdGVkIGJlZm9yZSBzdXBlcigpIGNhdXNlcyBURFosIHNob3VsZCBpdD8KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAK
aW5kZXggYzgxZTI2YzM1ZDk3NDc2NGMxNzg1MjgxOTE5YThmOGZjMGM2ZjgwOS4uNWU1ZjZkZjc2
YjdiNzJmOTZhYjk4Yjg2OWYwZTRjOWMwZDM1MGE3NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAKQEAgLTExNSw3ICsx
MTUsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlRXhlY3V0YWJsZUludGVy
bmFsKFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgcwogICAgIH0KICAgICBtZXRhZGF0YS0+b3Zl
cnJpZGVOYW1lKG5hbWUpOwogICAgIFZhcmlhYmxlRW52aXJvbm1lbnQgZHVtbXlURFpWYXJpYWJs
ZXM7Ci0gICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9
IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUoJnZtLCBzb3VyY2UsIG1ldGFkYXRh
LCBraW5kLCBjb25zdHJ1Y3RBYmlsaXR5LCBkdW1teVREWlZhcmlhYmxlcywgZmFsc2UsIFdURjo6
bW92ZShzb3VyY2VPdmVycmlkZSkpOworICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBm
dW5jdGlvbkV4ZWN1dGFibGUgPSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKCZ2
bSwgc291cmNlLCBtZXRhZGF0YSwga2luZCwgY29uc3RydWN0QWJpbGl0eSwgZHVtbXlURFpWYXJp
YWJsZXMsIERlcml2ZWRDb250ZXh0VHlwZTo6Tm9uZSwgV1RGOjptb3ZlKHNvdXJjZU92ZXJyaWRl
KSk7CiAgICAgZnVuY3Rpb25FeGVjdXRhYmxlLT5zZXROYW1lVmFsdWUodm0sIGpzU3RyaW5nKCZ2
bSwgbmFtZS5zdHJpbmcoKSkpOwogICAgIHJldHVybiBmdW5jdGlvbkV4ZWN1dGFibGU7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXZhbENvZGVDYWNoZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V2YWxDb2RlQ2FjaGUuaAppbmRleCBl
MmQ2YTQxMzBiZmJjM2VmMmNjODkxODcxZDZmOWU2MjM1NTY3NDE1Li42ODYxMjA5MTY2NTBkMDNh
NmZkY2FiYTE4ZDI1YTkwNjA2M2NiNDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvRXZhbENvZGVDYWNoZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9FdmFsQ29kZUNhY2hlLmgKQEAgLTUxLDExICs1MSwxMSBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CiAKLSAgICAgICAgRXZhbEV4ZWN1
dGFibGUqIGdldFNsb3coRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwqIG93bmVyLCBib29sIGluU3Ry
aWN0Q29udGV4dCwgVGhpc1REWk1vZGUgdGhpc1REWk1vZGUsIGJvb2wgaXNEZXJpdmVkQ29uc3Ry
dWN0b3JDb250ZXh0LCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGNvbnN0IFN0cmluZyYg
ZXZhbFNvdXJjZSwgSlNTY29wZSogc2NvcGUpCisgICAgICAgIEV2YWxFeGVjdXRhYmxlKiBnZXRT
bG93KEV4ZWNTdGF0ZSogZXhlYywgSlNDZWxsKiBvd25lciwgYm9vbCBpblN0cmljdENvbnRleHQs
IFRoaXNURFpNb2RlIHRoaXNURFpNb2RlLCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRl
eHRUeXBlLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGNvbnN0IFN0cmluZyYgZXZhbFNv
dXJjZSwgSlNTY29wZSogc2NvcGUpCiAgICAgICAgIHsKICAgICAgICAgICAgIFZhcmlhYmxlRW52
aXJvbm1lbnQgdmFyaWFibGVzVW5kZXJURFo7CiAgICAgICAgICAgICBKU1Njb3BlOjpjb2xsZWN0
VmFyaWFibGVzVW5kZXJURFooc2NvcGUsIHZhcmlhYmxlc1VuZGVyVERaKTsKLSAgICAgICAgICAg
IEV2YWxFeGVjdXRhYmxlKiBldmFsRXhlY3V0YWJsZSA9IEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUo
ZXhlYywgbWFrZVNvdXJjZShldmFsU291cmNlKSwgaW5TdHJpY3RDb250ZXh0LCB0aGlzVERaTW9k
ZSwgaXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0LCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCAm
dmFyaWFibGVzVW5kZXJURFopOworICAgICAgICAgICAgRXZhbEV4ZWN1dGFibGUqIGV2YWxFeGVj
dXRhYmxlID0gRXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShleGVjLCBtYWtlU291cmNlKGV2YWxTb3Vy
Y2UpLCBpblN0cmljdENvbnRleHQsIHRoaXNURFpNb2RlLCBkZXJpdmVkQ29udGV4dFR5cGUsIGlz
QXJyb3dGdW5jdGlvbkNvbnRleHQsICZ2YXJpYWJsZXNVbmRlclREWik7CiAgICAgICAgICAgICBp
ZiAoIWV2YWxFeGVjdXRhYmxlKQogICAgICAgICAgICAgICAgIHJldHVybiAwOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCmluZGV4IDEzMjQ2
Y2NhNTU0MTFhMzViZDY1MDAzNTIzYzkwYTQ2NWE1NDg4YmEuLjVmNTgyZDhhZWI1ODc4ZGM1ZjUx
MTQ1NWE4ZjQxODg1YWU5OGY1YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9FeGVjdXRhYmxlSW5mby5oCkBAIC0yOSw5ICsyOSwxMSBAQAogI2luY2x1ZGUgIlBhcnNl
ck1vZGVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgeworICAgIAorZW51bSBjbGFzcyBEZXJpdmVkQ29u
dGV4dFR5cGUgeyBOb25lLCBEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0LCBEZXJpdmVkTWV0aG9k
Q29udGV4dCB9OwogCiBzdHJ1Y3QgRXhlY3V0YWJsZUluZm8gewotICAgIEV4ZWN1dGFibGVJbmZv
KGJvb2wgbmVlZHNBY3RpdmF0aW9uLCBib29sIHVzZXNFdmFsLCBib29sIGlzU3RyaWN0TW9kZSwg
Ym9vbCBpc0NvbnN0cnVjdG9yLCBib29sIGlzQnVpbHRpbkZ1bmN0aW9uLCBDb25zdHJ1Y3Rvcktp
bmQgY29uc3RydWN0b3JLaW5kLCBib29sIGlzQXJyb3dGdW5jdGlvbiwgYm9vbCBpc0Rlcml2ZWRD
b25zdHJ1Y3RvckNvbnRleHQsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCkKKyAgICBFeGVj
dXRhYmxlSW5mbyhib29sIG5lZWRzQWN0aXZhdGlvbiwgYm9vbCB1c2VzRXZhbCwgYm9vbCBpc1N0
cmljdE1vZGUsIGJvb2wgaXNDb25zdHJ1Y3RvciwgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbiwgQ29u
c3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgYm9vbCBpc0Fycm93RnVuY3Rpb24sIERlcml2
ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29u
dGV4dCwgYm9vbCBpc0NsYXNzQ29udGV4dCA9IGZhbHNlKQogICAgICAgICA6IG1fbmVlZHNBY3Rp
dmF0aW9uKG5lZWRzQWN0aXZhdGlvbikKICAgICAgICAgLCBtX3VzZXNFdmFsKHVzZXNFdmFsKQog
ICAgICAgICAsIG1faXNTdHJpY3RNb2RlKGlzU3RyaWN0TW9kZSkKQEAgLTM5LDggKzQxLDkgQEAg
c3RydWN0IEV4ZWN1dGFibGVJbmZvIHsKICAgICAgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGlz
QnVpbHRpbkZ1bmN0aW9uKQogICAgICAgICAsIG1fY29uc3RydWN0b3JLaW5kKHN0YXRpY19jYXN0
PHVuc2lnbmVkPihjb25zdHJ1Y3RvcktpbmQpKQogICAgICAgICAsIG1faXNBcnJvd0Z1bmN0aW9u
KGlzQXJyb3dGdW5jdGlvbikKLSAgICAgICAgLCBtX2lzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4
dChpc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQpCisgICAgICAgICwgbV9kZXJpdmVkQ29udGV4
dFR5cGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRlcml2ZWRDb250ZXh0VHlwZSkpCiAgICAgICAg
ICwgbV9pc0Fycm93RnVuY3Rpb25Db250ZXh0KGlzQXJyb3dGdW5jdGlvbkNvbnRleHQpCisgICAg
ICAgICwgbV9pc0NsYXNzQ29udGV4dChpc0NsYXNzQ29udGV4dCkKICAgICB7CiAgICAgICAgIEFT
U0VSVChtX2NvbnN0cnVjdG9yS2luZCA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3RydWN0
b3JLaW5kKSk7CiAgICAgfQpAQCAtNTIsOCArNTUsOSBAQCBzdHJ1Y3QgRXhlY3V0YWJsZUluZm8g
ewogICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzQnVpbHRp
bkZ1bmN0aW9uOyB9CiAgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCgpIGNvbnN0
IHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbnN0cnVjdG9yS2luZD4obV9jb25zdHJ1Y3RvcktpbmQp
OyB9CiAgICAgYm9vbCBpc0Fycm93RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzQXJyb3dG
dW5jdGlvbjsgfQotICAgIGJvb2wgaXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KCkgY29uc3Qg
eyByZXR1cm4gbV9pc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQ7IH0KKyAgICBEZXJpdmVkQ29u
dGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
RGVyaXZlZENvbnRleHRUeXBlPihtX2Rlcml2ZWRDb250ZXh0VHlwZSk7IH0KICAgICBib29sIGlz
QXJyb3dGdW5jdGlvbkNvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2lzQXJyb3dGdW5jdGlvbkNv
bnRleHQ7IH0KKyAgICBib29sIGlzQ2xhc3NDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9pc0Ns
YXNzQ29udGV4dDsgfQogCiBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fbmVlZHNBY3RpdmF0aW9u
IDogMTsKQEAgLTYzLDggKzY3LDkgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX2lzQnVpbHRp
bkZ1bmN0aW9uIDogMTsKICAgICB1bnNpZ25lZCBtX2NvbnN0cnVjdG9yS2luZCA6IDI7CiAgICAg
dW5zaWduZWQgbV9pc0Fycm93RnVuY3Rpb24gOiAxOwotICAgIHVuc2lnbmVkIG1faXNEZXJpdmVk
Q29uc3RydWN0b3JDb250ZXh0IDogMTsKKyAgICB1bnNpZ25lZCBtX2Rlcml2ZWRDb250ZXh0VHlw
ZSA6IDI7CiAgICAgdW5zaWduZWQgbV9pc0Fycm93RnVuY3Rpb25Db250ZXh0IDogMTsKKyAgICB1
bnNpZ25lZCBtX2lzQ2xhc3NDb250ZXh0IDogMTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJs
b2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9j
ay5jcHAKaW5kZXggNGRlNTk0ZGIxNGFiZmMwZWJhZDNjNmQzZTAyMDRmNjM1NDA5YjFkMC4uZjk3
OGRlN2U3ZDYzMzZmYWIzZDIwNzI2YTZlNWUxOGJhZWRmYjlhYiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCkBAIC02Niw4
ICs2Niw5IEBAIFVubGlua2VkQ29kZUJsb2NrOjpVbmxpbmtlZENvZGVCbG9jayhWTSogdm0sIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBDb2RlVHlwZSBjb2RlCiAgICAgLCBtX2lzQnVpbHRpbkZ1bmN0
aW9uKGluZm8uaXNCdWlsdGluRnVuY3Rpb24oKSkKICAgICAsIG1fY29uc3RydWN0b3JLaW5kKHN0
YXRpY19jYXN0PHVuc2lnbmVkPihpbmZvLmNvbnN0cnVjdG9yS2luZCgpKSkKICAgICAsIG1faXNB
cnJvd0Z1bmN0aW9uKGluZm8uaXNBcnJvd0Z1bmN0aW9uKCkpCi0gICAgLCBtX2lzRGVyaXZlZENv
bnN0cnVjdG9yQ29udGV4dChpbmZvLmlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCgpKQorICAg
ICwgbV9kZXJpdmVkQ29udGV4dFR5cGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluZm8uZGVyaXZl
ZENvbnRleHRUeXBlKCkpKQogICAgICwgbV9pc0Fycm93RnVuY3Rpb25Db250ZXh0KGluZm8uaXNB
cnJvd0Z1bmN0aW9uQ29udGV4dCgpKQorICAgICwgbV9pc0NsYXNzQ29udGV4dChpbmZvLmlzQ2xh
c3NDb250ZXh0KCkpCiAgICAgLCBtX2ZpcnN0TGluZSgwKQogICAgICwgbV9saW5lQ291bnQoMCkK
ICAgICAsIG1fZW5kQ29sdW1uKFVJTlRfTUFYKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAppbmRleCA4ODA3YmVlNTQ4MjQyMTU4NGU0
OGNhYWZkMGYyM2UwZmU5NTZiODk4Li4yMzRlYjY4MDg2MWRjMGEyOTJiMjM4MTViNWU5YzNmZWI0
OGYxZGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRDb2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRDb2RlQmxvY2suaApAQCAtMTE3LDggKzExNyw5IEBAIHB1YmxpYzoKICAgICBib29sIGlzU3Ry
aWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdHJpY3RNb2RlOyB9CiAgICAgYm9vbCB1c2Vz
RXZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlc0V2YWw7IH0KICAgICBib29sIGlzQXJyb3dGdW5j
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNBcnJvd0Z1bmN0aW9uOyB9Ci0gICAgYm9vbCBpc0Rl
cml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2lzRGVyaXZlZENvbnN0
cnVjdG9yQ29udGV4dDsgfQorICAgIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5
cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxEZXJpdmVkQ29udGV4dFR5cGU+KG1fZGVy
aXZlZENvbnRleHRUeXBlKTsgfQogICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCgpIGNv
bnN0IHsgcmV0dXJuIG1faXNBcnJvd0Z1bmN0aW9uQ29udGV4dDsgfQorICAgIGJvb2wgaXNDbGFz
c0NvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2lzQ2xhc3NDb250ZXh0OyB9CiAKICAgICBib29s
IG5lZWRzRnVsbFNjb3BlQ2hhaW4oKSBjb25zdCB7IHJldHVybiBtX25lZWRzRnVsbFNjb3BlQ2hh
aW47IH0KIApAQCAtMzkwLDkgKzM5MSw5IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9pc0J1
aWx0aW5GdW5jdGlvbiA6IDE7CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3RvcktpbmQgOiAyOwog
ICAgIHVuc2lnbmVkIG1faXNBcnJvd0Z1bmN0aW9uIDogMTsKLSAgICB1bnNpZ25lZCBtX2lzRGVy
aXZlZENvbnN0cnVjdG9yQ29udGV4dCA6IDE7CisgICAgdW5zaWduZWQgbV9kZXJpdmVkQ29udGV4
dFR5cGUgOiAyOwogICAgIHVuc2lnbmVkIG1faXNBcnJvd0Z1bmN0aW9uQ29udGV4dCA6IDE7Ci0K
KyAgICB1bnNpZ25lZCBtX2lzQ2xhc3NDb250ZXh0IDogMTsKICAgICB1bnNpZ25lZCBtX2ZpcnN0
TGluZTsKICAgICB1bnNpZ25lZCBtX2xpbmVDb3VudDsKICAgICB1bnNpZ25lZCBtX2VuZENvbHVt
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCmluZGV4IDJlYWIxYjU3ZWFkOWMyNTdmMTZhODc1
NGE5NTI5YTU3NjRkYTRiMzYuLmFkOWRiNDlmMDMwMTEwYTM5ZTFmNTNlNWMwYmNlMzM4Yzc2YzVh
NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcApAQCAtNjYsOCArNjYsMTAgQEAgc3RhdGlj
IFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGdlbmVyYXRlVW5saW5rZWRGdW5jdGlvbkNvZGVC
bG9jaygKICAgICBmdW5jdGlvbi0+ZmluaXNoUGFyc2luZyhleGVjdXRhYmxlLT5uYW1lKCksIGV4
ZWN1dGFibGUtPmZ1bmN0aW9uTW9kZSgpKTsKICAgICBleGVjdXRhYmxlLT5yZWNvcmRQYXJzZShm
dW5jdGlvbi0+ZmVhdHVyZXMoKSwgZnVuY3Rpb24tPmhhc0NhcHR1cmVkVmFyaWFibGVzKCkpOwog
ICAgIAotICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHJlc3VsdCA9IFVubGlua2VkRnVu
Y3Rpb25Db2RlQmxvY2s6OmNyZWF0ZSgmdm0sIEZ1bmN0aW9uQ29kZSwKLSAgICAgICAgRXhlY3V0
YWJsZUluZm8oZnVuY3Rpb24tPm5lZWRzQWN0aXZhdGlvbigpLCBmdW5jdGlvbi0+dXNlc0V2YWwo
KSwgZnVuY3Rpb24tPmlzU3RyaWN0TW9kZSgpLCBraW5kID09IENvZGVGb3JDb25zdHJ1Y3QsIGZ1
bmN0aW9uS2luZCA9PSBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiwgZXhlY3V0YWJsZS0+Y29uc3Ry
dWN0b3JLaW5kKCksIGlzQXJyb3dGdW5jdGlvbiwgZXhlY3V0YWJsZS0+aXNEZXJpdmVkQ29uc3Ry
dWN0b3JDb250ZXh0KCksIGZhbHNlKSk7CisgICAgLy8gbWV0aG9kLCBnZXR0ZXIgJiBzZXR0ZXIg
YXJlIHBhcnQgb2YgdGhlIGNsYXNzLCBzbyB0aGlzIGZ1bmN0aW9uQ29kZUJsb2NrIGlzIHBhcnQg
b2YgdGhlIGNsYXNzCisgICAgYm9vbCBpc0NsYXNzQ29udGV4dCA9IGV4ZWN1dGFibGUtPnBhcnNl
TW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6TWV0aG9kTW9kZSB8fCBleGVjdXRhYmxlLT5wYXJz
ZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdldHRlck1vZGUgfHwgZXhlY3V0YWJsZS0+cGFy
c2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpTZXR0ZXJNb2RlOworICAgIAorICAgIFVubGlu
a2VkRnVuY3Rpb25Db2RlQmxvY2sqIHJlc3VsdCA9IFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s6
OmNyZWF0ZSgmdm0sIEZ1bmN0aW9uQ29kZSwgRXhlY3V0YWJsZUluZm8oZnVuY3Rpb24tPm5lZWRz
QWN0aXZhdGlvbigpLCBmdW5jdGlvbi0+dXNlc0V2YWwoKSwgZnVuY3Rpb24tPmlzU3RyaWN0TW9k
ZSgpLCBraW5kID09IENvZGVGb3JDb25zdHJ1Y3QsIGZ1bmN0aW9uS2luZCA9PSBVbmxpbmtlZEJ1
aWx0aW5GdW5jdGlvbiwgZXhlY3V0YWJsZS0+Y29uc3RydWN0b3JLaW5kKCksIGlzQXJyb3dGdW5j
dGlvbiwgZXhlY3V0YWJsZS0+ZGVyaXZlZENvbnRleHRUeXBlKCksIGZhbHNlLCBpc0NsYXNzQ29u
dGV4dCkpOwogICAgIGF1dG8gZ2VuZXJhdG9yKHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVHZW5l
cmF0b3I+KHZtLCBmdW5jdGlvbi5nZXQoKSwgcmVzdWx0LCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVy
TW9kZSwgZXhlY3V0YWJsZS0+cGFyZW50U2NvcGVURFpWYXJpYWJsZXMoKSkpOwogICAgIGVycm9y
ID0gZ2VuZXJhdG9yLT5nZW5lcmF0ZSgpOwogICAgIGlmIChlcnJvci5pc1ZhbGlkKCkpCkBAIC03
NSw3ICs3Nyw3IEBAIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZVVu
bGlua2VkRnVuY3Rpb25Db2RlQmxvY2soCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZNKiB2bSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgUmVmUHRyPFNv
dXJjZVByb3ZpZGVyPiYmIHNvdXJjZU92ZXJyaWRlLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbm9k
ZSwgVW5saW5rZWRGdW5jdGlvbktpbmQga2luZCwgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RB
YmlsaXR5LCBWYXJpYWJsZUVudmlyb25tZW50JiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgYm9v
bCBpc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQpCitVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0qIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBSZWZQdHI8U291cmNlUHJvdmlkZXI+JiYgc291
cmNlT3ZlcnJpZGUsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBub2RlLCBVbmxpbmtlZEZ1bmN0aW9u
S2luZCBraW5kLCBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHksIFZhcmlhYmxlRW52
aXJvbm1lbnQmIHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBEZXJpdmVkQ29udGV4dFR5cGUgZGVy
aXZlZENvbnRleHRUeXBlKQogICAgIDogQmFzZSgqdm0sIHN0cnVjdHVyZSkKICAgICAsIG1fbmFt
ZShub2RlLT5pZGVudCgpKQogICAgICwgbV9pbmZlcnJlZE5hbWUobm9kZS0+aW5mZXJyZWROYW1l
KCkpCkBAIC0xMDAsNyArMTAyLDcgQEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZNKiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3QKICAgICAsIG1f
Y29uc3RydWN0b3JLaW5kKHN0YXRpY19jYXN0PHVuc2lnbmVkPihub2RlLT5jb25zdHJ1Y3Rvcktp
bmQoKSkpCiAgICAgLCBtX2Z1bmN0aW9uTW9kZShub2RlLT5mdW5jdGlvbk1vZGUoKSkKICAgICAs
IG1faXNBcnJvd0Z1bmN0aW9uKG5vZGUtPmlzQXJyb3dGdW5jdGlvbigpKQotICAgICwgbV9pc0Rl
cml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoaXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KQorICAg
ICwgbV9kZXJpdmVkQ29udGV4dFR5cGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRlcml2ZWRDb250
ZXh0VHlwZSkpCiB7CiAgICAgQVNTRVJUKG1fY29uc3RydWN0b3JLaW5kID09IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihub2RlLT5jb25zdHJ1Y3RvcktpbmQoKSkpOwogICAgIG1fcGFyZW50U2NvcGVU
RFpWYXJpYWJsZXMuc3dhcChwYXJlbnRTY29wZVREWlZhcmlhYmxlcyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZS5oCmluZGV4IGU3YjBjOWYxMGFmYzAzNDBkOWI3ZDk2NjNhMDk4ZDExOTI4YTNjMzcuLmQ5
ODk0YmNkODlkNGE4Y2YzZGMyMDQyNjhmN2QzM2VmYjViZWU1N2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZS5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiQ29kZVNwZWNpYWxpemF0aW9uS2lu
ZC5oIgogI2luY2x1ZGUgIkNvZGVUeXBlLmgiCiAjaW5jbHVkZSAiQ29uc3RydWN0QWJpbGl0eS5o
IgorI2luY2x1ZGUgIkV4ZWN1dGFibGVJbmZvLmgiCiAjaW5jbHVkZSAiRXhwcmVzc2lvblJhbmdl
SW5mby5oIgogI2luY2x1ZGUgIkhhbmRsZXJJbmZvLmgiCiAjaW5jbHVkZSAiSWRlbnRpZmllci5o
IgpAQCAtNjUsMTAgKzY2LDEwIEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwog
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVy
ZUZsYWdzIHwgU3RydWN0dXJlSXNJbW1vcnRhbDsKIAotICAgIHN0YXRpYyBVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZSogY3JlYXRlKFZNKiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBG
dW5jdGlvbk1ldGFkYXRhTm9kZSogbm9kZSwgVW5saW5rZWRGdW5jdGlvbktpbmQgdW5saW5rZWRG
dW5jdGlvbktpbmQsIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSwgVmFyaWFibGVF
bnZpcm9ubWVudCYgcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIGJvb2wgaXNEZXJpdmVkQ29uc3Ry
dWN0b3JDb250ZXh0LCBSZWZQdHI8U291cmNlUHJvdmlkZXI+JiYgc291cmNlT3ZlcnJpZGUgPSBu
dWxscHRyKQorICAgIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlKFZN
KiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbm9k
ZSwgVW5saW5rZWRGdW5jdGlvbktpbmQgdW5saW5rZWRGdW5jdGlvbktpbmQsIENvbnN0cnVjdEFi
aWxpdHkgY29uc3RydWN0QWJpbGl0eSwgVmFyaWFibGVFbnZpcm9ubWVudCYgcGFyZW50U2NvcGVU
RFpWYXJpYWJsZXMsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIFJlZlB0
cjxTb3VyY2VQcm92aWRlcj4mJiBzb3VyY2VPdmVycmlkZSA9IG51bGxwdHIpCiAgICAgewogICAg
ICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4odm0tPmhlYXApKQotICAg
ICAgICAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUodm0sIHZtLT51bmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZVN0cnVjdHVyZS5nZXQoKSwgc291cmNlLCBXVEY6Om1vdmUoc291cmNlT3Zl
cnJpZGUpLCBub2RlLCB1bmxpbmtlZEZ1bmN0aW9uS2luZCwgY29uc3RydWN0QWJpbGl0eSwgcGFy
ZW50U2NvcGVURFpWYXJpYWJsZXMsIGlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCk7CisgICAg
ICAgICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSh2bSwgdm0tPnVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlU3RydWN0dXJlLmdldCgpLCBzb3VyY2UsIFdURjo6bW92ZShzb3VyY2VPdmVy
cmlkZSksIG5vZGUsIHVubGlua2VkRnVuY3Rpb25LaW5kLCBjb25zdHJ1Y3RBYmlsaXR5LCBwYXJl
bnRTY29wZVREWlZhcmlhYmxlcywgZGVyaXZlZENvbnRleHRUeXBlKTsKICAgICAgICAgaW5zdGFu
Y2UtPmZpbmlzaENyZWF0aW9uKCp2bSk7CiAgICAgICAgIHJldHVybiBpbnN0YW5jZTsKICAgICB9
CkBAIC0xMjYsMTAgKzEyNywxMCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0NsYXNzQ29uc3RydWN0
b3JGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIGNvbnN0cnVjdG9yS2luZCgpICE9IENvbnN0cnVj
dG9yS2luZDo6Tm9uZTsgfQogICAgIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqIHBhcmVudFNj
b3BlVERaVmFyaWFibGVzKCkgY29uc3QgeyByZXR1cm4gJm1fcGFyZW50U2NvcGVURFpWYXJpYWJs
ZXM7IH0KICAgICBib29sIGlzQXJyb3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNBcnJv
d0Z1bmN0aW9uOyB9Ci0gICAgYm9vbCBpc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoKSBjb25z
dCB7cmV0dXJuIG1faXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0OyB9CisgICAgSlNDOjpEZXJp
dmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlKCkgY29uc3Qge3JldHVybiBzdGF0aWNf
Y2FzdDxKU0M6OkRlcml2ZWRDb250ZXh0VHlwZT4obV9kZXJpdmVkQ29udGV4dFR5cGUpOyB9CiAK
IHByaXZhdGU6Ci0gICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0qLCBTdHJ1Y3R1cmUq
LCBjb25zdCBTb3VyY2VDb2RlJiwgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiYmIHNvdXJjZU92ZXJy
aWRlLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSosIFVubGlua2VkRnVuY3Rpb25LaW5kLCBDb25zdHJ1
Y3RBYmlsaXR5LCBWYXJpYWJsZUVudmlyb25tZW50JiwgYm9vbCk7CisgICAgVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUoVk0qLCBTdHJ1Y3R1cmUqLCBjb25zdCBTb3VyY2VDb2RlJiwgUmVmUHRy
PFNvdXJjZVByb3ZpZGVyPiYmIHNvdXJjZU92ZXJyaWRlLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSos
IFVubGlua2VkRnVuY3Rpb25LaW5kLCBDb25zdHJ1Y3RBYmlsaXR5LCBWYXJpYWJsZUVudmlyb25t
ZW50JiwgSlNDOjpEZXJpdmVkQ29udGV4dFR5cGUpOwogICAgIFdyaXRlQmFycmllcjxVbmxpbmtl
ZEZ1bmN0aW9uQ29kZUJsb2NrPiBtX3VubGlua2VkQ29kZUJsb2NrRm9yQ2FsbDsKICAgICBXcml0
ZUJhcnJpZXI8VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaz4gbV91bmxpbmtlZENvZGVCbG9ja0Zv
ckNvbnN0cnVjdDsKIApAQCAtMTYwLDcgKzE2MSw3IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQg
bV9jb25zdHJ1Y3RvcktpbmQgOiAyOwogICAgIHVuc2lnbmVkIG1fZnVuY3Rpb25Nb2RlIDogMTsg
Ly8gRnVuY3Rpb25Nb2RlCiAgICAgdW5zaWduZWQgbV9pc0Fycm93RnVuY3Rpb24gOiAxOwotICAg
IHVuc2lnbmVkIG1faXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0IDogMTsKKyAgICB1bnNpZ25l
ZCBtX2Rlcml2ZWRDb250ZXh0VHlwZTogMjsKIAogcHJvdGVjdGVkOgogICAgIHZvaWQgZmluaXNo
Q3JlYXRpb24oVk0mIHZtKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCA0NzM2ZjY2NTIzNjNlN2JmZDIw
ZjE2ZTAxMjExZWIzYzY1ZGUyNDE0Li5hZDhmZTZhZTliYTgxYTBhNWY0NzQ1YTVjZjhlMjczYTJm
M2E3NDhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtMTUyLDcgKzE1Miw3IEBAIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIFByb2dyYW1Ob2RlKiBwcm9ncmFtTm9k
ZSwgVW5saW5rZWRQCiAgICAgLCBtX3RoaXNSZWdpc3RlcihDYWxsRnJhbWU6OnRoaXNBcmd1bWVu
dE9mZnNldCgpKQogICAgICwgbV9jb2RlVHlwZShHbG9iYWxDb2RlKQogICAgICwgbV92bSgmdm0p
Ci0gICAgLCBtX2lzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dChmYWxzZSkKKyAgICAsIG1fZGVy
aXZlZENvbnRleHRUeXBlKERlcml2ZWRDb250ZXh0VHlwZTo6Tm9uZSkKIHsKICAgICBBU1NFUlRf
VU5VU0VEKHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCAhcGFyZW50U2NvcGVURFpWYXJpYWJsZXMt
PnNpemUoKSk7CiAKQEAgLTIwNSw3ICsyMDUsNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNv
ZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQog
ICAgIC8vIGNvbXBhdGlibGUgd2l0aCB0YWlsIGNhbGxzICh3ZSBoYXZlIG5vIHdheSBvZiBlbWl0
dGluZyBvcF9kaWRfY2FsbCkuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE0ODgxOQogICAgICwgbV9pblRhaWxQb3NpdGlvbihPcHRpb25zOjp1c2VUYWls
Q2FsbHMoKSAmJiAhaXNDb25zdHJ1Y3RvcigpICYmIGNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0
cnVjdG9yS2luZDo6Tm9uZSAmJiBpc1N0cmljdE1vZGUoKSAmJiAhbV9zaG91bGRFbWl0UHJvZmls
ZUhvb2tzKQotICAgICwgbV9pc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoY29kZUJsb2NrLT5p
c0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoKSkKKyAgICAsIG1fZGVyaXZlZENvbnRleHRUeXBl
KGNvZGVCbG9jay0+ZGVyaXZlZENvbnRleHRUeXBlKCkpCiB7CiAgICAgZm9yIChhdXRvJiBjb25z
dGFudFJlZ2lzdGVyIDogbV9saW5rVGltZUNvbnN0YW50UmVnaXN0ZXJzKQogICAgICAgICBjb25z
dGFudFJlZ2lzdGVyID0gbnVsbHB0cjsKQEAgLTQ4Nyw3ICs0ODcsOSBAQCBCeXRlY29kZUdlbmVy
YXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9k
ZSwgVW5saW5rZQogICAgIH0gZWxzZSB7CiAgICAgICAgIGVtaXRHZXROZXdUYXJnZXRGcm9tQXJy
b3dGdW5jdGlvbkxleGljYWxFbnZpcm9ubWVudCgpOwogCi0gICAgICAgIGlmIChmdW5jdGlvbk5v
ZGUtPnVzZXNUaGlzKCkpCisgICAgICAgIC8vIExvYWQgJ3RoaXMnIHZhbHVlIHdoZW4gJ3RoaXMn
IGNvbnRhaW5zIGluIGZ1bmN0aW9uIGJvZHkgb3IgYXJyb3cgZnVuY3Rpb24gaW5zaWRlIG9mIHRo
ZSBtZXRob2Qgb3IgY29uc3RydWN0b3Igb2YgZGVyaXZlZCBjbGFzcywKKyAgICAgICAgLy8gYmVj
YXVzZSAnc3VwZXInIGNhbiBoYXZlIG1ldGhvZCB0aGF0IHVzZSAndGhpcycKKyAgICAgICAgaWYg
KGZ1bmN0aW9uTm9kZS0+dXNlc1RoaXMoKSB8fCBpc0Rlcml2ZWRDbGFzc0NvbnRleHQoKSB8fCBp
c0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoKSkKICAgICAgICAgICAgIGVtaXRHZXRUaGlzRnJv
bUFycm93RnVuY3Rpb25MZXhpY2FsRW52aXJvbm1lbnQoKTsKICAgICB9CiAKQEAgLTQ5OCw2ICs1
MDAsNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5j
dGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogCiAgICAgaWYgKCFjb2RlQmxvY2stPmlz
QXJyb3dGdW5jdGlvbigpICYmIChmdW5jdGlvbk5vZGUtPnVzZXNBcnJvd0Z1bmN0aW9uKCkgfHwg
ZnVuY3Rpb25Ob2RlLT51c2VzRXZhbCgpKSkgewogICAgICAgICBpbml0aWFsaXplQXJyb3dGdW5j
dGlvbkNvbnRleHRTY29wZUlmTmVlZGVkKGZ1bmN0aW9uU3ltYm9sVGFibGUpOworCiAgICAgICAg
IGVtaXRQdXRUaGlzVG9BcnJvd0Z1bmN0aW9uQ29udGV4dFNjb3BlKCk7CiAgICAgICAgIGVtaXRQ
dXROZXdUYXJnZXRUb0Fycm93RnVuY3Rpb25Db250ZXh0U2NvcGUoKTsKICAgICAgICAgZW1pdFB1
dFByb3RvVG9BcnJvd0Z1bmN0aW9uQ29udGV4dFNjb3BlKCk7CkBAIC01MTUsNyArNTE4LDcgQEAg
Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRXZhbE5vZGUqIGV2
YWxOb2RlLCBVbmxpbmtlZEV2YWxDb2QKICAgICAsIG1fY29kZVR5cGUoRXZhbENvZGUpCiAgICAg
LCBtX3ZtKCZ2bSkKICAgICAsIG1fdXNlc05vblN0cmljdEV2YWwoY29kZUJsb2NrLT51c2VzRXZh
bCgpICYmICFjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKQotICAgICwgbV9pc0Rlcml2ZWRDb25z
dHJ1Y3RvckNvbnRleHQoY29kZUJsb2NrLT5pc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoKSkK
KyAgICAsIG1fZGVyaXZlZENvbnRleHRUeXBlKGNvZGVCbG9jay0+ZGVyaXZlZENvbnRleHRUeXBl
KCkpCiB7CiAgICAgZm9yIChhdXRvJiBjb25zdGFudFJlZ2lzdGVyIDogbV9saW5rVGltZUNvbnN0
YW50UmVnaXN0ZXJzKQogICAgICAgICBjb25zdGFudFJlZ2lzdGVyID0gbnVsbHB0cjsKQEAgLTU2
NSw3ICs1NjgsNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZt
LCBNb2R1bGVQcm9ncmFtTm9kZSogbW9kdWxlUHJvZ3JhbU5vZAogICAgICwgbV9jb2RlVHlwZShN
b2R1bGVDb2RlKQogICAgICwgbV92bSgmdm0pCiAgICAgLCBtX3VzZXNOb25TdHJpY3RFdmFsKGZh
bHNlKQotICAgICwgbV9pc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoZmFsc2UpCisgICAgLCBt
X2Rlcml2ZWRDb250ZXh0VHlwZShEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUpCiB7CiAgICAgQVNT
RVJUX1VOVVNFRChwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgIXBhcmVudFNjb3BlVERaVmFyaWFi
bGVzLT5zaXplKCkpOwogCkBAIC04MzMsNyArODM2LDcgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRv
cjo6aW5pdGlhbGl6ZUFycm93RnVuY3Rpb25Db250ZXh0U2NvcGVJZk5lZWRlZChTeW1ib2xUYWJs
ZSoKICAgICAgICAgYWRkVGFyZ2V0Lml0ZXJhdG9yLT52YWx1ZS5zZXRJc0NvbnN0KCk7CiAgICAg
fQogCi0gICAgaWYgKGlzQ29uc3RydWN0b3IoKSAmJiBjb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25z
dHJ1Y3RvcktpbmQ6OkRlcml2ZWQpIHsKKyAgICBpZiAoKGlzQ29uc3RydWN0b3IoKSAmJiBjb25z
dHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQpIHx8IG1fY29kZUJsb2Nr
LT5pc0NsYXNzQ29udGV4dCgpKSB7CiAgICAgICAgIGF1dG8gcHJvdG9PYmplY3QgPSBlbnZpcm9u
bWVudC5hZGQocHJvcGVydHlOYW1lcygpLnVuZGVyc2NvcmVQcm90b1Njb3BlTG9jYWxQcml2YXRl
TmFtZSk7CiAgICAgICAgIHByb3RvT2JqZWN0Lml0ZXJhdG9yLT52YWx1ZS5zZXRJc0NhcHR1cmVk
KCk7CiAgICAgICAgIHByb3RvT2JqZWN0Lml0ZXJhdG9yLT52YWx1ZS5zZXRJc0NvbnN0KCk7CkBA
IC0zODU5LDcgKzM4NjIsNiBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0TmV3VGFy
Z2V0RnJvbUFycm93RnVuY3Rpb25MZXhpY2FsRW52aXJvbm1lbnQoKQogICAgIGVtaXRHZXRGcm9t
U2NvcGUobmV3VGFyZ2V0KCksIGVtaXRMb2FkQXJyb3dGdW5jdGlvbkxleGljYWxFbnZpcm9ubWVu
dCgpLCBuZXdUYXJnZXRWYXIsIERvTm90VGhyb3dJZk5vdEZvdW5kKTsKIH0KIAotICAgIAogUmVn
aXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRQcm90b1Njb3BlRnJvbUFycm93RnVu
Y3Rpb25MZXhpY2FsRW52aXJvbm1lbnQoKQogewogICAgIFZhcmlhYmxlIHByb3RvU2NvcGVWYXIg
PSB2YXJpYWJsZShwcm9wZXJ0eU5hbWVzKCkudW5kZXJzY29yZVByb3RvU2NvcGVMb2NhbFByaXZh
dGVOYW1lKTsKQEAgLTM4NzYsMTQgKzM4NzgsMTQgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdFB1dE5ld1RhcmdldFRvQXJyb3dGdW5jdGlvbkNvbnRleHRTY29wZSgpCiAgICAgCiB2b2lk
IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0UHJvdG9Ub0Fycm93RnVuY3Rpb25Db250ZXh0U2Nv
cGUoKQogewotICAgIGlmIChpc0NvbnN0cnVjdG9yKCkgJiYgY29uc3RydWN0b3JLaW5kKCkgPT0g
Q29uc3RydWN0b3JLaW5kOjpEZXJpdmVkKSB7CisgICAgaWYgKChpc0NvbnN0cnVjdG9yKCkgJiYg
Y29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpEZXJpdmVkKSB8fCAobV9jb2Rl
QmxvY2stPmlzQ2xhc3NDb250ZXh0KCkpKSB7CiAgICAgICAgIEFTU0VSVChtX2Fycm93RnVuY3Rp
b25Db250ZXh0TGV4aWNhbEVudmlyb25tZW50UmVnaXN0ZXIgIT0gbnVsbHB0cik7CiAgICAgICAg
ICAgICAKICAgICAgICAgVmFyaWFibGUgcHJvdG9TY29wZSA9IHZhcmlhYmxlKHByb3BlcnR5TmFt
ZXMoKS51bmRlcnNjb3JlUHJvdG9TY29wZUxvY2FsUHJpdmF0ZU5hbWUpOwogICAgICAgICBlbWl0
UHV0VG9TY29wZShtX2Fycm93RnVuY3Rpb25Db250ZXh0TGV4aWNhbEVudmlyb25tZW50UmVnaXN0
ZXIsIHByb3RvU2NvcGUsICZtX2NhbGxlZVJlZ2lzdGVyLCBEb05vdFRocm93SWZOb3RGb3VuZCwg
Tm90SW5pdGlhbGl6YXRpb24pOwogICAgIH0KIH0KLSAgICAKKwogdm9pZCBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdFB1dFRoaXNUb0Fycm93RnVuY3Rpb25Db250ZXh0U2NvcGUoKQogewogICAgIEFT
U0VSVChpc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoKSB8fCBtX2Fycm93RnVuY3Rpb25Db250
ZXh0TGV4aWNhbEVudmlyb25tZW50UmVnaXN0ZXIgIT0gbnVsbHB0cik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5k
ZXggNzJlYzIwMDMwNGJiNDUzOGE5ZTY1N2UxZGNhYTVlODUyYWNmYzdlMS4uYTMyOTlmMjE0NTU0
ZmVmY2NiMjA3MzEwZGExNmQxYjQwOTc2NjBiNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtMjc5LDcgKzI3
OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBjb25zdCBDb21tb25JZGVudGlmaWVycyYg
cHJvcGVydHlOYW1lcygpIGNvbnN0IHsgcmV0dXJuICptX3ZtLT5wcm9wZXJ0eU5hbWVzOyB9CiAK
ICAgICAgICAgYm9vbCBpc0NvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2st
PmlzQ29uc3RydWN0b3IoKTsgfQotICAgICAgICBib29sIGlzRGVyaXZlZENvbnN0cnVjdG9yQ29u
dGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5pc0Rlcml2ZWRDb25zdHJ1Y3RvckNv
bnRleHQoKTsgfQorICAgICAgICBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBl
KCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPmRlcml2ZWRDb250ZXh0VHlwZSgpOyB9CiAg
ICAgICAgIGJvb2wgdXNlc0Fycm93RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3Njb3BlTm9k
ZS0+dXNlc0Fycm93RnVuY3Rpb24oKTsgfQogICAgICAgICBib29sIHVzZXNFdmFsKCkgY29uc3Qg
eyByZXR1cm4gbV9zY29wZU5vZGUtPnVzZXNFdmFsKCk7IH0KICAgICAgICAgYm9vbCB1c2VzVGhp
cygpIGNvbnN0IHsgcmV0dXJuIG1fc2NvcGVOb2RlLT51c2VzVGhpcygpOyB9CkBAIC02NjgsNiAr
NjY4LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9pc0J1aWx0aW5GdW5jdGlvbjsgfQogCiAgICAgICAgIE9wY29k
ZUlEIGxhc3RPcGNvZGVJRCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdE9wY29kZUlEOyB9CisgICAg
ICAgIAorICAgICAgICBib29sIGlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCgpIHsgcmV0dXJu
IG1fZGVyaXZlZENvbnRleHRUeXBlID09IERlcml2ZWRDb250ZXh0VHlwZTo6RGVyaXZlZENvbnN0
cnVjdG9yQ29udGV4dDsgfQorICAgICAgICBib29sIGlzRGVyaXZlZENsYXNzQ29udGV4dCgpIHsg
cmV0dXJuIG1fZGVyaXZlZENvbnRleHRUeXBlID09IERlcml2ZWRDb250ZXh0VHlwZTo6RGVyaXZl
ZE1ldGhvZENvbnRleHQ7IH0KKyAgICAgICAgYm9vbCBpc0Fycm93RnVuY3Rpb24oKSB7IHJldHVy
biBtX2NvZGVCbG9jay0+aXNBcnJvd0Z1bmN0aW9uKCk7IH0KIAogICAgIHByaXZhdGU6CiAgICAg
ICAgIGVudW0gY2xhc3MgVERaUmVxdWlyZW1lbnQgeyBVbmRlclREWiwgTm90VW5kZXJURFogfTsK
QEAgLTc2Miw3ICs3NjYsMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgICAgICBV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogbWFrZUZ1bmN0aW9uKEZ1bmN0aW9uTWV0YWRhdGFO
b2RlKiBtZXRhZGF0YSkKICAgICAgICAgewotICAgICAgICAgICAgYm9vbCBuZXdpc0Rlcml2ZWRD
b25zdHJ1Y3RvckNvbnRleHQgPSBjb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6
OkRlcml2ZWQgfHwgKG1faXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0ICYmIG1ldGFkYXRhLT5p
c0Fycm93RnVuY3Rpb24oKSk7CisgICAgICAgICAgICBib29sIG5ld2lzRGVyaXZlZENvbnN0cnVj
dG9yQ29udGV4dCA9IGNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6RGVyaXZl
ZCB8fCAoZGVyaXZlZENvbnRleHRUeXBlKCkgPT0gRGVyaXZlZENvbnRleHRUeXBlOjpEZXJpdmVk
Q29uc3RydWN0b3JDb250ZXh0ICYmIG1ldGFkYXRhLT5pc0Fycm93RnVuY3Rpb24oKSk7CisgICAg
ICAgICAgICAKKyAgICAgICAgICAgIERlcml2ZWRDb250ZXh0VHlwZSB0eXBlOworICAgICAgICAg
ICAgaWYgKG5ld2lzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCkKKyAgICAgICAgICAgICAgICB0
eXBlID0gRGVyaXZlZENvbnRleHRUeXBlOjpEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0OworICAg
ICAgICAgICAgZWxzZSAgeworICAgICAgICAgICAgICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uSW5D
bGFzc0NvbnRleHQgPSBtX2NvZGVCbG9jay0+aXNDbGFzc0NvbnRleHQoKSB8fCAobV9jb2RlQmxv
Y2stPmlzQXJyb3dGdW5jdGlvbigpICYmIG1fZGVyaXZlZENvbnRleHRUeXBlID09IERlcml2ZWRD
b250ZXh0VHlwZTo6RGVyaXZlZE1ldGhvZENvbnRleHQpOworICAgICAgICAgICAgICAgIHR5cGUg
PSBpc0Fycm93RnVuY3Rpb25JbkNsYXNzQ29udGV4dCA/IERlcml2ZWRDb250ZXh0VHlwZTo6RGVy
aXZlZE1ldGhvZENvbnRleHQgOiBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmU7CisgICAgICAgICAg
ICB9CiAKICAgICAgICAgICAgIFZhcmlhYmxlRW52aXJvbm1lbnQgdmFyaWFibGVzVW5kZXJURFo7
CiAgICAgICAgICAgICBnZXRWYXJpYWJsZXNVbmRlclREWih2YXJpYWJsZXNVbmRlclREWik7CkBA
IC03NzIsNyArNzg0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBpZiAocGFyc2VN
b2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2V0dGVyTW9kZSB8fCBwYXJzZU1vZGUgPT0gU291cmNl
UGFyc2VNb2RlOjpTZXR0ZXJNb2RlIHx8IHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFy
cm93RnVuY3Rpb25Nb2RlIHx8IChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpNZXRob2RN
b2RlICYmIG1ldGFkYXRhLT5jb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6Ok5v
bmUpKQogICAgICAgICAgICAgICAgIGNvbnN0cnVjdEFiaWxpdHkgPSBDb25zdHJ1Y3RBYmlsaXR5
OjpDYW5ub3RDb25zdHJ1Y3Q7CiAKLSAgICAgICAgICAgIHJldHVybiBVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZTo6Y3JlYXRlKG1fdm0sIG1fc2NvcGVOb2RlLT5zb3VyY2UoKSwgbWV0YWRhdGEs
IGlzQnVpbHRpbkZ1bmN0aW9uKCkgPyBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiA6IFVubGlua2Vk
Tm9ybWFsRnVuY3Rpb24sIGNvbnN0cnVjdEFiaWxpdHksIHZhcmlhYmxlc1VuZGVyVERaLCBuZXdp
c0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQpOworICAgICAgICAgICAgcmV0dXJuIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUobV92bSwgbV9zY29wZU5vZGUtPnNvdXJjZSgpLCBt
ZXRhZGF0YSwgaXNCdWlsdGluRnVuY3Rpb24oKSA/IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uIDog
VW5saW5rZWROb3JtYWxGdW5jdGlvbiwgY29uc3RydWN0QWJpbGl0eSwgdmFyaWFibGVzVW5kZXJU
RFosIHR5cGUpOwogICAgICAgICB9CiAKICAgICAgICAgdm9pZCBnZXRWYXJpYWJsZXNVbmRlclRE
WihWYXJpYWJsZUVudmlyb25tZW50Jik7CkBAIC04NzksNyArODkxLDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIGJvb2wgbV9pc0J1aWx0aW5GdW5jdGlvbiB7IGZhbHNlIH07CiAgICAgICAg
IGJvb2wgbV91c2VzTm9uU3RyaWN0RXZhbCB7IGZhbHNlIH07CiAgICAgICAgIGJvb2wgbV9pblRh
aWxQb3NpdGlvbiB7IGZhbHNlIH07Ci0gICAgICAgIGJvb2wgbV9pc0Rlcml2ZWRDb25zdHJ1Y3Rv
ckNvbnRleHQgeyBmYWxzZSB9OworICAgICAgICBEZXJpdmVkQ29udGV4dFR5cGUgbV9kZXJpdmVk
Q29udGV4dFR5cGUgeyBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUgfTsKICAgICB9OwogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdl
bi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5j
cHAKaW5kZXggNzg2ZGNmNmIyYjEzOWNkNzZmZWM2YjExNjJiNWY1ODFjYTg1YTgyOS4uN2ZmNTRl
MWJjNzc4Y2JkZDEwZjQ5ZjdlYTZjMzNkMmZhYTI0MDNkNSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtMTQ4LDcgKzE0
OCw4IEBAIFJlZ2lzdGVySUQqIFRoaXNOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0
b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0CiAgICAgaWYgKGdlbmVyYXRvci5jb25zdHJ1
Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQgJiYgKGdlbmVyYXRvci51c2Vz
QXJyb3dGdW5jdGlvbigpIHx8IGdlbmVyYXRvci51c2VzRXZhbCgpKSkKICAgICAgICAgZ2VuZXJh
dG9yLmVtaXRHZXRUaGlzRnJvbUFycm93RnVuY3Rpb25MZXhpY2FsRW52aXJvbm1lbnQoKTsKICAg
ICAKLSAgICBpZiAobV9zaG91bGRBbHdheXNFbWl0VERaQ2hlY2sgfHwgZ2VuZXJhdG9yLmNvbnN0
cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCB8fCBnZW5lcmF0b3IuaXNE
ZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KCkpCisgICAgaWYgKG1fc2hvdWxkQWx3YXlzRW1pdFRE
WkNoZWNrIHx8IGdlbmVyYXRvci5jb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6
OkRlcml2ZWQKKyAgICAgICAgfHwgZ2VuZXJhdG9yLmRlcml2ZWRDb250ZXh0VHlwZSgpID09IERl
cml2ZWRDb250ZXh0VHlwZTo6RGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCkKICAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRURFpDaGVjayhnZW5lcmF0b3IudGhpc1JlZ2lzdGVyKCkpOwogCiAgICAgaWYg
KGRzdCA9PSBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKQpAQCAtMTgyLDEwICsxODMsMTggQEAg
UmVnaXN0ZXJJRCogU3VwZXJOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdl
bmVyYXRvciwgUmVnaXN0ZXJJRCogZHMKIAogc3RhdGljIFJlZ2lzdGVySUQqIGVtaXRTdXBlckJh
c2VGb3JDYWxsZWUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvcikKIHsKLSAgICBSZWdpc3Rl
cklEIGNhbGxlZTsKLSAgICBjYWxsZWUuc2V0SW5kZXgoSlNTdGFjazo6Q2FsbGVlKTsKKyAgICBS
ZWdpc3RlcklEKiBzY29wZUlkOworCisgICAgaWYgKGdlbmVyYXRvci5pc0Rlcml2ZWRDbGFzc0Nv
bnRleHQoKSB8fCBnZW5lcmF0b3IuaXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KCkpCisgICAg
ICAgIHNjb3BlSWQgPSBnZW5lcmF0b3IuZW1pdEdldFByb3RvU2NvcGVGcm9tQXJyb3dGdW5jdGlv
bkxleGljYWxFbnZpcm9ubWVudCgpOworICAgIGVsc2UgeworICAgICAgICBSZWdpc3RlcklEIGNh
bGxlZTsKKyAgICAgICAgY2FsbGVlLnNldEluZGV4KEpTU3RhY2s6OkNhbGxlZSk7CisgICAgICAg
IAorICAgICAgICBzY29wZUlkID0gJmNhbGxlZTsKKyAgICB9CiAKLSAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gaG9tZU9iamVjdCA9IGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IubmV3VGVt
cG9yYXJ5KCksICZjYWxsZWUsIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuaG9tZU9iamVjdFBy
aXZhdGVOYW1lKTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaG9tZU9iamVjdCA9IGdlbmVyYXRv
ci5lbWl0R2V0QnlJZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHNjb3BlSWQsIGdlbmVyYXRv
ci5wcm9wZXJ0eU5hbWVzKCkuaG9tZU9iamVjdFByaXZhdGVOYW1lKTsKICAgICByZXR1cm4gZ2Vu
ZXJhdG9yLmVtaXRHZXRCeUlkKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgaG9tZU9iamVjdC5n
ZXQoKSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS51bmRlcnNjb3JlUHJvdG8pOwogfQogCkBA
IC03NDUsMTUgKzc1NCwxNiBAQCBSZWdpc3RlcklEKiBGdW5jdGlvbkNhbGxWYWx1ZU5vZGU6OmVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZQogICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiByZXR1cm5WYWx1ZSA9IGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwg
ZnVuYy5nZXQoKSk7CiAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwg
bV9hcmdzKTsKICAgICBpZiAobV9leHByLT5pc1N1cGVyTm9kZSgpKSB7Ci0gICAgICAgIEFTU0VS
VChnZW5lcmF0b3IuaXNDb25zdHJ1Y3RvcigpIHx8IGdlbmVyYXRvci5pc0Rlcml2ZWRDb25zdHJ1
Y3RvckNvbnRleHQoKSk7Ci0gICAgICAgIEFTU0VSVChnZW5lcmF0b3IuY29uc3RydWN0b3JLaW5k
KCkgPT0gQ29uc3RydWN0b3JLaW5kOjpEZXJpdmVkIHx8IGdlbmVyYXRvci5pc0Rlcml2ZWRDb25z
dHJ1Y3RvckNvbnRleHQoKSk7CisgICAgICAgIGJvb2wgaXNEZXJpdmVkQ29uc3RydWN0b3JDb250
ZXh0ID0gZ2VuZXJhdG9yLmRlcml2ZWRDb250ZXh0VHlwZSgpID09IERlcml2ZWRDb250ZXh0VHlw
ZTo6RGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dDsKKyAgICAgICAgQVNTRVJUKGdlbmVyYXRvci5p
c0NvbnN0cnVjdG9yKCkgfHwgaXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KTsKKyAgICAgICAg
QVNTRVJUKGdlbmVyYXRvci5jb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRl
cml2ZWQgfHwgaXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KTsKICAgICAgICAgZ2VuZXJhdG9y
LmVtaXRNb3ZlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGdlbmVyYXRvci5uZXdUYXJn
ZXQoKSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIHJldCA9IGdlbmVyYXRvci5lbWl0Q29uc3RydWN0
KHJldHVyblZhbHVlLmdldCgpLCBmdW5jLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxB
cmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgICAgIGdl
bmVyYXRvci5lbWl0TW92ZShnZW5lcmF0b3IudGhpc1JlZ2lzdGVyKCksIHJldCk7CiAgICAgICAg
IAogICAgICAgICBib29sIGlzQ29uc3RydWN0b3JLaW5kRGVyaXZlZCA9IGdlbmVyYXRvci5jb25z
dHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQ7CiAgICAgICAgIGJvb2wg
dXNlc0Fycm93RnVuY3Rpb25PckV2YWwgID0gZ2VuZXJhdG9yLnVzZXNBcnJvd0Z1bmN0aW9uKCkg
fHwgZ2VuZXJhdG9yLnVzZXNFdmFsKCk7Ci0gICAgICAgIGlmIChnZW5lcmF0b3IuaXNEZXJpdmVk
Q29uc3RydWN0b3JDb250ZXh0KCkgfHwgKGlzQ29uc3RydWN0b3JLaW5kRGVyaXZlZCAmJiB1c2Vz
QXJyb3dGdW5jdGlvbk9yRXZhbCkpCisgICAgICAgIGlmIChpc0Rlcml2ZWRDb25zdHJ1Y3RvckNv
bnRleHQgfHwgKGlzQ29uc3RydWN0b3JLaW5kRGVyaXZlZCAmJiB1c2VzQXJyb3dGdW5jdGlvbk9y
RXZhbCkpCiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dFRoaXNUb0Fycm93RnVuY3Rpb25D
b250ZXh0U2NvcGUoKTsKICAgICAgICAgCiAgICAgICAgIHJldHVybiByZXQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcAppbmRl
eCBkNTQwNTUwZjVlMTRkNjAyYTk5Mjg4MGViYTBlNmQxOWJlNjgzNzA0Li4xMWZiNjk1OGRkYzY1
Y2QzOWRhZDI2ZGRmYjdkMDA3YmY5MGE0OGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAKQEAgLTE5Niw3ICsxOTYsNyBA
QCBKU1ZhbHVlIERlYnVnZ2VyQ2FsbEZyYW1lOjpldmFsdWF0ZShjb25zdCBTdHJpbmcmIHNjcmlw
dCwgTmFrZWRQdHI8RXhjZXB0aW9uPiYgZQogICAgIFZhcmlhYmxlRW52aXJvbm1lbnQgdmFyaWFi
bGVzVW5kZXJURFo7CiAgICAgSlNTY29wZTo6Y29sbGVjdFZhcmlhYmxlc1VuZGVyVERaKHNjb3Bl
KCktPmpzU2NvcGUoKSwgdmFyaWFibGVzVW5kZXJURFopOwogCi0gICAgRXZhbEV4ZWN1dGFibGUq
IGV2YWwgPSBFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKGNhbGxGcmFtZSwgbWFrZVNvdXJjZShzY3Jp
cHQpLCBjb2RlQmxvY2suaXNTdHJpY3RNb2RlKCksIHRoaXNURFpNb2RlLCBjb2RlQmxvY2sudW5s
aW5rZWRDb2RlQmxvY2soKS0+aXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KCksIGNvZGVCbG9j
ay51bmxpbmtlZENvZGVCbG9jaygpLT5pc0Fycm93RnVuY3Rpb24oKSwgJnZhcmlhYmxlc1VuZGVy
VERaKTsKKyAgICBFdmFsRXhlY3V0YWJsZSogZXZhbCA9IEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUo
Y2FsbEZyYW1lLCBtYWtlU291cmNlKHNjcmlwdCksIGNvZGVCbG9jay5pc1N0cmljdE1vZGUoKSwg
dGhpc1REWk1vZGUsIGNvZGVCbG9jay51bmxpbmtlZENvZGVCbG9jaygpLT5kZXJpdmVkQ29udGV4
dFR5cGUoKSwgY29kZUJsb2NrLnVubGlua2VkQ29kZUJsb2NrKCktPmlzQXJyb3dGdW5jdGlvbigp
LCAmdmFyaWFibGVzVW5kZXJURFopOwogICAgIGlmICh2bS5leGNlcHRpb24oKSkgewogICAgICAg
ICBleGNlcHRpb24gPSB2bS5leGNlcHRpb24oKTsKICAgICAgICAgdm0uY2xlYXJFeGNlcHRpb24o
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnBy
ZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIu
Y3BwCmluZGV4IDUxZGQ0OTY1M2JlMWFkYmY0MjZmMWIwNGUxZDYwNmIzYzRmN2JlOWMuLmYxOThm
ODVjNjJmODRjMGIwZjkyODI1YjQ0ODU4NWEyNDE3YzUzNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcApAQCAtMTcyLDcgKzE3Miw3
IEBAIEpTVmFsdWUgZXZhbChDYWxsRnJhbWUqIGNhbGxGcmFtZSkKICAgICAgICAgQVNTRVJUKCFj
YWxsRnJhbWUtPnZtKCkuZXhjZXB0aW9uKCkpOwogCiAgICAgICAgIFRoaXNURFpNb2RlIHRoaXNU
RFpNb2RlID0gY2FsbGVyQ29kZUJsb2NrLT51bmxpbmtlZENvZGVCbG9jaygpLT5jb25zdHJ1Y3Rv
cktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQgPyBUaGlzVERaTW9kZTo6QWx3YXlz
Q2hlY2sgOiBUaGlzVERaTW9kZTo6Q2hlY2tJZk5lZWRlZDsKLSAgICAgICAgZXZhbCA9IGNhbGxl
ckNvZGVCbG9jay0+ZXZhbENvZGVDYWNoZSgpLmdldFNsb3coY2FsbEZyYW1lLCBjYWxsZXJDb2Rl
QmxvY2ssIGNhbGxlckNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCksIHRoaXNURFpNb2RlLCBjYWxs
ZXJDb2RlQmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCktPmlzRGVyaXZlZENvbnN0cnVjdG9yQ29u
dGV4dCgpLCBjYWxsZXJDb2RlQmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCktPmlzQXJyb3dGdW5j
dGlvbigpLCBwcm9ncmFtU291cmNlLCBjYWxsZXJTY29wZUNoYWluKTsKKyAgICAgICAgZXZhbCA9
IGNhbGxlckNvZGVCbG9jay0+ZXZhbENvZGVDYWNoZSgpLmdldFNsb3coY2FsbEZyYW1lLCBjYWxs
ZXJDb2RlQmxvY2ssIGNhbGxlckNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCksIHRoaXNURFpNb2Rl
LCBjYWxsZXJDb2RlQmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCktPmRlcml2ZWRDb250ZXh0VHlw
ZSgpLCBjYWxsZXJDb2RlQmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCktPmlzQXJyb3dGdW5jdGlv
bigpLCBwcm9ncmFtU291cmNlLCBjYWxsZXJTY29wZUNoYWluKTsKICAgICAgICAgaWYgKCFldmFs
KQogICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKaW5kZXggOGZjOWRkMDg3MWYyNDE0Yjg4
OGVhZTg3ZTkyZDEwYzAzZTUwYTI5OS4uNGM4MGJmYTFmNzI2Mjk2YzZkMGYxNGRjZjc0YmRlMDMw
ODBiMzVhYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNh
Y2hlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3Bw
CkBAIC0xODcsNyArMTg3LDcgQEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIENvZGVDYWNo
ZTo6Z2V0RnVuY3Rpb25FeGVjdXRhYmxlRnJvbUdsb2JhbENvZGUoVk0mIHYKICAgICBtZXRhZGF0
YS0+c2V0RW5kUG9zaXRpb24ocG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSk7CiAgICAgLy8gVGhl
IEZ1bmN0aW9uIGNvbnN0cnVjdG9yIG9ubHkgaGFzIGFjY2VzcyB0byBnbG9iYWwgdmFyaWFibGVz
LCBzbyBubyB2YXJpYWJsZXMgd2lsbCBiZSB1bmRlciBURFouCiAgICAgVmFyaWFibGVFbnZpcm9u
bWVudCBlbXB0eVREWlZhcmlhYmxlczsKLSAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSog
ZnVuY3Rpb25FeGVjdXRhYmxlID0gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSgm
dm0sIHNvdXJjZSwgbWV0YWRhdGEsIFVubGlua2VkTm9ybWFsRnVuY3Rpb24sIENvbnN0cnVjdEFi
aWxpdHk6OkNhbkNvbnN0cnVjdCwgZW1wdHlURFpWYXJpYWJsZXMsIGZhbHNlKTsKKyAgICBVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSgmdm0sIHNvdXJjZSwgbWV0YWRhdGEsIFVubGlua2VkTm9y
bWFsRnVuY3Rpb24sIENvbnN0cnVjdEFiaWxpdHk6OkNhbkNvbnN0cnVjdCwgZW1wdHlURFpWYXJp
YWJsZXMsIERlcml2ZWRDb250ZXh0VHlwZTo6Tm9uZSk7CiAgICAgZnVuY3Rpb25FeGVjdXRhYmxl
LT5tX25hbWVWYWx1ZS5zZXQodm0sIGZ1bmN0aW9uRXhlY3V0YWJsZSwganNTdHJpbmcoJnZtLCBu
YW1lLnN0cmluZygpKSk7CiAKICAgICBtX3NvdXJjZUNvZGUuYWRkQ2FjaGUoa2V5LCBTb3VyY2VD
b2RlVmFsdWUodm0sIGZ1bmN0aW9uRXhlY3V0YWJsZSwgbV9zb3VyY2VDb2RlLmFnZSgpKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCmluZGV4IDljNTVl
ZTQ3NTk2MTBiODZkYmQ2Yjg4YTVmNzUxZDM1NWQ5ZTUzZGYuLjEwYTE2NjVmNWY0NDkwNTU0YjVh
N2Q0OWIxNWMwZmMxYjVkODMzYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0V4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0V4ZWN1dGFibGUuY3BwCkBAIC0xMzEsMTQgKzEzMSwxNCBAQCBJbnRyaW5zaWMgTmF0aXZlRXhl
Y3V0YWJsZTo6aW50cmluc2ljKCkgY29uc3QKIAogY29uc3QgQ2xhc3NJbmZvIFNjcmlwdEV4ZWN1
dGFibGU6OnNfaW5mbyA9IHsgIlNjcmlwdEV4ZWN1dGFibGUiLCAmRXhlY3V0YWJsZUJhc2U6OnNf
aW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShTY3JpcHRFeGVjdXRhYmxlKSB9OwogCi1TY3Jp
cHRFeGVjdXRhYmxlOjpTY3JpcHRFeGVjdXRhYmxlKFN0cnVjdHVyZSogc3RydWN0dXJlLCBWTSYg
dm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgYm9vbCBpc0luU3RyaWN0Q29udGV4dCwgYm9v
bCBpc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4
dCkKK1NjcmlwdEV4ZWN1dGFibGU6OlNjcmlwdEV4ZWN1dGFibGUoU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBib29sIGlzSW5TdHJpY3RDb250
ZXh0LCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzQXJyb3dG
dW5jdGlvbkNvbnRleHQpCiAgICAgOiBFeGVjdXRhYmxlQmFzZSh2bSwgc3RydWN0dXJlLCBOVU1f
UEFSQU1FVEVSU19OT1RfQ09NUElMRUQpCiAgICAgLCBtX3NvdXJjZShzb3VyY2UpCiAgICAgLCBt
X2ZlYXR1cmVzKGlzSW5TdHJpY3RDb250ZXh0ID8gU3RyaWN0TW9kZUZlYXR1cmUgOiAwKQogICAg
ICwgbV9oYXNDYXB0dXJlZFZhcmlhYmxlcyhmYWxzZSkKICAgICAsIG1fbmV2ZXJJbmxpbmUoZmFs
c2UpCiAgICAgLCBtX2RpZFRyeVRvRW50ZXJJbkxvb3AoZmFsc2UpCi0gICAgLCBtX2lzRGVyaXZl
ZENvbnN0cnVjdG9yQ29udGV4dChpc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQpCisgICAgLCBt
X2Rlcml2ZWRDb250ZXh0VHlwZShkZXJpdmVkQ29udGV4dFR5cGUpCiAgICAgLCBtX2lzQXJyb3dG
dW5jdGlvbkNvbnRleHQoaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCkKICAgICAsIG1fb3ZlcnJpZGVM
aW5lTnVtYmVyKC0xKQogICAgICwgbV9maXJzdExpbmUoLTEpCkBAIC00MTQsNyArNDE0LDcgQEAg
SlNPYmplY3QqIFNjcmlwdEV4ZWN1dGFibGU6OnByZXBhcmVGb3JFeGVjdXRpb25JbXBsKAogCiBj
b25zdCBDbGFzc0luZm8gRXZhbEV4ZWN1dGFibGU6OnNfaW5mbyA9IHsgIkV2YWxFeGVjdXRhYmxl
IiwgJlNjcmlwdEV4ZWN1dGFibGU6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShFdmFs
RXhlY3V0YWJsZSkgfTsKIAotRXZhbEV4ZWN1dGFibGUqIEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUo
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGJvb2wgaXNJblN0cmlj
dENvbnRleHQsIFRoaXNURFpNb2RlIHRoaXNURFpNb2RlLCBib29sIGlzRGVyaXZlZENvbnN0cnVj
dG9yQ29udGV4dCwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBjb25zdCBWYXJpYWJsZUVu
dmlyb25tZW50KiB2YXJpYWJsZXNVbmRlclREWikKK0V2YWxFeGVjdXRhYmxlKiBFdmFsRXhlY3V0
YWJsZTo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBi
b29sIGlzSW5TdHJpY3RDb250ZXh0LCBUaGlzVERaTW9kZSB0aGlzVERaTW9kZSwgRGVyaXZlZENv
bnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0
LCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiB2YXJpYWJsZXNVbmRlclREWikKIHsKICAgICBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgp
OwogICAgIGlmICghZ2xvYmFsT2JqZWN0LT5ldmFsRW5hYmxlZCgpKSB7CkBAIC00MjIsNyArNDIy
LDcgQEAgRXZhbEV4ZWN1dGFibGUqIEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQog
Ci0gICAgRXZhbEV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxFdmFsRXhlY3V0YWJsZT4oKmV4ZWMtPmhlYXAoKSkpIEV2YWxFeGVjdXRhYmxlKGV4ZWMs
IHNvdXJjZSwgaXNJblN0cmljdENvbnRleHQsIGlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCwg
aXNBcnJvd0Z1bmN0aW9uQ29udGV4dCk7CisgICAgRXZhbEV4ZWN1dGFibGUqIGV4ZWN1dGFibGUg
PSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxFdmFsRXhlY3V0YWJsZT4oKmV4ZWMtPmhlYXAo
KSkpIEV2YWxFeGVjdXRhYmxlKGV4ZWMsIHNvdXJjZSwgaXNJblN0cmljdENvbnRleHQsIGRlcml2
ZWRDb250ZXh0VHlwZSwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCk7CiAgICAgZXhlY3V0YWJsZS0+
ZmluaXNoQ3JlYXRpb24oZXhlYy0+dm0oKSk7CiAKICAgICBVbmxpbmtlZEV2YWxDb2RlQmxvY2sq
IHVubGlua2VkRXZhbENvZGUgPSBnbG9iYWxPYmplY3QtPmNyZWF0ZUV2YWxDb2RlQmxvY2soZXhl
YywgZXhlY3V0YWJsZSwgdGhpc1REWk1vZGUsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIHZhcmlh
Ymxlc1VuZGVyVERaKTsKQEAgLTQzNCw4ICs0MzQsOCBAQCBFdmFsRXhlY3V0YWJsZSogRXZhbEV4
ZWN1dGFibGU6OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJj
ZQogICAgIHJldHVybiBleGVjdXRhYmxlOwogfQogCi1FdmFsRXhlY3V0YWJsZTo6RXZhbEV4ZWN1
dGFibGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGJvb2wgaW5T
dHJpY3RDb250ZXh0LCBib29sIGlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCwgYm9vbCBpc0Fy
cm93RnVuY3Rpb25Db250ZXh0KQotICAgIDogU2NyaXB0RXhlY3V0YWJsZShleGVjLT52bSgpLmV2
YWxFeGVjdXRhYmxlU3RydWN0dXJlLmdldCgpLCBleGVjLT52bSgpLCBzb3VyY2UsIGluU3RyaWN0
Q29udGV4dCwgaXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0LCBpc0Fycm93RnVuY3Rpb25Db250
ZXh0KQorRXZhbEV4ZWN1dGFibGU6OkV2YWxFeGVjdXRhYmxlKEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgU291cmNlQ29kZSYgc291cmNlLCBib29sIGluU3RyaWN0Q29udGV4dCwgRGVyaXZlZENvbnRl
eHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0KQor
ICAgIDogU2NyaXB0RXhlY3V0YWJsZShleGVjLT52bSgpLmV2YWxFeGVjdXRhYmxlU3RydWN0dXJl
LmdldCgpLCBleGVjLT52bSgpLCBzb3VyY2UsIGluU3RyaWN0Q29udGV4dCwgZGVyaXZlZENvbnRl
eHRUeXBlLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0KQogewogfQogCkBAIC00NDcsNyArNDQ3LDcg
QEAgdm9pZCBFdmFsRXhlY3V0YWJsZTo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCiBjb25zdCBDbGFz
c0luZm8gUHJvZ3JhbUV4ZWN1dGFibGU6OnNfaW5mbyA9IHsgIlByb2dyYW1FeGVjdXRhYmxlIiwg
JlNjcmlwdEV4ZWN1dGFibGU6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShQcm9ncmFt
RXhlY3V0YWJsZSkgfTsKIAogUHJvZ3JhbUV4ZWN1dGFibGU6OlByb2dyYW1FeGVjdXRhYmxlKEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cmNlKQotICAgIDogU2NyaXB0RXhl
Y3V0YWJsZShleGVjLT52bSgpLnByb2dyYW1FeGVjdXRhYmxlU3RydWN0dXJlLmdldCgpLCBleGVj
LT52bSgpLCBzb3VyY2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCisgICAgOiBTY3JpcHRFeGVjdXRh
YmxlKGV4ZWMtPnZtKCkucHJvZ3JhbUV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIGV4ZWMtPnZt
KCksIHNvdXJjZSwgZmFsc2UsIERlcml2ZWRDb250ZXh0VHlwZTo6Tm9uZSwgZmFsc2UpCiB7CiAg
ICAgbV90eXBlUHJvZmlsaW5nU3RhcnRPZmZzZXQgPSAwOwogICAgIG1fdHlwZVByb2ZpbGluZ0Vu
ZE9mZnNldCA9IHNvdXJjZS5sZW5ndGgoKSAtIDE7CkBAIC00NjMsNyArNDYzLDcgQEAgdm9pZCBQ
cm9ncmFtRXhlY3V0YWJsZTo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCiBjb25zdCBDbGFzc0luZm8g
TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU6OnNfaW5mbyA9IHsgIk1vZHVsZVByb2dyYW1FeGVjdXRh
YmxlIiwgJlNjcmlwdEV4ZWN1dGFibGU6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShN
b2R1bGVQcm9ncmFtRXhlY3V0YWJsZSkgfTsKIAogTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU6Ok1v
ZHVsZVByb2dyYW1FeGVjdXRhYmxlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYg
c291cmNlKQotICAgIDogU2NyaXB0RXhlY3V0YWJsZShleGVjLT52bSgpLm1vZHVsZVByb2dyYW1F
eGVjdXRhYmxlU3RydWN0dXJlLmdldCgpLCBleGVjLT52bSgpLCBzb3VyY2UsIGZhbHNlLCBmYWxz
ZSwgZmFsc2UpCisgICAgOiBTY3JpcHRFeGVjdXRhYmxlKGV4ZWMtPnZtKCkubW9kdWxlUHJvZ3Jh
bUV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIGV4ZWMtPnZtKCksIHNvdXJjZSwgZmFsc2UsIERl
cml2ZWRDb250ZXh0VHlwZTo6Tm9uZSwgZmFsc2UpCiB7CiAgICAgbV90eXBlUHJvZmlsaW5nU3Rh
cnRPZmZzZXQgPSAwOwogICAgIG1fdHlwZVByb2ZpbGluZ0VuZE9mZnNldCA9IHNvdXJjZS5sZW5n
dGgoKSAtIDE7CkBAIC00OTUsNyArNDk1LDcgQEAgdm9pZCBNb2R1bGVQcm9ncmFtRXhlY3V0YWJs
ZTo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCiBjb25zdCBDbGFzc0luZm8gRnVuY3Rpb25FeGVjdXRh
YmxlOjpzX2luZm8gPSB7ICJGdW5jdGlvbkV4ZWN1dGFibGUiLCAmU2NyaXB0RXhlY3V0YWJsZTo6
c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEZ1bmN0aW9uRXhlY3V0YWJsZSkgfTsKIAog
RnVuY3Rpb25FeGVjdXRhYmxlOjpGdW5jdGlvbkV4ZWN1dGFibGUoVk0mIHZtLCBjb25zdCBTb3Vy
Y2VDb2RlJiBzb3VyY2UsIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiB1bmxpbmtlZEV4ZWN1
dGFibGUsIHVuc2lnbmVkIGZpcnN0TGluZSwgdW5zaWduZWQgbGFzdExpbmUsIHVuc2lnbmVkIHN0
YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4pCi0gICAgOiBTY3JpcHRFeGVjdXRhYmxlKHZt
LmZ1bmN0aW9uRXhlY3V0YWJsZVN0cnVjdHVyZS5nZXQoKSwgdm0sIHNvdXJjZSwgdW5saW5rZWRF
eGVjdXRhYmxlLT5pc0luU3RyaWN0Q29udGV4dCgpLCB1bmxpbmtlZEV4ZWN1dGFibGUtPmlzRGVy
aXZlZENvbnN0cnVjdG9yQ29udGV4dCgpLCBmYWxzZSkKKyAgICA6IFNjcmlwdEV4ZWN1dGFibGUo
dm0uZnVuY3Rpb25FeGVjdXRhYmxlU3RydWN0dXJlLmdldCgpLCB2bSwgc291cmNlLCB1bmxpbmtl
ZEV4ZWN1dGFibGUtPmlzSW5TdHJpY3RDb250ZXh0KCksIHVubGlua2VkRXhlY3V0YWJsZS0+ZGVy
aXZlZENvbnRleHRUeXBlKCksIGZhbHNlKQogICAgICwgbV91bmxpbmtlZEV4ZWN1dGFibGUodm0s
IHRoaXMsIHVubGlua2VkRXhlY3V0YWJsZSkKIHsKICAgICBSRUxFQVNFX0FTU0VSVCghc291cmNl
LmlzTnVsbCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4
ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaApp
bmRleCAzNTQ3MzE5ZWYzZmEwNTY4ZTVjZWI4ZWIwNGE4NTkyZTA2OWIyOTliLi5iNWRkMTM1YmFk
MGQ4OTFhMzc3N2E1NWE3OTJkODI4MjA3NTFkNzU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXhlY3V0YWJsZS5oCkBAIC0zNDYsNyArMzQ2LDcgQEAgcHVibGljOgogICAgIGJv
b2wgbmVlZHNBY3RpdmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9oYXNDYXB0dXJlZFZhcmlhYmxl
cyB8fCBtX2ZlYXR1cmVzICYgKEV2YWxGZWF0dXJlIHwgV2l0aEZlYXR1cmUpOyB9CiAgICAgYm9v
bCBpc1N0cmljdE1vZGUoKSBjb25zdCB7IHJldHVybiBtX2ZlYXR1cmVzICYgU3RyaWN0TW9kZUZl
YXR1cmU7IH0KICAgICBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQoKSBjb25zdCB7IHJldHVy
biBtX2lzQXJyb3dGdW5jdGlvbkNvbnRleHQ7IH0KLSAgICBib29sIGlzRGVyaXZlZENvbnN0cnVj
dG9yQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1faXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0
OyB9CisgICAgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSgpIGNvbnN0IHsg
cmV0dXJuIG1fZGVyaXZlZENvbnRleHRUeXBlOyB9CiAgICAgRUNNQU1vZGUgZWNtYU1vZGUoKSBj
b25zdCB7IHJldHVybiBpc1N0cmljdE1vZGUoKSA/IFN0cmljdE1vZGUgOiBOb3RTdHJpY3RNb2Rl
OyB9CiAgICAgICAgIAogICAgIHZvaWQgc2V0TmV2ZXJJbmxpbmUoYm9vbCB2YWx1ZSkgeyBtX25l
dmVySW5saW5lID0gdmFsdWU7IH0KQEAgLTM5NSw3ICszOTUsNyBAQCBwcml2YXRlOgogICAgIEpT
T2JqZWN0KiBwcmVwYXJlRm9yRXhlY3V0aW9uSW1wbChFeGVjU3RhdGUqLCBKU0Z1bmN0aW9uKiwg
SlNTY29wZSosIENvZGVTcGVjaWFsaXphdGlvbktpbmQpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgU2Ny
aXB0RXhlY3V0YWJsZShTdHJ1Y3R1cmUqLCBWTSYsIGNvbnN0IFNvdXJjZUNvZGUmLCBib29sLCBi
b29sLCBib29sKTsKKyAgICBTY3JpcHRFeGVjdXRhYmxlKFN0cnVjdHVyZSosIFZNJiwgY29uc3Qg
U291cmNlQ29kZSYsIGJvb2wsIERlcml2ZWRDb250ZXh0VHlwZSwgYm9vbCk7CiAKICAgICB2b2lk
IGZpbmlzaENyZWF0aW9uKFZNJiB2bSkKICAgICB7CkBAIC00MTQsNyArNDE0LDcgQEAgcHJvdGVj
dGVkOgogICAgIGJvb2wgbV9uZXZlcklubGluZTsKICAgICBib29sIG1fbmV2ZXJPcHRpbWl6ZSB7
IGZhbHNlIH07CiAgICAgYm9vbCBtX2RpZFRyeVRvRW50ZXJJbkxvb3A7Ci0gICAgYm9vbCBtX2lz
RGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dDsKKyAgICBEZXJpdmVkQ29udGV4dFR5cGUgbV9kZXJp
dmVkQ29udGV4dFR5cGU7CiAgICAgYm9vbCBtX2lzQXJyb3dGdW5jdGlvbkNvbnRleHQ7CiAgICAg
aW50IG1fb3ZlcnJpZGVMaW5lTnVtYmVyOwogICAgIGludCBtX2ZpcnN0TGluZTsKQEAgLTQzOCw3
ICs0MzgsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX2V2YWxDb2RlQmxvY2suZ2V0KCk7
CiAgICAgfQogCi0gICAgc3RhdGljIEV2YWxFeGVjdXRhYmxlKiBjcmVhdGUoRXhlY1N0YXRlKiwg
Y29uc3QgU291cmNlQ29kZSYsIGJvb2wgaXNJblN0cmljdENvbnRleHQsIFRoaXNURFpNb2RlLCBi
b29sIGlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250
ZXh0LCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50Kik7CisgICAgc3RhdGljIEV2YWxFeGVjdXRh
YmxlKiBjcmVhdGUoRXhlY1N0YXRlKiwgY29uc3QgU291cmNlQ29kZSYsIGJvb2wgaXNJblN0cmlj
dENvbnRleHQsIFRoaXNURFpNb2RlLCBEZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNBcnJvd0Z1
bmN0aW9uQ29udGV4dCwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCopOwogCiAgICAgUGFzc1Jl
ZlB0cjxKSVRDb2RlPiBnZW5lcmF0ZWRKSVRDb2RlKCkKICAgICB7CkBAIC00NTIsNyArNDUyLDcg
QEAgcHVibGljOgogICAgICAgICAKICAgICBERUNMQVJFX0lORk87CiAKLSAgICBFeGVjdXRhYmxl
SW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRz
QWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBD
b25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIGZhbHNlLCBpc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQo
KSwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCgpKTsgfQorICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1
dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNBY3RpdmF0aW9u
KCksIHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UsIENvbnN0cnVjdG9y
S2luZDo6Tm9uZSwgZmFsc2UsIGRlcml2ZWRDb250ZXh0VHlwZSgpLCBpc0Fycm93RnVuY3Rpb25D
b250ZXh0KCkpOyB9CiAKICAgICB1bnNpZ25lZCBudW1WYXJpYWJsZXMoKSB7IHJldHVybiBtX3Vu
bGlua2VkRXZhbENvZGVCbG9jay0+bnVtVmFyaWFibGVzKCk7IH0KICAgICB1bnNpZ25lZCBudW1i
ZXJPZkZ1bmN0aW9uRGVjbHMoKSB7IHJldHVybiBtX3VubGlua2VkRXZhbENvZGVCbG9jay0+bnVt
YmVyT2ZGdW5jdGlvbkRlY2xzKCk7IH0KQEAgLTQ2MCw3ICs0NjAsNyBAQCBwdWJsaWM6CiBwcml2
YXRlOgogICAgIGZyaWVuZCBjbGFzcyBFeGVjdXRhYmxlQmFzZTsKICAgICBmcmllbmQgY2xhc3Mg
U2NyaXB0RXhlY3V0YWJsZTsKLSAgICBFdmFsRXhlY3V0YWJsZShFeGVjU3RhdGUqLCBjb25zdCBT
b3VyY2VDb2RlJiwgYm9vbCwgYm9vbCwgYm9vbCk7CisgICAgRXZhbEV4ZWN1dGFibGUoRXhlY1N0
YXRlKiwgY29uc3QgU291cmNlQ29kZSYsIGJvb2wsIERlcml2ZWRDb250ZXh0VHlwZSwgYm9vbCk7
CiAKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7
CiAKQEAgLTUwNSw3ICs1MDUsNyBAQCBwdWJsaWM6CiAgICAgICAgIAogICAgIERFQ0xBUkVfSU5G
TzsKIAotICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4g
RXhlY3V0YWJsZUluZm8obmVlZHNBY3RpdmF0aW9uKCksIHVzZXNFdmFsKCksIGlzU3RyaWN0TW9k
ZSgpLCBmYWxzZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgZmFsc2UsIGlzRGVyaXZl
ZENvbnN0cnVjdG9yQ29udGV4dCgpLCBmYWxzZSk7IH0KKyAgICBFeGVjdXRhYmxlSW5mbyBleGVj
dXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlv
bigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3Rv
cktpbmQ6Ok5vbmUsIGZhbHNlLCBkZXJpdmVkQ29udGV4dFR5cGUoKSwgZmFsc2UpOyB9CiAKIHBy
aXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEV4ZWN1dGFibGVCYXNlOwpAQCAtNTQ2LDcgKzU0Niw3
IEBAIHB1YmxpYzoKIAogICAgIERFQ0xBUkVfSU5GTzsKIAotICAgIEV4ZWN1dGFibGVJbmZvIGV4
ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNBY3RpdmF0
aW9uKCksIHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UsIENvbnN0cnVj
dG9yS2luZDo6Tm9uZSwgZmFsc2UsIGlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCgpLCBmYWxz
ZSk7IH0KKyAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJu
IEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1v
ZGUoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIGZhbHNlLCBkZXJpdmVk
Q29udGV4dFR5cGUoKSwgZmFsc2UpOyB9CiAKICAgICBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2Rl
QmxvY2sqIHVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jaygpIHsgcmV0dXJuIG1fdW5saW5r
ZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrLmdldCgpOyB9CiAKQEAgLTY1Niw3ICs2NTYsNyBAQCBw
dWJsaWM6CiAgICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdW5s
aW5rZWRFeGVjdXRhYmxlLT5pc0J1aWx0aW5GdW5jdGlvbigpOyB9CiAgICAgQ29uc3RydWN0QWJp
bGl0eSBjb25zdHJ1Y3RBYmlsaXR5KCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFi
bGUtPmNvbnN0cnVjdEFiaWxpdHkoKTsgfQogICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPmlzQXJyb3dGdW5jdGlvbigpOyB9Ci0g
ICAgYm9vbCBpc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX3Vu
bGlua2VkRXhlY3V0YWJsZS0+aXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KCk7IH0KKyAgICBE
ZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV91
bmxpbmtlZEV4ZWN1dGFibGUtPmRlcml2ZWRDb250ZXh0VHlwZSgpOyB9CiAgICAgYm9vbCBpc0Ns
YXNzQ29uc3RydWN0b3JGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRh
YmxlLT5pc0NsYXNzQ29uc3RydWN0b3JGdW5jdGlvbigpOyB9CiAgICAgY29uc3QgSWRlbnRpZmll
ciYgbmFtZSgpIHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5uYW1lKCk7IH0KICAgICBj
b25zdCBJZGVudGlmaWVyJiBpbmZlcnJlZE5hbWUoKSB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0
YWJsZS0+aW5mZXJyZWROYW1lKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcAppbmRleCBjZTFlM2JiNzhm
MGQ1MzlhMjY1ZTgyZWJmZDc1MDE1MDExOGU3MGMzLi5kNmIyNzM1YjhkZGI4YWI1MzFlNDEyYTZj
YjVkZjIzOTg0MTJkOTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCkBAIC01ODEsNyArNTgxLDcgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jRXZhbChFeGVjU3RhdGUqIGV4
ZWMpCiAKICAgICBKU0dsb2JhbE9iamVjdCogY2FsbGVlR2xvYmFsT2JqZWN0ID0gZXhlYy0+Y2Fs
bGVlKCktPmdsb2JhbE9iamVjdCgpOwogICAgIFZhcmlhYmxlRW52aXJvbm1lbnQgZW1wdHlURFpW
YXJpYWJsZXM7IC8vIEluZGlyZWN0IGV2YWwgZG9lcyBub3QgaGF2ZSBhY2Nlc3MgdG8gdGhlIGxl
eGljYWwgc2NvcGUuCi0gICAgRXZhbEV4ZWN1dGFibGUqIGV2YWwgPSBFdmFsRXhlY3V0YWJsZTo6
Y3JlYXRlKGV4ZWMsIG1ha2VTb3VyY2UocyksIGZhbHNlLCBUaGlzVERaTW9kZTo6Q2hlY2tJZk5l
ZWRlZCwgZmFsc2UsIGZhbHNlLCAmZW1wdHlURFpWYXJpYWJsZXMpOworICAgIEV2YWxFeGVjdXRh
YmxlKiBldmFsID0gRXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShleGVjLCBtYWtlU291cmNlKHMpLCBm
YWxzZSwgVGhpc1REWk1vZGU6OkNoZWNrSWZOZWVkZWQsIERlcml2ZWRDb250ZXh0VHlwZTo6Tm9u
ZSwgZmFsc2UsICZlbXB0eVREWlZhcmlhYmxlcyk7CiAgICAgaWYgKCFldmFsKQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2LnlhbWwgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvZXM2LnlhbWwKaW5kZXggY2Q4Mzk0ZTRiN2E3YjYyY2UwYjUyM2FiOTAyM2ZkOGIyYWM0
MjVmNS4uYzYxNjRkNWI0NmRjNWEyNThiNGI4OTM2ODY0NjFmYjg1OGYxZDJkNCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi55YW1sCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9lczYueWFtbApAQCAtNzM1LDcgKzczNSw3IEBACiAtIHBhdGg6IGVz
Ni9hcnJvd19mdW5jdGlvbnNfbGV4aWNhbF9uZXcudGFyZ2V0X2JpbmRpbmcuanMKICAgY21kOiBy
dW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvYXJyb3dfZnVuY3Rpb25zX2xleGljYWxfc3VwZXJf
YmluZGluZy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAt
IHBhdGg6IGVzNi9hcnJvd19mdW5jdGlvbnNfbm9fcHJvdG90eXBlX3Byb3BlcnR5LmpzCiAgIGNt
ZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2Jsb2NrLWxldmVsX2Z1bmN0aW9uX2RlY2xh
cmF0aW9uLmpzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNz
L2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXN1cGVycHJvcGVydHkuanMgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXN1cGVy
cHJvcGVydHkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDRiNWE1ZTU0OWUxMDAwZGExMGQwMjUxZmVhZmJkYTA5
OWViZjI2YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9z
dHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtc3VwZXJwcm9wZXJ0eS5qcwpAQCAtMCww
ICsxLDE3NiBAQAordmFyIHRlc3RDYXNlID0gZnVuY3Rpb24gKGFjdHVhbCwgZXhwZWN0ZWQsIG1l
c3NhZ2UpIHsKKyAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpIHsKKyAgICB0aHJvdyBtZXNzYWdl
ICsgIi4gRXhwZWN0ZWQgJyIgKyBleHBlY3RlZCArICInLCBidXQgd2FzICciICsgYWN0dWFsICsg
IiciOworICB9Cit9OworCit2YXIgdGVzdFZhbHVlICA9ICd0ZXN0LXZhbHVlJzsKKwordmFyIEEg
PSBjbGFzcyBBIHsKKyAgICBjb25zdHJ1Y3RvcigpIHsKKyAgICAgIHRoaXMudmFsdWUgPSB0ZXN0
VmFsdWU7CisgICAgfQorICAgIGdldENvbnN0VmFsdWUgKCkgeworICAgICAgcmV0dXJuIHRlc3RW
YWx1ZTsKKyAgICB9CisgICAgZ2V0VmFsdWUgKCkgeworICAgICAgcmV0dXJuIHRoaXMudmFsdWU7
CisgICAgfQorICAgIHNldFZhbHVlICh2YWx1ZSkgeworICAgICAgdGhpcy52YWx1ZSA9IHZhbHVl
OworICAgIH0KK307CisKK3ZhciBCID0gY2xhc3MgQiBleHRlbmRzIEEgeworICBnZXRQYXJlbnRW
YWx1ZSgpIHsKKyAgICB2YXIgYXJyb3cgID0gKCkgPT4gc3VwZXIuZ2V0VmFsdWUoKTsKKyAgICBy
ZXR1cm4gYXJyb3coKTsKKyAgfQorfTsKKwordmFyIEMgPSBjbGFzcyBDIHsKKyAgY29uc3RydWN0
b3IoKSB7CisgICAgdGhpcy52YWx1ZSA9IHRlc3RWYWx1ZTsKKyAgfQorICBzdGF0aWMgZ2V0U3Rh
dGljVmFsdWUoKSB7CisgICAgcmV0dXJuIHRlc3RWYWx1ZTsKKyAgfQorfTsKKwordmFyIEQgPSBj
bGFzcyBEIGV4dGVuZHMgQyB7CisgIHN0YXRpYyBnZXRQYXJlbnRTdGF0aWNWYWx1ZSgpIHsKKyAg
ICB2YXIgYXJyb3cgID0gKCkgPT4gc3VwZXIuZ2V0U3RhdGljVmFsdWUoKTsKKyAgICByZXR1cm4g
YXJyb3coKTsKKyAgfQorfTsKKwordmFyIEUgPSBjbGFzcyBFIGV4dGVuZHMgQSB7CisgICAgIGNv
bnN0cnVjdG9yKCkgeworICAgICAgICAgc3VwZXIoKTsKKyAgICAgfQorICAgICBnZXQgcHJvcCgp
IHsKKyAgICAgICAgIHZhciBhcnJvdyA9ICgpID0+IHN1cGVyLmdldENvbnN0VmFsdWUoKSArICct
JyArIHRoaXMudmFsdWU7CisgICAgICAgICByZXR1cm4gYXJyb3coKTsKKyAgICAgfQorICAgICBz
ZXQgcHJvcCh2YWx1ZSkgeworICAgICAgICAgdmFyIGFycm93ID0gKG5ld1ZhbCkgPT4gc3VwZXIu
c2V0VmFsdWUobmV3VmFsKTsKKyAgICAgICAgIGFycm93KHZhbHVlKTsKKyAgICAgfQorICAgICBz
ZXRJbml0VmFsdWUoKSB7CisgICAgICAgdGhpcy52YWx1ZSA9IHRlc3RWYWx1ZTsKKyAgICAgfQor
IH07CisKK3ZhciBiID0gbmV3IEIoKTsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7IGkrKykg
eworICAgdGVzdENhc2UoYi5nZXRQYXJlbnRWYWx1ZSgpLCB0ZXN0VmFsdWUsIGkpOworfQorCitm
b3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgIHRlc3RDYXNlKEQuZ2V0UGFyZW50
U3RhdGljVmFsdWUoKSwgdGVzdFZhbHVlLCBpKTsKK30KKwordmFyIGUgPSBuZXcgRSgpOworZm9y
ICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7CisgICBlLnNldEluaXRWYWx1ZSgpOworICAg
dGVzdENhc2UoZS5wcm9wLCB0ZXN0VmFsdWUrJy0nK3Rlc3RWYWx1ZSwgaSk7CisgICBlLnByb3Ag
PSAnbmV3LXRlc3QtdmFsdWUnOworICAgdGVzdENhc2UoZS5wcm9wLCB0ZXN0VmFsdWUrJy1uZXct
dGVzdC12YWx1ZScsIGkpOworfQorCit2YXIgRiAgPSBjbGFzcyBGIGV4dGVuZHMgQSB7CisgIG5l
d01ldGhvZCgpIHsKKyAgICB2YXIgYXJyb3cgID0gKCkgPT4gZXZhbCgnc3VwZXIuZ2V0VmFsdWUo
KScpOworICAgIHZhciByID0gYXJyb3coKTsKKyAgICByZXR1cm4gcjsKKyAgfQorfTsKKwordmFy
IGYgPSBuZXcgRigpOworZm9yICh2YXIgaT0wOyBpIDwgMTAwMDA7IGkrKykgeworICB0cnkgewor
ICAgICB2YXIgcmVzdWx0ID0gZi5uZXdNZXRob2QoKTsKKyAgICAgdGVzdENhc2UocmVzdWx0LCB0
ZXN0VmFsdWUsIGkpOworICAgfSBjYXRjaChlKSB7CisgICAgIGlmICghKGUgaW5zdGFuY2VvZiBT
eW50YXhFcnJvcikpCisgICAgICAgIHRocm93IGU7CisgICB9Cit9CisKK3ZhciBHID0gY2xhc3Mg
RyBleHRlbmRzIEEgeworICAgICBjb25zdHJ1Y3RvcigpIHsKKyAgICAgICAgIHN1cGVyKCk7Cisg
ICAgIH0KKyAgICAgZ2V0IHByb3AoKSB7CisgICAgICAgICB2YXIgYXJyb3cgPSAoKSA9PiAoKSA9
PiBzdXBlci5nZXRDb25zdFZhbHVlKCkgKyAnLScgKyB0aGlzLnZhbHVlOworICAgICAgICAgcmV0
dXJuIGFycm93KCkoKTsKKyAgICAgfQorICAgICBzZXQgcHJvcCh2YWx1ZSkgeworICAgICAgICAg
dmFyIGFycm93ID0gICgpID0+IChuZXdWYWwpID0+IHRoaXMudmFsdWUgPSBuZXdWYWw7CisgICAg
ICAgICBhcnJvdygpKHZhbHVlKTsKKyAgICAgfQorICAgICBzZXRJbml0VmFsdWUoKSB7CisgICAg
ICAgdGhpcy52YWx1ZSA9IHRlc3RWYWx1ZTsKKyAgICAgfQorICAgICBnZXRWYWx1ZUNCKCkgewor
ICAgICAgIHZhciBhcnJvdyAgPSAoKSA9PiBzdXBlci5nZXRWYWx1ZSgpOworICAgICAgIHJldHVy
biBhcnJvdzsKKyAgICAgfQorICAgICBzZXRWYWx1ZUNCKCkgeworICAgICAgIHZhciBhcnJvdyA9
ICAobmV3VmFsKSA9PiB0aGlzLnZhbHVlID0gbmV3VmFsOworICAgICAgIHJldHVybiBhcnJvdzsK
KyAgICAgfQorICAgICBnZXRQYXJlbnRWYWx1ZSgpIHsKKyAgICAgICByZXR1cm4gc3VwZXIuZ2V0
VmFsdWUoKTsKKyAgICAgfQorICAgICBnZXRQYXJlbnRWYWx1ZVdpdGhFcnJvcigpIHsKKyAgICAg
ICB2YXIgZiA9ICBmdW5jdGlvbiAoKSB7CisgICAgICAgICByZXR1cm4gKCkgPT4gc3VwZXIuZ2V0
VmFsdWUoKTsKKyAgICAgICB9OworICAgICAgIHJldHVybiBmKCk7CisgICAgIH0KKyB9OworCisg
dmFyIGcgPSBuZXcgRygpOworIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgeworICAg
IGcuc2V0SW5pdFZhbHVlKCk7CisgICAgdGVzdENhc2UoZy5wcm9wLCB0ZXN0VmFsdWUgKyAnLScg
KyB0ZXN0VmFsdWUsICdFcnJvcjogU29tZSBwcm9ibGVtIHdpdGggdXNpbmcgYXJyb3cgYW5kICJz
dXBlciIgaW5zaWRlIG9mIHRoZSBtZXRob2QnKTsKKyAgICBnLnByb3AgPSAnbmV3LXRlc3QtdmFs
dWUnOworICAgIHRlc3RDYXNlKGcucHJvcCwgdGVzdFZhbHVlICsgJy1uZXctdGVzdC12YWx1ZScs
ICdFcnJvcjogU29tZSBwcm9ibGVtIHdpdGggdXNpbmcgYXJyb3cgYW5kICJzdXBlciIgaW5zaWRl
IG9mIHRoZSBnZXR0ZXIgYW5kIHNldHRlcicpOworIH0KKwordmFyIGcxID0gbmV3IEcoKTsKK2Zv
ciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgeworICBnMS5zZXRJbml0VmFsdWUoKTsKKyAg
bGV0IGdldFZhbHVlID0gZzEuZ2V0VmFsdWVDQigpOworICB0ZXN0Q2FzZShnZXRWYWx1ZSgpLCB0
ZXN0VmFsdWUsICAnRXJyb3I6IFNvbWUgcHJvYmxlbSB3aXRoIHVzaW5nIGFycm93IGFuZCAic3Vw
ZXIiIGluc2lkZSBvZiB0aGUgbWV0aG9kIHRoYXQgcmV0dW4gYXJyb3cgZnVuY3Rpb24nKTsKKyAg
bGV0IHNldFZhbHVlID0gZzEuc2V0VmFsdWVDQigpOworICBzZXRWYWx1ZSgnbmV3LXZhbHVlJyk7
CisgIHRlc3RDYXNlKGdldFZhbHVlKCksICduZXctdmFsdWUnLCAnRXJyb3I6IFNvbWUgcHJvYmxl
bSB3aXRoIHVzaW5nIGFycm93IGFuZCAic3VwZXIiIGluc2lkZSBvZiB0aGUgbWV0aG9kIHRoYXQg
cmV0dW4gYXJyb3cgZnVuY3Rpb24nKTsKK30KKwordmFyIGcyID0gbmV3IEcoKTsKK2ZvciAodmFy
IGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgeworICBsZXQgZXJyb3IgPSBmYWxzZTsKKyAgdHJ5IHsK
KyAgICAgZzIuZ2V0UGFyZW50VmFsdWVXaXRoRXJyb3IoKSgpOworICB9IGNhdGNoKGUpIHsKKy8v
IEZpeG1lOiBzaG91bGQgYnkgY2hlY2sgaWYgZSBpbnN0YW5jZW9mIFN5bnRheEVycm9yIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA4OTMKKyAgICBlcm9yciA9IHRy
dWU7CisgIH0KKyAgdGVzdENhc2UoZXJvcnIsIHRydWUsICdFcnJvcjogdXNpbmcgInN1cGVyIiBz
aG91bGQgbGVhZCB0byBlcnJvcicpOworfQorCisKK3ZhciBIID0gY2xhc3MgSCBleHRlbmRzIEEg
eworICBjb25zdHJ1Y3RvcigpIHsKKyAgICB2YXIgYXJyb3cgPSAoKSA9PiAoKSA9PiBzdXBlci5n
ZXRWYWx1ZSgpOworICAgIHN1cGVyKCk7CisgICAgdGhpcy5uZXdWYWx1ZSAgPSBhcnJvdygpKCk7
CisgIH0KK307CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgeworICBsZXQgaCA9
IG5ldyBIKCk7CisgIHRlc3RDYXNlKGgubmV3VmFsdWUsIHRlc3RWYWx1ZSwgJ0Vycm9yOiBTb21l
IHByb2JsZW0gd2l0aCB1c2luZyAic3VwZXIiIGluc2lkZSBvZiB0aGUgY29uc3RydWN0b3InKTsK
K30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwppbmRleCBjNGI5ZmQ4ZmMwYTcwYjdhN2VmNTljZmExYzhiZmZhMTIwYWVlNjFkLi4xNjdh
ODRhNDIwYWIwYWU4MmVmNGRmMzYzMzc3ZTgyMjNmZTVhMTE3IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQg
QEAKKzIwMTUtMTEtMDQgIFNrYWNoa292IE9sZWtzYW5kciAgPGdza2FjaGtvdkBnbWFpbC5jb20+
CisKKyAgICAgICAgW0VTNl0gQXJyb3cgZnVuY3Rpb24gc3ludGF4LiBBcnJvdyBmdW5jdGlvbiBz
cGVjaWZpYyBmZWF0dXJlcy4gTGV4aWNhbCBiaW5kICJzdXBlciIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0OTYxNQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICoganMvYXJyb3dmdW5jdGlvbi1zdXBlcnBy
b3BlcnR5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvYXJyb3dmdW5jdGlvbi1z
dXBlcnByb3BlcnR5Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9hcnJv
d2Z1bmN0aW9uLXN1cGVycHJvcGVydHkuanM6IEFkZGVkLgorCiAyMDE1LTExLTAyICBTa2FjaGtv
diBPbGVrc2FuZHIgIDxnc2thY2hrb3ZAZ21haWwuY29tPgogCiAgICAgICAgIFtFUzZdIEFycm93
IGZ1bmN0aW9uIGNyZWF0ZWQgYmVmb3JlIHN1cGVyKCkgY2F1c2VzIFREWiwgc2hvdWxkIGl0Pwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1zdXBlcnByb3BlcnR5LWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tc3VwZXJwcm9wZXJ0eS1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTliYjY1YjcyNTU1ZGQ5MTRjOGZlZTYwNGVjMTI5MzA0
YmIxMWFiMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24t
c3VwZXJwcm9wZXJ0eS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNyBAQAorVGVzdHMgZm9yIEVT
NiBhcnJvdyBmdW5jdGlvbiwgYWNjZXNzIHRvIHRoZSBzdXBlciBwcm9wZXJ0eSBpbiBhcnJvdyBm
dW5jdGlvbgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1l
c3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyAobmV3IEIoKSku
Z2V0VmFsdWVQYXJlbnRGdW5jdGlvbigpIGlzIGV4cGVjdGVkVmFsdWUKK1BBU1MgKG5ldyBDKGZh
bHNlKSkudmFsdWUgaXMgZXhwZWN0ZWRWYWx1ZQorUEFTUyAobmV3IEModHJ1ZSkpLnZhbHVlIGlz
IGV4cGVjdGVkVmFsdWUKK1BBU1MgRS5nZXRQYXJlbnRTdGF0aWNWYWx1ZSgpIGlzIGV4cGVjdGVk
VmFsdWUKK1BBU1MgZi5wcm9wIGlzIGV4cGVjdGVkVmFsdWUgKyAiLSIgKyBleHBlY3RlZFZhbHVl
CitQQVNTIGYucHJvcCBpcyBleHBlY3RlZFZhbHVlICsgIi0iICsgIm5ldy12YWx1ZSIKK1BBU1Mg
KG5ldyBGKCkpLmdldFBhcmVudFZhbHVlKCkgaXMgZXhwZWN0ZWRWYWx1ZQorUEFTUyAobmV3IEYo
KSkuZ2V0UGFyZW50VmFsdWVXaXRoRXJyb3IoKSgpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6
IHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdzdXBlci5nZXRWYWx1ZScp
LgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tc3VwZXJwcm9wZXJ0eS5odG1s
IGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1zdXBlcnByb3BlcnR5Lmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMDJiNTA1Zjc5OTQ1YjdjYTM5Yzk2Y2M3MTlhY2RjOTVmZjViYTBmZAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tc3VwZXJwcm9wZXJ0eS5odG1s
CkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhU
TUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InNjcmlw
dC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXN1cGVycHJvcGVydHkuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVu
Y3Rpb24tc3VwZXJwcm9wZXJ0eS5qcyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJv
d2Z1bmN0aW9uLXN1cGVycHJvcGVydHkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2YwY2JhMDM3YmU2MzJhZmM3
YTM1MWYwZjk2MTRiYTg1M2MyZjhmZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pz
L3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXN1cGVycHJvcGVydHkuanMKQEAgLTAsMCArMSw5
MiBAQAorZGVzY3JpcHRpb24oJ1Rlc3RzIGZvciBFUzYgYXJyb3cgZnVuY3Rpb24sIGFjY2VzcyB0
byB0aGUgc3VwZXIgcHJvcGVydHkgaW4gYXJyb3cgZnVuY3Rpb24nKTsKKwordmFyIGV4cGVjdGVk
VmFsdWUgID0gJ3Rlc3QtdmFsdWUnOworCit2YXIgQSA9IGNsYXNzIEEgeworICAgIGdldFZhbHVl
ICgpIHsKKyAgICAgIHJldHVybiBleHBlY3RlZFZhbHVlOworICAgIH0KK307CisKK3ZhciBCID0g
Y2xhc3MgQiBleHRlbmRzIEEgeworICBnZXRWYWx1ZVBhcmVudEZ1bmN0aW9uKCkgeworICAgIHZh
ciBhcnJvdyAgPSAoKSA9PiBzdXBlci5nZXRWYWx1ZSgpOworICAgIHJldHVybiBhcnJvdygpOwor
ICB9Cit9OworCit2YXIgQyA9IGNsYXNzIEMgZXh0ZW5kcyBCIHsKKyAgIGNvbnN0cnVjdG9yKGJl
Zm9yZVN1cGVyKSB7CisgICAgIHZhciB2YWx1ZTsKKyAgICAgdmFyIGFycm93ID0gKCkgPT4gc3Vw
ZXIuZ2V0VmFsdWUoKTsKKyAgICAgaWYgKGJlZm9yZVN1cGVyKSB7CisgICAgICAgIHZhbHVlICA9
IGFycm93KCk7CisgICAgICAgIHN1cGVyKCk7CisgICAgIH0gZWxzZSB7CisgICAgICAgIHN1cGVy
KCk7CisgICAgICAgIHZhbHVlICA9IGFycm93KCk7CisgICAgIH0KKyAgICAgdGhpcy52YWx1ZSA9
IHZhbHVlOworICAgfQorfTsKKwordmFyIEQgPSBjbGFzcyBEIHsKKyAgY29uc3RydWN0b3IoKSB7
CisgICAgdGhpcy52YWx1ZSA9IGV4cGVjdGVkVmFsdWU7CisgIH0KKyAgc3RhdGljIGdldFN0YXRp
Y1ZhbHVlKCkgeworICAgIHJldHVybiBleHBlY3RlZFZhbHVlOworICB9Cit9OworCit2YXIgRSA9
IGNsYXNzIEUgZXh0ZW5kcyBEIHsKKyAgc3RhdGljIGdldFBhcmVudFN0YXRpY1ZhbHVlKCkgewor
ICAgIHZhciBhcnJvdyAgPSAoKSA9PiBzdXBlci5nZXRTdGF0aWNWYWx1ZSgpOworICAgIHJldHVy
biBhcnJvdygpOworICB9Cit9OworCit2YXIgRiA9IGNsYXNzIEYgZXh0ZW5kcyBBIHsKKyAgICAg
Y29uc3RydWN0b3IoKSB7CisgICAgICAgc3VwZXIoKTsKKyAgICAgICB0aGlzLnZhbHVlID0gZXhw
ZWN0ZWRWYWx1ZTsKKyAgICAgfQorICAgICBnZXQgcHJvcCgpIHsKKyAgICAgICAgIHZhciBhcnJv
dyA9ICgpID0+IHN1cGVyLmdldFZhbHVlKCkrICctJyArIHRoaXMudmFsdWU7CisgICAgICAgICBy
ZXR1cm4gYXJyb3coKTsKKyAgICAgfQorICAgICBzZXQgcHJvcCh2YWx1ZSkgeworICAgICAgICAg
dmFyIGFycm93ID0gKG5ld1ZhbCkgPT4gdGhpcy52YWx1ZSA9IG5ld1ZhbDsKKyAgICAgICAgIGFy
cm93KHZhbHVlKTsKKyAgICAgfQorICAgICBnZXRQYXJlbnRWYWx1ZSgpIHsKKyAgICAgICBsZXQg
YXJyb3cgPSAoKSA9PiAoKSA9PiBzdXBlci5nZXRWYWx1ZSgpOworICAgICAgIHJldHVybiBhcnJv
dygpKCk7CisgICAgIH0KKyAgICAgZ2V0UGFyZW50VmFsdWVXaXRoRXJyb3IoKSB7CisgICAgICAg
dmFyIGYgPSAgZnVuY3Rpb24gKCkgeworICAgICAgICAgcmV0dXJuICgpID0+IHN1cGVyLmdldFZh
bHVlKCk7CisgICAgICAgfTsKKyAgICAgICByZXR1cm4gZigpOworICAgICB9CisgfTsKKworc2hv
dWxkQmUoJyhuZXcgQigpKS5nZXRWYWx1ZVBhcmVudEZ1bmN0aW9uKCknLCAnZXhwZWN0ZWRWYWx1
ZScpOworCitzaG91bGRCZSgnKG5ldyBDKGZhbHNlKSkudmFsdWUnLCAnZXhwZWN0ZWRWYWx1ZScp
Oworc2hvdWxkQmUoJyhuZXcgQyh0cnVlKSkudmFsdWUnLCAnZXhwZWN0ZWRWYWx1ZScpOworCitz
aG91bGRCZSgnRS5nZXRQYXJlbnRTdGF0aWNWYWx1ZSgpJywgJ2V4cGVjdGVkVmFsdWUnKTsKKwor
dmFyIGYgPSBuZXcgRigpOworCitzaG91bGRCZSgnZi5wcm9wJywgJ2V4cGVjdGVkVmFsdWUgKyAi
LSIgKyBleHBlY3RlZFZhbHVlJyk7CisKK2YucHJvcCA9ICduZXctdmFsdWUnOworc2hvdWxkQmUo
J2YucHJvcCcsICdleHBlY3RlZFZhbHVlICsgIi0iICsgIm5ldy12YWx1ZSInKTsKKworc2hvdWxk
QmUoJyhuZXcgRigpKS5nZXRQYXJlbnRWYWx1ZSgpJywgJ2V4cGVjdGVkVmFsdWUnKTsKKworc2hv
dWxkVGhyb3coJyhuZXcgRigpKS5nZXRQYXJlbnRWYWx1ZVdpdGhFcnJvcigpKCknKTsKKwordmFy
IHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267097</attachid>
            <date>2015-12-10 05:51:28 -0800</date>
            <delta_ts>2015-12-10 06:39:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-149615-20151210155055.patch</filename>
            <type>text/plain</type>
            <size>56626</size>
            <attacher name="GSkachkov">gskachkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkzODMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
OWE1YjA0ZTA5OWUxOTE4YmEyZDNlYWIwMDVlOGE0NjQwY2NiNGI1Li4wYTNhZTE1ZGQyYjk1OTA0
ODU4ZDFhNTQzNTQzOWIzOGE3M2UwZDc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2NCBAQAorMjAxNS0xMi0xMCAgQWxla3NhbmRyIFNrYWNoa292ICA8Z3NrYWNoa292QGdt
YWlsLmNvbT4KKworICAgICAgICBbRVM2XSBBcnJvdyBmdW5jdGlvbiBzeW50YXguIEFycm93IGZ1
bmN0aW9uIHNwZWNpZmljIGZlYXR1cmVzLiBMZXhpY2FsIGJpbmQgInN1cGVyIgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5NjE1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50ZWQgbGV4aWNh
bCBiaW5kICJzdXBlciIgcHJvcGVydHkgZm9yIGFycm93IGZ1bmN0aW9uLiAnc3VwZXInIHByb3Bl
cnR5IGNhbiBiZSBhY2Nlc3NlZCAKKyAgICAgICAgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlv
biBpbiBjYXNlIGlmIGFycm93IGZ1bmN0aW9uIGlzIG5lc3RlZCBpbiBtZXRob2QsIAorICAgICAg
ICBnZXR0ZXIgb3Igc2V0dGVyIG9mIGNsYXNzLiBJbiBjdXJyZW50IHBhdGNoIHVzaW5nICdzdXBl
cicgaW4gYXJyb3cgZnVuY3Rpb24sIHRoYXQgZGVjbGFyZWQgb3V0IG9mIHRoZSAKKyAgICAgICAg
Y2xhc3MsIGxlYWQgdG8gd3JvbmcgdHlwZSBvZiBlcnJvciwgc2hvdWxkIGJlIFN5bnRheEVycm9y
IGFuZCB0aGlzIHdpbGwgYmUgZml4ZWQgaW4gc2VwYXJldGUgcGF0Y2guCisKKyAgICAgICAgKiBi
dWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwOgorICAgICAgICAoSlNDOjpjcmVhdGVFeGVj
dXRhYmxlSW50ZXJuYWwpOgorICAgICAgICAqIGJ5dGVjb2RlL0V2YWxDb2RlQ2FjaGUuaDoKKyAg
ICAgICAgKEpTQzo6RXZhbENvZGVDYWNoZTo6Z2V0U2xvdyk6CisgICAgICAgICogYnl0ZWNvZGUv
RXhlY3V0YWJsZUluZm8uaDoKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUluZm86OkV4ZWN1dGFi
bGVJbmZvKToKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUluZm86OmRlcml2ZWRDb250ZXh0VHlw
ZSk6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVJbmZvOjppc0NsYXNzQ29udGV4dCk6CisgICAg
ICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpVbmxp
bmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2spOgorICAgICAgICAqIGJ5dGVjb2RlL1Vu
bGlua2VkQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpkZXJp
dmVkQ29udGV4dFR5cGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6aXNDbGFz
c0NvbnRleHQpOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
LmNwcDoKKyAgICAgICAgKEpTQzo6Z2VuZXJhdGVVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKToK
KyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZS5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0RGVyaXZlZENvbnN0cnVjdG9yVG9B
cnJvd0Z1bmN0aW9uQ29udGV4dFNjb3BlKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmRlcml2ZWRD
b250ZXh0VHlwZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjppc0Rlcml2ZWRD
b25zdHJ1Y3RvckNvbnRleHQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6aXNE
ZXJpdmVkQ2xhc3NDb250ZXh0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6Omlz
QXJyb3dGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjptYWtlRnVu
Y3Rpb24pOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAg
ICAoSlNDOjplbWl0SG9tZU9iamVjdEZvckNhbGxlZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9u
Q2FsbFZhbHVlTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dl
ckNhbGxGcmFtZS5jcHA6CisgICAgICAgIChKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lOjpldmFsdWF0
ZSk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlND
OjpldmFsKToKKyAgICAgICAgKiBydW50aW1lL0NvZGVDYWNoZS5jcHA6CisgICAgICAgIChKU0M6
OkNvZGVDYWNoZTo6Z2V0RnVuY3Rpb25FeGVjdXRhYmxlRnJvbUdsb2JhbENvZGUpOgorICAgICAg
ICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OlNjcmlwdEV4ZWN1dGFi
bGU6OlNjcmlwdEV4ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpFdmFsRXhlY3V0YWJsZTo6Y3Jl
YXRlKToKKyAgICAgICAgKEpTQzo6RXZhbEV4ZWN1dGFibGU6OkV2YWxFeGVjdXRhYmxlKToKKyAg
ICAgICAgKEpTQzo6UHJvZ3JhbUV4ZWN1dGFibGU6OlByb2dyYW1FeGVjdXRhYmxlKToKKyAgICAg
ICAgKEpTQzo6TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU6Ok1vZHVsZVByb2dyYW1FeGVjdXRhYmxl
KToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpGdW5jdGlvbkV4ZWN1dGFibGUp
OgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5oOgorICAgICAgICAoSlNDOjpTY3JpcHRF
eGVjdXRhYmxlOjpkZXJpdmVkQ29udGV4dFR5cGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9i
YWxPYmplY3RGdW5jdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpnbG9iYWxGdW5jRXZhbCk6Cisg
ICAgICAgICogdGVzdHMvZXM2LnlhbWw6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVu
Y3Rpb24tbGV4aWNhbC1iaW5kLXN1cGVycHJvcGVydHkuanM6IEFkZGVkLgorCiAyMDE1LTEyLTA1
IEFsZWtzYW5kciBTa2FjaGtvdiAgIDxnc2thY2hrb3ZAZ21haWwuY29tPgogCiAgICAgICAgIFtF
UzZdICJzdXBlciIgYW5kICJ0aGlzIiBzaG91bGQgYmUgbGV4aWNhbGx5IGJvdW5kIGluc2lkZSBh
biBhcnJvdyBmdW5jdGlvbiBhbmQgc2hvdWxkIGxpdmUgaW4gYSBKU0xleGljYWxFbnZpcm9ubWVu
dApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVj
dXRhYmxlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1
dGFibGVzLmNwcAppbmRleCBiODAwZjUxM2U5ZmFhYTU0YTI0MmQ1ZTEyNDM3ZjUwYzdmOWQ1NmQ4
Li5hNmJjZjc0NDM2ZmY5YzgyZTM5OTQ2ZWFmYTk0Y2UwMTM3MzFjYjcyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcApA
QCAtMTE1LDcgKzExNSw3IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGVFeGVj
dXRhYmxlSW50ZXJuYWwoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzCiAgICAgfQogICAgIG1l
dGFkYXRhLT5vdmVycmlkZU5hbWUobmFtZSk7CiAgICAgVmFyaWFibGVFbnZpcm9ubWVudCBkdW1t
eVREWlZhcmlhYmxlczsKLSAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25F
eGVjdXRhYmxlID0gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSgmdm0sIHNvdXJj
ZSwgbWV0YWRhdGEsIGtpbmQsIGNvbnN0cnVjdEFiaWxpdHksIEdlbmVyYXRvclRoaXNNb2RlOjpO
b25FbXB0eSwgZHVtbXlURFpWYXJpYWJsZXMsIGZhbHNlLCBXVEY6Om1vdmUoc291cmNlT3ZlcnJp
ZGUpKTsKKyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxl
ID0gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSgmdm0sIHNvdXJjZSwgbWV0YWRh
dGEsIGtpbmQsIGNvbnN0cnVjdEFiaWxpdHksIEdlbmVyYXRvclRoaXNNb2RlOjpOb25FbXB0eSwg
ZHVtbXlURFpWYXJpYWJsZXMsIERlcml2ZWRDb250ZXh0VHlwZTo6Tm9uZSwgV1RGOjptb3ZlKHNv
dXJjZU92ZXJyaWRlKSk7CiAgICAgZnVuY3Rpb25FeGVjdXRhYmxlLT5zZXROYW1lVmFsdWUodm0s
IGpzU3RyaW5nKCZ2bSwgbmFtZS5zdHJpbmcoKSkpOwogICAgIHJldHVybiBmdW5jdGlvbkV4ZWN1
dGFibGU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXZh
bENvZGVDYWNoZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V2YWxDb2RlQ2Fj
aGUuaAppbmRleCA4NjkxMzE2OTJhOTM0YTc1YTY0M2NlNTVmOWUwZDk3N2E4NWFjMTBhLi42NjM0
OTBhZmI0NTI0NWMzNmZmMDVkNDdlZjg4MTNkYTVhNTlmNTAwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXZhbENvZGVDYWNoZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9FdmFsQ29kZUNhY2hlLmgKQEAgLTU1LDExICs1NSwxMSBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9CiAg
ICAgICAgIAotICAgICAgICBFdmFsRXhlY3V0YWJsZSogZ2V0U2xvdyhFeGVjU3RhdGUqIGV4ZWMs
IEpTQ2VsbCogb3duZXIsIGJvb2wgaW5TdHJpY3RDb250ZXh0LCBUaGlzVERaTW9kZSB0aGlzVERa
TW9kZSwgYm9vbCBpc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQsIGJvb2wgaXNBcnJvd0Z1bmN0
aW9uQ29udGV4dCwgY29uc3QgU291cmNlQ29kZSYgZXZhbFNvdXJjZSwgSlNTY29wZSogc2NvcGUp
CisgICAgICAgIEV2YWxFeGVjdXRhYmxlKiBnZXRTbG93KEV4ZWNTdGF0ZSogZXhlYywgSlNDZWxs
KiBvd25lciwgYm9vbCBpblN0cmljdENvbnRleHQsIFRoaXNURFpNb2RlIHRoaXNURFpNb2RlLCBE
ZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzQXJyb3dGdW5jdGlv
bkNvbnRleHQsIGNvbnN0IFNvdXJjZUNvZGUmIGV2YWxTb3VyY2UsIEpTU2NvcGUqIHNjb3BlKQog
ICAgICAgICB7CiAgICAgICAgICAgICBWYXJpYWJsZUVudmlyb25tZW50IHZhcmlhYmxlc1VuZGVy
VERaOwogICAgICAgICAgICAgSlNTY29wZTo6Y29sbGVjdFZhcmlhYmxlc1VuZGVyVERaKHNjb3Bl
LCB2YXJpYWJsZXNVbmRlclREWik7Ci0gICAgICAgICAgICBFdmFsRXhlY3V0YWJsZSogZXZhbEV4
ZWN1dGFibGUgPSBFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKGV4ZWMsIGV2YWxTb3VyY2UsIGluU3Ry
aWN0Q29udGV4dCwgdGhpc1REWk1vZGUsIGlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCwgaXNB
cnJvd0Z1bmN0aW9uQ29udGV4dCwgJnZhcmlhYmxlc1VuZGVyVERaKTsKKyAgICAgICAgICAgIEV2
YWxFeGVjdXRhYmxlKiBldmFsRXhlY3V0YWJsZSA9IEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoZXhl
YywgZXZhbFNvdXJjZSwgaW5TdHJpY3RDb250ZXh0LCB0aGlzVERaTW9kZSwgZGVyaXZlZENvbnRl
eHRUeXBlLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCAmdmFyaWFibGVzVW5kZXJURFopOwogCiAg
ICAgICAgICAgICBpZiAoIWV2YWxFeGVjdXRhYmxlKQogICAgICAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1
dGFibGVJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUlu
Zm8uaAppbmRleCBhYWMzOTA0ZmYwMzRjOWU2MDcxNGZlOTkzNjU0OWZlOTVkNGExMWU1Li4zMTFj
MzFjNmQ4YjY0MjMzNzBhOTNmNzBkMGRjNjZjZjg1NzBiYjA5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaApAQCAtMzAsMTEgKzMwLDEzIEBA
CiAjaW5jbHVkZSAiUGFyc2VyTW9kZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CisgICAgCitlbnVt
IGNsYXNzIERlcml2ZWRDb250ZXh0VHlwZSB7IE5vbmUsIERlcml2ZWRDb25zdHJ1Y3RvckNvbnRl
eHQsIERlcml2ZWRNZXRob2RDb250ZXh0IH07CiAKIC8vIEZJWE1FOiBUaGVzZSBmbGFncywgUGFy
c2VyTW9kZXMgYW5kIHByb3BhZ2F0aW9uIHRvIFhYWENvZGVCbG9ja3Mgc2hvdWxkIGJlIHJlb3Jn
YW5pemVkLgogLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTU0
Nwogc3RydWN0IEV4ZWN1dGFibGVJbmZvIHsKLSAgICBFeGVjdXRhYmxlSW5mbyhib29sIG5lZWRz
QWN0aXZhdGlvbiwgYm9vbCB1c2VzRXZhbCwgYm9vbCBpc1N0cmljdE1vZGUsIGJvb2wgaXNDb25z
dHJ1Y3RvciwgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbiwgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVj
dG9yS2luZCwgR2VuZXJhdG9yVGhpc01vZGUgZ2VuZXJhdG9yVGhpc01vZGUsIFN1cGVyQmluZGlu
ZyBzdXBlckJpbmRpbmcsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUsIGJvb2wgaXNEZXJpdmVk
Q29uc3RydWN0b3JDb250ZXh0LCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQpCisgICAgRXhl
Y3V0YWJsZUluZm8oYm9vbCBuZWVkc0FjdGl2YXRpb24sIGJvb2wgdXNlc0V2YWwsIGJvb2wgaXNT
dHJpY3RNb2RlLCBib29sIGlzQ29uc3RydWN0b3IsIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24sIENv
bnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIEdlbmVyYXRvclRoaXNNb2RlIGdlbmVyYXRv
clRoaXNNb2RlLCBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nLCBTb3VyY2VQYXJzZU1vZGUgcGFy
c2VNb2RlLCBEZXJpdmVkQ29udGV4dFR5cGUgX2Rlcml2ZWRDb250ZXh0VHlwZSwgYm9vbCBfaXNB
cnJvd0Z1bmN0aW9uQ29udGV4dCwgYm9vbCBpc0NsYXNzQ29udGV4dCkKICAgICAgICAgOiBtX25l
ZWRzQWN0aXZhdGlvbihuZWVkc0FjdGl2YXRpb24pCiAgICAgICAgICwgbV91c2VzRXZhbCh1c2Vz
RXZhbCkKICAgICAgICAgLCBtX2lzU3RyaWN0TW9kZShpc1N0cmljdE1vZGUpCkBAIC00NCw4ICs0
Niw5IEBAIHN0cnVjdCBFeGVjdXRhYmxlSW5mbyB7CiAgICAgICAgICwgbV9jb25zdHJ1Y3Rvcktp
bmQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvbnN0cnVjdG9yS2luZCkpCiAgICAgICAgICwgbV9z
dXBlckJpbmRpbmcoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN1cGVyQmluZGluZykpCiAgICAgICAg
ICwgbV9wYXJzZU1vZGUocGFyc2VNb2RlKQotICAgICAgICAsIG1faXNEZXJpdmVkQ29uc3RydWN0
b3JDb250ZXh0KGlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCkKLSAgICAgICAgLCBtX2lzQXJy
b3dGdW5jdGlvbkNvbnRleHQoaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCkKKyAgICAgICAgLCBtX2Rl
cml2ZWRDb250ZXh0VHlwZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oX2Rlcml2ZWRDb250ZXh0VHlw
ZSkpCisgICAgICAgICwgbV9pc0Fycm93RnVuY3Rpb25Db250ZXh0KF9pc0Fycm93RnVuY3Rpb25D
b250ZXh0KQorICAgICAgICAsIG1faXNDbGFzc0NvbnRleHQoaXNDbGFzc0NvbnRleHQpCiAgICAg
ewogICAgICAgICBBU1NFUlQobV9jb25zdHJ1Y3RvcktpbmQgPT0gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KGNvbnN0cnVjdG9yS2luZCkpOwogICAgICAgICBBU1NFUlQobV9zdXBlckJpbmRpbmcgPT0g
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN1cGVyQmluZGluZykpOwpAQCAtNjEsOCArNjQsOSBAQCBz
dHJ1Y3QgRXhlY3V0YWJsZUluZm8gewogICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3Rvcktp
bmQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb25zdHJ1Y3RvcktpbmQ+KG1fY29uc3Ry
dWN0b3JLaW5kKTsgfQogICAgIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcoKSBjb25zdCB7IHJl
dHVybiBzdGF0aWNfY2FzdDxTdXBlckJpbmRpbmc+KG1fc3VwZXJCaW5kaW5nKTsgfQogICAgIFNv
dXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUoKSBjb25zdCB7IHJldHVybiBtX3BhcnNlTW9kZTsgfQot
ICAgIGJvb2wgaXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9p
c0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQ7IH0KKyAgICBEZXJpdmVkQ29udGV4dFR5cGUgZGVy
aXZlZENvbnRleHRUeXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RGVyaXZlZENvbnRl
eHRUeXBlPihtX2Rlcml2ZWRDb250ZXh0VHlwZSk7IH0KICAgICBib29sIGlzQXJyb3dGdW5jdGlv
bkNvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2lzQXJyb3dGdW5jdGlvbkNvbnRleHQ7IH0KKyAg
ICBib29sIGlzQ2xhc3NDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9pc0NsYXNzQ29udGV4dDsg
fQogCiBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fbmVlZHNBY3RpdmF0aW9uIDogMTsKQEAgLTc0
LDggKzc4LDkgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX2NvbnN0cnVjdG9yS2luZCA6IDI7
CiAgICAgdW5zaWduZWQgbV9zdXBlckJpbmRpbmcgOiAxOwogICAgIFNvdXJjZVBhcnNlTW9kZSBt
X3BhcnNlTW9kZTsKLSAgICB1bnNpZ25lZCBtX2lzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCA6
IDE7CisgICAgdW5zaWduZWQgbV9kZXJpdmVkQ29udGV4dFR5cGUgOiAyOwogICAgIHVuc2lnbmVk
IG1faXNBcnJvd0Z1bmN0aW9uQ29udGV4dCA6IDE7CisgICAgdW5zaWduZWQgbV9pc0NsYXNzQ29u
dGV4dCA6IDE7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCmluZGV4IDhhN2QwMjY3
OTNkNDZiODI1ZmJmM2VmNzY1MmE1NDM4Mzk2NTA0NjMuLjUyZmMzYTcxNzFlMGEyZWMxNzdiODZk
OTc2NDMxZjNhOTdlODQ1ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcApAQCAtNjcsOCArNjcsOSBAQCBVbmxpbmtlZENv
ZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2soVk0qIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
Q29kZVR5cGUgY29kZQogICAgICwgbV9jb25zdHJ1Y3RvcktpbmQoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KGluZm8uY29uc3RydWN0b3JLaW5kKCkpKQogICAgICwgbV9nZW5lcmF0b3JUaGlzTW9kZShz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5mby5nZW5lcmF0b3JUaGlzTW9kZSgpKSkKICAgICAsIG1f
c3VwZXJCaW5kaW5nKHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbmZvLnN1cGVyQmluZGluZygpKSkK
LSAgICAsIG1faXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KGluZm8uaXNEZXJpdmVkQ29uc3Ry
dWN0b3JDb250ZXh0KCkpCisgICAgLCBtX2Rlcml2ZWRDb250ZXh0VHlwZShzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oaW5mby5kZXJpdmVkQ29udGV4dFR5cGUoKSkpCiAgICAgLCBtX2lzQXJyb3dGdW5j
dGlvbkNvbnRleHQoaW5mby5pc0Fycm93RnVuY3Rpb25Db250ZXh0KCkpCisgICAgLCBtX2lzQ2xh
c3NDb250ZXh0KGluZm8uaXNDbGFzc0NvbnRleHQoKSkKICAgICAsIG1fZmlyc3RMaW5lKDApCiAg
ICAgLCBtX2xpbmVDb3VudCgwKQogICAgICwgbV9lbmRDb2x1bW4oVUlOVF9NQVgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCmluZGV4
IGJlYzZlMDg2MTFkYzVmMDk0Zjc5YWI4NWMxMzM1YTkxMWI5ZjkxMWIuLjEyYmE0M2FlZWY0NWU3
OWFlM2QwZmNjNWQwMmUyMTViNTg2OWFjMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCkBAIC0xMjAsOCArMTIwLDkgQEAgcHVi
bGljOgogICAgIGJvb2wgdXNlc0V2YWwoKSBjb25zdCB7IHJldHVybiBtX3VzZXNFdmFsOyB9CiAg
ICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyc2VNb2Rl
OyB9CiAgICAgYm9vbCBpc0Fycm93RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3BhcnNlTW9k
ZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlOyB9Ci0gICAgYm9vbCBpc0Rl
cml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2lzRGVyaXZlZENvbnN0
cnVjdG9yQ29udGV4dDsgfQorICAgIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5
cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxEZXJpdmVkQ29udGV4dFR5cGU+KG1fZGVy
aXZlZENvbnRleHRUeXBlKTsgfQogICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCgpIGNv
bnN0IHsgcmV0dXJuIG1faXNBcnJvd0Z1bmN0aW9uQ29udGV4dDsgfQorICAgIGJvb2wgaXNDbGFz
c0NvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2lzQ2xhc3NDb250ZXh0OyB9CiAKICAgICBib29s
IG5lZWRzRnVsbFNjb3BlQ2hhaW4oKSBjb25zdCB7IHJldHVybiBtX25lZWRzRnVsbFNjb3BlQ2hh
aW47IH0KIApAQCAtMzk2LDkgKzM5Nyw5IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9jb25z
dHJ1Y3RvcktpbmQgOiAyOwogICAgIHVuc2lnbmVkIG1fZ2VuZXJhdG9yVGhpc01vZGUgOiAxOwog
ICAgIHVuc2lnbmVkIG1fc3VwZXJCaW5kaW5nIDogMTsKLSAgICB1bnNpZ25lZCBtX2lzRGVyaXZl
ZENvbnN0cnVjdG9yQ29udGV4dCA6IDE7CisgICAgdW5zaWduZWQgbV9kZXJpdmVkQ29udGV4dFR5
cGUgOiAyOwogICAgIHVuc2lnbmVkIG1faXNBcnJvd0Z1bmN0aW9uQ29udGV4dCA6IDE7Ci0KKyAg
ICB1bnNpZ25lZCBtX2lzQ2xhc3NDb250ZXh0IDogMTsKICAgICB1bnNpZ25lZCBtX2ZpcnN0TGlu
ZTsKICAgICB1bnNpZ25lZCBtX2xpbmVDb3VudDsKICAgICB1bnNpZ25lZCBtX2VuZENvbHVtbjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCmluZGV4IDBjN2Y0NTI3MWEyNzYyMjA2Mjk4NTJiMDYw
ZjVlN2ZiMDZiNmMwNGIuLmJjZTk1MDdlMmNlYTRmMTZkM2M2YmRkMWNjODFlMTI3ZmI3MmFlMjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcApAQCAtNjUsOSArNjUsMTIgQEAgc3RhdGljIFVu
bGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGdlbmVyYXRlVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9j
aygKIAogICAgIGZ1bmN0aW9uLT5maW5pc2hQYXJzaW5nKGV4ZWN1dGFibGUtPm5hbWUoKSwgZXhl
Y3V0YWJsZS0+ZnVuY3Rpb25Nb2RlKCkpOwogICAgIGV4ZWN1dGFibGUtPnJlY29yZFBhcnNlKGZ1
bmN0aW9uLT5mZWF0dXJlcygpLCBmdW5jdGlvbi0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSk7Ci0g
ICAgCisKKyAgICAvLyBtZXRob2QsIGdldHRlciAmIHNldHRlciBhcmUgcGFydCBvZiB0aGUgY2xh
c3MsIHNvIHRoaXMgZnVuY3Rpb25Db2RlQmxvY2sgaXMgcGFydCBvZiB0aGUgY2xhc3MKKyAgICBi
b29sIGlzQ2xhc3NDb250ZXh0ID0gZXhlY3V0YWJsZS0+cGFyc2VNb2RlKCkgPT0gU291cmNlUGFy
c2VNb2RlOjpNZXRob2RNb2RlIHx8IGV4ZWN1dGFibGUtPnBhcnNlTW9kZSgpID09IFNvdXJjZVBh
cnNlTW9kZTo6R2V0dGVyTW9kZSB8fCBleGVjdXRhYmxlLT5wYXJzZU1vZGUoKSA9PSBTb3VyY2VQ
YXJzZU1vZGU6OlNldHRlck1vZGU7CisKICAgICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBy
ZXN1bHQgPSBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrOjpjcmVhdGUoJnZtLCBGdW5jdGlvbkNv
ZGUsCi0gICAgICAgIEV4ZWN1dGFibGVJbmZvKGZ1bmN0aW9uLT5uZWVkc0FjdGl2YXRpb24oKSwg
ZnVuY3Rpb24tPnVzZXNFdmFsKCksIGZ1bmN0aW9uLT5pc1N0cmljdE1vZGUoKSwga2luZCA9PSBD
b2RlRm9yQ29uc3RydWN0LCBmdW5jdGlvbktpbmQgPT0gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24s
IGV4ZWN1dGFibGUtPmNvbnN0cnVjdG9yS2luZCgpLCBleGVjdXRhYmxlLT5nZW5lcmF0b3JUaGlz
TW9kZSgpLCBleGVjdXRhYmxlLT5zdXBlckJpbmRpbmcoKSwgcGFyc2VNb2RlLCAgZXhlY3V0YWJs
ZS0+aXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KCksIGZhbHNlKSk7CisgICAgICAgIEV4ZWN1
dGFibGVJbmZvKGZ1bmN0aW9uLT5uZWVkc0FjdGl2YXRpb24oKSwgZnVuY3Rpb24tPnVzZXNFdmFs
KCksIGZ1bmN0aW9uLT5pc1N0cmljdE1vZGUoKSwga2luZCA9PSBDb2RlRm9yQ29uc3RydWN0LCBm
dW5jdGlvbktpbmQgPT0gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24sIGV4ZWN1dGFibGUtPmNvbnN0
cnVjdG9yS2luZCgpLCBleGVjdXRhYmxlLT5nZW5lcmF0b3JUaGlzTW9kZSgpLCBleGVjdXRhYmxl
LT5zdXBlckJpbmRpbmcoKSwgcGFyc2VNb2RlLCBleGVjdXRhYmxlLT5kZXJpdmVkQ29udGV4dFR5
cGUoKSwgZmFsc2UsIGlzQ2xhc3NDb250ZXh0KSk7CiAKICAgICBhdXRvIGdlbmVyYXRvcihzdGQ6
Om1ha2VfdW5pcXVlPEJ5dGVjb2RlR2VuZXJhdG9yPih2bSwgZnVuY3Rpb24uZ2V0KCksIHJlc3Vs
dCwgZGVidWdnZXJNb2RlLCBwcm9maWxlck1vZGUsIGV4ZWN1dGFibGUtPnBhcmVudFNjb3BlVERa
VmFyaWFibGVzKCkpKTsKICAgICBlcnJvciA9IGdlbmVyYXRvci0+Z2VuZXJhdGUoKTsKQEAgLTc2
LDcgKzc5LDcgQEAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGdlbmVyYXRlVW5s
aW5rZWRGdW5jdGlvbkNvZGVCbG9jaygKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1Vbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0qIHZtLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBSZWZQdHI8U291
cmNlUHJvdmlkZXI+JiYgc291cmNlT3ZlcnJpZGUsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBub2Rl
LCBVbmxpbmtlZEZ1bmN0aW9uS2luZCBraW5kLCBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFi
aWxpdHksIEdlbmVyYXRvclRoaXNNb2RlIGdlbmVyYXRvclRoaXNNb2RlLCBWYXJpYWJsZUVudmly
b25tZW50JiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgYm9vbCBpc0Rlcml2ZWRDb25zdHJ1Y3Rv
ckNvbnRleHQpCitVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUoVk0qIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgU291cmNlQ29kZSYg
c291cmNlLCBSZWZQdHI8U291cmNlUHJvdmlkZXI+JiYgc291cmNlT3ZlcnJpZGUsIEZ1bmN0aW9u
TWV0YWRhdGFOb2RlKiBub2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCBraW5kLCBDb25zdHJ1Y3RB
YmlsaXR5IGNvbnN0cnVjdEFiaWxpdHksIEdlbmVyYXRvclRoaXNNb2RlIGdlbmVyYXRvclRoaXNN
b2RlLCBWYXJpYWJsZUVudmlyb25tZW50JiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgRGVyaXZl
ZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSkKICAgICA6IEJhc2UoKnZtLCBzdHJ1Y3R1
cmUpCiAgICAgLCBtX25hbWUobm9kZS0+aWRlbnQoKSkKICAgICAsIG1faW5mZXJyZWROYW1lKG5v
ZGUtPmluZmVycmVkTmFtZSgpKQpAQCAtMTAyLDcgKzEwNSw3IEBAIFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSogdm0sIFN0cnVjdHVyZSog
c3RydWN0CiAgICAgLCBtX2Z1bmN0aW9uTW9kZShub2RlLT5mdW5jdGlvbk1vZGUoKSkKICAgICAs
IG1fZ2VuZXJhdG9yVGhpc01vZGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGdlbmVyYXRvclRoaXNN
b2RlKSkKICAgICAsIG1fc3VwZXJCaW5kaW5nKHN0YXRpY19jYXN0PHVuc2lnbmVkPihub2RlLT5z
dXBlckJpbmRpbmcoKSkpCi0gICAgLCBtX2lzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dChpc0Rl
cml2ZWRDb25zdHJ1Y3RvckNvbnRleHQpCisgICAgLCBtX2Rlcml2ZWRDb250ZXh0VHlwZShzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oZGVyaXZlZENvbnRleHRUeXBlKSkKIHsKICAgICBBU1NFUlQobV9j
b25zdHJ1Y3RvcktpbmQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG5vZGUtPmNvbnN0cnVjdG9y
S2luZCgpKSk7CiAgICAgbV9wYXJlbnRTY29wZVREWlZhcmlhYmxlcy5zd2FwKHBhcmVudFNjb3Bl
VERaVmFyaWFibGVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgKaW5kZXggZmEyMWUzODcwMDcxYmMx
YTAwZmNhNTVmMjk5NGM1YTdjOWRhZWIwZS4uZDhiZDg3Yjk3ODNiN2U0NGM3MzhjNjBiYmMyYzRk
ZmEwYjAwMjAzNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNp
bmNsdWRlICJDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmgiCiAjaW5jbHVkZSAiQ29kZVR5cGUuaCIK
ICNpbmNsdWRlICJDb25zdHJ1Y3RBYmlsaXR5LmgiCisjaW5jbHVkZSAiRXhlY3V0YWJsZUluZm8u
aCIKICNpbmNsdWRlICJFeHByZXNzaW9uUmFuZ2VJbmZvLmgiCiAjaW5jbHVkZSAiR2VuZXJhdG9y
VGhpc01vZGUuaCIKICNpbmNsdWRlICJIYW5kbGVySW5mby5oIgpAQCAtNjYsMTAgKzY3LDEwIEBA
IHB1YmxpYzoKICAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwogICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgU3RydWN0dXJlSXNJ
bW1vcnRhbDsKIAotICAgIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRl
KFZNKiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSog
bm9kZSwgVW5saW5rZWRGdW5jdGlvbktpbmQgdW5saW5rZWRGdW5jdGlvbktpbmQsIENvbnN0cnVj
dEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSwgR2VuZXJhdG9yVGhpc01vZGUgZ2VuZXJhdG9yVGhp
c01vZGUsIFZhcmlhYmxlRW52aXJvbm1lbnQmIHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBib29s
IGlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCwgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiYmIHNv
dXJjZU92ZXJyaWRlID0gbnVsbHB0cikKKyAgICBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGUqIGNyZWF0ZShWTSogdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVuY3Rpb25N
ZXRhZGF0YU5vZGUqIG5vZGUsIFVubGlua2VkRnVuY3Rpb25LaW5kIHVubGlua2VkRnVuY3Rpb25L
aW5kLCBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHksIEdlbmVyYXRvclRoaXNNb2Rl
IGdlbmVyYXRvclRoaXNNb2RlLCBWYXJpYWJsZUVudmlyb25tZW50JiBwYXJlbnRTY29wZVREWlZh
cmlhYmxlcywgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgUmVmUHRyPFNv
dXJjZVByb3ZpZGVyPiYmIHNvdXJjZU92ZXJyaWRlID0gbnVsbHB0cikKICAgICB7CiAgICAgICAg
IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxs
b2NhdGVDZWxsPFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlPih2bS0+aGVhcCkpCi0gICAgICAg
ICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSh2bSwgdm0tPnVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlU3RydWN0dXJlLmdldCgpLCBzb3VyY2UsIFdURjo6bW92ZShzb3VyY2VPdmVycmlk
ZSksIG5vZGUsIHVubGlua2VkRnVuY3Rpb25LaW5kLCBjb25zdHJ1Y3RBYmlsaXR5LCBnZW5lcmF0
b3JUaGlzTW9kZSwgcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIGlzRGVyaXZlZENvbnN0cnVjdG9y
Q29udGV4dCk7CisgICAgICAgICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSh2bSwgdm0t
PnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3RydWN0dXJlLmdldCgpLCBzb3VyY2UsIFdURjo6
bW92ZShzb3VyY2VPdmVycmlkZSksIG5vZGUsIHVubGlua2VkRnVuY3Rpb25LaW5kLCBjb25zdHJ1
Y3RBYmlsaXR5LCBnZW5lcmF0b3JUaGlzTW9kZSwgcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIGRl
cml2ZWRDb250ZXh0VHlwZSk7CiAgICAgICAgIGluc3RhbmNlLT5maW5pc2hDcmVhdGlvbigqdm0p
OwogICAgICAgICByZXR1cm4gaW5zdGFuY2U7CiAgICAgfQpAQCAtMTMwLDExICsxMzEsMTIgQEAg
cHVibGljOgogICAgIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqIHBhcmVudFNjb3BlVERaVmFy
aWFibGVzKCkgY29uc3QgeyByZXR1cm4gJm1fcGFyZW50U2NvcGVURFpWYXJpYWJsZXM7IH0KICAg
ICAKICAgICBib29sIGlzQXJyb3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcGFyc2VNb2Rl
ID09IFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGU7IH0KLSAgICBib29sIGlzRGVy
aXZlZENvbnN0cnVjdG9yQ29udGV4dCgpIGNvbnN0IHtyZXR1cm4gbV9pc0Rlcml2ZWRDb25zdHJ1
Y3RvckNvbnRleHQ7IH0KIAotcHJpdmF0ZToKLSAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZShWTSosIFN0cnVjdHVyZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBSZWZQdHI8U291cmNlUHJvdmlk
ZXI+JiYgc291cmNlT3ZlcnJpZGUsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiwgVW5saW5rZWRGdW5j
dGlvbktpbmQsIENvbnN0cnVjdEFiaWxpdHksIEdlbmVyYXRvclRoaXNNb2RlLCBWYXJpYWJsZUVu
dmlyb25tZW50JiwgYm9vbCBpc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQpOworICAgIEpTQzo6
RGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSgpIGNvbnN0IHtyZXR1cm4gc3Rh
dGljX2Nhc3Q8SlNDOjpEZXJpdmVkQ29udGV4dFR5cGU+KG1fZGVyaXZlZENvbnRleHRUeXBlKTsg
fQogICAgIAorcHJpdmF0ZToKKyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSosIFN0
cnVjdHVyZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBSZWZQdHI8U291cmNlUHJvdmlkZXI+JiYgc291
cmNlT3ZlcnJpZGUsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiwgVW5saW5rZWRGdW5jdGlvbktpbmQs
IENvbnN0cnVjdEFiaWxpdHksIEdlbmVyYXRvclRoaXNNb2RlLCBWYXJpYWJsZUVudmlyb25tZW50
JiwgIEpTQzo6RGVyaXZlZENvbnRleHRUeXBlKTsKKwogICAgIFdyaXRlQmFycmllcjxVbmxpbmtl
ZEZ1bmN0aW9uQ29kZUJsb2NrPiBtX3VubGlua2VkQ29kZUJsb2NrRm9yQ2FsbDsKICAgICBXcml0
ZUJhcnJpZXI8VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaz4gbV91bmxpbmtlZENvZGVCbG9ja0Zv
ckNvbnN0cnVjdDsKIApAQCAtMTY2LDcgKzE2OCw3IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQg
bV9mdW5jdGlvbk1vZGUgOiAxOyAvLyBGdW5jdGlvbk1vZGUKICAgICB1bnNpZ25lZCBtX2dlbmVy
YXRvclRoaXNNb2RlIDogMTsKICAgICB1bnNpZ25lZCBtX3N1cGVyQmluZGluZyA6IDE7Ci0gICAg
dW5zaWduZWQgbV9pc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQgOiAxOworICAgIHVuc2lnbmVk
IG1fZGVyaXZlZENvbnRleHRUeXBlOiAyOwogCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBmaW5pc2hD
cmVhdGlvbihWTSYgdm0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IDM5OTY4ODRjMzFjZWJmMTc2ZmY2
ZGFiZTZmMTU4MjAyY2JiNjQzN2IuLjE2YzZhZTkxMTg1OTMwYmQzOTJhNTM5ODM3ODk3ZjA1MTEw
MGU2ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0xNTcsNyArMTU3LDYgQEAgQnl0ZWNvZGVHZW5l
cmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgUHJvZ3JhbU5vZGUqIHByb2dyYW1Ob2Rl
LCBVbmxpbmtlZFAKICAgICAsIG1fdGhpc1JlZ2lzdGVyKENhbGxGcmFtZTo6dGhpc0FyZ3VtZW50
T2Zmc2V0KCkpCiAgICAgLCBtX2NvZGVUeXBlKEdsb2JhbENvZGUpCiAgICAgLCBtX3ZtKCZ2bSkK
LSAgICAsIG1faXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KGZhbHNlKQogICAgICwgbV9uZWVk
c1RvVXBkYXRlQXJyb3dGdW5jdGlvbkNvbnRleHQocHJvZ3JhbU5vZGUtPnVzZXNBcnJvd0Z1bmN0
aW9uKCkgfHwgcHJvZ3JhbU5vZGUtPnVzZXNFdmFsKCkpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChw
YXJlbnRTY29wZVREWlZhcmlhYmxlcywgIXBhcmVudFNjb3BlVERaVmFyaWFibGVzLT5zaXplKCkp
OwpAQCAtMjExLDggKzIxMCw4IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRv
cihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAgLy8gY29t
cGF0aWJsZSB3aXRoIHRhaWwgY2FsbHMgKHdlIGhhdmUgbm8gd2F5IG9mIGVtaXR0aW5nIG9wX2Rp
ZF9jYWxsKS4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTQ4ODE5CiAgICAgLCBtX2luVGFpbFBvc2l0aW9uKE9wdGlvbnM6OnVzZVRhaWxDYWxscygpICYm
ICFpc0NvbnN0cnVjdG9yKCkgJiYgY29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5k
OjpOb25lICYmIGlzU3RyaWN0TW9kZSgpICYmICFtX3Nob3VsZEVtaXRQcm9maWxlSG9va3MpCi0g
ICAgLCBtX2lzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dChjb2RlQmxvY2stPmlzRGVyaXZlZENv
bnN0cnVjdG9yQ29udGV4dCgpKQogICAgICwgbV9uZWVkc1RvVXBkYXRlQXJyb3dGdW5jdGlvbkNv
bnRleHQoZnVuY3Rpb25Ob2RlLT51c2VzQXJyb3dGdW5jdGlvbigpIHx8IGZ1bmN0aW9uTm9kZS0+
dXNlc0V2YWwoKSkKKyAgICAsIG1fZGVyaXZlZENvbnRleHRUeXBlKGNvZGVCbG9jay0+ZGVyaXZl
ZENvbnRleHRUeXBlKCkpCiB7CiAgICAgZm9yIChhdXRvJiBjb25zdGFudFJlZ2lzdGVyIDogbV9s
aW5rVGltZUNvbnN0YW50UmVnaXN0ZXJzKQogICAgICAgICBjb25zdGFudFJlZ2lzdGVyID0gbnVs
bHB0cjsKQEAgLTUyMiw3ICs1MjEsNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5l
cmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgIG1f
bmV3VGFyZ2V0UmVnaXN0ZXIgPSBhZGRWYXIoKTsKICAgICBzd2l0Y2ggKHBhcnNlTW9kZSkgewog
ICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZTogewotICAgICAgICBp
ZiAoZnVuY3Rpb25Ob2RlLT51c2VzVGhpcygpKQorICAgICAgICBpZiAoZnVuY3Rpb25Ob2RlLT51
c2VzVGhpcygpIHx8IGlzRGVyaXZlZENsYXNzQ29udGV4dCgpIHx8IGlzRGVyaXZlZENvbnN0cnVj
dG9yQ29udGV4dCgpKQogICAgICAgICAgICAgZW1pdExvYWRUaGlzRnJvbUFycm93RnVuY3Rpb25M
ZXhpY2FsRW52aXJvbm1lbnQoKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtNTc2LDYgKzU3
NSw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0
aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAKICAgICBpZiAobmVlZHNUb1VwZGF0ZUFy
cm93RnVuY3Rpb25Db250ZXh0KCkgJiYgIWNvZGVCbG9jay0+aXNBcnJvd0Z1bmN0aW9uKCkpIHsK
ICAgICAgICAgaW5pdGlhbGl6ZUFycm93RnVuY3Rpb25Db250ZXh0U2NvcGVJZk5lZWRlZChmdW5j
dGlvblN5bWJvbFRhYmxlKTsKKwogICAgICAgICBlbWl0UHV0VGhpc1RvQXJyb3dGdW5jdGlvbkNv
bnRleHRTY29wZSgpOwogICAgICAgICBlbWl0UHV0TmV3VGFyZ2V0VG9BcnJvd0Z1bmN0aW9uQ29u
dGV4dFNjb3BlKCk7CiAgICAgICAgIGVtaXRQdXREZXJpdmVkQ29uc3RydWN0b3JUb0Fycm93RnVu
Y3Rpb25Db250ZXh0U2NvcGUoKTsKQEAgLTU5Myw4ICs1OTMsOCBAQCBCeXRlY29kZUdlbmVyYXRv
cjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBFdmFsTm9kZSogZXZhbE5vZGUsIFVubGlua2Vk
RXZhbENvZAogICAgICwgbV9jb2RlVHlwZShFdmFsQ29kZSkKICAgICAsIG1fdm0oJnZtKQogICAg
ICwgbV91c2VzTm9uU3RyaWN0RXZhbChjb2RlQmxvY2stPnVzZXNFdmFsKCkgJiYgIWNvZGVCbG9j
ay0+aXNTdHJpY3RNb2RlKCkpCi0gICAgLCBtX2lzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dChj
b2RlQmxvY2stPmlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCgpKQogICAgICwgbV9uZWVkc1Rv
VXBkYXRlQXJyb3dGdW5jdGlvbkNvbnRleHQoZXZhbE5vZGUtPnVzZXNBcnJvd0Z1bmN0aW9uKCkg
fHwgZXZhbE5vZGUtPnVzZXNFdmFsKCkpCisgICAgLCBtX2Rlcml2ZWRDb250ZXh0VHlwZShjb2Rl
QmxvY2stPmRlcml2ZWRDb250ZXh0VHlwZSgpKQogewogICAgIGZvciAoYXV0byYgY29uc3RhbnRS
ZWdpc3RlciA6IG1fbGlua1RpbWVDb25zdGFudFJlZ2lzdGVycykKICAgICAgICAgY29uc3RhbnRS
ZWdpc3RlciA9IG51bGxwdHI7CkBAIC02NDQsNyArNjQ0LDYgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6
OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgTW9kdWxlUHJvZ3JhbU5vZGUqIG1vZHVsZVByb2dy
YW1Ob2QKICAgICAsIG1fY29kZVR5cGUoTW9kdWxlQ29kZSkKICAgICAsIG1fdm0oJnZtKQogICAg
ICwgbV91c2VzTm9uU3RyaWN0RXZhbChmYWxzZSkKLSAgICAsIG1faXNEZXJpdmVkQ29uc3RydWN0
b3JDb250ZXh0KGZhbHNlKQogICAgICwgbV9uZWVkc1RvVXBkYXRlQXJyb3dGdW5jdGlvbkNvbnRl
eHQobW9kdWxlUHJvZ3JhbU5vZGUtPnVzZXNBcnJvd0Z1bmN0aW9uKCkgfHwgbW9kdWxlUHJvZ3Jh
bU5vZGUtPnVzZXNFdmFsKCkpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChwYXJlbnRTY29wZVREWlZh
cmlhYmxlcywgIXBhcmVudFNjb3BlVERaVmFyaWFibGVzLT5zaXplKCkpOwpAQCAtNDAyMywxNCAr
NDAyMiwxNCBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0TmV3VGFyZ2V0VG9BcnJv
d0Z1bmN0aW9uQ29udGV4dFNjb3BlKCkKICAgICAKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRQdXREZXJpdmVkQ29uc3RydWN0b3JUb0Fycm93RnVuY3Rpb25Db250ZXh0U2NvcGUoKQogewot
ICAgIGlmIChpc0NvbnN0cnVjdG9yKCkgJiYgY29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0
b3JLaW5kOjpEZXJpdmVkKSB7CisgICAgaWYgKChpc0NvbnN0cnVjdG9yKCkgJiYgY29uc3RydWN0
b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpEZXJpdmVkKSB8fCAobV9jb2RlQmxvY2stPmlz
Q2xhc3NDb250ZXh0KCkpKSB7CiAgICAgICAgIEFTU0VSVChtX2Fycm93RnVuY3Rpb25Db250ZXh0
TGV4aWNhbEVudmlyb25tZW50UmVnaXN0ZXIpOwogICAgICAgICAgICAgCiAgICAgICAgIFZhcmlh
YmxlIHByb3RvU2NvcGUgPSB2YXJpYWJsZShwcm9wZXJ0eU5hbWVzKCkuZGVyaXZlZENvbnN0cnVj
dG9yUHJpdmF0ZU5hbWUpOwogICAgICAgICBlbWl0UHV0VG9TY29wZShtX2Fycm93RnVuY3Rpb25D
b250ZXh0TGV4aWNhbEVudmlyb25tZW50UmVnaXN0ZXIsIHByb3RvU2NvcGUsICZtX2NhbGxlZVJl
Z2lzdGVyLCBEb05vdFRocm93SWZOb3RGb3VuZCwgSW5pdGlhbGl6YXRpb24pOwogICAgIH0KIH0K
LSAgICAKKwogdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dFRoaXNUb0Fycm93RnVuY3Rp
b25Db250ZXh0U2NvcGUoKQogewogICAgIEFTU0VSVChpc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRl
eHQoKSB8fCBtX2Fycm93RnVuY3Rpb25Db250ZXh0TGV4aWNhbEVudmlyb25tZW50UmVnaXN0ZXIg
IT0gbnVsbHB0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggZGMxNmEzOGVmNzZjM2E1ZjY5N2Y3N2FkMzc5
YmJlNTk3ODA4NzgzOC4uZmNiNmY4ZDQ5NzllMWE2NjE2ZDViZjE2ZGM5NzFhOTNjN2IxMzgyMSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuaApAQCAtMjgyLDcgKzI4Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBjb25zdCBDb21tb25JZGVudGlmaWVycyYgcHJvcGVydHlOYW1lcygpIGNvbnN0IHsgcmV0dXJu
ICptX3ZtLT5wcm9wZXJ0eU5hbWVzOyB9CiAKICAgICAgICAgYm9vbCBpc0NvbnN0cnVjdG9yKCkg
Y29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPmlzQ29uc3RydWN0b3IoKTsgfQotICAgICAgICBi
b29sIGlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJs
b2NrLT5pc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoKTsgfQorICAgICAgICBEZXJpdmVkQ29u
dGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2st
PmRlcml2ZWRDb250ZXh0VHlwZSgpOyB9CiAgICAgICAgIGJvb2wgdXNlc0Fycm93RnVuY3Rpb24o
KSBjb25zdCB7IHJldHVybiBtX3Njb3BlTm9kZS0+dXNlc0Fycm93RnVuY3Rpb24oKTsgfQogICAg
ICAgICBib29sIG5lZWRzVG9VcGRhdGVBcnJvd0Z1bmN0aW9uQ29udGV4dCgpIGNvbnN0IHsgcmV0
dXJuIG1fbmVlZHNUb1VwZGF0ZUFycm93RnVuY3Rpb25Db250ZXh0OyB9CiAgICAgICAgIGJvb2wg
dXNlc0V2YWwoKSBjb25zdCB7IHJldHVybiBtX3Njb3BlTm9kZS0+dXNlc0V2YWwoKTsgfQpAQCAt
Njk3LDYgKzY5NywxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBpc0J1aWx0aW5G
dW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNCdWlsdGluRnVuY3Rpb247IH0KIAogICAgICAg
ICBPcGNvZGVJRCBsYXN0T3Bjb2RlSUQoKSBjb25zdCB7IHJldHVybiBtX2xhc3RPcGNvZGVJRDsg
fQorICAgICAgICAKKyAgICAgICAgYm9vbCBpc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoKSB7
IHJldHVybiBtX2Rlcml2ZWRDb250ZXh0VHlwZSA9PSBEZXJpdmVkQ29udGV4dFR5cGU6OkRlcml2
ZWRDb25zdHJ1Y3RvckNvbnRleHQ7IH0KKyAgICAgICAgYm9vbCBpc0Rlcml2ZWRDbGFzc0NvbnRl
eHQoKSB7IHJldHVybiBtX2Rlcml2ZWRDb250ZXh0VHlwZSA9PSBEZXJpdmVkQ29udGV4dFR5cGU6
OkRlcml2ZWRNZXRob2RDb250ZXh0OyB9CisgICAgICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkg
eyByZXR1cm4gbV9jb2RlQmxvY2stPmlzQXJyb3dGdW5jdGlvbigpOyB9CiAKICAgICBwcml2YXRl
OgogICAgICAgICBlbnVtIGNsYXNzIFREWlJlcXVpcmVtZW50IHsgVW5kZXJURFosIE5vdFVuZGVy
VERaIH07CkBAIC03OTIsNyArNzk2LDE1IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICAg
ICAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIG1ha2VGdW5jdGlvbihGdW5jdGlvbk1l
dGFkYXRhTm9kZSogbWV0YWRhdGEpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGJvb2wgbmV3aXNE
ZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0ID0gY29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0
b3JLaW5kOjpEZXJpdmVkIHx8IChtX2lzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCAmJiBtZXRh
ZGF0YS0+cGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSk7
CisgICAgICAgICAgICBib29sIG5ld2lzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCA9IGNvbnN0
cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCB8fCAoZGVyaXZlZENvbnRl
eHRUeXBlKCkgPT0gRGVyaXZlZENvbnRleHRUeXBlOjpEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0
ICYmIG1ldGFkYXRhLT5wYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rp
b25Nb2RlKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgRGVyaXZlZENvbnRleHRUeXBlIGRl
cml2ZWRDb250ZXh0VHlwZTsKKyAgICAgICAgICAgIGlmIChuZXdpc0Rlcml2ZWRDb25zdHJ1Y3Rv
ckNvbnRleHQpCisgICAgICAgICAgICAgICAgZGVyaXZlZENvbnRleHRUeXBlID0gRGVyaXZlZENv
bnRleHRUeXBlOjpEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0OworICAgICAgICAgICAgZWxzZSAg
eworICAgICAgICAgICAgICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uSW5DbGFzc0NvbnRleHQgPSBt
X2NvZGVCbG9jay0+aXNDbGFzc0NvbnRleHQoKSB8fCAobV9jb2RlQmxvY2stPmlzQXJyb3dGdW5j
dGlvbigpICYmIG1fZGVyaXZlZENvbnRleHRUeXBlID09IERlcml2ZWRDb250ZXh0VHlwZTo6RGVy
aXZlZE1ldGhvZENvbnRleHQpOworICAgICAgICAgICAgICAgIGRlcml2ZWRDb250ZXh0VHlwZSA9
IGlzQXJyb3dGdW5jdGlvbkluQ2xhc3NDb250ZXh0ID8gRGVyaXZlZENvbnRleHRUeXBlOjpEZXJp
dmVkTWV0aG9kQ29udGV4dCA6IERlcml2ZWRDb250ZXh0VHlwZTo6Tm9uZTsKKyAgICAgICAgICAg
IH0KIAogICAgICAgICAgICAgVmFyaWFibGVFbnZpcm9ubWVudCB2YXJpYWJsZXNVbmRlclREWjsK
ICAgICAgICAgICAgIGdldFZhcmlhYmxlc1VuZGVyVERaKHZhcmlhYmxlc1VuZGVyVERaKTsKQEAg
LTgxMiw3ICs4MjQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIGlmIChwYXJzZU1v
ZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZSAmJiBpc0NvbnN0cnVjdG9y
KCkpCiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yVGhpc01vZGUgPSBHZW5lcmF0b3JUaGlzTW9k
ZTo6RW1wdHk7CiAKLSAgICAgICAgICAgIHJldHVybiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZTo6Y3JlYXRlKG1fdm0sIG1fc2NvcGVOb2RlLT5zb3VyY2UoKSwgbWV0YWRhdGEsIGlzQnVpbHRp
bkZ1bmN0aW9uKCkgPyBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiA6IFVubGlua2VkTm9ybWFsRnVu
Y3Rpb24sIGNvbnN0cnVjdEFiaWxpdHksIGdlbmVyYXRvclRoaXNNb2RlLCB2YXJpYWJsZXNVbmRl
clREWiwgbmV3aXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KTsKKyAgICAgICAgICAgIHJldHVy
biBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKG1fdm0sIG1fc2NvcGVOb2RlLT5z
b3VyY2UoKSwgbWV0YWRhdGEsIGlzQnVpbHRpbkZ1bmN0aW9uKCkgPyBVbmxpbmtlZEJ1aWx0aW5G
dW5jdGlvbiA6IFVubGlua2VkTm9ybWFsRnVuY3Rpb24sIGNvbnN0cnVjdEFiaWxpdHksIGdlbmVy
YXRvclRoaXNNb2RlLCB2YXJpYWJsZXNVbmRlclREWiwgZGVyaXZlZENvbnRleHRUeXBlKTsKICAg
ICAgICAgfQogCiAgICAgICAgIHZvaWQgZ2V0VmFyaWFibGVzVW5kZXJURFooVmFyaWFibGVFbnZp
cm9ubWVudCYpOwpAQCAtOTIyLDkgKzkzNCw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBi
b29sIG1faXNCdWlsdGluRnVuY3Rpb24geyBmYWxzZSB9OwogICAgICAgICBib29sIG1fdXNlc05v
blN0cmljdEV2YWwgeyBmYWxzZSB9OwogICAgICAgICBib29sIG1faW5UYWlsUG9zaXRpb24geyBm
YWxzZSB9OwotICAgICAgICBib29sIG1faXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0IHsgZmFs
c2UgfTsKICAgICAgICAgYm9vbCBtX25lZWRzVG9VcGRhdGVBcnJvd0Z1bmN0aW9uQ29udGV4dDsK
ICAgICAgICAgYm9vbCBtX2lzTmV3VGFyZ2V0TG9hZGVkSW5BcnJvd0Z1bmN0aW9uIHsgZmFsc2Ug
fTsKKyAgICAgICAgRGVyaXZlZENvbnRleHRUeXBlIG1fZGVyaXZlZENvbnRleHRUeXBlIHsgRGVy
aXZlZENvbnRleHRUeXBlOjpOb25lIH07CiAgICAgfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCmluZGV4IGFkZDk3OWM1
NDc4MDJiNDAyMGRlYmI2ODIyNGUzMmMyMjAxNTJmNzMuLmQ4ZDFjMTUwZDY0ODA5NGEzNWQzZjM0
MTE2OTZmOTczMTIxNDc2ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKQEAgLTE3OSw4ICsxNzksMTQgQEAgUmVnaXN0ZXJJ
RCogU3VwZXJOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwg
UmVnaXN0ZXJJRCogZHMKIAogc3RhdGljIFJlZ2lzdGVySUQqIGVtaXRIb21lT2JqZWN0Rm9yQ2Fs
bGVlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IpCiB7CisgICAgaWYgKGdlbmVyYXRvci5p
c0Rlcml2ZWRDbGFzc0NvbnRleHQoKSB8fCBnZW5lcmF0b3IuaXNEZXJpdmVkQ29uc3RydWN0b3JD
b250ZXh0KCkpIHsKKyAgICAgICAgUmVnaXN0ZXJJRCogc2NvcGUgPSBnZW5lcmF0b3IuZW1pdExv
YWREZXJpdmVkQ29uc3RydWN0b3JGcm9tQXJyb3dGdW5jdGlvbkxleGljYWxFbnZpcm9ubWVudCgp
OyAgICAKKyAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IubmV3
VGVtcG9yYXJ5KCksIHNjb3BlLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmhvbWVPYmplY3RQ
cml2YXRlTmFtZSk7CisgICAgfQorCiAgICAgUmVnaXN0ZXJJRCBjYWxsZWU7CiAgICAgY2FsbGVl
LnNldEluZGV4KEpTU3RhY2s6OkNhbGxlZSk7CisKICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRH
ZXRCeUlkKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgJmNhbGxlZSwgZ2VuZXJhdG9yLnByb3Bl
cnR5TmFtZXMoKS5ob21lT2JqZWN0UHJpdmF0ZU5hbWUpOwogfQogCkBAIC03NDQsMTMgKzc1MCwx
NSBAQCBSZWdpc3RlcklEKiBGdW5jdGlvbkNhbGxWYWx1ZU5vZGU6OmVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZQogICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXR1
cm5WYWx1ZSA9IGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgZnVuYy5nZXQoKSk7CiAg
ICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKICAgICBp
ZiAobV9leHByLT5pc1N1cGVyTm9kZSgpKSB7Ci0gICAgICAgIEFTU0VSVChnZW5lcmF0b3IuaXND
b25zdHJ1Y3RvcigpIHx8IGdlbmVyYXRvci5pc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoKSk7
Ci0gICAgICAgIEFTU0VSVChnZW5lcmF0b3IuY29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0
b3JLaW5kOjpEZXJpdmVkIHx8IGdlbmVyYXRvci5pc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQo
KSk7CisgICAgICAgIGJvb2wgaXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0ID0gZ2VuZXJhdG9y
LmRlcml2ZWRDb250ZXh0VHlwZSgpID09IERlcml2ZWRDb250ZXh0VHlwZTo6RGVyaXZlZENvbnN0
cnVjdG9yQ29udGV4dDsKKyAgICAgICAgQVNTRVJUKGdlbmVyYXRvci5pc0NvbnN0cnVjdG9yKCkg
fHwgaXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KTsKKyAgICAgICAgQVNTRVJUKGdlbmVyYXRv
ci5jb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQgfHwgaXNEZXJp
dmVkQ29uc3RydWN0b3JDb250ZXh0KTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKGNhbGxB
cmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGdlbmVyYXRvci5uZXdUYXJnZXQoKSk7CiAgICAgICAg
IFJlZ2lzdGVySUQqIHJldCA9IGdlbmVyYXRvci5lbWl0Q29uc3RydWN0KHJldHVyblZhbHVlLmdl
dCgpLCBmdW5jLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90
KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0TW92
ZShnZW5lcmF0b3IudGhpc1JlZ2lzdGVyKCksIHJldCk7CiAgICAgICAgIAogICAgICAgICBib29s
IGlzQ29uc3RydWN0b3JLaW5kRGVyaXZlZCA9IGdlbmVyYXRvci5jb25zdHJ1Y3RvcktpbmQoKSA9
PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQ7CisKICAgICAgICAgaWYgKGdlbmVyYXRvci5pc0Rl
cml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoKSB8fCAoaXNDb25zdHJ1Y3RvcktpbmREZXJpdmVkICYm
IGdlbmVyYXRvci5uZWVkc1RvVXBkYXRlQXJyb3dGdW5jdGlvbkNvbnRleHQoKSkpCiAgICAgICAg
ICAgICBnZW5lcmF0b3IuZW1pdFB1dFRoaXNUb0Fycm93RnVuY3Rpb25Db250ZXh0U2NvcGUoKTsK
ICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVi
dWdnZXJDYWxsRnJhbWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVn
Z2VyQ2FsbEZyYW1lLmNwcAppbmRleCBkNTQwNTUwZjVlMTRkNjAyYTk5Mjg4MGViYTBlNmQxOWJl
NjgzNzA0Li4xMWZiNjk1OGRkYzY1Y2QzOWRhZDI2ZGRmYjdkMDA3YmY5MGE0OGJmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5j
cHAKQEAgLTE5Niw3ICsxOTYsNyBAQCBKU1ZhbHVlIERlYnVnZ2VyQ2FsbEZyYW1lOjpldmFsdWF0
ZShjb25zdCBTdHJpbmcmIHNjcmlwdCwgTmFrZWRQdHI8RXhjZXB0aW9uPiYgZQogICAgIFZhcmlh
YmxlRW52aXJvbm1lbnQgdmFyaWFibGVzVW5kZXJURFo7CiAgICAgSlNTY29wZTo6Y29sbGVjdFZh
cmlhYmxlc1VuZGVyVERaKHNjb3BlKCktPmpzU2NvcGUoKSwgdmFyaWFibGVzVW5kZXJURFopOwog
Ci0gICAgRXZhbEV4ZWN1dGFibGUqIGV2YWwgPSBFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKGNhbGxG
cmFtZSwgbWFrZVNvdXJjZShzY3JpcHQpLCBjb2RlQmxvY2suaXNTdHJpY3RNb2RlKCksIHRoaXNU
RFpNb2RlLCBjb2RlQmxvY2sudW5saW5rZWRDb2RlQmxvY2soKS0+aXNEZXJpdmVkQ29uc3RydWN0
b3JDb250ZXh0KCksIGNvZGVCbG9jay51bmxpbmtlZENvZGVCbG9jaygpLT5pc0Fycm93RnVuY3Rp
b24oKSwgJnZhcmlhYmxlc1VuZGVyVERaKTsKKyAgICBFdmFsRXhlY3V0YWJsZSogZXZhbCA9IEV2
YWxFeGVjdXRhYmxlOjpjcmVhdGUoY2FsbEZyYW1lLCBtYWtlU291cmNlKHNjcmlwdCksIGNvZGVC
bG9jay5pc1N0cmljdE1vZGUoKSwgdGhpc1REWk1vZGUsIGNvZGVCbG9jay51bmxpbmtlZENvZGVC
bG9jaygpLT5kZXJpdmVkQ29udGV4dFR5cGUoKSwgY29kZUJsb2NrLnVubGlua2VkQ29kZUJsb2Nr
KCktPmlzQXJyb3dGdW5jdGlvbigpLCAmdmFyaWFibGVzVW5kZXJURFopOwogICAgIGlmICh2bS5l
eGNlcHRpb24oKSkgewogICAgICAgICBleGNlcHRpb24gPSB2bS5leGNlcHRpb24oKTsKICAgICAg
ICAgdm0uY2xlYXJFeGNlcHRpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCmluZGV4IDM4NTMwNDVjNzRhMWQ1ODI5ZTQyM2Q5N2Ri
ZjhhZmM2MGYwYzZkZWIuLjFlNDY0ZjJlMjcwNDM0MzNmNmRjMjcwZWZjOGQwMGFmMjU2NzYxZjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRl
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVy
LmNwcApAQCAtMTgwLDcgKzE4MCw3IEBAIEpTVmFsdWUgZXZhbChDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKICAgICAgICAgLy8gSWYgdGhlIGxpdGVyYWwgcGFyc2VyIGJhaWxlZCwgaXQgc2hvdWxkIG5v
dCBoYXZlIHRocm93biBleGNlcHRpb25zLgogICAgICAgICBBU1NFUlQoIWNhbGxGcmFtZS0+dm0o
KS5leGNlcHRpb24oKSk7CiAKLSAgICAgICAgZXZhbCA9IGNhbGxlckNvZGVCbG9jay0+ZXZhbENv
ZGVDYWNoZSgpLmdldFNsb3coY2FsbEZyYW1lLCBjYWxsZXJDb2RlQmxvY2ssIGNhbGxlckNvZGVC
bG9jay0+aXNTdHJpY3RNb2RlKCksIHRoaXNURFpNb2RlLCBjYWxsZXJDb2RlQmxvY2stPnVubGlu
a2VkQ29kZUJsb2NrKCktPmlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCgpLCBjYWxsZXJDb2Rl
QmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCktPmlzQXJyb3dGdW5jdGlvbigpLCBzb3VyY2VDb2Rl
LCBjYWxsZXJTY29wZUNoYWluKTsKKyAgICAgICAgZXZhbCA9IGNhbGxlckNvZGVCbG9jay0+ZXZh
bENvZGVDYWNoZSgpLmdldFNsb3coY2FsbEZyYW1lLCBjYWxsZXJDb2RlQmxvY2ssIGNhbGxlckNv
ZGVCbG9jay0+aXNTdHJpY3RNb2RlKCksIHRoaXNURFpNb2RlLCBjYWxsZXJDb2RlQmxvY2stPnVu
bGlua2VkQ29kZUJsb2NrKCktPmRlcml2ZWRDb250ZXh0VHlwZSgpLCBjYWxsZXJDb2RlQmxvY2st
PnVubGlua2VkQ29kZUJsb2NrKCktPmlzQXJyb3dGdW5jdGlvbigpLCBzb3VyY2VDb2RlLCBjYWxs
ZXJTY29wZUNoYWluKTsKIAogICAgICAgICBpZiAoIWV2YWwpCiAgICAgICAgICAgICByZXR1cm4g
anNVbmRlZmluZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvZGVDYWNoZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUu
Y3BwCmluZGV4IGIxMGIxMTRlZmY1NjQ2YzM3YmU1Mjk1NTM2Yzg5N2FhMTM0ZjBjNmQuLjc0MjQz
NmQ2YWZmZjkxYWNlMGZkNzA2ODNjMmZjYzFjNjhjM2I1ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcApAQCAtMTg4LDcgKzE4OCw5IEBAIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlKiBDb2RlQ2FjaGU6OmdldEZ1bmN0aW9uRXhlY3V0YWJsZUZyb21H
bG9iYWxDb2RlKFZNJiB2CiAgICAgbWV0YWRhdGEtPnNldEVuZFBvc2l0aW9uKHBvc2l0aW9uQmVm
b3JlTGFzdE5ld2xpbmUpOwogICAgIC8vIFRoZSBGdW5jdGlvbiBjb25zdHJ1Y3RvciBvbmx5IGhh
cyBhY2Nlc3MgdG8gZ2xvYmFsIHZhcmlhYmxlcywgc28gbm8gdmFyaWFibGVzIHdpbGwgYmUgdW5k
ZXIgVERaLgogICAgIFZhcmlhYmxlRW52aXJvbm1lbnQgZW1wdHlURFpWYXJpYWJsZXM7Ci0gICAg
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUoJnZtLCBzb3VyY2UsIG1ldGFkYXRhLCBVbmxpbmtl
ZE5vcm1hbEZ1bmN0aW9uLCBDb25zdHJ1Y3RBYmlsaXR5OjpDYW5Db25zdHJ1Y3QsIEdlbmVyYXRv
clRoaXNNb2RlOjpOb25FbXB0eSwgZW1wdHlURFpWYXJpYWJsZXMsIGZhbHNlKTsKKworICAgIFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKCZ2bSwgc291cmNlLCBtZXRhZGF0YSwgVW5saW5rZWRO
b3JtYWxGdW5jdGlvbiwgQ29uc3RydWN0QWJpbGl0eTo6Q2FuQ29uc3RydWN0LCBHZW5lcmF0b3JU
aGlzTW9kZTo6Tm9uRW1wdHksIGVtcHR5VERaVmFyaWFibGVzLCBEZXJpdmVkQ29udGV4dFR5cGU6
Ok5vbmUpOworCiAgICAgZnVuY3Rpb25FeGVjdXRhYmxlLT5tX25hbWVWYWx1ZS5zZXQodm0sIGZ1
bmN0aW9uRXhlY3V0YWJsZSwganNTdHJpbmcoJnZtLCBuYW1lLnN0cmluZygpKSk7CiAKICAgICBt
X3NvdXJjZUNvZGUuYWRkQ2FjaGUoa2V5LCBTb3VyY2VDb2RlVmFsdWUodm0sIGZ1bmN0aW9uRXhl
Y3V0YWJsZSwgbV9zb3VyY2VDb2RlLmFnZSgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0V4ZWN1dGFibGUuY3BwCmluZGV4IGY1ZGY3N2Q5ODdjMDNjYmU2MDQzYTQ3ZGNlYjNh
OTEzMTFiZGYyMzAuLjllNDc1MTkyYjA5MmE1ZjU5ZTNhNjMwMzBkMTlhNzgwMmUwY2JhMzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCkBAIC0xMzEs
MTQgKzEzMSwxNCBAQCBJbnRyaW5zaWMgTmF0aXZlRXhlY3V0YWJsZTo6aW50cmluc2ljKCkgY29u
c3QKIAogY29uc3QgQ2xhc3NJbmZvIFNjcmlwdEV4ZWN1dGFibGU6OnNfaW5mbyA9IHsgIlNjcmlw
dEV4ZWN1dGFibGUiLCAmRXhlY3V0YWJsZUJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9U
QUJMRShTY3JpcHRFeGVjdXRhYmxlKSB9OwogCi1TY3JpcHRFeGVjdXRhYmxlOjpTY3JpcHRFeGVj
dXRhYmxlKFN0cnVjdHVyZSogc3RydWN0dXJlLCBWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNv
dXJjZSwgYm9vbCBpc0luU3RyaWN0Q29udGV4dCwgYm9vbCBpc0luRGVyaXZlZENvbnN0cnVjdG9y
Q29udGV4dCwgYm9vbCBpc0luQXJyb3dGdW5jdGlvbkNvbnRleHQpCitTY3JpcHRFeGVjdXRhYmxl
OjpTY3JpcHRFeGVjdXRhYmxlKFN0cnVjdHVyZSogc3RydWN0dXJlLCBWTSYgdm0sIGNvbnN0IFNv
dXJjZUNvZGUmIHNvdXJjZSwgYm9vbCBpc0luU3RyaWN0Q29udGV4dCwgRGVyaXZlZENvbnRleHRU
eXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgYm9vbCBpc0luQXJyb3dGdW5jdGlvbkNvbnRleHQpCiAg
ICAgOiBFeGVjdXRhYmxlQmFzZSh2bSwgc3RydWN0dXJlLCBOVU1fUEFSQU1FVEVSU19OT1RfQ09N
UElMRUQpCiAgICAgLCBtX3NvdXJjZShzb3VyY2UpCiAgICAgLCBtX2ZlYXR1cmVzKGlzSW5TdHJp
Y3RDb250ZXh0ID8gU3RyaWN0TW9kZUZlYXR1cmUgOiAwKQogICAgICwgbV9oYXNDYXB0dXJlZFZh
cmlhYmxlcyhmYWxzZSkKICAgICAsIG1fbmV2ZXJJbmxpbmUoZmFsc2UpCiAgICAgLCBtX2RpZFRy
eVRvRW50ZXJJbkxvb3AoZmFsc2UpCi0gICAgLCBtX2lzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4
dChpc0luRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCkKKyAgICAsIG1fZGVyaXZlZENvbnRleHRU
eXBlKGRlcml2ZWRDb250ZXh0VHlwZSkKICAgICAsIG1faXNBcnJvd0Z1bmN0aW9uQ29udGV4dChp
c0luQXJyb3dGdW5jdGlvbkNvbnRleHQpCiAgICAgLCBtX292ZXJyaWRlTGluZU51bWJlcigtMSkK
ICAgICAsIG1fZmlyc3RMaW5lKC0xKQpAQCAtNDE0LDcgKzQxNCw3IEBAIEpTT2JqZWN0KiBTY3Jp
cHRFeGVjdXRhYmxlOjpwcmVwYXJlRm9yRXhlY3V0aW9uSW1wbCgKIAogY29uc3QgQ2xhc3NJbmZv
IEV2YWxFeGVjdXRhYmxlOjpzX2luZm8gPSB7ICJFdmFsRXhlY3V0YWJsZSIsICZTY3JpcHRFeGVj
dXRhYmxlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoRXZhbEV4ZWN1dGFibGUpIH07
CiAKLUV2YWxFeGVjdXRhYmxlKiBFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBib29sIGlzSW5TdHJpY3RDb250ZXh0LCBUaGlz
VERaTW9kZSB0aGlzVERaTW9kZSwgYm9vbCBpc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQsIGJv
b2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCogdmFy
aWFibGVzVW5kZXJURFopCitFdmFsRXhlY3V0YWJsZSogRXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgYm9vbCBpc0luU3RyaWN0
Q29udGV4dCwgVGhpc1REWk1vZGUgdGhpc1REWk1vZGUsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJp
dmVkQ29udGV4dFR5cGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgY29uc3QgVmFyaWFi
bGVFbnZpcm9ubWVudCogdmFyaWFibGVzVW5kZXJURFopCiB7CiAgICAgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKICAgICBpZiAoIWds
b2JhbE9iamVjdC0+ZXZhbEVuYWJsZWQoKSkgewpAQCAtNDIyLDcgKzQyMiw3IEBAIEV2YWxFeGVj
dXRhYmxlKiBFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291
cmNlQ29kZSYgc291cmNlCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIEV2YWxFeGVj
dXRhYmxlKiBleGVjdXRhYmxlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RXZhbEV4ZWN1
dGFibGU+KCpleGVjLT5oZWFwKCkpKSBFdmFsRXhlY3V0YWJsZShleGVjLCBzb3VyY2UsIGlzSW5T
dHJpY3RDb250ZXh0LCBpc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQsIGlzQXJyb3dGdW5jdGlv
bkNvbnRleHQpOworICAgIEV2YWxFeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gbmV3IChOb3ROdWxs
LCBhbGxvY2F0ZUNlbGw8RXZhbEV4ZWN1dGFibGU+KCpleGVjLT5oZWFwKCkpKSBFdmFsRXhlY3V0
YWJsZShleGVjLCBzb3VyY2UsIGlzSW5TdHJpY3RDb250ZXh0LCBkZXJpdmVkQ29udGV4dFR5cGUs
IGlzQXJyb3dGdW5jdGlvbkNvbnRleHQpOwogICAgIGV4ZWN1dGFibGUtPmZpbmlzaENyZWF0aW9u
KGV4ZWMtPnZtKCkpOwogCiAgICAgVW5saW5rZWRFdmFsQ29kZUJsb2NrKiB1bmxpbmtlZEV2YWxD
b2RlID0gZ2xvYmFsT2JqZWN0LT5jcmVhdGVFdmFsQ29kZUJsb2NrKGV4ZWMsIGV4ZWN1dGFibGUs
IHRoaXNURFpNb2RlLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCB2YXJpYWJsZXNVbmRlclREWik7
CkBAIC00MzQsOCArNDM0LDggQEAgRXZhbEV4ZWN1dGFibGUqIEV2YWxFeGVjdXRhYmxlOjpjcmVh
dGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UKICAgICByZXR1cm4g
ZXhlY3V0YWJsZTsKIH0KIAotRXZhbEV4ZWN1dGFibGU6OkV2YWxFeGVjdXRhYmxlKEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBib29sIGluU3RyaWN0Q29udGV4dCwg
Ym9vbCBpc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29u
dGV4dCkKLSAgICA6IFNjcmlwdEV4ZWN1dGFibGUoZXhlYy0+dm0oKS5ldmFsRXhlY3V0YWJsZVN0
cnVjdHVyZS5nZXQoKSwgZXhlYy0+dm0oKSwgc291cmNlLCBpblN0cmljdENvbnRleHQsIGlzRGVy
aXZlZENvbnN0cnVjdG9yQ29udGV4dCwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCkKK0V2YWxFeGVj
dXRhYmxlOjpFdmFsRXhlY3V0YWJsZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUm
IHNvdXJjZSwgYm9vbCBpblN0cmljdENvbnRleHQsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVk
Q29udGV4dFR5cGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCkKKyAgICA6IFNjcmlwdEV4
ZWN1dGFibGUoZXhlYy0+dm0oKS5ldmFsRXhlY3V0YWJsZVN0cnVjdHVyZS5nZXQoKSwgZXhlYy0+
dm0oKSwgc291cmNlLCBpblN0cmljdENvbnRleHQsIGRlcml2ZWRDb250ZXh0VHlwZSwgaXNBcnJv
d0Z1bmN0aW9uQ29udGV4dCkKIHsKIH0KIApAQCAtNDQ3LDcgKzQ0Nyw3IEBAIHZvaWQgRXZhbEV4
ZWN1dGFibGU6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQogY29uc3QgQ2xhc3NJbmZvIFByb2dyYW1F
eGVjdXRhYmxlOjpzX2luZm8gPSB7ICJQcm9ncmFtRXhlY3V0YWJsZSIsICZTY3JpcHRFeGVjdXRh
YmxlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoUHJvZ3JhbUV4ZWN1dGFibGUpIH07
CiAKIFByb2dyYW1FeGVjdXRhYmxlOjpQcm9ncmFtRXhlY3V0YWJsZShFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSkKLSAgICA6IFNjcmlwdEV4ZWN1dGFibGUoZXhlYy0+
dm0oKS5wcm9ncmFtRXhlY3V0YWJsZVN0cnVjdHVyZS5nZXQoKSwgZXhlYy0+dm0oKSwgc291cmNl
LCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorICAgIDogU2NyaXB0RXhlY3V0YWJsZShleGVjLT52bSgp
LnByb2dyYW1FeGVjdXRhYmxlU3RydWN0dXJlLmdldCgpLCBleGVjLT52bSgpLCBzb3VyY2UsIGZh
bHNlLCBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUsIGZhbHNlKQogewogICAgIG1fdHlwZVByb2Zp
bGluZ1N0YXJ0T2Zmc2V0ID0gMDsKICAgICBtX3R5cGVQcm9maWxpbmdFbmRPZmZzZXQgPSBzb3Vy
Y2UubGVuZ3RoKCkgLSAxOwpAQCAtNDYzLDcgKzQ2Myw3IEBAIHZvaWQgUHJvZ3JhbUV4ZWN1dGFi
bGU6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQogY29uc3QgQ2xhc3NJbmZvIE1vZHVsZVByb2dyYW1F
eGVjdXRhYmxlOjpzX2luZm8gPSB7ICJNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSIsICZTY3JpcHRF
eGVjdXRhYmxlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoTW9kdWxlUHJvZ3JhbUV4
ZWN1dGFibGUpIH07CiAKIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjpNb2R1bGVQcm9ncmFtRXhl
Y3V0YWJsZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSkKLSAgICA6
IFNjcmlwdEV4ZWN1dGFibGUoZXhlYy0+dm0oKS5tb2R1bGVQcm9ncmFtRXhlY3V0YWJsZVN0cnVj
dHVyZS5nZXQoKSwgZXhlYy0+dm0oKSwgc291cmNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorICAg
IDogU2NyaXB0RXhlY3V0YWJsZShleGVjLT52bSgpLm1vZHVsZVByb2dyYW1FeGVjdXRhYmxlU3Ry
dWN0dXJlLmdldCgpLCBleGVjLT52bSgpLCBzb3VyY2UsIGZhbHNlLCBEZXJpdmVkQ29udGV4dFR5
cGU6Ok5vbmUsIGZhbHNlKQogewogICAgIG1fdHlwZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0ID0gMDsK
ICAgICBtX3R5cGVQcm9maWxpbmdFbmRPZmZzZXQgPSBzb3VyY2UubGVuZ3RoKCkgLSAxOwpAQCAt
NDk1LDcgKzQ5NSw3IEBAIHZvaWQgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU6OmRlc3Ryb3koSlND
ZWxsKiBjZWxsKQogY29uc3QgQ2xhc3NJbmZvIEZ1bmN0aW9uRXhlY3V0YWJsZTo6c19pbmZvID0g
eyAiRnVuY3Rpb25FeGVjdXRhYmxlIiwgJlNjcmlwdEV4ZWN1dGFibGU6OnNfaW5mbywgMCwgQ1JF
QVRFX01FVEhPRF9UQUJMRShGdW5jdGlvbkV4ZWN1dGFibGUpIH07CiAKIEZ1bmN0aW9uRXhlY3V0
YWJsZTo6RnVuY3Rpb25FeGVjdXRhYmxlKFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNl
LCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogdW5saW5rZWRFeGVjdXRhYmxlLCB1bnNpZ25l
ZCBmaXJzdExpbmUsIHVuc2lnbmVkIGxhc3RMaW5lLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5z
aWduZWQgZW5kQ29sdW1uKQotICAgIDogU2NyaXB0RXhlY3V0YWJsZSh2bS5mdW5jdGlvbkV4ZWN1
dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIHZtLCBzb3VyY2UsIHVubGlua2VkRXhlY3V0YWJsZS0+aXNJ
blN0cmljdENvbnRleHQoKSwgdW5saW5rZWRFeGVjdXRhYmxlLT5pc0Rlcml2ZWRDb25zdHJ1Y3Rv
ckNvbnRleHQoKSwgZmFsc2UpCisgICAgOiBTY3JpcHRFeGVjdXRhYmxlKHZtLmZ1bmN0aW9uRXhl
Y3V0YWJsZVN0cnVjdHVyZS5nZXQoKSwgdm0sIHNvdXJjZSwgdW5saW5rZWRFeGVjdXRhYmxlLT5p
c0luU3RyaWN0Q29udGV4dCgpLCB1bmxpbmtlZEV4ZWN1dGFibGUtPmRlcml2ZWRDb250ZXh0VHlw
ZSgpLCBmYWxzZSkKICAgICAsIG1fdW5saW5rZWRFeGVjdXRhYmxlKHZtLCB0aGlzLCB1bmxpbmtl
ZEV4ZWN1dGFibGUpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoIXNvdXJjZS5pc051bGwoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKaW5kZXggODZhNTc3NzA4
Zjk1ZjY5NWVkMzIyMDE0MjE5MzgyMDBjMjcwMGY1Yy4uNTA2YTMxZjI0ODYyMzJmZjg1NTQwNDc5
YjllNTY5ZjM5OTJmNDMzOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1
dGFibGUuaApAQCAtMzQ2LDcgKzM0Niw4IEBAIHB1YmxpYzoKICAgICBib29sIG5lZWRzQWN0aXZh
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faGFzQ2FwdHVyZWRWYXJpYWJsZXMgfHwgbV9mZWF0dXJl
cyAmIChFdmFsRmVhdHVyZSB8IFdpdGhGZWF0dXJlKTsgfQogICAgIGJvb2wgaXNBcnJvd0Z1bmN0
aW9uQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1faXNBcnJvd0Z1bmN0aW9uQ29udGV4dDsgfQog
ICAgIGJvb2wgaXNTdHJpY3RNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9mZWF0dXJlcyAmIFN0cmlj
dE1vZGVGZWF0dXJlOyB9Ci0gICAgYm9vbCBpc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoKSBj
b25zdCB7IHJldHVybiBtX2lzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dDsgfQorICAgIERlcml2
ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUoKSBjb25zdCB7IHJldHVybiBtX2Rlcml2
ZWRDb250ZXh0VHlwZTsgfQorCiAgICAgRUNNQU1vZGUgZWNtYU1vZGUoKSBjb25zdCB7IHJldHVy
biBpc1N0cmljdE1vZGUoKSA/IFN0cmljdE1vZGUgOiBOb3RTdHJpY3RNb2RlOyB9CiAgICAgICAg
IAogICAgIHZvaWQgc2V0TmV2ZXJJbmxpbmUoYm9vbCB2YWx1ZSkgeyBtX25ldmVySW5saW5lID0g
dmFsdWU7IH0KQEAgLTM5NSw3ICszOTYsNyBAQCBwcml2YXRlOgogICAgIEpTT2JqZWN0KiBwcmVw
YXJlRm9yRXhlY3V0aW9uSW1wbChFeGVjU3RhdGUqLCBKU0Z1bmN0aW9uKiwgSlNTY29wZSosIENv
ZGVTcGVjaWFsaXphdGlvbktpbmQpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgU2NyaXB0RXhlY3V0YWJs
ZShTdHJ1Y3R1cmUqLCBWTSYsIGNvbnN0IFNvdXJjZUNvZGUmLCBib29sIGlzSW5TdHJpY3RDb250
ZXh0LCBib29sIGlzSW5EZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0LCBib29sIGlzSW5BcnJvd0Z1
bmN0aW9uQ29udGV4dCk7CisgICAgU2NyaXB0RXhlY3V0YWJsZShTdHJ1Y3R1cmUqLCBWTSYsIGNv
bnN0IFNvdXJjZUNvZGUmLCBib29sIGlzSW5TdHJpY3RDb250ZXh0LCBEZXJpdmVkQ29udGV4dFR5
cGUsIGJvb2wgaXNJbkFycm93RnVuY3Rpb25Db250ZXh0KTsKIAogICAgIHZvaWQgZmluaXNoQ3Jl
YXRpb24oVk0mIHZtKQogICAgIHsKQEAgLTQxNCw3ICs0MTUsNyBAQCBwcm90ZWN0ZWQ6CiAgICAg
Ym9vbCBtX25ldmVySW5saW5lOwogICAgIGJvb2wgbV9uZXZlck9wdGltaXplIHsgZmFsc2UgfTsK
ICAgICBib29sIG1fZGlkVHJ5VG9FbnRlckluTG9vcDsKLSAgICBib29sIG1faXNEZXJpdmVkQ29u
c3RydWN0b3JDb250ZXh0OworICAgIERlcml2ZWRDb250ZXh0VHlwZSBtX2Rlcml2ZWRDb250ZXh0
VHlwZTsKICAgICBib29sIG1faXNBcnJvd0Z1bmN0aW9uQ29udGV4dDsKICAgICBpbnQgbV9vdmVy
cmlkZUxpbmVOdW1iZXI7CiAgICAgaW50IG1fZmlyc3RMaW5lOwpAQCAtNDM4LDcgKzQzOSw3IEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fZXZhbENvZGVCbG9jay5nZXQoKTsKICAgICB9CiAK
LSAgICBzdGF0aWMgRXZhbEV4ZWN1dGFibGUqIGNyZWF0ZShFeGVjU3RhdGUqLCBjb25zdCBTb3Vy
Y2VDb2RlJiwgYm9vbCBpc0luU3RyaWN0Q29udGV4dCwgVGhpc1REWk1vZGUsIGJvb2wgaXNEZXJp
dmVkQ29uc3RydWN0b3JDb250ZXh0LCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGNvbnN0
IFZhcmlhYmxlRW52aXJvbm1lbnQqKTsKKyAgICBzdGF0aWMgRXZhbEV4ZWN1dGFibGUqIGNyZWF0
ZShFeGVjU3RhdGUqLCBjb25zdCBTb3VyY2VDb2RlJiwgYm9vbCBpc0luU3RyaWN0Q29udGV4dCwg
VGhpc1REWk1vZGUsIERlcml2ZWRDb250ZXh0VHlwZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250
ZXh0LCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50Kik7CiAKICAgICBQYXNzUmVmUHRyPEpJVENv
ZGU+IGdlbmVyYXRlZEpJVENvZGUoKQogICAgIHsKQEAgLTQ1Miw4ICs0NTMsNyBAQCBwdWJsaWM6
CiAgICAgICAgIAogICAgIERFQ0xBUkVfSU5GTzsKIAotCi0gICAgRXhlY3V0YWJsZUluZm8gZXhl
Y3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRp
b24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0
b3JLaW5kOjpOb25lLCBHZW5lcmF0b3JUaGlzTW9kZTo6Tm9uRW1wdHksIFN1cGVyQmluZGluZzo6
Tm90TmVlZGVkLCBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlLCBpc0Rlcml2ZWRDb25zdHJ1
Y3RvckNvbnRleHQoKSwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCgpKTsgfQorICAgIEV4ZWN1dGFi
bGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVl
ZHNBY3RpdmF0aW9uKCksIHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2Us
IENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgR2VuZXJhdG9yVGhpc01vZGU6Ok5vbkVtcHR5LCBTdXBl
ckJpbmRpbmc6Ok5vdE5lZWRlZCwgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZSwgZGVyaXZl
ZENvbnRleHRUeXBlKCksIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQoKSAsIGZhbHNlKTsgfQogCiAg
ICAgdW5zaWduZWQgbnVtVmFyaWFibGVzKCkgeyByZXR1cm4gbV91bmxpbmtlZEV2YWxDb2RlQmxv
Y2stPm51bVZhcmlhYmxlcygpOyB9CiAgICAgdW5zaWduZWQgbnVtYmVyT2ZGdW5jdGlvbkRlY2xz
KCkgeyByZXR1cm4gbV91bmxpbmtlZEV2YWxDb2RlQmxvY2stPm51bWJlck9mRnVuY3Rpb25EZWNs
cygpOyB9CkBAIC00NjEsNyArNDYxLDggQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBmcmllbmQg
Y2xhc3MgRXhlY3V0YWJsZUJhc2U7CiAgICAgZnJpZW5kIGNsYXNzIFNjcmlwdEV4ZWN1dGFibGU7
Ci0gICAgRXZhbEV4ZWN1dGFibGUoRXhlY1N0YXRlKiwgY29uc3QgU291cmNlQ29kZSYsIGJvb2wg
aW5TdHJpY3RDb250ZXh0LCBib29sIGlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCwgYm9vbCBp
c0Fycm93RnVuY3Rpb25Db250ZXh0KTsKKworICAgIEV2YWxFeGVjdXRhYmxlKEV4ZWNTdGF0ZSos
IGNvbnN0IFNvdXJjZUNvZGUmLCBib29sIGluU3RyaWN0Q29udGV4dCwgRGVyaXZlZENvbnRleHRU
eXBlLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQpOwogCiAgICAgc3RhdGljIHZvaWQgdmlz
aXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCkBAIC01MDYsNyArNTA3LDcgQEAg
cHVibGljOgogICAgICAgICAKICAgICBERUNMQVJFX0lORk87CiAKLSAgICBFeGVjdXRhYmxlSW5m
byBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0
aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBDb25z
dHJ1Y3RvcktpbmQ6Ok5vbmUsIEdlbmVyYXRvclRoaXNNb2RlOjpOb25FbXB0eSwgU3VwZXJCaW5k
aW5nOjpOb3ROZWVkZWQsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUsIGlzRGVyaXZlZENv
bnN0cnVjdG9yQ29udGV4dCgpLCBmYWxzZSk7IH0KKyAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRh
YmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigp
LCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3Rvcktp
bmQ6Ok5vbmUsIEdlbmVyYXRvclRoaXNNb2RlOjpOb25FbXB0eSwgU3VwZXJCaW5kaW5nOjpOb3RO
ZWVkZWQsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUsIGRlcml2ZWRDb250ZXh0VHlwZSgp
LCBpc0Fycm93RnVuY3Rpb25Db250ZXh0KCksIGZhbHNlKTsgfQogCiBwcml2YXRlOgogICAgIGZy
aWVuZCBjbGFzcyBFeGVjdXRhYmxlQmFzZTsKQEAgLTU0Nyw3ICs1NDgsNyBAQCBwdWJsaWM6CiAK
ICAgICBERUNMQVJFX0lORk87CiAKLSAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygp
IGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZh
bCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUs
IEdlbmVyYXRvclRoaXNNb2RlOjpOb25FbXB0eSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIFNv
dXJjZVBhcnNlTW9kZTo6TW9kdWxlRXZhbHVhdGVNb2RlLCBpc0Rlcml2ZWRDb25zdHJ1Y3RvckNv
bnRleHQoKSwgZmFsc2UpOyB9CisgICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBj
b25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwo
KSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBH
ZW5lcmF0b3JUaGlzTW9kZTo6Tm9uRW1wdHksIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBTb3Vy
Y2VQYXJzZU1vZGU6Ok1vZHVsZUV2YWx1YXRlTW9kZSwgZGVyaXZlZENvbnRleHRUeXBlKCksIGlz
QXJyb3dGdW5jdGlvbkNvbnRleHQoKSwgZmFsc2UpOyB9CiAKICAgICBVbmxpbmtlZE1vZHVsZVBy
b2dyYW1Db2RlQmxvY2sqIHVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jaygpIHsgcmV0dXJu
IG1fdW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrLmdldCgpOyB9CiAKQEAgLTY1Nyw3ICs2
NTgsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5pc0J1aWx0aW5GdW5jdGlvbigpOyB9CiAgICAgQ29u
c3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5KCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtl
ZEV4ZWN1dGFibGUtPmNvbnN0cnVjdEFiaWxpdHkoKTsgfQogICAgIGJvb2wgaXNBcnJvd0Z1bmN0
aW9uKCkgY29uc3QgeyByZXR1cm4gcGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpBcnJv
d0Z1bmN0aW9uTW9kZTsgfQotICAgIGJvb2wgaXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KCkg
Y29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPmlzRGVyaXZlZENvbnN0cnVjdG9y
Q29udGV4dCgpOyB9CisgICAgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSgp
IGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5kZXJpdmVkQ29udGV4dFR5cGUo
KTsgfQogICAgIGJvb2wgaXNDbGFzc0NvbnN0cnVjdG9yRnVuY3Rpb24oKSBjb25zdCB7IHJldHVy
biBtX3VubGlua2VkRXhlY3V0YWJsZS0+aXNDbGFzc0NvbnN0cnVjdG9yRnVuY3Rpb24oKTsgfQog
ICAgIGNvbnN0IElkZW50aWZpZXImIG5hbWUoKSB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJs
ZS0+bmFtZSgpOyB9CiAgICAgY29uc3QgSWRlbnRpZmllciYgaW5mZXJyZWROYW1lKCkgeyByZXR1
cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPmluZmVycmVkTmFtZSgpOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5j
cHAKaW5kZXggY2UxZTNiYjc4ZjBkNTM5YTI2NWU4MmViZmQ3NTAxNTAxMThlNzBjMy4uZDZiMjcz
NWI4ZGRiOGFiNTMxZTQxMmE2Y2I1ZGYyMzk4NDEyZDk3MyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcApA
QCAtNTgxLDcgKzU4MSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVu
Y0V2YWwoRXhlY1N0YXRlKiBleGVjKQogCiAgICAgSlNHbG9iYWxPYmplY3QqIGNhbGxlZUdsb2Jh
bE9iamVjdCA9IGV4ZWMtPmNhbGxlZSgpLT5nbG9iYWxPYmplY3QoKTsKICAgICBWYXJpYWJsZUVu
dmlyb25tZW50IGVtcHR5VERaVmFyaWFibGVzOyAvLyBJbmRpcmVjdCBldmFsIGRvZXMgbm90IGhh
dmUgYWNjZXNzIHRvIHRoZSBsZXhpY2FsIHNjb3BlLgotICAgIEV2YWxFeGVjdXRhYmxlKiBldmFs
ID0gRXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShleGVjLCBtYWtlU291cmNlKHMpLCBmYWxzZSwgVGhp
c1REWk1vZGU6OkNoZWNrSWZOZWVkZWQsIGZhbHNlLCBmYWxzZSwgJmVtcHR5VERaVmFyaWFibGVz
KTsKKyAgICBFdmFsRXhlY3V0YWJsZSogZXZhbCA9IEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoZXhl
YywgbWFrZVNvdXJjZShzKSwgZmFsc2UsIFRoaXNURFpNb2RlOjpDaGVja0lmTmVlZGVkLCBEZXJp
dmVkQ29udGV4dFR5cGU6Ok5vbmUsIGZhbHNlLCAmZW1wdHlURFpWYXJpYWJsZXMpOwogICAgIGlm
ICghZXZhbCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi55YW1sIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi55YW1sCmluZGV4IDdlNjNhYmQ4MmVmNGNiYjU5
NGMyNTBlM2U5ZDhlN2EwODEzYTcyZmIuLjYyMTliNTliNjU1YjFlMTYwYTQxZjFjOGMwY2Y4NTFi
YjJjMmEwZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYueWFt
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2LnlhbWwKQEAgLTc0Nyw3ICs3
NDcsNyBAQAogLSBwYXRoOiBlczYvYXJyb3dfZnVuY3Rpb25zX2xleGljYWxfbmV3LnRhcmdldF9i
aW5kaW5nLmpzCiAgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2Fycm93X2Z1bmN0
aW9uc19sZXhpY2FsX3N1cGVyX2JpbmRpbmcuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21k
OiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvYXJyb3dfZnVuY3Rpb25zX25vX3Byb3RvdHlw
ZV9wcm9wZXJ0eS5qcwogICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9ibG9jay1s
ZXZlbF9mdW5jdGlvbl9kZWNsYXJhdGlvbi5qcwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC1zdXBlcnByb3Bl
cnR5LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9u
LWxleGljYWwtYmluZC1zdXBlcnByb3BlcnR5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFhNmNmMWViMGEyMWFm
OGY0OWFiZGYwODUxMmUwMzdjODI1ZTA2MzMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXN1cGVy
cHJvcGVydHkuanMKQEAgLTAsMCArMSwyMjQgQEAKK3ZhciB0ZXN0Q2FzZSA9IGZ1bmN0aW9uIChh
Y3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7CisgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKSB7
CisgICAgdGhyb3cgbWVzc2FnZSArICIuIEV4cGVjdGVkICciICsgZXhwZWN0ZWQgKyAiJywgYnV0
IHdhcyAnIiArIGFjdHVhbCArICInIjsKKyAgfQorfTsKKwordmFyIHRlc3RWYWx1ZSAgPSAndGVz
dC12YWx1ZSc7CisKK3ZhciBBID0gY2xhc3MgQSB7CisgICAgY29uc3RydWN0b3IoKSB7CisgICAg
ICB0aGlzLnZhbHVlID0gdGVzdFZhbHVlOworICAgIH0KKyAgICBnZXRDb25zdFZhbHVlICgpIHsK
KyAgICAgIHJldHVybiB0ZXN0VmFsdWU7CisgICAgfQorICAgIGdldFZhbHVlICgpIHsKKyAgICAg
IHJldHVybiB0aGlzLnZhbHVlOworICAgIH0KKyAgICBzZXRWYWx1ZSAodmFsdWUpIHsKKyAgICAg
IHRoaXMudmFsdWUgPSB2YWx1ZTsKKyAgICB9Cit9OworCit2YXIgQiA9IGNsYXNzIEIgZXh0ZW5k
cyBBIHsKKyAgZ2V0UGFyZW50VmFsdWUoKSB7CisgICAgdmFyIGFycm93ICA9ICgpID0+IHN1cGVy
LmdldFZhbHVlKCk7CisgICAgcmV0dXJuIGFycm93KCk7CisgIH0KK307CisKK3ZhciBDID0gY2xh
c3MgQyB7CisgIGNvbnN0cnVjdG9yKCkgeworICAgIHRoaXMudmFsdWUgPSB0ZXN0VmFsdWU7Cisg
IH0KKyAgc3RhdGljIGdldFN0YXRpY1ZhbHVlKCkgeworICAgIHJldHVybiB0ZXN0VmFsdWU7Cisg
IH0KK307CisKK3ZhciBEID0gY2xhc3MgRCBleHRlbmRzIEMgeworICBzdGF0aWMgZ2V0UGFyZW50
U3RhdGljVmFsdWUoKSB7CisgICAgdmFyIGFycm93ICA9ICgpID0+IHN1cGVyLmdldFN0YXRpY1Zh
bHVlKCk7CisgICAgcmV0dXJuIGFycm93KCk7CisgIH0KK307CisKK3ZhciBFID0gY2xhc3MgRSBl
eHRlbmRzIEEgeworICAgICBjb25zdHJ1Y3RvcigpIHsKKyAgICAgICAgIHN1cGVyKCk7CisgICAg
IH0KKyAgICAgZ2V0IHByb3AoKSB7CisgICAgICAgICB2YXIgYXJyb3cgPSAoKSA9PiBzdXBlci5n
ZXRDb25zdFZhbHVlKCkgKyAnLScgKyB0aGlzLnZhbHVlOworICAgICAgICAgcmV0dXJuIGFycm93
KCk7CisgICAgIH0KKyAgICAgc2V0IHByb3AodmFsdWUpIHsKKyAgICAgICAgIHZhciBhcnJvdyA9
IChuZXdWYWwpID0+IHN1cGVyLnNldFZhbHVlKG5ld1ZhbCk7CisgICAgICAgICBhcnJvdyh2YWx1
ZSk7CisgICAgIH0KKyAgICAgc2V0SW5pdFZhbHVlKCkgeworICAgICAgIHRoaXMudmFsdWUgPSB0
ZXN0VmFsdWU7CisgICAgIH0KKyB9OworCit2YXIgYiA9IG5ldyBCKCk7Citmb3IgKHZhciBpID0g
MDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgIHRlc3RDYXNlKGIuZ2V0UGFyZW50VmFsdWUoKSwgdGVz
dFZhbHVlLCBpKTsKK30KKworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7CisgICB0
ZXN0Q2FzZShELmdldFBhcmVudFN0YXRpY1ZhbHVlKCksIHRlc3RWYWx1ZSwgaSk7Cit9CisKK3Zh
ciBlID0gbmV3IEUoKTsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgeworICAgZS5z
ZXRJbml0VmFsdWUoKTsKKyAgIHRlc3RDYXNlKGUucHJvcCwgdGVzdFZhbHVlKyctJyt0ZXN0VmFs
dWUsIGkpOworICAgZS5wcm9wID0gJ25ldy10ZXN0LXZhbHVlJzsKKyAgIHRlc3RDYXNlKGUucHJv
cCwgdGVzdFZhbHVlKyctbmV3LXRlc3QtdmFsdWUnLCBpKTsKK30KKwordmFyIEYgID0gY2xhc3Mg
RiBleHRlbmRzIEEgeworICBuZXdNZXRob2QoKSB7CisgICAgdmFyIGFycm93ICA9ICgpID0+IGV2
YWwoJ3N1cGVyLmdldFZhbHVlKCknKTsKKyAgICB2YXIgciA9IGFycm93KCk7CisgICAgcmV0dXJu
IHI7CisgIH0KK307CisKK3ZhciBmID0gbmV3IEYoKTsKK2ZvciAodmFyIGk9MDsgaSA8IDEwMDAw
OyBpKyspIHsKKyAgdHJ5IHsKKyAgICAgdmFyIHJlc3VsdCA9IGYubmV3TWV0aG9kKCk7CisgICAg
IHRlc3RDYXNlKHJlc3VsdCwgdGVzdFZhbHVlLCBpKTsKKyAgIH0gY2F0Y2goZSkgeworICAgICBp
ZiAoIShlIGluc3RhbmNlb2YgU3ludGF4RXJyb3IpKQorICAgICAgICB0aHJvdyBlOworICAgfQor
fQorCit2YXIgRyA9IGNsYXNzIEcgZXh0ZW5kcyBBIHsKKyAgICAgY29uc3RydWN0b3IoKSB7Cisg
ICAgICAgICBzdXBlcigpOworICAgICB9CisgICAgIGdldCBwcm9wKCkgeworICAgICAgICAgdmFy
IGFycm93ID0gKCkgPT4gKCkgPT4gc3VwZXIuZ2V0Q29uc3RWYWx1ZSgpICsgJy0nICsgdGhpcy52
YWx1ZTsKKyAgICAgICAgIHJldHVybiBhcnJvdygpKCk7CisgICAgIH0KKyAgICAgc2V0IHByb3Ao
dmFsdWUpIHsKKyAgICAgICAgIHZhciBhcnJvdyA9ICAoKSA9PiAobmV3VmFsKSA9PiB0aGlzLnZh
bHVlID0gbmV3VmFsOworICAgICAgICAgYXJyb3coKSh2YWx1ZSk7CisgICAgIH0KKyAgICAgc2V0
SW5pdFZhbHVlKCkgeworICAgICAgIHRoaXMudmFsdWUgPSB0ZXN0VmFsdWU7CisgICAgIH0KKyAg
ICAgZ2V0VmFsdWVDQigpIHsKKyAgICAgICB2YXIgYXJyb3cgID0gKCkgPT4gc3VwZXIuZ2V0VmFs
dWUoKTsKKyAgICAgICByZXR1cm4gYXJyb3c7CisgICAgIH0KKyAgICAgc2V0VmFsdWVDQigpIHsK
KyAgICAgICB2YXIgYXJyb3cgPSAgKG5ld1ZhbCkgPT4gdGhpcy52YWx1ZSA9IG5ld1ZhbDsKKyAg
ICAgICByZXR1cm4gYXJyb3c7CisgICAgIH0KKyAgICAgZ2V0UGFyZW50VmFsdWUoKSB7CisgICAg
ICAgcmV0dXJuIHN1cGVyLmdldFZhbHVlKCk7CisgICAgIH0KKyAgICAgZ2V0UGFyZW50VmFsdWVX
aXRoRXJyb3IoKSB7CisgICAgICAgdmFyIGYgPSAgZnVuY3Rpb24gKCkgeworICAgICAgICAgcmV0
dXJuICgpID0+IHN1cGVyLmdldFZhbHVlKCk7CisgICAgICAgfTsKKyAgICAgICByZXR1cm4gZigp
OworICAgICB9CisgfTsKKworIHZhciBnID0gbmV3IEcoKTsKKyBmb3IgKHZhciBpID0gMDsgaSA8
IDEwMDAwOyBpKyspIHsKKyAgICBnLnNldEluaXRWYWx1ZSgpOworICAgIHRlc3RDYXNlKGcucHJv
cCwgdGVzdFZhbHVlICsgJy0nICsgdGVzdFZhbHVlLCAnRXJyb3I6IFNvbWUgcHJvYmxlbSB3aXRo
IHVzaW5nIGFycm93IGFuZCAic3VwZXIiIGluc2lkZSBvZiB0aGUgbWV0aG9kJyk7CisgICAgZy5w
cm9wID0gJ25ldy10ZXN0LXZhbHVlJzsKKyAgICB0ZXN0Q2FzZShnLnByb3AsIHRlc3RWYWx1ZSAr
ICctbmV3LXRlc3QtdmFsdWUnLCAnRXJyb3I6IFNvbWUgcHJvYmxlbSB3aXRoIHVzaW5nIGFycm93
IGFuZCAic3VwZXIiIGluc2lkZSBvZiB0aGUgZ2V0dGVyIGFuZCBzZXR0ZXInKTsKKyB9CisKK3Zh
ciBnMSA9IG5ldyBHKCk7Citmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgZzEu
c2V0SW5pdFZhbHVlKCk7CisgIGxldCBnZXRWYWx1ZSA9IGcxLmdldFZhbHVlQ0IoKTsKKyAgdGVz
dENhc2UoZ2V0VmFsdWUoKSwgdGVzdFZhbHVlLCAgJ0Vycm9yOiBTb21lIHByb2JsZW0gd2l0aCB1
c2luZyBhcnJvdyBhbmQgInN1cGVyIiBpbnNpZGUgb2YgdGhlIG1ldGhvZCB0aGF0IHJldHVuIGFy
cm93IGZ1bmN0aW9uJyk7CisgIGxldCBzZXRWYWx1ZSA9IGcxLnNldFZhbHVlQ0IoKTsKKyAgc2V0
VmFsdWUoJ25ldy12YWx1ZScpOworICB0ZXN0Q2FzZShnZXRWYWx1ZSgpLCAnbmV3LXZhbHVlJywg
J0Vycm9yOiBTb21lIHByb2JsZW0gd2l0aCB1c2luZyBhcnJvdyBhbmQgInN1cGVyIiBpbnNpZGUg
b2YgdGhlIG1ldGhvZCB0aGF0IHJldHVuIGFycm93IGZ1bmN0aW9uJyk7Cit9CisKK3ZhciBnMiA9
IG5ldyBHKCk7Citmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgbGV0IGVycm9y
ID0gZmFsc2U7CisgIHRyeSB7CisgICAgIGcyLmdldFBhcmVudFZhbHVlV2l0aEVycm9yKCkoKTsK
KyAgfSBjYXRjaChlKSB7CisvLyBGaXhtZTogc2hvdWxkIGJ5IGNoZWNrIGlmIGUgaW5zdGFuY2Vv
ZiBTeW50YXhFcnJvciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUw
ODkzCisgICAgZXJvcnIgPSB0cnVlOworICB9CisgIHRlc3RDYXNlKGVyb3JyLCB0cnVlLCAnRXJy
b3I6IHVzaW5nICJzdXBlciIgc2hvdWxkIGxlYWQgdG8gZXJyb3InKTsKK30KKworCit2YXIgSCA9
IGNsYXNzIEggZXh0ZW5kcyBBIHsKKyAgY29uc3RydWN0b3IoKSB7CisgICAgdmFyIGFycm93ID0g
KCkgPT4gKCkgPT4gc3VwZXIuZ2V0VmFsdWUoKTsKKyAgICBzdXBlcigpOworICAgIHRoaXMubmV3
VmFsdWUgID0gYXJyb3coKSgpOworICB9Cit9OworCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAw
OyBpKyspIHsKKyAgbGV0IGggPSBuZXcgSCgpOworICB0ZXN0Q2FzZShoLm5ld1ZhbHVlLCB0ZXN0
VmFsdWUsICdFcnJvcjogU29tZSBwcm9ibGVtIHdpdGggdXNpbmcgInN1cGVyIiBpbnNpZGUgb2Yg
dGhlIGNvbnN0cnVjdG9yJyk7Cit9CisKK3ZhciBJID0gY2xhc3MgSSBleHRlbmRzIEEgeworICBj
b25zdHJ1Y3RvciAoYmVmb3JlU3VwZXIpIHsKKyAgICB2YXIgYXJyb3cgPSAoKSA9PiBzdXBlci5n
ZXRWYWx1ZSgpOworICAgIGlmIChiZWZvcmVTdXBlcikgIHsKKyAgICAgIHRoaXMuX3ZhbHVlID0g
YXJyb3coKTsKKyAgICAgIHN1cGVyKCk7CisgICAgfSBlbHNlIHsKKyAgICAgIHN1cGVyKCk7Cisg
ICAgICB0aGlzLl92YWx1ZSA9IGFycm93KCk7CisgICAgfQorICB9Cit9CisKK3ZhciBKID0gY2xh
c3MgSiBleHRlbmRzIEEgeworICBjb25zdHJ1Y3RvciAoYmVmb3JlU3VwZXIpIHsKKyAgICB2YXIg
X3ZhbHVlOworICAgIHZhciBhcnJvdyA9ICgpID0+IHN1cGVyLmdldENvbnN0VmFsdWUoKTsKKyAg
ICBpZiAoYmVmb3JlU3VwZXIpICB7CisgICAgICBfdmFsdWUgPSBzdXBlci5nZXRDb25zdFZhbHVl
KCk7CisgICAgICBzdXBlcigpOworICAgICB9IGVsc2UgeworICAgICAgc3VwZXIoKTsKKyAgICAg
IF92YWx1ZSA9IGFycm93KCk7CisgICAgfQorICAgIHRoaXMuX3ZhbHVlID0gX3ZhbHVlOworICB9
Cit9CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgeworICBsZXQgaSA9IG5ldyBJ
KGZhbHNlKTsKKyAgdGVzdENhc2UoaS5fdmFsdWUsIHRlc3RWYWx1ZSwgJ0Vycm9yOiBTb21lIHBy
b2JsZW0gd2l0aCB1c2luZyAic3VwZXIiIGluc2lkZSBvZiB0aGUgY29uc3RydWN0b3InKTsKKyAg
bGV0IGogPSBuZXcgSihmYWxzZSk7CisgIHRlc3RDYXNlKGouX3ZhbHVlLCB0ZXN0VmFsdWUsICdF
cnJvcjogU29tZSBwcm9ibGVtIHdpdGggdXNpbmcgInN1cGVyIiBpbnNpZGUgb2YgdGhlIGNvbnN0
cnVjdG9yJyk7CisKKy8vIEZJWE1FOiBQcm9ibGVtIHdpdGggYWNjZXNzIHRvIHRoZSBzdXBlciBi
ZWZvcmUgc3VwZXIgaW4gY29uc3RydWN0b3IKKy8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNTIxMDgKKy8vICBsZXQgajIgPSBuZXcgSih0cnVlKTsKKy8vICB0ZXN0
Q2FzZShqMi5fdmFsdWUsIHRlc3RWYWx1ZSwgJ0Vycm9yOiBTb21lIHByb2JsZW0gd2l0aCB1c2lu
ZyAic3VwZXIiIGluc2lkZSBvZiB0aGUgY29uc3RydWN0b3InKTsKKworICBlcm9yciA9IGZhbHNl
OworICB0cnkgeworICAgICAgbmV3IEkodHJ1ZSk7CisgIH0gY2F0Y2ggKGUpIHsKKyAgICAgIGVy
b3JyID0gZSBpbnN0YW5jZW9mIFJlZmVyZW5jZUVycm9yOworICB9CisgIHRlc3RDYXNlKGVyb3Jy
LCB0cnVlLCAnRXJyb3I6IHVzaW5nICJzdXBlciIgcHJvcGVydHkgYmVmb3JlIHN1cGVyKCkgc2hv
dWxkIGxlYWQgdG8gZXJyb3InKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4YzRlNWM4ZTM2ZTBhMmZkNWU3MDg1NDY1
ZTgwYjg1YWUyYjIyNTEzLi5hZWYzNGE5ZmIyZjZjNTkyNmE3NTg0MGM2NDJiNzQ3MzhhZGU5Y2Uy
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTUtMTItMTAgIFNrYWNoa292IE9sZWtzYW5kciAg
PGdza2FjaGtvdkBnbWFpbC5jb20+CisKKyAgICAgICAgW0VTNl0gQXJyb3cgZnVuY3Rpb24gc3lu
dGF4LiBBcnJvdyBmdW5jdGlvbiBzcGVjaWZpYyBmZWF0dXJlcy4gTGV4aWNhbCBiaW5kICJzdXBl
ciIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0OTYx
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICoganMv
YXJyb3dmdW5jdGlvbi1zdXBlcnByb3BlcnR5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICoganMvYXJyb3dmdW5jdGlvbi1zdXBlcnByb3BlcnR5Lmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGpzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXN1cGVycHJvcGVydHkuanM6IEFkZGVkLgor
CiAyMDE1LTEyLTA1ICBTa2FjaGtvdiBPbGVrc2FuZHIgIDxnc2thY2hrb3ZAZ21haWwuY29tPgog
CiAgICAgICAgIFtFUzZdICJzdXBlciIgYW5kICJ0aGlzIiBzaG91bGQgYmUgbGV4aWNhbGx5IGJv
dW5kIGluc2lkZSBhbiBhcnJvdyBmdW5jdGlvbiBhbmQgc2hvdWxkIGxpdmUgaW4gYSBKU0xleGlj
YWxFbnZpcm9ubWVudApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1z
dXBlcnByb3BlcnR5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24t
c3VwZXJwcm9wZXJ0eS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2RmMmM0OTVmYjlmZjFlMjc2
MzMwZjE1M2MxNDBiYjVmZjVmNDlkMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pz
L2Fycm93ZnVuY3Rpb24tc3VwZXJwcm9wZXJ0eS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNiBA
QAorVGVzdHMgZm9yIEVTNiBhcnJvdyBmdW5jdGlvbiwgYWNjZXNzIHRvIHRoZSBzdXBlciBwcm9w
ZXJ0eSBpbiBhcnJvdyBmdW5jdGlvbgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKwor
UEFTUyAobmV3IEIoKSkuZ2V0VmFsdWVQYXJlbnRGdW5jdGlvbigpIGlzIGV4cGVjdGVkVmFsdWUK
K1BBU1MgKG5ldyBDKGZhbHNlKSkudmFsdWUgaXMgZXhwZWN0ZWRWYWx1ZQorUEFTUyBFLmdldFBh
cmVudFN0YXRpY1ZhbHVlKCkgaXMgZXhwZWN0ZWRWYWx1ZQorUEFTUyBmLnByb3AgaXMgZXhwZWN0
ZWRWYWx1ZSArICItIiArIGV4cGVjdGVkVmFsdWUKK1BBU1MgZi5wcm9wIGlzIGV4cGVjdGVkVmFs
dWUgKyAiLSIgKyAibmV3LXZhbHVlIgorUEFTUyAobmV3IEYoKSkuZ2V0UGFyZW50VmFsdWUoKSBp
cyBleHBlY3RlZFZhbHVlCitQQVNTIChuZXcgRigpKS5nZXRQYXJlbnRWYWx1ZVdpdGhFcnJvcigp
KCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3Qg
KGV2YWx1YXRpbmcgJ3N1cGVyLmdldFZhbHVlJykuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvYXJy
b3dmdW5jdGlvbi1zdXBlcnByb3BlcnR5Lmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0
aW9uLXN1cGVycHJvcGVydHkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMmI1MDVmNzk5NDViN2NhMzljOTZj
YzcxOWFjZGM5NWZmNWJhMGZkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvYXJy
b3dmdW5jdGlvbi1zdXBlcnByb3BlcnR5Lmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPCFET0NUWVBF
IEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxz
Y3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tc3VwZXJw
cm9wZXJ0eS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1zdXBlcnByb3BlcnR5LmpzIGIvTGF5
b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tc3VwZXJwcm9wZXJ0eS5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi43MzRjYzA5ZTU3NjY4ZDJhYTQ4MjlkMWRjYzdjZjg3NWQwOGUxZTBjCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24t
c3VwZXJwcm9wZXJ0eS5qcwpAQCAtMCwwICsxLDk2IEBACitkZXNjcmlwdGlvbignVGVzdHMgZm9y
IEVTNiBhcnJvdyBmdW5jdGlvbiwgYWNjZXNzIHRvIHRoZSBzdXBlciBwcm9wZXJ0eSBpbiBhcnJv
dyBmdW5jdGlvbicpOworCit2YXIgZXhwZWN0ZWRWYWx1ZSAgPSAndGVzdC12YWx1ZSc7CisKK2Ns
YXNzIEEgeworICAgIGdldFZhbHVlICgpIHsKKyAgICAgIHJldHVybiBleHBlY3RlZFZhbHVlOwor
ICAgIH0KK307CisKK2NsYXNzIEIgZXh0ZW5kcyBBIHsKKyAgZ2V0VmFsdWVQYXJlbnRGdW5jdGlv
bigpIHsKKyAgICB2YXIgYXJyb3cgID0gKCkgPT4gc3VwZXIuZ2V0VmFsdWUoKTsKKyAgICByZXR1
cm4gYXJyb3coKTsKKyAgfQorfTsKKworY2xhc3MgQyBleHRlbmRzIEIgeworICAgY29uc3RydWN0
b3IoYmVmb3JlU3VwZXIpIHsKKyAgICAgbGV0IF92YWx1ZTsKKyAgICAgbGV0IGFycm93ID0gKCkg
PT4gc3VwZXIuZ2V0VmFsdWUoKTsKKyAgICAgaWYgKGJlZm9yZVN1cGVyKSB7CisgICAgICAgIF92
YWx1ZSA9IGFycm93KCk7CisgICAgICAgIHN1cGVyKCk7CisgICAgIH0gZWxzZSB7CisgICAgICAg
IHN1cGVyKCk7CisgICAgICAgIF92YWx1ZSA9IGFycm93KCk7CisgICAgIH0KKyAgICAgdGhpcy52
YWx1ZSA9IF92YWx1ZTsKKyAgIH0KK307CisKK2NsYXNzIEQgeworICBjb25zdHJ1Y3RvcigpIHsK
KyAgICB0aGlzLnZhbHVlID0gZXhwZWN0ZWRWYWx1ZTsKKyAgfQorICBzdGF0aWMgZ2V0U3RhdGlj
VmFsdWUoKSB7CisgICAgcmV0dXJuIGV4cGVjdGVkVmFsdWU7CisgIH0KK307CisKK2NsYXNzIEUg
ZXh0ZW5kcyBEIHsKKyAgc3RhdGljIGdldFBhcmVudFN0YXRpY1ZhbHVlKCkgeworICAgIHZhciBh
cnJvdyAgPSAoKSA9PiBzdXBlci5nZXRTdGF0aWNWYWx1ZSgpOworICAgIHJldHVybiBhcnJvdygp
OworICB9Cit9OworCitjbGFzcyBGIGV4dGVuZHMgQSB7CisgICAgIGNvbnN0cnVjdG9yKCkgewor
ICAgICAgIHN1cGVyKCk7CisgICAgICAgdGhpcy52YWx1ZSA9IGV4cGVjdGVkVmFsdWU7CisgICAg
IH0KKyAgICAgZ2V0IHByb3AoKSB7CisgICAgICAgICB2YXIgYXJyb3cgPSAoKSA9PiBzdXBlci5n
ZXRWYWx1ZSgpKyAnLScgKyB0aGlzLnZhbHVlOworICAgICAgICAgcmV0dXJuIGFycm93KCk7Cisg
ICAgIH0KKyAgICAgc2V0IHByb3AodmFsdWUpIHsKKyAgICAgICAgIHZhciBhcnJvdyA9IChuZXdW
YWwpID0+IHRoaXMudmFsdWUgPSBuZXdWYWw7CisgICAgICAgICBhcnJvdyh2YWx1ZSk7CisgICAg
IH0KKyAgICAgZ2V0UGFyZW50VmFsdWUoKSB7CisgICAgICAgbGV0IGFycm93ID0gKCkgPT4gKCkg
PT4gc3VwZXIuZ2V0VmFsdWUoKTsKKyAgICAgICByZXR1cm4gYXJyb3coKSgpOworICAgICB9Cisg
ICAgIGdldFBhcmVudFZhbHVlV2l0aEVycm9yKCkgeworICAgICAgIHZhciBmID0gIGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgIHJldHVybiAoKSA9PiBzdXBlci5nZXRWYWx1ZSgpOworICAgICAgIH07
CisgICAgICAgcmV0dXJuIGYoKTsKKyAgICAgfQorIH07CisKK3Nob3VsZEJlKCcobmV3IEIoKSku
Z2V0VmFsdWVQYXJlbnRGdW5jdGlvbigpJywgJ2V4cGVjdGVkVmFsdWUnKTsKKworc2hvdWxkQmUo
JyhuZXcgQyhmYWxzZSkpLnZhbHVlJywgJ2V4cGVjdGVkVmFsdWUnKTsKKworLy8gRklYTUU6IFBy
b2JsZW0gd2l0aCBhY2Nlc3MgdG8gdGhlIHN1cGVyIGJlZm9yZSBzdXBlciBpbiBjb25zdHJ1Y3Rv
cgorLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MjEwOAorLy9z
aG91bGRUaHJvdygnKG5ldyBDKGZhbHNlKSknLCAnUmVmZXJlbmNlRXJyb3InKTsKKworCitzaG91
bGRCZSgnRS5nZXRQYXJlbnRTdGF0aWNWYWx1ZSgpJywgJ2V4cGVjdGVkVmFsdWUnKTsKKwordmFy
IGYgPSBuZXcgRigpOworCitzaG91bGRCZSgnZi5wcm9wJywgJ2V4cGVjdGVkVmFsdWUgKyAiLSIg
KyBleHBlY3RlZFZhbHVlJyk7CisKK2YucHJvcCA9ICduZXctdmFsdWUnOworc2hvdWxkQmUoJ2Yu
cHJvcCcsICdleHBlY3RlZFZhbHVlICsgIi0iICsgIm5ldy12YWx1ZSInKTsKKworc2hvdWxkQmUo
JyhuZXcgRigpKS5nZXRQYXJlbnRWYWx1ZSgpJywgJ2V4cGVjdGVkVmFsdWUnKTsKKworc2hvdWxk
VGhyb3coJyhuZXcgRigpKS5nZXRQYXJlbnRWYWx1ZVdpdGhFcnJvcigpKCknKTsKKwordmFyIHN1
Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267103</attachid>
            <date>2015-12-10 06:39:47 -0800</date>
            <delta_ts>2015-12-21 14:06:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-149615-20151210163914.patch</filename>
            <type>text/plain</type>
            <size>56605</size>
            <attacher name="GSkachkov">gskachkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkzODMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
OWE1YjA0ZTA5OWUxOTE4YmEyZDNlYWIwMDVlOGE0NjQwY2NiNGI1Li4wYTNhZTE1ZGQyYjk1OTA0
ODU4ZDFhNTQzNTQzOWIzOGE3M2UwZDc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2NCBAQAorMjAxNS0xMi0xMCAgQWxla3NhbmRyIFNrYWNoa292ICA8Z3NrYWNoa292QGdt
YWlsLmNvbT4KKworICAgICAgICBbRVM2XSBBcnJvdyBmdW5jdGlvbiBzeW50YXguIEFycm93IGZ1
bmN0aW9uIHNwZWNpZmljIGZlYXR1cmVzLiBMZXhpY2FsIGJpbmQgInN1cGVyIgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5NjE1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50ZWQgbGV4aWNh
bCBiaW5kICJzdXBlciIgcHJvcGVydHkgZm9yIGFycm93IGZ1bmN0aW9uLiAnc3VwZXInIHByb3Bl
cnR5IGNhbiBiZSBhY2Nlc3NlZCAKKyAgICAgICAgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlv
biBpbiBjYXNlIGlmIGFycm93IGZ1bmN0aW9uIGlzIG5lc3RlZCBpbiBtZXRob2QsIAorICAgICAg
ICBnZXR0ZXIgb3Igc2V0dGVyIG9mIGNsYXNzLiBJbiBjdXJyZW50IHBhdGNoIHVzaW5nICdzdXBl
cicgaW4gYXJyb3cgZnVuY3Rpb24sIHRoYXQgZGVjbGFyZWQgb3V0IG9mIHRoZSAKKyAgICAgICAg
Y2xhc3MsIGxlYWQgdG8gd3JvbmcgdHlwZSBvZiBlcnJvciwgc2hvdWxkIGJlIFN5bnRheEVycm9y
IGFuZCB0aGlzIHdpbGwgYmUgZml4ZWQgaW4gc2VwYXJldGUgcGF0Y2guCisKKyAgICAgICAgKiBi
dWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwOgorICAgICAgICAoSlNDOjpjcmVhdGVFeGVj
dXRhYmxlSW50ZXJuYWwpOgorICAgICAgICAqIGJ5dGVjb2RlL0V2YWxDb2RlQ2FjaGUuaDoKKyAg
ICAgICAgKEpTQzo6RXZhbENvZGVDYWNoZTo6Z2V0U2xvdyk6CisgICAgICAgICogYnl0ZWNvZGUv
RXhlY3V0YWJsZUluZm8uaDoKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUluZm86OkV4ZWN1dGFi
bGVJbmZvKToKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUluZm86OmRlcml2ZWRDb250ZXh0VHlw
ZSk6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVJbmZvOjppc0NsYXNzQ29udGV4dCk6CisgICAg
ICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpVbmxp
bmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2spOgorICAgICAgICAqIGJ5dGVjb2RlL1Vu
bGlua2VkQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpkZXJp
dmVkQ29udGV4dFR5cGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6aXNDbGFz
c0NvbnRleHQpOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
LmNwcDoKKyAgICAgICAgKEpTQzo6Z2VuZXJhdGVVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKToK
KyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZS5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0RGVyaXZlZENvbnN0cnVjdG9yVG9B
cnJvd0Z1bmN0aW9uQ29udGV4dFNjb3BlKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmRlcml2ZWRD
b250ZXh0VHlwZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjppc0Rlcml2ZWRD
b25zdHJ1Y3RvckNvbnRleHQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6aXNE
ZXJpdmVkQ2xhc3NDb250ZXh0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6Omlz
QXJyb3dGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjptYWtlRnVu
Y3Rpb24pOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAg
ICAoSlNDOjplbWl0SG9tZU9iamVjdEZvckNhbGxlZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9u
Q2FsbFZhbHVlTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dl
ckNhbGxGcmFtZS5jcHA6CisgICAgICAgIChKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lOjpldmFsdWF0
ZSk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlND
OjpldmFsKToKKyAgICAgICAgKiBydW50aW1lL0NvZGVDYWNoZS5jcHA6CisgICAgICAgIChKU0M6
OkNvZGVDYWNoZTo6Z2V0RnVuY3Rpb25FeGVjdXRhYmxlRnJvbUdsb2JhbENvZGUpOgorICAgICAg
ICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OlNjcmlwdEV4ZWN1dGFi
bGU6OlNjcmlwdEV4ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpFdmFsRXhlY3V0YWJsZTo6Y3Jl
YXRlKToKKyAgICAgICAgKEpTQzo6RXZhbEV4ZWN1dGFibGU6OkV2YWxFeGVjdXRhYmxlKToKKyAg
ICAgICAgKEpTQzo6UHJvZ3JhbUV4ZWN1dGFibGU6OlByb2dyYW1FeGVjdXRhYmxlKToKKyAgICAg
ICAgKEpTQzo6TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU6Ok1vZHVsZVByb2dyYW1FeGVjdXRhYmxl
KToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpGdW5jdGlvbkV4ZWN1dGFibGUp
OgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5oOgorICAgICAgICAoSlNDOjpTY3JpcHRF
eGVjdXRhYmxlOjpkZXJpdmVkQ29udGV4dFR5cGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9i
YWxPYmplY3RGdW5jdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpnbG9iYWxGdW5jRXZhbCk6Cisg
ICAgICAgICogdGVzdHMvZXM2LnlhbWw6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVu
Y3Rpb24tbGV4aWNhbC1iaW5kLXN1cGVycHJvcGVydHkuanM6IEFkZGVkLgorCiAyMDE1LTEyLTA1
IEFsZWtzYW5kciBTa2FjaGtvdiAgIDxnc2thY2hrb3ZAZ21haWwuY29tPgogCiAgICAgICAgIFtF
UzZdICJzdXBlciIgYW5kICJ0aGlzIiBzaG91bGQgYmUgbGV4aWNhbGx5IGJvdW5kIGluc2lkZSBh
biBhcnJvdyBmdW5jdGlvbiBhbmQgc2hvdWxkIGxpdmUgaW4gYSBKU0xleGljYWxFbnZpcm9ubWVu
dApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVj
dXRhYmxlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1
dGFibGVzLmNwcAppbmRleCBiODAwZjUxM2U5ZmFhYTU0YTI0MmQ1ZTEyNDM3ZjUwYzdmOWQ1NmQ4
Li5hNmJjZjc0NDM2ZmY5YzgyZTM5OTQ2ZWFmYTk0Y2UwMTM3MzFjYjcyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcApA
QCAtMTE1LDcgKzExNSw3IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGVFeGVj
dXRhYmxlSW50ZXJuYWwoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzCiAgICAgfQogICAgIG1l
dGFkYXRhLT5vdmVycmlkZU5hbWUobmFtZSk7CiAgICAgVmFyaWFibGVFbnZpcm9ubWVudCBkdW1t
eVREWlZhcmlhYmxlczsKLSAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25F
eGVjdXRhYmxlID0gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSgmdm0sIHNvdXJj
ZSwgbWV0YWRhdGEsIGtpbmQsIGNvbnN0cnVjdEFiaWxpdHksIEdlbmVyYXRvclRoaXNNb2RlOjpO
b25FbXB0eSwgZHVtbXlURFpWYXJpYWJsZXMsIGZhbHNlLCBXVEY6Om1vdmUoc291cmNlT3ZlcnJp
ZGUpKTsKKyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxl
ID0gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSgmdm0sIHNvdXJjZSwgbWV0YWRh
dGEsIGtpbmQsIGNvbnN0cnVjdEFiaWxpdHksIEdlbmVyYXRvclRoaXNNb2RlOjpOb25FbXB0eSwg
ZHVtbXlURFpWYXJpYWJsZXMsIERlcml2ZWRDb250ZXh0VHlwZTo6Tm9uZSwgV1RGOjptb3ZlKHNv
dXJjZU92ZXJyaWRlKSk7CiAgICAgZnVuY3Rpb25FeGVjdXRhYmxlLT5zZXROYW1lVmFsdWUodm0s
IGpzU3RyaW5nKCZ2bSwgbmFtZS5zdHJpbmcoKSkpOwogICAgIHJldHVybiBmdW5jdGlvbkV4ZWN1
dGFibGU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXZh
bENvZGVDYWNoZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V2YWxDb2RlQ2Fj
aGUuaAppbmRleCA4NjkxMzE2OTJhOTM0YTc1YTY0M2NlNTVmOWUwZDk3N2E4NWFjMTBhLi42NjM0
OTBhZmI0NTI0NWMzNmZmMDVkNDdlZjg4MTNkYTVhNTlmNTAwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXZhbENvZGVDYWNoZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9FdmFsQ29kZUNhY2hlLmgKQEAgLTU1LDExICs1NSwxMSBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9CiAg
ICAgICAgIAotICAgICAgICBFdmFsRXhlY3V0YWJsZSogZ2V0U2xvdyhFeGVjU3RhdGUqIGV4ZWMs
IEpTQ2VsbCogb3duZXIsIGJvb2wgaW5TdHJpY3RDb250ZXh0LCBUaGlzVERaTW9kZSB0aGlzVERa
TW9kZSwgYm9vbCBpc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQsIGJvb2wgaXNBcnJvd0Z1bmN0
aW9uQ29udGV4dCwgY29uc3QgU291cmNlQ29kZSYgZXZhbFNvdXJjZSwgSlNTY29wZSogc2NvcGUp
CisgICAgICAgIEV2YWxFeGVjdXRhYmxlKiBnZXRTbG93KEV4ZWNTdGF0ZSogZXhlYywgSlNDZWxs
KiBvd25lciwgYm9vbCBpblN0cmljdENvbnRleHQsIFRoaXNURFpNb2RlIHRoaXNURFpNb2RlLCBE
ZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzQXJyb3dGdW5jdGlv
bkNvbnRleHQsIGNvbnN0IFNvdXJjZUNvZGUmIGV2YWxTb3VyY2UsIEpTU2NvcGUqIHNjb3BlKQog
ICAgICAgICB7CiAgICAgICAgICAgICBWYXJpYWJsZUVudmlyb25tZW50IHZhcmlhYmxlc1VuZGVy
VERaOwogICAgICAgICAgICAgSlNTY29wZTo6Y29sbGVjdFZhcmlhYmxlc1VuZGVyVERaKHNjb3Bl
LCB2YXJpYWJsZXNVbmRlclREWik7Ci0gICAgICAgICAgICBFdmFsRXhlY3V0YWJsZSogZXZhbEV4
ZWN1dGFibGUgPSBFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKGV4ZWMsIGV2YWxTb3VyY2UsIGluU3Ry
aWN0Q29udGV4dCwgdGhpc1REWk1vZGUsIGlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCwgaXNB
cnJvd0Z1bmN0aW9uQ29udGV4dCwgJnZhcmlhYmxlc1VuZGVyVERaKTsKKyAgICAgICAgICAgIEV2
YWxFeGVjdXRhYmxlKiBldmFsRXhlY3V0YWJsZSA9IEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoZXhl
YywgZXZhbFNvdXJjZSwgaW5TdHJpY3RDb250ZXh0LCB0aGlzVERaTW9kZSwgZGVyaXZlZENvbnRl
eHRUeXBlLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCAmdmFyaWFibGVzVW5kZXJURFopOwogCiAg
ICAgICAgICAgICBpZiAoIWV2YWxFeGVjdXRhYmxlKQogICAgICAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1
dGFibGVJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUlu
Zm8uaAppbmRleCBhYWMzOTA0ZmYwMzRjOWU2MDcxNGZlOTkzNjU0OWZlOTVkNGExMWU1Li4zMTFj
MzFjNmQ4YjY0MjMzNzBhOTNmNzBkMGRjNjZjZjg1NzBiYjA5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaApAQCAtMzAsMTEgKzMwLDEzIEBA
CiAjaW5jbHVkZSAiUGFyc2VyTW9kZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CisgICAgCitlbnVt
IGNsYXNzIERlcml2ZWRDb250ZXh0VHlwZSB7IE5vbmUsIERlcml2ZWRDb25zdHJ1Y3RvckNvbnRl
eHQsIERlcml2ZWRNZXRob2RDb250ZXh0IH07CiAKIC8vIEZJWE1FOiBUaGVzZSBmbGFncywgUGFy
c2VyTW9kZXMgYW5kIHByb3BhZ2F0aW9uIHRvIFhYWENvZGVCbG9ja3Mgc2hvdWxkIGJlIHJlb3Jn
YW5pemVkLgogLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTU0
Nwogc3RydWN0IEV4ZWN1dGFibGVJbmZvIHsKLSAgICBFeGVjdXRhYmxlSW5mbyhib29sIG5lZWRz
QWN0aXZhdGlvbiwgYm9vbCB1c2VzRXZhbCwgYm9vbCBpc1N0cmljdE1vZGUsIGJvb2wgaXNDb25z
dHJ1Y3RvciwgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbiwgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVj
dG9yS2luZCwgR2VuZXJhdG9yVGhpc01vZGUgZ2VuZXJhdG9yVGhpc01vZGUsIFN1cGVyQmluZGlu
ZyBzdXBlckJpbmRpbmcsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUsIGJvb2wgaXNEZXJpdmVk
Q29uc3RydWN0b3JDb250ZXh0LCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQpCisgICAgRXhl
Y3V0YWJsZUluZm8oYm9vbCBuZWVkc0FjdGl2YXRpb24sIGJvb2wgdXNlc0V2YWwsIGJvb2wgaXNT
dHJpY3RNb2RlLCBib29sIGlzQ29uc3RydWN0b3IsIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24sIENv
bnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIEdlbmVyYXRvclRoaXNNb2RlIGdlbmVyYXRv
clRoaXNNb2RlLCBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nLCBTb3VyY2VQYXJzZU1vZGUgcGFy
c2VNb2RlLCBEZXJpdmVkQ29udGV4dFR5cGUgX2Rlcml2ZWRDb250ZXh0VHlwZSwgYm9vbCBfaXNB
cnJvd0Z1bmN0aW9uQ29udGV4dCwgYm9vbCBpc0NsYXNzQ29udGV4dCkKICAgICAgICAgOiBtX25l
ZWRzQWN0aXZhdGlvbihuZWVkc0FjdGl2YXRpb24pCiAgICAgICAgICwgbV91c2VzRXZhbCh1c2Vz
RXZhbCkKICAgICAgICAgLCBtX2lzU3RyaWN0TW9kZShpc1N0cmljdE1vZGUpCkBAIC00NCw4ICs0
Niw5IEBAIHN0cnVjdCBFeGVjdXRhYmxlSW5mbyB7CiAgICAgICAgICwgbV9jb25zdHJ1Y3Rvcktp
bmQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvbnN0cnVjdG9yS2luZCkpCiAgICAgICAgICwgbV9z
dXBlckJpbmRpbmcoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN1cGVyQmluZGluZykpCiAgICAgICAg
ICwgbV9wYXJzZU1vZGUocGFyc2VNb2RlKQotICAgICAgICAsIG1faXNEZXJpdmVkQ29uc3RydWN0
b3JDb250ZXh0KGlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCkKLSAgICAgICAgLCBtX2lzQXJy
b3dGdW5jdGlvbkNvbnRleHQoaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCkKKyAgICAgICAgLCBtX2Rl
cml2ZWRDb250ZXh0VHlwZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oX2Rlcml2ZWRDb250ZXh0VHlw
ZSkpCisgICAgICAgICwgbV9pc0Fycm93RnVuY3Rpb25Db250ZXh0KF9pc0Fycm93RnVuY3Rpb25D
b250ZXh0KQorICAgICAgICAsIG1faXNDbGFzc0NvbnRleHQoaXNDbGFzc0NvbnRleHQpCiAgICAg
ewogICAgICAgICBBU1NFUlQobV9jb25zdHJ1Y3RvcktpbmQgPT0gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KGNvbnN0cnVjdG9yS2luZCkpOwogICAgICAgICBBU1NFUlQobV9zdXBlckJpbmRpbmcgPT0g
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN1cGVyQmluZGluZykpOwpAQCAtNjEsOCArNjQsOSBAQCBz
dHJ1Y3QgRXhlY3V0YWJsZUluZm8gewogICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3Rvcktp
bmQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb25zdHJ1Y3RvcktpbmQ+KG1fY29uc3Ry
dWN0b3JLaW5kKTsgfQogICAgIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcoKSBjb25zdCB7IHJl
dHVybiBzdGF0aWNfY2FzdDxTdXBlckJpbmRpbmc+KG1fc3VwZXJCaW5kaW5nKTsgfQogICAgIFNv
dXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUoKSBjb25zdCB7IHJldHVybiBtX3BhcnNlTW9kZTsgfQot
ICAgIGJvb2wgaXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9p
c0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQ7IH0KKyAgICBEZXJpdmVkQ29udGV4dFR5cGUgZGVy
aXZlZENvbnRleHRUeXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RGVyaXZlZENvbnRl
eHRUeXBlPihtX2Rlcml2ZWRDb250ZXh0VHlwZSk7IH0KICAgICBib29sIGlzQXJyb3dGdW5jdGlv
bkNvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2lzQXJyb3dGdW5jdGlvbkNvbnRleHQ7IH0KKyAg
ICBib29sIGlzQ2xhc3NDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9pc0NsYXNzQ29udGV4dDsg
fQogCiBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fbmVlZHNBY3RpdmF0aW9uIDogMTsKQEAgLTc0
LDggKzc4LDkgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX2NvbnN0cnVjdG9yS2luZCA6IDI7
CiAgICAgdW5zaWduZWQgbV9zdXBlckJpbmRpbmcgOiAxOwogICAgIFNvdXJjZVBhcnNlTW9kZSBt
X3BhcnNlTW9kZTsKLSAgICB1bnNpZ25lZCBtX2lzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCA6
IDE7CisgICAgdW5zaWduZWQgbV9kZXJpdmVkQ29udGV4dFR5cGUgOiAyOwogICAgIHVuc2lnbmVk
IG1faXNBcnJvd0Z1bmN0aW9uQ29udGV4dCA6IDE7CisgICAgdW5zaWduZWQgbV9pc0NsYXNzQ29u
dGV4dCA6IDE7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCmluZGV4IDhhN2QwMjY3
OTNkNDZiODI1ZmJmM2VmNzY1MmE1NDM4Mzk2NTA0NjMuLjUyZmMzYTcxNzFlMGEyZWMxNzdiODZk
OTc2NDMxZjNhOTdlODQ1ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcApAQCAtNjcsOCArNjcsOSBAQCBVbmxpbmtlZENv
ZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2soVk0qIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
Q29kZVR5cGUgY29kZQogICAgICwgbV9jb25zdHJ1Y3RvcktpbmQoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KGluZm8uY29uc3RydWN0b3JLaW5kKCkpKQogICAgICwgbV9nZW5lcmF0b3JUaGlzTW9kZShz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5mby5nZW5lcmF0b3JUaGlzTW9kZSgpKSkKICAgICAsIG1f
c3VwZXJCaW5kaW5nKHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbmZvLnN1cGVyQmluZGluZygpKSkK
LSAgICAsIG1faXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KGluZm8uaXNEZXJpdmVkQ29uc3Ry
dWN0b3JDb250ZXh0KCkpCisgICAgLCBtX2Rlcml2ZWRDb250ZXh0VHlwZShzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oaW5mby5kZXJpdmVkQ29udGV4dFR5cGUoKSkpCiAgICAgLCBtX2lzQXJyb3dGdW5j
dGlvbkNvbnRleHQoaW5mby5pc0Fycm93RnVuY3Rpb25Db250ZXh0KCkpCisgICAgLCBtX2lzQ2xh
c3NDb250ZXh0KGluZm8uaXNDbGFzc0NvbnRleHQoKSkKICAgICAsIG1fZmlyc3RMaW5lKDApCiAg
ICAgLCBtX2xpbmVDb3VudCgwKQogICAgICwgbV9lbmRDb2x1bW4oVUlOVF9NQVgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCmluZGV4
IGJlYzZlMDg2MTFkYzVmMDk0Zjc5YWI4NWMxMzM1YTkxMWI5ZjkxMWIuLjEyYmE0M2FlZWY0NWU3
OWFlM2QwZmNjNWQwMmUyMTViNTg2OWFjMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCkBAIC0xMjAsOCArMTIwLDkgQEAgcHVi
bGljOgogICAgIGJvb2wgdXNlc0V2YWwoKSBjb25zdCB7IHJldHVybiBtX3VzZXNFdmFsOyB9CiAg
ICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyc2VNb2Rl
OyB9CiAgICAgYm9vbCBpc0Fycm93RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3BhcnNlTW9k
ZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlOyB9Ci0gICAgYm9vbCBpc0Rl
cml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2lzRGVyaXZlZENvbnN0
cnVjdG9yQ29udGV4dDsgfQorICAgIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5
cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxEZXJpdmVkQ29udGV4dFR5cGU+KG1fZGVy
aXZlZENvbnRleHRUeXBlKTsgfQogICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCgpIGNv
bnN0IHsgcmV0dXJuIG1faXNBcnJvd0Z1bmN0aW9uQ29udGV4dDsgfQorICAgIGJvb2wgaXNDbGFz
c0NvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2lzQ2xhc3NDb250ZXh0OyB9CiAKICAgICBib29s
IG5lZWRzRnVsbFNjb3BlQ2hhaW4oKSBjb25zdCB7IHJldHVybiBtX25lZWRzRnVsbFNjb3BlQ2hh
aW47IH0KIApAQCAtMzk2LDkgKzM5Nyw5IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9jb25z
dHJ1Y3RvcktpbmQgOiAyOwogICAgIHVuc2lnbmVkIG1fZ2VuZXJhdG9yVGhpc01vZGUgOiAxOwog
ICAgIHVuc2lnbmVkIG1fc3VwZXJCaW5kaW5nIDogMTsKLSAgICB1bnNpZ25lZCBtX2lzRGVyaXZl
ZENvbnN0cnVjdG9yQ29udGV4dCA6IDE7CisgICAgdW5zaWduZWQgbV9kZXJpdmVkQ29udGV4dFR5
cGUgOiAyOwogICAgIHVuc2lnbmVkIG1faXNBcnJvd0Z1bmN0aW9uQ29udGV4dCA6IDE7Ci0KKyAg
ICB1bnNpZ25lZCBtX2lzQ2xhc3NDb250ZXh0IDogMTsKICAgICB1bnNpZ25lZCBtX2ZpcnN0TGlu
ZTsKICAgICB1bnNpZ25lZCBtX2xpbmVDb3VudDsKICAgICB1bnNpZ25lZCBtX2VuZENvbHVtbjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCmluZGV4IDBjN2Y0NTI3MWEyNzYyMjA2Mjk4NTJiMDYw
ZjVlN2ZiMDZiNmMwNGIuLmJjZTk1MDdlMmNlYTRmMTZkM2M2YmRkMWNjODFlMTI3ZmI3MmFlMjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcApAQCAtNjUsOSArNjUsMTIgQEAgc3RhdGljIFVu
bGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGdlbmVyYXRlVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9j
aygKIAogICAgIGZ1bmN0aW9uLT5maW5pc2hQYXJzaW5nKGV4ZWN1dGFibGUtPm5hbWUoKSwgZXhl
Y3V0YWJsZS0+ZnVuY3Rpb25Nb2RlKCkpOwogICAgIGV4ZWN1dGFibGUtPnJlY29yZFBhcnNlKGZ1
bmN0aW9uLT5mZWF0dXJlcygpLCBmdW5jdGlvbi0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSk7Ci0g
ICAgCisKKyAgICAvLyBtZXRob2QsIGdldHRlciAmIHNldHRlciBhcmUgcGFydCBvZiB0aGUgY2xh
c3MsIHNvIHRoaXMgZnVuY3Rpb25Db2RlQmxvY2sgaXMgcGFydCBvZiB0aGUgY2xhc3MKKyAgICBi
b29sIGlzQ2xhc3NDb250ZXh0ID0gZXhlY3V0YWJsZS0+cGFyc2VNb2RlKCkgPT0gU291cmNlUGFy
c2VNb2RlOjpNZXRob2RNb2RlIHx8IGV4ZWN1dGFibGUtPnBhcnNlTW9kZSgpID09IFNvdXJjZVBh
cnNlTW9kZTo6R2V0dGVyTW9kZSB8fCBleGVjdXRhYmxlLT5wYXJzZU1vZGUoKSA9PSBTb3VyY2VQ
YXJzZU1vZGU6OlNldHRlck1vZGU7CisKICAgICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBy
ZXN1bHQgPSBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrOjpjcmVhdGUoJnZtLCBGdW5jdGlvbkNv
ZGUsCi0gICAgICAgIEV4ZWN1dGFibGVJbmZvKGZ1bmN0aW9uLT5uZWVkc0FjdGl2YXRpb24oKSwg
ZnVuY3Rpb24tPnVzZXNFdmFsKCksIGZ1bmN0aW9uLT5pc1N0cmljdE1vZGUoKSwga2luZCA9PSBD
b2RlRm9yQ29uc3RydWN0LCBmdW5jdGlvbktpbmQgPT0gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24s
IGV4ZWN1dGFibGUtPmNvbnN0cnVjdG9yS2luZCgpLCBleGVjdXRhYmxlLT5nZW5lcmF0b3JUaGlz
TW9kZSgpLCBleGVjdXRhYmxlLT5zdXBlckJpbmRpbmcoKSwgcGFyc2VNb2RlLCAgZXhlY3V0YWJs
ZS0+aXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KCksIGZhbHNlKSk7CisgICAgICAgIEV4ZWN1
dGFibGVJbmZvKGZ1bmN0aW9uLT5uZWVkc0FjdGl2YXRpb24oKSwgZnVuY3Rpb24tPnVzZXNFdmFs
KCksIGZ1bmN0aW9uLT5pc1N0cmljdE1vZGUoKSwga2luZCA9PSBDb2RlRm9yQ29uc3RydWN0LCBm
dW5jdGlvbktpbmQgPT0gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24sIGV4ZWN1dGFibGUtPmNvbnN0
cnVjdG9yS2luZCgpLCBleGVjdXRhYmxlLT5nZW5lcmF0b3JUaGlzTW9kZSgpLCBleGVjdXRhYmxl
LT5zdXBlckJpbmRpbmcoKSwgcGFyc2VNb2RlLCBleGVjdXRhYmxlLT5kZXJpdmVkQ29udGV4dFR5
cGUoKSwgZmFsc2UsIGlzQ2xhc3NDb250ZXh0KSk7CiAKICAgICBhdXRvIGdlbmVyYXRvcihzdGQ6
Om1ha2VfdW5pcXVlPEJ5dGVjb2RlR2VuZXJhdG9yPih2bSwgZnVuY3Rpb24uZ2V0KCksIHJlc3Vs
dCwgZGVidWdnZXJNb2RlLCBwcm9maWxlck1vZGUsIGV4ZWN1dGFibGUtPnBhcmVudFNjb3BlVERa
VmFyaWFibGVzKCkpKTsKICAgICBlcnJvciA9IGdlbmVyYXRvci0+Z2VuZXJhdGUoKTsKQEAgLTc2
LDcgKzc5LDcgQEAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGdlbmVyYXRlVW5s
aW5rZWRGdW5jdGlvbkNvZGVCbG9jaygKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1Vbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0qIHZtLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBSZWZQdHI8U291
cmNlUHJvdmlkZXI+JiYgc291cmNlT3ZlcnJpZGUsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBub2Rl
LCBVbmxpbmtlZEZ1bmN0aW9uS2luZCBraW5kLCBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFi
aWxpdHksIEdlbmVyYXRvclRoaXNNb2RlIGdlbmVyYXRvclRoaXNNb2RlLCBWYXJpYWJsZUVudmly
b25tZW50JiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgYm9vbCBpc0Rlcml2ZWRDb25zdHJ1Y3Rv
ckNvbnRleHQpCitVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUoVk0qIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgU291cmNlQ29kZSYg
c291cmNlLCBSZWZQdHI8U291cmNlUHJvdmlkZXI+JiYgc291cmNlT3ZlcnJpZGUsIEZ1bmN0aW9u
TWV0YWRhdGFOb2RlKiBub2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCBraW5kLCBDb25zdHJ1Y3RB
YmlsaXR5IGNvbnN0cnVjdEFiaWxpdHksIEdlbmVyYXRvclRoaXNNb2RlIGdlbmVyYXRvclRoaXNN
b2RlLCBWYXJpYWJsZUVudmlyb25tZW50JiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgRGVyaXZl
ZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSkKICAgICA6IEJhc2UoKnZtLCBzdHJ1Y3R1
cmUpCiAgICAgLCBtX25hbWUobm9kZS0+aWRlbnQoKSkKICAgICAsIG1faW5mZXJyZWROYW1lKG5v
ZGUtPmluZmVycmVkTmFtZSgpKQpAQCAtMTAyLDcgKzEwNSw3IEBAIFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSogdm0sIFN0cnVjdHVyZSog
c3RydWN0CiAgICAgLCBtX2Z1bmN0aW9uTW9kZShub2RlLT5mdW5jdGlvbk1vZGUoKSkKICAgICAs
IG1fZ2VuZXJhdG9yVGhpc01vZGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGdlbmVyYXRvclRoaXNN
b2RlKSkKICAgICAsIG1fc3VwZXJCaW5kaW5nKHN0YXRpY19jYXN0PHVuc2lnbmVkPihub2RlLT5z
dXBlckJpbmRpbmcoKSkpCi0gICAgLCBtX2lzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dChpc0Rl
cml2ZWRDb25zdHJ1Y3RvckNvbnRleHQpCisgICAgLCBtX2Rlcml2ZWRDb250ZXh0VHlwZShzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oZGVyaXZlZENvbnRleHRUeXBlKSkKIHsKICAgICBBU1NFUlQobV9j
b25zdHJ1Y3RvcktpbmQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG5vZGUtPmNvbnN0cnVjdG9y
S2luZCgpKSk7CiAgICAgbV9wYXJlbnRTY29wZVREWlZhcmlhYmxlcy5zd2FwKHBhcmVudFNjb3Bl
VERaVmFyaWFibGVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgKaW5kZXggZmEyMWUzODcwMDcxYmMx
YTAwZmNhNTVmMjk5NGM1YTdjOWRhZWIwZS4uZDhiZDg3Yjk3ODNiN2U0NGM3MzhjNjBiYmMyYzRk
ZmEwYjAwMjAzNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNp
bmNsdWRlICJDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmgiCiAjaW5jbHVkZSAiQ29kZVR5cGUuaCIK
ICNpbmNsdWRlICJDb25zdHJ1Y3RBYmlsaXR5LmgiCisjaW5jbHVkZSAiRXhlY3V0YWJsZUluZm8u
aCIKICNpbmNsdWRlICJFeHByZXNzaW9uUmFuZ2VJbmZvLmgiCiAjaW5jbHVkZSAiR2VuZXJhdG9y
VGhpc01vZGUuaCIKICNpbmNsdWRlICJIYW5kbGVySW5mby5oIgpAQCAtNjYsMTAgKzY3LDEwIEBA
IHB1YmxpYzoKICAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwogICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgU3RydWN0dXJlSXNJ
bW1vcnRhbDsKIAotICAgIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRl
KFZNKiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSog
bm9kZSwgVW5saW5rZWRGdW5jdGlvbktpbmQgdW5saW5rZWRGdW5jdGlvbktpbmQsIENvbnN0cnVj
dEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSwgR2VuZXJhdG9yVGhpc01vZGUgZ2VuZXJhdG9yVGhp
c01vZGUsIFZhcmlhYmxlRW52aXJvbm1lbnQmIHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBib29s
IGlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCwgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiYmIHNv
dXJjZU92ZXJyaWRlID0gbnVsbHB0cikKKyAgICBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGUqIGNyZWF0ZShWTSogdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVuY3Rpb25N
ZXRhZGF0YU5vZGUqIG5vZGUsIFVubGlua2VkRnVuY3Rpb25LaW5kIHVubGlua2VkRnVuY3Rpb25L
aW5kLCBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHksIEdlbmVyYXRvclRoaXNNb2Rl
IGdlbmVyYXRvclRoaXNNb2RlLCBWYXJpYWJsZUVudmlyb25tZW50JiBwYXJlbnRTY29wZVREWlZh
cmlhYmxlcywgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgUmVmUHRyPFNv
dXJjZVByb3ZpZGVyPiYmIHNvdXJjZU92ZXJyaWRlID0gbnVsbHB0cikKICAgICB7CiAgICAgICAg
IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxs
b2NhdGVDZWxsPFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlPih2bS0+aGVhcCkpCi0gICAgICAg
ICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSh2bSwgdm0tPnVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlU3RydWN0dXJlLmdldCgpLCBzb3VyY2UsIFdURjo6bW92ZShzb3VyY2VPdmVycmlk
ZSksIG5vZGUsIHVubGlua2VkRnVuY3Rpb25LaW5kLCBjb25zdHJ1Y3RBYmlsaXR5LCBnZW5lcmF0
b3JUaGlzTW9kZSwgcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIGlzRGVyaXZlZENvbnN0cnVjdG9y
Q29udGV4dCk7CisgICAgICAgICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSh2bSwgdm0t
PnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3RydWN0dXJlLmdldCgpLCBzb3VyY2UsIFdURjo6
bW92ZShzb3VyY2VPdmVycmlkZSksIG5vZGUsIHVubGlua2VkRnVuY3Rpb25LaW5kLCBjb25zdHJ1
Y3RBYmlsaXR5LCBnZW5lcmF0b3JUaGlzTW9kZSwgcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIGRl
cml2ZWRDb250ZXh0VHlwZSk7CiAgICAgICAgIGluc3RhbmNlLT5maW5pc2hDcmVhdGlvbigqdm0p
OwogICAgICAgICByZXR1cm4gaW5zdGFuY2U7CiAgICAgfQpAQCAtMTMwLDExICsxMzEsMTIgQEAg
cHVibGljOgogICAgIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqIHBhcmVudFNjb3BlVERaVmFy
aWFibGVzKCkgY29uc3QgeyByZXR1cm4gJm1fcGFyZW50U2NvcGVURFpWYXJpYWJsZXM7IH0KICAg
ICAKICAgICBib29sIGlzQXJyb3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcGFyc2VNb2Rl
ID09IFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGU7IH0KLSAgICBib29sIGlzRGVy
aXZlZENvbnN0cnVjdG9yQ29udGV4dCgpIGNvbnN0IHtyZXR1cm4gbV9pc0Rlcml2ZWRDb25zdHJ1
Y3RvckNvbnRleHQ7IH0KIAotcHJpdmF0ZToKLSAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZShWTSosIFN0cnVjdHVyZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBSZWZQdHI8U291cmNlUHJvdmlk
ZXI+JiYgc291cmNlT3ZlcnJpZGUsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiwgVW5saW5rZWRGdW5j
dGlvbktpbmQsIENvbnN0cnVjdEFiaWxpdHksIEdlbmVyYXRvclRoaXNNb2RlLCBWYXJpYWJsZUVu
dmlyb25tZW50JiwgYm9vbCBpc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQpOworICAgIEpTQzo6
RGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSgpIGNvbnN0IHtyZXR1cm4gc3Rh
dGljX2Nhc3Q8SlNDOjpEZXJpdmVkQ29udGV4dFR5cGU+KG1fZGVyaXZlZENvbnRleHRUeXBlKTsg
fQogICAgIAorcHJpdmF0ZToKKyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSosIFN0
cnVjdHVyZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBSZWZQdHI8U291cmNlUHJvdmlkZXI+JiYgc291
cmNlT3ZlcnJpZGUsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiwgVW5saW5rZWRGdW5jdGlvbktpbmQs
IENvbnN0cnVjdEFiaWxpdHksIEdlbmVyYXRvclRoaXNNb2RlLCBWYXJpYWJsZUVudmlyb25tZW50
JiwgIEpTQzo6RGVyaXZlZENvbnRleHRUeXBlKTsKKwogICAgIFdyaXRlQmFycmllcjxVbmxpbmtl
ZEZ1bmN0aW9uQ29kZUJsb2NrPiBtX3VubGlua2VkQ29kZUJsb2NrRm9yQ2FsbDsKICAgICBXcml0
ZUJhcnJpZXI8VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaz4gbV91bmxpbmtlZENvZGVCbG9ja0Zv
ckNvbnN0cnVjdDsKIApAQCAtMTY2LDcgKzE2OCw3IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQg
bV9mdW5jdGlvbk1vZGUgOiAxOyAvLyBGdW5jdGlvbk1vZGUKICAgICB1bnNpZ25lZCBtX2dlbmVy
YXRvclRoaXNNb2RlIDogMTsKICAgICB1bnNpZ25lZCBtX3N1cGVyQmluZGluZyA6IDE7Ci0gICAg
dW5zaWduZWQgbV9pc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQgOiAxOworICAgIHVuc2lnbmVk
IG1fZGVyaXZlZENvbnRleHRUeXBlOiAyOwogCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBmaW5pc2hD
cmVhdGlvbihWTSYgdm0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IDM5OTY4ODRjMzFjZWJmMTc2ZmY2
ZGFiZTZmMTU4MjAyY2JiNjQzN2IuLjE2YzZhZTkxMTg1OTMwYmQzOTJhNTM5ODM3ODk3ZjA1MTEw
MGU2ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0xNTcsNyArMTU3LDYgQEAgQnl0ZWNvZGVHZW5l
cmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgUHJvZ3JhbU5vZGUqIHByb2dyYW1Ob2Rl
LCBVbmxpbmtlZFAKICAgICAsIG1fdGhpc1JlZ2lzdGVyKENhbGxGcmFtZTo6dGhpc0FyZ3VtZW50
T2Zmc2V0KCkpCiAgICAgLCBtX2NvZGVUeXBlKEdsb2JhbENvZGUpCiAgICAgLCBtX3ZtKCZ2bSkK
LSAgICAsIG1faXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KGZhbHNlKQogICAgICwgbV9uZWVk
c1RvVXBkYXRlQXJyb3dGdW5jdGlvbkNvbnRleHQocHJvZ3JhbU5vZGUtPnVzZXNBcnJvd0Z1bmN0
aW9uKCkgfHwgcHJvZ3JhbU5vZGUtPnVzZXNFdmFsKCkpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChw
YXJlbnRTY29wZVREWlZhcmlhYmxlcywgIXBhcmVudFNjb3BlVERaVmFyaWFibGVzLT5zaXplKCkp
OwpAQCAtMjExLDggKzIxMCw4IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRv
cihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAgLy8gY29t
cGF0aWJsZSB3aXRoIHRhaWwgY2FsbHMgKHdlIGhhdmUgbm8gd2F5IG9mIGVtaXR0aW5nIG9wX2Rp
ZF9jYWxsKS4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTQ4ODE5CiAgICAgLCBtX2luVGFpbFBvc2l0aW9uKE9wdGlvbnM6OnVzZVRhaWxDYWxscygpICYm
ICFpc0NvbnN0cnVjdG9yKCkgJiYgY29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5k
OjpOb25lICYmIGlzU3RyaWN0TW9kZSgpICYmICFtX3Nob3VsZEVtaXRQcm9maWxlSG9va3MpCi0g
ICAgLCBtX2lzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dChjb2RlQmxvY2stPmlzRGVyaXZlZENv
bnN0cnVjdG9yQ29udGV4dCgpKQogICAgICwgbV9uZWVkc1RvVXBkYXRlQXJyb3dGdW5jdGlvbkNv
bnRleHQoZnVuY3Rpb25Ob2RlLT51c2VzQXJyb3dGdW5jdGlvbigpIHx8IGZ1bmN0aW9uTm9kZS0+
dXNlc0V2YWwoKSkKKyAgICAsIG1fZGVyaXZlZENvbnRleHRUeXBlKGNvZGVCbG9jay0+ZGVyaXZl
ZENvbnRleHRUeXBlKCkpCiB7CiAgICAgZm9yIChhdXRvJiBjb25zdGFudFJlZ2lzdGVyIDogbV9s
aW5rVGltZUNvbnN0YW50UmVnaXN0ZXJzKQogICAgICAgICBjb25zdGFudFJlZ2lzdGVyID0gbnVs
bHB0cjsKQEAgLTUyMiw3ICs1MjEsNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5l
cmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgIG1f
bmV3VGFyZ2V0UmVnaXN0ZXIgPSBhZGRWYXIoKTsKICAgICBzd2l0Y2ggKHBhcnNlTW9kZSkgewog
ICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZTogewotICAgICAgICBp
ZiAoZnVuY3Rpb25Ob2RlLT51c2VzVGhpcygpKQorICAgICAgICBpZiAoZnVuY3Rpb25Ob2RlLT51
c2VzVGhpcygpIHx8IGlzRGVyaXZlZENsYXNzQ29udGV4dCgpIHx8IGlzRGVyaXZlZENvbnN0cnVj
dG9yQ29udGV4dCgpKQogICAgICAgICAgICAgZW1pdExvYWRUaGlzRnJvbUFycm93RnVuY3Rpb25M
ZXhpY2FsRW52aXJvbm1lbnQoKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtNTc2LDYgKzU3
NSw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0
aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAKICAgICBpZiAobmVlZHNUb1VwZGF0ZUFy
cm93RnVuY3Rpb25Db250ZXh0KCkgJiYgIWNvZGVCbG9jay0+aXNBcnJvd0Z1bmN0aW9uKCkpIHsK
ICAgICAgICAgaW5pdGlhbGl6ZUFycm93RnVuY3Rpb25Db250ZXh0U2NvcGVJZk5lZWRlZChmdW5j
dGlvblN5bWJvbFRhYmxlKTsKKwogICAgICAgICBlbWl0UHV0VGhpc1RvQXJyb3dGdW5jdGlvbkNv
bnRleHRTY29wZSgpOwogICAgICAgICBlbWl0UHV0TmV3VGFyZ2V0VG9BcnJvd0Z1bmN0aW9uQ29u
dGV4dFNjb3BlKCk7CiAgICAgICAgIGVtaXRQdXREZXJpdmVkQ29uc3RydWN0b3JUb0Fycm93RnVu
Y3Rpb25Db250ZXh0U2NvcGUoKTsKQEAgLTU5Myw4ICs1OTMsOCBAQCBCeXRlY29kZUdlbmVyYXRv
cjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBFdmFsTm9kZSogZXZhbE5vZGUsIFVubGlua2Vk
RXZhbENvZAogICAgICwgbV9jb2RlVHlwZShFdmFsQ29kZSkKICAgICAsIG1fdm0oJnZtKQogICAg
ICwgbV91c2VzTm9uU3RyaWN0RXZhbChjb2RlQmxvY2stPnVzZXNFdmFsKCkgJiYgIWNvZGVCbG9j
ay0+aXNTdHJpY3RNb2RlKCkpCi0gICAgLCBtX2lzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dChj
b2RlQmxvY2stPmlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCgpKQogICAgICwgbV9uZWVkc1Rv
VXBkYXRlQXJyb3dGdW5jdGlvbkNvbnRleHQoZXZhbE5vZGUtPnVzZXNBcnJvd0Z1bmN0aW9uKCkg
fHwgZXZhbE5vZGUtPnVzZXNFdmFsKCkpCisgICAgLCBtX2Rlcml2ZWRDb250ZXh0VHlwZShjb2Rl
QmxvY2stPmRlcml2ZWRDb250ZXh0VHlwZSgpKQogewogICAgIGZvciAoYXV0byYgY29uc3RhbnRS
ZWdpc3RlciA6IG1fbGlua1RpbWVDb25zdGFudFJlZ2lzdGVycykKICAgICAgICAgY29uc3RhbnRS
ZWdpc3RlciA9IG51bGxwdHI7CkBAIC02NDQsNyArNjQ0LDYgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6
OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgTW9kdWxlUHJvZ3JhbU5vZGUqIG1vZHVsZVByb2dy
YW1Ob2QKICAgICAsIG1fY29kZVR5cGUoTW9kdWxlQ29kZSkKICAgICAsIG1fdm0oJnZtKQogICAg
ICwgbV91c2VzTm9uU3RyaWN0RXZhbChmYWxzZSkKLSAgICAsIG1faXNEZXJpdmVkQ29uc3RydWN0
b3JDb250ZXh0KGZhbHNlKQogICAgICwgbV9uZWVkc1RvVXBkYXRlQXJyb3dGdW5jdGlvbkNvbnRl
eHQobW9kdWxlUHJvZ3JhbU5vZGUtPnVzZXNBcnJvd0Z1bmN0aW9uKCkgfHwgbW9kdWxlUHJvZ3Jh
bU5vZGUtPnVzZXNFdmFsKCkpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChwYXJlbnRTY29wZVREWlZh
cmlhYmxlcywgIXBhcmVudFNjb3BlVERaVmFyaWFibGVzLT5zaXplKCkpOwpAQCAtNDAyMywxNCAr
NDAyMiwxNCBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0TmV3VGFyZ2V0VG9BcnJv
d0Z1bmN0aW9uQ29udGV4dFNjb3BlKCkKICAgICAKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRQdXREZXJpdmVkQ29uc3RydWN0b3JUb0Fycm93RnVuY3Rpb25Db250ZXh0U2NvcGUoKQogewot
ICAgIGlmIChpc0NvbnN0cnVjdG9yKCkgJiYgY29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0
b3JLaW5kOjpEZXJpdmVkKSB7CisgICAgaWYgKChpc0NvbnN0cnVjdG9yKCkgJiYgY29uc3RydWN0
b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpEZXJpdmVkKSB8fCAobV9jb2RlQmxvY2stPmlz
Q2xhc3NDb250ZXh0KCkpKSB7CiAgICAgICAgIEFTU0VSVChtX2Fycm93RnVuY3Rpb25Db250ZXh0
TGV4aWNhbEVudmlyb25tZW50UmVnaXN0ZXIpOwogICAgICAgICAgICAgCiAgICAgICAgIFZhcmlh
YmxlIHByb3RvU2NvcGUgPSB2YXJpYWJsZShwcm9wZXJ0eU5hbWVzKCkuZGVyaXZlZENvbnN0cnVj
dG9yUHJpdmF0ZU5hbWUpOwogICAgICAgICBlbWl0UHV0VG9TY29wZShtX2Fycm93RnVuY3Rpb25D
b250ZXh0TGV4aWNhbEVudmlyb25tZW50UmVnaXN0ZXIsIHByb3RvU2NvcGUsICZtX2NhbGxlZVJl
Z2lzdGVyLCBEb05vdFRocm93SWZOb3RGb3VuZCwgSW5pdGlhbGl6YXRpb24pOwogICAgIH0KIH0K
LSAgICAKKwogdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dFRoaXNUb0Fycm93RnVuY3Rp
b25Db250ZXh0U2NvcGUoKQogewogICAgIEFTU0VSVChpc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRl
eHQoKSB8fCBtX2Fycm93RnVuY3Rpb25Db250ZXh0TGV4aWNhbEVudmlyb25tZW50UmVnaXN0ZXIg
IT0gbnVsbHB0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggZGMxNmEzOGVmNzZjM2E1ZjY5N2Y3N2FkMzc5
YmJlNTk3ODA4NzgzOC4uZmNiNmY4ZDQ5NzllMWE2NjE2ZDViZjE2ZGM5NzFhOTNjN2IxMzgyMSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuaApAQCAtMjgyLDcgKzI4Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBjb25zdCBDb21tb25JZGVudGlmaWVycyYgcHJvcGVydHlOYW1lcygpIGNvbnN0IHsgcmV0dXJu
ICptX3ZtLT5wcm9wZXJ0eU5hbWVzOyB9CiAKICAgICAgICAgYm9vbCBpc0NvbnN0cnVjdG9yKCkg
Y29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPmlzQ29uc3RydWN0b3IoKTsgfQotICAgICAgICBi
b29sIGlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJs
b2NrLT5pc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoKTsgfQorICAgICAgICBEZXJpdmVkQ29u
dGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2st
PmRlcml2ZWRDb250ZXh0VHlwZSgpOyB9CiAgICAgICAgIGJvb2wgdXNlc0Fycm93RnVuY3Rpb24o
KSBjb25zdCB7IHJldHVybiBtX3Njb3BlTm9kZS0+dXNlc0Fycm93RnVuY3Rpb24oKTsgfQogICAg
ICAgICBib29sIG5lZWRzVG9VcGRhdGVBcnJvd0Z1bmN0aW9uQ29udGV4dCgpIGNvbnN0IHsgcmV0
dXJuIG1fbmVlZHNUb1VwZGF0ZUFycm93RnVuY3Rpb25Db250ZXh0OyB9CiAgICAgICAgIGJvb2wg
dXNlc0V2YWwoKSBjb25zdCB7IHJldHVybiBtX3Njb3BlTm9kZS0+dXNlc0V2YWwoKTsgfQpAQCAt
Njk3LDYgKzY5NywxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBpc0J1aWx0aW5G
dW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNCdWlsdGluRnVuY3Rpb247IH0KIAogICAgICAg
ICBPcGNvZGVJRCBsYXN0T3Bjb2RlSUQoKSBjb25zdCB7IHJldHVybiBtX2xhc3RPcGNvZGVJRDsg
fQorICAgICAgICAKKyAgICAgICAgYm9vbCBpc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoKSB7
IHJldHVybiBtX2Rlcml2ZWRDb250ZXh0VHlwZSA9PSBEZXJpdmVkQ29udGV4dFR5cGU6OkRlcml2
ZWRDb25zdHJ1Y3RvckNvbnRleHQ7IH0KKyAgICAgICAgYm9vbCBpc0Rlcml2ZWRDbGFzc0NvbnRl
eHQoKSB7IHJldHVybiBtX2Rlcml2ZWRDb250ZXh0VHlwZSA9PSBEZXJpdmVkQ29udGV4dFR5cGU6
OkRlcml2ZWRNZXRob2RDb250ZXh0OyB9CisgICAgICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkg
eyByZXR1cm4gbV9jb2RlQmxvY2stPmlzQXJyb3dGdW5jdGlvbigpOyB9CiAKICAgICBwcml2YXRl
OgogICAgICAgICBlbnVtIGNsYXNzIFREWlJlcXVpcmVtZW50IHsgVW5kZXJURFosIE5vdFVuZGVy
VERaIH07CkBAIC03OTIsNyArNzk2LDE1IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICAg
ICAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIG1ha2VGdW5jdGlvbihGdW5jdGlvbk1l
dGFkYXRhTm9kZSogbWV0YWRhdGEpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGJvb2wgbmV3aXNE
ZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0ID0gY29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0
b3JLaW5kOjpEZXJpdmVkIHx8IChtX2lzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCAmJiBtZXRh
ZGF0YS0+cGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSk7
CisgICAgICAgICAgICBib29sIG5ld2lzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCA9IGNvbnN0
cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCB8fCAoZGVyaXZlZENvbnRl
eHRUeXBlKCkgPT0gRGVyaXZlZENvbnRleHRUeXBlOjpEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0
ICYmIG1ldGFkYXRhLT5wYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rp
b25Nb2RlKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgRGVyaXZlZENvbnRleHRUeXBlIGRl
cml2ZWRDb250ZXh0VHlwZTsKKyAgICAgICAgICAgIGlmIChuZXdpc0Rlcml2ZWRDb25zdHJ1Y3Rv
ckNvbnRleHQpCisgICAgICAgICAgICAgICAgZGVyaXZlZENvbnRleHRUeXBlID0gRGVyaXZlZENv
bnRleHRUeXBlOjpEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0OworICAgICAgICAgICAgZWxzZSAg
eworICAgICAgICAgICAgICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uSW5DbGFzc0NvbnRleHQgPSBt
X2NvZGVCbG9jay0+aXNDbGFzc0NvbnRleHQoKSB8fCAobV9jb2RlQmxvY2stPmlzQXJyb3dGdW5j
dGlvbigpICYmIG1fZGVyaXZlZENvbnRleHRUeXBlID09IERlcml2ZWRDb250ZXh0VHlwZTo6RGVy
aXZlZE1ldGhvZENvbnRleHQpOworICAgICAgICAgICAgICAgIGRlcml2ZWRDb250ZXh0VHlwZSA9
IGlzQXJyb3dGdW5jdGlvbkluQ2xhc3NDb250ZXh0ID8gRGVyaXZlZENvbnRleHRUeXBlOjpEZXJp
dmVkTWV0aG9kQ29udGV4dCA6IERlcml2ZWRDb250ZXh0VHlwZTo6Tm9uZTsKKyAgICAgICAgICAg
IH0KIAogICAgICAgICAgICAgVmFyaWFibGVFbnZpcm9ubWVudCB2YXJpYWJsZXNVbmRlclREWjsK
ICAgICAgICAgICAgIGdldFZhcmlhYmxlc1VuZGVyVERaKHZhcmlhYmxlc1VuZGVyVERaKTsKQEAg
LTgxMiw3ICs4MjQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIGlmIChwYXJzZU1v
ZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZSAmJiBpc0NvbnN0cnVjdG9y
KCkpCiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yVGhpc01vZGUgPSBHZW5lcmF0b3JUaGlzTW9k
ZTo6RW1wdHk7CiAKLSAgICAgICAgICAgIHJldHVybiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZTo6Y3JlYXRlKG1fdm0sIG1fc2NvcGVOb2RlLT5zb3VyY2UoKSwgbWV0YWRhdGEsIGlzQnVpbHRp
bkZ1bmN0aW9uKCkgPyBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiA6IFVubGlua2VkTm9ybWFsRnVu
Y3Rpb24sIGNvbnN0cnVjdEFiaWxpdHksIGdlbmVyYXRvclRoaXNNb2RlLCB2YXJpYWJsZXNVbmRl
clREWiwgbmV3aXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KTsKKyAgICAgICAgICAgIHJldHVy
biBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKG1fdm0sIG1fc2NvcGVOb2RlLT5z
b3VyY2UoKSwgbWV0YWRhdGEsIGlzQnVpbHRpbkZ1bmN0aW9uKCkgPyBVbmxpbmtlZEJ1aWx0aW5G
dW5jdGlvbiA6IFVubGlua2VkTm9ybWFsRnVuY3Rpb24sIGNvbnN0cnVjdEFiaWxpdHksIGdlbmVy
YXRvclRoaXNNb2RlLCB2YXJpYWJsZXNVbmRlclREWiwgZGVyaXZlZENvbnRleHRUeXBlKTsKICAg
ICAgICAgfQogCiAgICAgICAgIHZvaWQgZ2V0VmFyaWFibGVzVW5kZXJURFooVmFyaWFibGVFbnZp
cm9ubWVudCYpOwpAQCAtOTIyLDkgKzkzNCw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBi
b29sIG1faXNCdWlsdGluRnVuY3Rpb24geyBmYWxzZSB9OwogICAgICAgICBib29sIG1fdXNlc05v
blN0cmljdEV2YWwgeyBmYWxzZSB9OwogICAgICAgICBib29sIG1faW5UYWlsUG9zaXRpb24geyBm
YWxzZSB9OwotICAgICAgICBib29sIG1faXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0IHsgZmFs
c2UgfTsKICAgICAgICAgYm9vbCBtX25lZWRzVG9VcGRhdGVBcnJvd0Z1bmN0aW9uQ29udGV4dDsK
ICAgICAgICAgYm9vbCBtX2lzTmV3VGFyZ2V0TG9hZGVkSW5BcnJvd0Z1bmN0aW9uIHsgZmFsc2Ug
fTsKKyAgICAgICAgRGVyaXZlZENvbnRleHRUeXBlIG1fZGVyaXZlZENvbnRleHRUeXBlIHsgRGVy
aXZlZENvbnRleHRUeXBlOjpOb25lIH07CiAgICAgfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCmluZGV4IGFkZDk3OWM1
NDc4MDJiNDAyMGRlYmI2ODIyNGUzMmMyMjAxNTJmNzMuLjAxNmVlZTAzNzliZDc0ZTgxM2ZhOGM0
ZmExNWQ3Nzk4M2M3YTQxNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKQEAgLTE3OSw4ICsxNzksMTQgQEAgUmVnaXN0ZXJJ
RCogU3VwZXJOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwg
UmVnaXN0ZXJJRCogZHMKIAogc3RhdGljIFJlZ2lzdGVySUQqIGVtaXRIb21lT2JqZWN0Rm9yQ2Fs
bGVlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IpCiB7CisgICAgaWYgKGdlbmVyYXRvci5p
c0Rlcml2ZWRDbGFzc0NvbnRleHQoKSB8fCBnZW5lcmF0b3IuaXNEZXJpdmVkQ29uc3RydWN0b3JD
b250ZXh0KCkpIHsKKyAgICAgICAgUmVnaXN0ZXJJRCogc2NvcGUgPSBnZW5lcmF0b3IuZW1pdExv
YWREZXJpdmVkQ29uc3RydWN0b3JGcm9tQXJyb3dGdW5jdGlvbkxleGljYWxFbnZpcm9ubWVudCgp
OyAgICAKKyAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IubmV3
VGVtcG9yYXJ5KCksIHNjb3BlLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmhvbWVPYmplY3RQ
cml2YXRlTmFtZSk7CisgICAgfQorCiAgICAgUmVnaXN0ZXJJRCBjYWxsZWU7CiAgICAgY2FsbGVl
LnNldEluZGV4KEpTU3RhY2s6OkNhbGxlZSk7CisKICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRH
ZXRCeUlkKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgJmNhbGxlZSwgZ2VuZXJhdG9yLnByb3Bl
cnR5TmFtZXMoKS5ob21lT2JqZWN0UHJpdmF0ZU5hbWUpOwogfQogCkBAIC03NDQsMTMgKzc1MCwx
NCBAQCBSZWdpc3RlcklEKiBGdW5jdGlvbkNhbGxWYWx1ZU5vZGU6OmVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZQogICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXR1
cm5WYWx1ZSA9IGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgZnVuYy5nZXQoKSk7CiAg
ICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKICAgICBp
ZiAobV9leHByLT5pc1N1cGVyTm9kZSgpKSB7Ci0gICAgICAgIEFTU0VSVChnZW5lcmF0b3IuaXND
b25zdHJ1Y3RvcigpIHx8IGdlbmVyYXRvci5pc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoKSk7
Ci0gICAgICAgIEFTU0VSVChnZW5lcmF0b3IuY29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0
b3JLaW5kOjpEZXJpdmVkIHx8IGdlbmVyYXRvci5pc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQo
KSk7CisgICAgICAgIEFTU0VSVChnZW5lcmF0b3IuaXNDb25zdHJ1Y3RvcigpIHx8IGdlbmVyYXRv
ci5kZXJpdmVkQ29udGV4dFR5cGUoKSA9PSBEZXJpdmVkQ29udGV4dFR5cGU6OkRlcml2ZWRDb25z
dHJ1Y3RvckNvbnRleHQpOworICAgICAgICBBU1NFUlQoZ2VuZXJhdG9yLmNvbnN0cnVjdG9yS2lu
ZCgpID09IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCB8fCBnZW5lcmF0b3IuZGVyaXZlZENvbnRl
eHRUeXBlKCkgPT0gRGVyaXZlZENvbnRleHRUeXBlOjpEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0
KTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVy
KCksIGdlbmVyYXRvci5uZXdUYXJnZXQoKSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIHJldCA9IGdl
bmVyYXRvci5lbWl0Q29uc3RydWN0KHJldHVyblZhbHVlLmdldCgpLCBmdW5jLmdldCgpLCBOb0V4
cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2
b3RFbmQoKSk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0b3IudGhpc1JlZ2lz
dGVyKCksIHJldCk7CiAgICAgICAgIAogICAgICAgICBib29sIGlzQ29uc3RydWN0b3JLaW5kRGVy
aXZlZCA9IGdlbmVyYXRvci5jb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRl
cml2ZWQ7CisKICAgICAgICAgaWYgKGdlbmVyYXRvci5pc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRl
eHQoKSB8fCAoaXNDb25zdHJ1Y3RvcktpbmREZXJpdmVkICYmIGdlbmVyYXRvci5uZWVkc1RvVXBk
YXRlQXJyb3dGdW5jdGlvbkNvbnRleHQoKSkpCiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFB1
dFRoaXNUb0Fycm93RnVuY3Rpb25Db250ZXh0U2NvcGUoKTsKICAgICAgICAgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcAppbmRl
eCBkNTQwNTUwZjVlMTRkNjAyYTk5Mjg4MGViYTBlNmQxOWJlNjgzNzA0Li4xMWZiNjk1OGRkYzY1
Y2QzOWRhZDI2ZGRmYjdkMDA3YmY5MGE0OGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAKQEAgLTE5Niw3ICsxOTYsNyBA
QCBKU1ZhbHVlIERlYnVnZ2VyQ2FsbEZyYW1lOjpldmFsdWF0ZShjb25zdCBTdHJpbmcmIHNjcmlw
dCwgTmFrZWRQdHI8RXhjZXB0aW9uPiYgZQogICAgIFZhcmlhYmxlRW52aXJvbm1lbnQgdmFyaWFi
bGVzVW5kZXJURFo7CiAgICAgSlNTY29wZTo6Y29sbGVjdFZhcmlhYmxlc1VuZGVyVERaKHNjb3Bl
KCktPmpzU2NvcGUoKSwgdmFyaWFibGVzVW5kZXJURFopOwogCi0gICAgRXZhbEV4ZWN1dGFibGUq
IGV2YWwgPSBFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKGNhbGxGcmFtZSwgbWFrZVNvdXJjZShzY3Jp
cHQpLCBjb2RlQmxvY2suaXNTdHJpY3RNb2RlKCksIHRoaXNURFpNb2RlLCBjb2RlQmxvY2sudW5s
aW5rZWRDb2RlQmxvY2soKS0+aXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KCksIGNvZGVCbG9j
ay51bmxpbmtlZENvZGVCbG9jaygpLT5pc0Fycm93RnVuY3Rpb24oKSwgJnZhcmlhYmxlc1VuZGVy
VERaKTsKKyAgICBFdmFsRXhlY3V0YWJsZSogZXZhbCA9IEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUo
Y2FsbEZyYW1lLCBtYWtlU291cmNlKHNjcmlwdCksIGNvZGVCbG9jay5pc1N0cmljdE1vZGUoKSwg
dGhpc1REWk1vZGUsIGNvZGVCbG9jay51bmxpbmtlZENvZGVCbG9jaygpLT5kZXJpdmVkQ29udGV4
dFR5cGUoKSwgY29kZUJsb2NrLnVubGlua2VkQ29kZUJsb2NrKCktPmlzQXJyb3dGdW5jdGlvbigp
LCAmdmFyaWFibGVzVW5kZXJURFopOwogICAgIGlmICh2bS5leGNlcHRpb24oKSkgewogICAgICAg
ICBleGNlcHRpb24gPSB2bS5leGNlcHRpb24oKTsKICAgICAgICAgdm0uY2xlYXJFeGNlcHRpb24o
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnBy
ZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIu
Y3BwCmluZGV4IDM4NTMwNDVjNzRhMWQ1ODI5ZTQyM2Q5N2RiZjhhZmM2MGYwYzZkZWIuLjFlNDY0
ZjJlMjcwNDM0MzNmNmRjMjcwZWZjOGQwMGFmMjU2NzYxZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcApAQCAtMTgwLDcgKzE4MCw3
IEBAIEpTVmFsdWUgZXZhbChDYWxsRnJhbWUqIGNhbGxGcmFtZSkKICAgICAgICAgLy8gSWYgdGhl
IGxpdGVyYWwgcGFyc2VyIGJhaWxlZCwgaXQgc2hvdWxkIG5vdCBoYXZlIHRocm93biBleGNlcHRp
b25zLgogICAgICAgICBBU1NFUlQoIWNhbGxGcmFtZS0+dm0oKS5leGNlcHRpb24oKSk7CiAKLSAg
ICAgICAgZXZhbCA9IGNhbGxlckNvZGVCbG9jay0+ZXZhbENvZGVDYWNoZSgpLmdldFNsb3coY2Fs
bEZyYW1lLCBjYWxsZXJDb2RlQmxvY2ssIGNhbGxlckNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCks
IHRoaXNURFpNb2RlLCBjYWxsZXJDb2RlQmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCktPmlzRGVy
aXZlZENvbnN0cnVjdG9yQ29udGV4dCgpLCBjYWxsZXJDb2RlQmxvY2stPnVubGlua2VkQ29kZUJs
b2NrKCktPmlzQXJyb3dGdW5jdGlvbigpLCBzb3VyY2VDb2RlLCBjYWxsZXJTY29wZUNoYWluKTsK
KyAgICAgICAgZXZhbCA9IGNhbGxlckNvZGVCbG9jay0+ZXZhbENvZGVDYWNoZSgpLmdldFNsb3co
Y2FsbEZyYW1lLCBjYWxsZXJDb2RlQmxvY2ssIGNhbGxlckNvZGVCbG9jay0+aXNTdHJpY3RNb2Rl
KCksIHRoaXNURFpNb2RlLCBjYWxsZXJDb2RlQmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCktPmRl
cml2ZWRDb250ZXh0VHlwZSgpLCBjYWxsZXJDb2RlQmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCkt
PmlzQXJyb3dGdW5jdGlvbigpLCBzb3VyY2VDb2RlLCBjYWxsZXJTY29wZUNoYWluKTsKIAogICAg
ICAgICBpZiAoIWV2YWwpCiAgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCmluZGV4IGIxMGIxMTRlZmY1
NjQ2YzM3YmU1Mjk1NTM2Yzg5N2FhMTM0ZjBjNmQuLjc0MjQzNmQ2YWZmZjkxYWNlMGZkNzA2ODNj
MmZjYzFjNjhjM2I1ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvZGVDYWNoZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNh
Y2hlLmNwcApAQCAtMTg4LDcgKzE4OCw5IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBD
b2RlQ2FjaGU6OmdldEZ1bmN0aW9uRXhlY3V0YWJsZUZyb21HbG9iYWxDb2RlKFZNJiB2CiAgICAg
bWV0YWRhdGEtPnNldEVuZFBvc2l0aW9uKHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUpOwogICAg
IC8vIFRoZSBGdW5jdGlvbiBjb25zdHJ1Y3RvciBvbmx5IGhhcyBhY2Nlc3MgdG8gZ2xvYmFsIHZh
cmlhYmxlcywgc28gbm8gdmFyaWFibGVzIHdpbGwgYmUgdW5kZXIgVERaLgogICAgIFZhcmlhYmxl
RW52aXJvbm1lbnQgZW1wdHlURFpWYXJpYWJsZXM7Ci0gICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpj
cmVhdGUoJnZtLCBzb3VyY2UsIG1ldGFkYXRhLCBVbmxpbmtlZE5vcm1hbEZ1bmN0aW9uLCBDb25z
dHJ1Y3RBYmlsaXR5OjpDYW5Db25zdHJ1Y3QsIEdlbmVyYXRvclRoaXNNb2RlOjpOb25FbXB0eSwg
ZW1wdHlURFpWYXJpYWJsZXMsIGZhbHNlKTsKKworICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3Jl
YXRlKCZ2bSwgc291cmNlLCBtZXRhZGF0YSwgVW5saW5rZWROb3JtYWxGdW5jdGlvbiwgQ29uc3Ry
dWN0QWJpbGl0eTo6Q2FuQ29uc3RydWN0LCBHZW5lcmF0b3JUaGlzTW9kZTo6Tm9uRW1wdHksIGVt
cHR5VERaVmFyaWFibGVzLCBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUpOworCiAgICAgZnVuY3Rp
b25FeGVjdXRhYmxlLT5tX25hbWVWYWx1ZS5zZXQodm0sIGZ1bmN0aW9uRXhlY3V0YWJsZSwganNT
dHJpbmcoJnZtLCBuYW1lLnN0cmluZygpKSk7CiAKICAgICBtX3NvdXJjZUNvZGUuYWRkQ2FjaGUo
a2V5LCBTb3VyY2VDb2RlVmFsdWUodm0sIGZ1bmN0aW9uRXhlY3V0YWJsZSwgbV9zb3VyY2VDb2Rl
LmFnZSgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVj
dXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3Bw
CmluZGV4IGY1ZGY3N2Q5ODdjMDNjYmU2MDQzYTQ3ZGNlYjNhOTEzMTFiZGYyMzAuLjllNDc1MTky
YjA5MmE1ZjU5ZTNhNjMwMzBkMTlhNzgwMmUwY2JhMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCkBAIC0xMzEsMTQgKzEzMSwxNCBAQCBJbnRyaW5z
aWMgTmF0aXZlRXhlY3V0YWJsZTo6aW50cmluc2ljKCkgY29uc3QKIAogY29uc3QgQ2xhc3NJbmZv
IFNjcmlwdEV4ZWN1dGFibGU6OnNfaW5mbyA9IHsgIlNjcmlwdEV4ZWN1dGFibGUiLCAmRXhlY3V0
YWJsZUJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShTY3JpcHRFeGVjdXRhYmxl
KSB9OwogCi1TY3JpcHRFeGVjdXRhYmxlOjpTY3JpcHRFeGVjdXRhYmxlKFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgYm9vbCBpc0luU3RyaWN0
Q29udGV4dCwgYm9vbCBpc0luRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCwgYm9vbCBpc0luQXJy
b3dGdW5jdGlvbkNvbnRleHQpCitTY3JpcHRFeGVjdXRhYmxlOjpTY3JpcHRFeGVjdXRhYmxlKFN0
cnVjdHVyZSogc3RydWN0dXJlLCBWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgYm9v
bCBpc0luU3RyaWN0Q29udGV4dCwgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlw
ZSwgYm9vbCBpc0luQXJyb3dGdW5jdGlvbkNvbnRleHQpCiAgICAgOiBFeGVjdXRhYmxlQmFzZSh2
bSwgc3RydWN0dXJlLCBOVU1fUEFSQU1FVEVSU19OT1RfQ09NUElMRUQpCiAgICAgLCBtX3NvdXJj
ZShzb3VyY2UpCiAgICAgLCBtX2ZlYXR1cmVzKGlzSW5TdHJpY3RDb250ZXh0ID8gU3RyaWN0TW9k
ZUZlYXR1cmUgOiAwKQogICAgICwgbV9oYXNDYXB0dXJlZFZhcmlhYmxlcyhmYWxzZSkKICAgICAs
IG1fbmV2ZXJJbmxpbmUoZmFsc2UpCiAgICAgLCBtX2RpZFRyeVRvRW50ZXJJbkxvb3AoZmFsc2Up
Ci0gICAgLCBtX2lzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dChpc0luRGVyaXZlZENvbnN0cnVj
dG9yQ29udGV4dCkKKyAgICAsIG1fZGVyaXZlZENvbnRleHRUeXBlKGRlcml2ZWRDb250ZXh0VHlw
ZSkKICAgICAsIG1faXNBcnJvd0Z1bmN0aW9uQ29udGV4dChpc0luQXJyb3dGdW5jdGlvbkNvbnRl
eHQpCiAgICAgLCBtX292ZXJyaWRlTGluZU51bWJlcigtMSkKICAgICAsIG1fZmlyc3RMaW5lKC0x
KQpAQCAtNDE0LDcgKzQxNCw3IEBAIEpTT2JqZWN0KiBTY3JpcHRFeGVjdXRhYmxlOjpwcmVwYXJl
Rm9yRXhlY3V0aW9uSW1wbCgKIAogY29uc3QgQ2xhc3NJbmZvIEV2YWxFeGVjdXRhYmxlOjpzX2lu
Zm8gPSB7ICJFdmFsRXhlY3V0YWJsZSIsICZTY3JpcHRFeGVjdXRhYmxlOjpzX2luZm8sIDAsIENS
RUFURV9NRVRIT0RfVEFCTEUoRXZhbEV4ZWN1dGFibGUpIH07CiAKLUV2YWxFeGVjdXRhYmxlKiBF
dmFsRXhlY3V0YWJsZTo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYg
c291cmNlLCBib29sIGlzSW5TdHJpY3RDb250ZXh0LCBUaGlzVERaTW9kZSB0aGlzVERaTW9kZSwg
Ym9vbCBpc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29u
dGV4dCwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCogdmFyaWFibGVzVW5kZXJURFopCitFdmFs
RXhlY3V0YWJsZSogRXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IFNvdXJjZUNvZGUmIHNvdXJjZSwgYm9vbCBpc0luU3RyaWN0Q29udGV4dCwgVGhpc1REWk1vZGUg
dGhpc1REWk1vZGUsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wg
aXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCogdmFyaWFi
bGVzVW5kZXJURFopCiB7CiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMt
PmxleGljYWxHbG9iYWxPYmplY3QoKTsKICAgICBpZiAoIWdsb2JhbE9iamVjdC0+ZXZhbEVuYWJs
ZWQoKSkgewpAQCAtNDIyLDcgKzQyMiw3IEBAIEV2YWxFeGVjdXRhYmxlKiBFdmFsRXhlY3V0YWJs
ZTo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cmNlCiAgICAg
ICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIEV2YWxFeGVjdXRhYmxlKiBleGVjdXRhYmxlID0g
bmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RXZhbEV4ZWN1dGFibGU+KCpleGVjLT5oZWFwKCkp
KSBFdmFsRXhlY3V0YWJsZShleGVjLCBzb3VyY2UsIGlzSW5TdHJpY3RDb250ZXh0LCBpc0Rlcml2
ZWRDb25zdHJ1Y3RvckNvbnRleHQsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQpOworICAgIEV2YWxF
eGVjdXRhYmxlKiBleGVjdXRhYmxlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RXZhbEV4
ZWN1dGFibGU+KCpleGVjLT5oZWFwKCkpKSBFdmFsRXhlY3V0YWJsZShleGVjLCBzb3VyY2UsIGlz
SW5TdHJpY3RDb250ZXh0LCBkZXJpdmVkQ29udGV4dFR5cGUsIGlzQXJyb3dGdW5jdGlvbkNvbnRl
eHQpOwogICAgIGV4ZWN1dGFibGUtPmZpbmlzaENyZWF0aW9uKGV4ZWMtPnZtKCkpOwogCiAgICAg
VW5saW5rZWRFdmFsQ29kZUJsb2NrKiB1bmxpbmtlZEV2YWxDb2RlID0gZ2xvYmFsT2JqZWN0LT5j
cmVhdGVFdmFsQ29kZUJsb2NrKGV4ZWMsIGV4ZWN1dGFibGUsIHRoaXNURFpNb2RlLCBpc0Fycm93
RnVuY3Rpb25Db250ZXh0LCB2YXJpYWJsZXNVbmRlclREWik7CkBAIC00MzQsOCArNDM0LDggQEAg
RXZhbEV4ZWN1dGFibGUqIEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBTb3VyY2VDb2RlJiBzb3VyY2UKICAgICByZXR1cm4gZXhlY3V0YWJsZTsKIH0KIAotRXZh
bEV4ZWN1dGFibGU6OkV2YWxFeGVjdXRhYmxlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNl
Q29kZSYgc291cmNlLCBib29sIGluU3RyaWN0Q29udGV4dCwgYm9vbCBpc0Rlcml2ZWRDb25zdHJ1
Y3RvckNvbnRleHQsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCkKLSAgICA6IFNjcmlwdEV4
ZWN1dGFibGUoZXhlYy0+dm0oKS5ldmFsRXhlY3V0YWJsZVN0cnVjdHVyZS5nZXQoKSwgZXhlYy0+
dm0oKSwgc291cmNlLCBpblN0cmljdENvbnRleHQsIGlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4
dCwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCkKK0V2YWxFeGVjdXRhYmxlOjpFdmFsRXhlY3V0YWJs
ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgYm9vbCBpblN0cmlj
dENvbnRleHQsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNB
cnJvd0Z1bmN0aW9uQ29udGV4dCkKKyAgICA6IFNjcmlwdEV4ZWN1dGFibGUoZXhlYy0+dm0oKS5l
dmFsRXhlY3V0YWJsZVN0cnVjdHVyZS5nZXQoKSwgZXhlYy0+dm0oKSwgc291cmNlLCBpblN0cmlj
dENvbnRleHQsIGRlcml2ZWRDb250ZXh0VHlwZSwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCkKIHsK
IH0KIApAQCAtNDQ3LDcgKzQ0Nyw3IEBAIHZvaWQgRXZhbEV4ZWN1dGFibGU6OmRlc3Ryb3koSlND
ZWxsKiBjZWxsKQogY29uc3QgQ2xhc3NJbmZvIFByb2dyYW1FeGVjdXRhYmxlOjpzX2luZm8gPSB7
ICJQcm9ncmFtRXhlY3V0YWJsZSIsICZTY3JpcHRFeGVjdXRhYmxlOjpzX2luZm8sIDAsIENSRUFU
RV9NRVRIT0RfVEFCTEUoUHJvZ3JhbUV4ZWN1dGFibGUpIH07CiAKIFByb2dyYW1FeGVjdXRhYmxl
OjpQcm9ncmFtRXhlY3V0YWJsZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNv
dXJjZSkKLSAgICA6IFNjcmlwdEV4ZWN1dGFibGUoZXhlYy0+dm0oKS5wcm9ncmFtRXhlY3V0YWJs
ZVN0cnVjdHVyZS5nZXQoKSwgZXhlYy0+dm0oKSwgc291cmNlLCBmYWxzZSwgZmFsc2UsIGZhbHNl
KQorICAgIDogU2NyaXB0RXhlY3V0YWJsZShleGVjLT52bSgpLnByb2dyYW1FeGVjdXRhYmxlU3Ry
dWN0dXJlLmdldCgpLCBleGVjLT52bSgpLCBzb3VyY2UsIGZhbHNlLCBEZXJpdmVkQ29udGV4dFR5
cGU6Ok5vbmUsIGZhbHNlKQogewogICAgIG1fdHlwZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0ID0gMDsK
ICAgICBtX3R5cGVQcm9maWxpbmdFbmRPZmZzZXQgPSBzb3VyY2UubGVuZ3RoKCkgLSAxOwpAQCAt
NDYzLDcgKzQ2Myw3IEBAIHZvaWQgUHJvZ3JhbUV4ZWN1dGFibGU6OmRlc3Ryb3koSlNDZWxsKiBj
ZWxsKQogY29uc3QgQ2xhc3NJbmZvIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjpzX2luZm8gPSB7
ICJNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSIsICZTY3JpcHRFeGVjdXRhYmxlOjpzX2luZm8sIDAs
IENSRUFURV9NRVRIT0RfVEFCTEUoTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUpIH07CiAKIE1vZHVs
ZVByb2dyYW1FeGVjdXRhYmxlOjpNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZShFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSkKLSAgICA6IFNjcmlwdEV4ZWN1dGFibGUoZXhl
Yy0+dm0oKS5tb2R1bGVQcm9ncmFtRXhlY3V0YWJsZVN0cnVjdHVyZS5nZXQoKSwgZXhlYy0+dm0o
KSwgc291cmNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorICAgIDogU2NyaXB0RXhlY3V0YWJsZShl
eGVjLT52bSgpLm1vZHVsZVByb2dyYW1FeGVjdXRhYmxlU3RydWN0dXJlLmdldCgpLCBleGVjLT52
bSgpLCBzb3VyY2UsIGZhbHNlLCBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUsIGZhbHNlKQogewog
ICAgIG1fdHlwZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0ID0gMDsKICAgICBtX3R5cGVQcm9maWxpbmdF
bmRPZmZzZXQgPSBzb3VyY2UubGVuZ3RoKCkgLSAxOwpAQCAtNDk1LDcgKzQ5NSw3IEBAIHZvaWQg
TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQogY29uc3QgQ2xh
c3NJbmZvIEZ1bmN0aW9uRXhlY3V0YWJsZTo6c19pbmZvID0geyAiRnVuY3Rpb25FeGVjdXRhYmxl
IiwgJlNjcmlwdEV4ZWN1dGFibGU6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShGdW5j
dGlvbkV4ZWN1dGFibGUpIH07CiAKIEZ1bmN0aW9uRXhlY3V0YWJsZTo6RnVuY3Rpb25FeGVjdXRh
YmxlKFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZSogdW5saW5rZWRFeGVjdXRhYmxlLCB1bnNpZ25lZCBmaXJzdExpbmUsIHVuc2lnbmVk
IGxhc3RMaW5lLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kQ29sdW1uKQotICAg
IDogU2NyaXB0RXhlY3V0YWJsZSh2bS5mdW5jdGlvbkV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCks
IHZtLCBzb3VyY2UsIHVubGlua2VkRXhlY3V0YWJsZS0+aXNJblN0cmljdENvbnRleHQoKSwgdW5s
aW5rZWRFeGVjdXRhYmxlLT5pc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoKSwgZmFsc2UpCisg
ICAgOiBTY3JpcHRFeGVjdXRhYmxlKHZtLmZ1bmN0aW9uRXhlY3V0YWJsZVN0cnVjdHVyZS5nZXQo
KSwgdm0sIHNvdXJjZSwgdW5saW5rZWRFeGVjdXRhYmxlLT5pc0luU3RyaWN0Q29udGV4dCgpLCB1
bmxpbmtlZEV4ZWN1dGFibGUtPmRlcml2ZWRDb250ZXh0VHlwZSgpLCBmYWxzZSkKICAgICAsIG1f
dW5saW5rZWRFeGVjdXRhYmxlKHZtLCB0aGlzLCB1bmxpbmtlZEV4ZWN1dGFibGUpCiB7CiAgICAg
UkVMRUFTRV9BU1NFUlQoIXNvdXJjZS5pc051bGwoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FeGVjdXRhYmxlLmgKaW5kZXggODZhNTc3NzA4Zjk1ZjY5NWVkMzIyMDE0MjE5Mzgy
MDBjMjcwMGY1Yy4uNTA2YTMxZjI0ODYyMzJmZjg1NTQwNDc5YjllNTY5ZjM5OTJmNDMzOCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaApAQCAtMzQ2LDcgKzM0
Niw4IEBAIHB1YmxpYzoKICAgICBib29sIG5lZWRzQWN0aXZhdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1faGFzQ2FwdHVyZWRWYXJpYWJsZXMgfHwgbV9mZWF0dXJlcyAmIChFdmFsRmVhdHVyZSB8IFdp
dGhGZWF0dXJlKTsgfQogICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCgpIGNvbnN0IHsg
cmV0dXJuIG1faXNBcnJvd0Z1bmN0aW9uQ29udGV4dDsgfQogICAgIGJvb2wgaXNTdHJpY3RNb2Rl
KCkgY29uc3QgeyByZXR1cm4gbV9mZWF0dXJlcyAmIFN0cmljdE1vZGVGZWF0dXJlOyB9Ci0gICAg
Ym9vbCBpc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2lzRGVy
aXZlZENvbnN0cnVjdG9yQ29udGV4dDsgfQorICAgIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVk
Q29udGV4dFR5cGUoKSBjb25zdCB7IHJldHVybiBtX2Rlcml2ZWRDb250ZXh0VHlwZTsgfQorCiAg
ICAgRUNNQU1vZGUgZWNtYU1vZGUoKSBjb25zdCB7IHJldHVybiBpc1N0cmljdE1vZGUoKSA/IFN0
cmljdE1vZGUgOiBOb3RTdHJpY3RNb2RlOyB9CiAgICAgICAgIAogICAgIHZvaWQgc2V0TmV2ZXJJ
bmxpbmUoYm9vbCB2YWx1ZSkgeyBtX25ldmVySW5saW5lID0gdmFsdWU7IH0KQEAgLTM5NSw3ICsz
OTYsNyBAQCBwcml2YXRlOgogICAgIEpTT2JqZWN0KiBwcmVwYXJlRm9yRXhlY3V0aW9uSW1wbChF
eGVjU3RhdGUqLCBKU0Z1bmN0aW9uKiwgSlNTY29wZSosIENvZGVTcGVjaWFsaXphdGlvbktpbmQp
OwogCiBwcm90ZWN0ZWQ6Ci0gICAgU2NyaXB0RXhlY3V0YWJsZShTdHJ1Y3R1cmUqLCBWTSYsIGNv
bnN0IFNvdXJjZUNvZGUmLCBib29sIGlzSW5TdHJpY3RDb250ZXh0LCBib29sIGlzSW5EZXJpdmVk
Q29uc3RydWN0b3JDb250ZXh0LCBib29sIGlzSW5BcnJvd0Z1bmN0aW9uQ29udGV4dCk7CisgICAg
U2NyaXB0RXhlY3V0YWJsZShTdHJ1Y3R1cmUqLCBWTSYsIGNvbnN0IFNvdXJjZUNvZGUmLCBib29s
IGlzSW5TdHJpY3RDb250ZXh0LCBEZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNJbkFycm93RnVu
Y3Rpb25Db250ZXh0KTsKIAogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogICAgIHsK
QEAgLTQxNCw3ICs0MTUsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBtX25ldmVySW5saW5lOwog
ICAgIGJvb2wgbV9uZXZlck9wdGltaXplIHsgZmFsc2UgfTsKICAgICBib29sIG1fZGlkVHJ5VG9F
bnRlckluTG9vcDsKLSAgICBib29sIG1faXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0OworICAg
IERlcml2ZWRDb250ZXh0VHlwZSBtX2Rlcml2ZWRDb250ZXh0VHlwZTsKICAgICBib29sIG1faXNB
cnJvd0Z1bmN0aW9uQ29udGV4dDsKICAgICBpbnQgbV9vdmVycmlkZUxpbmVOdW1iZXI7CiAgICAg
aW50IG1fZmlyc3RMaW5lOwpAQCAtNDM4LDcgKzQzOSw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIG1fZXZhbENvZGVCbG9jay5nZXQoKTsKICAgICB9CiAKLSAgICBzdGF0aWMgRXZhbEV4ZWN1
dGFibGUqIGNyZWF0ZShFeGVjU3RhdGUqLCBjb25zdCBTb3VyY2VDb2RlJiwgYm9vbCBpc0luU3Ry
aWN0Q29udGV4dCwgVGhpc1REWk1vZGUsIGJvb2wgaXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0
LCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQq
KTsKKyAgICBzdGF0aWMgRXZhbEV4ZWN1dGFibGUqIGNyZWF0ZShFeGVjU3RhdGUqLCBjb25zdCBT
b3VyY2VDb2RlJiwgYm9vbCBpc0luU3RyaWN0Q29udGV4dCwgVGhpc1REWk1vZGUsIERlcml2ZWRD
b250ZXh0VHlwZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBjb25zdCBWYXJpYWJsZUVu
dmlyb25tZW50Kik7CiAKICAgICBQYXNzUmVmUHRyPEpJVENvZGU+IGdlbmVyYXRlZEpJVENvZGUo
KQogICAgIHsKQEAgLTQ1Miw4ICs0NTMsNyBAQCBwdWJsaWM6CiAgICAgICAgIAogICAgIERFQ0xB
UkVfSU5GTzsKIAotCi0gICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7
IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNT
dHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBHZW5lcmF0
b3JUaGlzTW9kZTo6Tm9uRW1wdHksIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBTb3VyY2VQYXJz
ZU1vZGU6OlByb2dyYW1Nb2RlLCBpc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoKSwgaXNBcnJv
d0Z1bmN0aW9uQ29udGV4dCgpKTsgfQorICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZv
KCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNBY3RpdmF0aW9uKCksIHVzZXNF
dmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9u
ZSwgR2VuZXJhdG9yVGhpc01vZGU6Ok5vbkVtcHR5LCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwg
U291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZSwgZGVyaXZlZENvbnRleHRUeXBlKCksIGlzQXJy
b3dGdW5jdGlvbkNvbnRleHQoKSAsIGZhbHNlKTsgfQogCiAgICAgdW5zaWduZWQgbnVtVmFyaWFi
bGVzKCkgeyByZXR1cm4gbV91bmxpbmtlZEV2YWxDb2RlQmxvY2stPm51bVZhcmlhYmxlcygpOyB9
CiAgICAgdW5zaWduZWQgbnVtYmVyT2ZGdW5jdGlvbkRlY2xzKCkgeyByZXR1cm4gbV91bmxpbmtl
ZEV2YWxDb2RlQmxvY2stPm51bWJlck9mRnVuY3Rpb25EZWNscygpOyB9CkBAIC00NjEsNyArNDYx
LDggQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgRXhlY3V0YWJsZUJhc2U7
CiAgICAgZnJpZW5kIGNsYXNzIFNjcmlwdEV4ZWN1dGFibGU7Ci0gICAgRXZhbEV4ZWN1dGFibGUo
RXhlY1N0YXRlKiwgY29uc3QgU291cmNlQ29kZSYsIGJvb2wgaW5TdHJpY3RDb250ZXh0LCBib29s
IGlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0
KTsKKworICAgIEV2YWxFeGVjdXRhYmxlKEV4ZWNTdGF0ZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBi
b29sIGluU3RyaWN0Q29udGV4dCwgRGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzQXJyb3dGdW5j
dGlvbkNvbnRleHQpOwogCiAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBT
bG90VmlzaXRvciYpOwogCkBAIC01MDYsNyArNTA3LDcgQEAgcHVibGljOgogICAgICAgICAKICAg
ICBERUNMQVJFX0lORk87CiAKLSAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNv
bnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgp
LCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIEdl
bmVyYXRvclRoaXNNb2RlOjpOb25FbXB0eSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIFNvdXJj
ZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUsIGlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCgpLCBm
YWxzZSk7IH0KKyAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0
dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmlj
dE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIEdlbmVyYXRvclRo
aXNNb2RlOjpOb25FbXB0eSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIFNvdXJjZVBhcnNlTW9k
ZTo6UHJvZ3JhbU1vZGUsIGRlcml2ZWRDb250ZXh0VHlwZSgpLCBpc0Fycm93RnVuY3Rpb25Db250
ZXh0KCksIGZhbHNlKTsgfQogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBFeGVjdXRhYmxl
QmFzZTsKQEAgLTU0Nyw3ICs1NDgsNyBAQCBwdWJsaWM6CiAKICAgICBERUNMQVJFX0lORk87CiAK
LSAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1
dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwg
ZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIEdlbmVyYXRvclRoaXNNb2RlOjpO
b25FbXB0eSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIFNvdXJjZVBhcnNlTW9kZTo6TW9kdWxl
RXZhbHVhdGVNb2RlLCBpc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoKSwgZmFsc2UpOyB9Cisg
ICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRh
YmxlSW5mbyhuZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZh
bHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBHZW5lcmF0b3JUaGlzTW9kZTo6Tm9u
RW1wdHksIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBTb3VyY2VQYXJzZU1vZGU6Ok1vZHVsZUV2
YWx1YXRlTW9kZSwgZGVyaXZlZENvbnRleHRUeXBlKCksIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQo
KSwgZmFsc2UpOyB9CiAKICAgICBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIHVubGlu
a2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jaygpIHsgcmV0dXJuIG1fdW5saW5rZWRNb2R1bGVQcm9n
cmFtQ29kZUJsb2NrLmdldCgpOyB9CiAKQEAgLTY1Nyw3ICs2NTgsNyBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBpc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRh
YmxlLT5pc0J1aWx0aW5GdW5jdGlvbigpOyB9CiAgICAgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1
Y3RBYmlsaXR5KCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPmNvbnN0cnVj
dEFiaWxpdHkoKTsgfQogICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4g
cGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZTsgfQotICAg
IGJvb2wgaXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV91bmxp
bmtlZEV4ZWN1dGFibGUtPmlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCgpOyB9CisgICAgRGVy
aXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5s
aW5rZWRFeGVjdXRhYmxlLT5kZXJpdmVkQ29udGV4dFR5cGUoKTsgfQogICAgIGJvb2wgaXNDbGFz
c0NvbnN0cnVjdG9yRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJs
ZS0+aXNDbGFzc0NvbnN0cnVjdG9yRnVuY3Rpb24oKTsgfQogICAgIGNvbnN0IElkZW50aWZpZXIm
IG5hbWUoKSB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+bmFtZSgpOyB9CiAgICAgY29u
c3QgSWRlbnRpZmllciYgaW5mZXJyZWROYW1lKCkgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFi
bGUtPmluZmVycmVkTmFtZSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAKaW5kZXggY2UxZTNiYjc4ZjBk
NTM5YTI2NWU4MmViZmQ3NTAxNTAxMThlNzBjMy4uZDZiMjczNWI4ZGRiOGFiNTMxZTQxMmE2Y2I1
ZGYyMzk4NDEyZDk3MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcApAQCAtNTgxLDcgKzU4MSw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY0V2YWwoRXhlY1N0YXRlKiBleGVj
KQogCiAgICAgSlNHbG9iYWxPYmplY3QqIGNhbGxlZUdsb2JhbE9iamVjdCA9IGV4ZWMtPmNhbGxl
ZSgpLT5nbG9iYWxPYmplY3QoKTsKICAgICBWYXJpYWJsZUVudmlyb25tZW50IGVtcHR5VERaVmFy
aWFibGVzOyAvLyBJbmRpcmVjdCBldmFsIGRvZXMgbm90IGhhdmUgYWNjZXNzIHRvIHRoZSBsZXhp
Y2FsIHNjb3BlLgotICAgIEV2YWxFeGVjdXRhYmxlKiBldmFsID0gRXZhbEV4ZWN1dGFibGU6OmNy
ZWF0ZShleGVjLCBtYWtlU291cmNlKHMpLCBmYWxzZSwgVGhpc1REWk1vZGU6OkNoZWNrSWZOZWVk
ZWQsIGZhbHNlLCBmYWxzZSwgJmVtcHR5VERaVmFyaWFibGVzKTsKKyAgICBFdmFsRXhlY3V0YWJs
ZSogZXZhbCA9IEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoZXhlYywgbWFrZVNvdXJjZShzKSwgZmFs
c2UsIFRoaXNURFpNb2RlOjpDaGVja0lmTmVlZGVkLCBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUs
IGZhbHNlLCAmZW1wdHlURFpWYXJpYWJsZXMpOwogICAgIGlmICghZXZhbCkKICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi55YW1sIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL2VzNi55YW1sCmluZGV4IDdlNjNhYmQ4MmVmNGNiYjU5NGMyNTBlM2U5ZDhlN2EwODEzYTcy
ZmIuLjYyMTliNTliNjU1YjFlMTYwYTQxZjFjOGMwY2Y4NTFiYjJjMmEwZTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYueWFtbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvZXM2LnlhbWwKQEAgLTc0Nyw3ICs3NDcsNyBAQAogLSBwYXRoOiBlczYv
YXJyb3dfZnVuY3Rpb25zX2xleGljYWxfbmV3LnRhcmdldF9iaW5kaW5nLmpzCiAgIGNtZDogcnVu
RVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2Fycm93X2Z1bmN0aW9uc19sZXhpY2FsX3N1cGVyX2Jp
bmRpbmcuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBw
YXRoOiBlczYvYXJyb3dfZnVuY3Rpb25zX25vX3Byb3RvdHlwZV9wcm9wZXJ0eS5qcwogICBjbWQ6
IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9ibG9jay1sZXZlbF9mdW5jdGlvbl9kZWNsYXJh
dGlvbi5qcwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9h
cnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC1zdXBlcnByb3BlcnR5LmpzIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC1zdXBlcnBy
b3BlcnR5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFhNmNmMWViMGEyMWFmOGY0OWFiZGYwODUxMmUwMzdjODI1
ZTA2MzMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3Ry
ZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXN1cGVycHJvcGVydHkuanMKQEAgLTAsMCAr
MSwyMjQgQEAKK3ZhciB0ZXN0Q2FzZSA9IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVkLCBtZXNz
YWdlKSB7CisgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKSB7CisgICAgdGhyb3cgbWVzc2FnZSAr
ICIuIEV4cGVjdGVkICciICsgZXhwZWN0ZWQgKyAiJywgYnV0IHdhcyAnIiArIGFjdHVhbCArICIn
IjsKKyAgfQorfTsKKwordmFyIHRlc3RWYWx1ZSAgPSAndGVzdC12YWx1ZSc7CisKK3ZhciBBID0g
Y2xhc3MgQSB7CisgICAgY29uc3RydWN0b3IoKSB7CisgICAgICB0aGlzLnZhbHVlID0gdGVzdFZh
bHVlOworICAgIH0KKyAgICBnZXRDb25zdFZhbHVlICgpIHsKKyAgICAgIHJldHVybiB0ZXN0VmFs
dWU7CisgICAgfQorICAgIGdldFZhbHVlICgpIHsKKyAgICAgIHJldHVybiB0aGlzLnZhbHVlOwor
ICAgIH0KKyAgICBzZXRWYWx1ZSAodmFsdWUpIHsKKyAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTsK
KyAgICB9Cit9OworCit2YXIgQiA9IGNsYXNzIEIgZXh0ZW5kcyBBIHsKKyAgZ2V0UGFyZW50VmFs
dWUoKSB7CisgICAgdmFyIGFycm93ICA9ICgpID0+IHN1cGVyLmdldFZhbHVlKCk7CisgICAgcmV0
dXJuIGFycm93KCk7CisgIH0KK307CisKK3ZhciBDID0gY2xhc3MgQyB7CisgIGNvbnN0cnVjdG9y
KCkgeworICAgIHRoaXMudmFsdWUgPSB0ZXN0VmFsdWU7CisgIH0KKyAgc3RhdGljIGdldFN0YXRp
Y1ZhbHVlKCkgeworICAgIHJldHVybiB0ZXN0VmFsdWU7CisgIH0KK307CisKK3ZhciBEID0gY2xh
c3MgRCBleHRlbmRzIEMgeworICBzdGF0aWMgZ2V0UGFyZW50U3RhdGljVmFsdWUoKSB7CisgICAg
dmFyIGFycm93ICA9ICgpID0+IHN1cGVyLmdldFN0YXRpY1ZhbHVlKCk7CisgICAgcmV0dXJuIGFy
cm93KCk7CisgIH0KK307CisKK3ZhciBFID0gY2xhc3MgRSBleHRlbmRzIEEgeworICAgICBjb25z
dHJ1Y3RvcigpIHsKKyAgICAgICAgIHN1cGVyKCk7CisgICAgIH0KKyAgICAgZ2V0IHByb3AoKSB7
CisgICAgICAgICB2YXIgYXJyb3cgPSAoKSA9PiBzdXBlci5nZXRDb25zdFZhbHVlKCkgKyAnLScg
KyB0aGlzLnZhbHVlOworICAgICAgICAgcmV0dXJuIGFycm93KCk7CisgICAgIH0KKyAgICAgc2V0
IHByb3AodmFsdWUpIHsKKyAgICAgICAgIHZhciBhcnJvdyA9IChuZXdWYWwpID0+IHN1cGVyLnNl
dFZhbHVlKG5ld1ZhbCk7CisgICAgICAgICBhcnJvdyh2YWx1ZSk7CisgICAgIH0KKyAgICAgc2V0
SW5pdFZhbHVlKCkgeworICAgICAgIHRoaXMudmFsdWUgPSB0ZXN0VmFsdWU7CisgICAgIH0KKyB9
OworCit2YXIgYiA9IG5ldyBCKCk7Citmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsK
KyAgIHRlc3RDYXNlKGIuZ2V0UGFyZW50VmFsdWUoKSwgdGVzdFZhbHVlLCBpKTsKK30KKworZm9y
ICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7CisgICB0ZXN0Q2FzZShELmdldFBhcmVudFN0
YXRpY1ZhbHVlKCksIHRlc3RWYWx1ZSwgaSk7Cit9CisKK3ZhciBlID0gbmV3IEUoKTsKK2ZvciAo
dmFyIGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgeworICAgZS5zZXRJbml0VmFsdWUoKTsKKyAgIHRl
c3RDYXNlKGUucHJvcCwgdGVzdFZhbHVlKyctJyt0ZXN0VmFsdWUsIGkpOworICAgZS5wcm9wID0g
J25ldy10ZXN0LXZhbHVlJzsKKyAgIHRlc3RDYXNlKGUucHJvcCwgdGVzdFZhbHVlKyctbmV3LXRl
c3QtdmFsdWUnLCBpKTsKK30KKwordmFyIEYgID0gY2xhc3MgRiBleHRlbmRzIEEgeworICBuZXdN
ZXRob2QoKSB7CisgICAgdmFyIGFycm93ICA9ICgpID0+IGV2YWwoJ3N1cGVyLmdldFZhbHVlKCkn
KTsKKyAgICB2YXIgciA9IGFycm93KCk7CisgICAgcmV0dXJuIHI7CisgIH0KK307CisKK3ZhciBm
ID0gbmV3IEYoKTsKK2ZvciAodmFyIGk9MDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgdHJ5IHsKKyAg
ICAgdmFyIHJlc3VsdCA9IGYubmV3TWV0aG9kKCk7CisgICAgIHRlc3RDYXNlKHJlc3VsdCwgdGVz
dFZhbHVlLCBpKTsKKyAgIH0gY2F0Y2goZSkgeworICAgICBpZiAoIShlIGluc3RhbmNlb2YgU3lu
dGF4RXJyb3IpKQorICAgICAgICB0aHJvdyBlOworICAgfQorfQorCit2YXIgRyA9IGNsYXNzIEcg
ZXh0ZW5kcyBBIHsKKyAgICAgY29uc3RydWN0b3IoKSB7CisgICAgICAgICBzdXBlcigpOworICAg
ICB9CisgICAgIGdldCBwcm9wKCkgeworICAgICAgICAgdmFyIGFycm93ID0gKCkgPT4gKCkgPT4g
c3VwZXIuZ2V0Q29uc3RWYWx1ZSgpICsgJy0nICsgdGhpcy52YWx1ZTsKKyAgICAgICAgIHJldHVy
biBhcnJvdygpKCk7CisgICAgIH0KKyAgICAgc2V0IHByb3AodmFsdWUpIHsKKyAgICAgICAgIHZh
ciBhcnJvdyA9ICAoKSA9PiAobmV3VmFsKSA9PiB0aGlzLnZhbHVlID0gbmV3VmFsOworICAgICAg
ICAgYXJyb3coKSh2YWx1ZSk7CisgICAgIH0KKyAgICAgc2V0SW5pdFZhbHVlKCkgeworICAgICAg
IHRoaXMudmFsdWUgPSB0ZXN0VmFsdWU7CisgICAgIH0KKyAgICAgZ2V0VmFsdWVDQigpIHsKKyAg
ICAgICB2YXIgYXJyb3cgID0gKCkgPT4gc3VwZXIuZ2V0VmFsdWUoKTsKKyAgICAgICByZXR1cm4g
YXJyb3c7CisgICAgIH0KKyAgICAgc2V0VmFsdWVDQigpIHsKKyAgICAgICB2YXIgYXJyb3cgPSAg
KG5ld1ZhbCkgPT4gdGhpcy52YWx1ZSA9IG5ld1ZhbDsKKyAgICAgICByZXR1cm4gYXJyb3c7Cisg
ICAgIH0KKyAgICAgZ2V0UGFyZW50VmFsdWUoKSB7CisgICAgICAgcmV0dXJuIHN1cGVyLmdldFZh
bHVlKCk7CisgICAgIH0KKyAgICAgZ2V0UGFyZW50VmFsdWVXaXRoRXJyb3IoKSB7CisgICAgICAg
dmFyIGYgPSAgZnVuY3Rpb24gKCkgeworICAgICAgICAgcmV0dXJuICgpID0+IHN1cGVyLmdldFZh
bHVlKCk7CisgICAgICAgfTsKKyAgICAgICByZXR1cm4gZigpOworICAgICB9CisgfTsKKworIHZh
ciBnID0gbmV3IEcoKTsKKyBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgICBn
LnNldEluaXRWYWx1ZSgpOworICAgIHRlc3RDYXNlKGcucHJvcCwgdGVzdFZhbHVlICsgJy0nICsg
dGVzdFZhbHVlLCAnRXJyb3I6IFNvbWUgcHJvYmxlbSB3aXRoIHVzaW5nIGFycm93IGFuZCAic3Vw
ZXIiIGluc2lkZSBvZiB0aGUgbWV0aG9kJyk7CisgICAgZy5wcm9wID0gJ25ldy10ZXN0LXZhbHVl
JzsKKyAgICB0ZXN0Q2FzZShnLnByb3AsIHRlc3RWYWx1ZSArICctbmV3LXRlc3QtdmFsdWUnLCAn
RXJyb3I6IFNvbWUgcHJvYmxlbSB3aXRoIHVzaW5nIGFycm93IGFuZCAic3VwZXIiIGluc2lkZSBv
ZiB0aGUgZ2V0dGVyIGFuZCBzZXR0ZXInKTsKKyB9CisKK3ZhciBnMSA9IG5ldyBHKCk7Citmb3Ig
KHZhciBpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgZzEuc2V0SW5pdFZhbHVlKCk7CisgIGxl
dCBnZXRWYWx1ZSA9IGcxLmdldFZhbHVlQ0IoKTsKKyAgdGVzdENhc2UoZ2V0VmFsdWUoKSwgdGVz
dFZhbHVlLCAgJ0Vycm9yOiBTb21lIHByb2JsZW0gd2l0aCB1c2luZyBhcnJvdyBhbmQgInN1cGVy
IiBpbnNpZGUgb2YgdGhlIG1ldGhvZCB0aGF0IHJldHVuIGFycm93IGZ1bmN0aW9uJyk7CisgIGxl
dCBzZXRWYWx1ZSA9IGcxLnNldFZhbHVlQ0IoKTsKKyAgc2V0VmFsdWUoJ25ldy12YWx1ZScpOwor
ICB0ZXN0Q2FzZShnZXRWYWx1ZSgpLCAnbmV3LXZhbHVlJywgJ0Vycm9yOiBTb21lIHByb2JsZW0g
d2l0aCB1c2luZyBhcnJvdyBhbmQgInN1cGVyIiBpbnNpZGUgb2YgdGhlIG1ldGhvZCB0aGF0IHJl
dHVuIGFycm93IGZ1bmN0aW9uJyk7Cit9CisKK3ZhciBnMiA9IG5ldyBHKCk7Citmb3IgKHZhciBp
ID0gMDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgbGV0IGVycm9yID0gZmFsc2U7CisgIHRyeSB7Cisg
ICAgIGcyLmdldFBhcmVudFZhbHVlV2l0aEVycm9yKCkoKTsKKyAgfSBjYXRjaChlKSB7CisvLyBG
aXhtZTogc2hvdWxkIGJ5IGNoZWNrIGlmIGUgaW5zdGFuY2VvZiBTeW50YXhFcnJvciBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwODkzCisgICAgZXJvcnIgPSB0cnVl
OworICB9CisgIHRlc3RDYXNlKGVyb3JyLCB0cnVlLCAnRXJyb3I6IHVzaW5nICJzdXBlciIgc2hv
dWxkIGxlYWQgdG8gZXJyb3InKTsKK30KKworCit2YXIgSCA9IGNsYXNzIEggZXh0ZW5kcyBBIHsK
KyAgY29uc3RydWN0b3IoKSB7CisgICAgdmFyIGFycm93ID0gKCkgPT4gKCkgPT4gc3VwZXIuZ2V0
VmFsdWUoKTsKKyAgICBzdXBlcigpOworICAgIHRoaXMubmV3VmFsdWUgID0gYXJyb3coKSgpOwor
ICB9Cit9OworCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgbGV0IGggPSBu
ZXcgSCgpOworICB0ZXN0Q2FzZShoLm5ld1ZhbHVlLCB0ZXN0VmFsdWUsICdFcnJvcjogU29tZSBw
cm9ibGVtIHdpdGggdXNpbmcgInN1cGVyIiBpbnNpZGUgb2YgdGhlIGNvbnN0cnVjdG9yJyk7Cit9
CisKK3ZhciBJID0gY2xhc3MgSSBleHRlbmRzIEEgeworICBjb25zdHJ1Y3RvciAoYmVmb3JlU3Vw
ZXIpIHsKKyAgICB2YXIgYXJyb3cgPSAoKSA9PiBzdXBlci5nZXRWYWx1ZSgpOworICAgIGlmIChi
ZWZvcmVTdXBlcikgIHsKKyAgICAgIHRoaXMuX3ZhbHVlID0gYXJyb3coKTsKKyAgICAgIHN1cGVy
KCk7CisgICAgfSBlbHNlIHsKKyAgICAgIHN1cGVyKCk7CisgICAgICB0aGlzLl92YWx1ZSA9IGFy
cm93KCk7CisgICAgfQorICB9Cit9CisKK3ZhciBKID0gY2xhc3MgSiBleHRlbmRzIEEgeworICBj
b25zdHJ1Y3RvciAoYmVmb3JlU3VwZXIpIHsKKyAgICB2YXIgX3ZhbHVlOworICAgIHZhciBhcnJv
dyA9ICgpID0+IHN1cGVyLmdldENvbnN0VmFsdWUoKTsKKyAgICBpZiAoYmVmb3JlU3VwZXIpICB7
CisgICAgICBfdmFsdWUgPSBzdXBlci5nZXRDb25zdFZhbHVlKCk7CisgICAgICBzdXBlcigpOwor
ICAgICB9IGVsc2UgeworICAgICAgc3VwZXIoKTsKKyAgICAgIF92YWx1ZSA9IGFycm93KCk7Cisg
ICAgfQorICAgIHRoaXMuX3ZhbHVlID0gX3ZhbHVlOworICB9Cit9CisKK2ZvciAodmFyIGkgPSAw
OyBpIDwgMTAwMDA7IGkrKykgeworICBsZXQgaSA9IG5ldyBJKGZhbHNlKTsKKyAgdGVzdENhc2Uo
aS5fdmFsdWUsIHRlc3RWYWx1ZSwgJ0Vycm9yOiBTb21lIHByb2JsZW0gd2l0aCB1c2luZyAic3Vw
ZXIiIGluc2lkZSBvZiB0aGUgY29uc3RydWN0b3InKTsKKyAgbGV0IGogPSBuZXcgSihmYWxzZSk7
CisgIHRlc3RDYXNlKGouX3ZhbHVlLCB0ZXN0VmFsdWUsICdFcnJvcjogU29tZSBwcm9ibGVtIHdp
dGggdXNpbmcgInN1cGVyIiBpbnNpZGUgb2YgdGhlIGNvbnN0cnVjdG9yJyk7CisKKy8vIEZJWE1F
OiBQcm9ibGVtIHdpdGggYWNjZXNzIHRvIHRoZSBzdXBlciBiZWZvcmUgc3VwZXIgaW4gY29uc3Ry
dWN0b3IKKy8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTIxMDgK
Ky8vICBsZXQgajIgPSBuZXcgSih0cnVlKTsKKy8vICB0ZXN0Q2FzZShqMi5fdmFsdWUsIHRlc3RW
YWx1ZSwgJ0Vycm9yOiBTb21lIHByb2JsZW0gd2l0aCB1c2luZyAic3VwZXIiIGluc2lkZSBvZiB0
aGUgY29uc3RydWN0b3InKTsKKworICBlcm9yciA9IGZhbHNlOworICB0cnkgeworICAgICAgbmV3
IEkodHJ1ZSk7CisgIH0gY2F0Y2ggKGUpIHsKKyAgICAgIGVyb3JyID0gZSBpbnN0YW5jZW9mIFJl
ZmVyZW5jZUVycm9yOworICB9CisgIHRlc3RDYXNlKGVyb3JyLCB0cnVlLCAnRXJyb3I6IHVzaW5n
ICJzdXBlciIgcHJvcGVydHkgYmVmb3JlIHN1cGVyKCkgc2hvdWxkIGxlYWQgdG8gZXJyb3InKTsK
K30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwppbmRleCA4YzRlNWM4ZTM2ZTBhMmZkNWU3MDg1NDY1ZTgwYjg1YWUyYjIyNTEzLi5hZWYz
NGE5ZmIyZjZjNTkyNmE3NTg0MGM2NDJiNzQ3MzhhZGU5Y2UyIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQg
QEAKKzIwMTUtMTItMTAgIFNrYWNoa292IE9sZWtzYW5kciAgPGdza2FjaGtvdkBnbWFpbC5jb20+
CisKKyAgICAgICAgW0VTNl0gQXJyb3cgZnVuY3Rpb24gc3ludGF4LiBBcnJvdyBmdW5jdGlvbiBz
cGVjaWZpYyBmZWF0dXJlcy4gTGV4aWNhbCBiaW5kICJzdXBlciIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0OTYxNQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICoganMvYXJyb3dmdW5jdGlvbi1zdXBlcnBy
b3BlcnR5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvYXJyb3dmdW5jdGlvbi1z
dXBlcnByb3BlcnR5Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9hcnJv
d2Z1bmN0aW9uLXN1cGVycHJvcGVydHkuanM6IEFkZGVkLgorCiAyMDE1LTEyLTA1ICBTa2FjaGtv
diBPbGVrc2FuZHIgIDxnc2thY2hrb3ZAZ21haWwuY29tPgogCiAgICAgICAgIFtFUzZdICJzdXBl
ciIgYW5kICJ0aGlzIiBzaG91bGQgYmUgbGV4aWNhbGx5IGJvdW5kIGluc2lkZSBhbiBhcnJvdyBm
dW5jdGlvbiBhbmQgc2hvdWxkIGxpdmUgaW4gYSBKU0xleGljYWxFbnZpcm9ubWVudApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1zdXBlcnByb3BlcnR5LWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tc3VwZXJwcm9wZXJ0eS1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uM2RmMmM0OTVmYjlmZjFlMjc2MzMwZjE1M2MxNDBiYjVmZjVmNDlk
MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tc3VwZXJw
cm9wZXJ0eS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNiBAQAorVGVzdHMgZm9yIEVTNiBhcnJv
dyBmdW5jdGlvbiwgYWNjZXNzIHRvIHRoZSBzdXBlciBwcm9wZXJ0eSBpbiBhcnJvdyBmdW5jdGlv
bgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2Vz
LCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyAobmV3IEIoKSkuZ2V0VmFs
dWVQYXJlbnRGdW5jdGlvbigpIGlzIGV4cGVjdGVkVmFsdWUKK1BBU1MgKG5ldyBDKGZhbHNlKSku
dmFsdWUgaXMgZXhwZWN0ZWRWYWx1ZQorUEFTUyBFLmdldFBhcmVudFN0YXRpY1ZhbHVlKCkgaXMg
ZXhwZWN0ZWRWYWx1ZQorUEFTUyBmLnByb3AgaXMgZXhwZWN0ZWRWYWx1ZSArICItIiArIGV4cGVj
dGVkVmFsdWUKK1BBU1MgZi5wcm9wIGlzIGV4cGVjdGVkVmFsdWUgKyAiLSIgKyAibmV3LXZhbHVl
IgorUEFTUyAobmV3IEYoKSkuZ2V0UGFyZW50VmFsdWUoKSBpcyBleHBlY3RlZFZhbHVlCitQQVNT
IChuZXcgRigpKS5nZXRQYXJlbnRWYWx1ZVdpdGhFcnJvcigpKCkgdGhyZXcgZXhjZXB0aW9uIFR5
cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ3N1cGVyLmdl
dFZhbHVlJykuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1zdXBlcnByb3Bl
cnR5Lmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXN1cGVycHJvcGVydHkuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wMmI1MDVmNzk5NDViN2NhMzljOTZjYzcxOWFjZGM5NWZmNWJhMGZkCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1zdXBlcnByb3Bl
cnR5Lmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRG
Ly9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNy
Yz0ic2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tc3VwZXJwcm9wZXJ0eS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMv
YXJyb3dmdW5jdGlvbi1zdXBlcnByb3BlcnR5LmpzIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRl
c3RzL2Fycm93ZnVuY3Rpb24tc3VwZXJwcm9wZXJ0eS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MzRjYzA5ZTU3
NjY4ZDJhYTQ4MjlkMWRjYzdjZjg3NWQwOGUxZTBjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tc3VwZXJwcm9wZXJ0eS5qcwpAQCAt
MCwwICsxLDk2IEBACitkZXNjcmlwdGlvbignVGVzdHMgZm9yIEVTNiBhcnJvdyBmdW5jdGlvbiwg
YWNjZXNzIHRvIHRoZSBzdXBlciBwcm9wZXJ0eSBpbiBhcnJvdyBmdW5jdGlvbicpOworCit2YXIg
ZXhwZWN0ZWRWYWx1ZSAgPSAndGVzdC12YWx1ZSc7CisKK2NsYXNzIEEgeworICAgIGdldFZhbHVl
ICgpIHsKKyAgICAgIHJldHVybiBleHBlY3RlZFZhbHVlOworICAgIH0KK307CisKK2NsYXNzIEIg
ZXh0ZW5kcyBBIHsKKyAgZ2V0VmFsdWVQYXJlbnRGdW5jdGlvbigpIHsKKyAgICB2YXIgYXJyb3cg
ID0gKCkgPT4gc3VwZXIuZ2V0VmFsdWUoKTsKKyAgICByZXR1cm4gYXJyb3coKTsKKyAgfQorfTsK
KworY2xhc3MgQyBleHRlbmRzIEIgeworICAgY29uc3RydWN0b3IoYmVmb3JlU3VwZXIpIHsKKyAg
ICAgbGV0IF92YWx1ZTsKKyAgICAgbGV0IGFycm93ID0gKCkgPT4gc3VwZXIuZ2V0VmFsdWUoKTsK
KyAgICAgaWYgKGJlZm9yZVN1cGVyKSB7CisgICAgICAgIF92YWx1ZSA9IGFycm93KCk7CisgICAg
ICAgIHN1cGVyKCk7CisgICAgIH0gZWxzZSB7CisgICAgICAgIHN1cGVyKCk7CisgICAgICAgIF92
YWx1ZSA9IGFycm93KCk7CisgICAgIH0KKyAgICAgdGhpcy52YWx1ZSA9IF92YWx1ZTsKKyAgIH0K
K307CisKK2NsYXNzIEQgeworICBjb25zdHJ1Y3RvcigpIHsKKyAgICB0aGlzLnZhbHVlID0gZXhw
ZWN0ZWRWYWx1ZTsKKyAgfQorICBzdGF0aWMgZ2V0U3RhdGljVmFsdWUoKSB7CisgICAgcmV0dXJu
IGV4cGVjdGVkVmFsdWU7CisgIH0KK307CisKK2NsYXNzIEUgZXh0ZW5kcyBEIHsKKyAgc3RhdGlj
IGdldFBhcmVudFN0YXRpY1ZhbHVlKCkgeworICAgIHZhciBhcnJvdyAgPSAoKSA9PiBzdXBlci5n
ZXRTdGF0aWNWYWx1ZSgpOworICAgIHJldHVybiBhcnJvdygpOworICB9Cit9OworCitjbGFzcyBG
IGV4dGVuZHMgQSB7CisgICAgIGNvbnN0cnVjdG9yKCkgeworICAgICAgIHN1cGVyKCk7CisgICAg
ICAgdGhpcy52YWx1ZSA9IGV4cGVjdGVkVmFsdWU7CisgICAgIH0KKyAgICAgZ2V0IHByb3AoKSB7
CisgICAgICAgICB2YXIgYXJyb3cgPSAoKSA9PiBzdXBlci5nZXRWYWx1ZSgpKyAnLScgKyB0aGlz
LnZhbHVlOworICAgICAgICAgcmV0dXJuIGFycm93KCk7CisgICAgIH0KKyAgICAgc2V0IHByb3Ao
dmFsdWUpIHsKKyAgICAgICAgIHZhciBhcnJvdyA9IChuZXdWYWwpID0+IHRoaXMudmFsdWUgPSBu
ZXdWYWw7CisgICAgICAgICBhcnJvdyh2YWx1ZSk7CisgICAgIH0KKyAgICAgZ2V0UGFyZW50VmFs
dWUoKSB7CisgICAgICAgbGV0IGFycm93ID0gKCkgPT4gKCkgPT4gc3VwZXIuZ2V0VmFsdWUoKTsK
KyAgICAgICByZXR1cm4gYXJyb3coKSgpOworICAgICB9CisgICAgIGdldFBhcmVudFZhbHVlV2l0
aEVycm9yKCkgeworICAgICAgIHZhciBmID0gIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgIHJldHVy
biAoKSA9PiBzdXBlci5nZXRWYWx1ZSgpOworICAgICAgIH07CisgICAgICAgcmV0dXJuIGYoKTsK
KyAgICAgfQorIH07CisKK3Nob3VsZEJlKCcobmV3IEIoKSkuZ2V0VmFsdWVQYXJlbnRGdW5jdGlv
bigpJywgJ2V4cGVjdGVkVmFsdWUnKTsKKworc2hvdWxkQmUoJyhuZXcgQyhmYWxzZSkpLnZhbHVl
JywgJ2V4cGVjdGVkVmFsdWUnKTsKKworLy8gRklYTUU6IFByb2JsZW0gd2l0aCBhY2Nlc3MgdG8g
dGhlIHN1cGVyIGJlZm9yZSBzdXBlciBpbiBjb25zdHJ1Y3RvcgorLy8gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MjEwOAorLy9zaG91bGRUaHJvdygnKG5ldyBDKGZh
bHNlKSknLCAnUmVmZXJlbmNlRXJyb3InKTsKKworCitzaG91bGRCZSgnRS5nZXRQYXJlbnRTdGF0
aWNWYWx1ZSgpJywgJ2V4cGVjdGVkVmFsdWUnKTsKKwordmFyIGYgPSBuZXcgRigpOworCitzaG91
bGRCZSgnZi5wcm9wJywgJ2V4cGVjdGVkVmFsdWUgKyAiLSIgKyBleHBlY3RlZFZhbHVlJyk7CisK
K2YucHJvcCA9ICduZXctdmFsdWUnOworc2hvdWxkQmUoJ2YucHJvcCcsICdleHBlY3RlZFZhbHVl
ICsgIi0iICsgIm5ldy12YWx1ZSInKTsKKworc2hvdWxkQmUoJyhuZXcgRigpKS5nZXRQYXJlbnRW
YWx1ZSgpJywgJ2V4cGVjdGVkVmFsdWUnKTsKKworc2hvdWxkVGhyb3coJyhuZXcgRigpKS5nZXRQ
YXJlbnRWYWx1ZVdpdGhFcnJvcigpKCknKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRy
dWU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267762</attachid>
            <date>2015-12-21 14:06:47 -0800</date>
            <delta_ts>2015-12-22 13:12:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-149615-20151222000608.patch</filename>
            <type>text/plain</type>
            <size>57194</size>
            <attacher name="GSkachkov">gskachkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk0MzQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
MzU4ODYwYzljM2Y4NDNmNjU3YmViY2U5MDRhODYxYzk4MzBmZWQzLi42OGJiNzJhNDgxMTQ5YTI0
NDk4NTg1YTFjNWJkMzI0MjhiNGE4ODk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2NSBAQAorMjAxNS0xMi0xMCAgQWxla3NhbmRyIFNrYWNoa292ICA8Z3NrYWNoa292QGdt
YWlsLmNvbT4KKworICAgICAgICBbRVM2XSBBcnJvdyBmdW5jdGlvbiBzeW50YXguIEFycm93IGZ1
bmN0aW9uIHNwZWNpZmljIGZlYXR1cmVzLiBMZXhpY2FsIGJpbmQgInN1cGVyIgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5NjE1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50ZWQgbGV4aWNh
bCBiaW5kICJzdXBlciIgcHJvcGVydHkgZm9yIGFycm93IGZ1bmN0aW9uLiAnc3VwZXInIHByb3Bl
cnR5IGNhbiBiZSBhY2Nlc3NlZCAKKyAgICAgICAgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlv
biBpbiBjYXNlIGlmIGFycm93IGZ1bmN0aW9uIGlzIG5lc3RlZCBpbiBjb25zdHJ1Y3RvciwgbWV0
aG9kLCAKKyAgICAgICAgZ2V0dGVyIG9yIHNldHRlciBvZiBjbGFzcy4gSW4gY3VycmVudCBwYXRj
aCB1c2luZyAnc3VwZXInIGluIGFycm93IGZ1bmN0aW9uLCB0aGF0IGRlY2xhcmVkIG91dCBvZiB0
aGUgCisgICAgICAgIGNsYXNzLCBsZWFkIHRvIHdyb25nIHR5cGUgb2YgZXJyb3IsIHNob3VsZCBi
ZSBTeW50YXhFcnJvcihodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUw
ODkzKSAKKyAgICAgICAgYW5kIHRoaXMgd2lsbCBiZSBmaXhlZCBpbiBzZXBhcmV0ZSBwYXRjaC4K
KworICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHA6CisgICAgICAgIChK
U0M6OmNyZWF0ZUV4ZWN1dGFibGVJbnRlcm5hbCk6CisgICAgICAgICogYnl0ZWNvZGUvRXZhbENv
ZGVDYWNoZS5oOgorICAgICAgICAoSlNDOjpFdmFsQ29kZUNhY2hlOjpnZXRTbG93KToKKyAgICAg
ICAgKiBieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxl
SW5mbzo6RXhlY3V0YWJsZUluZm8pOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlSW5mbzo6ZGVy
aXZlZENvbnRleHRUeXBlKToKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUluZm86OmlzQ2xhc3ND
b250ZXh0KToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHA6CisgICAg
ICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpVbmxpbmtlZENvZGVCbG9jayk6CisgICAgICAg
ICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRD
b2RlQmxvY2s6OmRlcml2ZWRDb250ZXh0VHlwZSk6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29k
ZUJsb2NrOjppc0NsYXNzQ29udGV4dCk6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpnZW5lcmF0ZVVubGlua2VkRnVuY3Rp
b25Db2RlQmxvY2spOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUpOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2Vu
ZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXREZXJpdmVk
Q29uc3RydWN0b3JUb0Fycm93RnVuY3Rpb25Db250ZXh0U2NvcGUpOgorICAgICAgICAqIGJ5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVy
YXRvcjo6ZGVyaXZlZENvbnRleHRUeXBlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OmlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
R2VuZXJhdG9yOjppc0Rlcml2ZWRDbGFzc0NvbnRleHQpOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcjo6aXNBcnJvd0Z1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3I6Om1ha2VGdW5jdGlvbik6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdl
bi5jcHA6CisgICAgICAgIChKU0M6OmVtaXRIb21lT2JqZWN0Rm9yQ2FsbGVlKToKKyAgICAgICAg
KEpTQzo6RnVuY3Rpb25DYWxsVmFsdWVOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGRl
YnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcDoKKyAgICAgICAgKEpTQzo6RGVidWdnZXJDYWxs
RnJhbWU6OmV2YWx1YXRlKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6
CisgICAgICAgIChKU0M6OmV2YWwpOgorICAgICAgICAqIHJ1bnRpbWUvQ29kZUNhY2hlLmNwcDoK
KyAgICAgICAgKEpTQzo6Q29kZUNhY2hlOjpnZXRGdW5jdGlvbkV4ZWN1dGFibGVGcm9tR2xvYmFs
Q29kZSk6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6
U2NyaXB0RXhlY3V0YWJsZTo6U2NyaXB0RXhlY3V0YWJsZSk6CisgICAgICAgIChKU0M6OkV2YWxF
eGVjdXRhYmxlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpFdmFsRXhlY3V0YWJsZTo6RXZhbEV4
ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6UHJvZ3JhbUV4ZWN1
dGFibGUpOgorICAgICAgICAoSlNDOjpNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6TW9kdWxlUHJv
Z3JhbUV4ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OkZ1bmN0
aW9uRXhlY3V0YWJsZSk6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmg6CisgICAgICAg
IChKU0M6OlNjcmlwdEV4ZWN1dGFibGU6OmRlcml2ZWRDb250ZXh0VHlwZSk6CisgICAgICAgICog
cnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChKU0M6Omdsb2Jh
bEZ1bmNFdmFsKToKKyAgICAgICAgKiB0ZXN0cy9lczYueWFtbDoKKyAgICAgICAgKiB0ZXN0cy9z
dHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtc3VwZXJwcm9wZXJ0eS5qczogQWRkZWQu
CisKIDIwMTUtMTItMDUgQWxla3NhbmRyIFNrYWNoa292ICAgPGdza2FjaGtvdkBnbWFpbC5jb20+
CiAKICAgICAgICAgW0VTNl0gInN1cGVyIiBhbmQgInRoaXMiIHNob3VsZCBiZSBsZXhpY2FsbHkg
Ym91bmQgaW5zaWRlIGFuIGFycm93IGZ1bmN0aW9uIGFuZCBzaG91bGQgbGl2ZSBpbiBhIEpTTGV4
aWNhbEVudmlyb25tZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRp
bnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlu
cy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCmluZGV4IGI4MDBmNTEzZTlmYWFhNTRhMjQyZDVlMTI0
MzdmNTBjN2Y5ZDU2ZDguLmE2YmNmNzQ0MzZmZjljODJlMzk5NDZlYWZhOTRjZTAxMzczMWNiNzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0
YWJsZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhl
Y3V0YWJsZXMuY3BwCkBAIC0xMTUsNyArMTE1LDcgQEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUqIGNyZWF0ZUV4ZWN1dGFibGVJbnRlcm5hbChWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHMK
ICAgICB9CiAgICAgbWV0YWRhdGEtPm92ZXJyaWRlTmFtZShuYW1lKTsKICAgICBWYXJpYWJsZUVu
dmlyb25tZW50IGR1bW15VERaVmFyaWFibGVzOwotICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3Jl
YXRlKCZ2bSwgc291cmNlLCBtZXRhZGF0YSwga2luZCwgY29uc3RydWN0QWJpbGl0eSwgR2VuZXJh
dG9yVGhpc01vZGU6Ok5vbkVtcHR5LCBkdW1teVREWlZhcmlhYmxlcywgZmFsc2UsIFdURjo6bW92
ZShzb3VyY2VPdmVycmlkZSkpOworICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5j
dGlvbkV4ZWN1dGFibGUgPSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKCZ2bSwg
c291cmNlLCBtZXRhZGF0YSwga2luZCwgY29uc3RydWN0QWJpbGl0eSwgR2VuZXJhdG9yVGhpc01v
ZGU6Ok5vbkVtcHR5LCBkdW1teVREWlZhcmlhYmxlcywgRGVyaXZlZENvbnRleHRUeXBlOjpOb25l
LCBXVEY6Om1vdmUoc291cmNlT3ZlcnJpZGUpKTsKICAgICBmdW5jdGlvbkV4ZWN1dGFibGUtPnNl
dE5hbWVWYWx1ZSh2bSwganNTdHJpbmcoJnZtLCBuYW1lLnN0cmluZygpKSk7CiAgICAgcmV0dXJu
IGZ1bmN0aW9uRXhlY3V0YWJsZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9FdmFsQ29kZUNhY2hlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvRXZhbENvZGVDYWNoZS5oCmluZGV4IDg2OTEzMTY5MmE5MzRhNzVhNjQzY2U1NWY5ZTBkOTc3
YTg1YWMxMGEuLjY2MzQ5MGFmYjQ1MjQ1YzM2ZmYwNWQ0N2VmODgxM2RhNWE1OWY1MDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FdmFsQ29kZUNhY2hlLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V2YWxDb2RlQ2FjaGUuaApAQCAtNTUs
MTEgKzU1LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIEV2YWxFeGVjdXRhYmxlKiBnZXRTbG93KEV4
ZWNTdGF0ZSogZXhlYywgSlNDZWxsKiBvd25lciwgYm9vbCBpblN0cmljdENvbnRleHQsIFRoaXNU
RFpNb2RlIHRoaXNURFpNb2RlLCBib29sIGlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCwgYm9v
bCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBjb25zdCBTb3VyY2VDb2RlJiBldmFsU291cmNlLCBK
U1Njb3BlKiBzY29wZSkKKyAgICAgICAgRXZhbEV4ZWN1dGFibGUqIGdldFNsb3coRXhlY1N0YXRl
KiBleGVjLCBKU0NlbGwqIG93bmVyLCBib29sIGluU3RyaWN0Q29udGV4dCwgVGhpc1REWk1vZGUg
dGhpc1REWk1vZGUsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wg
aXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgY29uc3QgU291cmNlQ29kZSYgZXZhbFNvdXJjZSwgSlNT
Y29wZSogc2NvcGUpCiAgICAgICAgIHsKICAgICAgICAgICAgIFZhcmlhYmxlRW52aXJvbm1lbnQg
dmFyaWFibGVzVW5kZXJURFo7CiAgICAgICAgICAgICBKU1Njb3BlOjpjb2xsZWN0VmFyaWFibGVz
VW5kZXJURFooc2NvcGUsIHZhcmlhYmxlc1VuZGVyVERaKTsKLSAgICAgICAgICAgIEV2YWxFeGVj
dXRhYmxlKiBldmFsRXhlY3V0YWJsZSA9IEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoZXhlYywgZXZh
bFNvdXJjZSwgaW5TdHJpY3RDb250ZXh0LCB0aGlzVERaTW9kZSwgaXNEZXJpdmVkQ29uc3RydWN0
b3JDb250ZXh0LCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCAmdmFyaWFibGVzVW5kZXJURFopOwor
ICAgICAgICAgICAgRXZhbEV4ZWN1dGFibGUqIGV2YWxFeGVjdXRhYmxlID0gRXZhbEV4ZWN1dGFi
bGU6OmNyZWF0ZShleGVjLCBldmFsU291cmNlLCBpblN0cmljdENvbnRleHQsIHRoaXNURFpNb2Rl
LCBkZXJpdmVkQ29udGV4dFR5cGUsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsICZ2YXJpYWJsZXNV
bmRlclREWik7CiAKICAgICAgICAgICAgIGlmICghZXZhbEV4ZWN1dGFibGUpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9FeGVjdXRhYmxlSW5mby5oCmluZGV4IGFhYzM5MDRmZjAzNGM5ZTYwNzE0ZmU5OTM2NTQ5ZmU5
NWQ0YTExZTUuLmY2OTQyYzA4MGJjZDU4NTM3OTk3NWVlNGYxMTNmMGZkYWVlZWUzZDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCkBAIC0z
MCwxMSArMzAsMTMgQEAKICNpbmNsdWRlICJQYXJzZXJNb2Rlcy5oIgogCiBuYW1lc3BhY2UgSlND
IHsKKyAgICAKK2VudW0gY2xhc3MgRGVyaXZlZENvbnRleHRUeXBlIHsgTm9uZSwgRGVyaXZlZENv
bnN0cnVjdG9yQ29udGV4dCwgRGVyaXZlZE1ldGhvZENvbnRleHQgfTsKIAogLy8gRklYTUU6IFRo
ZXNlIGZsYWdzLCBQYXJzZXJNb2RlcyBhbmQgcHJvcGFnYXRpb24gdG8gWFhYQ29kZUJsb2NrcyBz
aG91bGQgYmUgcmVvcmdhbml6ZWQuCiAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTUxNTQ3CiBzdHJ1Y3QgRXhlY3V0YWJsZUluZm8gewotICAgIEV4ZWN1dGFibGVJ
bmZvKGJvb2wgbmVlZHNBY3RpdmF0aW9uLCBib29sIHVzZXNFdmFsLCBib29sIGlzU3RyaWN0TW9k
ZSwgYm9vbCBpc0NvbnN0cnVjdG9yLCBib29sIGlzQnVpbHRpbkZ1bmN0aW9uLCBDb25zdHJ1Y3Rv
cktpbmQgY29uc3RydWN0b3JLaW5kLCBHZW5lcmF0b3JUaGlzTW9kZSBnZW5lcmF0b3JUaGlzTW9k
ZSwgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZywgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSwg
Ym9vbCBpc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29u
dGV4dCkKKyAgICBFeGVjdXRhYmxlSW5mbyhib29sIG5lZWRzQWN0aXZhdGlvbiwgYm9vbCB1c2Vz
RXZhbCwgYm9vbCBpc1N0cmljdE1vZGUsIGJvb2wgaXNDb25zdHJ1Y3RvciwgYm9vbCBpc0J1aWx0
aW5GdW5jdGlvbiwgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgR2VuZXJhdG9yVGhp
c01vZGUgZ2VuZXJhdG9yVGhpc01vZGUsIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcsIFNvdXJj
ZVBhcnNlTW9kZSBwYXJzZU1vZGUsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5
cGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgYm9vbCBpc0NsYXNzQ29udGV4dCkKICAg
ICAgICAgOiBtX25lZWRzQWN0aXZhdGlvbihuZWVkc0FjdGl2YXRpb24pCiAgICAgICAgICwgbV91
c2VzRXZhbCh1c2VzRXZhbCkKICAgICAgICAgLCBtX2lzU3RyaWN0TW9kZShpc1N0cmljdE1vZGUp
CkBAIC00NCw4ICs0Niw5IEBAIHN0cnVjdCBFeGVjdXRhYmxlSW5mbyB7CiAgICAgICAgICwgbV9j
b25zdHJ1Y3RvcktpbmQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvbnN0cnVjdG9yS2luZCkpCiAg
ICAgICAgICwgbV9zdXBlckJpbmRpbmcoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN1cGVyQmluZGlu
ZykpCiAgICAgICAgICwgbV9wYXJzZU1vZGUocGFyc2VNb2RlKQotICAgICAgICAsIG1faXNEZXJp
dmVkQ29uc3RydWN0b3JDb250ZXh0KGlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCkKKyAgICAg
ICAgLCBtX2Rlcml2ZWRDb250ZXh0VHlwZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZGVyaXZlZENv
bnRleHRUeXBlKSkKICAgICAgICAgLCBtX2lzQXJyb3dGdW5jdGlvbkNvbnRleHQoaXNBcnJvd0Z1
bmN0aW9uQ29udGV4dCkKKyAgICAgICAgLCBtX2lzQ2xhc3NDb250ZXh0KGlzQ2xhc3NDb250ZXh0
KQogICAgIHsKICAgICAgICAgQVNTRVJUKG1fY29uc3RydWN0b3JLaW5kID09IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihjb25zdHJ1Y3RvcktpbmQpKTsKICAgICAgICAgQVNTRVJUKG1fc3VwZXJCaW5k
aW5nID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdXBlckJpbmRpbmcpKTsKQEAgLTYxLDggKzY0
LDkgQEAgc3RydWN0IEV4ZWN1dGFibGVJbmZvIHsKICAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3Ry
dWN0b3JLaW5kKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29uc3RydWN0b3JLaW5kPiht
X2NvbnN0cnVjdG9yS2luZCk7IH0KICAgICBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nKCkgY29u
c3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8U3VwZXJCaW5kaW5nPihtX3N1cGVyQmluZGluZyk7IH0K
ICAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9wYXJzZU1v
ZGU7IH0KLSAgICBib29sIGlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCgpIGNvbnN0IHsgcmV0
dXJuIG1faXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0OyB9CisgICAgRGVyaXZlZENvbnRleHRU
eXBlIGRlcml2ZWRDb250ZXh0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PERlcml2
ZWRDb250ZXh0VHlwZT4obV9kZXJpdmVkQ29udGV4dFR5cGUpOyB9CiAgICAgYm9vbCBpc0Fycm93
RnVuY3Rpb25Db250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9pc0Fycm93RnVuY3Rpb25Db250ZXh0
OyB9CisgICAgYm9vbCBpc0NsYXNzQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1faXNDbGFzc0Nv
bnRleHQ7IH0KIAogcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX25lZWRzQWN0aXZhdGlvbiA6IDE7
CkBAIC03NCw4ICs3OCw5IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3Rvcktp
bmQgOiAyOwogICAgIHVuc2lnbmVkIG1fc3VwZXJCaW5kaW5nIDogMTsKICAgICBTb3VyY2VQYXJz
ZU1vZGUgbV9wYXJzZU1vZGU7Ci0gICAgdW5zaWduZWQgbV9pc0Rlcml2ZWRDb25zdHJ1Y3RvckNv
bnRleHQgOiAxOworICAgIHVuc2lnbmVkIG1fZGVyaXZlZENvbnRleHRUeXBlIDogMjsKICAgICB1
bnNpZ25lZCBtX2lzQXJyb3dGdW5jdGlvbkNvbnRleHQgOiAxOworICAgIHVuc2lnbmVkIG1faXND
bGFzc0NvbnRleHQgOiAxOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAppbmRleCA4
YTdkMDI2NzkzZDQ2YjgyNWZiZjNlZjc2NTJhNTQzODM5NjUwNDYzLi41MmZjM2E3MTcxZTBhMmVj
MTc3Yjg2ZDk3NjQzMWYzYTk3ZTg0NWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKQEAgLTY3LDggKzY3LDkgQEAgVW5s
aW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKFZNKiB2bSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIENvZGVUeXBlIGNvZGUKICAgICAsIG1fY29uc3RydWN0b3JLaW5kKHN0YXRpY19jYXN0
PHVuc2lnbmVkPihpbmZvLmNvbnN0cnVjdG9yS2luZCgpKSkKICAgICAsIG1fZ2VuZXJhdG9yVGhp
c01vZGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluZm8uZ2VuZXJhdG9yVGhpc01vZGUoKSkpCiAg
ICAgLCBtX3N1cGVyQmluZGluZyhzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5mby5zdXBlckJpbmRp
bmcoKSkpCi0gICAgLCBtX2lzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dChpbmZvLmlzRGVyaXZl
ZENvbnN0cnVjdG9yQ29udGV4dCgpKQorICAgICwgbV9kZXJpdmVkQ29udGV4dFR5cGUoc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KGluZm8uZGVyaXZlZENvbnRleHRUeXBlKCkpKQogICAgICwgbV9pc0Fy
cm93RnVuY3Rpb25Db250ZXh0KGluZm8uaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCgpKQorICAgICwg
bV9pc0NsYXNzQ29udGV4dChpbmZvLmlzQ2xhc3NDb250ZXh0KCkpCiAgICAgLCBtX2ZpcnN0TGlu
ZSgwKQogICAgICwgbV9saW5lQ291bnQoMCkKICAgICAsIG1fZW5kQ29sdW1uKFVJTlRfTUFYKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJs
b2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2su
aAppbmRleCBiZWM2ZTA4NjExZGM1ZjA5NGY3OWFiODVjMTMzNWE5MTFiOWY5MTFiLi4xMmJhNDNh
ZWVmNDVlNzlhZTNkMGZjYzVkMDJlMjE1YjU4NjlhYzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaApAQCAtMTIwLDggKzEyMCw5
IEBAIHB1YmxpYzoKICAgICBib29sIHVzZXNFdmFsKCkgY29uc3QgeyByZXR1cm4gbV91c2VzRXZh
bDsgfQogICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUoKSBjb25zdCB7IHJldHVybiBtX3Bh
cnNlTW9kZTsgfQogICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9w
YXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZTsgfQotICAgIGJv
b2wgaXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9pc0Rlcml2
ZWRDb25zdHJ1Y3RvckNvbnRleHQ7IH0KKyAgICBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENv
bnRleHRUeXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RGVyaXZlZENvbnRleHRUeXBl
PihtX2Rlcml2ZWRDb250ZXh0VHlwZSk7IH0KICAgICBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRl
eHQoKSBjb25zdCB7IHJldHVybiBtX2lzQXJyb3dGdW5jdGlvbkNvbnRleHQ7IH0KKyAgICBib29s
IGlzQ2xhc3NDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9pc0NsYXNzQ29udGV4dDsgfQogCiAg
ICAgYm9vbCBuZWVkc0Z1bGxTY29wZUNoYWluKCkgY29uc3QgeyByZXR1cm4gbV9uZWVkc0Z1bGxT
Y29wZUNoYWluOyB9CiAKQEAgLTM5Niw5ICszOTcsOSBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVk
IG1fY29uc3RydWN0b3JLaW5kIDogMjsKICAgICB1bnNpZ25lZCBtX2dlbmVyYXRvclRoaXNNb2Rl
IDogMTsKICAgICB1bnNpZ25lZCBtX3N1cGVyQmluZGluZyA6IDE7Ci0gICAgdW5zaWduZWQgbV9p
c0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQgOiAxOworICAgIHVuc2lnbmVkIG1fZGVyaXZlZENv
bnRleHRUeXBlIDogMjsKICAgICB1bnNpZ25lZCBtX2lzQXJyb3dGdW5jdGlvbkNvbnRleHQgOiAx
OwotCisgICAgdW5zaWduZWQgbV9pc0NsYXNzQ29udGV4dCA6IDE7CiAgICAgdW5zaWduZWQgbV9m
aXJzdExpbmU7CiAgICAgdW5zaWduZWQgbV9saW5lQ291bnQ7CiAgICAgdW5zaWduZWQgbV9lbmRD
b2x1bW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAppbmRleCAwYzdmNDUyNzFhMjc2MjIwNjI5
ODUyYjA2MGY1ZTdmYjA2YjZjMDRiLi4zMTM3NzViODFjNmYxNTViNzM1MDQ1NTA0NmI2MjAyODEx
NDFjNDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKQEAgLTY1LDkgKzY1LDEyIEBAIHN0
YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZVVubGlua2VkRnVuY3Rpb25D
b2RlQmxvY2soCiAKICAgICBmdW5jdGlvbi0+ZmluaXNoUGFyc2luZyhleGVjdXRhYmxlLT5uYW1l
KCksIGV4ZWN1dGFibGUtPmZ1bmN0aW9uTW9kZSgpKTsKICAgICBleGVjdXRhYmxlLT5yZWNvcmRQ
YXJzZShmdW5jdGlvbi0+ZmVhdHVyZXMoKSwgZnVuY3Rpb24tPmhhc0NhcHR1cmVkVmFyaWFibGVz
KCkpOwotICAgIAorCisgICAgLy8gdGhpcyBleGVjdXRhYmxlIGlzIHBhcnQgb2YgdGhlIGNsYXNz
CisgICAgYm9vbCBpc0NsYXNzQ29udGV4dCA9IGV4ZWN1dGFibGUtPnN1cGVyQmluZGluZygpID09
IFN1cGVyQmluZGluZzo6TmVlZGVkOworCiAgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayog
cmVzdWx0ID0gVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jazo6Y3JlYXRlKCZ2bSwgRnVuY3Rpb25D
b2RlLAotICAgICAgICBFeGVjdXRhYmxlSW5mbyhmdW5jdGlvbi0+bmVlZHNBY3RpdmF0aW9uKCks
IGZ1bmN0aW9uLT51c2VzRXZhbCgpLCBmdW5jdGlvbi0+aXNTdHJpY3RNb2RlKCksIGtpbmQgPT0g
Q29kZUZvckNvbnN0cnVjdCwgZnVuY3Rpb25LaW5kID09IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9u
LCBleGVjdXRhYmxlLT5jb25zdHJ1Y3RvcktpbmQoKSwgZXhlY3V0YWJsZS0+Z2VuZXJhdG9yVGhp
c01vZGUoKSwgZXhlY3V0YWJsZS0+c3VwZXJCaW5kaW5nKCksIHBhcnNlTW9kZSwgIGV4ZWN1dGFi
bGUtPmlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCgpLCBmYWxzZSkpOworICAgICAgICBFeGVj
dXRhYmxlSW5mbyhmdW5jdGlvbi0+bmVlZHNBY3RpdmF0aW9uKCksIGZ1bmN0aW9uLT51c2VzRXZh
bCgpLCBmdW5jdGlvbi0+aXNTdHJpY3RNb2RlKCksIGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCwg
ZnVuY3Rpb25LaW5kID09IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uLCBleGVjdXRhYmxlLT5jb25z
dHJ1Y3RvcktpbmQoKSwgZXhlY3V0YWJsZS0+Z2VuZXJhdG9yVGhpc01vZGUoKSwgZXhlY3V0YWJs
ZS0+c3VwZXJCaW5kaW5nKCksIHBhcnNlTW9kZSwgZXhlY3V0YWJsZS0+ZGVyaXZlZENvbnRleHRU
eXBlKCksIGZhbHNlLCBpc0NsYXNzQ29udGV4dCkpOwogCiAgICAgYXV0byBnZW5lcmF0b3Ioc3Rk
OjptYWtlX3VuaXF1ZTxCeXRlY29kZUdlbmVyYXRvcj4odm0sIGZ1bmN0aW9uLmdldCgpLCByZXN1
bHQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBleGVjdXRhYmxlLT5wYXJlbnRTY29wZVRE
WlZhcmlhYmxlcygpKSk7CiAgICAgZXJyb3IgPSBnZW5lcmF0b3ItPmdlbmVyYXRlKCk7CkBAIC03
Niw3ICs3OSw3IEBAIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZVVu
bGlua2VkRnVuY3Rpb25Db2RlQmxvY2soCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZNKiB2bSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgUmVmUHRyPFNv
dXJjZVByb3ZpZGVyPiYmIHNvdXJjZU92ZXJyaWRlLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbm9k
ZSwgVW5saW5rZWRGdW5jdGlvbktpbmQga2luZCwgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RB
YmlsaXR5LCBHZW5lcmF0b3JUaGlzTW9kZSBnZW5lcmF0b3JUaGlzTW9kZSwgVmFyaWFibGVFbnZp
cm9ubWVudCYgcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIGJvb2wgaXNEZXJpdmVkQ29uc3RydWN0
b3JDb250ZXh0KQorVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlKFZNKiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFNvdXJjZUNvZGUm
IHNvdXJjZSwgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiYmIHNvdXJjZU92ZXJyaWRlLCBGdW5jdGlv
bk1ldGFkYXRhTm9kZSogbm9kZSwgVW5saW5rZWRGdW5jdGlvbktpbmQga2luZCwgQ29uc3RydWN0
QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5LCBHZW5lcmF0b3JUaGlzTW9kZSBnZW5lcmF0b3JUaGlz
TW9kZSwgVmFyaWFibGVFbnZpcm9ubWVudCYgcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIERlcml2
ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUpCiAgICAgOiBCYXNlKCp2bSwgc3RydWN0
dXJlKQogICAgICwgbV9uYW1lKG5vZGUtPmlkZW50KCkpCiAgICAgLCBtX2luZmVycmVkTmFtZShu
b2RlLT5pbmZlcnJlZE5hbWUoKSkKQEAgLTEwMiw3ICsxMDUsNyBAQCBVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0qIHZtLCBTdHJ1Y3R1cmUq
IHN0cnVjdAogICAgICwgbV9mdW5jdGlvbk1vZGUobm9kZS0+ZnVuY3Rpb25Nb2RlKCkpCiAgICAg
LCBtX2dlbmVyYXRvclRoaXNNb2RlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihnZW5lcmF0b3JUaGlz
TW9kZSkpCiAgICAgLCBtX3N1cGVyQmluZGluZyhzdGF0aWNfY2FzdDx1bnNpZ25lZD4obm9kZS0+
c3VwZXJCaW5kaW5nKCkpKQotICAgICwgbV9pc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoaXNE
ZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KQorICAgICwgbV9kZXJpdmVkQ29udGV4dFR5cGUoc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KGRlcml2ZWRDb250ZXh0VHlwZSkpCiB7CiAgICAgQVNTRVJUKG1f
Y29uc3RydWN0b3JLaW5kID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihub2RlLT5jb25zdHJ1Y3Rv
cktpbmQoKSkpOwogICAgIG1fcGFyZW50U2NvcGVURFpWYXJpYWJsZXMuc3dhcChwYXJlbnRTY29w
ZVREWlZhcmlhYmxlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oCmluZGV4IGZhMjFlMzg3MDA3MWJj
MWEwMGZjYTU1ZjI5OTRjNWE3YzlkYWViMGUuLmQ4YmQ4N2I5NzgzYjdlNDRjNzM4YzYwYmJjMmM0
ZGZhMGIwMDIwMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9V
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oCkBAIC0zMCw2ICszMCw3IEBACiAj
aW5jbHVkZSAiQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oIgogI2luY2x1ZGUgIkNvZGVUeXBlLmgi
CiAjaW5jbHVkZSAiQ29uc3RydWN0QWJpbGl0eS5oIgorI2luY2x1ZGUgIkV4ZWN1dGFibGVJbmZv
LmgiCiAjaW5jbHVkZSAiRXhwcmVzc2lvblJhbmdlSW5mby5oIgogI2luY2x1ZGUgIkdlbmVyYXRv
clRoaXNNb2RlLmgiCiAjaW5jbHVkZSAiSGFuZGxlckluZm8uaCIKQEAgLTY2LDEwICs2NywxMCBA
QCBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKICAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IFN0cnVjdHVyZUlz
SW1tb3J0YWw7CiAKLSAgICBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0
ZShWTSogdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVuY3Rpb25NZXRhZGF0YU5vZGUq
IG5vZGUsIFVubGlua2VkRnVuY3Rpb25LaW5kIHVubGlua2VkRnVuY3Rpb25LaW5kLCBDb25zdHJ1
Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHksIEdlbmVyYXRvclRoaXNNb2RlIGdlbmVyYXRvclRo
aXNNb2RlLCBWYXJpYWJsZUVudmlyb25tZW50JiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgYm9v
bCBpc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQsIFJlZlB0cjxTb3VyY2VQcm92aWRlcj4mJiBz
b3VyY2VPdmVycmlkZSA9IG51bGxwdHIpCisgICAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlKiBjcmVhdGUoVk0qIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEZ1bmN0aW9u
TWV0YWRhdGFOb2RlKiBub2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCB1bmxpbmtlZEZ1bmN0aW9u
S2luZCwgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5LCBHZW5lcmF0b3JUaGlzTW9k
ZSBnZW5lcmF0b3JUaGlzTW9kZSwgVmFyaWFibGVFbnZpcm9ubWVudCYgcGFyZW50U2NvcGVURFpW
YXJpYWJsZXMsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIFJlZlB0cjxT
b3VyY2VQcm92aWRlcj4mJiBzb3VyY2VPdmVycmlkZSA9IG51bGxwdHIpCiAgICAgewogICAgICAg
ICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4odm0tPmhlYXApKQotICAgICAg
ICAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUodm0sIHZtLT51bmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZVN0cnVjdHVyZS5nZXQoKSwgc291cmNlLCBXVEY6Om1vdmUoc291cmNlT3ZlcnJp
ZGUpLCBub2RlLCB1bmxpbmtlZEZ1bmN0aW9uS2luZCwgY29uc3RydWN0QWJpbGl0eSwgZ2VuZXJh
dG9yVGhpc01vZGUsIHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBpc0Rlcml2ZWRDb25zdHJ1Y3Rv
ckNvbnRleHQpOworICAgICAgICAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUodm0sIHZt
LT51bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVN0cnVjdHVyZS5nZXQoKSwgc291cmNlLCBXVEY6
Om1vdmUoc291cmNlT3ZlcnJpZGUpLCBub2RlLCB1bmxpbmtlZEZ1bmN0aW9uS2luZCwgY29uc3Ry
dWN0QWJpbGl0eSwgZ2VuZXJhdG9yVGhpc01vZGUsIHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBk
ZXJpdmVkQ29udGV4dFR5cGUpOwogICAgICAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24oKnZt
KTsKICAgICAgICAgcmV0dXJuIGluc3RhbmNlOwogICAgIH0KQEAgLTEzMCwxMSArMTMxLDEyIEBA
IHB1YmxpYzoKICAgICBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiBwYXJlbnRTY29wZVREWlZh
cmlhYmxlcygpIGNvbnN0IHsgcmV0dXJuICZtX3BhcmVudFNjb3BlVERaVmFyaWFibGVzOyB9CiAg
ICAgCiAgICAgYm9vbCBpc0Fycm93RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3BhcnNlTW9k
ZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlOyB9Ci0gICAgYm9vbCBpc0Rl
cml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoKSBjb25zdCB7cmV0dXJuIG1faXNEZXJpdmVkQ29uc3Ry
dWN0b3JDb250ZXh0OyB9CiAKLXByaXZhdGU6Ci0gICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUoVk0qLCBTdHJ1Y3R1cmUqLCBjb25zdCBTb3VyY2VDb2RlJiwgUmVmUHRyPFNvdXJjZVByb3Zp
ZGVyPiYmIHNvdXJjZU92ZXJyaWRlLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSosIFVubGlua2VkRnVu
Y3Rpb25LaW5kLCBDb25zdHJ1Y3RBYmlsaXR5LCBHZW5lcmF0b3JUaGlzTW9kZSwgVmFyaWFibGVF
bnZpcm9ubWVudCYsIGJvb2wgaXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KTsKKyAgICBKU0M6
OkRlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUoKSBjb25zdCB7cmV0dXJuIHN0
YXRpY19jYXN0PEpTQzo6RGVyaXZlZENvbnRleHRUeXBlPihtX2Rlcml2ZWRDb250ZXh0VHlwZSk7
IH0KICAgICAKK3ByaXZhdGU6CisgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0qLCBT
dHJ1Y3R1cmUqLCBjb25zdCBTb3VyY2VDb2RlJiwgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiYmIHNv
dXJjZU92ZXJyaWRlLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSosIFVubGlua2VkRnVuY3Rpb25LaW5k
LCBDb25zdHJ1Y3RBYmlsaXR5LCBHZW5lcmF0b3JUaGlzTW9kZSwgVmFyaWFibGVFbnZpcm9ubWVu
dCYsICBKU0M6OkRlcml2ZWRDb250ZXh0VHlwZSk7CisKICAgICBXcml0ZUJhcnJpZXI8VW5saW5r
ZWRGdW5jdGlvbkNvZGVCbG9jaz4gbV91bmxpbmtlZENvZGVCbG9ja0ZvckNhbGw7CiAgICAgV3Jp
dGVCYXJyaWVyPFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s+IG1fdW5saW5rZWRDb2RlQmxvY2tG
b3JDb25zdHJ1Y3Q7CiAKQEAgLTE2Niw3ICsxNjgsNyBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVk
IG1fZnVuY3Rpb25Nb2RlIDogMTsgLy8gRnVuY3Rpb25Nb2RlCiAgICAgdW5zaWduZWQgbV9nZW5l
cmF0b3JUaGlzTW9kZSA6IDE7CiAgICAgdW5zaWduZWQgbV9zdXBlckJpbmRpbmcgOiAxOwotICAg
IHVuc2lnbmVkIG1faXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0IDogMTsKKyAgICB1bnNpZ25l
ZCBtX2Rlcml2ZWRDb250ZXh0VHlwZTogMjsKIAogcHJvdGVjdGVkOgogICAgIHZvaWQgZmluaXNo
Q3JlYXRpb24oVk0mIHZtKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCBiZjYwMWI1MWY3YWJmMjYzMzg1
ODA3OWFmYmMwNjQyMDg2ZGU5ZTY5Li40NzE2MDFiODNmZTQxMjVhZDRkYzg4OGIyOTFlNTM2ZTY0
NDU2ODRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtMTU3LDcgKzE1Nyw2IEBAIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIFByb2dyYW1Ob2RlKiBwcm9ncmFtTm9k
ZSwgVW5saW5rZWRQCiAgICAgLCBtX3RoaXNSZWdpc3RlcihDYWxsRnJhbWU6OnRoaXNBcmd1bWVu
dE9mZnNldCgpKQogICAgICwgbV9jb2RlVHlwZShHbG9iYWxDb2RlKQogICAgICwgbV92bSgmdm0p
Ci0gICAgLCBtX2lzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dChmYWxzZSkKICAgICAsIG1fbmVl
ZHNUb1VwZGF0ZUFycm93RnVuY3Rpb25Db250ZXh0KHByb2dyYW1Ob2RlLT51c2VzQXJyb3dGdW5j
dGlvbigpIHx8IHByb2dyYW1Ob2RlLT51c2VzRXZhbCgpKQogewogICAgIEFTU0VSVF9VTlVTRUQo
cGFyZW50U2NvcGVURFpWYXJpYWJsZXMsICFwYXJlbnRTY29wZVREWlZhcmlhYmxlcy0+c2l6ZSgp
KTsKQEAgLTIxMSw4ICsyMTAsOCBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0
b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgIC8vIGNv
bXBhdGlibGUgd2l0aCB0YWlsIGNhbGxzICh3ZSBoYXZlIG5vIHdheSBvZiBlbWl0dGluZyBvcF9k
aWRfY2FsbCkuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE0ODgxOQogICAgICwgbV9pblRhaWxQb3NpdGlvbihPcHRpb25zOjp1c2VUYWlsQ2FsbHMoKSAm
JiAhaXNDb25zdHJ1Y3RvcigpICYmIGNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2lu
ZDo6Tm9uZSAmJiBpc1N0cmljdE1vZGUoKSAmJiAhbV9zaG91bGRFbWl0UHJvZmlsZUhvb2tzKQot
ICAgICwgbV9pc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoY29kZUJsb2NrLT5pc0Rlcml2ZWRD
b25zdHJ1Y3RvckNvbnRleHQoKSkKICAgICAsIG1fbmVlZHNUb1VwZGF0ZUFycm93RnVuY3Rpb25D
b250ZXh0KGZ1bmN0aW9uTm9kZS0+dXNlc0Fycm93RnVuY3Rpb24oKSB8fCBmdW5jdGlvbk5vZGUt
PnVzZXNFdmFsKCkpCisgICAgLCBtX2Rlcml2ZWRDb250ZXh0VHlwZShjb2RlQmxvY2stPmRlcml2
ZWRDb250ZXh0VHlwZSgpKQogewogICAgIGZvciAoYXV0byYgY29uc3RhbnRSZWdpc3RlciA6IG1f
bGlua1RpbWVDb25zdGFudFJlZ2lzdGVycykKICAgICAgICAgY29uc3RhbnRSZWdpc3RlciA9IG51
bGxwdHI7CkBAIC01NzMsOSArNTcyLDkgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2Vu
ZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVubGlua2UKICAgICAv
LyBMb2FkaW5nIHx0aGlzfCBpbnNpZGUgYW4gYXJyb3cgZnVuY3Rpb24gbXVzdCBiZSBkb25lIGFm
dGVyIGluaXRpYWxpemVEZWZhdWx0UGFyYW1ldGVyVmFsdWVzQW5kU2V0dXBGdW5jdGlvblNjb3Bl
U3RhY2soKQogICAgIC8vIGJlY2F1c2UgdGhhdCBmdW5jdGlvbiBzZXRzIHVwIHRoZSBTeW1ib2xU
YWJsZSBzdGFjayBhbmQgZW1pdExvYWRUaGlzRnJvbUFycm93RnVuY3Rpb25MZXhpY2FsRW52aXJv
bm1lbnQoKQogICAgIC8vIGNvbnN1bHRzIHRoZSBTeW1ib2xUYWJsZSBzdGFjawotICAgIGlmIChw
YXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSAmJiBmdW5jdGlv
bk5vZGUtPnVzZXNUaGlzKCkpCisgICAgaWYgKFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlv
bk1vZGUgPT0gcGFyc2VNb2RlICYmIChmdW5jdGlvbk5vZGUtPnVzZXNUaGlzKCkgfHwgaXNEZXJp
dmVkQ2xhc3NDb250ZXh0KCkgfHwgaXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KCkpKQogICAg
ICAgICBlbWl0TG9hZFRoaXNGcm9tQXJyb3dGdW5jdGlvbkxleGljYWxFbnZpcm9ubWVudCgpOwot
CisgICAgCiAgICAgaWYgKG5lZWRzVG9VcGRhdGVBcnJvd0Z1bmN0aW9uQ29udGV4dCgpICYmICFj
b2RlQmxvY2stPmlzQXJyb3dGdW5jdGlvbigpKSB7CiAgICAgICAgIGluaXRpYWxpemVBcnJvd0Z1
bmN0aW9uQ29udGV4dFNjb3BlSWZOZWVkZWQoZnVuY3Rpb25TeW1ib2xUYWJsZSk7CiAgICAgICAg
IGVtaXRQdXRUaGlzVG9BcnJvd0Z1bmN0aW9uQ29udGV4dFNjb3BlKCk7CkBAIC01OTUsOCArNTk0
LDggQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRXZhbE5v
ZGUqIGV2YWxOb2RlLCBVbmxpbmtlZEV2YWxDb2QKICAgICAsIG1fY29kZVR5cGUoRXZhbENvZGUp
CiAgICAgLCBtX3ZtKCZ2bSkKICAgICAsIG1fdXNlc05vblN0cmljdEV2YWwoY29kZUJsb2NrLT51
c2VzRXZhbCgpICYmICFjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKQotICAgICwgbV9pc0Rlcml2
ZWRDb25zdHJ1Y3RvckNvbnRleHQoY29kZUJsb2NrLT5pc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRl
eHQoKSkKICAgICAsIG1fbmVlZHNUb1VwZGF0ZUFycm93RnVuY3Rpb25Db250ZXh0KGV2YWxOb2Rl
LT51c2VzQXJyb3dGdW5jdGlvbigpIHx8IGV2YWxOb2RlLT51c2VzRXZhbCgpKQorICAgICwgbV9k
ZXJpdmVkQ29udGV4dFR5cGUoY29kZUJsb2NrLT5kZXJpdmVkQ29udGV4dFR5cGUoKSkKIHsKICAg
ICBmb3IgKGF1dG8mIGNvbnN0YW50UmVnaXN0ZXIgOiBtX2xpbmtUaW1lQ29uc3RhbnRSZWdpc3Rl
cnMpCiAgICAgICAgIGNvbnN0YW50UmVnaXN0ZXIgPSBudWxscHRyOwpAQCAtNjQ2LDcgKzY0NSw2
IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIE1vZHVsZVBy
b2dyYW1Ob2RlKiBtb2R1bGVQcm9ncmFtTm9kCiAgICAgLCBtX2NvZGVUeXBlKE1vZHVsZUNvZGUp
CiAgICAgLCBtX3ZtKCZ2bSkKICAgICAsIG1fdXNlc05vblN0cmljdEV2YWwoZmFsc2UpCi0gICAg
LCBtX2lzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dChmYWxzZSkKICAgICAsIG1fbmVlZHNUb1Vw
ZGF0ZUFycm93RnVuY3Rpb25Db250ZXh0KG1vZHVsZVByb2dyYW1Ob2RlLT51c2VzQXJyb3dGdW5j
dGlvbigpIHx8IG1vZHVsZVByb2dyYW1Ob2RlLT51c2VzRXZhbCgpKQogewogICAgIEFTU0VSVF9V
TlVTRUQocGFyZW50U2NvcGVURFpWYXJpYWJsZXMsICFwYXJlbnRTY29wZVREWlZhcmlhYmxlcy0+
c2l6ZSgpKTsKQEAgLTQwNDksMTQgKzQwNDcsMTQgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdFB1dE5ld1RhcmdldFRvQXJyb3dGdW5jdGlvbkNvbnRleHRTY29wZSgpCiAgICAgCiB2b2lk
IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0RGVyaXZlZENvbnN0cnVjdG9yVG9BcnJvd0Z1bmN0
aW9uQ29udGV4dFNjb3BlKCkKIHsKLSAgICBpZiAoaXNDb25zdHJ1Y3RvcigpICYmIGNvbnN0cnVj
dG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCkgeworICAgIGlmICgoaXNDb25z
dHJ1Y3RvcigpICYmIGNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6RGVyaXZl
ZCkgfHwgKG1fY29kZUJsb2NrLT5pc0NsYXNzQ29udGV4dCgpKSkgewogICAgICAgICBBU1NFUlQo
bV9hcnJvd0Z1bmN0aW9uQ29udGV4dExleGljYWxFbnZpcm9ubWVudFJlZ2lzdGVyKTsKICAgICAg
ICAgICAgIAogICAgICAgICBWYXJpYWJsZSBwcm90b1Njb3BlID0gdmFyaWFibGUocHJvcGVydHlO
YW1lcygpLmRlcml2ZWRDb25zdHJ1Y3RvclByaXZhdGVOYW1lKTsKICAgICAgICAgZW1pdFB1dFRv
U2NvcGUobV9hcnJvd0Z1bmN0aW9uQ29udGV4dExleGljYWxFbnZpcm9ubWVudFJlZ2lzdGVyLCBw
cm90b1Njb3BlLCAmbV9jYWxsZWVSZWdpc3RlciwgRG9Ob3RUaHJvd0lmTm90Rm91bmQsIEluaXRp
YWxpemF0aW9uKTsKICAgICB9CiB9Ci0gICAgCisKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRQdXRUaGlzVG9BcnJvd0Z1bmN0aW9uQ29udGV4dFNjb3BlKCkKIHsKICAgICBBU1NFUlQoaXNE
ZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KCkgfHwgbV9hcnJvd0Z1bmN0aW9uQ29udGV4dExleGlj
YWxFbnZpcm9ubWVudFJlZ2lzdGVyICE9IG51bGxwdHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IDEwMGJj
YjNkZWM0NGVkMmRjNjAwYmVlNTQ5ZjBlZjU3N2M0Mjc2OWYuLmRmNmQ1ZWM3M2I3M2NmMzVhN2Q1
NTI4Y2FkMjA3ZmIxN2JlYTU5M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTI4Miw3ICsyODIsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgY29uc3QgQ29tbW9uSWRlbnRpZmllcnMmIHByb3BlcnR5
TmFtZXMoKSBjb25zdCB7IHJldHVybiAqbV92bS0+cHJvcGVydHlOYW1lczsgfQogCiAgICAgICAg
IGJvb2wgaXNDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5pc0NvbnN0
cnVjdG9yKCk7IH0KLSAgICAgICAgYm9vbCBpc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoKSBj
b25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+aXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KCk7
IH0KKyAgICAgICAgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSgpIGNvbnN0
IHsgcmV0dXJuIG1fZGVyaXZlZENvbnRleHRUeXBlOyB9CiAgICAgICAgIGJvb2wgdXNlc0Fycm93
RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3Njb3BlTm9kZS0+dXNlc0Fycm93RnVuY3Rpb24o
KTsgfQogICAgICAgICBib29sIG5lZWRzVG9VcGRhdGVBcnJvd0Z1bmN0aW9uQ29udGV4dCgpIGNv
bnN0IHsgcmV0dXJuIG1fbmVlZHNUb1VwZGF0ZUFycm93RnVuY3Rpb25Db250ZXh0OyB9CiAgICAg
ICAgIGJvb2wgdXNlc0V2YWwoKSBjb25zdCB7IHJldHVybiBtX3Njb3BlTm9kZS0+dXNlc0V2YWwo
KTsgfQpAQCAtNjk5LDYgKzY5OSwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBp
c0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNCdWlsdGluRnVuY3Rpb247IH0K
IAogICAgICAgICBPcGNvZGVJRCBsYXN0T3Bjb2RlSUQoKSBjb25zdCB7IHJldHVybiBtX2xhc3RP
cGNvZGVJRDsgfQorICAgICAgICAKKyAgICAgICAgYm9vbCBpc0Rlcml2ZWRDb25zdHJ1Y3RvckNv
bnRleHQoKSB7IHJldHVybiBtX2Rlcml2ZWRDb250ZXh0VHlwZSA9PSBEZXJpdmVkQ29udGV4dFR5
cGU6OkRlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQ7IH0KKyAgICAgICAgYm9vbCBpc0Rlcml2ZWRD
bGFzc0NvbnRleHQoKSB7IHJldHVybiBtX2Rlcml2ZWRDb250ZXh0VHlwZSA9PSBEZXJpdmVkQ29u
dGV4dFR5cGU6OkRlcml2ZWRNZXRob2RDb250ZXh0OyB9CisgICAgICAgIGJvb2wgaXNBcnJvd0Z1
bmN0aW9uKCkgeyByZXR1cm4gbV9jb2RlQmxvY2stPmlzQXJyb3dGdW5jdGlvbigpOyB9CiAKICAg
ICAgICAgZW51bSBjbGFzcyBURFpDaGVja09wdGltaXphdGlvbiB7IE9wdGltaXplLCBEb05vdE9w
dGltaXplIH07CiAgICAgICAgIGVudW0gY2xhc3MgTmVzdGVkU2NvcGVUeXBlIHsgSXNOZXN0ZWQs
IElzTm90TmVzdGVkIH07CkBAIC03OTYsNyArODAwLDE4IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICAKICAgICAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIG1ha2VGdW5jdGlvbihG
dW5jdGlvbk1ldGFkYXRhTm9kZSogbWV0YWRhdGEpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGJv
b2wgbmV3aXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0ID0gY29uc3RydWN0b3JLaW5kKCkgPT0g
Q29uc3RydWN0b3JLaW5kOjpEZXJpdmVkIHx8IChtX2lzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4
dCAmJiBtZXRhZGF0YS0+cGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0
aW9uTW9kZSk7CisgICAgICAgICAgICBEZXJpdmVkQ29udGV4dFR5cGUgbmV3RGVyaXZlZENvbnRl
eHRUeXBlID0gRGVyaXZlZENvbnRleHRUeXBlOjpOb25lOworCisgICAgICAgICAgICBpZiAobmVl
ZHNUb1VwZGF0ZUFycm93RnVuY3Rpb25Db250ZXh0KCkpIHsKKyAgICAgICAgICAgICAgICBib29s
IG5ld2lzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCA9IGNvbnN0cnVjdG9yS2luZCgpID09IENv
bnN0cnVjdG9yS2luZDo6RGVyaXZlZCB8fCAoZGVyaXZlZENvbnRleHRUeXBlKCkgPT0gRGVyaXZl
ZENvbnRleHRUeXBlOjpEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0ICYmIG1ldGFkYXRhLT5wYXJz
ZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlKTsKKyAgICAgICAg
ICAgIAorICAgICAgICAgICAgICAgIGlmIChuZXdpc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQp
CisgICAgICAgICAgICAgICAgICAgIG5ld0Rlcml2ZWRDb250ZXh0VHlwZSA9IERlcml2ZWRDb250
ZXh0VHlwZTo6RGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dDsKKyAgICAgICAgICAgICAgICBlbHNl
ICB7CisgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uSW5DbGFzc0NvbnRl
eHQgPSBtX2NvZGVCbG9jay0+aXNDbGFzc0NvbnRleHQoKSB8fCAobV9jb2RlQmxvY2stPmlzQXJy
b3dGdW5jdGlvbigpICYmIG1fZGVyaXZlZENvbnRleHRUeXBlID09IERlcml2ZWRDb250ZXh0VHlw
ZTo6RGVyaXZlZE1ldGhvZENvbnRleHQpOworICAgICAgICAgICAgICAgICAgICBuZXdEZXJpdmVk
Q29udGV4dFR5cGUgPSBpc0Fycm93RnVuY3Rpb25JbkNsYXNzQ29udGV4dCA/IERlcml2ZWRDb250
ZXh0VHlwZTo6RGVyaXZlZE1ldGhvZENvbnRleHQgOiBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmU7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBWYXJpYWJs
ZUVudmlyb25tZW50IHZhcmlhYmxlc1VuZGVyVERaOwogICAgICAgICAgICAgZ2V0VmFyaWFibGVz
VW5kZXJURFoodmFyaWFibGVzVW5kZXJURFopOwpAQCAtODE2LDcgKzgzMSw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICAgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6Okdl
bmVyYXRvckJvZHlNb2RlICYmIGlzQ29uc3RydWN0b3IoKSkKICAgICAgICAgICAgICAgICBnZW5l
cmF0b3JUaGlzTW9kZSA9IEdlbmVyYXRvclRoaXNNb2RlOjpFbXB0eTsKIAotICAgICAgICAgICAg
cmV0dXJuIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUobV92bSwgbV9zY29wZU5v
ZGUtPnNvdXJjZSgpLCBtZXRhZGF0YSwgaXNCdWlsdGluRnVuY3Rpb24oKSA/IFVubGlua2VkQnVp
bHRpbkZ1bmN0aW9uIDogVW5saW5rZWROb3JtYWxGdW5jdGlvbiwgY29uc3RydWN0QWJpbGl0eSwg
Z2VuZXJhdG9yVGhpc01vZGUsIHZhcmlhYmxlc1VuZGVyVERaLCBuZXdpc0Rlcml2ZWRDb25zdHJ1
Y3RvckNvbnRleHQpOworICAgICAgICAgICAgcmV0dXJuIFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlOjpjcmVhdGUobV92bSwgbV9zY29wZU5vZGUtPnNvdXJjZSgpLCBtZXRhZGF0YSwgaXNCdWls
dGluRnVuY3Rpb24oKSA/IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uIDogVW5saW5rZWROb3JtYWxG
dW5jdGlvbiwgY29uc3RydWN0QWJpbGl0eSwgZ2VuZXJhdG9yVGhpc01vZGUsIHZhcmlhYmxlc1Vu
ZGVyVERaLCBuZXdEZXJpdmVkQ29udGV4dFR5cGUpOwogICAgICAgICB9CiAKICAgICAgICAgdm9p
ZCBnZXRWYXJpYWJsZXNVbmRlclREWihWYXJpYWJsZUVudmlyb25tZW50Jik7CkBAIC05MjYsOSAr
OTQxLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgbV9pc0J1aWx0aW5GdW5jdGlv
biB7IGZhbHNlIH07CiAgICAgICAgIGJvb2wgbV91c2VzTm9uU3RyaWN0RXZhbCB7IGZhbHNlIH07
CiAgICAgICAgIGJvb2wgbV9pblRhaWxQb3NpdGlvbiB7IGZhbHNlIH07Ci0gICAgICAgIGJvb2wg
bV9pc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQgeyBmYWxzZSB9OwogICAgICAgICBib29sIG1f
bmVlZHNUb1VwZGF0ZUFycm93RnVuY3Rpb25Db250ZXh0OwogICAgICAgICBib29sIG1faXNOZXdU
YXJnZXRMb2FkZWRJbkFycm93RnVuY3Rpb24geyBmYWxzZSB9OworICAgICAgICBEZXJpdmVkQ29u
dGV4dFR5cGUgbV9kZXJpdmVkQ29udGV4dFR5cGUgeyBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUg
fTsKICAgICB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggNGFkMDc5NTRiMmY1YzhhNTk1Yzg4MzU4Y2E1MDEw
MTAzMjlkNDMzOC4uZmNlM2Y0ZTJjMjJiZmM2MDdhMWVjN2ViNWY2ODgwYTg0N2VlNGQzZiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4u
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2Vu
LmNwcApAQCAtMTczLDEyICsxNzMsMTYgQEAgUmVnaXN0ZXJJRCogU3VwZXJOb2RlOjplbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHMKIAogICAg
IFJlZ2lzdGVySUQgY2FsbGVlOwogICAgIGNhbGxlZS5zZXRJbmRleChKU1N0YWNrOjpDYWxsZWUp
OwotCiAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IuZmluYWxEZXN0
aW5hdGlvbihkc3QpLCAmY2FsbGVlLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLnVuZGVyc2Nv
cmVQcm90byk7CiB9CiAKIHN0YXRpYyBSZWdpc3RlcklEKiBlbWl0SG9tZU9iamVjdEZvckNhbGxl
ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yKQogeworICAgIGlmIChnZW5lcmF0b3IuaXNE
ZXJpdmVkQ2xhc3NDb250ZXh0KCkgfHwgZ2VuZXJhdG9yLmlzRGVyaXZlZENvbnN0cnVjdG9yQ29u
dGV4dCgpKSB7CisgICAgICAgIFJlZ2lzdGVySUQqIHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRMb2Fk
RGVyaXZlZENvbnN0cnVjdG9yRnJvbUFycm93RnVuY3Rpb25MZXhpY2FsRW52aXJvbm1lbnQoKTsg
ICAgCisgICAgICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLm5ld1Rl
bXBvcmFyeSgpLCBzY29wZSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5ob21lT2JqZWN0UHJp
dmF0ZU5hbWUpOworICAgIH0KKwogICAgIFJlZ2lzdGVySUQgY2FsbGVlOwogICAgIGNhbGxlZS5z
ZXRJbmRleChKU1N0YWNrOjpDYWxsZWUpOwogICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdEdldEJ5
SWQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCAmY2FsbGVlLCBnZW5lcmF0b3IucHJvcGVydHlO
YW1lcygpLmhvbWVPYmplY3RQcml2YXRlTmFtZSk7CkBAIC03NDksMTMgKzc1MywxNCBAQCBSZWdp
c3RlcklEKiBGdW5jdGlvbkNhbGxWYWx1ZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYgZ2VuZXJhdG9yLCBSZQogICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXR1cm5WYWx1ZSA9
IGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgZnVuYy5nZXQoKSk7CiAgICAgQ2FsbEFy
Z3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKICAgICBpZiAobV9leHBy
LT5pc1N1cGVyTm9kZSgpKSB7Ci0gICAgICAgIEFTU0VSVChnZW5lcmF0b3IuaXNDb25zdHJ1Y3Rv
cigpIHx8IGdlbmVyYXRvci5pc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoKSk7Ci0gICAgICAg
IEFTU0VSVChnZW5lcmF0b3IuY29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpE
ZXJpdmVkIHx8IGdlbmVyYXRvci5pc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoKSk7CisgICAg
ICAgIEFTU0VSVChnZW5lcmF0b3IuaXNDb25zdHJ1Y3RvcigpIHx8IGdlbmVyYXRvci5kZXJpdmVk
Q29udGV4dFR5cGUoKSA9PSBEZXJpdmVkQ29udGV4dFR5cGU6OkRlcml2ZWRDb25zdHJ1Y3RvckNv
bnRleHQpOworICAgICAgICBBU1NFUlQoZ2VuZXJhdG9yLmNvbnN0cnVjdG9yS2luZCgpID09IENv
bnN0cnVjdG9yS2luZDo6RGVyaXZlZCB8fCBnZW5lcmF0b3IuZGVyaXZlZENvbnRleHRUeXBlKCkg
PT0gRGVyaXZlZENvbnRleHRUeXBlOjpEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KTsKICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGdlbmVy
YXRvci5uZXdUYXJnZXQoKSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIHJldCA9IGdlbmVyYXRvci5l
bWl0Q29uc3RydWN0KHJldHVyblZhbHVlLmdldCgpLCBmdW5jLmdldCgpLCBOb0V4cGVjdGVkRnVu
Y3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7
CiAgICAgICAgIGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0b3IudGhpc1JlZ2lzdGVyKCksIHJl
dCk7CiAgICAgICAgIAogICAgICAgICBib29sIGlzQ29uc3RydWN0b3JLaW5kRGVyaXZlZCA9IGdl
bmVyYXRvci5jb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQ7CisK
ICAgICAgICAgaWYgKGdlbmVyYXRvci5pc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoKSB8fCAo
aXNDb25zdHJ1Y3RvcktpbmREZXJpdmVkICYmIGdlbmVyYXRvci5uZWVkc1RvVXBkYXRlQXJyb3dG
dW5jdGlvbkNvbnRleHQoKSkpCiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dFRoaXNUb0Fy
cm93RnVuY3Rpb25Db250ZXh0U2NvcGUoKTsKICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcAppbmRleCBlODEyZWUw
NTY4NzNlZmY4OWU4MDE5OTAzYjk3MTRmODA2ZWJkMTQ2Li5mNDc5NGZkNDU2M2UwYjlmMmFjODU1
OGIzOGIzZjllZDMzNGE1Mzk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVi
dWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAKQEAgLTE5Miw3ICsxOTIsNyBAQCBKU1ZhbHVl
IERlYnVnZ2VyQ2FsbEZyYW1lOjpldmFsdWF0ZShjb25zdCBTdHJpbmcmIHNjcmlwdCwgTmFrZWRQ
dHI8RXhjZXB0aW9uPiYgZQogICAgIFZhcmlhYmxlRW52aXJvbm1lbnQgdmFyaWFibGVzVW5kZXJU
RFo7CiAgICAgSlNTY29wZTo6Y29sbGVjdFZhcmlhYmxlc1VuZGVyVERaKHNjb3BlKCktPmpzU2Nv
cGUoKSwgdmFyaWFibGVzVW5kZXJURFopOwogCi0gICAgRXZhbEV4ZWN1dGFibGUqIGV2YWwgPSBF
dmFsRXhlY3V0YWJsZTo6Y3JlYXRlKGNhbGxGcmFtZSwgbWFrZVNvdXJjZShzY3JpcHQpLCBjb2Rl
QmxvY2suaXNTdHJpY3RNb2RlKCksIHRoaXNURFpNb2RlLCBjb2RlQmxvY2sudW5saW5rZWRDb2Rl
QmxvY2soKS0+aXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KCksIGNvZGVCbG9jay51bmxpbmtl
ZENvZGVCbG9jaygpLT5pc0Fycm93RnVuY3Rpb24oKSwgJnZhcmlhYmxlc1VuZGVyVERaKTsKKyAg
ICBFdmFsRXhlY3V0YWJsZSogZXZhbCA9IEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoY2FsbEZyYW1l
LCBtYWtlU291cmNlKHNjcmlwdCksIGNvZGVCbG9jay5pc1N0cmljdE1vZGUoKSwgdGhpc1REWk1v
ZGUsIGNvZGVCbG9jay51bmxpbmtlZENvZGVCbG9jaygpLT5kZXJpdmVkQ29udGV4dFR5cGUoKSwg
Y29kZUJsb2NrLnVubGlua2VkQ29kZUJsb2NrKCktPmlzQXJyb3dGdW5jdGlvbigpLCAmdmFyaWFi
bGVzVW5kZXJURFopOwogICAgIGlmICh2bS5leGNlcHRpb24oKSkgewogICAgICAgICBleGNlcHRp
b24gPSB2bS5leGNlcHRpb24oKTsKICAgICAgICAgdm0uY2xlYXJFeGNlcHRpb24oKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCmluZGV4
IGZlMDJjNDFiNGMwODNjZmMzZGE4NmZjMTVmZTM2YmQyYjMwZjIzYjYuLjRjODZjNjFiYjk3MjEy
ODQ5OTY4MzY0NzFkMDRmNTM2NDVmYmJlMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcApAQCAtMTg1LDcgKzE4NSw3IEBAIEpTVmFs
dWUgZXZhbChDYWxsRnJhbWUqIGNhbGxGcmFtZSkKICAgICAgICAgLy8gSWYgdGhlIGxpdGVyYWwg
cGFyc2VyIGJhaWxlZCwgaXQgc2hvdWxkIG5vdCBoYXZlIHRocm93biBleGNlcHRpb25zLgogICAg
ICAgICBBU1NFUlQoIWNhbGxGcmFtZS0+dm0oKS5leGNlcHRpb24oKSk7CiAKLSAgICAgICAgZXZh
bCA9IGNhbGxlckNvZGVCbG9jay0+ZXZhbENvZGVDYWNoZSgpLmdldFNsb3coY2FsbEZyYW1lLCBj
YWxsZXJDb2RlQmxvY2ssIGNhbGxlckNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCksIHRoaXNURFpN
b2RlLCBjYWxsZXJDb2RlQmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCktPmlzRGVyaXZlZENvbnN0
cnVjdG9yQ29udGV4dCgpLCBjYWxsZXJDb2RlQmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCktPmlz
QXJyb3dGdW5jdGlvbigpLCBzb3VyY2VDb2RlLCBjYWxsZXJTY29wZUNoYWluKTsKKyAgICAgICAg
ZXZhbCA9IGNhbGxlckNvZGVCbG9jay0+ZXZhbENvZGVDYWNoZSgpLmdldFNsb3coY2FsbEZyYW1l
LCBjYWxsZXJDb2RlQmxvY2ssIGNhbGxlckNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCksIHRoaXNU
RFpNb2RlLCBjYWxsZXJDb2RlQmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCktPmRlcml2ZWRDb250
ZXh0VHlwZSgpLCBjYWxsZXJDb2RlQmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCktPmlzQXJyb3dG
dW5jdGlvbigpLCBzb3VyY2VDb2RlLCBjYWxsZXJTY29wZUNoYWluKTsKIAogICAgICAgICBpZiAo
IWV2YWwpCiAgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCmluZGV4IGIxMGIxMTRlZmY1NjQ2YzM3YmU1
Mjk1NTM2Yzg5N2FhMTM0ZjBjNmQuLjc0MjQzNmQ2YWZmZjkxYWNlMGZkNzA2ODNjMmZjYzFjNjhj
M2I1ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNo
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcApA
QCAtMTg4LDcgKzE4OCw5IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBDb2RlQ2FjaGU6
OmdldEZ1bmN0aW9uRXhlY3V0YWJsZUZyb21HbG9iYWxDb2RlKFZNJiB2CiAgICAgbWV0YWRhdGEt
PnNldEVuZFBvc2l0aW9uKHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUpOwogICAgIC8vIFRoZSBG
dW5jdGlvbiBjb25zdHJ1Y3RvciBvbmx5IGhhcyBhY2Nlc3MgdG8gZ2xvYmFsIHZhcmlhYmxlcywg
c28gbm8gdmFyaWFibGVzIHdpbGwgYmUgdW5kZXIgVERaLgogICAgIFZhcmlhYmxlRW52aXJvbm1l
bnQgZW1wdHlURFpWYXJpYWJsZXM7Ci0gICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1
bmN0aW9uRXhlY3V0YWJsZSA9IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUoJnZt
LCBzb3VyY2UsIG1ldGFkYXRhLCBVbmxpbmtlZE5vcm1hbEZ1bmN0aW9uLCBDb25zdHJ1Y3RBYmls
aXR5OjpDYW5Db25zdHJ1Y3QsIEdlbmVyYXRvclRoaXNNb2RlOjpOb25FbXB0eSwgZW1wdHlURFpW
YXJpYWJsZXMsIGZhbHNlKTsKKworICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5j
dGlvbkV4ZWN1dGFibGUgPSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKCZ2bSwg
c291cmNlLCBtZXRhZGF0YSwgVW5saW5rZWROb3JtYWxGdW5jdGlvbiwgQ29uc3RydWN0QWJpbGl0
eTo6Q2FuQ29uc3RydWN0LCBHZW5lcmF0b3JUaGlzTW9kZTo6Tm9uRW1wdHksIGVtcHR5VERaVmFy
aWFibGVzLCBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUpOworCiAgICAgZnVuY3Rpb25FeGVjdXRh
YmxlLT5tX25hbWVWYWx1ZS5zZXQodm0sIGZ1bmN0aW9uRXhlY3V0YWJsZSwganNTdHJpbmcoJnZt
LCBuYW1lLnN0cmluZygpKSk7CiAKICAgICBtX3NvdXJjZUNvZGUuYWRkQ2FjaGUoa2V5LCBTb3Vy
Y2VDb2RlVmFsdWUodm0sIGZ1bmN0aW9uRXhlY3V0YWJsZSwgbV9zb3VyY2VDb2RlLmFnZSgpKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCmluZGV4IGY1
ZGY3N2Q5ODdjMDNjYmU2MDQzYTQ3ZGNlYjNhOTEzMTFiZGYyMzAuLjllNDc1MTkyYjA5MmE1ZjU5
ZTNhNjMwMzBkMTlhNzgwMmUwY2JhMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0V4ZWN1dGFibGUuY3BwCkBAIC0xMzEsMTQgKzEzMSwxNCBAQCBJbnRyaW5zaWMgTmF0aXZl
RXhlY3V0YWJsZTo6aW50cmluc2ljKCkgY29uc3QKIAogY29uc3QgQ2xhc3NJbmZvIFNjcmlwdEV4
ZWN1dGFibGU6OnNfaW5mbyA9IHsgIlNjcmlwdEV4ZWN1dGFibGUiLCAmRXhlY3V0YWJsZUJhc2U6
OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShTY3JpcHRFeGVjdXRhYmxlKSB9OwogCi1T
Y3JpcHRFeGVjdXRhYmxlOjpTY3JpcHRFeGVjdXRhYmxlKFN0cnVjdHVyZSogc3RydWN0dXJlLCBW
TSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgYm9vbCBpc0luU3RyaWN0Q29udGV4dCwg
Ym9vbCBpc0luRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCwgYm9vbCBpc0luQXJyb3dGdW5jdGlv
bkNvbnRleHQpCitTY3JpcHRFeGVjdXRhYmxlOjpTY3JpcHRFeGVjdXRhYmxlKFN0cnVjdHVyZSog
c3RydWN0dXJlLCBWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgYm9vbCBpc0luU3Ry
aWN0Q29udGV4dCwgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgYm9vbCBp
c0luQXJyb3dGdW5jdGlvbkNvbnRleHQpCiAgICAgOiBFeGVjdXRhYmxlQmFzZSh2bSwgc3RydWN0
dXJlLCBOVU1fUEFSQU1FVEVSU19OT1RfQ09NUElMRUQpCiAgICAgLCBtX3NvdXJjZShzb3VyY2Up
CiAgICAgLCBtX2ZlYXR1cmVzKGlzSW5TdHJpY3RDb250ZXh0ID8gU3RyaWN0TW9kZUZlYXR1cmUg
OiAwKQogICAgICwgbV9oYXNDYXB0dXJlZFZhcmlhYmxlcyhmYWxzZSkKICAgICAsIG1fbmV2ZXJJ
bmxpbmUoZmFsc2UpCiAgICAgLCBtX2RpZFRyeVRvRW50ZXJJbkxvb3AoZmFsc2UpCi0gICAgLCBt
X2lzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dChpc0luRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4
dCkKKyAgICAsIG1fZGVyaXZlZENvbnRleHRUeXBlKGRlcml2ZWRDb250ZXh0VHlwZSkKICAgICAs
IG1faXNBcnJvd0Z1bmN0aW9uQ29udGV4dChpc0luQXJyb3dGdW5jdGlvbkNvbnRleHQpCiAgICAg
LCBtX292ZXJyaWRlTGluZU51bWJlcigtMSkKICAgICAsIG1fZmlyc3RMaW5lKC0xKQpAQCAtNDE0
LDcgKzQxNCw3IEBAIEpTT2JqZWN0KiBTY3JpcHRFeGVjdXRhYmxlOjpwcmVwYXJlRm9yRXhlY3V0
aW9uSW1wbCgKIAogY29uc3QgQ2xhc3NJbmZvIEV2YWxFeGVjdXRhYmxlOjpzX2luZm8gPSB7ICJF
dmFsRXhlY3V0YWJsZSIsICZTY3JpcHRFeGVjdXRhYmxlOjpzX2luZm8sIDAsIENSRUFURV9NRVRI
T0RfVEFCTEUoRXZhbEV4ZWN1dGFibGUpIH07CiAKLUV2YWxFeGVjdXRhYmxlKiBFdmFsRXhlY3V0
YWJsZTo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBi
b29sIGlzSW5TdHJpY3RDb250ZXh0LCBUaGlzVERaTW9kZSB0aGlzVERaTW9kZSwgYm9vbCBpc0Rl
cml2ZWRDb25zdHJ1Y3RvckNvbnRleHQsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgY29u
c3QgVmFyaWFibGVFbnZpcm9ubWVudCogdmFyaWFibGVzVW5kZXJURFopCitFdmFsRXhlY3V0YWJs
ZSogRXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNv
ZGUmIHNvdXJjZSwgYm9vbCBpc0luU3RyaWN0Q29udGV4dCwgVGhpc1REWk1vZGUgdGhpc1REWk1v
ZGUsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNBcnJvd0Z1
bmN0aW9uQ29udGV4dCwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCogdmFyaWFibGVzVW5kZXJU
RFopCiB7CiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxH
bG9iYWxPYmplY3QoKTsKICAgICBpZiAoIWdsb2JhbE9iamVjdC0+ZXZhbEVuYWJsZWQoKSkgewpA
QCAtNDIyLDcgKzQyMiw3IEBAIEV2YWxFeGVjdXRhYmxlKiBFdmFsRXhlY3V0YWJsZTo6Y3JlYXRl
KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cmNlCiAgICAgICAgIHJldHVy
biAwOwogICAgIH0KIAotICAgIEV2YWxFeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gbmV3IChOb3RO
dWxsLCBhbGxvY2F0ZUNlbGw8RXZhbEV4ZWN1dGFibGU+KCpleGVjLT5oZWFwKCkpKSBFdmFsRXhl
Y3V0YWJsZShleGVjLCBzb3VyY2UsIGlzSW5TdHJpY3RDb250ZXh0LCBpc0Rlcml2ZWRDb25zdHJ1
Y3RvckNvbnRleHQsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQpOworICAgIEV2YWxFeGVjdXRhYmxl
KiBleGVjdXRhYmxlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RXZhbEV4ZWN1dGFibGU+
KCpleGVjLT5oZWFwKCkpKSBFdmFsRXhlY3V0YWJsZShleGVjLCBzb3VyY2UsIGlzSW5TdHJpY3RD
b250ZXh0LCBkZXJpdmVkQ29udGV4dFR5cGUsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQpOwogICAg
IGV4ZWN1dGFibGUtPmZpbmlzaENyZWF0aW9uKGV4ZWMtPnZtKCkpOwogCiAgICAgVW5saW5rZWRF
dmFsQ29kZUJsb2NrKiB1bmxpbmtlZEV2YWxDb2RlID0gZ2xvYmFsT2JqZWN0LT5jcmVhdGVFdmFs
Q29kZUJsb2NrKGV4ZWMsIGV4ZWN1dGFibGUsIHRoaXNURFpNb2RlLCBpc0Fycm93RnVuY3Rpb25D
b250ZXh0LCB2YXJpYWJsZXNVbmRlclREWik7CkBAIC00MzQsOCArNDM0LDggQEAgRXZhbEV4ZWN1
dGFibGUqIEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3Vy
Y2VDb2RlJiBzb3VyY2UKICAgICByZXR1cm4gZXhlY3V0YWJsZTsKIH0KIAotRXZhbEV4ZWN1dGFi
bGU6OkV2YWxFeGVjdXRhYmxlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291
cmNlLCBib29sIGluU3RyaWN0Q29udGV4dCwgYm9vbCBpc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRl
eHQsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCkKLSAgICA6IFNjcmlwdEV4ZWN1dGFibGUo
ZXhlYy0+dm0oKS5ldmFsRXhlY3V0YWJsZVN0cnVjdHVyZS5nZXQoKSwgZXhlYy0+dm0oKSwgc291
cmNlLCBpblN0cmljdENvbnRleHQsIGlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCwgaXNBcnJv
d0Z1bmN0aW9uQ29udGV4dCkKK0V2YWxFeGVjdXRhYmxlOjpFdmFsRXhlY3V0YWJsZShFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgYm9vbCBpblN0cmljdENvbnRleHQs
IERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNBcnJvd0Z1bmN0
aW9uQ29udGV4dCkKKyAgICA6IFNjcmlwdEV4ZWN1dGFibGUoZXhlYy0+dm0oKS5ldmFsRXhlY3V0
YWJsZVN0cnVjdHVyZS5nZXQoKSwgZXhlYy0+dm0oKSwgc291cmNlLCBpblN0cmljdENvbnRleHQs
IGRlcml2ZWRDb250ZXh0VHlwZSwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCkKIHsKIH0KIApAQCAt
NDQ3LDcgKzQ0Nyw3IEBAIHZvaWQgRXZhbEV4ZWN1dGFibGU6OmRlc3Ryb3koSlNDZWxsKiBjZWxs
KQogY29uc3QgQ2xhc3NJbmZvIFByb2dyYW1FeGVjdXRhYmxlOjpzX2luZm8gPSB7ICJQcm9ncmFt
RXhlY3V0YWJsZSIsICZTY3JpcHRFeGVjdXRhYmxlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0Rf
VEFCTEUoUHJvZ3JhbUV4ZWN1dGFibGUpIH07CiAKIFByb2dyYW1FeGVjdXRhYmxlOjpQcm9ncmFt
RXhlY3V0YWJsZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSkKLSAg
ICA6IFNjcmlwdEV4ZWN1dGFibGUoZXhlYy0+dm0oKS5wcm9ncmFtRXhlY3V0YWJsZVN0cnVjdHVy
ZS5nZXQoKSwgZXhlYy0+dm0oKSwgc291cmNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorICAgIDog
U2NyaXB0RXhlY3V0YWJsZShleGVjLT52bSgpLnByb2dyYW1FeGVjdXRhYmxlU3RydWN0dXJlLmdl
dCgpLCBleGVjLT52bSgpLCBzb3VyY2UsIGZhbHNlLCBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUs
IGZhbHNlKQogewogICAgIG1fdHlwZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0ID0gMDsKICAgICBtX3R5
cGVQcm9maWxpbmdFbmRPZmZzZXQgPSBzb3VyY2UubGVuZ3RoKCkgLSAxOwpAQCAtNDYzLDcgKzQ2
Myw3IEBAIHZvaWQgUHJvZ3JhbUV4ZWN1dGFibGU6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQogY29u
c3QgQ2xhc3NJbmZvIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjpzX2luZm8gPSB7ICJNb2R1bGVQ
cm9ncmFtRXhlY3V0YWJsZSIsICZTY3JpcHRFeGVjdXRhYmxlOjpzX2luZm8sIDAsIENSRUFURV9N
RVRIT0RfVEFCTEUoTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUpIH07CiAKIE1vZHVsZVByb2dyYW1F
eGVjdXRhYmxlOjpNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IFNvdXJjZUNvZGUmIHNvdXJjZSkKLSAgICA6IFNjcmlwdEV4ZWN1dGFibGUoZXhlYy0+dm0oKS5t
b2R1bGVQcm9ncmFtRXhlY3V0YWJsZVN0cnVjdHVyZS5nZXQoKSwgZXhlYy0+dm0oKSwgc291cmNl
LCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorICAgIDogU2NyaXB0RXhlY3V0YWJsZShleGVjLT52bSgp
Lm1vZHVsZVByb2dyYW1FeGVjdXRhYmxlU3RydWN0dXJlLmdldCgpLCBleGVjLT52bSgpLCBzb3Vy
Y2UsIGZhbHNlLCBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUsIGZhbHNlKQogewogICAgIG1fdHlw
ZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0ID0gMDsKICAgICBtX3R5cGVQcm9maWxpbmdFbmRPZmZzZXQg
PSBzb3VyY2UubGVuZ3RoKCkgLSAxOwpAQCAtNDk1LDcgKzQ5NSw3IEBAIHZvaWQgTW9kdWxlUHJv
Z3JhbUV4ZWN1dGFibGU6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQogY29uc3QgQ2xhc3NJbmZvIEZ1
bmN0aW9uRXhlY3V0YWJsZTo6c19pbmZvID0geyAiRnVuY3Rpb25FeGVjdXRhYmxlIiwgJlNjcmlw
dEV4ZWN1dGFibGU6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShGdW5jdGlvbkV4ZWN1
dGFibGUpIH07CiAKIEZ1bmN0aW9uRXhlY3V0YWJsZTo6RnVuY3Rpb25FeGVjdXRhYmxlKFZNJiB2
bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSog
dW5saW5rZWRFeGVjdXRhYmxlLCB1bnNpZ25lZCBmaXJzdExpbmUsIHVuc2lnbmVkIGxhc3RMaW5l
LCB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kQ29sdW1uKQotICAgIDogU2NyaXB0
RXhlY3V0YWJsZSh2bS5mdW5jdGlvbkV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIHZtLCBzb3Vy
Y2UsIHVubGlua2VkRXhlY3V0YWJsZS0+aXNJblN0cmljdENvbnRleHQoKSwgdW5saW5rZWRFeGVj
dXRhYmxlLT5pc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoKSwgZmFsc2UpCisgICAgOiBTY3Jp
cHRFeGVjdXRhYmxlKHZtLmZ1bmN0aW9uRXhlY3V0YWJsZVN0cnVjdHVyZS5nZXQoKSwgdm0sIHNv
dXJjZSwgdW5saW5rZWRFeGVjdXRhYmxlLT5pc0luU3RyaWN0Q29udGV4dCgpLCB1bmxpbmtlZEV4
ZWN1dGFibGUtPmRlcml2ZWRDb250ZXh0VHlwZSgpLCBmYWxzZSkKICAgICAsIG1fdW5saW5rZWRF
eGVjdXRhYmxlKHZtLCB0aGlzLCB1bmxpbmtlZEV4ZWN1dGFibGUpCiB7CiAgICAgUkVMRUFTRV9B
U1NFUlQoIXNvdXJjZS5pc051bGwoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
eGVjdXRhYmxlLmgKaW5kZXggODZhNTc3NzA4Zjk1ZjY5NWVkMzIyMDE0MjE5MzgyMDBjMjcwMGY1
Yy4uNTA2YTMxZjI0ODYyMzJmZjg1NTQwNDc5YjllNTY5ZjM5OTJmNDMzOCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaApAQCAtMzQ2LDcgKzM0Niw4IEBAIHB1
YmxpYzoKICAgICBib29sIG5lZWRzQWN0aXZhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faGFzQ2Fw
dHVyZWRWYXJpYWJsZXMgfHwgbV9mZWF0dXJlcyAmIChFdmFsRmVhdHVyZSB8IFdpdGhGZWF0dXJl
KTsgfQogICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNBcnJvd0Z1bmN0aW9uQ29udGV4dDsgfQogICAgIGJvb2wgaXNTdHJpY3RNb2RlKCkgY29uc3Qg
eyByZXR1cm4gbV9mZWF0dXJlcyAmIFN0cmljdE1vZGVGZWF0dXJlOyB9Ci0gICAgYm9vbCBpc0Rl
cml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2lzRGVyaXZlZENvbnN0
cnVjdG9yQ29udGV4dDsgfQorICAgIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5
cGUoKSBjb25zdCB7IHJldHVybiBtX2Rlcml2ZWRDb250ZXh0VHlwZTsgfQorCiAgICAgRUNNQU1v
ZGUgZWNtYU1vZGUoKSBjb25zdCB7IHJldHVybiBpc1N0cmljdE1vZGUoKSA/IFN0cmljdE1vZGUg
OiBOb3RTdHJpY3RNb2RlOyB9CiAgICAgICAgIAogICAgIHZvaWQgc2V0TmV2ZXJJbmxpbmUoYm9v
bCB2YWx1ZSkgeyBtX25ldmVySW5saW5lID0gdmFsdWU7IH0KQEAgLTM5NSw3ICszOTYsNyBAQCBw
cml2YXRlOgogICAgIEpTT2JqZWN0KiBwcmVwYXJlRm9yRXhlY3V0aW9uSW1wbChFeGVjU3RhdGUq
LCBKU0Z1bmN0aW9uKiwgSlNTY29wZSosIENvZGVTcGVjaWFsaXphdGlvbktpbmQpOwogCiBwcm90
ZWN0ZWQ6Ci0gICAgU2NyaXB0RXhlY3V0YWJsZShTdHJ1Y3R1cmUqLCBWTSYsIGNvbnN0IFNvdXJj
ZUNvZGUmLCBib29sIGlzSW5TdHJpY3RDb250ZXh0LCBib29sIGlzSW5EZXJpdmVkQ29uc3RydWN0
b3JDb250ZXh0LCBib29sIGlzSW5BcnJvd0Z1bmN0aW9uQ29udGV4dCk7CisgICAgU2NyaXB0RXhl
Y3V0YWJsZShTdHJ1Y3R1cmUqLCBWTSYsIGNvbnN0IFNvdXJjZUNvZGUmLCBib29sIGlzSW5TdHJp
Y3RDb250ZXh0LCBEZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNJbkFycm93RnVuY3Rpb25Db250
ZXh0KTsKIAogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogICAgIHsKQEAgLTQxNCw3
ICs0MTUsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBtX25ldmVySW5saW5lOwogICAgIGJvb2wg
bV9uZXZlck9wdGltaXplIHsgZmFsc2UgfTsKICAgICBib29sIG1fZGlkVHJ5VG9FbnRlckluTG9v
cDsKLSAgICBib29sIG1faXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0OworICAgIERlcml2ZWRD
b250ZXh0VHlwZSBtX2Rlcml2ZWRDb250ZXh0VHlwZTsKICAgICBib29sIG1faXNBcnJvd0Z1bmN0
aW9uQ29udGV4dDsKICAgICBpbnQgbV9vdmVycmlkZUxpbmVOdW1iZXI7CiAgICAgaW50IG1fZmly
c3RMaW5lOwpAQCAtNDM4LDcgKzQzOSw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fZXZh
bENvZGVCbG9jay5nZXQoKTsKICAgICB9CiAKLSAgICBzdGF0aWMgRXZhbEV4ZWN1dGFibGUqIGNy
ZWF0ZShFeGVjU3RhdGUqLCBjb25zdCBTb3VyY2VDb2RlJiwgYm9vbCBpc0luU3RyaWN0Q29udGV4
dCwgVGhpc1REWk1vZGUsIGJvb2wgaXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0LCBib29sIGlz
QXJyb3dGdW5jdGlvbkNvbnRleHQsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqKTsKKyAgICBz
dGF0aWMgRXZhbEV4ZWN1dGFibGUqIGNyZWF0ZShFeGVjU3RhdGUqLCBjb25zdCBTb3VyY2VDb2Rl
JiwgYm9vbCBpc0luU3RyaWN0Q29udGV4dCwgVGhpc1REWk1vZGUsIERlcml2ZWRDb250ZXh0VHlw
ZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50
Kik7CiAKICAgICBQYXNzUmVmUHRyPEpJVENvZGU+IGdlbmVyYXRlZEpJVENvZGUoKQogICAgIHsK
QEAgLTQ1Miw4ICs0NTMsNyBAQCBwdWJsaWM6CiAgICAgICAgIAogICAgIERFQ0xBUkVfSU5GTzsK
IAotCi0gICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBF
eGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2Rl
KCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBHZW5lcmF0b3JUaGlzTW9k
ZTo6Tm9uRW1wdHksIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBTb3VyY2VQYXJzZU1vZGU6OlBy
b2dyYW1Nb2RlLCBpc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoKSwgaXNBcnJvd0Z1bmN0aW9u
Q29udGV4dCgpKTsgfQorICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3Qg
eyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNBY3RpdmF0aW9uKCksIHVzZXNFdmFsKCksIGlz
U3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgR2VuZXJh
dG9yVGhpc01vZGU6Ok5vbkVtcHR5LCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgU291cmNlUGFy
c2VNb2RlOjpQcm9ncmFtTW9kZSwgZGVyaXZlZENvbnRleHRUeXBlKCksIGlzQXJyb3dGdW5jdGlv
bkNvbnRleHQoKSAsIGZhbHNlKTsgfQogCiAgICAgdW5zaWduZWQgbnVtVmFyaWFibGVzKCkgeyBy
ZXR1cm4gbV91bmxpbmtlZEV2YWxDb2RlQmxvY2stPm51bVZhcmlhYmxlcygpOyB9CiAgICAgdW5z
aWduZWQgbnVtYmVyT2ZGdW5jdGlvbkRlY2xzKCkgeyByZXR1cm4gbV91bmxpbmtlZEV2YWxDb2Rl
QmxvY2stPm51bWJlck9mRnVuY3Rpb25EZWNscygpOyB9CkBAIC00NjEsNyArNDYxLDggQEAgcHVi
bGljOgogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgRXhlY3V0YWJsZUJhc2U7CiAgICAgZnJp
ZW5kIGNsYXNzIFNjcmlwdEV4ZWN1dGFibGU7Ci0gICAgRXZhbEV4ZWN1dGFibGUoRXhlY1N0YXRl
KiwgY29uc3QgU291cmNlQ29kZSYsIGJvb2wgaW5TdHJpY3RDb250ZXh0LCBib29sIGlzRGVyaXZl
ZENvbnN0cnVjdG9yQ29udGV4dCwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0KTsKKworICAg
IEV2YWxFeGVjdXRhYmxlKEV4ZWNTdGF0ZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBib29sIGluU3Ry
aWN0Q29udGV4dCwgRGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRl
eHQpOwogCiAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRv
ciYpOwogCkBAIC01MDYsNyArNTA3LDcgQEAgcHVibGljOgogICAgICAgICAKICAgICBERUNMQVJF
X0lORk87CiAKLSAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0
dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmlj
dE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIEdlbmVyYXRvclRo
aXNNb2RlOjpOb25FbXB0eSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIFNvdXJjZVBhcnNlTW9k
ZTo6UHJvZ3JhbU1vZGUsIGlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCgpLCBmYWxzZSk7IH0K
KyAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1
dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwg
ZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIEdlbmVyYXRvclRoaXNNb2RlOjpO
b25FbXB0eSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3Jh
bU1vZGUsIGRlcml2ZWRDb250ZXh0VHlwZSgpLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0KCksIGZh
bHNlKTsgfQogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBFeGVjdXRhYmxlQmFzZTsKQEAg
LTU0Nyw3ICs1NDgsNyBAQCBwdWJsaWM6CiAKICAgICBERUNMQVJFX0lORk87CiAKLSAgICBFeGVj
dXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZv
KG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZh
bHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIEdlbmVyYXRvclRoaXNNb2RlOjpOb25FbXB0eSwg
U3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIFNvdXJjZVBhcnNlTW9kZTo6TW9kdWxlRXZhbHVhdGVN
b2RlLCBpc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoKSwgZmFsc2UpOyB9CisgICAgRXhlY3V0
YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhu
ZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxz
ZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBHZW5lcmF0b3JUaGlzTW9kZTo6Tm9uRW1wdHksIFN1
cGVyQmluZGluZzo6Tm90TmVlZGVkLCBTb3VyY2VQYXJzZU1vZGU6Ok1vZHVsZUV2YWx1YXRlTW9k
ZSwgZGVyaXZlZENvbnRleHRUeXBlKCksIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQoKSwgZmFsc2Up
OyB9CiAKICAgICBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIHVubGlua2VkTW9kdWxl
UHJvZ3JhbUNvZGVCbG9jaygpIHsgcmV0dXJuIG1fdW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJs
b2NrLmdldCgpOyB9CiAKQEAgLTY1Nyw3ICs2NTgsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0J1
aWx0aW5GdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5pc0J1
aWx0aW5GdW5jdGlvbigpOyB9CiAgICAgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5
KCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPmNvbnN0cnVjdEFiaWxpdHko
KTsgfQogICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gcGFyc2VNb2Rl
KCkgPT0gU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZTsgfQotICAgIGJvb2wgaXNE
ZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1
dGFibGUtPmlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCgpOyB9CisgICAgRGVyaXZlZENvbnRl
eHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVj
dXRhYmxlLT5kZXJpdmVkQ29udGV4dFR5cGUoKTsgfQogICAgIGJvb2wgaXNDbGFzc0NvbnN0cnVj
dG9yRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+aXNDbGFz
c0NvbnN0cnVjdG9yRnVuY3Rpb24oKTsgfQogICAgIGNvbnN0IElkZW50aWZpZXImIG5hbWUoKSB7
IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+bmFtZSgpOyB9CiAgICAgY29uc3QgSWRlbnRp
ZmllciYgaW5mZXJyZWROYW1lKCkgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPmluZmVy
cmVkTmFtZSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAKaW5kZXggOTY1ZTk0ZDc5NDI0OWZkMTI2NTVm
NGMyZmM4YmZjNDVhYmViYTJiNC4uNmFjZWE1ZTNmNjQyMDI0YWExYzI4ZjhmY2JiODcxNzYxODZm
MWI1ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3RGdW5jdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcApAQCAtNTg3LDcgKzU4Nyw3IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY0V2YWwoRXhlY1N0YXRlKiBleGVjKQogCiAgICAg
SlNHbG9iYWxPYmplY3QqIGNhbGxlZUdsb2JhbE9iamVjdCA9IGV4ZWMtPmNhbGxlZSgpLT5nbG9i
YWxPYmplY3QoKTsKICAgICBWYXJpYWJsZUVudmlyb25tZW50IGVtcHR5VERaVmFyaWFibGVzOyAv
LyBJbmRpcmVjdCBldmFsIGRvZXMgbm90IGhhdmUgYWNjZXNzIHRvIHRoZSBsZXhpY2FsIHNjb3Bl
LgotICAgIEV2YWxFeGVjdXRhYmxlKiBldmFsID0gRXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShleGVj
LCBtYWtlU291cmNlKHMpLCBmYWxzZSwgVGhpc1REWk1vZGU6OkNoZWNrSWZOZWVkZWQsIGZhbHNl
LCBmYWxzZSwgJmVtcHR5VERaVmFyaWFibGVzKTsKKyAgICBFdmFsRXhlY3V0YWJsZSogZXZhbCA9
IEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoZXhlYywgbWFrZVNvdXJjZShzKSwgZmFsc2UsIFRoaXNU
RFpNb2RlOjpDaGVja0lmTmVlZGVkLCBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUsIGZhbHNlLCAm
ZW1wdHlURFpWYXJpYWJsZXMpOwogICAgIGlmICghZXZhbCkKICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL2VzNi55YW1sIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi55
YW1sCmluZGV4IGYxMTk3ZDEzZGZlNWJmMTVlOTk0ZjRkYWMyYWEzODNjNTMzNzEyYjMuLjY4M2U2
ZTE2YjQ2MTdhYzZlNTNlMDc0ZTgzZjhjYWE3MWM1M2I5MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9lczYueWFtbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvZXM2LnlhbWwKQEAgLTc0Nyw3ICs3NDcsNyBAQAogLSBwYXRoOiBlczYvYXJyb3dfZnVu
Y3Rpb25zX2xleGljYWxfbmV3LnRhcmdldF9iaW5kaW5nLmpzCiAgIGNtZDogcnVuRVM2IDpub3Jt
YWwKIC0gcGF0aDogZXM2L2Fycm93X2Z1bmN0aW9uc19sZXhpY2FsX3N1cGVyX2JpbmRpbmcuanMK
LSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYv
YXJyb3dfZnVuY3Rpb25zX25vX3Byb3RvdHlwZV9wcm9wZXJ0eS5qcwogICBjbWQ6IHJ1bkVTNiA6
bm9ybWFsCiAtIHBhdGg6IGVzNi9ibG9jay1sZXZlbF9mdW5jdGlvbl9kZWNsYXJhdGlvbi5qcwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0
aW9uLWxleGljYWwtYmluZC1zdXBlcnByb3BlcnR5LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC1zdXBlcnByb3BlcnR5Lmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRmOWI5ZWMzODI2ZjNmYzQ4Njc2NmYwMzljNjhlYzY2OTVlNzAzYTcKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93
ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXN1cGVycHJvcGVydHkuanMKQEAgLTAsMCArMSwyMjQgQEAK
K3ZhciB0ZXN0Q2FzZSA9IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7Cisg
ICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpIHsKKyAgICAgICAgdGhyb3cgbWVzc2FnZSArICIu
IEV4cGVjdGVkICciICsgZXhwZWN0ZWQgKyAiJywgYnV0IHdhcyAnIiArIGFjdHVhbCArICInIjsK
KyAgICB9Cit9OworCit2YXIgdGVzdFZhbHVlICA9ICd0ZXN0LXZhbHVlJzsKKwordmFyIEEgPSBj
bGFzcyBBIHsKKyAgICBjb25zdHJ1Y3RvcigpIHsKKyAgICAgICAgdGhpcy52YWx1ZSA9IHRlc3RW
YWx1ZTsKKyAgICB9CisgICAgZ2V0Q29uc3RWYWx1ZSAoKSB7CisgICAgICAgIHJldHVybiB0ZXN0
VmFsdWU7CisgICAgfQorICAgIGdldFZhbHVlICgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMudmFs
dWU7CisgICAgfQorICAgIHNldFZhbHVlICh2YWx1ZSkgeworICAgICAgICB0aGlzLnZhbHVlID0g
dmFsdWU7CisgICAgfQorfTsKKwordmFyIEIgPSBjbGFzcyBCIGV4dGVuZHMgQSB7CisgICAgZ2V0
UGFyZW50VmFsdWUoKSB7CisgICAgICAgIHZhciBhcnJvdyAgPSAoKSA9PiBzdXBlci5nZXRWYWx1
ZSgpOworICAgICAgICByZXR1cm4gYXJyb3coKTsKKyAgICB9Cit9OworCit2YXIgQyA9IGNsYXNz
IEMgeworICAgIGNvbnN0cnVjdG9yKCkgeworICAgICAgICB0aGlzLnZhbHVlID0gdGVzdFZhbHVl
OworICAgIH0KKyAgICBzdGF0aWMgZ2V0U3RhdGljVmFsdWUoKSB7CisgICAgICAgIHJldHVybiB0
ZXN0VmFsdWU7CisgICAgfQorfTsKKwordmFyIEQgPSBjbGFzcyBEIGV4dGVuZHMgQyB7CisgICAg
c3RhdGljIGdldFBhcmVudFN0YXRpY1ZhbHVlKCkgeworICAgICAgICB2YXIgYXJyb3cgID0gKCkg
PT4gc3VwZXIuZ2V0U3RhdGljVmFsdWUoKTsKKyAgICAgICAgcmV0dXJuIGFycm93KCk7CisgICAg
fQorfTsKKwordmFyIEUgPSBjbGFzcyBFIGV4dGVuZHMgQSB7CisgICAgIGNvbnN0cnVjdG9yKCkg
eworICAgICAgICAgc3VwZXIoKTsKKyAgICAgfQorICAgICBnZXQgcHJvcCgpIHsKKyAgICAgICAg
IHZhciBhcnJvdyA9ICgpID0+IHN1cGVyLmdldENvbnN0VmFsdWUoKSArICctJyArIHRoaXMudmFs
dWU7CisgICAgICAgICByZXR1cm4gYXJyb3coKTsKKyAgICAgfQorICAgICBzZXQgcHJvcCh2YWx1
ZSkgeworICAgICAgICAgdmFyIGFycm93ID0gKG5ld1ZhbCkgPT4gc3VwZXIuc2V0VmFsdWUobmV3
VmFsKTsKKyAgICAgICAgIGFycm93KHZhbHVlKTsKKyAgICAgfQorICAgICBzZXRJbml0VmFsdWUo
KSB7CisgICAgICAgdGhpcy52YWx1ZSA9IHRlc3RWYWx1ZTsKKyAgICAgfQorIH07CisKK3ZhciBi
ID0gbmV3IEIoKTsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgeworICAgIHRlc3RD
YXNlKGIuZ2V0UGFyZW50VmFsdWUoKSwgdGVzdFZhbHVlLCBpKTsKK30KKworZm9yICh2YXIgaSA9
IDA7IGkgPCAxMDAwMDsgaSsrKSB7CisgICAgdGVzdENhc2UoRC5nZXRQYXJlbnRTdGF0aWNWYWx1
ZSgpLCB0ZXN0VmFsdWUsIGkpOworfQorCit2YXIgZSA9IG5ldyBFKCk7Citmb3IgKHZhciBpID0g
MDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgICAgZS5zZXRJbml0VmFsdWUoKTsKKyAgICAgdGVzdENh
c2UoZS5wcm9wLCB0ZXN0VmFsdWUrJy0nK3Rlc3RWYWx1ZSwgaSk7CisgICAgIGUucHJvcCA9ICdu
ZXctdGVzdC12YWx1ZSc7CisgICAgIHRlc3RDYXNlKGUucHJvcCwgdGVzdFZhbHVlKyctbmV3LXRl
c3QtdmFsdWUnLCBpKTsKK30KKwordmFyIEYgID0gY2xhc3MgRiBleHRlbmRzIEEgeworICAgIG5l
d01ldGhvZCgpIHsKKyAgICAgICAgdmFyIGFycm93ICA9ICgpID0+IGV2YWwoJ3N1cGVyLmdldFZh
bHVlKCknKTsKKyAgICAgICAgdmFyIHIgPSBhcnJvdygpOworICAgICAgICByZXR1cm4gcjsKKyAg
ICB9Cit9OworCit2YXIgZiA9IG5ldyBGKCk7Citmb3IgKHZhciBpPTA7IGkgPCAxMDAwMDsgaSsr
KSB7CisgICAgdHJ5IHsKKyAgICAgICAgdmFyIHJlc3VsdCA9IGYubmV3TWV0aG9kKCk7CisgICAg
ICAgIHRlc3RDYXNlKHJlc3VsdCwgdGVzdFZhbHVlLCBpKTsKKyAgICAgfSBjYXRjaChlKSB7Cisg
ICAgICAgIGlmICghKGUgaW5zdGFuY2VvZiBTeW50YXhFcnJvcikpCisgICAgICAgICAgIHRocm93
IGU7CisgICAgIH0KK30KKwordmFyIEcgPSBjbGFzcyBHIGV4dGVuZHMgQSB7CisgICAgIGNvbnN0
cnVjdG9yKCkgeworICAgICAgICAgc3VwZXIoKTsKKyAgICAgfQorICAgICBnZXQgcHJvcCgpIHsK
KyAgICAgICAgIHZhciBhcnJvdyA9ICgpID0+ICgpID0+IHN1cGVyLmdldENvbnN0VmFsdWUoKSAr
ICctJyArIHRoaXMudmFsdWU7CisgICAgICAgICByZXR1cm4gYXJyb3coKSgpOworICAgICB9Cisg
ICAgIHNldCBwcm9wKHZhbHVlKSB7CisgICAgICAgICB2YXIgYXJyb3cgPSAgKCkgPT4gKG5ld1Zh
bCkgPT4gdGhpcy52YWx1ZSA9IG5ld1ZhbDsKKyAgICAgICAgIGFycm93KCkodmFsdWUpOworICAg
ICB9CisgICAgIHNldEluaXRWYWx1ZSgpIHsKKyAgICAgICAgIHRoaXMudmFsdWUgPSB0ZXN0VmFs
dWU7CisgICAgIH0KKyAgICAgZ2V0VmFsdWVDQigpIHsKKyAgICAgICAgIHZhciBhcnJvdyAgPSAo
KSA9PiBzdXBlci5nZXRWYWx1ZSgpOworICAgICAgICAgcmV0dXJuIGFycm93OworICAgICB9Cisg
ICAgIHNldFZhbHVlQ0IoKSB7CisgICAgICAgICB2YXIgYXJyb3cgPSAgKG5ld1ZhbCkgPT4gdGhp
cy52YWx1ZSA9IG5ld1ZhbDsKKyAgICAgICAgIHJldHVybiBhcnJvdzsKKyAgICAgfQorICAgICBn
ZXRQYXJlbnRWYWx1ZSgpIHsKKyAgICAgICAgIHJldHVybiBzdXBlci5nZXRWYWx1ZSgpOworICAg
ICB9CisgICAgIGdldFBhcmVudFZhbHVlV2l0aEVycm9yKCkgeworICAgICAgICAgdmFyIGYgPSAg
ZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgIHJldHVybiAoKSA9PiBzdXBlci5nZXRWYWx1ZSgp
OworICAgICAgICAgfTsKKyAgICAgICAgIHJldHVybiBmKCk7CisgICAgIH0KKyB9OworCisgdmFy
IGcgPSBuZXcgRygpOworIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgeworICAgIGcu
c2V0SW5pdFZhbHVlKCk7CisgICAgdGVzdENhc2UoZy5wcm9wLCB0ZXN0VmFsdWUgKyAnLScgKyB0
ZXN0VmFsdWUsICdFcnJvcjogU29tZSBwcm9ibGVtIHdpdGggdXNpbmcgYXJyb3cgYW5kICJzdXBl
ciIgaW5zaWRlIG9mIHRoZSBtZXRob2QnKTsKKyAgICBnLnByb3AgPSAnbmV3LXRlc3QtdmFsdWUn
OworICAgIHRlc3RDYXNlKGcucHJvcCwgdGVzdFZhbHVlICsgJy1uZXctdGVzdC12YWx1ZScsICdF
cnJvcjogU29tZSBwcm9ibGVtIHdpdGggdXNpbmcgYXJyb3cgYW5kICJzdXBlciIgaW5zaWRlIG9m
IHRoZSBnZXR0ZXIgYW5kIHNldHRlcicpOworIH0KKwordmFyIGcxID0gbmV3IEcoKTsKK2ZvciAo
dmFyIGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgeworICAgIGcxLnNldEluaXRWYWx1ZSgpOworICAg
IGxldCBnZXRWYWx1ZSA9IGcxLmdldFZhbHVlQ0IoKTsKKyAgICB0ZXN0Q2FzZShnZXRWYWx1ZSgp
LCB0ZXN0VmFsdWUsICAnRXJyb3I6IFNvbWUgcHJvYmxlbSB3aXRoIHVzaW5nIGFycm93IGFuZCAi
c3VwZXIiIGluc2lkZSBvZiB0aGUgbWV0aG9kIHRoYXQgcmV0dW4gYXJyb3cgZnVuY3Rpb24nKTsK
KyAgICBsZXQgc2V0VmFsdWUgPSBnMS5zZXRWYWx1ZUNCKCk7CisgICAgc2V0VmFsdWUoJ25ldy12
YWx1ZScpOworICAgIHRlc3RDYXNlKGdldFZhbHVlKCksICduZXctdmFsdWUnLCAnRXJyb3I6IFNv
bWUgcHJvYmxlbSB3aXRoIHVzaW5nIGFycm93IGFuZCAic3VwZXIiIGluc2lkZSBvZiB0aGUgbWV0
aG9kIHRoYXQgcmV0dW4gYXJyb3cgZnVuY3Rpb24nKTsKK30KKwordmFyIGcyID0gbmV3IEcoKTsK
K2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgeworICAgIGxldCBlcnJvciA9IGZhbHNl
OworICAgIHRyeSB7CisgICAgICAgZzIuZ2V0UGFyZW50VmFsdWVXaXRoRXJyb3IoKSgpOworICAg
IH0gY2F0Y2goZSkgeworICAgICAgLy8gRklYTUU6IHNob3VsZCBieSBjaGVjayBpZiBlIGluc3Rh
bmNlb2YgU3ludGF4RXJyb3IKKyAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNTA4OTMKKyAgICAgIGVyb3JyID0gdHJ1ZTsKKyAgICB9CisgICAgdGVzdENh
c2UoZXJvcnIsIHRydWUsICdFcnJvcjogdXNpbmcgInN1cGVyIiBzaG91bGQgbGVhZCB0byBlcnJv
cicpOworfQorCisKK3ZhciBIID0gY2xhc3MgSCBleHRlbmRzIEEgeworICAgIGNvbnN0cnVjdG9y
KCkgeworICAgICAgICB2YXIgYXJyb3cgPSAoKSA9PiAoKSA9PiBzdXBlci5nZXRWYWx1ZSgpOwor
ICAgICAgICBzdXBlcigpOworICAgICAgICB0aGlzLm5ld1ZhbHVlICA9IGFycm93KCkoKTsKKyAg
ICB9Cit9OworCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgICBsZXQgaCA9
IG5ldyBIKCk7CisgICAgdGVzdENhc2UoaC5uZXdWYWx1ZSwgdGVzdFZhbHVlLCAnRXJyb3I6IFNv
bWUgcHJvYmxlbSB3aXRoIHVzaW5nICJzdXBlciIgaW5zaWRlIG9mIHRoZSBjb25zdHJ1Y3Rvcicp
OworfQorCit2YXIgSSA9IGNsYXNzIEkgZXh0ZW5kcyBBIHsKKyAgICBjb25zdHJ1Y3RvciAoYmVm
b3JlU3VwZXIpIHsKKyAgICAgICAgdmFyIGFycm93ID0gKCkgPT4gc3VwZXIuZ2V0VmFsdWUoKTsK
KyAgICAgICAgaWYgKGJlZm9yZVN1cGVyKSAgeworICAgICAgICAgICAgdGhpcy5fdmFsdWUgPSBh
cnJvdygpOworICAgICAgICAgICAgc3VwZXIoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIHN1cGVyKCk7CisgICAgICAgICAgICB0aGlzLl92YWx1ZSA9IGFycm93KCk7CisgICAgICAg
IH0KKyAgICB9Cit9CisKK3ZhciBKID0gY2xhc3MgSiBleHRlbmRzIEEgeworICAgIGNvbnN0cnVj
dG9yIChiZWZvcmVTdXBlcikgeworICAgICAgICB2YXIgX3ZhbHVlOworICAgICAgICB2YXIgYXJy
b3cgPSAoKSA9PiBzdXBlci5nZXRDb25zdFZhbHVlKCk7CisgICAgICAgIGlmIChiZWZvcmVTdXBl
cikgIHsKKyAgICAgICAgICAgIF92YWx1ZSA9IGFycm93KCk7CisgICAgICAgICAgICBzdXBlcigp
OworICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHN1cGVyKCk7CisgICAgICAgICAgICBf
dmFsdWUgPSBhcnJvdygpOworICAgICAgICB9CisgICAgICAgIHRoaXMuX3ZhbHVlID0gX3ZhbHVl
OworICAgIH0KK30KKworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7CisgICAgbGV0
IGkgPSBuZXcgSShmYWxzZSk7CisgICAgdGVzdENhc2UoaS5fdmFsdWUsIHRlc3RWYWx1ZSwgJ0Vy
cm9yOiBTb21lIHByb2JsZW0gd2l0aCB1c2luZyAic3VwZXIiIGluc2lkZSBvZiB0aGUgY29uc3Ry
dWN0b3InKTsKKyAgICBsZXQgaiA9IG5ldyBKKGZhbHNlKTsKKyAgICB0ZXN0Q2FzZShqLl92YWx1
ZSwgdGVzdFZhbHVlLCAnRXJyb3I6IFNvbWUgcHJvYmxlbSB3aXRoIHVzaW5nICJzdXBlciIgaW5z
aWRlIG9mIHRoZSBjb25zdHJ1Y3RvcicpOworCisgICAgLy8gRklYTUU6IFByb2JsZW0gd2l0aCBh
Y2Nlc3MgdG8gdGhlIHN1cGVyIGJlZm9yZSBzdXBlcigpIGluIGNvbnN0cnVjdG9yCisgICAgLy8g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MjEwOAorICAgIC8vbGV0
IGoyID0gbmV3IEoodHJ1ZSk7CisgICAgLy90ZXN0Q2FzZShqMi5fdmFsdWUsIHRlc3RWYWx1ZSwg
J0Vycm9yOiBTb21lIHByb2JsZW0gd2l0aCB1c2luZyAic3VwZXIiIGluc2lkZSBvZiB0aGUgY29u
c3RydWN0b3InKTsKKyAgICBlcm9yciA9IGZhbHNlOworICAgIHRyeSB7CisgICAgICAgIG5ldyBJ
KHRydWUpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZXJvcnIgPSBlIGluc3RhbmNlb2Yg
UmVmZXJlbmNlRXJyb3I7CisgICAgfQorICAgIHRlc3RDYXNlKGVyb3JyLCB0cnVlLCAnRXJyb3I6
IHVzaW5nICJzdXBlciIgcHJvcGVydHkgYmVmb3JlIHN1cGVyKCkgc2hvdWxkIGxlYWQgdG8gZXJy
b3InKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwppbmRleCA1Yzc2ZTVhNGU5ZGU0ZjFjNmI3ODMwNTU3ODdlMmYzYjQ5YjAwZWJk
Li4yOGI3NzRiYWEwYzBlNDkwNGE3ZGU4ZjQ1ZGExYTc2MzZiMDA0ZmU1IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTQgQEAKKzIwMTUtMTItMTAgIFNrYWNoa292IE9sZWtzYW5kciAgPGdza2FjaGtvdkBnbWFp
bC5jb20+CisKKyAgICAgICAgW0VTNl0gQXJyb3cgZnVuY3Rpb24gc3ludGF4LiBBcnJvdyBmdW5j
dGlvbiBzcGVjaWZpYyBmZWF0dXJlcy4gTGV4aWNhbCBiaW5kICJzdXBlciIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0OTYxNQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICoganMvYXJyb3dmdW5jdGlvbi1z
dXBlcnByb3BlcnR5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvYXJyb3dmdW5j
dGlvbi1zdXBlcnByb3BlcnR5Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0
cy9hcnJvd2Z1bmN0aW9uLXN1cGVycHJvcGVydHkuanM6IEFkZGVkLgorCiAyMDE1LTEyLTA1ICBT
a2FjaGtvdiBPbGVrc2FuZHIgIDxnc2thY2hrb3ZAZ21haWwuY29tPgogCiAgICAgICAgIFtFUzZd
ICJzdXBlciIgYW5kICJ0aGlzIiBzaG91bGQgYmUgbGV4aWNhbGx5IGJvdW5kIGluc2lkZSBhbiBh
cnJvdyBmdW5jdGlvbiBhbmQgc2hvdWxkIGxpdmUgaW4gYSBKU0xleGljYWxFbnZpcm9ubWVudApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1zdXBlcnByb3BlcnR5LWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tc3VwZXJwcm9wZXJ0eS1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2RmMmM0OTVmYjlmZjFlMjc2MzMwZjE1M2MxNDBiYjVm
ZjVmNDlkMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24t
c3VwZXJwcm9wZXJ0eS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNiBAQAorVGVzdHMgZm9yIEVT
NiBhcnJvdyBmdW5jdGlvbiwgYWNjZXNzIHRvIHRoZSBzdXBlciBwcm9wZXJ0eSBpbiBhcnJvdyBm
dW5jdGlvbgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1l
c3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyAobmV3IEIoKSku
Z2V0VmFsdWVQYXJlbnRGdW5jdGlvbigpIGlzIGV4cGVjdGVkVmFsdWUKK1BBU1MgKG5ldyBDKGZh
bHNlKSkudmFsdWUgaXMgZXhwZWN0ZWRWYWx1ZQorUEFTUyBFLmdldFBhcmVudFN0YXRpY1ZhbHVl
KCkgaXMgZXhwZWN0ZWRWYWx1ZQorUEFTUyBmLnByb3AgaXMgZXhwZWN0ZWRWYWx1ZSArICItIiAr
IGV4cGVjdGVkVmFsdWUKK1BBU1MgZi5wcm9wIGlzIGV4cGVjdGVkVmFsdWUgKyAiLSIgKyAibmV3
LXZhbHVlIgorUEFTUyAobmV3IEYoKSkuZ2V0UGFyZW50VmFsdWUoKSBpcyBleHBlY3RlZFZhbHVl
CitQQVNTIChuZXcgRigpKS5nZXRQYXJlbnRWYWx1ZVdpdGhFcnJvcigpKCkgdGhyZXcgZXhjZXB0
aW9uIFR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ3N1
cGVyLmdldFZhbHVlJykuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1zdXBl
cnByb3BlcnR5Lmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXN1cGVycHJvcGVy
dHkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4wMmI1MDVmNzk5NDViN2NhMzljOTZjYzcxOWFjZGM5NWZmNWJh
MGZkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1zdXBl
cnByb3BlcnR5Lmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICIt
Ly9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2Ny
aXB0IHNyYz0ic2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tc3VwZXJwcm9wZXJ0eS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQt
dGVzdHMvYXJyb3dmdW5jdGlvbi1zdXBlcnByb3BlcnR5LmpzIGIvTGF5b3V0VGVzdHMvanMvc2Ny
aXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tc3VwZXJwcm9wZXJ0eS5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44Mzg2
ZmI3NjMzZGExOWNkMGRiYjRmNzhmMDc3MWIyNzFkYjRmNzU4Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tc3VwZXJwcm9wZXJ0eS5q
cwpAQCAtMCwwICsxLDk1IEBACitkZXNjcmlwdGlvbignVGVzdHMgZm9yIEVTNiBhcnJvdyBmdW5j
dGlvbiwgYWNjZXNzIHRvIHRoZSBzdXBlciBwcm9wZXJ0eSBpbiBhcnJvdyBmdW5jdGlvbicpOwor
Cit2YXIgZXhwZWN0ZWRWYWx1ZSA9ICd0ZXN0LXZhbHVlJzsKKworY2xhc3MgQSB7CisgICAgZ2V0
VmFsdWUgKCkgeworICAgICAgICByZXR1cm4gZXhwZWN0ZWRWYWx1ZTsKKyAgICB9Cit9OworCitj
bGFzcyBCIGV4dGVuZHMgQSB7CisgICAgZ2V0VmFsdWVQYXJlbnRGdW5jdGlvbigpIHsKKyAgICAg
ICAgdmFyIGFycm93ICA9ICgpID0+IHN1cGVyLmdldFZhbHVlKCk7CisgICAgICAgIHJldHVybiBh
cnJvdygpOworICAgIH0KK307CisKK2NsYXNzIEMgZXh0ZW5kcyBCIHsKKyAgICBjb25zdHJ1Y3Rv
cihiZWZvcmVTdXBlcikgeworICAgICAgICBsZXQgX3ZhbHVlOworICAgICAgICBsZXQgYXJyb3cg
PSAoKSA9PiBzdXBlci5nZXRWYWx1ZSgpOworICAgICAgICBpZiAoYmVmb3JlU3VwZXIpIHsKKyAg
ICAgICAgICAgIF92YWx1ZSA9IGFycm93KCk7CisgICAgICAgICAgICBzdXBlcigpOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgc3VwZXIoKTsKKyAgICAgICAgICAgIF92YWx1ZSA9IGFy
cm93KCk7CisgICAgICAgIH0KKyAgICAgICAgdGhpcy52YWx1ZSA9IF92YWx1ZTsKKyAgICB9Cit9
OworCitjbGFzcyBEIHsKKyAgICBjb25zdHJ1Y3RvcigpIHsKKyAgICAgICAgdGhpcy52YWx1ZSA9
IGV4cGVjdGVkVmFsdWU7CisgICAgfQorICAgIHN0YXRpYyBnZXRTdGF0aWNWYWx1ZSgpIHsKKyAg
ICAgICAgcmV0dXJuIGV4cGVjdGVkVmFsdWU7CisgICAgfQorfTsKKworY2xhc3MgRSBleHRlbmRz
IEQgeworICAgIHN0YXRpYyBnZXRQYXJlbnRTdGF0aWNWYWx1ZSgpIHsKKyAgICAgICAgdmFyIGFy
cm93ICA9ICgpID0+IHN1cGVyLmdldFN0YXRpY1ZhbHVlKCk7CisgICAgICAgIHJldHVybiBhcnJv
dygpOworICAgIH0KK307CisKK2NsYXNzIEYgZXh0ZW5kcyBBIHsKKyAgICBjb25zdHJ1Y3Rvcigp
IHsKKyAgICAgICAgc3VwZXIoKTsKKyAgICAgICAgdGhpcy52YWx1ZSA9IGV4cGVjdGVkVmFsdWU7
CisgICAgfQorICAgIGdldCBwcm9wKCkgeworICAgICAgICB2YXIgYXJyb3cgPSAoKSA9PiBzdXBl
ci5nZXRWYWx1ZSgpKyAnLScgKyB0aGlzLnZhbHVlOworICAgICAgICByZXR1cm4gYXJyb3coKTsK
KyAgICB9CisgICAgc2V0IHByb3AodmFsdWUpIHsKKyAgICAgICAgdmFyIGFycm93ID0gKG5ld1Zh
bCkgPT4gdGhpcy52YWx1ZSA9IG5ld1ZhbDsKKyAgICAgICAgYXJyb3codmFsdWUpOworICAgIH0K
KyAgICBnZXRQYXJlbnRWYWx1ZSgpIHsKKyAgICAgICAgbGV0IGFycm93ID0gKCkgPT4gKCkgPT4g
c3VwZXIuZ2V0VmFsdWUoKTsKKyAgICAgICAgcmV0dXJuIGFycm93KCkoKTsKKyAgICB9CisgICAg
Z2V0UGFyZW50VmFsdWVXaXRoRXJyb3IoKSB7CisgICAgICAgIHZhciBmID0gIGZ1bmN0aW9uICgp
IHsKKyAgICAgICAgICAgIHJldHVybiAoKSA9PiBzdXBlci5nZXRWYWx1ZSgpOworICAgICAgICB9
OworICAgICAgICByZXR1cm4gZigpOworICAgIH0KKyB9OworCitzaG91bGRCZSgnKG5ldyBCKCkp
LmdldFZhbHVlUGFyZW50RnVuY3Rpb24oKScsICdleHBlY3RlZFZhbHVlJyk7CisKK3Nob3VsZEJl
KCcobmV3IEMoZmFsc2UpKS52YWx1ZScsICdleHBlY3RlZFZhbHVlJyk7CisKKy8vIEZJWE1FOiBQ
cm9ibGVtIHdpdGggYWNjZXNzIHRvIHRoZSBzdXBlciBiZWZvcmUgc3VwZXIgaW4gY29uc3RydWN0
b3IKKy8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTIxMDgKKy8v
c2hvdWxkVGhyb3coJyhuZXcgQyh0cnVlKSknLCAnUmVmZXJlbmNlRXJyb3InKTsKKworc2hvdWxk
QmUoJ0UuZ2V0UGFyZW50U3RhdGljVmFsdWUoKScsICdleHBlY3RlZFZhbHVlJyk7CisKK3ZhciBm
ID0gbmV3IEYoKTsKKworc2hvdWxkQmUoJ2YucHJvcCcsICdleHBlY3RlZFZhbHVlICsgIi0iICsg
ZXhwZWN0ZWRWYWx1ZScpOworCitmLnByb3AgPSAnbmV3LXZhbHVlJzsKK3Nob3VsZEJlKCdmLnBy
b3AnLCAnZXhwZWN0ZWRWYWx1ZSArICItIiArICJuZXctdmFsdWUiJyk7CisKK3Nob3VsZEJlKCco
bmV3IEYoKSkuZ2V0UGFyZW50VmFsdWUoKScsICdleHBlY3RlZFZhbHVlJyk7CisKK3Nob3VsZFRo
cm93KCcobmV3IEYoKSkuZ2V0UGFyZW50VmFsdWVXaXRoRXJyb3IoKSgpJyk7CisKK3ZhciBzdWNj
ZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267799</attachid>
            <date>2015-12-22 13:13:01 -0800</date>
            <delta_ts>2015-12-29 12:22:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-149615-20151222231223.patch</filename>
            <type>text/plain</type>
            <size>56835</size>
            <attacher name="GSkachkov">gskachkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk0MzQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
MzU4ODYwYzljM2Y4NDNmNjU3YmViY2U5MDRhODYxYzk4MzBmZWQzLi42OGJiNzJhNDgxMTQ5YTI0
NDk4NTg1YTFjNWJkMzI0MjhiNGE4ODk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2NSBAQAorMjAxNS0xMi0xMCAgQWxla3NhbmRyIFNrYWNoa292ICA8Z3NrYWNoa292QGdt
YWlsLmNvbT4KKworICAgICAgICBbRVM2XSBBcnJvdyBmdW5jdGlvbiBzeW50YXguIEFycm93IGZ1
bmN0aW9uIHNwZWNpZmljIGZlYXR1cmVzLiBMZXhpY2FsIGJpbmQgInN1cGVyIgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5NjE1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50ZWQgbGV4aWNh
bCBiaW5kICJzdXBlciIgcHJvcGVydHkgZm9yIGFycm93IGZ1bmN0aW9uLiAnc3VwZXInIHByb3Bl
cnR5IGNhbiBiZSBhY2Nlc3NlZCAKKyAgICAgICAgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlv
biBpbiBjYXNlIGlmIGFycm93IGZ1bmN0aW9uIGlzIG5lc3RlZCBpbiBjb25zdHJ1Y3RvciwgbWV0
aG9kLCAKKyAgICAgICAgZ2V0dGVyIG9yIHNldHRlciBvZiBjbGFzcy4gSW4gY3VycmVudCBwYXRj
aCB1c2luZyAnc3VwZXInIGluIGFycm93IGZ1bmN0aW9uLCB0aGF0IGRlY2xhcmVkIG91dCBvZiB0
aGUgCisgICAgICAgIGNsYXNzLCBsZWFkIHRvIHdyb25nIHR5cGUgb2YgZXJyb3IsIHNob3VsZCBi
ZSBTeW50YXhFcnJvcihodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUw
ODkzKSAKKyAgICAgICAgYW5kIHRoaXMgd2lsbCBiZSBmaXhlZCBpbiBzZXBhcmV0ZSBwYXRjaC4K
KworICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHA6CisgICAgICAgIChK
U0M6OmNyZWF0ZUV4ZWN1dGFibGVJbnRlcm5hbCk6CisgICAgICAgICogYnl0ZWNvZGUvRXZhbENv
ZGVDYWNoZS5oOgorICAgICAgICAoSlNDOjpFdmFsQ29kZUNhY2hlOjpnZXRTbG93KToKKyAgICAg
ICAgKiBieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxl
SW5mbzo6RXhlY3V0YWJsZUluZm8pOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlSW5mbzo6ZGVy
aXZlZENvbnRleHRUeXBlKToKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUluZm86OmlzQ2xhc3ND
b250ZXh0KToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHA6CisgICAg
ICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpVbmxpbmtlZENvZGVCbG9jayk6CisgICAgICAg
ICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRD
b2RlQmxvY2s6OmRlcml2ZWRDb250ZXh0VHlwZSk6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29k
ZUJsb2NrOjppc0NsYXNzQ29udGV4dCk6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpnZW5lcmF0ZVVubGlua2VkRnVuY3Rp
b25Db2RlQmxvY2spOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUpOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2Vu
ZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXREZXJpdmVk
Q29uc3RydWN0b3JUb0Fycm93RnVuY3Rpb25Db250ZXh0U2NvcGUpOgorICAgICAgICAqIGJ5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVy
YXRvcjo6ZGVyaXZlZENvbnRleHRUeXBlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OmlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
R2VuZXJhdG9yOjppc0Rlcml2ZWRDbGFzc0NvbnRleHQpOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcjo6aXNBcnJvd0Z1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3I6Om1ha2VGdW5jdGlvbik6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdl
bi5jcHA6CisgICAgICAgIChKU0M6OmVtaXRIb21lT2JqZWN0Rm9yQ2FsbGVlKToKKyAgICAgICAg
KEpTQzo6RnVuY3Rpb25DYWxsVmFsdWVOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGRl
YnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcDoKKyAgICAgICAgKEpTQzo6RGVidWdnZXJDYWxs
RnJhbWU6OmV2YWx1YXRlKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6
CisgICAgICAgIChKU0M6OmV2YWwpOgorICAgICAgICAqIHJ1bnRpbWUvQ29kZUNhY2hlLmNwcDoK
KyAgICAgICAgKEpTQzo6Q29kZUNhY2hlOjpnZXRGdW5jdGlvbkV4ZWN1dGFibGVGcm9tR2xvYmFs
Q29kZSk6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6
U2NyaXB0RXhlY3V0YWJsZTo6U2NyaXB0RXhlY3V0YWJsZSk6CisgICAgICAgIChKU0M6OkV2YWxF
eGVjdXRhYmxlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpFdmFsRXhlY3V0YWJsZTo6RXZhbEV4
ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6UHJvZ3JhbUV4ZWN1
dGFibGUpOgorICAgICAgICAoSlNDOjpNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6TW9kdWxlUHJv
Z3JhbUV4ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OkZ1bmN0
aW9uRXhlY3V0YWJsZSk6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmg6CisgICAgICAg
IChKU0M6OlNjcmlwdEV4ZWN1dGFibGU6OmRlcml2ZWRDb250ZXh0VHlwZSk6CisgICAgICAgICog
cnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChKU0M6Omdsb2Jh
bEZ1bmNFdmFsKToKKyAgICAgICAgKiB0ZXN0cy9lczYueWFtbDoKKyAgICAgICAgKiB0ZXN0cy9z
dHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtc3VwZXJwcm9wZXJ0eS5qczogQWRkZWQu
CisKIDIwMTUtMTItMDUgQWxla3NhbmRyIFNrYWNoa292ICAgPGdza2FjaGtvdkBnbWFpbC5jb20+
CiAKICAgICAgICAgW0VTNl0gInN1cGVyIiBhbmQgInRoaXMiIHNob3VsZCBiZSBsZXhpY2FsbHkg
Ym91bmQgaW5zaWRlIGFuIGFycm93IGZ1bmN0aW9uIGFuZCBzaG91bGQgbGl2ZSBpbiBhIEpTTGV4
aWNhbEVudmlyb25tZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRp
bnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlu
cy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCmluZGV4IGI4MDBmNTEzZTlmYWFhNTRhMjQyZDVlMTI0
MzdmNTBjN2Y5ZDU2ZDguLmE2YmNmNzQ0MzZmZjljODJlMzk5NDZlYWZhOTRjZTAxMzczMWNiNzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0
YWJsZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhl
Y3V0YWJsZXMuY3BwCkBAIC0xMTUsNyArMTE1LDcgQEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUqIGNyZWF0ZUV4ZWN1dGFibGVJbnRlcm5hbChWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHMK
ICAgICB9CiAgICAgbWV0YWRhdGEtPm92ZXJyaWRlTmFtZShuYW1lKTsKICAgICBWYXJpYWJsZUVu
dmlyb25tZW50IGR1bW15VERaVmFyaWFibGVzOwotICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3Jl
YXRlKCZ2bSwgc291cmNlLCBtZXRhZGF0YSwga2luZCwgY29uc3RydWN0QWJpbGl0eSwgR2VuZXJh
dG9yVGhpc01vZGU6Ok5vbkVtcHR5LCBkdW1teVREWlZhcmlhYmxlcywgZmFsc2UsIFdURjo6bW92
ZShzb3VyY2VPdmVycmlkZSkpOworICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5j
dGlvbkV4ZWN1dGFibGUgPSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKCZ2bSwg
c291cmNlLCBtZXRhZGF0YSwga2luZCwgY29uc3RydWN0QWJpbGl0eSwgR2VuZXJhdG9yVGhpc01v
ZGU6Ok5vbkVtcHR5LCBkdW1teVREWlZhcmlhYmxlcywgRGVyaXZlZENvbnRleHRUeXBlOjpOb25l
LCBXVEY6Om1vdmUoc291cmNlT3ZlcnJpZGUpKTsKICAgICBmdW5jdGlvbkV4ZWN1dGFibGUtPnNl
dE5hbWVWYWx1ZSh2bSwganNTdHJpbmcoJnZtLCBuYW1lLnN0cmluZygpKSk7CiAgICAgcmV0dXJu
IGZ1bmN0aW9uRXhlY3V0YWJsZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9FdmFsQ29kZUNhY2hlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvRXZhbENvZGVDYWNoZS5oCmluZGV4IDg2OTEzMTY5MmE5MzRhNzVhNjQzY2U1NWY5ZTBkOTc3
YTg1YWMxMGEuLjY2MzQ5MGFmYjQ1MjQ1YzM2ZmYwNWQ0N2VmODgxM2RhNWE1OWY1MDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FdmFsQ29kZUNhY2hlLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V2YWxDb2RlQ2FjaGUuaApAQCAtNTUs
MTEgKzU1LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIEV2YWxFeGVjdXRhYmxlKiBnZXRTbG93KEV4
ZWNTdGF0ZSogZXhlYywgSlNDZWxsKiBvd25lciwgYm9vbCBpblN0cmljdENvbnRleHQsIFRoaXNU
RFpNb2RlIHRoaXNURFpNb2RlLCBib29sIGlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCwgYm9v
bCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBjb25zdCBTb3VyY2VDb2RlJiBldmFsU291cmNlLCBK
U1Njb3BlKiBzY29wZSkKKyAgICAgICAgRXZhbEV4ZWN1dGFibGUqIGdldFNsb3coRXhlY1N0YXRl
KiBleGVjLCBKU0NlbGwqIG93bmVyLCBib29sIGluU3RyaWN0Q29udGV4dCwgVGhpc1REWk1vZGUg
dGhpc1REWk1vZGUsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wg
aXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgY29uc3QgU291cmNlQ29kZSYgZXZhbFNvdXJjZSwgSlNT
Y29wZSogc2NvcGUpCiAgICAgICAgIHsKICAgICAgICAgICAgIFZhcmlhYmxlRW52aXJvbm1lbnQg
dmFyaWFibGVzVW5kZXJURFo7CiAgICAgICAgICAgICBKU1Njb3BlOjpjb2xsZWN0VmFyaWFibGVz
VW5kZXJURFooc2NvcGUsIHZhcmlhYmxlc1VuZGVyVERaKTsKLSAgICAgICAgICAgIEV2YWxFeGVj
dXRhYmxlKiBldmFsRXhlY3V0YWJsZSA9IEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoZXhlYywgZXZh
bFNvdXJjZSwgaW5TdHJpY3RDb250ZXh0LCB0aGlzVERaTW9kZSwgaXNEZXJpdmVkQ29uc3RydWN0
b3JDb250ZXh0LCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCAmdmFyaWFibGVzVW5kZXJURFopOwor
ICAgICAgICAgICAgRXZhbEV4ZWN1dGFibGUqIGV2YWxFeGVjdXRhYmxlID0gRXZhbEV4ZWN1dGFi
bGU6OmNyZWF0ZShleGVjLCBldmFsU291cmNlLCBpblN0cmljdENvbnRleHQsIHRoaXNURFpNb2Rl
LCBkZXJpdmVkQ29udGV4dFR5cGUsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsICZ2YXJpYWJsZXNV
bmRlclREWik7CiAKICAgICAgICAgICAgIGlmICghZXZhbEV4ZWN1dGFibGUpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9FeGVjdXRhYmxlSW5mby5oCmluZGV4IGFhYzM5MDRmZjAzNGM5ZTYwNzE0ZmU5OTM2NTQ5ZmU5
NWQ0YTExZTUuLmY2OTQyYzA4MGJjZDU4NTM3OTk3NWVlNGYxMTNmMGZkYWVlZWUzZDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCkBAIC0z
MCwxMSArMzAsMTMgQEAKICNpbmNsdWRlICJQYXJzZXJNb2Rlcy5oIgogCiBuYW1lc3BhY2UgSlND
IHsKKyAgICAKK2VudW0gY2xhc3MgRGVyaXZlZENvbnRleHRUeXBlIHsgTm9uZSwgRGVyaXZlZENv
bnN0cnVjdG9yQ29udGV4dCwgRGVyaXZlZE1ldGhvZENvbnRleHQgfTsKIAogLy8gRklYTUU6IFRo
ZXNlIGZsYWdzLCBQYXJzZXJNb2RlcyBhbmQgcHJvcGFnYXRpb24gdG8gWFhYQ29kZUJsb2NrcyBz
aG91bGQgYmUgcmVvcmdhbml6ZWQuCiAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTUxNTQ3CiBzdHJ1Y3QgRXhlY3V0YWJsZUluZm8gewotICAgIEV4ZWN1dGFibGVJ
bmZvKGJvb2wgbmVlZHNBY3RpdmF0aW9uLCBib29sIHVzZXNFdmFsLCBib29sIGlzU3RyaWN0TW9k
ZSwgYm9vbCBpc0NvbnN0cnVjdG9yLCBib29sIGlzQnVpbHRpbkZ1bmN0aW9uLCBDb25zdHJ1Y3Rv
cktpbmQgY29uc3RydWN0b3JLaW5kLCBHZW5lcmF0b3JUaGlzTW9kZSBnZW5lcmF0b3JUaGlzTW9k
ZSwgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZywgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSwg
Ym9vbCBpc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29u
dGV4dCkKKyAgICBFeGVjdXRhYmxlSW5mbyhib29sIG5lZWRzQWN0aXZhdGlvbiwgYm9vbCB1c2Vz
RXZhbCwgYm9vbCBpc1N0cmljdE1vZGUsIGJvb2wgaXNDb25zdHJ1Y3RvciwgYm9vbCBpc0J1aWx0
aW5GdW5jdGlvbiwgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgR2VuZXJhdG9yVGhp
c01vZGUgZ2VuZXJhdG9yVGhpc01vZGUsIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcsIFNvdXJj
ZVBhcnNlTW9kZSBwYXJzZU1vZGUsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5
cGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgYm9vbCBpc0NsYXNzQ29udGV4dCkKICAg
ICAgICAgOiBtX25lZWRzQWN0aXZhdGlvbihuZWVkc0FjdGl2YXRpb24pCiAgICAgICAgICwgbV91
c2VzRXZhbCh1c2VzRXZhbCkKICAgICAgICAgLCBtX2lzU3RyaWN0TW9kZShpc1N0cmljdE1vZGUp
CkBAIC00NCw4ICs0Niw5IEBAIHN0cnVjdCBFeGVjdXRhYmxlSW5mbyB7CiAgICAgICAgICwgbV9j
b25zdHJ1Y3RvcktpbmQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvbnN0cnVjdG9yS2luZCkpCiAg
ICAgICAgICwgbV9zdXBlckJpbmRpbmcoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN1cGVyQmluZGlu
ZykpCiAgICAgICAgICwgbV9wYXJzZU1vZGUocGFyc2VNb2RlKQotICAgICAgICAsIG1faXNEZXJp
dmVkQ29uc3RydWN0b3JDb250ZXh0KGlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCkKKyAgICAg
ICAgLCBtX2Rlcml2ZWRDb250ZXh0VHlwZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZGVyaXZlZENv
bnRleHRUeXBlKSkKICAgICAgICAgLCBtX2lzQXJyb3dGdW5jdGlvbkNvbnRleHQoaXNBcnJvd0Z1
bmN0aW9uQ29udGV4dCkKKyAgICAgICAgLCBtX2lzQ2xhc3NDb250ZXh0KGlzQ2xhc3NDb250ZXh0
KQogICAgIHsKICAgICAgICAgQVNTRVJUKG1fY29uc3RydWN0b3JLaW5kID09IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihjb25zdHJ1Y3RvcktpbmQpKTsKICAgICAgICAgQVNTRVJUKG1fc3VwZXJCaW5k
aW5nID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdXBlckJpbmRpbmcpKTsKQEAgLTYxLDggKzY0
LDkgQEAgc3RydWN0IEV4ZWN1dGFibGVJbmZvIHsKICAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3Ry
dWN0b3JLaW5kKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29uc3RydWN0b3JLaW5kPiht
X2NvbnN0cnVjdG9yS2luZCk7IH0KICAgICBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nKCkgY29u
c3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8U3VwZXJCaW5kaW5nPihtX3N1cGVyQmluZGluZyk7IH0K
ICAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9wYXJzZU1v
ZGU7IH0KLSAgICBib29sIGlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCgpIGNvbnN0IHsgcmV0
dXJuIG1faXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0OyB9CisgICAgRGVyaXZlZENvbnRleHRU
eXBlIGRlcml2ZWRDb250ZXh0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PERlcml2
ZWRDb250ZXh0VHlwZT4obV9kZXJpdmVkQ29udGV4dFR5cGUpOyB9CiAgICAgYm9vbCBpc0Fycm93
RnVuY3Rpb25Db250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9pc0Fycm93RnVuY3Rpb25Db250ZXh0
OyB9CisgICAgYm9vbCBpc0NsYXNzQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1faXNDbGFzc0Nv
bnRleHQ7IH0KIAogcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX25lZWRzQWN0aXZhdGlvbiA6IDE7
CkBAIC03NCw4ICs3OCw5IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3Rvcktp
bmQgOiAyOwogICAgIHVuc2lnbmVkIG1fc3VwZXJCaW5kaW5nIDogMTsKICAgICBTb3VyY2VQYXJz
ZU1vZGUgbV9wYXJzZU1vZGU7Ci0gICAgdW5zaWduZWQgbV9pc0Rlcml2ZWRDb25zdHJ1Y3RvckNv
bnRleHQgOiAxOworICAgIHVuc2lnbmVkIG1fZGVyaXZlZENvbnRleHRUeXBlIDogMjsKICAgICB1
bnNpZ25lZCBtX2lzQXJyb3dGdW5jdGlvbkNvbnRleHQgOiAxOworICAgIHVuc2lnbmVkIG1faXND
bGFzc0NvbnRleHQgOiAxOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAppbmRleCA4
YTdkMDI2NzkzZDQ2YjgyNWZiZjNlZjc2NTJhNTQzODM5NjUwNDYzLi41MmZjM2E3MTcxZTBhMmVj
MTc3Yjg2ZDk3NjQzMWYzYTk3ZTg0NWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKQEAgLTY3LDggKzY3LDkgQEAgVW5s
aW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKFZNKiB2bSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIENvZGVUeXBlIGNvZGUKICAgICAsIG1fY29uc3RydWN0b3JLaW5kKHN0YXRpY19jYXN0
PHVuc2lnbmVkPihpbmZvLmNvbnN0cnVjdG9yS2luZCgpKSkKICAgICAsIG1fZ2VuZXJhdG9yVGhp
c01vZGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluZm8uZ2VuZXJhdG9yVGhpc01vZGUoKSkpCiAg
ICAgLCBtX3N1cGVyQmluZGluZyhzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5mby5zdXBlckJpbmRp
bmcoKSkpCi0gICAgLCBtX2lzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dChpbmZvLmlzRGVyaXZl
ZENvbnN0cnVjdG9yQ29udGV4dCgpKQorICAgICwgbV9kZXJpdmVkQ29udGV4dFR5cGUoc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KGluZm8uZGVyaXZlZENvbnRleHRUeXBlKCkpKQogICAgICwgbV9pc0Fy
cm93RnVuY3Rpb25Db250ZXh0KGluZm8uaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCgpKQorICAgICwg
bV9pc0NsYXNzQ29udGV4dChpbmZvLmlzQ2xhc3NDb250ZXh0KCkpCiAgICAgLCBtX2ZpcnN0TGlu
ZSgwKQogICAgICwgbV9saW5lQ291bnQoMCkKICAgICAsIG1fZW5kQ29sdW1uKFVJTlRfTUFYKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJs
b2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2su
aAppbmRleCBiZWM2ZTA4NjExZGM1ZjA5NGY3OWFiODVjMTMzNWE5MTFiOWY5MTFiLi4xMmJhNDNh
ZWVmNDVlNzlhZTNkMGZjYzVkMDJlMjE1YjU4NjlhYzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaApAQCAtMTIwLDggKzEyMCw5
IEBAIHB1YmxpYzoKICAgICBib29sIHVzZXNFdmFsKCkgY29uc3QgeyByZXR1cm4gbV91c2VzRXZh
bDsgfQogICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUoKSBjb25zdCB7IHJldHVybiBtX3Bh
cnNlTW9kZTsgfQogICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9w
YXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZTsgfQotICAgIGJv
b2wgaXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9pc0Rlcml2
ZWRDb25zdHJ1Y3RvckNvbnRleHQ7IH0KKyAgICBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENv
bnRleHRUeXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RGVyaXZlZENvbnRleHRUeXBl
PihtX2Rlcml2ZWRDb250ZXh0VHlwZSk7IH0KICAgICBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRl
eHQoKSBjb25zdCB7IHJldHVybiBtX2lzQXJyb3dGdW5jdGlvbkNvbnRleHQ7IH0KKyAgICBib29s
IGlzQ2xhc3NDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9pc0NsYXNzQ29udGV4dDsgfQogCiAg
ICAgYm9vbCBuZWVkc0Z1bGxTY29wZUNoYWluKCkgY29uc3QgeyByZXR1cm4gbV9uZWVkc0Z1bGxT
Y29wZUNoYWluOyB9CiAKQEAgLTM5Niw5ICszOTcsOSBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVk
IG1fY29uc3RydWN0b3JLaW5kIDogMjsKICAgICB1bnNpZ25lZCBtX2dlbmVyYXRvclRoaXNNb2Rl
IDogMTsKICAgICB1bnNpZ25lZCBtX3N1cGVyQmluZGluZyA6IDE7Ci0gICAgdW5zaWduZWQgbV9p
c0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQgOiAxOworICAgIHVuc2lnbmVkIG1fZGVyaXZlZENv
bnRleHRUeXBlIDogMjsKICAgICB1bnNpZ25lZCBtX2lzQXJyb3dGdW5jdGlvbkNvbnRleHQgOiAx
OwotCisgICAgdW5zaWduZWQgbV9pc0NsYXNzQ29udGV4dCA6IDE7CiAgICAgdW5zaWduZWQgbV9m
aXJzdExpbmU7CiAgICAgdW5zaWduZWQgbV9saW5lQ291bnQ7CiAgICAgdW5zaWduZWQgbV9lbmRD
b2x1bW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAppbmRleCAwYzdmNDUyNzFhMjc2MjIwNjI5
ODUyYjA2MGY1ZTdmYjA2YjZjMDRiLi4zMTM3NzViODFjNmYxNTViNzM1MDQ1NTA0NmI2MjAyODEx
NDFjNDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKQEAgLTY1LDkgKzY1LDEyIEBAIHN0
YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZVVubGlua2VkRnVuY3Rpb25D
b2RlQmxvY2soCiAKICAgICBmdW5jdGlvbi0+ZmluaXNoUGFyc2luZyhleGVjdXRhYmxlLT5uYW1l
KCksIGV4ZWN1dGFibGUtPmZ1bmN0aW9uTW9kZSgpKTsKICAgICBleGVjdXRhYmxlLT5yZWNvcmRQ
YXJzZShmdW5jdGlvbi0+ZmVhdHVyZXMoKSwgZnVuY3Rpb24tPmhhc0NhcHR1cmVkVmFyaWFibGVz
KCkpOwotICAgIAorCisgICAgLy8gdGhpcyBleGVjdXRhYmxlIGlzIHBhcnQgb2YgdGhlIGNsYXNz
CisgICAgYm9vbCBpc0NsYXNzQ29udGV4dCA9IGV4ZWN1dGFibGUtPnN1cGVyQmluZGluZygpID09
IFN1cGVyQmluZGluZzo6TmVlZGVkOworCiAgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayog
cmVzdWx0ID0gVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jazo6Y3JlYXRlKCZ2bSwgRnVuY3Rpb25D
b2RlLAotICAgICAgICBFeGVjdXRhYmxlSW5mbyhmdW5jdGlvbi0+bmVlZHNBY3RpdmF0aW9uKCks
IGZ1bmN0aW9uLT51c2VzRXZhbCgpLCBmdW5jdGlvbi0+aXNTdHJpY3RNb2RlKCksIGtpbmQgPT0g
Q29kZUZvckNvbnN0cnVjdCwgZnVuY3Rpb25LaW5kID09IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9u
LCBleGVjdXRhYmxlLT5jb25zdHJ1Y3RvcktpbmQoKSwgZXhlY3V0YWJsZS0+Z2VuZXJhdG9yVGhp
c01vZGUoKSwgZXhlY3V0YWJsZS0+c3VwZXJCaW5kaW5nKCksIHBhcnNlTW9kZSwgIGV4ZWN1dGFi
bGUtPmlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCgpLCBmYWxzZSkpOworICAgICAgICBFeGVj
dXRhYmxlSW5mbyhmdW5jdGlvbi0+bmVlZHNBY3RpdmF0aW9uKCksIGZ1bmN0aW9uLT51c2VzRXZh
bCgpLCBmdW5jdGlvbi0+aXNTdHJpY3RNb2RlKCksIGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCwg
ZnVuY3Rpb25LaW5kID09IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uLCBleGVjdXRhYmxlLT5jb25z
dHJ1Y3RvcktpbmQoKSwgZXhlY3V0YWJsZS0+Z2VuZXJhdG9yVGhpc01vZGUoKSwgZXhlY3V0YWJs
ZS0+c3VwZXJCaW5kaW5nKCksIHBhcnNlTW9kZSwgZXhlY3V0YWJsZS0+ZGVyaXZlZENvbnRleHRU
eXBlKCksIGZhbHNlLCBpc0NsYXNzQ29udGV4dCkpOwogCiAgICAgYXV0byBnZW5lcmF0b3Ioc3Rk
OjptYWtlX3VuaXF1ZTxCeXRlY29kZUdlbmVyYXRvcj4odm0sIGZ1bmN0aW9uLmdldCgpLCByZXN1
bHQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBleGVjdXRhYmxlLT5wYXJlbnRTY29wZVRE
WlZhcmlhYmxlcygpKSk7CiAgICAgZXJyb3IgPSBnZW5lcmF0b3ItPmdlbmVyYXRlKCk7CkBAIC03
Niw3ICs3OSw3IEBAIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZVVu
bGlua2VkRnVuY3Rpb25Db2RlQmxvY2soCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZNKiB2bSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgUmVmUHRyPFNv
dXJjZVByb3ZpZGVyPiYmIHNvdXJjZU92ZXJyaWRlLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbm9k
ZSwgVW5saW5rZWRGdW5jdGlvbktpbmQga2luZCwgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RB
YmlsaXR5LCBHZW5lcmF0b3JUaGlzTW9kZSBnZW5lcmF0b3JUaGlzTW9kZSwgVmFyaWFibGVFbnZp
cm9ubWVudCYgcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIGJvb2wgaXNEZXJpdmVkQ29uc3RydWN0
b3JDb250ZXh0KQorVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlKFZNKiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFNvdXJjZUNvZGUm
IHNvdXJjZSwgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiYmIHNvdXJjZU92ZXJyaWRlLCBGdW5jdGlv
bk1ldGFkYXRhTm9kZSogbm9kZSwgVW5saW5rZWRGdW5jdGlvbktpbmQga2luZCwgQ29uc3RydWN0
QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5LCBHZW5lcmF0b3JUaGlzTW9kZSBnZW5lcmF0b3JUaGlz
TW9kZSwgVmFyaWFibGVFbnZpcm9ubWVudCYgcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIERlcml2
ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUpCiAgICAgOiBCYXNlKCp2bSwgc3RydWN0
dXJlKQogICAgICwgbV9uYW1lKG5vZGUtPmlkZW50KCkpCiAgICAgLCBtX2luZmVycmVkTmFtZShu
b2RlLT5pbmZlcnJlZE5hbWUoKSkKQEAgLTEwMiw3ICsxMDUsNyBAQCBVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0qIHZtLCBTdHJ1Y3R1cmUq
IHN0cnVjdAogICAgICwgbV9mdW5jdGlvbk1vZGUobm9kZS0+ZnVuY3Rpb25Nb2RlKCkpCiAgICAg
LCBtX2dlbmVyYXRvclRoaXNNb2RlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihnZW5lcmF0b3JUaGlz
TW9kZSkpCiAgICAgLCBtX3N1cGVyQmluZGluZyhzdGF0aWNfY2FzdDx1bnNpZ25lZD4obm9kZS0+
c3VwZXJCaW5kaW5nKCkpKQotICAgICwgbV9pc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoaXNE
ZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KQorICAgICwgbV9kZXJpdmVkQ29udGV4dFR5cGUoc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KGRlcml2ZWRDb250ZXh0VHlwZSkpCiB7CiAgICAgQVNTRVJUKG1f
Y29uc3RydWN0b3JLaW5kID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihub2RlLT5jb25zdHJ1Y3Rv
cktpbmQoKSkpOwogICAgIG1fcGFyZW50U2NvcGVURFpWYXJpYWJsZXMuc3dhcChwYXJlbnRTY29w
ZVREWlZhcmlhYmxlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oCmluZGV4IGZhMjFlMzg3MDA3MWJj
MWEwMGZjYTU1ZjI5OTRjNWE3YzlkYWViMGUuLmQ4YmQ4N2I5NzgzYjdlNDRjNzM4YzYwYmJjMmM0
ZGZhMGIwMDIwMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9V
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oCkBAIC0zMCw2ICszMCw3IEBACiAj
aW5jbHVkZSAiQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oIgogI2luY2x1ZGUgIkNvZGVUeXBlLmgi
CiAjaW5jbHVkZSAiQ29uc3RydWN0QWJpbGl0eS5oIgorI2luY2x1ZGUgIkV4ZWN1dGFibGVJbmZv
LmgiCiAjaW5jbHVkZSAiRXhwcmVzc2lvblJhbmdlSW5mby5oIgogI2luY2x1ZGUgIkdlbmVyYXRv
clRoaXNNb2RlLmgiCiAjaW5jbHVkZSAiSGFuZGxlckluZm8uaCIKQEAgLTY2LDEwICs2NywxMCBA
QCBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKICAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IFN0cnVjdHVyZUlz
SW1tb3J0YWw7CiAKLSAgICBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0
ZShWTSogdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVuY3Rpb25NZXRhZGF0YU5vZGUq
IG5vZGUsIFVubGlua2VkRnVuY3Rpb25LaW5kIHVubGlua2VkRnVuY3Rpb25LaW5kLCBDb25zdHJ1
Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHksIEdlbmVyYXRvclRoaXNNb2RlIGdlbmVyYXRvclRo
aXNNb2RlLCBWYXJpYWJsZUVudmlyb25tZW50JiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgYm9v
bCBpc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQsIFJlZlB0cjxTb3VyY2VQcm92aWRlcj4mJiBz
b3VyY2VPdmVycmlkZSA9IG51bGxwdHIpCisgICAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlKiBjcmVhdGUoVk0qIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEZ1bmN0aW9u
TWV0YWRhdGFOb2RlKiBub2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCB1bmxpbmtlZEZ1bmN0aW9u
S2luZCwgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5LCBHZW5lcmF0b3JUaGlzTW9k
ZSBnZW5lcmF0b3JUaGlzTW9kZSwgVmFyaWFibGVFbnZpcm9ubWVudCYgcGFyZW50U2NvcGVURFpW
YXJpYWJsZXMsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIFJlZlB0cjxT
b3VyY2VQcm92aWRlcj4mJiBzb3VyY2VPdmVycmlkZSA9IG51bGxwdHIpCiAgICAgewogICAgICAg
ICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4odm0tPmhlYXApKQotICAgICAg
ICAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUodm0sIHZtLT51bmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZVN0cnVjdHVyZS5nZXQoKSwgc291cmNlLCBXVEY6Om1vdmUoc291cmNlT3ZlcnJp
ZGUpLCBub2RlLCB1bmxpbmtlZEZ1bmN0aW9uS2luZCwgY29uc3RydWN0QWJpbGl0eSwgZ2VuZXJh
dG9yVGhpc01vZGUsIHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBpc0Rlcml2ZWRDb25zdHJ1Y3Rv
ckNvbnRleHQpOworICAgICAgICAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUodm0sIHZt
LT51bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVN0cnVjdHVyZS5nZXQoKSwgc291cmNlLCBXVEY6
Om1vdmUoc291cmNlT3ZlcnJpZGUpLCBub2RlLCB1bmxpbmtlZEZ1bmN0aW9uS2luZCwgY29uc3Ry
dWN0QWJpbGl0eSwgZ2VuZXJhdG9yVGhpc01vZGUsIHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBk
ZXJpdmVkQ29udGV4dFR5cGUpOwogICAgICAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24oKnZt
KTsKICAgICAgICAgcmV0dXJuIGluc3RhbmNlOwogICAgIH0KQEAgLTEzMCwxMSArMTMxLDEyIEBA
IHB1YmxpYzoKICAgICBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiBwYXJlbnRTY29wZVREWlZh
cmlhYmxlcygpIGNvbnN0IHsgcmV0dXJuICZtX3BhcmVudFNjb3BlVERaVmFyaWFibGVzOyB9CiAg
ICAgCiAgICAgYm9vbCBpc0Fycm93RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3BhcnNlTW9k
ZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlOyB9Ci0gICAgYm9vbCBpc0Rl
cml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoKSBjb25zdCB7cmV0dXJuIG1faXNEZXJpdmVkQ29uc3Ry
dWN0b3JDb250ZXh0OyB9CiAKLXByaXZhdGU6Ci0gICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUoVk0qLCBTdHJ1Y3R1cmUqLCBjb25zdCBTb3VyY2VDb2RlJiwgUmVmUHRyPFNvdXJjZVByb3Zp
ZGVyPiYmIHNvdXJjZU92ZXJyaWRlLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSosIFVubGlua2VkRnVu
Y3Rpb25LaW5kLCBDb25zdHJ1Y3RBYmlsaXR5LCBHZW5lcmF0b3JUaGlzTW9kZSwgVmFyaWFibGVF
bnZpcm9ubWVudCYsIGJvb2wgaXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KTsKKyAgICBKU0M6
OkRlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUoKSBjb25zdCB7cmV0dXJuIHN0
YXRpY19jYXN0PEpTQzo6RGVyaXZlZENvbnRleHRUeXBlPihtX2Rlcml2ZWRDb250ZXh0VHlwZSk7
IH0KICAgICAKK3ByaXZhdGU6CisgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0qLCBT
dHJ1Y3R1cmUqLCBjb25zdCBTb3VyY2VDb2RlJiwgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiYmIHNv
dXJjZU92ZXJyaWRlLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSosIFVubGlua2VkRnVuY3Rpb25LaW5k
LCBDb25zdHJ1Y3RBYmlsaXR5LCBHZW5lcmF0b3JUaGlzTW9kZSwgVmFyaWFibGVFbnZpcm9ubWVu
dCYsICBKU0M6OkRlcml2ZWRDb250ZXh0VHlwZSk7CisKICAgICBXcml0ZUJhcnJpZXI8VW5saW5r
ZWRGdW5jdGlvbkNvZGVCbG9jaz4gbV91bmxpbmtlZENvZGVCbG9ja0ZvckNhbGw7CiAgICAgV3Jp
dGVCYXJyaWVyPFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s+IG1fdW5saW5rZWRDb2RlQmxvY2tG
b3JDb25zdHJ1Y3Q7CiAKQEAgLTE2Niw3ICsxNjgsNyBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVk
IG1fZnVuY3Rpb25Nb2RlIDogMTsgLy8gRnVuY3Rpb25Nb2RlCiAgICAgdW5zaWduZWQgbV9nZW5l
cmF0b3JUaGlzTW9kZSA6IDE7CiAgICAgdW5zaWduZWQgbV9zdXBlckJpbmRpbmcgOiAxOwotICAg
IHVuc2lnbmVkIG1faXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0IDogMTsKKyAgICB1bnNpZ25l
ZCBtX2Rlcml2ZWRDb250ZXh0VHlwZTogMjsKIAogcHJvdGVjdGVkOgogICAgIHZvaWQgZmluaXNo
Q3JlYXRpb24oVk0mIHZtKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCBiZjYwMWI1MWY3YWJmMjYzMzg1
ODA3OWFmYmMwNjQyMDg2ZGU5ZTY5Li40NzE2MDFiODNmZTQxMjVhZDRkYzg4OGIyOTFlNTM2ZTY0
NDU2ODRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtMTU3LDcgKzE1Nyw2IEBAIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIFByb2dyYW1Ob2RlKiBwcm9ncmFtTm9k
ZSwgVW5saW5rZWRQCiAgICAgLCBtX3RoaXNSZWdpc3RlcihDYWxsRnJhbWU6OnRoaXNBcmd1bWVu
dE9mZnNldCgpKQogICAgICwgbV9jb2RlVHlwZShHbG9iYWxDb2RlKQogICAgICwgbV92bSgmdm0p
Ci0gICAgLCBtX2lzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dChmYWxzZSkKICAgICAsIG1fbmVl
ZHNUb1VwZGF0ZUFycm93RnVuY3Rpb25Db250ZXh0KHByb2dyYW1Ob2RlLT51c2VzQXJyb3dGdW5j
dGlvbigpIHx8IHByb2dyYW1Ob2RlLT51c2VzRXZhbCgpKQogewogICAgIEFTU0VSVF9VTlVTRUQo
cGFyZW50U2NvcGVURFpWYXJpYWJsZXMsICFwYXJlbnRTY29wZVREWlZhcmlhYmxlcy0+c2l6ZSgp
KTsKQEAgLTIxMSw4ICsyMTAsOCBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0
b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgIC8vIGNv
bXBhdGlibGUgd2l0aCB0YWlsIGNhbGxzICh3ZSBoYXZlIG5vIHdheSBvZiBlbWl0dGluZyBvcF9k
aWRfY2FsbCkuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE0ODgxOQogICAgICwgbV9pblRhaWxQb3NpdGlvbihPcHRpb25zOjp1c2VUYWlsQ2FsbHMoKSAm
JiAhaXNDb25zdHJ1Y3RvcigpICYmIGNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2lu
ZDo6Tm9uZSAmJiBpc1N0cmljdE1vZGUoKSAmJiAhbV9zaG91bGRFbWl0UHJvZmlsZUhvb2tzKQot
ICAgICwgbV9pc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoY29kZUJsb2NrLT5pc0Rlcml2ZWRD
b25zdHJ1Y3RvckNvbnRleHQoKSkKICAgICAsIG1fbmVlZHNUb1VwZGF0ZUFycm93RnVuY3Rpb25D
b250ZXh0KGZ1bmN0aW9uTm9kZS0+dXNlc0Fycm93RnVuY3Rpb24oKSB8fCBmdW5jdGlvbk5vZGUt
PnVzZXNFdmFsKCkpCisgICAgLCBtX2Rlcml2ZWRDb250ZXh0VHlwZShjb2RlQmxvY2stPmRlcml2
ZWRDb250ZXh0VHlwZSgpKQogewogICAgIGZvciAoYXV0byYgY29uc3RhbnRSZWdpc3RlciA6IG1f
bGlua1RpbWVDb25zdGFudFJlZ2lzdGVycykKICAgICAgICAgY29uc3RhbnRSZWdpc3RlciA9IG51
bGxwdHI7CkBAIC01NzMsOSArNTcyLDkgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2Vu
ZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVubGlua2UKICAgICAv
LyBMb2FkaW5nIHx0aGlzfCBpbnNpZGUgYW4gYXJyb3cgZnVuY3Rpb24gbXVzdCBiZSBkb25lIGFm
dGVyIGluaXRpYWxpemVEZWZhdWx0UGFyYW1ldGVyVmFsdWVzQW5kU2V0dXBGdW5jdGlvblNjb3Bl
U3RhY2soKQogICAgIC8vIGJlY2F1c2UgdGhhdCBmdW5jdGlvbiBzZXRzIHVwIHRoZSBTeW1ib2xU
YWJsZSBzdGFjayBhbmQgZW1pdExvYWRUaGlzRnJvbUFycm93RnVuY3Rpb25MZXhpY2FsRW52aXJv
bm1lbnQoKQogICAgIC8vIGNvbnN1bHRzIHRoZSBTeW1ib2xUYWJsZSBzdGFjawotICAgIGlmIChw
YXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSAmJiBmdW5jdGlv
bk5vZGUtPnVzZXNUaGlzKCkpCisgICAgaWYgKFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlv
bk1vZGUgPT0gcGFyc2VNb2RlICYmIChmdW5jdGlvbk5vZGUtPnVzZXNUaGlzKCkgfHwgaXNEZXJp
dmVkQ2xhc3NDb250ZXh0KCkgfHwgaXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KCkpKQogICAg
ICAgICBlbWl0TG9hZFRoaXNGcm9tQXJyb3dGdW5jdGlvbkxleGljYWxFbnZpcm9ubWVudCgpOwot
CisgICAgCiAgICAgaWYgKG5lZWRzVG9VcGRhdGVBcnJvd0Z1bmN0aW9uQ29udGV4dCgpICYmICFj
b2RlQmxvY2stPmlzQXJyb3dGdW5jdGlvbigpKSB7CiAgICAgICAgIGluaXRpYWxpemVBcnJvd0Z1
bmN0aW9uQ29udGV4dFNjb3BlSWZOZWVkZWQoZnVuY3Rpb25TeW1ib2xUYWJsZSk7CiAgICAgICAg
IGVtaXRQdXRUaGlzVG9BcnJvd0Z1bmN0aW9uQ29udGV4dFNjb3BlKCk7CkBAIC01OTUsOCArNTk0
LDggQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRXZhbE5v
ZGUqIGV2YWxOb2RlLCBVbmxpbmtlZEV2YWxDb2QKICAgICAsIG1fY29kZVR5cGUoRXZhbENvZGUp
CiAgICAgLCBtX3ZtKCZ2bSkKICAgICAsIG1fdXNlc05vblN0cmljdEV2YWwoY29kZUJsb2NrLT51
c2VzRXZhbCgpICYmICFjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKQotICAgICwgbV9pc0Rlcml2
ZWRDb25zdHJ1Y3RvckNvbnRleHQoY29kZUJsb2NrLT5pc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRl
eHQoKSkKICAgICAsIG1fbmVlZHNUb1VwZGF0ZUFycm93RnVuY3Rpb25Db250ZXh0KGV2YWxOb2Rl
LT51c2VzQXJyb3dGdW5jdGlvbigpIHx8IGV2YWxOb2RlLT51c2VzRXZhbCgpKQorICAgICwgbV9k
ZXJpdmVkQ29udGV4dFR5cGUoY29kZUJsb2NrLT5kZXJpdmVkQ29udGV4dFR5cGUoKSkKIHsKICAg
ICBmb3IgKGF1dG8mIGNvbnN0YW50UmVnaXN0ZXIgOiBtX2xpbmtUaW1lQ29uc3RhbnRSZWdpc3Rl
cnMpCiAgICAgICAgIGNvbnN0YW50UmVnaXN0ZXIgPSBudWxscHRyOwpAQCAtNjQ2LDcgKzY0NSw2
IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIE1vZHVsZVBy
b2dyYW1Ob2RlKiBtb2R1bGVQcm9ncmFtTm9kCiAgICAgLCBtX2NvZGVUeXBlKE1vZHVsZUNvZGUp
CiAgICAgLCBtX3ZtKCZ2bSkKICAgICAsIG1fdXNlc05vblN0cmljdEV2YWwoZmFsc2UpCi0gICAg
LCBtX2lzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dChmYWxzZSkKICAgICAsIG1fbmVlZHNUb1Vw
ZGF0ZUFycm93RnVuY3Rpb25Db250ZXh0KG1vZHVsZVByb2dyYW1Ob2RlLT51c2VzQXJyb3dGdW5j
dGlvbigpIHx8IG1vZHVsZVByb2dyYW1Ob2RlLT51c2VzRXZhbCgpKQogewogICAgIEFTU0VSVF9V
TlVTRUQocGFyZW50U2NvcGVURFpWYXJpYWJsZXMsICFwYXJlbnRTY29wZVREWlZhcmlhYmxlcy0+
c2l6ZSgpKTsKQEAgLTQwNDksMTQgKzQwNDcsMTQgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdFB1dE5ld1RhcmdldFRvQXJyb3dGdW5jdGlvbkNvbnRleHRTY29wZSgpCiAgICAgCiB2b2lk
IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0RGVyaXZlZENvbnN0cnVjdG9yVG9BcnJvd0Z1bmN0
aW9uQ29udGV4dFNjb3BlKCkKIHsKLSAgICBpZiAoaXNDb25zdHJ1Y3RvcigpICYmIGNvbnN0cnVj
dG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCkgeworICAgIGlmICgoaXNDb25z
dHJ1Y3RvcigpICYmIGNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6RGVyaXZl
ZCkgfHwgKG1fY29kZUJsb2NrLT5pc0NsYXNzQ29udGV4dCgpKSkgewogICAgICAgICBBU1NFUlQo
bV9hcnJvd0Z1bmN0aW9uQ29udGV4dExleGljYWxFbnZpcm9ubWVudFJlZ2lzdGVyKTsKICAgICAg
ICAgICAgIAogICAgICAgICBWYXJpYWJsZSBwcm90b1Njb3BlID0gdmFyaWFibGUocHJvcGVydHlO
YW1lcygpLmRlcml2ZWRDb25zdHJ1Y3RvclByaXZhdGVOYW1lKTsKICAgICAgICAgZW1pdFB1dFRv
U2NvcGUobV9hcnJvd0Z1bmN0aW9uQ29udGV4dExleGljYWxFbnZpcm9ubWVudFJlZ2lzdGVyLCBw
cm90b1Njb3BlLCAmbV9jYWxsZWVSZWdpc3RlciwgRG9Ob3RUaHJvd0lmTm90Rm91bmQsIEluaXRp
YWxpemF0aW9uKTsKICAgICB9CiB9Ci0gICAgCisKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRQdXRUaGlzVG9BcnJvd0Z1bmN0aW9uQ29udGV4dFNjb3BlKCkKIHsKICAgICBBU1NFUlQoaXNE
ZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KCkgfHwgbV9hcnJvd0Z1bmN0aW9uQ29udGV4dExleGlj
YWxFbnZpcm9ubWVudFJlZ2lzdGVyICE9IG51bGxwdHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IDEwMGJj
YjNkZWM0NGVkMmRjNjAwYmVlNTQ5ZjBlZjU3N2M0Mjc2OWYuLmUxMjExZDEwZGNmNjYzN2FkNjdl
N2RiZTU4OWI5MWVlYjE3MTc4NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTI4Miw3ICsyODIsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgY29uc3QgQ29tbW9uSWRlbnRpZmllcnMmIHByb3BlcnR5
TmFtZXMoKSBjb25zdCB7IHJldHVybiAqbV92bS0+cHJvcGVydHlOYW1lczsgfQogCiAgICAgICAg
IGJvb2wgaXNDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5pc0NvbnN0
cnVjdG9yKCk7IH0KLSAgICAgICAgYm9vbCBpc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoKSBj
b25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+aXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KCk7
IH0KKyAgICAgICAgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSgpIGNvbnN0
IHsgcmV0dXJuIG1fZGVyaXZlZENvbnRleHRUeXBlOyB9CiAgICAgICAgIGJvb2wgdXNlc0Fycm93
RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3Njb3BlTm9kZS0+dXNlc0Fycm93RnVuY3Rpb24o
KTsgfQogICAgICAgICBib29sIG5lZWRzVG9VcGRhdGVBcnJvd0Z1bmN0aW9uQ29udGV4dCgpIGNv
bnN0IHsgcmV0dXJuIG1fbmVlZHNUb1VwZGF0ZUFycm93RnVuY3Rpb25Db250ZXh0OyB9CiAgICAg
ICAgIGJvb2wgdXNlc0V2YWwoKSBjb25zdCB7IHJldHVybiBtX3Njb3BlTm9kZS0+dXNlc0V2YWwo
KTsgfQpAQCAtNjk5LDYgKzY5OSwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBp
c0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNCdWlsdGluRnVuY3Rpb247IH0K
IAogICAgICAgICBPcGNvZGVJRCBsYXN0T3Bjb2RlSUQoKSBjb25zdCB7IHJldHVybiBtX2xhc3RP
cGNvZGVJRDsgfQorICAgICAgICAKKyAgICAgICAgYm9vbCBpc0Rlcml2ZWRDb25zdHJ1Y3RvckNv
bnRleHQoKSB7IHJldHVybiBtX2Rlcml2ZWRDb250ZXh0VHlwZSA9PSBEZXJpdmVkQ29udGV4dFR5
cGU6OkRlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQ7IH0KKyAgICAgICAgYm9vbCBpc0Rlcml2ZWRD
bGFzc0NvbnRleHQoKSB7IHJldHVybiBtX2Rlcml2ZWRDb250ZXh0VHlwZSA9PSBEZXJpdmVkQ29u
dGV4dFR5cGU6OkRlcml2ZWRNZXRob2RDb250ZXh0OyB9CisgICAgICAgIGJvb2wgaXNBcnJvd0Z1
bmN0aW9uKCkgeyByZXR1cm4gbV9jb2RlQmxvY2stPmlzQXJyb3dGdW5jdGlvbigpOyB9CiAKICAg
ICAgICAgZW51bSBjbGFzcyBURFpDaGVja09wdGltaXphdGlvbiB7IE9wdGltaXplLCBEb05vdE9w
dGltaXplIH07CiAgICAgICAgIGVudW0gY2xhc3MgTmVzdGVkU2NvcGVUeXBlIHsgSXNOZXN0ZWQs
IElzTm90TmVzdGVkIH07CkBAIC03OTYsNyArODAwLDE4IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICAKICAgICAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIG1ha2VGdW5jdGlvbihG
dW5jdGlvbk1ldGFkYXRhTm9kZSogbWV0YWRhdGEpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGJv
b2wgbmV3aXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0ID0gY29uc3RydWN0b3JLaW5kKCkgPT0g
Q29uc3RydWN0b3JLaW5kOjpEZXJpdmVkIHx8IChtX2lzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4
dCAmJiBtZXRhZGF0YS0+cGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0
aW9uTW9kZSk7CisgICAgICAgICAgICBEZXJpdmVkQ29udGV4dFR5cGUgbmV3RGVyaXZlZENvbnRl
eHRUeXBlID0gRGVyaXZlZENvbnRleHRUeXBlOjpOb25lOworCisgICAgICAgICAgICBpZiAobWV0
YWRhdGEtPnBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGUp
IHsKKyAgICAgICAgICAgICAgICBib29sIG5ld2lzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCA9
IGNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCB8fCAoZGVyaXZl
ZENvbnRleHRUeXBlKCkgPT0gRGVyaXZlZENvbnRleHRUeXBlOjpEZXJpdmVkQ29uc3RydWN0b3JD
b250ZXh0KTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlmIChuZXdpc0Rlcml2ZWRD
b25zdHJ1Y3RvckNvbnRleHQpCisgICAgICAgICAgICAgICAgICAgIG5ld0Rlcml2ZWRDb250ZXh0
VHlwZSA9IERlcml2ZWRDb250ZXh0VHlwZTo6RGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dDsKKyAg
ICAgICAgICAgICAgICBlbHNlICB7CisgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNBcnJvd0Z1
bmN0aW9uSW5DbGFzc0NvbnRleHQgPSBtX2NvZGVCbG9jay0+aXNDbGFzc0NvbnRleHQoKSB8fCAo
bV9jb2RlQmxvY2stPmlzQXJyb3dGdW5jdGlvbigpICYmIG1fZGVyaXZlZENvbnRleHRUeXBlID09
IERlcml2ZWRDb250ZXh0VHlwZTo6RGVyaXZlZE1ldGhvZENvbnRleHQpOworICAgICAgICAgICAg
ICAgICAgICBuZXdEZXJpdmVkQ29udGV4dFR5cGUgPSBpc0Fycm93RnVuY3Rpb25JbkNsYXNzQ29u
dGV4dCA/IERlcml2ZWRDb250ZXh0VHlwZTo6RGVyaXZlZE1ldGhvZENvbnRleHQgOiBEZXJpdmVk
Q29udGV4dFR5cGU6Ok5vbmU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQogCiAg
ICAgICAgICAgICBWYXJpYWJsZUVudmlyb25tZW50IHZhcmlhYmxlc1VuZGVyVERaOwogICAgICAg
ICAgICAgZ2V0VmFyaWFibGVzVW5kZXJURFoodmFyaWFibGVzVW5kZXJURFopOwpAQCAtODE2LDcg
KzgzMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgaWYgKHBhcnNlTW9kZSA9PSBT
b3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlICYmIGlzQ29uc3RydWN0b3IoKSkKICAg
ICAgICAgICAgICAgICBnZW5lcmF0b3JUaGlzTW9kZSA9IEdlbmVyYXRvclRoaXNNb2RlOjpFbXB0
eTsKIAotICAgICAgICAgICAgcmV0dXJuIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVh
dGUobV92bSwgbV9zY29wZU5vZGUtPnNvdXJjZSgpLCBtZXRhZGF0YSwgaXNCdWlsdGluRnVuY3Rp
b24oKSA/IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uIDogVW5saW5rZWROb3JtYWxGdW5jdGlvbiwg
Y29uc3RydWN0QWJpbGl0eSwgZ2VuZXJhdG9yVGhpc01vZGUsIHZhcmlhYmxlc1VuZGVyVERaLCBu
ZXdpc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQpOworICAgICAgICAgICAgcmV0dXJuIFVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUobV92bSwgbV9zY29wZU5vZGUtPnNvdXJjZSgp
LCBtZXRhZGF0YSwgaXNCdWlsdGluRnVuY3Rpb24oKSA/IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9u
IDogVW5saW5rZWROb3JtYWxGdW5jdGlvbiwgY29uc3RydWN0QWJpbGl0eSwgZ2VuZXJhdG9yVGhp
c01vZGUsIHZhcmlhYmxlc1VuZGVyVERaLCBuZXdEZXJpdmVkQ29udGV4dFR5cGUpOwogICAgICAg
ICB9CiAKICAgICAgICAgdm9pZCBnZXRWYXJpYWJsZXNVbmRlclREWihWYXJpYWJsZUVudmlyb25t
ZW50Jik7CkBAIC05MjYsOSArOTQxLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wg
bV9pc0J1aWx0aW5GdW5jdGlvbiB7IGZhbHNlIH07CiAgICAgICAgIGJvb2wgbV91c2VzTm9uU3Ry
aWN0RXZhbCB7IGZhbHNlIH07CiAgICAgICAgIGJvb2wgbV9pblRhaWxQb3NpdGlvbiB7IGZhbHNl
IH07Ci0gICAgICAgIGJvb2wgbV9pc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQgeyBmYWxzZSB9
OwogICAgICAgICBib29sIG1fbmVlZHNUb1VwZGF0ZUFycm93RnVuY3Rpb25Db250ZXh0OwogICAg
ICAgICBib29sIG1faXNOZXdUYXJnZXRMb2FkZWRJbkFycm93RnVuY3Rpb24geyBmYWxzZSB9Owor
ICAgICAgICBEZXJpdmVkQ29udGV4dFR5cGUgbV9kZXJpdmVkQ29udGV4dFR5cGUgeyBEZXJpdmVk
Q29udGV4dFR5cGU6Ok5vbmUgfTsKICAgICB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggNGFkMDc5NTRiMmY1
YzhhNTk1Yzg4MzU4Y2E1MDEwMTAzMjlkNDMzOC4uZjQwZWUwODI2ZTJjNDUxMjA3OTdjMmEzZTBm
OTJlMTQ3YWJmZTZlMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtMTczLDEyICsxNzMsMTYgQEAgUmVnaXN0ZXJJRCog
U3VwZXJOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVn
aXN0ZXJJRCogZHMKIAogICAgIFJlZ2lzdGVySUQgY2FsbGVlOwogICAgIGNhbGxlZS5zZXRJbmRl
eChKU1N0YWNrOjpDYWxsZWUpOwotCiAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0R2V0QnlJZChn
ZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QpLCAmY2FsbGVlLCBnZW5lcmF0b3IucHJvcGVy
dHlOYW1lcygpLnVuZGVyc2NvcmVQcm90byk7CiB9CiAKIHN0YXRpYyBSZWdpc3RlcklEKiBlbWl0
SG9tZU9iamVjdEZvckNhbGxlZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yKQogeworICAg
IGlmIChnZW5lcmF0b3IuaXNEZXJpdmVkQ2xhc3NDb250ZXh0KCkgfHwgZ2VuZXJhdG9yLmlzRGVy
aXZlZENvbnN0cnVjdG9yQ29udGV4dCgpKSB7CisgICAgICAgIFJlZ2lzdGVySUQqIHNjb3BlID0g
Z2VuZXJhdG9yLmVtaXRMb2FkRGVyaXZlZENvbnN0cnVjdG9yRnJvbUFycm93RnVuY3Rpb25MZXhp
Y2FsRW52aXJvbm1lbnQoKTsgICAgCisgICAgICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdEdldEJ5
SWQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBzY29wZSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFt
ZXMoKS5ob21lT2JqZWN0UHJpdmF0ZU5hbWUpOworICAgIH0KKwogICAgIFJlZ2lzdGVySUQgY2Fs
bGVlOwogICAgIGNhbGxlZS5zZXRJbmRleChKU1N0YWNrOjpDYWxsZWUpOwogICAgIHJldHVybiBn
ZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCAmY2FsbGVlLCBn
ZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmhvbWVPYmplY3RQcml2YXRlTmFtZSk7CkBAIC03NDks
OCArNzUzLDggQEAgUmVnaXN0ZXJJRCogRnVuY3Rpb25DYWxsVmFsdWVOb2RlOjplbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmUKICAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gcmV0dXJuVmFsdWUgPSBnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QsIGZ1bmMuZ2V0
KCkpOwogICAgIENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7
CiAgICAgaWYgKG1fZXhwci0+aXNTdXBlck5vZGUoKSkgewotICAgICAgICBBU1NFUlQoZ2VuZXJh
dG9yLmlzQ29uc3RydWN0b3IoKSB8fCBnZW5lcmF0b3IuaXNEZXJpdmVkQ29uc3RydWN0b3JDb250
ZXh0KCkpOwotICAgICAgICBBU1NFUlQoZ2VuZXJhdG9yLmNvbnN0cnVjdG9yS2luZCgpID09IENv
bnN0cnVjdG9yS2luZDo6RGVyaXZlZCB8fCBnZW5lcmF0b3IuaXNEZXJpdmVkQ29uc3RydWN0b3JD
b250ZXh0KCkpOworICAgICAgICBBU1NFUlQoZ2VuZXJhdG9yLmlzQ29uc3RydWN0b3IoKSB8fCBn
ZW5lcmF0b3IuZGVyaXZlZENvbnRleHRUeXBlKCkgPT0gRGVyaXZlZENvbnRleHRUeXBlOjpEZXJp
dmVkQ29uc3RydWN0b3JDb250ZXh0KTsKKyAgICAgICAgQVNTRVJUKGdlbmVyYXRvci5jb25zdHJ1
Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQgfHwgZ2VuZXJhdG9yLmRlcml2
ZWRDb250ZXh0VHlwZSgpID09IERlcml2ZWRDb250ZXh0VHlwZTo6RGVyaXZlZENvbnN0cnVjdG9y
Q29udGV4dCk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0TW92ZShjYWxsQXJndW1lbnRzLnRoaXNS
ZWdpc3RlcigpLCBnZW5lcmF0b3IubmV3VGFyZ2V0KCkpOwogICAgICAgICBSZWdpc3RlcklEKiBy
ZXQgPSBnZW5lcmF0b3IuZW1pdENvbnN0cnVjdChyZXR1cm5WYWx1ZS5nZXQoKSwgZnVuYy5nZXQo
KSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0
KCksIGRpdm90RW5kKCkpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdE1vdmUoZ2VuZXJhdG9yLnRo
aXNSZWdpc3RlcigpLCByZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rl
YnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1
Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAKaW5kZXggZTgxMmVlMDU2ODczZWZmODllODAxOTkw
M2I5NzE0ZjgwNmViZDE0Ni4uZjQ3OTRmZDQ1NjNlMGI5ZjJhYzg1NThiMzhiM2Y5ZWQzMzRhNTM5
NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2Fs
bEZyYW1lLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJD
YWxsRnJhbWUuY3BwCkBAIC0xOTIsNyArMTkyLDcgQEAgSlNWYWx1ZSBEZWJ1Z2dlckNhbGxGcmFt
ZTo6ZXZhbHVhdGUoY29uc3QgU3RyaW5nJiBzY3JpcHQsIE5ha2VkUHRyPEV4Y2VwdGlvbj4mIGUK
ICAgICBWYXJpYWJsZUVudmlyb25tZW50IHZhcmlhYmxlc1VuZGVyVERaOwogICAgIEpTU2NvcGU6
OmNvbGxlY3RWYXJpYWJsZXNVbmRlclREWihzY29wZSgpLT5qc1Njb3BlKCksIHZhcmlhYmxlc1Vu
ZGVyVERaKTsKIAotICAgIEV2YWxFeGVjdXRhYmxlKiBldmFsID0gRXZhbEV4ZWN1dGFibGU6OmNy
ZWF0ZShjYWxsRnJhbWUsIG1ha2VTb3VyY2Uoc2NyaXB0KSwgY29kZUJsb2NrLmlzU3RyaWN0TW9k
ZSgpLCB0aGlzVERaTW9kZSwgY29kZUJsb2NrLnVubGlua2VkQ29kZUJsb2NrKCktPmlzRGVyaXZl
ZENvbnN0cnVjdG9yQ29udGV4dCgpLCBjb2RlQmxvY2sudW5saW5rZWRDb2RlQmxvY2soKS0+aXNB
cnJvd0Z1bmN0aW9uKCksICZ2YXJpYWJsZXNVbmRlclREWik7CisgICAgRXZhbEV4ZWN1dGFibGUq
IGV2YWwgPSBFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKGNhbGxGcmFtZSwgbWFrZVNvdXJjZShzY3Jp
cHQpLCBjb2RlQmxvY2suaXNTdHJpY3RNb2RlKCksIHRoaXNURFpNb2RlLCBjb2RlQmxvY2sudW5s
aW5rZWRDb2RlQmxvY2soKS0+ZGVyaXZlZENvbnRleHRUeXBlKCksIGNvZGVCbG9jay51bmxpbmtl
ZENvZGVCbG9jaygpLT5pc0Fycm93RnVuY3Rpb24oKSwgJnZhcmlhYmxlc1VuZGVyVERaKTsKICAg
ICBpZiAodm0uZXhjZXB0aW9uKCkpIHsKICAgICAgICAgZXhjZXB0aW9uID0gdm0uZXhjZXB0aW9u
KCk7CiAgICAgICAgIHZtLmNsZWFyRXhjZXB0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAppbmRleCBmZTAyYzQxYjRjMDgzY2Zj
M2RhODZmYzE1ZmUzNmJkMmIzMGYyM2I2Li40Yzg2YzYxYmI5NzIxMjg0OTk2ODM2NDcxZDA0ZjUz
NjQ1ZmJiZTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
SW50ZXJwcmV0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9J
bnRlcnByZXRlci5jcHAKQEAgLTE4NSw3ICsxODUsNyBAQCBKU1ZhbHVlIGV2YWwoQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiAgICAgICAgIC8vIElmIHRoZSBsaXRlcmFsIHBhcnNlciBiYWlsZWQsIGl0
IHNob3VsZCBub3QgaGF2ZSB0aHJvd24gZXhjZXB0aW9ucy4KICAgICAgICAgQVNTRVJUKCFjYWxs
RnJhbWUtPnZtKCkuZXhjZXB0aW9uKCkpOwogCi0gICAgICAgIGV2YWwgPSBjYWxsZXJDb2RlQmxv
Y2stPmV2YWxDb2RlQ2FjaGUoKS5nZXRTbG93KGNhbGxGcmFtZSwgY2FsbGVyQ29kZUJsb2NrLCBj
YWxsZXJDb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpLCB0aGlzVERaTW9kZSwgY2FsbGVyQ29kZUJs
b2NrLT51bmxpbmtlZENvZGVCbG9jaygpLT5pc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoKSwg
Y2FsbGVyQ29kZUJsb2NrLT51bmxpbmtlZENvZGVCbG9jaygpLT5pc0Fycm93RnVuY3Rpb24oKSwg
c291cmNlQ29kZSwgY2FsbGVyU2NvcGVDaGFpbik7CisgICAgICAgIGV2YWwgPSBjYWxsZXJDb2Rl
QmxvY2stPmV2YWxDb2RlQ2FjaGUoKS5nZXRTbG93KGNhbGxGcmFtZSwgY2FsbGVyQ29kZUJsb2Nr
LCBjYWxsZXJDb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpLCB0aGlzVERaTW9kZSwgY2FsbGVyQ29k
ZUJsb2NrLT51bmxpbmtlZENvZGVCbG9jaygpLT5kZXJpdmVkQ29udGV4dFR5cGUoKSwgY2FsbGVy
Q29kZUJsb2NrLT51bmxpbmtlZENvZGVCbG9jaygpLT5pc0Fycm93RnVuY3Rpb24oKSwgc291cmNl
Q29kZSwgY2FsbGVyU2NvcGVDaGFpbik7CiAKICAgICAgICAgaWYgKCFldmFsKQogICAgICAgICAg
ICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29kZUNhY2hlLmNwcAppbmRleCBiMTBiMTE0ZWZmNTY0NmMzN2JlNTI5NTUzNmM4OTdhYTEzNGYw
YzZkLi43NDI0MzZkNmFmZmY5MWFjZTBmZDcwNjgzYzJmY2MxYzY4YzNiNWRhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKQEAgLTE4OCw3ICsxODgsOSBA
QCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQ29kZUNhY2hlOjpnZXRGdW5jdGlvbkV4ZWN1
dGFibGVGcm9tR2xvYmFsQ29kZShWTSYgdgogICAgIG1ldGFkYXRhLT5zZXRFbmRQb3NpdGlvbihw
b3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKTsKICAgICAvLyBUaGUgRnVuY3Rpb24gY29uc3RydWN0
b3Igb25seSBoYXMgYWNjZXNzIHRvIGdsb2JhbCB2YXJpYWJsZXMsIHNvIG5vIHZhcmlhYmxlcyB3
aWxsIGJlIHVuZGVyIFREWi4KICAgICBWYXJpYWJsZUVudmlyb25tZW50IGVtcHR5VERaVmFyaWFi
bGVzOwotICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUg
PSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKCZ2bSwgc291cmNlLCBtZXRhZGF0
YSwgVW5saW5rZWROb3JtYWxGdW5jdGlvbiwgQ29uc3RydWN0QWJpbGl0eTo6Q2FuQ29uc3RydWN0
LCBHZW5lcmF0b3JUaGlzTW9kZTo6Tm9uRW1wdHksIGVtcHR5VERaVmFyaWFibGVzLCBmYWxzZSk7
CisKKyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0g
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSgmdm0sIHNvdXJjZSwgbWV0YWRhdGEs
IFVubGlua2VkTm9ybWFsRnVuY3Rpb24sIENvbnN0cnVjdEFiaWxpdHk6OkNhbkNvbnN0cnVjdCwg
R2VuZXJhdG9yVGhpc01vZGU6Ok5vbkVtcHR5LCBlbXB0eVREWlZhcmlhYmxlcywgRGVyaXZlZENv
bnRleHRUeXBlOjpOb25lKTsKKwogICAgIGZ1bmN0aW9uRXhlY3V0YWJsZS0+bV9uYW1lVmFsdWUu
c2V0KHZtLCBmdW5jdGlvbkV4ZWN1dGFibGUsIGpzU3RyaW5nKCZ2bSwgbmFtZS5zdHJpbmcoKSkp
OwogCiAgICAgbV9zb3VyY2VDb2RlLmFkZENhY2hlKGtleSwgU291cmNlQ29kZVZhbHVlKHZtLCBm
dW5jdGlvbkV4ZWN1dGFibGUsIG1fc291cmNlQ29kZS5hZ2UoKSkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAppbmRleCBmNWRmNzdkOTg3YzAzY2JlNjA0
M2E0N2RjZWIzYTkxMzExYmRmMjMwLi45ZTQ3NTE5MmIwOTJhNWY1OWUzYTYzMDMwZDE5YTc4MDJl
MGNiYTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRh
YmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNw
cApAQCAtMTMxLDE0ICsxMzEsMTQgQEAgSW50cmluc2ljIE5hdGl2ZUV4ZWN1dGFibGU6OmludHJp
bnNpYygpIGNvbnN0CiAKIGNvbnN0IENsYXNzSW5mbyBTY3JpcHRFeGVjdXRhYmxlOjpzX2luZm8g
PSB7ICJTY3JpcHRFeGVjdXRhYmxlIiwgJkV4ZWN1dGFibGVCYXNlOjpzX2luZm8sIDAsIENSRUFU
RV9NRVRIT0RfVEFCTEUoU2NyaXB0RXhlY3V0YWJsZSkgfTsKIAotU2NyaXB0RXhlY3V0YWJsZTo6
U2NyaXB0RXhlY3V0YWJsZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgVk0mIHZtLCBjb25zdCBTb3Vy
Y2VDb2RlJiBzb3VyY2UsIGJvb2wgaXNJblN0cmljdENvbnRleHQsIGJvb2wgaXNJbkRlcml2ZWRD
b25zdHJ1Y3RvckNvbnRleHQsIGJvb2wgaXNJbkFycm93RnVuY3Rpb25Db250ZXh0KQorU2NyaXB0
RXhlY3V0YWJsZTo6U2NyaXB0RXhlY3V0YWJsZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgVk0mIHZt
LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGJvb2wgaXNJblN0cmljdENvbnRleHQsIERlcml2
ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNJbkFycm93RnVuY3Rpb25D
b250ZXh0KQogICAgIDogRXhlY3V0YWJsZUJhc2Uodm0sIHN0cnVjdHVyZSwgTlVNX1BBUkFNRVRF
UlNfTk9UX0NPTVBJTEVEKQogICAgICwgbV9zb3VyY2Uoc291cmNlKQogICAgICwgbV9mZWF0dXJl
cyhpc0luU3RyaWN0Q29udGV4dCA/IFN0cmljdE1vZGVGZWF0dXJlIDogMCkKICAgICAsIG1faGFz
Q2FwdHVyZWRWYXJpYWJsZXMoZmFsc2UpCiAgICAgLCBtX25ldmVySW5saW5lKGZhbHNlKQogICAg
ICwgbV9kaWRUcnlUb0VudGVySW5Mb29wKGZhbHNlKQotICAgICwgbV9pc0Rlcml2ZWRDb25zdHJ1
Y3RvckNvbnRleHQoaXNJbkRlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQpCisgICAgLCBtX2Rlcml2
ZWRDb250ZXh0VHlwZShkZXJpdmVkQ29udGV4dFR5cGUpCiAgICAgLCBtX2lzQXJyb3dGdW5jdGlv
bkNvbnRleHQoaXNJbkFycm93RnVuY3Rpb25Db250ZXh0KQogICAgICwgbV9vdmVycmlkZUxpbmVO
dW1iZXIoLTEpCiAgICAgLCBtX2ZpcnN0TGluZSgtMSkKQEAgLTQxNCw3ICs0MTQsNyBAQCBKU09i
amVjdCogU2NyaXB0RXhlY3V0YWJsZTo6cHJlcGFyZUZvckV4ZWN1dGlvbkltcGwoCiAKIGNvbnN0
IENsYXNzSW5mbyBFdmFsRXhlY3V0YWJsZTo6c19pbmZvID0geyAiRXZhbEV4ZWN1dGFibGUiLCAm
U2NyaXB0RXhlY3V0YWJsZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEV2YWxFeGVj
dXRhYmxlKSB9OwogCi1FdmFsRXhlY3V0YWJsZSogRXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgYm9vbCBpc0luU3RyaWN0Q29u
dGV4dCwgVGhpc1REWk1vZGUgdGhpc1REWk1vZGUsIGJvb2wgaXNEZXJpdmVkQ29uc3RydWN0b3JD
b250ZXh0LCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGNvbnN0IFZhcmlhYmxlRW52aXJv
bm1lbnQqIHZhcmlhYmxlc1VuZGVyVERaKQorRXZhbEV4ZWN1dGFibGUqIEV2YWxFeGVjdXRhYmxl
OjpjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGJvb2wg
aXNJblN0cmljdENvbnRleHQsIFRoaXNURFpNb2RlIHRoaXNURFpNb2RlLCBEZXJpdmVkQ29udGV4
dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGNv
bnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqIHZhcmlhYmxlc1VuZGVyVERaKQogewogICAgIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CiAg
ICAgaWYgKCFnbG9iYWxPYmplY3QtPmV2YWxFbmFibGVkKCkpIHsKQEAgLTQyMiw3ICs0MjIsNyBA
QCBFdmFsRXhlY3V0YWJsZSogRXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZQogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAg
ICBFdmFsRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxs
PEV2YWxFeGVjdXRhYmxlPigqZXhlYy0+aGVhcCgpKSkgRXZhbEV4ZWN1dGFibGUoZXhlYywgc291
cmNlLCBpc0luU3RyaWN0Q29udGV4dCwgaXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0LCBpc0Fy
cm93RnVuY3Rpb25Db250ZXh0KTsKKyAgICBFdmFsRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IG5l
dyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEV2YWxFeGVjdXRhYmxlPigqZXhlYy0+aGVhcCgpKSkg
RXZhbEV4ZWN1dGFibGUoZXhlYywgc291cmNlLCBpc0luU3RyaWN0Q29udGV4dCwgZGVyaXZlZENv
bnRleHRUeXBlLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0KTsKICAgICBleGVjdXRhYmxlLT5maW5p
c2hDcmVhdGlvbihleGVjLT52bSgpKTsKIAogICAgIFVubGlua2VkRXZhbENvZGVCbG9jayogdW5s
aW5rZWRFdmFsQ29kZSA9IGdsb2JhbE9iamVjdC0+Y3JlYXRlRXZhbENvZGVCbG9jayhleGVjLCBl
eGVjdXRhYmxlLCB0aGlzVERaTW9kZSwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgdmFyaWFibGVz
VW5kZXJURFopOwpAQCAtNDM0LDggKzQzNCw4IEBAIEV2YWxFeGVjdXRhYmxlKiBFdmFsRXhlY3V0
YWJsZTo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cmNlCiAg
ICAgcmV0dXJuIGV4ZWN1dGFibGU7CiB9CiAKLUV2YWxFeGVjdXRhYmxlOjpFdmFsRXhlY3V0YWJs
ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgYm9vbCBpblN0cmlj
dENvbnRleHQsIGJvb2wgaXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0LCBib29sIGlzQXJyb3dG
dW5jdGlvbkNvbnRleHQpCi0gICAgOiBTY3JpcHRFeGVjdXRhYmxlKGV4ZWMtPnZtKCkuZXZhbEV4
ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIGV4ZWMtPnZtKCksIHNvdXJjZSwgaW5TdHJpY3RDb250
ZXh0LCBpc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQp
CitFdmFsRXhlY3V0YWJsZTo6RXZhbEV4ZWN1dGFibGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBT
b3VyY2VDb2RlJiBzb3VyY2UsIGJvb2wgaW5TdHJpY3RDb250ZXh0LCBEZXJpdmVkQ29udGV4dFR5
cGUgZGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQpCisgICAg
OiBTY3JpcHRFeGVjdXRhYmxlKGV4ZWMtPnZtKCkuZXZhbEV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0
KCksIGV4ZWMtPnZtKCksIHNvdXJjZSwgaW5TdHJpY3RDb250ZXh0LCBkZXJpdmVkQ29udGV4dFR5
cGUsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQpCiB7CiB9CiAKQEAgLTQ0Nyw3ICs0NDcsNyBAQCB2
b2lkIEV2YWxFeGVjdXRhYmxlOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKIGNvbnN0IENsYXNzSW5m
byBQcm9ncmFtRXhlY3V0YWJsZTo6c19pbmZvID0geyAiUHJvZ3JhbUV4ZWN1dGFibGUiLCAmU2Ny
aXB0RXhlY3V0YWJsZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFByb2dyYW1FeGVj
dXRhYmxlKSB9OwogCiBQcm9ncmFtRXhlY3V0YWJsZTo6UHJvZ3JhbUV4ZWN1dGFibGUoRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UpCi0gICAgOiBTY3JpcHRFeGVjdXRh
YmxlKGV4ZWMtPnZtKCkucHJvZ3JhbUV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIGV4ZWMtPnZt
KCksIHNvdXJjZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKKyAgICA6IFNjcmlwdEV4ZWN1dGFibGUo
ZXhlYy0+dm0oKS5wcm9ncmFtRXhlY3V0YWJsZVN0cnVjdHVyZS5nZXQoKSwgZXhlYy0+dm0oKSwg
c291cmNlLCBmYWxzZSwgRGVyaXZlZENvbnRleHRUeXBlOjpOb25lLCBmYWxzZSkKIHsKICAgICBt
X3R5cGVQcm9maWxpbmdTdGFydE9mZnNldCA9IDA7CiAgICAgbV90eXBlUHJvZmlsaW5nRW5kT2Zm
c2V0ID0gc291cmNlLmxlbmd0aCgpIC0gMTsKQEAgLTQ2Myw3ICs0NjMsNyBAQCB2b2lkIFByb2dy
YW1FeGVjdXRhYmxlOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKIGNvbnN0IENsYXNzSW5mbyBNb2R1
bGVQcm9ncmFtRXhlY3V0YWJsZTo6c19pbmZvID0geyAiTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUi
LCAmU2NyaXB0RXhlY3V0YWJsZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKE1vZHVs
ZVByb2dyYW1FeGVjdXRhYmxlKSB9OwogCiBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6TW9kdWxl
UHJvZ3JhbUV4ZWN1dGFibGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3Vy
Y2UpCi0gICAgOiBTY3JpcHRFeGVjdXRhYmxlKGV4ZWMtPnZtKCkubW9kdWxlUHJvZ3JhbUV4ZWN1
dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIGV4ZWMtPnZtKCksIHNvdXJjZSwgZmFsc2UsIGZhbHNlLCBm
YWxzZSkKKyAgICA6IFNjcmlwdEV4ZWN1dGFibGUoZXhlYy0+dm0oKS5tb2R1bGVQcm9ncmFtRXhl
Y3V0YWJsZVN0cnVjdHVyZS5nZXQoKSwgZXhlYy0+dm0oKSwgc291cmNlLCBmYWxzZSwgRGVyaXZl
ZENvbnRleHRUeXBlOjpOb25lLCBmYWxzZSkKIHsKICAgICBtX3R5cGVQcm9maWxpbmdTdGFydE9m
ZnNldCA9IDA7CiAgICAgbV90eXBlUHJvZmlsaW5nRW5kT2Zmc2V0ID0gc291cmNlLmxlbmd0aCgp
IC0gMTsKQEAgLTQ5NSw3ICs0OTUsNyBAQCB2b2lkIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjpk
ZXN0cm95KEpTQ2VsbCogY2VsbCkKIGNvbnN0IENsYXNzSW5mbyBGdW5jdGlvbkV4ZWN1dGFibGU6
OnNfaW5mbyA9IHsgIkZ1bmN0aW9uRXhlY3V0YWJsZSIsICZTY3JpcHRFeGVjdXRhYmxlOjpzX2lu
Zm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoRnVuY3Rpb25FeGVjdXRhYmxlKSB9OwogCiBGdW5j
dGlvbkV4ZWN1dGFibGU6OkZ1bmN0aW9uRXhlY3V0YWJsZShWTSYgdm0sIGNvbnN0IFNvdXJjZUNv
ZGUmIHNvdXJjZSwgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIHVubGlua2VkRXhlY3V0YWJs
ZSwgdW5zaWduZWQgZmlyc3RMaW5lLCB1bnNpZ25lZCBsYXN0TGluZSwgdW5zaWduZWQgc3RhcnRD
b2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbikKLSAgICA6IFNjcmlwdEV4ZWN1dGFibGUodm0uZnVu
Y3Rpb25FeGVjdXRhYmxlU3RydWN0dXJlLmdldCgpLCB2bSwgc291cmNlLCB1bmxpbmtlZEV4ZWN1
dGFibGUtPmlzSW5TdHJpY3RDb250ZXh0KCksIHVubGlua2VkRXhlY3V0YWJsZS0+aXNEZXJpdmVk
Q29uc3RydWN0b3JDb250ZXh0KCksIGZhbHNlKQorICAgIDogU2NyaXB0RXhlY3V0YWJsZSh2bS5m
dW5jdGlvbkV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIHZtLCBzb3VyY2UsIHVubGlua2VkRXhl
Y3V0YWJsZS0+aXNJblN0cmljdENvbnRleHQoKSwgdW5saW5rZWRFeGVjdXRhYmxlLT5kZXJpdmVk
Q29udGV4dFR5cGUoKSwgZmFsc2UpCiAgICAgLCBtX3VubGlua2VkRXhlY3V0YWJsZSh2bSwgdGhp
cywgdW5saW5rZWRFeGVjdXRhYmxlKQogewogICAgIFJFTEVBU0VfQVNTRVJUKCFzb3VyY2UuaXNO
dWxsKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0
YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCmluZGV4
IDg2YTU3NzcwOGY5NWY2OTVlZDMyMjAxNDIxOTM4MjAwYzI3MDBmNWMuLjUwNmEzMWYyNDg2MjMy
ZmY4NTU0MDQ3OWI5ZTU2OWYzOTkyZjQzMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FeGVjdXRhYmxlLmgKQEAgLTM0Niw3ICszNDYsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBu
ZWVkc0FjdGl2YXRpb24oKSBjb25zdCB7IHJldHVybiBtX2hhc0NhcHR1cmVkVmFyaWFibGVzIHx8
IG1fZmVhdHVyZXMgJiAoRXZhbEZlYXR1cmUgfCBXaXRoRmVhdHVyZSk7IH0KICAgICBib29sIGlz
QXJyb3dGdW5jdGlvbkNvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2lzQXJyb3dGdW5jdGlvbkNv
bnRleHQ7IH0KICAgICBib29sIGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmVhdHVy
ZXMgJiBTdHJpY3RNb2RlRmVhdHVyZTsgfQotICAgIGJvb2wgaXNEZXJpdmVkQ29uc3RydWN0b3JD
b250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9pc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQ7IH0K
KyAgICBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlKCkgY29uc3QgeyByZXR1
cm4gbV9kZXJpdmVkQ29udGV4dFR5cGU7IH0KKwogICAgIEVDTUFNb2RlIGVjbWFNb2RlKCkgY29u
c3QgeyByZXR1cm4gaXNTdHJpY3RNb2RlKCkgPyBTdHJpY3RNb2RlIDogTm90U3RyaWN0TW9kZTsg
fQogICAgICAgICAKICAgICB2b2lkIHNldE5ldmVySW5saW5lKGJvb2wgdmFsdWUpIHsgbV9uZXZl
cklubGluZSA9IHZhbHVlOyB9CkBAIC0zOTUsNyArMzk2LDcgQEAgcHJpdmF0ZToKICAgICBKU09i
amVjdCogcHJlcGFyZUZvckV4ZWN1dGlvbkltcGwoRXhlY1N0YXRlKiwgSlNGdW5jdGlvbiosIEpT
U2NvcGUqLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kKTsKIAogcHJvdGVjdGVkOgotICAgIFNjcmlw
dEV4ZWN1dGFibGUoU3RydWN0dXJlKiwgVk0mLCBjb25zdCBTb3VyY2VDb2RlJiwgYm9vbCBpc0lu
U3RyaWN0Q29udGV4dCwgYm9vbCBpc0luRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCwgYm9vbCBp
c0luQXJyb3dGdW5jdGlvbkNvbnRleHQpOworICAgIFNjcmlwdEV4ZWN1dGFibGUoU3RydWN0dXJl
KiwgVk0mLCBjb25zdCBTb3VyY2VDb2RlJiwgYm9vbCBpc0luU3RyaWN0Q29udGV4dCwgRGVyaXZl
ZENvbnRleHRUeXBlLCBib29sIGlzSW5BcnJvd0Z1bmN0aW9uQ29udGV4dCk7CiAKICAgICB2b2lk
IGZpbmlzaENyZWF0aW9uKFZNJiB2bSkKICAgICB7CkBAIC00MTQsNyArNDE1LDcgQEAgcHJvdGVj
dGVkOgogICAgIGJvb2wgbV9uZXZlcklubGluZTsKICAgICBib29sIG1fbmV2ZXJPcHRpbWl6ZSB7
IGZhbHNlIH07CiAgICAgYm9vbCBtX2RpZFRyeVRvRW50ZXJJbkxvb3A7Ci0gICAgYm9vbCBtX2lz
RGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dDsKKyAgICBEZXJpdmVkQ29udGV4dFR5cGUgbV9kZXJp
dmVkQ29udGV4dFR5cGU7CiAgICAgYm9vbCBtX2lzQXJyb3dGdW5jdGlvbkNvbnRleHQ7CiAgICAg
aW50IG1fb3ZlcnJpZGVMaW5lTnVtYmVyOwogICAgIGludCBtX2ZpcnN0TGluZTsKQEAgLTQzOCw3
ICs0MzksNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX2V2YWxDb2RlQmxvY2suZ2V0KCk7
CiAgICAgfQogCi0gICAgc3RhdGljIEV2YWxFeGVjdXRhYmxlKiBjcmVhdGUoRXhlY1N0YXRlKiwg
Y29uc3QgU291cmNlQ29kZSYsIGJvb2wgaXNJblN0cmljdENvbnRleHQsIFRoaXNURFpNb2RlLCBi
b29sIGlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250
ZXh0LCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50Kik7CisgICAgc3RhdGljIEV2YWxFeGVjdXRh
YmxlKiBjcmVhdGUoRXhlY1N0YXRlKiwgY29uc3QgU291cmNlQ29kZSYsIGJvb2wgaXNJblN0cmlj
dENvbnRleHQsIFRoaXNURFpNb2RlLCBEZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNBcnJvd0Z1
bmN0aW9uQ29udGV4dCwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCopOwogCiAgICAgUGFzc1Jl
ZlB0cjxKSVRDb2RlPiBnZW5lcmF0ZWRKSVRDb2RlKCkKICAgICB7CkBAIC00NTIsOCArNDUzLDcg
QEAgcHVibGljOgogICAgICAgICAKICAgICBERUNMQVJFX0lORk87CiAKLQotICAgIEV4ZWN1dGFi
bGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVl
ZHNBY3RpdmF0aW9uKCksIHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2Us
IENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgR2VuZXJhdG9yVGhpc01vZGU6Ok5vbkVtcHR5LCBTdXBl
ckJpbmRpbmc6Ok5vdE5lZWRlZCwgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZSwgaXNEZXJp
dmVkQ29uc3RydWN0b3JDb250ZXh0KCksIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQoKSk7IH0KKyAg
ICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFi
bGVJbmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFs
c2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIEdlbmVyYXRvclRoaXNNb2RlOjpOb25F
bXB0eSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1v
ZGUsIGRlcml2ZWRDb250ZXh0VHlwZSgpLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0KCkgLCBmYWxz
ZSk7IH0KIAogICAgIHVuc2lnbmVkIG51bVZhcmlhYmxlcygpIHsgcmV0dXJuIG1fdW5saW5rZWRF
dmFsQ29kZUJsb2NrLT5udW1WYXJpYWJsZXMoKTsgfQogICAgIHVuc2lnbmVkIG51bWJlck9mRnVu
Y3Rpb25EZWNscygpIHsgcmV0dXJuIG1fdW5saW5rZWRFdmFsQ29kZUJsb2NrLT5udW1iZXJPZkZ1
bmN0aW9uRGVjbHMoKTsgfQpAQCAtNDYxLDcgKzQ2MSw4IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAg
ICAgZnJpZW5kIGNsYXNzIEV4ZWN1dGFibGVCYXNlOwogICAgIGZyaWVuZCBjbGFzcyBTY3JpcHRF
eGVjdXRhYmxlOwotICAgIEV2YWxFeGVjdXRhYmxlKEV4ZWNTdGF0ZSosIGNvbnN0IFNvdXJjZUNv
ZGUmLCBib29sIGluU3RyaWN0Q29udGV4dCwgYm9vbCBpc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRl
eHQsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCk7CisKKyAgICBFdmFsRXhlY3V0YWJsZShF
eGVjU3RhdGUqLCBjb25zdCBTb3VyY2VDb2RlJiwgYm9vbCBpblN0cmljdENvbnRleHQsIERlcml2
ZWRDb250ZXh0VHlwZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0KTsKIAogICAgIHN0YXRp
YyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIApAQCAtNTA2LDcg
KzUwNyw3IEBAIHB1YmxpYzoKICAgICAgICAgCiAgICAgREVDTEFSRV9JTkZPOwogCi0gICAgRXhl
Y3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5m
byhuZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBm
YWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBHZW5lcmF0b3JUaGlzTW9kZTo6Tm9uRW1wdHks
IFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlLCBp
c0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoKSwgZmFsc2UpOyB9CisgICAgRXhlY3V0YWJsZUlu
Zm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0Fj
dGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSwgQ29u
c3RydWN0b3JLaW5kOjpOb25lLCBHZW5lcmF0b3JUaGlzTW9kZTo6Tm9uRW1wdHksIFN1cGVyQmlu
ZGluZzo6Tm90TmVlZGVkLCBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlLCBkZXJpdmVkQ29u
dGV4dFR5cGUoKSwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCgpLCBmYWxzZSk7IH0KIAogcHJpdmF0
ZToKICAgICBmcmllbmQgY2xhc3MgRXhlY3V0YWJsZUJhc2U7CkBAIC01NDcsNyArNTQ4LDcgQEAg
cHVibGljOgogCiAgICAgREVDTEFSRV9JTkZPOwogCi0gICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0
YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24o
KSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JL
aW5kOjpOb25lLCBHZW5lcmF0b3JUaGlzTW9kZTo6Tm9uRW1wdHksIFN1cGVyQmluZGluZzo6Tm90
TmVlZGVkLCBTb3VyY2VQYXJzZU1vZGU6Ok1vZHVsZUV2YWx1YXRlTW9kZSwgaXNEZXJpdmVkQ29u
c3RydWN0b3JDb250ZXh0KCksIGZhbHNlKTsgfQorICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFi
bGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNBY3RpdmF0aW9uKCks
IHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UsIENvbnN0cnVjdG9yS2lu
ZDo6Tm9uZSwgR2VuZXJhdG9yVGhpc01vZGU6Ok5vbkVtcHR5LCBTdXBlckJpbmRpbmc6Ok5vdE5l
ZWRlZCwgU291cmNlUGFyc2VNb2RlOjpNb2R1bGVFdmFsdWF0ZU1vZGUsIGRlcml2ZWRDb250ZXh0
VHlwZSgpLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0KCksIGZhbHNlKTsgfQogCiAgICAgVW5saW5r
ZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiB1bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2so
KSB7IHJldHVybiBtX3VubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5nZXQoKTsgfQogCkBA
IC02NTcsNyArNjU4LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24oKSBj
b25zdCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+aXNCdWlsdGluRnVuY3Rpb24oKTsg
fQogICAgIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSgpIGNvbnN0IHsgcmV0dXJu
IG1fdW5saW5rZWRFeGVjdXRhYmxlLT5jb25zdHJ1Y3RBYmlsaXR5KCk7IH0KICAgICBib29sIGlz
QXJyb3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIHBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNl
TW9kZTo6QXJyb3dGdW5jdGlvbk1vZGU7IH0KLSAgICBib29sIGlzRGVyaXZlZENvbnN0cnVjdG9y
Q29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5pc0Rlcml2ZWRD
b25zdHJ1Y3RvckNvbnRleHQoKTsgfQorICAgIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29u
dGV4dFR5cGUoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+ZGVyaXZlZENv
bnRleHRUeXBlKCk7IH0KICAgICBib29sIGlzQ2xhc3NDb25zdHJ1Y3RvckZ1bmN0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPmlzQ2xhc3NDb25zdHJ1Y3RvckZ1bmN0
aW9uKCk7IH0KICAgICBjb25zdCBJZGVudGlmaWVyJiBuYW1lKCkgeyByZXR1cm4gbV91bmxpbmtl
ZEV4ZWN1dGFibGUtPm5hbWUoKTsgfQogICAgIGNvbnN0IElkZW50aWZpZXImIGluZmVycmVkTmFt
ZSgpIHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5pbmZlcnJlZE5hbWUoKTsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5j
dGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RG
dW5jdGlvbnMuY3BwCmluZGV4IDk2NWU5NGQ3OTQyNDlmZDEyNjU1ZjRjMmZjOGJmYzQ1YWJlYmEy
YjQuLjZhY2VhNWUzZjY0MjAyNGFhMWMyOGY4ZmNiYjg3MTc2MTg2ZjFiNWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0
aW9ucy5jcHAKQEAgLTU4Nyw3ICs1ODcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGdsb2JhbEZ1bmNFdmFsKEV4ZWNTdGF0ZSogZXhlYykKIAogICAgIEpTR2xvYmFsT2JqZWN0KiBj
YWxsZWVHbG9iYWxPYmplY3QgPSBleGVjLT5jYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCk7CiAgICAg
VmFyaWFibGVFbnZpcm9ubWVudCBlbXB0eVREWlZhcmlhYmxlczsgLy8gSW5kaXJlY3QgZXZhbCBk
b2VzIG5vdCBoYXZlIGFjY2VzcyB0byB0aGUgbGV4aWNhbCBzY29wZS4KLSAgICBFdmFsRXhlY3V0
YWJsZSogZXZhbCA9IEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoZXhlYywgbWFrZVNvdXJjZShzKSwg
ZmFsc2UsIFRoaXNURFpNb2RlOjpDaGVja0lmTmVlZGVkLCBmYWxzZSwgZmFsc2UsICZlbXB0eVRE
WlZhcmlhYmxlcyk7CisgICAgRXZhbEV4ZWN1dGFibGUqIGV2YWwgPSBFdmFsRXhlY3V0YWJsZTo6
Y3JlYXRlKGV4ZWMsIG1ha2VTb3VyY2UocyksIGZhbHNlLCBUaGlzVERaTW9kZTo6Q2hlY2tJZk5l
ZWRlZCwgRGVyaXZlZENvbnRleHRUeXBlOjpOb25lLCBmYWxzZSwgJmVtcHR5VERaVmFyaWFibGVz
KTsKICAgICBpZiAoIWV2YWwpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYu
eWFtbCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYueWFtbAppbmRleCBmMTE5N2Qx
M2RmZTViZjE1ZTk5NGY0ZGFjMmFhMzgzYzUzMzcxMmIzLi42ODNlNmUxNmI0NjE3YWM2ZTUzZTA3
NGU4M2Y4Y2FhNzFjNTNiOTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvZXM2LnlhbWwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi55YW1sCkBA
IC03NDcsNyArNzQ3LDcgQEAKIC0gcGF0aDogZXM2L2Fycm93X2Z1bmN0aW9uc19sZXhpY2FsX25l
dy50YXJnZXRfYmluZGluZy5qcwogICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9h
cnJvd19mdW5jdGlvbnNfbGV4aWNhbF9zdXBlcl9iaW5kaW5nLmpzCi0gIGNtZDogcnVuRVM2IDpm
YWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2Fycm93X2Z1bmN0aW9uc19u
b19wcm90b3R5cGVfcHJvcGVydHkuanMKICAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBl
czYvYmxvY2stbGV2ZWxfZnVuY3Rpb25fZGVjbGFyYXRpb24uanMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQt
c3VwZXJwcm9wZXJ0eS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtc3VwZXJwcm9wZXJ0eS5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40Zjli
OWVjMzgyNmYzZmM0ODY3NjZmMDM5YzY4ZWM2Njk1ZTcwM2E3Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwt
YmluZC1zdXBlcnByb3BlcnR5LmpzCkBAIC0wLDAgKzEsMjI0IEBACit2YXIgdGVzdENhc2UgPSBm
dW5jdGlvbiAoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkgeworICAgIGlmIChhY3R1YWwgIT09
IGV4cGVjdGVkKSB7CisgICAgICAgIHRocm93IG1lc3NhZ2UgKyAiLiBFeHBlY3RlZCAnIiArIGV4
cGVjdGVkICsgIicsIGJ1dCB3YXMgJyIgKyBhY3R1YWwgKyAiJyI7CisgICAgfQorfTsKKwordmFy
IHRlc3RWYWx1ZSAgPSAndGVzdC12YWx1ZSc7CisKK3ZhciBBID0gY2xhc3MgQSB7CisgICAgY29u
c3RydWN0b3IoKSB7CisgICAgICAgIHRoaXMudmFsdWUgPSB0ZXN0VmFsdWU7CisgICAgfQorICAg
IGdldENvbnN0VmFsdWUgKCkgeworICAgICAgICByZXR1cm4gdGVzdFZhbHVlOworICAgIH0KKyAg
ICBnZXRWYWx1ZSAoKSB7CisgICAgICAgIHJldHVybiB0aGlzLnZhbHVlOworICAgIH0KKyAgICBz
ZXRWYWx1ZSAodmFsdWUpIHsKKyAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlOworICAgIH0KK307
CisKK3ZhciBCID0gY2xhc3MgQiBleHRlbmRzIEEgeworICAgIGdldFBhcmVudFZhbHVlKCkgewor
ICAgICAgICB2YXIgYXJyb3cgID0gKCkgPT4gc3VwZXIuZ2V0VmFsdWUoKTsKKyAgICAgICAgcmV0
dXJuIGFycm93KCk7CisgICAgfQorfTsKKwordmFyIEMgPSBjbGFzcyBDIHsKKyAgICBjb25zdHJ1
Y3RvcigpIHsKKyAgICAgICAgdGhpcy52YWx1ZSA9IHRlc3RWYWx1ZTsKKyAgICB9CisgICAgc3Rh
dGljIGdldFN0YXRpY1ZhbHVlKCkgeworICAgICAgICByZXR1cm4gdGVzdFZhbHVlOworICAgIH0K
K307CisKK3ZhciBEID0gY2xhc3MgRCBleHRlbmRzIEMgeworICAgIHN0YXRpYyBnZXRQYXJlbnRT
dGF0aWNWYWx1ZSgpIHsKKyAgICAgICAgdmFyIGFycm93ICA9ICgpID0+IHN1cGVyLmdldFN0YXRp
Y1ZhbHVlKCk7CisgICAgICAgIHJldHVybiBhcnJvdygpOworICAgIH0KK307CisKK3ZhciBFID0g
Y2xhc3MgRSBleHRlbmRzIEEgeworICAgICBjb25zdHJ1Y3RvcigpIHsKKyAgICAgICAgIHN1cGVy
KCk7CisgICAgIH0KKyAgICAgZ2V0IHByb3AoKSB7CisgICAgICAgICB2YXIgYXJyb3cgPSAoKSA9
PiBzdXBlci5nZXRDb25zdFZhbHVlKCkgKyAnLScgKyB0aGlzLnZhbHVlOworICAgICAgICAgcmV0
dXJuIGFycm93KCk7CisgICAgIH0KKyAgICAgc2V0IHByb3AodmFsdWUpIHsKKyAgICAgICAgIHZh
ciBhcnJvdyA9IChuZXdWYWwpID0+IHN1cGVyLnNldFZhbHVlKG5ld1ZhbCk7CisgICAgICAgICBh
cnJvdyh2YWx1ZSk7CisgICAgIH0KKyAgICAgc2V0SW5pdFZhbHVlKCkgeworICAgICAgIHRoaXMu
dmFsdWUgPSB0ZXN0VmFsdWU7CisgICAgIH0KKyB9OworCit2YXIgYiA9IG5ldyBCKCk7Citmb3Ig
KHZhciBpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgICB0ZXN0Q2FzZShiLmdldFBhcmVudFZh
bHVlKCksIHRlc3RWYWx1ZSwgaSk7Cit9CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7IGkr
KykgeworICAgIHRlc3RDYXNlKEQuZ2V0UGFyZW50U3RhdGljVmFsdWUoKSwgdGVzdFZhbHVlLCBp
KTsKK30KKwordmFyIGUgPSBuZXcgRSgpOworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgaSsr
KSB7CisgICAgIGUuc2V0SW5pdFZhbHVlKCk7CisgICAgIHRlc3RDYXNlKGUucHJvcCwgdGVzdFZh
bHVlKyctJyt0ZXN0VmFsdWUsIGkpOworICAgICBlLnByb3AgPSAnbmV3LXRlc3QtdmFsdWUnOwor
ICAgICB0ZXN0Q2FzZShlLnByb3AsIHRlc3RWYWx1ZSsnLW5ldy10ZXN0LXZhbHVlJywgaSk7Cit9
CisKK3ZhciBGICA9IGNsYXNzIEYgZXh0ZW5kcyBBIHsKKyAgICBuZXdNZXRob2QoKSB7CisgICAg
ICAgIHZhciBhcnJvdyAgPSAoKSA9PiBldmFsKCdzdXBlci5nZXRWYWx1ZSgpJyk7CisgICAgICAg
IHZhciByID0gYXJyb3coKTsKKyAgICAgICAgcmV0dXJuIHI7CisgICAgfQorfTsKKwordmFyIGYg
PSBuZXcgRigpOworZm9yICh2YXIgaT0wOyBpIDwgMTAwMDA7IGkrKykgeworICAgIHRyeSB7Cisg
ICAgICAgIHZhciByZXN1bHQgPSBmLm5ld01ldGhvZCgpOworICAgICAgICB0ZXN0Q2FzZShyZXN1
bHQsIHRlc3RWYWx1ZSwgaSk7CisgICAgIH0gY2F0Y2goZSkgeworICAgICAgICBpZiAoIShlIGlu
c3RhbmNlb2YgU3ludGF4RXJyb3IpKQorICAgICAgICAgICB0aHJvdyBlOworICAgICB9Cit9CisK
K3ZhciBHID0gY2xhc3MgRyBleHRlbmRzIEEgeworICAgICBjb25zdHJ1Y3RvcigpIHsKKyAgICAg
ICAgIHN1cGVyKCk7CisgICAgIH0KKyAgICAgZ2V0IHByb3AoKSB7CisgICAgICAgICB2YXIgYXJy
b3cgPSAoKSA9PiAoKSA9PiBzdXBlci5nZXRDb25zdFZhbHVlKCkgKyAnLScgKyB0aGlzLnZhbHVl
OworICAgICAgICAgcmV0dXJuIGFycm93KCkoKTsKKyAgICAgfQorICAgICBzZXQgcHJvcCh2YWx1
ZSkgeworICAgICAgICAgdmFyIGFycm93ID0gICgpID0+IChuZXdWYWwpID0+IHRoaXMudmFsdWUg
PSBuZXdWYWw7CisgICAgICAgICBhcnJvdygpKHZhbHVlKTsKKyAgICAgfQorICAgICBzZXRJbml0
VmFsdWUoKSB7CisgICAgICAgICB0aGlzLnZhbHVlID0gdGVzdFZhbHVlOworICAgICB9CisgICAg
IGdldFZhbHVlQ0IoKSB7CisgICAgICAgICB2YXIgYXJyb3cgID0gKCkgPT4gc3VwZXIuZ2V0VmFs
dWUoKTsKKyAgICAgICAgIHJldHVybiBhcnJvdzsKKyAgICAgfQorICAgICBzZXRWYWx1ZUNCKCkg
eworICAgICAgICAgdmFyIGFycm93ID0gIChuZXdWYWwpID0+IHRoaXMudmFsdWUgPSBuZXdWYWw7
CisgICAgICAgICByZXR1cm4gYXJyb3c7CisgICAgIH0KKyAgICAgZ2V0UGFyZW50VmFsdWUoKSB7
CisgICAgICAgICByZXR1cm4gc3VwZXIuZ2V0VmFsdWUoKTsKKyAgICAgfQorICAgICBnZXRQYXJl
bnRWYWx1ZVdpdGhFcnJvcigpIHsKKyAgICAgICAgIHZhciBmID0gIGZ1bmN0aW9uICgpIHsKKyAg
ICAgICAgICAgICByZXR1cm4gKCkgPT4gc3VwZXIuZ2V0VmFsdWUoKTsKKyAgICAgICAgIH07Cisg
ICAgICAgICByZXR1cm4gZigpOworICAgICB9CisgfTsKKworIHZhciBnID0gbmV3IEcoKTsKKyBm
b3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgICBnLnNldEluaXRWYWx1ZSgpOwor
ICAgIHRlc3RDYXNlKGcucHJvcCwgdGVzdFZhbHVlICsgJy0nICsgdGVzdFZhbHVlLCAnRXJyb3I6
IFNvbWUgcHJvYmxlbSB3aXRoIHVzaW5nIGFycm93IGFuZCAic3VwZXIiIGluc2lkZSBvZiB0aGUg
bWV0aG9kJyk7CisgICAgZy5wcm9wID0gJ25ldy10ZXN0LXZhbHVlJzsKKyAgICB0ZXN0Q2FzZShn
LnByb3AsIHRlc3RWYWx1ZSArICctbmV3LXRlc3QtdmFsdWUnLCAnRXJyb3I6IFNvbWUgcHJvYmxl
bSB3aXRoIHVzaW5nIGFycm93IGFuZCAic3VwZXIiIGluc2lkZSBvZiB0aGUgZ2V0dGVyIGFuZCBz
ZXR0ZXInKTsKKyB9CisKK3ZhciBnMSA9IG5ldyBHKCk7Citmb3IgKHZhciBpID0gMDsgaSA8IDEw
MDAwOyBpKyspIHsKKyAgICBnMS5zZXRJbml0VmFsdWUoKTsKKyAgICBsZXQgZ2V0VmFsdWUgPSBn
MS5nZXRWYWx1ZUNCKCk7CisgICAgdGVzdENhc2UoZ2V0VmFsdWUoKSwgdGVzdFZhbHVlLCAgJ0Vy
cm9yOiBTb21lIHByb2JsZW0gd2l0aCB1c2luZyBhcnJvdyBhbmQgInN1cGVyIiBpbnNpZGUgb2Yg
dGhlIG1ldGhvZCB0aGF0IHJldHVuIGFycm93IGZ1bmN0aW9uJyk7CisgICAgbGV0IHNldFZhbHVl
ID0gZzEuc2V0VmFsdWVDQigpOworICAgIHNldFZhbHVlKCduZXctdmFsdWUnKTsKKyAgICB0ZXN0
Q2FzZShnZXRWYWx1ZSgpLCAnbmV3LXZhbHVlJywgJ0Vycm9yOiBTb21lIHByb2JsZW0gd2l0aCB1
c2luZyBhcnJvdyBhbmQgInN1cGVyIiBpbnNpZGUgb2YgdGhlIG1ldGhvZCB0aGF0IHJldHVuIGFy
cm93IGZ1bmN0aW9uJyk7Cit9CisKK3ZhciBnMiA9IG5ldyBHKCk7Citmb3IgKHZhciBpID0gMDsg
aSA8IDEwMDAwOyBpKyspIHsKKyAgICBsZXQgZXJyb3IgPSBmYWxzZTsKKyAgICB0cnkgeworICAg
ICAgIGcyLmdldFBhcmVudFZhbHVlV2l0aEVycm9yKCkoKTsKKyAgICB9IGNhdGNoKGUpIHsKKyAg
ICAgIC8vIEZJWE1FOiBzaG91bGQgYnkgY2hlY2sgaWYgZSBpbnN0YW5jZW9mIFN5bnRheEVycm9y
CisgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwODkz
CisgICAgICBlcm9yciA9IHRydWU7CisgICAgfQorICAgIHRlc3RDYXNlKGVyb3JyLCB0cnVlLCAn
RXJyb3I6IHVzaW5nICJzdXBlciIgc2hvdWxkIGxlYWQgdG8gZXJyb3InKTsKK30KKworCit2YXIg
SCA9IGNsYXNzIEggZXh0ZW5kcyBBIHsKKyAgICBjb25zdHJ1Y3RvcigpIHsKKyAgICAgICAgdmFy
IGFycm93ID0gKCkgPT4gKCkgPT4gc3VwZXIuZ2V0VmFsdWUoKTsKKyAgICAgICAgc3VwZXIoKTsK
KyAgICAgICAgdGhpcy5uZXdWYWx1ZSAgPSBhcnJvdygpKCk7CisgICAgfQorfTsKKworZm9yICh2
YXIgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7CisgICAgbGV0IGggPSBuZXcgSCgpOworICAgIHRl
c3RDYXNlKGgubmV3VmFsdWUsIHRlc3RWYWx1ZSwgJ0Vycm9yOiBTb21lIHByb2JsZW0gd2l0aCB1
c2luZyAic3VwZXIiIGluc2lkZSBvZiB0aGUgY29uc3RydWN0b3InKTsKK30KKwordmFyIEkgPSBj
bGFzcyBJIGV4dGVuZHMgQSB7CisgICAgY29uc3RydWN0b3IgKGJlZm9yZVN1cGVyKSB7CisgICAg
ICAgIHZhciBhcnJvdyA9ICgpID0+IHN1cGVyLmdldFZhbHVlKCk7CisgICAgICAgIGlmIChiZWZv
cmVTdXBlcikgIHsKKyAgICAgICAgICAgIHRoaXMuX3ZhbHVlID0gYXJyb3coKTsKKyAgICAgICAg
ICAgIHN1cGVyKCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzdXBlcigpOworICAg
ICAgICAgICAgdGhpcy5fdmFsdWUgPSBhcnJvdygpOworICAgICAgICB9CisgICAgfQorfQorCit2
YXIgSiA9IGNsYXNzIEogZXh0ZW5kcyBBIHsKKyAgICBjb25zdHJ1Y3RvciAoYmVmb3JlU3VwZXIp
IHsKKyAgICAgICAgdmFyIF92YWx1ZTsKKyAgICAgICAgdmFyIGFycm93ID0gKCkgPT4gc3VwZXIu
Z2V0Q29uc3RWYWx1ZSgpOworICAgICAgICBpZiAoYmVmb3JlU3VwZXIpICB7CisgICAgICAgICAg
ICBfdmFsdWUgPSBhcnJvdygpOworICAgICAgICAgICAgc3VwZXIoKTsKKyAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICBzdXBlcigpOworICAgICAgICAgICAgX3ZhbHVlID0gYXJyb3coKTsK
KyAgICAgICAgfQorICAgICAgICB0aGlzLl92YWx1ZSA9IF92YWx1ZTsKKyAgICB9Cit9CisKK2Zv
ciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgeworICAgIGxldCBpID0gbmV3IEkoZmFsc2Up
OworICAgIHRlc3RDYXNlKGkuX3ZhbHVlLCB0ZXN0VmFsdWUsICdFcnJvcjogU29tZSBwcm9ibGVt
IHdpdGggdXNpbmcgInN1cGVyIiBpbnNpZGUgb2YgdGhlIGNvbnN0cnVjdG9yJyk7CisgICAgbGV0
IGogPSBuZXcgSihmYWxzZSk7CisgICAgdGVzdENhc2Uoai5fdmFsdWUsIHRlc3RWYWx1ZSwgJ0Vy
cm9yOiBTb21lIHByb2JsZW0gd2l0aCB1c2luZyAic3VwZXIiIGluc2lkZSBvZiB0aGUgY29uc3Ry
dWN0b3InKTsKKworICAgIC8vIEZJWE1FOiBQcm9ibGVtIHdpdGggYWNjZXNzIHRvIHRoZSBzdXBl
ciBiZWZvcmUgc3VwZXIoKSBpbiBjb25zdHJ1Y3RvcgorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTIxMDgKKyAgICAvL2xldCBqMiA9IG5ldyBKKHRydWUp
OworICAgIC8vdGVzdENhc2UoajIuX3ZhbHVlLCB0ZXN0VmFsdWUsICdFcnJvcjogU29tZSBwcm9i
bGVtIHdpdGggdXNpbmcgInN1cGVyIiBpbnNpZGUgb2YgdGhlIGNvbnN0cnVjdG9yJyk7CisgICAg
ZXJvcnIgPSBmYWxzZTsKKyAgICB0cnkgeworICAgICAgICBuZXcgSSh0cnVlKTsKKyAgICB9IGNh
dGNoIChlKSB7CisgICAgICAgIGVyb3JyID0gZSBpbnN0YW5jZW9mIFJlZmVyZW5jZUVycm9yOwor
ICAgIH0KKyAgICB0ZXN0Q2FzZShlcm9yciwgdHJ1ZSwgJ0Vycm9yOiB1c2luZyAic3VwZXIiIHBy
b3BlcnR5IGJlZm9yZSBzdXBlcigpIHNob3VsZCBsZWFkIHRvIGVycm9yJyk7Cit9CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
NWM3NmU1YTRlOWRlNGYxYzZiNzgzMDU1Nzg3ZTJmM2I0OWIwMGViZC4uMjhiNzc0YmFhMGMwZTQ5
MDRhN2RlOGY0NWRhMWE3NjM2YjAwNGZlNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE1LTEy
LTEwICBTa2FjaGtvdiBPbGVrc2FuZHIgIDxnc2thY2hrb3ZAZ21haWwuY29tPgorCisgICAgICAg
IFtFUzZdIEFycm93IGZ1bmN0aW9uIHN5bnRheC4gQXJyb3cgZnVuY3Rpb24gc3BlY2lmaWMgZmVh
dHVyZXMuIExleGljYWwgYmluZCAic3VwZXIiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNDk2MTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIGpzL2Fycm93ZnVuY3Rpb24tc3VwZXJwcm9wZXJ0eS1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL2Fycm93ZnVuY3Rpb24tc3VwZXJwcm9wZXJ0
eS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBqcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1z
dXBlcnByb3BlcnR5LmpzOiBBZGRlZC4KKwogMjAxNS0xMi0wNSAgU2thY2hrb3YgT2xla3NhbmRy
ICA8Z3NrYWNoa292QGdtYWlsLmNvbT4KIAogICAgICAgICBbRVM2XSAic3VwZXIiIGFuZCAidGhp
cyIgc2hvdWxkIGJlIGxleGljYWxseSBib3VuZCBpbnNpZGUgYW4gYXJyb3cgZnVuY3Rpb24gYW5k
IHNob3VsZCBsaXZlIGluIGEgSlNMZXhpY2FsRW52aXJvbm1lbnQKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tc3VwZXJwcm9wZXJ0eS1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXN1cGVycHJvcGVydHktZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjNkZjJjNDk1ZmI5ZmYxZTI3NjMzMGYxNTNjMTQwYmI1ZmY1ZjQ5ZDMKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXN1cGVycHJvcGVydHktZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTYgQEAKK1Rlc3RzIGZvciBFUzYgYXJyb3cgZnVuY3Rpb24s
IGFjY2VzcyB0byB0aGUgc3VwZXIgcHJvcGVydHkgaW4gYXJyb3cgZnVuY3Rpb24KKworT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgKG5ldyBCKCkpLmdldFZhbHVlUGFyZW50RnVu
Y3Rpb24oKSBpcyBleHBlY3RlZFZhbHVlCitQQVNTIChuZXcgQyhmYWxzZSkpLnZhbHVlIGlzIGV4
cGVjdGVkVmFsdWUKK1BBU1MgRS5nZXRQYXJlbnRTdGF0aWNWYWx1ZSgpIGlzIGV4cGVjdGVkVmFs
dWUKK1BBU1MgZi5wcm9wIGlzIGV4cGVjdGVkVmFsdWUgKyAiLSIgKyBleHBlY3RlZFZhbHVlCitQ
QVNTIGYucHJvcCBpcyBleHBlY3RlZFZhbHVlICsgIi0iICsgIm5ldy12YWx1ZSIKK1BBU1MgKG5l
dyBGKCkpLmdldFBhcmVudFZhbHVlKCkgaXMgZXhwZWN0ZWRWYWx1ZQorUEFTUyAobmV3IEYoKSku
Z2V0UGFyZW50VmFsdWVXaXRoRXJyb3IoKSgpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IHVu
ZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdzdXBlci5nZXRWYWx1ZScpLgor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tc3VwZXJwcm9wZXJ0eS5odG1sIGIv
TGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1zdXBlcnByb3BlcnR5Lmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMDJiNTA1Zjc5OTQ1YjdjYTM5Yzk2Y2M3MTlhY2RjOTVmZjViYTBmZAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tc3VwZXJwcm9wZXJ0eS5odG1sCkBA
IC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwv
L0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InNjcmlwdC10
ZXN0cy9hcnJvd2Z1bmN0aW9uLXN1cGVycHJvcGVydHkuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rp
b24tc3VwZXJwcm9wZXJ0eS5qcyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1
bmN0aW9uLXN1cGVycHJvcGVydHkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODM4NmZiNzYzM2RhMTljZDBkYmI0
Zjc4ZjA3NzFiMjcxZGI0Zjc1OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3Nj
cmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXN1cGVycHJvcGVydHkuanMKQEAgLTAsMCArMSw5NSBA
QAorZGVzY3JpcHRpb24oJ1Rlc3RzIGZvciBFUzYgYXJyb3cgZnVuY3Rpb24sIGFjY2VzcyB0byB0
aGUgc3VwZXIgcHJvcGVydHkgaW4gYXJyb3cgZnVuY3Rpb24nKTsKKwordmFyIGV4cGVjdGVkVmFs
dWUgPSAndGVzdC12YWx1ZSc7CisKK2NsYXNzIEEgeworICAgIGdldFZhbHVlICgpIHsKKyAgICAg
ICAgcmV0dXJuIGV4cGVjdGVkVmFsdWU7CisgICAgfQorfTsKKworY2xhc3MgQiBleHRlbmRzIEEg
eworICAgIGdldFZhbHVlUGFyZW50RnVuY3Rpb24oKSB7CisgICAgICAgIHZhciBhcnJvdyAgPSAo
KSA9PiBzdXBlci5nZXRWYWx1ZSgpOworICAgICAgICByZXR1cm4gYXJyb3coKTsKKyAgICB9Cit9
OworCitjbGFzcyBDIGV4dGVuZHMgQiB7CisgICAgY29uc3RydWN0b3IoYmVmb3JlU3VwZXIpIHsK
KyAgICAgICAgbGV0IF92YWx1ZTsKKyAgICAgICAgbGV0IGFycm93ID0gKCkgPT4gc3VwZXIuZ2V0
VmFsdWUoKTsKKyAgICAgICAgaWYgKGJlZm9yZVN1cGVyKSB7CisgICAgICAgICAgICBfdmFsdWUg
PSBhcnJvdygpOworICAgICAgICAgICAgc3VwZXIoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIHN1cGVyKCk7CisgICAgICAgICAgICBfdmFsdWUgPSBhcnJvdygpOworICAgICAgICB9
CisgICAgICAgIHRoaXMudmFsdWUgPSBfdmFsdWU7CisgICAgfQorfTsKKworY2xhc3MgRCB7Cisg
ICAgY29uc3RydWN0b3IoKSB7CisgICAgICAgIHRoaXMudmFsdWUgPSBleHBlY3RlZFZhbHVlOwor
ICAgIH0KKyAgICBzdGF0aWMgZ2V0U3RhdGljVmFsdWUoKSB7CisgICAgICAgIHJldHVybiBleHBl
Y3RlZFZhbHVlOworICAgIH0KK307CisKK2NsYXNzIEUgZXh0ZW5kcyBEIHsKKyAgICBzdGF0aWMg
Z2V0UGFyZW50U3RhdGljVmFsdWUoKSB7CisgICAgICAgIHZhciBhcnJvdyAgPSAoKSA9PiBzdXBl
ci5nZXRTdGF0aWNWYWx1ZSgpOworICAgICAgICByZXR1cm4gYXJyb3coKTsKKyAgICB9Cit9Owor
CitjbGFzcyBGIGV4dGVuZHMgQSB7CisgICAgY29uc3RydWN0b3IoKSB7CisgICAgICAgIHN1cGVy
KCk7CisgICAgICAgIHRoaXMudmFsdWUgPSBleHBlY3RlZFZhbHVlOworICAgIH0KKyAgICBnZXQg
cHJvcCgpIHsKKyAgICAgICAgdmFyIGFycm93ID0gKCkgPT4gc3VwZXIuZ2V0VmFsdWUoKSsgJy0n
ICsgdGhpcy52YWx1ZTsKKyAgICAgICAgcmV0dXJuIGFycm93KCk7CisgICAgfQorICAgIHNldCBw
cm9wKHZhbHVlKSB7CisgICAgICAgIHZhciBhcnJvdyA9IChuZXdWYWwpID0+IHRoaXMudmFsdWUg
PSBuZXdWYWw7CisgICAgICAgIGFycm93KHZhbHVlKTsKKyAgICB9CisgICAgZ2V0UGFyZW50VmFs
dWUoKSB7CisgICAgICAgIGxldCBhcnJvdyA9ICgpID0+ICgpID0+IHN1cGVyLmdldFZhbHVlKCk7
CisgICAgICAgIHJldHVybiBhcnJvdygpKCk7CisgICAgfQorICAgIGdldFBhcmVudFZhbHVlV2l0
aEVycm9yKCkgeworICAgICAgICB2YXIgZiA9ICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBy
ZXR1cm4gKCkgPT4gc3VwZXIuZ2V0VmFsdWUoKTsKKyAgICAgICAgfTsKKyAgICAgICAgcmV0dXJu
IGYoKTsKKyAgICB9CisgfTsKKworc2hvdWxkQmUoJyhuZXcgQigpKS5nZXRWYWx1ZVBhcmVudEZ1
bmN0aW9uKCknLCAnZXhwZWN0ZWRWYWx1ZScpOworCitzaG91bGRCZSgnKG5ldyBDKGZhbHNlKSku
dmFsdWUnLCAnZXhwZWN0ZWRWYWx1ZScpOworCisvLyBGSVhNRTogUHJvYmxlbSB3aXRoIGFjY2Vz
cyB0byB0aGUgc3VwZXIgYmVmb3JlIHN1cGVyIGluIGNvbnN0cnVjdG9yCisvLyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUyMTA4CisvL3Nob3VsZFRocm93KCcobmV3
IEModHJ1ZSkpJywgJ1JlZmVyZW5jZUVycm9yJyk7CisKK3Nob3VsZEJlKCdFLmdldFBhcmVudFN0
YXRpY1ZhbHVlKCknLCAnZXhwZWN0ZWRWYWx1ZScpOworCit2YXIgZiA9IG5ldyBGKCk7CisKK3No
b3VsZEJlKCdmLnByb3AnLCAnZXhwZWN0ZWRWYWx1ZSArICItIiArIGV4cGVjdGVkVmFsdWUnKTsK
KworZi5wcm9wID0gJ25ldy12YWx1ZSc7CitzaG91bGRCZSgnZi5wcm9wJywgJ2V4cGVjdGVkVmFs
dWUgKyAiLSIgKyAibmV3LXZhbHVlIicpOworCitzaG91bGRCZSgnKG5ldyBGKCkpLmdldFBhcmVu
dFZhbHVlKCknLCAnZXhwZWN0ZWRWYWx1ZScpOworCitzaG91bGRUaHJvdygnKG5ldyBGKCkpLmdl
dFBhcmVudFZhbHVlV2l0aEVycm9yKCkoKScpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0g
dHJ1ZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267988</attachid>
            <date>2015-12-29 12:18:53 -0800</date>
            <delta_ts>2015-12-29 12:40:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-149615-20151229221816.patch</filename>
            <type>text/plain</type>
            <size>56500</size>
            <attacher name="GSkachkov">gskachkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk0MzQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
MzU4ODYwYzljM2Y4NDNmNjU3YmViY2U5MDRhODYxYzk4MzBmZWQzLi42OGJiNzJhNDgxMTQ5YTI0
NDk4NTg1YTFjNWJkMzI0MjhiNGE4ODk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2NSBAQAorMjAxNS0xMi0xMCAgQWxla3NhbmRyIFNrYWNoa292ICA8Z3NrYWNoa292QGdt
YWlsLmNvbT4KKworICAgICAgICBbRVM2XSBBcnJvdyBmdW5jdGlvbiBzeW50YXguIEFycm93IGZ1
bmN0aW9uIHNwZWNpZmljIGZlYXR1cmVzLiBMZXhpY2FsIGJpbmQgInN1cGVyIgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5NjE1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50ZWQgbGV4aWNh
bCBiaW5kICJzdXBlciIgcHJvcGVydHkgZm9yIGFycm93IGZ1bmN0aW9uLiAnc3VwZXInIHByb3Bl
cnR5IGNhbiBiZSBhY2Nlc3NlZCAKKyAgICAgICAgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlv
biBpbiBjYXNlIGlmIGFycm93IGZ1bmN0aW9uIGlzIG5lc3RlZCBpbiBjb25zdHJ1Y3RvciwgbWV0
aG9kLCAKKyAgICAgICAgZ2V0dGVyIG9yIHNldHRlciBvZiBjbGFzcy4gSW4gY3VycmVudCBwYXRj
aCB1c2luZyAnc3VwZXInIGluIGFycm93IGZ1bmN0aW9uLCB0aGF0IGRlY2xhcmVkIG91dCBvZiB0
aGUgCisgICAgICAgIGNsYXNzLCBsZWFkIHRvIHdyb25nIHR5cGUgb2YgZXJyb3IsIHNob3VsZCBi
ZSBTeW50YXhFcnJvcihodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUw
ODkzKSAKKyAgICAgICAgYW5kIHRoaXMgd2lsbCBiZSBmaXhlZCBpbiBzZXBhcmV0ZSBwYXRjaC4K
KworICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHA6CisgICAgICAgIChK
U0M6OmNyZWF0ZUV4ZWN1dGFibGVJbnRlcm5hbCk6CisgICAgICAgICogYnl0ZWNvZGUvRXZhbENv
ZGVDYWNoZS5oOgorICAgICAgICAoSlNDOjpFdmFsQ29kZUNhY2hlOjpnZXRTbG93KToKKyAgICAg
ICAgKiBieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxl
SW5mbzo6RXhlY3V0YWJsZUluZm8pOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlSW5mbzo6ZGVy
aXZlZENvbnRleHRUeXBlKToKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUluZm86OmlzQ2xhc3ND
b250ZXh0KToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHA6CisgICAg
ICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpVbmxpbmtlZENvZGVCbG9jayk6CisgICAgICAg
ICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRD
b2RlQmxvY2s6OmRlcml2ZWRDb250ZXh0VHlwZSk6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29k
ZUJsb2NrOjppc0NsYXNzQ29udGV4dCk6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpnZW5lcmF0ZVVubGlua2VkRnVuY3Rp
b25Db2RlQmxvY2spOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUpOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2Vu
ZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXREZXJpdmVk
Q29uc3RydWN0b3JUb0Fycm93RnVuY3Rpb25Db250ZXh0U2NvcGUpOgorICAgICAgICAqIGJ5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVy
YXRvcjo6ZGVyaXZlZENvbnRleHRUeXBlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OmlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
R2VuZXJhdG9yOjppc0Rlcml2ZWRDbGFzc0NvbnRleHQpOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcjo6aXNBcnJvd0Z1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3I6Om1ha2VGdW5jdGlvbik6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdl
bi5jcHA6CisgICAgICAgIChKU0M6OmVtaXRIb21lT2JqZWN0Rm9yQ2FsbGVlKToKKyAgICAgICAg
KEpTQzo6RnVuY3Rpb25DYWxsVmFsdWVOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGRl
YnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcDoKKyAgICAgICAgKEpTQzo6RGVidWdnZXJDYWxs
RnJhbWU6OmV2YWx1YXRlKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6
CisgICAgICAgIChKU0M6OmV2YWwpOgorICAgICAgICAqIHJ1bnRpbWUvQ29kZUNhY2hlLmNwcDoK
KyAgICAgICAgKEpTQzo6Q29kZUNhY2hlOjpnZXRGdW5jdGlvbkV4ZWN1dGFibGVGcm9tR2xvYmFs
Q29kZSk6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6
U2NyaXB0RXhlY3V0YWJsZTo6U2NyaXB0RXhlY3V0YWJsZSk6CisgICAgICAgIChKU0M6OkV2YWxF
eGVjdXRhYmxlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpFdmFsRXhlY3V0YWJsZTo6RXZhbEV4
ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6UHJvZ3JhbUV4ZWN1
dGFibGUpOgorICAgICAgICAoSlNDOjpNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6TW9kdWxlUHJv
Z3JhbUV4ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OkZ1bmN0
aW9uRXhlY3V0YWJsZSk6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmg6CisgICAgICAg
IChKU0M6OlNjcmlwdEV4ZWN1dGFibGU6OmRlcml2ZWRDb250ZXh0VHlwZSk6CisgICAgICAgICog
cnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChKU0M6Omdsb2Jh
bEZ1bmNFdmFsKToKKyAgICAgICAgKiB0ZXN0cy9lczYueWFtbDoKKyAgICAgICAgKiB0ZXN0cy9z
dHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtc3VwZXJwcm9wZXJ0eS5qczogQWRkZWQu
CisKIDIwMTUtMTItMDUgQWxla3NhbmRyIFNrYWNoa292ICAgPGdza2FjaGtvdkBnbWFpbC5jb20+
CiAKICAgICAgICAgW0VTNl0gInN1cGVyIiBhbmQgInRoaXMiIHNob3VsZCBiZSBsZXhpY2FsbHkg
Ym91bmQgaW5zaWRlIGFuIGFycm93IGZ1bmN0aW9uIGFuZCBzaG91bGQgbGl2ZSBpbiBhIEpTTGV4
aWNhbEVudmlyb25tZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRp
bnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlu
cy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCmluZGV4IGI4MDBmNTEzZTlmYWFhNTRhMjQyZDVlMTI0
MzdmNTBjN2Y5ZDU2ZDguLmE2YmNmNzQ0MzZmZjljODJlMzk5NDZlYWZhOTRjZTAxMzczMWNiNzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0
YWJsZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhl
Y3V0YWJsZXMuY3BwCkBAIC0xMTUsNyArMTE1LDcgQEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUqIGNyZWF0ZUV4ZWN1dGFibGVJbnRlcm5hbChWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHMK
ICAgICB9CiAgICAgbWV0YWRhdGEtPm92ZXJyaWRlTmFtZShuYW1lKTsKICAgICBWYXJpYWJsZUVu
dmlyb25tZW50IGR1bW15VERaVmFyaWFibGVzOwotICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3Jl
YXRlKCZ2bSwgc291cmNlLCBtZXRhZGF0YSwga2luZCwgY29uc3RydWN0QWJpbGl0eSwgR2VuZXJh
dG9yVGhpc01vZGU6Ok5vbkVtcHR5LCBkdW1teVREWlZhcmlhYmxlcywgZmFsc2UsIFdURjo6bW92
ZShzb3VyY2VPdmVycmlkZSkpOworICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5j
dGlvbkV4ZWN1dGFibGUgPSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKCZ2bSwg
c291cmNlLCBtZXRhZGF0YSwga2luZCwgY29uc3RydWN0QWJpbGl0eSwgR2VuZXJhdG9yVGhpc01v
ZGU6Ok5vbkVtcHR5LCBkdW1teVREWlZhcmlhYmxlcywgRGVyaXZlZENvbnRleHRUeXBlOjpOb25l
LCBXVEY6Om1vdmUoc291cmNlT3ZlcnJpZGUpKTsKICAgICBmdW5jdGlvbkV4ZWN1dGFibGUtPnNl
dE5hbWVWYWx1ZSh2bSwganNTdHJpbmcoJnZtLCBuYW1lLnN0cmluZygpKSk7CiAgICAgcmV0dXJu
IGZ1bmN0aW9uRXhlY3V0YWJsZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9FdmFsQ29kZUNhY2hlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvRXZhbENvZGVDYWNoZS5oCmluZGV4IDg2OTEzMTY5MmE5MzRhNzVhNjQzY2U1NWY5ZTBkOTc3
YTg1YWMxMGEuLjY2MzQ5MGFmYjQ1MjQ1YzM2ZmYwNWQ0N2VmODgxM2RhNWE1OWY1MDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FdmFsQ29kZUNhY2hlLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V2YWxDb2RlQ2FjaGUuaApAQCAtNTUs
MTEgKzU1LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIEV2YWxFeGVjdXRhYmxlKiBnZXRTbG93KEV4
ZWNTdGF0ZSogZXhlYywgSlNDZWxsKiBvd25lciwgYm9vbCBpblN0cmljdENvbnRleHQsIFRoaXNU
RFpNb2RlIHRoaXNURFpNb2RlLCBib29sIGlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCwgYm9v
bCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBjb25zdCBTb3VyY2VDb2RlJiBldmFsU291cmNlLCBK
U1Njb3BlKiBzY29wZSkKKyAgICAgICAgRXZhbEV4ZWN1dGFibGUqIGdldFNsb3coRXhlY1N0YXRl
KiBleGVjLCBKU0NlbGwqIG93bmVyLCBib29sIGluU3RyaWN0Q29udGV4dCwgVGhpc1REWk1vZGUg
dGhpc1REWk1vZGUsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wg
aXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgY29uc3QgU291cmNlQ29kZSYgZXZhbFNvdXJjZSwgSlNT
Y29wZSogc2NvcGUpCiAgICAgICAgIHsKICAgICAgICAgICAgIFZhcmlhYmxlRW52aXJvbm1lbnQg
dmFyaWFibGVzVW5kZXJURFo7CiAgICAgICAgICAgICBKU1Njb3BlOjpjb2xsZWN0VmFyaWFibGVz
VW5kZXJURFooc2NvcGUsIHZhcmlhYmxlc1VuZGVyVERaKTsKLSAgICAgICAgICAgIEV2YWxFeGVj
dXRhYmxlKiBldmFsRXhlY3V0YWJsZSA9IEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoZXhlYywgZXZh
bFNvdXJjZSwgaW5TdHJpY3RDb250ZXh0LCB0aGlzVERaTW9kZSwgaXNEZXJpdmVkQ29uc3RydWN0
b3JDb250ZXh0LCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCAmdmFyaWFibGVzVW5kZXJURFopOwor
ICAgICAgICAgICAgRXZhbEV4ZWN1dGFibGUqIGV2YWxFeGVjdXRhYmxlID0gRXZhbEV4ZWN1dGFi
bGU6OmNyZWF0ZShleGVjLCBldmFsU291cmNlLCBpblN0cmljdENvbnRleHQsIHRoaXNURFpNb2Rl
LCBkZXJpdmVkQ29udGV4dFR5cGUsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsICZ2YXJpYWJsZXNV
bmRlclREWik7CiAKICAgICAgICAgICAgIGlmICghZXZhbEV4ZWN1dGFibGUpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9FeGVjdXRhYmxlSW5mby5oCmluZGV4IGFhYzM5MDRmZjAzNGM5ZTYwNzE0ZmU5OTM2NTQ5ZmU5
NWQ0YTExZTUuLmY2OTQyYzA4MGJjZDU4NTM3OTk3NWVlNGYxMTNmMGZkYWVlZWUzZDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCkBAIC0z
MCwxMSArMzAsMTMgQEAKICNpbmNsdWRlICJQYXJzZXJNb2Rlcy5oIgogCiBuYW1lc3BhY2UgSlND
IHsKKyAgICAKK2VudW0gY2xhc3MgRGVyaXZlZENvbnRleHRUeXBlIHsgTm9uZSwgRGVyaXZlZENv
bnN0cnVjdG9yQ29udGV4dCwgRGVyaXZlZE1ldGhvZENvbnRleHQgfTsKIAogLy8gRklYTUU6IFRo
ZXNlIGZsYWdzLCBQYXJzZXJNb2RlcyBhbmQgcHJvcGFnYXRpb24gdG8gWFhYQ29kZUJsb2NrcyBz
aG91bGQgYmUgcmVvcmdhbml6ZWQuCiAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTUxNTQ3CiBzdHJ1Y3QgRXhlY3V0YWJsZUluZm8gewotICAgIEV4ZWN1dGFibGVJ
bmZvKGJvb2wgbmVlZHNBY3RpdmF0aW9uLCBib29sIHVzZXNFdmFsLCBib29sIGlzU3RyaWN0TW9k
ZSwgYm9vbCBpc0NvbnN0cnVjdG9yLCBib29sIGlzQnVpbHRpbkZ1bmN0aW9uLCBDb25zdHJ1Y3Rv
cktpbmQgY29uc3RydWN0b3JLaW5kLCBHZW5lcmF0b3JUaGlzTW9kZSBnZW5lcmF0b3JUaGlzTW9k
ZSwgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZywgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSwg
Ym9vbCBpc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29u
dGV4dCkKKyAgICBFeGVjdXRhYmxlSW5mbyhib29sIG5lZWRzQWN0aXZhdGlvbiwgYm9vbCB1c2Vz
RXZhbCwgYm9vbCBpc1N0cmljdE1vZGUsIGJvb2wgaXNDb25zdHJ1Y3RvciwgYm9vbCBpc0J1aWx0
aW5GdW5jdGlvbiwgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgR2VuZXJhdG9yVGhp
c01vZGUgZ2VuZXJhdG9yVGhpc01vZGUsIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcsIFNvdXJj
ZVBhcnNlTW9kZSBwYXJzZU1vZGUsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5
cGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgYm9vbCBpc0NsYXNzQ29udGV4dCkKICAg
ICAgICAgOiBtX25lZWRzQWN0aXZhdGlvbihuZWVkc0FjdGl2YXRpb24pCiAgICAgICAgICwgbV91
c2VzRXZhbCh1c2VzRXZhbCkKICAgICAgICAgLCBtX2lzU3RyaWN0TW9kZShpc1N0cmljdE1vZGUp
CkBAIC00NCw4ICs0Niw5IEBAIHN0cnVjdCBFeGVjdXRhYmxlSW5mbyB7CiAgICAgICAgICwgbV9j
b25zdHJ1Y3RvcktpbmQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvbnN0cnVjdG9yS2luZCkpCiAg
ICAgICAgICwgbV9zdXBlckJpbmRpbmcoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN1cGVyQmluZGlu
ZykpCiAgICAgICAgICwgbV9wYXJzZU1vZGUocGFyc2VNb2RlKQotICAgICAgICAsIG1faXNEZXJp
dmVkQ29uc3RydWN0b3JDb250ZXh0KGlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCkKKyAgICAg
ICAgLCBtX2Rlcml2ZWRDb250ZXh0VHlwZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZGVyaXZlZENv
bnRleHRUeXBlKSkKICAgICAgICAgLCBtX2lzQXJyb3dGdW5jdGlvbkNvbnRleHQoaXNBcnJvd0Z1
bmN0aW9uQ29udGV4dCkKKyAgICAgICAgLCBtX2lzQ2xhc3NDb250ZXh0KGlzQ2xhc3NDb250ZXh0
KQogICAgIHsKICAgICAgICAgQVNTRVJUKG1fY29uc3RydWN0b3JLaW5kID09IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihjb25zdHJ1Y3RvcktpbmQpKTsKICAgICAgICAgQVNTRVJUKG1fc3VwZXJCaW5k
aW5nID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdXBlckJpbmRpbmcpKTsKQEAgLTYxLDggKzY0
LDkgQEAgc3RydWN0IEV4ZWN1dGFibGVJbmZvIHsKICAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3Ry
dWN0b3JLaW5kKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29uc3RydWN0b3JLaW5kPiht
X2NvbnN0cnVjdG9yS2luZCk7IH0KICAgICBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nKCkgY29u
c3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8U3VwZXJCaW5kaW5nPihtX3N1cGVyQmluZGluZyk7IH0K
ICAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9wYXJzZU1v
ZGU7IH0KLSAgICBib29sIGlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCgpIGNvbnN0IHsgcmV0
dXJuIG1faXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0OyB9CisgICAgRGVyaXZlZENvbnRleHRU
eXBlIGRlcml2ZWRDb250ZXh0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PERlcml2
ZWRDb250ZXh0VHlwZT4obV9kZXJpdmVkQ29udGV4dFR5cGUpOyB9CiAgICAgYm9vbCBpc0Fycm93
RnVuY3Rpb25Db250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9pc0Fycm93RnVuY3Rpb25Db250ZXh0
OyB9CisgICAgYm9vbCBpc0NsYXNzQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1faXNDbGFzc0Nv
bnRleHQ7IH0KIAogcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX25lZWRzQWN0aXZhdGlvbiA6IDE7
CkBAIC03NCw4ICs3OCw5IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3Rvcktp
bmQgOiAyOwogICAgIHVuc2lnbmVkIG1fc3VwZXJCaW5kaW5nIDogMTsKICAgICBTb3VyY2VQYXJz
ZU1vZGUgbV9wYXJzZU1vZGU7Ci0gICAgdW5zaWduZWQgbV9pc0Rlcml2ZWRDb25zdHJ1Y3RvckNv
bnRleHQgOiAxOworICAgIHVuc2lnbmVkIG1fZGVyaXZlZENvbnRleHRUeXBlIDogMjsKICAgICB1
bnNpZ25lZCBtX2lzQXJyb3dGdW5jdGlvbkNvbnRleHQgOiAxOworICAgIHVuc2lnbmVkIG1faXND
bGFzc0NvbnRleHQgOiAxOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAppbmRleCA4
YTdkMDI2NzkzZDQ2YjgyNWZiZjNlZjc2NTJhNTQzODM5NjUwNDYzLi41MmZjM2E3MTcxZTBhMmVj
MTc3Yjg2ZDk3NjQzMWYzYTk3ZTg0NWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKQEAgLTY3LDggKzY3LDkgQEAgVW5s
aW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKFZNKiB2bSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIENvZGVUeXBlIGNvZGUKICAgICAsIG1fY29uc3RydWN0b3JLaW5kKHN0YXRpY19jYXN0
PHVuc2lnbmVkPihpbmZvLmNvbnN0cnVjdG9yS2luZCgpKSkKICAgICAsIG1fZ2VuZXJhdG9yVGhp
c01vZGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluZm8uZ2VuZXJhdG9yVGhpc01vZGUoKSkpCiAg
ICAgLCBtX3N1cGVyQmluZGluZyhzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5mby5zdXBlckJpbmRp
bmcoKSkpCi0gICAgLCBtX2lzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dChpbmZvLmlzRGVyaXZl
ZENvbnN0cnVjdG9yQ29udGV4dCgpKQorICAgICwgbV9kZXJpdmVkQ29udGV4dFR5cGUoc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KGluZm8uZGVyaXZlZENvbnRleHRUeXBlKCkpKQogICAgICwgbV9pc0Fy
cm93RnVuY3Rpb25Db250ZXh0KGluZm8uaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCgpKQorICAgICwg
bV9pc0NsYXNzQ29udGV4dChpbmZvLmlzQ2xhc3NDb250ZXh0KCkpCiAgICAgLCBtX2ZpcnN0TGlu
ZSgwKQogICAgICwgbV9saW5lQ291bnQoMCkKICAgICAsIG1fZW5kQ29sdW1uKFVJTlRfTUFYKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJs
b2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2su
aAppbmRleCBiZWM2ZTA4NjExZGM1ZjA5NGY3OWFiODVjMTMzNWE5MTFiOWY5MTFiLi4xMmJhNDNh
ZWVmNDVlNzlhZTNkMGZjYzVkMDJlMjE1YjU4NjlhYzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaApAQCAtMTIwLDggKzEyMCw5
IEBAIHB1YmxpYzoKICAgICBib29sIHVzZXNFdmFsKCkgY29uc3QgeyByZXR1cm4gbV91c2VzRXZh
bDsgfQogICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUoKSBjb25zdCB7IHJldHVybiBtX3Bh
cnNlTW9kZTsgfQogICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9w
YXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZTsgfQotICAgIGJv
b2wgaXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9pc0Rlcml2
ZWRDb25zdHJ1Y3RvckNvbnRleHQ7IH0KKyAgICBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENv
bnRleHRUeXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RGVyaXZlZENvbnRleHRUeXBl
PihtX2Rlcml2ZWRDb250ZXh0VHlwZSk7IH0KICAgICBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRl
eHQoKSBjb25zdCB7IHJldHVybiBtX2lzQXJyb3dGdW5jdGlvbkNvbnRleHQ7IH0KKyAgICBib29s
IGlzQ2xhc3NDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9pc0NsYXNzQ29udGV4dDsgfQogCiAg
ICAgYm9vbCBuZWVkc0Z1bGxTY29wZUNoYWluKCkgY29uc3QgeyByZXR1cm4gbV9uZWVkc0Z1bGxT
Y29wZUNoYWluOyB9CiAKQEAgLTM5Niw5ICszOTcsOSBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVk
IG1fY29uc3RydWN0b3JLaW5kIDogMjsKICAgICB1bnNpZ25lZCBtX2dlbmVyYXRvclRoaXNNb2Rl
IDogMTsKICAgICB1bnNpZ25lZCBtX3N1cGVyQmluZGluZyA6IDE7Ci0gICAgdW5zaWduZWQgbV9p
c0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQgOiAxOworICAgIHVuc2lnbmVkIG1fZGVyaXZlZENv
bnRleHRUeXBlIDogMjsKICAgICB1bnNpZ25lZCBtX2lzQXJyb3dGdW5jdGlvbkNvbnRleHQgOiAx
OwotCisgICAgdW5zaWduZWQgbV9pc0NsYXNzQ29udGV4dCA6IDE7CiAgICAgdW5zaWduZWQgbV9m
aXJzdExpbmU7CiAgICAgdW5zaWduZWQgbV9saW5lQ291bnQ7CiAgICAgdW5zaWduZWQgbV9lbmRD
b2x1bW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAppbmRleCAwYzdmNDUyNzFhMjc2MjIwNjI5
ODUyYjA2MGY1ZTdmYjA2YjZjMDRiLi41YWM2M2FmNjc2MDliYmQ2MjEwMGMwYTNiMmZkODNmMTdi
MTY3NjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKQEAgLTY1LDkgKzY1LDExIEBAIHN0
YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZVVubGlua2VkRnVuY3Rpb25D
b2RlQmxvY2soCiAKICAgICBmdW5jdGlvbi0+ZmluaXNoUGFyc2luZyhleGVjdXRhYmxlLT5uYW1l
KCksIGV4ZWN1dGFibGUtPmZ1bmN0aW9uTW9kZSgpKTsKICAgICBleGVjdXRhYmxlLT5yZWNvcmRQ
YXJzZShmdW5jdGlvbi0+ZmVhdHVyZXMoKSwgZnVuY3Rpb24tPmhhc0NhcHR1cmVkVmFyaWFibGVz
KCkpOwotICAgIAorCisgICAgYm9vbCBpc0NsYXNzQ29udGV4dCA9IGV4ZWN1dGFibGUtPnN1cGVy
QmluZGluZygpID09IFN1cGVyQmluZGluZzo6TmVlZGVkOworCiAgICAgVW5saW5rZWRGdW5jdGlv
bkNvZGVCbG9jayogcmVzdWx0ID0gVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jazo6Y3JlYXRlKCZ2
bSwgRnVuY3Rpb25Db2RlLAotICAgICAgICBFeGVjdXRhYmxlSW5mbyhmdW5jdGlvbi0+bmVlZHNB
Y3RpdmF0aW9uKCksIGZ1bmN0aW9uLT51c2VzRXZhbCgpLCBmdW5jdGlvbi0+aXNTdHJpY3RNb2Rl
KCksIGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCwgZnVuY3Rpb25LaW5kID09IFVubGlua2VkQnVp
bHRpbkZ1bmN0aW9uLCBleGVjdXRhYmxlLT5jb25zdHJ1Y3RvcktpbmQoKSwgZXhlY3V0YWJsZS0+
Z2VuZXJhdG9yVGhpc01vZGUoKSwgZXhlY3V0YWJsZS0+c3VwZXJCaW5kaW5nKCksIHBhcnNlTW9k
ZSwgIGV4ZWN1dGFibGUtPmlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCgpLCBmYWxzZSkpOwor
ICAgICAgICBFeGVjdXRhYmxlSW5mbyhmdW5jdGlvbi0+bmVlZHNBY3RpdmF0aW9uKCksIGZ1bmN0
aW9uLT51c2VzRXZhbCgpLCBmdW5jdGlvbi0+aXNTdHJpY3RNb2RlKCksIGtpbmQgPT0gQ29kZUZv
ckNvbnN0cnVjdCwgZnVuY3Rpb25LaW5kID09IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uLCBleGVj
dXRhYmxlLT5jb25zdHJ1Y3RvcktpbmQoKSwgZXhlY3V0YWJsZS0+Z2VuZXJhdG9yVGhpc01vZGUo
KSwgZXhlY3V0YWJsZS0+c3VwZXJCaW5kaW5nKCksIHBhcnNlTW9kZSwgZXhlY3V0YWJsZS0+ZGVy
aXZlZENvbnRleHRUeXBlKCksIGZhbHNlLCBpc0NsYXNzQ29udGV4dCkpOwogCiAgICAgYXV0byBn
ZW5lcmF0b3Ioc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUdlbmVyYXRvcj4odm0sIGZ1bmN0aW9u
LmdldCgpLCByZXN1bHQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBleGVjdXRhYmxlLT5w
YXJlbnRTY29wZVREWlZhcmlhYmxlcygpKSk7CiAgICAgZXJyb3IgPSBnZW5lcmF0b3ItPmdlbmVy
YXRlKCk7CkBAIC03Niw3ICs3OCw3IEBAIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2Nr
KiBnZW5lcmF0ZVVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2soCiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KIAotVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlKFZNKiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJj
ZSwgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiYmIHNvdXJjZU92ZXJyaWRlLCBGdW5jdGlvbk1ldGFk
YXRhTm9kZSogbm9kZSwgVW5saW5rZWRGdW5jdGlvbktpbmQga2luZCwgQ29uc3RydWN0QWJpbGl0
eSBjb25zdHJ1Y3RBYmlsaXR5LCBHZW5lcmF0b3JUaGlzTW9kZSBnZW5lcmF0b3JUaGlzTW9kZSwg
VmFyaWFibGVFbnZpcm9ubWVudCYgcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIGJvb2wgaXNEZXJp
dmVkQ29uc3RydWN0b3JDb250ZXh0KQorVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZNKiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0
IFNvdXJjZUNvZGUmIHNvdXJjZSwgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiYmIHNvdXJjZU92ZXJy
aWRlLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbm9kZSwgVW5saW5rZWRGdW5jdGlvbktpbmQga2lu
ZCwgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5LCBHZW5lcmF0b3JUaGlzTW9kZSBn
ZW5lcmF0b3JUaGlzTW9kZSwgVmFyaWFibGVFbnZpcm9ubWVudCYgcGFyZW50U2NvcGVURFpWYXJp
YWJsZXMsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUpCiAgICAgOiBCYXNl
KCp2bSwgc3RydWN0dXJlKQogICAgICwgbV9uYW1lKG5vZGUtPmlkZW50KCkpCiAgICAgLCBtX2lu
ZmVycmVkTmFtZShub2RlLT5pbmZlcnJlZE5hbWUoKSkKQEAgLTEwMiw3ICsxMDQsNyBAQCBVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0qIHZt
LCBTdHJ1Y3R1cmUqIHN0cnVjdAogICAgICwgbV9mdW5jdGlvbk1vZGUobm9kZS0+ZnVuY3Rpb25N
b2RlKCkpCiAgICAgLCBtX2dlbmVyYXRvclRoaXNNb2RlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihn
ZW5lcmF0b3JUaGlzTW9kZSkpCiAgICAgLCBtX3N1cGVyQmluZGluZyhzdGF0aWNfY2FzdDx1bnNp
Z25lZD4obm9kZS0+c3VwZXJCaW5kaW5nKCkpKQotICAgICwgbV9pc0Rlcml2ZWRDb25zdHJ1Y3Rv
ckNvbnRleHQoaXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KQorICAgICwgbV9kZXJpdmVkQ29u
dGV4dFR5cGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRlcml2ZWRDb250ZXh0VHlwZSkpCiB7CiAg
ICAgQVNTRVJUKG1fY29uc3RydWN0b3JLaW5kID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihub2Rl
LT5jb25zdHJ1Y3RvcktpbmQoKSkpOwogICAgIG1fcGFyZW50U2NvcGVURFpWYXJpYWJsZXMuc3dh
cChwYXJlbnRTY29wZVREWlZhcmlhYmxlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oCmluZGV4IGZh
MjFlMzg3MDA3MWJjMWEwMGZjYTU1ZjI5OTRjNWE3YzlkYWViMGUuLmQ4YmQ4N2I5NzgzYjdlNDRj
NzM4YzYwYmJjMmM0ZGZhMGIwMDIwMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oCkBAIC0zMCw2
ICszMCw3IEBACiAjaW5jbHVkZSAiQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oIgogI2luY2x1ZGUg
IkNvZGVUeXBlLmgiCiAjaW5jbHVkZSAiQ29uc3RydWN0QWJpbGl0eS5oIgorI2luY2x1ZGUgIkV4
ZWN1dGFibGVJbmZvLmgiCiAjaW5jbHVkZSAiRXhwcmVzc2lvblJhbmdlSW5mby5oIgogI2luY2x1
ZGUgIkdlbmVyYXRvclRoaXNNb2RlLmgiCiAjaW5jbHVkZSAiSGFuZGxlckluZm8uaCIKQEAgLTY2
LDEwICs2NywxMCBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKICAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8
IFN0cnVjdHVyZUlzSW1tb3J0YWw7CiAKLSAgICBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGUqIGNyZWF0ZShWTSogdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVuY3Rpb25N
ZXRhZGF0YU5vZGUqIG5vZGUsIFVubGlua2VkRnVuY3Rpb25LaW5kIHVubGlua2VkRnVuY3Rpb25L
aW5kLCBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHksIEdlbmVyYXRvclRoaXNNb2Rl
IGdlbmVyYXRvclRoaXNNb2RlLCBWYXJpYWJsZUVudmlyb25tZW50JiBwYXJlbnRTY29wZVREWlZh
cmlhYmxlcywgYm9vbCBpc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQsIFJlZlB0cjxTb3VyY2VQ
cm92aWRlcj4mJiBzb3VyY2VPdmVycmlkZSA9IG51bGxwdHIpCisgICAgc3RhdGljIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGUoVk0qIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3Vy
Y2UsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBub2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCB1bmxp
bmtlZEZ1bmN0aW9uS2luZCwgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5LCBHZW5l
cmF0b3JUaGlzTW9kZSBnZW5lcmF0b3JUaGlzTW9kZSwgVmFyaWFibGVFbnZpcm9ubWVudCYgcGFy
ZW50U2NvcGVURFpWYXJpYWJsZXMsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5
cGUsIFJlZlB0cjxTb3VyY2VQcm92aWRlcj4mJiBzb3VyY2VPdmVycmlkZSA9IG51bGxwdHIpCiAg
ICAgewogICAgICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogaW5zdGFuY2UgPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4odm0tPmhl
YXApKQotICAgICAgICAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUodm0sIHZtLT51bmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVN0cnVjdHVyZS5nZXQoKSwgc291cmNlLCBXVEY6Om1vdmUo
c291cmNlT3ZlcnJpZGUpLCBub2RlLCB1bmxpbmtlZEZ1bmN0aW9uS2luZCwgY29uc3RydWN0QWJp
bGl0eSwgZ2VuZXJhdG9yVGhpc01vZGUsIHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBpc0Rlcml2
ZWRDb25zdHJ1Y3RvckNvbnRleHQpOworICAgICAgICAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGUodm0sIHZtLT51bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVN0cnVjdHVyZS5nZXQoKSwg
c291cmNlLCBXVEY6Om1vdmUoc291cmNlT3ZlcnJpZGUpLCBub2RlLCB1bmxpbmtlZEZ1bmN0aW9u
S2luZCwgY29uc3RydWN0QWJpbGl0eSwgZ2VuZXJhdG9yVGhpc01vZGUsIHBhcmVudFNjb3BlVERa
VmFyaWFibGVzLCBkZXJpdmVkQ29udGV4dFR5cGUpOwogICAgICAgICBpbnN0YW5jZS0+ZmluaXNo
Q3JlYXRpb24oKnZtKTsKICAgICAgICAgcmV0dXJuIGluc3RhbmNlOwogICAgIH0KQEAgLTEzMCwx
MSArMTMxLDEyIEBAIHB1YmxpYzoKICAgICBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiBwYXJl
bnRTY29wZVREWlZhcmlhYmxlcygpIGNvbnN0IHsgcmV0dXJuICZtX3BhcmVudFNjb3BlVERaVmFy
aWFibGVzOyB9CiAgICAgCiAgICAgYm9vbCBpc0Fycm93RnVuY3Rpb24oKSBjb25zdCB7IHJldHVy
biBtX3BhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlOyB9Ci0g
ICAgYm9vbCBpc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoKSBjb25zdCB7cmV0dXJuIG1faXNE
ZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0OyB9CiAKLXByaXZhdGU6Ci0gICAgVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUoVk0qLCBTdHJ1Y3R1cmUqLCBjb25zdCBTb3VyY2VDb2RlJiwgUmVmUHRy
PFNvdXJjZVByb3ZpZGVyPiYmIHNvdXJjZU92ZXJyaWRlLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSos
IFVubGlua2VkRnVuY3Rpb25LaW5kLCBDb25zdHJ1Y3RBYmlsaXR5LCBHZW5lcmF0b3JUaGlzTW9k
ZSwgVmFyaWFibGVFbnZpcm9ubWVudCYsIGJvb2wgaXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0
KTsKKyAgICBKU0M6OkRlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUoKSBjb25z
dCB7cmV0dXJuIHN0YXRpY19jYXN0PEpTQzo6RGVyaXZlZENvbnRleHRUeXBlPihtX2Rlcml2ZWRD
b250ZXh0VHlwZSk7IH0KICAgICAKK3ByaXZhdGU6CisgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGUoVk0qLCBTdHJ1Y3R1cmUqLCBjb25zdCBTb3VyY2VDb2RlJiwgUmVmUHRyPFNvdXJjZVBy
b3ZpZGVyPiYmIHNvdXJjZU92ZXJyaWRlLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSosIFVubGlua2Vk
RnVuY3Rpb25LaW5kLCBDb25zdHJ1Y3RBYmlsaXR5LCBHZW5lcmF0b3JUaGlzTW9kZSwgVmFyaWFi
bGVFbnZpcm9ubWVudCYsICBKU0M6OkRlcml2ZWRDb250ZXh0VHlwZSk7CisKICAgICBXcml0ZUJh
cnJpZXI8VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaz4gbV91bmxpbmtlZENvZGVCbG9ja0ZvckNh
bGw7CiAgICAgV3JpdGVCYXJyaWVyPFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s+IG1fdW5saW5r
ZWRDb2RlQmxvY2tGb3JDb25zdHJ1Y3Q7CiAKQEAgLTE2Niw3ICsxNjgsNyBAQCBwcml2YXRlOgog
ICAgIHVuc2lnbmVkIG1fZnVuY3Rpb25Nb2RlIDogMTsgLy8gRnVuY3Rpb25Nb2RlCiAgICAgdW5z
aWduZWQgbV9nZW5lcmF0b3JUaGlzTW9kZSA6IDE7CiAgICAgdW5zaWduZWQgbV9zdXBlckJpbmRp
bmcgOiAxOwotICAgIHVuc2lnbmVkIG1faXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0IDogMTsK
KyAgICB1bnNpZ25lZCBtX2Rlcml2ZWRDb250ZXh0VHlwZTogMjsKIAogcHJvdGVjdGVkOgogICAg
IHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mIHZtKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCBiZjYwMWI1
MWY3YWJmMjYzMzg1ODA3OWFmYmMwNjQyMDg2ZGU5ZTY5Li45MzA4ZWEwNTY5MzVlOTQ4ZTE0ODVm
ZjA0OWMwNWY0ZTdhM2QwOGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtMTU3LDcgKzE1Nyw2IEBA
IEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIFByb2dyYW1Ob2Rl
KiBwcm9ncmFtTm9kZSwgVW5saW5rZWRQCiAgICAgLCBtX3RoaXNSZWdpc3RlcihDYWxsRnJhbWU6
OnRoaXNBcmd1bWVudE9mZnNldCgpKQogICAgICwgbV9jb2RlVHlwZShHbG9iYWxDb2RlKQogICAg
ICwgbV92bSgmdm0pCi0gICAgLCBtX2lzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dChmYWxzZSkK
ICAgICAsIG1fbmVlZHNUb1VwZGF0ZUFycm93RnVuY3Rpb25Db250ZXh0KHByb2dyYW1Ob2RlLT51
c2VzQXJyb3dGdW5jdGlvbigpIHx8IHByb2dyYW1Ob2RlLT51c2VzRXZhbCgpKQogewogICAgIEFT
U0VSVF9VTlVTRUQocGFyZW50U2NvcGVURFpWYXJpYWJsZXMsICFwYXJlbnRTY29wZVREWlZhcmlh
Ymxlcy0+c2l6ZSgpKTsKQEAgLTIxMSw4ICsyMTAsOCBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0
ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5r
ZQogICAgIC8vIGNvbXBhdGlibGUgd2l0aCB0YWlsIGNhbGxzICh3ZSBoYXZlIG5vIHdheSBvZiBl
bWl0dGluZyBvcF9kaWRfY2FsbCkuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE0ODgxOQogICAgICwgbV9pblRhaWxQb3NpdGlvbihPcHRpb25zOjp1c2VU
YWlsQ2FsbHMoKSAmJiAhaXNDb25zdHJ1Y3RvcigpICYmIGNvbnN0cnVjdG9yS2luZCgpID09IENv
bnN0cnVjdG9yS2luZDo6Tm9uZSAmJiBpc1N0cmljdE1vZGUoKSAmJiAhbV9zaG91bGRFbWl0UHJv
ZmlsZUhvb2tzKQotICAgICwgbV9pc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoY29kZUJsb2Nr
LT5pc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoKSkKICAgICAsIG1fbmVlZHNUb1VwZGF0ZUFy
cm93RnVuY3Rpb25Db250ZXh0KGZ1bmN0aW9uTm9kZS0+dXNlc0Fycm93RnVuY3Rpb24oKSB8fCBm
dW5jdGlvbk5vZGUtPnVzZXNFdmFsKCkpCisgICAgLCBtX2Rlcml2ZWRDb250ZXh0VHlwZShjb2Rl
QmxvY2stPmRlcml2ZWRDb250ZXh0VHlwZSgpKQogewogICAgIGZvciAoYXV0byYgY29uc3RhbnRS
ZWdpc3RlciA6IG1fbGlua1RpbWVDb25zdGFudFJlZ2lzdGVycykKICAgICAgICAgY29uc3RhbnRS
ZWdpc3RlciA9IG51bGxwdHI7CkBAIC01NzMsOSArNTcyLDkgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6
OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVu
bGlua2UKICAgICAvLyBMb2FkaW5nIHx0aGlzfCBpbnNpZGUgYW4gYXJyb3cgZnVuY3Rpb24gbXVz
dCBiZSBkb25lIGFmdGVyIGluaXRpYWxpemVEZWZhdWx0UGFyYW1ldGVyVmFsdWVzQW5kU2V0dXBG
dW5jdGlvblNjb3BlU3RhY2soKQogICAgIC8vIGJlY2F1c2UgdGhhdCBmdW5jdGlvbiBzZXRzIHVw
IHRoZSBTeW1ib2xUYWJsZSBzdGFjayBhbmQgZW1pdExvYWRUaGlzRnJvbUFycm93RnVuY3Rpb25M
ZXhpY2FsRW52aXJvbm1lbnQoKQogICAgIC8vIGNvbnN1bHRzIHRoZSBTeW1ib2xUYWJsZSBzdGFj
awotICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9k
ZSAmJiBmdW5jdGlvbk5vZGUtPnVzZXNUaGlzKCkpCisgICAgaWYgKFNvdXJjZVBhcnNlTW9kZTo6
QXJyb3dGdW5jdGlvbk1vZGUgPT0gcGFyc2VNb2RlICYmIChmdW5jdGlvbk5vZGUtPnVzZXNUaGlz
KCkgfHwgaXNEZXJpdmVkQ2xhc3NDb250ZXh0KCkgfHwgaXNEZXJpdmVkQ29uc3RydWN0b3JDb250
ZXh0KCkpKQogICAgICAgICBlbWl0TG9hZFRoaXNGcm9tQXJyb3dGdW5jdGlvbkxleGljYWxFbnZp
cm9ubWVudCgpOwotCisgICAgCiAgICAgaWYgKG5lZWRzVG9VcGRhdGVBcnJvd0Z1bmN0aW9uQ29u
dGV4dCgpICYmICFjb2RlQmxvY2stPmlzQXJyb3dGdW5jdGlvbigpKSB7CiAgICAgICAgIGluaXRp
YWxpemVBcnJvd0Z1bmN0aW9uQ29udGV4dFNjb3BlSWZOZWVkZWQoZnVuY3Rpb25TeW1ib2xUYWJs
ZSk7CiAgICAgICAgIGVtaXRQdXRUaGlzVG9BcnJvd0Z1bmN0aW9uQ29udGV4dFNjb3BlKCk7CkBA
IC01OTUsOCArNTk0LDggQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZN
JiB2bSwgRXZhbE5vZGUqIGV2YWxOb2RlLCBVbmxpbmtlZEV2YWxDb2QKICAgICAsIG1fY29kZVR5
cGUoRXZhbENvZGUpCiAgICAgLCBtX3ZtKCZ2bSkKICAgICAsIG1fdXNlc05vblN0cmljdEV2YWwo
Y29kZUJsb2NrLT51c2VzRXZhbCgpICYmICFjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKQotICAg
ICwgbV9pc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoY29kZUJsb2NrLT5pc0Rlcml2ZWRDb25z
dHJ1Y3RvckNvbnRleHQoKSkKICAgICAsIG1fbmVlZHNUb1VwZGF0ZUFycm93RnVuY3Rpb25Db250
ZXh0KGV2YWxOb2RlLT51c2VzQXJyb3dGdW5jdGlvbigpIHx8IGV2YWxOb2RlLT51c2VzRXZhbCgp
KQorICAgICwgbV9kZXJpdmVkQ29udGV4dFR5cGUoY29kZUJsb2NrLT5kZXJpdmVkQ29udGV4dFR5
cGUoKSkKIHsKICAgICBmb3IgKGF1dG8mIGNvbnN0YW50UmVnaXN0ZXIgOiBtX2xpbmtUaW1lQ29u
c3RhbnRSZWdpc3RlcnMpCiAgICAgICAgIGNvbnN0YW50UmVnaXN0ZXIgPSBudWxscHRyOwpAQCAt
NjQ2LDcgKzY0NSw2IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYg
dm0sIE1vZHVsZVByb2dyYW1Ob2RlKiBtb2R1bGVQcm9ncmFtTm9kCiAgICAgLCBtX2NvZGVUeXBl
KE1vZHVsZUNvZGUpCiAgICAgLCBtX3ZtKCZ2bSkKICAgICAsIG1fdXNlc05vblN0cmljdEV2YWwo
ZmFsc2UpCi0gICAgLCBtX2lzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dChmYWxzZSkKICAgICAs
IG1fbmVlZHNUb1VwZGF0ZUFycm93RnVuY3Rpb25Db250ZXh0KG1vZHVsZVByb2dyYW1Ob2RlLT51
c2VzQXJyb3dGdW5jdGlvbigpIHx8IG1vZHVsZVByb2dyYW1Ob2RlLT51c2VzRXZhbCgpKQogewog
ICAgIEFTU0VSVF9VTlVTRUQocGFyZW50U2NvcGVURFpWYXJpYWJsZXMsICFwYXJlbnRTY29wZVRE
WlZhcmlhYmxlcy0+c2l6ZSgpKTsKQEAgLTQwNDksMTQgKzQwNDcsMTQgQEAgdm9pZCBCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdFB1dE5ld1RhcmdldFRvQXJyb3dGdW5jdGlvbkNvbnRleHRTY29wZSgp
CiAgICAgCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0RGVyaXZlZENvbnN0cnVjdG9y
VG9BcnJvd0Z1bmN0aW9uQ29udGV4dFNjb3BlKCkKIHsKLSAgICBpZiAoaXNDb25zdHJ1Y3Rvcigp
ICYmIGNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCkgeworICAg
IGlmICgoaXNDb25zdHJ1Y3RvcigpICYmIGNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9y
S2luZDo6RGVyaXZlZCkgfHwgbV9jb2RlQmxvY2stPmlzQ2xhc3NDb250ZXh0KCkpIHsKICAgICAg
ICAgQVNTRVJUKG1fYXJyb3dGdW5jdGlvbkNvbnRleHRMZXhpY2FsRW52aXJvbm1lbnRSZWdpc3Rl
cik7CiAgICAgICAgICAgICAKICAgICAgICAgVmFyaWFibGUgcHJvdG9TY29wZSA9IHZhcmlhYmxl
KHByb3BlcnR5TmFtZXMoKS5kZXJpdmVkQ29uc3RydWN0b3JQcml2YXRlTmFtZSk7CiAgICAgICAg
IGVtaXRQdXRUb1Njb3BlKG1fYXJyb3dGdW5jdGlvbkNvbnRleHRMZXhpY2FsRW52aXJvbm1lbnRS
ZWdpc3RlciwgcHJvdG9TY29wZSwgJm1fY2FsbGVlUmVnaXN0ZXIsIERvTm90VGhyb3dJZk5vdEZv
dW5kLCBJbml0aWFsaXphdGlvbik7CiAgICAgfQogfQotICAgIAorCiB2b2lkIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0UHV0VGhpc1RvQXJyb3dGdW5jdGlvbkNvbnRleHRTY29wZSgpCiB7CiAgICAg
QVNTRVJUKGlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCgpIHx8IG1fYXJyb3dGdW5jdGlvbkNv
bnRleHRMZXhpY2FsRW52aXJvbm1lbnRSZWdpc3RlciAhPSBudWxscHRyKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApp
bmRleCAxMDBiY2IzZGVjNDRlZDJkYzYwMGJlZTU0OWYwZWY1NzdjNDI3NjlmLi4wMjI5Yjg5ZTcz
MGE0NDkwOTc0NzkzMWUyM2Q2MDgxZGQ5ZDA1ZmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBAIC0yODIsNyAr
MjgyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGNvbnN0IENvbW1vbklkZW50aWZpZXJz
JiBwcm9wZXJ0eU5hbWVzKCkgY29uc3QgeyByZXR1cm4gKm1fdm0tPnByb3BlcnR5TmFtZXM7IH0K
IAogICAgICAgICBib29sIGlzQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9j
ay0+aXNDb25zdHJ1Y3RvcigpOyB9Ci0gICAgICAgIGJvb2wgaXNEZXJpdmVkQ29uc3RydWN0b3JD
b250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPmlzRGVyaXZlZENvbnN0cnVjdG9y
Q29udGV4dCgpOyB9CisgICAgICAgIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5
cGUoKSBjb25zdCB7IHJldHVybiBtX2Rlcml2ZWRDb250ZXh0VHlwZTsgfQogICAgICAgICBib29s
IHVzZXNBcnJvd0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zY29wZU5vZGUtPnVzZXNBcnJv
d0Z1bmN0aW9uKCk7IH0KICAgICAgICAgYm9vbCBuZWVkc1RvVXBkYXRlQXJyb3dGdW5jdGlvbkNv
bnRleHQoKSBjb25zdCB7IHJldHVybiBtX25lZWRzVG9VcGRhdGVBcnJvd0Z1bmN0aW9uQ29udGV4
dDsgfQogICAgICAgICBib29sIHVzZXNFdmFsKCkgY29uc3QgeyByZXR1cm4gbV9zY29wZU5vZGUt
PnVzZXNFdmFsKCk7IH0KQEAgLTY5OSw2ICs2OTksMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzQnVpbHRpbkZ1
bmN0aW9uOyB9CiAKICAgICAgICAgT3Bjb2RlSUQgbGFzdE9wY29kZUlEKCkgY29uc3QgeyByZXR1
cm4gbV9sYXN0T3Bjb2RlSUQ7IH0KKyAgICAgICAgCisgICAgICAgIGJvb2wgaXNEZXJpdmVkQ29u
c3RydWN0b3JDb250ZXh0KCkgeyByZXR1cm4gbV9kZXJpdmVkQ29udGV4dFR5cGUgPT0gRGVyaXZl
ZENvbnRleHRUeXBlOjpEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0OyB9CisgICAgICAgIGJvb2wg
aXNEZXJpdmVkQ2xhc3NDb250ZXh0KCkgeyByZXR1cm4gbV9kZXJpdmVkQ29udGV4dFR5cGUgPT0g
RGVyaXZlZENvbnRleHRUeXBlOjpEZXJpdmVkTWV0aG9kQ29udGV4dDsgfQorICAgICAgICBib29s
IGlzQXJyb3dGdW5jdGlvbigpIHsgcmV0dXJuIG1fY29kZUJsb2NrLT5pc0Fycm93RnVuY3Rpb24o
KTsgfQogCiAgICAgICAgIGVudW0gY2xhc3MgVERaQ2hlY2tPcHRpbWl6YXRpb24geyBPcHRpbWl6
ZSwgRG9Ob3RPcHRpbWl6ZSB9OwogICAgICAgICBlbnVtIGNsYXNzIE5lc3RlZFNjb3BlVHlwZSB7
IElzTmVzdGVkLCBJc05vdE5lc3RlZCB9OwpAQCAtNzk2LDcgKzgwMCwxNCBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgCiAgICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBtYWtl
RnVuY3Rpb24oRnVuY3Rpb25NZXRhZGF0YU5vZGUqIG1ldGFkYXRhKQogICAgICAgICB7Ci0gICAg
ICAgICAgICBib29sIG5ld2lzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCA9IGNvbnN0cnVjdG9y
S2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCB8fCAobV9pc0Rlcml2ZWRDb25zdHJ1
Y3RvckNvbnRleHQgJiYgbWV0YWRhdGEtPnBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6
QXJyb3dGdW5jdGlvbk1vZGUpOworICAgICAgICAgICAgRGVyaXZlZENvbnRleHRUeXBlIG5ld0Rl
cml2ZWRDb250ZXh0VHlwZSA9IERlcml2ZWRDb250ZXh0VHlwZTo6Tm9uZTsKKworICAgICAgICAg
ICAgaWYgKG1ldGFkYXRhLT5wYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVu
Y3Rpb25Nb2RlKSB7CisgICAgICAgICAgICAgICAgaWYgKGNvbnN0cnVjdG9yS2luZCgpID09IENv
bnN0cnVjdG9yS2luZDo6RGVyaXZlZCB8fCBpc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoKSkK
KyAgICAgICAgICAgICAgICAgICAgbmV3RGVyaXZlZENvbnRleHRUeXBlID0gRGVyaXZlZENvbnRl
eHRUeXBlOjpEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0OworICAgICAgICAgICAgICAgIGVsc2Ug
aWYgKG1fY29kZUJsb2NrLT5pc0NsYXNzQ29udGV4dCgpIHx8IChtX2Rlcml2ZWRDb250ZXh0VHlw
ZSA9PSBEZXJpdmVkQ29udGV4dFR5cGU6OkRlcml2ZWRNZXRob2RDb250ZXh0KSkKKyAgICAgICAg
ICAgICAgICAgICAgbmV3RGVyaXZlZENvbnRleHRUeXBlID0gRGVyaXZlZENvbnRleHRUeXBlOjpE
ZXJpdmVkTWV0aG9kQ29udGV4dDsKKyAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgVmFyaWFi
bGVFbnZpcm9ubWVudCB2YXJpYWJsZXNVbmRlclREWjsKICAgICAgICAgICAgIGdldFZhcmlhYmxl
c1VuZGVyVERaKHZhcmlhYmxlc1VuZGVyVERaKTsKQEAgLTgxNiw3ICs4MjcsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpH
ZW5lcmF0b3JCb2R5TW9kZSAmJiBpc0NvbnN0cnVjdG9yKCkpCiAgICAgICAgICAgICAgICAgZ2Vu
ZXJhdG9yVGhpc01vZGUgPSBHZW5lcmF0b3JUaGlzTW9kZTo6RW1wdHk7CiAKLSAgICAgICAgICAg
IHJldHVybiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKG1fdm0sIG1fc2NvcGVO
b2RlLT5zb3VyY2UoKSwgbWV0YWRhdGEsIGlzQnVpbHRpbkZ1bmN0aW9uKCkgPyBVbmxpbmtlZEJ1
aWx0aW5GdW5jdGlvbiA6IFVubGlua2VkTm9ybWFsRnVuY3Rpb24sIGNvbnN0cnVjdEFiaWxpdHks
IGdlbmVyYXRvclRoaXNNb2RlLCB2YXJpYWJsZXNVbmRlclREWiwgbmV3aXNEZXJpdmVkQ29uc3Ry
dWN0b3JDb250ZXh0KTsKKyAgICAgICAgICAgIHJldHVybiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZTo6Y3JlYXRlKG1fdm0sIG1fc2NvcGVOb2RlLT5zb3VyY2UoKSwgbWV0YWRhdGEsIGlzQnVp
bHRpbkZ1bmN0aW9uKCkgPyBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiA6IFVubGlua2VkTm9ybWFs
RnVuY3Rpb24sIGNvbnN0cnVjdEFiaWxpdHksIGdlbmVyYXRvclRoaXNNb2RlLCB2YXJpYWJsZXNV
bmRlclREWiwgbmV3RGVyaXZlZENvbnRleHRUeXBlKTsKICAgICAgICAgfQogCiAgICAgICAgIHZv
aWQgZ2V0VmFyaWFibGVzVW5kZXJURFooVmFyaWFibGVFbnZpcm9ubWVudCYpOwpAQCAtOTI2LDkg
KzkzNyw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBib29sIG1faXNCdWlsdGluRnVuY3Rp
b24geyBmYWxzZSB9OwogICAgICAgICBib29sIG1fdXNlc05vblN0cmljdEV2YWwgeyBmYWxzZSB9
OwogICAgICAgICBib29sIG1faW5UYWlsUG9zaXRpb24geyBmYWxzZSB9OwotICAgICAgICBib29s
IG1faXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0IHsgZmFsc2UgfTsKICAgICAgICAgYm9vbCBt
X25lZWRzVG9VcGRhdGVBcnJvd0Z1bmN0aW9uQ29udGV4dDsKICAgICAgICAgYm9vbCBtX2lzTmV3
VGFyZ2V0TG9hZGVkSW5BcnJvd0Z1bmN0aW9uIHsgZmFsc2UgfTsKKyAgICAgICAgRGVyaXZlZENv
bnRleHRUeXBlIG1fZGVyaXZlZENvbnRleHRUeXBlIHsgRGVyaXZlZENvbnRleHRUeXBlOjpOb25l
IH07CiAgICAgfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9Ob2Rlc0NvZGVnZW4uY3BwCmluZGV4IDRhZDA3OTU0YjJmNWM4YTU5NWM4ODM1OGNhNTAx
MDEwMzI5ZDQzMzguLmJiMGUxMTdjMGYyYWMxN2RlMWY0MTEyZDJkYWQ0YmRiNzY1MWUyY2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2Vu
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdl
bi5jcHAKQEAgLTE3MywxMiArMTczLDE2IEBAIFJlZ2lzdGVySUQqIFN1cGVyTm9kZTo6ZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzCiAKICAg
ICBSZWdpc3RlcklEIGNhbGxlZTsKICAgICBjYWxsZWUuc2V0SW5kZXgoSlNTdGFjazo6Q2FsbGVl
KTsKLQogICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLmZpbmFsRGVz
dGluYXRpb24oZHN0KSwgJmNhbGxlZSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS51bmRlcnNj
b3JlUHJvdG8pOwogfQogCiBzdGF0aWMgUmVnaXN0ZXJJRCogZW1pdEhvbWVPYmplY3RGb3JDYWxs
ZWUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvcikKIHsKKyAgICBpZiAoZ2VuZXJhdG9yLmlz
RGVyaXZlZENsYXNzQ29udGV4dCgpIHx8IGdlbmVyYXRvci5pc0Rlcml2ZWRDb25zdHJ1Y3RvckNv
bnRleHQoKSkgeworICAgICAgICBSZWdpc3RlcklEKiBkZXJpdmVkQ29uc3RydWN0b3IgPSBnZW5l
cmF0b3IuZW1pdExvYWREZXJpdmVkQ29uc3RydWN0b3JGcm9tQXJyb3dGdW5jdGlvbkxleGljYWxF
bnZpcm9ubWVudCgpOworICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGdlbmVy
YXRvci5uZXdUZW1wb3JhcnkoKSwgZGVyaXZlZENvbnN0cnVjdG9yLCBnZW5lcmF0b3IucHJvcGVy
dHlOYW1lcygpLmhvbWVPYmplY3RQcml2YXRlTmFtZSk7CisgICAgfQorCiAgICAgUmVnaXN0ZXJJ
RCBjYWxsZWU7CiAgICAgY2FsbGVlLnNldEluZGV4KEpTU3RhY2s6OkNhbGxlZSk7CiAgICAgcmV0
dXJuIGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksICZjYWxs
ZWUsIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuaG9tZU9iamVjdFByaXZhdGVOYW1lKTsKQEAg
LTc0OSw4ICs3NTMsOCBAQCBSZWdpc3RlcklEKiBGdW5jdGlvbkNhbGxWYWx1ZU5vZGU6OmVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZQogICAgIFJlZlB0cjxSZWdp
c3RlcklEPiByZXR1cm5WYWx1ZSA9IGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgZnVu
Yy5nZXQoKSk7CiAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9h
cmdzKTsKICAgICBpZiAobV9leHByLT5pc1N1cGVyTm9kZSgpKSB7Ci0gICAgICAgIEFTU0VSVChn
ZW5lcmF0b3IuaXNDb25zdHJ1Y3RvcigpIHx8IGdlbmVyYXRvci5pc0Rlcml2ZWRDb25zdHJ1Y3Rv
ckNvbnRleHQoKSk7Ci0gICAgICAgIEFTU0VSVChnZW5lcmF0b3IuY29uc3RydWN0b3JLaW5kKCkg
PT0gQ29uc3RydWN0b3JLaW5kOjpEZXJpdmVkIHx8IGdlbmVyYXRvci5pc0Rlcml2ZWRDb25zdHJ1
Y3RvckNvbnRleHQoKSk7CisgICAgICAgIEFTU0VSVChnZW5lcmF0b3IuaXNDb25zdHJ1Y3Rvcigp
IHx8IGdlbmVyYXRvci5kZXJpdmVkQ29udGV4dFR5cGUoKSA9PSBEZXJpdmVkQ29udGV4dFR5cGU6
OkRlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQpOworICAgICAgICBBU1NFUlQoZ2VuZXJhdG9yLmNv
bnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCB8fCBnZW5lcmF0b3Iu
ZGVyaXZlZENvbnRleHRUeXBlKCkgPT0gRGVyaXZlZENvbnRleHRUeXBlOjpEZXJpdmVkQ29uc3Ry
dWN0b3JDb250ZXh0KTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKGNhbGxBcmd1bWVudHMu
dGhpc1JlZ2lzdGVyKCksIGdlbmVyYXRvci5uZXdUYXJnZXQoKSk7CiAgICAgICAgIFJlZ2lzdGVy
SUQqIHJldCA9IGdlbmVyYXRvci5lbWl0Q29uc3RydWN0KHJldHVyblZhbHVlLmdldCgpLCBmdW5j
LmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90
U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0
b3IudGhpc1JlZ2lzdGVyKCksIHJldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcAppbmRleCBlODEyZWUwNTY4NzNlZmY4OWU4
MDE5OTAzYjk3MTRmODA2ZWJkMTQ2Li5mNDc5NGZkNDU2M2UwYjlmMmFjODU1OGIzOGIzZjllZDMz
NGE1Mzk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdn
ZXJDYWxsRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1
Z2dlckNhbGxGcmFtZS5jcHAKQEAgLTE5Miw3ICsxOTIsNyBAQCBKU1ZhbHVlIERlYnVnZ2VyQ2Fs
bEZyYW1lOjpldmFsdWF0ZShjb25zdCBTdHJpbmcmIHNjcmlwdCwgTmFrZWRQdHI8RXhjZXB0aW9u
PiYgZQogICAgIFZhcmlhYmxlRW52aXJvbm1lbnQgdmFyaWFibGVzVW5kZXJURFo7CiAgICAgSlNT
Y29wZTo6Y29sbGVjdFZhcmlhYmxlc1VuZGVyVERaKHNjb3BlKCktPmpzU2NvcGUoKSwgdmFyaWFi
bGVzVW5kZXJURFopOwogCi0gICAgRXZhbEV4ZWN1dGFibGUqIGV2YWwgPSBFdmFsRXhlY3V0YWJs
ZTo6Y3JlYXRlKGNhbGxGcmFtZSwgbWFrZVNvdXJjZShzY3JpcHQpLCBjb2RlQmxvY2suaXNTdHJp
Y3RNb2RlKCksIHRoaXNURFpNb2RlLCBjb2RlQmxvY2sudW5saW5rZWRDb2RlQmxvY2soKS0+aXNE
ZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KCksIGNvZGVCbG9jay51bmxpbmtlZENvZGVCbG9jaygp
LT5pc0Fycm93RnVuY3Rpb24oKSwgJnZhcmlhYmxlc1VuZGVyVERaKTsKKyAgICBFdmFsRXhlY3V0
YWJsZSogZXZhbCA9IEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoY2FsbEZyYW1lLCBtYWtlU291cmNl
KHNjcmlwdCksIGNvZGVCbG9jay5pc1N0cmljdE1vZGUoKSwgdGhpc1REWk1vZGUsIGNvZGVCbG9j
ay51bmxpbmtlZENvZGVCbG9jaygpLT5kZXJpdmVkQ29udGV4dFR5cGUoKSwgY29kZUJsb2NrLnVu
bGlua2VkQ29kZUJsb2NrKCktPmlzQXJyb3dGdW5jdGlvbigpLCAmdmFyaWFibGVzVW5kZXJURFop
OwogICAgIGlmICh2bS5leGNlcHRpb24oKSkgewogICAgICAgICBleGNlcHRpb24gPSB2bS5leGNl
cHRpb24oKTsKICAgICAgICAgdm0uY2xlYXJFeGNlcHRpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCmluZGV4IGZlMDJjNDFiNGMw
ODNjZmMzZGE4NmZjMTVmZTM2YmQyYjMwZjIzYjYuLjRjODZjNjFiYjk3MjEyODQ5OTY4MzY0NzFk
MDRmNTM2NDVmYmJlMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9JbnRlcnByZXRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0ludGVycHJldGVyLmNwcApAQCAtMTg1LDcgKzE4NSw3IEBAIEpTVmFsdWUgZXZhbChDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKICAgICAgICAgLy8gSWYgdGhlIGxpdGVyYWwgcGFyc2VyIGJhaWxl
ZCwgaXQgc2hvdWxkIG5vdCBoYXZlIHRocm93biBleGNlcHRpb25zLgogICAgICAgICBBU1NFUlQo
IWNhbGxGcmFtZS0+dm0oKS5leGNlcHRpb24oKSk7CiAKLSAgICAgICAgZXZhbCA9IGNhbGxlckNv
ZGVCbG9jay0+ZXZhbENvZGVDYWNoZSgpLmdldFNsb3coY2FsbEZyYW1lLCBjYWxsZXJDb2RlQmxv
Y2ssIGNhbGxlckNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCksIHRoaXNURFpNb2RlLCBjYWxsZXJD
b2RlQmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCktPmlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4
dCgpLCBjYWxsZXJDb2RlQmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCktPmlzQXJyb3dGdW5jdGlv
bigpLCBzb3VyY2VDb2RlLCBjYWxsZXJTY29wZUNoYWluKTsKKyAgICAgICAgZXZhbCA9IGNhbGxl
ckNvZGVCbG9jay0+ZXZhbENvZGVDYWNoZSgpLmdldFNsb3coY2FsbEZyYW1lLCBjYWxsZXJDb2Rl
QmxvY2ssIGNhbGxlckNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCksIHRoaXNURFpNb2RlLCBjYWxs
ZXJDb2RlQmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCktPmRlcml2ZWRDb250ZXh0VHlwZSgpLCBj
YWxsZXJDb2RlQmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCktPmlzQXJyb3dGdW5jdGlvbigpLCBz
b3VyY2VDb2RlLCBjYWxsZXJTY29wZUNoYWluKTsKIAogICAgICAgICBpZiAoIWV2YWwpCiAgICAg
ICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db2RlQ2FjaGUuY3BwCmluZGV4IGIxMGIxMTRlZmY1NjQ2YzM3YmU1Mjk1NTM2Yzg5N2Fh
MTM0ZjBjNmQuLjc0MjQzNmQ2YWZmZjkxYWNlMGZkNzA2ODNjMmZjYzFjNjhjM2I1ZGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcApAQCAtMTg4LDcgKzE4
OCw5IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBDb2RlQ2FjaGU6OmdldEZ1bmN0aW9u
RXhlY3V0YWJsZUZyb21HbG9iYWxDb2RlKFZNJiB2CiAgICAgbWV0YWRhdGEtPnNldEVuZFBvc2l0
aW9uKHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUpOwogICAgIC8vIFRoZSBGdW5jdGlvbiBjb25z
dHJ1Y3RvciBvbmx5IGhhcyBhY2Nlc3MgdG8gZ2xvYmFsIHZhcmlhYmxlcywgc28gbm8gdmFyaWFi
bGVzIHdpbGwgYmUgdW5kZXIgVERaLgogICAgIFZhcmlhYmxlRW52aXJvbm1lbnQgZW1wdHlURFpW
YXJpYWJsZXM7Ci0gICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0
YWJsZSA9IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUoJnZtLCBzb3VyY2UsIG1l
dGFkYXRhLCBVbmxpbmtlZE5vcm1hbEZ1bmN0aW9uLCBDb25zdHJ1Y3RBYmlsaXR5OjpDYW5Db25z
dHJ1Y3QsIEdlbmVyYXRvclRoaXNNb2RlOjpOb25FbXB0eSwgZW1wdHlURFpWYXJpYWJsZXMsIGZh
bHNlKTsKKworICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFi
bGUgPSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKCZ2bSwgc291cmNlLCBtZXRh
ZGF0YSwgVW5saW5rZWROb3JtYWxGdW5jdGlvbiwgQ29uc3RydWN0QWJpbGl0eTo6Q2FuQ29uc3Ry
dWN0LCBHZW5lcmF0b3JUaGlzTW9kZTo6Tm9uRW1wdHksIGVtcHR5VERaVmFyaWFibGVzLCBEZXJp
dmVkQ29udGV4dFR5cGU6Ok5vbmUpOworCiAgICAgZnVuY3Rpb25FeGVjdXRhYmxlLT5tX25hbWVW
YWx1ZS5zZXQodm0sIGZ1bmN0aW9uRXhlY3V0YWJsZSwganNTdHJpbmcoJnZtLCBuYW1lLnN0cmlu
ZygpKSk7CiAKICAgICBtX3NvdXJjZUNvZGUuYWRkQ2FjaGUoa2V5LCBTb3VyY2VDb2RlVmFsdWUo
dm0sIGZ1bmN0aW9uRXhlY3V0YWJsZSwgbV9zb3VyY2VDb2RlLmFnZSgpKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCmluZGV4IGY1ZGY3N2Q5ODdjMDNj
YmU2MDQzYTQ3ZGNlYjNhOTEzMTFiZGYyMzAuLjllNDc1MTkyYjA5MmE1ZjU5ZTNhNjMwMzBkMTlh
NzgwMmUwY2JhMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4
ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFi
bGUuY3BwCkBAIC0xMzEsMTQgKzEzMSwxNCBAQCBJbnRyaW5zaWMgTmF0aXZlRXhlY3V0YWJsZTo6
aW50cmluc2ljKCkgY29uc3QKIAogY29uc3QgQ2xhc3NJbmZvIFNjcmlwdEV4ZWN1dGFibGU6OnNf
aW5mbyA9IHsgIlNjcmlwdEV4ZWN1dGFibGUiLCAmRXhlY3V0YWJsZUJhc2U6OnNfaW5mbywgMCwg
Q1JFQVRFX01FVEhPRF9UQUJMRShTY3JpcHRFeGVjdXRhYmxlKSB9OwogCi1TY3JpcHRFeGVjdXRh
YmxlOjpTY3JpcHRFeGVjdXRhYmxlKFN0cnVjdHVyZSogc3RydWN0dXJlLCBWTSYgdm0sIGNvbnN0
IFNvdXJjZUNvZGUmIHNvdXJjZSwgYm9vbCBpc0luU3RyaWN0Q29udGV4dCwgYm9vbCBpc0luRGVy
aXZlZENvbnN0cnVjdG9yQ29udGV4dCwgYm9vbCBpc0luQXJyb3dGdW5jdGlvbkNvbnRleHQpCitT
Y3JpcHRFeGVjdXRhYmxlOjpTY3JpcHRFeGVjdXRhYmxlKFN0cnVjdHVyZSogc3RydWN0dXJlLCBW
TSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgYm9vbCBpc0luU3RyaWN0Q29udGV4dCwg
RGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgYm9vbCBpc0luQXJyb3dGdW5j
dGlvbkNvbnRleHQpCiAgICAgOiBFeGVjdXRhYmxlQmFzZSh2bSwgc3RydWN0dXJlLCBOVU1fUEFS
QU1FVEVSU19OT1RfQ09NUElMRUQpCiAgICAgLCBtX3NvdXJjZShzb3VyY2UpCiAgICAgLCBtX2Zl
YXR1cmVzKGlzSW5TdHJpY3RDb250ZXh0ID8gU3RyaWN0TW9kZUZlYXR1cmUgOiAwKQogICAgICwg
bV9oYXNDYXB0dXJlZFZhcmlhYmxlcyhmYWxzZSkKICAgICAsIG1fbmV2ZXJJbmxpbmUoZmFsc2Up
CiAgICAgLCBtX2RpZFRyeVRvRW50ZXJJbkxvb3AoZmFsc2UpCi0gICAgLCBtX2lzRGVyaXZlZENv
bnN0cnVjdG9yQ29udGV4dChpc0luRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCkKKyAgICAsIG1f
ZGVyaXZlZENvbnRleHRUeXBlKGRlcml2ZWRDb250ZXh0VHlwZSkKICAgICAsIG1faXNBcnJvd0Z1
bmN0aW9uQ29udGV4dChpc0luQXJyb3dGdW5jdGlvbkNvbnRleHQpCiAgICAgLCBtX292ZXJyaWRl
TGluZU51bWJlcigtMSkKICAgICAsIG1fZmlyc3RMaW5lKC0xKQpAQCAtNDE0LDcgKzQxNCw3IEBA
IEpTT2JqZWN0KiBTY3JpcHRFeGVjdXRhYmxlOjpwcmVwYXJlRm9yRXhlY3V0aW9uSW1wbCgKIAog
Y29uc3QgQ2xhc3NJbmZvIEV2YWxFeGVjdXRhYmxlOjpzX2luZm8gPSB7ICJFdmFsRXhlY3V0YWJs
ZSIsICZTY3JpcHRFeGVjdXRhYmxlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoRXZh
bEV4ZWN1dGFibGUpIH07CiAKLUV2YWxFeGVjdXRhYmxlKiBFdmFsRXhlY3V0YWJsZTo6Y3JlYXRl
KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBib29sIGlzSW5TdHJp
Y3RDb250ZXh0LCBUaGlzVERaTW9kZSB0aGlzVERaTW9kZSwgYm9vbCBpc0Rlcml2ZWRDb25zdHJ1
Y3RvckNvbnRleHQsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgY29uc3QgVmFyaWFibGVF
bnZpcm9ubWVudCogdmFyaWFibGVzVW5kZXJURFopCitFdmFsRXhlY3V0YWJsZSogRXZhbEV4ZWN1
dGFibGU6OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwg
Ym9vbCBpc0luU3RyaWN0Q29udGV4dCwgVGhpc1REWk1vZGUgdGhpc1REWk1vZGUsIERlcml2ZWRD
b250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4
dCwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCogdmFyaWFibGVzVW5kZXJURFopCiB7CiAgICAg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3Qo
KTsKICAgICBpZiAoIWdsb2JhbE9iamVjdC0+ZXZhbEVuYWJsZWQoKSkgewpAQCAtNDIyLDcgKzQy
Miw3IEBAIEV2YWxFeGVjdXRhYmxlKiBFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cmNlCiAgICAgICAgIHJldHVybiAwOwogICAgIH0K
IAotICAgIEV2YWxFeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0
ZUNlbGw8RXZhbEV4ZWN1dGFibGU+KCpleGVjLT5oZWFwKCkpKSBFdmFsRXhlY3V0YWJsZShleGVj
LCBzb3VyY2UsIGlzSW5TdHJpY3RDb250ZXh0LCBpc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQs
IGlzQXJyb3dGdW5jdGlvbkNvbnRleHQpOworICAgIEV2YWxFeGVjdXRhYmxlKiBleGVjdXRhYmxl
ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RXZhbEV4ZWN1dGFibGU+KCpleGVjLT5oZWFw
KCkpKSBFdmFsRXhlY3V0YWJsZShleGVjLCBzb3VyY2UsIGlzSW5TdHJpY3RDb250ZXh0LCBkZXJp
dmVkQ29udGV4dFR5cGUsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQpOwogICAgIGV4ZWN1dGFibGUt
PmZpbmlzaENyZWF0aW9uKGV4ZWMtPnZtKCkpOwogCiAgICAgVW5saW5rZWRFdmFsQ29kZUJsb2Nr
KiB1bmxpbmtlZEV2YWxDb2RlID0gZ2xvYmFsT2JqZWN0LT5jcmVhdGVFdmFsQ29kZUJsb2NrKGV4
ZWMsIGV4ZWN1dGFibGUsIHRoaXNURFpNb2RlLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCB2YXJp
YWJsZXNVbmRlclREWik7CkBAIC00MzQsOCArNDM0LDggQEAgRXZhbEV4ZWN1dGFibGUqIEV2YWxF
eGVjdXRhYmxlOjpjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3Vy
Y2UKICAgICByZXR1cm4gZXhlY3V0YWJsZTsKIH0KIAotRXZhbEV4ZWN1dGFibGU6OkV2YWxFeGVj
dXRhYmxlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBib29sIGlu
U3RyaWN0Q29udGV4dCwgYm9vbCBpc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQsIGJvb2wgaXNB
cnJvd0Z1bmN0aW9uQ29udGV4dCkKLSAgICA6IFNjcmlwdEV4ZWN1dGFibGUoZXhlYy0+dm0oKS5l
dmFsRXhlY3V0YWJsZVN0cnVjdHVyZS5nZXQoKSwgZXhlYy0+dm0oKSwgc291cmNlLCBpblN0cmlj
dENvbnRleHQsIGlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCwgaXNBcnJvd0Z1bmN0aW9uQ29u
dGV4dCkKK0V2YWxFeGVjdXRhYmxlOjpFdmFsRXhlY3V0YWJsZShFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgYm9vbCBpblN0cmljdENvbnRleHQsIERlcml2ZWRDb250
ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCkK
KyAgICA6IFNjcmlwdEV4ZWN1dGFibGUoZXhlYy0+dm0oKS5ldmFsRXhlY3V0YWJsZVN0cnVjdHVy
ZS5nZXQoKSwgZXhlYy0+dm0oKSwgc291cmNlLCBpblN0cmljdENvbnRleHQsIGRlcml2ZWRDb250
ZXh0VHlwZSwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCkKIHsKIH0KIApAQCAtNDQ3LDcgKzQ0Nyw3
IEBAIHZvaWQgRXZhbEV4ZWN1dGFibGU6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQogY29uc3QgQ2xh
c3NJbmZvIFByb2dyYW1FeGVjdXRhYmxlOjpzX2luZm8gPSB7ICJQcm9ncmFtRXhlY3V0YWJsZSIs
ICZTY3JpcHRFeGVjdXRhYmxlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoUHJvZ3Jh
bUV4ZWN1dGFibGUpIH07CiAKIFByb2dyYW1FeGVjdXRhYmxlOjpQcm9ncmFtRXhlY3V0YWJsZShF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSkKLSAgICA6IFNjcmlwdEV4
ZWN1dGFibGUoZXhlYy0+dm0oKS5wcm9ncmFtRXhlY3V0YWJsZVN0cnVjdHVyZS5nZXQoKSwgZXhl
Yy0+dm0oKSwgc291cmNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorICAgIDogU2NyaXB0RXhlY3V0
YWJsZShleGVjLT52bSgpLnByb2dyYW1FeGVjdXRhYmxlU3RydWN0dXJlLmdldCgpLCBleGVjLT52
bSgpLCBzb3VyY2UsIGZhbHNlLCBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUsIGZhbHNlKQogewog
ICAgIG1fdHlwZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0ID0gMDsKICAgICBtX3R5cGVQcm9maWxpbmdF
bmRPZmZzZXQgPSBzb3VyY2UubGVuZ3RoKCkgLSAxOwpAQCAtNDYzLDcgKzQ2Myw3IEBAIHZvaWQg
UHJvZ3JhbUV4ZWN1dGFibGU6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQogY29uc3QgQ2xhc3NJbmZv
IE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjpzX2luZm8gPSB7ICJNb2R1bGVQcm9ncmFtRXhlY3V0
YWJsZSIsICZTY3JpcHRFeGVjdXRhYmxlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUo
TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUpIH07CiAKIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjpN
b2R1bGVQcm9ncmFtRXhlY3V0YWJsZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUm
IHNvdXJjZSkKLSAgICA6IFNjcmlwdEV4ZWN1dGFibGUoZXhlYy0+dm0oKS5tb2R1bGVQcm9ncmFt
RXhlY3V0YWJsZVN0cnVjdHVyZS5nZXQoKSwgZXhlYy0+dm0oKSwgc291cmNlLCBmYWxzZSwgZmFs
c2UsIGZhbHNlKQorICAgIDogU2NyaXB0RXhlY3V0YWJsZShleGVjLT52bSgpLm1vZHVsZVByb2dy
YW1FeGVjdXRhYmxlU3RydWN0dXJlLmdldCgpLCBleGVjLT52bSgpLCBzb3VyY2UsIGZhbHNlLCBE
ZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUsIGZhbHNlKQogewogICAgIG1fdHlwZVByb2ZpbGluZ1N0
YXJ0T2Zmc2V0ID0gMDsKICAgICBtX3R5cGVQcm9maWxpbmdFbmRPZmZzZXQgPSBzb3VyY2UubGVu
Z3RoKCkgLSAxOwpAQCAtNDk1LDcgKzQ5NSw3IEBAIHZvaWQgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFi
bGU6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQogY29uc3QgQ2xhc3NJbmZvIEZ1bmN0aW9uRXhlY3V0
YWJsZTo6c19pbmZvID0geyAiRnVuY3Rpb25FeGVjdXRhYmxlIiwgJlNjcmlwdEV4ZWN1dGFibGU6
OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShGdW5jdGlvbkV4ZWN1dGFibGUpIH07CiAK
IEZ1bmN0aW9uRXhlY3V0YWJsZTo6RnVuY3Rpb25FeGVjdXRhYmxlKFZNJiB2bSwgY29uc3QgU291
cmNlQ29kZSYgc291cmNlLCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogdW5saW5rZWRFeGVj
dXRhYmxlLCB1bnNpZ25lZCBmaXJzdExpbmUsIHVuc2lnbmVkIGxhc3RMaW5lLCB1bnNpZ25lZCBz
dGFydENvbHVtbiwgdW5zaWduZWQgZW5kQ29sdW1uKQotICAgIDogU2NyaXB0RXhlY3V0YWJsZSh2
bS5mdW5jdGlvbkV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIHZtLCBzb3VyY2UsIHVubGlua2Vk
RXhlY3V0YWJsZS0+aXNJblN0cmljdENvbnRleHQoKSwgdW5saW5rZWRFeGVjdXRhYmxlLT5pc0Rl
cml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoKSwgZmFsc2UpCisgICAgOiBTY3JpcHRFeGVjdXRhYmxl
KHZtLmZ1bmN0aW9uRXhlY3V0YWJsZVN0cnVjdHVyZS5nZXQoKSwgdm0sIHNvdXJjZSwgdW5saW5r
ZWRFeGVjdXRhYmxlLT5pc0luU3RyaWN0Q29udGV4dCgpLCB1bmxpbmtlZEV4ZWN1dGFibGUtPmRl
cml2ZWRDb250ZXh0VHlwZSgpLCBmYWxzZSkKICAgICAsIG1fdW5saW5rZWRFeGVjdXRhYmxlKHZt
LCB0aGlzLCB1bmxpbmtlZEV4ZWN1dGFibGUpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoIXNvdXJj
ZS5pc051bGwoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
eGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgK
aW5kZXggODZhNTc3NzA4Zjk1ZjY5NWVkMzIyMDE0MjE5MzgyMDBjMjcwMGY1Yy4uNTA2YTMxZjI0
ODYyMzJmZjg1NTQwNDc5YjllNTY5ZjM5OTJmNDMzOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0V4ZWN1dGFibGUuaApAQCAtMzQ2LDcgKzM0Niw4IEBAIHB1YmxpYzoKICAgICBi
b29sIG5lZWRzQWN0aXZhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faGFzQ2FwdHVyZWRWYXJpYWJs
ZXMgfHwgbV9mZWF0dXJlcyAmIChFdmFsRmVhdHVyZSB8IFdpdGhGZWF0dXJlKTsgfQogICAgIGJv
b2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1faXNBcnJvd0Z1bmN0
aW9uQ29udGV4dDsgfQogICAgIGJvb2wgaXNTdHJpY3RNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9m
ZWF0dXJlcyAmIFN0cmljdE1vZGVGZWF0dXJlOyB9Ci0gICAgYm9vbCBpc0Rlcml2ZWRDb25zdHJ1
Y3RvckNvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2lzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4
dDsgfQorICAgIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUoKSBjb25zdCB7
IHJldHVybiBtX2Rlcml2ZWRDb250ZXh0VHlwZTsgfQorCiAgICAgRUNNQU1vZGUgZWNtYU1vZGUo
KSBjb25zdCB7IHJldHVybiBpc1N0cmljdE1vZGUoKSA/IFN0cmljdE1vZGUgOiBOb3RTdHJpY3RN
b2RlOyB9CiAgICAgICAgIAogICAgIHZvaWQgc2V0TmV2ZXJJbmxpbmUoYm9vbCB2YWx1ZSkgeyBt
X25ldmVySW5saW5lID0gdmFsdWU7IH0KQEAgLTM5NSw3ICszOTYsNyBAQCBwcml2YXRlOgogICAg
IEpTT2JqZWN0KiBwcmVwYXJlRm9yRXhlY3V0aW9uSW1wbChFeGVjU3RhdGUqLCBKU0Z1bmN0aW9u
KiwgSlNTY29wZSosIENvZGVTcGVjaWFsaXphdGlvbktpbmQpOwogCiBwcm90ZWN0ZWQ6Ci0gICAg
U2NyaXB0RXhlY3V0YWJsZShTdHJ1Y3R1cmUqLCBWTSYsIGNvbnN0IFNvdXJjZUNvZGUmLCBib29s
IGlzSW5TdHJpY3RDb250ZXh0LCBib29sIGlzSW5EZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0LCBi
b29sIGlzSW5BcnJvd0Z1bmN0aW9uQ29udGV4dCk7CisgICAgU2NyaXB0RXhlY3V0YWJsZShTdHJ1
Y3R1cmUqLCBWTSYsIGNvbnN0IFNvdXJjZUNvZGUmLCBib29sIGlzSW5TdHJpY3RDb250ZXh0LCBE
ZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNJbkFycm93RnVuY3Rpb25Db250ZXh0KTsKIAogICAg
IHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogICAgIHsKQEAgLTQxNCw3ICs0MTUsNyBAQCBw
cm90ZWN0ZWQ6CiAgICAgYm9vbCBtX25ldmVySW5saW5lOwogICAgIGJvb2wgbV9uZXZlck9wdGlt
aXplIHsgZmFsc2UgfTsKICAgICBib29sIG1fZGlkVHJ5VG9FbnRlckluTG9vcDsKLSAgICBib29s
IG1faXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0OworICAgIERlcml2ZWRDb250ZXh0VHlwZSBt
X2Rlcml2ZWRDb250ZXh0VHlwZTsKICAgICBib29sIG1faXNBcnJvd0Z1bmN0aW9uQ29udGV4dDsK
ICAgICBpbnQgbV9vdmVycmlkZUxpbmVOdW1iZXI7CiAgICAgaW50IG1fZmlyc3RMaW5lOwpAQCAt
NDM4LDcgKzQzOSw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fZXZhbENvZGVCbG9jay5n
ZXQoKTsKICAgICB9CiAKLSAgICBzdGF0aWMgRXZhbEV4ZWN1dGFibGUqIGNyZWF0ZShFeGVjU3Rh
dGUqLCBjb25zdCBTb3VyY2VDb2RlJiwgYm9vbCBpc0luU3RyaWN0Q29udGV4dCwgVGhpc1REWk1v
ZGUsIGJvb2wgaXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0LCBib29sIGlzQXJyb3dGdW5jdGlv
bkNvbnRleHQsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqKTsKKyAgICBzdGF0aWMgRXZhbEV4
ZWN1dGFibGUqIGNyZWF0ZShFeGVjU3RhdGUqLCBjb25zdCBTb3VyY2VDb2RlJiwgYm9vbCBpc0lu
U3RyaWN0Q29udGV4dCwgVGhpc1REWk1vZGUsIERlcml2ZWRDb250ZXh0VHlwZSwgYm9vbCBpc0Fy
cm93RnVuY3Rpb25Db250ZXh0LCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50Kik7CiAKICAgICBQ
YXNzUmVmUHRyPEpJVENvZGU+IGdlbmVyYXRlZEpJVENvZGUoKQogICAgIHsKQEAgLTQ1Miw4ICs0
NTMsNyBAQCBwdWJsaWM6CiAgICAgICAgIAogICAgIERFQ0xBUkVfSU5GTzsKIAotCi0gICAgRXhl
Y3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5m
byhuZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBm
YWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBHZW5lcmF0b3JUaGlzTW9kZTo6Tm9uRW1wdHks
IFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlLCBp
c0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoKSwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCgpKTsg
fQorICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhl
Y3V0YWJsZUluZm8obmVlZHNBY3RpdmF0aW9uKCksIHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgp
LCBmYWxzZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgR2VuZXJhdG9yVGhpc01vZGU6
Ok5vbkVtcHR5LCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgU291cmNlUGFyc2VNb2RlOjpQcm9n
cmFtTW9kZSwgZGVyaXZlZENvbnRleHRUeXBlKCksIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQoKSAs
IGZhbHNlKTsgfQogCiAgICAgdW5zaWduZWQgbnVtVmFyaWFibGVzKCkgeyByZXR1cm4gbV91bmxp
bmtlZEV2YWxDb2RlQmxvY2stPm51bVZhcmlhYmxlcygpOyB9CiAgICAgdW5zaWduZWQgbnVtYmVy
T2ZGdW5jdGlvbkRlY2xzKCkgeyByZXR1cm4gbV91bmxpbmtlZEV2YWxDb2RlQmxvY2stPm51bWJl
ck9mRnVuY3Rpb25EZWNscygpOyB9CkBAIC00NjEsNyArNDYxLDggQEAgcHVibGljOgogcHJpdmF0
ZToKICAgICBmcmllbmQgY2xhc3MgRXhlY3V0YWJsZUJhc2U7CiAgICAgZnJpZW5kIGNsYXNzIFNj
cmlwdEV4ZWN1dGFibGU7Ci0gICAgRXZhbEV4ZWN1dGFibGUoRXhlY1N0YXRlKiwgY29uc3QgU291
cmNlQ29kZSYsIGJvb2wgaW5TdHJpY3RDb250ZXh0LCBib29sIGlzRGVyaXZlZENvbnN0cnVjdG9y
Q29udGV4dCwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0KTsKKworICAgIEV2YWxFeGVjdXRh
YmxlKEV4ZWNTdGF0ZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBib29sIGluU3RyaWN0Q29udGV4dCwg
RGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQpOwogCiAgICAg
c3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCkBAIC01
MDYsNyArNTA3LDcgQEAgcHVibGljOgogICAgICAgICAKICAgICBERUNMQVJFX0lORk87CiAKLSAg
ICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFi
bGVJbmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFs
c2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIEdlbmVyYXRvclRoaXNNb2RlOjpOb25F
bXB0eSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1v
ZGUsIGlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCgpLCBmYWxzZSk7IH0KKyAgICBFeGVjdXRh
YmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5l
ZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNl
LCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIEdlbmVyYXRvclRoaXNNb2RlOjpOb25FbXB0eSwgU3Vw
ZXJCaW5kaW5nOjpOb3ROZWVkZWQsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUsIGRlcml2
ZWRDb250ZXh0VHlwZSgpLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0KCksIGZhbHNlKTsgfQogCiBw
cml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBFeGVjdXRhYmxlQmFzZTsKQEAgLTU0Nyw3ICs1NDgs
NyBAQCBwdWJsaWM6CiAKICAgICBERUNMQVJFX0lORk87CiAKLSAgICBFeGVjdXRhYmxlSW5mbyBl
eGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZh
dGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1
Y3RvcktpbmQ6Ok5vbmUsIEdlbmVyYXRvclRoaXNNb2RlOjpOb25FbXB0eSwgU3VwZXJCaW5kaW5n
OjpOb3ROZWVkZWQsIFNvdXJjZVBhcnNlTW9kZTo6TW9kdWxlRXZhbHVhdGVNb2RlLCBpc0Rlcml2
ZWRDb25zdHJ1Y3RvckNvbnRleHQoKSwgZmFsc2UpOyB9CisgICAgRXhlY3V0YWJsZUluZm8gZXhl
Y3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRp
b24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0
b3JLaW5kOjpOb25lLCBHZW5lcmF0b3JUaGlzTW9kZTo6Tm9uRW1wdHksIFN1cGVyQmluZGluZzo6
Tm90TmVlZGVkLCBTb3VyY2VQYXJzZU1vZGU6Ok1vZHVsZUV2YWx1YXRlTW9kZSwgZGVyaXZlZENv
bnRleHRUeXBlKCksIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQoKSwgZmFsc2UpOyB9CiAKICAgICBV
bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIHVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVC
bG9jaygpIHsgcmV0dXJuIG1fdW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrLmdldCgpOyB9
CiAKQEAgLTY1Nyw3ICs2NTgsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5pc0J1aWx0aW5GdW5jdGlv
bigpOyB9CiAgICAgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5KCkgY29uc3QgeyBy
ZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPmNvbnN0cnVjdEFiaWxpdHkoKTsgfQogICAgIGJv
b2wgaXNBcnJvd0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gcGFyc2VNb2RlKCkgPT0gU291cmNl
UGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZTsgfQotICAgIGJvb2wgaXNEZXJpdmVkQ29uc3Ry
dWN0b3JDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPmlzRGVy
aXZlZENvbnN0cnVjdG9yQ29udGV4dCgpOyB9CisgICAgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2
ZWRDb250ZXh0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5kZXJp
dmVkQ29udGV4dFR5cGUoKTsgfQogICAgIGJvb2wgaXNDbGFzc0NvbnN0cnVjdG9yRnVuY3Rpb24o
KSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+aXNDbGFzc0NvbnN0cnVjdG9y
RnVuY3Rpb24oKTsgfQogICAgIGNvbnN0IElkZW50aWZpZXImIG5hbWUoKSB7IHJldHVybiBtX3Vu
bGlua2VkRXhlY3V0YWJsZS0+bmFtZSgpOyB9CiAgICAgY29uc3QgSWRlbnRpZmllciYgaW5mZXJy
ZWROYW1lKCkgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPmluZmVycmVkTmFtZSgpOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdEZ1bmN0aW9ucy5jcHAKaW5kZXggOTY1ZTk0ZDc5NDI0OWZkMTI2NTVmNGMyZmM4YmZjNDVh
YmViYTJiNC4uNmFjZWE1ZTNmNjQyMDI0YWExYzI4ZjhmY2JiODcxNzYxODZmMWI1ZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlv
bnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
RnVuY3Rpb25zLmNwcApAQCAtNTg3LDcgKzU4Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZ2xvYmFsRnVuY0V2YWwoRXhlY1N0YXRlKiBleGVjKQogCiAgICAgSlNHbG9iYWxPYmpl
Y3QqIGNhbGxlZUdsb2JhbE9iamVjdCA9IGV4ZWMtPmNhbGxlZSgpLT5nbG9iYWxPYmplY3QoKTsK
ICAgICBWYXJpYWJsZUVudmlyb25tZW50IGVtcHR5VERaVmFyaWFibGVzOyAvLyBJbmRpcmVjdCBl
dmFsIGRvZXMgbm90IGhhdmUgYWNjZXNzIHRvIHRoZSBsZXhpY2FsIHNjb3BlLgotICAgIEV2YWxF
eGVjdXRhYmxlKiBldmFsID0gRXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShleGVjLCBtYWtlU291cmNl
KHMpLCBmYWxzZSwgVGhpc1REWk1vZGU6OkNoZWNrSWZOZWVkZWQsIGZhbHNlLCBmYWxzZSwgJmVt
cHR5VERaVmFyaWFibGVzKTsKKyAgICBFdmFsRXhlY3V0YWJsZSogZXZhbCA9IEV2YWxFeGVjdXRh
YmxlOjpjcmVhdGUoZXhlYywgbWFrZVNvdXJjZShzKSwgZmFsc2UsIFRoaXNURFpNb2RlOjpDaGVj
a0lmTmVlZGVkLCBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUsIGZhbHNlLCAmZW1wdHlURFpWYXJp
YWJsZXMpOwogICAgIGlmICghZXZhbCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L2VzNi55YW1sIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi55YW1sCmluZGV4IGYx
MTk3ZDEzZGZlNWJmMTVlOTk0ZjRkYWMyYWEzODNjNTMzNzEyYjMuLjY4M2U2ZTE2YjQ2MTdhYzZl
NTNlMDc0ZTgzZjhjYWE3MWM1M2I5MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9lczYueWFtbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2Lnlh
bWwKQEAgLTc0Nyw3ICs3NDcsNyBAQAogLSBwYXRoOiBlczYvYXJyb3dfZnVuY3Rpb25zX2xleGlj
YWxfbmV3LnRhcmdldF9iaW5kaW5nLmpzCiAgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDog
ZXM2L2Fycm93X2Z1bmN0aW9uc19sZXhpY2FsX3N1cGVyX2JpbmRpbmcuanMKLSAgY21kOiBydW5F
UzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvYXJyb3dfZnVuY3Rp
b25zX25vX3Byb3RvdHlwZV9wcm9wZXJ0eS5qcwogICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBh
dGg6IGVzNi9ibG9jay1sZXZlbF9mdW5jdGlvbl9kZWNsYXJhdGlvbi5qcwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwt
YmluZC1zdXBlcnByb3BlcnR5LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC1zdXBlcnByb3BlcnR5LmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjA1MGZlOTA1NzE5YmEwODY3OTcxNGEzODBiNDFjZTFhMzQ1YWY1MTUKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4
aWNhbC1iaW5kLXN1cGVycHJvcGVydHkuanMKQEAgLTAsMCArMSwyMjQgQEAKK3ZhciB0ZXN0Q2Fz
ZSA9IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7CisgICAgaWYgKGFjdHVh
bCAhPT0gZXhwZWN0ZWQpIHsKKyAgICAgICAgdGhyb3cgbWVzc2FnZSArICIuIEV4cGVjdGVkICci
ICsgZXhwZWN0ZWQgKyAiJywgYnV0IHdhcyAnIiArIGFjdHVhbCArICInIjsKKyAgICB9Cit9Owor
Cit2YXIgdGVzdFZhbHVlICA9ICd0ZXN0LXZhbHVlJzsKKwordmFyIEEgPSBjbGFzcyBBIHsKKyAg
ICBjb25zdHJ1Y3RvcigpIHsKKyAgICAgICAgdGhpcy52YWx1ZSA9IHRlc3RWYWx1ZTsKKyAgICB9
CisgICAgZ2V0Q29uc3RWYWx1ZSAoKSB7CisgICAgICAgIHJldHVybiB0ZXN0VmFsdWU7CisgICAg
fQorICAgIGdldFZhbHVlICgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMudmFsdWU7CisgICAgfQor
ICAgIHNldFZhbHVlICh2YWx1ZSkgeworICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7CisgICAg
fQorfTsKKwordmFyIEIgPSBjbGFzcyBCIGV4dGVuZHMgQSB7CisgICAgZ2V0UGFyZW50VmFsdWUo
KSB7CisgICAgICAgIHZhciBhcnJvdyAgPSAoKSA9PiBzdXBlci5nZXRWYWx1ZSgpOworICAgICAg
ICByZXR1cm4gYXJyb3coKTsKKyAgICB9Cit9OworCit2YXIgQyA9IGNsYXNzIEMgeworICAgIGNv
bnN0cnVjdG9yKCkgeworICAgICAgICB0aGlzLnZhbHVlID0gdGVzdFZhbHVlOworICAgIH0KKyAg
ICBzdGF0aWMgZ2V0U3RhdGljVmFsdWUoKSB7CisgICAgICAgIHJldHVybiB0ZXN0VmFsdWU7Cisg
ICAgfQorfTsKKwordmFyIEQgPSBjbGFzcyBEIGV4dGVuZHMgQyB7CisgICAgc3RhdGljIGdldFBh
cmVudFN0YXRpY1ZhbHVlKCkgeworICAgICAgICB2YXIgYXJyb3cgID0gKCkgPT4gc3VwZXIuZ2V0
U3RhdGljVmFsdWUoKTsKKyAgICAgICAgcmV0dXJuIGFycm93KCk7CisgICAgfQorfTsKKwordmFy
IEUgPSBjbGFzcyBFIGV4dGVuZHMgQSB7CisgICAgIGNvbnN0cnVjdG9yKCkgeworICAgICAgICAg
c3VwZXIoKTsKKyAgICAgfQorICAgICBnZXQgcHJvcCgpIHsKKyAgICAgICAgIHZhciBhcnJvdyA9
ICgpID0+IHN1cGVyLmdldENvbnN0VmFsdWUoKSArICctJyArIHRoaXMudmFsdWU7CisgICAgICAg
ICByZXR1cm4gYXJyb3coKTsKKyAgICAgfQorICAgICBzZXQgcHJvcCh2YWx1ZSkgeworICAgICAg
ICAgdmFyIGFycm93ID0gKG5ld1ZhbCkgPT4gc3VwZXIuc2V0VmFsdWUobmV3VmFsKTsKKyAgICAg
ICAgIGFycm93KHZhbHVlKTsKKyAgICAgfQorICAgICBzZXRJbml0VmFsdWUoKSB7CisgICAgICAg
dGhpcy52YWx1ZSA9IHRlc3RWYWx1ZTsKKyAgICAgfQorIH07CisKK3ZhciBiID0gbmV3IEIoKTsK
K2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgeworICAgIHRlc3RDYXNlKGIuZ2V0UGFy
ZW50VmFsdWUoKSwgdGVzdFZhbHVlLCBpKTsKK30KKworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAw
MDsgaSsrKSB7CisgICAgdGVzdENhc2UoRC5nZXRQYXJlbnRTdGF0aWNWYWx1ZSgpLCB0ZXN0VmFs
dWUsIGkpOworfQorCit2YXIgZSA9IG5ldyBFKCk7Citmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAw
OyBpKyspIHsKKyAgICAgZS5zZXRJbml0VmFsdWUoKTsKKyAgICAgdGVzdENhc2UoZS5wcm9wLCB0
ZXN0VmFsdWUrJy0nK3Rlc3RWYWx1ZSwgaSk7CisgICAgIGUucHJvcCA9ICduZXctdGVzdC12YWx1
ZSc7CisgICAgIHRlc3RDYXNlKGUucHJvcCwgdGVzdFZhbHVlKyctbmV3LXRlc3QtdmFsdWUnLCBp
KTsKK30KKwordmFyIEYgID0gY2xhc3MgRiBleHRlbmRzIEEgeworICAgIG5ld01ldGhvZCgpIHsK
KyAgICAgICAgdmFyIGFycm93ICA9ICgpID0+IGV2YWwoJ3N1cGVyLmdldFZhbHVlKCknKTsKKyAg
ICAgICAgdmFyIHIgPSBhcnJvdygpOworICAgICAgICByZXR1cm4gcjsKKyAgICB9Cit9OworCit2
YXIgZiA9IG5ldyBGKCk7Citmb3IgKHZhciBpPTA7IGkgPCAxMDAwMDsgaSsrKSB7CisgICAgdHJ5
IHsKKyAgICAgICAgdmFyIHJlc3VsdCA9IGYubmV3TWV0aG9kKCk7CisgICAgICAgIHRlc3RDYXNl
KHJlc3VsdCwgdGVzdFZhbHVlLCBpKTsKKyAgICAgfSBjYXRjaChlKSB7CisgICAgICAgIGlmICgh
KGUgaW5zdGFuY2VvZiBTeW50YXhFcnJvcikpCisgICAgICAgICAgIHRocm93IGU7CisgICAgIH0K
K30KKwordmFyIEcgPSBjbGFzcyBHIGV4dGVuZHMgQSB7CisgICAgIGNvbnN0cnVjdG9yKCkgewor
ICAgICAgICAgc3VwZXIoKTsKKyAgICAgfQorICAgICBnZXQgcHJvcCgpIHsKKyAgICAgICAgIHZh
ciBhcnJvdyA9ICgpID0+ICgpID0+IHN1cGVyLmdldENvbnN0VmFsdWUoKSArICctJyArIHRoaXMu
dmFsdWU7CisgICAgICAgICByZXR1cm4gYXJyb3coKSgpOworICAgICB9CisgICAgIHNldCBwcm9w
KHZhbHVlKSB7CisgICAgICAgICB2YXIgYXJyb3cgPSAgKCkgPT4gKG5ld1ZhbCkgPT4gdGhpcy52
YWx1ZSA9IG5ld1ZhbDsKKyAgICAgICAgIGFycm93KCkodmFsdWUpOworICAgICB9CisgICAgIHNl
dEluaXRWYWx1ZSgpIHsKKyAgICAgICAgIHRoaXMudmFsdWUgPSB0ZXN0VmFsdWU7CisgICAgIH0K
KyAgICAgZ2V0VmFsdWVDQigpIHsKKyAgICAgICAgIHZhciBhcnJvdyAgPSAoKSA9PiBzdXBlci5n
ZXRWYWx1ZSgpOworICAgICAgICAgcmV0dXJuIGFycm93OworICAgICB9CisgICAgIHNldFZhbHVl
Q0IoKSB7CisgICAgICAgICB2YXIgYXJyb3cgPSAgKG5ld1ZhbCkgPT4gdGhpcy52YWx1ZSA9IG5l
d1ZhbDsKKyAgICAgICAgIHJldHVybiBhcnJvdzsKKyAgICAgfQorICAgICBnZXRQYXJlbnRWYWx1
ZSgpIHsKKyAgICAgICAgIHJldHVybiBzdXBlci5nZXRWYWx1ZSgpOworICAgICB9CisgICAgIGdl
dFBhcmVudFZhbHVlV2l0aEVycm9yKCkgeworICAgICAgICAgdmFyIGYgPSAgZnVuY3Rpb24gKCkg
eworICAgICAgICAgICAgIHJldHVybiAoKSA9PiBzdXBlci5nZXRWYWx1ZSgpOworICAgICAgICAg
fTsKKyAgICAgICAgIHJldHVybiBmKCk7CisgICAgIH0KKyB9OworCisgdmFyIGcgPSBuZXcgRygp
OworIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgeworICAgIGcuc2V0SW5pdFZhbHVl
KCk7CisgICAgdGVzdENhc2UoZy5wcm9wLCB0ZXN0VmFsdWUgKyAnLScgKyB0ZXN0VmFsdWUsICdF
cnJvcjogU29tZSBwcm9ibGVtIHdpdGggdXNpbmcgYXJyb3cgYW5kICJzdXBlciIgaW5zaWRlIG9m
IHRoZSBtZXRob2QnKTsKKyAgICBnLnByb3AgPSAnbmV3LXRlc3QtdmFsdWUnOworICAgIHRlc3RD
YXNlKGcucHJvcCwgdGVzdFZhbHVlICsgJy1uZXctdGVzdC12YWx1ZScsICdFcnJvcjogU29tZSBw
cm9ibGVtIHdpdGggdXNpbmcgYXJyb3cgYW5kICJzdXBlciIgaW5zaWRlIG9mIHRoZSBnZXR0ZXIg
YW5kIHNldHRlcicpOworIH0KKwordmFyIGcxID0gbmV3IEcoKTsKK2ZvciAodmFyIGkgPSAwOyBp
IDwgMTAwMDA7IGkrKykgeworICAgIGcxLnNldEluaXRWYWx1ZSgpOworICAgIGxldCBnZXRWYWx1
ZSA9IGcxLmdldFZhbHVlQ0IoKTsKKyAgICB0ZXN0Q2FzZShnZXRWYWx1ZSgpLCB0ZXN0VmFsdWUs
ICAnRXJyb3I6IFNvbWUgcHJvYmxlbSB3aXRoIHVzaW5nIGFycm93IGFuZCAic3VwZXIiIGluc2lk
ZSBvZiB0aGUgbWV0aG9kIHRoYXQgcmV0dW4gYXJyb3cgZnVuY3Rpb24nKTsKKyAgICBsZXQgc2V0
VmFsdWUgPSBnMS5zZXRWYWx1ZUNCKCk7CisgICAgc2V0VmFsdWUoJ25ldy12YWx1ZScpOworICAg
IHRlc3RDYXNlKGdldFZhbHVlKCksICduZXctdmFsdWUnLCAnRXJyb3I6IFNvbWUgcHJvYmxlbSB3
aXRoIHVzaW5nIGFycm93IGFuZCAic3VwZXIiIGluc2lkZSBvZiB0aGUgbWV0aG9kIHRoYXQgcmV0
dW4gYXJyb3cgZnVuY3Rpb24nKTsKK30KKwordmFyIGcyID0gbmV3IEcoKTsKK2ZvciAodmFyIGkg
PSAwOyBpIDwgMTAwMDA7IGkrKykgeworICAgIGxldCBlcnJvciA9IGZhbHNlOworICAgIHRyeSB7
CisgICAgICAgZzIuZ2V0UGFyZW50VmFsdWVXaXRoRXJyb3IoKSgpOworICAgIH0gY2F0Y2goZSkg
eworICAgICAgLy8gRklYTUU6IHNob3VsZCBieSBjaGVjayBpZiBlIGluc3RhbmNlb2YgU3ludGF4
RXJyb3IKKyAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NTA4OTMKKyAgICAgIGVycm9yID0gdHJ1ZTsKKyAgICB9CisgICAgdGVzdENhc2UoZXJyb3IsIHRy
dWUsICdFcnJvcjogdXNpbmcgInN1cGVyIiBzaG91bGQgbGVhZCB0byBlcnJvcicpOworfQorCisK
K3ZhciBIID0gY2xhc3MgSCBleHRlbmRzIEEgeworICAgIGNvbnN0cnVjdG9yKCkgeworICAgICAg
ICB2YXIgYXJyb3cgPSAoKSA9PiAoKSA9PiBzdXBlci5nZXRWYWx1ZSgpOworICAgICAgICBzdXBl
cigpOworICAgICAgICB0aGlzLm5ld1ZhbHVlICA9IGFycm93KCkoKTsKKyAgICB9Cit9OworCitm
b3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgICBsZXQgaCA9IG5ldyBIKCk7Cisg
ICAgdGVzdENhc2UoaC5uZXdWYWx1ZSwgdGVzdFZhbHVlLCAnRXJyb3I6IFNvbWUgcHJvYmxlbSB3
aXRoIHVzaW5nICJzdXBlciIgaW5zaWRlIG9mIHRoZSBjb25zdHJ1Y3RvcicpOworfQorCit2YXIg
SSA9IGNsYXNzIEkgZXh0ZW5kcyBBIHsKKyAgICBjb25zdHJ1Y3RvciAoYmVmb3JlU3VwZXIpIHsK
KyAgICAgICAgdmFyIGFycm93ID0gKCkgPT4gc3VwZXIuZ2V0VmFsdWUoKTsKKyAgICAgICAgaWYg
KGJlZm9yZVN1cGVyKSAgeworICAgICAgICAgICAgdGhpcy5fdmFsdWUgPSBhcnJvdygpOworICAg
ICAgICAgICAgc3VwZXIoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHN1cGVyKCk7
CisgICAgICAgICAgICB0aGlzLl92YWx1ZSA9IGFycm93KCk7CisgICAgICAgIH0KKyAgICB9Cit9
CisKK3ZhciBKID0gY2xhc3MgSiBleHRlbmRzIEEgeworICAgIGNvbnN0cnVjdG9yIChiZWZvcmVT
dXBlcikgeworICAgICAgICB2YXIgX3ZhbHVlOworICAgICAgICB2YXIgYXJyb3cgPSAoKSA9PiBz
dXBlci5nZXRDb25zdFZhbHVlKCk7CisgICAgICAgIGlmIChiZWZvcmVTdXBlcikgIHsKKyAgICAg
ICAgICAgIF92YWx1ZSA9IGFycm93KCk7CisgICAgICAgICAgICBzdXBlcigpOworICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgIHN1cGVyKCk7CisgICAgICAgICAgICBfdmFsdWUgPSBhcnJv
dygpOworICAgICAgICB9CisgICAgICAgIHRoaXMuX3ZhbHVlID0gX3ZhbHVlOworICAgIH0KK30K
KworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7CisgICAgbGV0IGkgPSBuZXcgSShm
YWxzZSk7CisgICAgdGVzdENhc2UoaS5fdmFsdWUsIHRlc3RWYWx1ZSwgJ0Vycm9yOiBTb21lIHBy
b2JsZW0gd2l0aCB1c2luZyAic3VwZXIiIGluc2lkZSBvZiB0aGUgY29uc3RydWN0b3InKTsKKyAg
ICBsZXQgaiA9IG5ldyBKKGZhbHNlKTsKKyAgICB0ZXN0Q2FzZShqLl92YWx1ZSwgdGVzdFZhbHVl
LCAnRXJyb3I6IFNvbWUgcHJvYmxlbSB3aXRoIHVzaW5nICJzdXBlciIgaW5zaWRlIG9mIHRoZSBj
b25zdHJ1Y3RvcicpOworCisgICAgLy8gRklYTUU6IFByb2JsZW0gd2l0aCBhY2Nlc3MgdG8gdGhl
IHN1cGVyIGJlZm9yZSBzdXBlcigpIGluIGNvbnN0cnVjdG9yCisgICAgLy8gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MjEwOAorICAgIC8vbGV0IGoyID0gbmV3IEoo
dHJ1ZSk7CisgICAgLy90ZXN0Q2FzZShqMi5fdmFsdWUsIHRlc3RWYWx1ZSwgJ0Vycm9yOiBTb21l
IHByb2JsZW0gd2l0aCB1c2luZyAic3VwZXIiIGluc2lkZSBvZiB0aGUgY29uc3RydWN0b3InKTsK
KyAgICBlcnJvciA9IGZhbHNlOworICAgIHRyeSB7CisgICAgICAgIG5ldyBJKHRydWUpOworICAg
IH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZXJyb3IgPSBlIGluc3RhbmNlb2YgUmVmZXJlbmNlRXJy
b3I7CisgICAgfQorICAgIHRlc3RDYXNlKGVycm9yLCB0cnVlLCAnRXJyb3I6IHVzaW5nICJzdXBl
ciIgcHJvcGVydHkgYmVmb3JlIHN1cGVyKCkgc2hvdWxkIGxlYWQgdG8gZXJyb3InKTsKK30KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpp
bmRleCA1Yzc2ZTVhNGU5ZGU0ZjFjNmI3ODMwNTU3ODdlMmYzYjQ5YjAwZWJkLi4yOGI3NzRiYWEw
YzBlNDkwNGE3ZGU4ZjQ1ZGExYTc2MzZiMDA0ZmU1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIw
MTUtMTItMTAgIFNrYWNoa292IE9sZWtzYW5kciAgPGdza2FjaGtvdkBnbWFpbC5jb20+CisKKyAg
ICAgICAgW0VTNl0gQXJyb3cgZnVuY3Rpb24gc3ludGF4LiBBcnJvdyBmdW5jdGlvbiBzcGVjaWZp
YyBmZWF0dXJlcy4gTGV4aWNhbCBiaW5kICJzdXBlciIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0OTYxNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICoganMvYXJyb3dmdW5jdGlvbi1zdXBlcnByb3BlcnR5
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvYXJyb3dmdW5jdGlvbi1zdXBlcnBy
b3BlcnR5Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0
aW9uLXN1cGVycHJvcGVydHkuanM6IEFkZGVkLgorCiAyMDE1LTEyLTA1ICBTa2FjaGtvdiBPbGVr
c2FuZHIgIDxnc2thY2hrb3ZAZ21haWwuY29tPgogCiAgICAgICAgIFtFUzZdICJzdXBlciIgYW5k
ICJ0aGlzIiBzaG91bGQgYmUgbGV4aWNhbGx5IGJvdW5kIGluc2lkZSBhbiBhcnJvdyBmdW5jdGlv
biBhbmQgc2hvdWxkIGxpdmUgaW4gYSBKU0xleGljYWxFbnZpcm9ubWVudApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1zdXBlcnByb3BlcnR5LWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tc3VwZXJwcm9wZXJ0eS1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uM2RmMmM0OTVmYjlmZjFlMjc2MzMwZjE1M2MxNDBiYjVmZjVmNDlkMwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tc3VwZXJwcm9wZXJ0
eS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNiBAQAorVGVzdHMgZm9yIEVTNiBhcnJvdyBmdW5j
dGlvbiwgYWNjZXNzIHRvIHRoZSBzdXBlciBwcm9wZXJ0eSBpbiBhcnJvdyBmdW5jdGlvbgorCitP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyAobmV3IEIoKSkuZ2V0VmFsdWVQYXJl
bnRGdW5jdGlvbigpIGlzIGV4cGVjdGVkVmFsdWUKK1BBU1MgKG5ldyBDKGZhbHNlKSkudmFsdWUg
aXMgZXhwZWN0ZWRWYWx1ZQorUEFTUyBFLmdldFBhcmVudFN0YXRpY1ZhbHVlKCkgaXMgZXhwZWN0
ZWRWYWx1ZQorUEFTUyBmLnByb3AgaXMgZXhwZWN0ZWRWYWx1ZSArICItIiArIGV4cGVjdGVkVmFs
dWUKK1BBU1MgZi5wcm9wIGlzIGV4cGVjdGVkVmFsdWUgKyAiLSIgKyAibmV3LXZhbHVlIgorUEFT
UyAobmV3IEYoKSkuZ2V0UGFyZW50VmFsdWUoKSBpcyBleHBlY3RlZFZhbHVlCitQQVNTIChuZXcg
RigpKS5nZXRQYXJlbnRWYWx1ZVdpdGhFcnJvcigpKCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJv
cjogdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ3N1cGVyLmdldFZhbHVl
JykuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1zdXBlcnByb3BlcnR5Lmh0
bWwgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXN1cGVycHJvcGVydHkuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4wMmI1MDVmNzk5NDViN2NhMzljOTZjYzcxOWFjZGM5NWZmNWJhMGZkCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1zdXBlcnByb3BlcnR5Lmh0
bWwKQEAgLTAsMCArMSwxMCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQg
SFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0ic2Ny
aXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tc3VwZXJwcm9wZXJ0eS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dm
dW5jdGlvbi1zdXBlcnByb3BlcnR5LmpzIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fy
cm93ZnVuY3Rpb24tc3VwZXJwcm9wZXJ0eS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNWYyNDljYmJiZGEyODhm
MTM3YTUyMzcwZjI2MTFjYjQxNTcxZmJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
anMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tc3VwZXJwcm9wZXJ0eS5qcwpAQCAtMCwwICsx
LDk1IEBACitkZXNjcmlwdGlvbignVGVzdHMgZm9yIEVTNiBhcnJvdyBmdW5jdGlvbiwgYWNjZXNz
IHRvIHRoZSBzdXBlciBwcm9wZXJ0eSBpbiBhcnJvdyBmdW5jdGlvbicpOworCit2YXIgZXhwZWN0
ZWRWYWx1ZSA9ICd0ZXN0LXZhbHVlJzsKKworY2xhc3MgQSB7CisgICAgZ2V0VmFsdWUgKCkgewor
ICAgICAgICByZXR1cm4gZXhwZWN0ZWRWYWx1ZTsKKyAgICB9Cit9OworCitjbGFzcyBCIGV4dGVu
ZHMgQSB7CisgICAgZ2V0VmFsdWVQYXJlbnRGdW5jdGlvbigpIHsKKyAgICAgICAgdmFyIGFycm93
ICA9ICgpID0+IHN1cGVyLmdldFZhbHVlKCk7CisgICAgICAgIHJldHVybiBhcnJvdygpOworICAg
IH0KK307CisKK2NsYXNzIEMgZXh0ZW5kcyBCIHsKKyAgICBjb25zdHJ1Y3RvcihiZWZvcmVTdXBl
cikgeworICAgICAgICBsZXQgX3ZhbHVlOworICAgICAgICBsZXQgYXJyb3cgPSAoKSA9PiBzdXBl
ci5nZXRWYWx1ZSgpOworICAgICAgICBpZiAoYmVmb3JlU3VwZXIpIHsKKyAgICAgICAgICAgIF92
YWx1ZSA9IGFycm93KCk7CisgICAgICAgICAgICBzdXBlcigpOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgc3VwZXIoKTsKKyAgICAgICAgICAgIF92YWx1ZSA9IGFycm93KCk7CisgICAg
ICAgIH0KKyAgICAgICAgdGhpcy52YWx1ZSA9IF92YWx1ZTsKKyAgICB9Cit9OworCitjbGFzcyBE
IHsKKyAgICBjb25zdHJ1Y3RvcigpIHsKKyAgICAgICAgdGhpcy52YWx1ZSA9IGV4cGVjdGVkVmFs
dWU7CisgICAgfQorICAgIHN0YXRpYyBnZXRTdGF0aWNWYWx1ZSgpIHsKKyAgICAgICAgcmV0dXJu
IGV4cGVjdGVkVmFsdWU7CisgICAgfQorfTsKKworY2xhc3MgRSBleHRlbmRzIEQgeworICAgIHN0
YXRpYyBnZXRQYXJlbnRTdGF0aWNWYWx1ZSgpIHsKKyAgICAgICAgdmFyIGFycm93ICA9ICgpID0+
IHN1cGVyLmdldFN0YXRpY1ZhbHVlKCk7CisgICAgICAgIHJldHVybiBhcnJvdygpOworICAgIH0K
K307CisKK2NsYXNzIEYgZXh0ZW5kcyBBIHsKKyAgICBjb25zdHJ1Y3RvcigpIHsKKyAgICAgICAg
c3VwZXIoKTsKKyAgICAgICAgdGhpcy52YWx1ZSA9IGV4cGVjdGVkVmFsdWU7CisgICAgfQorICAg
IGdldCBwcm9wKCkgeworICAgICAgICB2YXIgYXJyb3cgPSAoKSA9PiBzdXBlci5nZXRWYWx1ZSgp
KyAnLScgKyB0aGlzLnZhbHVlOworICAgICAgICByZXR1cm4gYXJyb3coKTsKKyAgICB9CisgICAg
c2V0IHByb3AodmFsdWUpIHsKKyAgICAgICAgdmFyIGFycm93ID0gKG5ld1ZhbCkgPT4gdGhpcy52
YWx1ZSA9IG5ld1ZhbDsKKyAgICAgICAgYXJyb3codmFsdWUpOworICAgIH0KKyAgICBnZXRQYXJl
bnRWYWx1ZSgpIHsKKyAgICAgICAgbGV0IGFycm93ID0gKCkgPT4gKCkgPT4gc3VwZXIuZ2V0VmFs
dWUoKTsKKyAgICAgICAgcmV0dXJuIGFycm93KCkoKTsKKyAgICB9CisgICAgZ2V0UGFyZW50VmFs
dWVXaXRoRXJyb3IoKSB7CisgICAgICAgIHZhciBmID0gIGZ1bmN0aW9uICgpIHsKKyAgICAgICAg
ICAgIHJldHVybiAoKSA9PiBzdXBlci5nZXRWYWx1ZSgpOworICAgICAgICB9OworICAgICAgICBy
ZXR1cm4gZigpOworICAgIH0KKyB9OworCitzaG91bGRCZSgnKG5ldyBCKCkpLmdldFZhbHVlUGFy
ZW50RnVuY3Rpb24oKScsICdleHBlY3RlZFZhbHVlJyk7CisKK3Nob3VsZEJlKCcobmV3IEMoZmFs
c2UpKS52YWx1ZScsICdleHBlY3RlZFZhbHVlJyk7CisKKy8vIEZJWE1FOiBQcm9ibGVtIHdpdGgg
YWNjZXNzIHRvIHRoZSBzdXBlciBiZWZvcmUgc3VwZXIoKSBpbiBjb25zdHJ1Y3RvcgorLy8gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MjEwOAorLy9zaG91bGRUaHJv
dygnKG5ldyBDKHRydWUpKScsICdSZWZlcmVuY2VFcnJvcicpOworCitzaG91bGRCZSgnRS5nZXRQ
YXJlbnRTdGF0aWNWYWx1ZSgpJywgJ2V4cGVjdGVkVmFsdWUnKTsKKwordmFyIGYgPSBuZXcgRigp
OworCitzaG91bGRCZSgnZi5wcm9wJywgJ2V4cGVjdGVkVmFsdWUgKyAiLSIgKyBleHBlY3RlZFZh
bHVlJyk7CisKK2YucHJvcCA9ICduZXctdmFsdWUnOworc2hvdWxkQmUoJ2YucHJvcCcsICdleHBl
Y3RlZFZhbHVlICsgIi0iICsgIm5ldy12YWx1ZSInKTsKKworc2hvdWxkQmUoJyhuZXcgRigpKS5n
ZXRQYXJlbnRWYWx1ZSgpJywgJ2V4cGVjdGVkVmFsdWUnKTsKKworc2hvdWxkVGhyb3coJyhuZXcg
RigpKS5nZXRQYXJlbnRWYWx1ZVdpdGhFcnJvcigpKCknKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBh
cnNlZCA9IHRydWU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267990</attachid>
            <date>2015-12-29 12:41:14 -0800</date>
            <delta_ts>2015-12-30 03:11:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-149615-20151229224037.patch</filename>
            <type>text/plain</type>
            <size>55821</size>
            <attacher name="GSkachkov">gskachkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk0NDM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
NmVhYmI3NjRmNWFmNTYzNWU3NmFkYzRkYjhkZmIyMmI0ZDU3ZDMxLi5kMzQ3NDZhM2U5Mzg0ODIx
NDllZjI3ZTg5NWZhNjNlZjc4NWFhNWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2NSBAQAorMjAxNS0xMi0xMCAgQWxla3NhbmRyIFNrYWNoa292ICA8Z3NrYWNoa292QGdt
YWlsLmNvbT4KKworICAgICAgICBbRVM2XSBBcnJvdyBmdW5jdGlvbiBzeW50YXguIEFycm93IGZ1
bmN0aW9uIHNwZWNpZmljIGZlYXR1cmVzLiBMZXhpY2FsIGJpbmQgInN1cGVyIgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5NjE1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50ZWQgbGV4aWNh
bCBiaW5kICJzdXBlciIgcHJvcGVydHkgZm9yIGFycm93IGZ1bmN0aW9uLiAnc3VwZXInIHByb3Bl
cnR5IGNhbiBiZSBhY2Nlc3NlZCAKKyAgICAgICAgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlv
biBpbiBjYXNlIGlmIGFycm93IGZ1bmN0aW9uIGlzIG5lc3RlZCBpbiBjb25zdHJ1Y3RvciwgbWV0
aG9kLCAKKyAgICAgICAgZ2V0dGVyIG9yIHNldHRlciBvZiBjbGFzcy4gSW4gY3VycmVudCBwYXRj
aCB1c2luZyAnc3VwZXInIGluIGFycm93IGZ1bmN0aW9uLCB0aGF0IGRlY2xhcmVkIG91dCBvZiB0
aGUgCisgICAgICAgIGNsYXNzLCBsZWFkIHRvIHdyb25nIHR5cGUgb2YgZXJyb3IsIHNob3VsZCBi
ZSBTeW50YXhFcnJvcihodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUw
ODkzKSAKKyAgICAgICAgYW5kIHRoaXMgd2lsbCBiZSBmaXhlZCBpbiBzZXBhcmV0ZSBwYXRjaC4K
KworICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHA6CisgICAgICAgIChK
U0M6OmNyZWF0ZUV4ZWN1dGFibGVJbnRlcm5hbCk6CisgICAgICAgICogYnl0ZWNvZGUvRXZhbENv
ZGVDYWNoZS5oOgorICAgICAgICAoSlNDOjpFdmFsQ29kZUNhY2hlOjpnZXRTbG93KToKKyAgICAg
ICAgKiBieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxl
SW5mbzo6RXhlY3V0YWJsZUluZm8pOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlSW5mbzo6ZGVy
aXZlZENvbnRleHRUeXBlKToKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUluZm86OmlzQ2xhc3ND
b250ZXh0KToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHA6CisgICAg
ICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpVbmxpbmtlZENvZGVCbG9jayk6CisgICAgICAg
ICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRD
b2RlQmxvY2s6OmRlcml2ZWRDb250ZXh0VHlwZSk6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29k
ZUJsb2NrOjppc0NsYXNzQ29udGV4dCk6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpnZW5lcmF0ZVVubGlua2VkRnVuY3Rp
b25Db2RlQmxvY2spOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUpOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2Vu
ZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXREZXJpdmVk
Q29uc3RydWN0b3JUb0Fycm93RnVuY3Rpb25Db250ZXh0U2NvcGUpOgorICAgICAgICAqIGJ5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVy
YXRvcjo6ZGVyaXZlZENvbnRleHRUeXBlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OmlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
R2VuZXJhdG9yOjppc0Rlcml2ZWRDbGFzc0NvbnRleHQpOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcjo6aXNBcnJvd0Z1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3I6Om1ha2VGdW5jdGlvbik6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdl
bi5jcHA6CisgICAgICAgIChKU0M6OmVtaXRIb21lT2JqZWN0Rm9yQ2FsbGVlKToKKyAgICAgICAg
KEpTQzo6RnVuY3Rpb25DYWxsVmFsdWVOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGRl
YnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcDoKKyAgICAgICAgKEpTQzo6RGVidWdnZXJDYWxs
RnJhbWU6OmV2YWx1YXRlKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6
CisgICAgICAgIChKU0M6OmV2YWwpOgorICAgICAgICAqIHJ1bnRpbWUvQ29kZUNhY2hlLmNwcDoK
KyAgICAgICAgKEpTQzo6Q29kZUNhY2hlOjpnZXRGdW5jdGlvbkV4ZWN1dGFibGVGcm9tR2xvYmFs
Q29kZSk6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6
U2NyaXB0RXhlY3V0YWJsZTo6U2NyaXB0RXhlY3V0YWJsZSk6CisgICAgICAgIChKU0M6OkV2YWxF
eGVjdXRhYmxlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpFdmFsRXhlY3V0YWJsZTo6RXZhbEV4
ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6UHJvZ3JhbUV4ZWN1
dGFibGUpOgorICAgICAgICAoSlNDOjpNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6TW9kdWxlUHJv
Z3JhbUV4ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OkZ1bmN0
aW9uRXhlY3V0YWJsZSk6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmg6CisgICAgICAg
IChKU0M6OlNjcmlwdEV4ZWN1dGFibGU6OmRlcml2ZWRDb250ZXh0VHlwZSk6CisgICAgICAgICog
cnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChKU0M6Omdsb2Jh
bEZ1bmNFdmFsKToKKyAgICAgICAgKiB0ZXN0cy9lczYueWFtbDoKKyAgICAgICAgKiB0ZXN0cy9z
dHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtc3VwZXJwcm9wZXJ0eS5qczogQWRkZWQu
CisKIDIwMTUtMTItMDUgQWxla3NhbmRyIFNrYWNoa292ICAgPGdza2FjaGtvdkBnbWFpbC5jb20+
CiAKICAgICAgICAgW0VTNl0gInN1cGVyIiBhbmQgInRoaXMiIHNob3VsZCBiZSBsZXhpY2FsbHkg
Ym91bmQgaW5zaWRlIGFuIGFycm93IGZ1bmN0aW9uIGFuZCBzaG91bGQgbGl2ZSBpbiBhIEpTTGV4
aWNhbEVudmlyb25tZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRp
bnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlu
cy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCmluZGV4IGRhNzUyODc4YzIxYzM1NzI1ZTI5MTg5ZmJm
YzIxZTRlMTY3ODA1YTcuLjgyMmIzNWYyNWEwNGYxMGZkZTJmNGE1NDY4ODA3ZTRiMGViNjU2MTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0
YWJsZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhl
Y3V0YWJsZXMuY3BwCkBAIC0xMTUsNyArMTE1LDcgQEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUqIGNyZWF0ZUV4ZWN1dGFibGVJbnRlcm5hbChWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHMK
ICAgICB9CiAgICAgbWV0YWRhdGEtPm92ZXJyaWRlTmFtZShuYW1lKTsKICAgICBWYXJpYWJsZUVu
dmlyb25tZW50IGR1bW15VERaVmFyaWFibGVzOwotICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3Jl
YXRlKCZ2bSwgc291cmNlLCBtZXRhZGF0YSwga2luZCwgY29uc3RydWN0QWJpbGl0eSwgZHVtbXlU
RFpWYXJpYWJsZXMsIGZhbHNlLCBXVEY6Om1vdmUoc291cmNlT3ZlcnJpZGUpKTsKKyAgICBVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSgmdm0sIHNvdXJjZSwgbWV0YWRhdGEsIGtpbmQsIGNvbnN0
cnVjdEFiaWxpdHksIGR1bW15VERaVmFyaWFibGVzLCBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUs
IFdURjo6bW92ZShzb3VyY2VPdmVycmlkZSkpOwogICAgIGZ1bmN0aW9uRXhlY3V0YWJsZS0+c2V0
TmFtZVZhbHVlKHZtLCBqc1N0cmluZygmdm0sIG5hbWUuc3RyaW5nKCkpKTsKICAgICByZXR1cm4g
ZnVuY3Rpb25FeGVjdXRhYmxlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0V2YWxDb2RlQ2FjaGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9FdmFsQ29kZUNhY2hlLmgKaW5kZXggODY5MTMxNjkyYTkzNGE3NWE2NDNjZTU1ZjllMGQ5Nzdh
ODVhYzEwYS4uNjYzNDkwYWZiNDUyNDVjMzZmZjA1ZDQ3ZWY4ODEzZGE1YTU5ZjUwMCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V2YWxDb2RlQ2FjaGUuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXZhbENvZGVDYWNoZS5oCkBAIC01NSwx
MSArNTUsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgRXZhbEV4ZWN1dGFibGUqIGdldFNsb3coRXhl
Y1N0YXRlKiBleGVjLCBKU0NlbGwqIG93bmVyLCBib29sIGluU3RyaWN0Q29udGV4dCwgVGhpc1RE
Wk1vZGUgdGhpc1REWk1vZGUsIGJvb2wgaXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0LCBib29s
IGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGNvbnN0IFNvdXJjZUNvZGUmIGV2YWxTb3VyY2UsIEpT
U2NvcGUqIHNjb3BlKQorICAgICAgICBFdmFsRXhlY3V0YWJsZSogZ2V0U2xvdyhFeGVjU3RhdGUq
IGV4ZWMsIEpTQ2VsbCogb3duZXIsIGJvb2wgaW5TdHJpY3RDb250ZXh0LCBUaGlzVERaTW9kZSB0
aGlzVERaTW9kZSwgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgYm9vbCBp
c0Fycm93RnVuY3Rpb25Db250ZXh0LCBjb25zdCBTb3VyY2VDb2RlJiBldmFsU291cmNlLCBKU1Nj
b3BlKiBzY29wZSkKICAgICAgICAgewogICAgICAgICAgICAgVmFyaWFibGVFbnZpcm9ubWVudCB2
YXJpYWJsZXNVbmRlclREWjsKICAgICAgICAgICAgIEpTU2NvcGU6OmNvbGxlY3RWYXJpYWJsZXNV
bmRlclREWihzY29wZSwgdmFyaWFibGVzVW5kZXJURFopOwotICAgICAgICAgICAgRXZhbEV4ZWN1
dGFibGUqIGV2YWxFeGVjdXRhYmxlID0gRXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShleGVjLCBldmFs
U291cmNlLCBpblN0cmljdENvbnRleHQsIHRoaXNURFpNb2RlLCBpc0Rlcml2ZWRDb25zdHJ1Y3Rv
ckNvbnRleHQsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsICZ2YXJpYWJsZXNVbmRlclREWik7Cisg
ICAgICAgICAgICBFdmFsRXhlY3V0YWJsZSogZXZhbEV4ZWN1dGFibGUgPSBFdmFsRXhlY3V0YWJs
ZTo6Y3JlYXRlKGV4ZWMsIGV2YWxTb3VyY2UsIGluU3RyaWN0Q29udGV4dCwgdGhpc1REWk1vZGUs
IGRlcml2ZWRDb250ZXh0VHlwZSwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgJnZhcmlhYmxlc1Vu
ZGVyVERaKTsKIAogICAgICAgICAgICAgaWYgKCFldmFsRXhlY3V0YWJsZSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9FeGVjdXRhYmxlSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0V4ZWN1dGFibGVJbmZvLmgKaW5kZXggYTkyMzQ0MWJiNzJhNTVhZTQ1MzVmNmEyYjkxNGJmMWUy
YTdiNWZlMC4uMDdmNDY4NDNjM2RmNDk3M2JjMzBmMmNjNDJhZTUxZTg5NmFjMGQzZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVJbmZvLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVJbmZvLmgKQEAgLTI5
LDExICsyOSwxMyBAQAogI2luY2x1ZGUgIlBhcnNlck1vZGVzLmgiCiAKIG5hbWVzcGFjZSBKU0Mg
eworICAgIAorZW51bSBjbGFzcyBEZXJpdmVkQ29udGV4dFR5cGUgeyBOb25lLCBEZXJpdmVkQ29u
c3RydWN0b3JDb250ZXh0LCBEZXJpdmVkTWV0aG9kQ29udGV4dCB9OwogCiAvLyBGSVhNRTogVGhl
c2UgZmxhZ3MsIFBhcnNlck1vZGVzIGFuZCBwcm9wYWdhdGlvbiB0byBYWFhDb2RlQmxvY2tzIHNo
b3VsZCBiZSByZW9yZ2FuaXplZC4KIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNTE1NDcKIHN0cnVjdCBFeGVjdXRhYmxlSW5mbyB7Ci0gICAgRXhlY3V0YWJsZUlu
Zm8oYm9vbCBuZWVkc0FjdGl2YXRpb24sIGJvb2wgdXNlc0V2YWwsIGJvb2wgaXNTdHJpY3RNb2Rl
LCBib29sIGlzQ29uc3RydWN0b3IsIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24sIENvbnN0cnVjdG9y
S2luZCBjb25zdHJ1Y3RvcktpbmQsIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcsIFNvdXJjZVBh
cnNlTW9kZSBwYXJzZU1vZGUsIGJvb2wgaXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0LCBib29s
IGlzQXJyb3dGdW5jdGlvbkNvbnRleHQpCisgICAgRXhlY3V0YWJsZUluZm8oYm9vbCBuZWVkc0Fj
dGl2YXRpb24sIGJvb2wgdXNlc0V2YWwsIGJvb2wgaXNTdHJpY3RNb2RlLCBib29sIGlzQ29uc3Ry
dWN0b3IsIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24sIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3Rv
cktpbmQsIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1v
ZGUsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNBcnJvd0Z1
bmN0aW9uQ29udGV4dCwgYm9vbCBpc0NsYXNzQ29udGV4dCkKICAgICAgICAgOiBtX25lZWRzQWN0
aXZhdGlvbihuZWVkc0FjdGl2YXRpb24pCiAgICAgICAgICwgbV91c2VzRXZhbCh1c2VzRXZhbCkK
ICAgICAgICAgLCBtX2lzU3RyaWN0TW9kZShpc1N0cmljdE1vZGUpCkBAIC00Miw4ICs0NCw5IEBA
IHN0cnVjdCBFeGVjdXRhYmxlSW5mbyB7CiAgICAgICAgICwgbV9jb25zdHJ1Y3RvcktpbmQoc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KGNvbnN0cnVjdG9yS2luZCkpCiAgICAgICAgICwgbV9zdXBlckJp
bmRpbmcoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN1cGVyQmluZGluZykpCiAgICAgICAgICwgbV9w
YXJzZU1vZGUocGFyc2VNb2RlKQotICAgICAgICAsIG1faXNEZXJpdmVkQ29uc3RydWN0b3JDb250
ZXh0KGlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCkKKyAgICAgICAgLCBtX2Rlcml2ZWRDb250
ZXh0VHlwZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZGVyaXZlZENvbnRleHRUeXBlKSkKICAgICAg
ICAgLCBtX2lzQXJyb3dGdW5jdGlvbkNvbnRleHQoaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCkKKyAg
ICAgICAgLCBtX2lzQ2xhc3NDb250ZXh0KGlzQ2xhc3NDb250ZXh0KQogICAgIHsKICAgICAgICAg
QVNTRVJUKG1fY29uc3RydWN0b3JLaW5kID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb25zdHJ1
Y3RvcktpbmQpKTsKICAgICAgICAgQVNTRVJUKG1fc3VwZXJCaW5kaW5nID09IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihzdXBlckJpbmRpbmcpKTsKQEAgLTU3LDggKzYwLDkgQEAgc3RydWN0IEV4ZWN1
dGFibGVJbmZvIHsKICAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kKCkgY29uc3Qg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29uc3RydWN0b3JLaW5kPihtX2NvbnN0cnVjdG9yS2luZCk7
IH0KICAgICBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nKCkgY29uc3QgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8U3VwZXJCaW5kaW5nPihtX3N1cGVyQmluZGluZyk7IH0KICAgICBTb3VyY2VQYXJzZU1v
ZGUgcGFyc2VNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9wYXJzZU1vZGU7IH0KLSAgICBib29sIGlz
RGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1faXNEZXJpdmVkQ29u
c3RydWN0b3JDb250ZXh0OyB9CisgICAgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0
VHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PERlcml2ZWRDb250ZXh0VHlwZT4obV9k
ZXJpdmVkQ29udGV4dFR5cGUpOyB9CiAgICAgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0KCkg
Y29uc3QgeyByZXR1cm4gbV9pc0Fycm93RnVuY3Rpb25Db250ZXh0OyB9CisgICAgYm9vbCBpc0Ns
YXNzQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1faXNDbGFzc0NvbnRleHQ7IH0KIAogcHJpdmF0
ZToKICAgICB1bnNpZ25lZCBtX25lZWRzQWN0aXZhdGlvbiA6IDE7CkBAIC02OSw4ICs3Myw5IEBA
IHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3RvcktpbmQgOiAyOwogICAgIHVuc2ln
bmVkIG1fc3VwZXJCaW5kaW5nIDogMTsKICAgICBTb3VyY2VQYXJzZU1vZGUgbV9wYXJzZU1vZGU7
Ci0gICAgdW5zaWduZWQgbV9pc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQgOiAxOworICAgIHVu
c2lnbmVkIG1fZGVyaXZlZENvbnRleHRUeXBlIDogMjsKICAgICB1bnNpZ25lZCBtX2lzQXJyb3dG
dW5jdGlvbkNvbnRleHQgOiAxOworICAgIHVuc2lnbmVkIG1faXNDbGFzc0NvbnRleHQgOiAxOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAppbmRleCAyMmRiZjk2ODQ3OTc0ZDM4MWNi
Yjg0MmYxY2IyZDQ0NGNhMzVmNjI0Li4yY2E0YjAwODU2YzA2M2E3NjgxMGE1YTBkZWNhNjBlYzUw
OWYzZGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRDb2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxp
bmtlZENvZGVCbG9jay5jcHAKQEAgLTY2LDggKzY2LDkgQEAgVW5saW5rZWRDb2RlQmxvY2s6OlVu
bGlua2VkQ29kZUJsb2NrKFZNKiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENvZGVUeXBlIGNv
ZGUKICAgICAsIG1faXNCdWlsdGluRnVuY3Rpb24oaW5mby5pc0J1aWx0aW5GdW5jdGlvbigpKQog
ICAgICwgbV9jb25zdHJ1Y3RvcktpbmQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluZm8uY29uc3Ry
dWN0b3JLaW5kKCkpKQogICAgICwgbV9zdXBlckJpbmRpbmcoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KGluZm8uc3VwZXJCaW5kaW5nKCkpKQotICAgICwgbV9pc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRl
eHQoaW5mby5pc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoKSkKKyAgICAsIG1fZGVyaXZlZENv
bnRleHRUeXBlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbmZvLmRlcml2ZWRDb250ZXh0VHlwZSgp
KSkKICAgICAsIG1faXNBcnJvd0Z1bmN0aW9uQ29udGV4dChpbmZvLmlzQXJyb3dGdW5jdGlvbkNv
bnRleHQoKSkKKyAgICAsIG1faXNDbGFzc0NvbnRleHQoaW5mby5pc0NsYXNzQ29udGV4dCgpKQog
ICAgICwgbV9maXJzdExpbmUoMCkKICAgICAsIG1fbGluZUNvdW50KDApCiAgICAgLCBtX2VuZENv
bHVtbihVSU5UX01BWCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9VbmxpbmtlZENvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkQ29kZUJsb2NrLmgKaW5kZXggYThlNDBlZDkyM2VjMThhNWEyZWMwN2Q2NmIyYzc2Njdm
MDkwN2M5OS4uMmI0ZWI2NGY0NzdmMWMzOGZhODA3YzZkNDZhOTQwY2Y5YjdhMDU4ZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgK
QEAgLTExOSw4ICsxMTksOSBAQCBwdWJsaWM6CiAgICAgYm9vbCB1c2VzRXZhbCgpIGNvbnN0IHsg
cmV0dXJuIG1fdXNlc0V2YWw7IH0KICAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKCkgY29u
c3QgeyByZXR1cm4gbV9wYXJzZU1vZGU7IH0KICAgICBib29sIGlzQXJyb3dGdW5jdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1fcGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlv
bk1vZGU7IH0KLSAgICBib29sIGlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCgpIGNvbnN0IHsg
cmV0dXJuIG1faXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0OyB9CisgICAgRGVyaXZlZENvbnRl
eHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PERl
cml2ZWRDb250ZXh0VHlwZT4obV9kZXJpdmVkQ29udGV4dFR5cGUpOyB9CiAgICAgYm9vbCBpc0Fy
cm93RnVuY3Rpb25Db250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9pc0Fycm93RnVuY3Rpb25Db250
ZXh0OyB9CisgICAgYm9vbCBpc0NsYXNzQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1faXNDbGFz
c0NvbnRleHQ7IH0KIAogICAgIGJvb2wgbmVlZHNGdWxsU2NvcGVDaGFpbigpIGNvbnN0IHsgcmV0
dXJuIG1fbmVlZHNGdWxsU2NvcGVDaGFpbjsgfQogCkBAIC0zOTMsOSArMzk0LDkgQEAgcHJpdmF0
ZToKICAgICB1bnNpZ25lZCBtX2lzQnVpbHRpbkZ1bmN0aW9uIDogMTsKICAgICB1bnNpZ25lZCBt
X2NvbnN0cnVjdG9yS2luZCA6IDI7CiAgICAgdW5zaWduZWQgbV9zdXBlckJpbmRpbmcgOiAxOwot
ICAgIHVuc2lnbmVkIG1faXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0IDogMTsKKyAgICB1bnNp
Z25lZCBtX2Rlcml2ZWRDb250ZXh0VHlwZSA6IDI7CiAgICAgdW5zaWduZWQgbV9pc0Fycm93RnVu
Y3Rpb25Db250ZXh0IDogMTsKLQorICAgIHVuc2lnbmVkIG1faXNDbGFzc0NvbnRleHQgOiAxOwog
ICAgIHVuc2lnbmVkIG1fZmlyc3RMaW5lOwogICAgIHVuc2lnbmVkIG1fbGluZUNvdW50OwogICAg
IHVuc2lnbmVkIG1fZW5kQ29sdW1uOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKaW5kZXggZDkx
NGNhMWEwODQ5ZjhkZWRjOTcwYTQ0MGIwOGQ5YzFkMTRjMmQ1OC4uNTA2NzIyMDBmNTc3YTMwM2Fi
NzdiNmRkNzIxMDZmNzcyMjY5ZjdhMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCkBAIC02
NSw5ICs2NSwxMSBAQCBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogZ2VuZXJhdGVV
bmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKAogCiAgICAgZnVuY3Rpb24tPmZpbmlzaFBhcnNpbmco
ZXhlY3V0YWJsZS0+bmFtZSgpLCBleGVjdXRhYmxlLT5mdW5jdGlvbk1vZGUoKSk7CiAgICAgZXhl
Y3V0YWJsZS0+cmVjb3JkUGFyc2UoZnVuY3Rpb24tPmZlYXR1cmVzKCksIGZ1bmN0aW9uLT5oYXND
YXB0dXJlZFZhcmlhYmxlcygpKTsKLSAgICAKKworICAgIGJvb2wgaXNDbGFzc0NvbnRleHQgPSBl
eGVjdXRhYmxlLT5zdXBlckJpbmRpbmcoKSA9PSBTdXBlckJpbmRpbmc6Ok5lZWRlZDsKKwogICAg
IFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHJlc3VsdCA9IFVubGlua2VkRnVuY3Rpb25Db2Rl
QmxvY2s6OmNyZWF0ZSgmdm0sIEZ1bmN0aW9uQ29kZSwKLSAgICAgICAgRXhlY3V0YWJsZUluZm8o
ZnVuY3Rpb24tPm5lZWRzQWN0aXZhdGlvbigpLCBmdW5jdGlvbi0+dXNlc0V2YWwoKSwgZnVuY3Rp
b24tPmlzU3RyaWN0TW9kZSgpLCBraW5kID09IENvZGVGb3JDb25zdHJ1Y3QsIGZ1bmN0aW9uS2lu
ZCA9PSBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiwgZXhlY3V0YWJsZS0+Y29uc3RydWN0b3JLaW5k
KCksIGV4ZWN1dGFibGUtPnN1cGVyQmluZGluZygpLCBwYXJzZU1vZGUsICBleGVjdXRhYmxlLT5p
c0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoKSwgZmFsc2UpKTsKKyAgICAgICAgRXhlY3V0YWJs
ZUluZm8oZnVuY3Rpb24tPm5lZWRzQWN0aXZhdGlvbigpLCBmdW5jdGlvbi0+dXNlc0V2YWwoKSwg
ZnVuY3Rpb24tPmlzU3RyaWN0TW9kZSgpLCBraW5kID09IENvZGVGb3JDb25zdHJ1Y3QsIGZ1bmN0
aW9uS2luZCA9PSBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiwgZXhlY3V0YWJsZS0+Y29uc3RydWN0
b3JLaW5kKCksIGV4ZWN1dGFibGUtPnN1cGVyQmluZGluZygpLCBwYXJzZU1vZGUsIGV4ZWN1dGFi
bGUtPmRlcml2ZWRDb250ZXh0VHlwZSgpLCBmYWxzZSwgaXNDbGFzc0NvbnRleHQpKTsKIAogICAg
IGF1dG8gZ2VuZXJhdG9yKHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVHZW5lcmF0b3I+KHZtLCBm
dW5jdGlvbi5nZXQoKSwgcmVzdWx0LCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9kZSwgZXhlY3V0
YWJsZS0+cGFyZW50U2NvcGVURFpWYXJpYWJsZXMoKSkpOwogICAgIGVycm9yID0gZ2VuZXJhdG9y
LT5nZW5lcmF0ZSgpOwpAQCAtNzYsNyArNzgsNyBAQCBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkNv
ZGVCbG9jayogZ2VuZXJhdGVVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKAogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKLVVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZShWTSogdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBTb3VyY2VDb2Rl
JiBzb3VyY2UsIFJlZlB0cjxTb3VyY2VQcm92aWRlcj4mJiBzb3VyY2VPdmVycmlkZSwgRnVuY3Rp
b25NZXRhZGF0YU5vZGUqIG5vZGUsIFVubGlua2VkRnVuY3Rpb25LaW5kIGtpbmQsIENvbnN0cnVj
dEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSwgVmFyaWFibGVFbnZpcm9ubWVudCYgcGFyZW50U2Nv
cGVURFpWYXJpYWJsZXMsIGJvb2wgaXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KQorVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZNKiB2bSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgUmVmUHRyPFNv
dXJjZVByb3ZpZGVyPiYmIHNvdXJjZU92ZXJyaWRlLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbm9k
ZSwgVW5saW5rZWRGdW5jdGlvbktpbmQga2luZCwgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RB
YmlsaXR5LCBWYXJpYWJsZUVudmlyb25tZW50JiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgRGVy
aXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSkKICAgICA6IEJhc2UoKnZtLCBzdHJ1
Y3R1cmUpCiAgICAgLCBtX25hbWUobm9kZS0+aWRlbnQoKSkKICAgICAsIG1faW5mZXJyZWROYW1l
KG5vZGUtPmluZmVycmVkTmFtZSgpKQpAQCAtMTAxLDcgKzEwMyw3IEBAIFVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSogdm0sIFN0cnVjdHVy
ZSogc3RydWN0CiAgICAgLCBtX2NvbnN0cnVjdG9yS2luZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
bm9kZS0+Y29uc3RydWN0b3JLaW5kKCkpKQogICAgICwgbV9mdW5jdGlvbk1vZGUobm9kZS0+ZnVu
Y3Rpb25Nb2RlKCkpCiAgICAgLCBtX3N1cGVyQmluZGluZyhzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
bm9kZS0+c3VwZXJCaW5kaW5nKCkpKQotICAgICwgbV9pc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRl
eHQoaXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KQorICAgICwgbV9kZXJpdmVkQ29udGV4dFR5
cGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRlcml2ZWRDb250ZXh0VHlwZSkpCiB7CiAgICAgQVNT
RVJUKG1fY29uc3RydWN0b3JLaW5kID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihub2RlLT5jb25z
dHJ1Y3RvcktpbmQoKSkpOwogICAgIG1fcGFyZW50U2NvcGVURFpWYXJpYWJsZXMuc3dhcChwYXJl
bnRTY29wZVREWlZhcmlhYmxlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oCmluZGV4IGJlODFhY2Ew
MjAzMzY2NDE1ZjVlNDU4ODIwYTVjMWMwYmIyNDAzODAuLjU5ZTIyODM5YTQxZjkzMDc3MzRkZGE4
NzA1NmVmMDkxNjQ2ODJkZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oCkBAIC0zMCw2ICszMCw3
IEBACiAjaW5jbHVkZSAiQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oIgogI2luY2x1ZGUgIkNvZGVU
eXBlLmgiCiAjaW5jbHVkZSAiQ29uc3RydWN0QWJpbGl0eS5oIgorI2luY2x1ZGUgIkV4ZWN1dGFi
bGVJbmZvLmgiCiAjaW5jbHVkZSAiRXhwcmVzc2lvblJhbmdlSW5mby5oIgogI2luY2x1ZGUgIkhh
bmRsZXJJbmZvLmgiCiAjaW5jbHVkZSAiSWRlbnRpZmllci5oIgpAQCAtNjUsMTAgKzY2LDEwIEBA
IHB1YmxpYzoKICAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwogICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgU3RydWN0dXJlSXNJ
bW1vcnRhbDsKIAotICAgIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRl
KFZNKiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSog
bm9kZSwgVW5saW5rZWRGdW5jdGlvbktpbmQgdW5saW5rZWRGdW5jdGlvbktpbmQsIENvbnN0cnVj
dEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSwgVmFyaWFibGVFbnZpcm9ubWVudCYgcGFyZW50U2Nv
cGVURFpWYXJpYWJsZXMsIGJvb2wgaXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0LCBSZWZQdHI8
U291cmNlUHJvdmlkZXI+JiYgc291cmNlT3ZlcnJpZGUgPSBudWxscHRyKQorICAgIHN0YXRpYyBV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlKFZNKiB2bSwgY29uc3QgU291cmNlQ29k
ZSYgc291cmNlLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbm9kZSwgVW5saW5rZWRGdW5jdGlvbktp
bmQgdW5saW5rZWRGdW5jdGlvbktpbmQsIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0
eSwgVmFyaWFibGVFbnZpcm9ubWVudCYgcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIERlcml2ZWRD
b250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIFJlZlB0cjxTb3VyY2VQcm92aWRlcj4mJiBz
b3VyY2VPdmVycmlkZSA9IG51bGxwdHIpCiAgICAgewogICAgICAgICBVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZSogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZT4odm0tPmhlYXApKQotICAgICAgICAgICAgVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUodm0sIHZtLT51bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVN0cnVjdHVy
ZS5nZXQoKSwgc291cmNlLCBXVEY6Om1vdmUoc291cmNlT3ZlcnJpZGUpLCBub2RlLCB1bmxpbmtl
ZEZ1bmN0aW9uS2luZCwgY29uc3RydWN0QWJpbGl0eSwgcGFyZW50U2NvcGVURFpWYXJpYWJsZXMs
IGlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCk7CisgICAgICAgICAgICBVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZSh2bSwgdm0tPnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3RydWN0dXJl
LmdldCgpLCBzb3VyY2UsIFdURjo6bW92ZShzb3VyY2VPdmVycmlkZSksIG5vZGUsIHVubGlua2Vk
RnVuY3Rpb25LaW5kLCBjb25zdHJ1Y3RBYmlsaXR5LCBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywg
ZGVyaXZlZENvbnRleHRUeXBlKTsKICAgICAgICAgaW5zdGFuY2UtPmZpbmlzaENyZWF0aW9uKCp2
bSk7CiAgICAgICAgIHJldHVybiBpbnN0YW5jZTsKICAgICB9CkBAIC0xMjgsMTEgKzEyOSwxMiBA
QCBwdWJsaWM6CiAgICAgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCogcGFyZW50U2NvcGVURFpW
YXJpYWJsZXMoKSBjb25zdCB7IHJldHVybiAmbV9wYXJlbnRTY29wZVREWlZhcmlhYmxlczsgfQog
ICAgIAogICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9wYXJzZU1v
ZGUgPT0gU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZTsgfQotICAgIGJvb2wgaXNE
ZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KCkgY29uc3Qge3JldHVybiBtX2lzRGVyaXZlZENvbnN0
cnVjdG9yQ29udGV4dDsgfQogCi1wcml2YXRlOgotICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlKFZNKiwgU3RydWN0dXJlKiwgY29uc3QgU291cmNlQ29kZSYsIFJlZlB0cjxTb3VyY2VQcm92
aWRlcj4mJiBzb3VyY2VPdmVycmlkZSwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqLCBVbmxpbmtlZEZ1
bmN0aW9uS2luZCwgQ29uc3RydWN0QWJpbGl0eSwgVmFyaWFibGVFbnZpcm9ubWVudCYsIGJvb2wg
aXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KTsKKyAgICBKU0M6OkRlcml2ZWRDb250ZXh0VHlw
ZSBkZXJpdmVkQ29udGV4dFR5cGUoKSBjb25zdCB7cmV0dXJuIHN0YXRpY19jYXN0PEpTQzo6RGVy
aXZlZENvbnRleHRUeXBlPihtX2Rlcml2ZWRDb250ZXh0VHlwZSk7IH0KICAgICAKK3ByaXZhdGU6
CisgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0qLCBTdHJ1Y3R1cmUqLCBjb25zdCBT
b3VyY2VDb2RlJiwgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiYmIHNvdXJjZU92ZXJyaWRlLCBGdW5j
dGlvbk1ldGFkYXRhTm9kZSosIFVubGlua2VkRnVuY3Rpb25LaW5kLCBDb25zdHJ1Y3RBYmlsaXR5
LCBWYXJpYWJsZUVudmlyb25tZW50JiwgIEpTQzo6RGVyaXZlZENvbnRleHRUeXBlKTsKKwogICAg
IFdyaXRlQmFycmllcjxVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrPiBtX3VubGlua2VkQ29kZUJs
b2NrRm9yQ2FsbDsKICAgICBXcml0ZUJhcnJpZXI8VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaz4g
bV91bmxpbmtlZENvZGVCbG9ja0ZvckNvbnN0cnVjdDsKIApAQCAtMTYzLDcgKzE2NSw3IEBAIHBy
aXZhdGU6CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3RvcktpbmQgOiAyOwogICAgIHVuc2lnbmVk
IG1fZnVuY3Rpb25Nb2RlIDogMTsgLy8gRnVuY3Rpb25Nb2RlCiAgICAgdW5zaWduZWQgbV9zdXBl
ckJpbmRpbmcgOiAxOwotICAgIHVuc2lnbmVkIG1faXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0
IDogMTsKKyAgICB1bnNpZ25lZCBtX2Rlcml2ZWRDb250ZXh0VHlwZTogMjsKIAogcHJvdGVjdGVk
OgogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mIHZtKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCAx
Y2ZhMThkMDIyMjE3MGNjODhlMzQwZGI2ZTkzOGE5YTg3ODE3MjM2Li5kMTVlMjI0MzUyNjZmZTFh
ZmYzZDVmNzlhMWRkYTc1YjliZGFmM2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtMTU3LDcgKzE1
Nyw2IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIFByb2dy
YW1Ob2RlKiBwcm9ncmFtTm9kZSwgVW5saW5rZWRQCiAgICAgLCBtX3RoaXNSZWdpc3RlcihDYWxs
RnJhbWU6OnRoaXNBcmd1bWVudE9mZnNldCgpKQogICAgICwgbV9jb2RlVHlwZShHbG9iYWxDb2Rl
KQogICAgICwgbV92bSgmdm0pCi0gICAgLCBtX2lzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dChm
YWxzZSkKICAgICAsIG1fbmVlZHNUb1VwZGF0ZUFycm93RnVuY3Rpb25Db250ZXh0KHByb2dyYW1O
b2RlLT51c2VzQXJyb3dGdW5jdGlvbigpIHx8IHByb2dyYW1Ob2RlLT51c2VzRXZhbCgpKQogewog
ICAgIEFTU0VSVF9VTlVTRUQocGFyZW50U2NvcGVURFpWYXJpYWJsZXMsICFwYXJlbnRTY29wZVRE
WlZhcmlhYmxlcy0+c2l6ZSgpKTsKQEAgLTIxMSw4ICsyMTAsOCBAQCBCeXRlY29kZUdlbmVyYXRv
cjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwg
VW5saW5rZQogICAgIC8vIGNvbXBhdGlibGUgd2l0aCB0YWlsIGNhbGxzICh3ZSBoYXZlIG5vIHdh
eSBvZiBlbWl0dGluZyBvcF9kaWRfY2FsbCkuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE0ODgxOQogICAgICwgbV9pblRhaWxQb3NpdGlvbihPcHRpb25z
Ojp1c2VUYWlsQ2FsbHMoKSAmJiAhaXNDb25zdHJ1Y3RvcigpICYmIGNvbnN0cnVjdG9yS2luZCgp
ID09IENvbnN0cnVjdG9yS2luZDo6Tm9uZSAmJiBpc1N0cmljdE1vZGUoKSAmJiAhbV9zaG91bGRF
bWl0UHJvZmlsZUhvb2tzKQotICAgICwgbV9pc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoY29k
ZUJsb2NrLT5pc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoKSkKICAgICAsIG1fbmVlZHNUb1Vw
ZGF0ZUFycm93RnVuY3Rpb25Db250ZXh0KGZ1bmN0aW9uTm9kZS0+dXNlc0Fycm93RnVuY3Rpb24o
KSB8fCBmdW5jdGlvbk5vZGUtPnVzZXNFdmFsKCkpCisgICAgLCBtX2Rlcml2ZWRDb250ZXh0VHlw
ZShjb2RlQmxvY2stPmRlcml2ZWRDb250ZXh0VHlwZSgpKQogewogICAgIGZvciAoYXV0byYgY29u
c3RhbnRSZWdpc3RlciA6IG1fbGlua1RpbWVDb25zdGFudFJlZ2lzdGVycykKICAgICAgICAgY29u
c3RhbnRSZWdpc3RlciA9IG51bGxwdHI7CkBAIC01NzEsOSArNTcwLDkgQEAgQnl0ZWNvZGVHZW5l
cmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5v
ZGUsIFVubGlua2UKICAgICAvLyBMb2FkaW5nIHx0aGlzfCBpbnNpZGUgYW4gYXJyb3cgZnVuY3Rp
b24gbXVzdCBiZSBkb25lIGFmdGVyIGluaXRpYWxpemVEZWZhdWx0UGFyYW1ldGVyVmFsdWVzQW5k
U2V0dXBGdW5jdGlvblNjb3BlU3RhY2soKQogICAgIC8vIGJlY2F1c2UgdGhhdCBmdW5jdGlvbiBz
ZXRzIHVwIHRoZSBTeW1ib2xUYWJsZSBzdGFjayBhbmQgZW1pdExvYWRUaGlzRnJvbUFycm93RnVu
Y3Rpb25MZXhpY2FsRW52aXJvbm1lbnQoKQogICAgIC8vIGNvbnN1bHRzIHRoZSBTeW1ib2xUYWJs
ZSBzdGFjawotICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0
aW9uTW9kZSAmJiBmdW5jdGlvbk5vZGUtPnVzZXNUaGlzKCkpCisgICAgaWYgKFNvdXJjZVBhcnNl
TW9kZTo6QXJyb3dGdW5jdGlvbk1vZGUgPT0gcGFyc2VNb2RlICYmIChmdW5jdGlvbk5vZGUtPnVz
ZXNUaGlzKCkgfHwgaXNEZXJpdmVkQ2xhc3NDb250ZXh0KCkgfHwgaXNEZXJpdmVkQ29uc3RydWN0
b3JDb250ZXh0KCkpKQogICAgICAgICBlbWl0TG9hZFRoaXNGcm9tQXJyb3dGdW5jdGlvbkxleGlj
YWxFbnZpcm9ubWVudCgpOwotCisgICAgCiAgICAgaWYgKG5lZWRzVG9VcGRhdGVBcnJvd0Z1bmN0
aW9uQ29udGV4dCgpICYmICFjb2RlQmxvY2stPmlzQXJyb3dGdW5jdGlvbigpKSB7CiAgICAgICAg
IGluaXRpYWxpemVBcnJvd0Z1bmN0aW9uQ29udGV4dFNjb3BlSWZOZWVkZWQoZnVuY3Rpb25TeW1i
b2xUYWJsZSk7CiAgICAgICAgIGVtaXRQdXRUaGlzVG9BcnJvd0Z1bmN0aW9uQ29udGV4dFNjb3Bl
KCk7CkBAIC01OTMsOCArNTkyLDggQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJh
dG9yKFZNJiB2bSwgRXZhbE5vZGUqIGV2YWxOb2RlLCBVbmxpbmtlZEV2YWxDb2QKICAgICAsIG1f
Y29kZVR5cGUoRXZhbENvZGUpCiAgICAgLCBtX3ZtKCZ2bSkKICAgICAsIG1fdXNlc05vblN0cmlj
dEV2YWwoY29kZUJsb2NrLT51c2VzRXZhbCgpICYmICFjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgp
KQotICAgICwgbV9pc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoY29kZUJsb2NrLT5pc0Rlcml2
ZWRDb25zdHJ1Y3RvckNvbnRleHQoKSkKICAgICAsIG1fbmVlZHNUb1VwZGF0ZUFycm93RnVuY3Rp
b25Db250ZXh0KGV2YWxOb2RlLT51c2VzQXJyb3dGdW5jdGlvbigpIHx8IGV2YWxOb2RlLT51c2Vz
RXZhbCgpKQorICAgICwgbV9kZXJpdmVkQ29udGV4dFR5cGUoY29kZUJsb2NrLT5kZXJpdmVkQ29u
dGV4dFR5cGUoKSkKIHsKICAgICBmb3IgKGF1dG8mIGNvbnN0YW50UmVnaXN0ZXIgOiBtX2xpbmtU
aW1lQ29uc3RhbnRSZWdpc3RlcnMpCiAgICAgICAgIGNvbnN0YW50UmVnaXN0ZXIgPSBudWxscHRy
OwpAQCAtNjQ0LDcgKzY0Myw2IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRv
cihWTSYgdm0sIE1vZHVsZVByb2dyYW1Ob2RlKiBtb2R1bGVQcm9ncmFtTm9kCiAgICAgLCBtX2Nv
ZGVUeXBlKE1vZHVsZUNvZGUpCiAgICAgLCBtX3ZtKCZ2bSkKICAgICAsIG1fdXNlc05vblN0cmlj
dEV2YWwoZmFsc2UpCi0gICAgLCBtX2lzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dChmYWxzZSkK
ICAgICAsIG1fbmVlZHNUb1VwZGF0ZUFycm93RnVuY3Rpb25Db250ZXh0KG1vZHVsZVByb2dyYW1O
b2RlLT51c2VzQXJyb3dGdW5jdGlvbigpIHx8IG1vZHVsZVByb2dyYW1Ob2RlLT51c2VzRXZhbCgp
KQogewogICAgIEFTU0VSVF9VTlVTRUQocGFyZW50U2NvcGVURFpWYXJpYWJsZXMsICFwYXJlbnRT
Y29wZVREWlZhcmlhYmxlcy0+c2l6ZSgpKTsKQEAgLTQwNDcsMTQgKzQwNDUsMTQgQEAgdm9pZCBC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dE5ld1RhcmdldFRvQXJyb3dGdW5jdGlvbkNvbnRleHRT
Y29wZSgpCiAgICAgCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0RGVyaXZlZENvbnN0
cnVjdG9yVG9BcnJvd0Z1bmN0aW9uQ29udGV4dFNjb3BlKCkKIHsKLSAgICBpZiAoaXNDb25zdHJ1
Y3RvcigpICYmIGNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCkg
eworICAgIGlmICgoaXNDb25zdHJ1Y3RvcigpICYmIGNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0
cnVjdG9yS2luZDo6RGVyaXZlZCkgfHwgbV9jb2RlQmxvY2stPmlzQ2xhc3NDb250ZXh0KCkpIHsK
ICAgICAgICAgQVNTRVJUKG1fYXJyb3dGdW5jdGlvbkNvbnRleHRMZXhpY2FsRW52aXJvbm1lbnRS
ZWdpc3Rlcik7CiAgICAgICAgICAgICAKICAgICAgICAgVmFyaWFibGUgcHJvdG9TY29wZSA9IHZh
cmlhYmxlKHByb3BlcnR5TmFtZXMoKS5kZXJpdmVkQ29uc3RydWN0b3JQcml2YXRlTmFtZSk7CiAg
ICAgICAgIGVtaXRQdXRUb1Njb3BlKG1fYXJyb3dGdW5jdGlvbkNvbnRleHRMZXhpY2FsRW52aXJv
bm1lbnRSZWdpc3RlciwgcHJvdG9TY29wZSwgJm1fY2FsbGVlUmVnaXN0ZXIsIERvTm90VGhyb3dJ
Zk5vdEZvdW5kLCBJbml0aWFsaXphdGlvbik7CiAgICAgfQogfQotICAgIAorCiB2b2lkIEJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0UHV0VGhpc1RvQXJyb3dGdW5jdGlvbkNvbnRleHRTY29wZSgpCiB7
CiAgICAgQVNTRVJUKGlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCgpIHx8IG1fYXJyb3dGdW5j
dGlvbkNvbnRleHRMZXhpY2FsRW52aXJvbm1lbnRSZWdpc3RlciAhPSBudWxscHRyKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuaAppbmRleCAxZDg4YTEyNmM5MmM3YTU1MDFlMDc2MDcyNjkxNDA0YWFmNTc5NmNkLi40MTRl
MjQ0YTc3NTJiNjcwZDJlMjVhMzRiNGMxYmUxOTI4YTEzNzAyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBAIC0y
ODEsNyArMjgxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGNvbnN0IENvbW1vbklkZW50
aWZpZXJzJiBwcm9wZXJ0eU5hbWVzKCkgY29uc3QgeyByZXR1cm4gKm1fdm0tPnByb3BlcnR5TmFt
ZXM7IH0KIAogICAgICAgICBib29sIGlzQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2Nv
ZGVCbG9jay0+aXNDb25zdHJ1Y3RvcigpOyB9Ci0gICAgICAgIGJvb2wgaXNEZXJpdmVkQ29uc3Ry
dWN0b3JDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPmlzRGVyaXZlZENvbnN0
cnVjdG9yQ29udGV4dCgpOyB9CisgICAgICAgIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29u
dGV4dFR5cGUoKSBjb25zdCB7IHJldHVybiBtX2Rlcml2ZWRDb250ZXh0VHlwZTsgfQogICAgICAg
ICBib29sIHVzZXNBcnJvd0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zY29wZU5vZGUtPnVz
ZXNBcnJvd0Z1bmN0aW9uKCk7IH0KICAgICAgICAgYm9vbCBuZWVkc1RvVXBkYXRlQXJyb3dGdW5j
dGlvbkNvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX25lZWRzVG9VcGRhdGVBcnJvd0Z1bmN0aW9u
Q29udGV4dDsgfQogICAgICAgICBib29sIHVzZXNFdmFsKCkgY29uc3QgeyByZXR1cm4gbV9zY29w
ZU5vZGUtPnVzZXNFdmFsKCk7IH0KQEAgLTY5Nyw2ICs2OTcsMTAgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzQnVp
bHRpbkZ1bmN0aW9uOyB9CiAKICAgICAgICAgT3Bjb2RlSUQgbGFzdE9wY29kZUlEKCkgY29uc3Qg
eyByZXR1cm4gbV9sYXN0T3Bjb2RlSUQ7IH0KKyAgICAgICAgCisgICAgICAgIGJvb2wgaXNEZXJp
dmVkQ29uc3RydWN0b3JDb250ZXh0KCkgeyByZXR1cm4gbV9kZXJpdmVkQ29udGV4dFR5cGUgPT0g
RGVyaXZlZENvbnRleHRUeXBlOjpEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0OyB9CisgICAgICAg
IGJvb2wgaXNEZXJpdmVkQ2xhc3NDb250ZXh0KCkgeyByZXR1cm4gbV9kZXJpdmVkQ29udGV4dFR5
cGUgPT0gRGVyaXZlZENvbnRleHRUeXBlOjpEZXJpdmVkTWV0aG9kQ29udGV4dDsgfQorICAgICAg
ICBib29sIGlzQXJyb3dGdW5jdGlvbigpIHsgcmV0dXJuIG1fY29kZUJsb2NrLT5pc0Fycm93RnVu
Y3Rpb24oKTsgfQogCiAgICAgICAgIGVudW0gY2xhc3MgVERaQ2hlY2tPcHRpbWl6YXRpb24geyBP
cHRpbWl6ZSwgRG9Ob3RPcHRpbWl6ZSB9OwogICAgICAgICBlbnVtIGNsYXNzIE5lc3RlZFNjb3Bl
VHlwZSB7IElzTmVzdGVkLCBJc05vdE5lc3RlZCB9OwpAQCAtNzk0LDcgKzc5OCwxNCBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
KiBtYWtlRnVuY3Rpb24oRnVuY3Rpb25NZXRhZGF0YU5vZGUqIG1ldGFkYXRhKQogICAgICAgICB7
Ci0gICAgICAgICAgICBib29sIG5ld2lzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCA9IGNvbnN0
cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCB8fCAobV9pc0Rlcml2ZWRD
b25zdHJ1Y3RvckNvbnRleHQgJiYgbWV0YWRhdGEtPnBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNl
TW9kZTo6QXJyb3dGdW5jdGlvbk1vZGUpOworICAgICAgICAgICAgRGVyaXZlZENvbnRleHRUeXBl
IG5ld0Rlcml2ZWRDb250ZXh0VHlwZSA9IERlcml2ZWRDb250ZXh0VHlwZTo6Tm9uZTsKKworICAg
ICAgICAgICAgaWYgKG1ldGFkYXRhLT5wYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFy
cm93RnVuY3Rpb25Nb2RlKSB7CisgICAgICAgICAgICAgICAgaWYgKGNvbnN0cnVjdG9yS2luZCgp
ID09IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCB8fCBpc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRl
eHQoKSkKKyAgICAgICAgICAgICAgICAgICAgbmV3RGVyaXZlZENvbnRleHRUeXBlID0gRGVyaXZl
ZENvbnRleHRUeXBlOjpEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0OworICAgICAgICAgICAgICAg
IGVsc2UgaWYgKG1fY29kZUJsb2NrLT5pc0NsYXNzQ29udGV4dCgpIHx8IChtX2Rlcml2ZWRDb250
ZXh0VHlwZSA9PSBEZXJpdmVkQ29udGV4dFR5cGU6OkRlcml2ZWRNZXRob2RDb250ZXh0KSkKKyAg
ICAgICAgICAgICAgICAgICAgbmV3RGVyaXZlZENvbnRleHRUeXBlID0gRGVyaXZlZENvbnRleHRU
eXBlOjpEZXJpdmVkTWV0aG9kQ29udGV4dDsKKyAgICAgICAgICAgIH0KIAogICAgICAgICAgICAg
VmFyaWFibGVFbnZpcm9ubWVudCB2YXJpYWJsZXNVbmRlclREWjsKICAgICAgICAgICAgIGdldFZh
cmlhYmxlc1VuZGVyVERaKHZhcmlhYmxlc1VuZGVyVERaKTsKQEAgLTgwOCw3ICs4MTksNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIGVsc2UgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQ
YXJzZU1vZGU6Ok1ldGhvZE1vZGUgJiYgbWV0YWRhdGEtPmNvbnN0cnVjdG9yS2luZCgpID09IENv
bnN0cnVjdG9yS2luZDo6Tm9uZSkKICAgICAgICAgICAgICAgICBjb25zdHJ1Y3RBYmlsaXR5ID0g
Q29uc3RydWN0QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0OwogCi0gICAgICAgICAgICByZXR1cm4g
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZShtX3ZtLCBtX3Njb3BlTm9kZS0+c291
cmNlKCksIG1ldGFkYXRhLCBpc0J1aWx0aW5GdW5jdGlvbigpID8gVW5saW5rZWRCdWlsdGluRnVu
Y3Rpb24gOiBVbmxpbmtlZE5vcm1hbEZ1bmN0aW9uLCBjb25zdHJ1Y3RBYmlsaXR5LCB2YXJpYWJs
ZXNVbmRlclREWiwgbmV3aXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KTsKKyAgICAgICAgICAg
IHJldHVybiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKG1fdm0sIG1fc2NvcGVO
b2RlLT5zb3VyY2UoKSwgbWV0YWRhdGEsIGlzQnVpbHRpbkZ1bmN0aW9uKCkgPyBVbmxpbmtlZEJ1
aWx0aW5GdW5jdGlvbiA6IFVubGlua2VkTm9ybWFsRnVuY3Rpb24sIGNvbnN0cnVjdEFiaWxpdHks
IHZhcmlhYmxlc1VuZGVyVERaLCBuZXdEZXJpdmVkQ29udGV4dFR5cGUpOwogICAgICAgICB9CiAK
ICAgICAgICAgdm9pZCBnZXRWYXJpYWJsZXNVbmRlclREWihWYXJpYWJsZUVudmlyb25tZW50Jik7
CkBAIC05MTgsOSArOTI5LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgbV9pc0J1
aWx0aW5GdW5jdGlvbiB7IGZhbHNlIH07CiAgICAgICAgIGJvb2wgbV91c2VzTm9uU3RyaWN0RXZh
bCB7IGZhbHNlIH07CiAgICAgICAgIGJvb2wgbV9pblRhaWxQb3NpdGlvbiB7IGZhbHNlIH07Ci0g
ICAgICAgIGJvb2wgbV9pc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQgeyBmYWxzZSB9OwogICAg
ICAgICBib29sIG1fbmVlZHNUb1VwZGF0ZUFycm93RnVuY3Rpb25Db250ZXh0OwogICAgICAgICBi
b29sIG1faXNOZXdUYXJnZXRMb2FkZWRJbkFycm93RnVuY3Rpb24geyBmYWxzZSB9OworICAgICAg
ICBEZXJpdmVkQ29udGV4dFR5cGUgbV9kZXJpdmVkQ29udGV4dFR5cGUgeyBEZXJpdmVkQ29udGV4
dFR5cGU6Ok5vbmUgfTsKICAgICB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggYmE5OGVkNWU4MmRlMjA0Y2Rh
ODg0OTZlNmI1ZDYxNjJjYmMzNWJjOC4uY2MwMGJlNmFlMWY1NDRiMDkxYTgyMzc3YTVhMDM3YmZj
YjU5MTk5OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9O
b2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Tm9kZXNDb2RlZ2VuLmNwcApAQCAtMTczLDEyICsxNzMsMTYgQEAgUmVnaXN0ZXJJRCogU3VwZXJO
b2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJ
RCogZHMKIAogICAgIFJlZ2lzdGVySUQgY2FsbGVlOwogICAgIGNhbGxlZS5zZXRJbmRleChKU1N0
YWNrOjpDYWxsZWUpOwotCiAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0
b3IuZmluYWxEZXN0aW5hdGlvbihkc3QpLCAmY2FsbGVlLCBnZW5lcmF0b3IucHJvcGVydHlOYW1l
cygpLnVuZGVyc2NvcmVQcm90byk7CiB9CiAKIHN0YXRpYyBSZWdpc3RlcklEKiBlbWl0SG9tZU9i
amVjdEZvckNhbGxlZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yKQogeworICAgIGlmIChn
ZW5lcmF0b3IuaXNEZXJpdmVkQ2xhc3NDb250ZXh0KCkgfHwgZ2VuZXJhdG9yLmlzRGVyaXZlZENv
bnN0cnVjdG9yQ29udGV4dCgpKSB7CisgICAgICAgIFJlZ2lzdGVySUQqIGRlcml2ZWRDb25zdHJ1
Y3RvciA9IGdlbmVyYXRvci5lbWl0TG9hZERlcml2ZWRDb25zdHJ1Y3RvckZyb21BcnJvd0Z1bmN0
aW9uTGV4aWNhbEVudmlyb25tZW50KCk7CisgICAgICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdEdl
dEJ5SWQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBkZXJpdmVkQ29uc3RydWN0b3IsIGdlbmVy
YXRvci5wcm9wZXJ0eU5hbWVzKCkuaG9tZU9iamVjdFByaXZhdGVOYW1lKTsKKyAgICB9CisKICAg
ICBSZWdpc3RlcklEIGNhbGxlZTsKICAgICBjYWxsZWUuc2V0SW5kZXgoSlNTdGFjazo6Q2FsbGVl
KTsKICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGdlbmVyYXRvci5uZXdUZW1wb3Jh
cnkoKSwgJmNhbGxlZSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5ob21lT2JqZWN0UHJpdmF0
ZU5hbWUpOwpAQCAtNzQ5LDggKzc1Myw4IEBAIFJlZ2lzdGVySUQqIEZ1bmN0aW9uQ2FsbFZhbHVl
Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlCiAgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IHJldHVyblZhbHVlID0gZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRp
b24oZHN0LCBmdW5jLmdldCgpKTsKICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2Vu
ZXJhdG9yLCBtX2FyZ3MpOwogICAgIGlmIChtX2V4cHItPmlzU3VwZXJOb2RlKCkpIHsKLSAgICAg
ICAgQVNTRVJUKGdlbmVyYXRvci5pc0NvbnN0cnVjdG9yKCkgfHwgZ2VuZXJhdG9yLmlzRGVyaXZl
ZENvbnN0cnVjdG9yQ29udGV4dCgpKTsKLSAgICAgICAgQVNTRVJUKGdlbmVyYXRvci5jb25zdHJ1
Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQgfHwgZ2VuZXJhdG9yLmlzRGVy
aXZlZENvbnN0cnVjdG9yQ29udGV4dCgpKTsKKyAgICAgICAgQVNTRVJUKGdlbmVyYXRvci5pc0Nv
bnN0cnVjdG9yKCkgfHwgZ2VuZXJhdG9yLmRlcml2ZWRDb250ZXh0VHlwZSgpID09IERlcml2ZWRD
b250ZXh0VHlwZTo6RGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCk7CisgICAgICAgIEFTU0VSVChn
ZW5lcmF0b3IuY29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpEZXJpdmVkIHx8
IGdlbmVyYXRvci5kZXJpdmVkQ29udGV4dFR5cGUoKSA9PSBEZXJpdmVkQ29udGV4dFR5cGU6OkRl
cml2ZWRDb25zdHJ1Y3RvckNvbnRleHQpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdE1vdmUoY2Fs
bEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgZ2VuZXJhdG9yLm5ld1RhcmdldCgpKTsKICAgICAg
ICAgUmVnaXN0ZXJJRCogcmV0ID0gZ2VuZXJhdG9yLmVtaXRDb25zdHJ1Y3QocmV0dXJuVmFsdWUu
Z2V0KCksIGZ1bmMuZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2
b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRN
b3ZlKGdlbmVyYXRvci50aGlzUmVnaXN0ZXIoKSwgcmV0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwCmluZGV4IGU4MTJlZTA1
Njg3M2VmZjg5ZTgwMTk5MDNiOTcxNGY4MDZlYmQxNDYuLmY0Nzk0ZmQ0NTYzZTBiOWYyYWM4NTU4
YjM4YjNmOWVkMzM0YTUzOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1
Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rl
YnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcApAQCAtMTkyLDcgKzE5Miw3IEBAIEpTVmFsdWUg
RGVidWdnZXJDYWxsRnJhbWU6OmV2YWx1YXRlKGNvbnN0IFN0cmluZyYgc2NyaXB0LCBOYWtlZFB0
cjxFeGNlcHRpb24+JiBlCiAgICAgVmFyaWFibGVFbnZpcm9ubWVudCB2YXJpYWJsZXNVbmRlclRE
WjsKICAgICBKU1Njb3BlOjpjb2xsZWN0VmFyaWFibGVzVW5kZXJURFooc2NvcGUoKS0+anNTY29w
ZSgpLCB2YXJpYWJsZXNVbmRlclREWik7CiAKLSAgICBFdmFsRXhlY3V0YWJsZSogZXZhbCA9IEV2
YWxFeGVjdXRhYmxlOjpjcmVhdGUoY2FsbEZyYW1lLCBtYWtlU291cmNlKHNjcmlwdCksIGNvZGVC
bG9jay5pc1N0cmljdE1vZGUoKSwgdGhpc1REWk1vZGUsIGNvZGVCbG9jay51bmxpbmtlZENvZGVC
bG9jaygpLT5pc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoKSwgY29kZUJsb2NrLnVubGlua2Vk
Q29kZUJsb2NrKCktPmlzQXJyb3dGdW5jdGlvbigpLCAmdmFyaWFibGVzVW5kZXJURFopOworICAg
IEV2YWxFeGVjdXRhYmxlKiBldmFsID0gRXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShjYWxsRnJhbWUs
IG1ha2VTb3VyY2Uoc2NyaXB0KSwgY29kZUJsb2NrLmlzU3RyaWN0TW9kZSgpLCB0aGlzVERaTW9k
ZSwgY29kZUJsb2NrLnVubGlua2VkQ29kZUJsb2NrKCktPmRlcml2ZWRDb250ZXh0VHlwZSgpLCBj
b2RlQmxvY2sudW5saW5rZWRDb2RlQmxvY2soKS0+aXNBcnJvd0Z1bmN0aW9uKCksICZ2YXJpYWJs
ZXNVbmRlclREWik7CiAgICAgaWYgKHZtLmV4Y2VwdGlvbigpKSB7CiAgICAgICAgIGV4Y2VwdGlv
biA9IHZtLmV4Y2VwdGlvbigpOwogICAgICAgICB2bS5jbGVhckV4Y2VwdGlvbigpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKaW5kZXgg
NmQxNDA4N2M3ZTRhZjFhYTc1NDVmNjcxNjE4YmZhZTk3ODk0YWQ1OC4uYTJhOTQ4MDgyNjc5ZDhk
YjM2YmIxNDAwZWM5YjA4M2MzZTJhYWFlMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC0xODMsNyArMTgzLDcgQEAgSlNWYWx1
ZSBldmFsKENhbGxGcmFtZSogY2FsbEZyYW1lKQogICAgICAgICAvLyBJZiB0aGUgbGl0ZXJhbCBw
YXJzZXIgYmFpbGVkLCBpdCBzaG91bGQgbm90IGhhdmUgdGhyb3duIGV4Y2VwdGlvbnMuCiAgICAg
ICAgIEFTU0VSVCghY2FsbEZyYW1lLT52bSgpLmV4Y2VwdGlvbigpKTsKIAotICAgICAgICBldmFs
ID0gY2FsbGVyQ29kZUJsb2NrLT5ldmFsQ29kZUNhY2hlKCkuZ2V0U2xvdyhjYWxsRnJhbWUsIGNh
bGxlckNvZGVCbG9jaywgY2FsbGVyQ29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSwgdGhpc1REWk1v
ZGUsIGNhbGxlckNvZGVCbG9jay0+dW5saW5rZWRDb2RlQmxvY2soKS0+aXNEZXJpdmVkQ29uc3Ry
dWN0b3JDb250ZXh0KCksIGNhbGxlckNvZGVCbG9jay0+dW5saW5rZWRDb2RlQmxvY2soKS0+aXNB
cnJvd0Z1bmN0aW9uKCksIHNvdXJjZUNvZGUsIGNhbGxlclNjb3BlQ2hhaW4pOworICAgICAgICBl
dmFsID0gY2FsbGVyQ29kZUJsb2NrLT5ldmFsQ29kZUNhY2hlKCkuZ2V0U2xvdyhjYWxsRnJhbWUs
IGNhbGxlckNvZGVCbG9jaywgY2FsbGVyQ29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSwgdGhpc1RE
Wk1vZGUsIGNhbGxlckNvZGVCbG9jay0+dW5saW5rZWRDb2RlQmxvY2soKS0+ZGVyaXZlZENvbnRl
eHRUeXBlKCksIGNhbGxlckNvZGVCbG9jay0+dW5saW5rZWRDb2RlQmxvY2soKS0+aXNBcnJvd0Z1
bmN0aW9uKCksIHNvdXJjZUNvZGUsIGNhbGxlclNjb3BlQ2hhaW4pOwogCiAgICAgICAgIGlmICgh
ZXZhbCkKICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKaW5kZXggMGMxMzQ2M2FhYmMxMmViZDI1OTI1
ZTYyYjdlYTQ4ODAxM2JjZjM0MS4uMGU4ZDRhMDdiMzIzN2QyOTg5MGMyMWM0NTI5MzQ1N2M1M2Qw
N2VkMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCkBA
IC0xODgsNyArMTg4LDggQEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIENvZGVDYWNoZTo6
Z2V0RnVuY3Rpb25FeGVjdXRhYmxlRnJvbUdsb2JhbENvZGUoVk0mIHYKICAgICBtZXRhZGF0YS0+
c2V0RW5kUG9zaXRpb24ocG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSk7CiAgICAgLy8gVGhlIEZ1
bmN0aW9uIGNvbnN0cnVjdG9yIG9ubHkgaGFzIGFjY2VzcyB0byBnbG9iYWwgdmFyaWFibGVzLCBz
byBubyB2YXJpYWJsZXMgd2lsbCBiZSB1bmRlciBURFouCiAgICAgVmFyaWFibGVFbnZpcm9ubWVu
dCBlbXB0eVREWlZhcmlhYmxlczsKLSAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVu
Y3Rpb25FeGVjdXRhYmxlID0gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSgmdm0s
IHNvdXJjZSwgbWV0YWRhdGEsIFVubGlua2VkTm9ybWFsRnVuY3Rpb24sIENvbnN0cnVjdEFiaWxp
dHk6OkNhbkNvbnN0cnVjdCwgZW1wdHlURFpWYXJpYWJsZXMsIGZhbHNlKTsKKyAgICBVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGU6OmNyZWF0ZSgmdm0sIHNvdXJjZSwgbWV0YWRhdGEsIFVubGlua2VkTm9ybWFs
RnVuY3Rpb24sIENvbnN0cnVjdEFiaWxpdHk6OkNhbkNvbnN0cnVjdCwgZW1wdHlURFpWYXJpYWJs
ZXMsIERlcml2ZWRDb250ZXh0VHlwZTo6Tm9uZSk7CisKICAgICBmdW5jdGlvbkV4ZWN1dGFibGUt
Pm1fbmFtZVZhbHVlLnNldCh2bSwgZnVuY3Rpb25FeGVjdXRhYmxlLCBqc1N0cmluZygmdm0sIG5h
bWUuc3RyaW5nKCkpKTsKIAogICAgIG1fc291cmNlQ29kZS5hZGRDYWNoZShrZXksIFNvdXJjZUNv
ZGVWYWx1ZSh2bSwgZnVuY3Rpb25FeGVjdXRhYmxlLCBtX3NvdXJjZUNvZGUuYWdlKCkpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKaW5kZXggZjVkZjc3
ZDk4N2MwM2NiZTYwNDNhNDdkY2ViM2E5MTMxMWJkZjIzMC4uOWU0NzUxOTJiMDkyYTVmNTllM2E2
MzAzMGQxOWE3ODAyZTBjYmEzNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXhlY3V0YWJsZS5jcHAKQEAgLTEzMSwxNCArMTMxLDE0IEBAIEludHJpbnNpYyBOYXRpdmVFeGVj
dXRhYmxlOjppbnRyaW5zaWMoKSBjb25zdAogCiBjb25zdCBDbGFzc0luZm8gU2NyaXB0RXhlY3V0
YWJsZTo6c19pbmZvID0geyAiU2NyaXB0RXhlY3V0YWJsZSIsICZFeGVjdXRhYmxlQmFzZTo6c19p
bmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFNjcmlwdEV4ZWN1dGFibGUpIH07CiAKLVNjcmlw
dEV4ZWN1dGFibGU6OlNjcmlwdEV4ZWN1dGFibGUoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFZNJiB2
bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBib29sIGlzSW5TdHJpY3RDb250ZXh0LCBib29s
IGlzSW5EZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0LCBib29sIGlzSW5BcnJvd0Z1bmN0aW9uQ29u
dGV4dCkKK1NjcmlwdEV4ZWN1dGFibGU6OlNjcmlwdEV4ZWN1dGFibGUoU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBib29sIGlzSW5TdHJpY3RD
b250ZXh0LCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzSW5B
cnJvd0Z1bmN0aW9uQ29udGV4dCkKICAgICA6IEV4ZWN1dGFibGVCYXNlKHZtLCBzdHJ1Y3R1cmUs
IE5VTV9QQVJBTUVURVJTX05PVF9DT01QSUxFRCkKICAgICAsIG1fc291cmNlKHNvdXJjZSkKICAg
ICAsIG1fZmVhdHVyZXMoaXNJblN0cmljdENvbnRleHQgPyBTdHJpY3RNb2RlRmVhdHVyZSA6IDAp
CiAgICAgLCBtX2hhc0NhcHR1cmVkVmFyaWFibGVzKGZhbHNlKQogICAgICwgbV9uZXZlcklubGlu
ZShmYWxzZSkKICAgICAsIG1fZGlkVHJ5VG9FbnRlckluTG9vcChmYWxzZSkKLSAgICAsIG1faXNE
ZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KGlzSW5EZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KQor
ICAgICwgbV9kZXJpdmVkQ29udGV4dFR5cGUoZGVyaXZlZENvbnRleHRUeXBlKQogICAgICwgbV9p
c0Fycm93RnVuY3Rpb25Db250ZXh0KGlzSW5BcnJvd0Z1bmN0aW9uQ29udGV4dCkKICAgICAsIG1f
b3ZlcnJpZGVMaW5lTnVtYmVyKC0xKQogICAgICwgbV9maXJzdExpbmUoLTEpCkBAIC00MTQsNyAr
NDE0LDcgQEAgSlNPYmplY3QqIFNjcmlwdEV4ZWN1dGFibGU6OnByZXBhcmVGb3JFeGVjdXRpb25J
bXBsKAogCiBjb25zdCBDbGFzc0luZm8gRXZhbEV4ZWN1dGFibGU6OnNfaW5mbyA9IHsgIkV2YWxF
eGVjdXRhYmxlIiwgJlNjcmlwdEV4ZWN1dGFibGU6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9U
QUJMRShFdmFsRXhlY3V0YWJsZSkgfTsKIAotRXZhbEV4ZWN1dGFibGUqIEV2YWxFeGVjdXRhYmxl
OjpjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGJvb2wg
aXNJblN0cmljdENvbnRleHQsIFRoaXNURFpNb2RlIHRoaXNURFpNb2RlLCBib29sIGlzRGVyaXZl
ZENvbnN0cnVjdG9yQ29udGV4dCwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBjb25zdCBW
YXJpYWJsZUVudmlyb25tZW50KiB2YXJpYWJsZXNVbmRlclREWikKK0V2YWxFeGVjdXRhYmxlKiBF
dmFsRXhlY3V0YWJsZTo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYg
c291cmNlLCBib29sIGlzSW5TdHJpY3RDb250ZXh0LCBUaGlzVERaTW9kZSB0aGlzVERaTW9kZSwg
RGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgYm9vbCBpc0Fycm93RnVuY3Rp
b25Db250ZXh0LCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiB2YXJpYWJsZXNVbmRlclREWikK
IHsKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpOwogICAgIGlmICghZ2xvYmFsT2JqZWN0LT5ldmFsRW5hYmxlZCgpKSB7CkBAIC00
MjIsNyArNDIyLDcgQEAgRXZhbEV4ZWN1dGFibGUqIEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UKICAgICAgICAgcmV0dXJuIDA7
CiAgICAgfQogCi0gICAgRXZhbEV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxFdmFsRXhlY3V0YWJsZT4oKmV4ZWMtPmhlYXAoKSkpIEV2YWxFeGVjdXRh
YmxlKGV4ZWMsIHNvdXJjZSwgaXNJblN0cmljdENvbnRleHQsIGlzRGVyaXZlZENvbnN0cnVjdG9y
Q29udGV4dCwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCk7CisgICAgRXZhbEV4ZWN1dGFibGUqIGV4
ZWN1dGFibGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxFdmFsRXhlY3V0YWJsZT4oKmV4
ZWMtPmhlYXAoKSkpIEV2YWxFeGVjdXRhYmxlKGV4ZWMsIHNvdXJjZSwgaXNJblN0cmljdENvbnRl
eHQsIGRlcml2ZWRDb250ZXh0VHlwZSwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCk7CiAgICAgZXhl
Y3V0YWJsZS0+ZmluaXNoQ3JlYXRpb24oZXhlYy0+dm0oKSk7CiAKICAgICBVbmxpbmtlZEV2YWxD
b2RlQmxvY2sqIHVubGlua2VkRXZhbENvZGUgPSBnbG9iYWxPYmplY3QtPmNyZWF0ZUV2YWxDb2Rl
QmxvY2soZXhlYywgZXhlY3V0YWJsZSwgdGhpc1REWk1vZGUsIGlzQXJyb3dGdW5jdGlvbkNvbnRl
eHQsIHZhcmlhYmxlc1VuZGVyVERaKTsKQEAgLTQzNCw4ICs0MzQsOCBAQCBFdmFsRXhlY3V0YWJs
ZSogRXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNv
ZGUmIHNvdXJjZQogICAgIHJldHVybiBleGVjdXRhYmxlOwogfQogCi1FdmFsRXhlY3V0YWJsZTo6
RXZhbEV4ZWN1dGFibGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2Us
IGJvb2wgaW5TdHJpY3RDb250ZXh0LCBib29sIGlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCwg
Ym9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0KQotICAgIDogU2NyaXB0RXhlY3V0YWJsZShleGVj
LT52bSgpLmV2YWxFeGVjdXRhYmxlU3RydWN0dXJlLmdldCgpLCBleGVjLT52bSgpLCBzb3VyY2Us
IGluU3RyaWN0Q29udGV4dCwgaXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0LCBpc0Fycm93RnVu
Y3Rpb25Db250ZXh0KQorRXZhbEV4ZWN1dGFibGU6OkV2YWxFeGVjdXRhYmxlKEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBib29sIGluU3RyaWN0Q29udGV4dCwgRGVy
aXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25D
b250ZXh0KQorICAgIDogU2NyaXB0RXhlY3V0YWJsZShleGVjLT52bSgpLmV2YWxFeGVjdXRhYmxl
U3RydWN0dXJlLmdldCgpLCBleGVjLT52bSgpLCBzb3VyY2UsIGluU3RyaWN0Q29udGV4dCwgZGVy
aXZlZENvbnRleHRUeXBlLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0KQogewogfQogCkBAIC00NDcs
NyArNDQ3LDcgQEAgdm9pZCBFdmFsRXhlY3V0YWJsZTo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCiBj
b25zdCBDbGFzc0luZm8gUHJvZ3JhbUV4ZWN1dGFibGU6OnNfaW5mbyA9IHsgIlByb2dyYW1FeGVj
dXRhYmxlIiwgJlNjcmlwdEV4ZWN1dGFibGU6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJM
RShQcm9ncmFtRXhlY3V0YWJsZSkgfTsKIAogUHJvZ3JhbUV4ZWN1dGFibGU6OlByb2dyYW1FeGVj
dXRhYmxlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cmNlKQotICAgIDog
U2NyaXB0RXhlY3V0YWJsZShleGVjLT52bSgpLnByb2dyYW1FeGVjdXRhYmxlU3RydWN0dXJlLmdl
dCgpLCBleGVjLT52bSgpLCBzb3VyY2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCisgICAgOiBTY3Jp
cHRFeGVjdXRhYmxlKGV4ZWMtPnZtKCkucHJvZ3JhbUV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCks
IGV4ZWMtPnZtKCksIHNvdXJjZSwgZmFsc2UsIERlcml2ZWRDb250ZXh0VHlwZTo6Tm9uZSwgZmFs
c2UpCiB7CiAgICAgbV90eXBlUHJvZmlsaW5nU3RhcnRPZmZzZXQgPSAwOwogICAgIG1fdHlwZVBy
b2ZpbGluZ0VuZE9mZnNldCA9IHNvdXJjZS5sZW5ndGgoKSAtIDE7CkBAIC00NjMsNyArNDYzLDcg
QEAgdm9pZCBQcm9ncmFtRXhlY3V0YWJsZTo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCiBjb25zdCBD
bGFzc0luZm8gTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU6OnNfaW5mbyA9IHsgIk1vZHVsZVByb2dy
YW1FeGVjdXRhYmxlIiwgJlNjcmlwdEV4ZWN1dGFibGU6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhP
RF9UQUJMRShNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSkgfTsKIAogTW9kdWxlUHJvZ3JhbUV4ZWN1
dGFibGU6Ok1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291
cmNlQ29kZSYgc291cmNlKQotICAgIDogU2NyaXB0RXhlY3V0YWJsZShleGVjLT52bSgpLm1vZHVs
ZVByb2dyYW1FeGVjdXRhYmxlU3RydWN0dXJlLmdldCgpLCBleGVjLT52bSgpLCBzb3VyY2UsIGZh
bHNlLCBmYWxzZSwgZmFsc2UpCisgICAgOiBTY3JpcHRFeGVjdXRhYmxlKGV4ZWMtPnZtKCkubW9k
dWxlUHJvZ3JhbUV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIGV4ZWMtPnZtKCksIHNvdXJjZSwg
ZmFsc2UsIERlcml2ZWRDb250ZXh0VHlwZTo6Tm9uZSwgZmFsc2UpCiB7CiAgICAgbV90eXBlUHJv
ZmlsaW5nU3RhcnRPZmZzZXQgPSAwOwogICAgIG1fdHlwZVByb2ZpbGluZ0VuZE9mZnNldCA9IHNv
dXJjZS5sZW5ndGgoKSAtIDE7CkBAIC00OTUsNyArNDk1LDcgQEAgdm9pZCBNb2R1bGVQcm9ncmFt
RXhlY3V0YWJsZTo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCiBjb25zdCBDbGFzc0luZm8gRnVuY3Rp
b25FeGVjdXRhYmxlOjpzX2luZm8gPSB7ICJGdW5jdGlvbkV4ZWN1dGFibGUiLCAmU2NyaXB0RXhl
Y3V0YWJsZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEZ1bmN0aW9uRXhlY3V0YWJs
ZSkgfTsKIAogRnVuY3Rpb25FeGVjdXRhYmxlOjpGdW5jdGlvbkV4ZWN1dGFibGUoVk0mIHZtLCBj
b25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiB1bmxp
bmtlZEV4ZWN1dGFibGUsIHVuc2lnbmVkIGZpcnN0TGluZSwgdW5zaWduZWQgbGFzdExpbmUsIHVu
c2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4pCi0gICAgOiBTY3JpcHRFeGVj
dXRhYmxlKHZtLmZ1bmN0aW9uRXhlY3V0YWJsZVN0cnVjdHVyZS5nZXQoKSwgdm0sIHNvdXJjZSwg
dW5saW5rZWRFeGVjdXRhYmxlLT5pc0luU3RyaWN0Q29udGV4dCgpLCB1bmxpbmtlZEV4ZWN1dGFi
bGUtPmlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCgpLCBmYWxzZSkKKyAgICA6IFNjcmlwdEV4
ZWN1dGFibGUodm0uZnVuY3Rpb25FeGVjdXRhYmxlU3RydWN0dXJlLmdldCgpLCB2bSwgc291cmNl
LCB1bmxpbmtlZEV4ZWN1dGFibGUtPmlzSW5TdHJpY3RDb250ZXh0KCksIHVubGlua2VkRXhlY3V0
YWJsZS0+ZGVyaXZlZENvbnRleHRUeXBlKCksIGZhbHNlKQogICAgICwgbV91bmxpbmtlZEV4ZWN1
dGFibGUodm0sIHRoaXMsIHVubGlua2VkRXhlY3V0YWJsZSkKIHsKICAgICBSRUxFQVNFX0FTU0VS
VCghc291cmNlLmlzTnVsbCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0V4ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1
dGFibGUuaAppbmRleCAxMjQ4Y2FlODg1MzgwNDVkNTc5NzYxNTM2YzVkMTg2ZGViODg3MjNkLi43
OTU1ZDFmMDZhOGRiNzIxYjU4ODU5OTQwMDFjZmFmZmM3OTA4OGZiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCkBAIC0zNDYsNyArMzQ2LDggQEAgcHVibGlj
OgogICAgIGJvb2wgbmVlZHNBY3RpdmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9oYXNDYXB0dXJl
ZFZhcmlhYmxlcyB8fCBtX2ZlYXR1cmVzICYgKEV2YWxGZWF0dXJlIHwgV2l0aEZlYXR1cmUpOyB9
CiAgICAgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9pc0Fy
cm93RnVuY3Rpb25Db250ZXh0OyB9CiAgICAgYm9vbCBpc1N0cmljdE1vZGUoKSBjb25zdCB7IHJl
dHVybiBtX2ZlYXR1cmVzICYgU3RyaWN0TW9kZUZlYXR1cmU7IH0KLSAgICBib29sIGlzRGVyaXZl
ZENvbnN0cnVjdG9yQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1faXNEZXJpdmVkQ29uc3RydWN0
b3JDb250ZXh0OyB9CisgICAgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSgp
IGNvbnN0IHsgcmV0dXJuIG1fZGVyaXZlZENvbnRleHRUeXBlOyB9CisKICAgICBFQ01BTW9kZSBl
Y21hTW9kZSgpIGNvbnN0IHsgcmV0dXJuIGlzU3RyaWN0TW9kZSgpID8gU3RyaWN0TW9kZSA6IE5v
dFN0cmljdE1vZGU7IH0KICAgICAgICAgCiAgICAgdm9pZCBzZXROZXZlcklubGluZShib29sIHZh
bHVlKSB7IG1fbmV2ZXJJbmxpbmUgPSB2YWx1ZTsgfQpAQCAtMzk1LDcgKzM5Niw3IEBAIHByaXZh
dGU6CiAgICAgSlNPYmplY3QqIHByZXBhcmVGb3JFeGVjdXRpb25JbXBsKEV4ZWNTdGF0ZSosIEpT
RnVuY3Rpb24qLCBKU1Njb3BlKiwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCk7CiAKIHByb3RlY3Rl
ZDoKLSAgICBTY3JpcHRFeGVjdXRhYmxlKFN0cnVjdHVyZSosIFZNJiwgY29uc3QgU291cmNlQ29k
ZSYsIGJvb2wgaXNJblN0cmljdENvbnRleHQsIGJvb2wgaXNJbkRlcml2ZWRDb25zdHJ1Y3RvckNv
bnRleHQsIGJvb2wgaXNJbkFycm93RnVuY3Rpb25Db250ZXh0KTsKKyAgICBTY3JpcHRFeGVjdXRh
YmxlKFN0cnVjdHVyZSosIFZNJiwgY29uc3QgU291cmNlQ29kZSYsIGJvb2wgaXNJblN0cmljdENv
bnRleHQsIERlcml2ZWRDb250ZXh0VHlwZSwgYm9vbCBpc0luQXJyb3dGdW5jdGlvbkNvbnRleHQp
OwogCiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiAgICAgewpAQCAtNDE0LDcgKzQx
NSw3IEBAIHByb3RlY3RlZDoKICAgICBib29sIG1fbmV2ZXJJbmxpbmU7CiAgICAgYm9vbCBtX25l
dmVyT3B0aW1pemUgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9kaWRUcnlUb0VudGVySW5Mb29wOwot
ICAgIGJvb2wgbV9pc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQ7CisgICAgRGVyaXZlZENvbnRl
eHRUeXBlIG1fZGVyaXZlZENvbnRleHRUeXBlOwogICAgIGJvb2wgbV9pc0Fycm93RnVuY3Rpb25D
b250ZXh0OwogICAgIGludCBtX292ZXJyaWRlTGluZU51bWJlcjsKICAgICBpbnQgbV9maXJzdExp
bmU7CkBAIC00MzgsNyArNDM5LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9ldmFsQ29k
ZUJsb2NrLmdldCgpOwogICAgIH0KIAotICAgIHN0YXRpYyBFdmFsRXhlY3V0YWJsZSogY3JlYXRl
KEV4ZWNTdGF0ZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBib29sIGlzSW5TdHJpY3RDb250ZXh0LCBU
aGlzVERaTW9kZSwgYm9vbCBpc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQsIGJvb2wgaXNBcnJv
d0Z1bmN0aW9uQ29udGV4dCwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCopOworICAgIHN0YXRp
YyBFdmFsRXhlY3V0YWJsZSogY3JlYXRlKEV4ZWNTdGF0ZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBi
b29sIGlzSW5TdHJpY3RDb250ZXh0LCBUaGlzVERaTW9kZSwgRGVyaXZlZENvbnRleHRUeXBlLCBi
b29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqKTsK
IAogICAgIFBhc3NSZWZQdHI8SklUQ29kZT4gZ2VuZXJhdGVkSklUQ29kZSgpCiAgICAgewpAQCAt
NDUyLDggKzQ1Myw3IEBAIHB1YmxpYzoKICAgICAgICAgCiAgICAgREVDTEFSRV9JTkZPOwogCi0K
LSAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1
dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwg
ZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIFN1cGVyQmluZGluZzo6Tm90TmVl
ZGVkLCBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlLCBpc0Rlcml2ZWRDb25zdHJ1Y3RvckNv
bnRleHQoKSwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCgpKTsgfQorICAgIEV4ZWN1dGFibGVJbmZv
IGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNBY3Rp
dmF0aW9uKCksIHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UsIENvbnN0
cnVjdG9yS2luZDo6Tm9uZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIFNvdXJjZVBhcnNlTW9k
ZTo6UHJvZ3JhbU1vZGUsIGRlcml2ZWRDb250ZXh0VHlwZSgpLCBpc0Fycm93RnVuY3Rpb25Db250
ZXh0KCkgLCBmYWxzZSk7IH0KIAogICAgIHVuc2lnbmVkIG51bVZhcmlhYmxlcygpIHsgcmV0dXJu
IG1fdW5saW5rZWRFdmFsQ29kZUJsb2NrLT5udW1WYXJpYWJsZXMoKTsgfQogICAgIHVuc2lnbmVk
IG51bWJlck9mRnVuY3Rpb25EZWNscygpIHsgcmV0dXJuIG1fdW5saW5rZWRFdmFsQ29kZUJsb2Nr
LT5udW1iZXJPZkZ1bmN0aW9uRGVjbHMoKTsgfQpAQCAtNDYxLDcgKzQ2MSw4IEBAIHB1YmxpYzoK
IHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEV4ZWN1dGFibGVCYXNlOwogICAgIGZyaWVuZCBj
bGFzcyBTY3JpcHRFeGVjdXRhYmxlOwotICAgIEV2YWxFeGVjdXRhYmxlKEV4ZWNTdGF0ZSosIGNv
bnN0IFNvdXJjZUNvZGUmLCBib29sIGluU3RyaWN0Q29udGV4dCwgYm9vbCBpc0Rlcml2ZWRDb25z
dHJ1Y3RvckNvbnRleHQsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCk7CisKKyAgICBFdmFs
RXhlY3V0YWJsZShFeGVjU3RhdGUqLCBjb25zdCBTb3VyY2VDb2RlJiwgYm9vbCBpblN0cmljdENv
bnRleHQsIERlcml2ZWRDb250ZXh0VHlwZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0KTsK
IAogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsK
IApAQCAtNTA2LDcgKzUwNyw3IEBAIHB1YmxpYzoKICAgICAgICAgCiAgICAgREVDTEFSRV9JTkZP
OwogCi0gICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBF
eGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2Rl
KCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBTdXBlckJpbmRpbmc6Ok5v
dE5lZWRlZCwgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZSwgaXNEZXJpdmVkQ29uc3RydWN0
b3JDb250ZXh0KCksIGZhbHNlKTsgfQorICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZv
KCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNBY3RpdmF0aW9uKCksIHVzZXNF
dmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9u
ZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUs
IGRlcml2ZWRDb250ZXh0VHlwZSgpLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0KCksIGZhbHNlKTsg
fQogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBFeGVjdXRhYmxlQmFzZTsKQEAgLTU0Nyw3
ICs1NDgsNyBAQCBwdWJsaWM6CiAKICAgICBERUNMQVJFX0lORk87CiAKLSAgICBFeGVjdXRhYmxl
SW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRz
QWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBD
b25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBTb3VyY2VQYXJz
ZU1vZGU6Ok1vZHVsZUV2YWx1YXRlTW9kZSwgaXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KCks
IGZhbHNlKTsgfQorICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyBy
ZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNBY3RpdmF0aW9uKCksIHVzZXNFdmFsKCksIGlzU3Ry
aWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgU3VwZXJCaW5k
aW5nOjpOb3ROZWVkZWQsIFNvdXJjZVBhcnNlTW9kZTo6TW9kdWxlRXZhbHVhdGVNb2RlLCBkZXJp
dmVkQ29udGV4dFR5cGUoKSwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCgpLCBmYWxzZSk7IH0KIAog
ICAgIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogdW5saW5rZWRNb2R1bGVQcm9ncmFt
Q29kZUJsb2NrKCkgeyByZXR1cm4gbV91bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2suZ2V0
KCk7IH0KIApAQCAtNjU3LDcgKzY1OCw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzQnVpbHRpbkZ1
bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPmlzQnVpbHRpbkZ1
bmN0aW9uKCk7IH0KICAgICBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHkoKSBjb25z
dCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+Y29uc3RydWN0QWJpbGl0eSgpOyB9CiAg
ICAgYm9vbCBpc0Fycm93RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBwYXJzZU1vZGUoKSA9PSBT
b3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlOyB9Ci0gICAgYm9vbCBpc0Rlcml2ZWRD
b25zdHJ1Y3RvckNvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+
aXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KCk7IH0KKyAgICBEZXJpdmVkQ29udGV4dFR5cGUg
ZGVyaXZlZENvbnRleHRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUt
PmRlcml2ZWRDb250ZXh0VHlwZSgpOyB9CiAgICAgYm9vbCBpc0NsYXNzQ29uc3RydWN0b3JGdW5j
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5pc0NsYXNzQ29uc3Ry
dWN0b3JGdW5jdGlvbigpOyB9CiAgICAgY29uc3QgSWRlbnRpZmllciYgbmFtZSgpIHsgcmV0dXJu
IG1fdW5saW5rZWRFeGVjdXRhYmxlLT5uYW1lKCk7IH0KICAgICBjb25zdCBJZGVudGlmaWVyJiBp
bmZlcnJlZE5hbWUoKSB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+aW5mZXJyZWROYW1l
KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0RnVuY3Rpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0RnVuY3Rpb25zLmNwcAppbmRleCA5NjVlOTRkNzk0MjQ5ZmQxMjY1NWY0YzJmYzhi
ZmM0NWFiZWJhMmI0Li42YWNlYTVlM2Y2NDIwMjRhYTFjMjhmOGZjYmI4NzE3NjE4NmYxYjVmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1
bmN0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3RGdW5jdGlvbnMuY3BwCkBAIC01ODcsNyArNTg3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBnbG9iYWxGdW5jRXZhbChFeGVjU3RhdGUqIGV4ZWMpCiAKICAgICBKU0dsb2Jh
bE9iamVjdCogY2FsbGVlR2xvYmFsT2JqZWN0ID0gZXhlYy0+Y2FsbGVlKCktPmdsb2JhbE9iamVj
dCgpOwogICAgIFZhcmlhYmxlRW52aXJvbm1lbnQgZW1wdHlURFpWYXJpYWJsZXM7IC8vIEluZGly
ZWN0IGV2YWwgZG9lcyBub3QgaGF2ZSBhY2Nlc3MgdG8gdGhlIGxleGljYWwgc2NvcGUuCi0gICAg
RXZhbEV4ZWN1dGFibGUqIGV2YWwgPSBFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKGV4ZWMsIG1ha2VT
b3VyY2UocyksIGZhbHNlLCBUaGlzVERaTW9kZTo6Q2hlY2tJZk5lZWRlZCwgZmFsc2UsIGZhbHNl
LCAmZW1wdHlURFpWYXJpYWJsZXMpOworICAgIEV2YWxFeGVjdXRhYmxlKiBldmFsID0gRXZhbEV4
ZWN1dGFibGU6OmNyZWF0ZShleGVjLCBtYWtlU291cmNlKHMpLCBmYWxzZSwgVGhpc1REWk1vZGU6
OkNoZWNrSWZOZWVkZWQsIERlcml2ZWRDb250ZXh0VHlwZTo6Tm9uZSwgZmFsc2UsICZlbXB0eVRE
WlZhcmlhYmxlcyk7CiAgICAgaWYgKCFldmFsKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvZXM2LnlhbWwgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2LnlhbWwKaW5k
ZXggZjExOTdkMTNkZmU1YmYxNWU5OTRmNGRhYzJhYTM4M2M1MzM3MTJiMy4uNjgzZTZlMTZiNDYx
N2FjNmU1M2UwNzRlODNmOGNhYTcxYzUzYjkwMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL2VzNi55YW1sCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9l
czYueWFtbApAQCAtNzQ3LDcgKzc0Nyw3IEBACiAtIHBhdGg6IGVzNi9hcnJvd19mdW5jdGlvbnNf
bGV4aWNhbF9uZXcudGFyZ2V0X2JpbmRpbmcuanMKICAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBw
YXRoOiBlczYvYXJyb3dfZnVuY3Rpb25zX2xleGljYWxfc3VwZXJfYmluZGluZy5qcwotICBjbWQ6
IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9hcnJvd19m
dW5jdGlvbnNfbm9fcHJvdG90eXBlX3Byb3BlcnR5LmpzCiAgIGNtZDogcnVuRVM2IDpub3JtYWwK
IC0gcGF0aDogZXM2L2Jsb2NrLWxldmVsX2Z1bmN0aW9uX2RlY2xhcmF0aW9uLmpzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4
aWNhbC1iaW5kLXN1cGVycHJvcGVydHkuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
c3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXN1cGVycHJvcGVydHkuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMDUwZmU5MDU3MTliYTA4Njc5NzE0YTM4MGI0MWNlMWEzNDVhZjUxNQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlv
bi1sZXhpY2FsLWJpbmQtc3VwZXJwcm9wZXJ0eS5qcwpAQCAtMCwwICsxLDIyNCBAQAordmFyIHRl
c3RDYXNlID0gZnVuY3Rpb24gKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHsKKyAgICBpZiAo
YWN0dWFsICE9PSBleHBlY3RlZCkgeworICAgICAgICB0aHJvdyBtZXNzYWdlICsgIi4gRXhwZWN0
ZWQgJyIgKyBleHBlY3RlZCArICInLCBidXQgd2FzICciICsgYWN0dWFsICsgIiciOworICAgIH0K
K307CisKK3ZhciB0ZXN0VmFsdWUgID0gJ3Rlc3QtdmFsdWUnOworCit2YXIgQSA9IGNsYXNzIEEg
eworICAgIGNvbnN0cnVjdG9yKCkgeworICAgICAgICB0aGlzLnZhbHVlID0gdGVzdFZhbHVlOwor
ICAgIH0KKyAgICBnZXRDb25zdFZhbHVlICgpIHsKKyAgICAgICAgcmV0dXJuIHRlc3RWYWx1ZTsK
KyAgICB9CisgICAgZ2V0VmFsdWUgKCkgeworICAgICAgICByZXR1cm4gdGhpcy52YWx1ZTsKKyAg
ICB9CisgICAgc2V0VmFsdWUgKHZhbHVlKSB7CisgICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTsK
KyAgICB9Cit9OworCit2YXIgQiA9IGNsYXNzIEIgZXh0ZW5kcyBBIHsKKyAgICBnZXRQYXJlbnRW
YWx1ZSgpIHsKKyAgICAgICAgdmFyIGFycm93ICA9ICgpID0+IHN1cGVyLmdldFZhbHVlKCk7Cisg
ICAgICAgIHJldHVybiBhcnJvdygpOworICAgIH0KK307CisKK3ZhciBDID0gY2xhc3MgQyB7Cisg
ICAgY29uc3RydWN0b3IoKSB7CisgICAgICAgIHRoaXMudmFsdWUgPSB0ZXN0VmFsdWU7CisgICAg
fQorICAgIHN0YXRpYyBnZXRTdGF0aWNWYWx1ZSgpIHsKKyAgICAgICAgcmV0dXJuIHRlc3RWYWx1
ZTsKKyAgICB9Cit9OworCit2YXIgRCA9IGNsYXNzIEQgZXh0ZW5kcyBDIHsKKyAgICBzdGF0aWMg
Z2V0UGFyZW50U3RhdGljVmFsdWUoKSB7CisgICAgICAgIHZhciBhcnJvdyAgPSAoKSA9PiBzdXBl
ci5nZXRTdGF0aWNWYWx1ZSgpOworICAgICAgICByZXR1cm4gYXJyb3coKTsKKyAgICB9Cit9Owor
Cit2YXIgRSA9IGNsYXNzIEUgZXh0ZW5kcyBBIHsKKyAgICAgY29uc3RydWN0b3IoKSB7CisgICAg
ICAgICBzdXBlcigpOworICAgICB9CisgICAgIGdldCBwcm9wKCkgeworICAgICAgICAgdmFyIGFy
cm93ID0gKCkgPT4gc3VwZXIuZ2V0Q29uc3RWYWx1ZSgpICsgJy0nICsgdGhpcy52YWx1ZTsKKyAg
ICAgICAgIHJldHVybiBhcnJvdygpOworICAgICB9CisgICAgIHNldCBwcm9wKHZhbHVlKSB7Cisg
ICAgICAgICB2YXIgYXJyb3cgPSAobmV3VmFsKSA9PiBzdXBlci5zZXRWYWx1ZShuZXdWYWwpOwor
ICAgICAgICAgYXJyb3codmFsdWUpOworICAgICB9CisgICAgIHNldEluaXRWYWx1ZSgpIHsKKyAg
ICAgICB0aGlzLnZhbHVlID0gdGVzdFZhbHVlOworICAgICB9CisgfTsKKwordmFyIGIgPSBuZXcg
QigpOworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7CisgICAgdGVzdENhc2UoYi5n
ZXRQYXJlbnRWYWx1ZSgpLCB0ZXN0VmFsdWUsIGkpOworfQorCitmb3IgKHZhciBpID0gMDsgaSA8
IDEwMDAwOyBpKyspIHsKKyAgICB0ZXN0Q2FzZShELmdldFBhcmVudFN0YXRpY1ZhbHVlKCksIHRl
c3RWYWx1ZSwgaSk7Cit9CisKK3ZhciBlID0gbmV3IEUoKTsKK2ZvciAodmFyIGkgPSAwOyBpIDwg
MTAwMDA7IGkrKykgeworICAgICBlLnNldEluaXRWYWx1ZSgpOworICAgICB0ZXN0Q2FzZShlLnBy
b3AsIHRlc3RWYWx1ZSsnLScrdGVzdFZhbHVlLCBpKTsKKyAgICAgZS5wcm9wID0gJ25ldy10ZXN0
LXZhbHVlJzsKKyAgICAgdGVzdENhc2UoZS5wcm9wLCB0ZXN0VmFsdWUrJy1uZXctdGVzdC12YWx1
ZScsIGkpOworfQorCit2YXIgRiAgPSBjbGFzcyBGIGV4dGVuZHMgQSB7CisgICAgbmV3TWV0aG9k
KCkgeworICAgICAgICB2YXIgYXJyb3cgID0gKCkgPT4gZXZhbCgnc3VwZXIuZ2V0VmFsdWUoKScp
OworICAgICAgICB2YXIgciA9IGFycm93KCk7CisgICAgICAgIHJldHVybiByOworICAgIH0KK307
CisKK3ZhciBmID0gbmV3IEYoKTsKK2ZvciAodmFyIGk9MDsgaSA8IDEwMDAwOyBpKyspIHsKKyAg
ICB0cnkgeworICAgICAgICB2YXIgcmVzdWx0ID0gZi5uZXdNZXRob2QoKTsKKyAgICAgICAgdGVz
dENhc2UocmVzdWx0LCB0ZXN0VmFsdWUsIGkpOworICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAg
aWYgKCEoZSBpbnN0YW5jZW9mIFN5bnRheEVycm9yKSkKKyAgICAgICAgICAgdGhyb3cgZTsKKyAg
ICAgfQorfQorCit2YXIgRyA9IGNsYXNzIEcgZXh0ZW5kcyBBIHsKKyAgICAgY29uc3RydWN0b3Io
KSB7CisgICAgICAgICBzdXBlcigpOworICAgICB9CisgICAgIGdldCBwcm9wKCkgeworICAgICAg
ICAgdmFyIGFycm93ID0gKCkgPT4gKCkgPT4gc3VwZXIuZ2V0Q29uc3RWYWx1ZSgpICsgJy0nICsg
dGhpcy52YWx1ZTsKKyAgICAgICAgIHJldHVybiBhcnJvdygpKCk7CisgICAgIH0KKyAgICAgc2V0
IHByb3AodmFsdWUpIHsKKyAgICAgICAgIHZhciBhcnJvdyA9ICAoKSA9PiAobmV3VmFsKSA9PiB0
aGlzLnZhbHVlID0gbmV3VmFsOworICAgICAgICAgYXJyb3coKSh2YWx1ZSk7CisgICAgIH0KKyAg
ICAgc2V0SW5pdFZhbHVlKCkgeworICAgICAgICAgdGhpcy52YWx1ZSA9IHRlc3RWYWx1ZTsKKyAg
ICAgfQorICAgICBnZXRWYWx1ZUNCKCkgeworICAgICAgICAgdmFyIGFycm93ICA9ICgpID0+IHN1
cGVyLmdldFZhbHVlKCk7CisgICAgICAgICByZXR1cm4gYXJyb3c7CisgICAgIH0KKyAgICAgc2V0
VmFsdWVDQigpIHsKKyAgICAgICAgIHZhciBhcnJvdyA9ICAobmV3VmFsKSA9PiB0aGlzLnZhbHVl
ID0gbmV3VmFsOworICAgICAgICAgcmV0dXJuIGFycm93OworICAgICB9CisgICAgIGdldFBhcmVu
dFZhbHVlKCkgeworICAgICAgICAgcmV0dXJuIHN1cGVyLmdldFZhbHVlKCk7CisgICAgIH0KKyAg
ICAgZ2V0UGFyZW50VmFsdWVXaXRoRXJyb3IoKSB7CisgICAgICAgICB2YXIgZiA9ICBmdW5jdGlv
biAoKSB7CisgICAgICAgICAgICAgcmV0dXJuICgpID0+IHN1cGVyLmdldFZhbHVlKCk7CisgICAg
ICAgICB9OworICAgICAgICAgcmV0dXJuIGYoKTsKKyAgICAgfQorIH07CisKKyB2YXIgZyA9IG5l
dyBHKCk7CisgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7CisgICAgZy5zZXRJbml0
VmFsdWUoKTsKKyAgICB0ZXN0Q2FzZShnLnByb3AsIHRlc3RWYWx1ZSArICctJyArIHRlc3RWYWx1
ZSwgJ0Vycm9yOiBTb21lIHByb2JsZW0gd2l0aCB1c2luZyBhcnJvdyBhbmQgInN1cGVyIiBpbnNp
ZGUgb2YgdGhlIG1ldGhvZCcpOworICAgIGcucHJvcCA9ICduZXctdGVzdC12YWx1ZSc7CisgICAg
dGVzdENhc2UoZy5wcm9wLCB0ZXN0VmFsdWUgKyAnLW5ldy10ZXN0LXZhbHVlJywgJ0Vycm9yOiBT
b21lIHByb2JsZW0gd2l0aCB1c2luZyBhcnJvdyBhbmQgInN1cGVyIiBpbnNpZGUgb2YgdGhlIGdl
dHRlciBhbmQgc2V0dGVyJyk7CisgfQorCit2YXIgZzEgPSBuZXcgRygpOworZm9yICh2YXIgaSA9
IDA7IGkgPCAxMDAwMDsgaSsrKSB7CisgICAgZzEuc2V0SW5pdFZhbHVlKCk7CisgICAgbGV0IGdl
dFZhbHVlID0gZzEuZ2V0VmFsdWVDQigpOworICAgIHRlc3RDYXNlKGdldFZhbHVlKCksIHRlc3RW
YWx1ZSwgICdFcnJvcjogU29tZSBwcm9ibGVtIHdpdGggdXNpbmcgYXJyb3cgYW5kICJzdXBlciIg
aW5zaWRlIG9mIHRoZSBtZXRob2QgdGhhdCByZXR1biBhcnJvdyBmdW5jdGlvbicpOworICAgIGxl
dCBzZXRWYWx1ZSA9IGcxLnNldFZhbHVlQ0IoKTsKKyAgICBzZXRWYWx1ZSgnbmV3LXZhbHVlJyk7
CisgICAgdGVzdENhc2UoZ2V0VmFsdWUoKSwgJ25ldy12YWx1ZScsICdFcnJvcjogU29tZSBwcm9i
bGVtIHdpdGggdXNpbmcgYXJyb3cgYW5kICJzdXBlciIgaW5zaWRlIG9mIHRoZSBtZXRob2QgdGhh
dCByZXR1biBhcnJvdyBmdW5jdGlvbicpOworfQorCit2YXIgZzIgPSBuZXcgRygpOworZm9yICh2
YXIgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7CisgICAgbGV0IGVycm9yID0gZmFsc2U7CisgICAg
dHJ5IHsKKyAgICAgICBnMi5nZXRQYXJlbnRWYWx1ZVdpdGhFcnJvcigpKCk7CisgICAgfSBjYXRj
aChlKSB7CisgICAgICAvLyBGSVhNRTogc2hvdWxkIGJ5IGNoZWNrIGlmIGUgaW5zdGFuY2VvZiBT
eW50YXhFcnJvcgorICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1MDg5MworICAgICAgZXJyb3IgPSB0cnVlOworICAgIH0KKyAgICB0ZXN0Q2FzZShlcnJv
ciwgdHJ1ZSwgJ0Vycm9yOiB1c2luZyAic3VwZXIiIHNob3VsZCBsZWFkIHRvIGVycm9yJyk7Cit9
CisKKwordmFyIEggPSBjbGFzcyBIIGV4dGVuZHMgQSB7CisgICAgY29uc3RydWN0b3IoKSB7Cisg
ICAgICAgIHZhciBhcnJvdyA9ICgpID0+ICgpID0+IHN1cGVyLmdldFZhbHVlKCk7CisgICAgICAg
IHN1cGVyKCk7CisgICAgICAgIHRoaXMubmV3VmFsdWUgID0gYXJyb3coKSgpOworICAgIH0KK307
CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgeworICAgIGxldCBoID0gbmV3IEgo
KTsKKyAgICB0ZXN0Q2FzZShoLm5ld1ZhbHVlLCB0ZXN0VmFsdWUsICdFcnJvcjogU29tZSBwcm9i
bGVtIHdpdGggdXNpbmcgInN1cGVyIiBpbnNpZGUgb2YgdGhlIGNvbnN0cnVjdG9yJyk7Cit9CisK
K3ZhciBJID0gY2xhc3MgSSBleHRlbmRzIEEgeworICAgIGNvbnN0cnVjdG9yIChiZWZvcmVTdXBl
cikgeworICAgICAgICB2YXIgYXJyb3cgPSAoKSA9PiBzdXBlci5nZXRWYWx1ZSgpOworICAgICAg
ICBpZiAoYmVmb3JlU3VwZXIpICB7CisgICAgICAgICAgICB0aGlzLl92YWx1ZSA9IGFycm93KCk7
CisgICAgICAgICAgICBzdXBlcigpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgc3Vw
ZXIoKTsKKyAgICAgICAgICAgIHRoaXMuX3ZhbHVlID0gYXJyb3coKTsKKyAgICAgICAgfQorICAg
IH0KK30KKwordmFyIEogPSBjbGFzcyBKIGV4dGVuZHMgQSB7CisgICAgY29uc3RydWN0b3IgKGJl
Zm9yZVN1cGVyKSB7CisgICAgICAgIHZhciBfdmFsdWU7CisgICAgICAgIHZhciBhcnJvdyA9ICgp
ID0+IHN1cGVyLmdldENvbnN0VmFsdWUoKTsKKyAgICAgICAgaWYgKGJlZm9yZVN1cGVyKSAgewor
ICAgICAgICAgICAgX3ZhbHVlID0gYXJyb3coKTsKKyAgICAgICAgICAgIHN1cGVyKCk7CisgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgc3VwZXIoKTsKKyAgICAgICAgICAgIF92YWx1ZSA9
IGFycm93KCk7CisgICAgICAgIH0KKyAgICAgICAgdGhpcy5fdmFsdWUgPSBfdmFsdWU7CisgICAg
fQorfQorCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgICBsZXQgaSA9IG5l
dyBJKGZhbHNlKTsKKyAgICB0ZXN0Q2FzZShpLl92YWx1ZSwgdGVzdFZhbHVlLCAnRXJyb3I6IFNv
bWUgcHJvYmxlbSB3aXRoIHVzaW5nICJzdXBlciIgaW5zaWRlIG9mIHRoZSBjb25zdHJ1Y3Rvcicp
OworICAgIGxldCBqID0gbmV3IEooZmFsc2UpOworICAgIHRlc3RDYXNlKGouX3ZhbHVlLCB0ZXN0
VmFsdWUsICdFcnJvcjogU29tZSBwcm9ibGVtIHdpdGggdXNpbmcgInN1cGVyIiBpbnNpZGUgb2Yg
dGhlIGNvbnN0cnVjdG9yJyk7CisKKyAgICAvLyBGSVhNRTogUHJvYmxlbSB3aXRoIGFjY2VzcyB0
byB0aGUgc3VwZXIgYmVmb3JlIHN1cGVyKCkgaW4gY29uc3RydWN0b3IKKyAgICAvLyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUyMTA4CisgICAgLy9sZXQgajIgPSBu
ZXcgSih0cnVlKTsKKyAgICAvL3Rlc3RDYXNlKGoyLl92YWx1ZSwgdGVzdFZhbHVlLCAnRXJyb3I6
IFNvbWUgcHJvYmxlbSB3aXRoIHVzaW5nICJzdXBlciIgaW5zaWRlIG9mIHRoZSBjb25zdHJ1Y3Rv
cicpOworICAgIGVycm9yID0gZmFsc2U7CisgICAgdHJ5IHsKKyAgICAgICAgbmV3IEkodHJ1ZSk7
CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBlcnJvciA9IGUgaW5zdGFuY2VvZiBSZWZlcmVu
Y2VFcnJvcjsKKyAgICB9CisgICAgdGVzdENhc2UoZXJyb3IsIHRydWUsICdFcnJvcjogdXNpbmcg
InN1cGVyIiBwcm9wZXJ0eSBiZWZvcmUgc3VwZXIoKSBzaG91bGQgbGVhZCB0byBlcnJvcicpOwor
fQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCmluZGV4IDQ1Nzc4NzdlODAxMjA2ZDMxM2ViMmZjMmE5NjhlNWRhNTBjN2UwNWEuLjUzNzVh
ODFmZjhkZTczMWJhY2E4ZjNiYWFmYTA5MGI4NTc2ZjQ0MjkgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBA
QAorMjAxNS0xMi0xMCAgU2thY2hrb3YgT2xla3NhbmRyICA8Z3NrYWNoa292QGdtYWlsLmNvbT4K
KworICAgICAgICBbRVM2XSBBcnJvdyBmdW5jdGlvbiBzeW50YXguIEFycm93IGZ1bmN0aW9uIHNw
ZWNpZmljIGZlYXR1cmVzLiBMZXhpY2FsIGJpbmQgInN1cGVyIgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5NjE1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBqcy9hcnJvd2Z1bmN0aW9uLXN1cGVycHJv
cGVydHktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9hcnJvd2Z1bmN0aW9uLXN1
cGVycHJvcGVydHkuaHRtbDogQWRkZWQuCisgICAgICAgICoganMvc2NyaXB0LXRlc3RzL2Fycm93
ZnVuY3Rpb24tc3VwZXJwcm9wZXJ0eS5qczogQWRkZWQuCisKIDIwMTUtMTItMDUgIFNrYWNoa292
IE9sZWtzYW5kciAgPGdza2FjaGtvdkBnbWFpbC5jb20+CiAKICAgICAgICAgW0VTNl0gInN1cGVy
IiBhbmQgInRoaXMiIHNob3VsZCBiZSBsZXhpY2FsbHkgYm91bmQgaW5zaWRlIGFuIGFycm93IGZ1
bmN0aW9uIGFuZCBzaG91bGQgbGl2ZSBpbiBhIEpTTGV4aWNhbEVudmlyb25tZW50CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXN1cGVycHJvcGVydHktZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1zdXBlcnByb3BlcnR5LWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4zZGYyYzQ5NWZiOWZmMWUyNzYzMzBmMTUzYzE0MGJiNWZmNWY0OWQz
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1zdXBlcnBy
b3BlcnR5LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE2IEBACitUZXN0cyBmb3IgRVM2IGFycm93
IGZ1bmN0aW9uLCBhY2Nlc3MgdG8gdGhlIHN1cGVyIHByb3BlcnR5IGluIGFycm93IGZ1bmN0aW9u
CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIChuZXcgQigpKS5nZXRWYWx1
ZVBhcmVudEZ1bmN0aW9uKCkgaXMgZXhwZWN0ZWRWYWx1ZQorUEFTUyAobmV3IEMoZmFsc2UpKS52
YWx1ZSBpcyBleHBlY3RlZFZhbHVlCitQQVNTIEUuZ2V0UGFyZW50U3RhdGljVmFsdWUoKSBpcyBl
eHBlY3RlZFZhbHVlCitQQVNTIGYucHJvcCBpcyBleHBlY3RlZFZhbHVlICsgIi0iICsgZXhwZWN0
ZWRWYWx1ZQorUEFTUyBmLnByb3AgaXMgZXhwZWN0ZWRWYWx1ZSArICItIiArICJuZXctdmFsdWUi
CitQQVNTIChuZXcgRigpKS5nZXRQYXJlbnRWYWx1ZSgpIGlzIGV4cGVjdGVkVmFsdWUKK1BBU1Mg
KG5ldyBGKCkpLmdldFBhcmVudFZhbHVlV2l0aEVycm9yKCkoKSB0aHJldyBleGNlcHRpb24gVHlw
ZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnc3VwZXIuZ2V0
VmFsdWUnKS4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVU
RQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXN1cGVycHJvcGVy
dHkuaHRtbCBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tc3VwZXJwcm9wZXJ0eS5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjAyYjUwNWY3OTk0NWI3Y2EzOWM5NmNjNzE5YWNkYzk1ZmY1YmEwZmQKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXN1cGVycHJvcGVy
dHkuaHRtbApAQCAtMCwwICsxLDEwIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYv
L0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3Jj
PSJzY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1zdXBlcnByb3BlcnR5LmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9h
cnJvd2Z1bmN0aW9uLXN1cGVycHJvcGVydHkuanMgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVz
dHMvYXJyb3dmdW5jdGlvbi1zdXBlcnByb3BlcnR5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU1ZjI0OWNiYmJk
YTI4OGYxMzdhNTIzNzBmMjYxMWNiNDE1NzFmYmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1zdXBlcnByb3BlcnR5LmpzCkBAIC0w
LDAgKzEsOTUgQEAKK2Rlc2NyaXB0aW9uKCdUZXN0cyBmb3IgRVM2IGFycm93IGZ1bmN0aW9uLCBh
Y2Nlc3MgdG8gdGhlIHN1cGVyIHByb3BlcnR5IGluIGFycm93IGZ1bmN0aW9uJyk7CisKK3ZhciBl
eHBlY3RlZFZhbHVlID0gJ3Rlc3QtdmFsdWUnOworCitjbGFzcyBBIHsKKyAgICBnZXRWYWx1ZSAo
KSB7CisgICAgICAgIHJldHVybiBleHBlY3RlZFZhbHVlOworICAgIH0KK307CisKK2NsYXNzIEIg
ZXh0ZW5kcyBBIHsKKyAgICBnZXRWYWx1ZVBhcmVudEZ1bmN0aW9uKCkgeworICAgICAgICB2YXIg
YXJyb3cgID0gKCkgPT4gc3VwZXIuZ2V0VmFsdWUoKTsKKyAgICAgICAgcmV0dXJuIGFycm93KCk7
CisgICAgfQorfTsKKworY2xhc3MgQyBleHRlbmRzIEIgeworICAgIGNvbnN0cnVjdG9yKGJlZm9y
ZVN1cGVyKSB7CisgICAgICAgIGxldCBfdmFsdWU7CisgICAgICAgIGxldCBhcnJvdyA9ICgpID0+
IHN1cGVyLmdldFZhbHVlKCk7CisgICAgICAgIGlmIChiZWZvcmVTdXBlcikgeworICAgICAgICAg
ICAgX3ZhbHVlID0gYXJyb3coKTsKKyAgICAgICAgICAgIHN1cGVyKCk7CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICBzdXBlcigpOworICAgICAgICAgICAgX3ZhbHVlID0gYXJyb3coKTsK
KyAgICAgICAgfQorICAgICAgICB0aGlzLnZhbHVlID0gX3ZhbHVlOworICAgIH0KK307CisKK2Ns
YXNzIEQgeworICAgIGNvbnN0cnVjdG9yKCkgeworICAgICAgICB0aGlzLnZhbHVlID0gZXhwZWN0
ZWRWYWx1ZTsKKyAgICB9CisgICAgc3RhdGljIGdldFN0YXRpY1ZhbHVlKCkgeworICAgICAgICBy
ZXR1cm4gZXhwZWN0ZWRWYWx1ZTsKKyAgICB9Cit9OworCitjbGFzcyBFIGV4dGVuZHMgRCB7Cisg
ICAgc3RhdGljIGdldFBhcmVudFN0YXRpY1ZhbHVlKCkgeworICAgICAgICB2YXIgYXJyb3cgID0g
KCkgPT4gc3VwZXIuZ2V0U3RhdGljVmFsdWUoKTsKKyAgICAgICAgcmV0dXJuIGFycm93KCk7Cisg
ICAgfQorfTsKKworY2xhc3MgRiBleHRlbmRzIEEgeworICAgIGNvbnN0cnVjdG9yKCkgeworICAg
ICAgICBzdXBlcigpOworICAgICAgICB0aGlzLnZhbHVlID0gZXhwZWN0ZWRWYWx1ZTsKKyAgICB9
CisgICAgZ2V0IHByb3AoKSB7CisgICAgICAgIHZhciBhcnJvdyA9ICgpID0+IHN1cGVyLmdldFZh
bHVlKCkrICctJyArIHRoaXMudmFsdWU7CisgICAgICAgIHJldHVybiBhcnJvdygpOworICAgIH0K
KyAgICBzZXQgcHJvcCh2YWx1ZSkgeworICAgICAgICB2YXIgYXJyb3cgPSAobmV3VmFsKSA9PiB0
aGlzLnZhbHVlID0gbmV3VmFsOworICAgICAgICBhcnJvdyh2YWx1ZSk7CisgICAgfQorICAgIGdl
dFBhcmVudFZhbHVlKCkgeworICAgICAgICBsZXQgYXJyb3cgPSAoKSA9PiAoKSA9PiBzdXBlci5n
ZXRWYWx1ZSgpOworICAgICAgICByZXR1cm4gYXJyb3coKSgpOworICAgIH0KKyAgICBnZXRQYXJl
bnRWYWx1ZVdpdGhFcnJvcigpIHsKKyAgICAgICAgdmFyIGYgPSAgZnVuY3Rpb24gKCkgeworICAg
ICAgICAgICAgcmV0dXJuICgpID0+IHN1cGVyLmdldFZhbHVlKCk7CisgICAgICAgIH07CisgICAg
ICAgIHJldHVybiBmKCk7CisgICAgfQorIH07CisKK3Nob3VsZEJlKCcobmV3IEIoKSkuZ2V0VmFs
dWVQYXJlbnRGdW5jdGlvbigpJywgJ2V4cGVjdGVkVmFsdWUnKTsKKworc2hvdWxkQmUoJyhuZXcg
QyhmYWxzZSkpLnZhbHVlJywgJ2V4cGVjdGVkVmFsdWUnKTsKKworLy8gRklYTUU6IFByb2JsZW0g
d2l0aCBhY2Nlc3MgdG8gdGhlIHN1cGVyIGJlZm9yZSBzdXBlcigpIGluIGNvbnN0cnVjdG9yCisv
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUyMTA4CisvL3Nob3Vs
ZFRocm93KCcobmV3IEModHJ1ZSkpJywgJ1JlZmVyZW5jZUVycm9yJyk7CisKK3Nob3VsZEJlKCdF
LmdldFBhcmVudFN0YXRpY1ZhbHVlKCknLCAnZXhwZWN0ZWRWYWx1ZScpOworCit2YXIgZiA9IG5l
dyBGKCk7CisKK3Nob3VsZEJlKCdmLnByb3AnLCAnZXhwZWN0ZWRWYWx1ZSArICItIiArIGV4cGVj
dGVkVmFsdWUnKTsKKworZi5wcm9wID0gJ25ldy12YWx1ZSc7CitzaG91bGRCZSgnZi5wcm9wJywg
J2V4cGVjdGVkVmFsdWUgKyAiLSIgKyAibmV3LXZhbHVlIicpOworCitzaG91bGRCZSgnKG5ldyBG
KCkpLmdldFBhcmVudFZhbHVlKCknLCAnZXhwZWN0ZWRWYWx1ZScpOworCitzaG91bGRUaHJvdygn
KG5ldyBGKCkpLmdldFBhcmVudFZhbHVlV2l0aEVycm9yKCkoKScpOworCit2YXIgc3VjY2Vzc2Z1
bGx5UGFyc2VkID0gdHJ1ZTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>268003</attachid>
            <date>2015-12-30 03:11:40 -0800</date>
            <delta_ts>2015-12-30 13:08:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-149615-20151230131103.patch</filename>
            <type>text/plain</type>
            <size>55778</size>
            <attacher name="GSkachkov">gskachkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk0NDM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
NmVhYmI3NjRmNWFmNTYzNWU3NmFkYzRkYjhkZmIyMmI0ZDU3ZDMxLi5kMzQ3NDZhM2U5Mzg0ODIx
NDllZjI3ZTg5NWZhNjNlZjc4NWFhNWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2NSBAQAorMjAxNS0xMi0xMCAgQWxla3NhbmRyIFNrYWNoa292ICA8Z3NrYWNoa292QGdt
YWlsLmNvbT4KKworICAgICAgICBbRVM2XSBBcnJvdyBmdW5jdGlvbiBzeW50YXguIEFycm93IGZ1
bmN0aW9uIHNwZWNpZmljIGZlYXR1cmVzLiBMZXhpY2FsIGJpbmQgInN1cGVyIgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5NjE1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50ZWQgbGV4aWNh
bCBiaW5kICJzdXBlciIgcHJvcGVydHkgZm9yIGFycm93IGZ1bmN0aW9uLiAnc3VwZXInIHByb3Bl
cnR5IGNhbiBiZSBhY2Nlc3NlZCAKKyAgICAgICAgaW5zaWRlIG9mIHRoZSBhcnJvdyBmdW5jdGlv
biBpbiBjYXNlIGlmIGFycm93IGZ1bmN0aW9uIGlzIG5lc3RlZCBpbiBjb25zdHJ1Y3RvciwgbWV0
aG9kLCAKKyAgICAgICAgZ2V0dGVyIG9yIHNldHRlciBvZiBjbGFzcy4gSW4gY3VycmVudCBwYXRj
aCB1c2luZyAnc3VwZXInIGluIGFycm93IGZ1bmN0aW9uLCB0aGF0IGRlY2xhcmVkIG91dCBvZiB0
aGUgCisgICAgICAgIGNsYXNzLCBsZWFkIHRvIHdyb25nIHR5cGUgb2YgZXJyb3IsIHNob3VsZCBi
ZSBTeW50YXhFcnJvcihodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUw
ODkzKSAKKyAgICAgICAgYW5kIHRoaXMgd2lsbCBiZSBmaXhlZCBpbiBzZXBhcmV0ZSBwYXRjaC4K
KworICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHA6CisgICAgICAgIChK
U0M6OmNyZWF0ZUV4ZWN1dGFibGVJbnRlcm5hbCk6CisgICAgICAgICogYnl0ZWNvZGUvRXZhbENv
ZGVDYWNoZS5oOgorICAgICAgICAoSlNDOjpFdmFsQ29kZUNhY2hlOjpnZXRTbG93KToKKyAgICAg
ICAgKiBieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxl
SW5mbzo6RXhlY3V0YWJsZUluZm8pOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlSW5mbzo6ZGVy
aXZlZENvbnRleHRUeXBlKToKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUluZm86OmlzQ2xhc3ND
b250ZXh0KToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHA6CisgICAg
ICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpVbmxpbmtlZENvZGVCbG9jayk6CisgICAgICAg
ICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRD
b2RlQmxvY2s6OmRlcml2ZWRDb250ZXh0VHlwZSk6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29k
ZUJsb2NrOjppc0NsYXNzQ29udGV4dCk6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpnZW5lcmF0ZVVubGlua2VkRnVuY3Rp
b25Db2RlQmxvY2spOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUpOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2Vu
ZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXREZXJpdmVk
Q29uc3RydWN0b3JUb0Fycm93RnVuY3Rpb25Db250ZXh0U2NvcGUpOgorICAgICAgICAqIGJ5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVy
YXRvcjo6ZGVyaXZlZENvbnRleHRUeXBlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OmlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
R2VuZXJhdG9yOjppc0Rlcml2ZWRDbGFzc0NvbnRleHQpOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcjo6aXNBcnJvd0Z1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3I6Om1ha2VGdW5jdGlvbik6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdl
bi5jcHA6CisgICAgICAgIChKU0M6OmVtaXRIb21lT2JqZWN0Rm9yQ2FsbGVlKToKKyAgICAgICAg
KEpTQzo6RnVuY3Rpb25DYWxsVmFsdWVOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGRl
YnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcDoKKyAgICAgICAgKEpTQzo6RGVidWdnZXJDYWxs
RnJhbWU6OmV2YWx1YXRlKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6
CisgICAgICAgIChKU0M6OmV2YWwpOgorICAgICAgICAqIHJ1bnRpbWUvQ29kZUNhY2hlLmNwcDoK
KyAgICAgICAgKEpTQzo6Q29kZUNhY2hlOjpnZXRGdW5jdGlvbkV4ZWN1dGFibGVGcm9tR2xvYmFs
Q29kZSk6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6
U2NyaXB0RXhlY3V0YWJsZTo6U2NyaXB0RXhlY3V0YWJsZSk6CisgICAgICAgIChKU0M6OkV2YWxF
eGVjdXRhYmxlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpFdmFsRXhlY3V0YWJsZTo6RXZhbEV4
ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6UHJvZ3JhbUV4ZWN1
dGFibGUpOgorICAgICAgICAoSlNDOjpNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6TW9kdWxlUHJv
Z3JhbUV4ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OkZ1bmN0
aW9uRXhlY3V0YWJsZSk6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmg6CisgICAgICAg
IChKU0M6OlNjcmlwdEV4ZWN1dGFibGU6OmRlcml2ZWRDb250ZXh0VHlwZSk6CisgICAgICAgICog
cnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChKU0M6Omdsb2Jh
bEZ1bmNFdmFsKToKKyAgICAgICAgKiB0ZXN0cy9lczYueWFtbDoKKyAgICAgICAgKiB0ZXN0cy9z
dHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtc3VwZXJwcm9wZXJ0eS5qczogQWRkZWQu
CisKIDIwMTUtMTItMDUgQWxla3NhbmRyIFNrYWNoa292ICAgPGdza2FjaGtvdkBnbWFpbC5jb20+
CiAKICAgICAgICAgW0VTNl0gInN1cGVyIiBhbmQgInRoaXMiIHNob3VsZCBiZSBsZXhpY2FsbHkg
Ym91bmQgaW5zaWRlIGFuIGFycm93IGZ1bmN0aW9uIGFuZCBzaG91bGQgbGl2ZSBpbiBhIEpTTGV4
aWNhbEVudmlyb25tZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRp
bnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlu
cy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCmluZGV4IGRhNzUyODc4YzIxYzM1NzI1ZTI5MTg5ZmJm
YzIxZTRlMTY3ODA1YTcuLjgyMmIzNWYyNWEwNGYxMGZkZTJmNGE1NDY4ODA3ZTRiMGViNjU2MTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0
YWJsZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhl
Y3V0YWJsZXMuY3BwCkBAIC0xMTUsNyArMTE1LDcgQEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUqIGNyZWF0ZUV4ZWN1dGFibGVJbnRlcm5hbChWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHMK
ICAgICB9CiAgICAgbWV0YWRhdGEtPm92ZXJyaWRlTmFtZShuYW1lKTsKICAgICBWYXJpYWJsZUVu
dmlyb25tZW50IGR1bW15VERaVmFyaWFibGVzOwotICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3Jl
YXRlKCZ2bSwgc291cmNlLCBtZXRhZGF0YSwga2luZCwgY29uc3RydWN0QWJpbGl0eSwgZHVtbXlU
RFpWYXJpYWJsZXMsIGZhbHNlLCBXVEY6Om1vdmUoc291cmNlT3ZlcnJpZGUpKTsKKyAgICBVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSgmdm0sIHNvdXJjZSwgbWV0YWRhdGEsIGtpbmQsIGNvbnN0
cnVjdEFiaWxpdHksIGR1bW15VERaVmFyaWFibGVzLCBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUs
IFdURjo6bW92ZShzb3VyY2VPdmVycmlkZSkpOwogICAgIGZ1bmN0aW9uRXhlY3V0YWJsZS0+c2V0
TmFtZVZhbHVlKHZtLCBqc1N0cmluZygmdm0sIG5hbWUuc3RyaW5nKCkpKTsKICAgICByZXR1cm4g
ZnVuY3Rpb25FeGVjdXRhYmxlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0V2YWxDb2RlQ2FjaGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9FdmFsQ29kZUNhY2hlLmgKaW5kZXggODY5MTMxNjkyYTkzNGE3NWE2NDNjZTU1ZjllMGQ5Nzdh
ODVhYzEwYS4uNjYzNDkwYWZiNDUyNDVjMzZmZjA1ZDQ3ZWY4ODEzZGE1YTU5ZjUwMCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V2YWxDb2RlQ2FjaGUuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXZhbENvZGVDYWNoZS5oCkBAIC01NSwx
MSArNTUsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgRXZhbEV4ZWN1dGFibGUqIGdldFNsb3coRXhl
Y1N0YXRlKiBleGVjLCBKU0NlbGwqIG93bmVyLCBib29sIGluU3RyaWN0Q29udGV4dCwgVGhpc1RE
Wk1vZGUgdGhpc1REWk1vZGUsIGJvb2wgaXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0LCBib29s
IGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGNvbnN0IFNvdXJjZUNvZGUmIGV2YWxTb3VyY2UsIEpT
U2NvcGUqIHNjb3BlKQorICAgICAgICBFdmFsRXhlY3V0YWJsZSogZ2V0U2xvdyhFeGVjU3RhdGUq
IGV4ZWMsIEpTQ2VsbCogb3duZXIsIGJvb2wgaW5TdHJpY3RDb250ZXh0LCBUaGlzVERaTW9kZSB0
aGlzVERaTW9kZSwgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgYm9vbCBp
c0Fycm93RnVuY3Rpb25Db250ZXh0LCBjb25zdCBTb3VyY2VDb2RlJiBldmFsU291cmNlLCBKU1Nj
b3BlKiBzY29wZSkKICAgICAgICAgewogICAgICAgICAgICAgVmFyaWFibGVFbnZpcm9ubWVudCB2
YXJpYWJsZXNVbmRlclREWjsKICAgICAgICAgICAgIEpTU2NvcGU6OmNvbGxlY3RWYXJpYWJsZXNV
bmRlclREWihzY29wZSwgdmFyaWFibGVzVW5kZXJURFopOwotICAgICAgICAgICAgRXZhbEV4ZWN1
dGFibGUqIGV2YWxFeGVjdXRhYmxlID0gRXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShleGVjLCBldmFs
U291cmNlLCBpblN0cmljdENvbnRleHQsIHRoaXNURFpNb2RlLCBpc0Rlcml2ZWRDb25zdHJ1Y3Rv
ckNvbnRleHQsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsICZ2YXJpYWJsZXNVbmRlclREWik7Cisg
ICAgICAgICAgICBFdmFsRXhlY3V0YWJsZSogZXZhbEV4ZWN1dGFibGUgPSBFdmFsRXhlY3V0YWJs
ZTo6Y3JlYXRlKGV4ZWMsIGV2YWxTb3VyY2UsIGluU3RyaWN0Q29udGV4dCwgdGhpc1REWk1vZGUs
IGRlcml2ZWRDb250ZXh0VHlwZSwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgJnZhcmlhYmxlc1Vu
ZGVyVERaKTsKIAogICAgICAgICAgICAgaWYgKCFldmFsRXhlY3V0YWJsZSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9FeGVjdXRhYmxlSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0V4ZWN1dGFibGVJbmZvLmgKaW5kZXggYTkyMzQ0MWJiNzJhNTVhZTQ1MzVmNmEyYjkxNGJmMWUy
YTdiNWZlMC4uMDdmNDY4NDNjM2RmNDk3M2JjMzBmMmNjNDJhZTUxZTg5NmFjMGQzZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVJbmZvLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVJbmZvLmgKQEAgLTI5
LDExICsyOSwxMyBAQAogI2luY2x1ZGUgIlBhcnNlck1vZGVzLmgiCiAKIG5hbWVzcGFjZSBKU0Mg
eworICAgIAorZW51bSBjbGFzcyBEZXJpdmVkQ29udGV4dFR5cGUgeyBOb25lLCBEZXJpdmVkQ29u
c3RydWN0b3JDb250ZXh0LCBEZXJpdmVkTWV0aG9kQ29udGV4dCB9OwogCiAvLyBGSVhNRTogVGhl
c2UgZmxhZ3MsIFBhcnNlck1vZGVzIGFuZCBwcm9wYWdhdGlvbiB0byBYWFhDb2RlQmxvY2tzIHNo
b3VsZCBiZSByZW9yZ2FuaXplZC4KIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNTE1NDcKIHN0cnVjdCBFeGVjdXRhYmxlSW5mbyB7Ci0gICAgRXhlY3V0YWJsZUlu
Zm8oYm9vbCBuZWVkc0FjdGl2YXRpb24sIGJvb2wgdXNlc0V2YWwsIGJvb2wgaXNTdHJpY3RNb2Rl
LCBib29sIGlzQ29uc3RydWN0b3IsIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24sIENvbnN0cnVjdG9y
S2luZCBjb25zdHJ1Y3RvcktpbmQsIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcsIFNvdXJjZVBh
cnNlTW9kZSBwYXJzZU1vZGUsIGJvb2wgaXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0LCBib29s
IGlzQXJyb3dGdW5jdGlvbkNvbnRleHQpCisgICAgRXhlY3V0YWJsZUluZm8oYm9vbCBuZWVkc0Fj
dGl2YXRpb24sIGJvb2wgdXNlc0V2YWwsIGJvb2wgaXNTdHJpY3RNb2RlLCBib29sIGlzQ29uc3Ry
dWN0b3IsIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24sIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3Rv
cktpbmQsIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1v
ZGUsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNBcnJvd0Z1
bmN0aW9uQ29udGV4dCwgYm9vbCBpc0NsYXNzQ29udGV4dCkKICAgICAgICAgOiBtX25lZWRzQWN0
aXZhdGlvbihuZWVkc0FjdGl2YXRpb24pCiAgICAgICAgICwgbV91c2VzRXZhbCh1c2VzRXZhbCkK
ICAgICAgICAgLCBtX2lzU3RyaWN0TW9kZShpc1N0cmljdE1vZGUpCkBAIC00Miw4ICs0NCw5IEBA
IHN0cnVjdCBFeGVjdXRhYmxlSW5mbyB7CiAgICAgICAgICwgbV9jb25zdHJ1Y3RvcktpbmQoc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KGNvbnN0cnVjdG9yS2luZCkpCiAgICAgICAgICwgbV9zdXBlckJp
bmRpbmcoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN1cGVyQmluZGluZykpCiAgICAgICAgICwgbV9w
YXJzZU1vZGUocGFyc2VNb2RlKQotICAgICAgICAsIG1faXNEZXJpdmVkQ29uc3RydWN0b3JDb250
ZXh0KGlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCkKKyAgICAgICAgLCBtX2Rlcml2ZWRDb250
ZXh0VHlwZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZGVyaXZlZENvbnRleHRUeXBlKSkKICAgICAg
ICAgLCBtX2lzQXJyb3dGdW5jdGlvbkNvbnRleHQoaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCkKKyAg
ICAgICAgLCBtX2lzQ2xhc3NDb250ZXh0KGlzQ2xhc3NDb250ZXh0KQogICAgIHsKICAgICAgICAg
QVNTRVJUKG1fY29uc3RydWN0b3JLaW5kID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb25zdHJ1
Y3RvcktpbmQpKTsKICAgICAgICAgQVNTRVJUKG1fc3VwZXJCaW5kaW5nID09IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihzdXBlckJpbmRpbmcpKTsKQEAgLTU3LDggKzYwLDkgQEAgc3RydWN0IEV4ZWN1
dGFibGVJbmZvIHsKICAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kKCkgY29uc3Qg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29uc3RydWN0b3JLaW5kPihtX2NvbnN0cnVjdG9yS2luZCk7
IH0KICAgICBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nKCkgY29uc3QgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8U3VwZXJCaW5kaW5nPihtX3N1cGVyQmluZGluZyk7IH0KICAgICBTb3VyY2VQYXJzZU1v
ZGUgcGFyc2VNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9wYXJzZU1vZGU7IH0KLSAgICBib29sIGlz
RGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1faXNEZXJpdmVkQ29u
c3RydWN0b3JDb250ZXh0OyB9CisgICAgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0
VHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PERlcml2ZWRDb250ZXh0VHlwZT4obV9k
ZXJpdmVkQ29udGV4dFR5cGUpOyB9CiAgICAgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0KCkg
Y29uc3QgeyByZXR1cm4gbV9pc0Fycm93RnVuY3Rpb25Db250ZXh0OyB9CisgICAgYm9vbCBpc0Ns
YXNzQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1faXNDbGFzc0NvbnRleHQ7IH0KIAogcHJpdmF0
ZToKICAgICB1bnNpZ25lZCBtX25lZWRzQWN0aXZhdGlvbiA6IDE7CkBAIC02OSw4ICs3Myw5IEBA
IHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3RvcktpbmQgOiAyOwogICAgIHVuc2ln
bmVkIG1fc3VwZXJCaW5kaW5nIDogMTsKICAgICBTb3VyY2VQYXJzZU1vZGUgbV9wYXJzZU1vZGU7
Ci0gICAgdW5zaWduZWQgbV9pc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQgOiAxOworICAgIHVu
c2lnbmVkIG1fZGVyaXZlZENvbnRleHRUeXBlIDogMjsKICAgICB1bnNpZ25lZCBtX2lzQXJyb3dG
dW5jdGlvbkNvbnRleHQgOiAxOworICAgIHVuc2lnbmVkIG1faXNDbGFzc0NvbnRleHQgOiAxOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAppbmRleCAyMmRiZjk2ODQ3OTc0ZDM4MWNi
Yjg0MmYxY2IyZDQ0NGNhMzVmNjI0Li4yY2E0YjAwODU2YzA2M2E3NjgxMGE1YTBkZWNhNjBlYzUw
OWYzZGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRDb2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxp
bmtlZENvZGVCbG9jay5jcHAKQEAgLTY2LDggKzY2LDkgQEAgVW5saW5rZWRDb2RlQmxvY2s6OlVu
bGlua2VkQ29kZUJsb2NrKFZNKiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENvZGVUeXBlIGNv
ZGUKICAgICAsIG1faXNCdWlsdGluRnVuY3Rpb24oaW5mby5pc0J1aWx0aW5GdW5jdGlvbigpKQog
ICAgICwgbV9jb25zdHJ1Y3RvcktpbmQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluZm8uY29uc3Ry
dWN0b3JLaW5kKCkpKQogICAgICwgbV9zdXBlckJpbmRpbmcoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KGluZm8uc3VwZXJCaW5kaW5nKCkpKQotICAgICwgbV9pc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRl
eHQoaW5mby5pc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoKSkKKyAgICAsIG1fZGVyaXZlZENv
bnRleHRUeXBlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbmZvLmRlcml2ZWRDb250ZXh0VHlwZSgp
KSkKICAgICAsIG1faXNBcnJvd0Z1bmN0aW9uQ29udGV4dChpbmZvLmlzQXJyb3dGdW5jdGlvbkNv
bnRleHQoKSkKKyAgICAsIG1faXNDbGFzc0NvbnRleHQoaW5mby5pc0NsYXNzQ29udGV4dCgpKQog
ICAgICwgbV9maXJzdExpbmUoMCkKICAgICAsIG1fbGluZUNvdW50KDApCiAgICAgLCBtX2VuZENv
bHVtbihVSU5UX01BWCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9VbmxpbmtlZENvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkQ29kZUJsb2NrLmgKaW5kZXggYThlNDBlZDkyM2VjMThhNWEyZWMwN2Q2NmIyYzc2Njdm
MDkwN2M5OS4uMmI0ZWI2NGY0NzdmMWMzOGZhODA3YzZkNDZhOTQwY2Y5YjdhMDU4ZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgK
QEAgLTExOSw4ICsxMTksOSBAQCBwdWJsaWM6CiAgICAgYm9vbCB1c2VzRXZhbCgpIGNvbnN0IHsg
cmV0dXJuIG1fdXNlc0V2YWw7IH0KICAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKCkgY29u
c3QgeyByZXR1cm4gbV9wYXJzZU1vZGU7IH0KICAgICBib29sIGlzQXJyb3dGdW5jdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1fcGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlv
bk1vZGU7IH0KLSAgICBib29sIGlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCgpIGNvbnN0IHsg
cmV0dXJuIG1faXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0OyB9CisgICAgRGVyaXZlZENvbnRl
eHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PERl
cml2ZWRDb250ZXh0VHlwZT4obV9kZXJpdmVkQ29udGV4dFR5cGUpOyB9CiAgICAgYm9vbCBpc0Fy
cm93RnVuY3Rpb25Db250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9pc0Fycm93RnVuY3Rpb25Db250
ZXh0OyB9CisgICAgYm9vbCBpc0NsYXNzQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1faXNDbGFz
c0NvbnRleHQ7IH0KIAogICAgIGJvb2wgbmVlZHNGdWxsU2NvcGVDaGFpbigpIGNvbnN0IHsgcmV0
dXJuIG1fbmVlZHNGdWxsU2NvcGVDaGFpbjsgfQogCkBAIC0zOTMsOSArMzk0LDkgQEAgcHJpdmF0
ZToKICAgICB1bnNpZ25lZCBtX2lzQnVpbHRpbkZ1bmN0aW9uIDogMTsKICAgICB1bnNpZ25lZCBt
X2NvbnN0cnVjdG9yS2luZCA6IDI7CiAgICAgdW5zaWduZWQgbV9zdXBlckJpbmRpbmcgOiAxOwot
ICAgIHVuc2lnbmVkIG1faXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0IDogMTsKKyAgICB1bnNp
Z25lZCBtX2Rlcml2ZWRDb250ZXh0VHlwZSA6IDI7CiAgICAgdW5zaWduZWQgbV9pc0Fycm93RnVu
Y3Rpb25Db250ZXh0IDogMTsKLQorICAgIHVuc2lnbmVkIG1faXNDbGFzc0NvbnRleHQgOiAxOwog
ICAgIHVuc2lnbmVkIG1fZmlyc3RMaW5lOwogICAgIHVuc2lnbmVkIG1fbGluZUNvdW50OwogICAg
IHVuc2lnbmVkIG1fZW5kQ29sdW1uOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKaW5kZXggZDkx
NGNhMWEwODQ5ZjhkZWRjOTcwYTQ0MGIwOGQ5YzFkMTRjMmQ1OC4uNTA2NzIyMDBmNTc3YTMwM2Fi
NzdiNmRkNzIxMDZmNzcyMjY5ZjdhMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCkBAIC02
NSw5ICs2NSwxMSBAQCBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogZ2VuZXJhdGVV
bmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKAogCiAgICAgZnVuY3Rpb24tPmZpbmlzaFBhcnNpbmco
ZXhlY3V0YWJsZS0+bmFtZSgpLCBleGVjdXRhYmxlLT5mdW5jdGlvbk1vZGUoKSk7CiAgICAgZXhl
Y3V0YWJsZS0+cmVjb3JkUGFyc2UoZnVuY3Rpb24tPmZlYXR1cmVzKCksIGZ1bmN0aW9uLT5oYXND
YXB0dXJlZFZhcmlhYmxlcygpKTsKLSAgICAKKworICAgIGJvb2wgaXNDbGFzc0NvbnRleHQgPSBl
eGVjdXRhYmxlLT5zdXBlckJpbmRpbmcoKSA9PSBTdXBlckJpbmRpbmc6Ok5lZWRlZDsKKwogICAg
IFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHJlc3VsdCA9IFVubGlua2VkRnVuY3Rpb25Db2Rl
QmxvY2s6OmNyZWF0ZSgmdm0sIEZ1bmN0aW9uQ29kZSwKLSAgICAgICAgRXhlY3V0YWJsZUluZm8o
ZnVuY3Rpb24tPm5lZWRzQWN0aXZhdGlvbigpLCBmdW5jdGlvbi0+dXNlc0V2YWwoKSwgZnVuY3Rp
b24tPmlzU3RyaWN0TW9kZSgpLCBraW5kID09IENvZGVGb3JDb25zdHJ1Y3QsIGZ1bmN0aW9uS2lu
ZCA9PSBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiwgZXhlY3V0YWJsZS0+Y29uc3RydWN0b3JLaW5k
KCksIGV4ZWN1dGFibGUtPnN1cGVyQmluZGluZygpLCBwYXJzZU1vZGUsICBleGVjdXRhYmxlLT5p
c0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoKSwgZmFsc2UpKTsKKyAgICAgICAgRXhlY3V0YWJs
ZUluZm8oZnVuY3Rpb24tPm5lZWRzQWN0aXZhdGlvbigpLCBmdW5jdGlvbi0+dXNlc0V2YWwoKSwg
ZnVuY3Rpb24tPmlzU3RyaWN0TW9kZSgpLCBraW5kID09IENvZGVGb3JDb25zdHJ1Y3QsIGZ1bmN0
aW9uS2luZCA9PSBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiwgZXhlY3V0YWJsZS0+Y29uc3RydWN0
b3JLaW5kKCksIGV4ZWN1dGFibGUtPnN1cGVyQmluZGluZygpLCBwYXJzZU1vZGUsIGV4ZWN1dGFi
bGUtPmRlcml2ZWRDb250ZXh0VHlwZSgpLCBmYWxzZSwgaXNDbGFzc0NvbnRleHQpKTsKIAogICAg
IGF1dG8gZ2VuZXJhdG9yKHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVHZW5lcmF0b3I+KHZtLCBm
dW5jdGlvbi5nZXQoKSwgcmVzdWx0LCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9kZSwgZXhlY3V0
YWJsZS0+cGFyZW50U2NvcGVURFpWYXJpYWJsZXMoKSkpOwogICAgIGVycm9yID0gZ2VuZXJhdG9y
LT5nZW5lcmF0ZSgpOwpAQCAtNzYsNyArNzgsNyBAQCBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkNv
ZGVCbG9jayogZ2VuZXJhdGVVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKAogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKLVVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZShWTSogdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBTb3VyY2VDb2Rl
JiBzb3VyY2UsIFJlZlB0cjxTb3VyY2VQcm92aWRlcj4mJiBzb3VyY2VPdmVycmlkZSwgRnVuY3Rp
b25NZXRhZGF0YU5vZGUqIG5vZGUsIFVubGlua2VkRnVuY3Rpb25LaW5kIGtpbmQsIENvbnN0cnVj
dEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSwgVmFyaWFibGVFbnZpcm9ubWVudCYgcGFyZW50U2Nv
cGVURFpWYXJpYWJsZXMsIGJvb2wgaXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KQorVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZNKiB2bSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgUmVmUHRyPFNv
dXJjZVByb3ZpZGVyPiYmIHNvdXJjZU92ZXJyaWRlLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbm9k
ZSwgVW5saW5rZWRGdW5jdGlvbktpbmQga2luZCwgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RB
YmlsaXR5LCBWYXJpYWJsZUVudmlyb25tZW50JiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgRGVy
aXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSkKICAgICA6IEJhc2UoKnZtLCBzdHJ1
Y3R1cmUpCiAgICAgLCBtX25hbWUobm9kZS0+aWRlbnQoKSkKICAgICAsIG1faW5mZXJyZWROYW1l
KG5vZGUtPmluZmVycmVkTmFtZSgpKQpAQCAtMTAxLDcgKzEwMyw3IEBAIFVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSogdm0sIFN0cnVjdHVy
ZSogc3RydWN0CiAgICAgLCBtX2NvbnN0cnVjdG9yS2luZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
bm9kZS0+Y29uc3RydWN0b3JLaW5kKCkpKQogICAgICwgbV9mdW5jdGlvbk1vZGUobm9kZS0+ZnVu
Y3Rpb25Nb2RlKCkpCiAgICAgLCBtX3N1cGVyQmluZGluZyhzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
bm9kZS0+c3VwZXJCaW5kaW5nKCkpKQotICAgICwgbV9pc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRl
eHQoaXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KQorICAgICwgbV9kZXJpdmVkQ29udGV4dFR5
cGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRlcml2ZWRDb250ZXh0VHlwZSkpCiB7CiAgICAgQVNT
RVJUKG1fY29uc3RydWN0b3JLaW5kID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihub2RlLT5jb25z
dHJ1Y3RvcktpbmQoKSkpOwogICAgIG1fcGFyZW50U2NvcGVURFpWYXJpYWJsZXMuc3dhcChwYXJl
bnRTY29wZVREWlZhcmlhYmxlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oCmluZGV4IGJlODFhY2Ew
MjAzMzY2NDE1ZjVlNDU4ODIwYTVjMWMwYmIyNDAzODAuLjU5ZTIyODM5YTQxZjkzMDc3MzRkZGE4
NzA1NmVmMDkxNjQ2ODJkZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oCkBAIC0zMCw2ICszMCw3
IEBACiAjaW5jbHVkZSAiQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oIgogI2luY2x1ZGUgIkNvZGVU
eXBlLmgiCiAjaW5jbHVkZSAiQ29uc3RydWN0QWJpbGl0eS5oIgorI2luY2x1ZGUgIkV4ZWN1dGFi
bGVJbmZvLmgiCiAjaW5jbHVkZSAiRXhwcmVzc2lvblJhbmdlSW5mby5oIgogI2luY2x1ZGUgIkhh
bmRsZXJJbmZvLmgiCiAjaW5jbHVkZSAiSWRlbnRpZmllci5oIgpAQCAtNjUsMTAgKzY2LDEwIEBA
IHB1YmxpYzoKICAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwogICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgU3RydWN0dXJlSXNJ
bW1vcnRhbDsKIAotICAgIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRl
KFZNKiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSog
bm9kZSwgVW5saW5rZWRGdW5jdGlvbktpbmQgdW5saW5rZWRGdW5jdGlvbktpbmQsIENvbnN0cnVj
dEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSwgVmFyaWFibGVFbnZpcm9ubWVudCYgcGFyZW50U2Nv
cGVURFpWYXJpYWJsZXMsIGJvb2wgaXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0LCBSZWZQdHI8
U291cmNlUHJvdmlkZXI+JiYgc291cmNlT3ZlcnJpZGUgPSBudWxscHRyKQorICAgIHN0YXRpYyBV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlKFZNKiB2bSwgY29uc3QgU291cmNlQ29k
ZSYgc291cmNlLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbm9kZSwgVW5saW5rZWRGdW5jdGlvbktp
bmQgdW5saW5rZWRGdW5jdGlvbktpbmQsIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0
eSwgVmFyaWFibGVFbnZpcm9ubWVudCYgcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIERlcml2ZWRD
b250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIFJlZlB0cjxTb3VyY2VQcm92aWRlcj4mJiBz
b3VyY2VPdmVycmlkZSA9IG51bGxwdHIpCiAgICAgewogICAgICAgICBVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZSogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZT4odm0tPmhlYXApKQotICAgICAgICAgICAgVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUodm0sIHZtLT51bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVN0cnVjdHVy
ZS5nZXQoKSwgc291cmNlLCBXVEY6Om1vdmUoc291cmNlT3ZlcnJpZGUpLCBub2RlLCB1bmxpbmtl
ZEZ1bmN0aW9uS2luZCwgY29uc3RydWN0QWJpbGl0eSwgcGFyZW50U2NvcGVURFpWYXJpYWJsZXMs
IGlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCk7CisgICAgICAgICAgICBVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZSh2bSwgdm0tPnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3RydWN0dXJl
LmdldCgpLCBzb3VyY2UsIFdURjo6bW92ZShzb3VyY2VPdmVycmlkZSksIG5vZGUsIHVubGlua2Vk
RnVuY3Rpb25LaW5kLCBjb25zdHJ1Y3RBYmlsaXR5LCBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywg
ZGVyaXZlZENvbnRleHRUeXBlKTsKICAgICAgICAgaW5zdGFuY2UtPmZpbmlzaENyZWF0aW9uKCp2
bSk7CiAgICAgICAgIHJldHVybiBpbnN0YW5jZTsKICAgICB9CkBAIC0xMjgsMTEgKzEyOSwxMiBA
QCBwdWJsaWM6CiAgICAgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCogcGFyZW50U2NvcGVURFpW
YXJpYWJsZXMoKSBjb25zdCB7IHJldHVybiAmbV9wYXJlbnRTY29wZVREWlZhcmlhYmxlczsgfQog
ICAgIAogICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9wYXJzZU1v
ZGUgPT0gU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZTsgfQotICAgIGJvb2wgaXNE
ZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KCkgY29uc3Qge3JldHVybiBtX2lzRGVyaXZlZENvbnN0
cnVjdG9yQ29udGV4dDsgfQogCi1wcml2YXRlOgotICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlKFZNKiwgU3RydWN0dXJlKiwgY29uc3QgU291cmNlQ29kZSYsIFJlZlB0cjxTb3VyY2VQcm92
aWRlcj4mJiBzb3VyY2VPdmVycmlkZSwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqLCBVbmxpbmtlZEZ1
bmN0aW9uS2luZCwgQ29uc3RydWN0QWJpbGl0eSwgVmFyaWFibGVFbnZpcm9ubWVudCYsIGJvb2wg
aXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KTsKKyAgICBKU0M6OkRlcml2ZWRDb250ZXh0VHlw
ZSBkZXJpdmVkQ29udGV4dFR5cGUoKSBjb25zdCB7cmV0dXJuIHN0YXRpY19jYXN0PEpTQzo6RGVy
aXZlZENvbnRleHRUeXBlPihtX2Rlcml2ZWRDb250ZXh0VHlwZSk7IH0KICAgICAKK3ByaXZhdGU6
CisgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0qLCBTdHJ1Y3R1cmUqLCBjb25zdCBT
b3VyY2VDb2RlJiwgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiYmIHNvdXJjZU92ZXJyaWRlLCBGdW5j
dGlvbk1ldGFkYXRhTm9kZSosIFVubGlua2VkRnVuY3Rpb25LaW5kLCBDb25zdHJ1Y3RBYmlsaXR5
LCBWYXJpYWJsZUVudmlyb25tZW50JiwgIEpTQzo6RGVyaXZlZENvbnRleHRUeXBlKTsKKwogICAg
IFdyaXRlQmFycmllcjxVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrPiBtX3VubGlua2VkQ29kZUJs
b2NrRm9yQ2FsbDsKICAgICBXcml0ZUJhcnJpZXI8VW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaz4g
bV91bmxpbmtlZENvZGVCbG9ja0ZvckNvbnN0cnVjdDsKIApAQCAtMTYzLDcgKzE2NSw3IEBAIHBy
aXZhdGU6CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3RvcktpbmQgOiAyOwogICAgIHVuc2lnbmVk
IG1fZnVuY3Rpb25Nb2RlIDogMTsgLy8gRnVuY3Rpb25Nb2RlCiAgICAgdW5zaWduZWQgbV9zdXBl
ckJpbmRpbmcgOiAxOwotICAgIHVuc2lnbmVkIG1faXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0
IDogMTsKKyAgICB1bnNpZ25lZCBtX2Rlcml2ZWRDb250ZXh0VHlwZTogMjsKIAogcHJvdGVjdGVk
OgogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mIHZtKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCAx
Y2ZhMThkMDIyMjE3MGNjODhlMzQwZGI2ZTkzOGE5YTg3ODE3MjM2Li5kMTVlMjI0MzUyNjZmZTFh
ZmYzZDVmNzlhMWRkYTc1YjliZGFmM2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtMTU3LDcgKzE1
Nyw2IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIFByb2dy
YW1Ob2RlKiBwcm9ncmFtTm9kZSwgVW5saW5rZWRQCiAgICAgLCBtX3RoaXNSZWdpc3RlcihDYWxs
RnJhbWU6OnRoaXNBcmd1bWVudE9mZnNldCgpKQogICAgICwgbV9jb2RlVHlwZShHbG9iYWxDb2Rl
KQogICAgICwgbV92bSgmdm0pCi0gICAgLCBtX2lzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dChm
YWxzZSkKICAgICAsIG1fbmVlZHNUb1VwZGF0ZUFycm93RnVuY3Rpb25Db250ZXh0KHByb2dyYW1O
b2RlLT51c2VzQXJyb3dGdW5jdGlvbigpIHx8IHByb2dyYW1Ob2RlLT51c2VzRXZhbCgpKQogewog
ICAgIEFTU0VSVF9VTlVTRUQocGFyZW50U2NvcGVURFpWYXJpYWJsZXMsICFwYXJlbnRTY29wZVRE
WlZhcmlhYmxlcy0+c2l6ZSgpKTsKQEAgLTIxMSw4ICsyMTAsOCBAQCBCeXRlY29kZUdlbmVyYXRv
cjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwg
VW5saW5rZQogICAgIC8vIGNvbXBhdGlibGUgd2l0aCB0YWlsIGNhbGxzICh3ZSBoYXZlIG5vIHdh
eSBvZiBlbWl0dGluZyBvcF9kaWRfY2FsbCkuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE0ODgxOQogICAgICwgbV9pblRhaWxQb3NpdGlvbihPcHRpb25z
Ojp1c2VUYWlsQ2FsbHMoKSAmJiAhaXNDb25zdHJ1Y3RvcigpICYmIGNvbnN0cnVjdG9yS2luZCgp
ID09IENvbnN0cnVjdG9yS2luZDo6Tm9uZSAmJiBpc1N0cmljdE1vZGUoKSAmJiAhbV9zaG91bGRF
bWl0UHJvZmlsZUhvb2tzKQotICAgICwgbV9pc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoY29k
ZUJsb2NrLT5pc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoKSkKICAgICAsIG1fbmVlZHNUb1Vw
ZGF0ZUFycm93RnVuY3Rpb25Db250ZXh0KGZ1bmN0aW9uTm9kZS0+dXNlc0Fycm93RnVuY3Rpb24o
KSB8fCBmdW5jdGlvbk5vZGUtPnVzZXNFdmFsKCkpCisgICAgLCBtX2Rlcml2ZWRDb250ZXh0VHlw
ZShjb2RlQmxvY2stPmRlcml2ZWRDb250ZXh0VHlwZSgpKQogewogICAgIGZvciAoYXV0byYgY29u
c3RhbnRSZWdpc3RlciA6IG1fbGlua1RpbWVDb25zdGFudFJlZ2lzdGVycykKICAgICAgICAgY29u
c3RhbnRSZWdpc3RlciA9IG51bGxwdHI7CkBAIC01NzEsOSArNTcwLDkgQEAgQnl0ZWNvZGVHZW5l
cmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5v
ZGUsIFVubGlua2UKICAgICAvLyBMb2FkaW5nIHx0aGlzfCBpbnNpZGUgYW4gYXJyb3cgZnVuY3Rp
b24gbXVzdCBiZSBkb25lIGFmdGVyIGluaXRpYWxpemVEZWZhdWx0UGFyYW1ldGVyVmFsdWVzQW5k
U2V0dXBGdW5jdGlvblNjb3BlU3RhY2soKQogICAgIC8vIGJlY2F1c2UgdGhhdCBmdW5jdGlvbiBz
ZXRzIHVwIHRoZSBTeW1ib2xUYWJsZSBzdGFjayBhbmQgZW1pdExvYWRUaGlzRnJvbUFycm93RnVu
Y3Rpb25MZXhpY2FsRW52aXJvbm1lbnQoKQogICAgIC8vIGNvbnN1bHRzIHRoZSBTeW1ib2xUYWJs
ZSBzdGFjawotICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0
aW9uTW9kZSAmJiBmdW5jdGlvbk5vZGUtPnVzZXNUaGlzKCkpCisgICAgaWYgKFNvdXJjZVBhcnNl
TW9kZTo6QXJyb3dGdW5jdGlvbk1vZGUgPT0gcGFyc2VNb2RlICYmIChmdW5jdGlvbk5vZGUtPnVz
ZXNUaGlzKCkgfHwgaXNEZXJpdmVkQ2xhc3NDb250ZXh0KCkgfHwgaXNEZXJpdmVkQ29uc3RydWN0
b3JDb250ZXh0KCkpKQogICAgICAgICBlbWl0TG9hZFRoaXNGcm9tQXJyb3dGdW5jdGlvbkxleGlj
YWxFbnZpcm9ubWVudCgpOwotCisgICAgCiAgICAgaWYgKG5lZWRzVG9VcGRhdGVBcnJvd0Z1bmN0
aW9uQ29udGV4dCgpICYmICFjb2RlQmxvY2stPmlzQXJyb3dGdW5jdGlvbigpKSB7CiAgICAgICAg
IGluaXRpYWxpemVBcnJvd0Z1bmN0aW9uQ29udGV4dFNjb3BlSWZOZWVkZWQoZnVuY3Rpb25TeW1i
b2xUYWJsZSk7CiAgICAgICAgIGVtaXRQdXRUaGlzVG9BcnJvd0Z1bmN0aW9uQ29udGV4dFNjb3Bl
KCk7CkBAIC01OTMsOCArNTkyLDggQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJh
dG9yKFZNJiB2bSwgRXZhbE5vZGUqIGV2YWxOb2RlLCBVbmxpbmtlZEV2YWxDb2QKICAgICAsIG1f
Y29kZVR5cGUoRXZhbENvZGUpCiAgICAgLCBtX3ZtKCZ2bSkKICAgICAsIG1fdXNlc05vblN0cmlj
dEV2YWwoY29kZUJsb2NrLT51c2VzRXZhbCgpICYmICFjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgp
KQotICAgICwgbV9pc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoY29kZUJsb2NrLT5pc0Rlcml2
ZWRDb25zdHJ1Y3RvckNvbnRleHQoKSkKICAgICAsIG1fbmVlZHNUb1VwZGF0ZUFycm93RnVuY3Rp
b25Db250ZXh0KGV2YWxOb2RlLT51c2VzQXJyb3dGdW5jdGlvbigpIHx8IGV2YWxOb2RlLT51c2Vz
RXZhbCgpKQorICAgICwgbV9kZXJpdmVkQ29udGV4dFR5cGUoY29kZUJsb2NrLT5kZXJpdmVkQ29u
dGV4dFR5cGUoKSkKIHsKICAgICBmb3IgKGF1dG8mIGNvbnN0YW50UmVnaXN0ZXIgOiBtX2xpbmtU
aW1lQ29uc3RhbnRSZWdpc3RlcnMpCiAgICAgICAgIGNvbnN0YW50UmVnaXN0ZXIgPSBudWxscHRy
OwpAQCAtNjQ0LDcgKzY0Myw2IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRv
cihWTSYgdm0sIE1vZHVsZVByb2dyYW1Ob2RlKiBtb2R1bGVQcm9ncmFtTm9kCiAgICAgLCBtX2Nv
ZGVUeXBlKE1vZHVsZUNvZGUpCiAgICAgLCBtX3ZtKCZ2bSkKICAgICAsIG1fdXNlc05vblN0cmlj
dEV2YWwoZmFsc2UpCi0gICAgLCBtX2lzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dChmYWxzZSkK
ICAgICAsIG1fbmVlZHNUb1VwZGF0ZUFycm93RnVuY3Rpb25Db250ZXh0KG1vZHVsZVByb2dyYW1O
b2RlLT51c2VzQXJyb3dGdW5jdGlvbigpIHx8IG1vZHVsZVByb2dyYW1Ob2RlLT51c2VzRXZhbCgp
KQogewogICAgIEFTU0VSVF9VTlVTRUQocGFyZW50U2NvcGVURFpWYXJpYWJsZXMsICFwYXJlbnRT
Y29wZVREWlZhcmlhYmxlcy0+c2l6ZSgpKTsKQEAgLTQwNDcsMTQgKzQwNDUsMTQgQEAgdm9pZCBC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dE5ld1RhcmdldFRvQXJyb3dGdW5jdGlvbkNvbnRleHRT
Y29wZSgpCiAgICAgCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0RGVyaXZlZENvbnN0
cnVjdG9yVG9BcnJvd0Z1bmN0aW9uQ29udGV4dFNjb3BlKCkKIHsKLSAgICBpZiAoaXNDb25zdHJ1
Y3RvcigpICYmIGNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCkg
eworICAgIGlmICgoaXNDb25zdHJ1Y3RvcigpICYmIGNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0
cnVjdG9yS2luZDo6RGVyaXZlZCkgfHwgbV9jb2RlQmxvY2stPmlzQ2xhc3NDb250ZXh0KCkpIHsK
ICAgICAgICAgQVNTRVJUKG1fYXJyb3dGdW5jdGlvbkNvbnRleHRMZXhpY2FsRW52aXJvbm1lbnRS
ZWdpc3Rlcik7CiAgICAgICAgICAgICAKICAgICAgICAgVmFyaWFibGUgcHJvdG9TY29wZSA9IHZh
cmlhYmxlKHByb3BlcnR5TmFtZXMoKS5kZXJpdmVkQ29uc3RydWN0b3JQcml2YXRlTmFtZSk7CiAg
ICAgICAgIGVtaXRQdXRUb1Njb3BlKG1fYXJyb3dGdW5jdGlvbkNvbnRleHRMZXhpY2FsRW52aXJv
bm1lbnRSZWdpc3RlciwgcHJvdG9TY29wZSwgJm1fY2FsbGVlUmVnaXN0ZXIsIERvTm90VGhyb3dJ
Zk5vdEZvdW5kLCBJbml0aWFsaXphdGlvbik7CiAgICAgfQogfQotICAgIAorCiB2b2lkIEJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0UHV0VGhpc1RvQXJyb3dGdW5jdGlvbkNvbnRleHRTY29wZSgpCiB7
CiAgICAgQVNTRVJUKGlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCgpIHx8IG1fYXJyb3dGdW5j
dGlvbkNvbnRleHRMZXhpY2FsRW52aXJvbm1lbnRSZWdpc3RlciAhPSBudWxscHRyKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuaAppbmRleCAxZDg4YTEyNmM5MmM3YTU1MDFlMDc2MDcyNjkxNDA0YWFmNTc5NmNkLi43ZDBj
MjBiNmY1MTZhMTdlODkzZjFiYmEwODAzYzEzMzNmZmM4ZDBkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBAIC0y
ODEsNyArMjgxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGNvbnN0IENvbW1vbklkZW50
aWZpZXJzJiBwcm9wZXJ0eU5hbWVzKCkgY29uc3QgeyByZXR1cm4gKm1fdm0tPnByb3BlcnR5TmFt
ZXM7IH0KIAogICAgICAgICBib29sIGlzQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2Nv
ZGVCbG9jay0+aXNDb25zdHJ1Y3RvcigpOyB9Ci0gICAgICAgIGJvb2wgaXNEZXJpdmVkQ29uc3Ry
dWN0b3JDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPmlzRGVyaXZlZENvbnN0
cnVjdG9yQ29udGV4dCgpOyB9CisgICAgICAgIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29u
dGV4dFR5cGUoKSBjb25zdCB7IHJldHVybiBtX2Rlcml2ZWRDb250ZXh0VHlwZTsgfQogICAgICAg
ICBib29sIHVzZXNBcnJvd0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zY29wZU5vZGUtPnVz
ZXNBcnJvd0Z1bmN0aW9uKCk7IH0KICAgICAgICAgYm9vbCBuZWVkc1RvVXBkYXRlQXJyb3dGdW5j
dGlvbkNvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX25lZWRzVG9VcGRhdGVBcnJvd0Z1bmN0aW9u
Q29udGV4dDsgfQogICAgICAgICBib29sIHVzZXNFdmFsKCkgY29uc3QgeyByZXR1cm4gbV9zY29w
ZU5vZGUtPnVzZXNFdmFsKCk7IH0KQEAgLTY5Nyw2ICs2OTcsMTAgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzQnVp
bHRpbkZ1bmN0aW9uOyB9CiAKICAgICAgICAgT3Bjb2RlSUQgbGFzdE9wY29kZUlEKCkgY29uc3Qg
eyByZXR1cm4gbV9sYXN0T3Bjb2RlSUQ7IH0KKyAgICAgICAgCisgICAgICAgIGJvb2wgaXNEZXJp
dmVkQ29uc3RydWN0b3JDb250ZXh0KCkgeyByZXR1cm4gbV9kZXJpdmVkQ29udGV4dFR5cGUgPT0g
RGVyaXZlZENvbnRleHRUeXBlOjpEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0OyB9CisgICAgICAg
IGJvb2wgaXNEZXJpdmVkQ2xhc3NDb250ZXh0KCkgeyByZXR1cm4gbV9kZXJpdmVkQ29udGV4dFR5
cGUgPT0gRGVyaXZlZENvbnRleHRUeXBlOjpEZXJpdmVkTWV0aG9kQ29udGV4dDsgfQorICAgICAg
ICBib29sIGlzQXJyb3dGdW5jdGlvbigpIHsgcmV0dXJuIG1fY29kZUJsb2NrLT5pc0Fycm93RnVu
Y3Rpb24oKTsgfQogCiAgICAgICAgIGVudW0gY2xhc3MgVERaQ2hlY2tPcHRpbWl6YXRpb24geyBP
cHRpbWl6ZSwgRG9Ob3RPcHRpbWl6ZSB9OwogICAgICAgICBlbnVtIGNsYXNzIE5lc3RlZFNjb3Bl
VHlwZSB7IElzTmVzdGVkLCBJc05vdE5lc3RlZCB9OwpAQCAtNzk0LDcgKzc5OCwxNCBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
KiBtYWtlRnVuY3Rpb24oRnVuY3Rpb25NZXRhZGF0YU5vZGUqIG1ldGFkYXRhKQogICAgICAgICB7
Ci0gICAgICAgICAgICBib29sIG5ld2lzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCA9IGNvbnN0
cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCB8fCAobV9pc0Rlcml2ZWRD
b25zdHJ1Y3RvckNvbnRleHQgJiYgbWV0YWRhdGEtPnBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNl
TW9kZTo6QXJyb3dGdW5jdGlvbk1vZGUpOworICAgICAgICAgICAgRGVyaXZlZENvbnRleHRUeXBl
IG5ld0Rlcml2ZWRDb250ZXh0VHlwZSA9IERlcml2ZWRDb250ZXh0VHlwZTo6Tm9uZTsKKworICAg
ICAgICAgICAgaWYgKG1ldGFkYXRhLT5wYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFy
cm93RnVuY3Rpb25Nb2RlKSB7CisgICAgICAgICAgICAgICAgaWYgKGNvbnN0cnVjdG9yS2luZCgp
ID09IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCB8fCBpc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRl
eHQoKSkKKyAgICAgICAgICAgICAgICAgICAgbmV3RGVyaXZlZENvbnRleHRUeXBlID0gRGVyaXZl
ZENvbnRleHRUeXBlOjpEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0OworICAgICAgICAgICAgICAg
IGVsc2UgaWYgKG1fY29kZUJsb2NrLT5pc0NsYXNzQ29udGV4dCgpIHx8IGlzRGVyaXZlZENsYXNz
Q29udGV4dCgpKQorICAgICAgICAgICAgICAgICAgICBuZXdEZXJpdmVkQ29udGV4dFR5cGUgPSBE
ZXJpdmVkQ29udGV4dFR5cGU6OkRlcml2ZWRNZXRob2RDb250ZXh0OworICAgICAgICAgICAgfQog
CiAgICAgICAgICAgICBWYXJpYWJsZUVudmlyb25tZW50IHZhcmlhYmxlc1VuZGVyVERaOwogICAg
ICAgICAgICAgZ2V0VmFyaWFibGVzVW5kZXJURFoodmFyaWFibGVzVW5kZXJURFopOwpAQCAtODA4
LDcgKzgxOSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgZWxzZSBpZiAocGFyc2VN
b2RlID09IFNvdXJjZVBhcnNlTW9kZTo6TWV0aG9kTW9kZSAmJiBtZXRhZGF0YS0+Y29uc3RydWN0
b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpOb25lKQogICAgICAgICAgICAgICAgIGNvbnN0
cnVjdEFiaWxpdHkgPSBDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3Q7CiAKLSAgICAg
ICAgICAgIHJldHVybiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKG1fdm0sIG1f
c2NvcGVOb2RlLT5zb3VyY2UoKSwgbWV0YWRhdGEsIGlzQnVpbHRpbkZ1bmN0aW9uKCkgPyBVbmxp
bmtlZEJ1aWx0aW5GdW5jdGlvbiA6IFVubGlua2VkTm9ybWFsRnVuY3Rpb24sIGNvbnN0cnVjdEFi
aWxpdHksIHZhcmlhYmxlc1VuZGVyVERaLCBuZXdpc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQp
OworICAgICAgICAgICAgcmV0dXJuIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUo
bV92bSwgbV9zY29wZU5vZGUtPnNvdXJjZSgpLCBtZXRhZGF0YSwgaXNCdWlsdGluRnVuY3Rpb24o
KSA/IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uIDogVW5saW5rZWROb3JtYWxGdW5jdGlvbiwgY29u
c3RydWN0QWJpbGl0eSwgdmFyaWFibGVzVW5kZXJURFosIG5ld0Rlcml2ZWRDb250ZXh0VHlwZSk7
CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIGdldFZhcmlhYmxlc1VuZGVyVERaKFZhcmlhYmxl
RW52aXJvbm1lbnQmKTsKQEAgLTkxOCw5ICs5MjksOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgYm9vbCBtX2lzQnVpbHRpbkZ1bmN0aW9uIHsgZmFsc2UgfTsKICAgICAgICAgYm9vbCBtX3Vz
ZXNOb25TdHJpY3RFdmFsIHsgZmFsc2UgfTsKICAgICAgICAgYm9vbCBtX2luVGFpbFBvc2l0aW9u
IHsgZmFsc2UgfTsKLSAgICAgICAgYm9vbCBtX2lzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCB7
IGZhbHNlIH07CiAgICAgICAgIGJvb2wgbV9uZWVkc1RvVXBkYXRlQXJyb3dGdW5jdGlvbkNvbnRl
eHQ7CiAgICAgICAgIGJvb2wgbV9pc05ld1RhcmdldExvYWRlZEluQXJyb3dGdW5jdGlvbiB7IGZh
bHNlIH07CisgICAgICAgIERlcml2ZWRDb250ZXh0VHlwZSBtX2Rlcml2ZWRDb250ZXh0VHlwZSB7
IERlcml2ZWRDb250ZXh0VHlwZTo6Tm9uZSB9OwogICAgIH07CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCBiYTk4
ZWQ1ZTgyZGUyMDRjZGE4ODQ5NmU2YjVkNjE2MmNiYzM1YmM4Li5jYzAwYmU2YWUxZjU0NGIwOTFh
ODIzNzdhNWEwMzdiZmNiNTkxOTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC0xNzMsMTIgKzE3MywxNiBAQCBSZWdp
c3RlcklEKiBTdXBlck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLCBSZWdpc3RlcklEKiBkcwogCiAgICAgUmVnaXN0ZXJJRCBjYWxsZWU7CiAgICAgY2FsbGVl
LnNldEluZGV4KEpTU3RhY2s6OkNhbGxlZSk7Ci0KICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRH
ZXRCeUlkKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCksICZjYWxsZWUsIGdlbmVyYXRv
ci5wcm9wZXJ0eU5hbWVzKCkudW5kZXJzY29yZVByb3RvKTsKIH0KIAogc3RhdGljIFJlZ2lzdGVy
SUQqIGVtaXRIb21lT2JqZWN0Rm9yQ2FsbGVlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3Ip
CiB7CisgICAgaWYgKGdlbmVyYXRvci5pc0Rlcml2ZWRDbGFzc0NvbnRleHQoKSB8fCBnZW5lcmF0
b3IuaXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KCkpIHsKKyAgICAgICAgUmVnaXN0ZXJJRCog
ZGVyaXZlZENvbnN0cnVjdG9yID0gZ2VuZXJhdG9yLmVtaXRMb2FkRGVyaXZlZENvbnN0cnVjdG9y
RnJvbUFycm93RnVuY3Rpb25MZXhpY2FsRW52aXJvbm1lbnQoKTsKKyAgICAgICAgcmV0dXJuIGdl
bmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIGRlcml2ZWRDb25z
dHJ1Y3RvciwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5ob21lT2JqZWN0UHJpdmF0ZU5hbWUp
OworICAgIH0KKwogICAgIFJlZ2lzdGVySUQgY2FsbGVlOwogICAgIGNhbGxlZS5zZXRJbmRleChK
U1N0YWNrOjpDYWxsZWUpOwogICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJh
dG9yLm5ld1RlbXBvcmFyeSgpLCAmY2FsbGVlLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmhv
bWVPYmplY3RQcml2YXRlTmFtZSk7CkBAIC03NDksOCArNzUzLDggQEAgUmVnaXN0ZXJJRCogRnVu
Y3Rpb25DYWxsVmFsdWVOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVy
YXRvciwgUmUKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmV0dXJuVmFsdWUgPSBnZW5lcmF0b3Iu
ZmluYWxEZXN0aW5hdGlvbihkc3QsIGZ1bmMuZ2V0KCkpOwogICAgIENhbGxBcmd1bWVudHMgY2Fs
bEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7CiAgICAgaWYgKG1fZXhwci0+aXNTdXBlck5v
ZGUoKSkgewotICAgICAgICBBU1NFUlQoZ2VuZXJhdG9yLmlzQ29uc3RydWN0b3IoKSB8fCBnZW5l
cmF0b3IuaXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KCkpOwotICAgICAgICBBU1NFUlQoZ2Vu
ZXJhdG9yLmNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCB8fCBn
ZW5lcmF0b3IuaXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KCkpOworICAgICAgICBBU1NFUlQo
Z2VuZXJhdG9yLmlzQ29uc3RydWN0b3IoKSB8fCBnZW5lcmF0b3IuZGVyaXZlZENvbnRleHRUeXBl
KCkgPT0gRGVyaXZlZENvbnRleHRUeXBlOjpEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KTsKKyAg
ICAgICAgQVNTRVJUKGdlbmVyYXRvci5jb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3Rvcktp
bmQ6OkRlcml2ZWQgfHwgZ2VuZXJhdG9yLmRlcml2ZWRDb250ZXh0VHlwZSgpID09IERlcml2ZWRD
b250ZXh0VHlwZTo6RGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCk7CiAgICAgICAgIGdlbmVyYXRv
ci5lbWl0TW92ZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBnZW5lcmF0b3IubmV3VGFy
Z2V0KCkpOwogICAgICAgICBSZWdpc3RlcklEKiByZXQgPSBnZW5lcmF0b3IuZW1pdENvbnN0cnVj
dChyZXR1cm5WYWx1ZS5nZXQoKSwgZnVuYy5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxs
QXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgICAgICBn
ZW5lcmF0b3IuZW1pdE1vdmUoZ2VuZXJhdG9yLnRoaXNSZWdpc3RlcigpLCByZXQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAK
aW5kZXggZTgxMmVlMDU2ODczZWZmODllODAxOTkwM2I5NzE0ZjgwNmViZDE0Ni4uZjQ3OTRmZDQ1
NjNlMGI5ZjJhYzg1NThiMzhiM2Y5ZWQzMzRhNTM5NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwCkBAIC0xOTIsNyArMTky
LDcgQEAgSlNWYWx1ZSBEZWJ1Z2dlckNhbGxGcmFtZTo6ZXZhbHVhdGUoY29uc3QgU3RyaW5nJiBz
Y3JpcHQsIE5ha2VkUHRyPEV4Y2VwdGlvbj4mIGUKICAgICBWYXJpYWJsZUVudmlyb25tZW50IHZh
cmlhYmxlc1VuZGVyVERaOwogICAgIEpTU2NvcGU6OmNvbGxlY3RWYXJpYWJsZXNVbmRlclREWihz
Y29wZSgpLT5qc1Njb3BlKCksIHZhcmlhYmxlc1VuZGVyVERaKTsKIAotICAgIEV2YWxFeGVjdXRh
YmxlKiBldmFsID0gRXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShjYWxsRnJhbWUsIG1ha2VTb3VyY2Uo
c2NyaXB0KSwgY29kZUJsb2NrLmlzU3RyaWN0TW9kZSgpLCB0aGlzVERaTW9kZSwgY29kZUJsb2Nr
LnVubGlua2VkQ29kZUJsb2NrKCktPmlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCgpLCBjb2Rl
QmxvY2sudW5saW5rZWRDb2RlQmxvY2soKS0+aXNBcnJvd0Z1bmN0aW9uKCksICZ2YXJpYWJsZXNV
bmRlclREWik7CisgICAgRXZhbEV4ZWN1dGFibGUqIGV2YWwgPSBFdmFsRXhlY3V0YWJsZTo6Y3Jl
YXRlKGNhbGxGcmFtZSwgbWFrZVNvdXJjZShzY3JpcHQpLCBjb2RlQmxvY2suaXNTdHJpY3RNb2Rl
KCksIHRoaXNURFpNb2RlLCBjb2RlQmxvY2sudW5saW5rZWRDb2RlQmxvY2soKS0+ZGVyaXZlZENv
bnRleHRUeXBlKCksIGNvZGVCbG9jay51bmxpbmtlZENvZGVCbG9jaygpLT5pc0Fycm93RnVuY3Rp
b24oKSwgJnZhcmlhYmxlc1VuZGVyVERaKTsKICAgICBpZiAodm0uZXhjZXB0aW9uKCkpIHsKICAg
ICAgICAgZXhjZXB0aW9uID0gdm0uZXhjZXB0aW9uKCk7CiAgICAgICAgIHZtLmNsZWFyRXhjZXB0
aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJl
dGVyLmNwcAppbmRleCA2ZDE0MDg3YzdlNGFmMWFhNzU0NWY2NzE2MThiZmFlOTc4OTRhZDU4Li5h
MmE5NDgwODI2NzlkOGRiMzZiYjE0MDBlYzliMDgzYzNlMmFhYWUzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKQEAgLTE4Myw3ICsx
ODMsNyBAQCBKU1ZhbHVlIGV2YWwoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAgICAgIC8vIElm
IHRoZSBsaXRlcmFsIHBhcnNlciBiYWlsZWQsIGl0IHNob3VsZCBub3QgaGF2ZSB0aHJvd24gZXhj
ZXB0aW9ucy4KICAgICAgICAgQVNTRVJUKCFjYWxsRnJhbWUtPnZtKCkuZXhjZXB0aW9uKCkpOwog
Ci0gICAgICAgIGV2YWwgPSBjYWxsZXJDb2RlQmxvY2stPmV2YWxDb2RlQ2FjaGUoKS5nZXRTbG93
KGNhbGxGcmFtZSwgY2FsbGVyQ29kZUJsb2NrLCBjYWxsZXJDb2RlQmxvY2stPmlzU3RyaWN0TW9k
ZSgpLCB0aGlzVERaTW9kZSwgY2FsbGVyQ29kZUJsb2NrLT51bmxpbmtlZENvZGVCbG9jaygpLT5p
c0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoKSwgY2FsbGVyQ29kZUJsb2NrLT51bmxpbmtlZENv
ZGVCbG9jaygpLT5pc0Fycm93RnVuY3Rpb24oKSwgc291cmNlQ29kZSwgY2FsbGVyU2NvcGVDaGFp
bik7CisgICAgICAgIGV2YWwgPSBjYWxsZXJDb2RlQmxvY2stPmV2YWxDb2RlQ2FjaGUoKS5nZXRT
bG93KGNhbGxGcmFtZSwgY2FsbGVyQ29kZUJsb2NrLCBjYWxsZXJDb2RlQmxvY2stPmlzU3RyaWN0
TW9kZSgpLCB0aGlzVERaTW9kZSwgY2FsbGVyQ29kZUJsb2NrLT51bmxpbmtlZENvZGVCbG9jaygp
LT5kZXJpdmVkQ29udGV4dFR5cGUoKSwgY2FsbGVyQ29kZUJsb2NrLT51bmxpbmtlZENvZGVCbG9j
aygpLT5pc0Fycm93RnVuY3Rpb24oKSwgc291cmNlQ29kZSwgY2FsbGVyU2NvcGVDaGFpbik7CiAK
ICAgICAgICAgaWYgKCFldmFsKQogICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcAppbmRleCAwYzEzNDYz
YWFiYzEyZWJkMjU5MjVlNjJiN2VhNDg4MDEzYmNmMzQxLi4wZThkNGEwN2IzMjM3ZDI5ODkwYzIx
YzQ1MjkzNDU3YzUzZDA3ZWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db2RlQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
ZGVDYWNoZS5jcHAKQEAgLTE4OCw3ICsxODgsOCBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZSogQ29kZUNhY2hlOjpnZXRGdW5jdGlvbkV4ZWN1dGFibGVGcm9tR2xvYmFsQ29kZShWTSYgdgog
ICAgIG1ldGFkYXRhLT5zZXRFbmRQb3NpdGlvbihwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKTsK
ICAgICAvLyBUaGUgRnVuY3Rpb24gY29uc3RydWN0b3Igb25seSBoYXMgYWNjZXNzIHRvIGdsb2Jh
bCB2YXJpYWJsZXMsIHNvIG5vIHZhcmlhYmxlcyB3aWxsIGJlIHVuZGVyIFREWi4KICAgICBWYXJp
YWJsZUVudmlyb25tZW50IGVtcHR5VERaVmFyaWFibGVzOwotICAgIFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZTo6Y3JlYXRlKCZ2bSwgc291cmNlLCBtZXRhZGF0YSwgVW5saW5rZWROb3JtYWxGdW5jdGlvbiwg
Q29uc3RydWN0QWJpbGl0eTo6Q2FuQ29uc3RydWN0LCBlbXB0eVREWlZhcmlhYmxlcywgZmFsc2Up
OworICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKCZ2bSwgc291cmNlLCBtZXRhZGF0YSwg
VW5saW5rZWROb3JtYWxGdW5jdGlvbiwgQ29uc3RydWN0QWJpbGl0eTo6Q2FuQ29uc3RydWN0LCBl
bXB0eVREWlZhcmlhYmxlcywgRGVyaXZlZENvbnRleHRUeXBlOjpOb25lKTsKKwogICAgIGZ1bmN0
aW9uRXhlY3V0YWJsZS0+bV9uYW1lVmFsdWUuc2V0KHZtLCBmdW5jdGlvbkV4ZWN1dGFibGUsIGpz
U3RyaW5nKCZ2bSwgbmFtZS5zdHJpbmcoKSkpOwogCiAgICAgbV9zb3VyY2VDb2RlLmFkZENhY2hl
KGtleSwgU291cmNlQ29kZVZhbHVlKHZtLCBmdW5jdGlvbkV4ZWN1dGFibGUsIG1fc291cmNlQ29k
ZS5hZ2UoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhl
Y3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNw
cAppbmRleCBmNWRmNzdkOTg3YzAzY2JlNjA0M2E0N2RjZWIzYTkxMzExYmRmMjMwLi45ZTQ3NTE5
MmIwOTJhNWY1OWUzYTYzMDMwZDE5YTc4MDJlMGNiYTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcApAQCAtMTMxLDE0ICsxMzEsMTQgQEAgSW50cmlu
c2ljIE5hdGl2ZUV4ZWN1dGFibGU6OmludHJpbnNpYygpIGNvbnN0CiAKIGNvbnN0IENsYXNzSW5m
byBTY3JpcHRFeGVjdXRhYmxlOjpzX2luZm8gPSB7ICJTY3JpcHRFeGVjdXRhYmxlIiwgJkV4ZWN1
dGFibGVCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoU2NyaXB0RXhlY3V0YWJs
ZSkgfTsKIAotU2NyaXB0RXhlY3V0YWJsZTo6U2NyaXB0RXhlY3V0YWJsZShTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGJvb2wgaXNJblN0cmlj
dENvbnRleHQsIGJvb2wgaXNJbkRlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQsIGJvb2wgaXNJbkFy
cm93RnVuY3Rpb25Db250ZXh0KQorU2NyaXB0RXhlY3V0YWJsZTo6U2NyaXB0RXhlY3V0YWJsZShT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGJv
b2wgaXNJblN0cmljdENvbnRleHQsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5
cGUsIGJvb2wgaXNJbkFycm93RnVuY3Rpb25Db250ZXh0KQogICAgIDogRXhlY3V0YWJsZUJhc2Uo
dm0sIHN0cnVjdHVyZSwgTlVNX1BBUkFNRVRFUlNfTk9UX0NPTVBJTEVEKQogICAgICwgbV9zb3Vy
Y2Uoc291cmNlKQogICAgICwgbV9mZWF0dXJlcyhpc0luU3RyaWN0Q29udGV4dCA/IFN0cmljdE1v
ZGVGZWF0dXJlIDogMCkKICAgICAsIG1faGFzQ2FwdHVyZWRWYXJpYWJsZXMoZmFsc2UpCiAgICAg
LCBtX25ldmVySW5saW5lKGZhbHNlKQogICAgICwgbV9kaWRUcnlUb0VudGVySW5Mb29wKGZhbHNl
KQotICAgICwgbV9pc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoaXNJbkRlcml2ZWRDb25zdHJ1
Y3RvckNvbnRleHQpCisgICAgLCBtX2Rlcml2ZWRDb250ZXh0VHlwZShkZXJpdmVkQ29udGV4dFR5
cGUpCiAgICAgLCBtX2lzQXJyb3dGdW5jdGlvbkNvbnRleHQoaXNJbkFycm93RnVuY3Rpb25Db250
ZXh0KQogICAgICwgbV9vdmVycmlkZUxpbmVOdW1iZXIoLTEpCiAgICAgLCBtX2ZpcnN0TGluZSgt
MSkKQEAgLTQxNCw3ICs0MTQsNyBAQCBKU09iamVjdCogU2NyaXB0RXhlY3V0YWJsZTo6cHJlcGFy
ZUZvckV4ZWN1dGlvbkltcGwoCiAKIGNvbnN0IENsYXNzSW5mbyBFdmFsRXhlY3V0YWJsZTo6c19p
bmZvID0geyAiRXZhbEV4ZWN1dGFibGUiLCAmU2NyaXB0RXhlY3V0YWJsZTo6c19pbmZvLCAwLCBD
UkVBVEVfTUVUSE9EX1RBQkxFKEV2YWxFeGVjdXRhYmxlKSB9OwogCi1FdmFsRXhlY3V0YWJsZSog
RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUm
IHNvdXJjZSwgYm9vbCBpc0luU3RyaWN0Q29udGV4dCwgVGhpc1REWk1vZGUgdGhpc1REWk1vZGUs
IGJvb2wgaXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0LCBib29sIGlzQXJyb3dGdW5jdGlvbkNv
bnRleHQsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqIHZhcmlhYmxlc1VuZGVyVERaKQorRXZh
bEV4ZWN1dGFibGUqIEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBTb3VyY2VDb2RlJiBzb3VyY2UsIGJvb2wgaXNJblN0cmljdENvbnRleHQsIFRoaXNURFpNb2Rl
IHRoaXNURFpNb2RlLCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBib29s
IGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqIHZhcmlh
Ymxlc1VuZGVyVERaKQogewogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVj
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CiAgICAgaWYgKCFnbG9iYWxPYmplY3QtPmV2YWxFbmFi
bGVkKCkpIHsKQEAgLTQyMiw3ICs0MjIsNyBAQCBFdmFsRXhlY3V0YWJsZSogRXZhbEV4ZWN1dGFi
bGU6OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZQogICAg
ICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBFdmFsRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEV2YWxFeGVjdXRhYmxlPigqZXhlYy0+aGVhcCgp
KSkgRXZhbEV4ZWN1dGFibGUoZXhlYywgc291cmNlLCBpc0luU3RyaWN0Q29udGV4dCwgaXNEZXJp
dmVkQ29uc3RydWN0b3JDb250ZXh0LCBpc0Fycm93RnVuY3Rpb25Db250ZXh0KTsKKyAgICBFdmFs
RXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEV2YWxF
eGVjdXRhYmxlPigqZXhlYy0+aGVhcCgpKSkgRXZhbEV4ZWN1dGFibGUoZXhlYywgc291cmNlLCBp
c0luU3RyaWN0Q29udGV4dCwgZGVyaXZlZENvbnRleHRUeXBlLCBpc0Fycm93RnVuY3Rpb25Db250
ZXh0KTsKICAgICBleGVjdXRhYmxlLT5maW5pc2hDcmVhdGlvbihleGVjLT52bSgpKTsKIAogICAg
IFVubGlua2VkRXZhbENvZGVCbG9jayogdW5saW5rZWRFdmFsQ29kZSA9IGdsb2JhbE9iamVjdC0+
Y3JlYXRlRXZhbENvZGVCbG9jayhleGVjLCBleGVjdXRhYmxlLCB0aGlzVERaTW9kZSwgaXNBcnJv
d0Z1bmN0aW9uQ29udGV4dCwgdmFyaWFibGVzVW5kZXJURFopOwpAQCAtNDM0LDggKzQzNCw4IEBA
IEV2YWxFeGVjdXRhYmxlKiBFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgU291cmNlQ29kZSYgc291cmNlCiAgICAgcmV0dXJuIGV4ZWN1dGFibGU7CiB9CiAKLUV2
YWxFeGVjdXRhYmxlOjpFdmFsRXhlY3V0YWJsZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJj
ZUNvZGUmIHNvdXJjZSwgYm9vbCBpblN0cmljdENvbnRleHQsIGJvb2wgaXNEZXJpdmVkQ29uc3Ry
dWN0b3JDb250ZXh0LCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQpCi0gICAgOiBTY3JpcHRF
eGVjdXRhYmxlKGV4ZWMtPnZtKCkuZXZhbEV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIGV4ZWMt
PnZtKCksIHNvdXJjZSwgaW5TdHJpY3RDb250ZXh0LCBpc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRl
eHQsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQpCitFdmFsRXhlY3V0YWJsZTo6RXZhbEV4ZWN1dGFi
bGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGJvb2wgaW5TdHJp
Y3RDb250ZXh0LCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlz
QXJyb3dGdW5jdGlvbkNvbnRleHQpCisgICAgOiBTY3JpcHRFeGVjdXRhYmxlKGV4ZWMtPnZtKCku
ZXZhbEV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIGV4ZWMtPnZtKCksIHNvdXJjZSwgaW5TdHJp
Y3RDb250ZXh0LCBkZXJpdmVkQ29udGV4dFR5cGUsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQpCiB7
CiB9CiAKQEAgLTQ0Nyw3ICs0NDcsNyBAQCB2b2lkIEV2YWxFeGVjdXRhYmxlOjpkZXN0cm95KEpT
Q2VsbCogY2VsbCkKIGNvbnN0IENsYXNzSW5mbyBQcm9ncmFtRXhlY3V0YWJsZTo6c19pbmZvID0g
eyAiUHJvZ3JhbUV4ZWN1dGFibGUiLCAmU2NyaXB0RXhlY3V0YWJsZTo6c19pbmZvLCAwLCBDUkVB
VEVfTUVUSE9EX1RBQkxFKFByb2dyYW1FeGVjdXRhYmxlKSB9OwogCiBQcm9ncmFtRXhlY3V0YWJs
ZTo6UHJvZ3JhbUV4ZWN1dGFibGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBz
b3VyY2UpCi0gICAgOiBTY3JpcHRFeGVjdXRhYmxlKGV4ZWMtPnZtKCkucHJvZ3JhbUV4ZWN1dGFi
bGVTdHJ1Y3R1cmUuZ2V0KCksIGV4ZWMtPnZtKCksIHNvdXJjZSwgZmFsc2UsIGZhbHNlLCBmYWxz
ZSkKKyAgICA6IFNjcmlwdEV4ZWN1dGFibGUoZXhlYy0+dm0oKS5wcm9ncmFtRXhlY3V0YWJsZVN0
cnVjdHVyZS5nZXQoKSwgZXhlYy0+dm0oKSwgc291cmNlLCBmYWxzZSwgRGVyaXZlZENvbnRleHRU
eXBlOjpOb25lLCBmYWxzZSkKIHsKICAgICBtX3R5cGVQcm9maWxpbmdTdGFydE9mZnNldCA9IDA7
CiAgICAgbV90eXBlUHJvZmlsaW5nRW5kT2Zmc2V0ID0gc291cmNlLmxlbmd0aCgpIC0gMTsKQEAg
LTQ2Myw3ICs0NjMsNyBAQCB2b2lkIFByb2dyYW1FeGVjdXRhYmxlOjpkZXN0cm95KEpTQ2VsbCog
Y2VsbCkKIGNvbnN0IENsYXNzSW5mbyBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6c19pbmZvID0g
eyAiTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUiLCAmU2NyaXB0RXhlY3V0YWJsZTo6c19pbmZvLCAw
LCBDUkVBVEVfTUVUSE9EX1RBQkxFKE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKSB9OwogCiBNb2R1
bGVQcm9ncmFtRXhlY3V0YWJsZTo6TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UpCi0gICAgOiBTY3JpcHRFeGVjdXRhYmxlKGV4
ZWMtPnZtKCkubW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIGV4ZWMtPnZt
KCksIHNvdXJjZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKKyAgICA6IFNjcmlwdEV4ZWN1dGFibGUo
ZXhlYy0+dm0oKS5tb2R1bGVQcm9ncmFtRXhlY3V0YWJsZVN0cnVjdHVyZS5nZXQoKSwgZXhlYy0+
dm0oKSwgc291cmNlLCBmYWxzZSwgRGVyaXZlZENvbnRleHRUeXBlOjpOb25lLCBmYWxzZSkKIHsK
ICAgICBtX3R5cGVQcm9maWxpbmdTdGFydE9mZnNldCA9IDA7CiAgICAgbV90eXBlUHJvZmlsaW5n
RW5kT2Zmc2V0ID0gc291cmNlLmxlbmd0aCgpIC0gMTsKQEAgLTQ5NSw3ICs0OTUsNyBAQCB2b2lk
IE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKIGNvbnN0IENs
YXNzSW5mbyBGdW5jdGlvbkV4ZWN1dGFibGU6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uRXhlY3V0YWJs
ZSIsICZTY3JpcHRFeGVjdXRhYmxlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoRnVu
Y3Rpb25FeGVjdXRhYmxlKSB9OwogCiBGdW5jdGlvbkV4ZWN1dGFibGU6OkZ1bmN0aW9uRXhlY3V0
YWJsZShWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUqIHVubGlua2VkRXhlY3V0YWJsZSwgdW5zaWduZWQgZmlyc3RMaW5lLCB1bnNpZ25l
ZCBsYXN0TGluZSwgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbikKLSAg
ICA6IFNjcmlwdEV4ZWN1dGFibGUodm0uZnVuY3Rpb25FeGVjdXRhYmxlU3RydWN0dXJlLmdldCgp
LCB2bSwgc291cmNlLCB1bmxpbmtlZEV4ZWN1dGFibGUtPmlzSW5TdHJpY3RDb250ZXh0KCksIHVu
bGlua2VkRXhlY3V0YWJsZS0+aXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KCksIGZhbHNlKQor
ICAgIDogU2NyaXB0RXhlY3V0YWJsZSh2bS5mdW5jdGlvbkV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0
KCksIHZtLCBzb3VyY2UsIHVubGlua2VkRXhlY3V0YWJsZS0+aXNJblN0cmljdENvbnRleHQoKSwg
dW5saW5rZWRFeGVjdXRhYmxlLT5kZXJpdmVkQ29udGV4dFR5cGUoKSwgZmFsc2UpCiAgICAgLCBt
X3VubGlua2VkRXhlY3V0YWJsZSh2bSwgdGhpcywgdW5saW5rZWRFeGVjdXRhYmxlKQogewogICAg
IFJFTEVBU0VfQVNTRVJUKCFzb3VyY2UuaXNOdWxsKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXhlY3V0YWJsZS5oCmluZGV4IDEyNDhjYWU4ODUzODA0NWQ1Nzk3NjE1MzZjNWQx
ODZkZWI4ODcyM2QuLjc5NTVkMWYwNmE4ZGI3MjFiNTg4NTk5NDAwMWNmYWZmYzc5MDg4ZmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKQEAgLTM0Niw3ICsz
NDYsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBuZWVkc0FjdGl2YXRpb24oKSBjb25zdCB7IHJldHVy
biBtX2hhc0NhcHR1cmVkVmFyaWFibGVzIHx8IG1fZmVhdHVyZXMgJiAoRXZhbEZlYXR1cmUgfCBX
aXRoRmVhdHVyZSk7IH0KICAgICBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQoKSBjb25zdCB7
IHJldHVybiBtX2lzQXJyb3dGdW5jdGlvbkNvbnRleHQ7IH0KICAgICBib29sIGlzU3RyaWN0TW9k
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmVhdHVyZXMgJiBTdHJpY3RNb2RlRmVhdHVyZTsgfQotICAg
IGJvb2wgaXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9pc0Rl
cml2ZWRDb25zdHJ1Y3RvckNvbnRleHQ7IH0KKyAgICBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZl
ZENvbnRleHRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9kZXJpdmVkQ29udGV4dFR5cGU7IH0KKwog
ICAgIEVDTUFNb2RlIGVjbWFNb2RlKCkgY29uc3QgeyByZXR1cm4gaXNTdHJpY3RNb2RlKCkgPyBT
dHJpY3RNb2RlIDogTm90U3RyaWN0TW9kZTsgfQogICAgICAgICAKICAgICB2b2lkIHNldE5ldmVy
SW5saW5lKGJvb2wgdmFsdWUpIHsgbV9uZXZlcklubGluZSA9IHZhbHVlOyB9CkBAIC0zOTUsNyAr
Mzk2LDcgQEAgcHJpdmF0ZToKICAgICBKU09iamVjdCogcHJlcGFyZUZvckV4ZWN1dGlvbkltcGwo
RXhlY1N0YXRlKiwgSlNGdW5jdGlvbiosIEpTU2NvcGUqLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5k
KTsKIAogcHJvdGVjdGVkOgotICAgIFNjcmlwdEV4ZWN1dGFibGUoU3RydWN0dXJlKiwgVk0mLCBj
b25zdCBTb3VyY2VDb2RlJiwgYm9vbCBpc0luU3RyaWN0Q29udGV4dCwgYm9vbCBpc0luRGVyaXZl
ZENvbnN0cnVjdG9yQ29udGV4dCwgYm9vbCBpc0luQXJyb3dGdW5jdGlvbkNvbnRleHQpOworICAg
IFNjcmlwdEV4ZWN1dGFibGUoU3RydWN0dXJlKiwgVk0mLCBjb25zdCBTb3VyY2VDb2RlJiwgYm9v
bCBpc0luU3RyaWN0Q29udGV4dCwgRGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzSW5BcnJvd0Z1
bmN0aW9uQ29udGV4dCk7CiAKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiB2bSkKICAgICB7
CkBAIC00MTQsNyArNDE1LDcgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgbV9uZXZlcklubGluZTsK
ICAgICBib29sIG1fbmV2ZXJPcHRpbWl6ZSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2RpZFRyeVRv
RW50ZXJJbkxvb3A7Ci0gICAgYm9vbCBtX2lzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dDsKKyAg
ICBEZXJpdmVkQ29udGV4dFR5cGUgbV9kZXJpdmVkQ29udGV4dFR5cGU7CiAgICAgYm9vbCBtX2lz
QXJyb3dGdW5jdGlvbkNvbnRleHQ7CiAgICAgaW50IG1fb3ZlcnJpZGVMaW5lTnVtYmVyOwogICAg
IGludCBtX2ZpcnN0TGluZTsKQEAgLTQzOCw3ICs0MzksNyBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiBtX2V2YWxDb2RlQmxvY2suZ2V0KCk7CiAgICAgfQogCi0gICAgc3RhdGljIEV2YWxFeGVj
dXRhYmxlKiBjcmVhdGUoRXhlY1N0YXRlKiwgY29uc3QgU291cmNlQ29kZSYsIGJvb2wgaXNJblN0
cmljdENvbnRleHQsIFRoaXNURFpNb2RlLCBib29sIGlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4
dCwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50
Kik7CisgICAgc3RhdGljIEV2YWxFeGVjdXRhYmxlKiBjcmVhdGUoRXhlY1N0YXRlKiwgY29uc3Qg
U291cmNlQ29kZSYsIGJvb2wgaXNJblN0cmljdENvbnRleHQsIFRoaXNURFpNb2RlLCBEZXJpdmVk
Q29udGV4dFR5cGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgY29uc3QgVmFyaWFibGVF
bnZpcm9ubWVudCopOwogCiAgICAgUGFzc1JlZlB0cjxKSVRDb2RlPiBnZW5lcmF0ZWRKSVRDb2Rl
KCkKICAgICB7CkBAIC00NTIsOCArNDUzLDcgQEAgcHVibGljOgogICAgICAgICAKICAgICBERUNM
QVJFX0lORk87CiAKLQotICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3Qg
eyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNBY3RpdmF0aW9uKCksIHVzZXNFdmFsKCksIGlz
U3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgU3VwZXJC
aW5kaW5nOjpOb3ROZWVkZWQsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUsIGlzRGVyaXZl
ZENvbnN0cnVjdG9yQ29udGV4dCgpLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0KCkpOyB9CisgICAg
RXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxl
SW5mbyhuZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNl
LCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwg
U291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZSwgZGVyaXZlZENvbnRleHRUeXBlKCksIGlzQXJy
b3dGdW5jdGlvbkNvbnRleHQoKSAsIGZhbHNlKTsgfQogCiAgICAgdW5zaWduZWQgbnVtVmFyaWFi
bGVzKCkgeyByZXR1cm4gbV91bmxpbmtlZEV2YWxDb2RlQmxvY2stPm51bVZhcmlhYmxlcygpOyB9
CiAgICAgdW5zaWduZWQgbnVtYmVyT2ZGdW5jdGlvbkRlY2xzKCkgeyByZXR1cm4gbV91bmxpbmtl
ZEV2YWxDb2RlQmxvY2stPm51bWJlck9mRnVuY3Rpb25EZWNscygpOyB9CkBAIC00NjEsNyArNDYx
LDggQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgRXhlY3V0YWJsZUJhc2U7
CiAgICAgZnJpZW5kIGNsYXNzIFNjcmlwdEV4ZWN1dGFibGU7Ci0gICAgRXZhbEV4ZWN1dGFibGUo
RXhlY1N0YXRlKiwgY29uc3QgU291cmNlQ29kZSYsIGJvb2wgaW5TdHJpY3RDb250ZXh0LCBib29s
IGlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0
KTsKKworICAgIEV2YWxFeGVjdXRhYmxlKEV4ZWNTdGF0ZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBi
b29sIGluU3RyaWN0Q29udGV4dCwgRGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzQXJyb3dGdW5j
dGlvbkNvbnRleHQpOwogCiAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBT
bG90VmlzaXRvciYpOwogCkBAIC01MDYsNyArNTA3LDcgQEAgcHVibGljOgogICAgICAgICAKICAg
ICBERUNMQVJFX0lORk87CiAKLSAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNv
bnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgp
LCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIFN1
cGVyQmluZGluZzo6Tm90TmVlZGVkLCBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlLCBpc0Rl
cml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoKSwgZmFsc2UpOyB9CisgICAgRXhlY3V0YWJsZUluZm8g
ZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2
YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSwgQ29uc3Ry
dWN0b3JLaW5kOjpOb25lLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgU291cmNlUGFyc2VNb2Rl
OjpQcm9ncmFtTW9kZSwgZGVyaXZlZENvbnRleHRUeXBlKCksIGlzQXJyb3dGdW5jdGlvbkNvbnRl
eHQoKSwgZmFsc2UpOyB9CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEV4ZWN1dGFibGVC
YXNlOwpAQCAtNTQ3LDcgKzU0OCw3IEBAIHB1YmxpYzoKIAogICAgIERFQ0xBUkVfSU5GTzsKIAot
ICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0
YWJsZUluZm8obmVlZHNBY3RpdmF0aW9uKCksIHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBm
YWxzZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVk
ZWQsIFNvdXJjZVBhcnNlTW9kZTo6TW9kdWxlRXZhbHVhdGVNb2RlLCBpc0Rlcml2ZWRDb25zdHJ1
Y3RvckNvbnRleHQoKSwgZmFsc2UpOyB9CisgICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUlu
Zm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24oKSwgdXNl
c0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpO
b25lLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgU291cmNlUGFyc2VNb2RlOjpNb2R1bGVFdmFs
dWF0ZU1vZGUsIGRlcml2ZWRDb250ZXh0VHlwZSgpLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0KCks
IGZhbHNlKTsgfQogCiAgICAgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiB1bmxpbmtl
ZE1vZHVsZVByb2dyYW1Db2RlQmxvY2soKSB7IHJldHVybiBtX3VubGlua2VkTW9kdWxlUHJvZ3Jh
bUNvZGVCbG9jay5nZXQoKTsgfQogCkBAIC02NTcsNyArNjU4LDcgQEAgcHVibGljOgogICAgIGJv
b2wgaXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJs
ZS0+aXNCdWlsdGluRnVuY3Rpb24oKTsgfQogICAgIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0
QWJpbGl0eSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5jb25zdHJ1Y3RB
YmlsaXR5KCk7IH0KICAgICBib29sIGlzQXJyb3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIHBh
cnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGU7IH0KLSAgICBi
b29sIGlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5r
ZWRFeGVjdXRhYmxlLT5pc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoKTsgfQorICAgIERlcml2
ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUoKSBjb25zdCB7IHJldHVybiBtX3VubGlu
a2VkRXhlY3V0YWJsZS0+ZGVyaXZlZENvbnRleHRUeXBlKCk7IH0KICAgICBib29sIGlzQ2xhc3ND
b25zdHJ1Y3RvckZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUt
PmlzQ2xhc3NDb25zdHJ1Y3RvckZ1bmN0aW9uKCk7IH0KICAgICBjb25zdCBJZGVudGlmaWVyJiBu
YW1lKCkgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPm5hbWUoKTsgfQogICAgIGNvbnN0
IElkZW50aWZpZXImIGluZmVycmVkTmFtZSgpIHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxl
LT5pbmZlcnJlZE5hbWUoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCmluZGV4IDk2NWU5NGQ3OTQyNDlm
ZDEyNjU1ZjRjMmZjOGJmYzQ1YWJlYmEyYjQuLjZhY2VhNWUzZjY0MjAyNGFhMWMyOGY4ZmNiYjg3
MTc2MTg2ZjFiNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAKQEAgLTU4Nyw3ICs1ODcsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNFdmFsKEV4ZWNTdGF0ZSogZXhlYykK
IAogICAgIEpTR2xvYmFsT2JqZWN0KiBjYWxsZWVHbG9iYWxPYmplY3QgPSBleGVjLT5jYWxsZWUo
KS0+Z2xvYmFsT2JqZWN0KCk7CiAgICAgVmFyaWFibGVFbnZpcm9ubWVudCBlbXB0eVREWlZhcmlh
YmxlczsgLy8gSW5kaXJlY3QgZXZhbCBkb2VzIG5vdCBoYXZlIGFjY2VzcyB0byB0aGUgbGV4aWNh
bCBzY29wZS4KLSAgICBFdmFsRXhlY3V0YWJsZSogZXZhbCA9IEV2YWxFeGVjdXRhYmxlOjpjcmVh
dGUoZXhlYywgbWFrZVNvdXJjZShzKSwgZmFsc2UsIFRoaXNURFpNb2RlOjpDaGVja0lmTmVlZGVk
LCBmYWxzZSwgZmFsc2UsICZlbXB0eVREWlZhcmlhYmxlcyk7CisgICAgRXZhbEV4ZWN1dGFibGUq
IGV2YWwgPSBFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKGV4ZWMsIG1ha2VTb3VyY2UocyksIGZhbHNl
LCBUaGlzVERaTW9kZTo6Q2hlY2tJZk5lZWRlZCwgRGVyaXZlZENvbnRleHRUeXBlOjpOb25lLCBm
YWxzZSwgJmVtcHR5VERaVmFyaWFibGVzKTsKICAgICBpZiAoIWV2YWwpCiAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9lczYueWFtbCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9lczYueWFtbAppbmRleCBmMTE5N2QxM2RmZTViZjE1ZTk5NGY0ZGFjMmFhMzgzYzUzMzcxMmIz
Li42ODNlNmUxNmI0NjE3YWM2ZTUzZTA3NGU4M2Y4Y2FhNzFjNTNiOTAwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2LnlhbWwKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL2VzNi55YW1sCkBAIC03NDcsNyArNzQ3LDcgQEAKIC0gcGF0aDogZXM2L2Fy
cm93X2Z1bmN0aW9uc19sZXhpY2FsX25ldy50YXJnZXRfYmluZGluZy5qcwogICBjbWQ6IHJ1bkVT
NiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9hcnJvd19mdW5jdGlvbnNfbGV4aWNhbF9zdXBlcl9iaW5k
aW5nLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0
aDogZXM2L2Fycm93X2Z1bmN0aW9uc19ub19wcm90b3R5cGVfcHJvcGVydHkuanMKICAgY21kOiBy
dW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvYmxvY2stbGV2ZWxfZnVuY3Rpb25fZGVjbGFyYXRp
b24uanMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJy
b3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtc3VwZXJwcm9wZXJ0eS5qcyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtc3VwZXJwcm9w
ZXJ0eS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4wNTBmZTkwNTcxOWJhMDg2Nzk3MTRhMzgwYjQxY2UxYTM0NWFm
NTE1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC1zdXBlcnByb3BlcnR5LmpzCkBAIC0wLDAgKzEs
MjI0IEBACit2YXIgdGVzdENhc2UgPSBmdW5jdGlvbiAoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2Fn
ZSkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKSB7CisgICAgICAgIHRocm93IG1lc3Nh
Z2UgKyAiLiBFeHBlY3RlZCAnIiArIGV4cGVjdGVkICsgIicsIGJ1dCB3YXMgJyIgKyBhY3R1YWwg
KyAiJyI7CisgICAgfQorfTsKKwordmFyIHRlc3RWYWx1ZSAgPSAndGVzdC12YWx1ZSc7CisKK3Zh
ciBBID0gY2xhc3MgQSB7CisgICAgY29uc3RydWN0b3IoKSB7CisgICAgICAgIHRoaXMudmFsdWUg
PSB0ZXN0VmFsdWU7CisgICAgfQorICAgIGdldENvbnN0VmFsdWUgKCkgeworICAgICAgICByZXR1
cm4gdGVzdFZhbHVlOworICAgIH0KKyAgICBnZXRWYWx1ZSAoKSB7CisgICAgICAgIHJldHVybiB0
aGlzLnZhbHVlOworICAgIH0KKyAgICBzZXRWYWx1ZSAodmFsdWUpIHsKKyAgICAgICAgdGhpcy52
YWx1ZSA9IHZhbHVlOworICAgIH0KK307CisKK3ZhciBCID0gY2xhc3MgQiBleHRlbmRzIEEgewor
ICAgIGdldFBhcmVudFZhbHVlKCkgeworICAgICAgICB2YXIgYXJyb3cgID0gKCkgPT4gc3VwZXIu
Z2V0VmFsdWUoKTsKKyAgICAgICAgcmV0dXJuIGFycm93KCk7CisgICAgfQorfTsKKwordmFyIEMg
PSBjbGFzcyBDIHsKKyAgICBjb25zdHJ1Y3RvcigpIHsKKyAgICAgICAgdGhpcy52YWx1ZSA9IHRl
c3RWYWx1ZTsKKyAgICB9CisgICAgc3RhdGljIGdldFN0YXRpY1ZhbHVlKCkgeworICAgICAgICBy
ZXR1cm4gdGVzdFZhbHVlOworICAgIH0KK307CisKK3ZhciBEID0gY2xhc3MgRCBleHRlbmRzIEMg
eworICAgIHN0YXRpYyBnZXRQYXJlbnRTdGF0aWNWYWx1ZSgpIHsKKyAgICAgICAgdmFyIGFycm93
ICA9ICgpID0+IHN1cGVyLmdldFN0YXRpY1ZhbHVlKCk7CisgICAgICAgIHJldHVybiBhcnJvdygp
OworICAgIH0KK307CisKK3ZhciBFID0gY2xhc3MgRSBleHRlbmRzIEEgeworICAgICBjb25zdHJ1
Y3RvcigpIHsKKyAgICAgICAgIHN1cGVyKCk7CisgICAgIH0KKyAgICAgZ2V0IHByb3AoKSB7Cisg
ICAgICAgICB2YXIgYXJyb3cgPSAoKSA9PiBzdXBlci5nZXRDb25zdFZhbHVlKCkgKyAnLScgKyB0
aGlzLnZhbHVlOworICAgICAgICAgcmV0dXJuIGFycm93KCk7CisgICAgIH0KKyAgICAgc2V0IHBy
b3AodmFsdWUpIHsKKyAgICAgICAgIHZhciBhcnJvdyA9IChuZXdWYWwpID0+IHN1cGVyLnNldFZh
bHVlKG5ld1ZhbCk7CisgICAgICAgICBhcnJvdyh2YWx1ZSk7CisgICAgIH0KKyAgICAgc2V0SW5p
dFZhbHVlKCkgeworICAgICAgIHRoaXMudmFsdWUgPSB0ZXN0VmFsdWU7CisgICAgIH0KKyB9Owor
Cit2YXIgYiA9IG5ldyBCKCk7Citmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsKKyAg
ICB0ZXN0Q2FzZShiLmdldFBhcmVudFZhbHVlKCksIHRlc3RWYWx1ZSwgaSk7Cit9CisKK2ZvciAo
dmFyIGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgeworICAgIHRlc3RDYXNlKEQuZ2V0UGFyZW50U3Rh
dGljVmFsdWUoKSwgdGVzdFZhbHVlLCBpKTsKK30KKwordmFyIGUgPSBuZXcgRSgpOworZm9yICh2
YXIgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7CisgICAgIGUuc2V0SW5pdFZhbHVlKCk7CisgICAg
IHRlc3RDYXNlKGUucHJvcCwgdGVzdFZhbHVlKyctJyt0ZXN0VmFsdWUsIGkpOworICAgICBlLnBy
b3AgPSAnbmV3LXRlc3QtdmFsdWUnOworICAgICB0ZXN0Q2FzZShlLnByb3AsIHRlc3RWYWx1ZSsn
LW5ldy10ZXN0LXZhbHVlJywgaSk7Cit9CisKK3ZhciBGICA9IGNsYXNzIEYgZXh0ZW5kcyBBIHsK
KyAgICBuZXdNZXRob2QoKSB7CisgICAgICAgIHZhciBhcnJvdyAgPSAoKSA9PiBldmFsKCdzdXBl
ci5nZXRWYWx1ZSgpJyk7CisgICAgICAgIHZhciByID0gYXJyb3coKTsKKyAgICAgICAgcmV0dXJu
IHI7CisgICAgfQorfTsKKwordmFyIGYgPSBuZXcgRigpOworZm9yICh2YXIgaT0wOyBpIDwgMTAw
MDA7IGkrKykgeworICAgIHRyeSB7CisgICAgICAgIHZhciByZXN1bHQgPSBmLm5ld01ldGhvZCgp
OworICAgICAgICB0ZXN0Q2FzZShyZXN1bHQsIHRlc3RWYWx1ZSwgaSk7CisgICAgIH0gY2F0Y2go
ZSkgeworICAgICAgICBpZiAoIShlIGluc3RhbmNlb2YgU3ludGF4RXJyb3IpKQorICAgICAgICAg
ICB0aHJvdyBlOworICAgICB9Cit9CisKK3ZhciBHID0gY2xhc3MgRyBleHRlbmRzIEEgeworICAg
ICBjb25zdHJ1Y3RvcigpIHsKKyAgICAgICAgIHN1cGVyKCk7CisgICAgIH0KKyAgICAgZ2V0IHBy
b3AoKSB7CisgICAgICAgICB2YXIgYXJyb3cgPSAoKSA9PiAoKSA9PiBzdXBlci5nZXRDb25zdFZh
bHVlKCkgKyAnLScgKyB0aGlzLnZhbHVlOworICAgICAgICAgcmV0dXJuIGFycm93KCkoKTsKKyAg
ICAgfQorICAgICBzZXQgcHJvcCh2YWx1ZSkgeworICAgICAgICAgdmFyIGFycm93ID0gICgpID0+
IChuZXdWYWwpID0+IHRoaXMudmFsdWUgPSBuZXdWYWw7CisgICAgICAgICBhcnJvdygpKHZhbHVl
KTsKKyAgICAgfQorICAgICBzZXRJbml0VmFsdWUoKSB7CisgICAgICAgICB0aGlzLnZhbHVlID0g
dGVzdFZhbHVlOworICAgICB9CisgICAgIGdldFZhbHVlQ0IoKSB7CisgICAgICAgICB2YXIgYXJy
b3cgID0gKCkgPT4gc3VwZXIuZ2V0VmFsdWUoKTsKKyAgICAgICAgIHJldHVybiBhcnJvdzsKKyAg
ICAgfQorICAgICBzZXRWYWx1ZUNCKCkgeworICAgICAgICAgdmFyIGFycm93ID0gIChuZXdWYWwp
ID0+IHRoaXMudmFsdWUgPSBuZXdWYWw7CisgICAgICAgICByZXR1cm4gYXJyb3c7CisgICAgIH0K
KyAgICAgZ2V0UGFyZW50VmFsdWUoKSB7CisgICAgICAgICByZXR1cm4gc3VwZXIuZ2V0VmFsdWUo
KTsKKyAgICAgfQorICAgICBnZXRQYXJlbnRWYWx1ZVdpdGhFcnJvcigpIHsKKyAgICAgICAgIHZh
ciBmID0gIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICByZXR1cm4gKCkgPT4gc3VwZXIuZ2V0
VmFsdWUoKTsKKyAgICAgICAgIH07CisgICAgICAgICByZXR1cm4gZigpOworICAgICB9CisgfTsK
KworIHZhciBnID0gbmV3IEcoKTsKKyBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsK
KyAgICBnLnNldEluaXRWYWx1ZSgpOworICAgIHRlc3RDYXNlKGcucHJvcCwgdGVzdFZhbHVlICsg
Jy0nICsgdGVzdFZhbHVlLCAnRXJyb3I6IFNvbWUgcHJvYmxlbSB3aXRoIHVzaW5nIGFycm93IGFu
ZCAic3VwZXIiIGluc2lkZSBvZiB0aGUgbWV0aG9kJyk7CisgICAgZy5wcm9wID0gJ25ldy10ZXN0
LXZhbHVlJzsKKyAgICB0ZXN0Q2FzZShnLnByb3AsIHRlc3RWYWx1ZSArICctbmV3LXRlc3QtdmFs
dWUnLCAnRXJyb3I6IFNvbWUgcHJvYmxlbSB3aXRoIHVzaW5nIGFycm93IGFuZCAic3VwZXIiIGlu
c2lkZSBvZiB0aGUgZ2V0dGVyIGFuZCBzZXR0ZXInKTsKKyB9CisKK3ZhciBnMSA9IG5ldyBHKCk7
Citmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgICBnMS5zZXRJbml0VmFsdWUo
KTsKKyAgICBsZXQgZ2V0VmFsdWUgPSBnMS5nZXRWYWx1ZUNCKCk7CisgICAgdGVzdENhc2UoZ2V0
VmFsdWUoKSwgdGVzdFZhbHVlLCAgJ0Vycm9yOiBTb21lIHByb2JsZW0gd2l0aCB1c2luZyBhcnJv
dyBhbmQgInN1cGVyIiBpbnNpZGUgb2YgdGhlIG1ldGhvZCB0aGF0IHJldHVuIGFycm93IGZ1bmN0
aW9uJyk7CisgICAgbGV0IHNldFZhbHVlID0gZzEuc2V0VmFsdWVDQigpOworICAgIHNldFZhbHVl
KCduZXctdmFsdWUnKTsKKyAgICB0ZXN0Q2FzZShnZXRWYWx1ZSgpLCAnbmV3LXZhbHVlJywgJ0Vy
cm9yOiBTb21lIHByb2JsZW0gd2l0aCB1c2luZyBhcnJvdyBhbmQgInN1cGVyIiBpbnNpZGUgb2Yg
dGhlIG1ldGhvZCB0aGF0IHJldHVuIGFycm93IGZ1bmN0aW9uJyk7Cit9CisKK3ZhciBnMiA9IG5l
dyBHKCk7Citmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgICBsZXQgZXJyb3Ig
PSBmYWxzZTsKKyAgICB0cnkgeworICAgICAgIGcyLmdldFBhcmVudFZhbHVlV2l0aEVycm9yKCko
KTsKKyAgICB9IGNhdGNoKGUpIHsKKyAgICAgIC8vIEZJWE1FOiBzaG91bGQgYnkgY2hlY2sgaWYg
ZSBpbnN0YW5jZW9mIFN5bnRheEVycm9yCisgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTUwODkzCisgICAgICBlcnJvciA9IHRydWU7CisgICAgfQorICAg
IHRlc3RDYXNlKGVycm9yLCB0cnVlLCAnRXJyb3I6IHVzaW5nICJzdXBlciIgc2hvdWxkIGxlYWQg
dG8gZXJyb3InKTsKK30KKworCit2YXIgSCA9IGNsYXNzIEggZXh0ZW5kcyBBIHsKKyAgICBjb25z
dHJ1Y3RvcigpIHsKKyAgICAgICAgdmFyIGFycm93ID0gKCkgPT4gKCkgPT4gc3VwZXIuZ2V0VmFs
dWUoKTsKKyAgICAgICAgc3VwZXIoKTsKKyAgICAgICAgdGhpcy5uZXdWYWx1ZSAgPSBhcnJvdygp
KCk7CisgICAgfQorfTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7CisgICAg
bGV0IGggPSBuZXcgSCgpOworICAgIHRlc3RDYXNlKGgubmV3VmFsdWUsIHRlc3RWYWx1ZSwgJ0Vy
cm9yOiBTb21lIHByb2JsZW0gd2l0aCB1c2luZyAic3VwZXIiIGluc2lkZSBvZiB0aGUgY29uc3Ry
dWN0b3InKTsKK30KKwordmFyIEkgPSBjbGFzcyBJIGV4dGVuZHMgQSB7CisgICAgY29uc3RydWN0
b3IgKGJlZm9yZVN1cGVyKSB7CisgICAgICAgIHZhciBhcnJvdyA9ICgpID0+IHN1cGVyLmdldFZh
bHVlKCk7CisgICAgICAgIGlmIChiZWZvcmVTdXBlcikgIHsKKyAgICAgICAgICAgIHRoaXMuX3Zh
bHVlID0gYXJyb3coKTsKKyAgICAgICAgICAgIHN1cGVyKCk7CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICBzdXBlcigpOworICAgICAgICAgICAgdGhpcy5fdmFsdWUgPSBhcnJvdygpOwor
ICAgICAgICB9CisgICAgfQorfQorCit2YXIgSiA9IGNsYXNzIEogZXh0ZW5kcyBBIHsKKyAgICBj
b25zdHJ1Y3RvciAoYmVmb3JlU3VwZXIpIHsKKyAgICAgICAgdmFyIF92YWx1ZTsKKyAgICAgICAg
dmFyIGFycm93ID0gKCkgPT4gc3VwZXIuZ2V0Q29uc3RWYWx1ZSgpOworICAgICAgICBpZiAoYmVm
b3JlU3VwZXIpICB7CisgICAgICAgICAgICBfdmFsdWUgPSBhcnJvdygpOworICAgICAgICAgICAg
c3VwZXIoKTsKKyAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzdXBlcigpOworICAgICAg
ICAgICAgX3ZhbHVlID0gYXJyb3coKTsKKyAgICAgICAgfQorICAgICAgICB0aGlzLl92YWx1ZSA9
IF92YWx1ZTsKKyAgICB9Cit9CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgewor
ICAgIGxldCBpID0gbmV3IEkoZmFsc2UpOworICAgIHRlc3RDYXNlKGkuX3ZhbHVlLCB0ZXN0VmFs
dWUsICdFcnJvcjogU29tZSBwcm9ibGVtIHdpdGggdXNpbmcgInN1cGVyIiBpbnNpZGUgb2YgdGhl
IGNvbnN0cnVjdG9yJyk7CisgICAgbGV0IGogPSBuZXcgSihmYWxzZSk7CisgICAgdGVzdENhc2Uo
ai5fdmFsdWUsIHRlc3RWYWx1ZSwgJ0Vycm9yOiBTb21lIHByb2JsZW0gd2l0aCB1c2luZyAic3Vw
ZXIiIGluc2lkZSBvZiB0aGUgY29uc3RydWN0b3InKTsKKworICAgIC8vIEZJWE1FOiBQcm9ibGVt
IHdpdGggYWNjZXNzIHRvIHRoZSBzdXBlciBiZWZvcmUgc3VwZXIoKSBpbiBjb25zdHJ1Y3Rvcgor
ICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTIxMDgKKyAg
ICAvL2xldCBqMiA9IG5ldyBKKHRydWUpOworICAgIC8vdGVzdENhc2UoajIuX3ZhbHVlLCB0ZXN0
VmFsdWUsICdFcnJvcjogU29tZSBwcm9ibGVtIHdpdGggdXNpbmcgInN1cGVyIiBpbnNpZGUgb2Yg
dGhlIGNvbnN0cnVjdG9yJyk7CisgICAgZXJyb3IgPSBmYWxzZTsKKyAgICB0cnkgeworICAgICAg
ICBuZXcgSSh0cnVlKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9yID0gZSBpbnN0
YW5jZW9mIFJlZmVyZW5jZUVycm9yOworICAgIH0KKyAgICB0ZXN0Q2FzZShlcnJvciwgdHJ1ZSwg
J0Vycm9yOiB1c2luZyAic3VwZXIiIHByb3BlcnR5IGJlZm9yZSBzdXBlcigpIHNob3VsZCBsZWFk
IHRvIGVycm9yJyk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNDU3Nzg3N2U4MDEyMDZkMzEzZWIyZmMyYTk2OGU1ZGE1
MGM3ZTA1YS4uNTM3NWE4MWZmOGRlNzMxYmFjYThmM2JhYWZhMDkwYjg1NzZmNDQyOSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE0IEBACisyMDE1LTEyLTEwICBTa2FjaGtvdiBPbGVrc2FuZHIgIDxnc2thY2hr
b3ZAZ21haWwuY29tPgorCisgICAgICAgIFtFUzZdIEFycm93IGZ1bmN0aW9uIHN5bnRheC4gQXJy
b3cgZnVuY3Rpb24gc3BlY2lmaWMgZmVhdHVyZXMuIExleGljYWwgYmluZCAic3VwZXIiCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDk2MTUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGpzL2Fycm93ZnVu
Y3Rpb24tc3VwZXJwcm9wZXJ0eS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL2Fy
cm93ZnVuY3Rpb24tc3VwZXJwcm9wZXJ0eS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBqcy9zY3Jp
cHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1zdXBlcnByb3BlcnR5LmpzOiBBZGRlZC4KKwogMjAxNS0x
Mi0wNSAgU2thY2hrb3YgT2xla3NhbmRyICA8Z3NrYWNoa292QGdtYWlsLmNvbT4KIAogICAgICAg
ICBbRVM2XSAic3VwZXIiIGFuZCAidGhpcyIgc2hvdWxkIGJlIGxleGljYWxseSBib3VuZCBpbnNp
ZGUgYW4gYXJyb3cgZnVuY3Rpb24gYW5kIHNob3VsZCBsaXZlIGluIGEgSlNMZXhpY2FsRW52aXJv
bm1lbnQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tc3VwZXJwcm9w
ZXJ0eS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXN1cGVycHJv
cGVydHktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNkZjJjNDk1ZmI5ZmYxZTI3NjMzMGYxNTNj
MTQwYmI1ZmY1ZjQ5ZDMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1
bmN0aW9uLXN1cGVycHJvcGVydHktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTYgQEAKK1Rlc3Rz
IGZvciBFUzYgYXJyb3cgZnVuY3Rpb24sIGFjY2VzcyB0byB0aGUgc3VwZXIgcHJvcGVydHkgaW4g
YXJyb3cgZnVuY3Rpb24KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgKG5l
dyBCKCkpLmdldFZhbHVlUGFyZW50RnVuY3Rpb24oKSBpcyBleHBlY3RlZFZhbHVlCitQQVNTIChu
ZXcgQyhmYWxzZSkpLnZhbHVlIGlzIGV4cGVjdGVkVmFsdWUKK1BBU1MgRS5nZXRQYXJlbnRTdGF0
aWNWYWx1ZSgpIGlzIGV4cGVjdGVkVmFsdWUKK1BBU1MgZi5wcm9wIGlzIGV4cGVjdGVkVmFsdWUg
KyAiLSIgKyBleHBlY3RlZFZhbHVlCitQQVNTIGYucHJvcCBpcyBleHBlY3RlZFZhbHVlICsgIi0i
ICsgIm5ldy12YWx1ZSIKK1BBU1MgKG5ldyBGKCkpLmdldFBhcmVudFZhbHVlKCkgaXMgZXhwZWN0
ZWRWYWx1ZQorUEFTUyAobmV3IEYoKSkuZ2V0UGFyZW50VmFsdWVXaXRoRXJyb3IoKSgpIHRocmV3
IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0
aW5nICdzdXBlci5nZXRWYWx1ZScpLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rp
b24tc3VwZXJwcm9wZXJ0eS5odG1sIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1zdXBl
cnByb3BlcnR5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDJiNTA1Zjc5OTQ1YjdjYTM5Yzk2Y2M3MTlhY2Rj
OTVmZjViYTBmZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rp
b24tc3VwZXJwcm9wZXJ0eS5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBV
QkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNy
Yz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXN1cGVycHJvcGVydHku
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMv
c2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tc3VwZXJwcm9wZXJ0eS5qcyBiL0xheW91dFRlc3Rz
L2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXN1cGVycHJvcGVydHkuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZTVmMjQ5Y2JiYmRhMjg4ZjEzN2E1MjM3MGYyNjExY2I0MTU3MWZiZQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXN1cGVycHJv
cGVydHkuanMKQEAgLTAsMCArMSw5NSBAQAorZGVzY3JpcHRpb24oJ1Rlc3RzIGZvciBFUzYgYXJy
b3cgZnVuY3Rpb24sIGFjY2VzcyB0byB0aGUgc3VwZXIgcHJvcGVydHkgaW4gYXJyb3cgZnVuY3Rp
b24nKTsKKwordmFyIGV4cGVjdGVkVmFsdWUgPSAndGVzdC12YWx1ZSc7CisKK2NsYXNzIEEgewor
ICAgIGdldFZhbHVlICgpIHsKKyAgICAgICAgcmV0dXJuIGV4cGVjdGVkVmFsdWU7CisgICAgfQor
fTsKKworY2xhc3MgQiBleHRlbmRzIEEgeworICAgIGdldFZhbHVlUGFyZW50RnVuY3Rpb24oKSB7
CisgICAgICAgIHZhciBhcnJvdyAgPSAoKSA9PiBzdXBlci5nZXRWYWx1ZSgpOworICAgICAgICBy
ZXR1cm4gYXJyb3coKTsKKyAgICB9Cit9OworCitjbGFzcyBDIGV4dGVuZHMgQiB7CisgICAgY29u
c3RydWN0b3IoYmVmb3JlU3VwZXIpIHsKKyAgICAgICAgbGV0IF92YWx1ZTsKKyAgICAgICAgbGV0
IGFycm93ID0gKCkgPT4gc3VwZXIuZ2V0VmFsdWUoKTsKKyAgICAgICAgaWYgKGJlZm9yZVN1cGVy
KSB7CisgICAgICAgICAgICBfdmFsdWUgPSBhcnJvdygpOworICAgICAgICAgICAgc3VwZXIoKTsK
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHN1cGVyKCk7CisgICAgICAgICAgICBfdmFs
dWUgPSBhcnJvdygpOworICAgICAgICB9CisgICAgICAgIHRoaXMudmFsdWUgPSBfdmFsdWU7Cisg
ICAgfQorfTsKKworY2xhc3MgRCB7CisgICAgY29uc3RydWN0b3IoKSB7CisgICAgICAgIHRoaXMu
dmFsdWUgPSBleHBlY3RlZFZhbHVlOworICAgIH0KKyAgICBzdGF0aWMgZ2V0U3RhdGljVmFsdWUo
KSB7CisgICAgICAgIHJldHVybiBleHBlY3RlZFZhbHVlOworICAgIH0KK307CisKK2NsYXNzIEUg
ZXh0ZW5kcyBEIHsKKyAgICBzdGF0aWMgZ2V0UGFyZW50U3RhdGljVmFsdWUoKSB7CisgICAgICAg
IHZhciBhcnJvdyAgPSAoKSA9PiBzdXBlci5nZXRTdGF0aWNWYWx1ZSgpOworICAgICAgICByZXR1
cm4gYXJyb3coKTsKKyAgICB9Cit9OworCitjbGFzcyBGIGV4dGVuZHMgQSB7CisgICAgY29uc3Ry
dWN0b3IoKSB7CisgICAgICAgIHN1cGVyKCk7CisgICAgICAgIHRoaXMudmFsdWUgPSBleHBlY3Rl
ZFZhbHVlOworICAgIH0KKyAgICBnZXQgcHJvcCgpIHsKKyAgICAgICAgdmFyIGFycm93ID0gKCkg
PT4gc3VwZXIuZ2V0VmFsdWUoKSsgJy0nICsgdGhpcy52YWx1ZTsKKyAgICAgICAgcmV0dXJuIGFy
cm93KCk7CisgICAgfQorICAgIHNldCBwcm9wKHZhbHVlKSB7CisgICAgICAgIHZhciBhcnJvdyA9
IChuZXdWYWwpID0+IHRoaXMudmFsdWUgPSBuZXdWYWw7CisgICAgICAgIGFycm93KHZhbHVlKTsK
KyAgICB9CisgICAgZ2V0UGFyZW50VmFsdWUoKSB7CisgICAgICAgIGxldCBhcnJvdyA9ICgpID0+
ICgpID0+IHN1cGVyLmdldFZhbHVlKCk7CisgICAgICAgIHJldHVybiBhcnJvdygpKCk7CisgICAg
fQorICAgIGdldFBhcmVudFZhbHVlV2l0aEVycm9yKCkgeworICAgICAgICB2YXIgZiA9ICBmdW5j
dGlvbiAoKSB7CisgICAgICAgICAgICByZXR1cm4gKCkgPT4gc3VwZXIuZ2V0VmFsdWUoKTsKKyAg
ICAgICAgfTsKKyAgICAgICAgcmV0dXJuIGYoKTsKKyAgICB9CisgfTsKKworc2hvdWxkQmUoJyhu
ZXcgQigpKS5nZXRWYWx1ZVBhcmVudEZ1bmN0aW9uKCknLCAnZXhwZWN0ZWRWYWx1ZScpOworCitz
aG91bGRCZSgnKG5ldyBDKGZhbHNlKSkudmFsdWUnLCAnZXhwZWN0ZWRWYWx1ZScpOworCisvLyBG
SVhNRTogUHJvYmxlbSB3aXRoIGFjY2VzcyB0byB0aGUgc3VwZXIgYmVmb3JlIHN1cGVyKCkgaW4g
Y29uc3RydWN0b3IKKy8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NTIxMDgKKy8vc2hvdWxkVGhyb3coJyhuZXcgQyh0cnVlKSknLCAnUmVmZXJlbmNlRXJyb3InKTsK
Kworc2hvdWxkQmUoJ0UuZ2V0UGFyZW50U3RhdGljVmFsdWUoKScsICdleHBlY3RlZFZhbHVlJyk7
CisKK3ZhciBmID0gbmV3IEYoKTsKKworc2hvdWxkQmUoJ2YucHJvcCcsICdleHBlY3RlZFZhbHVl
ICsgIi0iICsgZXhwZWN0ZWRWYWx1ZScpOworCitmLnByb3AgPSAnbmV3LXZhbHVlJzsKK3Nob3Vs
ZEJlKCdmLnByb3AnLCAnZXhwZWN0ZWRWYWx1ZSArICItIiArICJuZXctdmFsdWUiJyk7CisKK3No
b3VsZEJlKCcobmV3IEYoKSkuZ2V0UGFyZW50VmFsdWUoKScsICdleHBlY3RlZFZhbHVlJyk7CisK
K3Nob3VsZFRocm93KCcobmV3IEYoKSkuZ2V0UGFyZW50VmFsdWVXaXRoRXJyb3IoKSgpJyk7CisK
K3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>