<?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>235234</bug_id>
          
          <creation_ts>2022-01-14 10:06:05 -0800</creation_ts>
          <short_desc>[Web Inspector] Graphics tab should display pseudo-elements for more than ::before and ::after</short_desc>
          <delta_ts>2022-01-26 13:15:58 -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>Web Inspector</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antoine Quint">graouts</reporter>
          <assigned_to name="Antoine Quint">graouts</assigned_to>
          <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fujii</cc>
    
    <cc>glenn</cc>
    
    <cc>hi</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>jer.noble</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>koivisto</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>pangle</cc>
    
    <cc>philipj</cc>
    
    <cc>ross.kirsling</cc>
    
    <cc>saam</cc>
    
    <cc>sergio</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1830942</commentid>
    <comment_count>0</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2022-01-14 10:06:05 -0800</bug_when>
    <thetext>[Web Inspector] animation tab should display pseudo-elements for more than ::before and ::after</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1830946</commentid>
    <comment_count>1</comment_count>
      <attachid>449180</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2022-01-14 10:15:00 -0800</bug_when>
    <thetext>Created attachment 449180
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1830951</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2022-01-14 10:16:53 -0800</bug_when>
    <thetext>This patch modifies the inspector protocol. Please ensure that any frontend changes appropriately use feature checks for new protocol features.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831004</commentid>
    <comment_count>3</comment_count>
      <attachid>449199</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2022-01-14 12:15:59 -0800</bug_when>
    <thetext>Created attachment 449199
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831012</commentid>
    <comment_count>4</comment_count>
      <attachid>449199</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2022-01-14 12:26:06 -0800</bug_when>
    <thetext>Comment on attachment 449199
Patch

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

Neat!

Is there a good way to test this? Maybe building off of:
LayoutTests/inspector/animation/targetChanged.html

&gt; Source/WebCore/inspector/agents/InspectorDOMAgent.cpp:662
&gt; +    return pushNodePathToFrontend(errorString, element ? element : &amp;styleable.element);

From the above, won&apos;t `element` always beat least `&amp;styleable.element`? So this could be hopefully just be:

    return pushNodePathToFrontend(errorString, element);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831019</commentid>
    <comment_count>5</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2022-01-14 12:34:13 -0800</bug_when>
    <thetext>(In reply to Joseph Pecoraro from comment #4)
&gt; Comment on attachment 449199 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=449199&amp;action=review
&gt; 
&gt; Neat!
&gt; 
&gt; Is there a good way to test this? Maybe building off of:
&gt; LayoutTests/inspector/animation/targetChanged.html

I wasn&apos;t aware of the testing strategy, will take a look.

&gt; &gt; Source/WebCore/inspector/agents/InspectorDOMAgent.cpp:662
&gt; &gt; +    return pushNodePathToFrontend(errorString, element ? element : &amp;styleable.element);
&gt; 
&gt; From the above, won&apos;t `element` always beat least `&amp;styleable.element`? So
&gt; this could be hopefully just be:
&gt; 
&gt;     return pushNodePathToFrontend(errorString, element);

No, elementToPushForStyleable() could return null if somehow we ask for ::before or ::after and the backing PseudoElement hasn&apos;t been created yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831033</commentid>
    <comment_count>6</comment_count>
      <attachid>449209</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2022-01-14 12:50:57 -0800</bug_when>
    <thetext>Created attachment 449209
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831034</commentid>
    <comment_count>7</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2022-01-14 12:51:43 -0800</bug_when>
    <thetext>(In reply to Joseph Pecoraro from comment #4)
&gt; Comment on attachment 449199 [details]
&gt; Patch
&gt; 
&gt; Is there a good way to test this? Maybe building off of:
&gt; LayoutTests/inspector/animation/targetChanged.html

I&apos;ve modified this test to account for pseudoId.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831035</commentid>
    <comment_count>8</comment_count>
      <attachid>449199</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2022-01-14 12:53:03 -0800</bug_when>
    <thetext>Comment on attachment 449199
Patch

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

&gt; Source/JavaScriptCore/inspector/protocol/Animation.json:92
&gt; +                { &quot;name&quot;: &quot;nodeId&quot;, &quot;$ref&quot;: &quot;DOM.NodeId&quot; },
&gt; +                { &quot;name&quot;: &quot;pseudoId&quot;, &quot;$ref&quot;: &quot;CSS.PseudoId&quot;, &quot;optional&quot;: true }

I wonder if it&apos;d be better to add a new type to DOM (or CSS) called `Styleable` so that this can be reused in other places too.  Something like
```
{
    &quot;id&quot;: &quot;Styleable&quot;,
    &quot;type&quot;: &quot;object&quot;,
    &quot;properties&quot;: {
        { &quot;name&quot;: &quot;nodeId&quot;, &quot;$ref&quot;: &quot;NodeId&quot; },
        { &quot;name&quot;: &quot;pseudoId&quot;, &quot;$ref&quot;: &quot;CSS.PseudoId&quot;, &quot;optional&quot;: true }
    }
}
```
and then you could have this just be
```
&quot;returns&quot;: [
    { &quot;name&quot;: &quot;effectTarget&quot;, &quot;$ref&quot;: &quot;CSS.Styleable&quot; }
]
```
and `InspectorDOMAgent::pushStyleableToFrontend` would instead return a `Ref&lt;Inspector::Protocol::DOM::Styleable&gt;`.

&gt; Source/WebCore/inspector/agents/InspectorAnimationAgent.cpp:309
&gt; +    std::tuple&lt;Inspector::Protocol::DOM::NodeId, std::optional&lt;Inspector::Protocol::CSS::PseudoId&gt;&gt; result = { domAgent-&gt;pushStyleablePathToFrontend(errorString, *target), pseudoId };
&gt; +    return result;

Can we inline this?

Tho I don&apos;t think this will be the same code given my above suggestion :)

&gt; Source/WebInspectorUI/UserInterface/Base/DOMUtilities.js:65
&gt; +    if (!node.isPseudoElement() &amp;&amp; options.pseudoId)
&gt; +        displayName = `::${options.pseudoId}`;

I think we should put this in `WI.DOMNode.prototype.get displayName` instead.  It already has

&gt; Source/WebInspectorUI/UserInterface/Models/Animation.js:212
&gt; +        target.AnimationAgent.requestEffectTarget(this._animationId, (error, nodeId, pseudoId) =&gt; {

Please add this comment before this line
```
// COMPATIBILITY (iOS 15): pseudoId did not exist yet.
```

Also, I think we may want to create a `WI.DOMStyleable` to match the `Inspector::Protocol::DOM::Styleable` that I suggested above.  Something simple like
```
WI.DOMStyleable = class DOMStyleable
{
    constructor(node, {pseudoId} = {})
    {
        console.assert(node instanceof WI.DOMNode, node);
        console.assert(!node.isPseudoElement(), node);
        console.assert(!pseudoId, Object.values(WI.CSSManager.PseudoSelectorNames).includes(pseudoId), pseudoId);

        this._node = node;
        this._pseudoId = pseudoId || null;
    }

    // Static

    static fromPayload({nodeId, pseudoId})
    {
        return new WI.DOMStyleable(WI.domManager.nodeForId(nodeId), {pseudoId});
    }

    // Public

    get node() { return this._node; }
    get pseudoId() { return this._pseudoId; }

    get displayName()
    {
        return this._node.displayName + (this._pseudoId ? WI.CSSManager.displayNameForPseudoId(this._pseudoId) : &quot;&quot;);
    }
};
```

&gt; Source/WebInspectorUI/UserInterface/Views/AnimationContentView.js:170
&gt; +                this._subtitleElement.appendChild(WI.linkifyNodeReference(domNode, { pseudoId }));

Style: we don&apos;t add spaces inside `{` `}` in Web Inspector code :)

&gt; Source/WebInspectorUI/UserInterface/Views/AnimationDetailsSidebarPanel.js:183
&gt; +            this._targetRow.value = domNode ? WI.linkifyNodeReference(domNode, { pseudoId }) : null;

ditto (Source/WebInspectorUI/UserInterface/Views/AnimationContentView.js:170)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831037</commentid>
    <comment_count>9</comment_count>
      <attachid>449199</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2022-01-14 12:59:39 -0800</bug_when>
    <thetext>Comment on attachment 449199
Patch

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

&gt;&gt; Source/WebInspectorUI/UserInterface/Base/DOMUtilities.js:65
&gt;&gt; +        displayName = `::${options.pseudoId}`;
&gt; 
&gt; I think we should put this in `WI.DOMNode.prototype.get displayName` instead.  It already has

Oh oops I meant to delete this.  This idea was &quot;replaced&quot; by `WI.DOMStyleable.prototype.get displayName`.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831310</commentid>
    <comment_count>10</comment_count>
      <attachid>449283</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2022-01-16 11:13:44 -0800</bug_when>
    <thetext>Created attachment 449283
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831343</commentid>
    <comment_count>11</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2022-01-16 14:22:46 -0800</bug_when>
    <thetext>Is there something specific I should be doing for Windows? I didn&apos;t add any new files, but it looks like the changes made to CSS.json and Animation.json didn&apos;t quite re-generate the required code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831409</commentid>
    <comment_count>12</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2022-01-16 23:15:57 -0800</bug_when>
    <thetext>Also, I think I should make the call sites to requestEffectTarget() in the front-end code deal with the old return type to correctly handle older backends, right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831760</commentid>
    <comment_count>13</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2022-01-18 12:02:05 -0800</bug_when>
    <thetext>(In reply to Antoine Quint from comment #11)
&gt; Is there something specific I should be doing for Windows? I didn&apos;t add any new files, but it looks like the changes made to CSS.json and Animation.json didn&apos;t quite re-generate the required code.

Nah sadly the windows bot seems to have issues with changes to the inspector protocol for incremental (i.e. non-clean) builds.  I wouldn&apos;t worry about it :)


(In reply to Antoine Quint from comment #12)
&gt; Also, I think I should make the call sites to requestEffectTarget() in the front-end code deal with the old return type to correctly handle older backends, right?
I think it&apos;d be better to have the caller of the protocol `Animation.requestEffectTarget` handle older backends and auto-convert/auto-update to the new object so that callsites don&apos;t have to deal with it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831762</commentid>
    <comment_count>14</comment_count>
      <attachid>449283</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2022-01-18 12:02:18 -0800</bug_when>
    <thetext>Comment on attachment 449283
Patch

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

r=me, nice work (and test)!

&gt; Source/JavaScriptCore/inspector/protocol/CSS.json:270
&gt; +            &quot;id&quot;: &quot;Styleable&quot;,

Can we add a `&quot;description&quot;: &quot;...&quot;` for this?

&gt; Source/WebCore/inspector/agents/InspectorDOMAgent.cpp:558
&gt; +    return pushNodeToFrontend(element ? element : &amp;styleable.element);

NIT: `element ?: &amp;styleable.element`

&gt; Source/WebCore/inspector/agents/InspectorDOMAgent.cpp:660
&gt; +Ref&lt;Protocol::CSS::Styleable&gt; InspectorDOMAgent::pushStyleablePathToFrontend(Protocol::ErrorString errorString, const Styleable&amp; styleable)

NIT: It&apos;s a bit odd for the `InspectorDOMAgent` to be dealing with things from the `CSS` protocol domain (especially since the `DOM` protocol domain is basically a dependency of the `CSS` protocol domain).  I think I&apos;d either move this to `InspectorCSSAgent` (which would use `m_instrumentingAgents.persistentDOMAgent()`) or move the `Styleable` protocol object to the `DOM` domain (which should also change `WI.CSSStyleable` to `WI.DOMStyleable` btw).  Regardless, in either case, please make sure the naming is consistent in the frontend too :)

&gt; Source/WebCore/inspector/agents/InspectorDOMAgent.cpp:663
&gt; +    auto nodeId = pushNodePathToFrontend(errorString, element ? element : &amp;styleable.element);

ditto (:558)

&gt; Source/WebCore/inspector/agents/InspectorDOMAgent.cpp:669
&gt; +    if (styleable.pseudoId != PseudoId::None) {

NIT:  I wonder if instead of checking for `!= PseudoId::None` we should just remove the `ASSERT_NOT_REACHED` in `InspectorCSSAgent::protocolValueForPseudoId` 🤔

&gt; Source/WebCore/inspector/agents/InspectorDOMAgent.cpp:673
&gt; +    }
&gt; +    return protocolStyleable;

Style: I&apos;d add a newline between these

&gt; Source/WebInspectorUI/UserInterface/Base/DOMUtilities.js:60
&gt; +WI.linkifyStyleable = function(styleable)

NIT: I&apos;d add a `console.assert(styleable instanceof WI.CSSStyleable, styleable);` just in case :)

&gt; Source/WebInspectorUI/UserInterface/Base/DOMUtilities.js:71
&gt; +

oops?

&gt; Source/WebInspectorUI/UserInterface/Models/Animation.js:43
&gt; +        // COMPATIBILITY (iOS 15): effectTarget changed from DOM.NodeId to CSS.Styleable.

This should really be next to `requestEffectTarget` since that&apos;s actually where the difference is.  The callback given to it also needs to handle both `CSS.Styleable` and `DOM.NodeId`.

&gt; Source/WebInspectorUI/UserInterface/Models/Animation.js:213
&gt; +        target.AnimationAgent.requestEffectTarget(this._animationId, (error, styleable) =&gt; {
&gt; +            this._effectTarget = !error ? WI.CSSStyleable.fromPayload(styleable) : null;

ditto (:43)
```
    target.AnimationAgent.requestEffectTarget(this._animationId, (error, styleable) =&gt; {
        // COMPATIBILITY (iOS 15): effectTarget changed from DOM.NodeId to CSS.Styleable.
        if (!isNaN(styleable))
            styleable = {nodeId: styleable};

        ...
    });
```

You can confirm that this works by using your locally ToT build to inspect an older iOS simulator (which shouldn&apos;t have these changes).

&gt; Source/WebInspectorUI/UserInterface/Models/CSSStyleable.js:1
&gt; +WI.CSSStyleable = class CSSStyleable

I think this needs the copyright header 😅

&gt; Source/WebInspectorUI/UserInterface/Models/CSSStyleable.js:8
&gt; +        if (pseudoId)
&gt; +            console.assert(Object.values(WI.CSSManager.PseudoSelectorNames).includes(pseudoId), pseudoId);

We strip `console.assert` from production builds, so this will cause some issues.  I&apos;d do this instead:
```
    console.assert(node instanceof WI.DOMNode, node);
    console.assert(!pseudoId || Object.values(WI.CSSManager.PseudoSelectorNames).includes(pseudoId), pseudoId);
```

&gt; Source/WebInspectorUI/UserInterface/Views/AnimationCollectionContentView.js:102
&gt; +            styleable.node.highlight();

I wonder if we should make a `WI.CSSStyleable.prototype.highlight` and add a new `CSS.highlightStyleable` protocol command so that we can narrow down to the pseudo element (which we should already support).  This can probably be a followup tho :)

&gt; Source/WebInspectorUI/UserInterface/Views/AnimationContentView.js:166
&gt; +            this._animationTargetDOMNode = styleable.node;

I wonder if we should make this `_animationTarget` and create a `WI.appendContextMenuItemsForStyleable` so that we refer to the right node.  This can probably be a followup tho :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831998</commentid>
    <comment_count>15</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-01-19 05:42:07 -0800</bug_when>
    <thetext>&lt;rdar://problem/87766777&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834092</commentid>
    <comment_count>16</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2022-01-26 07:30:41 -0800</bug_when>
    <thetext>So on iOS 15, requestEffectTarget returns `undefined` for the `styleable` parameter in Animation.js and so we don&apos;t display the nodes in the Graphics tabs. Need to work out what&apos;s going on here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834096</commentid>
    <comment_count>17</comment_count>
      <attachid>450021</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2022-01-26 07:48:11 -0800</bug_when>
    <thetext>Created attachment 450021
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834098</commentid>
    <comment_count>18</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2022-01-26 07:49:51 -0800</bug_when>
    <thetext>(In reply to Antoine Quint from comment #16)
&gt; So on iOS 15, requestEffectTarget returns `undefined` for the `styleable`
&gt; parameter in Animation.js and so we don&apos;t display the nodes in the Graphics
&gt; tabs. Need to work out what&apos;s going on here.

This was due to the change in Animation.json. We can&apos;t change the `name` key.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834132</commentid>
    <comment_count>19</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-01-26 09:42:20 -0800</bug_when>
    <thetext>Committed r288623 (246442@main): &lt;https://commits.webkit.org/246442@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 450021.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834244</commentid>
    <comment_count>20</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2022-01-26 12:57:18 -0800</bug_when>
    <thetext>(In reply to Devin Rousso from comment #14)
&gt; Comment on attachment 449283 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=449283&amp;action=review
&gt;
&gt; &gt; Source/WebCore/inspector/agents/InspectorDOMAgent.cpp:558
&gt; &gt; +    return pushNodeToFrontend(element ? element : &amp;styleable.element);
&gt; 
&gt; NIT: `element ?: &amp;styleable.element`

This is a GNU extension and must never be used (outside of files that are explicitly non-Windows).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834253</commentid>
    <comment_count>21</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2022-01-26 13:15:58 -0800</bug_when>
    <thetext>(In reply to Ross Kirsling from comment #20)
&gt; (In reply to Devin Rousso from comment #14)
&gt; &gt; Comment on attachment 449283 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=449283&amp;action=review
&gt; &gt;
&gt; &gt; &gt; Source/WebCore/inspector/agents/InspectorDOMAgent.cpp:558
&gt; &gt; &gt; +    return pushNodeToFrontend(element ? element : &amp;styleable.element);
&gt; &gt; 
&gt; &gt; NIT: `element ?: &amp;styleable.element`
&gt; 
&gt; This is a GNU extension and must never be used (outside of files that are
&gt; explicitly non-Windows).

Filed: Bug 235667 – REGRESSION(r288623) MSVC reports &quot;InspectorDOMAgent.cpp(558,40): error C2059: syntax error: &apos;:&apos;&quot;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449180</attachid>
            <date>2022-01-14 10:15:00 -0800</date>
            <delta_ts>2022-01-14 12:15:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235234-20220114191459.patch</filename>
            <type>text/plain</type>
            <size>29375</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4MDE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
NjU1MjQyNmM3MDk3NTYyMTE4YTBiNWMxZDI4NWQwNTNiZTIwODcyLi5kZmIxMzdiYTVhOTJhZDYz
MGU2NWY0ZDI0ZjYzMDA4N2I0NGYxNWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAyMi0wMS0xNCAgQW50b2luZSBRdWludCAgPGdyYW91dHNAd2Via2l0Lm9y
Zz4KKworICAgICAgICBbV2ViIEluc3BlY3Rvcl0gR3JhcGhpY3MgdGFiIHNob3VsZCBkaXNwbGF5
IHBzZXVkby1lbGVtZW50cyBmb3IgbW9yZSB0aGFuIDo6YmVmb3JlIGFuZCA6OmFmdGVyCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzUyMzQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFeHBvc2UgdGhlIG5l
dyBgcHNldWRvSWRgIG1lbWJlciBvbiBBbmltYXRpb24gYW5kIHJldHVybiBmb3IgYHJlcXVlc3RF
ZmZlY3RUYXJnZXQoKWAgY2FsbGJhY2tzLgorCisgICAgICAgICogaW5zcGVjdG9yL3Byb3RvY29s
L0FuaW1hdGlvbi5qc29uOgorCiAyMDIyLTAxLTEzICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtA
aWdhbGlhLmNvbT4KIAogICAgICAgICBbUklTQ1Y2NF0gcmlzY3Y2NCBiYWNrZW5kIHNob3VsZCBs
b3dlciBvZmZsaW5lYXNtIGluc3RydWN0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDFhMGNmNDAxZTc5ZjVi
MjRhZWIxY2ZlMGM4YmQxYWM5NTYyYmYwMmIuLjMyNTFjYTQ2MTAxODVjNDNmY2VkNDZkYTUzODBj
NGJlYmIwZjBmMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MSBAQAorMjAyMi0wMS0xNCAgQW50
b2luZSBRdWludCAgPGdyYW91dHNAd2Via2l0Lm9yZz4KKworICAgICAgICBbV2ViIEluc3BlY3Rv
cl0gR3JhcGhpY3MgdGFiIHNob3VsZCBkaXNwbGF5IHBzZXVkby1lbGVtZW50cyBmb3IgbW9yZSB0
aGFuIDo6YmVmb3JlIGFuZCA6OmFmdGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzUyMzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBVbnRpbCBub3csIHdlIHdvdWxkIHBhc3MgdGhlIHJlc3VsdCBvZiBL
ZXlmcmFtZUVmZmVjdDo6dGFyZ2V0RWxlbWVudE9yUHNldWRvRWxlbWVudCgpIHRvIAorICAgICAg
ICBJbnNwZWN0b3JBbmltYXRpb25BZ2VudDo6d2lsbEFwcGx5S2V5ZnJhbWVFZmZlY3QoKS4gVGhp
cyBtZWFudCB0aGF0IHRoZSBpbnNwZWN0b3Igd291bGQgb25seQorICAgICAgICBiZSB0b2xkIG9m
IGFuIGFuaW1hdGlvbiB0YXJnZXQgYXMgYW4gRWxlbWVudCBvciBhIFBzZXVkb0VsZW1lbnQgYnV0
IG5vdCBhcyBhbiBFbGVtZW50IC8gUHNldWRvSWQKKyAgICAgICAgcGFpciwgdGh1cyBvbmx5IGFs
bG93aW5nIDo6YmVmb3JlIGFuZCA6OmFmdGVyIHRvIGJlIHJlcHJlc2VudGVkLgorCisgICAgICAg
IFdlIG5vdyBwYXNzIGEgU3R5bGVhYmxlIHRvIEluc3BlY3RvckFuaW1hdGlvbkFnZW50Ojp3aWxs
QXBwbHlLZXlmcmFtZUVmZmVjdCgpIGFuZCB0aGUgcHNldWRvSWQKKyAgICAgICAgaXMgc3RvcmVk
IG9udG8gdGhlIEFuaW1hdGlvbiBwcm90b2NvbCBvYmplY3QgYW5kIHBhc3NlZCB0byB0aGUgY2Fs
bGJhY2tzIHByb3ZpZGVkIHRvCisgICAgICAgIHJlcXVlc3RFZmZlY3RUYXJnZXQoKS4KKworICAg
ICAgICBTYWRseSwgd2Ugc3RpbGwgcmVseSBvbiBQc2V1ZG9FbGVtZW50LCBidXQgdGhpcyBwYXRj
aCBhdCBsZWFzdCByZW1vdmVzIGFsbCB1c2Ugb2YgUHNldWRvRWxlbWVudAorICAgICAgICBmcm9t
IEtleWZyYW1lRWZmZWN0IGFuZCBwdXNoZXMgaXQgZG93biB0byBJbnNwZWN0b3JET01BZ2VudCB3
aXRoIGEgbmV3IHN0YXRpYyBtZXRob2QKKyAgICAgICAgZWxlbWVudFRvUHVzaEZvclN0eWxlYWJs
ZSgpIHdoaWNoIHRoZSBuZXcgcHVzaFN0eWxlYWJsZVRvRnJvbnRlbmQoKSBhbmQgcHVzaFN0eWxl
YWJsZVBhdGhUb0Zyb250ZW5kKCkKKyAgICAgICAgbWV0aG9kcyB1c2UgdG8gdHVybiB0aGUgU3R5
bGVhYmxlIHRvIGFuIEVsZW1lbnQgb3IgUHNldWRvRWxlbWVudC4KKworICAgICAgICBJbiB0aGUg
ZnV0dXJlLCB3ZSB3b3VsZCBuZWVkIHRvIGZ1cnRoZXIgcmVtb3ZlIFBzZXVkb0VsZW1lbnQgZnJv
bSBXZWIgSW5zcGVjdG9yIGFuZCBleHBvc2Ugc29tZXRoaW5nCisgICAgICAgIHNpbWlsYXIgdG8g
U3R5bGVhYmxlIHRocm91Z2hvdXQgdGhlIGNvZGViYXNlLCBvciBmaW5kIHNvbWUgb3RoZXIgd2F5
IHRvIGVuY2Fwc3VsYXRlIGFuIEVsZW1lbnQgLyBQc2V1ZG9JZAorICAgICAgICBwYWlyLgorCisg
ICAgICAgICogYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OktleWZyYW1lRWZmZWN0OjphcHBseSk6CisgICAgICAgIChXZWJDb3JlOjpLZXlmcmFtZUVmZmVj
dDo6dGFyZ2V0RWxlbWVudE9yUHNldWRvRWxlbWVudCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
ICogYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpLZXlmcmFt
ZUVmZmVjdDo6dGFyZ2V0IGNvbnN0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6d2lsbEFwcGx5S2V5ZnJhbWVFZmZlY3RJbXBsKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OndpbGxBcHBseUtleWZyYW1lRWZmZWN0KToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckFuaW1hdGlvbkFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckFuaW1hdGlvbkFnZW50OjpyZXF1ZXN0RWZmZWN0VGFyZ2V0KToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckFuaW1hdGlvbkFnZW50Ojp3aWxsQXBwbHlLZXlmcmFtZUVm
ZmVjdCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBbmltYXRpb25BZ2Vu
dC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OnByb3RvY29sVmFsdWVGb3JQc2V1
ZG9JZCk6CisgICAgICAgIChXZWJDb3JlOjpwcm90b2NvbFZhbHVlRm9yUHNldWRvSWQpOiBEZWxl
dGVkLgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuaDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmVsZW1lbnRUb1B1c2hGb3JTdHlsZWFibGUpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yRE9NQWdlbnQ6OnB1c2hTdHlsZWFibGVUb0Zyb250ZW5kKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpwdXNoU3R5bGVhYmxlUGF0aFRvRnJvbnRlbmQpOgor
ICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuaDoKKwogMjAyMi0w
MS0xNCAgVHlsZXIgV2lsY29jayAgPHR5bGVyX3dAYXBwbGUuY29tPgogCiAgICAgICAgIEFYOiBN
b3ZlIG1ldGhvZHMgdGhhdCBhcmUgdW5uZWNlc3NhcmlseSBpbiBBY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0IHRvIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0IChwYXJ0IDEgb2YgbikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCmluZGV4IDVlMTQyZDY2MGMzOThiZTBiM2UzMmMzZjA2YjkyMzE4NzQ2Y2Jl
YWUuLmE0MWZmYWNhODg4ZjU4NDM2Y2E2ZGZiNWI2ODhmMDMxYmU4MDEzMDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIyLTAxLTE0ICBBbnRvaW5lIFF1aW50
ICA8Z3Jhb3V0c0B3ZWJraXQub3JnPgorCisgICAgICAgIFtXZWIgSW5zcGVjdG9yXSBHcmFwaGlj
cyB0YWIgc2hvdWxkIGRpc3BsYXkgcHNldWRvLWVsZW1lbnRzIGZvciBtb3JlIHRoYW4gOjpiZWZv
cmUgYW5kIDo6YWZ0ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzNTIzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFVzZSB0aGUgcHNldWRvSWQgcmV0dXJuZWQgZnJvbSBBbmltYXRpb24ucmVxdWVzdEVm
ZmVjdFRhcmdldCgpIHRvIGRpc3BsYXkgcHNldWRvLWVsZW1lbnRzCisgICAgICAgIG90aGVyIHRo
YW4gOjpiZWZvcmUgb3IgOjphZnRlciBpbiB0aGUgR3JhcGhpY3MgdGFiLgorCisgICAgICAgICog
VXNlckludGVyZmFjZS9CYXNlL0RPTVV0aWxpdGllcy5qczoKKyAgICAgICAgKFdJLmxpbmtpZnlO
b2RlUmVmZXJlbmNlKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1RpbWVs
aW5lTWFuYWdlci5qczoKKyAgICAgICAgKFdJLlRpbWVsaW5lTWFuYWdlci5wcm90b3R5cGUuYW5p
bWF0aW9uVHJhY2tpbmdVcGRhdGVkKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01vZGVscy9B
bmltYXRpb24uanM6CisgICAgICAgIChXSS5BbmltYXRpb24ucHJvdG90eXBlLnJlcXVlc3RFZmZl
Y3RUYXJnZXQpOgorICAgICAgICAoV0kuQW5pbWF0aW9uLnByb3RvdHlwZS50YXJnZXRDaGFuZ2Vk
KToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01vZGVscy9NZWRpYVRpbWVsaW5lUmVjb3JkLmpz
OgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvQW5pbWF0aW9uQ29udGVudFZpZXcuanM6
CisgICAgICAgIChXSS5BbmltYXRpb25Db250ZW50Vmlldy5wcm90b3R5cGUuX3JlZnJlc2hTdWJ0
aXRsZSk6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9BbmltYXRpb25EZXRhaWxzU2lk
ZWJhclBhbmVsLmpzOgorICAgICAgICAoV0kuQW5pbWF0aW9uRGV0YWlsc1NpZGViYXJQYW5lbC5w
cm90b3R5cGUuX3JlZnJlc2hJZGVudGl0eVNlY3Rpb24pOgorCiAyMDIyLTAxLTEzICBFbGxpb3R0
IFdpbGxpYW1zICA8ZW13QGFwcGxlLmNvbT4KIAogICAgICAgICBbWENCdWlsZF0gQWRkICJwcm9k
dWN0IGRlcGVuZGVuY2llcyIgd2hpY2ggaW5mbHVlbmNlIHdvcmtzcGFjZSBidWlsZCBvcmRlcgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9Bbmlt
YXRpb24uanNvbiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvQW5p
bWF0aW9uLmpzb24KaW5kZXggMDI5NjUxMDdmNWI4ZjhlZTFiNDdkZjFlMzQxY2I4ZmYxZmJkZTY4
OS4uODBlMmM5ZmU1ZTViZGVmYjc1Y2Y1ZTcxYmYxYTBhYjRhZjRlZGM0OSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9BbmltYXRpb24uanNvbgor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL0FuaW1hdGlvbi5q
c29uCkBAIC02Nyw2ICs2Nyw3IEBACiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ0cmFja2lu
Z0FuaW1hdGlvbklkIiwgIiRyZWYiOiAiQW5pbWF0aW9uSWQiIH0sCiAgICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJhbmltYXRpb25TdGF0ZSIsICIkcmVmIjogIkFuaW1hdGlvblN0YXRlIiB9LAog
ICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibm9kZUlkIiwgIiRyZWYiOiAiRE9NLk5vZGVJZCIs
ICJvcHRpb25hbCI6IHRydWUgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInBzZXVkb0lk
IiwgIiRyZWYiOiAiQ1NTLlBzZXVkb0lkIiwgIm9wdGlvbmFsIjogdHJ1ZSB9LAogICAgICAgICAg
ICAgICAgIHsgIm5hbWUiOiAiYW5pbWF0aW9uTmFtZSIsICJ0eXBlIjogInN0cmluZyIsICJvcHRp
b25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJFcXVhbCB0byB0aGUgY29ycmVzcG9uZGluZyBg
YW5pbWF0aW9uLW5hbWVgIENTUyBwcm9wZXJ0eS4gU2hvdWxkIG5vdCBiZSBwcm92aWRlZCBpZiBg
dHJhbnNpdGlvblByb3BlcnR5YCBpcyBhbHNvIHByb3ZpZGVkLiIgfSwKICAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogInRyYW5zaXRpb25Qcm9wZXJ0eSIsICJ0eXBlIjogInN0cmluZyIsICJvcHRp
b25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJFcXVhbCB0byB0aGUgY29ycmVzcG9uZGluZyBg
dHJhbnNpdGlvbi1wcm9wZXJ0eWAgQ1NTIHByb3BlcnR5LiBTaG91bGQgbm90IGJlIHByb3ZpZGVk
IGlmIGBhbmltYXRpb25OYW1lYCBpcyBhbHNvIHByb3ZpZGVkLiIgfQogICAgICAgICAgICAgXQpA
QCAtODgsNyArODksOCBAQAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiYW5pbWF0aW9uSWQi
LCAiJHJlZiI6ICJBbmltYXRpb25JZCIgfQogICAgICAgICAgICAgXSwKICAgICAgICAgICAgICJy
ZXR1cm5zIjogWwotICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibm9kZUlkIiwgIiRyZWYiOiAi
RE9NLk5vZGVJZCIgfQorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibm9kZUlkIiwgIiRyZWYi
OiAiRE9NLk5vZGVJZCIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInBzZXVkb0lkIiwg
IiRyZWYiOiAiQ1NTLlBzZXVkb0lkIiwgIm9wdGlvbmFsIjogdHJ1ZSB9CiAgICAgICAgICAgICBd
CiAgICAgICAgIH0sCiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1h
dGlvbi9LZXlmcmFtZUVmZmVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJh
bWVFZmZlY3QuY3BwCmluZGV4IDY0ZGI1MjEzYzc2MTA4ZjQxOTA0YmQ3YmU2ZDUyZDQ1NWNlNzJj
ZTcuLjZjNTBjY2VlMGEwN2Y5MTBjNWVkNmY1M2ViNzdiYTIwZGQ0YjAzYWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmNwcApAQCAtNDgsNyArNDgsNiBAQAog
I2luY2x1ZGUgIktleWZyYW1lRWZmZWN0U3RhY2suaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAj
aW5jbHVkZSAiUHJvcGVydHlBbGxvd2xpc3QuaCIKLSNpbmNsdWRlICJQc2V1ZG9FbGVtZW50Lmgi
CiAjaW5jbHVkZSAiUmVuZGVyQm94LmgiCiAjaW5jbHVkZSAiUmVuZGVyQm94TW9kZWxPYmplY3Qu
aCIKICNpbmNsdWRlICJSZW5kZXJFbGVtZW50LmgiCkBAIC0xMjY1LDE5ICsxMjY0LDYgQEAgYm9v
bCBLZXlmcmFtZUVmZmVjdDo6dGFyZ2V0c1BzZXVkb0VsZW1lbnQoKSBjb25zdAogICAgIHJldHVy
biBtX3RhcmdldC5nZXQoKSAmJiBtX3BzZXVkb0lkICE9IFBzZXVkb0lkOjpOb25lOwogfQogCi1F
bGVtZW50KiBLZXlmcmFtZUVmZmVjdDo6dGFyZ2V0RWxlbWVudE9yUHNldWRvRWxlbWVudCgpIGNv
bnN0Ci17Ci0gICAgaWYgKG1fdGFyZ2V0KSB7Ci0gICAgICAgIGlmIChtX3BzZXVkb0lkID09IFBz
ZXVkb0lkOjpCZWZvcmUpCi0gICAgICAgICAgICByZXR1cm4gbV90YXJnZXQtPmJlZm9yZVBzZXVk
b0VsZW1lbnQoKTsKLQotICAgICAgICBpZiAobV9wc2V1ZG9JZCA9PSBQc2V1ZG9JZDo6QWZ0ZXIp
Ci0gICAgICAgICAgICByZXR1cm4gbV90YXJnZXQtPmFmdGVyUHNldWRvRWxlbWVudCgpOwotICAg
IH0KLQotICAgIHJldHVybiBtX3RhcmdldC5nZXQoKTsKLX0KLQogdm9pZCBLZXlmcmFtZUVmZmVj
dDo6c2V0VGFyZ2V0KFJlZlB0cjxFbGVtZW50PiYmIG5ld1RhcmdldCkKIHsKICAgICBpZiAobV90
YXJnZXQgPT0gbmV3VGFyZ2V0KQpAQCAtMTM3MSw3ICsxMzU3LDcgQEAgdm9pZCBLZXlmcmFtZUVm
ZmVjdDo6YXBwbHkoUmVuZGVyU3R5bGUmIHRhcmdldFN0eWxlLCBjb25zdCBTdHlsZTo6UmVzb2x1
dGlvbkNvbnQKICAgICBhdXRvIGNvbXB1dGVkVGltaW5nID0gZ2V0Q29tcHV0ZWRUaW1pbmcoc3Rh
cnRUaW1lKTsKICAgICBpZiAoIXN0YXJ0VGltZSkgewogICAgICAgICBtX3BoYXNlQXRMYXN0QXBw
bGljYXRpb24gPSBjb21wdXRlZFRpbWluZy5waGFzZTsKLSAgICAgICAgaWYgKGF1dG8qIHRhcmdl
dCA9IHRhcmdldEVsZW1lbnRPclBzZXVkb0VsZW1lbnQoKSkKKyAgICAgICAgaWYgKGF1dG8gdGFy
Z2V0ID0gdGFyZ2V0U3R5bGVhYmxlKCkpCiAgICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OndpbGxBcHBseUtleWZyYW1lRWZmZWN0KCp0YXJnZXQsICp0aGlzLCBjb21wdXRlZFRp
bWluZyk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5
ZnJhbWVFZmZlY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5o
CmluZGV4IDI1NDQwOWM5Y2FmNDA3MjkzYjg2YjE0ODYxZDg4YTMyNWVhNTFkOTAuLjM0OWJhYjg1
YmIyNDViODcyMDBkY2VhOTY5MWE4YWU2MGIwMzRjOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1h
dGlvbi9LZXlmcmFtZUVmZmVjdC5oCkBAIC0xMDUsNyArMTA1LDYgQEAgcHVibGljOgogICAgIGNv
bnN0IFZlY3RvcjxQYXJzZWRLZXlmcmFtZT4mIHBhcnNlZEtleWZyYW1lcygpIGNvbnN0IHsgcmV0
dXJuIG1fcGFyc2VkS2V5ZnJhbWVzOyB9CiAKICAgICBFbGVtZW50KiB0YXJnZXQoKSBjb25zdCB7
IHJldHVybiBtX3RhcmdldC5nZXQoKTsgfQotICAgIEVsZW1lbnQqIHRhcmdldEVsZW1lbnRPclBz
ZXVkb0VsZW1lbnQoKSBjb25zdDsKICAgICB2b2lkIHNldFRhcmdldChSZWZQdHI8RWxlbWVudD4m
Jik7CiAKICAgICBib29sIHRhcmdldHNQc2V1ZG9FbGVtZW50KCkgY29uc3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCmlu
ZGV4IDNjOTc4ZTNmNDQyMWNmMzVhMjA2MWRmY2UwZDFlMGFhZTUxMTM0OWEuLmZhOTJhZGNlYTll
Zjg1NzJlMmFhODUzYTIwNzJjYzY0NWZhYzEwZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCkBAIC0xMTIwLDcgKzEx
MjAsNyBAQCBib29sIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aXNXZWJHTFByb2dyYW1IaWdo
bGlnaHRlZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cwogfQogI2VuZGlmCiAKLXZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsQXBwbHlLZXlmcmFtZUVmZmVjdEltcGwoSW5zdHJ1bWVu
dGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgRWxlbWVudCYgdGFyZ2V0LCBLZXlmcmFt
ZUVmZmVjdCYgZWZmZWN0LCBDb21wdXRlZEVmZmVjdFRpbWluZyBjb21wdXRlZFRpbWluZykKK3Zv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsQXBwbHlLZXlmcmFtZUVmZmVjdEltcGwo
SW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgY29uc3QgU3R5bGVhYmxl
JiB0YXJnZXQsIEtleWZyYW1lRWZmZWN0JiBlZmZlY3QsIENvbXB1dGVkRWZmZWN0VGltaW5nIGNv
bXB1dGVkVGltaW5nKQogewogICAgIGlmIChhdXRvKiBhbmltYXRpb25BZ2VudCA9IGluc3RydW1l
bnRpbmdBZ2VudHMudHJhY2tpbmdBbmltYXRpb25BZ2VudCgpKQogICAgICAgICBhbmltYXRpb25B
Z2VudC0+d2lsbEFwcGx5S2V5ZnJhbWVFZmZlY3QodGFyZ2V0LCBlZmZlY3QsIGNvbXB1dGVkVGlt
aW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0
cnVtZW50YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24uaAppbmRleCA4MmFjY2VkMjBjZmQ1MTMxYjI1MDJmMDk5YTljNGZhMmZkZDYxNmVi
Li43NzdhN2VkNGMwODJiZDI0ZWY3MTk5NTZlMmE2NTM3NDRlMDc1NWYzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCkBAIC05
OSw2ICs5OSw4IEBAIGNsYXNzIFdlYktpdE5hbWVkRmxvdzsKIGNsYXNzIFdlYlNvY2tldENoYW5u
ZWw7CiBjbGFzcyBXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZTsKIAorc3RydWN0IFN0eWxlYWJs
ZTsKKwogI2lmIEVOQUJMRShXRUJHTCkKIGNsYXNzIFdlYkdMUHJvZ3JhbTsKICNlbmRpZgpAQCAt
Mjk5LDcgKzMwMSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBpc1dlYkdMUHJvZ3JhbUhp
Z2hsaWdodGVkKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmLCBXZWJHTFByb2dyYW0mKTsKICNl
bmRpZgogCi0gICAgc3RhdGljIHZvaWQgd2lsbEFwcGx5S2V5ZnJhbWVFZmZlY3QoRWxlbWVudCYs
IEtleWZyYW1lRWZmZWN0JiwgQ29tcHV0ZWRFZmZlY3RUaW1pbmcpOworICAgIHN0YXRpYyB2b2lk
IHdpbGxBcHBseUtleWZyYW1lRWZmZWN0KGNvbnN0IFN0eWxlYWJsZSYsIEtleWZyYW1lRWZmZWN0
JiwgQ29tcHV0ZWRFZmZlY3RUaW1pbmcpOwogICAgIHN0YXRpYyB2b2lkIGRpZENoYW5nZVdlYkFu
aW1hdGlvbk5hbWUoV2ViQW5pbWF0aW9uJik7CiAgICAgc3RhdGljIHZvaWQgZGlkU2V0V2ViQW5p
bWF0aW9uRWZmZWN0KFdlYkFuaW1hdGlvbiYpOwogICAgIHN0YXRpYyB2b2lkIGRpZENoYW5nZVdl
YkFuaW1hdGlvbkVmZmVjdFRpbWluZyhXZWJBbmltYXRpb24mKTsKQEAgLTUwMiw3ICs1MDQsNyBA
QCBwcml2YXRlOgogICAgIHN0YXRpYyBib29sIGlzV2ViR0xQcm9ncmFtSGlnaGxpZ2h0ZWRJbXBs
KEluc3RydW1lbnRpbmdBZ2VudHMmLCBXZWJHTFByb2dyYW0mKTsKICNlbmRpZgogCi0gICAgc3Rh
dGljIHZvaWQgd2lsbEFwcGx5S2V5ZnJhbWVFZmZlY3RJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMm
LCBFbGVtZW50JiwgS2V5ZnJhbWVFZmZlY3QmLCBDb21wdXRlZEVmZmVjdFRpbWluZyk7CisgICAg
c3RhdGljIHZvaWQgd2lsbEFwcGx5S2V5ZnJhbWVFZmZlY3RJbXBsKEluc3RydW1lbnRpbmdBZ2Vu
dHMmLCBjb25zdCBTdHlsZWFibGUmLCBLZXlmcmFtZUVmZmVjdCYsIENvbXB1dGVkRWZmZWN0VGlt
aW5nKTsKICAgICBzdGF0aWMgdm9pZCBkaWRDaGFuZ2VXZWJBbmltYXRpb25OYW1lSW1wbChJbnN0
cnVtZW50aW5nQWdlbnRzJiwgV2ViQW5pbWF0aW9uJik7CiAgICAgc3RhdGljIHZvaWQgZGlkU2V0
V2ViQW5pbWF0aW9uRWZmZWN0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgV2ViQW5pbWF0aW9u
Jik7CiAgICAgc3RhdGljIHZvaWQgZGlkQ2hhbmdlV2ViQW5pbWF0aW9uRWZmZWN0VGltaW5nSW1w
bChJbnN0cnVtZW50aW5nQWdlbnRzJiwgV2ViQW5pbWF0aW9uJik7CkBAIC0xNDU1LDEwICsxNDU3
LDEwIEBAIGlubGluZSBib29sIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aXNXZWJHTFByb2dy
YW1IaWdobGlnaHRlZChXZWJHTFJlbmRlcmluZ0NvCiB9CiAjZW5kaWYKIAotaW5saW5lIHZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsQXBwbHlLZXlmcmFtZUVmZmVjdChFbGVtZW50
JiB0YXJnZXQsIEtleWZyYW1lRWZmZWN0JiBlZmZlY3QsIENvbXB1dGVkRWZmZWN0VGltaW5nIGNv
bXB1dGVkVGltaW5nKQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxs
QXBwbHlLZXlmcmFtZUVmZmVjdChjb25zdCBTdHlsZWFibGUmIHRhcmdldCwgS2V5ZnJhbWVFZmZl
Y3QmIGVmZmVjdCwgQ29tcHV0ZWRFZmZlY3RUaW1pbmcgY29tcHV0ZWRUaW1pbmcpCiB7CiAgICAg
RkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7Ci0gICAgaWYgKGF1dG8qIGFnZW50
cyA9IGluc3RydW1lbnRpbmdBZ2VudHModGFyZ2V0LmRvY3VtZW50KCkpKQorICAgIGlmIChhdXRv
KiBhZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzKHRhcmdldC5lbGVtZW50LmRvY3VtZW50KCkp
KQogICAgICAgICB3aWxsQXBwbHlLZXlmcmFtZUVmZmVjdEltcGwoKmFnZW50cywgdGFyZ2V0LCBl
ZmZlY3QsIGNvbXB1dGVkVGltaW5nKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBbmltYXRpb25BZ2VudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFuaW1hdGlvbkFnZW50LmNwcAppbmRleCA1
ZTVjZGY2NzAxNDAwYzEwMDIwOTQxODU4NmY2MjAwZmQzMDk1M2Q2Li4zMzRmZTAwMzMwOThiODQy
OWNhMDUyOWE1MTc5NjJkNTc4OGVjNzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckFuaW1hdGlvbkFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFuaW1hdGlvbkFnZW50LmNwcApAQCAtMzgs
NiArMzgsNyBAQAogI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiRmlsbE1vZGUuaCIKICNp
bmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkluc3BlY3RvckNTU0FnZW50LmgiCiAjaW5jbHVk
ZSAiSW5zcGVjdG9yRE9NQWdlbnQuaCIKICNpbmNsdWRlICJJbnN0cnVtZW50aW5nQWdlbnRzLmgi
CiAjaW5jbHVkZSAiSlNFeGVjU3RhdGUuaCIKQEAgLTQ3LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJQ
YWdlLmgiCiAjaW5jbHVkZSAiUGxheWJhY2tEaXJlY3Rpb24uaCIKICNpbmNsdWRlICJSZW5kZXJF
bGVtZW50LmgiCisjaW5jbHVkZSAiU3R5bGVhYmxlLmgiCiAjaW5jbHVkZSAiVGltaW5nRnVuY3Rp
b24uaCIKICNpbmNsdWRlICJXZWJBbmltYXRpb24uaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9JZGVudGlmaWVyc0ZhY3RvcnkuaD4KQEAgLTI3OSw3ICsyODEsNyBAQCBQcm90b2NvbDo6RXJy
b3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JBbmltYXRpb25BZ2VudDo6ZGlzYWJsZSgpCiAgICAg
cmV0dXJuIHsgfTsKIH0KIAotUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8UHJvdG9jb2w6OkRPTTo6
Tm9kZUlkPiBJbnNwZWN0b3JBbmltYXRpb25BZ2VudDo6cmVxdWVzdEVmZmVjdFRhcmdldChjb25z
dCBQcm90b2NvbDo6QW5pbWF0aW9uOjpBbmltYXRpb25JZCYgYW5pbWF0aW9uSWQpCitQcm90b2Nv
bDo6RXJyb3JTdHJpbmdPcjxzdGQ6OnR1cGxlPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9k
ZUlkLCBzdGQ6Om9wdGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6UHNldWRvSWQ+Pj4g
SW5zcGVjdG9yQW5pbWF0aW9uQWdlbnQ6OnJlcXVlc3RFZmZlY3RUYXJnZXQoY29uc3QgUHJvdG9j
b2w6OkFuaW1hdGlvbjo6QW5pbWF0aW9uSWQmIGFuaW1hdGlvbklkKQogewogICAgIFByb3RvY29s
OjpFcnJvclN0cmluZyBlcnJvclN0cmluZzsKIApAQCAtMjk3LDExICsyOTksMTQgQEAgUHJvdG9j
b2w6OkVycm9yU3RyaW5nT3I8UHJvdG9jb2w6OkRPTTo6Tm9kZUlkPiBJbnNwZWN0b3JBbmltYXRp
b25BZ2VudDo6cmVxdWVzdEUKIAogICAgIGF1dG8mIGtleWZyYW1lRWZmZWN0ID0gZG93bmNhc3Q8
S2V5ZnJhbWVFZmZlY3Q+KCplZmZlY3QpOwogCi0gICAgYXV0byogdGFyZ2V0ID0ga2V5ZnJhbWVF
ZmZlY3QudGFyZ2V0RWxlbWVudE9yUHNldWRvRWxlbWVudCgpOworICAgIGF1dG8gdGFyZ2V0ID0g
a2V5ZnJhbWVFZmZlY3QudGFyZ2V0U3R5bGVhYmxlKCk7CiAgICAgaWYgKCF0YXJnZXQpCiAgICAg
ICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiQW5pbWF0aW9uIGZvciBnaXZlbiBhbmltYXRpb25J
ZCBkb2VzIG5vdCBoYXZlIGEgdGFyZ2V0Il9zKTsKIAotICAgIHJldHVybiBkb21BZ2VudC0+cHVz
aE5vZGVQYXRoVG9Gcm9udGVuZChlcnJvclN0cmluZywgdGFyZ2V0KTsKKyAgICBhdXRvIHBzZXVk
b0lkID0gSW5zcGVjdG9yQ1NTQWdlbnQ6OnByb3RvY29sVmFsdWVGb3JQc2V1ZG9JZCh0YXJnZXQt
PnBzZXVkb0lkKTsKKworICAgIHN0ZDo6dHVwbGU8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpO
b2RlSWQsIHN0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpQc2V1ZG9JZD4+
IHJlc3VsdCA9IHsgZG9tQWdlbnQtPnB1c2hTdHlsZWFibGVQYXRoVG9Gcm9udGVuZChlcnJvclN0
cmluZywgKnRhcmdldCksIHBzZXVkb0lkIH07CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogUHJv
dG9jb2w6OkVycm9yU3RyaW5nT3I8UmVmPFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+
PiBJbnNwZWN0b3JBbmltYXRpb25BZ2VudDo6cmVzb2x2ZUFuaW1hdGlvbihjb25zdCBQcm90b2Nv
bDo6QW5pbWF0aW9uOjpBbmltYXRpb25JZCYgYW5pbWF0aW9uSWQsIGNvbnN0IFN0cmluZyYgb2Jq
ZWN0R3JvdXApCkBAIC0zNzEsNyArMzc2LDcgQEAgc3RhdGljIGJvb2wgaXNEZWxheWVkKENvbXB1
dGVkRWZmZWN0VGltaW5nJiBjb21wdXRlZFRpbWluZykKICAgICByZXR1cm4gY29tcHV0ZWRUaW1p
bmcubG9jYWxUaW1lLnZhbHVlKCkgPCAoY29tcHV0ZWRUaW1pbmcuZW5kVGltZSAtIGNvbXB1dGVk
VGltaW5nLmFjdGl2ZUR1cmF0aW9uKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JBbmltYXRpb25BZ2Vu
dDo6d2lsbEFwcGx5S2V5ZnJhbWVFZmZlY3QoRWxlbWVudCYgdGFyZ2V0LCBLZXlmcmFtZUVmZmVj
dCYga2V5ZnJhbWVFZmZlY3QsIENvbXB1dGVkRWZmZWN0VGltaW5nIGNvbXB1dGVkVGltaW5nKQor
dm9pZCBJbnNwZWN0b3JBbmltYXRpb25BZ2VudDo6d2lsbEFwcGx5S2V5ZnJhbWVFZmZlY3QoY29u
c3QgU3R5bGVhYmxlJiB0YXJnZXQsIEtleWZyYW1lRWZmZWN0JiBrZXlmcmFtZUVmZmVjdCwgQ29t
cHV0ZWRFZmZlY3RUaW1pbmcgY29tcHV0ZWRUaW1pbmcpCiB7CiAgICAgYXV0byogYW5pbWF0aW9u
ID0ga2V5ZnJhbWVFZmZlY3QuYW5pbWF0aW9uKCk7CiAgICAgaWYgKCFpczxEZWNsYXJhdGl2ZUFu
aW1hdGlvbj4oYW5pbWF0aW9uKSkKQEAgLTQyMSwxMCArNDI2LDEzIEBAIHZvaWQgSW5zcGVjdG9y
QW5pbWF0aW9uQWdlbnQ6OndpbGxBcHBseUtleWZyYW1lRWZmZWN0KEVsZW1lbnQmIHRhcmdldCwg
S2V5ZnJhbWVFCiAKICAgICBpZiAoZW5zdXJlUmVzdWx0LmlzTmV3RW50cnkpIHsKICAgICAgICAg
aWYgKGF1dG8qIGRvbUFnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLnBlcnNpc3RlbnRET01B
Z2VudCgpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBub2RlSWQgPSBkb21BZ2VudC0+cHVzaE5v
ZGVUb0Zyb250ZW5kKCZ0YXJnZXQpKQorICAgICAgICAgICAgaWYgKGF1dG8gbm9kZUlkID0gZG9t
QWdlbnQtPnB1c2hTdHlsZWFibGVUb0Zyb250ZW5kKHRhcmdldCkpCiAgICAgICAgICAgICAgICAg
ZXZlbnQtPnNldE5vZGVJZChub2RlSWQpOwogICAgICAgICB9CiAKKyAgICAgICAgaWYgKGF1dG8g
cHNldWRvSWQgPSBJbnNwZWN0b3JDU1NBZ2VudDo6cHJvdG9jb2xWYWx1ZUZvclBzZXVkb0lkKHRh
cmdldC5wc2V1ZG9JZCkpCisgICAgICAgICAgICBldmVudC0+c2V0UHNldWRvSWQoKnBzZXVkb0lk
KTsKKwogICAgICAgICBpZiAoaXM8Q1NTQW5pbWF0aW9uPihhbmltYXRpb24pKQogICAgICAgICAg
ICAgZXZlbnQtPnNldEFuaW1hdGlvbk5hbWUoZG93bmNhc3Q8Q1NTQW5pbWF0aW9uPigqYW5pbWF0
aW9uKS5hbmltYXRpb25OYW1lKCkpOwogICAgICAgICBlbHNlIGlmIChpczxDU1NUcmFuc2l0aW9u
PihhbmltYXRpb24pKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JBbmltYXRpb25BZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JBbmltYXRpb25BZ2VudC5oCmluZGV4IGIzOTA4YzNkMjhkMTM2OWRmNmVj
MDliMjRlMzJkOGU0OWYxMjdmM2UuLjg4MWU0NDlmOTZkYzQ0MDZiZjM1NzdhM2YzZTJjNWIwNzVh
OWQ1M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yQW5pbWF0aW9uQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckFuaW1hdGlvbkFnZW50LmgKQEAgLTQ0LDYgKzQ0LDggQEAgY2xhc3MgS2V5ZnJh
bWVFZmZlY3Q7CiBjbGFzcyBQYWdlOwogY2xhc3MgV2ViQW5pbWF0aW9uOwogCitzdHJ1Y3QgU3R5
bGVhYmxlOworCiBjbGFzcyBJbnNwZWN0b3JBbmltYXRpb25BZ2VudCBmaW5hbCA6IHB1YmxpYyBJ
bnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3I6OkFuaW1hdGlvbkJhY2tlbmREaXNw
YXRjaGVySGFuZGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9yQW5pbWF0
aW9uQWdlbnQpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNTgsMTMgKzYwLDEz
IEBAIHB1YmxpYzoKICAgICAvLyBBbmltYXRpb25CYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIKICAg
ICBJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IGVuYWJsZSgpOwogICAg
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gZGlzYWJsZSgpOwotICAg
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8SW5zcGVjdG9yOjpQcm90b2NvbDo6
RE9NOjpOb2RlSWQ+IHJlcXVlc3RFZmZlY3RUYXJnZXQoY29uc3QgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6QW5pbWF0aW9uOjpBbmltYXRpb25JZCYpOworICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVy
cm9yU3RyaW5nT3I8c3RkOjp0dXBsZTxJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGVJZCwg
c3RkOjpvcHRpb25hbDxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlBzZXVkb0lkPj4+IHJlcXVl
c3RFZmZlY3RUYXJnZXQoY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6QW5pbWF0aW9uOjpBbmlt
YXRpb25JZCYpOwogICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8UmVmPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4+IHJlc29sdmVBbmltYXRp
b24oY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6QW5pbWF0aW9uOjpBbmltYXRpb25JZCYsIGNv
bnN0IFN0cmluZyYgb2JqZWN0R3JvdXApOwogICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9y
U3RyaW5nT3I8dm9pZD4gc3RhcnRUcmFja2luZygpOwogICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkVycm9yU3RyaW5nT3I8dm9pZD4gc3RvcFRyYWNraW5nKCk7CiAKICAgICAvLyBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb24KLSAgICB2b2lkIHdpbGxBcHBseUtleWZyYW1lRWZmZWN0KEVsZW1lbnQm
LCBLZXlmcmFtZUVmZmVjdCYsIENvbXB1dGVkRWZmZWN0VGltaW5nKTsKKyAgICB2b2lkIHdpbGxB
cHBseUtleWZyYW1lRWZmZWN0KGNvbnN0IFN0eWxlYWJsZSYsIEtleWZyYW1lRWZmZWN0JiwgQ29t
cHV0ZWRFZmZlY3RUaW1pbmcpOwogICAgIHZvaWQgZGlkQ2hhbmdlV2ViQW5pbWF0aW9uTmFtZShX
ZWJBbmltYXRpb24mKTsKICAgICB2b2lkIGRpZFNldFdlYkFuaW1hdGlvbkVmZmVjdChXZWJBbmlt
YXRpb24mKTsKICAgICB2b2lkIGRpZENoYW5nZVdlYkFuaW1hdGlvbkVmZmVjdFRpbWluZyhXZWJB
bmltYXRpb24mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yQ1NTQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JDU1NBZ2VudC5jcHAKaW5kZXggNzlhMzI0NTBhZDQ2ZDRhMWRkZDczZTljOTFiNjVm
ZDhkYzMzYjY3NS4uY2MzZjViMzgyY2JjYzM3NmM1NDRiOTI5MDk2ODI3NGFjMTNiZmJkOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2Vu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NB
Z2VudC5jcHAKQEAgLTQ0MCw3ICs0NDAsNyBAQCBib29sIEluc3BlY3RvckNTU0FnZW50Ojpmb3Jj
ZVBzZXVkb1N0YXRlKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQsIENTU1NlbGVjdG9yOjpQcwogICAg
IH0KIH0KIAotc3RhdGljIHN0ZDo6b3B0aW9uYWw8UHJvdG9jb2w6OkNTUzo6UHNldWRvSWQ+IHBy
b3RvY29sVmFsdWVGb3JQc2V1ZG9JZChQc2V1ZG9JZCBwc2V1ZG9JZCkKK3N0ZDo6b3B0aW9uYWw8
UHJvdG9jb2w6OkNTUzo6UHNldWRvSWQ+IEluc3BlY3RvckNTU0FnZW50Ojpwcm90b2NvbFZhbHVl
Rm9yUHNldWRvSWQoUHNldWRvSWQgcHNldWRvSWQpCiB7CiAgICAgc3dpdGNoIChwc2V1ZG9JZCkg
ewogICAgIGNhc2UgUHNldWRvSWQ6OkZpcnN0TGluZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuaAppbmRleCBhNGM2MTI3ZDBhMmNm
ZDRkY2M0ZjVkZTg2YjA2OTAyOTgzZGE3NmU4Li40ZTM1ZTlhNWMyYmY4Mjk3Y2Y1M2NhNThjMjEw
MWRmZjdlZDBjZTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckNTU0FnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JDU1NBZ2VudC5oCkBAIC04NSw2ICs4NSw4IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgQ1NTU3R5bGVSdWxlKiBhc0NTU1N0eWxlUnVsZShDU1NSdWxlJik7CiAgICAgc3RhdGljIHN0
ZDo6b3B0aW9uYWw8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpMYXlvdXRDb250ZXh0VHlwZT4g
bGF5b3V0Q29udGV4dFR5cGVGb3JSZW5kZXJlcihSZW5kZXJPYmplY3QqKTsKIAorICAgIHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6UHNldWRvSWQ+IHByb3Rv
Y29sVmFsdWVGb3JQc2V1ZG9JZChQc2V1ZG9JZCk7CisKICAgICAvLyBJbnNwZWN0b3JBZ2VudEJh
c2UKICAgICB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250
ZW5kUm91dGVyKiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciopOwogICAgIHZvaWQgd2ls
bERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29uKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9N
QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01B
Z2VudC5jcHAKaW5kZXggN2E3OTBiYjIzYzhmMzdhZjU3ZTQyODRiMzY3Y2FkOWQ2NzlhNDM0Zi4u
ZDdlM2FiYzdkNjFkNDRjY2Q2MjVhZmFkYjMwZTEwNmE0ODEwY2RmNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAKQEAg
LTEwNCw2ICsxMDQsNyBAQAogI2luY2x1ZGUgIlN0eWxlUHJvcGVydGllcy5oIgogI2luY2x1ZGUg
IlN0eWxlUmVzb2x2ZXIuaCIKICNpbmNsdWRlICJTdHlsZVNoZWV0TGlzdC5oIgorI2luY2x1ZGUg
IlN0eWxlYWJsZS5oIgogI2luY2x1ZGUgIlRleHQuaCIKICNpbmNsdWRlICJUZXh0Tm9kZVRyYXZl
cnNhbC5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCkBAIC01MzgsNiArNTM5LDI0IEBAIHZvaWQgSW5z
cGVjdG9yRE9NQWdlbnQ6OmRpc2NhcmRCaW5kaW5ncygpCiAgICAgbV9jaGlsZHJlblJlcXVlc3Rl
ZC5jbGVhcigpOwogfQogCitzdGF0aWMgRWxlbWVudCogZWxlbWVudFRvUHVzaEZvclN0eWxlYWJs
ZShjb25zdCBTdHlsZWFibGUmIHN0eWxlYWJsZSkKK3sKKyAgICAvLyBGSVhNRTogV2Ugd2FudCB0
byBnZXQgcmlkIG9mIFBzZXVkb0VsZW1lbnQuCisgICAgYXV0byogZWxlbWVudCA9ICZzdHlsZWFi
bGUuZWxlbWVudDsKKworICAgIGlmIChzdHlsZWFibGUucHNldWRvSWQgPT0gUHNldWRvSWQ6OkJl
Zm9yZSkKKyAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQtPmJlZm9yZVBzZXVkb0VsZW1lbnQoKTsK
KyAgICBlbHNlIGlmIChzdHlsZWFibGUucHNldWRvSWQgPT0gUHNldWRvSWQ6OkFmdGVyKQorICAg
ICAgICBlbGVtZW50ID0gZWxlbWVudC0+YWZ0ZXJQc2V1ZG9FbGVtZW50KCk7CisKKyAgICByZXR1
cm4gZWxlbWVudDsKK30KKworUHJvdG9jb2w6OkRPTTo6Tm9kZUlkIEluc3BlY3RvckRPTUFnZW50
OjpwdXNoU3R5bGVhYmxlVG9Gcm9udGVuZChjb25zdCBTdHlsZWFibGUmIHN0eWxlYWJsZSkKK3sK
KyAgICByZXR1cm4gcHVzaE5vZGVUb0Zyb250ZW5kKGVsZW1lbnRUb1B1c2hGb3JTdHlsZWFibGUo
c3R5bGVhYmxlKSk7Cit9CisKIFByb3RvY29sOjpET006Ok5vZGVJZCBJbnNwZWN0b3JET01BZ2Vu
dDo6cHVzaE5vZGVUb0Zyb250ZW5kKE5vZGUqIG5vZGVUb1B1c2gpCiB7CiAgICAgaWYgKCFub2Rl
VG9QdXNoKQpAQCAtNjM3LDYgKzY1NiwxMiBAQCBQcm90b2NvbDo6RE9NOjpOb2RlSWQgSW5zcGVj
dG9yRE9NQWdlbnQ6OnB1c2hOb2RlUGF0aFRvRnJvbnRlbmQoTm9kZSogbm9kZVRvUHVzaAogICAg
IHJldHVybiBwdXNoTm9kZVBhdGhUb0Zyb250ZW5kKGlnbm9yZWQsIG5vZGVUb1B1c2gpOwogfQog
CitQcm90b2NvbDo6RE9NOjpOb2RlSWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnB1c2hTdHlsZWFibGVQ
YXRoVG9Gcm9udGVuZChQcm90b2NvbDo6RXJyb3JTdHJpbmcgZXJyb3JTdHJpbmcsIGNvbnN0IFN0
eWxlYWJsZSYgc3R5bGVhYmxlKQoreworICAgIGF1dG8qIGVsZW1lbnQgPSBlbGVtZW50VG9QdXNo
Rm9yU3R5bGVhYmxlKHN0eWxlYWJsZSk7CisgICAgcmV0dXJuIHB1c2hOb2RlUGF0aFRvRnJvbnRl
bmQoZXJyb3JTdHJpbmcsIGVsZW1lbnQgPyBlbGVtZW50IDogJnN0eWxlYWJsZS5lbGVtZW50KTsK
K30KKwogUHJvdG9jb2w6OkRPTTo6Tm9kZUlkIEluc3BlY3RvckRPTUFnZW50OjpwdXNoTm9kZVBh
dGhUb0Zyb250ZW5kKFByb3RvY29sOjpFcnJvclN0cmluZyBlcnJvclN0cmluZywgTm9kZSogbm9k
ZVRvUHVzaCkKIHsKICAgICBBU1NFUlQobm9kZVRvUHVzaCk7ICAvLyBJbnZhbGlkIGlucHV0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFn
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50
LmgKaW5kZXggNGViNjNiNzk4NTcyMWFjNmVhNjAwM2M4ODQ5ODkxNzljNzhlZGEwMC4uYTliNDRi
NWY2MDdiMmQwZGIyMWVlM2Q1YWJiOTllOTdlZGY1NGY1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuaApAQCAtNzUsNiArNzUs
OCBAQCBjbGFzcyBQc2V1ZG9FbGVtZW50OwogY2xhc3MgUmV2YWxpZGF0ZVN0eWxlQXR0cmlidXRl
VGFzazsKIGNsYXNzIFNoYWRvd1Jvb3Q7CiAKK3N0cnVjdCBTdHlsZWFibGU7CisKIGNsYXNzIElu
c3BlY3RvckRPTUFnZW50IGZpbmFsIDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGlj
IEluc3BlY3Rvcjo6RE9NQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKICAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShJbnNwZWN0b3JET01BZ2VudCk7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CkBAIC0xODQsNiArMTg2LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBzdHlsZUF0dHJpYnV0
ZUludmFsaWRhdGVkKGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGVsZW1lbnRzKTsKIAorICAgIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZUlkIHB1c2hTdHlsZWFibGVUb0Zyb250ZW5kKGNv
bnN0IFN0eWxlYWJsZSYpOworICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZUlkIHB1
c2hTdHlsZWFibGVQYXRoVG9Gcm9udGVuZChJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmlu
ZywgY29uc3QgU3R5bGVhYmxlJik7CiAgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpOb2Rl
SWQgcHVzaE5vZGVUb0Zyb250ZW5kKE5vZGUqKTsKICAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpE
T006Ok5vZGVJZCBwdXNoTm9kZVRvRnJvbnRlbmQoSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JT
dHJpbmcmLCBJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGVJZCBkb2N1bWVudE5vZGVJZCwg
Tm9kZSopOwogICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZUlkIHB1c2hOb2RlUGF0
aFRvRnJvbnRlbmQoTm9kZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvQmFzZS9ET01VdGlsaXRpZXMuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9CYXNlL0RPTVV0aWxpdGllcy5qcwppbmRleCA0MmIzOWExMGRiNWUzYTQ3
MjFkNTJmOWViMzJiNjAxZmUzZjMyMTI5Li41NmExMzlhMGE0M2UwY2Y3YTUyMjcxOGE5ZjNmNjIx
OTBiZjYwYmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9CYXNlL0RPTVV0aWxpdGllcy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9CYXNlL0RPTVV0aWxpdGllcy5qcwpAQCAtNjAsNiArNjAsMTAgQEAgV0kubGlua2lm
eUFjY2Vzc2liaWxpdHlOb2RlUmVmZXJlbmNlID0gZnVuY3Rpb24obm9kZSkKIFdJLmxpbmtpZnlO
b2RlUmVmZXJlbmNlID0gZnVuY3Rpb24obm9kZSwgb3B0aW9ucyA9IHt9KQogewogICAgIGxldCBk
aXNwbGF5TmFtZSA9IG5vZGUuZGlzcGxheU5hbWU7CisKKyAgICBpZiAoIW5vZGUuaXNQc2V1ZG9F
bGVtZW50KCkgJiYgb3B0aW9ucy5wc2V1ZG9JZCkKKyAgICAgICAgZGlzcGxheU5hbWUgPSBgOjok
e29wdGlvbnMucHNldWRvSWR9YDsKKwogICAgIGlmICghaXNOYU4ob3B0aW9ucy5tYXhMZW5ndGgp
KQogICAgICAgICBkaXNwbGF5TmFtZSA9IGRpc3BsYXlOYW1lLnRydW5jYXRlKG9wdGlvbnMubWF4
TGVuZ3RoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvQ29udHJvbGxlcnMvVGltZWxpbmVNYW5hZ2VyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvVGltZWxpbmVNYW5hZ2VyLmpzCmluZGV4IGJjZGM5
YjU4Njk2ZWMwMjA5YjkxOWIzOGFkZGM1ZjQ0YmZjYWVjY2QuLjdmMzIwMGRiMmRlYTUwZjBmMTI2
ODQ1N2FiYmE3ZGEwNzAwZWE0NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1RpbWVsaW5lTWFuYWdlci5qcworKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9UaW1lbGluZU1hbmFnZXIu
anMKQEAgLTc1OSw2ICs3NTksNyBAQCBXSS5UaW1lbGluZU1hbmFnZXIgPSBjbGFzcyBUaW1lbGlu
ZU1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgaWYgKCFyZWNvcmQpIHsKICAgICAg
ICAgICAgIGxldCBkZXRhaWxzID0gewogICAgICAgICAgICAgICAgIHRyYWNraW5nQW5pbWF0aW9u
SWQ6IGV2ZW50LnRyYWNraW5nQW5pbWF0aW9uSWQsCisgICAgICAgICAgICAgICAgcHNldWRvSWQ6
IGV2ZW50LnBzZXVkb0lkCiAgICAgICAgICAgICB9OwogCiAgICAgICAgICAgICBsZXQgZXZlbnRU
eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9k
ZWxzL0FuaW1hdGlvbi5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01v
ZGVscy9BbmltYXRpb24uanMKaW5kZXggZTY2ZTlhMjhlMGM0NGIwOWM5ZGI2MTI3OTM2NzNiYzBk
Y2MyNGE3Ni4uMzgyNmE2YWFmYmRmNjUxNWZjN2E4ZjEwOGM5MDk0Nzg0ODk4MmEwOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0FuaW1hdGlv
bi5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQW5p
bWF0aW9uLmpzCkBAIC00MSw2ICs0MSw3IEBAIFdJLkFuaW1hdGlvbiA9IGNsYXNzIEFuaW1hdGlv
biBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICB0aGlzLl9iYWNrdHJhY2UgPSBiYWNrdHJhY2Ug
fHwgW107CiAKICAgICAgICAgdGhpcy5fZWZmZWN0VGFyZ2V0ID0gdW5kZWZpbmVkOworICAgICAg
ICB0aGlzLl9lZmZlY3RQc2V1ZG9JZCA9IHVuZGVmaW5lZDsKICAgICAgICAgdGhpcy5fcmVxdWVz
dEVmZmVjdFRhcmdldENhbGxiYWNrcyA9IG51bGw7CiAgICAgfQogCkBAIC0xOTQsNyArMTk1LDcg
QEAgV0kuQW5pbWF0aW9uID0gY2xhc3MgQW5pbWF0aW9uIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAg
cmVxdWVzdEVmZmVjdFRhcmdldChjYWxsYmFjaykKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9l
ZmZlY3RUYXJnZXQgIT09IHVuZGVmaW5lZCkgewotICAgICAgICAgICAgY2FsbGJhY2sodGhpcy5f
ZWZmZWN0VGFyZ2V0KTsKKyAgICAgICAgICAgIGNhbGxiYWNrKHRoaXMuX2VmZmVjdFRhcmdldCwg
dGhpcy5fZWZmZWN0UHNldWRvSWQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAK
QEAgLTIwOCwxMSArMjA5LDEyIEBAIFdJLkFuaW1hdGlvbiA9IGNsYXNzIEFuaW1hdGlvbiBleHRl
bmRzIFdJLk9iamVjdAogICAgICAgICBXSS5kb21NYW5hZ2VyLmVuc3VyZURvY3VtZW50KCk7CiAK
ICAgICAgICAgbGV0IHRhcmdldCA9IFdJLmFzc3VtaW5nTWFpblRhcmdldCgpOwotICAgICAgICB0
YXJnZXQuQW5pbWF0aW9uQWdlbnQucmVxdWVzdEVmZmVjdFRhcmdldCh0aGlzLl9hbmltYXRpb25J
ZCwgKGVycm9yLCBub2RlSWQpID0+IHsKKyAgICAgICAgdGFyZ2V0LkFuaW1hdGlvbkFnZW50LnJl
cXVlc3RFZmZlY3RUYXJnZXQodGhpcy5fYW5pbWF0aW9uSWQsIChlcnJvciwgbm9kZUlkLCBwc2V1
ZG9JZCkgPT4gewogICAgICAgICAgICAgdGhpcy5fZWZmZWN0VGFyZ2V0ID0gIWVycm9yID8gV0ku
ZG9tTWFuYWdlci5ub2RlRm9ySWQobm9kZUlkKSA6IG51bGw7CisgICAgICAgICAgICB0aGlzLl9l
ZmZlY3RQc2V1ZG9JZCA9IHBzZXVkb0lkOwogCiAgICAgICAgICAgICBmb3IgKGxldCByZXF1ZXN0
RWZmZWN0VGFyZ2V0Q2FsbGJhY2sgb2YgdGhpcy5fcmVxdWVzdEVmZmVjdFRhcmdldENhbGxiYWNr
cykKLSAgICAgICAgICAgICAgICByZXF1ZXN0RWZmZWN0VGFyZ2V0Q2FsbGJhY2sodGhpcy5fZWZm
ZWN0VGFyZ2V0KTsKKyAgICAgICAgICAgICAgICByZXF1ZXN0RWZmZWN0VGFyZ2V0Q2FsbGJhY2so
dGhpcy5fZWZmZWN0VGFyZ2V0LCB0aGlzLl9lZmZlY3RQc2V1ZG9JZCk7CiAKICAgICAgICAgICAg
IHRoaXMuX3JlcXVlc3RFZmZlY3RUYXJnZXRDYWxsYmFja3MgPSBudWxsOwogICAgICAgICB9KTsK
QEAgLTIzNSw2ICsyMzcsNyBAQCBXSS5BbmltYXRpb24gPSBjbGFzcyBBbmltYXRpb24gZXh0ZW5k
cyBXSS5PYmplY3QKICAgICB0YXJnZXRDaGFuZ2VkKCkKICAgICB7CiAgICAgICAgIHRoaXMuX2Vm
ZmVjdFRhcmdldCA9IHVuZGVmaW5lZDsKKyAgICAgICAgdGhpcy5fZWZmZWN0UHNldWRvSWQgPSB1
bmRlZmluZWQ7CiAKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuQW5p
bWF0aW9uLkV2ZW50LlRhcmdldENoYW5nZWQpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9NZWRpYVRpbWVsaW5lUmVjb3JkLmpz
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL01lZGlhVGltZWxp
bmVSZWNvcmQuanMKaW5kZXggNTFiMDFmZjBhNTc4OTEyMWQ5MjNmNTdjMTc1Y2QyMWNjNzRlZTc4
Ny4uOGNkZTFhNDE1ZGU2MDY2OWQ3MmFhODg4NGY4NTdiMzM4NTA1YjY3YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL01lZGlhVGltZWxpbmVS
ZWNvcmQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxz
L01lZGlhVGltZWxpbmVSZWNvcmQuanMKQEAgLTI1LDcgKzI1LDcgQEAKIAogV0kuTWVkaWFUaW1l
bGluZVJlY29yZCA9IGNsYXNzIE1lZGlhVGltZWxpbmVSZWNvcmQgZXh0ZW5kcyBXSS5UaW1lbGlu
ZVJlY29yZAogewotICAgIGNvbnN0cnVjdG9yKGV2ZW50VHlwZSwgZG9tTm9kZU9ySW5mbywge3Ry
YWNraW5nQW5pbWF0aW9uSWQsIGFuaW1hdGlvbk5hbWUsIHRyYW5zaXRpb25Qcm9wZXJ0eX0gPSB7
fSkKKyAgICBjb25zdHJ1Y3RvcihldmVudFR5cGUsIGRvbU5vZGVPckluZm8sIHt0cmFja2luZ0Fu
aW1hdGlvbklkLCBwc2V1ZG9JZCwgYW5pbWF0aW9uTmFtZSwgdHJhbnNpdGlvblByb3BlcnR5fSA9
IHt9KQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoT2JqZWN0LnZhbHVlcyhNZWRpYVRp
bWVsaW5lUmVjb3JkLkV2ZW50VHlwZSkuaW5jbHVkZXMoZXZlbnRUeXBlKSk7CiAgICAgICAgIGNv
bnNvbGUuYXNzZXJ0KGRvbU5vZGVPckluZm8gaW5zdGFuY2VvZiBXSS5ET01Ob2RlIHx8ICghaXNF
bXB0eU9iamVjdChkb21Ob2RlT3JJbmZvKSAmJiBkb21Ob2RlT3JJbmZvLmRpc3BsYXlOYW1lICYm
IGRvbU5vZGVPckluZm8uY3NzUGF0aCkpOwpAQCAtMzUsNiArMzUsMTAgQEAgV0kuTWVkaWFUaW1l
bGluZVJlY29yZCA9IGNsYXNzIE1lZGlhVGltZWxpbmVSZWNvcmQgZXh0ZW5kcyBXSS5UaW1lbGlu
ZVJlY29yZAogICAgICAgICB0aGlzLl9ldmVudFR5cGUgPSBldmVudFR5cGU7CiAgICAgICAgIHRo
aXMuX2RvbU5vZGUgPSBkb21Ob2RlT3JJbmZvOwogICAgICAgICB0aGlzLl9kb21Ob2RlRGlzcGxh
eU5hbWUgPSBkb21Ob2RlT3JJbmZvPy5kaXNwbGF5TmFtZTsKKworICAgICAgICBpZiAoIWRvbU5v
ZGVPckluZm8/LmlzUHNldWRvRWxlbWVudCgpICYmIHBzZXVkb0lkKQorICAgICAgICAgICAgdGhp
cy5fZG9tTm9kZURpc3BsYXlOYW1lICs9IGA6OiR7cHNldWRvSWR9YDsKKwogICAgICAgICB0aGlz
Ll9kb21Ob2RlQ1NTUGF0aCA9IGRvbU5vZGVPckluZm8gaW5zdGFuY2VvZiBXSS5ET01Ob2RlID8g
V0kuY3NzUGF0aChkb21Ob2RlT3JJbmZvLCB7ZnVsbDogdHJ1ZX0pIDogZG9tTm9kZU9ySW5mbz8u
Y3NzUGF0aDsKIAogICAgICAgICAvLyBXZWIgQW5pbWF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9BbmltYXRpb25Db250ZW50Vmlldy5q
cyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0FuaW1hdGlvbkNv
bnRlbnRWaWV3LmpzCmluZGV4IGM2MjYwZDBmYzJjZjc2ZTNhMTcyNGQ5YzE4YzNiMGI2NzQxNTcx
M2IuLmMzYzA2ZTRjZTAxYmFjNjFkZTA4N2I3MGJlNTlmODg3N2Q0ZmY5YmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0FuaW1hdGlvbkNvbnRl
bnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L0FuaW1hdGlvbkNvbnRlbnRWaWV3LmpzCkBAIC0xNjIsMTIgKzE2MiwxMiBAQCBXSS5BbmltYXRp
b25Db250ZW50VmlldyA9IGNsYXNzIEFuaW1hdGlvbkNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29u
dGVudFZpZXcKIAogICAgIF9yZWZyZXNoU3VidGl0bGUoKQogICAgIHsKLSAgICAgICAgdGhpcy5y
ZXByZXNlbnRlZE9iamVjdC5yZXF1ZXN0RWZmZWN0VGFyZ2V0KChkb21Ob2RlKSA9PiB7CisgICAg
ICAgIHRoaXMucmVwcmVzZW50ZWRPYmplY3QucmVxdWVzdEVmZmVjdFRhcmdldCgoZG9tTm9kZSwg
cHNldWRvSWQpID0+IHsKICAgICAgICAgICAgIHRoaXMuX2FuaW1hdGlvblRhcmdldERPTU5vZGUg
PSBkb21Ob2RlOwogCiAgICAgICAgICAgICB0aGlzLl9zdWJ0aXRsZUVsZW1lbnQucmVtb3ZlQ2hp
bGRyZW4oKTsKICAgICAgICAgICAgIGlmIChkb21Ob2RlKQotICAgICAgICAgICAgICAgIHRoaXMu
X3N1YnRpdGxlRWxlbWVudC5hcHBlbmRDaGlsZChXSS5saW5raWZ5Tm9kZVJlZmVyZW5jZShkb21O
b2RlKSk7CisgICAgICAgICAgICAgICAgdGhpcy5fc3VidGl0bGVFbGVtZW50LmFwcGVuZENoaWxk
KFdJLmxpbmtpZnlOb2RlUmVmZXJlbmNlKGRvbU5vZGUsIHsgcHNldWRvSWQgfSkpOwogICAgICAg
ICB9KTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0FuaW1hdGlvbkRldGFpbHNTaWRlYmFyUGFuZWwuanMgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9BbmltYXRpb25EZXRhaWxzU2lkZWJhclBh
bmVsLmpzCmluZGV4IDhjM2ZkOTRiZjA4Y2EyNzZiMWQyMzMzNTc4NDdmZDM1MTMyMmEyNzQuLmNm
ODcyMjAzZmUxODMyMmQ0MGZmYzhlZGI5MmY2YWQ3ZjZiZDNkMTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0FuaW1hdGlvbkRldGFpbHNTaWRl
YmFyUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvQW5pbWF0aW9uRGV0YWlsc1NpZGViYXJQYW5lbC5qcwpAQCAtMTc5LDggKzE3OSw4IEBAIFdJ
LkFuaW1hdGlvbkRldGFpbHNTaWRlYmFyUGFuZWwgPSBjbGFzcyBBbmltYXRpb25EZXRhaWxzU2lk
ZWJhclBhbmVsIGV4dGVuZHMgV0kuCiAgICAgICAgIHRoaXMuX2Nzc1RyYW5zaXRpb25Qcm9wZXJ0
eVJvdy52YWx1ZSA9IGNzc1RyYW5zaXRpb25Qcm9wZXJ0eTsKIAogICAgICAgICB0aGlzLl90YXJn
ZXRSb3cudmFsdWUgPSBudWxsOwotICAgICAgICB0aGlzLl9hbmltYXRpb24ucmVxdWVzdEVmZmVj
dFRhcmdldCgoZG9tTm9kZSkgPT4gewotICAgICAgICAgICAgdGhpcy5fdGFyZ2V0Um93LnZhbHVl
ID0gZG9tTm9kZSA/IFdJLmxpbmtpZnlOb2RlUmVmZXJlbmNlKGRvbU5vZGUpIDogbnVsbDsKKyAg
ICAgICAgdGhpcy5fYW5pbWF0aW9uLnJlcXVlc3RFZmZlY3RUYXJnZXQoKGRvbU5vZGUsIHBzZXVk
b0lkKSA9PiB7CisgICAgICAgICAgICB0aGlzLl90YXJnZXRSb3cudmFsdWUgPSBkb21Ob2RlID8g
V0kubGlua2lmeU5vZGVSZWZlcmVuY2UoZG9tTm9kZSwgeyBwc2V1ZG9JZCB9KSA6IG51bGw7CiAg
ICAgICAgIH0pOwogICAgIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449199</attachid>
            <date>2022-01-14 12:15:59 -0800</date>
            <delta_ts>2022-01-14 13:19:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235234-20220114211558.patch</filename>
            <type>text/plain</type>
            <size>25991</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4MDE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
NjU1MjQyNmM3MDk3NTYyMTE4YTBiNWMxZDI4NWQwNTNiZTIwODcyLi4wYTQ1ZmQwOWNiZjZjMjFl
MzJjOGFiOWIwYWVjNGUwZWRjNGFkOTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAyMi0wMS0xNCAgQW50b2luZSBRdWludCAgPGdyYW91dHNAd2Via2l0Lm9y
Zz4KKworICAgICAgICBbV2ViIEluc3BlY3Rvcl0gR3JhcGhpY3MgdGFiIHNob3VsZCBkaXNwbGF5
IHBzZXVkby1lbGVtZW50cyBmb3IgbW9yZSB0aGFuIDo6YmVmb3JlIGFuZCA6OmFmdGVyCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzUyMzQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYHBzZXVkb0lk
YCBhcyBhIHBhcmFtZXRlciB0byBgcmVxdWVzdEVmZmVjdFRhcmdldCgpYCBjYWxsYmFja3MuCisK
KyAgICAgICAgKiBpbnNwZWN0b3IvcHJvdG9jb2wvQW5pbWF0aW9uLmpzb246CisKIDIwMjItMDEt
MTMgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtSSVND
VjY0XSByaXNjdjY0IGJhY2tlbmQgc2hvdWxkIGxvd2VyIG9mZmxpbmVhc20gaW5zdHJ1Y3Rpb25z
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKaW5kZXggMWEwY2Y0MDFlNzlmNWIyNGFlYjFjZmUwYzhiZDFhYzk1NjJiZjAyYi4u
YjBjN2I5NzA0YTJmMDA1ZjM1YzY4NmQ5YjUxMTZjM2JlMTA1YTVmMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDUyIEBACisyMDIyLTAxLTE0ICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJraXQu
b3JnPgorCisgICAgICAgIFtXZWIgSW5zcGVjdG9yXSBHcmFwaGljcyB0YWIgc2hvdWxkIGRpc3Bs
YXkgcHNldWRvLWVsZW1lbnRzIGZvciBtb3JlIHRoYW4gOjpiZWZvcmUgYW5kIDo6YWZ0ZXIKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTIzNAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVudGlsIG5vdywg
d2Ugd291bGQgcGFzcyB0aGUgcmVzdWx0IG9mIEtleWZyYW1lRWZmZWN0Ojp0YXJnZXRFbGVtZW50
T3JQc2V1ZG9FbGVtZW50KCkgdG8gCisgICAgICAgIEluc3BlY3RvckFuaW1hdGlvbkFnZW50Ojp3
aWxsQXBwbHlLZXlmcmFtZUVmZmVjdCgpLiBUaGlzIG1lYW50IHRoYXQgdGhlIGluc3BlY3RvciB3
b3VsZCBvbmx5CisgICAgICAgIGJlIHRvbGQgb2YgYW4gYW5pbWF0aW9uIHRhcmdldCBhcyBhbiBF
bGVtZW50IG9yIGEgUHNldWRvRWxlbWVudCBidXQgbm90IGFzIGFuIEVsZW1lbnQgLyBQc2V1ZG9J
ZAorICAgICAgICBwYWlyLCB0aHVzIG9ubHkgYWxsb3dpbmcgOjpiZWZvcmUgYW5kIDo6YWZ0ZXIg
dG8gYmUgcmVwcmVzZW50ZWQgc2luY2Ugb25seSB0aG9zZSBwc2V1ZG8tZWxlbWVudHMKKyAgICAg
ICAgY3JlYXRlIGEgUHNldWRvRWxlbWVudC4KKworICAgICAgICBXZSBub3cgcGFzcyBhIFN0eWxl
YWJsZSwgd2hpY2ggZW5jYXBzdWxhdGUgYW4gRWxlbWVudCAvIFBzZXVkb0lkIHBhaXIsIHRvCisg
ICAgICAgIEluc3BlY3RvckFuaW1hdGlvbkFnZW50Ojp3aWxsQXBwbHlLZXlmcmFtZUVmZmVjdCgp
LiBBZGRpdGlvbmFsbHksIHRoZSBTdHlsZWFibGUgdGFyZ2V0IGlzIHJlYWQgZnJvbQorICAgICAg
ICB0aGUgZWZmZWN0IGZvciBjYWxsYmFja3MgcHJvdmlkZWQgdG8gcmVxdWVzdEVmZmVjdFRhcmdl
dCgpLgorCisgICAgICAgIFNhZGx5LCB3ZSBzdGlsbCByZWx5IG9uIFBzZXVkb0VsZW1lbnQsIGJ1
dCB0aGlzIHBhdGNoIGF0IGxlYXN0IHJlbW92ZXMgYWxsIHVzZSBvZiBQc2V1ZG9FbGVtZW50Cisg
ICAgICAgIGZyb20gS2V5ZnJhbWVFZmZlY3QgYW5kIHB1c2hlcyBpdCBkb3duIHRvIEluc3BlY3Rv
ckRPTUFnZW50IHdpdGggYSBuZXcgc3RhdGljIG1ldGhvZAorICAgICAgICBlbGVtZW50VG9QdXNo
Rm9yU3R5bGVhYmxlKCkgd2hpY2ggdGhlIG5ldyBwdXNoU3R5bGVhYmxlVG9Gcm9udGVuZCgpIGFu
ZCBwdXNoU3R5bGVhYmxlUGF0aFRvRnJvbnRlbmQoKQorICAgICAgICBtZXRob2RzIHVzZSB0byB0
dXJuIHRoZSBTdHlsZWFibGUgdG8gYW4gRWxlbWVudCBvciBQc2V1ZG9FbGVtZW50LgorCisgICAg
ICAgIEluIHRoZSBmdXR1cmUsIHdlIHdvdWxkIG5lZWQgdG8gZnVydGhlciByZW1vdmUgUHNldWRv
RWxlbWVudCBmcm9tIFdlYiBJbnNwZWN0b3IgYW5kIGV4cG9zZSBzb21ldGhpbmcKKyAgICAgICAg
c2ltaWxhciB0byBTdHlsZWFibGUgdGhyb3VnaG91dCB0aGUgY29kZWJhc2UsIG9yIGZpbmQgc29t
ZSBvdGhlciB3YXkgdG8gZW5jYXBzdWxhdGUgYW4gRWxlbWVudCAvIFBzZXVkb0lkCisgICAgICAg
IHBhaXIuCisKKyAgICAgICAgKiBhbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6S2V5ZnJhbWVFZmZlY3Q6OmFwcGx5KToKKyAgICAgICAgKFdlYkNvcmU6Oktl
eWZyYW1lRWZmZWN0Ojp0YXJnZXRFbGVtZW50T3JQc2V1ZG9FbGVtZW50IGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBhbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuaDoKKyAgICAgICAgKFdlYkNv
cmU6OktleWZyYW1lRWZmZWN0Ojp0YXJnZXQgY29uc3QpOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjp3aWxsQXBwbHlLZXlmcmFtZUVmZmVjdEltcGwpOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEFwcGx5S2V5ZnJhbWVFZmZlY3QpOgorICAg
ICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQW5pbWF0aW9uQWdlbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQW5pbWF0aW9uQWdlbnQ6OnJlcXVlc3RFZmZlY3RUYXJn
ZXQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQW5pbWF0aW9uQWdlbnQ6OndpbGxBcHBs
eUtleWZyYW1lRWZmZWN0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFu
aW1hdGlvbkFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NB
Z2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6cHJvdG9jb2xW
YWx1ZUZvclBzZXVkb0lkKToKKyAgICAgICAgKFdlYkNvcmU6OnByb3RvY29sVmFsdWVGb3JQc2V1
ZG9JZCk6IERlbGV0ZWQuCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NB
Z2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6ZWxlbWVudFRvUHVzaEZvclN0eWxlYWJsZSk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6cHVzaFN0eWxlYWJsZVRvRnJvbnRlbmQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnB1c2hTdHlsZWFibGVQYXRoVG9G
cm9udGVuZCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5o
OgorCiAyMDIyLTAxLTE0ICBUeWxlciBXaWxjb2NrICA8dHlsZXJfd0BhcHBsZS5jb20+CiAKICAg
ICAgICAgQVg6IE1vdmUgbWV0aG9kcyB0aGF0IGFyZSB1bm5lY2Vzc2FyaWx5IGluIEFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3QgdG8gQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QgKHBhcnQgMSBvZiBu
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKaW5kZXggNWUxNDJkNjYwYzM5OGJlMGIzZTMyYzNmMDZi
OTIzMTg3NDZjYmVhZS4uN2FiNWRjMGRjMjhhZGU4NTIyYWYyNTdlZmE2NTc4ZmYwMGRkZTQ3NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMjItMDEtMTQgIEFu
dG9pbmUgUXVpbnQgIDxncmFvdXRzQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1dlYiBJbnNwZWN0
b3JdIEdyYXBoaWNzIHRhYiBzaG91bGQgZGlzcGxheSBwc2V1ZG8tZWxlbWVudHMgZm9yIG1vcmUg
dGhhbiA6OmJlZm9yZSBhbmQgOjphZnRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjM1MjM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVXNlIHRoZSBwc2V1ZG9JZCByZXR1cm5lZCBmcm9tIEFuaW1hdGlv
bi5yZXF1ZXN0RWZmZWN0VGFyZ2V0KCkgdG8gZGlzcGxheSBwc2V1ZG8tZWxlbWVudHMKKyAgICAg
ICAgb3RoZXIgdGhhbiA6OmJlZm9yZSBvciA6OmFmdGVyIGluIHRoZSBHcmFwaGljcyB0YWIuCisK
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0Jhc2UvRE9NVXRpbGl0aWVzLmpzOgorICAgICAgICAo
V0kubGlua2lmeU5vZGVSZWZlcmVuY2UpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTW9kZWxz
L0FuaW1hdGlvbi5qczoKKyAgICAgICAgKFdJLkFuaW1hdGlvbi5wcm90b3R5cGUucmVxdWVzdEVm
ZmVjdFRhcmdldCk6CisgICAgICAgIChXSS5BbmltYXRpb24ucHJvdG90eXBlLnRhcmdldENoYW5n
ZWQpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvQW5pbWF0aW9uQ29udGVudFZpZXcu
anM6CisgICAgICAgIChXSS5BbmltYXRpb25Db250ZW50Vmlldy5wcm90b3R5cGUuX3JlZnJlc2hT
dWJ0aXRsZSk6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9BbmltYXRpb25EZXRhaWxz
U2lkZWJhclBhbmVsLmpzOgorICAgICAgICAoV0kuQW5pbWF0aW9uRGV0YWlsc1NpZGViYXJQYW5l
bC5wcm90b3R5cGUuX3JlZnJlc2hJZGVudGl0eVNlY3Rpb24pOgorCiAyMDIyLTAxLTEzICBFbGxp
b3R0IFdpbGxpYW1zICA8ZW13QGFwcGxlLmNvbT4KIAogICAgICAgICBbWENCdWlsZF0gQWRkICJw
cm9kdWN0IGRlcGVuZGVuY2llcyIgd2hpY2ggaW5mbHVlbmNlIHdvcmtzcGFjZSBidWlsZCBvcmRl
cgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9B
bmltYXRpb24uanNvbiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wv
QW5pbWF0aW9uLmpzb24KaW5kZXggMDI5NjUxMDdmNWI4ZjhlZTFiNDdkZjFlMzQxY2I4ZmYxZmJk
ZTY4OS4uZTRjM2VkMTk0ZDM4MzJkMTEyZDQ4M2NjM2ZlZmIwNTgzZDAzMjVhNSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9BbmltYXRpb24uanNv
bgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL0FuaW1hdGlv
bi5qc29uCkBAIC04OCw3ICs4OCw4IEBACiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJhbmlt
YXRpb25JZCIsICIkcmVmIjogIkFuaW1hdGlvbklkIiB9CiAgICAgICAgICAgICBdLAogICAgICAg
ICAgICAgInJldHVybnMiOiBbCi0gICAgICAgICAgICAgICAgeyAibmFtZSI6ICJub2RlSWQiLCAi
JHJlZiI6ICJET00uTm9kZUlkIiB9CisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJub2RlSWQi
LCAiJHJlZiI6ICJET00uTm9kZUlkIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicHNl
dWRvSWQiLCAiJHJlZiI6ICJDU1MuUHNldWRvSWQiLCAib3B0aW9uYWwiOiB0cnVlIH0KICAgICAg
ICAgICAgIF0KICAgICAgICAgfSwKICAgICAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlv
bi9LZXlmcmFtZUVmZmVjdC5jcHAKaW5kZXggNjRkYjUyMTNjNzYxMDhmNDE5MDRiZDdiZTZkNTJk
NDU1Y2U3MmNlNy4uNmM1MGNjZWUwYTA3ZjkxMGM1ZWQ2ZjUzZWI3N2JhMjBkZDRiMDNhYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuY3BwCkBAIC00OCw3ICs0
OCw2IEBACiAjaW5jbHVkZSAiS2V5ZnJhbWVFZmZlY3RTdGFjay5oIgogI2luY2x1ZGUgIkxvZ2dp
bmcuaCIKICNpbmNsdWRlICJQcm9wZXJ0eUFsbG93bGlzdC5oIgotI2luY2x1ZGUgIlBzZXVkb0Vs
ZW1lbnQuaCIKICNpbmNsdWRlICJSZW5kZXJCb3guaCIKICNpbmNsdWRlICJSZW5kZXJCb3hNb2Rl
bE9iamVjdC5oIgogI2luY2x1ZGUgIlJlbmRlckVsZW1lbnQuaCIKQEAgLTEyNjUsMTkgKzEyNjQs
NiBAQCBib29sIEtleWZyYW1lRWZmZWN0Ojp0YXJnZXRzUHNldWRvRWxlbWVudCgpIGNvbnN0CiAg
ICAgcmV0dXJuIG1fdGFyZ2V0LmdldCgpICYmIG1fcHNldWRvSWQgIT0gUHNldWRvSWQ6Ok5vbmU7
CiB9CiAKLUVsZW1lbnQqIEtleWZyYW1lRWZmZWN0Ojp0YXJnZXRFbGVtZW50T3JQc2V1ZG9FbGVt
ZW50KCkgY29uc3QKLXsKLSAgICBpZiAobV90YXJnZXQpIHsKLSAgICAgICAgaWYgKG1fcHNldWRv
SWQgPT0gUHNldWRvSWQ6OkJlZm9yZSkKLSAgICAgICAgICAgIHJldHVybiBtX3RhcmdldC0+YmVm
b3JlUHNldWRvRWxlbWVudCgpOwotCi0gICAgICAgIGlmIChtX3BzZXVkb0lkID09IFBzZXVkb0lk
OjpBZnRlcikKLSAgICAgICAgICAgIHJldHVybiBtX3RhcmdldC0+YWZ0ZXJQc2V1ZG9FbGVtZW50
KCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIG1fdGFyZ2V0LmdldCgpOwotfQotCiB2b2lkIEtleWZy
YW1lRWZmZWN0OjpzZXRUYXJnZXQoUmVmUHRyPEVsZW1lbnQ+JiYgbmV3VGFyZ2V0KQogewogICAg
IGlmIChtX3RhcmdldCA9PSBuZXdUYXJnZXQpCkBAIC0xMzcxLDcgKzEzNTcsNyBAQCB2b2lkIEtl
eWZyYW1lRWZmZWN0OjphcHBseShSZW5kZXJTdHlsZSYgdGFyZ2V0U3R5bGUsIGNvbnN0IFN0eWxl
OjpSZXNvbHV0aW9uQ29udAogICAgIGF1dG8gY29tcHV0ZWRUaW1pbmcgPSBnZXRDb21wdXRlZFRp
bWluZyhzdGFydFRpbWUpOwogICAgIGlmICghc3RhcnRUaW1lKSB7CiAgICAgICAgIG1fcGhhc2VB
dExhc3RBcHBsaWNhdGlvbiA9IGNvbXB1dGVkVGltaW5nLnBoYXNlOwotICAgICAgICBpZiAoYXV0
byogdGFyZ2V0ID0gdGFyZ2V0RWxlbWVudE9yUHNldWRvRWxlbWVudCgpKQorICAgICAgICBpZiAo
YXV0byB0YXJnZXQgPSB0YXJnZXRTdHlsZWFibGUoKSkKICAgICAgICAgICAgIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6d2lsbEFwcGx5S2V5ZnJhbWVFZmZlY3QoKnRhcmdldCwgKnRoaXMsIGNv
bXB1dGVkVGltaW5nKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1h
dGlvbi9LZXlmcmFtZUVmZmVjdC5oIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1l
RWZmZWN0LmgKaW5kZXggMjU0NDA5YzljYWY0MDcyOTNiODZiMTQ4NjFkODhhMzI1ZWE1MWQ5MC4u
MzQ5YmFiODViYjI0NWI4NzIwMGRjZWE5NjkxYThhZTYwYjAzNGM5NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmgKQEAgLTEwNSw3ICsxMDUsNiBAQCBwdWJsaWM6
CiAgICAgY29uc3QgVmVjdG9yPFBhcnNlZEtleWZyYW1lPiYgcGFyc2VkS2V5ZnJhbWVzKCkgY29u
c3QgeyByZXR1cm4gbV9wYXJzZWRLZXlmcmFtZXM7IH0KIAogICAgIEVsZW1lbnQqIHRhcmdldCgp
IGNvbnN0IHsgcmV0dXJuIG1fdGFyZ2V0LmdldCgpOyB9Ci0gICAgRWxlbWVudCogdGFyZ2V0RWxl
bWVudE9yUHNldWRvRWxlbWVudCgpIGNvbnN0OwogICAgIHZvaWQgc2V0VGFyZ2V0KFJlZlB0cjxF
bGVtZW50PiYmKTsKIAogICAgIGJvb2wgdGFyZ2V0c1BzZXVkb0VsZW1lbnQoKSBjb25zdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlv
bi5jcHAKaW5kZXggM2M5NzhlM2Y0NDIxY2YzNWEyMDYxZGZjZTBkMWUwYWFlNTExMzQ5YS4uZmE5
MmFkY2VhOWVmODU3MmUyYWE4NTNhMjA3MmNjNjQ1ZmFjMTBmZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKQEAgLTEx
MjAsNyArMTEyMCw3IEBAIGJvb2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppc1dlYkdMUHJv
Z3JhbUhpZ2hsaWdodGVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzCiB9CiAjZW5kaWYKIAotdm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxBcHBseUtleWZyYW1lRWZmZWN0SW1wbChJ
bnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBFbGVtZW50JiB0YXJnZXQs
IEtleWZyYW1lRWZmZWN0JiBlZmZlY3QsIENvbXB1dGVkRWZmZWN0VGltaW5nIGNvbXB1dGVkVGlt
aW5nKQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxBcHBseUtleWZyYW1lRWZm
ZWN0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBjb25zdCBT
dHlsZWFibGUmIHRhcmdldCwgS2V5ZnJhbWVFZmZlY3QmIGVmZmVjdCwgQ29tcHV0ZWRFZmZlY3RU
aW1pbmcgY29tcHV0ZWRUaW1pbmcpCiB7CiAgICAgaWYgKGF1dG8qIGFuaW1hdGlvbkFnZW50ID0g
aW5zdHJ1bWVudGluZ0FnZW50cy50cmFja2luZ0FuaW1hdGlvbkFnZW50KCkpCiAgICAgICAgIGFu
aW1hdGlvbkFnZW50LT53aWxsQXBwbHlLZXlmcmFtZUVmZmVjdCh0YXJnZXQsIGVmZmVjdCwgY29t
cHV0ZWRUaW1pbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckluc3RydW1lbnRhdGlvbi5oCmluZGV4IDgyYWNjZWQyMGNmZDUxMzFiMjUwMmYwOTlhOWM0ZmEy
ZmRkNjE2ZWIuLjc3N2E3ZWQ0YzA4MmJkMjRlZjcxOTk1NmUyYTY1Mzc0NGUwNzU1ZjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
LmgKQEAgLTk5LDYgKzk5LDggQEAgY2xhc3MgV2ViS2l0TmFtZWRGbG93OwogY2xhc3MgV2ViU29j
a2V0Q2hhbm5lbDsKIGNsYXNzIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlOwogCitzdHJ1Y3Qg
U3R5bGVhYmxlOworCiAjaWYgRU5BQkxFKFdFQkdMKQogY2xhc3MgV2ViR0xQcm9ncmFtOwogI2Vu
ZGlmCkBAIC0yOTksNyArMzAxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIGlzV2ViR0xQ
cm9ncmFtSGlnaGxpZ2h0ZWQoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYsIFdlYkdMUHJvZ3Jh
bSYpOwogI2VuZGlmCiAKLSAgICBzdGF0aWMgdm9pZCB3aWxsQXBwbHlLZXlmcmFtZUVmZmVjdChF
bGVtZW50JiwgS2V5ZnJhbWVFZmZlY3QmLCBDb21wdXRlZEVmZmVjdFRpbWluZyk7CisgICAgc3Rh
dGljIHZvaWQgd2lsbEFwcGx5S2V5ZnJhbWVFZmZlY3QoY29uc3QgU3R5bGVhYmxlJiwgS2V5ZnJh
bWVFZmZlY3QmLCBDb21wdXRlZEVmZmVjdFRpbWluZyk7CiAgICAgc3RhdGljIHZvaWQgZGlkQ2hh
bmdlV2ViQW5pbWF0aW9uTmFtZShXZWJBbmltYXRpb24mKTsKICAgICBzdGF0aWMgdm9pZCBkaWRT
ZXRXZWJBbmltYXRpb25FZmZlY3QoV2ViQW5pbWF0aW9uJik7CiAgICAgc3RhdGljIHZvaWQgZGlk
Q2hhbmdlV2ViQW5pbWF0aW9uRWZmZWN0VGltaW5nKFdlYkFuaW1hdGlvbiYpOwpAQCAtNTAyLDcg
KzUwNCw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGJvb2wgaXNXZWJHTFByb2dyYW1IaWdobGln
aHRlZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIFdlYkdMUHJvZ3JhbSYpOwogI2VuZGlmCiAK
LSAgICBzdGF0aWMgdm9pZCB3aWxsQXBwbHlLZXlmcmFtZUVmZmVjdEltcGwoSW5zdHJ1bWVudGlu
Z0FnZW50cyYsIEVsZW1lbnQmLCBLZXlmcmFtZUVmZmVjdCYsIENvbXB1dGVkRWZmZWN0VGltaW5n
KTsKKyAgICBzdGF0aWMgdm9pZCB3aWxsQXBwbHlLZXlmcmFtZUVmZmVjdEltcGwoSW5zdHJ1bWVu
dGluZ0FnZW50cyYsIGNvbnN0IFN0eWxlYWJsZSYsIEtleWZyYW1lRWZmZWN0JiwgQ29tcHV0ZWRF
ZmZlY3RUaW1pbmcpOwogICAgIHN0YXRpYyB2b2lkIGRpZENoYW5nZVdlYkFuaW1hdGlvbk5hbWVJ
bXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBXZWJBbmltYXRpb24mKTsKICAgICBzdGF0aWMgdm9p
ZCBkaWRTZXRXZWJBbmltYXRpb25FZmZlY3RJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBXZWJB
bmltYXRpb24mKTsKICAgICBzdGF0aWMgdm9pZCBkaWRDaGFuZ2VXZWJBbmltYXRpb25FZmZlY3RU
aW1pbmdJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBXZWJBbmltYXRpb24mKTsKQEAgLTE0NTUs
MTAgKzE0NTcsMTAgQEAgaW5saW5lIGJvb2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppc1dl
YkdMUHJvZ3JhbUhpZ2hsaWdodGVkKFdlYkdMUmVuZGVyaW5nQ28KIH0KICNlbmRpZgogCi1pbmxp
bmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxBcHBseUtleWZyYW1lRWZmZWN0
KEVsZW1lbnQmIHRhcmdldCwgS2V5ZnJhbWVFZmZlY3QmIGVmZmVjdCwgQ29tcHV0ZWRFZmZlY3RU
aW1pbmcgY29tcHV0ZWRUaW1pbmcpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OndpbGxBcHBseUtleWZyYW1lRWZmZWN0KGNvbnN0IFN0eWxlYWJsZSYgdGFyZ2V0LCBLZXlm
cmFtZUVmZmVjdCYgZWZmZWN0LCBDb21wdXRlZEVmZmVjdFRpbWluZyBjb21wdXRlZFRpbWluZykK
IHsKICAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsKLSAgICBpZiAoYXV0
byogYWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50cyh0YXJnZXQuZG9jdW1lbnQoKSkpCisgICAg
aWYgKGF1dG8qIGFnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHModGFyZ2V0LmVsZW1lbnQuZG9j
dW1lbnQoKSkpCiAgICAgICAgIHdpbGxBcHBseUtleWZyYW1lRWZmZWN0SW1wbCgqYWdlbnRzLCB0
YXJnZXQsIGVmZmVjdCwgY29tcHV0ZWRUaW1pbmcpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFuaW1hdGlvbkFnZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQW5pbWF0aW9uQWdlbnQuY3Bw
CmluZGV4IDVlNWNkZjY3MDE0MDBjMTAwMjA5NDE4NTg2ZjYyMDBmZDMwOTUzZDYuLjIzZjQ1N2E1
NGU5N2ZmYTBlODlkYjI3YWI1YjNiMjgxNGUyYmVhZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQW5pbWF0aW9uQWdlbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQW5pbWF0aW9uQWdlbnQuY3Bw
CkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJGaWxsTW9k
ZS5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQ1NTQWdlbnQuaCIK
ICNpbmNsdWRlICJJbnNwZWN0b3JET01BZ2VudC5oIgogI2luY2x1ZGUgIkluc3RydW1lbnRpbmdB
Z2VudHMuaCIKICNpbmNsdWRlICJKU0V4ZWNTdGF0ZS5oIgpAQCAtNDcsNiArNDgsNyBAQAogI2lu
Y2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQbGF5YmFja0RpcmVjdGlvbi5oIgogI2luY2x1ZGUg
IlJlbmRlckVsZW1lbnQuaCIKKyNpbmNsdWRlICJTdHlsZWFibGUuaCIKICNpbmNsdWRlICJUaW1p
bmdGdW5jdGlvbi5oIgogI2luY2x1ZGUgIldlYkFuaW1hdGlvbi5oIgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0lkZW50aWZpZXJzRmFjdG9yeS5oPgpAQCAtMjc5LDcgKzI4MSw3IEBAIFByb3Rv
Y29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3RvckFuaW1hdGlvbkFnZW50OjpkaXNhYmxl
KCkKICAgICByZXR1cm4geyB9OwogfQogCi1Qcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxQcm90b2Nv
bDo6RE9NOjpOb2RlSWQ+IEluc3BlY3RvckFuaW1hdGlvbkFnZW50OjpyZXF1ZXN0RWZmZWN0VGFy
Z2V0KGNvbnN0IFByb3RvY29sOjpBbmltYXRpb246OkFuaW1hdGlvbklkJiBhbmltYXRpb25JZCkK
K1Byb3RvY29sOjpFcnJvclN0cmluZ09yPHN0ZDo6dHVwbGU8SW5zcGVjdG9yOjpQcm90b2NvbDo6
RE9NOjpOb2RlSWQsIHN0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpQc2V1
ZG9JZD4+PiBJbnNwZWN0b3JBbmltYXRpb25BZ2VudDo6cmVxdWVzdEVmZmVjdFRhcmdldChjb25z
dCBQcm90b2NvbDo6QW5pbWF0aW9uOjpBbmltYXRpb25JZCYgYW5pbWF0aW9uSWQpCiB7CiAgICAg
UHJvdG9jb2w6OkVycm9yU3RyaW5nIGVycm9yU3RyaW5nOwogCkBAIC0yOTcsMTEgKzI5OSwxNCBA
QCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxQcm90b2NvbDo6RE9NOjpOb2RlSWQ+IEluc3BlY3Rv
ckFuaW1hdGlvbkFnZW50OjpyZXF1ZXN0RQogCiAgICAgYXV0byYga2V5ZnJhbWVFZmZlY3QgPSBk
b3duY2FzdDxLZXlmcmFtZUVmZmVjdD4oKmVmZmVjdCk7CiAKLSAgICBhdXRvKiB0YXJnZXQgPSBr
ZXlmcmFtZUVmZmVjdC50YXJnZXRFbGVtZW50T3JQc2V1ZG9FbGVtZW50KCk7CisgICAgYXV0byB0
YXJnZXQgPSBrZXlmcmFtZUVmZmVjdC50YXJnZXRTdHlsZWFibGUoKTsKICAgICBpZiAoIXRhcmdl
dCkKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJBbmltYXRpb24gZm9yIGdpdmVuIGFu
aW1hdGlvbklkIGRvZXMgbm90IGhhdmUgYSB0YXJnZXQiX3MpOwogCi0gICAgcmV0dXJuIGRvbUFn
ZW50LT5wdXNoTm9kZVBhdGhUb0Zyb250ZW5kKGVycm9yU3RyaW5nLCB0YXJnZXQpOworICAgIGF1
dG8gcHNldWRvSWQgPSBJbnNwZWN0b3JDU1NBZ2VudDo6cHJvdG9jb2xWYWx1ZUZvclBzZXVkb0lk
KHRhcmdldC0+cHNldWRvSWQpOworCisgICAgc3RkOjp0dXBsZTxJbnNwZWN0b3I6OlByb3RvY29s
OjpET006Ok5vZGVJZCwgc3RkOjpvcHRpb25hbDxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlBz
ZXVkb0lkPj4gcmVzdWx0ID0geyBkb21BZ2VudC0+cHVzaFN0eWxlYWJsZVBhdGhUb0Zyb250ZW5k
KGVycm9yU3RyaW5nLCAqdGFyZ2V0KSwgcHNldWRvSWQgfTsKKyAgICByZXR1cm4gcmVzdWx0Owog
fQogCiBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxSZWY8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90
ZU9iamVjdD4+IEluc3BlY3RvckFuaW1hdGlvbkFnZW50OjpyZXNvbHZlQW5pbWF0aW9uKGNvbnN0
IFByb3RvY29sOjpBbmltYXRpb246OkFuaW1hdGlvbklkJiBhbmltYXRpb25JZCwgY29uc3QgU3Ry
aW5nJiBvYmplY3RHcm91cCkKQEAgLTM3MSw3ICszNzYsNyBAQCBzdGF0aWMgYm9vbCBpc0RlbGF5
ZWQoQ29tcHV0ZWRFZmZlY3RUaW1pbmcmIGNvbXB1dGVkVGltaW5nKQogICAgIHJldHVybiBjb21w
dXRlZFRpbWluZy5sb2NhbFRpbWUudmFsdWUoKSA8IChjb21wdXRlZFRpbWluZy5lbmRUaW1lIC0g
Y29tcHV0ZWRUaW1pbmcuYWN0aXZlRHVyYXRpb24pOwogfQogCi12b2lkIEluc3BlY3RvckFuaW1h
dGlvbkFnZW50Ojp3aWxsQXBwbHlLZXlmcmFtZUVmZmVjdChFbGVtZW50JiB0YXJnZXQsIEtleWZy
YW1lRWZmZWN0JiBrZXlmcmFtZUVmZmVjdCwgQ29tcHV0ZWRFZmZlY3RUaW1pbmcgY29tcHV0ZWRU
aW1pbmcpCit2b2lkIEluc3BlY3RvckFuaW1hdGlvbkFnZW50Ojp3aWxsQXBwbHlLZXlmcmFtZUVm
ZmVjdChjb25zdCBTdHlsZWFibGUmIHRhcmdldCwgS2V5ZnJhbWVFZmZlY3QmIGtleWZyYW1lRWZm
ZWN0LCBDb21wdXRlZEVmZmVjdFRpbWluZyBjb21wdXRlZFRpbWluZykKIHsKICAgICBhdXRvKiBh
bmltYXRpb24gPSBrZXlmcmFtZUVmZmVjdC5hbmltYXRpb24oKTsKICAgICBpZiAoIWlzPERlY2xh
cmF0aXZlQW5pbWF0aW9uPihhbmltYXRpb24pKQpAQCAtNDIxLDcgKzQyNiw3IEBAIHZvaWQgSW5z
cGVjdG9yQW5pbWF0aW9uQWdlbnQ6OndpbGxBcHBseUtleWZyYW1lRWZmZWN0KEVsZW1lbnQmIHRh
cmdldCwgS2V5ZnJhbWVFCiAKICAgICBpZiAoZW5zdXJlUmVzdWx0LmlzTmV3RW50cnkpIHsKICAg
ICAgICAgaWYgKGF1dG8qIGRvbUFnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLnBlcnNpc3Rl
bnRET01BZ2VudCgpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBub2RlSWQgPSBkb21BZ2VudC0+
cHVzaE5vZGVUb0Zyb250ZW5kKCZ0YXJnZXQpKQorICAgICAgICAgICAgaWYgKGF1dG8gbm9kZUlk
ID0gZG9tQWdlbnQtPnB1c2hTdHlsZWFibGVUb0Zyb250ZW5kKHRhcmdldCkpCiAgICAgICAgICAg
ICAgICAgZXZlbnQtPnNldE5vZGVJZChub2RlSWQpOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQW5pbWF0aW9uQWdlbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQW5pbWF0aW9uQWdl
bnQuaAppbmRleCBiMzkwOGMzZDI4ZDEzNjlkZjZlYzA5YjI0ZTMyZDhlNDlmMTI3ZjNlLi44ODFl
NDQ5Zjk2ZGM0NDA2YmYzNTc3YTNmM2UyYzViMDc1YTlkNTNkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFuaW1hdGlvbkFnZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBbmltYXRpb25BZ2VudC5o
CkBAIC00NCw2ICs0NCw4IEBAIGNsYXNzIEtleWZyYW1lRWZmZWN0OwogY2xhc3MgUGFnZTsKIGNs
YXNzIFdlYkFuaW1hdGlvbjsKIAorc3RydWN0IFN0eWxlYWJsZTsKKwogY2xhc3MgSW5zcGVjdG9y
QW5pbWF0aW9uQWdlbnQgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMg
SW5zcGVjdG9yOjpBbmltYXRpb25CYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgewogICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKEluc3BlY3RvckFuaW1hdGlvbkFnZW50KTsKICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKQEAgLTU4LDEzICs2MCwxMyBAQCBwdWJsaWM6CiAgICAgLy8gQW5pbWF0
aW9uQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyCiAgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJy
b3JTdHJpbmdPcjx2b2lkPiBlbmFibGUoKTsKICAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJv
clN0cmluZ09yPHZvaWQ+IGRpc2FibGUoKTsKLSAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJv
clN0cmluZ09yPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZUlkPiByZXF1ZXN0RWZmZWN0
VGFyZ2V0KGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFuaW1hdGlvbjo6QW5pbWF0aW9uSWQm
KTsKKyAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZ09yPHN0ZDo6dHVwbGU8SW5z
cGVjdG9yOjpQcm90b2NvbDo6RE9NOjpOb2RlSWQsIHN0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6Q1NTOjpQc2V1ZG9JZD4+PiByZXF1ZXN0RWZmZWN0VGFyZ2V0KGNvbnN0IEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkFuaW1hdGlvbjo6QW5pbWF0aW9uSWQmKTsKICAgICBJbnNwZWN0b3I6
OlByb3RvY29sOjpFcnJvclN0cmluZ09yPFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1l
OjpSZW1vdGVPYmplY3Q+PiByZXNvbHZlQW5pbWF0aW9uKGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkFuaW1hdGlvbjo6QW5pbWF0aW9uSWQmLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwKTsK
ICAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IHN0YXJ0VHJhY2tp
bmcoKTsKICAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IHN0b3BU
cmFja2luZygpOwogCiAgICAgLy8gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uCi0gICAgdm9pZCB3
aWxsQXBwbHlLZXlmcmFtZUVmZmVjdChFbGVtZW50JiwgS2V5ZnJhbWVFZmZlY3QmLCBDb21wdXRl
ZEVmZmVjdFRpbWluZyk7CisgICAgdm9pZCB3aWxsQXBwbHlLZXlmcmFtZUVmZmVjdChjb25zdCBT
dHlsZWFibGUmLCBLZXlmcmFtZUVmZmVjdCYsIENvbXB1dGVkRWZmZWN0VGltaW5nKTsKICAgICB2
b2lkIGRpZENoYW5nZVdlYkFuaW1hdGlvbk5hbWUoV2ViQW5pbWF0aW9uJik7CiAgICAgdm9pZCBk
aWRTZXRXZWJBbmltYXRpb25FZmZlY3QoV2ViQW5pbWF0aW9uJik7CiAgICAgdm9pZCBkaWRDaGFu
Z2VXZWJBbmltYXRpb25FZmZlY3RUaW1pbmcoV2ViQW5pbWF0aW9uJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCmluZGV4
IDc5YTMyNDUwYWQ0NmQ0YTFkZGQ3M2U5YzkxYjY1ZmQ4ZGMzM2I2NzUuLmNjM2Y1YjM4MmNiY2Mz
NzZjNTQ0YjkyOTA5NjgyNzRhYzEzYmZiZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCkBAIC00NDAsNyArNDQwLDcg
QEAgYm9vbCBJbnNwZWN0b3JDU1NBZ2VudDo6Zm9yY2VQc2V1ZG9TdGF0ZShjb25zdCBFbGVtZW50
JiBlbGVtZW50LCBDU1NTZWxlY3Rvcjo6UHMKICAgICB9CiB9CiAKLXN0YXRpYyBzdGQ6Om9wdGlv
bmFsPFByb3RvY29sOjpDU1M6OlBzZXVkb0lkPiBwcm90b2NvbFZhbHVlRm9yUHNldWRvSWQoUHNl
dWRvSWQgcHNldWRvSWQpCitzdGQ6Om9wdGlvbmFsPFByb3RvY29sOjpDU1M6OlBzZXVkb0lkPiBJ
bnNwZWN0b3JDU1NBZ2VudDo6cHJvdG9jb2xWYWx1ZUZvclBzZXVkb0lkKFBzZXVkb0lkIHBzZXVk
b0lkKQogewogICAgIHN3aXRjaCAocHNldWRvSWQpIHsKICAgICBjYXNlIFBzZXVkb0lkOjpGaXJz
dExpbmU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckNTU0FnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckNTU0FnZW50LmgKaW5kZXggYTRjNjEyN2QwYTJjZmQ0ZGNjNGY1ZGU4NmIwNjkwMjk4M2RhNzZl
OC4uNGUzNWU5YTVjMmJmODI5N2NmNTNjYTU4YzIxMDFkZmY3ZWQwY2U5NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuaApAQCAt
ODUsNiArODUsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIENTU1N0eWxlUnVsZSogYXNDU1NTdHls
ZVJ1bGUoQ1NTUnVsZSYpOwogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkNTUzo6TGF5b3V0Q29udGV4dFR5cGU+IGxheW91dENvbnRleHRUeXBlRm9yUmVuZGVy
ZXIoUmVuZGVyT2JqZWN0Kik7CiAKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxJbnNwZWN0b3I6
OlByb3RvY29sOjpDU1M6OlBzZXVkb0lkPiBwcm90b2NvbFZhbHVlRm9yUHNldWRvSWQoUHNldWRv
SWQpOworCiAgICAgLy8gSW5zcGVjdG9yQWdlbnRCYXNlCiAgICAgdm9pZCBkaWRDcmVhdGVGcm9u
dGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZFJvdXRlciosIEluc3BlY3Rvcjo6QmFj
a2VuZERpc3BhdGNoZXIqKTsKICAgICB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5k
KEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCmluZGV4IDdhNzkwYmIyM2M4
ZjM3YWY1N2U0Mjg0YjM2N2NhZDlkNjc5YTQzNGYuLmQ3ZTNhYmM3ZDYxZDQ0Y2NkNjI1YWZhZGIz
MGUxMDZhNDgxMGNkZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC0xMDQsNiArMTA0LDcgQEAKICNpbmNsdWRl
ICJTdHlsZVByb3BlcnRpZXMuaCIKICNpbmNsdWRlICJTdHlsZVJlc29sdmVyLmgiCiAjaW5jbHVk
ZSAiU3R5bGVTaGVldExpc3QuaCIKKyNpbmNsdWRlICJTdHlsZWFibGUuaCIKICNpbmNsdWRlICJU
ZXh0LmgiCiAjaW5jbHVkZSAiVGV4dE5vZGVUcmF2ZXJzYWwuaCIKICNpbmNsdWRlICJUaW1lci5o
IgpAQCAtNTM4LDYgKzUzOSwyNCBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpkaXNjYXJkQmlu
ZGluZ3MoKQogICAgIG1fY2hpbGRyZW5SZXF1ZXN0ZWQuY2xlYXIoKTsKIH0KIAorc3RhdGljIEVs
ZW1lbnQqIGVsZW1lbnRUb1B1c2hGb3JTdHlsZWFibGUoY29uc3QgU3R5bGVhYmxlJiBzdHlsZWFi
bGUpCit7CisgICAgLy8gRklYTUU6IFdlIHdhbnQgdG8gZ2V0IHJpZCBvZiBQc2V1ZG9FbGVtZW50
LgorICAgIGF1dG8qIGVsZW1lbnQgPSAmc3R5bGVhYmxlLmVsZW1lbnQ7CisKKyAgICBpZiAoc3R5
bGVhYmxlLnBzZXVkb0lkID09IFBzZXVkb0lkOjpCZWZvcmUpCisgICAgICAgIGVsZW1lbnQgPSBl
bGVtZW50LT5iZWZvcmVQc2V1ZG9FbGVtZW50KCk7CisgICAgZWxzZSBpZiAoc3R5bGVhYmxlLnBz
ZXVkb0lkID09IFBzZXVkb0lkOjpBZnRlcikKKyAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQtPmFm
dGVyUHNldWRvRWxlbWVudCgpOworCisgICAgcmV0dXJuIGVsZW1lbnQ7Cit9CisKK1Byb3RvY29s
OjpET006Ok5vZGVJZCBJbnNwZWN0b3JET01BZ2VudDo6cHVzaFN0eWxlYWJsZVRvRnJvbnRlbmQo
Y29uc3QgU3R5bGVhYmxlJiBzdHlsZWFibGUpCit7CisgICAgcmV0dXJuIHB1c2hOb2RlVG9Gcm9u
dGVuZChlbGVtZW50VG9QdXNoRm9yU3R5bGVhYmxlKHN0eWxlYWJsZSkpOworfQorCiBQcm90b2Nv
bDo6RE9NOjpOb2RlSWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnB1c2hOb2RlVG9Gcm9udGVuZChOb2Rl
KiBub2RlVG9QdXNoKQogewogICAgIGlmICghbm9kZVRvUHVzaCkKQEAgLTYzNyw2ICs2NTYsMTIg
QEAgUHJvdG9jb2w6OkRPTTo6Tm9kZUlkIEluc3BlY3RvckRPTUFnZW50OjpwdXNoTm9kZVBhdGhU
b0Zyb250ZW5kKE5vZGUqIG5vZGVUb1B1c2gKICAgICByZXR1cm4gcHVzaE5vZGVQYXRoVG9Gcm9u
dGVuZChpZ25vcmVkLCBub2RlVG9QdXNoKTsKIH0KIAorUHJvdG9jb2w6OkRPTTo6Tm9kZUlkIElu
c3BlY3RvckRPTUFnZW50OjpwdXNoU3R5bGVhYmxlUGF0aFRvRnJvbnRlbmQoUHJvdG9jb2w6OkVy
cm9yU3RyaW5nIGVycm9yU3RyaW5nLCBjb25zdCBTdHlsZWFibGUmIHN0eWxlYWJsZSkKK3sKKyAg
ICBhdXRvKiBlbGVtZW50ID0gZWxlbWVudFRvUHVzaEZvclN0eWxlYWJsZShzdHlsZWFibGUpOwor
ICAgIHJldHVybiBwdXNoTm9kZVBhdGhUb0Zyb250ZW5kKGVycm9yU3RyaW5nLCBlbGVtZW50ID8g
ZWxlbWVudCA6ICZzdHlsZWFibGUuZWxlbWVudCk7Cit9CisKIFByb3RvY29sOjpET006Ok5vZGVJ
ZCBJbnNwZWN0b3JET01BZ2VudDo6cHVzaE5vZGVQYXRoVG9Gcm9udGVuZChQcm90b2NvbDo6RXJy
b3JTdHJpbmcgZXJyb3JTdHJpbmcsIE5vZGUqIG5vZGVUb1B1c2gpCiB7CiAgICAgQVNTRVJUKG5v
ZGVUb1B1c2gpOyAgLy8gSW52YWxpZCBpbnB1dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5oCmluZGV4IDRlYjYzYjc5ODU3MjFhYzZl
YTYwMDNjODg0OTg5MTc5Yzc4ZWRhMDAuLmE5YjQ0YjVmNjA3YjJkMGRiMjFlZTNkNWFiYjk5ZTk3
ZWRmNTRmNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yRE9NQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckRPTUFnZW50LmgKQEAgLTc1LDYgKzc1LDggQEAgY2xhc3MgUHNldWRvRWxlbWVudDsK
IGNsYXNzIFJldmFsaWRhdGVTdHlsZUF0dHJpYnV0ZVRhc2s7CiBjbGFzcyBTaGFkb3dSb290Owog
CitzdHJ1Y3QgU3R5bGVhYmxlOworCiBjbGFzcyBJbnNwZWN0b3JET01BZ2VudCBmaW5hbCA6IHB1
YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3I6OkRPTUJhY2tlbmREaXNw
YXRjaGVySGFuZGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9yRE9NQWdl
bnQpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtMTg0LDYgKzE4Niw4IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgc3R5bGVBdHRyaWJ1dGVJbnZhbGlkYXRlZChjb25zdCBWZWN0b3I8
RWxlbWVudCo+JiBlbGVtZW50cyk7CiAKKyAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5v
ZGVJZCBwdXNoU3R5bGVhYmxlVG9Gcm9udGVuZChjb25zdCBTdHlsZWFibGUmKTsKKyAgICBJbnNw
ZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGVJZCBwdXNoU3R5bGVhYmxlUGF0aFRvRnJvbnRlbmQo
SW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmcsIGNvbnN0IFN0eWxlYWJsZSYpOwogICAg
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZUlkIHB1c2hOb2RlVG9Gcm9udGVuZChOb2Rl
Kik7CiAgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpOb2RlSWQgcHVzaE5vZGVUb0Zyb250
ZW5kKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nJiwgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6RE9NOjpOb2RlSWQgZG9jdW1lbnROb2RlSWQsIE5vZGUqKTsKICAgICBJbnNwZWN0b3I6OlBy
b3RvY29sOjpET006Ok5vZGVJZCBwdXNoTm9kZVBhdGhUb0Zyb250ZW5kKE5vZGUqKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvRE9NVXRpbGl0
aWVzLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9ET01VdGls
aXRpZXMuanMKaW5kZXggNDJiMzlhMTBkYjVlM2E0NzIxZDUyZjllYjMyYjYwMWZlM2YzMjEyOS4u
NTZhMTM5YTBhNDNlMGNmN2E1MjI3MThhOWYzZjYyMTkwYmY2MGJhNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9ET01VdGlsaXRpZXMuanMKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9ET01VdGlsaXRpZXMu
anMKQEAgLTYwLDYgKzYwLDEwIEBAIFdJLmxpbmtpZnlBY2Nlc3NpYmlsaXR5Tm9kZVJlZmVyZW5j
ZSA9IGZ1bmN0aW9uKG5vZGUpCiBXSS5saW5raWZ5Tm9kZVJlZmVyZW5jZSA9IGZ1bmN0aW9uKG5v
ZGUsIG9wdGlvbnMgPSB7fSkKIHsKICAgICBsZXQgZGlzcGxheU5hbWUgPSBub2RlLmRpc3BsYXlO
YW1lOworCisgICAgaWYgKCFub2RlLmlzUHNldWRvRWxlbWVudCgpICYmIG9wdGlvbnMucHNldWRv
SWQpCisgICAgICAgIGRpc3BsYXlOYW1lID0gYDo6JHtvcHRpb25zLnBzZXVkb0lkfWA7CisKICAg
ICBpZiAoIWlzTmFOKG9wdGlvbnMubWF4TGVuZ3RoKSkKICAgICAgICAgZGlzcGxheU5hbWUgPSBk
aXNwbGF5TmFtZS50cnVuY2F0ZShvcHRpb25zLm1heExlbmd0aCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9BbmltYXRpb24uanMgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQW5pbWF0aW9uLmpzCmlu
ZGV4IGU2NmU5YTI4ZTBjNDRiMDljOWRiNjEyNzkzNjczYmMwZGNjMjRhNzYuLjM4MjZhNmFhZmJk
ZjY1MTVmYzdhOGYxMDhjOTA5NDc4NDg5ODJhMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9BbmltYXRpb24uanMKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0FuaW1hdGlvbi5qcwpAQCAtNDEsNiAr
NDEsNyBAQCBXSS5BbmltYXRpb24gPSBjbGFzcyBBbmltYXRpb24gZXh0ZW5kcyBXSS5PYmplY3QK
ICAgICAgICAgdGhpcy5fYmFja3RyYWNlID0gYmFja3RyYWNlIHx8IFtdOwogCiAgICAgICAgIHRo
aXMuX2VmZmVjdFRhcmdldCA9IHVuZGVmaW5lZDsKKyAgICAgICAgdGhpcy5fZWZmZWN0UHNldWRv
SWQgPSB1bmRlZmluZWQ7CiAgICAgICAgIHRoaXMuX3JlcXVlc3RFZmZlY3RUYXJnZXRDYWxsYmFj
a3MgPSBudWxsOwogICAgIH0KIApAQCAtMTk0LDcgKzE5NSw3IEBAIFdJLkFuaW1hdGlvbiA9IGNs
YXNzIEFuaW1hdGlvbiBleHRlbmRzIFdJLk9iamVjdAogICAgIHJlcXVlc3RFZmZlY3RUYXJnZXQo
Y2FsbGJhY2spCiAgICAgewogICAgICAgICBpZiAodGhpcy5fZWZmZWN0VGFyZ2V0ICE9PSB1bmRl
ZmluZWQpIHsKLSAgICAgICAgICAgIGNhbGxiYWNrKHRoaXMuX2VmZmVjdFRhcmdldCk7CisgICAg
ICAgICAgICBjYWxsYmFjayh0aGlzLl9lZmZlY3RUYXJnZXQsIHRoaXMuX2VmZmVjdFBzZXVkb0lk
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0yMDgsMTEgKzIwOSwxMiBA
QCBXSS5BbmltYXRpb24gPSBjbGFzcyBBbmltYXRpb24gZXh0ZW5kcyBXSS5PYmplY3QKICAgICAg
ICAgV0kuZG9tTWFuYWdlci5lbnN1cmVEb2N1bWVudCgpOwogCiAgICAgICAgIGxldCB0YXJnZXQg
PSBXSS5hc3N1bWluZ01haW5UYXJnZXQoKTsKLSAgICAgICAgdGFyZ2V0LkFuaW1hdGlvbkFnZW50
LnJlcXVlc3RFZmZlY3RUYXJnZXQodGhpcy5fYW5pbWF0aW9uSWQsIChlcnJvciwgbm9kZUlkKSA9
PiB7CisgICAgICAgIHRhcmdldC5BbmltYXRpb25BZ2VudC5yZXF1ZXN0RWZmZWN0VGFyZ2V0KHRo
aXMuX2FuaW1hdGlvbklkLCAoZXJyb3IsIG5vZGVJZCwgcHNldWRvSWQpID0+IHsKICAgICAgICAg
ICAgIHRoaXMuX2VmZmVjdFRhcmdldCA9ICFlcnJvciA/IFdJLmRvbU1hbmFnZXIubm9kZUZvcklk
KG5vZGVJZCkgOiBudWxsOworICAgICAgICAgICAgdGhpcy5fZWZmZWN0UHNldWRvSWQgPSBwc2V1
ZG9JZDsKIAogICAgICAgICAgICAgZm9yIChsZXQgcmVxdWVzdEVmZmVjdFRhcmdldENhbGxiYWNr
IG9mIHRoaXMuX3JlcXVlc3RFZmZlY3RUYXJnZXRDYWxsYmFja3MpCi0gICAgICAgICAgICAgICAg
cmVxdWVzdEVmZmVjdFRhcmdldENhbGxiYWNrKHRoaXMuX2VmZmVjdFRhcmdldCk7CisgICAgICAg
ICAgICAgICAgcmVxdWVzdEVmZmVjdFRhcmdldENhbGxiYWNrKHRoaXMuX2VmZmVjdFRhcmdldCwg
dGhpcy5fZWZmZWN0UHNldWRvSWQpOwogCiAgICAgICAgICAgICB0aGlzLl9yZXF1ZXN0RWZmZWN0
VGFyZ2V0Q2FsbGJhY2tzID0gbnVsbDsKICAgICAgICAgfSk7CkBAIC0yMzUsNiArMjM3LDcgQEAg
V0kuQW5pbWF0aW9uID0gY2xhc3MgQW5pbWF0aW9uIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgdGFy
Z2V0Q2hhbmdlZCgpCiAgICAgewogICAgICAgICB0aGlzLl9lZmZlY3RUYXJnZXQgPSB1bmRlZmlu
ZWQ7CisgICAgICAgIHRoaXMuX2VmZmVjdFBzZXVkb0lkID0gdW5kZWZpbmVkOwogCiAgICAgICAg
IHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkFuaW1hdGlvbi5FdmVudC5UYXJnZXRD
aGFuZ2VkKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9BbmltYXRpb25Db250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0FuaW1hdGlvbkNvbnRlbnRWaWV3LmpzCmluZGV4IGM2
MjYwZDBmYzJjZjc2ZTNhMTcyNGQ5YzE4YzNiMGI2NzQxNTcxM2IuLmMzYzA2ZTRjZTAxYmFjNjFk
ZTA4N2I3MGJlNTlmODg3N2Q0ZmY5YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0FuaW1hdGlvbkNvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0FuaW1hdGlvbkNvbnRlbnRWaWV3
LmpzCkBAIC0xNjIsMTIgKzE2MiwxMiBAQCBXSS5BbmltYXRpb25Db250ZW50VmlldyA9IGNsYXNz
IEFuaW1hdGlvbkNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVudFZpZXcKIAogICAgIF9yZWZy
ZXNoU3VidGl0bGUoKQogICAgIHsKLSAgICAgICAgdGhpcy5yZXByZXNlbnRlZE9iamVjdC5yZXF1
ZXN0RWZmZWN0VGFyZ2V0KChkb21Ob2RlKSA9PiB7CisgICAgICAgIHRoaXMucmVwcmVzZW50ZWRP
YmplY3QucmVxdWVzdEVmZmVjdFRhcmdldCgoZG9tTm9kZSwgcHNldWRvSWQpID0+IHsKICAgICAg
ICAgICAgIHRoaXMuX2FuaW1hdGlvblRhcmdldERPTU5vZGUgPSBkb21Ob2RlOwogCiAgICAgICAg
ICAgICB0aGlzLl9zdWJ0aXRsZUVsZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsKICAgICAgICAgICAg
IGlmIChkb21Ob2RlKQotICAgICAgICAgICAgICAgIHRoaXMuX3N1YnRpdGxlRWxlbWVudC5hcHBl
bmRDaGlsZChXSS5saW5raWZ5Tm9kZVJlZmVyZW5jZShkb21Ob2RlKSk7CisgICAgICAgICAgICAg
ICAgdGhpcy5fc3VidGl0bGVFbGVtZW50LmFwcGVuZENoaWxkKFdJLmxpbmtpZnlOb2RlUmVmZXJl
bmNlKGRvbU5vZGUsIHsgcHNldWRvSWQgfSkpOwogICAgICAgICB9KTsKICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0FuaW1hdGlv
bkRldGFpbHNTaWRlYmFyUGFuZWwuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9BbmltYXRpb25EZXRhaWxzU2lkZWJhclBhbmVsLmpzCmluZGV4IDhjM2ZkOTRi
ZjA4Y2EyNzZiMWQyMzMzNTc4NDdmZDM1MTMyMmEyNzQuLmNmODcyMjAzZmUxODMyMmQ0MGZmYzhl
ZGI5MmY2YWQ3ZjZiZDNkMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0FuaW1hdGlvbkRldGFpbHNTaWRlYmFyUGFuZWwuanMKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQW5pbWF0aW9uRGV0YWlsc1Np
ZGViYXJQYW5lbC5qcwpAQCAtMTc5LDggKzE3OSw4IEBAIFdJLkFuaW1hdGlvbkRldGFpbHNTaWRl
YmFyUGFuZWwgPSBjbGFzcyBBbmltYXRpb25EZXRhaWxzU2lkZWJhclBhbmVsIGV4dGVuZHMgV0ku
CiAgICAgICAgIHRoaXMuX2Nzc1RyYW5zaXRpb25Qcm9wZXJ0eVJvdy52YWx1ZSA9IGNzc1RyYW5z
aXRpb25Qcm9wZXJ0eTsKIAogICAgICAgICB0aGlzLl90YXJnZXRSb3cudmFsdWUgPSBudWxsOwot
ICAgICAgICB0aGlzLl9hbmltYXRpb24ucmVxdWVzdEVmZmVjdFRhcmdldCgoZG9tTm9kZSkgPT4g
ewotICAgICAgICAgICAgdGhpcy5fdGFyZ2V0Um93LnZhbHVlID0gZG9tTm9kZSA/IFdJLmxpbmtp
ZnlOb2RlUmVmZXJlbmNlKGRvbU5vZGUpIDogbnVsbDsKKyAgICAgICAgdGhpcy5fYW5pbWF0aW9u
LnJlcXVlc3RFZmZlY3RUYXJnZXQoKGRvbU5vZGUsIHBzZXVkb0lkKSA9PiB7CisgICAgICAgICAg
ICB0aGlzLl90YXJnZXRSb3cudmFsdWUgPSBkb21Ob2RlID8gV0kubGlua2lmeU5vZGVSZWZlcmVu
Y2UoZG9tTm9kZSwgeyBwc2V1ZG9JZCB9KSA6IG51bGw7CiAgICAgICAgIH0pOwogICAgIH0KIAo=
</data>
<flag name="commit-queue"
          id="475223"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449209</attachid>
            <date>2022-01-14 12:50:57 -0800</date>
            <delta_ts>2022-01-16 11:13:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235234-20220114215056.patch</filename>
            <type>text/plain</type>
            <size>34173</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4MDE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
NjU1MjQyNmM3MDk3NTYyMTE4YTBiNWMxZDI4NWQwNTNiZTIwODcyLi4wYTQ1ZmQwOWNiZjZjMjFl
MzJjOGFiOWIwYWVjNGUwZWRjNGFkOTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAyMi0wMS0xNCAgQW50b2luZSBRdWludCAgPGdyYW91dHNAd2Via2l0Lm9y
Zz4KKworICAgICAgICBbV2ViIEluc3BlY3Rvcl0gR3JhcGhpY3MgdGFiIHNob3VsZCBkaXNwbGF5
IHBzZXVkby1lbGVtZW50cyBmb3IgbW9yZSB0aGFuIDo6YmVmb3JlIGFuZCA6OmFmdGVyCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzUyMzQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYHBzZXVkb0lk
YCBhcyBhIHBhcmFtZXRlciB0byBgcmVxdWVzdEVmZmVjdFRhcmdldCgpYCBjYWxsYmFja3MuCisK
KyAgICAgICAgKiBpbnNwZWN0b3IvcHJvdG9jb2wvQW5pbWF0aW9uLmpzb246CisKIDIwMjItMDEt
MTMgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtSSVND
VjY0XSByaXNjdjY0IGJhY2tlbmQgc2hvdWxkIGxvd2VyIG9mZmxpbmVhc20gaW5zdHJ1Y3Rpb25z
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKaW5kZXggMWEwY2Y0MDFlNzlmNWIyNGFlYjFjZmUwYzhiZDFhYzk1NjJiZjAyYi4u
YjBjN2I5NzA0YTJmMDA1ZjM1YzY4NmQ5YjUxMTZjM2JlMTA1YTVmMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDUyIEBACisyMDIyLTAxLTE0ICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJraXQu
b3JnPgorCisgICAgICAgIFtXZWIgSW5zcGVjdG9yXSBHcmFwaGljcyB0YWIgc2hvdWxkIGRpc3Bs
YXkgcHNldWRvLWVsZW1lbnRzIGZvciBtb3JlIHRoYW4gOjpiZWZvcmUgYW5kIDo6YWZ0ZXIKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTIzNAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVudGlsIG5vdywg
d2Ugd291bGQgcGFzcyB0aGUgcmVzdWx0IG9mIEtleWZyYW1lRWZmZWN0Ojp0YXJnZXRFbGVtZW50
T3JQc2V1ZG9FbGVtZW50KCkgdG8gCisgICAgICAgIEluc3BlY3RvckFuaW1hdGlvbkFnZW50Ojp3
aWxsQXBwbHlLZXlmcmFtZUVmZmVjdCgpLiBUaGlzIG1lYW50IHRoYXQgdGhlIGluc3BlY3RvciB3
b3VsZCBvbmx5CisgICAgICAgIGJlIHRvbGQgb2YgYW4gYW5pbWF0aW9uIHRhcmdldCBhcyBhbiBF
bGVtZW50IG9yIGEgUHNldWRvRWxlbWVudCBidXQgbm90IGFzIGFuIEVsZW1lbnQgLyBQc2V1ZG9J
ZAorICAgICAgICBwYWlyLCB0aHVzIG9ubHkgYWxsb3dpbmcgOjpiZWZvcmUgYW5kIDo6YWZ0ZXIg
dG8gYmUgcmVwcmVzZW50ZWQgc2luY2Ugb25seSB0aG9zZSBwc2V1ZG8tZWxlbWVudHMKKyAgICAg
ICAgY3JlYXRlIGEgUHNldWRvRWxlbWVudC4KKworICAgICAgICBXZSBub3cgcGFzcyBhIFN0eWxl
YWJsZSwgd2hpY2ggZW5jYXBzdWxhdGUgYW4gRWxlbWVudCAvIFBzZXVkb0lkIHBhaXIsIHRvCisg
ICAgICAgIEluc3BlY3RvckFuaW1hdGlvbkFnZW50Ojp3aWxsQXBwbHlLZXlmcmFtZUVmZmVjdCgp
LiBBZGRpdGlvbmFsbHksIHRoZSBTdHlsZWFibGUgdGFyZ2V0IGlzIHJlYWQgZnJvbQorICAgICAg
ICB0aGUgZWZmZWN0IGZvciBjYWxsYmFja3MgcHJvdmlkZWQgdG8gcmVxdWVzdEVmZmVjdFRhcmdl
dCgpLgorCisgICAgICAgIFNhZGx5LCB3ZSBzdGlsbCByZWx5IG9uIFBzZXVkb0VsZW1lbnQsIGJ1
dCB0aGlzIHBhdGNoIGF0IGxlYXN0IHJlbW92ZXMgYWxsIHVzZSBvZiBQc2V1ZG9FbGVtZW50Cisg
ICAgICAgIGZyb20gS2V5ZnJhbWVFZmZlY3QgYW5kIHB1c2hlcyBpdCBkb3duIHRvIEluc3BlY3Rv
ckRPTUFnZW50IHdpdGggYSBuZXcgc3RhdGljIG1ldGhvZAorICAgICAgICBlbGVtZW50VG9QdXNo
Rm9yU3R5bGVhYmxlKCkgd2hpY2ggdGhlIG5ldyBwdXNoU3R5bGVhYmxlVG9Gcm9udGVuZCgpIGFu
ZCBwdXNoU3R5bGVhYmxlUGF0aFRvRnJvbnRlbmQoKQorICAgICAgICBtZXRob2RzIHVzZSB0byB0
dXJuIHRoZSBTdHlsZWFibGUgdG8gYW4gRWxlbWVudCBvciBQc2V1ZG9FbGVtZW50LgorCisgICAg
ICAgIEluIHRoZSBmdXR1cmUsIHdlIHdvdWxkIG5lZWQgdG8gZnVydGhlciByZW1vdmUgUHNldWRv
RWxlbWVudCBmcm9tIFdlYiBJbnNwZWN0b3IgYW5kIGV4cG9zZSBzb21ldGhpbmcKKyAgICAgICAg
c2ltaWxhciB0byBTdHlsZWFibGUgdGhyb3VnaG91dCB0aGUgY29kZWJhc2UsIG9yIGZpbmQgc29t
ZSBvdGhlciB3YXkgdG8gZW5jYXBzdWxhdGUgYW4gRWxlbWVudCAvIFBzZXVkb0lkCisgICAgICAg
IHBhaXIuCisKKyAgICAgICAgKiBhbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6S2V5ZnJhbWVFZmZlY3Q6OmFwcGx5KToKKyAgICAgICAgKFdlYkNvcmU6Oktl
eWZyYW1lRWZmZWN0Ojp0YXJnZXRFbGVtZW50T3JQc2V1ZG9FbGVtZW50IGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBhbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuaDoKKyAgICAgICAgKFdlYkNv
cmU6OktleWZyYW1lRWZmZWN0Ojp0YXJnZXQgY29uc3QpOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjp3aWxsQXBwbHlLZXlmcmFtZUVmZmVjdEltcGwpOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEFwcGx5S2V5ZnJhbWVFZmZlY3QpOgorICAg
ICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQW5pbWF0aW9uQWdlbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQW5pbWF0aW9uQWdlbnQ6OnJlcXVlc3RFZmZlY3RUYXJn
ZXQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQW5pbWF0aW9uQWdlbnQ6OndpbGxBcHBs
eUtleWZyYW1lRWZmZWN0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFu
aW1hdGlvbkFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NB
Z2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6cHJvdG9jb2xW
YWx1ZUZvclBzZXVkb0lkKToKKyAgICAgICAgKFdlYkNvcmU6OnByb3RvY29sVmFsdWVGb3JQc2V1
ZG9JZCk6IERlbGV0ZWQuCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NB
Z2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6ZWxlbWVudFRvUHVzaEZvclN0eWxlYWJsZSk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6cHVzaFN0eWxlYWJsZVRvRnJvbnRlbmQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnB1c2hTdHlsZWFibGVQYXRoVG9G
cm9udGVuZCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5o
OgorCiAyMDIyLTAxLTE0ICBUeWxlciBXaWxjb2NrICA8dHlsZXJfd0BhcHBsZS5jb20+CiAKICAg
ICAgICAgQVg6IE1vdmUgbWV0aG9kcyB0aGF0IGFyZSB1bm5lY2Vzc2FyaWx5IGluIEFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3QgdG8gQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QgKHBhcnQgMSBvZiBu
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKaW5kZXggNWUxNDJkNjYwYzM5OGJlMGIzZTMyYzNmMDZi
OTIzMTg3NDZjYmVhZS4uN2FiNWRjMGRjMjhhZGU4NTIyYWYyNTdlZmE2NTc4ZmYwMGRkZTQ3NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMjItMDEtMTQgIEFu
dG9pbmUgUXVpbnQgIDxncmFvdXRzQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1dlYiBJbnNwZWN0
b3JdIEdyYXBoaWNzIHRhYiBzaG91bGQgZGlzcGxheSBwc2V1ZG8tZWxlbWVudHMgZm9yIG1vcmUg
dGhhbiA6OmJlZm9yZSBhbmQgOjphZnRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjM1MjM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVXNlIHRoZSBwc2V1ZG9JZCByZXR1cm5lZCBmcm9tIEFuaW1hdGlv
bi5yZXF1ZXN0RWZmZWN0VGFyZ2V0KCkgdG8gZGlzcGxheSBwc2V1ZG8tZWxlbWVudHMKKyAgICAg
ICAgb3RoZXIgdGhhbiA6OmJlZm9yZSBvciA6OmFmdGVyIGluIHRoZSBHcmFwaGljcyB0YWIuCisK
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0Jhc2UvRE9NVXRpbGl0aWVzLmpzOgorICAgICAgICAo
V0kubGlua2lmeU5vZGVSZWZlcmVuY2UpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTW9kZWxz
L0FuaW1hdGlvbi5qczoKKyAgICAgICAgKFdJLkFuaW1hdGlvbi5wcm90b3R5cGUucmVxdWVzdEVm
ZmVjdFRhcmdldCk6CisgICAgICAgIChXSS5BbmltYXRpb24ucHJvdG90eXBlLnRhcmdldENoYW5n
ZWQpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvQW5pbWF0aW9uQ29udGVudFZpZXcu
anM6CisgICAgICAgIChXSS5BbmltYXRpb25Db250ZW50Vmlldy5wcm90b3R5cGUuX3JlZnJlc2hT
dWJ0aXRsZSk6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9BbmltYXRpb25EZXRhaWxz
U2lkZWJhclBhbmVsLmpzOgorICAgICAgICAoV0kuQW5pbWF0aW9uRGV0YWlsc1NpZGViYXJQYW5l
bC5wcm90b3R5cGUuX3JlZnJlc2hJZGVudGl0eVNlY3Rpb24pOgorCiAyMDIyLTAxLTEzICBFbGxp
b3R0IFdpbGxpYW1zICA8ZW13QGFwcGxlLmNvbT4KIAogICAgICAgICBbWENCdWlsZF0gQWRkICJw
cm9kdWN0IGRlcGVuZGVuY2llcyIgd2hpY2ggaW5mbHVlbmNlIHdvcmtzcGFjZSBidWlsZCBvcmRl
cgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9B
bmltYXRpb24uanNvbiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wv
QW5pbWF0aW9uLmpzb24KaW5kZXggMDI5NjUxMDdmNWI4ZjhlZTFiNDdkZjFlMzQxY2I4ZmYxZmJk
ZTY4OS4uZTRjM2VkMTk0ZDM4MzJkMTEyZDQ4M2NjM2ZlZmIwNTgzZDAzMjVhNSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9BbmltYXRpb24uanNv
bgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL0FuaW1hdGlv
bi5qc29uCkBAIC04OCw3ICs4OCw4IEBACiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJhbmlt
YXRpb25JZCIsICIkcmVmIjogIkFuaW1hdGlvbklkIiB9CiAgICAgICAgICAgICBdLAogICAgICAg
ICAgICAgInJldHVybnMiOiBbCi0gICAgICAgICAgICAgICAgeyAibmFtZSI6ICJub2RlSWQiLCAi
JHJlZiI6ICJET00uTm9kZUlkIiB9CisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJub2RlSWQi
LCAiJHJlZiI6ICJET00uTm9kZUlkIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicHNl
dWRvSWQiLCAiJHJlZiI6ICJDU1MuUHNldWRvSWQiLCAib3B0aW9uYWwiOiB0cnVlIH0KICAgICAg
ICAgICAgIF0KICAgICAgICAgfSwKICAgICAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlv
bi9LZXlmcmFtZUVmZmVjdC5jcHAKaW5kZXggNjRkYjUyMTNjNzYxMDhmNDE5MDRiZDdiZTZkNTJk
NDU1Y2U3MmNlNy4uNmM1MGNjZWUwYTA3ZjkxMGM1ZWQ2ZjUzZWI3N2JhMjBkZDRiMDNhYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuY3BwCkBAIC00OCw3ICs0
OCw2IEBACiAjaW5jbHVkZSAiS2V5ZnJhbWVFZmZlY3RTdGFjay5oIgogI2luY2x1ZGUgIkxvZ2dp
bmcuaCIKICNpbmNsdWRlICJQcm9wZXJ0eUFsbG93bGlzdC5oIgotI2luY2x1ZGUgIlBzZXVkb0Vs
ZW1lbnQuaCIKICNpbmNsdWRlICJSZW5kZXJCb3guaCIKICNpbmNsdWRlICJSZW5kZXJCb3hNb2Rl
bE9iamVjdC5oIgogI2luY2x1ZGUgIlJlbmRlckVsZW1lbnQuaCIKQEAgLTEyNjUsMTkgKzEyNjQs
NiBAQCBib29sIEtleWZyYW1lRWZmZWN0Ojp0YXJnZXRzUHNldWRvRWxlbWVudCgpIGNvbnN0CiAg
ICAgcmV0dXJuIG1fdGFyZ2V0LmdldCgpICYmIG1fcHNldWRvSWQgIT0gUHNldWRvSWQ6Ok5vbmU7
CiB9CiAKLUVsZW1lbnQqIEtleWZyYW1lRWZmZWN0Ojp0YXJnZXRFbGVtZW50T3JQc2V1ZG9FbGVt
ZW50KCkgY29uc3QKLXsKLSAgICBpZiAobV90YXJnZXQpIHsKLSAgICAgICAgaWYgKG1fcHNldWRv
SWQgPT0gUHNldWRvSWQ6OkJlZm9yZSkKLSAgICAgICAgICAgIHJldHVybiBtX3RhcmdldC0+YmVm
b3JlUHNldWRvRWxlbWVudCgpOwotCi0gICAgICAgIGlmIChtX3BzZXVkb0lkID09IFBzZXVkb0lk
OjpBZnRlcikKLSAgICAgICAgICAgIHJldHVybiBtX3RhcmdldC0+YWZ0ZXJQc2V1ZG9FbGVtZW50
KCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIG1fdGFyZ2V0LmdldCgpOwotfQotCiB2b2lkIEtleWZy
YW1lRWZmZWN0OjpzZXRUYXJnZXQoUmVmUHRyPEVsZW1lbnQ+JiYgbmV3VGFyZ2V0KQogewogICAg
IGlmIChtX3RhcmdldCA9PSBuZXdUYXJnZXQpCkBAIC0xMzcxLDcgKzEzNTcsNyBAQCB2b2lkIEtl
eWZyYW1lRWZmZWN0OjphcHBseShSZW5kZXJTdHlsZSYgdGFyZ2V0U3R5bGUsIGNvbnN0IFN0eWxl
OjpSZXNvbHV0aW9uQ29udAogICAgIGF1dG8gY29tcHV0ZWRUaW1pbmcgPSBnZXRDb21wdXRlZFRp
bWluZyhzdGFydFRpbWUpOwogICAgIGlmICghc3RhcnRUaW1lKSB7CiAgICAgICAgIG1fcGhhc2VB
dExhc3RBcHBsaWNhdGlvbiA9IGNvbXB1dGVkVGltaW5nLnBoYXNlOwotICAgICAgICBpZiAoYXV0
byogdGFyZ2V0ID0gdGFyZ2V0RWxlbWVudE9yUHNldWRvRWxlbWVudCgpKQorICAgICAgICBpZiAo
YXV0byB0YXJnZXQgPSB0YXJnZXRTdHlsZWFibGUoKSkKICAgICAgICAgICAgIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6d2lsbEFwcGx5S2V5ZnJhbWVFZmZlY3QoKnRhcmdldCwgKnRoaXMsIGNv
bXB1dGVkVGltaW5nKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1h
dGlvbi9LZXlmcmFtZUVmZmVjdC5oIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1l
RWZmZWN0LmgKaW5kZXggMjU0NDA5YzljYWY0MDcyOTNiODZiMTQ4NjFkODhhMzI1ZWE1MWQ5MC4u
MzQ5YmFiODViYjI0NWI4NzIwMGRjZWE5NjkxYThhZTYwYjAzNGM5NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmgKQEAgLTEwNSw3ICsxMDUsNiBAQCBwdWJsaWM6
CiAgICAgY29uc3QgVmVjdG9yPFBhcnNlZEtleWZyYW1lPiYgcGFyc2VkS2V5ZnJhbWVzKCkgY29u
c3QgeyByZXR1cm4gbV9wYXJzZWRLZXlmcmFtZXM7IH0KIAogICAgIEVsZW1lbnQqIHRhcmdldCgp
IGNvbnN0IHsgcmV0dXJuIG1fdGFyZ2V0LmdldCgpOyB9Ci0gICAgRWxlbWVudCogdGFyZ2V0RWxl
bWVudE9yUHNldWRvRWxlbWVudCgpIGNvbnN0OwogICAgIHZvaWQgc2V0VGFyZ2V0KFJlZlB0cjxF
bGVtZW50PiYmKTsKIAogICAgIGJvb2wgdGFyZ2V0c1BzZXVkb0VsZW1lbnQoKSBjb25zdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlv
bi5jcHAKaW5kZXggM2M5NzhlM2Y0NDIxY2YzNWEyMDYxZGZjZTBkMWUwYWFlNTExMzQ5YS4uZmE5
MmFkY2VhOWVmODU3MmUyYWE4NTNhMjA3MmNjNjQ1ZmFjMTBmZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKQEAgLTEx
MjAsNyArMTEyMCw3IEBAIGJvb2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppc1dlYkdMUHJv
Z3JhbUhpZ2hsaWdodGVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzCiB9CiAjZW5kaWYKIAotdm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxBcHBseUtleWZyYW1lRWZmZWN0SW1wbChJ
bnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBFbGVtZW50JiB0YXJnZXQs
IEtleWZyYW1lRWZmZWN0JiBlZmZlY3QsIENvbXB1dGVkRWZmZWN0VGltaW5nIGNvbXB1dGVkVGlt
aW5nKQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxBcHBseUtleWZyYW1lRWZm
ZWN0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBjb25zdCBT
dHlsZWFibGUmIHRhcmdldCwgS2V5ZnJhbWVFZmZlY3QmIGVmZmVjdCwgQ29tcHV0ZWRFZmZlY3RU
aW1pbmcgY29tcHV0ZWRUaW1pbmcpCiB7CiAgICAgaWYgKGF1dG8qIGFuaW1hdGlvbkFnZW50ID0g
aW5zdHJ1bWVudGluZ0FnZW50cy50cmFja2luZ0FuaW1hdGlvbkFnZW50KCkpCiAgICAgICAgIGFu
aW1hdGlvbkFnZW50LT53aWxsQXBwbHlLZXlmcmFtZUVmZmVjdCh0YXJnZXQsIGVmZmVjdCwgY29t
cHV0ZWRUaW1pbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckluc3RydW1lbnRhdGlvbi5oCmluZGV4IDgyYWNjZWQyMGNmZDUxMzFiMjUwMmYwOTlhOWM0ZmEy
ZmRkNjE2ZWIuLjc3N2E3ZWQ0YzA4MmJkMjRlZjcxOTk1NmUyYTY1Mzc0NGUwNzU1ZjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
LmgKQEAgLTk5LDYgKzk5LDggQEAgY2xhc3MgV2ViS2l0TmFtZWRGbG93OwogY2xhc3MgV2ViU29j
a2V0Q2hhbm5lbDsKIGNsYXNzIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlOwogCitzdHJ1Y3Qg
U3R5bGVhYmxlOworCiAjaWYgRU5BQkxFKFdFQkdMKQogY2xhc3MgV2ViR0xQcm9ncmFtOwogI2Vu
ZGlmCkBAIC0yOTksNyArMzAxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIGlzV2ViR0xQ
cm9ncmFtSGlnaGxpZ2h0ZWQoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYsIFdlYkdMUHJvZ3Jh
bSYpOwogI2VuZGlmCiAKLSAgICBzdGF0aWMgdm9pZCB3aWxsQXBwbHlLZXlmcmFtZUVmZmVjdChF
bGVtZW50JiwgS2V5ZnJhbWVFZmZlY3QmLCBDb21wdXRlZEVmZmVjdFRpbWluZyk7CisgICAgc3Rh
dGljIHZvaWQgd2lsbEFwcGx5S2V5ZnJhbWVFZmZlY3QoY29uc3QgU3R5bGVhYmxlJiwgS2V5ZnJh
bWVFZmZlY3QmLCBDb21wdXRlZEVmZmVjdFRpbWluZyk7CiAgICAgc3RhdGljIHZvaWQgZGlkQ2hh
bmdlV2ViQW5pbWF0aW9uTmFtZShXZWJBbmltYXRpb24mKTsKICAgICBzdGF0aWMgdm9pZCBkaWRT
ZXRXZWJBbmltYXRpb25FZmZlY3QoV2ViQW5pbWF0aW9uJik7CiAgICAgc3RhdGljIHZvaWQgZGlk
Q2hhbmdlV2ViQW5pbWF0aW9uRWZmZWN0VGltaW5nKFdlYkFuaW1hdGlvbiYpOwpAQCAtNTAyLDcg
KzUwNCw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGJvb2wgaXNXZWJHTFByb2dyYW1IaWdobGln
aHRlZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIFdlYkdMUHJvZ3JhbSYpOwogI2VuZGlmCiAK
LSAgICBzdGF0aWMgdm9pZCB3aWxsQXBwbHlLZXlmcmFtZUVmZmVjdEltcGwoSW5zdHJ1bWVudGlu
Z0FnZW50cyYsIEVsZW1lbnQmLCBLZXlmcmFtZUVmZmVjdCYsIENvbXB1dGVkRWZmZWN0VGltaW5n
KTsKKyAgICBzdGF0aWMgdm9pZCB3aWxsQXBwbHlLZXlmcmFtZUVmZmVjdEltcGwoSW5zdHJ1bWVu
dGluZ0FnZW50cyYsIGNvbnN0IFN0eWxlYWJsZSYsIEtleWZyYW1lRWZmZWN0JiwgQ29tcHV0ZWRF
ZmZlY3RUaW1pbmcpOwogICAgIHN0YXRpYyB2b2lkIGRpZENoYW5nZVdlYkFuaW1hdGlvbk5hbWVJ
bXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBXZWJBbmltYXRpb24mKTsKICAgICBzdGF0aWMgdm9p
ZCBkaWRTZXRXZWJBbmltYXRpb25FZmZlY3RJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBXZWJB
bmltYXRpb24mKTsKICAgICBzdGF0aWMgdm9pZCBkaWRDaGFuZ2VXZWJBbmltYXRpb25FZmZlY3RU
aW1pbmdJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBXZWJBbmltYXRpb24mKTsKQEAgLTE0NTUs
MTAgKzE0NTcsMTAgQEAgaW5saW5lIGJvb2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppc1dl
YkdMUHJvZ3JhbUhpZ2hsaWdodGVkKFdlYkdMUmVuZGVyaW5nQ28KIH0KICNlbmRpZgogCi1pbmxp
bmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxBcHBseUtleWZyYW1lRWZmZWN0
KEVsZW1lbnQmIHRhcmdldCwgS2V5ZnJhbWVFZmZlY3QmIGVmZmVjdCwgQ29tcHV0ZWRFZmZlY3RU
aW1pbmcgY29tcHV0ZWRUaW1pbmcpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OndpbGxBcHBseUtleWZyYW1lRWZmZWN0KGNvbnN0IFN0eWxlYWJsZSYgdGFyZ2V0LCBLZXlm
cmFtZUVmZmVjdCYgZWZmZWN0LCBDb21wdXRlZEVmZmVjdFRpbWluZyBjb21wdXRlZFRpbWluZykK
IHsKICAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsKLSAgICBpZiAoYXV0
byogYWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50cyh0YXJnZXQuZG9jdW1lbnQoKSkpCisgICAg
aWYgKGF1dG8qIGFnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHModGFyZ2V0LmVsZW1lbnQuZG9j
dW1lbnQoKSkpCiAgICAgICAgIHdpbGxBcHBseUtleWZyYW1lRWZmZWN0SW1wbCgqYWdlbnRzLCB0
YXJnZXQsIGVmZmVjdCwgY29tcHV0ZWRUaW1pbmcpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFuaW1hdGlvbkFnZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQW5pbWF0aW9uQWdlbnQuY3Bw
CmluZGV4IDVlNWNkZjY3MDE0MDBjMTAwMjA5NDE4NTg2ZjYyMDBmZDMwOTUzZDYuLjIzZjQ1N2E1
NGU5N2ZmYTBlODlkYjI3YWI1YjNiMjgxNGUyYmVhZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQW5pbWF0aW9uQWdlbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQW5pbWF0aW9uQWdlbnQuY3Bw
CkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJGaWxsTW9k
ZS5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQ1NTQWdlbnQuaCIK
ICNpbmNsdWRlICJJbnNwZWN0b3JET01BZ2VudC5oIgogI2luY2x1ZGUgIkluc3RydW1lbnRpbmdB
Z2VudHMuaCIKICNpbmNsdWRlICJKU0V4ZWNTdGF0ZS5oIgpAQCAtNDcsNiArNDgsNyBAQAogI2lu
Y2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQbGF5YmFja0RpcmVjdGlvbi5oIgogI2luY2x1ZGUg
IlJlbmRlckVsZW1lbnQuaCIKKyNpbmNsdWRlICJTdHlsZWFibGUuaCIKICNpbmNsdWRlICJUaW1p
bmdGdW5jdGlvbi5oIgogI2luY2x1ZGUgIldlYkFuaW1hdGlvbi5oIgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0lkZW50aWZpZXJzRmFjdG9yeS5oPgpAQCAtMjc5LDcgKzI4MSw3IEBAIFByb3Rv
Y29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3RvckFuaW1hdGlvbkFnZW50OjpkaXNhYmxl
KCkKICAgICByZXR1cm4geyB9OwogfQogCi1Qcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxQcm90b2Nv
bDo6RE9NOjpOb2RlSWQ+IEluc3BlY3RvckFuaW1hdGlvbkFnZW50OjpyZXF1ZXN0RWZmZWN0VGFy
Z2V0KGNvbnN0IFByb3RvY29sOjpBbmltYXRpb246OkFuaW1hdGlvbklkJiBhbmltYXRpb25JZCkK
K1Byb3RvY29sOjpFcnJvclN0cmluZ09yPHN0ZDo6dHVwbGU8SW5zcGVjdG9yOjpQcm90b2NvbDo6
RE9NOjpOb2RlSWQsIHN0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpQc2V1
ZG9JZD4+PiBJbnNwZWN0b3JBbmltYXRpb25BZ2VudDo6cmVxdWVzdEVmZmVjdFRhcmdldChjb25z
dCBQcm90b2NvbDo6QW5pbWF0aW9uOjpBbmltYXRpb25JZCYgYW5pbWF0aW9uSWQpCiB7CiAgICAg
UHJvdG9jb2w6OkVycm9yU3RyaW5nIGVycm9yU3RyaW5nOwogCkBAIC0yOTcsMTEgKzI5OSwxNCBA
QCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxQcm90b2NvbDo6RE9NOjpOb2RlSWQ+IEluc3BlY3Rv
ckFuaW1hdGlvbkFnZW50OjpyZXF1ZXN0RQogCiAgICAgYXV0byYga2V5ZnJhbWVFZmZlY3QgPSBk
b3duY2FzdDxLZXlmcmFtZUVmZmVjdD4oKmVmZmVjdCk7CiAKLSAgICBhdXRvKiB0YXJnZXQgPSBr
ZXlmcmFtZUVmZmVjdC50YXJnZXRFbGVtZW50T3JQc2V1ZG9FbGVtZW50KCk7CisgICAgYXV0byB0
YXJnZXQgPSBrZXlmcmFtZUVmZmVjdC50YXJnZXRTdHlsZWFibGUoKTsKICAgICBpZiAoIXRhcmdl
dCkKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJBbmltYXRpb24gZm9yIGdpdmVuIGFu
aW1hdGlvbklkIGRvZXMgbm90IGhhdmUgYSB0YXJnZXQiX3MpOwogCi0gICAgcmV0dXJuIGRvbUFn
ZW50LT5wdXNoTm9kZVBhdGhUb0Zyb250ZW5kKGVycm9yU3RyaW5nLCB0YXJnZXQpOworICAgIGF1
dG8gcHNldWRvSWQgPSBJbnNwZWN0b3JDU1NBZ2VudDo6cHJvdG9jb2xWYWx1ZUZvclBzZXVkb0lk
KHRhcmdldC0+cHNldWRvSWQpOworCisgICAgc3RkOjp0dXBsZTxJbnNwZWN0b3I6OlByb3RvY29s
OjpET006Ok5vZGVJZCwgc3RkOjpvcHRpb25hbDxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlBz
ZXVkb0lkPj4gcmVzdWx0ID0geyBkb21BZ2VudC0+cHVzaFN0eWxlYWJsZVBhdGhUb0Zyb250ZW5k
KGVycm9yU3RyaW5nLCAqdGFyZ2V0KSwgcHNldWRvSWQgfTsKKyAgICByZXR1cm4gcmVzdWx0Owog
fQogCiBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxSZWY8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90
ZU9iamVjdD4+IEluc3BlY3RvckFuaW1hdGlvbkFnZW50OjpyZXNvbHZlQW5pbWF0aW9uKGNvbnN0
IFByb3RvY29sOjpBbmltYXRpb246OkFuaW1hdGlvbklkJiBhbmltYXRpb25JZCwgY29uc3QgU3Ry
aW5nJiBvYmplY3RHcm91cCkKQEAgLTM3MSw3ICszNzYsNyBAQCBzdGF0aWMgYm9vbCBpc0RlbGF5
ZWQoQ29tcHV0ZWRFZmZlY3RUaW1pbmcmIGNvbXB1dGVkVGltaW5nKQogICAgIHJldHVybiBjb21w
dXRlZFRpbWluZy5sb2NhbFRpbWUudmFsdWUoKSA8IChjb21wdXRlZFRpbWluZy5lbmRUaW1lIC0g
Y29tcHV0ZWRUaW1pbmcuYWN0aXZlRHVyYXRpb24pOwogfQogCi12b2lkIEluc3BlY3RvckFuaW1h
dGlvbkFnZW50Ojp3aWxsQXBwbHlLZXlmcmFtZUVmZmVjdChFbGVtZW50JiB0YXJnZXQsIEtleWZy
YW1lRWZmZWN0JiBrZXlmcmFtZUVmZmVjdCwgQ29tcHV0ZWRFZmZlY3RUaW1pbmcgY29tcHV0ZWRU
aW1pbmcpCit2b2lkIEluc3BlY3RvckFuaW1hdGlvbkFnZW50Ojp3aWxsQXBwbHlLZXlmcmFtZUVm
ZmVjdChjb25zdCBTdHlsZWFibGUmIHRhcmdldCwgS2V5ZnJhbWVFZmZlY3QmIGtleWZyYW1lRWZm
ZWN0LCBDb21wdXRlZEVmZmVjdFRpbWluZyBjb21wdXRlZFRpbWluZykKIHsKICAgICBhdXRvKiBh
bmltYXRpb24gPSBrZXlmcmFtZUVmZmVjdC5hbmltYXRpb24oKTsKICAgICBpZiAoIWlzPERlY2xh
cmF0aXZlQW5pbWF0aW9uPihhbmltYXRpb24pKQpAQCAtNDIxLDcgKzQyNiw3IEBAIHZvaWQgSW5z
cGVjdG9yQW5pbWF0aW9uQWdlbnQ6OndpbGxBcHBseUtleWZyYW1lRWZmZWN0KEVsZW1lbnQmIHRh
cmdldCwgS2V5ZnJhbWVFCiAKICAgICBpZiAoZW5zdXJlUmVzdWx0LmlzTmV3RW50cnkpIHsKICAg
ICAgICAgaWYgKGF1dG8qIGRvbUFnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLnBlcnNpc3Rl
bnRET01BZ2VudCgpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBub2RlSWQgPSBkb21BZ2VudC0+
cHVzaE5vZGVUb0Zyb250ZW5kKCZ0YXJnZXQpKQorICAgICAgICAgICAgaWYgKGF1dG8gbm9kZUlk
ID0gZG9tQWdlbnQtPnB1c2hTdHlsZWFibGVUb0Zyb250ZW5kKHRhcmdldCkpCiAgICAgICAgICAg
ICAgICAgZXZlbnQtPnNldE5vZGVJZChub2RlSWQpOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQW5pbWF0aW9uQWdlbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQW5pbWF0aW9uQWdl
bnQuaAppbmRleCBiMzkwOGMzZDI4ZDEzNjlkZjZlYzA5YjI0ZTMyZDhlNDlmMTI3ZjNlLi44ODFl
NDQ5Zjk2ZGM0NDA2YmYzNTc3YTNmM2UyYzViMDc1YTlkNTNkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFuaW1hdGlvbkFnZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBbmltYXRpb25BZ2VudC5o
CkBAIC00NCw2ICs0NCw4IEBAIGNsYXNzIEtleWZyYW1lRWZmZWN0OwogY2xhc3MgUGFnZTsKIGNs
YXNzIFdlYkFuaW1hdGlvbjsKIAorc3RydWN0IFN0eWxlYWJsZTsKKwogY2xhc3MgSW5zcGVjdG9y
QW5pbWF0aW9uQWdlbnQgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMg
SW5zcGVjdG9yOjpBbmltYXRpb25CYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgewogICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKEluc3BlY3RvckFuaW1hdGlvbkFnZW50KTsKICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKQEAgLTU4LDEzICs2MCwxMyBAQCBwdWJsaWM6CiAgICAgLy8gQW5pbWF0
aW9uQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyCiAgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJy
b3JTdHJpbmdPcjx2b2lkPiBlbmFibGUoKTsKICAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJv
clN0cmluZ09yPHZvaWQ+IGRpc2FibGUoKTsKLSAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJv
clN0cmluZ09yPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZUlkPiByZXF1ZXN0RWZmZWN0
VGFyZ2V0KGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFuaW1hdGlvbjo6QW5pbWF0aW9uSWQm
KTsKKyAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZ09yPHN0ZDo6dHVwbGU8SW5z
cGVjdG9yOjpQcm90b2NvbDo6RE9NOjpOb2RlSWQsIHN0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6Q1NTOjpQc2V1ZG9JZD4+PiByZXF1ZXN0RWZmZWN0VGFyZ2V0KGNvbnN0IEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkFuaW1hdGlvbjo6QW5pbWF0aW9uSWQmKTsKICAgICBJbnNwZWN0b3I6
OlByb3RvY29sOjpFcnJvclN0cmluZ09yPFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1l
OjpSZW1vdGVPYmplY3Q+PiByZXNvbHZlQW5pbWF0aW9uKGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkFuaW1hdGlvbjo6QW5pbWF0aW9uSWQmLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwKTsK
ICAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IHN0YXJ0VHJhY2tp
bmcoKTsKICAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IHN0b3BU
cmFja2luZygpOwogCiAgICAgLy8gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uCi0gICAgdm9pZCB3
aWxsQXBwbHlLZXlmcmFtZUVmZmVjdChFbGVtZW50JiwgS2V5ZnJhbWVFZmZlY3QmLCBDb21wdXRl
ZEVmZmVjdFRpbWluZyk7CisgICAgdm9pZCB3aWxsQXBwbHlLZXlmcmFtZUVmZmVjdChjb25zdCBT
dHlsZWFibGUmLCBLZXlmcmFtZUVmZmVjdCYsIENvbXB1dGVkRWZmZWN0VGltaW5nKTsKICAgICB2
b2lkIGRpZENoYW5nZVdlYkFuaW1hdGlvbk5hbWUoV2ViQW5pbWF0aW9uJik7CiAgICAgdm9pZCBk
aWRTZXRXZWJBbmltYXRpb25FZmZlY3QoV2ViQW5pbWF0aW9uJik7CiAgICAgdm9pZCBkaWRDaGFu
Z2VXZWJBbmltYXRpb25FZmZlY3RUaW1pbmcoV2ViQW5pbWF0aW9uJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCmluZGV4
IDc5YTMyNDUwYWQ0NmQ0YTFkZGQ3M2U5YzkxYjY1ZmQ4ZGMzM2I2NzUuLmNjM2Y1YjM4MmNiY2Mz
NzZjNTQ0YjkyOTA5NjgyNzRhYzEzYmZiZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCkBAIC00NDAsNyArNDQwLDcg
QEAgYm9vbCBJbnNwZWN0b3JDU1NBZ2VudDo6Zm9yY2VQc2V1ZG9TdGF0ZShjb25zdCBFbGVtZW50
JiBlbGVtZW50LCBDU1NTZWxlY3Rvcjo6UHMKICAgICB9CiB9CiAKLXN0YXRpYyBzdGQ6Om9wdGlv
bmFsPFByb3RvY29sOjpDU1M6OlBzZXVkb0lkPiBwcm90b2NvbFZhbHVlRm9yUHNldWRvSWQoUHNl
dWRvSWQgcHNldWRvSWQpCitzdGQ6Om9wdGlvbmFsPFByb3RvY29sOjpDU1M6OlBzZXVkb0lkPiBJ
bnNwZWN0b3JDU1NBZ2VudDo6cHJvdG9jb2xWYWx1ZUZvclBzZXVkb0lkKFBzZXVkb0lkIHBzZXVk
b0lkKQogewogICAgIHN3aXRjaCAocHNldWRvSWQpIHsKICAgICBjYXNlIFBzZXVkb0lkOjpGaXJz
dExpbmU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckNTU0FnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckNTU0FnZW50LmgKaW5kZXggYTRjNjEyN2QwYTJjZmQ0ZGNjNGY1ZGU4NmIwNjkwMjk4M2RhNzZl
OC4uNGUzNWU5YTVjMmJmODI5N2NmNTNjYTU4YzIxMDFkZmY3ZWQwY2U5NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuaApAQCAt
ODUsNiArODUsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIENTU1N0eWxlUnVsZSogYXNDU1NTdHls
ZVJ1bGUoQ1NTUnVsZSYpOwogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkNTUzo6TGF5b3V0Q29udGV4dFR5cGU+IGxheW91dENvbnRleHRUeXBlRm9yUmVuZGVy
ZXIoUmVuZGVyT2JqZWN0Kik7CiAKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxJbnNwZWN0b3I6
OlByb3RvY29sOjpDU1M6OlBzZXVkb0lkPiBwcm90b2NvbFZhbHVlRm9yUHNldWRvSWQoUHNldWRv
SWQpOworCiAgICAgLy8gSW5zcGVjdG9yQWdlbnRCYXNlCiAgICAgdm9pZCBkaWRDcmVhdGVGcm9u
dGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZFJvdXRlciosIEluc3BlY3Rvcjo6QmFj
a2VuZERpc3BhdGNoZXIqKTsKICAgICB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5k
KEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCmluZGV4IDdhNzkwYmIyM2M4
ZjM3YWY1N2U0Mjg0YjM2N2NhZDlkNjc5YTQzNGYuLmQ3ZTNhYmM3ZDYxZDQ0Y2NkNjI1YWZhZGIz
MGUxMDZhNDgxMGNkZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC0xMDQsNiArMTA0LDcgQEAKICNpbmNsdWRl
ICJTdHlsZVByb3BlcnRpZXMuaCIKICNpbmNsdWRlICJTdHlsZVJlc29sdmVyLmgiCiAjaW5jbHVk
ZSAiU3R5bGVTaGVldExpc3QuaCIKKyNpbmNsdWRlICJTdHlsZWFibGUuaCIKICNpbmNsdWRlICJU
ZXh0LmgiCiAjaW5jbHVkZSAiVGV4dE5vZGVUcmF2ZXJzYWwuaCIKICNpbmNsdWRlICJUaW1lci5o
IgpAQCAtNTM4LDYgKzUzOSwyNCBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpkaXNjYXJkQmlu
ZGluZ3MoKQogICAgIG1fY2hpbGRyZW5SZXF1ZXN0ZWQuY2xlYXIoKTsKIH0KIAorc3RhdGljIEVs
ZW1lbnQqIGVsZW1lbnRUb1B1c2hGb3JTdHlsZWFibGUoY29uc3QgU3R5bGVhYmxlJiBzdHlsZWFi
bGUpCit7CisgICAgLy8gRklYTUU6IFdlIHdhbnQgdG8gZ2V0IHJpZCBvZiBQc2V1ZG9FbGVtZW50
LgorICAgIGF1dG8qIGVsZW1lbnQgPSAmc3R5bGVhYmxlLmVsZW1lbnQ7CisKKyAgICBpZiAoc3R5
bGVhYmxlLnBzZXVkb0lkID09IFBzZXVkb0lkOjpCZWZvcmUpCisgICAgICAgIGVsZW1lbnQgPSBl
bGVtZW50LT5iZWZvcmVQc2V1ZG9FbGVtZW50KCk7CisgICAgZWxzZSBpZiAoc3R5bGVhYmxlLnBz
ZXVkb0lkID09IFBzZXVkb0lkOjpBZnRlcikKKyAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQtPmFm
dGVyUHNldWRvRWxlbWVudCgpOworCisgICAgcmV0dXJuIGVsZW1lbnQ7Cit9CisKK1Byb3RvY29s
OjpET006Ok5vZGVJZCBJbnNwZWN0b3JET01BZ2VudDo6cHVzaFN0eWxlYWJsZVRvRnJvbnRlbmQo
Y29uc3QgU3R5bGVhYmxlJiBzdHlsZWFibGUpCit7CisgICAgcmV0dXJuIHB1c2hOb2RlVG9Gcm9u
dGVuZChlbGVtZW50VG9QdXNoRm9yU3R5bGVhYmxlKHN0eWxlYWJsZSkpOworfQorCiBQcm90b2Nv
bDo6RE9NOjpOb2RlSWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnB1c2hOb2RlVG9Gcm9udGVuZChOb2Rl
KiBub2RlVG9QdXNoKQogewogICAgIGlmICghbm9kZVRvUHVzaCkKQEAgLTYzNyw2ICs2NTYsMTIg
QEAgUHJvdG9jb2w6OkRPTTo6Tm9kZUlkIEluc3BlY3RvckRPTUFnZW50OjpwdXNoTm9kZVBhdGhU
b0Zyb250ZW5kKE5vZGUqIG5vZGVUb1B1c2gKICAgICByZXR1cm4gcHVzaE5vZGVQYXRoVG9Gcm9u
dGVuZChpZ25vcmVkLCBub2RlVG9QdXNoKTsKIH0KIAorUHJvdG9jb2w6OkRPTTo6Tm9kZUlkIElu
c3BlY3RvckRPTUFnZW50OjpwdXNoU3R5bGVhYmxlUGF0aFRvRnJvbnRlbmQoUHJvdG9jb2w6OkVy
cm9yU3RyaW5nIGVycm9yU3RyaW5nLCBjb25zdCBTdHlsZWFibGUmIHN0eWxlYWJsZSkKK3sKKyAg
ICBhdXRvKiBlbGVtZW50ID0gZWxlbWVudFRvUHVzaEZvclN0eWxlYWJsZShzdHlsZWFibGUpOwor
ICAgIHJldHVybiBwdXNoTm9kZVBhdGhUb0Zyb250ZW5kKGVycm9yU3RyaW5nLCBlbGVtZW50ID8g
ZWxlbWVudCA6ICZzdHlsZWFibGUuZWxlbWVudCk7Cit9CisKIFByb3RvY29sOjpET006Ok5vZGVJ
ZCBJbnNwZWN0b3JET01BZ2VudDo6cHVzaE5vZGVQYXRoVG9Gcm9udGVuZChQcm90b2NvbDo6RXJy
b3JTdHJpbmcgZXJyb3JTdHJpbmcsIE5vZGUqIG5vZGVUb1B1c2gpCiB7CiAgICAgQVNTRVJUKG5v
ZGVUb1B1c2gpOyAgLy8gSW52YWxpZCBpbnB1dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5oCmluZGV4IDRlYjYzYjc5ODU3MjFhYzZl
YTYwMDNjODg0OTg5MTc5Yzc4ZWRhMDAuLmE5YjQ0YjVmNjA3YjJkMGRiMjFlZTNkNWFiYjk5ZTk3
ZWRmNTRmNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yRE9NQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckRPTUFnZW50LmgKQEAgLTc1LDYgKzc1LDggQEAgY2xhc3MgUHNldWRvRWxlbWVudDsK
IGNsYXNzIFJldmFsaWRhdGVTdHlsZUF0dHJpYnV0ZVRhc2s7CiBjbGFzcyBTaGFkb3dSb290Owog
CitzdHJ1Y3QgU3R5bGVhYmxlOworCiBjbGFzcyBJbnNwZWN0b3JET01BZ2VudCBmaW5hbCA6IHB1
YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3I6OkRPTUJhY2tlbmREaXNw
YXRjaGVySGFuZGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9yRE9NQWdl
bnQpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtMTg0LDYgKzE4Niw4IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgc3R5bGVBdHRyaWJ1dGVJbnZhbGlkYXRlZChjb25zdCBWZWN0b3I8
RWxlbWVudCo+JiBlbGVtZW50cyk7CiAKKyAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5v
ZGVJZCBwdXNoU3R5bGVhYmxlVG9Gcm9udGVuZChjb25zdCBTdHlsZWFibGUmKTsKKyAgICBJbnNw
ZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGVJZCBwdXNoU3R5bGVhYmxlUGF0aFRvRnJvbnRlbmQo
SW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmcsIGNvbnN0IFN0eWxlYWJsZSYpOwogICAg
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZUlkIHB1c2hOb2RlVG9Gcm9udGVuZChOb2Rl
Kik7CiAgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpOb2RlSWQgcHVzaE5vZGVUb0Zyb250
ZW5kKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nJiwgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6RE9NOjpOb2RlSWQgZG9jdW1lbnROb2RlSWQsIE5vZGUqKTsKICAgICBJbnNwZWN0b3I6OlBy
b3RvY29sOjpET006Ok5vZGVJZCBwdXNoTm9kZVBhdGhUb0Zyb250ZW5kKE5vZGUqKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvRE9NVXRpbGl0
aWVzLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9ET01VdGls
aXRpZXMuanMKaW5kZXggNDJiMzlhMTBkYjVlM2E0NzIxZDUyZjllYjMyYjYwMWZlM2YzMjEyOS4u
NTZhMTM5YTBhNDNlMGNmN2E1MjI3MThhOWYzZjYyMTkwYmY2MGJhNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9ET01VdGlsaXRpZXMuanMKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9ET01VdGlsaXRpZXMu
anMKQEAgLTYwLDYgKzYwLDEwIEBAIFdJLmxpbmtpZnlBY2Nlc3NpYmlsaXR5Tm9kZVJlZmVyZW5j
ZSA9IGZ1bmN0aW9uKG5vZGUpCiBXSS5saW5raWZ5Tm9kZVJlZmVyZW5jZSA9IGZ1bmN0aW9uKG5v
ZGUsIG9wdGlvbnMgPSB7fSkKIHsKICAgICBsZXQgZGlzcGxheU5hbWUgPSBub2RlLmRpc3BsYXlO
YW1lOworCisgICAgaWYgKCFub2RlLmlzUHNldWRvRWxlbWVudCgpICYmIG9wdGlvbnMucHNldWRv
SWQpCisgICAgICAgIGRpc3BsYXlOYW1lID0gYDo6JHtvcHRpb25zLnBzZXVkb0lkfWA7CisKICAg
ICBpZiAoIWlzTmFOKG9wdGlvbnMubWF4TGVuZ3RoKSkKICAgICAgICAgZGlzcGxheU5hbWUgPSBk
aXNwbGF5TmFtZS50cnVuY2F0ZShvcHRpb25zLm1heExlbmd0aCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9BbmltYXRpb24uanMgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQW5pbWF0aW9uLmpzCmlu
ZGV4IGU2NmU5YTI4ZTBjNDRiMDljOWRiNjEyNzkzNjczYmMwZGNjMjRhNzYuLjM4MjZhNmFhZmJk
ZjY1MTVmYzdhOGYxMDhjOTA5NDc4NDg5ODJhMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9BbmltYXRpb24uanMKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0FuaW1hdGlvbi5qcwpAQCAtNDEsNiAr
NDEsNyBAQCBXSS5BbmltYXRpb24gPSBjbGFzcyBBbmltYXRpb24gZXh0ZW5kcyBXSS5PYmplY3QK
ICAgICAgICAgdGhpcy5fYmFja3RyYWNlID0gYmFja3RyYWNlIHx8IFtdOwogCiAgICAgICAgIHRo
aXMuX2VmZmVjdFRhcmdldCA9IHVuZGVmaW5lZDsKKyAgICAgICAgdGhpcy5fZWZmZWN0UHNldWRv
SWQgPSB1bmRlZmluZWQ7CiAgICAgICAgIHRoaXMuX3JlcXVlc3RFZmZlY3RUYXJnZXRDYWxsYmFj
a3MgPSBudWxsOwogICAgIH0KIApAQCAtMTk0LDcgKzE5NSw3IEBAIFdJLkFuaW1hdGlvbiA9IGNs
YXNzIEFuaW1hdGlvbiBleHRlbmRzIFdJLk9iamVjdAogICAgIHJlcXVlc3RFZmZlY3RUYXJnZXQo
Y2FsbGJhY2spCiAgICAgewogICAgICAgICBpZiAodGhpcy5fZWZmZWN0VGFyZ2V0ICE9PSB1bmRl
ZmluZWQpIHsKLSAgICAgICAgICAgIGNhbGxiYWNrKHRoaXMuX2VmZmVjdFRhcmdldCk7CisgICAg
ICAgICAgICBjYWxsYmFjayh0aGlzLl9lZmZlY3RUYXJnZXQsIHRoaXMuX2VmZmVjdFBzZXVkb0lk
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0yMDgsMTEgKzIwOSwxMiBA
QCBXSS5BbmltYXRpb24gPSBjbGFzcyBBbmltYXRpb24gZXh0ZW5kcyBXSS5PYmplY3QKICAgICAg
ICAgV0kuZG9tTWFuYWdlci5lbnN1cmVEb2N1bWVudCgpOwogCiAgICAgICAgIGxldCB0YXJnZXQg
PSBXSS5hc3N1bWluZ01haW5UYXJnZXQoKTsKLSAgICAgICAgdGFyZ2V0LkFuaW1hdGlvbkFnZW50
LnJlcXVlc3RFZmZlY3RUYXJnZXQodGhpcy5fYW5pbWF0aW9uSWQsIChlcnJvciwgbm9kZUlkKSA9
PiB7CisgICAgICAgIHRhcmdldC5BbmltYXRpb25BZ2VudC5yZXF1ZXN0RWZmZWN0VGFyZ2V0KHRo
aXMuX2FuaW1hdGlvbklkLCAoZXJyb3IsIG5vZGVJZCwgcHNldWRvSWQpID0+IHsKICAgICAgICAg
ICAgIHRoaXMuX2VmZmVjdFRhcmdldCA9ICFlcnJvciA/IFdJLmRvbU1hbmFnZXIubm9kZUZvcklk
KG5vZGVJZCkgOiBudWxsOworICAgICAgICAgICAgdGhpcy5fZWZmZWN0UHNldWRvSWQgPSBwc2V1
ZG9JZDsKIAogICAgICAgICAgICAgZm9yIChsZXQgcmVxdWVzdEVmZmVjdFRhcmdldENhbGxiYWNr
IG9mIHRoaXMuX3JlcXVlc3RFZmZlY3RUYXJnZXRDYWxsYmFja3MpCi0gICAgICAgICAgICAgICAg
cmVxdWVzdEVmZmVjdFRhcmdldENhbGxiYWNrKHRoaXMuX2VmZmVjdFRhcmdldCk7CisgICAgICAg
ICAgICAgICAgcmVxdWVzdEVmZmVjdFRhcmdldENhbGxiYWNrKHRoaXMuX2VmZmVjdFRhcmdldCwg
dGhpcy5fZWZmZWN0UHNldWRvSWQpOwogCiAgICAgICAgICAgICB0aGlzLl9yZXF1ZXN0RWZmZWN0
VGFyZ2V0Q2FsbGJhY2tzID0gbnVsbDsKICAgICAgICAgfSk7CkBAIC0yMzUsNiArMjM3LDcgQEAg
V0kuQW5pbWF0aW9uID0gY2xhc3MgQW5pbWF0aW9uIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgdGFy
Z2V0Q2hhbmdlZCgpCiAgICAgewogICAgICAgICB0aGlzLl9lZmZlY3RUYXJnZXQgPSB1bmRlZmlu
ZWQ7CisgICAgICAgIHRoaXMuX2VmZmVjdFBzZXVkb0lkID0gdW5kZWZpbmVkOwogCiAgICAgICAg
IHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkFuaW1hdGlvbi5FdmVudC5UYXJnZXRD
aGFuZ2VkKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9BbmltYXRpb25Db250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0FuaW1hdGlvbkNvbnRlbnRWaWV3LmpzCmluZGV4IGM2
MjYwZDBmYzJjZjc2ZTNhMTcyNGQ5YzE4YzNiMGI2NzQxNTcxM2IuLmMzYzA2ZTRjZTAxYmFjNjFk
ZTA4N2I3MGJlNTlmODg3N2Q0ZmY5YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0FuaW1hdGlvbkNvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0FuaW1hdGlvbkNvbnRlbnRWaWV3
LmpzCkBAIC0xNjIsMTIgKzE2MiwxMiBAQCBXSS5BbmltYXRpb25Db250ZW50VmlldyA9IGNsYXNz
IEFuaW1hdGlvbkNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVudFZpZXcKIAogICAgIF9yZWZy
ZXNoU3VidGl0bGUoKQogICAgIHsKLSAgICAgICAgdGhpcy5yZXByZXNlbnRlZE9iamVjdC5yZXF1
ZXN0RWZmZWN0VGFyZ2V0KChkb21Ob2RlKSA9PiB7CisgICAgICAgIHRoaXMucmVwcmVzZW50ZWRP
YmplY3QucmVxdWVzdEVmZmVjdFRhcmdldCgoZG9tTm9kZSwgcHNldWRvSWQpID0+IHsKICAgICAg
ICAgICAgIHRoaXMuX2FuaW1hdGlvblRhcmdldERPTU5vZGUgPSBkb21Ob2RlOwogCiAgICAgICAg
ICAgICB0aGlzLl9zdWJ0aXRsZUVsZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsKICAgICAgICAgICAg
IGlmIChkb21Ob2RlKQotICAgICAgICAgICAgICAgIHRoaXMuX3N1YnRpdGxlRWxlbWVudC5hcHBl
bmRDaGlsZChXSS5saW5raWZ5Tm9kZVJlZmVyZW5jZShkb21Ob2RlKSk7CisgICAgICAgICAgICAg
ICAgdGhpcy5fc3VidGl0bGVFbGVtZW50LmFwcGVuZENoaWxkKFdJLmxpbmtpZnlOb2RlUmVmZXJl
bmNlKGRvbU5vZGUsIHsgcHNldWRvSWQgfSkpOwogICAgICAgICB9KTsKICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0FuaW1hdGlv
bkRldGFpbHNTaWRlYmFyUGFuZWwuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9BbmltYXRpb25EZXRhaWxzU2lkZWJhclBhbmVsLmpzCmluZGV4IDhjM2ZkOTRi
ZjA4Y2EyNzZiMWQyMzMzNTc4NDdmZDM1MTMyMmEyNzQuLmNmODcyMjAzZmUxODMyMmQ0MGZmYzhl
ZGI5MmY2YWQ3ZjZiZDNkMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0FuaW1hdGlvbkRldGFpbHNTaWRlYmFyUGFuZWwuanMKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQW5pbWF0aW9uRGV0YWlsc1Np
ZGViYXJQYW5lbC5qcwpAQCAtMTc5LDggKzE3OSw4IEBAIFdJLkFuaW1hdGlvbkRldGFpbHNTaWRl
YmFyUGFuZWwgPSBjbGFzcyBBbmltYXRpb25EZXRhaWxzU2lkZWJhclBhbmVsIGV4dGVuZHMgV0ku
CiAgICAgICAgIHRoaXMuX2Nzc1RyYW5zaXRpb25Qcm9wZXJ0eVJvdy52YWx1ZSA9IGNzc1RyYW5z
aXRpb25Qcm9wZXJ0eTsKIAogICAgICAgICB0aGlzLl90YXJnZXRSb3cudmFsdWUgPSBudWxsOwot
ICAgICAgICB0aGlzLl9hbmltYXRpb24ucmVxdWVzdEVmZmVjdFRhcmdldCgoZG9tTm9kZSkgPT4g
ewotICAgICAgICAgICAgdGhpcy5fdGFyZ2V0Um93LnZhbHVlID0gZG9tTm9kZSA/IFdJLmxpbmtp
ZnlOb2RlUmVmZXJlbmNlKGRvbU5vZGUpIDogbnVsbDsKKyAgICAgICAgdGhpcy5fYW5pbWF0aW9u
LnJlcXVlc3RFZmZlY3RUYXJnZXQoKGRvbU5vZGUsIHBzZXVkb0lkKSA9PiB7CisgICAgICAgICAg
ICB0aGlzLl90YXJnZXRSb3cudmFsdWUgPSBkb21Ob2RlID8gV0kubGlua2lmeU5vZGVSZWZlcmVu
Y2UoZG9tTm9kZSwgeyBwc2V1ZG9JZCB9KSA6IG51bGw7CiAgICAgICAgIH0pOwogICAgIH0KIApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CmluZGV4IDFiZDM1MjViN2ViMmEyOWM3NmJhNjM2NjFiOTBlMGI4MTViNTg0YzMuLjI3Y2E4ZWQ3
YzBmNTE0YTA5NjY5ZDQ5MDhlZTMxNmNmM2M3YjU3ODEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAor
MjAyMi0wMS0xNCAgQW50b2luZSBRdWludCAgPGdyYW91dHNAd2Via2l0Lm9yZz4KKworICAgICAg
ICBbV2ViIEluc3BlY3Rvcl0gR3JhcGhpY3MgdGFiIHNob3VsZCBkaXNwbGF5IHBzZXVkby1lbGVt
ZW50cyBmb3IgbW9yZSB0aGFuIDo6YmVmb3JlIGFuZCA6OmFmdGVyCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzUyMzQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaGVjayB0aGF0IHJlcXVlc3RFZmZlY3RU
YXJnZXQoKSByZXR1cm5zIHRoZSBjb3JyZWN0IHBzZXVkb0lkLgorCisgICAgICAgICogaW5zcGVj
dG9yL2FuaW1hdGlvbi90YXJnZXRDaGFuZ2VkLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvYW5pbWF0aW9uL3RhcmdldENoYW5nZWQuaHRtbDoKKwogMjAyMi0wMS0xNCAgQWxhbiBC
dWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bSUZDXSBJbmNvcnJlY3Qg
cm9vdCBpbmxpbmUgYm94IHBvc2l0aW9uIHdoZW4gbm9uLWVtcHR5IGF0b21pYyBpbmxpbmUgbGV2
ZWwgY2hpbGQgYm94IGhhcyBoZWlnaHQ6IDBweApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2FuaW1hdGlvbi90YXJnZXRDaGFuZ2VkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9hbmltYXRpb24vdGFyZ2V0Q2hhbmdlZC1leHBlY3RlZC50eHQKaW5kZXggOTg4
ZGUyMmQzNDhjZWE5YWM5YWZmM2ZhZDFmMTQyNTEwNzZjZDdkNS4uMTU3ZjNkYzFmNDMxMzBhODJm
Mjg5ZTJhODkxYjc2OWMyMDFmZDI3YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2FuaW1hdGlvbi90YXJnZXRDaGFuZ2VkLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvYW5pbWF0aW9uL3RhcmdldENoYW5nZWQtZXhwZWN0ZWQudHh0CkBAIC00LDE1ICs0
LDMzIEBAIFRlc3RzIGZvciB0aGUgQW5pbWF0aW9uLnRhcmdldENoYW5nZWQgZXZlbnQuCiA9PSBS
dW5uaW5nIHRlc3Qgc3VpdGU6IEFuaW1hdGlvbi50YXJnZXRDaGFuZ2VkCiAtLSBSdW5uaW5nIHRl
c3QgY2FzZTogQW5pbWF0aW9uLnRhcmdldENoYW5nZWQuTmV3VGFyZ2V0CiBQQVNTOiBBbmltYXRp
b24gc2hvdWxkIGhhdmUgYSB0YXJnZXQuCitQQVNTOiBBbmltYXRpb24gc2hvdWxkIG5vdCBoYXZl
IGEgcHNldWRvLWVsZW1lbnQuCiBDaGFuZ2luZyB0YXJnZXQuLi4KIAogUEFTUzogQW5pbWF0aW9u
IHNob3VsZCBoYXZlIGEgdGFyZ2V0LgorUEFTUzogQW5pbWF0aW9uIHNob3VsZCBub3QgaGF2ZSBh
IHBzZXVkby1lbGVtZW50LgogUEFTUzogQW5pbWF0aW9uIGVmZmVjdCBzaG91bGQgaGF2ZSBjaGFu
Z2VkLgogCiAtLSBSdW5uaW5nIHRlc3QgY2FzZTogQW5pbWF0aW9uLnRhcmdldENoYW5nZWQuTnVs
bFRhcmdldAogUEFTUzogQW5pbWF0aW9uIHNob3VsZCBoYXZlIGEgdGFyZ2V0LgorUEFTUzogQW5p
bWF0aW9uIHNob3VsZCBub3QgaGF2ZSBhIHBzZXVkby1lbGVtZW50LgogQ2hhbmdpbmcgdGFyZ2V0
Li4uCiAKIFBBU1M6IEFuaW1hdGlvbiBzaG91bGQgbm90IGhhdmUgYSB0YXJnZXQuCitQQVNTOiBB
bmltYXRpb24gc2hvdWxkIG5vdCBoYXZlIGEgcHNldWRvLWVsZW1lbnQuCiBQQVNTOiBBbmltYXRp
b24gZWZmZWN0IHNob3VsZCBoYXZlIGNoYW5nZWQuCiAKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBB
bmltYXRpb24udGFyZ2V0Q2hhbmdlZC5OZXdUYXJnZXRXaXRoUHNldWRvSWQKK1BBU1M6IEFuaW1h
dGlvbiBzaG91bGQgbm90IGhhdmUgYSB0YXJnZXQuCitQQVNTOiBBbmltYXRpb24gc2hvdWxkIG5v
dCBoYXZlIGEgcHNldWRvLWVsZW1lbnQuCitDaGFuZ2luZyB0YXJnZXQuLi4KKworUEFTUzogQW5p
bWF0aW9uIHNob3VsZCBoYXZlIGEgdGFyZ2V0LgorUEFTUzogQW5pbWF0aW9uIHNob3VsZCBub3Qg
aGF2ZSBhIHBzZXVkby1lbGVtZW50LgorUEFTUzogQW5pbWF0aW9uIGVmZmVjdCBzaG91bGQgaGF2
ZSBjaGFuZ2VkLgorQ2hhbmdpbmcgdGFyZ2V0IGFnYWluLi4uCisKK1BBU1M6IEFuaW1hdGlvbiBz
aG91bGQgaGF2ZSBhIHRhcmdldC4KK1BBU1M6IEFuaW1hdGlvbiBzaG91bGQgaGF2ZSBhIHBzZXVk
by1lbGVtZW50LgorUEFTUzogQW5pbWF0aW9uIGVmZmVjdCB0YXJnZXQgc2hvdWxkIG5vdCBoYXZl
IGNoYW5nZWQuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9hbmltYXRpb24v
dGFyZ2V0Q2hhbmdlZC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2FuaW1hdGlvbi90YXJn
ZXRDaGFuZ2VkLmh0bWwKaW5kZXggYmU3MDVmNmM4YTMxNGViZmUyYWQ2NDkzYWI3M2UzMmQxMDJl
YTY4Yy4uZGYxZjRkZDhmZjNhN2RmMzVkZWE1OTBkNGEzY2U5NmRjOTllNjlmNiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2FuaW1hdGlvbi90YXJnZXRDaGFuZ2VkLmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2FuaW1hdGlvbi90YXJnZXRDaGFuZ2VkLmh0bWwKQEAg
LTI4LDggKzI4LDkgQEAgZnVuY3Rpb24gdGVzdCgpCiAKICAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuYXNzZXJ0KGFuaW1hdGlvbi5hbmltYXRpb25UeXBlID09PSBXSS5BbmltYXRpb24uVHlwZS5X
ZWJBbmltYXRpb24sICJBbmltYXRpb24gc2hvdWxkIGJlIGEgd2ViIGFuaW1hdGlvbi4iKTsKIAot
ICAgICAgICAgICAgbGV0IFtvbGRUYXJnZXRdID0gYXdhaXQgcHJvbWlzaWZ5KChjYWxsYmFjaykg
PT4geyBhbmltYXRpb24ucmVxdWVzdEVmZmVjdFRhcmdldChjYWxsYmFjayk7IH0pOworICAgICAg
ICAgICAgbGV0IFtvbGRUYXJnZXQsIG9sZFBzZXVkb0lkXSA9IGF3YWl0IHByb21pc2lmeSgoY2Fs
bGJhY2spID0+IHsgYW5pbWF0aW9uLnJlcXVlc3RFZmZlY3RUYXJnZXQoY2FsbGJhY2spOyB9KTsK
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChvbGRUYXJnZXQgaW5zdGFuY2Vv
ZiBXSS5ET01Ob2RlLCAiQW5pbWF0aW9uIHNob3VsZCBoYXZlIGEgdGFyZ2V0LiIpOworICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KG9sZFBzZXVkb0lkID09PSB1bmRlZmluZWQs
ICJBbmltYXRpb24gc2hvdWxkIG5vdCBoYXZlIGEgcHNldWRvLWVsZW1lbnQuIik7CiAKICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJDaGFuZ2luZyB0YXJnZXQuLi5cbiIpOwogICAgICAg
ICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoWwpAQCAtMzcsOCArMzgsOSBAQCBmdW5jdGlvbiB0ZXN0
KCkKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKGB3aW5kb3cu
YW5pbWF0aW9uLmVmZmVjdC50YXJnZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKWAp
LAogICAgICAgICAgICAgXSk7CiAKLSAgICAgICAgICAgIGxldCBbbmV3VGFyZ2V0XSA9IGF3YWl0
IHByb21pc2lmeSgoY2FsbGJhY2spID0+IHsgYW5pbWF0aW9uLnJlcXVlc3RFZmZlY3RUYXJnZXQo
Y2FsbGJhY2spOyB9KTsKKyAgICAgICAgICAgIGxldCBbbmV3VGFyZ2V0LCBuZXdQc2V1ZG9JZF0g
PSBhd2FpdCBwcm9taXNpZnkoKGNhbGxiYWNrKSA9PiB7IGFuaW1hdGlvbi5yZXF1ZXN0RWZmZWN0
VGFyZ2V0KGNhbGxiYWNrKTsgfSk7CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRo
YXQobmV3VGFyZ2V0IGluc3RhbmNlb2YgV0kuRE9NTm9kZSwgIkFuaW1hdGlvbiBzaG91bGQgaGF2
ZSBhIHRhcmdldC4iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChuZXdQ
c2V1ZG9JZCA9PT0gdW5kZWZpbmVkLCAiQW5pbWF0aW9uIHNob3VsZCBub3QgaGF2ZSBhIHBzZXVk
by1lbGVtZW50LiIpOwogCiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdE5vdEVxdWFs
KG5ld1RhcmdldCwgb2xkVGFyZ2V0LCAiQW5pbWF0aW9uIGVmZmVjdCBzaG91bGQgaGF2ZSBjaGFu
Z2VkLiIpOwogICAgICAgICB9LApAQCAtNTksOCArNjEsOSBAQCBmdW5jdGlvbiB0ZXN0KCkKIAog
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQoYW5pbWF0aW9uLmFuaW1hdGlvblR5cGUg
PT09IFdJLkFuaW1hdGlvbi5UeXBlLldlYkFuaW1hdGlvbiwgIkFuaW1hdGlvbiBzaG91bGQgYmUg
YSB3ZWIgYW5pbWF0aW9uLiIpOwogCi0gICAgICAgICAgICBsZXQgW29sZFRhcmdldF0gPSBhd2Fp
dCBwcm9taXNpZnkoKGNhbGxiYWNrKSA9PiB7IGFuaW1hdGlvbi5yZXF1ZXN0RWZmZWN0VGFyZ2V0
KGNhbGxiYWNrKTsgfSk7CisgICAgICAgICAgICBsZXQgW29sZFRhcmdldCwgb2xkUHNldWRvSWRd
ID0gYXdhaXQgcHJvbWlzaWZ5KChjYWxsYmFjaykgPT4geyBhbmltYXRpb24ucmVxdWVzdEVmZmVj
dFRhcmdldChjYWxsYmFjayk7IH0pOwogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RU
aGF0KG9sZFRhcmdldCBpbnN0YW5jZW9mIFdJLkRPTU5vZGUsICJBbmltYXRpb24gc2hvdWxkIGhh
dmUgYSB0YXJnZXQuIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQob2xk
UHNldWRvSWQgPT09IHVuZGVmaW5lZCwgIkFuaW1hdGlvbiBzaG91bGQgbm90IGhhdmUgYSBwc2V1
ZG8tZWxlbWVudC4iKTsKIAogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkNoYW5naW5n
IHRhcmdldC4uLlxuIik7CiAgICAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChbCkBAIC02OCwx
MyArNzEsNTkgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5ldmFsdWF0ZUluUGFnZShgd2luZG93LmFuaW1hdGlvbi5lZmZlY3QudGFyZ2V0ID0gbnVsbGAp
LAogICAgICAgICAgICAgXSk7CiAKLSAgICAgICAgICAgIGxldCBbbmV3VGFyZ2V0XSA9IGF3YWl0
IHByb21pc2lmeSgoY2FsbGJhY2spID0+IHsgYW5pbWF0aW9uLnJlcXVlc3RFZmZlY3RUYXJnZXQo
Y2FsbGJhY2spOyB9KTsKKyAgICAgICAgICAgIGxldCBbbmV3VGFyZ2V0LCBuZXdQc2V1ZG9JZF0g
PSBhd2FpdCBwcm9taXNpZnkoKGNhbGxiYWNrKSA9PiB7IGFuaW1hdGlvbi5yZXF1ZXN0RWZmZWN0
VGFyZ2V0KGNhbGxiYWNrKTsgfSk7CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdE51
bGwobmV3VGFyZ2V0LCAiQW5pbWF0aW9uIHNob3VsZCBub3QgaGF2ZSBhIHRhcmdldC4iKTsKKyAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChuZXdQc2V1ZG9JZCA9PT0gdW5kZWZp
bmVkLCAiQW5pbWF0aW9uIHNob3VsZCBub3QgaGF2ZSBhIHBzZXVkby1lbGVtZW50LiIpOwogCiAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdE5vdEVxdWFsKG5ld1RhcmdldCwgb2xkVGFy
Z2V0LCAiQW5pbWF0aW9uIGVmZmVjdCBzaG91bGQgaGF2ZSBjaGFuZ2VkLiIpOwogICAgICAgICB9
LAogICAgIH0pOwogCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiQW5p
bWF0aW9uLnRhcmdldENoYW5nZWQuTmV3VGFyZ2V0V2l0aFBzZXVkb0lkIiwKKyAgICAgICAgZGVz
Y3JpcHRpb246ICJTaG91bGQgcmV0dXJuIGEgdmFsaWQgb2JqZWN0IGZvciB0aGUgZ2l2ZW4gYW5p
bWF0aW9uIGlkZW50aWZpZXIuIiwKKyAgICAgICAgYXN5bmMgdGVzdCgpIHsKKyAgICAgICAgICAg
IGxldCBhbmltYXRpb25zID0gQXJyYXkuZnJvbShXSS5hbmltYXRpb25NYW5hZ2VyLmFuaW1hdGlv
bkNvbGxlY3Rpb24pOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQoYW5pbWF0aW9u
cy5sZW5ndGggPT09IDEsICJUaGVyZSBzaG91bGQgb25seSBiZSBvbmUgYW5pbWF0aW9uLiIpOwor
CisgICAgICAgICAgICBsZXQgYW5pbWF0aW9uID0gYW5pbWF0aW9uc1swXTsKKyAgICAgICAgICAg
IGlmICghYW5pbWF0aW9uKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgYE1pc3NpbmcgYW5pbWF0
aW9uLmA7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChhbmltYXRpb24uYW5pbWF0aW9uVHlwZSA9PT0gV0ku
QW5pbWF0aW9uLlR5cGUuV2ViQW5pbWF0aW9uLCAiQW5pbWF0aW9uIHNob3VsZCBiZSBhIHdlYiBh
bmltYXRpb24uIik7CisKKyAgICAgICAgICAgIGxldCBbb2xkVGFyZ2V0LCBvbGRQc2V1ZG9JZF0g
PSBhd2FpdCBwcm9taXNpZnkoKGNhbGxiYWNrKSA9PiB7IGFuaW1hdGlvbi5yZXF1ZXN0RWZmZWN0
VGFyZ2V0KGNhbGxiYWNrKTsgfSk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdE51
bGwob2xkVGFyZ2V0LCAiQW5pbWF0aW9uIHNob3VsZCBub3QgaGF2ZSBhIHRhcmdldC4iKTsKKyAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChvbGRQc2V1ZG9JZCA9PT0gdW5kZWZp
bmVkLCAiQW5pbWF0aW9uIHNob3VsZCBub3QgaGF2ZSBhIHBzZXVkby1lbGVtZW50LiIpOworCisg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiQ2hhbmdpbmcgdGFyZ2V0Li4uXG4iKTsKKyAg
ICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKFsKKyAgICAgICAgICAgICAgICBhbmltYXRpb24u
YXdhaXRFdmVudChXSS5BbmltYXRpb24uRXZlbnQuVGFyZ2V0Q2hhbmdlZCksCisgICAgICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZShgd2luZG93LmFuaW1hdGlvbi5lZmZl
Y3QudGFyZ2V0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IilgKSwKKyAgICAgICAgICAg
IF0pOworCisgICAgICAgICAgICBsZXQgW25ld1RhcmdldCwgbmV3UHNldWRvSWRdID0gYXdhaXQg
cHJvbWlzaWZ5KChjYWxsYmFjaykgPT4geyBhbmltYXRpb24ucmVxdWVzdEVmZmVjdFRhcmdldChj
YWxsYmFjayk7IH0pOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KG5ld1Rh
cmdldCBpbnN0YW5jZW9mIFdJLkRPTU5vZGUsICJBbmltYXRpb24gc2hvdWxkIGhhdmUgYSB0YXJn
ZXQuIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQobmV3UHNldWRvSWQg
PT09IHVuZGVmaW5lZCwgIkFuaW1hdGlvbiBzaG91bGQgbm90IGhhdmUgYSBwc2V1ZG8tZWxlbWVu
dC4iKTsKKworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3ROb3RFcXVhbChuZXdUYXJn
ZXQsIG9sZFRhcmdldCwgIkFuaW1hdGlvbiBlZmZlY3Qgc2hvdWxkIGhhdmUgY2hhbmdlZC4iKTsK
KworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkNoYW5naW5nIHRhcmdldCBhZ2Fpbi4u
LlxuIik7CisgICAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChbCisgICAgICAgICAgICAgICAg
YW5pbWF0aW9uLmF3YWl0RXZlbnQoV0kuQW5pbWF0aW9uLkV2ZW50LlRhcmdldENoYW5nZWQpLAor
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoYHdpbmRvdy5hbmlt
YXRpb24uZWZmZWN0LnBzZXVkb0VsZW1lbnQgPSAiOjpiZWZvcmUiYCksCisgICAgICAgICAgICBd
KTsKKworICAgICAgICAgICAgbGV0IFtuZXdlc3RUYXJnZXQsIG5ld2VzdFBzZXVkb0lkXSA9IGF3
YWl0IHByb21pc2lmeSgoY2FsbGJhY2spID0+IHsgYW5pbWF0aW9uLnJlcXVlc3RFZmZlY3RUYXJn
ZXQoY2FsbGJhY2spOyB9KTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChu
ZXdlc3RUYXJnZXQgaW5zdGFuY2VvZiBXSS5ET01Ob2RlLCAiQW5pbWF0aW9uIHNob3VsZCBoYXZl
IGEgdGFyZ2V0LiIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChuZXdl
c3RQc2V1ZG9JZCwgImJlZm9yZSIsICJBbmltYXRpb24gc2hvdWxkIGhhdmUgYSBwc2V1ZG8tZWxl
bWVudC4iKTsKKworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChuZXdUYXJn
ZXQsIG5ld2VzdFRhcmdldCwgIkFuaW1hdGlvbiBlZmZlY3QgdGFyZ2V0IHNob3VsZCBub3QgaGF2
ZSBjaGFuZ2VkLiIpOworICAgICAgICB9LAorICAgIH0pOworCiAgICAgc3VpdGUucnVuVGVzdENh
c2VzQW5kRmluaXNoKCk7CiB9CiA8L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449283</attachid>
            <date>2022-01-16 11:13:44 -0800</date>
            <delta_ts>2022-01-18 12:02:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235234-20220116201342.patch</filename>
            <type>text/plain</type>
            <size>39652</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4MDcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
MzczNzU5ZGM2ZDZlYmZiZTRjMWJjOGRiYmRlMjNmMzEwNjliMDdhLi4zNDI0MjU5ZDNkOGE1ZjEz
MjdhNTkzYjQxMzVmMTIwZDdlYTgxNzUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAyMi0wMS0xNiAgQW50b2luZSBRdWludCAgPGdyYW91dHNAd2Via2l0Lm9y
Zz4KKworICAgICAgICBbV2ViIEluc3BlY3Rvcl0gR3JhcGhpY3MgdGFiIHNob3VsZCBkaXNwbGF5
IHBzZXVkby1lbGVtZW50cyBmb3IgbW9yZSB0aGFuIDo6YmVmb3JlIGFuZCA6OmFmdGVyCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzUyMzQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBuZXcgYENT
Uy5TdHlsZWFibGVgIHR5cGUgdG8gYmUgdXNlZCBhcyB0aGUgcGFyYW1ldGVyIHR5cGUgZm9yIGBy
ZXF1ZXN0RWZmZWN0VGFyZ2V0KClgIGNhbGxiYWNrcy4KKworICAgICAgICAqIGluc3BlY3Rvci9w
cm90b2NvbC9BbmltYXRpb24uanNvbjoKKyAgICAgICAgKiBpbnNwZWN0b3IvcHJvdG9jb2wvQ1NT
Lmpzb246CisKIDIwMjItMDEtMTUgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4K
IAogICAgICAgICBbSlNDXSBGaXggRGF0ZSBmdW5jdGlvbnMnIGFyZ3VtZW50IGNvZXJjaW9uCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggYTAwMzRkZDMyNzRhYjIxMWZiYWI5NTQ2ZGI1NmQ3MDUzN2U3ZjMwZS4uODBj
MjY5N2RiZTY1ZTZmYzBiMjNjOGEwNTRjYzIwNGZiOTVlOWU1MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDUyIEBACisyMDIyLTAxLTE2ICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJraXQub3Jn
PgorCisgICAgICAgIFtXZWIgSW5zcGVjdG9yXSBHcmFwaGljcyB0YWIgc2hvdWxkIGRpc3BsYXkg
cHNldWRvLWVsZW1lbnRzIGZvciBtb3JlIHRoYW4gOjpiZWZvcmUgYW5kIDo6YWZ0ZXIKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTIzNAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVudGlsIG5vdywgd2Ug
d291bGQgcGFzcyB0aGUgcmVzdWx0IG9mIEtleWZyYW1lRWZmZWN0Ojp0YXJnZXRFbGVtZW50T3JQ
c2V1ZG9FbGVtZW50KCkgdG8gCisgICAgICAgIEluc3BlY3RvckFuaW1hdGlvbkFnZW50Ojp3aWxs
QXBwbHlLZXlmcmFtZUVmZmVjdCgpLiBUaGlzIG1lYW50IHRoYXQgdGhlIGluc3BlY3RvciB3b3Vs
ZCBvbmx5CisgICAgICAgIGJlIHRvbGQgb2YgYW4gYW5pbWF0aW9uIHRhcmdldCBhcyBhbiBFbGVt
ZW50IG9yIGEgUHNldWRvRWxlbWVudCBidXQgbm90IGFzIGFuIEVsZW1lbnQgLyBQc2V1ZG9JZAor
ICAgICAgICBwYWlyLCB0aHVzIG9ubHkgYWxsb3dpbmcgOjpiZWZvcmUgYW5kIDo6YWZ0ZXIgdG8g
YmUgcmVwcmVzZW50ZWQgc2luY2Ugb25seSB0aG9zZSBwc2V1ZG8tZWxlbWVudHMKKyAgICAgICAg
Y3JlYXRlIGEgUHNldWRvRWxlbWVudC4KKworICAgICAgICBXZSBub3cgcGFzcyBhIFN0eWxlYWJs
ZSwgd2hpY2ggZW5jYXBzdWxhdGUgYW4gRWxlbWVudCAvIFBzZXVkb0lkIHBhaXIsIHRvCisgICAg
ICAgIEluc3BlY3RvckFuaW1hdGlvbkFnZW50Ojp3aWxsQXBwbHlLZXlmcmFtZUVmZmVjdCgpLiBB
ZGRpdGlvbmFsbHksIHRoZSBTdHlsZWFibGUgdGFyZ2V0IGlzIHJlYWQgZnJvbQorICAgICAgICB0
aGUgZWZmZWN0IGZvciBjYWxsYmFja3MgcHJvdmlkZWQgdG8gcmVxdWVzdEVmZmVjdFRhcmdldCgp
LgorCisgICAgICAgIFNhZGx5LCB3ZSBzdGlsbCByZWx5IG9uIFBzZXVkb0VsZW1lbnQsIGJ1dCB0
aGlzIHBhdGNoIGF0IGxlYXN0IHJlbW92ZXMgYWxsIHVzZSBvZiBQc2V1ZG9FbGVtZW50CisgICAg
ICAgIGZyb20gS2V5ZnJhbWVFZmZlY3QgYW5kIHB1c2hlcyBpdCBkb3duIHRvIEluc3BlY3RvckRP
TUFnZW50IHdpdGggYSBuZXcgc3RhdGljIG1ldGhvZAorICAgICAgICBlbGVtZW50VG9QdXNoRm9y
U3R5bGVhYmxlKCkgd2hpY2ggdGhlIG5ldyBwdXNoU3R5bGVhYmxlRWxlbWVudFRvRnJvbnRlbmQo
KSBhbmQgcHVzaFN0eWxlYWJsZVBhdGhUb0Zyb250ZW5kKCkKKyAgICAgICAgbWV0aG9kcyB1c2Ug
dG8gdHVybiB0aGUgU3R5bGVhYmxlIHRvIGFuIEVsZW1lbnQgb3IgUHNldWRvRWxlbWVudC4KKwor
ICAgICAgICBJbiB0aGUgZnV0dXJlLCB3ZSB3b3VsZCBuZWVkIHRvIGZ1cnRoZXIgcmVtb3ZlIFBz
ZXVkb0VsZW1lbnQgZnJvbSBXZWIgSW5zcGVjdG9yIGFuZCBleHBvc2Ugc29tZXRoaW5nCisgICAg
ICAgIHNpbWlsYXIgdG8gU3R5bGVhYmxlIHRocm91Z2hvdXQgdGhlIGNvZGViYXNlLCBvciBmaW5k
IHNvbWUgb3RoZXIgd2F5IHRvIGVuY2Fwc3VsYXRlIGFuIEVsZW1lbnQgLyBQc2V1ZG9JZAorICAg
ICAgICBwYWlyLgorCisgICAgICAgICogYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OktleWZyYW1lRWZmZWN0OjphcHBseSk6CisgICAgICAgIChXZWJDb3Jl
OjpLZXlmcmFtZUVmZmVjdDo6dGFyZ2V0RWxlbWVudE9yUHNldWRvRWxlbWVudCBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgICogYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpLZXlmcmFtZUVmZmVjdDo6dGFyZ2V0IGNvbnN0KToKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEFwcGx5S2V5ZnJhbWVFZmZlY3RJbXBsKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmg6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxBcHBseUtleWZyYW1lRWZmZWN0KToK
KyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFuaW1hdGlvbkFnZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckFuaW1hdGlvbkFnZW50OjpyZXF1ZXN0RWZmZWN0
VGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckFuaW1hdGlvbkFnZW50Ojp3aWxs
QXBwbHlLZXlmcmFtZUVmZmVjdCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JBbmltYXRpb25BZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
Q1NTQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OnByb3Rv
Y29sVmFsdWVGb3JQc2V1ZG9JZCk6CisgICAgICAgIChXZWJDb3JlOjpwcm90b2NvbFZhbHVlRm9y
UHNldWRvSWQpOiBEZWxldGVkLgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
Q1NTQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmVsZW1lbnRUb1B1c2hGb3JTdHlsZWFibGUpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnB1c2hTdHlsZWFibGVFbGVtZW50VG9G
cm9udGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6cHVzaFN0eWxl
YWJsZVBhdGhUb0Zyb250ZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckRPTUFnZW50Lmg6CisKIDIwMjItMDEtMTUgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29t
PgogCiAgICAgICAgIENTUyBHcmFkaWVudHM6IGludGVycG9sYXRpb24gbW9kZSBzaG91bGQgZGVm
YXVsdCB0byBPS0xhYiBpZiBhbnkgbm9uLWxlZ2FjeSBjb2xvciBzeW50YXggY29sb3JzIGFyZSB1
c2VkIGluIHRoZSBzdG9wcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKaW5kZXggMjhjYjBjOTE2MDQw
MTA4ZWU2NDMyYTgxZTExMTk1YWQ2M2FmYjZjOC4uNDJiYzJmNjI4Y2Y0YzkxNzgwNmZjYTVlZTM2
MWVkOWEyM2NlOTQyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAK
KzIwMjItMDEtMTYgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgW1dlYiBJbnNwZWN0b3JdIEdyYXBoaWNzIHRhYiBzaG91bGQgZGlzcGxheSBwc2V1ZG8tZWxl
bWVudHMgZm9yIG1vcmUgdGhhbiA6OmJlZm9yZSBhbmQgOjphZnRlcgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1MjM0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgbmV3IGBDU1NTdHlsZWFibGVg
IG1vZGVsIGNsYXNzIHRvIG1hdGNoIHRoZSBuZXcgYENTUy5TdHlsZWFibGVgIHByb3RvY29sIHR5
cGUuIAorCisgICAgICAgIFdoZW4gY2FsbGluZyBBbmltYXRpb24ucmVxdWVzdEVmZmVjdFRhcmdl
dCgpLCB3ZSBub3cgdXNlIHRoaXMgbmV3IENTU1N0eWxlYWJsZSBjbGFzcworICAgICAgICB0byBk
aXNwbGF5IHBzZXVkby1lbGVtZW50cyBvdGhlciB0aGFuIDo6YmVmb3JlIG9yIDo6YWZ0ZXIgaW4g
dGhlIEdyYXBoaWNzIHRhYi4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQmFzZS9ET01VdGls
aXRpZXMuanM6CisgICAgICAgIChXSS5saW5raWZ5U3R5bGVhYmxlKToKKyAgICAgICAgKFdJLmxp
bmtpZnlOb2RlUmVmZXJlbmNlKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01haW4uaHRtbDoK
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01vZGVscy9BbmltYXRpb24uanM6CisgICAgICAgIChX
SS5BbmltYXRpb24ucHJvdG90eXBlLnJlcXVlc3RFZmZlY3RUYXJnZXQpOgorICAgICAgICAqIFVz
ZXJJbnRlcmZhY2UvTW9kZWxzL0NTU1N0eWxlYWJsZS5qczogQWRkZWQuCisgICAgICAgIChXSS5D
U1NTdHlsZWFibGUucHJvdG90eXBlLmZyb21QYXlsb2FkKToKKyAgICAgICAgKFdJLkNTU1N0eWxl
YWJsZS5wcm90b3R5cGUuZ2V0IG5vZGUpOgorICAgICAgICAoV0kuQ1NTU3R5bGVhYmxlLnByb3Rv
dHlwZS5nZXQgcHNldWRvSWQpOgorICAgICAgICAoV0kuQ1NTU3R5bGVhYmxlLnByb3RvdHlwZS5n
ZXQgZGlzcGxheU5hbWUpOgorICAgICAgICAoV0kuQ1NTU3R5bGVhYmxlKToKKyAgICAgICAgKiBV
c2VySW50ZXJmYWNlL1Rlc3QuaHRtbDoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0Fu
aW1hdGlvbkNvbGxlY3Rpb25Db250ZW50Vmlldy5qczoKKyAgICAgICAgKFdJLkFuaW1hdGlvbkNv
bGxlY3Rpb25Db250ZW50Vmlldy5wcm90b3R5cGUuX2hhbmRsZUNvbnRlbnRWaWV3TW91c2VFbnRl
cik6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9BbmltYXRpb25Db250ZW50Vmlldy5q
czoKKyAgICAgICAgKFdJLkFuaW1hdGlvbkNvbnRlbnRWaWV3LnByb3RvdHlwZS5fcmVmcmVzaFN1
YnRpdGxlKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0FuaW1hdGlvbkRldGFpbHNT
aWRlYmFyUGFuZWwuanM6CisgICAgICAgIChXSS5BbmltYXRpb25EZXRhaWxzU2lkZWJhclBhbmVs
LnByb3RvdHlwZS5fcmVmcmVzaElkZW50aXR5U2VjdGlvbik6CisKIDIwMjItMDEtMTQgIERldmlu
IFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFNv
dXJjZXM6IGNhbm5vdCBjb3B5IGdyb3VwaW5nIG9mIGJsYWNrYm94ZWQgY2FsbCBmcmFtZXMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvQW5pbWF0
aW9uLmpzb24gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL0FuaW1h
dGlvbi5qc29uCmluZGV4IDAyOTY1MTA3ZjViOGY4ZWUxYjQ3ZGYxZTM0MWNiOGZmMWZiZGU2ODku
LjQxNjdiNDRjNDFjNjZiODhlMzdkYjBmMTE4NDQ0ZmJhODI2YmRlN2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvQW5pbWF0aW9uLmpzb24KKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9BbmltYXRpb24uanNv
bgpAQCAtODgsNyArODgsNyBAQAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiYW5pbWF0aW9u
SWQiLCAiJHJlZiI6ICJBbmltYXRpb25JZCIgfQogICAgICAgICAgICAgXSwKICAgICAgICAgICAg
ICJyZXR1cm5zIjogWwotICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibm9kZUlkIiwgIiRyZWYi
OiAiRE9NLk5vZGVJZCIgfQorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZWZmZWN0VGFyZ2V0
IiwgIiRyZWYiOiAiQ1NTLlN0eWxlYWJsZSIgfQogICAgICAgICAgICAgXQogICAgICAgICB9LAog
ICAgICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3By
b3RvY29sL0NTUy5qc29uIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2Nv
bC9DU1MuanNvbgppbmRleCA0YWE3ODZjZTM5NjM3OTNjNWU1NDI1OGRiYzRkZjczN2MzZGUwMjhk
Li4yMzE1NWE0N2ZkYWI4ZmQ2YTEzOGVkMWNmYjY0MDc0NTkxYmMzZjU0IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL0NTUy5qc29uCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvQ1NTLmpzb24KQEAgLTI2NSw2
ICsyNjUsMTQgQEAKICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIsCiAgICAgICAgICAgICAi
ZW51bSI6IFsib2JzZXJ2ZWQiLCAiYWxsIl0sCiAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAi
VGhlIG1vZGUgZm9yIGhvdyBsYXlvdXQgY29udGV4dCB0eXBlIGNoYW5nZXMgYXJlIGhhbmRsZWQg
KGRlZmF1bHQ6IDxjb2RlPk9ic2VydmVkPC9jb2RlPikuIDxjb2RlPk9ic2VydmVkPC9jb2RlPiBs
aW1pdHMgaGFuZGxpbmcgdG8gdGhvc2Ugbm9kZXMgYWxyZWFkeSBrbm93biB0byB0aGUgZnJvbnRl
bmQgYnkgb3RoZXIgbWVhbnMgKGdlbmVyYWxseSwgdGhpcyBtZWFucyB0aGUgbm9kZSBpcyBhIHZp
c2libGUgaXRlbSBpbiB0aGUgRWxlbWVudHMgdGFiKS4gPGNvZGU+QWxsPC9jb2RlPiBpbmZvcm1z
IHRoZSBmcm9udGVuZCBvZiBhbGwgbGF5b3V0IGNvbnRleHQgdHlwZSBjaGFuZ2VzIGFuZCBhbGwg
bm9kZXMgd2l0aCBhIGtub3duIGxheW91dCBjb250ZXh0IGFyZSBzZW50IHRvIHRoZSBmcm9udGVu
ZC4iCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJpZCI6ICJTdHlsZWFibGUi
LAorICAgICAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKKyAgICAgICAgICAgICJwcm9wZXJ0aWVz
IjogWworICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibm9kZUlkIiwgIiRyZWYiOiAiRE9NLk5v
ZGVJZCIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInBzZXVkb0lkIiwgIiRyZWYiOiAi
UHNldWRvSWQiLCAib3B0aW9uYWwiOiB0cnVlIH0KKyAgICAgICAgICAgIF0KICAgICAgICAgfQog
ICAgIF0sCiAgICAgImNvbW1hbmRzIjogWwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5p
bWF0aW9uL0tleWZyYW1lRWZmZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlm
cmFtZUVmZmVjdC5jcHAKaW5kZXggNjRkYjUyMTNjNzYxMDhmNDE5MDRiZDdiZTZkNTJkNDU1Y2U3
MmNlNy4uNmM1MGNjZWUwYTA3ZjkxMGM1ZWQ2ZjUzZWI3N2JhMjBkZDRiMDNhYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuY3BwCkBAIC00OCw3ICs0OCw2IEBA
CiAjaW5jbHVkZSAiS2V5ZnJhbWVFZmZlY3RTdGFjay5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIK
ICNpbmNsdWRlICJQcm9wZXJ0eUFsbG93bGlzdC5oIgotI2luY2x1ZGUgIlBzZXVkb0VsZW1lbnQu
aCIKICNpbmNsdWRlICJSZW5kZXJCb3guaCIKICNpbmNsdWRlICJSZW5kZXJCb3hNb2RlbE9iamVj
dC5oIgogI2luY2x1ZGUgIlJlbmRlckVsZW1lbnQuaCIKQEAgLTEyNjUsMTkgKzEyNjQsNiBAQCBi
b29sIEtleWZyYW1lRWZmZWN0Ojp0YXJnZXRzUHNldWRvRWxlbWVudCgpIGNvbnN0CiAgICAgcmV0
dXJuIG1fdGFyZ2V0LmdldCgpICYmIG1fcHNldWRvSWQgIT0gUHNldWRvSWQ6Ok5vbmU7CiB9CiAK
LUVsZW1lbnQqIEtleWZyYW1lRWZmZWN0Ojp0YXJnZXRFbGVtZW50T3JQc2V1ZG9FbGVtZW50KCkg
Y29uc3QKLXsKLSAgICBpZiAobV90YXJnZXQpIHsKLSAgICAgICAgaWYgKG1fcHNldWRvSWQgPT0g
UHNldWRvSWQ6OkJlZm9yZSkKLSAgICAgICAgICAgIHJldHVybiBtX3RhcmdldC0+YmVmb3JlUHNl
dWRvRWxlbWVudCgpOwotCi0gICAgICAgIGlmIChtX3BzZXVkb0lkID09IFBzZXVkb0lkOjpBZnRl
cikKLSAgICAgICAgICAgIHJldHVybiBtX3RhcmdldC0+YWZ0ZXJQc2V1ZG9FbGVtZW50KCk7Ci0g
ICAgfQotCi0gICAgcmV0dXJuIG1fdGFyZ2V0LmdldCgpOwotfQotCiB2b2lkIEtleWZyYW1lRWZm
ZWN0OjpzZXRUYXJnZXQoUmVmUHRyPEVsZW1lbnQ+JiYgbmV3VGFyZ2V0KQogewogICAgIGlmICht
X3RhcmdldCA9PSBuZXdUYXJnZXQpCkBAIC0xMzcxLDcgKzEzNTcsNyBAQCB2b2lkIEtleWZyYW1l
RWZmZWN0OjphcHBseShSZW5kZXJTdHlsZSYgdGFyZ2V0U3R5bGUsIGNvbnN0IFN0eWxlOjpSZXNv
bHV0aW9uQ29udAogICAgIGF1dG8gY29tcHV0ZWRUaW1pbmcgPSBnZXRDb21wdXRlZFRpbWluZyhz
dGFydFRpbWUpOwogICAgIGlmICghc3RhcnRUaW1lKSB7CiAgICAgICAgIG1fcGhhc2VBdExhc3RB
cHBsaWNhdGlvbiA9IGNvbXB1dGVkVGltaW5nLnBoYXNlOwotICAgICAgICBpZiAoYXV0byogdGFy
Z2V0ID0gdGFyZ2V0RWxlbWVudE9yUHNldWRvRWxlbWVudCgpKQorICAgICAgICBpZiAoYXV0byB0
YXJnZXQgPSB0YXJnZXRTdHlsZWFibGUoKSkKICAgICAgICAgICAgIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6d2lsbEFwcGx5S2V5ZnJhbWVFZmZlY3QoKnRhcmdldCwgKnRoaXMsIGNvbXB1dGVk
VGltaW5nKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9L
ZXlmcmFtZUVmZmVjdC5oIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0
LmgKaW5kZXggMjU0NDA5YzljYWY0MDcyOTNiODZiMTQ4NjFkODhhMzI1ZWE1MWQ5MC4uMzQ5YmFi
ODViYjI0NWI4NzIwMGRjZWE5NjkxYThhZTYwYjAzNGM5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYW5p
bWF0aW9uL0tleWZyYW1lRWZmZWN0LmgKQEAgLTEwNSw3ICsxMDUsNiBAQCBwdWJsaWM6CiAgICAg
Y29uc3QgVmVjdG9yPFBhcnNlZEtleWZyYW1lPiYgcGFyc2VkS2V5ZnJhbWVzKCkgY29uc3QgeyBy
ZXR1cm4gbV9wYXJzZWRLZXlmcmFtZXM7IH0KIAogICAgIEVsZW1lbnQqIHRhcmdldCgpIGNvbnN0
IHsgcmV0dXJuIG1fdGFyZ2V0LmdldCgpOyB9Ci0gICAgRWxlbWVudCogdGFyZ2V0RWxlbWVudE9y
UHNldWRvRWxlbWVudCgpIGNvbnN0OwogICAgIHZvaWQgc2V0VGFyZ2V0KFJlZlB0cjxFbGVtZW50
PiYmKTsKIAogICAgIGJvb2wgdGFyZ2V0c1BzZXVkb0VsZW1lbnQoKSBjb25zdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAK
aW5kZXggM2M5NzhlM2Y0NDIxY2YzNWEyMDYxZGZjZTBkMWUwYWFlNTExMzQ5YS4uZmE5MmFkY2Vh
OWVmODU3MmUyYWE4NTNhMjA3MmNjNjQ1ZmFjMTBmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKQEAgLTExMjAsNyAr
MTEyMCw3IEBAIGJvb2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppc1dlYkdMUHJvZ3JhbUhp
Z2hsaWdodGVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzCiB9CiAjZW5kaWYKIAotdm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxBcHBseUtleWZyYW1lRWZmZWN0SW1wbChJbnN0cnVt
ZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBFbGVtZW50JiB0YXJnZXQsIEtleWZy
YW1lRWZmZWN0JiBlZmZlY3QsIENvbXB1dGVkRWZmZWN0VGltaW5nIGNvbXB1dGVkVGltaW5nKQor
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxBcHBseUtleWZyYW1lRWZmZWN0SW1w
bChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBjb25zdCBTdHlsZWFi
bGUmIHRhcmdldCwgS2V5ZnJhbWVFZmZlY3QmIGVmZmVjdCwgQ29tcHV0ZWRFZmZlY3RUaW1pbmcg
Y29tcHV0ZWRUaW1pbmcpCiB7CiAgICAgaWYgKGF1dG8qIGFuaW1hdGlvbkFnZW50ID0gaW5zdHJ1
bWVudGluZ0FnZW50cy50cmFja2luZ0FuaW1hdGlvbkFnZW50KCkpCiAgICAgICAgIGFuaW1hdGlv
bkFnZW50LT53aWxsQXBwbHlLZXlmcmFtZUVmZmVjdCh0YXJnZXQsIGVmZmVjdCwgY29tcHV0ZWRU
aW1pbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcklu
c3RydW1lbnRhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbi5oCmluZGV4IDgyYWNjZWQyMGNmZDUxMzFiMjUwMmYwOTlhOWM0ZmEyZmRkNjE2
ZWIuLjc3N2E3ZWQ0YzA4MmJkMjRlZjcxOTk1NmUyYTY1Mzc0NGUwNzU1ZjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKQEAg
LTk5LDYgKzk5LDggQEAgY2xhc3MgV2ViS2l0TmFtZWRGbG93OwogY2xhc3MgV2ViU29ja2V0Q2hh
bm5lbDsKIGNsYXNzIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlOwogCitzdHJ1Y3QgU3R5bGVh
YmxlOworCiAjaWYgRU5BQkxFKFdFQkdMKQogY2xhc3MgV2ViR0xQcm9ncmFtOwogI2VuZGlmCkBA
IC0yOTksNyArMzAxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIGlzV2ViR0xQcm9ncmFt
SGlnaGxpZ2h0ZWQoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYsIFdlYkdMUHJvZ3JhbSYpOwog
I2VuZGlmCiAKLSAgICBzdGF0aWMgdm9pZCB3aWxsQXBwbHlLZXlmcmFtZUVmZmVjdChFbGVtZW50
JiwgS2V5ZnJhbWVFZmZlY3QmLCBDb21wdXRlZEVmZmVjdFRpbWluZyk7CisgICAgc3RhdGljIHZv
aWQgd2lsbEFwcGx5S2V5ZnJhbWVFZmZlY3QoY29uc3QgU3R5bGVhYmxlJiwgS2V5ZnJhbWVFZmZl
Y3QmLCBDb21wdXRlZEVmZmVjdFRpbWluZyk7CiAgICAgc3RhdGljIHZvaWQgZGlkQ2hhbmdlV2Vi
QW5pbWF0aW9uTmFtZShXZWJBbmltYXRpb24mKTsKICAgICBzdGF0aWMgdm9pZCBkaWRTZXRXZWJB
bmltYXRpb25FZmZlY3QoV2ViQW5pbWF0aW9uJik7CiAgICAgc3RhdGljIHZvaWQgZGlkQ2hhbmdl
V2ViQW5pbWF0aW9uRWZmZWN0VGltaW5nKFdlYkFuaW1hdGlvbiYpOwpAQCAtNTAyLDcgKzUwNCw3
IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGJvb2wgaXNXZWJHTFByb2dyYW1IaWdobGlnaHRlZElt
cGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIFdlYkdMUHJvZ3JhbSYpOwogI2VuZGlmCiAKLSAgICBz
dGF0aWMgdm9pZCB3aWxsQXBwbHlLZXlmcmFtZUVmZmVjdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50
cyYsIEVsZW1lbnQmLCBLZXlmcmFtZUVmZmVjdCYsIENvbXB1dGVkRWZmZWN0VGltaW5nKTsKKyAg
ICBzdGF0aWMgdm9pZCB3aWxsQXBwbHlLZXlmcmFtZUVmZmVjdEltcGwoSW5zdHJ1bWVudGluZ0Fn
ZW50cyYsIGNvbnN0IFN0eWxlYWJsZSYsIEtleWZyYW1lRWZmZWN0JiwgQ29tcHV0ZWRFZmZlY3RU
aW1pbmcpOwogICAgIHN0YXRpYyB2b2lkIGRpZENoYW5nZVdlYkFuaW1hdGlvbk5hbWVJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMmLCBXZWJBbmltYXRpb24mKTsKICAgICBzdGF0aWMgdm9pZCBkaWRT
ZXRXZWJBbmltYXRpb25FZmZlY3RJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBXZWJBbmltYXRp
b24mKTsKICAgICBzdGF0aWMgdm9pZCBkaWRDaGFuZ2VXZWJBbmltYXRpb25FZmZlY3RUaW1pbmdJ
bXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBXZWJBbmltYXRpb24mKTsKQEAgLTE0NTUsMTAgKzE0
NTcsMTAgQEAgaW5saW5lIGJvb2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppc1dlYkdMUHJv
Z3JhbUhpZ2hsaWdodGVkKFdlYkdMUmVuZGVyaW5nQ28KIH0KICNlbmRpZgogCi1pbmxpbmUgdm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxBcHBseUtleWZyYW1lRWZmZWN0KEVsZW1l
bnQmIHRhcmdldCwgS2V5ZnJhbWVFZmZlY3QmIGVmZmVjdCwgQ29tcHV0ZWRFZmZlY3RUaW1pbmcg
Y29tcHV0ZWRUaW1pbmcpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Ondp
bGxBcHBseUtleWZyYW1lRWZmZWN0KGNvbnN0IFN0eWxlYWJsZSYgdGFyZ2V0LCBLZXlmcmFtZUVm
ZmVjdCYgZWZmZWN0LCBDb21wdXRlZEVmZmVjdFRpbWluZyBjb21wdXRlZFRpbWluZykKIHsKICAg
ICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsKLSAgICBpZiAoYXV0byogYWdl
bnRzID0gaW5zdHJ1bWVudGluZ0FnZW50cyh0YXJnZXQuZG9jdW1lbnQoKSkpCisgICAgaWYgKGF1
dG8qIGFnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHModGFyZ2V0LmVsZW1lbnQuZG9jdW1lbnQo
KSkpCiAgICAgICAgIHdpbGxBcHBseUtleWZyYW1lRWZmZWN0SW1wbCgqYWdlbnRzLCB0YXJnZXQs
IGVmZmVjdCwgY29tcHV0ZWRUaW1pbmcpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFuaW1hdGlvbkFnZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQW5pbWF0aW9uQWdlbnQuY3BwCmluZGV4
IDVlNWNkZjY3MDE0MDBjMTAwMjA5NDE4NTg2ZjYyMDBmZDMwOTUzZDYuLjJiNjJkMDk5YWE0YzE4
MTdjNzY4NGE4MTI5YmI1NTM4NjZkMmE5YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQW5pbWF0aW9uQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQW5pbWF0aW9uQWdlbnQuY3BwCkBAIC0z
OCw2ICszOCw3IEBACiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJGaWxsTW9kZS5oIgog
I2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQ1NTQWdlbnQuaCIKICNpbmNs
dWRlICJJbnNwZWN0b3JET01BZ2VudC5oIgogI2luY2x1ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMu
aCIKICNpbmNsdWRlICJKU0V4ZWNTdGF0ZS5oIgpAQCAtNDcsNiArNDgsNyBAQAogI2luY2x1ZGUg
IlBhZ2UuaCIKICNpbmNsdWRlICJQbGF5YmFja0RpcmVjdGlvbi5oIgogI2luY2x1ZGUgIlJlbmRl
ckVsZW1lbnQuaCIKKyNpbmNsdWRlICJTdHlsZWFibGUuaCIKICNpbmNsdWRlICJUaW1pbmdGdW5j
dGlvbi5oIgogI2luY2x1ZGUgIldlYkFuaW1hdGlvbi5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0lkZW50aWZpZXJzRmFjdG9yeS5oPgpAQCAtMjc5LDcgKzI4MSw3IEBAIFByb3RvY29sOjpF
cnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3RvckFuaW1hdGlvbkFnZW50OjpkaXNhYmxlKCkKICAg
ICByZXR1cm4geyB9OwogfQogCi1Qcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxQcm90b2NvbDo6RE9N
OjpOb2RlSWQ+IEluc3BlY3RvckFuaW1hdGlvbkFnZW50OjpyZXF1ZXN0RWZmZWN0VGFyZ2V0KGNv
bnN0IFByb3RvY29sOjpBbmltYXRpb246OkFuaW1hdGlvbklkJiBhbmltYXRpb25JZCkKK1Byb3Rv
Y29sOjpFcnJvclN0cmluZ09yPFJlZjxQcm90b2NvbDo6Q1NTOjpTdHlsZWFibGU+PiBJbnNwZWN0
b3JBbmltYXRpb25BZ2VudDo6cmVxdWVzdEVmZmVjdFRhcmdldChjb25zdCBQcm90b2NvbDo6QW5p
bWF0aW9uOjpBbmltYXRpb25JZCYgYW5pbWF0aW9uSWQpCiB7CiAgICAgUHJvdG9jb2w6OkVycm9y
U3RyaW5nIGVycm9yU3RyaW5nOwogCkBAIC0yOTcsMTEgKzI5OSwxMSBAQCBQcm90b2NvbDo6RXJy
b3JTdHJpbmdPcjxQcm90b2NvbDo6RE9NOjpOb2RlSWQ+IEluc3BlY3RvckFuaW1hdGlvbkFnZW50
OjpyZXF1ZXN0RQogCiAgICAgYXV0byYga2V5ZnJhbWVFZmZlY3QgPSBkb3duY2FzdDxLZXlmcmFt
ZUVmZmVjdD4oKmVmZmVjdCk7CiAKLSAgICBhdXRvKiB0YXJnZXQgPSBrZXlmcmFtZUVmZmVjdC50
YXJnZXRFbGVtZW50T3JQc2V1ZG9FbGVtZW50KCk7CisgICAgYXV0byB0YXJnZXQgPSBrZXlmcmFt
ZUVmZmVjdC50YXJnZXRTdHlsZWFibGUoKTsKICAgICBpZiAoIXRhcmdldCkKICAgICAgICAgcmV0
dXJuIG1ha2VVbmV4cGVjdGVkKCJBbmltYXRpb24gZm9yIGdpdmVuIGFuaW1hdGlvbklkIGRvZXMg
bm90IGhhdmUgYSB0YXJnZXQiX3MpOwogCi0gICAgcmV0dXJuIGRvbUFnZW50LT5wdXNoTm9kZVBh
dGhUb0Zyb250ZW5kKGVycm9yU3RyaW5nLCB0YXJnZXQpOworICAgIHJldHVybiBkb21BZ2VudC0+
cHVzaFN0eWxlYWJsZVBhdGhUb0Zyb250ZW5kKGVycm9yU3RyaW5nLCAqdGFyZ2V0KTsKIH0KIAog
UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8UmVmPFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmpl
Y3Q+PiBJbnNwZWN0b3JBbmltYXRpb25BZ2VudDo6cmVzb2x2ZUFuaW1hdGlvbihjb25zdCBQcm90
b2NvbDo6QW5pbWF0aW9uOjpBbmltYXRpb25JZCYgYW5pbWF0aW9uSWQsIGNvbnN0IFN0cmluZyYg
b2JqZWN0R3JvdXApCkBAIC0zNzEsNyArMzczLDcgQEAgc3RhdGljIGJvb2wgaXNEZWxheWVkKENv
bXB1dGVkRWZmZWN0VGltaW5nJiBjb21wdXRlZFRpbWluZykKICAgICByZXR1cm4gY29tcHV0ZWRU
aW1pbmcubG9jYWxUaW1lLnZhbHVlKCkgPCAoY29tcHV0ZWRUaW1pbmcuZW5kVGltZSAtIGNvbXB1
dGVkVGltaW5nLmFjdGl2ZUR1cmF0aW9uKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JBbmltYXRpb25B
Z2VudDo6d2lsbEFwcGx5S2V5ZnJhbWVFZmZlY3QoRWxlbWVudCYgdGFyZ2V0LCBLZXlmcmFtZUVm
ZmVjdCYga2V5ZnJhbWVFZmZlY3QsIENvbXB1dGVkRWZmZWN0VGltaW5nIGNvbXB1dGVkVGltaW5n
KQordm9pZCBJbnNwZWN0b3JBbmltYXRpb25BZ2VudDo6d2lsbEFwcGx5S2V5ZnJhbWVFZmZlY3Qo
Y29uc3QgU3R5bGVhYmxlJiB0YXJnZXQsIEtleWZyYW1lRWZmZWN0JiBrZXlmcmFtZUVmZmVjdCwg
Q29tcHV0ZWRFZmZlY3RUaW1pbmcgY29tcHV0ZWRUaW1pbmcpCiB7CiAgICAgYXV0byogYW5pbWF0
aW9uID0ga2V5ZnJhbWVFZmZlY3QuYW5pbWF0aW9uKCk7CiAgICAgaWYgKCFpczxEZWNsYXJhdGl2
ZUFuaW1hdGlvbj4oYW5pbWF0aW9uKSkKQEAgLTQyMSw3ICs0MjMsNyBAQCB2b2lkIEluc3BlY3Rv
ckFuaW1hdGlvbkFnZW50Ojp3aWxsQXBwbHlLZXlmcmFtZUVmZmVjdChFbGVtZW50JiB0YXJnZXQs
IEtleWZyYW1lRQogCiAgICAgaWYgKGVuc3VyZVJlc3VsdC5pc05ld0VudHJ5KSB7CiAgICAgICAg
IGlmIChhdXRvKiBkb21BZ2VudCA9IG1faW5zdHJ1bWVudGluZ0FnZW50cy5wZXJzaXN0ZW50RE9N
QWdlbnQoKSkgewotICAgICAgICAgICAgaWYgKGF1dG8gbm9kZUlkID0gZG9tQWdlbnQtPnB1c2hO
b2RlVG9Gcm9udGVuZCgmdGFyZ2V0KSkKKyAgICAgICAgICAgIGlmIChhdXRvIG5vZGVJZCA9IGRv
bUFnZW50LT5wdXNoU3R5bGVhYmxlRWxlbWVudFRvRnJvbnRlbmQodGFyZ2V0KSkKICAgICAgICAg
ICAgICAgICBldmVudC0+c2V0Tm9kZUlkKG5vZGVJZCk7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBbmltYXRpb25BZ2Vu
dC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBbmltYXRpb25B
Z2VudC5oCmluZGV4IGIzOTA4YzNkMjhkMTM2OWRmNmVjMDliMjRlMzJkOGU0OWYxMjdmM2UuLjIz
OTBhN2M4MmIwNDA1ZDRmOTg5N2I1ZGRkMTIxY2FhYjhjNTRjYTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQW5pbWF0aW9uQWdlbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFuaW1hdGlvbkFnZW50
LmgKQEAgLTQ0LDYgKzQ0LDggQEAgY2xhc3MgS2V5ZnJhbWVFZmZlY3Q7CiBjbGFzcyBQYWdlOwog
Y2xhc3MgV2ViQW5pbWF0aW9uOwogCitzdHJ1Y3QgU3R5bGVhYmxlOworCiBjbGFzcyBJbnNwZWN0
b3JBbmltYXRpb25BZ2VudCBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1Ymxp
YyBJbnNwZWN0b3I6OkFuaW1hdGlvbkJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CiAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9yQW5pbWF0aW9uQWdlbnQpOwogICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwpAQCAtNTgsMTMgKzYwLDEzIEBAIHB1YmxpYzoKICAgICAvLyBBbmlt
YXRpb25CYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIKICAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpF
cnJvclN0cmluZ09yPHZvaWQ+IGVuYWJsZSgpOwogICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVy
cm9yU3RyaW5nT3I8dm9pZD4gZGlzYWJsZSgpOwotICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVy
cm9yU3RyaW5nT3I8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpOb2RlSWQ+IHJlcXVlc3RFZmZl
Y3RUYXJnZXQoY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6QW5pbWF0aW9uOjpBbmltYXRpb25J
ZCYpOworICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8UmVmPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkNTUzo6U3R5bGVhYmxlPj4gcmVxdWVzdEVmZmVjdFRhcmdldChjb25zdCBJ
bnNwZWN0b3I6OlByb3RvY29sOjpBbmltYXRpb246OkFuaW1hdGlvbklkJik7CiAgICAgSW5zcGVj
dG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVu
dGltZTo6UmVtb3RlT2JqZWN0Pj4gcmVzb2x2ZUFuaW1hdGlvbihjb25zdCBJbnNwZWN0b3I6OlBy
b3RvY29sOjpBbmltYXRpb246OkFuaW1hdGlvbklkJiwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91
cCk7CiAgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBzdGFydFRy
YWNraW5nKCk7CiAgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBz
dG9wVHJhY2tpbmcoKTsKIAogICAgIC8vIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbgotICAgIHZv
aWQgd2lsbEFwcGx5S2V5ZnJhbWVFZmZlY3QoRWxlbWVudCYsIEtleWZyYW1lRWZmZWN0JiwgQ29t
cHV0ZWRFZmZlY3RUaW1pbmcpOworICAgIHZvaWQgd2lsbEFwcGx5S2V5ZnJhbWVFZmZlY3QoY29u
c3QgU3R5bGVhYmxlJiwgS2V5ZnJhbWVFZmZlY3QmLCBDb21wdXRlZEVmZmVjdFRpbWluZyk7CiAg
ICAgdm9pZCBkaWRDaGFuZ2VXZWJBbmltYXRpb25OYW1lKFdlYkFuaW1hdGlvbiYpOwogICAgIHZv
aWQgZGlkU2V0V2ViQW5pbWF0aW9uRWZmZWN0KFdlYkFuaW1hdGlvbiYpOwogICAgIHZvaWQgZGlk
Q2hhbmdlV2ViQW5pbWF0aW9uRWZmZWN0VGltaW5nKFdlYkFuaW1hdGlvbiYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcApp
bmRleCA3OWEzMjQ1MGFkNDZkNGExZGRkNzNlOWM5MWI2NWZkOGRjMzNiNjc1Li5jYzNmNWIzODJj
YmNjMzc2YzU0NGI5MjkwOTY4Mjc0YWMxM2JmYmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcApAQCAtNDQwLDcgKzQ0
MCw3IEBAIGJvb2wgSW5zcGVjdG9yQ1NTQWdlbnQ6OmZvcmNlUHNldWRvU3RhdGUoY29uc3QgRWxl
bWVudCYgZWxlbWVudCwgQ1NTU2VsZWN0b3I6OlBzCiAgICAgfQogfQogCi1zdGF0aWMgc3RkOjpv
cHRpb25hbDxQcm90b2NvbDo6Q1NTOjpQc2V1ZG9JZD4gcHJvdG9jb2xWYWx1ZUZvclBzZXVkb0lk
KFBzZXVkb0lkIHBzZXVkb0lkKQorc3RkOjpvcHRpb25hbDxQcm90b2NvbDo6Q1NTOjpQc2V1ZG9J
ZD4gSW5zcGVjdG9yQ1NTQWdlbnQ6OnByb3RvY29sVmFsdWVGb3JQc2V1ZG9JZChQc2V1ZG9JZCBw
c2V1ZG9JZCkKIHsKICAgICBzd2l0Y2ggKHBzZXVkb0lkKSB7CiAgICAgY2FzZSBQc2V1ZG9JZDo6
Rmlyc3RMaW5lOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JDU1NBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JDU1NBZ2VudC5oCmluZGV4IGE0YzYxMjdkMGEyY2ZkNGRjYzRmNWRlODZiMDY5MDI5ODNk
YTc2ZTguLjRlMzVlOWE1YzJiZjgyOTdjZjUzY2E1OGMyMTAxZGZmN2VkMGNlOTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmgK
QEAgLTg1LDYgKzg1LDggQEAgcHVibGljOgogICAgIHN0YXRpYyBDU1NTdHlsZVJ1bGUqIGFzQ1NT
U3R5bGVSdWxlKENTU1J1bGUmKTsKICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxJbnNwZWN0b3I6
OlByb3RvY29sOjpDU1M6OkxheW91dENvbnRleHRUeXBlPiBsYXlvdXRDb250ZXh0VHlwZUZvclJl
bmRlcmVyKFJlbmRlck9iamVjdCopOwogCisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8SW5zcGVj
dG9yOjpQcm90b2NvbDo6Q1NTOjpQc2V1ZG9JZD4gcHJvdG9jb2xWYWx1ZUZvclBzZXVkb0lkKFBz
ZXVkb0lkKTsKKwogICAgIC8vIEluc3BlY3RvckFnZW50QmFzZQogICAgIHZvaWQgZGlkQ3JlYXRl
RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRSb3V0ZXIqLCBJbnNwZWN0b3I6
OkJhY2tlbmREaXNwYXRjaGVyKik7CiAgICAgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFj
a2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcAppbmRleCA3YTc5MGJi
MjNjOGYzN2FmNTdlNDI4NGIzNjdjYWQ5ZDY3OWE0MzRmLi42Y2ZhNDBmOTVkMTdhZjFiNjA3NDY4
YzFhMzI0ODNiNmY2NTI0MmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcApAQCAtMTA0LDYgKzEwNCw3IEBACiAjaW5j
bHVkZSAiU3R5bGVQcm9wZXJ0aWVzLmgiCiAjaW5jbHVkZSAiU3R5bGVSZXNvbHZlci5oIgogI2lu
Y2x1ZGUgIlN0eWxlU2hlZXRMaXN0LmgiCisjaW5jbHVkZSAiU3R5bGVhYmxlLmgiCiAjaW5jbHVk
ZSAiVGV4dC5oIgogI2luY2x1ZGUgIlRleHROb2RlVHJhdmVyc2FsLmgiCiAjaW5jbHVkZSAiVGlt
ZXIuaCIKQEAgLTUzOCw2ICs1MzksMjUgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6ZGlzY2Fy
ZEJpbmRpbmdzKCkKICAgICBtX2NoaWxkcmVuUmVxdWVzdGVkLmNsZWFyKCk7CiB9CiAKK3N0YXRp
YyBFbGVtZW50KiBlbGVtZW50VG9QdXNoRm9yU3R5bGVhYmxlKGNvbnN0IFN0eWxlYWJsZSYgc3R5
bGVhYmxlKQoreworICAgIC8vIEZJWE1FOiBXZSB3YW50IHRvIGdldCByaWQgb2YgUHNldWRvRWxl
bWVudC4KKyAgICBhdXRvKiBlbGVtZW50ID0gJnN0eWxlYWJsZS5lbGVtZW50OworCisgICAgaWYg
KHN0eWxlYWJsZS5wc2V1ZG9JZCA9PSBQc2V1ZG9JZDo6QmVmb3JlKQorICAgICAgICBlbGVtZW50
ID0gZWxlbWVudC0+YmVmb3JlUHNldWRvRWxlbWVudCgpOworICAgIGVsc2UgaWYgKHN0eWxlYWJs
ZS5wc2V1ZG9JZCA9PSBQc2V1ZG9JZDo6QWZ0ZXIpCisgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50
LT5hZnRlclBzZXVkb0VsZW1lbnQoKTsKKworICAgIHJldHVybiBlbGVtZW50OworfQorCitQcm90
b2NvbDo6RE9NOjpOb2RlSWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnB1c2hTdHlsZWFibGVFbGVtZW50
VG9Gcm9udGVuZChjb25zdCBTdHlsZWFibGUmIHN0eWxlYWJsZSkKK3sKKyAgICBhdXRvKiBlbGVt
ZW50ID0gZWxlbWVudFRvUHVzaEZvclN0eWxlYWJsZShzdHlsZWFibGUpOworICAgIHJldHVybiBw
dXNoTm9kZVRvRnJvbnRlbmQoZWxlbWVudCA/IGVsZW1lbnQgOiAmc3R5bGVhYmxlLmVsZW1lbnQp
OworfQorCiBQcm90b2NvbDo6RE9NOjpOb2RlSWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnB1c2hOb2Rl
VG9Gcm9udGVuZChOb2RlKiBub2RlVG9QdXNoKQogewogICAgIGlmICghbm9kZVRvUHVzaCkKQEAg
LTYzNyw2ICs2NTcsMjIgQEAgUHJvdG9jb2w6OkRPTTo6Tm9kZUlkIEluc3BlY3RvckRPTUFnZW50
OjpwdXNoTm9kZVBhdGhUb0Zyb250ZW5kKE5vZGUqIG5vZGVUb1B1c2gKICAgICByZXR1cm4gcHVz
aE5vZGVQYXRoVG9Gcm9udGVuZChpZ25vcmVkLCBub2RlVG9QdXNoKTsKIH0KIAorUmVmPFByb3Rv
Y29sOjpDU1M6OlN0eWxlYWJsZT4gSW5zcGVjdG9yRE9NQWdlbnQ6OnB1c2hTdHlsZWFibGVQYXRo
VG9Gcm9udGVuZChQcm90b2NvbDo6RXJyb3JTdHJpbmcgZXJyb3JTdHJpbmcsIGNvbnN0IFN0eWxl
YWJsZSYgc3R5bGVhYmxlKQoreworICAgIGF1dG8qIGVsZW1lbnQgPSBlbGVtZW50VG9QdXNoRm9y
U3R5bGVhYmxlKHN0eWxlYWJsZSk7CisgICAgYXV0byBub2RlSWQgPSBwdXNoTm9kZVBhdGhUb0Zy
b250ZW5kKGVycm9yU3RyaW5nLCBlbGVtZW50ID8gZWxlbWVudCA6ICZzdHlsZWFibGUuZWxlbWVu
dCk7CisKKyAgICBhdXRvIHByb3RvY29sU3R5bGVhYmxlID0gUHJvdG9jb2w6OkNTUzo6U3R5bGVh
YmxlOjpjcmVhdGUoKQorICAgICAgICAuc2V0Tm9kZUlkKG5vZGVJZCkKKyAgICAgICAgLnJlbGVh
c2UoKTsKKworICAgIGlmIChzdHlsZWFibGUucHNldWRvSWQgIT0gUHNldWRvSWQ6Ok5vbmUpIHsK
KyAgICAgICAgaWYgKGF1dG8gcHNldWRvSWQgPSBJbnNwZWN0b3JDU1NBZ2VudDo6cHJvdG9jb2xW
YWx1ZUZvclBzZXVkb0lkKHN0eWxlYWJsZS5wc2V1ZG9JZCkpCisgICAgICAgICAgICBwcm90b2Nv
bFN0eWxlYWJsZS0+c2V0UHNldWRvSWQoKnBzZXVkb0lkKTsKKyAgICB9CisgICAgcmV0dXJuIHBy
b3RvY29sU3R5bGVhYmxlOworfQorCiBQcm90b2NvbDo6RE9NOjpOb2RlSWQgSW5zcGVjdG9yRE9N
QWdlbnQ6OnB1c2hOb2RlUGF0aFRvRnJvbnRlbmQoUHJvdG9jb2w6OkVycm9yU3RyaW5nIGVycm9y
U3RyaW5nLCBOb2RlKiBub2RlVG9QdXNoKQogewogICAgIEFTU0VSVChub2RlVG9QdXNoKTsgIC8v
IEludmFsaWQgaW5wdXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yRE9NQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yRE9NQWdlbnQuaAppbmRleCA0ZWI2M2I3OTg1NzIxYWM2ZWE2MDAzYzg4NDk4OTE3
OWM3OGVkYTAwLi44YTdiNTZlN2I4MTc5ZjkzMTQxYzM2MWQzZjNkYWI3YWNjYTA0NTU3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2Vu
dC5oCkBAIC03NSw2ICs3NSw4IEBAIGNsYXNzIFBzZXVkb0VsZW1lbnQ7CiBjbGFzcyBSZXZhbGlk
YXRlU3R5bGVBdHRyaWJ1dGVUYXNrOwogY2xhc3MgU2hhZG93Um9vdDsKIAorc3RydWN0IFN0eWxl
YWJsZTsKKwogY2xhc3MgSW5zcGVjdG9yRE9NQWdlbnQgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9y
QWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9yOjpET01CYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIg
ewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3BlY3RvckRPTUFnZW50KTsKICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTE4NCw2ICsxODYsOCBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIHN0eWxlQXR0cmlidXRlSW52YWxpZGF0ZWQoY29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgZWxl
bWVudHMpOwogCisgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpOb2RlSWQgcHVzaFN0eWxl
YWJsZUVsZW1lbnRUb0Zyb250ZW5kKGNvbnN0IFN0eWxlYWJsZSYpOworICAgIFJlZjxJbnNwZWN0
b3I6OlByb3RvY29sOjpDU1M6OlN0eWxlYWJsZT4gcHVzaFN0eWxlYWJsZVBhdGhUb0Zyb250ZW5k
KEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nLCBjb25zdCBTdHlsZWFibGUmKTsKICAg
ICBJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGVJZCBwdXNoTm9kZVRvRnJvbnRlbmQoTm9k
ZSopOwogICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZUlkIHB1c2hOb2RlVG9Gcm9u
dGVuZChJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZyYsIEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkRPTTo6Tm9kZUlkIGRvY3VtZW50Tm9kZUlkLCBOb2RlKik7CiAgICAgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6RE9NOjpOb2RlSWQgcHVzaE5vZGVQYXRoVG9Gcm9udGVuZChOb2RlKik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL0RPTVV0aWxp
dGllcy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvRE9NVXRp
bGl0aWVzLmpzCmluZGV4IDQyYjM5YTEwZGI1ZTNhNDcyMWQ1MmY5ZWIzMmI2MDFmZTNmMzIxMjku
LjNkYjIxNzBlODFkMjZjYjZjOTg0NTQwZGZjY2I5NmM1ZDNmMWUxN2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvRE9NVXRpbGl0aWVzLmpzCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvRE9NVXRpbGl0aWVz
LmpzCkBAIC01Nyw5ICs1NywxOCBAQCBXSS5saW5raWZ5QWNjZXNzaWJpbGl0eU5vZGVSZWZlcmVu
Y2UgPSBmdW5jdGlvbihub2RlKQogICAgIHJldHVybiBsaW5rOwogfTsKIAorV0kubGlua2lmeVN0
eWxlYWJsZSA9IGZ1bmN0aW9uKHN0eWxlYWJsZSkKK3sKKyAgICBsZXQgZGlzcGxheU5hbWUgPSBz
dHlsZWFibGUuZGlzcGxheU5hbWU7CisgICAgbGV0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJzcGFuIik7CisgICAgbGluay5hcHBlbmQoZGlzcGxheU5hbWUpOworICAgIHJldHVybiBX
SS5saW5raWZ5Tm9kZVJlZmVyZW5jZUVsZW1lbnQoc3R5bGVhYmxlLm5vZGUsIGxpbmssIHtkaXNw
bGF5TmFtZX0pOworfTsKKwogV0kubGlua2lmeU5vZGVSZWZlcmVuY2UgPSBmdW5jdGlvbihub2Rl
LCBvcHRpb25zID0ge30pCiB7CiAgICAgbGV0IGRpc3BsYXlOYW1lID0gbm9kZS5kaXNwbGF5TmFt
ZTsKKwogICAgIGlmICghaXNOYU4ob3B0aW9ucy5tYXhMZW5ndGgpKQogICAgICAgICBkaXNwbGF5
TmFtZSA9IGRpc3BsYXlOYW1lLnRydW5jYXRlKG9wdGlvbnMubWF4TGVuZ3RoKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCmluZGV4IDI3OGZjMGEx
OGQ1ODU2NjM5OTM4NzdlZGYxNTBlNTA3OGQxNTA1YTkuLjI4NTI0ZjBiZmRmMWQwODJhZWE0YWFl
MDg5ZWIwNjljYTAwMzdlYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL01haW4uaHRtbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9NYWluLmh0bWwKQEAgLTQwMiw2ICs0MDIsNyBAQAogICAgIDxzY3JpcHQgc3JjPSJNb2Rl
bHMvQ1NTU2VsZWN0b3IuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvQ1NT
U3R5bGVEZWNsYXJhdGlvbi5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9D
U1NTdHlsZVNoZWV0LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0NTU1N0
eWxlYWJsZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9DYWxsRnJhbWUu
anMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvQ2FsbGluZ0NvbnRleHRUcmVl
LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0NhbGxpbmdDb250ZXh0VHJl
ZU5vZGUuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvTW9kZWxzL0FuaW1hdGlvbi5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL01vZGVscy9BbmltYXRpb24uanMKaW5kZXggZTY2ZTlhMjhlMGM0NGIwOWM5
ZGI2MTI3OTM2NzNiYzBkY2MyNGE3Ni4uYTdkZThhZDgyZTIxNTdjZjBkMzgzN2ZmYzg0NjFjMWM0
YmYzMjViMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
TW9kZWxzL0FuaW1hdGlvbi5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Nb2RlbHMvQW5pbWF0aW9uLmpzCkBAIC00MCw2ICs0MCw3IEBAIFdJLkFuaW1hdGlvbiA9
IGNsYXNzIEFuaW1hdGlvbiBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICB0aGlzLl91cGRhdGVF
ZmZlY3QoZWZmZWN0KTsKICAgICAgICAgdGhpcy5fYmFja3RyYWNlID0gYmFja3RyYWNlIHx8IFtd
OwogCisgICAgICAgIC8vIENPTVBBVElCSUxJVFkgKGlPUyAxNSk6IGVmZmVjdFRhcmdldCBjaGFu
Z2VkIGZyb20gRE9NLk5vZGVJZCB0byBDU1MuU3R5bGVhYmxlLgogICAgICAgICB0aGlzLl9lZmZl
Y3RUYXJnZXQgPSB1bmRlZmluZWQ7CiAgICAgICAgIHRoaXMuX3JlcXVlc3RFZmZlY3RUYXJnZXRD
YWxsYmFja3MgPSBudWxsOwogICAgIH0KQEAgLTIwOCw4ICsyMDksOCBAQCBXSS5BbmltYXRpb24g
PSBjbGFzcyBBbmltYXRpb24gZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgV0kuZG9tTWFuYWdl
ci5lbnN1cmVEb2N1bWVudCgpOwogCiAgICAgICAgIGxldCB0YXJnZXQgPSBXSS5hc3N1bWluZ01h
aW5UYXJnZXQoKTsKLSAgICAgICAgdGFyZ2V0LkFuaW1hdGlvbkFnZW50LnJlcXVlc3RFZmZlY3RU
YXJnZXQodGhpcy5fYW5pbWF0aW9uSWQsIChlcnJvciwgbm9kZUlkKSA9PiB7Ci0gICAgICAgICAg
ICB0aGlzLl9lZmZlY3RUYXJnZXQgPSAhZXJyb3IgPyBXSS5kb21NYW5hZ2VyLm5vZGVGb3JJZChu
b2RlSWQpIDogbnVsbDsKKyAgICAgICAgdGFyZ2V0LkFuaW1hdGlvbkFnZW50LnJlcXVlc3RFZmZl
Y3RUYXJnZXQodGhpcy5fYW5pbWF0aW9uSWQsIChlcnJvciwgc3R5bGVhYmxlKSA9PiB7CisgICAg
ICAgICAgICB0aGlzLl9lZmZlY3RUYXJnZXQgPSAhZXJyb3IgPyBXSS5DU1NTdHlsZWFibGUuZnJv
bVBheWxvYWQoc3R5bGVhYmxlKSA6IG51bGw7CiAKICAgICAgICAgICAgIGZvciAobGV0IHJlcXVl
c3RFZmZlY3RUYXJnZXRDYWxsYmFjayBvZiB0aGlzLl9yZXF1ZXN0RWZmZWN0VGFyZ2V0Q2FsbGJh
Y2tzKQogICAgICAgICAgICAgICAgIHJlcXVlc3RFZmZlY3RUYXJnZXRDYWxsYmFjayh0aGlzLl9l
ZmZlY3RUYXJnZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvTW9kZWxzL0NTU1N0eWxlYWJsZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL01vZGVscy9DU1NTdHlsZWFibGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzY4NDU2MGE1MWMx
ZmI5MzFkNTYzMzBkZDY2MjNkNGQxYjczNWRhOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9DU1NTdHlsZWFibGUuanMKQEAgLTAs
MCArMSwzMiBAQAorV0kuQ1NTU3R5bGVhYmxlID0gY2xhc3MgQ1NTU3R5bGVhYmxlCit7CisgICAg
Y29uc3RydWN0b3Iobm9kZSwge3BzZXVkb0lkfSA9IHt9KQorICAgIHsKKyAgICAgICAgY29uc29s
ZS5hc3NlcnQobm9kZSBpbnN0YW5jZW9mIFdJLkRPTU5vZGUsIG5vZGUpOworCisgICAgICAgIGlm
IChwc2V1ZG9JZCkKKyAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KE9iamVjdC52YWx1ZXMoV0ku
Q1NTTWFuYWdlci5Qc2V1ZG9TZWxlY3Rvck5hbWVzKS5pbmNsdWRlcyhwc2V1ZG9JZCksIHBzZXVk
b0lkKTsKKworICAgICAgICB0aGlzLl9ub2RlID0gbm9kZTsKKyAgICAgICAgdGhpcy5fcHNldWRv
SWQgPSBwc2V1ZG9JZCB8fCBudWxsOworICAgIH0KKworICAgIC8vIFN0YXRpYworCisgICAgc3Rh
dGljIGZyb21QYXlsb2FkKHtub2RlSWQsIHBzZXVkb0lkfSkKKyAgICB7CisgICAgICAgIHJldHVy
biBuZXcgV0kuQ1NTU3R5bGVhYmxlKFdJLmRvbU1hbmFnZXIubm9kZUZvcklkKG5vZGVJZCksIHtw
c2V1ZG9JZH0pOworICAgIH0KKworICAgIC8vIFB1YmxpYworCisgICAgZ2V0IG5vZGUoKSB7IHJl
dHVybiB0aGlzLl9ub2RlOyB9CisgICAgZ2V0IHBzZXVkb0lkKCkgeyByZXR1cm4gdGhpcy5fcHNl
dWRvSWQ7IH0KKworICAgIGdldCBkaXNwbGF5TmFtZSgpCisgICAgeworICAgICAgICBpZiAodGhp
cy5fcHNldWRvSWQpCisgICAgICAgICAgICByZXR1cm4gV0kuQ1NTTWFuYWdlci5kaXNwbGF5TmFt
ZUZvclBzZXVkb0lkKHRoaXMuX3BzZXVkb0lkKTsKKyAgICAgICAgcmV0dXJuIHRoaXMuX25vZGUu
ZGlzcGxheU5hbWU7CisgICAgfQorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1Rlc3QuaHRtbCBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1Rlc3QuaHRtbAppbmRleCA1NTZmMDg1OTQ2NWRmNzYwZmYzZjdjYWZiOWJjNTlhNzcz
MDU3Yjc2Li41M2NkM2UzNzE2MWE0NDYxNTUyYmQwMWZlODgzZDgxMTZlMGQ2NTlkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0Lmh0bWwKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC5odG1sCkBAIC0xMzcsNiAr
MTM3LDcgQEAKICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0NTU1NlbGVjdG9yLmpzIj48L3Njcmlw
dD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0NTU1N0eWxlRGVjbGFyYXRpb24uanMiPjwvc2Ny
aXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvQ1NTU3R5bGVTaGVldC5qcyI+PC9zY3JpcHQ+
CisgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9DU1NTdHlsZWFibGUuanMiPjwvc2NyaXB0PgogICAg
IDxzY3JpcHQgc3JjPSJNb2RlbHMvQ2FsbEZyYW1lLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0
IHNyYz0iTW9kZWxzL0NhbGxpbmdDb250ZXh0VHJlZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlw
dCBzcmM9Ik1vZGVscy9DYWxsaW5nQ29udGV4dFRyZWVOb2RlLmpzIj48L3NjcmlwdD4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0FuaW1hdGlv
bkNvbGxlY3Rpb25Db250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0FuaW1hdGlvbkNvbGxlY3Rpb25Db250ZW50Vmlldy5qcwppbmRleCA5ZWMx
ZDJjZmMxZWQ5MTBjOTU5YjE5OGUzYjg4ZWZlNzRhNGFkOTI4Li5jMjBjM2EwODNkZjFlZGZiNzcx
MzEzNDgyYmQwNWMzNmI3MDdhNGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9BbmltYXRpb25Db2xsZWN0aW9uQ29udGVudFZpZXcuanMKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQW5pbWF0aW9uQ29s
bGVjdGlvbkNvbnRlbnRWaWV3LmpzCkBAIC05NiwxMCArOTYsMTAgQEAgV0kuQW5pbWF0aW9uQ29s
bGVjdGlvbkNvbnRlbnRWaWV3ID0gY2xhc3MgQW5pbWF0aW9uQ29sbGVjdGlvbkNvbnRlbnRWaWV3
IGV4dGVuZHMKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBsZXQgYW5pbWF0aW9uID0g
Y29udGVudFZpZXcucmVwcmVzZW50ZWRPYmplY3Q7Ci0gICAgICAgIGFuaW1hdGlvbi5yZXF1ZXN0
RWZmZWN0VGFyZ2V0KChub2RlKSA9PiB7Ci0gICAgICAgICAgICBpZiAoIW5vZGUgfHwgIW5vZGUu
b3duZXJEb2N1bWVudCkKKyAgICAgICAgYW5pbWF0aW9uLnJlcXVlc3RFZmZlY3RUYXJnZXQoKHN0
eWxlYWJsZSkgPT4geworICAgICAgICAgICAgaWYgKCFzdHlsZWFibGUubm9kZSB8fCAhc3R5bGVh
YmxlLm5vZGUub3duZXJEb2N1bWVudCkKICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
ICAgICBub2RlLmhpZ2hsaWdodCgpOworICAgICAgICAgICAgc3R5bGVhYmxlLm5vZGUuaGlnaGxp
Z2h0KCk7CiAgICAgICAgIH0pOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQW5pbWF0aW9uQ29udGVudFZpZXcuanMgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9BbmltYXRpb25Db250ZW50Vmll
dy5qcwppbmRleCBjNjI2MGQwZmMyY2Y3NmUzYTE3MjRkOWMxOGMzYjBiNjc0MTU3MTNiLi4xZDEz
NWU0ODhmODRiMzBiZjQwYzdjZTVjOTAxYzUwMGNmYzE5YjlmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9BbmltYXRpb25Db250ZW50Vmlldy5q
cworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9BbmltYXRp
b25Db250ZW50Vmlldy5qcwpAQCAtMTYyLDEyICsxNjIsMTIgQEAgV0kuQW5pbWF0aW9uQ29udGVu
dFZpZXcgPSBjbGFzcyBBbmltYXRpb25Db250ZW50VmlldyBleHRlbmRzIFdJLkNvbnRlbnRWaWV3
CiAKICAgICBfcmVmcmVzaFN1YnRpdGxlKCkKICAgICB7Ci0gICAgICAgIHRoaXMucmVwcmVzZW50
ZWRPYmplY3QucmVxdWVzdEVmZmVjdFRhcmdldCgoZG9tTm9kZSkgPT4gewotICAgICAgICAgICAg
dGhpcy5fYW5pbWF0aW9uVGFyZ2V0RE9NTm9kZSA9IGRvbU5vZGU7CisgICAgICAgIHRoaXMucmVw
cmVzZW50ZWRPYmplY3QucmVxdWVzdEVmZmVjdFRhcmdldCgoc3R5bGVhYmxlKSA9PiB7CisgICAg
ICAgICAgICB0aGlzLl9hbmltYXRpb25UYXJnZXRET01Ob2RlID0gc3R5bGVhYmxlLm5vZGU7CiAK
ICAgICAgICAgICAgIHRoaXMuX3N1YnRpdGxlRWxlbWVudC5yZW1vdmVDaGlsZHJlbigpOwotICAg
ICAgICAgICAgaWYgKGRvbU5vZGUpCi0gICAgICAgICAgICAgICAgdGhpcy5fc3VidGl0bGVFbGVt
ZW50LmFwcGVuZENoaWxkKFdJLmxpbmtpZnlOb2RlUmVmZXJlbmNlKGRvbU5vZGUpKTsKKyAgICAg
ICAgICAgIGlmIChzdHlsZWFibGUpCisgICAgICAgICAgICAgICAgdGhpcy5fc3VidGl0bGVFbGVt
ZW50LmFwcGVuZENoaWxkKFdJLmxpbmtpZnlTdHlsZWFibGUoc3R5bGVhYmxlKSk7CiAgICAgICAg
IH0pOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvQW5pbWF0aW9uRGV0YWlsc1NpZGViYXJQYW5lbC5qcyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0FuaW1hdGlvbkRldGFpbHNTaWRlYmFyUGFu
ZWwuanMKaW5kZXggOGMzZmQ5NGJmMDhjYTI3NmIxZDIzMzM1Nzg0N2ZkMzUxMzIyYTI3NC4uNDJk
MmMxMWQxMmUzYzcwMjQ2OTk5MDVlNDgyYzI1N2MzOGIwZWVjZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQW5pbWF0aW9uRGV0YWlsc1NpZGVi
YXJQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9BbmltYXRpb25EZXRhaWxzU2lkZWJhclBhbmVsLmpzCkBAIC0xNzksOCArMTc5LDggQEAgV0ku
QW5pbWF0aW9uRGV0YWlsc1NpZGViYXJQYW5lbCA9IGNsYXNzIEFuaW1hdGlvbkRldGFpbHNTaWRl
YmFyUGFuZWwgZXh0ZW5kcyBXSS4KICAgICAgICAgdGhpcy5fY3NzVHJhbnNpdGlvblByb3BlcnR5
Um93LnZhbHVlID0gY3NzVHJhbnNpdGlvblByb3BlcnR5OwogCiAgICAgICAgIHRoaXMuX3Rhcmdl
dFJvdy52YWx1ZSA9IG51bGw7Ci0gICAgICAgIHRoaXMuX2FuaW1hdGlvbi5yZXF1ZXN0RWZmZWN0
VGFyZ2V0KChkb21Ob2RlKSA9PiB7Ci0gICAgICAgICAgICB0aGlzLl90YXJnZXRSb3cudmFsdWUg
PSBkb21Ob2RlID8gV0kubGlua2lmeU5vZGVSZWZlcmVuY2UoZG9tTm9kZSkgOiBudWxsOworICAg
ICAgICB0aGlzLl9hbmltYXRpb24ucmVxdWVzdEVmZmVjdFRhcmdldCgoc3R5bGVhYmxlKSA9PiB7
CisgICAgICAgICAgICB0aGlzLl90YXJnZXRSb3cudmFsdWUgPSBXSS5saW5raWZ5U3R5bGVhYmxl
KHN0eWxlYWJsZSk7CiAgICAgICAgIH0pOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGM2NDA1NGU5ZjQxZjFm
MGFiMWNhNGU2YzZlYzIyM2Q1NGVkNDU2MTAuLmY2NDYzYTgwYzM2YTI3ZjQ0OTM2NTJhZjNiYTg4
YmNmNWFiYTNhNTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMi0wMS0xNiAgQW50b2luZSBR
dWludCAgPGdyYW91dHNAd2Via2l0Lm9yZz4KKworICAgICAgICBbV2ViIEluc3BlY3Rvcl0gR3Jh
cGhpY3MgdGFiIHNob3VsZCBkaXNwbGF5IHBzZXVkby1lbGVtZW50cyBmb3IgbW9yZSB0aGFuIDo6
YmVmb3JlIGFuZCA6OmFmdGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzUyMzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBDaGVjayB0aGF0IHJlcXVlc3RFZmZlY3RUYXJnZXQoKSByZXR1cm5zIHRoZSBj
b3JyZWN0IFN0eWxlYWJsZSBieSBjaGVja2luZyB3aGV0aGVyIGl0J3MgZGVmaW5lZAorICAgICAg
ICBvciBudWxsLCBhbmQgY2hlY2tpbmcgaXRzIGBub2RlYCBhbmQgYHBzZXVkb0lkYCBtZW1iZXJz
LgorCisgICAgICAgICogaW5zcGVjdG9yL2FuaW1hdGlvbi90YXJnZXRDaGFuZ2VkLWV4cGVjdGVk
LnR4dDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYW5pbWF0aW9uL3RhcmdldENoYW5nZWQuaHRtbDoK
KwogMjAyMi0wMS0xNSAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAgICAgICAg
Q1NTIEdyYWRpZW50czogaW50ZXJwb2xhdGlvbiBtb2RlIHNob3VsZCBkZWZhdWx0IHRvIE9LTGFi
IGlmIGFueSBub24tbGVnYWN5IGNvbG9yIHN5bnRheCBjb2xvcnMgYXJlIHVzZWQgaW4gdGhlIHN0
b3BzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvYW5pbWF0aW9uL3RhcmdldENo
YW5nZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2FuaW1hdGlvbi90YXJn
ZXRDaGFuZ2VkLWV4cGVjdGVkLnR4dAppbmRleCA5ODhkZTIyZDM0OGNlYTlhYzlhZmYzZmFkMWYx
NDI1MTA3NmNkN2Q1Li5iNzZkY2M4NDk3MTI1NjYwODMzN2Q0YTViZWRhODM4MTkzOTI1NTk5IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvYW5pbWF0aW9uL3RhcmdldENoYW5nZWQt
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9hbmltYXRpb24vdGFyZ2V0
Q2hhbmdlZC1leHBlY3RlZC50eHQKQEAgLTMsMTYgKzMsMzMgQEAgVGVzdHMgZm9yIHRoZSBBbmlt
YXRpb24udGFyZ2V0Q2hhbmdlZCBldmVudC4KIAogPT0gUnVubmluZyB0ZXN0IHN1aXRlOiBBbmlt
YXRpb24udGFyZ2V0Q2hhbmdlZAogLS0gUnVubmluZyB0ZXN0IGNhc2U6IEFuaW1hdGlvbi50YXJn
ZXRDaGFuZ2VkLk5ld1RhcmdldAotUEFTUzogQW5pbWF0aW9uIHNob3VsZCBoYXZlIGEgdGFyZ2V0
LgorUEFTUzogQW5pbWF0aW9uIGVmZmVjdCBzaG91bGQgaGF2ZSBhIHRhcmdldCBlbGVtZW50Lgor
UEFTUzogQW5pbWF0aW9uIGVmZmVjdCBzaG91bGQgbm90IGhhdmUgYSB0YXJnZXQgcHNldWRvLWVs
ZW1lbnQuCiBDaGFuZ2luZyB0YXJnZXQuLi4KIAotUEFTUzogQW5pbWF0aW9uIHNob3VsZCBoYXZl
IGEgdGFyZ2V0LgotUEFTUzogQW5pbWF0aW9uIGVmZmVjdCBzaG91bGQgaGF2ZSBjaGFuZ2VkLgor
UEFTUzogQW5pbWF0aW9uIGVmZmVjdCBzaG91bGQgaGF2ZSBhIHRhcmdldCBlbGVtZW50LgorUEFT
UzogQW5pbWF0aW9uIGVmZmVjdCBzaG91bGQgbm90IGhhdmUgYSB0YXJnZXQgcHNldWRvLWVsZW1l
bnQuCitQQVNTOiBBbmltYXRpb24gZWZmZWN0IHRhcmdldCBzaG91bGQgaGF2ZSBjaGFuZ2VkLgor
UEFTUzogQW5pbWF0aW9uIGVmZmVjdCB0YXJnZXQgZWxlbWVudCBzaG91bGQgaGF2ZSBjaGFuZ2Vk
LgogCiAtLSBSdW5uaW5nIHRlc3QgY2FzZTogQW5pbWF0aW9uLnRhcmdldENoYW5nZWQuTnVsbFRh
cmdldAotUEFTUzogQW5pbWF0aW9uIHNob3VsZCBoYXZlIGEgdGFyZ2V0LgorUEFTUzogQW5pbWF0
aW9uIGVmZmVjdCBzaG91bGQgaGF2ZSBhIHRhcmdldCBlbGVtZW50LgorUEFTUzogQW5pbWF0aW9u
IGVmZmVjdCBzaG91bGQgbm90IGhhdmUgYSB0YXJnZXQgcHNldWRvLWVsZW1lbnQuCiBDaGFuZ2lu
ZyB0YXJnZXQuLi4KIAotUEFTUzogQW5pbWF0aW9uIHNob3VsZCBub3QgaGF2ZSBhIHRhcmdldC4K
LVBBU1M6IEFuaW1hdGlvbiBlZmZlY3Qgc2hvdWxkIGhhdmUgY2hhbmdlZC4KK1BBU1M6IEFuaW1h
dGlvbiBlZmZlY3Qgc2hvdWxkIG5vdCBoYXZlIGEgdGFyZ2V0IGVsZW1lbnQuCitQQVNTOiBBbmlt
YXRpb24gZWZmZWN0IHRhcmdldCBzaG91bGQgaGF2ZSBjaGFuZ2VkLgorCistLSBSdW5uaW5nIHRl
c3QgY2FzZTogQW5pbWF0aW9uLnRhcmdldENoYW5nZWQuTmV3VGFyZ2V0V2l0aFBzZXVkb0lkCitQ
QVNTOiBBbmltYXRpb24gZWZmZWN0IHNob3VsZCBub3QgaGF2ZSBhIHRhcmdldC4KK0NoYW5naW5n
IHRhcmdldC4uLgorCitQQVNTOiBBbmltYXRpb24gZWZmZWN0IHNob3VsZCBoYXZlIGEgdGFyZ2V0
IGVsZW1lbnQuCitQQVNTOiBBbmltYXRpb24gZWZmZWN0IHNob3VsZCBub3QgaGF2ZSBhIHRhcmdl
dCBwc2V1ZG8tZWxlbWVudC4KK0NoYW5naW5nIHRhcmdldCBhZ2Fpbi4uLgorCitQQVNTOiBBbmlt
YXRpb24gZWZmZWN0IHNob3VsZCBoYXZlIGEgdGFyZ2V0IGVsZW1lbnQuCitQQVNTOiBBbmltYXRp
b24gZWZmZWN0IHNob3VsZCBoYXZlIGEgdGFyZ2V0IHBzZXVkby1lbGVtZW50LgorUEFTUzogQW5p
bWF0aW9uIGVmZmVjdCB0YXJnZXQgc2hvdWxkIGhhdmUgY2hhbmdlZC4KK1BBU1M6IEFuaW1hdGlv
biBlZmZlY3QgdGFyZ2V0IGVsZW1lbnQgc2hvdWxkIG5vdCBoYXZlIGNoYW5nZWQuCiAKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9hbmltYXRpb24vdGFyZ2V0Q2hhbmdlZC5odG1s
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2FuaW1hdGlvbi90YXJnZXRDaGFuZ2VkLmh0bWwKaW5k
ZXggYmU3MDVmNmM4YTMxNGViZmUyYWQ2NDkzYWI3M2UzMmQxMDJlYTY4Yy4uODBiNWJjOTFhMmZj
NjBjNDFlYmZiYjg4ZjUyMGJiMGUyZWViZDFiZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2FuaW1hdGlvbi90YXJnZXRDaGFuZ2VkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2FuaW1hdGlvbi90YXJnZXRDaGFuZ2VkLmh0bWwKQEAgLTI5LDcgKzI5LDggQEAgZnVu
Y3Rpb24gdGVzdCgpCiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChhbmltYXRpb24u
YW5pbWF0aW9uVHlwZSA9PT0gV0kuQW5pbWF0aW9uLlR5cGUuV2ViQW5pbWF0aW9uLCAiQW5pbWF0
aW9uIHNob3VsZCBiZSBhIHdlYiBhbmltYXRpb24uIik7CiAKICAgICAgICAgICAgIGxldCBbb2xk
VGFyZ2V0XSA9IGF3YWl0IHByb21pc2lmeSgoY2FsbGJhY2spID0+IHsgYW5pbWF0aW9uLnJlcXVl
c3RFZmZlY3RUYXJnZXQoY2FsbGJhY2spOyB9KTsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
ZXhwZWN0VGhhdChvbGRUYXJnZXQgaW5zdGFuY2VvZiBXSS5ET01Ob2RlLCAiQW5pbWF0aW9uIHNo
b3VsZCBoYXZlIGEgdGFyZ2V0LiIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RU
aGF0KG9sZFRhcmdldC5ub2RlIGluc3RhbmNlb2YgV0kuRE9NTm9kZSwgIkFuaW1hdGlvbiBlZmZl
Y3Qgc2hvdWxkIGhhdmUgYSB0YXJnZXQgZWxlbWVudC4iKTsKKyAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuZXhwZWN0TnVsbChvbGRUYXJnZXQucHNldWRvSWQsICJBbmltYXRpb24gZWZmZWN0IHNo
b3VsZCBub3QgaGF2ZSBhIHRhcmdldCBwc2V1ZG8tZWxlbWVudC4iKTsKIAogICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5sb2coIkNoYW5naW5nIHRhcmdldC4uLlxuIik7CiAgICAgICAgICAgICBh
d2FpdCBQcm9taXNlLmFsbChbCkBAIC0zOCw5ICszOSwxMSBAQCBmdW5jdGlvbiB0ZXN0KCkKICAg
ICAgICAgICAgIF0pOwogCiAgICAgICAgICAgICBsZXQgW25ld1RhcmdldF0gPSBhd2FpdCBwcm9t
aXNpZnkoKGNhbGxiYWNrKSA9PiB7IGFuaW1hdGlvbi5yZXF1ZXN0RWZmZWN0VGFyZ2V0KGNhbGxi
YWNrKTsgfSk7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQobmV3VGFyZ2V0
IGluc3RhbmNlb2YgV0kuRE9NTm9kZSwgIkFuaW1hdGlvbiBzaG91bGQgaGF2ZSBhIHRhcmdldC4i
KTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChuZXdUYXJnZXQubm9kZSBp
bnN0YW5jZW9mIFdJLkRPTU5vZGUsICJBbmltYXRpb24gZWZmZWN0IHNob3VsZCBoYXZlIGEgdGFy
Z2V0IGVsZW1lbnQuIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdE51bGwobmV3
VGFyZ2V0LnBzZXVkb0lkLCAiQW5pbWF0aW9uIGVmZmVjdCBzaG91bGQgbm90IGhhdmUgYSB0YXJn
ZXQgcHNldWRvLWVsZW1lbnQuIik7CiAKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0
Tm90RXF1YWwobmV3VGFyZ2V0LCBvbGRUYXJnZXQsICJBbmltYXRpb24gZWZmZWN0IHNob3VsZCBo
YXZlIGNoYW5nZWQuIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdE5vdEVxdWFs
KG5ld1RhcmdldCwgb2xkVGFyZ2V0LCAiQW5pbWF0aW9uIGVmZmVjdCB0YXJnZXQgc2hvdWxkIGhh
dmUgY2hhbmdlZC4iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0Tm90RXF1YWwo
bmV3VGFyZ2V0Lm5vZGUsIG9sZFRhcmdldC5ub2RlLCAiQW5pbWF0aW9uIGVmZmVjdCB0YXJnZXQg
ZWxlbWVudCBzaG91bGQgaGF2ZSBjaGFuZ2VkLiIpOwogICAgICAgICB9LAogICAgIH0pOwogCkBA
IC02MCw3ICs2Myw4IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5hc3NlcnQoYW5pbWF0aW9uLmFuaW1hdGlvblR5cGUgPT09IFdJLkFuaW1hdGlvbi5UeXBlLldl
YkFuaW1hdGlvbiwgIkFuaW1hdGlvbiBzaG91bGQgYmUgYSB3ZWIgYW5pbWF0aW9uLiIpOwogCiAg
ICAgICAgICAgICBsZXQgW29sZFRhcmdldF0gPSBhd2FpdCBwcm9taXNpZnkoKGNhbGxiYWNrKSA9
PiB7IGFuaW1hdGlvbi5yZXF1ZXN0RWZmZWN0VGFyZ2V0KGNhbGxiYWNrKTsgfSk7Ci0gICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQob2xkVGFyZ2V0IGluc3RhbmNlb2YgV0kuRE9N
Tm9kZSwgIkFuaW1hdGlvbiBzaG91bGQgaGF2ZSBhIHRhcmdldC4iKTsKKyAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuZXhwZWN0VGhhdChvbGRUYXJnZXQubm9kZSBpbnN0YW5jZW9mIFdJLkRPTU5v
ZGUsICJBbmltYXRpb24gZWZmZWN0IHNob3VsZCBoYXZlIGEgdGFyZ2V0IGVsZW1lbnQuIik7Cisg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdE51bGwob2xkVGFyZ2V0LnBzZXVkb0lkLCAi
QW5pbWF0aW9uIGVmZmVjdCBzaG91bGQgbm90IGhhdmUgYSB0YXJnZXQgcHNldWRvLWVsZW1lbnQu
Iik7CiAKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJDaGFuZ2luZyB0YXJnZXQuLi5c
biIpOwogICAgICAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoWwpAQCAtNjksOSArNzMsNTIgQEAg
ZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAgICBdKTsKIAogICAgICAgICAgICAgbGV0IFtuZXdU
YXJnZXRdID0gYXdhaXQgcHJvbWlzaWZ5KChjYWxsYmFjaykgPT4geyBhbmltYXRpb24ucmVxdWVz
dEVmZmVjdFRhcmdldChjYWxsYmFjayk7IH0pOwotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5l
eHBlY3ROdWxsKG5ld1RhcmdldCwgIkFuaW1hdGlvbiBzaG91bGQgbm90IGhhdmUgYSB0YXJnZXQu
Iik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdE51bGwobmV3VGFyZ2V0LCAiQW5p
bWF0aW9uIGVmZmVjdCBzaG91bGQgbm90IGhhdmUgYSB0YXJnZXQgZWxlbWVudC4iKTsKIAotICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3ROb3RFcXVhbChuZXdUYXJnZXQsIG9sZFRhcmdl
dCwgIkFuaW1hdGlvbiBlZmZlY3Qgc2hvdWxkIGhhdmUgY2hhbmdlZC4iKTsKKyAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuZXhwZWN0Tm90RXF1YWwobmV3VGFyZ2V0LCBvbGRUYXJnZXQsICJBbmlt
YXRpb24gZWZmZWN0IHRhcmdldCBzaG91bGQgaGF2ZSBjaGFuZ2VkLiIpOworICAgICAgICB9LAor
ICAgIH0pOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiQW5pbWF0
aW9uLnRhcmdldENoYW5nZWQuTmV3VGFyZ2V0V2l0aFBzZXVkb0lkIiwKKyAgICAgICAgZGVzY3Jp
cHRpb246ICJTaG91bGQgcmV0dXJuIGEgdmFsaWQgb2JqZWN0IGZvciB0aGUgZ2l2ZW4gYW5pbWF0
aW9uIGlkZW50aWZpZXIuIiwKKyAgICAgICAgYXN5bmMgdGVzdCgpIHsKKyAgICAgICAgICAgIGxl
dCBhbmltYXRpb25zID0gQXJyYXkuZnJvbShXSS5hbmltYXRpb25NYW5hZ2VyLmFuaW1hdGlvbkNv
bGxlY3Rpb24pOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQoYW5pbWF0aW9ucy5s
ZW5ndGggPT09IDEsICJUaGVyZSBzaG91bGQgb25seSBiZSBvbmUgYW5pbWF0aW9uLiIpOworCisg
ICAgICAgICAgICBsZXQgYW5pbWF0aW9uID0gYW5pbWF0aW9uc1swXTsKKyAgICAgICAgICAgIGlm
ICghYW5pbWF0aW9uKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgYE1pc3NpbmcgYW5pbWF0aW9u
LmA7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmFzc2VydChhbmltYXRpb24uYW5pbWF0aW9uVHlwZSA9PT0gV0kuQW5p
bWF0aW9uLlR5cGUuV2ViQW5pbWF0aW9uLCAiQW5pbWF0aW9uIHNob3VsZCBiZSBhIHdlYiBhbmlt
YXRpb24uIik7CisKKyAgICAgICAgICAgIGxldCBbb2xkVGFyZ2V0XSA9IGF3YWl0IHByb21pc2lm
eSgoY2FsbGJhY2spID0+IHsgYW5pbWF0aW9uLnJlcXVlc3RFZmZlY3RUYXJnZXQoY2FsbGJhY2sp
OyB9KTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0TnVsbChvbGRUYXJnZXQsICJB
bmltYXRpb24gZWZmZWN0IHNob3VsZCBub3QgaGF2ZSBhIHRhcmdldC4iKTsKKworICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5sb2coIkNoYW5naW5nIHRhcmdldC4uLlxuIik7CisgICAgICAgICAg
ICBhd2FpdCBQcm9taXNlLmFsbChbCisgICAgICAgICAgICAgICAgYW5pbWF0aW9uLmF3YWl0RXZl
bnQoV0kuQW5pbWF0aW9uLkV2ZW50LlRhcmdldENoYW5nZWQpLAorICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoYHdpbmRvdy5hbmltYXRpb24uZWZmZWN0LnRhcmdl
dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpYCksCisgICAgICAgICAgICBdKTsKKwor
ICAgICAgICAgICAgbGV0IFtuZXdUYXJnZXRdID0gYXdhaXQgcHJvbWlzaWZ5KChjYWxsYmFjaykg
PT4geyBhbmltYXRpb24ucmVxdWVzdEVmZmVjdFRhcmdldChjYWxsYmFjayk7IH0pOworICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KG5ld1RhcmdldC5ub2RlIGluc3RhbmNlb2Yg
V0kuRE9NTm9kZSwgIkFuaW1hdGlvbiBlZmZlY3Qgc2hvdWxkIGhhdmUgYSB0YXJnZXQgZWxlbWVu
dC4iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0TnVsbChuZXdUYXJnZXQucHNl
dWRvSWQsICJBbmltYXRpb24gZWZmZWN0IHNob3VsZCBub3QgaGF2ZSBhIHRhcmdldCBwc2V1ZG8t
ZWxlbWVudC4iKTsKKworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkNoYW5naW5nIHRh
cmdldCBhZ2Fpbi4uLlxuIik7CisgICAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChbCisgICAg
ICAgICAgICAgICAgYW5pbWF0aW9uLmF3YWl0RXZlbnQoV0kuQW5pbWF0aW9uLkV2ZW50LlRhcmdl
dENoYW5nZWQpLAorICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2Uo
YHdpbmRvdy5hbmltYXRpb24uZWZmZWN0LnBzZXVkb0VsZW1lbnQgPSAiOjpiZWZvcmUiYCksCisg
ICAgICAgICAgICBdKTsKKworICAgICAgICAgICAgbGV0IFtuZXdlc3RUYXJnZXRdID0gYXdhaXQg
cHJvbWlzaWZ5KChjYWxsYmFjaykgPT4geyBhbmltYXRpb24ucmVxdWVzdEVmZmVjdFRhcmdldChj
YWxsYmFjayk7IH0pOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KG5ld2Vz
dFRhcmdldC5ub2RlIGluc3RhbmNlb2YgV0kuRE9NTm9kZSwgIkFuaW1hdGlvbiBlZmZlY3Qgc2hv
dWxkIGhhdmUgYSB0YXJnZXQgZWxlbWVudC4iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
ZXhwZWN0RXF1YWwobmV3ZXN0VGFyZ2V0LnBzZXVkb0lkLCAiYmVmb3JlIiwgIkFuaW1hdGlvbiBl
ZmZlY3Qgc2hvdWxkIGhhdmUgYSB0YXJnZXQgcHNldWRvLWVsZW1lbnQuIik7CisKKyAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuZXhwZWN0Tm90RXF1YWwobmV3VGFyZ2V0LCBuZXdlc3RUYXJnZXQs
ICJBbmltYXRpb24gZWZmZWN0IHRhcmdldCBzaG91bGQgaGF2ZSBjaGFuZ2VkLiIpOworICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChuZXdUYXJnZXQubm9kZSwgbmV3ZXN0VGFy
Z2V0Lm5vZGUsICJBbmltYXRpb24gZWZmZWN0IHRhcmdldCBlbGVtZW50IHNob3VsZCBub3QgaGF2
ZSBjaGFuZ2VkLiIpOwogICAgICAgICB9LAogICAgIH0pOwogCg==
</data>
<flag name="review"
          id="475326"
          type_id="1"
          status="+"
          setter="hi"
    />
    <flag name="commit-queue"
          id="475328"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450021</attachid>
            <date>2022-01-26 07:48:11 -0800</date>
            <delta_ts>2022-01-26 09:42:23 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-235234-20220126164810.patch</filename>
            <type>text/plain</type>
            <size>41116</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4NTYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
MTljMTE1MzRhMDlmMWNlODkwM2RiNTFhNmRiNmQ3OTM4Y2Y2MWRhLi43MTMzMzY2MzJmODc3ZWVl
ZDc3NmY4ZjkyNWE3MzhiZTczNWFiYWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAyMi0wMS0yNiAgQW50b2luZSBRdWludCAgPGdyYW91dHNAd2Via2l0Lm9y
Zz4KKworICAgICAgICBbV2ViIEluc3BlY3Rvcl0gR3JhcGhpY3MgdGFiIHNob3VsZCBkaXNwbGF5
IHBzZXVkby1lbGVtZW50cyBmb3IgbW9yZSB0aGFuIDo6YmVmb3JlIGFuZCA6OmFmdGVyCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzUyMzQKKyAgICAg
ICAgPHJkYXI6Ly84Nzc2Njc3Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBEZXZpbiBSb3Vzc28u
CisKKyAgICAgICAgQWRkIGEgbmV3IGBET00uU3R5bGVhYmxlYCB0eXBlIHRvIGJlIHVzZWQgYXMg
dGhlIHBhcmFtZXRlciB0eXBlIGZvciBgcmVxdWVzdEVmZmVjdFRhcmdldCgpYCBjYWxsYmFja3Mu
CisKKyAgICAgICAgKiBpbnNwZWN0b3IvcHJvdG9jb2wvQW5pbWF0aW9uLmpzb246CisgICAgICAg
ICogaW5zcGVjdG9yL3Byb3RvY29sL0RPTS5qc29uOgorCiAyMDIyLTAxLTI0ICBNYXJrIExhbSAg
PG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW5hbWUgVmVjdG9yIGFuZCBGaXhlZFZl
Y3Rvcjo6ZmluZE1hdGNoaW5nIHRvIGZpbmRJZiB0byBtYXRjaCBzdGwgbmFtaW5nLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CmluZGV4IGQwODFlY2QzY2YwOTIxYTY0MzA4ZjQzYTllOTVhNWFmNjQzYjdiYWYuLjY1NWJhYmI4
ZjRiNTUxNDI5OTI1NmM4MGUyY2YyOWY2MzUzMWE5MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1
MyBAQAorMjAyMi0wMS0yNiAgQW50b2luZSBRdWludCAgPGdyYW91dHNAd2Via2l0Lm9yZz4KKwor
ICAgICAgICBbV2ViIEluc3BlY3Rvcl0gR3JhcGhpY3MgdGFiIHNob3VsZCBkaXNwbGF5IHBzZXVk
by1lbGVtZW50cyBmb3IgbW9yZSB0aGFuIDo6YmVmb3JlIGFuZCA6OmFmdGVyCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzUyMzQKKyAgICAgICAgPHJk
YXI6Ly84Nzc2Njc3Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBEZXZpbiBSb3Vzc28uCisKKyAg
ICAgICAgVW50aWwgbm93LCB3ZSB3b3VsZCBwYXNzIHRoZSByZXN1bHQgb2YgS2V5ZnJhbWVFZmZl
Y3Q6OnRhcmdldEVsZW1lbnRPclBzZXVkb0VsZW1lbnQoKSB0byAKKyAgICAgICAgSW5zcGVjdG9y
QW5pbWF0aW9uQWdlbnQ6OndpbGxBcHBseUtleWZyYW1lRWZmZWN0KCkuIFRoaXMgbWVhbnQgdGhh
dCB0aGUgaW5zcGVjdG9yIHdvdWxkIG9ubHkKKyAgICAgICAgYmUgdG9sZCBvZiBhbiBhbmltYXRp
b24gdGFyZ2V0IGFzIGFuIEVsZW1lbnQgb3IgYSBQc2V1ZG9FbGVtZW50IGJ1dCBub3QgYXMgYW4g
RWxlbWVudCAvIFBzZXVkb0lkCisgICAgICAgIHBhaXIsIHRodXMgb25seSBhbGxvd2luZyA6OmJl
Zm9yZSBhbmQgOjphZnRlciB0byBiZSByZXByZXNlbnRlZCBzaW5jZSBvbmx5IHRob3NlIHBzZXVk
by1lbGVtZW50cworICAgICAgICBjcmVhdGUgYSBQc2V1ZG9FbGVtZW50LgorCisgICAgICAgIFdl
IG5vdyBwYXNzIGEgU3R5bGVhYmxlLCB3aGljaCBlbmNhcHN1bGF0ZSBhbiBFbGVtZW50IC8gUHNl
dWRvSWQgcGFpciwgdG8KKyAgICAgICAgSW5zcGVjdG9yQW5pbWF0aW9uQWdlbnQ6OndpbGxBcHBs
eUtleWZyYW1lRWZmZWN0KCkuIEFkZGl0aW9uYWxseSwgdGhlIFN0eWxlYWJsZSB0YXJnZXQgaXMg
cmVhZCBmcm9tCisgICAgICAgIHRoZSBlZmZlY3QgZm9yIGNhbGxiYWNrcyBwcm92aWRlZCB0byBy
ZXF1ZXN0RWZmZWN0VGFyZ2V0KCkuCisKKyAgICAgICAgU2FkbHksIHdlIHN0aWxsIHJlbHkgb24g
UHNldWRvRWxlbWVudCwgYnV0IHRoaXMgcGF0Y2ggYXQgbGVhc3QgcmVtb3ZlcyBhbGwgdXNlIG9m
IFBzZXVkb0VsZW1lbnQKKyAgICAgICAgZnJvbSBLZXlmcmFtZUVmZmVjdCBhbmQgcHVzaGVzIGl0
IGRvd24gdG8gSW5zcGVjdG9yRE9NQWdlbnQgd2l0aCBhIG5ldyBzdGF0aWMgbWV0aG9kCisgICAg
ICAgIGVsZW1lbnRUb1B1c2hGb3JTdHlsZWFibGUoKSB3aGljaCB0aGUgbmV3IHB1c2hTdHlsZWFi
bGVFbGVtZW50VG9Gcm9udGVuZCgpIGFuZCBwdXNoU3R5bGVhYmxlUGF0aFRvRnJvbnRlbmQoKQor
ICAgICAgICBtZXRob2RzIHVzZSB0byB0dXJuIHRoZSBTdHlsZWFibGUgdG8gYW4gRWxlbWVudCBv
ciBQc2V1ZG9FbGVtZW50LgorCisgICAgICAgIEluIHRoZSBmdXR1cmUsIHdlIHdvdWxkIG5lZWQg
dG8gZnVydGhlciByZW1vdmUgUHNldWRvRWxlbWVudCBmcm9tIFdlYiBJbnNwZWN0b3IgYW5kIGV4
cG9zZSBzb21ldGhpbmcKKyAgICAgICAgc2ltaWxhciB0byBTdHlsZWFibGUgdGhyb3VnaG91dCB0
aGUgY29kZWJhc2UsIG9yIGZpbmQgc29tZSBvdGhlciB3YXkgdG8gZW5jYXBzdWxhdGUgYW4gRWxl
bWVudCAvIFBzZXVkb0lkCisgICAgICAgIHBhaXIuCisKKyAgICAgICAgKiBhbmltYXRpb24vS2V5
ZnJhbWVFZmZlY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZnJhbWVFZmZlY3Q6OmFwcGx5
KToKKyAgICAgICAgKFdlYkNvcmU6OktleWZyYW1lRWZmZWN0Ojp0YXJnZXRFbGVtZW50T3JQc2V1
ZG9FbGVtZW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBhbmltYXRpb24vS2V5ZnJhbWVF
ZmZlY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OktleWZyYW1lRWZmZWN0Ojp0YXJnZXQgY29uc3Qp
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsQXBwbHlLZXlmcmFt
ZUVmZmVjdEltcGwpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRp
b24uaDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEFw
cGx5S2V5ZnJhbWVFZmZlY3QpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
QW5pbWF0aW9uQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQW5pbWF0aW9u
QWdlbnQ6OnJlcXVlc3RFZmZlY3RUYXJnZXQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
QW5pbWF0aW9uQWdlbnQ6OndpbGxBcHBseUtleWZyYW1lRWZmZWN0KToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckFuaW1hdGlvbkFnZW50Lmg6CisgICAgICAgICogaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JDU1NBZ2VudDo6cHJvdG9jb2xWYWx1ZUZvclBzZXVkb0lkKToKKyAgICAgICAgKFdlYkNv
cmU6OnByb3RvY29sVmFsdWVGb3JQc2V1ZG9JZCk6IERlbGV0ZWQuCisgICAgICAgICogaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZWxlbWVudFRvUHVz
aEZvclN0eWxlYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6cHVz
aFN0eWxlYWJsZUVsZW1lbnRUb0Zyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckRPTUFnZW50OjpwdXNoU3R5bGVhYmxlUGF0aFRvRnJvbnRlbmQpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuaDoKKwogMjAyMi0wMS0yNSAgQW50b2luZSBR
dWludCAgPGdyYW91dHNAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZWZhY3RvciBLZXlmcmFtZUVm
ZmVjdDo6Z2V0S2V5ZnJhbWVzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDMxZDRhMzBm
ZGEwYzdhYmQ0YmE3Nzc1NWQxZTJmZTFmYWNiOTFlMjIuLjEwOWQyOTlhZjk5ODA1OTRjYmJlYzg0
ZmM1OTY4ZmY0YTQ0NWFkNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1
IEBACisyMDIyLTAxLTI2ICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJraXQub3JnPgorCisg
ICAgICAgIFtXZWIgSW5zcGVjdG9yXSBHcmFwaGljcyB0YWIgc2hvdWxkIGRpc3BsYXkgcHNldWRv
LWVsZW1lbnRzIGZvciBtb3JlIHRoYW4gOjpiZWZvcmUgYW5kIDo6YWZ0ZXIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTIzNAorICAgICAgICA8cmRh
cjovLzg3NzY2Nzc3PgorCisgICAgICAgIFJldmlld2VkIGJ5IERldmluIFJvdXNzby4KKworICAg
ICAgICBBZGQgYSBuZXcgYERPTVN0eWxlYWJsZWAgbW9kZWwgY2xhc3MgdG8gbWF0Y2ggdGhlIG5l
dyBgRE9NLlN0eWxlYWJsZWAgcHJvdG9jb2wgdHlwZS4gCisKKyAgICAgICAgV2hlbiBjYWxsaW5n
IEFuaW1hdGlvbi5yZXF1ZXN0RWZmZWN0VGFyZ2V0KCksIHdlIG5vdyB1c2UgdGhpcyBuZXcgRE9N
U3R5bGVhYmxlIGNsYXNzCisgICAgICAgIHRvIGRpc3BsYXkgcHNldWRvLWVsZW1lbnRzIG90aGVy
IHRoYW4gOjpiZWZvcmUgb3IgOjphZnRlciBpbiB0aGUgR3JhcGhpY3MgdGFiLgorCisgICAgICAg
ICogVXNlckludGVyZmFjZS9CYXNlL0RPTVV0aWxpdGllcy5qczoKKyAgICAgICAgKFdJLmxpbmtp
ZnlTdHlsZWFibGUpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTWFpbi5odG1sOgorICAgICAg
ICAqIFVzZXJJbnRlcmZhY2UvTW9kZWxzL0FuaW1hdGlvbi5qczoKKyAgICAgICAgKFdJLkFuaW1h
dGlvbi5wcm90b3R5cGUucmVxdWVzdEVmZmVjdFRhcmdldCk6CisgICAgICAgICogVXNlckludGVy
ZmFjZS9Nb2RlbHMvRE9NU3R5bGVhYmxlLmpzOiBBZGRlZC4KKyAgICAgICAgKFdJLkRPTVN0eWxl
YWJsZS5wcm90b3R5cGUuZnJvbVBheWxvYWQpOgorICAgICAgICAoV0kuRE9NU3R5bGVhYmxlLnBy
b3RvdHlwZS5nZXQgbm9kZSk6CisgICAgICAgIChXSS5ET01TdHlsZWFibGUucHJvdG90eXBlLmdl
dCBwc2V1ZG9JZCk6CisgICAgICAgIChXSS5ET01TdHlsZWFibGUucHJvdG90eXBlLmdldCBkaXNw
bGF5TmFtZSk6CisgICAgICAgIChXSS5ET01TdHlsZWFibGUpOgorICAgICAgICAqIFVzZXJJbnRl
cmZhY2UvVGVzdC5odG1sOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvQW5pbWF0aW9u
Q29sbGVjdGlvbkNvbnRlbnRWaWV3LmpzOgorICAgICAgICAoV0kuQW5pbWF0aW9uQ29sbGVjdGlv
bkNvbnRlbnRWaWV3LnByb3RvdHlwZS5faGFuZGxlQ29udGVudFZpZXdNb3VzZUVudGVyKToKKyAg
ICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0FuaW1hdGlvbkNvbnRlbnRWaWV3LmpzOgorICAg
ICAgICAoV0kuQW5pbWF0aW9uQ29udGVudFZpZXcucHJvdG90eXBlLl9yZWZyZXNoU3VidGl0bGUp
OgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvQW5pbWF0aW9uRGV0YWlsc1NpZGViYXJQ
YW5lbC5qczoKKyAgICAgICAgKFdJLkFuaW1hdGlvbkRldGFpbHNTaWRlYmFyUGFuZWwucHJvdG90
eXBlLl9yZWZyZXNoSWRlbnRpdHlTZWN0aW9uKToKKwogMjAyMi0wMS0yNCAgRGV2aW4gUm91c3Nv
ICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogTmV0d29yazog
Z2l2ZSB0aGUgSWdub3JlIENhY2hlcyBidXR0b24gYSBsYWJlbCBzbyBpdCdzIG1vcmUgdmlzaWJs
ZSBhbmQgaW1tZWRpYXRlbHkgdW5kZXJzdGFuZGFibGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvQW5pbWF0aW9uLmpzb24gYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL0FuaW1hdGlvbi5qc29uCmluZGV4IDAyOTY1
MTA3ZjViOGY4ZWUxYjQ3ZGYxZTM0MWNiOGZmMWZiZGU2ODkuLjc4YjFjMzc0NmZkMmZiN2M4MDBh
NTFjNmQ1ODQxN2ZhZTMyZWE2MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvcHJvdG9jb2wvQW5pbWF0aW9uLmpzb24KKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9wcm90b2NvbC9BbmltYXRpb24uanNvbgpAQCAtODgsNyArODgsNyBAQAog
ICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiYW5pbWF0aW9uSWQiLCAiJHJlZiI6ICJBbmltYXRp
b25JZCIgfQogICAgICAgICAgICAgXSwKICAgICAgICAgICAgICJyZXR1cm5zIjogWwotICAgICAg
ICAgICAgICAgIHsgIm5hbWUiOiAibm9kZUlkIiwgIiRyZWYiOiAiRE9NLk5vZGVJZCIgfQorICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAibm9kZUlkIiwgIiRyZWYiOiAiRE9NLlN0eWxlYWJsZSIg
fQogICAgICAgICAgICAgXQogICAgICAgICB9LAogICAgICAgICB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL0RPTS5qc29uIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9ET00uanNvbgppbmRleCAzYTkxYWM2YjU3
ZmFkN2Y0NzJkYWEyZTIxMDdiM2I0ODNkZTcwMTY1Li4zMWVmNmI4YWQ0MDZkNWUxMWE1NjZhOTg2
YmIwOGU3NTYyZTNkYzczIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3Byb3RvY29sL0RPTS5qc29uCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvcHJvdG9jb2wvRE9NLmpzb24KQEAgLTE2OCw2ICsxNjgsMTUgQEAKICAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogImJvcmRlckNvbG9yIiwgIiRyZWYiOiAiUkdCQUNvbG9yIiwgIm9wdGlvbmFs
IjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIlRoZSBib3JkZXIgaGlnaGxpZ2h0IGZpbGwgY29sb3Ig
KGRlZmF1bHQ6IHRyYW5zcGFyZW50KS4iIH0sCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJt
YXJnaW5Db2xvciIsICIkcmVmIjogIlJHQkFDb2xvciIsICJvcHRpb25hbCI6IHRydWUsICJkZXNj
cmlwdGlvbiI6ICJUaGUgbWFyZ2luIGhpZ2hsaWdodCBmaWxsIGNvbG9yIChkZWZhdWx0OiB0cmFu
c3BhcmVudCkuIiB9CiAgICAgICAgICAgICBdCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAg
ICAgICAgICJpZCI6ICJTdHlsZWFibGUiLAorICAgICAgICAgICAgInR5cGUiOiAib2JqZWN0IiwK
KyAgICAgICAgICAgICJwcm9wZXJ0aWVzIjogWworICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAi
bm9kZUlkIiwgIiRyZWYiOiAiTm9kZUlkIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAi
cHNldWRvSWQiLCAiJHJlZiI6ICJDU1MuUHNldWRvSWQiLCAib3B0aW9uYWwiOiB0cnVlIH0KKyAg
ICAgICAgICAgIF0sCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQW4gb2JqZWN0IHJlZmVy
ZW5jaW5nIGEgbm9kZSBhbmQgYSBwc2V1ZG8tZWxlbWVudCwgcHJpbWFyaWx5IHVzZWQgdG8gaWRl
bnRpZnkgYW4gYW5pbWF0aW9uIGVmZmVjdCB0YXJnZXQuIgogICAgICAgICB9CiAgICAgXSwKICAg
ICAiY29tbWFuZHMiOiBbCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5
ZnJhbWVFZmZlY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0
LmNwcAppbmRleCBkOGU2MjNhNzY5ZTY2NDgxNmRjNTBmMjM3YjNiZDcyMmIzNjVjZTM3Li5lZTli
N2EwYmZjNTZmZjkzYWY2YzhhZDBkOTA1NzMwYWM5NTcwNGQxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5jcHAKQEAgLTQ4LDcgKzQ4LDYgQEAKICNpbmNsdWRl
ICJLZXlmcmFtZUVmZmVjdFN0YWNrLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUg
IlByb3BlcnR5QWxsb3dsaXN0LmgiCi0jaW5jbHVkZSAiUHNldWRvRWxlbWVudC5oIgogI2luY2x1
ZGUgIlJlbmRlckJveC5oIgogI2luY2x1ZGUgIlJlbmRlckJveE1vZGVsT2JqZWN0LmgiCiAjaW5j
bHVkZSAiUmVuZGVyRWxlbWVudC5oIgpAQCAtMTE4MiwxOSArMTE4MSw2IEBAIGJvb2wgS2V5ZnJh
bWVFZmZlY3Q6OnRhcmdldHNQc2V1ZG9FbGVtZW50KCkgY29uc3QKICAgICByZXR1cm4gbV90YXJn
ZXQuZ2V0KCkgJiYgbV9wc2V1ZG9JZCAhPSBQc2V1ZG9JZDo6Tm9uZTsKIH0KIAotRWxlbWVudCog
S2V5ZnJhbWVFZmZlY3Q6OnRhcmdldEVsZW1lbnRPclBzZXVkb0VsZW1lbnQoKSBjb25zdAotewot
ICAgIGlmIChtX3RhcmdldCkgewotICAgICAgICBpZiAobV9wc2V1ZG9JZCA9PSBQc2V1ZG9JZDo6
QmVmb3JlKQotICAgICAgICAgICAgcmV0dXJuIG1fdGFyZ2V0LT5iZWZvcmVQc2V1ZG9FbGVtZW50
KCk7Ci0KLSAgICAgICAgaWYgKG1fcHNldWRvSWQgPT0gUHNldWRvSWQ6OkFmdGVyKQotICAgICAg
ICAgICAgcmV0dXJuIG1fdGFyZ2V0LT5hZnRlclBzZXVkb0VsZW1lbnQoKTsKLSAgICB9Ci0KLSAg
ICByZXR1cm4gbV90YXJnZXQuZ2V0KCk7Ci19Ci0KIHZvaWQgS2V5ZnJhbWVFZmZlY3Q6OnNldFRh
cmdldChSZWZQdHI8RWxlbWVudD4mJiBuZXdUYXJnZXQpCiB7CiAgICAgaWYgKG1fdGFyZ2V0ID09
IG5ld1RhcmdldCkKQEAgLTEyODgsNyArMTI3NCw3IEBAIHZvaWQgS2V5ZnJhbWVFZmZlY3Q6OmFw
cGx5KFJlbmRlclN0eWxlJiB0YXJnZXRTdHlsZSwgY29uc3QgU3R5bGU6OlJlc29sdXRpb25Db250
CiAgICAgYXV0byBjb21wdXRlZFRpbWluZyA9IGdldENvbXB1dGVkVGltaW5nKHN0YXJ0VGltZSk7
CiAgICAgaWYgKCFzdGFydFRpbWUpIHsKICAgICAgICAgbV9waGFzZUF0TGFzdEFwcGxpY2F0aW9u
ID0gY29tcHV0ZWRUaW1pbmcucGhhc2U7Ci0gICAgICAgIGlmIChhdXRvKiB0YXJnZXQgPSB0YXJn
ZXRFbGVtZW50T3JQc2V1ZG9FbGVtZW50KCkpCisgICAgICAgIGlmIChhdXRvIHRhcmdldCA9IHRh
cmdldFN0eWxlYWJsZSgpKQogICAgICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3
aWxsQXBwbHlLZXlmcmFtZUVmZmVjdCgqdGFyZ2V0LCAqdGhpcywgY29tcHV0ZWRUaW1pbmcpOwog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZm
ZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuaAppbmRleCBj
MjgzM2M2NTZkZTVlYzZhZTk0ZTI3ZjM2ZTZmOGNhZjU3NDkyNzE1Li40OWEwYTE2NTA2YzcwMjhl
M2M5OGMzOThhOTU0MDQxMzI5NGE0ZWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmlt
YXRpb24vS2V5ZnJhbWVFZmZlY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5
ZnJhbWVFZmZlY3QuaApAQCAtMTAxLDcgKzEwMSw2IEBAIHB1YmxpYzoKICAgICBjb25zdCBWZWN0
b3I8UGFyc2VkS2V5ZnJhbWU+JiBwYXJzZWRLZXlmcmFtZXMoKSBjb25zdCB7IHJldHVybiBtX3Bh
cnNlZEtleWZyYW1lczsgfQogCiAgICAgRWxlbWVudCogdGFyZ2V0KCkgY29uc3QgeyByZXR1cm4g
bV90YXJnZXQuZ2V0KCk7IH0KLSAgICBFbGVtZW50KiB0YXJnZXRFbGVtZW50T3JQc2V1ZG9FbGVt
ZW50KCkgY29uc3Q7CiAgICAgdm9pZCBzZXRUYXJnZXQoUmVmUHRyPEVsZW1lbnQ+JiYpOwogCiAg
ICAgYm9vbCB0YXJnZXRzUHNldWRvRWxlbWVudCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAppbmRleCAzYzk3
OGUzZjQ0MjFjZjM1YTIwNjFkZmNlMGQxZTBhYWU1MTEzNDlhLi5mYTkyYWRjZWE5ZWY4NTcyZTJh
YTg1M2EyMDcyY2M2NDVmYWMxMGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcApAQCAtMTEyMCw3ICsxMTIwLDcgQEAg
Ym9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmlzV2ViR0xQcm9ncmFtSGlnaGxpZ2h0ZWRJ
bXBsKEluc3RydW1lbnRpbmdBZ2VudHMKIH0KICNlbmRpZgogCi12b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6d2lsbEFwcGx5S2V5ZnJhbWVFZmZlY3RJbXBsKEluc3RydW1lbnRpbmdBZ2Vu
dHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIEVsZW1lbnQmIHRhcmdldCwgS2V5ZnJhbWVFZmZlY3Qm
IGVmZmVjdCwgQ29tcHV0ZWRFZmZlY3RUaW1pbmcgY29tcHV0ZWRUaW1pbmcpCit2b2lkIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEFwcGx5S2V5ZnJhbWVFZmZlY3RJbXBsKEluc3RydW1l
bnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIGNvbnN0IFN0eWxlYWJsZSYgdGFyZ2V0
LCBLZXlmcmFtZUVmZmVjdCYgZWZmZWN0LCBDb21wdXRlZEVmZmVjdFRpbWluZyBjb21wdXRlZFRp
bWluZykKIHsKICAgICBpZiAoYXV0byogYW5pbWF0aW9uQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdl
bnRzLnRyYWNraW5nQW5pbWF0aW9uQWdlbnQoKSkKICAgICAgICAgYW5pbWF0aW9uQWdlbnQtPndp
bGxBcHBseUtleWZyYW1lRWZmZWN0KHRhcmdldCwgZWZmZWN0LCBjb21wdXRlZFRpbWluZyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
LmgKaW5kZXggODJhY2NlZDIwY2ZkNTEzMWIyNTAyZjA5OWE5YzRmYTJmZGQ2MTZlYi4uNzc3YTdl
ZDRjMDgyYmQyNGVmNzE5OTU2ZTJhNjUzNzQ0ZTA3NTVmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaApAQCAtOTksNiArOTks
OCBAQCBjbGFzcyBXZWJLaXROYW1lZEZsb3c7CiBjbGFzcyBXZWJTb2NrZXRDaGFubmVsOwogY2xh
c3MgV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU7CiAKK3N0cnVjdCBTdHlsZWFibGU7CisKICNp
ZiBFTkFCTEUoV0VCR0wpCiBjbGFzcyBXZWJHTFByb2dyYW07CiAjZW5kaWYKQEAgLTI5OSw3ICsz
MDEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgaXNXZWJHTFByb2dyYW1IaWdobGlnaHRl
ZChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiwgV2ViR0xQcm9ncmFtJik7CiAjZW5kaWYKIAot
ICAgIHN0YXRpYyB2b2lkIHdpbGxBcHBseUtleWZyYW1lRWZmZWN0KEVsZW1lbnQmLCBLZXlmcmFt
ZUVmZmVjdCYsIENvbXB1dGVkRWZmZWN0VGltaW5nKTsKKyAgICBzdGF0aWMgdm9pZCB3aWxsQXBw
bHlLZXlmcmFtZUVmZmVjdChjb25zdCBTdHlsZWFibGUmLCBLZXlmcmFtZUVmZmVjdCYsIENvbXB1
dGVkRWZmZWN0VGltaW5nKTsKICAgICBzdGF0aWMgdm9pZCBkaWRDaGFuZ2VXZWJBbmltYXRpb25O
YW1lKFdlYkFuaW1hdGlvbiYpOwogICAgIHN0YXRpYyB2b2lkIGRpZFNldFdlYkFuaW1hdGlvbkVm
ZmVjdChXZWJBbmltYXRpb24mKTsKICAgICBzdGF0aWMgdm9pZCBkaWRDaGFuZ2VXZWJBbmltYXRp
b25FZmZlY3RUaW1pbmcoV2ViQW5pbWF0aW9uJik7CkBAIC01MDIsNyArNTA0LDcgQEAgcHJpdmF0
ZToKICAgICBzdGF0aWMgYm9vbCBpc1dlYkdMUHJvZ3JhbUhpZ2hsaWdodGVkSW1wbChJbnN0cnVt
ZW50aW5nQWdlbnRzJiwgV2ViR0xQcm9ncmFtJik7CiAjZW5kaWYKIAotICAgIHN0YXRpYyB2b2lk
IHdpbGxBcHBseUtleWZyYW1lRWZmZWN0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgRWxlbWVu
dCYsIEtleWZyYW1lRWZmZWN0JiwgQ29tcHV0ZWRFZmZlY3RUaW1pbmcpOworICAgIHN0YXRpYyB2
b2lkIHdpbGxBcHBseUtleWZyYW1lRWZmZWN0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgY29u
c3QgU3R5bGVhYmxlJiwgS2V5ZnJhbWVFZmZlY3QmLCBDb21wdXRlZEVmZmVjdFRpbWluZyk7CiAg
ICAgc3RhdGljIHZvaWQgZGlkQ2hhbmdlV2ViQW5pbWF0aW9uTmFtZUltcGwoSW5zdHJ1bWVudGlu
Z0FnZW50cyYsIFdlYkFuaW1hdGlvbiYpOwogICAgIHN0YXRpYyB2b2lkIGRpZFNldFdlYkFuaW1h
dGlvbkVmZmVjdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIFdlYkFuaW1hdGlvbiYpOwogICAg
IHN0YXRpYyB2b2lkIGRpZENoYW5nZVdlYkFuaW1hdGlvbkVmZmVjdFRpbWluZ0ltcGwoSW5zdHJ1
bWVudGluZ0FnZW50cyYsIFdlYkFuaW1hdGlvbiYpOwpAQCAtMTQ1NSwxMCArMTQ1NywxMCBAQCBp
bmxpbmUgYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmlzV2ViR0xQcm9ncmFtSGlnaGxp
Z2h0ZWQoV2ViR0xSZW5kZXJpbmdDbwogfQogI2VuZGlmCiAKLWlubGluZSB2b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6d2lsbEFwcGx5S2V5ZnJhbWVFZmZlY3QoRWxlbWVudCYgdGFyZ2V0
LCBLZXlmcmFtZUVmZmVjdCYgZWZmZWN0LCBDb21wdXRlZEVmZmVjdFRpbWluZyBjb21wdXRlZFRp
bWluZykKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEFwcGx5S2V5
ZnJhbWVFZmZlY3QoY29uc3QgU3R5bGVhYmxlJiB0YXJnZXQsIEtleWZyYW1lRWZmZWN0JiBlZmZl
Y3QsIENvbXB1dGVkRWZmZWN0VGltaW5nIGNvbXB1dGVkVGltaW5nKQogewogICAgIEZBU1RfUkVU
VVJOX0lGX05PX0ZST05URU5EUyh2b2lkKCkpOwotICAgIGlmIChhdXRvKiBhZ2VudHMgPSBpbnN0
cnVtZW50aW5nQWdlbnRzKHRhcmdldC5kb2N1bWVudCgpKSkKKyAgICBpZiAoYXV0byogYWdlbnRz
ID0gaW5zdHJ1bWVudGluZ0FnZW50cyh0YXJnZXQuZWxlbWVudC5kb2N1bWVudCgpKSkKICAgICAg
ICAgd2lsbEFwcGx5S2V5ZnJhbWVFZmZlY3RJbXBsKCphZ2VudHMsIHRhcmdldCwgZWZmZWN0LCBj
b21wdXRlZFRpbWluZyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yQW5pbWF0aW9uQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBbmltYXRpb25BZ2VudC5jcHAKaW5kZXggNWU1Y2RmNjcw
MTQwMGMxMDAyMDk0MTg1ODZmNjIwMGZkMzA5NTNkNi4uMGJiY2M1MWE5Mzc0ODk4ODU1ZWE5MmY4
YjNjYTdiMDUxMTU5NDdjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JBbmltYXRpb25BZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBbmltYXRpb25BZ2VudC5jcHAKQEAgLTM4LDYgKzM4LDcg
QEAKICNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUgIkZpbGxNb2RlLmgiCiAjaW5jbHVkZSAi
RnJhbWUuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JDU1NBZ2VudC5oIgogI2luY2x1ZGUgIkluc3Bl
Y3RvckRPTUFnZW50LmgiCiAjaW5jbHVkZSAiSW5zdHJ1bWVudGluZ0FnZW50cy5oIgogI2luY2x1
ZGUgIkpTRXhlY1N0YXRlLmgiCkBAIC00Nyw2ICs0OCw3IEBACiAjaW5jbHVkZSAiUGFnZS5oIgog
I2luY2x1ZGUgIlBsYXliYWNrRGlyZWN0aW9uLmgiCiAjaW5jbHVkZSAiUmVuZGVyRWxlbWVudC5o
IgorI2luY2x1ZGUgIlN0eWxlYWJsZS5oIgogI2luY2x1ZGUgIlRpbWluZ0Z1bmN0aW9uLmgiCiAj
aW5jbHVkZSAiV2ViQW5pbWF0aW9uLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSWRlbnRp
ZmllcnNGYWN0b3J5Lmg+CkBAIC0yNzksNyArMjgxLDcgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5n
T3I8dm9pZD4gSW5zcGVjdG9yQW5pbWF0aW9uQWdlbnQ6OmRpc2FibGUoKQogICAgIHJldHVybiB7
IH07CiB9CiAKLVByb3RvY29sOjpFcnJvclN0cmluZ09yPFByb3RvY29sOjpET006Ok5vZGVJZD4g
SW5zcGVjdG9yQW5pbWF0aW9uQWdlbnQ6OnJlcXVlc3RFZmZlY3RUYXJnZXQoY29uc3QgUHJvdG9j
b2w6OkFuaW1hdGlvbjo6QW5pbWF0aW9uSWQmIGFuaW1hdGlvbklkKQorUHJvdG9jb2w6OkVycm9y
U3RyaW5nT3I8UmVmPFByb3RvY29sOjpET006OlN0eWxlYWJsZT4+IEluc3BlY3RvckFuaW1hdGlv
bkFnZW50OjpyZXF1ZXN0RWZmZWN0VGFyZ2V0KGNvbnN0IFByb3RvY29sOjpBbmltYXRpb246OkFu
aW1hdGlvbklkJiBhbmltYXRpb25JZCkKIHsKICAgICBQcm90b2NvbDo6RXJyb3JTdHJpbmcgZXJy
b3JTdHJpbmc7CiAKQEAgLTI5NywxMSArMjk5LDExIEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09y
PFByb3RvY29sOjpET006Ok5vZGVJZD4gSW5zcGVjdG9yQW5pbWF0aW9uQWdlbnQ6OnJlcXVlc3RF
CiAKICAgICBhdXRvJiBrZXlmcmFtZUVmZmVjdCA9IGRvd25jYXN0PEtleWZyYW1lRWZmZWN0Pigq
ZWZmZWN0KTsKIAotICAgIGF1dG8qIHRhcmdldCA9IGtleWZyYW1lRWZmZWN0LnRhcmdldEVsZW1l
bnRPclBzZXVkb0VsZW1lbnQoKTsKKyAgICBhdXRvIHRhcmdldCA9IGtleWZyYW1lRWZmZWN0LnRh
cmdldFN0eWxlYWJsZSgpOwogICAgIGlmICghdGFyZ2V0KQogICAgICAgICByZXR1cm4gbWFrZVVu
ZXhwZWN0ZWQoIkFuaW1hdGlvbiBmb3IgZ2l2ZW4gYW5pbWF0aW9uSWQgZG9lcyBub3QgaGF2ZSBh
IHRhcmdldCJfcyk7CiAKLSAgICByZXR1cm4gZG9tQWdlbnQtPnB1c2hOb2RlUGF0aFRvRnJvbnRl
bmQoZXJyb3JTdHJpbmcsIHRhcmdldCk7CisgICAgcmV0dXJuIGRvbUFnZW50LT5wdXNoU3R5bGVh
YmxlUGF0aFRvRnJvbnRlbmQoZXJyb3JTdHJpbmcsICp0YXJnZXQpOwogfQogCiBQcm90b2NvbDo6
RXJyb3JTdHJpbmdPcjxSZWY8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4+IEluc3Bl
Y3RvckFuaW1hdGlvbkFnZW50OjpyZXNvbHZlQW5pbWF0aW9uKGNvbnN0IFByb3RvY29sOjpBbmlt
YXRpb246OkFuaW1hdGlvbklkJiBhbmltYXRpb25JZCwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91
cCkKQEAgLTM3MSw3ICszNzMsNyBAQCBzdGF0aWMgYm9vbCBpc0RlbGF5ZWQoQ29tcHV0ZWRFZmZl
Y3RUaW1pbmcmIGNvbXB1dGVkVGltaW5nKQogICAgIHJldHVybiBjb21wdXRlZFRpbWluZy5sb2Nh
bFRpbWUudmFsdWUoKSA8IChjb21wdXRlZFRpbWluZy5lbmRUaW1lIC0gY29tcHV0ZWRUaW1pbmcu
YWN0aXZlRHVyYXRpb24pOwogfQogCi12b2lkIEluc3BlY3RvckFuaW1hdGlvbkFnZW50Ojp3aWxs
QXBwbHlLZXlmcmFtZUVmZmVjdChFbGVtZW50JiB0YXJnZXQsIEtleWZyYW1lRWZmZWN0JiBrZXlm
cmFtZUVmZmVjdCwgQ29tcHV0ZWRFZmZlY3RUaW1pbmcgY29tcHV0ZWRUaW1pbmcpCit2b2lkIElu
c3BlY3RvckFuaW1hdGlvbkFnZW50Ojp3aWxsQXBwbHlLZXlmcmFtZUVmZmVjdChjb25zdCBTdHls
ZWFibGUmIHRhcmdldCwgS2V5ZnJhbWVFZmZlY3QmIGtleWZyYW1lRWZmZWN0LCBDb21wdXRlZEVm
ZmVjdFRpbWluZyBjb21wdXRlZFRpbWluZykKIHsKICAgICBhdXRvKiBhbmltYXRpb24gPSBrZXlm
cmFtZUVmZmVjdC5hbmltYXRpb24oKTsKICAgICBpZiAoIWlzPERlY2xhcmF0aXZlQW5pbWF0aW9u
PihhbmltYXRpb24pKQpAQCAtNDIxLDcgKzQyMyw3IEBAIHZvaWQgSW5zcGVjdG9yQW5pbWF0aW9u
QWdlbnQ6OndpbGxBcHBseUtleWZyYW1lRWZmZWN0KEVsZW1lbnQmIHRhcmdldCwgS2V5ZnJhbWVF
CiAKICAgICBpZiAoZW5zdXJlUmVzdWx0LmlzTmV3RW50cnkpIHsKICAgICAgICAgaWYgKGF1dG8q
IGRvbUFnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLnBlcnNpc3RlbnRET01BZ2VudCgpKSB7
Ci0gICAgICAgICAgICBpZiAoYXV0byBub2RlSWQgPSBkb21BZ2VudC0+cHVzaE5vZGVUb0Zyb250
ZW5kKCZ0YXJnZXQpKQorICAgICAgICAgICAgaWYgKGF1dG8gbm9kZUlkID0gZG9tQWdlbnQtPnB1
c2hTdHlsZWFibGVFbGVtZW50VG9Gcm9udGVuZCh0YXJnZXQpKQogICAgICAgICAgICAgICAgIGV2
ZW50LT5zZXROb2RlSWQobm9kZUlkKTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFuaW1hdGlvbkFnZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFuaW1hdGlvbkFnZW50LmgKaW5k
ZXggYjM5MDhjM2QyOGQxMzY5ZGY2ZWMwOWIyNGUzMmQ4ZTQ5ZjEyN2YzZS4uNWM2MzEzZTkxNzZm
MTk0NDg2YjZjZjg4Yzc4MTQ3ZGI0YjUxYmNkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBbmltYXRpb25BZ2VudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQW5pbWF0aW9uQWdlbnQuaApAQCAtNDQs
NiArNDQsOCBAQCBjbGFzcyBLZXlmcmFtZUVmZmVjdDsKIGNsYXNzIFBhZ2U7CiBjbGFzcyBXZWJB
bmltYXRpb247CiAKK3N0cnVjdCBTdHlsZWFibGU7CisKIGNsYXNzIEluc3BlY3RvckFuaW1hdGlv
bkFnZW50IGZpbmFsIDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGljIEluc3BlY3Rv
cjo6QW5pbWF0aW9uQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKICAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShJbnNwZWN0b3JBbmltYXRpb25BZ2VudCk7CiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CkBAIC01OCwxMyArNjAsMTMgQEAgcHVibGljOgogICAgIC8vIEFuaW1hdGlvbkJhY2tl
bmREaXNwYXRjaGVySGFuZGxlcgogICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5n
T3I8dm9pZD4gZW5hYmxlKCk7CiAgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdP
cjx2b2lkPiBkaXNhYmxlKCk7Ci0gICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdP
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGVJZD4gcmVxdWVzdEVmZmVjdFRhcmdldChj
b25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpBbmltYXRpb246OkFuaW1hdGlvbklkJik7CisgICAg
SW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxSZWY8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6RE9NOjpTdHlsZWFibGU+PiByZXF1ZXN0RWZmZWN0VGFyZ2V0KGNvbnN0IEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkFuaW1hdGlvbjo6QW5pbWF0aW9uSWQmKTsKICAgICBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpFcnJvclN0cmluZ09yPFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpSZW1v
dGVPYmplY3Q+PiByZXNvbHZlQW5pbWF0aW9uKGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFu
aW1hdGlvbjo6QW5pbWF0aW9uSWQmLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwKTsKICAgICBJ
bnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IHN0YXJ0VHJhY2tpbmcoKTsK
ICAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IHN0b3BUcmFja2lu
ZygpOwogCiAgICAgLy8gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uCi0gICAgdm9pZCB3aWxsQXBw
bHlLZXlmcmFtZUVmZmVjdChFbGVtZW50JiwgS2V5ZnJhbWVFZmZlY3QmLCBDb21wdXRlZEVmZmVj
dFRpbWluZyk7CisgICAgdm9pZCB3aWxsQXBwbHlLZXlmcmFtZUVmZmVjdChjb25zdCBTdHlsZWFi
bGUmLCBLZXlmcmFtZUVmZmVjdCYsIENvbXB1dGVkRWZmZWN0VGltaW5nKTsKICAgICB2b2lkIGRp
ZENoYW5nZVdlYkFuaW1hdGlvbk5hbWUoV2ViQW5pbWF0aW9uJik7CiAgICAgdm9pZCBkaWRTZXRX
ZWJBbmltYXRpb25FZmZlY3QoV2ViQW5pbWF0aW9uJik7CiAgICAgdm9pZCBkaWRDaGFuZ2VXZWJB
bmltYXRpb25FZmZlY3RUaW1pbmcoV2ViQW5pbWF0aW9uJik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCmluZGV4IGQxOWFk
M2RkYTEwOWI4MmI1MTM2ZjllMzRjNThlOWExMTEwMTYxNTguLjYzYmM5MzdhZmM4OWZiYzljNmNm
MTBkOTg0NDJkMzFhMmViYzdmNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCkBAIC00NDEsNyArNDQxLDcgQEAgYm9v
bCBJbnNwZWN0b3JDU1NBZ2VudDo6Zm9yY2VQc2V1ZG9TdGF0ZShjb25zdCBFbGVtZW50JiBlbGVt
ZW50LCBDU1NTZWxlY3Rvcjo6UHMKICAgICB9CiB9CiAKLXN0YXRpYyBzdGQ6Om9wdGlvbmFsPFBy
b3RvY29sOjpDU1M6OlBzZXVkb0lkPiBwcm90b2NvbFZhbHVlRm9yUHNldWRvSWQoUHNldWRvSWQg
cHNldWRvSWQpCitzdGQ6Om9wdGlvbmFsPFByb3RvY29sOjpDU1M6OlBzZXVkb0lkPiBJbnNwZWN0
b3JDU1NBZ2VudDo6cHJvdG9jb2xWYWx1ZUZvclBzZXVkb0lkKFBzZXVkb0lkIHBzZXVkb0lkKQog
ewogICAgIHN3aXRjaCAocHNldWRvSWQpIHsKICAgICBjYXNlIFBzZXVkb0lkOjpGaXJzdExpbmU6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNT
U0FnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0Fn
ZW50LmgKaW5kZXggYTRjNjEyN2QwYTJjZmQ0ZGNjNGY1ZGU4NmIwNjkwMjk4M2RhNzZlOC4uNGUz
NWU5YTVjMmJmODI5N2NmNTNjYTU4YzIxMDFkZmY3ZWQwY2U5NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuaApAQCAtODUsNiAr
ODUsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIENTU1N0eWxlUnVsZSogYXNDU1NTdHlsZVJ1bGUo
Q1NTUnVsZSYpOwogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkNTUzo6TGF5b3V0Q29udGV4dFR5cGU+IGxheW91dENvbnRleHRUeXBlRm9yUmVuZGVyZXIoUmVu
ZGVyT2JqZWN0Kik7CiAKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpDU1M6OlBzZXVkb0lkPiBwcm90b2NvbFZhbHVlRm9yUHNldWRvSWQoUHNldWRvSWQpOwor
CiAgICAgLy8gSW5zcGVjdG9yQWdlbnRCYXNlCiAgICAgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFu
ZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZFJvdXRlciosIEluc3BlY3Rvcjo6QmFja2VuZERp
c3BhdGNoZXIqKTsKICAgICB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3Bl
Y3Rvcjo6RGlzY29ubmVjdFJlYXNvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCmluZGV4IDdhNzkwYmIyM2M4ZjM3YWY1
N2U0Mjg0YjM2N2NhZDlkNjc5YTQzNGYuLjcyZDE1MmM3OGQ0YzNjZjM5YjM2YTRlODNlZjdmZWMz
YzRhZmRhMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yRE9NQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC0xMDQsNiArMTA0LDcgQEAKICNpbmNsdWRlICJTdHls
ZVByb3BlcnRpZXMuaCIKICNpbmNsdWRlICJTdHlsZVJlc29sdmVyLmgiCiAjaW5jbHVkZSAiU3R5
bGVTaGVldExpc3QuaCIKKyNpbmNsdWRlICJTdHlsZWFibGUuaCIKICNpbmNsdWRlICJUZXh0Lmgi
CiAjaW5jbHVkZSAiVGV4dE5vZGVUcmF2ZXJzYWwuaCIKICNpbmNsdWRlICJUaW1lci5oIgpAQCAt
NTM4LDYgKzUzOSwyNSBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpkaXNjYXJkQmluZGluZ3Mo
KQogICAgIG1fY2hpbGRyZW5SZXF1ZXN0ZWQuY2xlYXIoKTsKIH0KIAorc3RhdGljIEVsZW1lbnQq
IGVsZW1lbnRUb1B1c2hGb3JTdHlsZWFibGUoY29uc3QgU3R5bGVhYmxlJiBzdHlsZWFibGUpCit7
CisgICAgLy8gRklYTUU6IFdlIHdhbnQgdG8gZ2V0IHJpZCBvZiBQc2V1ZG9FbGVtZW50LgorICAg
IGF1dG8qIGVsZW1lbnQgPSAmc3R5bGVhYmxlLmVsZW1lbnQ7CisKKyAgICBpZiAoc3R5bGVhYmxl
LnBzZXVkb0lkID09IFBzZXVkb0lkOjpCZWZvcmUpCisgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50
LT5iZWZvcmVQc2V1ZG9FbGVtZW50KCk7CisgICAgZWxzZSBpZiAoc3R5bGVhYmxlLnBzZXVkb0lk
ID09IFBzZXVkb0lkOjpBZnRlcikKKyAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQtPmFmdGVyUHNl
dWRvRWxlbWVudCgpOworCisgICAgcmV0dXJuIGVsZW1lbnQ7Cit9CisKK1Byb3RvY29sOjpET006
Ok5vZGVJZCBJbnNwZWN0b3JET01BZ2VudDo6cHVzaFN0eWxlYWJsZUVsZW1lbnRUb0Zyb250ZW5k
KGNvbnN0IFN0eWxlYWJsZSYgc3R5bGVhYmxlKQoreworICAgIGF1dG8qIGVsZW1lbnQgPSBlbGVt
ZW50VG9QdXNoRm9yU3R5bGVhYmxlKHN0eWxlYWJsZSk7CisgICAgcmV0dXJuIHB1c2hOb2RlVG9G
cm9udGVuZChlbGVtZW50ID86ICZzdHlsZWFibGUuZWxlbWVudCk7Cit9CisKIFByb3RvY29sOjpE
T006Ok5vZGVJZCBJbnNwZWN0b3JET01BZ2VudDo6cHVzaE5vZGVUb0Zyb250ZW5kKE5vZGUqIG5v
ZGVUb1B1c2gpCiB7CiAgICAgaWYgKCFub2RlVG9QdXNoKQpAQCAtNjM3LDYgKzY1NywyMyBAQCBQ
cm90b2NvbDo6RE9NOjpOb2RlSWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnB1c2hOb2RlUGF0aFRvRnJv
bnRlbmQoTm9kZSogbm9kZVRvUHVzaAogICAgIHJldHVybiBwdXNoTm9kZVBhdGhUb0Zyb250ZW5k
KGlnbm9yZWQsIG5vZGVUb1B1c2gpOwogfQogCitSZWY8UHJvdG9jb2w6OkRPTTo6U3R5bGVhYmxl
PiBJbnNwZWN0b3JET01BZ2VudDo6cHVzaFN0eWxlYWJsZVBhdGhUb0Zyb250ZW5kKFByb3RvY29s
OjpFcnJvclN0cmluZyBlcnJvclN0cmluZywgY29uc3QgU3R5bGVhYmxlJiBzdHlsZWFibGUpCit7
CisgICAgYXV0byogZWxlbWVudCA9IGVsZW1lbnRUb1B1c2hGb3JTdHlsZWFibGUoc3R5bGVhYmxl
KTsKKyAgICBhdXRvIG5vZGVJZCA9IHB1c2hOb2RlUGF0aFRvRnJvbnRlbmQoZXJyb3JTdHJpbmcs
IGVsZW1lbnQgPzogJnN0eWxlYWJsZS5lbGVtZW50KTsKKworICAgIGF1dG8gcHJvdG9jb2xTdHls
ZWFibGUgPSBQcm90b2NvbDo6RE9NOjpTdHlsZWFibGU6OmNyZWF0ZSgpCisgICAgICAgIC5zZXRO
b2RlSWQobm9kZUlkKQorICAgICAgICAucmVsZWFzZSgpOworCisgICAgaWYgKHN0eWxlYWJsZS5w
c2V1ZG9JZCAhPSBQc2V1ZG9JZDo6Tm9uZSkgeworICAgICAgICBpZiAoYXV0byBwc2V1ZG9JZCA9
IEluc3BlY3RvckNTU0FnZW50Ojpwcm90b2NvbFZhbHVlRm9yUHNldWRvSWQoc3R5bGVhYmxlLnBz
ZXVkb0lkKSkKKyAgICAgICAgICAgIHByb3RvY29sU3R5bGVhYmxlLT5zZXRQc2V1ZG9JZCgqcHNl
dWRvSWQpOworICAgIH0KKworICAgIHJldHVybiBwcm90b2NvbFN0eWxlYWJsZTsKK30KKwogUHJv
dG9jb2w6OkRPTTo6Tm9kZUlkIEluc3BlY3RvckRPTUFnZW50OjpwdXNoTm9kZVBhdGhUb0Zyb250
ZW5kKFByb3RvY29sOjpFcnJvclN0cmluZyBlcnJvclN0cmluZywgTm9kZSogbm9kZVRvUHVzaCkK
IHsKICAgICBBU1NFUlQobm9kZVRvUHVzaCk7ICAvLyBJbnZhbGlkIGlucHV0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmgKaW5kZXgg
NGViNjNiNzk4NTcyMWFjNmVhNjAwM2M4ODQ5ODkxNzljNzhlZGEwMC4uZWVjMjRkM2VlYTBjNjkz
MGM1YmUyOWVkNjUzYmM1NDljMDIxYWI0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuaApAQCAtNzUsNiArNzUsOCBAQCBjbGFz
cyBQc2V1ZG9FbGVtZW50OwogY2xhc3MgUmV2YWxpZGF0ZVN0eWxlQXR0cmlidXRlVGFzazsKIGNs
YXNzIFNoYWRvd1Jvb3Q7CiAKK3N0cnVjdCBTdHlsZWFibGU7CisKIGNsYXNzIEluc3BlY3RvckRP
TUFnZW50IGZpbmFsIDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGljIEluc3BlY3Rv
cjo6RE9NQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShJbnNwZWN0b3JET01BZ2VudCk7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC0x
ODQsNiArMTg2LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBzdHlsZUF0dHJpYnV0ZUludmFsaWRh
dGVkKGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGVsZW1lbnRzKTsKIAorICAgIEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkRPTTo6Tm9kZUlkIHB1c2hTdHlsZWFibGVFbGVtZW50VG9Gcm9udGVuZChjb25z
dCBTdHlsZWFibGUmKTsKKyAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpTdHlsZWFi
bGU+IHB1c2hTdHlsZWFibGVQYXRoVG9Gcm9udGVuZChJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJv
clN0cmluZywgY29uc3QgU3R5bGVhYmxlJik7CiAgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RE9N
OjpOb2RlSWQgcHVzaE5vZGVUb0Zyb250ZW5kKE5vZGUqKTsKICAgICBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpET006Ok5vZGVJZCBwdXNoTm9kZVRvRnJvbnRlbmQoSW5zcGVjdG9yOjpQcm90b2NvbDo6
RXJyb3JTdHJpbmcmLCBJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGVJZCBkb2N1bWVudE5v
ZGVJZCwgTm9kZSopOwogICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZUlkIHB1c2hO
b2RlUGF0aFRvRnJvbnRlbmQoTm9kZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvQmFzZS9ET01VdGlsaXRpZXMuanMgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9CYXNlL0RPTVV0aWxpdGllcy5qcwppbmRleCA0MmIzOWExMGRi
NWUzYTQ3MjFkNTJmOWViMzJiNjAxZmUzZjMyMTI5Li5mZjczZDA1Yzg5YjE4NjQ1YTYyMzc1NzI4
N2RhOTY2OGI4MDI1Yjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9CYXNlL0RPTVV0aWxpdGllcy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9CYXNlL0RPTVV0aWxpdGllcy5qcwpAQCAtNTcsNiArNTcsMTUgQEAgV0ku
bGlua2lmeUFjY2Vzc2liaWxpdHlOb2RlUmVmZXJlbmNlID0gZnVuY3Rpb24obm9kZSkKICAgICBy
ZXR1cm4gbGluazsKIH07CiAKK1dJLmxpbmtpZnlTdHlsZWFibGUgPSBmdW5jdGlvbihzdHlsZWFi
bGUpCit7CisgICAgY29uc29sZS5hc3NlcnQoc3R5bGVhYmxlIGluc3RhbmNlb2YgV0kuRE9NU3R5
bGVhYmxlLCBzdHlsZWFibGUpOworICAgIGxldCBkaXNwbGF5TmFtZSA9IHN0eWxlYWJsZS5kaXNw
bGF5TmFtZTsKKyAgICBsZXQgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsK
KyAgICBsaW5rLmFwcGVuZChkaXNwbGF5TmFtZSk7CisgICAgcmV0dXJuIFdJLmxpbmtpZnlOb2Rl
UmVmZXJlbmNlRWxlbWVudChzdHlsZWFibGUubm9kZSwgbGluaywge2Rpc3BsYXlOYW1lfSk7Cit9
OworCiBXSS5saW5raWZ5Tm9kZVJlZmVyZW5jZSA9IGZ1bmN0aW9uKG5vZGUsIG9wdGlvbnMgPSB7
fSkKIHsKICAgICBsZXQgZGlzcGxheU5hbWUgPSBub2RlLmRpc3BsYXlOYW1lOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCmluZGV4IGNhYmNmZDM5YzNi
MmIyZGY5Y2ZmMDc5OWM4ZGQyOGZmYmQxYzQzM2EuLjgyYWM2OTM5MDk5OWU0NDdlZGZmOTk0ZTVl
MTUyMzIzODYxYTdjYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL01haW4uaHRtbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9NYWluLmh0bWwKQEAgLTQxOSw2ICs0MTksNyBAQAogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMv
RE9NTm9kZVN0eWxlcy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9ET01T
ZWFyY2hNYXRjaE9iamVjdC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9E
T01TdG9yYWdlT2JqZWN0LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0RP
TVN0eWxlYWJsZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9ET01UcmVl
LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0RhdGFiYXNlT2JqZWN0Lmpz
Ij48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0RhdGFiYXNlVGFibGVPYmplY3Qu
anMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvTW9kZWxzL0FuaW1hdGlvbi5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL01vZGVscy9BbmltYXRpb24uanMKaW5kZXggZTY2ZTlhMjhlMGM0NGIwOWM5ZGI2MTI3
OTM2NzNiYzBkY2MyNGE3Ni4uN2MxYjRjOTg1MTJjMzVmMjIzOGQ0ZTY3OTdjMWM0NDFkZTYzODgw
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxz
L0FuaW1hdGlvbi5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9N
b2RlbHMvQW5pbWF0aW9uLmpzCkBAIC0xOTEsNiArMTkxLDcgQEAgV0kuQW5pbWF0aW9uID0gY2xh
c3MgQW5pbWF0aW9uIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIHJldHVybiBXSS5VSVN0cmlu
ZygiQW5pbWF0aW9uICVkIikuZm9ybWF0KHRoaXMuX3VuaXF1ZURpc3BsYXlOYW1lTnVtYmVyKTsK
ICAgICB9CiAKKyAgICAvLyBDT01QQVRJQklMSVRZIChpT1MgMTUpOiBlZmZlY3RUYXJnZXQgY2hh
bmdlZCBmcm9tIERPTS5Ob2RlSWQgdG8gQ1NTLlN0eWxlYWJsZS4KICAgICByZXF1ZXN0RWZmZWN0
VGFyZ2V0KGNhbGxiYWNrKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2VmZmVjdFRhcmdldCAh
PT0gdW5kZWZpbmVkKSB7CkBAIC0yMDgsOCArMjA5LDEyIEBAIFdJLkFuaW1hdGlvbiA9IGNsYXNz
IEFuaW1hdGlvbiBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICBXSS5kb21NYW5hZ2VyLmVuc3Vy
ZURvY3VtZW50KCk7CiAKICAgICAgICAgbGV0IHRhcmdldCA9IFdJLmFzc3VtaW5nTWFpblRhcmdl
dCgpOwotICAgICAgICB0YXJnZXQuQW5pbWF0aW9uQWdlbnQucmVxdWVzdEVmZmVjdFRhcmdldCh0
aGlzLl9hbmltYXRpb25JZCwgKGVycm9yLCBub2RlSWQpID0+IHsKLSAgICAgICAgICAgIHRoaXMu
X2VmZmVjdFRhcmdldCA9ICFlcnJvciA/IFdJLmRvbU1hbmFnZXIubm9kZUZvcklkKG5vZGVJZCkg
OiBudWxsOworICAgICAgICB0YXJnZXQuQW5pbWF0aW9uQWdlbnQucmVxdWVzdEVmZmVjdFRhcmdl
dCh0aGlzLl9hbmltYXRpb25JZCwgKGVycm9yLCBzdHlsZWFibGUpID0+IHsKKyAgICAgICAgICAg
IC8vIENPTVBBVElCSUxJVFkgKGlPUyAxNSk6IGVmZmVjdFRhcmdldCBjaGFuZ2VkIGZyb20gRE9N
Lk5vZGVJZCB0byBET00uU3R5bGVhYmxlLgorICAgICAgICAgICAgaWYgKCFpc05hTihzdHlsZWFi
bGUpKQorICAgICAgICAgICAgICAgIHN0eWxlYWJsZSA9IHtub2RlSWQ6IHN0eWxlYWJsZX07CisK
KyAgICAgICAgICAgIHRoaXMuX2VmZmVjdFRhcmdldCA9ICFlcnJvciA/IFdJLkRPTVN0eWxlYWJs
ZS5mcm9tUGF5bG9hZChzdHlsZWFibGUpIDogbnVsbDsKIAogICAgICAgICAgICAgZm9yIChsZXQg
cmVxdWVzdEVmZmVjdFRhcmdldENhbGxiYWNrIG9mIHRoaXMuX3JlcXVlc3RFZmZlY3RUYXJnZXRD
YWxsYmFja3MpCiAgICAgICAgICAgICAgICAgcmVxdWVzdEVmZmVjdFRhcmdldENhbGxiYWNrKHRo
aXMuX2VmZmVjdFRhcmdldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Nb2RlbHMvRE9NU3R5bGVhYmxlLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvTW9kZWxzL0RPTVN0eWxlYWJsZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MmJmMGU3
ZDE2ZjM4NjZhMzg3MjZiNzQxMjM5YjA4NDdkNjEwODUzCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0RPTVN0eWxlYWJsZS5qcwpA
QCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworV0kuRE9NU3R5bGVhYmxlID0gY2xhc3MgRE9N
U3R5bGVhYmxlCit7CisgICAgY29uc3RydWN0b3Iobm9kZSwge3BzZXVkb0lkfSA9IHt9KQorICAg
IHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQobm9kZSBpbnN0YW5jZW9mIFdJLkRPTU5vZGUsIG5v
ZGUpOworICAgICAgICBjb25zb2xlLmFzc2VydCghcHNldWRvSWQgfHwgT2JqZWN0LnZhbHVlcyhX
SS5DU1NNYW5hZ2VyLlBzZXVkb1NlbGVjdG9yTmFtZXMpLmluY2x1ZGVzKHBzZXVkb0lkKSwgcHNl
dWRvSWQpOworCisgICAgICAgIHRoaXMuX25vZGUgPSBub2RlOworICAgICAgICB0aGlzLl9wc2V1
ZG9JZCA9IHBzZXVkb0lkIHx8IG51bGw7CisgICAgfQorCisgICAgLy8gU3RhdGljCisKKyAgICBz
dGF0aWMgZnJvbVBheWxvYWQoe25vZGVJZCwgcHNldWRvSWR9KQorICAgIHsKKyAgICAgICAgcmV0
dXJuIG5ldyBXSS5ET01TdHlsZWFibGUoV0kuZG9tTWFuYWdlci5ub2RlRm9ySWQobm9kZUlkKSwg
e3BzZXVkb0lkfSk7CisgICAgfQorCisgICAgLy8gUHVibGljCisKKyAgICBnZXQgbm9kZSgpIHsg
cmV0dXJuIHRoaXMuX25vZGU7IH0KKyAgICBnZXQgcHNldWRvSWQoKSB7IHJldHVybiB0aGlzLl9w
c2V1ZG9JZDsgfQorCisgICAgZ2V0IGRpc3BsYXlOYW1lKCkKKyAgICB7CisgICAgICAgIGlmICh0
aGlzLl9wc2V1ZG9JZCkKKyAgICAgICAgICAgIHJldHVybiBXSS5DU1NNYW5hZ2VyLmRpc3BsYXlO
YW1lRm9yUHNldWRvSWQodGhpcy5fcHNldWRvSWQpOworICAgICAgICByZXR1cm4gdGhpcy5fbm9k
ZS5kaXNwbGF5TmFtZTsKKyAgICB9Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVGVzdC5odG1sIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVGVzdC5odG1sCmluZGV4IDU1NmYwODU5NDY1ZGY3NjBmZjNmN2NhZmI5YmM1OWE3
NzMwNTdiNzYuLmNkMjEzNGFmMmYxNjRkYzcxOWFkMmM0MmRmMDBkNGJlZTA5MTcxYjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QuaHRtbAorKysg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0Lmh0bWwKQEAgLTE1Miw2
ICsxNTIsNyBAQAogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvRE9NTm9kZS5qcyI+PC9zY3JpcHQ+
CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9ET01Ob2RlU3R5bGVzLmpzIj48L3NjcmlwdD4KICAg
ICA8c2NyaXB0IHNyYz0iTW9kZWxzL0RPTVN0b3JhZ2VPYmplY3QuanMiPjwvc2NyaXB0PgorICAg
IDxzY3JpcHQgc3JjPSJNb2RlbHMvRE9NU3R5bGVhYmxlLmpzIj48L3NjcmlwdD4KICAgICA8c2Ny
aXB0IHNyYz0iTW9kZWxzL0RPTVRyZWUuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJN
b2RlbHMvRGVidWdnZXJEYXRhLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxz
L0V2ZW50QnJlYWtwb2ludC5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9BbmltYXRpb25Db2xsZWN0aW9uQ29udGVudFZp
ZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9BbmltYXRp
b25Db2xsZWN0aW9uQ29udGVudFZpZXcuanMKaW5kZXggOWVjMWQyY2ZjMWVkOTEwYzk1OWIxOThl
M2I4OGVmZTc0YTRhZDkyOC4uYzIwYzNhMDgzZGYxZWRmYjc3MTMxMzQ4MmJkMDVjMzZiNzA3YTRh
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
QW5pbWF0aW9uQ29sbGVjdGlvbkNvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0FuaW1hdGlvbkNvbGxlY3Rpb25Db250ZW50Vmlldy5q
cwpAQCAtOTYsMTAgKzk2LDEwIEBAIFdJLkFuaW1hdGlvbkNvbGxlY3Rpb25Db250ZW50VmlldyA9
IGNsYXNzIEFuaW1hdGlvbkNvbGxlY3Rpb25Db250ZW50VmlldyBleHRlbmRzCiAgICAgICAgICAg
ICByZXR1cm47CiAKICAgICAgICAgbGV0IGFuaW1hdGlvbiA9IGNvbnRlbnRWaWV3LnJlcHJlc2Vu
dGVkT2JqZWN0OwotICAgICAgICBhbmltYXRpb24ucmVxdWVzdEVmZmVjdFRhcmdldCgobm9kZSkg
PT4gewotICAgICAgICAgICAgaWYgKCFub2RlIHx8ICFub2RlLm93bmVyRG9jdW1lbnQpCisgICAg
ICAgIGFuaW1hdGlvbi5yZXF1ZXN0RWZmZWN0VGFyZ2V0KChzdHlsZWFibGUpID0+IHsKKyAgICAg
ICAgICAgIGlmICghc3R5bGVhYmxlLm5vZGUgfHwgIXN0eWxlYWJsZS5ub2RlLm93bmVyRG9jdW1l
bnQpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbm9kZS5oaWdobGlnaHQo
KTsKKyAgICAgICAgICAgIHN0eWxlYWJsZS5ub2RlLmhpZ2hsaWdodCgpOwogICAgICAgICB9KTsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL0FuaW1hdGlvbkNvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvQW5pbWF0aW9uQ29udGVudFZpZXcuanMKaW5kZXggYzYyNjBkMGZj
MmNmNzZlM2ExNzI0ZDljMThjM2IwYjY3NDE1NzEzYi4uMWQxMzVlNDg4Zjg0YjMwYmY0MGM3Y2U1
YzkwMWM1MDBjZmMxOWI5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvQW5pbWF0aW9uQ29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQW5pbWF0aW9uQ29udGVudFZpZXcuanMKQEAg
LTE2MiwxMiArMTYyLDEyIEBAIFdJLkFuaW1hdGlvbkNvbnRlbnRWaWV3ID0gY2xhc3MgQW5pbWF0
aW9uQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50VmlldwogCiAgICAgX3JlZnJlc2hTdWJ0
aXRsZSgpCiAgICAgewotICAgICAgICB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LnJlcXVlc3RFZmZl
Y3RUYXJnZXQoKGRvbU5vZGUpID0+IHsKLSAgICAgICAgICAgIHRoaXMuX2FuaW1hdGlvblRhcmdl
dERPTU5vZGUgPSBkb21Ob2RlOworICAgICAgICB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LnJlcXVl
c3RFZmZlY3RUYXJnZXQoKHN0eWxlYWJsZSkgPT4geworICAgICAgICAgICAgdGhpcy5fYW5pbWF0
aW9uVGFyZ2V0RE9NTm9kZSA9IHN0eWxlYWJsZS5ub2RlOwogCiAgICAgICAgICAgICB0aGlzLl9z
dWJ0aXRsZUVsZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsKLSAgICAgICAgICAgIGlmIChkb21Ob2Rl
KQotICAgICAgICAgICAgICAgIHRoaXMuX3N1YnRpdGxlRWxlbWVudC5hcHBlbmRDaGlsZChXSS5s
aW5raWZ5Tm9kZVJlZmVyZW5jZShkb21Ob2RlKSk7CisgICAgICAgICAgICBpZiAoc3R5bGVhYmxl
KQorICAgICAgICAgICAgICAgIHRoaXMuX3N1YnRpdGxlRWxlbWVudC5hcHBlbmRDaGlsZChXSS5s
aW5raWZ5U3R5bGVhYmxlKHN0eWxlYWJsZSkpOwogICAgICAgICB9KTsKICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0FuaW1hdGlv
bkRldGFpbHNTaWRlYmFyUGFuZWwuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9BbmltYXRpb25EZXRhaWxzU2lkZWJhclBhbmVsLmpzCmluZGV4IDhjM2ZkOTRi
ZjA4Y2EyNzZiMWQyMzMzNTc4NDdmZDM1MTMyMmEyNzQuLjQyZDJjMTFkMTJlM2M3MDI0Njk5OTA1
ZTQ4MmMyNTdjMzhiMGVlY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0FuaW1hdGlvbkRldGFpbHNTaWRlYmFyUGFuZWwuanMKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQW5pbWF0aW9uRGV0YWlsc1Np
ZGViYXJQYW5lbC5qcwpAQCAtMTc5LDggKzE3OSw4IEBAIFdJLkFuaW1hdGlvbkRldGFpbHNTaWRl
YmFyUGFuZWwgPSBjbGFzcyBBbmltYXRpb25EZXRhaWxzU2lkZWJhclBhbmVsIGV4dGVuZHMgV0ku
CiAgICAgICAgIHRoaXMuX2Nzc1RyYW5zaXRpb25Qcm9wZXJ0eVJvdy52YWx1ZSA9IGNzc1RyYW5z
aXRpb25Qcm9wZXJ0eTsKIAogICAgICAgICB0aGlzLl90YXJnZXRSb3cudmFsdWUgPSBudWxsOwot
ICAgICAgICB0aGlzLl9hbmltYXRpb24ucmVxdWVzdEVmZmVjdFRhcmdldCgoZG9tTm9kZSkgPT4g
ewotICAgICAgICAgICAgdGhpcy5fdGFyZ2V0Um93LnZhbHVlID0gZG9tTm9kZSA/IFdJLmxpbmtp
ZnlOb2RlUmVmZXJlbmNlKGRvbU5vZGUpIDogbnVsbDsKKyAgICAgICAgdGhpcy5fYW5pbWF0aW9u
LnJlcXVlc3RFZmZlY3RUYXJnZXQoKHN0eWxlYWJsZSkgPT4geworICAgICAgICAgICAgdGhpcy5f
dGFyZ2V0Um93LnZhbHVlID0gV0kubGlua2lmeVN0eWxlYWJsZShzdHlsZWFibGUpOwogICAgICAg
ICB9KTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4NGMyMTk4ZTY4YjkzYTJkMzkwY2NlOTViNDM0ZDFhZjhk
MzA3NWM1Li5jOWFlODQ1ZjRjYTNlMzJmNTBhOGJlNGM4OTA5YWMwYzg5NzdkZDdkIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTcgQEAKKzIwMjItMDEtMjYgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgW1dlYiBJbnNwZWN0b3JdIEdyYXBoaWNzIHRhYiBzaG91bGQgZGlz
cGxheSBwc2V1ZG8tZWxlbWVudHMgZm9yIG1vcmUgdGhhbiA6OmJlZm9yZSBhbmQgOjphZnRlcgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1MjM0Cisg
ICAgICAgIDxyZGFyOi8vODc3NjY3Nzc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGV2aW4gUm91
c3NvLgorCisgICAgICAgIENoZWNrIHRoYXQgcmVxdWVzdEVmZmVjdFRhcmdldCgpIHJldHVybnMg
dGhlIGNvcnJlY3QgU3R5bGVhYmxlIGJ5IGNoZWNraW5nIHdoZXRoZXIgaXQncyBkZWZpbmVkCisg
ICAgICAgIG9yIG51bGwsIGFuZCBjaGVja2luZyBpdHMgYG5vZGVgIGFuZCBgcHNldWRvSWRgIG1l
bWJlcnMuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvYW5pbWF0aW9uL3RhcmdldENoYW5nZWQtZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rvci9hbmltYXRpb24vdGFyZ2V0Q2hhbmdlZC5o
dG1sOgorCiAyMDIyLTAxLTI1ICBBbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAg
ICAgICAoUkVHUkVTU0lPTiByMjg3NDg1KSBbTEZDXVtJRkNdIEluY29ycmVjdCBSVEwgY29udGVu
dCBwb3NpdGlvbiB3aGVuIGludHJ1c2l2ZSBmbG9hdCBpcyBwcmVzZW50CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvYW5pbWF0aW9uL3RhcmdldENoYW5nZWQtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2FuaW1hdGlvbi90YXJnZXRDaGFuZ2VkLWV4cGVjdGVk
LnR4dAppbmRleCA5ODhkZTIyZDM0OGNlYTlhYzlhZmYzZmFkMWYxNDI1MTA3NmNkN2Q1Li5iNzZk
Y2M4NDk3MTI1NjYwODMzN2Q0YTViZWRhODM4MTkzOTI1NTk5IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvYW5pbWF0aW9uL3RhcmdldENoYW5nZWQtZXhwZWN0ZWQudHh0CisrKyBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9hbmltYXRpb24vdGFyZ2V0Q2hhbmdlZC1leHBlY3RlZC50
eHQKQEAgLTMsMTYgKzMsMzMgQEAgVGVzdHMgZm9yIHRoZSBBbmltYXRpb24udGFyZ2V0Q2hhbmdl
ZCBldmVudC4KIAogPT0gUnVubmluZyB0ZXN0IHN1aXRlOiBBbmltYXRpb24udGFyZ2V0Q2hhbmdl
ZAogLS0gUnVubmluZyB0ZXN0IGNhc2U6IEFuaW1hdGlvbi50YXJnZXRDaGFuZ2VkLk5ld1Rhcmdl
dAotUEFTUzogQW5pbWF0aW9uIHNob3VsZCBoYXZlIGEgdGFyZ2V0LgorUEFTUzogQW5pbWF0aW9u
IGVmZmVjdCBzaG91bGQgaGF2ZSBhIHRhcmdldCBlbGVtZW50LgorUEFTUzogQW5pbWF0aW9uIGVm
ZmVjdCBzaG91bGQgbm90IGhhdmUgYSB0YXJnZXQgcHNldWRvLWVsZW1lbnQuCiBDaGFuZ2luZyB0
YXJnZXQuLi4KIAotUEFTUzogQW5pbWF0aW9uIHNob3VsZCBoYXZlIGEgdGFyZ2V0LgotUEFTUzog
QW5pbWF0aW9uIGVmZmVjdCBzaG91bGQgaGF2ZSBjaGFuZ2VkLgorUEFTUzogQW5pbWF0aW9uIGVm
ZmVjdCBzaG91bGQgaGF2ZSBhIHRhcmdldCBlbGVtZW50LgorUEFTUzogQW5pbWF0aW9uIGVmZmVj
dCBzaG91bGQgbm90IGhhdmUgYSB0YXJnZXQgcHNldWRvLWVsZW1lbnQuCitQQVNTOiBBbmltYXRp
b24gZWZmZWN0IHRhcmdldCBzaG91bGQgaGF2ZSBjaGFuZ2VkLgorUEFTUzogQW5pbWF0aW9uIGVm
ZmVjdCB0YXJnZXQgZWxlbWVudCBzaG91bGQgaGF2ZSBjaGFuZ2VkLgogCiAtLSBSdW5uaW5nIHRl
c3QgY2FzZTogQW5pbWF0aW9uLnRhcmdldENoYW5nZWQuTnVsbFRhcmdldAotUEFTUzogQW5pbWF0
aW9uIHNob3VsZCBoYXZlIGEgdGFyZ2V0LgorUEFTUzogQW5pbWF0aW9uIGVmZmVjdCBzaG91bGQg
aGF2ZSBhIHRhcmdldCBlbGVtZW50LgorUEFTUzogQW5pbWF0aW9uIGVmZmVjdCBzaG91bGQgbm90
IGhhdmUgYSB0YXJnZXQgcHNldWRvLWVsZW1lbnQuCiBDaGFuZ2luZyB0YXJnZXQuLi4KIAotUEFT
UzogQW5pbWF0aW9uIHNob3VsZCBub3QgaGF2ZSBhIHRhcmdldC4KLVBBU1M6IEFuaW1hdGlvbiBl
ZmZlY3Qgc2hvdWxkIGhhdmUgY2hhbmdlZC4KK1BBU1M6IEFuaW1hdGlvbiBlZmZlY3Qgc2hvdWxk
IG5vdCBoYXZlIGEgdGFyZ2V0IGVsZW1lbnQuCitQQVNTOiBBbmltYXRpb24gZWZmZWN0IHRhcmdl
dCBzaG91bGQgaGF2ZSBjaGFuZ2VkLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogQW5pbWF0aW9u
LnRhcmdldENoYW5nZWQuTmV3VGFyZ2V0V2l0aFBzZXVkb0lkCitQQVNTOiBBbmltYXRpb24gZWZm
ZWN0IHNob3VsZCBub3QgaGF2ZSBhIHRhcmdldC4KK0NoYW5naW5nIHRhcmdldC4uLgorCitQQVNT
OiBBbmltYXRpb24gZWZmZWN0IHNob3VsZCBoYXZlIGEgdGFyZ2V0IGVsZW1lbnQuCitQQVNTOiBB
bmltYXRpb24gZWZmZWN0IHNob3VsZCBub3QgaGF2ZSBhIHRhcmdldCBwc2V1ZG8tZWxlbWVudC4K
K0NoYW5naW5nIHRhcmdldCBhZ2Fpbi4uLgorCitQQVNTOiBBbmltYXRpb24gZWZmZWN0IHNob3Vs
ZCBoYXZlIGEgdGFyZ2V0IGVsZW1lbnQuCitQQVNTOiBBbmltYXRpb24gZWZmZWN0IHNob3VsZCBo
YXZlIGEgdGFyZ2V0IHBzZXVkby1lbGVtZW50LgorUEFTUzogQW5pbWF0aW9uIGVmZmVjdCB0YXJn
ZXQgc2hvdWxkIGhhdmUgY2hhbmdlZC4KK1BBU1M6IEFuaW1hdGlvbiBlZmZlY3QgdGFyZ2V0IGVs
ZW1lbnQgc2hvdWxkIG5vdCBoYXZlIGNoYW5nZWQuCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9hbmltYXRpb24vdGFyZ2V0Q2hhbmdlZC5odG1sIGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2FuaW1hdGlvbi90YXJnZXRDaGFuZ2VkLmh0bWwKaW5kZXggYmU3MDVmNmM4YTMxNGVi
ZmUyYWQ2NDkzYWI3M2UzMmQxMDJlYTY4Yy4uODBiNWJjOTFhMmZjNjBjNDFlYmZiYjg4ZjUyMGJi
MGUyZWViZDFiZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2FuaW1hdGlvbi90
YXJnZXRDaGFuZ2VkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2FuaW1hdGlvbi90
YXJnZXRDaGFuZ2VkLmh0bWwKQEAgLTI5LDcgKzI5LDggQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChhbmltYXRpb24uYW5pbWF0aW9uVHlwZSA9PT0g
V0kuQW5pbWF0aW9uLlR5cGUuV2ViQW5pbWF0aW9uLCAiQW5pbWF0aW9uIHNob3VsZCBiZSBhIHdl
YiBhbmltYXRpb24uIik7CiAKICAgICAgICAgICAgIGxldCBbb2xkVGFyZ2V0XSA9IGF3YWl0IHBy
b21pc2lmeSgoY2FsbGJhY2spID0+IHsgYW5pbWF0aW9uLnJlcXVlc3RFZmZlY3RUYXJnZXQoY2Fs
bGJhY2spOyB9KTsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChvbGRUYXJn
ZXQgaW5zdGFuY2VvZiBXSS5ET01Ob2RlLCAiQW5pbWF0aW9uIHNob3VsZCBoYXZlIGEgdGFyZ2V0
LiIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KG9sZFRhcmdldC5ub2Rl
IGluc3RhbmNlb2YgV0kuRE9NTm9kZSwgIkFuaW1hdGlvbiBlZmZlY3Qgc2hvdWxkIGhhdmUgYSB0
YXJnZXQgZWxlbWVudC4iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0TnVsbChv
bGRUYXJnZXQucHNldWRvSWQsICJBbmltYXRpb24gZWZmZWN0IHNob3VsZCBub3QgaGF2ZSBhIHRh
cmdldCBwc2V1ZG8tZWxlbWVudC4iKTsKIAogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2co
IkNoYW5naW5nIHRhcmdldC4uLlxuIik7CiAgICAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChb
CkBAIC0zOCw5ICszOSwxMSBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgIF0pOwogCiAg
ICAgICAgICAgICBsZXQgW25ld1RhcmdldF0gPSBhd2FpdCBwcm9taXNpZnkoKGNhbGxiYWNrKSA9
PiB7IGFuaW1hdGlvbi5yZXF1ZXN0RWZmZWN0VGFyZ2V0KGNhbGxiYWNrKTsgfSk7Ci0gICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQobmV3VGFyZ2V0IGluc3RhbmNlb2YgV0kuRE9N
Tm9kZSwgIkFuaW1hdGlvbiBzaG91bGQgaGF2ZSBhIHRhcmdldC4iKTsKKyAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuZXhwZWN0VGhhdChuZXdUYXJnZXQubm9kZSBpbnN0YW5jZW9mIFdJLkRPTU5v
ZGUsICJBbmltYXRpb24gZWZmZWN0IHNob3VsZCBoYXZlIGEgdGFyZ2V0IGVsZW1lbnQuIik7Cisg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdE51bGwobmV3VGFyZ2V0LnBzZXVkb0lkLCAi
QW5pbWF0aW9uIGVmZmVjdCBzaG91bGQgbm90IGhhdmUgYSB0YXJnZXQgcHNldWRvLWVsZW1lbnQu
Iik7CiAKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0Tm90RXF1YWwobmV3VGFyZ2V0
LCBvbGRUYXJnZXQsICJBbmltYXRpb24gZWZmZWN0IHNob3VsZCBoYXZlIGNoYW5nZWQuIik7Cisg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdE5vdEVxdWFsKG5ld1RhcmdldCwgb2xkVGFy
Z2V0LCAiQW5pbWF0aW9uIGVmZmVjdCB0YXJnZXQgc2hvdWxkIGhhdmUgY2hhbmdlZC4iKTsKKyAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0Tm90RXF1YWwobmV3VGFyZ2V0Lm5vZGUsIG9s
ZFRhcmdldC5ub2RlLCAiQW5pbWF0aW9uIGVmZmVjdCB0YXJnZXQgZWxlbWVudCBzaG91bGQgaGF2
ZSBjaGFuZ2VkLiIpOwogICAgICAgICB9LAogICAgIH0pOwogCkBAIC02MCw3ICs2Myw4IEBAIGZ1
bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQoYW5pbWF0aW9u
LmFuaW1hdGlvblR5cGUgPT09IFdJLkFuaW1hdGlvbi5UeXBlLldlYkFuaW1hdGlvbiwgIkFuaW1h
dGlvbiBzaG91bGQgYmUgYSB3ZWIgYW5pbWF0aW9uLiIpOwogCiAgICAgICAgICAgICBsZXQgW29s
ZFRhcmdldF0gPSBhd2FpdCBwcm9taXNpZnkoKGNhbGxiYWNrKSA9PiB7IGFuaW1hdGlvbi5yZXF1
ZXN0RWZmZWN0VGFyZ2V0KGNhbGxiYWNrKTsgfSk7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmV4cGVjdFRoYXQob2xkVGFyZ2V0IGluc3RhbmNlb2YgV0kuRE9NTm9kZSwgIkFuaW1hdGlvbiBz
aG91bGQgaGF2ZSBhIHRhcmdldC4iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0
VGhhdChvbGRUYXJnZXQubm9kZSBpbnN0YW5jZW9mIFdJLkRPTU5vZGUsICJBbmltYXRpb24gZWZm
ZWN0IHNob3VsZCBoYXZlIGEgdGFyZ2V0IGVsZW1lbnQuIik7CisgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmV4cGVjdE51bGwob2xkVGFyZ2V0LnBzZXVkb0lkLCAiQW5pbWF0aW9uIGVmZmVjdCBz
aG91bGQgbm90IGhhdmUgYSB0YXJnZXQgcHNldWRvLWVsZW1lbnQuIik7CiAKICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QubG9nKCJDaGFuZ2luZyB0YXJnZXQuLi5cbiIpOwogICAgICAgICAgICAg
YXdhaXQgUHJvbWlzZS5hbGwoWwpAQCAtNjksOSArNzMsNTIgQEAgZnVuY3Rpb24gdGVzdCgpCiAg
ICAgICAgICAgICBdKTsKIAogICAgICAgICAgICAgbGV0IFtuZXdUYXJnZXRdID0gYXdhaXQgcHJv
bWlzaWZ5KChjYWxsYmFjaykgPT4geyBhbmltYXRpb24ucmVxdWVzdEVmZmVjdFRhcmdldChjYWxs
YmFjayk7IH0pOwotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3ROdWxsKG5ld1Rhcmdl
dCwgIkFuaW1hdGlvbiBzaG91bGQgbm90IGhhdmUgYSB0YXJnZXQuIik7CisgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmV4cGVjdE51bGwobmV3VGFyZ2V0LCAiQW5pbWF0aW9uIGVmZmVjdCBzaG91
bGQgbm90IGhhdmUgYSB0YXJnZXQgZWxlbWVudC4iKTsKIAotICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5leHBlY3ROb3RFcXVhbChuZXdUYXJnZXQsIG9sZFRhcmdldCwgIkFuaW1hdGlvbiBlZmZl
Y3Qgc2hvdWxkIGhhdmUgY2hhbmdlZC4iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhw
ZWN0Tm90RXF1YWwobmV3VGFyZ2V0LCBvbGRUYXJnZXQsICJBbmltYXRpb24gZWZmZWN0IHRhcmdl
dCBzaG91bGQgaGF2ZSBjaGFuZ2VkLiIpOworICAgICAgICB9LAorICAgIH0pOworCisgICAgc3Vp
dGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiQW5pbWF0aW9uLnRhcmdldENoYW5nZWQu
TmV3VGFyZ2V0V2l0aFBzZXVkb0lkIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJTaG91bGQgcmV0
dXJuIGEgdmFsaWQgb2JqZWN0IGZvciB0aGUgZ2l2ZW4gYW5pbWF0aW9uIGlkZW50aWZpZXIuIiwK
KyAgICAgICAgYXN5bmMgdGVzdCgpIHsKKyAgICAgICAgICAgIGxldCBhbmltYXRpb25zID0gQXJy
YXkuZnJvbShXSS5hbmltYXRpb25NYW5hZ2VyLmFuaW1hdGlvbkNvbGxlY3Rpb24pOworICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQoYW5pbWF0aW9ucy5sZW5ndGggPT09IDEsICJUaGVy
ZSBzaG91bGQgb25seSBiZSBvbmUgYW5pbWF0aW9uLiIpOworCisgICAgICAgICAgICBsZXQgYW5p
bWF0aW9uID0gYW5pbWF0aW9uc1swXTsKKyAgICAgICAgICAgIGlmICghYW5pbWF0aW9uKSB7Cisg
ICAgICAgICAgICAgICAgdGhyb3cgYE1pc3NpbmcgYW5pbWF0aW9uLmA7CisgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFz
c2VydChhbmltYXRpb24uYW5pbWF0aW9uVHlwZSA9PT0gV0kuQW5pbWF0aW9uLlR5cGUuV2ViQW5p
bWF0aW9uLCAiQW5pbWF0aW9uIHNob3VsZCBiZSBhIHdlYiBhbmltYXRpb24uIik7CisKKyAgICAg
ICAgICAgIGxldCBbb2xkVGFyZ2V0XSA9IGF3YWl0IHByb21pc2lmeSgoY2FsbGJhY2spID0+IHsg
YW5pbWF0aW9uLnJlcXVlc3RFZmZlY3RUYXJnZXQoY2FsbGJhY2spOyB9KTsKKyAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuZXhwZWN0TnVsbChvbGRUYXJnZXQsICJBbmltYXRpb24gZWZmZWN0IHNo
b3VsZCBub3QgaGF2ZSBhIHRhcmdldC4iKTsKKworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5s
b2coIkNoYW5naW5nIHRhcmdldC4uLlxuIik7CisgICAgICAgICAgICBhd2FpdCBQcm9taXNlLmFs
bChbCisgICAgICAgICAgICAgICAgYW5pbWF0aW9uLmF3YWl0RXZlbnQoV0kuQW5pbWF0aW9uLkV2
ZW50LlRhcmdldENoYW5nZWQpLAorICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVh
dGVJblBhZ2UoYHdpbmRvdy5hbmltYXRpb24uZWZmZWN0LnRhcmdldCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImRpdiIpYCksCisgICAgICAgICAgICBdKTsKKworICAgICAgICAgICAgbGV0IFtu
ZXdUYXJnZXRdID0gYXdhaXQgcHJvbWlzaWZ5KChjYWxsYmFjaykgPT4geyBhbmltYXRpb24ucmVx
dWVzdEVmZmVjdFRhcmdldChjYWxsYmFjayk7IH0pOworICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5leHBlY3RUaGF0KG5ld1RhcmdldC5ub2RlIGluc3RhbmNlb2YgV0kuRE9NTm9kZSwgIkFuaW1h
dGlvbiBlZmZlY3Qgc2hvdWxkIGhhdmUgYSB0YXJnZXQgZWxlbWVudC4iKTsKKyAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuZXhwZWN0TnVsbChuZXdUYXJnZXQucHNldWRvSWQsICJBbmltYXRpb24g
ZWZmZWN0IHNob3VsZCBub3QgaGF2ZSBhIHRhcmdldCBwc2V1ZG8tZWxlbWVudC4iKTsKKworICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkNoYW5naW5nIHRhcmdldCBhZ2Fpbi4uLlxuIik7
CisgICAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChbCisgICAgICAgICAgICAgICAgYW5pbWF0
aW9uLmF3YWl0RXZlbnQoV0kuQW5pbWF0aW9uLkV2ZW50LlRhcmdldENoYW5nZWQpLAorICAgICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoYHdpbmRvdy5hbmltYXRpb24u
ZWZmZWN0LnBzZXVkb0VsZW1lbnQgPSAiOjpiZWZvcmUiYCksCisgICAgICAgICAgICBdKTsKKwor
ICAgICAgICAgICAgbGV0IFtuZXdlc3RUYXJnZXRdID0gYXdhaXQgcHJvbWlzaWZ5KChjYWxsYmFj
aykgPT4geyBhbmltYXRpb24ucmVxdWVzdEVmZmVjdFRhcmdldChjYWxsYmFjayk7IH0pOworICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KG5ld2VzdFRhcmdldC5ub2RlIGluc3Rh
bmNlb2YgV0kuRE9NTm9kZSwgIkFuaW1hdGlvbiBlZmZlY3Qgc2hvdWxkIGhhdmUgYSB0YXJnZXQg
ZWxlbWVudC4iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwobmV3ZXN0
VGFyZ2V0LnBzZXVkb0lkLCAiYmVmb3JlIiwgIkFuaW1hdGlvbiBlZmZlY3Qgc2hvdWxkIGhhdmUg
YSB0YXJnZXQgcHNldWRvLWVsZW1lbnQuIik7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
ZXhwZWN0Tm90RXF1YWwobmV3VGFyZ2V0LCBuZXdlc3RUYXJnZXQsICJBbmltYXRpb24gZWZmZWN0
IHRhcmdldCBzaG91bGQgaGF2ZSBjaGFuZ2VkLiIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5leHBlY3RFcXVhbChuZXdUYXJnZXQubm9kZSwgbmV3ZXN0VGFyZ2V0Lm5vZGUsICJBbmltYXRp
b24gZWZmZWN0IHRhcmdldCBlbGVtZW50IHNob3VsZCBub3QgaGF2ZSBjaGFuZ2VkLiIpOwogICAg
ICAgICB9LAogICAgIH0pOwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>