<?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>195248</bug_id>
          
          <creation_ts>2019-03-02 12:44:08 -0800</creation_ts>
          <short_desc>Web Inspector: DOMDebugger: protocol error on first open</short_desc>
          <delta_ts>2019-03-11 19:54:46 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>195170</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Devin Rousso">hi</reporter>
          <assigned_to name="Devin Rousso">hi</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>hi</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>joepeck</cc>
    
    <cc>tsavell</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1511840</commentid>
    <comment_count>0</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-03-02 12:44:08 -0800</bug_when>
    <thetext>Controllers/DOMDebuggerManager.js:472:30: CONSOLE ERROR &apos;DOMDebugger&apos; domain was not found</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1511858</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-03-02 14:36:31 -0800</bug_when>
    <thetext>&lt;rdar://problem/48538465&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1511864</commentid>
    <comment_count>2</comment_count>
      <attachid>363433</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-03-02 15:21:01 -0800</bug_when>
    <thetext>Created attachment 363433
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1513420</commentid>
    <comment_count>3</comment_count>
      <attachid>363433</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2019-03-06 23:22:58 -0800</bug_when>
    <thetext>Comment on attachment 363433
Patch

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

r- for some multi-target logic. I didn&apos;t go in depth after finding a few issues.

The Multimap code looks good, you may want to separate that out into its own patch.

&gt; Source/WebInspectorUI/UserInterface/Base/Multimap.js:65
&gt; +        let deleted = valueSet.delete(value);
&gt; +
&gt; +        // Allow an entire key to be removed by not passing a value.
&gt; +        if (arguments.length === 1 || !valueSet.size)
&gt; +            deleted = this._map.delete(key);

I&apos;d go with:

    // Allow an entire key to be removed by not passing a value.
    if (arguments.length === 1)
        return this._map.delete(key);

    let deleted = valueSet.delete(value);
    if (deleted &amp;&amp; !valueSet.size)
        this._map.delete(key);
    return deleted;

Which:

    1. Avoids a `set.delete(undefined)` when arguments.length is 1
    2. Avoids a `map.delete(key)` when valueSet shouldn&apos;t be empty
    3. Avoids a duplicate unnecessary assignment to `deleted` when valueSet is empty

&gt; Source/WebInspectorUI/UserInterface/Controllers/DOMDebuggerManager.js:180
&gt; +            for (let target of WI.targets)
&gt; +                this._updateDOMBreakpoint(breakpoint, target);

This is another where maybe we use WI.assumingMainTarget().

&gt; Source/WebInspectorUI/UserInterface/Controllers/DOMDebuggerManager.js:211
&gt; +            for (let target of WI.targets)
&gt; +                target.DOMDebuggerAgent.removeDOMBreakpoint(nodeIdentifier, breakpoint.type);

It is not safe to assume the target has a DOMDebuggerAgent (a ServiceWorker target will not). Typically the first thing we *should* do inside of WI.target loops is check for the relevant agent the loop will make use of. Currently many call sites don&apos;t because they deal with agents that are guaranteed to exist in all targets (RuntimeAgent, DebuggerAgent, and ConsoleAgent). But like the loop you just added for CanvasAgent and another for HeapAgent checking is the right thing to do.

The pattern I&apos;d suggest is:

    for (let target of WI.targets) {
        if (target.DOMDebuggerAgent) {
            ...
        }
    }

Note that some of your other code gets around this by burying the agent check inside functions, which is fine but tricky to review.

We could add a utility such as:

    for (let target of WI.targetsWith(&quot;DOMDebugger&quot;)) {
        ...
    }

Which might reduce complexity at sites like this. Then this entire file could follow that pattern.

---

In any case, this specific code (DOM Breakpoints / Node breakpoint) will likely be incorrect for the coming future anyways. A DOMNode / nodeIdentifier will only be valid in a single Target (eventually a Frame target). We probably don&apos;t want to tell all targets about a nodeIdentifier that doesn&apos;t correspond to them. Ideally in this case the breakpoint would know the target the nodeIdentifier is associated with, so you&apos;d end up with:

    breakpoint.target.removeDOMBreakpoint(nodeIdentifier, breakpoint.type);

So for now maybe convert this one to just:

    // We should get the target associated with the nodeIdentifier in this breakpoint.
    let target = WI.assumingMainTarget();
    target.DOMDebuggerAgent.removeDOMBreakpoint(nodeIdentifier, breakpoint.type);

Put simply:
• Some DOMDebugger breakpoint types (Event, XHR, URL) are universal, and make sense to broadcast messages to all targets with a DOMDebuggerAgent.
• Some DOMDebugger breakpoint types (Node, EventListener) are context specific, and don&apos;t make sense to broadcast, but instead should be associated with a single target.

Let me know if that all made sense or if you view this differently.

&gt; Source/WebInspectorUI/UserInterface/Controllers/DOMDebuggerManager.js:285
&gt; +        for (let target of WI.targets) {

Check target.DOMDebuggerAgent.

&gt; Source/WebInspectorUI/UserInterface/Controllers/DOMDebuggerManager.js:355
&gt; +        for (let target of WI.targets) {

Check target.DOMDebuggerAgent.

&gt; Source/WebInspectorUI/UserInterface/Controllers/DOMDebuggerManager.js:449
&gt; -        this._updateDOMBreakpoint(breakpoint);
&gt; +        this._updateDOMBreakpoint(breakpoint, WI.assumingMainTarget());

Lets add a similar comment that ideally we would find the target associated with this target specific DOM breakpoint.

I like the idea of adding comments next to assumingMainTarget so when we come across it later we know why!

&gt; LayoutTests/inspector/unit-tests/multimap.html:86
&gt; +    suite.addTestCase({
&gt; +        name: &quot;Multimap.prototype.delete&quot;,
&gt; +        test() {
&gt; +            let multimap = new Multimap;
&gt; +
&gt; +            multimap.add(0, 1);
&gt; +            multimap.add(2, 3);
&gt; +            multimap.add(2, 3);
&gt; +
&gt; +            InspectorTest.log(multimap);
&gt; +
&gt; +            InspectorTest.expectThat(multimap.delete(0, 1), &quot;The key and the value were successfully deleted.&quot;);
&gt; +
&gt; +            InspectorTest.log(multimap);
&gt; +
&gt; +            InspectorTest.expectThat(multimap.delete(2, 3), &quot;The key and the value were successfully deleted.&quot;);
&gt; +
&gt; +            InspectorTest.log(multimap);
&gt; +        },
&gt; +    });

I&apos;d like to see this test deleting a value from a set that has multiple values.

    multimap.add(0, 1);
    multimap.add(2, 3);
    multimap.add(2, 4);

    log();
    delete(0, 1); log(); // should see `0` keys go away entirely
    delete(2, 3); log(); // should see `[2,4]` still
    delete(2, 4); log(); // should see empty

&gt; LayoutTests/inspector/unit-tests/multimap.html:155
&gt; +            multimap.add(&quot;badger&quot;, &quot;raccoon&quot;);

Would be nice to give this more values.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1513445</commentid>
    <comment_count>4</comment_count>
      <attachid>363433</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-03-07 00:50:35 -0800</bug_when>
    <thetext>Comment on attachment 363433
Patch

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

&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/DOMDebuggerManager.js:211
&gt;&gt; +                target.DOMDebuggerAgent.removeDOMBreakpoint(nodeIdentifier, breakpoint.type);
&gt; 
&gt; It is not safe to assume the target has a DOMDebuggerAgent (a ServiceWorker target will not). Typically the first thing we *should* do inside of WI.target loops is check for the relevant agent the loop will make use of. Currently many call sites don&apos;t because they deal with agents that are guaranteed to exist in all targets (RuntimeAgent, DebuggerAgent, and ConsoleAgent). But like the loop you just added for CanvasAgent and another for HeapAgent checking is the right thing to do.
&gt; 
&gt; The pattern I&apos;d suggest is:
&gt; 
&gt;     for (let target of WI.targets) {
&gt;         if (target.DOMDebuggerAgent) {
&gt;             ...
&gt;         }
&gt;     }
&gt; 
&gt; Note that some of your other code gets around this by burying the agent check inside functions, which is fine but tricky to review.
&gt; 
&gt; We could add a utility such as:
&gt; 
&gt;     for (let target of WI.targetsWith(&quot;DOMDebugger&quot;)) {
&gt;         ...
&gt;     }
&gt; 
&gt; Which might reduce complexity at sites like this. Then this entire file could follow that pattern.
&gt; 
&gt; ---
&gt; 
&gt; In any case, this specific code (DOM Breakpoints / Node breakpoint) will likely be incorrect for the coming future anyways. A DOMNode / nodeIdentifier will only be valid in a single Target (eventually a Frame target). We probably don&apos;t want to tell all targets about a nodeIdentifier that doesn&apos;t correspond to them. Ideally in this case the breakpoint would know the target the nodeIdentifier is associated with, so you&apos;d end up with:
&gt; 
&gt;     breakpoint.target.removeDOMBreakpoint(nodeIdentifier, breakpoint.type);
&gt; 
&gt; So for now maybe convert this one to just:
&gt; 
&gt;     // We should get the target associated with the nodeIdentifier in this breakpoint.
&gt;     let target = WI.assumingMainTarget();
&gt;     target.DOMDebuggerAgent.removeDOMBreakpoint(nodeIdentifier, breakpoint.type);
&gt; 
&gt; Put simply:
&gt; • Some DOMDebugger breakpoint types (Event, XHR, URL) are universal, and make sense to broadcast messages to all targets with a DOMDebuggerAgent.
&gt; • Some DOMDebugger breakpoint types (Node, EventListener) are context specific, and don&apos;t make sense to broadcast, but instead should be associated with a single target.
&gt; 
&gt; Let me know if that all made sense or if you view this differently.

Ah oops!  I was in a bit of a rush/anger to rewrite this, as I had done it once and then accidentally `git checkout`d my repo, which killed all my work :/
Looks like I missed a few things when redoing it :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1513454</commentid>
    <comment_count>5</comment_count>
      <attachid>363858</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-03-07 01:39:14 -0800</bug_when>
    <thetext>Created attachment 363858
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1513455</commentid>
    <comment_count>6</comment_count>
      <attachid>363859</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-03-07 01:40:09 -0800</bug_when>
    <thetext>Created attachment 363859
Patch

Oops.  Copypasta :P</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1514978</commentid>
    <comment_count>7</comment_count>
      <attachid>363859</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2019-03-11 13:48:23 -0700</bug_when>
    <thetext>Comment on attachment 363859
Patch

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

r=me

&gt; Source/WebInspectorUI/UserInterface/Controllers/DOMDebuggerManager.js:180
&gt; +        if (!breakpoint.disabled) {
&gt; +            this._updateDOMBreakpoint(breakpoint, WI.assumingMainTarget());
&gt; +        }

Style: No braces

&gt; Source/WebInspectorUI/UserInterface/Controllers/DOMDebuggerManager.js:256
&gt; +            for (let target of WI.targets)
&gt; +                this._updateEventBreakpoint(breakpoint, target);

It would make more sense to me to put the if (target.DOMDebuggerAgent) here in this loop then buried in _updateEventBreakpoint. It could be an assert there.

&gt; Source/WebInspectorUI/UserInterface/Controllers/DOMDebuggerManager.js:328
&gt; +            for (let target of WI.targets)
&gt; +                this._updateURLBreakpoint(breakpoint, target);

It would make more sense to me to put the if (target.DOMDebuggerAgent) here in this loop then buried in _updateURLBreakpoint. It could be an assert there.

&gt; Source/WebInspectorUI/UserInterface/Controllers/DOMDebuggerManager.js:542
&gt; +        for (let target of WI.targets)
&gt; +            this._updateDOMBreakpoint(breakpoint, target);

It would make more sense to me to put the if (target.DOMDebuggerAgent) here in this loop then buried in _updateDOMBreakpoint. It could be an assert there.

&gt; Source/WebInspectorUI/UserInterface/Controllers/DOMDebuggerManager.js:549
&gt; +        for (let target of WI.targets)

Ditto

&gt; Source/WebInspectorUI/UserInterface/Controllers/DOMDebuggerManager.js:561
&gt; +        for (let target of WI.targets)

Ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1515004</commentid>
    <comment_count>8</comment_count>
      <attachid>364288</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-03-11 14:29:48 -0700</bug_when>
    <thetext>Created attachment 364288
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1515020</commentid>
    <comment_count>9</comment_count>
      <attachid>364288</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-03-11 14:56:37 -0700</bug_when>
    <thetext>Comment on attachment 364288
Patch

Clearing flags on attachment: 364288

Committed r242743: &lt;https://trac.webkit.org/changeset/242743&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1515021</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-03-11 14:56:39 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1515103</commentid>
    <comment_count>11</comment_count>
    <who name="Truitt Savell">tsavell</who>
    <bug_when>2019-03-11 16:54:42 -0700</bug_when>
    <thetext>It appears that the changes in https://trac.webkit.org/changeset/242743/webkit

has caused the test inspector/dom-debugger/dom-breakpoints.html

to become a constant failure. 

History:
https://webkit-test-results.webkit.org/dashboards/flakiness_dashboard.html#showAllRuns=true&amp;tests=inspector%2Fdom-debugger%2Fdom-breakpoints.html

Diff:
--- /Volumes/Data/slave/highsierra-release-tests-wk2/build/layout-test-results/inspector/dom-debugger/dom-breakpoints-expected.txt
+++ /Volumes/Data/slave/highsierra-release-tests-wk2/build/layout-test-results/inspector/dom-debugger/dom-breakpoints-actual.txt
@@ -59,8 +59,6 @@
 PASS: Added &apos;subtree-modified&apos; breakpoint.
 PASS: Added &apos;attribute-modified&apos; breakpoint.
 PASS: Added &apos;node-removed&apos; breakpoint.
-PASS: Removed 3 breakpoints.
-PASS: DOM node should have no breakpoints.
 -- Running test teardown.
 
 -- Running test case: SetBreakpointWithInvalidNodeId</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1515213</commentid>
    <comment_count>12</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-03-11 19:54:46 -0700</bug_when>
    <thetext>(In reply to Truitt Savell from comment #11)
&gt; It appears that the changes in
&gt; https://trac.webkit.org/changeset/242743/webkit
&gt; 
&gt; has caused the test inspector/dom-debugger/dom-breakpoints.html
&gt; 
&gt; to become a constant failure. 
&gt; 
&gt; History:
&gt; https://webkit-test-results.webkit.org/dashboards/flakiness_dashboard.
&gt; html#showAllRuns=true&amp;tests=inspector%2Fdom-debugger%2Fdom-breakpoints.html
&gt; 
&gt; Diff:
&gt; ---
&gt; /Volumes/Data/slave/highsierra-release-tests-wk2/build/layout-test-results/
&gt; inspector/dom-debugger/dom-breakpoints-expected.txt
&gt; +++
&gt; /Volumes/Data/slave/highsierra-release-tests-wk2/build/layout-test-results/
&gt; inspector/dom-debugger/dom-breakpoints-actual.txt
&gt; @@ -59,8 +59,6 @@
&gt;  PASS: Added &apos;subtree-modified&apos; breakpoint.
&gt;  PASS: Added &apos;attribute-modified&apos; breakpoint.
&gt;  PASS: Added &apos;node-removed&apos; breakpoint.
&gt; -PASS: Removed 3 breakpoints.
&gt; -PASS: DOM node should have no breakpoints.
&gt;  -- Running test teardown.
&gt;  
&gt;  -- Running test case: SetBreakpointWithInvalidNodeId
Landed a followup fix &lt;https://trac.webkit.org/changeset/242765/webkit&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>363433</attachid>
            <date>2019-03-02 15:21:01 -0800</date>
            <delta_ts>2019-03-07 01:39:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195248-20190302152101.patch</filename>
            <type>text/plain</type>
            <size>33558</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDk0YzVmZWI1ZGY3MTVjMWFhOWIwNGUxYzc2MTM3
NjI4ZGYyNzBiNjMuLmYyMDZkY2U2ZGRhZmY3YTIyNDZmNDIyY2UxZTI0NzQ1N2FiM2UzNWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDE5LTAzLTAyICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBE
T01EZWJ1Z2dlcjogcHJvdG9jb2wgZXJyb3Igb24gZmlyc3Qgb3BlbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk1MjQ4CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS80ODUzODQ2NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBEb24ndCB0cnkgdG8gY2FsbCBgRE9NRGVidWdnZXJgIGNvbW1hbmRzIHVudGls
IGEgdGFyZ2V0IGhhcyBiZWVuIGluaXRpYWxpemVkLgorICAgICAgICBTdGlsbCBhdHRlbXB0IHRv
IHJlc29sdmUgRE9NIGJyZWFrcG9pbnRzIHdoZW5ldmVyIHRoZSBtYWluIHJlc291cmNlL2ZyYW1l
IGNoYW5nZXMuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0RPTURlYnVn
Z2VyTWFuYWdlci5qczoKKyAgICAgICAgKFdJLkRPTURlYnVnZ2VyTWFuYWdlcik6CisgICAgICAg
IChXSS5ET01EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLmluaXRpYWxpemVUYXJnZXQpOiBBZGRl
ZC4KKyAgICAgICAgKFdJLkRPTURlYnVnZ2VyTWFuYWdlci5zdXBwb3J0c0V2ZW50QnJlYWtwb2lu
dHMpOgorICAgICAgICAoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5nZXQgc3VwcG9y
dGVkKToKKyAgICAgICAgKFdJLkRPTURlYnVnZ2VyTWFuYWdlci5wcm90b3R5cGUuYWRkRE9NQnJl
YWtwb2ludCk6CisgICAgICAgIChXSS5ET01EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLnJlbW92
ZURPTUJyZWFrcG9pbnQpOgorICAgICAgICAoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlw
ZS5hZGRFdmVudEJyZWFrcG9pbnQpOgorICAgICAgICAoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLnBy
b3RvdHlwZS5yZW1vdmVFdmVudEJyZWFrcG9pbnQpOgorICAgICAgICAoV0kuRE9NRGVidWdnZXJN
YW5hZ2VyLnByb3RvdHlwZS5hZGRVUkxCcmVha3BvaW50KToKKyAgICAgICAgKFdJLkRPTURlYnVn
Z2VyTWFuYWdlci5wcm90b3R5cGUucmVtb3ZlVVJMQnJlYWtwb2ludCk6CisgICAgICAgIChXSS5E
T01EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLl9zcGVjdWxhdGl2ZWx5UmVzb2x2ZURPTUJyZWFr
cG9pbnRzRm9yVVJMKTogQWRkZWQuCisgICAgICAgIChXSS5ET01EZWJ1Z2dlck1hbmFnZXIucHJv
dG90eXBlLl9yZXNvbHZlRE9NQnJlYWtwb2ludCk6CisgICAgICAgIChXSS5ET01EZWJ1Z2dlck1h
bmFnZXIucHJvdG90eXBlLl91cGRhdGVET01CcmVha3BvaW50KToKKyAgICAgICAgKFdJLkRPTURl
YnVnZ2VyTWFuYWdlci5wcm90b3R5cGUuX3VwZGF0ZUV2ZW50QnJlYWtwb2ludCk6CisgICAgICAg
IChXSS5ET01EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLl91cGRhdGVVUkxCcmVha3BvaW50KToK
KyAgICAgICAgKFdJLkRPTURlYnVnZ2VyTWFuYWdlci5wcm90b3R5cGUuX3NhdmVET01CcmVha3Bv
aW50cyk6CisgICAgICAgIChXSS5ET01EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLl9oYW5kbGVE
T01CcmVha3BvaW50RGlzYWJsZWRTdGF0ZUNoYW5nZWQpOgorICAgICAgICAoV0kuRE9NRGVidWdn
ZXJNYW5hZ2VyLnByb3RvdHlwZS5faGFuZGxlRXZlbnRCcmVha3BvaW50RGlzYWJsZWRTdGF0ZUNo
YW5nZWQpOgorICAgICAgICAoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5faGFuZGxl
VVJMQnJlYWtwb2ludERpc2FibGVkU3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKFdJLkRPTURlYnVn
Z2VyTWFuYWdlci5wcm90b3R5cGUuX21haW5GcmFtZURpZENoYW5nZSk6CisgICAgICAgIChXSS5E
T01EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLl9tYWluUmVzb3VyY2VEaWRDaGFuZ2UpOgorICAg
ICAgICAoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5yZW1vdmVFdmVudEJyZWFrcG9p
bnQuYnJlYWtwb2ludFJlbW92ZWQpOiBEZWxldGVkLgorICAgICAgICAoV0kuRE9NRGVidWdnZXJN
YW5hZ2VyLnByb3RvdHlwZS5fc3BlY3VsYXRpdmVseVJlc29sdmVCcmVha3BvaW50cyk6IERlbGV0
ZWQuCisgICAgICAgIChXSS5ET01EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLl91cGRhdGVET01C
cmVha3BvaW50LmJyZWFrcG9pbnRVcGRhdGVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkRPTURl
YnVnZ2VyTWFuYWdlci5wcm90b3R5cGUuX3Jlc29sdmVFdmVudEJyZWFrcG9pbnQpOiBEZWxldGVk
LgorICAgICAgICAoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5fcmVzb2x2ZVVSTEJy
ZWFrcG9pbnQpOiBEZWxldGVkLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9CYXNlL011bHRp
bWFwLmpzOiBBZGRlZC4KKyAgICAgICAgKE11bHRpbWFwKToKKyAgICAgICAgKE11bHRpbWFwLnBy
b3RvdHlwZS5nZXQpOgorICAgICAgICAoTXVsdGltYXAucHJvdG90eXBlLmFkZCk6CisgICAgICAg
IChNdWx0aW1hcC5wcm90b3R5cGUuZGVsZXRlKToKKyAgICAgICAgKE11bHRpbWFwLnByb3RvdHlw
ZS5jbGVhcik6CisgICAgICAgIChNdWx0aW1hcC5wcm90b3R5cGUua2V5cyk6CisgICAgICAgIChN
dWx0aW1hcC5wcm90b3R5cGUuKnZhbHVlcyk6CisgICAgICAgIChNdWx0aW1hcC5wcm90b3R5cGUu
KltTeW1ib2wuaXRlcmF0b3JdKToKKyAgICAgICAgKE11bHRpbWFwLnByb3RvdHlwZS50b0pTT04p
OgorICAgICAgICAqIC5lc2xpbnRyYzoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01haW4uaHRt
bDoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Rlc3QuaHRtbDoKKyAgICAgICAgSGVscGVyIGRh
dGEgc3RydWN0dXJlIGZvciBtYW5hZ2luZyBNYXBzIG9mIFNldHMgKGUuZy4gYWxsIERPTSBicmVh
a3BvaW50cyBmb3IgYSBVUkwpLgorCiAyMDE5LTAzLTAyICBEZXZpbiBSb3Vzc28gIDxkcm91c3Nv
QGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBEZWJ1Z2dlcjogRE9NLCBVUkws
IGFuZCBFdmVudCBicmVha3BvaW50cyBkb24ndCBncmV5IG91dCB3aGVuIGFsbCBicmVha3BvaW50
cyBhcmUgZGlzYWJsZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS8uZXNsaW50
cmMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvLmVzbGludHJjCmluZGV4IGQyMDEwNDM1NmQ4ZDNh
MTMxNjE4Nzk0ZjM0ZTQzNmNjYWMxNjkzNGUuLmU1MDNmN2M3NWQ5NjhhNzRiNzU0MjU1MDg5NWFh
ZGZmNjI1NTI2NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS8uZXNsaW50cmMK
KysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJLy5lc2xpbnRyYwpAQCAtNzYsNiArNzYsNyBAQAog
ICAgICAgICAiSW5zcGVjdG9yVGVzdCI6IHRydWUsCiAgICAgICAgICJMaW5rZWRMaXN0IjogdHJ1
ZSwKICAgICAgICAgIkxpc3RNdWx0aW1hcCI6IHRydWUsCisgICAgICAgICJNdWx0aW1hcCI6IHRy
dWUsCiAgICAgICAgICJQcm90b2NvbFRlc3QiOiB0cnVlLAogICAgICAgICAiUHJvdG9jb2xUZXN0
SGFybmVzcyI6IHRydWUsCiAgICAgICAgICJTeW5jVGVzdFN1aXRlIjogdHJ1ZSwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvTXVsdGltYXAuanMg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL011bHRpbWFwLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmZlMGJlNzgzOTg1Nzg0OTAyMGIyMTlmMGJjMzY2MGQ5NDZhZTkwYjgKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL011
bHRpbWFwLmpzCkBAIC0wLDAgKzEsMTAwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworY2xhc3MgTXVsdGltYXAK
K3sKKyAgICBjb25zdHJ1Y3RvcihpdGVtcyA9IFtdKQorICAgIHsKKyAgICAgICAgdGhpcy5fbWFw
ID0gbmV3IE1hcDsKKworICAgICAgICBmb3IgKGxldCBba2V5LCB2YWx1ZV0gb2YgaXRlbXMpCisg
ICAgICAgICAgICB0aGlzLmFkZChrZXksIHZhbHVlKTsKKyAgICB9CisKKyAgICAvLyBQdWJsaWMK
KworICAgIGdldChrZXkpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fbWFwLmdldChrZXkp
OworICAgIH0KKworICAgIGFkZChrZXksIHZhbHVlKQorICAgIHsKKyAgICAgICAgbGV0IHZhbHVl
U2V0ID0gdGhpcy5fbWFwLmdldChrZXkpOworICAgICAgICBpZiAoIXZhbHVlU2V0KSB7CisgICAg
ICAgICAgICB2YWx1ZVNldCA9IG5ldyBTZXQ7CisgICAgICAgICAgICB0aGlzLl9tYXAuc2V0KGtl
eSwgdmFsdWVTZXQpOworICAgICAgICB9CisgICAgICAgIHZhbHVlU2V0LmFkZCh2YWx1ZSk7CisK
KyAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgfQorCisgICAgZGVsZXRlKGtleSwgdmFsdWUpCisg
ICAgeworICAgICAgICBsZXQgdmFsdWVTZXQgPSB0aGlzLl9tYXAuZ2V0KGtleSk7CisgICAgICAg
IGlmICghdmFsdWVTZXQpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgbGV0
IGRlbGV0ZWQgPSB2YWx1ZVNldC5kZWxldGUodmFsdWUpOworCisgICAgICAgIC8vIEFsbG93IGFu
IGVudGlyZSBrZXkgdG8gYmUgcmVtb3ZlZCBieSBub3QgcGFzc2luZyBhIHZhbHVlLgorICAgICAg
ICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMSB8fCAhdmFsdWVTZXQuc2l6ZSkKKyAgICAgICAg
ICAgIGRlbGV0ZWQgPSB0aGlzLl9tYXAuZGVsZXRlKGtleSk7CisKKyAgICAgICAgcmV0dXJuIGRl
bGV0ZWQ7CisgICAgfQorCisgICAgY2xlYXIoKQorICAgIHsKKyAgICAgICAgdGhpcy5fbWFwLmNs
ZWFyKCk7CisgICAgfQorCisgICAga2V5cygpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5f
bWFwLmtleXMoKTsKKyAgICB9CisKKyAgICAqdmFsdWVzKCkKKyAgICB7CisgICAgICAgIGZvciAo
bGV0IHZhbHVlU2V0IG9mIHRoaXMuX21hcC52YWx1ZXMoKSkgeworICAgICAgICAgICAgZm9yIChs
ZXQgdmFsdWUgb2YgdmFsdWVTZXQpCisgICAgICAgICAgICAgICAgeWllbGQgdmFsdWU7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICAqW1N5bWJvbC5pdGVyYXRvcl0oKQorICAgIHsKKyAgICAgICAg
Zm9yIChsZXQgW2tleSwgdmFsdWVTZXRdIG9mIHRoaXMuX21hcCkgeworICAgICAgICAgICAgZm9y
IChsZXQgdmFsdWUgb2YgdmFsdWVTZXQpCisgICAgICAgICAgICAgICAgeWllbGQgW2tleSwgdmFs
dWVdOworICAgICAgICB9CisgICAgfQorCisgICAgdG9KU09OKCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBBcnJheS5mcm9tKHRoaXMpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0RPTURlYnVnZ2VyTWFuYWdlci5q
cyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0RPTURl
YnVnZ2VyTWFuYWdlci5qcwppbmRleCA5ODQwNTY5OTU1YTFlZTg1Y2YyNTQ0YjljYWU2Y2M4MTg5
OWZiMTFkLi4zYmQ4NTViNzc2ZmMzN2M2ZTU2OTNkNmQ5YTk2MDQxMjU5NjUzZTkxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9ET01E
ZWJ1Z2dlck1hbmFnZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvQ29udHJvbGxlcnMvRE9NRGVidWdnZXJNYW5hZ2VyLmpzCkBAIC0zMCw3ICszMCw3IEBAIFdJ
LkRPTURlYnVnZ2VyTWFuYWdlciA9IGNsYXNzIERPTURlYnVnZ2VyTWFuYWdlciBleHRlbmRzIFdJ
Lk9iamVjdAogICAgICAgICBzdXBlcigpOwogCiAgICAgICAgIHRoaXMuX2RvbUJyZWFrcG9pbnRz
U2V0dGluZyA9IG5ldyBXSS5TZXR0aW5nKCJkb20tYnJlYWtwb2ludHMiLCBbXSk7Ci0gICAgICAg
IHRoaXMuX2RvbUJyZWFrcG9pbnRVUkxNYXAgPSBuZXcgTWFwOworICAgICAgICB0aGlzLl9kb21C
cmVha3BvaW50VVJMTWFwID0gbmV3IE11bHRpbWFwOwogICAgICAgICB0aGlzLl9kb21CcmVha3Bv
aW50RnJhbWVJZGVudGlmaWVyTWFwID0gbmV3IE1hcDsKIAogICAgICAgICB0aGlzLl9ldmVudEJy
ZWFrcG9pbnRTZXR0aW5nID0gbmV3IFdJLlNldHRpbmcoImV2ZW50LWJyZWFrcG9pbnRzIiwgW10p
OwpAQCAtNjksMTAgKzY5LDI5IEBAIFdJLkRPTURlYnVnZ2VyTWFuYWdlciA9IGNsYXNzIERPTURl
YnVnZ2VyTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICAgICAgICAgIHRoaXMuYWRk
VVJMQnJlYWtwb2ludChXSS5VUkxCcmVha3BvaW50LmRlc2VyaWFsaXplKHNlcmlhbGl6ZWRJbmZv
KSk7CiAKICAgICAgICAgICAgIHRoaXMuX3Jlc3RvcmluZ0JyZWFrcG9pbnRzID0gZmFsc2U7Ci0g
ICAgICAgICAgICB0aGlzLl9zcGVjdWxhdGl2ZWx5UmVzb2x2ZUJyZWFrcG9pbnRzKCk7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICAvLyBUYXJnZXQKKworICAgIGluaXRpYWxpemVUYXJnZXQodGFy
Z2V0KQorICAgIHsKKyAgICAgICAgaWYgKHRhcmdldC5ET01EZWJ1Z2dlckFnZW50KSB7CisgICAg
ICAgICAgICBpZiAodGFyZ2V0Lm1haW5SZXNvdXJjZSkKKyAgICAgICAgICAgICAgICB0aGlzLl9z
cGVjdWxhdGl2ZWx5UmVzb2x2ZURPTUJyZWFrcG9pbnRzRm9yVVJMKHRhcmdldC5tYWluUmVzb3Vy
Y2UudXJsKTsKKworICAgICAgICAgICAgZm9yIChsZXQgYnJlYWtwb2ludCBvZiB0aGlzLl9ldmVu
dEJyZWFrcG9pbnRzKSB7CisgICAgICAgICAgICAgICAgaWYgKCFicmVha3BvaW50LmRpc2FibGVk
KQorICAgICAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVFdmVudEJyZWFrcG9pbnQoYnJlYWtw
b2ludCwgdGFyZ2V0KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZm9yIChsZXQgYnJl
YWtwb2ludCBvZiB0aGlzLl91cmxCcmVha3BvaW50cykgeworICAgICAgICAgICAgICAgIGlmICgh
YnJlYWtwb2ludC5kaXNhYmxlZCkKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlVVJM
QnJlYWtwb2ludChicmVha3BvaW50LCB0YXJnZXQpOworICAgICAgICAgICAgfQogCiAgICAgICAg
ICAgICBpZiAoIXRoaXMuX2FsbFJlcXVlc3RzQnJlYWtwb2ludC5kaXNhYmxlZCkKLSAgICAgICAg
ICAgICAgICB0aGlzLl91cGRhdGVVUkxCcmVha3BvaW50KHRoaXMuX2FsbFJlcXVlc3RzQnJlYWtw
b2ludCk7CisgICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlVVJMQnJlYWtwb2ludCh0aGlzLl9h
bGxSZXF1ZXN0c0JyZWFrcG9pbnQsIHRhcmdldCk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTgw
LDcgKzk5LDcgQEAgV0kuRE9NRGVidWdnZXJNYW5hZ2VyID0gY2xhc3MgRE9NRGVidWdnZXJNYW5h
Z2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICBzdGF0aWMgc3VwcG9ydHNFdmVudEJyZWFrcG9p
bnRzKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBET01EZWJ1Z2dlckFnZW50LnNldEV2ZW50QnJl
YWtwb2ludCAmJiBET01EZWJ1Z2dlckFnZW50LnJlbW92ZUV2ZW50QnJlYWtwb2ludDsKKyAgICAg
ICAgcmV0dXJuIEluc3BlY3RvckJhY2tlbmQuZG9tYWlucy5ET01EZWJ1Z2dlci5zZXRFdmVudEJy
ZWFrcG9pbnQgJiYgSW5zcGVjdG9yQmFja2VuZC5kb21haW5zLkRPTURlYnVnZ2VyLnJlbW92ZUV2
ZW50QnJlYWtwb2ludDsKICAgICB9CiAKICAgICBzdGF0aWMgc3VwcG9ydHNVUkxCcmVha3BvaW50
cygpCkBAIC05Miw3ICsxMTEsNyBAQCBXSS5ET01EZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBET01E
ZWJ1Z2dlck1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgIGdldCBzdXBwb3J0ZWQoKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuICEhd2luZG93LkRPTURlYnVnZ2VyQWdlbnQ7CisgICAgICAg
IHJldHVybiAhIUluc3BlY3RvckJhY2tlbmQuZG9tYWlucy5ET01EZWJ1Z2dlcjsKICAgICB9CiAK
ICAgICBnZXQgYWxsUmVxdWVzdHNCcmVha3BvaW50KCkgeyByZXR1cm4gdGhpcy5fYWxsUmVxdWVz
dHNCcmVha3BvaW50OyB9CkBAIC0xNTQsMTUgKzE3MywxMiBAQCBXSS5ET01EZWJ1Z2dlck1hbmFn
ZXIgPSBjbGFzcyBET01EZWJ1Z2dlck1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGxldCBicmVha3BvaW50cyA9IHRoaXMu
X2RvbUJyZWFrcG9pbnRVUkxNYXAuZ2V0KGJyZWFrcG9pbnQudXJsKTsKLSAgICAgICAgaWYgKCFi
cmVha3BvaW50cykgewotICAgICAgICAgICAgYnJlYWtwb2ludHMgPSBbYnJlYWtwb2ludF07Ci0g
ICAgICAgICAgICB0aGlzLl9kb21CcmVha3BvaW50VVJMTWFwLnNldChicmVha3BvaW50LnVybCwg
YnJlYWtwb2ludHMpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGJyZWFrcG9pbnRzLnB1
c2goYnJlYWtwb2ludCk7CisgICAgICAgIHRoaXMuX2RvbUJyZWFrcG9pbnRVUkxNYXAuYWRkKGJy
ZWFrcG9pbnQudXJsLCBicmVha3BvaW50KTsKIAotICAgICAgICBpZiAoYnJlYWtwb2ludC5kb21O
b2RlSWRlbnRpZmllcikKLSAgICAgICAgICAgIHRoaXMuX3Jlc29sdmVET01CcmVha3BvaW50KGJy
ZWFrcG9pbnQsIGJyZWFrcG9pbnQuZG9tTm9kZUlkZW50aWZpZXIpOworICAgICAgICBpZiAoIWJy
ZWFrcG9pbnQuZGlzYWJsZWQpIHsKKyAgICAgICAgICAgIGZvciAobGV0IHRhcmdldCBvZiBXSS50
YXJnZXRzKQorICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZURPTUJyZWFrcG9pbnQoYnJlYWtw
b2ludCwgdGFyZ2V0KTsKKyAgICAgICAgfQogCiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRv
TGlzdGVuZXJzKFdJLkRPTURlYnVnZ2VyTWFuYWdlci5FdmVudC5ET01CcmVha3BvaW50QWRkZWQs
IHticmVha3BvaW50fSk7CiAKQEAgLTE4OCwxNCArMjA0LDEyIEBAIFdJLkRPTURlYnVnZ2VyTWFu
YWdlciA9IGNsYXNzIERPTURlYnVnZ2VyTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogCiAgICAg
ICAgIHRoaXMuX2RldGFjaERPTUJyZWFrcG9pbnQoYnJlYWtwb2ludCk7CiAKLSAgICAgICAgbGV0
IHVybEJyZWFrcG9pbnRzID0gdGhpcy5fZG9tQnJlYWtwb2ludFVSTE1hcC5nZXQoYnJlYWtwb2lu
dC51cmwpOwotICAgICAgICB1cmxCcmVha3BvaW50cy5yZW1vdmUoYnJlYWtwb2ludCwgdHJ1ZSk7
CisgICAgICAgIHRoaXMuX2RvbUJyZWFrcG9pbnRVUkxNYXAuZGVsZXRlKGJyZWFrcG9pbnQudXJs
KTsKIAotICAgICAgICBpZiAoIWJyZWFrcG9pbnQuZGlzYWJsZWQpCi0gICAgICAgICAgICBET01E
ZWJ1Z2dlckFnZW50LnJlbW92ZURPTUJyZWFrcG9pbnQobm9kZUlkZW50aWZpZXIsIGJyZWFrcG9p
bnQudHlwZSk7Ci0KLSAgICAgICAgaWYgKCF1cmxCcmVha3BvaW50cy5sZW5ndGgpCi0gICAgICAg
ICAgICB0aGlzLl9kb21CcmVha3BvaW50VVJMTWFwLmRlbGV0ZShicmVha3BvaW50LnVybCk7Cisg
ICAgICAgIGlmICghYnJlYWtwb2ludC5kaXNhYmxlZCkgeworICAgICAgICAgICAgZm9yIChsZXQg
dGFyZ2V0IG9mIFdJLnRhcmdldHMpCisgICAgICAgICAgICAgICAgdGFyZ2V0LkRPTURlYnVnZ2Vy
QWdlbnQucmVtb3ZlRE9NQnJlYWtwb2ludChub2RlSWRlbnRpZmllciwgYnJlYWtwb2ludC50eXBl
KTsKKyAgICAgICAgfQogCiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJ
LkRPTURlYnVnZ2VyTWFuYWdlci5FdmVudC5ET01CcmVha3BvaW50UmVtb3ZlZCwge2JyZWFrcG9p
bnR9KTsKIApAQCAtMjM3LDcgKzI1MSwxMSBAQCBXSS5ET01EZWJ1Z2dlck1hbmFnZXIgPSBjbGFz
cyBET01EZWJ1Z2dlck1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgICAgICB0aGlzLmRp
c3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5ET01EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuRXZlbnRC
cmVha3BvaW50QWRkZWQsIHticmVha3BvaW50fSk7CiAKLSAgICAgICAgdGhpcy5fcmVzb2x2ZUV2
ZW50QnJlYWtwb2ludChicmVha3BvaW50KTsKKyAgICAgICAgaWYgKCFicmVha3BvaW50LmRpc2Fi
bGVkKSB7CisgICAgICAgICAgICBmb3IgKGxldCB0YXJnZXQgb2YgV0kudGFyZ2V0cykKKyAgICAg
ICAgICAgICAgICB0aGlzLl91cGRhdGVFdmVudEJyZWFrcG9pbnQoYnJlYWtwb2ludCwgdGFyZ2V0
KTsKKyAgICAgICAgfQorCiAgICAgICAgIHRoaXMuX3NhdmVFdmVudEJyZWFrcG9pbnRzKCk7CiAg
ICAgfQogCkBAIC0yNjQsMTkgKzI4MiwxNiBAQCBXSS5ET01EZWJ1Z2dlck1hbmFnZXIgPSBjbGFz
cyBET01EZWJ1Z2dlck1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgaWYgKGJyZWFr
cG9pbnQuZGlzYWJsZWQpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgZnVuY3Rpb24g
YnJlYWtwb2ludFJlbW92ZWQoZXJyb3IpIHsKLSAgICAgICAgICAgIGlmIChlcnJvcikKLSAgICAg
ICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTsKLSAgICAgICAgfQorICAgICAgICBmb3Ig
KGxldCB0YXJnZXQgb2YgV0kudGFyZ2V0cykgeworICAgICAgICAgICAgLy8gQ29tcGF0aWJpbGl0
eSAoaU9TIDEyKTogRE9NRGVidWdnZXJBZ2VudC5yZW1vdmVFdmVudEJyZWFrcG9pbnQgZGlkIG5v
dCBleGlzdC4KKyAgICAgICAgICAgIGlmICghV0kuRE9NRGVidWdnZXJNYW5hZ2VyLnN1cHBvcnRz
RXZlbnRCcmVha3BvaW50cygpKSB7CisgICAgICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoYnJl
YWtwb2ludC50eXBlID09PSBXSS5FdmVudEJyZWFrcG9pbnQuVHlwZS5MaXN0ZW5lcik7CisgICAg
ICAgICAgICAgICAgdGFyZ2V0LkRPTURlYnVnZ2VyQWdlbnQucmVtb3ZlRXZlbnRMaXN0ZW5lckJy
ZWFrcG9pbnQoYnJlYWtwb2ludC5ldmVudE5hbWUpOworICAgICAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICAgICAgfQogCi0gICAgICAgIC8vIENvbXBhdGliaWxpdHkgKGlPUyAxMik6IERP
TURlYnVnZ2VyQWdlbnQucmVtb3ZlRXZlbnRCcmVha3BvaW50IGRpZCBub3QgZXhpc3QuCi0gICAg
ICAgIGlmICghV0kuRE9NRGVidWdnZXJNYW5hZ2VyLnN1cHBvcnRzRXZlbnRCcmVha3BvaW50cygp
KSB7Ci0gICAgICAgICAgICBjb25zb2xlLmFzc2VydChicmVha3BvaW50LnR5cGUgPT09IFdJLkV2
ZW50QnJlYWtwb2ludC5UeXBlLkxpc3RlbmVyKTsKLSAgICAgICAgICAgIERPTURlYnVnZ2VyQWdl
bnQucmVtb3ZlRXZlbnRMaXN0ZW5lckJyZWFrcG9pbnQoYnJlYWtwb2ludC5ldmVudE5hbWUsIGJy
ZWFrcG9pbnRSZW1vdmVkKTsKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHRhcmdl
dC5ET01EZWJ1Z2dlckFnZW50LnJlbW92ZUV2ZW50QnJlYWtwb2ludChicmVha3BvaW50LnR5cGUs
IGJyZWFrcG9pbnQuZXZlbnROYW1lKTsKICAgICAgICAgfQotCi0gICAgICAgIERPTURlYnVnZ2Vy
QWdlbnQucmVtb3ZlRXZlbnRCcmVha3BvaW50KGJyZWFrcG9pbnQudHlwZSwgYnJlYWtwb2ludC5l
dmVudE5hbWUsIGJyZWFrcG9pbnRSZW1vdmVkKTsKICAgICB9CiAKICAgICB1cmxCcmVha3BvaW50
Rm9yVVJMKHVybCkKQEAgLTMwNiw3ICszMjEsMTEgQEAgV0kuRE9NRGVidWdnZXJNYW5hZ2VyID0g
Y2xhc3MgRE9NRGVidWdnZXJNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICAgICAgdGhp
cy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlVS
TEJyZWFrcG9pbnRBZGRlZCwge2JyZWFrcG9pbnR9KTsKIAotICAgICAgICB0aGlzLl9yZXNvbHZl
VVJMQnJlYWtwb2ludChicmVha3BvaW50KTsKKyAgICAgICAgaWYgKCFicmVha3BvaW50LmRpc2Fi
bGVkKSB7CisgICAgICAgICAgICBmb3IgKGxldCB0YXJnZXQgb2YgV0kudGFyZ2V0cykKKyAgICAg
ICAgICAgICAgICB0aGlzLl91cGRhdGVVUkxCcmVha3BvaW50KGJyZWFrcG9pbnQsIHRhcmdldCk7
CisgICAgICAgIH0KKwogICAgICAgICB0aGlzLl9zYXZlVVJMQnJlYWtwb2ludHMoKTsKICAgICB9
CiAKQEAgLTMzMywxNyArMzUyLDEyIEBAIFdJLkRPTURlYnVnZ2VyTWFuYWdlciA9IGNsYXNzIERP
TURlYnVnZ2VyTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICBpZiAoYnJlYWtwb2lu
dC5kaXNhYmxlZCkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAvLyBDb21wYXRpYmls
aXR5IChpT1MgMTIuMSk6IERPTURlYnVnZ2VyQWdlbnQucmVtb3ZlVVJMQnJlYWtwb2ludCBkaWQg
bm90IGV4aXN0LgotICAgICAgICBpZiAoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLnN1cHBvcnRzVVJM
QnJlYWtwb2ludHMoKSkgewotICAgICAgICAgICAgRE9NRGVidWdnZXJBZ2VudC5yZW1vdmVVUkxC
cmVha3BvaW50KGJyZWFrcG9pbnQudXJsLCAoZXJyb3IpID0+IHsKLSAgICAgICAgICAgICAgICBp
ZiAoZXJyb3IpCi0gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpOwotICAg
ICAgICAgICAgfSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBET01EZWJ1Z2dlckFn
ZW50LnJlbW92ZVhIUkJyZWFrcG9pbnQoYnJlYWtwb2ludC51cmwsIChlcnJvcikgPT4gewotICAg
ICAgICAgICAgICAgIGlmIChlcnJvcikKLSAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJv
cihlcnJvcik7Ci0gICAgICAgICAgICB9KTsKKyAgICAgICAgZm9yIChsZXQgdGFyZ2V0IG9mIFdJ
LnRhcmdldHMpIHsKKyAgICAgICAgICAgIC8vIENvbXBhdGliaWxpdHkgKGlPUyAxMi4xKTogRE9N
RGVidWdnZXJBZ2VudC5yZW1vdmVVUkxCcmVha3BvaW50IGRpZCBub3QgZXhpc3QuCisgICAgICAg
ICAgICBpZiAoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLnN1cHBvcnRzVVJMQnJlYWtwb2ludHMoKSkK
KyAgICAgICAgICAgICAgICB0YXJnZXQuRE9NRGVidWdnZXJBZ2VudC5yZW1vdmVVUkxCcmVha3Bv
aW50KGJyZWFrcG9pbnQudXJsKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0
YXJnZXQuRE9NRGVidWdnZXJBZ2VudC5yZW1vdmVYSFJCcmVha3BvaW50KGJyZWFrcG9pbnQudXJs
KTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMzkzLDMyICs0MDcsMjEgQEAgV0kuRE9NRGVidWdn
ZXJNYW5hZ2VyID0gY2xhc3MgRE9NRGVidWdnZXJNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAg
ICAgICAgIH0KICAgICB9CiAKLSAgICBfc3BlY3VsYXRpdmVseVJlc29sdmVCcmVha3BvaW50cygp
CisgICAgX3NwZWN1bGF0aXZlbHlSZXNvbHZlRE9NQnJlYWtwb2ludHNGb3JVUkwodXJsKQogICAg
IHsKLSAgICAgICAgbGV0IG1haW5GcmFtZSA9IFdJLm5ldHdvcmtNYW5hZ2VyLm1haW5GcmFtZTsK
LSAgICAgICAgaWYgKCFtYWluRnJhbWUpCisgICAgICAgIGxldCBkb21CcmVha3BvaW50cyA9IHRo
aXMuX2RvbUJyZWFrcG9pbnRVUkxNYXAuZ2V0KHVybCk7CisgICAgICAgIGlmICghZG9tQnJlYWtw
b2ludHMpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgbGV0IGRvbUJyZWFrcG9pbnRz
ID0gdGhpcy5fZG9tQnJlYWtwb2ludFVSTE1hcC5nZXQobWFpbkZyYW1lLnVybCk7Ci0gICAgICAg
IGlmIChkb21CcmVha3BvaW50cykgewotICAgICAgICAgICAgZm9yIChsZXQgYnJlYWtwb2ludCBv
ZiBkb21CcmVha3BvaW50cykgewotICAgICAgICAgICAgICAgIGlmIChicmVha3BvaW50LmRvbU5v
ZGVJZGVudGlmaWVyKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAg
ICAgICAgIFdJLmRvbU1hbmFnZXIucHVzaE5vZGVCeVBhdGhUb0Zyb250ZW5kKGJyZWFrcG9pbnQu
cGF0aCwgKG5vZGVJZGVudGlmaWVyKSA9PiB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghbm9k
ZUlkZW50aWZpZXIpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGZv
ciAobGV0IGJyZWFrcG9pbnQgb2YgZG9tQnJlYWtwb2ludHMpIHsKKyAgICAgICAgICAgIGlmIChi
cmVha3BvaW50LmRvbU5vZGVJZGVudGlmaWVyKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOwog
CisgICAgICAgICAgICBXSS5kb21NYW5hZ2VyLnB1c2hOb2RlQnlQYXRoVG9Gcm9udGVuZChicmVh
a3BvaW50LnBhdGgsIChub2RlSWRlbnRpZmllcikgPT4geworICAgICAgICAgICAgICAgIGlmIChu
b2RlSWRlbnRpZmllcikKICAgICAgICAgICAgICAgICAgICAgdGhpcy5fcmVzb2x2ZURPTUJyZWFr
cG9pbnQoYnJlYWtwb2ludCwgbm9kZUlkZW50aWZpZXIpOwotICAgICAgICAgICAgICAgIH0pOwot
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KLQotICAgICAgICBmb3Ig
KGxldCBicmVha3BvaW50IG9mIHRoaXMuX2V2ZW50QnJlYWtwb2ludHMpCi0gICAgICAgICAgICB0
aGlzLl9yZXNvbHZlRXZlbnRCcmVha3BvaW50KGJyZWFrcG9pbnQpOwotCi0gICAgICAgIGZvciAo
bGV0IGJyZWFrcG9pbnQgb2YgdGhpcy5fdXJsQnJlYWtwb2ludHMpCi0gICAgICAgICAgICB0aGlz
Ll9yZXNvbHZlVVJMQnJlYWtwb2ludChicmVha3BvaW50KTsKICAgICB9CiAKICAgICBfcmVzb2x2
ZURPTUJyZWFrcG9pbnQoYnJlYWtwb2ludCwgbm9kZUlkZW50aWZpZXIpCkBAIC00NDMsOTIgKzQ0
Niw3NCBAQCBXSS5ET01EZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBET01EZWJ1Z2dlck1hbmFnZXIg
ZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgICAgICBicmVha3BvaW50LmRvbU5vZGVJZGVudGlmaWVy
ID0gbm9kZUlkZW50aWZpZXI7CiAKLSAgICAgICAgdGhpcy5fdXBkYXRlRE9NQnJlYWtwb2ludChi
cmVha3BvaW50KTsKKyAgICAgICAgdGhpcy5fdXBkYXRlRE9NQnJlYWtwb2ludChicmVha3BvaW50
LCBXSS5hc3N1bWluZ01haW5UYXJnZXQoKSk7CiAgICAgfQogCi0gICAgX3VwZGF0ZURPTUJyZWFr
cG9pbnQoYnJlYWtwb2ludCkKKyAgICBfdXBkYXRlRE9NQnJlYWtwb2ludChicmVha3BvaW50LCB0
YXJnZXQpCiAgICAgewotICAgICAgICBsZXQgbm9kZUlkZW50aWZpZXIgPSBicmVha3BvaW50LmRv
bU5vZGVJZGVudGlmaWVyOwotICAgICAgICBpZiAoIW5vZGVJZGVudGlmaWVyKQorICAgICAgICBp
ZiAoIWJyZWFrcG9pbnQuZG9tTm9kZUlkZW50aWZpZXIpCiAgICAgICAgICAgICByZXR1cm47CiAK
LSAgICAgICAgZnVuY3Rpb24gYnJlYWtwb2ludFVwZGF0ZWQoZXJyb3IpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIGlmIChlcnJvcikKLSAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9y
KTsKLSAgICAgICAgfQorICAgICAgICBpZiAoIXRhcmdldC5ET01EZWJ1Z2dlckFnZW50KQorICAg
ICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmIChicmVha3BvaW50LmRpc2FibGVkKQotICAg
ICAgICAgICAgRE9NRGVidWdnZXJBZ2VudC5yZW1vdmVET01CcmVha3BvaW50KG5vZGVJZGVudGlm
aWVyLCBicmVha3BvaW50LnR5cGUsIGJyZWFrcG9pbnRVcGRhdGVkKTsKKyAgICAgICAgICAgIHRh
cmdldC5ET01EZWJ1Z2dlckFnZW50LnJlbW92ZURPTUJyZWFrcG9pbnQoYnJlYWtwb2ludC5kb21O
b2RlSWRlbnRpZmllciwgYnJlYWtwb2ludC50eXBlKTsKICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgRE9NRGVidWdnZXJBZ2VudC5zZXRET01CcmVha3BvaW50KG5vZGVJZGVudGlmaWVyLCBicmVh
a3BvaW50LnR5cGUsIGJyZWFrcG9pbnRVcGRhdGVkKTsKKyAgICAgICAgICAgIHRhcmdldC5ET01E
ZWJ1Z2dlckFnZW50LnNldERPTUJyZWFrcG9pbnQoYnJlYWtwb2ludC5kb21Ob2RlSWRlbnRpZmll
ciwgYnJlYWtwb2ludC50eXBlKTsKICAgICB9CiAKLSAgICBfdXBkYXRlRXZlbnRCcmVha3BvaW50
KGJyZWFrcG9pbnQpCisgICAgX3VwZGF0ZUV2ZW50QnJlYWtwb2ludChicmVha3BvaW50LCB0YXJn
ZXQpCiAgICAgeworICAgICAgICBpZiAoIXRhcmdldC5ET01EZWJ1Z2dlckFnZW50KQorICAgICAg
ICAgICAgcmV0dXJuOworCiAgICAgICAgIC8vIENvbXBhdGliaWxpdHkgKGlPUyAxMik6IERPTURl
YnVnZ2VyQWdlbnQucmVtb3ZlRXZlbnRCcmVha3BvaW50IGRpZCBub3QgZXhpc3QuCiAgICAgICAg
IGlmICghV0kuRE9NRGVidWdnZXJNYW5hZ2VyLnN1cHBvcnRzRXZlbnRCcmVha3BvaW50cygpKSB7
CiAgICAgICAgICAgICBjb25zb2xlLmFzc2VydChicmVha3BvaW50LnR5cGUgPT09IFdJLkV2ZW50
QnJlYWtwb2ludC5UeXBlLkxpc3RlbmVyKTsKICAgICAgICAgICAgIGlmIChicmVha3BvaW50LmRp
c2FibGVkKQotICAgICAgICAgICAgICAgIERPTURlYnVnZ2VyQWdlbnQucmVtb3ZlRXZlbnRMaXN0
ZW5lckJyZWFrcG9pbnQoYnJlYWtwb2ludC5ldmVudE5hbWUpOworICAgICAgICAgICAgICAgIHRh
cmdldC5ET01EZWJ1Z2dlckFnZW50LnJlbW92ZUV2ZW50TGlzdGVuZXJCcmVha3BvaW50KGJyZWFr
cG9pbnQuZXZlbnROYW1lKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBET01E
ZWJ1Z2dlckFnZW50LnNldEV2ZW50TGlzdGVuZXJCcmVha3BvaW50KGJyZWFrcG9pbnQuZXZlbnRO
YW1lKTsKKyAgICAgICAgICAgICAgICB0YXJnZXQuRE9NRGVidWdnZXJBZ2VudC5zZXRFdmVudExp
c3RlbmVyQnJlYWtwb2ludChicmVha3BvaW50LmV2ZW50TmFtZSk7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoYnJlYWtwb2ludC5kaXNhYmxlZCkKLSAgICAg
ICAgICAgIERPTURlYnVnZ2VyQWdlbnQucmVtb3ZlRXZlbnRCcmVha3BvaW50KGJyZWFrcG9pbnQu
dHlwZSwgYnJlYWtwb2ludC5ldmVudE5hbWUpOworICAgICAgICAgICAgdGFyZ2V0LkRPTURlYnVn
Z2VyQWdlbnQucmVtb3ZlRXZlbnRCcmVha3BvaW50KGJyZWFrcG9pbnQudHlwZSwgYnJlYWtwb2lu
dC5ldmVudE5hbWUpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBET01EZWJ1Z2dlckFnZW50
LnNldEV2ZW50QnJlYWtwb2ludChicmVha3BvaW50LnR5cGUsIGJyZWFrcG9pbnQuZXZlbnROYW1l
KTsKKyAgICAgICAgICAgIHRhcmdldC5ET01EZWJ1Z2dlckFnZW50LnNldEV2ZW50QnJlYWtwb2lu
dChicmVha3BvaW50LnR5cGUsIGJyZWFrcG9pbnQuZXZlbnROYW1lKTsKICAgICB9CiAKLSAgICBf
dXBkYXRlVVJMQnJlYWtwb2ludChicmVha3BvaW50KQorICAgIF91cGRhdGVVUkxCcmVha3BvaW50
KGJyZWFrcG9pbnQsIHRhcmdldCkKICAgICB7CisgICAgICAgIGlmICghdGFyZ2V0LkRPTURlYnVn
Z2VyQWdlbnQpCisgICAgICAgICAgICByZXR1cm47CisKICAgICAgICAgLy8gQ29tcGF0aWJpbGl0
eSAoaU9TIDEyLjEpOiBET01EZWJ1Z2dlckFnZW50LnJlbW92ZVVSTEJyZWFrcG9pbnQgZGlkIG5v
dCBleGlzdC4KICAgICAgICAgaWYgKCFXSS5ET01EZWJ1Z2dlck1hbmFnZXIuc3VwcG9ydHNVUkxC
cmVha3BvaW50cygpKSB7CiAgICAgICAgICAgICBpZiAoYnJlYWtwb2ludC5kaXNhYmxlZCkKLSAg
ICAgICAgICAgICAgICBET01EZWJ1Z2dlckFnZW50LnJlbW92ZVhIUkJyZWFrcG9pbnQoYnJlYWtw
b2ludC51cmwpOworICAgICAgICAgICAgICAgIHRhcmdldC5ET01EZWJ1Z2dlckFnZW50LnJlbW92
ZVhIUkJyZWFrcG9pbnQoYnJlYWtwb2ludC51cmwpOwogICAgICAgICAgICAgZWxzZSB7CiAgICAg
ICAgICAgICAgICAgbGV0IGlzUmVnZXggPSBicmVha3BvaW50LnR5cGUgPT09IFdJLlVSTEJyZWFr
cG9pbnQuVHlwZS5SZWd1bGFyRXhwcmVzc2lvbjsKLSAgICAgICAgICAgICAgICBEZWJ1Z2dlckFn
ZW50LnNldFhIUkJyZWFrcG9pbnQoYnJlYWtwb2ludC51cmwsIGlzUmVnZXgpOworICAgICAgICAg
ICAgICAgIHRhcmdldC5ET01EZWJ1Z2dlckFnZW50LnNldFhIUkJyZWFrcG9pbnQoYnJlYWtwb2lu
dC51cmwsIGlzUmVnZXgpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAKICAgICAgICAgaWYgKGJyZWFrcG9pbnQuZGlzYWJsZWQpCi0gICAgICAgICAgICBE
T01EZWJ1Z2dlckFnZW50LnJlbW92ZVVSTEJyZWFrcG9pbnQoYnJlYWtwb2ludC51cmwpOworICAg
ICAgICAgICAgdGFyZ2V0LkRPTURlYnVnZ2VyQWdlbnQucmVtb3ZlVVJMQnJlYWtwb2ludChicmVh
a3BvaW50LnVybCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgbGV0IGlzUmVnZXggPSBi
cmVha3BvaW50LnR5cGUgPT09IFdJLlVSTEJyZWFrcG9pbnQuVHlwZS5SZWd1bGFyRXhwcmVzc2lv
bjsKLSAgICAgICAgICAgIERPTURlYnVnZ2VyQWdlbnQuc2V0VVJMQnJlYWtwb2ludChicmVha3Bv
aW50LnVybCwgaXNSZWdleCk7CisgICAgICAgICAgICB0YXJnZXQuRE9NRGVidWdnZXJBZ2VudC5z
ZXRVUkxCcmVha3BvaW50KGJyZWFrcG9pbnQudXJsLCBpc1JlZ2V4KTsKICAgICAgICAgfQogICAg
IH0KIAotICAgIF9yZXNvbHZlRXZlbnRCcmVha3BvaW50KGJyZWFrcG9pbnQpCi0gICAgewotICAg
ICAgICBpZiAoYnJlYWtwb2ludC5kaXNhYmxlZCkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAg
ICAgICB0aGlzLl91cGRhdGVFdmVudEJyZWFrcG9pbnQoYnJlYWtwb2ludCk7Ci0gICAgfQotCi0g
ICAgX3Jlc29sdmVVUkxCcmVha3BvaW50KGJyZWFrcG9pbnQpCi0gICAgewotICAgICAgICBpZiAo
YnJlYWtwb2ludC5kaXNhYmxlZCkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB0aGlz
Ll91cGRhdGVVUkxCcmVha3BvaW50KGJyZWFrcG9pbnQpOwotICAgIH0KLQogICAgIF9zYXZlRE9N
QnJlYWtwb2ludHMoKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX3Jlc3RvcmluZ0JyZWFrcG9p
bnRzKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGxldCBicmVha3BvaW50c1RvU2F2
ZSA9IFtdOwotICAgICAgICBmb3IgKGxldCBicmVha3BvaW50cyBvZiB0aGlzLl9kb21CcmVha3Bv
aW50VVJMTWFwLnZhbHVlcygpKQotICAgICAgICAgICAgYnJlYWtwb2ludHNUb1NhdmUgPSBicmVh
a3BvaW50c1RvU2F2ZS5jb25jYXQoYnJlYWtwb2ludHMpOwotCi0gICAgICAgIHRoaXMuX2RvbUJy
ZWFrcG9pbnRzU2V0dGluZy52YWx1ZSA9IGJyZWFrcG9pbnRzVG9TYXZlLm1hcCgoYnJlYWtwb2lu
dCkgPT4gYnJlYWtwb2ludC5zZXJpYWxpemFibGVJbmZvKTsKKyAgICAgICAgdGhpcy5fZG9tQnJl
YWtwb2ludHNTZXR0aW5nLnZhbHVlID0gQXJyYXkuZnJvbSh0aGlzLl9kb21CcmVha3BvaW50VVJM
TWFwLnZhbHVlcygpKS5tYXAoKGJyZWFrcG9pbnQpID0+IGJyZWFrcG9pbnQuc2VyaWFsaXphYmxl
SW5mbyk7CiAgICAgfQogCiAgICAgX3NhdmVFdmVudEJyZWFrcG9pbnRzKCkKQEAgLTU1MCwxNCAr
NTM1LDE2IEBAIFdJLkRPTURlYnVnZ2VyTWFuYWdlciA9IGNsYXNzIERPTURlYnVnZ2VyTWFuYWdl
ciBleHRlbmRzIFdJLk9iamVjdAogICAgIF9oYW5kbGVET01CcmVha3BvaW50RGlzYWJsZWRTdGF0
ZUNoYW5nZWQoZXZlbnQpCiAgICAgewogICAgICAgICBsZXQgYnJlYWtwb2ludCA9IGV2ZW50LnRh
cmdldDsKLSAgICAgICAgdGhpcy5fdXBkYXRlRE9NQnJlYWtwb2ludChicmVha3BvaW50KTsKKyAg
ICAgICAgZm9yIChsZXQgdGFyZ2V0IG9mIFdJLnRhcmdldHMpCisgICAgICAgICAgICB0aGlzLl91
cGRhdGVET01CcmVha3BvaW50KGJyZWFrcG9pbnQsIHRhcmdldCk7CiAgICAgICAgIHRoaXMuX3Nh
dmVET01CcmVha3BvaW50cygpOwogICAgIH0KIAogICAgIF9oYW5kbGVFdmVudEJyZWFrcG9pbnRE
aXNhYmxlZFN0YXRlQ2hhbmdlZChldmVudCkKICAgICB7CiAgICAgICAgIGxldCBicmVha3BvaW50
ID0gZXZlbnQudGFyZ2V0OwotICAgICAgICB0aGlzLl91cGRhdGVFdmVudEJyZWFrcG9pbnQoYnJl
YWtwb2ludCk7CisgICAgICAgIGZvciAobGV0IHRhcmdldCBvZiBXSS50YXJnZXRzKQorICAgICAg
ICAgICAgdGhpcy5fdXBkYXRlRXZlbnRCcmVha3BvaW50KGJyZWFrcG9pbnQsIHRhcmdldCk7CiAg
ICAgICAgIHRoaXMuX3NhdmVFdmVudEJyZWFrcG9pbnRzKCk7CiAgICAgfQogCkBAIC01NjgsNyAr
NTU1LDggQEAgV0kuRE9NRGVidWdnZXJNYW5hZ2VyID0gY2xhc3MgRE9NRGVidWdnZXJNYW5hZ2Vy
IGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIGlmIChicmVha3BvaW50ID09PSB0aGlzLl9hbGxS
ZXF1ZXN0c0JyZWFrcG9pbnQpCiAgICAgICAgICAgICB0aGlzLl9hbGxSZXF1ZXN0c0JyZWFrcG9p
bnRFbmFibGVkU2V0dGluZy52YWx1ZSA9ICFicmVha3BvaW50LmRpc2FibGVkOwogCi0gICAgICAg
IHRoaXMuX3VwZGF0ZVVSTEJyZWFrcG9pbnQoYnJlYWtwb2ludCk7CisgICAgICAgIGZvciAobGV0
IHRhcmdldCBvZiBXSS50YXJnZXRzKQorICAgICAgICAgICAgdGhpcy5fdXBkYXRlVVJMQnJlYWtw
b2ludChicmVha3BvaW50LCB0YXJnZXQpOwogICAgICAgICB0aGlzLl9zYXZlVVJMQnJlYWtwb2lu
dHMoKTsKICAgICB9CiAKQEAgLTU3OCwyMyArNTY2LDIzIEBAIFdJLkRPTURlYnVnZ2VyTWFuYWdl
ciA9IGNsYXNzIERPTURlYnVnZ2VyTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICB0
aGlzLl9kZXRhY2hCcmVha3BvaW50c0ZvckZyYW1lKGZyYW1lKTsKICAgICB9CiAKLSAgICBfbWFp
bkZyYW1lRGlkQ2hhbmdlKCkKKyAgICBfbWFpbkZyYW1lRGlkQ2hhbmdlKGV2ZW50KQogICAgIHsK
LSAgICAgICAgdGhpcy5fc3BlY3VsYXRpdmVseVJlc29sdmVCcmVha3BvaW50cygpOworICAgICAg
ICB0aGlzLl9zcGVjdWxhdGl2ZWx5UmVzb2x2ZURPTUJyZWFrcG9pbnRzRm9yVVJMKFdJLm5ldHdv
cmtNYW5hZ2VyLm1haW5GcmFtZS51cmwpOwogICAgIH0KIAogICAgIF9tYWluUmVzb3VyY2VEaWRD
aGFuZ2UoZXZlbnQpCiAgICAgewogICAgICAgICBsZXQgZnJhbWUgPSBldmVudC50YXJnZXQ7CiAg
ICAgICAgIGlmIChmcmFtZS5pc01haW5GcmFtZSgpKSB7Ci0gICAgICAgICAgICBmb3IgKGxldCBi
cmVha3BvaW50cyBvZiB0aGlzLl9kb21CcmVha3BvaW50VVJMTWFwLnZhbHVlcygpKQotICAgICAg
ICAgICAgICAgIGJyZWFrcG9pbnRzLmZvckVhY2goKGJyZWFrcG9pbnQpID0+IHsgYnJlYWtwb2lu
dC5kb21Ob2RlSWRlbnRpZmllciA9IG51bGw7IH0pOworICAgICAgICAgICAgZm9yIChsZXQgYnJl
YWtwb2ludCBvZiB0aGlzLl9kb21CcmVha3BvaW50VVJMTWFwLnZhbHVlcygpKQorICAgICAgICAg
ICAgICAgIGJyZWFrcG9pbnQuZG9tTm9kZUlkZW50aWZpZXIgPSBudWxsOwogCiAgICAgICAgICAg
ICB0aGlzLl9kb21CcmVha3BvaW50RnJhbWVJZGVudGlmaWVyTWFwLmNsZWFyKCk7CiAgICAgICAg
IH0gZWxzZQogICAgICAgICAgICAgdGhpcy5fZGV0YWNoQnJlYWtwb2ludHNGb3JGcmFtZShmcmFt
ZSk7CiAKLSAgICAgICAgdGhpcy5fc3BlY3VsYXRpdmVseVJlc29sdmVCcmVha3BvaW50cygpOwor
ICAgICAgICB0aGlzLl9zcGVjdWxhdGl2ZWx5UmVzb2x2ZURPTUJyZWFrcG9pbnRzRm9yVVJMKGZy
YW1lLnVybCk7CiAgICAgfQogCiAgICAgX25vZGVJbnNlcnRlZChldmVudCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbCBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbAppbmRleCBiN2FiMjQzODc2YTE4
MzNkMGViNjdhM2IzYzEwMWUxY2FjODlhMTEwLi4zNjM4YTk0MDZkMDBkMjFkMGI4ZDlmN2QwOTM1
OTI5MGZkOGNhYTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9NYWluLmh0bWwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
TWFpbi5odG1sCkBAIC0yODMsNiArMjgzLDcgQEAKICAgICA8c2NyaXB0IHNyYz0iQmFzZS9EZWJ1
Z2dhYmxlVHlwZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkJhc2UvTGlua2VkTGlz
dC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkJhc2UvTGlzdE11bHRpbWFwLmpzIj48
L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iQmFzZS9NdWx0aW1hcC5qcyI+PC9zY3JpcHQ+CiAg
ICAgPHNjcmlwdCBzcmM9IkJhc2UvT2JqZWN0LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNy
Yz0iQmFzZS9UaHJvdHRsZXIuanMiPjwvc2NyaXB0PgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0Lmh0bWwgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9UZXN0Lmh0bWwKaW5kZXggMWI0ZDZkZWNlNTUyODIyZDlmZDk3YjMx
YWEwMjQwOWVmMWQyZmFhNS4uMmFmZGY4YWZhMmM1NzZkOWM2NGFiMDc3ZjY3ODFlZjRmMjRjNzk5
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC5o
dG1sCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QuaHRtbApA
QCAtNDEsNiArNDEsNyBAQAogICAgIDxzY3JpcHQgc3JjPSJCYXNlL0RlYnVnZ2FibGVUeXBlLmpz
Ij48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQmFzZS9MaW5rZWRMaXN0LmpzIj48L3Njcmlw
dD4KICAgICA8c2NyaXB0IHNyYz0iQmFzZS9MaXN0TXVsdGltYXAuanMiPjwvc2NyaXB0PgorICAg
IDxzY3JpcHQgc3JjPSJCYXNlL011bHRpbWFwLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNy
Yz0iQmFzZS9PYmplY3QuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJCYXNlL1Rocm90
dGxlci5qcyI+PC9zY3JpcHQ+CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBjZDYxZmY1ZTQ5ZWE1ZGJiZGY0MGZlZTY3OGYz
ZDAyZmQwNGQxZTNiLi42YTBjZThjMzcyZDRiMjFmYjJjMTc3ZmYyOGNlZWVkN2I0YjM1MTQzIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTktMDMtMDIgIERldmluIFJvdXNzbyAgPGRyb3Vzc29A
YXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IERPTURlYnVnZ2VyOiBwcm90b2Nv
bCBlcnJvciBvbiBmaXJzdCBvcGVuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xOTUyNDgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ4NTM4NDY1Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVj
dG9yL3VuaXQtdGVzdHMvbXVsdGltYXAuaHRtbDogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9y
L3VuaXQtdGVzdHMvbXVsdGltYXAtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKwogMjAxOS0wMy0wMiAg
V2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBQ
cm9ncmFtbWF0aWMgcGFzdGUgYWNjZXNzIHNob3VsZCBiZSBncmFudGVkIHdoZW4gY29weWluZyBh
bmQgcGFzdGluZyB3aXRoaW4gdGhlIHNhbWUgb3JpZ2luCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvdW5pdC10ZXN0cy9tdWx0aW1hcC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvdW5pdC10ZXN0cy9tdWx0aW1hcC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MjRhNGJhNzg4NDY1ZmFlNWQ2MjUyNDU1MjM0NGE5YTViMzI5YTNhNwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci91bml0LXRlc3RzL211bHRpbWFwLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDYyIEBACitUZXN0aW5nIGFsbCBtZXRob2RzIG9mIE11bHRpbWFwLgorCisK
Kz09IFJ1bm5pbmcgdGVzdCBzdWl0ZTogTXVsdGltYXAKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBN
dWx0aW1hcC5wcm90b3R5cGUuY29uc3RydWN0b3IuRW1wdHkKK1tdCisKKy0tIFJ1bm5pbmcgdGVz
dCBjYXNlOiBNdWx0aW1hcC5wcm90b3R5cGUuY29uc3RydWN0b3IuTm9uRW1wdHkKK1tbInplcm8i
LCJvbmUiXSxbInplcm8iLCJmb3VyIl0sWyJ0d28iLCJ0aHJlZSJdXQorCistLSBSdW5uaW5nIHRl
c3QgY2FzZTogTXVsdGltYXAucHJvdG90eXBlLmFkZC5SZXBlYXRpbmdLZXlzVW5pcXVlVmFsdWVz
CitbWyJ6ZXJvIiwib25lIl0sWyJ6ZXJvIiwidHdvIl1dCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNl
OiBNdWx0aW1hcC5wcm90b3R5cGUuYWRkLlVuaXF1ZUtleXNSZXBlYXRpbmdWYWx1ZXMKK1tbInpl
cm8iLCJvbmUiXSxbInR3byIsIm9uZSJdLFsidGhyZWUiLCJvbmUiXV0KKworLS0gUnVubmluZyB0
ZXN0IGNhc2U6IE11bHRpbWFwLnByb3RvdHlwZS5hZGQuUmVwZWF0aW5nS2V5c1JlcGVhdGluZ1Zh
bHVlcworW1siemVybyIsIm9uZSJdLFsiemVybyIsInRocmVlIl0sWyJ0d28iLCJvbmUiXV0KKwor
LS0gUnVubmluZyB0ZXN0IGNhc2U6IE11bHRpbWFwLnByb3RvdHlwZS5kZWxldGUKK1tbMCwxXSxb
MiwzXV0KK1BBU1M6IFRoZSBrZXkgYW5kIHRoZSB2YWx1ZSB3ZXJlIHN1Y2Nlc3NmdWxseSBkZWxl
dGVkLgorW1syLDNdXQorUEFTUzogVGhlIGtleSBhbmQgdGhlIHZhbHVlIHdlcmUgc3VjY2Vzc2Z1
bGx5IGRlbGV0ZWQuCitbXQorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogTXVsdGltYXAucHJvdG90
eXBlLmRlbGV0ZS5Ob25FeGlzdGluZ1ZhbHVlcworW1swLDFdLFsyLDNdLFs0LDRdXQorUEFTUzog
Tm90aGluZyB3YXMgcmVtb3ZlZCBmb3Iga2V5IDAgYW5kIHZhbHVlIDMuCitQQVNTOiBOb3RoaW5n
IHdhcyByZW1vdmVkIGZvciBrZXkgMCBhbmQgdmFsdWUgNC4KK1BBU1M6IE5vdGhpbmcgd2FzIHJl
bW92ZWQgZm9yIGtleSAyIGFuZCB2YWx1ZSAxLgorUEFTUzogTm90aGluZyB3YXMgcmVtb3ZlZCBm
b3Iga2V5IDIgYW5kIHZhbHVlIDQuCitQQVNTOiBOb3RoaW5nIHdhcyByZW1vdmVkIGZvciBrZXkg
NCBhbmQgdmFsdWUgMS4KK1BBU1M6IE5vdGhpbmcgd2FzIHJlbW92ZWQgZm9yIGtleSA0IGFuZCB2
YWx1ZSAzLgorW1swLDFdLFsyLDNdLFs0LDRdXQorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogTXVs
dGltYXAucHJvdG90eXBlLmRlbGV0ZS5Ob25FeGlzdGluZ0tleXMKK1tbMCwxXSxbMiwzXSxbNCw0
XV0KK1BBU1M6IE5vdGhpbmcgd2FzIHJlbW92ZWQgZm9yIGtleSAxLgorUEFTUzogTm90aGluZyB3
YXMgcmVtb3ZlZCBmb3Iga2V5IDMuCitQQVNTOiBOb3RoaW5nIHdhcyByZW1vdmVkIGZvciBrZXkg
NS4KK1tbMCwxXSxbMiwzXSxbNCw0XV0KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IE11bHRpbWFw
LnByb3RvdHlwZS5kZWxldGUuQWxsVmFsdWVzRm9yS2V5CitbWyJvcG9zc3VtIiwiYmFkZ2VyIl0s
WyJvcG9zc3VtIiwicmFjY29vbiJdLFsicmFjY29vbiIsIm9wb3NzdW0iXV0KK1BBU1M6IE5vdGhp
bmcgd2FzIHJlbW92ZWQgZm9yIGtleSAiYmFkZ2VyIi4KK1tbIm9wb3NzdW0iLCJiYWRnZXIiXSxb
Im9wb3NzdW0iLCJyYWNjb29uIl0sWyJyYWNjb29uIiwib3Bvc3N1bSJdXQorUEFTUzogVmFsdWVz
IHdlcmUgcmVtb3ZlZCBmb3Iga2V5ICJvcG9zc3VtIi4KK1tbInJhY2Nvb24iLCJvcG9zc3VtIl1d
CisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBNdWx0aW1hcC5wcm90b3R5cGUuY2xlYXIKK1tbImJh
ZGdlciIsInJhY2Nvb24iXV0KK1tdCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBNdWx0aW1hcC5w
cm90b3R5cGUua2V5cworW1sib25lIiwidHdvIl0sWyJvbmUiLCJmaXZlIl0sWyJ0aHJlZSIsImZv
dXIiXSxbInRocmVlIiwic2l4Il1dCitbIm9uZSIsInRocmVlIl0KKworLS0gUnVubmluZyB0ZXN0
IGNhc2U6IE11bHRpbWFwLnByb3RvdHlwZS52YWx1ZXMKK1tbIm9uZSIsInR3byJdLFsib25lIiwi
Zml2ZSJdLFsidGhyZWUiLCJmb3VyIl0sWyJ0aHJlZSIsInNpeCJdXQorWyJ0d28iLCJmaXZlIiwi
Zm91ciIsInNpeCJdCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci91bml0LXRl
c3RzL211bHRpbWFwLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdW5pdC10ZXN0cy9tdWx0
aW1hcC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMyZDMxMjRmYTcwM2ZjN2QzYzE5MDU3NTE4NmJmNTA3MmYx
MzRmZGEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdW5pdC10ZXN0
cy9tdWx0aW1hcC5odG1sCkBAIC0wLDAgKzEsMjAyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3Vy
Y2VzL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitmdW5jdGlvbiB0ZXN0
KCkKK3sKKyAgICBsZXQgc3VpdGUgPSBJbnNwZWN0b3JUZXN0LmNyZWF0ZVN5bmNTdWl0ZSgiTXVs
dGltYXAiKTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk11bHRp
bWFwLnByb3RvdHlwZS5jb25zdHJ1Y3Rvci5FbXB0eSIsCisgICAgICAgIHRlc3QoKSB7CisgICAg
ICAgICAgICBsZXQgbXVsdGltYXAgPSBuZXcgTXVsdGltYXA7CisKKyAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QubG9nKG11bHRpbWFwKTsKKyAgICAgICAgfSwKKyAgICB9KTsKKworICAgIHN1aXRl
LmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk11bHRpbWFwLnByb3RvdHlwZS5jb25zdHJ1
Y3Rvci5Ob25FbXB0eSIsCisgICAgICAgIHRlc3QoKSB7CisgICAgICAgICAgICBsZXQgbXVsdGlt
YXAgPSBuZXcgTXVsdGltYXAoW1siemVybyIsICJvbmUiXSwgWyJ0d28iLCAidGhyZWUiXSwgWyJ6
ZXJvIiwgImZvdXIiXV0pOworCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZyhtdWx0aW1h
cCk7CisgICAgICAgIH0sCisgICAgfSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAg
ICAgIG5hbWU6ICJNdWx0aW1hcC5wcm90b3R5cGUuYWRkLlJlcGVhdGluZ0tleXNVbmlxdWVWYWx1
ZXMiLAorICAgICAgICB0ZXN0KCkgeworICAgICAgICAgICAgbGV0IG11bHRpbWFwID0gbmV3IE11
bHRpbWFwOworCisgICAgICAgICAgICBtdWx0aW1hcC5hZGQoInplcm8iLCAib25lIik7CisgICAg
ICAgICAgICBtdWx0aW1hcC5hZGQoInplcm8iLCAidHdvIik7CisKKyAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QubG9nKG11bHRpbWFwKTsKKyAgICAgICAgfSwKKyAgICB9KTsKKworICAgIHN1aXRl
LmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk11bHRpbWFwLnByb3RvdHlwZS5hZGQuVW5p
cXVlS2V5c1JlcGVhdGluZ1ZhbHVlcyIsCisgICAgICAgIHRlc3QoKSB7CisgICAgICAgICAgICBs
ZXQgbXVsdGltYXAgPSBuZXcgTXVsdGltYXA7CisKKyAgICAgICAgICAgIG11bHRpbWFwLmFkZCgi
emVybyIsICJvbmUiKTsKKyAgICAgICAgICAgIG11bHRpbWFwLmFkZCgidHdvIiwgIm9uZSIpOwor
ICAgICAgICAgICAgbXVsdGltYXAuYWRkKCJ0aHJlZSIsICJvbmUiKTsKKworICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5sb2cobXVsdGltYXApOworICAgICAgICB9LAorICAgIH0pOworCisgICAg
c3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTXVsdGltYXAucHJvdG90eXBlLmFk
ZC5SZXBlYXRpbmdLZXlzUmVwZWF0aW5nVmFsdWVzIiwKKyAgICAgICAgdGVzdCgpIHsKKyAgICAg
ICAgICAgIGxldCBtdWx0aW1hcCA9IG5ldyBNdWx0aW1hcDsKKworICAgICAgICAgICAgbXVsdGlt
YXAuYWRkKCJ6ZXJvIiwgIm9uZSIpOworICAgICAgICAgICAgbXVsdGltYXAuYWRkKCJ0d28iLCAi
b25lIik7CisgICAgICAgICAgICBtdWx0aW1hcC5hZGQoInplcm8iLCAib25lIik7CisgICAgICAg
ICAgICBtdWx0aW1hcC5hZGQoInplcm8iLCAidGhyZWUiKTsKKworICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5sb2cobXVsdGltYXApOworICAgICAgICB9LAorICAgIH0pOworCisgICAgc3VpdGUu
YWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTXVsdGltYXAucHJvdG90eXBlLmRlbGV0ZSIs
CisgICAgICAgIHRlc3QoKSB7CisgICAgICAgICAgICBsZXQgbXVsdGltYXAgPSBuZXcgTXVsdGlt
YXA7CisKKyAgICAgICAgICAgIG11bHRpbWFwLmFkZCgwLCAxKTsKKyAgICAgICAgICAgIG11bHRp
bWFwLmFkZCgyLCAzKTsKKyAgICAgICAgICAgIG11bHRpbWFwLmFkZCgyLCAzKTsKKworICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5sb2cobXVsdGltYXApOworCisgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmV4cGVjdFRoYXQobXVsdGltYXAuZGVsZXRlKDAsIDEpLCAiVGhlIGtleSBhbmQgdGhl
IHZhbHVlIHdlcmUgc3VjY2Vzc2Z1bGx5IGRlbGV0ZWQuIik7CisKKyAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QubG9nKG11bHRpbWFwKTsKKworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBl
Y3RUaGF0KG11bHRpbWFwLmRlbGV0ZSgyLCAzKSwgIlRoZSBrZXkgYW5kIHRoZSB2YWx1ZSB3ZXJl
IHN1Y2Nlc3NmdWxseSBkZWxldGVkLiIpOworCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0Lmxv
ZyhtdWx0aW1hcCk7CisgICAgICAgIH0sCisgICAgfSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2Fz
ZSh7CisgICAgICAgIG5hbWU6ICJNdWx0aW1hcC5wcm90b3R5cGUuZGVsZXRlLk5vbkV4aXN0aW5n
VmFsdWVzIiwKKyAgICAgICAgdGVzdCgpIHsKKyAgICAgICAgICAgIGxldCBtdWx0aW1hcCA9IG5l
dyBNdWx0aW1hcDsKKworICAgICAgICAgICAgbXVsdGltYXAuYWRkKDAsIDEpOworICAgICAgICAg
ICAgbXVsdGltYXAuYWRkKDIsIDMpOworICAgICAgICAgICAgbXVsdGltYXAuYWRkKDQsIDQpOwor
CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZyhtdWx0aW1hcCk7CisKKyAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuZXhwZWN0RmFsc2UobXVsdGltYXAuZGVsZXRlKDAsIDMpLCAiTm90aGlu
ZyB3YXMgcmVtb3ZlZCBmb3Iga2V5IDAgYW5kIHZhbHVlIDMuIik7CisgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmV4cGVjdEZhbHNlKG11bHRpbWFwLmRlbGV0ZSgwLCA0KSwgIk5vdGhpbmcgd2Fz
IHJlbW92ZWQgZm9yIGtleSAwIGFuZCB2YWx1ZSA0LiIpOworICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5leHBlY3RGYWxzZShtdWx0aW1hcC5kZWxldGUoMiwgMSksICJOb3RoaW5nIHdhcyByZW1v
dmVkIGZvciBrZXkgMiBhbmQgdmFsdWUgMS4iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
ZXhwZWN0RmFsc2UobXVsdGltYXAuZGVsZXRlKDIsIDQpLCAiTm90aGluZyB3YXMgcmVtb3ZlZCBm
b3Iga2V5IDIgYW5kIHZhbHVlIDQuIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVj
dEZhbHNlKG11bHRpbWFwLmRlbGV0ZSg0LCAxKSwgIk5vdGhpbmcgd2FzIHJlbW92ZWQgZm9yIGtl
eSA0IGFuZCB2YWx1ZSAxLiIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RGYWxz
ZShtdWx0aW1hcC5kZWxldGUoNCwgMyksICJOb3RoaW5nIHdhcyByZW1vdmVkIGZvciBrZXkgNCBh
bmQgdmFsdWUgMy4iKTsKKworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2cobXVsdGltYXAp
OworICAgICAgICB9LAorICAgIH0pOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAg
ICBuYW1lOiAiTXVsdGltYXAucHJvdG90eXBlLmRlbGV0ZS5Ob25FeGlzdGluZ0tleXMiLAorICAg
ICAgICB0ZXN0KCkgeworICAgICAgICAgICAgbGV0IG11bHRpbWFwID0gbmV3IE11bHRpbWFwOwor
CisgICAgICAgICAgICBtdWx0aW1hcC5hZGQoMCwgMSk7CisgICAgICAgICAgICBtdWx0aW1hcC5h
ZGQoMiwgMyk7CisgICAgICAgICAgICBtdWx0aW1hcC5hZGQoNCwgNCk7CisKKyAgICAgICAgICAg
IEluc3BlY3RvclRlc3QubG9nKG11bHRpbWFwKTsKKworICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5leHBlY3RGYWxzZShtdWx0aW1hcC5kZWxldGUoMSksICJOb3RoaW5nIHdhcyByZW1vdmVkIGZv
ciBrZXkgMS4iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RmFsc2UobXVsdGlt
YXAuZGVsZXRlKDMpLCAiTm90aGluZyB3YXMgcmVtb3ZlZCBmb3Iga2V5IDMuIik7CisgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEZhbHNlKG11bHRpbWFwLmRlbGV0ZSg1KSwgIk5vdGhp
bmcgd2FzIHJlbW92ZWQgZm9yIGtleSA1LiIpOworCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmxvZyhtdWx0aW1hcCk7CisgICAgICAgIH0sCisgICAgfSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0
Q2FzZSh7CisgICAgICAgIG5hbWU6ICJNdWx0aW1hcC5wcm90b3R5cGUuZGVsZXRlLkFsbFZhbHVl
c0ZvcktleSIsCisgICAgICAgIHRlc3QoKSB7CisgICAgICAgICAgICBsZXQgbXVsdGltYXAgPSBu
ZXcgTXVsdGltYXA7CisKKyAgICAgICAgICAgIG11bHRpbWFwLmFkZCgib3Bvc3N1bSIsICJiYWRn
ZXIiKTsKKyAgICAgICAgICAgIG11bHRpbWFwLmFkZCgib3Bvc3N1bSIsICJyYWNjb29uIik7Cisg
ICAgICAgICAgICBtdWx0aW1hcC5hZGQoInJhY2Nvb24iLCAib3Bvc3N1bSIpOworCisgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmxvZyhtdWx0aW1hcCk7CisKKyAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuZXhwZWN0RmFsc2UobXVsdGltYXAuZGVsZXRlKCJiYWRnZXIiKSwgYE5vdGhpbmcgd2Fz
IHJlbW92ZWQgZm9yIGtleSAiYmFkZ2VyIi5gKTsKKworICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5sb2cobXVsdGltYXApOworCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQo
bXVsdGltYXAuZGVsZXRlKCJvcG9zc3VtIiksIGBWYWx1ZXMgd2VyZSByZW1vdmVkIGZvciBrZXkg
Im9wb3NzdW0iLmApOworCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZyhtdWx0aW1hcCk7
CisgICAgICAgIH0sCisgICAgfSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAg
IG5hbWU6ICJNdWx0aW1hcC5wcm90b3R5cGUuY2xlYXIiLAorICAgICAgICB0ZXN0KCkgeworICAg
ICAgICAgICAgbGV0IG11bHRpbWFwID0gbmV3IE11bHRpbWFwOworCisgICAgICAgICAgICBtdWx0
aW1hcC5hZGQoImJhZGdlciIsICJyYWNjb29uIik7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRl
c3QubG9nKG11bHRpbWFwKTsKKworICAgICAgICAgICAgbXVsdGltYXAuY2xlYXIoKTsKKworICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2cobXVsdGltYXApOworICAgICAgICB9LAorICAgIH0p
OworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTXVsdGltYXAucHJv
dG90eXBlLmtleXMiLAorICAgICAgICB0ZXN0KCkgeworICAgICAgICAgICAgbGV0IG11bHRpbWFw
ID0gbmV3IE11bHRpbWFwOworCisgICAgICAgICAgICBtdWx0aW1hcC5hZGQoIm9uZSIsICJ0d28i
KTsKKyAgICAgICAgICAgIG11bHRpbWFwLmFkZCgidGhyZWUiLCAiZm91ciIpOworICAgICAgICAg
ICAgbXVsdGltYXAuYWRkKCJvbmUiLCAiZml2ZSIpOworICAgICAgICAgICAgbXVsdGltYXAuYWRk
KCJ0aHJlZSIsICJzaXgiKTsKKworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2cobXVsdGlt
YXApOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coQXJyYXkuZnJvbShtdWx0aW1hcC5r
ZXlzKCkpKTsKKyAgICAgICAgfSwKKyAgICB9KTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsK
KyAgICAgICAgbmFtZTogIk11bHRpbWFwLnByb3RvdHlwZS52YWx1ZXMiLAorICAgICAgICB0ZXN0
KCkgeworICAgICAgICAgICAgbGV0IG11bHRpbWFwID0gbmV3IE11bHRpbWFwOworCisgICAgICAg
ICAgICBtdWx0aW1hcC5hZGQoIm9uZSIsICJ0d28iKTsKKyAgICAgICAgICAgIG11bHRpbWFwLmFk
ZCgidGhyZWUiLCAiZm91ciIpOworICAgICAgICAgICAgbXVsdGltYXAuYWRkKCJvbmUiLCAiZml2
ZSIpOworICAgICAgICAgICAgbXVsdGltYXAuYWRkKCJ0aHJlZSIsICJzaXgiKTsKKworICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5sb2cobXVsdGltYXApOworICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5sb2coQXJyYXkuZnJvbShtdWx0aW1hcC52YWx1ZXMoKSkpOworICAgICAgICB9LAorICAg
IH0pOworCisgICAgc3VpdGUucnVuVGVzdENhc2VzQW5kRmluaXNoKCk7Cit9Cis8L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKyAgICA8cD5UZXN0aW5nIGFsbCBt
ZXRob2RzIG9mIE11bHRpbWFwLjwvcD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>363858</attachid>
            <date>2019-03-07 01:39:14 -0800</date>
            <delta_ts>2019-03-07 01:40:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195248-20190307013913.patch</filename>
            <type>text/plain</type>
            <size>35236</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDZjMDJmYjUxMGU2MjViMTAzYWE4NGU1NzgwYjZk
ODY5MTkyZTFjMmUuLjBkZDMwMTAyZWExY2YyODUxY2NmOWI4MDBlY2Q1YWJlZTliYzI2NzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDE5LTAzLTA3ICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBE
T01EZWJ1Z2dlcjogcHJvdG9jb2wgZXJyb3Igb24gZmlyc3Qgb3BlbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk1MjQ4CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS80ODUzODQ2NT4KKworICAgICAgICBSZXZpZXdlZCBieSBKb3NlcGggUGVjb3Jhcm8u
CisKKyAgICAgICAgRG9uJ3QgdHJ5IHRvIGNhbGwgYERPTURlYnVnZ2VyYCBjb21tYW5kcyB1bnRp
bCBhIHRhcmdldCBoYXMgYmVlbiBpbml0aWFsaXplZC4KKyAgICAgICAgU3RpbGwgYXR0ZW1wdCB0
byByZXNvbHZlIERPTSBicmVha3BvaW50cyB3aGVuZXZlciB0aGUgbWFpbiByZXNvdXJjZS9mcmFt
ZSBjaGFuZ2VzLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9Db250cm9sbGVycy9ET01EZWJ1
Z2dlck1hbmFnZXIuanM6CisgICAgICAgIChXSS5ET01EZWJ1Z2dlck1hbmFnZXIpOgorICAgICAg
ICAoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5pbml0aWFsaXplVGFyZ2V0KTogQWRk
ZWQuCisgICAgICAgIChXSS5ET01EZWJ1Z2dlck1hbmFnZXIuc3VwcG9ydHNFdmVudEJyZWFrcG9p
bnRzKToKKyAgICAgICAgKFdJLkRPTURlYnVnZ2VyTWFuYWdlci5wcm90b3R5cGUuZ2V0IHN1cHBv
cnRlZCk6CisgICAgICAgIChXSS5ET01EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLmFkZERPTUJy
ZWFrcG9pbnQpOgorICAgICAgICAoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5yZW1v
dmVET01CcmVha3BvaW50KToKKyAgICAgICAgKFdJLkRPTURlYnVnZ2VyTWFuYWdlci5wcm90b3R5
cGUuYWRkRXZlbnRCcmVha3BvaW50KToKKyAgICAgICAgKFdJLkRPTURlYnVnZ2VyTWFuYWdlci5w
cm90b3R5cGUucmVtb3ZlRXZlbnRCcmVha3BvaW50KToKKyAgICAgICAgKFdJLkRPTURlYnVnZ2Vy
TWFuYWdlci5wcm90b3R5cGUuYWRkVVJMQnJlYWtwb2ludCk6CisgICAgICAgIChXSS5ET01EZWJ1
Z2dlck1hbmFnZXIucHJvdG90eXBlLnJlbW92ZVVSTEJyZWFrcG9pbnQpOgorICAgICAgICAoV0ku
RE9NRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5fc3BlY3VsYXRpdmVseVJlc29sdmVET01CcmVh
a3BvaW50c0ZvclVSTCk6IEFkZGVkLgorICAgICAgICAoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLnBy
b3RvdHlwZS5fcmVzb2x2ZURPTUJyZWFrcG9pbnQpOgorICAgICAgICAoV0kuRE9NRGVidWdnZXJN
YW5hZ2VyLnByb3RvdHlwZS5fdXBkYXRlRE9NQnJlYWtwb2ludCk6CisgICAgICAgIChXSS5ET01E
ZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLl91cGRhdGVFdmVudEJyZWFrcG9pbnQpOgorICAgICAg
ICAoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5fdXBkYXRlVVJMQnJlYWtwb2ludCk6
CisgICAgICAgIChXSS5ET01EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLl9zYXZlRE9NQnJlYWtw
b2ludHMpOgorICAgICAgICAoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5faGFuZGxl
RE9NQnJlYWtwb2ludERpc2FibGVkU3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKFdJLkRPTURlYnVn
Z2VyTWFuYWdlci5wcm90b3R5cGUuX2hhbmRsZUV2ZW50QnJlYWtwb2ludERpc2FibGVkU3RhdGVD
aGFuZ2VkKToKKyAgICAgICAgKFdJLkRPTURlYnVnZ2VyTWFuYWdlci5wcm90b3R5cGUuX2hhbmRs
ZVVSTEJyZWFrcG9pbnREaXNhYmxlZFN0YXRlQ2hhbmdlZCk6CisgICAgICAgIChXSS5ET01EZWJ1
Z2dlck1hbmFnZXIucHJvdG90eXBlLl9tYWluRnJhbWVEaWRDaGFuZ2UpOgorICAgICAgICAoV0ku
RE9NRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5fbWFpblJlc291cmNlRGlkQ2hhbmdlKToKKyAg
ICAgICAgKFdJLkRPTURlYnVnZ2VyTWFuYWdlci5wcm90b3R5cGUucmVtb3ZlRXZlbnRCcmVha3Bv
aW50LmJyZWFrcG9pbnRSZW1vdmVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkRPTURlYnVnZ2Vy
TWFuYWdlci5wcm90b3R5cGUuX3NwZWN1bGF0aXZlbHlSZXNvbHZlQnJlYWtwb2ludHMpOiBEZWxl
dGVkLgorICAgICAgICAoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5fdXBkYXRlRE9N
QnJlYWtwb2ludC5icmVha3BvaW50VXBkYXRlZCk6IERlbGV0ZWQuCisgICAgICAgIChXSS5ET01E
ZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLl9yZXNvbHZlRXZlbnRCcmVha3BvaW50KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdJLkRPTURlYnVnZ2VyTWFuYWdlci5wcm90b3R5cGUuX3Jlc29sdmVVUkxC
cmVha3BvaW50KTogRGVsZXRlZC4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQmFzZS9NdWx0
aW1hcC5qczogQWRkZWQuCisgICAgICAgIChNdWx0aW1hcCk6CisgICAgICAgIChNdWx0aW1hcC5w
cm90b3R5cGUuZ2V0KToKKyAgICAgICAgKE11bHRpbWFwLnByb3RvdHlwZS5hZGQpOgorICAgICAg
ICAoTXVsdGltYXAucHJvdG90eXBlLmRlbGV0ZSk6CisgICAgICAgIChNdWx0aW1hcC5wcm90b3R5
cGUuY2xlYXIpOgorICAgICAgICAoTXVsdGltYXAucHJvdG90eXBlLmtleXMpOgorICAgICAgICAo
TXVsdGltYXAucHJvdG90eXBlLip2YWx1ZXMpOgorICAgICAgICAoTXVsdGltYXAucHJvdG90eXBl
LipbU3ltYm9sLml0ZXJhdG9yXSk6CisgICAgICAgIChNdWx0aW1hcC5wcm90b3R5cGUudG9KU09O
KToKKyAgICAgICAgKiAuZXNsaW50cmM6CisgICAgICAgICogVXNlckludGVyZmFjZS9NYWluLmh0
bWw6CisgICAgICAgICogVXNlckludGVyZmFjZS9UZXN0Lmh0bWw6CisgICAgICAgIEhlbHBlciBk
YXRhIHN0cnVjdHVyZSBmb3IgbWFuYWdpbmcgTWFwcyBvZiBTZXRzIChlLmcuIGFsbCBET00gYnJl
YWtwb2ludHMgZm9yIGEgVVJMKS4KKwogMjAxOS0wMy0wNiAgRGV2aW4gUm91c3NvICA8ZHJvdXNz
b0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogRWxlbWVudHM6IGhpZ2hsaWdo
dCB0aGUgbm9kZSB3aGVuIGhvdmVyaW5nIGV2ZW50IGxpc3RlbmVycyBzb3J0ZWQgYnkgbm9kZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJLy5lc2xpbnRyYyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS8uZXNsaW50cmMKaW5kZXggZDIwMTA0MzU2ZDhkM2ExMzE2MTg3OTRmMzRlNDM2
Y2NhYzE2OTM0ZS4uZTUwM2Y3Yzc1ZDk2OGE3NGI3NTQyNTUwODk1YWFkZmY2MjU1MjY2OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJLy5lc2xpbnRyYworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvLmVzbGludHJjCkBAIC03Niw2ICs3Niw3IEBACiAgICAgICAgICJJbnNwZWN0
b3JUZXN0IjogdHJ1ZSwKICAgICAgICAgIkxpbmtlZExpc3QiOiB0cnVlLAogICAgICAgICAiTGlz
dE11bHRpbWFwIjogdHJ1ZSwKKyAgICAgICAgIk11bHRpbWFwIjogdHJ1ZSwKICAgICAgICAgIlBy
b3RvY29sVGVzdCI6IHRydWUsCiAgICAgICAgICJQcm90b2NvbFRlc3RIYXJuZXNzIjogdHJ1ZSwK
ICAgICAgICAgIlN5bmNUZXN0U3VpdGUiOiB0cnVlLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9NdWx0aW1hcC5qcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvTXVsdGltYXAuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjAzYWVh
ZGZkMzVhODdmNGYwOGU5ODdkOWFlZTAzYzY2MTJiNGQzNAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvTXVsdGltYXAuanMKQEAgLTAs
MCArMSwxMDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitjbGFzcyBNdWx0aW1hcAoreworICAgIGNvbnN0cnVj
dG9yKGl0ZW1zID0gW10pCisgICAgeworICAgICAgICB0aGlzLl9tYXAgPSBuZXcgTWFwOworCisg
ICAgICAgIGZvciAobGV0IFtrZXksIHZhbHVlXSBvZiBpdGVtcykKKyAgICAgICAgICAgIHRoaXMu
YWRkKGtleSwgdmFsdWUpOworICAgIH0KKworICAgIC8vIFB1YmxpYworCisgICAgZ2V0KGtleSkK
KyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9tYXAuZ2V0KGtleSk7CisgICAgfQorCisgICAg
YWRkKGtleSwgdmFsdWUpCisgICAgeworICAgICAgICBsZXQgdmFsdWVTZXQgPSB0aGlzLl9tYXAu
Z2V0KGtleSk7CisgICAgICAgIGlmICghdmFsdWVTZXQpIHsKKyAgICAgICAgICAgIHZhbHVlU2V0
ID0gbmV3IFNldDsKKyAgICAgICAgICAgIHRoaXMuX21hcC5zZXQoa2V5LCB2YWx1ZVNldCk7Cisg
ICAgICAgIH0KKyAgICAgICAgdmFsdWVTZXQuYWRkKHZhbHVlKTsKKworICAgICAgICByZXR1cm4g
dGhpczsKKyAgICB9CisKKyAgICBkZWxldGUoa2V5LCB2YWx1ZSkKKyAgICB7CisgICAgICAgIC8v
IEFsbG93IGFuIGVudGlyZSBrZXkgdG8gYmUgcmVtb3ZlZCBieSBub3QgcGFzc2luZyBhIHZhbHVl
LgorICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMSkKKyAgICAgICAgICAgIHJldHVy
biB0aGlzLl9tYXAuZGVsZXRlKGtleSk7CisKKyAgICAgICAgbGV0IHZhbHVlU2V0ID0gdGhpcy5f
bWFwLmdldChrZXkpOworICAgICAgICBpZiAoIXZhbHVlU2V0KQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgICAgIGxldCBkZWxldGVkID0gdmFsdWVTZXQuZGVsZXRlKHZhbHVlKTsK
KworICAgICAgICBpZiAoIXZhbHVlU2V0LnNpemUpCisgICAgICAgICAgICB0aGlzLl9tYXAuZGVs
ZXRlKGtleSk7CisKKyAgICAgICAgcmV0dXJuIGRlbGV0ZWQ7CisgICAgfQorCisgICAgY2xlYXIo
KQorICAgIHsKKyAgICAgICAgdGhpcy5fbWFwLmNsZWFyKCk7CisgICAgfQorCisgICAga2V5cygp
CisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fbWFwLmtleXMoKTsKKyAgICB9CisKKyAgICAq
dmFsdWVzKCkKKyAgICB7CisgICAgICAgIGZvciAobGV0IHZhbHVlU2V0IG9mIHRoaXMuX21hcC52
YWx1ZXMoKSkgeworICAgICAgICAgICAgZm9yIChsZXQgdmFsdWUgb2YgdmFsdWVTZXQpCisgICAg
ICAgICAgICAgICAgeWllbGQgdmFsdWU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAqW1N5bWJv
bC5pdGVyYXRvcl0oKQorICAgIHsKKyAgICAgICAgZm9yIChsZXQgW2tleSwgdmFsdWVTZXRdIG9m
IHRoaXMuX21hcCkgeworICAgICAgICAgICAgZm9yIChsZXQgdmFsdWUgb2YgdmFsdWVTZXQpCisg
ICAgICAgICAgICAgICAgeWllbGQgW2tleSwgdmFsdWVdOworICAgICAgICB9CisgICAgfQorCisg
ICAgdG9KU09OKCkKKyAgICB7CisgICAgICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMpOworICAg
IH0KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Nv
bnRyb2xsZXJzL0RPTURlYnVnZ2VyTWFuYWdlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0RPTURlYnVnZ2VyTWFuYWdlci5qcwppbmRleCA5ODQw
NTY5OTU1YTFlZTg1Y2YyNTQ0YjljYWU2Y2M4MTg5OWZiMTFkLi45NzY3NjFiNjhhYTQzMzA1YTEy
MzBjYjhhOWM3MjY5NTY3MDVkNWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Db250cm9sbGVycy9ET01EZWJ1Z2dlck1hbmFnZXIuanMKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRE9NRGVidWdnZXJN
YW5hZ2VyLmpzCkBAIC0zMCw3ICszMCw3IEBAIFdJLkRPTURlYnVnZ2VyTWFuYWdlciA9IGNsYXNz
IERPTURlYnVnZ2VyTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICBzdXBlcigpOwog
CiAgICAgICAgIHRoaXMuX2RvbUJyZWFrcG9pbnRzU2V0dGluZyA9IG5ldyBXSS5TZXR0aW5nKCJk
b20tYnJlYWtwb2ludHMiLCBbXSk7Ci0gICAgICAgIHRoaXMuX2RvbUJyZWFrcG9pbnRVUkxNYXAg
PSBuZXcgTWFwOworICAgICAgICB0aGlzLl9kb21CcmVha3BvaW50VVJMTWFwID0gbmV3IE11bHRp
bWFwOwogICAgICAgICB0aGlzLl9kb21CcmVha3BvaW50RnJhbWVJZGVudGlmaWVyTWFwID0gbmV3
IE1hcDsKIAogICAgICAgICB0aGlzLl9ldmVudEJyZWFrcG9pbnRTZXR0aW5nID0gbmV3IFdJLlNl
dHRpbmcoImV2ZW50LWJyZWFrcG9pbnRzIiwgW10pOwpAQCAtNjksMTAgKzY5LDI5IEBAIFdJLkRP
TURlYnVnZ2VyTWFuYWdlciA9IGNsYXNzIERPTURlYnVnZ2VyTWFuYWdlciBleHRlbmRzIFdJLk9i
amVjdAogICAgICAgICAgICAgICAgIHRoaXMuYWRkVVJMQnJlYWtwb2ludChXSS5VUkxCcmVha3Bv
aW50LmRlc2VyaWFsaXplKHNlcmlhbGl6ZWRJbmZvKSk7CiAKICAgICAgICAgICAgIHRoaXMuX3Jl
c3RvcmluZ0JyZWFrcG9pbnRzID0gZmFsc2U7Ci0gICAgICAgICAgICB0aGlzLl9zcGVjdWxhdGl2
ZWx5UmVzb2x2ZUJyZWFrcG9pbnRzKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBUYXJn
ZXQKKworICAgIGluaXRpYWxpemVUYXJnZXQodGFyZ2V0KQorICAgIHsKKyAgICAgICAgaWYgKHRh
cmdldC5ET01EZWJ1Z2dlckFnZW50KSB7CisgICAgICAgICAgICBpZiAodGFyZ2V0Lm1haW5SZXNv
dXJjZSkKKyAgICAgICAgICAgICAgICB0aGlzLl9zcGVjdWxhdGl2ZWx5UmVzb2x2ZURPTUJyZWFr
cG9pbnRzRm9yVVJMKHRhcmdldC5tYWluUmVzb3VyY2UudXJsKTsKKworICAgICAgICAgICAgZm9y
IChsZXQgYnJlYWtwb2ludCBvZiB0aGlzLl9ldmVudEJyZWFrcG9pbnRzKSB7CisgICAgICAgICAg
ICAgICAgaWYgKCFicmVha3BvaW50LmRpc2FibGVkKQorICAgICAgICAgICAgICAgICAgICB0aGlz
Ll91cGRhdGVFdmVudEJyZWFrcG9pbnQoYnJlYWtwb2ludCwgdGFyZ2V0KTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgZm9yIChsZXQgYnJlYWtwb2ludCBvZiB0aGlzLl91cmxCcmVha3Bv
aW50cykgeworICAgICAgICAgICAgICAgIGlmICghYnJlYWtwb2ludC5kaXNhYmxlZCkKKyAgICAg
ICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlVVJMQnJlYWtwb2ludChicmVha3BvaW50LCB0YXJn
ZXQpOworICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoIXRoaXMuX2FsbFJlcXVlc3Rz
QnJlYWtwb2ludC5kaXNhYmxlZCkKLSAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVVUkxCcmVh
a3BvaW50KHRoaXMuX2FsbFJlcXVlc3RzQnJlYWtwb2ludCk7CisgICAgICAgICAgICAgICAgdGhp
cy5fdXBkYXRlVVJMQnJlYWtwb2ludCh0aGlzLl9hbGxSZXF1ZXN0c0JyZWFrcG9pbnQsIHRhcmdl
dCk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTgwLDcgKzk5LDcgQEAgV0kuRE9NRGVidWdnZXJN
YW5hZ2VyID0gY2xhc3MgRE9NRGVidWdnZXJNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAKICAg
ICBzdGF0aWMgc3VwcG9ydHNFdmVudEJyZWFrcG9pbnRzKCkKICAgICB7Ci0gICAgICAgIHJldHVy
biBET01EZWJ1Z2dlckFnZW50LnNldEV2ZW50QnJlYWtwb2ludCAmJiBET01EZWJ1Z2dlckFnZW50
LnJlbW92ZUV2ZW50QnJlYWtwb2ludDsKKyAgICAgICAgcmV0dXJuIEluc3BlY3RvckJhY2tlbmQu
ZG9tYWlucy5ET01EZWJ1Z2dlci5zZXRFdmVudEJyZWFrcG9pbnQgJiYgSW5zcGVjdG9yQmFja2Vu
ZC5kb21haW5zLkRPTURlYnVnZ2VyLnJlbW92ZUV2ZW50QnJlYWtwb2ludDsKICAgICB9CiAKICAg
ICBzdGF0aWMgc3VwcG9ydHNVUkxCcmVha3BvaW50cygpCkBAIC05Miw3ICsxMTEsNyBAQCBXSS5E
T01EZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBET01EZWJ1Z2dlck1hbmFnZXIgZXh0ZW5kcyBXSS5P
YmplY3QKIAogICAgIGdldCBzdXBwb3J0ZWQoKQogICAgIHsKLSAgICAgICAgcmV0dXJuICEhd2lu
ZG93LkRPTURlYnVnZ2VyQWdlbnQ7CisgICAgICAgIHJldHVybiAhIUluc3BlY3RvckJhY2tlbmQu
ZG9tYWlucy5ET01EZWJ1Z2dlcjsKICAgICB9CiAKICAgICBnZXQgYWxsUmVxdWVzdHNCcmVha3Bv
aW50KCkgeyByZXR1cm4gdGhpcy5fYWxsUmVxdWVzdHNCcmVha3BvaW50OyB9CkBAIC0xNTQsMTUg
KzE3MywxMSBAQCBXSS5ET01EZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBET01EZWJ1Z2dlck1hbmFn
ZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0g
ICAgICAgIGxldCBicmVha3BvaW50cyA9IHRoaXMuX2RvbUJyZWFrcG9pbnRVUkxNYXAuZ2V0KGJy
ZWFrcG9pbnQudXJsKTsKLSAgICAgICAgaWYgKCFicmVha3BvaW50cykgewotICAgICAgICAgICAg
YnJlYWtwb2ludHMgPSBbYnJlYWtwb2ludF07Ci0gICAgICAgICAgICB0aGlzLl9kb21CcmVha3Bv
aW50VVJMTWFwLnNldChicmVha3BvaW50LnVybCwgYnJlYWtwb2ludHMpOwotICAgICAgICB9IGVs
c2UKLSAgICAgICAgICAgIGJyZWFrcG9pbnRzLnB1c2goYnJlYWtwb2ludCk7CisgICAgICAgIHRo
aXMuX2RvbUJyZWFrcG9pbnRVUkxNYXAuYWRkKGJyZWFrcG9pbnQudXJsLCBicmVha3BvaW50KTsK
IAotICAgICAgICBpZiAoYnJlYWtwb2ludC5kb21Ob2RlSWRlbnRpZmllcikKLSAgICAgICAgICAg
IHRoaXMuX3Jlc29sdmVET01CcmVha3BvaW50KGJyZWFrcG9pbnQsIGJyZWFrcG9pbnQuZG9tTm9k
ZUlkZW50aWZpZXIpOworICAgICAgICBpZiAoIWJyZWFrcG9pbnQuZGlzYWJsZWQpIHsKKyAgICAg
ICAgICAgIHRoaXMuX3VwZGF0ZURPTUJyZWFrcG9pbnQoYnJlYWtwb2ludCwgV0kuYXNzdW1pbmdN
YWluVGFyZ2V0KCkpOworICAgICAgICB9CiAKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9M
aXN0ZW5lcnMoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLkV2ZW50LkRPTUJyZWFrcG9pbnRBZGRlZCwg
e2JyZWFrcG9pbnR9KTsKIApAQCAtMTg4LDE0ICsyMDMsMTMgQEAgV0kuRE9NRGVidWdnZXJNYW5h
Z2VyID0gY2xhc3MgRE9NRGVidWdnZXJNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICAg
ICAgdGhpcy5fZGV0YWNoRE9NQnJlYWtwb2ludChicmVha3BvaW50KTsKIAotICAgICAgICBsZXQg
dXJsQnJlYWtwb2ludHMgPSB0aGlzLl9kb21CcmVha3BvaW50VVJMTWFwLmdldChicmVha3BvaW50
LnVybCk7Ci0gICAgICAgIHVybEJyZWFrcG9pbnRzLnJlbW92ZShicmVha3BvaW50LCB0cnVlKTsK
KyAgICAgICAgdGhpcy5fZG9tQnJlYWtwb2ludFVSTE1hcC5kZWxldGUoYnJlYWtwb2ludC51cmwp
OwogCi0gICAgICAgIGlmICghYnJlYWtwb2ludC5kaXNhYmxlZCkKLSAgICAgICAgICAgIERPTURl
YnVnZ2VyQWdlbnQucmVtb3ZlRE9NQnJlYWtwb2ludChub2RlSWRlbnRpZmllciwgYnJlYWtwb2lu
dC50eXBlKTsKLQotICAgICAgICBpZiAoIXVybEJyZWFrcG9pbnRzLmxlbmd0aCkKLSAgICAgICAg
ICAgIHRoaXMuX2RvbUJyZWFrcG9pbnRVUkxNYXAuZGVsZXRlKGJyZWFrcG9pbnQudXJsKTsKKyAg
ICAgICAgaWYgKCFicmVha3BvaW50LmRpc2FibGVkKSB7CisgICAgICAgICAgICAvLyBXZSBzaG91
bGQgZ2V0IHRoZSB0YXJnZXQgYXNzb2NpYXRlZCB3aXRoIHRoZSBub2RlSWRlbnRpZmllciBvZiB0
aGlzIGJyZWFrcG9pbnQuCisgICAgICAgICAgICBsZXQgdGFyZ2V0ID0gV0kuYXNzdW1pbmdNYWlu
VGFyZ2V0KCk7CisgICAgICAgICAgICB0YXJnZXQuRE9NRGVidWdnZXJBZ2VudC5yZW1vdmVET01C
cmVha3BvaW50KG5vZGVJZGVudGlmaWVyLCBicmVha3BvaW50LnR5cGUpOworICAgICAgICB9CiAK
ICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuRE9NRGVidWdnZXJNYW5h
Z2VyLkV2ZW50LkRPTUJyZWFrcG9pbnRSZW1vdmVkLCB7YnJlYWtwb2ludH0pOwogCkBAIC0yMzcs
NyArMjUxLDExIEBAIFdJLkRPTURlYnVnZ2VyTWFuYWdlciA9IGNsYXNzIERPTURlYnVnZ2VyTWFu
YWdlciBleHRlbmRzIFdJLk9iamVjdAogCiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlz
dGVuZXJzKFdJLkRPTURlYnVnZ2VyTWFuYWdlci5FdmVudC5FdmVudEJyZWFrcG9pbnRBZGRlZCwg
e2JyZWFrcG9pbnR9KTsKIAotICAgICAgICB0aGlzLl9yZXNvbHZlRXZlbnRCcmVha3BvaW50KGJy
ZWFrcG9pbnQpOworICAgICAgICBpZiAoIWJyZWFrcG9pbnQuZGlzYWJsZWQpIHsKKyAgICAgICAg
ICAgIGZvciAobGV0IHRhcmdldCBvZiBXSS50YXJnZXRzKQorICAgICAgICAgICAgICAgIHRoaXMu
X3VwZGF0ZUV2ZW50QnJlYWtwb2ludChicmVha3BvaW50LCB0YXJnZXQpOworICAgICAgICB9CisK
ICAgICAgICAgdGhpcy5fc2F2ZUV2ZW50QnJlYWtwb2ludHMoKTsKICAgICB9CiAKQEAgLTI2NCwx
OSArMjgyLDE4IEBAIFdJLkRPTURlYnVnZ2VyTWFuYWdlciA9IGNsYXNzIERPTURlYnVnZ2VyTWFu
YWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICBpZiAoYnJlYWtwb2ludC5kaXNhYmxlZCkK
ICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBmdW5jdGlvbiBicmVha3BvaW50UmVtb3Zl
ZChlcnJvcikgewotICAgICAgICAgICAgaWYgKGVycm9yKQotICAgICAgICAgICAgICAgIGNvbnNv
bGUuZXJyb3IoZXJyb3IpOwotICAgICAgICB9CisgICAgICAgIGZvciAobGV0IHRhcmdldCBvZiBX
SS50YXJnZXRzKSB7CisgICAgICAgICAgICBpZiAodGFyZ2V0LkRPTURlYnVnZ2VyQWdlbnQpIHsK
KyAgICAgICAgICAgICAgICAvLyBDb21wYXRpYmlsaXR5IChpT1MgMTIpOiBET01EZWJ1Z2dlckFn
ZW50LnJlbW92ZUV2ZW50QnJlYWtwb2ludCBkaWQgbm90IGV4aXN0LgorICAgICAgICAgICAgICAg
IGlmICghV0kuRE9NRGVidWdnZXJNYW5hZ2VyLnN1cHBvcnRzRXZlbnRCcmVha3BvaW50cygpKSB7
CisgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGJyZWFrcG9pbnQudHlwZSA9PT0g
V0kuRXZlbnRCcmVha3BvaW50LlR5cGUuTGlzdGVuZXIpOworICAgICAgICAgICAgICAgICAgICB0
YXJnZXQuRE9NRGVidWdnZXJBZ2VudC5yZW1vdmVFdmVudExpc3RlbmVyQnJlYWtwb2ludChicmVh
a3BvaW50LmV2ZW50TmFtZSk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICAgICAgICAgIH0KIAotICAgICAgICAvLyBDb21wYXRpYmlsaXR5IChpT1MgMTIpOiBET01EZWJ1
Z2dlckFnZW50LnJlbW92ZUV2ZW50QnJlYWtwb2ludCBkaWQgbm90IGV4aXN0LgotICAgICAgICBp
ZiAoIVdJLkRPTURlYnVnZ2VyTWFuYWdlci5zdXBwb3J0c0V2ZW50QnJlYWtwb2ludHMoKSkgewot
ICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoYnJlYWtwb2ludC50eXBlID09PSBXSS5FdmVudEJy
ZWFrcG9pbnQuVHlwZS5MaXN0ZW5lcik7Ci0gICAgICAgICAgICBET01EZWJ1Z2dlckFnZW50LnJl
bW92ZUV2ZW50TGlzdGVuZXJCcmVha3BvaW50KGJyZWFrcG9pbnQuZXZlbnROYW1lLCBicmVha3Bv
aW50UmVtb3ZlZCk7Ci0gICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgdGFyZ2V0
LkRPTURlYnVnZ2VyQWdlbnQucmVtb3ZlRXZlbnRCcmVha3BvaW50KGJyZWFrcG9pbnQudHlwZSwg
YnJlYWtwb2ludC5ldmVudE5hbWUpOworICAgICAgICAgICAgfQogICAgICAgICB9Ci0KLSAgICAg
ICAgRE9NRGVidWdnZXJBZ2VudC5yZW1vdmVFdmVudEJyZWFrcG9pbnQoYnJlYWtwb2ludC50eXBl
LCBicmVha3BvaW50LmV2ZW50TmFtZSwgYnJlYWtwb2ludFJlbW92ZWQpOwogICAgIH0KIAogICAg
IHVybEJyZWFrcG9pbnRGb3JVUkwodXJsKQpAQCAtMzA2LDcgKzMyMywxMSBAQCBXSS5ET01EZWJ1
Z2dlck1hbmFnZXIgPSBjbGFzcyBET01EZWJ1Z2dlck1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QK
IAogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5ET01EZWJ1Z2dlck1h
bmFnZXIuRXZlbnQuVVJMQnJlYWtwb2ludEFkZGVkLCB7YnJlYWtwb2ludH0pOwogCi0gICAgICAg
IHRoaXMuX3Jlc29sdmVVUkxCcmVha3BvaW50KGJyZWFrcG9pbnQpOworICAgICAgICBpZiAoIWJy
ZWFrcG9pbnQuZGlzYWJsZWQpIHsKKyAgICAgICAgICAgIGZvciAobGV0IHRhcmdldCBvZiBXSS50
YXJnZXRzKQorICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZVVSTEJyZWFrcG9pbnQoYnJlYWtw
b2ludCwgdGFyZ2V0KTsKKyAgICAgICAgfQorCiAgICAgICAgIHRoaXMuX3NhdmVVUkxCcmVha3Bv
aW50cygpOwogICAgIH0KIApAQCAtMzMzLDE3ICszNTQsMTQgQEAgV0kuRE9NRGVidWdnZXJNYW5h
Z2VyID0gY2xhc3MgRE9NRGVidWdnZXJNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAg
IGlmIChicmVha3BvaW50LmRpc2FibGVkKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAg
IC8vIENvbXBhdGliaWxpdHkgKGlPUyAxMi4xKTogRE9NRGVidWdnZXJBZ2VudC5yZW1vdmVVUkxC
cmVha3BvaW50IGRpZCBub3QgZXhpc3QuCi0gICAgICAgIGlmIChXSS5ET01EZWJ1Z2dlck1hbmFn
ZXIuc3VwcG9ydHNVUkxCcmVha3BvaW50cygpKSB7Ci0gICAgICAgICAgICBET01EZWJ1Z2dlckFn
ZW50LnJlbW92ZVVSTEJyZWFrcG9pbnQoYnJlYWtwb2ludC51cmwsIChlcnJvcikgPT4gewotICAg
ICAgICAgICAgICAgIGlmIChlcnJvcikKLSAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJv
cihlcnJvcik7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
IERPTURlYnVnZ2VyQWdlbnQucmVtb3ZlWEhSQnJlYWtwb2ludChicmVha3BvaW50LnVybCwgKGVy
cm9yKSA9PiB7Ci0gICAgICAgICAgICAgICAgaWYgKGVycm9yKQotICAgICAgICAgICAgICAgICAg
ICBjb25zb2xlLmVycm9yKGVycm9yKTsKLSAgICAgICAgICAgIH0pOworICAgICAgICBmb3IgKGxl
dCB0YXJnZXQgb2YgV0kudGFyZ2V0cykgeworICAgICAgICAgICAgaWYgKHRhcmdldC5ET01EZWJ1
Z2dlckFnZW50KSB7CisgICAgICAgICAgICAgICAgLy8gQ29tcGF0aWJpbGl0eSAoaU9TIDEyLjEp
OiBET01EZWJ1Z2dlckFnZW50LnJlbW92ZVVSTEJyZWFrcG9pbnQgZGlkIG5vdCBleGlzdC4KKyAg
ICAgICAgICAgICAgICBpZiAoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLnN1cHBvcnRzVVJMQnJlYWtw
b2ludHMoKSkKKyAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LkRPTURlYnVnZ2VyQWdlbnQucmVt
b3ZlVVJMQnJlYWtwb2ludChicmVha3BvaW50LnVybCk7CisgICAgICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgICAgICB0YXJnZXQuRE9NRGVidWdnZXJBZ2VudC5yZW1vdmVYSFJCcmVh
a3BvaW50KGJyZWFrcG9pbnQudXJsKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0K
IApAQCAtMzkzLDMyICs0MTEsMjEgQEAgV0kuRE9NRGVidWdnZXJNYW5hZ2VyID0gY2xhc3MgRE9N
RGVidWdnZXJNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIH0KICAgICB9CiAKLSAg
ICBfc3BlY3VsYXRpdmVseVJlc29sdmVCcmVha3BvaW50cygpCisgICAgX3NwZWN1bGF0aXZlbHlS
ZXNvbHZlRE9NQnJlYWtwb2ludHNGb3JVUkwodXJsKQogICAgIHsKLSAgICAgICAgbGV0IG1haW5G
cmFtZSA9IFdJLm5ldHdvcmtNYW5hZ2VyLm1haW5GcmFtZTsKLSAgICAgICAgaWYgKCFtYWluRnJh
bWUpCisgICAgICAgIGxldCBkb21CcmVha3BvaW50cyA9IHRoaXMuX2RvbUJyZWFrcG9pbnRVUkxN
YXAuZ2V0KHVybCk7CisgICAgICAgIGlmICghZG9tQnJlYWtwb2ludHMpCiAgICAgICAgICAgICBy
ZXR1cm47CiAKLSAgICAgICAgbGV0IGRvbUJyZWFrcG9pbnRzID0gdGhpcy5fZG9tQnJlYWtwb2lu
dFVSTE1hcC5nZXQobWFpbkZyYW1lLnVybCk7Ci0gICAgICAgIGlmIChkb21CcmVha3BvaW50cykg
ewotICAgICAgICAgICAgZm9yIChsZXQgYnJlYWtwb2ludCBvZiBkb21CcmVha3BvaW50cykgewot
ICAgICAgICAgICAgICAgIGlmIChicmVha3BvaW50LmRvbU5vZGVJZGVudGlmaWVyKQotICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAgICAgIFdJLmRvbU1hbmFnZXIu
cHVzaE5vZGVCeVBhdGhUb0Zyb250ZW5kKGJyZWFrcG9pbnQucGF0aCwgKG5vZGVJZGVudGlmaWVy
KSA9PiB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghbm9kZUlkZW50aWZpZXIpCi0gICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGZvciAobGV0IGJyZWFrcG9pbnQgb2Yg
ZG9tQnJlYWtwb2ludHMpIHsKKyAgICAgICAgICAgIGlmIChicmVha3BvaW50LmRvbU5vZGVJZGVu
dGlmaWVyKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCisgICAgICAgICAgICBXSS5kb21N
YW5hZ2VyLnB1c2hOb2RlQnlQYXRoVG9Gcm9udGVuZChicmVha3BvaW50LnBhdGgsIChub2RlSWRl
bnRpZmllcikgPT4geworICAgICAgICAgICAgICAgIGlmIChub2RlSWRlbnRpZmllcikKICAgICAg
ICAgICAgICAgICAgICAgdGhpcy5fcmVzb2x2ZURPTUJyZWFrcG9pbnQoYnJlYWtwb2ludCwgbm9k
ZUlkZW50aWZpZXIpOwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfSk7CiAgICAgICAgIH0KLQotICAgICAgICBmb3IgKGxldCBicmVha3BvaW50IG9mIHRo
aXMuX2V2ZW50QnJlYWtwb2ludHMpCi0gICAgICAgICAgICB0aGlzLl9yZXNvbHZlRXZlbnRCcmVh
a3BvaW50KGJyZWFrcG9pbnQpOwotCi0gICAgICAgIGZvciAobGV0IGJyZWFrcG9pbnQgb2YgdGhp
cy5fdXJsQnJlYWtwb2ludHMpCi0gICAgICAgICAgICB0aGlzLl9yZXNvbHZlVVJMQnJlYWtwb2lu
dChicmVha3BvaW50KTsKICAgICB9CiAKICAgICBfcmVzb2x2ZURPTUJyZWFrcG9pbnQoYnJlYWtw
b2ludCwgbm9kZUlkZW50aWZpZXIpCkBAIC00NDMsODAgKzQ1MCw2NSBAQCBXSS5ET01EZWJ1Z2dl
ck1hbmFnZXIgPSBjbGFzcyBET01EZWJ1Z2dlck1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKIAog
ICAgICAgICBicmVha3BvaW50LmRvbU5vZGVJZGVudGlmaWVyID0gbm9kZUlkZW50aWZpZXI7CiAK
LSAgICAgICAgdGhpcy5fdXBkYXRlRE9NQnJlYWtwb2ludChicmVha3BvaW50KTsKKyAgICAgICAg
Ly8gV2Ugc2hvdWxkIGdldCB0aGUgdGFyZ2V0IGFzc29jaWF0ZWQgd2l0aCB0aGUgbm9kZUlkZW50
aWZpZXIgb2YgdGhpcyBicmVha3BvaW50LgorICAgICAgICBsZXQgdGFyZ2V0ID0gV0kuYXNzdW1p
bmdNYWluVGFyZ2V0KCk7CisgICAgICAgIHRoaXMuX3VwZGF0ZURPTUJyZWFrcG9pbnQoYnJlYWtw
b2ludCwgdGFyZ2V0KTsKICAgICB9CiAKLSAgICBfdXBkYXRlRE9NQnJlYWtwb2ludChicmVha3Bv
aW50KQorICAgIF91cGRhdGVET01CcmVha3BvaW50KGJyZWFrcG9pbnQsIHRhcmdldCkKICAgICB7
Ci0gICAgICAgIGxldCBub2RlSWRlbnRpZmllciA9IGJyZWFrcG9pbnQuZG9tTm9kZUlkZW50aWZp
ZXI7Ci0gICAgICAgIGlmICghbm9kZUlkZW50aWZpZXIpCisgICAgICAgIGlmICghYnJlYWtwb2lu
dC5kb21Ob2RlSWRlbnRpZmllcikKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBmdW5j
dGlvbiBicmVha3BvaW50VXBkYXRlZChlcnJvcikKLSAgICAgICAgewotICAgICAgICAgICAgaWYg
KGVycm9yKQotICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpOwotICAgICAgICB9
Ci0KLSAgICAgICAgaWYgKGJyZWFrcG9pbnQuZGlzYWJsZWQpCi0gICAgICAgICAgICBET01EZWJ1
Z2dlckFnZW50LnJlbW92ZURPTUJyZWFrcG9pbnQobm9kZUlkZW50aWZpZXIsIGJyZWFrcG9pbnQu
dHlwZSwgYnJlYWtwb2ludFVwZGF0ZWQpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBET01E
ZWJ1Z2dlckFnZW50LnNldERPTUJyZWFrcG9pbnQobm9kZUlkZW50aWZpZXIsIGJyZWFrcG9pbnQu
dHlwZSwgYnJlYWtwb2ludFVwZGF0ZWQpOwotICAgIH0KLQotICAgIF91cGRhdGVFdmVudEJyZWFr
cG9pbnQoYnJlYWtwb2ludCkKLSAgICB7Ci0gICAgICAgIC8vIENvbXBhdGliaWxpdHkgKGlPUyAx
Mik6IERPTURlYnVnZ2VyQWdlbnQucmVtb3ZlRXZlbnRCcmVha3BvaW50IGRpZCBub3QgZXhpc3Qu
Ci0gICAgICAgIGlmICghV0kuRE9NRGVidWdnZXJNYW5hZ2VyLnN1cHBvcnRzRXZlbnRCcmVha3Bv
aW50cygpKSB7Ci0gICAgICAgICAgICBjb25zb2xlLmFzc2VydChicmVha3BvaW50LnR5cGUgPT09
IFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLkxpc3RlbmVyKTsKKyAgICAgICAgaWYgKHRhcmdldC5E
T01EZWJ1Z2dlckFnZW50KSB7CiAgICAgICAgICAgICBpZiAoYnJlYWtwb2ludC5kaXNhYmxlZCkK
LSAgICAgICAgICAgICAgICBET01EZWJ1Z2dlckFnZW50LnJlbW92ZUV2ZW50TGlzdGVuZXJCcmVh
a3BvaW50KGJyZWFrcG9pbnQuZXZlbnROYW1lKTsKKyAgICAgICAgICAgICAgICB0YXJnZXQuRE9N
RGVidWdnZXJBZ2VudC5yZW1vdmVET01CcmVha3BvaW50KGJyZWFrcG9pbnQuZG9tTm9kZUlkZW50
aWZpZXIsIGJyZWFrcG9pbnQudHlwZSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgRE9NRGVidWdnZXJBZ2VudC5zZXRFdmVudExpc3RlbmVyQnJlYWtwb2ludChicmVha3BvaW50
LmV2ZW50TmFtZSk7Ci0gICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgdGFyZ2V0
LkRPTURlYnVnZ2VyQWdlbnQuc2V0RE9NQnJlYWtwb2ludChicmVha3BvaW50LmRvbU5vZGVJZGVu
dGlmaWVyLCBicmVha3BvaW50LnR5cGUpOwogICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGJyZWFr
cG9pbnQuZGlzYWJsZWQpCi0gICAgICAgICAgICBET01EZWJ1Z2dlckFnZW50LnJlbW92ZUV2ZW50
QnJlYWtwb2ludChicmVha3BvaW50LnR5cGUsIGJyZWFrcG9pbnQuZXZlbnROYW1lKTsKLSAgICAg
ICAgZWxzZQotICAgICAgICAgICAgRE9NRGVidWdnZXJBZ2VudC5zZXRFdmVudEJyZWFrcG9pbnQo
YnJlYWtwb2ludC50eXBlLCBicmVha3BvaW50LmV2ZW50TmFtZSk7CiAgICAgfQogCi0gICAgX3Vw
ZGF0ZVVSTEJyZWFrcG9pbnQoYnJlYWtwb2ludCkKKyAgICBfdXBkYXRlRXZlbnRCcmVha3BvaW50
KGJyZWFrcG9pbnQsIHRhcmdldCkKICAgICB7Ci0gICAgICAgIC8vIENvbXBhdGliaWxpdHkgKGlP
UyAxMi4xKTogRE9NRGVidWdnZXJBZ2VudC5yZW1vdmVVUkxCcmVha3BvaW50IGRpZCBub3QgZXhp
c3QuCi0gICAgICAgIGlmICghV0kuRE9NRGVidWdnZXJNYW5hZ2VyLnN1cHBvcnRzVVJMQnJlYWtw
b2ludHMoKSkgeworICAgICAgICBpZiAodGFyZ2V0LkRPTURlYnVnZ2VyQWdlbnQpIHsKKyAgICAg
ICAgICAgIC8vIENvbXBhdGliaWxpdHkgKGlPUyAxMik6IERPTURlYnVnZ2VyQWdlbnQucmVtb3Zl
RXZlbnRCcmVha3BvaW50IGRpZCBub3QgZXhpc3QuCisgICAgICAgICAgICBpZiAoIVdJLkRPTURl
YnVnZ2VyTWFuYWdlci5zdXBwb3J0c0V2ZW50QnJlYWtwb2ludHMoKSkgeworICAgICAgICAgICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KGJyZWFrcG9pbnQudHlwZSA9PT0gV0kuRXZlbnRCcmVha3BvaW50
LlR5cGUuTGlzdGVuZXIpOworICAgICAgICAgICAgICAgIGlmIChicmVha3BvaW50LmRpc2FibGVk
KQorICAgICAgICAgICAgICAgICAgICB0YXJnZXQuRE9NRGVidWdnZXJBZ2VudC5yZW1vdmVFdmVu
dExpc3RlbmVyQnJlYWtwb2ludChicmVha3BvaW50LmV2ZW50TmFtZSk7CisgICAgICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgICAgICB0YXJnZXQuRE9NRGVidWdnZXJBZ2VudC5zZXRF
dmVudExpc3RlbmVyQnJlYWtwb2ludChicmVha3BvaW50LmV2ZW50TmFtZSk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBpZiAoYnJlYWtwb2lu
dC5kaXNhYmxlZCkKLSAgICAgICAgICAgICAgICBET01EZWJ1Z2dlckFnZW50LnJlbW92ZVhIUkJy
ZWFrcG9pbnQoYnJlYWtwb2ludC51cmwpOworICAgICAgICAgICAgICAgIHRhcmdldC5ET01EZWJ1
Z2dlckFnZW50LnJlbW92ZUV2ZW50QnJlYWtwb2ludChicmVha3BvaW50LnR5cGUsIGJyZWFrcG9p
bnQuZXZlbnROYW1lKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0YXJnZXQu
RE9NRGVidWdnZXJBZ2VudC5zZXRFdmVudEJyZWFrcG9pbnQoYnJlYWtwb2ludC50eXBlLCBicmVh
a3BvaW50LmV2ZW50TmFtZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBfdXBkYXRlVVJMQnJl
YWtwb2ludChicmVha3BvaW50LCB0YXJnZXQpCisgICAgeworICAgICAgICBpZiAodGFyZ2V0LkRP
TURlYnVnZ2VyQWdlbnQpIHsKKyAgICAgICAgICAgIC8vIENvbXBhdGliaWxpdHkgKGlPUyAxMi4x
KTogRE9NRGVidWdnZXJBZ2VudC5yZW1vdmVVUkxCcmVha3BvaW50IGRpZCBub3QgZXhpc3QuCisg
ICAgICAgICAgICBpZiAoIVdJLkRPTURlYnVnZ2VyTWFuYWdlci5zdXBwb3J0c1VSTEJyZWFrcG9p
bnRzKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoYnJlYWtwb2ludC5kaXNhYmxlZCkKKyAgICAg
ICAgICAgICAgICAgICAgdGFyZ2V0LkRPTURlYnVnZ2VyQWdlbnQucmVtb3ZlWEhSQnJlYWtwb2lu
dChicmVha3BvaW50LnVybCk7CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAg
ICAgICAgIGxldCBpc1JlZ2V4ID0gYnJlYWtwb2ludC50eXBlID09PSBXSS5VUkxCcmVha3BvaW50
LlR5cGUuUmVndWxhckV4cHJlc3Npb247CisgICAgICAgICAgICAgICAgICAgIHRhcmdldC5ET01E
ZWJ1Z2dlckFnZW50LnNldFhIUkJyZWFrcG9pbnQoYnJlYWtwb2ludC51cmwsIGlzUmVnZXgpOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIGlmIChicmVha3BvaW50LmRpc2FibGVkKQorICAgICAgICAgICAgICAg
IHRhcmdldC5ET01EZWJ1Z2dlckFnZW50LnJlbW92ZVVSTEJyZWFrcG9pbnQoYnJlYWtwb2ludC51
cmwpOwogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgbGV0IGlzUmVnZXggPSBi
cmVha3BvaW50LnR5cGUgPT09IFdJLlVSTEJyZWFrcG9pbnQuVHlwZS5SZWd1bGFyRXhwcmVzc2lv
bjsKLSAgICAgICAgICAgICAgICBEZWJ1Z2dlckFnZW50LnNldFhIUkJyZWFrcG9pbnQoYnJlYWtw
b2ludC51cmwsIGlzUmVnZXgpOworICAgICAgICAgICAgICAgIHRhcmdldC5ET01EZWJ1Z2dlckFn
ZW50LnNldFVSTEJyZWFrcG9pbnQoYnJlYWtwb2ludC51cmwsIGlzUmVnZXgpOwogICAgICAgICAg
ICAgfQotICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGJyZWFr
cG9pbnQuZGlzYWJsZWQpCi0gICAgICAgICAgICBET01EZWJ1Z2dlckFnZW50LnJlbW92ZVVSTEJy
ZWFrcG9pbnQoYnJlYWtwb2ludC51cmwpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGxl
dCBpc1JlZ2V4ID0gYnJlYWtwb2ludC50eXBlID09PSBXSS5VUkxCcmVha3BvaW50LlR5cGUuUmVn
dWxhckV4cHJlc3Npb247Ci0gICAgICAgICAgICBET01EZWJ1Z2dlckFnZW50LnNldFVSTEJyZWFr
cG9pbnQoYnJlYWtwb2ludC51cmwsIGlzUmVnZXgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAg
X3Jlc29sdmVFdmVudEJyZWFrcG9pbnQoYnJlYWtwb2ludCkKLSAgICB7Ci0gICAgICAgIGlmIChi
cmVha3BvaW50LmRpc2FibGVkKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHRoaXMu
X3VwZGF0ZUV2ZW50QnJlYWtwb2ludChicmVha3BvaW50KTsKLSAgICB9Ci0KLSAgICBfcmVzb2x2
ZVVSTEJyZWFrcG9pbnQoYnJlYWtwb2ludCkKLSAgICB7Ci0gICAgICAgIGlmIChicmVha3BvaW50
LmRpc2FibGVkKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHRoaXMuX3VwZGF0ZVVS
TEJyZWFrcG9pbnQoYnJlYWtwb2ludCk7CiAgICAgfQogCiAgICAgX3NhdmVET01CcmVha3BvaW50
cygpCkBAIC01MjQsMTEgKzUxNiw3IEBAIFdJLkRPTURlYnVnZ2VyTWFuYWdlciA9IGNsYXNzIERP
TURlYnVnZ2VyTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICBpZiAodGhpcy5fcmVz
dG9yaW5nQnJlYWtwb2ludHMpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgbGV0IGJy
ZWFrcG9pbnRzVG9TYXZlID0gW107Ci0gICAgICAgIGZvciAobGV0IGJyZWFrcG9pbnRzIG9mIHRo
aXMuX2RvbUJyZWFrcG9pbnRVUkxNYXAudmFsdWVzKCkpCi0gICAgICAgICAgICBicmVha3BvaW50
c1RvU2F2ZSA9IGJyZWFrcG9pbnRzVG9TYXZlLmNvbmNhdChicmVha3BvaW50cyk7Ci0KLSAgICAg
ICAgdGhpcy5fZG9tQnJlYWtwb2ludHNTZXR0aW5nLnZhbHVlID0gYnJlYWtwb2ludHNUb1NhdmUu
bWFwKChicmVha3BvaW50KSA9PiBicmVha3BvaW50LnNlcmlhbGl6YWJsZUluZm8pOworICAgICAg
ICB0aGlzLl9kb21CcmVha3BvaW50c1NldHRpbmcudmFsdWUgPSBBcnJheS5mcm9tKHRoaXMuX2Rv
bUJyZWFrcG9pbnRVUkxNYXAudmFsdWVzKCkpLm1hcCgoYnJlYWtwb2ludCkgPT4gYnJlYWtwb2lu
dC5zZXJpYWxpemFibGVJbmZvKTsKICAgICB9CiAKICAgICBfc2F2ZUV2ZW50QnJlYWtwb2ludHMo
KQpAQCAtNTUwLDE0ICs1MzgsMTYgQEAgV0kuRE9NRGVidWdnZXJNYW5hZ2VyID0gY2xhc3MgRE9N
RGVidWdnZXJNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgX2hhbmRsZURPTUJyZWFrcG9p
bnREaXNhYmxlZFN0YXRlQ2hhbmdlZChldmVudCkKICAgICB7CiAgICAgICAgIGxldCBicmVha3Bv
aW50ID0gZXZlbnQudGFyZ2V0OwotICAgICAgICB0aGlzLl91cGRhdGVET01CcmVha3BvaW50KGJy
ZWFrcG9pbnQpOworICAgICAgICBmb3IgKGxldCB0YXJnZXQgb2YgV0kudGFyZ2V0cykKKyAgICAg
ICAgICAgIHRoaXMuX3VwZGF0ZURPTUJyZWFrcG9pbnQoYnJlYWtwb2ludCwgdGFyZ2V0KTsKICAg
ICAgICAgdGhpcy5fc2F2ZURPTUJyZWFrcG9pbnRzKCk7CiAgICAgfQogCiAgICAgX2hhbmRsZUV2
ZW50QnJlYWtwb2ludERpc2FibGVkU3RhdGVDaGFuZ2VkKGV2ZW50KQogICAgIHsKICAgICAgICAg
bGV0IGJyZWFrcG9pbnQgPSBldmVudC50YXJnZXQ7Ci0gICAgICAgIHRoaXMuX3VwZGF0ZUV2ZW50
QnJlYWtwb2ludChicmVha3BvaW50KTsKKyAgICAgICAgZm9yIChsZXQgdGFyZ2V0IG9mIFdJLnRh
cmdldHMpCisgICAgICAgICAgICB0aGlzLl91cGRhdGVFdmVudEJyZWFrcG9pbnQoYnJlYWtwb2lu
dCwgdGFyZ2V0KTsKICAgICAgICAgdGhpcy5fc2F2ZUV2ZW50QnJlYWtwb2ludHMoKTsKICAgICB9
CiAKQEAgLTU2OCw3ICs1NTgsOCBAQCBXSS5ET01EZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBET01E
ZWJ1Z2dlck1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgaWYgKGJyZWFrcG9pbnQg
PT09IHRoaXMuX2FsbFJlcXVlc3RzQnJlYWtwb2ludCkKICAgICAgICAgICAgIHRoaXMuX2FsbFJl
cXVlc3RzQnJlYWtwb2ludEVuYWJsZWRTZXR0aW5nLnZhbHVlID0gIWJyZWFrcG9pbnQuZGlzYWJs
ZWQ7CiAKLSAgICAgICAgdGhpcy5fdXBkYXRlVVJMQnJlYWtwb2ludChicmVha3BvaW50KTsKKyAg
ICAgICAgZm9yIChsZXQgdGFyZ2V0IG9mIFdJLnRhcmdldHMpCisgICAgICAgICAgICB0aGlzLl91
cGRhdGVVUkxCcmVha3BvaW50KGJyZWFrcG9pbnQsIHRhcmdldCk7CiAgICAgICAgIHRoaXMuX3Nh
dmVVUkxCcmVha3BvaW50cygpOwogICAgIH0KIApAQCAtNTc4LDIzICs1NjksMjMgQEAgV0kuRE9N
RGVidWdnZXJNYW5hZ2VyID0gY2xhc3MgRE9NRGVidWdnZXJNYW5hZ2VyIGV4dGVuZHMgV0kuT2Jq
ZWN0CiAgICAgICAgIHRoaXMuX2RldGFjaEJyZWFrcG9pbnRzRm9yRnJhbWUoZnJhbWUpOwogICAg
IH0KIAotICAgIF9tYWluRnJhbWVEaWRDaGFuZ2UoKQorICAgIF9tYWluRnJhbWVEaWRDaGFuZ2Uo
ZXZlbnQpCiAgICAgewotICAgICAgICB0aGlzLl9zcGVjdWxhdGl2ZWx5UmVzb2x2ZUJyZWFrcG9p
bnRzKCk7CisgICAgICAgIHRoaXMuX3NwZWN1bGF0aXZlbHlSZXNvbHZlRE9NQnJlYWtwb2ludHNG
b3JVUkwoV0kubmV0d29ya01hbmFnZXIubWFpbkZyYW1lLnVybCk7CiAgICAgfQogCiAgICAgX21h
aW5SZXNvdXJjZURpZENoYW5nZShldmVudCkKICAgICB7CiAgICAgICAgIGxldCBmcmFtZSA9IGV2
ZW50LnRhcmdldDsKICAgICAgICAgaWYgKGZyYW1lLmlzTWFpbkZyYW1lKCkpIHsKLSAgICAgICAg
ICAgIGZvciAobGV0IGJyZWFrcG9pbnRzIG9mIHRoaXMuX2RvbUJyZWFrcG9pbnRVUkxNYXAudmFs
dWVzKCkpCi0gICAgICAgICAgICAgICAgYnJlYWtwb2ludHMuZm9yRWFjaCgoYnJlYWtwb2ludCkg
PT4geyBicmVha3BvaW50LmRvbU5vZGVJZGVudGlmaWVyID0gbnVsbDsgfSk7CisgICAgICAgICAg
ICBmb3IgKGxldCBicmVha3BvaW50IG9mIHRoaXMuX2RvbUJyZWFrcG9pbnRVUkxNYXAudmFsdWVz
KCkpCisgICAgICAgICAgICAgICAgYnJlYWtwb2ludC5kb21Ob2RlSWRlbnRpZmllciA9IG51bGw7
CiAKICAgICAgICAgICAgIHRoaXMuX2RvbUJyZWFrcG9pbnRGcmFtZUlkZW50aWZpZXJNYXAuY2xl
YXIoKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICB0aGlzLl9kZXRhY2hCcmVha3BvaW50
c0ZvckZyYW1lKGZyYW1lKTsKIAotICAgICAgICB0aGlzLl9zcGVjdWxhdGl2ZWx5UmVzb2x2ZUJy
ZWFrcG9pbnRzKCk7CisgICAgICAgIHRoaXMuX3NwZWN1bGF0aXZlbHlSZXNvbHZlRE9NQnJlYWtw
b2ludHNGb3JVUkwoZnJhbWUudXJsKTsKICAgICB9CiAKICAgICBfbm9kZUluc2VydGVkKGV2ZW50
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5o
dG1sIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCmluZGV4
IGI3YWIyNDM4NzZhMTgzM2QwZWI2N2EzYjNjMTAxZTFjYWM4OWExMTAuLjM2MzhhOTQwNmQwMGQy
MWQwYjhkOWY3ZDA5MzU5MjkwZmQ4Y2FhMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9NYWluLmh0bWwKQEAgLTI4Myw2ICsyODMsNyBAQAogICAgIDxzY3JpcHQg
c3JjPSJCYXNlL0RlYnVnZ2FibGVUeXBlLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0i
QmFzZS9MaW5rZWRMaXN0LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQmFzZS9MaXN0
TXVsdGltYXAuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJCYXNlL011bHRpbWFwLmpz
Ij48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQmFzZS9PYmplY3QuanMiPjwvc2NyaXB0Pgog
ICAgIDxzY3JpcHQgc3JjPSJCYXNlL1Rocm90dGxlci5qcyI+PC9zY3JpcHQ+CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QuaHRtbCBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QuaHRtbAppbmRleCAxYjRkNmRlY2U1
NTI4MjJkOWZkOTdiMzFhYTAyNDA5ZWYxZDJmYWE1Li4yYWZkZjhhZmEyYzU3NmQ5YzY0YWIwNzdm
Njc4MWVmNGYyNGM3OTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9UZXN0Lmh0bWwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVGVzdC5odG1sCkBAIC00MSw2ICs0MSw3IEBACiAgICAgPHNjcmlwdCBzcmM9IkJhc2UvRGVi
dWdnYWJsZVR5cGUuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJCYXNlL0xpbmtlZExp
c3QuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJCYXNlL0xpc3RNdWx0aW1hcC5qcyI+
PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9IkJhc2UvTXVsdGltYXAuanMiPjwvc2NyaXB0Pgog
ICAgIDxzY3JpcHQgc3JjPSJCYXNlL09iamVjdC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBz
cmM9IkJhc2UvVGhyb3R0bGVyLmpzIj48L3NjcmlwdD4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDM3MDBhOWJkYWVlNTkw
Y2I1YWJlN2MzYmU0ODMwN2M0ZjY1ZjZhYzUuLmVlNGFlMGM5NzU4NjRhZTUxOGU2ZjA4OGFlNTJl
M2I5ZWVmNzk3YjAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxOS0wMy0wNyAgRGV2aW4gUm91
c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogRE9NRGVi
dWdnZXI6IHByb3RvY29sIGVycm9yIG9uIGZpcnN0IG9wZW4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTI0OAorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vNDg1Mzg0NjU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSm9zZXBoIFBlY29yYXJvLgorCisg
ICAgICAgICogaW5zcGVjdG9yL3VuaXQtdGVzdHMvbXVsdGltYXAuaHRtbDogQWRkZWQuCisgICAg
ICAgICogaW5zcGVjdG9yL3VuaXQtdGVzdHMvbXVsdGltYXAtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KwogMjAxOS0wMy0wNiAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAg
ICAgV2ViIEluc3BlY3RvcjogRE9NIERlYnVnZ2VyOiBldmVudCBicmVha3BvaW50cyBzdGlsbCBm
aXJlIHdoZW4gYnJlYWtwb2ludHMgYXJlIGRpc2FibGVkCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvdW5pdC10ZXN0cy9tdWx0aW1hcC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvdW5pdC10ZXN0cy9tdWx0aW1hcC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MWY4Y2EyN2Q1YWM2YmY4OWI4OWZkZmIwNzBmNjI2MDM0ODFhZGIwMAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci91bml0LXRlc3RzL211bHRpbWFwLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDY0IEBACitUZXN0aW5nIGFsbCBtZXRob2RzIG9mIE11bHRpbWFwLgorCisK
Kz09IFJ1bm5pbmcgdGVzdCBzdWl0ZTogTXVsdGltYXAKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBN
dWx0aW1hcC5wcm90b3R5cGUuY29uc3RydWN0b3IuRW1wdHkKK1tdCisKKy0tIFJ1bm5pbmcgdGVz
dCBjYXNlOiBNdWx0aW1hcC5wcm90b3R5cGUuY29uc3RydWN0b3IuTm9uRW1wdHkKK1tbInplcm8i
LCJvbmUiXSxbInplcm8iLCJmb3VyIl0sWyJ0d28iLCJ0aHJlZSJdXQorCistLSBSdW5uaW5nIHRl
c3QgY2FzZTogTXVsdGltYXAucHJvdG90eXBlLmFkZC5SZXBlYXRpbmdLZXlzVW5pcXVlVmFsdWVz
CitbWyJ6ZXJvIiwib25lIl0sWyJ6ZXJvIiwidHdvIl1dCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNl
OiBNdWx0aW1hcC5wcm90b3R5cGUuYWRkLlVuaXF1ZUtleXNSZXBlYXRpbmdWYWx1ZXMKK1tbInpl
cm8iLCJvbmUiXSxbInR3byIsIm9uZSJdLFsidGhyZWUiLCJvbmUiXV0KKworLS0gUnVubmluZyB0
ZXN0IGNhc2U6IE11bHRpbWFwLnByb3RvdHlwZS5hZGQuUmVwZWF0aW5nS2V5c1JlcGVhdGluZ1Zh
bHVlcworW1siemVybyIsIm9uZSJdLFsiemVybyIsInRocmVlIl0sWyJ0d28iLCJvbmUiXV0KKwor
LS0gUnVubmluZyB0ZXN0IGNhc2U6IE11bHRpbWFwLnByb3RvdHlwZS5kZWxldGUKK1tbMCwxXSxb
MiwzXSxbMiw0XV0KK1BBU1M6IFRoZSBrZXkgMCBhbmQgdGhlIHZhbHVlIDEgd2VyZSBzdWNjZXNz
ZnVsbHkgZGVsZXRlZC4KK1tbMiwzXSxbMiw0XV0KK1BBU1M6IFRoZSBrZXkgMiBhbmQgdGhlIHZh
bHVlIDMgd2VyZSBzdWNjZXNzZnVsbHkgZGVsZXRlZC4KK1tbMiw0XV0KK1BBU1M6IFRoZSBrZXkg
MiBhbmQgdGhlIHZhbHVlIDQgd2VyZSBzdWNjZXNzZnVsbHkgZGVsZXRlZC4KK1tdCisKKy0tIFJ1
bm5pbmcgdGVzdCBjYXNlOiBNdWx0aW1hcC5wcm90b3R5cGUuZGVsZXRlLk5vbkV4aXN0aW5nVmFs
dWVzCitbWzAsMV0sWzIsM10sWzQsNF1dCitQQVNTOiBOb3RoaW5nIHdhcyByZW1vdmVkIGZvciBr
ZXkgMCBhbmQgdmFsdWUgMy4KK1BBU1M6IE5vdGhpbmcgd2FzIHJlbW92ZWQgZm9yIGtleSAwIGFu
ZCB2YWx1ZSA0LgorUEFTUzogTm90aGluZyB3YXMgcmVtb3ZlZCBmb3Iga2V5IDIgYW5kIHZhbHVl
IDEuCitQQVNTOiBOb3RoaW5nIHdhcyByZW1vdmVkIGZvciBrZXkgMiBhbmQgdmFsdWUgNC4KK1BB
U1M6IE5vdGhpbmcgd2FzIHJlbW92ZWQgZm9yIGtleSA0IGFuZCB2YWx1ZSAxLgorUEFTUzogTm90
aGluZyB3YXMgcmVtb3ZlZCBmb3Iga2V5IDQgYW5kIHZhbHVlIDMuCitbWzAsMV0sWzIsM10sWzQs
NF1dCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBNdWx0aW1hcC5wcm90b3R5cGUuZGVsZXRlLk5v
bkV4aXN0aW5nS2V5cworW1swLDFdLFsyLDNdLFs0LDRdXQorUEFTUzogTm90aGluZyB3YXMgcmVt
b3ZlZCBmb3Iga2V5IDEuCitQQVNTOiBOb3RoaW5nIHdhcyByZW1vdmVkIGZvciBrZXkgMy4KK1BB
U1M6IE5vdGhpbmcgd2FzIHJlbW92ZWQgZm9yIGtleSA1LgorW1swLDFdLFsyLDNdLFs0LDRdXQor
CistLSBSdW5uaW5nIHRlc3QgY2FzZTogTXVsdGltYXAucHJvdG90eXBlLmRlbGV0ZS5BbGxWYWx1
ZXNGb3JLZXkKK1tbIm9wb3NzdW0iLCJiYWRnZXIiXSxbIm9wb3NzdW0iLCJyYWNjb29uIl0sWyJy
YWNjb29uIiwib3Bvc3N1bSJdXQorUEFTUzogTm90aGluZyB3YXMgcmVtb3ZlZCBmb3Iga2V5ICJi
YWRnZXIiLgorW1sib3Bvc3N1bSIsImJhZGdlciJdLFsib3Bvc3N1bSIsInJhY2Nvb24iXSxbInJh
Y2Nvb24iLCJvcG9zc3VtIl1dCitQQVNTOiBWYWx1ZXMgd2VyZSByZW1vdmVkIGZvciBrZXkgIm9w
b3NzdW0iLgorW1sicmFjY29vbiIsIm9wb3NzdW0iXV0KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6
IE11bHRpbWFwLnByb3RvdHlwZS5jbGVhcgorW1sib25lIiwidHdvIl0sWyJvbmUiLCJmaXZlIl0s
WyJ0aHJlZSIsImZvdXIiXSxbInRocmVlIiwic2l4Il1dCitbXQorCistLSBSdW5uaW5nIHRlc3Qg
Y2FzZTogTXVsdGltYXAucHJvdG90eXBlLmtleXMKK1tbIm9uZSIsInR3byJdLFsib25lIiwiZml2
ZSJdLFsidGhyZWUiLCJmb3VyIl0sWyJ0aHJlZSIsInNpeCJdXQorWyJvbmUiLCJ0aHJlZSJdCisK
Ky0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBNdWx0aW1hcC5wcm90b3R5cGUudmFsdWVzCitbWyJvbmUi
LCJ0d28iXSxbIm9uZSIsImZpdmUiXSxbInRocmVlIiwiZm91ciJdLFsidGhyZWUiLCJzaXgiXV0K
K1sidHdvIiwiZml2ZSIsImZvdXIiLCJzaXgiXQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvdW5pdC10ZXN0cy9tdWx0aW1hcC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L3VuaXQtdGVzdHMvbXVsdGltYXAuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MTI1Y2FmNTc3N2ZiZjljNGJj
OWI5Y2EwYWJmYzIzNmRlOWQ2OGJjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL3VuaXQtdGVzdHMvbXVsdGltYXAuaHRtbApAQCAtMCwwICsxLDIwOSBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL3Jlc291cmNlcy9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
PgorZnVuY3Rpb24gdGVzdCgpCit7CisgICAgbGV0IHN1aXRlID0gSW5zcGVjdG9yVGVzdC5jcmVh
dGVTeW5jU3VpdGUoIk11bHRpbWFwIik7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAg
ICAgIG5hbWU6ICJNdWx0aW1hcC5wcm90b3R5cGUuY29uc3RydWN0b3IuRW1wdHkiLAorICAgICAg
ICB0ZXN0KCkgeworICAgICAgICAgICAgbGV0IG11bHRpbWFwID0gbmV3IE11bHRpbWFwOworCisg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZyhtdWx0aW1hcCk7CisgICAgICAgIH0sCisgICAg
fSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJNdWx0aW1hcC5w
cm90b3R5cGUuY29uc3RydWN0b3IuTm9uRW1wdHkiLAorICAgICAgICB0ZXN0KCkgeworICAgICAg
ICAgICAgbGV0IG11bHRpbWFwID0gbmV3IE11bHRpbWFwKFtbInplcm8iLCAib25lIl0sIFsidHdv
IiwgInRocmVlIl0sIFsiemVybyIsICJmb3VyIl1dKTsKKworICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5sb2cobXVsdGltYXApOworICAgICAgICB9LAorICAgIH0pOworCisgICAgc3VpdGUuYWRk
VGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTXVsdGltYXAucHJvdG90eXBlLmFkZC5SZXBlYXRp
bmdLZXlzVW5pcXVlVmFsdWVzIiwKKyAgICAgICAgdGVzdCgpIHsKKyAgICAgICAgICAgIGxldCBt
dWx0aW1hcCA9IG5ldyBNdWx0aW1hcDsKKworICAgICAgICAgICAgbXVsdGltYXAuYWRkKCJ6ZXJv
IiwgIm9uZSIpOworICAgICAgICAgICAgbXVsdGltYXAuYWRkKCJ6ZXJvIiwgInR3byIpOworCisg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZyhtdWx0aW1hcCk7CisgICAgICAgIH0sCisgICAg
fSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJNdWx0aW1hcC5w
cm90b3R5cGUuYWRkLlVuaXF1ZUtleXNSZXBlYXRpbmdWYWx1ZXMiLAorICAgICAgICB0ZXN0KCkg
eworICAgICAgICAgICAgbGV0IG11bHRpbWFwID0gbmV3IE11bHRpbWFwOworCisgICAgICAgICAg
ICBtdWx0aW1hcC5hZGQoInplcm8iLCAib25lIik7CisgICAgICAgICAgICBtdWx0aW1hcC5hZGQo
InR3byIsICJvbmUiKTsKKyAgICAgICAgICAgIG11bHRpbWFwLmFkZCgidGhyZWUiLCAib25lIik7
CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKG11bHRpbWFwKTsKKyAgICAgICAgfSwK
KyAgICB9KTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk11bHRp
bWFwLnByb3RvdHlwZS5hZGQuUmVwZWF0aW5nS2V5c1JlcGVhdGluZ1ZhbHVlcyIsCisgICAgICAg
IHRlc3QoKSB7CisgICAgICAgICAgICBsZXQgbXVsdGltYXAgPSBuZXcgTXVsdGltYXA7CisKKyAg
ICAgICAgICAgIG11bHRpbWFwLmFkZCgiemVybyIsICJvbmUiKTsKKyAgICAgICAgICAgIG11bHRp
bWFwLmFkZCgidHdvIiwgIm9uZSIpOworICAgICAgICAgICAgbXVsdGltYXAuYWRkKCJ6ZXJvIiwg
Im9uZSIpOworICAgICAgICAgICAgbXVsdGltYXAuYWRkKCJ6ZXJvIiwgInRocmVlIik7CisKKyAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKG11bHRpbWFwKTsKKyAgICAgICAgfSwKKyAgICB9
KTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk11bHRpbWFwLnBy
b3RvdHlwZS5kZWxldGUiLAorICAgICAgICB0ZXN0KCkgeworICAgICAgICAgICAgbGV0IG11bHRp
bWFwID0gbmV3IE11bHRpbWFwOworCisgICAgICAgICAgICBtdWx0aW1hcC5hZGQoMCwgMSk7Cisg
ICAgICAgICAgICBtdWx0aW1hcC5hZGQoMiwgMyk7CisgICAgICAgICAgICBtdWx0aW1hcC5hZGQo
MiwgNCk7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKG11bHRpbWFwKTsKKworICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KG11bHRpbWFwLmRlbGV0ZSgwLCAxKSwg
IlRoZSBrZXkgMCBhbmQgdGhlIHZhbHVlIDEgd2VyZSBzdWNjZXNzZnVsbHkgZGVsZXRlZC4iKTsK
KworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2cobXVsdGltYXApOworCisgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQobXVsdGltYXAuZGVsZXRlKDIsIDMpLCAiVGhlIGtl
eSAyIGFuZCB0aGUgdmFsdWUgMyB3ZXJlIHN1Y2Nlc3NmdWxseSBkZWxldGVkLiIpOworCisgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZyhtdWx0aW1hcCk7CisKKyAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuZXhwZWN0VGhhdChtdWx0aW1hcC5kZWxldGUoMiwgNCksICJUaGUga2V5IDIgYW5k
IHRoZSB2YWx1ZSA0IHdlcmUgc3VjY2Vzc2Z1bGx5IGRlbGV0ZWQuIik7CisKKyAgICAgICAgICAg
IEluc3BlY3RvclRlc3QubG9nKG11bHRpbWFwKTsKKyAgICAgICAgfSwKKyAgICB9KTsKKworICAg
IHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk11bHRpbWFwLnByb3RvdHlwZS5k
ZWxldGUuTm9uRXhpc3RpbmdWYWx1ZXMiLAorICAgICAgICB0ZXN0KCkgeworICAgICAgICAgICAg
bGV0IG11bHRpbWFwID0gbmV3IE11bHRpbWFwOworCisgICAgICAgICAgICBtdWx0aW1hcC5hZGQo
MCwgMSk7CisgICAgICAgICAgICBtdWx0aW1hcC5hZGQoMiwgMyk7CisgICAgICAgICAgICBtdWx0
aW1hcC5hZGQoNCwgNCk7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKG11bHRpbWFw
KTsKKworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RGYWxzZShtdWx0aW1hcC5kZWxl
dGUoMCwgMyksICJOb3RoaW5nIHdhcyByZW1vdmVkIGZvciBrZXkgMCBhbmQgdmFsdWUgMy4iKTsK
KyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RmFsc2UobXVsdGltYXAuZGVsZXRlKDAs
IDQpLCAiTm90aGluZyB3YXMgcmVtb3ZlZCBmb3Iga2V5IDAgYW5kIHZhbHVlIDQuIik7CisgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEZhbHNlKG11bHRpbWFwLmRlbGV0ZSgyLCAxKSwg
Ik5vdGhpbmcgd2FzIHJlbW92ZWQgZm9yIGtleSAyIGFuZCB2YWx1ZSAxLiIpOworICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5leHBlY3RGYWxzZShtdWx0aW1hcC5kZWxldGUoMiwgNCksICJOb3Ro
aW5nIHdhcyByZW1vdmVkIGZvciBrZXkgMiBhbmQgdmFsdWUgNC4iKTsKKyAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuZXhwZWN0RmFsc2UobXVsdGltYXAuZGVsZXRlKDQsIDEpLCAiTm90aGluZyB3
YXMgcmVtb3ZlZCBmb3Iga2V5IDQgYW5kIHZhbHVlIDEuIik7CisgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmV4cGVjdEZhbHNlKG11bHRpbWFwLmRlbGV0ZSg0LCAzKSwgIk5vdGhpbmcgd2FzIHJl
bW92ZWQgZm9yIGtleSA0IGFuZCB2YWx1ZSAzLiIpOworCisgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmxvZyhtdWx0aW1hcCk7CisgICAgICAgIH0sCisgICAgfSk7CisKKyAgICBzdWl0ZS5hZGRU
ZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJNdWx0aW1hcC5wcm90b3R5cGUuZGVsZXRlLk5vbkV4
aXN0aW5nS2V5cyIsCisgICAgICAgIHRlc3QoKSB7CisgICAgICAgICAgICBsZXQgbXVsdGltYXAg
PSBuZXcgTXVsdGltYXA7CisKKyAgICAgICAgICAgIG11bHRpbWFwLmFkZCgwLCAxKTsKKyAgICAg
ICAgICAgIG11bHRpbWFwLmFkZCgyLCAzKTsKKyAgICAgICAgICAgIG11bHRpbWFwLmFkZCg0LCA0
KTsKKworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2cobXVsdGltYXApOworCisgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEZhbHNlKG11bHRpbWFwLmRlbGV0ZSgxKSwgIk5vdGhp
bmcgd2FzIHJlbW92ZWQgZm9yIGtleSAxLiIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5l
eHBlY3RGYWxzZShtdWx0aW1hcC5kZWxldGUoMyksICJOb3RoaW5nIHdhcyByZW1vdmVkIGZvciBr
ZXkgMy4iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RmFsc2UobXVsdGltYXAu
ZGVsZXRlKDUpLCAiTm90aGluZyB3YXMgcmVtb3ZlZCBmb3Iga2V5IDUuIik7CisKKyAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QubG9nKG11bHRpbWFwKTsKKyAgICAgICAgfSwKKyAgICB9KTsKKwor
ICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk11bHRpbWFwLnByb3RvdHlw
ZS5kZWxldGUuQWxsVmFsdWVzRm9yS2V5IiwKKyAgICAgICAgdGVzdCgpIHsKKyAgICAgICAgICAg
IGxldCBtdWx0aW1hcCA9IG5ldyBNdWx0aW1hcDsKKworICAgICAgICAgICAgbXVsdGltYXAuYWRk
KCJvcG9zc3VtIiwgImJhZGdlciIpOworICAgICAgICAgICAgbXVsdGltYXAuYWRkKCJvcG9zc3Vt
IiwgInJhY2Nvb24iKTsKKyAgICAgICAgICAgIG11bHRpbWFwLmFkZCgicmFjY29vbiIsICJvcG9z
c3VtIik7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKG11bHRpbWFwKTsKKworICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RGYWxzZShtdWx0aW1hcC5kZWxldGUoImJhZGdl
ciIpLCBgTm90aGluZyB3YXMgcmVtb3ZlZCBmb3Iga2V5ICJiYWRnZXIiLmApOworCisgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmxvZyhtdWx0aW1hcCk7CisKKyAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuZXhwZWN0VGhhdChtdWx0aW1hcC5kZWxldGUoIm9wb3NzdW0iKSwgYFZhbHVlcyB3ZXJl
IHJlbW92ZWQgZm9yIGtleSAib3Bvc3N1bSIuYCk7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRl
c3QubG9nKG11bHRpbWFwKTsKKyAgICAgICAgfSwKKyAgICB9KTsKKworICAgIHN1aXRlLmFkZFRl
c3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk11bHRpbWFwLnByb3RvdHlwZS5jbGVhciIsCisgICAg
ICAgIHRlc3QoKSB7CisgICAgICAgICAgICBsZXQgbXVsdGltYXAgPSBuZXcgTXVsdGltYXA7CisK
KyAgICAgICAgICAgIG11bHRpbWFwLmFkZCgib25lIiwgInR3byIpOworICAgICAgICAgICAgbXVs
dGltYXAuYWRkKCJ0aHJlZSIsICJmb3VyIik7CisgICAgICAgICAgICBtdWx0aW1hcC5hZGQoIm9u
ZSIsICJmaXZlIik7CisgICAgICAgICAgICBtdWx0aW1hcC5hZGQoInRocmVlIiwgInNpeCIpOwor
CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZyhtdWx0aW1hcCk7CisKKyAgICAgICAgICAg
IG11bHRpbWFwLmNsZWFyKCk7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKG11bHRp
bWFwKTsKKyAgICAgICAgfSwKKyAgICB9KTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAg
ICAgICAgbmFtZTogIk11bHRpbWFwLnByb3RvdHlwZS5rZXlzIiwKKyAgICAgICAgdGVzdCgpIHsK
KyAgICAgICAgICAgIGxldCBtdWx0aW1hcCA9IG5ldyBNdWx0aW1hcDsKKworICAgICAgICAgICAg
bXVsdGltYXAuYWRkKCJvbmUiLCAidHdvIik7CisgICAgICAgICAgICBtdWx0aW1hcC5hZGQoInRo
cmVlIiwgImZvdXIiKTsKKyAgICAgICAgICAgIG11bHRpbWFwLmFkZCgib25lIiwgImZpdmUiKTsK
KyAgICAgICAgICAgIG11bHRpbWFwLmFkZCgidGhyZWUiLCAic2l4Iik7CisKKyAgICAgICAgICAg
IEluc3BlY3RvclRlc3QubG9nKG11bHRpbWFwKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
bG9nKEFycmF5LmZyb20obXVsdGltYXAua2V5cygpKSk7CisgICAgICAgIH0sCisgICAgfSk7CisK
KyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJNdWx0aW1hcC5wcm90b3R5
cGUudmFsdWVzIiwKKyAgICAgICAgdGVzdCgpIHsKKyAgICAgICAgICAgIGxldCBtdWx0aW1hcCA9
IG5ldyBNdWx0aW1hcDsKKworICAgICAgICAgICAgbXVsdGltYXAuYWRkKCJvbmUiLCAidHdvIik7
CisgICAgICAgICAgICBtdWx0aW1hcC5hZGQoInRocmVlIiwgImZvdXIiKTsKKyAgICAgICAgICAg
IG11bHRpbWFwLmFkZCgib25lIiwgImZpdmUiKTsKKyAgICAgICAgICAgIG11bHRpbWFwLmFkZCgi
dGhyZWUiLCAic2l4Iik7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKG11bHRpbWFw
KTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKEFycmF5LmZyb20obXVsdGltYXAudmFs
dWVzKCkpKTsKKyAgICAgICAgfSwKKyAgICB9KTsKKworICAgIHN1aXRlLnJ1blRlc3RDYXNlc0Fu
ZEZpbmlzaCgpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3Qo
KSI+CisgICAgPHA+VGVzdGluZyBhbGwgbWV0aG9kcyBvZiBNdWx0aW1hcC48L3A+Cis8L2JvZHk+
Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>363859</attachid>
            <date>2019-03-07 01:40:09 -0800</date>
            <delta_ts>2019-03-11 14:29:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195248-20190307014008.patch</filename>
            <type>text/plain</type>
            <size>35234</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDZjMDJmYjUxMGU2MjViMTAzYWE4NGU1NzgwYjZk
ODY5MTkyZTFjMmUuLjUzN2M3YzcxODUyMjEzMzhiOTc3MWE4NmJlZmNiZmZhODc5OTdjNjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDE5LTAzLTA3ICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBE
T01EZWJ1Z2dlcjogcHJvdG9jb2wgZXJyb3Igb24gZmlyc3Qgb3BlbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk1MjQ4CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS80ODUzODQ2NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBEb24ndCB0cnkgdG8gY2FsbCBgRE9NRGVidWdnZXJgIGNvbW1hbmRzIHVudGls
IGEgdGFyZ2V0IGhhcyBiZWVuIGluaXRpYWxpemVkLgorICAgICAgICBTdGlsbCBhdHRlbXB0IHRv
IHJlc29sdmUgRE9NIGJyZWFrcG9pbnRzIHdoZW5ldmVyIHRoZSBtYWluIHJlc291cmNlL2ZyYW1l
IGNoYW5nZXMuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0RPTURlYnVn
Z2VyTWFuYWdlci5qczoKKyAgICAgICAgKFdJLkRPTURlYnVnZ2VyTWFuYWdlcik6CisgICAgICAg
IChXSS5ET01EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLmluaXRpYWxpemVUYXJnZXQpOiBBZGRl
ZC4KKyAgICAgICAgKFdJLkRPTURlYnVnZ2VyTWFuYWdlci5zdXBwb3J0c0V2ZW50QnJlYWtwb2lu
dHMpOgorICAgICAgICAoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5nZXQgc3VwcG9y
dGVkKToKKyAgICAgICAgKFdJLkRPTURlYnVnZ2VyTWFuYWdlci5wcm90b3R5cGUuYWRkRE9NQnJl
YWtwb2ludCk6CisgICAgICAgIChXSS5ET01EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLnJlbW92
ZURPTUJyZWFrcG9pbnQpOgorICAgICAgICAoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlw
ZS5hZGRFdmVudEJyZWFrcG9pbnQpOgorICAgICAgICAoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLnBy
b3RvdHlwZS5yZW1vdmVFdmVudEJyZWFrcG9pbnQpOgorICAgICAgICAoV0kuRE9NRGVidWdnZXJN
YW5hZ2VyLnByb3RvdHlwZS5hZGRVUkxCcmVha3BvaW50KToKKyAgICAgICAgKFdJLkRPTURlYnVn
Z2VyTWFuYWdlci5wcm90b3R5cGUucmVtb3ZlVVJMQnJlYWtwb2ludCk6CisgICAgICAgIChXSS5E
T01EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLl9zcGVjdWxhdGl2ZWx5UmVzb2x2ZURPTUJyZWFr
cG9pbnRzRm9yVVJMKTogQWRkZWQuCisgICAgICAgIChXSS5ET01EZWJ1Z2dlck1hbmFnZXIucHJv
dG90eXBlLl9yZXNvbHZlRE9NQnJlYWtwb2ludCk6CisgICAgICAgIChXSS5ET01EZWJ1Z2dlck1h
bmFnZXIucHJvdG90eXBlLl91cGRhdGVET01CcmVha3BvaW50KToKKyAgICAgICAgKFdJLkRPTURl
YnVnZ2VyTWFuYWdlci5wcm90b3R5cGUuX3VwZGF0ZUV2ZW50QnJlYWtwb2ludCk6CisgICAgICAg
IChXSS5ET01EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLl91cGRhdGVVUkxCcmVha3BvaW50KToK
KyAgICAgICAgKFdJLkRPTURlYnVnZ2VyTWFuYWdlci5wcm90b3R5cGUuX3NhdmVET01CcmVha3Bv
aW50cyk6CisgICAgICAgIChXSS5ET01EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLl9oYW5kbGVE
T01CcmVha3BvaW50RGlzYWJsZWRTdGF0ZUNoYW5nZWQpOgorICAgICAgICAoV0kuRE9NRGVidWdn
ZXJNYW5hZ2VyLnByb3RvdHlwZS5faGFuZGxlRXZlbnRCcmVha3BvaW50RGlzYWJsZWRTdGF0ZUNo
YW5nZWQpOgorICAgICAgICAoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5faGFuZGxl
VVJMQnJlYWtwb2ludERpc2FibGVkU3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKFdJLkRPTURlYnVn
Z2VyTWFuYWdlci5wcm90b3R5cGUuX21haW5GcmFtZURpZENoYW5nZSk6CisgICAgICAgIChXSS5E
T01EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLl9tYWluUmVzb3VyY2VEaWRDaGFuZ2UpOgorICAg
ICAgICAoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5yZW1vdmVFdmVudEJyZWFrcG9p
bnQuYnJlYWtwb2ludFJlbW92ZWQpOiBEZWxldGVkLgorICAgICAgICAoV0kuRE9NRGVidWdnZXJN
YW5hZ2VyLnByb3RvdHlwZS5fc3BlY3VsYXRpdmVseVJlc29sdmVCcmVha3BvaW50cyk6IERlbGV0
ZWQuCisgICAgICAgIChXSS5ET01EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLl91cGRhdGVET01C
cmVha3BvaW50LmJyZWFrcG9pbnRVcGRhdGVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkRPTURl
YnVnZ2VyTWFuYWdlci5wcm90b3R5cGUuX3Jlc29sdmVFdmVudEJyZWFrcG9pbnQpOiBEZWxldGVk
LgorICAgICAgICAoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5fcmVzb2x2ZVVSTEJy
ZWFrcG9pbnQpOiBEZWxldGVkLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9CYXNlL011bHRp
bWFwLmpzOiBBZGRlZC4KKyAgICAgICAgKE11bHRpbWFwKToKKyAgICAgICAgKE11bHRpbWFwLnBy
b3RvdHlwZS5nZXQpOgorICAgICAgICAoTXVsdGltYXAucHJvdG90eXBlLmFkZCk6CisgICAgICAg
IChNdWx0aW1hcC5wcm90b3R5cGUuZGVsZXRlKToKKyAgICAgICAgKE11bHRpbWFwLnByb3RvdHlw
ZS5jbGVhcik6CisgICAgICAgIChNdWx0aW1hcC5wcm90b3R5cGUua2V5cyk6CisgICAgICAgIChN
dWx0aW1hcC5wcm90b3R5cGUuKnZhbHVlcyk6CisgICAgICAgIChNdWx0aW1hcC5wcm90b3R5cGUu
KltTeW1ib2wuaXRlcmF0b3JdKToKKyAgICAgICAgKE11bHRpbWFwLnByb3RvdHlwZS50b0pTT04p
OgorICAgICAgICAqIC5lc2xpbnRyYzoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01haW4uaHRt
bDoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Rlc3QuaHRtbDoKKyAgICAgICAgSGVscGVyIGRh
dGEgc3RydWN0dXJlIGZvciBtYW5hZ2luZyBNYXBzIG9mIFNldHMgKGUuZy4gYWxsIERPTSBicmVh
a3BvaW50cyBmb3IgYSBVUkwpLgorCiAyMDE5LTAzLTA2ICBEZXZpbiBSb3Vzc28gIDxkcm91c3Nv
QGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBFbGVtZW50czogaGlnaGxpZ2h0
IHRoZSBub2RlIHdoZW4gaG92ZXJpbmcgZXZlbnQgbGlzdGVuZXJzIHNvcnRlZCBieSBub2RlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvLmVzbGludHJjIGIvU291cmNlL1dlYklu
c3BlY3RvclVJLy5lc2xpbnRyYwppbmRleCBkMjAxMDQzNTZkOGQzYTEzMTYxODc5NGYzNGU0MzZj
Y2FjMTY5MzRlLi5lNTAzZjdjNzVkOTY4YTc0Yjc1NDI1NTA4OTVhYWRmZjYyNTUyNjY5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvLmVzbGludHJjCisrKyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS8uZXNsaW50cmMKQEAgLTc2LDYgKzc2LDcgQEAKICAgICAgICAgIkluc3BlY3Rv
clRlc3QiOiB0cnVlLAogICAgICAgICAiTGlua2VkTGlzdCI6IHRydWUsCiAgICAgICAgICJMaXN0
TXVsdGltYXAiOiB0cnVlLAorICAgICAgICAiTXVsdGltYXAiOiB0cnVlLAogICAgICAgICAiUHJv
dG9jb2xUZXN0IjogdHJ1ZSwKICAgICAgICAgIlByb3RvY29sVGVzdEhhcm5lc3MiOiB0cnVlLAog
ICAgICAgICAiU3luY1Rlc3RTdWl0ZSI6IHRydWUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL011bHRpbWFwLmpzIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9NdWx0aW1hcC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMDNhZWFk
ZmQzNWE4N2Y0ZjA4ZTk4N2Q5YWVlMDNjNjYxMmI0ZDM0Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9NdWx0aW1hcC5qcwpAQCAtMCww
ICsxLDEwMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKK2NsYXNzIE11bHRpbWFwCit7CisgICAgY29uc3RydWN0
b3IoaXRlbXMgPSBbXSkKKyAgICB7CisgICAgICAgIHRoaXMuX21hcCA9IG5ldyBNYXA7CisKKyAg
ICAgICAgZm9yIChsZXQgW2tleSwgdmFsdWVdIG9mIGl0ZW1zKQorICAgICAgICAgICAgdGhpcy5h
ZGQoa2V5LCB2YWx1ZSk7CisgICAgfQorCisgICAgLy8gUHVibGljCisKKyAgICBnZXQoa2V5KQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX21hcC5nZXQoa2V5KTsKKyAgICB9CisKKyAgICBh
ZGQoa2V5LCB2YWx1ZSkKKyAgICB7CisgICAgICAgIGxldCB2YWx1ZVNldCA9IHRoaXMuX21hcC5n
ZXQoa2V5KTsKKyAgICAgICAgaWYgKCF2YWx1ZVNldCkgeworICAgICAgICAgICAgdmFsdWVTZXQg
PSBuZXcgU2V0OworICAgICAgICAgICAgdGhpcy5fbWFwLnNldChrZXksIHZhbHVlU2V0KTsKKyAg
ICAgICAgfQorICAgICAgICB2YWx1ZVNldC5hZGQodmFsdWUpOworCisgICAgICAgIHJldHVybiB0
aGlzOworICAgIH0KKworICAgIGRlbGV0ZShrZXksIHZhbHVlKQorICAgIHsKKyAgICAgICAgLy8g
QWxsb3cgYW4gZW50aXJlIGtleSB0byBiZSByZW1vdmVkIGJ5IG5vdCBwYXNzaW5nIGEgdmFsdWUu
CisgICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAxKQorICAgICAgICAgICAgcmV0dXJu
IHRoaXMuX21hcC5kZWxldGUoa2V5KTsKKworICAgICAgICBsZXQgdmFsdWVTZXQgPSB0aGlzLl9t
YXAuZ2V0KGtleSk7CisgICAgICAgIGlmICghdmFsdWVTZXQpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICAgICAgbGV0IGRlbGV0ZWQgPSB2YWx1ZVNldC5kZWxldGUodmFsdWUpOwor
CisgICAgICAgIGlmICghdmFsdWVTZXQuc2l6ZSkKKyAgICAgICAgICAgIHRoaXMuX21hcC5kZWxl
dGUoa2V5KTsKKworICAgICAgICByZXR1cm4gZGVsZXRlZDsKKyAgICB9CisKKyAgICBjbGVhcigp
CisgICAgeworICAgICAgICB0aGlzLl9tYXAuY2xlYXIoKTsKKyAgICB9CisKKyAgICBrZXlzKCkK
KyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9tYXAua2V5cygpOworICAgIH0KKworICAgICp2
YWx1ZXMoKQorICAgIHsKKyAgICAgICAgZm9yIChsZXQgdmFsdWVTZXQgb2YgdGhpcy5fbWFwLnZh
bHVlcygpKSB7CisgICAgICAgICAgICBmb3IgKGxldCB2YWx1ZSBvZiB2YWx1ZVNldCkKKyAgICAg
ICAgICAgICAgICB5aWVsZCB2YWx1ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgICpbU3ltYm9s
Lml0ZXJhdG9yXSgpCisgICAgeworICAgICAgICBmb3IgKGxldCBba2V5LCB2YWx1ZVNldF0gb2Yg
dGhpcy5fbWFwKSB7CisgICAgICAgICAgICBmb3IgKGxldCB2YWx1ZSBvZiB2YWx1ZVNldCkKKyAg
ICAgICAgICAgICAgICB5aWVsZCBba2V5LCB2YWx1ZV07CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICB0b0pTT04oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEFycmF5LmZyb20odGhpcyk7CisgICAg
fQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29u
dHJvbGxlcnMvRE9NRGVidWdnZXJNYW5hZ2VyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRE9NRGVidWdnZXJNYW5hZ2VyLmpzCmluZGV4IDk4NDA1
Njk5NTVhMWVlODVjZjI1NDRiOWNhZTZjYzgxODk5ZmIxMWQuLjk3Njc2MWI2OGFhNDMzMDVhMTIz
MGNiOGE5YzcyNjk1NjcwNWQ1ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0RPTURlYnVnZ2VyTWFuYWdlci5qcworKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9ET01EZWJ1Z2dlck1h
bmFnZXIuanMKQEAgLTMwLDcgKzMwLDcgQEAgV0kuRE9NRGVidWdnZXJNYW5hZ2VyID0gY2xhc3Mg
RE9NRGVidWdnZXJNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIHN1cGVyKCk7CiAK
ICAgICAgICAgdGhpcy5fZG9tQnJlYWtwb2ludHNTZXR0aW5nID0gbmV3IFdJLlNldHRpbmcoImRv
bS1icmVha3BvaW50cyIsIFtdKTsKLSAgICAgICAgdGhpcy5fZG9tQnJlYWtwb2ludFVSTE1hcCA9
IG5ldyBNYXA7CisgICAgICAgIHRoaXMuX2RvbUJyZWFrcG9pbnRVUkxNYXAgPSBuZXcgTXVsdGlt
YXA7CiAgICAgICAgIHRoaXMuX2RvbUJyZWFrcG9pbnRGcmFtZUlkZW50aWZpZXJNYXAgPSBuZXcg
TWFwOwogCiAgICAgICAgIHRoaXMuX2V2ZW50QnJlYWtwb2ludFNldHRpbmcgPSBuZXcgV0kuU2V0
dGluZygiZXZlbnQtYnJlYWtwb2ludHMiLCBbXSk7CkBAIC02OSwxMCArNjksMjkgQEAgV0kuRE9N
RGVidWdnZXJNYW5hZ2VyID0gY2xhc3MgRE9NRGVidWdnZXJNYW5hZ2VyIGV4dGVuZHMgV0kuT2Jq
ZWN0CiAgICAgICAgICAgICAgICAgdGhpcy5hZGRVUkxCcmVha3BvaW50KFdJLlVSTEJyZWFrcG9p
bnQuZGVzZXJpYWxpemUoc2VyaWFsaXplZEluZm8pKTsKIAogICAgICAgICAgICAgdGhpcy5fcmVz
dG9yaW5nQnJlYWtwb2ludHMgPSBmYWxzZTsKLSAgICAgICAgICAgIHRoaXMuX3NwZWN1bGF0aXZl
bHlSZXNvbHZlQnJlYWtwb2ludHMoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIFRhcmdl
dAorCisgICAgaW5pdGlhbGl6ZVRhcmdldCh0YXJnZXQpCisgICAgeworICAgICAgICBpZiAodGFy
Z2V0LkRPTURlYnVnZ2VyQWdlbnQpIHsKKyAgICAgICAgICAgIGlmICh0YXJnZXQubWFpblJlc291
cmNlKQorICAgICAgICAgICAgICAgIHRoaXMuX3NwZWN1bGF0aXZlbHlSZXNvbHZlRE9NQnJlYWtw
b2ludHNGb3JVUkwodGFyZ2V0Lm1haW5SZXNvdXJjZS51cmwpOworCisgICAgICAgICAgICBmb3Ig
KGxldCBicmVha3BvaW50IG9mIHRoaXMuX2V2ZW50QnJlYWtwb2ludHMpIHsKKyAgICAgICAgICAg
ICAgICBpZiAoIWJyZWFrcG9pbnQuZGlzYWJsZWQpCisgICAgICAgICAgICAgICAgICAgIHRoaXMu
X3VwZGF0ZUV2ZW50QnJlYWtwb2ludChicmVha3BvaW50LCB0YXJnZXQpOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBmb3IgKGxldCBicmVha3BvaW50IG9mIHRoaXMuX3VybEJyZWFrcG9p
bnRzKSB7CisgICAgICAgICAgICAgICAgaWYgKCFicmVha3BvaW50LmRpc2FibGVkKQorICAgICAg
ICAgICAgICAgICAgICB0aGlzLl91cGRhdGVVUkxCcmVha3BvaW50KGJyZWFrcG9pbnQsIHRhcmdl
dCk7CisgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmICghdGhpcy5fYWxsUmVxdWVzdHNC
cmVha3BvaW50LmRpc2FibGVkKQotICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZVVSTEJyZWFr
cG9pbnQodGhpcy5fYWxsUmVxdWVzdHNCcmVha3BvaW50KTsKKyAgICAgICAgICAgICAgICB0aGlz
Ll91cGRhdGVVUkxCcmVha3BvaW50KHRoaXMuX2FsbFJlcXVlc3RzQnJlYWtwb2ludCwgdGFyZ2V0
KTsKICAgICAgICAgfQogICAgIH0KIApAQCAtODAsNyArOTksNyBAQCBXSS5ET01EZWJ1Z2dlck1h
bmFnZXIgPSBjbGFzcyBET01EZWJ1Z2dlck1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAg
IHN0YXRpYyBzdXBwb3J0c0V2ZW50QnJlYWtwb2ludHMoKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IERPTURlYnVnZ2VyQWdlbnQuc2V0RXZlbnRCcmVha3BvaW50ICYmIERPTURlYnVnZ2VyQWdlbnQu
cmVtb3ZlRXZlbnRCcmVha3BvaW50OworICAgICAgICByZXR1cm4gSW5zcGVjdG9yQmFja2VuZC5k
b21haW5zLkRPTURlYnVnZ2VyLnNldEV2ZW50QnJlYWtwb2ludCAmJiBJbnNwZWN0b3JCYWNrZW5k
LmRvbWFpbnMuRE9NRGVidWdnZXIucmVtb3ZlRXZlbnRCcmVha3BvaW50OwogICAgIH0KIAogICAg
IHN0YXRpYyBzdXBwb3J0c1VSTEJyZWFrcG9pbnRzKCkKQEAgLTkyLDcgKzExMSw3IEBAIFdJLkRP
TURlYnVnZ2VyTWFuYWdlciA9IGNsYXNzIERPTURlYnVnZ2VyTWFuYWdlciBleHRlbmRzIFdJLk9i
amVjdAogCiAgICAgZ2V0IHN1cHBvcnRlZCgpCiAgICAgewotICAgICAgICByZXR1cm4gISF3aW5k
b3cuRE9NRGVidWdnZXJBZ2VudDsKKyAgICAgICAgcmV0dXJuICEhSW5zcGVjdG9yQmFja2VuZC5k
b21haW5zLkRPTURlYnVnZ2VyOwogICAgIH0KIAogICAgIGdldCBhbGxSZXF1ZXN0c0JyZWFrcG9p
bnQoKSB7IHJldHVybiB0aGlzLl9hbGxSZXF1ZXN0c0JyZWFrcG9pbnQ7IH0KQEAgLTE1NCwxNSAr
MTczLDExIEBAIFdJLkRPTURlYnVnZ2VyTWFuYWdlciA9IGNsYXNzIERPTURlYnVnZ2VyTWFuYWdl
ciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAg
ICAgICAgbGV0IGJyZWFrcG9pbnRzID0gdGhpcy5fZG9tQnJlYWtwb2ludFVSTE1hcC5nZXQoYnJl
YWtwb2ludC51cmwpOwotICAgICAgICBpZiAoIWJyZWFrcG9pbnRzKSB7Ci0gICAgICAgICAgICBi
cmVha3BvaW50cyA9IFticmVha3BvaW50XTsKLSAgICAgICAgICAgIHRoaXMuX2RvbUJyZWFrcG9p
bnRVUkxNYXAuc2V0KGJyZWFrcG9pbnQudXJsLCBicmVha3BvaW50cyk7Ci0gICAgICAgIH0gZWxz
ZQotICAgICAgICAgICAgYnJlYWtwb2ludHMucHVzaChicmVha3BvaW50KTsKKyAgICAgICAgdGhp
cy5fZG9tQnJlYWtwb2ludFVSTE1hcC5hZGQoYnJlYWtwb2ludC51cmwsIGJyZWFrcG9pbnQpOwog
Ci0gICAgICAgIGlmIChicmVha3BvaW50LmRvbU5vZGVJZGVudGlmaWVyKQotICAgICAgICAgICAg
dGhpcy5fcmVzb2x2ZURPTUJyZWFrcG9pbnQoYnJlYWtwb2ludCwgYnJlYWtwb2ludC5kb21Ob2Rl
SWRlbnRpZmllcik7CisgICAgICAgIGlmICghYnJlYWtwb2ludC5kaXNhYmxlZCkgeworICAgICAg
ICAgICAgdGhpcy5fdXBkYXRlRE9NQnJlYWtwb2ludChicmVha3BvaW50LCBXSS5hc3N1bWluZ01h
aW5UYXJnZXQoKSk7CisgICAgICAgIH0KIAogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xp
c3RlbmVycyhXSS5ET01EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuRE9NQnJlYWtwb2ludEFkZGVkLCB7
YnJlYWtwb2ludH0pOwogCkBAIC0xODgsMTQgKzIwMywxMyBAQCBXSS5ET01EZWJ1Z2dlck1hbmFn
ZXIgPSBjbGFzcyBET01EZWJ1Z2dlck1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgICAg
ICB0aGlzLl9kZXRhY2hET01CcmVha3BvaW50KGJyZWFrcG9pbnQpOwogCi0gICAgICAgIGxldCB1
cmxCcmVha3BvaW50cyA9IHRoaXMuX2RvbUJyZWFrcG9pbnRVUkxNYXAuZ2V0KGJyZWFrcG9pbnQu
dXJsKTsKLSAgICAgICAgdXJsQnJlYWtwb2ludHMucmVtb3ZlKGJyZWFrcG9pbnQsIHRydWUpOwor
ICAgICAgICB0aGlzLl9kb21CcmVha3BvaW50VVJMTWFwLmRlbGV0ZShicmVha3BvaW50LnVybCk7
CiAKLSAgICAgICAgaWYgKCFicmVha3BvaW50LmRpc2FibGVkKQotICAgICAgICAgICAgRE9NRGVi
dWdnZXJBZ2VudC5yZW1vdmVET01CcmVha3BvaW50KG5vZGVJZGVudGlmaWVyLCBicmVha3BvaW50
LnR5cGUpOwotCi0gICAgICAgIGlmICghdXJsQnJlYWtwb2ludHMubGVuZ3RoKQotICAgICAgICAg
ICAgdGhpcy5fZG9tQnJlYWtwb2ludFVSTE1hcC5kZWxldGUoYnJlYWtwb2ludC51cmwpOworICAg
ICAgICBpZiAoIWJyZWFrcG9pbnQuZGlzYWJsZWQpIHsKKyAgICAgICAgICAgIC8vIFdlIHNob3Vs
ZCBnZXQgdGhlIHRhcmdldCBhc3NvY2lhdGVkIHdpdGggdGhlIG5vZGVJZGVudGlmaWVyIG9mIHRo
aXMgYnJlYWtwb2ludC4KKyAgICAgICAgICAgIGxldCB0YXJnZXQgPSBXSS5hc3N1bWluZ01haW5U
YXJnZXQoKTsKKyAgICAgICAgICAgIHRhcmdldC5ET01EZWJ1Z2dlckFnZW50LnJlbW92ZURPTUJy
ZWFrcG9pbnQobm9kZUlkZW50aWZpZXIsIGJyZWFrcG9pbnQudHlwZSk7CisgICAgICAgIH0KIAog
ICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5ET01EZWJ1Z2dlck1hbmFn
ZXIuRXZlbnQuRE9NQnJlYWtwb2ludFJlbW92ZWQsIHticmVha3BvaW50fSk7CiAKQEAgLTIzNyw3
ICsyNTEsMTEgQEAgV0kuRE9NRGVidWdnZXJNYW5hZ2VyID0gY2xhc3MgRE9NRGVidWdnZXJNYW5h
Z2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0
ZW5lcnMoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLkV2ZW50LkV2ZW50QnJlYWtwb2ludEFkZGVkLCB7
YnJlYWtwb2ludH0pOwogCi0gICAgICAgIHRoaXMuX3Jlc29sdmVFdmVudEJyZWFrcG9pbnQoYnJl
YWtwb2ludCk7CisgICAgICAgIGlmICghYnJlYWtwb2ludC5kaXNhYmxlZCkgeworICAgICAgICAg
ICAgZm9yIChsZXQgdGFyZ2V0IG9mIFdJLnRhcmdldHMpCisgICAgICAgICAgICAgICAgdGhpcy5f
dXBkYXRlRXZlbnRCcmVha3BvaW50KGJyZWFrcG9pbnQsIHRhcmdldCk7CisgICAgICAgIH0KKwog
ICAgICAgICB0aGlzLl9zYXZlRXZlbnRCcmVha3BvaW50cygpOwogICAgIH0KIApAQCAtMjY0LDE5
ICsyODIsMTggQEAgV0kuRE9NRGVidWdnZXJNYW5hZ2VyID0gY2xhc3MgRE9NRGVidWdnZXJNYW5h
Z2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIGlmIChicmVha3BvaW50LmRpc2FibGVkKQog
ICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGZ1bmN0aW9uIGJyZWFrcG9pbnRSZW1vdmVk
KGVycm9yKSB7Ci0gICAgICAgICAgICBpZiAoZXJyb3IpCi0gICAgICAgICAgICAgICAgY29uc29s
ZS5lcnJvcihlcnJvcik7Ci0gICAgICAgIH0KKyAgICAgICAgZm9yIChsZXQgdGFyZ2V0IG9mIFdJ
LnRhcmdldHMpIHsKKyAgICAgICAgICAgIGlmICh0YXJnZXQuRE9NRGVidWdnZXJBZ2VudCkgewor
ICAgICAgICAgICAgICAgIC8vIENvbXBhdGliaWxpdHkgKGlPUyAxMik6IERPTURlYnVnZ2VyQWdl
bnQucmVtb3ZlRXZlbnRCcmVha3BvaW50IGRpZCBub3QgZXhpc3QuCisgICAgICAgICAgICAgICAg
aWYgKCFXSS5ET01EZWJ1Z2dlck1hbmFnZXIuc3VwcG9ydHNFdmVudEJyZWFrcG9pbnRzKCkpIHsK
KyAgICAgICAgICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoYnJlYWtwb2ludC50eXBlID09PSBX
SS5FdmVudEJyZWFrcG9pbnQuVHlwZS5MaXN0ZW5lcik7CisgICAgICAgICAgICAgICAgICAgIHRh
cmdldC5ET01EZWJ1Z2dlckFnZW50LnJlbW92ZUV2ZW50TGlzdGVuZXJCcmVha3BvaW50KGJyZWFr
cG9pbnQuZXZlbnROYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
ICAgICAgICAgfQogCi0gICAgICAgIC8vIENvbXBhdGliaWxpdHkgKGlPUyAxMik6IERPTURlYnVn
Z2VyQWdlbnQucmVtb3ZlRXZlbnRCcmVha3BvaW50IGRpZCBub3QgZXhpc3QuCi0gICAgICAgIGlm
ICghV0kuRE9NRGVidWdnZXJNYW5hZ2VyLnN1cHBvcnRzRXZlbnRCcmVha3BvaW50cygpKSB7Ci0g
ICAgICAgICAgICBjb25zb2xlLmFzc2VydChicmVha3BvaW50LnR5cGUgPT09IFdJLkV2ZW50QnJl
YWtwb2ludC5UeXBlLkxpc3RlbmVyKTsKLSAgICAgICAgICAgIERPTURlYnVnZ2VyQWdlbnQucmVt
b3ZlRXZlbnRMaXN0ZW5lckJyZWFrcG9pbnQoYnJlYWtwb2ludC5ldmVudE5hbWUsIGJyZWFrcG9p
bnRSZW1vdmVkKTsKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB0YXJnZXQu
RE9NRGVidWdnZXJBZ2VudC5yZW1vdmVFdmVudEJyZWFrcG9pbnQoYnJlYWtwb2ludC50eXBlLCBi
cmVha3BvaW50LmV2ZW50TmFtZSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KLQotICAgICAg
ICBET01EZWJ1Z2dlckFnZW50LnJlbW92ZUV2ZW50QnJlYWtwb2ludChicmVha3BvaW50LnR5cGUs
IGJyZWFrcG9pbnQuZXZlbnROYW1lLCBicmVha3BvaW50UmVtb3ZlZCk7CiAgICAgfQogCiAgICAg
dXJsQnJlYWtwb2ludEZvclVSTCh1cmwpCkBAIC0zMDYsNyArMzIzLDExIEBAIFdJLkRPTURlYnVn
Z2VyTWFuYWdlciA9IGNsYXNzIERPTURlYnVnZ2VyTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAog
CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkRPTURlYnVnZ2VyTWFu
YWdlci5FdmVudC5VUkxCcmVha3BvaW50QWRkZWQsIHticmVha3BvaW50fSk7CiAKLSAgICAgICAg
dGhpcy5fcmVzb2x2ZVVSTEJyZWFrcG9pbnQoYnJlYWtwb2ludCk7CisgICAgICAgIGlmICghYnJl
YWtwb2ludC5kaXNhYmxlZCkgeworICAgICAgICAgICAgZm9yIChsZXQgdGFyZ2V0IG9mIFdJLnRh
cmdldHMpCisgICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlVVJMQnJlYWtwb2ludChicmVha3Bv
aW50LCB0YXJnZXQpOworICAgICAgICB9CisKICAgICAgICAgdGhpcy5fc2F2ZVVSTEJyZWFrcG9p
bnRzKCk7CiAgICAgfQogCkBAIC0zMzMsMTcgKzM1NCwxNCBAQCBXSS5ET01EZWJ1Z2dlck1hbmFn
ZXIgPSBjbGFzcyBET01EZWJ1Z2dlck1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAg
aWYgKGJyZWFrcG9pbnQuZGlzYWJsZWQpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAg
Ly8gQ29tcGF0aWJpbGl0eSAoaU9TIDEyLjEpOiBET01EZWJ1Z2dlckFnZW50LnJlbW92ZVVSTEJy
ZWFrcG9pbnQgZGlkIG5vdCBleGlzdC4KLSAgICAgICAgaWYgKFdJLkRPTURlYnVnZ2VyTWFuYWdl
ci5zdXBwb3J0c1VSTEJyZWFrcG9pbnRzKCkpIHsKLSAgICAgICAgICAgIERPTURlYnVnZ2VyQWdl
bnQucmVtb3ZlVVJMQnJlYWtwb2ludChicmVha3BvaW50LnVybCwgKGVycm9yKSA9PiB7Ci0gICAg
ICAgICAgICAgICAgaWYgKGVycm9yKQotICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9y
KGVycm9yKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
RE9NRGVidWdnZXJBZ2VudC5yZW1vdmVYSFJCcmVha3BvaW50KGJyZWFrcG9pbnQudXJsLCAoZXJy
b3IpID0+IHsKLSAgICAgICAgICAgICAgICBpZiAoZXJyb3IpCi0gICAgICAgICAgICAgICAgICAg
IGNvbnNvbGUuZXJyb3IoZXJyb3IpOwotICAgICAgICAgICAgfSk7CisgICAgICAgIGZvciAobGV0
IHRhcmdldCBvZiBXSS50YXJnZXRzKSB7CisgICAgICAgICAgICBpZiAodGFyZ2V0LkRPTURlYnVn
Z2VyQWdlbnQpIHsKKyAgICAgICAgICAgICAgICAvLyBDb21wYXRpYmlsaXR5IChpT1MgMTIuMSk6
IERPTURlYnVnZ2VyQWdlbnQucmVtb3ZlVVJMQnJlYWtwb2ludCBkaWQgbm90IGV4aXN0LgorICAg
ICAgICAgICAgICAgIGlmIChXSS5ET01EZWJ1Z2dlck1hbmFnZXIuc3VwcG9ydHNVUkxCcmVha3Bv
aW50cygpKQorICAgICAgICAgICAgICAgICAgICB0YXJnZXQuRE9NRGVidWdnZXJBZ2VudC5yZW1v
dmVVUkxCcmVha3BvaW50KGJyZWFrcG9pbnQudXJsKTsKKyAgICAgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgICAgIHRhcmdldC5ET01EZWJ1Z2dlckFnZW50LnJlbW92ZVhIUkJyZWFr
cG9pbnQoYnJlYWtwb2ludC51cmwpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQog
CkBAIC0zOTMsMzIgKzQxMSwyMSBAQCBXSS5ET01EZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBET01E
ZWJ1Z2dlck1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgfQogICAgIH0KIAotICAg
IF9zcGVjdWxhdGl2ZWx5UmVzb2x2ZUJyZWFrcG9pbnRzKCkKKyAgICBfc3BlY3VsYXRpdmVseVJl
c29sdmVET01CcmVha3BvaW50c0ZvclVSTCh1cmwpCiAgICAgewotICAgICAgICBsZXQgbWFpbkZy
YW1lID0gV0kubmV0d29ya01hbmFnZXIubWFpbkZyYW1lOwotICAgICAgICBpZiAoIW1haW5GcmFt
ZSkKKyAgICAgICAgbGV0IGRvbUJyZWFrcG9pbnRzID0gdGhpcy5fZG9tQnJlYWtwb2ludFVSTE1h
cC5nZXQodXJsKTsKKyAgICAgICAgaWYgKCFkb21CcmVha3BvaW50cykKICAgICAgICAgICAgIHJl
dHVybjsKIAotICAgICAgICBsZXQgZG9tQnJlYWtwb2ludHMgPSB0aGlzLl9kb21CcmVha3BvaW50
VVJMTWFwLmdldChtYWluRnJhbWUudXJsKTsKLSAgICAgICAgaWYgKGRvbUJyZWFrcG9pbnRzKSB7
Ci0gICAgICAgICAgICBmb3IgKGxldCBicmVha3BvaW50IG9mIGRvbUJyZWFrcG9pbnRzKSB7Ci0g
ICAgICAgICAgICAgICAgaWYgKGJyZWFrcG9pbnQuZG9tTm9kZUlkZW50aWZpZXIpCi0gICAgICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAgICAgICAgV0kuZG9tTWFuYWdlci5w
dXNoTm9kZUJ5UGF0aFRvRnJvbnRlbmQoYnJlYWtwb2ludC5wYXRoLCAobm9kZUlkZW50aWZpZXIp
ID0+IHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFub2RlSWRlbnRpZmllcikKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgZm9yIChsZXQgYnJlYWtwb2ludCBvZiBk
b21CcmVha3BvaW50cykgeworICAgICAgICAgICAgaWYgKGJyZWFrcG9pbnQuZG9tTm9kZUlkZW50
aWZpZXIpCisgICAgICAgICAgICAgICAgY29udGludWU7CiAKKyAgICAgICAgICAgIFdJLmRvbU1h
bmFnZXIucHVzaE5vZGVCeVBhdGhUb0Zyb250ZW5kKGJyZWFrcG9pbnQucGF0aCwgKG5vZGVJZGVu
dGlmaWVyKSA9PiB7CisgICAgICAgICAgICAgICAgaWYgKG5vZGVJZGVudGlmaWVyKQogICAgICAg
ICAgICAgICAgICAgICB0aGlzLl9yZXNvbHZlRE9NQnJlYWtwb2ludChicmVha3BvaW50LCBub2Rl
SWRlbnRpZmllcik7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICB9CisgICAgICAg
ICAgICB9KTsKICAgICAgICAgfQotCi0gICAgICAgIGZvciAobGV0IGJyZWFrcG9pbnQgb2YgdGhp
cy5fZXZlbnRCcmVha3BvaW50cykKLSAgICAgICAgICAgIHRoaXMuX3Jlc29sdmVFdmVudEJyZWFr
cG9pbnQoYnJlYWtwb2ludCk7Ci0KLSAgICAgICAgZm9yIChsZXQgYnJlYWtwb2ludCBvZiB0aGlz
Ll91cmxCcmVha3BvaW50cykKLSAgICAgICAgICAgIHRoaXMuX3Jlc29sdmVVUkxCcmVha3BvaW50
KGJyZWFrcG9pbnQpOwogICAgIH0KIAogICAgIF9yZXNvbHZlRE9NQnJlYWtwb2ludChicmVha3Bv
aW50LCBub2RlSWRlbnRpZmllcikKQEAgLTQ0Myw4MCArNDUwLDY1IEBAIFdJLkRPTURlYnVnZ2Vy
TWFuYWdlciA9IGNsYXNzIERPTURlYnVnZ2VyTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogCiAg
ICAgICAgIGJyZWFrcG9pbnQuZG9tTm9kZUlkZW50aWZpZXIgPSBub2RlSWRlbnRpZmllcjsKIAot
ICAgICAgICB0aGlzLl91cGRhdGVET01CcmVha3BvaW50KGJyZWFrcG9pbnQpOworICAgICAgICAv
LyBXZSBzaG91bGQgZ2V0IHRoZSB0YXJnZXQgYXNzb2NpYXRlZCB3aXRoIHRoZSBub2RlSWRlbnRp
ZmllciBvZiB0aGlzIGJyZWFrcG9pbnQuCisgICAgICAgIGxldCB0YXJnZXQgPSBXSS5hc3N1bWlu
Z01haW5UYXJnZXQoKTsKKyAgICAgICAgdGhpcy5fdXBkYXRlRE9NQnJlYWtwb2ludChicmVha3Bv
aW50LCB0YXJnZXQpOwogICAgIH0KIAotICAgIF91cGRhdGVET01CcmVha3BvaW50KGJyZWFrcG9p
bnQpCisgICAgX3VwZGF0ZURPTUJyZWFrcG9pbnQoYnJlYWtwb2ludCwgdGFyZ2V0KQogICAgIHsK
LSAgICAgICAgbGV0IG5vZGVJZGVudGlmaWVyID0gYnJlYWtwb2ludC5kb21Ob2RlSWRlbnRpZmll
cjsKLSAgICAgICAgaWYgKCFub2RlSWRlbnRpZmllcikKKyAgICAgICAgaWYgKCFicmVha3BvaW50
LmRvbU5vZGVJZGVudGlmaWVyKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGZ1bmN0
aW9uIGJyZWFrcG9pbnRVcGRhdGVkKGVycm9yKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAo
ZXJyb3IpCi0gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7Ci0gICAgICAgIH0K
LQotICAgICAgICBpZiAoYnJlYWtwb2ludC5kaXNhYmxlZCkKLSAgICAgICAgICAgIERPTURlYnVn
Z2VyQWdlbnQucmVtb3ZlRE9NQnJlYWtwb2ludChub2RlSWRlbnRpZmllciwgYnJlYWtwb2ludC50
eXBlLCBicmVha3BvaW50VXBkYXRlZCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIERPTURl
YnVnZ2VyQWdlbnQuc2V0RE9NQnJlYWtwb2ludChub2RlSWRlbnRpZmllciwgYnJlYWtwb2ludC50
eXBlLCBicmVha3BvaW50VXBkYXRlZCk7Ci0gICAgfQotCi0gICAgX3VwZGF0ZUV2ZW50QnJlYWtw
b2ludChicmVha3BvaW50KQotICAgIHsKLSAgICAgICAgLy8gQ29tcGF0aWJpbGl0eSAoaU9TIDEy
KTogRE9NRGVidWdnZXJBZ2VudC5yZW1vdmVFdmVudEJyZWFrcG9pbnQgZGlkIG5vdCBleGlzdC4K
LSAgICAgICAgaWYgKCFXSS5ET01EZWJ1Z2dlck1hbmFnZXIuc3VwcG9ydHNFdmVudEJyZWFrcG9p
bnRzKCkpIHsKLSAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGJyZWFrcG9pbnQudHlwZSA9PT0g
V0kuRXZlbnRCcmVha3BvaW50LlR5cGUuTGlzdGVuZXIpOworICAgICAgICBpZiAodGFyZ2V0LkRP
TURlYnVnZ2VyQWdlbnQpIHsKICAgICAgICAgICAgIGlmIChicmVha3BvaW50LmRpc2FibGVkKQot
ICAgICAgICAgICAgICAgIERPTURlYnVnZ2VyQWdlbnQucmVtb3ZlRXZlbnRMaXN0ZW5lckJyZWFr
cG9pbnQoYnJlYWtwb2ludC5ldmVudE5hbWUpOworICAgICAgICAgICAgICAgIHRhcmdldC5ET01E
ZWJ1Z2dlckFnZW50LnJlbW92ZURPTUJyZWFrcG9pbnQoYnJlYWtwb2ludC5kb21Ob2RlSWRlbnRp
ZmllciwgYnJlYWtwb2ludC50eXBlKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAg
ICBET01EZWJ1Z2dlckFnZW50LnNldEV2ZW50TGlzdGVuZXJCcmVha3BvaW50KGJyZWFrcG9pbnQu
ZXZlbnROYW1lKTsKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB0YXJnZXQu
RE9NRGVidWdnZXJBZ2VudC5zZXRET01CcmVha3BvaW50KGJyZWFrcG9pbnQuZG9tTm9kZUlkZW50
aWZpZXIsIGJyZWFrcG9pbnQudHlwZSk7CiAgICAgICAgIH0KLQotICAgICAgICBpZiAoYnJlYWtw
b2ludC5kaXNhYmxlZCkKLSAgICAgICAgICAgIERPTURlYnVnZ2VyQWdlbnQucmVtb3ZlRXZlbnRC
cmVha3BvaW50KGJyZWFrcG9pbnQudHlwZSwgYnJlYWtwb2ludC5ldmVudE5hbWUpOwotICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBET01EZWJ1Z2dlckFnZW50LnNldEV2ZW50QnJlYWtwb2ludChi
cmVha3BvaW50LnR5cGUsIGJyZWFrcG9pbnQuZXZlbnROYW1lKTsKICAgICB9CiAKLSAgICBfdXBk
YXRlVVJMQnJlYWtwb2ludChicmVha3BvaW50KQorICAgIF91cGRhdGVFdmVudEJyZWFrcG9pbnQo
YnJlYWtwb2ludCwgdGFyZ2V0KQogICAgIHsKLSAgICAgICAgLy8gQ29tcGF0aWJpbGl0eSAoaU9T
IDEyLjEpOiBET01EZWJ1Z2dlckFnZW50LnJlbW92ZVVSTEJyZWFrcG9pbnQgZGlkIG5vdCBleGlz
dC4KLSAgICAgICAgaWYgKCFXSS5ET01EZWJ1Z2dlck1hbmFnZXIuc3VwcG9ydHNVUkxCcmVha3Bv
aW50cygpKSB7CisgICAgICAgIGlmICh0YXJnZXQuRE9NRGVidWdnZXJBZ2VudCkgeworICAgICAg
ICAgICAgLy8gQ29tcGF0aWJpbGl0eSAoaU9TIDEyKTogRE9NRGVidWdnZXJBZ2VudC5yZW1vdmVF
dmVudEJyZWFrcG9pbnQgZGlkIG5vdCBleGlzdC4KKyAgICAgICAgICAgIGlmICghV0kuRE9NRGVi
dWdnZXJNYW5hZ2VyLnN1cHBvcnRzRXZlbnRCcmVha3BvaW50cygpKSB7CisgICAgICAgICAgICAg
ICAgY29uc29sZS5hc3NlcnQoYnJlYWtwb2ludC50eXBlID09PSBXSS5FdmVudEJyZWFrcG9pbnQu
VHlwZS5MaXN0ZW5lcik7CisgICAgICAgICAgICAgICAgaWYgKGJyZWFrcG9pbnQuZGlzYWJsZWQp
CisgICAgICAgICAgICAgICAgICAgIHRhcmdldC5ET01EZWJ1Z2dlckFnZW50LnJlbW92ZUV2ZW50
TGlzdGVuZXJCcmVha3BvaW50KGJyZWFrcG9pbnQuZXZlbnROYW1lKTsKKyAgICAgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHRhcmdldC5ET01EZWJ1Z2dlckFnZW50LnNldEV2
ZW50TGlzdGVuZXJCcmVha3BvaW50KGJyZWFrcG9pbnQuZXZlbnROYW1lKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIGlmIChicmVha3BvaW50
LmRpc2FibGVkKQotICAgICAgICAgICAgICAgIERPTURlYnVnZ2VyQWdlbnQucmVtb3ZlWEhSQnJl
YWtwb2ludChicmVha3BvaW50LnVybCk7CisgICAgICAgICAgICAgICAgdGFyZ2V0LkRPTURlYnVn
Z2VyQWdlbnQucmVtb3ZlRXZlbnRCcmVha3BvaW50KGJyZWFrcG9pbnQudHlwZSwgYnJlYWtwb2lu
dC5ldmVudE5hbWUpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRhcmdldC5E
T01EZWJ1Z2dlckFnZW50LnNldEV2ZW50QnJlYWtwb2ludChicmVha3BvaW50LnR5cGUsIGJyZWFr
cG9pbnQuZXZlbnROYW1lKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIF91cGRhdGVVUkxCcmVh
a3BvaW50KGJyZWFrcG9pbnQsIHRhcmdldCkKKyAgICB7CisgICAgICAgIGlmICh0YXJnZXQuRE9N
RGVidWdnZXJBZ2VudCkgeworICAgICAgICAgICAgLy8gQ29tcGF0aWJpbGl0eSAoaU9TIDEyLjEp
OiBET01EZWJ1Z2dlckFnZW50LnJlbW92ZVVSTEJyZWFrcG9pbnQgZGlkIG5vdCBleGlzdC4KKyAg
ICAgICAgICAgIGlmICghV0kuRE9NRGVidWdnZXJNYW5hZ2VyLnN1cHBvcnRzVVJMQnJlYWtwb2lu
dHMoKSkgeworICAgICAgICAgICAgICAgIGlmIChicmVha3BvaW50LmRpc2FibGVkKQorICAgICAg
ICAgICAgICAgICAgICB0YXJnZXQuRE9NRGVidWdnZXJBZ2VudC5yZW1vdmVYSFJCcmVha3BvaW50
KGJyZWFrcG9pbnQudXJsKTsKKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAg
ICAgICAgbGV0IGlzUmVnZXggPSBicmVha3BvaW50LnR5cGUgPT09IFdJLlVSTEJyZWFrcG9pbnQu
VHlwZS5SZWd1bGFyRXhwcmVzc2lvbjsKKyAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LkRPTURl
YnVnZ2VyQWdlbnQuc2V0WEhSQnJlYWtwb2ludChicmVha3BvaW50LnVybCwgaXNSZWdleCk7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgaWYgKGJyZWFrcG9pbnQuZGlzYWJsZWQpCisgICAgICAgICAgICAgICAg
dGFyZ2V0LkRPTURlYnVnZ2VyQWdlbnQucmVtb3ZlVVJMQnJlYWtwb2ludChicmVha3BvaW50LnVy
bCk7CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBsZXQgaXNSZWdleCA9IGJy
ZWFrcG9pbnQudHlwZSA9PT0gV0kuVVJMQnJlYWtwb2ludC5UeXBlLlJlZ3VsYXJFeHByZXNzaW9u
OwotICAgICAgICAgICAgICAgIERlYnVnZ2VyQWdlbnQuc2V0WEhSQnJlYWtwb2ludChicmVha3Bv
aW50LnVybCwgaXNSZWdleCk7CisgICAgICAgICAgICAgICAgdGFyZ2V0LkRPTURlYnVnZ2VyQWdl
bnQuc2V0VVJMQnJlYWtwb2ludChicmVha3BvaW50LnVybCwgaXNSZWdleCk7CiAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLQotICAgICAgICBpZiAoYnJlYWtw
b2ludC5kaXNhYmxlZCkKLSAgICAgICAgICAgIERPTURlYnVnZ2VyQWdlbnQucmVtb3ZlVVJMQnJl
YWtwb2ludChicmVha3BvaW50LnVybCk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgbGV0
IGlzUmVnZXggPSBicmVha3BvaW50LnR5cGUgPT09IFdJLlVSTEJyZWFrcG9pbnQuVHlwZS5SZWd1
bGFyRXhwcmVzc2lvbjsKLSAgICAgICAgICAgIERPTURlYnVnZ2VyQWdlbnQuc2V0VVJMQnJlYWtw
b2ludChicmVha3BvaW50LnVybCwgaXNSZWdleCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBf
cmVzb2x2ZUV2ZW50QnJlYWtwb2ludChicmVha3BvaW50KQotICAgIHsKLSAgICAgICAgaWYgKGJy
ZWFrcG9pbnQuZGlzYWJsZWQpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgdGhpcy5f
dXBkYXRlRXZlbnRCcmVha3BvaW50KGJyZWFrcG9pbnQpOwotICAgIH0KLQotICAgIF9yZXNvbHZl
VVJMQnJlYWtwb2ludChicmVha3BvaW50KQotICAgIHsKLSAgICAgICAgaWYgKGJyZWFrcG9pbnQu
ZGlzYWJsZWQpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgdGhpcy5fdXBkYXRlVVJM
QnJlYWtwb2ludChicmVha3BvaW50KTsKICAgICB9CiAKICAgICBfc2F2ZURPTUJyZWFrcG9pbnRz
KCkKQEAgLTUyNCwxMSArNTE2LDcgQEAgV0kuRE9NRGVidWdnZXJNYW5hZ2VyID0gY2xhc3MgRE9N
RGVidWdnZXJNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIGlmICh0aGlzLl9yZXN0
b3JpbmdCcmVha3BvaW50cykKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBsZXQgYnJl
YWtwb2ludHNUb1NhdmUgPSBbXTsKLSAgICAgICAgZm9yIChsZXQgYnJlYWtwb2ludHMgb2YgdGhp
cy5fZG9tQnJlYWtwb2ludFVSTE1hcC52YWx1ZXMoKSkKLSAgICAgICAgICAgIGJyZWFrcG9pbnRz
VG9TYXZlID0gYnJlYWtwb2ludHNUb1NhdmUuY29uY2F0KGJyZWFrcG9pbnRzKTsKLQotICAgICAg
ICB0aGlzLl9kb21CcmVha3BvaW50c1NldHRpbmcudmFsdWUgPSBicmVha3BvaW50c1RvU2F2ZS5t
YXAoKGJyZWFrcG9pbnQpID0+IGJyZWFrcG9pbnQuc2VyaWFsaXphYmxlSW5mbyk7CisgICAgICAg
IHRoaXMuX2RvbUJyZWFrcG9pbnRzU2V0dGluZy52YWx1ZSA9IEFycmF5LmZyb20odGhpcy5fZG9t
QnJlYWtwb2ludFVSTE1hcC52YWx1ZXMoKSkubWFwKChicmVha3BvaW50KSA9PiBicmVha3BvaW50
LnNlcmlhbGl6YWJsZUluZm8pOwogICAgIH0KIAogICAgIF9zYXZlRXZlbnRCcmVha3BvaW50cygp
CkBAIC01NTAsMTQgKzUzOCwxNiBAQCBXSS5ET01EZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBET01E
ZWJ1Z2dlck1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICBfaGFuZGxlRE9NQnJlYWtwb2lu
dERpc2FibGVkU3RhdGVDaGFuZ2VkKGV2ZW50KQogICAgIHsKICAgICAgICAgbGV0IGJyZWFrcG9p
bnQgPSBldmVudC50YXJnZXQ7Ci0gICAgICAgIHRoaXMuX3VwZGF0ZURPTUJyZWFrcG9pbnQoYnJl
YWtwb2ludCk7CisgICAgICAgIGZvciAobGV0IHRhcmdldCBvZiBXSS50YXJnZXRzKQorICAgICAg
ICAgICAgdGhpcy5fdXBkYXRlRE9NQnJlYWtwb2ludChicmVha3BvaW50LCB0YXJnZXQpOwogICAg
ICAgICB0aGlzLl9zYXZlRE9NQnJlYWtwb2ludHMoKTsKICAgICB9CiAKICAgICBfaGFuZGxlRXZl
bnRCcmVha3BvaW50RGlzYWJsZWRTdGF0ZUNoYW5nZWQoZXZlbnQpCiAgICAgewogICAgICAgICBs
ZXQgYnJlYWtwb2ludCA9IGV2ZW50LnRhcmdldDsKLSAgICAgICAgdGhpcy5fdXBkYXRlRXZlbnRC
cmVha3BvaW50KGJyZWFrcG9pbnQpOworICAgICAgICBmb3IgKGxldCB0YXJnZXQgb2YgV0kudGFy
Z2V0cykKKyAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUV2ZW50QnJlYWtwb2ludChicmVha3BvaW50
LCB0YXJnZXQpOwogICAgICAgICB0aGlzLl9zYXZlRXZlbnRCcmVha3BvaW50cygpOwogICAgIH0K
IApAQCAtNTY4LDcgKzU1OCw4IEBAIFdJLkRPTURlYnVnZ2VyTWFuYWdlciA9IGNsYXNzIERPTURl
YnVnZ2VyTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICBpZiAoYnJlYWtwb2ludCA9
PT0gdGhpcy5fYWxsUmVxdWVzdHNCcmVha3BvaW50KQogICAgICAgICAgICAgdGhpcy5fYWxsUmVx
dWVzdHNCcmVha3BvaW50RW5hYmxlZFNldHRpbmcudmFsdWUgPSAhYnJlYWtwb2ludC5kaXNhYmxl
ZDsKIAotICAgICAgICB0aGlzLl91cGRhdGVVUkxCcmVha3BvaW50KGJyZWFrcG9pbnQpOworICAg
ICAgICBmb3IgKGxldCB0YXJnZXQgb2YgV0kudGFyZ2V0cykKKyAgICAgICAgICAgIHRoaXMuX3Vw
ZGF0ZVVSTEJyZWFrcG9pbnQoYnJlYWtwb2ludCwgdGFyZ2V0KTsKICAgICAgICAgdGhpcy5fc2F2
ZVVSTEJyZWFrcG9pbnRzKCk7CiAgICAgfQogCkBAIC01NzgsMjMgKzU2OSwyMyBAQCBXSS5ET01E
ZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBET01EZWJ1Z2dlck1hbmFnZXIgZXh0ZW5kcyBXSS5PYmpl
Y3QKICAgICAgICAgdGhpcy5fZGV0YWNoQnJlYWtwb2ludHNGb3JGcmFtZShmcmFtZSk7CiAgICAg
fQogCi0gICAgX21haW5GcmFtZURpZENoYW5nZSgpCisgICAgX21haW5GcmFtZURpZENoYW5nZShl
dmVudCkKICAgICB7Ci0gICAgICAgIHRoaXMuX3NwZWN1bGF0aXZlbHlSZXNvbHZlQnJlYWtwb2lu
dHMoKTsKKyAgICAgICAgdGhpcy5fc3BlY3VsYXRpdmVseVJlc29sdmVET01CcmVha3BvaW50c0Zv
clVSTChXSS5uZXR3b3JrTWFuYWdlci5tYWluRnJhbWUudXJsKTsKICAgICB9CiAKICAgICBfbWFp
blJlc291cmNlRGlkQ2hhbmdlKGV2ZW50KQogICAgIHsKICAgICAgICAgbGV0IGZyYW1lID0gZXZl
bnQudGFyZ2V0OwogICAgICAgICBpZiAoZnJhbWUuaXNNYWluRnJhbWUoKSkgewotICAgICAgICAg
ICAgZm9yIChsZXQgYnJlYWtwb2ludHMgb2YgdGhpcy5fZG9tQnJlYWtwb2ludFVSTE1hcC52YWx1
ZXMoKSkKLSAgICAgICAgICAgICAgICBicmVha3BvaW50cy5mb3JFYWNoKChicmVha3BvaW50KSA9
PiB7IGJyZWFrcG9pbnQuZG9tTm9kZUlkZW50aWZpZXIgPSBudWxsOyB9KTsKKyAgICAgICAgICAg
IGZvciAobGV0IGJyZWFrcG9pbnQgb2YgdGhpcy5fZG9tQnJlYWtwb2ludFVSTE1hcC52YWx1ZXMo
KSkKKyAgICAgICAgICAgICAgICBicmVha3BvaW50LmRvbU5vZGVJZGVudGlmaWVyID0gbnVsbDsK
IAogICAgICAgICAgICAgdGhpcy5fZG9tQnJlYWtwb2ludEZyYW1lSWRlbnRpZmllck1hcC5jbGVh
cigpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIHRoaXMuX2RldGFjaEJyZWFrcG9pbnRz
Rm9yRnJhbWUoZnJhbWUpOwogCi0gICAgICAgIHRoaXMuX3NwZWN1bGF0aXZlbHlSZXNvbHZlQnJl
YWtwb2ludHMoKTsKKyAgICAgICAgdGhpcy5fc3BlY3VsYXRpdmVseVJlc29sdmVET01CcmVha3Bv
aW50c0ZvclVSTChmcmFtZS51cmwpOwogICAgIH0KIAogICAgIF9ub2RlSW5zZXJ0ZWQoZXZlbnQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0
bWwgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKaW5kZXgg
YjdhYjI0Mzg3NmExODMzZDBlYjY3YTNiM2MxMDFlMWNhYzg5YTExMC4uMzYzOGE5NDA2ZDAwZDIx
ZDBiOGQ5ZjdkMDkzNTkyOTBmZDhjYWEyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL01haW4uaHRtbApAQCAtMjgzLDYgKzI4Myw3IEBACiAgICAgPHNjcmlwdCBz
cmM9IkJhc2UvRGVidWdnYWJsZVR5cGUuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJC
YXNlL0xpbmtlZExpc3QuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJCYXNlL0xpc3RN
dWx0aW1hcC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9IkJhc2UvTXVsdGltYXAuanMi
Pjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJCYXNlL09iamVjdC5qcyI+PC9zY3JpcHQ+CiAg
ICAgPHNjcmlwdCBzcmM9IkJhc2UvVGhyb3R0bGVyLmpzIj48L3NjcmlwdD4KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC5odG1sIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC5odG1sCmluZGV4IDFiNGQ2ZGVjZTU1
MjgyMmQ5ZmQ5N2IzMWFhMDI0MDllZjFkMmZhYTUuLjJhZmRmOGFmYTJjNTc2ZDljNjRhYjA3N2Y2
NzgxZWY0ZjI0Yzc5OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1Rlc3QuaHRtbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9UZXN0Lmh0bWwKQEAgLTQxLDYgKzQxLDcgQEAKICAgICA8c2NyaXB0IHNyYz0iQmFzZS9EZWJ1
Z2dhYmxlVHlwZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkJhc2UvTGlua2VkTGlz
dC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkJhc2UvTGlzdE11bHRpbWFwLmpzIj48
L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iQmFzZS9NdWx0aW1hcC5qcyI+PC9zY3JpcHQ+CiAg
ICAgPHNjcmlwdCBzcmM9IkJhc2UvT2JqZWN0LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNy
Yz0iQmFzZS9UaHJvdHRsZXIuanMiPjwvc2NyaXB0PgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMzcwMGE5YmRhZWU1OTBj
YjVhYmU3YzNiZTQ4MzA3YzRmNjVmNmFjNS4uNjg1NDFiMWQwNmY5MTZlYzZiM2ExOTI4ZWZlNGNl
NWMyYWVmNDBkOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE5LTAzLTA3ICBEZXZpbiBSb3Vz
c28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBET01EZWJ1
Z2dlcjogcHJvdG9jb2wgZXJyb3Igb24gZmlyc3Qgb3BlbgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk1MjQ4CisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS80ODUzODQ2NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIGluc3BlY3Rvci91bml0LXRlc3RzL211bHRpbWFwLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGluc3BlY3Rvci91bml0LXRlc3RzL211bHRpbWFwLWV4cGVjdGVkLnR4dDogQWRkZWQuCisK
IDIwMTktMDMtMDYgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAg
IFdlYiBJbnNwZWN0b3I6IERPTSBEZWJ1Z2dlcjogZXZlbnQgYnJlYWtwb2ludHMgc3RpbGwgZmly
ZSB3aGVuIGJyZWFrcG9pbnRzIGFyZSBkaXNhYmxlZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL3VuaXQtdGVzdHMvbXVsdGltYXAtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL3VuaXQtdGVzdHMvbXVsdGltYXAtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFm
OGNhMjdkNWFjNmJmODliODlmZGZiMDcwZjYyNjAzNDgxYWRiMDAKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdW5pdC10ZXN0cy9tdWx0aW1hcC1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSw2NCBAQAorVGVzdGluZyBhbGwgbWV0aG9kcyBvZiBNdWx0aW1hcC4KKworCis9
PSBSdW5uaW5nIHRlc3Qgc3VpdGU6IE11bHRpbWFwCistLSBSdW5uaW5nIHRlc3QgY2FzZTogTXVs
dGltYXAucHJvdG90eXBlLmNvbnN0cnVjdG9yLkVtcHR5CitbXQorCistLSBSdW5uaW5nIHRlc3Qg
Y2FzZTogTXVsdGltYXAucHJvdG90eXBlLmNvbnN0cnVjdG9yLk5vbkVtcHR5CitbWyJ6ZXJvIiwi
b25lIl0sWyJ6ZXJvIiwiZm91ciJdLFsidHdvIiwidGhyZWUiXV0KKworLS0gUnVubmluZyB0ZXN0
IGNhc2U6IE11bHRpbWFwLnByb3RvdHlwZS5hZGQuUmVwZWF0aW5nS2V5c1VuaXF1ZVZhbHVlcwor
W1siemVybyIsIm9uZSJdLFsiemVybyIsInR3byJdXQorCistLSBSdW5uaW5nIHRlc3QgY2FzZTog
TXVsdGltYXAucHJvdG90eXBlLmFkZC5VbmlxdWVLZXlzUmVwZWF0aW5nVmFsdWVzCitbWyJ6ZXJv
Iiwib25lIl0sWyJ0d28iLCJvbmUiXSxbInRocmVlIiwib25lIl1dCisKKy0tIFJ1bm5pbmcgdGVz
dCBjYXNlOiBNdWx0aW1hcC5wcm90b3R5cGUuYWRkLlJlcGVhdGluZ0tleXNSZXBlYXRpbmdWYWx1
ZXMKK1tbInplcm8iLCJvbmUiXSxbInplcm8iLCJ0aHJlZSJdLFsidHdvIiwib25lIl1dCisKKy0t
IFJ1bm5pbmcgdGVzdCBjYXNlOiBNdWx0aW1hcC5wcm90b3R5cGUuZGVsZXRlCitbWzAsMV0sWzIs
M10sWzIsNF1dCitQQVNTOiBUaGUga2V5IDAgYW5kIHRoZSB2YWx1ZSAxIHdlcmUgc3VjY2Vzc2Z1
bGx5IGRlbGV0ZWQuCitbWzIsM10sWzIsNF1dCitQQVNTOiBUaGUga2V5IDIgYW5kIHRoZSB2YWx1
ZSAzIHdlcmUgc3VjY2Vzc2Z1bGx5IGRlbGV0ZWQuCitbWzIsNF1dCitQQVNTOiBUaGUga2V5IDIg
YW5kIHRoZSB2YWx1ZSA0IHdlcmUgc3VjY2Vzc2Z1bGx5IGRlbGV0ZWQuCitbXQorCistLSBSdW5u
aW5nIHRlc3QgY2FzZTogTXVsdGltYXAucHJvdG90eXBlLmRlbGV0ZS5Ob25FeGlzdGluZ1ZhbHVl
cworW1swLDFdLFsyLDNdLFs0LDRdXQorUEFTUzogTm90aGluZyB3YXMgcmVtb3ZlZCBmb3Iga2V5
IDAgYW5kIHZhbHVlIDMuCitQQVNTOiBOb3RoaW5nIHdhcyByZW1vdmVkIGZvciBrZXkgMCBhbmQg
dmFsdWUgNC4KK1BBU1M6IE5vdGhpbmcgd2FzIHJlbW92ZWQgZm9yIGtleSAyIGFuZCB2YWx1ZSAx
LgorUEFTUzogTm90aGluZyB3YXMgcmVtb3ZlZCBmb3Iga2V5IDIgYW5kIHZhbHVlIDQuCitQQVNT
OiBOb3RoaW5nIHdhcyByZW1vdmVkIGZvciBrZXkgNCBhbmQgdmFsdWUgMS4KK1BBU1M6IE5vdGhp
bmcgd2FzIHJlbW92ZWQgZm9yIGtleSA0IGFuZCB2YWx1ZSAzLgorW1swLDFdLFsyLDNdLFs0LDRd
XQorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogTXVsdGltYXAucHJvdG90eXBlLmRlbGV0ZS5Ob25F
eGlzdGluZ0tleXMKK1tbMCwxXSxbMiwzXSxbNCw0XV0KK1BBU1M6IE5vdGhpbmcgd2FzIHJlbW92
ZWQgZm9yIGtleSAxLgorUEFTUzogTm90aGluZyB3YXMgcmVtb3ZlZCBmb3Iga2V5IDMuCitQQVNT
OiBOb3RoaW5nIHdhcyByZW1vdmVkIGZvciBrZXkgNS4KK1tbMCwxXSxbMiwzXSxbNCw0XV0KKwor
LS0gUnVubmluZyB0ZXN0IGNhc2U6IE11bHRpbWFwLnByb3RvdHlwZS5kZWxldGUuQWxsVmFsdWVz
Rm9yS2V5CitbWyJvcG9zc3VtIiwiYmFkZ2VyIl0sWyJvcG9zc3VtIiwicmFjY29vbiJdLFsicmFj
Y29vbiIsIm9wb3NzdW0iXV0KK1BBU1M6IE5vdGhpbmcgd2FzIHJlbW92ZWQgZm9yIGtleSAiYmFk
Z2VyIi4KK1tbIm9wb3NzdW0iLCJiYWRnZXIiXSxbIm9wb3NzdW0iLCJyYWNjb29uIl0sWyJyYWNj
b29uIiwib3Bvc3N1bSJdXQorUEFTUzogVmFsdWVzIHdlcmUgcmVtb3ZlZCBmb3Iga2V5ICJvcG9z
c3VtIi4KK1tbInJhY2Nvb24iLCJvcG9zc3VtIl1dCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBN
dWx0aW1hcC5wcm90b3R5cGUuY2xlYXIKK1tbIm9uZSIsInR3byJdLFsib25lIiwiZml2ZSJdLFsi
dGhyZWUiLCJmb3VyIl0sWyJ0aHJlZSIsInNpeCJdXQorW10KKworLS0gUnVubmluZyB0ZXN0IGNh
c2U6IE11bHRpbWFwLnByb3RvdHlwZS5rZXlzCitbWyJvbmUiLCJ0d28iXSxbIm9uZSIsImZpdmUi
XSxbInRocmVlIiwiZm91ciJdLFsidGhyZWUiLCJzaXgiXV0KK1sib25lIiwidGhyZWUiXQorCist
LSBSdW5uaW5nIHRlc3QgY2FzZTogTXVsdGltYXAucHJvdG90eXBlLnZhbHVlcworW1sib25lIiwi
dHdvIl0sWyJvbmUiLCJmaXZlIl0sWyJ0aHJlZSIsImZvdXIiXSxbInRocmVlIiwic2l4Il1dCitb
InR3byIsImZpdmUiLCJmb3VyIiwic2l4Il0KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL3VuaXQtdGVzdHMvbXVsdGltYXAuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci91
bml0LXRlc3RzL211bHRpbWFwLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjEyNWNhZjU3NzdmYmY5YzRiYzli
OWNhMGFiZmMyMzZkZTlkNjhiYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci91bml0LXRlc3RzL211bHRpbWFwLmh0bWwKQEAgLTAsMCArMSwyMDkgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9yZXNvdXJjZXMvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4K
K2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGxldCBzdWl0ZSA9IEluc3BlY3RvclRlc3QuY3JlYXRl
U3luY1N1aXRlKCJNdWx0aW1hcCIpOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAg
ICBuYW1lOiAiTXVsdGltYXAucHJvdG90eXBlLmNvbnN0cnVjdG9yLkVtcHR5IiwKKyAgICAgICAg
dGVzdCgpIHsKKyAgICAgICAgICAgIGxldCBtdWx0aW1hcCA9IG5ldyBNdWx0aW1hcDsKKworICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2cobXVsdGltYXApOworICAgICAgICB9LAorICAgIH0p
OworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTXVsdGltYXAucHJv
dG90eXBlLmNvbnN0cnVjdG9yLk5vbkVtcHR5IiwKKyAgICAgICAgdGVzdCgpIHsKKyAgICAgICAg
ICAgIGxldCBtdWx0aW1hcCA9IG5ldyBNdWx0aW1hcChbWyJ6ZXJvIiwgIm9uZSJdLCBbInR3byIs
ICJ0aHJlZSJdLCBbInplcm8iLCAiZm91ciJdXSk7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRl
c3QubG9nKG11bHRpbWFwKTsKKyAgICAgICAgfSwKKyAgICB9KTsKKworICAgIHN1aXRlLmFkZFRl
c3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk11bHRpbWFwLnByb3RvdHlwZS5hZGQuUmVwZWF0aW5n
S2V5c1VuaXF1ZVZhbHVlcyIsCisgICAgICAgIHRlc3QoKSB7CisgICAgICAgICAgICBsZXQgbXVs
dGltYXAgPSBuZXcgTXVsdGltYXA7CisKKyAgICAgICAgICAgIG11bHRpbWFwLmFkZCgiemVybyIs
ICJvbmUiKTsKKyAgICAgICAgICAgIG11bHRpbWFwLmFkZCgiemVybyIsICJ0d28iKTsKKworICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2cobXVsdGltYXApOworICAgICAgICB9LAorICAgIH0p
OworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTXVsdGltYXAucHJv
dG90eXBlLmFkZC5VbmlxdWVLZXlzUmVwZWF0aW5nVmFsdWVzIiwKKyAgICAgICAgdGVzdCgpIHsK
KyAgICAgICAgICAgIGxldCBtdWx0aW1hcCA9IG5ldyBNdWx0aW1hcDsKKworICAgICAgICAgICAg
bXVsdGltYXAuYWRkKCJ6ZXJvIiwgIm9uZSIpOworICAgICAgICAgICAgbXVsdGltYXAuYWRkKCJ0
d28iLCAib25lIik7CisgICAgICAgICAgICBtdWx0aW1hcC5hZGQoInRocmVlIiwgIm9uZSIpOwor
CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZyhtdWx0aW1hcCk7CisgICAgICAgIH0sCisg
ICAgfSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJNdWx0aW1h
cC5wcm90b3R5cGUuYWRkLlJlcGVhdGluZ0tleXNSZXBlYXRpbmdWYWx1ZXMiLAorICAgICAgICB0
ZXN0KCkgeworICAgICAgICAgICAgbGV0IG11bHRpbWFwID0gbmV3IE11bHRpbWFwOworCisgICAg
ICAgICAgICBtdWx0aW1hcC5hZGQoInplcm8iLCAib25lIik7CisgICAgICAgICAgICBtdWx0aW1h
cC5hZGQoInR3byIsICJvbmUiKTsKKyAgICAgICAgICAgIG11bHRpbWFwLmFkZCgiemVybyIsICJv
bmUiKTsKKyAgICAgICAgICAgIG11bHRpbWFwLmFkZCgiemVybyIsICJ0aHJlZSIpOworCisgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZyhtdWx0aW1hcCk7CisgICAgICAgIH0sCisgICAgfSk7
CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJNdWx0aW1hcC5wcm90
b3R5cGUuZGVsZXRlIiwKKyAgICAgICAgdGVzdCgpIHsKKyAgICAgICAgICAgIGxldCBtdWx0aW1h
cCA9IG5ldyBNdWx0aW1hcDsKKworICAgICAgICAgICAgbXVsdGltYXAuYWRkKDAsIDEpOworICAg
ICAgICAgICAgbXVsdGltYXAuYWRkKDIsIDMpOworICAgICAgICAgICAgbXVsdGltYXAuYWRkKDIs
IDQpOworCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZyhtdWx0aW1hcCk7CisKKyAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChtdWx0aW1hcC5kZWxldGUoMCwgMSksICJU
aGUga2V5IDAgYW5kIHRoZSB2YWx1ZSAxIHdlcmUgc3VjY2Vzc2Z1bGx5IGRlbGV0ZWQuIik7CisK
KyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKG11bHRpbWFwKTsKKworICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KG11bHRpbWFwLmRlbGV0ZSgyLCAzKSwgIlRoZSBrZXkg
MiBhbmQgdGhlIHZhbHVlIDMgd2VyZSBzdWNjZXNzZnVsbHkgZGVsZXRlZC4iKTsKKworICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5sb2cobXVsdGltYXApOworCisgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmV4cGVjdFRoYXQobXVsdGltYXAuZGVsZXRlKDIsIDQpLCAiVGhlIGtleSAyIGFuZCB0
aGUgdmFsdWUgNCB3ZXJlIHN1Y2Nlc3NmdWxseSBkZWxldGVkLiIpOworCisgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmxvZyhtdWx0aW1hcCk7CisgICAgICAgIH0sCisgICAgfSk7CisKKyAgICBz
dWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJNdWx0aW1hcC5wcm90b3R5cGUuZGVs
ZXRlLk5vbkV4aXN0aW5nVmFsdWVzIiwKKyAgICAgICAgdGVzdCgpIHsKKyAgICAgICAgICAgIGxl
dCBtdWx0aW1hcCA9IG5ldyBNdWx0aW1hcDsKKworICAgICAgICAgICAgbXVsdGltYXAuYWRkKDAs
IDEpOworICAgICAgICAgICAgbXVsdGltYXAuYWRkKDIsIDMpOworICAgICAgICAgICAgbXVsdGlt
YXAuYWRkKDQsIDQpOworCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZyhtdWx0aW1hcCk7
CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RmFsc2UobXVsdGltYXAuZGVsZXRl
KDAsIDMpLCAiTm90aGluZyB3YXMgcmVtb3ZlZCBmb3Iga2V5IDAgYW5kIHZhbHVlIDMuIik7Cisg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEZhbHNlKG11bHRpbWFwLmRlbGV0ZSgwLCA0
KSwgIk5vdGhpbmcgd2FzIHJlbW92ZWQgZm9yIGtleSAwIGFuZCB2YWx1ZSA0LiIpOworICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RGYWxzZShtdWx0aW1hcC5kZWxldGUoMiwgMSksICJO
b3RoaW5nIHdhcyByZW1vdmVkIGZvciBrZXkgMiBhbmQgdmFsdWUgMS4iKTsKKyAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuZXhwZWN0RmFsc2UobXVsdGltYXAuZGVsZXRlKDIsIDQpLCAiTm90aGlu
ZyB3YXMgcmVtb3ZlZCBmb3Iga2V5IDIgYW5kIHZhbHVlIDQuIik7CisgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmV4cGVjdEZhbHNlKG11bHRpbWFwLmRlbGV0ZSg0LCAxKSwgIk5vdGhpbmcgd2Fz
IHJlbW92ZWQgZm9yIGtleSA0IGFuZCB2YWx1ZSAxLiIpOworICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5leHBlY3RGYWxzZShtdWx0aW1hcC5kZWxldGUoNCwgMyksICJOb3RoaW5nIHdhcyByZW1v
dmVkIGZvciBrZXkgNCBhbmQgdmFsdWUgMy4iKTsKKworICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5sb2cobXVsdGltYXApOworICAgICAgICB9LAorICAgIH0pOworCisgICAgc3VpdGUuYWRkVGVz
dENhc2UoeworICAgICAgICBuYW1lOiAiTXVsdGltYXAucHJvdG90eXBlLmRlbGV0ZS5Ob25FeGlz
dGluZ0tleXMiLAorICAgICAgICB0ZXN0KCkgeworICAgICAgICAgICAgbGV0IG11bHRpbWFwID0g
bmV3IE11bHRpbWFwOworCisgICAgICAgICAgICBtdWx0aW1hcC5hZGQoMCwgMSk7CisgICAgICAg
ICAgICBtdWx0aW1hcC5hZGQoMiwgMyk7CisgICAgICAgICAgICBtdWx0aW1hcC5hZGQoNCwgNCk7
CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKG11bHRpbWFwKTsKKworICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5leHBlY3RGYWxzZShtdWx0aW1hcC5kZWxldGUoMSksICJOb3RoaW5n
IHdhcyByZW1vdmVkIGZvciBrZXkgMS4iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhw
ZWN0RmFsc2UobXVsdGltYXAuZGVsZXRlKDMpLCAiTm90aGluZyB3YXMgcmVtb3ZlZCBmb3Iga2V5
IDMuIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEZhbHNlKG11bHRpbWFwLmRl
bGV0ZSg1KSwgIk5vdGhpbmcgd2FzIHJlbW92ZWQgZm9yIGtleSA1LiIpOworCisgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmxvZyhtdWx0aW1hcCk7CisgICAgICAgIH0sCisgICAgfSk7CisKKyAg
ICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJNdWx0aW1hcC5wcm90b3R5cGUu
ZGVsZXRlLkFsbFZhbHVlc0ZvcktleSIsCisgICAgICAgIHRlc3QoKSB7CisgICAgICAgICAgICBs
ZXQgbXVsdGltYXAgPSBuZXcgTXVsdGltYXA7CisKKyAgICAgICAgICAgIG11bHRpbWFwLmFkZCgi
b3Bvc3N1bSIsICJiYWRnZXIiKTsKKyAgICAgICAgICAgIG11bHRpbWFwLmFkZCgib3Bvc3N1bSIs
ICJyYWNjb29uIik7CisgICAgICAgICAgICBtdWx0aW1hcC5hZGQoInJhY2Nvb24iLCAib3Bvc3N1
bSIpOworCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZyhtdWx0aW1hcCk7CisKKyAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RmFsc2UobXVsdGltYXAuZGVsZXRlKCJiYWRnZXIi
KSwgYE5vdGhpbmcgd2FzIHJlbW92ZWQgZm9yIGtleSAiYmFkZ2VyIi5gKTsKKworICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5sb2cobXVsdGltYXApOworCisgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmV4cGVjdFRoYXQobXVsdGltYXAuZGVsZXRlKCJvcG9zc3VtIiksIGBWYWx1ZXMgd2VyZSBy
ZW1vdmVkIGZvciBrZXkgIm9wb3NzdW0iLmApOworCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmxvZyhtdWx0aW1hcCk7CisgICAgICAgIH0sCisgICAgfSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0
Q2FzZSh7CisgICAgICAgIG5hbWU6ICJNdWx0aW1hcC5wcm90b3R5cGUuY2xlYXIiLAorICAgICAg
ICB0ZXN0KCkgeworICAgICAgICAgICAgbGV0IG11bHRpbWFwID0gbmV3IE11bHRpbWFwOworCisg
ICAgICAgICAgICBtdWx0aW1hcC5hZGQoIm9uZSIsICJ0d28iKTsKKyAgICAgICAgICAgIG11bHRp
bWFwLmFkZCgidGhyZWUiLCAiZm91ciIpOworICAgICAgICAgICAgbXVsdGltYXAuYWRkKCJvbmUi
LCAiZml2ZSIpOworICAgICAgICAgICAgbXVsdGltYXAuYWRkKCJ0aHJlZSIsICJzaXgiKTsKKwor
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2cobXVsdGltYXApOworCisgICAgICAgICAgICBt
dWx0aW1hcC5jbGVhcigpOworCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZyhtdWx0aW1h
cCk7CisgICAgICAgIH0sCisgICAgfSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAg
ICAgIG5hbWU6ICJNdWx0aW1hcC5wcm90b3R5cGUua2V5cyIsCisgICAgICAgIHRlc3QoKSB7Cisg
ICAgICAgICAgICBsZXQgbXVsdGltYXAgPSBuZXcgTXVsdGltYXA7CisKKyAgICAgICAgICAgIG11
bHRpbWFwLmFkZCgib25lIiwgInR3byIpOworICAgICAgICAgICAgbXVsdGltYXAuYWRkKCJ0aHJl
ZSIsICJmb3VyIik7CisgICAgICAgICAgICBtdWx0aW1hcC5hZGQoIm9uZSIsICJmaXZlIik7Cisg
ICAgICAgICAgICBtdWx0aW1hcC5hZGQoInRocmVlIiwgInNpeCIpOworCisgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmxvZyhtdWx0aW1hcCk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0Lmxv
ZyhBcnJheS5mcm9tKG11bHRpbWFwLmtleXMoKSkpOworICAgICAgICB9LAorICAgIH0pOworCisg
ICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTXVsdGltYXAucHJvdG90eXBl
LnZhbHVlcyIsCisgICAgICAgIHRlc3QoKSB7CisgICAgICAgICAgICBsZXQgbXVsdGltYXAgPSBu
ZXcgTXVsdGltYXA7CisKKyAgICAgICAgICAgIG11bHRpbWFwLmFkZCgib25lIiwgInR3byIpOwor
ICAgICAgICAgICAgbXVsdGltYXAuYWRkKCJ0aHJlZSIsICJmb3VyIik7CisgICAgICAgICAgICBt
dWx0aW1hcC5hZGQoIm9uZSIsICJmaXZlIik7CisgICAgICAgICAgICBtdWx0aW1hcC5hZGQoInRo
cmVlIiwgInNpeCIpOworCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZyhtdWx0aW1hcCk7
CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZyhBcnJheS5mcm9tKG11bHRpbWFwLnZhbHVl
cygpKSk7CisgICAgICAgIH0sCisgICAgfSk7CisKKyAgICBzdWl0ZS5ydW5UZXN0Q2FzZXNBbmRG
aW5pc2goKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCki
PgorICAgIDxwPlRlc3RpbmcgYWxsIG1ldGhvZHMgb2YgTXVsdGltYXAuPC9wPgorPC9ib2R5Pgor
PC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>364288</attachid>
            <date>2019-03-11 14:29:48 -0700</date>
            <delta_ts>2019-03-11 14:56:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195248-20190311142946.patch</filename>
            <type>text/plain</type>
            <size>24922</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IGMzODIxNGI5NjBjNTI4Y2U0Y2JkMmM3MGFiNDE1
OGY2NmNlOTBiNzIuLjNlOTBiYWFjNzg0M2Y3OGExMTgxNzg1NGYxNTc4OWJhYTk0ZDY3MmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDE5LTAzLTExICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBE
T01EZWJ1Z2dlcjogcHJvdG9jb2wgZXJyb3Igb24gZmlyc3Qgb3BlbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk1MjQ4CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS80ODUzODQ2NT4KKworICAgICAgICBSZXZpZXdlZCBieSBKb3NlcGggUGVjb3Jhcm8u
CisKKyAgICAgICAgRG9uJ3QgdHJ5IHRvIGNhbGwgYERPTURlYnVnZ2VyYCBjb21tYW5kcyB1bnRp
bCBhIHRhcmdldCBoYXMgYmVlbiBpbml0aWFsaXplZC4KKyAgICAgICAgU3RpbGwgYXR0ZW1wdCB0
byByZXNvbHZlIERPTSBicmVha3BvaW50cyB3aGVuZXZlciB0aGUgbWFpbiByZXNvdXJjZS9mcmFt
ZSBjaGFuZ2VzLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9Db250cm9sbGVycy9ET01EZWJ1
Z2dlck1hbmFnZXIuanM6CisgICAgICAgIChXSS5ET01EZWJ1Z2dlck1hbmFnZXIpOgorICAgICAg
ICAoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5pbml0aWFsaXplVGFyZ2V0KTogQWRk
ZWQuCisgICAgICAgIChXSS5ET01EZWJ1Z2dlck1hbmFnZXIuc3VwcG9ydHNFdmVudEJyZWFrcG9p
bnRzKToKKyAgICAgICAgKFdJLkRPTURlYnVnZ2VyTWFuYWdlci5wcm90b3R5cGUuZ2V0IHN1cHBv
cnRlZCk6CisgICAgICAgIChXSS5ET01EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLmFkZERPTUJy
ZWFrcG9pbnQpOgorICAgICAgICAoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5yZW1v
dmVET01CcmVha3BvaW50KToKKyAgICAgICAgKFdJLkRPTURlYnVnZ2VyTWFuYWdlci5wcm90b3R5
cGUuYWRkRXZlbnRCcmVha3BvaW50KToKKyAgICAgICAgKFdJLkRPTURlYnVnZ2VyTWFuYWdlci5w
cm90b3R5cGUucmVtb3ZlRXZlbnRCcmVha3BvaW50KToKKyAgICAgICAgKFdJLkRPTURlYnVnZ2Vy
TWFuYWdlci5wcm90b3R5cGUuYWRkVVJMQnJlYWtwb2ludCk6CisgICAgICAgIChXSS5ET01EZWJ1
Z2dlck1hbmFnZXIucHJvdG90eXBlLnJlbW92ZVVSTEJyZWFrcG9pbnQpOgorICAgICAgICAoV0ku
RE9NRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5fc3BlY3VsYXRpdmVseVJlc29sdmVET01CcmVh
a3BvaW50c0ZvclVSTCk6IEFkZGVkLgorICAgICAgICAoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLnBy
b3RvdHlwZS5fcmVzb2x2ZURPTUJyZWFrcG9pbnQpOgorICAgICAgICAoV0kuRE9NRGVidWdnZXJN
YW5hZ2VyLnByb3RvdHlwZS5fdXBkYXRlRE9NQnJlYWtwb2ludCk6CisgICAgICAgIChXSS5ET01E
ZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLl91cGRhdGVFdmVudEJyZWFrcG9pbnQpOgorICAgICAg
ICAoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5fdXBkYXRlVVJMQnJlYWtwb2ludCk6
CisgICAgICAgIChXSS5ET01EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLl9zYXZlRE9NQnJlYWtw
b2ludHMpOgorICAgICAgICAoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5faGFuZGxl
RE9NQnJlYWtwb2ludERpc2FibGVkU3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKFdJLkRPTURlYnVn
Z2VyTWFuYWdlci5wcm90b3R5cGUuX2hhbmRsZUV2ZW50QnJlYWtwb2ludERpc2FibGVkU3RhdGVD
aGFuZ2VkKToKKyAgICAgICAgKFdJLkRPTURlYnVnZ2VyTWFuYWdlci5wcm90b3R5cGUuX2hhbmRs
ZVVSTEJyZWFrcG9pbnREaXNhYmxlZFN0YXRlQ2hhbmdlZCk6CisgICAgICAgIChXSS5ET01EZWJ1
Z2dlck1hbmFnZXIucHJvdG90eXBlLl9tYWluRnJhbWVEaWRDaGFuZ2UpOgorICAgICAgICAoV0ku
RE9NRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5fbWFpblJlc291cmNlRGlkQ2hhbmdlKToKKyAg
ICAgICAgKFdJLkRPTURlYnVnZ2VyTWFuYWdlci5wcm90b3R5cGUucmVtb3ZlRXZlbnRCcmVha3Bv
aW50LmJyZWFrcG9pbnRSZW1vdmVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkRPTURlYnVnZ2Vy
TWFuYWdlci5wcm90b3R5cGUuX3NwZWN1bGF0aXZlbHlSZXNvbHZlQnJlYWtwb2ludHMpOiBEZWxl
dGVkLgorICAgICAgICAoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5fdXBkYXRlRE9N
QnJlYWtwb2ludC5icmVha3BvaW50VXBkYXRlZCk6IERlbGV0ZWQuCisgICAgICAgIChXSS5ET01E
ZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLl9yZXNvbHZlRXZlbnRCcmVha3BvaW50KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdJLkRPTURlYnVnZ2VyTWFuYWdlci5wcm90b3R5cGUuX3Jlc29sdmVVUkxC
cmVha3BvaW50KTogRGVsZXRlZC4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQmFzZS9NdWx0
aW1hcC5qczogQWRkZWQuCisgICAgICAgIChNdWx0aW1hcCk6CisgICAgICAgIChNdWx0aW1hcC5w
cm90b3R5cGUuZ2V0KToKKyAgICAgICAgKE11bHRpbWFwLnByb3RvdHlwZS5hZGQpOgorICAgICAg
ICAoTXVsdGltYXAucHJvdG90eXBlLmRlbGV0ZSk6CisgICAgICAgIChNdWx0aW1hcC5wcm90b3R5
cGUuY2xlYXIpOgorICAgICAgICAoTXVsdGltYXAucHJvdG90eXBlLmtleXMpOgorICAgICAgICAo
TXVsdGltYXAucHJvdG90eXBlLip2YWx1ZXMpOgorICAgICAgICAoTXVsdGltYXAucHJvdG90eXBl
LipbU3ltYm9sLml0ZXJhdG9yXSk6CisgICAgICAgIChNdWx0aW1hcC5wcm90b3R5cGUudG9KU09O
KToKKyAgICAgICAgKiAuZXNsaW50cmM6CisgICAgICAgICogVXNlckludGVyZmFjZS9NYWluLmh0
bWw6CisgICAgICAgICogVXNlckludGVyZmFjZS9UZXN0Lmh0bWw6CisgICAgICAgIEhlbHBlciBk
YXRhIHN0cnVjdHVyZSBmb3IgbWFuYWdpbmcgTWFwcyBvZiBTZXRzIChlLmcuIGFsbCBET00gYnJl
YWtwb2ludHMgZm9yIGEgVVJMKS4KKwogMjAxOS0wMy0xMSAgRGV2aW4gUm91c3NvICA8ZHJvdXNz
b0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogZWxpbWluYXRlIG1hbnVhbCBz
eW5jaW5nIG9mIG51bWVyaWMgY29uc3RhbnRzIHVzZWQgYnkgSmF2YVNjcmlwdCBhbmQgQ1NTCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvLmVzbGludHJjIGIvU291cmNlL1dlYklu
c3BlY3RvclVJLy5lc2xpbnRyYwppbmRleCBkMjAxMDQzNTZkOGQzYTEzMTYxODc5NGYzNGU0MzZj
Y2FjMTY5MzRlLi5lNTAzZjdjNzVkOTY4YTc0Yjc1NDI1NTA4OTVhYWRmZjYyNTUyNjY5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvLmVzbGludHJjCisrKyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS8uZXNsaW50cmMKQEAgLTc2LDYgKzc2LDcgQEAKICAgICAgICAgIkluc3BlY3Rv
clRlc3QiOiB0cnVlLAogICAgICAgICAiTGlua2VkTGlzdCI6IHRydWUsCiAgICAgICAgICJMaXN0
TXVsdGltYXAiOiB0cnVlLAorICAgICAgICAiTXVsdGltYXAiOiB0cnVlLAogICAgICAgICAiUHJv
dG9jb2xUZXN0IjogdHJ1ZSwKICAgICAgICAgIlByb3RvY29sVGVzdEhhcm5lc3MiOiB0cnVlLAog
ICAgICAgICAiU3luY1Rlc3RTdWl0ZSI6IHRydWUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL011bHRpbWFwLmpzIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9NdWx0aW1hcC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMDNhZWFk
ZmQzNWE4N2Y0ZjA4ZTk4N2Q5YWVlMDNjNjYxMmI0ZDM0Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9NdWx0aW1hcC5qcwpAQCAtMCww
ICsxLDEwMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKK2NsYXNzIE11bHRpbWFwCit7CisgICAgY29uc3RydWN0
b3IoaXRlbXMgPSBbXSkKKyAgICB7CisgICAgICAgIHRoaXMuX21hcCA9IG5ldyBNYXA7CisKKyAg
ICAgICAgZm9yIChsZXQgW2tleSwgdmFsdWVdIG9mIGl0ZW1zKQorICAgICAgICAgICAgdGhpcy5h
ZGQoa2V5LCB2YWx1ZSk7CisgICAgfQorCisgICAgLy8gUHVibGljCisKKyAgICBnZXQoa2V5KQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX21hcC5nZXQoa2V5KTsKKyAgICB9CisKKyAgICBh
ZGQoa2V5LCB2YWx1ZSkKKyAgICB7CisgICAgICAgIGxldCB2YWx1ZVNldCA9IHRoaXMuX21hcC5n
ZXQoa2V5KTsKKyAgICAgICAgaWYgKCF2YWx1ZVNldCkgeworICAgICAgICAgICAgdmFsdWVTZXQg
PSBuZXcgU2V0OworICAgICAgICAgICAgdGhpcy5fbWFwLnNldChrZXksIHZhbHVlU2V0KTsKKyAg
ICAgICAgfQorICAgICAgICB2YWx1ZVNldC5hZGQodmFsdWUpOworCisgICAgICAgIHJldHVybiB0
aGlzOworICAgIH0KKworICAgIGRlbGV0ZShrZXksIHZhbHVlKQorICAgIHsKKyAgICAgICAgLy8g
QWxsb3cgYW4gZW50aXJlIGtleSB0byBiZSByZW1vdmVkIGJ5IG5vdCBwYXNzaW5nIGEgdmFsdWUu
CisgICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAxKQorICAgICAgICAgICAgcmV0dXJu
IHRoaXMuX21hcC5kZWxldGUoa2V5KTsKKworICAgICAgICBsZXQgdmFsdWVTZXQgPSB0aGlzLl9t
YXAuZ2V0KGtleSk7CisgICAgICAgIGlmICghdmFsdWVTZXQpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICAgICAgbGV0IGRlbGV0ZWQgPSB2YWx1ZVNldC5kZWxldGUodmFsdWUpOwor
CisgICAgICAgIGlmICghdmFsdWVTZXQuc2l6ZSkKKyAgICAgICAgICAgIHRoaXMuX21hcC5kZWxl
dGUoa2V5KTsKKworICAgICAgICByZXR1cm4gZGVsZXRlZDsKKyAgICB9CisKKyAgICBjbGVhcigp
CisgICAgeworICAgICAgICB0aGlzLl9tYXAuY2xlYXIoKTsKKyAgICB9CisKKyAgICBrZXlzKCkK
KyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9tYXAua2V5cygpOworICAgIH0KKworICAgICp2
YWx1ZXMoKQorICAgIHsKKyAgICAgICAgZm9yIChsZXQgdmFsdWVTZXQgb2YgdGhpcy5fbWFwLnZh
bHVlcygpKSB7CisgICAgICAgICAgICBmb3IgKGxldCB2YWx1ZSBvZiB2YWx1ZVNldCkKKyAgICAg
ICAgICAgICAgICB5aWVsZCB2YWx1ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgICpbU3ltYm9s
Lml0ZXJhdG9yXSgpCisgICAgeworICAgICAgICBmb3IgKGxldCBba2V5LCB2YWx1ZVNldF0gb2Yg
dGhpcy5fbWFwKSB7CisgICAgICAgICAgICBmb3IgKGxldCB2YWx1ZSBvZiB2YWx1ZVNldCkKKyAg
ICAgICAgICAgICAgICB5aWVsZCBba2V5LCB2YWx1ZV07CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICB0b0pTT04oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEFycmF5LmZyb20odGhpcyk7CisgICAg
fQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29u
dHJvbGxlcnMvRE9NRGVidWdnZXJNYW5hZ2VyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRE9NRGVidWdnZXJNYW5hZ2VyLmpzCmluZGV4IDk4NDA1
Njk5NTVhMWVlODVjZjI1NDRiOWNhZTZjYzgxODk5ZmIxMWQuLjQwYzA1NGQ2ZDAzODJmMzZkZjdl
NzIxMjEwZWI1MzExY2QyYzRmYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0RPTURlYnVnZ2VyTWFuYWdlci5qcworKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9ET01EZWJ1Z2dlck1h
bmFnZXIuanMKQEAgLTMwLDcgKzMwLDcgQEAgV0kuRE9NRGVidWdnZXJNYW5hZ2VyID0gY2xhc3Mg
RE9NRGVidWdnZXJNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIHN1cGVyKCk7CiAK
ICAgICAgICAgdGhpcy5fZG9tQnJlYWtwb2ludHNTZXR0aW5nID0gbmV3IFdJLlNldHRpbmcoImRv
bS1icmVha3BvaW50cyIsIFtdKTsKLSAgICAgICAgdGhpcy5fZG9tQnJlYWtwb2ludFVSTE1hcCA9
IG5ldyBNYXA7CisgICAgICAgIHRoaXMuX2RvbUJyZWFrcG9pbnRVUkxNYXAgPSBuZXcgTXVsdGlt
YXA7CiAgICAgICAgIHRoaXMuX2RvbUJyZWFrcG9pbnRGcmFtZUlkZW50aWZpZXJNYXAgPSBuZXcg
TWFwOwogCiAgICAgICAgIHRoaXMuX2V2ZW50QnJlYWtwb2ludFNldHRpbmcgPSBuZXcgV0kuU2V0
dGluZygiZXZlbnQtYnJlYWtwb2ludHMiLCBbXSk7CkBAIC02OSwxMCArNjksMjkgQEAgV0kuRE9N
RGVidWdnZXJNYW5hZ2VyID0gY2xhc3MgRE9NRGVidWdnZXJNYW5hZ2VyIGV4dGVuZHMgV0kuT2Jq
ZWN0CiAgICAgICAgICAgICAgICAgdGhpcy5hZGRVUkxCcmVha3BvaW50KFdJLlVSTEJyZWFrcG9p
bnQuZGVzZXJpYWxpemUoc2VyaWFsaXplZEluZm8pKTsKIAogICAgICAgICAgICAgdGhpcy5fcmVz
dG9yaW5nQnJlYWtwb2ludHMgPSBmYWxzZTsKLSAgICAgICAgICAgIHRoaXMuX3NwZWN1bGF0aXZl
bHlSZXNvbHZlQnJlYWtwb2ludHMoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIFRhcmdl
dAorCisgICAgaW5pdGlhbGl6ZVRhcmdldCh0YXJnZXQpCisgICAgeworICAgICAgICBpZiAodGFy
Z2V0LkRPTURlYnVnZ2VyQWdlbnQpIHsKKyAgICAgICAgICAgIGlmICh0YXJnZXQgPT09IFdJLmFz
c3VtaW5nTWFpblRhcmdldCgpICYmIHRhcmdldC5tYWluUmVzb3VyY2UpCisgICAgICAgICAgICAg
ICAgdGhpcy5fc3BlY3VsYXRpdmVseVJlc29sdmVET01CcmVha3BvaW50c0ZvclVSTCh0YXJnZXQu
bWFpblJlc291cmNlLnVybCk7CisKKyAgICAgICAgICAgIGZvciAobGV0IGJyZWFrcG9pbnQgb2Yg
dGhpcy5fZXZlbnRCcmVha3BvaW50cykgeworICAgICAgICAgICAgICAgIGlmICghYnJlYWtwb2lu
dC5kaXNhYmxlZCkKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlRXZlbnRCcmVha3Bv
aW50KGJyZWFrcG9pbnQsIHRhcmdldCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZv
ciAobGV0IGJyZWFrcG9pbnQgb2YgdGhpcy5fdXJsQnJlYWtwb2ludHMpIHsKKyAgICAgICAgICAg
ICAgICBpZiAoIWJyZWFrcG9pbnQuZGlzYWJsZWQpCisgICAgICAgICAgICAgICAgICAgIHRoaXMu
X3VwZGF0ZVVSTEJyZWFrcG9pbnQoYnJlYWtwb2ludCwgdGFyZ2V0KTsKKyAgICAgICAgICAgIH0K
IAogICAgICAgICAgICAgaWYgKCF0aGlzLl9hbGxSZXF1ZXN0c0JyZWFrcG9pbnQuZGlzYWJsZWQp
Ci0gICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlVVJMQnJlYWtwb2ludCh0aGlzLl9hbGxSZXF1
ZXN0c0JyZWFrcG9pbnQpOworICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZVVSTEJyZWFrcG9p
bnQodGhpcy5fYWxsUmVxdWVzdHNCcmVha3BvaW50LCB0YXJnZXQpOwogICAgICAgICB9CiAgICAg
fQogCkBAIC04MCw3ICs5OSw3IEBAIFdJLkRPTURlYnVnZ2VyTWFuYWdlciA9IGNsYXNzIERPTURl
YnVnZ2VyTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogCiAgICAgc3RhdGljIHN1cHBvcnRzRXZl
bnRCcmVha3BvaW50cygpCiAgICAgewotICAgICAgICByZXR1cm4gRE9NRGVidWdnZXJBZ2VudC5z
ZXRFdmVudEJyZWFrcG9pbnQgJiYgRE9NRGVidWdnZXJBZ2VudC5yZW1vdmVFdmVudEJyZWFrcG9p
bnQ7CisgICAgICAgIHJldHVybiBJbnNwZWN0b3JCYWNrZW5kLmRvbWFpbnMuRE9NRGVidWdnZXIu
c2V0RXZlbnRCcmVha3BvaW50ICYmIEluc3BlY3RvckJhY2tlbmQuZG9tYWlucy5ET01EZWJ1Z2dl
ci5yZW1vdmVFdmVudEJyZWFrcG9pbnQ7CiAgICAgfQogCiAgICAgc3RhdGljIHN1cHBvcnRzVVJM
QnJlYWtwb2ludHMoKQpAQCAtOTIsNyArMTExLDcgQEAgV0kuRE9NRGVidWdnZXJNYW5hZ2VyID0g
Y2xhc3MgRE9NRGVidWdnZXJNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICBnZXQgc3Vw
cG9ydGVkKCkKICAgICB7Ci0gICAgICAgIHJldHVybiAhIXdpbmRvdy5ET01EZWJ1Z2dlckFnZW50
OworICAgICAgICByZXR1cm4gISFJbnNwZWN0b3JCYWNrZW5kLmRvbWFpbnMuRE9NRGVidWdnZXI7
CiAgICAgfQogCiAgICAgZ2V0IGFsbFJlcXVlc3RzQnJlYWtwb2ludCgpIHsgcmV0dXJuIHRoaXMu
X2FsbFJlcXVlc3RzQnJlYWtwb2ludDsgfQpAQCAtMTU0LDE1ICsxNzMsMTMgQEAgV0kuRE9NRGVi
dWdnZXJNYW5hZ2VyID0gY2xhc3MgRE9NRGVidWdnZXJNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBsZXQgYnJlYWtwb2lu
dHMgPSB0aGlzLl9kb21CcmVha3BvaW50VVJMTWFwLmdldChicmVha3BvaW50LnVybCk7Ci0gICAg
ICAgIGlmICghYnJlYWtwb2ludHMpIHsKLSAgICAgICAgICAgIGJyZWFrcG9pbnRzID0gW2JyZWFr
cG9pbnRdOwotICAgICAgICAgICAgdGhpcy5fZG9tQnJlYWtwb2ludFVSTE1hcC5zZXQoYnJlYWtw
b2ludC51cmwsIGJyZWFrcG9pbnRzKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBicmVh
a3BvaW50cy5wdXNoKGJyZWFrcG9pbnQpOworICAgICAgICB0aGlzLl9kb21CcmVha3BvaW50VVJM
TWFwLmFkZChicmVha3BvaW50LnVybCwgYnJlYWtwb2ludCk7CiAKLSAgICAgICAgaWYgKGJyZWFr
cG9pbnQuZG9tTm9kZUlkZW50aWZpZXIpCi0gICAgICAgICAgICB0aGlzLl9yZXNvbHZlRE9NQnJl
YWtwb2ludChicmVha3BvaW50LCBicmVha3BvaW50LmRvbU5vZGVJZGVudGlmaWVyKTsKKyAgICAg
ICAgaWYgKCFicmVha3BvaW50LmRpc2FibGVkKSB7CisgICAgICAgICAgICBsZXQgdGFyZ2V0ID0g
V0kuYXNzdW1pbmdNYWluVGFyZ2V0KCk7CisgICAgICAgICAgICBpZiAodGFyZ2V0ICYmIHRhcmdl
dC5ET01EZWJ1Z2dlckFnZW50KQorICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZURPTUJyZWFr
cG9pbnQoYnJlYWtwb2ludCwgdGFyZ2V0KTsKKyAgICAgICAgfQogCiAgICAgICAgIHRoaXMuZGlz
cGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkRPTURlYnVnZ2VyTWFuYWdlci5FdmVudC5ET01CcmVh
a3BvaW50QWRkZWQsIHticmVha3BvaW50fSk7CiAKQEAgLTE4OCwxNCArMjA1LDEzIEBAIFdJLkRP
TURlYnVnZ2VyTWFuYWdlciA9IGNsYXNzIERPTURlYnVnZ2VyTWFuYWdlciBleHRlbmRzIFdJLk9i
amVjdAogCiAgICAgICAgIHRoaXMuX2RldGFjaERPTUJyZWFrcG9pbnQoYnJlYWtwb2ludCk7CiAK
LSAgICAgICAgbGV0IHVybEJyZWFrcG9pbnRzID0gdGhpcy5fZG9tQnJlYWtwb2ludFVSTE1hcC5n
ZXQoYnJlYWtwb2ludC51cmwpOwotICAgICAgICB1cmxCcmVha3BvaW50cy5yZW1vdmUoYnJlYWtw
b2ludCwgdHJ1ZSk7CisgICAgICAgIHRoaXMuX2RvbUJyZWFrcG9pbnRVUkxNYXAuZGVsZXRlKGJy
ZWFrcG9pbnQudXJsKTsKIAotICAgICAgICBpZiAoIWJyZWFrcG9pbnQuZGlzYWJsZWQpCi0gICAg
ICAgICAgICBET01EZWJ1Z2dlckFnZW50LnJlbW92ZURPTUJyZWFrcG9pbnQobm9kZUlkZW50aWZp
ZXIsIGJyZWFrcG9pbnQudHlwZSk7Ci0KLSAgICAgICAgaWYgKCF1cmxCcmVha3BvaW50cy5sZW5n
dGgpCi0gICAgICAgICAgICB0aGlzLl9kb21CcmVha3BvaW50VVJMTWFwLmRlbGV0ZShicmVha3Bv
aW50LnVybCk7CisgICAgICAgIGlmICghYnJlYWtwb2ludC5kaXNhYmxlZCkgeworICAgICAgICAg
ICAgLy8gV2Ugc2hvdWxkIGdldCB0aGUgdGFyZ2V0IGFzc29jaWF0ZWQgd2l0aCB0aGUgbm9kZUlk
ZW50aWZpZXIgb2YgdGhpcyBicmVha3BvaW50LgorICAgICAgICAgICAgbGV0IHRhcmdldCA9IFdJ
LmFzc3VtaW5nTWFpblRhcmdldCgpOworICAgICAgICAgICAgdGFyZ2V0LkRPTURlYnVnZ2VyQWdl
bnQucmVtb3ZlRE9NQnJlYWtwb2ludChub2RlSWRlbnRpZmllciwgYnJlYWtwb2ludC50eXBlKTsK
KyAgICAgICAgfQogCiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkRP
TURlYnVnZ2VyTWFuYWdlci5FdmVudC5ET01CcmVha3BvaW50UmVtb3ZlZCwge2JyZWFrcG9pbnR9
KTsKIApAQCAtMjM3LDcgKzI1MywxMyBAQCBXSS5ET01EZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBE
T01EZWJ1Z2dlck1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgICAgICB0aGlzLmRpc3Bh
dGNoRXZlbnRUb0xpc3RlbmVycyhXSS5ET01EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuRXZlbnRCcmVh
a3BvaW50QWRkZWQsIHticmVha3BvaW50fSk7CiAKLSAgICAgICAgdGhpcy5fcmVzb2x2ZUV2ZW50
QnJlYWtwb2ludChicmVha3BvaW50KTsKKyAgICAgICAgaWYgKCFicmVha3BvaW50LmRpc2FibGVk
KSB7CisgICAgICAgICAgICBmb3IgKGxldCB0YXJnZXQgb2YgV0kudGFyZ2V0cykgeworICAgICAg
ICAgICAgICAgIGlmICh0YXJnZXQuRE9NRGVidWdnZXJBZ2VudCkKKyAgICAgICAgICAgICAgICAg
ICAgdGhpcy5fdXBkYXRlRXZlbnRCcmVha3BvaW50KGJyZWFrcG9pbnQsIHRhcmdldCk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKwogICAgICAgICB0aGlzLl9zYXZlRXZlbnRCcmVha3BvaW50
cygpOwogICAgIH0KIApAQCAtMjY0LDE5ICsyODYsMTggQEAgV0kuRE9NRGVidWdnZXJNYW5hZ2Vy
ID0gY2xhc3MgRE9NRGVidWdnZXJNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIGlm
IChicmVha3BvaW50LmRpc2FibGVkKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGZ1
bmN0aW9uIGJyZWFrcG9pbnRSZW1vdmVkKGVycm9yKSB7Ci0gICAgICAgICAgICBpZiAoZXJyb3Ip
Ci0gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7Ci0gICAgICAgIH0KKyAgICAg
ICAgZm9yIChsZXQgdGFyZ2V0IG9mIFdJLnRhcmdldHMpIHsKKyAgICAgICAgICAgIGlmICh0YXJn
ZXQuRE9NRGVidWdnZXJBZ2VudCkgeworICAgICAgICAgICAgICAgIC8vIENvbXBhdGliaWxpdHkg
KGlPUyAxMik6IERPTURlYnVnZ2VyQWdlbnQucmVtb3ZlRXZlbnRCcmVha3BvaW50IGRpZCBub3Qg
ZXhpc3QuCisgICAgICAgICAgICAgICAgaWYgKCFXSS5ET01EZWJ1Z2dlck1hbmFnZXIuc3VwcG9y
dHNFdmVudEJyZWFrcG9pbnRzKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgY29uc29sZS5hc3Nl
cnQoYnJlYWtwb2ludC50eXBlID09PSBXSS5FdmVudEJyZWFrcG9pbnQuVHlwZS5MaXN0ZW5lcik7
CisgICAgICAgICAgICAgICAgICAgIHRhcmdldC5ET01EZWJ1Z2dlckFnZW50LnJlbW92ZUV2ZW50
TGlzdGVuZXJCcmVha3BvaW50KGJyZWFrcG9pbnQuZXZlbnROYW1lKTsKKyAgICAgICAgICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfQogCi0gICAgICAgIC8vIENvbXBhdGli
aWxpdHkgKGlPUyAxMik6IERPTURlYnVnZ2VyQWdlbnQucmVtb3ZlRXZlbnRCcmVha3BvaW50IGRp
ZCBub3QgZXhpc3QuCi0gICAgICAgIGlmICghV0kuRE9NRGVidWdnZXJNYW5hZ2VyLnN1cHBvcnRz
RXZlbnRCcmVha3BvaW50cygpKSB7Ci0gICAgICAgICAgICBjb25zb2xlLmFzc2VydChicmVha3Bv
aW50LnR5cGUgPT09IFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLkxpc3RlbmVyKTsKLSAgICAgICAg
ICAgIERPTURlYnVnZ2VyQWdlbnQucmVtb3ZlRXZlbnRMaXN0ZW5lckJyZWFrcG9pbnQoYnJlYWtw
b2ludC5ldmVudE5hbWUsIGJyZWFrcG9pbnRSZW1vdmVkKTsKLSAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgICAgICB0YXJnZXQuRE9NRGVidWdnZXJBZ2VudC5yZW1vdmVFdmVudEJyZWFr
cG9pbnQoYnJlYWtwb2ludC50eXBlLCBicmVha3BvaW50LmV2ZW50TmFtZSk7CisgICAgICAgICAg
ICB9CiAgICAgICAgIH0KLQotICAgICAgICBET01EZWJ1Z2dlckFnZW50LnJlbW92ZUV2ZW50QnJl
YWtwb2ludChicmVha3BvaW50LnR5cGUsIGJyZWFrcG9pbnQuZXZlbnROYW1lLCBicmVha3BvaW50
UmVtb3ZlZCk7CiAgICAgfQogCiAgICAgdXJsQnJlYWtwb2ludEZvclVSTCh1cmwpCkBAIC0zMDYs
NyArMzI3LDEzIEBAIFdJLkRPTURlYnVnZ2VyTWFuYWdlciA9IGNsYXNzIERPTURlYnVnZ2VyTWFu
YWdlciBleHRlbmRzIFdJLk9iamVjdAogCiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlz
dGVuZXJzKFdJLkRPTURlYnVnZ2VyTWFuYWdlci5FdmVudC5VUkxCcmVha3BvaW50QWRkZWQsIHti
cmVha3BvaW50fSk7CiAKLSAgICAgICAgdGhpcy5fcmVzb2x2ZVVSTEJyZWFrcG9pbnQoYnJlYWtw
b2ludCk7CisgICAgICAgIGlmICghYnJlYWtwb2ludC5kaXNhYmxlZCkgeworICAgICAgICAgICAg
Zm9yIChsZXQgdGFyZ2V0IG9mIFdJLnRhcmdldHMpIHsKKyAgICAgICAgICAgICAgICBpZiAodGFy
Z2V0LkRPTURlYnVnZ2VyQWdlbnQpCisgICAgICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZVVS
TEJyZWFrcG9pbnQoYnJlYWtwb2ludCwgdGFyZ2V0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorCiAgICAgICAgIHRoaXMuX3NhdmVVUkxCcmVha3BvaW50cygpOwogICAgIH0KIApAQCAtMzMz
LDE3ICszNjAsMTQgQEAgV0kuRE9NRGVidWdnZXJNYW5hZ2VyID0gY2xhc3MgRE9NRGVidWdnZXJN
YW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIGlmIChicmVha3BvaW50LmRpc2FibGVk
KQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIC8vIENvbXBhdGliaWxpdHkgKGlPUyAx
Mi4xKTogRE9NRGVidWdnZXJBZ2VudC5yZW1vdmVVUkxCcmVha3BvaW50IGRpZCBub3QgZXhpc3Qu
Ci0gICAgICAgIGlmIChXSS5ET01EZWJ1Z2dlck1hbmFnZXIuc3VwcG9ydHNVUkxCcmVha3BvaW50
cygpKSB7Ci0gICAgICAgICAgICBET01EZWJ1Z2dlckFnZW50LnJlbW92ZVVSTEJyZWFrcG9pbnQo
YnJlYWtwb2ludC51cmwsIChlcnJvcikgPT4gewotICAgICAgICAgICAgICAgIGlmIChlcnJvcikK
LSAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7Ci0gICAgICAgICAgICB9
KTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIERPTURlYnVnZ2VyQWdlbnQucmVtb3Zl
WEhSQnJlYWtwb2ludChicmVha3BvaW50LnVybCwgKGVycm9yKSA9PiB7Ci0gICAgICAgICAgICAg
ICAgaWYgKGVycm9yKQotICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTsK
LSAgICAgICAgICAgIH0pOworICAgICAgICBmb3IgKGxldCB0YXJnZXQgb2YgV0kudGFyZ2V0cykg
eworICAgICAgICAgICAgaWYgKHRhcmdldC5ET01EZWJ1Z2dlckFnZW50KSB7CisgICAgICAgICAg
ICAgICAgLy8gQ29tcGF0aWJpbGl0eSAoaU9TIDEyLjEpOiBET01EZWJ1Z2dlckFnZW50LnJlbW92
ZVVSTEJyZWFrcG9pbnQgZGlkIG5vdCBleGlzdC4KKyAgICAgICAgICAgICAgICBpZiAoV0kuRE9N
RGVidWdnZXJNYW5hZ2VyLnN1cHBvcnRzVVJMQnJlYWtwb2ludHMoKSkKKyAgICAgICAgICAgICAg
ICAgICAgdGFyZ2V0LkRPTURlYnVnZ2VyQWdlbnQucmVtb3ZlVVJMQnJlYWtwb2ludChicmVha3Bv
aW50LnVybCk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICB0YXJn
ZXQuRE9NRGVidWdnZXJBZ2VudC5yZW1vdmVYSFJCcmVha3BvaW50KGJyZWFrcG9pbnQudXJsKTsK
KyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIApAQCAtMzkzLDMyICs0MTcsMjEgQEAg
V0kuRE9NRGVidWdnZXJNYW5hZ2VyID0gY2xhc3MgRE9NRGVidWdnZXJNYW5hZ2VyIGV4dGVuZHMg
V0kuT2JqZWN0CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBfc3BlY3VsYXRpdmVseVJlc29sdmVC
cmVha3BvaW50cygpCisgICAgX3NwZWN1bGF0aXZlbHlSZXNvbHZlRE9NQnJlYWtwb2ludHNGb3JV
UkwodXJsKQogICAgIHsKLSAgICAgICAgbGV0IG1haW5GcmFtZSA9IFdJLm5ldHdvcmtNYW5hZ2Vy
Lm1haW5GcmFtZTsKLSAgICAgICAgaWYgKCFtYWluRnJhbWUpCisgICAgICAgIGxldCBkb21CcmVh
a3BvaW50cyA9IHRoaXMuX2RvbUJyZWFrcG9pbnRVUkxNYXAuZ2V0KHVybCk7CisgICAgICAgIGlm
ICghZG9tQnJlYWtwb2ludHMpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgbGV0IGRv
bUJyZWFrcG9pbnRzID0gdGhpcy5fZG9tQnJlYWtwb2ludFVSTE1hcC5nZXQobWFpbkZyYW1lLnVy
bCk7Ci0gICAgICAgIGlmIChkb21CcmVha3BvaW50cykgewotICAgICAgICAgICAgZm9yIChsZXQg
YnJlYWtwb2ludCBvZiBkb21CcmVha3BvaW50cykgewotICAgICAgICAgICAgICAgIGlmIChicmVh
a3BvaW50LmRvbU5vZGVJZGVudGlmaWVyKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsK
LQotICAgICAgICAgICAgICAgIFdJLmRvbU1hbmFnZXIucHVzaE5vZGVCeVBhdGhUb0Zyb250ZW5k
KGJyZWFrcG9pbnQucGF0aCwgKG5vZGVJZGVudGlmaWVyKSA9PiB7Ci0gICAgICAgICAgICAgICAg
ICAgIGlmICghbm9kZUlkZW50aWZpZXIpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIGZvciAobGV0IGJyZWFrcG9pbnQgb2YgZG9tQnJlYWtwb2ludHMpIHsKKyAgICAg
ICAgICAgIGlmIChicmVha3BvaW50LmRvbU5vZGVJZGVudGlmaWVyKQorICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwogCisgICAgICAgICAgICBXSS5kb21NYW5hZ2VyLnB1c2hOb2RlQnlQYXRoVG9G
cm9udGVuZChicmVha3BvaW50LnBhdGgsIChub2RlSWRlbnRpZmllcikgPT4geworICAgICAgICAg
ICAgICAgIGlmIChub2RlSWRlbnRpZmllcikKICAgICAgICAgICAgICAgICAgICAgdGhpcy5fcmVz
b2x2ZURPTUJyZWFrcG9pbnQoYnJlYWtwb2ludCwgbm9kZUlkZW50aWZpZXIpOwotICAgICAgICAg
ICAgICAgIH0pOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KLQot
ICAgICAgICBmb3IgKGxldCBicmVha3BvaW50IG9mIHRoaXMuX2V2ZW50QnJlYWtwb2ludHMpCi0g
ICAgICAgICAgICB0aGlzLl9yZXNvbHZlRXZlbnRCcmVha3BvaW50KGJyZWFrcG9pbnQpOwotCi0g
ICAgICAgIGZvciAobGV0IGJyZWFrcG9pbnQgb2YgdGhpcy5fdXJsQnJlYWtwb2ludHMpCi0gICAg
ICAgICAgICB0aGlzLl9yZXNvbHZlVVJMQnJlYWtwb2ludChicmVha3BvaW50KTsKICAgICB9CiAK
ICAgICBfcmVzb2x2ZURPTUJyZWFrcG9pbnQoYnJlYWtwb2ludCwgbm9kZUlkZW50aWZpZXIpCkBA
IC00NDMsOTIgKzQ1Niw3NCBAQCBXSS5ET01EZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBET01EZWJ1
Z2dlck1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgICAgICBicmVha3BvaW50LmRvbU5v
ZGVJZGVudGlmaWVyID0gbm9kZUlkZW50aWZpZXI7CiAKLSAgICAgICAgdGhpcy5fdXBkYXRlRE9N
QnJlYWtwb2ludChicmVha3BvaW50KTsKKyAgICAgICAgLy8gV2Ugc2hvdWxkIGdldCB0aGUgdGFy
Z2V0IGFzc29jaWF0ZWQgd2l0aCB0aGUgbm9kZUlkZW50aWZpZXIgb2YgdGhpcyBicmVha3BvaW50
LgorICAgICAgICBsZXQgdGFyZ2V0ID0gV0kuYXNzdW1pbmdNYWluVGFyZ2V0KCk7CisgICAgICAg
IGlmICh0YXJnZXQgJiYgdGFyZ2V0LkRPTURlYnVnZ2VyQWdlbnQpCisgICAgICAgICAgICB0aGlz
Ll91cGRhdGVET01CcmVha3BvaW50KGJyZWFrcG9pbnQsIHRhcmdldCk7CiAgICAgfQogCi0gICAg
X3VwZGF0ZURPTUJyZWFrcG9pbnQoYnJlYWtwb2ludCkKKyAgICBfdXBkYXRlRE9NQnJlYWtwb2lu
dChicmVha3BvaW50LCB0YXJnZXQpCiAgICAgewotICAgICAgICBsZXQgbm9kZUlkZW50aWZpZXIg
PSBicmVha3BvaW50LmRvbU5vZGVJZGVudGlmaWVyOwotICAgICAgICBpZiAoIW5vZGVJZGVudGlm
aWVyKQorICAgICAgICBjb25zb2xlLmFzc2VydCh0YXJnZXQuRE9NRGVidWdnZXJBZ2VudCk7CisK
KyAgICAgICAgaWYgKCFicmVha3BvaW50LmRvbU5vZGVJZGVudGlmaWVyKQogICAgICAgICAgICAg
cmV0dXJuOwogCi0gICAgICAgIGZ1bmN0aW9uIGJyZWFrcG9pbnRVcGRhdGVkKGVycm9yKQotICAg
ICAgICB7Ci0gICAgICAgICAgICBpZiAoZXJyb3IpCi0gICAgICAgICAgICAgICAgY29uc29sZS5l
cnJvcihlcnJvcik7Ci0gICAgICAgIH0KLQogICAgICAgICBpZiAoYnJlYWtwb2ludC5kaXNhYmxl
ZCkKLSAgICAgICAgICAgIERPTURlYnVnZ2VyQWdlbnQucmVtb3ZlRE9NQnJlYWtwb2ludChub2Rl
SWRlbnRpZmllciwgYnJlYWtwb2ludC50eXBlLCBicmVha3BvaW50VXBkYXRlZCk7CisgICAgICAg
ICAgICB0YXJnZXQuRE9NRGVidWdnZXJBZ2VudC5yZW1vdmVET01CcmVha3BvaW50KGJyZWFrcG9p
bnQuZG9tTm9kZUlkZW50aWZpZXIsIGJyZWFrcG9pbnQudHlwZSk7CiAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIERPTURlYnVnZ2VyQWdlbnQuc2V0RE9NQnJlYWtwb2ludChub2RlSWRlbnRpZmll
ciwgYnJlYWtwb2ludC50eXBlLCBicmVha3BvaW50VXBkYXRlZCk7CisgICAgICAgICAgICB0YXJn
ZXQuRE9NRGVidWdnZXJBZ2VudC5zZXRET01CcmVha3BvaW50KGJyZWFrcG9pbnQuZG9tTm9kZUlk
ZW50aWZpZXIsIGJyZWFrcG9pbnQudHlwZSk7CiAgICAgfQogCi0gICAgX3VwZGF0ZUV2ZW50QnJl
YWtwb2ludChicmVha3BvaW50KQorICAgIF91cGRhdGVFdmVudEJyZWFrcG9pbnQoYnJlYWtwb2lu
dCwgdGFyZ2V0KQogICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodGFyZ2V0LkRPTURlYnVn
Z2VyQWdlbnQpOworCiAgICAgICAgIC8vIENvbXBhdGliaWxpdHkgKGlPUyAxMik6IERPTURlYnVn
Z2VyQWdlbnQucmVtb3ZlRXZlbnRCcmVha3BvaW50IGRpZCBub3QgZXhpc3QuCiAgICAgICAgIGlm
ICghV0kuRE9NRGVidWdnZXJNYW5hZ2VyLnN1cHBvcnRzRXZlbnRCcmVha3BvaW50cygpKSB7CiAg
ICAgICAgICAgICBjb25zb2xlLmFzc2VydChicmVha3BvaW50LnR5cGUgPT09IFdJLkV2ZW50QnJl
YWtwb2ludC5UeXBlLkxpc3RlbmVyKTsKICAgICAgICAgICAgIGlmIChicmVha3BvaW50LmRpc2Fi
bGVkKQotICAgICAgICAgICAgICAgIERPTURlYnVnZ2VyQWdlbnQucmVtb3ZlRXZlbnRMaXN0ZW5l
ckJyZWFrcG9pbnQoYnJlYWtwb2ludC5ldmVudE5hbWUpOworICAgICAgICAgICAgICAgIHRhcmdl
dC5ET01EZWJ1Z2dlckFnZW50LnJlbW92ZUV2ZW50TGlzdGVuZXJCcmVha3BvaW50KGJyZWFrcG9p
bnQuZXZlbnROYW1lKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBET01EZWJ1
Z2dlckFnZW50LnNldEV2ZW50TGlzdGVuZXJCcmVha3BvaW50KGJyZWFrcG9pbnQuZXZlbnROYW1l
KTsKKyAgICAgICAgICAgICAgICB0YXJnZXQuRE9NRGVidWdnZXJBZ2VudC5zZXRFdmVudExpc3Rl
bmVyQnJlYWtwb2ludChicmVha3BvaW50LmV2ZW50TmFtZSk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoYnJlYWtwb2ludC5kaXNhYmxlZCkKLSAgICAgICAg
ICAgIERPTURlYnVnZ2VyQWdlbnQucmVtb3ZlRXZlbnRCcmVha3BvaW50KGJyZWFrcG9pbnQudHlw
ZSwgYnJlYWtwb2ludC5ldmVudE5hbWUpOworICAgICAgICAgICAgdGFyZ2V0LkRPTURlYnVnZ2Vy
QWdlbnQucmVtb3ZlRXZlbnRCcmVha3BvaW50KGJyZWFrcG9pbnQudHlwZSwgYnJlYWtwb2ludC5l
dmVudE5hbWUpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBET01EZWJ1Z2dlckFnZW50LnNl
dEV2ZW50QnJlYWtwb2ludChicmVha3BvaW50LnR5cGUsIGJyZWFrcG9pbnQuZXZlbnROYW1lKTsK
KyAgICAgICAgICAgIHRhcmdldC5ET01EZWJ1Z2dlckFnZW50LnNldEV2ZW50QnJlYWtwb2ludChi
cmVha3BvaW50LnR5cGUsIGJyZWFrcG9pbnQuZXZlbnROYW1lKTsKICAgICB9CiAKLSAgICBfdXBk
YXRlVVJMQnJlYWtwb2ludChicmVha3BvaW50KQorICAgIF91cGRhdGVVUkxCcmVha3BvaW50KGJy
ZWFrcG9pbnQsIHRhcmdldCkKICAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRhcmdldC5E
T01EZWJ1Z2dlckFnZW50KTsKKwogICAgICAgICAvLyBDb21wYXRpYmlsaXR5IChpT1MgMTIuMSk6
IERPTURlYnVnZ2VyQWdlbnQucmVtb3ZlVVJMQnJlYWtwb2ludCBkaWQgbm90IGV4aXN0LgogICAg
ICAgICBpZiAoIVdJLkRPTURlYnVnZ2VyTWFuYWdlci5zdXBwb3J0c1VSTEJyZWFrcG9pbnRzKCkp
IHsKICAgICAgICAgICAgIGlmIChicmVha3BvaW50LmRpc2FibGVkKQotICAgICAgICAgICAgICAg
IERPTURlYnVnZ2VyQWdlbnQucmVtb3ZlWEhSQnJlYWtwb2ludChicmVha3BvaW50LnVybCk7Cisg
ICAgICAgICAgICAgICAgdGFyZ2V0LkRPTURlYnVnZ2VyQWdlbnQucmVtb3ZlWEhSQnJlYWtwb2lu
dChicmVha3BvaW50LnVybCk7CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBs
ZXQgaXNSZWdleCA9IGJyZWFrcG9pbnQudHlwZSA9PT0gV0kuVVJMQnJlYWtwb2ludC5UeXBlLlJl
Z3VsYXJFeHByZXNzaW9uOwotICAgICAgICAgICAgICAgIERlYnVnZ2VyQWdlbnQuc2V0WEhSQnJl
YWtwb2ludChicmVha3BvaW50LnVybCwgaXNSZWdleCk7CisgICAgICAgICAgICAgICAgdGFyZ2V0
LkRPTURlYnVnZ2VyQWdlbnQuc2V0WEhSQnJlYWtwb2ludChicmVha3BvaW50LnVybCwgaXNSZWdl
eCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAg
ICAgICBpZiAoYnJlYWtwb2ludC5kaXNhYmxlZCkKLSAgICAgICAgICAgIERPTURlYnVnZ2VyQWdl
bnQucmVtb3ZlVVJMQnJlYWtwb2ludChicmVha3BvaW50LnVybCk7CisgICAgICAgICAgICB0YXJn
ZXQuRE9NRGVidWdnZXJBZ2VudC5yZW1vdmVVUkxCcmVha3BvaW50KGJyZWFrcG9pbnQudXJsKTsK
ICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBsZXQgaXNSZWdleCA9IGJyZWFrcG9pbnQudHlw
ZSA9PT0gV0kuVVJMQnJlYWtwb2ludC5UeXBlLlJlZ3VsYXJFeHByZXNzaW9uOwotICAgICAgICAg
ICAgRE9NRGVidWdnZXJBZ2VudC5zZXRVUkxCcmVha3BvaW50KGJyZWFrcG9pbnQudXJsLCBpc1Jl
Z2V4KTsKKyAgICAgICAgICAgIHRhcmdldC5ET01EZWJ1Z2dlckFnZW50LnNldFVSTEJyZWFrcG9p
bnQoYnJlYWtwb2ludC51cmwsIGlzUmVnZXgpOwogICAgICAgICB9CiAgICAgfQogCi0gICAgX3Jl
c29sdmVFdmVudEJyZWFrcG9pbnQoYnJlYWtwb2ludCkKLSAgICB7Ci0gICAgICAgIGlmIChicmVh
a3BvaW50LmRpc2FibGVkKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHRoaXMuX3Vw
ZGF0ZUV2ZW50QnJlYWtwb2ludChicmVha3BvaW50KTsKLSAgICB9Ci0KLSAgICBfcmVzb2x2ZVVS
TEJyZWFrcG9pbnQoYnJlYWtwb2ludCkKLSAgICB7Ci0gICAgICAgIGlmIChicmVha3BvaW50LmRp
c2FibGVkKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHRoaXMuX3VwZGF0ZVVSTEJy
ZWFrcG9pbnQoYnJlYWtwb2ludCk7Ci0gICAgfQotCiAgICAgX3NhdmVET01CcmVha3BvaW50cygp
CiAgICAgewogICAgICAgICBpZiAodGhpcy5fcmVzdG9yaW5nQnJlYWtwb2ludHMpCiAgICAgICAg
ICAgICByZXR1cm47CiAKLSAgICAgICAgbGV0IGJyZWFrcG9pbnRzVG9TYXZlID0gW107Ci0gICAg
ICAgIGZvciAobGV0IGJyZWFrcG9pbnRzIG9mIHRoaXMuX2RvbUJyZWFrcG9pbnRVUkxNYXAudmFs
dWVzKCkpCi0gICAgICAgICAgICBicmVha3BvaW50c1RvU2F2ZSA9IGJyZWFrcG9pbnRzVG9TYXZl
LmNvbmNhdChicmVha3BvaW50cyk7Ci0KLSAgICAgICAgdGhpcy5fZG9tQnJlYWtwb2ludHNTZXR0
aW5nLnZhbHVlID0gYnJlYWtwb2ludHNUb1NhdmUubWFwKChicmVha3BvaW50KSA9PiBicmVha3Bv
aW50LnNlcmlhbGl6YWJsZUluZm8pOworICAgICAgICB0aGlzLl9kb21CcmVha3BvaW50c1NldHRp
bmcudmFsdWUgPSBBcnJheS5mcm9tKHRoaXMuX2RvbUJyZWFrcG9pbnRVUkxNYXAudmFsdWVzKCkp
Lm1hcCgoYnJlYWtwb2ludCkgPT4gYnJlYWtwb2ludC5zZXJpYWxpemFibGVJbmZvKTsKICAgICB9
CiAKICAgICBfc2F2ZUV2ZW50QnJlYWtwb2ludHMoKQpAQCAtNTUwLDE0ICs1NDUsMjAgQEAgV0ku
RE9NRGVidWdnZXJNYW5hZ2VyID0gY2xhc3MgRE9NRGVidWdnZXJNYW5hZ2VyIGV4dGVuZHMgV0ku
T2JqZWN0CiAgICAgX2hhbmRsZURPTUJyZWFrcG9pbnREaXNhYmxlZFN0YXRlQ2hhbmdlZChldmVu
dCkKICAgICB7CiAgICAgICAgIGxldCBicmVha3BvaW50ID0gZXZlbnQudGFyZ2V0OwotICAgICAg
ICB0aGlzLl91cGRhdGVET01CcmVha3BvaW50KGJyZWFrcG9pbnQpOworICAgICAgICBsZXQgdGFy
Z2V0ID0gV0kuYXNzdW1pbmdNYWluVGFyZ2V0KCk7CisgICAgICAgIGlmICh0YXJnZXQgJiYgdGFy
Z2V0LkRPTURlYnVnZ2VyQWdlbnQpCisgICAgICAgICAgICB0aGlzLl91cGRhdGVET01CcmVha3Bv
aW50KGJyZWFrcG9pbnQsIHRhcmdldCk7CisKICAgICAgICAgdGhpcy5fc2F2ZURPTUJyZWFrcG9p
bnRzKCk7CiAgICAgfQogCiAgICAgX2hhbmRsZUV2ZW50QnJlYWtwb2ludERpc2FibGVkU3RhdGVD
aGFuZ2VkKGV2ZW50KQogICAgIHsKICAgICAgICAgbGV0IGJyZWFrcG9pbnQgPSBldmVudC50YXJn
ZXQ7Ci0gICAgICAgIHRoaXMuX3VwZGF0ZUV2ZW50QnJlYWtwb2ludChicmVha3BvaW50KTsKKyAg
ICAgICAgZm9yIChsZXQgdGFyZ2V0IG9mIFdJLnRhcmdldHMpIHsKKyAgICAgICAgICAgIGlmICh0
YXJnZXQuRE9NRGVidWdnZXJBZ2VudCkKKyAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVFdmVu
dEJyZWFrcG9pbnQoYnJlYWtwb2ludCwgdGFyZ2V0KTsKKyAgICAgICAgfQogICAgICAgICB0aGlz
Ll9zYXZlRXZlbnRCcmVha3BvaW50cygpOwogICAgIH0KIApAQCAtNTY4LDcgKzU2OSwxMCBAQCBX
SS5ET01EZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBET01EZWJ1Z2dlck1hbmFnZXIgZXh0ZW5kcyBX
SS5PYmplY3QKICAgICAgICAgaWYgKGJyZWFrcG9pbnQgPT09IHRoaXMuX2FsbFJlcXVlc3RzQnJl
YWtwb2ludCkKICAgICAgICAgICAgIHRoaXMuX2FsbFJlcXVlc3RzQnJlYWtwb2ludEVuYWJsZWRT
ZXR0aW5nLnZhbHVlID0gIWJyZWFrcG9pbnQuZGlzYWJsZWQ7CiAKLSAgICAgICAgdGhpcy5fdXBk
YXRlVVJMQnJlYWtwb2ludChicmVha3BvaW50KTsKKyAgICAgICAgZm9yIChsZXQgdGFyZ2V0IG9m
IFdJLnRhcmdldHMpIHsKKyAgICAgICAgICAgIGlmICh0YXJnZXQuRE9NRGVidWdnZXJBZ2VudCkK
KyAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVVUkxCcmVha3BvaW50KGJyZWFrcG9pbnQsIHRh
cmdldCk7CisgICAgICAgIH0KICAgICAgICAgdGhpcy5fc2F2ZVVSTEJyZWFrcG9pbnRzKCk7CiAg
ICAgfQogCkBAIC01NzgsMjMgKzU4MiwyMyBAQCBXSS5ET01EZWJ1Z2dlck1hbmFnZXIgPSBjbGFz
cyBET01EZWJ1Z2dlck1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgdGhpcy5fZGV0
YWNoQnJlYWtwb2ludHNGb3JGcmFtZShmcmFtZSk7CiAgICAgfQogCi0gICAgX21haW5GcmFtZURp
ZENoYW5nZSgpCisgICAgX21haW5GcmFtZURpZENoYW5nZShldmVudCkKICAgICB7Ci0gICAgICAg
IHRoaXMuX3NwZWN1bGF0aXZlbHlSZXNvbHZlQnJlYWtwb2ludHMoKTsKKyAgICAgICAgdGhpcy5f
c3BlY3VsYXRpdmVseVJlc29sdmVET01CcmVha3BvaW50c0ZvclVSTChXSS5uZXR3b3JrTWFuYWdl
ci5tYWluRnJhbWUudXJsKTsKICAgICB9CiAKICAgICBfbWFpblJlc291cmNlRGlkQ2hhbmdlKGV2
ZW50KQogICAgIHsKICAgICAgICAgbGV0IGZyYW1lID0gZXZlbnQudGFyZ2V0OwogICAgICAgICBp
ZiAoZnJhbWUuaXNNYWluRnJhbWUoKSkgewotICAgICAgICAgICAgZm9yIChsZXQgYnJlYWtwb2lu
dHMgb2YgdGhpcy5fZG9tQnJlYWtwb2ludFVSTE1hcC52YWx1ZXMoKSkKLSAgICAgICAgICAgICAg
ICBicmVha3BvaW50cy5mb3JFYWNoKChicmVha3BvaW50KSA9PiB7IGJyZWFrcG9pbnQuZG9tTm9k
ZUlkZW50aWZpZXIgPSBudWxsOyB9KTsKKyAgICAgICAgICAgIGZvciAobGV0IGJyZWFrcG9pbnQg
b2YgdGhpcy5fZG9tQnJlYWtwb2ludFVSTE1hcC52YWx1ZXMoKSkKKyAgICAgICAgICAgICAgICBi
cmVha3BvaW50LmRvbU5vZGVJZGVudGlmaWVyID0gbnVsbDsKIAogICAgICAgICAgICAgdGhpcy5f
ZG9tQnJlYWtwb2ludEZyYW1lSWRlbnRpZmllck1hcC5jbGVhcigpOwogICAgICAgICB9IGVsc2UK
ICAgICAgICAgICAgIHRoaXMuX2RldGFjaEJyZWFrcG9pbnRzRm9yRnJhbWUoZnJhbWUpOwogCi0g
ICAgICAgIHRoaXMuX3NwZWN1bGF0aXZlbHlSZXNvbHZlQnJlYWtwb2ludHMoKTsKKyAgICAgICAg
dGhpcy5fc3BlY3VsYXRpdmVseVJlc29sdmVET01CcmVha3BvaW50c0ZvclVSTChmcmFtZS51cmwp
OwogICAgIH0KIAogICAgIF9ub2RlSW5zZXJ0ZWQoZXZlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKaW5kZXggYjdhYjI0Mzg3NmExODMzZDBlYjY3
YTNiM2MxMDFlMWNhYzg5YTExMC4uMzYzOGE5NDA2ZDAwZDIxZDBiOGQ5ZjdkMDkzNTkyOTBmZDhj
YWEyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFp
bi5odG1sCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRt
bApAQCAtMjgzLDYgKzI4Myw3IEBACiAgICAgPHNjcmlwdCBzcmM9IkJhc2UvRGVidWdnYWJsZVR5
cGUuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJCYXNlL0xpbmtlZExpc3QuanMiPjwv
c2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJCYXNlL0xpc3RNdWx0aW1hcC5qcyI+PC9zY3JpcHQ+
CisgICAgPHNjcmlwdCBzcmM9IkJhc2UvTXVsdGltYXAuanMiPjwvc2NyaXB0PgogICAgIDxzY3Jp
cHQgc3JjPSJCYXNlL09iamVjdC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkJhc2Uv
VGhyb3R0bGVyLmpzIj48L3NjcmlwdD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVGVzdC5odG1sIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVGVzdC5odG1sCmluZGV4IDFiNGQ2ZGVjZTU1MjgyMmQ5ZmQ5N2IzMWFhMDI0MDll
ZjFkMmZhYTUuLjJhZmRmOGFmYTJjNTc2ZDljNjRhYjA3N2Y2NzgxZWY0ZjI0Yzc5OTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QuaHRtbAorKysg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0Lmh0bWwKQEAgLTQxLDYg
KzQxLDcgQEAKICAgICA8c2NyaXB0IHNyYz0iQmFzZS9EZWJ1Z2dhYmxlVHlwZS5qcyI+PC9zY3Jp
cHQ+CiAgICAgPHNjcmlwdCBzcmM9IkJhc2UvTGlua2VkTGlzdC5qcyI+PC9zY3JpcHQ+CiAgICAg
PHNjcmlwdCBzcmM9IkJhc2UvTGlzdE11bHRpbWFwLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0
IHNyYz0iQmFzZS9NdWx0aW1hcC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkJhc2Uv
T2JqZWN0LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQmFzZS9UaHJvdHRsZXIuanMi
Pjwvc2NyaXB0PgogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>