<?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>204170</bug_id>
          
          <creation_ts>2019-11-13 12:15:57 -0800</creation_ts>
          <short_desc>Web Inspector: allow inspector to pause provisional page load and restore its state</short_desc>
          <delta_ts>2019-12-05 10:52:56 -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>All</rep_platform>
          <op_sys>All</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>
          <dependson>204086</dependson>
          <blocked>202219</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yury Semikhatsky">yurys</reporter>
          <assigned_to name="Yury Semikhatsky">yurys</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>hi</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tsavell</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1589983</commentid>
    <comment_count>0</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2019-11-13 12:15:57 -0800</bug_when>
    <thetext>Target agent should allow to automatically pause new targets on start to let inspector front-end restore its state (breakpoints, user agent overrides, network recording etc) before main resource&apos;s loading event starts.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1589992</commentid>
    <comment_count>1</comment_count>
      <attachid>383481</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2019-11-13 12:40:30 -0800</bug_when>
    <thetext>Created attachment 383481
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1589994</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-11-13 12:41:04 -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>1590023</commentid>
    <comment_count>3</comment_count>
      <attachid>383491</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2019-11-13 13:43:44 -0800</bug_when>
    <thetext>Created attachment 383491
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1590026</commentid>
    <comment_count>4</comment_count>
      <attachid>383491</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2019-11-13 13:48:49 -0800</bug_when>
    <thetext>Comment on attachment 383491
Patch

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

&gt; Source/WebInspectorUI/UserInterface/Views/ResourceContentView.js:214
&gt; +        if (this._hasContent())

Note to reviewers: this patch also includes changes from https://bugs.webkit.org/show_bug.cgi?id=204086, I&apos;m going to drop those changes once that bug is fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1590036</commentid>
    <comment_count>5</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2019-11-13 14:07:40 -0800</bug_when>
    <thetext>Chris, please have a look at the modifications in WebPageProxy and ProvisionalPageProxy. I spoke with you briefly about the changes at the WebKit conference.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1591785</commentid>
    <comment_count>6</comment_count>
      <attachid>383491</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-11-19 17:11:28 -0800</bug_when>
    <thetext>Comment on attachment 383491
Patch

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

&gt; Source/JavaScriptCore/inspector/InspectorTarget.h:54
&gt; +        if (!paused)

NIT: you can use `m_pausedOnStart` instead, since that&apos;s the actual state of this object

&gt; Source/JavaScriptCore/inspector/InspectorTarget.h:64
&gt; +    virtual void resumeTarget() { }

Shouldn&apos;t this be `protected`?

&gt; Source/JavaScriptCore/inspector/agents/InspectorTargetAgent.cpp:65
&gt; +    InspectorTarget* target = m_targets.get(targetId);

`auto`?

&gt; Source/JavaScriptCore/inspector/agents/InspectorTargetAgent.cpp:69
&gt; +    }

Style: missing newline after

&gt; Source/JavaScriptCore/inspector/agents/InspectorTargetAgent.cpp:71
&gt; +        error = &quot;Target is not paused on start&quot;_s;

NIT: I&apos;d rephrase this as &quot;Target for given targetId is not paused&quot;

&gt; Source/JavaScriptCore/inspector/agents/InspectorTargetAgent.cpp:73
&gt; +    }

Style: missing newline after

&gt; Source/JavaScriptCore/inspector/agents/InspectorTargetAgent.cpp:74
&gt; +    target-&gt;setPausedOnStart(false);

Having this be called `setPausedOnStart` seems weird.  How about we just call it `isPaused` and `setPaused`.

&gt; Source/JavaScriptCore/inspector/protocol/Target.json:20
&gt; +            &quot;name&quot;: &quot;setPauseOnStart&quot;,

Why do we need this command, especially since we always pass `true`?

&gt; Source/JavaScriptCore/inspector/protocol/Target.json:28
&gt; +            &quot;description&quot;: &quot;Will resume target it was paused on start.&quot;,

s/it/if

&gt; Source/WebInspectorUI/UserInterface/Controllers/TargetManager.js:-38
&gt; -        this._provisionalTargetInfos = new Map;
&gt; -        this._swappedTargetIds = new Set;

Why were these removed?  Were they replaced by some other logic, or are they no longer needed?

&gt; Source/WebInspectorUI/UserInterface/Controllers/TargetManager.js:94
&gt; +        target.TargetAgent.setPauseOnStart(true);

This needs a compatibility statement (assuming we keep it).
```
    // COMPATIBILITY (iOS 13): Target.setPauseOnStart did not exist yet.
    if (target.hasCommand(&quot;Target.setPauseOnStart&quot;))
        target.TargetAgent.setPauseOnStart(true);
```

&gt; Source/WebInspectorUI/UserInterface/Controllers/TargetManager.js:123
&gt; +        this.dispatchEventToListeners(WI.TargetManager.Event.TargetCreated, {target, isPausedOnStart: targetInfo.isPausedOnStart});

Can we remove this event altogether?  We could add an `_isPaused` member to `WI.Target` and use `WI.TargetManager.Event.TargetAdded` instead.

&gt; Source/WebInspectorUI/UserInterface/Controllers/TargetManager.js:133
&gt; +            return;
&gt; +        target.isProvisional = false;

Style: missing newline

&gt; Source/WebInspectorUI/UserInterface/Controllers/TargetManager.js:171
&gt; +            parentTarget.TargetAgent.resume(targetInfo.targetId).catch((error) =&gt; {

Could we have this be inside `WI.Target.prototype.initialize`?  Do we want to put this inside the `Promise.all` that&apos;s in that function?

&gt; Source/WebInspectorUI/UserInterface/Controllers/TargetManager.js:172
&gt; +                if (subTarget.isDestroyed)

Please add a comment explaining why we have this early return.

&gt; Source/WebInspectorUI/UserInterface/Controllers/TargetManager.js:187
&gt; +            return;
&gt;          this._checkAndHandlePageTargetTermination(target);

Style: missing newline

&gt; Source/WebInspectorUI/UserInterface/Controllers/TargetManager.js:213
&gt; +        // COMPATIBILITY (iOS 13.0): `Target.TargetInfo.isProvisional` did not exist yet.

This type of compatibility statement isn&apos;t necessary, since you&apos;re using logic defined in the frontend (e.g. `WI.Target.prototype.get isProvisional`).  We only use compatibility statements for things that directly communicate with the backend (e.g. command invocation or event handling).

&gt; Source/WebInspectorUI/UserInterface/Controllers/TargetManager.js:232
&gt;              return;
&gt; +        if (target.isProvisional)

Style: missing newline

&gt; Source/WebInspectorUI/UserInterface/Protocol/Connection.js:58
&gt; +    addProvisionalMessage(message)

Rather than introduce an entire new function, couldn&apos;t we store the paused state on `WI.Target` and have `InspectorBackend.Connection.prototype.dispatch` have an early return if `this._target.isPaused`?  That way, all the logic can be contained inside `WI.Target` and `WI.Connection` and doesn&apos;t need to be &quot;exposed&quot; in other classes/files.

&gt; Source/WebInspectorUI/UserInterface/Protocol/Target.js:42
&gt; +        this._isProvisional = false;

Why not pass this in as part of the constructor?

&gt; Source/WebInspectorUI/UserInterface/Protocol/Target.js:176
&gt; +    get isProvisional() { return this._isProvisional; }
&gt; +    set isProvisional(value) { this._isProvisional = value; }

Style: we normally put a get-set pair in it&apos;s own section.  Take a look at `WI.Recording.prototype.get source` and `WI.Recording.prototype.set source` for an example of what I mean.

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/ResourceContentView.js:214
&gt;&gt; +        if (this._hasContent())
&gt; 
&gt; Note to reviewers: this patch also includes changes from https://bugs.webkit.org/show_bug.cgi?id=204086, I&apos;m going to drop those changes once that bug is fixed.

I don&apos;t see how that change is related to this bug.  Could you explain?

Also, for future reference, it makes it more difficult to review as I don&apos;t know what&apos;s necessary for this patch vs what isn&apos;t.  I&apos;d appreciate it if you removed those changes (unless it is required) for the next patch you upload.

&gt; Source/WebKit/UIProcess/InspectorTargetProxy.cpp:110
&gt; +    if (!m_provisionalPage)
&gt; +        return;
&gt; +    m_provisionalPage-&gt;resumeLoading();

NIT: I&apos;d just have this be a regular `if`, not an early return.
```
    if (m_provisionalPage)
        m_provisionalPage-&gt;resumeLoading();
```

&gt; Source/WebKit/UIProcess/ProvisionalPageProxy.h:95
&gt; +    void resumeLoading();
&gt; +    bool shouldPauseLoading() const { return m_loadingPaused; }
&gt; +    void runWhenLoadingResumed(WTF::Function&lt;void(bool)&gt;&amp;&amp;);

Please rename these to have &quot;ForInspector&quot; (or something like it) at the end of the name so it&apos;s clear when this is expected to be used.

&gt; Source/WebKit/UIProcess/WebPageInspectorController.cpp:170
&gt; +WebPageInspectorController::PauseLoading WebPageInspectorController::didCreateProvisionalPage(ProvisionalPageProxy&amp; provisionalPage)

Having this function return something is very weird, and not at all what I&apos;d expect from reading the name.  Please either create another function `shouldPauseProvisionalPage` (which would be called immediately after `didCreateProvisionalPage`) or rename `didCreateProvisionalPage` to indicate that it returns something which should be used to change some functionality.

&gt; Source/WebKit/UIProcess/WebPageInspectorController.cpp:173
&gt; +    InspectorTarget* targetPtr = target.get();

`auto`?

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:3085
&gt; +    auto continuation = [this, navigation = makeRef(navigation), newProcess = WTFMove(newProcess), websitePolicies = WTFMove(websitePolicies)](bool isCancelled) mutable {

What is the point of `isCancelled`?  It seems like we always pass `false` when calling this function.

Also, why is this `mutable`?

&gt; LayoutTests/http/tests/inspector/target/provisional-load-cancels-previous-load.html:69
&gt; +provisional targets being created, first of which is later destroyed and the second
&gt; +is committed.

Style: please keep the `&lt;p&gt;` on one line.

&gt; LayoutTests/http/tests/inspector/target/resources/inline-debugger-statement.html:18
&gt; +&lt;/p&gt;

Ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1592601</commentid>
    <comment_count>7</comment_count>
      <attachid>383491</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2019-11-21 17:25:34 -0800</bug_when>
    <thetext>Comment on attachment 383491
Patch

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

&gt;&gt; Source/JavaScriptCore/inspector/InspectorTarget.h:54
&gt;&gt; +        if (!paused)
&gt; 
&gt; NIT: you can use `m_pausedOnStart` instead, since that&apos;s the actual state of this object

Done.

&gt;&gt; Source/JavaScriptCore/inspector/InspectorTarget.h:64
&gt;&gt; +    virtual void resumeTarget() { }
&gt; 
&gt; Shouldn&apos;t this be `protected`?

No, I don&apos;t want to let any subclasses call this method, only override.

&gt;&gt; Source/JavaScriptCore/inspector/agents/InspectorTargetAgent.cpp:65
&gt;&gt; +    InspectorTarget* target = m_targets.get(targetId);
&gt; 
&gt; `auto`?

Done.

&gt;&gt; Source/JavaScriptCore/inspector/agents/InspectorTargetAgent.cpp:69
&gt;&gt; +    }
&gt; 
&gt; Style: missing newline after

Done.

&gt;&gt; Source/JavaScriptCore/inspector/agents/InspectorTargetAgent.cpp:71
&gt;&gt; +        error = &quot;Target is not paused on start&quot;_s;
&gt; 
&gt; NIT: I&apos;d rephrase this as &quot;Target for given targetId is not paused&quot;

Done.

&gt;&gt; Source/JavaScriptCore/inspector/agents/InspectorTargetAgent.cpp:73
&gt;&gt; +    }
&gt; 
&gt; Style: missing newline after

Done.

&gt;&gt; Source/JavaScriptCore/inspector/agents/InspectorTargetAgent.cpp:74
&gt;&gt; +    target-&gt;setPausedOnStart(false);
&gt; 
&gt; Having this be called `setPausedOnStart` seems weird.  How about we just call it `isPaused` and `setPaused`.

Done.

&gt;&gt; Source/JavaScriptCore/inspector/protocol/Target.json:20
&gt;&gt; +            &quot;name&quot;: &quot;setPauseOnStart&quot;,
&gt; 
&gt; Why do we need this command, especially since we always pass `true`?

This command get the backend to the state where normal control flow is interrupted and requires an explicit reaction from the frontend before it can continue. It&apos;s up to the front-end to decide if it needs to pause the targets at all. E.g. consider a performance profiling mode where you want to minimize impact of the inspector on the browser and may not want to introduce extra delays to the navigation.

&gt;&gt; Source/JavaScriptCore/inspector/protocol/Target.json:28
&gt;&gt; +            &quot;description&quot;: &quot;Will resume target it was paused on start.&quot;,
&gt; 
&gt; s/it/if

Done.

&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/TargetManager.js:-38
&gt;&gt; -        this._swappedTargetIds = new Set;
&gt; 
&gt; Why were these removed?  Were they replaced by some other logic, or are they no longer needed?

We now create PageTarget for provisional targets as well and isProvisional bit is stored inside the target. Similarly _swappedTargetIds is not needed anymore, it was a temporary measure.

&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/TargetManager.js:94
&gt;&gt; +        target.TargetAgent.setPauseOnStart(true);
&gt; 
&gt; This needs a compatibility statement (assuming we keep it).
&gt; ```
&gt;     // COMPATIBILITY (iOS 13): Target.setPauseOnStart did not exist yet.
&gt;     if (target.hasCommand(&quot;Target.setPauseOnStart&quot;))
&gt;         target.TargetAgent.setPauseOnStart(true);
&gt; ```

Done.

&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/TargetManager.js:123
&gt;&gt; +        this.dispatchEventToListeners(WI.TargetManager.Event.TargetCreated, {target, isPausedOnStart: targetInfo.isPausedOnStart});
&gt; 
&gt; Can we remove this event altogether?  We could add an `_isPaused` member to `WI.Target` and use `WI.TargetManager.Event.TargetAdded` instead.

Done. Removed both TargetCreated and TargetDestroyed events as now that we eagerly create Target for provisional pages both of them are redundant.

&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/TargetManager.js:133
&gt;&gt; +        target.isProvisional = false;
&gt; 
&gt; Style: missing newline

Done.

&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/TargetManager.js:171
&gt;&gt; +            parentTarget.TargetAgent.resume(targetInfo.targetId).catch((error) =&gt; {
&gt; 
&gt; Could we have this be inside `WI.Target.prototype.initialize`?  Do we want to put this inside the `Promise.all` that&apos;s in that function?

Moved to Target.initialize. As long as commands from Promise.all are _sent_ before Target.resume I don&apos;t see a reason why Target.resume should be in the same Promise.all and be a blocker for Inspector.initialized (note that the target will be dispatching inspector messages even if it&apos;s paused).

&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/TargetManager.js:172
&gt;&gt; +                if (subTarget.isDestroyed)
&gt; 
&gt; Please add a comment explaining why we have this early return.

Done.

&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/TargetManager.js:187
&gt;&gt;          this._checkAndHandlePageTargetTermination(target);
&gt; 
&gt; Style: missing newline

Done.

&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/TargetManager.js:213
&gt;&gt; +        // COMPATIBILITY (iOS 13.0): `Target.TargetInfo.isProvisional` did not exist yet.
&gt; 
&gt; This type of compatibility statement isn&apos;t necessary, since you&apos;re using logic defined in the frontend (e.g. `WI.Target.prototype.get isProvisional`).  We only use compatibility statements for things that directly communicate with the backend (e.g. command invocation or event handling).

Done.

&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/TargetManager.js:232
&gt;&gt; +        if (target.isProvisional)
&gt; 
&gt; Style: missing newline

Done.

&gt;&gt; Source/WebInspectorUI/UserInterface/Protocol/Connection.js:58
&gt;&gt; +    addProvisionalMessage(message)
&gt; 
&gt; Rather than introduce an entire new function, couldn&apos;t we store the paused state on `WI.Target` and have `InspectorBackend.Connection.prototype.dispatch` have an early return if `this._target.isPaused`?  That way, all the logic can be contained inside `WI.Target` and `WI.Connection` and doesn&apos;t need to be &quot;exposed&quot; in other classes/files.

I don&apos;t quite like it as today Target it not in the business of dispatching messages. Buffering the messages on Target would anyway require adding similar new methods on the Target class. Additionally we&apos;d have to plumb all message dispatching logic through Target (current implementation does it by calling target.connection.dispatch). Having dispatch() and dispatchinProvisionalMessages() seems more logical to me as it doesn&apos;t leak notion of messages to Target.

&gt;&gt; Source/WebInspectorUI/UserInterface/Protocol/Target.js:42
&gt;&gt; +        this._isProvisional = false;
&gt; 
&gt; Why not pass this in as part of the constructor?

It has a setter and the only ancestor that may set it to true is PageTarget, so I simply call the setter from PageTarget constructor instead of adding one more argument to the already long list. Let me know if you prefer updating all subclasses to pass isProvisional value explicitly.

&gt;&gt; Source/WebInspectorUI/UserInterface/Protocol/Target.js:176
&gt;&gt; +    set isProvisional(value) { this._isProvisional = value; }
&gt; 
&gt; Style: we normally put a get-set pair in it&apos;s own section.  Take a look at `WI.Recording.prototype.get source` and `WI.Recording.prototype.set source` for an example of what I mean.

Done.

&gt;&gt;&gt; Source/WebInspectorUI/UserInterface/Views/ResourceContentView.js:214
&gt;&gt;&gt; +        if (this._hasContent())
&gt;&gt; 
&gt;&gt; Note to reviewers: this patch also includes changes from https://bugs.webkit.org/show_bug.cgi?id=204086, I&apos;m going to drop those changes once that bug is fixed.
&gt; 
&gt; I don&apos;t see how that change is related to this bug.  Could you explain?
&gt; 
&gt; Also, for future reference, it makes it more difficult to review as I don&apos;t know what&apos;s necessary for this patch vs what isn&apos;t.  I&apos;d appreciate it if you removed those changes (unless it is required) for the next patch you upload.

Without these changes debugger is broken for inline breakpoints because of the bug mentioned above and it&apos;d be difficult to test this patch if you decided to apply it locally. The fix is landed so this modifications are going to be dropped. How do you suggest to make the patch testable locally without squashing other bug fix changes into it? One way would be to upload the bug fix separately and provide instructions what are the prerequisite patches which is less convenient for reviewers IMO.

&gt;&gt; Source/WebKit/UIProcess/InspectorTargetProxy.cpp:110
&gt;&gt; +    m_provisionalPage-&gt;resumeLoading();
&gt; 
&gt; NIT: I&apos;d just have this be a regular `if`, not an early return.
&gt; ```
&gt;     if (m_provisionalPage)
&gt;         m_provisionalPage-&gt;resumeLoading();
&gt; ```

Done.

&gt;&gt; Source/WebKit/UIProcess/ProvisionalPageProxy.h:95
&gt;&gt; +    void runWhenLoadingResumed(WTF::Function&lt;void(bool)&gt;&amp;&amp;);
&gt; 
&gt; Please rename these to have &quot;ForInspector&quot; (or something like it) at the end of the name so it&apos;s clear when this is expected to be used.

Done.

&gt;&gt; Source/WebKit/UIProcess/WebPageInspectorController.cpp:170
&gt;&gt; +WebPageInspectorController::PauseLoading WebPageInspectorController::didCreateProvisionalPage(ProvisionalPageProxy&amp; provisionalPage)
&gt; 
&gt; Having this function return something is very weird, and not at all what I&apos;d expect from reading the name.  Please either create another function `shouldPauseProvisionalPage` (which would be called immediately after `didCreateProvisionalPage`) or rename `didCreateProvisionalPage` to indicate that it returns something which should be used to change some functionality.

Renamed to interceptProvisionalPage. Let me know if you have a better name in your mind.

&gt;&gt; Source/WebKit/UIProcess/WebPageInspectorController.cpp:173
&gt;&gt; +    InspectorTarget* targetPtr = target.get();
&gt; 
&gt; `auto`?

Done.

&gt;&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:3085
&gt;&gt; +    auto continuation = [this, navigation = makeRef(navigation), newProcess = WTFMove(newProcess), websitePolicies = WTFMove(websitePolicies)](bool isCancelled) mutable {
&gt; 
&gt; What is the point of `isCancelled`?  It seems like we always pass `false` when calling this function.
&gt; 
&gt; Also, why is this `mutable`?

Removed isCancelled.

It has to be `mutable` as the closure moves captured values (by default all of them are const in c++ lambdas).

&gt;&gt; LayoutTests/http/tests/inspector/target/provisional-load-cancels-previous-load.html:69
&gt;&gt; +is committed.
&gt; 
&gt; Style: please keep the `&lt;p&gt;` on one line.

Done.

&gt;&gt; LayoutTests/http/tests/inspector/target/resources/inline-debugger-statement.html:18
&gt;&gt; +&lt;/p&gt;
&gt; 
&gt; Ditto

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1592602</commentid>
    <comment_count>8</comment_count>
      <attachid>384109</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2019-11-21 17:26:01 -0800</bug_when>
    <thetext>Created attachment 384109
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594919</commentid>
    <comment_count>9</comment_count>
      <attachid>384109</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-12-02 22:33:07 -0800</bug_when>
    <thetext>Comment on attachment 384109
Patch

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

r-, as it looks like &apos;http/tests/inspector/target/provisional-load-cancels-previous-load.html&apos; is failing :(

Thanks for iterating on this :)  I think we&apos;re almost there!

&gt; Source/JavaScriptCore/inspector/InspectorTarget.h:66
&gt; +    bool m_pausedOnStart { false };

Please change this to be just `m_paused` to match the getter/setter naming.

&gt; Source/WebInspectorUI/UserInterface/Controllers/TargetManager.js:96
&gt; +        // COMPATIBILITY (iOS 13): Target.setPauseOnStart did not exist yet.
&gt; +        if (target.hasCommand(&quot;Target.setPauseOnStart&quot;))
&gt; +            target.TargetAgent.setPauseOnStart(true);

Let&apos;s move this to `WI.MultiplexingBackendTarget.prototype.initialize` (please keep the existing comments).

&gt; Source/WebInspectorUI/UserInterface/Controllers/TargetManager.js:177
&gt; +            return new WI.PageTarget(parentTarget, targetId, WI.UIString(&quot;Page&quot;), connection, targetInfo.isProvisional, isPaused);

Why not also pull out `isProvisional` above?
```
    // COMPATIBILITY (iOS 13.0): `Target.TargetInfo.isProvisional` and `Target.TargetInfo.isPaused` did not exist yet.
    let {targetId, type, isProvisional, isPaused} = targetInfo;
```

&gt; Source/WebInspectorUI/UserInterface/Controllers/WorkerManager.js:50
&gt; +        const isPaused = false;
&gt; +        let workerTarget = new WI.WorkerTarget(target, workerId, url, connection, isPaused);

Style: we normally omit trailing arguments if they&apos;re falsy.

&gt; Source/WebInspectorUI/UserInterface/Protocol/Connection.js:58
&gt; +    addProvisionalMessage(message)

&gt;&gt; Rather than introduce an entire new function, couldn&apos;t we store the paused state on `WI.Target` and have `InspectorBackend.Connection.prototype.dispatch` have an early return if `this._target.isPaused`?  That way, all the logic can be contained inside `WI.Target` and `WI.Connection` and doesn&apos;t need to be &quot;exposed&quot; in other classes/files.
&gt; I don&apos;t quite like it as today Target it not in the business of dispatching messages. Buffering the messages on Target would anyway require adding similar new methods on the Target class. Additionally we&apos;d have to plumb all message dispatching logic through Target (current implementation does it by calling target.connection.dispatch). Having dispatch() and dispatchinProvisionalMessages() seems more logical to me as it doesn&apos;t leak notion of messages to Target.
I wasn&apos;t suggesting that we store provisional messages on `WI.Target`, but rather to have `InspectorBackend.Connection.prototype.dispatch` check whether `this._target.isProvisional` and do this logic there instead.  That way, `WI.TargetManager` doesn&apos;t have to know about whether the `WI.Target` is provisional or not, and instead can just let `WI.Target` and `InspectorBackend.Connection` deal with it instead.

```
    dispatch(message)
    {
        if (this._target.isProvisional) {
            this._provisionalMessages.push(message);
            return;
        }
        ...
    }
```

Then, inside `WI.Target.prototype.didCommitProvisionalTarget`, we could call `InspectorBackend.Connection.prototype.dispatchProvisionalMessages`.

&gt; Source/WebInspectorUI/UserInterface/Protocol/DirectBackendTarget.js:37
&gt; +        const isPaused = false;
&gt; +        super(parentTarget, targetId, displayName, type, InspectorBackend.backendConnection, isPaused);

Ditto (WorkerManager.js:49)

&gt; Source/WebInspectorUI/UserInterface/Protocol/MultiplexingBackendTarget.js:38
&gt; +        const isPaused = false;
&gt; +        super(parentTarget, targetId, WI.UIString(&quot;Web Page&quot;), WI.TargetType.WebPage, InspectorBackend.backendConnection, isPaused);

Ditto (WorkerManager.js:49)

&gt; Source/WebInspectorUI/UserInterface/Protocol/PageTarget.js:28
&gt; +    constructor(parentTarget, targetId, name, connection, isProvisional, isPaused)

Ditto (Target.js:28)

&gt; Source/WebInspectorUI/UserInterface/Protocol/Target.js:28
&gt; +    constructor(parentTarget, identifier, name, type, connection, isPaused)

We could make `isPaused` into an optional object argument so that this constructor can better support additional arguments.
```
    constructor(parentTarget, workerId, name, connection, {isProvisional, isPaused} = {})
```

Also, since a `WI.Target` can&apos;t become provisional after construction, we shouldn&apos;t have a `set isProvisional`.  I&apos;d much prefer including it as part of the optional object so it can only be set by the constructor and then have a `didCommitProvisionalTarget` member function that sets `this._isProvisional = false;`.

&gt; Source/WebInspectorUI/UserInterface/Protocol/Target.js:43
&gt; +        this._isProvisional = false;
&gt; +        this._isPaused = isPaused;

Since these come from `constructor` parameters, please move them to be after the previous parameter argument `connection` so they&apos;re nearby the other constructor values.

&gt; Source/WebInspectorUI/UserInterface/Protocol/Target.js:103
&gt; +            console.assert(this._parentTarget.hasCommand(&quot;Target.resume&quot;));

Nice!  While we&apos;re at it, we should also `console.assert(!isPaused || parentTarget.hasCommand(&quot;setPauseOnStart&quot;));` in the `constructor`.

&gt; Source/WebInspectorUI/UserInterface/Protocol/Target.js:105
&gt; +            .then(() =&gt; {

We typically prefer using a callback instead of a `Promise` if we don&apos;t actually need to use a `Promise`, that way we can avoid the microtask delay.  It also makes the code cleaner in that all the handling logic is inside one function instead of two.
```
    this._parentTarget.TargetAgent.resume(this._identifier, (error) =&gt; {
        if (error) {
            // Ignore errors if the target was destroyed after the command was sent.
            if (!this._isDestroyed)
                WI.reportInternalError(error);
            return;
        }

        this._isPaused = false;
    });
```

&gt; Source/WebInspectorUI/UserInterface/Protocol/Target.js:124
&gt; +    get isPaused() { return this._isPaused; }

Style: I&apos;d put this right above `get isDestroyed()`.

&gt; Source/WebInspectorUI/UserInterface/Protocol/Target.js:191
&gt; +    set isProvisional(value) { this._isProvisional = value; }

It&apos;s not possible (or at the very least it shouldn&apos;t be possible) for an existing `WI.Target` to _become_ provisional (e.g. `value === true`), so I&apos;d rather have this be more specific.

```
    didCommitProvisionalTarget()
    {
        this._isProvisional = false;

        this._connection.dispatchProvisionalMessages();
    }
```

&gt; Source/WebInspectorUI/UserInterface/Protocol/WorkerTarget.js:28
&gt; +    constructor(parentTarget, workerId, name, connection, isPaused)

Ditto (Target.js:28)

&gt; Source/WebInspectorUI/UserInterface/Views/NavigationSidebarPanel.js:708
&gt; -                return true;
&gt; +                return !!typeIdentifier;

Why was this changed?

&gt; Source/WebKit/UIProcess/InspectorTargetProxy.cpp:81
&gt; +    if (isPaused())
&gt; +        setPaused(false);

Shouldn&apos;t this be before the early-return above?

&gt; Source/WebKit/UIProcess/ProvisionalPageProxy.cpp:126
&gt; +    m_loadingPaused = false;

We should `ASSERT(m_loadingPausedForInspector);` at the beginning of this function.

&gt; Source/WebKit/UIProcess/ProvisionalPageProxy.h:93
&gt; +    void continueLoading();

This should have the word &quot;ForInspector&quot; in it&apos;s name so it&apos;s clear that it assist with Web Inspector functionality, not something special for provisional pages.
```
    void continueLoadingAfterPausingForInspector();
```

&gt; Source/WebKit/UIProcess/ProvisionalPageProxy.h:146
&gt; +    WTF::Function&lt;void()&gt; m_loadingContinuation;
&gt; +    bool m_loadingPaused { false };

Both of these should have &quot;ForInspector&quot; in the name so it&apos;s clear that this callback is used by Web Inspector to support debugging, and not some WebKit critical functionality.

```
    #include &lt;wtf/Function.h&gt;
    ...
    URL m_provisionalLoadURL;

    Function&lt;void()&gt; m_continueLoadingWhenResumedByInspectorFunction;
    bool m_loadingPausedForInspector { false };
```

&gt; Source/WebKit/UIProcess/WebPageInspectorController.h:70
&gt; +    PauseLoading interceptProvisionalPage(ProvisionalPageProxy&amp;);

Rather than &quot;intercept&quot;, how about &quot;shouldPause&quot; to match the naming in other files?  We then could return a `bool`.

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:3099
&gt; +    auto continuation = [this, navigation = makeRef(navigation), newProcess = WTFMove(newProcess), websitePolicies = WTFMove(websitePolicies)]() mutable {

I think we should also capture `protectedThis = makeRef(*this)` instead of `this`.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1595143</commentid>
    <comment_count>10</comment_count>
      <attachid>384109</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2019-12-03 13:14:24 -0800</bug_when>
    <thetext>Comment on attachment 384109
Patch

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

&gt;&gt; Source/JavaScriptCore/inspector/InspectorTarget.h:66
&gt;&gt; +    bool m_pausedOnStart { false };
&gt; 
&gt; Please change this to be just `m_paused` to match the getter/setter naming.

Done.

&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/TargetManager.js:96
&gt;&gt; +            target.TargetAgent.setPauseOnStart(true);
&gt; 
&gt; Let&apos;s move this to `WI.MultiplexingBackendTarget.prototype.initialize` (please keep the existing comments).

Done.

&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/TargetManager.js:177
&gt;&gt; +            return new WI.PageTarget(parentTarget, targetId, WI.UIString(&quot;Page&quot;), connection, targetInfo.isProvisional, isPaused);
&gt; 
&gt; Why not also pull out `isProvisional` above?
&gt; ```
&gt;     // COMPATIBILITY (iOS 13.0): `Target.TargetInfo.isProvisional` and `Target.TargetInfo.isPaused` did not exist yet.
&gt;     let {targetId, type, isProvisional, isPaused} = targetInfo;
&gt; ```

Done. Unlike others it&apos;s used only once.

&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/WorkerManager.js:50
&gt;&gt; +        let workerTarget = new WI.WorkerTarget(target, workerId, url, connection, isPaused);
&gt; 
&gt; Style: we normally omit trailing arguments if they&apos;re falsy.

Done.

&gt;&gt; Source/WebInspectorUI/UserInterface/Protocol/DirectBackendTarget.js:37
&gt;&gt; +        super(parentTarget, targetId, displayName, type, InspectorBackend.backendConnection, isPaused);
&gt; 
&gt; Ditto (WorkerManager.js:49)

Done.

&gt;&gt; Source/WebInspectorUI/UserInterface/Protocol/MultiplexingBackendTarget.js:38
&gt;&gt; +        super(parentTarget, targetId, WI.UIString(&quot;Web Page&quot;), WI.TargetType.WebPage, InspectorBackend.backendConnection, isPaused);
&gt; 
&gt; Ditto (WorkerManager.js:49)

Done.

&gt;&gt; Source/WebInspectorUI/UserInterface/Protocol/PageTarget.js:28
&gt;&gt; +    constructor(parentTarget, targetId, name, connection, isProvisional, isPaused)
&gt; 
&gt; Ditto (Target.js:28)

It can be truthy here.

&gt;&gt; Source/WebInspectorUI/UserInterface/Protocol/Target.js:28
&gt;&gt; +    constructor(parentTarget, identifier, name, type, connection, isPaused)
&gt; 
&gt; We could make `isPaused` into an optional object argument so that this constructor can better support additional arguments.
&gt; ```
&gt;     constructor(parentTarget, workerId, name, connection, {isProvisional, isPaused} = {})
&gt; ```
&gt; 
&gt; Also, since a `WI.Target` can&apos;t become provisional after construction, we shouldn&apos;t have a `set isProvisional`.  I&apos;d much prefer including it as part of the optional object so it can only be set by the constructor and then have a `didCommitProvisionalTarget` member function that sets `this._isProvisional = false;`.

Done.

&gt;&gt; Source/WebInspectorUI/UserInterface/Protocol/Target.js:43
&gt;&gt; +        this._isPaused = isPaused;
&gt; 
&gt; Since these come from `constructor` parameters, please move them to be after the previous parameter argument `connection` so they&apos;re nearby the other constructor values.

Done.

&gt;&gt; Source/WebInspectorUI/UserInterface/Protocol/Target.js:103
&gt;&gt; +            console.assert(this._parentTarget.hasCommand(&quot;Target.resume&quot;));
&gt; 
&gt; Nice!  While we&apos;re at it, we should also `console.assert(!isPaused || parentTarget.hasCommand(&quot;setPauseOnStart&quot;));` in the `constructor`.

Done.

&gt;&gt; Source/WebInspectorUI/UserInterface/Protocol/Target.js:105
&gt;&gt; +            .then(() =&gt; {
&gt; 
&gt; We typically prefer using a callback instead of a `Promise` if we don&apos;t actually need to use a `Promise`, that way we can avoid the microtask delay.  It also makes the code cleaner in that all the handling logic is inside one function instead of two.
&gt; ```
&gt;     this._parentTarget.TargetAgent.resume(this._identifier, (error) =&gt; {
&gt;         if (error) {
&gt;             // Ignore errors if the target was destroyed after the command was sent.
&gt;             if (!this._isDestroyed)
&gt;                 WI.reportInternalError(error);
&gt;             return;
&gt;         }
&gt; 
&gt;         this._isPaused = false;
&gt;     });
&gt; ```

Done.

&gt;&gt; Source/WebInspectorUI/UserInterface/Protocol/Target.js:124
&gt;&gt; +    get isPaused() { return this._isPaused; }
&gt; 
&gt; Style: I&apos;d put this right above `get isDestroyed()`.

Done.

&gt;&gt; Source/WebInspectorUI/UserInterface/Protocol/Target.js:191
&gt;&gt; +    set isProvisional(value) { this._isProvisional = value; }
&gt; 
&gt; It&apos;s not possible (or at the very least it shouldn&apos;t be possible) for an existing `WI.Target` to _become_ provisional (e.g. `value === true`), so I&apos;d rather have this be more specific.
&gt; 
&gt; ```
&gt;     didCommitProvisionalTarget()
&gt;     {
&gt;         this._isProvisional = false;
&gt; 
&gt;         this._connection.dispatchProvisionalMessages();
&gt;     }
&gt; ```

We have to transition main target (_checkAndHandlePageTargetTransition) before dispatching the messages, so the sequence is the following:
1. targets is marked as committed
2. main target updated
3. deferred messaages are dispatched

&gt;&gt; Source/WebInspectorUI/UserInterface/Protocol/WorkerTarget.js:28
&gt;&gt; +    constructor(parentTarget, workerId, name, connection, isPaused)
&gt; 
&gt; Ditto (Target.js:28)

Done.

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/NavigationSidebarPanel.js:708
&gt;&gt; +                return !!typeIdentifier;
&gt; 
&gt; Why was this changed?

To avoid resource:///org/webkit/inspector/UserInterface/Views/ContentView.js:193:132: CONSOLE ERROR Error: Can&apos;t make a ContentView for an unknown representedObject of type: CallFrame

&gt;&gt; Source/WebKit/UIProcess/InspectorTargetProxy.cpp:81
&gt;&gt; +        setPaused(false);
&gt; 
&gt; Shouldn&apos;t this be before the early-return above?

It should, nice catch!

&gt;&gt; Source/WebKit/UIProcess/ProvisionalPageProxy.cpp:126
&gt;&gt; +    m_loadingPaused = false;
&gt; 
&gt; We should `ASSERT(m_loadingPausedForInspector);` at the beginning of this function.

Done.

&gt;&gt; Source/WebKit/UIProcess/ProvisionalPageProxy.h:93
&gt;&gt; +    void continueLoading();
&gt; 
&gt; This should have the word &quot;ForInspector&quot; in it&apos;s name so it&apos;s clear that it assist with Web Inspector functionality, not something special for provisional pages.
&gt; ```
&gt;     void continueLoadingAfterPausingForInspector();
&gt; ```

Done.

&gt;&gt; Source/WebKit/UIProcess/ProvisionalPageProxy.h:146
&gt;&gt; +    bool m_loadingPaused { false };
&gt; 
&gt; Both of these should have &quot;ForInspector&quot; in the name so it&apos;s clear that this callback is used by Web Inspector to support debugging, and not some WebKit critical functionality.
&gt; 
&gt; ```
&gt;     #include &lt;wtf/Function.h&gt;
&gt;     ...
&gt;     URL m_provisionalLoadURL;
&gt; 
&gt;     Function&lt;void()&gt; m_continueLoadingWhenResumedByInspectorFunction;
&gt;     bool m_loadingPausedForInspector { false };
&gt; ```

Done.

&gt;&gt; Source/WebKit/UIProcess/WebPageInspectorController.h:70
&gt;&gt; +    PauseLoading interceptProvisionalPage(ProvisionalPageProxy&amp;);
&gt; 
&gt; Rather than &quot;intercept&quot;, how about &quot;shouldPause&quot; to match the naming in other files?  We then could return a `bool`.

should* (as well as is*) usually implies no side effects whereas inside this method we also create target proxy and notify the frontend. I&apos;d prefer a method name that would make the enum redundant but couldn&apos;t come up with a good one.

&gt;&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:3099
&gt;&gt; +    auto continuation = [this, navigation = makeRef(navigation), newProcess = WTFMove(newProcess), websitePolicies = WTFMove(websitePolicies)]() mutable {
&gt; 
&gt; I think we should also capture `protectedThis = makeRef(*this)` instead of `this`.

Done. This is not strictly necessary though as WebPageProxy owns provisional page where we pass ownership of the callback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1595144</commentid>
    <comment_count>11</comment_count>
      <attachid>384741</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2019-12-03 13:15:00 -0800</bug_when>
    <thetext>Created attachment 384741
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1595188</commentid>
    <comment_count>12</comment_count>
      <attachid>384757</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2019-12-03 14:24:49 -0800</bug_when>
    <thetext>Created attachment 384757
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1595192</commentid>
    <comment_count>13</comment_count>
      <attachid>384741</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-12-03 14:33:55 -0800</bug_when>
    <thetext>Comment on attachment 384741
Patch

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

It looks like &apos;http/tests/inspector/target/provisional-load-cancels-previous-load.html&apos; is still failing :(

&gt; Source/JavaScriptCore/inspector/agents/InspectorTargetAgent.cpp:63
&gt; +void InspectorTargetAgent::resume(ErrorString&amp; error, const String&amp; targetId)

NIT: we normally use `errorString` instead of `error`.

&gt; Source/JavaScriptCore/inspector/agents/InspectorTargetAgent.cpp:-121
&gt; -    target.disconnect();

Why was this removed?

&gt; Source/WebInspectorUI/UserInterface/Protocol/PageTarget.js:28
&gt; +    constructor(parentTarget, targetId, name, connection, state)

Please use the actual supported options `{isProvisional, isPaused} = {}` (or `options = {}` at the very least) instead.

&gt; Source/WebInspectorUI/UserInterface/Protocol/Target.js:38
&gt; +        this._isPaused = isPaused;

Since `isPaused` is effectively optional, please add a fallback.
```
    this._isPaused = !!isPaused;
```

&gt; Source/WebInspectorUI/UserInterface/Protocol/Target.js:39
&gt; +        console.assert(!isPaused || parentTarget.hasCommand(&quot;Target.setPauseOnStart&quot;));

Please put this assertion next to the one above.

&gt; Source/WebInspectorUI/UserInterface/Protocol/Target.js:40
&gt; +        this._isProvisional = isProvisional;

Ditto (38).
```
    this._isProvisional = !!isProvisional;
```

&gt; Source/WebInspectorUI/UserInterface/Protocol/Target.js:197
&gt; +

Style: unnecessary newline.

&gt; Source/WebInspectorUI/UserInterface/Protocol/Target.js:199
&gt; +

Ditto (197)

&gt; Source/WebInspectorUI/UserInterface/Protocol/WorkerTarget.js:28
&gt; +    constructor(parentTarget, workerId, name, connection, state)

Ditto (PageTarget.js:28)

&gt; Source/WebInspectorUI/UserInterface/Views/NavigationSidebarPanel.js:708
&gt; -                return true;
&gt; +                return !!typeIdentifier;

&gt;&gt; Why was this changed?
&gt; To avoid resource:///org/webkit/inspector/UserInterface/Views/ContentView.js:193:132: CONSOLE ERROR Error: Can&apos;t make a ContentView for an unknown representedObject of type: CallFrame
Do you have steps to reproduce this?  A backtrace?  This should be a separate bug.

&gt; Source/WebKit/UIProcess/ProvisionalPageProxy.h:145
&gt; +    WTF::Function&lt;void()&gt; m_continueLoadingWhenResumedByInspectorCallback;

NIT: I&apos;d add a newline before this so there&apos;s an inspector &quot;section&quot;.

&gt; Source/WebKit/UIProcess/ProvisionalPageProxy.h:146
&gt; +    WTF::Function&lt;void()&gt; m_continueLoadingWhenResumedByInspectorCallback;
&gt; +    bool m_loadingPausedForInspector { false };

I think we should move these to a map on `WebPageInspectorController` or `InspectorTargetAgent` instead, so that `ProvisionalPageProxy` doesn&apos;t have these extra values, especially since `ProvisionalPageProxy` itself doesn&apos;t actually really _need_ any of these values (they&apos;re just stored here for somewhat convenience).  I realize that there are probably very few instances of `ProvisionalPageProxy`, but we should try to avoid as much as we reasonably can such as if Web Inspector isn&apos;t open.  This way, we could also go back to `void didCreateProvisionalPage` and have the pausing/callback logic wholly contained, organized, and invoked within Web Inspector code.  We already do something very similar for network interception (e.g. local resource overrides) in `InspectorNetworkAgent`.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1595235</commentid>
    <comment_count>14</comment_count>
      <attachid>384741</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2019-12-03 15:44:11 -0800</bug_when>
    <thetext>Comment on attachment 384741
Patch

&gt; It looks like &apos;http/tests/inspector/target/provisional-load-cancels-previous-load.html&apos; is still failing :(
Patch from #c12 should fixed the test by avoiding racy navigation.



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

&gt;&gt; Source/JavaScriptCore/inspector/agents/InspectorTargetAgent.cpp:63
&gt;&gt; +void InspectorTargetAgent::resume(ErrorString&amp; error, const String&amp; targetId)
&gt; 
&gt; NIT: we normally use `errorString` instead of `error`.

Changed.

&gt;&gt; Source/JavaScriptCore/inspector/agents/InspectorTargetAgent.cpp:-121
&gt;&gt; -    target.disconnect();
&gt; 
&gt; Why was this removed?

That&apos;s because the cancellation test was crashing with the trace below. In any case if the tarter is destroyed, corresponding InspectorTarget is going to be destroyed as well and there is no value in calling disconnect. As for the front-end we still report that the target has been destroyed.



Thread 1 (Thread 0x7f6a5995fa00 (LWP 48946)):
#0  0x00007f6a69ea5f65 in WebKit::ProvisionalPageProxy::loadRequest (this=0x0, navigation=..., request=..., shouldOpenExternalURLsPolicy=WebCore::ShouldOpenExternalURLsPolicy::ShouldAllowExternalSchemes, userData=0x0, websitePolicies=...) at ../../Source/WebKit/UIProcess/ProvisionalPageProxy.cpp:177
#1  0x00007f6a69ed4d15 in WebKit::WebPageProxy::continueNavigationInNewProcess(API::Navigation&amp;, std::unique_ptr&lt;WebKit::SuspendedPageProxy, std::default_delete&lt;WebKit::SuspendedPageProxy&gt; &gt;&amp;&amp;, WTF::Ref&lt;WebKit::WebProcessProxy, WTF::DumbPtrTraits&lt;WebKit::WebProcessProxy&gt; &gt;&amp;&amp;, WebKit::ProcessSwapRequestedByClient, WTF::Optional&lt;WebKit::WebsitePoliciesData&gt;&amp;&amp;)::$_0::operator()() (this=&lt;optimized out&gt;) at ../../Source/WebKit/UIProcess/WebPageProxy.cpp:3122
#2  0x00007f6a69ea5b76 in WTF::Function&lt;void ()&gt;::operator()() const (this=0x7f6a5907dc08) at DerivedSources/ForwardingHeaders/wtf/Function.h:79
#3  WebKit::ProvisionalPageProxy::continueLoadingAfterPausingForInspector (this=0x7f6a5907dac0) at ../../Source/WebKit/UIProcess/ProvisionalPageProxy.cpp:124
#4  0x00007f6a69ea067b in Inspector::InspectorTarget::setPaused (this=0x7f6a5900c120, paused=false) at DerivedSources/ForwardingHeaders/JavaScriptCore/InspectorTarget.h:55
#5  WebKit::InspectorTargetProxy::disconnect (this=0x7f6a5900c120) at ../../Source/WebKit/UIProcess/InspectorTargetProxy.cpp:73
#6  0x00007f6a66440254 in Inspector::InspectorTargetAgent::targetDestroyed (this=&lt;optimized out&gt;, target=...) at ../../Source/JavaScriptCore/inspector/agents/InspectorTargetAgent.cpp:146
#7  0x00007f6a69ec6999 in WebKit::WebPageInspectorController::destroyInspectorTarget (this=0x7f6a590f2120, targetId=...) at ../../Source/WebKit/UIProcess/WebPageInspectorController.cpp:161
#8  0x00007f6a69ec6b31 in WebKit::WebPageInspectorController::willDestroyProvisionalPage (this=0x0, provisionalPage=...) at ../../Source/WebKit/UIProcess/WebPageInspectorController.cpp:180
#9  0x00007f6a69ea5946 in WebKit::ProvisionalPageProxy::~ProvisionalPageProxy (this=0x7f6a5907dac0) at ../../Source/WebKit/UIProcess/ProvisionalPageProxy.cpp:96
#10 0x00007f6a69ea5b09 in WebKit::ProvisionalPageProxy::~ProvisionalPageProxy (this=0x7f6a5907dac0) at ../../Source/WebKit/UIProcess/ProvisionalPageProxy.cpp:94
#11 0x00007f6a69ed4538 in std::default_delete&lt;WebKit::ProvisionalPageProxy&gt;::operator() (__ptr=&lt;optimized out&gt;, this=&lt;optimized out&gt;) at /usr/bin/../lib/gcc/x86_64-linux-gnu/7.4.0/../../../../include/c++/7.4.0/bits/unique_ptr.h:78
#12 std::unique_ptr&lt;WebKit::ProvisionalPageProxy, std::default_delete&lt;WebKit::ProvisionalPageProxy&gt; &gt;::reset (this=&lt;optimized out&gt;, __p=&lt;optimized out&gt;) at /usr/bin/../lib/gcc/x86_64-linux-gnu/7.4.0/../../../../include/c++/7.4.0/bits/unique_ptr.h:376
#13 std::unique_ptr&lt;WebKit::ProvisionalPageProxy, std::default_delete&lt;WebKit::ProvisionalPageProxy&gt; &gt;::operator=(decltype(nullptr)) (this=&lt;optimized out&gt;) at /usr/bin/../lib/gcc/x86_64-linux-gnu/7.4.0/../../../../include/c++/7.4.0/bits/unique_ptr.h:312
#14 WebKit::WebPageProxy::continueNavigationInNewProcess (this=0x7f6a3d6fc000, navigation=..., suspendedPage=..., newProcess=..., processSwapRequestedByClient=WebKit::ProcessSwapRequestedByClient::No, websitePolicies=...) at ../../Source/WebKit/UIProcess/WebPageProxy.cpp:3095
#15 0x00007f6a69ee859d in WebKit::WebPageProxy::receivedNavigationPolicyDecision(WebCore::PolicyAction, API::Navigation*, WebKit::ProcessSwapRequestedByClient, WebKit::WebFrameProxy&amp;, API::WebsitePolicies*, WTF::Ref&lt;WebKit::WebPageProxy::PolicyDecisionSender, WTF::DumbPtrTraits&lt;WebKit::WebPageProxy::PolicyDecisionSender&gt; &gt;&amp;&amp;)::$_7::operator()(WTF::Ref&lt;WebKit::WebProcessProxy, WTF::DumbPtrTraits&lt;WebKit::WebProcessProxy&gt; &gt;&amp;&amp;, WebKit::SuspendedPageProxy*, WTF::String const&amp;) (this=&lt;optimized out&gt;, processForNavigation=..., destinationSuspendedPage=&lt;optimized out&gt;, reason=...) at ../../Source/WebKit/UIProcess/WebPageProxy.cpp:3006
#16

&gt;&gt; Source/WebInspectorUI/UserInterface/Protocol/PageTarget.js:28
&gt;&gt; +    constructor(parentTarget, targetId, name, connection, state)
&gt; 
&gt; Please use the actual supported options `{isProvisional, isPaused} = {}` (or `options = {}` at the very least) instead.

Done. Not sure if that&apos;s what you meant.

&gt;&gt; Source/WebInspectorUI/UserInterface/Protocol/Target.js:38
&gt;&gt; +        this._isPaused = isPaused;
&gt; 
&gt; Since `isPaused` is effectively optional, please add a fallback.
&gt; ```
&gt;     this._isPaused = !!isPaused;
&gt; ```

Done.

&gt;&gt; Source/WebInspectorUI/UserInterface/Protocol/Target.js:39
&gt;&gt; +        console.assert(!isPaused || parentTarget.hasCommand(&quot;Target.setPauseOnStart&quot;));
&gt; 
&gt; Please put this assertion next to the one above.

Done.

&gt;&gt; Source/WebInspectorUI/UserInterface/Protocol/Target.js:40
&gt;&gt; +        this._isProvisional = isProvisional;
&gt; 
&gt; Ditto (38).
&gt; ```
&gt;     this._isProvisional = !!isProvisional;
&gt; ```

Done.

&gt;&gt; Source/WebInspectorUI/UserInterface/Protocol/Target.js:197
&gt;&gt; +
&gt; 
&gt; Style: unnecessary newline.

done

&gt;&gt; Source/WebInspectorUI/UserInterface/Protocol/Target.js:199
&gt;&gt; +
&gt; 
&gt; Ditto (197)

done

&gt;&gt; Source/WebInspectorUI/UserInterface/Protocol/WorkerTarget.js:28
&gt;&gt; +    constructor(parentTarget, workerId, name, connection, state)
&gt; 
&gt; Ditto (PageTarget.js:28)

Done.

&gt;&gt; Source/WebKit/UIProcess/ProvisionalPageProxy.h:145
&gt;&gt; +    WTF::Function&lt;void()&gt; m_continueLoadingWhenResumedByInspectorCallback;
&gt; 
&gt; NIT: I&apos;d add a newline before this so there&apos;s an inspector &quot;section&quot;.

done

&gt;&gt; Source/WebKit/UIProcess/ProvisionalPageProxy.h:146
&gt;&gt; +    bool m_loadingPausedForInspector { false };
&gt; 
&gt; I think we should move these to a map on `WebPageInspectorController` or `InspectorTargetAgent` instead, so that `ProvisionalPageProxy` doesn&apos;t have these extra values, especially since `ProvisionalPageProxy` itself doesn&apos;t actually really _need_ any of these values (they&apos;re just stored here for somewhat convenience).  I realize that there are probably very few instances of `ProvisionalPageProxy`, but we should try to avoid as much as we reasonably can such as if Web Inspector isn&apos;t open.  This way, we could also go back to `void didCreateProvisionalPage` and have the pausing/callback logic wholly contained, organized, and invoked within Web Inspector code.  We already do something very similar for network interception (e.g. local resource overrides) in `InspectorNetworkAgent`.

Done. Moved this logic to InspectorTargetProxy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1595236</commentid>
    <comment_count>15</comment_count>
      <attachid>384765</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2019-12-03 15:44:28 -0800</bug_when>
    <thetext>Created attachment 384765
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1595253</commentid>
    <comment_count>16</comment_count>
      <attachid>384765</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-12-03 16:21:07 -0800</bug_when>
    <thetext>Comment on attachment 384765
Patch

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

I think we&apos;re pretty much done!  AWESOME work! =D

Please wait until you see a green mac-wk2 EWS after responding to the following:

&gt; Source/WebInspectorUI/ChangeLog:19
&gt; +        * UserInterface/Controllers/CSSManager.js:
&gt; +        (WI.CSSManager.prototype._resourceContentDidChange.applyStyleSheetChanges.styleSheetFound):
&gt; +        (WI.CSSManager.prototype._resourceContentDidChange.applyStyleSheetChanges):
&gt; +        (WI.CSSManager.prototype._resourceContentDidChange):
&gt; +        (WI.CSSManager.prototype._updateResourceContent.fetchedStyleSheetContent):

These changes are no longer in this patch.  Please regenerate the ChangeLog.

&gt; Source/JavaScriptCore/inspector/InspectorTarget.h:51
&gt; +    void setPaused(bool paused)

Rather than &quot;overload&quot; this with double functionality, I think we should have separate `pause` and `resume` functions.
```
    void pause()
    {
        ASSERT(!m_isPaused);
        m_isPaused = true;
    }

    void resume()
    {
        ASSERT(m_isPaused);
        m_isPaused = false;

        if (m_resumeCallback) {
            m_resumeCallback();
            m_resumeCallback = nullptr;
        }
    }
```

Ideally we&apos;d also be able to `ASSERT` that we don&apos;t ever `pause()` more than once, but it&apos;s not strictly necessary.

At this point, I think we should also create a &apos;Source/JavaScriptCore/inspector/InspectorTarget.cpp&apos;.

&gt; Source/WebCore/inspector/InspectorFrontendHost.cpp:373
&gt; +    fprintf(stderr, &quot;sendMessageToBackend %s\n&quot;, message.left(200).ascii().data());

Oops.  Please remove.

&gt; Source/WebInspectorUI/UserInterface/Views/NavigationSidebarPanel.js:708
&gt; -                return true;
&gt; +                return !!typeIdentifier;

Per my previous comment, please put this into a separate change.  It deserves its own explanation.

&gt; Source/WebKit/WebProcess/WebPage/WebInspectorFrontendAPIDispatcher.cpp:95
&gt; +    fprintf(stderr, &quot;evaluateOrQueueExpression %s\n&quot;, expression.left(200).ascii().data());

Oops.  Please remove.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1595274</commentid>
    <comment_count>17</comment_count>
      <attachid>384765</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2019-12-03 17:14:11 -0800</bug_when>
    <thetext>Comment on attachment 384765
Patch

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

&gt;&gt; Source/WebInspectorUI/ChangeLog:19
&gt;&gt; +        (WI.CSSManager.prototype._updateResourceContent.fetchedStyleSheetContent):
&gt; 
&gt; These changes are no longer in this patch.  Please regenerate the ChangeLog.

Done.

&gt;&gt; Source/JavaScriptCore/inspector/InspectorTarget.h:51
&gt;&gt; +    void setPaused(bool paused)
&gt; 
&gt; Rather than &quot;overload&quot; this with double functionality, I think we should have separate `pause` and `resume` functions.
&gt; ```
&gt;     void pause()
&gt;     {
&gt;         ASSERT(!m_isPaused);
&gt;         m_isPaused = true;
&gt;     }
&gt; 
&gt;     void resume()
&gt;     {
&gt;         ASSERT(m_isPaused);
&gt;         m_isPaused = false;
&gt; 
&gt;         if (m_resumeCallback) {
&gt;             m_resumeCallback();
&gt;             m_resumeCallback = nullptr;
&gt;         }
&gt;     }
&gt; ```
&gt; 
&gt; Ideally we&apos;d also be able to `ASSERT` that we don&apos;t ever `pause()` more than once, but it&apos;s not strictly necessary.
&gt; 
&gt; At this point, I think we should also create a &apos;Source/JavaScriptCore/inspector/InspectorTarget.cpp&apos;.

Done. I was trying to avoid the pain of adding a new file but I agree that it&apos;s too much logic for the header :-)

&gt;&gt; Source/WebCore/inspector/InspectorFrontendHost.cpp:373
&gt;&gt; +    fprintf(stderr, &quot;sendMessageToBackend %s\n&quot;, message.left(200).ascii().data());
&gt; 
&gt; Oops.  Please remove.

Done.

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/NavigationSidebarPanel.js:708
&gt;&gt; +                return !!typeIdentifier;
&gt; 
&gt; Per my previous comment, please put this into a separate change.  It deserves its own explanation.

Sorry missed that comment last time. PTAL https://bugs.webkit.org/show_bug.cgi?id=204823

&gt;&gt; Source/WebKit/WebProcess/WebPage/WebInspectorFrontendAPIDispatcher.cpp:95
&gt;&gt; +    fprintf(stderr, &quot;evaluateOrQueueExpression %s\n&quot;, expression.left(200).ascii().data());
&gt; 
&gt; Oops.  Please remove.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1595275</commentid>
    <comment_count>18</comment_count>
      <attachid>384771</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2019-12-03 17:14:25 -0800</bug_when>
    <thetext>Created attachment 384771
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1595276</commentid>
    <comment_count>19</comment_count>
      <attachid>384771</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-12-03 17:22:44 -0800</bug_when>
    <thetext>Comment on attachment 384771
Patch

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

r=me, nice work!  Thanks for iterating :)

Please wait for EWS to be green on mac-wk2 before landing.

&gt; Source/JavaScriptCore/inspector/InspectorTarget.cpp:46
&gt; +    m_isPaused = false;
&gt; +    if (m_resumeCallback) {

NIT: I&apos;d add a newline

&gt; Source/WebInspectorUI/UserInterface/Protocol/Connection.js:60
&gt; +        this._provisionalMessages.push(message);

We should also assert `console.assert(this.target &amp;&amp; this.target.isProvisional);`.

&gt; Source/WebInspectorUI/UserInterface/Protocol/Connection.js:66
&gt; +        console.assert(this.target);
&gt; +        console.assert(!this.target.isProvisional);

NIT: you could combine these assertions.

&gt; Source/WebInspectorUI/UserInterface/Protocol/Connection.js:69
&gt; +        this._provisionalMessages = null;

We should set this back to `[]` to match the `constructor`.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1595387</commentid>
    <comment_count>20</comment_count>
      <attachid>384771</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2019-12-03 23:34:35 -0800</bug_when>
    <thetext>Comment on attachment 384771
Patch

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

&gt;&gt; Source/JavaScriptCore/inspector/InspectorTarget.cpp:46
&gt;&gt; +    if (m_resumeCallback) {
&gt; 
&gt; NIT: I&apos;d add a newline

Done.

&gt;&gt; Source/WebInspectorUI/UserInterface/Protocol/Connection.js:60
&gt;&gt; +        this._provisionalMessages.push(message);
&gt; 
&gt; We should also assert `console.assert(this.target &amp;&amp; this.target.isProvisional);`.

Done.

&gt;&gt; Source/WebInspectorUI/UserInterface/Protocol/Connection.js:69
&gt;&gt; +        this._provisionalMessages = null;
&gt; 
&gt; We should set this back to `[]` to match the `constructor`.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1595388</commentid>
    <comment_count>21</comment_count>
      <attachid>384791</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2019-12-03 23:41:07 -0800</bug_when>
    <thetext>Created attachment 384791
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1595409</commentid>
    <comment_count>22</comment_count>
      <attachid>384791</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-12-04 00:24:20 -0800</bug_when>
    <thetext>Comment on attachment 384791
Patch for landing

Clearing flags on attachment: 384791

Committed r253097: &lt;https://trac.webkit.org/changeset/253097&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1595410</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-12-04 00:24:22 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1595411</commentid>
    <comment_count>24</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-12-04 00:25:20 -0800</bug_when>
    <thetext>&lt;rdar://problem/57617094&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1595871</commentid>
    <comment_count>25</comment_count>
    <who name="Truitt Savell">tsavell</who>
    <bug_when>2019-12-05 10:27:14 -0800</bug_when>
    <thetext>The new test http/tests/inspector/target/pause-on-inline-debugger-statement.html

added in https://trac.webkit.org/changeset/253097/webkit

is crashing on Mac debug 

https://results.webkit.org/?suite=layout-tests&amp;test=http%2Ftests%2Finspector%2Ftarget%2Fpause-on-inline-debugger-statement.html

crash:
https://build.webkit.org/results/Apple%20Mojave%20Debug%20WK2%20(Tests)/r253149%20(6209)/http/tests/inspector/target/pause-on-inline-debugger-statement-crash-log.txt

Can this be looked at today?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1595878</commentid>
    <comment_count>26</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2019-12-05 10:41:31 -0800</bug_when>
    <thetext>I&apos;ll have a look.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1595884</commentid>
    <comment_count>27</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2019-12-05 10:52:56 -0800</bug_when>
    <thetext>Filed https://webkit.org/b/204901 to track this, the assertion is failing on all platforms.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383481</attachid>
            <date>2019-11-13 12:40:30 -0800</date>
            <delta_ts>2019-11-13 13:43:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204170-20191113124029.patch</filename>
            <type>text/plain</type>
            <size>54112</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyMzY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
MWVjZjQ0MmU3YjA0ZGU1ZWQ3MWExMzBlNDk2NDAzZDhhZWJhYzkyLi4wNDZjOTdiZWUyMjY0Yzdj
OGRjNzI3Nzk0ODlhNGIzM2JhNjMyM2MzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNSBAQAorMjAxOS0xMS0xMyAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBhbGxvdyBpbnNwZWN0b3IgdG8gcGF1c2Ug
cHJvdmlzaW9uYWwgcGFnZSBsb2FkIGFuZCByZXN0b3JlIGl0cyBzdGF0ZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0MTcwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgYW4gb3B0aW9uIHRvIFRh
cmdldCBkb21haW4gdG8gcGF1c2UgYWxsIG5ldyB0YXJnZXRzIG9uIHN0YXJ0IHdhaXRpbmcgZm9y
CisgICAgICAgIGV4cGxpY2l0ICdyZXN1bWUnIGNvbW1hbmQgZnJvbSB0aGUgaW5zcGVjdG9yIGZy
b250LWVuZC4gVGhpcyBhbGxvd3MgdG8gY29uZmlndXJlCisgICAgICAgIGluc3BlY3RvciBiYWNr
ZW5kIChpbmNsdWRpbmcgdXNlciBhZ2VudCBvdmVycmlkZXMsIGJyZWFrcG9pbnRzIGFuZCBpbnN0
cnVtZW50YXRpb24pCisgICAgICAgIGJlZm9yZSBuYXZpZ2F0aW9uIHN0YXJ0cy4KKworICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JUYXJnZXQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvclRhcmdldEFnZW50LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVj
dG9yVGFyZ2V0QWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAg
KEluc3BlY3Rvcjo6SW5zcGVjdG9yVGFyZ2V0QWdlbnQ6OnNldFBhdXNlT25TdGFydCk6CisgICAg
ICAgIChJbnNwZWN0b3I6Okluc3BlY3RvclRhcmdldEFnZW50OjpyZXN1bWUpOgorICAgICAgICAo
SW5zcGVjdG9yOjpidWlsZFRhcmdldEluZm9PYmplY3QpOgorICAgICAgICAoSW5zcGVjdG9yOjpJ
bnNwZWN0b3JUYXJnZXRBZ2VudDo6dGFyZ2V0Q3JlYXRlZCk6CisgICAgICAgICogaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JUYXJnZXRBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9wcm90
b2NvbC9UYXJnZXQuanNvbjoKKwogMjAxOS0xMS0xMSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lA
YXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGZpeCBpbmNvcnJlY3QgYXNzZXJ0aW9u
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCAxNzczZjQ5YzRkMTlmNDA4NzdlYzFjMmRmZWFk
YWZjY2NiYWZkMjcwLi5mOGRhYjFiYjQ2ODExYWE1NzgwNDFkNjRhMzM0Y2YzNDIwOWE5OTNlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MyBAQAorMjAxOS0xMS0xMyAgWXVy
eSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBhbGxvdyBpbnNwZWN0b3IgdG8gcGF1c2UgcHJvdmlzaW9uYWwgcGFnZSBsb2FkIGFuZCBy
ZXN0b3JlIGl0cyBzdGF0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjA0MTcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWxsIG5ldyB0YXJnZXRzIGFyZSBub3cgYXV0b21hdGljYWxseSBwYXVzZWQgb24g
c3RhcnQuIEZvciBzdWNoIHByb3Zpc2lvbmFsIHRhcmdldHMgdGFyZ2V0CisgICAgICAgIG1hbmFn
ZXIgd2lsbCBydW4gcmVndWxhciBpbml0aWxpemF0aW9uIGNvZGUgKGVuYWJsZSBhZ2VudHMgZXRj
LikgYW5kIHRoZW4gcmVzdW1lIGxvYWRpbmcgb2YKKyAgICAgICAgdGhlIHRhcmdldC4gUmVzcG9u
c2VzIGFuZCBldmVudHMgZnJvbSB0aGUgdGFyZ2V0IGFyZSBkZWZmZXJyZWQgdW50aWwgdGhlIHRh
cmdldCBpcyBjb21taXR0ZWQKKyAgICAgICAgYW5kIGJlY29tZXMgY3VycmVudCBtYWluIHRhcmdl
dC4gV2hlbiB0aGUgdGFyZ2V0IG1hbmFnZXIgcmVjZWl2ZXMgZXZlbnQgdGhhdCB0aGUgcHJvdmlz
aW9uYWwKKyAgICAgICAgdGFyZ2V0IGhhcyBiZWVuIGNvbW1pdHRlZCBhbGwgYWNjdW11bGF0ZWQg
cHJvdG9jb2wgbWVzc2FnZXMgYXJlIHJlcGxheWVkIGFuZCBnb2luZyBmb3J3YXJkIGFsbAorICAg
ICAgICBuZXcgbWlzc2FnZXMgd2lsbCBiZSBkaXNwYXRjaGVkIGFzIHVzdWFsLgorCisgICAgICAg
ICogVXNlckludGVyZmFjZS9Db250cm9sbGVycy9DU1NNYW5hZ2VyLmpzOgorICAgICAgICAoV0ku
Q1NTTWFuYWdlci5wcm90b3R5cGUuX3Jlc291cmNlQ29udGVudERpZENoYW5nZS5hcHBseVN0eWxl
U2hlZXRDaGFuZ2VzLnN0eWxlU2hlZXRGb3VuZCk6CisgICAgICAgIChXSS5DU1NNYW5hZ2VyLnBy
b3RvdHlwZS5fcmVzb3VyY2VDb250ZW50RGlkQ2hhbmdlLmFwcGx5U3R5bGVTaGVldENoYW5nZXMp
OgorICAgICAgICAoV0kuQ1NTTWFuYWdlci5wcm90b3R5cGUuX3Jlc291cmNlQ29udGVudERpZENo
YW5nZSk6CisgICAgICAgIChXSS5DU1NNYW5hZ2VyLnByb3RvdHlwZS5fdXBkYXRlUmVzb3VyY2VD
b250ZW50LmZldGNoZWRTdHlsZVNoZWV0Q29udGVudCk6CisgICAgICAgICogVXNlckludGVyZmFj
ZS9Db250cm9sbGVycy9UYXJnZXRNYW5hZ2VyLmpzOgorICAgICAgICAoV0kuVGFyZ2V0TWFuYWdl
cik6CisgICAgICAgIChXSS5UYXJnZXRNYW5hZ2VyLnByb3RvdHlwZS5jcmVhdGVNdWx0aXBsZXhp
bmdCYWNrZW5kVGFyZ2V0KToKKyAgICAgICAgKFdJLlRhcmdldE1hbmFnZXIucHJvdG90eXBlLnRh
cmdldENyZWF0ZWQpOgorICAgICAgICAoV0kuVGFyZ2V0TWFuYWdlci5wcm90b3R5cGUuZGlkQ29t
bWl0UHJvdmlzaW9uYWxUYXJnZXQpOgorICAgICAgICAoV0kuVGFyZ2V0TWFuYWdlci5wcm90b3R5
cGUuZGlzcGF0Y2hNZXNzYWdlRnJvbVRhcmdldCk6CisgICAgICAgIChXSS5UYXJnZXRNYW5hZ2Vy
LnByb3RvdHlwZS5fY29ubmVjdFRvVGFyZ2V0KToKKyAgICAgICAgKFdJLlRhcmdldE1hbmFnZXIu
cHJvdG90eXBlLl9kZXN0cm95VGFyZ2V0KToKKyAgICAgICAgKFdJLlRhcmdldE1hbmFnZXIucHJv
dG90eXBlLl9jcmVhdGVUYXJnZXQpOgorICAgICAgICAoV0kuVGFyZ2V0TWFuYWdlci5wcm90b3R5
cGUuX2NoZWNrQW5kSGFuZGxlUGFnZVRhcmdldFRyYW5zaXRpb24pOgorICAgICAgICAoV0kuVGFy
Z2V0TWFuYWdlci5wcm90b3R5cGUuX2NoZWNrQW5kSGFuZGxlUGFnZVRhcmdldFRlcm1pbmF0aW9u
KToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01vZGVscy9Tb3VyY2VDb2RlLmpzOgorICAgICAg
ICAoV0kuU291cmNlQ29kZS5wcm90b3R5cGUuZ2V0IGN1cnJlbnRSZXZpc2lvbik6CisgICAgICAg
IChXSS5Tb3VyY2VDb2RlLnByb3RvdHlwZS5nZXQgZWRpdGFibGVSZXZpc2lvbik6CisgICAgICAg
IChXSS5Tb3VyY2VDb2RlLnByb3RvdHlwZS5nZXQgY29udGVudCk6CisgICAgICAgIChXSS5Tb3Vy
Y2VDb2RlLnByb3RvdHlwZS5yZXZpc2lvbkNvbnRlbnREaWRDaGFuZ2UpOgorICAgICAgICAqIFVz
ZXJJbnRlcmZhY2UvUHJvdG9jb2wvQ29ubmVjdGlvbi5qczoKKyAgICAgICAgKEluc3BlY3RvckJh
Y2tlbmQuQ29ubmVjdGlvbik6CisgICAgICAgIChJbnNwZWN0b3JCYWNrZW5kLkNvbm5lY3Rpb24u
cHJvdG90eXBlLmFkZFByb3Zpc2lvbmFsTWVzc2FnZSk6CisgICAgICAgIChJbnNwZWN0b3JCYWNr
ZW5kLkNvbm5lY3Rpb24ucHJvdG90eXBlLmRpc3BhdGNoUHJvdmlzaW9uYWxNZXNzYWdlcyk6Cisg
ICAgICAgICogVXNlckludGVyZmFjZS9Qcm90b2NvbC9QYWdlVGFyZ2V0LmpzOgorICAgICAgICAo
V0kuUGFnZVRhcmdldCk6CisgICAgICAgICogVXNlckludGVyZmFjZS9Qcm90b2NvbC9UYXJnZXQu
anM6CisgICAgICAgIChXSS5UYXJnZXQpOgorICAgICAgICAoV0kuVGFyZ2V0LnByb3RvdHlwZS5n
ZXQgaXNQcm92aXNpb25hbCk6CisgICAgICAgIChXSS5UYXJnZXQucHJvdG90eXBlLnNldCBpc1By
b3Zpc2lvbmFsKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0ZvbnRSZXNvdXJjZUNv
bnRlbnRWaWV3LmpzOgorICAgICAgICAoV0kuRm9udFJlc291cmNlQ29udGVudFZpZXcucHJvdG90
eXBlLmRyb3Bab25lSGFuZGxlRHJvcCk6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9J
bWFnZVJlc291cmNlQ29udGVudFZpZXcuanM6CisgICAgICAgIChXSS5JbWFnZVJlc291cmNlQ29u
dGVudFZpZXcucHJvdG90eXBlLmRyb3Bab25lSGFuZGxlRHJvcCk6CisgICAgICAgICogVXNlcklu
dGVyZmFjZS9WaWV3cy9OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLmpzOgorICAgICAgICAoV0kuTmF2
aWdhdGlvblNpZGViYXJQYW5lbC5wcm90b3R5cGUuX2NoZWNrRWxlbWVudHNGb3JQZW5kaW5nVmll
d1N0YXRlQ29va2llLnRyZWVFbGVtZW50TWF0Y2hlc0Nvb2tpZSk6CisgICAgICAgIChXSS5OYXZp
Z2F0aW9uU2lkZWJhclBhbmVsLnByb3RvdHlwZS5fY2hlY2tFbGVtZW50c0ZvclBlbmRpbmdWaWV3
U3RhdGVDb29raWUpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VDb250
ZW50Vmlldy5qczoKKyAgICAgICAgKFdJLlJlc291cmNlQ29udGVudFZpZXcucHJvdG90eXBlLl9j
b250ZW50QXZhaWxhYmxlKToKKyAgICAgICAgKFdJLlJlc291cmNlQ29udGVudFZpZXcucHJvdG90
eXBlLl9oYW5kbGVJbXBvcnRMb2NhbFJlc291cmNlT3ZlcnJpZGUpOgorICAgICAgICAqIFVzZXJJ
bnRlcmZhY2UvVmlld3MvU2NyaXB0Q29udGVudFZpZXcuanM6CisgICAgICAgIChXSS5TY3JpcHRD
b250ZW50Vmlldy5wcm90b3R5cGUuX2hhbmRsZVRleHRFZGl0b3JDb250ZW50RGlkQ2hhbmdlKToK
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1RleHRSZXNvdXJjZUNvbnRlbnRWaWV3Lmpz
OgorICAgICAgICAoV0kuVGV4dFJlc291cmNlQ29udGVudFZpZXcucHJvdG90eXBlLl90ZXh0RWRp
dG9yQ29udGVudERpZENoYW5nZSk6CisKIDIwMTktMTEtMDcgIERldmluIFJvdXNzbyAgPGRyb3Vz
c29AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFJFR1JFU1NJT04ocjI1MTk1
OCk6IGNvbnNvbGUgcHJvbXB0IGlzIGF1dG9tYXRpY2FsbHkgZm9jdXNlZCB3aGVuIHBhZ2UgaXMg
cmVsb2FkZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKaW5kZXggMDQ0YTUwMjJjM2ViZGE0ZDQ2NmY2MjM2YzQ3ZWI1NGIzZTZm
ZmE5MS4uYTVlZTc2NWRkMzJiZDNmMWIwMTc0YjkyMDdlMzQzYzk2NWFmOTRjMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwzNSBAQAorMjAxOS0xMS0xMyAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlzQGNo
cm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBhbGxvdyBpbnNwZWN0b3IgdG8g
cGF1c2UgcHJvdmlzaW9uYWwgcGFnZSBsb2FkIGFuZCByZXN0b3JlIGl0cyBzdGF0ZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0MTcwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUHJvdmlzaW9uYWwgcGFn
ZSBsb2FkaW5nIGNhbiBiZSBkZWZmZXJlZCBpZiBpbnNwZWN0b3IgZnJvbnQtZW5kIGlzIGNvbm5l
Y3RlZC4gVGhpcworICAgICAgICBhbGxvd3MgdG8gY29uZmlndXJlIGluc3BlY3RvciBiYWNrZW5k
IGluIHRoZSBwcm92aXNpb25hbCBwYWdlIGJlZm9yZSBsb2FkIHJlcXVlc3QKKyAgICAgICAgaXMg
c2VudC4gSWYgaW5zcGVjdG9yIGZyb250LWVuZCBpcyBub3QgY29ubmVjdGVkIHByb3Zpc2lvbmFs
IGxvYWRpbmcgd2lsbCBjb25pdGludWUKKyAgICAgICAgZXhhY3RseSBhcyBiZWZvcmUuCisKKyAg
ICAgICAgVGVzdHM6IGh0dHAvdGVzdHMvaW5zcGVjdG9yL3RhcmdldC9wYXVzZS1vbi1pbmxpbmUt
ZGVidWdnZXItc3RhdGVtZW50Lmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvaW5zcGVj
dG9yL3RhcmdldC9wcm92aXNpb25hbC1sb2FkLWNhbmNlbHMtcHJldmlvdXMtbG9hZC5odG1sCisK
KyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yVGFyZ2V0UHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpJbnNwZWN0b3JUYXJnZXRQcm94eTo6ZGlzY29ubmVjdCk6CisgICAgICAgIChXZWJL
aXQ6Okluc3BlY3RvclRhcmdldFByb3h5OjpyZXN1bWVUYXJnZXQpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9JbnNwZWN0b3JUYXJnZXRQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Qcm92aXNp
b25hbFBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlByb3Zpc2lvbmFsUGFnZVByb3h5
OjpQcm92aXNpb25hbFBhZ2VQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlByb3Zpc2lvbmFsUGFn
ZVByb3h5OjpyZXN1bWVMb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6UHJvdmlzaW9uYWxQYWdl
UHJveHk6OnJ1bldoZW5Mb2FkaW5nUmVzdW1lZCk6CisgICAgICAgICogVUlQcm9jZXNzL1Byb3Zp
c2lvbmFsUGFnZVByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OlByb3Zpc2lvbmFsUGFnZVByb3h5
OjpzaG91bGRQYXVzZUxvYWRpbmcgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdl
SW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VJbnNwZWN0
b3JDb250cm9sbGVyOjpkaWRDcmVhdGVQcm92aXNpb25hbFBhZ2UpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNvbnRpbnVl
TmF2aWdhdGlvbkluTmV3UHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
c3BlZWNoU3ludGhlc2lzUmVzdW1lKToKKwogMjAxOS0xMS0xMiAgQWxleCBDaHJpc3RlbnNlbiAg
PGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmVydCBwYXJ0IG9mIHIyNTE2
NzYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
VGFyZ2V0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRhcmdl
dC5oCmluZGV4IGE5ZjA0YjhhMGM5YWZhZWVhNGZlOGMwYTRkMDdkODIzMGE5YzM1NjAuLmM5Mjhh
ZjIzMGEzMzk2ODgxMWMyMmU0MjgwZTYwZDk4OWQ1YzgwMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGFyZ2V0LmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUYXJnZXQuaApAQCAtNDcsMTEgKzQ3LDIz
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEluc3BlY3RvclRhcmdldFR5cGUgdHlwZSgpIGNvbnN0
ID0gMDsKIAogICAgIHZpcnR1YWwgYm9vbCBpc1Byb3Zpc2lvbmFsKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KKyAgICBib29sIGlzUGF1c2VkT25TdGFydCgpIGNvbnN0IHsgcmV0dXJuIG1fcGF1
c2VkT25TdGFydDsgfQorICAgIHZvaWQgc2V0UGF1c2VkT25TdGFydChib29sIHBhdXNlZCkKKyAg
ICB7CisgICAgICAgIG1fcGF1c2VkT25TdGFydCA9IHBhdXNlZDsKKyAgICAgICAgaWYgKCFwYXVz
ZWQpCisgICAgICAgICAgICByZXN1bWVUYXJnZXQoKTsKKyAgICB9CiAKICAgICAvLyBDb25uZWN0
aW9uIG1hbmFnZW1lbnQuCiAgICAgdmlydHVhbCB2b2lkIGNvbm5lY3QoRnJvbnRlbmRDaGFubmVs
OjpDb25uZWN0aW9uVHlwZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0KCkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBzZW5kTWVzc2FnZVRvVGFyZ2V0QmFja2VuZChjb25zdCBTdHJp
bmcmKSA9IDA7CisKK3ByaXZhdGU6CisgICAgdmlydHVhbCB2b2lkIHJlc3VtZVRhcmdldCgpIHsg
fQorCisgICAgYm9vbCBtX3BhdXNlZE9uU3RhcnQgeyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgSW5zcGVjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JUYXJnZXRBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUYXJnZXRBZ2VudC5jcHAKaW5kZXggMTE3NzA5
MGZjMTg2MjNlZjUwMWM5YWQ0YzMzODliYzJkYTkxMDcxZS4uMWI5MDBkOTYyNGI0ZjQxN2QxZjk2
MWU5MWQyYWM3ZTNkYmYzYWMxYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGFyZ2V0QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRhcmdldEFnZW50LmNwcApAQCAt
NTIsNiArNTIsMjYgQEAgdm9pZCBJbnNwZWN0b3JUYXJnZXRBZ2VudDo6d2lsbERlc3Ryb3lGcm9u
dGVuZEFuZEJhY2tlbmQoRGlzY29ubmVjdFJlYXNvbikKICAgICBkaXNjb25uZWN0RnJvbVRhcmdl
dHMoKTsKIAogICAgIG1faXNDb25uZWN0ZWQgPSBmYWxzZTsKKyAgICBtX3Nob3VsZFBhdXNlT25T
dGFydCA9IGZhbHNlOworfQorCit2b2lkIEluc3BlY3RvclRhcmdldEFnZW50OjpzZXRQYXVzZU9u
U3RhcnQoRXJyb3JTdHJpbmcmLCBib29sIHBhdXNlT25TdGFydCkKK3sKKyAgICBtX3Nob3VsZFBh
dXNlT25TdGFydCA9IHBhdXNlT25TdGFydDsKK30KKwordm9pZCBJbnNwZWN0b3JUYXJnZXRBZ2Vu
dDo6cmVzdW1lKEVycm9yU3RyaW5nJiBlcnJvciwgY29uc3QgU3RyaW5nJiB0YXJnZXRJZCkKK3sK
KyAgICBJbnNwZWN0b3JUYXJnZXQqIHRhcmdldCA9IG1fdGFyZ2V0cy5nZXQodGFyZ2V0SWQpOwor
ICAgIGlmICghdGFyZ2V0KSB7CisgICAgICAgIGVycm9yID0gIk1pc3NpbmcgdGFyZ2V0IGZvciBn
aXZlbiB0YXJnZXRJZCJfczsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoIXRhcmdl
dC0+aXNQYXVzZWRPblN0YXJ0KCkpIHsKKyAgICAgICAgZXJyb3IgPSAiVGFyZ2V0IGlzIG5vdCBw
YXVzZWQgb24gc3RhcnQiX3M7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgdGFyZ2V0LT5z
ZXRQYXVzZWRPblN0YXJ0KGZhbHNlKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JUYXJnZXRBZ2VudDo6
c2VuZE1lc3NhZ2VUb1RhcmdldChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmlu
ZyYgdGFyZ2V0SWQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKQEAgLTk1LDYgKzExNSw4IEBAIHN0
YXRpYyBSZWY8UHJvdG9jb2w6OlRhcmdldDo6VGFyZ2V0SW5mbz4gYnVpbGRUYXJnZXRJbmZvT2Jq
ZWN0KGNvbnN0IEluc3BlY3RvclRhCiAgICAgICAgIC5yZWxlYXNlKCk7CiAgICAgaWYgKHRhcmdl
dC5pc1Byb3Zpc2lvbmFsKCkpCiAgICAgICAgIHJlc3VsdC0+c2V0SXNQcm92aXNpb25hbCh0cnVl
KTsKKyAgICBpZiAodGFyZ2V0LmlzUGF1c2VkT25TdGFydCgpKQorICAgICAgICByZXN1bHQtPnNl
dElzUGF1c2VkT25TdGFydCh0cnVlKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0xMDYs
NiArMTI4LDcgQEAgdm9pZCBJbnNwZWN0b3JUYXJnZXRBZ2VudDo6dGFyZ2V0Q3JlYXRlZChJbnNw
ZWN0b3JUYXJnZXQmIHRhcmdldCkKICAgICBpZiAoIW1faXNDb25uZWN0ZWQpCiAgICAgICAgIHJl
dHVybjsKIAorICAgIHRhcmdldC5zZXRQYXVzZWRPblN0YXJ0KG1fc2hvdWxkUGF1c2VPblN0YXJ0
KTsKICAgICB0YXJnZXQuY29ubmVjdChjb25uZWN0aW9uVHlwZSgpKTsKIAogICAgIG1fZnJvbnRl
bmREaXNwYXRjaGVyLT50YXJnZXRDcmVhdGVkKGJ1aWxkVGFyZ2V0SW5mb09iamVjdCh0YXJnZXQp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvclRhcmdldEFnZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JUYXJnZXRBZ2VudC5oCmluZGV4IDM4Y2IzMTg5ODZiMzFjNGRlZDE5YmE5
YmVhZTc4NTVkMmI1NGMyM2EuLjFlYjdhYmIyZmEyMWQ3YThlYzA4MzMxNjBmNTNlNWM1MjNlYzQz
MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvclRhcmdldEFnZW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yVGFyZ2V0QWdlbnQuaApAQCAtNDksNiArNDksOCBAQCBwdWJsaWM6
CiAgICAgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChEaXNjb25uZWN0UmVhc29u
KSBmaW5hbDsKIAogICAgIC8vIFRhcmdldEJhY2tlbmREaXNwYXRjaGVySGFuZGxlcgorICAgIHZv
aWQgc2V0UGF1c2VPblN0YXJ0KEVycm9yU3RyaW5nJiwgYm9vbCBwYXVzZU9uU3RhcnQpIG92ZXJy
aWRlOworICAgIHZvaWQgcmVzdW1lKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiB0YXJnZXRJ
ZCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZW5kTWVzc2FnZVRvVGFyZ2V0KEVycm9yU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJiB0YXJnZXRJZCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKSBmaW5hbDsKIAog
ICAgIC8vIFRhcmdldCBsaWZlY3ljbGUuCkBAIC03MCw2ICs3Miw3IEBAIHByaXZhdGU6CiAgICAg
UmVmPFRhcmdldEJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwogICAgIEhh
c2hNYXA8U3RyaW5nLCBJbnNwZWN0b3JUYXJnZXQqPiBtX3RhcmdldHM7CiAgICAgYm9vbCBtX2lz
Q29ubmVjdGVkIHsgZmFsc2UgfTsKKyAgICBib29sIG1fc2hvdWxkUGF1c2VPblN0YXJ0IHsgZmFs
c2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9UYXJnZXQuanNvbiBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvVGFyZ2V0Lmpzb24KaW5kZXggMjQwY2Q0
MmU2N2UzMjUwZTQzNGMwYmY2ZjlkMTYxNjg1MDVhOGMyMi4uYzU2MTA3NzZmMGQ3ODk3MDUyNTU3
OGNmMGNjZWQzZWYwOGZmYmMzMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9wcm90b2NvbC9UYXJnZXQuanNvbgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3Byb3RvY29sL1RhcmdldC5qc29uCkBAIC0xMCwxMSArMTAsMjYgQEAKICAgICAg
ICAgICAgICJwcm9wZXJ0aWVzIjogWwogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAidGFyZ2V0
SWQiLCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAiVW5pcXVlIGlkZW50aWZpZXIg
Zm9yIHRoZSB0YXJnZXQuIiB9LAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAidHlwZSIsICJ0
eXBlIjogInN0cmluZyIsICJlbnVtIjogWyJwYWdlIiwgInNlcnZpY2Utd29ya2VyIiwgIndvcmtl
ciJdIH0sCi0gICAgICAgICAgICAgICAgeyAibmFtZSI6ICJpc1Byb3Zpc2lvbmFsIiwgInR5cGUi
OiAiYm9vbGVhbiIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJUcnVlIHZhbHVl
IGluZGljYXRlcyB0aGF0IHRoaXMgaXMgYSBwcm92aXNpb25hbCBwYWdlIHRhcmdldCBpLmUuIFN1
Y2ggdGFyZ2V0IG1heSBiZSBjcmVhdGVkIHdoZW4gY3VycmVudCBwYWdlIHN0YXJ0cyBjcm9zcy1v
cmlnaW4gbmF2aWdhdGlvbi4gRXZlbnR1YWxseSBlYWNoIHByb3Zpc2lvbmFsIHRhcmdldCBpcyBl
aXRoZXIgY29tbWl0dGVkIGFuZCBzd2FwcyB3aXRoIHRoZSBjdXJyZW50IHRhcmdldCBvciBnZXRz
IGRlc3Ryb3llZCwgZS5nLiBpbiBjYXNlIG9mIGxvYWQgcmVxdWVzdCBmYWlsdXJlLiIgfQorICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAiaXNQcm92aXNpb25hbCIsICJ0eXBlIjogImJvb2xlYW4i
LCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiV2hldGhlciB0aGlzIGlzIGEgcHJv
dmlzaW9uYWwgcGFnZSB0YXJnZXQuIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiaXNQ
YXVzZWRPblN0YXJ0IiwgInR5cGUiOiAiYm9vbGVhbiIsICJvcHRpb25hbCI6IHRydWUsICJkZXNj
cmlwdGlvbiI6ICJXaGV0aGVyIHRoZSB0YXJnZXQgaXMgcGF1c2VkIG9uIHN0YXJ0IGFuZCBoYXMg
dG8gYmUgZXhwbGljaXRlbHkgcmVzdW1lZCBieSBpbnNwZWN0b3IuIiB9CiAgICAgICAgICAgICBd
CiAgICAgICAgIH0KICAgICBdLAogICAgICJjb21tYW5kcyI6IFsKKyAgICAgICAgeworICAgICAg
ICAgICAgIm5hbWUiOiAic2V0UGF1c2VPblN0YXJ0IiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlv
biI6ICJJZiBzZXQgdG8gdHJ1ZSwgbmV3IHRhcmdldHMgd2lsbCBiZSBwYXVzZWQgb24gc3RhcnQg
d2FpdGluZyBmb3IgcmVzdW1lIGNvbW1hbmQuIE90aGVyIGNvbW1hbmRzIGNhbiBiZSBkaXNwYXRj
aGVkIG9uIHRoZSB0YXJnZXQgYmVmb3JlIGl0IGlzIHJlc3VtZWQuIiwKKyAgICAgICAgICAgICJw
YXJhbWV0ZXJzIjogWworICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicGF1c2VPblN0YXJ0Iiwg
InR5cGUiOiAiYm9vbGVhbiIsICJkZXNjcmlwdGlvbiI6ICJJZiBzZXQgdG8gdHJ1ZSwgbmV3IHRh
cmdldHMgd2lsbCBiZSBwYXVzZWQgb24gc3RhcnQgd2FpdGluZyBmb3IgcmVzdW1lIGNvbW1hbmQu
IiB9CisgICAgICAgICAgICBdCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJu
YW1lIjogInJlc3VtZSIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiV2lsbCByZXN1bWUg
dGFyZ2V0IGl0IHdhcyBwYXVzZWQgb24gc3RhcnQuIiwKKyAgICAgICAgICAgICJwYXJhbWV0ZXJz
IjogWworICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAidGFyZ2V0SWQiLCAidHlwZSI6ICJzdHJp
bmciIH0KKyAgICAgICAgICAgIF0KKyAgICAgICAgfSwKICAgICAgICAgewogICAgICAgICAgICAg
Im5hbWUiOiAic2VuZE1lc3NhZ2VUb1RhcmdldCIsCiAgICAgICAgICAgICAiZGVzY3JpcHRpb24i
OiAiU2VuZCBhbiBJbnNwZWN0b3IgUHJvdG9jb2wgbWVzc2FnZSB0byBiZSBkaXNwYXRjaGVkIHRv
IGEgVGFyZ2V0J3MgYWdlbnRzLiIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Db250cm9sbGVycy9DU1NNYW5hZ2VyLmpzIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQ1NTTWFuYWdlci5qcwppbmRleCA0MjAx
MTQyZjU2MWRlZTYwYmI2MjQ0NWMxYzhmMDNiZWJjNzA2OGNhLi4wNTQyZDg1MTYzZDZmYTUzNDE2
N2FkNTZjYjJlYzkyNDM4M2RiYTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Db250cm9sbGVycy9DU1NNYW5hZ2VyLmpzCisrKyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0NTU01hbmFnZXIuanMKQEAgLTY2
MCw3ICs2NjAsNyBAQCBXSS5DU1NNYW5hZ2VyID0gY2xhc3MgQ1NTTWFuYWdlciBleHRlbmRzIFdJ
Lk9iamVjdAogICAgICAgICAgICAgICAgIC8vIGlnbm9yZSB0aGUgbmV4dCBfdXBkYXRlUmVzb3Vy
Y2VDb250ZW50IGNhbGwuCiAgICAgICAgICAgICAgICAgcmVzb3VyY2UuX19pZ25vcmVOZXh0VXBk
YXRlUmVzb3VyY2VDb250ZW50ID0gdHJ1ZTsKIAotICAgICAgICAgICAgICAgIGxldCByZXZpc2lv
biA9IHN0eWxlU2hlZXQuY3VycmVudFJldmlzaW9uOworICAgICAgICAgICAgICAgIGxldCByZXZp
c2lvbiA9IHN0eWxlU2hlZXQuZWRpdGFibGVSZXZpc2lvbjsKICAgICAgICAgICAgICAgICByZXZp
c2lvbi51cGRhdGVSZXZpc2lvbkNvbnRlbnQocmVzb3VyY2UuY29udGVudCk7CiAgICAgICAgICAg
ICB9CiAKQEAgLTcwNCw3ICs3MDQsNyBAQCBXSS5DU1NNYW5hZ2VyID0gY2xhc3MgQ1NTTWFuYWdl
ciBleHRlbmRzIFdJLk9iamVjdAogCiAgICAgICAgICAgICB0aGlzLl9pZ25vcmVSZXNvdXJjZUNv
bnRlbnREaWRDaGFuZ2VFdmVudEZvclJlc291cmNlID0gcmVwcmVzZW50ZWRPYmplY3Q7CiAKLSAg
ICAgICAgICAgIGxldCByZXZpc2lvbiA9IHJlcHJlc2VudGVkT2JqZWN0LmN1cnJlbnRSZXZpc2lv
bjsKKyAgICAgICAgICAgIGxldCByZXZpc2lvbiA9IHJlcHJlc2VudGVkT2JqZWN0LmVkaXRhYmxl
UmV2aXNpb247CiAgICAgICAgICAgICBpZiAoc3R5bGVTaGVldC5pc0luc3BlY3RvclN0eWxlU2hl
ZXQoKSkgewogICAgICAgICAgICAgICAgIHJldmlzaW9uLnVwZGF0ZVJldmlzaW9uQ29udGVudChy
ZXByZXNlbnRlZE9iamVjdC5jb250ZW50KTsKICAgICAgICAgICAgICAgICBzdHlsZVNoZWV0LmRp
c3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5Tb3VyY2VDb2RlLkV2ZW50LkNvbnRlbnREaWRDaGFu
Z2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29u
dHJvbGxlcnMvVGFyZ2V0TWFuYWdlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL0NvbnRyb2xsZXJzL1RhcmdldE1hbmFnZXIuanMKaW5kZXggOTY5ODdhNGU1N2QzYTZj
ZTMwZjc2NjMzNWQyOTkyMTk1MzE4NzExNS4uODQ1ZGQ4OTkxOGNmYzBmY2EyZDRlZDZiNTk2ZTMw
NjNhMTFlMTFmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvQ29udHJvbGxlcnMvVGFyZ2V0TWFuYWdlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9UYXJnZXRNYW5hZ2VyLmpzCkBAIC0zMyw5ICsz
Myw2IEBAIFdJLlRhcmdldE1hbmFnZXIgPSBjbGFzcyBUYXJnZXRNYW5hZ2VyIGV4dGVuZHMgV0ku
T2JqZWN0CiAgICAgICAgIHRoaXMuX2NhY2hlZFRhcmdldHNMaXN0ID0gbnVsbDsKICAgICAgICAg
dGhpcy5fc2VlblBhZ2VUYXJnZXQgPSBmYWxzZTsKICAgICAgICAgdGhpcy5fdHJhbnNpdGlvblRp
bWVvdXRJZGVudGlmaWVyID0gdW5kZWZpbmVkOwotCi0gICAgICAgIHRoaXMuX3Byb3Zpc2lvbmFs
VGFyZ2V0SW5mb3MgPSBuZXcgTWFwOwotICAgICAgICB0aGlzLl9zd2FwcGVkVGFyZ2V0SWRzID0g
bmV3IFNldDsKICAgICB9CiAKICAgICAvLyBQdWJsaWMKQEAgLTk0LDYgKzkxLDcgQEAgV0kuVGFy
Z2V0TWFuYWdlciA9IGNsYXNzIFRhcmdldE1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAg
ICAgICBsZXQgdGFyZ2V0ID0gbmV3IFdJLk11bHRpcGxleGluZ0JhY2tlbmRUYXJnZXQ7CiAgICAg
ICAgIHRhcmdldC5pbml0aWFsaXplKCk7CisgICAgICAgIHRhcmdldC5UYXJnZXRBZ2VudC5zZXRQ
YXVzZU9uU3RhcnQodHJ1ZSk7CiAKICAgICAgICAgdGhpcy5faW5pdGlhbGl6ZUJhY2tlbmRUYXJn
ZXQodGFyZ2V0KTsKIApAQCAtMTIwLDIzICsxMTgsMjMgQEAgV0kuVGFyZ2V0TWFuYWdlciA9IGNs
YXNzIFRhcmdldE1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgIHRhcmdldENyZWF0ZWQo
cGFyZW50VGFyZ2V0LCB0YXJnZXRJbmZvKQogICAgIHsKLSAgICAgICAgdGhpcy5fY29ubmVjdFRv
VGFyZ2V0KHBhcmVudFRhcmdldCwgdGFyZ2V0SW5mbyk7CisgICAgICAgIGxldCB0YXJnZXQgPSB0
aGlzLl9jb25uZWN0VG9UYXJnZXQocGFyZW50VGFyZ2V0LCB0YXJnZXRJbmZvKTsKIAotICAgICAg
ICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5UYXJnZXRNYW5hZ2VyLkV2ZW50LlRh
cmdldENyZWF0ZWQsIHt0YXJnZXRJbmZvfSk7CisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRv
TGlzdGVuZXJzKFdJLlRhcmdldE1hbmFnZXIuRXZlbnQuVGFyZ2V0Q3JlYXRlZCwge3RhcmdldCwg
aXNQYXVzZWRPblN0YXJ0OiB0YXJnZXRJbmZvLmlzUGF1c2VkT25TdGFydH0pOwogICAgIH0KIAog
ICAgIGRpZENvbW1pdFByb3Zpc2lvbmFsVGFyZ2V0KHBhcmVudFRhcmdldCwgcHJldmlvdXNUYXJn
ZXRJZCwgbmV3VGFyZ2V0SWQpCiAgICAgewogICAgICAgICB0aGlzLl9kZXN0cm95VGFyZ2V0KHBy
ZXZpb3VzVGFyZ2V0SWQpOwotICAgICAgICBsZXQgdGFyZ2V0SW5mbyA9IHRoaXMuX3Byb3Zpc2lv
bmFsVGFyZ2V0SW5mb3MuZ2V0KG5ld1RhcmdldElkKTsKLSAgICAgICAgY29uc29sZS5hc3NlcnQo
dGFyZ2V0SW5mbyk7Ci0gICAgICAgIHRhcmdldEluZm8uaXNQcm92aXNpb25hbCA9IGZhbHNlOwot
ICAgICAgICB0aGlzLl9wcm92aXNpb25hbFRhcmdldEluZm9zLmRlbGV0ZShuZXdUYXJnZXRJZCk7
Ci0gICAgICAgIHRoaXMuX2Nvbm5lY3RUb1RhcmdldChwYXJlbnRUYXJnZXQsIHRhcmdldEluZm8p
OwotICAgICAgICBjb25zb2xlLmFzc2VydCghdGhpcy5fc3dhcHBlZFRhcmdldElkcy5oYXMocHJl
dmlvdXNUYXJnZXRJZCkpOwotICAgICAgICB0aGlzLl9zd2FwcGVkVGFyZ2V0SWRzLmFkZChwcmV2
aW91c1RhcmdldElkKTsKLQotICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhX
SS5UYXJnZXRNYW5hZ2VyLkV2ZW50LkRpZENvbW1pdFByb3Zpc2lvbmFsVGFyZ2V0LCB7cHJldmlv
dXNUYXJnZXRJZCwgdGFyZ2V0SW5mb30pOworICAgICAgICBsZXQgdGFyZ2V0ID0gdGhpcy5fdGFy
Z2V0cy5nZXQobmV3VGFyZ2V0SWQpOworICAgICAgICBjb25zb2xlLmFzc2VydCh0YXJnZXQpOwor
ICAgICAgICBpZiAoIXRhcmdldCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgdGFyZ2V0
LmlzUHJvdmlzaW9uYWwgPSBmYWxzZTsKKyAgICAgICAgdGhpcy5fY2hlY2tBbmRIYW5kbGVQYWdl
VGFyZ2V0VHJhbnNpdGlvbih0YXJnZXQpOworICAgICAgICB0YXJnZXQuY29ubmVjdGlvbi5kaXNw
YXRjaFByb3Zpc2lvbmFsTWVzc2FnZXMoKTsKKworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRU
b0xpc3RlbmVycyhXSS5UYXJnZXRNYW5hZ2VyLkV2ZW50LkRpZENvbW1pdFByb3Zpc2lvbmFsVGFy
Z2V0LCB7cHJldmlvdXNUYXJnZXRJZCwgdGFyZ2V0fSk7CiAgICAgfQogCiAgICAgdGFyZ2V0RGVz
dHJveWVkKHRhcmdldElkKQpAQCAtMTQ4LDQ3ICsxNDYsNDQgQEAgV0kuVGFyZ2V0TWFuYWdlciA9
IGNsYXNzIFRhcmdldE1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgIGRpc3BhdGNoTWVz
c2FnZUZyb21UYXJnZXQodGFyZ2V0SWQsIG1lc3NhZ2UpCiAgICAgewotICAgICAgICBpZiAodGhp
cy5fcHJvdmlzaW9uYWxUYXJnZXRJbmZvcy5oYXModGFyZ2V0SWQpKQotICAgICAgICAgICAgcmV0
dXJuOwotCiAgICAgICAgIGxldCB0YXJnZXQgPSB0aGlzLl90YXJnZXRzLmdldCh0YXJnZXRJZCk7
CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRhcmdldCk7CiAgICAgICAgIGlmICghdGFyZ2V0KQog
ICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHRhcmdldC5jb25uZWN0aW9uLmRpc3BhdGNo
KG1lc3NhZ2UpOworICAgICAgICBpZiAodGFyZ2V0LmlzUHJvdmlzaW9uYWwpCisgICAgICAgICAg
ICB0YXJnZXQuY29ubmVjdGlvbi5hZGRQcm92aXNpb25hbE1lc3NhZ2UobWVzc2FnZSk7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIHRhcmdldC5jb25uZWN0aW9uLmRpc3BhdGNoKG1lc3NhZ2Up
OwogICAgIH0KIAogICAgIC8vIFByaXZhdGUKIAogICAgIF9jb25uZWN0VG9UYXJnZXQocGFyZW50
VGFyZ2V0LCB0YXJnZXRJbmZvKQogICAgIHsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoIXRoaXMu
X3Byb3Zpc2lvbmFsVGFyZ2V0SW5mb3MuaGFzKHRhcmdldEluZm8udGFyZ2V0SWQpKTsKLQotICAg
ICAgICAvLyBDT01QQVRJQklMSVRZIChpT1MgMTMuMCk6IGBUYXJnZXQuVGFyZ2V0SW5mby5pc1By
b3Zpc2lvbmFsYCBkaWQgbm90IGV4aXN0IHlldC4KLSAgICAgICAgaWYgKHRhcmdldEluZm8uaXNQ
cm92aXNpb25hbCkgewotICAgICAgICAgICAgdGhpcy5fcHJvdmlzaW9uYWxUYXJnZXRJbmZvcy5z
ZXQodGFyZ2V0SW5mby50YXJnZXRJZCwgdGFyZ2V0SW5mbyk7Ci0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIH0KLQotICAgICAgICBjb25zb2xlLmFzc2VydChwYXJlbnRUYXJnZXQuaGFzQ29t
bWFuZCgiVGFyZ2V0LnNlbmRNZXNzYWdlVG9UYXJnZXQiKSk7Ci0gICAgICAgIGxldCBjb25uZWN0
aW9uID0gbmV3IEluc3BlY3RvckJhY2tlbmQuVGFyZ2V0Q29ubmVjdGlvbjsKKyAgICAgICAgbGV0
IGNvbm5lY3Rpb24gPSBuZXcgSW5zcGVjdG9yQmFja2VuZC5UYXJnZXRDb25uZWN0aW9uKHBhcmVu
dFRhcmdldCwgdGFyZ2V0SW5mby50YXJnZXRJZCk7CiAgICAgICAgIGxldCBzdWJUYXJnZXQgPSB0
aGlzLl9jcmVhdGVUYXJnZXQocGFyZW50VGFyZ2V0LCB0YXJnZXRJbmZvLCBjb25uZWN0aW9uKTsK
ICAgICAgICAgdGhpcy5fY2hlY2tBbmRIYW5kbGVQYWdlVGFyZ2V0VHJhbnNpdGlvbihzdWJUYXJn
ZXQpOwogICAgICAgICBzdWJUYXJnZXQuaW5pdGlhbGl6ZSgpOwogCisgICAgICAgIC8vIENPTVBB
VElCSUxJVFkgKGlPUyAxMy4wKTogYFRhcmdldC5UYXJnZXRJbmZvLmlzUGF1c2VkT25TdGFydGAg
ZGlkIG5vdCBleGlzdCB5ZXQuCisgICAgICAgIGlmICh0YXJnZXRJbmZvLmlzUGF1c2VkT25TdGFy
dCkgeworICAgICAgICAgICAgcGFyZW50VGFyZ2V0LlRhcmdldEFnZW50LnJlc3VtZSh0YXJnZXRJ
bmZvLnRhcmdldElkKS5jYXRjaCgoZXJyb3IpID0+IHsKKyAgICAgICAgICAgICAgICBpZiAoc3Vi
VGFyZ2V0LmlzRGVzdHJveWVkKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICAgICAgV0kucmVwb3J0SW50ZXJuYWxFcnJvcihlcnJvcik7CisgICAgICAgICAgICB9KTsK
KyAgICAgICAgfQorCiAgICAgICAgIHRoaXMuYWRkVGFyZ2V0KHN1YlRhcmdldCk7CisgICAgICAg
IHJldHVybiBzdWJUYXJnZXQ7CiAgICAgfQogCiAgICAgX2Rlc3Ryb3lUYXJnZXQodGFyZ2V0SWQp
CiAgICAgewotICAgICAgICBpZiAodGhpcy5fcHJvdmlzaW9uYWxUYXJnZXRJbmZvcy5kZWxldGUo
dGFyZ2V0SWQpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlmICh0aGlzLl9zd2Fw
cGVkVGFyZ2V0SWRzLmRlbGV0ZSh0YXJnZXRJZCkpCi0gICAgICAgICAgICByZXR1cm47Ci0KICAg
ICAgICAgbGV0IHRhcmdldCA9IHRoaXMuX3RhcmdldHMuZ2V0KHRhcmdldElkKTsKKyAgICAgICAg
aWYgKCF0YXJnZXQpCisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIHRoaXMuX2NoZWNrQW5k
SGFuZGxlUGFnZVRhcmdldFRlcm1pbmF0aW9uKHRhcmdldCk7CiAgICAgICAgIHRoaXMucmVtb3Zl
VGFyZ2V0KHRhcmdldCk7CiAgICAgfQpAQCAtMTk5LDcgKzE5NCw3IEBAIFdJLlRhcmdldE1hbmFn
ZXIgPSBjbGFzcyBUYXJnZXRNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICAgICAgc3dp
dGNoICh0eXBlKSB7CiAgICAgICAgIGNhc2UgSW5zcGVjdG9yQmFja2VuZC5FbnVtLlRhcmdldC5U
YXJnZXRJbmZvVHlwZS5QYWdlOgotICAgICAgICAgICAgcmV0dXJuIG5ldyBXSS5QYWdlVGFyZ2V0
KHBhcmVudFRhcmdldCwgdGFyZ2V0SWQsIFdJLlVJU3RyaW5nKCJQYWdlIiksIGNvbm5lY3Rpb24p
OworICAgICAgICAgICAgcmV0dXJuIG5ldyBXSS5QYWdlVGFyZ2V0KHBhcmVudFRhcmdldCwgdGFy
Z2V0SWQsIFdJLlVJU3RyaW5nKCJQYWdlIiksIGNvbm5lY3Rpb24sIHRhcmdldEluZm8uaXNQcm92
aXNpb25hbCk7CiAgICAgICAgIGNhc2UgSW5zcGVjdG9yQmFja2VuZC5FbnVtLlRhcmdldC5UYXJn
ZXRJbmZvVHlwZS5Xb3JrZXI6CiAgICAgICAgICAgICByZXR1cm4gbmV3IFdJLldvcmtlclRhcmdl
dChwYXJlbnRUYXJnZXQsIHRhcmdldElkLCBXSS5VSVN0cmluZygiV29ya2VyIiksIGNvbm5lY3Rp
b24pOwogICAgICAgICBjYXNlICJzZXJ2aWNld29ya2VyIjogLy8gQ09NUEFUSUJJTElUWSAoaU9T
IDEzKTogInNlcnZpY2V3b3JrZXIiIHdhcyByZW5hbWVkIHRvICJzZXJ2aWNlLXdvcmtlciIuCkBA
IC0yMTUsNiArMjEwLDEwIEBAIFdJLlRhcmdldE1hbmFnZXIgPSBjbGFzcyBUYXJnZXRNYW5hZ2Vy
IGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIGlmICh0YXJnZXQudHlwZSAhPT0gV0kuVGFyZ2V0
VHlwZS5QYWdlKQogICAgICAgICAgICAgcmV0dXJuOwogCisgICAgICAgIC8vIENPTVBBVElCSUxJ
VFkgKGlPUyAxMy4wKTogYFRhcmdldC5UYXJnZXRJbmZvLmlzUHJvdmlzaW9uYWxgIGRpZCBub3Qg
ZXhpc3QgeWV0LgorICAgICAgICBpZiAodGFyZ2V0LmlzUHJvdmlzaW9uYWwpCisgICAgICAgICAg
ICByZXR1cm47CisKICAgICAgICAgLy8gRmlyc3QgcGFnZSB0YXJnZXQuCiAgICAgICAgIGlmICgh
V0kucGFnZVRhcmdldCAmJiAhdGhpcy5fc2VlblBhZ2VUYXJnZXQpIHsKICAgICAgICAgICAgIHRo
aXMuX3NlZW5QYWdlVGFyZ2V0ID0gdHJ1ZTsKQEAgLTIzMCw2ICsyMjksOCBAQCBXSS5UYXJnZXRN
YW5hZ2VyID0gY2xhc3MgVGFyZ2V0TWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgIHsKICAg
ICAgICAgaWYgKHRhcmdldC50eXBlICE9PSBXSS5UYXJnZXRUeXBlLlBhZ2UpCiAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIGlmICh0YXJnZXQuaXNQcm92aXNpb25hbCkKKyAgICAgICAgICAg
IHJldHVybjsKIAogICAgICAgICBjb25zb2xlLmFzc2VydCh0YXJnZXQgPT09IFdJLnBhZ2VUYXJn
ZXQpOwogICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9zZWVuUGFnZVRhcmdldCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvU291cmNl
Q29kZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Tb3Vy
Y2VDb2RlLmpzCmluZGV4IDNlMjZmZmMyNzU5ODg0MDU1NWNmZTZhZGRmYTE5ODEzNTRmZTYwZWIu
LjBhNDU0MTcwMDVmZTlhNTE4MDcyOTJkYTRhMjFiNzU0OTUzNWM5MWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Tb3VyY2VDb2RlLmpzCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Tb3VyY2VDb2Rl
LmpzCkBAIC02Niw3ICs2NiwxMyBAQCBXSS5Tb3VyY2VDb2RlID0gY2xhc3MgU291cmNlQ29kZSBl
eHRlbmRzIFdJLk9iamVjdAogCiAgICAgZ2V0IGN1cnJlbnRSZXZpc2lvbigpCiAgICAgewotICAg
ICAgICB0aGlzLl9pbml0aWFsaXplQ3VycmVudFJldmlzaW9uSWZOZWVkZWQoKTsKKyAgICAgICAg
cmV0dXJuIHRoaXMuX2N1cnJlbnRSZXZpc2lvbjsKKyAgICB9CisKKyAgICBnZXQgZWRpdGFibGVS
ZXZpc2lvbigpCisgICAgeworICAgICAgICBpZiAodGhpcy5fY3VycmVudFJldmlzaW9uID09PSB0
aGlzLl9vcmlnaW5hbFJldmlzaW9uKQorICAgICAgICAgICAgdGhpcy5fY3VycmVudFJldmlzaW9u
ID0gdGhpcy5fb3JpZ2luYWxSZXZpc2lvbi5jb3B5KCk7CiAgICAgICAgIHJldHVybiB0aGlzLl9j
dXJyZW50UmV2aXNpb247CiAgICAgfQogCkBAIC04Nyw3ICs5Myw3IEBAIFdJLlNvdXJjZUNvZGUg
PSBjbGFzcyBTb3VyY2VDb2RlIGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICBnZXQgY29udGVudCgp
CiAgICAgewotICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50UmV2aXNpb24uY29udGVudDsKKyAg
ICAgICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRSZXZpc2lvbi5jb250ZW50OwogICAgIH0KIAogICAg
IGdldCB1cmwoKQpAQCAtMTc4LDEzICsxODQsMTAgQEAgV0kuU291cmNlQ29kZSA9IGNsYXNzIFNv
dXJjZUNvZGUgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgIHJldmlzaW9uQ29udGVudERpZENoYW5n
ZShyZXZpc2lvbikKICAgICB7Ci0gICAgICAgIGlmIChyZXZpc2lvbiA9PT0gdGhpcy5fb3JpZ2lu
YWxSZXZpc2lvbikKLSAgICAgICAgICAgIHRoaXMuX2luaXRpYWxpemVDdXJyZW50UmV2aXNpb25J
Zk5lZWRlZCgpOwotCiAgICAgICAgIGlmICh0aGlzLl9pZ25vcmVSZXZpc2lvbkNvbnRlbnREaWRD
aGFuZ2VFdmVudCkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAocmV2aXNpb24g
IT09IHRoaXMuY3VycmVudFJldmlzaW9uKQorICAgICAgICBpZiAocmV2aXNpb24gIT09IHRoaXMu
X2N1cnJlbnRSZXZpc2lvbikKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICB0aGlzLmhh
bmRsZUN1cnJlbnRSZXZpc2lvbkNvbnRlbnRDaGFuZ2UoKTsKQEAgLTIyNCwxMiArMjI3LDYgQEAg
V0kuU291cmNlQ29kZSA9IGNsYXNzIFNvdXJjZUNvZGUgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAg
IC8vIFByaXZhdGUKIAotICAgIF9pbml0aWFsaXplQ3VycmVudFJldmlzaW9uSWZOZWVkZWQoKQot
ICAgIHsKLSAgICAgICAgaWYgKHRoaXMuX2N1cnJlbnRSZXZpc2lvbiA9PT0gdGhpcy5fb3JpZ2lu
YWxSZXZpc2lvbikKLSAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRSZXZpc2lvbiA9IHRoaXMuX29y
aWdpbmFsUmV2aXNpb24uY29weSgpOwotICAgIH0KLQogICAgIF9wcm9jZXNzQ29udGVudChwYXJh
bWV0ZXJzKQogICAgIHsKICAgICAgICAgLy8gRGlmZmVyZW50IGJhY2tlbmQgQVBJcyByZXR1cm4g
b25lIG9mIGBjb250ZW50LCBgYm9keWAsIGB0ZXh0YCwgb3IgYHNjcmlwdFNvdXJjZWAuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9Db25u
ZWN0aW9uLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wv
Q29ubmVjdGlvbi5qcwppbmRleCA5YmVjYmQwNmE5ZDViMjU4ZjdhNTA2ZGNhMjBlOTQ0MzMzYzhh
YmE2Li42OTVlOGU0ZmQ2N2IyM2IwNTllNjc2OTBhMjM3NTdjY2QzYTQ3ZDIxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9Db25uZWN0aW9u
LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0Nv
bm5lY3Rpb24uanMKQEAgLTM5LDYgKzM5LDcgQEAgSW5zcGVjdG9yQmFja2VuZC5Db25uZWN0aW9u
ID0gY2xhc3MgSW5zcGVjdG9yQmFja2VuZENvbm5lY3Rpb24KICAgICAgICAgdGhpcy5fcGVuZGlu
Z1Jlc3BvbnNlcyA9IG5ldyBNYXA7CiAgICAgICAgIHRoaXMuX2RlZmVycmVkQ2FsbGJhY2tzID0g
W107CiAgICAgICAgIHRoaXMuX3RhcmdldCA9IG51bGw7CisgICAgICAgIHRoaXMuX3Byb3Zpc2lv
bmFsTWVzc2FnZXMgPSBbXTsKICAgICB9CiAKICAgICAvLyBQdWJsaWMKQEAgLTU0LDYgKzU1LDIw
IEBAIEluc3BlY3RvckJhY2tlbmQuQ29ubmVjdGlvbiA9IGNsYXNzIEluc3BlY3RvckJhY2tlbmRD
b25uZWN0aW9uCiAgICAgICAgIHRoaXMuX3RhcmdldCA9IHRhcmdldDsKICAgICB9CiAKKyAgICBh
ZGRQcm92aXNpb25hbE1lc3NhZ2UobWVzc2FnZSkKKyAgICB7CisgICAgICAgIHRoaXMuX3Byb3Zp
c2lvbmFsTWVzc2FnZXMucHVzaChtZXNzYWdlKTsKKyAgICB9CisKKyAgICBkaXNwYXRjaFByb3Zp
c2lvbmFsTWVzc2FnZXMoKQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy50YXJn
ZXQpOworICAgICAgICBjb25zb2xlLmFzc2VydCghdGhpcy50YXJnZXQuaXNQcm92aXNpb25hbCk7
CisgICAgICAgIGZvciAobGV0IG1lc3NhZ2Ugb2YgdGhpcy5fcHJvdmlzaW9uYWxNZXNzYWdlcykK
KyAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2gobWVzc2FnZSk7CisgICAgICAgIHRoaXMuX3Byb3Zp
c2lvbmFsTWVzc2FnZXMgPSBudWxsOworICAgIH0KKwogICAgIGRpc3BhdGNoKG1lc3NhZ2UpCiAg
ICAgewogICAgICAgICBsZXQgbWVzc2FnZU9iamVjdCA9IHR5cGVvZiBtZXNzYWdlID09PSAic3Ry
aW5nIiA/IEpTT04ucGFyc2UobWVzc2FnZSkgOiBtZXNzYWdlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvUGFnZVRhcmdldC5qcyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL1BhZ2VUYXJnZXQuanMK
aW5kZXggZjMzNGMwODA4NGMwNzA2NTJhYTBkZWM0MjEwYTdjYTFhNTdhODM0YS4uZGVkN2NjM2U4
MjhjNzU4ZWNjYWUzMDg4YTM3MzMxMmRmZWRkYjAzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvUGFnZVRhcmdldC5qcworKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9QYWdlVGFyZ2V0LmpzCkBA
IC0yNSwxMSArMjUsMTIgQEAKIAogV0kuUGFnZVRhcmdldCA9IGNsYXNzIFBhZ2VUYXJnZXQgZXh0
ZW5kcyBXSS5UYXJnZXQKIHsKLSAgICBjb25zdHJ1Y3RvcihwYXJlbnRUYXJnZXQsIHRhcmdldElk
LCBuYW1lLCBjb25uZWN0aW9uKQorICAgIGNvbnN0cnVjdG9yKHBhcmVudFRhcmdldCwgdGFyZ2V0
SWQsIG5hbWUsIGNvbm5lY3Rpb24sIGlzUHJvdmlzaW9uYWwpCiAgICAgewogICAgICAgICBzdXBl
cihwYXJlbnRUYXJnZXQsIHRhcmdldElkLCBuYW1lLCBXSS5UYXJnZXRUeXBlLlBhZ2UsIGNvbm5l
Y3Rpb24pOwogCiAgICAgICAgIGNvbnN0IGlzUGFnZUNvbnRleHQgPSB0cnVlOwogICAgICAgICB0
aGlzLl9leGVjdXRpb25Db250ZXh0ID0gbmV3IFdJLkV4ZWN1dGlvbkNvbnRleHQodGhpcywgV0ku
UnVudGltZU1hbmFnZXIuVG9wTGV2ZWxDb250ZXh0RXhlY3V0aW9uSWRlbnRpZmllciwgdGhpcy5k
aXNwbGF5TmFtZSwgaXNQYWdlQ29udGV4dCwgbnVsbCk7CisgICAgICAgIHRoaXMuaXNQcm92aXNp
b25hbCA9IGlzUHJvdmlzaW9uYWw7CiAgICAgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL1RhcmdldC5qcyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL1RhcmdldC5qcwppbmRleCAwYTMwZGZm
NGZhZWRhMjk5ZGQwNGZmZjA0M2JiNzU3NWZiMzYxODlhLi42ODYyOTIyNjllYjhjYjNhOGMxY2Fl
Yzc3MTc4NTIwNDhjOTZhZDU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Qcm90b2NvbC9UYXJnZXQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvVGFyZ2V0LmpzCkBAIC0zOSw2ICszOSw3IEBAIFdJLlRh
cmdldCA9IGNsYXNzIFRhcmdldCBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICB0aGlzLl9tYWlu
UmVzb3VyY2UgPSBudWxsOwogICAgICAgICB0aGlzLl9yZXNvdXJjZUNvbGxlY3Rpb24gPSBuZXcg
V0kuUmVzb3VyY2VDb2xsZWN0aW9uOwogICAgICAgICB0aGlzLl9leHRyYVNjcmlwdENvbGxlY3Rp
b24gPSBuZXcgV0kuU2NyaXB0Q29sbGVjdGlvbjsKKyAgICAgICAgdGhpcy5faXNQcm92aXNpb25h
bCA9IGZhbHNlOwogCiAgICAgICAgIHRoaXMuX3N1cHBvcnRlZENvbW1hbmRQYXJhbWV0ZXJzID0g
bmV3IE1hcDsKICAgICAgICAgdGhpcy5fc3VwcG9ydGVkRXZlbnRQYXJhbWV0ZXJzID0gbmV3IE1h
cDsKQEAgLTE3MSw2ICsxNzIsOCBAQCBXSS5UYXJnZXQgPSBjbGFzcyBUYXJnZXQgZXh0ZW5kcyBX
SS5PYmplY3QKIAogICAgIGdldCB0eXBlKCkgeyByZXR1cm4gdGhpcy5fdHlwZTsgfQogICAgIGdl
dCBjb25uZWN0aW9uKCkgeyByZXR1cm4gdGhpcy5fY29ubmVjdGlvbjsgfQorICAgIGdldCBpc1By
b3Zpc2lvbmFsKCkgeyByZXR1cm4gdGhpcy5faXNQcm92aXNpb25hbDsgfQorICAgIHNldCBpc1By
b3Zpc2lvbmFsKHZhbHVlKSB7IHRoaXMuX2lzUHJvdmlzaW9uYWwgPSB2YWx1ZTsgfQogICAgIGdl
dCBleGVjdXRpb25Db250ZXh0KCkgeyByZXR1cm4gdGhpcy5fZXhlY3V0aW9uQ29udGV4dDsgfQog
CiAgICAgZ2V0IHJlc291cmNlQ29sbGVjdGlvbigpIHsgcmV0dXJuIHRoaXMuX3Jlc291cmNlQ29s
bGVjdGlvbjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvRm9udFJlc291cmNlQ29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9Gb250UmVzb3VyY2VDb250ZW50Vmlldy5qcwppbmRleCA4
OTkzZTVlMmM3N2NiY2MwYjE4OGI0ZjViNzczYjJhZDZmNTk2ODM4Li5kNmNiMGMyZjI2MzE0ODA1
ZThlYmUyMDIyMzM2NTk5NzkwM2MzZWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9Gb250UmVzb3VyY2VDb250ZW50Vmlldy5qcworKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Gb250UmVzb3VyY2VDb250
ZW50Vmlldy5qcwpAQCAtMTQ2LDcgKzE0Niw3IEBAIFdJLkZvbnRSZXNvdXJjZUNvbnRlbnRWaWV3
ID0gY2xhc3MgRm9udFJlc291cmNlQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5SZXNvdXJjZUNvCiAK
ICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGxvY2FsUmVzb3VyY2VPdmVycmlkZSk7CiAKLSAg
ICAgICAgICAgIGxldCByZXZpc2lvbiA9IGxvY2FsUmVzb3VyY2VPdmVycmlkZS5sb2NhbFJlc291
cmNlLmN1cnJlbnRSZXZpc2lvbjsKKyAgICAgICAgICAgIGxldCByZXZpc2lvbiA9IGxvY2FsUmVz
b3VyY2VPdmVycmlkZS5sb2NhbFJlc291cmNlLmVkaXRhYmxlUmV2aXNpb247CiAgICAgICAgICAg
ICByZXZpc2lvbi51cGRhdGVSZXZpc2lvbkNvbnRlbnQoY29udGVudCwge2Jhc2U2NEVuY29kZWQs
IG1pbWVUeXBlfSk7CiAKICAgICAgICAgICAgIGlmICghdGhpcy5zaG93aW5nTG9jYWxSZXNvdXJj
ZU92ZXJyaWRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvSW1hZ2VSZXNvdXJjZUNvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvSW1hZ2VSZXNvdXJjZUNvbnRlbnRWaWV3LmpzCmluZGV4
IGEzMDJiMTc0OWY4YWRkODIwMTg3NmQ0MWEyNTdlNTE4YTQ4NjFkNjIuLmQ3NTNlZGEwYWI3YTZm
NmI0MjAyM2I4ZTc2OGIzYWFlZmFkNzRlYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0ltYWdlUmVzb3VyY2VDb250ZW50Vmlldy5qcworKysg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9JbWFnZVJlc291cmNl
Q29udGVudFZpZXcuanMKQEAgLTE2MCw3ICsxNjAsNyBAQCBXSS5JbWFnZVJlc291cmNlQ29udGVu
dFZpZXcgPSBjbGFzcyBJbWFnZVJlc291cmNlQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5SZXNvdXJj
ZQogCiAgICAgICAgICAgICBjb25zb2xlLmFzc2VydChsb2NhbFJlc291cmNlT3ZlcnJpZGUpOwog
Ci0gICAgICAgICAgICBsZXQgcmV2aXNpb24gPSBsb2NhbFJlc291cmNlT3ZlcnJpZGUubG9jYWxS
ZXNvdXJjZS5jdXJyZW50UmV2aXNpb247CisgICAgICAgICAgICBsZXQgcmV2aXNpb24gPSBsb2Nh
bFJlc291cmNlT3ZlcnJpZGUubG9jYWxSZXNvdXJjZS5lZGl0YWJsZVJldmlzaW9uOwogICAgICAg
ICAgICAgcmV2aXNpb24udXBkYXRlUmV2aXNpb25Db250ZW50KGNvbnRlbnQsIHtiYXNlNjRFbmNv
ZGVkLCBtaW1lVHlwZX0pOwogCiAgICAgICAgICAgICBpZiAoIXRoaXMuc2hvd2luZ0xvY2FsUmVz
b3VyY2VPdmVycmlkZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL05hdmlnYXRpb25TaWRlYmFyUGFuZWwuanMgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLmpzCmluZGV4
IDIyZWQ4OTY1OGQ3MDBmZjgzNTA1ZDRhNGRiMDQyYjg0NjQwOGNmZmMuLmNhOTM3Y2Y4ZmQwNjUw
YTVmZWJmNTY1NTVhMjMxZTM0NTU4NTQ5MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05hdmlnYXRpb25TaWRlYmFyUGFuZWwuanMKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTmF2aWdhdGlvblNpZGVi
YXJQYW5lbC5qcwpAQCAtNzA1LDcgKzcwNSw3IEBAIFdJLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwg
PSBjbGFzcyBOYXZpZ2F0aW9uU2lkZWJhclBhbmVsIGV4dGVuZHMgV0kuU2lkZWJhclBhbmVsCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgICAgICBpZiAobWF0Y2hUeXBl
T25seSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICByZXR1
cm4gISF0eXBlSWRlbnRpZmllcjsKIAogICAgICAgICAgICAgdmFyIGNhbmRpZGF0ZU9iamVjdENv
b2tpZSA9IHt9OwogICAgICAgICAgICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0LnNhdmVJZGVudGl0
eVRvQ29va2llKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvUmVzb3VyY2VDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlQ29udGVudFZpZXcuanMKaW5kZXggOTBlNjQ4YjVk
Y2IzZmZiY2I1YzU3NzllYTY5OWU1YzM5Y2ZkY2QwZi4uMTFmOTI4N2JiNTQxM2M2YWNiMjkzMDMw
NTAxMWRhNDhiNmVjZTlhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvUmVzb3VyY2VDb250ZW50Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZUNvbnRlbnRWaWV3LmpzCkBAIC0y
MDksOCArMjA5LDEyIEBAIFdJLlJlc291cmNlQ29udGVudFZpZXcgPSBjbGFzcyBSZXNvdXJjZUNv
bnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVudFZpZXcKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogCisgICAgICAgIC8vIFRoZSB2aWV3IG1heWJlIHBvcHVsYXRlZCB3aXRoIGlubGlu
ZSBzY3JpcHRzIGNvbnRlbnQgYnkgdGhlIHRpbWUgcmVzb3VyY2UKKyAgICAgICAgLy8gY29udGVu
dCBhcnJpdmVzLiBTb3VyY2VDb2RlVGV4dEVkaXRvciB3aWxsIGhhbmRsZSB0aGF0LgorICAgICAg
ICBpZiAodGhpcy5faGFzQ29udGVudCgpKQorICAgICAgICAgICAgcmV0dXJuOworCiAgICAgICAg
IC8vIENvbnRlbnQgaXMgcmVhZHkgdG8gc2hvdywgY2FsbCB0aGUgcHVibGljIG1ldGhvZCBub3cu
Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzLl9oYXNDb250ZW50KCkpOwogICAgICAgICBj
b25zb2xlLmFzc2VydChwYXJhbWV0ZXJzLnNvdXJjZUNvZGUgPT09IHRoaXMuX3Jlc291cmNlKTsK
ICAgICAgICAgdGhpcy5jb250ZW50QXZhaWxhYmxlKHBhcmFtZXRlcnMuc291cmNlQ29kZS5jb250
ZW50LCBwYXJhbWV0ZXJzLmJhc2U2NEVuY29kZWQpOwogCkBAIC0yOTAsNyArMjk0LDcgQEAgV0ku
UmVzb3VyY2VDb250ZW50VmlldyA9IGNsYXNzIFJlc291cmNlQ29udGVudFZpZXcgZXh0ZW5kcyBX
SS5Db250ZW50VmlldwogICAgICAgICAgICAgbGV0IGxvY2FsUmVzb3VyY2VPdmVycmlkZSA9IFdJ
Lm5ldHdvcmtNYW5hZ2VyLmxvY2FsUmVzb3VyY2VPdmVycmlkZUZvclVSTCh0aGlzLnJlc291cmNl
LnVybCk7CiAgICAgICAgICAgICBjb25zb2xlLmFzc2VydChsb2NhbFJlc291cmNlT3ZlcnJpZGUp
OwogCi0gICAgICAgICAgICBsZXQgcmV2aXNpb24gPSBsb2NhbFJlc291cmNlT3ZlcnJpZGUubG9j
YWxSZXNvdXJjZS5jdXJyZW50UmV2aXNpb247CisgICAgICAgICAgICBsZXQgcmV2aXNpb24gPSBs
b2NhbFJlc291cmNlT3ZlcnJpZGUubG9jYWxSZXNvdXJjZS5lZGl0YWJsZVJldmlzaW9uOwogICAg
ICAgICAgICAgYXdhaXQgdGhpcy5fZ2V0Q29udGVudEZvckxvY2FsUmVzb3VyY2VPdmVycmlkZUZy
b21GaWxlKGZpbGVMaXN0WzBdLCAoe21pbWVUeXBlLCBiYXNlNjRFbmNvZGVkLCBjb250ZW50fSkg
PT4gewogICAgICAgICAgICAgICAgIHJldmlzaW9uLnVwZGF0ZVJldmlzaW9uQ29udGVudChjb250
ZW50LCB7YmFzZTY0RW5jb2RlZCwgbWltZVR5cGV9KTsKICAgICAgICAgICAgIH0pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2NyaXB0Q29u
dGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9T
Y3JpcHRDb250ZW50Vmlldy5qcwppbmRleCBkZmM1NTFhYzdmZTRmNjc4NjEzMjkzN2Q1ZjhjZWQ3
ODg5N2Q4OGQ4Li5jZDM1MDFmODc2M2QxM2M2YmNkYTE1ZjdjZGExYzczNTE2YTJhMWUwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TY3JpcHRD
b250ZW50Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9TY3JpcHRDb250ZW50Vmlldy5qcwpAQCAtMjM2LDcgKzIzNiw3IEBAIFdJLlNjcmlwdENv
bnRlbnRWaWV3ID0gY2xhc3MgU2NyaXB0Q29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50Vmll
dwogCiAgICAgX2hhbmRsZVRleHRFZGl0b3JDb250ZW50RGlkQ2hhbmdlKGV2ZW50KQogICAgIHsK
LSAgICAgICAgdGhpcy5fc2NyaXB0LmN1cnJlbnRSZXZpc2lvbi51cGRhdGVSZXZpc2lvbkNvbnRl
bnQodGhpcy5fdGV4dEVkaXRvci5zdHJpbmcpOworICAgICAgICB0aGlzLl9zY3JpcHQuZWRpdGFi
bGVSZXZpc2lvbi51cGRhdGVSZXZpc2lvbkNvbnRlbnQodGhpcy5fdGV4dEVkaXRvci5zdHJpbmcp
OwogICAgIH0KIAogICAgIF90b2dnbGVQcmV0dHlQcmludChldmVudCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RleHRSZXNvdXJjZUNvbnRl
bnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGV4
dFJlc291cmNlQ29udGVudFZpZXcuanMKaW5kZXggZTliMDUyOWRiMmZhZTNjYmFiYWIxZWNmM2Q2
MDY5MzNjMzdkZmQ1MS4uOWFkOGRkMzkxMDMwMTVkMzhhY2IzYzQwNWRlNmE3ZWMxNDk0ZWI1ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGV4
dFJlc291cmNlQ29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvVGV4dFJlc291cmNlQ29udGVudFZpZXcuanMKQEAgLTI4OSw3ICsyODks
NyBAQCBXSS5UZXh0UmVzb3VyY2VDb250ZW50VmlldyA9IGNsYXNzIFRleHRSZXNvdXJjZUNvbnRl
bnRWaWV3IGV4dGVuZHMgV0kuUmVzb3VyY2VDbwogICAgIF90ZXh0RWRpdG9yQ29udGVudERpZENo
YW5nZShldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMuX2lnbm9yZVNvdXJjZUNvZGVDb250ZW50
RGlkQ2hhbmdlRXZlbnQgPSB0cnVlOwotICAgICAgICB0aGlzLnJlc291cmNlLmN1cnJlbnRSZXZp
c2lvbi51cGRhdGVSZXZpc2lvbkNvbnRlbnQodGhpcy5fdGV4dEVkaXRvci5zdHJpbmcpOworICAg
ICAgICB0aGlzLnJlc291cmNlLmVkaXRhYmxlUmV2aXNpb24udXBkYXRlUmV2aXNpb25Db250ZW50
KHRoaXMuX3RleHRFZGl0b3Iuc3RyaW5nKTsKICAgICAgICAgdGhpcy5faWdub3JlU291cmNlQ29k
ZUNvbnRlbnREaWRDaGFuZ2VFdmVudCA9IGZhbHNlOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yVGFyZ2V0UHJveHkuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yVGFyZ2V0UHJveHkuY3BwCmluZGV4IDFiMzdjMWVkNDM5
NWExN2M1ODNiYTJkNzg2MjE5YzkwYzc0NDAxNmUuLjg1MDk5MzkyZDNhZDBmMTJjZTg5MGI0Mjdl
YTQ3ZjYxZGRiZTI2N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3Bl
Y3RvclRhcmdldFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0
b3JUYXJnZXRQcm94eS5jcHAKQEAgLTc2LDYgKzc2LDkgQEAgdm9pZCBJbnNwZWN0b3JUYXJnZXRQ
cm94eTo6ZGlzY29ubmVjdCgpCiAKICAgICBpZiAobV9wYWdlLmhhc1J1bm5pbmdQcm9jZXNzKCkp
CiAgICAgICAgIG1fcGFnZS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlzY29u
bmVjdEluc3BlY3RvcihpZGVudGlmaWVyKCkpLCBtX3BhZ2Uud2ViUGFnZUlEKCkpOworCisgICAg
aWYgKGlzUGF1c2VkT25TdGFydCgpKQorICAgICAgICBzZXRQYXVzZWRPblN0YXJ0KGZhbHNlKTsK
IH0KIAogdm9pZCBJbnNwZWN0b3JUYXJnZXRQcm94eTo6c2VuZE1lc3NhZ2VUb1RhcmdldEJhY2tl
bmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQpAQCAtMTAwLDQgKzEwMywxMSBAQCBib29sIEluc3Bl
Y3RvclRhcmdldFByb3h5Ojppc1Byb3Zpc2lvbmFsKCkgY29uc3QKICAgICByZXR1cm4gISFtX3By
b3Zpc2lvbmFsUGFnZTsKIH0KIAordm9pZCBJbnNwZWN0b3JUYXJnZXRQcm94eTo6cmVzdW1lVGFy
Z2V0KCkKK3sKKyAgICBpZiAoIW1fcHJvdmlzaW9uYWxQYWdlKQorICAgICAgICByZXR1cm47Cisg
ICAgbV9wcm92aXNpb25hbFBhZ2UtPnJlc3VtZUxvYWRpbmcoKTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3JU
YXJnZXRQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yVGFyZ2V0UHJv
eHkuaAppbmRleCBhMjIzOWNlYzhlMTg4NTBmMzVmN2Y4OGE5YzRlYmFkYzYyYmY0MDIzLi4xZDcy
NWIzZTNlY2VhOGEyNDE2YTFhMzA1NjM3MjcyOTE5MzAxZjJhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3JUYXJnZXRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0luc3BlY3RvclRhcmdldFByb3h5LmgKQEAgLTU3LDYgKzU3LDggQEAgcHVi
bGljOgogICAgIHZvaWQgc2VuZE1lc3NhZ2VUb1RhcmdldEJhY2tlbmQoY29uc3QgU3RyaW5nJikg
b3ZlcnJpZGU7CiAKIHByaXZhdGU6CisgICAgdm9pZCByZXN1bWVUYXJnZXQoKSBvdmVycmlkZTsK
KwogICAgIFdlYlBhZ2VQcm94eSYgbV9wYWdlOwogICAgIFN0cmluZyBtX2lkZW50aWZpZXI7CiAg
ICAgSW5zcGVjdG9yOjpJbnNwZWN0b3JUYXJnZXRUeXBlIG1fdHlwZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcAppbmRleCA2MmY1ODE1NDc1
ODY1OGFlMjUzZmMyMDE5OWY3MTVlYzA5YjFkOWRkLi5mOTA2ZTYxZTA3ZWRiNGI2ZDhjZTMwNjc4
NjNmZTgwYWYwZTRmZWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92
aXNpb25hbFBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlz
aW9uYWxQYWdlUHJveHkuY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIFByb3Zpc2lvbmFsUGFnZVByb3h5
OjpQcm92aXNpb25hbFBhZ2VQcm94eShXZWJQYWdlUHJveHkmIHBhZ2UsIFJlZjxXZWJQcm9jZXNz
UHJvCiAKICAgICBpbml0aWFsaXplV2ViUGFnZSgpOwogCi0gICAgbV9wYWdlLmluc3BlY3RvckNv
bnRyb2xsZXIoKS5kaWRDcmVhdGVQcm92aXNpb25hbFBhZ2UoKnRoaXMpOworICAgIG1fbG9hZGlu
Z1BhdXNlZCA9IG1fcGFnZS5pbnNwZWN0b3JDb250cm9sbGVyKCkuZGlkQ3JlYXRlUHJvdmlzaW9u
YWxQYWdlKCp0aGlzKSA9PSBXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlcjo6UGF1c2VMb2FkaW5n
OjpZZXM7CiB9CiAKIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojp+UHJvdmlzaW9uYWxQYWdlUHJveHko
KQpAQCAtMTE3LDYgKzExNywyMCBAQCBzdGQ6OnVuaXF1ZV9wdHI8RHJhd2luZ0FyZWFQcm94eT4g
UHJvdmlzaW9uYWxQYWdlUHJveHk6OnRha2VEcmF3aW5nQXJlYSgpCiAgICAgcmV0dXJuIFdURk1v
dmUobV9kcmF3aW5nQXJlYSk7CiB9CiAKK3ZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OnJlc3Vt
ZUxvYWRpbmcoKQoreworICAgIGlmIChtX3Jlc3VtZUNhbGxiYWNrKSB7CisgICAgICAgIG1fcmVz
dW1lQ2FsbGJhY2soZmFsc2UpOworICAgICAgICBtX3Jlc3VtZUNhbGxiYWNrID0gbnVsbHB0cjsK
KyAgICB9CisgICAgbV9sb2FkaW5nUGF1c2VkID0gZmFsc2U7Cit9CisKK3ZvaWQgUHJvdmlzaW9u
YWxQYWdlUHJveHk6OnJ1bldoZW5Mb2FkaW5nUmVzdW1lZChXVEY6OkZ1bmN0aW9uPHZvaWQoYm9v
bCk+JiYgY2FsbGJhY2spCit7CisgICAgbV9yZXN1bWVDYWxsYmFjayA9IFdURk1vdmUoY2FsbGJh
Y2spOworfQorCiB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpjYW5jZWwoKQogewogICAgIC8v
IElmIHRoZSBwcm92aXNpb25hbCBsb2FkIHN0YXJ0ZWQsIHRoZW4gaW5kaWNhdGUgdGhhdCBpdCBm
YWlsZWQgZHVlIHRvIGNhbmNlbGxhdGlvbiBieSBjYWxsaW5nIGRpZEZhaWxQcm92aXNpb25hbExv
YWRGb3JGcmFtZSgpLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlz
aW9uYWxQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFn
ZVByb3h5LmgKaW5kZXggN2RiY2VmOWQxZDU1MzVhODM1NGQ3YmFlMGM2MDExYTBhNTFiOTEzNy4u
ZmU3YjUxMDQ5MjBhZGNlN2Q5NThmODk4MTJhMTViZjYzM2Y5Y2FhZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oCkBAIC05MCw2ICs5MCwxMCBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIHByb2Nlc3NEaWRUZXJtaW5hdGUoKTsKIAorICAgIHZvaWQg
cmVzdW1lTG9hZGluZygpOworICAgIGJvb2wgc2hvdWxkUGF1c2VMb2FkaW5nKCkgY29uc3QgeyBy
ZXR1cm4gbV9sb2FkaW5nUGF1c2VkOyB9CisgICAgdm9pZCBydW5XaGVuTG9hZGluZ1Jlc3VtZWQo
V1RGOjpGdW5jdGlvbjx2b2lkKGJvb2wpPiYmKTsKKwogcHJpdmF0ZToKICAgICAvLyBJUEM6Ok1l
c3NhZ2VSZWNlaXZlcgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CkBAIC0xMzgsNiArMTQyLDggQEAgcHJpdmF0ZToKICAg
ICBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50IG1fcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNs
aWVudDsKICAgICBib29sIG1fd2FzQ29tbWl0dGVkIHsgZmFsc2UgfTsKICAgICBVUkwgbV9wcm92
aXNpb25hbExvYWRVUkw7CisgICAgV1RGOjpGdW5jdGlvbjx2b2lkKGJvb2wpPiBtX3Jlc3VtZUNh
bGxiYWNrOworICAgIGJvb2wgbV9sb2FkaW5nUGF1c2VkIHsgZmFsc2UgfTsKIAogI2lmIFBMQVRG
T1JNKENPQ09BKQogICAgIFZlY3Rvcjx1aW50OF90PiBtX2FjY2Vzc2liaWxpdHlUb2tlbjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VJbnNwZWN0b3JDb250cm9s
bGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VJbnNwZWN0b3JDb250cm9s
bGVyLmNwcAppbmRleCBiOWE5NDY5YWI1OTEzNmY5ZTlhMzczNmJmZGIwZTlkNTI5YzBmYmNlLi42
MmFhZjk1NjIzNzkzYjAzMTc3NTA4ZmUyOThjZTAxYWVhZGU5MmMxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBA
IC0xNjcsOSArMTY3LDEyIEBAIHZvaWQgV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXI6OnNlbmRN
ZXNzYWdlVG9JbnNwZWN0b3JGcm9udGVuZChjb25zdCBTdHJpbmcmIHRhCiAgICAgbV90YXJnZXRB
Z2VudC0+c2VuZE1lc3NhZ2VGcm9tVGFyZ2V0VG9Gcm9udGVuZCh0YXJnZXRJZCwgbWVzc2FnZSk7
CiB9CiAKLXZvaWQgV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXI6OmRpZENyZWF0ZVByb3Zpc2lv
bmFsUGFnZShQcm92aXNpb25hbFBhZ2VQcm94eSYgcHJvdmlzaW9uYWxQYWdlKQorV2ViUGFnZUlu
c3BlY3RvckNvbnRyb2xsZXI6OlBhdXNlTG9hZGluZyBXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxl
cjo6ZGlkQ3JlYXRlUHJvdmlzaW9uYWxQYWdlKFByb3Zpc2lvbmFsUGFnZVByb3h5JiBwcm92aXNp
b25hbFBhZ2UpCiB7Ci0gICAgYWRkVGFyZ2V0KEluc3BlY3RvclRhcmdldFByb3h5OjpjcmVhdGUo
cHJvdmlzaW9uYWxQYWdlLCBnZXRUYXJnZXRJRChwcm92aXNpb25hbFBhZ2UpLCBJbnNwZWN0b3I6
Okluc3BlY3RvclRhcmdldFR5cGU6OlBhZ2UpKTsKKyAgICBhdXRvIHRhcmdldCA9IEluc3BlY3Rv
clRhcmdldFByb3h5OjpjcmVhdGUocHJvdmlzaW9uYWxQYWdlLCBnZXRUYXJnZXRJRChwcm92aXNp
b25hbFBhZ2UpLCBJbnNwZWN0b3I6Okluc3BlY3RvclRhcmdldFR5cGU6OlBhZ2UpOworICAgIElu
c3BlY3RvclRhcmdldCogdGFyZ2V0UHRyID0gdGFyZ2V0LmdldCgpOworICAgIGFkZFRhcmdldChX
VEZNb3ZlKHRhcmdldCkpOworICAgIHJldHVybiB0YXJnZXRQdHItPmlzUGF1c2VkT25TdGFydCgp
ID8gV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXI6OlBhdXNlTG9hZGluZzo6WWVzIDogV2ViUGFn
ZUluc3BlY3RvckNvbnRyb2xsZXI6OlBhdXNlTG9hZGluZzo6Tm87CiB9CiAKIHZvaWQgV2ViUGFn
ZUluc3BlY3RvckNvbnRyb2xsZXI6OndpbGxEZXN0cm95UHJvdmlzaW9uYWxQYWdlKGNvbnN0IFBy
b3Zpc2lvbmFsUGFnZVByb3h5JiBwcm92aXNpb25hbFBhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlci5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIuaAppbmRleCA4MjhiYzNj
Y2M3ZTA3ZDgxMjAzMzQzMWIyN2FlN2YwYmM4Y2Y5YzU0Li4zZWQyZTFiYzZmOTM2ODNmN2MzNjBl
M2RmMGQ3NzE4ZjAxMjUyYmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyLmgKQEAgLTY2LDcgKzY2LDggQEAgcHVibGljOgog
ICAgIHZvaWQgZGVzdHJveUluc3BlY3RvclRhcmdldChjb25zdCBTdHJpbmcmIHRhcmdldElkKTsK
ICAgICB2b2lkIHNlbmRNZXNzYWdlVG9JbnNwZWN0b3JGcm9udGVuZChjb25zdCBTdHJpbmcmIHRh
cmdldElkLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwogCi0gICAgdm9pZCBkaWRDcmVhdGVQcm92
aXNpb25hbFBhZ2UoUHJvdmlzaW9uYWxQYWdlUHJveHkmKTsKKyAgICBlbnVtIGNsYXNzIFBhdXNl
TG9hZGluZyB7IE5vLCBZZXMgfTsKKyAgICBQYXVzZUxvYWRpbmcgZGlkQ3JlYXRlUHJvdmlzaW9u
YWxQYWdlKFByb3Zpc2lvbmFsUGFnZVByb3h5Jik7CiAgICAgdm9pZCB3aWxsRGVzdHJveVByb3Zp
c2lvbmFsUGFnZShjb25zdCBQcm92aXNpb25hbFBhZ2VQcm94eSYpOwogICAgIHZvaWQgZGlkQ29t
bWl0UHJvdmlzaW9uYWxQYWdlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG9sZFdlYlBhZ2VJRCwg
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbmV3V2ViUGFnZUlEKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggZmQ5ZDM1NDdlZmNmMTk3YTQ1YmU3Mjg5NTM3
MTBiNDgxZjhkNTljOS4uNzA1MTQwMGRiMmUyNGQ2ZDE4ZGI4MzIwZWFhMjhlNTI1YWJmNzNkMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0zMDgyLDI4ICsz
MDgyLDM0IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpjb250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nl
c3MoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBzCiAKICAgICBtX3Byb3Zpc2lvbmFsUGFn
ZSA9IG1ha2VVbmlxdWU8UHJvdmlzaW9uYWxQYWdlUHJveHk+KCp0aGlzLCBuZXdQcm9jZXNzLmNv
cHlSZWYoKSwgV1RGTW92ZShzdXNwZW5kZWRQYWdlKSwgbmF2aWdhdGlvbi5uYXZpZ2F0aW9uSUQo
KSwgbmF2aWdhdGlvbi5jdXJyZW50UmVxdWVzdElzUmVkaXJlY3QoKSwgbmF2aWdhdGlvbi5jdXJy
ZW50UmVxdWVzdCgpLCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50KTsKIAotICAgIGlmIChh
dXRvKiBpdGVtID0gbmF2aWdhdGlvbi50YXJnZXRJdGVtKCkpIHsKLSAgICAgICAgTE9HKExvYWRp
bmcsICJXZWJQYWdlUHJveHkgJXAgY29udGludWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNzIHRvIGJh
Y2sgaXRlbSBVUkwgJXMiLCB0aGlzLCBpdGVtLT51cmwoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBh
dXRvIGNvbnRpbnVhdGlvbiA9IFt0aGlzLCBuYXZpZ2F0aW9uID0gbWFrZVJlZihuYXZpZ2F0aW9u
KSwgbmV3UHJvY2VzcyA9IFdURk1vdmUobmV3UHJvY2VzcyksIHdlYnNpdGVQb2xpY2llcyA9IFdU
Rk1vdmUod2Vic2l0ZVBvbGljaWVzKV0oYm9vbCBpc0NhbmNlbGxlZCkgbXV0YWJsZSB7CisgICAg
ICAgIGlmIChhdXRvKiBpdGVtID0gbmF2aWdhdGlvbi0+dGFyZ2V0SXRlbSgpKSB7CisgICAgICAg
ICAgICBMT0coTG9hZGluZywgIldlYlBhZ2VQcm94eSAlcCBjb250aW51ZU5hdmlnYXRpb25Jbk5l
d1Byb2Nlc3MgdG8gYmFjayBpdGVtIFVSTCAlcyIsIHRoaXMsIGl0ZW0tPnVybCgpLnV0ZjgoKS5k
YXRhKCkpOwogCi0gICAgICAgIGF1dG8gdHJhbnNhY3Rpb24gPSBtX3BhZ2VMb2FkU3RhdGUudHJh
bnNhY3Rpb24oKTsKLSAgICAgICAgbV9wYWdlTG9hZFN0YXRlLnNldFBlbmRpbmdBUElSZXF1ZXN0
KHRyYW5zYWN0aW9uLCB7IG5hdmlnYXRpb24ubmF2aWdhdGlvbklEKCksIGl0ZW0tPnVybCgpIH0p
OworICAgICAgICAgICAgYXV0byB0cmFuc2FjdGlvbiA9IG1fcGFnZUxvYWRTdGF0ZS50cmFuc2Fj
dGlvbigpOworICAgICAgICAgICAgbV9wYWdlTG9hZFN0YXRlLnNldFBlbmRpbmdBUElSZXF1ZXN0
KHRyYW5zYWN0aW9uLCB7IG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgpLCBpdGVtLT51cmwoKSB9
KTsKIAotICAgICAgICBtX3Byb3Zpc2lvbmFsUGFnZS0+Z29Ub0JhY2tGb3J3YXJkSXRlbShuYXZp
Z2F0aW9uLCAqaXRlbSwgV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMpKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KKyAgICAgICAgICAgIG1fcHJvdmlzaW9uYWxQYWdlLT5nb1RvQmFja0ZvcndhcmRJ
dGVtKG5hdmlnYXRpb24sICppdGVtLCBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llcykpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CiAKLSAgICBpZiAobV9iYWNrRm9yd2FyZExpc3QtPmN1
cnJlbnRJdGVtKCkgJiYgKG5hdmlnYXRpb24ubG9ja0JhY2tGb3J3YXJkTGlzdCgpID09IExvY2tC
YWNrRm9yd2FyZExpc3Q6OlllcyB8fCBuYXZpZ2F0aW9uLmxvY2tIaXN0b3J5KCkgPT0gTG9ja0hp
c3Rvcnk6OlllcykpIHsKLSAgICAgICAgLy8gSWYgV2ViQ29yZSBpcyBzdXBwb3NlZCB0byBsb2Nr
IHRoZSBoaXN0b3J5IGZvciB0aGlzIGxvYWQsIHRoZW4gdGhlIG5ldyBwcm9jZXNzIG5lZWRzIHRv
IGtub3cgYWJvdXQgdGhlIGN1cnJlbnQgaGlzdG9yeSBpdGVtIHNvIGl0IGNhbiB1cGRhdGUKLSAg
ICAgICAgLy8gaXQgaW5zdGVhZCBvZiBjcmVhdGluZyBhIG5ldyBvbmUuCi0gICAgICAgIG5ld1By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEN1cnJlbnRIaXN0b3J5SXRlbUZvclJl
YXR0YWNoKG1fYmFja0ZvcndhcmRMaXN0LT5jdXJyZW50SXRlbSgpLT5pdGVtU3RhdGUoKSksIG1f
cHJvdmlzaW9uYWxQYWdlLT53ZWJQYWdlSUQoKSk7Ci0gICAgfQorICAgICAgICBpZiAobV9iYWNr
Rm9yd2FyZExpc3QtPmN1cnJlbnRJdGVtKCkgJiYgKG5hdmlnYXRpb24tPmxvY2tCYWNrRm9yd2Fy
ZExpc3QoKSA9PSBMb2NrQmFja0ZvcndhcmRMaXN0OjpZZXMgfHwgbmF2aWdhdGlvbi0+bG9ja0hp
c3RvcnkoKSA9PSBMb2NrSGlzdG9yeTo6WWVzKSkgeworICAgICAgICAgICAgLy8gSWYgV2ViQ29y
ZSBpcyBzdXBwb3NlZCB0byBsb2NrIHRoZSBoaXN0b3J5IGZvciB0aGlzIGxvYWQsIHRoZW4gdGhl
IG5ldyBwcm9jZXNzIG5lZWRzIHRvIGtub3cgYWJvdXQgdGhlIGN1cnJlbnQgaGlzdG9yeSBpdGVt
IHNvIGl0IGNhbiB1cGRhdGUKKyAgICAgICAgICAgIC8vIGl0IGluc3RlYWQgb2YgY3JlYXRpbmcg
YSBuZXcgb25lLgorICAgICAgICAgICAgbmV3UHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6U2V0Q3VycmVudEhpc3RvcnlJdGVtRm9yUmVhdHRhY2gobV9iYWNrRm9yd2FyZExpc3QtPmN1
cnJlbnRJdGVtKCktPml0ZW1TdGF0ZSgpKSwgbV9wcm92aXNpb25hbFBhZ2UtPndlYlBhZ2VJRCgp
KTsKKyAgICAgICAgfQogCi0gICAgLy8gRklYTUU6IFdvcmsgb3V0IHRpbWluZyBvZiByZXNwb25k
aW5nIHdpdGggdGhlIGxhc3QgcG9saWN5IGRlbGVnYXRlLCBldGMKLSAgICBBU1NFUlQoIW5hdmln
YXRpb24uY3VycmVudFJlcXVlc3QoKS5pc0VtcHR5KCkpOwotICAgIGlmIChhdXRvJiBzdWJzdGl0
dXRlRGF0YSA9IG5hdmlnYXRpb24uc3Vic3RpdHV0ZURhdGEoKSkKLSAgICAgICAgbV9wcm92aXNp
b25hbFBhZ2UtPmxvYWREYXRhKG5hdmlnYXRpb24sIHsgc3Vic3RpdHV0ZURhdGEtPmNvbnRlbnQu
ZGF0YSgpLCBzdWJzdGl0dXRlRGF0YS0+Y29udGVudC5zaXplKCkgfSwgc3Vic3RpdHV0ZURhdGEt
Pk1JTUVUeXBlLCBzdWJzdGl0dXRlRGF0YS0+ZW5jb2RpbmcsIHN1YnN0aXR1dGVEYXRhLT5iYXNl
VVJMLCBzdWJzdGl0dXRlRGF0YS0+dXNlckRhdGEuZ2V0KCksIFdURk1vdmUod2Vic2l0ZVBvbGlj
aWVzKSk7CisgICAgICAgIC8vIEZJWE1FOiBXb3JrIG91dCB0aW1pbmcgb2YgcmVzcG9uZGluZyB3
aXRoIHRoZSBsYXN0IHBvbGljeSBkZWxlZ2F0ZSwgZXRjCisgICAgICAgIEFTU0VSVCghbmF2aWdh
dGlvbi0+Y3VycmVudFJlcXVlc3QoKS5pc0VtcHR5KCkpOworICAgICAgICBpZiAoYXV0byYgc3Vi
c3RpdHV0ZURhdGEgPSBuYXZpZ2F0aW9uLT5zdWJzdGl0dXRlRGF0YSgpKQorICAgICAgICAgICAg
bV9wcm92aXNpb25hbFBhZ2UtPmxvYWREYXRhKG5hdmlnYXRpb24sIHsgc3Vic3RpdHV0ZURhdGEt
PmNvbnRlbnQuZGF0YSgpLCBzdWJzdGl0dXRlRGF0YS0+Y29udGVudC5zaXplKCkgfSwgc3Vic3Rp
dHV0ZURhdGEtPk1JTUVUeXBlLCBzdWJzdGl0dXRlRGF0YS0+ZW5jb2RpbmcsIHN1YnN0aXR1dGVE
YXRhLT5iYXNlVVJMLCBzdWJzdGl0dXRlRGF0YS0+dXNlckRhdGEuZ2V0KCksIFdURk1vdmUod2Vi
c2l0ZVBvbGljaWVzKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fcHJvdmlzaW9uYWxQ
YWdlLT5sb2FkUmVxdWVzdChuYXZpZ2F0aW9uLCBSZXNvdXJjZVJlcXVlc3QgeyBuYXZpZ2F0aW9u
LT5jdXJyZW50UmVxdWVzdCgpIH0sIFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xp
Y3k6OlNob3VsZEFsbG93RXh0ZXJuYWxTY2hlbWVzLCBudWxscHRyLCBXVEZNb3ZlKHdlYnNpdGVQ
b2xpY2llcykpOworICAgIH07CisgICAgaWYgKG1fcHJvdmlzaW9uYWxQYWdlLT5zaG91bGRQYXVz
ZUxvYWRpbmcoKSkKKyAgICAgICAgbV9wcm92aXNpb25hbFBhZ2UtPnJ1bldoZW5Mb2FkaW5nUmVz
dW1lZChXVEZNb3ZlKGNvbnRpbnVhdGlvbikpOwogICAgIGVsc2UKLSAgICAgICAgbV9wcm92aXNp
b25hbFBhZ2UtPmxvYWRSZXF1ZXN0KG5hdmlnYXRpb24sIFJlc291cmNlUmVxdWVzdCB7IG5hdmln
YXRpb24uY3VycmVudFJlcXVlc3QoKSB9LCBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxz
UG9saWN5OjpTaG91bGRBbGxvd0V4dGVybmFsU2NoZW1lcywgbnVsbHB0ciwgV1RGTW92ZSh3ZWJz
aXRlUG9saWNpZXMpKTsKKyAgICAgICAgY29udGludWF0aW9uKGZhbHNlKTsKIH0KIAogYm9vbCBX
ZWJQYWdlUHJveHk6OmlzUGFnZU9wZW5lZEJ5RE9NU2hvd2luZ0luaXRpYWxFbXB0eURvY3VtZW50
KCkgY29uc3QKQEAgLTkzNzMsNyArOTM3OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzcGVlY2hT
eW50aGVzaXNQYXVzZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhCiB2
b2lkIFdlYlBhZ2VQcm94eTo6c3BlZWNoU3ludGhlc2lzUmVzdW1lKENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBzcGVlY2hTeW50aGVzaXNEYXRh
KCkuc3BlYWtpbmdSZXN1bWVkQ29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKTsKLSAgICBzcGVlY2hTeW50aGVzaXNEYXRhKCkuc3ludGhlc2l6ZXItPnJlc3VtZSgp
OworICAgIHNwZWVjaFN5bnRoZXNpc0RhdGEoKS5zeW50aGVzaXplci0+cmVzdW1lTG9hZGluZygp
OwogfQogI2VuZGlmIC8vIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQogCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNjRkZjkw
YWNiMDAwMjhhMGIxMzNhODhmOTY4MDhlNDRiZTYyZDE0Yi4uNDcxNzY2ZDI0NWIzNzFjNmFhNzRl
NTQyNTUzZjkyNDIwOTgyNWQzMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisr
KyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE5LTExLTEzICBZ
dXJ5IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNw
ZWN0b3I6IGFsbG93IGluc3BlY3RvciB0byBwYXVzZSBwcm92aXNpb25hbCBwYWdlIGxvYWQgYW5k
IHJlc3RvcmUgaXRzIHN0YXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDQxNzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUZXN0IHRoYXQgcHJvdmlzaW9uYWwgbG9hZGluZyB3aGljaCBzdGFydHMgYmVm
b3JlIHByZXZpb3MgcHJvdmlzaW9uYWwgbG9hZGluZworICAgICAgICBjb21taXRzIHdpbGwgYmUg
Y29ycmVjdGx5IGhhbmRsZWQgYnkgdGhlIGluc2VwY3Rvci4KKworICAgICAgICBUZXN0IHRoYXQg
c2NyaXB0IGV4ZWN1dGlvbiB3aWxsIGJyZWFrIG9uIGRlYnVnZ2VyIHN0YXRlbWVudCBpbiBpbmxp
bmUgc2NyaXB0cyBpbgorICAgICAgICBjYXNlIG9mIGNyb3NzIG9yaWdpbiBuYXZpZ2F0aW9uIGFu
ZCBQU09OLgorCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvdGFyZ2V0L3BhdXNlLW9u
LWlubGluZS1kZWJ1Z2dlci1zdGF0ZW1lbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBodHRwL3Rlc3RzL2luc3BlY3Rvci90YXJnZXQvcGF1c2Utb24taW5saW5lLWRlYnVnZ2VyLXN0
YXRlbWVudC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci90YXJn
ZXQvcHJvdmlzaW9uYWwtbG9hZC1jYW5jZWxzLXByZXZpb3VzLWxvYWQtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci90YXJnZXQvcHJvdmlzaW9uYWwt
bG9hZC1jYW5jZWxzLXByZXZpb3VzLWxvYWQuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90
ZXN0cy9pbnNwZWN0b3IvdGFyZ2V0L3Jlc291cmNlcy9pbmxpbmUtZGVidWdnZXItc3RhdGVtZW50
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL3RhcmdldC90YXJn
ZXQtZXZlbnRzLWZvci1wcm92aXNpb25hbC1wYWdlLmh0bWw6CisKIDIwMTktMTEtMTIgIFJvYiBC
dWlzICA8cmJ1aXNAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnNraXAgc29tZSBmZXRjaCB0ZXN0
cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvdGFyZ2V0L3Bh
dXNlLW9uLWlubGluZS1kZWJ1Z2dlci1zdGF0ZW1lbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvdGFyZ2V0L3BhdXNlLW9uLWlubGluZS1kZWJ1Z2dlci1z
dGF0ZW1lbnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIyZjY2OGU0Zjk5NjU1Y2M1NTA3ODEx
Y2FiNGM2NDdiYjA5MzlkYWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luc3BlY3Rvci90YXJnZXQvcGF1c2Utb24taW5saW5lLWRlYnVnZ2VyLXN0YXRlbWVudC1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwyIEBACitBTEVSVDogUEFTUzogU2hvdWxkIHBhdXNlIG9u
IGRlYnVnZ2VyIHN0YXRlbWVudC4KK1Rlc3QgcGFnZSB1c2VkIHRvIGNoZWNrIHRoYXQgZXhlY3V0
aW9uIHdpbGwgYnJlYWsgb24gaW5saW5lICdkZWJ1Z2dlcicgc3RhdGVtZW50IGFmdGVyIGNyb3Nz
LW9yaWdpbiBuYXZpZ2F0aW9uLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9p
bnNwZWN0b3IvdGFyZ2V0L3BhdXNlLW9uLWlubGluZS1kZWJ1Z2dlci1zdGF0ZW1lbnQuaHRtbCBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3RhcmdldC9wYXVzZS1vbi1pbmxpbmUt
ZGVidWdnZXItc3RhdGVtZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTY5MzAwZGY1MzE2OTEzZDllMGY2
MDdjZTg3OTVkZjJhNDM2NGU2OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL3RhcmdldC9wYXVzZS1vbi1pbmxpbmUtZGVidWdnZXItc3RhdGVtZW50
Lmh0bWwKQEAgLTAsMCArMSw0MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
PG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9pbnNwZWN0
b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZnVuY3Rpb24gdGVzdCgpCit7CisgICAg
bGV0IHN1aXRlID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVBc3luY1N1aXRlKCJUYXJnZXQuUFNPTiIp
OworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiSW5saW5lRGVidWdn
ZXJTdGF0ZW1lbnQiLAorICAgICAgICBkZXNjcmlwdGlvbjogIkNoZWNrIHRoYXQgbmV3IHByb3Zp
c2lvbmFsIHBhZ2UgY2FuIGJlIHBhdXNlZCBiZWZvcmUgbmF2aWdhdGlvbi4iLAorICAgICAgICB0
ZXN0KHJlc29sdmUsIHJlamVjdCkgeworICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLmF3
YWl0RXZlbnQoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCkKKyAgICAgICAgICAgIC50
aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnBhc3MoYFNob3VsZCBw
YXVzZSBvbiBkZWJ1Z2dlciBzdGF0ZW1lbnQuYCk7CisKKyAgICAgICAgICAgICAgICAvLyBXYWl0
IGZvciBwYWdlIHJlbG9hZCBldmVudCB0byBhdm9pZCByYWNlIGJldHdlZW4gdGVzdCByZXN1bHRz
IGZsdXNoaW5nIGFuZCB0aGUgdGVzdCBjb21wbGV0aW9uLgorICAgICAgICAgICAgICAgIGxldCBw
YWdlTG9hZFByb21pc2UgPSBJbnNwZWN0b3JUZXN0LmF3YWl0RXZlbnQoRnJvbnRlbmRUZXN0SGFy
bmVzcy5FdmVudC5UZXN0UGFnZURpZExvYWQpOworICAgICAgICAgICAgICAgIC8vV0kubWFpblRh
cmdldC5EZWJ1Z2dlckFnZW50LgorICAgICAgICAgICAgICAgIFByb21pc2UucmVzb2x2ZSgpLnRo
ZW4oKCkgPT4geworICAgICAgICAgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIucmVzdW1l
KCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHBhZ2VMb2Fk
UHJvbWlzZTsKKyAgICAgICAgICAgIH0pCisgICAgICAgICAgICAudGhlbihyZXNvbHZlKTsKKwor
CisgICAgICAgICAgICBjb25zdCB1cmwgPSAiaHR0cDovL2xvY2FsaG9zdDo4MDAwL2luc3BlY3Rv
ci90YXJnZXQvcmVzb3VyY2VzL2lubGluZS1kZWJ1Z2dlci1zdGF0ZW1lbnQuaHRtbCI7CisgICAg
ICAgICAgICBXSS5tYWluVGFyZ2V0LlBhZ2VBZ2VudC5uYXZpZ2F0ZSh1cmwpOworICAgICAgICB9
CisgICAgfSk7CisKKyAgICBzdWl0ZS5ydW5UZXN0Q2FzZXNBbmRGaW5pc2goKTsKK30KKzwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHA+VGVzdCB0aGF0IGV4
ZWN1dGlvbiB3aWxsIGJyZWFrIG9uIGlubGluZSAnZGVidWdnZXInIHN0YXRlbWVudCBhZnRlciBj
cm9zcy1vcmlnaW4gbmF2aWdhdGlvbi4KKzwvcD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3RhcmdldC9wcm92aXNpb25hbC1s
b2FkLWNhbmNlbHMtcHJldmlvdXMtbG9hZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2luc3BlY3Rvci90YXJnZXQvcHJvdmlzaW9uYWwtbG9hZC1jYW5jZWxzLXByZXZpb3Vz
LWxvYWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdhYmQyOTg1ODU3YWE1OWY3ZGFhM2JlODdj
MDk5NGMyZjkzYmI4YWEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luc3BlY3Rvci90YXJnZXQvcHJvdmlzaW9uYWwtbG9hZC1jYW5jZWxzLXByZXZpb3VzLWxvYWQt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTcgQEAKK1Rlc3QgdGhhdCB0d28gY29uc2VxdXRpdmUg
Y3Jvc3MgZG9tYWluIG5hdmlnYXRpb24gcmVxdWVzdHMgd2lsbCByZXN1bHQgaW4gdHdvIHByb3Zp
c2lvbmFsIHRhcmdldHMgYmVpbmcgY3JlYXRlZCwgZmlyc3Qgb2Ygd2hpY2ggaXMgbGF0ZXIgZGVz
dHJveWVkIGFuZCB0aGUgc2Vjb25kIGlzIGNvbW1pdHRlZC4KKworCis9PSBSdW5uaW5nIHRlc3Qg
c3VpdGU6IFRhcmdldC5QU09OCistLSBSdW5uaW5nIHRlc3QgY2FzZTogUHJvdmlzaW9uYWxQYWdl
UGF1c2VkCitDdXJyZW50IHRhcmdldCBpcyAxLgorUEFTUzogU2hvdWxkIHJlY2VpdmUgdGFyZ2V0
Q3JlYXRlZCBldmVudCBmb3IgdGFyZ2V0IDIuCitQQVNTOiBUYXJnZXQgMiBzaG91bGQgYmUgcHJv
dmlzaW9uYWwuCitQQVNTOiBUYXJnZXQgMiBzaG91bGQgYmUgcGF1c2VkIG9uIHN0YXJ0LgorUEFT
UzogU2hvdWxkIHJlY2VpdmUgdGFyZ2V0RGVzdHJveWVkIGV2ZW50IGZvciB0YXJnZXQgMgorUEFT
UzogU2hvdWxkIHJlY2VpdmUgdGFyZ2V0Q3JlYXRlZCBldmVudCBmb3IgdGFyZ2V0IDMuCitQQVNT
OiBUYXJnZXQgMyBzaG91bGQgYmUgcHJvdmlzaW9uYWwuCitQQVNTOiBUYXJnZXQgMyBzaG91bGQg
YmUgcGF1c2VkIG9uIHN0YXJ0LgorUEFTUzogU2hvdWxkIHJlY2VpdmUgZGlkQ29tbWl0UHJvdmlz
aW9uYWxUYXJnZXQgZXZlbnQgMSA9PiAzLgorUEFTUzogU2hvdWxkIHJlY2VpdmUgdGFyZ2V0RGVz
dHJveWVkIGV2ZW50IGZvciB0YXJnZXQgMQorUEFTUzogU2hvdWxkIGhhdmUgc2VlbiAzIGRpZmZl
cmVudCB0YXJnZXRzLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci90YXJnZXQvcHJvdmlzaW9uYWwtbG9hZC1jYW5jZWxzLXByZXZpb3VzLWxvYWQuaHRtbCBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3RhcmdldC9wcm92aXNpb25hbC1sb2Fk
LWNhbmNlbHMtcHJldmlvdXMtbG9hZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVjMjBjZWM1YmRhMTU1NWIw
NTVkYjVhNzU2ZDM5MDBiZWZiNDQyY2UKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luc3BlY3Rvci90YXJnZXQvcHJvdmlzaW9uYWwtbG9hZC1jYW5jZWxzLXByZXZp
b3VzLWxvYWQuaHRtbApAQCAtMCwwICsxLDcyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2Vz
L2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitmdW5jdGlvbiB0ZXN0KCkK
K3sKKyAgICBsZXQgbGFzdEFzc2lnbmVkSWQgPSAwOworICAgIGxldCB0YXJnZXRUb0lkID0gbmV3
IE1hcDsKKyAgICBmdW5jdGlvbiBzdGFibGVUYXJnZXRJZCh0YXJnZXRJZCkKKyAgICB7CisgICAg
ICAgIGxldCBpZCA9IHRhcmdldFRvSWQuZ2V0KHRhcmdldElkKTsKKyAgICAgICAgaWYgKCFpZCkg
eworICAgICAgICAgICAgaWQgPSArK2xhc3RBc3NpZ25lZElkOworICAgICAgICAgICAgdGFyZ2V0
VG9JZC5zZXQodGFyZ2V0SWQsIGlkKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gaWQ7Cisg
ICAgfQorCisgICAgbGV0IHN1aXRlID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVBc3luY1N1aXRlKCJU
YXJnZXQuUFNPTiIpOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAi
UHJvdmlzaW9uYWxQYWdlUGF1c2VkIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJDaGVjayB0aGF0
IG5ldyBwcm92aXNpb25hbCBwYWdlIGNhbiBiZSBwYXVzZWQgYmVmb3JlIG5hdmlnYXRpb24uIiwK
KyAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRl
c3QubG9nKGBDdXJyZW50IHRhcmdldCBpcyAke3N0YWJsZVRhcmdldElkKFdJLm1haW5UYXJnZXQu
aWRlbnRpZmllcil9LmApOworCisgICAgICAgICAgICBXSS50YXJnZXRNYW5hZ2VyLmFkZEV2ZW50
TGlzdGVuZXIoV0kuVGFyZ2V0TWFuYWdlci5FdmVudC5UYXJnZXRDcmVhdGVkLCAoZXZlbnQpID0+
IHsKKyAgICAgICAgICAgICAgICBsZXQge3RhcmdldCwgaXNQYXVzZWRPblN0YXJ0fSA9IGV2ZW50
LmRhdGE7CisgICAgICAgICAgICAgICAgbGV0IHRhcmdldElkID0gc3RhYmxlVGFyZ2V0SWQodGFy
Z2V0LmlkZW50aWZpZXIpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QucGFzcyhgU2hv
dWxkIHJlY2VpdmUgdGFyZ2V0Q3JlYXRlZCBldmVudCBmb3IgdGFyZ2V0ICR7dGFyZ2V0SWR9LmAp
OworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VHJ1ZSh0YXJnZXQuaXNQcm92
aXNpb25hbCwgYFRhcmdldCAke3RhcmdldElkfSBzaG91bGQgYmUgcHJvdmlzaW9uYWwuYCk7Cisg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUcnVlKGlzUGF1c2VkT25TdGFydCwg
YFRhcmdldCAke3RhcmdldElkfSBzaG91bGQgYmUgcGF1c2VkIG9uIHN0YXJ0LmApOworICAgICAg
ICAgICAgfSk7CisKKyAgICAgICAgICAgIFdJLnRhcmdldE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5l
cihXSS5UYXJnZXRNYW5hZ2VyLkV2ZW50LkRpZENvbW1pdFByb3Zpc2lvbmFsVGFyZ2V0LCAoZXZl
bnQpID0+IHsKKyAgICAgICAgICAgICAgICBsZXQge3ByZXZpb3VzVGFyZ2V0SWQsIHRhcmdldH0g
PSBldmVudC5kYXRhOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QucGFzcyhgU2hvdWxk
IHJlY2VpdmUgZGlkQ29tbWl0UHJvdmlzaW9uYWxUYXJnZXQgZXZlbnQgJHtzdGFibGVUYXJnZXRJ
ZChwcmV2aW91c1RhcmdldElkKX0gPT4gJHtzdGFibGVUYXJnZXRJZCh0YXJnZXQuaWRlbnRpZmll
cil9LmApOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIFdJLnRhcmdldE1hbmFnZXIu
YWRkRXZlbnRMaXN0ZW5lcihXSS5UYXJnZXRNYW5hZ2VyLkV2ZW50LlRhcmdldERlc3Ryb3llZCwg
KGV2ZW50KSA9PnsKKyAgICAgICAgICAgICAgICBsZXQgdGFyZ2V0SWQgPSBzdGFibGVUYXJnZXRJ
ZChldmVudC5kYXRhLnRhcmdldElkKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnBh
c3MoYFNob3VsZCByZWNlaXZlIHRhcmdldERlc3Ryb3llZCBldmVudCBmb3IgdGFyZ2V0ICR7dGFy
Z2V0SWR9YCk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgLy8gV2FpdCBmb3IgcGFn
ZSByZWxvYWQgZXZlbnQgdG8gYXZvaWQgcmFjZSBiZXR3ZWVuIHRlc3QgcmVzdWx0cyBmbHVzaGlu
ZyBhbmQgdGhlIHRlc3QgY29tcGxldGlvbi4KKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXdh
aXRFdmVudChGcm9udGVuZFRlc3RIYXJuZXNzLkV2ZW50LlRlc3RQYWdlRGlkTG9hZCkKKyAgICAg
ICAgICAgIC50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVj
dEVxdWFsKGxhc3RBc3NpZ25lZElkLCAzLCBgU2hvdWxkIGhhdmUgc2VlbiAzIGRpZmZlcmVudCB0
YXJnZXRzLmApOworICAgICAgICAgICAgfSkKKyAgICAgICAgICAgIC50aGVuKHJlc29sdmUpOwor
CisgICAgICAgICAgICAvLyBTZW5kIHR3byBjb25zZXF1dGl2ZSBuYXZpZ2F0aW9uIHJlcXVlc3Rz
LiBUaGUgbGF0dGVyIHdpbGwgY2FuY2VsIHByb3Zpc2lvbmFsCisgICAgICAgICAgICAvLyBsb2Fk
IG9mIHRoZSBmb3JtZXIuCisgICAgICAgICAgICBjb25zdCB1cmwgPSAiaHR0cDovL2xvY2FsaG9z
dDo4MDAwL2luc3BlY3Rvci90YXJnZXQvcHJvdmlzaW9uYWwtbG9hZC1jYW5jZWxzLXByZXZpb3Vz
LWxvYWQuaHRtbCI7CisgICAgICAgICAgICBXSS5tYWluVGFyZ2V0LlBhZ2VBZ2VudC5uYXZpZ2F0
ZSh1cmwpOworICAgICAgICAgICAgV0kubWFpblRhcmdldC5QYWdlQWdlbnQubmF2aWdhdGUodXJs
KTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgc3VpdGUucnVuVGVzdENhc2VzQW5kRmluaXNo
KCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxw
PlRlc3QgdGhhdCB0d28gY29uc2VxdXRpdmUgY3Jvc3MgZG9tYWluIG5hdmlnYXRpb24gcmVxdWVz
dHMgd2lsbCByZXN1bHQgaW4gdHdvCitwcm92aXNpb25hbCB0YXJnZXRzIGJlaW5nIGNyZWF0ZWQs
IGZpcnN0IG9mIHdoaWNoIGlzIGxhdGVyIGRlc3Ryb3llZCBhbmQgdGhlIHNlY29uZAoraXMgY29t
bWl0dGVkLgorPC9wPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9pbnNwZWN0b3IvdGFyZ2V0L3Jlc291cmNlcy9pbmxpbmUtZGVidWdnZXItc3Rh
dGVtZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci90YXJnZXQvcmVz
b3VyY2VzL2lubGluZS1kZWJ1Z2dlci1zdGF0ZW1lbnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NjA4NGU0
ODJlMTI0NjI5Zjk2NDA3NjlkOGZlZWZlZTM2NzcxMGNmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvdGFyZ2V0L3Jlc291cmNlcy9pbmxpbmUtZGVi
dWdnZXItc3RhdGVtZW50Lmh0bWwKQEAgLTAsMCArMSwyMCBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitkZWJ1
Z2dlcjsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgSW5zcGVjdG9yVGVzdC5mYWlsKCJUaGlz
IGNvZGUgc2hvdWxkIG5ldmVyIGFjdHVhbGx5IHJ1bi4gSXQgaXMgaGVyZSBiZWNhc2UgaW5zcGVj
dG9yLXRlc3QuanMgaGFybmVzcyByZXF1aXJlcyBhIHRlc3QoKSBmdW5jdGlvbi4iKTsKK30KKzwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHA+VGVzdCBwYWdl
IHVzZWQgdG8gY2hlY2sgdGhhdCBleGVjdXRpb24gd2lsbCBicmVhayBvbiBpbmxpbmUgJ2RlYnVn
Z2VyJyBzdGF0ZW1lbnQgYWZ0ZXIgY3Jvc3Mtb3JpZ2luIG5hdmlnYXRpb24uCis8L3A+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rv
ci90YXJnZXQvdGFyZ2V0LWV2ZW50cy1mb3ItcHJvdmlzaW9uYWwtcGFnZS5odG1sIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvdGFyZ2V0L3RhcmdldC1ldmVudHMtZm9yLXByb3Zp
c2lvbmFsLXBhZ2UuaHRtbAppbmRleCBlNzM5NTEzOTM2NzQ0ZTU1NmVjMTEyYmRkNTJhYTFkOGU2
NDk0YTkxLi4wMmQ3ZGVlNTA4ZDU5MzY5NjY5NDYyZGMyOGVkNzJmOWU4MzRmMTM0IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci90YXJnZXQvdGFyZ2V0LWV2ZW50
cy1mb3ItcHJvdmlzaW9uYWwtcGFnZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL3RhcmdldC90YXJnZXQtZXZlbnRzLWZvci1wcm92aXNpb25hbC1wYWdlLmh0bWwK
QEAgLTEzLDIyICsxMywyMSBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgZGVzY3JpcHRpb246
ICJDaGVjayB0aGF0IGEgbmV3IHRhcmdldCB3aWxsIGJlIGNyZWF0ZWQgZm9yIHByb3Zpc2lvbmFs
IHBhZ2UuIiwKICAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKICAgICAgICAgICAgIGNv
bnN0IG1haW5UYXJnZXRJZCA9IFdJLm1haW5UYXJnZXQuaWRlbnRpZmllcjsKLSAgICAgICAgICAg
IGxldCBuZXdUYXJnZXRJZDsKKyAgICAgICAgICAgIGxldCBuZXdUYXJnZXQ7CiAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmFzc2VydChtYWluVGFyZ2V0SWQpOwogICAgICAgICAgICAgbGV0IHJl
bG9hZFByb21pc2UgPSBJbnNwZWN0b3JUZXN0LmF3YWl0RXZlbnQoRnJvbnRlbmRUZXN0SGFybmVz
cy5FdmVudC5UZXN0UGFnZURpZExvYWQpOwogCiAgICAgICAgICAgICBXSS50YXJnZXRNYW5hZ2Vy
LmFkZEV2ZW50TGlzdGVuZXIoV0kuVGFyZ2V0TWFuYWdlci5FdmVudC5UYXJnZXRDcmVhdGVkLCAo
ZXZlbnQpID0+IHsKLSAgICAgICAgICAgICAgICBsZXQge3RhcmdldEluZm99ID0gZXZlbnQuZGF0
YTsKLSAgICAgICAgICAgICAgICBuZXdUYXJnZXRJZCA9IHRhcmdldEluZm8udGFyZ2V0SWQ7Cisg
ICAgICAgICAgICAgICAgbmV3VGFyZ2V0ID0gZXZlbnQuZGF0YS50YXJnZXQ7CiAgICAgICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5wYXNzKGBTaG91bGQgcmVjZWl2ZSB0YXJnZXRDcmVhdGVkIGV2
ZW50LmApOwotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VHJ1ZSh0YXJnZXRJ
bmZvLmlzUHJvdmlzaW9uYWwsICJUYXJnZXQgc2hvdWxkIGJlIHByb3Zpc2lvbmFsLiIpOworICAg
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VHJ1ZShuZXdUYXJnZXQuaXNQcm92aXNp
b25hbCwgIlRhcmdldCBzaG91bGQgYmUgcHJvdmlzaW9uYWwuIik7CiAgICAgICAgICAgICB9KTsK
IAogICAgICAgICAgICAgV0kudGFyZ2V0TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLlRhcmdl
dE1hbmFnZXIuRXZlbnQuRGlkQ29tbWl0UHJvdmlzaW9uYWxUYXJnZXQsIChldmVudCkgPT4gewot
ICAgICAgICAgICAgICAgIGxldCB7cHJldmlvdXNUYXJnZXRJZCwgdGFyZ2V0SW5mb30gPSBldmVu
dC5kYXRhOworICAgICAgICAgICAgICAgIGxldCB7cHJldmlvdXNUYXJnZXRJZCwgdGFyZ2V0fSA9
IGV2ZW50LmRhdGE7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5wYXNzKGBTaG91bGQg
cmVjZWl2ZSBkaWRDb21taXRQcm92aXNpb25hbFRhcmdldCBldmVudC5gKTsKICAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHByZXZpb3VzVGFyZ2V0SWQsIG1haW5UYXJn
ZXRJZCwgIlByZXZpb3VzIHRhcmdldCBzaG91bGQgYmUgdGhlIGN1cnJlbnQgb25lLiIpOwotICAg
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwodGFyZ2V0SW5mby50YXJnZXRJ
ZCwgbmV3VGFyZ2V0SWQsICJDb21taXR0ZWQgdGFyZ2V0IHNob3VsZCBtYXRjaCBwcm92aXNpb25h
bCB0YXJnZXQuIik7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbCh0
YXJnZXQsIG5ld1RhcmdldCwgIkNvbW1pdHRlZCB0YXJnZXQgc2hvdWxkIG1hdGNoIHByb3Zpc2lv
bmFsIHRhcmdldC4iKTsKICAgICAgICAgICAgIH0pOwogCiAgICAgICAgICAgICBXSS50YXJnZXRN
YW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuVGFyZ2V0TWFuYWdlci5FdmVudC5UYXJnZXREZXN0
cm95ZWQsIChldmVudCkgPT57Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383491</attachid>
            <date>2019-11-13 13:43:44 -0800</date>
            <delta_ts>2019-11-21 17:26:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204170-20191113134343.patch</filename>
            <type>text/plain</type>
            <size>53679</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyMzY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
MWVjZjQ0MmU3YjA0ZGU1ZWQ3MWExMzBlNDk2NDAzZDhhZWJhYzkyLi4wNDZjOTdiZWUyMjY0Yzdj
OGRjNzI3Nzk0ODlhNGIzM2JhNjMyM2MzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNSBAQAorMjAxOS0xMS0xMyAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBhbGxvdyBpbnNwZWN0b3IgdG8gcGF1c2Ug
cHJvdmlzaW9uYWwgcGFnZSBsb2FkIGFuZCByZXN0b3JlIGl0cyBzdGF0ZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0MTcwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgYW4gb3B0aW9uIHRvIFRh
cmdldCBkb21haW4gdG8gcGF1c2UgYWxsIG5ldyB0YXJnZXRzIG9uIHN0YXJ0IHdhaXRpbmcgZm9y
CisgICAgICAgIGV4cGxpY2l0ICdyZXN1bWUnIGNvbW1hbmQgZnJvbSB0aGUgaW5zcGVjdG9yIGZy
b250LWVuZC4gVGhpcyBhbGxvd3MgdG8gY29uZmlndXJlCisgICAgICAgIGluc3BlY3RvciBiYWNr
ZW5kIChpbmNsdWRpbmcgdXNlciBhZ2VudCBvdmVycmlkZXMsIGJyZWFrcG9pbnRzIGFuZCBpbnN0
cnVtZW50YXRpb24pCisgICAgICAgIGJlZm9yZSBuYXZpZ2F0aW9uIHN0YXJ0cy4KKworICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JUYXJnZXQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvclRhcmdldEFnZW50LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVj
dG9yVGFyZ2V0QWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAg
KEluc3BlY3Rvcjo6SW5zcGVjdG9yVGFyZ2V0QWdlbnQ6OnNldFBhdXNlT25TdGFydCk6CisgICAg
ICAgIChJbnNwZWN0b3I6Okluc3BlY3RvclRhcmdldEFnZW50OjpyZXN1bWUpOgorICAgICAgICAo
SW5zcGVjdG9yOjpidWlsZFRhcmdldEluZm9PYmplY3QpOgorICAgICAgICAoSW5zcGVjdG9yOjpJ
bnNwZWN0b3JUYXJnZXRBZ2VudDo6dGFyZ2V0Q3JlYXRlZCk6CisgICAgICAgICogaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JUYXJnZXRBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9wcm90
b2NvbC9UYXJnZXQuanNvbjoKKwogMjAxOS0xMS0xMSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lA
YXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGZpeCBpbmNvcnJlY3QgYXNzZXJ0aW9u
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCAxNzczZjQ5YzRkMTlmNDA4NzdlYzFjMmRmZWFk
YWZjY2NiYWZkMjcwLi5mOGRhYjFiYjQ2ODExYWE1NzgwNDFkNjRhMzM0Y2YzNDIwOWE5OTNlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MyBAQAorMjAxOS0xMS0xMyAgWXVy
eSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBhbGxvdyBpbnNwZWN0b3IgdG8gcGF1c2UgcHJvdmlzaW9uYWwgcGFnZSBsb2FkIGFuZCBy
ZXN0b3JlIGl0cyBzdGF0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjA0MTcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWxsIG5ldyB0YXJnZXRzIGFyZSBub3cgYXV0b21hdGljYWxseSBwYXVzZWQgb24g
c3RhcnQuIEZvciBzdWNoIHByb3Zpc2lvbmFsIHRhcmdldHMgdGFyZ2V0CisgICAgICAgIG1hbmFn
ZXIgd2lsbCBydW4gcmVndWxhciBpbml0aWxpemF0aW9uIGNvZGUgKGVuYWJsZSBhZ2VudHMgZXRj
LikgYW5kIHRoZW4gcmVzdW1lIGxvYWRpbmcgb2YKKyAgICAgICAgdGhlIHRhcmdldC4gUmVzcG9u
c2VzIGFuZCBldmVudHMgZnJvbSB0aGUgdGFyZ2V0IGFyZSBkZWZmZXJyZWQgdW50aWwgdGhlIHRh
cmdldCBpcyBjb21taXR0ZWQKKyAgICAgICAgYW5kIGJlY29tZXMgY3VycmVudCBtYWluIHRhcmdl
dC4gV2hlbiB0aGUgdGFyZ2V0IG1hbmFnZXIgcmVjZWl2ZXMgZXZlbnQgdGhhdCB0aGUgcHJvdmlz
aW9uYWwKKyAgICAgICAgdGFyZ2V0IGhhcyBiZWVuIGNvbW1pdHRlZCBhbGwgYWNjdW11bGF0ZWQg
cHJvdG9jb2wgbWVzc2FnZXMgYXJlIHJlcGxheWVkIGFuZCBnb2luZyBmb3J3YXJkIGFsbAorICAg
ICAgICBuZXcgbWlzc2FnZXMgd2lsbCBiZSBkaXNwYXRjaGVkIGFzIHVzdWFsLgorCisgICAgICAg
ICogVXNlckludGVyZmFjZS9Db250cm9sbGVycy9DU1NNYW5hZ2VyLmpzOgorICAgICAgICAoV0ku
Q1NTTWFuYWdlci5wcm90b3R5cGUuX3Jlc291cmNlQ29udGVudERpZENoYW5nZS5hcHBseVN0eWxl
U2hlZXRDaGFuZ2VzLnN0eWxlU2hlZXRGb3VuZCk6CisgICAgICAgIChXSS5DU1NNYW5hZ2VyLnBy
b3RvdHlwZS5fcmVzb3VyY2VDb250ZW50RGlkQ2hhbmdlLmFwcGx5U3R5bGVTaGVldENoYW5nZXMp
OgorICAgICAgICAoV0kuQ1NTTWFuYWdlci5wcm90b3R5cGUuX3Jlc291cmNlQ29udGVudERpZENo
YW5nZSk6CisgICAgICAgIChXSS5DU1NNYW5hZ2VyLnByb3RvdHlwZS5fdXBkYXRlUmVzb3VyY2VD
b250ZW50LmZldGNoZWRTdHlsZVNoZWV0Q29udGVudCk6CisgICAgICAgICogVXNlckludGVyZmFj
ZS9Db250cm9sbGVycy9UYXJnZXRNYW5hZ2VyLmpzOgorICAgICAgICAoV0kuVGFyZ2V0TWFuYWdl
cik6CisgICAgICAgIChXSS5UYXJnZXRNYW5hZ2VyLnByb3RvdHlwZS5jcmVhdGVNdWx0aXBsZXhp
bmdCYWNrZW5kVGFyZ2V0KToKKyAgICAgICAgKFdJLlRhcmdldE1hbmFnZXIucHJvdG90eXBlLnRh
cmdldENyZWF0ZWQpOgorICAgICAgICAoV0kuVGFyZ2V0TWFuYWdlci5wcm90b3R5cGUuZGlkQ29t
bWl0UHJvdmlzaW9uYWxUYXJnZXQpOgorICAgICAgICAoV0kuVGFyZ2V0TWFuYWdlci5wcm90b3R5
cGUuZGlzcGF0Y2hNZXNzYWdlRnJvbVRhcmdldCk6CisgICAgICAgIChXSS5UYXJnZXRNYW5hZ2Vy
LnByb3RvdHlwZS5fY29ubmVjdFRvVGFyZ2V0KToKKyAgICAgICAgKFdJLlRhcmdldE1hbmFnZXIu
cHJvdG90eXBlLl9kZXN0cm95VGFyZ2V0KToKKyAgICAgICAgKFdJLlRhcmdldE1hbmFnZXIucHJv
dG90eXBlLl9jcmVhdGVUYXJnZXQpOgorICAgICAgICAoV0kuVGFyZ2V0TWFuYWdlci5wcm90b3R5
cGUuX2NoZWNrQW5kSGFuZGxlUGFnZVRhcmdldFRyYW5zaXRpb24pOgorICAgICAgICAoV0kuVGFy
Z2V0TWFuYWdlci5wcm90b3R5cGUuX2NoZWNrQW5kSGFuZGxlUGFnZVRhcmdldFRlcm1pbmF0aW9u
KToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01vZGVscy9Tb3VyY2VDb2RlLmpzOgorICAgICAg
ICAoV0kuU291cmNlQ29kZS5wcm90b3R5cGUuZ2V0IGN1cnJlbnRSZXZpc2lvbik6CisgICAgICAg
IChXSS5Tb3VyY2VDb2RlLnByb3RvdHlwZS5nZXQgZWRpdGFibGVSZXZpc2lvbik6CisgICAgICAg
IChXSS5Tb3VyY2VDb2RlLnByb3RvdHlwZS5nZXQgY29udGVudCk6CisgICAgICAgIChXSS5Tb3Vy
Y2VDb2RlLnByb3RvdHlwZS5yZXZpc2lvbkNvbnRlbnREaWRDaGFuZ2UpOgorICAgICAgICAqIFVz
ZXJJbnRlcmZhY2UvUHJvdG9jb2wvQ29ubmVjdGlvbi5qczoKKyAgICAgICAgKEluc3BlY3RvckJh
Y2tlbmQuQ29ubmVjdGlvbik6CisgICAgICAgIChJbnNwZWN0b3JCYWNrZW5kLkNvbm5lY3Rpb24u
cHJvdG90eXBlLmFkZFByb3Zpc2lvbmFsTWVzc2FnZSk6CisgICAgICAgIChJbnNwZWN0b3JCYWNr
ZW5kLkNvbm5lY3Rpb24ucHJvdG90eXBlLmRpc3BhdGNoUHJvdmlzaW9uYWxNZXNzYWdlcyk6Cisg
ICAgICAgICogVXNlckludGVyZmFjZS9Qcm90b2NvbC9QYWdlVGFyZ2V0LmpzOgorICAgICAgICAo
V0kuUGFnZVRhcmdldCk6CisgICAgICAgICogVXNlckludGVyZmFjZS9Qcm90b2NvbC9UYXJnZXQu
anM6CisgICAgICAgIChXSS5UYXJnZXQpOgorICAgICAgICAoV0kuVGFyZ2V0LnByb3RvdHlwZS5n
ZXQgaXNQcm92aXNpb25hbCk6CisgICAgICAgIChXSS5UYXJnZXQucHJvdG90eXBlLnNldCBpc1By
b3Zpc2lvbmFsKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0ZvbnRSZXNvdXJjZUNv
bnRlbnRWaWV3LmpzOgorICAgICAgICAoV0kuRm9udFJlc291cmNlQ29udGVudFZpZXcucHJvdG90
eXBlLmRyb3Bab25lSGFuZGxlRHJvcCk6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9J
bWFnZVJlc291cmNlQ29udGVudFZpZXcuanM6CisgICAgICAgIChXSS5JbWFnZVJlc291cmNlQ29u
dGVudFZpZXcucHJvdG90eXBlLmRyb3Bab25lSGFuZGxlRHJvcCk6CisgICAgICAgICogVXNlcklu
dGVyZmFjZS9WaWV3cy9OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLmpzOgorICAgICAgICAoV0kuTmF2
aWdhdGlvblNpZGViYXJQYW5lbC5wcm90b3R5cGUuX2NoZWNrRWxlbWVudHNGb3JQZW5kaW5nVmll
d1N0YXRlQ29va2llLnRyZWVFbGVtZW50TWF0Y2hlc0Nvb2tpZSk6CisgICAgICAgIChXSS5OYXZp
Z2F0aW9uU2lkZWJhclBhbmVsLnByb3RvdHlwZS5fY2hlY2tFbGVtZW50c0ZvclBlbmRpbmdWaWV3
U3RhdGVDb29raWUpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VDb250
ZW50Vmlldy5qczoKKyAgICAgICAgKFdJLlJlc291cmNlQ29udGVudFZpZXcucHJvdG90eXBlLl9j
b250ZW50QXZhaWxhYmxlKToKKyAgICAgICAgKFdJLlJlc291cmNlQ29udGVudFZpZXcucHJvdG90
eXBlLl9oYW5kbGVJbXBvcnRMb2NhbFJlc291cmNlT3ZlcnJpZGUpOgorICAgICAgICAqIFVzZXJJ
bnRlcmZhY2UvVmlld3MvU2NyaXB0Q29udGVudFZpZXcuanM6CisgICAgICAgIChXSS5TY3JpcHRD
b250ZW50Vmlldy5wcm90b3R5cGUuX2hhbmRsZVRleHRFZGl0b3JDb250ZW50RGlkQ2hhbmdlKToK
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1RleHRSZXNvdXJjZUNvbnRlbnRWaWV3Lmpz
OgorICAgICAgICAoV0kuVGV4dFJlc291cmNlQ29udGVudFZpZXcucHJvdG90eXBlLl90ZXh0RWRp
dG9yQ29udGVudERpZENoYW5nZSk6CisKIDIwMTktMTEtMDcgIERldmluIFJvdXNzbyAgPGRyb3Vz
c29AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFJFR1JFU1NJT04ocjI1MTk1
OCk6IGNvbnNvbGUgcHJvbXB0IGlzIGF1dG9tYXRpY2FsbHkgZm9jdXNlZCB3aGVuIHBhZ2UgaXMg
cmVsb2FkZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKaW5kZXggMDQ0YTUwMjJjM2ViZGE0ZDQ2NmY2MjM2YzQ3ZWI1NGIzZTZm
ZmE5MS4uYTVlZTc2NWRkMzJiZDNmMWIwMTc0YjkyMDdlMzQzYzk2NWFmOTRjMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwzNSBAQAorMjAxOS0xMS0xMyAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlzQGNo
cm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBhbGxvdyBpbnNwZWN0b3IgdG8g
cGF1c2UgcHJvdmlzaW9uYWwgcGFnZSBsb2FkIGFuZCByZXN0b3JlIGl0cyBzdGF0ZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0MTcwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUHJvdmlzaW9uYWwgcGFn
ZSBsb2FkaW5nIGNhbiBiZSBkZWZmZXJlZCBpZiBpbnNwZWN0b3IgZnJvbnQtZW5kIGlzIGNvbm5l
Y3RlZC4gVGhpcworICAgICAgICBhbGxvd3MgdG8gY29uZmlndXJlIGluc3BlY3RvciBiYWNrZW5k
IGluIHRoZSBwcm92aXNpb25hbCBwYWdlIGJlZm9yZSBsb2FkIHJlcXVlc3QKKyAgICAgICAgaXMg
c2VudC4gSWYgaW5zcGVjdG9yIGZyb250LWVuZCBpcyBub3QgY29ubmVjdGVkIHByb3Zpc2lvbmFs
IGxvYWRpbmcgd2lsbCBjb25pdGludWUKKyAgICAgICAgZXhhY3RseSBhcyBiZWZvcmUuCisKKyAg
ICAgICAgVGVzdHM6IGh0dHAvdGVzdHMvaW5zcGVjdG9yL3RhcmdldC9wYXVzZS1vbi1pbmxpbmUt
ZGVidWdnZXItc3RhdGVtZW50Lmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvaW5zcGVj
dG9yL3RhcmdldC9wcm92aXNpb25hbC1sb2FkLWNhbmNlbHMtcHJldmlvdXMtbG9hZC5odG1sCisK
KyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yVGFyZ2V0UHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpJbnNwZWN0b3JUYXJnZXRQcm94eTo6ZGlzY29ubmVjdCk6CisgICAgICAgIChXZWJL
aXQ6Okluc3BlY3RvclRhcmdldFByb3h5OjpyZXN1bWVUYXJnZXQpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9JbnNwZWN0b3JUYXJnZXRQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Qcm92aXNp
b25hbFBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlByb3Zpc2lvbmFsUGFnZVByb3h5
OjpQcm92aXNpb25hbFBhZ2VQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlByb3Zpc2lvbmFsUGFn
ZVByb3h5OjpyZXN1bWVMb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6UHJvdmlzaW9uYWxQYWdl
UHJveHk6OnJ1bldoZW5Mb2FkaW5nUmVzdW1lZCk6CisgICAgICAgICogVUlQcm9jZXNzL1Byb3Zp
c2lvbmFsUGFnZVByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OlByb3Zpc2lvbmFsUGFnZVByb3h5
OjpzaG91bGRQYXVzZUxvYWRpbmcgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdl
SW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VJbnNwZWN0
b3JDb250cm9sbGVyOjpkaWRDcmVhdGVQcm92aXNpb25hbFBhZ2UpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNvbnRpbnVl
TmF2aWdhdGlvbkluTmV3UHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
c3BlZWNoU3ludGhlc2lzUmVzdW1lKToKKwogMjAxOS0xMS0xMiAgQWxleCBDaHJpc3RlbnNlbiAg
PGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmVydCBwYXJ0IG9mIHIyNTE2
NzYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
VGFyZ2V0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRhcmdl
dC5oCmluZGV4IGE5ZjA0YjhhMGM5YWZhZWVhNGZlOGMwYTRkMDdkODIzMGE5YzM1NjAuLmM5Mjhh
ZjIzMGEzMzk2ODgxMWMyMmU0MjgwZTYwZDk4OWQ1YzgwMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGFyZ2V0LmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUYXJnZXQuaApAQCAtNDcsMTEgKzQ3LDIz
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEluc3BlY3RvclRhcmdldFR5cGUgdHlwZSgpIGNvbnN0
ID0gMDsKIAogICAgIHZpcnR1YWwgYm9vbCBpc1Byb3Zpc2lvbmFsKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KKyAgICBib29sIGlzUGF1c2VkT25TdGFydCgpIGNvbnN0IHsgcmV0dXJuIG1fcGF1
c2VkT25TdGFydDsgfQorICAgIHZvaWQgc2V0UGF1c2VkT25TdGFydChib29sIHBhdXNlZCkKKyAg
ICB7CisgICAgICAgIG1fcGF1c2VkT25TdGFydCA9IHBhdXNlZDsKKyAgICAgICAgaWYgKCFwYXVz
ZWQpCisgICAgICAgICAgICByZXN1bWVUYXJnZXQoKTsKKyAgICB9CiAKICAgICAvLyBDb25uZWN0
aW9uIG1hbmFnZW1lbnQuCiAgICAgdmlydHVhbCB2b2lkIGNvbm5lY3QoRnJvbnRlbmRDaGFubmVs
OjpDb25uZWN0aW9uVHlwZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0KCkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBzZW5kTWVzc2FnZVRvVGFyZ2V0QmFja2VuZChjb25zdCBTdHJp
bmcmKSA9IDA7CisKK3ByaXZhdGU6CisgICAgdmlydHVhbCB2b2lkIHJlc3VtZVRhcmdldCgpIHsg
fQorCisgICAgYm9vbCBtX3BhdXNlZE9uU3RhcnQgeyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgSW5zcGVjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JUYXJnZXRBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUYXJnZXRBZ2VudC5jcHAKaW5kZXggMTE3NzA5
MGZjMTg2MjNlZjUwMWM5YWQ0YzMzODliYzJkYTkxMDcxZS4uMWI5MDBkOTYyNGI0ZjQxN2QxZjk2
MWU5MWQyYWM3ZTNkYmYzYWMxYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGFyZ2V0QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRhcmdldEFnZW50LmNwcApAQCAt
NTIsNiArNTIsMjYgQEAgdm9pZCBJbnNwZWN0b3JUYXJnZXRBZ2VudDo6d2lsbERlc3Ryb3lGcm9u
dGVuZEFuZEJhY2tlbmQoRGlzY29ubmVjdFJlYXNvbikKICAgICBkaXNjb25uZWN0RnJvbVRhcmdl
dHMoKTsKIAogICAgIG1faXNDb25uZWN0ZWQgPSBmYWxzZTsKKyAgICBtX3Nob3VsZFBhdXNlT25T
dGFydCA9IGZhbHNlOworfQorCit2b2lkIEluc3BlY3RvclRhcmdldEFnZW50OjpzZXRQYXVzZU9u
U3RhcnQoRXJyb3JTdHJpbmcmLCBib29sIHBhdXNlT25TdGFydCkKK3sKKyAgICBtX3Nob3VsZFBh
dXNlT25TdGFydCA9IHBhdXNlT25TdGFydDsKK30KKwordm9pZCBJbnNwZWN0b3JUYXJnZXRBZ2Vu
dDo6cmVzdW1lKEVycm9yU3RyaW5nJiBlcnJvciwgY29uc3QgU3RyaW5nJiB0YXJnZXRJZCkKK3sK
KyAgICBJbnNwZWN0b3JUYXJnZXQqIHRhcmdldCA9IG1fdGFyZ2V0cy5nZXQodGFyZ2V0SWQpOwor
ICAgIGlmICghdGFyZ2V0KSB7CisgICAgICAgIGVycm9yID0gIk1pc3NpbmcgdGFyZ2V0IGZvciBn
aXZlbiB0YXJnZXRJZCJfczsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoIXRhcmdl
dC0+aXNQYXVzZWRPblN0YXJ0KCkpIHsKKyAgICAgICAgZXJyb3IgPSAiVGFyZ2V0IGlzIG5vdCBw
YXVzZWQgb24gc3RhcnQiX3M7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgdGFyZ2V0LT5z
ZXRQYXVzZWRPblN0YXJ0KGZhbHNlKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JUYXJnZXRBZ2VudDo6
c2VuZE1lc3NhZ2VUb1RhcmdldChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmlu
ZyYgdGFyZ2V0SWQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKQEAgLTk1LDYgKzExNSw4IEBAIHN0
YXRpYyBSZWY8UHJvdG9jb2w6OlRhcmdldDo6VGFyZ2V0SW5mbz4gYnVpbGRUYXJnZXRJbmZvT2Jq
ZWN0KGNvbnN0IEluc3BlY3RvclRhCiAgICAgICAgIC5yZWxlYXNlKCk7CiAgICAgaWYgKHRhcmdl
dC5pc1Byb3Zpc2lvbmFsKCkpCiAgICAgICAgIHJlc3VsdC0+c2V0SXNQcm92aXNpb25hbCh0cnVl
KTsKKyAgICBpZiAodGFyZ2V0LmlzUGF1c2VkT25TdGFydCgpKQorICAgICAgICByZXN1bHQtPnNl
dElzUGF1c2VkT25TdGFydCh0cnVlKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0xMDYs
NiArMTI4LDcgQEAgdm9pZCBJbnNwZWN0b3JUYXJnZXRBZ2VudDo6dGFyZ2V0Q3JlYXRlZChJbnNw
ZWN0b3JUYXJnZXQmIHRhcmdldCkKICAgICBpZiAoIW1faXNDb25uZWN0ZWQpCiAgICAgICAgIHJl
dHVybjsKIAorICAgIHRhcmdldC5zZXRQYXVzZWRPblN0YXJ0KG1fc2hvdWxkUGF1c2VPblN0YXJ0
KTsKICAgICB0YXJnZXQuY29ubmVjdChjb25uZWN0aW9uVHlwZSgpKTsKIAogICAgIG1fZnJvbnRl
bmREaXNwYXRjaGVyLT50YXJnZXRDcmVhdGVkKGJ1aWxkVGFyZ2V0SW5mb09iamVjdCh0YXJnZXQp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvclRhcmdldEFnZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JUYXJnZXRBZ2VudC5oCmluZGV4IDM4Y2IzMTg5ODZiMzFjNGRlZDE5YmE5
YmVhZTc4NTVkMmI1NGMyM2EuLjFlYjdhYmIyZmEyMWQ3YThlYzA4MzMxNjBmNTNlNWM1MjNlYzQz
MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvclRhcmdldEFnZW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yVGFyZ2V0QWdlbnQuaApAQCAtNDksNiArNDksOCBAQCBwdWJsaWM6
CiAgICAgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChEaXNjb25uZWN0UmVhc29u
KSBmaW5hbDsKIAogICAgIC8vIFRhcmdldEJhY2tlbmREaXNwYXRjaGVySGFuZGxlcgorICAgIHZv
aWQgc2V0UGF1c2VPblN0YXJ0KEVycm9yU3RyaW5nJiwgYm9vbCBwYXVzZU9uU3RhcnQpIG92ZXJy
aWRlOworICAgIHZvaWQgcmVzdW1lKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiB0YXJnZXRJ
ZCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZW5kTWVzc2FnZVRvVGFyZ2V0KEVycm9yU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJiB0YXJnZXRJZCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKSBmaW5hbDsKIAog
ICAgIC8vIFRhcmdldCBsaWZlY3ljbGUuCkBAIC03MCw2ICs3Miw3IEBAIHByaXZhdGU6CiAgICAg
UmVmPFRhcmdldEJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwogICAgIEhh
c2hNYXA8U3RyaW5nLCBJbnNwZWN0b3JUYXJnZXQqPiBtX3RhcmdldHM7CiAgICAgYm9vbCBtX2lz
Q29ubmVjdGVkIHsgZmFsc2UgfTsKKyAgICBib29sIG1fc2hvdWxkUGF1c2VPblN0YXJ0IHsgZmFs
c2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9UYXJnZXQuanNvbiBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvVGFyZ2V0Lmpzb24KaW5kZXggMjQwY2Q0
MmU2N2UzMjUwZTQzNGMwYmY2ZjlkMTYxNjg1MDVhOGMyMi4uYzU2MTA3NzZmMGQ3ODk3MDUyNTU3
OGNmMGNjZWQzZWYwOGZmYmMzMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9wcm90b2NvbC9UYXJnZXQuanNvbgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3Byb3RvY29sL1RhcmdldC5qc29uCkBAIC0xMCwxMSArMTAsMjYgQEAKICAgICAg
ICAgICAgICJwcm9wZXJ0aWVzIjogWwogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAidGFyZ2V0
SWQiLCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAiVW5pcXVlIGlkZW50aWZpZXIg
Zm9yIHRoZSB0YXJnZXQuIiB9LAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAidHlwZSIsICJ0
eXBlIjogInN0cmluZyIsICJlbnVtIjogWyJwYWdlIiwgInNlcnZpY2Utd29ya2VyIiwgIndvcmtl
ciJdIH0sCi0gICAgICAgICAgICAgICAgeyAibmFtZSI6ICJpc1Byb3Zpc2lvbmFsIiwgInR5cGUi
OiAiYm9vbGVhbiIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJUcnVlIHZhbHVl
IGluZGljYXRlcyB0aGF0IHRoaXMgaXMgYSBwcm92aXNpb25hbCBwYWdlIHRhcmdldCBpLmUuIFN1
Y2ggdGFyZ2V0IG1heSBiZSBjcmVhdGVkIHdoZW4gY3VycmVudCBwYWdlIHN0YXJ0cyBjcm9zcy1v
cmlnaW4gbmF2aWdhdGlvbi4gRXZlbnR1YWxseSBlYWNoIHByb3Zpc2lvbmFsIHRhcmdldCBpcyBl
aXRoZXIgY29tbWl0dGVkIGFuZCBzd2FwcyB3aXRoIHRoZSBjdXJyZW50IHRhcmdldCBvciBnZXRz
IGRlc3Ryb3llZCwgZS5nLiBpbiBjYXNlIG9mIGxvYWQgcmVxdWVzdCBmYWlsdXJlLiIgfQorICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAiaXNQcm92aXNpb25hbCIsICJ0eXBlIjogImJvb2xlYW4i
LCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiV2hldGhlciB0aGlzIGlzIGEgcHJv
dmlzaW9uYWwgcGFnZSB0YXJnZXQuIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiaXNQ
YXVzZWRPblN0YXJ0IiwgInR5cGUiOiAiYm9vbGVhbiIsICJvcHRpb25hbCI6IHRydWUsICJkZXNj
cmlwdGlvbiI6ICJXaGV0aGVyIHRoZSB0YXJnZXQgaXMgcGF1c2VkIG9uIHN0YXJ0IGFuZCBoYXMg
dG8gYmUgZXhwbGljaXRlbHkgcmVzdW1lZCBieSBpbnNwZWN0b3IuIiB9CiAgICAgICAgICAgICBd
CiAgICAgICAgIH0KICAgICBdLAogICAgICJjb21tYW5kcyI6IFsKKyAgICAgICAgeworICAgICAg
ICAgICAgIm5hbWUiOiAic2V0UGF1c2VPblN0YXJ0IiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlv
biI6ICJJZiBzZXQgdG8gdHJ1ZSwgbmV3IHRhcmdldHMgd2lsbCBiZSBwYXVzZWQgb24gc3RhcnQg
d2FpdGluZyBmb3IgcmVzdW1lIGNvbW1hbmQuIE90aGVyIGNvbW1hbmRzIGNhbiBiZSBkaXNwYXRj
aGVkIG9uIHRoZSB0YXJnZXQgYmVmb3JlIGl0IGlzIHJlc3VtZWQuIiwKKyAgICAgICAgICAgICJw
YXJhbWV0ZXJzIjogWworICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicGF1c2VPblN0YXJ0Iiwg
InR5cGUiOiAiYm9vbGVhbiIsICJkZXNjcmlwdGlvbiI6ICJJZiBzZXQgdG8gdHJ1ZSwgbmV3IHRh
cmdldHMgd2lsbCBiZSBwYXVzZWQgb24gc3RhcnQgd2FpdGluZyBmb3IgcmVzdW1lIGNvbW1hbmQu
IiB9CisgICAgICAgICAgICBdCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJu
YW1lIjogInJlc3VtZSIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiV2lsbCByZXN1bWUg
dGFyZ2V0IGl0IHdhcyBwYXVzZWQgb24gc3RhcnQuIiwKKyAgICAgICAgICAgICJwYXJhbWV0ZXJz
IjogWworICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAidGFyZ2V0SWQiLCAidHlwZSI6ICJzdHJp
bmciIH0KKyAgICAgICAgICAgIF0KKyAgICAgICAgfSwKICAgICAgICAgewogICAgICAgICAgICAg
Im5hbWUiOiAic2VuZE1lc3NhZ2VUb1RhcmdldCIsCiAgICAgICAgICAgICAiZGVzY3JpcHRpb24i
OiAiU2VuZCBhbiBJbnNwZWN0b3IgUHJvdG9jb2wgbWVzc2FnZSB0byBiZSBkaXNwYXRjaGVkIHRv
IGEgVGFyZ2V0J3MgYWdlbnRzLiIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Db250cm9sbGVycy9DU1NNYW5hZ2VyLmpzIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQ1NTTWFuYWdlci5qcwppbmRleCA0MjAx
MTQyZjU2MWRlZTYwYmI2MjQ0NWMxYzhmMDNiZWJjNzA2OGNhLi4wNTQyZDg1MTYzZDZmYTUzNDE2
N2FkNTZjYjJlYzkyNDM4M2RiYTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Db250cm9sbGVycy9DU1NNYW5hZ2VyLmpzCisrKyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0NTU01hbmFnZXIuanMKQEAgLTY2
MCw3ICs2NjAsNyBAQCBXSS5DU1NNYW5hZ2VyID0gY2xhc3MgQ1NTTWFuYWdlciBleHRlbmRzIFdJ
Lk9iamVjdAogICAgICAgICAgICAgICAgIC8vIGlnbm9yZSB0aGUgbmV4dCBfdXBkYXRlUmVzb3Vy
Y2VDb250ZW50IGNhbGwuCiAgICAgICAgICAgICAgICAgcmVzb3VyY2UuX19pZ25vcmVOZXh0VXBk
YXRlUmVzb3VyY2VDb250ZW50ID0gdHJ1ZTsKIAotICAgICAgICAgICAgICAgIGxldCByZXZpc2lv
biA9IHN0eWxlU2hlZXQuY3VycmVudFJldmlzaW9uOworICAgICAgICAgICAgICAgIGxldCByZXZp
c2lvbiA9IHN0eWxlU2hlZXQuZWRpdGFibGVSZXZpc2lvbjsKICAgICAgICAgICAgICAgICByZXZp
c2lvbi51cGRhdGVSZXZpc2lvbkNvbnRlbnQocmVzb3VyY2UuY29udGVudCk7CiAgICAgICAgICAg
ICB9CiAKQEAgLTcwNCw3ICs3MDQsNyBAQCBXSS5DU1NNYW5hZ2VyID0gY2xhc3MgQ1NTTWFuYWdl
ciBleHRlbmRzIFdJLk9iamVjdAogCiAgICAgICAgICAgICB0aGlzLl9pZ25vcmVSZXNvdXJjZUNv
bnRlbnREaWRDaGFuZ2VFdmVudEZvclJlc291cmNlID0gcmVwcmVzZW50ZWRPYmplY3Q7CiAKLSAg
ICAgICAgICAgIGxldCByZXZpc2lvbiA9IHJlcHJlc2VudGVkT2JqZWN0LmN1cnJlbnRSZXZpc2lv
bjsKKyAgICAgICAgICAgIGxldCByZXZpc2lvbiA9IHJlcHJlc2VudGVkT2JqZWN0LmVkaXRhYmxl
UmV2aXNpb247CiAgICAgICAgICAgICBpZiAoc3R5bGVTaGVldC5pc0luc3BlY3RvclN0eWxlU2hl
ZXQoKSkgewogICAgICAgICAgICAgICAgIHJldmlzaW9uLnVwZGF0ZVJldmlzaW9uQ29udGVudChy
ZXByZXNlbnRlZE9iamVjdC5jb250ZW50KTsKICAgICAgICAgICAgICAgICBzdHlsZVNoZWV0LmRp
c3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5Tb3VyY2VDb2RlLkV2ZW50LkNvbnRlbnREaWRDaGFu
Z2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29u
dHJvbGxlcnMvVGFyZ2V0TWFuYWdlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL0NvbnRyb2xsZXJzL1RhcmdldE1hbmFnZXIuanMKaW5kZXggOTY5ODdhNGU1N2QzYTZj
ZTMwZjc2NjMzNWQyOTkyMTk1MzE4NzExNS4uODQ1ZGQ4OTkxOGNmYzBmY2EyZDRlZDZiNTk2ZTMw
NjNhMTFlMTFmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvQ29udHJvbGxlcnMvVGFyZ2V0TWFuYWdlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9UYXJnZXRNYW5hZ2VyLmpzCkBAIC0zMyw5ICsz
Myw2IEBAIFdJLlRhcmdldE1hbmFnZXIgPSBjbGFzcyBUYXJnZXRNYW5hZ2VyIGV4dGVuZHMgV0ku
T2JqZWN0CiAgICAgICAgIHRoaXMuX2NhY2hlZFRhcmdldHNMaXN0ID0gbnVsbDsKICAgICAgICAg
dGhpcy5fc2VlblBhZ2VUYXJnZXQgPSBmYWxzZTsKICAgICAgICAgdGhpcy5fdHJhbnNpdGlvblRp
bWVvdXRJZGVudGlmaWVyID0gdW5kZWZpbmVkOwotCi0gICAgICAgIHRoaXMuX3Byb3Zpc2lvbmFs
VGFyZ2V0SW5mb3MgPSBuZXcgTWFwOwotICAgICAgICB0aGlzLl9zd2FwcGVkVGFyZ2V0SWRzID0g
bmV3IFNldDsKICAgICB9CiAKICAgICAvLyBQdWJsaWMKQEAgLTk0LDYgKzkxLDcgQEAgV0kuVGFy
Z2V0TWFuYWdlciA9IGNsYXNzIFRhcmdldE1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAg
ICAgICBsZXQgdGFyZ2V0ID0gbmV3IFdJLk11bHRpcGxleGluZ0JhY2tlbmRUYXJnZXQ7CiAgICAg
ICAgIHRhcmdldC5pbml0aWFsaXplKCk7CisgICAgICAgIHRhcmdldC5UYXJnZXRBZ2VudC5zZXRQ
YXVzZU9uU3RhcnQodHJ1ZSk7CiAKICAgICAgICAgdGhpcy5faW5pdGlhbGl6ZUJhY2tlbmRUYXJn
ZXQodGFyZ2V0KTsKIApAQCAtMTIwLDIzICsxMTgsMjMgQEAgV0kuVGFyZ2V0TWFuYWdlciA9IGNs
YXNzIFRhcmdldE1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgIHRhcmdldENyZWF0ZWQo
cGFyZW50VGFyZ2V0LCB0YXJnZXRJbmZvKQogICAgIHsKLSAgICAgICAgdGhpcy5fY29ubmVjdFRv
VGFyZ2V0KHBhcmVudFRhcmdldCwgdGFyZ2V0SW5mbyk7CisgICAgICAgIGxldCB0YXJnZXQgPSB0
aGlzLl9jb25uZWN0VG9UYXJnZXQocGFyZW50VGFyZ2V0LCB0YXJnZXRJbmZvKTsKIAotICAgICAg
ICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5UYXJnZXRNYW5hZ2VyLkV2ZW50LlRh
cmdldENyZWF0ZWQsIHt0YXJnZXRJbmZvfSk7CisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRv
TGlzdGVuZXJzKFdJLlRhcmdldE1hbmFnZXIuRXZlbnQuVGFyZ2V0Q3JlYXRlZCwge3RhcmdldCwg
aXNQYXVzZWRPblN0YXJ0OiB0YXJnZXRJbmZvLmlzUGF1c2VkT25TdGFydH0pOwogICAgIH0KIAog
ICAgIGRpZENvbW1pdFByb3Zpc2lvbmFsVGFyZ2V0KHBhcmVudFRhcmdldCwgcHJldmlvdXNUYXJn
ZXRJZCwgbmV3VGFyZ2V0SWQpCiAgICAgewogICAgICAgICB0aGlzLl9kZXN0cm95VGFyZ2V0KHBy
ZXZpb3VzVGFyZ2V0SWQpOwotICAgICAgICBsZXQgdGFyZ2V0SW5mbyA9IHRoaXMuX3Byb3Zpc2lv
bmFsVGFyZ2V0SW5mb3MuZ2V0KG5ld1RhcmdldElkKTsKLSAgICAgICAgY29uc29sZS5hc3NlcnQo
dGFyZ2V0SW5mbyk7Ci0gICAgICAgIHRhcmdldEluZm8uaXNQcm92aXNpb25hbCA9IGZhbHNlOwot
ICAgICAgICB0aGlzLl9wcm92aXNpb25hbFRhcmdldEluZm9zLmRlbGV0ZShuZXdUYXJnZXRJZCk7
Ci0gICAgICAgIHRoaXMuX2Nvbm5lY3RUb1RhcmdldChwYXJlbnRUYXJnZXQsIHRhcmdldEluZm8p
OwotICAgICAgICBjb25zb2xlLmFzc2VydCghdGhpcy5fc3dhcHBlZFRhcmdldElkcy5oYXMocHJl
dmlvdXNUYXJnZXRJZCkpOwotICAgICAgICB0aGlzLl9zd2FwcGVkVGFyZ2V0SWRzLmFkZChwcmV2
aW91c1RhcmdldElkKTsKLQotICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhX
SS5UYXJnZXRNYW5hZ2VyLkV2ZW50LkRpZENvbW1pdFByb3Zpc2lvbmFsVGFyZ2V0LCB7cHJldmlv
dXNUYXJnZXRJZCwgdGFyZ2V0SW5mb30pOworICAgICAgICBsZXQgdGFyZ2V0ID0gdGhpcy5fdGFy
Z2V0cy5nZXQobmV3VGFyZ2V0SWQpOworICAgICAgICBjb25zb2xlLmFzc2VydCh0YXJnZXQpOwor
ICAgICAgICBpZiAoIXRhcmdldCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgdGFyZ2V0
LmlzUHJvdmlzaW9uYWwgPSBmYWxzZTsKKyAgICAgICAgdGhpcy5fY2hlY2tBbmRIYW5kbGVQYWdl
VGFyZ2V0VHJhbnNpdGlvbih0YXJnZXQpOworICAgICAgICB0YXJnZXQuY29ubmVjdGlvbi5kaXNw
YXRjaFByb3Zpc2lvbmFsTWVzc2FnZXMoKTsKKworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRU
b0xpc3RlbmVycyhXSS5UYXJnZXRNYW5hZ2VyLkV2ZW50LkRpZENvbW1pdFByb3Zpc2lvbmFsVGFy
Z2V0LCB7cHJldmlvdXNUYXJnZXRJZCwgdGFyZ2V0fSk7CiAgICAgfQogCiAgICAgdGFyZ2V0RGVz
dHJveWVkKHRhcmdldElkKQpAQCAtMTQ4LDQ3ICsxNDYsNDQgQEAgV0kuVGFyZ2V0TWFuYWdlciA9
IGNsYXNzIFRhcmdldE1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgIGRpc3BhdGNoTWVz
c2FnZUZyb21UYXJnZXQodGFyZ2V0SWQsIG1lc3NhZ2UpCiAgICAgewotICAgICAgICBpZiAodGhp
cy5fcHJvdmlzaW9uYWxUYXJnZXRJbmZvcy5oYXModGFyZ2V0SWQpKQotICAgICAgICAgICAgcmV0
dXJuOwotCiAgICAgICAgIGxldCB0YXJnZXQgPSB0aGlzLl90YXJnZXRzLmdldCh0YXJnZXRJZCk7
CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRhcmdldCk7CiAgICAgICAgIGlmICghdGFyZ2V0KQog
ICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHRhcmdldC5jb25uZWN0aW9uLmRpc3BhdGNo
KG1lc3NhZ2UpOworICAgICAgICBpZiAodGFyZ2V0LmlzUHJvdmlzaW9uYWwpCisgICAgICAgICAg
ICB0YXJnZXQuY29ubmVjdGlvbi5hZGRQcm92aXNpb25hbE1lc3NhZ2UobWVzc2FnZSk7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIHRhcmdldC5jb25uZWN0aW9uLmRpc3BhdGNoKG1lc3NhZ2Up
OwogICAgIH0KIAogICAgIC8vIFByaXZhdGUKIAogICAgIF9jb25uZWN0VG9UYXJnZXQocGFyZW50
VGFyZ2V0LCB0YXJnZXRJbmZvKQogICAgIHsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoIXRoaXMu
X3Byb3Zpc2lvbmFsVGFyZ2V0SW5mb3MuaGFzKHRhcmdldEluZm8udGFyZ2V0SWQpKTsKLQotICAg
ICAgICAvLyBDT01QQVRJQklMSVRZIChpT1MgMTMuMCk6IGBUYXJnZXQuVGFyZ2V0SW5mby5pc1By
b3Zpc2lvbmFsYCBkaWQgbm90IGV4aXN0IHlldC4KLSAgICAgICAgaWYgKHRhcmdldEluZm8uaXNQ
cm92aXNpb25hbCkgewotICAgICAgICAgICAgdGhpcy5fcHJvdmlzaW9uYWxUYXJnZXRJbmZvcy5z
ZXQodGFyZ2V0SW5mby50YXJnZXRJZCwgdGFyZ2V0SW5mbyk7Ci0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIH0KLQotICAgICAgICBjb25zb2xlLmFzc2VydChwYXJlbnRUYXJnZXQuaGFzQ29t
bWFuZCgiVGFyZ2V0LnNlbmRNZXNzYWdlVG9UYXJnZXQiKSk7Ci0gICAgICAgIGxldCBjb25uZWN0
aW9uID0gbmV3IEluc3BlY3RvckJhY2tlbmQuVGFyZ2V0Q29ubmVjdGlvbjsKKyAgICAgICAgbGV0
IGNvbm5lY3Rpb24gPSBuZXcgSW5zcGVjdG9yQmFja2VuZC5UYXJnZXRDb25uZWN0aW9uKHBhcmVu
dFRhcmdldCwgdGFyZ2V0SW5mby50YXJnZXRJZCk7CiAgICAgICAgIGxldCBzdWJUYXJnZXQgPSB0
aGlzLl9jcmVhdGVUYXJnZXQocGFyZW50VGFyZ2V0LCB0YXJnZXRJbmZvLCBjb25uZWN0aW9uKTsK
ICAgICAgICAgdGhpcy5fY2hlY2tBbmRIYW5kbGVQYWdlVGFyZ2V0VHJhbnNpdGlvbihzdWJUYXJn
ZXQpOwogICAgICAgICBzdWJUYXJnZXQuaW5pdGlhbGl6ZSgpOwogCisgICAgICAgIC8vIENPTVBB
VElCSUxJVFkgKGlPUyAxMy4wKTogYFRhcmdldC5UYXJnZXRJbmZvLmlzUGF1c2VkT25TdGFydGAg
ZGlkIG5vdCBleGlzdCB5ZXQuCisgICAgICAgIGlmICh0YXJnZXRJbmZvLmlzUGF1c2VkT25TdGFy
dCkgeworICAgICAgICAgICAgcGFyZW50VGFyZ2V0LlRhcmdldEFnZW50LnJlc3VtZSh0YXJnZXRJ
bmZvLnRhcmdldElkKS5jYXRjaCgoZXJyb3IpID0+IHsKKyAgICAgICAgICAgICAgICBpZiAoc3Vi
VGFyZ2V0LmlzRGVzdHJveWVkKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICAgICAgV0kucmVwb3J0SW50ZXJuYWxFcnJvcihlcnJvcik7CisgICAgICAgICAgICB9KTsK
KyAgICAgICAgfQorCiAgICAgICAgIHRoaXMuYWRkVGFyZ2V0KHN1YlRhcmdldCk7CisgICAgICAg
IHJldHVybiBzdWJUYXJnZXQ7CiAgICAgfQogCiAgICAgX2Rlc3Ryb3lUYXJnZXQodGFyZ2V0SWQp
CiAgICAgewotICAgICAgICBpZiAodGhpcy5fcHJvdmlzaW9uYWxUYXJnZXRJbmZvcy5kZWxldGUo
dGFyZ2V0SWQpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlmICh0aGlzLl9zd2Fw
cGVkVGFyZ2V0SWRzLmRlbGV0ZSh0YXJnZXRJZCkpCi0gICAgICAgICAgICByZXR1cm47Ci0KICAg
ICAgICAgbGV0IHRhcmdldCA9IHRoaXMuX3RhcmdldHMuZ2V0KHRhcmdldElkKTsKKyAgICAgICAg
aWYgKCF0YXJnZXQpCisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIHRoaXMuX2NoZWNrQW5k
SGFuZGxlUGFnZVRhcmdldFRlcm1pbmF0aW9uKHRhcmdldCk7CiAgICAgICAgIHRoaXMucmVtb3Zl
VGFyZ2V0KHRhcmdldCk7CiAgICAgfQpAQCAtMTk5LDcgKzE5NCw3IEBAIFdJLlRhcmdldE1hbmFn
ZXIgPSBjbGFzcyBUYXJnZXRNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICAgICAgc3dp
dGNoICh0eXBlKSB7CiAgICAgICAgIGNhc2UgSW5zcGVjdG9yQmFja2VuZC5FbnVtLlRhcmdldC5U
YXJnZXRJbmZvVHlwZS5QYWdlOgotICAgICAgICAgICAgcmV0dXJuIG5ldyBXSS5QYWdlVGFyZ2V0
KHBhcmVudFRhcmdldCwgdGFyZ2V0SWQsIFdJLlVJU3RyaW5nKCJQYWdlIiksIGNvbm5lY3Rpb24p
OworICAgICAgICAgICAgcmV0dXJuIG5ldyBXSS5QYWdlVGFyZ2V0KHBhcmVudFRhcmdldCwgdGFy
Z2V0SWQsIFdJLlVJU3RyaW5nKCJQYWdlIiksIGNvbm5lY3Rpb24sIHRhcmdldEluZm8uaXNQcm92
aXNpb25hbCk7CiAgICAgICAgIGNhc2UgSW5zcGVjdG9yQmFja2VuZC5FbnVtLlRhcmdldC5UYXJn
ZXRJbmZvVHlwZS5Xb3JrZXI6CiAgICAgICAgICAgICByZXR1cm4gbmV3IFdJLldvcmtlclRhcmdl
dChwYXJlbnRUYXJnZXQsIHRhcmdldElkLCBXSS5VSVN0cmluZygiV29ya2VyIiksIGNvbm5lY3Rp
b24pOwogICAgICAgICBjYXNlICJzZXJ2aWNld29ya2VyIjogLy8gQ09NUEFUSUJJTElUWSAoaU9T
IDEzKTogInNlcnZpY2V3b3JrZXIiIHdhcyByZW5hbWVkIHRvICJzZXJ2aWNlLXdvcmtlciIuCkBA
IC0yMTUsNiArMjEwLDEwIEBAIFdJLlRhcmdldE1hbmFnZXIgPSBjbGFzcyBUYXJnZXRNYW5hZ2Vy
IGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIGlmICh0YXJnZXQudHlwZSAhPT0gV0kuVGFyZ2V0
VHlwZS5QYWdlKQogICAgICAgICAgICAgcmV0dXJuOwogCisgICAgICAgIC8vIENPTVBBVElCSUxJ
VFkgKGlPUyAxMy4wKTogYFRhcmdldC5UYXJnZXRJbmZvLmlzUHJvdmlzaW9uYWxgIGRpZCBub3Qg
ZXhpc3QgeWV0LgorICAgICAgICBpZiAodGFyZ2V0LmlzUHJvdmlzaW9uYWwpCisgICAgICAgICAg
ICByZXR1cm47CisKICAgICAgICAgLy8gRmlyc3QgcGFnZSB0YXJnZXQuCiAgICAgICAgIGlmICgh
V0kucGFnZVRhcmdldCAmJiAhdGhpcy5fc2VlblBhZ2VUYXJnZXQpIHsKICAgICAgICAgICAgIHRo
aXMuX3NlZW5QYWdlVGFyZ2V0ID0gdHJ1ZTsKQEAgLTIzMCw2ICsyMjksOCBAQCBXSS5UYXJnZXRN
YW5hZ2VyID0gY2xhc3MgVGFyZ2V0TWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgIHsKICAg
ICAgICAgaWYgKHRhcmdldC50eXBlICE9PSBXSS5UYXJnZXRUeXBlLlBhZ2UpCiAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIGlmICh0YXJnZXQuaXNQcm92aXNpb25hbCkKKyAgICAgICAgICAg
IHJldHVybjsKIAogICAgICAgICBjb25zb2xlLmFzc2VydCh0YXJnZXQgPT09IFdJLnBhZ2VUYXJn
ZXQpOwogICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9zZWVuUGFnZVRhcmdldCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvU291cmNl
Q29kZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Tb3Vy
Y2VDb2RlLmpzCmluZGV4IDNlMjZmZmMyNzU5ODg0MDU1NWNmZTZhZGRmYTE5ODEzNTRmZTYwZWIu
LjBhNDU0MTcwMDVmZTlhNTE4MDcyOTJkYTRhMjFiNzU0OTUzNWM5MWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Tb3VyY2VDb2RlLmpzCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Tb3VyY2VDb2Rl
LmpzCkBAIC02Niw3ICs2NiwxMyBAQCBXSS5Tb3VyY2VDb2RlID0gY2xhc3MgU291cmNlQ29kZSBl
eHRlbmRzIFdJLk9iamVjdAogCiAgICAgZ2V0IGN1cnJlbnRSZXZpc2lvbigpCiAgICAgewotICAg
ICAgICB0aGlzLl9pbml0aWFsaXplQ3VycmVudFJldmlzaW9uSWZOZWVkZWQoKTsKKyAgICAgICAg
cmV0dXJuIHRoaXMuX2N1cnJlbnRSZXZpc2lvbjsKKyAgICB9CisKKyAgICBnZXQgZWRpdGFibGVS
ZXZpc2lvbigpCisgICAgeworICAgICAgICBpZiAodGhpcy5fY3VycmVudFJldmlzaW9uID09PSB0
aGlzLl9vcmlnaW5hbFJldmlzaW9uKQorICAgICAgICAgICAgdGhpcy5fY3VycmVudFJldmlzaW9u
ID0gdGhpcy5fb3JpZ2luYWxSZXZpc2lvbi5jb3B5KCk7CiAgICAgICAgIHJldHVybiB0aGlzLl9j
dXJyZW50UmV2aXNpb247CiAgICAgfQogCkBAIC04Nyw3ICs5Myw3IEBAIFdJLlNvdXJjZUNvZGUg
PSBjbGFzcyBTb3VyY2VDb2RlIGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICBnZXQgY29udGVudCgp
CiAgICAgewotICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50UmV2aXNpb24uY29udGVudDsKKyAg
ICAgICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRSZXZpc2lvbi5jb250ZW50OwogICAgIH0KIAogICAg
IGdldCB1cmwoKQpAQCAtMTc4LDEzICsxODQsMTAgQEAgV0kuU291cmNlQ29kZSA9IGNsYXNzIFNv
dXJjZUNvZGUgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgIHJldmlzaW9uQ29udGVudERpZENoYW5n
ZShyZXZpc2lvbikKICAgICB7Ci0gICAgICAgIGlmIChyZXZpc2lvbiA9PT0gdGhpcy5fb3JpZ2lu
YWxSZXZpc2lvbikKLSAgICAgICAgICAgIHRoaXMuX2luaXRpYWxpemVDdXJyZW50UmV2aXNpb25J
Zk5lZWRlZCgpOwotCiAgICAgICAgIGlmICh0aGlzLl9pZ25vcmVSZXZpc2lvbkNvbnRlbnREaWRD
aGFuZ2VFdmVudCkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAocmV2aXNpb24g
IT09IHRoaXMuY3VycmVudFJldmlzaW9uKQorICAgICAgICBpZiAocmV2aXNpb24gIT09IHRoaXMu
X2N1cnJlbnRSZXZpc2lvbikKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICB0aGlzLmhh
bmRsZUN1cnJlbnRSZXZpc2lvbkNvbnRlbnRDaGFuZ2UoKTsKQEAgLTIyNCwxMiArMjI3LDYgQEAg
V0kuU291cmNlQ29kZSA9IGNsYXNzIFNvdXJjZUNvZGUgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAg
IC8vIFByaXZhdGUKIAotICAgIF9pbml0aWFsaXplQ3VycmVudFJldmlzaW9uSWZOZWVkZWQoKQot
ICAgIHsKLSAgICAgICAgaWYgKHRoaXMuX2N1cnJlbnRSZXZpc2lvbiA9PT0gdGhpcy5fb3JpZ2lu
YWxSZXZpc2lvbikKLSAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRSZXZpc2lvbiA9IHRoaXMuX29y
aWdpbmFsUmV2aXNpb24uY29weSgpOwotICAgIH0KLQogICAgIF9wcm9jZXNzQ29udGVudChwYXJh
bWV0ZXJzKQogICAgIHsKICAgICAgICAgLy8gRGlmZmVyZW50IGJhY2tlbmQgQVBJcyByZXR1cm4g
b25lIG9mIGBjb250ZW50LCBgYm9keWAsIGB0ZXh0YCwgb3IgYHNjcmlwdFNvdXJjZWAuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9Db25u
ZWN0aW9uLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wv
Q29ubmVjdGlvbi5qcwppbmRleCA5YmVjYmQwNmE5ZDViMjU4ZjdhNTA2ZGNhMjBlOTQ0MzMzYzhh
YmE2Li42OTVlOGU0ZmQ2N2IyM2IwNTllNjc2OTBhMjM3NTdjY2QzYTQ3ZDIxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9Db25uZWN0aW9u
LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0Nv
bm5lY3Rpb24uanMKQEAgLTM5LDYgKzM5LDcgQEAgSW5zcGVjdG9yQmFja2VuZC5Db25uZWN0aW9u
ID0gY2xhc3MgSW5zcGVjdG9yQmFja2VuZENvbm5lY3Rpb24KICAgICAgICAgdGhpcy5fcGVuZGlu
Z1Jlc3BvbnNlcyA9IG5ldyBNYXA7CiAgICAgICAgIHRoaXMuX2RlZmVycmVkQ2FsbGJhY2tzID0g
W107CiAgICAgICAgIHRoaXMuX3RhcmdldCA9IG51bGw7CisgICAgICAgIHRoaXMuX3Byb3Zpc2lv
bmFsTWVzc2FnZXMgPSBbXTsKICAgICB9CiAKICAgICAvLyBQdWJsaWMKQEAgLTU0LDYgKzU1LDIw
IEBAIEluc3BlY3RvckJhY2tlbmQuQ29ubmVjdGlvbiA9IGNsYXNzIEluc3BlY3RvckJhY2tlbmRD
b25uZWN0aW9uCiAgICAgICAgIHRoaXMuX3RhcmdldCA9IHRhcmdldDsKICAgICB9CiAKKyAgICBh
ZGRQcm92aXNpb25hbE1lc3NhZ2UobWVzc2FnZSkKKyAgICB7CisgICAgICAgIHRoaXMuX3Byb3Zp
c2lvbmFsTWVzc2FnZXMucHVzaChtZXNzYWdlKTsKKyAgICB9CisKKyAgICBkaXNwYXRjaFByb3Zp
c2lvbmFsTWVzc2FnZXMoKQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy50YXJn
ZXQpOworICAgICAgICBjb25zb2xlLmFzc2VydCghdGhpcy50YXJnZXQuaXNQcm92aXNpb25hbCk7
CisgICAgICAgIGZvciAobGV0IG1lc3NhZ2Ugb2YgdGhpcy5fcHJvdmlzaW9uYWxNZXNzYWdlcykK
KyAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2gobWVzc2FnZSk7CisgICAgICAgIHRoaXMuX3Byb3Zp
c2lvbmFsTWVzc2FnZXMgPSBudWxsOworICAgIH0KKwogICAgIGRpc3BhdGNoKG1lc3NhZ2UpCiAg
ICAgewogICAgICAgICBsZXQgbWVzc2FnZU9iamVjdCA9IHR5cGVvZiBtZXNzYWdlID09PSAic3Ry
aW5nIiA/IEpTT04ucGFyc2UobWVzc2FnZSkgOiBtZXNzYWdlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvUGFnZVRhcmdldC5qcyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL1BhZ2VUYXJnZXQuanMK
aW5kZXggZjMzNGMwODA4NGMwNzA2NTJhYTBkZWM0MjEwYTdjYTFhNTdhODM0YS4uZGVkN2NjM2U4
MjhjNzU4ZWNjYWUzMDg4YTM3MzMxMmRmZWRkYjAzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvUGFnZVRhcmdldC5qcworKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9QYWdlVGFyZ2V0LmpzCkBA
IC0yNSwxMSArMjUsMTIgQEAKIAogV0kuUGFnZVRhcmdldCA9IGNsYXNzIFBhZ2VUYXJnZXQgZXh0
ZW5kcyBXSS5UYXJnZXQKIHsKLSAgICBjb25zdHJ1Y3RvcihwYXJlbnRUYXJnZXQsIHRhcmdldElk
LCBuYW1lLCBjb25uZWN0aW9uKQorICAgIGNvbnN0cnVjdG9yKHBhcmVudFRhcmdldCwgdGFyZ2V0
SWQsIG5hbWUsIGNvbm5lY3Rpb24sIGlzUHJvdmlzaW9uYWwpCiAgICAgewogICAgICAgICBzdXBl
cihwYXJlbnRUYXJnZXQsIHRhcmdldElkLCBuYW1lLCBXSS5UYXJnZXRUeXBlLlBhZ2UsIGNvbm5l
Y3Rpb24pOwogCiAgICAgICAgIGNvbnN0IGlzUGFnZUNvbnRleHQgPSB0cnVlOwogICAgICAgICB0
aGlzLl9leGVjdXRpb25Db250ZXh0ID0gbmV3IFdJLkV4ZWN1dGlvbkNvbnRleHQodGhpcywgV0ku
UnVudGltZU1hbmFnZXIuVG9wTGV2ZWxDb250ZXh0RXhlY3V0aW9uSWRlbnRpZmllciwgdGhpcy5k
aXNwbGF5TmFtZSwgaXNQYWdlQ29udGV4dCwgbnVsbCk7CisgICAgICAgIHRoaXMuaXNQcm92aXNp
b25hbCA9IGlzUHJvdmlzaW9uYWw7CiAgICAgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL1RhcmdldC5qcyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL1RhcmdldC5qcwppbmRleCAwYTMwZGZm
NGZhZWRhMjk5ZGQwNGZmZjA0M2JiNzU3NWZiMzYxODlhLi42ODYyOTIyNjllYjhjYjNhOGMxY2Fl
Yzc3MTc4NTIwNDhjOTZhZDU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Qcm90b2NvbC9UYXJnZXQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvVGFyZ2V0LmpzCkBAIC0zOSw2ICszOSw3IEBAIFdJLlRh
cmdldCA9IGNsYXNzIFRhcmdldCBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICB0aGlzLl9tYWlu
UmVzb3VyY2UgPSBudWxsOwogICAgICAgICB0aGlzLl9yZXNvdXJjZUNvbGxlY3Rpb24gPSBuZXcg
V0kuUmVzb3VyY2VDb2xsZWN0aW9uOwogICAgICAgICB0aGlzLl9leHRyYVNjcmlwdENvbGxlY3Rp
b24gPSBuZXcgV0kuU2NyaXB0Q29sbGVjdGlvbjsKKyAgICAgICAgdGhpcy5faXNQcm92aXNpb25h
bCA9IGZhbHNlOwogCiAgICAgICAgIHRoaXMuX3N1cHBvcnRlZENvbW1hbmRQYXJhbWV0ZXJzID0g
bmV3IE1hcDsKICAgICAgICAgdGhpcy5fc3VwcG9ydGVkRXZlbnRQYXJhbWV0ZXJzID0gbmV3IE1h
cDsKQEAgLTE3MSw2ICsxNzIsOCBAQCBXSS5UYXJnZXQgPSBjbGFzcyBUYXJnZXQgZXh0ZW5kcyBX
SS5PYmplY3QKIAogICAgIGdldCB0eXBlKCkgeyByZXR1cm4gdGhpcy5fdHlwZTsgfQogICAgIGdl
dCBjb25uZWN0aW9uKCkgeyByZXR1cm4gdGhpcy5fY29ubmVjdGlvbjsgfQorICAgIGdldCBpc1By
b3Zpc2lvbmFsKCkgeyByZXR1cm4gdGhpcy5faXNQcm92aXNpb25hbDsgfQorICAgIHNldCBpc1By
b3Zpc2lvbmFsKHZhbHVlKSB7IHRoaXMuX2lzUHJvdmlzaW9uYWwgPSB2YWx1ZTsgfQogICAgIGdl
dCBleGVjdXRpb25Db250ZXh0KCkgeyByZXR1cm4gdGhpcy5fZXhlY3V0aW9uQ29udGV4dDsgfQog
CiAgICAgZ2V0IHJlc291cmNlQ29sbGVjdGlvbigpIHsgcmV0dXJuIHRoaXMuX3Jlc291cmNlQ29s
bGVjdGlvbjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvRm9udFJlc291cmNlQ29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9Gb250UmVzb3VyY2VDb250ZW50Vmlldy5qcwppbmRleCA4
OTkzZTVlMmM3N2NiY2MwYjE4OGI0ZjViNzczYjJhZDZmNTk2ODM4Li5kNmNiMGMyZjI2MzE0ODA1
ZThlYmUyMDIyMzM2NTk5NzkwM2MzZWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9Gb250UmVzb3VyY2VDb250ZW50Vmlldy5qcworKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Gb250UmVzb3VyY2VDb250
ZW50Vmlldy5qcwpAQCAtMTQ2LDcgKzE0Niw3IEBAIFdJLkZvbnRSZXNvdXJjZUNvbnRlbnRWaWV3
ID0gY2xhc3MgRm9udFJlc291cmNlQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5SZXNvdXJjZUNvCiAK
ICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGxvY2FsUmVzb3VyY2VPdmVycmlkZSk7CiAKLSAg
ICAgICAgICAgIGxldCByZXZpc2lvbiA9IGxvY2FsUmVzb3VyY2VPdmVycmlkZS5sb2NhbFJlc291
cmNlLmN1cnJlbnRSZXZpc2lvbjsKKyAgICAgICAgICAgIGxldCByZXZpc2lvbiA9IGxvY2FsUmVz
b3VyY2VPdmVycmlkZS5sb2NhbFJlc291cmNlLmVkaXRhYmxlUmV2aXNpb247CiAgICAgICAgICAg
ICByZXZpc2lvbi51cGRhdGVSZXZpc2lvbkNvbnRlbnQoY29udGVudCwge2Jhc2U2NEVuY29kZWQs
IG1pbWVUeXBlfSk7CiAKICAgICAgICAgICAgIGlmICghdGhpcy5zaG93aW5nTG9jYWxSZXNvdXJj
ZU92ZXJyaWRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvSW1hZ2VSZXNvdXJjZUNvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvSW1hZ2VSZXNvdXJjZUNvbnRlbnRWaWV3LmpzCmluZGV4
IGEzMDJiMTc0OWY4YWRkODIwMTg3NmQ0MWEyNTdlNTE4YTQ4NjFkNjIuLmQ3NTNlZGEwYWI3YTZm
NmI0MjAyM2I4ZTc2OGIzYWFlZmFkNzRlYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0ltYWdlUmVzb3VyY2VDb250ZW50Vmlldy5qcworKysg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9JbWFnZVJlc291cmNl
Q29udGVudFZpZXcuanMKQEAgLTE2MCw3ICsxNjAsNyBAQCBXSS5JbWFnZVJlc291cmNlQ29udGVu
dFZpZXcgPSBjbGFzcyBJbWFnZVJlc291cmNlQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5SZXNvdXJj
ZQogCiAgICAgICAgICAgICBjb25zb2xlLmFzc2VydChsb2NhbFJlc291cmNlT3ZlcnJpZGUpOwog
Ci0gICAgICAgICAgICBsZXQgcmV2aXNpb24gPSBsb2NhbFJlc291cmNlT3ZlcnJpZGUubG9jYWxS
ZXNvdXJjZS5jdXJyZW50UmV2aXNpb247CisgICAgICAgICAgICBsZXQgcmV2aXNpb24gPSBsb2Nh
bFJlc291cmNlT3ZlcnJpZGUubG9jYWxSZXNvdXJjZS5lZGl0YWJsZVJldmlzaW9uOwogICAgICAg
ICAgICAgcmV2aXNpb24udXBkYXRlUmV2aXNpb25Db250ZW50KGNvbnRlbnQsIHtiYXNlNjRFbmNv
ZGVkLCBtaW1lVHlwZX0pOwogCiAgICAgICAgICAgICBpZiAoIXRoaXMuc2hvd2luZ0xvY2FsUmVz
b3VyY2VPdmVycmlkZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL05hdmlnYXRpb25TaWRlYmFyUGFuZWwuanMgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLmpzCmluZGV4
IDIyZWQ4OTY1OGQ3MDBmZjgzNTA1ZDRhNGRiMDQyYjg0NjQwOGNmZmMuLmNhOTM3Y2Y4ZmQwNjUw
YTVmZWJmNTY1NTVhMjMxZTM0NTU4NTQ5MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05hdmlnYXRpb25TaWRlYmFyUGFuZWwuanMKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTmF2aWdhdGlvblNpZGVi
YXJQYW5lbC5qcwpAQCAtNzA1LDcgKzcwNSw3IEBAIFdJLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwg
PSBjbGFzcyBOYXZpZ2F0aW9uU2lkZWJhclBhbmVsIGV4dGVuZHMgV0kuU2lkZWJhclBhbmVsCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgICAgICBpZiAobWF0Y2hUeXBl
T25seSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICByZXR1
cm4gISF0eXBlSWRlbnRpZmllcjsKIAogICAgICAgICAgICAgdmFyIGNhbmRpZGF0ZU9iamVjdENv
b2tpZSA9IHt9OwogICAgICAgICAgICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0LnNhdmVJZGVudGl0
eVRvQ29va2llKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvUmVzb3VyY2VDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlQ29udGVudFZpZXcuanMKaW5kZXggOTBlNjQ4YjVk
Y2IzZmZiY2I1YzU3NzllYTY5OWU1YzM5Y2ZkY2QwZi4uMTFmOTI4N2JiNTQxM2M2YWNiMjkzMDMw
NTAxMWRhNDhiNmVjZTlhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvUmVzb3VyY2VDb250ZW50Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZUNvbnRlbnRWaWV3LmpzCkBAIC0y
MDksOCArMjA5LDEyIEBAIFdJLlJlc291cmNlQ29udGVudFZpZXcgPSBjbGFzcyBSZXNvdXJjZUNv
bnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVudFZpZXcKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogCisgICAgICAgIC8vIFRoZSB2aWV3IG1heWJlIHBvcHVsYXRlZCB3aXRoIGlubGlu
ZSBzY3JpcHRzIGNvbnRlbnQgYnkgdGhlIHRpbWUgcmVzb3VyY2UKKyAgICAgICAgLy8gY29udGVu
dCBhcnJpdmVzLiBTb3VyY2VDb2RlVGV4dEVkaXRvciB3aWxsIGhhbmRsZSB0aGF0LgorICAgICAg
ICBpZiAodGhpcy5faGFzQ29udGVudCgpKQorICAgICAgICAgICAgcmV0dXJuOworCiAgICAgICAg
IC8vIENvbnRlbnQgaXMgcmVhZHkgdG8gc2hvdywgY2FsbCB0aGUgcHVibGljIG1ldGhvZCBub3cu
Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzLl9oYXNDb250ZW50KCkpOwogICAgICAgICBj
b25zb2xlLmFzc2VydChwYXJhbWV0ZXJzLnNvdXJjZUNvZGUgPT09IHRoaXMuX3Jlc291cmNlKTsK
ICAgICAgICAgdGhpcy5jb250ZW50QXZhaWxhYmxlKHBhcmFtZXRlcnMuc291cmNlQ29kZS5jb250
ZW50LCBwYXJhbWV0ZXJzLmJhc2U2NEVuY29kZWQpOwogCkBAIC0yOTAsNyArMjk0LDcgQEAgV0ku
UmVzb3VyY2VDb250ZW50VmlldyA9IGNsYXNzIFJlc291cmNlQ29udGVudFZpZXcgZXh0ZW5kcyBX
SS5Db250ZW50VmlldwogICAgICAgICAgICAgbGV0IGxvY2FsUmVzb3VyY2VPdmVycmlkZSA9IFdJ
Lm5ldHdvcmtNYW5hZ2VyLmxvY2FsUmVzb3VyY2VPdmVycmlkZUZvclVSTCh0aGlzLnJlc291cmNl
LnVybCk7CiAgICAgICAgICAgICBjb25zb2xlLmFzc2VydChsb2NhbFJlc291cmNlT3ZlcnJpZGUp
OwogCi0gICAgICAgICAgICBsZXQgcmV2aXNpb24gPSBsb2NhbFJlc291cmNlT3ZlcnJpZGUubG9j
YWxSZXNvdXJjZS5jdXJyZW50UmV2aXNpb247CisgICAgICAgICAgICBsZXQgcmV2aXNpb24gPSBs
b2NhbFJlc291cmNlT3ZlcnJpZGUubG9jYWxSZXNvdXJjZS5lZGl0YWJsZVJldmlzaW9uOwogICAg
ICAgICAgICAgYXdhaXQgdGhpcy5fZ2V0Q29udGVudEZvckxvY2FsUmVzb3VyY2VPdmVycmlkZUZy
b21GaWxlKGZpbGVMaXN0WzBdLCAoe21pbWVUeXBlLCBiYXNlNjRFbmNvZGVkLCBjb250ZW50fSkg
PT4gewogICAgICAgICAgICAgICAgIHJldmlzaW9uLnVwZGF0ZVJldmlzaW9uQ29udGVudChjb250
ZW50LCB7YmFzZTY0RW5jb2RlZCwgbWltZVR5cGV9KTsKICAgICAgICAgICAgIH0pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2NyaXB0Q29u
dGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9T
Y3JpcHRDb250ZW50Vmlldy5qcwppbmRleCBkZmM1NTFhYzdmZTRmNjc4NjEzMjkzN2Q1ZjhjZWQ3
ODg5N2Q4OGQ4Li5jZDM1MDFmODc2M2QxM2M2YmNkYTE1ZjdjZGExYzczNTE2YTJhMWUwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TY3JpcHRD
b250ZW50Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9TY3JpcHRDb250ZW50Vmlldy5qcwpAQCAtMjM2LDcgKzIzNiw3IEBAIFdJLlNjcmlwdENv
bnRlbnRWaWV3ID0gY2xhc3MgU2NyaXB0Q29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50Vmll
dwogCiAgICAgX2hhbmRsZVRleHRFZGl0b3JDb250ZW50RGlkQ2hhbmdlKGV2ZW50KQogICAgIHsK
LSAgICAgICAgdGhpcy5fc2NyaXB0LmN1cnJlbnRSZXZpc2lvbi51cGRhdGVSZXZpc2lvbkNvbnRl
bnQodGhpcy5fdGV4dEVkaXRvci5zdHJpbmcpOworICAgICAgICB0aGlzLl9zY3JpcHQuZWRpdGFi
bGVSZXZpc2lvbi51cGRhdGVSZXZpc2lvbkNvbnRlbnQodGhpcy5fdGV4dEVkaXRvci5zdHJpbmcp
OwogICAgIH0KIAogICAgIF90b2dnbGVQcmV0dHlQcmludChldmVudCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RleHRSZXNvdXJjZUNvbnRl
bnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGV4
dFJlc291cmNlQ29udGVudFZpZXcuanMKaW5kZXggZTliMDUyOWRiMmZhZTNjYmFiYWIxZWNmM2Q2
MDY5MzNjMzdkZmQ1MS4uOWFkOGRkMzkxMDMwMTVkMzhhY2IzYzQwNWRlNmE3ZWMxNDk0ZWI1ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGV4
dFJlc291cmNlQ29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvVGV4dFJlc291cmNlQ29udGVudFZpZXcuanMKQEAgLTI4OSw3ICsyODks
NyBAQCBXSS5UZXh0UmVzb3VyY2VDb250ZW50VmlldyA9IGNsYXNzIFRleHRSZXNvdXJjZUNvbnRl
bnRWaWV3IGV4dGVuZHMgV0kuUmVzb3VyY2VDbwogICAgIF90ZXh0RWRpdG9yQ29udGVudERpZENo
YW5nZShldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMuX2lnbm9yZVNvdXJjZUNvZGVDb250ZW50
RGlkQ2hhbmdlRXZlbnQgPSB0cnVlOwotICAgICAgICB0aGlzLnJlc291cmNlLmN1cnJlbnRSZXZp
c2lvbi51cGRhdGVSZXZpc2lvbkNvbnRlbnQodGhpcy5fdGV4dEVkaXRvci5zdHJpbmcpOworICAg
ICAgICB0aGlzLnJlc291cmNlLmVkaXRhYmxlUmV2aXNpb24udXBkYXRlUmV2aXNpb25Db250ZW50
KHRoaXMuX3RleHRFZGl0b3Iuc3RyaW5nKTsKICAgICAgICAgdGhpcy5faWdub3JlU291cmNlQ29k
ZUNvbnRlbnREaWRDaGFuZ2VFdmVudCA9IGZhbHNlOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yVGFyZ2V0UHJveHkuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yVGFyZ2V0UHJveHkuY3BwCmluZGV4IDFiMzdjMWVkNDM5
NWExN2M1ODNiYTJkNzg2MjE5YzkwYzc0NDAxNmUuLjg1MDk5MzkyZDNhZDBmMTJjZTg5MGI0Mjdl
YTQ3ZjYxZGRiZTI2N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3Bl
Y3RvclRhcmdldFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0
b3JUYXJnZXRQcm94eS5jcHAKQEAgLTc2LDYgKzc2LDkgQEAgdm9pZCBJbnNwZWN0b3JUYXJnZXRQ
cm94eTo6ZGlzY29ubmVjdCgpCiAKICAgICBpZiAobV9wYWdlLmhhc1J1bm5pbmdQcm9jZXNzKCkp
CiAgICAgICAgIG1fcGFnZS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlzY29u
bmVjdEluc3BlY3RvcihpZGVudGlmaWVyKCkpLCBtX3BhZ2Uud2ViUGFnZUlEKCkpOworCisgICAg
aWYgKGlzUGF1c2VkT25TdGFydCgpKQorICAgICAgICBzZXRQYXVzZWRPblN0YXJ0KGZhbHNlKTsK
IH0KIAogdm9pZCBJbnNwZWN0b3JUYXJnZXRQcm94eTo6c2VuZE1lc3NhZ2VUb1RhcmdldEJhY2tl
bmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQpAQCAtMTAwLDQgKzEwMywxMSBAQCBib29sIEluc3Bl
Y3RvclRhcmdldFByb3h5Ojppc1Byb3Zpc2lvbmFsKCkgY29uc3QKICAgICByZXR1cm4gISFtX3By
b3Zpc2lvbmFsUGFnZTsKIH0KIAordm9pZCBJbnNwZWN0b3JUYXJnZXRQcm94eTo6cmVzdW1lVGFy
Z2V0KCkKK3sKKyAgICBpZiAoIW1fcHJvdmlzaW9uYWxQYWdlKQorICAgICAgICByZXR1cm47Cisg
ICAgbV9wcm92aXNpb25hbFBhZ2UtPnJlc3VtZUxvYWRpbmcoKTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3JU
YXJnZXRQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yVGFyZ2V0UHJv
eHkuaAppbmRleCBhMjIzOWNlYzhlMTg4NTBmMzVmN2Y4OGE5YzRlYmFkYzYyYmY0MDIzLi4xZDcy
NWIzZTNlY2VhOGEyNDE2YTFhMzA1NjM3MjcyOTE5MzAxZjJhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3JUYXJnZXRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0luc3BlY3RvclRhcmdldFByb3h5LmgKQEAgLTU3LDYgKzU3LDggQEAgcHVi
bGljOgogICAgIHZvaWQgc2VuZE1lc3NhZ2VUb1RhcmdldEJhY2tlbmQoY29uc3QgU3RyaW5nJikg
b3ZlcnJpZGU7CiAKIHByaXZhdGU6CisgICAgdm9pZCByZXN1bWVUYXJnZXQoKSBvdmVycmlkZTsK
KwogICAgIFdlYlBhZ2VQcm94eSYgbV9wYWdlOwogICAgIFN0cmluZyBtX2lkZW50aWZpZXI7CiAg
ICAgSW5zcGVjdG9yOjpJbnNwZWN0b3JUYXJnZXRUeXBlIG1fdHlwZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcAppbmRleCA2MmY1ODE1NDc1
ODY1OGFlMjUzZmMyMDE5OWY3MTVlYzA5YjFkOWRkLi5mOTA2ZTYxZTA3ZWRiNGI2ZDhjZTMwNjc4
NjNmZTgwYWYwZTRmZWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92
aXNpb25hbFBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlz
aW9uYWxQYWdlUHJveHkuY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIFByb3Zpc2lvbmFsUGFnZVByb3h5
OjpQcm92aXNpb25hbFBhZ2VQcm94eShXZWJQYWdlUHJveHkmIHBhZ2UsIFJlZjxXZWJQcm9jZXNz
UHJvCiAKICAgICBpbml0aWFsaXplV2ViUGFnZSgpOwogCi0gICAgbV9wYWdlLmluc3BlY3RvckNv
bnRyb2xsZXIoKS5kaWRDcmVhdGVQcm92aXNpb25hbFBhZ2UoKnRoaXMpOworICAgIG1fbG9hZGlu
Z1BhdXNlZCA9IG1fcGFnZS5pbnNwZWN0b3JDb250cm9sbGVyKCkuZGlkQ3JlYXRlUHJvdmlzaW9u
YWxQYWdlKCp0aGlzKSA9PSBXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlcjo6UGF1c2VMb2FkaW5n
OjpZZXM7CiB9CiAKIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojp+UHJvdmlzaW9uYWxQYWdlUHJveHko
KQpAQCAtMTE3LDYgKzExNywyMCBAQCBzdGQ6OnVuaXF1ZV9wdHI8RHJhd2luZ0FyZWFQcm94eT4g
UHJvdmlzaW9uYWxQYWdlUHJveHk6OnRha2VEcmF3aW5nQXJlYSgpCiAgICAgcmV0dXJuIFdURk1v
dmUobV9kcmF3aW5nQXJlYSk7CiB9CiAKK3ZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OnJlc3Vt
ZUxvYWRpbmcoKQoreworICAgIGlmIChtX3Jlc3VtZUNhbGxiYWNrKSB7CisgICAgICAgIG1fcmVz
dW1lQ2FsbGJhY2soZmFsc2UpOworICAgICAgICBtX3Jlc3VtZUNhbGxiYWNrID0gbnVsbHB0cjsK
KyAgICB9CisgICAgbV9sb2FkaW5nUGF1c2VkID0gZmFsc2U7Cit9CisKK3ZvaWQgUHJvdmlzaW9u
YWxQYWdlUHJveHk6OnJ1bldoZW5Mb2FkaW5nUmVzdW1lZChXVEY6OkZ1bmN0aW9uPHZvaWQoYm9v
bCk+JiYgY2FsbGJhY2spCit7CisgICAgbV9yZXN1bWVDYWxsYmFjayA9IFdURk1vdmUoY2FsbGJh
Y2spOworfQorCiB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpjYW5jZWwoKQogewogICAgIC8v
IElmIHRoZSBwcm92aXNpb25hbCBsb2FkIHN0YXJ0ZWQsIHRoZW4gaW5kaWNhdGUgdGhhdCBpdCBm
YWlsZWQgZHVlIHRvIGNhbmNlbGxhdGlvbiBieSBjYWxsaW5nIGRpZEZhaWxQcm92aXNpb25hbExv
YWRGb3JGcmFtZSgpLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlz
aW9uYWxQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFn
ZVByb3h5LmgKaW5kZXggN2RiY2VmOWQxZDU1MzVhODM1NGQ3YmFlMGM2MDExYTBhNTFiOTEzNy4u
ZmU3YjUxMDQ5MjBhZGNlN2Q5NThmODk4MTJhMTViZjYzM2Y5Y2FhZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oCkBAIC05MCw2ICs5MCwxMCBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIHByb2Nlc3NEaWRUZXJtaW5hdGUoKTsKIAorICAgIHZvaWQg
cmVzdW1lTG9hZGluZygpOworICAgIGJvb2wgc2hvdWxkUGF1c2VMb2FkaW5nKCkgY29uc3QgeyBy
ZXR1cm4gbV9sb2FkaW5nUGF1c2VkOyB9CisgICAgdm9pZCBydW5XaGVuTG9hZGluZ1Jlc3VtZWQo
V1RGOjpGdW5jdGlvbjx2b2lkKGJvb2wpPiYmKTsKKwogcHJpdmF0ZToKICAgICAvLyBJUEM6Ok1l
c3NhZ2VSZWNlaXZlcgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CkBAIC0xMzgsNiArMTQyLDggQEAgcHJpdmF0ZToKICAg
ICBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50IG1fcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNs
aWVudDsKICAgICBib29sIG1fd2FzQ29tbWl0dGVkIHsgZmFsc2UgfTsKICAgICBVUkwgbV9wcm92
aXNpb25hbExvYWRVUkw7CisgICAgV1RGOjpGdW5jdGlvbjx2b2lkKGJvb2wpPiBtX3Jlc3VtZUNh
bGxiYWNrOworICAgIGJvb2wgbV9sb2FkaW5nUGF1c2VkIHsgZmFsc2UgfTsKIAogI2lmIFBMQVRG
T1JNKENPQ09BKQogICAgIFZlY3Rvcjx1aW50OF90PiBtX2FjY2Vzc2liaWxpdHlUb2tlbjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VJbnNwZWN0b3JDb250cm9s
bGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VJbnNwZWN0b3JDb250cm9s
bGVyLmNwcAppbmRleCBiOWE5NDY5YWI1OTEzNmY5ZTlhMzczNmJmZGIwZTlkNTI5YzBmYmNlLi42
MmFhZjk1NjIzNzkzYjAzMTc3NTA4ZmUyOThjZTAxYWVhZGU5MmMxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBA
IC0xNjcsOSArMTY3LDEyIEBAIHZvaWQgV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXI6OnNlbmRN
ZXNzYWdlVG9JbnNwZWN0b3JGcm9udGVuZChjb25zdCBTdHJpbmcmIHRhCiAgICAgbV90YXJnZXRB
Z2VudC0+c2VuZE1lc3NhZ2VGcm9tVGFyZ2V0VG9Gcm9udGVuZCh0YXJnZXRJZCwgbWVzc2FnZSk7
CiB9CiAKLXZvaWQgV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXI6OmRpZENyZWF0ZVByb3Zpc2lv
bmFsUGFnZShQcm92aXNpb25hbFBhZ2VQcm94eSYgcHJvdmlzaW9uYWxQYWdlKQorV2ViUGFnZUlu
c3BlY3RvckNvbnRyb2xsZXI6OlBhdXNlTG9hZGluZyBXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxl
cjo6ZGlkQ3JlYXRlUHJvdmlzaW9uYWxQYWdlKFByb3Zpc2lvbmFsUGFnZVByb3h5JiBwcm92aXNp
b25hbFBhZ2UpCiB7Ci0gICAgYWRkVGFyZ2V0KEluc3BlY3RvclRhcmdldFByb3h5OjpjcmVhdGUo
cHJvdmlzaW9uYWxQYWdlLCBnZXRUYXJnZXRJRChwcm92aXNpb25hbFBhZ2UpLCBJbnNwZWN0b3I6
Okluc3BlY3RvclRhcmdldFR5cGU6OlBhZ2UpKTsKKyAgICBhdXRvIHRhcmdldCA9IEluc3BlY3Rv
clRhcmdldFByb3h5OjpjcmVhdGUocHJvdmlzaW9uYWxQYWdlLCBnZXRUYXJnZXRJRChwcm92aXNp
b25hbFBhZ2UpLCBJbnNwZWN0b3I6Okluc3BlY3RvclRhcmdldFR5cGU6OlBhZ2UpOworICAgIElu
c3BlY3RvclRhcmdldCogdGFyZ2V0UHRyID0gdGFyZ2V0LmdldCgpOworICAgIGFkZFRhcmdldChX
VEZNb3ZlKHRhcmdldCkpOworICAgIHJldHVybiB0YXJnZXRQdHItPmlzUGF1c2VkT25TdGFydCgp
ID8gV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXI6OlBhdXNlTG9hZGluZzo6WWVzIDogV2ViUGFn
ZUluc3BlY3RvckNvbnRyb2xsZXI6OlBhdXNlTG9hZGluZzo6Tm87CiB9CiAKIHZvaWQgV2ViUGFn
ZUluc3BlY3RvckNvbnRyb2xsZXI6OndpbGxEZXN0cm95UHJvdmlzaW9uYWxQYWdlKGNvbnN0IFBy
b3Zpc2lvbmFsUGFnZVByb3h5JiBwcm92aXNpb25hbFBhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlci5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIuaAppbmRleCA4MjhiYzNj
Y2M3ZTA3ZDgxMjAzMzQzMWIyN2FlN2YwYmM4Y2Y5YzU0Li4zZWQyZTFiYzZmOTM2ODNmN2MzNjBl
M2RmMGQ3NzE4ZjAxMjUyYmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyLmgKQEAgLTY2LDcgKzY2LDggQEAgcHVibGljOgog
ICAgIHZvaWQgZGVzdHJveUluc3BlY3RvclRhcmdldChjb25zdCBTdHJpbmcmIHRhcmdldElkKTsK
ICAgICB2b2lkIHNlbmRNZXNzYWdlVG9JbnNwZWN0b3JGcm9udGVuZChjb25zdCBTdHJpbmcmIHRh
cmdldElkLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwogCi0gICAgdm9pZCBkaWRDcmVhdGVQcm92
aXNpb25hbFBhZ2UoUHJvdmlzaW9uYWxQYWdlUHJveHkmKTsKKyAgICBlbnVtIGNsYXNzIFBhdXNl
TG9hZGluZyB7IE5vLCBZZXMgfTsKKyAgICBQYXVzZUxvYWRpbmcgZGlkQ3JlYXRlUHJvdmlzaW9u
YWxQYWdlKFByb3Zpc2lvbmFsUGFnZVByb3h5Jik7CiAgICAgdm9pZCB3aWxsRGVzdHJveVByb3Zp
c2lvbmFsUGFnZShjb25zdCBQcm92aXNpb25hbFBhZ2VQcm94eSYpOwogICAgIHZvaWQgZGlkQ29t
bWl0UHJvdmlzaW9uYWxQYWdlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG9sZFdlYlBhZ2VJRCwg
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbmV3V2ViUGFnZUlEKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggZmQ5ZDM1NDdlZmNmMTk3YTQ1YmU3Mjg5NTM3
MTBiNDgxZjhkNTljOS4uNjliNjBiNWE1NTE4YWQxNmRmMTQwMzc1ZGU5YzVkMjBlM2M3ZmJlZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0zMDgyLDI4ICsz
MDgyLDM0IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpjb250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nl
c3MoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBzCiAKICAgICBtX3Byb3Zpc2lvbmFsUGFn
ZSA9IG1ha2VVbmlxdWU8UHJvdmlzaW9uYWxQYWdlUHJveHk+KCp0aGlzLCBuZXdQcm9jZXNzLmNv
cHlSZWYoKSwgV1RGTW92ZShzdXNwZW5kZWRQYWdlKSwgbmF2aWdhdGlvbi5uYXZpZ2F0aW9uSUQo
KSwgbmF2aWdhdGlvbi5jdXJyZW50UmVxdWVzdElzUmVkaXJlY3QoKSwgbmF2aWdhdGlvbi5jdXJy
ZW50UmVxdWVzdCgpLCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50KTsKIAotICAgIGlmIChh
dXRvKiBpdGVtID0gbmF2aWdhdGlvbi50YXJnZXRJdGVtKCkpIHsKLSAgICAgICAgTE9HKExvYWRp
bmcsICJXZWJQYWdlUHJveHkgJXAgY29udGludWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNzIHRvIGJh
Y2sgaXRlbSBVUkwgJXMiLCB0aGlzLCBpdGVtLT51cmwoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBh
dXRvIGNvbnRpbnVhdGlvbiA9IFt0aGlzLCBuYXZpZ2F0aW9uID0gbWFrZVJlZihuYXZpZ2F0aW9u
KSwgbmV3UHJvY2VzcyA9IFdURk1vdmUobmV3UHJvY2VzcyksIHdlYnNpdGVQb2xpY2llcyA9IFdU
Rk1vdmUod2Vic2l0ZVBvbGljaWVzKV0oYm9vbCBpc0NhbmNlbGxlZCkgbXV0YWJsZSB7CisgICAg
ICAgIGlmIChhdXRvKiBpdGVtID0gbmF2aWdhdGlvbi0+dGFyZ2V0SXRlbSgpKSB7CisgICAgICAg
ICAgICBMT0coTG9hZGluZywgIldlYlBhZ2VQcm94eSAlcCBjb250aW51ZU5hdmlnYXRpb25Jbk5l
d1Byb2Nlc3MgdG8gYmFjayBpdGVtIFVSTCAlcyIsIHRoaXMsIGl0ZW0tPnVybCgpLnV0ZjgoKS5k
YXRhKCkpOwogCi0gICAgICAgIGF1dG8gdHJhbnNhY3Rpb24gPSBtX3BhZ2VMb2FkU3RhdGUudHJh
bnNhY3Rpb24oKTsKLSAgICAgICAgbV9wYWdlTG9hZFN0YXRlLnNldFBlbmRpbmdBUElSZXF1ZXN0
KHRyYW5zYWN0aW9uLCB7IG5hdmlnYXRpb24ubmF2aWdhdGlvbklEKCksIGl0ZW0tPnVybCgpIH0p
OworICAgICAgICAgICAgYXV0byB0cmFuc2FjdGlvbiA9IG1fcGFnZUxvYWRTdGF0ZS50cmFuc2Fj
dGlvbigpOworICAgICAgICAgICAgbV9wYWdlTG9hZFN0YXRlLnNldFBlbmRpbmdBUElSZXF1ZXN0
KHRyYW5zYWN0aW9uLCB7IG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgpLCBpdGVtLT51cmwoKSB9
KTsKIAotICAgICAgICBtX3Byb3Zpc2lvbmFsUGFnZS0+Z29Ub0JhY2tGb3J3YXJkSXRlbShuYXZp
Z2F0aW9uLCAqaXRlbSwgV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMpKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KKyAgICAgICAgICAgIG1fcHJvdmlzaW9uYWxQYWdlLT5nb1RvQmFja0ZvcndhcmRJ
dGVtKG5hdmlnYXRpb24sICppdGVtLCBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llcykpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CiAKLSAgICBpZiAobV9iYWNrRm9yd2FyZExpc3QtPmN1
cnJlbnRJdGVtKCkgJiYgKG5hdmlnYXRpb24ubG9ja0JhY2tGb3J3YXJkTGlzdCgpID09IExvY2tC
YWNrRm9yd2FyZExpc3Q6OlllcyB8fCBuYXZpZ2F0aW9uLmxvY2tIaXN0b3J5KCkgPT0gTG9ja0hp
c3Rvcnk6OlllcykpIHsKLSAgICAgICAgLy8gSWYgV2ViQ29yZSBpcyBzdXBwb3NlZCB0byBsb2Nr
IHRoZSBoaXN0b3J5IGZvciB0aGlzIGxvYWQsIHRoZW4gdGhlIG5ldyBwcm9jZXNzIG5lZWRzIHRv
IGtub3cgYWJvdXQgdGhlIGN1cnJlbnQgaGlzdG9yeSBpdGVtIHNvIGl0IGNhbiB1cGRhdGUKLSAg
ICAgICAgLy8gaXQgaW5zdGVhZCBvZiBjcmVhdGluZyBhIG5ldyBvbmUuCi0gICAgICAgIG5ld1By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEN1cnJlbnRIaXN0b3J5SXRlbUZvclJl
YXR0YWNoKG1fYmFja0ZvcndhcmRMaXN0LT5jdXJyZW50SXRlbSgpLT5pdGVtU3RhdGUoKSksIG1f
cHJvdmlzaW9uYWxQYWdlLT53ZWJQYWdlSUQoKSk7Ci0gICAgfQorICAgICAgICBpZiAobV9iYWNr
Rm9yd2FyZExpc3QtPmN1cnJlbnRJdGVtKCkgJiYgKG5hdmlnYXRpb24tPmxvY2tCYWNrRm9yd2Fy
ZExpc3QoKSA9PSBMb2NrQmFja0ZvcndhcmRMaXN0OjpZZXMgfHwgbmF2aWdhdGlvbi0+bG9ja0hp
c3RvcnkoKSA9PSBMb2NrSGlzdG9yeTo6WWVzKSkgeworICAgICAgICAgICAgLy8gSWYgV2ViQ29y
ZSBpcyBzdXBwb3NlZCB0byBsb2NrIHRoZSBoaXN0b3J5IGZvciB0aGlzIGxvYWQsIHRoZW4gdGhl
IG5ldyBwcm9jZXNzIG5lZWRzIHRvIGtub3cgYWJvdXQgdGhlIGN1cnJlbnQgaGlzdG9yeSBpdGVt
IHNvIGl0IGNhbiB1cGRhdGUKKyAgICAgICAgICAgIC8vIGl0IGluc3RlYWQgb2YgY3JlYXRpbmcg
YSBuZXcgb25lLgorICAgICAgICAgICAgbmV3UHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6U2V0Q3VycmVudEhpc3RvcnlJdGVtRm9yUmVhdHRhY2gobV9iYWNrRm9yd2FyZExpc3QtPmN1
cnJlbnRJdGVtKCktPml0ZW1TdGF0ZSgpKSwgbV9wcm92aXNpb25hbFBhZ2UtPndlYlBhZ2VJRCgp
KTsKKyAgICAgICAgfQogCi0gICAgLy8gRklYTUU6IFdvcmsgb3V0IHRpbWluZyBvZiByZXNwb25k
aW5nIHdpdGggdGhlIGxhc3QgcG9saWN5IGRlbGVnYXRlLCBldGMKLSAgICBBU1NFUlQoIW5hdmln
YXRpb24uY3VycmVudFJlcXVlc3QoKS5pc0VtcHR5KCkpOwotICAgIGlmIChhdXRvJiBzdWJzdGl0
dXRlRGF0YSA9IG5hdmlnYXRpb24uc3Vic3RpdHV0ZURhdGEoKSkKLSAgICAgICAgbV9wcm92aXNp
b25hbFBhZ2UtPmxvYWREYXRhKG5hdmlnYXRpb24sIHsgc3Vic3RpdHV0ZURhdGEtPmNvbnRlbnQu
ZGF0YSgpLCBzdWJzdGl0dXRlRGF0YS0+Y29udGVudC5zaXplKCkgfSwgc3Vic3RpdHV0ZURhdGEt
Pk1JTUVUeXBlLCBzdWJzdGl0dXRlRGF0YS0+ZW5jb2RpbmcsIHN1YnN0aXR1dGVEYXRhLT5iYXNl
VVJMLCBzdWJzdGl0dXRlRGF0YS0+dXNlckRhdGEuZ2V0KCksIFdURk1vdmUod2Vic2l0ZVBvbGlj
aWVzKSk7CisgICAgICAgIC8vIEZJWE1FOiBXb3JrIG91dCB0aW1pbmcgb2YgcmVzcG9uZGluZyB3
aXRoIHRoZSBsYXN0IHBvbGljeSBkZWxlZ2F0ZSwgZXRjCisgICAgICAgIEFTU0VSVCghbmF2aWdh
dGlvbi0+Y3VycmVudFJlcXVlc3QoKS5pc0VtcHR5KCkpOworICAgICAgICBpZiAoYXV0byYgc3Vi
c3RpdHV0ZURhdGEgPSBuYXZpZ2F0aW9uLT5zdWJzdGl0dXRlRGF0YSgpKQorICAgICAgICAgICAg
bV9wcm92aXNpb25hbFBhZ2UtPmxvYWREYXRhKG5hdmlnYXRpb24sIHsgc3Vic3RpdHV0ZURhdGEt
PmNvbnRlbnQuZGF0YSgpLCBzdWJzdGl0dXRlRGF0YS0+Y29udGVudC5zaXplKCkgfSwgc3Vic3Rp
dHV0ZURhdGEtPk1JTUVUeXBlLCBzdWJzdGl0dXRlRGF0YS0+ZW5jb2RpbmcsIHN1YnN0aXR1dGVE
YXRhLT5iYXNlVVJMLCBzdWJzdGl0dXRlRGF0YS0+dXNlckRhdGEuZ2V0KCksIFdURk1vdmUod2Vi
c2l0ZVBvbGljaWVzKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fcHJvdmlzaW9uYWxQ
YWdlLT5sb2FkUmVxdWVzdChuYXZpZ2F0aW9uLCBSZXNvdXJjZVJlcXVlc3QgeyBuYXZpZ2F0aW9u
LT5jdXJyZW50UmVxdWVzdCgpIH0sIFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xp
Y3k6OlNob3VsZEFsbG93RXh0ZXJuYWxTY2hlbWVzLCBudWxscHRyLCBXVEZNb3ZlKHdlYnNpdGVQ
b2xpY2llcykpOworICAgIH07CisgICAgaWYgKG1fcHJvdmlzaW9uYWxQYWdlLT5zaG91bGRQYXVz
ZUxvYWRpbmcoKSkKKyAgICAgICAgbV9wcm92aXNpb25hbFBhZ2UtPnJ1bldoZW5Mb2FkaW5nUmVz
dW1lZChXVEZNb3ZlKGNvbnRpbnVhdGlvbikpOwogICAgIGVsc2UKLSAgICAgICAgbV9wcm92aXNp
b25hbFBhZ2UtPmxvYWRSZXF1ZXN0KG5hdmlnYXRpb24sIFJlc291cmNlUmVxdWVzdCB7IG5hdmln
YXRpb24uY3VycmVudFJlcXVlc3QoKSB9LCBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxz
UG9saWN5OjpTaG91bGRBbGxvd0V4dGVybmFsU2NoZW1lcywgbnVsbHB0ciwgV1RGTW92ZSh3ZWJz
aXRlUG9saWNpZXMpKTsKKyAgICAgICAgY29udGludWF0aW9uKGZhbHNlKTsKIH0KIAogYm9vbCBX
ZWJQYWdlUHJveHk6OmlzUGFnZU9wZW5lZEJ5RE9NU2hvd2luZ0luaXRpYWxFbXB0eURvY3VtZW50
KCkgY29uc3QKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwppbmRleCA2NGRmOTBhY2IwMDAyOGEwYjEzM2E4OGY5NjgwOGU0NGJlNjJkMTRi
Li40NzE3NjZkMjQ1YjM3MWM2YWE3NGU1NDI1NTNmOTI0MjA5ODI1ZDMzIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjMgQEAKKzIwMTktMTEtMTMgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogYWxsb3cgaW5zcGVjdG9yIHRvIHBhdXNlIHBy
b3Zpc2lvbmFsIHBhZ2UgbG9hZCBhbmQgcmVzdG9yZSBpdHMgc3RhdGUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNDE3MAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3QgdGhhdCBwcm92aXNpb25hbCBs
b2FkaW5nIHdoaWNoIHN0YXJ0cyBiZWZvcmUgcHJldmlvcyBwcm92aXNpb25hbCBsb2FkaW5nCisg
ICAgICAgIGNvbW1pdHMgd2lsbCBiZSBjb3JyZWN0bHkgaGFuZGxlZCBieSB0aGUgaW5zZXBjdG9y
LgorCisgICAgICAgIFRlc3QgdGhhdCBzY3JpcHQgZXhlY3V0aW9uIHdpbGwgYnJlYWsgb24gZGVi
dWdnZXIgc3RhdGVtZW50IGluIGlubGluZSBzY3JpcHRzIGluCisgICAgICAgIGNhc2Ugb2YgY3Jv
c3Mgb3JpZ2luIG5hdmlnYXRpb24gYW5kIFBTT04uCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL2lu
c3BlY3Rvci90YXJnZXQvcGF1c2Utb24taW5saW5lLWRlYnVnZ2VyLXN0YXRlbWVudC1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL3RhcmdldC9wYXVz
ZS1vbi1pbmxpbmUtZGVidWdnZXItc3RhdGVtZW50Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0
dHAvdGVzdHMvaW5zcGVjdG9yL3RhcmdldC9wcm92aXNpb25hbC1sb2FkLWNhbmNlbHMtcHJldmlv
dXMtbG9hZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVj
dG9yL3RhcmdldC9wcm92aXNpb25hbC1sb2FkLWNhbmNlbHMtcHJldmlvdXMtbG9hZC5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci90YXJnZXQvcmVzb3VyY2VzL2lu
bGluZS1kZWJ1Z2dlci1zdGF0ZW1lbnQuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0
cy9pbnNwZWN0b3IvdGFyZ2V0L3RhcmdldC1ldmVudHMtZm9yLXByb3Zpc2lvbmFsLXBhZ2UuaHRt
bDoKKwogMjAxOS0xMS0xMiAgUm9iIEJ1aXMgIDxyYnVpc0BpZ2FsaWEuY29tPgogCiAgICAgICAg
IFVuc2tpcCBzb21lIGZldGNoIHRlc3RzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luc3BlY3Rvci90YXJnZXQvcGF1c2Utb24taW5saW5lLWRlYnVnZ2VyLXN0YXRlbWVudC1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci90YXJnZXQvcGF1
c2Utb24taW5saW5lLWRlYnVnZ2VyLXN0YXRlbWVudC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YjJmNjY4ZTRmOTk2NTVjYzU1MDc4MTFjYWI0YzY0N2JiMDkzOWRhZQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3RhcmdldC9wYXVzZS1vbi1pbmxp
bmUtZGVidWdnZXItc3RhdGVtZW50LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIgQEAKK0FMRVJU
OiBQQVNTOiBTaG91bGQgcGF1c2Ugb24gZGVidWdnZXIgc3RhdGVtZW50LgorVGVzdCBwYWdlIHVz
ZWQgdG8gY2hlY2sgdGhhdCBleGVjdXRpb24gd2lsbCBicmVhayBvbiBpbmxpbmUgJ2RlYnVnZ2Vy
JyBzdGF0ZW1lbnQgYWZ0ZXIgY3Jvc3Mtb3JpZ2luIG5hdmlnYXRpb24uCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci90YXJnZXQvcGF1c2Utb24taW5saW5lLWRl
YnVnZ2VyLXN0YXRlbWVudC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
dGFyZ2V0L3BhdXNlLW9uLWlubGluZS1kZWJ1Z2dlci1zdGF0ZW1lbnQuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5hNjkzMDBkZjUzMTY5MTNkOWUwZjYwN2NlODc5NWRmMmE0MzY0ZTY5Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvdGFyZ2V0L3BhdXNlLW9uLWlu
bGluZS1kZWJ1Z2dlci1zdGF0ZW1lbnQuaHRtbApAQCAtMCwwICsxLDQzIEBACis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8c2NyaXB0IHNy
Yz0iLi4vcmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Citm
dW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBsZXQgc3VpdGUgPSBJbnNwZWN0b3JUZXN0LmNyZWF0ZUFz
eW5jU3VpdGUoIlRhcmdldC5QU09OIik7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAg
ICAgIG5hbWU6ICJJbmxpbmVEZWJ1Z2dlclN0YXRlbWVudCIsCisgICAgICAgIGRlc2NyaXB0aW9u
OiAiQ2hlY2sgdGhhdCBuZXcgcHJvdmlzaW9uYWwgcGFnZSBjYW4gYmUgcGF1c2VkIGJlZm9yZSBu
YXZpZ2F0aW9uLiIsCisgICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7CisgICAgICAgICAg
ICBXSS5kZWJ1Z2dlck1hbmFnZXIuYXdhaXRFdmVudChXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQu
UGF1c2VkKQorICAgICAgICAgICAgLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QucGFzcyhgU2hvdWxkIHBhdXNlIG9uIGRlYnVnZ2VyIHN0YXRlbWVudC5gKTsKKwor
ICAgICAgICAgICAgICAgIC8vIFdhaXQgZm9yIHBhZ2UgcmVsb2FkIGV2ZW50IHRvIGF2b2lkIHJh
Y2UgYmV0d2VlbiB0ZXN0IHJlc3VsdHMgZmx1c2hpbmcgYW5kIHRoZSB0ZXN0IGNvbXBsZXRpb24u
CisgICAgICAgICAgICAgICAgbGV0IHBhZ2VMb2FkUHJvbWlzZSA9IEluc3BlY3RvclRlc3QuYXdh
aXRFdmVudChGcm9udGVuZFRlc3RIYXJuZXNzLkV2ZW50LlRlc3RQYWdlRGlkTG9hZCk7CisgICAg
ICAgICAgICAgICAgLy9XSS5tYWluVGFyZ2V0LkRlYnVnZ2VyQWdlbnQuCisgICAgICAgICAgICAg
ICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgICAgIFdJ
LmRlYnVnZ2VyTWFuYWdlci5yZXN1bWUoKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gcGFnZUxvYWRQcm9taXNlOworICAgICAgICAgICAgfSkKKyAgICAgICAg
ICAgIC50aGVuKHJlc29sdmUpOworCisKKyAgICAgICAgICAgIGNvbnN0IHVybCA9ICJodHRwOi8v
bG9jYWxob3N0OjgwMDAvaW5zcGVjdG9yL3RhcmdldC9yZXNvdXJjZXMvaW5saW5lLWRlYnVnZ2Vy
LXN0YXRlbWVudC5odG1sIjsKKyAgICAgICAgICAgIFdJLm1haW5UYXJnZXQuUGFnZUFnZW50Lm5h
dmlnYXRlKHVybCk7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRlLnJ1blRlc3RDYXNl
c0FuZEZpbmlzaCgpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRl
c3QoKSI+Cis8cD5UZXN0IHRoYXQgZXhlY3V0aW9uIHdpbGwgYnJlYWsgb24gaW5saW5lICdkZWJ1
Z2dlcicgc3RhdGVtZW50IGFmdGVyIGNyb3NzLW9yaWdpbiBuYXZpZ2F0aW9uLgorPC9wPgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0
b3IvdGFyZ2V0L3Byb3Zpc2lvbmFsLWxvYWQtY2FuY2Vscy1wcmV2aW91cy1sb2FkLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3RhcmdldC9wcm92aXNpb25h
bC1sb2FkLWNhbmNlbHMtcHJldmlvdXMtbG9hZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2Fi
ZDI5ODU4NTdhYTU5ZjdkYWEzYmU4N2MwOTk0YzJmOTNiYjhhYQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3RhcmdldC9wcm92aXNpb25hbC1sb2Fk
LWNhbmNlbHMtcHJldmlvdXMtbG9hZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNyBAQAorVGVz
dCB0aGF0IHR3byBjb25zZXF1dGl2ZSBjcm9zcyBkb21haW4gbmF2aWdhdGlvbiByZXF1ZXN0cyB3
aWxsIHJlc3VsdCBpbiB0d28gcHJvdmlzaW9uYWwgdGFyZ2V0cyBiZWluZyBjcmVhdGVkLCBmaXJz
dCBvZiB3aGljaCBpcyBsYXRlciBkZXN0cm95ZWQgYW5kIHRoZSBzZWNvbmQgaXMgY29tbWl0dGVk
LgorCisKKz09IFJ1bm5pbmcgdGVzdCBzdWl0ZTogVGFyZ2V0LlBTT04KKy0tIFJ1bm5pbmcgdGVz
dCBjYXNlOiBQcm92aXNpb25hbFBhZ2VQYXVzZWQKK0N1cnJlbnQgdGFyZ2V0IGlzIDEuCitQQVNT
OiBTaG91bGQgcmVjZWl2ZSB0YXJnZXRDcmVhdGVkIGV2ZW50IGZvciB0YXJnZXQgMi4KK1BBU1M6
IFRhcmdldCAyIHNob3VsZCBiZSBwcm92aXNpb25hbC4KK1BBU1M6IFRhcmdldCAyIHNob3VsZCBi
ZSBwYXVzZWQgb24gc3RhcnQuCitQQVNTOiBTaG91bGQgcmVjZWl2ZSB0YXJnZXREZXN0cm95ZWQg
ZXZlbnQgZm9yIHRhcmdldCAyCitQQVNTOiBTaG91bGQgcmVjZWl2ZSB0YXJnZXRDcmVhdGVkIGV2
ZW50IGZvciB0YXJnZXQgMy4KK1BBU1M6IFRhcmdldCAzIHNob3VsZCBiZSBwcm92aXNpb25hbC4K
K1BBU1M6IFRhcmdldCAzIHNob3VsZCBiZSBwYXVzZWQgb24gc3RhcnQuCitQQVNTOiBTaG91bGQg
cmVjZWl2ZSBkaWRDb21taXRQcm92aXNpb25hbFRhcmdldCBldmVudCAxID0+IDMuCitQQVNTOiBT
aG91bGQgcmVjZWl2ZSB0YXJnZXREZXN0cm95ZWQgZXZlbnQgZm9yIHRhcmdldCAxCitQQVNTOiBT
aG91bGQgaGF2ZSBzZWVuIDMgZGlmZmVyZW50IHRhcmdldHMuCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3RhcmdldC9wcm92aXNpb25hbC1sb2FkLWNhbmNl
bHMtcHJldmlvdXMtbG9hZC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
dGFyZ2V0L3Byb3Zpc2lvbmFsLWxvYWQtY2FuY2Vscy1wcmV2aW91cy1sb2FkLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZWMyMGNlYzViZGExNTU1YjA1NWRiNWE3NTZkMzkwMGJlZmI0NDJjZQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3RhcmdldC9wcm92aXNp
b25hbC1sb2FkLWNhbmNlbHMtcHJldmlvdXMtbG9hZC5odG1sCkBAIC0wLDAgKzEsNzIgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxz
Y3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNj
cmlwdD4KK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGxldCBsYXN0QXNzaWduZWRJZCA9IDA7Cisg
ICAgbGV0IHRhcmdldFRvSWQgPSBuZXcgTWFwOworICAgIGZ1bmN0aW9uIHN0YWJsZVRhcmdldElk
KHRhcmdldElkKQorICAgIHsKKyAgICAgICAgbGV0IGlkID0gdGFyZ2V0VG9JZC5nZXQodGFyZ2V0
SWQpOworICAgICAgICBpZiAoIWlkKSB7CisgICAgICAgICAgICBpZCA9ICsrbGFzdEFzc2lnbmVk
SWQ7CisgICAgICAgICAgICB0YXJnZXRUb0lkLnNldCh0YXJnZXRJZCwgaWQpOworICAgICAgICB9
CisgICAgICAgIHJldHVybiBpZDsKKyAgICB9CisKKyAgICBsZXQgc3VpdGUgPSBJbnNwZWN0b3JU
ZXN0LmNyZWF0ZUFzeW5jU3VpdGUoIlRhcmdldC5QU09OIik7CisKKyAgICBzdWl0ZS5hZGRUZXN0
Q2FzZSh7CisgICAgICAgIG5hbWU6ICJQcm92aXNpb25hbFBhZ2VQYXVzZWQiLAorICAgICAgICBk
ZXNjcmlwdGlvbjogIkNoZWNrIHRoYXQgbmV3IHByb3Zpc2lvbmFsIHBhZ2UgY2FuIGJlIHBhdXNl
ZCBiZWZvcmUgbmF2aWdhdGlvbi4iLAorICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgewor
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coYEN1cnJlbnQgdGFyZ2V0IGlzICR7c3RhYmxl
VGFyZ2V0SWQoV0kubWFpblRhcmdldC5pZGVudGlmaWVyKX0uYCk7CisKKyAgICAgICAgICAgIFdJ
LnRhcmdldE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5UYXJnZXRNYW5hZ2VyLkV2ZW50LlRh
cmdldENyZWF0ZWQsIChldmVudCkgPT4geworICAgICAgICAgICAgICAgIGxldCB7dGFyZ2V0LCBp
c1BhdXNlZE9uU3RhcnR9ID0gZXZlbnQuZGF0YTsKKyAgICAgICAgICAgICAgICBsZXQgdGFyZ2V0
SWQgPSBzdGFibGVUYXJnZXRJZCh0YXJnZXQuaWRlbnRpZmllcik7CisgICAgICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5wYXNzKGBTaG91bGQgcmVjZWl2ZSB0YXJnZXRDcmVhdGVkIGV2ZW50IGZv
ciB0YXJnZXQgJHt0YXJnZXRJZH0uYCk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5l
eHBlY3RUcnVlKHRhcmdldC5pc1Byb3Zpc2lvbmFsLCBgVGFyZ2V0ICR7dGFyZ2V0SWR9IHNob3Vs
ZCBiZSBwcm92aXNpb25hbC5gKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVj
dFRydWUoaXNQYXVzZWRPblN0YXJ0LCBgVGFyZ2V0ICR7dGFyZ2V0SWR9IHNob3VsZCBiZSBwYXVz
ZWQgb24gc3RhcnQuYCk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgV0kudGFyZ2V0
TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLlRhcmdldE1hbmFnZXIuRXZlbnQuRGlkQ29tbWl0
UHJvdmlzaW9uYWxUYXJnZXQsIChldmVudCkgPT4geworICAgICAgICAgICAgICAgIGxldCB7cHJl
dmlvdXNUYXJnZXRJZCwgdGFyZ2V0fSA9IGV2ZW50LmRhdGE7CisgICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5wYXNzKGBTaG91bGQgcmVjZWl2ZSBkaWRDb21taXRQcm92aXNpb25hbFRhcmdl
dCBldmVudCAke3N0YWJsZVRhcmdldElkKHByZXZpb3VzVGFyZ2V0SWQpfSA9PiAke3N0YWJsZVRh
cmdldElkKHRhcmdldC5pZGVudGlmaWVyKX0uYCk7CisgICAgICAgICAgICB9KTsKKworICAgICAg
ICAgICAgV0kudGFyZ2V0TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLlRhcmdldE1hbmFnZXIu
RXZlbnQuVGFyZ2V0RGVzdHJveWVkLCAoZXZlbnQpID0+eworICAgICAgICAgICAgICAgIGxldCB0
YXJnZXRJZCA9IHN0YWJsZVRhcmdldElkKGV2ZW50LmRhdGEudGFyZ2V0SWQpOworICAgICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QucGFzcyhgU2hvdWxkIHJlY2VpdmUgdGFyZ2V0RGVzdHJveWVk
IGV2ZW50IGZvciB0YXJnZXQgJHt0YXJnZXRJZH1gKTsKKyAgICAgICAgICAgIH0pOworCisgICAg
ICAgICAgICAvLyBXYWl0IGZvciBwYWdlIHJlbG9hZCBldmVudCB0byBhdm9pZCByYWNlIGJldHdl
ZW4gdGVzdCByZXN1bHRzIGZsdXNoaW5nIGFuZCB0aGUgdGVzdCBjb21wbGV0aW9uLgorICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5hd2FpdEV2ZW50KEZyb250ZW5kVGVzdEhhcm5lc3MuRXZlbnQu
VGVzdFBhZ2VEaWRMb2FkKQorICAgICAgICAgICAgLnRoZW4oKCkgPT4geworICAgICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwobGFzdEFzc2lnbmVkSWQsIDMsIGBTaG91bGQg
aGF2ZSBzZWVuIDMgZGlmZmVyZW50IHRhcmdldHMuYCk7CisgICAgICAgICAgICB9KQorICAgICAg
ICAgICAgLnRoZW4ocmVzb2x2ZSk7CisKKyAgICAgICAgICAgIC8vIFNlbmQgdHdvIGNvbnNlcXV0
aXZlIG5hdmlnYXRpb24gcmVxdWVzdHMuIFRoZSBsYXR0ZXIgd2lsbCBjYW5jZWwgcHJvdmlzaW9u
YWwKKyAgICAgICAgICAgIC8vIGxvYWQgb2YgdGhlIGZvcm1lci4KKyAgICAgICAgICAgIGNvbnN0
IHVybCA9ICJodHRwOi8vbG9jYWxob3N0OjgwMDAvaW5zcGVjdG9yL3RhcmdldC9wcm92aXNpb25h
bC1sb2FkLWNhbmNlbHMtcHJldmlvdXMtbG9hZC5odG1sIjsKKyAgICAgICAgICAgIFdJLm1haW5U
YXJnZXQuUGFnZUFnZW50Lm5hdmlnYXRlKHVybCk7CisgICAgICAgICAgICBXSS5tYWluVGFyZ2V0
LlBhZ2VBZ2VudC5uYXZpZ2F0ZSh1cmwpOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBzdWl0
ZS5ydW5UZXN0Q2FzZXNBbmRGaW5pc2goKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkg
b25sb2FkPSJydW5UZXN0KCkiPgorPHA+VGVzdCB0aGF0IHR3byBjb25zZXF1dGl2ZSBjcm9zcyBk
b21haW4gbmF2aWdhdGlvbiByZXF1ZXN0cyB3aWxsIHJlc3VsdCBpbiB0d28KK3Byb3Zpc2lvbmFs
IHRhcmdldHMgYmVpbmcgY3JlYXRlZCwgZmlyc3Qgb2Ygd2hpY2ggaXMgbGF0ZXIgZGVzdHJveWVk
IGFuZCB0aGUgc2Vjb25kCitpcyBjb21taXR0ZWQuCis8L3A+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci90YXJnZXQvcmVzb3Vy
Y2VzL2lubGluZS1kZWJ1Z2dlci1zdGF0ZW1lbnQuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL3RhcmdldC9yZXNvdXJjZXMvaW5saW5lLWRlYnVnZ2VyLXN0YXRlbWVudC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjU2MDg0ZTQ4MmUxMjQ2MjlmOTY0MDc2OWQ4ZmVlZmVlMzY3NzEwY2YK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci90YXJn
ZXQvcmVzb3VyY2VzL2lubGluZS1kZWJ1Z2dlci1zdGF0ZW1lbnQuaHRtbApAQCAtMCwwICsxLDIw
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYt
OCI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0LmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQ+CisKK2RlYnVnZ2VyOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBJ
bnNwZWN0b3JUZXN0LmZhaWwoIlRoaXMgY29kZSBzaG91bGQgbmV2ZXIgYWN0dWFsbHkgcnVuLiBJ
dCBpcyBoZXJlIGJlY2FzZSBpbnNwZWN0b3ItdGVzdC5qcyBoYXJuZXNzIHJlcXVpcmVzIGEgdGVz
dCgpIGZ1bmN0aW9uLiIpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1
blRlc3QoKSI+Cis8cD5UZXN0IHBhZ2UgdXNlZCB0byBjaGVjayB0aGF0IGV4ZWN1dGlvbiB3aWxs
IGJyZWFrIG9uIGlubGluZSAnZGVidWdnZXInIHN0YXRlbWVudCBhZnRlciBjcm9zcy1vcmlnaW4g
bmF2aWdhdGlvbi4KKzwvcD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3RhcmdldC90YXJnZXQtZXZlbnRzLWZvci1wcm92aXNp
b25hbC1wYWdlLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci90YXJnZXQv
dGFyZ2V0LWV2ZW50cy1mb3ItcHJvdmlzaW9uYWwtcGFnZS5odG1sCmluZGV4IGU3Mzk1MTM5MzY3
NDRlNTU2ZWMxMTJiZGQ1MmFhMWQ4ZTY0OTRhOTEuLjAyZDdkZWU1MDhkNTkzNjk2Njk0NjJkYzI4
ZWQ3MmY5ZTgzNGYxMzQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL3RhcmdldC90YXJnZXQtZXZlbnRzLWZvci1wcm92aXNpb25hbC1wYWdlLmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvdGFyZ2V0L3RhcmdldC1ldmVudHMtZm9y
LXByb3Zpc2lvbmFsLXBhZ2UuaHRtbApAQCAtMTMsMjIgKzEzLDIxIEBAIGZ1bmN0aW9uIHRlc3Qo
KQogICAgICAgICBkZXNjcmlwdGlvbjogIkNoZWNrIHRoYXQgYSBuZXcgdGFyZ2V0IHdpbGwgYmUg
Y3JlYXRlZCBmb3IgcHJvdmlzaW9uYWwgcGFnZS4iLAogICAgICAgICB0ZXN0KHJlc29sdmUsIHJl
amVjdCkgewogICAgICAgICAgICAgY29uc3QgbWFpblRhcmdldElkID0gV0kubWFpblRhcmdldC5p
ZGVudGlmaWVyOwotICAgICAgICAgICAgbGV0IG5ld1RhcmdldElkOworICAgICAgICAgICAgbGV0
IG5ld1RhcmdldDsKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG1haW5UYXJnZXRJ
ZCk7CiAgICAgICAgICAgICBsZXQgcmVsb2FkUHJvbWlzZSA9IEluc3BlY3RvclRlc3QuYXdhaXRF
dmVudChGcm9udGVuZFRlc3RIYXJuZXNzLkV2ZW50LlRlc3RQYWdlRGlkTG9hZCk7CiAKICAgICAg
ICAgICAgIFdJLnRhcmdldE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5UYXJnZXRNYW5hZ2Vy
LkV2ZW50LlRhcmdldENyZWF0ZWQsIChldmVudCkgPT4gewotICAgICAgICAgICAgICAgIGxldCB7
dGFyZ2V0SW5mb30gPSBldmVudC5kYXRhOwotICAgICAgICAgICAgICAgIG5ld1RhcmdldElkID0g
dGFyZ2V0SW5mby50YXJnZXRJZDsKKyAgICAgICAgICAgICAgICBuZXdUYXJnZXQgPSBldmVudC5k
YXRhLnRhcmdldDsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnBhc3MoYFNob3VsZCBy
ZWNlaXZlIHRhcmdldENyZWF0ZWQgZXZlbnQuYCk7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5leHBlY3RUcnVlKHRhcmdldEluZm8uaXNQcm92aXNpb25hbCwgIlRhcmdldCBzaG91bGQg
YmUgcHJvdmlzaW9uYWwuIik7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RU
cnVlKG5ld1RhcmdldC5pc1Byb3Zpc2lvbmFsLCAiVGFyZ2V0IHNob3VsZCBiZSBwcm92aXNpb25h
bC4iKTsKICAgICAgICAgICAgIH0pOwogCiAgICAgICAgICAgICBXSS50YXJnZXRNYW5hZ2VyLmFk
ZEV2ZW50TGlzdGVuZXIoV0kuVGFyZ2V0TWFuYWdlci5FdmVudC5EaWRDb21taXRQcm92aXNpb25h
bFRhcmdldCwgKGV2ZW50KSA9PiB7Ci0gICAgICAgICAgICAgICAgbGV0IHtwcmV2aW91c1Rhcmdl
dElkLCB0YXJnZXRJbmZvfSA9IGV2ZW50LmRhdGE7CisgICAgICAgICAgICAgICAgbGV0IHtwcmV2
aW91c1RhcmdldElkLCB0YXJnZXR9ID0gZXZlbnQuZGF0YTsKICAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LnBhc3MoYFNob3VsZCByZWNlaXZlIGRpZENvbW1pdFByb3Zpc2lvbmFsVGFyZ2V0
IGV2ZW50LmApOwogICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwocHJl
dmlvdXNUYXJnZXRJZCwgbWFpblRhcmdldElkLCAiUHJldmlvdXMgdGFyZ2V0IHNob3VsZCBiZSB0
aGUgY3VycmVudCBvbmUuIik7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RF
cXVhbCh0YXJnZXRJbmZvLnRhcmdldElkLCBuZXdUYXJnZXRJZCwgIkNvbW1pdHRlZCB0YXJnZXQg
c2hvdWxkIG1hdGNoIHByb3Zpc2lvbmFsIHRhcmdldC4iKTsKKyAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHRhcmdldCwgbmV3VGFyZ2V0LCAiQ29tbWl0dGVkIHRhcmdl
dCBzaG91bGQgbWF0Y2ggcHJvdmlzaW9uYWwgdGFyZ2V0LiIpOwogICAgICAgICAgICAgfSk7CiAK
ICAgICAgICAgICAgIFdJLnRhcmdldE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5UYXJnZXRN
YW5hZ2VyLkV2ZW50LlRhcmdldERlc3Ryb3llZCwgKGV2ZW50KSA9PnsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>384109</attachid>
            <date>2019-11-21 17:26:01 -0800</date>
            <delta_ts>2019-12-03 13:14:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204170-20191121172601.patch</filename>
            <type>text/plain</type>
            <size>54244</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyNzUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
YzJiMDM0OGE1NzA4YTE1M2UxZjcyN2RlMDIxMjZkMTZjZDEyODBiLi42YTlkMjkxM2Y4YjBlM2Nh
M2MzZTYxOWI4ZDhlNzkyZjZiZjA0NTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNSBAQAorMjAxOS0xMS0xMyAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBhbGxvdyBpbnNwZWN0b3IgdG8gcGF1c2Ug
cHJvdmlzaW9uYWwgcGFnZSBsb2FkIGFuZCByZXN0b3JlIGl0cyBzdGF0ZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0MTcwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgYW4gb3B0aW9uIHRvIFRh
cmdldCBkb21haW4gdG8gcGF1c2UgYWxsIG5ldyB0YXJnZXRzIG9uIHN0YXJ0IHdhaXRpbmcgZm9y
CisgICAgICAgIGV4cGxpY2l0ICdyZXN1bWUnIGNvbW1hbmQgZnJvbSB0aGUgaW5zcGVjdG9yIGZy
b250LWVuZC4gVGhpcyBhbGxvd3MgdG8gY29uZmlndXJlCisgICAgICAgIGluc3BlY3RvciBiYWNr
ZW5kIChpbmNsdWRpbmcgdXNlciBhZ2VudCBvdmVycmlkZXMsIGJyZWFrcG9pbnRzIGFuZCBpbnN0
cnVtZW50YXRpb24pCisgICAgICAgIGJlZm9yZSBuYXZpZ2F0aW9uIHN0YXJ0cy4KKworICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JUYXJnZXQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvclRhcmdldEFnZW50LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVj
dG9yVGFyZ2V0QWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAg
KEluc3BlY3Rvcjo6SW5zcGVjdG9yVGFyZ2V0QWdlbnQ6OnNldFBhdXNlT25TdGFydCk6CisgICAg
ICAgIChJbnNwZWN0b3I6Okluc3BlY3RvclRhcmdldEFnZW50OjpyZXN1bWUpOgorICAgICAgICAo
SW5zcGVjdG9yOjpidWlsZFRhcmdldEluZm9PYmplY3QpOgorICAgICAgICAoSW5zcGVjdG9yOjpJ
bnNwZWN0b3JUYXJnZXRBZ2VudDo6dGFyZ2V0Q3JlYXRlZCk6CisgICAgICAgICogaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JUYXJnZXRBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9wcm90
b2NvbC9UYXJnZXQuanNvbjoKKwogMjAxOS0xMS0yMSAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0Bh
cHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogcmVtb3ZpbmcgdGhlIGJsYWNrYm94
IGZvciBhIHNwZWNpZmljIHNjcmlwdCBkb2Vzbid0IGFjdHVhbGx5IHJlbW92ZSB0aGUgYmxhY2ti
b3gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IGE4ZDI3ZDI1OTY5Mjk3MTIyYmRiN2JjOTI0
Y2QyNDQxMWVmZWIwNjQuLmQ1MzZiYjQ5NDI1MzE4MDM4M2M2MGQ5MzNlMzA4YmQxYjdjMzI0NGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDE5LTExLTEzICBZ
dXJ5IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNw
ZWN0b3I6IGFsbG93IGluc3BlY3RvciB0byBwYXVzZSBwcm92aXNpb25hbCBwYWdlIGxvYWQgYW5k
IHJlc3RvcmUgaXRzIHN0YXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDQxNzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBbGwgbmV3IHRhcmdldHMgYXJlIG5vdyBhdXRvbWF0aWNhbGx5IHBhdXNlZCBv
biBzdGFydC4gRm9yIHN1Y2ggcHJvdmlzaW9uYWwgdGFyZ2V0cyB0YXJnZXQKKyAgICAgICAgbWFu
YWdlciB3aWxsIHJ1biByZWd1bGFyIGluaXRpbGl6YXRpb24gY29kZSAoZW5hYmxlIGFnZW50cyBl
dGMuKSBhbmQgdGhlbiByZXN1bWUgbG9hZGluZyBvZgorICAgICAgICB0aGUgdGFyZ2V0LiBSZXNw
b25zZXMgYW5kIGV2ZW50cyBmcm9tIHRoZSB0YXJnZXQgYXJlIGRlZmZlcnJlZCB1bnRpbCB0aGUg
dGFyZ2V0IGlzIGNvbW1pdHRlZAorICAgICAgICBhbmQgYmVjb21lcyBjdXJyZW50IG1haW4gdGFy
Z2V0LiBXaGVuIHRoZSB0YXJnZXQgbWFuYWdlciByZWNlaXZlcyBldmVudCB0aGF0IHRoZSBwcm92
aXNpb25hbAorICAgICAgICB0YXJnZXQgaGFzIGJlZW4gY29tbWl0dGVkIGFsbCBhY2N1bXVsYXRl
ZCBwcm90b2NvbCBtZXNzYWdlcyBhcmUgcmVwbGF5ZWQgYW5kIGdvaW5nIGZvcndhcmQgYWxsCisg
ICAgICAgIG5ldyBtaXNzYWdlcyB3aWxsIGJlIGRpc3BhdGNoZWQgYXMgdXN1YWwuCisKKyAgICAg
ICAgKiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0NTU01hbmFnZXIuanM6CisgICAgICAgIChX
SS5DU1NNYW5hZ2VyLnByb3RvdHlwZS5fcmVzb3VyY2VDb250ZW50RGlkQ2hhbmdlLmFwcGx5U3R5
bGVTaGVldENoYW5nZXMuc3R5bGVTaGVldEZvdW5kKToKKyAgICAgICAgKFdJLkNTU01hbmFnZXIu
cHJvdG90eXBlLl9yZXNvdXJjZUNvbnRlbnREaWRDaGFuZ2UuYXBwbHlTdHlsZVNoZWV0Q2hhbmdl
cyk6CisgICAgICAgIChXSS5DU1NNYW5hZ2VyLnByb3RvdHlwZS5fcmVzb3VyY2VDb250ZW50RGlk
Q2hhbmdlKToKKyAgICAgICAgKFdJLkNTU01hbmFnZXIucHJvdG90eXBlLl91cGRhdGVSZXNvdXJj
ZUNvbnRlbnQuZmV0Y2hlZFN0eWxlU2hlZXRDb250ZW50KToKKyAgICAgICAgKiBVc2VySW50ZXJm
YWNlL0NvbnRyb2xsZXJzL1RhcmdldE1hbmFnZXIuanM6CisgICAgICAgIChXSS5UYXJnZXRNYW5h
Z2VyKToKKyAgICAgICAgKFdJLlRhcmdldE1hbmFnZXIucHJvdG90eXBlLmNyZWF0ZU11bHRpcGxl
eGluZ0JhY2tlbmRUYXJnZXQpOgorICAgICAgICAoV0kuVGFyZ2V0TWFuYWdlci5wcm90b3R5cGUu
dGFyZ2V0Q3JlYXRlZCk6CisgICAgICAgIChXSS5UYXJnZXRNYW5hZ2VyLnByb3RvdHlwZS5kaWRD
b21taXRQcm92aXNpb25hbFRhcmdldCk6CisgICAgICAgIChXSS5UYXJnZXRNYW5hZ2VyLnByb3Rv
dHlwZS5kaXNwYXRjaE1lc3NhZ2VGcm9tVGFyZ2V0KToKKyAgICAgICAgKFdJLlRhcmdldE1hbmFn
ZXIucHJvdG90eXBlLl9jb25uZWN0VG9UYXJnZXQpOgorICAgICAgICAoV0kuVGFyZ2V0TWFuYWdl
ci5wcm90b3R5cGUuX2Rlc3Ryb3lUYXJnZXQpOgorICAgICAgICAoV0kuVGFyZ2V0TWFuYWdlci5w
cm90b3R5cGUuX2NyZWF0ZVRhcmdldCk6CisgICAgICAgIChXSS5UYXJnZXRNYW5hZ2VyLnByb3Rv
dHlwZS5fY2hlY2tBbmRIYW5kbGVQYWdlVGFyZ2V0VHJhbnNpdGlvbik6CisgICAgICAgIChXSS5U
YXJnZXRNYW5hZ2VyLnByb3RvdHlwZS5fY2hlY2tBbmRIYW5kbGVQYWdlVGFyZ2V0VGVybWluYXRp
b24pOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTW9kZWxzL1NvdXJjZUNvZGUuanM6CisgICAg
ICAgIChXSS5Tb3VyY2VDb2RlLnByb3RvdHlwZS5nZXQgY3VycmVudFJldmlzaW9uKToKKyAgICAg
ICAgKFdJLlNvdXJjZUNvZGUucHJvdG90eXBlLmdldCBlZGl0YWJsZVJldmlzaW9uKToKKyAgICAg
ICAgKFdJLlNvdXJjZUNvZGUucHJvdG90eXBlLmdldCBjb250ZW50KToKKyAgICAgICAgKFdJLlNv
dXJjZUNvZGUucHJvdG90eXBlLnJldmlzaW9uQ29udGVudERpZENoYW5nZSk6CisgICAgICAgICog
VXNlckludGVyZmFjZS9Qcm90b2NvbC9Db25uZWN0aW9uLmpzOgorICAgICAgICAoSW5zcGVjdG9y
QmFja2VuZC5Db25uZWN0aW9uKToKKyAgICAgICAgKEluc3BlY3RvckJhY2tlbmQuQ29ubmVjdGlv
bi5wcm90b3R5cGUuYWRkUHJvdmlzaW9uYWxNZXNzYWdlKToKKyAgICAgICAgKEluc3BlY3RvckJh
Y2tlbmQuQ29ubmVjdGlvbi5wcm90b3R5cGUuZGlzcGF0Y2hQcm92aXNpb25hbE1lc3NhZ2VzKToK
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Byb3RvY29sL1BhZ2VUYXJnZXQuanM6CisgICAgICAg
IChXSS5QYWdlVGFyZ2V0KToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Byb3RvY29sL1Rhcmdl
dC5qczoKKyAgICAgICAgKFdJLlRhcmdldCk6CisgICAgICAgIChXSS5UYXJnZXQucHJvdG90eXBl
LmdldCBpc1Byb3Zpc2lvbmFsKToKKyAgICAgICAgKFdJLlRhcmdldC5wcm90b3R5cGUuc2V0IGlz
UHJvdmlzaW9uYWwpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvRm9udFJlc291cmNl
Q29udGVudFZpZXcuanM6CisgICAgICAgIChXSS5Gb250UmVzb3VyY2VDb250ZW50Vmlldy5wcm90
b3R5cGUuZHJvcFpvbmVIYW5kbGVEcm9wKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdz
L0ltYWdlUmVzb3VyY2VDb250ZW50Vmlldy5qczoKKyAgICAgICAgKFdJLkltYWdlUmVzb3VyY2VD
b250ZW50Vmlldy5wcm90b3R5cGUuZHJvcFpvbmVIYW5kbGVEcm9wKToKKyAgICAgICAgKiBVc2Vy
SW50ZXJmYWNlL1ZpZXdzL05hdmlnYXRpb25TaWRlYmFyUGFuZWwuanM6CisgICAgICAgIChXSS5O
YXZpZ2F0aW9uU2lkZWJhclBhbmVsLnByb3RvdHlwZS5fY2hlY2tFbGVtZW50c0ZvclBlbmRpbmdW
aWV3U3RhdGVDb29raWUudHJlZUVsZW1lbnRNYXRjaGVzQ29va2llKToKKyAgICAgICAgKFdJLk5h
dmlnYXRpb25TaWRlYmFyUGFuZWwucHJvdG90eXBlLl9jaGVja0VsZW1lbnRzRm9yUGVuZGluZ1Zp
ZXdTdGF0ZUNvb2tpZSk6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZUNv
bnRlbnRWaWV3LmpzOgorICAgICAgICAoV0kuUmVzb3VyY2VDb250ZW50Vmlldy5wcm90b3R5cGUu
X2NvbnRlbnRBdmFpbGFibGUpOgorICAgICAgICAoV0kuUmVzb3VyY2VDb250ZW50Vmlldy5wcm90
b3R5cGUuX2hhbmRsZUltcG9ydExvY2FsUmVzb3VyY2VPdmVycmlkZSk6CisgICAgICAgICogVXNl
ckludGVyZmFjZS9WaWV3cy9TY3JpcHRDb250ZW50Vmlldy5qczoKKyAgICAgICAgKFdJLlNjcmlw
dENvbnRlbnRWaWV3LnByb3RvdHlwZS5faGFuZGxlVGV4dEVkaXRvckNvbnRlbnREaWRDaGFuZ2Up
OgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvVGV4dFJlc291cmNlQ29udGVudFZpZXcu
anM6CisgICAgICAgIChXSS5UZXh0UmVzb3VyY2VDb250ZW50Vmlldy5wcm90b3R5cGUuX3RleHRF
ZGl0b3JDb250ZW50RGlkQ2hhbmdlKToKKwogMjAxOS0xMS0yMSAgTmlraXRhIFZhc2lseWV2ICA8
bnZhc2lseWV2QGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBPdXRsaW5lIHNS
R0Itc2FmZSBhcmVhcyBvbiBQMyBjb2xvciBwaWNrZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggOTlmY2MwNjI2M2U3
OGNhMjc2YWFjNDYxMDRkNzY3ODZkYzAwYTg0ZC4uZmM3NzAzMTFiMGQ3MmQ4NzM5NzJlODlhMThk
ZGIzOGM4MzQyZWZmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNSBAQAorMjAxOS0xMS0xMyAgWXVy
eSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBhbGxvdyBpbnNwZWN0b3IgdG8gcGF1c2UgcHJvdmlzaW9uYWwgcGFnZSBsb2FkIGFuZCBy
ZXN0b3JlIGl0cyBzdGF0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjA0MTcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgUHJvdmlzaW9uYWwgcGFnZSBsb2FkaW5nIGNhbiBiZSBkZWZmZXJlZCBpZiBpbnNw
ZWN0b3IgZnJvbnQtZW5kIGlzIGNvbm5lY3RlZC4gVGhpcworICAgICAgICBhbGxvd3MgdG8gY29u
ZmlndXJlIGluc3BlY3RvciBiYWNrZW5kIGluIHRoZSBwcm92aXNpb25hbCBwYWdlIGJlZm9yZSBs
b2FkIHJlcXVlc3QKKyAgICAgICAgaXMgc2VudC4gSWYgaW5zcGVjdG9yIGZyb250LWVuZCBpcyBu
b3QgY29ubmVjdGVkIHByb3Zpc2lvbmFsIGxvYWRpbmcgd2lsbCBjb25pdGludWUKKyAgICAgICAg
ZXhhY3RseSBhcyBiZWZvcmUuCisKKyAgICAgICAgVGVzdHM6IGh0dHAvdGVzdHMvaW5zcGVjdG9y
L3RhcmdldC9wYXVzZS1vbi1pbmxpbmUtZGVidWdnZXItc3RhdGVtZW50Lmh0bWwKKyAgICAgICAg
ICAgICAgIGh0dHAvdGVzdHMvaW5zcGVjdG9yL3RhcmdldC9wcm92aXNpb25hbC1sb2FkLWNhbmNl
bHMtcHJldmlvdXMtbG9hZC5odG1sCisKKyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yVGFy
Z2V0UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbnNwZWN0b3JUYXJnZXRQcm94eTo6ZGlz
Y29ubmVjdCk6CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvclRhcmdldFByb3h5OjpyZXN1bWVU
YXJnZXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3JUYXJnZXRQcm94eS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlByb3Zpc2lvbmFsUGFnZVByb3h5OjpQcm92aXNpb25hbFBhZ2VQcm94eSk6CisgICAgICAg
IChXZWJLaXQ6OlByb3Zpc2lvbmFsUGFnZVByb3h5OjpyZXN1bWVMb2FkaW5nKToKKyAgICAgICAg
KFdlYktpdDo6UHJvdmlzaW9uYWxQYWdlUHJveHk6OnJ1bldoZW5Mb2FkaW5nUmVzdW1lZCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5Lmg6CisgICAgICAgIChXZWJL
aXQ6OlByb3Zpc2lvbmFsUGFnZVByb3h5OjpzaG91bGRQYXVzZUxvYWRpbmcgY29uc3QpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRDcmVhdGVQcm92aXNpb25h
bFBhZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlci5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmNvbnRpbnVlTmF2aWdhdGlvbkluTmV3UHJvY2Vzcyk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c3BlZWNoU3ludGhlc2lzUmVzdW1lKToKKwogMjAxOS0x
MS0yMCAgQ2hhbmdTZW9rIE9oICA8Y2hhbmdzZW9rQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW0dU
S10gQWRkIEFOR0xFIGJhY2tlbmQgdG8gR1RLIHBvcnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGFyZ2V0LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRhcmdldC5oCmluZGV4IGE5ZjA0YjhhMGM5YWZhZWVh
NGZlOGMwYTRkMDdkODIzMGE5YzM1NjAuLjQyMjgxMDk3M2EzZmJlOWI2YzA3MTU4ZTY5MDU1NGYw
ZWE2NDgwNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yVGFyZ2V0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JUYXJnZXQuaApAQCAtNDcsMTEgKzQ3LDIzIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIElu
c3BlY3RvclRhcmdldFR5cGUgdHlwZSgpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgYm9vbCBp
c1Byb3Zpc2lvbmFsKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzUGF1c2Vk
KCkgY29uc3QgeyByZXR1cm4gbV9wYXVzZWRPblN0YXJ0OyB9CisgICAgdm9pZCBzZXRQYXVzZWQo
Ym9vbCBwYXVzZWQpCisgICAgeworICAgICAgICBtX3BhdXNlZE9uU3RhcnQgPSBwYXVzZWQ7Cisg
ICAgICAgIGlmICghbV9wYXVzZWRPblN0YXJ0KQorICAgICAgICAgICAgcmVzdW1lVGFyZ2V0KCk7
CisgICAgfQogCiAgICAgLy8gQ29ubmVjdGlvbiBtYW5hZ2VtZW50LgogICAgIHZpcnR1YWwgdm9p
ZCBjb25uZWN0KEZyb250ZW5kQ2hhbm5lbDo6Q29ubmVjdGlvblR5cGUpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgZGlzY29ubmVjdCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2VuZE1lc3NhZ2VU
b1RhcmdldEJhY2tlbmQoY29uc3QgU3RyaW5nJikgPSAwOworCitwcml2YXRlOgorICAgIHZpcnR1
YWwgdm9pZCByZXN1bWVUYXJnZXQoKSB7IH0KKworICAgIGJvb2wgbV9wYXVzZWRPblN0YXJ0IHsg
ZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGFyZ2V0QWdlbnQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGFy
Z2V0QWdlbnQuY3BwCmluZGV4IDExNzcwOTBmYzE4NjIzZWY1MDFjOWFkNGMzMzg5YmMyZGE5MTA3
MWUuLmNmNDFlZmFjZWU5OGFhZTBmMDNhNDYxZmEzODBmMmY3YTRlOGI5MGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRhcmdldEFn
ZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JUYXJnZXRBZ2VudC5jcHAKQEAgLTUyLDYgKzUyLDI4IEBAIHZvaWQgSW5zcGVjdG9yVGFy
Z2V0QWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKERpc2Nvbm5lY3RSZWFzb24p
CiAgICAgZGlzY29ubmVjdEZyb21UYXJnZXRzKCk7CiAKICAgICBtX2lzQ29ubmVjdGVkID0gZmFs
c2U7CisgICAgbV9zaG91bGRQYXVzZU9uU3RhcnQgPSBmYWxzZTsKK30KKwordm9pZCBJbnNwZWN0
b3JUYXJnZXRBZ2VudDo6c2V0UGF1c2VPblN0YXJ0KEVycm9yU3RyaW5nJiwgYm9vbCBwYXVzZU9u
U3RhcnQpCit7CisgICAgbV9zaG91bGRQYXVzZU9uU3RhcnQgPSBwYXVzZU9uU3RhcnQ7Cit9CisK
K3ZvaWQgSW5zcGVjdG9yVGFyZ2V0QWdlbnQ6OnJlc3VtZShFcnJvclN0cmluZyYgZXJyb3IsIGNv
bnN0IFN0cmluZyYgdGFyZ2V0SWQpCit7CisgICAgYXV0byogdGFyZ2V0ID0gbV90YXJnZXRzLmdl
dCh0YXJnZXRJZCk7CisgICAgaWYgKCF0YXJnZXQpIHsKKyAgICAgICAgZXJyb3IgPSAiTWlzc2lu
ZyB0YXJnZXQgZm9yIGdpdmVuIHRhcmdldElkIl9zOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgaWYgKCF0YXJnZXQtPmlzUGF1c2VkKCkpIHsKKyAgICAgICAgZXJyb3IgPSAiVGFyZ2V0
IGZvciBnaXZlbiB0YXJnZXRJZCBpcyBub3QgcGF1c2VkIl9zOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgdGFyZ2V0LT5zZXRQYXVzZWQoZmFsc2UpOwogfQogCiB2b2lkIEluc3BlY3Rv
clRhcmdldEFnZW50OjpzZW5kTWVzc2FnZVRvVGFyZ2V0KEVycm9yU3RyaW5nJiBlcnJvclN0cmlu
ZywgY29uc3QgU3RyaW5nJiB0YXJnZXRJZCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQpAQCAtOTUs
NiArMTE3LDggQEAgc3RhdGljIFJlZjxQcm90b2NvbDo6VGFyZ2V0OjpUYXJnZXRJbmZvPiBidWls
ZFRhcmdldEluZm9PYmplY3QoY29uc3QgSW5zcGVjdG9yVGEKICAgICAgICAgLnJlbGVhc2UoKTsK
ICAgICBpZiAodGFyZ2V0LmlzUHJvdmlzaW9uYWwoKSkKICAgICAgICAgcmVzdWx0LT5zZXRJc1By
b3Zpc2lvbmFsKHRydWUpOworICAgIGlmICh0YXJnZXQuaXNQYXVzZWQoKSkKKyAgICAgICAgcmVz
dWx0LT5zZXRJc1BhdXNlZCh0cnVlKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0xMDYs
NiArMTMwLDcgQEAgdm9pZCBJbnNwZWN0b3JUYXJnZXRBZ2VudDo6dGFyZ2V0Q3JlYXRlZChJbnNw
ZWN0b3JUYXJnZXQmIHRhcmdldCkKICAgICBpZiAoIW1faXNDb25uZWN0ZWQpCiAgICAgICAgIHJl
dHVybjsKIAorICAgIHRhcmdldC5zZXRQYXVzZWQobV9zaG91bGRQYXVzZU9uU3RhcnQpOwogICAg
IHRhcmdldC5jb25uZWN0KGNvbm5lY3Rpb25UeXBlKCkpOwogCiAgICAgbV9mcm9udGVuZERpc3Bh
dGNoZXItPnRhcmdldENyZWF0ZWQoYnVpbGRUYXJnZXRJbmZvT2JqZWN0KHRhcmdldCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
VGFyZ2V0QWdlbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvclRhcmdldEFnZW50LmgKaW5kZXggMzhjYjMxODk4NmIzMWM0ZGVkMTliYTliZWFlNzg1
NWQyYjU0YzIzYS4uMWViN2FiYjJmYTIxZDdhOGVjMDgzMzE2MGY1M2U1YzUyM2VjNDMxNyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
VGFyZ2V0QWdlbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JUYXJnZXRBZ2VudC5oCkBAIC00OSw2ICs0OSw4IEBAIHB1YmxpYzoKICAgICB2
b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKERpc2Nvbm5lY3RSZWFzb24pIGZpbmFs
OwogCiAgICAgLy8gVGFyZ2V0QmFja2VuZERpc3BhdGNoZXJIYW5kbGVyCisgICAgdm9pZCBzZXRQ
YXVzZU9uU3RhcnQoRXJyb3JTdHJpbmcmLCBib29sIHBhdXNlT25TdGFydCkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCByZXN1bWUoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHRhcmdldElkKSBvdmVy
cmlkZTsKICAgICB2b2lkIHNlbmRNZXNzYWdlVG9UYXJnZXQoRXJyb3JTdHJpbmcmLCBjb25zdCBT
dHJpbmcmIHRhcmdldElkLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpIGZpbmFsOwogCiAgICAgLy8g
VGFyZ2V0IGxpZmVjeWNsZS4KQEAgLTcwLDYgKzcyLDcgQEAgcHJpdmF0ZToKICAgICBSZWY8VGFy
Z2V0QmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CiAgICAgSGFzaE1hcDxT
dHJpbmcsIEluc3BlY3RvclRhcmdldCo+IG1fdGFyZ2V0czsKICAgICBib29sIG1faXNDb25uZWN0
ZWQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9zaG91bGRQYXVzZU9uU3RhcnQgeyBmYWxzZSB9Owog
fTsKIAogfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL1RhcmdldC5qc29uIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9UYXJnZXQuanNvbgppbmRleCAyNDBjZDQyZTY3ZTMy
NTBlNDM0YzBiZjZmOWQxNjE2ODUwNWE4YzIyLi41MjkyMGNkZWQyNGE5YzZiMGVmNmZiNGU1MTg2
NjQ5NTVkYjRmOWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3Byb3RvY29sL1RhcmdldC5qc29uCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvcHJvdG9jb2wvVGFyZ2V0Lmpzb24KQEAgLTEwLDExICsxMCwyNiBAQAogICAgICAgICAgICAg
InByb3BlcnRpZXMiOiBbCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ0YXJnZXRJZCIsICJ0
eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhl
IHRhcmdldC4iIH0sCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ0eXBlIiwgInR5cGUiOiAi
c3RyaW5nIiwgImVudW0iOiBbInBhZ2UiLCAic2VydmljZS13b3JrZXIiLCAid29ya2VyIl0gfSwK
LSAgICAgICAgICAgICAgICB7ICJuYW1lIjogImlzUHJvdmlzaW9uYWwiLCAidHlwZSI6ICJib29s
ZWFuIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIlRydWUgdmFsdWUgaW5kaWNh
dGVzIHRoYXQgdGhpcyBpcyBhIHByb3Zpc2lvbmFsIHBhZ2UgdGFyZ2V0IGkuZS4gU3VjaCB0YXJn
ZXQgbWF5IGJlIGNyZWF0ZWQgd2hlbiBjdXJyZW50IHBhZ2Ugc3RhcnRzIGNyb3NzLW9yaWdpbiBu
YXZpZ2F0aW9uLiBFdmVudHVhbGx5IGVhY2ggcHJvdmlzaW9uYWwgdGFyZ2V0IGlzIGVpdGhlciBj
b21taXR0ZWQgYW5kIHN3YXBzIHdpdGggdGhlIGN1cnJlbnQgdGFyZ2V0IG9yIGdldHMgZGVzdHJv
eWVkLCBlLmcuIGluIGNhc2Ugb2YgbG9hZCByZXF1ZXN0IGZhaWx1cmUuIiB9CisgICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJpc1Byb3Zpc2lvbmFsIiwgInR5cGUiOiAiYm9vbGVhbiIsICJvcHRp
b25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJXaGV0aGVyIHRoaXMgaXMgYSBwcm92aXNpb25h
bCBwYWdlIHRhcmdldC4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJpc1BhdXNlZCIs
ICJ0eXBlIjogImJvb2xlYW4iLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiV2hl
dGhlciB0aGUgdGFyZ2V0IGlzIHBhdXNlZCBvbiBzdGFydCBhbmQgaGFzIHRvIGJlIGV4cGxpY2l0
ZWx5IHJlc3VtZWQgYnkgaW5zcGVjdG9yLiIgfQogICAgICAgICAgICAgXQogICAgICAgICB9CiAg
ICAgXSwKICAgICAiY29tbWFuZHMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjog
InNldFBhdXNlT25TdGFydCIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiSWYgc2V0IHRv
IHRydWUsIG5ldyB0YXJnZXRzIHdpbGwgYmUgcGF1c2VkIG9uIHN0YXJ0IHdhaXRpbmcgZm9yIHJl
c3VtZSBjb21tYW5kLiBPdGhlciBjb21tYW5kcyBjYW4gYmUgZGlzcGF0Y2hlZCBvbiB0aGUgdGFy
Z2V0IGJlZm9yZSBpdCBpcyByZXN1bWVkLiIsCisgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsK
KyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInBhdXNlT25TdGFydCIsICJ0eXBlIjogImJvb2xl
YW4iLCAiZGVzY3JpcHRpb24iOiAiSWYgc2V0IHRvIHRydWUsIG5ldyB0YXJnZXRzIHdpbGwgYmUg
cGF1c2VkIG9uIHN0YXJ0IHdhaXRpbmcgZm9yIHJlc3VtZSBjb21tYW5kLiIgfQorICAgICAgICAg
ICAgXQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJyZXN1bWUi
LAorICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIldpbGwgcmVzdW1lIHRhcmdldCBpZiBpdCB3
YXMgcGF1c2VkIG9uIHN0YXJ0LiIsCisgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAg
ICAgICAgICAgICB7ICJuYW1lIjogInRhcmdldElkIiwgInR5cGUiOiAic3RyaW5nIiB9CisgICAg
ICAgICAgICBdCisgICAgICAgIH0sCiAgICAgICAgIHsKICAgICAgICAgICAgICJuYW1lIjogInNl
bmRNZXNzYWdlVG9UYXJnZXQiLAogICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlNlbmQgYW4g
SW5zcGVjdG9yIFByb3RvY29sIG1lc3NhZ2UgdG8gYmUgZGlzcGF0Y2hlZCB0byBhIFRhcmdldCdz
IGFnZW50cy4iLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvQ29udHJvbGxlcnMvVGFyZ2V0TWFuYWdlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1RhcmdldE1hbmFnZXIuanMKaW5kZXggOTY5ODdhNGU1
N2QzYTZjZTMwZjc2NjMzNWQyOTkyMTk1MzE4NzExNS4uOGQ4ZmU5YzBlZDRhOGM4NWFlZjBjY2Uy
NDQyNTJmM2Q3YTA3YjlhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvQ29udHJvbGxlcnMvVGFyZ2V0TWFuYWdlci5qcworKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9UYXJnZXRNYW5hZ2VyLmpzCkBAIC0z
Myw5ICszMyw2IEBAIFdJLlRhcmdldE1hbmFnZXIgPSBjbGFzcyBUYXJnZXRNYW5hZ2VyIGV4dGVu
ZHMgV0kuT2JqZWN0CiAgICAgICAgIHRoaXMuX2NhY2hlZFRhcmdldHNMaXN0ID0gbnVsbDsKICAg
ICAgICAgdGhpcy5fc2VlblBhZ2VUYXJnZXQgPSBmYWxzZTsKICAgICAgICAgdGhpcy5fdHJhbnNp
dGlvblRpbWVvdXRJZGVudGlmaWVyID0gdW5kZWZpbmVkOwotCi0gICAgICAgIHRoaXMuX3Byb3Zp
c2lvbmFsVGFyZ2V0SW5mb3MgPSBuZXcgTWFwOwotICAgICAgICB0aGlzLl9zd2FwcGVkVGFyZ2V0
SWRzID0gbmV3IFNldDsKICAgICB9CiAKICAgICAvLyBQdWJsaWMKQEAgLTk0LDYgKzkxLDkgQEAg
V0kuVGFyZ2V0TWFuYWdlciA9IGNsYXNzIFRhcmdldE1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QK
IAogICAgICAgICBsZXQgdGFyZ2V0ID0gbmV3IFdJLk11bHRpcGxleGluZ0JhY2tlbmRUYXJnZXQ7
CiAgICAgICAgIHRhcmdldC5pbml0aWFsaXplKCk7CisgICAgICAgIC8vIENPTVBBVElCSUxJVFkg
KGlPUyAxMyk6IFRhcmdldC5zZXRQYXVzZU9uU3RhcnQgZGlkIG5vdCBleGlzdCB5ZXQuCisgICAg
ICAgIGlmICh0YXJnZXQuaGFzQ29tbWFuZCgiVGFyZ2V0LnNldFBhdXNlT25TdGFydCIpKQorICAg
ICAgICAgICAgdGFyZ2V0LlRhcmdldEFnZW50LnNldFBhdXNlT25TdGFydCh0cnVlKTsKIAogICAg
ICAgICB0aGlzLl9pbml0aWFsaXplQmFja2VuZFRhcmdldCh0YXJnZXQpOwogCkBAIC0xMjAsOTEg
KzEyMCw2NiBAQCBXSS5UYXJnZXRNYW5hZ2VyID0gY2xhc3MgVGFyZ2V0TWFuYWdlciBleHRlbmRz
IFdJLk9iamVjdAogCiAgICAgdGFyZ2V0Q3JlYXRlZChwYXJlbnRUYXJnZXQsIHRhcmdldEluZm8p
CiAgICAgewotICAgICAgICB0aGlzLl9jb25uZWN0VG9UYXJnZXQocGFyZW50VGFyZ2V0LCB0YXJn
ZXRJbmZvKTsKLQotICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5UYXJn
ZXRNYW5hZ2VyLkV2ZW50LlRhcmdldENyZWF0ZWQsIHt0YXJnZXRJbmZvfSk7CisgICAgICAgIGxl
dCBjb25uZWN0aW9uID0gbmV3IEluc3BlY3RvckJhY2tlbmQuVGFyZ2V0Q29ubmVjdGlvbihwYXJl
bnRUYXJnZXQsIHRhcmdldEluZm8udGFyZ2V0SWQpOworICAgICAgICBsZXQgc3ViVGFyZ2V0ID0g
dGhpcy5fY3JlYXRlVGFyZ2V0KHBhcmVudFRhcmdldCwgdGFyZ2V0SW5mbywgY29ubmVjdGlvbik7
CisgICAgICAgIHRoaXMuX2NoZWNrQW5kSGFuZGxlUGFnZVRhcmdldFRyYW5zaXRpb24oc3ViVGFy
Z2V0KTsKKyAgICAgICAgc3ViVGFyZ2V0LmluaXRpYWxpemUoKTsKKyAgICAgICAgdGhpcy5hZGRU
YXJnZXQoc3ViVGFyZ2V0KTsKICAgICB9CiAKICAgICBkaWRDb21taXRQcm92aXNpb25hbFRhcmdl
dChwYXJlbnRUYXJnZXQsIHByZXZpb3VzVGFyZ2V0SWQsIG5ld1RhcmdldElkKQogICAgIHsKLSAg
ICAgICAgdGhpcy5fZGVzdHJveVRhcmdldChwcmV2aW91c1RhcmdldElkKTsKLSAgICAgICAgbGV0
IHRhcmdldEluZm8gPSB0aGlzLl9wcm92aXNpb25hbFRhcmdldEluZm9zLmdldChuZXdUYXJnZXRJ
ZCk7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRhcmdldEluZm8pOwotICAgICAgICB0YXJnZXRJ
bmZvLmlzUHJvdmlzaW9uYWwgPSBmYWxzZTsKLSAgICAgICAgdGhpcy5fcHJvdmlzaW9uYWxUYXJn
ZXRJbmZvcy5kZWxldGUobmV3VGFyZ2V0SWQpOwotICAgICAgICB0aGlzLl9jb25uZWN0VG9UYXJn
ZXQocGFyZW50VGFyZ2V0LCB0YXJnZXRJbmZvKTsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoIXRo
aXMuX3N3YXBwZWRUYXJnZXRJZHMuaGFzKHByZXZpb3VzVGFyZ2V0SWQpKTsKLSAgICAgICAgdGhp
cy5fc3dhcHBlZFRhcmdldElkcy5hZGQocHJldmlvdXNUYXJnZXRJZCk7Ci0KLSAgICAgICAgdGhp
cy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuVGFyZ2V0TWFuYWdlci5FdmVudC5EaWRDb21t
aXRQcm92aXNpb25hbFRhcmdldCwge3ByZXZpb3VzVGFyZ2V0SWQsIHRhcmdldEluZm99KTsKKyAg
ICAgICAgdGhpcy50YXJnZXREZXN0cm95ZWQocHJldmlvdXNUYXJnZXRJZCk7CisgICAgICAgIGxl
dCB0YXJnZXQgPSB0aGlzLl90YXJnZXRzLmdldChuZXdUYXJnZXRJZCk7CisgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KHRhcmdldCk7CisgICAgICAgIGlmICghdGFyZ2V0KQorICAgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgIHRhcmdldC5pc1Byb3Zpc2lvbmFsID0gZmFsc2U7CisgICAgICAgIHRo
aXMuX2NoZWNrQW5kSGFuZGxlUGFnZVRhcmdldFRyYW5zaXRpb24odGFyZ2V0KTsKKyAgICAgICAg
dGFyZ2V0LmNvbm5lY3Rpb24uZGlzcGF0Y2hQcm92aXNpb25hbE1lc3NhZ2VzKCk7CisKKyAgICAg
ICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuVGFyZ2V0TWFuYWdlci5FdmVudC5E
aWRDb21taXRQcm92aXNpb25hbFRhcmdldCwge3ByZXZpb3VzVGFyZ2V0SWQsIHRhcmdldH0pOwog
ICAgIH0KIAogICAgIHRhcmdldERlc3Ryb3llZCh0YXJnZXRJZCkKICAgICB7Ci0gICAgICAgIHRo
aXMuX2Rlc3Ryb3lUYXJnZXQodGFyZ2V0SWQpOworICAgICAgICBsZXQgdGFyZ2V0ID0gdGhpcy5f
dGFyZ2V0cy5nZXQodGFyZ2V0SWQpOworICAgICAgICBpZiAoIXRhcmdldCkKKyAgICAgICAgICAg
IHJldHVybjsKIAotICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5UYXJn
ZXRNYW5hZ2VyLkV2ZW50LlRhcmdldERlc3Ryb3llZCwge3RhcmdldElkfSk7CisgICAgICAgIHRo
aXMuX2NoZWNrQW5kSGFuZGxlUGFnZVRhcmdldFRlcm1pbmF0aW9uKHRhcmdldCk7CisgICAgICAg
IHRoaXMucmVtb3ZlVGFyZ2V0KHRhcmdldCk7CiAgICAgfQogCiAgICAgZGlzcGF0Y2hNZXNzYWdl
RnJvbVRhcmdldCh0YXJnZXRJZCwgbWVzc2FnZSkKICAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9w
cm92aXNpb25hbFRhcmdldEluZm9zLmhhcyh0YXJnZXRJZCkpCi0gICAgICAgICAgICByZXR1cm47
Ci0KICAgICAgICAgbGV0IHRhcmdldCA9IHRoaXMuX3RhcmdldHMuZ2V0KHRhcmdldElkKTsKICAg
ICAgICAgY29uc29sZS5hc3NlcnQodGFyZ2V0KTsKICAgICAgICAgaWYgKCF0YXJnZXQpCiAgICAg
ICAgICAgICByZXR1cm47CiAKLSAgICAgICAgdGFyZ2V0LmNvbm5lY3Rpb24uZGlzcGF0Y2gobWVz
c2FnZSk7CisgICAgICAgIGlmICh0YXJnZXQuaXNQcm92aXNpb25hbCkKKyAgICAgICAgICAgIHRh
cmdldC5jb25uZWN0aW9uLmFkZFByb3Zpc2lvbmFsTWVzc2FnZShtZXNzYWdlKTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgdGFyZ2V0LmNvbm5lY3Rpb24uZGlzcGF0Y2gobWVzc2FnZSk7CiAg
ICAgfQogCiAgICAgLy8gUHJpdmF0ZQogCi0gICAgX2Nvbm5lY3RUb1RhcmdldChwYXJlbnRUYXJn
ZXQsIHRhcmdldEluZm8pCi0gICAgewotICAgICAgICBjb25zb2xlLmFzc2VydCghdGhpcy5fcHJv
dmlzaW9uYWxUYXJnZXRJbmZvcy5oYXModGFyZ2V0SW5mby50YXJnZXRJZCkpOwotCi0gICAgICAg
IC8vIENPTVBBVElCSUxJVFkgKGlPUyAxMy4wKTogYFRhcmdldC5UYXJnZXRJbmZvLmlzUHJvdmlz
aW9uYWxgIGRpZCBub3QgZXhpc3QgeWV0LgotICAgICAgICBpZiAodGFyZ2V0SW5mby5pc1Byb3Zp
c2lvbmFsKSB7Ci0gICAgICAgICAgICB0aGlzLl9wcm92aXNpb25hbFRhcmdldEluZm9zLnNldCh0
YXJnZXRJbmZvLnRhcmdldElkLCB0YXJnZXRJbmZvKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgfQotCi0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KHBhcmVudFRhcmdldC5oYXNDb21tYW5k
KCJUYXJnZXQuc2VuZE1lc3NhZ2VUb1RhcmdldCIpKTsKLSAgICAgICAgbGV0IGNvbm5lY3Rpb24g
PSBuZXcgSW5zcGVjdG9yQmFja2VuZC5UYXJnZXRDb25uZWN0aW9uOwotICAgICAgICBsZXQgc3Vi
VGFyZ2V0ID0gdGhpcy5fY3JlYXRlVGFyZ2V0KHBhcmVudFRhcmdldCwgdGFyZ2V0SW5mbywgY29u
bmVjdGlvbik7Ci0gICAgICAgIHRoaXMuX2NoZWNrQW5kSGFuZGxlUGFnZVRhcmdldFRyYW5zaXRp
b24oc3ViVGFyZ2V0KTsKLSAgICAgICAgc3ViVGFyZ2V0LmluaXRpYWxpemUoKTsKLQotICAgICAg
ICB0aGlzLmFkZFRhcmdldChzdWJUYXJnZXQpOwotICAgIH0KLQotICAgIF9kZXN0cm95VGFyZ2V0
KHRhcmdldElkKQotICAgIHsKLSAgICAgICAgaWYgKHRoaXMuX3Byb3Zpc2lvbmFsVGFyZ2V0SW5m
b3MuZGVsZXRlKHRhcmdldElkKSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBpZiAo
dGhpcy5fc3dhcHBlZFRhcmdldElkcy5kZWxldGUodGFyZ2V0SWQpKQotICAgICAgICAgICAgcmV0
dXJuOwotCi0gICAgICAgIGxldCB0YXJnZXQgPSB0aGlzLl90YXJnZXRzLmdldCh0YXJnZXRJZCk7
Ci0gICAgICAgIHRoaXMuX2NoZWNrQW5kSGFuZGxlUGFnZVRhcmdldFRlcm1pbmF0aW9uKHRhcmdl
dCk7Ci0gICAgICAgIHRoaXMucmVtb3ZlVGFyZ2V0KHRhcmdldCk7Ci0gICAgfQotCiAgICAgX2Ny
ZWF0ZVRhcmdldChwYXJlbnRUYXJnZXQsIHRhcmdldEluZm8sIGNvbm5lY3Rpb24pCiAgICAgewot
ICAgICAgICBsZXQge3RhcmdldElkLCB0eXBlfSA9IHRhcmdldEluZm87CisgICAgICAgIC8vIENP
TVBBVElCSUxJVFkgKGlPUyAxMy4wKTogYFRhcmdldC5UYXJnZXRJbmZvLmlzUGF1c2VkYCBkaWQg
bm90IGV4aXN0IHlldC4KKyAgICAgICAgbGV0IHt0YXJnZXRJZCwgdHlwZSwgaXNQYXVzZWR9ID0g
dGFyZ2V0SW5mbzsKIAogICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICAgICAgY2FzZSBJbnNw
ZWN0b3JCYWNrZW5kLkVudW0uVGFyZ2V0LlRhcmdldEluZm9UeXBlLlBhZ2U6Ci0gICAgICAgICAg
ICByZXR1cm4gbmV3IFdJLlBhZ2VUYXJnZXQocGFyZW50VGFyZ2V0LCB0YXJnZXRJZCwgV0kuVUlT
dHJpbmcoIlBhZ2UiKSwgY29ubmVjdGlvbik7CisgICAgICAgICAgICByZXR1cm4gbmV3IFdJLlBh
Z2VUYXJnZXQocGFyZW50VGFyZ2V0LCB0YXJnZXRJZCwgV0kuVUlTdHJpbmcoIlBhZ2UiKSwgY29u
bmVjdGlvbiwgdGFyZ2V0SW5mby5pc1Byb3Zpc2lvbmFsLCBpc1BhdXNlZCk7CiAgICAgICAgIGNh
c2UgSW5zcGVjdG9yQmFja2VuZC5FbnVtLlRhcmdldC5UYXJnZXRJbmZvVHlwZS5Xb3JrZXI6Ci0g
ICAgICAgICAgICByZXR1cm4gbmV3IFdJLldvcmtlclRhcmdldChwYXJlbnRUYXJnZXQsIHRhcmdl
dElkLCBXSS5VSVN0cmluZygiV29ya2VyIiksIGNvbm5lY3Rpb24pOworICAgICAgICAgICAgcmV0
dXJuIG5ldyBXSS5Xb3JrZXJUYXJnZXQocGFyZW50VGFyZ2V0LCB0YXJnZXRJZCwgV0kuVUlTdHJp
bmcoIldvcmtlciIpLCBjb25uZWN0aW9uLCBpc1BhdXNlZCk7CiAgICAgICAgIGNhc2UgInNlcnZp
Y2V3b3JrZXIiOiAvLyBDT01QQVRJQklMSVRZIChpT1MgMTMpOiAic2VydmljZXdvcmtlciIgd2Fz
IHJlbmFtZWQgdG8gInNlcnZpY2Utd29ya2VyIi4KICAgICAgICAgY2FzZSBJbnNwZWN0b3JCYWNr
ZW5kLkVudW0uVGFyZ2V0LlRhcmdldEluZm9UeXBlLlNlcnZpY2VXb3JrZXI6Ci0gICAgICAgICAg
ICByZXR1cm4gbmV3IFdJLldvcmtlclRhcmdldChwYXJlbnRUYXJnZXQsIHRhcmdldElkLCBXSS5V
SVN0cmluZygiU2VydmljZVdvcmtlciIpLCBjb25uZWN0aW9uKTsKKyAgICAgICAgICAgIHJldHVy
biBuZXcgV0kuV29ya2VyVGFyZ2V0KHBhcmVudFRhcmdldCwgdGFyZ2V0SWQsIFdJLlVJU3RyaW5n
KCJTZXJ2aWNlV29ya2VyIiksIGNvbm5lY3Rpb24sIGlzUGF1c2VkKTsKICAgICAgICAgfQogCiAg
ICAgICAgIHRocm93ICJVbmtub3duIFRhcmdldCB0eXBlOiAiICsgdHlwZTsKQEAgLTIxNSw2ICsx
OTAsOSBAQCBXSS5UYXJnZXRNYW5hZ2VyID0gY2xhc3MgVGFyZ2V0TWFuYWdlciBleHRlbmRzIFdJ
Lk9iamVjdAogICAgICAgICBpZiAodGFyZ2V0LnR5cGUgIT09IFdJLlRhcmdldFR5cGUuUGFnZSkK
ICAgICAgICAgICAgIHJldHVybjsKIAorICAgICAgICBpZiAodGFyZ2V0LmlzUHJvdmlzaW9uYWwp
CisgICAgICAgICAgICByZXR1cm47CisKICAgICAgICAgLy8gRmlyc3QgcGFnZSB0YXJnZXQuCiAg
ICAgICAgIGlmICghV0kucGFnZVRhcmdldCAmJiAhdGhpcy5fc2VlblBhZ2VUYXJnZXQpIHsKICAg
ICAgICAgICAgIHRoaXMuX3NlZW5QYWdlVGFyZ2V0ID0gdHJ1ZTsKQEAgLTIzMSw2ICsyMDksOSBA
QCBXSS5UYXJnZXRNYW5hZ2VyID0gY2xhc3MgVGFyZ2V0TWFuYWdlciBleHRlbmRzIFdJLk9iamVj
dAogICAgICAgICBpZiAodGFyZ2V0LnR5cGUgIT09IFdJLlRhcmdldFR5cGUuUGFnZSkKICAgICAg
ICAgICAgIHJldHVybjsKIAorICAgICAgICBpZiAodGFyZ2V0LmlzUHJvdmlzaW9uYWwpCisgICAg
ICAgICAgICByZXR1cm47CisKICAgICAgICAgY29uc29sZS5hc3NlcnQodGFyZ2V0ID09PSBXSS5w
YWdlVGFyZ2V0KTsKICAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fc2VlblBhZ2VUYXJnZXQp
OwogCkBAIC0zMTUsOCArMjk2LDUgQEAgV0kuVGFyZ2V0TWFuYWdlciA9IGNsYXNzIFRhcmdldE1h
bmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKIFdJLlRhcmdldE1hbmFnZXIuRXZlbnQgPSB7CiAgICAg
VGFyZ2V0QWRkZWQ6IFN5bWJvbCgidGFyZ2V0LW1hbmFnZXItdGFyZ2V0LWFkZGVkIiksCiAgICAg
VGFyZ2V0UmVtb3ZlZDogU3ltYm9sKCJ0YXJnZXQtbWFuYWdlci10YXJnZXQtcmVtb3ZlZCIpLAot
Ci0gICAgVGFyZ2V0Q3JlYXRlZDogInRhcmdldC1tYW5hZ2VyLXRhcmdldC1jcmVhdGVkIiwKICAg
ICBEaWRDb21taXRQcm92aXNpb25hbFRhcmdldDogInRhcmdldC1tYW5hZ2VyLXByb3Zpc2lvbmFs
LXRhcmdldC1jb21taXR0ZWQiLAotICAgIFRhcmdldERlc3Ryb3llZDogInRhcmdldC1tYW5hZ2Vy
LXRhcmdldC1kZXRyb3llZCIsCiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvV29ya2VyTWFuYWdlci5qcyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1dvcmtlck1hbmFnZXIuanMKaW5k
ZXggNGZmZjE3NTAyMzAzZDVkNTEzMzZkZTQ2YmM5YmIyNDlhNzExYWQ4NS4uZGE2ZjgzZTI0MzY2
MmVjMjUwYjdiZmNhZjEzM2M1MjExMmZhOGMzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvV29ya2VyTWFuYWdlci5qcworKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9Xb3JrZXJNYW5h
Z2VyLmpzCkBAIC00Niw3ICs0Niw4IEBAIFdJLldvcmtlck1hbmFnZXIgPSBjbGFzcyBXb3JrZXJN
YW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydCh0
YXJnZXQuaGFzQ29tbWFuZCgiV29ya2VyLnNlbmRNZXNzYWdlVG9Xb3JrZXIiKSk7CiAgICAgICAg
IGxldCBjb25uZWN0aW9uID0gbmV3IEluc3BlY3RvckJhY2tlbmQuV29ya2VyQ29ubmVjdGlvbjsK
LSAgICAgICAgbGV0IHdvcmtlclRhcmdldCA9IG5ldyBXSS5Xb3JrZXJUYXJnZXQodGFyZ2V0LCB3
b3JrZXJJZCwgdXJsLCBjb25uZWN0aW9uKTsKKyAgICAgICAgY29uc3QgaXNQYXVzZWQgPSBmYWxz
ZTsKKyAgICAgICAgbGV0IHdvcmtlclRhcmdldCA9IG5ldyBXSS5Xb3JrZXJUYXJnZXQodGFyZ2V0
LCB3b3JrZXJJZCwgdXJsLCBjb25uZWN0aW9uLCBpc1BhdXNlZCk7CiAgICAgICAgIHdvcmtlclRh
cmdldC5pbml0aWFsaXplKCk7CiAKICAgICAgICAgV0kudGFyZ2V0TWFuYWdlci5hZGRUYXJnZXQo
d29ya2VyVGFyZ2V0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1Byb3RvY29sL0Nvbm5lY3Rpb24uanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Qcm90b2NvbC9Db25uZWN0aW9uLmpzCmluZGV4IDliZWNiZDA2YTlkNWIyNThm
N2E1MDZkY2EyMGU5NDQzMzNjOGFiYTYuLjY5NWU4ZTRmZDY3YjIzYjA1OWU2NzY5MGEyMzc1N2Nj
ZDNhNDdkMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1Byb3RvY29sL0Nvbm5lY3Rpb24uanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvUHJvdG9jb2wvQ29ubmVjdGlvbi5qcwpAQCAtMzksNiArMzksNyBAQCBJbnNwZWN0
b3JCYWNrZW5kLkNvbm5lY3Rpb24gPSBjbGFzcyBJbnNwZWN0b3JCYWNrZW5kQ29ubmVjdGlvbgog
ICAgICAgICB0aGlzLl9wZW5kaW5nUmVzcG9uc2VzID0gbmV3IE1hcDsKICAgICAgICAgdGhpcy5f
ZGVmZXJyZWRDYWxsYmFja3MgPSBbXTsKICAgICAgICAgdGhpcy5fdGFyZ2V0ID0gbnVsbDsKKyAg
ICAgICAgdGhpcy5fcHJvdmlzaW9uYWxNZXNzYWdlcyA9IFtdOwogICAgIH0KIAogICAgIC8vIFB1
YmxpYwpAQCAtNTQsNiArNTUsMjAgQEAgSW5zcGVjdG9yQmFja2VuZC5Db25uZWN0aW9uID0gY2xh
c3MgSW5zcGVjdG9yQmFja2VuZENvbm5lY3Rpb24KICAgICAgICAgdGhpcy5fdGFyZ2V0ID0gdGFy
Z2V0OwogICAgIH0KIAorICAgIGFkZFByb3Zpc2lvbmFsTWVzc2FnZShtZXNzYWdlKQorICAgIHsK
KyAgICAgICAgdGhpcy5fcHJvdmlzaW9uYWxNZXNzYWdlcy5wdXNoKG1lc3NhZ2UpOworICAgIH0K
KworICAgIGRpc3BhdGNoUHJvdmlzaW9uYWxNZXNzYWdlcygpCisgICAgeworICAgICAgICBjb25z
b2xlLmFzc2VydCh0aGlzLnRhcmdldCk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzLnRh
cmdldC5pc1Byb3Zpc2lvbmFsKTsKKyAgICAgICAgZm9yIChsZXQgbWVzc2FnZSBvZiB0aGlzLl9w
cm92aXNpb25hbE1lc3NhZ2VzKQorICAgICAgICAgICAgdGhpcy5kaXNwYXRjaChtZXNzYWdlKTsK
KyAgICAgICAgdGhpcy5fcHJvdmlzaW9uYWxNZXNzYWdlcyA9IG51bGw7CisgICAgfQorCiAgICAg
ZGlzcGF0Y2gobWVzc2FnZSkKICAgICB7CiAgICAgICAgIGxldCBtZXNzYWdlT2JqZWN0ID0gdHlw
ZW9mIG1lc3NhZ2UgPT09ICJzdHJpbmciID8gSlNPTi5wYXJzZShtZXNzYWdlKSA6IG1lc3NhZ2U7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2Nv
bC9EaXJlY3RCYWNrZW5kVGFyZ2V0LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvUHJvdG9jb2wvRGlyZWN0QmFja2VuZFRhcmdldC5qcwppbmRleCA4MTlhMzRjYTA4OWU2
Nzg1NTJiZjYzOTJhZDRjZmQ2MzcyOGNhYjRiLi40ODgxNmQ2NDFhN2E5NTg5ZWYzMTYwNGJiYzNj
ZjA0OGVlNmY3ZTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Qcm90b2NvbC9EaXJlY3RCYWNrZW5kVGFyZ2V0LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0RpcmVjdEJhY2tlbmRUYXJnZXQuanMKQEAg
LTMzLDcgKzMzLDggQEAgV0kuRGlyZWN0QmFja2VuZFRhcmdldCA9IGNsYXNzIERpcmVjdEJhY2tl
bmRUYXJnZXQgZXh0ZW5kcyBXSS5UYXJnZXQKICAgICAgICAgY29uc3QgcGFyZW50VGFyZ2V0ID0g
bnVsbDsKICAgICAgICAgY29uc3QgdGFyZ2V0SWQgPSAiZGlyZWN0IjsKICAgICAgICAgbGV0IHt0
eXBlLCBkaXNwbGF5TmFtZX0gPSBEaXJlY3RCYWNrZW5kVGFyZ2V0LmNvbm5lY3Rpb25JbmZvRm9y
RGVidWdnYWJsZSgpOwotICAgICAgICBzdXBlcihwYXJlbnRUYXJnZXQsIHRhcmdldElkLCBkaXNw
bGF5TmFtZSwgdHlwZSwgSW5zcGVjdG9yQmFja2VuZC5iYWNrZW5kQ29ubmVjdGlvbik7CisgICAg
ICAgIGNvbnN0IGlzUGF1c2VkID0gZmFsc2U7CisgICAgICAgIHN1cGVyKHBhcmVudFRhcmdldCwg
dGFyZ2V0SWQsIGRpc3BsYXlOYW1lLCB0eXBlLCBJbnNwZWN0b3JCYWNrZW5kLmJhY2tlbmRDb25u
ZWN0aW9uLCBpc1BhdXNlZCk7CiAKICAgICAgICAgdGhpcy5fZXhlY3V0aW9uQ29udGV4dCA9IG5l
dyBXSS5FeGVjdXRpb25Db250ZXh0KHRoaXMsIFdJLlJ1bnRpbWVNYW5hZ2VyLlRvcExldmVsQ29u
dGV4dEV4ZWN1dGlvbklkZW50aWZpZXIsIGRpc3BsYXlOYW1lLCB0cnVlLCBudWxsKTsKICAgICAg
ICAgdGhpcy5fbWFpblJlc291cmNlID0gbnVsbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL011bHRpcGxleGluZ0JhY2tlbmRUYXJnZXQu
anMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9NdWx0aXBs
ZXhpbmdCYWNrZW5kVGFyZ2V0LmpzCmluZGV4IGFhYjBjZTkxNTU1NWIzNjBhNmQ0MGMzMzUyZWUw
ZGY2ODhhYmUzYzcuLjgxNmExNzhjN2ZjYTRlMGQxNjI2YjMyNDhjOTViNWE5NGEyNDUzMTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL011
bHRpcGxleGluZ0JhY2tlbmRUYXJnZXQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvUHJvdG9jb2wvTXVsdGlwbGV4aW5nQmFja2VuZFRhcmdldC5qcwpAQCAtMzQs
NyArMzQsOCBAQCBXSS5NdWx0aXBsZXhpbmdCYWNrZW5kVGFyZ2V0ID0gY2xhc3MgTXVsdGlwbGV4
aW5nQmFja2VuZFRhcmdldCBleHRlbmRzIFdJLlRhcmdldAogICAgIHsKICAgICAgICAgY29uc3Qg
cGFyZW50VGFyZ2V0ID0gbnVsbDsKICAgICAgICAgY29uc3QgdGFyZ2V0SWQgPSAibXVsdGkiOwot
ICAgICAgICBzdXBlcihwYXJlbnRUYXJnZXQsIHRhcmdldElkLCBXSS5VSVN0cmluZygiV2ViIFBh
Z2UiKSwgV0kuVGFyZ2V0VHlwZS5XZWJQYWdlLCBJbnNwZWN0b3JCYWNrZW5kLmJhY2tlbmRDb25u
ZWN0aW9uKTsKKyAgICAgICAgY29uc3QgaXNQYXVzZWQgPSBmYWxzZTsKKyAgICAgICAgc3VwZXIo
cGFyZW50VGFyZ2V0LCB0YXJnZXRJZCwgV0kuVUlTdHJpbmcoIldlYiBQYWdlIiksIFdJLlRhcmdl
dFR5cGUuV2ViUGFnZSwgSW5zcGVjdG9yQmFja2VuZC5iYWNrZW5kQ29ubmVjdGlvbiwgaXNQYXVz
ZWQpOwogCiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KEFycmF5LnNoYWxsb3dFcXVhbChPYmplY3Qu
a2V5cyh0aGlzLl9hZ2VudHMpLCBbIlRhcmdldCJdKSwgIkEgV2ViUGFnZSB0YXJnZXQgc2hvdWxk
IG9ubHkgaGF2ZSBhIHNpbmdsZSBhZ2VudC4iKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9QYWdlVGFyZ2V0LmpzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvUGFnZVRhcmdldC5qcwpp
bmRleCBmMzM0YzA4MDg0YzA3MDY1MmFhMGRlYzQyMTBhN2NhMWE1N2E4MzRhLi5hNzAxNjRmNTE1
ZDkyZjcwZGMzYjlhZjdjZjg0MTNiNGNiZmYwNDlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9QYWdlVGFyZ2V0LmpzCisrKyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL1BhZ2VUYXJnZXQuanMKQEAg
LTI1LDExICsyNSwxMiBAQAogCiBXSS5QYWdlVGFyZ2V0ID0gY2xhc3MgUGFnZVRhcmdldCBleHRl
bmRzIFdJLlRhcmdldAogewotICAgIGNvbnN0cnVjdG9yKHBhcmVudFRhcmdldCwgdGFyZ2V0SWQs
IG5hbWUsIGNvbm5lY3Rpb24pCisgICAgY29uc3RydWN0b3IocGFyZW50VGFyZ2V0LCB0YXJnZXRJ
ZCwgbmFtZSwgY29ubmVjdGlvbiwgaXNQcm92aXNpb25hbCwgaXNQYXVzZWQpCiAgICAgewotICAg
ICAgICBzdXBlcihwYXJlbnRUYXJnZXQsIHRhcmdldElkLCBuYW1lLCBXSS5UYXJnZXRUeXBlLlBh
Z2UsIGNvbm5lY3Rpb24pOworICAgICAgICBzdXBlcihwYXJlbnRUYXJnZXQsIHRhcmdldElkLCBu
YW1lLCBXSS5UYXJnZXRUeXBlLlBhZ2UsIGNvbm5lY3Rpb24sIGlzUGF1c2VkKTsKIAogICAgICAg
ICBjb25zdCBpc1BhZ2VDb250ZXh0ID0gdHJ1ZTsKICAgICAgICAgdGhpcy5fZXhlY3V0aW9uQ29u
dGV4dCA9IG5ldyBXSS5FeGVjdXRpb25Db250ZXh0KHRoaXMsIFdJLlJ1bnRpbWVNYW5hZ2VyLlRv
cExldmVsQ29udGV4dEV4ZWN1dGlvbklkZW50aWZpZXIsIHRoaXMuZGlzcGxheU5hbWUsIGlzUGFn
ZUNvbnRleHQsIG51bGwpOworICAgICAgICB0aGlzLmlzUHJvdmlzaW9uYWwgPSBpc1Byb3Zpc2lv
bmFsOwogICAgIH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Qcm90b2NvbC9UYXJnZXQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Qcm90b2NvbC9UYXJnZXQuanMKaW5kZXggMGEzMGRmZjRmYWVkYTI5OWRkMDRmZmYw
NDNiYjc1NzVmYjM2MTg5YS4uZGRkYmNhYTAzMDU0MjhkODhhZDE5MWJiMzliYzA4YmEwZThiZjNm
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9j
b2wvVGFyZ2V0LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1By
b3RvY29sL1RhcmdldC5qcwpAQCAtMjUsNyArMjUsNyBAQAogCiBXSS5UYXJnZXQgPSBjbGFzcyBU
YXJnZXQgZXh0ZW5kcyBXSS5PYmplY3QKIHsKLSAgICBjb25zdHJ1Y3RvcihwYXJlbnRUYXJnZXQs
IGlkZW50aWZpZXIsIG5hbWUsIHR5cGUsIGNvbm5lY3Rpb24pCisgICAgY29uc3RydWN0b3IocGFy
ZW50VGFyZ2V0LCBpZGVudGlmaWVyLCBuYW1lLCB0eXBlLCBjb25uZWN0aW9uLCBpc1BhdXNlZCkK
ICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHBhcmVudFRhcmdldCA9PT0gbnVsbCB8fCBw
YXJlbnRUYXJnZXQgaW5zdGFuY2VvZiBXSS5UYXJnZXQpOwogICAgICAgICBzdXBlcigpOwpAQCAt
MzksNiArMzksOCBAQCBXSS5UYXJnZXQgPSBjbGFzcyBUYXJnZXQgZXh0ZW5kcyBXSS5PYmplY3QK
ICAgICAgICAgdGhpcy5fbWFpblJlc291cmNlID0gbnVsbDsKICAgICAgICAgdGhpcy5fcmVzb3Vy
Y2VDb2xsZWN0aW9uID0gbmV3IFdJLlJlc291cmNlQ29sbGVjdGlvbjsKICAgICAgICAgdGhpcy5f
ZXh0cmFTY3JpcHRDb2xsZWN0aW9uID0gbmV3IFdJLlNjcmlwdENvbGxlY3Rpb247CisgICAgICAg
IHRoaXMuX2lzUHJvdmlzaW9uYWwgPSBmYWxzZTsKKyAgICAgICAgdGhpcy5faXNQYXVzZWQgPSBp
c1BhdXNlZDsKIAogICAgICAgICB0aGlzLl9zdXBwb3J0ZWRDb21tYW5kUGFyYW1ldGVycyA9IG5l
dyBNYXA7CiAgICAgICAgIHRoaXMuX3N1cHBvcnRlZEV2ZW50UGFyYW1ldGVycyA9IG5ldyBNYXA7
CkBAIC05Niw2ICs5OCwyMCBAQCBXSS5UYXJnZXQgPSBjbGFzcyBUYXJnZXQgZXh0ZW5kcyBXSS5P
YmplY3QKICAgICAgICAgICAgIGlmICh0aGlzLmhhc0NvbW1hbmQoIkluc3BlY3Rvci5pbml0aWFs
aXplZCIpKQogICAgICAgICAgICAgICAgIHRoaXMuSW5zcGVjdG9yQWdlbnQuaW5pdGlhbGl6ZWQo
KTsKICAgICAgICAgfSk7CisKKyAgICAgICAgaWYgKHRoaXMuX2lzUGF1c2VkKSB7CisgICAgICAg
ICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9wYXJlbnRUYXJnZXQuaGFzQ29tbWFuZCgiVGFyZ2V0
LnJlc3VtZSIpKTsKKyAgICAgICAgICAgIHRoaXMuX3BhcmVudFRhcmdldC5UYXJnZXRBZ2VudC5y
ZXN1bWUodGhpcy5faWRlbnRpZmllcikKKyAgICAgICAgICAgIC50aGVuKCgpID0+IHsKKyAgICAg
ICAgICAgICAgICB0aGlzLl9pc1BhdXNlZCA9IGZhbHNlOworICAgICAgICAgICAgfSkuY2F0Y2go
KGVycm9yKSA9PiB7CisgICAgICAgICAgICAgICAgLy8gSWdub3JlIGVycm9ycyBpZiB0aGUgdGFy
Z2V0IHdhcyBkZXN0cm95ZWQgYWZ0ZXIgdGhlIGNvbW1hbmQgd2FzIHNlbnQuCisgICAgICAgICAg
ICAgICAgaWYgKHRoaXMuaXNEZXN0cm95ZWQpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsK
KworICAgICAgICAgICAgICAgIFdJLnJlcG9ydEludGVybmFsRXJyb3IoZXJyb3IpOworICAgICAg
ICAgICAgfSk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBhY3RpdmF0ZUV4dHJhRG9tYWluKGRv
bWFpbk5hbWUpCkBAIC0xMDUsNiArMTIxLDggQEAgV0kuVGFyZ2V0ID0gY2xhc3MgVGFyZ2V0IGV4
dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIHRoaXMuX2FnZW50c1tkb21haW5OYW1lXSA9IEluc3Bl
Y3RvckJhY2tlbmQuX21ha2VBZ2VudChkb21haW5OYW1lLCB0aGlzKTsKICAgICB9CiAKKyAgICBn
ZXQgaXNQYXVzZWQoKSB7IHJldHVybiB0aGlzLl9pc1BhdXNlZDsgfQorCiAgICAgLy8gQWdlbnRz
CiAKICAgICBnZXQgQW5pbWF0aW9uQWdlbnQoKSB7IHJldHVybiB0aGlzLl9hZ2VudHMuQW5pbWF0
aW9uOyB9CkBAIC0xNjksNiArMTg3LDkgQEAgV0kuVGFyZ2V0ID0gY2xhc3MgVGFyZ2V0IGV4dGVu
ZHMgV0kuT2JqZWN0CiAgICAgZ2V0IG5hbWUoKSB7IHJldHVybiB0aGlzLl9uYW1lOyB9CiAgICAg
c2V0IG5hbWUobmFtZSkgeyB0aGlzLl9uYW1lID0gbmFtZTsgfQogCisgICAgZ2V0IGlzUHJvdmlz
aW9uYWwoKSB7IHJldHVybiB0aGlzLl9pc1Byb3Zpc2lvbmFsOyB9CisgICAgc2V0IGlzUHJvdmlz
aW9uYWwodmFsdWUpIHsgdGhpcy5faXNQcm92aXNpb25hbCA9IHZhbHVlOyB9CisKICAgICBnZXQg
dHlwZSgpIHsgcmV0dXJuIHRoaXMuX3R5cGU7IH0KICAgICBnZXQgY29ubmVjdGlvbigpIHsgcmV0
dXJuIHRoaXMuX2Nvbm5lY3Rpb247IH0KICAgICBnZXQgZXhlY3V0aW9uQ29udGV4dCgpIHsgcmV0
dXJuIHRoaXMuX2V4ZWN1dGlvbkNvbnRleHQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL1dvcmtlclRhcmdldC5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL1dvcmtlclRhcmdldC5qcwppbmRl
eCA4M2M3MDkyYTU4NzI4ZjJhNzNkOGE5ZDRjZTUyYTFhMWFkN2IyODU5Li41NWYwY2Q2NDRkYmJm
Y2YyNWJhMTY1NTNjYTA4YTdmZTI5ZjUyM2EyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9Xb3JrZXJUYXJnZXQuanMKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvV29ya2VyVGFyZ2V0LmpzCkBA
IC0yNSw5ICsyNSw5IEBACiAKIFdJLldvcmtlclRhcmdldCA9IGNsYXNzIFdvcmtlclRhcmdldCBl
eHRlbmRzIFdJLlRhcmdldAogewotICAgIGNvbnN0cnVjdG9yKHBhcmVudFRhcmdldCwgd29ya2Vy
SWQsIG5hbWUsIGNvbm5lY3Rpb24pCisgICAgY29uc3RydWN0b3IocGFyZW50VGFyZ2V0LCB3b3Jr
ZXJJZCwgbmFtZSwgY29ubmVjdGlvbiwgaXNQYXVzZWQpCiAgICAgewotICAgICAgICBzdXBlcihw
YXJlbnRUYXJnZXQsIHdvcmtlcklkLCBuYW1lLCBXSS5UYXJnZXRUeXBlLldvcmtlciwgY29ubmVj
dGlvbik7CisgICAgICAgIHN1cGVyKHBhcmVudFRhcmdldCwgd29ya2VySWQsIG5hbWUsIFdJLlRh
cmdldFR5cGUuV29ya2VyLCBjb25uZWN0aW9uLCBpc1BhdXNlZCk7CiAKICAgICAgICAgY29uc3Qg
aXNQYWdlQ29udGV4dCA9IGZhbHNlOwogICAgICAgICB0aGlzLl9leGVjdXRpb25Db250ZXh0ID0g
bmV3IFdJLkV4ZWN1dGlvbkNvbnRleHQodGhpcywgV0kuUnVudGltZU1hbmFnZXIuVG9wTGV2ZWxD
b250ZXh0RXhlY3V0aW9uSWRlbnRpZmllciwgdGhpcy5kaXNwbGF5TmFtZSwgaXNQYWdlQ29udGV4
dCwgbnVsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvTmF2aWdhdGlvblNpZGViYXJQYW5lbC5qcwppbmRleCAyMmVk
ODk2NThkNzAwZmY4MzUwNWQ0YTRkYjA0MmI4NDY0MDhjZmZjLi5jYTkzN2NmOGZkMDY1MGE1ZmVi
ZjU2NTU1YTIzMWUzNDU1ODU0OTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLmpzCisrKyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05hdmlnYXRpb25TaWRlYmFyUGFu
ZWwuanMKQEAgLTcwNSw3ICs3MDUsNyBAQCBXSS5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsID0gY2xh
c3MgTmF2aWdhdGlvblNpZGViYXJQYW5lbCBleHRlbmRzIFdJLlNpZGViYXJQYW5lbAogICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICAgICAgaWYgKG1hdGNoVHlwZU9ubHkp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgcmV0dXJuICEh
dHlwZUlkZW50aWZpZXI7CiAKICAgICAgICAgICAgIHZhciBjYW5kaWRhdGVPYmplY3RDb29raWUg
PSB7fTsKICAgICAgICAgICAgIGlmIChyZXByZXNlbnRlZE9iamVjdC5zYXZlSWRlbnRpdHlUb0Nv
b2tpZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3RvclRhcmdl
dFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3RvclRhcmdldFByb3h5
LmNwcAppbmRleCAxYjM3YzFlZDQzOTVhMTdjNTgzYmEyZDc4NjIxOWM5MGM3NDQwMTZlLi40Zjg0
Yzg3NTc5Y2Q0MWEzNjk4NDU3NmVmMTZjNzllMzUyMWVjYmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3JUYXJnZXRQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yVGFyZ2V0UHJveHkuY3BwCkBAIC03Niw2ICs3Niw5IEBA
IHZvaWQgSW5zcGVjdG9yVGFyZ2V0UHJveHk6OmRpc2Nvbm5lY3QoKQogCiAgICAgaWYgKG1fcGFn
ZS5oYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkRpc2Nvbm5lY3RJbnNwZWN0b3IoaWRlbnRpZmllcigpKSwgbV9wYWdl
LndlYlBhZ2VJRCgpKTsKKworICAgIGlmIChpc1BhdXNlZCgpKQorICAgICAgICBzZXRQYXVzZWQo
ZmFsc2UpOwogfQogCiB2b2lkIEluc3BlY3RvclRhcmdldFByb3h5OjpzZW5kTWVzc2FnZVRvVGFy
Z2V0QmFja2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCkBAIC0xMDAsNCArMTAzLDEwIEBAIGJv
b2wgSW5zcGVjdG9yVGFyZ2V0UHJveHk6OmlzUHJvdmlzaW9uYWwoKSBjb25zdAogICAgIHJldHVy
biAhIW1fcHJvdmlzaW9uYWxQYWdlOwogfQogCit2b2lkIEluc3BlY3RvclRhcmdldFByb3h5Ojpy
ZXN1bWVUYXJnZXQoKQoreworICAgIGlmIChtX3Byb3Zpc2lvbmFsUGFnZSkKKyAgICAgICAgbV9w
cm92aXNpb25hbFBhZ2UtPmNvbnRpbnVlTG9hZGluZygpOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3RvclRhcmdl
dFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3JUYXJnZXRQcm94eS5o
CmluZGV4IGEyMjM5Y2VjOGUxODg1MGYzNWY3Zjg4YTljNGViYWRjNjJiZjQwMjMuLjFkNzI1YjNl
M2VjZWE4YTI0MTZhMWEzMDU2MzcyNzI5MTkzMDFmMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0luc3BlY3RvclRhcmdldFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvSW5zcGVjdG9yVGFyZ2V0UHJveHkuaApAQCAtNTcsNiArNTcsOCBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZW5kTWVzc2FnZVRvVGFyZ2V0QmFja2VuZChjb25zdCBTdHJpbmcmKSBvdmVy
cmlkZTsKIAogcHJpdmF0ZToKKyAgICB2b2lkIHJlc3VtZVRhcmdldCgpIG92ZXJyaWRlOworCiAg
ICAgV2ViUGFnZVByb3h5JiBtX3BhZ2U7CiAgICAgU3RyaW5nIG1faWRlbnRpZmllcjsKICAgICBJ
bnNwZWN0b3I6Okluc3BlY3RvclRhcmdldFR5cGUgbV90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCmluZGV4IDIxNmJlNWJmZjIwYTU1
NjcwOGYwMDU3ZjRlMzUwZDE1ZmYyMGEyYmYuLjI4YzUwNmEzOWI2NjlkYzIxZmY5NDYxNDIyZjM2
NTk4ZDIyMmExNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lv
bmFsUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25h
bFBhZ2VQcm94eS5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgUHJvdmlzaW9uYWxQYWdlUHJveHk6OlBy
b3Zpc2lvbmFsUGFnZVByb3h5KFdlYlBhZ2VQcm94eSYgcGFnZSwgUmVmPFdlYlByb2Nlc3NQcm8K
IAogICAgIGluaXRpYWxpemVXZWJQYWdlKCk7CiAKLSAgICBtX3BhZ2UuaW5zcGVjdG9yQ29udHJv
bGxlcigpLmRpZENyZWF0ZVByb3Zpc2lvbmFsUGFnZSgqdGhpcyk7CisgICAgbV9sb2FkaW5nUGF1
c2VkID0gbV9wYWdlLmluc3BlY3RvckNvbnRyb2xsZXIoKS5pbnRlcmNlcHRQcm92aXNpb25hbFBh
Z2UoKnRoaXMpID09IFdlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyOjpQYXVzZUxvYWRpbmc6Olll
czsKIH0KIAogUHJvdmlzaW9uYWxQYWdlUHJveHk6On5Qcm92aXNpb25hbFBhZ2VQcm94eSgpCkBA
IC0xMTcsNiArMTE3LDIwIEBAIHN0ZDo6dW5pcXVlX3B0cjxEcmF3aW5nQXJlYVByb3h5PiBQcm92
aXNpb25hbFBhZ2VQcm94eTo6dGFrZURyYXdpbmdBcmVhKCkKICAgICByZXR1cm4gV1RGTW92ZSht
X2RyYXdpbmdBcmVhKTsKIH0KIAordm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6Y29udGludWVM
b2FkaW5nKCkKK3sKKyAgICBpZiAobV9sb2FkaW5nQ29udGludWF0aW9uKSB7CisgICAgICAgIG1f
bG9hZGluZ0NvbnRpbnVhdGlvbigpOworICAgICAgICBtX2xvYWRpbmdDb250aW51YXRpb24gPSBu
dWxscHRyOworICAgIH0KKyAgICBtX2xvYWRpbmdQYXVzZWQgPSBmYWxzZTsKK30KKwordm9pZCBQ
cm92aXNpb25hbFBhZ2VQcm94eTo6Y29udGludWVMb2FkaW5nV2hlblJlc3VtZWRCeUluc3BlY3Rv
cihXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjYWxsYmFjaykKK3sKKyAgICBtX2xvYWRpbmdDb250
aW51YXRpb24gPSBXVEZNb3ZlKGNhbGxiYWNrKTsKK30KKwogdm9pZCBQcm92aXNpb25hbFBhZ2VQ
cm94eTo6Y2FuY2VsKCkKIHsKICAgICAvLyBJZiB0aGUgcHJvdmlzaW9uYWwgbG9hZCBzdGFydGVk
LCB0aGVuIGluZGljYXRlIHRoYXQgaXQgZmFpbGVkIGR1ZSB0byBjYW5jZWxsYXRpb24gYnkgY2Fs
bGluZyBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoKS4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oCmluZGV4IGNiOTVmZTAxMGRjNjQyZmNk
ZjQ2MzM3YzNlYmFlODIyMmRmMTMyNDcuLmNiYTQ0Zjk3OGJlMDdhYmE1YWVmODU3NWZmNDkyMmIw
YjM0NDcwODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFs
UGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdl
UHJveHkuaApAQCAtOTAsNiArOTAsMTAgQEAgcHVibGljOgogCiAgICAgdm9pZCBwcm9jZXNzRGlk
VGVybWluYXRlKCk7CiAKKyAgICB2b2lkIGNvbnRpbnVlTG9hZGluZygpOworICAgIGJvb2wgc2hv
dWxkUGF1c2VMb2FkaW5nRm9ySW5zcGVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9sb2FkaW5nUGF1
c2VkOyB9CisgICAgdm9pZCBjb250aW51ZUxvYWRpbmdXaGVuUmVzdW1lZEJ5SW5zcGVjdG9yKFdU
Rjo6RnVuY3Rpb248dm9pZCgpPiYmKTsKKwogcHJpdmF0ZToKICAgICAvLyBJUEM6Ok1lc3NhZ2VS
ZWNlaXZlcgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBD
OjpEZWNvZGVyJikgZmluYWw7CkBAIC0xMzgsNiArMTQyLDggQEAgcHJpdmF0ZToKICAgICBQcm9j
ZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50IG1fcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudDsK
ICAgICBib29sIG1fd2FzQ29tbWl0dGVkIHsgZmFsc2UgfTsKICAgICBVUkwgbV9wcm92aXNpb25h
bExvYWRVUkw7CisgICAgV1RGOjpGdW5jdGlvbjx2b2lkKCk+IG1fbG9hZGluZ0NvbnRpbnVhdGlv
bjsKKyAgICBib29sIG1fbG9hZGluZ1BhdXNlZCB7IGZhbHNlIH07CiAKICNpZiBQTEFURk9STShD
T0NPQSkKICAgICBWZWN0b3I8dWludDhfdD4gbV9hY2Nlc3NpYmlsaXR5VG9rZW47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlci5j
cHAKaW5kZXggYjlhOTQ2OWFiNTkxMzZmOWU5YTM3MzZiZmRiMGU5ZDUyOWMwZmJjZS4uZWRjY2Yy
ZmZjZjcyOGE3NmNkYjE5N2M3YWE5MTI1MzNjMmExOGE2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtMTY3
LDkgKzE2NywxMiBAQCB2b2lkIFdlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyOjpzZW5kTWVzc2Fn
ZVRvSW5zcGVjdG9yRnJvbnRlbmQoY29uc3QgU3RyaW5nJiB0YQogICAgIG1fdGFyZ2V0QWdlbnQt
PnNlbmRNZXNzYWdlRnJvbVRhcmdldFRvRnJvbnRlbmQodGFyZ2V0SWQsIG1lc3NhZ2UpOwogfQog
Ci12b2lkIFdlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRDcmVhdGVQcm92aXNpb25hbFBh
Z2UoUHJvdmlzaW9uYWxQYWdlUHJveHkmIHByb3Zpc2lvbmFsUGFnZSkKK1dlYlBhZ2VJbnNwZWN0
b3JDb250cm9sbGVyOjpQYXVzZUxvYWRpbmcgV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXI6Omlu
dGVyY2VwdFByb3Zpc2lvbmFsUGFnZShQcm92aXNpb25hbFBhZ2VQcm94eSYgcHJvdmlzaW9uYWxQ
YWdlKQogewotICAgIGFkZFRhcmdldChJbnNwZWN0b3JUYXJnZXRQcm94eTo6Y3JlYXRlKHByb3Zp
c2lvbmFsUGFnZSwgZ2V0VGFyZ2V0SUQocHJvdmlzaW9uYWxQYWdlKSwgSW5zcGVjdG9yOjpJbnNw
ZWN0b3JUYXJnZXRUeXBlOjpQYWdlKSk7CisgICAgYXV0byB0YXJnZXQgPSBJbnNwZWN0b3JUYXJn
ZXRQcm94eTo6Y3JlYXRlKHByb3Zpc2lvbmFsUGFnZSwgZ2V0VGFyZ2V0SUQocHJvdmlzaW9uYWxQ
YWdlKSwgSW5zcGVjdG9yOjpJbnNwZWN0b3JUYXJnZXRUeXBlOjpQYWdlKTsKKyAgICBhdXRvKiB0
YXJnZXRQdHIgPSB0YXJnZXQuZ2V0KCk7CisgICAgYWRkVGFyZ2V0KFdURk1vdmUodGFyZ2V0KSk7
CisgICAgcmV0dXJuIHRhcmdldFB0ci0+aXNQYXVzZWQoKSA/IFdlYlBhZ2VJbnNwZWN0b3JDb250
cm9sbGVyOjpQYXVzZUxvYWRpbmc6OlllcyA6IFdlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyOjpQ
YXVzZUxvYWRpbmc6Ok5vOwogfQogCiB2b2lkIFdlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyOjp3
aWxsRGVzdHJveVByb3Zpc2lvbmFsUGFnZShjb25zdCBQcm92aXNpb25hbFBhZ2VQcm94eSYgcHJv
dmlzaW9uYWxQYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZUluc3BlY3RvckNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VJ
bnNwZWN0b3JDb250cm9sbGVyLmgKaW5kZXggODI4YmMzY2NjN2UwN2Q4MTIwMzM0MzFiMjdhZTdm
MGJjOGNmOWM1NC4uNGFlN2IyMzY2YzcyZDU3YTk0ZTMzM2ZlYWUzMTg5MzRkOTdkZDc2MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZUluc3BlY3RvckNvbnRyb2xs
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlSW5zcGVjdG9yQ29udHJv
bGxlci5oCkBAIC02Niw3ICs2Niw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlc3Ryb3lJbnNwZWN0
b3JUYXJnZXQoY29uc3QgU3RyaW5nJiB0YXJnZXRJZCk7CiAgICAgdm9pZCBzZW5kTWVzc2FnZVRv
SW5zcGVjdG9yRnJvbnRlbmQoY29uc3QgU3RyaW5nJiB0YXJnZXRJZCwgY29uc3QgU3RyaW5nJiBt
ZXNzYWdlKTsKIAotICAgIHZvaWQgZGlkQ3JlYXRlUHJvdmlzaW9uYWxQYWdlKFByb3Zpc2lvbmFs
UGFnZVByb3h5Jik7CisgICAgZW51bSBjbGFzcyBQYXVzZUxvYWRpbmcgeyBObywgWWVzIH07Cisg
ICAgUGF1c2VMb2FkaW5nIGludGVyY2VwdFByb3Zpc2lvbmFsUGFnZShQcm92aXNpb25hbFBhZ2VQ
cm94eSYpOwogICAgIHZvaWQgd2lsbERlc3Ryb3lQcm92aXNpb25hbFBhZ2UoY29uc3QgUHJvdmlz
aW9uYWxQYWdlUHJveHkmKTsKICAgICB2b2lkIGRpZENvbW1pdFByb3Zpc2lvbmFsUGFnZShXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciBvbGRXZWJQYWdlSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
IG5ld1dlYlBhZ2VJRCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CmluZGV4IDgxYjY1YzZlMmRiMWQ4MDFiN2MzZTU2NzUxNjc1YWFmNmM3OGZkNzguLmI4ZWI2Y2Zl
ZmJmNjY3ZDZiYTU0YzBkYjllZGE3MWNhM2RmOGNlZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMzA5NiwyOCArMzA5NiwzNCBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6Y29udGludWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNzKEFQSTo6TmF2aWdhdGlvbiYgbmF2
aWdhdGlvbiwgcwogCiAgICAgbV9wcm92aXNpb25hbFBhZ2UgPSBtYWtlVW5pcXVlPFByb3Zpc2lv
bmFsUGFnZVByb3h5PigqdGhpcywgbmV3UHJvY2Vzcy5jb3B5UmVmKCksIFdURk1vdmUoc3VzcGVu
ZGVkUGFnZSksIG5hdmlnYXRpb24ubmF2aWdhdGlvbklEKCksIG5hdmlnYXRpb24uY3VycmVudFJl
cXVlc3RJc1JlZGlyZWN0KCksIG5hdmlnYXRpb24uY3VycmVudFJlcXVlc3QoKSwgcHJvY2Vzc1N3
YXBSZXF1ZXN0ZWRCeUNsaWVudCk7CiAKLSAgICBpZiAoYXV0byogaXRlbSA9IG5hdmlnYXRpb24u
dGFyZ2V0SXRlbSgpKSB7Ci0gICAgICAgIExPRyhMb2FkaW5nLCAiV2ViUGFnZVByb3h5ICVwIGNv
bnRpbnVlTmF2aWdhdGlvbkluTmV3UHJvY2VzcyB0byBiYWNrIGl0ZW0gVVJMICVzIiwgdGhpcywg
aXRlbS0+dXJsKCkudXRmOCgpLmRhdGEoKSk7CisgICAgYXV0byBjb250aW51YXRpb24gPSBbdGhp
cywgbmF2aWdhdGlvbiA9IG1ha2VSZWYobmF2aWdhdGlvbiksIG5ld1Byb2Nlc3MgPSBXVEZNb3Zl
KG5ld1Byb2Nlc3MpLCB3ZWJzaXRlUG9saWNpZXMgPSBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llcyld
KCkgbXV0YWJsZSB7CisgICAgICAgIGlmIChhdXRvKiBpdGVtID0gbmF2aWdhdGlvbi0+dGFyZ2V0
SXRlbSgpKSB7CisgICAgICAgICAgICBMT0coTG9hZGluZywgIldlYlBhZ2VQcm94eSAlcCBjb250
aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3MgdG8gYmFjayBpdGVtIFVSTCAlcyIsIHRoaXMsIGl0
ZW0tPnVybCgpLnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgICAgIGF1dG8gdHJhbnNhY3Rpb24gPSBt
X3BhZ2VMb2FkU3RhdGUudHJhbnNhY3Rpb24oKTsKLSAgICAgICAgbV9wYWdlTG9hZFN0YXRlLnNl
dFBlbmRpbmdBUElSZXF1ZXN0KHRyYW5zYWN0aW9uLCB7IG5hdmlnYXRpb24ubmF2aWdhdGlvbklE
KCksIGl0ZW0tPnVybCgpIH0pOworICAgICAgICAgICAgYXV0byB0cmFuc2FjdGlvbiA9IG1fcGFn
ZUxvYWRTdGF0ZS50cmFuc2FjdGlvbigpOworICAgICAgICAgICAgbV9wYWdlTG9hZFN0YXRlLnNl
dFBlbmRpbmdBUElSZXF1ZXN0KHRyYW5zYWN0aW9uLCB7IG5hdmlnYXRpb24tPm5hdmlnYXRpb25J
RCgpLCBpdGVtLT51cmwoKSB9KTsKIAotICAgICAgICBtX3Byb3Zpc2lvbmFsUGFnZS0+Z29Ub0Jh
Y2tGb3J3YXJkSXRlbShuYXZpZ2F0aW9uLCAqaXRlbSwgV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMp
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICAgICAgICAgIG1fcHJvdmlzaW9uYWxQYWdl
LT5nb1RvQmFja0ZvcndhcmRJdGVtKG5hdmlnYXRpb24sICppdGVtLCBXVEZNb3ZlKHdlYnNpdGVQ
b2xpY2llcykpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAKLSAgICBpZiAobV9i
YWNrRm9yd2FyZExpc3QtPmN1cnJlbnRJdGVtKCkgJiYgKG5hdmlnYXRpb24ubG9ja0JhY2tGb3J3
YXJkTGlzdCgpID09IExvY2tCYWNrRm9yd2FyZExpc3Q6OlllcyB8fCBuYXZpZ2F0aW9uLmxvY2tI
aXN0b3J5KCkgPT0gTG9ja0hpc3Rvcnk6OlllcykpIHsKLSAgICAgICAgLy8gSWYgV2ViQ29yZSBp
cyBzdXBwb3NlZCB0byBsb2NrIHRoZSBoaXN0b3J5IGZvciB0aGlzIGxvYWQsIHRoZW4gdGhlIG5l
dyBwcm9jZXNzIG5lZWRzIHRvIGtub3cgYWJvdXQgdGhlIGN1cnJlbnQgaGlzdG9yeSBpdGVtIHNv
IGl0IGNhbiB1cGRhdGUKLSAgICAgICAgLy8gaXQgaW5zdGVhZCBvZiBjcmVhdGluZyBhIG5ldyBv
bmUuCi0gICAgICAgIG5ld1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEN1cnJl
bnRIaXN0b3J5SXRlbUZvclJlYXR0YWNoKG1fYmFja0ZvcndhcmRMaXN0LT5jdXJyZW50SXRlbSgp
LT5pdGVtU3RhdGUoKSksIG1fcHJvdmlzaW9uYWxQYWdlLT53ZWJQYWdlSUQoKSk7Ci0gICAgfQor
ICAgICAgICBpZiAobV9iYWNrRm9yd2FyZExpc3QtPmN1cnJlbnRJdGVtKCkgJiYgKG5hdmlnYXRp
b24tPmxvY2tCYWNrRm9yd2FyZExpc3QoKSA9PSBMb2NrQmFja0ZvcndhcmRMaXN0OjpZZXMgfHwg
bmF2aWdhdGlvbi0+bG9ja0hpc3RvcnkoKSA9PSBMb2NrSGlzdG9yeTo6WWVzKSkgeworICAgICAg
ICAgICAgLy8gSWYgV2ViQ29yZSBpcyBzdXBwb3NlZCB0byBsb2NrIHRoZSBoaXN0b3J5IGZvciB0
aGlzIGxvYWQsIHRoZW4gdGhlIG5ldyBwcm9jZXNzIG5lZWRzIHRvIGtub3cgYWJvdXQgdGhlIGN1
cnJlbnQgaGlzdG9yeSBpdGVtIHNvIGl0IGNhbiB1cGRhdGUKKyAgICAgICAgICAgIC8vIGl0IGlu
c3RlYWQgb2YgY3JlYXRpbmcgYSBuZXcgb25lLgorICAgICAgICAgICAgbmV3UHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0Q3VycmVudEhpc3RvcnlJdGVtRm9yUmVhdHRhY2gobV9i
YWNrRm9yd2FyZExpc3QtPmN1cnJlbnRJdGVtKCktPml0ZW1TdGF0ZSgpKSwgbV9wcm92aXNpb25h
bFBhZ2UtPndlYlBhZ2VJRCgpKTsKKyAgICAgICAgfQogCi0gICAgLy8gRklYTUU6IFdvcmsgb3V0
IHRpbWluZyBvZiByZXNwb25kaW5nIHdpdGggdGhlIGxhc3QgcG9saWN5IGRlbGVnYXRlLCBldGMK
LSAgICBBU1NFUlQoIW5hdmlnYXRpb24uY3VycmVudFJlcXVlc3QoKS5pc0VtcHR5KCkpOwotICAg
IGlmIChhdXRvJiBzdWJzdGl0dXRlRGF0YSA9IG5hdmlnYXRpb24uc3Vic3RpdHV0ZURhdGEoKSkK
LSAgICAgICAgbV9wcm92aXNpb25hbFBhZ2UtPmxvYWREYXRhKG5hdmlnYXRpb24sIHsgc3Vic3Rp
dHV0ZURhdGEtPmNvbnRlbnQuZGF0YSgpLCBzdWJzdGl0dXRlRGF0YS0+Y29udGVudC5zaXplKCkg
fSwgc3Vic3RpdHV0ZURhdGEtPk1JTUVUeXBlLCBzdWJzdGl0dXRlRGF0YS0+ZW5jb2RpbmcsIHN1
YnN0aXR1dGVEYXRhLT5iYXNlVVJMLCBzdWJzdGl0dXRlRGF0YS0+dXNlckRhdGEuZ2V0KCksIFdU
Rk1vdmUod2Vic2l0ZVBvbGljaWVzKSk7CisgICAgICAgIC8vIEZJWE1FOiBXb3JrIG91dCB0aW1p
bmcgb2YgcmVzcG9uZGluZyB3aXRoIHRoZSBsYXN0IHBvbGljeSBkZWxlZ2F0ZSwgZXRjCisgICAg
ICAgIEFTU0VSVCghbmF2aWdhdGlvbi0+Y3VycmVudFJlcXVlc3QoKS5pc0VtcHR5KCkpOworICAg
ICAgICBpZiAoYXV0byYgc3Vic3RpdHV0ZURhdGEgPSBuYXZpZ2F0aW9uLT5zdWJzdGl0dXRlRGF0
YSgpKQorICAgICAgICAgICAgbV9wcm92aXNpb25hbFBhZ2UtPmxvYWREYXRhKG5hdmlnYXRpb24s
IHsgc3Vic3RpdHV0ZURhdGEtPmNvbnRlbnQuZGF0YSgpLCBzdWJzdGl0dXRlRGF0YS0+Y29udGVu
dC5zaXplKCkgfSwgc3Vic3RpdHV0ZURhdGEtPk1JTUVUeXBlLCBzdWJzdGl0dXRlRGF0YS0+ZW5j
b2RpbmcsIHN1YnN0aXR1dGVEYXRhLT5iYXNlVVJMLCBzdWJzdGl0dXRlRGF0YS0+dXNlckRhdGEu
Z2V0KCksIFdURk1vdmUod2Vic2l0ZVBvbGljaWVzKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIG1fcHJvdmlzaW9uYWxQYWdlLT5sb2FkUmVxdWVzdChuYXZpZ2F0aW9uLCBSZXNvdXJjZVJl
cXVlc3QgeyBuYXZpZ2F0aW9uLT5jdXJyZW50UmVxdWVzdCgpIH0sIFdlYkNvcmU6OlNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZEFsbG93RXh0ZXJuYWxTY2hlbWVzLCBudWxscHRy
LCBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llcykpOworICAgIH07CisgICAgaWYgKG1fcHJvdmlzaW9u
YWxQYWdlLT5zaG91bGRQYXVzZUxvYWRpbmdGb3JJbnNwZWN0b3IoKSkKKyAgICAgICAgbV9wcm92
aXNpb25hbFBhZ2UtPmNvbnRpbnVlTG9hZGluZ1doZW5SZXN1bWVkQnlJbnNwZWN0b3IoV1RGTW92
ZShjb250aW51YXRpb24pKTsKICAgICBlbHNlCi0gICAgICAgIG1fcHJvdmlzaW9uYWxQYWdlLT5s
b2FkUmVxdWVzdChuYXZpZ2F0aW9uLCBSZXNvdXJjZVJlcXVlc3QgeyBuYXZpZ2F0aW9uLmN1cnJl
bnRSZXF1ZXN0KCkgfSwgV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hv
dWxkQWxsb3dFeHRlcm5hbFNjaGVtZXMsIG51bGxwdHIsIFdURk1vdmUod2Vic2l0ZVBvbGljaWVz
KSk7CisgICAgICAgIGNvbnRpbnVhdGlvbigpOwogfQogCiBib29sIFdlYlBhZ2VQcm94eTo6aXNQ
YWdlT3BlbmVkQnlET01TaG93aW5nSW5pdGlhbEVtcHR5RG9jdW1lbnQoKSBjb25zdApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4
IDZmZmE5NjQyOTIxMjkzNTA1NGI2YWY4MjhjNWZhNzAxMGQyNWZjYzIuLjM4OWY2NTJjZDQ1ZGE4
NjVkZDAyZmQzMDliNzZhYTY5Mzk3NDk1NTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxOS0x
MS0xMyAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4KKworICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBhbGxvdyBpbnNwZWN0b3IgdG8gcGF1c2UgcHJvdmlzaW9uYWwgcGFnZSBs
b2FkIGFuZCByZXN0b3JlIGl0cyBzdGF0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjA0MTcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGVzdCB0aGF0IHByb3Zpc2lvbmFsIGxvYWRpbmcgd2hpY2ggc3Rh
cnRzIGJlZm9yZSBwcmV2aW9zIHByb3Zpc2lvbmFsIGxvYWRpbmcKKyAgICAgICAgY29tbWl0cyB3
aWxsIGJlIGNvcnJlY3RseSBoYW5kbGVkIGJ5IHRoZSBpbnNlcGN0b3IuCisKKyAgICAgICAgVGVz
dCB0aGF0IHNjcmlwdCBleGVjdXRpb24gd2lsbCBicmVhayBvbiBkZWJ1Z2dlciBzdGF0ZW1lbnQg
aW4gaW5saW5lIHNjcmlwdHMgaW4KKyAgICAgICAgY2FzZSBvZiBjcm9zcyBvcmlnaW4gbmF2aWdh
dGlvbiBhbmQgUFNPTi4KKworICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL3RhcmdldC9w
YXVzZS1vbi1pbmxpbmUtZGVidWdnZXItc3RhdGVtZW50LWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvdGFyZ2V0L3BhdXNlLW9uLWlubGluZS1kZWJ1
Z2dlci1zdGF0ZW1lbnQuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0
b3IvdGFyZ2V0L3Byb3Zpc2lvbmFsLWxvYWQtY2FuY2Vscy1wcmV2aW91cy1sb2FkLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvdGFyZ2V0L3Byb3Zp
c2lvbmFsLWxvYWQtY2FuY2Vscy1wcmV2aW91cy1sb2FkLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGh0dHAvdGVzdHMvaW5zcGVjdG9yL3RhcmdldC9yZXNvdXJjZXMvaW5saW5lLWRlYnVnZ2VyLXN0
YXRlbWVudC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci90YXJn
ZXQvdGFyZ2V0LWV2ZW50cy1mb3ItcHJvdmlzaW9uYWwtcGFnZS5odG1sOgorCiAyMDE5LTExLTIx
ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEZsYWt5
IFRlc3Q6IGNvbXBvc2l0aW5nL2JhY2tpbmcvYmFja2luZy1zdG9yZS1hdHRhY2htZW50LXdpdGgt
cm90YXRpb24uaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0
b3IvdGFyZ2V0L3BhdXNlLW9uLWlubGluZS1kZWJ1Z2dlci1zdGF0ZW1lbnQtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvdGFyZ2V0L3BhdXNlLW9uLWlubGlu
ZS1kZWJ1Z2dlci1zdGF0ZW1lbnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIyZjY2OGU0Zjk5
NjU1Y2M1NTA3ODExY2FiNGM2NDdiYjA5MzlkYWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci90YXJnZXQvcGF1c2Utb24taW5saW5lLWRlYnVnZ2Vy
LXN0YXRlbWVudC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyIEBACitBTEVSVDogUEFTUzogU2hv
dWxkIHBhdXNlIG9uIGRlYnVnZ2VyIHN0YXRlbWVudC4KK1Rlc3QgcGFnZSB1c2VkIHRvIGNoZWNr
IHRoYXQgZXhlY3V0aW9uIHdpbGwgYnJlYWsgb24gaW5saW5lICdkZWJ1Z2dlcicgc3RhdGVtZW50
IGFmdGVyIGNyb3NzLW9yaWdpbiBuYXZpZ2F0aW9uLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9pbnNwZWN0b3IvdGFyZ2V0L3BhdXNlLW9uLWlubGluZS1kZWJ1Z2dlci1zdGF0
ZW1lbnQuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3RhcmdldC9wYXVz
ZS1vbi1pbmxpbmUtZGVidWdnZXItc3RhdGVtZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTY5NGRkMjdj
MmIwZGJmM2YwNDBkNzhjZDhjMWM5MzUyNWRhZmY4YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3RhcmdldC9wYXVzZS1vbi1pbmxpbmUtZGVidWdn
ZXItc3RhdGVtZW50Lmh0bWwKQEAgLTAsMCArMSw0MiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291
cmNlcy9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZnVuY3Rpb24gdGVz
dCgpCit7CisgICAgbGV0IHN1aXRlID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVBc3luY1N1aXRlKCJU
YXJnZXQuUFNPTiIpOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAi
SW5saW5lRGVidWdnZXJTdGF0ZW1lbnQiLAorICAgICAgICBkZXNjcmlwdGlvbjogIkNoZWNrIHRo
YXQgbmV3IHByb3Zpc2lvbmFsIHBhZ2UgY2FuIGJlIHBhdXNlZCBiZWZvcmUgbmF2aWdhdGlvbi4i
LAorICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgeworICAgICAgICAgICAgV0kuZGVidWdn
ZXJNYW5hZ2VyLmF3YWl0RXZlbnQoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCkKKyAg
ICAgICAgICAgIC50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnBh
c3MoYFNob3VsZCBwYXVzZSBvbiBkZWJ1Z2dlciBzdGF0ZW1lbnQuYCk7CisKKyAgICAgICAgICAg
ICAgICAvLyBXYWl0IGZvciBwYWdlIHJlbG9hZCBldmVudCB0byBhdm9pZCByYWNlIGJldHdlZW4g
dGVzdCByZXN1bHRzIGZsdXNoaW5nIGFuZCB0aGUgdGVzdCBjb21wbGV0aW9uLgorICAgICAgICAg
ICAgICAgIGxldCBwYWdlTG9hZFByb21pc2UgPSBJbnNwZWN0b3JUZXN0LmF3YWl0RXZlbnQoRnJv
bnRlbmRUZXN0SGFybmVzcy5FdmVudC5UZXN0UGFnZURpZExvYWQpOworICAgICAgICAgICAgICAg
IC8vV0kubWFpblRhcmdldC5EZWJ1Z2dlckFnZW50LgorICAgICAgICAgICAgICAgIFByb21pc2Uu
cmVzb2x2ZSgpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgICAgICBXSS5kZWJ1Z2dlck1h
bmFnZXIucmVzdW1lKCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgcmV0
dXJuIHBhZ2VMb2FkUHJvbWlzZTsKKyAgICAgICAgICAgIH0pCisgICAgICAgICAgICAudGhlbihy
ZXNvbHZlKTsKKworCisgICAgICAgICAgICBjb25zdCB1cmwgPSAiaHR0cDovL2xvY2FsaG9zdDo4
MDAwL2luc3BlY3Rvci90YXJnZXQvcmVzb3VyY2VzL2lubGluZS1kZWJ1Z2dlci1zdGF0ZW1lbnQu
aHRtbCI7CisgICAgICAgICAgICBXSS5tYWluVGFyZ2V0LlBhZ2VBZ2VudC5uYXZpZ2F0ZSh1cmwp
OworICAgICAgICB9CisgICAgfSk7CisKKyAgICBzdWl0ZS5ydW5UZXN0Q2FzZXNBbmRGaW5pc2go
KTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHA+
VGVzdCB0aGF0IGV4ZWN1dGlvbiB3aWxsIGJyZWFrIG9uIGlubGluZSAnZGVidWdnZXInIHN0YXRl
bWVudCBhZnRlciBjcm9zcy1vcmlnaW4gbmF2aWdhdGlvbi48L3A+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci90YXJnZXQvcHJv
dmlzaW9uYWwtbG9hZC1jYW5jZWxzLXByZXZpb3VzLWxvYWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvdGFyZ2V0L3Byb3Zpc2lvbmFsLWxvYWQtY2FuY2Vs
cy1wcmV2aW91cy1sb2FkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZDA3YjVhMDRkN2Y4M2I5
YzU3MGMyYmY2OTE4ZGY0MjU2ZGY3ODBlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9pbnNwZWN0b3IvdGFyZ2V0L3Byb3Zpc2lvbmFsLWxvYWQtY2FuY2Vscy1wcmV2
aW91cy1sb2FkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE3IEBACitUZXN0IHRoYXQgdHdvIGNv
bnNlcXV0aXZlIGNyb3NzIGRvbWFpbiBuYXZpZ2F0aW9uIHJlcXVlc3RzIHdpbGwgcmVzdWx0IGlu
IHR3byBwcm92aXNpb25hbCB0YXJnZXRzIGJlaW5nIGNyZWF0ZWQsIGZpcnN0IG9mIHdoaWNoIGlz
IGxhdGVyIGRlc3Ryb3llZCBhbmQgdGhlIHNlY29uZCBpcyBjb21taXR0ZWQuCisKKworPT0gUnVu
bmluZyB0ZXN0IHN1aXRlOiBUYXJnZXQuUFNPTgorLS0gUnVubmluZyB0ZXN0IGNhc2U6IFByb3Zp
c2lvbmFsUGFnZVBhdXNlZAorQ3VycmVudCB0YXJnZXQgaXMgMS4KK1BBU1M6IFNob3VsZCByZWNl
aXZlIFRhcmdldEFkZGVkIGV2ZW50IGZvciB0YXJnZXQgMi4KK1BBU1M6IFRhcmdldCAyIHNob3Vs
ZCBiZSBwcm92aXNpb25hbC4KK1BBU1M6IFRhcmdldCAyIHNob3VsZCBiZSBwYXVzZWQgb24gc3Rh
cnQuCitQQVNTOiBTaG91bGQgcmVjZWl2ZSBUYXJnZXRSZW1vdmVkIGV2ZW50IGZvciB0YXJnZXQg
MgorUEFTUzogU2hvdWxkIHJlY2VpdmUgVGFyZ2V0QWRkZWQgZXZlbnQgZm9yIHRhcmdldCAzLgor
UEFTUzogVGFyZ2V0IDMgc2hvdWxkIGJlIHByb3Zpc2lvbmFsLgorUEFTUzogVGFyZ2V0IDMgc2hv
dWxkIGJlIHBhdXNlZCBvbiBzdGFydC4KK1BBU1M6IFNob3VsZCByZWNlaXZlIFRhcmdldFJlbW92
ZWQgZXZlbnQgZm9yIHRhcmdldCAxCitQQVNTOiBTaG91bGQgcmVjZWl2ZSBEaWRDb21taXRQcm92
aXNpb25hbFRhcmdldCBldmVudCAxID0+IDMuCitQQVNTOiBTaG91bGQgaGF2ZSBzZWVuIDMgZGlm
ZmVyZW50IHRhcmdldHMuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL3RhcmdldC9wcm92aXNpb25hbC1sb2FkLWNhbmNlbHMtcHJldmlvdXMtbG9hZC5odG1s
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvdGFyZ2V0L3Byb3Zpc2lvbmFsLWxv
YWQtY2FuY2Vscy1wcmV2aW91cy1sb2FkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDM4YmMzOWQ4NzBlZTZj
ODg0MTk0ODI5YzdiY2VmZTQyMWNmYWI2NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL3RhcmdldC9wcm92aXNpb25hbC1sb2FkLWNhbmNlbHMtcHJl
dmlvdXMtbG9hZC5odG1sCkBAIC0wLDAgKzEsNzEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJj
ZXMvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Z1bmN0aW9uIHRlc3Qo
KQoreworICAgIGxldCBsYXN0QXNzaWduZWRJZCA9IDA7CisgICAgbGV0IHRhcmdldFRvSWQgPSBu
ZXcgTWFwOworICAgIGZ1bmN0aW9uIHN0YWJsZVRhcmdldElkKHRhcmdldElkKQorICAgIHsKKyAg
ICAgICAgbGV0IGlkID0gdGFyZ2V0VG9JZC5nZXQodGFyZ2V0SWQpOworICAgICAgICBpZiAoIWlk
KSB7CisgICAgICAgICAgICBpZCA9ICsrbGFzdEFzc2lnbmVkSWQ7CisgICAgICAgICAgICB0YXJn
ZXRUb0lkLnNldCh0YXJnZXRJZCwgaWQpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBpZDsK
KyAgICB9CisKKyAgICBsZXQgc3VpdGUgPSBJbnNwZWN0b3JUZXN0LmNyZWF0ZUFzeW5jU3VpdGUo
IlRhcmdldC5QU09OIik7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6
ICJQcm92aXNpb25hbFBhZ2VQYXVzZWQiLAorICAgICAgICBkZXNjcmlwdGlvbjogIkNoZWNrIHRo
YXQgbmV3IHByb3Zpc2lvbmFsIHBhZ2UgY2FuIGJlIHBhdXNlZCBiZWZvcmUgbmF2aWdhdGlvbi4i
LAorICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgeworICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5sb2coYEN1cnJlbnQgdGFyZ2V0IGlzICR7c3RhYmxlVGFyZ2V0SWQoV0kubWFpblRhcmdl
dC5pZGVudGlmaWVyKX0uYCk7CisKKyAgICAgICAgICAgIFdJLnRhcmdldE1hbmFnZXIuYWRkRXZl
bnRMaXN0ZW5lcihXSS5UYXJnZXRNYW5hZ2VyLkV2ZW50LlRhcmdldEFkZGVkLCAoZXZlbnQpID0+
IHsKKyAgICAgICAgICAgICAgICBsZXQgdGFyZ2V0ID0gZXZlbnQuZGF0YS50YXJnZXQ7CisgICAg
ICAgICAgICAgICAgbGV0IHRhcmdldElkID0gc3RhYmxlVGFyZ2V0SWQodGFyZ2V0LmlkZW50aWZp
ZXIpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QucGFzcyhgU2hvdWxkIHJlY2VpdmUg
VGFyZ2V0QWRkZWQgZXZlbnQgZm9yIHRhcmdldCAke3RhcmdldElkfS5gKTsKKyAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRydWUodGFyZ2V0LmlzUHJvdmlzaW9uYWwsIGBUYXJn
ZXQgJHt0YXJnZXRJZH0gc2hvdWxkIGJlIHByb3Zpc2lvbmFsLmApOworICAgICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuZXhwZWN0VHJ1ZSh0YXJnZXQuaXNQYXVzZWQsIGBUYXJnZXQgJHt0YXJn
ZXRJZH0gc2hvdWxkIGJlIHBhdXNlZCBvbiBzdGFydC5gKTsKKyAgICAgICAgICAgIH0pOworCisg
ICAgICAgICAgICBXSS50YXJnZXRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuVGFyZ2V0TWFu
YWdlci5FdmVudC5EaWRDb21taXRQcm92aXNpb25hbFRhcmdldCwgKGV2ZW50KSA9PiB7CisgICAg
ICAgICAgICAgICAgbGV0IHtwcmV2aW91c1RhcmdldElkLCB0YXJnZXR9ID0gZXZlbnQuZGF0YTsK
KyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnBhc3MoYFNob3VsZCByZWNlaXZlIERpZENv
bW1pdFByb3Zpc2lvbmFsVGFyZ2V0IGV2ZW50ICR7c3RhYmxlVGFyZ2V0SWQocHJldmlvdXNUYXJn
ZXRJZCl9ID0+ICR7c3RhYmxlVGFyZ2V0SWQodGFyZ2V0LmlkZW50aWZpZXIpfS5gKTsKKyAgICAg
ICAgICAgIH0pOworCisgICAgICAgICAgICBXSS50YXJnZXRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVu
ZXIoV0kuVGFyZ2V0TWFuYWdlci5FdmVudC5UYXJnZXRSZW1vdmVkLCAoZXZlbnQpID0+eworICAg
ICAgICAgICAgICAgIGxldCB0YXJnZXRJZCA9IHN0YWJsZVRhcmdldElkKGV2ZW50LmRhdGEudGFy
Z2V0LmlkZW50aWZpZXIpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QucGFzcyhgU2hv
dWxkIHJlY2VpdmUgVGFyZ2V0UmVtb3ZlZCBldmVudCBmb3IgdGFyZ2V0ICR7dGFyZ2V0SWR9YCk7
CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgLy8gV2FpdCBmb3IgcGFnZSByZWxvYWQg
ZXZlbnQgdG8gYXZvaWQgcmFjZSBiZXR3ZWVuIHRlc3QgcmVzdWx0cyBmbHVzaGluZyBhbmQgdGhl
IHRlc3QgY29tcGxldGlvbi4KKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXdhaXRFdmVudChG
cm9udGVuZFRlc3RIYXJuZXNzLkV2ZW50LlRlc3RQYWdlRGlkTG9hZCkKKyAgICAgICAgICAgIC50
aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKGxh
c3RBc3NpZ25lZElkLCAzLCBgU2hvdWxkIGhhdmUgc2VlbiAzIGRpZmZlcmVudCB0YXJnZXRzLmAp
OworICAgICAgICAgICAgfSkKKyAgICAgICAgICAgIC50aGVuKHJlc29sdmUpOworCisgICAgICAg
ICAgICAvLyBTZW5kIHR3byBjb25zZXF1dGl2ZSBuYXZpZ2F0aW9uIHJlcXVlc3RzLiBUaGUgbGF0
dGVyIHdpbGwgY2FuY2VsIHByb3Zpc2lvbmFsCisgICAgICAgICAgICAvLyBsb2FkIG9mIHRoZSBm
b3JtZXIuCisgICAgICAgICAgICBjb25zdCB1cmwgPSAiaHR0cDovL2xvY2FsaG9zdDo4MDAwL2lu
c3BlY3Rvci90YXJnZXQvcHJvdmlzaW9uYWwtbG9hZC1jYW5jZWxzLXByZXZpb3VzLWxvYWQuaHRt
bCI7CisgICAgICAgICAgICBXSS5tYWluVGFyZ2V0LlBhZ2VBZ2VudC5uYXZpZ2F0ZSh1cmwpOwor
ICAgICAgICAgICAgV0kubWFpblRhcmdldC5QYWdlQWdlbnQubmF2aWdhdGUodXJsKTsKKyAgICAg
ICAgfQorICAgIH0pOworCisgICAgc3VpdGUucnVuVGVzdENhc2VzQW5kRmluaXNoKCk7Cit9Cis8
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxwPlRlc3QgdGhh
dCB0d28gY29uc2VxdXRpdmUgY3Jvc3MgZG9tYWluIG5hdmlnYXRpb24gcmVxdWVzdHMgd2lsbCBy
ZXN1bHQgaW4gdHdvCitwcm92aXNpb25hbCB0YXJnZXRzIGJlaW5nIGNyZWF0ZWQsIGZpcnN0IG9m
IHdoaWNoIGlzIGxhdGVyIGRlc3Ryb3llZCBhbmQgdGhlIHNlY29uZAoraXMgY29tbWl0dGVkLjwv
cD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL3RhcmdldC9yZXNvdXJjZXMvaW5saW5lLWRlYnVnZ2VyLXN0YXRlbWVudC5odG1s
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvdGFyZ2V0L3Jlc291cmNlcy9pbmxp
bmUtZGVidWdnZXItc3RhdGVtZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWMwYzAxNmE1YWQzOGNhNjhm
OGVhN2IzNmRiNDM1NDc5YzViYWEyMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvaW5zcGVjdG9yL3RhcmdldC9yZXNvdXJjZXMvaW5saW5lLWRlYnVnZ2VyLXN0YXRl
bWVudC5odG1sCkBAIC0wLDAgKzEsMTkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVh
ZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
aW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKworZGVidWdnZXI7CisKK2Z1
bmN0aW9uIHRlc3QoKQoreworICAgIEluc3BlY3RvclRlc3QuZmFpbCgiVGhpcyBjb2RlIHNob3Vs
ZCBuZXZlciBhY3R1YWxseSBydW4uIEl0IGlzIGhlcmUgYmVjYXNlIGluc3BlY3Rvci10ZXN0Lmpz
IGhhcm5lc3MgcmVxdWlyZXMgYSB0ZXN0KCkgZnVuY3Rpb24uIik7Cit9Cis8L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxwPlRlc3QgcGFnZSB1c2VkIHRvIGNo
ZWNrIHRoYXQgZXhlY3V0aW9uIHdpbGwgYnJlYWsgb24gaW5saW5lICdkZWJ1Z2dlcicgc3RhdGVt
ZW50IGFmdGVyIGNyb3NzLW9yaWdpbiBuYXZpZ2F0aW9uLjwvcD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3RhcmdldC90YXJn
ZXQtZXZlbnRzLWZvci1wcm92aXNpb25hbC1wYWdlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL3RhcmdldC90YXJnZXQtZXZlbnRzLWZvci1wcm92aXNpb25h
bC1wYWdlLWV4cGVjdGVkLnR4dAppbmRleCA2ZGVmN2UwYmIzNDRkZTMyZDZkNTVjNzgyYTk4ZjIx
NjMwOTlmODdkLi5kMDBlMzYzMmRjNWRkYmIyOWZmNzJjOGIxNzI4ZTk3NDkxZGUyNDI2IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci90YXJnZXQvdGFyZ2V0LWV2
ZW50cy1mb3ItcHJvdmlzaW9uYWwtcGFnZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9pbnNwZWN0b3IvdGFyZ2V0L3RhcmdldC1ldmVudHMtZm9yLXByb3Zpc2lvbmFs
LXBhZ2UtZXhwZWN0ZWQudHh0CkBAIC02LDExICs2LDExIEBAIFRlc3QgdGhhdCBjcm9zcyBkb21h
aW4gbmF2aWdhdGlvbiByZXN1bHRzIGluIHRoZSBmb2xsb3dpbmcgc2VxdWVuY2Ugb2YgZXZlbnRz
IGluCiAKID09IFJ1bm5pbmcgdGVzdCBzdWl0ZTogVGFyZ2V0LlBTT04KIC0tIFJ1bm5pbmcgdGVz
dCBjYXNlOiBQcm92aXNpb25hbFBhZ2VUYXJnZXQKLVBBU1M6IFNob3VsZCByZWNlaXZlIHRhcmdl
dENyZWF0ZWQgZXZlbnQuCitQQVNTOiBTaG91bGQgcmVjZWl2ZSBUYXJnZXRBZGRlZCBldmVudC4K
IFBBU1M6IFRhcmdldCBzaG91bGQgYmUgcHJvdmlzaW9uYWwuCi1QQVNTOiBTaG91bGQgcmVjZWl2
ZSBkaWRDb21taXRQcm92aXNpb25hbFRhcmdldCBldmVudC4KK1BBU1M6IFNob3VsZCByZWNlaXZl
IFRhcmdldFJlbW92ZWQgZXZlbnQuCitQQVNTOiBEZXN0cm95ZWQgdGFyZ2V0IHNob3VsZCBiZSBw
cmV2aW91cyB0YXJnZXQuCitQQVNTOiBTaG91bGQgcmVjZWl2ZSBEaWRDb21taXRQcm92aXNpb25h
bFRhcmdldCBldmVudC4KIFBBU1M6IFByZXZpb3VzIHRhcmdldCBzaG91bGQgYmUgdGhlIGN1cnJl
bnQgb25lLgogUEFTUzogQ29tbWl0dGVkIHRhcmdldCBzaG91bGQgbWF0Y2ggcHJvdmlzaW9uYWwg
dGFyZ2V0LgotUEFTUzogU2hvdWxkIHJlY2VpdmUgdGFyZ2V0RGVzdHJveWVkIGV2ZW50LgotUEFT
UzogRGVzdHJveWVkIHRhcmdldCBzaG91bGQgYmUgcHJldmlvdXMgdGFyZ2V0LgogCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci90YXJnZXQvdGFyZ2V0LWV2ZW50
cy1mb3ItcHJvdmlzaW9uYWwtcGFnZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvdGFyZ2V0L3RhcmdldC1ldmVudHMtZm9yLXByb3Zpc2lvbmFsLXBhZ2UuaHRtbAppbmRl
eCBlNzM5NTEzOTM2NzQ0ZTU1NmVjMTEyYmRkNTJhYTFkOGU2NDk0YTkxLi5jNTFmYjRlMmY1OWMz
NjkzZWRiYjUxMTkzZWMzMjBlZmY2Zjk1ZDRlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2luc3BlY3Rvci90YXJnZXQvdGFyZ2V0LWV2ZW50cy1mb3ItcHJvdmlzaW9uYWwtcGFn
ZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3RhcmdldC90YXJn
ZXQtZXZlbnRzLWZvci1wcm92aXNpb25hbC1wYWdlLmh0bWwKQEAgLTEzLDI4ICsxMywyNyBAQCBm
dW5jdGlvbiB0ZXN0KCkKICAgICAgICAgZGVzY3JpcHRpb246ICJDaGVjayB0aGF0IGEgbmV3IHRh
cmdldCB3aWxsIGJlIGNyZWF0ZWQgZm9yIHByb3Zpc2lvbmFsIHBhZ2UuIiwKICAgICAgICAgdGVz
dChyZXNvbHZlLCByZWplY3QpIHsKICAgICAgICAgICAgIGNvbnN0IG1haW5UYXJnZXRJZCA9IFdJ
Lm1haW5UYXJnZXQuaWRlbnRpZmllcjsKLSAgICAgICAgICAgIGxldCBuZXdUYXJnZXRJZDsKKyAg
ICAgICAgICAgIGxldCBuZXdUYXJnZXQ7CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2Vy
dChtYWluVGFyZ2V0SWQpOwogICAgICAgICAgICAgbGV0IHJlbG9hZFByb21pc2UgPSBJbnNwZWN0
b3JUZXN0LmF3YWl0RXZlbnQoRnJvbnRlbmRUZXN0SGFybmVzcy5FdmVudC5UZXN0UGFnZURpZExv
YWQpOwogCi0gICAgICAgICAgICBXSS50YXJnZXRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0ku
VGFyZ2V0TWFuYWdlci5FdmVudC5UYXJnZXRDcmVhdGVkLCAoZXZlbnQpID0+IHsKLSAgICAgICAg
ICAgICAgICBsZXQge3RhcmdldEluZm99ID0gZXZlbnQuZGF0YTsKLSAgICAgICAgICAgICAgICBu
ZXdUYXJnZXRJZCA9IHRhcmdldEluZm8udGFyZ2V0SWQ7Ci0gICAgICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5wYXNzKGBTaG91bGQgcmVjZWl2ZSB0YXJnZXRDcmVhdGVkIGV2ZW50LmApOwotICAg
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VHJ1ZSh0YXJnZXRJbmZvLmlzUHJvdmlz
aW9uYWwsICJUYXJnZXQgc2hvdWxkIGJlIHByb3Zpc2lvbmFsLiIpOworICAgICAgICAgICAgV0ku
dGFyZ2V0TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLlRhcmdldE1hbmFnZXIuRXZlbnQuVGFy
Z2V0QWRkZWQsIChldmVudCkgPT4geworICAgICAgICAgICAgICAgIG5ld1RhcmdldCA9IGV2ZW50
LmRhdGEudGFyZ2V0OworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QucGFzcyhgU2hvdWxk
IHJlY2VpdmUgVGFyZ2V0QWRkZWQgZXZlbnQuYCk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5leHBlY3RUcnVlKG5ld1RhcmdldC5pc1Byb3Zpc2lvbmFsLCAiVGFyZ2V0IHNob3VsZCBi
ZSBwcm92aXNpb25hbC4iKTsKICAgICAgICAgICAgIH0pOwogCiAgICAgICAgICAgICBXSS50YXJn
ZXRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuVGFyZ2V0TWFuYWdlci5FdmVudC5EaWRDb21t
aXRQcm92aXNpb25hbFRhcmdldCwgKGV2ZW50KSA9PiB7Ci0gICAgICAgICAgICAgICAgbGV0IHtw
cmV2aW91c1RhcmdldElkLCB0YXJnZXRJbmZvfSA9IGV2ZW50LmRhdGE7Ci0gICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5wYXNzKGBTaG91bGQgcmVjZWl2ZSBkaWRDb21taXRQcm92aXNpb25h
bFRhcmdldCBldmVudC5gKTsKKyAgICAgICAgICAgICAgICBsZXQge3ByZXZpb3VzVGFyZ2V0SWQs
IHRhcmdldH0gPSBldmVudC5kYXRhOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QucGFz
cyhgU2hvdWxkIHJlY2VpdmUgRGlkQ29tbWl0UHJvdmlzaW9uYWxUYXJnZXQgZXZlbnQuYCk7CiAg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChwcmV2aW91c1RhcmdldElk
LCBtYWluVGFyZ2V0SWQsICJQcmV2aW91cyB0YXJnZXQgc2hvdWxkIGJlIHRoZSBjdXJyZW50IG9u
ZS4iKTsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHRhcmdldElu
Zm8udGFyZ2V0SWQsIG5ld1RhcmdldElkLCAiQ29tbWl0dGVkIHRhcmdldCBzaG91bGQgbWF0Y2gg
cHJvdmlzaW9uYWwgdGFyZ2V0LiIpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhw
ZWN0RXF1YWwodGFyZ2V0LCBuZXdUYXJnZXQsICJDb21taXR0ZWQgdGFyZ2V0IHNob3VsZCBtYXRj
aCBwcm92aXNpb25hbCB0YXJnZXQuIik7CiAgICAgICAgICAgICB9KTsKIAotICAgICAgICAgICAg
V0kudGFyZ2V0TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLlRhcmdldE1hbmFnZXIuRXZlbnQu
VGFyZ2V0RGVzdHJveWVkLCAoZXZlbnQpID0+ewotICAgICAgICAgICAgICAgIGxldCB7dGFyZ2V0
SWR9ID0gZXZlbnQuZGF0YTsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnBhc3MoYFNo
b3VsZCByZWNlaXZlIHRhcmdldERlc3Ryb3llZCBldmVudC5gKTsKLSAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHRhcmdldElkLCBtYWluVGFyZ2V0SWQsICJEZXN0cm95
ZWQgdGFyZ2V0IHNob3VsZCBiZSBwcmV2aW91cyB0YXJnZXQuIik7CisgICAgICAgICAgICBXSS50
YXJnZXRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuVGFyZ2V0TWFuYWdlci5FdmVudC5UYXJn
ZXRSZW1vdmVkLCAoZXZlbnQpID0+eworICAgICAgICAgICAgICAgIGxldCB0YXJnZXQgPSBldmVu
dC5kYXRhLnRhcmdldDsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnBhc3MoYFNob3Vs
ZCByZWNlaXZlIFRhcmdldFJlbW92ZWQgZXZlbnQuYCk7CisgICAgICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5leHBlY3RFcXVhbCh0YXJnZXQuaWRlbnRpZmllciwgbWFpblRhcmdldElkLCAiRGVz
dHJveWVkIHRhcmdldCBzaG91bGQgYmUgcHJldmlvdXMgdGFyZ2V0LiIpOwogCiAgICAgICAgICAg
ICAgICAgLy8gV2FpdCBmb3IgcGFnZSByZWxvYWQgZXZlbnQgdG8gYXZvaWQgcmFjZSBiZXR3ZWVu
IHRlc3QgcmVzdWx0cyBmbHVzaGluZyBhbmQgdGhlIHRlc3QgY29tcGxldGlvbi4KICAgICAgICAg
ICAgICAgICByZWxvYWRQcm9taXNlLnRoZW4ocmVzb2x2ZSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>384741</attachid>
            <date>2019-12-03 13:15:00 -0800</date>
            <delta_ts>2019-12-03 14:24:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204170-20191203131500.patch</filename>
            <type>text/plain</type>
            <size>52524</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzMDQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
NDY2ZjVlYjI5MTEzYzMyODBmOGQ2NjMyMGQxMDQ0NTEwM2IwMjdmLi5kM2FkMzkxMGQ4MmExMGQy
MWY0YTdiN2UwODc2YjZlNjI5ZjMxZGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNSBAQAorMjAxOS0xMS0xMyAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBhbGxvdyBpbnNwZWN0b3IgdG8gcGF1c2Ug
cHJvdmlzaW9uYWwgcGFnZSBsb2FkIGFuZCByZXN0b3JlIGl0cyBzdGF0ZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0MTcwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgYW4gb3B0aW9uIHRvIFRh
cmdldCBkb21haW4gdG8gcGF1c2UgYWxsIG5ldyB0YXJnZXRzIG9uIHN0YXJ0IHdhaXRpbmcgZm9y
CisgICAgICAgIGV4cGxpY2l0ICdyZXN1bWUnIGNvbW1hbmQgZnJvbSB0aGUgaW5zcGVjdG9yIGZy
b250LWVuZC4gVGhpcyBhbGxvd3MgdG8gY29uZmlndXJlCisgICAgICAgIGluc3BlY3RvciBiYWNr
ZW5kIChpbmNsdWRpbmcgdXNlciBhZ2VudCBvdmVycmlkZXMsIGJyZWFrcG9pbnRzIGFuZCBpbnN0
cnVtZW50YXRpb24pCisgICAgICAgIGJlZm9yZSBuYXZpZ2F0aW9uIHN0YXJ0cy4KKworICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JUYXJnZXQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvclRhcmdldEFnZW50LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVj
dG9yVGFyZ2V0QWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAg
KEluc3BlY3Rvcjo6SW5zcGVjdG9yVGFyZ2V0QWdlbnQ6OnNldFBhdXNlT25TdGFydCk6CisgICAg
ICAgIChJbnNwZWN0b3I6Okluc3BlY3RvclRhcmdldEFnZW50OjpyZXN1bWUpOgorICAgICAgICAo
SW5zcGVjdG9yOjpidWlsZFRhcmdldEluZm9PYmplY3QpOgorICAgICAgICAoSW5zcGVjdG9yOjpJ
bnNwZWN0b3JUYXJnZXRBZ2VudDo6dGFyZ2V0Q3JlYXRlZCk6CisgICAgICAgICogaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JUYXJnZXRBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9wcm90
b2NvbC9UYXJnZXQuanNvbjoKKwogMjAxOS0xMi0wMiAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFw
cGxlLmNvbT4KIAogICAgICAgICBQcm9wZXJ0eVNsb3Qgc2hvdWxkIG5vdCBoYXZlIEN1c3RvbXMg
aGF2ZSBhIFByb3BlcnR5T2Zmc2V0IG9mIHplcm8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4
IDVlMWRhMzRhN2ZmNDY0OTQ1MzA0MzhjZTVjNzAzYmM2MWY3ZTdhNjQuLjA2OWIzMjc3M2ZhMmIx
NmM0YjczYTExM2Y1ZTA0MGM4ZjcyOTJkYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDYzIEBACisyMDE5LTExLTEzICBZdXJ5IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGFsbG93IGluc3BlY3RvciB0byBwYXVz
ZSBwcm92aXNpb25hbCBwYWdlIGxvYWQgYW5kIHJlc3RvcmUgaXRzIHN0YXRlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDQxNzAKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBbGwgbmV3IHRhcmdldHMgYXJl
IG5vdyBhdXRvbWF0aWNhbGx5IHBhdXNlZCBvbiBzdGFydC4gRm9yIHN1Y2ggcHJvdmlzaW9uYWwg
dGFyZ2V0cyB0YXJnZXQKKyAgICAgICAgbWFuYWdlciB3aWxsIHJ1biByZWd1bGFyIGluaXRpbGl6
YXRpb24gY29kZSAoZW5hYmxlIGFnZW50cyBldGMuKSBhbmQgdGhlbiByZXN1bWUgbG9hZGluZyBv
ZgorICAgICAgICB0aGUgdGFyZ2V0LiBSZXNwb25zZXMgYW5kIGV2ZW50cyBmcm9tIHRoZSB0YXJn
ZXQgYXJlIGRlZmZlcnJlZCB1bnRpbCB0aGUgdGFyZ2V0IGlzIGNvbW1pdHRlZAorICAgICAgICBh
bmQgYmVjb21lcyBjdXJyZW50IG1haW4gdGFyZ2V0LiBXaGVuIHRoZSB0YXJnZXQgbWFuYWdlciBy
ZWNlaXZlcyBldmVudCB0aGF0IHRoZSBwcm92aXNpb25hbAorICAgICAgICB0YXJnZXQgaGFzIGJl
ZW4gY29tbWl0dGVkIGFsbCBhY2N1bXVsYXRlZCBwcm90b2NvbCBtZXNzYWdlcyBhcmUgcmVwbGF5
ZWQgYW5kIGdvaW5nIGZvcndhcmQgYWxsCisgICAgICAgIG5ldyBtaXNzYWdlcyB3aWxsIGJlIGRp
c3BhdGNoZWQgYXMgdXN1YWwuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJz
L0NTU01hbmFnZXIuanM6CisgICAgICAgIChXSS5DU1NNYW5hZ2VyLnByb3RvdHlwZS5fcmVzb3Vy
Y2VDb250ZW50RGlkQ2hhbmdlLmFwcGx5U3R5bGVTaGVldENoYW5nZXMuc3R5bGVTaGVldEZvdW5k
KToKKyAgICAgICAgKFdJLkNTU01hbmFnZXIucHJvdG90eXBlLl9yZXNvdXJjZUNvbnRlbnREaWRD
aGFuZ2UuYXBwbHlTdHlsZVNoZWV0Q2hhbmdlcyk6CisgICAgICAgIChXSS5DU1NNYW5hZ2VyLnBy
b3RvdHlwZS5fcmVzb3VyY2VDb250ZW50RGlkQ2hhbmdlKToKKyAgICAgICAgKFdJLkNTU01hbmFn
ZXIucHJvdG90eXBlLl91cGRhdGVSZXNvdXJjZUNvbnRlbnQuZmV0Y2hlZFN0eWxlU2hlZXRDb250
ZW50KToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1RhcmdldE1hbmFnZXIu
anM6CisgICAgICAgIChXSS5UYXJnZXRNYW5hZ2VyKToKKyAgICAgICAgKFdJLlRhcmdldE1hbmFn
ZXIucHJvdG90eXBlLmNyZWF0ZU11bHRpcGxleGluZ0JhY2tlbmRUYXJnZXQpOgorICAgICAgICAo
V0kuVGFyZ2V0TWFuYWdlci5wcm90b3R5cGUudGFyZ2V0Q3JlYXRlZCk6CisgICAgICAgIChXSS5U
YXJnZXRNYW5hZ2VyLnByb3RvdHlwZS5kaWRDb21taXRQcm92aXNpb25hbFRhcmdldCk6CisgICAg
ICAgIChXSS5UYXJnZXRNYW5hZ2VyLnByb3RvdHlwZS5kaXNwYXRjaE1lc3NhZ2VGcm9tVGFyZ2V0
KToKKyAgICAgICAgKFdJLlRhcmdldE1hbmFnZXIucHJvdG90eXBlLl9jb25uZWN0VG9UYXJnZXQp
OgorICAgICAgICAoV0kuVGFyZ2V0TWFuYWdlci5wcm90b3R5cGUuX2Rlc3Ryb3lUYXJnZXQpOgor
ICAgICAgICAoV0kuVGFyZ2V0TWFuYWdlci5wcm90b3R5cGUuX2NyZWF0ZVRhcmdldCk6CisgICAg
ICAgIChXSS5UYXJnZXRNYW5hZ2VyLnByb3RvdHlwZS5fY2hlY2tBbmRIYW5kbGVQYWdlVGFyZ2V0
VHJhbnNpdGlvbik6CisgICAgICAgIChXSS5UYXJnZXRNYW5hZ2VyLnByb3RvdHlwZS5fY2hlY2tB
bmRIYW5kbGVQYWdlVGFyZ2V0VGVybWluYXRpb24pOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2Uv
TW9kZWxzL1NvdXJjZUNvZGUuanM6CisgICAgICAgIChXSS5Tb3VyY2VDb2RlLnByb3RvdHlwZS5n
ZXQgY3VycmVudFJldmlzaW9uKToKKyAgICAgICAgKFdJLlNvdXJjZUNvZGUucHJvdG90eXBlLmdl
dCBlZGl0YWJsZVJldmlzaW9uKToKKyAgICAgICAgKFdJLlNvdXJjZUNvZGUucHJvdG90eXBlLmdl
dCBjb250ZW50KToKKyAgICAgICAgKFdJLlNvdXJjZUNvZGUucHJvdG90eXBlLnJldmlzaW9uQ29u
dGVudERpZENoYW5nZSk6CisgICAgICAgICogVXNlckludGVyZmFjZS9Qcm90b2NvbC9Db25uZWN0
aW9uLmpzOgorICAgICAgICAoSW5zcGVjdG9yQmFja2VuZC5Db25uZWN0aW9uKToKKyAgICAgICAg
KEluc3BlY3RvckJhY2tlbmQuQ29ubmVjdGlvbi5wcm90b3R5cGUuYWRkUHJvdmlzaW9uYWxNZXNz
YWdlKToKKyAgICAgICAgKEluc3BlY3RvckJhY2tlbmQuQ29ubmVjdGlvbi5wcm90b3R5cGUuZGlz
cGF0Y2hQcm92aXNpb25hbE1lc3NhZ2VzKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Byb3Rv
Y29sL1BhZ2VUYXJnZXQuanM6CisgICAgICAgIChXSS5QYWdlVGFyZ2V0KToKKyAgICAgICAgKiBV
c2VySW50ZXJmYWNlL1Byb3RvY29sL1RhcmdldC5qczoKKyAgICAgICAgKFdJLlRhcmdldCk6Cisg
ICAgICAgIChXSS5UYXJnZXQucHJvdG90eXBlLmdldCBpc1Byb3Zpc2lvbmFsKToKKyAgICAgICAg
KFdJLlRhcmdldC5wcm90b3R5cGUuc2V0IGlzUHJvdmlzaW9uYWwpOgorICAgICAgICAqIFVzZXJJ
bnRlcmZhY2UvVmlld3MvRm9udFJlc291cmNlQ29udGVudFZpZXcuanM6CisgICAgICAgIChXSS5G
b250UmVzb3VyY2VDb250ZW50Vmlldy5wcm90b3R5cGUuZHJvcFpvbmVIYW5kbGVEcm9wKToKKyAg
ICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0ltYWdlUmVzb3VyY2VDb250ZW50Vmlldy5qczoK
KyAgICAgICAgKFdJLkltYWdlUmVzb3VyY2VDb250ZW50Vmlldy5wcm90b3R5cGUuZHJvcFpvbmVI
YW5kbGVEcm9wKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL05hdmlnYXRpb25TaWRl
YmFyUGFuZWwuanM6CisgICAgICAgIChXSS5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLnByb3RvdHlw
ZS5fY2hlY2tFbGVtZW50c0ZvclBlbmRpbmdWaWV3U3RhdGVDb29raWUudHJlZUVsZW1lbnRNYXRj
aGVzQ29va2llKToKKyAgICAgICAgKFdJLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwucHJvdG90eXBl
Ll9jaGVja0VsZW1lbnRzRm9yUGVuZGluZ1ZpZXdTdGF0ZUNvb2tpZSk6CisgICAgICAgICogVXNl
ckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZUNvbnRlbnRWaWV3LmpzOgorICAgICAgICAoV0kuUmVz
b3VyY2VDb250ZW50Vmlldy5wcm90b3R5cGUuX2NvbnRlbnRBdmFpbGFibGUpOgorICAgICAgICAo
V0kuUmVzb3VyY2VDb250ZW50Vmlldy5wcm90b3R5cGUuX2hhbmRsZUltcG9ydExvY2FsUmVzb3Vy
Y2VPdmVycmlkZSk6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9TY3JpcHRDb250ZW50
Vmlldy5qczoKKyAgICAgICAgKFdJLlNjcmlwdENvbnRlbnRWaWV3LnByb3RvdHlwZS5faGFuZGxl
VGV4dEVkaXRvckNvbnRlbnREaWRDaGFuZ2UpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmll
d3MvVGV4dFJlc291cmNlQ29udGVudFZpZXcuanM6CisgICAgICAgIChXSS5UZXh0UmVzb3VyY2VD
b250ZW50Vmlldy5wcm90b3R5cGUuX3RleHRFZGl0b3JDb250ZW50RGlkQ2hhbmdlKToKKwogMjAx
OS0xMi0wMiAgTmlraXRhIFZhc2lseWV2ICA8bnZhc2lseWV2QGFwcGxlLmNvbT4KIAogICAgICAg
ICBXZWIgSW5zcGVjdG9yOiBQcm92aWRlIFVJIHRvIGNvbnZlcnQgYmV0d2VlbiBzUkdCIGFuZCBw
MyBjb2xvciBzcGFjZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNzQ1MjYyYjY3NzU2NDI4NTM3ZjBmN2Q3YjQ0MmYy
ZjhjZTQ4MWRmNC4uMzViODA4ZWM3NzNhODI1OGRjYTNhYzhiYzRiYmZmNmQ5ZDA5ZWZhMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwzNSBAQAorMjAxOS0xMS0xMyAgWXVyeSBTZW1pa2hhdHNreSAgPHl1
cnlzQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBhbGxvdyBpbnNwZWN0
b3IgdG8gcGF1c2UgcHJvdmlzaW9uYWwgcGFnZSBsb2FkIGFuZCByZXN0b3JlIGl0cyBzdGF0ZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0MTcwCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUHJvdmlzaW9u
YWwgcGFnZSBsb2FkaW5nIGNhbiBiZSBkZWZmZXJlZCBpZiBpbnNwZWN0b3IgZnJvbnQtZW5kIGlz
IGNvbm5lY3RlZC4gVGhpcworICAgICAgICBhbGxvd3MgdG8gY29uZmlndXJlIGluc3BlY3RvciBi
YWNrZW5kIGluIHRoZSBwcm92aXNpb25hbCBwYWdlIGJlZm9yZSBsb2FkIHJlcXVlc3QKKyAgICAg
ICAgaXMgc2VudC4gSWYgaW5zcGVjdG9yIGZyb250LWVuZCBpcyBub3QgY29ubmVjdGVkIHByb3Zp
c2lvbmFsIGxvYWRpbmcgd2lsbCBjb25pdGludWUKKyAgICAgICAgZXhhY3RseSBhcyBiZWZvcmUu
CisKKyAgICAgICAgVGVzdHM6IGh0dHAvdGVzdHMvaW5zcGVjdG9yL3RhcmdldC9wYXVzZS1vbi1p
bmxpbmUtZGVidWdnZXItc3RhdGVtZW50Lmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMv
aW5zcGVjdG9yL3RhcmdldC9wcm92aXNpb25hbC1sb2FkLWNhbmNlbHMtcHJldmlvdXMtbG9hZC5o
dG1sCisKKyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yVGFyZ2V0UHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpJbnNwZWN0b3JUYXJnZXRQcm94eTo6ZGlzY29ubmVjdCk6CisgICAgICAg
IChXZWJLaXQ6Okluc3BlY3RvclRhcmdldFByb3h5OjpyZXN1bWVUYXJnZXQpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9JbnNwZWN0b3JUYXJnZXRQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Q
cm92aXNpb25hbFBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlByb3Zpc2lvbmFsUGFn
ZVByb3h5OjpQcm92aXNpb25hbFBhZ2VQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlByb3Zpc2lv
bmFsUGFnZVByb3h5OjpyZXN1bWVMb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6UHJvdmlzaW9u
YWxQYWdlUHJveHk6OnJ1bldoZW5Mb2FkaW5nUmVzdW1lZCk6CisgICAgICAgICogVUlQcm9jZXNz
L1Byb3Zpc2lvbmFsUGFnZVByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OlByb3Zpc2lvbmFsUGFn
ZVByb3h5OjpzaG91bGRQYXVzZUxvYWRpbmcgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VJ
bnNwZWN0b3JDb250cm9sbGVyOjpkaWRDcmVhdGVQcm92aXNpb25hbFBhZ2UpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlci5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNv
bnRpbnVlTmF2aWdhdGlvbkluTmV3UHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6c3BlZWNoU3ludGhlc2lzUmVzdW1lKToKKwogMjAxOS0xMi0wMyAgQ2hyaXMgRHVtZXog
IDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFBhZ2VDb25maWd1cmF0aW9uOjphbHRlcm5h
dGl2ZVRleHRDbGllbnQgc2hvdWxkIHVzZSBhIHNtYXJ0IHBvaW50ZXIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGFyZ2V0LmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRhcmdldC5oCmluZGV4IGE5ZjA0Yjhh
MGM5YWZhZWVhNGZlOGMwYTRkMDdkODIzMGE5YzM1NjAuLmZjZjNmMjg5MjIwYTY3YjQzMzYwMTA2
NWE2OTRmMjIwMzAzNTIyMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yVGFyZ2V0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JUYXJnZXQuaApAQCAtNDcsMTEgKzQ3LDIzIEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIEluc3BlY3RvclRhcmdldFR5cGUgdHlwZSgpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1
YWwgYm9vbCBpc1Byb3Zpc2lvbmFsKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29s
IGlzUGF1c2VkKCkgY29uc3QgeyByZXR1cm4gbV9pc1BhdXNlZDsgfQorICAgIHZvaWQgc2V0UGF1
c2VkKGJvb2wgcGF1c2VkKQorICAgIHsKKyAgICAgICAgbV9pc1BhdXNlZCA9IHBhdXNlZDsKKyAg
ICAgICAgaWYgKCFtX2lzUGF1c2VkKQorICAgICAgICAgICAgcmVzdW1lVGFyZ2V0KCk7CisgICAg
fQogCiAgICAgLy8gQ29ubmVjdGlvbiBtYW5hZ2VtZW50LgogICAgIHZpcnR1YWwgdm9pZCBjb25u
ZWN0KEZyb250ZW5kQ2hhbm5lbDo6Q29ubmVjdGlvblR5cGUpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgZGlzY29ubmVjdCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2VuZE1lc3NhZ2VUb1Rhcmdl
dEJhY2tlbmQoY29uc3QgU3RyaW5nJikgPSAwOworCitwcml2YXRlOgorICAgIHZpcnR1YWwgdm9p
ZCByZXN1bWVUYXJnZXQoKSB7IH0KKworICAgIGJvb2wgbV9pc1BhdXNlZCB7IGZhbHNlIH07CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRhcmdldEFnZW50LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRhcmdldEFnZW50LmNw
cAppbmRleCAxMTc3MDkwZmMxODYyM2VmNTAxYzlhZDRjMzM4OWJjMmRhOTEwNzFlLi5hZThhNGY3
OTU5ZGM1MmVmNWEwZjNiYTZjZDVlMzJhMWRkMGMzMzg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUYXJnZXRBZ2VudC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGFyZ2V0
QWdlbnQuY3BwCkBAIC01Miw2ICs1MiwyOCBAQCB2b2lkIEluc3BlY3RvclRhcmdldEFnZW50Ojp3
aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChEaXNjb25uZWN0UmVhc29uKQogICAgIGRpc2Nv
bm5lY3RGcm9tVGFyZ2V0cygpOwogCiAgICAgbV9pc0Nvbm5lY3RlZCA9IGZhbHNlOworICAgIG1f
c2hvdWxkUGF1c2VPblN0YXJ0ID0gZmFsc2U7Cit9CisKK3ZvaWQgSW5zcGVjdG9yVGFyZ2V0QWdl
bnQ6OnNldFBhdXNlT25TdGFydChFcnJvclN0cmluZyYsIGJvb2wgcGF1c2VPblN0YXJ0KQorewor
ICAgIG1fc2hvdWxkUGF1c2VPblN0YXJ0ID0gcGF1c2VPblN0YXJ0OworfQorCit2b2lkIEluc3Bl
Y3RvclRhcmdldEFnZW50OjpyZXN1bWUoRXJyb3JTdHJpbmcmIGVycm9yLCBjb25zdCBTdHJpbmcm
IHRhcmdldElkKQoreworICAgIGF1dG8qIHRhcmdldCA9IG1fdGFyZ2V0cy5nZXQodGFyZ2V0SWQp
OworICAgIGlmICghdGFyZ2V0KSB7CisgICAgICAgIGVycm9yID0gIk1pc3NpbmcgdGFyZ2V0IGZv
ciBnaXZlbiB0YXJnZXRJZCJfczsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICgh
dGFyZ2V0LT5pc1BhdXNlZCgpKSB7CisgICAgICAgIGVycm9yID0gIlRhcmdldCBmb3IgZ2l2ZW4g
dGFyZ2V0SWQgaXMgbm90IHBhdXNlZCJfczsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IHRhcmdldC0+c2V0UGF1c2VkKGZhbHNlKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JUYXJnZXRBZ2Vu
dDo6c2VuZE1lc3NhZ2VUb1RhcmdldChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0
cmluZyYgdGFyZ2V0SWQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKQEAgLTk1LDYgKzExNyw4IEBA
IHN0YXRpYyBSZWY8UHJvdG9jb2w6OlRhcmdldDo6VGFyZ2V0SW5mbz4gYnVpbGRUYXJnZXRJbmZv
T2JqZWN0KGNvbnN0IEluc3BlY3RvclRhCiAgICAgICAgIC5yZWxlYXNlKCk7CiAgICAgaWYgKHRh
cmdldC5pc1Byb3Zpc2lvbmFsKCkpCiAgICAgICAgIHJlc3VsdC0+c2V0SXNQcm92aXNpb25hbCh0
cnVlKTsKKyAgICBpZiAodGFyZ2V0LmlzUGF1c2VkKCkpCisgICAgICAgIHJlc3VsdC0+c2V0SXNQ
YXVzZWQodHJ1ZSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMTA2LDYgKzEzMCw3IEBA
IHZvaWQgSW5zcGVjdG9yVGFyZ2V0QWdlbnQ6OnRhcmdldENyZWF0ZWQoSW5zcGVjdG9yVGFyZ2V0
JiB0YXJnZXQpCiAgICAgaWYgKCFtX2lzQ29ubmVjdGVkKQogICAgICAgICByZXR1cm47CiAKKyAg
ICB0YXJnZXQuc2V0UGF1c2VkKG1fc2hvdWxkUGF1c2VPblN0YXJ0KTsKICAgICB0YXJnZXQuY29u
bmVjdChjb25uZWN0aW9uVHlwZSgpKTsKIAogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT50YXJn
ZXRDcmVhdGVkKGJ1aWxkVGFyZ2V0SW5mb09iamVjdCh0YXJnZXQpKTsKQEAgLTExOCw4ICsxNDMs
NiBAQCB2b2lkIEluc3BlY3RvclRhcmdldEFnZW50Ojp0YXJnZXREZXN0cm95ZWQoSW5zcGVjdG9y
VGFyZ2V0JiB0YXJnZXQpCiAgICAgaWYgKCFtX2lzQ29ubmVjdGVkKQogICAgICAgICByZXR1cm47
CiAKLSAgICB0YXJnZXQuZGlzY29ubmVjdCgpOwotCiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXIt
PnRhcmdldERlc3Ryb3llZCh0YXJnZXQuaWRlbnRpZmllcigpKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGFyZ2V0QWdl
bnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRh
cmdldEFnZW50LmgKaW5kZXggMzhjYjMxODk4NmIzMWM0ZGVkMTliYTliZWFlNzg1NWQyYjU0YzIz
YS4uMWViN2FiYjJmYTIxZDdhOGVjMDgzMzE2MGY1M2U1YzUyM2VjNDMxNyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGFyZ2V0QWdl
bnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JUYXJnZXRBZ2VudC5oCkBAIC00OSw2ICs0OSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHdpbGxE
ZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKERpc2Nvbm5lY3RSZWFzb24pIGZpbmFsOwogCiAgICAg
Ly8gVGFyZ2V0QmFja2VuZERpc3BhdGNoZXJIYW5kbGVyCisgICAgdm9pZCBzZXRQYXVzZU9uU3Rh
cnQoRXJyb3JTdHJpbmcmLCBib29sIHBhdXNlT25TdGFydCkgb3ZlcnJpZGU7CisgICAgdm9pZCBy
ZXN1bWUoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHRhcmdldElkKSBvdmVycmlkZTsKICAg
ICB2b2lkIHNlbmRNZXNzYWdlVG9UYXJnZXQoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHRh
cmdldElkLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpIGZpbmFsOwogCiAgICAgLy8gVGFyZ2V0IGxp
ZmVjeWNsZS4KQEAgLTcwLDYgKzcyLDcgQEAgcHJpdmF0ZToKICAgICBSZWY8VGFyZ2V0QmFja2Vu
ZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CiAgICAgSGFzaE1hcDxTdHJpbmcsIElu
c3BlY3RvclRhcmdldCo+IG1fdGFyZ2V0czsKICAgICBib29sIG1faXNDb25uZWN0ZWQgeyBmYWxz
ZSB9OworICAgIGJvb2wgbV9zaG91bGRQYXVzZU9uU3RhcnQgeyBmYWxzZSB9OwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgSW5zcGVjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3Byb3RvY29sL1RhcmdldC5qc29uIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9wcm90b2NvbC9UYXJnZXQuanNvbgppbmRleCAyNDBjZDQyZTY3ZTMyNTBlNDM0YzBi
ZjZmOWQxNjE2ODUwNWE4YzIyLi41MjkyMGNkZWQyNGE5YzZiMGVmNmZiNGU1MTg2NjQ5NTVkYjRm
OWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29s
L1RhcmdldC5qc29uCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9j
b2wvVGFyZ2V0Lmpzb24KQEAgLTEwLDExICsxMCwyNiBAQAogICAgICAgICAgICAgInByb3BlcnRp
ZXMiOiBbCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ0YXJnZXRJZCIsICJ0eXBlIjogInN0
cmluZyIsICJkZXNjcmlwdGlvbiI6ICJVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHRhcmdldC4i
IH0sCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ0eXBlIiwgInR5cGUiOiAic3RyaW5nIiwg
ImVudW0iOiBbInBhZ2UiLCAic2VydmljZS13b3JrZXIiLCAid29ya2VyIl0gfSwKLSAgICAgICAg
ICAgICAgICB7ICJuYW1lIjogImlzUHJvdmlzaW9uYWwiLCAidHlwZSI6ICJib29sZWFuIiwgIm9w
dGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIlRydWUgdmFsdWUgaW5kaWNhdGVzIHRoYXQg
dGhpcyBpcyBhIHByb3Zpc2lvbmFsIHBhZ2UgdGFyZ2V0IGkuZS4gU3VjaCB0YXJnZXQgbWF5IGJl
IGNyZWF0ZWQgd2hlbiBjdXJyZW50IHBhZ2Ugc3RhcnRzIGNyb3NzLW9yaWdpbiBuYXZpZ2F0aW9u
LiBFdmVudHVhbGx5IGVhY2ggcHJvdmlzaW9uYWwgdGFyZ2V0IGlzIGVpdGhlciBjb21taXR0ZWQg
YW5kIHN3YXBzIHdpdGggdGhlIGN1cnJlbnQgdGFyZ2V0IG9yIGdldHMgZGVzdHJveWVkLCBlLmcu
IGluIGNhc2Ugb2YgbG9hZCByZXF1ZXN0IGZhaWx1cmUuIiB9CisgICAgICAgICAgICAgICAgeyAi
bmFtZSI6ICJpc1Byb3Zpc2lvbmFsIiwgInR5cGUiOiAiYm9vbGVhbiIsICJvcHRpb25hbCI6IHRy
dWUsICJkZXNjcmlwdGlvbiI6ICJXaGV0aGVyIHRoaXMgaXMgYSBwcm92aXNpb25hbCBwYWdlIHRh
cmdldC4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJpc1BhdXNlZCIsICJ0eXBlIjog
ImJvb2xlYW4iLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiV2hldGhlciB0aGUg
dGFyZ2V0IGlzIHBhdXNlZCBvbiBzdGFydCBhbmQgaGFzIHRvIGJlIGV4cGxpY2l0ZWx5IHJlc3Vt
ZWQgYnkgaW5zcGVjdG9yLiIgfQogICAgICAgICAgICAgXQogICAgICAgICB9CiAgICAgXSwKICAg
ICAiY29tbWFuZHMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogInNldFBhdXNl
T25TdGFydCIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiSWYgc2V0IHRvIHRydWUsIG5l
dyB0YXJnZXRzIHdpbGwgYmUgcGF1c2VkIG9uIHN0YXJ0IHdhaXRpbmcgZm9yIHJlc3VtZSBjb21t
YW5kLiBPdGhlciBjb21tYW5kcyBjYW4gYmUgZGlzcGF0Y2hlZCBvbiB0aGUgdGFyZ2V0IGJlZm9y
ZSBpdCBpcyByZXN1bWVkLiIsCisgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAg
ICAgICAgICB7ICJuYW1lIjogInBhdXNlT25TdGFydCIsICJ0eXBlIjogImJvb2xlYW4iLCAiZGVz
Y3JpcHRpb24iOiAiSWYgc2V0IHRvIHRydWUsIG5ldyB0YXJnZXRzIHdpbGwgYmUgcGF1c2VkIG9u
IHN0YXJ0IHdhaXRpbmcgZm9yIHJlc3VtZSBjb21tYW5kLiIgfQorICAgICAgICAgICAgXQorICAg
ICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJyZXN1bWUiLAorICAgICAg
ICAgICAgImRlc2NyaXB0aW9uIjogIldpbGwgcmVzdW1lIHRhcmdldCBpZiBpdCB3YXMgcGF1c2Vk
IG9uIHN0YXJ0LiIsCisgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogInRhcmdldElkIiwgInR5cGUiOiAic3RyaW5nIiB9CisgICAgICAgICAgICBd
CisgICAgICAgIH0sCiAgICAgICAgIHsKICAgICAgICAgICAgICJuYW1lIjogInNlbmRNZXNzYWdl
VG9UYXJnZXQiLAogICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlNlbmQgYW4gSW5zcGVjdG9y
IFByb3RvY29sIG1lc3NhZ2UgdG8gYmUgZGlzcGF0Y2hlZCB0byBhIFRhcmdldCdzIGFnZW50cy4i
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJv
bGxlcnMvVGFyZ2V0TWFuYWdlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL0NvbnRyb2xsZXJzL1RhcmdldE1hbmFnZXIuanMKaW5kZXggMTQ5NTMxZDg1ODczOTIyYmMw
Y2I2ZTkxZDI2YjczYzFhMjE2Zjg1Mi4uNmM3NjZiM2Q0ZTZiNzkyMzFiOTFlZWNhYTFjODUzYmEx
Y2RiYTFjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Q29udHJvbGxlcnMvVGFyZ2V0TWFuYWdlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Db250cm9sbGVycy9UYXJnZXRNYW5hZ2VyLmpzCkBAIC0zMyw5ICszMyw2
IEBAIFdJLlRhcmdldE1hbmFnZXIgPSBjbGFzcyBUYXJnZXRNYW5hZ2VyIGV4dGVuZHMgV0kuT2Jq
ZWN0CiAgICAgICAgIHRoaXMuX2NhY2hlZFRhcmdldHNMaXN0ID0gbnVsbDsKICAgICAgICAgdGhp
cy5fc2VlblBhZ2VUYXJnZXQgPSBmYWxzZTsKICAgICAgICAgdGhpcy5fdHJhbnNpdGlvblRpbWVv
dXRJZGVudGlmaWVyID0gdW5kZWZpbmVkOwotCi0gICAgICAgIHRoaXMuX3Byb3Zpc2lvbmFsVGFy
Z2V0SW5mb3MgPSBuZXcgTWFwOwotICAgICAgICB0aGlzLl9zd2FwcGVkVGFyZ2V0SWRzID0gbmV3
IFNldDsKICAgICB9CiAKICAgICAvLyBQdWJsaWMKQEAgLTEyMCw5MSArMTE3LDY2IEBAIFdJLlRh
cmdldE1hbmFnZXIgPSBjbGFzcyBUYXJnZXRNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAKICAg
ICB0YXJnZXRDcmVhdGVkKHBhcmVudFRhcmdldCwgdGFyZ2V0SW5mbykKICAgICB7Ci0gICAgICAg
IHRoaXMuX2Nvbm5lY3RUb1RhcmdldChwYXJlbnRUYXJnZXQsIHRhcmdldEluZm8pOwotCi0gICAg
ICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLlRhcmdldE1hbmFnZXIuRXZlbnQu
VGFyZ2V0Q3JlYXRlZCwge3RhcmdldEluZm99KTsKKyAgICAgICAgbGV0IGNvbm5lY3Rpb24gPSBu
ZXcgSW5zcGVjdG9yQmFja2VuZC5UYXJnZXRDb25uZWN0aW9uKHBhcmVudFRhcmdldCwgdGFyZ2V0
SW5mby50YXJnZXRJZCk7CisgICAgICAgIGxldCBzdWJUYXJnZXQgPSB0aGlzLl9jcmVhdGVUYXJn
ZXQocGFyZW50VGFyZ2V0LCB0YXJnZXRJbmZvLCBjb25uZWN0aW9uKTsKKyAgICAgICAgdGhpcy5f
Y2hlY2tBbmRIYW5kbGVQYWdlVGFyZ2V0VHJhbnNpdGlvbihzdWJUYXJnZXQpOworICAgICAgICBz
dWJUYXJnZXQuaW5pdGlhbGl6ZSgpOworICAgICAgICB0aGlzLmFkZFRhcmdldChzdWJUYXJnZXQp
OwogICAgIH0KIAogICAgIGRpZENvbW1pdFByb3Zpc2lvbmFsVGFyZ2V0KHBhcmVudFRhcmdldCwg
cHJldmlvdXNUYXJnZXRJZCwgbmV3VGFyZ2V0SWQpCiAgICAgewotICAgICAgICB0aGlzLl9kZXN0
cm95VGFyZ2V0KHByZXZpb3VzVGFyZ2V0SWQpOwotICAgICAgICBsZXQgdGFyZ2V0SW5mbyA9IHRo
aXMuX3Byb3Zpc2lvbmFsVGFyZ2V0SW5mb3MuZ2V0KG5ld1RhcmdldElkKTsKLSAgICAgICAgY29u
c29sZS5hc3NlcnQodGFyZ2V0SW5mbyk7Ci0gICAgICAgIHRhcmdldEluZm8uaXNQcm92aXNpb25h
bCA9IGZhbHNlOwotICAgICAgICB0aGlzLl9wcm92aXNpb25hbFRhcmdldEluZm9zLmRlbGV0ZShu
ZXdUYXJnZXRJZCk7Ci0gICAgICAgIHRoaXMuX2Nvbm5lY3RUb1RhcmdldChwYXJlbnRUYXJnZXQs
IHRhcmdldEluZm8pOwotICAgICAgICBjb25zb2xlLmFzc2VydCghdGhpcy5fc3dhcHBlZFRhcmdl
dElkcy5oYXMocHJldmlvdXNUYXJnZXRJZCkpOwotICAgICAgICB0aGlzLl9zd2FwcGVkVGFyZ2V0
SWRzLmFkZChwcmV2aW91c1RhcmdldElkKTsKLQotICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRU
b0xpc3RlbmVycyhXSS5UYXJnZXRNYW5hZ2VyLkV2ZW50LkRpZENvbW1pdFByb3Zpc2lvbmFsVGFy
Z2V0LCB7cHJldmlvdXNUYXJnZXRJZCwgdGFyZ2V0SW5mb30pOworICAgICAgICB0aGlzLnRhcmdl
dERlc3Ryb3llZChwcmV2aW91c1RhcmdldElkKTsKKyAgICAgICAgbGV0IHRhcmdldCA9IHRoaXMu
X3RhcmdldHMuZ2V0KG5ld1RhcmdldElkKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodGFyZ2V0
KTsKKyAgICAgICAgaWYgKCF0YXJnZXQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
dGFyZ2V0LmRpZENvbW1pdFByb3Zpc2lvbmFsVGFyZ2V0KCk7CisgICAgICAgIHRoaXMuX2NoZWNr
QW5kSGFuZGxlUGFnZVRhcmdldFRyYW5zaXRpb24odGFyZ2V0KTsKKyAgICAgICAgdGFyZ2V0LmNv
bm5lY3Rpb24uZGlzcGF0Y2hQcm92aXNpb25hbE1lc3NhZ2VzKCk7CisKKyAgICAgICAgdGhpcy5k
aXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuVGFyZ2V0TWFuYWdlci5FdmVudC5EaWRDb21taXRQ
cm92aXNpb25hbFRhcmdldCwge3ByZXZpb3VzVGFyZ2V0SWQsIHRhcmdldH0pOwogICAgIH0KIAog
ICAgIHRhcmdldERlc3Ryb3llZCh0YXJnZXRJZCkKICAgICB7Ci0gICAgICAgIHRoaXMuX2Rlc3Ry
b3lUYXJnZXQodGFyZ2V0SWQpOworICAgICAgICBsZXQgdGFyZ2V0ID0gdGhpcy5fdGFyZ2V0cy5n
ZXQodGFyZ2V0SWQpOworICAgICAgICBpZiAoIXRhcmdldCkKKyAgICAgICAgICAgIHJldHVybjsK
IAotICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5UYXJnZXRNYW5hZ2Vy
LkV2ZW50LlRhcmdldERlc3Ryb3llZCwge3RhcmdldElkfSk7CisgICAgICAgIHRoaXMuX2NoZWNr
QW5kSGFuZGxlUGFnZVRhcmdldFRlcm1pbmF0aW9uKHRhcmdldCk7CisgICAgICAgIHRoaXMucmVt
b3ZlVGFyZ2V0KHRhcmdldCk7CiAgICAgfQogCiAgICAgZGlzcGF0Y2hNZXNzYWdlRnJvbVRhcmdl
dCh0YXJnZXRJZCwgbWVzc2FnZSkKICAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9wcm92aXNpb25h
bFRhcmdldEluZm9zLmhhcyh0YXJnZXRJZCkpCi0gICAgICAgICAgICByZXR1cm47Ci0KICAgICAg
ICAgbGV0IHRhcmdldCA9IHRoaXMuX3RhcmdldHMuZ2V0KHRhcmdldElkKTsKICAgICAgICAgY29u
c29sZS5hc3NlcnQodGFyZ2V0KTsKICAgICAgICAgaWYgKCF0YXJnZXQpCiAgICAgICAgICAgICBy
ZXR1cm47CiAKLSAgICAgICAgdGFyZ2V0LmNvbm5lY3Rpb24uZGlzcGF0Y2gobWVzc2FnZSk7Cisg
ICAgICAgIGlmICh0YXJnZXQuaXNQcm92aXNpb25hbCkKKyAgICAgICAgICAgIHRhcmdldC5jb25u
ZWN0aW9uLmFkZFByb3Zpc2lvbmFsTWVzc2FnZShtZXNzYWdlKTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgdGFyZ2V0LmNvbm5lY3Rpb24uZGlzcGF0Y2gobWVzc2FnZSk7CiAgICAgfQogCiAg
ICAgLy8gUHJpdmF0ZQogCi0gICAgX2Nvbm5lY3RUb1RhcmdldChwYXJlbnRUYXJnZXQsIHRhcmdl
dEluZm8pCi0gICAgewotICAgICAgICBjb25zb2xlLmFzc2VydCghdGhpcy5fcHJvdmlzaW9uYWxU
YXJnZXRJbmZvcy5oYXModGFyZ2V0SW5mby50YXJnZXRJZCkpOwotCi0gICAgICAgIC8vIENPTVBB
VElCSUxJVFkgKGlPUyAxMy4wKTogYFRhcmdldC5UYXJnZXRJbmZvLmlzUHJvdmlzaW9uYWxgIGRp
ZCBub3QgZXhpc3QgeWV0LgotICAgICAgICBpZiAodGFyZ2V0SW5mby5pc1Byb3Zpc2lvbmFsKSB7
Ci0gICAgICAgICAgICB0aGlzLl9wcm92aXNpb25hbFRhcmdldEluZm9zLnNldCh0YXJnZXRJbmZv
LnRhcmdldElkLCB0YXJnZXRJbmZvKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQot
Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KHBhcmVudFRhcmdldC5oYXNDb21tYW5kKCJUYXJnZXQu
c2VuZE1lc3NhZ2VUb1RhcmdldCIpKTsKLSAgICAgICAgbGV0IGNvbm5lY3Rpb24gPSBuZXcgSW5z
cGVjdG9yQmFja2VuZC5UYXJnZXRDb25uZWN0aW9uOwotICAgICAgICBsZXQgc3ViVGFyZ2V0ID0g
dGhpcy5fY3JlYXRlVGFyZ2V0KHBhcmVudFRhcmdldCwgdGFyZ2V0SW5mbywgY29ubmVjdGlvbik7
Ci0gICAgICAgIHRoaXMuX2NoZWNrQW5kSGFuZGxlUGFnZVRhcmdldFRyYW5zaXRpb24oc3ViVGFy
Z2V0KTsKLSAgICAgICAgc3ViVGFyZ2V0LmluaXRpYWxpemUoKTsKLQotICAgICAgICB0aGlzLmFk
ZFRhcmdldChzdWJUYXJnZXQpOwotICAgIH0KLQotICAgIF9kZXN0cm95VGFyZ2V0KHRhcmdldElk
KQotICAgIHsKLSAgICAgICAgaWYgKHRoaXMuX3Byb3Zpc2lvbmFsVGFyZ2V0SW5mb3MuZGVsZXRl
KHRhcmdldElkKSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBpZiAodGhpcy5fc3dh
cHBlZFRhcmdldElkcy5kZWxldGUodGFyZ2V0SWQpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0g
ICAgICAgIGxldCB0YXJnZXQgPSB0aGlzLl90YXJnZXRzLmdldCh0YXJnZXRJZCk7Ci0gICAgICAg
IHRoaXMuX2NoZWNrQW5kSGFuZGxlUGFnZVRhcmdldFRlcm1pbmF0aW9uKHRhcmdldCk7Ci0gICAg
ICAgIHRoaXMucmVtb3ZlVGFyZ2V0KHRhcmdldCk7Ci0gICAgfQotCiAgICAgX2NyZWF0ZVRhcmdl
dChwYXJlbnRUYXJnZXQsIHRhcmdldEluZm8sIGNvbm5lY3Rpb24pCiAgICAgewotICAgICAgICBs
ZXQge3RhcmdldElkLCB0eXBlfSA9IHRhcmdldEluZm87CisgICAgICAgIC8vIENPTVBBVElCSUxJ
VFkgKGlPUyAxMy4wKTogYFRhcmdldC5UYXJnZXRJbmZvLmlzUHJvdmlzaW9uYWxgIGFuZCBgVGFy
Z2V0LlRhcmdldEluZm8uaXNQYXVzZWRgIGRpZCBub3QgZXhpc3QgeWV0LgorICAgICAgICBsZXQg
e3RhcmdldElkLCB0eXBlLCBpc1Byb3Zpc2lvbmFsLCBpc1BhdXNlZH0gPSB0YXJnZXRJbmZvOwog
CiAgICAgICAgIHN3aXRjaCAodHlwZSkgewogICAgICAgICBjYXNlIEluc3BlY3RvckJhY2tlbmQu
RW51bS5UYXJnZXQuVGFyZ2V0SW5mb1R5cGUuUGFnZToKLSAgICAgICAgICAgIHJldHVybiBuZXcg
V0kuUGFnZVRhcmdldChwYXJlbnRUYXJnZXQsIHRhcmdldElkLCBXSS5VSVN0cmluZygiUGFnZSIp
LCBjb25uZWN0aW9uKTsKKyAgICAgICAgICAgIHJldHVybiBuZXcgV0kuUGFnZVRhcmdldChwYXJl
bnRUYXJnZXQsIHRhcmdldElkLCBXSS5VSVN0cmluZygiUGFnZSIpLCBjb25uZWN0aW9uLCB7aXNQ
cm92aXNpb25hbCwgaXNQYXVzZWR9KTsKICAgICAgICAgY2FzZSBJbnNwZWN0b3JCYWNrZW5kLkVu
dW0uVGFyZ2V0LlRhcmdldEluZm9UeXBlLldvcmtlcjoKLSAgICAgICAgICAgIHJldHVybiBuZXcg
V0kuV29ya2VyVGFyZ2V0KHBhcmVudFRhcmdldCwgdGFyZ2V0SWQsIFdJLlVJU3RyaW5nKCJXb3Jr
ZXIiKSwgY29ubmVjdGlvbik7CisgICAgICAgICAgICByZXR1cm4gbmV3IFdJLldvcmtlclRhcmdl
dChwYXJlbnRUYXJnZXQsIHRhcmdldElkLCBXSS5VSVN0cmluZygiV29ya2VyIiksIGNvbm5lY3Rp
b24sIHtpc1BhdXNlZH0pOwogICAgICAgICBjYXNlICJzZXJ2aWNld29ya2VyIjogLy8gQ09NUEFU
SUJJTElUWSAoaU9TIDEzKTogInNlcnZpY2V3b3JrZXIiIHdhcyByZW5hbWVkIHRvICJzZXJ2aWNl
LXdvcmtlciIuCiAgICAgICAgIGNhc2UgSW5zcGVjdG9yQmFja2VuZC5FbnVtLlRhcmdldC5UYXJn
ZXRJbmZvVHlwZS5TZXJ2aWNlV29ya2VyOgotICAgICAgICAgICAgcmV0dXJuIG5ldyBXSS5Xb3Jr
ZXJUYXJnZXQocGFyZW50VGFyZ2V0LCB0YXJnZXRJZCwgV0kuVUlTdHJpbmcoIlNlcnZpY2VXb3Jr
ZXIiKSwgY29ubmVjdGlvbik7CisgICAgICAgICAgICByZXR1cm4gbmV3IFdJLldvcmtlclRhcmdl
dChwYXJlbnRUYXJnZXQsIHRhcmdldElkLCBXSS5VSVN0cmluZygiU2VydmljZVdvcmtlciIpLCBj
b25uZWN0aW9uLCB7aXNQYXVzZWR9KTsKICAgICAgICAgfQogCiAgICAgICAgIHRocm93ICJVbmtu
b3duIFRhcmdldCB0eXBlOiAiICsgdHlwZTsKQEAgLTIxNSw2ICsxODcsOSBAQCBXSS5UYXJnZXRN
YW5hZ2VyID0gY2xhc3MgVGFyZ2V0TWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICBp
ZiAodGFyZ2V0LnR5cGUgIT09IFdJLlRhcmdldFR5cGUuUGFnZSkKICAgICAgICAgICAgIHJldHVy
bjsKIAorICAgICAgICBpZiAodGFyZ2V0LmlzUHJvdmlzaW9uYWwpCisgICAgICAgICAgICByZXR1
cm47CisKICAgICAgICAgLy8gRmlyc3QgcGFnZSB0YXJnZXQuCiAgICAgICAgIGlmICghV0kucGFn
ZVRhcmdldCAmJiAhdGhpcy5fc2VlblBhZ2VUYXJnZXQpIHsKICAgICAgICAgICAgIHRoaXMuX3Nl
ZW5QYWdlVGFyZ2V0ID0gdHJ1ZTsKQEAgLTIzMSw2ICsyMDYsOSBAQCBXSS5UYXJnZXRNYW5hZ2Vy
ID0gY2xhc3MgVGFyZ2V0TWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICBpZiAodGFy
Z2V0LnR5cGUgIT09IFdJLlRhcmdldFR5cGUuUGFnZSkKICAgICAgICAgICAgIHJldHVybjsKIAor
ICAgICAgICBpZiAodGFyZ2V0LmlzUHJvdmlzaW9uYWwpCisgICAgICAgICAgICByZXR1cm47CisK
ICAgICAgICAgY29uc29sZS5hc3NlcnQodGFyZ2V0ID09PSBXSS5wYWdlVGFyZ2V0KTsKICAgICAg
ICAgY29uc29sZS5hc3NlcnQodGhpcy5fc2VlblBhZ2VUYXJnZXQpOwogCkBAIC0zMTcsOCArMjk1
LDUgQEAgV0kuVGFyZ2V0TWFuYWdlciA9IGNsYXNzIFRhcmdldE1hbmFnZXIgZXh0ZW5kcyBXSS5P
YmplY3QKIFdJLlRhcmdldE1hbmFnZXIuRXZlbnQgPSB7CiAgICAgVGFyZ2V0QWRkZWQ6IFN5bWJv
bCgidGFyZ2V0LW1hbmFnZXItdGFyZ2V0LWFkZGVkIiksCiAgICAgVGFyZ2V0UmVtb3ZlZDogU3lt
Ym9sKCJ0YXJnZXQtbWFuYWdlci10YXJnZXQtcmVtb3ZlZCIpLAotCi0gICAgVGFyZ2V0Q3JlYXRl
ZDogInRhcmdldC1tYW5hZ2VyLXRhcmdldC1jcmVhdGVkIiwKICAgICBEaWRDb21taXRQcm92aXNp
b25hbFRhcmdldDogInRhcmdldC1tYW5hZ2VyLXByb3Zpc2lvbmFsLXRhcmdldC1jb21taXR0ZWQi
LAotICAgIFRhcmdldERlc3Ryb3llZDogInRhcmdldC1tYW5hZ2VyLXRhcmdldC1kZXRyb3llZCIs
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJv
dG9jb2wvQ29ubmVjdGlvbi5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1Byb3RvY29sL0Nvbm5lY3Rpb24uanMKaW5kZXggOWJlY2JkMDZhOWQ1YjI1OGY3YTUwNmRjYTIw
ZTk0NDMzM2M4YWJhNi4uNjk1ZThlNGZkNjdiMjNiMDU5ZTY3NjkwYTIzNzU3Y2NkM2E0N2QyMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wv
Q29ubmVjdGlvbi5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Q
cm90b2NvbC9Db25uZWN0aW9uLmpzCkBAIC0zOSw2ICszOSw3IEBAIEluc3BlY3RvckJhY2tlbmQu
Q29ubmVjdGlvbiA9IGNsYXNzIEluc3BlY3RvckJhY2tlbmRDb25uZWN0aW9uCiAgICAgICAgIHRo
aXMuX3BlbmRpbmdSZXNwb25zZXMgPSBuZXcgTWFwOwogICAgICAgICB0aGlzLl9kZWZlcnJlZENh
bGxiYWNrcyA9IFtdOwogICAgICAgICB0aGlzLl90YXJnZXQgPSBudWxsOworICAgICAgICB0aGlz
Ll9wcm92aXNpb25hbE1lc3NhZ2VzID0gW107CiAgICAgfQogCiAgICAgLy8gUHVibGljCkBAIC01
NCw2ICs1NSwyMCBAQCBJbnNwZWN0b3JCYWNrZW5kLkNvbm5lY3Rpb24gPSBjbGFzcyBJbnNwZWN0
b3JCYWNrZW5kQ29ubmVjdGlvbgogICAgICAgICB0aGlzLl90YXJnZXQgPSB0YXJnZXQ7CiAgICAg
fQogCisgICAgYWRkUHJvdmlzaW9uYWxNZXNzYWdlKG1lc3NhZ2UpCisgICAgeworICAgICAgICB0
aGlzLl9wcm92aXNpb25hbE1lc3NhZ2VzLnB1c2gobWVzc2FnZSk7CisgICAgfQorCisgICAgZGlz
cGF0Y2hQcm92aXNpb25hbE1lc3NhZ2VzKCkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0
KHRoaXMudGFyZ2V0KTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoIXRoaXMudGFyZ2V0LmlzUHJv
dmlzaW9uYWwpOworICAgICAgICBmb3IgKGxldCBtZXNzYWdlIG9mIHRoaXMuX3Byb3Zpc2lvbmFs
TWVzc2FnZXMpCisgICAgICAgICAgICB0aGlzLmRpc3BhdGNoKG1lc3NhZ2UpOworICAgICAgICB0
aGlzLl9wcm92aXNpb25hbE1lc3NhZ2VzID0gbnVsbDsKKyAgICB9CisKICAgICBkaXNwYXRjaCht
ZXNzYWdlKQogICAgIHsKICAgICAgICAgbGV0IG1lc3NhZ2VPYmplY3QgPSB0eXBlb2YgbWVzc2Fn
ZSA9PT0gInN0cmluZyIgPyBKU09OLnBhcnNlKG1lc3NhZ2UpIDogbWVzc2FnZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL011bHRpcGxl
eGluZ0JhY2tlbmRUYXJnZXQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Qcm90b2NvbC9NdWx0aXBsZXhpbmdCYWNrZW5kVGFyZ2V0LmpzCmluZGV4IGFhYjBjZTkxNTU1
NWIzNjBhNmQ0MGMzMzUyZWUwZGY2ODhhYmUzYzcuLjc5MzcwOWViZTVkOTg1MmUyMzQ4ZWE0OWQ1
Yjk3ZThkNDdhNjlmNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1Byb3RvY29sL011bHRpcGxleGluZ0JhY2tlbmRUYXJnZXQuanMKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvTXVsdGlwbGV4aW5nQmFja2Vu
ZFRhcmdldC5qcwpAQCAtNDMsOCArNDMsMTEgQEAgV0kuTXVsdGlwbGV4aW5nQmFja2VuZFRhcmdl
dCA9IGNsYXNzIE11bHRpcGxleGluZ0JhY2tlbmRUYXJnZXQgZXh0ZW5kcyBXSS5UYXJnZXQKIAog
ICAgIGluaXRpYWxpemUoKQogICAgIHsKLSAgICAgICAgLy8gSW50ZW50aW9uYWxseSBkbyBub3Ro
aW5nLCBpbmNsdWRpbmcgbm90IGNhbGxpbmcgc3VwZXIuCi0gICAgICAgIC8vIE5vIGFnZW50cyBv
dGhlciB0aGFuIHRoZSBUYXJnZXRBZ2VudCwgbm90aGluZyB0byBpbml0aWFsaXplLgorICAgICAg
ICAvLyBJbnRlbnRpb25hbGx5IG5vdCBjYWxsaW5nIHN1cGVyLiBObyBhZ2VudHMgb3RoZXIgdGhh
biB0aGUgVGFyZ2V0QWdlbnQuCisKKyAgICAgICAgLy8gQ09NUEFUSUJJTElUWSAoaU9TIDEzKTog
VGFyZ2V0LnNldFBhdXNlT25TdGFydCBkaWQgbm90IGV4aXN0IHlldC4KKyAgICAgICAgaWYgKHRo
aXMuaGFzQ29tbWFuZCgiVGFyZ2V0LnNldFBhdXNlT25TdGFydCIpKQorICAgICAgICAgICAgdGhp
cy5UYXJnZXRBZ2VudC5zZXRQYXVzZU9uU3RhcnQodHJ1ZSk7CiAgICAgfQogCiAgICAgLy8gUHJv
dGVjdGVkIChUYXJnZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Qcm90b2NvbC9QYWdlVGFyZ2V0LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvUHJvdG9jb2wvUGFnZVRhcmdldC5qcwppbmRleCBmMzM0YzA4MDg0YzA3MDY1
MmFhMGRlYzQyMTBhN2NhMWE1N2E4MzRhLi4wZWM4MWViMjQ4ZWFkNDIwZGUxYWFhODkwNjE5Y2Q5
NGZiNTQ4NjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Qcm90b2NvbC9QYWdlVGFyZ2V0LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1Byb3RvY29sL1BhZ2VUYXJnZXQuanMKQEAgLTI1LDkgKzI1LDkgQEAKIAogV0ku
UGFnZVRhcmdldCA9IGNsYXNzIFBhZ2VUYXJnZXQgZXh0ZW5kcyBXSS5UYXJnZXQKIHsKLSAgICBj
b25zdHJ1Y3RvcihwYXJlbnRUYXJnZXQsIHRhcmdldElkLCBuYW1lLCBjb25uZWN0aW9uKQorICAg
IGNvbnN0cnVjdG9yKHBhcmVudFRhcmdldCwgdGFyZ2V0SWQsIG5hbWUsIGNvbm5lY3Rpb24sIHN0
YXRlKQogICAgIHsKLSAgICAgICAgc3VwZXIocGFyZW50VGFyZ2V0LCB0YXJnZXRJZCwgbmFtZSwg
V0kuVGFyZ2V0VHlwZS5QYWdlLCBjb25uZWN0aW9uKTsKKyAgICAgICAgc3VwZXIocGFyZW50VGFy
Z2V0LCB0YXJnZXRJZCwgbmFtZSwgV0kuVGFyZ2V0VHlwZS5QYWdlLCBjb25uZWN0aW9uLCBzdGF0
ZSk7CiAKICAgICAgICAgY29uc3QgaXNQYWdlQ29udGV4dCA9IHRydWU7CiAgICAgICAgIHRoaXMu
X2V4ZWN1dGlvbkNvbnRleHQgPSBuZXcgV0kuRXhlY3V0aW9uQ29udGV4dCh0aGlzLCBXSS5SdW50
aW1lTWFuYWdlci5Ub3BMZXZlbENvbnRleHRFeGVjdXRpb25JZGVudGlmaWVyLCB0aGlzLmRpc3Bs
YXlOYW1lLCBpc1BhZ2VDb250ZXh0LCBudWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL1RhcmdldC5qcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL1RhcmdldC5qcwppbmRleCAwYTMwZGZmNGZh
ZWRhMjk5ZGQwNGZmZjA0M2JiNzU3NWZiMzYxODlhLi5iODBkNGQ0ODZkYmI1MzU4YTNjZGNiMWU1
OWZkNWNmNThkM2VkMjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Qcm90b2NvbC9UYXJnZXQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvUHJvdG9jb2wvVGFyZ2V0LmpzCkBAIC0yNSw3ICsyNSw3IEBACiAKIFdJLlRh
cmdldCA9IGNsYXNzIFRhcmdldCBleHRlbmRzIFdJLk9iamVjdAogewotICAgIGNvbnN0cnVjdG9y
KHBhcmVudFRhcmdldCwgaWRlbnRpZmllciwgbmFtZSwgdHlwZSwgY29ubmVjdGlvbikKKyAgICBj
b25zdHJ1Y3RvcihwYXJlbnRUYXJnZXQsIGlkZW50aWZpZXIsIG5hbWUsIHR5cGUsIGNvbm5lY3Rp
b24sIHtpc1BhdXNlZCwgaXNQcm92aXNpb25hbH0gPSB7fSkKICAgICB7CiAgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KHBhcmVudFRhcmdldCA9PT0gbnVsbCB8fCBwYXJlbnRUYXJnZXQgaW5zdGFuY2Vv
ZiBXSS5UYXJnZXQpOwogICAgICAgICBzdXBlcigpOwpAQCAtMzUsNiArMzUsOSBAQCBXSS5UYXJn
ZXQgPSBjbGFzcyBUYXJnZXQgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgdGhpcy5fbmFtZSA9
IG5hbWU7CiAgICAgICAgIHRoaXMuX3R5cGUgPSB0eXBlOwogICAgICAgICB0aGlzLl9jb25uZWN0
aW9uID0gY29ubmVjdGlvbjsKKyAgICAgICAgdGhpcy5faXNQYXVzZWQgPSBpc1BhdXNlZDsKKyAg
ICAgICAgY29uc29sZS5hc3NlcnQoIWlzUGF1c2VkIHx8IHBhcmVudFRhcmdldC5oYXNDb21tYW5k
KCJUYXJnZXQuc2V0UGF1c2VPblN0YXJ0IikpOworICAgICAgICB0aGlzLl9pc1Byb3Zpc2lvbmFs
ID0gaXNQcm92aXNpb25hbDsKICAgICAgICAgdGhpcy5fZXhlY3V0aW9uQ29udGV4dCA9IG51bGw7
CiAgICAgICAgIHRoaXMuX21haW5SZXNvdXJjZSA9IG51bGw7CiAgICAgICAgIHRoaXMuX3Jlc291
cmNlQ29sbGVjdGlvbiA9IG5ldyBXSS5SZXNvdXJjZUNvbGxlY3Rpb247CkBAIC05Niw2ICs5OSwy
MCBAQCBXSS5UYXJnZXQgPSBjbGFzcyBUYXJnZXQgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAg
ICAgIGlmICh0aGlzLmhhc0NvbW1hbmQoIkluc3BlY3Rvci5pbml0aWFsaXplZCIpKQogICAgICAg
ICAgICAgICAgIHRoaXMuSW5zcGVjdG9yQWdlbnQuaW5pdGlhbGl6ZWQoKTsKICAgICAgICAgfSk7
CisKKyAgICAgICAgaWYgKHRoaXMuX2lzUGF1c2VkKSB7CisgICAgICAgICAgICBjb25zb2xlLmFz
c2VydCh0aGlzLl9wYXJlbnRUYXJnZXQuaGFzQ29tbWFuZCgiVGFyZ2V0LnJlc3VtZSIpKTsKKyAg
ICAgICAgICAgIHRoaXMuX3BhcmVudFRhcmdldC5UYXJnZXRBZ2VudC5yZXN1bWUodGhpcy5faWRl
bnRpZmllciwgKGVycm9yKSA9PiB7CisgICAgICAgICAgICAgICAgaWYgKGVycm9yKSB7CisgICAg
ICAgICAgICAgICAgICAgIC8vIElnbm9yZSBlcnJvcnMgaWYgdGhlIHRhcmdldCB3YXMgZGVzdHJv
eWVkIGFmdGVyIHRoZSBjb21tYW5kIHdhcyBzZW50LgorICAgICAgICAgICAgICAgICAgICBpZiAo
IXRoaXMuaXNEZXN0cm95ZWQpCisgICAgICAgICAgICAgICAgICAgICAgICBXSS5yZXBvcnRJbnRl
cm5hbEVycm9yKGVycm9yKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgICAgIHRoaXMuX2lzUGF1c2VkID0gZmFsc2U7CisgICAg
ICAgICAgICB9KTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIGFjdGl2YXRlRXh0cmFEb21haW4o
ZG9tYWluTmFtZSkKQEAgLTE3Niw2ICsxOTMsMTAgQEAgV0kuVGFyZ2V0ID0gY2xhc3MgVGFyZ2V0
IGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgZ2V0IHJlc291cmNlQ29sbGVjdGlvbigpIHsgcmV0dXJu
IHRoaXMuX3Jlc291cmNlQ29sbGVjdGlvbjsgfQogICAgIGdldCBleHRyYVNjcmlwdENvbGxlY3Rp
b24oKSB7IHJldHVybiB0aGlzLl9leHRyYVNjcmlwdENvbGxlY3Rpb247IH0KIAorICAgIGdldCBp
c1Byb3Zpc2lvbmFsKCkgeyByZXR1cm4gdGhpcy5faXNQcm92aXNpb25hbDsgfQorCisgICAgZ2V0
IGlzUGF1c2VkKCkgeyByZXR1cm4gdGhpcy5faXNQYXVzZWQ7IH0KKwogICAgIGdldCBpc0Rlc3Ry
b3llZCgpIHsgcmV0dXJuIHRoaXMuX2lzRGVzdHJveWVkOyB9CiAKICAgICBnZXQgZGlzcGxheU5h
bWUoKSB7IHJldHVybiB0aGlzLl9uYW1lOyB9CkBAIC0yMTUsNiArMjM2LDEyIEBAIFdJLlRhcmdl
dCA9IGNsYXNzIFRhcmdldCBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICB0aGlzLmRpc3BhdGNo
RXZlbnRUb0xpc3RlbmVycyhXSS5UYXJnZXQuRXZlbnQuU2NyaXB0QWRkZWQsIHtzY3JpcHR9KTsK
ICAgICB9CiAKKyAgICBkaWRDb21taXRQcm92aXNpb25hbFRhcmdldCgpCisgICAgeworICAgICAg
ICBjb25zb2xlLmFzc2VydCh0aGlzLl9pc1Byb3Zpc2lvbmFsKTsKKyAgICAgICAgdGhpcy5faXNQ
cm92aXNpb25hbCA9IGZhbHNlOworICAgIH0KKwogICAgIGRlc3Ryb3koKQogICAgIHsKICAgICAg
ICAgdGhpcy5faXNEZXN0cm95ZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvV29ya2VyVGFyZ2V0LmpzIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvV29ya2VyVGFyZ2V0LmpzCmluZGV4
IDgzYzcwOTJhNTg3MjhmMmE3M2Q4YTlkNGNlNTJhMWExYWQ3YjI4NTkuLmY2NDFhM2I0ODc5ZGJj
ZmMxZjFkYzFhZWE5N2YwYzZmZTVlYmU1MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL1dvcmtlclRhcmdldC5qcworKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9Xb3JrZXJUYXJnZXQuanMKQEAg
LTI1LDkgKzI1LDkgQEAKIAogV0kuV29ya2VyVGFyZ2V0ID0gY2xhc3MgV29ya2VyVGFyZ2V0IGV4
dGVuZHMgV0kuVGFyZ2V0CiB7Ci0gICAgY29uc3RydWN0b3IocGFyZW50VGFyZ2V0LCB3b3JrZXJJ
ZCwgbmFtZSwgY29ubmVjdGlvbikKKyAgICBjb25zdHJ1Y3RvcihwYXJlbnRUYXJnZXQsIHdvcmtl
cklkLCBuYW1lLCBjb25uZWN0aW9uLCBzdGF0ZSkKICAgICB7Ci0gICAgICAgIHN1cGVyKHBhcmVu
dFRhcmdldCwgd29ya2VySWQsIG5hbWUsIFdJLlRhcmdldFR5cGUuV29ya2VyLCBjb25uZWN0aW9u
KTsKKyAgICAgICAgc3VwZXIocGFyZW50VGFyZ2V0LCB3b3JrZXJJZCwgbmFtZSwgV0kuVGFyZ2V0
VHlwZS5Xb3JrZXIsIGNvbm5lY3Rpb24sIHN0YXRlKTsKIAogICAgICAgICBjb25zdCBpc1BhZ2VD
b250ZXh0ID0gZmFsc2U7CiAgICAgICAgIHRoaXMuX2V4ZWN1dGlvbkNvbnRleHQgPSBuZXcgV0ku
RXhlY3V0aW9uQ29udGV4dCh0aGlzLCBXSS5SdW50aW1lTWFuYWdlci5Ub3BMZXZlbENvbnRleHRF
eGVjdXRpb25JZGVudGlmaWVyLCB0aGlzLmRpc3BsYXlOYW1lLCBpc1BhZ2VDb250ZXh0LCBudWxs
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L05hdmlnYXRpb25TaWRlYmFyUGFuZWwuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLmpzCmluZGV4IDIyZWQ4OTY1OGQ3
MDBmZjgzNTA1ZDRhNGRiMDQyYjg0NjQwOGNmZmMuLmNhOTM3Y2Y4ZmQwNjUwYTVmZWJmNTY1NTVh
MjMxZTM0NTU4NTQ5MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL05hdmlnYXRpb25TaWRlYmFyUGFuZWwuanMKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTmF2aWdhdGlvblNpZGViYXJQYW5lbC5qcwpA
QCAtNzA1LDcgKzcwNSw3IEBAIFdJLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwgPSBjbGFzcyBOYXZp
Z2F0aW9uU2lkZWJhclBhbmVsIGV4dGVuZHMgV0kuU2lkZWJhclBhbmVsCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgICAgICBpZiAobWF0Y2hUeXBlT25seSkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICByZXR1cm4gISF0eXBlSWRl
bnRpZmllcjsKIAogICAgICAgICAgICAgdmFyIGNhbmRpZGF0ZU9iamVjdENvb2tpZSA9IHt9Owog
ICAgICAgICAgICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0LnNhdmVJZGVudGl0eVRvQ29va2llKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yVGFyZ2V0UHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yVGFyZ2V0UHJveHkuY3BwCmlu
ZGV4IDFiMzdjMWVkNDM5NWExN2M1ODNiYTJkNzg2MjE5YzkwYzc0NDAxNmUuLmYxOGEwYWYwNDA4
ZTM3MmY0YWI2MTEyNzlkZDk2NDU3OTdiNGMwYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0luc3BlY3RvclRhcmdldFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9JbnNwZWN0b3JUYXJnZXRQcm94eS5jcHAKQEAgLTY5LDYgKzY5LDkgQEAgdm9pZCBJ
bnNwZWN0b3JUYXJnZXRQcm94eTo6Y29ubmVjdChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbDo6
Q29ubmVjdGlvblR5cGUgY28KIAogdm9pZCBJbnNwZWN0b3JUYXJnZXRQcm94eTo6ZGlzY29ubmVj
dCgpCiB7CisgICAgaWYgKGlzUGF1c2VkKCkpCisgICAgICAgIHNldFBhdXNlZChmYWxzZSk7CisK
ICAgICBpZiAobV9wcm92aXNpb25hbFBhZ2UpIHsKICAgICAgICAgbV9wcm92aXNpb25hbFBhZ2Ut
PnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaXNjb25uZWN0SW5zcGVjdG9yKGlk
ZW50aWZpZXIoKSksIG1fcHJvdmlzaW9uYWxQYWdlLT53ZWJQYWdlSUQoKSk7CiAgICAgICAgIHJl
dHVybjsKQEAgLTEwMCw0ICsxMDMsMTAgQEAgYm9vbCBJbnNwZWN0b3JUYXJnZXRQcm94eTo6aXNQ
cm92aXNpb25hbCgpIGNvbnN0CiAgICAgcmV0dXJuICEhbV9wcm92aXNpb25hbFBhZ2U7CiB9CiAK
K3ZvaWQgSW5zcGVjdG9yVGFyZ2V0UHJveHk6OnJlc3VtZVRhcmdldCgpCit7CisgICAgaWYgKG1f
cHJvdmlzaW9uYWxQYWdlKQorICAgICAgICBtX3Byb3Zpc2lvbmFsUGFnZS0+Y29udGludWVMb2Fk
aW5nQWZ0ZXJQYXVzaW5nRm9ySW5zcGVjdG9yKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yVGFyZ2V0UHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3RvclRhcmdldFByb3h5LmgKaW5k
ZXggYTIyMzljZWM4ZTE4ODUwZjM1ZjdmODhhOWM0ZWJhZGM2MmJmNDAyMy4uMWQ3MjViM2UzZWNl
YThhMjQxNmExYTMwNTYzNzI3MjkxOTMwMWYyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvSW5zcGVjdG9yVGFyZ2V0UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9JbnNwZWN0b3JUYXJnZXRQcm94eS5oCkBAIC01Nyw2ICs1Nyw4IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNlbmRNZXNzYWdlVG9UYXJnZXRCYWNrZW5kKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRl
OwogCiBwcml2YXRlOgorICAgIHZvaWQgcmVzdW1lVGFyZ2V0KCkgb3ZlcnJpZGU7CisKICAgICBX
ZWJQYWdlUHJveHkmIG1fcGFnZTsKICAgICBTdHJpbmcgbV9pZGVudGlmaWVyOwogICAgIEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yVGFyZ2V0VHlwZSBtX3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAKaW5kZXggMjE2YmU1YmZmMjBhNTU2NzA4
ZjAwNTdmNGUzNTBkMTVmZjIwYTJiZi4uMDlhYzUxMDgzMDFhODQ0NWRiZDk0NDlhMjRjOWYwODA1
NDIxYjg3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQ
YWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFn
ZVByb3h5LmNwcApAQCAtODcsNyArODcsNyBAQCBQcm92aXNpb25hbFBhZ2VQcm94eTo6UHJvdmlz
aW9uYWxQYWdlUHJveHkoV2ViUGFnZVByb3h5JiBwYWdlLCBSZWY8V2ViUHJvY2Vzc1BybwogCiAg
ICAgaW5pdGlhbGl6ZVdlYlBhZ2UoKTsKIAotICAgIG1fcGFnZS5pbnNwZWN0b3JDb250cm9sbGVy
KCkuZGlkQ3JlYXRlUHJvdmlzaW9uYWxQYWdlKCp0aGlzKTsKKyAgICBtX2xvYWRpbmdQYXVzZWRG
b3JJbnNwZWN0b3IgPSBtX3BhZ2UuaW5zcGVjdG9yQ29udHJvbGxlcigpLmludGVyY2VwdFByb3Zp
c2lvbmFsUGFnZSgqdGhpcykgPT0gV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXI6OlBhdXNlTG9h
ZGluZzo6WWVzOwogfQogCiBQcm92aXNpb25hbFBhZ2VQcm94eTo6flByb3Zpc2lvbmFsUGFnZVBy
b3h5KCkKQEAgLTExNyw2ICsxMTcsMjEgQEAgc3RkOjp1bmlxdWVfcHRyPERyYXdpbmdBcmVhUHJv
eHk+IFByb3Zpc2lvbmFsUGFnZVByb3h5Ojp0YWtlRHJhd2luZ0FyZWEoKQogICAgIHJldHVybiBX
VEZNb3ZlKG1fZHJhd2luZ0FyZWEpOwogfQogCit2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpj
b250aW51ZUxvYWRpbmdBZnRlclBhdXNpbmdGb3JJbnNwZWN0b3IoKQoreworICAgIEFTU0VSVCht
X2xvYWRpbmdQYXVzZWRGb3JJbnNwZWN0b3IpOworICAgIGlmIChtX2NvbnRpbnVlTG9hZGluZ1do
ZW5SZXN1bWVkQnlJbnNwZWN0b3JDYWxsYmFjaykgeworICAgICAgICBtX2NvbnRpbnVlTG9hZGlu
Z1doZW5SZXN1bWVkQnlJbnNwZWN0b3JDYWxsYmFjaygpOworICAgICAgICBtX2NvbnRpbnVlTG9h
ZGluZ1doZW5SZXN1bWVkQnlJbnNwZWN0b3JDYWxsYmFjayA9IG51bGxwdHI7CisgICAgfQorICAg
IG1fbG9hZGluZ1BhdXNlZEZvckluc3BlY3RvciA9IGZhbHNlOworfQorCit2b2lkIFByb3Zpc2lv
bmFsUGFnZVByb3h5Ojpjb250aW51ZUxvYWRpbmdXaGVuUmVzdW1lZEJ5SW5zcGVjdG9yKFdURjo6
RnVuY3Rpb248dm9pZCgpPiYmIGNhbGxiYWNrKQoreworICAgIG1fY29udGludWVMb2FkaW5nV2hl
blJlc3VtZWRCeUluc3BlY3RvckNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayk7Cit9CisKIHZv
aWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmNhbmNlbCgpCiB7CiAgICAgLy8gSWYgdGhlIHByb3Zp
c2lvbmFsIGxvYWQgc3RhcnRlZCwgdGhlbiBpbmRpY2F0ZSB0aGF0IGl0IGZhaWxlZCBkdWUgdG8g
Y2FuY2VsbGF0aW9uIGJ5IGNhbGxpbmcgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKCku
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94
eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaAppbmRl
eCBjYjk1ZmUwMTBkYzY0MmZjZGY0NjMzN2MzZWJhZTgyMjJkZjEzMjQ3Li42OTllOTQ0MWFjMGU5
MzBiN2ViYzVlMjJlODA5MDRiMjJjMzM2NjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmgKQEAgLTkwLDYgKzkwLDEwIEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgcHJvY2Vzc0RpZFRlcm1pbmF0ZSgpOwogCisgICAgdm9pZCBjb250aW51ZUxvYWRp
bmdBZnRlclBhdXNpbmdGb3JJbnNwZWN0b3IoKTsKKyAgICBib29sIHNob3VsZFBhdXNlTG9hZGlu
Z0Zvckluc3BlY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fbG9hZGluZ1BhdXNlZEZvckluc3BlY3Rv
cjsgfQorICAgIHZvaWQgY29udGludWVMb2FkaW5nV2hlblJlc3VtZWRCeUluc3BlY3RvcihXVEY6
OkZ1bmN0aW9uPHZvaWQoKT4mJik7CisKIHByaXZhdGU6CiAgICAgLy8gSVBDOjpNZXNzYWdlUmVj
ZWl2ZXIKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6
RGVjb2RlciYpIGZpbmFsOwpAQCAtMTM4LDYgKzE0Miw4IEBAIHByaXZhdGU6CiAgICAgUHJvY2Vz
c1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCBtX3Byb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQ7CiAg
ICAgYm9vbCBtX3dhc0NvbW1pdHRlZCB7IGZhbHNlIH07CiAgICAgVVJMIG1fcHJvdmlzaW9uYWxM
b2FkVVJMOworICAgIFdURjo6RnVuY3Rpb248dm9pZCgpPiBtX2NvbnRpbnVlTG9hZGluZ1doZW5S
ZXN1bWVkQnlJbnNwZWN0b3JDYWxsYmFjazsKKyAgICBib29sIG1fbG9hZGluZ1BhdXNlZEZvcklu
c3BlY3RvciB7IGZhbHNlIH07CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBWZWN0b3I8dWlu
dDhfdD4gbV9hY2Nlc3NpYmlsaXR5VG9rZW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKaW5kZXggYjlhOTQ2OWFiNTkx
MzZmOWU5YTM3MzZiZmRiMGU5ZDUyOWMwZmJjZS4uZWRjY2YyZmZjZjcyOGE3NmNkYjE5N2M3YWE5
MTI1MzNjMmExOGE2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZUluc3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtMTY3LDkgKzE2NywxMiBAQCB2b2lkIFdl
YlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyOjpzZW5kTWVzc2FnZVRvSW5zcGVjdG9yRnJvbnRlbmQo
Y29uc3QgU3RyaW5nJiB0YQogICAgIG1fdGFyZ2V0QWdlbnQtPnNlbmRNZXNzYWdlRnJvbVRhcmdl
dFRvRnJvbnRlbmQodGFyZ2V0SWQsIG1lc3NhZ2UpOwogfQogCi12b2lkIFdlYlBhZ2VJbnNwZWN0
b3JDb250cm9sbGVyOjpkaWRDcmVhdGVQcm92aXNpb25hbFBhZ2UoUHJvdmlzaW9uYWxQYWdlUHJv
eHkmIHByb3Zpc2lvbmFsUGFnZSkKK1dlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyOjpQYXVzZUxv
YWRpbmcgV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXI6OmludGVyY2VwdFByb3Zpc2lvbmFsUGFn
ZShQcm92aXNpb25hbFBhZ2VQcm94eSYgcHJvdmlzaW9uYWxQYWdlKQogewotICAgIGFkZFRhcmdl
dChJbnNwZWN0b3JUYXJnZXRQcm94eTo6Y3JlYXRlKHByb3Zpc2lvbmFsUGFnZSwgZ2V0VGFyZ2V0
SUQocHJvdmlzaW9uYWxQYWdlKSwgSW5zcGVjdG9yOjpJbnNwZWN0b3JUYXJnZXRUeXBlOjpQYWdl
KSk7CisgICAgYXV0byB0YXJnZXQgPSBJbnNwZWN0b3JUYXJnZXRQcm94eTo6Y3JlYXRlKHByb3Zp
c2lvbmFsUGFnZSwgZ2V0VGFyZ2V0SUQocHJvdmlzaW9uYWxQYWdlKSwgSW5zcGVjdG9yOjpJbnNw
ZWN0b3JUYXJnZXRUeXBlOjpQYWdlKTsKKyAgICBhdXRvKiB0YXJnZXRQdHIgPSB0YXJnZXQuZ2V0
KCk7CisgICAgYWRkVGFyZ2V0KFdURk1vdmUodGFyZ2V0KSk7CisgICAgcmV0dXJuIHRhcmdldFB0
ci0+aXNQYXVzZWQoKSA/IFdlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyOjpQYXVzZUxvYWRpbmc6
OlllcyA6IFdlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyOjpQYXVzZUxvYWRpbmc6Ok5vOwogfQog
CiB2b2lkIFdlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyOjp3aWxsRGVzdHJveVByb3Zpc2lvbmFs
UGFnZShjb25zdCBQcm92aXNpb25hbFBhZ2VQcm94eSYgcHJvdmlzaW9uYWxQYWdlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyLmgK
aW5kZXggODI4YmMzY2NjN2UwN2Q4MTIwMzM0MzFiMjdhZTdmMGJjOGNmOWM1NC4uNGFlN2IyMzY2
YzcyZDU3YTk0ZTMzM2ZlYWUzMTg5MzRkOTdkZDc2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlci5oCkBAIC02Niw3ICs2Niw4
IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlc3Ryb3lJbnNwZWN0b3JUYXJnZXQoY29uc3QgU3RyaW5n
JiB0YXJnZXRJZCk7CiAgICAgdm9pZCBzZW5kTWVzc2FnZVRvSW5zcGVjdG9yRnJvbnRlbmQoY29u
c3QgU3RyaW5nJiB0YXJnZXRJZCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKIAotICAgIHZvaWQg
ZGlkQ3JlYXRlUHJvdmlzaW9uYWxQYWdlKFByb3Zpc2lvbmFsUGFnZVByb3h5Jik7CisgICAgZW51
bSBjbGFzcyBQYXVzZUxvYWRpbmcgeyBObywgWWVzIH07CisgICAgUGF1c2VMb2FkaW5nIGludGVy
Y2VwdFByb3Zpc2lvbmFsUGFnZShQcm92aXNpb25hbFBhZ2VQcm94eSYpOwogICAgIHZvaWQgd2ls
bERlc3Ryb3lQcm92aXNpb25hbFBhZ2UoY29uc3QgUHJvdmlzaW9uYWxQYWdlUHJveHkmKTsKICAg
ICB2b2lkIGRpZENvbW1pdFByb3Zpc2lvbmFsUGFnZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBv
bGRXZWJQYWdlSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG5ld1dlYlBhZ2VJRCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDdjNWNhZDIzZGNhYTY5
NTgzMzVmOGI0MWUyMjBmZjA3Y2U2NjhkMTguLjFlOTM5ODdkYWIxMTNlYTlkNWE2Nzc3YzA5MmQ0
M2VjOWY4YmMzYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApA
QCAtMzA5NywyOCArMzA5NywzNCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y29udGludWVOYXZpZ2F0
aW9uSW5OZXdQcm9jZXNzKEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgcwogCiAgICAgbV9w
cm92aXNpb25hbFBhZ2UgPSBtYWtlVW5pcXVlPFByb3Zpc2lvbmFsUGFnZVByb3h5PigqdGhpcywg
bmV3UHJvY2Vzcy5jb3B5UmVmKCksIFdURk1vdmUoc3VzcGVuZGVkUGFnZSksIG5hdmlnYXRpb24u
bmF2aWdhdGlvbklEKCksIG5hdmlnYXRpb24uY3VycmVudFJlcXVlc3RJc1JlZGlyZWN0KCksIG5h
dmlnYXRpb24uY3VycmVudFJlcXVlc3QoKSwgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCk7
CiAKLSAgICBpZiAoYXV0byogaXRlbSA9IG5hdmlnYXRpb24udGFyZ2V0SXRlbSgpKSB7Ci0gICAg
ICAgIExPRyhMb2FkaW5nLCAiV2ViUGFnZVByb3h5ICVwIGNvbnRpbnVlTmF2aWdhdGlvbkluTmV3
UHJvY2VzcyB0byBiYWNrIGl0ZW0gVVJMICVzIiwgdGhpcywgaXRlbS0+dXJsKCkudXRmOCgpLmRh
dGEoKSk7CisgICAgYXV0byBjb250aW51YXRpb24gPSBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpLCBuYXZpZ2F0aW9uID0gbWFrZVJlZihuYXZpZ2F0aW9uKSwgbmV3UHJvY2Vz
cyA9IFdURk1vdmUobmV3UHJvY2VzcyksIHdlYnNpdGVQb2xpY2llcyA9IFdURk1vdmUod2Vic2l0
ZVBvbGljaWVzKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKGF1dG8qIGl0ZW0gPSBuYXZpZ2F0
aW9uLT50YXJnZXRJdGVtKCkpIHsKKyAgICAgICAgICAgIExPRyhMb2FkaW5nLCAiV2ViUGFnZVBy
b3h5ICVwIGNvbnRpbnVlTmF2aWdhdGlvbkluTmV3UHJvY2VzcyB0byBiYWNrIGl0ZW0gVVJMICVz
IiwgdGhpcywgaXRlbS0+dXJsKCkudXRmOCgpLmRhdGEoKSk7CiAKLSAgICAgICAgYXV0byB0cmFu
c2FjdGlvbiA9IG1fcGFnZUxvYWRTdGF0ZS50cmFuc2FjdGlvbigpOwotICAgICAgICBtX3BhZ2VM
b2FkU3RhdGUuc2V0UGVuZGluZ0FQSVJlcXVlc3QodHJhbnNhY3Rpb24sIHsgbmF2aWdhdGlvbi5u
YXZpZ2F0aW9uSUQoKSwgaXRlbS0+dXJsKCkgfSk7CisgICAgICAgICAgICBhdXRvIHRyYW5zYWN0
aW9uID0gbV9wYWdlTG9hZFN0YXRlLnRyYW5zYWN0aW9uKCk7CisgICAgICAgICAgICBtX3BhZ2VM
b2FkU3RhdGUuc2V0UGVuZGluZ0FQSVJlcXVlc3QodHJhbnNhY3Rpb24sIHsgbmF2aWdhdGlvbi0+
bmF2aWdhdGlvbklEKCksIGl0ZW0tPnVybCgpIH0pOwogCi0gICAgICAgIG1fcHJvdmlzaW9uYWxQ
YWdlLT5nb1RvQmFja0ZvcndhcmRJdGVtKG5hdmlnYXRpb24sICppdGVtLCBXVEZNb3ZlKHdlYnNp
dGVQb2xpY2llcykpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgICAgICAgICAgbV9wcm92
aXNpb25hbFBhZ2UtPmdvVG9CYWNrRm9yd2FyZEl0ZW0obmF2aWdhdGlvbiwgKml0ZW0sIFdURk1v
dmUod2Vic2l0ZVBvbGljaWVzKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KIAot
ICAgIGlmIChtX2JhY2tGb3J3YXJkTGlzdC0+Y3VycmVudEl0ZW0oKSAmJiAobmF2aWdhdGlvbi5s
b2NrQmFja0ZvcndhcmRMaXN0KCkgPT0gTG9ja0JhY2tGb3J3YXJkTGlzdDo6WWVzIHx8IG5hdmln
YXRpb24ubG9ja0hpc3RvcnkoKSA9PSBMb2NrSGlzdG9yeTo6WWVzKSkgewotICAgICAgICAvLyBJ
ZiBXZWJDb3JlIGlzIHN1cHBvc2VkIHRvIGxvY2sgdGhlIGhpc3RvcnkgZm9yIHRoaXMgbG9hZCwg
dGhlbiB0aGUgbmV3IHByb2Nlc3MgbmVlZHMgdG8ga25vdyBhYm91dCB0aGUgY3VycmVudCBoaXN0
b3J5IGl0ZW0gc28gaXQgY2FuIHVwZGF0ZQotICAgICAgICAvLyBpdCBpbnN0ZWFkIG9mIGNyZWF0
aW5nIGEgbmV3IG9uZS4KLSAgICAgICAgbmV3UHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6U2V0Q3VycmVudEhpc3RvcnlJdGVtRm9yUmVhdHRhY2gobV9iYWNrRm9yd2FyZExpc3QtPmN1
cnJlbnRJdGVtKCktPml0ZW1TdGF0ZSgpKSwgbV9wcm92aXNpb25hbFBhZ2UtPndlYlBhZ2VJRCgp
KTsKLSAgICB9CisgICAgICAgIGlmIChtX2JhY2tGb3J3YXJkTGlzdC0+Y3VycmVudEl0ZW0oKSAm
JiAobmF2aWdhdGlvbi0+bG9ja0JhY2tGb3J3YXJkTGlzdCgpID09IExvY2tCYWNrRm9yd2FyZExp
c3Q6OlllcyB8fCBuYXZpZ2F0aW9uLT5sb2NrSGlzdG9yeSgpID09IExvY2tIaXN0b3J5OjpZZXMp
KSB7CisgICAgICAgICAgICAvLyBJZiBXZWJDb3JlIGlzIHN1cHBvc2VkIHRvIGxvY2sgdGhlIGhp
c3RvcnkgZm9yIHRoaXMgbG9hZCwgdGhlbiB0aGUgbmV3IHByb2Nlc3MgbmVlZHMgdG8ga25vdyBh
Ym91dCB0aGUgY3VycmVudCBoaXN0b3J5IGl0ZW0gc28gaXQgY2FuIHVwZGF0ZQorICAgICAgICAg
ICAgLy8gaXQgaW5zdGVhZCBvZiBjcmVhdGluZyBhIG5ldyBvbmUuCisgICAgICAgICAgICBuZXdQ
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRDdXJyZW50SGlzdG9yeUl0ZW1Gb3JS
ZWF0dGFjaChtX2JhY2tGb3J3YXJkTGlzdC0+Y3VycmVudEl0ZW0oKS0+aXRlbVN0YXRlKCkpLCBt
X3Byb3Zpc2lvbmFsUGFnZS0+d2ViUGFnZUlEKCkpOworICAgICAgICB9CiAKLSAgICAvLyBGSVhN
RTogV29yayBvdXQgdGltaW5nIG9mIHJlc3BvbmRpbmcgd2l0aCB0aGUgbGFzdCBwb2xpY3kgZGVs
ZWdhdGUsIGV0YwotICAgIEFTU0VSVCghbmF2aWdhdGlvbi5jdXJyZW50UmVxdWVzdCgpLmlzRW1w
dHkoKSk7Ci0gICAgaWYgKGF1dG8mIHN1YnN0aXR1dGVEYXRhID0gbmF2aWdhdGlvbi5zdWJzdGl0
dXRlRGF0YSgpKQotICAgICAgICBtX3Byb3Zpc2lvbmFsUGFnZS0+bG9hZERhdGEobmF2aWdhdGlv
biwgeyBzdWJzdGl0dXRlRGF0YS0+Y29udGVudC5kYXRhKCksIHN1YnN0aXR1dGVEYXRhLT5jb250
ZW50LnNpemUoKSB9LCBzdWJzdGl0dXRlRGF0YS0+TUlNRVR5cGUsIHN1YnN0aXR1dGVEYXRhLT5l
bmNvZGluZywgc3Vic3RpdHV0ZURhdGEtPmJhc2VVUkwsIHN1YnN0aXR1dGVEYXRhLT51c2VyRGF0
YS5nZXQoKSwgV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMpKTsKKyAgICAgICAgLy8gRklYTUU6IFdv
cmsgb3V0IHRpbWluZyBvZiByZXNwb25kaW5nIHdpdGggdGhlIGxhc3QgcG9saWN5IGRlbGVnYXRl
LCBldGMKKyAgICAgICAgQVNTRVJUKCFuYXZpZ2F0aW9uLT5jdXJyZW50UmVxdWVzdCgpLmlzRW1w
dHkoKSk7CisgICAgICAgIGlmIChhdXRvJiBzdWJzdGl0dXRlRGF0YSA9IG5hdmlnYXRpb24tPnN1
YnN0aXR1dGVEYXRhKCkpCisgICAgICAgICAgICBtX3Byb3Zpc2lvbmFsUGFnZS0+bG9hZERhdGEo
bmF2aWdhdGlvbiwgeyBzdWJzdGl0dXRlRGF0YS0+Y29udGVudC5kYXRhKCksIHN1YnN0aXR1dGVE
YXRhLT5jb250ZW50LnNpemUoKSB9LCBzdWJzdGl0dXRlRGF0YS0+TUlNRVR5cGUsIHN1YnN0aXR1
dGVEYXRhLT5lbmNvZGluZywgc3Vic3RpdHV0ZURhdGEtPmJhc2VVUkwsIHN1YnN0aXR1dGVEYXRh
LT51c2VyRGF0YS5nZXQoKSwgV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMpKTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgbV9wcm92aXNpb25hbFBhZ2UtPmxvYWRSZXF1ZXN0KG5hdmlnYXRpb24s
IFJlc291cmNlUmVxdWVzdCB7IG5hdmlnYXRpb24tPmN1cnJlbnRSZXF1ZXN0KCkgfSwgV2ViQ29y
ZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkQWxsb3dFeHRlcm5hbFNjaGVt
ZXMsIG51bGxwdHIsIFdURk1vdmUod2Vic2l0ZVBvbGljaWVzKSk7CisgICAgfTsKKyAgICBpZiAo
bV9wcm92aXNpb25hbFBhZ2UtPnNob3VsZFBhdXNlTG9hZGluZ0Zvckluc3BlY3RvcigpKQorICAg
ICAgICBtX3Byb3Zpc2lvbmFsUGFnZS0+Y29udGludWVMb2FkaW5nV2hlblJlc3VtZWRCeUluc3Bl
Y3RvcihXVEZNb3ZlKGNvbnRpbnVhdGlvbikpOwogICAgIGVsc2UKLSAgICAgICAgbV9wcm92aXNp
b25hbFBhZ2UtPmxvYWRSZXF1ZXN0KG5hdmlnYXRpb24sIFJlc291cmNlUmVxdWVzdCB7IG5hdmln
YXRpb24uY3VycmVudFJlcXVlc3QoKSB9LCBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxz
UG9saWN5OjpTaG91bGRBbGxvd0V4dGVybmFsU2NoZW1lcywgbnVsbHB0ciwgV1RGTW92ZSh3ZWJz
aXRlUG9saWNpZXMpKTsKKyAgICAgICAgY29udGludWF0aW9uKCk7CiB9CiAKIGJvb2wgV2ViUGFn
ZVByb3h5Ojppc1BhZ2VPcGVuZWRCeURPTVNob3dpbmdJbml0aWFsRW1wdHlEb2N1bWVudCgpIGNv
bnN0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKaW5kZXggMTU0NmZiMzEzOTU5NmE2NjAyNzJiNDVhZmIyNjJmNTY0NThhMjAzOC4uOTgx
ZmVmZGU3M2YwNGYzZmI0ZWUzNTI3ZDU3YTNiMDYyN2Q4ZjA1ZiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIz
IEBACisyMDE5LTExLTEzICBZdXJ5IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGFsbG93IGluc3BlY3RvciB0byBwYXVzZSBwcm92aXNp
b25hbCBwYWdlIGxvYWQgYW5kIHJlc3RvcmUgaXRzIHN0YXRlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDQxNzAKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0IHRoYXQgcHJvdmlzaW9uYWwgbG9hZGlu
ZyB3aGljaCBzdGFydHMgYmVmb3JlIHByZXZpb3MgcHJvdmlzaW9uYWwgbG9hZGluZworICAgICAg
ICBjb21taXRzIHdpbGwgYmUgY29ycmVjdGx5IGhhbmRsZWQgYnkgdGhlIGluc2VwY3Rvci4KKwor
ICAgICAgICBUZXN0IHRoYXQgc2NyaXB0IGV4ZWN1dGlvbiB3aWxsIGJyZWFrIG9uIGRlYnVnZ2Vy
IHN0YXRlbWVudCBpbiBpbmxpbmUgc2NyaXB0cyBpbgorICAgICAgICBjYXNlIG9mIGNyb3NzIG9y
aWdpbiBuYXZpZ2F0aW9uIGFuZCBQU09OLgorCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0
b3IvdGFyZ2V0L3BhdXNlLW9uLWlubGluZS1kZWJ1Z2dlci1zdGF0ZW1lbnQtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci90YXJnZXQvcGF1c2Utb24t
aW5saW5lLWRlYnVnZ2VyLXN0YXRlbWVudC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rl
c3RzL2luc3BlY3Rvci90YXJnZXQvcHJvdmlzaW9uYWwtbG9hZC1jYW5jZWxzLXByZXZpb3VzLWxv
YWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci90
YXJnZXQvcHJvdmlzaW9uYWwtbG9hZC1jYW5jZWxzLXByZXZpb3VzLWxvYWQuaHRtbDogQWRkZWQu
CisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvdGFyZ2V0L3Jlc291cmNlcy9pbmxpbmUt
ZGVidWdnZXItc3RhdGVtZW50Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5z
cGVjdG9yL3RhcmdldC90YXJnZXQtZXZlbnRzLWZvci1wcm92aXNpb25hbC1wYWdlLmh0bWw6CisK
IDIwMTktMTItMDMgIHlvdWVubiBmYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAg
IEFkZCBzdXBwb3J0IGZvciBjYW1lcmEgcm90YXRpb24gd2hlbiBjYXB0dXJpbmcgaW4gVUlQcm9j
ZXNzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci90YXJnZXQv
cGF1c2Utb24taW5saW5lLWRlYnVnZ2VyLXN0YXRlbWVudC1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci90YXJnZXQvcGF1c2Utb24taW5saW5lLWRlYnVnZ2Vy
LXN0YXRlbWVudC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjJmNjY4ZTRmOTk2NTVjYzU1MDc4
MTFjYWI0YzY0N2JiMDkzOWRhZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL3RhcmdldC9wYXVzZS1vbi1pbmxpbmUtZGVidWdnZXItc3RhdGVtZW50
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIgQEAKK0FMRVJUOiBQQVNTOiBTaG91bGQgcGF1c2Ug
b24gZGVidWdnZXIgc3RhdGVtZW50LgorVGVzdCBwYWdlIHVzZWQgdG8gY2hlY2sgdGhhdCBleGVj
dXRpb24gd2lsbCBicmVhayBvbiBpbmxpbmUgJ2RlYnVnZ2VyJyBzdGF0ZW1lbnQgYWZ0ZXIgY3Jv
c3Mtb3JpZ2luIG5hdmlnYXRpb24uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luc3BlY3Rvci90YXJnZXQvcGF1c2Utb24taW5saW5lLWRlYnVnZ2VyLXN0YXRlbWVudC5odG1s
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvdGFyZ2V0L3BhdXNlLW9uLWlubGlu
ZS1kZWJ1Z2dlci1zdGF0ZW1lbnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNjk0ZGQyN2MyYjBkYmYzZjA0
MGQ3OGNkOGMxYzkzNTI1ZGFmZjhjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbnNwZWN0b3IvdGFyZ2V0L3BhdXNlLW9uLWlubGluZS1kZWJ1Z2dlci1zdGF0ZW1l
bnQuaHRtbApAQCAtMCwwICsxLDQyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+
Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2luc3Bl
Y3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAg
ICBsZXQgc3VpdGUgPSBJbnNwZWN0b3JUZXN0LmNyZWF0ZUFzeW5jU3VpdGUoIlRhcmdldC5QU09O
Iik7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJJbmxpbmVEZWJ1
Z2dlclN0YXRlbWVudCIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiQ2hlY2sgdGhhdCBuZXcgcHJv
dmlzaW9uYWwgcGFnZSBjYW4gYmUgcGF1c2VkIGJlZm9yZSBuYXZpZ2F0aW9uLiIsCisgICAgICAg
IHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7CisgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIu
YXdhaXRFdmVudChXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuUGF1c2VkKQorICAgICAgICAgICAg
LnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QucGFzcyhgU2hvdWxk
IHBhdXNlIG9uIGRlYnVnZ2VyIHN0YXRlbWVudC5gKTsKKworICAgICAgICAgICAgICAgIC8vIFdh
aXQgZm9yIHBhZ2UgcmVsb2FkIGV2ZW50IHRvIGF2b2lkIHJhY2UgYmV0d2VlbiB0ZXN0IHJlc3Vs
dHMgZmx1c2hpbmcgYW5kIHRoZSB0ZXN0IGNvbXBsZXRpb24uCisgICAgICAgICAgICAgICAgbGV0
IHBhZ2VMb2FkUHJvbWlzZSA9IEluc3BlY3RvclRlc3QuYXdhaXRFdmVudChGcm9udGVuZFRlc3RI
YXJuZXNzLkV2ZW50LlRlc3RQYWdlRGlkTG9hZCk7CisgICAgICAgICAgICAgICAgLy9XSS5tYWlu
VGFyZ2V0LkRlYnVnZ2VyQWdlbnQuCisgICAgICAgICAgICAgICAgUHJvbWlzZS5yZXNvbHZlKCku
dGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5yZXN1
bWUoKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gcGFnZUxv
YWRQcm9taXNlOworICAgICAgICAgICAgfSkKKyAgICAgICAgICAgIC50aGVuKHJlc29sdmUpOwor
CisKKyAgICAgICAgICAgIGNvbnN0IHVybCA9ICJodHRwOi8vbG9jYWxob3N0OjgwMDAvaW5zcGVj
dG9yL3RhcmdldC9yZXNvdXJjZXMvaW5saW5lLWRlYnVnZ2VyLXN0YXRlbWVudC5odG1sIjsKKyAg
ICAgICAgICAgIFdJLm1haW5UYXJnZXQuUGFnZUFnZW50Lm5hdmlnYXRlKHVybCk7CisgICAgICAg
IH0KKyAgICB9KTsKKworICAgIHN1aXRlLnJ1blRlc3RDYXNlc0FuZEZpbmlzaCgpOworfQorPC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8cD5UZXN0IHRoYXQg
ZXhlY3V0aW9uIHdpbGwgYnJlYWsgb24gaW5saW5lICdkZWJ1Z2dlcicgc3RhdGVtZW50IGFmdGVy
IGNyb3NzLW9yaWdpbiBuYXZpZ2F0aW9uLjwvcD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3RhcmdldC9wcm92aXNpb25hbC1s
b2FkLWNhbmNlbHMtcHJldmlvdXMtbG9hZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2luc3BlY3Rvci90YXJnZXQvcHJvdmlzaW9uYWwtbG9hZC1jYW5jZWxzLXByZXZpb3Vz
LWxvYWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRkMDdiNWEwNGQ3ZjgzYjljNTcwYzJiZjY5
MThkZjQyNTZkZjc4MGUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luc3BlY3Rvci90YXJnZXQvcHJvdmlzaW9uYWwtbG9hZC1jYW5jZWxzLXByZXZpb3VzLWxvYWQt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTcgQEAKK1Rlc3QgdGhhdCB0d28gY29uc2VxdXRpdmUg
Y3Jvc3MgZG9tYWluIG5hdmlnYXRpb24gcmVxdWVzdHMgd2lsbCByZXN1bHQgaW4gdHdvIHByb3Zp
c2lvbmFsIHRhcmdldHMgYmVpbmcgY3JlYXRlZCwgZmlyc3Qgb2Ygd2hpY2ggaXMgbGF0ZXIgZGVz
dHJveWVkIGFuZCB0aGUgc2Vjb25kIGlzIGNvbW1pdHRlZC4KKworCis9PSBSdW5uaW5nIHRlc3Qg
c3VpdGU6IFRhcmdldC5QU09OCistLSBSdW5uaW5nIHRlc3QgY2FzZTogUHJvdmlzaW9uYWxQYWdl
UGF1c2VkCitDdXJyZW50IHRhcmdldCBpcyAxLgorUEFTUzogU2hvdWxkIHJlY2VpdmUgVGFyZ2V0
QWRkZWQgZXZlbnQgZm9yIHRhcmdldCAyLgorUEFTUzogVGFyZ2V0IDIgc2hvdWxkIGJlIHByb3Zp
c2lvbmFsLgorUEFTUzogVGFyZ2V0IDIgc2hvdWxkIGJlIHBhdXNlZCBvbiBzdGFydC4KK1BBU1M6
IFNob3VsZCByZWNlaXZlIFRhcmdldFJlbW92ZWQgZXZlbnQgZm9yIHRhcmdldCAyCitQQVNTOiBT
aG91bGQgcmVjZWl2ZSBUYXJnZXRBZGRlZCBldmVudCBmb3IgdGFyZ2V0IDMuCitQQVNTOiBUYXJn
ZXQgMyBzaG91bGQgYmUgcHJvdmlzaW9uYWwuCitQQVNTOiBUYXJnZXQgMyBzaG91bGQgYmUgcGF1
c2VkIG9uIHN0YXJ0LgorUEFTUzogU2hvdWxkIHJlY2VpdmUgVGFyZ2V0UmVtb3ZlZCBldmVudCBm
b3IgdGFyZ2V0IDEKK1BBU1M6IFNob3VsZCByZWNlaXZlIERpZENvbW1pdFByb3Zpc2lvbmFsVGFy
Z2V0IGV2ZW50IDEgPT4gMy4KK1BBU1M6IFNob3VsZCBoYXZlIHNlZW4gMyBkaWZmZXJlbnQgdGFy
Z2V0cy4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvdGFy
Z2V0L3Byb3Zpc2lvbmFsLWxvYWQtY2FuY2Vscy1wcmV2aW91cy1sb2FkLmh0bWwgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci90YXJnZXQvcHJvdmlzaW9uYWwtbG9hZC1jYW5jZWxz
LXByZXZpb3VzLWxvYWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMzhiYzM5ZDg3MGVlNmM4ODQxOTQ4Mjlj
N2JjZWZlNDIxY2ZhYjY2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9pbnNwZWN0b3IvdGFyZ2V0L3Byb3Zpc2lvbmFsLWxvYWQtY2FuY2Vscy1wcmV2aW91cy1sb2Fk
Lmh0bWwKQEAgLTAsMCArMSw3MSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
PG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9pbnNwZWN0
b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZnVuY3Rpb24gdGVzdCgpCit7CisgICAg
bGV0IGxhc3RBc3NpZ25lZElkID0gMDsKKyAgICBsZXQgdGFyZ2V0VG9JZCA9IG5ldyBNYXA7Cisg
ICAgZnVuY3Rpb24gc3RhYmxlVGFyZ2V0SWQodGFyZ2V0SWQpCisgICAgeworICAgICAgICBsZXQg
aWQgPSB0YXJnZXRUb0lkLmdldCh0YXJnZXRJZCk7CisgICAgICAgIGlmICghaWQpIHsKKyAgICAg
ICAgICAgIGlkID0gKytsYXN0QXNzaWduZWRJZDsKKyAgICAgICAgICAgIHRhcmdldFRvSWQuc2V0
KHRhcmdldElkLCBpZCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGlkOworICAgIH0KKwor
ICAgIGxldCBzdWl0ZSA9IEluc3BlY3RvclRlc3QuY3JlYXRlQXN5bmNTdWl0ZSgiVGFyZ2V0LlBT
T04iKTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIlByb3Zpc2lv
bmFsUGFnZVBhdXNlZCIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiQ2hlY2sgdGhhdCBuZXcgcHJv
dmlzaW9uYWwgcGFnZSBjYW4gYmUgcGF1c2VkIGJlZm9yZSBuYXZpZ2F0aW9uLiIsCisgICAgICAg
IHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZyhg
Q3VycmVudCB0YXJnZXQgaXMgJHtzdGFibGVUYXJnZXRJZChXSS5tYWluVGFyZ2V0LmlkZW50aWZp
ZXIpfS5gKTsKKworICAgICAgICAgICAgV0kudGFyZ2V0TWFuYWdlci5hZGRFdmVudExpc3RlbmVy
KFdJLlRhcmdldE1hbmFnZXIuRXZlbnQuVGFyZ2V0QWRkZWQsIChldmVudCkgPT4geworICAgICAg
ICAgICAgICAgIGxldCB0YXJnZXQgPSBldmVudC5kYXRhLnRhcmdldDsKKyAgICAgICAgICAgICAg
ICBsZXQgdGFyZ2V0SWQgPSBzdGFibGVUYXJnZXRJZCh0YXJnZXQuaWRlbnRpZmllcik7CisgICAg
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5wYXNzKGBTaG91bGQgcmVjZWl2ZSBUYXJnZXRBZGRl
ZCBldmVudCBmb3IgdGFyZ2V0ICR7dGFyZ2V0SWR9LmApOworICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuZXhwZWN0VHJ1ZSh0YXJnZXQuaXNQcm92aXNpb25hbCwgYFRhcmdldCAke3Rhcmdl
dElkfSBzaG91bGQgYmUgcHJvdmlzaW9uYWwuYCk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5leHBlY3RUcnVlKHRhcmdldC5pc1BhdXNlZCwgYFRhcmdldCAke3RhcmdldElkfSBzaG91
bGQgYmUgcGF1c2VkIG9uIHN0YXJ0LmApOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAg
IFdJLnRhcmdldE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5UYXJnZXRNYW5hZ2VyLkV2ZW50
LkRpZENvbW1pdFByb3Zpc2lvbmFsVGFyZ2V0LCAoZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAg
ICBsZXQge3ByZXZpb3VzVGFyZ2V0SWQsIHRhcmdldH0gPSBldmVudC5kYXRhOworICAgICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QucGFzcyhgU2hvdWxkIHJlY2VpdmUgRGlkQ29tbWl0UHJvdmlz
aW9uYWxUYXJnZXQgZXZlbnQgJHtzdGFibGVUYXJnZXRJZChwcmV2aW91c1RhcmdldElkKX0gPT4g
JHtzdGFibGVUYXJnZXRJZCh0YXJnZXQuaWRlbnRpZmllcil9LmApOworICAgICAgICAgICAgfSk7
CisKKyAgICAgICAgICAgIFdJLnRhcmdldE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5UYXJn
ZXRNYW5hZ2VyLkV2ZW50LlRhcmdldFJlbW92ZWQsIChldmVudCkgPT57CisgICAgICAgICAgICAg
ICAgbGV0IHRhcmdldElkID0gc3RhYmxlVGFyZ2V0SWQoZXZlbnQuZGF0YS50YXJnZXQuaWRlbnRp
Zmllcik7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5wYXNzKGBTaG91bGQgcmVjZWl2
ZSBUYXJnZXRSZW1vdmVkIGV2ZW50IGZvciB0YXJnZXQgJHt0YXJnZXRJZH1gKTsKKyAgICAgICAg
ICAgIH0pOworCisgICAgICAgICAgICAvLyBXYWl0IGZvciBwYWdlIHJlbG9hZCBldmVudCB0byBh
dm9pZCByYWNlIGJldHdlZW4gdGVzdCByZXN1bHRzIGZsdXNoaW5nIGFuZCB0aGUgdGVzdCBjb21w
bGV0aW9uLgorICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hd2FpdEV2ZW50KEZyb250ZW5kVGVz
dEhhcm5lc3MuRXZlbnQuVGVzdFBhZ2VEaWRMb2FkKQorICAgICAgICAgICAgLnRoZW4oKCkgPT4g
eworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwobGFzdEFzc2lnbmVk
SWQsIDMsIGBTaG91bGQgaGF2ZSBzZWVuIDMgZGlmZmVyZW50IHRhcmdldHMuYCk7CisgICAgICAg
ICAgICB9KQorICAgICAgICAgICAgLnRoZW4ocmVzb2x2ZSk7CisKKyAgICAgICAgICAgIC8vIFNl
bmQgdHdvIGNvbnNlcXV0aXZlIG5hdmlnYXRpb24gcmVxdWVzdHMuIFRoZSBsYXR0ZXIgd2lsbCBj
YW5jZWwgcHJvdmlzaW9uYWwKKyAgICAgICAgICAgIC8vIGxvYWQgb2YgdGhlIGZvcm1lci4KKyAg
ICAgICAgICAgIGNvbnN0IHVybCA9ICJodHRwOi8vbG9jYWxob3N0OjgwMDAvaW5zcGVjdG9yL3Rh
cmdldC9wcm92aXNpb25hbC1sb2FkLWNhbmNlbHMtcHJldmlvdXMtbG9hZC5odG1sIjsKKyAgICAg
ICAgICAgIFdJLm1haW5UYXJnZXQuUGFnZUFnZW50Lm5hdmlnYXRlKHVybCk7CisgICAgICAgICAg
ICBXSS5tYWluVGFyZ2V0LlBhZ2VBZ2VudC5uYXZpZ2F0ZSh1cmwpOworICAgICAgICB9CisgICAg
fSk7CisKKyAgICBzdWl0ZS5ydW5UZXN0Q2FzZXNBbmRGaW5pc2goKTsKK30KKzwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHA+VGVzdCB0aGF0IHR3byBjb25z
ZXF1dGl2ZSBjcm9zcyBkb21haW4gbmF2aWdhdGlvbiByZXF1ZXN0cyB3aWxsIHJlc3VsdCBpbiB0
d28KK3Byb3Zpc2lvbmFsIHRhcmdldHMgYmVpbmcgY3JlYXRlZCwgZmlyc3Qgb2Ygd2hpY2ggaXMg
bGF0ZXIgZGVzdHJveWVkIGFuZCB0aGUgc2Vjb25kCitpcyBjb21taXR0ZWQuPC9wPgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
dGFyZ2V0L3Jlc291cmNlcy9pbmxpbmUtZGVidWdnZXItc3RhdGVtZW50Lmh0bWwgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci90YXJnZXQvcmVzb3VyY2VzL2lubGluZS1kZWJ1Z2dl
ci1zdGF0ZW1lbnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YzBjMDE2YTVhZDM4Y2E2OGY4ZWE3YjM2ZGI0
MzU0NzljNWJhYTIwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9p
bnNwZWN0b3IvdGFyZ2V0L3Jlc291cmNlcy9pbmxpbmUtZGVidWdnZXItc3RhdGVtZW50Lmh0bWwK
QEAgLTAsMCArMSwxOSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEg
Y2hhcnNldD0idXRmLTgiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9pbnNwZWN0b3It
dGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitkZWJ1Z2dlcjsKKworZnVuY3Rpb24gdGVz
dCgpCit7CisgICAgSW5zcGVjdG9yVGVzdC5mYWlsKCJUaGlzIGNvZGUgc2hvdWxkIG5ldmVyIGFj
dHVhbGx5IHJ1bi4gSXQgaXMgaGVyZSBiZWNhc2UgaW5zcGVjdG9yLXRlc3QuanMgaGFybmVzcyBy
ZXF1aXJlcyBhIHRlc3QoKSBmdW5jdGlvbi4iKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHA+VGVzdCBwYWdlIHVzZWQgdG8gY2hlY2sgdGhhdCBl
eGVjdXRpb24gd2lsbCBicmVhayBvbiBpbmxpbmUgJ2RlYnVnZ2VyJyBzdGF0ZW1lbnQgYWZ0ZXIg
Y3Jvc3Mtb3JpZ2luIG5hdmlnYXRpb24uPC9wPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvdGFyZ2V0L3RhcmdldC1ldmVudHMt
Zm9yLXByb3Zpc2lvbmFsLXBhZ2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9pbnNwZWN0b3IvdGFyZ2V0L3RhcmdldC1ldmVudHMtZm9yLXByb3Zpc2lvbmFsLXBhZ2UtZXhw
ZWN0ZWQudHh0CmluZGV4IDZkZWY3ZTBiYjM0NGRlMzJkNmQ1NWM3ODJhOThmMjE2MzA5OWY4N2Qu
LmQwMGUzNjMyZGM1ZGRiYjI5ZmY3MmM4YjE3MjhlOTc0OTFkZTI0MjYgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3RhcmdldC90YXJnZXQtZXZlbnRzLWZvci1w
cm92aXNpb25hbC1wYWdlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luc3BlY3Rvci90YXJnZXQvdGFyZ2V0LWV2ZW50cy1mb3ItcHJvdmlzaW9uYWwtcGFnZS1leHBl
Y3RlZC50eHQKQEAgLTYsMTEgKzYsMTEgQEAgVGVzdCB0aGF0IGNyb3NzIGRvbWFpbiBuYXZpZ2F0
aW9uIHJlc3VsdHMgaW4gdGhlIGZvbGxvd2luZyBzZXF1ZW5jZSBvZiBldmVudHMgaW4KIAogPT0g
UnVubmluZyB0ZXN0IHN1aXRlOiBUYXJnZXQuUFNPTgogLS0gUnVubmluZyB0ZXN0IGNhc2U6IFBy
b3Zpc2lvbmFsUGFnZVRhcmdldAotUEFTUzogU2hvdWxkIHJlY2VpdmUgdGFyZ2V0Q3JlYXRlZCBl
dmVudC4KK1BBU1M6IFNob3VsZCByZWNlaXZlIFRhcmdldEFkZGVkIGV2ZW50LgogUEFTUzogVGFy
Z2V0IHNob3VsZCBiZSBwcm92aXNpb25hbC4KLVBBU1M6IFNob3VsZCByZWNlaXZlIGRpZENvbW1p
dFByb3Zpc2lvbmFsVGFyZ2V0IGV2ZW50LgorUEFTUzogU2hvdWxkIHJlY2VpdmUgVGFyZ2V0UmVt
b3ZlZCBldmVudC4KK1BBU1M6IERlc3Ryb3llZCB0YXJnZXQgc2hvdWxkIGJlIHByZXZpb3VzIHRh
cmdldC4KK1BBU1M6IFNob3VsZCByZWNlaXZlIERpZENvbW1pdFByb3Zpc2lvbmFsVGFyZ2V0IGV2
ZW50LgogUEFTUzogUHJldmlvdXMgdGFyZ2V0IHNob3VsZCBiZSB0aGUgY3VycmVudCBvbmUuCiBQ
QVNTOiBDb21taXR0ZWQgdGFyZ2V0IHNob3VsZCBtYXRjaCBwcm92aXNpb25hbCB0YXJnZXQuCi1Q
QVNTOiBTaG91bGQgcmVjZWl2ZSB0YXJnZXREZXN0cm95ZWQgZXZlbnQuCi1QQVNTOiBEZXN0cm95
ZWQgdGFyZ2V0IHNob3VsZCBiZSBwcmV2aW91cyB0YXJnZXQuCiAKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3RhcmdldC90YXJnZXQtZXZlbnRzLWZvci1wcm92
aXNpb25hbC1wYWdlLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci90YXJn
ZXQvdGFyZ2V0LWV2ZW50cy1mb3ItcHJvdmlzaW9uYWwtcGFnZS5odG1sCmluZGV4IGU3Mzk1MTM5
MzY3NDRlNTU2ZWMxMTJiZGQ1MmFhMWQ4ZTY0OTRhOTEuLmM1MWZiNGUyZjU5YzM2OTNlZGJiNTEx
OTNlYzMyMGVmZjZmOTVkNGUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL3RhcmdldC90YXJnZXQtZXZlbnRzLWZvci1wcm92aXNpb25hbC1wYWdlLmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvdGFyZ2V0L3RhcmdldC1ldmVudHMt
Zm9yLXByb3Zpc2lvbmFsLXBhZ2UuaHRtbApAQCAtMTMsMjggKzEzLDI3IEBAIGZ1bmN0aW9uIHRl
c3QoKQogICAgICAgICBkZXNjcmlwdGlvbjogIkNoZWNrIHRoYXQgYSBuZXcgdGFyZ2V0IHdpbGwg
YmUgY3JlYXRlZCBmb3IgcHJvdmlzaW9uYWwgcGFnZS4iLAogICAgICAgICB0ZXN0KHJlc29sdmUs
IHJlamVjdCkgewogICAgICAgICAgICAgY29uc3QgbWFpblRhcmdldElkID0gV0kubWFpblRhcmdl
dC5pZGVudGlmaWVyOwotICAgICAgICAgICAgbGV0IG5ld1RhcmdldElkOworICAgICAgICAgICAg
bGV0IG5ld1RhcmdldDsKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG1haW5UYXJn
ZXRJZCk7CiAgICAgICAgICAgICBsZXQgcmVsb2FkUHJvbWlzZSA9IEluc3BlY3RvclRlc3QuYXdh
aXRFdmVudChGcm9udGVuZFRlc3RIYXJuZXNzLkV2ZW50LlRlc3RQYWdlRGlkTG9hZCk7CiAKLSAg
ICAgICAgICAgIFdJLnRhcmdldE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5UYXJnZXRNYW5h
Z2VyLkV2ZW50LlRhcmdldENyZWF0ZWQsIChldmVudCkgPT4gewotICAgICAgICAgICAgICAgIGxl
dCB7dGFyZ2V0SW5mb30gPSBldmVudC5kYXRhOwotICAgICAgICAgICAgICAgIG5ld1RhcmdldElk
ID0gdGFyZ2V0SW5mby50YXJnZXRJZDsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnBh
c3MoYFNob3VsZCByZWNlaXZlIHRhcmdldENyZWF0ZWQgZXZlbnQuYCk7Ci0gICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUcnVlKHRhcmdldEluZm8uaXNQcm92aXNpb25hbCwgIlRh
cmdldCBzaG91bGQgYmUgcHJvdmlzaW9uYWwuIik7CisgICAgICAgICAgICBXSS50YXJnZXRNYW5h
Z2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuVGFyZ2V0TWFuYWdlci5FdmVudC5UYXJnZXRBZGRlZCwg
KGV2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgbmV3VGFyZ2V0ID0gZXZlbnQuZGF0YS50YXJn
ZXQ7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5wYXNzKGBTaG91bGQgcmVjZWl2ZSBU
YXJnZXRBZGRlZCBldmVudC5gKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVj
dFRydWUobmV3VGFyZ2V0LmlzUHJvdmlzaW9uYWwsICJUYXJnZXQgc2hvdWxkIGJlIHByb3Zpc2lv
bmFsLiIpOwogICAgICAgICAgICAgfSk7CiAKICAgICAgICAgICAgIFdJLnRhcmdldE1hbmFnZXIu
YWRkRXZlbnRMaXN0ZW5lcihXSS5UYXJnZXRNYW5hZ2VyLkV2ZW50LkRpZENvbW1pdFByb3Zpc2lv
bmFsVGFyZ2V0LCAoZXZlbnQpID0+IHsKLSAgICAgICAgICAgICAgICBsZXQge3ByZXZpb3VzVGFy
Z2V0SWQsIHRhcmdldEluZm99ID0gZXZlbnQuZGF0YTsKLSAgICAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LnBhc3MoYFNob3VsZCByZWNlaXZlIGRpZENvbW1pdFByb3Zpc2lvbmFsVGFyZ2V0IGV2
ZW50LmApOworICAgICAgICAgICAgICAgIGxldCB7cHJldmlvdXNUYXJnZXRJZCwgdGFyZ2V0fSA9
IGV2ZW50LmRhdGE7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5wYXNzKGBTaG91bGQg
cmVjZWl2ZSBEaWRDb21taXRQcm92aXNpb25hbFRhcmdldCBldmVudC5gKTsKICAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHByZXZpb3VzVGFyZ2V0SWQsIG1haW5UYXJn
ZXRJZCwgIlByZXZpb3VzIHRhcmdldCBzaG91bGQgYmUgdGhlIGN1cnJlbnQgb25lLiIpOwotICAg
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwodGFyZ2V0SW5mby50YXJnZXRJ
ZCwgbmV3VGFyZ2V0SWQsICJDb21taXR0ZWQgdGFyZ2V0IHNob3VsZCBtYXRjaCBwcm92aXNpb25h
bCB0YXJnZXQuIik7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbCh0
YXJnZXQsIG5ld1RhcmdldCwgIkNvbW1pdHRlZCB0YXJnZXQgc2hvdWxkIG1hdGNoIHByb3Zpc2lv
bmFsIHRhcmdldC4iKTsKICAgICAgICAgICAgIH0pOwogCi0gICAgICAgICAgICBXSS50YXJnZXRN
YW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuVGFyZ2V0TWFuYWdlci5FdmVudC5UYXJnZXREZXN0
cm95ZWQsIChldmVudCkgPT57Ci0gICAgICAgICAgICAgICAgbGV0IHt0YXJnZXRJZH0gPSBldmVu
dC5kYXRhOwotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QucGFzcyhgU2hvdWxkIHJlY2Vp
dmUgdGFyZ2V0RGVzdHJveWVkIGV2ZW50LmApOwotICAgICAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuZXhwZWN0RXF1YWwodGFyZ2V0SWQsIG1haW5UYXJnZXRJZCwgIkRlc3Ryb3llZCB0YXJnZXQg
c2hvdWxkIGJlIHByZXZpb3VzIHRhcmdldC4iKTsKKyAgICAgICAgICAgIFdJLnRhcmdldE1hbmFn
ZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5UYXJnZXRNYW5hZ2VyLkV2ZW50LlRhcmdldFJlbW92ZWQs
IChldmVudCkgPT57CisgICAgICAgICAgICAgICAgbGV0IHRhcmdldCA9IGV2ZW50LmRhdGEudGFy
Z2V0OworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QucGFzcyhgU2hvdWxkIHJlY2VpdmUg
VGFyZ2V0UmVtb3ZlZCBldmVudC5gKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4
cGVjdEVxdWFsKHRhcmdldC5pZGVudGlmaWVyLCBtYWluVGFyZ2V0SWQsICJEZXN0cm95ZWQgdGFy
Z2V0IHNob3VsZCBiZSBwcmV2aW91cyB0YXJnZXQuIik7CiAKICAgICAgICAgICAgICAgICAvLyBX
YWl0IGZvciBwYWdlIHJlbG9hZCBldmVudCB0byBhdm9pZCByYWNlIGJldHdlZW4gdGVzdCByZXN1
bHRzIGZsdXNoaW5nIGFuZCB0aGUgdGVzdCBjb21wbGV0aW9uLgogICAgICAgICAgICAgICAgIHJl
bG9hZFByb21pc2UudGhlbihyZXNvbHZlKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>384757</attachid>
            <date>2019-12-03 14:24:49 -0800</date>
            <delta_ts>2019-12-03 15:44:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204170-20191203142448.patch</filename>
            <type>text/plain</type>
            <size>54121</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzMDQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
NDY2ZjVlYjI5MTEzYzMyODBmOGQ2NjMyMGQxMDQ0NTEwM2IwMjdmLi5kM2FkMzkxMGQ4MmExMGQy
MWY0YTdiN2UwODc2YjZlNjI5ZjMxZGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNSBAQAorMjAxOS0xMS0xMyAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBhbGxvdyBpbnNwZWN0b3IgdG8gcGF1c2Ug
cHJvdmlzaW9uYWwgcGFnZSBsb2FkIGFuZCByZXN0b3JlIGl0cyBzdGF0ZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0MTcwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgYW4gb3B0aW9uIHRvIFRh
cmdldCBkb21haW4gdG8gcGF1c2UgYWxsIG5ldyB0YXJnZXRzIG9uIHN0YXJ0IHdhaXRpbmcgZm9y
CisgICAgICAgIGV4cGxpY2l0ICdyZXN1bWUnIGNvbW1hbmQgZnJvbSB0aGUgaW5zcGVjdG9yIGZy
b250LWVuZC4gVGhpcyBhbGxvd3MgdG8gY29uZmlndXJlCisgICAgICAgIGluc3BlY3RvciBiYWNr
ZW5kIChpbmNsdWRpbmcgdXNlciBhZ2VudCBvdmVycmlkZXMsIGJyZWFrcG9pbnRzIGFuZCBpbnN0
cnVtZW50YXRpb24pCisgICAgICAgIGJlZm9yZSBuYXZpZ2F0aW9uIHN0YXJ0cy4KKworICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JUYXJnZXQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvclRhcmdldEFnZW50LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVj
dG9yVGFyZ2V0QWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAg
KEluc3BlY3Rvcjo6SW5zcGVjdG9yVGFyZ2V0QWdlbnQ6OnNldFBhdXNlT25TdGFydCk6CisgICAg
ICAgIChJbnNwZWN0b3I6Okluc3BlY3RvclRhcmdldEFnZW50OjpyZXN1bWUpOgorICAgICAgICAo
SW5zcGVjdG9yOjpidWlsZFRhcmdldEluZm9PYmplY3QpOgorICAgICAgICAoSW5zcGVjdG9yOjpJ
bnNwZWN0b3JUYXJnZXRBZ2VudDo6dGFyZ2V0Q3JlYXRlZCk6CisgICAgICAgICogaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JUYXJnZXRBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9wcm90
b2NvbC9UYXJnZXQuanNvbjoKKwogMjAxOS0xMi0wMiAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFw
cGxlLmNvbT4KIAogICAgICAgICBQcm9wZXJ0eVNsb3Qgc2hvdWxkIG5vdCBoYXZlIEN1c3RvbXMg
aGF2ZSBhIFByb3BlcnR5T2Zmc2V0IG9mIHplcm8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4
IDVlMWRhMzRhN2ZmNDY0OTQ1MzA0MzhjZTVjNzAzYmM2MWY3ZTdhNjQuLjA2OWIzMjc3M2ZhMmIx
NmM0YjczYTExM2Y1ZTA0MGM4ZjcyOTJkYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDYzIEBACisyMDE5LTExLTEzICBZdXJ5IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGFsbG93IGluc3BlY3RvciB0byBwYXVz
ZSBwcm92aXNpb25hbCBwYWdlIGxvYWQgYW5kIHJlc3RvcmUgaXRzIHN0YXRlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDQxNzAKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBbGwgbmV3IHRhcmdldHMgYXJl
IG5vdyBhdXRvbWF0aWNhbGx5IHBhdXNlZCBvbiBzdGFydC4gRm9yIHN1Y2ggcHJvdmlzaW9uYWwg
dGFyZ2V0cyB0YXJnZXQKKyAgICAgICAgbWFuYWdlciB3aWxsIHJ1biByZWd1bGFyIGluaXRpbGl6
YXRpb24gY29kZSAoZW5hYmxlIGFnZW50cyBldGMuKSBhbmQgdGhlbiByZXN1bWUgbG9hZGluZyBv
ZgorICAgICAgICB0aGUgdGFyZ2V0LiBSZXNwb25zZXMgYW5kIGV2ZW50cyBmcm9tIHRoZSB0YXJn
ZXQgYXJlIGRlZmZlcnJlZCB1bnRpbCB0aGUgdGFyZ2V0IGlzIGNvbW1pdHRlZAorICAgICAgICBh
bmQgYmVjb21lcyBjdXJyZW50IG1haW4gdGFyZ2V0LiBXaGVuIHRoZSB0YXJnZXQgbWFuYWdlciBy
ZWNlaXZlcyBldmVudCB0aGF0IHRoZSBwcm92aXNpb25hbAorICAgICAgICB0YXJnZXQgaGFzIGJl
ZW4gY29tbWl0dGVkIGFsbCBhY2N1bXVsYXRlZCBwcm90b2NvbCBtZXNzYWdlcyBhcmUgcmVwbGF5
ZWQgYW5kIGdvaW5nIGZvcndhcmQgYWxsCisgICAgICAgIG5ldyBtaXNzYWdlcyB3aWxsIGJlIGRp
c3BhdGNoZWQgYXMgdXN1YWwuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJz
L0NTU01hbmFnZXIuanM6CisgICAgICAgIChXSS5DU1NNYW5hZ2VyLnByb3RvdHlwZS5fcmVzb3Vy
Y2VDb250ZW50RGlkQ2hhbmdlLmFwcGx5U3R5bGVTaGVldENoYW5nZXMuc3R5bGVTaGVldEZvdW5k
KToKKyAgICAgICAgKFdJLkNTU01hbmFnZXIucHJvdG90eXBlLl9yZXNvdXJjZUNvbnRlbnREaWRD
aGFuZ2UuYXBwbHlTdHlsZVNoZWV0Q2hhbmdlcyk6CisgICAgICAgIChXSS5DU1NNYW5hZ2VyLnBy
b3RvdHlwZS5fcmVzb3VyY2VDb250ZW50RGlkQ2hhbmdlKToKKyAgICAgICAgKFdJLkNTU01hbmFn
ZXIucHJvdG90eXBlLl91cGRhdGVSZXNvdXJjZUNvbnRlbnQuZmV0Y2hlZFN0eWxlU2hlZXRDb250
ZW50KToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1RhcmdldE1hbmFnZXIu
anM6CisgICAgICAgIChXSS5UYXJnZXRNYW5hZ2VyKToKKyAgICAgICAgKFdJLlRhcmdldE1hbmFn
ZXIucHJvdG90eXBlLmNyZWF0ZU11bHRpcGxleGluZ0JhY2tlbmRUYXJnZXQpOgorICAgICAgICAo
V0kuVGFyZ2V0TWFuYWdlci5wcm90b3R5cGUudGFyZ2V0Q3JlYXRlZCk6CisgICAgICAgIChXSS5U
YXJnZXRNYW5hZ2VyLnByb3RvdHlwZS5kaWRDb21taXRQcm92aXNpb25hbFRhcmdldCk6CisgICAg
ICAgIChXSS5UYXJnZXRNYW5hZ2VyLnByb3RvdHlwZS5kaXNwYXRjaE1lc3NhZ2VGcm9tVGFyZ2V0
KToKKyAgICAgICAgKFdJLlRhcmdldE1hbmFnZXIucHJvdG90eXBlLl9jb25uZWN0VG9UYXJnZXQp
OgorICAgICAgICAoV0kuVGFyZ2V0TWFuYWdlci5wcm90b3R5cGUuX2Rlc3Ryb3lUYXJnZXQpOgor
ICAgICAgICAoV0kuVGFyZ2V0TWFuYWdlci5wcm90b3R5cGUuX2NyZWF0ZVRhcmdldCk6CisgICAg
ICAgIChXSS5UYXJnZXRNYW5hZ2VyLnByb3RvdHlwZS5fY2hlY2tBbmRIYW5kbGVQYWdlVGFyZ2V0
VHJhbnNpdGlvbik6CisgICAgICAgIChXSS5UYXJnZXRNYW5hZ2VyLnByb3RvdHlwZS5fY2hlY2tB
bmRIYW5kbGVQYWdlVGFyZ2V0VGVybWluYXRpb24pOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2Uv
TW9kZWxzL1NvdXJjZUNvZGUuanM6CisgICAgICAgIChXSS5Tb3VyY2VDb2RlLnByb3RvdHlwZS5n
ZXQgY3VycmVudFJldmlzaW9uKToKKyAgICAgICAgKFdJLlNvdXJjZUNvZGUucHJvdG90eXBlLmdl
dCBlZGl0YWJsZVJldmlzaW9uKToKKyAgICAgICAgKFdJLlNvdXJjZUNvZGUucHJvdG90eXBlLmdl
dCBjb250ZW50KToKKyAgICAgICAgKFdJLlNvdXJjZUNvZGUucHJvdG90eXBlLnJldmlzaW9uQ29u
dGVudERpZENoYW5nZSk6CisgICAgICAgICogVXNlckludGVyZmFjZS9Qcm90b2NvbC9Db25uZWN0
aW9uLmpzOgorICAgICAgICAoSW5zcGVjdG9yQmFja2VuZC5Db25uZWN0aW9uKToKKyAgICAgICAg
KEluc3BlY3RvckJhY2tlbmQuQ29ubmVjdGlvbi5wcm90b3R5cGUuYWRkUHJvdmlzaW9uYWxNZXNz
YWdlKToKKyAgICAgICAgKEluc3BlY3RvckJhY2tlbmQuQ29ubmVjdGlvbi5wcm90b3R5cGUuZGlz
cGF0Y2hQcm92aXNpb25hbE1lc3NhZ2VzKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Byb3Rv
Y29sL1BhZ2VUYXJnZXQuanM6CisgICAgICAgIChXSS5QYWdlVGFyZ2V0KToKKyAgICAgICAgKiBV
c2VySW50ZXJmYWNlL1Byb3RvY29sL1RhcmdldC5qczoKKyAgICAgICAgKFdJLlRhcmdldCk6Cisg
ICAgICAgIChXSS5UYXJnZXQucHJvdG90eXBlLmdldCBpc1Byb3Zpc2lvbmFsKToKKyAgICAgICAg
KFdJLlRhcmdldC5wcm90b3R5cGUuc2V0IGlzUHJvdmlzaW9uYWwpOgorICAgICAgICAqIFVzZXJJ
bnRlcmZhY2UvVmlld3MvRm9udFJlc291cmNlQ29udGVudFZpZXcuanM6CisgICAgICAgIChXSS5G
b250UmVzb3VyY2VDb250ZW50Vmlldy5wcm90b3R5cGUuZHJvcFpvbmVIYW5kbGVEcm9wKToKKyAg
ICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0ltYWdlUmVzb3VyY2VDb250ZW50Vmlldy5qczoK
KyAgICAgICAgKFdJLkltYWdlUmVzb3VyY2VDb250ZW50Vmlldy5wcm90b3R5cGUuZHJvcFpvbmVI
YW5kbGVEcm9wKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL05hdmlnYXRpb25TaWRl
YmFyUGFuZWwuanM6CisgICAgICAgIChXSS5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLnByb3RvdHlw
ZS5fY2hlY2tFbGVtZW50c0ZvclBlbmRpbmdWaWV3U3RhdGVDb29raWUudHJlZUVsZW1lbnRNYXRj
aGVzQ29va2llKToKKyAgICAgICAgKFdJLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwucHJvdG90eXBl
Ll9jaGVja0VsZW1lbnRzRm9yUGVuZGluZ1ZpZXdTdGF0ZUNvb2tpZSk6CisgICAgICAgICogVXNl
ckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZUNvbnRlbnRWaWV3LmpzOgorICAgICAgICAoV0kuUmVz
b3VyY2VDb250ZW50Vmlldy5wcm90b3R5cGUuX2NvbnRlbnRBdmFpbGFibGUpOgorICAgICAgICAo
V0kuUmVzb3VyY2VDb250ZW50Vmlldy5wcm90b3R5cGUuX2hhbmRsZUltcG9ydExvY2FsUmVzb3Vy
Y2VPdmVycmlkZSk6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9TY3JpcHRDb250ZW50
Vmlldy5qczoKKyAgICAgICAgKFdJLlNjcmlwdENvbnRlbnRWaWV3LnByb3RvdHlwZS5faGFuZGxl
VGV4dEVkaXRvckNvbnRlbnREaWRDaGFuZ2UpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmll
d3MvVGV4dFJlc291cmNlQ29udGVudFZpZXcuanM6CisgICAgICAgIChXSS5UZXh0UmVzb3VyY2VD
b250ZW50Vmlldy5wcm90b3R5cGUuX3RleHRFZGl0b3JDb250ZW50RGlkQ2hhbmdlKToKKwogMjAx
OS0xMi0wMiAgTmlraXRhIFZhc2lseWV2ICA8bnZhc2lseWV2QGFwcGxlLmNvbT4KIAogICAgICAg
ICBXZWIgSW5zcGVjdG9yOiBQcm92aWRlIFVJIHRvIGNvbnZlcnQgYmV0d2VlbiBzUkdCIGFuZCBw
MyBjb2xvciBzcGFjZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNzQ1MjYyYjY3NzU2NDI4NTM3ZjBmN2Q3YjQ0MmYy
ZjhjZTQ4MWRmNC4uMzViODA4ZWM3NzNhODI1OGRjYTNhYzhiYzRiYmZmNmQ5ZDA5ZWZhMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwzNSBAQAorMjAxOS0xMS0xMyAgWXVyeSBTZW1pa2hhdHNreSAgPHl1
cnlzQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBhbGxvdyBpbnNwZWN0
b3IgdG8gcGF1c2UgcHJvdmlzaW9uYWwgcGFnZSBsb2FkIGFuZCByZXN0b3JlIGl0cyBzdGF0ZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0MTcwCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUHJvdmlzaW9u
YWwgcGFnZSBsb2FkaW5nIGNhbiBiZSBkZWZmZXJlZCBpZiBpbnNwZWN0b3IgZnJvbnQtZW5kIGlz
IGNvbm5lY3RlZC4gVGhpcworICAgICAgICBhbGxvd3MgdG8gY29uZmlndXJlIGluc3BlY3RvciBi
YWNrZW5kIGluIHRoZSBwcm92aXNpb25hbCBwYWdlIGJlZm9yZSBsb2FkIHJlcXVlc3QKKyAgICAg
ICAgaXMgc2VudC4gSWYgaW5zcGVjdG9yIGZyb250LWVuZCBpcyBub3QgY29ubmVjdGVkIHByb3Zp
c2lvbmFsIGxvYWRpbmcgd2lsbCBjb25pdGludWUKKyAgICAgICAgZXhhY3RseSBhcyBiZWZvcmUu
CisKKyAgICAgICAgVGVzdHM6IGh0dHAvdGVzdHMvaW5zcGVjdG9yL3RhcmdldC9wYXVzZS1vbi1p
bmxpbmUtZGVidWdnZXItc3RhdGVtZW50Lmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMv
aW5zcGVjdG9yL3RhcmdldC9wcm92aXNpb25hbC1sb2FkLWNhbmNlbHMtcHJldmlvdXMtbG9hZC5o
dG1sCisKKyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yVGFyZ2V0UHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpJbnNwZWN0b3JUYXJnZXRQcm94eTo6ZGlzY29ubmVjdCk6CisgICAgICAg
IChXZWJLaXQ6Okluc3BlY3RvclRhcmdldFByb3h5OjpyZXN1bWVUYXJnZXQpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9JbnNwZWN0b3JUYXJnZXRQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Q
cm92aXNpb25hbFBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlByb3Zpc2lvbmFsUGFn
ZVByb3h5OjpQcm92aXNpb25hbFBhZ2VQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlByb3Zpc2lv
bmFsUGFnZVByb3h5OjpyZXN1bWVMb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6UHJvdmlzaW9u
YWxQYWdlUHJveHk6OnJ1bldoZW5Mb2FkaW5nUmVzdW1lZCk6CisgICAgICAgICogVUlQcm9jZXNz
L1Byb3Zpc2lvbmFsUGFnZVByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OlByb3Zpc2lvbmFsUGFn
ZVByb3h5OjpzaG91bGRQYXVzZUxvYWRpbmcgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VJ
bnNwZWN0b3JDb250cm9sbGVyOjpkaWRDcmVhdGVQcm92aXNpb25hbFBhZ2UpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlci5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNv
bnRpbnVlTmF2aWdhdGlvbkluTmV3UHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6c3BlZWNoU3ludGhlc2lzUmVzdW1lKToKKwogMjAxOS0xMi0wMyAgQ2hyaXMgRHVtZXog
IDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFBhZ2VDb25maWd1cmF0aW9uOjphbHRlcm5h
dGl2ZVRleHRDbGllbnQgc2hvdWxkIHVzZSBhIHNtYXJ0IHBvaW50ZXIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGFyZ2V0LmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRhcmdldC5oCmluZGV4IGE5ZjA0Yjhh
MGM5YWZhZWVhNGZlOGMwYTRkMDdkODIzMGE5YzM1NjAuLmZjZjNmMjg5MjIwYTY3YjQzMzYwMTA2
NWE2OTRmMjIwMzAzNTIyMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yVGFyZ2V0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JUYXJnZXQuaApAQCAtNDcsMTEgKzQ3LDIzIEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIEluc3BlY3RvclRhcmdldFR5cGUgdHlwZSgpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1
YWwgYm9vbCBpc1Byb3Zpc2lvbmFsKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29s
IGlzUGF1c2VkKCkgY29uc3QgeyByZXR1cm4gbV9pc1BhdXNlZDsgfQorICAgIHZvaWQgc2V0UGF1
c2VkKGJvb2wgcGF1c2VkKQorICAgIHsKKyAgICAgICAgbV9pc1BhdXNlZCA9IHBhdXNlZDsKKyAg
ICAgICAgaWYgKCFtX2lzUGF1c2VkKQorICAgICAgICAgICAgcmVzdW1lVGFyZ2V0KCk7CisgICAg
fQogCiAgICAgLy8gQ29ubmVjdGlvbiBtYW5hZ2VtZW50LgogICAgIHZpcnR1YWwgdm9pZCBjb25u
ZWN0KEZyb250ZW5kQ2hhbm5lbDo6Q29ubmVjdGlvblR5cGUpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgZGlzY29ubmVjdCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2VuZE1lc3NhZ2VUb1Rhcmdl
dEJhY2tlbmQoY29uc3QgU3RyaW5nJikgPSAwOworCitwcml2YXRlOgorICAgIHZpcnR1YWwgdm9p
ZCByZXN1bWVUYXJnZXQoKSB7IH0KKworICAgIGJvb2wgbV9pc1BhdXNlZCB7IGZhbHNlIH07CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRhcmdldEFnZW50LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRhcmdldEFnZW50LmNw
cAppbmRleCAxMTc3MDkwZmMxODYyM2VmNTAxYzlhZDRjMzM4OWJjMmRhOTEwNzFlLi5hZThhNGY3
OTU5ZGM1MmVmNWEwZjNiYTZjZDVlMzJhMWRkMGMzMzg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUYXJnZXRBZ2VudC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGFyZ2V0
QWdlbnQuY3BwCkBAIC01Miw2ICs1MiwyOCBAQCB2b2lkIEluc3BlY3RvclRhcmdldEFnZW50Ojp3
aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChEaXNjb25uZWN0UmVhc29uKQogICAgIGRpc2Nv
bm5lY3RGcm9tVGFyZ2V0cygpOwogCiAgICAgbV9pc0Nvbm5lY3RlZCA9IGZhbHNlOworICAgIG1f
c2hvdWxkUGF1c2VPblN0YXJ0ID0gZmFsc2U7Cit9CisKK3ZvaWQgSW5zcGVjdG9yVGFyZ2V0QWdl
bnQ6OnNldFBhdXNlT25TdGFydChFcnJvclN0cmluZyYsIGJvb2wgcGF1c2VPblN0YXJ0KQorewor
ICAgIG1fc2hvdWxkUGF1c2VPblN0YXJ0ID0gcGF1c2VPblN0YXJ0OworfQorCit2b2lkIEluc3Bl
Y3RvclRhcmdldEFnZW50OjpyZXN1bWUoRXJyb3JTdHJpbmcmIGVycm9yLCBjb25zdCBTdHJpbmcm
IHRhcmdldElkKQoreworICAgIGF1dG8qIHRhcmdldCA9IG1fdGFyZ2V0cy5nZXQodGFyZ2V0SWQp
OworICAgIGlmICghdGFyZ2V0KSB7CisgICAgICAgIGVycm9yID0gIk1pc3NpbmcgdGFyZ2V0IGZv
ciBnaXZlbiB0YXJnZXRJZCJfczsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICgh
dGFyZ2V0LT5pc1BhdXNlZCgpKSB7CisgICAgICAgIGVycm9yID0gIlRhcmdldCBmb3IgZ2l2ZW4g
dGFyZ2V0SWQgaXMgbm90IHBhdXNlZCJfczsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IHRhcmdldC0+c2V0UGF1c2VkKGZhbHNlKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JUYXJnZXRBZ2Vu
dDo6c2VuZE1lc3NhZ2VUb1RhcmdldChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0
cmluZyYgdGFyZ2V0SWQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKQEAgLTk1LDYgKzExNyw4IEBA
IHN0YXRpYyBSZWY8UHJvdG9jb2w6OlRhcmdldDo6VGFyZ2V0SW5mbz4gYnVpbGRUYXJnZXRJbmZv
T2JqZWN0KGNvbnN0IEluc3BlY3RvclRhCiAgICAgICAgIC5yZWxlYXNlKCk7CiAgICAgaWYgKHRh
cmdldC5pc1Byb3Zpc2lvbmFsKCkpCiAgICAgICAgIHJlc3VsdC0+c2V0SXNQcm92aXNpb25hbCh0
cnVlKTsKKyAgICBpZiAodGFyZ2V0LmlzUGF1c2VkKCkpCisgICAgICAgIHJlc3VsdC0+c2V0SXNQ
YXVzZWQodHJ1ZSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMTA2LDYgKzEzMCw3IEBA
IHZvaWQgSW5zcGVjdG9yVGFyZ2V0QWdlbnQ6OnRhcmdldENyZWF0ZWQoSW5zcGVjdG9yVGFyZ2V0
JiB0YXJnZXQpCiAgICAgaWYgKCFtX2lzQ29ubmVjdGVkKQogICAgICAgICByZXR1cm47CiAKKyAg
ICB0YXJnZXQuc2V0UGF1c2VkKG1fc2hvdWxkUGF1c2VPblN0YXJ0KTsKICAgICB0YXJnZXQuY29u
bmVjdChjb25uZWN0aW9uVHlwZSgpKTsKIAogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT50YXJn
ZXRDcmVhdGVkKGJ1aWxkVGFyZ2V0SW5mb09iamVjdCh0YXJnZXQpKTsKQEAgLTExOCw4ICsxNDMs
NiBAQCB2b2lkIEluc3BlY3RvclRhcmdldEFnZW50Ojp0YXJnZXREZXN0cm95ZWQoSW5zcGVjdG9y
VGFyZ2V0JiB0YXJnZXQpCiAgICAgaWYgKCFtX2lzQ29ubmVjdGVkKQogICAgICAgICByZXR1cm47
CiAKLSAgICB0YXJnZXQuZGlzY29ubmVjdCgpOwotCiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXIt
PnRhcmdldERlc3Ryb3llZCh0YXJnZXQuaWRlbnRpZmllcigpKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGFyZ2V0QWdl
bnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRh
cmdldEFnZW50LmgKaW5kZXggMzhjYjMxODk4NmIzMWM0ZGVkMTliYTliZWFlNzg1NWQyYjU0YzIz
YS4uMWViN2FiYjJmYTIxZDdhOGVjMDgzMzE2MGY1M2U1YzUyM2VjNDMxNyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGFyZ2V0QWdl
bnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JUYXJnZXRBZ2VudC5oCkBAIC00OSw2ICs0OSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHdpbGxE
ZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKERpc2Nvbm5lY3RSZWFzb24pIGZpbmFsOwogCiAgICAg
Ly8gVGFyZ2V0QmFja2VuZERpc3BhdGNoZXJIYW5kbGVyCisgICAgdm9pZCBzZXRQYXVzZU9uU3Rh
cnQoRXJyb3JTdHJpbmcmLCBib29sIHBhdXNlT25TdGFydCkgb3ZlcnJpZGU7CisgICAgdm9pZCBy
ZXN1bWUoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHRhcmdldElkKSBvdmVycmlkZTsKICAg
ICB2b2lkIHNlbmRNZXNzYWdlVG9UYXJnZXQoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHRh
cmdldElkLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpIGZpbmFsOwogCiAgICAgLy8gVGFyZ2V0IGxp
ZmVjeWNsZS4KQEAgLTcwLDYgKzcyLDcgQEAgcHJpdmF0ZToKICAgICBSZWY8VGFyZ2V0QmFja2Vu
ZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CiAgICAgSGFzaE1hcDxTdHJpbmcsIElu
c3BlY3RvclRhcmdldCo+IG1fdGFyZ2V0czsKICAgICBib29sIG1faXNDb25uZWN0ZWQgeyBmYWxz
ZSB9OworICAgIGJvb2wgbV9zaG91bGRQYXVzZU9uU3RhcnQgeyBmYWxzZSB9OwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgSW5zcGVjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3Byb3RvY29sL1RhcmdldC5qc29uIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9wcm90b2NvbC9UYXJnZXQuanNvbgppbmRleCAyNDBjZDQyZTY3ZTMyNTBlNDM0YzBi
ZjZmOWQxNjE2ODUwNWE4YzIyLi41MjkyMGNkZWQyNGE5YzZiMGVmNmZiNGU1MTg2NjQ5NTVkYjRm
OWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29s
L1RhcmdldC5qc29uCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9j
b2wvVGFyZ2V0Lmpzb24KQEAgLTEwLDExICsxMCwyNiBAQAogICAgICAgICAgICAgInByb3BlcnRp
ZXMiOiBbCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ0YXJnZXRJZCIsICJ0eXBlIjogInN0
cmluZyIsICJkZXNjcmlwdGlvbiI6ICJVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHRhcmdldC4i
IH0sCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ0eXBlIiwgInR5cGUiOiAic3RyaW5nIiwg
ImVudW0iOiBbInBhZ2UiLCAic2VydmljZS13b3JrZXIiLCAid29ya2VyIl0gfSwKLSAgICAgICAg
ICAgICAgICB7ICJuYW1lIjogImlzUHJvdmlzaW9uYWwiLCAidHlwZSI6ICJib29sZWFuIiwgIm9w
dGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIlRydWUgdmFsdWUgaW5kaWNhdGVzIHRoYXQg
dGhpcyBpcyBhIHByb3Zpc2lvbmFsIHBhZ2UgdGFyZ2V0IGkuZS4gU3VjaCB0YXJnZXQgbWF5IGJl
IGNyZWF0ZWQgd2hlbiBjdXJyZW50IHBhZ2Ugc3RhcnRzIGNyb3NzLW9yaWdpbiBuYXZpZ2F0aW9u
LiBFdmVudHVhbGx5IGVhY2ggcHJvdmlzaW9uYWwgdGFyZ2V0IGlzIGVpdGhlciBjb21taXR0ZWQg
YW5kIHN3YXBzIHdpdGggdGhlIGN1cnJlbnQgdGFyZ2V0IG9yIGdldHMgZGVzdHJveWVkLCBlLmcu
IGluIGNhc2Ugb2YgbG9hZCByZXF1ZXN0IGZhaWx1cmUuIiB9CisgICAgICAgICAgICAgICAgeyAi
bmFtZSI6ICJpc1Byb3Zpc2lvbmFsIiwgInR5cGUiOiAiYm9vbGVhbiIsICJvcHRpb25hbCI6IHRy
dWUsICJkZXNjcmlwdGlvbiI6ICJXaGV0aGVyIHRoaXMgaXMgYSBwcm92aXNpb25hbCBwYWdlIHRh
cmdldC4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJpc1BhdXNlZCIsICJ0eXBlIjog
ImJvb2xlYW4iLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiV2hldGhlciB0aGUg
dGFyZ2V0IGlzIHBhdXNlZCBvbiBzdGFydCBhbmQgaGFzIHRvIGJlIGV4cGxpY2l0ZWx5IHJlc3Vt
ZWQgYnkgaW5zcGVjdG9yLiIgfQogICAgICAgICAgICAgXQogICAgICAgICB9CiAgICAgXSwKICAg
ICAiY29tbWFuZHMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogInNldFBhdXNl
T25TdGFydCIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiSWYgc2V0IHRvIHRydWUsIG5l
dyB0YXJnZXRzIHdpbGwgYmUgcGF1c2VkIG9uIHN0YXJ0IHdhaXRpbmcgZm9yIHJlc3VtZSBjb21t
YW5kLiBPdGhlciBjb21tYW5kcyBjYW4gYmUgZGlzcGF0Y2hlZCBvbiB0aGUgdGFyZ2V0IGJlZm9y
ZSBpdCBpcyByZXN1bWVkLiIsCisgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAg
ICAgICAgICB7ICJuYW1lIjogInBhdXNlT25TdGFydCIsICJ0eXBlIjogImJvb2xlYW4iLCAiZGVz
Y3JpcHRpb24iOiAiSWYgc2V0IHRvIHRydWUsIG5ldyB0YXJnZXRzIHdpbGwgYmUgcGF1c2VkIG9u
IHN0YXJ0IHdhaXRpbmcgZm9yIHJlc3VtZSBjb21tYW5kLiIgfQorICAgICAgICAgICAgXQorICAg
ICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJyZXN1bWUiLAorICAgICAg
ICAgICAgImRlc2NyaXB0aW9uIjogIldpbGwgcmVzdW1lIHRhcmdldCBpZiBpdCB3YXMgcGF1c2Vk
IG9uIHN0YXJ0LiIsCisgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogInRhcmdldElkIiwgInR5cGUiOiAic3RyaW5nIiB9CisgICAgICAgICAgICBd
CisgICAgICAgIH0sCiAgICAgICAgIHsKICAgICAgICAgICAgICJuYW1lIjogInNlbmRNZXNzYWdl
VG9UYXJnZXQiLAogICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlNlbmQgYW4gSW5zcGVjdG9y
IFByb3RvY29sIG1lc3NhZ2UgdG8gYmUgZGlzcGF0Y2hlZCB0byBhIFRhcmdldCdzIGFnZW50cy4i
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5k
SG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0
LmNwcAppbmRleCBlNzIwNGNiMzM1M2U5MjUxMDAwZmE1MjJhMjQ3NzhhYmI2NjIxN2I1Li5jMjU3
NjZlMTEwYTljYTc3N2Q2NjRlYjg3Yzg4MmVmNTkxN2YzYmQzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcApAQCAtMzcwLDYgKzM3
MCw3IEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRIb3N0OjpjbG9zZShjb25zdCBTdHJpbmcmKQog
CiB2b2lkIEluc3BlY3RvckZyb250ZW5kSG9zdDo6c2VuZE1lc3NhZ2VUb0JhY2tlbmQoY29uc3Qg
U3RyaW5nJiBtZXNzYWdlKQogeworICAgIGZwcmludGYoc3RkZXJyLCAic2VuZE1lc3NhZ2VUb0Jh
Y2tlbmQgJXNcbiIsIG1lc3NhZ2UubGVmdCgyMDApLmFzY2lpKCkuZGF0YSgpKTsKICAgICBpZiAo
bV9jbGllbnQpCiAgICAgICAgIG1fY2xpZW50LT5zZW5kTWVzc2FnZVRvQmFja2VuZChtZXNzYWdl
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Nv
bnRyb2xsZXJzL1RhcmdldE1hbmFnZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Db250cm9sbGVycy9UYXJnZXRNYW5hZ2VyLmpzCmluZGV4IDE0OTUzMWQ4NTg3Mzky
MmJjMGNiNmU5MWQyNmI3M2MxYTIxNmY4NTIuLjZjNzY2YjNkNGU2Yjc5MjMxYjkxZWVjYWExYzg1
M2JhMWNkYmExYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL0NvbnRyb2xsZXJzL1RhcmdldE1hbmFnZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvVGFyZ2V0TWFuYWdlci5qcwpAQCAtMzMsOSAr
MzMsNiBAQCBXSS5UYXJnZXRNYW5hZ2VyID0gY2xhc3MgVGFyZ2V0TWFuYWdlciBleHRlbmRzIFdJ
Lk9iamVjdAogICAgICAgICB0aGlzLl9jYWNoZWRUYXJnZXRzTGlzdCA9IG51bGw7CiAgICAgICAg
IHRoaXMuX3NlZW5QYWdlVGFyZ2V0ID0gZmFsc2U7CiAgICAgICAgIHRoaXMuX3RyYW5zaXRpb25U
aW1lb3V0SWRlbnRpZmllciA9IHVuZGVmaW5lZDsKLQotICAgICAgICB0aGlzLl9wcm92aXNpb25h
bFRhcmdldEluZm9zID0gbmV3IE1hcDsKLSAgICAgICAgdGhpcy5fc3dhcHBlZFRhcmdldElkcyA9
IG5ldyBTZXQ7CiAgICAgfQogCiAgICAgLy8gUHVibGljCkBAIC0xMjAsOTEgKzExNyw2NiBAQCBX
SS5UYXJnZXRNYW5hZ2VyID0gY2xhc3MgVGFyZ2V0TWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAog
CiAgICAgdGFyZ2V0Q3JlYXRlZChwYXJlbnRUYXJnZXQsIHRhcmdldEluZm8pCiAgICAgewotICAg
ICAgICB0aGlzLl9jb25uZWN0VG9UYXJnZXQocGFyZW50VGFyZ2V0LCB0YXJnZXRJbmZvKTsKLQot
ICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5UYXJnZXRNYW5hZ2VyLkV2
ZW50LlRhcmdldENyZWF0ZWQsIHt0YXJnZXRJbmZvfSk7CisgICAgICAgIGxldCBjb25uZWN0aW9u
ID0gbmV3IEluc3BlY3RvckJhY2tlbmQuVGFyZ2V0Q29ubmVjdGlvbihwYXJlbnRUYXJnZXQsIHRh
cmdldEluZm8udGFyZ2V0SWQpOworICAgICAgICBsZXQgc3ViVGFyZ2V0ID0gdGhpcy5fY3JlYXRl
VGFyZ2V0KHBhcmVudFRhcmdldCwgdGFyZ2V0SW5mbywgY29ubmVjdGlvbik7CisgICAgICAgIHRo
aXMuX2NoZWNrQW5kSGFuZGxlUGFnZVRhcmdldFRyYW5zaXRpb24oc3ViVGFyZ2V0KTsKKyAgICAg
ICAgc3ViVGFyZ2V0LmluaXRpYWxpemUoKTsKKyAgICAgICAgdGhpcy5hZGRUYXJnZXQoc3ViVGFy
Z2V0KTsKICAgICB9CiAKICAgICBkaWRDb21taXRQcm92aXNpb25hbFRhcmdldChwYXJlbnRUYXJn
ZXQsIHByZXZpb3VzVGFyZ2V0SWQsIG5ld1RhcmdldElkKQogICAgIHsKLSAgICAgICAgdGhpcy5f
ZGVzdHJveVRhcmdldChwcmV2aW91c1RhcmdldElkKTsKLSAgICAgICAgbGV0IHRhcmdldEluZm8g
PSB0aGlzLl9wcm92aXNpb25hbFRhcmdldEluZm9zLmdldChuZXdUYXJnZXRJZCk7Ci0gICAgICAg
IGNvbnNvbGUuYXNzZXJ0KHRhcmdldEluZm8pOwotICAgICAgICB0YXJnZXRJbmZvLmlzUHJvdmlz
aW9uYWwgPSBmYWxzZTsKLSAgICAgICAgdGhpcy5fcHJvdmlzaW9uYWxUYXJnZXRJbmZvcy5kZWxl
dGUobmV3VGFyZ2V0SWQpOwotICAgICAgICB0aGlzLl9jb25uZWN0VG9UYXJnZXQocGFyZW50VGFy
Z2V0LCB0YXJnZXRJbmZvKTsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoIXRoaXMuX3N3YXBwZWRU
YXJnZXRJZHMuaGFzKHByZXZpb3VzVGFyZ2V0SWQpKTsKLSAgICAgICAgdGhpcy5fc3dhcHBlZFRh
cmdldElkcy5hZGQocHJldmlvdXNUYXJnZXRJZCk7Ci0KLSAgICAgICAgdGhpcy5kaXNwYXRjaEV2
ZW50VG9MaXN0ZW5lcnMoV0kuVGFyZ2V0TWFuYWdlci5FdmVudC5EaWRDb21taXRQcm92aXNpb25h
bFRhcmdldCwge3ByZXZpb3VzVGFyZ2V0SWQsIHRhcmdldEluZm99KTsKKyAgICAgICAgdGhpcy50
YXJnZXREZXN0cm95ZWQocHJldmlvdXNUYXJnZXRJZCk7CisgICAgICAgIGxldCB0YXJnZXQgPSB0
aGlzLl90YXJnZXRzLmdldChuZXdUYXJnZXRJZCk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRh
cmdldCk7CisgICAgICAgIGlmICghdGFyZ2V0KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgIHRhcmdldC5kaWRDb21taXRQcm92aXNpb25hbFRhcmdldCgpOworICAgICAgICB0aGlzLl9j
aGVja0FuZEhhbmRsZVBhZ2VUYXJnZXRUcmFuc2l0aW9uKHRhcmdldCk7CisgICAgICAgIHRhcmdl
dC5jb25uZWN0aW9uLmRpc3BhdGNoUHJvdmlzaW9uYWxNZXNzYWdlcygpOworCisgICAgICAgIHRo
aXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLlRhcmdldE1hbmFnZXIuRXZlbnQuRGlkQ29t
bWl0UHJvdmlzaW9uYWxUYXJnZXQsIHtwcmV2aW91c1RhcmdldElkLCB0YXJnZXR9KTsKICAgICB9
CiAKICAgICB0YXJnZXREZXN0cm95ZWQodGFyZ2V0SWQpCiAgICAgewotICAgICAgICB0aGlzLl9k
ZXN0cm95VGFyZ2V0KHRhcmdldElkKTsKKyAgICAgICAgbGV0IHRhcmdldCA9IHRoaXMuX3Rhcmdl
dHMuZ2V0KHRhcmdldElkKTsKKyAgICAgICAgaWYgKCF0YXJnZXQpCisgICAgICAgICAgICByZXR1
cm47CiAKLSAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuVGFyZ2V0TWFu
YWdlci5FdmVudC5UYXJnZXREZXN0cm95ZWQsIHt0YXJnZXRJZH0pOworICAgICAgICB0aGlzLl9j
aGVja0FuZEhhbmRsZVBhZ2VUYXJnZXRUZXJtaW5hdGlvbih0YXJnZXQpOworICAgICAgICB0aGlz
LnJlbW92ZVRhcmdldCh0YXJnZXQpOwogICAgIH0KIAogICAgIGRpc3BhdGNoTWVzc2FnZUZyb21U
YXJnZXQodGFyZ2V0SWQsIG1lc3NhZ2UpCiAgICAgewotICAgICAgICBpZiAodGhpcy5fcHJvdmlz
aW9uYWxUYXJnZXRJbmZvcy5oYXModGFyZ2V0SWQpKQotICAgICAgICAgICAgcmV0dXJuOwotCiAg
ICAgICAgIGxldCB0YXJnZXQgPSB0aGlzLl90YXJnZXRzLmdldCh0YXJnZXRJZCk7CiAgICAgICAg
IGNvbnNvbGUuYXNzZXJ0KHRhcmdldCk7CiAgICAgICAgIGlmICghdGFyZ2V0KQogICAgICAgICAg
ICAgcmV0dXJuOwogCi0gICAgICAgIHRhcmdldC5jb25uZWN0aW9uLmRpc3BhdGNoKG1lc3NhZ2Up
OworICAgICAgICBpZiAodGFyZ2V0LmlzUHJvdmlzaW9uYWwpCisgICAgICAgICAgICB0YXJnZXQu
Y29ubmVjdGlvbi5hZGRQcm92aXNpb25hbE1lc3NhZ2UobWVzc2FnZSk7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIHRhcmdldC5jb25uZWN0aW9uLmRpc3BhdGNoKG1lc3NhZ2UpOwogICAgIH0K
IAogICAgIC8vIFByaXZhdGUKIAotICAgIF9jb25uZWN0VG9UYXJnZXQocGFyZW50VGFyZ2V0LCB0
YXJnZXRJbmZvKQotICAgIHsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoIXRoaXMuX3Byb3Zpc2lv
bmFsVGFyZ2V0SW5mb3MuaGFzKHRhcmdldEluZm8udGFyZ2V0SWQpKTsKLQotICAgICAgICAvLyBD
T01QQVRJQklMSVRZIChpT1MgMTMuMCk6IGBUYXJnZXQuVGFyZ2V0SW5mby5pc1Byb3Zpc2lvbmFs
YCBkaWQgbm90IGV4aXN0IHlldC4KLSAgICAgICAgaWYgKHRhcmdldEluZm8uaXNQcm92aXNpb25h
bCkgewotICAgICAgICAgICAgdGhpcy5fcHJvdmlzaW9uYWxUYXJnZXRJbmZvcy5zZXQodGFyZ2V0
SW5mby50YXJnZXRJZCwgdGFyZ2V0SW5mbyk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IH0KLQotICAgICAgICBjb25zb2xlLmFzc2VydChwYXJlbnRUYXJnZXQuaGFzQ29tbWFuZCgiVGFy
Z2V0LnNlbmRNZXNzYWdlVG9UYXJnZXQiKSk7Ci0gICAgICAgIGxldCBjb25uZWN0aW9uID0gbmV3
IEluc3BlY3RvckJhY2tlbmQuVGFyZ2V0Q29ubmVjdGlvbjsKLSAgICAgICAgbGV0IHN1YlRhcmdl
dCA9IHRoaXMuX2NyZWF0ZVRhcmdldChwYXJlbnRUYXJnZXQsIHRhcmdldEluZm8sIGNvbm5lY3Rp
b24pOwotICAgICAgICB0aGlzLl9jaGVja0FuZEhhbmRsZVBhZ2VUYXJnZXRUcmFuc2l0aW9uKHN1
YlRhcmdldCk7Ci0gICAgICAgIHN1YlRhcmdldC5pbml0aWFsaXplKCk7Ci0KLSAgICAgICAgdGhp
cy5hZGRUYXJnZXQoc3ViVGFyZ2V0KTsKLSAgICB9Ci0KLSAgICBfZGVzdHJveVRhcmdldCh0YXJn
ZXRJZCkKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9wcm92aXNpb25hbFRhcmdldEluZm9zLmRl
bGV0ZSh0YXJnZXRJZCkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgaWYgKHRoaXMu
X3N3YXBwZWRUYXJnZXRJZHMuZGVsZXRlKHRhcmdldElkKSkKLSAgICAgICAgICAgIHJldHVybjsK
LQotICAgICAgICBsZXQgdGFyZ2V0ID0gdGhpcy5fdGFyZ2V0cy5nZXQodGFyZ2V0SWQpOwotICAg
ICAgICB0aGlzLl9jaGVja0FuZEhhbmRsZVBhZ2VUYXJnZXRUZXJtaW5hdGlvbih0YXJnZXQpOwot
ICAgICAgICB0aGlzLnJlbW92ZVRhcmdldCh0YXJnZXQpOwotICAgIH0KLQogICAgIF9jcmVhdGVU
YXJnZXQocGFyZW50VGFyZ2V0LCB0YXJnZXRJbmZvLCBjb25uZWN0aW9uKQogICAgIHsKLSAgICAg
ICAgbGV0IHt0YXJnZXRJZCwgdHlwZX0gPSB0YXJnZXRJbmZvOworICAgICAgICAvLyBDT01QQVRJ
QklMSVRZIChpT1MgMTMuMCk6IGBUYXJnZXQuVGFyZ2V0SW5mby5pc1Byb3Zpc2lvbmFsYCBhbmQg
YFRhcmdldC5UYXJnZXRJbmZvLmlzUGF1c2VkYCBkaWQgbm90IGV4aXN0IHlldC4KKyAgICAgICAg
bGV0IHt0YXJnZXRJZCwgdHlwZSwgaXNQcm92aXNpb25hbCwgaXNQYXVzZWR9ID0gdGFyZ2V0SW5m
bzsKIAogICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICAgICAgY2FzZSBJbnNwZWN0b3JCYWNr
ZW5kLkVudW0uVGFyZ2V0LlRhcmdldEluZm9UeXBlLlBhZ2U6Ci0gICAgICAgICAgICByZXR1cm4g
bmV3IFdJLlBhZ2VUYXJnZXQocGFyZW50VGFyZ2V0LCB0YXJnZXRJZCwgV0kuVUlTdHJpbmcoIlBh
Z2UiKSwgY29ubmVjdGlvbik7CisgICAgICAgICAgICByZXR1cm4gbmV3IFdJLlBhZ2VUYXJnZXQo
cGFyZW50VGFyZ2V0LCB0YXJnZXRJZCwgV0kuVUlTdHJpbmcoIlBhZ2UiKSwgY29ubmVjdGlvbiwg
e2lzUHJvdmlzaW9uYWwsIGlzUGF1c2VkfSk7CiAgICAgICAgIGNhc2UgSW5zcGVjdG9yQmFja2Vu
ZC5FbnVtLlRhcmdldC5UYXJnZXRJbmZvVHlwZS5Xb3JrZXI6Ci0gICAgICAgICAgICByZXR1cm4g
bmV3IFdJLldvcmtlclRhcmdldChwYXJlbnRUYXJnZXQsIHRhcmdldElkLCBXSS5VSVN0cmluZygi
V29ya2VyIiksIGNvbm5lY3Rpb24pOworICAgICAgICAgICAgcmV0dXJuIG5ldyBXSS5Xb3JrZXJU
YXJnZXQocGFyZW50VGFyZ2V0LCB0YXJnZXRJZCwgV0kuVUlTdHJpbmcoIldvcmtlciIpLCBjb25u
ZWN0aW9uLCB7aXNQYXVzZWR9KTsKICAgICAgICAgY2FzZSAic2VydmljZXdvcmtlciI6IC8vIENP
TVBBVElCSUxJVFkgKGlPUyAxMyk6ICJzZXJ2aWNld29ya2VyIiB3YXMgcmVuYW1lZCB0byAic2Vy
dmljZS13b3JrZXIiLgogICAgICAgICBjYXNlIEluc3BlY3RvckJhY2tlbmQuRW51bS5UYXJnZXQu
VGFyZ2V0SW5mb1R5cGUuU2VydmljZVdvcmtlcjoKLSAgICAgICAgICAgIHJldHVybiBuZXcgV0ku
V29ya2VyVGFyZ2V0KHBhcmVudFRhcmdldCwgdGFyZ2V0SWQsIFdJLlVJU3RyaW5nKCJTZXJ2aWNl
V29ya2VyIiksIGNvbm5lY3Rpb24pOworICAgICAgICAgICAgcmV0dXJuIG5ldyBXSS5Xb3JrZXJU
YXJnZXQocGFyZW50VGFyZ2V0LCB0YXJnZXRJZCwgV0kuVUlTdHJpbmcoIlNlcnZpY2VXb3JrZXIi
KSwgY29ubmVjdGlvbiwge2lzUGF1c2VkfSk7CiAgICAgICAgIH0KIAogICAgICAgICB0aHJvdyAi
VW5rbm93biBUYXJnZXQgdHlwZTogIiArIHR5cGU7CkBAIC0yMTUsNiArMTg3LDkgQEAgV0kuVGFy
Z2V0TWFuYWdlciA9IGNsYXNzIFRhcmdldE1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAg
ICAgaWYgKHRhcmdldC50eXBlICE9PSBXSS5UYXJnZXRUeXBlLlBhZ2UpCiAgICAgICAgICAgICBy
ZXR1cm47CiAKKyAgICAgICAgaWYgKHRhcmdldC5pc1Byb3Zpc2lvbmFsKQorICAgICAgICAgICAg
cmV0dXJuOworCiAgICAgICAgIC8vIEZpcnN0IHBhZ2UgdGFyZ2V0LgogICAgICAgICBpZiAoIVdJ
LnBhZ2VUYXJnZXQgJiYgIXRoaXMuX3NlZW5QYWdlVGFyZ2V0KSB7CiAgICAgICAgICAgICB0aGlz
Ll9zZWVuUGFnZVRhcmdldCA9IHRydWU7CkBAIC0yMzEsNiArMjA2LDkgQEAgV0kuVGFyZ2V0TWFu
YWdlciA9IGNsYXNzIFRhcmdldE1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgaWYg
KHRhcmdldC50eXBlICE9PSBXSS5UYXJnZXRUeXBlLlBhZ2UpCiAgICAgICAgICAgICByZXR1cm47
CiAKKyAgICAgICAgaWYgKHRhcmdldC5pc1Byb3Zpc2lvbmFsKQorICAgICAgICAgICAgcmV0dXJu
OworCiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRhcmdldCA9PT0gV0kucGFnZVRhcmdldCk7CiAg
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX3NlZW5QYWdlVGFyZ2V0KTsKIApAQCAtMzE3LDgg
KzI5NSw1IEBAIFdJLlRhcmdldE1hbmFnZXIgPSBjbGFzcyBUYXJnZXRNYW5hZ2VyIGV4dGVuZHMg
V0kuT2JqZWN0CiBXSS5UYXJnZXRNYW5hZ2VyLkV2ZW50ID0gewogICAgIFRhcmdldEFkZGVkOiBT
eW1ib2woInRhcmdldC1tYW5hZ2VyLXRhcmdldC1hZGRlZCIpLAogICAgIFRhcmdldFJlbW92ZWQ6
IFN5bWJvbCgidGFyZ2V0LW1hbmFnZXItdGFyZ2V0LXJlbW92ZWQiKSwKLQotICAgIFRhcmdldENy
ZWF0ZWQ6ICJ0YXJnZXQtbWFuYWdlci10YXJnZXQtY3JlYXRlZCIsCiAgICAgRGlkQ29tbWl0UHJv
dmlzaW9uYWxUYXJnZXQ6ICJ0YXJnZXQtbWFuYWdlci1wcm92aXNpb25hbC10YXJnZXQtY29tbWl0
dGVkIiwKLSAgICBUYXJnZXREZXN0cm95ZWQ6ICJ0YXJnZXQtbWFuYWdlci10YXJnZXQtZGV0cm95
ZWQiLAogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1Byb3RvY29sL0Nvbm5lY3Rpb24uanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Qcm90b2NvbC9Db25uZWN0aW9uLmpzCmluZGV4IDliZWNiZDA2YTlkNWIyNThmN2E1MDZk
Y2EyMGU5NDQzMzNjOGFiYTYuLjY5NWU4ZTRmZDY3YjIzYjA1OWU2NzY5MGEyMzc1N2NjZDNhNDdk
MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3Rv
Y29sL0Nvbm5lY3Rpb24uanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvUHJvdG9jb2wvQ29ubmVjdGlvbi5qcwpAQCAtMzksNiArMzksNyBAQCBJbnNwZWN0b3JCYWNr
ZW5kLkNvbm5lY3Rpb24gPSBjbGFzcyBJbnNwZWN0b3JCYWNrZW5kQ29ubmVjdGlvbgogICAgICAg
ICB0aGlzLl9wZW5kaW5nUmVzcG9uc2VzID0gbmV3IE1hcDsKICAgICAgICAgdGhpcy5fZGVmZXJy
ZWRDYWxsYmFja3MgPSBbXTsKICAgICAgICAgdGhpcy5fdGFyZ2V0ID0gbnVsbDsKKyAgICAgICAg
dGhpcy5fcHJvdmlzaW9uYWxNZXNzYWdlcyA9IFtdOwogICAgIH0KIAogICAgIC8vIFB1YmxpYwpA
QCAtNTQsNiArNTUsMjAgQEAgSW5zcGVjdG9yQmFja2VuZC5Db25uZWN0aW9uID0gY2xhc3MgSW5z
cGVjdG9yQmFja2VuZENvbm5lY3Rpb24KICAgICAgICAgdGhpcy5fdGFyZ2V0ID0gdGFyZ2V0Owog
ICAgIH0KIAorICAgIGFkZFByb3Zpc2lvbmFsTWVzc2FnZShtZXNzYWdlKQorICAgIHsKKyAgICAg
ICAgdGhpcy5fcHJvdmlzaW9uYWxNZXNzYWdlcy5wdXNoKG1lc3NhZ2UpOworICAgIH0KKworICAg
IGRpc3BhdGNoUHJvdmlzaW9uYWxNZXNzYWdlcygpCisgICAgeworICAgICAgICBjb25zb2xlLmFz
c2VydCh0aGlzLnRhcmdldCk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzLnRhcmdldC5p
c1Byb3Zpc2lvbmFsKTsKKyAgICAgICAgZm9yIChsZXQgbWVzc2FnZSBvZiB0aGlzLl9wcm92aXNp
b25hbE1lc3NhZ2VzKQorICAgICAgICAgICAgdGhpcy5kaXNwYXRjaChtZXNzYWdlKTsKKyAgICAg
ICAgdGhpcy5fcHJvdmlzaW9uYWxNZXNzYWdlcyA9IG51bGw7CisgICAgfQorCiAgICAgZGlzcGF0
Y2gobWVzc2FnZSkKICAgICB7CiAgICAgICAgIGxldCBtZXNzYWdlT2JqZWN0ID0gdHlwZW9mIG1l
c3NhZ2UgPT09ICJzdHJpbmciID8gSlNPTi5wYXJzZShtZXNzYWdlKSA6IG1lc3NhZ2U7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9NdWx0
aXBsZXhpbmdCYWNrZW5kVGFyZ2V0LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvUHJvdG9jb2wvTXVsdGlwbGV4aW5nQmFja2VuZFRhcmdldC5qcwppbmRleCBhYWIwY2U5
MTU1NTViMzYwYTZkNDBjMzM1MmVlMGRmNjg4YWJlM2M3Li43OTM3MDllYmU1ZDk4NTJlMjM0OGVh
NDlkNWI5N2U4ZDQ3YTY5ZjU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Qcm90b2NvbC9NdWx0aXBsZXhpbmdCYWNrZW5kVGFyZ2V0LmpzCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL011bHRpcGxleGluZ0Jh
Y2tlbmRUYXJnZXQuanMKQEAgLTQzLDggKzQzLDExIEBAIFdJLk11bHRpcGxleGluZ0JhY2tlbmRU
YXJnZXQgPSBjbGFzcyBNdWx0aXBsZXhpbmdCYWNrZW5kVGFyZ2V0IGV4dGVuZHMgV0kuVGFyZ2V0
CiAKICAgICBpbml0aWFsaXplKCkKICAgICB7Ci0gICAgICAgIC8vIEludGVudGlvbmFsbHkgZG8g
bm90aGluZywgaW5jbHVkaW5nIG5vdCBjYWxsaW5nIHN1cGVyLgotICAgICAgICAvLyBObyBhZ2Vu
dHMgb3RoZXIgdGhhbiB0aGUgVGFyZ2V0QWdlbnQsIG5vdGhpbmcgdG8gaW5pdGlhbGl6ZS4KKyAg
ICAgICAgLy8gSW50ZW50aW9uYWxseSBub3QgY2FsbGluZyBzdXBlci4gTm8gYWdlbnRzIG90aGVy
IHRoYW4gdGhlIFRhcmdldEFnZW50LgorCisgICAgICAgIC8vIENPTVBBVElCSUxJVFkgKGlPUyAx
Myk6IFRhcmdldC5zZXRQYXVzZU9uU3RhcnQgZGlkIG5vdCBleGlzdCB5ZXQuCisgICAgICAgIGlm
ICh0aGlzLmhhc0NvbW1hbmQoIlRhcmdldC5zZXRQYXVzZU9uU3RhcnQiKSkKKyAgICAgICAgICAg
IHRoaXMuVGFyZ2V0QWdlbnQuc2V0UGF1c2VPblN0YXJ0KHRydWUpOwogICAgIH0KIAogICAgIC8v
IFByb3RlY3RlZCAoVGFyZ2V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvUHJvdG9jb2wvUGFnZVRhcmdldC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL1BhZ2VUYXJnZXQuanMKaW5kZXggZjMzNGMwODA4NGMw
NzA2NTJhYTBkZWM0MjEwYTdjYTFhNTdhODM0YS4uMGVjODFlYjI0OGVhZDQyMGRlMWFhYTg5MDYx
OWNkOTRmYjU0ODY2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvUHJvdG9jb2wvUGFnZVRhcmdldC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Qcm90b2NvbC9QYWdlVGFyZ2V0LmpzCkBAIC0yNSw5ICsyNSw5IEBACiAK
IFdJLlBhZ2VUYXJnZXQgPSBjbGFzcyBQYWdlVGFyZ2V0IGV4dGVuZHMgV0kuVGFyZ2V0CiB7Ci0g
ICAgY29uc3RydWN0b3IocGFyZW50VGFyZ2V0LCB0YXJnZXRJZCwgbmFtZSwgY29ubmVjdGlvbikK
KyAgICBjb25zdHJ1Y3RvcihwYXJlbnRUYXJnZXQsIHRhcmdldElkLCBuYW1lLCBjb25uZWN0aW9u
LCBzdGF0ZSkKICAgICB7Ci0gICAgICAgIHN1cGVyKHBhcmVudFRhcmdldCwgdGFyZ2V0SWQsIG5h
bWUsIFdJLlRhcmdldFR5cGUuUGFnZSwgY29ubmVjdGlvbik7CisgICAgICAgIHN1cGVyKHBhcmVu
dFRhcmdldCwgdGFyZ2V0SWQsIG5hbWUsIFdJLlRhcmdldFR5cGUuUGFnZSwgY29ubmVjdGlvbiwg
c3RhdGUpOwogCiAgICAgICAgIGNvbnN0IGlzUGFnZUNvbnRleHQgPSB0cnVlOwogICAgICAgICB0
aGlzLl9leGVjdXRpb25Db250ZXh0ID0gbmV3IFdJLkV4ZWN1dGlvbkNvbnRleHQodGhpcywgV0ku
UnVudGltZU1hbmFnZXIuVG9wTGV2ZWxDb250ZXh0RXhlY3V0aW9uSWRlbnRpZmllciwgdGhpcy5k
aXNwbGF5TmFtZSwgaXNQYWdlQ29udGV4dCwgbnVsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9UYXJnZXQuanMgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9UYXJnZXQuanMKaW5kZXggMGEzMGRm
ZjRmYWVkYTI5OWRkMDRmZmYwNDNiYjc1NzVmYjM2MTg5YS4uYjgwZDRkNDg2ZGJiNTM1OGEzY2Rj
YjFlNTlmZDVjZjU4ZDNlZDI1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvUHJvdG9jb2wvVGFyZ2V0LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL1RhcmdldC5qcwpAQCAtMjUsNyArMjUsNyBAQAogCiBX
SS5UYXJnZXQgPSBjbGFzcyBUYXJnZXQgZXh0ZW5kcyBXSS5PYmplY3QKIHsKLSAgICBjb25zdHJ1
Y3RvcihwYXJlbnRUYXJnZXQsIGlkZW50aWZpZXIsIG5hbWUsIHR5cGUsIGNvbm5lY3Rpb24pCisg
ICAgY29uc3RydWN0b3IocGFyZW50VGFyZ2V0LCBpZGVudGlmaWVyLCBuYW1lLCB0eXBlLCBjb25u
ZWN0aW9uLCB7aXNQYXVzZWQsIGlzUHJvdmlzaW9uYWx9ID0ge30pCiAgICAgewogICAgICAgICBj
b25zb2xlLmFzc2VydChwYXJlbnRUYXJnZXQgPT09IG51bGwgfHwgcGFyZW50VGFyZ2V0IGluc3Rh
bmNlb2YgV0kuVGFyZ2V0KTsKICAgICAgICAgc3VwZXIoKTsKQEAgLTM1LDYgKzM1LDkgQEAgV0ku
VGFyZ2V0ID0gY2xhc3MgVGFyZ2V0IGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIHRoaXMuX25h
bWUgPSBuYW1lOwogICAgICAgICB0aGlzLl90eXBlID0gdHlwZTsKICAgICAgICAgdGhpcy5fY29u
bmVjdGlvbiA9IGNvbm5lY3Rpb247CisgICAgICAgIHRoaXMuX2lzUGF1c2VkID0gaXNQYXVzZWQ7
CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFpc1BhdXNlZCB8fCBwYXJlbnRUYXJnZXQuaGFzQ29t
bWFuZCgiVGFyZ2V0LnNldFBhdXNlT25TdGFydCIpKTsKKyAgICAgICAgdGhpcy5faXNQcm92aXNp
b25hbCA9IGlzUHJvdmlzaW9uYWw7CiAgICAgICAgIHRoaXMuX2V4ZWN1dGlvbkNvbnRleHQgPSBu
dWxsOwogICAgICAgICB0aGlzLl9tYWluUmVzb3VyY2UgPSBudWxsOwogICAgICAgICB0aGlzLl9y
ZXNvdXJjZUNvbGxlY3Rpb24gPSBuZXcgV0kuUmVzb3VyY2VDb2xsZWN0aW9uOwpAQCAtOTYsNiAr
OTksMjAgQEAgV0kuVGFyZ2V0ID0gY2xhc3MgVGFyZ2V0IGV4dGVuZHMgV0kuT2JqZWN0CiAgICAg
ICAgICAgICBpZiAodGhpcy5oYXNDb21tYW5kKCJJbnNwZWN0b3IuaW5pdGlhbGl6ZWQiKSkKICAg
ICAgICAgICAgICAgICB0aGlzLkluc3BlY3RvckFnZW50LmluaXRpYWxpemVkKCk7CiAgICAgICAg
IH0pOworCisgICAgICAgIGlmICh0aGlzLl9pc1BhdXNlZCkgeworICAgICAgICAgICAgY29uc29s
ZS5hc3NlcnQodGhpcy5fcGFyZW50VGFyZ2V0Lmhhc0NvbW1hbmQoIlRhcmdldC5yZXN1bWUiKSk7
CisgICAgICAgICAgICB0aGlzLl9wYXJlbnRUYXJnZXQuVGFyZ2V0QWdlbnQucmVzdW1lKHRoaXMu
X2lkZW50aWZpZXIsIChlcnJvcikgPT4geworICAgICAgICAgICAgICAgIGlmIChlcnJvcikgewor
ICAgICAgICAgICAgICAgICAgICAvLyBJZ25vcmUgZXJyb3JzIGlmIHRoZSB0YXJnZXQgd2FzIGRl
c3Ryb3llZCBhZnRlciB0aGUgY29tbWFuZCB3YXMgc2VudC4KKyAgICAgICAgICAgICAgICAgICAg
aWYgKCF0aGlzLmlzRGVzdHJveWVkKQorICAgICAgICAgICAgICAgICAgICAgICAgV0kucmVwb3J0
SW50ZXJuYWxFcnJvcihlcnJvcik7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICB0aGlzLl9pc1BhdXNlZCA9IGZhbHNlOwor
ICAgICAgICAgICAgfSk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBhY3RpdmF0ZUV4dHJhRG9t
YWluKGRvbWFpbk5hbWUpCkBAIC0xNzYsNiArMTkzLDEwIEBAIFdJLlRhcmdldCA9IGNsYXNzIFRh
cmdldCBleHRlbmRzIFdJLk9iamVjdAogICAgIGdldCByZXNvdXJjZUNvbGxlY3Rpb24oKSB7IHJl
dHVybiB0aGlzLl9yZXNvdXJjZUNvbGxlY3Rpb247IH0KICAgICBnZXQgZXh0cmFTY3JpcHRDb2xs
ZWN0aW9uKCkgeyByZXR1cm4gdGhpcy5fZXh0cmFTY3JpcHRDb2xsZWN0aW9uOyB9CiAKKyAgICBn
ZXQgaXNQcm92aXNpb25hbCgpIHsgcmV0dXJuIHRoaXMuX2lzUHJvdmlzaW9uYWw7IH0KKworICAg
IGdldCBpc1BhdXNlZCgpIHsgcmV0dXJuIHRoaXMuX2lzUGF1c2VkOyB9CisKICAgICBnZXQgaXNE
ZXN0cm95ZWQoKSB7IHJldHVybiB0aGlzLl9pc0Rlc3Ryb3llZDsgfQogCiAgICAgZ2V0IGRpc3Bs
YXlOYW1lKCkgeyByZXR1cm4gdGhpcy5fbmFtZTsgfQpAQCAtMjE1LDYgKzIzNiwxMiBAQCBXSS5U
YXJnZXQgPSBjbGFzcyBUYXJnZXQgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgdGhpcy5kaXNw
YXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuVGFyZ2V0LkV2ZW50LlNjcmlwdEFkZGVkLCB7c2NyaXB0
fSk7CiAgICAgfQogCisgICAgZGlkQ29tbWl0UHJvdmlzaW9uYWxUYXJnZXQoKQorICAgIHsKKyAg
ICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5faXNQcm92aXNpb25hbCk7CisgICAgICAgIHRoaXMu
X2lzUHJvdmlzaW9uYWwgPSBmYWxzZTsKKyAgICB9CisKICAgICBkZXN0cm95KCkKICAgICB7CiAg
ICAgICAgIHRoaXMuX2lzRGVzdHJveWVkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL1dvcmtlclRhcmdldC5qcyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL1dvcmtlclRhcmdldC5qcwpp
bmRleCA4M2M3MDkyYTU4NzI4ZjJhNzNkOGE5ZDRjZTUyYTFhMWFkN2IyODU5Li5mNjQxYTNiNDg3
OWRiY2ZjMWYxZGMxYWVhOTdmMGM2ZmU1ZWJlNTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9Xb3JrZXJUYXJnZXQuanMKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvV29ya2VyVGFyZ2V0Lmpz
CkBAIC0yNSw5ICsyNSw5IEBACiAKIFdJLldvcmtlclRhcmdldCA9IGNsYXNzIFdvcmtlclRhcmdl
dCBleHRlbmRzIFdJLlRhcmdldAogewotICAgIGNvbnN0cnVjdG9yKHBhcmVudFRhcmdldCwgd29y
a2VySWQsIG5hbWUsIGNvbm5lY3Rpb24pCisgICAgY29uc3RydWN0b3IocGFyZW50VGFyZ2V0LCB3
b3JrZXJJZCwgbmFtZSwgY29ubmVjdGlvbiwgc3RhdGUpCiAgICAgewotICAgICAgICBzdXBlcihw
YXJlbnRUYXJnZXQsIHdvcmtlcklkLCBuYW1lLCBXSS5UYXJnZXRUeXBlLldvcmtlciwgY29ubmVj
dGlvbik7CisgICAgICAgIHN1cGVyKHBhcmVudFRhcmdldCwgd29ya2VySWQsIG5hbWUsIFdJLlRh
cmdldFR5cGUuV29ya2VyLCBjb25uZWN0aW9uLCBzdGF0ZSk7CiAKICAgICAgICAgY29uc3QgaXNQ
YWdlQ29udGV4dCA9IGZhbHNlOwogICAgICAgICB0aGlzLl9leGVjdXRpb25Db250ZXh0ID0gbmV3
IFdJLkV4ZWN1dGlvbkNvbnRleHQodGhpcywgV0kuUnVudGltZU1hbmFnZXIuVG9wTGV2ZWxDb250
ZXh0RXhlY3V0aW9uSWRlbnRpZmllciwgdGhpcy5kaXNwbGF5TmFtZSwgaXNQYWdlQ29udGV4dCwg
bnVsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvTmF2aWdhdGlvblNpZGViYXJQYW5lbC5qcwppbmRleCAyMmVkODk2
NThkNzAwZmY4MzUwNWQ0YTRkYjA0MmI4NDY0MDhjZmZjLi5jYTkzN2NmOGZkMDY1MGE1ZmViZjU2
NTU1YTIzMWUzNDU1ODU0OTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLmpzCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05hdmlnYXRpb25TaWRlYmFyUGFuZWwu
anMKQEAgLTcwNSw3ICs3MDUsNyBAQCBXSS5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsID0gY2xhc3Mg
TmF2aWdhdGlvblNpZGViYXJQYW5lbCBleHRlbmRzIFdJLlNpZGViYXJQYW5lbAogICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICAgICAgaWYgKG1hdGNoVHlwZU9ubHkpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgcmV0dXJuICEhdHlw
ZUlkZW50aWZpZXI7CiAKICAgICAgICAgICAgIHZhciBjYW5kaWRhdGVPYmplY3RDb29raWUgPSB7
fTsKICAgICAgICAgICAgIGlmIChyZXByZXNlbnRlZE9iamVjdC5zYXZlSWRlbnRpdHlUb0Nvb2tp
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3RvclRhcmdldFBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3RvclRhcmdldFByb3h5LmNw
cAppbmRleCAxYjM3YzFlZDQzOTVhMTdjNTgzYmEyZDc4NjIxOWM5MGM3NDQwMTZlLi5mMThhMGFm
MDQwOGUzNzJmNGFiNjExMjc5ZGQ5NjQ1Nzk3YjRjMGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3JUYXJnZXRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvSW5zcGVjdG9yVGFyZ2V0UHJveHkuY3BwCkBAIC02OSw2ICs2OSw5IEBAIHZv
aWQgSW5zcGVjdG9yVGFyZ2V0UHJveHk6OmNvbm5lY3QoSW5zcGVjdG9yOjpGcm9udGVuZENoYW5u
ZWw6OkNvbm5lY3Rpb25UeXBlIGNvCiAKIHZvaWQgSW5zcGVjdG9yVGFyZ2V0UHJveHk6OmRpc2Nv
bm5lY3QoKQogeworICAgIGlmIChpc1BhdXNlZCgpKQorICAgICAgICBzZXRQYXVzZWQoZmFsc2Up
OworCiAgICAgaWYgKG1fcHJvdmlzaW9uYWxQYWdlKSB7CiAgICAgICAgIG1fcHJvdmlzaW9uYWxQ
YWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlzY29ubmVjdEluc3BlY3Rv
cihpZGVudGlmaWVyKCkpLCBtX3Byb3Zpc2lvbmFsUGFnZS0+d2ViUGFnZUlEKCkpOwogICAgICAg
ICByZXR1cm47CkBAIC0xMDAsNCArMTAzLDEwIEBAIGJvb2wgSW5zcGVjdG9yVGFyZ2V0UHJveHk6
OmlzUHJvdmlzaW9uYWwoKSBjb25zdAogICAgIHJldHVybiAhIW1fcHJvdmlzaW9uYWxQYWdlOwog
fQogCit2b2lkIEluc3BlY3RvclRhcmdldFByb3h5OjpyZXN1bWVUYXJnZXQoKQoreworICAgIGlm
IChtX3Byb3Zpc2lvbmFsUGFnZSkKKyAgICAgICAgbV9wcm92aXNpb25hbFBhZ2UtPmNvbnRpbnVl
TG9hZGluZ0FmdGVyUGF1c2luZ0Zvckluc3BlY3RvcigpOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3RvclRhcmdl
dFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3JUYXJnZXRQcm94eS5o
CmluZGV4IGEyMjM5Y2VjOGUxODg1MGYzNWY3Zjg4YTljNGViYWRjNjJiZjQwMjMuLjFkNzI1YjNl
M2VjZWE4YTI0MTZhMWEzMDU2MzcyNzI5MTkzMDFmMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0luc3BlY3RvclRhcmdldFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvSW5zcGVjdG9yVGFyZ2V0UHJveHkuaApAQCAtNTcsNiArNTcsOCBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZW5kTWVzc2FnZVRvVGFyZ2V0QmFja2VuZChjb25zdCBTdHJpbmcmKSBvdmVy
cmlkZTsKIAogcHJpdmF0ZToKKyAgICB2b2lkIHJlc3VtZVRhcmdldCgpIG92ZXJyaWRlOworCiAg
ICAgV2ViUGFnZVByb3h5JiBtX3BhZ2U7CiAgICAgU3RyaW5nIG1faWRlbnRpZmllcjsKICAgICBJ
bnNwZWN0b3I6Okluc3BlY3RvclRhcmdldFR5cGUgbV90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCmluZGV4IDIxNmJlNWJmZjIwYTU1
NjcwOGYwMDU3ZjRlMzUwZDE1ZmYyMGEyYmYuLjA5YWM1MTA4MzAxYTg0NDVkYmQ5NDQ5YTI0Yzlm
MDgwNTQyMWI4NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lv
bmFsUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25h
bFBhZ2VQcm94eS5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgUHJvdmlzaW9uYWxQYWdlUHJveHk6OlBy
b3Zpc2lvbmFsUGFnZVByb3h5KFdlYlBhZ2VQcm94eSYgcGFnZSwgUmVmPFdlYlByb2Nlc3NQcm8K
IAogICAgIGluaXRpYWxpemVXZWJQYWdlKCk7CiAKLSAgICBtX3BhZ2UuaW5zcGVjdG9yQ29udHJv
bGxlcigpLmRpZENyZWF0ZVByb3Zpc2lvbmFsUGFnZSgqdGhpcyk7CisgICAgbV9sb2FkaW5nUGF1
c2VkRm9ySW5zcGVjdG9yID0gbV9wYWdlLmluc3BlY3RvckNvbnRyb2xsZXIoKS5pbnRlcmNlcHRQ
cm92aXNpb25hbFBhZ2UoKnRoaXMpID09IFdlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyOjpQYXVz
ZUxvYWRpbmc6OlllczsKIH0KIAogUHJvdmlzaW9uYWxQYWdlUHJveHk6On5Qcm92aXNpb25hbFBh
Z2VQcm94eSgpCkBAIC0xMTcsNiArMTE3LDIxIEBAIHN0ZDo6dW5pcXVlX3B0cjxEcmF3aW5nQXJl
YVByb3h5PiBQcm92aXNpb25hbFBhZ2VQcm94eTo6dGFrZURyYXdpbmdBcmVhKCkKICAgICByZXR1
cm4gV1RGTW92ZShtX2RyYXdpbmdBcmVhKTsKIH0KIAordm9pZCBQcm92aXNpb25hbFBhZ2VQcm94
eTo6Y29udGludWVMb2FkaW5nQWZ0ZXJQYXVzaW5nRm9ySW5zcGVjdG9yKCkKK3sKKyAgICBBU1NF
UlQobV9sb2FkaW5nUGF1c2VkRm9ySW5zcGVjdG9yKTsKKyAgICBpZiAobV9jb250aW51ZUxvYWRp
bmdXaGVuUmVzdW1lZEJ5SW5zcGVjdG9yQ2FsbGJhY2spIHsKKyAgICAgICAgbV9jb250aW51ZUxv
YWRpbmdXaGVuUmVzdW1lZEJ5SW5zcGVjdG9yQ2FsbGJhY2soKTsKKyAgICAgICAgbV9jb250aW51
ZUxvYWRpbmdXaGVuUmVzdW1lZEJ5SW5zcGVjdG9yQ2FsbGJhY2sgPSBudWxscHRyOworICAgIH0K
KyAgICBtX2xvYWRpbmdQYXVzZWRGb3JJbnNwZWN0b3IgPSBmYWxzZTsKK30KKwordm9pZCBQcm92
aXNpb25hbFBhZ2VQcm94eTo6Y29udGludWVMb2FkaW5nV2hlblJlc3VtZWRCeUluc3BlY3RvcihX
VEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjYWxsYmFjaykKK3sKKyAgICBtX2NvbnRpbnVlTG9hZGlu
Z1doZW5SZXN1bWVkQnlJbnNwZWN0b3JDYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spOworfQor
CiB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpjYW5jZWwoKQogewogICAgIC8vIElmIHRoZSBw
cm92aXNpb25hbCBsb2FkIHN0YXJ0ZWQsIHRoZW4gaW5kaWNhdGUgdGhhdCBpdCBmYWlsZWQgZHVl
IHRvIGNhbmNlbGxhdGlvbiBieSBjYWxsaW5nIGRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFt
ZSgpLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdl
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmgK
aW5kZXggY2I5NWZlMDEwZGM2NDJmY2RmNDYzMzdjM2ViYWU4MjIyZGYxMzI0Ny4uNjk5ZTk0NDFh
YzBlOTMwYjdlYmM1ZTIyZTgwOTA0YjIyYzMzNjY4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oCkBAIC05MCw2ICs5MCwxMCBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIHByb2Nlc3NEaWRUZXJtaW5hdGUoKTsKIAorICAgIHZvaWQgY29udGludWVM
b2FkaW5nQWZ0ZXJQYXVzaW5nRm9ySW5zcGVjdG9yKCk7CisgICAgYm9vbCBzaG91bGRQYXVzZUxv
YWRpbmdGb3JJbnNwZWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2xvYWRpbmdQYXVzZWRGb3JJbnNw
ZWN0b3I7IH0KKyAgICB2b2lkIGNvbnRpbnVlTG9hZGluZ1doZW5SZXN1bWVkQnlJbnNwZWN0b3Io
V1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYpOworCiBwcml2YXRlOgogICAgIC8vIElQQzo6TWVzc2Fn
ZVJlY2VpdmVyCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJ
UEM6OkRlY29kZXImKSBmaW5hbDsKQEAgLTEzOCw2ICsxNDIsOCBAQCBwcml2YXRlOgogICAgIFBy
b2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgbV9wcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50
OwogICAgIGJvb2wgbV93YXNDb21taXR0ZWQgeyBmYWxzZSB9OwogICAgIFVSTCBtX3Byb3Zpc2lv
bmFsTG9hZFVSTDsKKyAgICBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4gbV9jb250aW51ZUxvYWRpbmdX
aGVuUmVzdW1lZEJ5SW5zcGVjdG9yQ2FsbGJhY2s7CisgICAgYm9vbCBtX2xvYWRpbmdQYXVzZWRG
b3JJbnNwZWN0b3IgeyBmYWxzZSB9OwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgVmVjdG9y
PHVpbnQ4X3Q+IG1fYWNjZXNzaWJpbGl0eVRva2VuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IGI5YTk0Njlh
YjU5MTM2ZjllOWEzNzM2YmZkYjBlOWQ1MjljMGZiY2UuLmVkY2NmMmZmY2Y3MjhhNzZjZGIxOTdj
N2FhOTEyNTMzYzJhMThhNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTE2Nyw5ICsxNjcsMTIgQEAgdm9p
ZCBXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlcjo6c2VuZE1lc3NhZ2VUb0luc3BlY3RvckZyb250
ZW5kKGNvbnN0IFN0cmluZyYgdGEKICAgICBtX3RhcmdldEFnZW50LT5zZW5kTWVzc2FnZUZyb21U
YXJnZXRUb0Zyb250ZW5kKHRhcmdldElkLCBtZXNzYWdlKTsKIH0KIAotdm9pZCBXZWJQYWdlSW5z
cGVjdG9yQ29udHJvbGxlcjo6ZGlkQ3JlYXRlUHJvdmlzaW9uYWxQYWdlKFByb3Zpc2lvbmFsUGFn
ZVByb3h5JiBwcm92aXNpb25hbFBhZ2UpCitXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlcjo6UGF1
c2VMb2FkaW5nIFdlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyOjppbnRlcmNlcHRQcm92aXNpb25h
bFBhZ2UoUHJvdmlzaW9uYWxQYWdlUHJveHkmIHByb3Zpc2lvbmFsUGFnZSkKIHsKLSAgICBhZGRU
YXJnZXQoSW5zcGVjdG9yVGFyZ2V0UHJveHk6OmNyZWF0ZShwcm92aXNpb25hbFBhZ2UsIGdldFRh
cmdldElEKHByb3Zpc2lvbmFsUGFnZSksIEluc3BlY3Rvcjo6SW5zcGVjdG9yVGFyZ2V0VHlwZTo6
UGFnZSkpOworICAgIGF1dG8gdGFyZ2V0ID0gSW5zcGVjdG9yVGFyZ2V0UHJveHk6OmNyZWF0ZShw
cm92aXNpb25hbFBhZ2UsIGdldFRhcmdldElEKHByb3Zpc2lvbmFsUGFnZSksIEluc3BlY3Rvcjo6
SW5zcGVjdG9yVGFyZ2V0VHlwZTo6UGFnZSk7CisgICAgYXV0byogdGFyZ2V0UHRyID0gdGFyZ2V0
LmdldCgpOworICAgIGFkZFRhcmdldChXVEZNb3ZlKHRhcmdldCkpOworICAgIHJldHVybiB0YXJn
ZXRQdHItPmlzUGF1c2VkKCkgPyBXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlcjo6UGF1c2VMb2Fk
aW5nOjpZZXMgOiBXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlcjo6UGF1c2VMb2FkaW5nOjpObzsK
IH0KIAogdm9pZCBXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlcjo6d2lsbERlc3Ryb3lQcm92aXNp
b25hbFBhZ2UoY29uc3QgUHJvdmlzaW9uYWxQYWdlUHJveHkmIHByb3Zpc2lvbmFsUGFnZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VJbnNwZWN0b3JDb250cm9s
bGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxl
ci5oCmluZGV4IDgyOGJjM2NjYzdlMDdkODEyMDMzNDMxYjI3YWU3ZjBiYzhjZjljNTQuLjRhZTdi
MjM2NmM3MmQ1N2E5NGUzMzNmZWFlMzE4OTM0ZDk3ZGQ3NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyLmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIuaApAQCAtNjYsNyAr
NjYsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZXN0cm95SW5zcGVjdG9yVGFyZ2V0KGNvbnN0IFN0
cmluZyYgdGFyZ2V0SWQpOwogICAgIHZvaWQgc2VuZE1lc3NhZ2VUb0luc3BlY3RvckZyb250ZW5k
KGNvbnN0IFN0cmluZyYgdGFyZ2V0SWQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CiAKLSAgICB2
b2lkIGRpZENyZWF0ZVByb3Zpc2lvbmFsUGFnZShQcm92aXNpb25hbFBhZ2VQcm94eSYpOworICAg
IGVudW0gY2xhc3MgUGF1c2VMb2FkaW5nIHsgTm8sIFllcyB9OworICAgIFBhdXNlTG9hZGluZyBp
bnRlcmNlcHRQcm92aXNpb25hbFBhZ2UoUHJvdmlzaW9uYWxQYWdlUHJveHkmKTsKICAgICB2b2lk
IHdpbGxEZXN0cm95UHJvdmlzaW9uYWxQYWdlKGNvbnN0IFByb3Zpc2lvbmFsUGFnZVByb3h5Jik7
CiAgICAgdm9pZCBkaWRDb21taXRQcm92aXNpb25hbFBhZ2UoV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIgb2xkV2ViUGFnZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBuZXdXZWJQYWdlSUQpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA3YzVjYWQyM2Rj
YWE2OTU4MzM1ZjhiNDFlMjIwZmYwN2NlNjY4ZDE4Li4xZTkzOTg3ZGFiMTEzZWE5ZDVhNjc3N2Mw
OTJkNDNlYzlmOGJjM2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAKQEAgLTMwOTcsMjggKzMwOTcsMzQgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNvbnRpbnVlTmF2
aWdhdGlvbkluTmV3UHJvY2VzcyhBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIHMKIAogICAg
IG1fcHJvdmlzaW9uYWxQYWdlID0gbWFrZVVuaXF1ZTxQcm92aXNpb25hbFBhZ2VQcm94eT4oKnRo
aXMsIG5ld1Byb2Nlc3MuY29weVJlZigpLCBXVEZNb3ZlKHN1c3BlbmRlZFBhZ2UpLCBuYXZpZ2F0
aW9uLm5hdmlnYXRpb25JRCgpLCBuYXZpZ2F0aW9uLmN1cnJlbnRSZXF1ZXN0SXNSZWRpcmVjdCgp
LCBuYXZpZ2F0aW9uLmN1cnJlbnRSZXF1ZXN0KCksIHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGll
bnQpOwogCi0gICAgaWYgKGF1dG8qIGl0ZW0gPSBuYXZpZ2F0aW9uLnRhcmdldEl0ZW0oKSkgewot
ICAgICAgICBMT0coTG9hZGluZywgIldlYlBhZ2VQcm94eSAlcCBjb250aW51ZU5hdmlnYXRpb25J
bk5ld1Byb2Nlc3MgdG8gYmFjayBpdGVtIFVSTCAlcyIsIHRoaXMsIGl0ZW0tPnVybCgpLnV0Zjgo
KS5kYXRhKCkpOworICAgIGF1dG8gY29udGludWF0aW9uID0gW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgbmF2aWdhdGlvbiA9IG1ha2VSZWYobmF2aWdhdGlvbiksIG5ld1By
b2Nlc3MgPSBXVEZNb3ZlKG5ld1Byb2Nlc3MpLCB3ZWJzaXRlUG9saWNpZXMgPSBXVEZNb3ZlKHdl
YnNpdGVQb2xpY2llcyldKCkgbXV0YWJsZSB7CisgICAgICAgIGlmIChhdXRvKiBpdGVtID0gbmF2
aWdhdGlvbi0+dGFyZ2V0SXRlbSgpKSB7CisgICAgICAgICAgICBMT0coTG9hZGluZywgIldlYlBh
Z2VQcm94eSAlcCBjb250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3MgdG8gYmFjayBpdGVtIFVS
TCAlcyIsIHRoaXMsIGl0ZW0tPnVybCgpLnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgICAgIGF1dG8g
dHJhbnNhY3Rpb24gPSBtX3BhZ2VMb2FkU3RhdGUudHJhbnNhY3Rpb24oKTsKLSAgICAgICAgbV9w
YWdlTG9hZFN0YXRlLnNldFBlbmRpbmdBUElSZXF1ZXN0KHRyYW5zYWN0aW9uLCB7IG5hdmlnYXRp
b24ubmF2aWdhdGlvbklEKCksIGl0ZW0tPnVybCgpIH0pOworICAgICAgICAgICAgYXV0byB0cmFu
c2FjdGlvbiA9IG1fcGFnZUxvYWRTdGF0ZS50cmFuc2FjdGlvbigpOworICAgICAgICAgICAgbV9w
YWdlTG9hZFN0YXRlLnNldFBlbmRpbmdBUElSZXF1ZXN0KHRyYW5zYWN0aW9uLCB7IG5hdmlnYXRp
b24tPm5hdmlnYXRpb25JRCgpLCBpdGVtLT51cmwoKSB9KTsKIAotICAgICAgICBtX3Byb3Zpc2lv
bmFsUGFnZS0+Z29Ub0JhY2tGb3J3YXJkSXRlbShuYXZpZ2F0aW9uLCAqaXRlbSwgV1RGTW92ZSh3
ZWJzaXRlUG9saWNpZXMpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICAgICAgICAgIG1f
cHJvdmlzaW9uYWxQYWdlLT5nb1RvQmFja0ZvcndhcmRJdGVtKG5hdmlnYXRpb24sICppdGVtLCBX
VEZNb3ZlKHdlYnNpdGVQb2xpY2llcykpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CiAKLSAgICBpZiAobV9iYWNrRm9yd2FyZExpc3QtPmN1cnJlbnRJdGVtKCkgJiYgKG5hdmlnYXRp
b24ubG9ja0JhY2tGb3J3YXJkTGlzdCgpID09IExvY2tCYWNrRm9yd2FyZExpc3Q6OlllcyB8fCBu
YXZpZ2F0aW9uLmxvY2tIaXN0b3J5KCkgPT0gTG9ja0hpc3Rvcnk6OlllcykpIHsKLSAgICAgICAg
Ly8gSWYgV2ViQ29yZSBpcyBzdXBwb3NlZCB0byBsb2NrIHRoZSBoaXN0b3J5IGZvciB0aGlzIGxv
YWQsIHRoZW4gdGhlIG5ldyBwcm9jZXNzIG5lZWRzIHRvIGtub3cgYWJvdXQgdGhlIGN1cnJlbnQg
aGlzdG9yeSBpdGVtIHNvIGl0IGNhbiB1cGRhdGUKLSAgICAgICAgLy8gaXQgaW5zdGVhZCBvZiBj
cmVhdGluZyBhIG5ldyBvbmUuCi0gICAgICAgIG5ld1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlNldEN1cnJlbnRIaXN0b3J5SXRlbUZvclJlYXR0YWNoKG1fYmFja0ZvcndhcmRMaXN0
LT5jdXJyZW50SXRlbSgpLT5pdGVtU3RhdGUoKSksIG1fcHJvdmlzaW9uYWxQYWdlLT53ZWJQYWdl
SUQoKSk7Ci0gICAgfQorICAgICAgICBpZiAobV9iYWNrRm9yd2FyZExpc3QtPmN1cnJlbnRJdGVt
KCkgJiYgKG5hdmlnYXRpb24tPmxvY2tCYWNrRm9yd2FyZExpc3QoKSA9PSBMb2NrQmFja0Zvcndh
cmRMaXN0OjpZZXMgfHwgbmF2aWdhdGlvbi0+bG9ja0hpc3RvcnkoKSA9PSBMb2NrSGlzdG9yeTo6
WWVzKSkgeworICAgICAgICAgICAgLy8gSWYgV2ViQ29yZSBpcyBzdXBwb3NlZCB0byBsb2NrIHRo
ZSBoaXN0b3J5IGZvciB0aGlzIGxvYWQsIHRoZW4gdGhlIG5ldyBwcm9jZXNzIG5lZWRzIHRvIGtu
b3cgYWJvdXQgdGhlIGN1cnJlbnQgaGlzdG9yeSBpdGVtIHNvIGl0IGNhbiB1cGRhdGUKKyAgICAg
ICAgICAgIC8vIGl0IGluc3RlYWQgb2YgY3JlYXRpbmcgYSBuZXcgb25lLgorICAgICAgICAgICAg
bmV3UHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0Q3VycmVudEhpc3RvcnlJdGVt
Rm9yUmVhdHRhY2gobV9iYWNrRm9yd2FyZExpc3QtPmN1cnJlbnRJdGVtKCktPml0ZW1TdGF0ZSgp
KSwgbV9wcm92aXNpb25hbFBhZ2UtPndlYlBhZ2VJRCgpKTsKKyAgICAgICAgfQogCi0gICAgLy8g
RklYTUU6IFdvcmsgb3V0IHRpbWluZyBvZiByZXNwb25kaW5nIHdpdGggdGhlIGxhc3QgcG9saWN5
IGRlbGVnYXRlLCBldGMKLSAgICBBU1NFUlQoIW5hdmlnYXRpb24uY3VycmVudFJlcXVlc3QoKS5p
c0VtcHR5KCkpOwotICAgIGlmIChhdXRvJiBzdWJzdGl0dXRlRGF0YSA9IG5hdmlnYXRpb24uc3Vi
c3RpdHV0ZURhdGEoKSkKLSAgICAgICAgbV9wcm92aXNpb25hbFBhZ2UtPmxvYWREYXRhKG5hdmln
YXRpb24sIHsgc3Vic3RpdHV0ZURhdGEtPmNvbnRlbnQuZGF0YSgpLCBzdWJzdGl0dXRlRGF0YS0+
Y29udGVudC5zaXplKCkgfSwgc3Vic3RpdHV0ZURhdGEtPk1JTUVUeXBlLCBzdWJzdGl0dXRlRGF0
YS0+ZW5jb2RpbmcsIHN1YnN0aXR1dGVEYXRhLT5iYXNlVVJMLCBzdWJzdGl0dXRlRGF0YS0+dXNl
ckRhdGEuZ2V0KCksIFdURk1vdmUod2Vic2l0ZVBvbGljaWVzKSk7CisgICAgICAgIC8vIEZJWE1F
OiBXb3JrIG91dCB0aW1pbmcgb2YgcmVzcG9uZGluZyB3aXRoIHRoZSBsYXN0IHBvbGljeSBkZWxl
Z2F0ZSwgZXRjCisgICAgICAgIEFTU0VSVCghbmF2aWdhdGlvbi0+Y3VycmVudFJlcXVlc3QoKS5p
c0VtcHR5KCkpOworICAgICAgICBpZiAoYXV0byYgc3Vic3RpdHV0ZURhdGEgPSBuYXZpZ2F0aW9u
LT5zdWJzdGl0dXRlRGF0YSgpKQorICAgICAgICAgICAgbV9wcm92aXNpb25hbFBhZ2UtPmxvYWRE
YXRhKG5hdmlnYXRpb24sIHsgc3Vic3RpdHV0ZURhdGEtPmNvbnRlbnQuZGF0YSgpLCBzdWJzdGl0
dXRlRGF0YS0+Y29udGVudC5zaXplKCkgfSwgc3Vic3RpdHV0ZURhdGEtPk1JTUVUeXBlLCBzdWJz
dGl0dXRlRGF0YS0+ZW5jb2RpbmcsIHN1YnN0aXR1dGVEYXRhLT5iYXNlVVJMLCBzdWJzdGl0dXRl
RGF0YS0+dXNlckRhdGEuZ2V0KCksIFdURk1vdmUod2Vic2l0ZVBvbGljaWVzKSk7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIG1fcHJvdmlzaW9uYWxQYWdlLT5sb2FkUmVxdWVzdChuYXZpZ2F0
aW9uLCBSZXNvdXJjZVJlcXVlc3QgeyBuYXZpZ2F0aW9uLT5jdXJyZW50UmVxdWVzdCgpIH0sIFdl
YkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZEFsbG93RXh0ZXJuYWxT
Y2hlbWVzLCBudWxscHRyLCBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llcykpOworICAgIH07CisgICAg
aWYgKG1fcHJvdmlzaW9uYWxQYWdlLT5zaG91bGRQYXVzZUxvYWRpbmdGb3JJbnNwZWN0b3IoKSkK
KyAgICAgICAgbV9wcm92aXNpb25hbFBhZ2UtPmNvbnRpbnVlTG9hZGluZ1doZW5SZXN1bWVkQnlJ
bnNwZWN0b3IoV1RGTW92ZShjb250aW51YXRpb24pKTsKICAgICBlbHNlCi0gICAgICAgIG1fcHJv
dmlzaW9uYWxQYWdlLT5sb2FkUmVxdWVzdChuYXZpZ2F0aW9uLCBSZXNvdXJjZVJlcXVlc3QgeyBu
YXZpZ2F0aW9uLmN1cnJlbnRSZXF1ZXN0KCkgfSwgV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFs
VVJMc1BvbGljeTo6U2hvdWxkQWxsb3dFeHRlcm5hbFNjaGVtZXMsIG51bGxwdHIsIFdURk1vdmUo
d2Vic2l0ZVBvbGljaWVzKSk7CisgICAgICAgIGNvbnRpbnVhdGlvbigpOwogfQogCiBib29sIFdl
YlBhZ2VQcm94eTo6aXNQYWdlT3BlbmVkQnlET01TaG93aW5nSW5pdGlhbEVtcHR5RG9jdW1lbnQo
KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
SW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlci5jcHAKaW5kZXgg
OTA4ZTM5YWZkYjBjODg5Y2ZlNTY1MmIzOWFkYzQ3MGMzYTA5YTlhMi4uZGM0Mzk4NDA0YzU1NTkw
ODMxODJiNzI2ODY5NWI0YTYwZjEyNGQ0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JGcm9udGVuZEFQ
SURpc3BhdGNoZXIuY3BwCkBAIC05Miw2ICs5Miw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRl
bmRBUElEaXNwYXRjaGVyOjpkaXNwYXRjaE1lc3NhZ2VBc3luYyhjb25zdCBTdHJpbmcmIG1lc3Nh
CiAKIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyOjpldmFsdWF0ZU9yUXVl
dWVFeHByZXNzaW9uKGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbikKIHsKKyAgICBmcHJpbnRmKHN0
ZGVyciwgImV2YWx1YXRlT3JRdWV1ZUV4cHJlc3Npb24gJXNcbiIsIGV4cHJlc3Npb24ubGVmdCgy
MDApLmFzY2lpKCkuZGF0YSgpKTsKICAgICBpZiAoIW1fZnJvbnRlbmRMb2FkZWQgfHwgbV9zdXNw
ZW5kZWQpIHsKICAgICAgICAgbV9xdWV1ZS5hcHBlbmQoZXhwcmVzc2lvbik7CiAgICAgICAgIHJl
dHVybjsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwppbmRleCAxNTQ2ZmIzMTM5NTk2YTY2MDI3MmI0NWFmYjI2MmY1NjQ1OGEyMDM4Li45
ODFmZWZkZTczZjA0ZjNmYjRlZTM1MjdkNTdhM2IwNjI3ZDhmMDVmIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjMgQEAKKzIwMTktMTEtMTMgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogYWxsb3cgaW5zcGVjdG9yIHRvIHBhdXNlIHByb3Zp
c2lvbmFsIHBhZ2UgbG9hZCBhbmQgcmVzdG9yZSBpdHMgc3RhdGUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNDE3MAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3QgdGhhdCBwcm92aXNpb25hbCBsb2Fk
aW5nIHdoaWNoIHN0YXJ0cyBiZWZvcmUgcHJldmlvcyBwcm92aXNpb25hbCBsb2FkaW5nCisgICAg
ICAgIGNvbW1pdHMgd2lsbCBiZSBjb3JyZWN0bHkgaGFuZGxlZCBieSB0aGUgaW5zZXBjdG9yLgor
CisgICAgICAgIFRlc3QgdGhhdCBzY3JpcHQgZXhlY3V0aW9uIHdpbGwgYnJlYWsgb24gZGVidWdn
ZXIgc3RhdGVtZW50IGluIGlubGluZSBzY3JpcHRzIGluCisgICAgICAgIGNhc2Ugb2YgY3Jvc3Mg
b3JpZ2luIG5hdmlnYXRpb24gYW5kIFBTT04uCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3Bl
Y3Rvci90YXJnZXQvcGF1c2Utb24taW5saW5lLWRlYnVnZ2VyLXN0YXRlbWVudC1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL3RhcmdldC9wYXVzZS1v
bi1pbmxpbmUtZGVidWdnZXItc3RhdGVtZW50Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAv
dGVzdHMvaW5zcGVjdG9yL3RhcmdldC9wcm92aXNpb25hbC1sb2FkLWNhbmNlbHMtcHJldmlvdXMt
bG9hZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9y
L3RhcmdldC9wcm92aXNpb25hbC1sb2FkLWNhbmNlbHMtcHJldmlvdXMtbG9hZC5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci90YXJnZXQvcmVzb3VyY2VzL2lubGlu
ZS1kZWJ1Z2dlci1zdGF0ZW1lbnQuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9p
bnNwZWN0b3IvdGFyZ2V0L3RhcmdldC1ldmVudHMtZm9yLXByb3Zpc2lvbmFsLXBhZ2UuaHRtbDoK
KwogMjAxOS0xMi0wMyAgeW91ZW5uIGZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAg
ICAgQWRkIHN1cHBvcnQgZm9yIGNhbWVyYSByb3RhdGlvbiB3aGVuIGNhcHR1cmluZyBpbiBVSVBy
b2Nlc3MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Rhcmdl
dC9wYXVzZS1vbi1pbmxpbmUtZGVidWdnZXItc3RhdGVtZW50LWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3RhcmdldC9wYXVzZS1vbi1pbmxpbmUtZGVidWdn
ZXItc3RhdGVtZW50LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMmY2NjhlNGY5OTY1NWNjNTUw
NzgxMWNhYjRjNjQ3YmIwOTM5ZGFlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbnNwZWN0b3IvdGFyZ2V0L3BhdXNlLW9uLWlubGluZS1kZWJ1Z2dlci1zdGF0ZW1l
bnQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMiBAQAorQUxFUlQ6IFBBU1M6IFNob3VsZCBwYXVz
ZSBvbiBkZWJ1Z2dlciBzdGF0ZW1lbnQuCitUZXN0IHBhZ2UgdXNlZCB0byBjaGVjayB0aGF0IGV4
ZWN1dGlvbiB3aWxsIGJyZWFrIG9uIGlubGluZSAnZGVidWdnZXInIHN0YXRlbWVudCBhZnRlciBj
cm9zcy1vcmlnaW4gbmF2aWdhdGlvbi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL3RhcmdldC9wYXVzZS1vbi1pbmxpbmUtZGVidWdnZXItc3RhdGVtZW50Lmh0
bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci90YXJnZXQvcGF1c2Utb24taW5s
aW5lLWRlYnVnZ2VyLXN0YXRlbWVudC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE2OTRkZDI3YzJiMGRiZjNm
MDQwZDc4Y2Q4YzFjOTM1MjVkYWZmOGMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luc3BlY3Rvci90YXJnZXQvcGF1c2Utb24taW5saW5lLWRlYnVnZ2VyLXN0YXRl
bWVudC5odG1sCkBAIC0wLDAgKzEsNDIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVh
ZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvaW5z
cGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Z1bmN0aW9uIHRlc3QoKQorewor
ICAgIGxldCBzdWl0ZSA9IEluc3BlY3RvclRlc3QuY3JlYXRlQXN5bmNTdWl0ZSgiVGFyZ2V0LlBT
T04iKTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIklubGluZURl
YnVnZ2VyU3RhdGVtZW50IiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJDaGVjayB0aGF0IG5ldyBw
cm92aXNpb25hbCBwYWdlIGNhbiBiZSBwYXVzZWQgYmVmb3JlIG5hdmlnYXRpb24uIiwKKyAgICAg
ICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKKyAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdl
ci5hd2FpdEV2ZW50KFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5QYXVzZWQpCisgICAgICAgICAg
ICAudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5wYXNzKGBTaG91
bGQgcGF1c2Ugb24gZGVidWdnZXIgc3RhdGVtZW50LmApOworCisgICAgICAgICAgICAgICAgLy8g
V2FpdCBmb3IgcGFnZSByZWxvYWQgZXZlbnQgdG8gYXZvaWQgcmFjZSBiZXR3ZWVuIHRlc3QgcmVz
dWx0cyBmbHVzaGluZyBhbmQgdGhlIHRlc3QgY29tcGxldGlvbi4KKyAgICAgICAgICAgICAgICBs
ZXQgcGFnZUxvYWRQcm9taXNlID0gSW5zcGVjdG9yVGVzdC5hd2FpdEV2ZW50KEZyb250ZW5kVGVz
dEhhcm5lc3MuRXZlbnQuVGVzdFBhZ2VEaWRMb2FkKTsKKyAgICAgICAgICAgICAgICAvL1dJLm1h
aW5UYXJnZXQuRGVidWdnZXJBZ2VudC4KKyAgICAgICAgICAgICAgICBQcm9taXNlLnJlc29sdmUo
KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnJl
c3VtZSgpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIHJldHVybiBwYWdl
TG9hZFByb21pc2U7CisgICAgICAgICAgICB9KQorICAgICAgICAgICAgLnRoZW4ocmVzb2x2ZSk7
CisKKworICAgICAgICAgICAgY29uc3QgdXJsID0gImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9pbnNw
ZWN0b3IvdGFyZ2V0L3Jlc291cmNlcy9pbmxpbmUtZGVidWdnZXItc3RhdGVtZW50Lmh0bWwiOwor
ICAgICAgICAgICAgV0kubWFpblRhcmdldC5QYWdlQWdlbnQubmF2aWdhdGUodXJsKTsKKyAgICAg
ICAgfQorICAgIH0pOworCisgICAgc3VpdGUucnVuVGVzdENhc2VzQW5kRmluaXNoKCk7Cit9Cis8
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxwPlRlc3QgdGhh
dCBleGVjdXRpb24gd2lsbCBicmVhayBvbiBpbmxpbmUgJ2RlYnVnZ2VyJyBzdGF0ZW1lbnQgYWZ0
ZXIgY3Jvc3Mtb3JpZ2luIG5hdmlnYXRpb24uPC9wPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvdGFyZ2V0L3Byb3Zpc2lvbmFs
LWxvYWQtY2FuY2Vscy1wcmV2aW91cy1sb2FkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvaW5zcGVjdG9yL3RhcmdldC9wcm92aXNpb25hbC1sb2FkLWNhbmNlbHMtcHJldmlv
dXMtbG9hZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGQwN2I1YTA0ZDdmODNiOWM1NzBjMmJm
NjkxOGRmNDI1NmRmNzgwZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL3RhcmdldC9wcm92aXNpb25hbC1sb2FkLWNhbmNlbHMtcHJldmlvdXMtbG9h
ZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNyBAQAorVGVzdCB0aGF0IHR3byBjb25zZXF1dGl2
ZSBjcm9zcyBkb21haW4gbmF2aWdhdGlvbiByZXF1ZXN0cyB3aWxsIHJlc3VsdCBpbiB0d28gcHJv
dmlzaW9uYWwgdGFyZ2V0cyBiZWluZyBjcmVhdGVkLCBmaXJzdCBvZiB3aGljaCBpcyBsYXRlciBk
ZXN0cm95ZWQgYW5kIHRoZSBzZWNvbmQgaXMgY29tbWl0dGVkLgorCisKKz09IFJ1bm5pbmcgdGVz
dCBzdWl0ZTogVGFyZ2V0LlBTT04KKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBQcm92aXNpb25hbFBh
Z2VQYXVzZWQKK0N1cnJlbnQgdGFyZ2V0IGlzIDEuCitQQVNTOiBTaG91bGQgcmVjZWl2ZSBUYXJn
ZXRBZGRlZCBldmVudCBmb3IgdGFyZ2V0IDIuCitQQVNTOiBUYXJnZXQgMiBzaG91bGQgYmUgcHJv
dmlzaW9uYWwuCitQQVNTOiBUYXJnZXQgMiBzaG91bGQgYmUgcGF1c2VkIG9uIHN0YXJ0LgorUEFT
UzogU2hvdWxkIHJlY2VpdmUgVGFyZ2V0UmVtb3ZlZCBldmVudCBmb3IgdGFyZ2V0IDIKK1BBU1M6
IFNob3VsZCByZWNlaXZlIFRhcmdldEFkZGVkIGV2ZW50IGZvciB0YXJnZXQgMy4KK1BBU1M6IFRh
cmdldCAzIHNob3VsZCBiZSBwcm92aXNpb25hbC4KK1BBU1M6IFRhcmdldCAzIHNob3VsZCBiZSBw
YXVzZWQgb24gc3RhcnQuCitQQVNTOiBTaG91bGQgcmVjZWl2ZSBUYXJnZXRSZW1vdmVkIGV2ZW50
IGZvciB0YXJnZXQgMQorUEFTUzogU2hvdWxkIHJlY2VpdmUgRGlkQ29tbWl0UHJvdmlzaW9uYWxU
YXJnZXQgZXZlbnQgMSA9PiAzLgorUEFTUzogU2hvdWxkIGhhdmUgc2VlbiAzIGRpZmZlcmVudCB0
YXJnZXRzLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci90
YXJnZXQvcHJvdmlzaW9uYWwtbG9hZC1jYW5jZWxzLXByZXZpb3VzLWxvYWQuaHRtbCBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3RhcmdldC9wcm92aXNpb25hbC1sb2FkLWNhbmNl
bHMtcHJldmlvdXMtbG9hZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM5NmIwMjNiMzA5YzZjOGMxYmUwMzVl
OWI0MjBjOTc2Y2RhYjlmYzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luc3BlY3Rvci90YXJnZXQvcHJvdmlzaW9uYWwtbG9hZC1jYW5jZWxzLXByZXZpb3VzLWxv
YWQuaHRtbApAQCAtMCwwICsxLDc2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+
Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2luc3Bl
Y3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAg
ICBsZXQgbGFzdEFzc2lnbmVkSWQgPSAwOworICAgIGxldCB0YXJnZXRUb0lkID0gbmV3IE1hcDsK
KyAgICBmdW5jdGlvbiBzdGFibGVUYXJnZXRJZCh0YXJnZXRJZCkKKyAgICB7CisgICAgICAgIGxl
dCBpZCA9IHRhcmdldFRvSWQuZ2V0KHRhcmdldElkKTsKKyAgICAgICAgaWYgKCFpZCkgeworICAg
ICAgICAgICAgaWQgPSArK2xhc3RBc3NpZ25lZElkOworICAgICAgICAgICAgdGFyZ2V0VG9JZC5z
ZXQodGFyZ2V0SWQsIGlkKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gaWQ7CisgICAgfQor
CisgICAgbGV0IHN1aXRlID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVBc3luY1N1aXRlKCJUYXJnZXQu
UFNPTiIpOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiUHJvdmlz
aW9uYWxQYWdlUGF1c2VkIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJDaGVjayB0aGF0IG5ldyBw
cm92aXNpb25hbCBwYWdlIGNhbiBiZSBwYXVzZWQgYmVmb3JlIG5hdmlnYXRpb24uIiwKKyAgICAg
ICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9n
KGBDdXJyZW50IHRhcmdldCBpcyAke3N0YWJsZVRhcmdldElkKFdJLm1haW5UYXJnZXQuaWRlbnRp
Zmllcil9LmApOworICAgICAgICAgICAgY29uc3QgdXJsID0gImh0dHA6Ly9sb2NhbGhvc3Q6ODAw
MC9pbnNwZWN0b3IvdGFyZ2V0L3Byb3Zpc2lvbmFsLWxvYWQtY2FuY2Vscy1wcmV2aW91cy1sb2Fk
Lmh0bWwiOworICAgICAgICAgICAgbGV0IG5hdmlnYXRlZFR3aWNlID0gZmFsc2U7CisKKyAgICAg
ICAgICAgIFdJLnRhcmdldE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5UYXJnZXRNYW5hZ2Vy
LkV2ZW50LlRhcmdldEFkZGVkLCAoZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICBsZXQgdGFy
Z2V0ID0gZXZlbnQuZGF0YS50YXJnZXQ7CisgICAgICAgICAgICAgICAgbGV0IHRhcmdldElkID0g
c3RhYmxlVGFyZ2V0SWQodGFyZ2V0LmlkZW50aWZpZXIpOworICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QucGFzcyhgU2hvdWxkIHJlY2VpdmUgVGFyZ2V0QWRkZWQgZXZlbnQgZm9yIHRhcmdl
dCAke3RhcmdldElkfS5gKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRy
dWUodGFyZ2V0LmlzUHJvdmlzaW9uYWwsIGBUYXJnZXQgJHt0YXJnZXRJZH0gc2hvdWxkIGJlIHBy
b3Zpc2lvbmFsLmApOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VHJ1ZSh0
YXJnZXQuaXNQYXVzZWQsIGBUYXJnZXQgJHt0YXJnZXRJZH0gc2hvdWxkIGJlIHBhdXNlZCBvbiBz
dGFydC5gKTsKKyAgICAgICAgICAgICAgICBpZiAoIW5hdmlnYXRlZFR3aWNlKSB7CisgICAgICAg
ICAgICAgICAgICAgIG5hdmlnYXRlZFR3aWNlID0gdHJ1ZTsKKworICAgICAgICAgICAgICAgICAg
ICAvLyBTZW5kIHR3byBjb25zZXF1dGl2ZSBuYXZpZ2F0aW9uIHJlcXVlc3RzLiBUaGUgbGF0dGVy
IHdpbGwgY2FuY2VsIHByb3Zpc2lvbmFsCisgICAgICAgICAgICAgICAgICAgIC8vIGxvYWQgb2Yg
dGhlIGZvcm1lci4KKyAgICAgICAgICAgICAgICAgICAgV0kubWFpblRhcmdldC5QYWdlQWdlbnQu
bmF2aWdhdGUodXJsKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9KTsKKworICAg
ICAgICAgICAgV0kudGFyZ2V0TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLlRhcmdldE1hbmFn
ZXIuRXZlbnQuRGlkQ29tbWl0UHJvdmlzaW9uYWxUYXJnZXQsIChldmVudCkgPT4geworICAgICAg
ICAgICAgICAgIGxldCB7cHJldmlvdXNUYXJnZXRJZCwgdGFyZ2V0fSA9IGV2ZW50LmRhdGE7Cisg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5wYXNzKGBTaG91bGQgcmVjZWl2ZSBEaWRDb21t
aXRQcm92aXNpb25hbFRhcmdldCBldmVudCAke3N0YWJsZVRhcmdldElkKHByZXZpb3VzVGFyZ2V0
SWQpfSA9PiAke3N0YWJsZVRhcmdldElkKHRhcmdldC5pZGVudGlmaWVyKX0uYCk7CisgICAgICAg
ICAgICB9KTsKKworICAgICAgICAgICAgV0kudGFyZ2V0TWFuYWdlci5hZGRFdmVudExpc3RlbmVy
KFdJLlRhcmdldE1hbmFnZXIuRXZlbnQuVGFyZ2V0UmVtb3ZlZCwgKGV2ZW50KSA9PnsKKyAgICAg
ICAgICAgICAgICBsZXQgdGFyZ2V0SWQgPSBzdGFibGVUYXJnZXRJZChldmVudC5kYXRhLnRhcmdl
dC5pZGVudGlmaWVyKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnBhc3MoYFNob3Vs
ZCByZWNlaXZlIFRhcmdldFJlbW92ZWQgZXZlbnQgZm9yIHRhcmdldCAke3RhcmdldElkfWApOwor
ICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIC8vIFdhaXQgZm9yIHBhZ2UgcmVsb2FkIGV2
ZW50IHRvIGF2b2lkIHJhY2UgYmV0d2VlbiB0ZXN0IHJlc3VsdHMgZmx1c2hpbmcgYW5kIHRoZSB0
ZXN0IGNvbXBsZXRpb24uCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmF3YWl0RXZlbnQoRnJv
bnRlbmRUZXN0SGFybmVzcy5FdmVudC5UZXN0UGFnZURpZExvYWQpCisgICAgICAgICAgICAudGhl
bigoKSA9PiB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChsYXN0
QXNzaWduZWRJZCwgMywgYFNob3VsZCBoYXZlIHNlZW4gMyBkaWZmZXJlbnQgdGFyZ2V0cy5gKTsK
KyAgICAgICAgICAgIH0pCisgICAgICAgICAgICAudGhlbihyZXNvbHZlKTsKKworICAgICAgICAg
ICAgV0kubWFpblRhcmdldC5QYWdlQWdlbnQubmF2aWdhdGUodXJsKTsKKyAgICAgICAgfQorICAg
IH0pOworCisgICAgc3VpdGUucnVuVGVzdENhc2VzQW5kRmluaXNoKCk7Cit9Cis8L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxwPlRlc3QgdGhhdCB0d28gY29u
c2VxdXRpdmUgY3Jvc3MgZG9tYWluIG5hdmlnYXRpb24gcmVxdWVzdHMgd2lsbCByZXN1bHQgaW4g
dHdvCitwcm92aXNpb25hbCB0YXJnZXRzIGJlaW5nIGNyZWF0ZWQsIGZpcnN0IG9mIHdoaWNoIGlz
IGxhdGVyIGRlc3Ryb3llZCBhbmQgdGhlIHNlY29uZAoraXMgY29tbWl0dGVkLjwvcD4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9y
L3RhcmdldC9yZXNvdXJjZXMvaW5saW5lLWRlYnVnZ2VyLXN0YXRlbWVudC5odG1sIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvdGFyZ2V0L3Jlc291cmNlcy9pbmxpbmUtZGVidWdn
ZXItc3RhdGVtZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWMwYzAxNmE1YWQzOGNhNjhmOGVhN2IzNmRi
NDM1NDc5YzViYWEyMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL3RhcmdldC9yZXNvdXJjZXMvaW5saW5lLWRlYnVnZ2VyLXN0YXRlbWVudC5odG1s
CkBAIC0wLDAgKzEsMTkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRh
IGNoYXJzZXQ9InV0Zi04Ij4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvaW5zcGVjdG9y
LXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKworZGVidWdnZXI7CisKK2Z1bmN0aW9uIHRl
c3QoKQoreworICAgIEluc3BlY3RvclRlc3QuZmFpbCgiVGhpcyBjb2RlIHNob3VsZCBuZXZlciBh
Y3R1YWxseSBydW4uIEl0IGlzIGhlcmUgYmVjYXNlIGluc3BlY3Rvci10ZXN0LmpzIGhhcm5lc3Mg
cmVxdWlyZXMgYSB0ZXN0KCkgZnVuY3Rpb24uIik7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxwPlRlc3QgcGFnZSB1c2VkIHRvIGNoZWNrIHRoYXQg
ZXhlY3V0aW9uIHdpbGwgYnJlYWsgb24gaW5saW5lICdkZWJ1Z2dlcicgc3RhdGVtZW50IGFmdGVy
IGNyb3NzLW9yaWdpbiBuYXZpZ2F0aW9uLjwvcD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3RhcmdldC90YXJnZXQtZXZlbnRz
LWZvci1wcm92aXNpb25hbC1wYWdlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL3RhcmdldC90YXJnZXQtZXZlbnRzLWZvci1wcm92aXNpb25hbC1wYWdlLWV4
cGVjdGVkLnR4dAppbmRleCA2ZGVmN2UwYmIzNDRkZTMyZDZkNTVjNzgyYTk4ZjIxNjMwOTlmODdk
Li5kMDBlMzYzMmRjNWRkYmIyOWZmNzJjOGIxNzI4ZTk3NDkxZGUyNDI2IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci90YXJnZXQvdGFyZ2V0LWV2ZW50cy1mb3It
cHJvdmlzaW9uYWwtcGFnZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9pbnNwZWN0b3IvdGFyZ2V0L3RhcmdldC1ldmVudHMtZm9yLXByb3Zpc2lvbmFsLXBhZ2UtZXhw
ZWN0ZWQudHh0CkBAIC02LDExICs2LDExIEBAIFRlc3QgdGhhdCBjcm9zcyBkb21haW4gbmF2aWdh
dGlvbiByZXN1bHRzIGluIHRoZSBmb2xsb3dpbmcgc2VxdWVuY2Ugb2YgZXZlbnRzIGluCiAKID09
IFJ1bm5pbmcgdGVzdCBzdWl0ZTogVGFyZ2V0LlBTT04KIC0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBQ
cm92aXNpb25hbFBhZ2VUYXJnZXQKLVBBU1M6IFNob3VsZCByZWNlaXZlIHRhcmdldENyZWF0ZWQg
ZXZlbnQuCitQQVNTOiBTaG91bGQgcmVjZWl2ZSBUYXJnZXRBZGRlZCBldmVudC4KIFBBU1M6IFRh
cmdldCBzaG91bGQgYmUgcHJvdmlzaW9uYWwuCi1QQVNTOiBTaG91bGQgcmVjZWl2ZSBkaWRDb21t
aXRQcm92aXNpb25hbFRhcmdldCBldmVudC4KK1BBU1M6IFNob3VsZCByZWNlaXZlIFRhcmdldFJl
bW92ZWQgZXZlbnQuCitQQVNTOiBEZXN0cm95ZWQgdGFyZ2V0IHNob3VsZCBiZSBwcmV2aW91cyB0
YXJnZXQuCitQQVNTOiBTaG91bGQgcmVjZWl2ZSBEaWRDb21taXRQcm92aXNpb25hbFRhcmdldCBl
dmVudC4KIFBBU1M6IFByZXZpb3VzIHRhcmdldCBzaG91bGQgYmUgdGhlIGN1cnJlbnQgb25lLgog
UEFTUzogQ29tbWl0dGVkIHRhcmdldCBzaG91bGQgbWF0Y2ggcHJvdmlzaW9uYWwgdGFyZ2V0Lgot
UEFTUzogU2hvdWxkIHJlY2VpdmUgdGFyZ2V0RGVzdHJveWVkIGV2ZW50LgotUEFTUzogRGVzdHJv
eWVkIHRhcmdldCBzaG91bGQgYmUgcHJldmlvdXMgdGFyZ2V0LgogCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci90YXJnZXQvdGFyZ2V0LWV2ZW50cy1mb3ItcHJv
dmlzaW9uYWwtcGFnZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvdGFy
Z2V0L3RhcmdldC1ldmVudHMtZm9yLXByb3Zpc2lvbmFsLXBhZ2UuaHRtbAppbmRleCBlNzM5NTEz
OTM2NzQ0ZTU1NmVjMTEyYmRkNTJhYTFkOGU2NDk0YTkxLi5jNTFmYjRlMmY1OWMzNjkzZWRiYjUx
MTkzZWMzMjBlZmY2Zjk1ZDRlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci90YXJnZXQvdGFyZ2V0LWV2ZW50cy1mb3ItcHJvdmlzaW9uYWwtcGFnZS5odG1sCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3RhcmdldC90YXJnZXQtZXZlbnRz
LWZvci1wcm92aXNpb25hbC1wYWdlLmh0bWwKQEAgLTEzLDI4ICsxMywyNyBAQCBmdW5jdGlvbiB0
ZXN0KCkKICAgICAgICAgZGVzY3JpcHRpb246ICJDaGVjayB0aGF0IGEgbmV3IHRhcmdldCB3aWxs
IGJlIGNyZWF0ZWQgZm9yIHByb3Zpc2lvbmFsIHBhZ2UuIiwKICAgICAgICAgdGVzdChyZXNvbHZl
LCByZWplY3QpIHsKICAgICAgICAgICAgIGNvbnN0IG1haW5UYXJnZXRJZCA9IFdJLm1haW5UYXJn
ZXQuaWRlbnRpZmllcjsKLSAgICAgICAgICAgIGxldCBuZXdUYXJnZXRJZDsKKyAgICAgICAgICAg
IGxldCBuZXdUYXJnZXQ7CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChtYWluVGFy
Z2V0SWQpOwogICAgICAgICAgICAgbGV0IHJlbG9hZFByb21pc2UgPSBJbnNwZWN0b3JUZXN0LmF3
YWl0RXZlbnQoRnJvbnRlbmRUZXN0SGFybmVzcy5FdmVudC5UZXN0UGFnZURpZExvYWQpOwogCi0g
ICAgICAgICAgICBXSS50YXJnZXRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuVGFyZ2V0TWFu
YWdlci5FdmVudC5UYXJnZXRDcmVhdGVkLCAoZXZlbnQpID0+IHsKLSAgICAgICAgICAgICAgICBs
ZXQge3RhcmdldEluZm99ID0gZXZlbnQuZGF0YTsKLSAgICAgICAgICAgICAgICBuZXdUYXJnZXRJ
ZCA9IHRhcmdldEluZm8udGFyZ2V0SWQ7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5w
YXNzKGBTaG91bGQgcmVjZWl2ZSB0YXJnZXRDcmVhdGVkIGV2ZW50LmApOwotICAgICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VHJ1ZSh0YXJnZXRJbmZvLmlzUHJvdmlzaW9uYWwsICJU
YXJnZXQgc2hvdWxkIGJlIHByb3Zpc2lvbmFsLiIpOworICAgICAgICAgICAgV0kudGFyZ2V0TWFu
YWdlci5hZGRFdmVudExpc3RlbmVyKFdJLlRhcmdldE1hbmFnZXIuRXZlbnQuVGFyZ2V0QWRkZWQs
IChldmVudCkgPT4geworICAgICAgICAgICAgICAgIG5ld1RhcmdldCA9IGV2ZW50LmRhdGEudGFy
Z2V0OworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QucGFzcyhgU2hvdWxkIHJlY2VpdmUg
VGFyZ2V0QWRkZWQgZXZlbnQuYCk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBl
Y3RUcnVlKG5ld1RhcmdldC5pc1Byb3Zpc2lvbmFsLCAiVGFyZ2V0IHNob3VsZCBiZSBwcm92aXNp
b25hbC4iKTsKICAgICAgICAgICAgIH0pOwogCiAgICAgICAgICAgICBXSS50YXJnZXRNYW5hZ2Vy
LmFkZEV2ZW50TGlzdGVuZXIoV0kuVGFyZ2V0TWFuYWdlci5FdmVudC5EaWRDb21taXRQcm92aXNp
b25hbFRhcmdldCwgKGV2ZW50KSA9PiB7Ci0gICAgICAgICAgICAgICAgbGV0IHtwcmV2aW91c1Rh
cmdldElkLCB0YXJnZXRJbmZvfSA9IGV2ZW50LmRhdGE7Ci0gICAgICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5wYXNzKGBTaG91bGQgcmVjZWl2ZSBkaWRDb21taXRQcm92aXNpb25hbFRhcmdldCBl
dmVudC5gKTsKKyAgICAgICAgICAgICAgICBsZXQge3ByZXZpb3VzVGFyZ2V0SWQsIHRhcmdldH0g
PSBldmVudC5kYXRhOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QucGFzcyhgU2hvdWxk
IHJlY2VpdmUgRGlkQ29tbWl0UHJvdmlzaW9uYWxUYXJnZXQgZXZlbnQuYCk7CiAgICAgICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChwcmV2aW91c1RhcmdldElkLCBtYWluVGFy
Z2V0SWQsICJQcmV2aW91cyB0YXJnZXQgc2hvdWxkIGJlIHRoZSBjdXJyZW50IG9uZS4iKTsKLSAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHRhcmdldEluZm8udGFyZ2V0
SWQsIG5ld1RhcmdldElkLCAiQ29tbWl0dGVkIHRhcmdldCBzaG91bGQgbWF0Y2ggcHJvdmlzaW9u
YWwgdGFyZ2V0LiIpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwo
dGFyZ2V0LCBuZXdUYXJnZXQsICJDb21taXR0ZWQgdGFyZ2V0IHNob3VsZCBtYXRjaCBwcm92aXNp
b25hbCB0YXJnZXQuIik7CiAgICAgICAgICAgICB9KTsKIAotICAgICAgICAgICAgV0kudGFyZ2V0
TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLlRhcmdldE1hbmFnZXIuRXZlbnQuVGFyZ2V0RGVz
dHJveWVkLCAoZXZlbnQpID0+ewotICAgICAgICAgICAgICAgIGxldCB7dGFyZ2V0SWR9ID0gZXZl
bnQuZGF0YTsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnBhc3MoYFNob3VsZCByZWNl
aXZlIHRhcmdldERlc3Ryb3llZCBldmVudC5gKTsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmV4cGVjdEVxdWFsKHRhcmdldElkLCBtYWluVGFyZ2V0SWQsICJEZXN0cm95ZWQgdGFyZ2V0
IHNob3VsZCBiZSBwcmV2aW91cyB0YXJnZXQuIik7CisgICAgICAgICAgICBXSS50YXJnZXRNYW5h
Z2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuVGFyZ2V0TWFuYWdlci5FdmVudC5UYXJnZXRSZW1vdmVk
LCAoZXZlbnQpID0+eworICAgICAgICAgICAgICAgIGxldCB0YXJnZXQgPSBldmVudC5kYXRhLnRh
cmdldDsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnBhc3MoYFNob3VsZCByZWNlaXZl
IFRhcmdldFJlbW92ZWQgZXZlbnQuYCk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5l
eHBlY3RFcXVhbCh0YXJnZXQuaWRlbnRpZmllciwgbWFpblRhcmdldElkLCAiRGVzdHJveWVkIHRh
cmdldCBzaG91bGQgYmUgcHJldmlvdXMgdGFyZ2V0LiIpOwogCiAgICAgICAgICAgICAgICAgLy8g
V2FpdCBmb3IgcGFnZSByZWxvYWQgZXZlbnQgdG8gYXZvaWQgcmFjZSBiZXR3ZWVuIHRlc3QgcmVz
dWx0cyBmbHVzaGluZyBhbmQgdGhlIHRlc3QgY29tcGxldGlvbi4KICAgICAgICAgICAgICAgICBy
ZWxvYWRQcm9taXNlLnRoZW4ocmVzb2x2ZSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>384765</attachid>
            <date>2019-12-03 15:44:28 -0800</date>
            <delta_ts>2019-12-03 17:14:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204170-20191203154427.patch</filename>
            <type>text/plain</type>
            <size>51025</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzMDQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
NDY2ZjVlYjI5MTEzYzMyODBmOGQ2NjMyMGQxMDQ0NTEwM2IwMjdmLi5kM2FkMzkxMGQ4MmExMGQy
MWY0YTdiN2UwODc2YjZlNjI5ZjMxZGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNSBAQAorMjAxOS0xMS0xMyAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBhbGxvdyBpbnNwZWN0b3IgdG8gcGF1c2Ug
cHJvdmlzaW9uYWwgcGFnZSBsb2FkIGFuZCByZXN0b3JlIGl0cyBzdGF0ZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0MTcwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgYW4gb3B0aW9uIHRvIFRh
cmdldCBkb21haW4gdG8gcGF1c2UgYWxsIG5ldyB0YXJnZXRzIG9uIHN0YXJ0IHdhaXRpbmcgZm9y
CisgICAgICAgIGV4cGxpY2l0ICdyZXN1bWUnIGNvbW1hbmQgZnJvbSB0aGUgaW5zcGVjdG9yIGZy
b250LWVuZC4gVGhpcyBhbGxvd3MgdG8gY29uZmlndXJlCisgICAgICAgIGluc3BlY3RvciBiYWNr
ZW5kIChpbmNsdWRpbmcgdXNlciBhZ2VudCBvdmVycmlkZXMsIGJyZWFrcG9pbnRzIGFuZCBpbnN0
cnVtZW50YXRpb24pCisgICAgICAgIGJlZm9yZSBuYXZpZ2F0aW9uIHN0YXJ0cy4KKworICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JUYXJnZXQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvclRhcmdldEFnZW50LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVj
dG9yVGFyZ2V0QWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAg
KEluc3BlY3Rvcjo6SW5zcGVjdG9yVGFyZ2V0QWdlbnQ6OnNldFBhdXNlT25TdGFydCk6CisgICAg
ICAgIChJbnNwZWN0b3I6Okluc3BlY3RvclRhcmdldEFnZW50OjpyZXN1bWUpOgorICAgICAgICAo
SW5zcGVjdG9yOjpidWlsZFRhcmdldEluZm9PYmplY3QpOgorICAgICAgICAoSW5zcGVjdG9yOjpJ
bnNwZWN0b3JUYXJnZXRBZ2VudDo6dGFyZ2V0Q3JlYXRlZCk6CisgICAgICAgICogaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JUYXJnZXRBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9wcm90
b2NvbC9UYXJnZXQuanNvbjoKKwogMjAxOS0xMi0wMiAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFw
cGxlLmNvbT4KIAogICAgICAgICBQcm9wZXJ0eVNsb3Qgc2hvdWxkIG5vdCBoYXZlIEN1c3RvbXMg
aGF2ZSBhIFByb3BlcnR5T2Zmc2V0IG9mIHplcm8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4
IDVlMWRhMzRhN2ZmNDY0OTQ1MzA0MzhjZTVjNzAzYmM2MWY3ZTdhNjQuLjA2OWIzMjc3M2ZhMmIx
NmM0YjczYTExM2Y1ZTA0MGM4ZjcyOTJkYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDYzIEBACisyMDE5LTExLTEzICBZdXJ5IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGFsbG93IGluc3BlY3RvciB0byBwYXVz
ZSBwcm92aXNpb25hbCBwYWdlIGxvYWQgYW5kIHJlc3RvcmUgaXRzIHN0YXRlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDQxNzAKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBbGwgbmV3IHRhcmdldHMgYXJl
IG5vdyBhdXRvbWF0aWNhbGx5IHBhdXNlZCBvbiBzdGFydC4gRm9yIHN1Y2ggcHJvdmlzaW9uYWwg
dGFyZ2V0cyB0YXJnZXQKKyAgICAgICAgbWFuYWdlciB3aWxsIHJ1biByZWd1bGFyIGluaXRpbGl6
YXRpb24gY29kZSAoZW5hYmxlIGFnZW50cyBldGMuKSBhbmQgdGhlbiByZXN1bWUgbG9hZGluZyBv
ZgorICAgICAgICB0aGUgdGFyZ2V0LiBSZXNwb25zZXMgYW5kIGV2ZW50cyBmcm9tIHRoZSB0YXJn
ZXQgYXJlIGRlZmZlcnJlZCB1bnRpbCB0aGUgdGFyZ2V0IGlzIGNvbW1pdHRlZAorICAgICAgICBh
bmQgYmVjb21lcyBjdXJyZW50IG1haW4gdGFyZ2V0LiBXaGVuIHRoZSB0YXJnZXQgbWFuYWdlciBy
ZWNlaXZlcyBldmVudCB0aGF0IHRoZSBwcm92aXNpb25hbAorICAgICAgICB0YXJnZXQgaGFzIGJl
ZW4gY29tbWl0dGVkIGFsbCBhY2N1bXVsYXRlZCBwcm90b2NvbCBtZXNzYWdlcyBhcmUgcmVwbGF5
ZWQgYW5kIGdvaW5nIGZvcndhcmQgYWxsCisgICAgICAgIG5ldyBtaXNzYWdlcyB3aWxsIGJlIGRp
c3BhdGNoZWQgYXMgdXN1YWwuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJz
L0NTU01hbmFnZXIuanM6CisgICAgICAgIChXSS5DU1NNYW5hZ2VyLnByb3RvdHlwZS5fcmVzb3Vy
Y2VDb250ZW50RGlkQ2hhbmdlLmFwcGx5U3R5bGVTaGVldENoYW5nZXMuc3R5bGVTaGVldEZvdW5k
KToKKyAgICAgICAgKFdJLkNTU01hbmFnZXIucHJvdG90eXBlLl9yZXNvdXJjZUNvbnRlbnREaWRD
aGFuZ2UuYXBwbHlTdHlsZVNoZWV0Q2hhbmdlcyk6CisgICAgICAgIChXSS5DU1NNYW5hZ2VyLnBy
b3RvdHlwZS5fcmVzb3VyY2VDb250ZW50RGlkQ2hhbmdlKToKKyAgICAgICAgKFdJLkNTU01hbmFn
ZXIucHJvdG90eXBlLl91cGRhdGVSZXNvdXJjZUNvbnRlbnQuZmV0Y2hlZFN0eWxlU2hlZXRDb250
ZW50KToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1RhcmdldE1hbmFnZXIu
anM6CisgICAgICAgIChXSS5UYXJnZXRNYW5hZ2VyKToKKyAgICAgICAgKFdJLlRhcmdldE1hbmFn
ZXIucHJvdG90eXBlLmNyZWF0ZU11bHRpcGxleGluZ0JhY2tlbmRUYXJnZXQpOgorICAgICAgICAo
V0kuVGFyZ2V0TWFuYWdlci5wcm90b3R5cGUudGFyZ2V0Q3JlYXRlZCk6CisgICAgICAgIChXSS5U
YXJnZXRNYW5hZ2VyLnByb3RvdHlwZS5kaWRDb21taXRQcm92aXNpb25hbFRhcmdldCk6CisgICAg
ICAgIChXSS5UYXJnZXRNYW5hZ2VyLnByb3RvdHlwZS5kaXNwYXRjaE1lc3NhZ2VGcm9tVGFyZ2V0
KToKKyAgICAgICAgKFdJLlRhcmdldE1hbmFnZXIucHJvdG90eXBlLl9jb25uZWN0VG9UYXJnZXQp
OgorICAgICAgICAoV0kuVGFyZ2V0TWFuYWdlci5wcm90b3R5cGUuX2Rlc3Ryb3lUYXJnZXQpOgor
ICAgICAgICAoV0kuVGFyZ2V0TWFuYWdlci5wcm90b3R5cGUuX2NyZWF0ZVRhcmdldCk6CisgICAg
ICAgIChXSS5UYXJnZXRNYW5hZ2VyLnByb3RvdHlwZS5fY2hlY2tBbmRIYW5kbGVQYWdlVGFyZ2V0
VHJhbnNpdGlvbik6CisgICAgICAgIChXSS5UYXJnZXRNYW5hZ2VyLnByb3RvdHlwZS5fY2hlY2tB
bmRIYW5kbGVQYWdlVGFyZ2V0VGVybWluYXRpb24pOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2Uv
TW9kZWxzL1NvdXJjZUNvZGUuanM6CisgICAgICAgIChXSS5Tb3VyY2VDb2RlLnByb3RvdHlwZS5n
ZXQgY3VycmVudFJldmlzaW9uKToKKyAgICAgICAgKFdJLlNvdXJjZUNvZGUucHJvdG90eXBlLmdl
dCBlZGl0YWJsZVJldmlzaW9uKToKKyAgICAgICAgKFdJLlNvdXJjZUNvZGUucHJvdG90eXBlLmdl
dCBjb250ZW50KToKKyAgICAgICAgKFdJLlNvdXJjZUNvZGUucHJvdG90eXBlLnJldmlzaW9uQ29u
dGVudERpZENoYW5nZSk6CisgICAgICAgICogVXNlckludGVyZmFjZS9Qcm90b2NvbC9Db25uZWN0
aW9uLmpzOgorICAgICAgICAoSW5zcGVjdG9yQmFja2VuZC5Db25uZWN0aW9uKToKKyAgICAgICAg
KEluc3BlY3RvckJhY2tlbmQuQ29ubmVjdGlvbi5wcm90b3R5cGUuYWRkUHJvdmlzaW9uYWxNZXNz
YWdlKToKKyAgICAgICAgKEluc3BlY3RvckJhY2tlbmQuQ29ubmVjdGlvbi5wcm90b3R5cGUuZGlz
cGF0Y2hQcm92aXNpb25hbE1lc3NhZ2VzKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Byb3Rv
Y29sL1BhZ2VUYXJnZXQuanM6CisgICAgICAgIChXSS5QYWdlVGFyZ2V0KToKKyAgICAgICAgKiBV
c2VySW50ZXJmYWNlL1Byb3RvY29sL1RhcmdldC5qczoKKyAgICAgICAgKFdJLlRhcmdldCk6Cisg
ICAgICAgIChXSS5UYXJnZXQucHJvdG90eXBlLmdldCBpc1Byb3Zpc2lvbmFsKToKKyAgICAgICAg
KFdJLlRhcmdldC5wcm90b3R5cGUuc2V0IGlzUHJvdmlzaW9uYWwpOgorICAgICAgICAqIFVzZXJJ
bnRlcmZhY2UvVmlld3MvRm9udFJlc291cmNlQ29udGVudFZpZXcuanM6CisgICAgICAgIChXSS5G
b250UmVzb3VyY2VDb250ZW50Vmlldy5wcm90b3R5cGUuZHJvcFpvbmVIYW5kbGVEcm9wKToKKyAg
ICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0ltYWdlUmVzb3VyY2VDb250ZW50Vmlldy5qczoK
KyAgICAgICAgKFdJLkltYWdlUmVzb3VyY2VDb250ZW50Vmlldy5wcm90b3R5cGUuZHJvcFpvbmVI
YW5kbGVEcm9wKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL05hdmlnYXRpb25TaWRl
YmFyUGFuZWwuanM6CisgICAgICAgIChXSS5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLnByb3RvdHlw
ZS5fY2hlY2tFbGVtZW50c0ZvclBlbmRpbmdWaWV3U3RhdGVDb29raWUudHJlZUVsZW1lbnRNYXRj
aGVzQ29va2llKToKKyAgICAgICAgKFdJLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwucHJvdG90eXBl
Ll9jaGVja0VsZW1lbnRzRm9yUGVuZGluZ1ZpZXdTdGF0ZUNvb2tpZSk6CisgICAgICAgICogVXNl
ckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZUNvbnRlbnRWaWV3LmpzOgorICAgICAgICAoV0kuUmVz
b3VyY2VDb250ZW50Vmlldy5wcm90b3R5cGUuX2NvbnRlbnRBdmFpbGFibGUpOgorICAgICAgICAo
V0kuUmVzb3VyY2VDb250ZW50Vmlldy5wcm90b3R5cGUuX2hhbmRsZUltcG9ydExvY2FsUmVzb3Vy
Y2VPdmVycmlkZSk6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9TY3JpcHRDb250ZW50
Vmlldy5qczoKKyAgICAgICAgKFdJLlNjcmlwdENvbnRlbnRWaWV3LnByb3RvdHlwZS5faGFuZGxl
VGV4dEVkaXRvckNvbnRlbnREaWRDaGFuZ2UpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmll
d3MvVGV4dFJlc291cmNlQ29udGVudFZpZXcuanM6CisgICAgICAgIChXSS5UZXh0UmVzb3VyY2VD
b250ZW50Vmlldy5wcm90b3R5cGUuX3RleHRFZGl0b3JDb250ZW50RGlkQ2hhbmdlKToKKwogMjAx
OS0xMi0wMiAgTmlraXRhIFZhc2lseWV2ICA8bnZhc2lseWV2QGFwcGxlLmNvbT4KIAogICAgICAg
ICBXZWIgSW5zcGVjdG9yOiBQcm92aWRlIFVJIHRvIGNvbnZlcnQgYmV0d2VlbiBzUkdCIGFuZCBw
MyBjb2xvciBzcGFjZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNzQ1MjYyYjY3NzU2NDI4NTM3ZjBmN2Q3YjQ0MmYy
ZjhjZTQ4MWRmNC4uMzViODA4ZWM3NzNhODI1OGRjYTNhYzhiYzRiYmZmNmQ5ZDA5ZWZhMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwzNSBAQAorMjAxOS0xMS0xMyAgWXVyeSBTZW1pa2hhdHNreSAgPHl1
cnlzQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBhbGxvdyBpbnNwZWN0
b3IgdG8gcGF1c2UgcHJvdmlzaW9uYWwgcGFnZSBsb2FkIGFuZCByZXN0b3JlIGl0cyBzdGF0ZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0MTcwCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUHJvdmlzaW9u
YWwgcGFnZSBsb2FkaW5nIGNhbiBiZSBkZWZmZXJlZCBpZiBpbnNwZWN0b3IgZnJvbnQtZW5kIGlz
IGNvbm5lY3RlZC4gVGhpcworICAgICAgICBhbGxvd3MgdG8gY29uZmlndXJlIGluc3BlY3RvciBi
YWNrZW5kIGluIHRoZSBwcm92aXNpb25hbCBwYWdlIGJlZm9yZSBsb2FkIHJlcXVlc3QKKyAgICAg
ICAgaXMgc2VudC4gSWYgaW5zcGVjdG9yIGZyb250LWVuZCBpcyBub3QgY29ubmVjdGVkIHByb3Zp
c2lvbmFsIGxvYWRpbmcgd2lsbCBjb25pdGludWUKKyAgICAgICAgZXhhY3RseSBhcyBiZWZvcmUu
CisKKyAgICAgICAgVGVzdHM6IGh0dHAvdGVzdHMvaW5zcGVjdG9yL3RhcmdldC9wYXVzZS1vbi1p
bmxpbmUtZGVidWdnZXItc3RhdGVtZW50Lmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMv
aW5zcGVjdG9yL3RhcmdldC9wcm92aXNpb25hbC1sb2FkLWNhbmNlbHMtcHJldmlvdXMtbG9hZC5o
dG1sCisKKyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yVGFyZ2V0UHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpJbnNwZWN0b3JUYXJnZXRQcm94eTo6ZGlzY29ubmVjdCk6CisgICAgICAg
IChXZWJLaXQ6Okluc3BlY3RvclRhcmdldFByb3h5OjpyZXN1bWVUYXJnZXQpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9JbnNwZWN0b3JUYXJnZXRQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Q
cm92aXNpb25hbFBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlByb3Zpc2lvbmFsUGFn
ZVByb3h5OjpQcm92aXNpb25hbFBhZ2VQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlByb3Zpc2lv
bmFsUGFnZVByb3h5OjpyZXN1bWVMb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6UHJvdmlzaW9u
YWxQYWdlUHJveHk6OnJ1bldoZW5Mb2FkaW5nUmVzdW1lZCk6CisgICAgICAgICogVUlQcm9jZXNz
L1Byb3Zpc2lvbmFsUGFnZVByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OlByb3Zpc2lvbmFsUGFn
ZVByb3h5OjpzaG91bGRQYXVzZUxvYWRpbmcgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VJ
bnNwZWN0b3JDb250cm9sbGVyOjpkaWRDcmVhdGVQcm92aXNpb25hbFBhZ2UpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlci5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNv
bnRpbnVlTmF2aWdhdGlvbkluTmV3UHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6c3BlZWNoU3ludGhlc2lzUmVzdW1lKToKKwogMjAxOS0xMi0wMyAgQ2hyaXMgRHVtZXog
IDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFBhZ2VDb25maWd1cmF0aW9uOjphbHRlcm5h
dGl2ZVRleHRDbGllbnQgc2hvdWxkIHVzZSBhIHNtYXJ0IHBvaW50ZXIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGFyZ2V0LmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRhcmdldC5oCmluZGV4IGE5ZjA0Yjhh
MGM5YWZhZWVhNGZlOGMwYTRkMDdkODIzMGE5YzM1NjAuLmY5OGFjYjAyMjUzMjIzYWI1MjY1Mjlh
YWY4NGRiNWNiMzllY2VhYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yVGFyZ2V0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JUYXJnZXQuaApAQCAtNDcsMTEgKzQ3LDI1IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIEluc3BlY3RvclRhcmdldFR5cGUgdHlwZSgpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1
YWwgYm9vbCBpc1Byb3Zpc2lvbmFsKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29s
IGlzUGF1c2VkKCkgY29uc3QgeyByZXR1cm4gbV9pc1BhdXNlZDsgfQorICAgIHZvaWQgc2V0UGF1
c2VkKGJvb2wgcGF1c2VkKQorICAgIHsKKyAgICAgICAgbV9pc1BhdXNlZCA9IHBhdXNlZDsKKyAg
ICAgICAgaWYgKCFtX2lzUGF1c2VkICYmIG1fcmVzdW1lQ2FsbGJhY2spIHsKKyAgICAgICAgICAg
IG1fcmVzdW1lQ2FsbGJhY2soKTsKKyAgICAgICAgICAgIG1fcmVzdW1lQ2FsbGJhY2sgPSBudWxs
cHRyOworICAgICAgICB9CisgICAgfQorICAgIHZvaWQgc2V0UmVzdW1lQ2FsbGJhY2soV1RGOjpG
dW5jdGlvbjx2b2lkKCk+JiYgY2FsbGJhY2spIHsgbV9yZXN1bWVDYWxsYmFjayA9IFdURk1vdmUo
Y2FsbGJhY2spOyB9CiAKICAgICAvLyBDb25uZWN0aW9uIG1hbmFnZW1lbnQuCiAgICAgdmlydHVh
bCB2b2lkIGNvbm5lY3QoRnJvbnRlbmRDaGFubmVsOjpDb25uZWN0aW9uVHlwZSkgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZW5kTWVz
c2FnZVRvVGFyZ2V0QmFja2VuZChjb25zdCBTdHJpbmcmKSA9IDA7CisKK3ByaXZhdGU6CisgICAg
V1RGOjpGdW5jdGlvbjx2b2lkKCk+IG1fcmVzdW1lQ2FsbGJhY2s7CisgICAgYm9vbCBtX2lzUGF1
c2VkIHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGFyZ2V0
QWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yVGFyZ2V0QWdlbnQuY3BwCmluZGV4IDExNzcwOTBmYzE4NjIzZWY1MDFjOWFkNGMzMzg5YmMy
ZGE5MTA3MWUuLjZjMzdlNjQxYTA2MWVkZjk2OGY3MmNkNDk1ZWUzOTczNjRmNTdkNDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRh
cmdldEFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JUYXJnZXRBZ2VudC5jcHAKQEAgLTUyLDYgKzUyLDI4IEBAIHZvaWQgSW5zcGVj
dG9yVGFyZ2V0QWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKERpc2Nvbm5lY3RS
ZWFzb24pCiAgICAgZGlzY29ubmVjdEZyb21UYXJnZXRzKCk7CiAKICAgICBtX2lzQ29ubmVjdGVk
ID0gZmFsc2U7CisgICAgbV9zaG91bGRQYXVzZU9uU3RhcnQgPSBmYWxzZTsKK30KKwordm9pZCBJ
bnNwZWN0b3JUYXJnZXRBZ2VudDo6c2V0UGF1c2VPblN0YXJ0KEVycm9yU3RyaW5nJiwgYm9vbCBw
YXVzZU9uU3RhcnQpCit7CisgICAgbV9zaG91bGRQYXVzZU9uU3RhcnQgPSBwYXVzZU9uU3RhcnQ7
Cit9CisKK3ZvaWQgSW5zcGVjdG9yVGFyZ2V0QWdlbnQ6OnJlc3VtZShFcnJvclN0cmluZyYgZXJy
b3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgdGFyZ2V0SWQpCit7CisgICAgYXV0byogdGFyZ2V0ID0g
bV90YXJnZXRzLmdldCh0YXJnZXRJZCk7CisgICAgaWYgKCF0YXJnZXQpIHsKKyAgICAgICAgZXJy
b3JTdHJpbmcgPSAiTWlzc2luZyB0YXJnZXQgZm9yIGdpdmVuIHRhcmdldElkIl9zOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCF0YXJnZXQtPmlzUGF1c2VkKCkpIHsKKyAgICAg
ICAgZXJyb3JTdHJpbmcgPSAiVGFyZ2V0IGZvciBnaXZlbiB0YXJnZXRJZCBpcyBub3QgcGF1c2Vk
Il9zOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgdGFyZ2V0LT5zZXRQYXVzZWQoZmFs
c2UpOwogfQogCiB2b2lkIEluc3BlY3RvclRhcmdldEFnZW50OjpzZW5kTWVzc2FnZVRvVGFyZ2V0
KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiB0YXJnZXRJZCwgY29uc3Qg
U3RyaW5nJiBtZXNzYWdlKQpAQCAtOTUsNiArMTE3LDggQEAgc3RhdGljIFJlZjxQcm90b2NvbDo6
VGFyZ2V0OjpUYXJnZXRJbmZvPiBidWlsZFRhcmdldEluZm9PYmplY3QoY29uc3QgSW5zcGVjdG9y
VGEKICAgICAgICAgLnJlbGVhc2UoKTsKICAgICBpZiAodGFyZ2V0LmlzUHJvdmlzaW9uYWwoKSkK
ICAgICAgICAgcmVzdWx0LT5zZXRJc1Byb3Zpc2lvbmFsKHRydWUpOworICAgIGlmICh0YXJnZXQu
aXNQYXVzZWQoKSkKKyAgICAgICAgcmVzdWx0LT5zZXRJc1BhdXNlZCh0cnVlKTsKICAgICByZXR1
cm4gcmVzdWx0OwogfQogCkBAIC0xMDYsNiArMTMwLDcgQEAgdm9pZCBJbnNwZWN0b3JUYXJnZXRB
Z2VudDo6dGFyZ2V0Q3JlYXRlZChJbnNwZWN0b3JUYXJnZXQmIHRhcmdldCkKICAgICBpZiAoIW1f
aXNDb25uZWN0ZWQpCiAgICAgICAgIHJldHVybjsKIAorICAgIHRhcmdldC5zZXRQYXVzZWQobV9z
aG91bGRQYXVzZU9uU3RhcnQpOwogICAgIHRhcmdldC5jb25uZWN0KGNvbm5lY3Rpb25UeXBlKCkp
OwogCiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnRhcmdldENyZWF0ZWQoYnVpbGRUYXJnZXRJ
bmZvT2JqZWN0KHRhcmdldCkpOwpAQCAtMTE4LDggKzE0Myw2IEBAIHZvaWQgSW5zcGVjdG9yVGFy
Z2V0QWdlbnQ6OnRhcmdldERlc3Ryb3llZChJbnNwZWN0b3JUYXJnZXQmIHRhcmdldCkKICAgICBp
ZiAoIW1faXNDb25uZWN0ZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIHRhcmdldC5kaXNjb25u
ZWN0KCk7Ci0KICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+dGFyZ2V0RGVzdHJveWVkKHRhcmdl
dC5pZGVudGlmaWVyKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUYXJnZXRBZ2VudC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGFyZ2V0QWdlbnQuaAppbmRleCAzOGNi
MzE4OTg2YjMxYzRkZWQxOWJhOWJlYWU3ODU1ZDJiNTRjMjNhLi4xZWI3YWJiMmZhMjFkN2E4ZWMw
ODMzMTYwZjUzZTVjNTIzZWM0MzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUYXJnZXRBZ2VudC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRhcmdldEFnZW50LmgKQEAgLTQ5
LDYgKzQ5LDggQEAgcHVibGljOgogICAgIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tl
bmQoRGlzY29ubmVjdFJlYXNvbikgZmluYWw7CiAKICAgICAvLyBUYXJnZXRCYWNrZW5kRGlzcGF0
Y2hlckhhbmRsZXIKKyAgICB2b2lkIHNldFBhdXNlT25TdGFydChFcnJvclN0cmluZyYsIGJvb2wg
cGF1c2VPblN0YXJ0KSBvdmVycmlkZTsKKyAgICB2b2lkIHJlc3VtZShFcnJvclN0cmluZyYsIGNv
bnN0IFN0cmluZyYgdGFyZ2V0SWQpIG92ZXJyaWRlOwogICAgIHZvaWQgc2VuZE1lc3NhZ2VUb1Rh
cmdldChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgdGFyZ2V0SWQsIGNvbnN0IFN0cmluZyYg
bWVzc2FnZSkgZmluYWw7CiAKICAgICAvLyBUYXJnZXQgbGlmZWN5Y2xlLgpAQCAtNzAsNiArNzIs
NyBAQCBwcml2YXRlOgogICAgIFJlZjxUYXJnZXRCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5k
RGlzcGF0Y2hlcjsKICAgICBIYXNoTWFwPFN0cmluZywgSW5zcGVjdG9yVGFyZ2V0Kj4gbV90YXJn
ZXRzOwogICAgIGJvb2wgbV9pc0Nvbm5lY3RlZCB7IGZhbHNlIH07CisgICAgYm9vbCBtX3Nob3Vs
ZFBhdXNlT25TdGFydCB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvVGFy
Z2V0Lmpzb24gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL1Rhcmdl
dC5qc29uCmluZGV4IDI0MGNkNDJlNjdlMzI1MGU0MzRjMGJmNmY5ZDE2MTY4NTA1YThjMjIuLjUy
OTIwY2RlZDI0YTljNmIwZWY2ZmI0ZTUxODY2NDk1NWRiNGY5ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvVGFyZ2V0Lmpzb24KKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9UYXJnZXQuanNvbgpAQCAtMTAs
MTEgKzEwLDI2IEBACiAgICAgICAgICAgICAicHJvcGVydGllcyI6IFsKICAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogInRhcmdldElkIiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjog
IlVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgdGFyZ2V0LiIgfSwKICAgICAgICAgICAgICAgICB7
ICJuYW1lIjogInR5cGUiLCAidHlwZSI6ICJzdHJpbmciLCAiZW51bSI6IFsicGFnZSIsICJzZXJ2
aWNlLXdvcmtlciIsICJ3b3JrZXIiXSB9LAotICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiaXNQ
cm92aXNpb25hbCIsICJ0eXBlIjogImJvb2xlYW4iLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3Jp
cHRpb24iOiAiVHJ1ZSB2YWx1ZSBpbmRpY2F0ZXMgdGhhdCB0aGlzIGlzIGEgcHJvdmlzaW9uYWwg
cGFnZSB0YXJnZXQgaS5lLiBTdWNoIHRhcmdldCBtYXkgYmUgY3JlYXRlZCB3aGVuIGN1cnJlbnQg
cGFnZSBzdGFydHMgY3Jvc3Mtb3JpZ2luIG5hdmlnYXRpb24uIEV2ZW50dWFsbHkgZWFjaCBwcm92
aXNpb25hbCB0YXJnZXQgaXMgZWl0aGVyIGNvbW1pdHRlZCBhbmQgc3dhcHMgd2l0aCB0aGUgY3Vy
cmVudCB0YXJnZXQgb3IgZ2V0cyBkZXN0cm95ZWQsIGUuZy4gaW4gY2FzZSBvZiBsb2FkIHJlcXVl
c3QgZmFpbHVyZS4iIH0KKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImlzUHJvdmlzaW9uYWwi
LCAidHlwZSI6ICJib29sZWFuIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIldo
ZXRoZXIgdGhpcyBpcyBhIHByb3Zpc2lvbmFsIHBhZ2UgdGFyZ2V0LiIgfSwKKyAgICAgICAgICAg
ICAgICB7ICJuYW1lIjogImlzUGF1c2VkIiwgInR5cGUiOiAiYm9vbGVhbiIsICJvcHRpb25hbCI6
IHRydWUsICJkZXNjcmlwdGlvbiI6ICJXaGV0aGVyIHRoZSB0YXJnZXQgaXMgcGF1c2VkIG9uIHN0
YXJ0IGFuZCBoYXMgdG8gYmUgZXhwbGljaXRlbHkgcmVzdW1lZCBieSBpbnNwZWN0b3IuIiB9CiAg
ICAgICAgICAgICBdCiAgICAgICAgIH0KICAgICBdLAogICAgICJjb21tYW5kcyI6IFsKKyAgICAg
ICAgeworICAgICAgICAgICAgIm5hbWUiOiAic2V0UGF1c2VPblN0YXJ0IiwKKyAgICAgICAgICAg
ICJkZXNjcmlwdGlvbiI6ICJJZiBzZXQgdG8gdHJ1ZSwgbmV3IHRhcmdldHMgd2lsbCBiZSBwYXVz
ZWQgb24gc3RhcnQgd2FpdGluZyBmb3IgcmVzdW1lIGNvbW1hbmQuIE90aGVyIGNvbW1hbmRzIGNh
biBiZSBkaXNwYXRjaGVkIG9uIHRoZSB0YXJnZXQgYmVmb3JlIGl0IGlzIHJlc3VtZWQuIiwKKyAg
ICAgICAgICAgICJwYXJhbWV0ZXJzIjogWworICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicGF1
c2VPblN0YXJ0IiwgInR5cGUiOiAiYm9vbGVhbiIsICJkZXNjcmlwdGlvbiI6ICJJZiBzZXQgdG8g
dHJ1ZSwgbmV3IHRhcmdldHMgd2lsbCBiZSBwYXVzZWQgb24gc3RhcnQgd2FpdGluZyBmb3IgcmVz
dW1lIGNvbW1hbmQuIiB9CisgICAgICAgICAgICBdCisgICAgICAgIH0sCisgICAgICAgIHsKKyAg
ICAgICAgICAgICJuYW1lIjogInJlc3VtZSIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAi
V2lsbCByZXN1bWUgdGFyZ2V0IGlmIGl0IHdhcyBwYXVzZWQgb24gc3RhcnQuIiwKKyAgICAgICAg
ICAgICJwYXJhbWV0ZXJzIjogWworICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAidGFyZ2V0SWQi
LCAidHlwZSI6ICJzdHJpbmciIH0KKyAgICAgICAgICAgIF0KKyAgICAgICAgfSwKICAgICAgICAg
ewogICAgICAgICAgICAgIm5hbWUiOiAic2VuZE1lc3NhZ2VUb1RhcmdldCIsCiAgICAgICAgICAg
ICAiZGVzY3JpcHRpb24iOiAiU2VuZCBhbiBJbnNwZWN0b3IgUHJvdG9jb2wgbWVzc2FnZSB0byBi
ZSBkaXNwYXRjaGVkIHRvIGEgVGFyZ2V0J3MgYWdlbnRzLiIsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwCmluZGV4IGU3MjA0Y2IzMzUz
ZTkyNTEwMDBmYTUyMmEyNDc3OGFiYjY2MjE3YjUuLmMyNTc2NmUxMTBhOWNhNzc3ZDY2NGViODdj
ODgyZWY1OTE3ZjNiZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JGcm9udGVuZEhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JGcm9udGVuZEhvc3QuY3BwCkBAIC0zNzAsNiArMzcwLDcgQEAgdm9pZCBJbnNwZWN0b3JG
cm9udGVuZEhvc3Q6OmNsb3NlKGNvbnN0IFN0cmluZyYpCiAKIHZvaWQgSW5zcGVjdG9yRnJvbnRl
bmRIb3N0OjpzZW5kTWVzc2FnZVRvQmFja2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7Cisg
ICAgZnByaW50ZihzdGRlcnIsICJzZW5kTWVzc2FnZVRvQmFja2VuZCAlc1xuIiwgbWVzc2FnZS5s
ZWZ0KDIwMCkuYXNjaWkoKS5kYXRhKCkpOwogICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgbV9j
bGllbnQtPnNlbmRNZXNzYWdlVG9CYWNrZW5kKG1lc3NhZ2UpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvVGFyZ2V0TWFuYWdl
ci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1Rh
cmdldE1hbmFnZXIuanMKaW5kZXggMTQ5NTMxZDg1ODczOTIyYmMwY2I2ZTkxZDI2YjczYzFhMjE2
Zjg1Mi4uNmM3NjZiM2Q0ZTZiNzkyMzFiOTFlZWNhYTFjODUzYmExY2RiYTFjMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvVGFyZ2V0
TWFuYWdlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250
cm9sbGVycy9UYXJnZXRNYW5hZ2VyLmpzCkBAIC0zMyw5ICszMyw2IEBAIFdJLlRhcmdldE1hbmFn
ZXIgPSBjbGFzcyBUYXJnZXRNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIHRoaXMu
X2NhY2hlZFRhcmdldHNMaXN0ID0gbnVsbDsKICAgICAgICAgdGhpcy5fc2VlblBhZ2VUYXJnZXQg
PSBmYWxzZTsKICAgICAgICAgdGhpcy5fdHJhbnNpdGlvblRpbWVvdXRJZGVudGlmaWVyID0gdW5k
ZWZpbmVkOwotCi0gICAgICAgIHRoaXMuX3Byb3Zpc2lvbmFsVGFyZ2V0SW5mb3MgPSBuZXcgTWFw
OwotICAgICAgICB0aGlzLl9zd2FwcGVkVGFyZ2V0SWRzID0gbmV3IFNldDsKICAgICB9CiAKICAg
ICAvLyBQdWJsaWMKQEAgLTEyMCw5MSArMTE3LDY2IEBAIFdJLlRhcmdldE1hbmFnZXIgPSBjbGFz
cyBUYXJnZXRNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICB0YXJnZXRDcmVhdGVkKHBh
cmVudFRhcmdldCwgdGFyZ2V0SW5mbykKICAgICB7Ci0gICAgICAgIHRoaXMuX2Nvbm5lY3RUb1Rh
cmdldChwYXJlbnRUYXJnZXQsIHRhcmdldEluZm8pOwotCi0gICAgICAgIHRoaXMuZGlzcGF0Y2hF
dmVudFRvTGlzdGVuZXJzKFdJLlRhcmdldE1hbmFnZXIuRXZlbnQuVGFyZ2V0Q3JlYXRlZCwge3Rh
cmdldEluZm99KTsKKyAgICAgICAgbGV0IGNvbm5lY3Rpb24gPSBuZXcgSW5zcGVjdG9yQmFja2Vu
ZC5UYXJnZXRDb25uZWN0aW9uKHBhcmVudFRhcmdldCwgdGFyZ2V0SW5mby50YXJnZXRJZCk7Cisg
ICAgICAgIGxldCBzdWJUYXJnZXQgPSB0aGlzLl9jcmVhdGVUYXJnZXQocGFyZW50VGFyZ2V0LCB0
YXJnZXRJbmZvLCBjb25uZWN0aW9uKTsKKyAgICAgICAgdGhpcy5fY2hlY2tBbmRIYW5kbGVQYWdl
VGFyZ2V0VHJhbnNpdGlvbihzdWJUYXJnZXQpOworICAgICAgICBzdWJUYXJnZXQuaW5pdGlhbGl6
ZSgpOworICAgICAgICB0aGlzLmFkZFRhcmdldChzdWJUYXJnZXQpOwogICAgIH0KIAogICAgIGRp
ZENvbW1pdFByb3Zpc2lvbmFsVGFyZ2V0KHBhcmVudFRhcmdldCwgcHJldmlvdXNUYXJnZXRJZCwg
bmV3VGFyZ2V0SWQpCiAgICAgewotICAgICAgICB0aGlzLl9kZXN0cm95VGFyZ2V0KHByZXZpb3Vz
VGFyZ2V0SWQpOwotICAgICAgICBsZXQgdGFyZ2V0SW5mbyA9IHRoaXMuX3Byb3Zpc2lvbmFsVGFy
Z2V0SW5mb3MuZ2V0KG5ld1RhcmdldElkKTsKLSAgICAgICAgY29uc29sZS5hc3NlcnQodGFyZ2V0
SW5mbyk7Ci0gICAgICAgIHRhcmdldEluZm8uaXNQcm92aXNpb25hbCA9IGZhbHNlOwotICAgICAg
ICB0aGlzLl9wcm92aXNpb25hbFRhcmdldEluZm9zLmRlbGV0ZShuZXdUYXJnZXRJZCk7Ci0gICAg
ICAgIHRoaXMuX2Nvbm5lY3RUb1RhcmdldChwYXJlbnRUYXJnZXQsIHRhcmdldEluZm8pOwotICAg
ICAgICBjb25zb2xlLmFzc2VydCghdGhpcy5fc3dhcHBlZFRhcmdldElkcy5oYXMocHJldmlvdXNU
YXJnZXRJZCkpOwotICAgICAgICB0aGlzLl9zd2FwcGVkVGFyZ2V0SWRzLmFkZChwcmV2aW91c1Rh
cmdldElkKTsKLQotICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5UYXJn
ZXRNYW5hZ2VyLkV2ZW50LkRpZENvbW1pdFByb3Zpc2lvbmFsVGFyZ2V0LCB7cHJldmlvdXNUYXJn
ZXRJZCwgdGFyZ2V0SW5mb30pOworICAgICAgICB0aGlzLnRhcmdldERlc3Ryb3llZChwcmV2aW91
c1RhcmdldElkKTsKKyAgICAgICAgbGV0IHRhcmdldCA9IHRoaXMuX3RhcmdldHMuZ2V0KG5ld1Rh
cmdldElkKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodGFyZ2V0KTsKKyAgICAgICAgaWYgKCF0
YXJnZXQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGFyZ2V0LmRpZENvbW1pdFBy
b3Zpc2lvbmFsVGFyZ2V0KCk7CisgICAgICAgIHRoaXMuX2NoZWNrQW5kSGFuZGxlUGFnZVRhcmdl
dFRyYW5zaXRpb24odGFyZ2V0KTsKKyAgICAgICAgdGFyZ2V0LmNvbm5lY3Rpb24uZGlzcGF0Y2hQ
cm92aXNpb25hbE1lc3NhZ2VzKCk7CisKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0
ZW5lcnMoV0kuVGFyZ2V0TWFuYWdlci5FdmVudC5EaWRDb21taXRQcm92aXNpb25hbFRhcmdldCwg
e3ByZXZpb3VzVGFyZ2V0SWQsIHRhcmdldH0pOwogICAgIH0KIAogICAgIHRhcmdldERlc3Ryb3ll
ZCh0YXJnZXRJZCkKICAgICB7Ci0gICAgICAgIHRoaXMuX2Rlc3Ryb3lUYXJnZXQodGFyZ2V0SWQp
OworICAgICAgICBsZXQgdGFyZ2V0ID0gdGhpcy5fdGFyZ2V0cy5nZXQodGFyZ2V0SWQpOworICAg
ICAgICBpZiAoIXRhcmdldCkKKyAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICB0aGlzLmRp
c3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5UYXJnZXRNYW5hZ2VyLkV2ZW50LlRhcmdldERlc3Ry
b3llZCwge3RhcmdldElkfSk7CisgICAgICAgIHRoaXMuX2NoZWNrQW5kSGFuZGxlUGFnZVRhcmdl
dFRlcm1pbmF0aW9uKHRhcmdldCk7CisgICAgICAgIHRoaXMucmVtb3ZlVGFyZ2V0KHRhcmdldCk7
CiAgICAgfQogCiAgICAgZGlzcGF0Y2hNZXNzYWdlRnJvbVRhcmdldCh0YXJnZXRJZCwgbWVzc2Fn
ZSkKICAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9wcm92aXNpb25hbFRhcmdldEluZm9zLmhhcyh0
YXJnZXRJZCkpCi0gICAgICAgICAgICByZXR1cm47Ci0KICAgICAgICAgbGV0IHRhcmdldCA9IHRo
aXMuX3RhcmdldHMuZ2V0KHRhcmdldElkKTsKICAgICAgICAgY29uc29sZS5hc3NlcnQodGFyZ2V0
KTsKICAgICAgICAgaWYgKCF0YXJnZXQpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAg
dGFyZ2V0LmNvbm5lY3Rpb24uZGlzcGF0Y2gobWVzc2FnZSk7CisgICAgICAgIGlmICh0YXJnZXQu
aXNQcm92aXNpb25hbCkKKyAgICAgICAgICAgIHRhcmdldC5jb25uZWN0aW9uLmFkZFByb3Zpc2lv
bmFsTWVzc2FnZShtZXNzYWdlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdGFyZ2V0LmNv
bm5lY3Rpb24uZGlzcGF0Y2gobWVzc2FnZSk7CiAgICAgfQogCiAgICAgLy8gUHJpdmF0ZQogCi0g
ICAgX2Nvbm5lY3RUb1RhcmdldChwYXJlbnRUYXJnZXQsIHRhcmdldEluZm8pCi0gICAgewotICAg
ICAgICBjb25zb2xlLmFzc2VydCghdGhpcy5fcHJvdmlzaW9uYWxUYXJnZXRJbmZvcy5oYXModGFy
Z2V0SW5mby50YXJnZXRJZCkpOwotCi0gICAgICAgIC8vIENPTVBBVElCSUxJVFkgKGlPUyAxMy4w
KTogYFRhcmdldC5UYXJnZXRJbmZvLmlzUHJvdmlzaW9uYWxgIGRpZCBub3QgZXhpc3QgeWV0Lgot
ICAgICAgICBpZiAodGFyZ2V0SW5mby5pc1Byb3Zpc2lvbmFsKSB7Ci0gICAgICAgICAgICB0aGlz
Ll9wcm92aXNpb25hbFRhcmdldEluZm9zLnNldCh0YXJnZXRJbmZvLnRhcmdldElkLCB0YXJnZXRJ
bmZvKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGNvbnNvbGUu
YXNzZXJ0KHBhcmVudFRhcmdldC5oYXNDb21tYW5kKCJUYXJnZXQuc2VuZE1lc3NhZ2VUb1Rhcmdl
dCIpKTsKLSAgICAgICAgbGV0IGNvbm5lY3Rpb24gPSBuZXcgSW5zcGVjdG9yQmFja2VuZC5UYXJn
ZXRDb25uZWN0aW9uOwotICAgICAgICBsZXQgc3ViVGFyZ2V0ID0gdGhpcy5fY3JlYXRlVGFyZ2V0
KHBhcmVudFRhcmdldCwgdGFyZ2V0SW5mbywgY29ubmVjdGlvbik7Ci0gICAgICAgIHRoaXMuX2No
ZWNrQW5kSGFuZGxlUGFnZVRhcmdldFRyYW5zaXRpb24oc3ViVGFyZ2V0KTsKLSAgICAgICAgc3Vi
VGFyZ2V0LmluaXRpYWxpemUoKTsKLQotICAgICAgICB0aGlzLmFkZFRhcmdldChzdWJUYXJnZXQp
OwotICAgIH0KLQotICAgIF9kZXN0cm95VGFyZ2V0KHRhcmdldElkKQotICAgIHsKLSAgICAgICAg
aWYgKHRoaXMuX3Byb3Zpc2lvbmFsVGFyZ2V0SW5mb3MuZGVsZXRlKHRhcmdldElkKSkKLSAgICAg
ICAgICAgIHJldHVybjsKLQotICAgICAgICBpZiAodGhpcy5fc3dhcHBlZFRhcmdldElkcy5kZWxl
dGUodGFyZ2V0SWQpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGxldCB0YXJnZXQg
PSB0aGlzLl90YXJnZXRzLmdldCh0YXJnZXRJZCk7Ci0gICAgICAgIHRoaXMuX2NoZWNrQW5kSGFu
ZGxlUGFnZVRhcmdldFRlcm1pbmF0aW9uKHRhcmdldCk7Ci0gICAgICAgIHRoaXMucmVtb3ZlVGFy
Z2V0KHRhcmdldCk7Ci0gICAgfQotCiAgICAgX2NyZWF0ZVRhcmdldChwYXJlbnRUYXJnZXQsIHRh
cmdldEluZm8sIGNvbm5lY3Rpb24pCiAgICAgewotICAgICAgICBsZXQge3RhcmdldElkLCB0eXBl
fSA9IHRhcmdldEluZm87CisgICAgICAgIC8vIENPTVBBVElCSUxJVFkgKGlPUyAxMy4wKTogYFRh
cmdldC5UYXJnZXRJbmZvLmlzUHJvdmlzaW9uYWxgIGFuZCBgVGFyZ2V0LlRhcmdldEluZm8uaXNQ
YXVzZWRgIGRpZCBub3QgZXhpc3QgeWV0LgorICAgICAgICBsZXQge3RhcmdldElkLCB0eXBlLCBp
c1Byb3Zpc2lvbmFsLCBpc1BhdXNlZH0gPSB0YXJnZXRJbmZvOwogCiAgICAgICAgIHN3aXRjaCAo
dHlwZSkgewogICAgICAgICBjYXNlIEluc3BlY3RvckJhY2tlbmQuRW51bS5UYXJnZXQuVGFyZ2V0
SW5mb1R5cGUuUGFnZToKLSAgICAgICAgICAgIHJldHVybiBuZXcgV0kuUGFnZVRhcmdldChwYXJl
bnRUYXJnZXQsIHRhcmdldElkLCBXSS5VSVN0cmluZygiUGFnZSIpLCBjb25uZWN0aW9uKTsKKyAg
ICAgICAgICAgIHJldHVybiBuZXcgV0kuUGFnZVRhcmdldChwYXJlbnRUYXJnZXQsIHRhcmdldElk
LCBXSS5VSVN0cmluZygiUGFnZSIpLCBjb25uZWN0aW9uLCB7aXNQcm92aXNpb25hbCwgaXNQYXVz
ZWR9KTsKICAgICAgICAgY2FzZSBJbnNwZWN0b3JCYWNrZW5kLkVudW0uVGFyZ2V0LlRhcmdldElu
Zm9UeXBlLldvcmtlcjoKLSAgICAgICAgICAgIHJldHVybiBuZXcgV0kuV29ya2VyVGFyZ2V0KHBh
cmVudFRhcmdldCwgdGFyZ2V0SWQsIFdJLlVJU3RyaW5nKCJXb3JrZXIiKSwgY29ubmVjdGlvbik7
CisgICAgICAgICAgICByZXR1cm4gbmV3IFdJLldvcmtlclRhcmdldChwYXJlbnRUYXJnZXQsIHRh
cmdldElkLCBXSS5VSVN0cmluZygiV29ya2VyIiksIGNvbm5lY3Rpb24sIHtpc1BhdXNlZH0pOwog
ICAgICAgICBjYXNlICJzZXJ2aWNld29ya2VyIjogLy8gQ09NUEFUSUJJTElUWSAoaU9TIDEzKTog
InNlcnZpY2V3b3JrZXIiIHdhcyByZW5hbWVkIHRvICJzZXJ2aWNlLXdvcmtlciIuCiAgICAgICAg
IGNhc2UgSW5zcGVjdG9yQmFja2VuZC5FbnVtLlRhcmdldC5UYXJnZXRJbmZvVHlwZS5TZXJ2aWNl
V29ya2VyOgotICAgICAgICAgICAgcmV0dXJuIG5ldyBXSS5Xb3JrZXJUYXJnZXQocGFyZW50VGFy
Z2V0LCB0YXJnZXRJZCwgV0kuVUlTdHJpbmcoIlNlcnZpY2VXb3JrZXIiKSwgY29ubmVjdGlvbik7
CisgICAgICAgICAgICByZXR1cm4gbmV3IFdJLldvcmtlclRhcmdldChwYXJlbnRUYXJnZXQsIHRh
cmdldElkLCBXSS5VSVN0cmluZygiU2VydmljZVdvcmtlciIpLCBjb25uZWN0aW9uLCB7aXNQYXVz
ZWR9KTsKICAgICAgICAgfQogCiAgICAgICAgIHRocm93ICJVbmtub3duIFRhcmdldCB0eXBlOiAi
ICsgdHlwZTsKQEAgLTIxNSw2ICsxODcsOSBAQCBXSS5UYXJnZXRNYW5hZ2VyID0gY2xhc3MgVGFy
Z2V0TWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICBpZiAodGFyZ2V0LnR5cGUgIT09
IFdJLlRhcmdldFR5cGUuUGFnZSkKICAgICAgICAgICAgIHJldHVybjsKIAorICAgICAgICBpZiAo
dGFyZ2V0LmlzUHJvdmlzaW9uYWwpCisgICAgICAgICAgICByZXR1cm47CisKICAgICAgICAgLy8g
Rmlyc3QgcGFnZSB0YXJnZXQuCiAgICAgICAgIGlmICghV0kucGFnZVRhcmdldCAmJiAhdGhpcy5f
c2VlblBhZ2VUYXJnZXQpIHsKICAgICAgICAgICAgIHRoaXMuX3NlZW5QYWdlVGFyZ2V0ID0gdHJ1
ZTsKQEAgLTIzMSw2ICsyMDYsOSBAQCBXSS5UYXJnZXRNYW5hZ2VyID0gY2xhc3MgVGFyZ2V0TWFu
YWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICBpZiAodGFyZ2V0LnR5cGUgIT09IFdJLlRh
cmdldFR5cGUuUGFnZSkKICAgICAgICAgICAgIHJldHVybjsKIAorICAgICAgICBpZiAodGFyZ2V0
LmlzUHJvdmlzaW9uYWwpCisgICAgICAgICAgICByZXR1cm47CisKICAgICAgICAgY29uc29sZS5h
c3NlcnQodGFyZ2V0ID09PSBXSS5wYWdlVGFyZ2V0KTsKICAgICAgICAgY29uc29sZS5hc3NlcnQo
dGhpcy5fc2VlblBhZ2VUYXJnZXQpOwogCkBAIC0zMTcsOCArMjk1LDUgQEAgV0kuVGFyZ2V0TWFu
YWdlciA9IGNsYXNzIFRhcmdldE1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKIFdJLlRhcmdldE1h
bmFnZXIuRXZlbnQgPSB7CiAgICAgVGFyZ2V0QWRkZWQ6IFN5bWJvbCgidGFyZ2V0LW1hbmFnZXIt
dGFyZ2V0LWFkZGVkIiksCiAgICAgVGFyZ2V0UmVtb3ZlZDogU3ltYm9sKCJ0YXJnZXQtbWFuYWdl
ci10YXJnZXQtcmVtb3ZlZCIpLAotCi0gICAgVGFyZ2V0Q3JlYXRlZDogInRhcmdldC1tYW5hZ2Vy
LXRhcmdldC1jcmVhdGVkIiwKICAgICBEaWRDb21taXRQcm92aXNpb25hbFRhcmdldDogInRhcmdl
dC1tYW5hZ2VyLXByb3Zpc2lvbmFsLXRhcmdldC1jb21taXR0ZWQiLAotICAgIFRhcmdldERlc3Ry
b3llZDogInRhcmdldC1tYW5hZ2VyLXRhcmdldC1kZXRyb3llZCIsCiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvQ29ubmVjdGlvbi5q
cyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0Nvbm5lY3Rp
b24uanMKaW5kZXggOWJlY2JkMDZhOWQ1YjI1OGY3YTUwNmRjYTIwZTk0NDMzM2M4YWJhNi4uNjk1
ZThlNGZkNjdiMjNiMDU5ZTY3NjkwYTIzNzU3Y2NkM2E0N2QyMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvQ29ubmVjdGlvbi5qcworKysg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9Db25uZWN0aW9u
LmpzCkBAIC0zOSw2ICszOSw3IEBAIEluc3BlY3RvckJhY2tlbmQuQ29ubmVjdGlvbiA9IGNsYXNz
IEluc3BlY3RvckJhY2tlbmRDb25uZWN0aW9uCiAgICAgICAgIHRoaXMuX3BlbmRpbmdSZXNwb25z
ZXMgPSBuZXcgTWFwOwogICAgICAgICB0aGlzLl9kZWZlcnJlZENhbGxiYWNrcyA9IFtdOwogICAg
ICAgICB0aGlzLl90YXJnZXQgPSBudWxsOworICAgICAgICB0aGlzLl9wcm92aXNpb25hbE1lc3Nh
Z2VzID0gW107CiAgICAgfQogCiAgICAgLy8gUHVibGljCkBAIC01NCw2ICs1NSwyMCBAQCBJbnNw
ZWN0b3JCYWNrZW5kLkNvbm5lY3Rpb24gPSBjbGFzcyBJbnNwZWN0b3JCYWNrZW5kQ29ubmVjdGlv
bgogICAgICAgICB0aGlzLl90YXJnZXQgPSB0YXJnZXQ7CiAgICAgfQogCisgICAgYWRkUHJvdmlz
aW9uYWxNZXNzYWdlKG1lc3NhZ2UpCisgICAgeworICAgICAgICB0aGlzLl9wcm92aXNpb25hbE1l
c3NhZ2VzLnB1c2gobWVzc2FnZSk7CisgICAgfQorCisgICAgZGlzcGF0Y2hQcm92aXNpb25hbE1l
c3NhZ2VzKCkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMudGFyZ2V0KTsKKyAg
ICAgICAgY29uc29sZS5hc3NlcnQoIXRoaXMudGFyZ2V0LmlzUHJvdmlzaW9uYWwpOworICAgICAg
ICBmb3IgKGxldCBtZXNzYWdlIG9mIHRoaXMuX3Byb3Zpc2lvbmFsTWVzc2FnZXMpCisgICAgICAg
ICAgICB0aGlzLmRpc3BhdGNoKG1lc3NhZ2UpOworICAgICAgICB0aGlzLl9wcm92aXNpb25hbE1l
c3NhZ2VzID0gbnVsbDsKKyAgICB9CisKICAgICBkaXNwYXRjaChtZXNzYWdlKQogICAgIHsKICAg
ICAgICAgbGV0IG1lc3NhZ2VPYmplY3QgPSB0eXBlb2YgbWVzc2FnZSA9PT0gInN0cmluZyIgPyBK
U09OLnBhcnNlKG1lc3NhZ2UpIDogbWVzc2FnZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL011bHRpcGxleGluZ0JhY2tlbmRUYXJnZXQu
anMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9NdWx0aXBs
ZXhpbmdCYWNrZW5kVGFyZ2V0LmpzCmluZGV4IGFhYjBjZTkxNTU1NWIzNjBhNmQ0MGMzMzUyZWUw
ZGY2ODhhYmUzYzcuLjc5MzcwOWViZTVkOTg1MmUyMzQ4ZWE0OWQ1Yjk3ZThkNDdhNjlmNTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL011
bHRpcGxleGluZ0JhY2tlbmRUYXJnZXQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvUHJvdG9jb2wvTXVsdGlwbGV4aW5nQmFja2VuZFRhcmdldC5qcwpAQCAtNDMs
OCArNDMsMTEgQEAgV0kuTXVsdGlwbGV4aW5nQmFja2VuZFRhcmdldCA9IGNsYXNzIE11bHRpcGxl
eGluZ0JhY2tlbmRUYXJnZXQgZXh0ZW5kcyBXSS5UYXJnZXQKIAogICAgIGluaXRpYWxpemUoKQog
ICAgIHsKLSAgICAgICAgLy8gSW50ZW50aW9uYWxseSBkbyBub3RoaW5nLCBpbmNsdWRpbmcgbm90
IGNhbGxpbmcgc3VwZXIuCi0gICAgICAgIC8vIE5vIGFnZW50cyBvdGhlciB0aGFuIHRoZSBUYXJn
ZXRBZ2VudCwgbm90aGluZyB0byBpbml0aWFsaXplLgorICAgICAgICAvLyBJbnRlbnRpb25hbGx5
IG5vdCBjYWxsaW5nIHN1cGVyLiBObyBhZ2VudHMgb3RoZXIgdGhhbiB0aGUgVGFyZ2V0QWdlbnQu
CisKKyAgICAgICAgLy8gQ09NUEFUSUJJTElUWSAoaU9TIDEzKTogVGFyZ2V0LnNldFBhdXNlT25T
dGFydCBkaWQgbm90IGV4aXN0IHlldC4KKyAgICAgICAgaWYgKHRoaXMuaGFzQ29tbWFuZCgiVGFy
Z2V0LnNldFBhdXNlT25TdGFydCIpKQorICAgICAgICAgICAgdGhpcy5UYXJnZXRBZ2VudC5zZXRQ
YXVzZU9uU3RhcnQodHJ1ZSk7CiAgICAgfQogCiAgICAgLy8gUHJvdGVjdGVkIChUYXJnZXQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9Q
YWdlVGFyZ2V0LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9j
b2wvUGFnZVRhcmdldC5qcwppbmRleCBmMzM0YzA4MDg0YzA3MDY1MmFhMGRlYzQyMTBhN2NhMWE1
N2E4MzRhLi5kMzg3NjYxNTQzNGQxMGM4MjA1MDc5ODdmN2E0MmNlODZjMDI5YTA0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9QYWdlVGFy
Z2V0LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29s
L1BhZ2VUYXJnZXQuanMKQEAgLTI1LDkgKzI1LDkgQEAKIAogV0kuUGFnZVRhcmdldCA9IGNsYXNz
IFBhZ2VUYXJnZXQgZXh0ZW5kcyBXSS5UYXJnZXQKIHsKLSAgICBjb25zdHJ1Y3RvcihwYXJlbnRU
YXJnZXQsIHRhcmdldElkLCBuYW1lLCBjb25uZWN0aW9uKQorICAgIGNvbnN0cnVjdG9yKHBhcmVu
dFRhcmdldCwgdGFyZ2V0SWQsIG5hbWUsIGNvbm5lY3Rpb24sIG9wdGlvbnMgPSB7fSkKICAgICB7
Ci0gICAgICAgIHN1cGVyKHBhcmVudFRhcmdldCwgdGFyZ2V0SWQsIG5hbWUsIFdJLlRhcmdldFR5
cGUuUGFnZSwgY29ubmVjdGlvbik7CisgICAgICAgIHN1cGVyKHBhcmVudFRhcmdldCwgdGFyZ2V0
SWQsIG5hbWUsIFdJLlRhcmdldFR5cGUuUGFnZSwgY29ubmVjdGlvbiwgb3B0aW9ucyk7CiAKICAg
ICAgICAgY29uc3QgaXNQYWdlQ29udGV4dCA9IHRydWU7CiAgICAgICAgIHRoaXMuX2V4ZWN1dGlv
bkNvbnRleHQgPSBuZXcgV0kuRXhlY3V0aW9uQ29udGV4dCh0aGlzLCBXSS5SdW50aW1lTWFuYWdl
ci5Ub3BMZXZlbENvbnRleHRFeGVjdXRpb25JZGVudGlmaWVyLCB0aGlzLmRpc3BsYXlOYW1lLCBp
c1BhZ2VDb250ZXh0LCBudWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1Byb3RvY29sL1RhcmdldC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1Byb3RvY29sL1RhcmdldC5qcwppbmRleCAwYTMwZGZmNGZhZWRhMjk5ZGQw
NGZmZjA0M2JiNzU3NWZiMzYxODlhLi5jYTM4NWZlMjhiMWJlZmJhODRjNDY5Yzg3NTg5MjFkN2Zm
YjBhMzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Q
cm90b2NvbC9UYXJnZXQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvUHJvdG9jb2wvVGFyZ2V0LmpzCkBAIC0yNSw5ICsyNSwxMCBAQAogCiBXSS5UYXJnZXQgPSBj
bGFzcyBUYXJnZXQgZXh0ZW5kcyBXSS5PYmplY3QKIHsKLSAgICBjb25zdHJ1Y3RvcihwYXJlbnRU
YXJnZXQsIGlkZW50aWZpZXIsIG5hbWUsIHR5cGUsIGNvbm5lY3Rpb24pCisgICAgY29uc3RydWN0
b3IocGFyZW50VGFyZ2V0LCBpZGVudGlmaWVyLCBuYW1lLCB0eXBlLCBjb25uZWN0aW9uLCB7aXNQ
YXVzZWQsIGlzUHJvdmlzaW9uYWx9ID0ge30pCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2Vy
dChwYXJlbnRUYXJnZXQgPT09IG51bGwgfHwgcGFyZW50VGFyZ2V0IGluc3RhbmNlb2YgV0kuVGFy
Z2V0KTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoIWlzUGF1c2VkIHx8IHBhcmVudFRhcmdldC5o
YXNDb21tYW5kKCJUYXJnZXQuc2V0UGF1c2VPblN0YXJ0IikpOwogICAgICAgICBzdXBlcigpOwog
CiAgICAgICAgIHRoaXMuX3BhcmVudFRhcmdldCA9IHBhcmVudFRhcmdldDsKQEAgLTM1LDYgKzM2
LDggQEAgV0kuVGFyZ2V0ID0gY2xhc3MgVGFyZ2V0IGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAg
IHRoaXMuX25hbWUgPSBuYW1lOwogICAgICAgICB0aGlzLl90eXBlID0gdHlwZTsKICAgICAgICAg
dGhpcy5fY29ubmVjdGlvbiA9IGNvbm5lY3Rpb247CisgICAgICAgIHRoaXMuX2lzUGF1c2VkID0g
ISFpc1BhdXNlZDsKKyAgICAgICAgdGhpcy5faXNQcm92aXNpb25hbCA9ICEhaXNQcm92aXNpb25h
bDsKICAgICAgICAgdGhpcy5fZXhlY3V0aW9uQ29udGV4dCA9IG51bGw7CiAgICAgICAgIHRoaXMu
X21haW5SZXNvdXJjZSA9IG51bGw7CiAgICAgICAgIHRoaXMuX3Jlc291cmNlQ29sbGVjdGlvbiA9
IG5ldyBXSS5SZXNvdXJjZUNvbGxlY3Rpb247CkBAIC05Niw2ICs5OSwyMCBAQCBXSS5UYXJnZXQg
PSBjbGFzcyBUYXJnZXQgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgICAgIGlmICh0aGlzLmhh
c0NvbW1hbmQoIkluc3BlY3Rvci5pbml0aWFsaXplZCIpKQogICAgICAgICAgICAgICAgIHRoaXMu
SW5zcGVjdG9yQWdlbnQuaW5pdGlhbGl6ZWQoKTsKICAgICAgICAgfSk7CisKKyAgICAgICAgaWYg
KHRoaXMuX2lzUGF1c2VkKSB7CisgICAgICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9wYXJl
bnRUYXJnZXQuaGFzQ29tbWFuZCgiVGFyZ2V0LnJlc3VtZSIpKTsKKyAgICAgICAgICAgIHRoaXMu
X3BhcmVudFRhcmdldC5UYXJnZXRBZ2VudC5yZXN1bWUodGhpcy5faWRlbnRpZmllciwgKGVycm9y
KSA9PiB7CisgICAgICAgICAgICAgICAgaWYgKGVycm9yKSB7CisgICAgICAgICAgICAgICAgICAg
IC8vIElnbm9yZSBlcnJvcnMgaWYgdGhlIHRhcmdldCB3YXMgZGVzdHJveWVkIGFmdGVyIHRoZSBj
b21tYW5kIHdhcyBzZW50LgorICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuaXNEZXN0cm95
ZWQpCisgICAgICAgICAgICAgICAgICAgICAgICBXSS5yZXBvcnRJbnRlcm5hbEVycm9yKGVycm9y
KTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgICAgIHRoaXMuX2lzUGF1c2VkID0gZmFsc2U7CisgICAgICAgICAgICB9KTsKKyAg
ICAgICAgfQogICAgIH0KIAogICAgIGFjdGl2YXRlRXh0cmFEb21haW4oZG9tYWluTmFtZSkKQEAg
LTE3Niw2ICsxOTMsOCBAQCBXSS5UYXJnZXQgPSBjbGFzcyBUYXJnZXQgZXh0ZW5kcyBXSS5PYmpl
Y3QKICAgICBnZXQgcmVzb3VyY2VDb2xsZWN0aW9uKCkgeyByZXR1cm4gdGhpcy5fcmVzb3VyY2VD
b2xsZWN0aW9uOyB9CiAgICAgZ2V0IGV4dHJhU2NyaXB0Q29sbGVjdGlvbigpIHsgcmV0dXJuIHRo
aXMuX2V4dHJhU2NyaXB0Q29sbGVjdGlvbjsgfQogCisgICAgZ2V0IGlzUHJvdmlzaW9uYWwoKSB7
IHJldHVybiB0aGlzLl9pc1Byb3Zpc2lvbmFsOyB9CisgICAgZ2V0IGlzUGF1c2VkKCkgeyByZXR1
cm4gdGhpcy5faXNQYXVzZWQ7IH0KICAgICBnZXQgaXNEZXN0cm95ZWQoKSB7IHJldHVybiB0aGlz
Ll9pc0Rlc3Ryb3llZDsgfQogCiAgICAgZ2V0IGRpc3BsYXlOYW1lKCkgeyByZXR1cm4gdGhpcy5f
bmFtZTsgfQpAQCAtMjE1LDYgKzIzNCwxMiBAQCBXSS5UYXJnZXQgPSBjbGFzcyBUYXJnZXQgZXh0
ZW5kcyBXSS5PYmplY3QKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0ku
VGFyZ2V0LkV2ZW50LlNjcmlwdEFkZGVkLCB7c2NyaXB0fSk7CiAgICAgfQogCisgICAgZGlkQ29t
bWl0UHJvdmlzaW9uYWxUYXJnZXQoKQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodGhp
cy5faXNQcm92aXNpb25hbCk7CisgICAgICAgIHRoaXMuX2lzUHJvdmlzaW9uYWwgPSBmYWxzZTsK
KyAgICB9CisKICAgICBkZXN0cm95KCkKICAgICB7CiAgICAgICAgIHRoaXMuX2lzRGVzdHJveWVk
ID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1Byb3RvY29sL1dvcmtlclRhcmdldC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1Byb3RvY29sL1dvcmtlclRhcmdldC5qcwppbmRleCA4M2M3MDkyYTU4NzI4ZjJhNzNk
OGE5ZDRjZTUyYTFhMWFkN2IyODU5Li4yYzVhMDEyZWIzYmNkM2NlYzAyNjRhODU0YWQ5Mjc2Y2Vh
MzlhMGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Q
cm90b2NvbC9Xb3JrZXJUYXJnZXQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvUHJvdG9jb2wvV29ya2VyVGFyZ2V0LmpzCkBAIC0yNSw5ICsyNSw5IEBACiAKIFdJ
LldvcmtlclRhcmdldCA9IGNsYXNzIFdvcmtlclRhcmdldCBleHRlbmRzIFdJLlRhcmdldAogewot
ICAgIGNvbnN0cnVjdG9yKHBhcmVudFRhcmdldCwgd29ya2VySWQsIG5hbWUsIGNvbm5lY3Rpb24p
CisgICAgY29uc3RydWN0b3IocGFyZW50VGFyZ2V0LCB3b3JrZXJJZCwgbmFtZSwgY29ubmVjdGlv
biwgb3B0aW9ucyA9IHt9KQogICAgIHsKLSAgICAgICAgc3VwZXIocGFyZW50VGFyZ2V0LCB3b3Jr
ZXJJZCwgbmFtZSwgV0kuVGFyZ2V0VHlwZS5Xb3JrZXIsIGNvbm5lY3Rpb24pOworICAgICAgICBz
dXBlcihwYXJlbnRUYXJnZXQsIHdvcmtlcklkLCBuYW1lLCBXSS5UYXJnZXRUeXBlLldvcmtlciwg
Y29ubmVjdGlvbiwgb3B0aW9ucyk7CiAKICAgICAgICAgY29uc3QgaXNQYWdlQ29udGV4dCA9IGZh
bHNlOwogICAgICAgICB0aGlzLl9leGVjdXRpb25Db250ZXh0ID0gbmV3IFdJLkV4ZWN1dGlvbkNv
bnRleHQodGhpcywgV0kuUnVudGltZU1hbmFnZXIuVG9wTGV2ZWxDb250ZXh0RXhlY3V0aW9uSWRl
bnRpZmllciwgdGhpcy5kaXNwbGF5TmFtZSwgaXNQYWdlQ29udGV4dCwgbnVsbCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9OYXZpZ2F0aW9u
U2lkZWJhclBhbmVsLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvTmF2aWdhdGlvblNpZGViYXJQYW5lbC5qcwppbmRleCAyMmVkODk2NThkNzAwZmY4MzUwNWQ0
YTRkYjA0MmI4NDY0MDhjZmZjLi5jYTkzN2NmOGZkMDY1MGE1ZmViZjU2NTU1YTIzMWUzNDU1ODU0
OTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL05hdmlnYXRpb25TaWRlYmFyUGFuZWwuanMKQEAgLTcwNSw3ICs3
MDUsNyBAQCBXSS5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsID0gY2xhc3MgTmF2aWdhdGlvblNpZGVi
YXJQYW5lbCBleHRlbmRzIFdJLlNpZGViYXJQYW5lbAogICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgICAgICAgICAgaWYgKG1hdGNoVHlwZU9ubHkpCi0gICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgcmV0dXJuICEhdHlwZUlkZW50aWZpZXI7CiAK
ICAgICAgICAgICAgIHZhciBjYW5kaWRhdGVPYmplY3RDb29raWUgPSB7fTsKICAgICAgICAgICAg
IGlmIChyZXByZXNlbnRlZE9iamVjdC5zYXZlSWRlbnRpdHlUb0Nvb2tpZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3RvclRhcmdldFByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3RvclRhcmdldFByb3h5LmNwcAppbmRleCAxYjM3YzFl
ZDQzOTVhMTdjNTgzYmEyZDc4NjIxOWM5MGM3NDQwMTZlLi4yZDhiODE3NzgzODRlNWNlNzE3MTZk
ZDAzZWRhYTkxZDA5MTcwMzQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9J
bnNwZWN0b3JUYXJnZXRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5z
cGVjdG9yVGFyZ2V0UHJveHkuY3BwCkBAIC02OSw2ICs2OSw5IEBAIHZvaWQgSW5zcGVjdG9yVGFy
Z2V0UHJveHk6OmNvbm5lY3QoSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWw6OkNvbm5lY3Rpb25U
eXBlIGNvCiAKIHZvaWQgSW5zcGVjdG9yVGFyZ2V0UHJveHk6OmRpc2Nvbm5lY3QoKQogeworICAg
IGlmIChpc1BhdXNlZCgpKQorICAgICAgICBzZXRQYXVzZWQoZmFsc2UpOworCiAgICAgaWYgKG1f
cHJvdmlzaW9uYWxQYWdlKSB7CiAgICAgICAgIG1fcHJvdmlzaW9uYWxQYWdlLT5wcm9jZXNzKCku
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlzY29ubmVjdEluc3BlY3RvcihpZGVudGlmaWVyKCkp
LCBtX3Byb3Zpc2lvbmFsUGFnZS0+d2ViUGFnZUlEKCkpOwogICAgICAgICByZXR1cm47CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxl
ci5jcHAKaW5kZXggYjlhOTQ2OWFiNTkxMzZmOWU5YTM3MzZiZmRiMGU5ZDUyOWMwZmJjZS4uMWVl
MjhiZjcxNjM3NDM3MTQzMzIxNTE0OGFhMjBhNTE5MjdhOGEzMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAt
MTY3LDYgKzE2NywyMyBAQCB2b2lkIFdlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyOjpzZW5kTWVz
c2FnZVRvSW5zcGVjdG9yRnJvbnRlbmQoY29uc3QgU3RyaW5nJiB0YQogICAgIG1fdGFyZ2V0QWdl
bnQtPnNlbmRNZXNzYWdlRnJvbVRhcmdldFRvRnJvbnRlbmQodGFyZ2V0SWQsIG1lc3NhZ2UpOwog
fQogCitib29sIFdlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyOjpzaG91bGRQYXVzZUxvYWRpbmco
Y29uc3QgUHJvdmlzaW9uYWxQYWdlUHJveHkmIHByb3Zpc2lvbmFsUGFnZSkgY29uc3QKK3sKKyAg
ICBpZiAoIW1fZnJvbnRlbmRSb3V0ZXItPmhhc0Zyb250ZW5kcygpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBhdXRvKiB0YXJnZXQgPSBtX3RhcmdldHMuZ2V0KGdldFRhcmdldElEKHBy
b3Zpc2lvbmFsUGFnZSkpOworICAgIEFTU0VSVCh0YXJnZXQpOworICAgIHJldHVybiB0YXJnZXQt
PmlzUGF1c2VkKCk7Cit9CisKK3ZvaWQgV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXI6OnNldENv
bnRpbnVlTG9hZGluZ0NhbGxiYWNrKGNvbnN0IFByb3Zpc2lvbmFsUGFnZVByb3h5JiBwcm92aXNp
b25hbFBhZ2UsIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNhbGxiYWNrKQoreworICAgIGF1dG8q
IHRhcmdldCA9IG1fdGFyZ2V0cy5nZXQoZ2V0VGFyZ2V0SUQocHJvdmlzaW9uYWxQYWdlKSk7Cisg
ICAgQVNTRVJUKHRhcmdldCk7CisgICAgdGFyZ2V0LT5zZXRSZXN1bWVDYWxsYmFjayhXVEZNb3Zl
KGNhbGxiYWNrKSk7Cit9CisKIHZvaWQgV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXI6OmRpZENy
ZWF0ZVByb3Zpc2lvbmFsUGFnZShQcm92aXNpb25hbFBhZ2VQcm94eSYgcHJvdmlzaW9uYWxQYWdl
KQogewogICAgIGFkZFRhcmdldChJbnNwZWN0b3JUYXJnZXRQcm94eTo6Y3JlYXRlKHByb3Zpc2lv
bmFsUGFnZSwgZ2V0VGFyZ2V0SUQocHJvdmlzaW9uYWxQYWdlKSwgSW5zcGVjdG9yOjpJbnNwZWN0
b3JUYXJnZXRUeXBlOjpQYWdlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIuaAppbmRleCA4MjhiYzNjY2M3ZTA3ZDgxMjAzMzQz
MWIyN2FlN2YwYmM4Y2Y5YzU0Li43OGNhZWRmMGMwY2U4MzY3NTU2OTUwMmQxNTBmY2M0NGU1Zjk4
NjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlSW5zcGVjdG9y
Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VJbnNwZWN0
b3JDb250cm9sbGVyLmgKQEAgLTY2LDYgKzY2LDkgQEAgcHVibGljOgogICAgIHZvaWQgZGVzdHJv
eUluc3BlY3RvclRhcmdldChjb25zdCBTdHJpbmcmIHRhcmdldElkKTsKICAgICB2b2lkIHNlbmRN
ZXNzYWdlVG9JbnNwZWN0b3JGcm9udGVuZChjb25zdCBTdHJpbmcmIHRhcmdldElkLCBjb25zdCBT
dHJpbmcmIG1lc3NhZ2UpOwogCisgICAgYm9vbCBzaG91bGRQYXVzZUxvYWRpbmcoY29uc3QgUHJv
dmlzaW9uYWxQYWdlUHJveHkmKSBjb25zdDsKKyAgICB2b2lkIHNldENvbnRpbnVlTG9hZGluZ0Nh
bGxiYWNrKGNvbnN0IFByb3Zpc2lvbmFsUGFnZVByb3h5JiwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+
JiYpOworCiAgICAgdm9pZCBkaWRDcmVhdGVQcm92aXNpb25hbFBhZ2UoUHJvdmlzaW9uYWxQYWdl
UHJveHkmKTsKICAgICB2b2lkIHdpbGxEZXN0cm95UHJvdmlzaW9uYWxQYWdlKGNvbnN0IFByb3Zp
c2lvbmFsUGFnZVByb3h5Jik7CiAgICAgdm9pZCBkaWRDb21taXRQcm92aXNpb25hbFBhZ2UoV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIgb2xkV2ViUGFnZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciBuZXdXZWJQYWdlSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAK
aW5kZXggN2M1Y2FkMjNkY2FhNjk1ODMzNWY4YjQxZTIyMGZmMDdjZTY2OGQxOC4uZWZjODJlODVh
Nzg1ZWQ1YjIzYTFlZDY4MjM3NWEzMDUxMzJmODMwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCkBAIC0zMDk3LDI4ICszMDk3LDM0IEBAIHZvaWQgV2ViUGFnZVBy
b3h5Ojpjb250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3MoQVBJOjpOYXZpZ2F0aW9uJiBuYXZp
Z2F0aW9uLCBzCiAKICAgICBtX3Byb3Zpc2lvbmFsUGFnZSA9IG1ha2VVbmlxdWU8UHJvdmlzaW9u
YWxQYWdlUHJveHk+KCp0aGlzLCBuZXdQcm9jZXNzLmNvcHlSZWYoKSwgV1RGTW92ZShzdXNwZW5k
ZWRQYWdlKSwgbmF2aWdhdGlvbi5uYXZpZ2F0aW9uSUQoKSwgbmF2aWdhdGlvbi5jdXJyZW50UmVx
dWVzdElzUmVkaXJlY3QoKSwgbmF2aWdhdGlvbi5jdXJyZW50UmVxdWVzdCgpLCBwcm9jZXNzU3dh
cFJlcXVlc3RlZEJ5Q2xpZW50KTsKIAotICAgIGlmIChhdXRvKiBpdGVtID0gbmF2aWdhdGlvbi50
YXJnZXRJdGVtKCkpIHsKLSAgICAgICAgTE9HKExvYWRpbmcsICJXZWJQYWdlUHJveHkgJXAgY29u
dGludWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNzIHRvIGJhY2sgaXRlbSBVUkwgJXMiLCB0aGlzLCBp
dGVtLT51cmwoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBhdXRvIGNvbnRpbnVhdGlvbiA9IFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIG5hdmlnYXRpb24gPSBtYWtlUmVmKG5h
dmlnYXRpb24pLCBuZXdQcm9jZXNzID0gV1RGTW92ZShuZXdQcm9jZXNzKSwgd2Vic2l0ZVBvbGlj
aWVzID0gV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMpXSgpIG11dGFibGUgeworICAgICAgICBpZiAo
YXV0byogaXRlbSA9IG5hdmlnYXRpb24tPnRhcmdldEl0ZW0oKSkgeworICAgICAgICAgICAgTE9H
KExvYWRpbmcsICJXZWJQYWdlUHJveHkgJXAgY29udGludWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNz
IHRvIGJhY2sgaXRlbSBVUkwgJXMiLCB0aGlzLCBpdGVtLT51cmwoKS51dGY4KCkuZGF0YSgpKTsK
IAotICAgICAgICBhdXRvIHRyYW5zYWN0aW9uID0gbV9wYWdlTG9hZFN0YXRlLnRyYW5zYWN0aW9u
KCk7Ci0gICAgICAgIG1fcGFnZUxvYWRTdGF0ZS5zZXRQZW5kaW5nQVBJUmVxdWVzdCh0cmFuc2Fj
dGlvbiwgeyBuYXZpZ2F0aW9uLm5hdmlnYXRpb25JRCgpLCBpdGVtLT51cmwoKSB9KTsKKyAgICAg
ICAgICAgIGF1dG8gdHJhbnNhY3Rpb24gPSBtX3BhZ2VMb2FkU3RhdGUudHJhbnNhY3Rpb24oKTsK
KyAgICAgICAgICAgIG1fcGFnZUxvYWRTdGF0ZS5zZXRQZW5kaW5nQVBJUmVxdWVzdCh0cmFuc2Fj
dGlvbiwgeyBuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQoKSwgaXRlbS0+dXJsKCkgfSk7CiAKLSAg
ICAgICAgbV9wcm92aXNpb25hbFBhZ2UtPmdvVG9CYWNrRm9yd2FyZEl0ZW0obmF2aWdhdGlvbiwg
Kml0ZW0sIFdURk1vdmUod2Vic2l0ZVBvbGljaWVzKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
CisgICAgICAgICAgICBtX3Byb3Zpc2lvbmFsUGFnZS0+Z29Ub0JhY2tGb3J3YXJkSXRlbShuYXZp
Z2F0aW9uLCAqaXRlbSwgV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMpKTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQogCi0gICAgaWYgKG1fYmFja0ZvcndhcmRMaXN0LT5jdXJyZW50SXRl
bSgpICYmIChuYXZpZ2F0aW9uLmxvY2tCYWNrRm9yd2FyZExpc3QoKSA9PSBMb2NrQmFja0Zvcndh
cmRMaXN0OjpZZXMgfHwgbmF2aWdhdGlvbi5sb2NrSGlzdG9yeSgpID09IExvY2tIaXN0b3J5OjpZ
ZXMpKSB7Ci0gICAgICAgIC8vIElmIFdlYkNvcmUgaXMgc3VwcG9zZWQgdG8gbG9jayB0aGUgaGlz
dG9yeSBmb3IgdGhpcyBsb2FkLCB0aGVuIHRoZSBuZXcgcHJvY2VzcyBuZWVkcyB0byBrbm93IGFi
b3V0IHRoZSBjdXJyZW50IGhpc3RvcnkgaXRlbSBzbyBpdCBjYW4gdXBkYXRlCi0gICAgICAgIC8v
IGl0IGluc3RlYWQgb2YgY3JlYXRpbmcgYSBuZXcgb25lLgotICAgICAgICBuZXdQcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRDdXJyZW50SGlzdG9yeUl0ZW1Gb3JSZWF0dGFjaCht
X2JhY2tGb3J3YXJkTGlzdC0+Y3VycmVudEl0ZW0oKS0+aXRlbVN0YXRlKCkpLCBtX3Byb3Zpc2lv
bmFsUGFnZS0+d2ViUGFnZUlEKCkpOwotICAgIH0KKyAgICAgICAgaWYgKG1fYmFja0ZvcndhcmRM
aXN0LT5jdXJyZW50SXRlbSgpICYmIChuYXZpZ2F0aW9uLT5sb2NrQmFja0ZvcndhcmRMaXN0KCkg
PT0gTG9ja0JhY2tGb3J3YXJkTGlzdDo6WWVzIHx8IG5hdmlnYXRpb24tPmxvY2tIaXN0b3J5KCkg
PT0gTG9ja0hpc3Rvcnk6OlllcykpIHsKKyAgICAgICAgICAgIC8vIElmIFdlYkNvcmUgaXMgc3Vw
cG9zZWQgdG8gbG9jayB0aGUgaGlzdG9yeSBmb3IgdGhpcyBsb2FkLCB0aGVuIHRoZSBuZXcgcHJv
Y2VzcyBuZWVkcyB0byBrbm93IGFib3V0IHRoZSBjdXJyZW50IGhpc3RvcnkgaXRlbSBzbyBpdCBj
YW4gdXBkYXRlCisgICAgICAgICAgICAvLyBpdCBpbnN0ZWFkIG9mIGNyZWF0aW5nIGEgbmV3IG9u
ZS4KKyAgICAgICAgICAgIG5ld1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEN1
cnJlbnRIaXN0b3J5SXRlbUZvclJlYXR0YWNoKG1fYmFja0ZvcndhcmRMaXN0LT5jdXJyZW50SXRl
bSgpLT5pdGVtU3RhdGUoKSksIG1fcHJvdmlzaW9uYWxQYWdlLT53ZWJQYWdlSUQoKSk7CisgICAg
ICAgIH0KIAotICAgIC8vIEZJWE1FOiBXb3JrIG91dCB0aW1pbmcgb2YgcmVzcG9uZGluZyB3aXRo
IHRoZSBsYXN0IHBvbGljeSBkZWxlZ2F0ZSwgZXRjCi0gICAgQVNTRVJUKCFuYXZpZ2F0aW9uLmN1
cnJlbnRSZXF1ZXN0KCkuaXNFbXB0eSgpKTsKLSAgICBpZiAoYXV0byYgc3Vic3RpdHV0ZURhdGEg
PSBuYXZpZ2F0aW9uLnN1YnN0aXR1dGVEYXRhKCkpCi0gICAgICAgIG1fcHJvdmlzaW9uYWxQYWdl
LT5sb2FkRGF0YShuYXZpZ2F0aW9uLCB7IHN1YnN0aXR1dGVEYXRhLT5jb250ZW50LmRhdGEoKSwg
c3Vic3RpdHV0ZURhdGEtPmNvbnRlbnQuc2l6ZSgpIH0sIHN1YnN0aXR1dGVEYXRhLT5NSU1FVHlw
ZSwgc3Vic3RpdHV0ZURhdGEtPmVuY29kaW5nLCBzdWJzdGl0dXRlRGF0YS0+YmFzZVVSTCwgc3Vi
c3RpdHV0ZURhdGEtPnVzZXJEYXRhLmdldCgpLCBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llcykpOwor
ICAgICAgICAvLyBGSVhNRTogV29yayBvdXQgdGltaW5nIG9mIHJlc3BvbmRpbmcgd2l0aCB0aGUg
bGFzdCBwb2xpY3kgZGVsZWdhdGUsIGV0YworICAgICAgICBBU1NFUlQoIW5hdmlnYXRpb24tPmN1
cnJlbnRSZXF1ZXN0KCkuaXNFbXB0eSgpKTsKKyAgICAgICAgaWYgKGF1dG8mIHN1YnN0aXR1dGVE
YXRhID0gbmF2aWdhdGlvbi0+c3Vic3RpdHV0ZURhdGEoKSkKKyAgICAgICAgICAgIG1fcHJvdmlz
aW9uYWxQYWdlLT5sb2FkRGF0YShuYXZpZ2F0aW9uLCB7IHN1YnN0aXR1dGVEYXRhLT5jb250ZW50
LmRhdGEoKSwgc3Vic3RpdHV0ZURhdGEtPmNvbnRlbnQuc2l6ZSgpIH0sIHN1YnN0aXR1dGVEYXRh
LT5NSU1FVHlwZSwgc3Vic3RpdHV0ZURhdGEtPmVuY29kaW5nLCBzdWJzdGl0dXRlRGF0YS0+YmFz
ZVVSTCwgc3Vic3RpdHV0ZURhdGEtPnVzZXJEYXRhLmdldCgpLCBXVEZNb3ZlKHdlYnNpdGVQb2xp
Y2llcykpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX3Byb3Zpc2lvbmFsUGFnZS0+bG9h
ZFJlcXVlc3QobmF2aWdhdGlvbiwgUmVzb3VyY2VSZXF1ZXN0IHsgbmF2aWdhdGlvbi0+Y3VycmVu
dFJlcXVlc3QoKSB9LCBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91
bGRBbGxvd0V4dGVybmFsU2NoZW1lcywgbnVsbHB0ciwgV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMp
KTsKKyAgICB9OworICAgIGlmIChtX2luc3BlY3RvckNvbnRyb2xsZXItPnNob3VsZFBhdXNlTG9h
ZGluZygqbV9wcm92aXNpb25hbFBhZ2UpKQorICAgICAgICBtX2luc3BlY3RvckNvbnRyb2xsZXIt
PnNldENvbnRpbnVlTG9hZGluZ0NhbGxiYWNrKCptX3Byb3Zpc2lvbmFsUGFnZSwgV1RGTW92ZShj
b250aW51YXRpb24pKTsKICAgICBlbHNlCi0gICAgICAgIG1fcHJvdmlzaW9uYWxQYWdlLT5sb2Fk
UmVxdWVzdChuYXZpZ2F0aW9uLCBSZXNvdXJjZVJlcXVlc3QgeyBuYXZpZ2F0aW9uLmN1cnJlbnRS
ZXF1ZXN0KCkgfSwgV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxk
QWxsb3dFeHRlcm5hbFNjaGVtZXMsIG51bGxwdHIsIFdURk1vdmUod2Vic2l0ZVBvbGljaWVzKSk7
CisgICAgICAgIGNvbnRpbnVhdGlvbigpOwogfQogCiBib29sIFdlYlBhZ2VQcm94eTo6aXNQYWdl
T3BlbmVkQnlET01TaG93aW5nSW5pdGlhbEVtcHR5RG9jdW1lbnQoKSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yRnJvbnRlbmRB
UElEaXNwYXRjaGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYklu
c3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlci5jcHAKaW5kZXggOTA4ZTM5YWZkYjBjODg5Y2Zl
NTY1MmIzOWFkYzQ3MGMzYTA5YTlhMi4uZGM0Mzk4NDA0YzU1NTkwODMxODJiNzI2ODY5NWI0YTYw
ZjEyNGQ0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
SW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXIuY3BwCkBA
IC05Miw2ICs5Miw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyOjpk
aXNwYXRjaE1lc3NhZ2VBc3luYyhjb25zdCBTdHJpbmcmIG1lc3NhCiAKIHZvaWQgV2ViSW5zcGVj
dG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyOjpldmFsdWF0ZU9yUXVldWVFeHByZXNzaW9uKGNvbnN0
IFN0cmluZyYgZXhwcmVzc2lvbikKIHsKKyAgICBmcHJpbnRmKHN0ZGVyciwgImV2YWx1YXRlT3JR
dWV1ZUV4cHJlc3Npb24gJXNcbiIsIGV4cHJlc3Npb24ubGVmdCgyMDApLmFzY2lpKCkuZGF0YSgp
KTsKICAgICBpZiAoIW1fZnJvbnRlbmRMb2FkZWQgfHwgbV9zdXNwZW5kZWQpIHsKICAgICAgICAg
bV9xdWV1ZS5hcHBlbmQoZXhwcmVzc2lvbik7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAxNTQ2
ZmIzMTM5NTk2YTY2MDI3MmI0NWFmYjI2MmY1NjQ1OGEyMDM4Li45ODFmZWZkZTczZjA0ZjNmYjRl
ZTM1MjdkNTdhM2IwNjI3ZDhmMDVmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTktMTEtMTMg
IFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIElu
c3BlY3RvcjogYWxsb3cgaW5zcGVjdG9yIHRvIHBhdXNlIHByb3Zpc2lvbmFsIHBhZ2UgbG9hZCBh
bmQgcmVzdG9yZSBpdHMgc3RhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwNDE3MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRlc3QgdGhhdCBwcm92aXNpb25hbCBsb2FkaW5nIHdoaWNoIHN0YXJ0cyBi
ZWZvcmUgcHJldmlvcyBwcm92aXNpb25hbCBsb2FkaW5nCisgICAgICAgIGNvbW1pdHMgd2lsbCBi
ZSBjb3JyZWN0bHkgaGFuZGxlZCBieSB0aGUgaW5zZXBjdG9yLgorCisgICAgICAgIFRlc3QgdGhh
dCBzY3JpcHQgZXhlY3V0aW9uIHdpbGwgYnJlYWsgb24gZGVidWdnZXIgc3RhdGVtZW50IGluIGlu
bGluZSBzY3JpcHRzIGluCisgICAgICAgIGNhc2Ugb2YgY3Jvc3Mgb3JpZ2luIG5hdmlnYXRpb24g
YW5kIFBTT04uCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci90YXJnZXQvcGF1c2Ut
b24taW5saW5lLWRlYnVnZ2VyLXN0YXRlbWVudC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL3RhcmdldC9wYXVzZS1vbi1pbmxpbmUtZGVidWdnZXIt
c3RhdGVtZW50Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL3Rh
cmdldC9wcm92aXNpb25hbC1sb2FkLWNhbmNlbHMtcHJldmlvdXMtbG9hZC1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL3RhcmdldC9wcm92aXNpb25h
bC1sb2FkLWNhbmNlbHMtcHJldmlvdXMtbG9hZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRw
L3Rlc3RzL2luc3BlY3Rvci90YXJnZXQvcmVzb3VyY2VzL2lubGluZS1kZWJ1Z2dlci1zdGF0ZW1l
bnQuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvdGFyZ2V0L3Rh
cmdldC1ldmVudHMtZm9yLXByb3Zpc2lvbmFsLXBhZ2UuaHRtbDoKKwogMjAxOS0xMi0wMyAgeW91
ZW5uIGZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHN1cHBvcnQgZm9y
IGNhbWVyYSByb3RhdGlvbiB3aGVuIGNhcHR1cmluZyBpbiBVSVByb2Nlc3MKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3RhcmdldC9wYXVzZS1vbi1pbmxpbmUt
ZGVidWdnZXItc3RhdGVtZW50LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL3RhcmdldC9wYXVzZS1vbi1pbmxpbmUtZGVidWdnZXItc3RhdGVtZW50LWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5iMmY2NjhlNGY5OTY1NWNjNTUwNzgxMWNhYjRjNjQ3YmIwOTM5
ZGFlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
dGFyZ2V0L3BhdXNlLW9uLWlubGluZS1kZWJ1Z2dlci1zdGF0ZW1lbnQtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMiBAQAorQUxFUlQ6IFBBU1M6IFNob3VsZCBwYXVzZSBvbiBkZWJ1Z2dlciBzdGF0
ZW1lbnQuCitUZXN0IHBhZ2UgdXNlZCB0byBjaGVjayB0aGF0IGV4ZWN1dGlvbiB3aWxsIGJyZWFr
IG9uIGlubGluZSAnZGVidWdnZXInIHN0YXRlbWVudCBhZnRlciBjcm9zcy1vcmlnaW4gbmF2aWdh
dGlvbi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Rhcmdl
dC9wYXVzZS1vbi1pbmxpbmUtZGVidWdnZXItc3RhdGVtZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luc3BlY3Rvci90YXJnZXQvcGF1c2Utb24taW5saW5lLWRlYnVnZ2VyLXN0YXRl
bWVudC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE2OTRkZDI3YzJiMGRiZjNmMDQwZDc4Y2Q4YzFjOTM1MjVk
YWZmOGMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rv
ci90YXJnZXQvcGF1c2Utb24taW5saW5lLWRlYnVnZ2VyLXN0YXRlbWVudC5odG1sCkBAIC0wLDAg
KzEsNDIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9
InV0Zi04Ij4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvaW5zcGVjdG9yLXRlc3QuanMiPjwv
c2NyaXB0PgorPHNjcmlwdD4KK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGxldCBzdWl0ZSA9IElu
c3BlY3RvclRlc3QuY3JlYXRlQXN5bmNTdWl0ZSgiVGFyZ2V0LlBTT04iKTsKKworICAgIHN1aXRl
LmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIklubGluZURlYnVnZ2VyU3RhdGVtZW50IiwK
KyAgICAgICAgZGVzY3JpcHRpb246ICJDaGVjayB0aGF0IG5ldyBwcm92aXNpb25hbCBwYWdlIGNh
biBiZSBwYXVzZWQgYmVmb3JlIG5hdmlnYXRpb24uIiwKKyAgICAgICAgdGVzdChyZXNvbHZlLCBy
ZWplY3QpIHsKKyAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5hd2FpdEV2ZW50KFdJLkRl
YnVnZ2VyTWFuYWdlci5FdmVudC5QYXVzZWQpCisgICAgICAgICAgICAudGhlbigoKSA9PiB7Cisg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5wYXNzKGBTaG91bGQgcGF1c2Ugb24gZGVidWdn
ZXIgc3RhdGVtZW50LmApOworCisgICAgICAgICAgICAgICAgLy8gV2FpdCBmb3IgcGFnZSByZWxv
YWQgZXZlbnQgdG8gYXZvaWQgcmFjZSBiZXR3ZWVuIHRlc3QgcmVzdWx0cyBmbHVzaGluZyBhbmQg
dGhlIHRlc3QgY29tcGxldGlvbi4KKyAgICAgICAgICAgICAgICBsZXQgcGFnZUxvYWRQcm9taXNl
ID0gSW5zcGVjdG9yVGVzdC5hd2FpdEV2ZW50KEZyb250ZW5kVGVzdEhhcm5lc3MuRXZlbnQuVGVz
dFBhZ2VEaWRMb2FkKTsKKyAgICAgICAgICAgICAgICAvL1dJLm1haW5UYXJnZXQuRGVidWdnZXJB
Z2VudC4KKyAgICAgICAgICAgICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHsKKyAg
ICAgICAgICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnJlc3VtZSgpOworICAgICAgICAg
ICAgICAgIH0pOworICAgICAgICAgICAgICAgIHJldHVybiBwYWdlTG9hZFByb21pc2U7CisgICAg
ICAgICAgICB9KQorICAgICAgICAgICAgLnRoZW4ocmVzb2x2ZSk7CisKKworICAgICAgICAgICAg
Y29uc3QgdXJsID0gImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9pbnNwZWN0b3IvdGFyZ2V0L3Jlc291
cmNlcy9pbmxpbmUtZGVidWdnZXItc3RhdGVtZW50Lmh0bWwiOworICAgICAgICAgICAgV0kubWFp
blRhcmdldC5QYWdlQWdlbnQubmF2aWdhdGUodXJsKTsKKyAgICAgICAgfQorICAgIH0pOworCisg
ICAgc3VpdGUucnVuVGVzdENhc2VzQW5kRmluaXNoKCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxwPlRlc3QgdGhhdCBleGVjdXRpb24gd2lsbCBi
cmVhayBvbiBpbmxpbmUgJ2RlYnVnZ2VyJyBzdGF0ZW1lbnQgYWZ0ZXIgY3Jvc3Mtb3JpZ2luIG5h
dmlnYXRpb24uPC9wPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9pbnNwZWN0b3IvdGFyZ2V0L3Byb3Zpc2lvbmFsLWxvYWQtY2FuY2Vscy1wcmV2
aW91cy1sb2FkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9y
L3RhcmdldC9wcm92aXNpb25hbC1sb2FkLWNhbmNlbHMtcHJldmlvdXMtbG9hZC1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZGQwN2I1YTA0ZDdmODNiOWM1NzBjMmJmNjkxOGRmNDI1NmRmNzgwZQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Rhcmdl
dC9wcm92aXNpb25hbC1sb2FkLWNhbmNlbHMtcHJldmlvdXMtbG9hZC1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwxNyBAQAorVGVzdCB0aGF0IHR3byBjb25zZXF1dGl2ZSBjcm9zcyBkb21haW4gbmF2
aWdhdGlvbiByZXF1ZXN0cyB3aWxsIHJlc3VsdCBpbiB0d28gcHJvdmlzaW9uYWwgdGFyZ2V0cyBi
ZWluZyBjcmVhdGVkLCBmaXJzdCBvZiB3aGljaCBpcyBsYXRlciBkZXN0cm95ZWQgYW5kIHRoZSBz
ZWNvbmQgaXMgY29tbWl0dGVkLgorCisKKz09IFJ1bm5pbmcgdGVzdCBzdWl0ZTogVGFyZ2V0LlBT
T04KKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBQcm92aXNpb25hbFBhZ2VQYXVzZWQKK0N1cnJlbnQg
dGFyZ2V0IGlzIDEuCitQQVNTOiBTaG91bGQgcmVjZWl2ZSBUYXJnZXRBZGRlZCBldmVudCBmb3Ig
dGFyZ2V0IDIuCitQQVNTOiBUYXJnZXQgMiBzaG91bGQgYmUgcHJvdmlzaW9uYWwuCitQQVNTOiBU
YXJnZXQgMiBzaG91bGQgYmUgcGF1c2VkIG9uIHN0YXJ0LgorUEFTUzogU2hvdWxkIHJlY2VpdmUg
VGFyZ2V0UmVtb3ZlZCBldmVudCBmb3IgdGFyZ2V0IDIKK1BBU1M6IFNob3VsZCByZWNlaXZlIFRh
cmdldEFkZGVkIGV2ZW50IGZvciB0YXJnZXQgMy4KK1BBU1M6IFRhcmdldCAzIHNob3VsZCBiZSBw
cm92aXNpb25hbC4KK1BBU1M6IFRhcmdldCAzIHNob3VsZCBiZSBwYXVzZWQgb24gc3RhcnQuCitQ
QVNTOiBTaG91bGQgcmVjZWl2ZSBUYXJnZXRSZW1vdmVkIGV2ZW50IGZvciB0YXJnZXQgMQorUEFT
UzogU2hvdWxkIHJlY2VpdmUgRGlkQ29tbWl0UHJvdmlzaW9uYWxUYXJnZXQgZXZlbnQgMSA9PiAz
LgorUEFTUzogU2hvdWxkIGhhdmUgc2VlbiAzIGRpZmZlcmVudCB0YXJnZXRzLgorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci90YXJnZXQvcHJvdmlzaW9uYWwt
bG9hZC1jYW5jZWxzLXByZXZpb3VzLWxvYWQuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL3RhcmdldC9wcm92aXNpb25hbC1sb2FkLWNhbmNlbHMtcHJldmlvdXMtbG9hZC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmM5NmIwMjNiMzA5YzZjOGMxYmUwMzVlOWI0MjBjOTc2Y2RhYjlmYzMK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci90YXJn
ZXQvcHJvdmlzaW9uYWwtbG9hZC1jYW5jZWxzLXByZXZpb3VzLWxvYWQuaHRtbApAQCAtMCwwICsx
LDc2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1
dGYtOCI+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0LmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQ+CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBsZXQgbGFzdEFzc2lnbmVk
SWQgPSAwOworICAgIGxldCB0YXJnZXRUb0lkID0gbmV3IE1hcDsKKyAgICBmdW5jdGlvbiBzdGFi
bGVUYXJnZXRJZCh0YXJnZXRJZCkKKyAgICB7CisgICAgICAgIGxldCBpZCA9IHRhcmdldFRvSWQu
Z2V0KHRhcmdldElkKTsKKyAgICAgICAgaWYgKCFpZCkgeworICAgICAgICAgICAgaWQgPSArK2xh
c3RBc3NpZ25lZElkOworICAgICAgICAgICAgdGFyZ2V0VG9JZC5zZXQodGFyZ2V0SWQsIGlkKTsK
KyAgICAgICAgfQorICAgICAgICByZXR1cm4gaWQ7CisgICAgfQorCisgICAgbGV0IHN1aXRlID0g
SW5zcGVjdG9yVGVzdC5jcmVhdGVBc3luY1N1aXRlKCJUYXJnZXQuUFNPTiIpOworCisgICAgc3Vp
dGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiUHJvdmlzaW9uYWxQYWdlUGF1c2VkIiwK
KyAgICAgICAgZGVzY3JpcHRpb246ICJDaGVjayB0aGF0IG5ldyBwcm92aXNpb25hbCBwYWdlIGNh
biBiZSBwYXVzZWQgYmVmb3JlIG5hdmlnYXRpb24uIiwKKyAgICAgICAgdGVzdChyZXNvbHZlLCBy
ZWplY3QpIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKGBDdXJyZW50IHRhcmdldCBp
cyAke3N0YWJsZVRhcmdldElkKFdJLm1haW5UYXJnZXQuaWRlbnRpZmllcil9LmApOworICAgICAg
ICAgICAgY29uc3QgdXJsID0gImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9pbnNwZWN0b3IvdGFyZ2V0
L3Byb3Zpc2lvbmFsLWxvYWQtY2FuY2Vscy1wcmV2aW91cy1sb2FkLmh0bWwiOworICAgICAgICAg
ICAgbGV0IG5hdmlnYXRlZFR3aWNlID0gZmFsc2U7CisKKyAgICAgICAgICAgIFdJLnRhcmdldE1h
bmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5UYXJnZXRNYW5hZ2VyLkV2ZW50LlRhcmdldEFkZGVk
LCAoZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICBsZXQgdGFyZ2V0ID0gZXZlbnQuZGF0YS50
YXJnZXQ7CisgICAgICAgICAgICAgICAgbGV0IHRhcmdldElkID0gc3RhYmxlVGFyZ2V0SWQodGFy
Z2V0LmlkZW50aWZpZXIpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QucGFzcyhgU2hv
dWxkIHJlY2VpdmUgVGFyZ2V0QWRkZWQgZXZlbnQgZm9yIHRhcmdldCAke3RhcmdldElkfS5gKTsK
KyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRydWUodGFyZ2V0LmlzUHJvdmlz
aW9uYWwsIGBUYXJnZXQgJHt0YXJnZXRJZH0gc2hvdWxkIGJlIHByb3Zpc2lvbmFsLmApOworICAg
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VHJ1ZSh0YXJnZXQuaXNQYXVzZWQsIGBU
YXJnZXQgJHt0YXJnZXRJZH0gc2hvdWxkIGJlIHBhdXNlZCBvbiBzdGFydC5gKTsKKyAgICAgICAg
ICAgICAgICBpZiAoIW5hdmlnYXRlZFR3aWNlKSB7CisgICAgICAgICAgICAgICAgICAgIG5hdmln
YXRlZFR3aWNlID0gdHJ1ZTsKKworICAgICAgICAgICAgICAgICAgICAvLyBTZW5kIHR3byBjb25z
ZXF1dGl2ZSBuYXZpZ2F0aW9uIHJlcXVlc3RzLiBUaGUgbGF0dGVyIHdpbGwgY2FuY2VsIHByb3Zp
c2lvbmFsCisgICAgICAgICAgICAgICAgICAgIC8vIGxvYWQgb2YgdGhlIGZvcm1lci4KKyAgICAg
ICAgICAgICAgICAgICAgV0kubWFpblRhcmdldC5QYWdlQWdlbnQubmF2aWdhdGUodXJsKTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgV0kudGFyZ2V0
TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLlRhcmdldE1hbmFnZXIuRXZlbnQuRGlkQ29tbWl0
UHJvdmlzaW9uYWxUYXJnZXQsIChldmVudCkgPT4geworICAgICAgICAgICAgICAgIGxldCB7cHJl
dmlvdXNUYXJnZXRJZCwgdGFyZ2V0fSA9IGV2ZW50LmRhdGE7CisgICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5wYXNzKGBTaG91bGQgcmVjZWl2ZSBEaWRDb21taXRQcm92aXNpb25hbFRhcmdl
dCBldmVudCAke3N0YWJsZVRhcmdldElkKHByZXZpb3VzVGFyZ2V0SWQpfSA9PiAke3N0YWJsZVRh
cmdldElkKHRhcmdldC5pZGVudGlmaWVyKX0uYCk7CisgICAgICAgICAgICB9KTsKKworICAgICAg
ICAgICAgV0kudGFyZ2V0TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLlRhcmdldE1hbmFnZXIu
RXZlbnQuVGFyZ2V0UmVtb3ZlZCwgKGV2ZW50KSA9PnsKKyAgICAgICAgICAgICAgICBsZXQgdGFy
Z2V0SWQgPSBzdGFibGVUYXJnZXRJZChldmVudC5kYXRhLnRhcmdldC5pZGVudGlmaWVyKTsKKyAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnBhc3MoYFNob3VsZCByZWNlaXZlIFRhcmdldFJl
bW92ZWQgZXZlbnQgZm9yIHRhcmdldCAke3RhcmdldElkfWApOworICAgICAgICAgICAgfSk7CisK
KyAgICAgICAgICAgIC8vIFdhaXQgZm9yIHBhZ2UgcmVsb2FkIGV2ZW50IHRvIGF2b2lkIHJhY2Ug
YmV0d2VlbiB0ZXN0IHJlc3VsdHMgZmx1c2hpbmcgYW5kIHRoZSB0ZXN0IGNvbXBsZXRpb24uCisg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmF3YWl0RXZlbnQoRnJvbnRlbmRUZXN0SGFybmVzcy5F
dmVudC5UZXN0UGFnZURpZExvYWQpCisgICAgICAgICAgICAudGhlbigoKSA9PiB7CisgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChsYXN0QXNzaWduZWRJZCwgMywgYFNo
b3VsZCBoYXZlIHNlZW4gMyBkaWZmZXJlbnQgdGFyZ2V0cy5gKTsKKyAgICAgICAgICAgIH0pCisg
ICAgICAgICAgICAudGhlbihyZXNvbHZlKTsKKworICAgICAgICAgICAgV0kubWFpblRhcmdldC5Q
YWdlQWdlbnQubmF2aWdhdGUodXJsKTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgc3VpdGUu
cnVuVGVzdENhc2VzQW5kRmluaXNoKCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9u
bG9hZD0icnVuVGVzdCgpIj4KKzxwPlRlc3QgdGhhdCB0d28gY29uc2VxdXRpdmUgY3Jvc3MgZG9t
YWluIG5hdmlnYXRpb24gcmVxdWVzdHMgd2lsbCByZXN1bHQgaW4gdHdvCitwcm92aXNpb25hbCB0
YXJnZXRzIGJlaW5nIGNyZWF0ZWQsIGZpcnN0IG9mIHdoaWNoIGlzIGxhdGVyIGRlc3Ryb3llZCBh
bmQgdGhlIHNlY29uZAoraXMgY29tbWl0dGVkLjwvcD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3RhcmdldC9yZXNvdXJjZXMv
aW5saW5lLWRlYnVnZ2VyLXN0YXRlbWVudC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9p
bnNwZWN0b3IvdGFyZ2V0L3Jlc291cmNlcy9pbmxpbmUtZGVidWdnZXItc3RhdGVtZW50Lmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNWMwYzAxNmE1YWQzOGNhNjhmOGVhN2IzNmRiNDM1NDc5YzViYWEyMAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3RhcmdldC9y
ZXNvdXJjZXMvaW5saW5lLWRlYnVnZ2VyLXN0YXRlbWVudC5odG1sCkBAIC0wLDAgKzEsMTkgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0
PgorPHNjcmlwdD4KKworZGVidWdnZXI7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIEluc3Bl
Y3RvclRlc3QuZmFpbCgiVGhpcyBjb2RlIHNob3VsZCBuZXZlciBhY3R1YWxseSBydW4uIEl0IGlz
IGhlcmUgYmVjYXNlIGluc3BlY3Rvci10ZXN0LmpzIGhhcm5lc3MgcmVxdWlyZXMgYSB0ZXN0KCkg
ZnVuY3Rpb24uIik7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVz
dCgpIj4KKzxwPlRlc3QgcGFnZSB1c2VkIHRvIGNoZWNrIHRoYXQgZXhlY3V0aW9uIHdpbGwgYnJl
YWsgb24gaW5saW5lICdkZWJ1Z2dlcicgc3RhdGVtZW50IGFmdGVyIGNyb3NzLW9yaWdpbiBuYXZp
Z2F0aW9uLjwvcD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvaW5zcGVjdG9yL3RhcmdldC90YXJnZXQtZXZlbnRzLWZvci1wcm92aXNpb25hbC1w
YWdlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Rhcmdl
dC90YXJnZXQtZXZlbnRzLWZvci1wcm92aXNpb25hbC1wYWdlLWV4cGVjdGVkLnR4dAppbmRleCA2
ZGVmN2UwYmIzNDRkZTMyZDZkNTVjNzgyYTk4ZjIxNjMwOTlmODdkLi5kMDBlMzYzMmRjNWRkYmIy
OWZmNzJjOGIxNzI4ZTk3NDkxZGUyNDI2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luc3BlY3Rvci90YXJnZXQvdGFyZ2V0LWV2ZW50cy1mb3ItcHJvdmlzaW9uYWwtcGFnZS1l
eHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvdGFyZ2V0
L3RhcmdldC1ldmVudHMtZm9yLXByb3Zpc2lvbmFsLXBhZ2UtZXhwZWN0ZWQudHh0CkBAIC02LDEx
ICs2LDExIEBAIFRlc3QgdGhhdCBjcm9zcyBkb21haW4gbmF2aWdhdGlvbiByZXN1bHRzIGluIHRo
ZSBmb2xsb3dpbmcgc2VxdWVuY2Ugb2YgZXZlbnRzIGluCiAKID09IFJ1bm5pbmcgdGVzdCBzdWl0
ZTogVGFyZ2V0LlBTT04KIC0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBQcm92aXNpb25hbFBhZ2VUYXJn
ZXQKLVBBU1M6IFNob3VsZCByZWNlaXZlIHRhcmdldENyZWF0ZWQgZXZlbnQuCitQQVNTOiBTaG91
bGQgcmVjZWl2ZSBUYXJnZXRBZGRlZCBldmVudC4KIFBBU1M6IFRhcmdldCBzaG91bGQgYmUgcHJv
dmlzaW9uYWwuCi1QQVNTOiBTaG91bGQgcmVjZWl2ZSBkaWRDb21taXRQcm92aXNpb25hbFRhcmdl
dCBldmVudC4KK1BBU1M6IFNob3VsZCByZWNlaXZlIFRhcmdldFJlbW92ZWQgZXZlbnQuCitQQVNT
OiBEZXN0cm95ZWQgdGFyZ2V0IHNob3VsZCBiZSBwcmV2aW91cyB0YXJnZXQuCitQQVNTOiBTaG91
bGQgcmVjZWl2ZSBEaWRDb21taXRQcm92aXNpb25hbFRhcmdldCBldmVudC4KIFBBU1M6IFByZXZp
b3VzIHRhcmdldCBzaG91bGQgYmUgdGhlIGN1cnJlbnQgb25lLgogUEFTUzogQ29tbWl0dGVkIHRh
cmdldCBzaG91bGQgbWF0Y2ggcHJvdmlzaW9uYWwgdGFyZ2V0LgotUEFTUzogU2hvdWxkIHJlY2Vp
dmUgdGFyZ2V0RGVzdHJveWVkIGV2ZW50LgotUEFTUzogRGVzdHJveWVkIHRhcmdldCBzaG91bGQg
YmUgcHJldmlvdXMgdGFyZ2V0LgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luc3BlY3Rvci90YXJnZXQvdGFyZ2V0LWV2ZW50cy1mb3ItcHJvdmlzaW9uYWwtcGFnZS5odG1s
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvdGFyZ2V0L3RhcmdldC1ldmVudHMt
Zm9yLXByb3Zpc2lvbmFsLXBhZ2UuaHRtbAppbmRleCBlNzM5NTEzOTM2NzQ0ZTU1NmVjMTEyYmRk
NTJhYTFkOGU2NDk0YTkxLi5jNTFmYjRlMmY1OWMzNjkzZWRiYjUxMTkzZWMzMjBlZmY2Zjk1ZDRl
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci90YXJnZXQvdGFy
Z2V0LWV2ZW50cy1mb3ItcHJvdmlzaW9uYWwtcGFnZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvaW5zcGVjdG9yL3RhcmdldC90YXJnZXQtZXZlbnRzLWZvci1wcm92aXNpb25hbC1w
YWdlLmh0bWwKQEAgLTEzLDI4ICsxMywyNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgZGVz
Y3JpcHRpb246ICJDaGVjayB0aGF0IGEgbmV3IHRhcmdldCB3aWxsIGJlIGNyZWF0ZWQgZm9yIHBy
b3Zpc2lvbmFsIHBhZ2UuIiwKICAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKICAgICAg
ICAgICAgIGNvbnN0IG1haW5UYXJnZXRJZCA9IFdJLm1haW5UYXJnZXQuaWRlbnRpZmllcjsKLSAg
ICAgICAgICAgIGxldCBuZXdUYXJnZXRJZDsKKyAgICAgICAgICAgIGxldCBuZXdUYXJnZXQ7CiAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChtYWluVGFyZ2V0SWQpOwogICAgICAgICAg
ICAgbGV0IHJlbG9hZFByb21pc2UgPSBJbnNwZWN0b3JUZXN0LmF3YWl0RXZlbnQoRnJvbnRlbmRU
ZXN0SGFybmVzcy5FdmVudC5UZXN0UGFnZURpZExvYWQpOwogCi0gICAgICAgICAgICBXSS50YXJn
ZXRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuVGFyZ2V0TWFuYWdlci5FdmVudC5UYXJnZXRD
cmVhdGVkLCAoZXZlbnQpID0+IHsKLSAgICAgICAgICAgICAgICBsZXQge3RhcmdldEluZm99ID0g
ZXZlbnQuZGF0YTsKLSAgICAgICAgICAgICAgICBuZXdUYXJnZXRJZCA9IHRhcmdldEluZm8udGFy
Z2V0SWQ7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5wYXNzKGBTaG91bGQgcmVjZWl2
ZSB0YXJnZXRDcmVhdGVkIGV2ZW50LmApOwotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
ZXhwZWN0VHJ1ZSh0YXJnZXRJbmZvLmlzUHJvdmlzaW9uYWwsICJUYXJnZXQgc2hvdWxkIGJlIHBy
b3Zpc2lvbmFsLiIpOworICAgICAgICAgICAgV0kudGFyZ2V0TWFuYWdlci5hZGRFdmVudExpc3Rl
bmVyKFdJLlRhcmdldE1hbmFnZXIuRXZlbnQuVGFyZ2V0QWRkZWQsIChldmVudCkgPT4geworICAg
ICAgICAgICAgICAgIG5ld1RhcmdldCA9IGV2ZW50LmRhdGEudGFyZ2V0OworICAgICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QucGFzcyhgU2hvdWxkIHJlY2VpdmUgVGFyZ2V0QWRkZWQgZXZlbnQu
YCk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUcnVlKG5ld1RhcmdldC5p
c1Byb3Zpc2lvbmFsLCAiVGFyZ2V0IHNob3VsZCBiZSBwcm92aXNpb25hbC4iKTsKICAgICAgICAg
ICAgIH0pOwogCiAgICAgICAgICAgICBXSS50YXJnZXRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIo
V0kuVGFyZ2V0TWFuYWdlci5FdmVudC5EaWRDb21taXRQcm92aXNpb25hbFRhcmdldCwgKGV2ZW50
KSA9PiB7Ci0gICAgICAgICAgICAgICAgbGV0IHtwcmV2aW91c1RhcmdldElkLCB0YXJnZXRJbmZv
fSA9IGV2ZW50LmRhdGE7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5wYXNzKGBTaG91
bGQgcmVjZWl2ZSBkaWRDb21taXRQcm92aXNpb25hbFRhcmdldCBldmVudC5gKTsKKyAgICAgICAg
ICAgICAgICBsZXQge3ByZXZpb3VzVGFyZ2V0SWQsIHRhcmdldH0gPSBldmVudC5kYXRhOworICAg
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3QucGFzcyhgU2hvdWxkIHJlY2VpdmUgRGlkQ29tbWl0
UHJvdmlzaW9uYWxUYXJnZXQgZXZlbnQuYCk7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5leHBlY3RFcXVhbChwcmV2aW91c1RhcmdldElkLCBtYWluVGFyZ2V0SWQsICJQcmV2aW91cyB0
YXJnZXQgc2hvdWxkIGJlIHRoZSBjdXJyZW50IG9uZS4iKTsKLSAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHRhcmdldEluZm8udGFyZ2V0SWQsIG5ld1RhcmdldElkLCAi
Q29tbWl0dGVkIHRhcmdldCBzaG91bGQgbWF0Y2ggcHJvdmlzaW9uYWwgdGFyZ2V0LiIpOworICAg
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwodGFyZ2V0LCBuZXdUYXJnZXQs
ICJDb21taXR0ZWQgdGFyZ2V0IHNob3VsZCBtYXRjaCBwcm92aXNpb25hbCB0YXJnZXQuIik7CiAg
ICAgICAgICAgICB9KTsKIAotICAgICAgICAgICAgV0kudGFyZ2V0TWFuYWdlci5hZGRFdmVudExp
c3RlbmVyKFdJLlRhcmdldE1hbmFnZXIuRXZlbnQuVGFyZ2V0RGVzdHJveWVkLCAoZXZlbnQpID0+
ewotICAgICAgICAgICAgICAgIGxldCB7dGFyZ2V0SWR9ID0gZXZlbnQuZGF0YTsKLSAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LnBhc3MoYFNob3VsZCByZWNlaXZlIHRhcmdldERlc3Ryb3ll
ZCBldmVudC5gKTsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHRh
cmdldElkLCBtYWluVGFyZ2V0SWQsICJEZXN0cm95ZWQgdGFyZ2V0IHNob3VsZCBiZSBwcmV2aW91
cyB0YXJnZXQuIik7CisgICAgICAgICAgICBXSS50YXJnZXRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVu
ZXIoV0kuVGFyZ2V0TWFuYWdlci5FdmVudC5UYXJnZXRSZW1vdmVkLCAoZXZlbnQpID0+eworICAg
ICAgICAgICAgICAgIGxldCB0YXJnZXQgPSBldmVudC5kYXRhLnRhcmdldDsKKyAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LnBhc3MoYFNob3VsZCByZWNlaXZlIFRhcmdldFJlbW92ZWQgZXZl
bnQuYCk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbCh0YXJnZXQu
aWRlbnRpZmllciwgbWFpblRhcmdldElkLCAiRGVzdHJveWVkIHRhcmdldCBzaG91bGQgYmUgcHJl
dmlvdXMgdGFyZ2V0LiIpOwogCiAgICAgICAgICAgICAgICAgLy8gV2FpdCBmb3IgcGFnZSByZWxv
YWQgZXZlbnQgdG8gYXZvaWQgcmFjZSBiZXR3ZWVuIHRlc3QgcmVzdWx0cyBmbHVzaGluZyBhbmQg
dGhlIHRlc3QgY29tcGxldGlvbi4KICAgICAgICAgICAgICAgICByZWxvYWRQcm9taXNlLnRoZW4o
cmVzb2x2ZSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>384771</attachid>
            <date>2019-12-03 17:14:25 -0800</date>
            <delta_ts>2019-12-03 23:38:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204170-20191203171424.patch</filename>
            <type>text/plain</type>
            <size>52462</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzMDQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
NDY2ZjVlYjI5MTEzYzMyODBmOGQ2NjMyMGQxMDQ0NTEwM2IwMjdmLi4yMDdiNDJlNTJiZDk5NzA3
OTBlMjgwNTk4NzYwOGE1NTk1MTk5YzY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMiBAQAorMjAxOS0xMS0xMyAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBhbGxvdyBpbnNwZWN0b3IgdG8gcGF1c2Ug
cHJvdmlzaW9uYWwgcGFnZSBsb2FkIGFuZCByZXN0b3JlIGl0cyBzdGF0ZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0MTcwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgYW4gb3B0aW9uIHRvIFRh
cmdldCBkb21haW4gdG8gcGF1c2UgYWxsIG5ldyB0YXJnZXRzIG9uIHN0YXJ0IHdhaXRpbmcgZm9y
CisgICAgICAgIGV4cGxpY2l0ICdyZXN1bWUnIGNvbW1hbmQgZnJvbSB0aGUgaW5zcGVjdG9yIGZy
b250LWVuZC4gVGhpcyBhbGxvd3MgdG8gY29uZmlndXJlCisgICAgICAgIGluc3BlY3RvciBiYWNr
ZW5kIChpbmNsdWRpbmcgdXNlciBhZ2VudCBvdmVycmlkZXMsIGJyZWFrcG9pbnRzIGFuZCBpbnN0
cnVtZW50YXRpb24pCisgICAgICAgIGJlZm9yZSBuYXZpZ2F0aW9uIHN0YXJ0cy4KKworICAgICAg
ICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
U291cmNlcy50eHQ6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclRhcmdldC5jcHA6IEFk
ZGVkLgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JUYXJnZXQ6OnBhdXNlKToKKyAgICAg
ICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yVGFyZ2V0OjpyZXN1bWUpOgorICAgICAgICAoSW5zcGVj
dG9yOjpJbnNwZWN0b3JUYXJnZXQ6OnNldFJlc3VtZUNhbGxiYWNrKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yVGFyZ2V0Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JUYXJnZXRBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvclRhcmdl
dEFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgIChJbnNwZWN0
b3I6Okluc3BlY3RvclRhcmdldEFnZW50OjpzZXRQYXVzZU9uU3RhcnQpOgorICAgICAgICAoSW5z
cGVjdG9yOjpJbnNwZWN0b3JUYXJnZXRBZ2VudDo6cmVzdW1lKToKKyAgICAgICAgKEluc3BlY3Rv
cjo6YnVpbGRUYXJnZXRJbmZvT2JqZWN0KToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9y
VGFyZ2V0QWdlbnQ6OnRhcmdldENyZWF0ZWQpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0
b3JUYXJnZXRBZ2VudDo6dGFyZ2V0RGVzdHJveWVkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvclRhcmdldEFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL3Byb3RvY29s
L1RhcmdldC5qc29uOgorCiAyMDE5LTEyLTAyICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgogCiAgICAgICAgIFByb3BlcnR5U2xvdCBzaG91bGQgbm90IGhhdmUgQ3VzdG9tcyBoYXZl
IGEgUHJvcGVydHlPZmZzZXQgb2YgemVybwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKaW5kZXggNWUx
ZGEzNGE3ZmY0NjQ5NDUzMDQzOGNlNWM3MDNiYzYxZjdlN2E2NC4uMmUwM2RjNjgxZGFmYmYwYzVm
ZTcxNzMzN2Y3MDA0MjI3NDllYzVmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNDEgQEAKKzIwMTktMTEtMTMgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogYWxsb3cgaW5zcGVjdG9yIHRvIHBhdXNlIHBy
b3Zpc2lvbmFsIHBhZ2UgbG9hZCBhbmQgcmVzdG9yZSBpdHMgc3RhdGUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNDE3MAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFsbCBuZXcgdGFyZ2V0cyBhcmUgbm93
IGF1dG9tYXRpY2FsbHkgcGF1c2VkIG9uIHN0YXJ0LiBGb3Igc3VjaCBwcm92aXNpb25hbCB0YXJn
ZXRzIHRhcmdldAorICAgICAgICBtYW5hZ2VyIHdpbGwgcnVuIHJlZ3VsYXIgaW5pdGlsaXphdGlv
biBjb2RlIChlbmFibGUgYWdlbnRzIGV0Yy4pIGFuZCB0aGVuIHJlc3VtZSBsb2FkaW5nIG9mCisg
ICAgICAgIHRoZSB0YXJnZXQuIFJlc3BvbnNlcyBhbmQgZXZlbnRzIGZyb20gdGhlIHRhcmdldCBh
cmUgZGVmZmVycmVkIHVudGlsIHRoZSB0YXJnZXQgaXMgY29tbWl0dGVkCisgICAgICAgIGFuZCBi
ZWNvbWVzIGN1cnJlbnQgbWFpbiB0YXJnZXQuIFdoZW4gdGhlIHRhcmdldCBtYW5hZ2VyIHJlY2Vp
dmVzIGV2ZW50IHRoYXQgdGhlIHByb3Zpc2lvbmFsCisgICAgICAgIHRhcmdldCBoYXMgYmVlbiBj
b21taXR0ZWQgYWxsIGFjY3VtdWxhdGVkIHByb3RvY29sIG1lc3NhZ2VzIGFyZSByZXBsYXllZCBh
bmQgZ29pbmcgZm9yd2FyZCBhbGwKKyAgICAgICAgbmV3IG1pc3NhZ2VzIHdpbGwgYmUgZGlzcGF0
Y2hlZCBhcyB1c3VhbC4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvVGFy
Z2V0TWFuYWdlci5qczoKKyAgICAgICAgKFdJLlRhcmdldE1hbmFnZXIpOgorICAgICAgICAoV0ku
VGFyZ2V0TWFuYWdlci5wcm90b3R5cGUudGFyZ2V0Q3JlYXRlZCk6CisgICAgICAgIChXSS5UYXJn
ZXRNYW5hZ2VyLnByb3RvdHlwZS5kaWRDb21taXRQcm92aXNpb25hbFRhcmdldCk6CisgICAgICAg
IChXSS5UYXJnZXRNYW5hZ2VyLnByb3RvdHlwZS50YXJnZXREZXN0cm95ZWQpOgorICAgICAgICAo
V0kuVGFyZ2V0TWFuYWdlci5wcm90b3R5cGUuZGlzcGF0Y2hNZXNzYWdlRnJvbVRhcmdldCk6Cisg
ICAgICAgIChXSS5UYXJnZXRNYW5hZ2VyLnByb3RvdHlwZS5fY3JlYXRlVGFyZ2V0KToKKyAgICAg
ICAgKFdJLlRhcmdldE1hbmFnZXIucHJvdG90eXBlLl9jaGVja0FuZEhhbmRsZVBhZ2VUYXJnZXRU
cmFuc2l0aW9uKToKKyAgICAgICAgKFdJLlRhcmdldE1hbmFnZXIucHJvdG90eXBlLl9jaGVja0Fu
ZEhhbmRsZVBhZ2VUYXJnZXRUZXJtaW5hdGlvbik6CisgICAgICAgICogVXNlckludGVyZmFjZS9Q
cm90b2NvbC9Db25uZWN0aW9uLmpzOgorICAgICAgICAoSW5zcGVjdG9yQmFja2VuZC5Db25uZWN0
aW9uKToKKyAgICAgICAgKEluc3BlY3RvckJhY2tlbmQuQ29ubmVjdGlvbi5wcm90b3R5cGUuYWRk
UHJvdmlzaW9uYWxNZXNzYWdlKToKKyAgICAgICAgKEluc3BlY3RvckJhY2tlbmQuQ29ubmVjdGlv
bi5wcm90b3R5cGUuZGlzcGF0Y2hQcm92aXNpb25hbE1lc3NhZ2VzKToKKyAgICAgICAgKiBVc2Vy
SW50ZXJmYWNlL1Byb3RvY29sL011bHRpcGxleGluZ0JhY2tlbmRUYXJnZXQuanM6CisgICAgICAg
IChXSS5NdWx0aXBsZXhpbmdCYWNrZW5kVGFyZ2V0LnByb3RvdHlwZS5pbml0aWFsaXplKToKKyAg
ICAgICAgKiBVc2VySW50ZXJmYWNlL1Byb3RvY29sL1BhZ2VUYXJnZXQuanM6CisgICAgICAgIChX
SS5QYWdlVGFyZ2V0KToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Byb3RvY29sL1RhcmdldC5q
czoKKyAgICAgICAgKFdJLlRhcmdldC5wcm90b3R5cGUuaW5pdGlhbGl6ZSk6CisgICAgICAgIChX
SS5UYXJnZXQucHJvdG90eXBlLmdldCBpc1Byb3Zpc2lvbmFsKToKKyAgICAgICAgKFdJLlRhcmdl
dC5wcm90b3R5cGUuZ2V0IGlzUGF1c2VkKToKKyAgICAgICAgKFdJLlRhcmdldC5wcm90b3R5cGUu
ZGlkQ29tbWl0UHJvdmlzaW9uYWxUYXJnZXQpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvUHJv
dG9jb2wvV29ya2VyVGFyZ2V0LmpzOgorCiAyMDE5LTEyLTAyICBOaWtpdGEgVmFzaWx5ZXYgIDxu
dmFzaWx5ZXZAYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFByb3ZpZGUgVUkg
dG8gY29udmVydCBiZXR3ZWVuIHNSR0IgYW5kIHAzIGNvbG9yIHNwYWNlcwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA3
NDUyNjJiNjc3NTY0Mjg1MzdmMGY3ZDdiNDQyZjJmOGNlNDgxZGY0Li5kYTZkN2UyMWFjYzFiYTIy
Mzc5MmY4YzFjNTMxYjYyNjcyYTg1NmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDE5
LTExLTEzICBZdXJ5IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFdlYiBJbnNwZWN0b3I6IGFsbG93IGluc3BlY3RvciB0byBwYXVzZSBwcm92aXNpb25hbCBwYWdl
IGxvYWQgYW5kIHJlc3RvcmUgaXRzIHN0YXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDQxNzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBQcm92aXNpb25hbCBwYWdlIGxvYWRpbmcgY2FuIGJlIGRlZmZl
cmVkIGlmIGluc3BlY3RvciBmcm9udC1lbmQgaXMgY29ubmVjdGVkLiBUaGlzCisgICAgICAgIGFs
bG93cyB0byBjb25maWd1cmUgaW5zcGVjdG9yIGJhY2tlbmQgaW4gdGhlIHByb3Zpc2lvbmFsIHBh
Z2UgYmVmb3JlIGxvYWQgcmVxdWVzdAorICAgICAgICBpcyBzZW50LiBJZiBpbnNwZWN0b3IgZnJv
bnQtZW5kIGlzIG5vdCBjb25uZWN0ZWQgcHJvdmlzaW9uYWwgbG9hZGluZyB3aWxsIGNvbml0aW51
ZQorICAgICAgICBleGFjdGx5IGFzIGJlZm9yZS4KKworICAgICAgICBUZXN0czogaHR0cC90ZXN0
cy9pbnNwZWN0b3IvdGFyZ2V0L3BhdXNlLW9uLWlubGluZS1kZWJ1Z2dlci1zdGF0ZW1lbnQuaHRt
bAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9pbnNwZWN0b3IvdGFyZ2V0L3Byb3Zpc2lvbmFs
LWxvYWQtY2FuY2Vscy1wcmV2aW91cy1sb2FkLmh0bWwKKworICAgICAgICAqIFVJUHJvY2Vzcy9J
bnNwZWN0b3JUYXJnZXRQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvclRhcmdl
dFByb3h5OjpkaXNjb25uZWN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZUluc3BlY3Rv
ckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlSW5zcGVjdG9yQ29udHJv
bGxlcjo6c2hvdWxkUGF1c2VMb2FkaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZUluc3BlY3RvckNvbnRyb2xsZXI6OnNldENvbnRpbnVlTG9hZGluZ0NhbGxiYWNrKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
Ojpjb250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3MpOgorCiAyMDE5LTEyLTAzICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgUGFnZUNvbmZpZ3VyYXRpb246OmFs
dGVybmF0aXZlVGV4dENsaWVudCBzaG91bGQgdXNlIGEgc21hcnQgcG9pbnRlcgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCBkOWU3OWE4ZWQyODNhYWQ2NTQzODg5OWFiMWVmNDU1MjA4
Nzk5YjRhLi4wZmE0YmRkNzFiNjcyYzA3ZGJkYWY3MGZkODExNzZhN2ZjYzI4ODRmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTAxOCw2ICs1MDE4LDcgQEAKIAkJRTQ5REMxNDkx
MkVGMjYxQTAwMTg0QTFGIC8qIFNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0OURDMTUxMTJFRjI3MjIwMDE4NEExRiAvKiBTb3VyY2VQ
cm92aWRlckNhY2hlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNvdXJjZVBy
b3ZpZGVyQ2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQ5REMxNTUxMkVG
Mjc3MjAwMTg0QTFGIC8qIFNvdXJjZVByb3ZpZGVyQ2FjaGUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gU291cmNlUHJvdmlkZXJDYWNoZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUYzNDU5RDc0MjM5NzNBQkQwMERDRDI3QSAvKiBJbnNwZWN0b3JU
YXJnZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9yVGFyZ2V0LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjVCQjJCQzUwMzBGNzcyMTAxRkNGRTFEIC8qIENvbXBs
ZXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
aW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQ29tcGxldGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IH07
CiAJCUY1QzI5MEU2MDI4NEY5OEUwMTg2MzVDQSAvKiBKYXZhU2NyaXB0Q29yZVByZWZpeC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0
aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKYXZhU2Ny
aXB0Q29yZVByZWZpeC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IH07
CiAJCUY2OEVCQjhDMDI1NUQ0QzYwMUZGNjBGNyAvKiBjb25maWcuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gY29uZmlnLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgfTsKQEAgLTg0OTAsNiArODQ5MSw3IEBACiAJCQkJ
OTlGMUE2RkMxQjhFNkQ5NDAwNDYzQjI2IC8qIEluc3BlY3RvckZyb250ZW5kUm91dGVyLmNwcCAq
LywKIAkJCQk5OUYxQTcwMDFCOThGQkVDMDA0NjNCMjYgLyogSW5zcGVjdG9yRnJvbnRlbmRSb3V0
ZXIuaCAqLywKIAkJCQlBNTVEOTNBQjE4NTE0Rjc5MDA0MDBERUQgLyogSW5zcGVjdG9yUHJvdG9j
b2xUeXBlcy5oICovLAorCQkJCUYzNDU5RDc0MjM5NzNBQkQwMERDRDI3QSAvKiBJbnNwZWN0b3JU
YXJnZXQuY3BwICovLAogCQkJCUE1NTVGRjM4MjE1OUQyRDYwMEZDRDgyNiAvKiBJbnNwZWN0b3JU
YXJnZXQuaCAqLywKIAkJCQlBNTAzRkExMzE4OEUwRkFGMDAxMTBGMTQgLyogSmF2YVNjcmlwdENh
bGxGcmFtZS5jcHAgKi8sCiAJCQkJQTUwM0ZBMTQxODhFMEZBRjAwMTEwRjE0IC8qIEphdmFTY3Jp
cHRDYWxsRnJhbWUuaCAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3Vy
Y2VzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRleCA4ZDcwNmM5
NTIxY2I3ZGI2OWQyYTg1NzhhZDRhNDJlZDMyODUwZWRlLi4xYmZkN2VjZjBkMWM3NzljODZhYjdh
ZWY1MWExOGY1OWI3MDM0ZWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291
cmNlcy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC01NjMs
NiArNTYzLDcgQEAgaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmNwcAogaW5zcGVjdG9y
L0luc3BlY3RvckFnZW50UmVnaXN0cnkuY3BwCiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRS
b3V0ZXIuY3BwCiBpbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3BwCitpbnNw
ZWN0b3IvSW5zcGVjdG9yVGFyZ2V0LmNwcAogaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0Q29uc29s
ZUNsaWVudC5jcHAKIGluc3BlY3Rvci9KU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIu
Y3BwCiBpbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZlci5jcHAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGFyZ2V0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGFyZ2V0LmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4zOGNiNTU0ZDY1OTFmNmMyNjRjNzlhNzM3MjcwMWZhZDYxZjljM2IyCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JU
YXJnZXQuY3BwCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgTWlj
cm9zb2Z0IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisg
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbiBub3IgdGhl
IG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yVGFyZ2V0LmgiCisKK25hbWVzcGFjZSBJbnNw
ZWN0b3IgeworCit2b2lkIEluc3BlY3RvclRhcmdldDo6cGF1c2UoKQoreworICAgIEFTU0VSVCgh
bV9pc1BhdXNlZCk7CisgICAgbV9pc1BhdXNlZCA9IHRydWU7Cit9CisKK3ZvaWQgSW5zcGVjdG9y
VGFyZ2V0OjpyZXN1bWUoKQoreworICAgIEFTU0VSVChtX2lzUGF1c2VkKTsKKyAgICBtX2lzUGF1
c2VkID0gZmFsc2U7CisgICAgaWYgKG1fcmVzdW1lQ2FsbGJhY2spIHsKKyAgICAgICAgbV9yZXN1
bWVDYWxsYmFjaygpOworICAgICAgICBtX3Jlc3VtZUNhbGxiYWNrID0gbnVsbHB0cjsKKyAgICB9
Cit9CisKK3ZvaWQgSW5zcGVjdG9yVGFyZ2V0OjpzZXRSZXN1bWVDYWxsYmFjayhXVEY6OkZ1bmN0
aW9uPHZvaWQoKT4mJiBjYWxsYmFjaykKK3sKKyAgICBBU1NFUlQoIW1fcmVzdW1lQ2FsbGJhY2sp
OworICAgIG1fcmVzdW1lQ2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgSW5zcGVjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclRhcmdldC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JUYXJnZXQuaAppbmRleCBhOWYwNGI4YTBjOWFmYWVlYTRmZThjMGE0ZDA3ZDgy
MzBhOWMzNTYwLi40Yjk1OTY0ZGI0ZDkwMmI0YjdmNGIwYjRjNDBhZmVhNTE2NTRmZjJmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRhcmdldC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGFyZ2V0LmgK
QEAgLTQ3LDExICs0NywxOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBJbnNwZWN0b3JUYXJnZXRU
eXBlIHR5cGUoKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNQcm92aXNpb25hbCgp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc1BhdXNlZCgpIGNvbnN0IHsgcmV0
dXJuIG1faXNQYXVzZWQ7IH0KKyAgICB2b2lkIHBhdXNlKCk7CisgICAgdm9pZCByZXN1bWUoKTsK
KyAgICB2b2lkIHNldFJlc3VtZUNhbGxiYWNrKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmKTsKIAog
ICAgIC8vIENvbm5lY3Rpb24gbWFuYWdlbWVudC4KICAgICB2aXJ0dWFsIHZvaWQgY29ubmVjdChG
cm9udGVuZENoYW5uZWw6OkNvbm5lY3Rpb25UeXBlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRp
c2Nvbm5lY3QoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNlbmRNZXNzYWdlVG9UYXJnZXRCYWNr
ZW5kKGNvbnN0IFN0cmluZyYpID0gMDsKKworcHJpdmF0ZToKKyAgICBXVEY6OkZ1bmN0aW9uPHZv
aWQoKT4gbV9yZXN1bWVDYWxsYmFjazsKKyAgICBib29sIG1faXNQYXVzZWQgeyBmYWxzZSB9Owog
fTsKIAogfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUYXJnZXRBZ2VudC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUYXJnZXRBZ2VudC5j
cHAKaW5kZXggMTE3NzA5MGZjMTg2MjNlZjUwMWM5YWQ0YzMzODliYzJkYTkxMDcxZS4uOGZjYjVh
MWU1NTc1MGQzMjVhODQ4MjRkODZjNDljZmU2ZmIwNDI2OCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGFyZ2V0QWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRhcmdl
dEFnZW50LmNwcApAQCAtNTIsNiArNTIsMjggQEAgdm9pZCBJbnNwZWN0b3JUYXJnZXRBZ2VudDo6
d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoRGlzY29ubmVjdFJlYXNvbikKICAgICBkaXNj
b25uZWN0RnJvbVRhcmdldHMoKTsKIAogICAgIG1faXNDb25uZWN0ZWQgPSBmYWxzZTsKKyAgICBt
X3Nob3VsZFBhdXNlT25TdGFydCA9IGZhbHNlOworfQorCit2b2lkIEluc3BlY3RvclRhcmdldEFn
ZW50OjpzZXRQYXVzZU9uU3RhcnQoRXJyb3JTdHJpbmcmLCBib29sIHBhdXNlT25TdGFydCkKK3sK
KyAgICBtX3Nob3VsZFBhdXNlT25TdGFydCA9IHBhdXNlT25TdGFydDsKK30KKwordm9pZCBJbnNw
ZWN0b3JUYXJnZXRBZ2VudDo6cmVzdW1lKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3Qg
U3RyaW5nJiB0YXJnZXRJZCkKK3sKKyAgICBhdXRvKiB0YXJnZXQgPSBtX3RhcmdldHMuZ2V0KHRh
cmdldElkKTsKKyAgICBpZiAoIXRhcmdldCkgeworICAgICAgICBlcnJvclN0cmluZyA9ICJNaXNz
aW5nIHRhcmdldCBmb3IgZ2l2ZW4gdGFyZ2V0SWQiX3M7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBpZiAoIXRhcmdldC0+aXNQYXVzZWQoKSkgeworICAgICAgICBlcnJvclN0cmluZyA9
ICJUYXJnZXQgZm9yIGdpdmVuIHRhcmdldElkIGlzIG5vdCBwYXVzZWQiX3M7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICB0YXJnZXQtPnJlc3VtZSgpOwogfQogCiB2b2lkIEluc3BlY3Rv
clRhcmdldEFnZW50OjpzZW5kTWVzc2FnZVRvVGFyZ2V0KEVycm9yU3RyaW5nJiBlcnJvclN0cmlu
ZywgY29uc3QgU3RyaW5nJiB0YXJnZXRJZCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQpAQCAtOTUs
NiArMTE3LDggQEAgc3RhdGljIFJlZjxQcm90b2NvbDo6VGFyZ2V0OjpUYXJnZXRJbmZvPiBidWls
ZFRhcmdldEluZm9PYmplY3QoY29uc3QgSW5zcGVjdG9yVGEKICAgICAgICAgLnJlbGVhc2UoKTsK
ICAgICBpZiAodGFyZ2V0LmlzUHJvdmlzaW9uYWwoKSkKICAgICAgICAgcmVzdWx0LT5zZXRJc1By
b3Zpc2lvbmFsKHRydWUpOworICAgIGlmICh0YXJnZXQuaXNQYXVzZWQoKSkKKyAgICAgICAgcmVz
dWx0LT5zZXRJc1BhdXNlZCh0cnVlKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0xMDYs
NiArMTMwLDggQEAgdm9pZCBJbnNwZWN0b3JUYXJnZXRBZ2VudDo6dGFyZ2V0Q3JlYXRlZChJbnNw
ZWN0b3JUYXJnZXQmIHRhcmdldCkKICAgICBpZiAoIW1faXNDb25uZWN0ZWQpCiAgICAgICAgIHJl
dHVybjsKIAorICAgIGlmIChtX3Nob3VsZFBhdXNlT25TdGFydCkKKyAgICAgICAgdGFyZ2V0LnBh
dXNlKCk7CiAgICAgdGFyZ2V0LmNvbm5lY3QoY29ubmVjdGlvblR5cGUoKSk7CiAKICAgICBtX2Zy
b250ZW5kRGlzcGF0Y2hlci0+dGFyZ2V0Q3JlYXRlZChidWlsZFRhcmdldEluZm9PYmplY3QodGFy
Z2V0KSk7CkBAIC0xMTgsOCArMTQ0LDYgQEAgdm9pZCBJbnNwZWN0b3JUYXJnZXRBZ2VudDo6dGFy
Z2V0RGVzdHJveWVkKEluc3BlY3RvclRhcmdldCYgdGFyZ2V0KQogICAgIGlmICghbV9pc0Nvbm5l
Y3RlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgdGFyZ2V0LmRpc2Nvbm5lY3QoKTsKLQogICAg
IG1fZnJvbnRlbmREaXNwYXRjaGVyLT50YXJnZXREZXN0cm95ZWQodGFyZ2V0LmlkZW50aWZpZXIo
KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvclRhcmdldEFnZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JUYXJnZXRBZ2VudC5oCmluZGV4IDM4Y2IzMTg5ODZiMzFjNGRl
ZDE5YmE5YmVhZTc4NTVkMmI1NGMyM2EuLjFlYjdhYmIyZmEyMWQ3YThlYzA4MzMxNjBmNTNlNWM1
MjNlYzQzMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvclRhcmdldEFnZW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGFyZ2V0QWdlbnQuaApAQCAtNDksNiArNDksOCBAQCBw
dWJsaWM6CiAgICAgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChEaXNjb25uZWN0
UmVhc29uKSBmaW5hbDsKIAogICAgIC8vIFRhcmdldEJhY2tlbmREaXNwYXRjaGVySGFuZGxlcgor
ICAgIHZvaWQgc2V0UGF1c2VPblN0YXJ0KEVycm9yU3RyaW5nJiwgYm9vbCBwYXVzZU9uU3RhcnQp
IG92ZXJyaWRlOworICAgIHZvaWQgcmVzdW1lKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiB0
YXJnZXRJZCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZW5kTWVzc2FnZVRvVGFyZ2V0KEVycm9yU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJiB0YXJnZXRJZCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKSBmaW5h
bDsKIAogICAgIC8vIFRhcmdldCBsaWZlY3ljbGUuCkBAIC03MCw2ICs3Miw3IEBAIHByaXZhdGU6
CiAgICAgUmVmPFRhcmdldEJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwog
ICAgIEhhc2hNYXA8U3RyaW5nLCBJbnNwZWN0b3JUYXJnZXQqPiBtX3RhcmdldHM7CiAgICAgYm9v
bCBtX2lzQ29ubmVjdGVkIHsgZmFsc2UgfTsKKyAgICBib29sIG1fc2hvdWxkUGF1c2VPblN0YXJ0
IHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9UYXJnZXQuanNvbiBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvVGFyZ2V0Lmpzb24KaW5kZXgg
MjQwY2Q0MmU2N2UzMjUwZTQzNGMwYmY2ZjlkMTYxNjg1MDVhOGMyMi4uNTI5MjBjZGVkMjRhOWM2
YjBlZjZmYjRlNTE4NjY0OTU1ZGI0ZjlmYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9wcm90b2NvbC9UYXJnZXQuanNvbgorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL1RhcmdldC5qc29uCkBAIC0xMCwxMSArMTAsMjYgQEAK
ICAgICAgICAgICAgICJwcm9wZXJ0aWVzIjogWwogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAi
dGFyZ2V0SWQiLCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAiVW5pcXVlIGlkZW50
aWZpZXIgZm9yIHRoZSB0YXJnZXQuIiB9LAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAidHlw
ZSIsICJ0eXBlIjogInN0cmluZyIsICJlbnVtIjogWyJwYWdlIiwgInNlcnZpY2Utd29ya2VyIiwg
IndvcmtlciJdIH0sCi0gICAgICAgICAgICAgICAgeyAibmFtZSI6ICJpc1Byb3Zpc2lvbmFsIiwg
InR5cGUiOiAiYm9vbGVhbiIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJUcnVl
IHZhbHVlIGluZGljYXRlcyB0aGF0IHRoaXMgaXMgYSBwcm92aXNpb25hbCBwYWdlIHRhcmdldCBp
LmUuIFN1Y2ggdGFyZ2V0IG1heSBiZSBjcmVhdGVkIHdoZW4gY3VycmVudCBwYWdlIHN0YXJ0cyBj
cm9zcy1vcmlnaW4gbmF2aWdhdGlvbi4gRXZlbnR1YWxseSBlYWNoIHByb3Zpc2lvbmFsIHRhcmdl
dCBpcyBlaXRoZXIgY29tbWl0dGVkIGFuZCBzd2FwcyB3aXRoIHRoZSBjdXJyZW50IHRhcmdldCBv
ciBnZXRzIGRlc3Ryb3llZCwgZS5nLiBpbiBjYXNlIG9mIGxvYWQgcmVxdWVzdCBmYWlsdXJlLiIg
fQorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiaXNQcm92aXNpb25hbCIsICJ0eXBlIjogImJv
b2xlYW4iLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiV2hldGhlciB0aGlzIGlz
IGEgcHJvdmlzaW9uYWwgcGFnZSB0YXJnZXQuIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUi
OiAiaXNQYXVzZWQiLCAidHlwZSI6ICJib29sZWFuIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2Ny
aXB0aW9uIjogIldoZXRoZXIgdGhlIHRhcmdldCBpcyBwYXVzZWQgb24gc3RhcnQgYW5kIGhhcyB0
byBiZSBleHBsaWNpdGVseSByZXN1bWVkIGJ5IGluc3BlY3Rvci4iIH0KICAgICAgICAgICAgIF0K
ICAgICAgICAgfQogICAgIF0sCiAgICAgImNvbW1hbmRzIjogWworICAgICAgICB7CisgICAgICAg
ICAgICAibmFtZSI6ICJzZXRQYXVzZU9uU3RhcnQiLAorICAgICAgICAgICAgImRlc2NyaXB0aW9u
IjogIklmIHNldCB0byB0cnVlLCBuZXcgdGFyZ2V0cyB3aWxsIGJlIHBhdXNlZCBvbiBzdGFydCB3
YWl0aW5nIGZvciByZXN1bWUgY29tbWFuZC4gT3RoZXIgY29tbWFuZHMgY2FuIGJlIGRpc3BhdGNo
ZWQgb24gdGhlIHRhcmdldCBiZWZvcmUgaXQgaXMgcmVzdW1lZC4iLAorICAgICAgICAgICAgInBh
cmFtZXRlcnMiOiBbCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJwYXVzZU9uU3RhcnQiLCAi
dHlwZSI6ICJib29sZWFuIiwgImRlc2NyaXB0aW9uIjogIklmIHNldCB0byB0cnVlLCBuZXcgdGFy
Z2V0cyB3aWxsIGJlIHBhdXNlZCBvbiBzdGFydCB3YWl0aW5nIGZvciByZXN1bWUgY29tbWFuZC4i
IH0KKyAgICAgICAgICAgIF0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgIm5h
bWUiOiAicmVzdW1lIiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJXaWxsIHJlc3VtZSB0
YXJnZXQgaWYgaXQgd2FzIHBhdXNlZCBvbiBzdGFydC4iLAorICAgICAgICAgICAgInBhcmFtZXRl
cnMiOiBbCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ0YXJnZXRJZCIsICJ0eXBlIjogInN0
cmluZyIgfQorICAgICAgICAgICAgXQorICAgICAgICB9LAogICAgICAgICB7CiAgICAgICAgICAg
ICAibmFtZSI6ICJzZW5kTWVzc2FnZVRvVGFyZ2V0IiwKICAgICAgICAgICAgICJkZXNjcmlwdGlv
biI6ICJTZW5kIGFuIEluc3BlY3RvciBQcm90b2NvbCBtZXNzYWdlIHRvIGJlIGRpc3BhdGNoZWQg
dG8gYSBUYXJnZXQncyBhZ2VudHMuIiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1RhcmdldE1hbmFnZXIuanMgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9UYXJnZXRNYW5hZ2VyLmpzCmlu
ZGV4IDE0OTUzMWQ4NTg3MzkyMmJjMGNiNmU5MWQyNmI3M2MxYTIxNmY4NTIuLjZjNzY2YjNkNGU2
Yjc5MjMxYjkxZWVjYWExYzg1M2JhMWNkYmExYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1RhcmdldE1hbmFnZXIuanMKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvVGFyZ2V0TWFu
YWdlci5qcwpAQCAtMzMsOSArMzMsNiBAQCBXSS5UYXJnZXRNYW5hZ2VyID0gY2xhc3MgVGFyZ2V0
TWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICB0aGlzLl9jYWNoZWRUYXJnZXRzTGlz
dCA9IG51bGw7CiAgICAgICAgIHRoaXMuX3NlZW5QYWdlVGFyZ2V0ID0gZmFsc2U7CiAgICAgICAg
IHRoaXMuX3RyYW5zaXRpb25UaW1lb3V0SWRlbnRpZmllciA9IHVuZGVmaW5lZDsKLQotICAgICAg
ICB0aGlzLl9wcm92aXNpb25hbFRhcmdldEluZm9zID0gbmV3IE1hcDsKLSAgICAgICAgdGhpcy5f
c3dhcHBlZFRhcmdldElkcyA9IG5ldyBTZXQ7CiAgICAgfQogCiAgICAgLy8gUHVibGljCkBAIC0x
MjAsOTEgKzExNyw2NiBAQCBXSS5UYXJnZXRNYW5hZ2VyID0gY2xhc3MgVGFyZ2V0TWFuYWdlciBl
eHRlbmRzIFdJLk9iamVjdAogCiAgICAgdGFyZ2V0Q3JlYXRlZChwYXJlbnRUYXJnZXQsIHRhcmdl
dEluZm8pCiAgICAgewotICAgICAgICB0aGlzLl9jb25uZWN0VG9UYXJnZXQocGFyZW50VGFyZ2V0
LCB0YXJnZXRJbmZvKTsKLQotICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhX
SS5UYXJnZXRNYW5hZ2VyLkV2ZW50LlRhcmdldENyZWF0ZWQsIHt0YXJnZXRJbmZvfSk7CisgICAg
ICAgIGxldCBjb25uZWN0aW9uID0gbmV3IEluc3BlY3RvckJhY2tlbmQuVGFyZ2V0Q29ubmVjdGlv
bihwYXJlbnRUYXJnZXQsIHRhcmdldEluZm8udGFyZ2V0SWQpOworICAgICAgICBsZXQgc3ViVGFy
Z2V0ID0gdGhpcy5fY3JlYXRlVGFyZ2V0KHBhcmVudFRhcmdldCwgdGFyZ2V0SW5mbywgY29ubmVj
dGlvbik7CisgICAgICAgIHRoaXMuX2NoZWNrQW5kSGFuZGxlUGFnZVRhcmdldFRyYW5zaXRpb24o
c3ViVGFyZ2V0KTsKKyAgICAgICAgc3ViVGFyZ2V0LmluaXRpYWxpemUoKTsKKyAgICAgICAgdGhp
cy5hZGRUYXJnZXQoc3ViVGFyZ2V0KTsKICAgICB9CiAKICAgICBkaWRDb21taXRQcm92aXNpb25h
bFRhcmdldChwYXJlbnRUYXJnZXQsIHByZXZpb3VzVGFyZ2V0SWQsIG5ld1RhcmdldElkKQogICAg
IHsKLSAgICAgICAgdGhpcy5fZGVzdHJveVRhcmdldChwcmV2aW91c1RhcmdldElkKTsKLSAgICAg
ICAgbGV0IHRhcmdldEluZm8gPSB0aGlzLl9wcm92aXNpb25hbFRhcmdldEluZm9zLmdldChuZXdU
YXJnZXRJZCk7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRhcmdldEluZm8pOwotICAgICAgICB0
YXJnZXRJbmZvLmlzUHJvdmlzaW9uYWwgPSBmYWxzZTsKLSAgICAgICAgdGhpcy5fcHJvdmlzaW9u
YWxUYXJnZXRJbmZvcy5kZWxldGUobmV3VGFyZ2V0SWQpOwotICAgICAgICB0aGlzLl9jb25uZWN0
VG9UYXJnZXQocGFyZW50VGFyZ2V0LCB0YXJnZXRJbmZvKTsKLSAgICAgICAgY29uc29sZS5hc3Nl
cnQoIXRoaXMuX3N3YXBwZWRUYXJnZXRJZHMuaGFzKHByZXZpb3VzVGFyZ2V0SWQpKTsKLSAgICAg
ICAgdGhpcy5fc3dhcHBlZFRhcmdldElkcy5hZGQocHJldmlvdXNUYXJnZXRJZCk7Ci0KLSAgICAg
ICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuVGFyZ2V0TWFuYWdlci5FdmVudC5E
aWRDb21taXRQcm92aXNpb25hbFRhcmdldCwge3ByZXZpb3VzVGFyZ2V0SWQsIHRhcmdldEluZm99
KTsKKyAgICAgICAgdGhpcy50YXJnZXREZXN0cm95ZWQocHJldmlvdXNUYXJnZXRJZCk7CisgICAg
ICAgIGxldCB0YXJnZXQgPSB0aGlzLl90YXJnZXRzLmdldChuZXdUYXJnZXRJZCk7CisgICAgICAg
IGNvbnNvbGUuYXNzZXJ0KHRhcmdldCk7CisgICAgICAgIGlmICghdGFyZ2V0KQorICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgIHRhcmdldC5kaWRDb21taXRQcm92aXNpb25hbFRhcmdldCgp
OworICAgICAgICB0aGlzLl9jaGVja0FuZEhhbmRsZVBhZ2VUYXJnZXRUcmFuc2l0aW9uKHRhcmdl
dCk7CisgICAgICAgIHRhcmdldC5jb25uZWN0aW9uLmRpc3BhdGNoUHJvdmlzaW9uYWxNZXNzYWdl
cygpOworCisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLlRhcmdldE1h
bmFnZXIuRXZlbnQuRGlkQ29tbWl0UHJvdmlzaW9uYWxUYXJnZXQsIHtwcmV2aW91c1RhcmdldElk
LCB0YXJnZXR9KTsKICAgICB9CiAKICAgICB0YXJnZXREZXN0cm95ZWQodGFyZ2V0SWQpCiAgICAg
ewotICAgICAgICB0aGlzLl9kZXN0cm95VGFyZ2V0KHRhcmdldElkKTsKKyAgICAgICAgbGV0IHRh
cmdldCA9IHRoaXMuX3RhcmdldHMuZ2V0KHRhcmdldElkKTsKKyAgICAgICAgaWYgKCF0YXJnZXQp
CisgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0
ZW5lcnMoV0kuVGFyZ2V0TWFuYWdlci5FdmVudC5UYXJnZXREZXN0cm95ZWQsIHt0YXJnZXRJZH0p
OworICAgICAgICB0aGlzLl9jaGVja0FuZEhhbmRsZVBhZ2VUYXJnZXRUZXJtaW5hdGlvbih0YXJn
ZXQpOworICAgICAgICB0aGlzLnJlbW92ZVRhcmdldCh0YXJnZXQpOwogICAgIH0KIAogICAgIGRp
c3BhdGNoTWVzc2FnZUZyb21UYXJnZXQodGFyZ2V0SWQsIG1lc3NhZ2UpCiAgICAgewotICAgICAg
ICBpZiAodGhpcy5fcHJvdmlzaW9uYWxUYXJnZXRJbmZvcy5oYXModGFyZ2V0SWQpKQotICAgICAg
ICAgICAgcmV0dXJuOwotCiAgICAgICAgIGxldCB0YXJnZXQgPSB0aGlzLl90YXJnZXRzLmdldCh0
YXJnZXRJZCk7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRhcmdldCk7CiAgICAgICAgIGlmICgh
dGFyZ2V0KQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHRhcmdldC5jb25uZWN0aW9u
LmRpc3BhdGNoKG1lc3NhZ2UpOworICAgICAgICBpZiAodGFyZ2V0LmlzUHJvdmlzaW9uYWwpCisg
ICAgICAgICAgICB0YXJnZXQuY29ubmVjdGlvbi5hZGRQcm92aXNpb25hbE1lc3NhZ2UobWVzc2Fn
ZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRhcmdldC5jb25uZWN0aW9uLmRpc3BhdGNo
KG1lc3NhZ2UpOwogICAgIH0KIAogICAgIC8vIFByaXZhdGUKIAotICAgIF9jb25uZWN0VG9UYXJn
ZXQocGFyZW50VGFyZ2V0LCB0YXJnZXRJbmZvKQotICAgIHsKLSAgICAgICAgY29uc29sZS5hc3Nl
cnQoIXRoaXMuX3Byb3Zpc2lvbmFsVGFyZ2V0SW5mb3MuaGFzKHRhcmdldEluZm8udGFyZ2V0SWQp
KTsKLQotICAgICAgICAvLyBDT01QQVRJQklMSVRZIChpT1MgMTMuMCk6IGBUYXJnZXQuVGFyZ2V0
SW5mby5pc1Byb3Zpc2lvbmFsYCBkaWQgbm90IGV4aXN0IHlldC4KLSAgICAgICAgaWYgKHRhcmdl
dEluZm8uaXNQcm92aXNpb25hbCkgewotICAgICAgICAgICAgdGhpcy5fcHJvdmlzaW9uYWxUYXJn
ZXRJbmZvcy5zZXQodGFyZ2V0SW5mby50YXJnZXRJZCwgdGFyZ2V0SW5mbyk7Ci0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBjb25zb2xlLmFzc2VydChwYXJlbnRUYXJn
ZXQuaGFzQ29tbWFuZCgiVGFyZ2V0LnNlbmRNZXNzYWdlVG9UYXJnZXQiKSk7Ci0gICAgICAgIGxl
dCBjb25uZWN0aW9uID0gbmV3IEluc3BlY3RvckJhY2tlbmQuVGFyZ2V0Q29ubmVjdGlvbjsKLSAg
ICAgICAgbGV0IHN1YlRhcmdldCA9IHRoaXMuX2NyZWF0ZVRhcmdldChwYXJlbnRUYXJnZXQsIHRh
cmdldEluZm8sIGNvbm5lY3Rpb24pOwotICAgICAgICB0aGlzLl9jaGVja0FuZEhhbmRsZVBhZ2VU
YXJnZXRUcmFuc2l0aW9uKHN1YlRhcmdldCk7Ci0gICAgICAgIHN1YlRhcmdldC5pbml0aWFsaXpl
KCk7Ci0KLSAgICAgICAgdGhpcy5hZGRUYXJnZXQoc3ViVGFyZ2V0KTsKLSAgICB9Ci0KLSAgICBf
ZGVzdHJveVRhcmdldCh0YXJnZXRJZCkKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9wcm92aXNp
b25hbFRhcmdldEluZm9zLmRlbGV0ZSh0YXJnZXRJZCkpCi0gICAgICAgICAgICByZXR1cm47Ci0K
LSAgICAgICAgaWYgKHRoaXMuX3N3YXBwZWRUYXJnZXRJZHMuZGVsZXRlKHRhcmdldElkKSkKLSAg
ICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBsZXQgdGFyZ2V0ID0gdGhpcy5fdGFyZ2V0cy5n
ZXQodGFyZ2V0SWQpOwotICAgICAgICB0aGlzLl9jaGVja0FuZEhhbmRsZVBhZ2VUYXJnZXRUZXJt
aW5hdGlvbih0YXJnZXQpOwotICAgICAgICB0aGlzLnJlbW92ZVRhcmdldCh0YXJnZXQpOwotICAg
IH0KLQogICAgIF9jcmVhdGVUYXJnZXQocGFyZW50VGFyZ2V0LCB0YXJnZXRJbmZvLCBjb25uZWN0
aW9uKQogICAgIHsKLSAgICAgICAgbGV0IHt0YXJnZXRJZCwgdHlwZX0gPSB0YXJnZXRJbmZvOwor
ICAgICAgICAvLyBDT01QQVRJQklMSVRZIChpT1MgMTMuMCk6IGBUYXJnZXQuVGFyZ2V0SW5mby5p
c1Byb3Zpc2lvbmFsYCBhbmQgYFRhcmdldC5UYXJnZXRJbmZvLmlzUGF1c2VkYCBkaWQgbm90IGV4
aXN0IHlldC4KKyAgICAgICAgbGV0IHt0YXJnZXRJZCwgdHlwZSwgaXNQcm92aXNpb25hbCwgaXNQ
YXVzZWR9ID0gdGFyZ2V0SW5mbzsKIAogICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICAgICAg
Y2FzZSBJbnNwZWN0b3JCYWNrZW5kLkVudW0uVGFyZ2V0LlRhcmdldEluZm9UeXBlLlBhZ2U6Ci0g
ICAgICAgICAgICByZXR1cm4gbmV3IFdJLlBhZ2VUYXJnZXQocGFyZW50VGFyZ2V0LCB0YXJnZXRJ
ZCwgV0kuVUlTdHJpbmcoIlBhZ2UiKSwgY29ubmVjdGlvbik7CisgICAgICAgICAgICByZXR1cm4g
bmV3IFdJLlBhZ2VUYXJnZXQocGFyZW50VGFyZ2V0LCB0YXJnZXRJZCwgV0kuVUlTdHJpbmcoIlBh
Z2UiKSwgY29ubmVjdGlvbiwge2lzUHJvdmlzaW9uYWwsIGlzUGF1c2VkfSk7CiAgICAgICAgIGNh
c2UgSW5zcGVjdG9yQmFja2VuZC5FbnVtLlRhcmdldC5UYXJnZXRJbmZvVHlwZS5Xb3JrZXI6Ci0g
ICAgICAgICAgICByZXR1cm4gbmV3IFdJLldvcmtlclRhcmdldChwYXJlbnRUYXJnZXQsIHRhcmdl
dElkLCBXSS5VSVN0cmluZygiV29ya2VyIiksIGNvbm5lY3Rpb24pOworICAgICAgICAgICAgcmV0
dXJuIG5ldyBXSS5Xb3JrZXJUYXJnZXQocGFyZW50VGFyZ2V0LCB0YXJnZXRJZCwgV0kuVUlTdHJp
bmcoIldvcmtlciIpLCBjb25uZWN0aW9uLCB7aXNQYXVzZWR9KTsKICAgICAgICAgY2FzZSAic2Vy
dmljZXdvcmtlciI6IC8vIENPTVBBVElCSUxJVFkgKGlPUyAxMyk6ICJzZXJ2aWNld29ya2VyIiB3
YXMgcmVuYW1lZCB0byAic2VydmljZS13b3JrZXIiLgogICAgICAgICBjYXNlIEluc3BlY3RvckJh
Y2tlbmQuRW51bS5UYXJnZXQuVGFyZ2V0SW5mb1R5cGUuU2VydmljZVdvcmtlcjoKLSAgICAgICAg
ICAgIHJldHVybiBuZXcgV0kuV29ya2VyVGFyZ2V0KHBhcmVudFRhcmdldCwgdGFyZ2V0SWQsIFdJ
LlVJU3RyaW5nKCJTZXJ2aWNlV29ya2VyIiksIGNvbm5lY3Rpb24pOworICAgICAgICAgICAgcmV0
dXJuIG5ldyBXSS5Xb3JrZXJUYXJnZXQocGFyZW50VGFyZ2V0LCB0YXJnZXRJZCwgV0kuVUlTdHJp
bmcoIlNlcnZpY2VXb3JrZXIiKSwgY29ubmVjdGlvbiwge2lzUGF1c2VkfSk7CiAgICAgICAgIH0K
IAogICAgICAgICB0aHJvdyAiVW5rbm93biBUYXJnZXQgdHlwZTogIiArIHR5cGU7CkBAIC0yMTUs
NiArMTg3LDkgQEAgV0kuVGFyZ2V0TWFuYWdlciA9IGNsYXNzIFRhcmdldE1hbmFnZXIgZXh0ZW5k
cyBXSS5PYmplY3QKICAgICAgICAgaWYgKHRhcmdldC50eXBlICE9PSBXSS5UYXJnZXRUeXBlLlBh
Z2UpCiAgICAgICAgICAgICByZXR1cm47CiAKKyAgICAgICAgaWYgKHRhcmdldC5pc1Byb3Zpc2lv
bmFsKQorICAgICAgICAgICAgcmV0dXJuOworCiAgICAgICAgIC8vIEZpcnN0IHBhZ2UgdGFyZ2V0
LgogICAgICAgICBpZiAoIVdJLnBhZ2VUYXJnZXQgJiYgIXRoaXMuX3NlZW5QYWdlVGFyZ2V0KSB7
CiAgICAgICAgICAgICB0aGlzLl9zZWVuUGFnZVRhcmdldCA9IHRydWU7CkBAIC0yMzEsNiArMjA2
LDkgQEAgV0kuVGFyZ2V0TWFuYWdlciA9IGNsYXNzIFRhcmdldE1hbmFnZXIgZXh0ZW5kcyBXSS5P
YmplY3QKICAgICAgICAgaWYgKHRhcmdldC50eXBlICE9PSBXSS5UYXJnZXRUeXBlLlBhZ2UpCiAg
ICAgICAgICAgICByZXR1cm47CiAKKyAgICAgICAgaWYgKHRhcmdldC5pc1Byb3Zpc2lvbmFsKQor
ICAgICAgICAgICAgcmV0dXJuOworCiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRhcmdldCA9PT0g
V0kucGFnZVRhcmdldCk7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX3NlZW5QYWdlVGFy
Z2V0KTsKIApAQCAtMzE3LDggKzI5NSw1IEBAIFdJLlRhcmdldE1hbmFnZXIgPSBjbGFzcyBUYXJn
ZXRNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiBXSS5UYXJnZXRNYW5hZ2VyLkV2ZW50ID0gewog
ICAgIFRhcmdldEFkZGVkOiBTeW1ib2woInRhcmdldC1tYW5hZ2VyLXRhcmdldC1hZGRlZCIpLAog
ICAgIFRhcmdldFJlbW92ZWQ6IFN5bWJvbCgidGFyZ2V0LW1hbmFnZXItdGFyZ2V0LXJlbW92ZWQi
KSwKLQotICAgIFRhcmdldENyZWF0ZWQ6ICJ0YXJnZXQtbWFuYWdlci10YXJnZXQtY3JlYXRlZCIs
CiAgICAgRGlkQ29tbWl0UHJvdmlzaW9uYWxUYXJnZXQ6ICJ0YXJnZXQtbWFuYWdlci1wcm92aXNp
b25hbC10YXJnZXQtY29tbWl0dGVkIiwKLSAgICBUYXJnZXREZXN0cm95ZWQ6ICJ0YXJnZXQtbWFu
YWdlci10YXJnZXQtZGV0cm95ZWQiLAogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0Nvbm5lY3Rpb24uanMgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9Db25uZWN0aW9uLmpzCmluZGV4IDliZWNi
ZDA2YTlkNWIyNThmN2E1MDZkY2EyMGU5NDQzMzNjOGFiYTYuLjY5NWU4ZTRmZDY3YjIzYjA1OWU2
NzY5MGEyMzc1N2NjZDNhNDdkMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1Byb3RvY29sL0Nvbm5lY3Rpb24uanMKKysrIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvQ29ubmVjdGlvbi5qcwpAQCAtMzksNiArMzks
NyBAQCBJbnNwZWN0b3JCYWNrZW5kLkNvbm5lY3Rpb24gPSBjbGFzcyBJbnNwZWN0b3JCYWNrZW5k
Q29ubmVjdGlvbgogICAgICAgICB0aGlzLl9wZW5kaW5nUmVzcG9uc2VzID0gbmV3IE1hcDsKICAg
ICAgICAgdGhpcy5fZGVmZXJyZWRDYWxsYmFja3MgPSBbXTsKICAgICAgICAgdGhpcy5fdGFyZ2V0
ID0gbnVsbDsKKyAgICAgICAgdGhpcy5fcHJvdmlzaW9uYWxNZXNzYWdlcyA9IFtdOwogICAgIH0K
IAogICAgIC8vIFB1YmxpYwpAQCAtNTQsNiArNTUsMjAgQEAgSW5zcGVjdG9yQmFja2VuZC5Db25u
ZWN0aW9uID0gY2xhc3MgSW5zcGVjdG9yQmFja2VuZENvbm5lY3Rpb24KICAgICAgICAgdGhpcy5f
dGFyZ2V0ID0gdGFyZ2V0OwogICAgIH0KIAorICAgIGFkZFByb3Zpc2lvbmFsTWVzc2FnZShtZXNz
YWdlKQorICAgIHsKKyAgICAgICAgdGhpcy5fcHJvdmlzaW9uYWxNZXNzYWdlcy5wdXNoKG1lc3Nh
Z2UpOworICAgIH0KKworICAgIGRpc3BhdGNoUHJvdmlzaW9uYWxNZXNzYWdlcygpCisgICAgewor
ICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLnRhcmdldCk7CisgICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KCF0aGlzLnRhcmdldC5pc1Byb3Zpc2lvbmFsKTsKKyAgICAgICAgZm9yIChsZXQgbWVzc2Fn
ZSBvZiB0aGlzLl9wcm92aXNpb25hbE1lc3NhZ2VzKQorICAgICAgICAgICAgdGhpcy5kaXNwYXRj
aChtZXNzYWdlKTsKKyAgICAgICAgdGhpcy5fcHJvdmlzaW9uYWxNZXNzYWdlcyA9IG51bGw7Cisg
ICAgfQorCiAgICAgZGlzcGF0Y2gobWVzc2FnZSkKICAgICB7CiAgICAgICAgIGxldCBtZXNzYWdl
T2JqZWN0ID0gdHlwZW9mIG1lc3NhZ2UgPT09ICJzdHJpbmciID8gSlNPTi5wYXJzZShtZXNzYWdl
KSA6IG1lc3NhZ2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Qcm90b2NvbC9NdWx0aXBsZXhpbmdCYWNrZW5kVGFyZ2V0LmpzIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvTXVsdGlwbGV4aW5nQmFja2VuZFRhcmdl
dC5qcwppbmRleCBhYWIwY2U5MTU1NTViMzYwYTZkNDBjMzM1MmVlMGRmNjg4YWJlM2M3Li43OTM3
MDllYmU1ZDk4NTJlMjM0OGVhNDlkNWI5N2U4ZDQ3YTY5ZjU4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9NdWx0aXBsZXhpbmdCYWNrZW5k
VGFyZ2V0LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3Rv
Y29sL011bHRpcGxleGluZ0JhY2tlbmRUYXJnZXQuanMKQEAgLTQzLDggKzQzLDExIEBAIFdJLk11
bHRpcGxleGluZ0JhY2tlbmRUYXJnZXQgPSBjbGFzcyBNdWx0aXBsZXhpbmdCYWNrZW5kVGFyZ2V0
IGV4dGVuZHMgV0kuVGFyZ2V0CiAKICAgICBpbml0aWFsaXplKCkKICAgICB7Ci0gICAgICAgIC8v
IEludGVudGlvbmFsbHkgZG8gbm90aGluZywgaW5jbHVkaW5nIG5vdCBjYWxsaW5nIHN1cGVyLgot
ICAgICAgICAvLyBObyBhZ2VudHMgb3RoZXIgdGhhbiB0aGUgVGFyZ2V0QWdlbnQsIG5vdGhpbmcg
dG8gaW5pdGlhbGl6ZS4KKyAgICAgICAgLy8gSW50ZW50aW9uYWxseSBub3QgY2FsbGluZyBzdXBl
ci4gTm8gYWdlbnRzIG90aGVyIHRoYW4gdGhlIFRhcmdldEFnZW50LgorCisgICAgICAgIC8vIENP
TVBBVElCSUxJVFkgKGlPUyAxMyk6IFRhcmdldC5zZXRQYXVzZU9uU3RhcnQgZGlkIG5vdCBleGlz
dCB5ZXQuCisgICAgICAgIGlmICh0aGlzLmhhc0NvbW1hbmQoIlRhcmdldC5zZXRQYXVzZU9uU3Rh
cnQiKSkKKyAgICAgICAgICAgIHRoaXMuVGFyZ2V0QWdlbnQuc2V0UGF1c2VPblN0YXJ0KHRydWUp
OwogICAgIH0KIAogICAgIC8vIFByb3RlY3RlZCAoVGFyZ2V0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvUGFnZVRhcmdldC5qcyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL1BhZ2VUYXJnZXQuanMK
aW5kZXggZjMzNGMwODA4NGMwNzA2NTJhYTBkZWM0MjEwYTdjYTFhNTdhODM0YS4uZDM4NzY2MTU0
MzRkMTBjODIwNTA3OTg3ZjdhNDJjZTg2YzAyOWEwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvUGFnZVRhcmdldC5qcworKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9QYWdlVGFyZ2V0LmpzCkBA
IC0yNSw5ICsyNSw5IEBACiAKIFdJLlBhZ2VUYXJnZXQgPSBjbGFzcyBQYWdlVGFyZ2V0IGV4dGVu
ZHMgV0kuVGFyZ2V0CiB7Ci0gICAgY29uc3RydWN0b3IocGFyZW50VGFyZ2V0LCB0YXJnZXRJZCwg
bmFtZSwgY29ubmVjdGlvbikKKyAgICBjb25zdHJ1Y3RvcihwYXJlbnRUYXJnZXQsIHRhcmdldElk
LCBuYW1lLCBjb25uZWN0aW9uLCBvcHRpb25zID0ge30pCiAgICAgewotICAgICAgICBzdXBlcihw
YXJlbnRUYXJnZXQsIHRhcmdldElkLCBuYW1lLCBXSS5UYXJnZXRUeXBlLlBhZ2UsIGNvbm5lY3Rp
b24pOworICAgICAgICBzdXBlcihwYXJlbnRUYXJnZXQsIHRhcmdldElkLCBuYW1lLCBXSS5UYXJn
ZXRUeXBlLlBhZ2UsIGNvbm5lY3Rpb24sIG9wdGlvbnMpOwogCiAgICAgICAgIGNvbnN0IGlzUGFn
ZUNvbnRleHQgPSB0cnVlOwogICAgICAgICB0aGlzLl9leGVjdXRpb25Db250ZXh0ID0gbmV3IFdJ
LkV4ZWN1dGlvbkNvbnRleHQodGhpcywgV0kuUnVudGltZU1hbmFnZXIuVG9wTGV2ZWxDb250ZXh0
RXhlY3V0aW9uSWRlbnRpZmllciwgdGhpcy5kaXNwbGF5TmFtZSwgaXNQYWdlQ29udGV4dCwgbnVs
bCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90
b2NvbC9UYXJnZXQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90
b2NvbC9UYXJnZXQuanMKaW5kZXggMGEzMGRmZjRmYWVkYTI5OWRkMDRmZmYwNDNiYjc1NzVmYjM2
MTg5YS4uY2EzODVmZTI4YjFiZWZiYTg0YzQ2OWM4NzU4OTIxZDdmZmIwYTM0MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvVGFyZ2V0Lmpz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL1Rhcmdl
dC5qcwpAQCAtMjUsOSArMjUsMTAgQEAKIAogV0kuVGFyZ2V0ID0gY2xhc3MgVGFyZ2V0IGV4dGVu
ZHMgV0kuT2JqZWN0CiB7Ci0gICAgY29uc3RydWN0b3IocGFyZW50VGFyZ2V0LCBpZGVudGlmaWVy
LCBuYW1lLCB0eXBlLCBjb25uZWN0aW9uKQorICAgIGNvbnN0cnVjdG9yKHBhcmVudFRhcmdldCwg
aWRlbnRpZmllciwgbmFtZSwgdHlwZSwgY29ubmVjdGlvbiwge2lzUGF1c2VkLCBpc1Byb3Zpc2lv
bmFsfSA9IHt9KQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQocGFyZW50VGFyZ2V0ID09
PSBudWxsIHx8IHBhcmVudFRhcmdldCBpbnN0YW5jZW9mIFdJLlRhcmdldCk7CisgICAgICAgIGNv
bnNvbGUuYXNzZXJ0KCFpc1BhdXNlZCB8fCBwYXJlbnRUYXJnZXQuaGFzQ29tbWFuZCgiVGFyZ2V0
LnNldFBhdXNlT25TdGFydCIpKTsKICAgICAgICAgc3VwZXIoKTsKIAogICAgICAgICB0aGlzLl9w
YXJlbnRUYXJnZXQgPSBwYXJlbnRUYXJnZXQ7CkBAIC0zNSw2ICszNiw4IEBAIFdJLlRhcmdldCA9
IGNsYXNzIFRhcmdldCBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICB0aGlzLl9uYW1lID0gbmFt
ZTsKICAgICAgICAgdGhpcy5fdHlwZSA9IHR5cGU7CiAgICAgICAgIHRoaXMuX2Nvbm5lY3Rpb24g
PSBjb25uZWN0aW9uOworICAgICAgICB0aGlzLl9pc1BhdXNlZCA9ICEhaXNQYXVzZWQ7CisgICAg
ICAgIHRoaXMuX2lzUHJvdmlzaW9uYWwgPSAhIWlzUHJvdmlzaW9uYWw7CiAgICAgICAgIHRoaXMu
X2V4ZWN1dGlvbkNvbnRleHQgPSBudWxsOwogICAgICAgICB0aGlzLl9tYWluUmVzb3VyY2UgPSBu
dWxsOwogICAgICAgICB0aGlzLl9yZXNvdXJjZUNvbGxlY3Rpb24gPSBuZXcgV0kuUmVzb3VyY2VD
b2xsZWN0aW9uOwpAQCAtOTYsNiArOTksMjAgQEAgV0kuVGFyZ2V0ID0gY2xhc3MgVGFyZ2V0IGV4
dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgICAgICBpZiAodGhpcy5oYXNDb21tYW5kKCJJbnNwZWN0
b3IuaW5pdGlhbGl6ZWQiKSkKICAgICAgICAgICAgICAgICB0aGlzLkluc3BlY3RvckFnZW50Lmlu
aXRpYWxpemVkKCk7CiAgICAgICAgIH0pOworCisgICAgICAgIGlmICh0aGlzLl9pc1BhdXNlZCkg
eworICAgICAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fcGFyZW50VGFyZ2V0Lmhhc0NvbW1h
bmQoIlRhcmdldC5yZXN1bWUiKSk7CisgICAgICAgICAgICB0aGlzLl9wYXJlbnRUYXJnZXQuVGFy
Z2V0QWdlbnQucmVzdW1lKHRoaXMuX2lkZW50aWZpZXIsIChlcnJvcikgPT4geworICAgICAgICAg
ICAgICAgIGlmIChlcnJvcikgeworICAgICAgICAgICAgICAgICAgICAvLyBJZ25vcmUgZXJyb3Jz
IGlmIHRoZSB0YXJnZXQgd2FzIGRlc3Ryb3llZCBhZnRlciB0aGUgY29tbWFuZCB3YXMgc2VudC4K
KyAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLmlzRGVzdHJveWVkKQorICAgICAgICAgICAg
ICAgICAgICAgICAgV0kucmVwb3J0SW50ZXJuYWxFcnJvcihlcnJvcik7CisgICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICB0aGlz
Ll9pc1BhdXNlZCA9IGZhbHNlOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KICAgICB9CiAK
ICAgICBhY3RpdmF0ZUV4dHJhRG9tYWluKGRvbWFpbk5hbWUpCkBAIC0xNzYsNiArMTkzLDggQEAg
V0kuVGFyZ2V0ID0gY2xhc3MgVGFyZ2V0IGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgZ2V0IHJlc291
cmNlQ29sbGVjdGlvbigpIHsgcmV0dXJuIHRoaXMuX3Jlc291cmNlQ29sbGVjdGlvbjsgfQogICAg
IGdldCBleHRyYVNjcmlwdENvbGxlY3Rpb24oKSB7IHJldHVybiB0aGlzLl9leHRyYVNjcmlwdENv
bGxlY3Rpb247IH0KIAorICAgIGdldCBpc1Byb3Zpc2lvbmFsKCkgeyByZXR1cm4gdGhpcy5faXNQ
cm92aXNpb25hbDsgfQorICAgIGdldCBpc1BhdXNlZCgpIHsgcmV0dXJuIHRoaXMuX2lzUGF1c2Vk
OyB9CiAgICAgZ2V0IGlzRGVzdHJveWVkKCkgeyByZXR1cm4gdGhpcy5faXNEZXN0cm95ZWQ7IH0K
IAogICAgIGdldCBkaXNwbGF5TmFtZSgpIHsgcmV0dXJuIHRoaXMuX25hbWU7IH0KQEAgLTIxNSw2
ICsyMzQsMTIgQEAgV0kuVGFyZ2V0ID0gY2xhc3MgVGFyZ2V0IGV4dGVuZHMgV0kuT2JqZWN0CiAg
ICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLlRhcmdldC5FdmVudC5TY3Jp
cHRBZGRlZCwge3NjcmlwdH0pOwogICAgIH0KIAorICAgIGRpZENvbW1pdFByb3Zpc2lvbmFsVGFy
Z2V0KCkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2lzUHJvdmlzaW9uYWwp
OworICAgICAgICB0aGlzLl9pc1Byb3Zpc2lvbmFsID0gZmFsc2U7CisgICAgfQorCiAgICAgZGVz
dHJveSgpCiAgICAgewogICAgICAgICB0aGlzLl9pc0Rlc3Ryb3llZCA9IHRydWU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9Xb3JrZXJU
YXJnZXQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9X
b3JrZXJUYXJnZXQuanMKaW5kZXggODNjNzA5MmE1ODcyOGYyYTczZDhhOWQ0Y2U1MmExYTFhZDdi
Mjg1OS4uMmM1YTAxMmViM2JjZDNjZWMwMjY0YTg1NGFkOTI3NmNlYTM5YTBkNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvV29ya2VyVGFy
Z2V0LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29s
L1dvcmtlclRhcmdldC5qcwpAQCAtMjUsOSArMjUsOSBAQAogCiBXSS5Xb3JrZXJUYXJnZXQgPSBj
bGFzcyBXb3JrZXJUYXJnZXQgZXh0ZW5kcyBXSS5UYXJnZXQKIHsKLSAgICBjb25zdHJ1Y3Rvcihw
YXJlbnRUYXJnZXQsIHdvcmtlcklkLCBuYW1lLCBjb25uZWN0aW9uKQorICAgIGNvbnN0cnVjdG9y
KHBhcmVudFRhcmdldCwgd29ya2VySWQsIG5hbWUsIGNvbm5lY3Rpb24sIG9wdGlvbnMgPSB7fSkK
ICAgICB7Ci0gICAgICAgIHN1cGVyKHBhcmVudFRhcmdldCwgd29ya2VySWQsIG5hbWUsIFdJLlRh
cmdldFR5cGUuV29ya2VyLCBjb25uZWN0aW9uKTsKKyAgICAgICAgc3VwZXIocGFyZW50VGFyZ2V0
LCB3b3JrZXJJZCwgbmFtZSwgV0kuVGFyZ2V0VHlwZS5Xb3JrZXIsIGNvbm5lY3Rpb24sIG9wdGlv
bnMpOwogCiAgICAgICAgIGNvbnN0IGlzUGFnZUNvbnRleHQgPSBmYWxzZTsKICAgICAgICAgdGhp
cy5fZXhlY3V0aW9uQ29udGV4dCA9IG5ldyBXSS5FeGVjdXRpb25Db250ZXh0KHRoaXMsIFdJLlJ1
bnRpbWVNYW5hZ2VyLlRvcExldmVsQ29udGV4dEV4ZWN1dGlvbklkZW50aWZpZXIsIHRoaXMuZGlz
cGxheU5hbWUsIGlzUGFnZUNvbnRleHQsIG51bGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvSW5zcGVjdG9yVGFyZ2V0UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvSW5zcGVjdG9yVGFyZ2V0UHJveHkuY3BwCmluZGV4IDFiMzdjMWVkNDM5NWExN2M1ODNi
YTJkNzg2MjE5YzkwYzc0NDAxNmUuLjU1YzgxNzNhYjI0MDNkZGViMDY1MDI1MWI3YmI2NzYyYTZk
ZTAzMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3RvclRhcmdl
dFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3JUYXJnZXRQ
cm94eS5jcHAKQEAgLTY5LDYgKzY5LDkgQEAgdm9pZCBJbnNwZWN0b3JUYXJnZXRQcm94eTo6Y29u
bmVjdChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbDo6Q29ubmVjdGlvblR5cGUgY28KIAogdm9p
ZCBJbnNwZWN0b3JUYXJnZXRQcm94eTo6ZGlzY29ubmVjdCgpCiB7CisgICAgaWYgKGlzUGF1c2Vk
KCkpCisgICAgICAgIHJlc3VtZSgpOworCiAgICAgaWYgKG1fcHJvdmlzaW9uYWxQYWdlKSB7CiAg
ICAgICAgIG1fcHJvdmlzaW9uYWxQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6RGlzY29ubmVjdEluc3BlY3RvcihpZGVudGlmaWVyKCkpLCBtX3Byb3Zpc2lvbmFsUGFnZS0+
d2ViUGFnZUlEKCkpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKaW5kZXggYjlhOTQ2OWFi
NTkxMzZmOWU5YTM3MzZiZmRiMGU5ZDUyOWMwZmJjZS4uMWVlMjhiZjcxNjM3NDM3MTQzMzIxNTE0
OGFhMjBhNTE5MjdhOGEzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZUluc3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtMTY3LDYgKzE2NywyMyBAQCB2b2lk
IFdlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyOjpzZW5kTWVzc2FnZVRvSW5zcGVjdG9yRnJvbnRl
bmQoY29uc3QgU3RyaW5nJiB0YQogICAgIG1fdGFyZ2V0QWdlbnQtPnNlbmRNZXNzYWdlRnJvbVRh
cmdldFRvRnJvbnRlbmQodGFyZ2V0SWQsIG1lc3NhZ2UpOwogfQogCitib29sIFdlYlBhZ2VJbnNw
ZWN0b3JDb250cm9sbGVyOjpzaG91bGRQYXVzZUxvYWRpbmcoY29uc3QgUHJvdmlzaW9uYWxQYWdl
UHJveHkmIHByb3Zpc2lvbmFsUGFnZSkgY29uc3QKK3sKKyAgICBpZiAoIW1fZnJvbnRlbmRSb3V0
ZXItPmhhc0Zyb250ZW5kcygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvKiB0
YXJnZXQgPSBtX3RhcmdldHMuZ2V0KGdldFRhcmdldElEKHByb3Zpc2lvbmFsUGFnZSkpOworICAg
IEFTU0VSVCh0YXJnZXQpOworICAgIHJldHVybiB0YXJnZXQtPmlzUGF1c2VkKCk7Cit9CisKK3Zv
aWQgV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXI6OnNldENvbnRpbnVlTG9hZGluZ0NhbGxiYWNr
KGNvbnN0IFByb3Zpc2lvbmFsUGFnZVByb3h5JiBwcm92aXNpb25hbFBhZ2UsIFdURjo6RnVuY3Rp
b248dm9pZCgpPiYmIGNhbGxiYWNrKQoreworICAgIGF1dG8qIHRhcmdldCA9IG1fdGFyZ2V0cy5n
ZXQoZ2V0VGFyZ2V0SUQocHJvdmlzaW9uYWxQYWdlKSk7CisgICAgQVNTRVJUKHRhcmdldCk7Cisg
ICAgdGFyZ2V0LT5zZXRSZXN1bWVDYWxsYmFjayhXVEZNb3ZlKGNhbGxiYWNrKSk7Cit9CisKIHZv
aWQgV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXI6OmRpZENyZWF0ZVByb3Zpc2lvbmFsUGFnZShQ
cm92aXNpb25hbFBhZ2VQcm94eSYgcHJvdmlzaW9uYWxQYWdlKQogewogICAgIGFkZFRhcmdldChJ
bnNwZWN0b3JUYXJnZXRQcm94eTo6Y3JlYXRlKHByb3Zpc2lvbmFsUGFnZSwgZ2V0VGFyZ2V0SUQo
cHJvdmlzaW9uYWxQYWdlKSwgSW5zcGVjdG9yOjpJbnNwZWN0b3JUYXJnZXRUeXBlOjpQYWdlKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlSW5zcGVjdG9yQ29u
dHJvbGxlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZUluc3BlY3RvckNvbnRy
b2xsZXIuaAppbmRleCA4MjhiYzNjY2M3ZTA3ZDgxMjAzMzQzMWIyN2FlN2YwYmM4Y2Y5YzU0Li43
OGNhZWRmMGMwY2U4MzY3NTU2OTUwMmQxNTBmY2M0NGU1Zjk4NjhjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyLmgKQEAgLTY2
LDYgKzY2LDkgQEAgcHVibGljOgogICAgIHZvaWQgZGVzdHJveUluc3BlY3RvclRhcmdldChjb25z
dCBTdHJpbmcmIHRhcmdldElkKTsKICAgICB2b2lkIHNlbmRNZXNzYWdlVG9JbnNwZWN0b3JGcm9u
dGVuZChjb25zdCBTdHJpbmcmIHRhcmdldElkLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwogCisg
ICAgYm9vbCBzaG91bGRQYXVzZUxvYWRpbmcoY29uc3QgUHJvdmlzaW9uYWxQYWdlUHJveHkmKSBj
b25zdDsKKyAgICB2b2lkIHNldENvbnRpbnVlTG9hZGluZ0NhbGxiYWNrKGNvbnN0IFByb3Zpc2lv
bmFsUGFnZVByb3h5JiwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYpOworCiAgICAgdm9pZCBkaWRD
cmVhdGVQcm92aXNpb25hbFBhZ2UoUHJvdmlzaW9uYWxQYWdlUHJveHkmKTsKICAgICB2b2lkIHdp
bGxEZXN0cm95UHJvdmlzaW9uYWxQYWdlKGNvbnN0IFByb3Zpc2lvbmFsUGFnZVByb3h5Jik7CiAg
ICAgdm9pZCBkaWRDb21taXRQcm92aXNpb25hbFBhZ2UoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIg
b2xkV2ViUGFnZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBuZXdXZWJQYWdlSUQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggN2M1Y2FkMjNkY2FhNjk1
ODMzNWY4YjQxZTIyMGZmMDdjZTY2OGQxOC4uZWZjODJlODVhNzg1ZWQ1YjIzYTFlZDY4MjM3NWEz
MDUxMzJmODMwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBA
IC0zMDk3LDI4ICszMDk3LDM0IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpjb250aW51ZU5hdmlnYXRp
b25Jbk5ld1Byb2Nlc3MoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBzCiAKICAgICBtX3By
b3Zpc2lvbmFsUGFnZSA9IG1ha2VVbmlxdWU8UHJvdmlzaW9uYWxQYWdlUHJveHk+KCp0aGlzLCBu
ZXdQcm9jZXNzLmNvcHlSZWYoKSwgV1RGTW92ZShzdXNwZW5kZWRQYWdlKSwgbmF2aWdhdGlvbi5u
YXZpZ2F0aW9uSUQoKSwgbmF2aWdhdGlvbi5jdXJyZW50UmVxdWVzdElzUmVkaXJlY3QoKSwgbmF2
aWdhdGlvbi5jdXJyZW50UmVxdWVzdCgpLCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50KTsK
IAotICAgIGlmIChhdXRvKiBpdGVtID0gbmF2aWdhdGlvbi50YXJnZXRJdGVtKCkpIHsKLSAgICAg
ICAgTE9HKExvYWRpbmcsICJXZWJQYWdlUHJveHkgJXAgY29udGludWVOYXZpZ2F0aW9uSW5OZXdQ
cm9jZXNzIHRvIGJhY2sgaXRlbSBVUkwgJXMiLCB0aGlzLCBpdGVtLT51cmwoKS51dGY4KCkuZGF0
YSgpKTsKKyAgICBhdXRvIGNvbnRpbnVhdGlvbiA9IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyksIG5hdmlnYXRpb24gPSBtYWtlUmVmKG5hdmlnYXRpb24pLCBuZXdQcm9jZXNz
ID0gV1RGTW92ZShuZXdQcm9jZXNzKSwgd2Vic2l0ZVBvbGljaWVzID0gV1RGTW92ZSh3ZWJzaXRl
UG9saWNpZXMpXSgpIG11dGFibGUgeworICAgICAgICBpZiAoYXV0byogaXRlbSA9IG5hdmlnYXRp
b24tPnRhcmdldEl0ZW0oKSkgeworICAgICAgICAgICAgTE9HKExvYWRpbmcsICJXZWJQYWdlUHJv
eHkgJXAgY29udGludWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNzIHRvIGJhY2sgaXRlbSBVUkwgJXMi
LCB0aGlzLCBpdGVtLT51cmwoKS51dGY4KCkuZGF0YSgpKTsKIAotICAgICAgICBhdXRvIHRyYW5z
YWN0aW9uID0gbV9wYWdlTG9hZFN0YXRlLnRyYW5zYWN0aW9uKCk7Ci0gICAgICAgIG1fcGFnZUxv
YWRTdGF0ZS5zZXRQZW5kaW5nQVBJUmVxdWVzdCh0cmFuc2FjdGlvbiwgeyBuYXZpZ2F0aW9uLm5h
dmlnYXRpb25JRCgpLCBpdGVtLT51cmwoKSB9KTsKKyAgICAgICAgICAgIGF1dG8gdHJhbnNhY3Rp
b24gPSBtX3BhZ2VMb2FkU3RhdGUudHJhbnNhY3Rpb24oKTsKKyAgICAgICAgICAgIG1fcGFnZUxv
YWRTdGF0ZS5zZXRQZW5kaW5nQVBJUmVxdWVzdCh0cmFuc2FjdGlvbiwgeyBuYXZpZ2F0aW9uLT5u
YXZpZ2F0aW9uSUQoKSwgaXRlbS0+dXJsKCkgfSk7CiAKLSAgICAgICAgbV9wcm92aXNpb25hbFBh
Z2UtPmdvVG9CYWNrRm9yd2FyZEl0ZW0obmF2aWdhdGlvbiwgKml0ZW0sIFdURk1vdmUod2Vic2l0
ZVBvbGljaWVzKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgICAgICAgICBtX3Byb3Zp
c2lvbmFsUGFnZS0+Z29Ub0JhY2tGb3J3YXJkSXRlbShuYXZpZ2F0aW9uLCAqaXRlbSwgV1RGTW92
ZSh3ZWJzaXRlUG9saWNpZXMpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogCi0g
ICAgaWYgKG1fYmFja0ZvcndhcmRMaXN0LT5jdXJyZW50SXRlbSgpICYmIChuYXZpZ2F0aW9uLmxv
Y2tCYWNrRm9yd2FyZExpc3QoKSA9PSBMb2NrQmFja0ZvcndhcmRMaXN0OjpZZXMgfHwgbmF2aWdh
dGlvbi5sb2NrSGlzdG9yeSgpID09IExvY2tIaXN0b3J5OjpZZXMpKSB7Ci0gICAgICAgIC8vIElm
IFdlYkNvcmUgaXMgc3VwcG9zZWQgdG8gbG9jayB0aGUgaGlzdG9yeSBmb3IgdGhpcyBsb2FkLCB0
aGVuIHRoZSBuZXcgcHJvY2VzcyBuZWVkcyB0byBrbm93IGFib3V0IHRoZSBjdXJyZW50IGhpc3Rv
cnkgaXRlbSBzbyBpdCBjYW4gdXBkYXRlCi0gICAgICAgIC8vIGl0IGluc3RlYWQgb2YgY3JlYXRp
bmcgYSBuZXcgb25lLgotICAgICAgICBuZXdQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpTZXRDdXJyZW50SGlzdG9yeUl0ZW1Gb3JSZWF0dGFjaChtX2JhY2tGb3J3YXJkTGlzdC0+Y3Vy
cmVudEl0ZW0oKS0+aXRlbVN0YXRlKCkpLCBtX3Byb3Zpc2lvbmFsUGFnZS0+d2ViUGFnZUlEKCkp
OwotICAgIH0KKyAgICAgICAgaWYgKG1fYmFja0ZvcndhcmRMaXN0LT5jdXJyZW50SXRlbSgpICYm
IChuYXZpZ2F0aW9uLT5sb2NrQmFja0ZvcndhcmRMaXN0KCkgPT0gTG9ja0JhY2tGb3J3YXJkTGlz
dDo6WWVzIHx8IG5hdmlnYXRpb24tPmxvY2tIaXN0b3J5KCkgPT0gTG9ja0hpc3Rvcnk6Olllcykp
IHsKKyAgICAgICAgICAgIC8vIElmIFdlYkNvcmUgaXMgc3VwcG9zZWQgdG8gbG9jayB0aGUgaGlz
dG9yeSBmb3IgdGhpcyBsb2FkLCB0aGVuIHRoZSBuZXcgcHJvY2VzcyBuZWVkcyB0byBrbm93IGFi
b3V0IHRoZSBjdXJyZW50IGhpc3RvcnkgaXRlbSBzbyBpdCBjYW4gdXBkYXRlCisgICAgICAgICAg
ICAvLyBpdCBpbnN0ZWFkIG9mIGNyZWF0aW5nIGEgbmV3IG9uZS4KKyAgICAgICAgICAgIG5ld1By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEN1cnJlbnRIaXN0b3J5SXRlbUZvclJl
YXR0YWNoKG1fYmFja0ZvcndhcmRMaXN0LT5jdXJyZW50SXRlbSgpLT5pdGVtU3RhdGUoKSksIG1f
cHJvdmlzaW9uYWxQYWdlLT53ZWJQYWdlSUQoKSk7CisgICAgICAgIH0KIAotICAgIC8vIEZJWE1F
OiBXb3JrIG91dCB0aW1pbmcgb2YgcmVzcG9uZGluZyB3aXRoIHRoZSBsYXN0IHBvbGljeSBkZWxl
Z2F0ZSwgZXRjCi0gICAgQVNTRVJUKCFuYXZpZ2F0aW9uLmN1cnJlbnRSZXF1ZXN0KCkuaXNFbXB0
eSgpKTsKLSAgICBpZiAoYXV0byYgc3Vic3RpdHV0ZURhdGEgPSBuYXZpZ2F0aW9uLnN1YnN0aXR1
dGVEYXRhKCkpCi0gICAgICAgIG1fcHJvdmlzaW9uYWxQYWdlLT5sb2FkRGF0YShuYXZpZ2F0aW9u
LCB7IHN1YnN0aXR1dGVEYXRhLT5jb250ZW50LmRhdGEoKSwgc3Vic3RpdHV0ZURhdGEtPmNvbnRl
bnQuc2l6ZSgpIH0sIHN1YnN0aXR1dGVEYXRhLT5NSU1FVHlwZSwgc3Vic3RpdHV0ZURhdGEtPmVu
Y29kaW5nLCBzdWJzdGl0dXRlRGF0YS0+YmFzZVVSTCwgc3Vic3RpdHV0ZURhdGEtPnVzZXJEYXRh
LmdldCgpLCBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llcykpOworICAgICAgICAvLyBGSVhNRTogV29y
ayBvdXQgdGltaW5nIG9mIHJlc3BvbmRpbmcgd2l0aCB0aGUgbGFzdCBwb2xpY3kgZGVsZWdhdGUs
IGV0YworICAgICAgICBBU1NFUlQoIW5hdmlnYXRpb24tPmN1cnJlbnRSZXF1ZXN0KCkuaXNFbXB0
eSgpKTsKKyAgICAgICAgaWYgKGF1dG8mIHN1YnN0aXR1dGVEYXRhID0gbmF2aWdhdGlvbi0+c3Vi
c3RpdHV0ZURhdGEoKSkKKyAgICAgICAgICAgIG1fcHJvdmlzaW9uYWxQYWdlLT5sb2FkRGF0YShu
YXZpZ2F0aW9uLCB7IHN1YnN0aXR1dGVEYXRhLT5jb250ZW50LmRhdGEoKSwgc3Vic3RpdHV0ZURh
dGEtPmNvbnRlbnQuc2l6ZSgpIH0sIHN1YnN0aXR1dGVEYXRhLT5NSU1FVHlwZSwgc3Vic3RpdHV0
ZURhdGEtPmVuY29kaW5nLCBzdWJzdGl0dXRlRGF0YS0+YmFzZVVSTCwgc3Vic3RpdHV0ZURhdGEt
PnVzZXJEYXRhLmdldCgpLCBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llcykpOworICAgICAgICBlbHNl
CisgICAgICAgICAgICBtX3Byb3Zpc2lvbmFsUGFnZS0+bG9hZFJlcXVlc3QobmF2aWdhdGlvbiwg
UmVzb3VyY2VSZXF1ZXN0IHsgbmF2aWdhdGlvbi0+Y3VycmVudFJlcXVlc3QoKSB9LCBXZWJDb3Jl
OjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGRBbGxvd0V4dGVybmFsU2NoZW1l
cywgbnVsbHB0ciwgV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMpKTsKKyAgICB9OworICAgIGlmICht
X2luc3BlY3RvckNvbnRyb2xsZXItPnNob3VsZFBhdXNlTG9hZGluZygqbV9wcm92aXNpb25hbFBh
Z2UpKQorICAgICAgICBtX2luc3BlY3RvckNvbnRyb2xsZXItPnNldENvbnRpbnVlTG9hZGluZ0Nh
bGxiYWNrKCptX3Byb3Zpc2lvbmFsUGFnZSwgV1RGTW92ZShjb250aW51YXRpb24pKTsKICAgICBl
bHNlCi0gICAgICAgIG1fcHJvdmlzaW9uYWxQYWdlLT5sb2FkUmVxdWVzdChuYXZpZ2F0aW9uLCBS
ZXNvdXJjZVJlcXVlc3QgeyBuYXZpZ2F0aW9uLmN1cnJlbnRSZXF1ZXN0KCkgfSwgV2ViQ29yZTo6
U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkQWxsb3dFeHRlcm5hbFNjaGVtZXMs
IG51bGxwdHIsIFdURk1vdmUod2Vic2l0ZVBvbGljaWVzKSk7CisgICAgICAgIGNvbnRpbnVhdGlv
bigpOwogfQogCiBib29sIFdlYlBhZ2VQcm94eTo6aXNQYWdlT3BlbmVkQnlET01TaG93aW5nSW5p
dGlhbEVtcHR5RG9jdW1lbnQoKSBjb25zdApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDE1NDZmYjMxMzk1OTZhNjYwMjcyYjQ1
YWZiMjYyZjU2NDU4YTIwMzguLjAzYTEyODAyOTM3NGZhOWY0OWE0OTc4ZDUxOGI5ZDU1OTFhNDIx
NzUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAxOS0xMS0xMyAgWXVyeSBTZW1pa2hhdHNreSAg
PHl1cnlzQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBhbGxvdyBpbnNw
ZWN0b3IgdG8gcGF1c2UgcHJvdmlzaW9uYWwgcGFnZSBsb2FkIGFuZCByZXN0b3JlIGl0cyBzdGF0
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0MTcw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdCB0
aGF0IHByb3Zpc2lvbmFsIGxvYWRpbmcgd2hpY2ggc3RhcnRzIGJlZm9yZSBwcmV2aW9zIHByb3Zp
c2lvbmFsIGxvYWRpbmcKKyAgICAgICAgY29tbWl0cyB3aWxsIGJlIGNvcnJlY3RseSBoYW5kbGVk
IGJ5IHRoZSBpbnNlcGN0b3IuCisKKyAgICAgICAgVGVzdCB0aGF0IHNjcmlwdCBleGVjdXRpb24g
d2lsbCBicmVhayBvbiBkZWJ1Z2dlciBzdGF0ZW1lbnQgaW4gaW5saW5lIHNjcmlwdHMgaW4KKyAg
ICAgICAgY2FzZSBvZiBjcm9zcyBvcmlnaW4gbmF2aWdhdGlvbiBhbmQgUFNPTi4KKworICAgICAg
ICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL3RhcmdldC9wYXVzZS1vbi1pbmxpbmUtZGVidWdnZXIt
c3RhdGVtZW50LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvdGFyZ2V0L3BhdXNlLW9uLWlubGluZS1kZWJ1Z2dlci1zdGF0ZW1lbnQuaHRtbDogQWRk
ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvdGFyZ2V0L3Byb3Zpc2lvbmFsLWxv
YWQtY2FuY2Vscy1wcmV2aW91cy1sb2FkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
aHR0cC90ZXN0cy9pbnNwZWN0b3IvdGFyZ2V0L3Byb3Zpc2lvbmFsLWxvYWQtY2FuY2Vscy1wcmV2
aW91cy1sb2FkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL3Rh
cmdldC9yZXNvdXJjZXMvaW5saW5lLWRlYnVnZ2VyLXN0YXRlbWVudC5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci90YXJnZXQvdGFyZ2V0LWV2ZW50cy1mb3ItcHJv
dmlzaW9uYWwtcGFnZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0
b3IvdGFyZ2V0L3RhcmdldC1ldmVudHMtZm9yLXByb3Zpc2lvbmFsLXBhZ2UuaHRtbDoKKwogMjAx
OS0xMi0wMyAgeW91ZW5uIGZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRk
IHN1cHBvcnQgZm9yIGNhbWVyYSByb3RhdGlvbiB3aGVuIGNhcHR1cmluZyBpbiBVSVByb2Nlc3MK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3RhcmdldC9wYXVz
ZS1vbi1pbmxpbmUtZGVidWdnZXItc3RhdGVtZW50LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL3RhcmdldC9wYXVzZS1vbi1pbmxpbmUtZGVidWdnZXItc3Rh
dGVtZW50LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMmY2NjhlNGY5OTY1NWNjNTUwNzgxMWNh
YjRjNjQ3YmIwOTM5ZGFlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9pbnNwZWN0b3IvdGFyZ2V0L3BhdXNlLW9uLWlubGluZS1kZWJ1Z2dlci1zdGF0ZW1lbnQtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMiBAQAorQUxFUlQ6IFBBU1M6IFNob3VsZCBwYXVzZSBvbiBk
ZWJ1Z2dlciBzdGF0ZW1lbnQuCitUZXN0IHBhZ2UgdXNlZCB0byBjaGVjayB0aGF0IGV4ZWN1dGlv
biB3aWxsIGJyZWFrIG9uIGlubGluZSAnZGVidWdnZXInIHN0YXRlbWVudCBhZnRlciBjcm9zcy1v
cmlnaW4gbmF2aWdhdGlvbi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL3RhcmdldC9wYXVzZS1vbi1pbmxpbmUtZGVidWdnZXItc3RhdGVtZW50Lmh0bWwgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci90YXJnZXQvcGF1c2Utb24taW5saW5lLWRl
YnVnZ2VyLXN0YXRlbWVudC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE2OTRkZDI3YzJiMGRiZjNmMDQwZDc4
Y2Q4YzFjOTM1MjVkYWZmOGMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luc3BlY3Rvci90YXJnZXQvcGF1c2Utb24taW5saW5lLWRlYnVnZ2VyLXN0YXRlbWVudC5o
dG1sCkBAIC0wLDAgKzEsNDIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxt
ZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvaW5zcGVjdG9y
LXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGxl
dCBzdWl0ZSA9IEluc3BlY3RvclRlc3QuY3JlYXRlQXN5bmNTdWl0ZSgiVGFyZ2V0LlBTT04iKTsK
KworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIklubGluZURlYnVnZ2Vy
U3RhdGVtZW50IiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJDaGVjayB0aGF0IG5ldyBwcm92aXNp
b25hbCBwYWdlIGNhbiBiZSBwYXVzZWQgYmVmb3JlIG5hdmlnYXRpb24uIiwKKyAgICAgICAgdGVz
dChyZXNvbHZlLCByZWplY3QpIHsKKyAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5hd2Fp
dEV2ZW50KFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5QYXVzZWQpCisgICAgICAgICAgICAudGhl
bigoKSA9PiB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5wYXNzKGBTaG91bGQgcGF1
c2Ugb24gZGVidWdnZXIgc3RhdGVtZW50LmApOworCisgICAgICAgICAgICAgICAgLy8gV2FpdCBm
b3IgcGFnZSByZWxvYWQgZXZlbnQgdG8gYXZvaWQgcmFjZSBiZXR3ZWVuIHRlc3QgcmVzdWx0cyBm
bHVzaGluZyBhbmQgdGhlIHRlc3QgY29tcGxldGlvbi4KKyAgICAgICAgICAgICAgICBsZXQgcGFn
ZUxvYWRQcm9taXNlID0gSW5zcGVjdG9yVGVzdC5hd2FpdEV2ZW50KEZyb250ZW5kVGVzdEhhcm5l
c3MuRXZlbnQuVGVzdFBhZ2VEaWRMb2FkKTsKKyAgICAgICAgICAgICAgICAvL1dJLm1haW5UYXJn
ZXQuRGVidWdnZXJBZ2VudC4KKyAgICAgICAgICAgICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVu
KCgpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnJlc3VtZSgp
OworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIHJldHVybiBwYWdlTG9hZFBy
b21pc2U7CisgICAgICAgICAgICB9KQorICAgICAgICAgICAgLnRoZW4ocmVzb2x2ZSk7CisKKwor
ICAgICAgICAgICAgY29uc3QgdXJsID0gImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9pbnNwZWN0b3Iv
dGFyZ2V0L3Jlc291cmNlcy9pbmxpbmUtZGVidWdnZXItc3RhdGVtZW50Lmh0bWwiOworICAgICAg
ICAgICAgV0kubWFpblRhcmdldC5QYWdlQWdlbnQubmF2aWdhdGUodXJsKTsKKyAgICAgICAgfQor
ICAgIH0pOworCisgICAgc3VpdGUucnVuVGVzdENhc2VzQW5kRmluaXNoKCk7Cit9Cis8L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxwPlRlc3QgdGhhdCBleGVj
dXRpb24gd2lsbCBicmVhayBvbiBpbmxpbmUgJ2RlYnVnZ2VyJyBzdGF0ZW1lbnQgYWZ0ZXIgY3Jv
c3Mtb3JpZ2luIG5hdmlnYXRpb24uPC9wPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvdGFyZ2V0L3Byb3Zpc2lvbmFsLWxvYWQt
Y2FuY2Vscy1wcmV2aW91cy1sb2FkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL3RhcmdldC9wcm92aXNpb25hbC1sb2FkLWNhbmNlbHMtcHJldmlvdXMtbG9h
ZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGQwN2I1YTA0ZDdmODNiOWM1NzBjMmJmNjkxOGRm
NDI1NmRmNzgwZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL3RhcmdldC9wcm92aXNpb25hbC1sb2FkLWNhbmNlbHMtcHJldmlvdXMtbG9hZC1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwxNyBAQAorVGVzdCB0aGF0IHR3byBjb25zZXF1dGl2ZSBjcm9z
cyBkb21haW4gbmF2aWdhdGlvbiByZXF1ZXN0cyB3aWxsIHJlc3VsdCBpbiB0d28gcHJvdmlzaW9u
YWwgdGFyZ2V0cyBiZWluZyBjcmVhdGVkLCBmaXJzdCBvZiB3aGljaCBpcyBsYXRlciBkZXN0cm95
ZWQgYW5kIHRoZSBzZWNvbmQgaXMgY29tbWl0dGVkLgorCisKKz09IFJ1bm5pbmcgdGVzdCBzdWl0
ZTogVGFyZ2V0LlBTT04KKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBQcm92aXNpb25hbFBhZ2VQYXVz
ZWQKK0N1cnJlbnQgdGFyZ2V0IGlzIDEuCitQQVNTOiBTaG91bGQgcmVjZWl2ZSBUYXJnZXRBZGRl
ZCBldmVudCBmb3IgdGFyZ2V0IDIuCitQQVNTOiBUYXJnZXQgMiBzaG91bGQgYmUgcHJvdmlzaW9u
YWwuCitQQVNTOiBUYXJnZXQgMiBzaG91bGQgYmUgcGF1c2VkIG9uIHN0YXJ0LgorUEFTUzogU2hv
dWxkIHJlY2VpdmUgVGFyZ2V0UmVtb3ZlZCBldmVudCBmb3IgdGFyZ2V0IDIKK1BBU1M6IFNob3Vs
ZCByZWNlaXZlIFRhcmdldEFkZGVkIGV2ZW50IGZvciB0YXJnZXQgMy4KK1BBU1M6IFRhcmdldCAz
IHNob3VsZCBiZSBwcm92aXNpb25hbC4KK1BBU1M6IFRhcmdldCAzIHNob3VsZCBiZSBwYXVzZWQg
b24gc3RhcnQuCitQQVNTOiBTaG91bGQgcmVjZWl2ZSBUYXJnZXRSZW1vdmVkIGV2ZW50IGZvciB0
YXJnZXQgMQorUEFTUzogU2hvdWxkIHJlY2VpdmUgRGlkQ29tbWl0UHJvdmlzaW9uYWxUYXJnZXQg
ZXZlbnQgMSA9PiAzLgorUEFTUzogU2hvdWxkIGhhdmUgc2VlbiAzIGRpZmZlcmVudCB0YXJnZXRz
LgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci90YXJnZXQv
cHJvdmlzaW9uYWwtbG9hZC1jYW5jZWxzLXByZXZpb3VzLWxvYWQuaHRtbCBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL3RhcmdldC9wcm92aXNpb25hbC1sb2FkLWNhbmNlbHMtcHJl
dmlvdXMtbG9hZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM5NmIwMjNiMzA5YzZjOGMxYmUwMzVlOWI0MjBj
OTc2Y2RhYjlmYzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci90YXJnZXQvcHJvdmlzaW9uYWwtbG9hZC1jYW5jZWxzLXByZXZpb3VzLWxvYWQuaHRt
bApAQCAtMCwwICsxLDc2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0
YSBjaGFyc2V0PSJ1dGYtOCI+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2luc3BlY3Rvci10
ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBsZXQg
bGFzdEFzc2lnbmVkSWQgPSAwOworICAgIGxldCB0YXJnZXRUb0lkID0gbmV3IE1hcDsKKyAgICBm
dW5jdGlvbiBzdGFibGVUYXJnZXRJZCh0YXJnZXRJZCkKKyAgICB7CisgICAgICAgIGxldCBpZCA9
IHRhcmdldFRvSWQuZ2V0KHRhcmdldElkKTsKKyAgICAgICAgaWYgKCFpZCkgeworICAgICAgICAg
ICAgaWQgPSArK2xhc3RBc3NpZ25lZElkOworICAgICAgICAgICAgdGFyZ2V0VG9JZC5zZXQodGFy
Z2V0SWQsIGlkKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gaWQ7CisgICAgfQorCisgICAg
bGV0IHN1aXRlID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVBc3luY1N1aXRlKCJUYXJnZXQuUFNPTiIp
OworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiUHJvdmlzaW9uYWxQ
YWdlUGF1c2VkIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJDaGVjayB0aGF0IG5ldyBwcm92aXNp
b25hbCBwYWdlIGNhbiBiZSBwYXVzZWQgYmVmb3JlIG5hdmlnYXRpb24uIiwKKyAgICAgICAgdGVz
dChyZXNvbHZlLCByZWplY3QpIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKGBDdXJy
ZW50IHRhcmdldCBpcyAke3N0YWJsZVRhcmdldElkKFdJLm1haW5UYXJnZXQuaWRlbnRpZmllcil9
LmApOworICAgICAgICAgICAgY29uc3QgdXJsID0gImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9pbnNw
ZWN0b3IvdGFyZ2V0L3Byb3Zpc2lvbmFsLWxvYWQtY2FuY2Vscy1wcmV2aW91cy1sb2FkLmh0bWwi
OworICAgICAgICAgICAgbGV0IG5hdmlnYXRlZFR3aWNlID0gZmFsc2U7CisKKyAgICAgICAgICAg
IFdJLnRhcmdldE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5UYXJnZXRNYW5hZ2VyLkV2ZW50
LlRhcmdldEFkZGVkLCAoZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICBsZXQgdGFyZ2V0ID0g
ZXZlbnQuZGF0YS50YXJnZXQ7CisgICAgICAgICAgICAgICAgbGV0IHRhcmdldElkID0gc3RhYmxl
VGFyZ2V0SWQodGFyZ2V0LmlkZW50aWZpZXIpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRl
c3QucGFzcyhgU2hvdWxkIHJlY2VpdmUgVGFyZ2V0QWRkZWQgZXZlbnQgZm9yIHRhcmdldCAke3Rh
cmdldElkfS5gKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRydWUodGFy
Z2V0LmlzUHJvdmlzaW9uYWwsIGBUYXJnZXQgJHt0YXJnZXRJZH0gc2hvdWxkIGJlIHByb3Zpc2lv
bmFsLmApOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VHJ1ZSh0YXJnZXQu
aXNQYXVzZWQsIGBUYXJnZXQgJHt0YXJnZXRJZH0gc2hvdWxkIGJlIHBhdXNlZCBvbiBzdGFydC5g
KTsKKyAgICAgICAgICAgICAgICBpZiAoIW5hdmlnYXRlZFR3aWNlKSB7CisgICAgICAgICAgICAg
ICAgICAgIG5hdmlnYXRlZFR3aWNlID0gdHJ1ZTsKKworICAgICAgICAgICAgICAgICAgICAvLyBT
ZW5kIHR3byBjb25zZXF1dGl2ZSBuYXZpZ2F0aW9uIHJlcXVlc3RzLiBUaGUgbGF0dGVyIHdpbGwg
Y2FuY2VsIHByb3Zpc2lvbmFsCisgICAgICAgICAgICAgICAgICAgIC8vIGxvYWQgb2YgdGhlIGZv
cm1lci4KKyAgICAgICAgICAgICAgICAgICAgV0kubWFpblRhcmdldC5QYWdlQWdlbnQubmF2aWdh
dGUodXJsKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9KTsKKworICAgICAgICAg
ICAgV0kudGFyZ2V0TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLlRhcmdldE1hbmFnZXIuRXZl
bnQuRGlkQ29tbWl0UHJvdmlzaW9uYWxUYXJnZXQsIChldmVudCkgPT4geworICAgICAgICAgICAg
ICAgIGxldCB7cHJldmlvdXNUYXJnZXRJZCwgdGFyZ2V0fSA9IGV2ZW50LmRhdGE7CisgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5wYXNzKGBTaG91bGQgcmVjZWl2ZSBEaWRDb21taXRQcm92
aXNpb25hbFRhcmdldCBldmVudCAke3N0YWJsZVRhcmdldElkKHByZXZpb3VzVGFyZ2V0SWQpfSA9
PiAke3N0YWJsZVRhcmdldElkKHRhcmdldC5pZGVudGlmaWVyKX0uYCk7CisgICAgICAgICAgICB9
KTsKKworICAgICAgICAgICAgV0kudGFyZ2V0TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLlRh
cmdldE1hbmFnZXIuRXZlbnQuVGFyZ2V0UmVtb3ZlZCwgKGV2ZW50KSA9PnsKKyAgICAgICAgICAg
ICAgICBsZXQgdGFyZ2V0SWQgPSBzdGFibGVUYXJnZXRJZChldmVudC5kYXRhLnRhcmdldC5pZGVu
dGlmaWVyKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnBhc3MoYFNob3VsZCByZWNl
aXZlIFRhcmdldFJlbW92ZWQgZXZlbnQgZm9yIHRhcmdldCAke3RhcmdldElkfWApOworICAgICAg
ICAgICAgfSk7CisKKyAgICAgICAgICAgIC8vIFdhaXQgZm9yIHBhZ2UgcmVsb2FkIGV2ZW50IHRv
IGF2b2lkIHJhY2UgYmV0d2VlbiB0ZXN0IHJlc3VsdHMgZmx1c2hpbmcgYW5kIHRoZSB0ZXN0IGNv
bXBsZXRpb24uCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmF3YWl0RXZlbnQoRnJvbnRlbmRU
ZXN0SGFybmVzcy5FdmVudC5UZXN0UGFnZURpZExvYWQpCisgICAgICAgICAgICAudGhlbigoKSA9
PiB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChsYXN0QXNzaWdu
ZWRJZCwgMywgYFNob3VsZCBoYXZlIHNlZW4gMyBkaWZmZXJlbnQgdGFyZ2V0cy5gKTsKKyAgICAg
ICAgICAgIH0pCisgICAgICAgICAgICAudGhlbihyZXNvbHZlKTsKKworICAgICAgICAgICAgV0ku
bWFpblRhcmdldC5QYWdlQWdlbnQubmF2aWdhdGUodXJsKTsKKyAgICAgICAgfQorICAgIH0pOwor
CisgICAgc3VpdGUucnVuVGVzdENhc2VzQW5kRmluaXNoKCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxwPlRlc3QgdGhhdCB0d28gY29uc2VxdXRp
dmUgY3Jvc3MgZG9tYWluIG5hdmlnYXRpb24gcmVxdWVzdHMgd2lsbCByZXN1bHQgaW4gdHdvCitw
cm92aXNpb25hbCB0YXJnZXRzIGJlaW5nIGNyZWF0ZWQsIGZpcnN0IG9mIHdoaWNoIGlzIGxhdGVy
IGRlc3Ryb3llZCBhbmQgdGhlIHNlY29uZAoraXMgY29tbWl0dGVkLjwvcD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Rhcmdl
dC9yZXNvdXJjZXMvaW5saW5lLWRlYnVnZ2VyLXN0YXRlbWVudC5odG1sIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9pbnNwZWN0b3IvdGFyZ2V0L3Jlc291cmNlcy9pbmxpbmUtZGVidWdnZXItc3Rh
dGVtZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWMwYzAxNmE1YWQzOGNhNjhmOGVhN2IzNmRiNDM1NDc5
YzViYWEyMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL3RhcmdldC9yZXNvdXJjZXMvaW5saW5lLWRlYnVnZ2VyLXN0YXRlbWVudC5odG1sCkBAIC0w
LDAgKzEsMTkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJz
ZXQ9InV0Zi04Ij4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvaW5zcGVjdG9yLXRlc3Qu
anMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKworZGVidWdnZXI7CisKK2Z1bmN0aW9uIHRlc3QoKQor
eworICAgIEluc3BlY3RvclRlc3QuZmFpbCgiVGhpcyBjb2RlIHNob3VsZCBuZXZlciBhY3R1YWxs
eSBydW4uIEl0IGlzIGhlcmUgYmVjYXNlIGluc3BlY3Rvci10ZXN0LmpzIGhhcm5lc3MgcmVxdWly
ZXMgYSB0ZXN0KCkgZnVuY3Rpb24uIik7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9u
bG9hZD0icnVuVGVzdCgpIj4KKzxwPlRlc3QgcGFnZSB1c2VkIHRvIGNoZWNrIHRoYXQgZXhlY3V0
aW9uIHdpbGwgYnJlYWsgb24gaW5saW5lICdkZWJ1Z2dlcicgc3RhdGVtZW50IGFmdGVyIGNyb3Nz
LW9yaWdpbiBuYXZpZ2F0aW9uLjwvcD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3RhcmdldC90YXJnZXQtZXZlbnRzLWZvci1w
cm92aXNpb25hbC1wYWdlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL3RhcmdldC90YXJnZXQtZXZlbnRzLWZvci1wcm92aXNpb25hbC1wYWdlLWV4cGVjdGVk
LnR4dAppbmRleCA2ZGVmN2UwYmIzNDRkZTMyZDZkNTVjNzgyYTk4ZjIxNjMwOTlmODdkLi5kMDBl
MzYzMmRjNWRkYmIyOWZmNzJjOGIxNzI4ZTk3NDkxZGUyNDI2IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci90YXJnZXQvdGFyZ2V0LWV2ZW50cy1mb3ItcHJvdmlz
aW9uYWwtcGFnZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvdGFyZ2V0L3RhcmdldC1ldmVudHMtZm9yLXByb3Zpc2lvbmFsLXBhZ2UtZXhwZWN0ZWQu
dHh0CkBAIC02LDExICs2LDExIEBAIFRlc3QgdGhhdCBjcm9zcyBkb21haW4gbmF2aWdhdGlvbiBy
ZXN1bHRzIGluIHRoZSBmb2xsb3dpbmcgc2VxdWVuY2Ugb2YgZXZlbnRzIGluCiAKID09IFJ1bm5p
bmcgdGVzdCBzdWl0ZTogVGFyZ2V0LlBTT04KIC0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBQcm92aXNp
b25hbFBhZ2VUYXJnZXQKLVBBU1M6IFNob3VsZCByZWNlaXZlIHRhcmdldENyZWF0ZWQgZXZlbnQu
CitQQVNTOiBTaG91bGQgcmVjZWl2ZSBUYXJnZXRBZGRlZCBldmVudC4KIFBBU1M6IFRhcmdldCBz
aG91bGQgYmUgcHJvdmlzaW9uYWwuCi1QQVNTOiBTaG91bGQgcmVjZWl2ZSBkaWRDb21taXRQcm92
aXNpb25hbFRhcmdldCBldmVudC4KK1BBU1M6IFNob3VsZCByZWNlaXZlIFRhcmdldFJlbW92ZWQg
ZXZlbnQuCitQQVNTOiBEZXN0cm95ZWQgdGFyZ2V0IHNob3VsZCBiZSBwcmV2aW91cyB0YXJnZXQu
CitQQVNTOiBTaG91bGQgcmVjZWl2ZSBEaWRDb21taXRQcm92aXNpb25hbFRhcmdldCBldmVudC4K
IFBBU1M6IFByZXZpb3VzIHRhcmdldCBzaG91bGQgYmUgdGhlIGN1cnJlbnQgb25lLgogUEFTUzog
Q29tbWl0dGVkIHRhcmdldCBzaG91bGQgbWF0Y2ggcHJvdmlzaW9uYWwgdGFyZ2V0LgotUEFTUzog
U2hvdWxkIHJlY2VpdmUgdGFyZ2V0RGVzdHJveWVkIGV2ZW50LgotUEFTUzogRGVzdHJveWVkIHRh
cmdldCBzaG91bGQgYmUgcHJldmlvdXMgdGFyZ2V0LgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2luc3BlY3Rvci90YXJnZXQvdGFyZ2V0LWV2ZW50cy1mb3ItcHJvdmlzaW9u
YWwtcGFnZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvdGFyZ2V0L3Rh
cmdldC1ldmVudHMtZm9yLXByb3Zpc2lvbmFsLXBhZ2UuaHRtbAppbmRleCBlNzM5NTEzOTM2NzQ0
ZTU1NmVjMTEyYmRkNTJhYTFkOGU2NDk0YTkxLi5jNTFmYjRlMmY1OWMzNjkzZWRiYjUxMTkzZWMz
MjBlZmY2Zjk1ZDRlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rv
ci90YXJnZXQvdGFyZ2V0LWV2ZW50cy1mb3ItcHJvdmlzaW9uYWwtcGFnZS5odG1sCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3RhcmdldC90YXJnZXQtZXZlbnRzLWZvci1w
cm92aXNpb25hbC1wYWdlLmh0bWwKQEAgLTEzLDI4ICsxMywyNyBAQCBmdW5jdGlvbiB0ZXN0KCkK
ICAgICAgICAgZGVzY3JpcHRpb246ICJDaGVjayB0aGF0IGEgbmV3IHRhcmdldCB3aWxsIGJlIGNy
ZWF0ZWQgZm9yIHByb3Zpc2lvbmFsIHBhZ2UuIiwKICAgICAgICAgdGVzdChyZXNvbHZlLCByZWpl
Y3QpIHsKICAgICAgICAgICAgIGNvbnN0IG1haW5UYXJnZXRJZCA9IFdJLm1haW5UYXJnZXQuaWRl
bnRpZmllcjsKLSAgICAgICAgICAgIGxldCBuZXdUYXJnZXRJZDsKKyAgICAgICAgICAgIGxldCBu
ZXdUYXJnZXQ7CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChtYWluVGFyZ2V0SWQp
OwogICAgICAgICAgICAgbGV0IHJlbG9hZFByb21pc2UgPSBJbnNwZWN0b3JUZXN0LmF3YWl0RXZl
bnQoRnJvbnRlbmRUZXN0SGFybmVzcy5FdmVudC5UZXN0UGFnZURpZExvYWQpOwogCi0gICAgICAg
ICAgICBXSS50YXJnZXRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuVGFyZ2V0TWFuYWdlci5F
dmVudC5UYXJnZXRDcmVhdGVkLCAoZXZlbnQpID0+IHsKLSAgICAgICAgICAgICAgICBsZXQge3Rh
cmdldEluZm99ID0gZXZlbnQuZGF0YTsKLSAgICAgICAgICAgICAgICBuZXdUYXJnZXRJZCA9IHRh
cmdldEluZm8udGFyZ2V0SWQ7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5wYXNzKGBT
aG91bGQgcmVjZWl2ZSB0YXJnZXRDcmVhdGVkIGV2ZW50LmApOwotICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuZXhwZWN0VHJ1ZSh0YXJnZXRJbmZvLmlzUHJvdmlzaW9uYWwsICJUYXJnZXQg
c2hvdWxkIGJlIHByb3Zpc2lvbmFsLiIpOworICAgICAgICAgICAgV0kudGFyZ2V0TWFuYWdlci5h
ZGRFdmVudExpc3RlbmVyKFdJLlRhcmdldE1hbmFnZXIuRXZlbnQuVGFyZ2V0QWRkZWQsIChldmVu
dCkgPT4geworICAgICAgICAgICAgICAgIG5ld1RhcmdldCA9IGV2ZW50LmRhdGEudGFyZ2V0Owor
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QucGFzcyhgU2hvdWxkIHJlY2VpdmUgVGFyZ2V0
QWRkZWQgZXZlbnQuYCk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUcnVl
KG5ld1RhcmdldC5pc1Byb3Zpc2lvbmFsLCAiVGFyZ2V0IHNob3VsZCBiZSBwcm92aXNpb25hbC4i
KTsKICAgICAgICAgICAgIH0pOwogCiAgICAgICAgICAgICBXSS50YXJnZXRNYW5hZ2VyLmFkZEV2
ZW50TGlzdGVuZXIoV0kuVGFyZ2V0TWFuYWdlci5FdmVudC5EaWRDb21taXRQcm92aXNpb25hbFRh
cmdldCwgKGV2ZW50KSA9PiB7Ci0gICAgICAgICAgICAgICAgbGV0IHtwcmV2aW91c1RhcmdldElk
LCB0YXJnZXRJbmZvfSA9IGV2ZW50LmRhdGE7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5wYXNzKGBTaG91bGQgcmVjZWl2ZSBkaWRDb21taXRQcm92aXNpb25hbFRhcmdldCBldmVudC5g
KTsKKyAgICAgICAgICAgICAgICBsZXQge3ByZXZpb3VzVGFyZ2V0SWQsIHRhcmdldH0gPSBldmVu
dC5kYXRhOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QucGFzcyhgU2hvdWxkIHJlY2Vp
dmUgRGlkQ29tbWl0UHJvdmlzaW9uYWxUYXJnZXQgZXZlbnQuYCk7CiAgICAgICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChwcmV2aW91c1RhcmdldElkLCBtYWluVGFyZ2V0SWQs
ICJQcmV2aW91cyB0YXJnZXQgc2hvdWxkIGJlIHRoZSBjdXJyZW50IG9uZS4iKTsKLSAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHRhcmdldEluZm8udGFyZ2V0SWQsIG5l
d1RhcmdldElkLCAiQ29tbWl0dGVkIHRhcmdldCBzaG91bGQgbWF0Y2ggcHJvdmlzaW9uYWwgdGFy
Z2V0LiIpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwodGFyZ2V0
LCBuZXdUYXJnZXQsICJDb21taXR0ZWQgdGFyZ2V0IHNob3VsZCBtYXRjaCBwcm92aXNpb25hbCB0
YXJnZXQuIik7CiAgICAgICAgICAgICB9KTsKIAotICAgICAgICAgICAgV0kudGFyZ2V0TWFuYWdl
ci5hZGRFdmVudExpc3RlbmVyKFdJLlRhcmdldE1hbmFnZXIuRXZlbnQuVGFyZ2V0RGVzdHJveWVk
LCAoZXZlbnQpID0+ewotICAgICAgICAgICAgICAgIGxldCB7dGFyZ2V0SWR9ID0gZXZlbnQuZGF0
YTsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnBhc3MoYFNob3VsZCByZWNlaXZlIHRh
cmdldERlc3Ryb3llZCBldmVudC5gKTsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4
cGVjdEVxdWFsKHRhcmdldElkLCBtYWluVGFyZ2V0SWQsICJEZXN0cm95ZWQgdGFyZ2V0IHNob3Vs
ZCBiZSBwcmV2aW91cyB0YXJnZXQuIik7CisgICAgICAgICAgICBXSS50YXJnZXRNYW5hZ2VyLmFk
ZEV2ZW50TGlzdGVuZXIoV0kuVGFyZ2V0TWFuYWdlci5FdmVudC5UYXJnZXRSZW1vdmVkLCAoZXZl
bnQpID0+eworICAgICAgICAgICAgICAgIGxldCB0YXJnZXQgPSBldmVudC5kYXRhLnRhcmdldDsK
KyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnBhc3MoYFNob3VsZCByZWNlaXZlIFRhcmdl
dFJlbW92ZWQgZXZlbnQuYCk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RF
cXVhbCh0YXJnZXQuaWRlbnRpZmllciwgbWFpblRhcmdldElkLCAiRGVzdHJveWVkIHRhcmdldCBz
aG91bGQgYmUgcHJldmlvdXMgdGFyZ2V0LiIpOwogCiAgICAgICAgICAgICAgICAgLy8gV2FpdCBm
b3IgcGFnZSByZWxvYWQgZXZlbnQgdG8gYXZvaWQgcmFjZSBiZXR3ZWVuIHRlc3QgcmVzdWx0cyBm
bHVzaGluZyBhbmQgdGhlIHRlc3QgY29tcGxldGlvbi4KICAgICAgICAgICAgICAgICByZWxvYWRQ
cm9taXNlLnRoZW4ocmVzb2x2ZSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>384791</attachid>
            <date>2019-12-03 23:41:07 -0800</date>
            <delta_ts>2019-12-04 00:24:20 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-204170-20191203234106.patch</filename>
            <type>text/plain</type>
            <size>52498</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzMDQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
NDY2ZjVlYjI5MTEzYzMyODBmOGQ2NjMyMGQxMDQ0NTEwM2IwMjdmLi4zY2UwYjNhY2JhZTE5MWJl
MWE5OGYxMDUwZGU0MTNkNGFjYmExZGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMiBAQAorMjAxOS0xMS0xMyAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBhbGxvdyBpbnNwZWN0b3IgdG8gcGF1c2Ug
cHJvdmlzaW9uYWwgcGFnZSBsb2FkIGFuZCByZXN0b3JlIGl0cyBzdGF0ZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0MTcwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgRGV2aW4gUm91c3NvLgorCisgICAgICAgIEFkZGVkIGFuIG9wdGlvbiB0byBUYXJn
ZXQgZG9tYWluIHRvIHBhdXNlIGFsbCBuZXcgdGFyZ2V0cyBvbiBzdGFydCB3YWl0aW5nIGZvcgor
ICAgICAgICBleHBsaWNpdCAncmVzdW1lJyBjb21tYW5kIGZyb20gdGhlIGluc3BlY3RvciBmcm9u
dC1lbmQuIFRoaXMgYWxsb3dzIHRvIGNvbmZpZ3VyZQorICAgICAgICBpbnNwZWN0b3IgYmFja2Vu
ZCAoaW5jbHVkaW5nIHVzZXIgYWdlbnQgb3ZlcnJpZGVzLCBicmVha3BvaW50cyBhbmQgaW5zdHJ1
bWVudGF0aW9uKQorICAgICAgICBiZWZvcmUgbmF2aWdhdGlvbiBzdGFydHMuCisKKyAgICAgICAg
KiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFNv
dXJjZXMudHh0OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JUYXJnZXQuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yVGFyZ2V0OjpwYXVzZSk6CisgICAgICAg
IChJbnNwZWN0b3I6Okluc3BlY3RvclRhcmdldDo6cmVzdW1lKToKKyAgICAgICAgKEluc3BlY3Rv
cjo6SW5zcGVjdG9yVGFyZ2V0OjpzZXRSZXN1bWVDYWxsYmFjayk6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvclRhcmdldC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yVGFyZ2V0QWdlbnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JUYXJnZXRB
Z2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAoSW5zcGVjdG9y
OjpJbnNwZWN0b3JUYXJnZXRBZ2VudDo6c2V0UGF1c2VPblN0YXJ0KToKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yVGFyZ2V0QWdlbnQ6OnJlc3VtZSk6CisgICAgICAgIChJbnNwZWN0b3I6
OmJ1aWxkVGFyZ2V0SW5mb09iamVjdCk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvclRh
cmdldEFnZW50Ojp0YXJnZXRDcmVhdGVkKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9y
VGFyZ2V0QWdlbnQ6OnRhcmdldERlc3Ryb3llZCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JUYXJnZXRBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9wcm90b2NvbC9U
YXJnZXQuanNvbjoKKwogMjAxOS0xMi0wMiAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNv
bT4KIAogICAgICAgICBQcm9wZXJ0eVNsb3Qgc2hvdWxkIG5vdCBoYXZlIEN1c3RvbXMgaGF2ZSBh
IFByb3BlcnR5T2Zmc2V0IG9mIHplcm8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDVlMWRh
MzRhN2ZmNDY0OTQ1MzA0MzhjZTVjNzAzYmM2MWY3ZTdhNjQuLjE4ZGJjYWJhY2E5Y2NmODNhNTg3
OWI1OWY5OTc2MWNhZjQ3YzgwZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDQxIEBACisyMDE5LTExLTEzICBZdXJ5IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGFsbG93IGluc3BlY3RvciB0byBwYXVzZSBwcm92
aXNpb25hbCBwYWdlIGxvYWQgYW5kIHJlc3RvcmUgaXRzIHN0YXRlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDQxNzAKKworICAgICAgICBSZXZpZXdl
ZCBieSBEZXZpbiBSb3Vzc28uCisKKyAgICAgICAgQWxsIG5ldyB0YXJnZXRzIGFyZSBub3cgYXV0
b21hdGljYWxseSBwYXVzZWQgb24gc3RhcnQuIEZvciBzdWNoIHByb3Zpc2lvbmFsIHRhcmdldHMg
dGFyZ2V0CisgICAgICAgIG1hbmFnZXIgd2lsbCBydW4gcmVndWxhciBpbml0aWxpemF0aW9uIGNv
ZGUgKGVuYWJsZSBhZ2VudHMgZXRjLikgYW5kIHRoZW4gcmVzdW1lIGxvYWRpbmcgb2YKKyAgICAg
ICAgdGhlIHRhcmdldC4gUmVzcG9uc2VzIGFuZCBldmVudHMgZnJvbSB0aGUgdGFyZ2V0IGFyZSBk
ZWZmZXJyZWQgdW50aWwgdGhlIHRhcmdldCBpcyBjb21taXR0ZWQKKyAgICAgICAgYW5kIGJlY29t
ZXMgY3VycmVudCBtYWluIHRhcmdldC4gV2hlbiB0aGUgdGFyZ2V0IG1hbmFnZXIgcmVjZWl2ZXMg
ZXZlbnQgdGhhdCB0aGUgcHJvdmlzaW9uYWwKKyAgICAgICAgdGFyZ2V0IGhhcyBiZWVuIGNvbW1p
dHRlZCBhbGwgYWNjdW11bGF0ZWQgcHJvdG9jb2wgbWVzc2FnZXMgYXJlIHJlcGxheWVkIGFuZCBn
b2luZyBmb3J3YXJkIGFsbAorICAgICAgICBuZXcgbWlzc2FnZXMgd2lsbCBiZSBkaXNwYXRjaGVk
IGFzIHVzdWFsLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9Db250cm9sbGVycy9UYXJnZXRN
YW5hZ2VyLmpzOgorICAgICAgICAoV0kuVGFyZ2V0TWFuYWdlcik6CisgICAgICAgIChXSS5UYXJn
ZXRNYW5hZ2VyLnByb3RvdHlwZS50YXJnZXRDcmVhdGVkKToKKyAgICAgICAgKFdJLlRhcmdldE1h
bmFnZXIucHJvdG90eXBlLmRpZENvbW1pdFByb3Zpc2lvbmFsVGFyZ2V0KToKKyAgICAgICAgKFdJ
LlRhcmdldE1hbmFnZXIucHJvdG90eXBlLnRhcmdldERlc3Ryb3llZCk6CisgICAgICAgIChXSS5U
YXJnZXRNYW5hZ2VyLnByb3RvdHlwZS5kaXNwYXRjaE1lc3NhZ2VGcm9tVGFyZ2V0KToKKyAgICAg
ICAgKFdJLlRhcmdldE1hbmFnZXIucHJvdG90eXBlLl9jcmVhdGVUYXJnZXQpOgorICAgICAgICAo
V0kuVGFyZ2V0TWFuYWdlci5wcm90b3R5cGUuX2NoZWNrQW5kSGFuZGxlUGFnZVRhcmdldFRyYW5z
aXRpb24pOgorICAgICAgICAoV0kuVGFyZ2V0TWFuYWdlci5wcm90b3R5cGUuX2NoZWNrQW5kSGFu
ZGxlUGFnZVRhcmdldFRlcm1pbmF0aW9uKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Byb3Rv
Y29sL0Nvbm5lY3Rpb24uanM6CisgICAgICAgIChJbnNwZWN0b3JCYWNrZW5kLkNvbm5lY3Rpb24p
OgorICAgICAgICAoSW5zcGVjdG9yQmFja2VuZC5Db25uZWN0aW9uLnByb3RvdHlwZS5hZGRQcm92
aXNpb25hbE1lc3NhZ2UpOgorICAgICAgICAoSW5zcGVjdG9yQmFja2VuZC5Db25uZWN0aW9uLnBy
b3RvdHlwZS5kaXNwYXRjaFByb3Zpc2lvbmFsTWVzc2FnZXMpOgorICAgICAgICAqIFVzZXJJbnRl
cmZhY2UvUHJvdG9jb2wvTXVsdGlwbGV4aW5nQmFja2VuZFRhcmdldC5qczoKKyAgICAgICAgKFdJ
Lk11bHRpcGxleGluZ0JhY2tlbmRUYXJnZXQucHJvdG90eXBlLmluaXRpYWxpemUpOgorICAgICAg
ICAqIFVzZXJJbnRlcmZhY2UvUHJvdG9jb2wvUGFnZVRhcmdldC5qczoKKyAgICAgICAgKFdJLlBh
Z2VUYXJnZXQpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvUHJvdG9jb2wvVGFyZ2V0LmpzOgor
ICAgICAgICAoV0kuVGFyZ2V0LnByb3RvdHlwZS5pbml0aWFsaXplKToKKyAgICAgICAgKFdJLlRh
cmdldC5wcm90b3R5cGUuZ2V0IGlzUHJvdmlzaW9uYWwpOgorICAgICAgICAoV0kuVGFyZ2V0LnBy
b3RvdHlwZS5nZXQgaXNQYXVzZWQpOgorICAgICAgICAoV0kuVGFyZ2V0LnByb3RvdHlwZS5kaWRD
b21taXRQcm92aXNpb25hbFRhcmdldCk6CisgICAgICAgICogVXNlckludGVyZmFjZS9Qcm90b2Nv
bC9Xb3JrZXJUYXJnZXQuanM6CisKIDIwMTktMTItMDIgIE5pa2l0YSBWYXNpbHlldiAgPG52YXNp
bHlldkBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogUHJvdmlkZSBVSSB0byBj
b252ZXJ0IGJldHdlZW4gc1JHQiBhbmQgcDMgY29sb3Igc3BhY2VzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDc0NTI2
MmI2Nzc1NjQyODUzN2YwZjdkN2I0NDJmMmY4Y2U0ODFkZjQuLjAwYzA3NzkyZGM3MGMwNTc4MTM5
NDBiOTE1YzliYTYyMWFhYWVlMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTktMTEt
MTMgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2Vi
IEluc3BlY3RvcjogYWxsb3cgaW5zcGVjdG9yIHRvIHBhdXNlIHByb3Zpc2lvbmFsIHBhZ2UgbG9h
ZCBhbmQgcmVzdG9yZSBpdHMgc3RhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwNDE3MAorCisgICAgICAgIFJldmlld2VkIGJ5IERldmluIFJvdXNz
by4KKworICAgICAgICBQcm92aXNpb25hbCBwYWdlIGxvYWRpbmcgY2FuIGJlIGRlZmZlcmVkIGlm
IGluc3BlY3RvciBmcm9udC1lbmQgaXMgY29ubmVjdGVkLiBUaGlzCisgICAgICAgIGFsbG93cyB0
byBjb25maWd1cmUgaW5zcGVjdG9yIGJhY2tlbmQgaW4gdGhlIHByb3Zpc2lvbmFsIHBhZ2UgYmVm
b3JlIGxvYWQgcmVxdWVzdAorICAgICAgICBpcyBzZW50LiBJZiBpbnNwZWN0b3IgZnJvbnQtZW5k
IGlzIG5vdCBjb25uZWN0ZWQgcHJvdmlzaW9uYWwgbG9hZGluZyB3aWxsIGNvbml0aW51ZQorICAg
ICAgICBleGFjdGx5IGFzIGJlZm9yZS4KKworICAgICAgICBUZXN0czogaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvdGFyZ2V0L3BhdXNlLW9uLWlubGluZS1kZWJ1Z2dlci1zdGF0ZW1lbnQuaHRtbAorICAg
ICAgICAgICAgICAgaHR0cC90ZXN0cy9pbnNwZWN0b3IvdGFyZ2V0L3Byb3Zpc2lvbmFsLWxvYWQt
Y2FuY2Vscy1wcmV2aW91cy1sb2FkLmh0bWwKKworICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0
b3JUYXJnZXRQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvclRhcmdldFByb3h5
OjpkaXNjb25uZWN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZUluc3BlY3RvckNvbnRy
b2xsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlcjo6
c2hvdWxkUGF1c2VMb2FkaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUluc3Bl
Y3RvckNvbnRyb2xsZXI6OnNldENvbnRpbnVlTG9hZGluZ0NhbGxiYWNrKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpjb250
aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3MpOgorCiAyMDE5LTEyLTAzICBDaHJpcyBEdW1leiAg
PGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgUGFnZUNvbmZpZ3VyYXRpb246OmFsdGVybmF0
aXZlVGV4dENsaWVudCBzaG91bGQgdXNlIGEgc21hcnQgcG9pbnRlcgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCBkOWU3OWE4ZWQyODNhYWQ2NTQzODg5OWFiMWVmNDU1MjA4Nzk5YjRh
Li4wZmE0YmRkNzFiNjcyYzA3ZGJkYWY3MGZkODExNzZhN2ZjYzI4ODRmIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtNTAxOCw2ICs1MDE4LDcgQEAKIAkJRTQ5REMxNDkxMkVGMjYx
QTAwMTg0QTFGIC8qIFNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUU0OURDMTUxMTJFRjI3MjIwMDE4NEExRiAvKiBTb3VyY2VQcm92aWRl
ckNhY2hlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNvdXJjZVByb3ZpZGVy
Q2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQ5REMxNTUxMkVGMjc3MjAw
MTg0QTFGIC8qIFNvdXJjZVByb3ZpZGVyQ2FjaGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gU291cmNlUHJvdmlkZXJDYWNoZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUYzNDU5RDc0MjM5NzNBQkQwMERDRDI3QSAvKiBJbnNwZWN0b3JUYXJnZXQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9yVGFyZ2V0LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRjVCQjJCQzUwMzBGNzcyMTAxRkNGRTFEIC8qIENvbXBsZXRpb24u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50
V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29t
cGxldGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IH07CiAJCUY1
QzI5MEU2MDI4NEY5OEUwMTg2MzVDQSAvKiBKYXZhU2NyaXB0Q29yZVByZWZpeC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKYXZhU2NyaXB0Q29y
ZVByZWZpeC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IH07CiAJCUY2
OEVCQjhDMDI1NUQ0QzYwMUZGNjBGNyAvKiBjb25maWcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gY29uZmlnLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IHRhYldpZHRoID0gODsgfTsKQEAgLTg0OTAsNiArODQ5MSw3IEBACiAJCQkJOTlGMUE2
RkMxQjhFNkQ5NDAwNDYzQjI2IC8qIEluc3BlY3RvckZyb250ZW5kUm91dGVyLmNwcCAqLywKIAkJ
CQk5OUYxQTcwMDFCOThGQkVDMDA0NjNCMjYgLyogSW5zcGVjdG9yRnJvbnRlbmRSb3V0ZXIuaCAq
LywKIAkJCQlBNTVEOTNBQjE4NTE0Rjc5MDA0MDBERUQgLyogSW5zcGVjdG9yUHJvdG9jb2xUeXBl
cy5oICovLAorCQkJCUYzNDU5RDc0MjM5NzNBQkQwMERDRDI3QSAvKiBJbnNwZWN0b3JUYXJnZXQu
Y3BwICovLAogCQkJCUE1NTVGRjM4MjE1OUQyRDYwMEZDRDgyNiAvKiBJbnNwZWN0b3JUYXJnZXQu
aCAqLywKIAkJCQlBNTAzRkExMzE4OEUwRkFGMDAxMTBGMTQgLyogSmF2YVNjcmlwdENhbGxGcmFt
ZS5jcHAgKi8sCiAJCQkJQTUwM0ZBMTQxODhFMEZBRjAwMTEwRjE0IC8qIEphdmFTY3JpcHRDYWxs
RnJhbWUuaCAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4
dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRleCA4ZDcwNmM5NTIxY2I3
ZGI2OWQyYTg1NzhhZDRhNDJlZDMyODUwZWRlLi4xYmZkN2VjZjBkMWM3NzljODZhYjdhZWY1MWEx
OGY1OWI3MDM0ZWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50
eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC01NjMsNiArNTYz
LDcgQEAgaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmNwcAogaW5zcGVjdG9yL0luc3Bl
Y3RvckFnZW50UmVnaXN0cnkuY3BwCiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRSb3V0ZXIu
Y3BwCiBpbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3BwCitpbnNwZWN0b3Iv
SW5zcGVjdG9yVGFyZ2V0LmNwcAogaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVu
dC5jcHAKIGluc3BlY3Rvci9KU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIuY3BwCiBp
bnNwZWN0b3IvSlNHbG9iYWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZlci5jcHAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGFyZ2V0LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGFyZ2V0LmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4wY2MyMTI3YzljMTJjMmQ4MmRlYTk1NTBiYWQ3M2Y0ZmZiOTliYTI0Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUYXJnZXQu
Y3BwCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgTWljcm9zb2Z0
IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbiBub3IgdGhlIG5hbWVz
IG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yVGFyZ2V0LmgiCisKK25hbWVzcGFjZSBJbnNwZWN0b3Ig
eworCit2b2lkIEluc3BlY3RvclRhcmdldDo6cGF1c2UoKQoreworICAgIEFTU0VSVCghbV9pc1Bh
dXNlZCk7CisgICAgbV9pc1BhdXNlZCA9IHRydWU7Cit9CisKK3ZvaWQgSW5zcGVjdG9yVGFyZ2V0
OjpyZXN1bWUoKQoreworICAgIEFTU0VSVChtX2lzUGF1c2VkKTsKKyAgICBtX2lzUGF1c2VkID0g
ZmFsc2U7CisKKyAgICBpZiAobV9yZXN1bWVDYWxsYmFjaykgeworICAgICAgICBtX3Jlc3VtZUNh
bGxiYWNrKCk7CisgICAgICAgIG1fcmVzdW1lQ2FsbGJhY2sgPSBudWxscHRyOworICAgIH0KK30K
Kwordm9pZCBJbnNwZWN0b3JUYXJnZXQ6OnNldFJlc3VtZUNhbGxiYWNrKFdURjo6RnVuY3Rpb248
dm9pZCgpPiYmIGNhbGxiYWNrKQoreworICAgIEFTU0VSVCghbV9yZXN1bWVDYWxsYmFjayk7Cisg
ICAgbV9yZXN1bWVDYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spOworfQorCit9IC8vIG5hbWVz
cGFjZSBJbnNwZWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yVGFyZ2V0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclRhcmdldC5oCmluZGV4IGE5ZjA0YjhhMGM5YWZhZWVhNGZlOGMwYTRkMDdkODIzMGE5
YzM1NjAuLjRiOTU5NjRkYjRkOTAyYjRiN2Y0YjBiNGM0MGFmZWE1MTY1NGZmMmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGFyZ2V0LmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUYXJnZXQuaApAQCAt
NDcsMTEgKzQ3LDE5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEluc3BlY3RvclRhcmdldFR5cGUg
dHlwZSgpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgYm9vbCBpc1Byb3Zpc2lvbmFsKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzUGF1c2VkKCkgY29uc3QgeyByZXR1cm4g
bV9pc1BhdXNlZDsgfQorICAgIHZvaWQgcGF1c2UoKTsKKyAgICB2b2lkIHJlc3VtZSgpOworICAg
IHZvaWQgc2V0UmVzdW1lQ2FsbGJhY2soV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYpOwogCiAgICAg
Ly8gQ29ubmVjdGlvbiBtYW5hZ2VtZW50LgogICAgIHZpcnR1YWwgdm9pZCBjb25uZWN0KEZyb250
ZW5kQ2hhbm5lbDo6Q29ubmVjdGlvblR5cGUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlzY29u
bmVjdCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2VuZE1lc3NhZ2VUb1RhcmdldEJhY2tlbmQo
Y29uc3QgU3RyaW5nJikgPSAwOworCitwcml2YXRlOgorICAgIFdURjo6RnVuY3Rpb248dm9pZCgp
PiBtX3Jlc3VtZUNhbGxiYWNrOworICAgIGJvb2wgbV9pc1BhdXNlZCB7IGZhbHNlIH07CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRhcmdldEFnZW50LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRhcmdldEFnZW50LmNwcApp
bmRleCAxMTc3MDkwZmMxODYyM2VmNTAxYzlhZDRjMzM4OWJjMmRhOTEwNzFlLi44ZmNiNWExZTU1
NzUwZDMyNWE4NDgyNGQ4NmM0OWNmZTZmYjA0MjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUYXJnZXRBZ2VudC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGFyZ2V0QWdl
bnQuY3BwCkBAIC01Miw2ICs1MiwyOCBAQCB2b2lkIEluc3BlY3RvclRhcmdldEFnZW50Ojp3aWxs
RGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChEaXNjb25uZWN0UmVhc29uKQogICAgIGRpc2Nvbm5l
Y3RGcm9tVGFyZ2V0cygpOwogCiAgICAgbV9pc0Nvbm5lY3RlZCA9IGZhbHNlOworICAgIG1fc2hv
dWxkUGF1c2VPblN0YXJ0ID0gZmFsc2U7Cit9CisKK3ZvaWQgSW5zcGVjdG9yVGFyZ2V0QWdlbnQ6
OnNldFBhdXNlT25TdGFydChFcnJvclN0cmluZyYsIGJvb2wgcGF1c2VPblN0YXJ0KQoreworICAg
IG1fc2hvdWxkUGF1c2VPblN0YXJ0ID0gcGF1c2VPblN0YXJ0OworfQorCit2b2lkIEluc3BlY3Rv
clRhcmdldEFnZW50OjpyZXN1bWUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJp
bmcmIHRhcmdldElkKQoreworICAgIGF1dG8qIHRhcmdldCA9IG1fdGFyZ2V0cy5nZXQodGFyZ2V0
SWQpOworICAgIGlmICghdGFyZ2V0KSB7CisgICAgICAgIGVycm9yU3RyaW5nID0gIk1pc3Npbmcg
dGFyZ2V0IGZvciBnaXZlbiB0YXJnZXRJZCJfczsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGlmICghdGFyZ2V0LT5pc1BhdXNlZCgpKSB7CisgICAgICAgIGVycm9yU3RyaW5nID0gIlRh
cmdldCBmb3IgZ2l2ZW4gdGFyZ2V0SWQgaXMgbm90IHBhdXNlZCJfczsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIHRhcmdldC0+cmVzdW1lKCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yVGFy
Z2V0QWdlbnQ6OnNlbmRNZXNzYWdlVG9UYXJnZXQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBj
b25zdCBTdHJpbmcmIHRhcmdldElkLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCkBAIC05NSw2ICsx
MTcsOCBAQCBzdGF0aWMgUmVmPFByb3RvY29sOjpUYXJnZXQ6OlRhcmdldEluZm8+IGJ1aWxkVGFy
Z2V0SW5mb09iamVjdChjb25zdCBJbnNwZWN0b3JUYQogICAgICAgICAucmVsZWFzZSgpOwogICAg
IGlmICh0YXJnZXQuaXNQcm92aXNpb25hbCgpKQogICAgICAgICByZXN1bHQtPnNldElzUHJvdmlz
aW9uYWwodHJ1ZSk7CisgICAgaWYgKHRhcmdldC5pc1BhdXNlZCgpKQorICAgICAgICByZXN1bHQt
PnNldElzUGF1c2VkKHRydWUpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTEwNiw2ICsx
MzAsOCBAQCB2b2lkIEluc3BlY3RvclRhcmdldEFnZW50Ojp0YXJnZXRDcmVhdGVkKEluc3BlY3Rv
clRhcmdldCYgdGFyZ2V0KQogICAgIGlmICghbV9pc0Nvbm5lY3RlZCkKICAgICAgICAgcmV0dXJu
OwogCisgICAgaWYgKG1fc2hvdWxkUGF1c2VPblN0YXJ0KQorICAgICAgICB0YXJnZXQucGF1c2Uo
KTsKICAgICB0YXJnZXQuY29ubmVjdChjb25uZWN0aW9uVHlwZSgpKTsKIAogICAgIG1fZnJvbnRl
bmREaXNwYXRjaGVyLT50YXJnZXRDcmVhdGVkKGJ1aWxkVGFyZ2V0SW5mb09iamVjdCh0YXJnZXQp
KTsKQEAgLTExOCw4ICsxNDQsNiBAQCB2b2lkIEluc3BlY3RvclRhcmdldEFnZW50Ojp0YXJnZXRE
ZXN0cm95ZWQoSW5zcGVjdG9yVGFyZ2V0JiB0YXJnZXQpCiAgICAgaWYgKCFtX2lzQ29ubmVjdGVk
KQogICAgICAgICByZXR1cm47CiAKLSAgICB0YXJnZXQuZGlzY29ubmVjdCgpOwotCiAgICAgbV9m
cm9udGVuZERpc3BhdGNoZXItPnRhcmdldERlc3Ryb3llZCh0YXJnZXQuaWRlbnRpZmllcigpKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yVGFyZ2V0QWdlbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvclRhcmdldEFnZW50LmgKaW5kZXggMzhjYjMxODk4NmIzMWM0ZGVkMTli
YTliZWFlNzg1NWQyYjU0YzIzYS4uMWViN2FiYjJmYTIxZDdhOGVjMDgzMzE2MGY1M2U1YzUyM2Vj
NDMxNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yVGFyZ2V0QWdlbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JUYXJnZXRBZ2VudC5oCkBAIC00OSw2ICs0OSw4IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKERpc2Nvbm5lY3RSZWFz
b24pIGZpbmFsOwogCiAgICAgLy8gVGFyZ2V0QmFja2VuZERpc3BhdGNoZXJIYW5kbGVyCisgICAg
dm9pZCBzZXRQYXVzZU9uU3RhcnQoRXJyb3JTdHJpbmcmLCBib29sIHBhdXNlT25TdGFydCkgb3Zl
cnJpZGU7CisgICAgdm9pZCByZXN1bWUoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHRhcmdl
dElkKSBvdmVycmlkZTsKICAgICB2b2lkIHNlbmRNZXNzYWdlVG9UYXJnZXQoRXJyb3JTdHJpbmcm
LCBjb25zdCBTdHJpbmcmIHRhcmdldElkLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpIGZpbmFsOwog
CiAgICAgLy8gVGFyZ2V0IGxpZmVjeWNsZS4KQEAgLTcwLDYgKzcyLDcgQEAgcHJpdmF0ZToKICAg
ICBSZWY8VGFyZ2V0QmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CiAgICAg
SGFzaE1hcDxTdHJpbmcsIEluc3BlY3RvclRhcmdldCo+IG1fdGFyZ2V0czsKICAgICBib29sIG1f
aXNDb25uZWN0ZWQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9zaG91bGRQYXVzZU9uU3RhcnQgeyBm
YWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL1RhcmdldC5qc29uIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9UYXJnZXQuanNvbgppbmRleCAyNDBj
ZDQyZTY3ZTMyNTBlNDM0YzBiZjZmOWQxNjE2ODUwNWE4YzIyLi41MjkyMGNkZWQyNGE5YzZiMGVm
NmZiNGU1MTg2NjQ5NTVkYjRmOWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3Byb3RvY29sL1RhcmdldC5qc29uCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvcHJvdG9jb2wvVGFyZ2V0Lmpzb24KQEAgLTEwLDExICsxMCwyNiBAQAogICAg
ICAgICAgICAgInByb3BlcnRpZXMiOiBbCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ0YXJn
ZXRJZCIsICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJVbmlxdWUgaWRlbnRpZmll
ciBmb3IgdGhlIHRhcmdldC4iIH0sCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ0eXBlIiwg
InR5cGUiOiAic3RyaW5nIiwgImVudW0iOiBbInBhZ2UiLCAic2VydmljZS13b3JrZXIiLCAid29y
a2VyIl0gfSwKLSAgICAgICAgICAgICAgICB7ICJuYW1lIjogImlzUHJvdmlzaW9uYWwiLCAidHlw
ZSI6ICJib29sZWFuIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIlRydWUgdmFs
dWUgaW5kaWNhdGVzIHRoYXQgdGhpcyBpcyBhIHByb3Zpc2lvbmFsIHBhZ2UgdGFyZ2V0IGkuZS4g
U3VjaCB0YXJnZXQgbWF5IGJlIGNyZWF0ZWQgd2hlbiBjdXJyZW50IHBhZ2Ugc3RhcnRzIGNyb3Nz
LW9yaWdpbiBuYXZpZ2F0aW9uLiBFdmVudHVhbGx5IGVhY2ggcHJvdmlzaW9uYWwgdGFyZ2V0IGlz
IGVpdGhlciBjb21taXR0ZWQgYW5kIHN3YXBzIHdpdGggdGhlIGN1cnJlbnQgdGFyZ2V0IG9yIGdl
dHMgZGVzdHJveWVkLCBlLmcuIGluIGNhc2Ugb2YgbG9hZCByZXF1ZXN0IGZhaWx1cmUuIiB9Cisg
ICAgICAgICAgICAgICAgeyAibmFtZSI6ICJpc1Byb3Zpc2lvbmFsIiwgInR5cGUiOiAiYm9vbGVh
biIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJXaGV0aGVyIHRoaXMgaXMgYSBw
cm92aXNpb25hbCBwYWdlIHRhcmdldC4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJp
c1BhdXNlZCIsICJ0eXBlIjogImJvb2xlYW4iLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRp
b24iOiAiV2hldGhlciB0aGUgdGFyZ2V0IGlzIHBhdXNlZCBvbiBzdGFydCBhbmQgaGFzIHRvIGJl
IGV4cGxpY2l0ZWx5IHJlc3VtZWQgYnkgaW5zcGVjdG9yLiIgfQogICAgICAgICAgICAgXQogICAg
ICAgICB9CiAgICAgXSwKICAgICAiY29tbWFuZHMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAg
ICJuYW1lIjogInNldFBhdXNlT25TdGFydCIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAi
SWYgc2V0IHRvIHRydWUsIG5ldyB0YXJnZXRzIHdpbGwgYmUgcGF1c2VkIG9uIHN0YXJ0IHdhaXRp
bmcgZm9yIHJlc3VtZSBjb21tYW5kLiBPdGhlciBjb21tYW5kcyBjYW4gYmUgZGlzcGF0Y2hlZCBv
biB0aGUgdGFyZ2V0IGJlZm9yZSBpdCBpcyByZXN1bWVkLiIsCisgICAgICAgICAgICAicGFyYW1l
dGVycyI6IFsKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInBhdXNlT25TdGFydCIsICJ0eXBl
IjogImJvb2xlYW4iLCAiZGVzY3JpcHRpb24iOiAiSWYgc2V0IHRvIHRydWUsIG5ldyB0YXJnZXRz
IHdpbGwgYmUgcGF1c2VkIG9uIHN0YXJ0IHdhaXRpbmcgZm9yIHJlc3VtZSBjb21tYW5kLiIgfQor
ICAgICAgICAgICAgXQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6
ICJyZXN1bWUiLAorICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIldpbGwgcmVzdW1lIHRhcmdl
dCBpZiBpdCB3YXMgcGF1c2VkIG9uIHN0YXJ0LiIsCisgICAgICAgICAgICAicGFyYW1ldGVycyI6
IFsKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInRhcmdldElkIiwgInR5cGUiOiAic3RyaW5n
IiB9CisgICAgICAgICAgICBdCisgICAgICAgIH0sCiAgICAgICAgIHsKICAgICAgICAgICAgICJu
YW1lIjogInNlbmRNZXNzYWdlVG9UYXJnZXQiLAogICAgICAgICAgICAgImRlc2NyaXB0aW9uIjog
IlNlbmQgYW4gSW5zcGVjdG9yIFByb3RvY29sIG1lc3NhZ2UgdG8gYmUgZGlzcGF0Y2hlZCB0byBh
IFRhcmdldCdzIGFnZW50cy4iLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvVGFyZ2V0TWFuYWdlci5qcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1RhcmdldE1hbmFnZXIuanMKaW5kZXgg
MTQ5NTMxZDg1ODczOTIyYmMwY2I2ZTkxZDI2YjczYzFhMjE2Zjg1Mi4uNmM3NjZiM2Q0ZTZiNzky
MzFiOTFlZWNhYTFjODUzYmExY2RiYTFjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvVGFyZ2V0TWFuYWdlci5qcworKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9UYXJnZXRNYW5hZ2Vy
LmpzCkBAIC0zMyw5ICszMyw2IEBAIFdJLlRhcmdldE1hbmFnZXIgPSBjbGFzcyBUYXJnZXRNYW5h
Z2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIHRoaXMuX2NhY2hlZFRhcmdldHNMaXN0ID0g
bnVsbDsKICAgICAgICAgdGhpcy5fc2VlblBhZ2VUYXJnZXQgPSBmYWxzZTsKICAgICAgICAgdGhp
cy5fdHJhbnNpdGlvblRpbWVvdXRJZGVudGlmaWVyID0gdW5kZWZpbmVkOwotCi0gICAgICAgIHRo
aXMuX3Byb3Zpc2lvbmFsVGFyZ2V0SW5mb3MgPSBuZXcgTWFwOwotICAgICAgICB0aGlzLl9zd2Fw
cGVkVGFyZ2V0SWRzID0gbmV3IFNldDsKICAgICB9CiAKICAgICAvLyBQdWJsaWMKQEAgLTEyMCw5
MSArMTE3LDY2IEBAIFdJLlRhcmdldE1hbmFnZXIgPSBjbGFzcyBUYXJnZXRNYW5hZ2VyIGV4dGVu
ZHMgV0kuT2JqZWN0CiAKICAgICB0YXJnZXRDcmVhdGVkKHBhcmVudFRhcmdldCwgdGFyZ2V0SW5m
bykKICAgICB7Ci0gICAgICAgIHRoaXMuX2Nvbm5lY3RUb1RhcmdldChwYXJlbnRUYXJnZXQsIHRh
cmdldEluZm8pOwotCi0gICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLlRh
cmdldE1hbmFnZXIuRXZlbnQuVGFyZ2V0Q3JlYXRlZCwge3RhcmdldEluZm99KTsKKyAgICAgICAg
bGV0IGNvbm5lY3Rpb24gPSBuZXcgSW5zcGVjdG9yQmFja2VuZC5UYXJnZXRDb25uZWN0aW9uKHBh
cmVudFRhcmdldCwgdGFyZ2V0SW5mby50YXJnZXRJZCk7CisgICAgICAgIGxldCBzdWJUYXJnZXQg
PSB0aGlzLl9jcmVhdGVUYXJnZXQocGFyZW50VGFyZ2V0LCB0YXJnZXRJbmZvLCBjb25uZWN0aW9u
KTsKKyAgICAgICAgdGhpcy5fY2hlY2tBbmRIYW5kbGVQYWdlVGFyZ2V0VHJhbnNpdGlvbihzdWJU
YXJnZXQpOworICAgICAgICBzdWJUYXJnZXQuaW5pdGlhbGl6ZSgpOworICAgICAgICB0aGlzLmFk
ZFRhcmdldChzdWJUYXJnZXQpOwogICAgIH0KIAogICAgIGRpZENvbW1pdFByb3Zpc2lvbmFsVGFy
Z2V0KHBhcmVudFRhcmdldCwgcHJldmlvdXNUYXJnZXRJZCwgbmV3VGFyZ2V0SWQpCiAgICAgewot
ICAgICAgICB0aGlzLl9kZXN0cm95VGFyZ2V0KHByZXZpb3VzVGFyZ2V0SWQpOwotICAgICAgICBs
ZXQgdGFyZ2V0SW5mbyA9IHRoaXMuX3Byb3Zpc2lvbmFsVGFyZ2V0SW5mb3MuZ2V0KG5ld1Rhcmdl
dElkKTsKLSAgICAgICAgY29uc29sZS5hc3NlcnQodGFyZ2V0SW5mbyk7Ci0gICAgICAgIHRhcmdl
dEluZm8uaXNQcm92aXNpb25hbCA9IGZhbHNlOwotICAgICAgICB0aGlzLl9wcm92aXNpb25hbFRh
cmdldEluZm9zLmRlbGV0ZShuZXdUYXJnZXRJZCk7Ci0gICAgICAgIHRoaXMuX2Nvbm5lY3RUb1Rh
cmdldChwYXJlbnRUYXJnZXQsIHRhcmdldEluZm8pOwotICAgICAgICBjb25zb2xlLmFzc2VydCgh
dGhpcy5fc3dhcHBlZFRhcmdldElkcy5oYXMocHJldmlvdXNUYXJnZXRJZCkpOwotICAgICAgICB0
aGlzLl9zd2FwcGVkVGFyZ2V0SWRzLmFkZChwcmV2aW91c1RhcmdldElkKTsKLQotICAgICAgICB0
aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5UYXJnZXRNYW5hZ2VyLkV2ZW50LkRpZENv
bW1pdFByb3Zpc2lvbmFsVGFyZ2V0LCB7cHJldmlvdXNUYXJnZXRJZCwgdGFyZ2V0SW5mb30pOwor
ICAgICAgICB0aGlzLnRhcmdldERlc3Ryb3llZChwcmV2aW91c1RhcmdldElkKTsKKyAgICAgICAg
bGV0IHRhcmdldCA9IHRoaXMuX3RhcmdldHMuZ2V0KG5ld1RhcmdldElkKTsKKyAgICAgICAgY29u
c29sZS5hc3NlcnQodGFyZ2V0KTsKKyAgICAgICAgaWYgKCF0YXJnZXQpCisgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgdGFyZ2V0LmRpZENvbW1pdFByb3Zpc2lvbmFsVGFyZ2V0KCk7Cisg
ICAgICAgIHRoaXMuX2NoZWNrQW5kSGFuZGxlUGFnZVRhcmdldFRyYW5zaXRpb24odGFyZ2V0KTsK
KyAgICAgICAgdGFyZ2V0LmNvbm5lY3Rpb24uZGlzcGF0Y2hQcm92aXNpb25hbE1lc3NhZ2VzKCk7
CisKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuVGFyZ2V0TWFuYWdl
ci5FdmVudC5EaWRDb21taXRQcm92aXNpb25hbFRhcmdldCwge3ByZXZpb3VzVGFyZ2V0SWQsIHRh
cmdldH0pOwogICAgIH0KIAogICAgIHRhcmdldERlc3Ryb3llZCh0YXJnZXRJZCkKICAgICB7Ci0g
ICAgICAgIHRoaXMuX2Rlc3Ryb3lUYXJnZXQodGFyZ2V0SWQpOworICAgICAgICBsZXQgdGFyZ2V0
ID0gdGhpcy5fdGFyZ2V0cy5nZXQodGFyZ2V0SWQpOworICAgICAgICBpZiAoIXRhcmdldCkKKyAg
ICAgICAgICAgIHJldHVybjsKIAotICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVy
cyhXSS5UYXJnZXRNYW5hZ2VyLkV2ZW50LlRhcmdldERlc3Ryb3llZCwge3RhcmdldElkfSk7Cisg
ICAgICAgIHRoaXMuX2NoZWNrQW5kSGFuZGxlUGFnZVRhcmdldFRlcm1pbmF0aW9uKHRhcmdldCk7
CisgICAgICAgIHRoaXMucmVtb3ZlVGFyZ2V0KHRhcmdldCk7CiAgICAgfQogCiAgICAgZGlzcGF0
Y2hNZXNzYWdlRnJvbVRhcmdldCh0YXJnZXRJZCwgbWVzc2FnZSkKICAgICB7Ci0gICAgICAgIGlm
ICh0aGlzLl9wcm92aXNpb25hbFRhcmdldEluZm9zLmhhcyh0YXJnZXRJZCkpCi0gICAgICAgICAg
ICByZXR1cm47Ci0KICAgICAgICAgbGV0IHRhcmdldCA9IHRoaXMuX3RhcmdldHMuZ2V0KHRhcmdl
dElkKTsKICAgICAgICAgY29uc29sZS5hc3NlcnQodGFyZ2V0KTsKICAgICAgICAgaWYgKCF0YXJn
ZXQpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgdGFyZ2V0LmNvbm5lY3Rpb24uZGlz
cGF0Y2gobWVzc2FnZSk7CisgICAgICAgIGlmICh0YXJnZXQuaXNQcm92aXNpb25hbCkKKyAgICAg
ICAgICAgIHRhcmdldC5jb25uZWN0aW9uLmFkZFByb3Zpc2lvbmFsTWVzc2FnZShtZXNzYWdlKTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgdGFyZ2V0LmNvbm5lY3Rpb24uZGlzcGF0Y2gobWVz
c2FnZSk7CiAgICAgfQogCiAgICAgLy8gUHJpdmF0ZQogCi0gICAgX2Nvbm5lY3RUb1RhcmdldChw
YXJlbnRUYXJnZXQsIHRhcmdldEluZm8pCi0gICAgewotICAgICAgICBjb25zb2xlLmFzc2VydCgh
dGhpcy5fcHJvdmlzaW9uYWxUYXJnZXRJbmZvcy5oYXModGFyZ2V0SW5mby50YXJnZXRJZCkpOwot
Ci0gICAgICAgIC8vIENPTVBBVElCSUxJVFkgKGlPUyAxMy4wKTogYFRhcmdldC5UYXJnZXRJbmZv
LmlzUHJvdmlzaW9uYWxgIGRpZCBub3QgZXhpc3QgeWV0LgotICAgICAgICBpZiAodGFyZ2V0SW5m
by5pc1Byb3Zpc2lvbmFsKSB7Ci0gICAgICAgICAgICB0aGlzLl9wcm92aXNpb25hbFRhcmdldElu
Zm9zLnNldCh0YXJnZXRJbmZvLnRhcmdldElkLCB0YXJnZXRJbmZvKTsKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KHBhcmVudFRhcmdldC5o
YXNDb21tYW5kKCJUYXJnZXQuc2VuZE1lc3NhZ2VUb1RhcmdldCIpKTsKLSAgICAgICAgbGV0IGNv
bm5lY3Rpb24gPSBuZXcgSW5zcGVjdG9yQmFja2VuZC5UYXJnZXRDb25uZWN0aW9uOwotICAgICAg
ICBsZXQgc3ViVGFyZ2V0ID0gdGhpcy5fY3JlYXRlVGFyZ2V0KHBhcmVudFRhcmdldCwgdGFyZ2V0
SW5mbywgY29ubmVjdGlvbik7Ci0gICAgICAgIHRoaXMuX2NoZWNrQW5kSGFuZGxlUGFnZVRhcmdl
dFRyYW5zaXRpb24oc3ViVGFyZ2V0KTsKLSAgICAgICAgc3ViVGFyZ2V0LmluaXRpYWxpemUoKTsK
LQotICAgICAgICB0aGlzLmFkZFRhcmdldChzdWJUYXJnZXQpOwotICAgIH0KLQotICAgIF9kZXN0
cm95VGFyZ2V0KHRhcmdldElkKQotICAgIHsKLSAgICAgICAgaWYgKHRoaXMuX3Byb3Zpc2lvbmFs
VGFyZ2V0SW5mb3MuZGVsZXRlKHRhcmdldElkKSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAg
ICAgICBpZiAodGhpcy5fc3dhcHBlZFRhcmdldElkcy5kZWxldGUodGFyZ2V0SWQpKQotICAgICAg
ICAgICAgcmV0dXJuOwotCi0gICAgICAgIGxldCB0YXJnZXQgPSB0aGlzLl90YXJnZXRzLmdldCh0
YXJnZXRJZCk7Ci0gICAgICAgIHRoaXMuX2NoZWNrQW5kSGFuZGxlUGFnZVRhcmdldFRlcm1pbmF0
aW9uKHRhcmdldCk7Ci0gICAgICAgIHRoaXMucmVtb3ZlVGFyZ2V0KHRhcmdldCk7Ci0gICAgfQot
CiAgICAgX2NyZWF0ZVRhcmdldChwYXJlbnRUYXJnZXQsIHRhcmdldEluZm8sIGNvbm5lY3Rpb24p
CiAgICAgewotICAgICAgICBsZXQge3RhcmdldElkLCB0eXBlfSA9IHRhcmdldEluZm87CisgICAg
ICAgIC8vIENPTVBBVElCSUxJVFkgKGlPUyAxMy4wKTogYFRhcmdldC5UYXJnZXRJbmZvLmlzUHJv
dmlzaW9uYWxgIGFuZCBgVGFyZ2V0LlRhcmdldEluZm8uaXNQYXVzZWRgIGRpZCBub3QgZXhpc3Qg
eWV0LgorICAgICAgICBsZXQge3RhcmdldElkLCB0eXBlLCBpc1Byb3Zpc2lvbmFsLCBpc1BhdXNl
ZH0gPSB0YXJnZXRJbmZvOwogCiAgICAgICAgIHN3aXRjaCAodHlwZSkgewogICAgICAgICBjYXNl
IEluc3BlY3RvckJhY2tlbmQuRW51bS5UYXJnZXQuVGFyZ2V0SW5mb1R5cGUuUGFnZToKLSAgICAg
ICAgICAgIHJldHVybiBuZXcgV0kuUGFnZVRhcmdldChwYXJlbnRUYXJnZXQsIHRhcmdldElkLCBX
SS5VSVN0cmluZygiUGFnZSIpLCBjb25uZWN0aW9uKTsKKyAgICAgICAgICAgIHJldHVybiBuZXcg
V0kuUGFnZVRhcmdldChwYXJlbnRUYXJnZXQsIHRhcmdldElkLCBXSS5VSVN0cmluZygiUGFnZSIp
LCBjb25uZWN0aW9uLCB7aXNQcm92aXNpb25hbCwgaXNQYXVzZWR9KTsKICAgICAgICAgY2FzZSBJ
bnNwZWN0b3JCYWNrZW5kLkVudW0uVGFyZ2V0LlRhcmdldEluZm9UeXBlLldvcmtlcjoKLSAgICAg
ICAgICAgIHJldHVybiBuZXcgV0kuV29ya2VyVGFyZ2V0KHBhcmVudFRhcmdldCwgdGFyZ2V0SWQs
IFdJLlVJU3RyaW5nKCJXb3JrZXIiKSwgY29ubmVjdGlvbik7CisgICAgICAgICAgICByZXR1cm4g
bmV3IFdJLldvcmtlclRhcmdldChwYXJlbnRUYXJnZXQsIHRhcmdldElkLCBXSS5VSVN0cmluZygi
V29ya2VyIiksIGNvbm5lY3Rpb24sIHtpc1BhdXNlZH0pOwogICAgICAgICBjYXNlICJzZXJ2aWNl
d29ya2VyIjogLy8gQ09NUEFUSUJJTElUWSAoaU9TIDEzKTogInNlcnZpY2V3b3JrZXIiIHdhcyBy
ZW5hbWVkIHRvICJzZXJ2aWNlLXdvcmtlciIuCiAgICAgICAgIGNhc2UgSW5zcGVjdG9yQmFja2Vu
ZC5FbnVtLlRhcmdldC5UYXJnZXRJbmZvVHlwZS5TZXJ2aWNlV29ya2VyOgotICAgICAgICAgICAg
cmV0dXJuIG5ldyBXSS5Xb3JrZXJUYXJnZXQocGFyZW50VGFyZ2V0LCB0YXJnZXRJZCwgV0kuVUlT
dHJpbmcoIlNlcnZpY2VXb3JrZXIiKSwgY29ubmVjdGlvbik7CisgICAgICAgICAgICByZXR1cm4g
bmV3IFdJLldvcmtlclRhcmdldChwYXJlbnRUYXJnZXQsIHRhcmdldElkLCBXSS5VSVN0cmluZygi
U2VydmljZVdvcmtlciIpLCBjb25uZWN0aW9uLCB7aXNQYXVzZWR9KTsKICAgICAgICAgfQogCiAg
ICAgICAgIHRocm93ICJVbmtub3duIFRhcmdldCB0eXBlOiAiICsgdHlwZTsKQEAgLTIxNSw2ICsx
ODcsOSBAQCBXSS5UYXJnZXRNYW5hZ2VyID0gY2xhc3MgVGFyZ2V0TWFuYWdlciBleHRlbmRzIFdJ
Lk9iamVjdAogICAgICAgICBpZiAodGFyZ2V0LnR5cGUgIT09IFdJLlRhcmdldFR5cGUuUGFnZSkK
ICAgICAgICAgICAgIHJldHVybjsKIAorICAgICAgICBpZiAodGFyZ2V0LmlzUHJvdmlzaW9uYWwp
CisgICAgICAgICAgICByZXR1cm47CisKICAgICAgICAgLy8gRmlyc3QgcGFnZSB0YXJnZXQuCiAg
ICAgICAgIGlmICghV0kucGFnZVRhcmdldCAmJiAhdGhpcy5fc2VlblBhZ2VUYXJnZXQpIHsKICAg
ICAgICAgICAgIHRoaXMuX3NlZW5QYWdlVGFyZ2V0ID0gdHJ1ZTsKQEAgLTIzMSw2ICsyMDYsOSBA
QCBXSS5UYXJnZXRNYW5hZ2VyID0gY2xhc3MgVGFyZ2V0TWFuYWdlciBleHRlbmRzIFdJLk9iamVj
dAogICAgICAgICBpZiAodGFyZ2V0LnR5cGUgIT09IFdJLlRhcmdldFR5cGUuUGFnZSkKICAgICAg
ICAgICAgIHJldHVybjsKIAorICAgICAgICBpZiAodGFyZ2V0LmlzUHJvdmlzaW9uYWwpCisgICAg
ICAgICAgICByZXR1cm47CisKICAgICAgICAgY29uc29sZS5hc3NlcnQodGFyZ2V0ID09PSBXSS5w
YWdlVGFyZ2V0KTsKICAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fc2VlblBhZ2VUYXJnZXQp
OwogCkBAIC0zMTcsOCArMjk1LDUgQEAgV0kuVGFyZ2V0TWFuYWdlciA9IGNsYXNzIFRhcmdldE1h
bmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKIFdJLlRhcmdldE1hbmFnZXIuRXZlbnQgPSB7CiAgICAg
VGFyZ2V0QWRkZWQ6IFN5bWJvbCgidGFyZ2V0LW1hbmFnZXItdGFyZ2V0LWFkZGVkIiksCiAgICAg
VGFyZ2V0UmVtb3ZlZDogU3ltYm9sKCJ0YXJnZXQtbWFuYWdlci10YXJnZXQtcmVtb3ZlZCIpLAot
Ci0gICAgVGFyZ2V0Q3JlYXRlZDogInRhcmdldC1tYW5hZ2VyLXRhcmdldC1jcmVhdGVkIiwKICAg
ICBEaWRDb21taXRQcm92aXNpb25hbFRhcmdldDogInRhcmdldC1tYW5hZ2VyLXByb3Zpc2lvbmFs
LXRhcmdldC1jb21taXR0ZWQiLAotICAgIFRhcmdldERlc3Ryb3llZDogInRhcmdldC1tYW5hZ2Vy
LXRhcmdldC1kZXRyb3llZCIsCiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvQ29ubmVjdGlvbi5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0Nvbm5lY3Rpb24uanMKaW5kZXggOWJlY2JkMDZh
OWQ1YjI1OGY3YTUwNmRjYTIwZTk0NDMzM2M4YWJhNi4uMWJhNWM5OTI5OTUwNDA4YmRmNTZkMGJk
Y2I4NWFkOTlkODUyMjBkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvUHJvdG9jb2wvQ29ubmVjdGlvbi5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9Db25uZWN0aW9uLmpzCkBAIC0zOSw2ICszOSw3IEBA
IEluc3BlY3RvckJhY2tlbmQuQ29ubmVjdGlvbiA9IGNsYXNzIEluc3BlY3RvckJhY2tlbmRDb25u
ZWN0aW9uCiAgICAgICAgIHRoaXMuX3BlbmRpbmdSZXNwb25zZXMgPSBuZXcgTWFwOwogICAgICAg
ICB0aGlzLl9kZWZlcnJlZENhbGxiYWNrcyA9IFtdOwogICAgICAgICB0aGlzLl90YXJnZXQgPSBu
dWxsOworICAgICAgICB0aGlzLl9wcm92aXNpb25hbE1lc3NhZ2VzID0gW107CiAgICAgfQogCiAg
ICAgLy8gUHVibGljCkBAIC01NCw2ICs1NSwyMCBAQCBJbnNwZWN0b3JCYWNrZW5kLkNvbm5lY3Rp
b24gPSBjbGFzcyBJbnNwZWN0b3JCYWNrZW5kQ29ubmVjdGlvbgogICAgICAgICB0aGlzLl90YXJn
ZXQgPSB0YXJnZXQ7CiAgICAgfQogCisgICAgYWRkUHJvdmlzaW9uYWxNZXNzYWdlKG1lc3NhZ2Up
CisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLnRhcmdldCAmJiB0aGlzLnRhcmdl
dC5pc1Byb3Zpc2lvbmFsKTsKKyAgICAgICAgdGhpcy5fcHJvdmlzaW9uYWxNZXNzYWdlcy5wdXNo
KG1lc3NhZ2UpOworICAgIH0KKworICAgIGRpc3BhdGNoUHJvdmlzaW9uYWxNZXNzYWdlcygpCisg
ICAgeworICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLnRhcmdldCAmJiAhdGhpcy50YXJnZXQu
aXNQcm92aXNpb25hbCk7CisgICAgICAgIGZvciAobGV0IG1lc3NhZ2Ugb2YgdGhpcy5fcHJvdmlz
aW9uYWxNZXNzYWdlcykKKyAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2gobWVzc2FnZSk7CisgICAg
ICAgIHRoaXMuX3Byb3Zpc2lvbmFsTWVzc2FnZXMgPSBbXTsKKyAgICB9CisKICAgICBkaXNwYXRj
aChtZXNzYWdlKQogICAgIHsKICAgICAgICAgbGV0IG1lc3NhZ2VPYmplY3QgPSB0eXBlb2YgbWVz
c2FnZSA9PT0gInN0cmluZyIgPyBKU09OLnBhcnNlKG1lc3NhZ2UpIDogbWVzc2FnZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL011bHRp
cGxleGluZ0JhY2tlbmRUYXJnZXQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Qcm90b2NvbC9NdWx0aXBsZXhpbmdCYWNrZW5kVGFyZ2V0LmpzCmluZGV4IGFhYjBjZTkx
NTU1NWIzNjBhNmQ0MGMzMzUyZWUwZGY2ODhhYmUzYzcuLjc5MzcwOWViZTVkOTg1MmUyMzQ4ZWE0
OWQ1Yjk3ZThkNDdhNjlmNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1Byb3RvY29sL011bHRpcGxleGluZ0JhY2tlbmRUYXJnZXQuanMKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvTXVsdGlwbGV4aW5nQmFj
a2VuZFRhcmdldC5qcwpAQCAtNDMsOCArNDMsMTEgQEAgV0kuTXVsdGlwbGV4aW5nQmFja2VuZFRh
cmdldCA9IGNsYXNzIE11bHRpcGxleGluZ0JhY2tlbmRUYXJnZXQgZXh0ZW5kcyBXSS5UYXJnZXQK
IAogICAgIGluaXRpYWxpemUoKQogICAgIHsKLSAgICAgICAgLy8gSW50ZW50aW9uYWxseSBkbyBu
b3RoaW5nLCBpbmNsdWRpbmcgbm90IGNhbGxpbmcgc3VwZXIuCi0gICAgICAgIC8vIE5vIGFnZW50
cyBvdGhlciB0aGFuIHRoZSBUYXJnZXRBZ2VudCwgbm90aGluZyB0byBpbml0aWFsaXplLgorICAg
ICAgICAvLyBJbnRlbnRpb25hbGx5IG5vdCBjYWxsaW5nIHN1cGVyLiBObyBhZ2VudHMgb3RoZXIg
dGhhbiB0aGUgVGFyZ2V0QWdlbnQuCisKKyAgICAgICAgLy8gQ09NUEFUSUJJTElUWSAoaU9TIDEz
KTogVGFyZ2V0LnNldFBhdXNlT25TdGFydCBkaWQgbm90IGV4aXN0IHlldC4KKyAgICAgICAgaWYg
KHRoaXMuaGFzQ29tbWFuZCgiVGFyZ2V0LnNldFBhdXNlT25TdGFydCIpKQorICAgICAgICAgICAg
dGhpcy5UYXJnZXRBZ2VudC5zZXRQYXVzZU9uU3RhcnQodHJ1ZSk7CiAgICAgfQogCiAgICAgLy8g
UHJvdGVjdGVkIChUYXJnZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Qcm90b2NvbC9QYWdlVGFyZ2V0LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvUGFnZVRhcmdldC5qcwppbmRleCBmMzM0YzA4MDg0YzA3
MDY1MmFhMGRlYzQyMTBhN2NhMWE1N2E4MzRhLi5kMzg3NjYxNTQzNGQxMGM4MjA1MDc5ODdmN2E0
MmNlODZjMDI5YTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Qcm90b2NvbC9QYWdlVGFyZ2V0LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1Byb3RvY29sL1BhZ2VUYXJnZXQuanMKQEAgLTI1LDkgKzI1LDkgQEAKIAog
V0kuUGFnZVRhcmdldCA9IGNsYXNzIFBhZ2VUYXJnZXQgZXh0ZW5kcyBXSS5UYXJnZXQKIHsKLSAg
ICBjb25zdHJ1Y3RvcihwYXJlbnRUYXJnZXQsIHRhcmdldElkLCBuYW1lLCBjb25uZWN0aW9uKQor
ICAgIGNvbnN0cnVjdG9yKHBhcmVudFRhcmdldCwgdGFyZ2V0SWQsIG5hbWUsIGNvbm5lY3Rpb24s
IG9wdGlvbnMgPSB7fSkKICAgICB7Ci0gICAgICAgIHN1cGVyKHBhcmVudFRhcmdldCwgdGFyZ2V0
SWQsIG5hbWUsIFdJLlRhcmdldFR5cGUuUGFnZSwgY29ubmVjdGlvbik7CisgICAgICAgIHN1cGVy
KHBhcmVudFRhcmdldCwgdGFyZ2V0SWQsIG5hbWUsIFdJLlRhcmdldFR5cGUuUGFnZSwgY29ubmVj
dGlvbiwgb3B0aW9ucyk7CiAKICAgICAgICAgY29uc3QgaXNQYWdlQ29udGV4dCA9IHRydWU7CiAg
ICAgICAgIHRoaXMuX2V4ZWN1dGlvbkNvbnRleHQgPSBuZXcgV0kuRXhlY3V0aW9uQ29udGV4dCh0
aGlzLCBXSS5SdW50aW1lTWFuYWdlci5Ub3BMZXZlbENvbnRleHRFeGVjdXRpb25JZGVudGlmaWVy
LCB0aGlzLmRpc3BsYXlOYW1lLCBpc1BhZ2VDb250ZXh0LCBudWxsKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL1RhcmdldC5qcyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL1RhcmdldC5qcwppbmRl
eCAwYTMwZGZmNGZhZWRhMjk5ZGQwNGZmZjA0M2JiNzU3NWZiMzYxODlhLi5jYTM4NWZlMjhiMWJl
ZmJhODRjNDY5Yzg3NTg5MjFkN2ZmYjBhMzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9UYXJnZXQuanMKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvVGFyZ2V0LmpzCkBAIC0yNSw5ICsyNSwx
MCBAQAogCiBXSS5UYXJnZXQgPSBjbGFzcyBUYXJnZXQgZXh0ZW5kcyBXSS5PYmplY3QKIHsKLSAg
ICBjb25zdHJ1Y3RvcihwYXJlbnRUYXJnZXQsIGlkZW50aWZpZXIsIG5hbWUsIHR5cGUsIGNvbm5l
Y3Rpb24pCisgICAgY29uc3RydWN0b3IocGFyZW50VGFyZ2V0LCBpZGVudGlmaWVyLCBuYW1lLCB0
eXBlLCBjb25uZWN0aW9uLCB7aXNQYXVzZWQsIGlzUHJvdmlzaW9uYWx9ID0ge30pCiAgICAgewog
ICAgICAgICBjb25zb2xlLmFzc2VydChwYXJlbnRUYXJnZXQgPT09IG51bGwgfHwgcGFyZW50VGFy
Z2V0IGluc3RhbmNlb2YgV0kuVGFyZ2V0KTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoIWlzUGF1
c2VkIHx8IHBhcmVudFRhcmdldC5oYXNDb21tYW5kKCJUYXJnZXQuc2V0UGF1c2VPblN0YXJ0Iikp
OwogICAgICAgICBzdXBlcigpOwogCiAgICAgICAgIHRoaXMuX3BhcmVudFRhcmdldCA9IHBhcmVu
dFRhcmdldDsKQEAgLTM1LDYgKzM2LDggQEAgV0kuVGFyZ2V0ID0gY2xhc3MgVGFyZ2V0IGV4dGVu
ZHMgV0kuT2JqZWN0CiAgICAgICAgIHRoaXMuX25hbWUgPSBuYW1lOwogICAgICAgICB0aGlzLl90
eXBlID0gdHlwZTsKICAgICAgICAgdGhpcy5fY29ubmVjdGlvbiA9IGNvbm5lY3Rpb247CisgICAg
ICAgIHRoaXMuX2lzUGF1c2VkID0gISFpc1BhdXNlZDsKKyAgICAgICAgdGhpcy5faXNQcm92aXNp
b25hbCA9ICEhaXNQcm92aXNpb25hbDsKICAgICAgICAgdGhpcy5fZXhlY3V0aW9uQ29udGV4dCA9
IG51bGw7CiAgICAgICAgIHRoaXMuX21haW5SZXNvdXJjZSA9IG51bGw7CiAgICAgICAgIHRoaXMu
X3Jlc291cmNlQ29sbGVjdGlvbiA9IG5ldyBXSS5SZXNvdXJjZUNvbGxlY3Rpb247CkBAIC05Niw2
ICs5OSwyMCBAQCBXSS5UYXJnZXQgPSBjbGFzcyBUYXJnZXQgZXh0ZW5kcyBXSS5PYmplY3QKICAg
ICAgICAgICAgIGlmICh0aGlzLmhhc0NvbW1hbmQoIkluc3BlY3Rvci5pbml0aWFsaXplZCIpKQog
ICAgICAgICAgICAgICAgIHRoaXMuSW5zcGVjdG9yQWdlbnQuaW5pdGlhbGl6ZWQoKTsKICAgICAg
ICAgfSk7CisKKyAgICAgICAgaWYgKHRoaXMuX2lzUGF1c2VkKSB7CisgICAgICAgICAgICBjb25z
b2xlLmFzc2VydCh0aGlzLl9wYXJlbnRUYXJnZXQuaGFzQ29tbWFuZCgiVGFyZ2V0LnJlc3VtZSIp
KTsKKyAgICAgICAgICAgIHRoaXMuX3BhcmVudFRhcmdldC5UYXJnZXRBZ2VudC5yZXN1bWUodGhp
cy5faWRlbnRpZmllciwgKGVycm9yKSA9PiB7CisgICAgICAgICAgICAgICAgaWYgKGVycm9yKSB7
CisgICAgICAgICAgICAgICAgICAgIC8vIElnbm9yZSBlcnJvcnMgaWYgdGhlIHRhcmdldCB3YXMg
ZGVzdHJveWVkIGFmdGVyIHRoZSBjb21tYW5kIHdhcyBzZW50LgorICAgICAgICAgICAgICAgICAg
ICBpZiAoIXRoaXMuaXNEZXN0cm95ZWQpCisgICAgICAgICAgICAgICAgICAgICAgICBXSS5yZXBv
cnRJbnRlcm5hbEVycm9yKGVycm9yKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHRoaXMuX2lzUGF1c2VkID0gZmFsc2U7
CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIGFjdGl2YXRlRXh0cmFE
b21haW4oZG9tYWluTmFtZSkKQEAgLTE3Niw2ICsxOTMsOCBAQCBXSS5UYXJnZXQgPSBjbGFzcyBU
YXJnZXQgZXh0ZW5kcyBXSS5PYmplY3QKICAgICBnZXQgcmVzb3VyY2VDb2xsZWN0aW9uKCkgeyBy
ZXR1cm4gdGhpcy5fcmVzb3VyY2VDb2xsZWN0aW9uOyB9CiAgICAgZ2V0IGV4dHJhU2NyaXB0Q29s
bGVjdGlvbigpIHsgcmV0dXJuIHRoaXMuX2V4dHJhU2NyaXB0Q29sbGVjdGlvbjsgfQogCisgICAg
Z2V0IGlzUHJvdmlzaW9uYWwoKSB7IHJldHVybiB0aGlzLl9pc1Byb3Zpc2lvbmFsOyB9CisgICAg
Z2V0IGlzUGF1c2VkKCkgeyByZXR1cm4gdGhpcy5faXNQYXVzZWQ7IH0KICAgICBnZXQgaXNEZXN0
cm95ZWQoKSB7IHJldHVybiB0aGlzLl9pc0Rlc3Ryb3llZDsgfQogCiAgICAgZ2V0IGRpc3BsYXlO
YW1lKCkgeyByZXR1cm4gdGhpcy5fbmFtZTsgfQpAQCAtMjE1LDYgKzIzNCwxMiBAQCBXSS5UYXJn
ZXQgPSBjbGFzcyBUYXJnZXQgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgdGhpcy5kaXNwYXRj
aEV2ZW50VG9MaXN0ZW5lcnMoV0kuVGFyZ2V0LkV2ZW50LlNjcmlwdEFkZGVkLCB7c2NyaXB0fSk7
CiAgICAgfQogCisgICAgZGlkQ29tbWl0UHJvdmlzaW9uYWxUYXJnZXQoKQorICAgIHsKKyAgICAg
ICAgY29uc29sZS5hc3NlcnQodGhpcy5faXNQcm92aXNpb25hbCk7CisgICAgICAgIHRoaXMuX2lz
UHJvdmlzaW9uYWwgPSBmYWxzZTsKKyAgICB9CisKICAgICBkZXN0cm95KCkKICAgICB7CiAgICAg
ICAgIHRoaXMuX2lzRGVzdHJveWVkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL1dvcmtlclRhcmdldC5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL1dvcmtlclRhcmdldC5qcwppbmRl
eCA4M2M3MDkyYTU4NzI4ZjJhNzNkOGE5ZDRjZTUyYTFhMWFkN2IyODU5Li4yYzVhMDEyZWIzYmNk
M2NlYzAyNjRhODU0YWQ5Mjc2Y2VhMzlhMGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9Xb3JrZXJUYXJnZXQuanMKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvV29ya2VyVGFyZ2V0LmpzCkBA
IC0yNSw5ICsyNSw5IEBACiAKIFdJLldvcmtlclRhcmdldCA9IGNsYXNzIFdvcmtlclRhcmdldCBl
eHRlbmRzIFdJLlRhcmdldAogewotICAgIGNvbnN0cnVjdG9yKHBhcmVudFRhcmdldCwgd29ya2Vy
SWQsIG5hbWUsIGNvbm5lY3Rpb24pCisgICAgY29uc3RydWN0b3IocGFyZW50VGFyZ2V0LCB3b3Jr
ZXJJZCwgbmFtZSwgY29ubmVjdGlvbiwgb3B0aW9ucyA9IHt9KQogICAgIHsKLSAgICAgICAgc3Vw
ZXIocGFyZW50VGFyZ2V0LCB3b3JrZXJJZCwgbmFtZSwgV0kuVGFyZ2V0VHlwZS5Xb3JrZXIsIGNv
bm5lY3Rpb24pOworICAgICAgICBzdXBlcihwYXJlbnRUYXJnZXQsIHdvcmtlcklkLCBuYW1lLCBX
SS5UYXJnZXRUeXBlLldvcmtlciwgY29ubmVjdGlvbiwgb3B0aW9ucyk7CiAKICAgICAgICAgY29u
c3QgaXNQYWdlQ29udGV4dCA9IGZhbHNlOwogICAgICAgICB0aGlzLl9leGVjdXRpb25Db250ZXh0
ID0gbmV3IFdJLkV4ZWN1dGlvbkNvbnRleHQodGhpcywgV0kuUnVudGltZU1hbmFnZXIuVG9wTGV2
ZWxDb250ZXh0RXhlY3V0aW9uSWRlbnRpZmllciwgdGhpcy5kaXNwbGF5TmFtZSwgaXNQYWdlQ29u
dGV4dCwgbnVsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0
b3JUYXJnZXRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3JUYXJn
ZXRQcm94eS5jcHAKaW5kZXggMWIzN2MxZWQ0Mzk1YTE3YzU4M2JhMmQ3ODYyMTljOTBjNzQ0MDE2
ZS4uNTVjODE3M2FiMjQwM2RkZWIwNjUwMjUxYjdiYjY3NjJhNmRlMDMyZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yVGFyZ2V0UHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3RvclRhcmdldFByb3h5LmNwcApAQCAtNjksNiAr
NjksOSBAQCB2b2lkIEluc3BlY3RvclRhcmdldFByb3h5Ojpjb25uZWN0KEluc3BlY3Rvcjo6RnJv
bnRlbmRDaGFubmVsOjpDb25uZWN0aW9uVHlwZSBjbwogCiB2b2lkIEluc3BlY3RvclRhcmdldFBy
b3h5OjpkaXNjb25uZWN0KCkKIHsKKyAgICBpZiAoaXNQYXVzZWQoKSkKKyAgICAgICAgcmVzdW1l
KCk7CisKICAgICBpZiAobV9wcm92aXNpb25hbFBhZ2UpIHsKICAgICAgICAgbV9wcm92aXNpb25h
bFBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaXNjb25uZWN0SW5zcGVj
dG9yKGlkZW50aWZpZXIoKSksIG1fcHJvdmlzaW9uYWxQYWdlLT53ZWJQYWdlSUQoKSk7CiAgICAg
ICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VJ
bnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VJ
bnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCBiOWE5NDY5YWI1OTEzNmY5ZTlhMzczNmJmZGIw
ZTlkNTI5YzBmYmNlLi4xZWUyOGJmNzE2Mzc0MzcxNDMzMjE1MTQ4YWEyMGE1MTkyN2E4YTMzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlSW5zcGVjdG9yQ29udHJv
bGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZUluc3BlY3RvckNv
bnRyb2xsZXIuY3BwCkBAIC0xNjcsNiArMTY3LDIzIEBAIHZvaWQgV2ViUGFnZUluc3BlY3RvckNv
bnRyb2xsZXI6OnNlbmRNZXNzYWdlVG9JbnNwZWN0b3JGcm9udGVuZChjb25zdCBTdHJpbmcmIHRh
CiAgICAgbV90YXJnZXRBZ2VudC0+c2VuZE1lc3NhZ2VGcm9tVGFyZ2V0VG9Gcm9udGVuZCh0YXJn
ZXRJZCwgbWVzc2FnZSk7CiB9CiAKK2Jvb2wgV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXI6OnNo
b3VsZFBhdXNlTG9hZGluZyhjb25zdCBQcm92aXNpb25hbFBhZ2VQcm94eSYgcHJvdmlzaW9uYWxQ
YWdlKSBjb25zdAoreworICAgIGlmICghbV9mcm9udGVuZFJvdXRlci0+aGFzRnJvbnRlbmRzKCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1dG8qIHRhcmdldCA9IG1fdGFyZ2V0cy5n
ZXQoZ2V0VGFyZ2V0SUQocHJvdmlzaW9uYWxQYWdlKSk7CisgICAgQVNTRVJUKHRhcmdldCk7Cisg
ICAgcmV0dXJuIHRhcmdldC0+aXNQYXVzZWQoKTsKK30KKwordm9pZCBXZWJQYWdlSW5zcGVjdG9y
Q29udHJvbGxlcjo6c2V0Q29udGludWVMb2FkaW5nQ2FsbGJhY2soY29uc3QgUHJvdmlzaW9uYWxQ
YWdlUHJveHkmIHByb3Zpc2lvbmFsUGFnZSwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY2FsbGJh
Y2spCit7CisgICAgYXV0byogdGFyZ2V0ID0gbV90YXJnZXRzLmdldChnZXRUYXJnZXRJRChwcm92
aXNpb25hbFBhZ2UpKTsKKyAgICBBU1NFUlQodGFyZ2V0KTsKKyAgICB0YXJnZXQtPnNldFJlc3Vt
ZUNhbGxiYWNrKFdURk1vdmUoY2FsbGJhY2spKTsKK30KKwogdm9pZCBXZWJQYWdlSW5zcGVjdG9y
Q29udHJvbGxlcjo6ZGlkQ3JlYXRlUHJvdmlzaW9uYWxQYWdlKFByb3Zpc2lvbmFsUGFnZVByb3h5
JiBwcm92aXNpb25hbFBhZ2UpCiB7CiAgICAgYWRkVGFyZ2V0KEluc3BlY3RvclRhcmdldFByb3h5
OjpjcmVhdGUocHJvdmlzaW9uYWxQYWdlLCBnZXRUYXJnZXRJRChwcm92aXNpb25hbFBhZ2UpLCBJ
bnNwZWN0b3I6Okluc3BlY3RvclRhcmdldFR5cGU6OlBhZ2UpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlci5oCmluZGV4IDgyOGJj
M2NjYzdlMDdkODEyMDMzNDMxYjI3YWU3ZjBiYzhjZjljNTQuLjc4Y2FlZGYwYzBjZTgzNjc1NTY5
NTAyZDE1MGZjYzQ0ZTVmOTg2OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIuaApAQCAtNjYsNiArNjYsOSBAQCBwdWJsaWM6
CiAgICAgdm9pZCBkZXN0cm95SW5zcGVjdG9yVGFyZ2V0KGNvbnN0IFN0cmluZyYgdGFyZ2V0SWQp
OwogICAgIHZvaWQgc2VuZE1lc3NhZ2VUb0luc3BlY3RvckZyb250ZW5kKGNvbnN0IFN0cmluZyYg
dGFyZ2V0SWQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CiAKKyAgICBib29sIHNob3VsZFBhdXNl
TG9hZGluZyhjb25zdCBQcm92aXNpb25hbFBhZ2VQcm94eSYpIGNvbnN0OworICAgIHZvaWQgc2V0
Q29udGludWVMb2FkaW5nQ2FsbGJhY2soY29uc3QgUHJvdmlzaW9uYWxQYWdlUHJveHkmLCBXVEY6
OkZ1bmN0aW9uPHZvaWQoKT4mJik7CisKICAgICB2b2lkIGRpZENyZWF0ZVByb3Zpc2lvbmFsUGFn
ZShQcm92aXNpb25hbFBhZ2VQcm94eSYpOwogICAgIHZvaWQgd2lsbERlc3Ryb3lQcm92aXNpb25h
bFBhZ2UoY29uc3QgUHJvdmlzaW9uYWxQYWdlUHJveHkmKTsKICAgICB2b2lkIGRpZENvbW1pdFBy
b3Zpc2lvbmFsUGFnZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBvbGRXZWJQYWdlSUQsIFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyIG5ld1dlYlBhZ2VJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcAppbmRleCA3YzVjYWQyM2RjYWE2OTU4MzM1ZjhiNDFlMjIwZmYwN2Nl
NjY4ZDE4Li5lZmM4MmU4NWE3ODVlZDViMjNhMWVkNjgyMzc1YTMwNTEzMmY4MzBiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTMwOTcsMjggKzMwOTcsMzQg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmNvbnRpbnVlTmF2aWdhdGlvbkluTmV3UHJvY2VzcyhBUEk6
Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIHMKIAogICAgIG1fcHJvdmlzaW9uYWxQYWdlID0gbWFr
ZVVuaXF1ZTxQcm92aXNpb25hbFBhZ2VQcm94eT4oKnRoaXMsIG5ld1Byb2Nlc3MuY29weVJlZigp
LCBXVEZNb3ZlKHN1c3BlbmRlZFBhZ2UpLCBuYXZpZ2F0aW9uLm5hdmlnYXRpb25JRCgpLCBuYXZp
Z2F0aW9uLmN1cnJlbnRSZXF1ZXN0SXNSZWRpcmVjdCgpLCBuYXZpZ2F0aW9uLmN1cnJlbnRSZXF1
ZXN0KCksIHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQpOwogCi0gICAgaWYgKGF1dG8qIGl0
ZW0gPSBuYXZpZ2F0aW9uLnRhcmdldEl0ZW0oKSkgewotICAgICAgICBMT0coTG9hZGluZywgIldl
YlBhZ2VQcm94eSAlcCBjb250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3MgdG8gYmFjayBpdGVt
IFVSTCAlcyIsIHRoaXMsIGl0ZW0tPnVybCgpLnV0ZjgoKS5kYXRhKCkpOworICAgIGF1dG8gY29u
dGludWF0aW9uID0gW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgbmF2aWdh
dGlvbiA9IG1ha2VSZWYobmF2aWdhdGlvbiksIG5ld1Byb2Nlc3MgPSBXVEZNb3ZlKG5ld1Byb2Nl
c3MpLCB3ZWJzaXRlUG9saWNpZXMgPSBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llcyldKCkgbXV0YWJs
ZSB7CisgICAgICAgIGlmIChhdXRvKiBpdGVtID0gbmF2aWdhdGlvbi0+dGFyZ2V0SXRlbSgpKSB7
CisgICAgICAgICAgICBMT0coTG9hZGluZywgIldlYlBhZ2VQcm94eSAlcCBjb250aW51ZU5hdmln
YXRpb25Jbk5ld1Byb2Nlc3MgdG8gYmFjayBpdGVtIFVSTCAlcyIsIHRoaXMsIGl0ZW0tPnVybCgp
LnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgICAgIGF1dG8gdHJhbnNhY3Rpb24gPSBtX3BhZ2VMb2Fk
U3RhdGUudHJhbnNhY3Rpb24oKTsKLSAgICAgICAgbV9wYWdlTG9hZFN0YXRlLnNldFBlbmRpbmdB
UElSZXF1ZXN0KHRyYW5zYWN0aW9uLCB7IG5hdmlnYXRpb24ubmF2aWdhdGlvbklEKCksIGl0ZW0t
PnVybCgpIH0pOworICAgICAgICAgICAgYXV0byB0cmFuc2FjdGlvbiA9IG1fcGFnZUxvYWRTdGF0
ZS50cmFuc2FjdGlvbigpOworICAgICAgICAgICAgbV9wYWdlTG9hZFN0YXRlLnNldFBlbmRpbmdB
UElSZXF1ZXN0KHRyYW5zYWN0aW9uLCB7IG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgpLCBpdGVt
LT51cmwoKSB9KTsKIAotICAgICAgICBtX3Byb3Zpc2lvbmFsUGFnZS0+Z29Ub0JhY2tGb3J3YXJk
SXRlbShuYXZpZ2F0aW9uLCAqaXRlbSwgV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMpKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KKyAgICAgICAgICAgIG1fcHJvdmlzaW9uYWxQYWdlLT5nb1RvQmFj
a0ZvcndhcmRJdGVtKG5hdmlnYXRpb24sICppdGVtLCBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llcykp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAKLSAgICBpZiAobV9iYWNrRm9yd2Fy
ZExpc3QtPmN1cnJlbnRJdGVtKCkgJiYgKG5hdmlnYXRpb24ubG9ja0JhY2tGb3J3YXJkTGlzdCgp
ID09IExvY2tCYWNrRm9yd2FyZExpc3Q6OlllcyB8fCBuYXZpZ2F0aW9uLmxvY2tIaXN0b3J5KCkg
PT0gTG9ja0hpc3Rvcnk6OlllcykpIHsKLSAgICAgICAgLy8gSWYgV2ViQ29yZSBpcyBzdXBwb3Nl
ZCB0byBsb2NrIHRoZSBoaXN0b3J5IGZvciB0aGlzIGxvYWQsIHRoZW4gdGhlIG5ldyBwcm9jZXNz
IG5lZWRzIHRvIGtub3cgYWJvdXQgdGhlIGN1cnJlbnQgaGlzdG9yeSBpdGVtIHNvIGl0IGNhbiB1
cGRhdGUKLSAgICAgICAgLy8gaXQgaW5zdGVhZCBvZiBjcmVhdGluZyBhIG5ldyBvbmUuCi0gICAg
ICAgIG5ld1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEN1cnJlbnRIaXN0b3J5
SXRlbUZvclJlYXR0YWNoKG1fYmFja0ZvcndhcmRMaXN0LT5jdXJyZW50SXRlbSgpLT5pdGVtU3Rh
dGUoKSksIG1fcHJvdmlzaW9uYWxQYWdlLT53ZWJQYWdlSUQoKSk7Ci0gICAgfQorICAgICAgICBp
ZiAobV9iYWNrRm9yd2FyZExpc3QtPmN1cnJlbnRJdGVtKCkgJiYgKG5hdmlnYXRpb24tPmxvY2tC
YWNrRm9yd2FyZExpc3QoKSA9PSBMb2NrQmFja0ZvcndhcmRMaXN0OjpZZXMgfHwgbmF2aWdhdGlv
bi0+bG9ja0hpc3RvcnkoKSA9PSBMb2NrSGlzdG9yeTo6WWVzKSkgeworICAgICAgICAgICAgLy8g
SWYgV2ViQ29yZSBpcyBzdXBwb3NlZCB0byBsb2NrIHRoZSBoaXN0b3J5IGZvciB0aGlzIGxvYWQs
IHRoZW4gdGhlIG5ldyBwcm9jZXNzIG5lZWRzIHRvIGtub3cgYWJvdXQgdGhlIGN1cnJlbnQgaGlz
dG9yeSBpdGVtIHNvIGl0IGNhbiB1cGRhdGUKKyAgICAgICAgICAgIC8vIGl0IGluc3RlYWQgb2Yg
Y3JlYXRpbmcgYSBuZXcgb25lLgorICAgICAgICAgICAgbmV3UHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6U2V0Q3VycmVudEhpc3RvcnlJdGVtRm9yUmVhdHRhY2gobV9iYWNrRm9yd2Fy
ZExpc3QtPmN1cnJlbnRJdGVtKCktPml0ZW1TdGF0ZSgpKSwgbV9wcm92aXNpb25hbFBhZ2UtPndl
YlBhZ2VJRCgpKTsKKyAgICAgICAgfQogCi0gICAgLy8gRklYTUU6IFdvcmsgb3V0IHRpbWluZyBv
ZiByZXNwb25kaW5nIHdpdGggdGhlIGxhc3QgcG9saWN5IGRlbGVnYXRlLCBldGMKLSAgICBBU1NF
UlQoIW5hdmlnYXRpb24uY3VycmVudFJlcXVlc3QoKS5pc0VtcHR5KCkpOwotICAgIGlmIChhdXRv
JiBzdWJzdGl0dXRlRGF0YSA9IG5hdmlnYXRpb24uc3Vic3RpdHV0ZURhdGEoKSkKLSAgICAgICAg
bV9wcm92aXNpb25hbFBhZ2UtPmxvYWREYXRhKG5hdmlnYXRpb24sIHsgc3Vic3RpdHV0ZURhdGEt
PmNvbnRlbnQuZGF0YSgpLCBzdWJzdGl0dXRlRGF0YS0+Y29udGVudC5zaXplKCkgfSwgc3Vic3Rp
dHV0ZURhdGEtPk1JTUVUeXBlLCBzdWJzdGl0dXRlRGF0YS0+ZW5jb2RpbmcsIHN1YnN0aXR1dGVE
YXRhLT5iYXNlVVJMLCBzdWJzdGl0dXRlRGF0YS0+dXNlckRhdGEuZ2V0KCksIFdURk1vdmUod2Vi
c2l0ZVBvbGljaWVzKSk7CisgICAgICAgIC8vIEZJWE1FOiBXb3JrIG91dCB0aW1pbmcgb2YgcmVz
cG9uZGluZyB3aXRoIHRoZSBsYXN0IHBvbGljeSBkZWxlZ2F0ZSwgZXRjCisgICAgICAgIEFTU0VS
VCghbmF2aWdhdGlvbi0+Y3VycmVudFJlcXVlc3QoKS5pc0VtcHR5KCkpOworICAgICAgICBpZiAo
YXV0byYgc3Vic3RpdHV0ZURhdGEgPSBuYXZpZ2F0aW9uLT5zdWJzdGl0dXRlRGF0YSgpKQorICAg
ICAgICAgICAgbV9wcm92aXNpb25hbFBhZ2UtPmxvYWREYXRhKG5hdmlnYXRpb24sIHsgc3Vic3Rp
dHV0ZURhdGEtPmNvbnRlbnQuZGF0YSgpLCBzdWJzdGl0dXRlRGF0YS0+Y29udGVudC5zaXplKCkg
fSwgc3Vic3RpdHV0ZURhdGEtPk1JTUVUeXBlLCBzdWJzdGl0dXRlRGF0YS0+ZW5jb2RpbmcsIHN1
YnN0aXR1dGVEYXRhLT5iYXNlVVJMLCBzdWJzdGl0dXRlRGF0YS0+dXNlckRhdGEuZ2V0KCksIFdU
Rk1vdmUod2Vic2l0ZVBvbGljaWVzKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fcHJv
dmlzaW9uYWxQYWdlLT5sb2FkUmVxdWVzdChuYXZpZ2F0aW9uLCBSZXNvdXJjZVJlcXVlc3QgeyBu
YXZpZ2F0aW9uLT5jdXJyZW50UmVxdWVzdCgpIH0sIFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3k6OlNob3VsZEFsbG93RXh0ZXJuYWxTY2hlbWVzLCBudWxscHRyLCBXVEZNb3Zl
KHdlYnNpdGVQb2xpY2llcykpOworICAgIH07CisgICAgaWYgKG1faW5zcGVjdG9yQ29udHJvbGxl
ci0+c2hvdWxkUGF1c2VMb2FkaW5nKCptX3Byb3Zpc2lvbmFsUGFnZSkpCisgICAgICAgIG1faW5z
cGVjdG9yQ29udHJvbGxlci0+c2V0Q29udGludWVMb2FkaW5nQ2FsbGJhY2soKm1fcHJvdmlzaW9u
YWxQYWdlLCBXVEZNb3ZlKGNvbnRpbnVhdGlvbikpOwogICAgIGVsc2UKLSAgICAgICAgbV9wcm92
aXNpb25hbFBhZ2UtPmxvYWRSZXF1ZXN0KG5hdmlnYXRpb24sIFJlc291cmNlUmVxdWVzdCB7IG5h
dmlnYXRpb24uY3VycmVudFJlcXVlc3QoKSB9LCBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxV
UkxzUG9saWN5OjpTaG91bGRBbGxvd0V4dGVybmFsU2NoZW1lcywgbnVsbHB0ciwgV1RGTW92ZSh3
ZWJzaXRlUG9saWNpZXMpKTsKKyAgICAgICAgY29udGludWF0aW9uKCk7CiB9CiAKIGJvb2wgV2Vi
UGFnZVByb3h5Ojppc1BhZ2VPcGVuZWRCeURPTVNob3dpbmdJbml0aWFsRW1wdHlEb2N1bWVudCgp
IGNvbnN0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggMTU0NmZiMzEzOTU5NmE2NjAyNzJiNDVhZmIyNjJmNTY0NThhMjAzOC4u
Y2I4NzU2OGFmMDE0ODBlMmIxM2VlN2IyYWVhOWIwMjVlNmI5MDRlNCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDI0IEBACisyMDE5LTExLTEzICBZdXJ5IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGFsbG93IGluc3BlY3RvciB0byBwYXVzZSBwcm92
aXNpb25hbCBwYWdlIGxvYWQgYW5kIHJlc3RvcmUgaXRzIHN0YXRlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDQxNzAKKworICAgICAgICBSZXZpZXdl
ZCBieSBEZXZpbiBSb3Vzc28uCisKKyAgICAgICAgVGVzdCB0aGF0IHByb3Zpc2lvbmFsIGxvYWRp
bmcgd2hpY2ggc3RhcnRzIGJlZm9yZSBwcmV2aW9zIHByb3Zpc2lvbmFsIGxvYWRpbmcKKyAgICAg
ICAgY29tbWl0cyB3aWxsIGJlIGNvcnJlY3RseSBoYW5kbGVkIGJ5IHRoZSBpbnNlcGN0b3IuCisK
KyAgICAgICAgVGVzdCB0aGF0IHNjcmlwdCBleGVjdXRpb24gd2lsbCBicmVhayBvbiBkZWJ1Z2dl
ciBzdGF0ZW1lbnQgaW4gaW5saW5lIHNjcmlwdHMgaW4KKyAgICAgICAgY2FzZSBvZiBjcm9zcyBv
cmlnaW4gbmF2aWdhdGlvbiBhbmQgUFNPTi4KKworICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVj
dG9yL3RhcmdldC9wYXVzZS1vbi1pbmxpbmUtZGVidWdnZXItc3RhdGVtZW50LWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvdGFyZ2V0L3BhdXNlLW9u
LWlubGluZS1kZWJ1Z2dlci1zdGF0ZW1lbnQuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90
ZXN0cy9pbnNwZWN0b3IvdGFyZ2V0L3Byb3Zpc2lvbmFsLWxvYWQtY2FuY2Vscy1wcmV2aW91cy1s
b2FkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
dGFyZ2V0L3Byb3Zpc2lvbmFsLWxvYWQtY2FuY2Vscy1wcmV2aW91cy1sb2FkLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL3RhcmdldC9yZXNvdXJjZXMvaW5saW5l
LWRlYnVnZ2VyLXN0YXRlbWVudC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2lu
c3BlY3Rvci90YXJnZXQvdGFyZ2V0LWV2ZW50cy1mb3ItcHJvdmlzaW9uYWwtcGFnZS1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvdGFyZ2V0L3RhcmdldC1ldmVu
dHMtZm9yLXByb3Zpc2lvbmFsLXBhZ2UuaHRtbDoKKwogMjAxOS0xMi0wMyAgeW91ZW5uIGZhYmxl
dCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGNhbWVyYSBy
b3RhdGlvbiB3aGVuIGNhcHR1cmluZyBpbiBVSVByb2Nlc3MKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3RhcmdldC9wYXVzZS1vbi1pbmxpbmUtZGVidWdnZXIt
c3RhdGVtZW50LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9y
L3RhcmdldC9wYXVzZS1vbi1pbmxpbmUtZGVidWdnZXItc3RhdGVtZW50LWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5iMmY2NjhlNGY5OTY1NWNjNTUwNzgxMWNhYjRjNjQ3YmIwOTM5ZGFlCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvdGFyZ2V0L3Bh
dXNlLW9uLWlubGluZS1kZWJ1Z2dlci1zdGF0ZW1lbnQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MiBAQAorQUxFUlQ6IFBBU1M6IFNob3VsZCBwYXVzZSBvbiBkZWJ1Z2dlciBzdGF0ZW1lbnQuCitU
ZXN0IHBhZ2UgdXNlZCB0byBjaGVjayB0aGF0IGV4ZWN1dGlvbiB3aWxsIGJyZWFrIG9uIGlubGlu
ZSAnZGVidWdnZXInIHN0YXRlbWVudCBhZnRlciBjcm9zcy1vcmlnaW4gbmF2aWdhdGlvbi4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3RhcmdldC9wYXVzZS1v
bi1pbmxpbmUtZGVidWdnZXItc3RhdGVtZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luc3BlY3Rvci90YXJnZXQvcGF1c2Utb24taW5saW5lLWRlYnVnZ2VyLXN0YXRlbWVudC5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmE2OTRkZDI3YzJiMGRiZjNmMDQwZDc4Y2Q4YzFjOTM1MjVkYWZmOGMKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci90YXJnZXQv
cGF1c2Utb24taW5saW5lLWRlYnVnZ2VyLXN0YXRlbWVudC5odG1sCkBAIC0wLDAgKzEsNDIgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4K
KzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdD4KK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGxldCBzdWl0ZSA9IEluc3BlY3RvclRl
c3QuY3JlYXRlQXN5bmNTdWl0ZSgiVGFyZ2V0LlBTT04iKTsKKworICAgIHN1aXRlLmFkZFRlc3RD
YXNlKHsKKyAgICAgICAgbmFtZTogIklubGluZURlYnVnZ2VyU3RhdGVtZW50IiwKKyAgICAgICAg
ZGVzY3JpcHRpb246ICJDaGVjayB0aGF0IG5ldyBwcm92aXNpb25hbCBwYWdlIGNhbiBiZSBwYXVz
ZWQgYmVmb3JlIG5hdmlnYXRpb24uIiwKKyAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsK
KyAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5hd2FpdEV2ZW50KFdJLkRlYnVnZ2VyTWFu
YWdlci5FdmVudC5QYXVzZWQpCisgICAgICAgICAgICAudGhlbigoKSA9PiB7CisgICAgICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5wYXNzKGBTaG91bGQgcGF1c2Ugb24gZGVidWdnZXIgc3RhdGVt
ZW50LmApOworCisgICAgICAgICAgICAgICAgLy8gV2FpdCBmb3IgcGFnZSByZWxvYWQgZXZlbnQg
dG8gYXZvaWQgcmFjZSBiZXR3ZWVuIHRlc3QgcmVzdWx0cyBmbHVzaGluZyBhbmQgdGhlIHRlc3Qg
Y29tcGxldGlvbi4KKyAgICAgICAgICAgICAgICBsZXQgcGFnZUxvYWRQcm9taXNlID0gSW5zcGVj
dG9yVGVzdC5hd2FpdEV2ZW50KEZyb250ZW5kVGVzdEhhcm5lc3MuRXZlbnQuVGVzdFBhZ2VEaWRM
b2FkKTsKKyAgICAgICAgICAgICAgICAvL1dJLm1haW5UYXJnZXQuRGVidWdnZXJBZ2VudC4KKyAg
ICAgICAgICAgICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAg
ICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnJlc3VtZSgpOworICAgICAgICAgICAgICAgIH0p
OworICAgICAgICAgICAgICAgIHJldHVybiBwYWdlTG9hZFByb21pc2U7CisgICAgICAgICAgICB9
KQorICAgICAgICAgICAgLnRoZW4ocmVzb2x2ZSk7CisKKworICAgICAgICAgICAgY29uc3QgdXJs
ID0gImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9pbnNwZWN0b3IvdGFyZ2V0L3Jlc291cmNlcy9pbmxp
bmUtZGVidWdnZXItc3RhdGVtZW50Lmh0bWwiOworICAgICAgICAgICAgV0kubWFpblRhcmdldC5Q
YWdlQWdlbnQubmF2aWdhdGUodXJsKTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgc3VpdGUu
cnVuVGVzdENhc2VzQW5kRmluaXNoKCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9u
bG9hZD0icnVuVGVzdCgpIj4KKzxwPlRlc3QgdGhhdCBleGVjdXRpb24gd2lsbCBicmVhayBvbiBp
bmxpbmUgJ2RlYnVnZ2VyJyBzdGF0ZW1lbnQgYWZ0ZXIgY3Jvc3Mtb3JpZ2luIG5hdmlnYXRpb24u
PC9wPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9pbnNwZWN0b3IvdGFyZ2V0L3Byb3Zpc2lvbmFsLWxvYWQtY2FuY2Vscy1wcmV2aW91cy1sb2Fk
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3RhcmdldC9w
cm92aXNpb25hbC1sb2FkLWNhbmNlbHMtcHJldmlvdXMtbG9hZC1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZGQwN2I1YTA0ZDdmODNiOWM1NzBjMmJmNjkxOGRmNDI1NmRmNzgwZQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3RhcmdldC9wcm92aXNp
b25hbC1sb2FkLWNhbmNlbHMtcHJldmlvdXMtbG9hZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwx
NyBAQAorVGVzdCB0aGF0IHR3byBjb25zZXF1dGl2ZSBjcm9zcyBkb21haW4gbmF2aWdhdGlvbiBy
ZXF1ZXN0cyB3aWxsIHJlc3VsdCBpbiB0d28gcHJvdmlzaW9uYWwgdGFyZ2V0cyBiZWluZyBjcmVh
dGVkLCBmaXJzdCBvZiB3aGljaCBpcyBsYXRlciBkZXN0cm95ZWQgYW5kIHRoZSBzZWNvbmQgaXMg
Y29tbWl0dGVkLgorCisKKz09IFJ1bm5pbmcgdGVzdCBzdWl0ZTogVGFyZ2V0LlBTT04KKy0tIFJ1
bm5pbmcgdGVzdCBjYXNlOiBQcm92aXNpb25hbFBhZ2VQYXVzZWQKK0N1cnJlbnQgdGFyZ2V0IGlz
IDEuCitQQVNTOiBTaG91bGQgcmVjZWl2ZSBUYXJnZXRBZGRlZCBldmVudCBmb3IgdGFyZ2V0IDIu
CitQQVNTOiBUYXJnZXQgMiBzaG91bGQgYmUgcHJvdmlzaW9uYWwuCitQQVNTOiBUYXJnZXQgMiBz
aG91bGQgYmUgcGF1c2VkIG9uIHN0YXJ0LgorUEFTUzogU2hvdWxkIHJlY2VpdmUgVGFyZ2V0UmVt
b3ZlZCBldmVudCBmb3IgdGFyZ2V0IDIKK1BBU1M6IFNob3VsZCByZWNlaXZlIFRhcmdldEFkZGVk
IGV2ZW50IGZvciB0YXJnZXQgMy4KK1BBU1M6IFRhcmdldCAzIHNob3VsZCBiZSBwcm92aXNpb25h
bC4KK1BBU1M6IFRhcmdldCAzIHNob3VsZCBiZSBwYXVzZWQgb24gc3RhcnQuCitQQVNTOiBTaG91
bGQgcmVjZWl2ZSBUYXJnZXRSZW1vdmVkIGV2ZW50IGZvciB0YXJnZXQgMQorUEFTUzogU2hvdWxk
IHJlY2VpdmUgRGlkQ29tbWl0UHJvdmlzaW9uYWxUYXJnZXQgZXZlbnQgMSA9PiAzLgorUEFTUzog
U2hvdWxkIGhhdmUgc2VlbiAzIGRpZmZlcmVudCB0YXJnZXRzLgorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci90YXJnZXQvcHJvdmlzaW9uYWwtbG9hZC1jYW5j
ZWxzLXByZXZpb3VzLWxvYWQuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9y
L3RhcmdldC9wcm92aXNpb25hbC1sb2FkLWNhbmNlbHMtcHJldmlvdXMtbG9hZC5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmM5NmIwMjNiMzA5YzZjOGMxYmUwMzVlOWI0MjBjOTc2Y2RhYjlmYzMKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci90YXJnZXQvcHJvdmlz
aW9uYWwtbG9hZC1jYW5jZWxzLXByZXZpb3VzLWxvYWQuaHRtbApAQCAtMCwwICsxLDc2IEBACis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8
c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQ+CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBsZXQgbGFzdEFzc2lnbmVkSWQgPSAwOwor
ICAgIGxldCB0YXJnZXRUb0lkID0gbmV3IE1hcDsKKyAgICBmdW5jdGlvbiBzdGFibGVUYXJnZXRJ
ZCh0YXJnZXRJZCkKKyAgICB7CisgICAgICAgIGxldCBpZCA9IHRhcmdldFRvSWQuZ2V0KHRhcmdl
dElkKTsKKyAgICAgICAgaWYgKCFpZCkgeworICAgICAgICAgICAgaWQgPSArK2xhc3RBc3NpZ25l
ZElkOworICAgICAgICAgICAgdGFyZ2V0VG9JZC5zZXQodGFyZ2V0SWQsIGlkKTsKKyAgICAgICAg
fQorICAgICAgICByZXR1cm4gaWQ7CisgICAgfQorCisgICAgbGV0IHN1aXRlID0gSW5zcGVjdG9y
VGVzdC5jcmVhdGVBc3luY1N1aXRlKCJUYXJnZXQuUFNPTiIpOworCisgICAgc3VpdGUuYWRkVGVz
dENhc2UoeworICAgICAgICBuYW1lOiAiUHJvdmlzaW9uYWxQYWdlUGF1c2VkIiwKKyAgICAgICAg
ZGVzY3JpcHRpb246ICJDaGVjayB0aGF0IG5ldyBwcm92aXNpb25hbCBwYWdlIGNhbiBiZSBwYXVz
ZWQgYmVmb3JlIG5hdmlnYXRpb24uIiwKKyAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsK
KyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKGBDdXJyZW50IHRhcmdldCBpcyAke3N0YWJs
ZVRhcmdldElkKFdJLm1haW5UYXJnZXQuaWRlbnRpZmllcil9LmApOworICAgICAgICAgICAgY29u
c3QgdXJsID0gImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9pbnNwZWN0b3IvdGFyZ2V0L3Byb3Zpc2lv
bmFsLWxvYWQtY2FuY2Vscy1wcmV2aW91cy1sb2FkLmh0bWwiOworICAgICAgICAgICAgbGV0IG5h
dmlnYXRlZFR3aWNlID0gZmFsc2U7CisKKyAgICAgICAgICAgIFdJLnRhcmdldE1hbmFnZXIuYWRk
RXZlbnRMaXN0ZW5lcihXSS5UYXJnZXRNYW5hZ2VyLkV2ZW50LlRhcmdldEFkZGVkLCAoZXZlbnQp
ID0+IHsKKyAgICAgICAgICAgICAgICBsZXQgdGFyZ2V0ID0gZXZlbnQuZGF0YS50YXJnZXQ7Cisg
ICAgICAgICAgICAgICAgbGV0IHRhcmdldElkID0gc3RhYmxlVGFyZ2V0SWQodGFyZ2V0LmlkZW50
aWZpZXIpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QucGFzcyhgU2hvdWxkIHJlY2Vp
dmUgVGFyZ2V0QWRkZWQgZXZlbnQgZm9yIHRhcmdldCAke3RhcmdldElkfS5gKTsKKyAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRydWUodGFyZ2V0LmlzUHJvdmlzaW9uYWwsIGBU
YXJnZXQgJHt0YXJnZXRJZH0gc2hvdWxkIGJlIHByb3Zpc2lvbmFsLmApOworICAgICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VHJ1ZSh0YXJnZXQuaXNQYXVzZWQsIGBUYXJnZXQgJHt0
YXJnZXRJZH0gc2hvdWxkIGJlIHBhdXNlZCBvbiBzdGFydC5gKTsKKyAgICAgICAgICAgICAgICBp
ZiAoIW5hdmlnYXRlZFR3aWNlKSB7CisgICAgICAgICAgICAgICAgICAgIG5hdmlnYXRlZFR3aWNl
ID0gdHJ1ZTsKKworICAgICAgICAgICAgICAgICAgICAvLyBTZW5kIHR3byBjb25zZXF1dGl2ZSBu
YXZpZ2F0aW9uIHJlcXVlc3RzLiBUaGUgbGF0dGVyIHdpbGwgY2FuY2VsIHByb3Zpc2lvbmFsCisg
ICAgICAgICAgICAgICAgICAgIC8vIGxvYWQgb2YgdGhlIGZvcm1lci4KKyAgICAgICAgICAgICAg
ICAgICAgV0kubWFpblRhcmdldC5QYWdlQWdlbnQubmF2aWdhdGUodXJsKTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgV0kudGFyZ2V0TWFuYWdlci5h
ZGRFdmVudExpc3RlbmVyKFdJLlRhcmdldE1hbmFnZXIuRXZlbnQuRGlkQ29tbWl0UHJvdmlzaW9u
YWxUYXJnZXQsIChldmVudCkgPT4geworICAgICAgICAgICAgICAgIGxldCB7cHJldmlvdXNUYXJn
ZXRJZCwgdGFyZ2V0fSA9IGV2ZW50LmRhdGE7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5wYXNzKGBTaG91bGQgcmVjZWl2ZSBEaWRDb21taXRQcm92aXNpb25hbFRhcmdldCBldmVudCAk
e3N0YWJsZVRhcmdldElkKHByZXZpb3VzVGFyZ2V0SWQpfSA9PiAke3N0YWJsZVRhcmdldElkKHRh
cmdldC5pZGVudGlmaWVyKX0uYCk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgV0ku
dGFyZ2V0TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLlRhcmdldE1hbmFnZXIuRXZlbnQuVGFy
Z2V0UmVtb3ZlZCwgKGV2ZW50KSA9PnsKKyAgICAgICAgICAgICAgICBsZXQgdGFyZ2V0SWQgPSBz
dGFibGVUYXJnZXRJZChldmVudC5kYXRhLnRhcmdldC5pZGVudGlmaWVyKTsKKyAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LnBhc3MoYFNob3VsZCByZWNlaXZlIFRhcmdldFJlbW92ZWQgZXZl
bnQgZm9yIHRhcmdldCAke3RhcmdldElkfWApOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAg
ICAgIC8vIFdhaXQgZm9yIHBhZ2UgcmVsb2FkIGV2ZW50IHRvIGF2b2lkIHJhY2UgYmV0d2VlbiB0
ZXN0IHJlc3VsdHMgZmx1c2hpbmcgYW5kIHRoZSB0ZXN0IGNvbXBsZXRpb24uCisgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmF3YWl0RXZlbnQoRnJvbnRlbmRUZXN0SGFybmVzcy5FdmVudC5UZXN0
UGFnZURpZExvYWQpCisgICAgICAgICAgICAudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChsYXN0QXNzaWduZWRJZCwgMywgYFNob3VsZCBoYXZl
IHNlZW4gMyBkaWZmZXJlbnQgdGFyZ2V0cy5gKTsKKyAgICAgICAgICAgIH0pCisgICAgICAgICAg
ICAudGhlbihyZXNvbHZlKTsKKworICAgICAgICAgICAgV0kubWFpblRhcmdldC5QYWdlQWdlbnQu
bmF2aWdhdGUodXJsKTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgc3VpdGUucnVuVGVzdENh
c2VzQW5kRmluaXNoKCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVu
VGVzdCgpIj4KKzxwPlRlc3QgdGhhdCB0d28gY29uc2VxdXRpdmUgY3Jvc3MgZG9tYWluIG5hdmln
YXRpb24gcmVxdWVzdHMgd2lsbCByZXN1bHQgaW4gdHdvCitwcm92aXNpb25hbCB0YXJnZXRzIGJl
aW5nIGNyZWF0ZWQsIGZpcnN0IG9mIHdoaWNoIGlzIGxhdGVyIGRlc3Ryb3llZCBhbmQgdGhlIHNl
Y29uZAoraXMgY29tbWl0dGVkLjwvcD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3RhcmdldC9yZXNvdXJjZXMvaW5saW5lLWRl
YnVnZ2VyLXN0YXRlbWVudC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
dGFyZ2V0L3Jlc291cmNlcy9pbmxpbmUtZGVidWdnZXItc3RhdGVtZW50Lmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNWMwYzAxNmE1YWQzOGNhNjhmOGVhN2IzNmRiNDM1NDc5YzViYWEyMAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3RhcmdldC9yZXNvdXJjZXMv
aW5saW5lLWRlYnVnZ2VyLXN0YXRlbWVudC5odG1sCkBAIC0wLDAgKzEsMTkgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlw
dD4KKworZGVidWdnZXI7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIEluc3BlY3RvclRlc3Qu
ZmFpbCgiVGhpcyBjb2RlIHNob3VsZCBuZXZlciBhY3R1YWxseSBydW4uIEl0IGlzIGhlcmUgYmVj
YXNlIGluc3BlY3Rvci10ZXN0LmpzIGhhcm5lc3MgcmVxdWlyZXMgYSB0ZXN0KCkgZnVuY3Rpb24u
Iik7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxw
PlRlc3QgcGFnZSB1c2VkIHRvIGNoZWNrIHRoYXQgZXhlY3V0aW9uIHdpbGwgYnJlYWsgb24gaW5s
aW5lICdkZWJ1Z2dlcicgc3RhdGVtZW50IGFmdGVyIGNyb3NzLW9yaWdpbiBuYXZpZ2F0aW9uLjwv
cD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL3RhcmdldC90YXJnZXQtZXZlbnRzLWZvci1wcm92aXNpb25hbC1wYWdlLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3RhcmdldC90YXJnZXQt
ZXZlbnRzLWZvci1wcm92aXNpb25hbC1wYWdlLWV4cGVjdGVkLnR4dAppbmRleCA2ZGVmN2UwYmIz
NDRkZTMyZDZkNTVjNzgyYTk4ZjIxNjMwOTlmODdkLi5kMDBlMzYzMmRjNWRkYmIyOWZmNzJjOGIx
NzI4ZTk3NDkxZGUyNDI2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci90YXJnZXQvdGFyZ2V0LWV2ZW50cy1mb3ItcHJvdmlzaW9uYWwtcGFnZS1leHBlY3RlZC50
eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvdGFyZ2V0L3RhcmdldC1l
dmVudHMtZm9yLXByb3Zpc2lvbmFsLXBhZ2UtZXhwZWN0ZWQudHh0CkBAIC02LDExICs2LDExIEBA
IFRlc3QgdGhhdCBjcm9zcyBkb21haW4gbmF2aWdhdGlvbiByZXN1bHRzIGluIHRoZSBmb2xsb3dp
bmcgc2VxdWVuY2Ugb2YgZXZlbnRzIGluCiAKID09IFJ1bm5pbmcgdGVzdCBzdWl0ZTogVGFyZ2V0
LlBTT04KIC0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBQcm92aXNpb25hbFBhZ2VUYXJnZXQKLVBBU1M6
IFNob3VsZCByZWNlaXZlIHRhcmdldENyZWF0ZWQgZXZlbnQuCitQQVNTOiBTaG91bGQgcmVjZWl2
ZSBUYXJnZXRBZGRlZCBldmVudC4KIFBBU1M6IFRhcmdldCBzaG91bGQgYmUgcHJvdmlzaW9uYWwu
Ci1QQVNTOiBTaG91bGQgcmVjZWl2ZSBkaWRDb21taXRQcm92aXNpb25hbFRhcmdldCBldmVudC4K
K1BBU1M6IFNob3VsZCByZWNlaXZlIFRhcmdldFJlbW92ZWQgZXZlbnQuCitQQVNTOiBEZXN0cm95
ZWQgdGFyZ2V0IHNob3VsZCBiZSBwcmV2aW91cyB0YXJnZXQuCitQQVNTOiBTaG91bGQgcmVjZWl2
ZSBEaWRDb21taXRQcm92aXNpb25hbFRhcmdldCBldmVudC4KIFBBU1M6IFByZXZpb3VzIHRhcmdl
dCBzaG91bGQgYmUgdGhlIGN1cnJlbnQgb25lLgogUEFTUzogQ29tbWl0dGVkIHRhcmdldCBzaG91
bGQgbWF0Y2ggcHJvdmlzaW9uYWwgdGFyZ2V0LgotUEFTUzogU2hvdWxkIHJlY2VpdmUgdGFyZ2V0
RGVzdHJveWVkIGV2ZW50LgotUEFTUzogRGVzdHJveWVkIHRhcmdldCBzaG91bGQgYmUgcHJldmlv
dXMgdGFyZ2V0LgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rv
ci90YXJnZXQvdGFyZ2V0LWV2ZW50cy1mb3ItcHJvdmlzaW9uYWwtcGFnZS5odG1sIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvdGFyZ2V0L3RhcmdldC1ldmVudHMtZm9yLXByb3Zp
c2lvbmFsLXBhZ2UuaHRtbAppbmRleCBlNzM5NTEzOTM2NzQ0ZTU1NmVjMTEyYmRkNTJhYTFkOGU2
NDk0YTkxLi5jNTFmYjRlMmY1OWMzNjkzZWRiYjUxMTkzZWMzMjBlZmY2Zjk1ZDRlIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci90YXJnZXQvdGFyZ2V0LWV2ZW50
cy1mb3ItcHJvdmlzaW9uYWwtcGFnZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL3RhcmdldC90YXJnZXQtZXZlbnRzLWZvci1wcm92aXNpb25hbC1wYWdlLmh0bWwK
QEAgLTEzLDI4ICsxMywyNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgZGVzY3JpcHRpb246
ICJDaGVjayB0aGF0IGEgbmV3IHRhcmdldCB3aWxsIGJlIGNyZWF0ZWQgZm9yIHByb3Zpc2lvbmFs
IHBhZ2UuIiwKICAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKICAgICAgICAgICAgIGNv
bnN0IG1haW5UYXJnZXRJZCA9IFdJLm1haW5UYXJnZXQuaWRlbnRpZmllcjsKLSAgICAgICAgICAg
IGxldCBuZXdUYXJnZXRJZDsKKyAgICAgICAgICAgIGxldCBuZXdUYXJnZXQ7CiAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmFzc2VydChtYWluVGFyZ2V0SWQpOwogICAgICAgICAgICAgbGV0IHJl
bG9hZFByb21pc2UgPSBJbnNwZWN0b3JUZXN0LmF3YWl0RXZlbnQoRnJvbnRlbmRUZXN0SGFybmVz
cy5FdmVudC5UZXN0UGFnZURpZExvYWQpOwogCi0gICAgICAgICAgICBXSS50YXJnZXRNYW5hZ2Vy
LmFkZEV2ZW50TGlzdGVuZXIoV0kuVGFyZ2V0TWFuYWdlci5FdmVudC5UYXJnZXRDcmVhdGVkLCAo
ZXZlbnQpID0+IHsKLSAgICAgICAgICAgICAgICBsZXQge3RhcmdldEluZm99ID0gZXZlbnQuZGF0
YTsKLSAgICAgICAgICAgICAgICBuZXdUYXJnZXRJZCA9IHRhcmdldEluZm8udGFyZ2V0SWQ7Ci0g
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5wYXNzKGBTaG91bGQgcmVjZWl2ZSB0YXJnZXRD
cmVhdGVkIGV2ZW50LmApOwotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VHJ1
ZSh0YXJnZXRJbmZvLmlzUHJvdmlzaW9uYWwsICJUYXJnZXQgc2hvdWxkIGJlIHByb3Zpc2lvbmFs
LiIpOworICAgICAgICAgICAgV0kudGFyZ2V0TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLlRh
cmdldE1hbmFnZXIuRXZlbnQuVGFyZ2V0QWRkZWQsIChldmVudCkgPT4geworICAgICAgICAgICAg
ICAgIG5ld1RhcmdldCA9IGV2ZW50LmRhdGEudGFyZ2V0OworICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QucGFzcyhgU2hvdWxkIHJlY2VpdmUgVGFyZ2V0QWRkZWQgZXZlbnQuYCk7CisgICAg
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUcnVlKG5ld1RhcmdldC5pc1Byb3Zpc2lv
bmFsLCAiVGFyZ2V0IHNob3VsZCBiZSBwcm92aXNpb25hbC4iKTsKICAgICAgICAgICAgIH0pOwog
CiAgICAgICAgICAgICBXSS50YXJnZXRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuVGFyZ2V0
TWFuYWdlci5FdmVudC5EaWRDb21taXRQcm92aXNpb25hbFRhcmdldCwgKGV2ZW50KSA9PiB7Ci0g
ICAgICAgICAgICAgICAgbGV0IHtwcmV2aW91c1RhcmdldElkLCB0YXJnZXRJbmZvfSA9IGV2ZW50
LmRhdGE7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5wYXNzKGBTaG91bGQgcmVjZWl2
ZSBkaWRDb21taXRQcm92aXNpb25hbFRhcmdldCBldmVudC5gKTsKKyAgICAgICAgICAgICAgICBs
ZXQge3ByZXZpb3VzVGFyZ2V0SWQsIHRhcmdldH0gPSBldmVudC5kYXRhOworICAgICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QucGFzcyhgU2hvdWxkIHJlY2VpdmUgRGlkQ29tbWl0UHJvdmlzaW9u
YWxUYXJnZXQgZXZlbnQuYCk7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RF
cXVhbChwcmV2aW91c1RhcmdldElkLCBtYWluVGFyZ2V0SWQsICJQcmV2aW91cyB0YXJnZXQgc2hv
dWxkIGJlIHRoZSBjdXJyZW50IG9uZS4iKTsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmV4cGVjdEVxdWFsKHRhcmdldEluZm8udGFyZ2V0SWQsIG5ld1RhcmdldElkLCAiQ29tbWl0dGVk
IHRhcmdldCBzaG91bGQgbWF0Y2ggcHJvdmlzaW9uYWwgdGFyZ2V0LiIpOworICAgICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwodGFyZ2V0LCBuZXdUYXJnZXQsICJDb21taXR0
ZWQgdGFyZ2V0IHNob3VsZCBtYXRjaCBwcm92aXNpb25hbCB0YXJnZXQuIik7CiAgICAgICAgICAg
ICB9KTsKIAotICAgICAgICAgICAgV0kudGFyZ2V0TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJ
LlRhcmdldE1hbmFnZXIuRXZlbnQuVGFyZ2V0RGVzdHJveWVkLCAoZXZlbnQpID0+ewotICAgICAg
ICAgICAgICAgIGxldCB7dGFyZ2V0SWR9ID0gZXZlbnQuZGF0YTsKLSAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LnBhc3MoYFNob3VsZCByZWNlaXZlIHRhcmdldERlc3Ryb3llZCBldmVudC5g
KTsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHRhcmdldElkLCBt
YWluVGFyZ2V0SWQsICJEZXN0cm95ZWQgdGFyZ2V0IHNob3VsZCBiZSBwcmV2aW91cyB0YXJnZXQu
Iik7CisgICAgICAgICAgICBXSS50YXJnZXRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuVGFy
Z2V0TWFuYWdlci5FdmVudC5UYXJnZXRSZW1vdmVkLCAoZXZlbnQpID0+eworICAgICAgICAgICAg
ICAgIGxldCB0YXJnZXQgPSBldmVudC5kYXRhLnRhcmdldDsKKyAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LnBhc3MoYFNob3VsZCByZWNlaXZlIFRhcmdldFJlbW92ZWQgZXZlbnQuYCk7Cisg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbCh0YXJnZXQuaWRlbnRpZmll
ciwgbWFpblRhcmdldElkLCAiRGVzdHJveWVkIHRhcmdldCBzaG91bGQgYmUgcHJldmlvdXMgdGFy
Z2V0LiIpOwogCiAgICAgICAgICAgICAgICAgLy8gV2FpdCBmb3IgcGFnZSByZWxvYWQgZXZlbnQg
dG8gYXZvaWQgcmFjZSBiZXR3ZWVuIHRlc3QgcmVzdWx0cyBmbHVzaGluZyBhbmQgdGhlIHRlc3Qg
Y29tcGxldGlvbi4KICAgICAgICAgICAgICAgICByZWxvYWRQcm9taXNlLnRoZW4ocmVzb2x2ZSk7
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>