<?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>94222</bug_id>
          
          <creation_ts>2012-08-16 08:04:20 -0700</creation_ts>
          <short_desc>Web Inspector: build Elements, Resources, Timeline, Audits and Console panels lazily.</short_desc>
          <delta_ts>2012-08-17 02:16:49 -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 (Deprecated)</component>
          <version>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Pavel Feldman">pfeldman</reporter>
          <assigned_to name="Pavel Feldman">pfeldman</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>697142</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-08-16 08:04:20 -0700</bug_when>
    <thetext>There is no need to construct these panels on inspector startup - we can do that lazily.
This change introduces the concept of PanelDescriptor that is sufficient for the panel
representation before it has been selected. It also makes selected panels build lazily.

The next step is to migrate rest of the panels and load the panel code lazily as well.
That should speed up startup time significantly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697158</commentid>
    <comment_count>1</comment_count>
      <attachid>158826</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-08-16 08:18:51 -0700</bug_when>
    <thetext>Created attachment 158826
[Patch] I did not run tests yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697195</commentid>
    <comment_count>2</comment_count>
      <attachid>158826</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-08-16 09:09:18 -0700</bug_when>
    <thetext>Comment on attachment 158826
[Patch] I did not run tests yet.

Attachment 158826 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/13514420</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697245</commentid>
    <comment_count>3</comment_count>
      <attachid>158849</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-08-16 10:08:34 -0700</bug_when>
    <thetext>Created attachment 158849
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697329</commentid>
    <comment_count>4</comment_count>
      <attachid>158849</attachid>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2012-08-16 11:50:16 -0700</bug_when>
    <thetext>Comment on attachment 158849
Patch

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

Having to use string literals everywhere we used to have WebInspector.panels.panelName looks quite unfortunate -- at the very least, it&apos;s not compiler-friendly. How about using stuff like WebInspector.panelDescriptros.timeline.panel()? It&apos;s longer, but that serves right those that have to access panel directly. Or perhaps you can just keep descriptors, not panels in WebInspector.panels[]?

&gt; Source/WebCore/inspector/front-end/DOMStorage.js:105
&gt; +        WebInspector.panel(&quot;resources&quot;).addDOMStorage(domStorage);

use events for that?

&gt; Source/WebCore/inspector/front-end/DOMStorage.js:113
&gt; +        WebInspector.panel(&quot;resources&quot;).domStorageUpdated(storageId);

ditto

&gt; Source/WebCore/inspector/front-end/Database.js:143
&gt; +        WebInspector.panel(&quot;resources&quot;).addDatabase(database);

ditto

&gt; Source/WebCore/inspector/front-end/ExtensionServer.js:582
&gt; +            function ()

s/ //

&gt; Source/WebCore/inspector/front-end/Panel.js:250
&gt; +    this._panel = lazyInit ? null : this.panel();

if (!lazyInit)
    this.panel();
Assigning value returned by this.panel() to this._panel() is a bit confusing given we already assign this._panel in this.panel().

&gt; Source/WebCore/inspector/front-end/ResourcesPanel.js:100
&gt; +    if (WebInspector.resourceTreeModel.cachedResourcesLoaded())
&gt; +        this._cachedResourcesLoaded();

So one is a function that returns a boolean and another is a notification?.. Well.. Something must be wrong about our naming conventions ;)

&gt; Source/WebCore/inspector/front-end/Toolbar.js:79
&gt; +        toolbarItem.panelDescriptor = panelDescriptor;

s/panelDescriptor/__panelDescriptor/? Actually, do you need it?

&gt; Source/WebCore/inspector/front-end/inspector.js:510
&gt; +    var panelDescriptors = this._panelDescriptors();
&gt; +    for (var i = 0; i &lt; panelDescriptors.length; ++i)
&gt; +        WebInspector.inspectorView.addPanel(panelDescriptors[i]);

this._panelDescriptors().forEach(WebInspector.inspectorView.addPanel, WebInspector.inspectorView)?

&gt; Source/WebCore/inspector/front-end/inspector.js:991
&gt; +    if (WebInspector._showAnchorLocationInPanel(anchor, this.panels.scripts))
&gt; +        return true;
&gt; +    if (WebInspector._showAnchorLocationInPanel(anchor, this.panel(&quot;resources&quot;)))
&gt; +        return true;
&gt; +    if (WebInspector._showAnchorLocationInPanel(anchor, this.panels.network))
&gt; +        return true;

I&apos;d use getters for scripts and network just for consistency. Then, perhaps, one day these will be lazily created as well?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697962</commentid>
    <comment_count>5</comment_count>
      <attachid>158826</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-08-17 00:20:01 -0700</bug_when>
    <thetext>Comment on attachment 158826
[Patch] I did not run tests yet.

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

&gt; Source/WebCore/inspector/front-end/InspectorView.js:65
&gt; +        this._panelOrder.push(panelDescriptor.name());

I&apos;d store panelDescriptors, not their names.

&gt; Source/WebCore/inspector/front-end/inspector.js:88
&gt; +            this._nodeSearchButton = new WebInspector.StatusBarButton(WebInspector.UIString(&quot;Select an element in the page to inspect it.&quot;), &quot;node-search-status-bar-item&quot;);

This button should work even if Elements Panel was never opened.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697963</commentid>
    <comment_count>6</comment_count>
      <attachid>158849</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-08-17 00:20:10 -0700</bug_when>
    <thetext>Comment on attachment 158849
Patch

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

&gt; Source/WebCore/inspector/front-end/Toolbar.js:85
&gt; +                this._lastSelectedItem.removeStyleClass(&quot;toggled-on&quot;);

Isn&apos;t lastSelectedItem listening for PanelSelected event already? Seems redundant.

&gt; Source/WebCore/inspector/front-end/Toolbar.js:89
&gt; +            this._lastSelectedItem.addStyleClass(&quot;toggled-on&quot;);

ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697970</commentid>
    <comment_count>7</comment_count>
      <attachid>158849</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-08-17 00:24:39 -0700</bug_when>
    <thetext>Comment on attachment 158849
Patch

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

&gt;&gt; Source/WebCore/inspector/front-end/Toolbar.js:79
&gt;&gt; +        toolbarItem.panelDescriptor = panelDescriptor;
&gt; 
&gt; s/panelDescriptor/__panelDescriptor/? Actually, do you need it?

Yes, you were using it for overflow.

&gt;&gt; Source/WebCore/inspector/front-end/Toolbar.js:85
&gt;&gt; +                this._lastSelectedItem.removeStyleClass(&quot;toggled-on&quot;);
&gt; 
&gt; Isn&apos;t lastSelectedItem listening for PanelSelected event already? Seems redundant.

This is redundant code, forgot to remove, thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697971</commentid>
    <comment_count>8</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-08-17 00:25:22 -0700</bug_when>
    <thetext>&gt; I&apos;d store panelDescriptors, not their names.

It is only used to lookup names. Placing descriptors there would kill its purpose.

&gt; &gt; Source/WebCore/inspector/front-end/inspector.js:88
&gt; &gt; +            this._nodeSearchButton = new WebInspector.StatusBarButton(WebInspector.UIString(&quot;Select an element in the page to inspect it.&quot;), &quot;node-search-status-bar-item&quot;);
&gt; 
&gt; This button should work even if Elements Panel was never opened.

Good catch. Fixing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697975</commentid>
    <comment_count>9</comment_count>
      <attachid>158849</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-08-17 00:30:08 -0700</bug_when>
    <thetext>Comment on attachment 158849
Patch

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

&gt; Source/WebCore/inspector/front-end/ResourceTreeModel.js:92
&gt; +    cachedResourcesLoaded: function()

Please annotate</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>698027</commentid>
    <comment_count>10</comment_count>
      <attachid>159041</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-08-17 01:17:33 -0700</bug_when>
    <thetext>Created attachment 159041
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>698059</commentid>
    <comment_count>11</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-08-17 02:03:28 -0700</bug_when>
    <thetext>&gt; &gt; Source/WebCore/inspector/front-end/DOMStorage.js:105
&gt; &gt; +        WebInspector.panel(&quot;resources&quot;).addDOMStorage(domStorage);
&gt; 
&gt; use events for that?

We should have a model for that, but I am afraid it is outside of the scope of this change.

&gt; s/ //

Fixed!

&gt; &gt; Source/WebCore/inspector/front-end/Panel.js:250
&gt; &gt; +    this._panel = lazyInit ? null : this.panel();
&gt; 
&gt; if (!lazyInit)
&gt;     this.panel();
&gt; Assigning value returned by this.panel() to this._panel() is a bit confusing given we already assign this._panel in this.panel().
&gt; 

I&apos;m changing it in a follw-up patch;

&gt; &gt; Source/WebCore/inspector/front-end/ResourcesPanel.js:100
&gt; &gt; +    if (WebInspector.resourceTreeModel.cachedResourcesLoaded())
&gt; &gt; +        this._cachedResourcesLoaded();
&gt; 
&gt; So one is a function that returns a boolean and another is a notification?.. Well.. Something must be wrong about our naming conventions ;)

Start a thread on webkit-dev ?

&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/Toolbar.js:79
&gt; &gt; +        toolbarItem.panelDescriptor = panelDescriptor;
&gt; 
&gt; s/panelDescriptor/__panelDescriptor/? Actually, do you need it?
&gt; 

&gt; 
&gt; this._panelDescriptors().forEach(WebInspector.inspectorView.addPanel, WebInspector.inspectorView)?
&gt;

This is not compiler-friendly.
 
&gt; 
&gt; I&apos;d use getters for scripts and network just for consistency. Then, perhaps, one day these will be lazily created as well?

The whole point is to name them differently so that we knew which ones are already migrated to the lazy loading.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>698063</commentid>
    <comment_count>12</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-08-17 02:09:30 -0700</bug_when>
    <thetext>Committed r125871: &lt;http://trac.webkit.org/changeset/125871&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>698065</commentid>
    <comment_count>13</comment_count>
      <attachid>159041</attachid>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2012-08-17 02:13:04 -0700</bug_when>
    <thetext>Comment on attachment 159041
Patch

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

&gt; Source/WebCore/inspector/front-end/inspector.js:48
&gt; +        var allDescriptors = [elements, resources, network, scripts, timeline, profiles, audits, console];

one

&gt; Source/WebCore/inspector/front-end/inspector.js:58
&gt; +        var allDescriptors = [elements, resources, network, scripts, timeline, profiles, audits, console];

two</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>698066</commentid>
    <comment_count>14</comment_count>
      <attachid>159041</attachid>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2012-08-17 02:14:46 -0700</bug_when>
    <thetext>Comment on attachment 159041
Patch

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

&gt; Source/WebCore/inspector/front-end/inspector.js:91
&gt; +        if (!WebInspector.WorkerManager.isWorkerFrontend()) {
&gt; +            this._nodeSearchButton = new WebInspector.StatusBarButton(WebInspector.UIString(&quot;Select an element in the page to inspect it.&quot;), &quot;node-search-status-bar-item&quot;);
&gt; +            this._nodeSearchButton.addEventListener(&quot;click&quot;, this._toggleSearchingForNode, this);
&gt; +            mainStatusBar.insertBefore(this._nodeSearchButton.element, bottomStatusBarContainer);
&gt; +        }

So what if elements is a hidden panel?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158826</attachid>
            <date>2012-08-16 08:18:51 -0700</date>
            <delta_ts>2012-08-17 01:17:17 -0700</delta_ts>
            <desc>[Patch] I did not run tests yet.</desc>
            <filename>bug-94222-20120816191814.patch</filename>
            <type>text/plain</type>
            <size>52734</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1NzU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDI4NmFhNTIxN2E4MTBk
Mzg1Mzc5YjQ4YmE5M2RjOGQyMmIwMTlmOC4uODdkNzQxNTI0NGQ0MmMwNmE5MjgwODllMjIwMDlj
ZmMyNWI0YzgyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNCBAQAorMjAxMi0wOC0xNiAgUGF2
ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBidWlsZCBFbGVtZW50cywgUmVzb3VyY2VzLCBUaW1lbGluZSwgQXVkaXRzIGFuZCBDb25z
b2xlIHBhbmVscyBsYXppbHkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD05NDIyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRoZXJlIGlzIG5vIG5lZWQgdG8gY29uc3RydWN0IHRoZXNlIHBhbmVscyBvbiBp
bnNwZWN0b3Igc3RhcnR1cCAtIHdlIGNhbiBkbyB0aGF0IGxhemlseS4KKyAgICAgICAgVGhpcyBj
aGFuZ2UgaW50cm9kdWNlcyB0aGUgY29uY2VwdCBvZiBQYW5lbERlc2NyaXB0b3IgdGhhdCBpcyBz
dWZmaWNpZW50IGZvciB0aGUgcGFuZWwKKyAgICAgICAgcmVwcmVzZW50YXRpb24gYmVmb3JlIGl0
IGhhcyBiZWVuIHNlbGVjdGVkLiBJdCBhbHNvIG1ha2VzIHNlbGVjdGVkIHBhbmVscyBidWlsZCBs
YXppbHkuCisKKyAgICAgICAgVGhlIG5leHQgc3RlcCBpcyB0byBtaWdyYXRlIHJlc3Qgb2YgdGhl
IHBhbmVscyBhbmQgbG9hZCB0aGUgcGFuZWwgY29kZSBsYXppbHkgYXMgd2VsbC4KKyAgICAgICAg
VGhhdCBzaG91bGQgc3BlZWQgdXAgc3RhcnR1cCB0aW1lIHNpZ25pZmljYW50bHkuCisKKyAgICAg
ICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0c1BhbmVsLmpzOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkF1ZGl0c1BhbmVsKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5BdWRpdHNQYW5lbC5w
cm90b3R5cGUuX2F1ZGl0RmluaXNoZWRDYWxsYmFjayk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
QXVkaXRzU2lkZWJhclRyZWVFbGVtZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5BdWRpdHNT
aWRlYmFyVHJlZUVsZW1lbnQucHJvdG90eXBlLm9uc2VsZWN0KToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5BdWRpdFJlc3VsdFNpZGViYXJUcmVlRWxlbWVudCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuQXVkaXRSZXN1bHRTaWRlYmFyVHJlZUVsZW1lbnQucHJvdG90eXBlLm9uc2VsZWN0KToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVQYW5lbC5qczoKKyAgICAgICAgKiBp
bnNwZWN0b3IvZnJvbnQtZW5kL0RPTVN0b3JhZ2UuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
RE9NU3RvcmFnZURpc3BhdGNoZXIucHJvdG90eXBlLmFkZERPTVN0b3JhZ2UpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VEaXNwYXRjaGVyLnByb3RvdHlwZS5kb21TdG9yYWdlVXBk
YXRlZCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9EYXRhYmFzZS5qczoKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5EYXRhYmFzZURpc3BhdGNoZXIucHJvdG90eXBlLmFkZERhdGFiYXNl
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzUGFuZWwuanM6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
RWxlbWVudHNQYW5lbC5wcm90b3R5cGUucmV2ZWFsQW5kU2VsZWN0Tm9kZSk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbC5wcm90b3R5cGUuc2V0U2VhcmNoaW5nRm9yTm9kZSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbC5wcm90b3R5cGUudG9nZ2xlU2Vh
cmNoaW5nRm9yTm9kZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1Ry
ZWVPdXRsaW5lLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZUVsZW1lbnQu
cHJvdG90eXBlLl9wb3B1bGF0ZUZvcmNlZFBzZXVkb1N0YXRlSXRlbXMpOgorICAgICAgICAqIGlu
c3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9uUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuRXh0ZW5zaW9uUGFuZWwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkV4dGVuc2lvblBhbmVs
LnByb3RvdHlwZS5qdW1wVG9QcmV2aW91c1NlYXJjaFJlc3VsdCk6CisgICAgICAgICogaW5zcGVj
dG9yL2Zyb250LWVuZC9FeHRlbnNpb25TZXJ2ZXIuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
RXh0ZW5zaW9uU2VydmVyLnByb3RvdHlwZS5fb25DcmVhdGVQYW5lbCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuRXh0ZW5zaW9uU2VydmVyLnByb3RvdHlwZS5fb25BZGRBdWRpdENhdGVnb3J5KToK
KyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0luc3BlY3RvckZyb250ZW5kQVBJLmpzOgor
ICAgICAgICAoSW5zcGVjdG9yRnJvbnRlbmRBUEkuaXNUaW1lbGluZVByb2ZpbGluZ0VuYWJsZWQp
OgorICAgICAgICAoSW5zcGVjdG9yRnJvbnRlbmRBUEkuc2V0VGltZWxpbmVQcm9maWxpbmdFbmFi
bGVkKToKKyAgICAgICAgKEluc3BlY3RvckZyb250ZW5kQVBJLnNob3dDb25zb2xlKToKKyAgICAg
ICAgKEluc3BlY3RvckZyb250ZW5kQVBJLnNob3dSZXNvdXJjZXMpOgorICAgICAgICAoSW5zcGVj
dG9yRnJvbnRlbmRBUEkuZW50ZXJJbnNwZWN0RWxlbWVudE1vZGUpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9mcm9udC1lbmQvSW5zcGVjdG9yVmlldy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5J
bnNwZWN0b3JWaWV3KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5JbnNwZWN0b3JWaWV3LnByb3Rv
dHlwZS5hZGRQYW5lbCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSW5zcGVjdG9yVmlldy5wcm90
b3R5cGUucGFuZWwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkluc3BlY3RvclZpZXcucHJvdG90
eXBlLnNob3dQYW5lbCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSW5zcGVjdG9yVmlldy5wcm90
b3R5cGUuX2tleURvd25JbnRlcm5hbCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9O
ZXR3b3JrUGFuZWwuanM6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9QYW5lbC5qczoK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5QYW5lbC5wcm90b3R5cGUud2FzU2hvd24pOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlBhbmVsLnByb3RvdHlwZS53aWxsSGlkZSk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuUGFuZWxEZXNjcmlwdG9yKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5QYW5lbERl
c2NyaXB0b3IucHJvdG90eXBlLm5hbWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlBhbmVsRGVz
Y3JpcHRvci5wcm90b3R5cGUudGl0bGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlBhbmVsRGVz
Y3JpcHRvci5wcm90b3R5cGUuaWNvblVSTCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUGFuZWxE
ZXNjcmlwdG9yLnByb3RvdHlwZS5zZXRJY29uVVJMKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Q
YW5lbERlc2NyaXB0b3IucHJvdG90eXBlLnBhbmVsKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Q
YW5lbERlc2NyaXB0b3IucHJvdG90eXBlLmxhenkpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9u
dC1lbmQvUHJvZmlsZXNQYW5lbC5qczoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1Jl
c291cmNlVHJlZU1vZGVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZU1v
ZGVsLnByb3RvdHlwZS5jYWNoZWRSZXNvdXJjZXNMb2FkZWQpOgorICAgICAgICAqIGluc3BlY3Rv
ci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVz
b3VyY2VzUGFuZWwpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVs
LmpzOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzU2lkZWJhclBhbmUuanM6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0aWVzU2VjdGlvbi5wcm90b3R5cGUu
ZWRpdGluZ1NlbGVjdG9yQ29tbWl0dGVkLnN1Y2Nlc3NDYWxsYmFjayk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuU3R5bGVQcm9wZXJ0aWVzU2VjdGlvbi5wcm90b3R5cGUuZWRpdGluZ1NlbGVjdG9y
Q29tbWl0dGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnR5VHJlZUVsZW1l
bnQucHJvdG90eXBlLnVwZGF0ZVRpdGxlLmxpbmtpZnlVUkwpOgorICAgICAgICAqIGluc3BlY3Rv
ci9mcm9udC1lbmQvVGltZWxpbmVQYW5lbC5qczoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQt
ZW5kL1Rvb2xiYXIuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVG9vbGJhci5wcm90b3R5cGUu
YWRkUGFuZWwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRvb2xiYXIucHJvdG90eXBlLl9jcmVh
dGVQYW5lbFRvb2xiYXJJdGVtLm9uVG9vbGJhckl0ZW1DbGlja2VkKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5Ub29sYmFyLnByb3RvdHlwZS5fY3JlYXRlUGFuZWxUb29sYmFySXRlbS5wYW5lbFNl
bGVjdGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Ub29sYmFyLnByb3RvdHlwZS5fY3JlYXRl
UGFuZWxUb29sYmFySXRlbSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVG9vbGJhci5wcm90b3R5
cGUuX3BhbmVsU2VsZWN0ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRvb2xiYXIucHJvdG90
eXBlLl9zZXREcm9wZG93blZpc2libGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRvb2xiYXJE
cm9wZG93bik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVG9vbGJhckRyb3Bkb3duLnByb3RvdHlw
ZS5zaG93KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Ub29sYmFyRHJvcGRvd24ucHJvdG90eXBl
Ll9wb3B1bGF0ZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3Nz
OgorICAgICAgICAoLnRvb2xiYXItc21hbGwgLnRvb2xiYXItaWNvbi5jdXN0b20tdG9vbGJhci1p
Y29uKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qczoKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5fcGFuZWxEZXNjcmlwdG9ycyk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuX3BhbmVsU2VsZWN0ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLl9jcmVhdGVHbG9iYWxT
dGF0dXNCYXJJdGVtcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuZG9jdW1lbnRDbGljay5mb2xs
b3dMaW5rKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5kb2N1bWVudENsaWNrKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5vcGVuUmVzb3VyY2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLnNob3dQ
YW5lbCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IucGFuZWwpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLmluc3BlY3QuKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5pbnNwZWN0KToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5fc2hvd0FuY2hvckxvY2F0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5zaG93UHJvZmlsZUZvclVSTCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuZnJvbnRlbmRSZXVz
ZWQpOgorCiAyMDEyLTA4LTE2ICBZb3NoaWZ1bWkgSW5vdWUgIDx5b3NpbkBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgW0Zvcm1zXSBXaGVlbCBldmVudCBzdXBwb3J0IGluIG11bHRpcGxlIGZpZWxk
cyB0aW1lIGlucHV0IFVJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0F1ZGl0c1BhbmVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9BdWRpdHNQYW5lbC5qcwppbmRleCBiODM0YTBiMGY0NGI1ZGQ0YmE0Mjk5YmYwNTc1YzdkODAw
YWVmYzhlLi5iZjdmZDM3MzdkYTM5MjFmOTllMjRlODcyYjFiY2ZjMjJjMmYzZDk5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0c1BhbmVsLmpzCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQXVkaXRzUGFuZWwuanMKQEAg
LTQzLDcgKzQzLDcgQEAgV2ViSW5zcGVjdG9yLkF1ZGl0c1BhbmVsID0gZnVuY3Rpb24oKQogICAg
IHRoaXMuc2lkZWJhclRyZWUuYXBwZW5kQ2hpbGQodGhpcy5hdWRpdHNUcmVlRWxlbWVudCk7CiAg
ICAgdGhpcy5hdWRpdHNUcmVlRWxlbWVudC5saXN0SXRlbUVsZW1lbnQuYWRkU3R5bGVDbGFzcygi
aGlkZGVuIik7CiAKLSAgICB0aGlzLmF1ZGl0c0l0ZW1UcmVlRWxlbWVudCA9IG5ldyBXZWJJbnNw
ZWN0b3IuQXVkaXRzU2lkZWJhclRyZWVFbGVtZW50KCk7CisgICAgdGhpcy5hdWRpdHNJdGVtVHJl
ZUVsZW1lbnQgPSBuZXcgV2ViSW5zcGVjdG9yLkF1ZGl0c1NpZGViYXJUcmVlRWxlbWVudCh0aGlz
KTsKICAgICB0aGlzLmF1ZGl0c1RyZWVFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuYXVkaXRzSXRl
bVRyZWVFbGVtZW50KTsKIAogICAgIHRoaXMuYXVkaXRSZXN1bHRzVHJlZUVsZW1lbnQgPSBuZXcg
V2ViSW5zcGVjdG9yLlNpZGViYXJTZWN0aW9uVHJlZUVsZW1lbnQoV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJSRVNVTFRTIiksIHt9LCB0cnVlKTsKQEAgLTY1LDExICs2NSw2IEBAIFdlYkluc3BlY3Rv
ci5BdWRpdHNQYW5lbCA9IGZ1bmN0aW9uKCkKIH0KIAogV2ViSW5zcGVjdG9yLkF1ZGl0c1BhbmVs
LnByb3RvdHlwZSA9IHsKLSAgICBnZXQgdG9vbGJhckl0ZW1MYWJlbCgpCi0gICAgewotICAgICAg
ICByZXR1cm4gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJBdWRpdHMiKTsKLSAgICB9LAotCiAgICAg
Z2V0IHN0YXR1c0Jhckl0ZW1zKCkKICAgICB7CiAgICAgICAgIHJldHVybiBbdGhpcy5jbGVhclJl
c3VsdHNCdXR0b24uZWxlbWVudF07CkBAIC0xNTEsNyArMTQ2LDcgQEAgV2ViSW5zcGVjdG9yLkF1
ZGl0c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICBvcmRpbmFsKys7CiAgICAg
ICAgIH0KIAotICAgICAgICB2YXIgcmVzdWx0VHJlZUVsZW1lbnQgPSBuZXcgV2ViSW5zcGVjdG9y
LkF1ZGl0UmVzdWx0U2lkZWJhclRyZWVFbGVtZW50KHJlc3VsdHMsIG1haW5SZXNvdXJjZVVSTCwg
b3JkaW5hbCk7CisgICAgICAgIHZhciByZXN1bHRUcmVlRWxlbWVudCA9IG5ldyBXZWJJbnNwZWN0
b3IuQXVkaXRSZXN1bHRTaWRlYmFyVHJlZUVsZW1lbnQodGhpcywgcmVzdWx0cywgbWFpblJlc291
cmNlVVJMLCBvcmRpbmFsKTsKICAgICAgICAgdGhpcy5hdWRpdFJlc3VsdHNUcmVlRWxlbWVudC5h
cHBlbmRDaGlsZChyZXN1bHRUcmVlRWxlbWVudCk7CiAgICAgICAgIHJlc3VsdFRyZWVFbGVtZW50
LnJldmVhbEFuZFNlbGVjdCgpOwogICAgICAgICBpZiAoIXRoaXMuX3Byb2dyZXNzTW9uaXRvci5j
YW5jZWxlZCAmJiBsYXVuY2hlckNhbGxiYWNrKQpAQCAtNTI2LDExICs1MjEsMTIgQEAgV2ViSW5z
cGVjdG9yLkF1ZGl0UHJvZ3Jlc3NNb25pdG9yLnByb3RvdHlwZSA9IHsKIC8qKgogICogQGNvbnN0
cnVjdG9yCiAgKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLlNpZGViYXJUcmVlRWxlbWVudH0KKyAq
IEBwYXJhbSB7V2ViSW5zcGVjdG9yLkF1ZGl0c1BhbmVsfSBwYW5lbAogICovCi1XZWJJbnNwZWN0
b3IuQXVkaXRzU2lkZWJhclRyZWVFbGVtZW50ID0gZnVuY3Rpb24oKQorV2ViSW5zcGVjdG9yLkF1
ZGl0c1NpZGViYXJUcmVlRWxlbWVudCA9IGZ1bmN0aW9uKHBhbmVsKQogeworICAgIHRoaXMuX3Bh
bmVsID0gcGFuZWw7CiAgICAgdGhpcy5zbWFsbCA9IGZhbHNlOwotCiAgICAgV2ViSW5zcGVjdG9y
LlNpZGViYXJUcmVlRWxlbWVudC5jYWxsKHRoaXMsICJhdWRpdHMtc2lkZWJhci10cmVlLWl0ZW0i
LCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkF1ZGl0cyIpLCAiIiwgbnVsbCwgZmFsc2UpOwogfQog
CkBAIC01NDIsNyArNTM4LDcgQEAgV2ViSW5zcGVjdG9yLkF1ZGl0c1NpZGViYXJUcmVlRWxlbWVu
dC5wcm90b3R5cGUgPSB7CiAKICAgICBvbnNlbGVjdDogZnVuY3Rpb24oKQogICAgIHsKLSAgICAg
ICAgV2ViSW5zcGVjdG9yLnBhbmVscy5hdWRpdHMuc2hvd0xhdW5jaGVyVmlldygpOworICAgICAg
ICB0aGlzLl9wYW5lbC5zaG93TGF1bmNoZXJWaWV3KCk7CiAgICAgfSwKIAogICAgIGdldCBzZWxl
Y3RhYmxlKCkKQEAgLTU2MSwxOSArNTU3LDIwIEBAIFdlYkluc3BlY3Rvci5BdWRpdHNTaWRlYmFy
VHJlZUVsZW1lbnQucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5TaWRlYmFyCiAv
KioKICAqIEBjb25zdHJ1Y3RvcgogICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5TaWRlYmFyVHJl
ZUVsZW1lbnR9CisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5BdWRpdHNQYW5lbH0gcGFuZWwKICAq
LwotV2ViSW5zcGVjdG9yLkF1ZGl0UmVzdWx0U2lkZWJhclRyZWVFbGVtZW50ID0gZnVuY3Rpb24o
cmVzdWx0cywgbWFpblJlc291cmNlVVJMLCBvcmRpbmFsKQorV2ViSW5zcGVjdG9yLkF1ZGl0UmVz
dWx0U2lkZWJhclRyZWVFbGVtZW50ID0gZnVuY3Rpb24ocGFuZWwsIHJlc3VsdHMsIG1haW5SZXNv
dXJjZVVSTCwgb3JkaW5hbCkKIHsKKyAgICB0aGlzLl9wYW5lbCA9IHBhbmVsOwogICAgIHRoaXMu
cmVzdWx0cyA9IHJlc3VsdHM7CiAgICAgdGhpcy5tYWluUmVzb3VyY2VVUkwgPSBtYWluUmVzb3Vy
Y2VVUkw7Ci0KICAgICBXZWJJbnNwZWN0b3IuU2lkZWJhclRyZWVFbGVtZW50LmNhbGwodGhpcywg
ImF1ZGl0LXJlc3VsdC1zaWRlYmFyLXRyZWUtaXRlbSIsIFN0cmluZy5zcHJpbnRmKCIlcyAoJWQp
IiwgbWFpblJlc291cmNlVVJMLCBvcmRpbmFsKSwgIiIsIHt9LCBmYWxzZSk7CiB9CiAKIFdlYklu
c3BlY3Rvci5BdWRpdFJlc3VsdFNpZGViYXJUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAg
b25zZWxlY3Q6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMu
YXVkaXRzLnNob3dSZXN1bHRzKHRoaXMucmVzdWx0cyk7CisgICAgICAgIHRoaXMuX3BhbmVsLmF1
ZGl0cy5zaG93UmVzdWx0cyh0aGlzLnJlc3VsdHMpOwogICAgIH0sCiAKICAgICBnZXQgc2VsZWN0
YWJsZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0Nv
bnNvbGVQYW5lbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29uc29s
ZVBhbmVsLmpzCmluZGV4IGI3YWYyYTk1MWE2NDY4MTQ1OTMwMTYwYzkyZDdjMTM2MDYyZjE5YjMu
LjgwMTJiMTljMWQwZjQyMjdjMmJjNGM5MzRiMjg0NDQwNWFkNWQ3ZmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29uc29sZVBhbmVsLmpzCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29uc29sZVBhbmVsLmpzCkBAIC00MCwx
MSArNDAsNiBAQCBXZWJJbnNwZWN0b3IuQ29uc29sZVBhbmVsID0gZnVuY3Rpb24oKQogfQogCiBX
ZWJJbnNwZWN0b3IuQ29uc29sZVBhbmVsLnByb3RvdHlwZSA9IHsKLSAgICBnZXQgdG9vbGJhckl0
ZW1MYWJlbCgpCi0gICAgewotICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJD
b25zb2xlIik7Ci0gICAgfSwKLQogICAgIGdldCBzdGF0dXNCYXJJdGVtcygpCiAgICAgewogICAg
ICAgICByZXR1cm4gdGhpcy5fdmlldy5zdGF0dXNCYXJJdGVtczsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRE9NU3RvcmFnZS5qcyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRE9NU3RvcmFnZS5qcwppbmRleCAwYzk2NjkzNWMxZmI0
MTA2NmI3ZTgyNzZkMTgyMzcwNDM1NWYxMTYzLi5jZGIzMmY0MTU2MTFiMWFiMjEyZDdiNmNlNGRj
ZWRmY2VkNzdhNzQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL0RPTVN0b3JhZ2UuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9ET01TdG9yYWdlLmpzCkBAIC0xMDIsNyArMTAyLDcgQEAgV2ViSW5zcGVjdG9yLkRPTVN0b3Jh
Z2VEaXNwYXRjaGVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHBheWxvYWQuaWQsCiAgICAg
ICAgICAgICBwYXlsb2FkLm9yaWdpbiwKICAgICAgICAgICAgIHBheWxvYWQuaXNMb2NhbFN0b3Jh
Z2UpOwotICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLnJlc291cmNlcy5hZGRET01TdG9yYWdl
KGRvbVN0b3JhZ2UpOworICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWwoInJlc291cmNlcyIpLmFk
ZERPTVN0b3JhZ2UoZG9tU3RvcmFnZSk7CiAgICAgfSwKIAogICAgIC8qKgpAQCAtMTEwLDYgKzEx
MCw2IEBAIFdlYkluc3BlY3Rvci5ET01TdG9yYWdlRGlzcGF0Y2hlci5wcm90b3R5cGUgPSB7CiAg
ICAgICovCiAgICAgZG9tU3RvcmFnZVVwZGF0ZWQ6IGZ1bmN0aW9uKHN0b3JhZ2VJZCkKICAgICB7
Ci0gICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMucmVzb3VyY2VzLmRvbVN0b3JhZ2VVcGRhdGVk
KHN0b3JhZ2VJZCk7CisgICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbCgicmVzb3VyY2VzIikuZG9t
U3RvcmFnZVVwZGF0ZWQoc3RvcmFnZUlkKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RhdGFiYXNlLmpzIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9EYXRhYmFzZS5qcwppbmRleCA3ZmE0MWE5Nzg2ZjQ3YzBmZWFj
ODU2OTQ1ZTJmZjkxMGJkMWUwMTcyLi42ZTk0YWRiNDg3OTdkY2IwZWMxMmJiYjI1NzY2ZjU5OWJk
MzE5NmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0Rh
dGFiYXNlLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGF0YWJh
c2UuanMKQEAgLTE0MCw3ICsxNDAsNyBAQCBXZWJJbnNwZWN0b3IuRGF0YWJhc2VEaXNwYXRjaGVy
LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHBheWxvYWQuZG9tYWluLAogICAgICAgICAgICAg
cGF5bG9hZC5uYW1lLAogICAgICAgICAgICAgcGF5bG9hZC52ZXJzaW9uKTsKLSAgICAgICAgV2Vi
SW5zcGVjdG9yLnBhbmVscy5yZXNvdXJjZXMuYWRkRGF0YWJhc2UoZGF0YWJhc2UpOworICAgICAg
ICBXZWJJbnNwZWN0b3IucGFuZWwoInJlc291cmNlcyIpLmFkZERhdGFiYXNlKGRhdGFiYXNlKTsK
ICAgICB9LAogCiAgICAgLyoqCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0VsZW1lbnRzUGFuZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0VsZW1lbnRzUGFuZWwuanMKaW5kZXggNWZkMjMyMjdmYWNkNDc2MTc4YzY4ZDE4OTBj
NjhhMzIwM2RjNzBhZC4uZTZiNzQ3OTY5ZWZlNjk1YWViMzE3NWFhNjgyZDNjMjMwMWQyN2Y3YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1Bh
bmVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNQ
YW5lbC5qcwpAQCAtMzEsOCArMzEsOSBAQAogLyoqCiAgKiBAY29uc3RydWN0b3IKICAqIEBleHRl
bmRzIHtXZWJJbnNwZWN0b3IuUGFuZWx9CisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5TdGF0dXNC
YXJCdXR0b259IG5vZGVTZWFyY2hCdXR0b24KICAqLwotV2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFu
ZWwgPSBmdW5jdGlvbigpCitXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbCA9IGZ1bmN0aW9uKG5v
ZGVTZWFyY2hCdXR0b24pCiB7CiAgICAgV2ViSW5zcGVjdG9yLlBhbmVsLmNhbGwodGhpcywgImVs
ZW1lbnRzIik7CiAgICAgdGhpcy5yZWdpc3RlclJlcXVpcmVkQ1NTKCJlbGVtZW50c1BhbmVsLmNz
cyIpOwpAQCAtOTAsOCArOTEsOCBAQCBXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbCA9IGZ1bmN0
aW9uKCkKICAgICAgICAgICAgIHRoaXMuc2lkZWJhclBhbmVzW3BhbmVdLm9uYXR0YWNoKCk7CiAg
ICAgfQogCi0gICAgdGhpcy5ub2RlU2VhcmNoQnV0dG9uID0gbmV3IFdlYkluc3BlY3Rvci5TdGF0
dXNCYXJCdXR0b24oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTZWxlY3QgYW4gZWxlbWVudCBpbiB0
aGUgcGFnZSB0byBpbnNwZWN0IGl0LiIpLCAibm9kZS1zZWFyY2gtc3RhdHVzLWJhci1pdGVtIik7
Ci0gICAgdGhpcy5ub2RlU2VhcmNoQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhp
cy50b2dnbGVTZWFyY2hpbmdGb3JOb2RlLCB0aGlzKTsKKyAgICB0aGlzLl9ub2RlU2VhcmNoQnV0
dG9uID0gbm9kZVNlYXJjaEJ1dHRvbjsKKyAgICB0aGlzLl9ub2RlU2VhcmNoQnV0dG9uLmFkZEV2
ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy50b2dnbGVTZWFyY2hpbmdGb3JOb2RlLCB0aGlzKTsK
IAogICAgIHRoaXMuX3JlZ2lzdGVyU2hvcnRjdXRzKCk7CiAKQEAgLTEwNCwxMSArMTA1LDYgQEAg
V2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwgPSBmdW5jdGlvbigpCiB9CiAKIFdlYkluc3BlY3Rv
ci5FbGVtZW50c1BhbmVsLnByb3RvdHlwZSA9IHsKLSAgICBnZXQgdG9vbGJhckl0ZW1MYWJlbCgp
Ci0gICAgewotICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJFbGVtZW50cyIp
OwotICAgIH0sCi0KICAgICBnZXQgc3RhdHVzQmFySXRlbXMoKQogICAgIHsKICAgICAgICAgcmV0
dXJuIFt0aGlzLmNydW1ic0VsZW1lbnRdOwpAQCAtMTEzNyw5ICsxMTMzLDkgQEAgV2ViSW5zcGVj
dG9yLkVsZW1lbnRzUGFuZWwucHJvdG90eXBlID0gewogCiAgICAgICAgIFdlYkluc3BlY3Rvci5k
b21BZ2VudC5oaWdobGlnaHRET01Ob2RlRm9yVHdvU2Vjb25kcyhub2RlSWQpOwogICAgICAgICB0
aGlzLnNlbGVjdERPTU5vZGUobm9kZSwgdHJ1ZSk7Ci0gICAgICAgIGlmICh0aGlzLm5vZGVTZWFy
Y2hCdXR0b24udG9nZ2xlZCkgeworICAgICAgICBpZiAodGhpcy5fbm9kZVNlYXJjaEJ1dHRvbi50
b2dnbGVkKSB7CiAgICAgICAgICAgICBJbnNwZWN0b3JGcm9udGVuZEhvc3QuYnJpbmdUb0Zyb250
KCk7Ci0gICAgICAgICAgICB0aGlzLm5vZGVTZWFyY2hCdXR0b24udG9nZ2xlZCA9IGZhbHNlOwor
ICAgICAgICAgICAgdGhpcy5fbm9kZVNlYXJjaEJ1dHRvbi50b2dnbGVkID0gZmFsc2U7CiAgICAg
ICAgIH0KICAgICB9LAogCkBAIC0xMTUxLDE0ICsxMTQ3LDE0IEBAIFdlYkluc3BlY3Rvci5FbGVt
ZW50c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgZnVuY3Rpb24gY2FsbGJhY2soZXJyb3Ip
CiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghZXJyb3IpCi0gICAgICAgICAgICAgICAgdGhp
cy5ub2RlU2VhcmNoQnV0dG9uLnRvZ2dsZWQgPSBlbmFibGVkOworICAgICAgICAgICAgICAgIHRo
aXMuX25vZGVTZWFyY2hCdXR0b24udG9nZ2xlZCA9IGVuYWJsZWQ7CiAgICAgICAgIH0KICAgICAg
ICAgV2ViSW5zcGVjdG9yLmRvbUFnZW50LnNldEluc3BlY3RNb2RlRW5hYmxlZChlbmFibGVkLCBj
YWxsYmFjay5iaW5kKHRoaXMpKTsKICAgICB9LAogCiAgICAgdG9nZ2xlU2VhcmNoaW5nRm9yTm9k
ZTogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgdGhpcy5zZXRTZWFyY2hpbmdGb3JOb2RlKCF0
aGlzLm5vZGVTZWFyY2hCdXR0b24udG9nZ2xlZCk7CisgICAgICAgIHRoaXMuc2V0U2VhcmNoaW5n
Rm9yTm9kZSghdGhpcy5fbm9kZVNlYXJjaEJ1dHRvbi50b2dnbGVkKTsKICAgICB9CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNUcmVl
T3V0bGluZS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNU
cmVlT3V0bGluZS5qcwppbmRleCAzNDEzMDMxMDM1YzE2MDFkZjFlMzJiNjZlN2Q2YmE0YmMxNjNk
NTA3Li4xOGNhYjhhZTRkZGQxZDdiNzlhYTc1NTUwMzJkZmI4YWNiMDdiODBkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzVHJlZU91dGxpbmUu
anMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1RyZWVP
dXRsaW5lLmpzCkBAIC0xMTcyLDcgKzExNzIsNiBAQCBXZWJJbnNwZWN0b3IuRWxlbWVudHNUcmVl
RWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGNvbnN0IHBzZXVkb0NsYXNzZXMgPSBbImFj
dGl2ZSIsICJob3ZlciIsICJmb2N1cyIsICJ2aXNpdGVkIl07CiAgICAgICAgIHZhciBub2RlID0g
dGhpcy5yZXByZXNlbnRlZE9iamVjdDsKICAgICAgICAgdmFyIGZvcmNlZFBzZXVkb1N0YXRlID0g
KG5vZGUgPyBub2RlLmdldFVzZXJQcm9wZXJ0eSgicHNldWRvU3RhdGUiKSA6IG51bGwpIHx8IFtd
OwotICAgICAgICB2YXIgZWxlbWVudHNQYW5lbCA9IFdlYkluc3BlY3Rvci5wYW5lbHMuZWxlbWVu
dHM7CiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcHNldWRvQ2xhc3Nlcy5sZW5ndGg7ICsr
aSkgewogICAgICAgICAgICAgdmFyIHBzZXVkb0NsYXNzRm9yY2VkID0gZm9yY2VkUHNldWRvU3Rh
dGUuaW5kZXhPZihwc2V1ZG9DbGFzc2VzW2ldKSA+PSAwOwogICAgICAgICAgICAgc3ViTWVudS5h
cHBlbmRDaGVja2JveEl0ZW0oIjoiICsgcHNldWRvQ2xhc3Nlc1tpXSwgdGhpcy50cmVlT3V0bGlu
ZS5fc2V0UHNldWRvQ2xhc3NDYWxsYmFjay5iaW5kKG51bGwsIG5vZGUuaWQsIHBzZXVkb0NsYXNz
ZXNbaV0sICFwc2V1ZG9DbGFzc0ZvcmNlZCksIHBzZXVkb0NsYXNzRm9yY2VkLCBmYWxzZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lvblBh
bmVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25QYW5l
bC5qcwppbmRleCAxYzY5NjUzNmRkY2I5YzY1OWIyZDlmNTVhZDQwZWRiOWUzYzM3ZmUyLi40NmNk
YjExN2ZjMGJkNTM5NmEyMDhhZWRhYzg4ODIxYjNiNDg4ZjdjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lvblBhbmVsLmpzCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9uUGFuZWwuanMKQEAgLTMyLDMx
ICszMiwxOCBAQAogICogQGNvbnN0cnVjdG9yCiAgKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLlBh
bmVsfQogICogQHBhcmFtIHtzdHJpbmd9IGlkCi0gKiBAcGFyYW0ge3N0cmluZ30gbGFiZWwKICAq
IEBwYXJhbSB7c3RyaW5nfSBwYWdlVVJMCi0gKiBAcGFyYW0ge3N0cmluZ30gaWNvblVSTAogICov
Ci1XZWJJbnNwZWN0b3IuRXh0ZW5zaW9uUGFuZWwgPSBmdW5jdGlvbihpZCwgbGFiZWwsIHBhZ2VV
UkwsIGljb25VUkwpCitXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uUGFuZWwgPSBmdW5jdGlvbihpZCwg
cGFnZVVSTCkKIHsKICAgICBXZWJJbnNwZWN0b3IuUGFuZWwuY2FsbCh0aGlzLCBpZCk7CiAgICAg
dGhpcy5zZXRIaWRlT25EZXRhY2goKTsKLSAgICB0aGlzLl90b29sYmFySXRlbUxhYmVsID0gbGFi
ZWw7CiAgICAgdGhpcy5fc3RhdHVzQmFySXRlbXMgPSBbXTsKLQotICAgIGlmIChpY29uVVJMKSB7
Ci0gICAgICAgIHRoaXMuX2FkZFN0eWxlUnVsZSgiLnRvb2xiYXItaXRlbS4iICsgaWQgKyAiIC50
b29sYmFyLWljb24iLCAiYmFja2dyb3VuZC1pbWFnZTogdXJsKCIgKyBpY29uVVJMICsgIik7Iik7
Ci0gICAgICAgIHRoaXMuX2FkZFN0eWxlUnVsZSgiLnRvb2xiYXItc21hbGwgLnRvb2xiYXItaXRl
bS4iICsgaWQgKyAiIC50b29sYmFyLWljb24iLCAiYmFja2dyb3VuZC1wb3NpdGlvbi14OiAtMzJw
eDsiKTsKLSAgICB9CiAgICAgdmFyIGV4dGVuc2lvblZpZXcgPSBuZXcgV2ViSW5zcGVjdG9yLkV4
dGVuc2lvblZpZXcoaWQsIHBhZ2VVUkwsICJleHRlbnNpb24gcGFuZWwiKTsKICAgICBleHRlbnNp
b25WaWV3LnNob3codGhpcy5lbGVtZW50KTsKIH0KIAogV2ViSW5zcGVjdG9yLkV4dGVuc2lvblBh
bmVsLnByb3RvdHlwZSA9IHsKLSAgICBnZXQgdG9vbGJhckl0ZW1MYWJlbCgpCi0gICAgewotICAg
ICAgICByZXR1cm4gdGhpcy5fdG9vbGJhckl0ZW1MYWJlbDsKLSAgICB9LAotCiAgICAgZGVmYXVs
dEZvY3VzZWRFbGVtZW50OiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5z
aWRlYmFyVHJlZUVsZW1lbnQgfHwgdGhpcy5lbGVtZW50OwpAQCAtMTAwLDEzICs4Nyw2IEBAIFdl
Ykluc3BlY3Rvci5FeHRlbnNpb25QYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgewogICAgICAgICBX
ZWJJbnNwZWN0b3IuZXh0ZW5zaW9uU2VydmVyLm5vdGlmeVNlYXJjaEFjdGlvbih0aGlzLm5hbWUs
IFdlYkluc3BlY3Rvci5leHRlbnNpb25BUEkucGFuZWxzLlNlYXJjaEFjdGlvbi5QcmV2aW91c1Nl
YXJjaFJlc3VsdCk7CiAgICAgICAgIFdlYkluc3BlY3Rvci5QYW5lbC5wcm90b3R5cGUuanVtcFRv
UHJldmlvdXNTZWFyY2hSZXN1bHQuY2FsbCh0aGlzKTsKLSAgICB9LAotCi0gICAgX2FkZFN0eWxl
UnVsZTogZnVuY3Rpb24oc2VsZWN0b3IsIGJvZHkpCi0gICAgewotICAgICAgICB2YXIgc3R5bGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpOwotICAgICAgICBzdHlsZS50ZXh0Q29u
dGVudCA9IHNlbGVjdG9yICsgIiB7ICIgKyBib2R5ICsgIiB9IjsKLSAgICAgICAgZG9jdW1lbnQu
aGVhZC5hcHBlbmRDaGlsZChzdHlsZSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lvblNlcnZlci5qcyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9uU2VydmVyLmpzCmluZGV4IGNlMDE1
N2Y5ZmU1YjMyODAzOTUwOGUzOTQxOGIwMDJjMmJkMTFhNDIuLmZhNDYyMTlmM2UzMWE3YWM4NDhk
MjhmZjUxOTMwNjA5ODM2MTdmMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvRXh0ZW5zaW9uU2VydmVyLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9uU2VydmVyLmpzCkBAIC0xOTcsMTEgKzE5NywxMCBAQCBX
ZWJJbnNwZWN0b3IuRXh0ZW5zaW9uU2VydmVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJl
dHVybiB0aGlzLl9zdGF0dXMuRV9FWElTVFMoaWQpOwogCiAgICAgICAgIHZhciBwYWdlID0gdGhp
cy5fZXhwYW5kUmVzb3VyY2VQYXRoKHBvcnQuX2V4dGVuc2lvbk9yaWdpbiwgbWVzc2FnZS5wYWdl
KTsKLSAgICAgICAgdmFyIGljb24gPSB0aGlzLl9leHBhbmRSZXNvdXJjZVBhdGgocG9ydC5fZXh0
ZW5zaW9uT3JpZ2luLCBtZXNzYWdlLmljb24pCi0gICAgICAgIHZhciBwYW5lbCA9IG5ldyBXZWJJ
bnNwZWN0b3IuRXh0ZW5zaW9uUGFuZWwoaWQsIG1lc3NhZ2UudGl0bGUsIHBhZ2UsIGljb24pOwot
ICAgICAgICB0aGlzLl9jbGllbnRPYmplY3RzW2lkXSA9IHBhbmVsOwotICAgICAgICBXZWJJbnNw
ZWN0b3IucGFuZWxzW2lkXSA9IHBhbmVsOwotICAgICAgICBXZWJJbnNwZWN0b3IuYWRkUGFuZWwo
cGFuZWwpOworICAgICAgICB2YXIgcGFuZWxEZXNjcmlwdG9yID0gbmV3IFdlYkluc3BlY3Rvci5Q
YW5lbERlc2NyaXB0b3IoaWQsIG1lc3NhZ2UudGl0bGUsIFdlYkluc3BlY3Rvci5FeHRlbnNpb25Q
YW5lbC5iaW5kKG51bGwsIGlkLCBwYWdlKSk7CisgICAgICAgIHBhbmVsRGVzY3JpcHRvci5zZXRJ
Y29uVVJMKHRoaXMuX2V4cGFuZFJlc291cmNlUGF0aChwb3J0Ll9leHRlbnNpb25PcmlnaW4sIG1l
c3NhZ2UuaWNvbikpOworICAgICAgICB0aGlzLl9jbGllbnRPYmplY3RzW2lkXSA9IHBhbmVsRGVz
Y3JpcHRvci5wYW5lbCgpOworICAgICAgICBXZWJJbnNwZWN0b3IuaW5zcGVjdG9yVmlldy5hZGRQ
YW5lbChwYW5lbERlc2NyaXB0b3IpOwogICAgICAgICByZXR1cm4gdGhpcy5fc3RhdHVzLk9LKCk7
CiAgICAgfSwKIApAQCAtNTMyLDEwICs1MzEsMTAgQEAgV2ViSW5zcGVjdG9yLkV4dGVuc2lvblNl
cnZlci5wcm90b3R5cGUgPSB7CiAgICAgX29uQWRkQXVkaXRDYXRlZ29yeTogZnVuY3Rpb24obWVz
c2FnZSwgcG9ydCkKICAgICB7CiAgICAgICAgIHZhciBjYXRlZ29yeSA9IG5ldyBXZWJJbnNwZWN0
b3IuRXh0ZW5zaW9uQXVkaXRDYXRlZ29yeShwb3J0Ll9leHRlbnNpb25PcmlnaW4sIG1lc3NhZ2Uu
aWQsIG1lc3NhZ2UuZGlzcGxheU5hbWUsIG1lc3NhZ2UucmVzdWx0Q291bnQpOwotICAgICAgICBp
ZiAoV2ViSW5zcGVjdG9yLnBhbmVscy5hdWRpdHMuZ2V0Q2F0ZWdvcnkoY2F0ZWdvcnkuaWQpKQor
ICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLnBhbmVsKCJhdWRpdHMiKS5nZXRDYXRlZ29yeShjYXRl
Z29yeS5pZCkpCiAgICAgICAgICAgICByZXR1cm4gdGhpcy5fc3RhdHVzLkVfRVhJU1RTKGNhdGVn
b3J5LmlkKTsKICAgICAgICAgdGhpcy5fY2xpZW50T2JqZWN0c1ttZXNzYWdlLmlkXSA9IGNhdGVn
b3J5OwotICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLmF1ZGl0cy5hZGRDYXRlZ29yeShjYXRl
Z29yeSk7CisgICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbCgiYXVkaXRzIikuYWRkQ2F0ZWdvcnko
Y2F0ZWdvcnkpOwogICAgIH0sCiAKICAgICBfb25BZGRBdWRpdFJlc3VsdDogZnVuY3Rpb24obWVz
c2FnZSkKQEAgLTU3NSwxMiArNTc0LDE3IEBAIFdlYkluc3BlY3Rvci5FeHRlbnNpb25TZXJ2ZXIu
cHJvdG90eXBlID0gewogICAgICAgICAgICAgV2ViSW5zcGVjdG9yLndvcmtzcGFjZSwKICAgICAg
ICAgICAgIFdlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGVQcm92aWRlci5FdmVudHMuVUlTb3VyY2VD
b2RlQWRkZWQsCiAgICAgICAgICAgICB0aGlzLl9ub3RpZnlSZXNvdXJjZUFkZGVkKTsKLSAgICAg
ICAgaWYgKFdlYkluc3BlY3Rvci5wYW5lbHMuZWxlbWVudHMpIHsKLSAgICAgICAgICAgIHRoaXMu
X3JlZ2lzdGVyQXV0b3N1YnNjcmlwdGlvbkhhbmRsZXIoV2ViSW5zcGVjdG9yLmV4dGVuc2lvbkFQ
SS5FdmVudHMuRWxlbWVudHNQYW5lbE9iamVjdFNlbGVjdGVkLAotICAgICAgICAgICAgICAgIFdl
Ykluc3BlY3Rvci5wYW5lbHMuZWxlbWVudHMudHJlZU91dGxpbmUsCi0gICAgICAgICAgICAgICAg
V2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZU91dGxpbmUuRXZlbnRzLlNlbGVjdGVkTm9kZUNoYW5n
ZWQsCi0gICAgICAgICAgICAgICAgdGhpcy5fbm90aWZ5RWxlbWVudHNTZWxlY3Rpb25DaGFuZ2Vk
KTsKLSAgICAgICAgfQorICAgICAgICB0aGlzLl9yZWdpc3RlclN1YnNjcmlwdGlvbkhhbmRsZXIo
V2ViSW5zcGVjdG9yLmV4dGVuc2lvbkFQSS5FdmVudHMuRWxlbWVudHNQYW5lbE9iamVjdFNlbGVj
dGVkLAorICAgICAgICAgICAgZnVuY3Rpb24oKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIFdlYkluc3BlY3Rvci5wYW5lbCgiZWxlbWVudHMiKS50cmVlT3V0bGluZS5hZGRFdmVudExp
c3RlbmVyKFdlYkluc3BlY3Rvci5FbGVtZW50c1RyZWVPdXRsaW5lLkV2ZW50cy5TZWxlY3RlZE5v
ZGVDaGFuZ2VkLCB0aGlzLl9ub3RpZnlFbGVtZW50c1NlbGVjdGlvbkNoYW5nZWQpOworICAgICAg
ICAgICAgfSwKKyAgICAgICAgICAgIGZ1bmN0aW9uICgpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVsKCJlbGVtZW50cyIpLnRyZWVPdXRsaW5lLnJlbW92
ZUV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZU91dGxpbmUuRXZlbnRzLlNl
bGVjdGVkTm9kZUNoYW5nZWQsIHRoaXMuX25vdGlmeUVsZW1lbnRzU2VsZWN0aW9uQ2hhbmdlZCk7
CisgICAgICAgICAgICB9CisgICAgICAgICk7CisKICAgICAgICAgdGhpcy5fcmVnaXN0ZXJBdXRv
c3Vic2NyaXB0aW9uSGFuZGxlcihXZWJJbnNwZWN0b3IuZXh0ZW5zaW9uQVBJLkV2ZW50cy5SZXNv
dXJjZUNvbnRlbnRDb21taXR0ZWQsCiAgICAgICAgICAgICBXZWJJbnNwZWN0b3Iud29ya3NwYWNl
LAogICAgICAgICAgICAgV2ViSW5zcGVjdG9yLldvcmtzcGFjZS5FdmVudHMuVUlTb3VyY2VDb2Rl
Q29udGVudENvbW1pdHRlZCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvSW5zcGVjdG9yRnJvbnRlbmRBUEkuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0luc3BlY3RvckZyb250ZW5kQVBJLmpzCmluZGV4IDQ3MzI2NzA5MTViMmMz
MWJmODI3NGI0ZmE5MmE0ODVkNmZjNTYzNTQuLjJjYTI5ZjNhZGJjYzBkY2I5OThlODVkMDVjOTQ2
YjcyMWM2MzdmNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvSW5zcGVjdG9yRnJvbnRlbmRBUEkuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9JbnNwZWN0b3JGcm9udGVuZEFQSS5qcwpAQCAtNDcsMTIgKzQ3LDEyIEBAIElu
c3BlY3RvckZyb250ZW5kQVBJID0gewogCiAgICAgaXNUaW1lbGluZVByb2ZpbGluZ0VuYWJsZWQ6
IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IucGFuZWxzLnRp
bWVsaW5lLnRpbWVsaW5lUHJvZmlsaW5nRW5hYmxlZDsKKyAgICAgICAgcmV0dXJuIFdlYkluc3Bl
Y3Rvci5wYW5lbHMudGltZWxpbmUgJiYgV2ViSW5zcGVjdG9yLnBhbmVscy50aW1lbGluZS50aW1l
bGluZVByb2ZpbGluZ0VuYWJsZWQ7CiAgICAgfSwKIAogICAgIHNldFRpbWVsaW5lUHJvZmlsaW5n
RW5hYmxlZDogZnVuY3Rpb24oZW5hYmxlZCkKICAgICB7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5w
YW5lbHMudGltZWxpbmUuc2V0VGltZWxpbmVQcm9maWxpbmdFbmFibGVkKGVuYWJsZWQpOworICAg
ICAgICBXZWJJbnNwZWN0b3IucGFuZWwoInRpbWVsaW5lIikuc2V0VGltZWxpbmVQcm9maWxpbmdF
bmFibGVkKGVuYWJsZWQpOwogICAgIH0sCiAKICAgICBpc1Byb2ZpbGluZ0phdmFTY3JpcHQ6IGZ1
bmN0aW9uKCkKQEAgLTgyLDcgKzgyLDcgQEAgSW5zcGVjdG9yRnJvbnRlbmRBUEkgPSB7CiAKICAg
ICBzaG93Q29uc29sZTogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgV2ViSW5zcGVjdG9yLmlu
c3BlY3RvclZpZXcuc2V0Q3VycmVudFBhbmVsKFdlYkluc3BlY3Rvci5wYW5lbHMuY29uc29sZSk7
CisgICAgICAgIFdlYkluc3BlY3Rvci5zaG93UGFuZWwoImNvbnNvbGUiKTsKICAgICB9LAogCiAg
ICAgc2hvd01haW5SZXNvdXJjZUZvckZyYW1lOiBmdW5jdGlvbihmcmFtZUlkKQpAQCAtOTIsNyAr
OTIsNyBAQCBJbnNwZWN0b3JGcm9udGVuZEFQSSA9IHsKIAogICAgIHNob3dSZXNvdXJjZXM6IGZ1
bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5pbnNwZWN0b3JWaWV3LnNldEN1
cnJlbnRQYW5lbChXZWJJbnNwZWN0b3IucGFuZWxzLnJlc291cmNlcyk7CisgICAgICAgIFdlYklu
c3BlY3Rvci5zaG93UGFuZWwoInJlc291cmNlcyIpOwogICAgIH0sCiAKICAgICBzZXREb2NraW5n
VW5hdmFpbGFibGU6IGZ1bmN0aW9uKHVuYXZhaWxhYmxlKQpAQCAtMTAyLDcgKzEwMiw3IEBAIElu
c3BlY3RvckZyb250ZW5kQVBJID0gewogCiAgICAgZW50ZXJJbnNwZWN0RWxlbWVudE1vZGU6IGZ1
bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIFdlYkluc3BlY3Rvci50b2dnbGVTZWFyY2hpbmdGb3JO
b2RlKCk7CisgICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbCgiZWxlbWVudHMiKS50b2dnbGVTZWFy
Y2hpbmdGb3JOb2RlKCk7CiAgICAgfSwKIAogICAgIHNhdmVkVVJMOiBmdW5jdGlvbih1cmwpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luc3BlY3RvclZp
ZXcuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luc3BlY3RvclZpZXcu
anMKaW5kZXggYzY2MDFjN2YxNmJkNTc2YjRlY2NkMDlmNzE4ZjQ5N2QxMDBjNWE1ZS4uZDQ5YjA0
ZTMzNDYwMDI5YzY5MWMwNWFmOTI4ODA4M2M1ZmFiMGYwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9JbnNwZWN0b3JWaWV3LmpzCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW5zcGVjdG9yVmlldy5qcwpAQCAtNDMsNiArNDMs
NyBAQCBXZWJJbnNwZWN0b3IuSW5zcGVjdG9yVmlldyA9IGZ1bmN0aW9uKCkKICAgICBkb2N1bWVu
dC5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIiwgdGhpcy5fa2V5RG93bi5iaW5kKHRoaXMpLCBm
YWxzZSk7CiAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigia2V5cHJlc3MiLCB0aGlzLl9r
ZXlQcmVzcy5iaW5kKHRoaXMpLCBmYWxzZSk7CiAgICAgdGhpcy5fcGFuZWxPcmRlciA9IFtdOwor
ICAgIHRoaXMuX3BhbmVsRGVzY3JpcHRvcnMgPSB7fTsKIAogICAgIC8vIFdpbmRvd3MgYW5kIE1h
YyBoYXZlIHR3byBkaWZmZXJlbnQgZGVmaW5pdGlvbnMgb2YgJ1snIGFuZCAnXScsIHNvIGFjY2Vw
dCBib3RoIG9mIGVhY2guCiAgICAgdGhpcy5fb3BlbkJyYWNrZXRJZGVudGlmaWVycyA9IFsiVSsw
MDVCIiwgIlUrMDBEQiJdLmtleVNldCgpOwpAQCAtNTIsMTQgKzUzLDQyIEBAIFdlYkluc3BlY3Rv
ci5JbnNwZWN0b3JWaWV3ID0gZnVuY3Rpb24oKQogfQogCiBXZWJJbnNwZWN0b3IuSW5zcGVjdG9y
Vmlldy5FdmVudHMgPSB7Ci0gICAgUGFuZWxTZWxlY3RlZDogInBhbmVsLXNlbGVjdGVkIgorICAg
IFBhbmVsU2VsZWN0ZWQ6ICJQYW5lbFNlbGVjdGVkIgogfQogCiBXZWJJbnNwZWN0b3IuSW5zcGVj
dG9yVmlldy5wcm90b3R5cGUgPSB7Ci0gICAgYWRkUGFuZWw6IGZ1bmN0aW9uKHBhbmVsKQorICAg
IC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlBhbmVsRGVzY3JpcHRvcn0gcGFuZWxE
ZXNjcmlwdG9yCisgICAgICovCisgICAgYWRkUGFuZWw6IGZ1bmN0aW9uKHBhbmVsRGVzY3JpcHRv
cikKKyAgICB7CisgICAgICAgIHRoaXMuX3BhbmVsT3JkZXIucHVzaChwYW5lbERlc2NyaXB0b3Iu
bmFtZSgpKTsKKyAgICAgICAgdGhpcy5fcGFuZWxEZXNjcmlwdG9yc1twYW5lbERlc2NyaXB0b3Iu
bmFtZSgpXSA9IHBhbmVsRGVzY3JpcHRvcjsKKyAgICAgICAgV2ViSW5zcGVjdG9yLnRvb2xiYXIu
YWRkUGFuZWwocGFuZWxEZXNjcmlwdG9yKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBh
cmFtIHtzdHJpbmd9IHBhbmVsTmFtZQorICAgICAqIEByZXR1cm4gez9XZWJJbnNwZWN0b3IuUGFu
ZWx9CisgICAgICovCisgICAgcGFuZWw6IGZ1bmN0aW9uKHBhbmVsTmFtZSkKKyAgICB7CisgICAg
ICAgIHZhciBwYW5lbERlc2NyaXB0b3IgPSB0aGlzLl9wYW5lbERlc2NyaXB0b3JzW3BhbmVsTmFt
ZV07CisgICAgICAgIGlmICghcGFuZWxEZXNjcmlwdG9yICYmIHRoaXMuX3BhbmVsT3JkZXIubGVu
Z3RoKQorICAgICAgICAgICAgcGFuZWxEZXNjcmlwdG9yID0gdGhpcy5fcGFuZWxEZXNjcmlwdG9y
c1t0aGlzLl9wYW5lbE9yZGVyWzBdXTsKKyAgICAgICAgcmV0dXJuIHBhbmVsRGVzY3JpcHRvciA/
IHBhbmVsRGVzY3JpcHRvci5wYW5lbCgpIDogbnVsbDsKKyAgICB9LAorCisgICAgLyoqCisgICAg
ICogQHBhcmFtIHtzdHJpbmd9IHBhbmVsTmFtZQorICAgICAqIEByZXR1cm4gez9XZWJJbnNwZWN0
b3IuUGFuZWx9CisgICAgICovCisgICAgc2hvd1BhbmVsOiBmdW5jdGlvbihwYW5lbE5hbWUpCiAg
ICAgewotICAgICAgICB0aGlzLl9wYW5lbE9yZGVyLnB1c2gocGFuZWwpOwotICAgICAgICBXZWJJ
bnNwZWN0b3IudG9vbGJhci5hZGRQYW5lbChwYW5lbCk7CisgICAgICAgIHZhciBwYW5lbCA9IHRo
aXMucGFuZWwocGFuZWxOYW1lKTsKKyAgICAgICAgaWYgKHBhbmVsKQorICAgICAgICAgICAgdGhp
cy5zZXRDdXJyZW50UGFuZWwocGFuZWwpOworICAgICAgICByZXR1cm4gcGFuZWw7CiAgICAgfSwK
IAogICAgIGN1cnJlbnRQYW5lbDogZnVuY3Rpb24oKQpAQCAtMTE2LDkgKzE0NSw5IEBAIFdlYklu
c3BlY3Rvci5JbnNwZWN0b3JWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKHRoaXMuX29w
ZW5CcmFja2V0SWRlbnRpZmllcnMuaGFzT3duUHJvcGVydHkoZXZlbnQua2V5SWRlbnRpZmllcikp
IHsKICAgICAgICAgICAgIHZhciBpc1JvdGF0ZUxlZnQgPSBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRT
aG9ydGN1dC5ldmVudEhhc0N0cmxPck1ldGEoZXZlbnQpICYmICFldmVudC5zaGlmdEtleSAmJiAh
ZXZlbnQuYWx0S2V5OwogICAgICAgICAgICAgaWYgKGlzUm90YXRlTGVmdCkgewotICAgICAgICAg
ICAgICAgIHZhciBpbmRleCA9IHRoaXMuX3BhbmVsT3JkZXIuaW5kZXhPZih0aGlzLmN1cnJlbnRQ
YW5lbCgpKTsKKyAgICAgICAgICAgICAgICB2YXIgaW5kZXggPSB0aGlzLl9wYW5lbE9yZGVyLmlu
ZGV4T2YodGhpcy5jdXJyZW50UGFuZWwoKS5uYW1lKTsKICAgICAgICAgICAgICAgICBpbmRleCA9
IChpbmRleCA9PT0gMCkgPyB0aGlzLl9wYW5lbE9yZGVyLmxlbmd0aCAtIDEgOiBpbmRleCAtIDE7
Ci0gICAgICAgICAgICAgICAgdGhpcy5fcGFuZWxPcmRlcltpbmRleF0udG9vbGJhckl0ZW0uY2xp
Y2soKTsKKyAgICAgICAgICAgICAgICB0aGlzLnNob3dQYW5lbCh0aGlzLl9wYW5lbE9yZGVyW2lu
ZGV4XSk7CiAgICAgICAgICAgICAgICAgZXZlbnQuY29uc3VtZSh0cnVlKTsKICAgICAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgICAgICB9CkBAIC0xMzQsOSArMTYzLDkgQEAgV2ViSW5zcGVj
dG9yLkluc3BlY3RvclZpZXcucHJvdG90eXBlID0gewogICAgICAgICBpZiAodGhpcy5fY2xvc2VC
cmFja2V0SWRlbnRpZmllcnMuaGFzT3duUHJvcGVydHkoZXZlbnQua2V5SWRlbnRpZmllcikpIHsK
ICAgICAgICAgICAgIHZhciBpc1JvdGF0ZVJpZ2h0ID0gV2ViSW5zcGVjdG9yLktleWJvYXJkU2hv
cnRjdXQuZXZlbnRIYXNDdHJsT3JNZXRhKGV2ZW50KSAmJiAhZXZlbnQuc2hpZnRLZXkgJiYgIWV2
ZW50LmFsdEtleTsKICAgICAgICAgICAgIGlmIChpc1JvdGF0ZVJpZ2h0KSB7Ci0gICAgICAgICAg
ICAgICAgdmFyIGluZGV4ID0gdGhpcy5fcGFuZWxPcmRlci5pbmRleE9mKHRoaXMuY3VycmVudFBh
bmVsKCkpOworICAgICAgICAgICAgICAgIHZhciBpbmRleCA9IHRoaXMuX3BhbmVsT3JkZXIuaW5k
ZXhPZih0aGlzLmN1cnJlbnRQYW5lbCgpLm5hbWUpOwogICAgICAgICAgICAgICAgIGluZGV4ID0g
KGluZGV4ICsgMSkgJSB0aGlzLl9wYW5lbE9yZGVyLmxlbmd0aDsKLSAgICAgICAgICAgICAgICB0
aGlzLl9wYW5lbE9yZGVyW2luZGV4XS50b29sYmFySXRlbS5jbGljaygpOworICAgICAgICAgICAg
ICAgIHRoaXMuc2hvd1BhbmVsKHRoaXMuX3BhbmVsT3JkZXJbaW5kZXhdKTsKICAgICAgICAgICAg
ICAgICBldmVudC5jb25zdW1lKHRydWUpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
TmV0d29ya1BhbmVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3
b3JrUGFuZWwuanMKaW5kZXggMmVmYzFkYWRmNzRmMjY1N2E0MTM5N2U4NjEyNDUzMDljNTZhYzUy
MS4uNGM5Yjk5YmU1YTdmZWU3ZjlhNTZiZTZkMGVjNGM1MWFhMWIxZjk3MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrUGFuZWwuanMKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrUGFuZWwuanMKQEAgLTEy
NTEsMTEgKzEyNTEsNiBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya1BhbmVsID0gZnVuY3Rpb24oKQog
fQogCiBXZWJJbnNwZWN0b3IuTmV0d29ya1BhbmVsLnByb3RvdHlwZSA9IHsKLSAgICBnZXQgdG9v
bGJhckl0ZW1MYWJlbCgpCi0gICAgewotICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJOZXR3b3JrIik7Ci0gICAgfSwKLQogICAgIGdldCBzdGF0dXNCYXJJdGVtcygpCiAgICAg
ewogICAgICAgICByZXR1cm4gdGhpcy5fbmV0d29ya0xvZ1ZpZXcuc3RhdHVzQmFySXRlbXM7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1BhbmVsLmpzIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9QYW5lbC5qcwppbmRleCBmNjVmNWVh
MzBmNzY5YzcxMWJhYzkyNDQxZmEwZjgxODY5OTVjNjE1Li5mOTk3ZWRhYjA4NGJiZjM3MWUzZjQ2
ZGNlYTFkOTkxNDdiMDIwZDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1BhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvUGFuZWwuanMKQEAgLTQ3LDE1ICs0Nyw2IEBAIFdlYkluc3BlY3Rvci5QYW5lbCA9IGZ1bmN0
aW9uKG5hbWUpCiBXZWJJbnNwZWN0b3IuUGFuZWwuY291bnRlclJpZ2h0TWFyZ2luID0gMjU7CiAK
IFdlYkluc3BlY3Rvci5QYW5lbC5wcm90b3R5cGUgPSB7Ci0gICAgZ2V0IHRvb2xiYXJJdGVtKCkK
LSAgICB7Ci0gICAgICAgIGlmICh0aGlzLl90b29sYmFySXRlbSkKLSAgICAgICAgICAgIHJldHVy
biB0aGlzLl90b29sYmFySXRlbTsKLQotICAgICAgICB0aGlzLl90b29sYmFySXRlbSA9IFdlYklu
c3BlY3Rvci5Ub29sYmFyLmNyZWF0ZVBhbmVsVG9vbGJhckl0ZW0odGhpcyk7Ci0gICAgICAgIHJl
dHVybiB0aGlzLl90b29sYmFySXRlbTsKLSAgICB9LAotCiAgICAgZ2V0IG5hbWUoKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIHRoaXMuX3BhbmVsTmFtZTsKQEAgLTc2LDkgKzY3LDYgQEAgV2ViSW5z
cGVjdG9yLlBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJwYW5lbC1zdGF0dXMtYmFyIikuYXBwZW5kQ2hpbGQodGhpcy5fc3RhdHVzQmFySXRl
bUNvbnRhaW5lcik7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoIl90b29sYmFySXRlbSIgaW4g
dGhpcykKLSAgICAgICAgICAgIHRoaXMuX3Rvb2xiYXJJdGVtLmFkZFN0eWxlQ2xhc3MoInRvZ2ds
ZWQtb24iKTsKLQogICAgICAgICB0aGlzLmZvY3VzKCk7CiAgICAgfSwKIApAQCAtODcsOCArNzUs
NiBAQCBXZWJJbnNwZWN0b3IuUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICBpZiAodGhpcy5f
c3RhdHVzQmFySXRlbUNvbnRhaW5lciAmJiB0aGlzLl9zdGF0dXNCYXJJdGVtQ29udGFpbmVyLnBh
cmVudE5vZGUpCiAgICAgICAgICAgICB0aGlzLl9zdGF0dXNCYXJJdGVtQ29udGFpbmVyLnBhcmVu
dE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5fc3RhdHVzQmFySXRlbUNvbnRhaW5lcik7CiAgICAgICAg
IGRlbGV0ZSB0aGlzLl9zdGF0dXNCYXJJdGVtQ29udGFpbmVyOwotICAgICAgICBpZiAoIl90b29s
YmFySXRlbSIgaW4gdGhpcykKLSAgICAgICAgICAgIHRoaXMuX3Rvb2xiYXJJdGVtLnJlbW92ZVN0
eWxlQ2xhc3MoInRvZ2dsZWQtb24iKTsKICAgICB9LAogCiAgICAgcmVzZXQ6IGZ1bmN0aW9uKCkK
QEAgLTE5MywxMCArMTc5LDYgQEAgV2ViSW5zcGVjdG9yLlBhbmVsLnByb3RvdHlwZSA9IHsKIAog
ICAgIC8vIFNob3VsZCBiZSBpbXBsZW1lbnRlZCBieSBhbmNlc3RvcnMuCiAKLSAgICBnZXQgdG9v
bGJhckl0ZW1MYWJlbCgpCi0gICAgewotICAgIH0sCi0KICAgICBnZXQgc3RhdHVzQmFySXRlbXMo
KQogICAgIHsKICAgICB9LApAQCAtMjUyLDMgKzIzNCw2MyBAQCBXZWJJbnNwZWN0b3IuUGFuZWwu
cHJvdG90eXBlID0gewogfQogCiBXZWJJbnNwZWN0b3IuUGFuZWwucHJvdG90eXBlLl9fcHJvdG9f
XyA9IFdlYkluc3BlY3Rvci5WaWV3LnByb3RvdHlwZTsKKworLyoqCisgKiBAY29uc3RydWN0b3IK
KyAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgKiBAcGFyYW0ge3N0cmluZ30gdGl0bGUKKyAqIEBw
YXJhbSB7ZnVuY3Rpb24obmV3OldlYkluc3BlY3Rvci5QYW5lbCl9IGNvbnN0cnVjdG9yCisgKiBA
cGFyYW0ge2Jvb2xlYW49fSBsYXp5SW5pdAorICovCitXZWJJbnNwZWN0b3IuUGFuZWxEZXNjcmlw
dG9yID0gZnVuY3Rpb24obmFtZSwgdGl0bGUsIGNvbnN0cnVjdG9yLCBsYXp5SW5pdCkKK3sKKyAg
ICB0aGlzLl9uYW1lID0gbmFtZTsKKyAgICB0aGlzLl90aXRsZSA9IHRpdGxlOworICAgIHRoaXMu
X2NvbnN0cnVjdG9yID0gY29uc3RydWN0b3I7CisgICAgdGhpcy5fcGFuZWwgPSBsYXp5SW5pdCA/
IG51bGwgOiB0aGlzLnBhbmVsKCk7Cit9CisKK1dlYkluc3BlY3Rvci5QYW5lbERlc2NyaXB0b3Iu
cHJvdG90eXBlID0geworICAgIC8qKgorICAgICAqIEByZXR1cm4ge3N0cmluZ30KKyAgICAgKi8K
KyAgICBuYW1lOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fbmFtZTsK
KyAgICB9LAorCisgICAgLyoqCisgICAgICogQHJldHVybiB7c3RyaW5nfQorICAgICAqLworICAg
IHRpdGxlOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fdGl0bGU7Cisg
ICAgfSwKKworICAgIC8qKgorICAgICAqIEByZXR1cm4ge3N0cmluZ30KKyAgICAgKi8KKyAgICBp
Y29uVVJMOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5faWNvblVSTDsK
KyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9IGljb25VUkwKKyAgICAg
Ki8KKyAgICBzZXRJY29uVVJMOiBmdW5jdGlvbihpY29uVVJMKQorICAgIHsKKyAgICAgICAgdGhp
cy5faWNvblVSTCA9IGljb25VUkw7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEByZXR1cm4g
e1dlYkluc3BlY3Rvci5QYW5lbH0KKyAgICAgKi8KKyAgICBwYW5lbDogZnVuY3Rpb24oKQorICAg
IHsKKyAgICAgICAgaWYgKCF0aGlzLl9wYW5lbCkKKyAgICAgICAgICAgIHRoaXMuX3BhbmVsID0g
bmV3IHRoaXMuX2NvbnN0cnVjdG9yKCk7CisgICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHNbdGhp
cy5fbmFtZV0gPSB0aGlzLl9wYW5lbDsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3BhbmVsOworICAg
IH0KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUHJv
ZmlsZXNQYW5lbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUHJvZmls
ZXNQYW5lbC5qcwppbmRleCA4ZjFiNmNmZDBkZTFhYzdlMjQyNTI4YTQyOWZiMGI2NWI3NDI4M2Zm
Li4wODY5ZDU4NDI1YjgwOGI2YzBmZWI3Yzg0Y2Q0ZWFhMjEwZTBjMzNhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVzUGFuZWwuanMKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlc1BhbmVsLmpzCkBAIC0y
ODksMTEgKzI4OSw2IEBAIFdlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsLnByb3RvdHlwZSA9IHsK
ICAgICAgICAgdGhpcy5fY3JlYXRlRmlsZVNlbGVjdG9yRWxlbWVudCgpOwogICAgIH0sCiAKLSAg
ICBnZXQgdG9vbGJhckl0ZW1MYWJlbCgpCi0gICAgewotICAgICAgICByZXR1cm4gV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJQcm9maWxlcyIpOwotICAgIH0sCi0KICAgICBnZXQgc3RhdHVzQmFySXRl
bXMoKQogICAgIHsKICAgICAgICAgdmFyIHN0YXR1c0Jhckl0ZW1zID0gW3RoaXMuZW5hYmxlVG9n
Z2xlQnV0dG9uLmVsZW1lbnQsIHRoaXMucmVjb3JkQnV0dG9uLmVsZW1lbnQsIHRoaXMuY2xlYXJS
ZXN1bHRzQnV0dG9uLmVsZW1lbnQsIHRoaXMucHJvZmlsZVZpZXdTdGF0dXNCYXJJdGVtc0NvbnRh
aW5lcl07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jl
c291cmNlVHJlZU1vZGVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9S
ZXNvdXJjZVRyZWVNb2RlbC5qcwppbmRleCAzNjE2NTcxNGQ2YzU5YWRiYzgzZDU2ZTRiMTkyMzhj
ODE2NzRiOWFjLi5jYTI1Yzk1OWY1NTAyNGY1NjBjYTJjMmFiNDBjZmFlZjY2NzljNGEzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlVHJlZU1v
ZGVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VU
cmVlTW9kZWwuanMKQEAgLTg5LDYgKzg5LDExIEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVN
b2RlbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2NhY2hlZFJlc291cmNlc1Byb2Nlc3Nl
ZCA9IHRydWU7CiAgICAgfSwKIAorICAgIGNhY2hlZFJlc291cmNlc0xvYWRlZDogZnVuY3Rpb24o
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2NhY2hlZFJlc291cmNlc1Byb2Nlc3NlZDsK
KyAgICB9LAorCiAgICAgX2Rpc3BhdGNoSW5zcGVjdGVkVVJMQ2hhbmdlZDogZnVuY3Rpb24oKQog
ICAgIHsKICAgICAgICAgSW5zcGVjdG9yRnJvbnRlbmRIb3N0Lmluc3BlY3RlZFVSTENoYW5nZWQo
V2ViSW5zcGVjdG9yLmluc3BlY3RlZFBhZ2VVUkwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qcyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanMKaW5kZXggODVkM2MyMjI2Y2Y3
NGNiNWUxN2QyYTZmZDVkYzM1YmM1YzE4MGZiYy4uYjJhNmEyYjRkN2RmM2QyZDNiMDliYmNmYzBi
Y2Y1NjA3ZTUxN2YwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9SZXNvdXJjZXNQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1Jlc291cmNlc1BhbmVsLmpzCkBAIC05NiwxNCArOTYsMTEgQEAgV2ViSW5zcGVjdG9y
LlJlc291cmNlc1BhbmVsID0gZnVuY3Rpb24oZGF0YWJhc2UpCiAgICAgV2ViSW5zcGVjdG9yLnJl
c291cmNlVHJlZU1vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlJlc291cmNlVHJl
ZU1vZGVsLkV2ZW50VHlwZXMuT25Mb2FkLCB0aGlzLl9vbkxvYWRFdmVudEZpcmVkLCB0aGlzKTsK
ICAgICBXZWJJbnNwZWN0b3IucmVzb3VyY2VUcmVlTW9kZWwuYWRkRXZlbnRMaXN0ZW5lcihXZWJJ
bnNwZWN0b3IuUmVzb3VyY2VUcmVlTW9kZWwuRXZlbnRUeXBlcy5DYWNoZWRSZXNvdXJjZXNMb2Fk
ZWQsIHRoaXMuX2NhY2hlZFJlc291cmNlc0xvYWRlZCwgdGhpcyk7CiAgICAgV2ViSW5zcGVjdG9y
LnJlc291cmNlVHJlZU1vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlJlc291cmNl
VHJlZU1vZGVsLkV2ZW50VHlwZXMuV2lsbExvYWRDYWNoZWRSZXNvdXJjZXMsIHRoaXMuX3Jlc2V0
V2l0aEZyYW1lcywgdGhpcyk7CisgICAgaWYgKFdlYkluc3BlY3Rvci5yZXNvdXJjZVRyZWVNb2Rl
bC5jYWNoZWRSZXNvdXJjZXNMb2FkZWQoKSkKKyAgICAgICAgdGhpcy5fY2FjaGVkUmVzb3VyY2Vz
TG9hZGVkKCk7CiB9CiAKIFdlYkluc3BlY3Rvci5SZXNvdXJjZXNQYW5lbC5wcm90b3R5cGUgPSB7
Ci0gICAgZ2V0IHRvb2xiYXJJdGVtTGFiZWwoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIFdlYklu
c3BlY3Rvci5VSVN0cmluZygiUmVzb3VyY2VzIik7Ci0gICAgfSwKLQogICAgIGdldCBzdGF0dXNC
YXJJdGVtcygpCiAgICAgewogICAgICAgICByZXR1cm4gW3RoaXMuc3RvcmFnZVZpZXdTdGF0dXNC
YXJJdGVtc0NvbnRhaW5lcl07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvU2NyaXB0c1BhbmVsLmpzCmluZGV4IGMwMDNmOWNmOGIyZWFlN2RiMjA2MzYxMmRiNDU2
YjljMmYxNGU2ZjguLjRmNDQ3YjA5ZmFmZjc3NTAyM2FlZTlhYTIwYWMxNGZmYTUyZWZjMjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVs
LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVs
LmpzCkBAIC0xODksMTEgKzE4OSw2IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwuUGF1c2VP
bkV4Y2VwdGlvbnNTdGF0ZSA9IHsKIH07CiAKIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJv
dG90eXBlID0gewotICAgIGdldCB0b29sYmFySXRlbUxhYmVsKCkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNvdXJjZXMiKTsKLSAgICB9LAotCiAgICAgZ2V0
IHN0YXR1c0Jhckl0ZW1zKCkKICAgICB7CiAgICAgICAgIHJldHVybiBbdGhpcy5lbmFibGVUb2dn
bGVCdXR0b24uZWxlbWVudCwgdGhpcy5fcGF1c2VPbkV4Y2VwdGlvbkJ1dHRvbi5lbGVtZW50LCB0
aGlzLl90b2dnbGVGb3JtYXRTb3VyY2VCdXR0b24uZWxlbWVudCwgdGhpcy5fc2NyaXB0Vmlld1N0
YXR1c0Jhckl0ZW1zQ29udGFpbmVyXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvU3R5bGVzU2lkZWJhclBhbmUuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL1N0eWxlc1NpZGViYXJQYW5lLmpzCmluZGV4IDI4NjgxZjBjZTg5N2Ux
YWYzY2IyY2E0MGZkZmJmMGMxNDFlZmQ4N2IuLjQyYWE1OTNlOGU0YmQ3OGU2NTliYmRmYzIxMmM1
ZTM1YTg1OGNmMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvU3R5bGVzU2lkZWJhclBhbmUuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9TdHlsZXNTaWRlYmFyUGFuZS5qcwpAQCAtMTMzMiwxMiArMTMzMiwxMiBAQCBXZWJJ
bnNwZWN0b3IuU3R5bGVQcm9wZXJ0aWVzU2VjdGlvbi5wcm90b3R5cGUgPSB7CiAgICAgICAgICAg
ICB0aGlzLnJ1bGUgPSBuZXdSdWxlOwogICAgICAgICAgICAgdGhpcy5zdHlsZVJ1bGUgPSB7IHNl
Y3Rpb246IHRoaXMsIHN0eWxlOiBuZXdSdWxlLnN0eWxlLCBzZWxlY3RvclRleHQ6IG5ld1J1bGUu
c2VsZWN0b3JUZXh0LCBtZWRpYTogbmV3UnVsZS5tZWRpYSwgc291cmNlVVJMOiBuZXdSdWxlLnNv
dXJjZVVSTCwgcnVsZTogbmV3UnVsZSB9OwogCi0gICAgICAgICAgICB0aGlzLnBhbmUudXBkYXRl
KCk7CisgICAgICAgICAgICB0aGlzLl9wYXJlbnRQYW5lLnVwZGF0ZSgpOwogCiAgICAgICAgICAg
ICB0aGlzLl9tb3ZlRWRpdG9yRnJvbVNlbGVjdG9yKG1vdmVEaXJlY3Rpb24pOwogICAgICAgICB9
CiAKLSAgICAgICAgdmFyIHNlbGVjdGVkTm9kZSA9IFdlYkluc3BlY3Rvci5wYW5lbHMuZWxlbWVu
dHMuc2VsZWN0ZWRET01Ob2RlKCk7CisgICAgICAgIHZhciBzZWxlY3RlZE5vZGUgPSB0aGlzLl9w
YXJlbnRQYW5lLm5vZGU7CiAgICAgICAgIFdlYkluc3BlY3Rvci5jc3NNb2RlbC5zZXRSdWxlU2Vs
ZWN0b3IodGhpcy5ydWxlLmlkLCBzZWxlY3RlZE5vZGUgPyBzZWxlY3RlZE5vZGUuaWQgOiAwLCBu
ZXdDb250ZW50LCBzdWNjZXNzQ2FsbGJhY2suYmluZCh0aGlzKSwgdGhpcy5fbW92ZUVkaXRvckZy
b21TZWxlY3Rvci5iaW5kKHRoaXMsIG1vdmVEaXJlY3Rpb24pKTsKICAgICB9LAogCkBAIC0xNzI5
LDggKzE3MjksOCBAQCBXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3Rv
dHlwZSA9IHsKICAgICAgICAgICAgICAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQoZG9jdW1lbnQu
Y3JlYXRlVGV4dE5vZGUoInVybCgiKSk7CiAgICAgICAgICAgICAgICAgaWYgKHNlbGYuX3N0eWxl
UnVsZS5zb3VyY2VVUkwpCiAgICAgICAgICAgICAgICAgICAgIGhyZWZVcmwgPSBXZWJJbnNwZWN0
b3IuY29tcGxldGVVUkwoc2VsZi5fc3R5bGVSdWxlLnNvdXJjZVVSTCwgaHJlZlVybCk7Ci0gICAg
ICAgICAgICAgICAgZWxzZSBpZiAoV2ViSW5zcGVjdG9yLnBhbmVscy5lbGVtZW50cy5zZWxlY3Rl
ZERPTU5vZGUoKSkKLSAgICAgICAgICAgICAgICAgICAgaHJlZlVybCA9IFdlYkluc3BlY3Rvci5y
ZXNvdXJjZVVSTEZvclJlbGF0ZWROb2RlKFdlYkluc3BlY3Rvci5wYW5lbHMuZWxlbWVudHMuc2Vs
ZWN0ZWRET01Ob2RlKCksIGhyZWZVcmwpOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMu
X3BhcmVudFBhbmUubm9kZSkKKyAgICAgICAgICAgICAgICAgICAgaHJlZlVybCA9IFdlYkluc3Bl
Y3Rvci5yZXNvdXJjZVVSTEZvclJlbGF0ZWROb2RlKHRoaXMuX3BhcmVudFBhbmUubm9kZSwgaHJl
ZlVybCk7CiAgICAgICAgICAgICAgICAgdmFyIGhhc1Jlc291cmNlID0gISFXZWJJbnNwZWN0b3Iu
cmVzb3VyY2VGb3JVUkwoaHJlZlVybCk7CiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IFdlYklu
c3BlY3Rvci5saW5raWZ5VVJMQXNOb2RlKCkgc2hvdWxkIHJlYWxseSB1c2UgYmFzZVVSSS4KICAg
ICAgICAgICAgICAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQoV2ViSW5zcGVjdG9yLmxpbmtpZnlV
UkxBc05vZGUoaHJlZlVybCwgdXJsLCB1bmRlZmluZWQsICFoYXNSZXNvdXJjZSkpOwpAQCAtMjQz
OSw3ICsyNDM5LDYgQEAgV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydHlUcmVlRWxlbWVudC5wcm90
b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgdmFyIHNlY3Rpb24gPSB0
aGlzLnRyZWVPdXRsaW5lLnNlY3Rpb247Ci0gICAgICAgIHZhciBlbGVtZW50c1BhbmVsID0gV2Vi
SW5zcGVjdG9yLnBhbmVscy5lbGVtZW50czsKICAgICAgICAgc3R5bGVUZXh0ID0gc3R5bGVUZXh0
LnJlcGxhY2UoL1xzL2csICIgIikudHJpbSgpOyAvLyBSZXBsYWNlICZuYnNwOyB3aXRoIHdoaXRl
c3BhY2UuCiAgICAgICAgIHZhciBzdHlsZVRleHRMZW5ndGggPSBzdHlsZVRleHQubGVuZ3RoOwog
ICAgICAgICBpZiAoIXN0eWxlVGV4dExlbmd0aCAmJiB1cGRhdGVJbnRlcmZhY2UgJiYgIWlzUmV2
ZXJ0ICYmIHRoaXMuX25ld1Byb3BlcnR5ICYmICF0aGlzLl9oYXNCZWVuTW9kaWZpZWRJbmNyZW1l
bnRhbGx5KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvVGltZWxpbmVQYW5lbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
VGltZWxpbmVQYW5lbC5qcwppbmRleCBiZjA5YmNmOTRlODE4ZWEwOTVkNTZjNWFjNDJkMzBkYTg5
YjJmZTkzLi5iYzQ1ZjRiOTc1ZGVkNGE4YWEzNjE0YWIzY2MxNDVmZmUwOGFhZjBjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lUGFuZWwuanMK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZVBhbmVsLmpz
CkBAIC0xOTUsMTEgKzE5NSw2IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2NhbGN1bGF0b3I7CiAgICAgfSwKIAotICAgIGdl
dCB0b29sYmFySXRlbUxhYmVsKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIlRpbWVsaW5lIik7Ci0gICAgfSwKLQogICAgIGdldCBzdGF0dXNCYXJJdGVtcygp
CiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fc3RhdHVzQmFyQnV0dG9ucy5zZWxlY3QoImVs
ZW1lbnQiKS5jb25jYXQoWwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9Ub29sYmFyLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9U
b29sYmFyLmpzCmluZGV4IDM3MmZmNjdhY2U0ODVkOTNkY2Y2OTNmOTY1YmYwZmQ5NDZkZTZhMjgu
LmY1ZmM1MzkxYWEwYTQ2ZDBmOTQ1MmUzYjQzZmE4NjU0ZTc3MzcwZWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVG9vbGJhci5qcworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Rvb2xiYXIuanMKQEAgLTU5LDEzICs1OSw1NyBA
QCBXZWJJbnNwZWN0b3IuVG9vbGJhci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX3VwZGF0
ZURyb3Bkb3duQnV0dG9uQW5kSGlkZURyb3Bkb3duKCk7CiAgICAgfSwKIAotICAgIGFkZFBhbmVs
OiBmdW5jdGlvbihwYW5lbCkKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5Q
YW5lbERlc2NyaXB0b3J9IHBhbmVsRGVzY3JpcHRvcgorICAgICAqLworICAgIGFkZFBhbmVsOiBm
dW5jdGlvbihwYW5lbERlc2NyaXB0b3IpCiAgICAgewotICAgICAgICB0aGlzLmVsZW1lbnQuYXBw
ZW5kQ2hpbGQocGFuZWwudG9vbGJhckl0ZW0pOworICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5k
Q2hpbGQodGhpcy5fY3JlYXRlUGFuZWxUb29sYmFySXRlbShwYW5lbERlc2NyaXB0b3IpKTsKICAg
ICAgICAgdGhpcy5yZXNpemUoKTsKICAgICB9LAogCiAgICAgLyoqCisgICAgICogQHBhcmFtIHtX
ZWJJbnNwZWN0b3IuUGFuZWxEZXNjcmlwdG9yfSBwYW5lbERlc2NyaXB0b3IKKyAgICAgKiBAcmV0
dXJuIHtFbGVtZW50fQorICAgICAqLworICAgIF9jcmVhdGVQYW5lbFRvb2xiYXJJdGVtOiBmdW5j
dGlvbihwYW5lbERlc2NyaXB0b3IpCisgICAgeworICAgICAgICB2YXIgdG9vbGJhckl0ZW0gPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJidXR0b24iKTsKKyAgICAgICAgdG9vbGJhckl0ZW0uY2xh
c3NOYW1lID0gInRvb2xiYXItaXRlbSB0b2dnbGVhYmxlIjsKKyAgICAgICAgdG9vbGJhckl0ZW0u
cGFuZWxEZXNjcmlwdG9yID0gcGFuZWxEZXNjcmlwdG9yOworICAgICAgICB0b29sYmFySXRlbS5h
ZGRTdHlsZUNsYXNzKHBhbmVsRGVzY3JpcHRvci5uYW1lKCkpOworCisgICAgICAgIGZ1bmN0aW9u
IG9uVG9vbGJhckl0ZW1DbGlja2VkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHRoaXMu
X2xhc3RTZWxlY3RlZEl0ZW0pCisgICAgICAgICAgICAgICAgdGhpcy5fbGFzdFNlbGVjdGVkSXRl
bS5yZW1vdmVTdHlsZUNsYXNzKCJ0b2dnbGVkLW9uIik7CisgICAgICAgICAgICB0aGlzLl91cGRh
dGVEcm9wZG93bkJ1dHRvbkFuZEhpZGVEcm9wZG93bigpOworICAgICAgICAgICAgV2ViSW5zcGVj
dG9yLmluc3BlY3RvclZpZXcuc2V0Q3VycmVudFBhbmVsKHBhbmVsRGVzY3JpcHRvci5wYW5lbCgp
KTsKKyAgICAgICAgICAgIHRoaXMuX2xhc3RTZWxlY3RlZEl0ZW0gPSB0b29sYmFySXRlbTsKKyAg
ICAgICAgICAgIHRoaXMuX2xhc3RTZWxlY3RlZEl0ZW0uYWRkU3R5bGVDbGFzcygidG9nZ2xlZC1v
biIpOworICAgICAgICB9CisgICAgICAgIHRvb2xiYXJJdGVtLmFkZEV2ZW50TGlzdGVuZXIoImNs
aWNrIiwgb25Ub29sYmFySXRlbUNsaWNrZWQuYmluZCh0aGlzKSwgZmFsc2UpOworCisgICAgICAg
IGZ1bmN0aW9uIHBhbmVsU2VsZWN0ZWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoV2Vi
SW5zcGVjdG9yLmluc3BlY3RvclZpZXcuY3VycmVudFBhbmVsKCkgJiYgcGFuZWxEZXNjcmlwdG9y
Lm5hbWUoKSA9PT0gV2ViSW5zcGVjdG9yLmluc3BlY3RvclZpZXcuY3VycmVudFBhbmVsKCkubmFt
ZSkKKyAgICAgICAgICAgICAgICB0b29sYmFySXRlbS5hZGRTdHlsZUNsYXNzKCJ0b2dnbGVkLW9u
Iik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdG9vbGJhckl0ZW0ucmVtb3Zl
U3R5bGVDbGFzcygidG9nZ2xlZC1vbiIpOworICAgICAgICB9CisgICAgICAgIFdlYkluc3BlY3Rv
ci5pbnNwZWN0b3JWaWV3LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkluc3BlY3RvclZp
ZXcuRXZlbnRzLlBhbmVsU2VsZWN0ZWQsIHBhbmVsU2VsZWN0ZWQpOworCisgICAgICAgIHZhciBp
Y29uRWxlbWVudCA9IHRvb2xiYXJJdGVtLmNyZWF0ZUNoaWxkKCJkaXYiLCAidG9vbGJhci1pY29u
Iik7CisgICAgICAgIHRvb2xiYXJJdGVtLmNyZWF0ZUNoaWxkKCJkaXYiLCAidG9vbGJhci1sYWJl
bCIpLnRleHRDb250ZW50ID0gcGFuZWxEZXNjcmlwdG9yLnRpdGxlKCk7CisgICAgICAgIGlmIChw
YW5lbERlc2NyaXB0b3IuaWNvblVSTCgpKSB7CisgICAgICAgICAgICBpY29uRWxlbWVudC5hZGRT
dHlsZUNsYXNzKCJjdXN0b20tdG9vbGJhci1pY29uIik7CisgICAgICAgICAgICBpY29uRWxlbWVu
dC5zdHlsZS5iYWNrZ3JvdW5kSW1hZ2UgPSAidXJsKCIgKyBwYW5lbERlc2NyaXB0b3IuaWNvblVS
TCgpICsgIikiOworICAgICAgICB9CisgICAgICAgIHBhbmVsU2VsZWN0ZWQoKTsKKyAgICAgICAg
cmV0dXJuIHRvb2xiYXJJdGVtOworICAgIH0sCisKKyAgICAvKioKICAgICAgKiBAcmV0dXJuIHti
b29sZWFufQogICAgICAqLwogICAgIF90b29sYmFyRHJhZ1N0YXJ0OiBmdW5jdGlvbihldmVudCkK
QEAgLTEyMiw3ICsxNjYsNyBAQCBXZWJJbnNwZWN0b3IuVG9vbGJhci5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIGlmICghdGhpcy5fZHJvcGRvd24pIHsKICAgICAgICAgICAgIGlmICghdmlzaWJsZSkK
ICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB0aGlzLl9kcm9wZG93biA9IG5l
dyBXZWJJbnNwZWN0b3IuVG9vbGJhckRyb3Bkb3duKCk7CisgICAgICAgICAgICB0aGlzLl9kcm9w
ZG93biA9IG5ldyBXZWJJbnNwZWN0b3IuVG9vbGJhckRyb3Bkb3duKHRoaXMpOwogICAgICAgICB9
CiAgICAgICAgIGlmICh2aXNpYmxlKQogICAgICAgICAgICAgdGhpcy5fZHJvcGRvd24uc2hvdygp
OwpAQCAtMTQ3LDM2ICsxOTEsMTMgQEAgV2ViSW5zcGVjdG9yLlRvb2xiYXIucHJvdG90eXBlID0g
ewogICAgIH0KIH0KIAotV2ViSW5zcGVjdG9yLlRvb2xiYXIuY3JlYXRlUGFuZWxUb29sYmFySXRl
bSA9IGZ1bmN0aW9uKHBhbmVsKQotewotICAgIHZhciB0b29sYmFySXRlbSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImJ1dHRvbiIpOwotICAgIHRvb2xiYXJJdGVtLmNsYXNzTmFtZSA9ICJ0b29s
YmFyLWl0ZW0gdG9nZ2xlYWJsZSI7Ci0gICAgdG9vbGJhckl0ZW0ucGFuZWwgPSBwYW5lbDsKLSAg
ICB0b29sYmFySXRlbS5hZGRTdHlsZUNsYXNzKHBhbmVsLl9wYW5lbE5hbWUpOwotICAgIGZ1bmN0
aW9uIG9uVG9vbGJhckl0ZW1DbGlja2VkKCkKLSAgICB7Ci0gICAgICAgIFdlYkluc3BlY3Rvci50
b29sYmFyLl91cGRhdGVEcm9wZG93bkJ1dHRvbkFuZEhpZGVEcm9wZG93bigpOwotICAgICAgICBX
ZWJJbnNwZWN0b3IuaW5zcGVjdG9yVmlldy5zZXRDdXJyZW50UGFuZWwocGFuZWwpOwotICAgIH0K
LSAgICB0b29sYmFySXRlbS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIG9uVG9vbGJhckl0ZW1D
bGlja2VkLCBmYWxzZSk7Ci0KLSAgICB2YXIgaWNvbkVsZW1lbnQgPSB0b29sYmFySXRlbS5jcmVh
dGVDaGlsZCgiZGl2IiwgInRvb2xiYXItaWNvbiIpOwotCi0gICAgaWYgKCJ0b29sYmFySXRlbUxh
YmVsIiBpbiBwYW5lbCkKLSAgICAgICAgdG9vbGJhckl0ZW0uY3JlYXRlQ2hpbGQoImRpdiIsICJ0
b29sYmFyLWxhYmVsIikudGV4dENvbnRlbnQgPSBwYW5lbC50b29sYmFySXRlbUxhYmVsOwotCi0g
ICAgaWYgKHBhbmVsID09PSBXZWJJbnNwZWN0b3IuaW5zcGVjdG9yVmlldy5jdXJyZW50UGFuZWwo
KSkKLSAgICAgICAgdG9vbGJhckl0ZW0uYWRkU3R5bGVDbGFzcygidG9nZ2xlZC1vbiIpOwotCi0g
ICAgcmV0dXJuIHRvb2xiYXJJdGVtOwotfQotCiAvKioKICAqIEBjb25zdHJ1Y3RvcgorICogQHBh
cmFtIHtXZWJJbnNwZWN0b3IuVG9vbGJhcn0gdG9vbGJhcgogICovCi1XZWJJbnNwZWN0b3IuVG9v
bGJhckRyb3Bkb3duID0gZnVuY3Rpb24oKQorV2ViSW5zcGVjdG9yLlRvb2xiYXJEcm9wZG93biA9
IGZ1bmN0aW9uKHRvb2xiYXIpCiB7Ci0gICAgdGhpcy5fdG9vbGJhciA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJ0b29sYmFyIik7CisgICAgdGhpcy5fdG9vbGJhciA9IHRvb2xiYXI7CiAgICAg
dGhpcy5fYXJyb3cgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidG9vbGJhci1kcm9wZG93bi1h
cnJvdyIpOwogICAgIHRoaXMuZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIp
OwogICAgIHRoaXMuZWxlbWVudC5pZCA9ICJ0b29sYmFyLWRyb3Bkb3duIjsKQEAgLTE5OCw3ICsy
MTksNyBAQCBXZWJJbnNwZWN0b3IuVG9vbGJhckRyb3Bkb3duLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgdGhpcy5lbGVtZW50LnN0eWxlLnRvcCA9IHRvcCArICJweCI7CiAgICAgICAgIHRoaXMuZWxl
bWVudC5zdHlsZS5sZWZ0ID0gdGhpcy5fYXJyb3cudG90YWxPZmZzZXRMZWZ0KCkgKyAicHgiOwog
ICAgICAgICB0aGlzLl9jb250ZW50RWxlbWVudC5zdHlsZS5tYXhIZWlnaHQgPSB3aW5kb3cuaW5u
ZXJIZWlnaHQgLSB0b3AgLSAyMCArICJweCI7Ci0gICAgICAgIHRoaXMuX3Rvb2xiYXIuYXBwZW5k
Q2hpbGQodGhpcy5lbGVtZW50KTsKKyAgICAgICAgdGhpcy5fdG9vbGJhci5lbGVtZW50LmFwcGVu
ZENoaWxkKHRoaXMuZWxlbWVudCk7CiAgICAgfSwKIAogICAgIGhpZGU6IGZ1bmN0aW9uKCkKQEAg
LTIxNywxMSArMjM4LDExIEBAIFdlYkluc3BlY3Rvci5Ub29sYmFyRHJvcGRvd24ucHJvdG90eXBl
ID0gewogCiAgICAgX3BvcHVsYXRlOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICB2YXIgdG9v
bGJhckl0ZW1zID0gdGhpcy5fdG9vbGJhci5xdWVyeVNlbGVjdG9yQWxsKCIudG9vbGJhci1pdGVt
LnRvZ2dsZWFibGUiKTsKKyAgICAgICAgdmFyIHRvb2xiYXJJdGVtcyA9IHRoaXMuX3Rvb2xiYXIu
ZWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCIudG9vbGJhci1pdGVtLnRvZ2dsZWFibGUiKTsKIAog
ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRvb2xiYXJJdGVtcy5sZW5ndGg7ICsraSkgewog
ICAgICAgICAgICAgaWYgKHRvb2xiYXJJdGVtc1tpXS5vZmZzZXRUb3AgPiAwKQotICAgICAgICAg
ICAgICAgIHRoaXMuX2NvbnRlbnRFbGVtZW50LmFwcGVuZENoaWxkKFdlYkluc3BlY3Rvci5Ub29s
YmFyLmNyZWF0ZVBhbmVsVG9vbGJhckl0ZW0odG9vbGJhckl0ZW1zW2ldLnBhbmVsKSk7CisgICAg
ICAgICAgICAgICAgdGhpcy5fY29udGVudEVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fdG9vbGJh
ci5fY3JlYXRlUGFuZWxUb29sYmFySXRlbSh0b29sYmFySXRlbXNbaV0ucGFuZWxEZXNjcmlwdG9y
KSk7CiAgICAgICAgIH0KICAgICB9LAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5jc3MgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL2luc3BlY3Rvci5jc3MKaW5kZXggZWE1ZWVkYzQ0ZTUyZjQ1NmZlNjA0Y2Q4MTkz
MTQ5MzZjMmM1NjU5Zi4uZjY1MjdlMjgwMDNjNjFiMmI5NjA0NzA5YjJhZTZmNjY4OWUwNDk3MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3Iu
Y3NzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNz
cwpAQCAtMTE4LDYgKzExOCwxMCBAQCBib2R5LmNvbXBhY3QuaW5hY3RpdmUgI3Rvb2xiYXIgewog
ICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChJbWFnZXMvdG9vbGJhckljb25zU21hbGwucG5nKTsK
IH0KIAorLnRvb2xiYXItc21hbGwgLnRvb2xiYXItaWNvbi5jdXN0b20tdG9vbGJhci1pY29uIHsK
KyAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uLXg6IC0zMnB4OworfQorCiAudG9vbGJhci1pdGVtOmFj
dGl2ZSAudG9vbGJhci1pY29uIHsKICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uLXk6IDMycHg7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rv
ci5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCmlu
ZGV4IGEzOTI0NmJiODUwOTEwOGY1MWM2YTE3NWI1MjkxNjQ2YjM5YjY2ZTUuLmVhODQ1ZGY2NTRh
NGNhZTZmMjQ0YTdlOGZkYjU5YWFkNWNiMzFhNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCkBAIC0yOSw3ICsyOSw3IEBACiAgKi8KIAog
dmFyIFdlYkluc3BlY3RvciA9IHsKLSAgICBfY3JlYXRlUGFuZWxzOiBmdW5jdGlvbigpCisgICAg
X3BhbmVsRGVzY3JpcHRvcnM6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHRoaXMucGFuZWxz
ID0ge307CiAgICAgICAgIFdlYkluc3BlY3Rvci5pbnNwZWN0b3JWaWV3ID0gbmV3IFdlYkluc3Bl
Y3Rvci5JbnNwZWN0b3JWaWV3KCk7CkBAIC0zNywzNSArMzcsMzYgQEAgdmFyIFdlYkluc3BlY3Rv
ciA9IHsKICAgICAgICAgV2ViSW5zcGVjdG9yLmluc3BlY3RvclZpZXcuc2hvdyhwYXJlbnRFbGVt
ZW50KTsKICAgICAgICAgV2ViSW5zcGVjdG9yLmluc3BlY3RvclZpZXcuYWRkRXZlbnRMaXN0ZW5l
cihXZWJJbnNwZWN0b3IuSW5zcGVjdG9yVmlldy5FdmVudHMuUGFuZWxTZWxlY3RlZCwgdGhpcy5f
cGFuZWxTZWxlY3RlZCwgdGhpcyk7CiAKKyAgICAgICAgdmFyIGVsZW1lbnRzID0gbmV3IFdlYklu
c3BlY3Rvci5QYW5lbERlc2NyaXB0b3IoImVsZW1lbnRzIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJFbGVtZW50cyIpLCBXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbC5iaW5kKG51bGwsIHRoaXMu
X25vZGVTZWFyY2hCdXR0b24pLCB0cnVlKTsKKyAgICAgICAgdmFyIHJlc291cmNlcyA9IG5ldyBX
ZWJJbnNwZWN0b3IuUGFuZWxEZXNjcmlwdG9yKCJyZXNvdXJjZXMiLCBXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIlJlc291cmNlcyIpLCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VzUGFuZWwsIHRydWUpOwor
ICAgICAgICB2YXIgbmV0d29yayA9IG5ldyBXZWJJbnNwZWN0b3IuUGFuZWxEZXNjcmlwdG9yKCJu
ZXR3b3JrIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJOZXR3b3JrIiksIFdlYkluc3BlY3Rvci5O
ZXR3b3JrUGFuZWwpOworICAgICAgICB2YXIgc2NyaXB0cyA9IG5ldyBXZWJJbnNwZWN0b3IuUGFu
ZWxEZXNjcmlwdG9yKCJzY3JpcHRzIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTb3VyY2VzIiks
IFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwpOworICAgICAgICB2YXIgdGltZWxpbmUgPSBuZXcg
V2ViSW5zcGVjdG9yLlBhbmVsRGVzY3JpcHRvcigidGltZWxpbmUiLCBXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIlRpbWVsaW5lIiksIFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLCB0cnVlKTsKKyAg
ICAgICAgdmFyIHByb2ZpbGVzID0gbmV3IFdlYkluc3BlY3Rvci5QYW5lbERlc2NyaXB0b3IoInBy
b2ZpbGVzIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJQcm9maWxlcyIpLCBXZWJJbnNwZWN0b3Iu
UHJvZmlsZXNQYW5lbCk7CisgICAgICAgIHZhciBhdWRpdHMgPSBuZXcgV2ViSW5zcGVjdG9yLlBh
bmVsRGVzY3JpcHRvcigiYXVkaXRzIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJBdWRpdHMiKSwg
V2ViSW5zcGVjdG9yLkF1ZGl0c1BhbmVsLCB0cnVlKTsKKyAgICAgICAgdmFyIGNvbnNvbGUgPSBu
ZXcgV2ViSW5zcGVjdG9yLlBhbmVsRGVzY3JpcHRvcigiY29uc29sZSIsIFdlYkluc3BlY3Rvci5V
SVN0cmluZygiQ29uc29sZSIpLCBXZWJJbnNwZWN0b3IuQ29uc29sZVBhbmVsLCB0cnVlKTsKKyAg
ICAgICAgdmFyIGFsbERlc2NyaXB0b3JzID0gW2VsZW1lbnRzLCByZXNvdXJjZXMsIG5ldHdvcmss
IHNjcmlwdHMsIHRpbWVsaW5lLCBwcm9maWxlcywgYXVkaXRzLCBjb25zb2xlXTsKKworICAgICAg
ICB2YXIgcGFuZWxEZXNjcmlwdG9ycyA9IFtdOwogICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLldv
cmtlck1hbmFnZXIuaXNXb3JrZXJGcm9udGVuZCgpKSB7Ci0gICAgICAgICAgICB0aGlzLnBhbmVs
cy5zY3JpcHRzID0gbmV3IFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwoKTsKLSAgICAgICAgICAg
IHRoaXMucGFuZWxzLnRpbWVsaW5lID0gbmV3IFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsKCk7
Ci0gICAgICAgICAgICB0aGlzLnBhbmVscy5wcm9maWxlcyA9IG5ldyBXZWJJbnNwZWN0b3IuUHJv
ZmlsZXNQYW5lbCgpOwotICAgICAgICAgICAgdGhpcy5wYW5lbHMuY29uc29sZSA9IG5ldyBXZWJJ
bnNwZWN0b3IuQ29uc29sZVBhbmVsKCk7Ci0gICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICBwYW5lbERlc2NyaXB0b3JzLnB1c2goc2NyaXB0cyk7CisgICAgICAgICAgICBwYW5lbERlc2Ny
aXB0b3JzLnB1c2godGltZWxpbmUpOworICAgICAgICAgICAgcGFuZWxEZXNjcmlwdG9ycy5wdXNo
KHByb2ZpbGVzKTsKKyAgICAgICAgICAgIHBhbmVsRGVzY3JpcHRvcnMucHVzaChjb25zb2xlKTsK
KyAgICAgICAgICAgIHJldHVybiBwYW5lbERlc2NyaXB0b3JzOwogICAgICAgICB9CisgICAgICAg
IHZhciBhbGxEZXNjcmlwdG9ycyA9IFtlbGVtZW50cywgcmVzb3VyY2VzLCBuZXR3b3JrLCBzY3Jp
cHRzLCB0aW1lbGluZSwgcHJvZmlsZXMsIGF1ZGl0cywgY29uc29sZV07CiAgICAgICAgIHZhciBo
aWRkZW5QYW5lbHMgPSAoSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmhpZGRlblBhbmVscygpIHx8ICIi
KS5zcGxpdCgnLCcpOwotICAgICAgICBpZiAoaGlkZGVuUGFuZWxzLmluZGV4T2YoImVsZW1lbnRz
IikgPT09IC0xKQotICAgICAgICAgICAgdGhpcy5wYW5lbHMuZWxlbWVudHMgPSBuZXcgV2ViSW5z
cGVjdG9yLkVsZW1lbnRzUGFuZWwoKTsKLSAgICAgICAgaWYgKGhpZGRlblBhbmVscy5pbmRleE9m
KCJyZXNvdXJjZXMiKSA9PT0gLTEpCi0gICAgICAgICAgICB0aGlzLnBhbmVscy5yZXNvdXJjZXMg
PSBuZXcgV2ViSW5zcGVjdG9yLlJlc291cmNlc1BhbmVsKCk7Ci0gICAgICAgIGlmIChoaWRkZW5Q
YW5lbHMuaW5kZXhPZigibmV0d29yayIpID09PSAtMSkKLSAgICAgICAgICAgIHRoaXMucGFuZWxz
Lm5ldHdvcmsgPSBuZXcgV2ViSW5zcGVjdG9yLk5ldHdvcmtQYW5lbCgpOwotICAgICAgICBpZiAo
aGlkZGVuUGFuZWxzLmluZGV4T2YoInNjcmlwdHMiKSA9PT0gLTEpCi0gICAgICAgICAgICB0aGlz
LnBhbmVscy5zY3JpcHRzID0gbmV3IFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwoKTsKLSAgICAg
ICAgaWYgKGhpZGRlblBhbmVscy5pbmRleE9mKCJ0aW1lbGluZSIpID09PSAtMSkKLSAgICAgICAg
ICAgIHRoaXMucGFuZWxzLnRpbWVsaW5lID0gbmV3IFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVs
KCk7Ci0gICAgICAgIGlmIChoaWRkZW5QYW5lbHMuaW5kZXhPZigicHJvZmlsZXMiKSA9PT0gLTEp
Ci0gICAgICAgICAgICB0aGlzLnBhbmVscy5wcm9maWxlcyA9IG5ldyBXZWJJbnNwZWN0b3IuUHJv
ZmlsZXNQYW5lbCgpOwotICAgICAgICBpZiAoaGlkZGVuUGFuZWxzLmluZGV4T2YoImF1ZGl0cyIp
ID09PSAtMSkKLSAgICAgICAgICAgIHRoaXMucGFuZWxzLmF1ZGl0cyA9IG5ldyBXZWJJbnNwZWN0
b3IuQXVkaXRzUGFuZWwoKTsKLSAgICAgICAgaWYgKGhpZGRlblBhbmVscy5pbmRleE9mKCJjb25z
b2xlIikgPT09IC0xKQotICAgICAgICAgICAgdGhpcy5wYW5lbHMuY29uc29sZSA9IG5ldyBXZWJJ
bnNwZWN0b3IuQ29uc29sZVBhbmVsKCk7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYWxs
RGVzY3JpcHRvcnMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIGlmIChoaWRkZW5QYW5lbHMu
aW5kZXhPZihhbGxEZXNjcmlwdG9yc1tpXS5uYW1lKSA9PT0gLTEpCisgICAgICAgICAgICAgICAg
cGFuZWxEZXNjcmlwdG9ycy5wdXNoKGFsbERlc2NyaXB0b3JzW2ldKTsKKyAgICAgICAgfQorICAg
ICAgICByZXR1cm4gcGFuZWxEZXNjcmlwdG9yczsKICAgICB9LAogCiAgICAgX3BhbmVsU2VsZWN0
ZWQ6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIHRoaXMuX3RvZ2dsZUNvbnNvbGVCdXR0b24u
ZGlzYWJsZWQgPSBXZWJJbnNwZWN0b3IuaW5zcGVjdG9yVmlldy5jdXJyZW50UGFuZWwoKSA9PT0g
V2ViSW5zcGVjdG9yLnBhbmVscy5jb25zb2xlOworICAgICAgICB0aGlzLl90b2dnbGVDb25zb2xl
QnV0dG9uLmRpc2FibGVkID0gV2ViSW5zcGVjdG9yLmluc3BlY3RvclZpZXcuY3VycmVudFBhbmVs
KCkubmFtZSA9PT0gImNvbnNvbGUiOwogICAgIH0sCiAKICAgICBfY3JlYXRlR2xvYmFsU3RhdHVz
QmFySXRlbXM6IGZ1bmN0aW9uKCkKQEAgLTgzLDggKzg0LDExIEBAIHZhciBXZWJJbnNwZWN0b3Ig
PSB7CiAgICAgICAgIHRoaXMuX3RvZ2dsZUNvbnNvbGVCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcigi
Y2xpY2siLCB0aGlzLl90b2dnbGVDb25zb2xlQnV0dG9uQ2xpY2tlZC5iaW5kKHRoaXMpLCBmYWxz
ZSk7CiAgICAgICAgIG1haW5TdGF0dXNCYXIuaW5zZXJ0QmVmb3JlKHRoaXMuX3RvZ2dsZUNvbnNv
bGVCdXR0b24uZWxlbWVudCwgYm90dG9tU3RhdHVzQmFyQ29udGFpbmVyKTsKIAotICAgICAgICBp
ZiAodGhpcy5wYW5lbHMuZWxlbWVudHMpCi0gICAgICAgICAgICBtYWluU3RhdHVzQmFyLmluc2Vy
dEJlZm9yZSh0aGlzLnBhbmVscy5lbGVtZW50cy5ub2RlU2VhcmNoQnV0dG9uLmVsZW1lbnQsIGJv
dHRvbVN0YXR1c0JhckNvbnRhaW5lcik7CisgICAgICAgIGlmICghV2ViSW5zcGVjdG9yLldvcmtl
ck1hbmFnZXIuaXNXb3JrZXJGcm9udGVuZCgpKSB7CisgICAgICAgICAgICB0aGlzLl9ub2RlU2Vh
cmNoQnV0dG9uID0gbmV3IFdlYkluc3BlY3Rvci5TdGF0dXNCYXJCdXR0b24oV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJTZWxlY3QgYW4gZWxlbWVudCBpbiB0aGUgcGFnZSB0byBpbnNwZWN0IGl0LiIp
LCAibm9kZS1zZWFyY2gtc3RhdHVzLWJhci1pdGVtIik7CisgICAgICAgICAgICBtYWluU3RhdHVz
QmFyLmluc2VydEJlZm9yZSh0aGlzLl9ub2RlU2VhcmNoQnV0dG9uLmVsZW1lbnQsIGJvdHRvbVN0
YXR1c0JhckNvbnRhaW5lcik7CisgICAgICAgIH0KKwogICAgICAgICBtYWluU3RhdHVzQmFyLmFw
cGVuZENoaWxkKHRoaXMuc2V0dGluZ3NDb250cm9sbGVyLnN0YXR1c0Jhckl0ZW0pOwogICAgIH0s
CiAKQEAgLTQ5NiwxNCArNTAwLDE0IEBAIFdlYkluc3BlY3Rvci5fZG9Mb2FkZWREb25lV2l0aENh
cGFiaWxpdGllcyA9IGZ1bmN0aW9uKCkKIAogICAgIHRoaXMud29ya3NwYWNlID0gbmV3IFdlYklu
c3BlY3Rvci5Xb3Jrc3BhY2UoKTsKIAotICAgIHRoaXMuX2NyZWF0ZVBhbmVscygpOwogICAgIHRo
aXMuX2NyZWF0ZUdsb2JhbFN0YXR1c0Jhckl0ZW1zKCk7CiAKICAgICB0aGlzLnRvb2xiYXIgPSBu
ZXcgV2ViSW5zcGVjdG9yLlRvb2xiYXIoKTsKICAgICBXZWJJbnNwZWN0b3IuX2luc3RhbGxEb2Nr
VG9SaWdodCgpOwogCi0gICAgZm9yICh2YXIgcGFuZWxOYW1lIGluIHRoaXMucGFuZWxzKQotICAg
ICAgICB0aGlzLmFkZFBhbmVsKHRoaXMucGFuZWxzW3BhbmVsTmFtZV0pOworICAgIHZhciBwYW5l
bERlc2NyaXB0b3JzID0gdGhpcy5fcGFuZWxEZXNjcmlwdG9ycygpOworICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgcGFuZWxEZXNjcmlwdG9ycy5sZW5ndGg7ICsraSkKKyAgICAgICAgV2ViSW5zcGVj
dG9yLmluc3BlY3RvclZpZXcuYWRkUGFuZWwocGFuZWxEZXNjcmlwdG9yc1tpXSk7CiAKICAgICB0
aGlzLmFkZE1haW5FdmVudExpc3RlbmVycyhkb2N1bWVudCk7CiAKQEAgLTU2OSwxMSArNTczLDYg
QEAgV2ViSW5zcGVjdG9yLl9pbnN0YWxsRG9ja1RvUmlnaHQgPSBmdW5jdGlvbigpCiAgICAgfQog
fQogCi1XZWJJbnNwZWN0b3IuYWRkUGFuZWwgPSBmdW5jdGlvbihwYW5lbCkKLXsKLSAgICBXZWJJ
bnNwZWN0b3IuaW5zcGVjdG9yVmlldy5hZGRQYW5lbChwYW5lbCk7Ci19Ci0KIHZhciB3aW5kb3dM
b2FkZWQgPSBmdW5jdGlvbigpCiB7CiAgICAgdmFyIGxvY2FsaXplZFN0cmluZ3NVUkwgPSBJbnNw
ZWN0b3JGcm9udGVuZEhvc3QubG9jYWxpemVkU3RyaW5nc1VSTCgpOwpAQCAtNjY1LDcgKzY2NCw3
IEBAIFdlYkluc3BlY3Rvci5kb2N1bWVudENsaWNrID0gZnVuY3Rpb24oZXZlbnQpCiAgICAgICAg
IGlmIChwYXJzZWRVUkwgJiYgcGFyc2VkVVJMLnNjaGVtZSA9PT0gIndlYmtpdC1saW5rLWFjdGlv
biIpIHsKICAgICAgICAgICAgIGlmIChwYXJzZWRVUkwuaG9zdCA9PT0gInNob3ctcGFuZWwiKSB7
CiAgICAgICAgICAgICAgICAgdmFyIHBhbmVsID0gcGFyc2VkVVJMLnBhdGguc3Vic3RyaW5nKDEp
OwotICAgICAgICAgICAgICAgIGlmIChXZWJJbnNwZWN0b3IucGFuZWxzW3BhbmVsXSkKKyAgICAg
ICAgICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLnBhbmVsKHBhbmVsKSkKICAgICAgICAgICAgICAg
ICAgICAgV2ViSW5zcGVjdG9yLnNob3dQYW5lbChwYW5lbCk7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICByZXR1cm47CkBAIC02OTEsMTAgKzY5MCw5IEBAIFdlYkluc3BlY3Rvci5kb2N1bWVu
dENsaWNrID0gZnVuY3Rpb24oZXZlbnQpCiBXZWJJbnNwZWN0b3Iub3BlblJlc291cmNlID0gZnVu
Y3Rpb24ocmVzb3VyY2VVUkwsIGluUmVzb3VyY2VzUGFuZWwpCiB7CiAgICAgdmFyIHJlc291cmNl
ID0gV2ViSW5zcGVjdG9yLnJlc291cmNlRm9yVVJMKHJlc291cmNlVVJMKTsKLSAgICBpZiAoaW5S
ZXNvdXJjZXNQYW5lbCAmJiByZXNvdXJjZSkgewotICAgICAgICBXZWJJbnNwZWN0b3Iuc2hvd1Bh
bmVsKCJyZXNvdXJjZXMiKTsKLSAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5yZXNvdXJjZXMu
c2hvd1Jlc291cmNlKHJlc291cmNlKTsKLSAgICB9IGVsc2UKKyAgICBpZiAoaW5SZXNvdXJjZXNQ
YW5lbCAmJiByZXNvdXJjZSkKKyAgICAgICAgV2ViSW5zcGVjdG9yLnNob3dQYW5lbCgicmVzb3Vy
Y2VzIikuc2hvd1Jlc291cmNlKHJlc291cmNlKTsKKyAgICBlbHNlCiAgICAgICAgIEluc3BlY3Rv
ckZyb250ZW5kSG9zdC5vcGVuSW5OZXdUYWIocmVzb3VyY2VVUkwpOwogfQogCkBAIC04NTMsMTQg
Kzg1MSw2IEBAIFdlYkluc3BlY3Rvci5jb250ZXh0TWVudUV2ZW50RmlyZWQgPSBmdW5jdGlvbihl
dmVudCkKICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKIH0KIAotV2ViSW5zcGVjdG9y
LnRvZ2dsZVNlYXJjaGluZ0Zvck5vZGUgPSBmdW5jdGlvbigpCi17Ci0gICAgaWYgKHRoaXMucGFu
ZWxzLmVsZW1lbnRzKSB7Ci0gICAgICAgIHRoaXMuc2hvd1BhbmVsKCJlbGVtZW50cyIpOwotICAg
ICAgICB0aGlzLnBhbmVscy5lbGVtZW50cy50b2dnbGVTZWFyY2hpbmdGb3JOb2RlKCk7Ci0gICAg
fQotfQotCiBXZWJJbnNwZWN0b3Iuc2hvd0NvbnNvbGUgPSBmdW5jdGlvbigpCiB7CiAgICAgaWYg
KFdlYkluc3BlY3Rvci5fdG9nZ2xlQ29uc29sZUJ1dHRvbiAmJiAhV2ViSW5zcGVjdG9yLl90b2dn
bGVDb25zb2xlQnV0dG9uLnRvZ2dsZWQpIHsKQEAgLTg3MiwxMyArODYyLDEyIEBAIFdlYkluc3Bl
Y3Rvci5zaG93Q29uc29sZSA9IGZ1bmN0aW9uKCkKIAogV2ViSW5zcGVjdG9yLnNob3dQYW5lbCA9
IGZ1bmN0aW9uKHBhbmVsKQogewotICAgIGlmICghKHBhbmVsIGluIHRoaXMucGFuZWxzKSkgewot
ICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLldvcmtlck1hbmFnZXIuaXNXb3JrZXJGcm9udGVuZCgp
KQotICAgICAgICAgICAgcGFuZWwgPSAic2NyaXB0cyI7Ci0gICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIHBhbmVsID0gImVsZW1lbnRzIjsKLSAgICB9Ci0gICAgV2ViSW5zcGVjdG9yLmluc3BlY3Rv
clZpZXcuc2V0Q3VycmVudFBhbmVsKHRoaXMucGFuZWxzW3BhbmVsXSk7CisgICAgV2ViSW5zcGVj
dG9yLmluc3BlY3RvclZpZXcuc2hvd1BhbmVsKHBhbmVsKTsKK30KKworV2ViSW5zcGVjdG9yLnBh
bmVsID0gZnVuY3Rpb24ocGFuZWwpCit7CisgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5pbnNwZWN0
b3JWaWV3LnBhbmVsKHBhbmVsKTsKIH0KIAogV2ViSW5zcGVjdG9yLmJyaW5nVG9Gcm9udCA9IGZ1
bmN0aW9uKCkKQEAgLTk2Niw0NCArOTU1LDM2IEBAIFdlYkluc3BlY3Rvci5pbnNwZWN0ID0gZnVu
Y3Rpb24ocGF5bG9hZCwgaGludHMpCiAgICAgdmFyIG9iamVjdCA9IFdlYkluc3BlY3Rvci5SZW1v
dGVPYmplY3QuZnJvbVBheWxvYWQocGF5bG9hZCk7CiAgICAgaWYgKG9iamVjdC5zdWJ0eXBlID09
PSAibm9kZSIpIHsKICAgICAgICAgLy8gUmVxdWVzdCBub2RlIGZyb20gYmFja2VuZCBhbmQgZm9j
dXMgaXQuCi0gICAgICAgIFdlYkluc3BlY3Rvci5pbnNwZWN0b3JWaWV3LnNldEN1cnJlbnRQYW5l
bChXZWJJbnNwZWN0b3IucGFuZWxzLmVsZW1lbnRzKTsKLSAgICAgICAgb2JqZWN0LnB1c2hOb2Rl
VG9Gcm9udGVuZChXZWJJbnNwZWN0b3IudXBkYXRlRm9jdXNlZE5vZGUuYmluZChXZWJJbnNwZWN0
b3IpLCBvYmplY3QucmVsZWFzZS5iaW5kKG9iamVjdCkpOworICAgICAgICBmdW5jdGlvbiB1cGRh
dGVGb2N1c2VkTm9kZShub2RlSWQpCisgICAgICAgIHsKKyAgICAgICAgICAgIFdlYkluc3BlY3Rv
ci5zaG93UGFuZWwoImVsZW1lbnRzIikucmV2ZWFsQW5kU2VsZWN0Tm9kZShub2RlSWQpOworICAg
ICAgICAgICAgb2JqZWN0LnJlbGVhc2UoKTsKKyAgICAgICAgfQorICAgICAgICBvYmplY3QucHVz
aE5vZGVUb0Zyb250ZW5kKHVwZGF0ZUZvY3VzZWROb2RlKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIGlmIChoaW50cy5kYXRhYmFzZUlkKSB7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5p
bnNwZWN0b3JWaWV3LnNldEN1cnJlbnRQYW5lbChXZWJJbnNwZWN0b3IucGFuZWxzLnJlc291cmNl
cyk7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMucmVzb3VyY2VzLnNlbGVjdERhdGFiYXNl
KGhpbnRzLmRhdGFiYXNlSWQpOwotICAgIH0gZWxzZSBpZiAoaGludHMuZG9tU3RvcmFnZUlkKSB7
Ci0gICAgICAgIFdlYkluc3BlY3Rvci5pbnNwZWN0b3JWaWV3LnNldEN1cnJlbnRQYW5lbChXZWJJ
bnNwZWN0b3IucGFuZWxzLnJlc291cmNlcyk7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMu
cmVzb3VyY2VzLnNlbGVjdERPTVN0b3JhZ2UoaGludHMuZG9tU3RvcmFnZUlkKTsKLSAgICB9Cisg
ICAgaWYgKGhpbnRzLmRhdGFiYXNlSWQpCisgICAgICAgIFdlYkluc3BlY3Rvci5zaG93UGFuZWwo
InJlc291cmNlcyIpLnNlbGVjdERhdGFiYXNlKGhpbnRzLmRhdGFiYXNlSWQpOworICAgIGVsc2Ug
aWYgKGhpbnRzLmRvbVN0b3JhZ2VJZCkKKyAgICAgICAgV2ViSW5zcGVjdG9yLnNob3dQYW5lbCgi
cmVzb3VyY2VzIikuc2VsZWN0RE9NU3RvcmFnZShoaW50cy5kb21TdG9yYWdlSWQpOwogCiAgICAg
b2JqZWN0LnJlbGVhc2UoKTsKIH0KIAotV2ViSW5zcGVjdG9yLnVwZGF0ZUZvY3VzZWROb2RlID0g
ZnVuY3Rpb24obm9kZUlkKQotewotICAgIHRoaXMucGFuZWxzLmVsZW1lbnRzLnJldmVhbEFuZFNl
bGVjdE5vZGUobm9kZUlkKTsKLX0KLQogV2ViSW5zcGVjdG9yLl9zaG93QW5jaG9yTG9jYXRpb24g
PSBmdW5jdGlvbihhbmNob3IpCiB7CiAgICAgaWYgKFdlYkluc3BlY3Rvci5vcGVuQW5jaG9yTG9j
YXRpb25SZWdpc3RyeS5kaXNwYXRjaCh7IHVybDogYW5jaG9yLmhyZWYsIGxpbmVOdW1iZXI6IGFu
Y2hvci5saW5lTnVtYmVyfSkpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIHZhciBwcmVmZXJy
ZWRQYW5lbHMgPSBbXTsKLSAgICBpZiAodGhpcy5wYW5lbHNbYW5jaG9yLnByZWZlcnJlZFBhbmVs
XSkKLSAgICAgICAgcHJlZmVycmVkUGFuZWxzLnB1c2godGhpcy5wYW5lbHNbYW5jaG9yLnByZWZl
cnJlZFBhbmVsXSk7Ci0gICAgaWYgKHRoaXMucGFuZWxzLnNjcmlwdHMpCi0gICAgICAgIHByZWZl
cnJlZFBhbmVscy5wdXNoKHRoaXMucGFuZWxzLnNjcmlwdHMpOwotICAgIGlmICh0aGlzLnBhbmVs
cy5yZXNvdXJjZXMpCi0gICAgICAgIHByZWZlcnJlZFBhbmVscy5wdXNoKHRoaXMucGFuZWxzLnJl
c291cmNlcyk7Ci0gICAgaWYgKHRoaXMucGFuZWxzLm5ldHdvcmspCi0gICAgICAgIHByZWZlcnJl
ZFBhbmVscy5wdXNoKHRoaXMucGFuZWxzLm5ldHdvcmspOwotICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgcHJlZmVycmVkUGFuZWxzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgIGlmIChXZWJJbnNwZWN0
b3IuX3Nob3dBbmNob3JMb2NhdGlvbkluUGFuZWwoYW5jaG9yLCBwcmVmZXJyZWRQYW5lbHNbaV0p
KQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQorICAgIHZhciBwcmVmZXJyZWRQYW5l
bCA9IHRoaXMucGFuZWxzW2FuY2hvci5wcmVmZXJyZWRQYW5lbF07CisgICAgaWYgKHByZWZlcnJl
ZFBhbmVsICYmIFdlYkluc3BlY3Rvci5fc2hvd0FuY2hvckxvY2F0aW9uSW5QYW5lbChhbmNob3Is
IHByZWZlcnJlZFBhbmVsKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKFdlYkluc3Bl
Y3Rvci5fc2hvd0FuY2hvckxvY2F0aW9uSW5QYW5lbChhbmNob3IsIHRoaXMucGFuZWxzLnNjcmlw
dHMpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoV2ViSW5zcGVjdG9yLl9zaG93QW5j
aG9yTG9jYXRpb25JblBhbmVsKGFuY2hvciwgdGhpcy5wYW5lbCgicmVzb3VyY2VzIikpKQorICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoV2ViSW5zcGVjdG9yLl9zaG93QW5jaG9yTG9jYXRp
b25JblBhbmVsKGFuY2hvciwgdGhpcy5wYW5lbHMubmV0d29yaykpCisgICAgICAgIHJldHVybiB0
cnVlOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtMTAzMSw4ICsxMDEyLDcgQEAgV2ViSW5z
cGVjdG9yLnNob3dQYW5lbEZvckFuY2hvck5hdmlnYXRpb24gPSBmdW5jdGlvbihwYW5lbCkKIAog
V2ViSW5zcGVjdG9yLnNob3dQcm9maWxlRm9yVVJMID0gZnVuY3Rpb24odXJsKQogewotICAgIFdl
Ykluc3BlY3Rvci5zaG93UGFuZWwoInByb2ZpbGVzIik7Ci0gICAgV2ViSW5zcGVjdG9yLnBhbmVs
cy5wcm9maWxlcy5zaG93UHJvZmlsZUZvclVSTCh1cmwpOworICAgIFdlYkluc3BlY3Rvci5zaG93
UGFuZWwoInByb2ZpbGVzIikuc2hvd1Byb2ZpbGVGb3JVUkwodXJsKTsKIH0KIAogV2ViSW5zcGVj
dG9yLmV2YWx1YXRlSW5Db25zb2xlID0gZnVuY3Rpb24oZXhwcmVzc2lvbiwgc2hvd1Jlc3VsdE9u
bHkpCkBAIC0xMDU1LDEwICsxMDM1LDMgQEAgV2ViSW5zcGVjdG9yLmZyb250ZW5kUmV1c2VkID0g
ZnVuY3Rpb24oKQogewogICAgIHRoaXMucmVzb3VyY2VUcmVlTW9kZWwuZnJvbnRlbmRSZXVzZWQo
KTsKIH0KLQotV2ViSW5zcGVjdG9yLl90b29sYmFySXRlbUNsaWNrZWQgPSBmdW5jdGlvbihldmVu
dCkKLXsKLSAgICB2YXIgdG9vbGJhckl0ZW0gPSBldmVudC5jdXJyZW50VGFyZ2V0OwotICAgIFdl
Ykluc3BlY3Rvci5pbnNwZWN0b3JWaWV3LnNldEN1cnJlbnRQYW5lbCh0b29sYmFySXRlbS5wYW5l
bCk7Ci19Ci0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158849</attachid>
            <date>2012-08-16 10:08:34 -0700</date>
            <delta_ts>2012-08-17 01:17:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94222-20120816210823.patch</filename>
            <type>text/plain</type>
            <size>72325</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1Nzg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzNkZDMwNzE3OTkxNmM5
OGEwNjAzMDFiNmI4MjNiOWZkMzM2Y2U2OS4uMDUzYjczMzMyNWViZWI3ZTFhZGNmMjU0ZmI5NDIw
ZGU5MDcwYTE4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNCBAQAorMjAxMi0wOC0xNiAgUGF2
ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBidWlsZCBFbGVtZW50cywgUmVzb3VyY2VzLCBUaW1lbGluZSwgQXVkaXRzIGFuZCBDb25z
b2xlIHBhbmVscyBsYXppbHkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD05NDIyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRoZXJlIGlzIG5vIG5lZWQgdG8gY29uc3RydWN0IHRoZXNlIHBhbmVscyBvbiBp
bnNwZWN0b3Igc3RhcnR1cCAtIHdlIGNhbiBkbyB0aGF0IGxhemlseS4KKyAgICAgICAgVGhpcyBj
aGFuZ2UgaW50cm9kdWNlcyB0aGUgY29uY2VwdCBvZiBQYW5lbERlc2NyaXB0b3IgdGhhdCBpcyBz
dWZmaWNpZW50IGZvciB0aGUgcGFuZWwKKyAgICAgICAgcmVwcmVzZW50YXRpb24gYmVmb3JlIGl0
IGhhcyBiZWVuIHNlbGVjdGVkLiBJdCBhbHNvIG1ha2VzIHNlbGVjdGVkIHBhbmVscyBidWlsZCBs
YXppbHkuCisKKyAgICAgICAgVGhlIG5leHQgc3RlcCBpcyB0byBtaWdyYXRlIHJlc3Qgb2YgdGhl
IHBhbmVscyBhbmQgbG9hZCB0aGUgcGFuZWwgY29kZSBsYXppbHkgYXMgd2VsbC4KKyAgICAgICAg
VGhhdCBzaG91bGQgc3BlZWQgdXAgc3RhcnR1cCB0aW1lIHNpZ25pZmljYW50bHkuCisKKyAgICAg
ICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0c1BhbmVsLmpzOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkF1ZGl0c1BhbmVsKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5BdWRpdHNQYW5lbC5w
cm90b3R5cGUuX2F1ZGl0RmluaXNoZWRDYWxsYmFjayk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
QXVkaXRzU2lkZWJhclRyZWVFbGVtZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5BdWRpdHNT
aWRlYmFyVHJlZUVsZW1lbnQucHJvdG90eXBlLm9uc2VsZWN0KToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5BdWRpdFJlc3VsdFNpZGViYXJUcmVlRWxlbWVudCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuQXVkaXRSZXN1bHRTaWRlYmFyVHJlZUVsZW1lbnQucHJvdG90eXBlLm9uc2VsZWN0KToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVQYW5lbC5qczoKKyAgICAgICAgKiBp
bnNwZWN0b3IvZnJvbnQtZW5kL0RPTVN0b3JhZ2UuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
RE9NU3RvcmFnZURpc3BhdGNoZXIucHJvdG90eXBlLmFkZERPTVN0b3JhZ2UpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VEaXNwYXRjaGVyLnByb3RvdHlwZS5kb21TdG9yYWdlVXBk
YXRlZCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9EYXRhYmFzZS5qczoKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5EYXRhYmFzZURpc3BhdGNoZXIucHJvdG90eXBlLmFkZERhdGFiYXNl
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzUGFuZWwuanM6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
RWxlbWVudHNQYW5lbC5wcm90b3R5cGUucmV2ZWFsQW5kU2VsZWN0Tm9kZSk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbC5wcm90b3R5cGUuc2V0U2VhcmNoaW5nRm9yTm9kZSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbC5wcm90b3R5cGUudG9nZ2xlU2Vh
cmNoaW5nRm9yTm9kZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1Ry
ZWVPdXRsaW5lLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZUVsZW1lbnQu
cHJvdG90eXBlLl9wb3B1bGF0ZUZvcmNlZFBzZXVkb1N0YXRlSXRlbXMpOgorICAgICAgICAqIGlu
c3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9uUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuRXh0ZW5zaW9uUGFuZWwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkV4dGVuc2lvblBhbmVs
LnByb3RvdHlwZS5qdW1wVG9QcmV2aW91c1NlYXJjaFJlc3VsdCk6CisgICAgICAgICogaW5zcGVj
dG9yL2Zyb250LWVuZC9FeHRlbnNpb25TZXJ2ZXIuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
RXh0ZW5zaW9uU2VydmVyLnByb3RvdHlwZS5fb25DcmVhdGVQYW5lbCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuRXh0ZW5zaW9uU2VydmVyLnByb3RvdHlwZS5fb25BZGRBdWRpdENhdGVnb3J5KToK
KyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0luc3BlY3RvckZyb250ZW5kQVBJLmpzOgor
ICAgICAgICAoSW5zcGVjdG9yRnJvbnRlbmRBUEkuaXNUaW1lbGluZVByb2ZpbGluZ0VuYWJsZWQp
OgorICAgICAgICAoSW5zcGVjdG9yRnJvbnRlbmRBUEkuc2V0VGltZWxpbmVQcm9maWxpbmdFbmFi
bGVkKToKKyAgICAgICAgKEluc3BlY3RvckZyb250ZW5kQVBJLnNob3dDb25zb2xlKToKKyAgICAg
ICAgKEluc3BlY3RvckZyb250ZW5kQVBJLnNob3dSZXNvdXJjZXMpOgorICAgICAgICAoSW5zcGVj
dG9yRnJvbnRlbmRBUEkuZW50ZXJJbnNwZWN0RWxlbWVudE1vZGUpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9mcm9udC1lbmQvSW5zcGVjdG9yVmlldy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5J
bnNwZWN0b3JWaWV3KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5JbnNwZWN0b3JWaWV3LnByb3Rv
dHlwZS5hZGRQYW5lbCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSW5zcGVjdG9yVmlldy5wcm90
b3R5cGUucGFuZWwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkluc3BlY3RvclZpZXcucHJvdG90
eXBlLnNob3dQYW5lbCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSW5zcGVjdG9yVmlldy5wcm90
b3R5cGUuX2tleURvd25JbnRlcm5hbCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9O
ZXR3b3JrUGFuZWwuanM6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9QYW5lbC5qczoK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5QYW5lbC5wcm90b3R5cGUud2FzU2hvd24pOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlBhbmVsLnByb3RvdHlwZS53aWxsSGlkZSk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuUGFuZWxEZXNjcmlwdG9yKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5QYW5lbERl
c2NyaXB0b3IucHJvdG90eXBlLm5hbWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlBhbmVsRGVz
Y3JpcHRvci5wcm90b3R5cGUudGl0bGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlBhbmVsRGVz
Y3JpcHRvci5wcm90b3R5cGUuaWNvblVSTCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUGFuZWxE
ZXNjcmlwdG9yLnByb3RvdHlwZS5zZXRJY29uVVJMKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Q
YW5lbERlc2NyaXB0b3IucHJvdG90eXBlLnBhbmVsKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Q
YW5lbERlc2NyaXB0b3IucHJvdG90eXBlLmxhenkpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9u
dC1lbmQvUHJvZmlsZXNQYW5lbC5qczoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1Jl
c291cmNlVHJlZU1vZGVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZU1v
ZGVsLnByb3RvdHlwZS5jYWNoZWRSZXNvdXJjZXNMb2FkZWQpOgorICAgICAgICAqIGluc3BlY3Rv
ci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVz
b3VyY2VzUGFuZWwpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVs
LmpzOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzU2lkZWJhclBhbmUuanM6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0aWVzU2VjdGlvbi5wcm90b3R5cGUu
ZWRpdGluZ1NlbGVjdG9yQ29tbWl0dGVkLnN1Y2Nlc3NDYWxsYmFjayk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuU3R5bGVQcm9wZXJ0aWVzU2VjdGlvbi5wcm90b3R5cGUuZWRpdGluZ1NlbGVjdG9y
Q29tbWl0dGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnR5VHJlZUVsZW1l
bnQucHJvdG90eXBlLnVwZGF0ZVRpdGxlLmxpbmtpZnlVUkwpOgorICAgICAgICAqIGluc3BlY3Rv
ci9mcm9udC1lbmQvVGltZWxpbmVQYW5lbC5qczoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQt
ZW5kL1Rvb2xiYXIuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVG9vbGJhci5wcm90b3R5cGUu
YWRkUGFuZWwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRvb2xiYXIucHJvdG90eXBlLl9jcmVh
dGVQYW5lbFRvb2xiYXJJdGVtLm9uVG9vbGJhckl0ZW1DbGlja2VkKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5Ub29sYmFyLnByb3RvdHlwZS5fY3JlYXRlUGFuZWxUb29sYmFySXRlbS5wYW5lbFNl
bGVjdGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Ub29sYmFyLnByb3RvdHlwZS5fY3JlYXRl
UGFuZWxUb29sYmFySXRlbSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVG9vbGJhci5wcm90b3R5
cGUuX3BhbmVsU2VsZWN0ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRvb2xiYXIucHJvdG90
eXBlLl9zZXREcm9wZG93blZpc2libGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRvb2xiYXJE
cm9wZG93bik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVG9vbGJhckRyb3Bkb3duLnByb3RvdHlw
ZS5zaG93KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Ub29sYmFyRHJvcGRvd24ucHJvdG90eXBl
Ll9wb3B1bGF0ZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3Nz
OgorICAgICAgICAoLnRvb2xiYXItc21hbGwgLnRvb2xiYXItaWNvbi5jdXN0b20tdG9vbGJhci1p
Y29uKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qczoKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5fcGFuZWxEZXNjcmlwdG9ycyk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuX3BhbmVsU2VsZWN0ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLl9jcmVhdGVHbG9iYWxT
dGF0dXNCYXJJdGVtcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuZG9jdW1lbnRDbGljay5mb2xs
b3dMaW5rKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5kb2N1bWVudENsaWNrKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5vcGVuUmVzb3VyY2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLnNob3dQ
YW5lbCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IucGFuZWwpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLmluc3BlY3QuKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5pbnNwZWN0KToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5fc2hvd0FuY2hvckxvY2F0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5zaG93UHJvZmlsZUZvclVSTCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuZnJvbnRlbmRSZXVz
ZWQpOgorCiAyMDEyLTA4LTE2ICBKb2NlbHluIFR1cmNvdHRlICA8am9jZWx5bi50dXJjb3R0ZUBu
b2tpYS5jb20+CiAKICAgICAgICAgRml4IHRoZSBNYWMgYnVpbGQuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0c1BhbmVsLmpzIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9BdWRpdHNQYW5lbC5qcwppbmRleCBiODM0YTBiMGY0
NGI1ZGQ0YmE0Mjk5YmYwNTc1YzdkODAwYWVmYzhlLi41NmJjNGE4MmY2NjhhMzk2YmQ3ZmI5NDY5
NTVhOWQ0YjE0MjIxYTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0F1ZGl0c1BhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvQXVkaXRzUGFuZWwuanMKQEAgLTQzLDcgKzQzLDcgQEAgV2ViSW5zcGVjdG9yLkF1ZGl0
c1BhbmVsID0gZnVuY3Rpb24oKQogICAgIHRoaXMuc2lkZWJhclRyZWUuYXBwZW5kQ2hpbGQodGhp
cy5hdWRpdHNUcmVlRWxlbWVudCk7CiAgICAgdGhpcy5hdWRpdHNUcmVlRWxlbWVudC5saXN0SXRl
bUVsZW1lbnQuYWRkU3R5bGVDbGFzcygiaGlkZGVuIik7CiAKLSAgICB0aGlzLmF1ZGl0c0l0ZW1U
cmVlRWxlbWVudCA9IG5ldyBXZWJJbnNwZWN0b3IuQXVkaXRzU2lkZWJhclRyZWVFbGVtZW50KCk7
CisgICAgdGhpcy5hdWRpdHNJdGVtVHJlZUVsZW1lbnQgPSBuZXcgV2ViSW5zcGVjdG9yLkF1ZGl0
c1NpZGViYXJUcmVlRWxlbWVudCh0aGlzKTsKICAgICB0aGlzLmF1ZGl0c1RyZWVFbGVtZW50LmFw
cGVuZENoaWxkKHRoaXMuYXVkaXRzSXRlbVRyZWVFbGVtZW50KTsKIAogICAgIHRoaXMuYXVkaXRS
ZXN1bHRzVHJlZUVsZW1lbnQgPSBuZXcgV2ViSW5zcGVjdG9yLlNpZGViYXJTZWN0aW9uVHJlZUVs
ZW1lbnQoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSRVNVTFRTIiksIHt9LCB0cnVlKTsKQEAgLTY1
LDExICs2NSw2IEBAIFdlYkluc3BlY3Rvci5BdWRpdHNQYW5lbCA9IGZ1bmN0aW9uKCkKIH0KIAog
V2ViSW5zcGVjdG9yLkF1ZGl0c1BhbmVsLnByb3RvdHlwZSA9IHsKLSAgICBnZXQgdG9vbGJhckl0
ZW1MYWJlbCgpCi0gICAgewotICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJB
dWRpdHMiKTsKLSAgICB9LAotCiAgICAgZ2V0IHN0YXR1c0Jhckl0ZW1zKCkKICAgICB7CiAgICAg
ICAgIHJldHVybiBbdGhpcy5jbGVhclJlc3VsdHNCdXR0b24uZWxlbWVudF07CkBAIC0xNTEsNyAr
MTQ2LDcgQEAgV2ViSW5zcGVjdG9yLkF1ZGl0c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAg
ICAgICAgICBvcmRpbmFsKys7CiAgICAgICAgIH0KIAotICAgICAgICB2YXIgcmVzdWx0VHJlZUVs
ZW1lbnQgPSBuZXcgV2ViSW5zcGVjdG9yLkF1ZGl0UmVzdWx0U2lkZWJhclRyZWVFbGVtZW50KHJl
c3VsdHMsIG1haW5SZXNvdXJjZVVSTCwgb3JkaW5hbCk7CisgICAgICAgIHZhciByZXN1bHRUcmVl
RWxlbWVudCA9IG5ldyBXZWJJbnNwZWN0b3IuQXVkaXRSZXN1bHRTaWRlYmFyVHJlZUVsZW1lbnQo
dGhpcywgcmVzdWx0cywgbWFpblJlc291cmNlVVJMLCBvcmRpbmFsKTsKICAgICAgICAgdGhpcy5h
dWRpdFJlc3VsdHNUcmVlRWxlbWVudC5hcHBlbmRDaGlsZChyZXN1bHRUcmVlRWxlbWVudCk7CiAg
ICAgICAgIHJlc3VsdFRyZWVFbGVtZW50LnJldmVhbEFuZFNlbGVjdCgpOwogICAgICAgICBpZiAo
IXRoaXMuX3Byb2dyZXNzTW9uaXRvci5jYW5jZWxlZCAmJiBsYXVuY2hlckNhbGxiYWNrKQpAQCAt
NTI2LDExICs1MjEsMTIgQEAgV2ViSW5zcGVjdG9yLkF1ZGl0UHJvZ3Jlc3NNb25pdG9yLnByb3Rv
dHlwZSA9IHsKIC8qKgogICogQGNvbnN0cnVjdG9yCiAgKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9y
LlNpZGViYXJUcmVlRWxlbWVudH0KKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkF1ZGl0c1BhbmVs
fSBwYW5lbAogICovCi1XZWJJbnNwZWN0b3IuQXVkaXRzU2lkZWJhclRyZWVFbGVtZW50ID0gZnVu
Y3Rpb24oKQorV2ViSW5zcGVjdG9yLkF1ZGl0c1NpZGViYXJUcmVlRWxlbWVudCA9IGZ1bmN0aW9u
KHBhbmVsKQogeworICAgIHRoaXMuX3BhbmVsID0gcGFuZWw7CiAgICAgdGhpcy5zbWFsbCA9IGZh
bHNlOwotCiAgICAgV2ViSW5zcGVjdG9yLlNpZGViYXJUcmVlRWxlbWVudC5jYWxsKHRoaXMsICJh
dWRpdHMtc2lkZWJhci10cmVlLWl0ZW0iLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkF1ZGl0cyIp
LCAiIiwgbnVsbCwgZmFsc2UpOwogfQogCkBAIC01NDIsNyArNTM4LDcgQEAgV2ViSW5zcGVjdG9y
LkF1ZGl0c1NpZGViYXJUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAKICAgICBvbnNlbGVjdDog
ZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5hdWRpdHMuc2hv
d0xhdW5jaGVyVmlldygpOworICAgICAgICB0aGlzLl9wYW5lbC5zaG93TGF1bmNoZXJWaWV3KCk7
CiAgICAgfSwKIAogICAgIGdldCBzZWxlY3RhYmxlKCkKQEAgLTU2MSwxOSArNTU3LDIwIEBAIFdl
Ykluc3BlY3Rvci5BdWRpdHNTaWRlYmFyVHJlZUVsZW1lbnQucHJvdG90eXBlLl9fcHJvdG9fXyA9
IFdlYkluc3BlY3Rvci5TaWRlYmFyCiAvKioKICAqIEBjb25zdHJ1Y3RvcgogICogQGV4dGVuZHMg
e1dlYkluc3BlY3Rvci5TaWRlYmFyVHJlZUVsZW1lbnR9CisgKiBAcGFyYW0ge1dlYkluc3BlY3Rv
ci5BdWRpdHNQYW5lbH0gcGFuZWwKICAqLwotV2ViSW5zcGVjdG9yLkF1ZGl0UmVzdWx0U2lkZWJh
clRyZWVFbGVtZW50ID0gZnVuY3Rpb24ocmVzdWx0cywgbWFpblJlc291cmNlVVJMLCBvcmRpbmFs
KQorV2ViSW5zcGVjdG9yLkF1ZGl0UmVzdWx0U2lkZWJhclRyZWVFbGVtZW50ID0gZnVuY3Rpb24o
cGFuZWwsIHJlc3VsdHMsIG1haW5SZXNvdXJjZVVSTCwgb3JkaW5hbCkKIHsKKyAgICB0aGlzLl9w
YW5lbCA9IHBhbmVsOwogICAgIHRoaXMucmVzdWx0cyA9IHJlc3VsdHM7CiAgICAgdGhpcy5tYWlu
UmVzb3VyY2VVUkwgPSBtYWluUmVzb3VyY2VVUkw7Ci0KICAgICBXZWJJbnNwZWN0b3IuU2lkZWJh
clRyZWVFbGVtZW50LmNhbGwodGhpcywgImF1ZGl0LXJlc3VsdC1zaWRlYmFyLXRyZWUtaXRlbSIs
IFN0cmluZy5zcHJpbnRmKCIlcyAoJWQpIiwgbWFpblJlc291cmNlVVJMLCBvcmRpbmFsKSwgIiIs
IHt9LCBmYWxzZSk7CiB9CiAKIFdlYkluc3BlY3Rvci5BdWRpdFJlc3VsdFNpZGViYXJUcmVlRWxl
bWVudC5wcm90b3R5cGUgPSB7CiAgICAgb25zZWxlY3Q6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAg
ICAgIFdlYkluc3BlY3Rvci5wYW5lbHMuYXVkaXRzLnNob3dSZXN1bHRzKHRoaXMucmVzdWx0cyk7
CisgICAgICAgIHRoaXMuX3BhbmVsLnNob3dSZXN1bHRzKHRoaXMucmVzdWx0cyk7CiAgICAgfSwK
IAogICAgIGdldCBzZWxlY3RhYmxlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvQ29uc29sZVBhbmVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9Db25zb2xlUGFuZWwuanMKaW5kZXggYjdhZjJhOTUxYTY0NjgxNDU5MzAxNjBj
OTJkN2MxMzYwNjJmMTliMy4uODAxMmIxOWMxZDBmNDIyN2MyYmM0YzkzNGIyODQ0NDA1YWQ1ZDdm
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xl
UGFuZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xl
UGFuZWwuanMKQEAgLTQwLDExICs0MCw2IEBAIFdlYkluc3BlY3Rvci5Db25zb2xlUGFuZWwgPSBm
dW5jdGlvbigpCiB9CiAKIFdlYkluc3BlY3Rvci5Db25zb2xlUGFuZWwucHJvdG90eXBlID0gewot
ICAgIGdldCB0b29sYmFySXRlbUxhYmVsKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIkNvbnNvbGUiKTsKLSAgICB9LAotCiAgICAgZ2V0IHN0YXR1c0Jhckl0
ZW1zKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl92aWV3LnN0YXR1c0Jhckl0ZW1zOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9ET01TdG9yYWdl
LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9ET01TdG9yYWdlLmpzCmlu
ZGV4IDBjOTY2OTM1YzFmYjQxMDY2YjdlODI3NmQxODIzNzA0MzU1ZjExNjMuLmNkYjMyZjQxNTYx
MWIxYWIyMTJkN2I2Y2U0ZGNlZGZjZWQ3N2E3NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvRE9NU3RvcmFnZS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL0RPTVN0b3JhZ2UuanMKQEAgLTEwMiw3ICsxMDIsNyBAQCBXZWJJ
bnNwZWN0b3IuRE9NU3RvcmFnZURpc3BhdGNoZXIucHJvdG90eXBlID0gewogICAgICAgICAgICAg
cGF5bG9hZC5pZCwKICAgICAgICAgICAgIHBheWxvYWQub3JpZ2luLAogICAgICAgICAgICAgcGF5
bG9hZC5pc0xvY2FsU3RvcmFnZSk7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMucmVzb3Vy
Y2VzLmFkZERPTVN0b3JhZ2UoZG9tU3RvcmFnZSk7CisgICAgICAgIFdlYkluc3BlY3Rvci5wYW5l
bCgicmVzb3VyY2VzIikuYWRkRE9NU3RvcmFnZShkb21TdG9yYWdlKTsKICAgICB9LAogCiAgICAg
LyoqCkBAIC0xMTAsNiArMTEwLDYgQEAgV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VEaXNwYXRjaGVy
LnByb3RvdHlwZSA9IHsKICAgICAgKi8KICAgICBkb21TdG9yYWdlVXBkYXRlZDogZnVuY3Rpb24o
c3RvcmFnZUlkKQogICAgIHsKLSAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5yZXNvdXJjZXMu
ZG9tU3RvcmFnZVVwZGF0ZWQoc3RvcmFnZUlkKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVs
KCJyZXNvdXJjZXMiKS5kb21TdG9yYWdlVXBkYXRlZChzdG9yYWdlSWQpOwogICAgIH0KIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGF0YWJhc2UuanMg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RhdGFiYXNlLmpzCmluZGV4IDdm
YTQxYTk3ODZmNDdjMGZlYWM4NTY5NDVlMmZmOTEwYmQxZTAxNzIuLjZlOTRhZGI0ODc5N2RjYjBl
YzEyYmJiMjU3NjZmNTk5YmQzMTk2YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvRGF0YWJhc2UuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9EYXRhYmFzZS5qcwpAQCAtMTQwLDcgKzE0MCw3IEBAIFdlYkluc3BlY3Rvci5E
YXRhYmFzZURpc3BhdGNoZXIucHJvdG90eXBlID0gewogICAgICAgICAgICAgcGF5bG9hZC5kb21h
aW4sCiAgICAgICAgICAgICBwYXlsb2FkLm5hbWUsCiAgICAgICAgICAgICBwYXlsb2FkLnZlcnNp
b24pOwotICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLnJlc291cmNlcy5hZGREYXRhYmFzZShk
YXRhYmFzZSk7CisgICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbCgicmVzb3VyY2VzIikuYWRkRGF0
YWJhc2UoZGF0YWJhc2UpOwogICAgIH0sCiAKICAgICAvKioKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNQYW5lbC5qcyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNQYW5lbC5qcwppbmRleCA1ZmQyMzIyN2Zh
Y2Q0NzYxNzhjNjhkMTg5MGM2OGEzMjAzZGM3MGFkLi5lNmI3NDc5NjllZmU2OTVhZWIzMTc1YWE2
ODJkM2MyMzAxZDI3ZjdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0VsZW1lbnRzUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9FbGVtZW50c1BhbmVsLmpzCkBAIC0zMSw4ICszMSw5IEBACiAvKioKICAqIEBjb25z
dHJ1Y3RvcgogICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5QYW5lbH0KKyAqIEBwYXJhbSB7V2Vi
SW5zcGVjdG9yLlN0YXR1c0JhckJ1dHRvbn0gbm9kZVNlYXJjaEJ1dHRvbgogICovCi1XZWJJbnNw
ZWN0b3IuRWxlbWVudHNQYW5lbCA9IGZ1bmN0aW9uKCkKK1dlYkluc3BlY3Rvci5FbGVtZW50c1Bh
bmVsID0gZnVuY3Rpb24obm9kZVNlYXJjaEJ1dHRvbikKIHsKICAgICBXZWJJbnNwZWN0b3IuUGFu
ZWwuY2FsbCh0aGlzLCAiZWxlbWVudHMiKTsKICAgICB0aGlzLnJlZ2lzdGVyUmVxdWlyZWRDU1Mo
ImVsZW1lbnRzUGFuZWwuY3NzIik7CkBAIC05MCw4ICs5MSw4IEBAIFdlYkluc3BlY3Rvci5FbGVt
ZW50c1BhbmVsID0gZnVuY3Rpb24oKQogICAgICAgICAgICAgdGhpcy5zaWRlYmFyUGFuZXNbcGFu
ZV0ub25hdHRhY2goKTsKICAgICB9CiAKLSAgICB0aGlzLm5vZGVTZWFyY2hCdXR0b24gPSBuZXcg
V2ViSW5zcGVjdG9yLlN0YXR1c0JhckJ1dHRvbihXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNlbGVj
dCBhbiBlbGVtZW50IGluIHRoZSBwYWdlIHRvIGluc3BlY3QgaXQuIiksICJub2RlLXNlYXJjaC1z
dGF0dXMtYmFyLWl0ZW0iKTsKLSAgICB0aGlzLm5vZGVTZWFyY2hCdXR0b24uYWRkRXZlbnRMaXN0
ZW5lcigiY2xpY2siLCB0aGlzLnRvZ2dsZVNlYXJjaGluZ0Zvck5vZGUsIHRoaXMpOworICAgIHRo
aXMuX25vZGVTZWFyY2hCdXR0b24gPSBub2RlU2VhcmNoQnV0dG9uOworICAgIHRoaXMuX25vZGVT
ZWFyY2hCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLnRvZ2dsZVNlYXJjaGlu
Z0Zvck5vZGUsIHRoaXMpOwogCiAgICAgdGhpcy5fcmVnaXN0ZXJTaG9ydGN1dHMoKTsKIApAQCAt
MTA0LDExICsxMDUsNiBAQCBXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbCA9IGZ1bmN0aW9uKCkK
IH0KIAogV2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwucHJvdG90eXBlID0gewotICAgIGdldCB0
b29sYmFySXRlbUxhYmVsKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIkVsZW1lbnRzIik7Ci0gICAgfSwKLQogICAgIGdldCBzdGF0dXNCYXJJdGVtcygpCiAg
ICAgewogICAgICAgICByZXR1cm4gW3RoaXMuY3J1bWJzRWxlbWVudF07CkBAIC0xMTM3LDkgKzEx
MzMsOSBAQCBXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbC5wcm90b3R5cGUgPSB7CiAKICAgICAg
ICAgV2ViSW5zcGVjdG9yLmRvbUFnZW50LmhpZ2hsaWdodERPTU5vZGVGb3JUd29TZWNvbmRzKG5v
ZGVJZCk7CiAgICAgICAgIHRoaXMuc2VsZWN0RE9NTm9kZShub2RlLCB0cnVlKTsKLSAgICAgICAg
aWYgKHRoaXMubm9kZVNlYXJjaEJ1dHRvbi50b2dnbGVkKSB7CisgICAgICAgIGlmICh0aGlzLl9u
b2RlU2VhcmNoQnV0dG9uLnRvZ2dsZWQpIHsKICAgICAgICAgICAgIEluc3BlY3RvckZyb250ZW5k
SG9zdC5icmluZ1RvRnJvbnQoKTsKLSAgICAgICAgICAgIHRoaXMubm9kZVNlYXJjaEJ1dHRvbi50
b2dnbGVkID0gZmFsc2U7CisgICAgICAgICAgICB0aGlzLl9ub2RlU2VhcmNoQnV0dG9uLnRvZ2ds
ZWQgPSBmYWxzZTsKICAgICAgICAgfQogICAgIH0sCiAKQEAgLTExNTEsMTQgKzExNDcsMTQgQEAg
V2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICBmdW5jdGlv
biBjYWxsYmFjayhlcnJvcikKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFlcnJvcikKLSAg
ICAgICAgICAgICAgICB0aGlzLm5vZGVTZWFyY2hCdXR0b24udG9nZ2xlZCA9IGVuYWJsZWQ7Cisg
ICAgICAgICAgICAgICAgdGhpcy5fbm9kZVNlYXJjaEJ1dHRvbi50b2dnbGVkID0gZW5hYmxlZDsK
ICAgICAgICAgfQogICAgICAgICBXZWJJbnNwZWN0b3IuZG9tQWdlbnQuc2V0SW5zcGVjdE1vZGVF
bmFibGVkKGVuYWJsZWQsIGNhbGxiYWNrLmJpbmQodGhpcykpOwogICAgIH0sCiAKICAgICB0b2dn
bGVTZWFyY2hpbmdGb3JOb2RlOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICB0aGlzLnNldFNl
YXJjaGluZ0Zvck5vZGUoIXRoaXMubm9kZVNlYXJjaEJ1dHRvbi50b2dnbGVkKTsKKyAgICAgICAg
dGhpcy5zZXRTZWFyY2hpbmdGb3JOb2RlKCF0aGlzLl9ub2RlU2VhcmNoQnV0dG9uLnRvZ2dsZWQp
OwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9FbGVtZW50c1RyZWVPdXRsaW5lLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9FbGVtZW50c1RyZWVPdXRsaW5lLmpzCmluZGV4IDM0MTMwMzEwMzVjMTYwMWRmMWUz
MmI2NmU3ZDZiYTRiYzE2M2Q1MDcuLjE4Y2FiOGFlNGRkZDFkN2I3OWFhNzU1NTAzMmRmYjhhY2Iw
N2I4MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxl
bWVudHNUcmVlT3V0bGluZS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL0VsZW1lbnRzVHJlZU91dGxpbmUuanMKQEAgLTExNzIsNyArMTE3Miw2IEBAIFdlYkluc3Bl
Y3Rvci5FbGVtZW50c1RyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgY29uc3QgcHNl
dWRvQ2xhc3NlcyA9IFsiYWN0aXZlIiwgImhvdmVyIiwgImZvY3VzIiwgInZpc2l0ZWQiXTsKICAg
ICAgICAgdmFyIG5vZGUgPSB0aGlzLnJlcHJlc2VudGVkT2JqZWN0OwogICAgICAgICB2YXIgZm9y
Y2VkUHNldWRvU3RhdGUgPSAobm9kZSA/IG5vZGUuZ2V0VXNlclByb3BlcnR5KCJwc2V1ZG9TdGF0
ZSIpIDogbnVsbCkgfHwgW107Ci0gICAgICAgIHZhciBlbGVtZW50c1BhbmVsID0gV2ViSW5zcGVj
dG9yLnBhbmVscy5lbGVtZW50czsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwc2V1ZG9D
bGFzc2VzLmxlbmd0aDsgKytpKSB7CiAgICAgICAgICAgICB2YXIgcHNldWRvQ2xhc3NGb3JjZWQg
PSBmb3JjZWRQc2V1ZG9TdGF0ZS5pbmRleE9mKHBzZXVkb0NsYXNzZXNbaV0pID49IDA7CiAgICAg
ICAgICAgICBzdWJNZW51LmFwcGVuZENoZWNrYm94SXRlbSgiOiIgKyBwc2V1ZG9DbGFzc2VzW2ld
LCB0aGlzLnRyZWVPdXRsaW5lLl9zZXRQc2V1ZG9DbGFzc0NhbGxiYWNrLmJpbmQobnVsbCwgbm9k
ZS5pZCwgcHNldWRvQ2xhc3Nlc1tpXSwgIXBzZXVkb0NsYXNzRm9yY2VkKSwgcHNldWRvQ2xhc3NG
b3JjZWQsIGZhbHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvRXh0ZW5zaW9uUGFuZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL0V4dGVuc2lvblBhbmVsLmpzCmluZGV4IDFjNjk2NTM2ZGRjYjljNjU5YjJkOWY1NWFkNDBl
ZGI5ZTNjMzdmZTIuLjQ2Y2RiMTE3ZmMwYmQ1Mzk2YTIwOGFlZGFjODg4MjFiM2I0ODhmN2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9uUGFu
ZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25Q
YW5lbC5qcwpAQCAtMzIsMzEgKzMyLDE4IEBACiAgKiBAY29uc3RydWN0b3IKICAqIEBleHRlbmRz
IHtXZWJJbnNwZWN0b3IuUGFuZWx9CiAgKiBAcGFyYW0ge3N0cmluZ30gaWQKLSAqIEBwYXJhbSB7
c3RyaW5nfSBsYWJlbAogICogQHBhcmFtIHtzdHJpbmd9IHBhZ2VVUkwKLSAqIEBwYXJhbSB7c3Ry
aW5nfSBpY29uVVJMCiAgKi8KLVdlYkluc3BlY3Rvci5FeHRlbnNpb25QYW5lbCA9IGZ1bmN0aW9u
KGlkLCBsYWJlbCwgcGFnZVVSTCwgaWNvblVSTCkKK1dlYkluc3BlY3Rvci5FeHRlbnNpb25QYW5l
bCA9IGZ1bmN0aW9uKGlkLCBwYWdlVVJMKQogewogICAgIFdlYkluc3BlY3Rvci5QYW5lbC5jYWxs
KHRoaXMsIGlkKTsKICAgICB0aGlzLnNldEhpZGVPbkRldGFjaCgpOwotICAgIHRoaXMuX3Rvb2xi
YXJJdGVtTGFiZWwgPSBsYWJlbDsKICAgICB0aGlzLl9zdGF0dXNCYXJJdGVtcyA9IFtdOwotCi0g
ICAgaWYgKGljb25VUkwpIHsKLSAgICAgICAgdGhpcy5fYWRkU3R5bGVSdWxlKCIudG9vbGJhci1p
dGVtLiIgKyBpZCArICIgLnRvb2xiYXItaWNvbiIsICJiYWNrZ3JvdW5kLWltYWdlOiB1cmwoIiAr
IGljb25VUkwgKyAiKTsiKTsKLSAgICAgICAgdGhpcy5fYWRkU3R5bGVSdWxlKCIudG9vbGJhci1z
bWFsbCAudG9vbGJhci1pdGVtLiIgKyBpZCArICIgLnRvb2xiYXItaWNvbiIsICJiYWNrZ3JvdW5k
LXBvc2l0aW9uLXg6IC0zMnB4OyIpOwotICAgIH0KICAgICB2YXIgZXh0ZW5zaW9uVmlldyA9IG5l
dyBXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uVmlldyhpZCwgcGFnZVVSTCwgImV4dGVuc2lvbiBwYW5l
bCIpOwogICAgIGV4dGVuc2lvblZpZXcuc2hvdyh0aGlzLmVsZW1lbnQpOwogfQogCiBXZWJJbnNw
ZWN0b3IuRXh0ZW5zaW9uUGFuZWwucHJvdG90eXBlID0gewotICAgIGdldCB0b29sYmFySXRlbUxh
YmVsKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl90b29sYmFySXRlbUxhYmVsOwotICAg
IH0sCi0KICAgICBkZWZhdWx0Rm9jdXNlZEVsZW1lbnQ6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAg
ICAgIHJldHVybiB0aGlzLnNpZGViYXJUcmVlRWxlbWVudCB8fCB0aGlzLmVsZW1lbnQ7CkBAIC0x
MDAsMTMgKzg3LDYgQEAgV2ViSW5zcGVjdG9yLkV4dGVuc2lvblBhbmVsLnByb3RvdHlwZSA9IHsK
ICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5leHRlbnNpb25TZXJ2ZXIubm90aWZ5U2VhcmNo
QWN0aW9uKHRoaXMubmFtZSwgV2ViSW5zcGVjdG9yLmV4dGVuc2lvbkFQSS5wYW5lbHMuU2VhcmNo
QWN0aW9uLlByZXZpb3VzU2VhcmNoUmVzdWx0KTsKICAgICAgICAgV2ViSW5zcGVjdG9yLlBhbmVs
LnByb3RvdHlwZS5qdW1wVG9QcmV2aW91c1NlYXJjaFJlc3VsdC5jYWxsKHRoaXMpOwotICAgIH0s
Ci0KLSAgICBfYWRkU3R5bGVSdWxlOiBmdW5jdGlvbihzZWxlY3RvciwgYm9keSkKLSAgICB7Ci0g
ICAgICAgIHZhciBzdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7Ci0gICAg
ICAgIHN0eWxlLnRleHRDb250ZW50ID0gc2VsZWN0b3IgKyAiIHsgIiArIGJvZHkgKyAiIH0iOwot
ICAgICAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHN0eWxlKTsKICAgICB9CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9uU2Vy
dmVyLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25TZXJ2
ZXIuanMKaW5kZXggY2UwMTU3ZjlmZTViMzI4MDM5NTA4ZTM5NDE4YjAwMmMyYmQxMWE0Mi4uNjYw
YmQ1YjgxZmI5NDRjOTE2NmRhYmY1YjM4N2ZhMTJjN2M3OWVjNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25TZXJ2ZXIuanMKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25TZXJ2ZXIuanMKQEAgLTE5
NywxMSArMTk3LDEwIEBAIFdlYkluc3BlY3Rvci5FeHRlbnNpb25TZXJ2ZXIucHJvdG90eXBlID0g
ewogICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3N0YXR1cy5FX0VYSVNUUyhpZCk7CiAKICAgICAg
ICAgdmFyIHBhZ2UgPSB0aGlzLl9leHBhbmRSZXNvdXJjZVBhdGgocG9ydC5fZXh0ZW5zaW9uT3Jp
Z2luLCBtZXNzYWdlLnBhZ2UpOwotICAgICAgICB2YXIgaWNvbiA9IHRoaXMuX2V4cGFuZFJlc291
cmNlUGF0aChwb3J0Ll9leHRlbnNpb25PcmlnaW4sIG1lc3NhZ2UuaWNvbikKLSAgICAgICAgdmFy
IHBhbmVsID0gbmV3IFdlYkluc3BlY3Rvci5FeHRlbnNpb25QYW5lbChpZCwgbWVzc2FnZS50aXRs
ZSwgcGFnZSwgaWNvbik7Ci0gICAgICAgIHRoaXMuX2NsaWVudE9iamVjdHNbaWRdID0gcGFuZWw7
Ci0gICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHNbaWRdID0gcGFuZWw7Ci0gICAgICAgIFdlYklu
c3BlY3Rvci5hZGRQYW5lbChwYW5lbCk7CisgICAgICAgIHZhciBwYW5lbERlc2NyaXB0b3IgPSBu
ZXcgV2ViSW5zcGVjdG9yLlBhbmVsRGVzY3JpcHRvcihpZCwgbWVzc2FnZS50aXRsZSwgV2ViSW5z
cGVjdG9yLkV4dGVuc2lvblBhbmVsLmJpbmQobnVsbCwgaWQsIHBhZ2UpKTsKKyAgICAgICAgcGFu
ZWxEZXNjcmlwdG9yLnNldEljb25VUkwodGhpcy5fZXhwYW5kUmVzb3VyY2VQYXRoKHBvcnQuX2V4
dGVuc2lvbk9yaWdpbiwgbWVzc2FnZS5pY29uKSk7CisgICAgICAgIHRoaXMuX2NsaWVudE9iamVj
dHNbaWRdID0gcGFuZWxEZXNjcmlwdG9yLnBhbmVsKCk7CisgICAgICAgIFdlYkluc3BlY3Rvci5p
bnNwZWN0b3JWaWV3LmFkZFBhbmVsKHBhbmVsRGVzY3JpcHRvcik7CiAgICAgICAgIHJldHVybiB0
aGlzLl9zdGF0dXMuT0soKTsKICAgICB9LAogCkBAIC0yMzMsNyArMjMyLDcgQEAgV2ViSW5zcGVj
dG9yLkV4dGVuc2lvblNlcnZlci5wcm90b3R5cGUgPSB7CiAKICAgICBfb25DcmVhdGVTaWRlYmFy
UGFuZTogZnVuY3Rpb24obWVzc2FnZSkKICAgICB7Ci0gICAgICAgIHZhciBwYW5lbCA9IFdlYklu
c3BlY3Rvci5wYW5lbHNbbWVzc2FnZS5wYW5lbF07CisgICAgICAgIHZhciBwYW5lbCA9IFdlYklu
c3BlY3Rvci5wYW5lbChtZXNzYWdlLnBhbmVsKTsKICAgICAgICAgaWYgKCFwYW5lbCkKICAgICAg
ICAgICAgIHJldHVybiB0aGlzLl9zdGF0dXMuRV9OT1RGT1VORChtZXNzYWdlLnBhbmVsKTsKICAg
ICAgICAgaWYgKCFwYW5lbC5zaWRlYmFyRWxlbWVudCB8fCAhcGFuZWwuc2lkZWJhclBhbmVzKQpA
QCAtNTMyLDEwICs1MzEsMTAgQEAgV2ViSW5zcGVjdG9yLkV4dGVuc2lvblNlcnZlci5wcm90b3R5
cGUgPSB7CiAgICAgX29uQWRkQXVkaXRDYXRlZ29yeTogZnVuY3Rpb24obWVzc2FnZSwgcG9ydCkK
ICAgICB7CiAgICAgICAgIHZhciBjYXRlZ29yeSA9IG5ldyBXZWJJbnNwZWN0b3IuRXh0ZW5zaW9u
QXVkaXRDYXRlZ29yeShwb3J0Ll9leHRlbnNpb25PcmlnaW4sIG1lc3NhZ2UuaWQsIG1lc3NhZ2Uu
ZGlzcGxheU5hbWUsIG1lc3NhZ2UucmVzdWx0Q291bnQpOwotICAgICAgICBpZiAoV2ViSW5zcGVj
dG9yLnBhbmVscy5hdWRpdHMuZ2V0Q2F0ZWdvcnkoY2F0ZWdvcnkuaWQpKQorICAgICAgICBpZiAo
V2ViSW5zcGVjdG9yLnBhbmVsKCJhdWRpdHMiKS5nZXRDYXRlZ29yeShjYXRlZ29yeS5pZCkpCiAg
ICAgICAgICAgICByZXR1cm4gdGhpcy5fc3RhdHVzLkVfRVhJU1RTKGNhdGVnb3J5LmlkKTsKICAg
ICAgICAgdGhpcy5fY2xpZW50T2JqZWN0c1ttZXNzYWdlLmlkXSA9IGNhdGVnb3J5OwotICAgICAg
ICBXZWJJbnNwZWN0b3IucGFuZWxzLmF1ZGl0cy5hZGRDYXRlZ29yeShjYXRlZ29yeSk7CisgICAg
ICAgIFdlYkluc3BlY3Rvci5wYW5lbCgiYXVkaXRzIikuYWRkQ2F0ZWdvcnkoY2F0ZWdvcnkpOwog
ICAgIH0sCiAKICAgICBfb25BZGRBdWRpdFJlc3VsdDogZnVuY3Rpb24obWVzc2FnZSkKQEAgLTU3
NSwxMiArNTc0LDE3IEBAIFdlYkluc3BlY3Rvci5FeHRlbnNpb25TZXJ2ZXIucHJvdG90eXBlID0g
ewogICAgICAgICAgICAgV2ViSW5zcGVjdG9yLndvcmtzcGFjZSwKICAgICAgICAgICAgIFdlYklu
c3BlY3Rvci5VSVNvdXJjZUNvZGVQcm92aWRlci5FdmVudHMuVUlTb3VyY2VDb2RlQWRkZWQsCiAg
ICAgICAgICAgICB0aGlzLl9ub3RpZnlSZXNvdXJjZUFkZGVkKTsKLSAgICAgICAgaWYgKFdlYklu
c3BlY3Rvci5wYW5lbHMuZWxlbWVudHMpIHsKLSAgICAgICAgICAgIHRoaXMuX3JlZ2lzdGVyQXV0
b3N1YnNjcmlwdGlvbkhhbmRsZXIoV2ViSW5zcGVjdG9yLmV4dGVuc2lvbkFQSS5FdmVudHMuRWxl
bWVudHNQYW5lbE9iamVjdFNlbGVjdGVkLAotICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5w
YW5lbHMuZWxlbWVudHMudHJlZU91dGxpbmUsCi0gICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9y
LkVsZW1lbnRzVHJlZU91dGxpbmUuRXZlbnRzLlNlbGVjdGVkTm9kZUNoYW5nZWQsCi0gICAgICAg
ICAgICAgICAgdGhpcy5fbm90aWZ5RWxlbWVudHNTZWxlY3Rpb25DaGFuZ2VkKTsKLSAgICAgICAg
fQorICAgICAgICB0aGlzLl9yZWdpc3RlclN1YnNjcmlwdGlvbkhhbmRsZXIoV2ViSW5zcGVjdG9y
LmV4dGVuc2lvbkFQSS5FdmVudHMuRWxlbWVudHNQYW5lbE9iamVjdFNlbGVjdGVkLAorICAgICAg
ICAgICAgZnVuY3Rpb24oKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIFdlYkluc3Bl
Y3Rvci5wYW5lbCgiZWxlbWVudHMiKS50cmVlT3V0bGluZS5hZGRFdmVudExpc3RlbmVyKFdlYklu
c3BlY3Rvci5FbGVtZW50c1RyZWVPdXRsaW5lLkV2ZW50cy5TZWxlY3RlZE5vZGVDaGFuZ2VkLCB0
aGlzLl9ub3RpZnlFbGVtZW50c1NlbGVjdGlvbkNoYW5nZWQsIHRoaXMpOworICAgICAgICAgICAg
fS5iaW5kKHRoaXMpLAorICAgICAgICAgICAgZnVuY3Rpb24gKCkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWwoImVsZW1lbnRzIikudHJlZU91dGxpbmUu
cmVtb3ZlRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRWxlbWVudHNUcmVlT3V0bGluZS5FdmVu
dHMuU2VsZWN0ZWROb2RlQ2hhbmdlZCwgdGhpcy5fbm90aWZ5RWxlbWVudHNTZWxlY3Rpb25DaGFu
Z2VkLCB0aGlzKTsKKyAgICAgICAgICAgIH0uYmluZCh0aGlzKQorICAgICAgICApOworCiAgICAg
ICAgIHRoaXMuX3JlZ2lzdGVyQXV0b3N1YnNjcmlwdGlvbkhhbmRsZXIoV2ViSW5zcGVjdG9yLmV4
dGVuc2lvbkFQSS5FdmVudHMuUmVzb3VyY2VDb250ZW50Q29tbWl0dGVkLAogICAgICAgICAgICAg
V2ViSW5zcGVjdG9yLndvcmtzcGFjZSwKICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5Xb3Jrc3Bh
Y2UuRXZlbnRzLlVJU291cmNlQ29kZUNvbnRlbnRDb21taXR0ZWQsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luc3BlY3RvckZyb250ZW5kQVBJLmpzIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9JbnNwZWN0b3JGcm9udGVuZEFQSS5q
cwppbmRleCA0NzMyNjcwOTE1YjJjMzFiZjgyNzRiNGZhOTJhNDg1ZDZmYzU2MzU0Li4yY2EyOWYz
YWRiY2MwZGNiOTk4ZTg1ZDA1Yzk0NmI3MjFjNjM3ZjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luc3BlY3RvckZyb250ZW5kQVBJLmpzCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW5zcGVjdG9yRnJvbnRlbmRBUEkuanMK
QEAgLTQ3LDEyICs0NywxMiBAQCBJbnNwZWN0b3JGcm9udGVuZEFQSSA9IHsKIAogICAgIGlzVGlt
ZWxpbmVQcm9maWxpbmdFbmFibGVkOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICByZXR1cm4g
V2ViSW5zcGVjdG9yLnBhbmVscy50aW1lbGluZS50aW1lbGluZVByb2ZpbGluZ0VuYWJsZWQ7Cisg
ICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IucGFuZWxzLnRpbWVsaW5lICYmIFdlYkluc3BlY3Rv
ci5wYW5lbHMudGltZWxpbmUudGltZWxpbmVQcm9maWxpbmdFbmFibGVkOwogICAgIH0sCiAKICAg
ICBzZXRUaW1lbGluZVByb2ZpbGluZ0VuYWJsZWQ6IGZ1bmN0aW9uKGVuYWJsZWQpCiAgICAgewot
ICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLnRpbWVsaW5lLnNldFRpbWVsaW5lUHJvZmlsaW5n
RW5hYmxlZChlbmFibGVkKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVsKCJ0aW1lbGluZSIp
LnNldFRpbWVsaW5lUHJvZmlsaW5nRW5hYmxlZChlbmFibGVkKTsKICAgICB9LAogCiAgICAgaXNQ
cm9maWxpbmdKYXZhU2NyaXB0OiBmdW5jdGlvbigpCkBAIC04Miw3ICs4Miw3IEBAIEluc3BlY3Rv
ckZyb250ZW5kQVBJID0gewogCiAgICAgc2hvd0NvbnNvbGU6IGZ1bmN0aW9uKCkKICAgICB7Ci0g
ICAgICAgIFdlYkluc3BlY3Rvci5pbnNwZWN0b3JWaWV3LnNldEN1cnJlbnRQYW5lbChXZWJJbnNw
ZWN0b3IucGFuZWxzLmNvbnNvbGUpOworICAgICAgICBXZWJJbnNwZWN0b3Iuc2hvd1BhbmVsKCJj
b25zb2xlIik7CiAgICAgfSwKIAogICAgIHNob3dNYWluUmVzb3VyY2VGb3JGcmFtZTogZnVuY3Rp
b24oZnJhbWVJZCkKQEAgLTkyLDcgKzkyLDcgQEAgSW5zcGVjdG9yRnJvbnRlbmRBUEkgPSB7CiAK
ICAgICBzaG93UmVzb3VyY2VzOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICBXZWJJbnNwZWN0
b3IuaW5zcGVjdG9yVmlldy5zZXRDdXJyZW50UGFuZWwoV2ViSW5zcGVjdG9yLnBhbmVscy5yZXNv
dXJjZXMpOworICAgICAgICBXZWJJbnNwZWN0b3Iuc2hvd1BhbmVsKCJyZXNvdXJjZXMiKTsKICAg
ICB9LAogCiAgICAgc2V0RG9ja2luZ1VuYXZhaWxhYmxlOiBmdW5jdGlvbih1bmF2YWlsYWJsZSkK
QEAgLTEwMiw3ICsxMDIsNyBAQCBJbnNwZWN0b3JGcm9udGVuZEFQSSA9IHsKIAogICAgIGVudGVy
SW5zcGVjdEVsZW1lbnRNb2RlOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICBXZWJJbnNwZWN0
b3IudG9nZ2xlU2VhcmNoaW5nRm9yTm9kZSgpOworICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWwo
ImVsZW1lbnRzIikudG9nZ2xlU2VhcmNoaW5nRm9yTm9kZSgpOwogICAgIH0sCiAKICAgICBzYXZl
ZFVSTDogZnVuY3Rpb24odXJsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9JbnNwZWN0b3JWaWV3LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9JbnNwZWN0b3JWaWV3LmpzCmluZGV4IGM2NjAxYzdmMTZiZDU3NmI0ZWNjZDA5Zjcx
OGY0OTdkMTAwYzVhNWUuLmQ0OWIwNGUzMzQ2MDAyOWM2OTFjMDVhZjkyODgwODNjNWZhYjBmMGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW5zcGVjdG9y
Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luc3BlY3Rv
clZpZXcuanMKQEAgLTQzLDYgKzQzLDcgQEAgV2ViSW5zcGVjdG9yLkluc3BlY3RvclZpZXcgPSBm
dW5jdGlvbigpCiAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsIHRoaXMu
X2tleURvd24uYmluZCh0aGlzKSwgZmFsc2UpOwogICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVu
ZXIoImtleXByZXNzIiwgdGhpcy5fa2V5UHJlc3MuYmluZCh0aGlzKSwgZmFsc2UpOwogICAgIHRo
aXMuX3BhbmVsT3JkZXIgPSBbXTsKKyAgICB0aGlzLl9wYW5lbERlc2NyaXB0b3JzID0ge307CiAK
ICAgICAvLyBXaW5kb3dzIGFuZCBNYWMgaGF2ZSB0d28gZGlmZmVyZW50IGRlZmluaXRpb25zIG9m
ICdbJyBhbmQgJ10nLCBzbyBhY2NlcHQgYm90aCBvZiBlYWNoLgogICAgIHRoaXMuX29wZW5CcmFj
a2V0SWRlbnRpZmllcnMgPSBbIlUrMDA1QiIsICJVKzAwREIiXS5rZXlTZXQoKTsKQEAgLTUyLDE0
ICs1Myw0MiBAQCBXZWJJbnNwZWN0b3IuSW5zcGVjdG9yVmlldyA9IGZ1bmN0aW9uKCkKIH0KIAog
V2ViSW5zcGVjdG9yLkluc3BlY3RvclZpZXcuRXZlbnRzID0gewotICAgIFBhbmVsU2VsZWN0ZWQ6
ICJwYW5lbC1zZWxlY3RlZCIKKyAgICBQYW5lbFNlbGVjdGVkOiAiUGFuZWxTZWxlY3RlZCIKIH0K
IAogV2ViSW5zcGVjdG9yLkluc3BlY3RvclZpZXcucHJvdG90eXBlID0gewotICAgIGFkZFBhbmVs
OiBmdW5jdGlvbihwYW5lbCkKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5Q
YW5lbERlc2NyaXB0b3J9IHBhbmVsRGVzY3JpcHRvcgorICAgICAqLworICAgIGFkZFBhbmVsOiBm
dW5jdGlvbihwYW5lbERlc2NyaXB0b3IpCisgICAgeworICAgICAgICB0aGlzLl9wYW5lbE9yZGVy
LnB1c2gocGFuZWxEZXNjcmlwdG9yLm5hbWUoKSk7CisgICAgICAgIHRoaXMuX3BhbmVsRGVzY3Jp
cHRvcnNbcGFuZWxEZXNjcmlwdG9yLm5hbWUoKV0gPSBwYW5lbERlc2NyaXB0b3I7CisgICAgICAg
IFdlYkluc3BlY3Rvci50b29sYmFyLmFkZFBhbmVsKHBhbmVsRGVzY3JpcHRvcik7CisgICAgfSwK
KworICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBwYW5lbE5hbWUKKyAgICAgKiBAcmV0
dXJuIHs/V2ViSW5zcGVjdG9yLlBhbmVsfQorICAgICAqLworICAgIHBhbmVsOiBmdW5jdGlvbihw
YW5lbE5hbWUpCisgICAgeworICAgICAgICB2YXIgcGFuZWxEZXNjcmlwdG9yID0gdGhpcy5fcGFu
ZWxEZXNjcmlwdG9yc1twYW5lbE5hbWVdOworICAgICAgICBpZiAoIXBhbmVsRGVzY3JpcHRvciAm
JiB0aGlzLl9wYW5lbE9yZGVyLmxlbmd0aCkKKyAgICAgICAgICAgIHBhbmVsRGVzY3JpcHRvciA9
IHRoaXMuX3BhbmVsRGVzY3JpcHRvcnNbdGhpcy5fcGFuZWxPcmRlclswXV07CisgICAgICAgIHJl
dHVybiBwYW5lbERlc2NyaXB0b3IgPyBwYW5lbERlc2NyaXB0b3IucGFuZWwoKSA6IG51bGw7Cisg
ICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBwYW5lbE5hbWUKKyAgICAg
KiBAcmV0dXJuIHs/V2ViSW5zcGVjdG9yLlBhbmVsfQorICAgICAqLworICAgIHNob3dQYW5lbDog
ZnVuY3Rpb24ocGFuZWxOYW1lKQogICAgIHsKLSAgICAgICAgdGhpcy5fcGFuZWxPcmRlci5wdXNo
KHBhbmVsKTsKLSAgICAgICAgV2ViSW5zcGVjdG9yLnRvb2xiYXIuYWRkUGFuZWwocGFuZWwpOwor
ICAgICAgICB2YXIgcGFuZWwgPSB0aGlzLnBhbmVsKHBhbmVsTmFtZSk7CisgICAgICAgIGlmIChw
YW5lbCkKKyAgICAgICAgICAgIHRoaXMuc2V0Q3VycmVudFBhbmVsKHBhbmVsKTsKKyAgICAgICAg
cmV0dXJuIHBhbmVsOwogICAgIH0sCiAKICAgICBjdXJyZW50UGFuZWw6IGZ1bmN0aW9uKCkKQEAg
LTExNiw5ICsxNDUsOSBAQCBXZWJJbnNwZWN0b3IuSW5zcGVjdG9yVmlldy5wcm90b3R5cGUgPSB7
CiAgICAgICAgIGlmICh0aGlzLl9vcGVuQnJhY2tldElkZW50aWZpZXJzLmhhc093blByb3BlcnR5
KGV2ZW50LmtleUlkZW50aWZpZXIpKSB7CiAgICAgICAgICAgICB2YXIgaXNSb3RhdGVMZWZ0ID0g
V2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuZXZlbnRIYXNDdHJsT3JNZXRhKGV2ZW50KSAm
JiAhZXZlbnQuc2hpZnRLZXkgJiYgIWV2ZW50LmFsdEtleTsKICAgICAgICAgICAgIGlmIChpc1Jv
dGF0ZUxlZnQpIHsKLSAgICAgICAgICAgICAgICB2YXIgaW5kZXggPSB0aGlzLl9wYW5lbE9yZGVy
LmluZGV4T2YodGhpcy5jdXJyZW50UGFuZWwoKSk7CisgICAgICAgICAgICAgICAgdmFyIGluZGV4
ID0gdGhpcy5fcGFuZWxPcmRlci5pbmRleE9mKHRoaXMuY3VycmVudFBhbmVsKCkubmFtZSk7CiAg
ICAgICAgICAgICAgICAgaW5kZXggPSAoaW5kZXggPT09IDApID8gdGhpcy5fcGFuZWxPcmRlci5s
ZW5ndGggLSAxIDogaW5kZXggLSAxOwotICAgICAgICAgICAgICAgIHRoaXMuX3BhbmVsT3JkZXJb
aW5kZXhdLnRvb2xiYXJJdGVtLmNsaWNrKCk7CisgICAgICAgICAgICAgICAgdGhpcy5zaG93UGFu
ZWwodGhpcy5fcGFuZWxPcmRlcltpbmRleF0pOwogICAgICAgICAgICAgICAgIGV2ZW50LmNvbnN1
bWUodHJ1ZSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQpAQCAtMTM0
LDkgKzE2Myw5IEBAIFdlYkluc3BlY3Rvci5JbnNwZWN0b3JWaWV3LnByb3RvdHlwZSA9IHsKICAg
ICAgICAgaWYgKHRoaXMuX2Nsb3NlQnJhY2tldElkZW50aWZpZXJzLmhhc093blByb3BlcnR5KGV2
ZW50LmtleUlkZW50aWZpZXIpKSB7CiAgICAgICAgICAgICB2YXIgaXNSb3RhdGVSaWdodCA9IFdl
Ykluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0LmV2ZW50SGFzQ3RybE9yTWV0YShldmVudCkgJiYg
IWV2ZW50LnNoaWZ0S2V5ICYmICFldmVudC5hbHRLZXk7CiAgICAgICAgICAgICBpZiAoaXNSb3Rh
dGVSaWdodCkgewotICAgICAgICAgICAgICAgIHZhciBpbmRleCA9IHRoaXMuX3BhbmVsT3JkZXIu
aW5kZXhPZih0aGlzLmN1cnJlbnRQYW5lbCgpKTsKKyAgICAgICAgICAgICAgICB2YXIgaW5kZXgg
PSB0aGlzLl9wYW5lbE9yZGVyLmluZGV4T2YodGhpcy5jdXJyZW50UGFuZWwoKS5uYW1lKTsKICAg
ICAgICAgICAgICAgICBpbmRleCA9IChpbmRleCArIDEpICUgdGhpcy5fcGFuZWxPcmRlci5sZW5n
dGg7Ci0gICAgICAgICAgICAgICAgdGhpcy5fcGFuZWxPcmRlcltpbmRleF0udG9vbGJhckl0ZW0u
Y2xpY2soKTsKKyAgICAgICAgICAgICAgICB0aGlzLnNob3dQYW5lbCh0aGlzLl9wYW5lbE9yZGVy
W2luZGV4XSk7CiAgICAgICAgICAgICAgICAgZXZlbnQuY29uc3VtZSh0cnVlKTsKICAgICAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtQYW5lbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya1BhbmVsLmpzCmluZGV4IDJlZmMxZGFkZjc0ZjI2NTdh
NDEzOTdlODYxMjQ1MzA5YzU2YWM1MjEuLjRjOWI5OWJlNWE3ZmVlN2Y5YTU2YmU2ZDBlYzRjNTFh
YTFiMWY5NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
TmV0d29ya1BhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
TmV0d29ya1BhbmVsLmpzCkBAIC0xMjUxLDExICsxMjUxLDYgQEAgV2ViSW5zcGVjdG9yLk5ldHdv
cmtQYW5lbCA9IGZ1bmN0aW9uKCkKIH0KIAogV2ViSW5zcGVjdG9yLk5ldHdvcmtQYW5lbC5wcm90
b3R5cGUgPSB7Ci0gICAgZ2V0IHRvb2xiYXJJdGVtTGFiZWwoKQotICAgIHsKLSAgICAgICAgcmV0
dXJuIFdlYkluc3BlY3Rvci5VSVN0cmluZygiTmV0d29yayIpOwotICAgIH0sCi0KICAgICBnZXQg
c3RhdHVzQmFySXRlbXMoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX25ldHdvcmtMb2dW
aWV3LnN0YXR1c0Jhckl0ZW1zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9QYW5lbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
UGFuZWwuanMKaW5kZXggZjY1ZjVlYTMwZjc2OWM3MTFiYWM5MjQ0MWZhMGY4MTg2OTk1YzYxNS4u
Zjk5N2VkYWIwODRiYmYzNzFlM2Y0NmRjZWExZDk5MTQ3YjAyMGQzMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9QYW5lbC5qcworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1BhbmVsLmpzCkBAIC00NywxNSArNDcsNiBAQCBXZWJJ
bnNwZWN0b3IuUGFuZWwgPSBmdW5jdGlvbihuYW1lKQogV2ViSW5zcGVjdG9yLlBhbmVsLmNvdW50
ZXJSaWdodE1hcmdpbiA9IDI1OwogCiBXZWJJbnNwZWN0b3IuUGFuZWwucHJvdG90eXBlID0gewot
ICAgIGdldCB0b29sYmFySXRlbSgpCi0gICAgewotICAgICAgICBpZiAodGhpcy5fdG9vbGJhckl0
ZW0pCi0gICAgICAgICAgICByZXR1cm4gdGhpcy5fdG9vbGJhckl0ZW07Ci0KLSAgICAgICAgdGhp
cy5fdG9vbGJhckl0ZW0gPSBXZWJJbnNwZWN0b3IuVG9vbGJhci5jcmVhdGVQYW5lbFRvb2xiYXJJ
dGVtKHRoaXMpOwotICAgICAgICByZXR1cm4gdGhpcy5fdG9vbGJhckl0ZW07Ci0gICAgfSwKLQog
ICAgIGdldCBuYW1lKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9wYW5lbE5hbWU7CkBA
IC03Niw5ICs2Nyw2IEBAIFdlYkluc3BlY3Rvci5QYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAg
ICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGFuZWwtc3RhdHVzLWJhciIpLmFwcGVuZENo
aWxkKHRoaXMuX3N0YXR1c0Jhckl0ZW1Db250YWluZXIpOwogICAgICAgICB9CiAKLSAgICAgICAg
aWYgKCJfdG9vbGJhckl0ZW0iIGluIHRoaXMpCi0gICAgICAgICAgICB0aGlzLl90b29sYmFySXRl
bS5hZGRTdHlsZUNsYXNzKCJ0b2dnbGVkLW9uIik7Ci0KICAgICAgICAgdGhpcy5mb2N1cygpOwog
ICAgIH0sCiAKQEAgLTg3LDggKzc1LDYgQEAgV2ViSW5zcGVjdG9yLlBhbmVsLnByb3RvdHlwZSA9
IHsKICAgICAgICAgaWYgKHRoaXMuX3N0YXR1c0Jhckl0ZW1Db250YWluZXIgJiYgdGhpcy5fc3Rh
dHVzQmFySXRlbUNvbnRhaW5lci5wYXJlbnROb2RlKQogICAgICAgICAgICAgdGhpcy5fc3RhdHVz
QmFySXRlbUNvbnRhaW5lci5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMuX3N0YXR1c0Jhckl0
ZW1Db250YWluZXIpOwogICAgICAgICBkZWxldGUgdGhpcy5fc3RhdHVzQmFySXRlbUNvbnRhaW5l
cjsKLSAgICAgICAgaWYgKCJfdG9vbGJhckl0ZW0iIGluIHRoaXMpCi0gICAgICAgICAgICB0aGlz
Ll90b29sYmFySXRlbS5yZW1vdmVTdHlsZUNsYXNzKCJ0b2dnbGVkLW9uIik7CiAgICAgfSwKIAog
ICAgIHJlc2V0OiBmdW5jdGlvbigpCkBAIC0xOTMsMTAgKzE3OSw2IEBAIFdlYkluc3BlY3Rvci5Q
YW5lbC5wcm90b3R5cGUgPSB7CiAKICAgICAvLyBTaG91bGQgYmUgaW1wbGVtZW50ZWQgYnkgYW5j
ZXN0b3JzLgogCi0gICAgZ2V0IHRvb2xiYXJJdGVtTGFiZWwoKQotICAgIHsKLSAgICB9LAotCiAg
ICAgZ2V0IHN0YXR1c0Jhckl0ZW1zKCkKICAgICB7CiAgICAgfSwKQEAgLTI1MiwzICsyMzQsNjMg
QEAgV2ViSW5zcGVjdG9yLlBhbmVsLnByb3RvdHlwZSA9IHsKIH0KIAogV2ViSW5zcGVjdG9yLlBh
bmVsLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuVmlldy5wcm90b3R5cGU7CisK
Ky8qKgorICogQGNvbnN0cnVjdG9yCisgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICogQHBhcmFt
IHtzdHJpbmd9IHRpdGxlCisgKiBAcGFyYW0ge2Z1bmN0aW9uKG5ldzpXZWJJbnNwZWN0b3IuUGFu
ZWwpfSBjb25zdHJ1Y3RvcgorICogQHBhcmFtIHtib29sZWFuPX0gbGF6eUluaXQKKyAqLworV2Vi
SW5zcGVjdG9yLlBhbmVsRGVzY3JpcHRvciA9IGZ1bmN0aW9uKG5hbWUsIHRpdGxlLCBjb25zdHJ1
Y3RvciwgbGF6eUluaXQpCit7CisgICAgdGhpcy5fbmFtZSA9IG5hbWU7CisgICAgdGhpcy5fdGl0
bGUgPSB0aXRsZTsKKyAgICB0aGlzLl9jb25zdHJ1Y3RvciA9IGNvbnN0cnVjdG9yOworICAgIHRo
aXMuX3BhbmVsID0gbGF6eUluaXQgPyBudWxsIDogdGhpcy5wYW5lbCgpOworfQorCitXZWJJbnNw
ZWN0b3IuUGFuZWxEZXNjcmlwdG9yLnByb3RvdHlwZSA9IHsKKyAgICAvKioKKyAgICAgKiBAcmV0
dXJuIHtzdHJpbmd9CisgICAgICovCisgICAgbmFtZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIHRoaXMuX25hbWU7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEByZXR1cm4g
e3N0cmluZ30KKyAgICAgKi8KKyAgICB0aXRsZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIHRoaXMuX3RpdGxlOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtz
dHJpbmd9CisgICAgICovCisgICAgaWNvblVSTDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIHRoaXMuX2ljb25VUkw7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7
c3RyaW5nfSBpY29uVVJMCisgICAgICovCisgICAgc2V0SWNvblVSTDogZnVuY3Rpb24oaWNvblVS
TCkKKyAgICB7CisgICAgICAgIHRoaXMuX2ljb25VUkwgPSBpY29uVVJMOworICAgIH0sCisKKyAg
ICAvKioKKyAgICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3IuUGFuZWx9CisgICAgICovCisgICAg
cGFuZWw6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5fcGFuZWwpCisgICAg
ICAgICAgICB0aGlzLl9wYW5lbCA9IG5ldyB0aGlzLl9jb25zdHJ1Y3RvcigpOworICAgICAgICBX
ZWJJbnNwZWN0b3IucGFuZWxzW3RoaXMuX25hbWVdID0gdGhpcy5fcGFuZWw7CisgICAgICAgIHJl
dHVybiB0aGlzLl9wYW5lbDsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVzUGFuZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVzUGFuZWwuanMKaW5kZXggOGYxYjZjZmQwZGUxYWM3ZTI0
MjUyOGE0MjlmYjBiNjViNzQyODNmZi4uMDg2OWQ1ODQyNWI4MDhiNmMwZmViN2M4NGNkNGVhYTIx
MGUwYzMzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Q
cm9maWxlc1BhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
UHJvZmlsZXNQYW5lbC5qcwpAQCAtMjg5LDExICsyODksNiBAQCBXZWJJbnNwZWN0b3IuUHJvZmls
ZXNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2NyZWF0ZUZpbGVTZWxlY3RvckVs
ZW1lbnQoKTsKICAgICB9LAogCi0gICAgZ2V0IHRvb2xiYXJJdGVtTGFiZWwoKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5VSVN0cmluZygiUHJvZmlsZXMiKTsKLSAgICB9LAot
CiAgICAgZ2V0IHN0YXR1c0Jhckl0ZW1zKCkKICAgICB7CiAgICAgICAgIHZhciBzdGF0dXNCYXJJ
dGVtcyA9IFt0aGlzLmVuYWJsZVRvZ2dsZUJ1dHRvbi5lbGVtZW50LCB0aGlzLnJlY29yZEJ1dHRv
bi5lbGVtZW50LCB0aGlzLmNsZWFyUmVzdWx0c0J1dHRvbi5lbGVtZW50LCB0aGlzLnByb2ZpbGVW
aWV3U3RhdHVzQmFySXRlbXNDb250YWluZXJdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZVRyZWVNb2RlbC5qcyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VUcmVlTW9kZWwuanMKaW5kZXggMzYxNjU3MTRk
NmM1OWFkYmM4M2Q1NmU0YjE5MjM4YzgxNjc0YjlhYy4uY2EyNWM5NTlmNTUwMjRmNTYwY2EyYzJh
YjQwY2ZhZWY2Njc5YzRhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9SZXNvdXJjZVRyZWVNb2RlbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1Jlc291cmNlVHJlZU1vZGVsLmpzCkBAIC04OSw2ICs4OSwxMSBAQCBXZWJJ
bnNwZWN0b3IuUmVzb3VyY2VUcmVlTW9kZWwucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9j
YWNoZWRSZXNvdXJjZXNQcm9jZXNzZWQgPSB0cnVlOwogICAgIH0sCiAKKyAgICBjYWNoZWRSZXNv
dXJjZXNMb2FkZWQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9jYWNo
ZWRSZXNvdXJjZXNQcm9jZXNzZWQ7CisgICAgfSwKKwogICAgIF9kaXNwYXRjaEluc3BlY3RlZFVS
TENoYW5nZWQ6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIEluc3BlY3RvckZyb250ZW5kSG9z
dC5pbnNwZWN0ZWRVUkxDaGFuZ2VkKFdlYkluc3BlY3Rvci5pbnNwZWN0ZWRQYWdlVVJMKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VzUGFu
ZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlc1BhbmVs
LmpzCmluZGV4IDg1ZDNjMjIyNmNmNzRjYjVlMTdkMmE2ZmQ1ZGMzNWJjNWMxODBmYmMuLmIyYTZh
MmI0ZDdkZjNkMmQzYjA5YmJjZmMwYmNmNTYwN2U1MTdmMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanMKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qcwpAQCAtOTYsMTQg
Kzk2LDExIEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZXNQYW5lbCA9IGZ1bmN0aW9uKGRhdGFiYXNl
KQogICAgIFdlYkluc3BlY3Rvci5yZXNvdXJjZVRyZWVNb2RlbC5hZGRFdmVudExpc3RlbmVyKFdl
Ykluc3BlY3Rvci5SZXNvdXJjZVRyZWVNb2RlbC5FdmVudFR5cGVzLk9uTG9hZCwgdGhpcy5fb25M
b2FkRXZlbnRGaXJlZCwgdGhpcyk7CiAgICAgV2ViSW5zcGVjdG9yLnJlc291cmNlVHJlZU1vZGVs
LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZU1vZGVsLkV2ZW50VHlw
ZXMuQ2FjaGVkUmVzb3VyY2VzTG9hZGVkLCB0aGlzLl9jYWNoZWRSZXNvdXJjZXNMb2FkZWQsIHRo
aXMpOwogICAgIFdlYkluc3BlY3Rvci5yZXNvdXJjZVRyZWVNb2RlbC5hZGRFdmVudExpc3RlbmVy
KFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVNb2RlbC5FdmVudFR5cGVzLldpbGxMb2FkQ2FjaGVk
UmVzb3VyY2VzLCB0aGlzLl9yZXNldFdpdGhGcmFtZXMsIHRoaXMpOworICAgIGlmIChXZWJJbnNw
ZWN0b3IucmVzb3VyY2VUcmVlTW9kZWwuY2FjaGVkUmVzb3VyY2VzTG9hZGVkKCkpCisgICAgICAg
IHRoaXMuX2NhY2hlZFJlc291cmNlc0xvYWRlZCgpOwogfQogCiBXZWJJbnNwZWN0b3IuUmVzb3Vy
Y2VzUGFuZWwucHJvdG90eXBlID0gewotICAgIGdldCB0b29sYmFySXRlbUxhYmVsKCkKLSAgICB7
Ci0gICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlc291cmNlcyIpOwotICAg
IH0sCi0KICAgICBnZXQgc3RhdHVzQmFySXRlbXMoKQogICAgIHsKICAgICAgICAgcmV0dXJuIFt0
aGlzLnN0b3JhZ2VWaWV3U3RhdHVzQmFySXRlbXNDb250YWluZXJdOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanMgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qcwppbmRleCBjMDAzZjlj
ZjhiMmVhZTdkYjIwNjM2MTJkYjQ1NmI5YzJmMTRlNmY4Li40ZjQ0N2IwOWZhZmY3NzUwMjNhZWU5
YWEyMGFjMTRmZmE1MmVmYzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qcwpAQCAtMTg5LDExICsxODksNiBAQCBXZWJJbnNwZWN0
b3IuU2NyaXB0c1BhbmVsLlBhdXNlT25FeGNlcHRpb25zU3RhdGUgPSB7CiB9OwogCiBXZWJJbnNw
ZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZSA9IHsKLSAgICBnZXQgdG9vbGJhckl0ZW1MYWJl
bCgpCi0gICAgewotICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTb3VyY2Vz
Iik7Ci0gICAgfSwKLQogICAgIGdldCBzdGF0dXNCYXJJdGVtcygpCiAgICAgewogICAgICAgICBy
ZXR1cm4gW3RoaXMuZW5hYmxlVG9nZ2xlQnV0dG9uLmVsZW1lbnQsIHRoaXMuX3BhdXNlT25FeGNl
cHRpb25CdXR0b24uZWxlbWVudCwgdGhpcy5fdG9nZ2xlRm9ybWF0U291cmNlQnV0dG9uLmVsZW1l
bnQsIHRoaXMuX3NjcmlwdFZpZXdTdGF0dXNCYXJJdGVtc0NvbnRhaW5lcl07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1N0eWxlc1NpZGViYXJQYW5lLmpz
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTaWRlYmFyUGFuZS5q
cwppbmRleCAyODY4MWYwY2U4OTdlMWFmM2NiMmNhNDBmZGZiZjBjMTQxZWZkODdiLi5hZGVhYWY1
ZjFhMzJjOTIzN2Q3NzhmNDJiNmJiZTM3MDk1MWI0ZGFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1N0eWxlc1NpZGViYXJQYW5lLmpzCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzU2lkZWJhclBhbmUuanMKQEAgLTEz
MzIsMTIgKzEzMzIsMTIgQEAgV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydGllc1NlY3Rpb24ucHJv
dG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5ydWxlID0gbmV3UnVsZTsKICAgICAgICAgICAg
IHRoaXMuc3R5bGVSdWxlID0geyBzZWN0aW9uOiB0aGlzLCBzdHlsZTogbmV3UnVsZS5zdHlsZSwg
c2VsZWN0b3JUZXh0OiBuZXdSdWxlLnNlbGVjdG9yVGV4dCwgbWVkaWE6IG5ld1J1bGUubWVkaWEs
IHNvdXJjZVVSTDogbmV3UnVsZS5zb3VyY2VVUkwsIHJ1bGU6IG5ld1J1bGUgfTsKIAotICAgICAg
ICAgICAgdGhpcy5wYW5lLnVwZGF0ZSgpOworICAgICAgICAgICAgdGhpcy5fcGFyZW50UGFuZS51
cGRhdGUoKTsKIAogICAgICAgICAgICAgdGhpcy5fbW92ZUVkaXRvckZyb21TZWxlY3Rvcihtb3Zl
RGlyZWN0aW9uKTsKICAgICAgICAgfQogCi0gICAgICAgIHZhciBzZWxlY3RlZE5vZGUgPSBXZWJJ
bnNwZWN0b3IucGFuZWxzLmVsZW1lbnRzLnNlbGVjdGVkRE9NTm9kZSgpOworICAgICAgICB2YXIg
c2VsZWN0ZWROb2RlID0gdGhpcy5fcGFyZW50UGFuZS5ub2RlOwogICAgICAgICBXZWJJbnNwZWN0
b3IuY3NzTW9kZWwuc2V0UnVsZVNlbGVjdG9yKHRoaXMucnVsZS5pZCwgc2VsZWN0ZWROb2RlID8g
c2VsZWN0ZWROb2RlLmlkIDogMCwgbmV3Q29udGVudCwgc3VjY2Vzc0NhbGxiYWNrLmJpbmQodGhp
cyksIHRoaXMuX21vdmVFZGl0b3JGcm9tU2VsZWN0b3IuYmluZCh0aGlzLCBtb3ZlRGlyZWN0aW9u
KSk7CiAgICAgfSwKIApAQCAtMTcyOSw4ICsxNzI5LDggQEAgV2ViSW5zcGVjdG9yLlN0eWxlUHJv
cGVydHlUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgY29udGFpbmVy
LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJ1cmwoIikpOwogICAgICAgICAg
ICAgICAgIGlmIChzZWxmLl9zdHlsZVJ1bGUuc291cmNlVVJMKQogICAgICAgICAgICAgICAgICAg
ICBocmVmVXJsID0gV2ViSW5zcGVjdG9yLmNvbXBsZXRlVVJMKHNlbGYuX3N0eWxlUnVsZS5zb3Vy
Y2VVUkwsIGhyZWZVcmwpOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKFdlYkluc3BlY3Rvci5w
YW5lbHMuZWxlbWVudHMuc2VsZWN0ZWRET01Ob2RlKCkpCi0gICAgICAgICAgICAgICAgICAgIGhy
ZWZVcmwgPSBXZWJJbnNwZWN0b3IucmVzb3VyY2VVUkxGb3JSZWxhdGVkTm9kZShXZWJJbnNwZWN0
b3IucGFuZWxzLmVsZW1lbnRzLnNlbGVjdGVkRE9NTm9kZSgpLCBocmVmVXJsKTsKKyAgICAgICAg
ICAgICAgICBlbHNlIGlmICh0aGlzLl9wYXJlbnRQYW5lLm5vZGUpCisgICAgICAgICAgICAgICAg
ICAgIGhyZWZVcmwgPSBXZWJJbnNwZWN0b3IucmVzb3VyY2VVUkxGb3JSZWxhdGVkTm9kZSh0aGlz
Ll9wYXJlbnRQYW5lLm5vZGUsIGhyZWZVcmwpOwogICAgICAgICAgICAgICAgIHZhciBoYXNSZXNv
dXJjZSA9ICEhV2ViSW5zcGVjdG9yLnJlc291cmNlRm9yVVJMKGhyZWZVcmwpOwogICAgICAgICAg
ICAgICAgIC8vIEZJWE1FOiBXZWJJbnNwZWN0b3IubGlua2lmeVVSTEFzTm9kZSgpIHNob3VsZCBy
ZWFsbHkgdXNlIGJhc2VVUkkuCiAgICAgICAgICAgICAgICAgY29udGFpbmVyLmFwcGVuZENoaWxk
KFdlYkluc3BlY3Rvci5saW5raWZ5VVJMQXNOb2RlKGhyZWZVcmwsIHVybCwgdW5kZWZpbmVkLCAh
aGFzUmVzb3VyY2UpKTsKQEAgLTE5MDQsNyArMTkwNCw3IEBAIFdlYkluc3BlY3Rvci5TdHlsZVBy
b3BlcnR5VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICAgICAgdmFyIGNvbG9yUmVn
ZXggPSAvKCg/OnJnYnxoc2wpYT9cKFteKV0rXCl8I1swLTlhLWZBLUZdezZ9fCNbMC05YS1mQS1G
XXszfXxcYlx3K1xiKD8hLSkpL2c7CiAgICAgICAgICAgICB2YXIgY29sb3JQcm9jZXNzb3IgPSBw
cm9jZXNzVmFsdWUuYmluZCh3aW5kb3csIGNvbG9yUmVnZXgsIHByb2Nlc3NDb2xvciwgbnVsbCk7
CiAKLSAgICAgICAgICAgIHZhbHVlRWxlbWVudC5hcHBlbmRDaGlsZChwcm9jZXNzVmFsdWUoL3Vy
bFwoXHMqKFteKVxzXSspXHMqXCkvZywgbGlua2lmeVVSTCwgV2ViSW5zcGVjdG9yLkNTU0tleXdv
cmRDb21wbGV0aW9ucy5pc0NvbG9yQXdhcmVQcm9wZXJ0eShzZWxmLm5hbWUpID8gY29sb3JQcm9j
ZXNzb3IgOiBudWxsLCB2YWx1ZSkpOworICAgICAgICAgICAgdmFsdWVFbGVtZW50LmFwcGVuZENo
aWxkKHByb2Nlc3NWYWx1ZSgvdXJsXChccyooW14pXHNdKylccypcKS9nLCBsaW5raWZ5VVJMLmJp
bmQodGhpcyksIFdlYkluc3BlY3Rvci5DU1NLZXl3b3JkQ29tcGxldGlvbnMuaXNDb2xvckF3YXJl
UHJvcGVydHkoc2VsZi5uYW1lKSA/IGNvbG9yUHJvY2Vzc29yIDogbnVsbCwgdmFsdWUpKTsKICAg
ICAgICAgfQogCiAgICAgICAgIHRoaXMubGlzdEl0ZW1FbGVtZW50LnJlbW92ZUNoaWxkcmVuKCk7
CkBAIC0yNDM5LDcgKzI0MzksNiBAQCBXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVt
ZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICB2YXIgc2Vj
dGlvbiA9IHRoaXMudHJlZU91dGxpbmUuc2VjdGlvbjsKLSAgICAgICAgdmFyIGVsZW1lbnRzUGFu
ZWwgPSBXZWJJbnNwZWN0b3IucGFuZWxzLmVsZW1lbnRzOwogICAgICAgICBzdHlsZVRleHQgPSBz
dHlsZVRleHQucmVwbGFjZSgvXHMvZywgIiAiKS50cmltKCk7IC8vIFJlcGxhY2UgJm5ic3A7IHdp
dGggd2hpdGVzcGFjZS4KICAgICAgICAgdmFyIHN0eWxlVGV4dExlbmd0aCA9IHN0eWxlVGV4dC5s
ZW5ndGg7CiAgICAgICAgIGlmICghc3R5bGVUZXh0TGVuZ3RoICYmIHVwZGF0ZUludGVyZmFjZSAm
JiAhaXNSZXZlcnQgJiYgdGhpcy5fbmV3UHJvcGVydHkgJiYgIXRoaXMuX2hhc0JlZW5Nb2RpZmll
ZEluY3JlbWVudGFsbHkoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9UaW1lbGluZVBhbmVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9UaW1lbGluZVBhbmVsLmpzCmluZGV4IGJmMDliY2Y5NGU4MThlYTA5NWQ1NmM1YWM0
MmQzMGRhODliMmZlOTMuLmJjNDVmNGI5NzVkZWQ0YThhYTM2MTRhYjNjYzE0NWZmZTA4YWFmMGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGltZWxpbmVQ
YW5lbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5l
UGFuZWwuanMKQEAgLTE5NSwxMSArMTk1LDYgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwu
cHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gdGhpcy5fY2FsY3VsYXRvcjsKICAgICB9LAog
Ci0gICAgZ2V0IHRvb2xiYXJJdGVtTGFiZWwoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIFdlYklu
c3BlY3Rvci5VSVN0cmluZygiVGltZWxpbmUiKTsKLSAgICB9LAotCiAgICAgZ2V0IHN0YXR1c0Jh
ckl0ZW1zKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9zdGF0dXNCYXJCdXR0b25zLnNl
bGVjdCgiZWxlbWVudCIpLmNvbmNhdChbCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL1Rvb2xiYXIuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1Rvb2xiYXIuanMKaW5kZXggMzcyZmY2N2FjZTQ4NWQ5M2RjZjY5M2Y5NjViZjBmZDk0
NmRlNmEyOC4uZjVmYzUzOTFhYTBhNDZkMGY5NDUyZTNiNDNmYTg2NTRlNzczNzBlZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Ub29sYmFyLmpzCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVG9vbGJhci5qcwpAQCAtNTksMTMg
KzU5LDU3IEBAIFdlYkluc3BlY3Rvci5Ub29sYmFyLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhp
cy5fdXBkYXRlRHJvcGRvd25CdXR0b25BbmRIaWRlRHJvcGRvd24oKTsKICAgICB9LAogCi0gICAg
YWRkUGFuZWw6IGZ1bmN0aW9uKHBhbmVsKQorICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5z
cGVjdG9yLlBhbmVsRGVzY3JpcHRvcn0gcGFuZWxEZXNjcmlwdG9yCisgICAgICovCisgICAgYWRk
UGFuZWw6IGZ1bmN0aW9uKHBhbmVsRGVzY3JpcHRvcikKICAgICB7Ci0gICAgICAgIHRoaXMuZWxl
bWVudC5hcHBlbmRDaGlsZChwYW5lbC50b29sYmFySXRlbSk7CisgICAgICAgIHRoaXMuZWxlbWVu
dC5hcHBlbmRDaGlsZCh0aGlzLl9jcmVhdGVQYW5lbFRvb2xiYXJJdGVtKHBhbmVsRGVzY3JpcHRv
cikpOwogICAgICAgICB0aGlzLnJlc2l6ZSgpOwogICAgIH0sCiAKICAgICAvKioKKyAgICAgKiBA
cGFyYW0ge1dlYkluc3BlY3Rvci5QYW5lbERlc2NyaXB0b3J9IHBhbmVsRGVzY3JpcHRvcgorICAg
ICAqIEByZXR1cm4ge0VsZW1lbnR9CisgICAgICovCisgICAgX2NyZWF0ZVBhbmVsVG9vbGJhckl0
ZW06IGZ1bmN0aW9uKHBhbmVsRGVzY3JpcHRvcikKKyAgICB7CisgICAgICAgIHZhciB0b29sYmFy
SXRlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImJ1dHRvbiIpOworICAgICAgICB0b29sYmFy
SXRlbS5jbGFzc05hbWUgPSAidG9vbGJhci1pdGVtIHRvZ2dsZWFibGUiOworICAgICAgICB0b29s
YmFySXRlbS5wYW5lbERlc2NyaXB0b3IgPSBwYW5lbERlc2NyaXB0b3I7CisgICAgICAgIHRvb2xi
YXJJdGVtLmFkZFN0eWxlQ2xhc3MocGFuZWxEZXNjcmlwdG9yLm5hbWUoKSk7CisKKyAgICAgICAg
ZnVuY3Rpb24gb25Ub29sYmFySXRlbUNsaWNrZWQoKQorICAgICAgICB7CisgICAgICAgICAgICBp
ZiAodGhpcy5fbGFzdFNlbGVjdGVkSXRlbSkKKyAgICAgICAgICAgICAgICB0aGlzLl9sYXN0U2Vs
ZWN0ZWRJdGVtLnJlbW92ZVN0eWxlQ2xhc3MoInRvZ2dsZWQtb24iKTsKKyAgICAgICAgICAgIHRo
aXMuX3VwZGF0ZURyb3Bkb3duQnV0dG9uQW5kSGlkZURyb3Bkb3duKCk7CisgICAgICAgICAgICBX
ZWJJbnNwZWN0b3IuaW5zcGVjdG9yVmlldy5zZXRDdXJyZW50UGFuZWwocGFuZWxEZXNjcmlwdG9y
LnBhbmVsKCkpOworICAgICAgICAgICAgdGhpcy5fbGFzdFNlbGVjdGVkSXRlbSA9IHRvb2xiYXJJ
dGVtOworICAgICAgICAgICAgdGhpcy5fbGFzdFNlbGVjdGVkSXRlbS5hZGRTdHlsZUNsYXNzKCJ0
b2dnbGVkLW9uIik7CisgICAgICAgIH0KKyAgICAgICAgdG9vbGJhckl0ZW0uYWRkRXZlbnRMaXN0
ZW5lcigiY2xpY2siLCBvblRvb2xiYXJJdGVtQ2xpY2tlZC5iaW5kKHRoaXMpLCBmYWxzZSk7CisK
KyAgICAgICAgZnVuY3Rpb24gcGFuZWxTZWxlY3RlZCgpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGlmIChXZWJJbnNwZWN0b3IuaW5zcGVjdG9yVmlldy5jdXJyZW50UGFuZWwoKSAmJiBwYW5lbERl
c2NyaXB0b3IubmFtZSgpID09PSBXZWJJbnNwZWN0b3IuaW5zcGVjdG9yVmlldy5jdXJyZW50UGFu
ZWwoKS5uYW1lKQorICAgICAgICAgICAgICAgIHRvb2xiYXJJdGVtLmFkZFN0eWxlQ2xhc3MoInRv
Z2dsZWQtb24iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0b29sYmFySXRl
bS5yZW1vdmVTdHlsZUNsYXNzKCJ0b2dnbGVkLW9uIik7CisgICAgICAgIH0KKyAgICAgICAgV2Vi
SW5zcGVjdG9yLmluc3BlY3RvclZpZXcuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuSW5z
cGVjdG9yVmlldy5FdmVudHMuUGFuZWxTZWxlY3RlZCwgcGFuZWxTZWxlY3RlZCk7CisKKyAgICAg
ICAgdmFyIGljb25FbGVtZW50ID0gdG9vbGJhckl0ZW0uY3JlYXRlQ2hpbGQoImRpdiIsICJ0b29s
YmFyLWljb24iKTsKKyAgICAgICAgdG9vbGJhckl0ZW0uY3JlYXRlQ2hpbGQoImRpdiIsICJ0b29s
YmFyLWxhYmVsIikudGV4dENvbnRlbnQgPSBwYW5lbERlc2NyaXB0b3IudGl0bGUoKTsKKyAgICAg
ICAgaWYgKHBhbmVsRGVzY3JpcHRvci5pY29uVVJMKCkpIHsKKyAgICAgICAgICAgIGljb25FbGVt
ZW50LmFkZFN0eWxlQ2xhc3MoImN1c3RvbS10b29sYmFyLWljb24iKTsKKyAgICAgICAgICAgIGlj
b25FbGVtZW50LnN0eWxlLmJhY2tncm91bmRJbWFnZSA9ICJ1cmwoIiArIHBhbmVsRGVzY3JpcHRv
ci5pY29uVVJMKCkgKyAiKSI7CisgICAgICAgIH0KKyAgICAgICAgcGFuZWxTZWxlY3RlZCgpOwor
ICAgICAgICByZXR1cm4gdG9vbGJhckl0ZW07CisgICAgfSwKKworICAgIC8qKgogICAgICAqIEBy
ZXR1cm4ge2Jvb2xlYW59CiAgICAgICovCiAgICAgX3Rvb2xiYXJEcmFnU3RhcnQ6IGZ1bmN0aW9u
KGV2ZW50KQpAQCAtMTIyLDcgKzE2Niw3IEBAIFdlYkluc3BlY3Rvci5Ub29sYmFyLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgaWYgKCF0aGlzLl9kcm9wZG93bikgewogICAgICAgICAgICAgaWYgKCF2
aXNpYmxlKQogICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIHRoaXMuX2Ryb3Bk
b3duID0gbmV3IFdlYkluc3BlY3Rvci5Ub29sYmFyRHJvcGRvd24oKTsKKyAgICAgICAgICAgIHRo
aXMuX2Ryb3Bkb3duID0gbmV3IFdlYkluc3BlY3Rvci5Ub29sYmFyRHJvcGRvd24odGhpcyk7CiAg
ICAgICAgIH0KICAgICAgICAgaWYgKHZpc2libGUpCiAgICAgICAgICAgICB0aGlzLl9kcm9wZG93
bi5zaG93KCk7CkBAIC0xNDcsMzYgKzE5MSwxMyBAQCBXZWJJbnNwZWN0b3IuVG9vbGJhci5wcm90
b3R5cGUgPSB7CiAgICAgfQogfQogCi1XZWJJbnNwZWN0b3IuVG9vbGJhci5jcmVhdGVQYW5lbFRv
b2xiYXJJdGVtID0gZnVuY3Rpb24ocGFuZWwpCi17Ci0gICAgdmFyIHRvb2xiYXJJdGVtID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiYnV0dG9uIik7Ci0gICAgdG9vbGJhckl0ZW0uY2xhc3NOYW1l
ID0gInRvb2xiYXItaXRlbSB0b2dnbGVhYmxlIjsKLSAgICB0b29sYmFySXRlbS5wYW5lbCA9IHBh
bmVsOwotICAgIHRvb2xiYXJJdGVtLmFkZFN0eWxlQ2xhc3MocGFuZWwuX3BhbmVsTmFtZSk7Ci0g
ICAgZnVuY3Rpb24gb25Ub29sYmFySXRlbUNsaWNrZWQoKQotICAgIHsKLSAgICAgICAgV2ViSW5z
cGVjdG9yLnRvb2xiYXIuX3VwZGF0ZURyb3Bkb3duQnV0dG9uQW5kSGlkZURyb3Bkb3duKCk7Ci0g
ICAgICAgIFdlYkluc3BlY3Rvci5pbnNwZWN0b3JWaWV3LnNldEN1cnJlbnRQYW5lbChwYW5lbCk7
Ci0gICAgfQotICAgIHRvb2xiYXJJdGVtLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgb25Ub29s
YmFySXRlbUNsaWNrZWQsIGZhbHNlKTsKLQotICAgIHZhciBpY29uRWxlbWVudCA9IHRvb2xiYXJJ
dGVtLmNyZWF0ZUNoaWxkKCJkaXYiLCAidG9vbGJhci1pY29uIik7Ci0KLSAgICBpZiAoInRvb2xi
YXJJdGVtTGFiZWwiIGluIHBhbmVsKQotICAgICAgICB0b29sYmFySXRlbS5jcmVhdGVDaGlsZCgi
ZGl2IiwgInRvb2xiYXItbGFiZWwiKS50ZXh0Q29udGVudCA9IHBhbmVsLnRvb2xiYXJJdGVtTGFi
ZWw7Ci0KLSAgICBpZiAocGFuZWwgPT09IFdlYkluc3BlY3Rvci5pbnNwZWN0b3JWaWV3LmN1cnJl
bnRQYW5lbCgpKQotICAgICAgICB0b29sYmFySXRlbS5hZGRTdHlsZUNsYXNzKCJ0b2dnbGVkLW9u
Iik7Ci0KLSAgICByZXR1cm4gdG9vbGJhckl0ZW07Ci19Ci0KIC8qKgogICogQGNvbnN0cnVjdG9y
CisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5Ub29sYmFyfSB0b29sYmFyCiAgKi8KLVdlYkluc3Bl
Y3Rvci5Ub29sYmFyRHJvcGRvd24gPSBmdW5jdGlvbigpCitXZWJJbnNwZWN0b3IuVG9vbGJhckRy
b3Bkb3duID0gZnVuY3Rpb24odG9vbGJhcikKIHsKLSAgICB0aGlzLl90b29sYmFyID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInRvb2xiYXIiKTsKKyAgICB0aGlzLl90b29sYmFyID0gdG9vbGJh
cjsKICAgICB0aGlzLl9hcnJvdyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0b29sYmFyLWRy
b3Bkb3duLWFycm93Iik7CiAgICAgdGhpcy5lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiZGl2Iik7CiAgICAgdGhpcy5lbGVtZW50LmlkID0gInRvb2xiYXItZHJvcGRvd24iOwpAQCAt
MTk4LDcgKzIxOSw3IEBAIFdlYkluc3BlY3Rvci5Ub29sYmFyRHJvcGRvd24ucHJvdG90eXBlID0g
ewogICAgICAgICB0aGlzLmVsZW1lbnQuc3R5bGUudG9wID0gdG9wICsgInB4IjsKICAgICAgICAg
dGhpcy5lbGVtZW50LnN0eWxlLmxlZnQgPSB0aGlzLl9hcnJvdy50b3RhbE9mZnNldExlZnQoKSAr
ICJweCI7CiAgICAgICAgIHRoaXMuX2NvbnRlbnRFbGVtZW50LnN0eWxlLm1heEhlaWdodCA9IHdp
bmRvdy5pbm5lckhlaWdodCAtIHRvcCAtIDIwICsgInB4IjsKLSAgICAgICAgdGhpcy5fdG9vbGJh
ci5hcHBlbmRDaGlsZCh0aGlzLmVsZW1lbnQpOworICAgICAgICB0aGlzLl90b29sYmFyLmVsZW1l
bnQuYXBwZW5kQ2hpbGQodGhpcy5lbGVtZW50KTsKICAgICB9LAogCiAgICAgaGlkZTogZnVuY3Rp
b24oKQpAQCAtMjE3LDExICsyMzgsMTEgQEAgV2ViSW5zcGVjdG9yLlRvb2xiYXJEcm9wZG93bi5w
cm90b3R5cGUgPSB7CiAKICAgICBfcG9wdWxhdGU6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAg
IHZhciB0b29sYmFySXRlbXMgPSB0aGlzLl90b29sYmFyLnF1ZXJ5U2VsZWN0b3JBbGwoIi50b29s
YmFyLWl0ZW0udG9nZ2xlYWJsZSIpOworICAgICAgICB2YXIgdG9vbGJhckl0ZW1zID0gdGhpcy5f
dG9vbGJhci5lbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIi50b29sYmFyLWl0ZW0udG9nZ2xlYWJs
ZSIpOwogCiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdG9vbGJhckl0ZW1zLmxlbmd0aDsg
KytpKSB7CiAgICAgICAgICAgICBpZiAodG9vbGJhckl0ZW1zW2ldLm9mZnNldFRvcCA+IDApCi0g
ICAgICAgICAgICAgICAgdGhpcy5fY29udGVudEVsZW1lbnQuYXBwZW5kQ2hpbGQoV2ViSW5zcGVj
dG9yLlRvb2xiYXIuY3JlYXRlUGFuZWxUb29sYmFySXRlbSh0b29sYmFySXRlbXNbaV0ucGFuZWwp
KTsKKyAgICAgICAgICAgICAgICB0aGlzLl9jb250ZW50RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlz
Ll90b29sYmFyLl9jcmVhdGVQYW5lbFRvb2xiYXJJdGVtKHRvb2xiYXJJdGVtc1tpXS5wYW5lbERl
c2NyaXB0b3IpKTsKICAgICAgICAgfQogICAgIH0sCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNzcyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNzcwppbmRleCBlYTVlZWRjNDRlNTJmNDU2ZmU2
MDRjZDgxOTMxNDkzNmMyYzU2NTlmLi5mNjUyN2UyODAwM2M2MWIyYjk2MDQ3MDliMmFlNmY2Njg5
ZTA0OTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2lu
c3BlY3Rvci5jc3MKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNw
ZWN0b3IuY3NzCkBAIC0xMTgsNiArMTE4LDEwIEBAIGJvZHkuY29tcGFjdC5pbmFjdGl2ZSAjdG9v
bGJhciB7CiAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKEltYWdlcy90b29sYmFySWNvbnNTbWFs
bC5wbmcpOwogfQogCisudG9vbGJhci1zbWFsbCAudG9vbGJhci1pY29uLmN1c3RvbS10b29sYmFy
LWljb24geworICAgIGJhY2tncm91bmQtcG9zaXRpb24teDogLTMycHg7Cit9CisKIC50b29sYmFy
LWl0ZW06YWN0aXZlIC50b29sYmFyLWljb24gewogICAgIGJhY2tncm91bmQtcG9zaXRpb24teTog
MzJweDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
aW5zcGVjdG9yLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0
b3IuanMKaW5kZXggMjFjZmMwMjI1ZWY1ZDU3YjEwMDcyZDYxMzkzYmM0N2MzOGM2N2Q3Ni4uODE2
MTgwODQzZmNkYzQ5OWIwOTI4NzY0Zjg5OWY3MjU3ZGU0M2NmYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKQEAgLTI5LDcgKzI5LDcgQEAK
ICAqLwogCiB2YXIgV2ViSW5zcGVjdG9yID0gewotICAgIF9jcmVhdGVQYW5lbHM6IGZ1bmN0aW9u
KCkKKyAgICBfcGFuZWxEZXNjcmlwdG9yczogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgdGhp
cy5wYW5lbHMgPSB7fTsKICAgICAgICAgV2ViSW5zcGVjdG9yLmluc3BlY3RvclZpZXcgPSBuZXcg
V2ViSW5zcGVjdG9yLkluc3BlY3RvclZpZXcoKTsKQEAgLTM3LDM1ICszNywzNiBAQCB2YXIgV2Vi
SW5zcGVjdG9yID0gewogICAgICAgICBXZWJJbnNwZWN0b3IuaW5zcGVjdG9yVmlldy5zaG93KHBh
cmVudEVsZW1lbnQpOwogICAgICAgICBXZWJJbnNwZWN0b3IuaW5zcGVjdG9yVmlldy5hZGRFdmVu
dExpc3RlbmVyKFdlYkluc3BlY3Rvci5JbnNwZWN0b3JWaWV3LkV2ZW50cy5QYW5lbFNlbGVjdGVk
LCB0aGlzLl9wYW5lbFNlbGVjdGVkLCB0aGlzKTsKIAorICAgICAgICB2YXIgZWxlbWVudHMgPSBu
ZXcgV2ViSW5zcGVjdG9yLlBhbmVsRGVzY3JpcHRvcigiZWxlbWVudHMiLCBXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIkVsZW1lbnRzIiksIFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVsLmJpbmQobnVs
bCwgdGhpcy5fbm9kZVNlYXJjaEJ1dHRvbiksIHRydWUpOworICAgICAgICB2YXIgcmVzb3VyY2Vz
ID0gbmV3IFdlYkluc3BlY3Rvci5QYW5lbERlc2NyaXB0b3IoInJlc291cmNlcyIsIFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiUmVzb3VyY2VzIiksIFdlYkluc3BlY3Rvci5SZXNvdXJjZXNQYW5lbCwg
dHJ1ZSk7CisgICAgICAgIHZhciBuZXR3b3JrID0gbmV3IFdlYkluc3BlY3Rvci5QYW5lbERlc2Ny
aXB0b3IoIm5ldHdvcmsiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk5ldHdvcmsiKSwgV2ViSW5z
cGVjdG9yLk5ldHdvcmtQYW5lbCk7CisgICAgICAgIHZhciBzY3JpcHRzID0gbmV3IFdlYkluc3Bl
Y3Rvci5QYW5lbERlc2NyaXB0b3IoInNjcmlwdHMiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNv
dXJjZXMiKSwgV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbCk7CisgICAgICAgIHZhciB0aW1lbGlu
ZSA9IG5ldyBXZWJJbnNwZWN0b3IuUGFuZWxEZXNjcmlwdG9yKCJ0aW1lbGluZSIsIFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiVGltZWxpbmUiKSwgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwsIHRy
dWUpOworICAgICAgICB2YXIgcHJvZmlsZXMgPSBuZXcgV2ViSW5zcGVjdG9yLlBhbmVsRGVzY3Jp
cHRvcigicHJvZmlsZXMiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlByb2ZpbGVzIiksIFdlYklu
c3BlY3Rvci5Qcm9maWxlc1BhbmVsKTsKKyAgICAgICAgdmFyIGF1ZGl0cyA9IG5ldyBXZWJJbnNw
ZWN0b3IuUGFuZWxEZXNjcmlwdG9yKCJhdWRpdHMiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkF1
ZGl0cyIpLCBXZWJJbnNwZWN0b3IuQXVkaXRzUGFuZWwsIHRydWUpOworICAgICAgICB2YXIgY29u
c29sZSA9IG5ldyBXZWJJbnNwZWN0b3IuUGFuZWxEZXNjcmlwdG9yKCJjb25zb2xlIiwgV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJDb25zb2xlIiksIFdlYkluc3BlY3Rvci5Db25zb2xlUGFuZWwsIHRy
dWUpOworICAgICAgICB2YXIgYWxsRGVzY3JpcHRvcnMgPSBbZWxlbWVudHMsIHJlc291cmNlcywg
bmV0d29yaywgc2NyaXB0cywgdGltZWxpbmUsIHByb2ZpbGVzLCBhdWRpdHMsIGNvbnNvbGVdOwor
CisgICAgICAgIHZhciBwYW5lbERlc2NyaXB0b3JzID0gW107CiAgICAgICAgIGlmIChXZWJJbnNw
ZWN0b3IuV29ya2VyTWFuYWdlci5pc1dvcmtlckZyb250ZW5kKCkpIHsKLSAgICAgICAgICAgIHRo
aXMucGFuZWxzLnNjcmlwdHMgPSBuZXcgV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbCgpOwotICAg
ICAgICAgICAgdGhpcy5wYW5lbHMudGltZWxpbmUgPSBuZXcgV2ViSW5zcGVjdG9yLlRpbWVsaW5l
UGFuZWwoKTsKLSAgICAgICAgICAgIHRoaXMucGFuZWxzLnByb2ZpbGVzID0gbmV3IFdlYkluc3Bl
Y3Rvci5Qcm9maWxlc1BhbmVsKCk7Ci0gICAgICAgICAgICB0aGlzLnBhbmVscy5jb25zb2xlID0g
bmV3IFdlYkluc3BlY3Rvci5Db25zb2xlUGFuZWwoKTsKLSAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgIHBhbmVsRGVzY3JpcHRvcnMucHVzaChzY3JpcHRzKTsKKyAgICAgICAgICAgIHBh
bmVsRGVzY3JpcHRvcnMucHVzaCh0aW1lbGluZSk7CisgICAgICAgICAgICBwYW5lbERlc2NyaXB0
b3JzLnB1c2gocHJvZmlsZXMpOworICAgICAgICAgICAgcGFuZWxEZXNjcmlwdG9ycy5wdXNoKGNv
bnNvbGUpOworICAgICAgICAgICAgcmV0dXJuIHBhbmVsRGVzY3JpcHRvcnM7CiAgICAgICAgIH0K
KyAgICAgICAgdmFyIGFsbERlc2NyaXB0b3JzID0gW2VsZW1lbnRzLCByZXNvdXJjZXMsIG5ldHdv
cmssIHNjcmlwdHMsIHRpbWVsaW5lLCBwcm9maWxlcywgYXVkaXRzLCBjb25zb2xlXTsKICAgICAg
ICAgdmFyIGhpZGRlblBhbmVscyA9IChJbnNwZWN0b3JGcm9udGVuZEhvc3QuaGlkZGVuUGFuZWxz
KCkgfHwgIiIpLnNwbGl0KCcsJyk7Ci0gICAgICAgIGlmIChoaWRkZW5QYW5lbHMuaW5kZXhPZigi
ZWxlbWVudHMiKSA9PT0gLTEpCi0gICAgICAgICAgICB0aGlzLnBhbmVscy5lbGVtZW50cyA9IG5l
dyBXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbCgpOwotICAgICAgICBpZiAoaGlkZGVuUGFuZWxz
LmluZGV4T2YoInJlc291cmNlcyIpID09PSAtMSkKLSAgICAgICAgICAgIHRoaXMucGFuZWxzLnJl
c291cmNlcyA9IG5ldyBXZWJJbnNwZWN0b3IuUmVzb3VyY2VzUGFuZWwoKTsKLSAgICAgICAgaWYg
KGhpZGRlblBhbmVscy5pbmRleE9mKCJuZXR3b3JrIikgPT09IC0xKQotICAgICAgICAgICAgdGhp
cy5wYW5lbHMubmV0d29yayA9IG5ldyBXZWJJbnNwZWN0b3IuTmV0d29ya1BhbmVsKCk7Ci0gICAg
ICAgIGlmIChoaWRkZW5QYW5lbHMuaW5kZXhPZigic2NyaXB0cyIpID09PSAtMSkKLSAgICAgICAg
ICAgIHRoaXMucGFuZWxzLnNjcmlwdHMgPSBuZXcgV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbCgp
OwotICAgICAgICBpZiAoaGlkZGVuUGFuZWxzLmluZGV4T2YoInRpbWVsaW5lIikgPT09IC0xKQot
ICAgICAgICAgICAgdGhpcy5wYW5lbHMudGltZWxpbmUgPSBuZXcgV2ViSW5zcGVjdG9yLlRpbWVs
aW5lUGFuZWwoKTsKLSAgICAgICAgaWYgKGhpZGRlblBhbmVscy5pbmRleE9mKCJwcm9maWxlcyIp
ID09PSAtMSkKLSAgICAgICAgICAgIHRoaXMucGFuZWxzLnByb2ZpbGVzID0gbmV3IFdlYkluc3Bl
Y3Rvci5Qcm9maWxlc1BhbmVsKCk7Ci0gICAgICAgIGlmIChoaWRkZW5QYW5lbHMuaW5kZXhPZigi
YXVkaXRzIikgPT09IC0xKQotICAgICAgICAgICAgdGhpcy5wYW5lbHMuYXVkaXRzID0gbmV3IFdl
Ykluc3BlY3Rvci5BdWRpdHNQYW5lbCgpOwotICAgICAgICBpZiAoaGlkZGVuUGFuZWxzLmluZGV4
T2YoImNvbnNvbGUiKSA9PT0gLTEpCi0gICAgICAgICAgICB0aGlzLnBhbmVscy5jb25zb2xlID0g
bmV3IFdlYkluc3BlY3Rvci5Db25zb2xlUGFuZWwoKTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBhbGxEZXNjcmlwdG9ycy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgaWYgKGhpZGRl
blBhbmVscy5pbmRleE9mKGFsbERlc2NyaXB0b3JzW2ldLm5hbWUpID09PSAtMSkKKyAgICAgICAg
ICAgICAgICBwYW5lbERlc2NyaXB0b3JzLnB1c2goYWxsRGVzY3JpcHRvcnNbaV0pOworICAgICAg
ICB9CisgICAgICAgIHJldHVybiBwYW5lbERlc2NyaXB0b3JzOwogICAgIH0sCiAKICAgICBfcGFu
ZWxTZWxlY3RlZDogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgdGhpcy5fdG9nZ2xlQ29uc29s
ZUJ1dHRvbi5kaXNhYmxlZCA9IFdlYkluc3BlY3Rvci5pbnNwZWN0b3JWaWV3LmN1cnJlbnRQYW5l
bCgpID09PSBXZWJJbnNwZWN0b3IucGFuZWxzLmNvbnNvbGU7CisgICAgICAgIHRoaXMuX3RvZ2ds
ZUNvbnNvbGVCdXR0b24uZGlzYWJsZWQgPSBXZWJJbnNwZWN0b3IuaW5zcGVjdG9yVmlldy5jdXJy
ZW50UGFuZWwoKS5uYW1lID09PSAiY29uc29sZSI7CiAgICAgfSwKIAogICAgIF9jcmVhdGVHbG9i
YWxTdGF0dXNCYXJJdGVtczogZnVuY3Rpb24oKQpAQCAtODMsOCArODQsMTEgQEAgdmFyIFdlYklu
c3BlY3RvciA9IHsKICAgICAgICAgdGhpcy5fdG9nZ2xlQ29uc29sZUJ1dHRvbi5hZGRFdmVudExp
c3RlbmVyKCJjbGljayIsIHRoaXMuX3RvZ2dsZUNvbnNvbGVCdXR0b25DbGlja2VkLmJpbmQodGhp
cyksIGZhbHNlKTsKICAgICAgICAgbWFpblN0YXR1c0Jhci5pbnNlcnRCZWZvcmUodGhpcy5fdG9n
Z2xlQ29uc29sZUJ1dHRvbi5lbGVtZW50LCBib3R0b21TdGF0dXNCYXJDb250YWluZXIpOwogCi0g
ICAgICAgIGlmICh0aGlzLnBhbmVscy5lbGVtZW50cykKLSAgICAgICAgICAgIG1haW5TdGF0dXNC
YXIuaW5zZXJ0QmVmb3JlKHRoaXMucGFuZWxzLmVsZW1lbnRzLm5vZGVTZWFyY2hCdXR0b24uZWxl
bWVudCwgYm90dG9tU3RhdHVzQmFyQ29udGFpbmVyKTsKKyAgICAgICAgaWYgKCFXZWJJbnNwZWN0
b3IuV29ya2VyTWFuYWdlci5pc1dvcmtlckZyb250ZW5kKCkpIHsKKyAgICAgICAgICAgIHRoaXMu
X25vZGVTZWFyY2hCdXR0b24gPSBuZXcgV2ViSW5zcGVjdG9yLlN0YXR1c0JhckJ1dHRvbihXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIlNlbGVjdCBhbiBlbGVtZW50IGluIHRoZSBwYWdlIHRvIGluc3Bl
Y3QgaXQuIiksICJub2RlLXNlYXJjaC1zdGF0dXMtYmFyLWl0ZW0iKTsKKyAgICAgICAgICAgIG1h
aW5TdGF0dXNCYXIuaW5zZXJ0QmVmb3JlKHRoaXMuX25vZGVTZWFyY2hCdXR0b24uZWxlbWVudCwg
Ym90dG9tU3RhdHVzQmFyQ29udGFpbmVyKTsKKyAgICAgICAgfQorCiAgICAgICAgIG1haW5TdGF0
dXNCYXIuYXBwZW5kQ2hpbGQodGhpcy5zZXR0aW5nc0NvbnRyb2xsZXIuc3RhdHVzQmFySXRlbSk7
CiAgICAgfSwKIApAQCAtNDk2LDE0ICs1MDAsMTQgQEAgV2ViSW5zcGVjdG9yLl9kb0xvYWRlZERv
bmVXaXRoQ2FwYWJpbGl0aWVzID0gZnVuY3Rpb24oKQogICAgIHRoaXMud29ya3NwYWNlID0gbmV3
IFdlYkluc3BlY3Rvci5Xb3Jrc3BhY2UoKTsKICAgICB0aGlzLmJyZWFrcG9pbnRNYW5hZ2VyID0g
bmV3IFdlYkluc3BlY3Rvci5CcmVha3BvaW50TWFuYWdlcihXZWJJbnNwZWN0b3Iuc2V0dGluZ3Mu
YnJlYWtwb2ludHMsIHRoaXMuZGVidWdnZXJNb2RlbCwgdGhpcy53b3Jrc3BhY2UpOwogCi0gICAg
dGhpcy5fY3JlYXRlUGFuZWxzKCk7CiAgICAgdGhpcy5fY3JlYXRlR2xvYmFsU3RhdHVzQmFySXRl
bXMoKTsKIAogICAgIHRoaXMudG9vbGJhciA9IG5ldyBXZWJJbnNwZWN0b3IuVG9vbGJhcigpOwog
ICAgIFdlYkluc3BlY3Rvci5faW5zdGFsbERvY2tUb1JpZ2h0KCk7CiAKLSAgICBmb3IgKHZhciBw
YW5lbE5hbWUgaW4gdGhpcy5wYW5lbHMpCi0gICAgICAgIHRoaXMuYWRkUGFuZWwodGhpcy5wYW5l
bHNbcGFuZWxOYW1lXSk7CisgICAgdmFyIHBhbmVsRGVzY3JpcHRvcnMgPSB0aGlzLl9wYW5lbERl
c2NyaXB0b3JzKCk7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYW5lbERlc2NyaXB0b3JzLmxl
bmd0aDsgKytpKQorICAgICAgICBXZWJJbnNwZWN0b3IuaW5zcGVjdG9yVmlldy5hZGRQYW5lbChw
YW5lbERlc2NyaXB0b3JzW2ldKTsKIAogICAgIHRoaXMuYWRkTWFpbkV2ZW50TGlzdGVuZXJzKGRv
Y3VtZW50KTsKIApAQCAtNTY5LDExICs1NzMsNiBAQCBXZWJJbnNwZWN0b3IuX2luc3RhbGxEb2Nr
VG9SaWdodCA9IGZ1bmN0aW9uKCkKICAgICB9CiB9CiAKLVdlYkluc3BlY3Rvci5hZGRQYW5lbCA9
IGZ1bmN0aW9uKHBhbmVsKQotewotICAgIFdlYkluc3BlY3Rvci5pbnNwZWN0b3JWaWV3LmFkZFBh
bmVsKHBhbmVsKTsKLX0KLQogdmFyIHdpbmRvd0xvYWRlZCA9IGZ1bmN0aW9uKCkKIHsKICAgICB2
YXIgbG9jYWxpemVkU3RyaW5nc1VSTCA9IEluc3BlY3RvckZyb250ZW5kSG9zdC5sb2NhbGl6ZWRT
dHJpbmdzVVJMKCk7CkBAIC02NjUsNyArNjY0LDcgQEAgV2ViSW5zcGVjdG9yLmRvY3VtZW50Q2xp
Y2sgPSBmdW5jdGlvbihldmVudCkKICAgICAgICAgaWYgKHBhcnNlZFVSTCAmJiBwYXJzZWRVUkwu
c2NoZW1lID09PSAid2Via2l0LWxpbmstYWN0aW9uIikgewogICAgICAgICAgICAgaWYgKHBhcnNl
ZFVSTC5ob3N0ID09PSAic2hvdy1wYW5lbCIpIHsKICAgICAgICAgICAgICAgICB2YXIgcGFuZWwg
PSBwYXJzZWRVUkwucGF0aC5zdWJzdHJpbmcoMSk7Ci0gICAgICAgICAgICAgICAgaWYgKFdlYklu
c3BlY3Rvci5wYW5lbHNbcGFuZWxdKQorICAgICAgICAgICAgICAgIGlmIChXZWJJbnNwZWN0b3Iu
cGFuZWwocGFuZWwpKQogICAgICAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3Iuc2hvd1BhbmVs
KHBhbmVsKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybjsKQEAgLTY5MSwxMCAr
NjkwLDkgQEAgV2ViSW5zcGVjdG9yLmRvY3VtZW50Q2xpY2sgPSBmdW5jdGlvbihldmVudCkKIFdl
Ykluc3BlY3Rvci5vcGVuUmVzb3VyY2UgPSBmdW5jdGlvbihyZXNvdXJjZVVSTCwgaW5SZXNvdXJj
ZXNQYW5lbCkKIHsKICAgICB2YXIgcmVzb3VyY2UgPSBXZWJJbnNwZWN0b3IucmVzb3VyY2VGb3JV
UkwocmVzb3VyY2VVUkwpOwotICAgIGlmIChpblJlc291cmNlc1BhbmVsICYmIHJlc291cmNlKSB7
Ci0gICAgICAgIFdlYkluc3BlY3Rvci5zaG93UGFuZWwoInJlc291cmNlcyIpOwotICAgICAgICBX
ZWJJbnNwZWN0b3IucGFuZWxzLnJlc291cmNlcy5zaG93UmVzb3VyY2UocmVzb3VyY2UpOwotICAg
IH0gZWxzZQorICAgIGlmIChpblJlc291cmNlc1BhbmVsICYmIHJlc291cmNlKQorICAgICAgICBX
ZWJJbnNwZWN0b3Iuc2hvd1BhbmVsKCJyZXNvdXJjZXMiKS5zaG93UmVzb3VyY2UocmVzb3VyY2Up
OworICAgIGVsc2UKICAgICAgICAgSW5zcGVjdG9yRnJvbnRlbmRIb3N0Lm9wZW5Jbk5ld1RhYihy
ZXNvdXJjZVVSTCk7CiB9CiAKQEAgLTg1MywxNCArODUxLDYgQEAgV2ViSW5zcGVjdG9yLmNvbnRl
eHRNZW51RXZlbnRGaXJlZCA9IGZ1bmN0aW9uKGV2ZW50KQogICAgICAgICBldmVudC5wcmV2ZW50
RGVmYXVsdCgpOwogfQogCi1XZWJJbnNwZWN0b3IudG9nZ2xlU2VhcmNoaW5nRm9yTm9kZSA9IGZ1
bmN0aW9uKCkKLXsKLSAgICBpZiAodGhpcy5wYW5lbHMuZWxlbWVudHMpIHsKLSAgICAgICAgdGhp
cy5zaG93UGFuZWwoImVsZW1lbnRzIik7Ci0gICAgICAgIHRoaXMucGFuZWxzLmVsZW1lbnRzLnRv
Z2dsZVNlYXJjaGluZ0Zvck5vZGUoKTsKLSAgICB9Ci19Ci0KIFdlYkluc3BlY3Rvci5zaG93Q29u
c29sZSA9IGZ1bmN0aW9uKCkKIHsKICAgICBpZiAoV2ViSW5zcGVjdG9yLl90b2dnbGVDb25zb2xl
QnV0dG9uICYmICFXZWJJbnNwZWN0b3IuX3RvZ2dsZUNvbnNvbGVCdXR0b24udG9nZ2xlZCkgewpA
QCAtODcyLDEzICs4NjIsMTIgQEAgV2ViSW5zcGVjdG9yLnNob3dDb25zb2xlID0gZnVuY3Rpb24o
KQogCiBXZWJJbnNwZWN0b3Iuc2hvd1BhbmVsID0gZnVuY3Rpb24ocGFuZWwpCiB7Ci0gICAgaWYg
KCEocGFuZWwgaW4gdGhpcy5wYW5lbHMpKSB7Ci0gICAgICAgIGlmIChXZWJJbnNwZWN0b3IuV29y
a2VyTWFuYWdlci5pc1dvcmtlckZyb250ZW5kKCkpCi0gICAgICAgICAgICBwYW5lbCA9ICJzY3Jp
cHRzIjsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcGFuZWwgPSAiZWxlbWVudHMiOwotICAg
IH0KLSAgICBXZWJJbnNwZWN0b3IuaW5zcGVjdG9yVmlldy5zZXRDdXJyZW50UGFuZWwodGhpcy5w
YW5lbHNbcGFuZWxdKTsKKyAgICByZXR1cm4gV2ViSW5zcGVjdG9yLmluc3BlY3RvclZpZXcuc2hv
d1BhbmVsKHBhbmVsKTsKK30KKworV2ViSW5zcGVjdG9yLnBhbmVsID0gZnVuY3Rpb24ocGFuZWwp
Cit7CisgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5pbnNwZWN0b3JWaWV3LnBhbmVsKHBhbmVsKTsK
IH0KIAogV2ViSW5zcGVjdG9yLmJyaW5nVG9Gcm9udCA9IGZ1bmN0aW9uKCkKQEAgLTk2NSw0NSAr
OTU0LDQxIEBAIFdlYkluc3BlY3Rvci5pbnNwZWN0ID0gZnVuY3Rpb24ocGF5bG9hZCwgaGludHMp
CiB7CiAgICAgdmFyIG9iamVjdCA9IFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QuZnJvbVBheWxv
YWQocGF5bG9hZCk7CiAgICAgaWYgKG9iamVjdC5zdWJ0eXBlID09PSAibm9kZSIpIHsKLSAgICAg
ICAgLy8gUmVxdWVzdCBub2RlIGZyb20gYmFja2VuZCBhbmQgZm9jdXMgaXQuCi0gICAgICAgIFdl
Ykluc3BlY3Rvci5pbnNwZWN0b3JWaWV3LnNldEN1cnJlbnRQYW5lbChXZWJJbnNwZWN0b3IucGFu
ZWxzLmVsZW1lbnRzKTsKLSAgICAgICAgb2JqZWN0LnB1c2hOb2RlVG9Gcm9udGVuZChXZWJJbnNw
ZWN0b3IudXBkYXRlRm9jdXNlZE5vZGUuYmluZChXZWJJbnNwZWN0b3IpLCBvYmplY3QucmVsZWFz
ZS5iaW5kKG9iamVjdCkpOworICAgICAgICBmdW5jdGlvbiBjYWxsYmFjayhub2RlSWQpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5fdXBkYXRlRm9jdXNlZE5vZGUobm9kZUlk
KTsKKyAgICAgICAgICAgIG9iamVjdC5yZWxlYXNlKCk7CisgICAgICAgIH0KKyAgICAgICAgb2Jq
ZWN0LnB1c2hOb2RlVG9Gcm9udGVuZChjYWxsYmFjayk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBpZiAoaGludHMuZGF0YWJhc2VJZCkgewotICAgICAgICBXZWJJbnNwZWN0b3IuaW5z
cGVjdG9yVmlldy5zZXRDdXJyZW50UGFuZWwoV2ViSW5zcGVjdG9yLnBhbmVscy5yZXNvdXJjZXMp
OwotICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLnJlc291cmNlcy5zZWxlY3REYXRhYmFzZSho
aW50cy5kYXRhYmFzZUlkKTsKLSAgICB9IGVsc2UgaWYgKGhpbnRzLmRvbVN0b3JhZ2VJZCkgewot
ICAgICAgICBXZWJJbnNwZWN0b3IuaW5zcGVjdG9yVmlldy5zZXRDdXJyZW50UGFuZWwoV2ViSW5z
cGVjdG9yLnBhbmVscy5yZXNvdXJjZXMpOwotICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLnJl
c291cmNlcy5zZWxlY3RET01TdG9yYWdlKGhpbnRzLmRvbVN0b3JhZ2VJZCk7Ci0gICAgfQorICAg
IGlmIChoaW50cy5kYXRhYmFzZUlkKQorICAgICAgICBXZWJJbnNwZWN0b3Iuc2hvd1BhbmVsKCJy
ZXNvdXJjZXMiKS5zZWxlY3REYXRhYmFzZShoaW50cy5kYXRhYmFzZUlkKTsKKyAgICBlbHNlIGlm
IChoaW50cy5kb21TdG9yYWdlSWQpCisgICAgICAgIFdlYkluc3BlY3Rvci5zaG93UGFuZWwoInJl
c291cmNlcyIpLnNlbGVjdERPTVN0b3JhZ2UoaGludHMuZG9tU3RvcmFnZUlkKTsKIAogICAgIG9i
amVjdC5yZWxlYXNlKCk7CiB9CiAKLVdlYkluc3BlY3Rvci51cGRhdGVGb2N1c2VkTm9kZSA9IGZ1
bmN0aW9uKG5vZGVJZCkKK1dlYkluc3BlY3Rvci5fdXBkYXRlRm9jdXNlZE5vZGUgPSBmdW5jdGlv
bihub2RlSWQpCiB7Ci0gICAgdGhpcy5wYW5lbHMuZWxlbWVudHMucmV2ZWFsQW5kU2VsZWN0Tm9k
ZShub2RlSWQpOworICAgIFdlYkluc3BlY3Rvci5zaG93UGFuZWwoImVsZW1lbnRzIikucmV2ZWFs
QW5kU2VsZWN0Tm9kZShub2RlSWQpOwogfQogCiBXZWJJbnNwZWN0b3IuX3Nob3dBbmNob3JMb2Nh
dGlvbiA9IGZ1bmN0aW9uKGFuY2hvcikKIHsKICAgICBpZiAoV2ViSW5zcGVjdG9yLm9wZW5BbmNo
b3JMb2NhdGlvblJlZ2lzdHJ5LmRpc3BhdGNoKHsgdXJsOiBhbmNob3IuaHJlZiwgbGluZU51bWJl
cjogYW5jaG9yLmxpbmVOdW1iZXJ9KSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgdmFyIHBy
ZWZlcnJlZFBhbmVscyA9IFtdOwotICAgIGlmICh0aGlzLnBhbmVsc1thbmNob3IucHJlZmVycmVk
UGFuZWxdKQotICAgICAgICBwcmVmZXJyZWRQYW5lbHMucHVzaCh0aGlzLnBhbmVsc1thbmNob3Iu
cHJlZmVycmVkUGFuZWxdKTsKLSAgICBpZiAodGhpcy5wYW5lbHMuc2NyaXB0cykKLSAgICAgICAg
cHJlZmVycmVkUGFuZWxzLnB1c2godGhpcy5wYW5lbHMuc2NyaXB0cyk7Ci0gICAgaWYgKHRoaXMu
cGFuZWxzLnJlc291cmNlcykKLSAgICAgICAgcHJlZmVycmVkUGFuZWxzLnB1c2godGhpcy5wYW5l
bHMucmVzb3VyY2VzKTsKLSAgICBpZiAodGhpcy5wYW5lbHMubmV0d29yaykKLSAgICAgICAgcHJl
ZmVycmVkUGFuZWxzLnB1c2godGhpcy5wYW5lbHMubmV0d29yayk7Ci0gICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBwcmVmZXJyZWRQYW5lbHMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgaWYgKFdlYklu
c3BlY3Rvci5fc2hvd0FuY2hvckxvY2F0aW9uSW5QYW5lbChhbmNob3IsIHByZWZlcnJlZFBhbmVs
c1tpXSkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9CisgICAgdmFyIHByZWZlcnJl
ZFBhbmVsID0gdGhpcy5wYW5lbHNbYW5jaG9yLnByZWZlcnJlZFBhbmVsXTsKKyAgICBpZiAocHJl
ZmVycmVkUGFuZWwgJiYgV2ViSW5zcGVjdG9yLl9zaG93QW5jaG9yTG9jYXRpb25JblBhbmVsKGFu
Y2hvciwgcHJlZmVycmVkUGFuZWwpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoV2Vi
SW5zcGVjdG9yLl9zaG93QW5jaG9yTG9jYXRpb25JblBhbmVsKGFuY2hvciwgdGhpcy5wYW5lbHMu
c2NyaXB0cykpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmIChXZWJJbnNwZWN0b3IuX3No
b3dBbmNob3JMb2NhdGlvbkluUGFuZWwoYW5jaG9yLCB0aGlzLnBhbmVsKCJyZXNvdXJjZXMiKSkp
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmIChXZWJJbnNwZWN0b3IuX3Nob3dBbmNob3JM
b2NhdGlvbkluUGFuZWwoYW5jaG9yLCB0aGlzLnBhbmVscy5uZXR3b3JrKSkKKyAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC0xMDMxLDggKzEwMTYsNyBAQCBX
ZWJJbnNwZWN0b3Iuc2hvd1BhbmVsRm9yQW5jaG9yTmF2aWdhdGlvbiA9IGZ1bmN0aW9uKHBhbmVs
KQogCiBXZWJJbnNwZWN0b3Iuc2hvd1Byb2ZpbGVGb3JVUkwgPSBmdW5jdGlvbih1cmwpCiB7Ci0g
ICAgV2ViSW5zcGVjdG9yLnNob3dQYW5lbCgicHJvZmlsZXMiKTsKLSAgICBXZWJJbnNwZWN0b3Iu
cGFuZWxzLnByb2ZpbGVzLnNob3dQcm9maWxlRm9yVVJMKHVybCk7CisgICAgV2ViSW5zcGVjdG9y
LnNob3dQYW5lbCgicHJvZmlsZXMiKS5zaG93UHJvZmlsZUZvclVSTCh1cmwpOwogfQogCiBXZWJJ
bnNwZWN0b3IuZXZhbHVhdGVJbkNvbnNvbGUgPSBmdW5jdGlvbihleHByZXNzaW9uLCBzaG93UmVz
dWx0T25seSkKQEAgLTEwNTUsMTAgKzEwMzksMyBAQCBXZWJJbnNwZWN0b3IuZnJvbnRlbmRSZXVz
ZWQgPSBmdW5jdGlvbigpCiB7CiAgICAgdGhpcy5yZXNvdXJjZVRyZWVNb2RlbC5mcm9udGVuZFJl
dXNlZCgpOwogfQotCi1XZWJJbnNwZWN0b3IuX3Rvb2xiYXJJdGVtQ2xpY2tlZCA9IGZ1bmN0aW9u
KGV2ZW50KQotewotICAgIHZhciB0b29sYmFySXRlbSA9IGV2ZW50LmN1cnJlbnRUYXJnZXQ7Ci0g
ICAgV2ViSW5zcGVjdG9yLmluc3BlY3RvclZpZXcuc2V0Q3VycmVudFBhbmVsKHRvb2xiYXJJdGVt
LnBhbmVsKTsKLX0KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDlmNmIyMGM2YmVkM2FiOTczMjgxYmIyYzhjNDJkM2JmOWM4
ZWEwNzIuLjY0MTkxMDk2MDUwNDFlYTg1YmI0ZjY0YTg3YjJkNjEyY2UwMGIxZWIgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwzOCBAQAorMjAxMi0wOC0xNiAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBidWlsZCBFbGVtZW50cywgUmVzb3Vy
Y2VzLCBUaW1lbGluZSwgQXVkaXRzIGFuZCBDb25zb2xlIHBhbmVscyBsYXppbHkuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NDIyMgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvZWxlbWVudHMtdGVzdC5qczoKKyAgICAgICAgKGluaXRpYWxpemVfRWxlbWVudFRlc3Qu
SW5zcGVjdG9yVGVzdC5zZWxlY3ROb2RlV2l0aElkLm9uTm9kZUZvdW5kKToKKyAgICAgICAgKGlu
aXRpYWxpemVfRWxlbWVudFRlc3QuSW5zcGVjdG9yVGVzdC5zZWxlY3ROb2RlV2l0aElkKToKKyAg
ICAgICAgKGluaXRpYWxpemVfRWxlbWVudFRlc3QuSW5zcGVjdG9yVGVzdC5leHBhbmRFbGVtZW50
c1RyZWUpOgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMtdGVzdC5q
czoKKyAgICAgICAgKGluaXRpYWxpemVfRXh0ZW5zaW9uc1Rlc3QuSW5zcGVjdG9yVGVzdC5zaG93
UGFuZWwpOgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3QtZWxlbWVudC5o
dG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlLWhhci1wYWdlcy5o
dG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlLXRyZWUvcmVzb3Vy
Y2UtdHJlZS1mcmFtZS1hZGQuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9y
ZXNvdXJjZS10cmVlL3Jlc291cmNlLXRyZWUtbm9uLXVuaXF1ZS11cmwuaHRtbDoKKyAgICAgICAg
KiBodHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZS10cmVlL3Jlc291cmNlLXRyZWUtcmVsb2Fk
Lmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2UtdHJlZS9yZXNv
dXJjZS10cmVlLXRlc3QuanM6CisgICAgICAgIChpbml0aWFsaXplX1Jlc291cmNlVHJlZVRlc3Qu
SW5zcGVjdG9yVGVzdC5kdW1wUmVzb3VyY2VzVHJlZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Nv
bnNvbGUvY29tbWFuZC1saW5lLWFwaS1pbnNwZWN0Lmh0bWw6CisgICAgICAgICogaW5zcGVjdG9y
L2RlYnVnZ2VyL2RvbS1icmVha3BvaW50cy5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1
Z2dlci9zb3VyY2UtZnJhbWUuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZWxlbWVudHMvZWRp
dC1kb20tYWN0aW9ucy5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9lbGVtZW50cy9lbGVtZW50
cy1pbWctdG9vbHRpcC5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9lbGVtZW50cy9lbGVtZW50
cy1wYW5lbC1saW1pdGVkLWNoaWxkcmVuLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2VsZW1l
bnRzL2hpZ2hsaWdodC1ub2RlLXNjYWxlZC5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9leHRl
bnNpb25zL2V4dGVuc2lvbnMtcGFuZWwuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZXh0ZW5z
aW9ucy9leHRlbnNpb25zLXNpZGViYXIuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc3R5bGVz
L2ZvcmNlLXBzZXVkby1zdGF0ZS5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9zdHlsZXMvc2V0
LXByb3BlcnR5LWJvdW5kYXJpZXMuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc3R5bGVzL3N0
eWxlcy1uZXctQVBJLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL3RpbWVsaW5lL3RpbWVsaW5l
LXRlc3QuanM6CisgICAgICAgIChpbml0aWFsaXplX1RpbWVsaW5lLkluc3BlY3RvclRlc3Quc3Rv
cFRpbWVsaW5lKToKKwogMjAxMi0wOC0xNiAgWmFuIERvYmVyc2VrICA8emFuZG9iZXJzZWtAZ21h
aWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgR1RLIGdhcmRlbmluZy4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzLXRlc3QuanMgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9lbGVtZW50cy10ZXN0LmpzCmluZGV4IDQyNmQ3
YjE3ZjllZjRkZjI0ZGE3ZWEyZjBlNTAyYTNjNjViMWU2MzAuLjI3MjIwNDU0YWRkZDRmMGVhZDlj
OWJmOGJhNmQyM2JiNGVkMWVmNjYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL2VsZW1lbnRzLXRlc3QuanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9p
bnNwZWN0b3IvZWxlbWVudHMtdGVzdC5qcwpAQCAtNjMsNyArNjMsNyBAQCBJbnNwZWN0b3JUZXN0
LnNlbGVjdE5vZGVXaXRoSWQgPSBmdW5jdGlvbihpZFZhbHVlLCBjYWxsYmFjaykKICAgICBmdW5j
dGlvbiBvbk5vZGVGb3VuZChub2RlKQogICAgIHsKICAgICAgICAgaWYgKG5vZGUpCi0gICAgICAg
ICAgICBXZWJJbnNwZWN0b3IudXBkYXRlRm9jdXNlZE5vZGUobm9kZS5pZCk7CisgICAgICAgICAg
ICBXZWJJbnNwZWN0b3IuX3VwZGF0ZUZvY3VzZWROb2RlKG5vZGUuaWQpOwogICAgICAgICBjYWxs
YmFjayhub2RlKTsKICAgICB9CiAgICAgSW5zcGVjdG9yVGVzdC5ub2RlV2l0aElkKGlkVmFsdWUs
IG9uTm9kZUZvdW5kKTsKQEAgLTQwNyw3ICs0MDcsNyBAQCBJbnNwZWN0b3JUZXN0LmV4cGFuZEVs
ZW1lbnRzVHJlZSA9IGZ1bmN0aW9uKGNhbGxiYWNrKQogICAgICAgICBleHBhbmQoV2ViSW5zcGVj
dG9yLnBhbmVscy5lbGVtZW50cy50cmVlT3V0bGluZSk7CiAgICAgICAgIGNhbGxiYWNrKCk7CiAg
ICAgfQotICAgIFdlYkluc3BlY3Rvci5pbnNwZWN0b3JWaWV3LnNldEN1cnJlbnRQYW5lbChXZWJJ
bnNwZWN0b3IucGFuZWxzLmVsZW1lbnRzKTsKKyAgICBXZWJJbnNwZWN0b3Iuc2hvd1BhbmVsKCJl
bGVtZW50cyIpOwogICAgIEluc3BlY3RvclRlc3QuZmluZE5vZGUoZnVuY3Rpb24oKSB7IHJldHVy
biBmYWxzZTsgfSwgb25BbGxOb2Rlc0F2YWlsYWJsZSk7CiB9OwogCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zLXRlc3QuanMgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zLXRlc3QuanMKaW5kZXggYzY2YzU3
OTc3ZjUyZTVkNDc3MjUwMmE0YmM1OTlkMjFiMzU0YTUyYy4uMzI3MTYzN2Q5MTM5Njg2YTM2YzE1
ODc5MTA5ZmU1N2JjYThjNzQ4NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9p
bnNwZWN0b3IvZXh0ZW5zaW9ucy10ZXN0LmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL2V4dGVuc2lvbnMtdGVzdC5qcwpAQCAtMzYsNyArMzYsNyBAQCB3aW5kb3cuYWRk
RXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIEluc3BlY3RvclRlc3Quc2FmZVdyYXAob25NZXNzYWdl
KSwgZmFsc2UpOwogSW5zcGVjdG9yVGVzdC5zaG93UGFuZWwgPSBmdW5jdGlvbihwYW5lbElkKQog
ewogICAgIGlmIChwYW5lbElkID09PSAiZXh0ZW5zaW9uIikKLSAgICAgICAgcGFuZWxJZCA9IFdl
Ykluc3BlY3Rvci5pbnNwZWN0b3JWaWV3Ll9wYW5lbE9yZGVyW1dlYkluc3BlY3Rvci5pbnNwZWN0
b3JWaWV3Ll9wYW5lbE9yZGVyLmxlbmd0aCAtIDFdLm5hbWU7CisgICAgICAgIHBhbmVsSWQgPSBX
ZWJJbnNwZWN0b3IuaW5zcGVjdG9yVmlldy5fcGFuZWxPcmRlcltXZWJJbnNwZWN0b3IuaW5zcGVj
dG9yVmlldy5fcGFuZWxPcmRlci5sZW5ndGggLSAxXTsKICAgICBXZWJJbnNwZWN0b3Iuc2hvd1Bh
bmVsKHBhbmVsSWQpOwogfQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9pbnNwZWN0LWVsZW1lbnQuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL2luc3BlY3QtZWxlbWVudC5odG1sCmluZGV4IGM4N2JhYTVkZDFmMGUwYjU0NzYwODg4
NWM0ODRhYjhmYzdiMmRlMDguLjkzYTMwNTQ1YzcyMjJhZjY1Zjg2NWYzYWFiNjA0MTlhOTNmNWJl
YzMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Qt
ZWxlbWVudC5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3Bl
Y3QtZWxlbWVudC5odG1sCkBAIC02LDggKzYsOCBAQAogCiBmdW5jdGlvbiB0ZXN0KCkKIHsKLSAg
ICBXZWJJbnNwZWN0b3IuaW5zcGVjdG9yVmlldy5zZXRDdXJyZW50UGFuZWwoV2ViSW5zcGVjdG9y
LnBhbmVscy5lbGVtZW50cyk7Ci0gICAgV2ViSW5zcGVjdG9yLnBhbmVscy5lbGVtZW50cy50cmVl
T3V0bGluZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5FbGVtZW50c1RyZWVPdXRsaW5l
LkV2ZW50cy5TZWxlY3RlZE5vZGVDaGFuZ2VkLCBzZWxlY3RlZE5vZGVDaGFuZ2VkLCB0aGlzKTsK
KyAgICBXZWJJbnNwZWN0b3Iuc2hvd1BhbmVsKCJlbGVtZW50cyIpLnRyZWVPdXRsaW5lLgorICAg
ICAgICBhZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5FbGVtZW50c1RyZWVPdXRsaW5lLkV2
ZW50cy5TZWxlY3RlZE5vZGVDaGFuZ2VkLCBzZWxlY3RlZE5vZGVDaGFuZ2VkLCB0aGlzKTsKICAg
ICBmdW5jdGlvbiBzZWxlY3RlZE5vZGVDaGFuZ2VkKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFy
IG5vZGUgPSBldmVudC5kYXRhOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9p
bnNwZWN0b3IvcmVzb3VyY2UtaGFyLXBhZ2VzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9yZXNvdXJjZS1oYXItcGFnZXMuaHRtbAppbmRleCBjNTdkMTRlM2VlNWU1ZmM3
MzZlYjBmNGZiNGU2YmU4YTFlZDhkNDVkLi5lNWQ2MmMwMWZjNmM1ZmNkZTVkMGExZThhODNhMmQ3
MzVhNDZjMzM5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9y
ZXNvdXJjZS1oYXItcGFnZXMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9yZXNvdXJjZS1oYXItcGFnZXMuaHRtbApAQCAtMjIsNyArMjIsNyBAQCB2YXIgdGVzdCA9
IGZ1bmN0aW9uKCkKICAgICAgICAgICAgICAgICBzdGVwMigpOwogICAgICAgICAgICAgfQogICAg
ICAgICB9Ci0gICAgICAgIFdlYkluc3BlY3Rvci5pbnNwZWN0b3JWaWV3LnNldEN1cnJlbnRQYW5l
bChXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmspOworICAgICAgICBXZWJJbnNwZWN0b3Iuc2hv
d1BhbmVsKCJuZXR3b3JrIik7CiAgICAgICAgIHZhciBuZXR3b3JrTG9nVmlldyA9IFdlYkluc3Bl
Y3Rvci5wYW5lbHMubmV0d29yay5fbmV0d29ya0xvZ1ZpZXc7CiAgICAgICAgIC8vIG5ldHdvcmtM
b2dWaWV3LmNsZWFyKCk7CiAgICAgICAgIG5ldHdvcmtMb2dWaWV3Ll9wcmVzZXJ2ZUxvZ1RvZ2ds
ZS50b2dnbGVkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL3Jlc291cmNlLXRyZWUvcmVzb3VyY2UtdHJlZS1mcmFtZS1hZGQuaHRtbCBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlLXRyZWUvcmVzb3VyY2UtdHJlZS1m
cmFtZS1hZGQuaHRtbAppbmRleCA3NWI5NWY4NjIzMTYzNmY5YTBkNDFjMDZhZWFiYmExZDFlZjM0
NmRiLi4xN2RhYzI3ZmUzNmNmMzIwYjJhZGUyNWFjYjhlN2VmM2Q4ZmFkYzQ0IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZS10cmVlL3Jlc291cmNl
LXRyZWUtZnJhbWUtYWRkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0
b3IvcmVzb3VyY2UtdHJlZS9yZXNvdXJjZS10cmVlLWZyYW1lLWFkZC5odG1sCkBAIC0yMyw2ICsy
Myw3IEBAIGZ1bmN0aW9uIG9uSWZyYW1lTG9hZCgpCiAKIGZ1bmN0aW9uIHRlc3QoKQogeworICAg
IFdlYkluc3BlY3Rvci5zaG93UGFuZWwoInJlc291cmNlcyIpOwogICAgIEluc3BlY3RvclRlc3Qu
cnVuQWZ0ZXJSZXNvdXJjZXNBcmVGaW5pc2hlZChbInJlc291cmNlLXRyZWUtZnJhbWUtYWRkLmh0
bWwiLCAicmVzb3VyY2UtdHJlZS10ZXN0LmpzIiwgInN0eWxlcy1pbml0aWFsLmNzcyJdLCBzdGVw
MSk7CiAKICAgICBmdW5jdGlvbiBzdGVwMSgpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZS10cmVlL3Jlc291cmNlLXRyZWUtbm9uLXVuaXF1ZS11
cmwuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlLXRyZWUv
cmVzb3VyY2UtdHJlZS1ub24tdW5pcXVlLXVybC5odG1sCmluZGV4IDlkNjAxNTY0ODFiNTM1YWIz
ZmQwYmM3NmI0NGIzNDhkZDE1ZWFiNGEuLjM3ZjE4Y2E3MmE0YWQzZGQxZjBiMTNlZGE0NGNhMTIz
OGQyMDIwYWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jl
c291cmNlLXRyZWUvcmVzb3VyY2UtdHJlZS1ub24tdW5pcXVlLXVybC5odG1sCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlLXRyZWUvcmVzb3VyY2UtdHJlZS1u
b24tdW5pcXVlLXVybC5odG1sCkBAIC0xNCw3ICsxNCw3IEBAIGZ1bmN0aW9uIGxvYWRJZnJhbWUo
KQogZnVuY3Rpb24gdGVzdCgpCiB7CiAgICAgSW5zcGVjdG9yVGVzdC5hZGRTbmlmZmVyKFdlYklu
c3BlY3Rvci5SZXNvdXJjZXNQYW5lbC5wcm90b3R5cGUsICJfcmVzb3VyY2VBZGRlZCIsIG9uUmVz
b3VyY2UsIHRydWUpOwotICAgIFdlYkluc3BlY3Rvci5wYW5lbHMucmVzb3VyY2VzLnNob3coKTsK
KyAgICBXZWJJbnNwZWN0b3Iuc2hvd1BhbmVsKCJyZXNvdXJjZXMiKTsKIAogICAgIHZhciBjc3NS
ZXF1ZXN0c0NvdW50ID0gMDsKICAgICBmdW5jdGlvbiBvblJlc291cmNlKGV2ZW50KQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2UtdHJlZS9yZXNv
dXJjZS10cmVlLXJlbG9hZC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
cmVzb3VyY2UtdHJlZS9yZXNvdXJjZS10cmVlLXJlbG9hZC5odG1sCmluZGV4IGFlMmMwODVhMjFk
NTEzM2M0YWM3M2RiNDdlYTBjNzk0ZDIwODRjMmIuLjlhYjJlMTQ5YWFlY2I2Nzg1MTgzOWI3ZjY4
ZjA5ODc3MjdhMjhkMmMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL3Jlc291cmNlLXRyZWUvcmVzb3VyY2UtdHJlZS1yZWxvYWQuaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZS10cmVlL3Jlc291cmNlLXRyZWUtcmVs
b2FkLmh0bWwKQEAgLTEwLDYgKzEwLDggQEAKIAogZnVuY3Rpb24gdGVzdCgpCiB7CisgICAgV2Vi
SW5zcGVjdG9yLnNob3dQYW5lbCgicmVzb3VyY2VzIik7CisKICAgICBJbnNwZWN0b3JUZXN0LnJl
bG9hZFBhZ2Uoc3RlcDEpOwogCiAgICAgZnVuY3Rpb24gc3RlcDEoKQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2UtdHJlZS9yZXNvdXJjZS10cmVl
LXRlc3QuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZS10cmVl
L3Jlc291cmNlLXRyZWUtdGVzdC5qcwppbmRleCBlYWU3NTY0ZDA1NDlmNjAxYjRlZTUwYjEyYTAz
ZjRlNzA1ZTQ1NGM3Li4wZDU2YjMyMDY2MDdjNzU2N2ZkOWUyODNlY2VkMDc5MGU0NDQ4NTFiIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZS10cmVl
L3Jlc291cmNlLXRyZWUtdGVzdC5qcworKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9yZXNvdXJjZS10cmVlL3Jlc291cmNlLXRyZWUtdGVzdC5qcwpAQCAtNjUsNyArNjUsNyBA
QCBJbnNwZWN0b3JUZXN0LmR1bXBSZXNvdXJjZXNUcmVlID0gZnVuY3Rpb24oKQogICAgIH0KIAog
ICAgIFdlYkluc3BlY3Rvci5pbnNwZWN0b3JWaWV3LnNldEN1cnJlbnRQYW5lbChXZWJJbnNwZWN0
b3IucGFuZWxzLnJlc291cmNlcyk7Ci0gICAgZHVtcChXZWJJbnNwZWN0b3IucGFuZWxzLnJlc291
cmNlcy5yZXNvdXJjZXNMaXN0VHJlZUVsZW1lbnQsICIiKTsKKyAgICBkdW1wKFdlYkluc3BlY3Rv
ci5wYW5lbCgicmVzb3VyY2VzIikucmVzb3VyY2VzTGlzdFRyZWVFbGVtZW50LCAiIik7CiB9CiAK
IEluc3BlY3RvclRlc3QuZHVtcFJlc291cmNlVHJlZUV2ZXJ5dGhpbmcgPSBmdW5jdGlvbigpCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS9jb21tYW5kLWxpbmUtYXBp
LWluc3BlY3QuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jb25zb2xlL2NvbW1hbmQtbGlu
ZS1hcGktaW5zcGVjdC5odG1sCmluZGV4IGZhYjg1YWM0ZjM4YTk4MWRlZWMzZGIzMTUzYjE1ZWYy
MzFkNDQzZTUuLjkzNTU5NGQyMTY3ODk3ZDgwYThkNjdiODVjY2JkYjE4MTUyOWRjZTIgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9jb25zb2xlL2NvbW1hbmQtbGluZS1hcGktaW5z
cGVjdC5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jb25zb2xlL2NvbW1hbmQtbGlu
ZS1hcGktaW5zcGVjdC5odG1sCkBAIC0zMiw3ICszMiw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAg
IEluc3BlY3RvclRlc3QucnVuVGVzdFN1aXRlKFsKICAgICAgICAgZnVuY3Rpb24gdGVzdFJldmVh
bEVsZW1lbnQobmV4dCkKICAgICAgICAgewotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRT
bmlmZmVyKFdlYkluc3BlY3RvciwgInVwZGF0ZUZvY3VzZWROb2RlIiwgc3RlcDIpOworICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5hZGRTbmlmZmVyKFdlYkluc3BlY3RvciwgIl91cGRhdGVGb2N1
c2VkTm9kZSIsIHN0ZXAyKTsKICAgICAgICAgICAgIGV2YWxBbmREdW1wKCJpbnNwZWN0KCQoJ3Ax
JykpIik7CiAKICAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXAyKCkKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9kb20tYnJlYWtwb2ludHMuaHRtbCBiL0xheW91dFRl
c3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9kb20tYnJlYWtwb2ludHMuaHRtbAppbmRleCA4MGRkNGQ5
Mjc2NTM2MWFiZjMyMGI0MjczNDc2ZGQzMjQ2NzY4ZjM4Li45ZmIzODM2M2IwYzg1MzE3N2QwMGI5
M2UyNzkyZWVhM2M0NDY0NWJiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVi
dWdnZXIvZG9tLWJyZWFrcG9pbnRzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Rl
YnVnZ2VyL2RvbS1icmVha3BvaW50cy5odG1sCkBAIC01Nyw3ICs1Nyw3IEBAIGZ1bmN0aW9uIGJy
ZWFrRGVidWdnZXIoKQogCiBmdW5jdGlvbiB0ZXN0KCkKIHsKLSAgICBXZWJJbnNwZWN0b3IuaW5z
cGVjdG9yVmlldy5zZXRDdXJyZW50UGFuZWwoV2ViSW5zcGVjdG9yLnBhbmVscy5lbGVtZW50cyk7
CisgICAgV2ViSW5zcGVjdG9yLnNob3dQYW5lbCgiZWxlbWVudHMiKTsKIAogICAgIHZhciBwYW5l
ID0gV2ViSW5zcGVjdG9yLmRvbUJyZWFrcG9pbnRzU2lkZWJhclBhbmU7CiAgICAgdmFyIHJvb3RF
bGVtZW50OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NvdXJj
ZS1mcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NvdXJjZS1mcmFt
ZS5odG1sCmluZGV4IDRhODc5MDYwMzE2ZWE1ZDQ0Mjk5NTBjN2RjOWFjODU3MmFmNjBhYTguLjRm
N2I2NjY0MzI1YjA1ZGZmMjdmMzM2MjBjYTYyYjZmMTMyMzE5N2MgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zb3VyY2UtZnJhbWUuaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc291cmNlLWZyYW1lLmh0bWwKQEAgLTE3LDcgKzE3LDcg
QEAgZnVuY3Rpb24gbWV0aG9kRm9yQnJlYWtwb2ludCgpCiAKIGZ1bmN0aW9uIHRlc3QoKQogewot
ICAgIFdlYkluc3BlY3Rvci5pbnNwZWN0b3JWaWV3LnNldEN1cnJlbnRQYW5lbChXZWJJbnNwZWN0
b3IucGFuZWxzLnJlc291cmNlcyk7CisgICAgV2ViSW5zcGVjdG9yLnNob3dQYW5lbCgicmVzb3Vy
Y2VzIik7CiAgICAgSW5zcGVjdG9yVGVzdC5ydW5EZWJ1Z2dlclRlc3RTdWl0ZShbCiAgICAgICAg
IGZ1bmN0aW9uIHRlc3RTZXRCcmVha3BvaW50KG5leHQpCiAgICAgICAgIHsKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci9lbGVtZW50cy9lZGl0LWRvbS1hY3Rpb25zLmh0bWwgYi9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMvZWRpdC1kb20tYWN0aW9ucy5odG1sCmluZGV4
IGY2ZDgzZmNmOTY4YTYzMDlkZDQ4NGIyOTE1MTBkOTVlZWNkM2EzZTYuLmJmMzg2ZTgxYTAzZmM3
YWVjNGQ3ZGM1OWY3NWViNGJmZmI4M2E2MTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9lbGVtZW50cy9lZGl0LWRvbS1hY3Rpb25zLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2VsZW1lbnRzL2VkaXQtZG9tLWFjdGlvbnMuaHRtbApAQCAtMTA2LDcgKzEwNiw3IEBA
IGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgICAgIHZhciBjaGlsZE5vZGVzID0gdGVzdE5v
ZGUuY2hpbGRyZW47CiAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZE5v
ZGVzLmxlbmd0aDsgKytpKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChjaGlsZE5vZGVzW2ld
Lm5vZGVUeXBlKCkgPT09IDgpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rv
ci51cGRhdGVGb2N1c2VkTm9kZShjaGlsZE5vZGVzW2ldLmlkKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIFdlYkluc3BlY3Rvci5fdXBkYXRlRm9jdXNlZE5vZGUoY2hpbGROb2Rlc1tpXS5pZCk7
CiAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhjaGlsZE5vZGVzW2ldKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgfQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzL2VsZW1lbnRzLWltZy10b29sdGlw
Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMvZWxlbWVudHMtaW1nLXRvb2x0
aXAuaHRtbAppbmRleCAxZTAwOWE0NTU1OWI4N2YwMDAxNmUxMTlkMGFlZTgzNTBhYjdmZWI2Li5k
YjBhMTIxMjYwYzRiYzc5NTc3Y2U3MGJlYzhhZGM3NDBkOWVmMjhjIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMvZWxlbWVudHMtaW1nLXRvb2x0aXAuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMvZWxlbWVudHMtaW1nLXRvb2x0aXAuaHRt
bApAQCAtNyw3ICs3LDcgQEAKIAogdmFyIHRlc3QgPSBmdW5jdGlvbigpCiB7Ci0gICAgV2ViSW5z
cGVjdG9yLmluc3BlY3RvclZpZXcuc2V0Q3VycmVudFBhbmVsKFdlYkluc3BlY3Rvci5wYW5lbHMu
ZWxlbWVudHMpOworICAgIFdlYkluc3BlY3Rvci5zaG93UGFuZWwoImVsZW1lbnRzIik7CiAKICAg
ICB2YXIgdHJlZUVsZW1lbnQ7CiAgICAgSW5zcGVjdG9yVGVzdC5ub2RlV2l0aElkKCJpbWFnZSIs
IHN0ZXAxKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9lbGVtZW50cy9lbGVt
ZW50cy1wYW5lbC1saW1pdGVkLWNoaWxkcmVuLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
ZWxlbWVudHMvZWxlbWVudHMtcGFuZWwtbGltaXRlZC1jaGlsZHJlbi5odG1sCmluZGV4IDgxMjg3
N2Q5YWUxODM5NTBjM2M4MTY2YjVkOGQzMDk1OTczZTYzNmEuLmQ4ZjFiYmQxNjg0ZDE3NWIxM2Q1
Mjk1NjcyZjU3M2MyZDhiMmUzYzEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9l
bGVtZW50cy9lbGVtZW50cy1wYW5lbC1saW1pdGVkLWNoaWxkcmVuLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzL2VsZW1lbnRzLXBhbmVsLWxpbWl0ZWQtY2hpbGRyZW4u
aHRtbApAQCAtMTgsNyArMTgsNyBAQCBmdW5jdGlvbiBpbnNlcnROb2RlKCkKIGZ1bmN0aW9uIHRl
c3QoKQogewogICAgIHZhciBkYXRhVHJlZUVsZW1lbnQ7Ci0gICAgV2ViSW5zcGVjdG9yLmluc3Bl
Y3RvclZpZXcuc2V0Q3VycmVudFBhbmVsKFdlYkluc3BlY3Rvci5wYW5lbHMuZWxlbWVudHMpOwor
ICAgIFdlYkluc3BlY3Rvci5zaG93UGFuZWwoImVsZW1lbnRzIik7CiAgICAgSW5zcGVjdG9yVGVz
dC5ub2RlV2l0aElkKCJkYXRhIiwgc3RlcDEpOwogCiAgICAgZnVuY3Rpb24gc3RlcDEobm9kZSkK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9lbGVtZW50cy9oaWdobGlnaHQtbm9k
ZS1zY2FsZWQuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9lbGVtZW50cy9oaWdobGlnaHQt
bm9kZS1zY2FsZWQuaHRtbAppbmRleCAwZTc5ZmNkMmI4YmU5YTlkMzMzN2NkNjcxMWY4ZTQyMGM2
YjRhOTgyLi45Mzc0OGUyZDdlYWFkZjQ4ZmYxMDQxZWExNWYzMGZiNThiZDYxM2UwIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMvaGlnaGxpZ2h0LW5vZGUtc2NhbGVk
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzL2hpZ2hsaWdodC1ub2Rl
LXNjYWxlZC5odG1sCkBAIC0zMCw3ICszMCw3IEBAIGZ1bmN0aW9uIG9ubG9hZCgpCiAgICAgCiBm
dW5jdGlvbiB0ZXN0KCkKIHsKLSAgICBXZWJJbnNwZWN0b3IuaW5zcGVjdG9yVmlldy5zZXRDdXJy
ZW50UGFuZWwoV2ViSW5zcGVjdG9yLnBhbmVscy5lbGVtZW50cyk7CisgICAgV2ViSW5zcGVjdG9y
LnNob3dQYW5lbCgiZWxlbWVudHMiKTsKICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLmVsZW1lbnRz
LnRyZWVPdXRsaW5lLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZU91
dGxpbmUuRXZlbnRzLlNlbGVjdGVkTm9kZUNoYW5nZWQsIHNlbGVjdGVkTm9kZUNoYW5nZWQsIHRo
aXMpOwogCiAgICAgZnVuY3Rpb24gc2VsZWN0ZWROb2RlQ2hhbmdlZChldmVudCkKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zL2V4dGVuc2lvbnMtcGFuZWwuaHRt
bCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zL2V4dGVuc2lvbnMtcGFuZWwuaHRt
bAppbmRleCA5YzI1YjExYWExYWVmNzkxNTMxOWM3ODc0M2ZmNjk4NmZjNWQxOTc3Li5iMjI0MGRj
OGY3YjBlNmQ2YTI1MGY2ZjExMmIzZDliODQ4MDVlYWNhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy9leHRlbnNpb25zLXBhbmVsLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMvZXh0ZW5zaW9ucy1wYW5lbC5odG1sCkBAIC0xMiw3
ICsxMiw2IEBAIGZ1bmN0aW9uIGluaXRpYWxpemVfZXh0ZW5zaW9uc1BhbmVsVGVzdCgpCiB7CiAg
ICAgSW5zcGVjdG9yVGVzdC5nZXRQYW5lbFNpemUgPSBmdW5jdGlvbigpCiAgICAgewotICAgICAg
ICB2YXIgZXh0ZW5zaW9uUGFuZWwgPSBXZWJJbnNwZWN0b3IuaW5zcGVjdG9yVmlldy5fcGFuZWxP
cmRlcltXZWJJbnNwZWN0b3IuaW5zcGVjdG9yVmlldy5fcGFuZWxPcmRlci5sZW5ndGggLSAxXTsK
ICAgICAgICAgdmFyIGJvdW5kaW5nUmVjdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJtYWlu
LXBhbmVscyIpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwogICAgICAgICByZXR1cm4gewogICAg
ICAgICAgICAgd2lkdGg6IGJvdW5kaW5nUmVjdC53aWR0aCwKQEAgLTQ3LDcgKzQ2LDcgQEAgZnVu
Y3Rpb24gaW5pdGlhbGl6ZV9leHRlbnNpb25zUGFuZWxUZXN0KCkKICAgICB7CiAgICAgICAgIFdl
Ykluc3BlY3Rvci5zaG93UGFuZWwoImNvbnNvbGUiKTsKICAgICAgICAgdmFyIHhwYXRoUmVzdWx0
ID0gZG9jdW1lbnQuZXZhbHVhdGUoIi8vYVtzdGFydHMtd2l0aCguLCAnZXh0ZW5zaW9ucy1wYW5l
bC5odG1sJyldIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
V2ViSW5zcGVjdG9yLnBhbmVscy5jb25zb2xlLmVsZW1lbnQsIG51bGwsIFhQYXRoUmVzdWx0LkFO
WV9VTk9SREVSRURfTk9ERV9UWVBFLCBudWxsKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVsKCJjb25zb2xlIikuZWxlbWVudCwg
bnVsbCwgWFBhdGhSZXN1bHQuQU5ZX1VOT1JERVJFRF9OT0RFX1RZUEUsIG51bGwpOwogICAgICAg
ICB2YXIgY2xpY2sgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgiTW91c2VFdmVudCIpOwogICAgICAg
ICBjbGljay5pbml0TW91c2VFdmVudCgiY2xpY2siLCB0cnVlLCB0cnVlKTsKICAgICAgICAgeHBh
dGhSZXN1bHQuc2luZ2xlTm9kZVZhbHVlLmRpc3BhdGNoRXZlbnQoY2xpY2spOwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMvZXh0ZW5zaW9ucy1zaWRlYmFyLmh0
bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy9leHRlbnNpb25zLXNpZGViYXIu
aHRtbAppbmRleCAxMzg2NTA2N2JkNzJmMGQ3Mzg4MzI0ZDg2NjczYTVhMzdhZTBjYWY5Li4yZDU0
OTVkMWQxNjVjN2M3OGFjZDNiYjY5ZmU2ZTU4NWUxYjNkZTA0IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy9leHRlbnNpb25zLXNpZGViYXIuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy9leHRlbnNpb25zLXNpZGViYXIuaHRtbApA
QCAtOCw3ICs4LDcgQEAgZnVuY3Rpb24gaW5pdGlhbGl6ZV9leHRlbnNpb25zU2lkZWJhclRlc3Qo
KQogewogICAgIEluc3BlY3RvclRlc3QuZHVtcFNpZGViYXJDb250ZW50ID0gZnVuY3Rpb24oY2Fs
bGJhY2spCiAgICAgewotICAgICAgICB2YXIgc2lkZWJhclBhbmVzID0gV2ViSW5zcGVjdG9yLnBh
bmVscy5lbGVtZW50cy5zaWRlYmFyUGFuZXM7CisgICAgICAgIHZhciBzaWRlYmFyUGFuZXMgPSBX
ZWJJbnNwZWN0b3IucGFuZWwoImVsZW1lbnRzIikuc2lkZWJhclBhbmVzOwogICAgICAgICAvLyB0
aGUgc2lkZWJhciBvZiBpbnRlcmVzdCBpcyBwcmVzdW1lZCB0byBhbHdheXMgYmUgbGFzdC4KICAg
ICAgICAgdmFyIHNpZGViYXIgPSBzaWRlYmFyUGFuZXNbT2JqZWN0LmtleXMoc2lkZWJhclBhbmVz
KS5wb3AoKV07CiAgICAgICAgIEluc3BlY3RvclRlc3QucnVuQWZ0ZXJQZW5kaW5nRGlzcGF0Y2hl
cyhmdW5jdGlvbigpIHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMv
Zm9yY2UtcHNldWRvLXN0YXRlLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL2Zv
cmNlLXBzZXVkby1zdGF0ZS5odG1sCmluZGV4IGE2MTQ2ZGQ5MjEyYzExMmY5NjE0MTZmNmI4M2Rk
YTdmMjJlM2ZiMGYuLmU5NWU0NjE5NmQzMmZiZWQwYWNkZjBhZTNlNmJmM2FhYTI5MDZlODkgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvZm9yY2UtcHNldWRvLXN0YXRl
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9mb3JjZS1wc2V1ZG8tc3Rh
dGUuaHRtbApAQCAtNiw3ICs2LDcgQEAKIAogZnVuY3Rpb24gdGVzdCgpCiB7Ci0gICAgV2ViSW5z
cGVjdG9yLmluc3BlY3RvclZpZXcuc2V0Q3VycmVudFBhbmVsKFdlYkluc3BlY3Rvci5wYW5lbHMu
ZWxlbWVudHMpOworICAgIFdlYkluc3BlY3Rvci5zaG93UGFuZWwoImVsZW1lbnRzIik7CiAKICAg
ICBJbnNwZWN0b3JUZXN0Lm5vZGVXaXRoSWQoImRpdiIsIGZvdW5kRGl2KTsKIApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9zZXQtcHJvcGVydHktYm91bmRhcmllcy5o
dG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9zZXQtcHJvcGVydHktYm91bmRhcmll
cy5odG1sCmluZGV4IDkyYTk1ZDY1NTZlMzM1NDg5ZmI2NjhmM2MxMGE3MDEyOThlMTA4ZDguLmQ1
NmExNWU0NDU1MTZhNDI5OTUxYjI1YWRiODE0OTdlMGNmMjZjODggMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvc2V0LXByb3BlcnR5LWJvdW5kYXJpZXMuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3NldC1wcm9wZXJ0eS1ib3VuZGFyaWVzLmh0
bWwKQEAgLTEzLDcgKzEzLDcgQEAgaDEgewogCiBmdW5jdGlvbiB0ZXN0KCkKIHsKLSAgICBXZWJJ
bnNwZWN0b3IuaW5zcGVjdG9yVmlldy5zZXRDdXJyZW50UGFuZWwoV2ViSW5zcGVjdG9yLnBhbmVs
cy5lbGVtZW50cyk7CisgICAgV2ViSW5zcGVjdG9yLnNob3dQYW5lbCgiZWxlbWVudHMiKTsKICAg
ICBDU1NBZ2VudC5nZXRBbGxTdHlsZVNoZWV0cyhzdHlsZVNoZWV0SW5mb3NMb2FkZWQpOwogCiAg
ICAgZnVuY3Rpb24gc3R5bGVTaGVldEluZm9zTG9hZGVkKGVycm9yLCBpbmZvcykKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvc3R5bGVzLW5ldy1BUEkuaHRtbCBiL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvc3R5bGVzLW5ldy1BUEkuaHRtbAppbmRleCBkNTBi
YTIxNGMzZmM2MzZhZTZjYTVlY2RlMDBlZmJjZWM0MjI1MjVlLi41ZTZmMzkzZGI4MjdkZDI1NWZk
Mzc2YmI4ZGYwOTNjY2U0N2ZkNmE2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
c3R5bGVzL3N0eWxlcy1uZXctQVBJLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0
eWxlcy9zdHlsZXMtbmV3LUFQSS5odG1sCkBAIC05LDcgKzksNyBAQAogCiBmdW5jdGlvbiB0ZXN0
KCkKIHsKLSAgICBXZWJJbnNwZWN0b3IuaW5zcGVjdG9yVmlldy5zZXRDdXJyZW50UGFuZWwoV2Vi
SW5zcGVjdG9yLnBhbmVscy5lbGVtZW50cyk7CisgICAgV2ViSW5zcGVjdG9yLnNob3dQYW5lbCgi
ZWxlbWVudHMiKTsKIAogICAgIHRlc3Rfc3R5bGVzKCk7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2luc3BlY3Rvci90aW1lbGluZS90aW1lbGluZS10ZXN0LmpzIGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL3RpbWVsaW5lL3RpbWVsaW5lLXRlc3QuanMKaW5kZXggOWU2OTkzNTNlMTMwZmYwOTg5
NTUxNjkwN2M3OTA4MzQ5MjY2NzExYi4uMjE5OTA5MzlkZDUwZDQ1NTgwMzdlZmUwNGM4ZmNlNDI0
NWE3OTBmNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lL3RpbWVs
aW5lLXRlc3QuanMKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lL3RpbWVsaW5l
LXRlc3QuanMKQEAgLTI2LDggKzI2LDggQEAgSW5zcGVjdG9yVGVzdC50aW1lbGluZVByb3BlcnR5
Rm9ybWF0dGVycyA9IHsKIEluc3BlY3RvclRlc3Quc3RhcnRUaW1lbGluZSA9IGZ1bmN0aW9uKGNh
bGxiYWNrKQogewogICAgIEluc3BlY3RvclRlc3QuX3RpbWVsaW5lUmVjb3JkcyA9IFtdOwotICAg
IFdlYkluc3BlY3Rvci5wYW5lbHMudGltZWxpbmUudG9nZ2xlVGltZWxpbmVCdXR0b24udG9nZ2xl
ZCA9IHRydWU7Ci0gICAgV2ViSW5zcGVjdG9yLnBhbmVscy50aW1lbGluZS5fbW9kZWwuX2NvbGxl
Y3Rpb25FbmFibGVkID0gdHJ1ZTsKKyAgICBXZWJJbnNwZWN0b3IucGFuZWwoInRpbWVsaW5lIiku
dG9nZ2xlVGltZWxpbmVCdXR0b24udG9nZ2xlZCA9IHRydWU7CisgICAgV2ViSW5zcGVjdG9yLnBh
bmVsKCJ0aW1lbGluZSIpLl9tb2RlbC5fY29sbGVjdGlvbkVuYWJsZWQgPSB0cnVlOwogICAgIFRp
bWVsaW5lQWdlbnQuc3RhcnQoY2FsbGJhY2spOwogICAgIGZ1bmN0aW9uIGFkZFJlY29yZChyZWNv
cmQpCiAgICAgewpAQCAtNjIsOCArNjIsOCBAQCBJbnNwZWN0b3JUZXN0LnN0b3BUaW1lbGluZSA9
IGZ1bmN0aW9uKGNhbGxiYWNrKQogewogICAgIGZ1bmN0aW9uIGRpZFN0b3AoKQogICAgIHsKLSAg
ICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy50aW1lbGluZS50b2dnbGVUaW1lbGluZUJ1dHRvbi50
b2dnbGVkID0gZmFsc2U7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMudGltZWxpbmUuX21v
ZGVsLl9jb2xsZWN0aW9uRW5hYmxlZCA9IGZhbHNlOworICAgICAgICBXZWJJbnNwZWN0b3IucGFu
ZWwoInRpbWVsaW5lIikudG9nZ2xlVGltZWxpbmVCdXR0b24udG9nZ2xlZCA9IGZhbHNlOworICAg
ICAgICBXZWJJbnNwZWN0b3IucGFuZWwoInRpbWVsaW5lIikuX21vZGVsLl9jb2xsZWN0aW9uRW5h
YmxlZCA9IGZhbHNlOwogICAgICAgICBjYWxsYmFjayhJbnNwZWN0b3JUZXN0Ll90aW1lbGluZVJl
Y29yZHMpOwogICAgIH0KICAgICBUaW1lbGluZUFnZW50LnN0b3AoZGlkU3RvcCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>159041</attachid>
            <date>2012-08-17 01:17:33 -0700</date>
            <delta_ts>2012-08-17 02:16:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94222-20120817121654.patch</filename>
            <type>text/plain</type>
            <size>76212</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1ODU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODhhZmI0ZmNlYTI2MTIy
ZmNiZjJjYWNjYjljOWZhM2Q2NGI0OWE0ZS4uOWYyZWI4MmNhZWVkNGUxZmViNjIwOTYwMjAzOWZm
ZWRmNzM3MDlkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNCBAQAorMjAxMi0wOC0xNiAgUGF2
ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBidWlsZCBFbGVtZW50cywgUmVzb3VyY2VzLCBUaW1lbGluZSwgQXVkaXRzIGFuZCBDb25z
b2xlIHBhbmVscyBsYXppbHkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD05NDIyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRoZXJlIGlzIG5vIG5lZWQgdG8gY29uc3RydWN0IHRoZXNlIHBhbmVscyBvbiBp
bnNwZWN0b3Igc3RhcnR1cCAtIHdlIGNhbiBkbyB0aGF0IGxhemlseS4KKyAgICAgICAgVGhpcyBj
aGFuZ2UgaW50cm9kdWNlcyB0aGUgY29uY2VwdCBvZiBQYW5lbERlc2NyaXB0b3IgdGhhdCBpcyBz
dWZmaWNpZW50IGZvciB0aGUgcGFuZWwKKyAgICAgICAgcmVwcmVzZW50YXRpb24gYmVmb3JlIGl0
IGhhcyBiZWVuIHNlbGVjdGVkLiBJdCBhbHNvIG1ha2VzIHNlbGVjdGVkIHBhbmVscyBidWlsZCBs
YXppbHkuCisKKyAgICAgICAgVGhlIG5leHQgc3RlcCBpcyB0byBtaWdyYXRlIHJlc3Qgb2YgdGhl
IHBhbmVscyBhbmQgbG9hZCB0aGUgcGFuZWwgY29kZSBsYXppbHkgYXMgd2VsbC4KKyAgICAgICAg
VGhhdCBzaG91bGQgc3BlZWQgdXAgc3RhcnR1cCB0aW1lIHNpZ25pZmljYW50bHkuCisKKyAgICAg
ICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0c1BhbmVsLmpzOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkF1ZGl0c1BhbmVsKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5BdWRpdHNQYW5lbC5w
cm90b3R5cGUuX2F1ZGl0RmluaXNoZWRDYWxsYmFjayk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
QXVkaXRzU2lkZWJhclRyZWVFbGVtZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5BdWRpdHNT
aWRlYmFyVHJlZUVsZW1lbnQucHJvdG90eXBlLm9uc2VsZWN0KToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5BdWRpdFJlc3VsdFNpZGViYXJUcmVlRWxlbWVudCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuQXVkaXRSZXN1bHRTaWRlYmFyVHJlZUVsZW1lbnQucHJvdG90eXBlLm9uc2VsZWN0KToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVQYW5lbC5qczoKKyAgICAgICAgKiBp
bnNwZWN0b3IvZnJvbnQtZW5kL0RPTVN0b3JhZ2UuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
RE9NU3RvcmFnZURpc3BhdGNoZXIucHJvdG90eXBlLmFkZERPTVN0b3JhZ2UpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VEaXNwYXRjaGVyLnByb3RvdHlwZS5kb21TdG9yYWdlVXBk
YXRlZCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9EYXRhYmFzZS5qczoKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5EYXRhYmFzZURpc3BhdGNoZXIucHJvdG90eXBlLmFkZERhdGFiYXNl
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzUGFuZWwuanM6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
RWxlbWVudHNQYW5lbC5wcm90b3R5cGUucmV2ZWFsQW5kU2VsZWN0Tm9kZSk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbC5wcm90b3R5cGUuc2V0U2VhcmNoaW5nRm9yTm9kZSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbC5wcm90b3R5cGUudG9nZ2xlU2Vh
cmNoaW5nRm9yTm9kZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1Ry
ZWVPdXRsaW5lLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZUVsZW1lbnQu
cHJvdG90eXBlLl9wb3B1bGF0ZUZvcmNlZFBzZXVkb1N0YXRlSXRlbXMpOgorICAgICAgICAqIGlu
c3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9uUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuRXh0ZW5zaW9uUGFuZWwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkV4dGVuc2lvblBhbmVs
LnByb3RvdHlwZS5qdW1wVG9QcmV2aW91c1NlYXJjaFJlc3VsdCk6CisgICAgICAgICogaW5zcGVj
dG9yL2Zyb250LWVuZC9FeHRlbnNpb25TZXJ2ZXIuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
RXh0ZW5zaW9uU2VydmVyLnByb3RvdHlwZS5fb25DcmVhdGVQYW5lbCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuRXh0ZW5zaW9uU2VydmVyLnByb3RvdHlwZS5fb25BZGRBdWRpdENhdGVnb3J5KToK
KyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0luc3BlY3RvckZyb250ZW5kQVBJLmpzOgor
ICAgICAgICAoSW5zcGVjdG9yRnJvbnRlbmRBUEkuaXNUaW1lbGluZVByb2ZpbGluZ0VuYWJsZWQp
OgorICAgICAgICAoSW5zcGVjdG9yRnJvbnRlbmRBUEkuc2V0VGltZWxpbmVQcm9maWxpbmdFbmFi
bGVkKToKKyAgICAgICAgKEluc3BlY3RvckZyb250ZW5kQVBJLnNob3dDb25zb2xlKToKKyAgICAg
ICAgKEluc3BlY3RvckZyb250ZW5kQVBJLnNob3dSZXNvdXJjZXMpOgorICAgICAgICAoSW5zcGVj
dG9yRnJvbnRlbmRBUEkuZW50ZXJJbnNwZWN0RWxlbWVudE1vZGUpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9mcm9udC1lbmQvSW5zcGVjdG9yVmlldy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5J
bnNwZWN0b3JWaWV3KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5JbnNwZWN0b3JWaWV3LnByb3Rv
dHlwZS5hZGRQYW5lbCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSW5zcGVjdG9yVmlldy5wcm90
b3R5cGUucGFuZWwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkluc3BlY3RvclZpZXcucHJvdG90
eXBlLnNob3dQYW5lbCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSW5zcGVjdG9yVmlldy5wcm90
b3R5cGUuX2tleURvd25JbnRlcm5hbCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9O
ZXR3b3JrUGFuZWwuanM6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9QYW5lbC5qczoK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5QYW5lbC5wcm90b3R5cGUud2FzU2hvd24pOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlBhbmVsLnByb3RvdHlwZS53aWxsSGlkZSk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuUGFuZWxEZXNjcmlwdG9yKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5QYW5lbERl
c2NyaXB0b3IucHJvdG90eXBlLm5hbWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlBhbmVsRGVz
Y3JpcHRvci5wcm90b3R5cGUudGl0bGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlBhbmVsRGVz
Y3JpcHRvci5wcm90b3R5cGUuaWNvblVSTCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUGFuZWxE
ZXNjcmlwdG9yLnByb3RvdHlwZS5zZXRJY29uVVJMKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Q
YW5lbERlc2NyaXB0b3IucHJvdG90eXBlLnBhbmVsKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Q
YW5lbERlc2NyaXB0b3IucHJvdG90eXBlLmxhenkpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9u
dC1lbmQvUHJvZmlsZXNQYW5lbC5qczoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1Jl
c291cmNlVHJlZU1vZGVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZU1v
ZGVsLnByb3RvdHlwZS5jYWNoZWRSZXNvdXJjZXNMb2FkZWQpOgorICAgICAgICAqIGluc3BlY3Rv
ci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVz
b3VyY2VzUGFuZWwpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVs
LmpzOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzU2lkZWJhclBhbmUuanM6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0aWVzU2VjdGlvbi5wcm90b3R5cGUu
ZWRpdGluZ1NlbGVjdG9yQ29tbWl0dGVkLnN1Y2Nlc3NDYWxsYmFjayk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuU3R5bGVQcm9wZXJ0aWVzU2VjdGlvbi5wcm90b3R5cGUuZWRpdGluZ1NlbGVjdG9y
Q29tbWl0dGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnR5VHJlZUVsZW1l
bnQucHJvdG90eXBlLnVwZGF0ZVRpdGxlLmxpbmtpZnlVUkwpOgorICAgICAgICAqIGluc3BlY3Rv
ci9mcm9udC1lbmQvVGltZWxpbmVQYW5lbC5qczoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQt
ZW5kL1Rvb2xiYXIuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVG9vbGJhci5wcm90b3R5cGUu
YWRkUGFuZWwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRvb2xiYXIucHJvdG90eXBlLl9jcmVh
dGVQYW5lbFRvb2xiYXJJdGVtLm9uVG9vbGJhckl0ZW1DbGlja2VkKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5Ub29sYmFyLnByb3RvdHlwZS5fY3JlYXRlUGFuZWxUb29sYmFySXRlbS5wYW5lbFNl
bGVjdGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Ub29sYmFyLnByb3RvdHlwZS5fY3JlYXRl
UGFuZWxUb29sYmFySXRlbSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVG9vbGJhci5wcm90b3R5
cGUuX3BhbmVsU2VsZWN0ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRvb2xiYXIucHJvdG90
eXBlLl9zZXREcm9wZG93blZpc2libGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRvb2xiYXJE
cm9wZG93bik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVG9vbGJhckRyb3Bkb3duLnByb3RvdHlw
ZS5zaG93KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Ub29sYmFyRHJvcGRvd24ucHJvdG90eXBl
Ll9wb3B1bGF0ZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3Nz
OgorICAgICAgICAoLnRvb2xiYXItc21hbGwgLnRvb2xiYXItaWNvbi5jdXN0b20tdG9vbGJhci1p
Y29uKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qczoKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5fcGFuZWxEZXNjcmlwdG9ycyk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuX3BhbmVsU2VsZWN0ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLl9jcmVhdGVHbG9iYWxT
dGF0dXNCYXJJdGVtcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuZG9jdW1lbnRDbGljay5mb2xs
b3dMaW5rKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5kb2N1bWVudENsaWNrKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5vcGVuUmVzb3VyY2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLnNob3dQ
YW5lbCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IucGFuZWwpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLmluc3BlY3QuKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5pbnNwZWN0KToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5fc2hvd0FuY2hvckxvY2F0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5zaG93UHJvZmlsZUZvclVSTCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuZnJvbnRlbmRSZXVz
ZWQpOgorCiAyMDEyLTA4LTE2ICBOaWNvIFdlYmVyICA8dGhha2lzQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBbY2hyb21pdW0vbWFjXSBSZW1vdmUgUmVuZGVyVGhlbWVDaHJvbWl1bU1hYzo6cGFp
bnRUZXh0RmllbGQgb3ZlcnJpZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvQXVkaXRzUGFuZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0F1ZGl0c1BhbmVsLmpzCmluZGV4IGI4MzRhMGIwZjQ0YjVkZDRiYTQyOTliZjA1NzVj
N2Q4MDBhZWZjOGUuLjU2YmM0YTgyZjY2OGEzOTZiZDdmYjk0Njk1NWE5ZDRiMTQyMjFhNTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQXVkaXRzUGFuZWwu
anMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9BdWRpdHNQYW5lbC5q
cwpAQCAtNDMsNyArNDMsNyBAQCBXZWJJbnNwZWN0b3IuQXVkaXRzUGFuZWwgPSBmdW5jdGlvbigp
CiAgICAgdGhpcy5zaWRlYmFyVHJlZS5hcHBlbmRDaGlsZCh0aGlzLmF1ZGl0c1RyZWVFbGVtZW50
KTsKICAgICB0aGlzLmF1ZGl0c1RyZWVFbGVtZW50Lmxpc3RJdGVtRWxlbWVudC5hZGRTdHlsZUNs
YXNzKCJoaWRkZW4iKTsKIAotICAgIHRoaXMuYXVkaXRzSXRlbVRyZWVFbGVtZW50ID0gbmV3IFdl
Ykluc3BlY3Rvci5BdWRpdHNTaWRlYmFyVHJlZUVsZW1lbnQoKTsKKyAgICB0aGlzLmF1ZGl0c0l0
ZW1UcmVlRWxlbWVudCA9IG5ldyBXZWJJbnNwZWN0b3IuQXVkaXRzU2lkZWJhclRyZWVFbGVtZW50
KHRoaXMpOwogICAgIHRoaXMuYXVkaXRzVHJlZUVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5hdWRp
dHNJdGVtVHJlZUVsZW1lbnQpOwogCiAgICAgdGhpcy5hdWRpdFJlc3VsdHNUcmVlRWxlbWVudCA9
IG5ldyBXZWJJbnNwZWN0b3IuU2lkZWJhclNlY3Rpb25UcmVlRWxlbWVudChXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIlJFU1VMVFMiKSwge30sIHRydWUpOwpAQCAtNjUsMTEgKzY1LDYgQEAgV2ViSW5z
cGVjdG9yLkF1ZGl0c1BhbmVsID0gZnVuY3Rpb24oKQogfQogCiBXZWJJbnNwZWN0b3IuQXVkaXRz
UGFuZWwucHJvdG90eXBlID0gewotICAgIGdldCB0b29sYmFySXRlbUxhYmVsKCkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkF1ZGl0cyIpOwotICAgIH0sCi0K
ICAgICBnZXQgc3RhdHVzQmFySXRlbXMoKQogICAgIHsKICAgICAgICAgcmV0dXJuIFt0aGlzLmNs
ZWFyUmVzdWx0c0J1dHRvbi5lbGVtZW50XTsKQEAgLTE1MSw3ICsxNDYsNyBAQCBXZWJJbnNwZWN0
b3IuQXVkaXRzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgIG9yZGluYWwrKzsK
ICAgICAgICAgfQogCi0gICAgICAgIHZhciByZXN1bHRUcmVlRWxlbWVudCA9IG5ldyBXZWJJbnNw
ZWN0b3IuQXVkaXRSZXN1bHRTaWRlYmFyVHJlZUVsZW1lbnQocmVzdWx0cywgbWFpblJlc291cmNl
VVJMLCBvcmRpbmFsKTsKKyAgICAgICAgdmFyIHJlc3VsdFRyZWVFbGVtZW50ID0gbmV3IFdlYklu
c3BlY3Rvci5BdWRpdFJlc3VsdFNpZGViYXJUcmVlRWxlbWVudCh0aGlzLCByZXN1bHRzLCBtYWlu
UmVzb3VyY2VVUkwsIG9yZGluYWwpOwogICAgICAgICB0aGlzLmF1ZGl0UmVzdWx0c1RyZWVFbGVt
ZW50LmFwcGVuZENoaWxkKHJlc3VsdFRyZWVFbGVtZW50KTsKICAgICAgICAgcmVzdWx0VHJlZUVs
ZW1lbnQucmV2ZWFsQW5kU2VsZWN0KCk7CiAgICAgICAgIGlmICghdGhpcy5fcHJvZ3Jlc3NNb25p
dG9yLmNhbmNlbGVkICYmIGxhdW5jaGVyQ2FsbGJhY2spCkBAIC01MjYsMTEgKzUyMSwxMiBAQCBX
ZWJJbnNwZWN0b3IuQXVkaXRQcm9ncmVzc01vbml0b3IucHJvdG90eXBlID0gewogLyoqCiAgKiBA
Y29uc3RydWN0b3IKICAqIEBleHRlbmRzIHtXZWJJbnNwZWN0b3IuU2lkZWJhclRyZWVFbGVtZW50
fQorICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuQXVkaXRzUGFuZWx9IHBhbmVsCiAgKi8KLVdlYklu
c3BlY3Rvci5BdWRpdHNTaWRlYmFyVHJlZUVsZW1lbnQgPSBmdW5jdGlvbigpCitXZWJJbnNwZWN0
b3IuQXVkaXRzU2lkZWJhclRyZWVFbGVtZW50ID0gZnVuY3Rpb24ocGFuZWwpCiB7CisgICAgdGhp
cy5fcGFuZWwgPSBwYW5lbDsKICAgICB0aGlzLnNtYWxsID0gZmFsc2U7Ci0KICAgICBXZWJJbnNw
ZWN0b3IuU2lkZWJhclRyZWVFbGVtZW50LmNhbGwodGhpcywgImF1ZGl0cy1zaWRlYmFyLXRyZWUt
aXRlbSIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQXVkaXRzIiksICIiLCBudWxsLCBmYWxzZSk7
CiB9CiAKQEAgLTU0Miw3ICs1MzgsNyBAQCBXZWJJbnNwZWN0b3IuQXVkaXRzU2lkZWJhclRyZWVF
bGVtZW50LnByb3RvdHlwZSA9IHsKIAogICAgIG9uc2VsZWN0OiBmdW5jdGlvbigpCiAgICAgewot
ICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLmF1ZGl0cy5zaG93TGF1bmNoZXJWaWV3KCk7Cisg
ICAgICAgIHRoaXMuX3BhbmVsLnNob3dMYXVuY2hlclZpZXcoKTsKICAgICB9LAogCiAgICAgZ2V0
IHNlbGVjdGFibGUoKQpAQCAtNTYxLDE5ICs1NTcsMjAgQEAgV2ViSW5zcGVjdG9yLkF1ZGl0c1Np
ZGViYXJUcmVlRWxlbWVudC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLlNpZGVi
YXIKIC8qKgogICogQGNvbnN0cnVjdG9yCiAgKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLlNpZGVi
YXJUcmVlRWxlbWVudH0KKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkF1ZGl0c1BhbmVsfSBwYW5l
bAogICovCi1XZWJJbnNwZWN0b3IuQXVkaXRSZXN1bHRTaWRlYmFyVHJlZUVsZW1lbnQgPSBmdW5j
dGlvbihyZXN1bHRzLCBtYWluUmVzb3VyY2VVUkwsIG9yZGluYWwpCitXZWJJbnNwZWN0b3IuQXVk
aXRSZXN1bHRTaWRlYmFyVHJlZUVsZW1lbnQgPSBmdW5jdGlvbihwYW5lbCwgcmVzdWx0cywgbWFp
blJlc291cmNlVVJMLCBvcmRpbmFsKQogeworICAgIHRoaXMuX3BhbmVsID0gcGFuZWw7CiAgICAg
dGhpcy5yZXN1bHRzID0gcmVzdWx0czsKICAgICB0aGlzLm1haW5SZXNvdXJjZVVSTCA9IG1haW5S
ZXNvdXJjZVVSTDsKLQogICAgIFdlYkluc3BlY3Rvci5TaWRlYmFyVHJlZUVsZW1lbnQuY2FsbCh0
aGlzLCAiYXVkaXQtcmVzdWx0LXNpZGViYXItdHJlZS1pdGVtIiwgU3RyaW5nLnNwcmludGYoIiVz
ICglZCkiLCBtYWluUmVzb3VyY2VVUkwsIG9yZGluYWwpLCAiIiwge30sIGZhbHNlKTsKIH0KIAog
V2ViSW5zcGVjdG9yLkF1ZGl0UmVzdWx0U2lkZWJhclRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsK
ICAgICBvbnNlbGVjdDogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgV2ViSW5zcGVjdG9yLnBh
bmVscy5hdWRpdHMuc2hvd1Jlc3VsdHModGhpcy5yZXN1bHRzKTsKKyAgICAgICAgdGhpcy5fcGFu
ZWwuc2hvd1Jlc3VsdHModGhpcy5yZXN1bHRzKTsKICAgICB9LAogCiAgICAgZ2V0IHNlbGVjdGFi
bGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db25z
b2xlUGFuZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVQ
YW5lbC5qcwppbmRleCBiN2FmMmE5NTFhNjQ2ODE0NTkzMDE2MGM5MmQ3YzEzNjA2MmYxOWIzLi44
MDEyYjE5YzFkMGY0MjI3YzJiYzRjOTM0YjI4NDQ0MDVhZDVkN2ZhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVQYW5lbC5qcworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVQYW5lbC5qcwpAQCAtNDAsMTEg
KzQwLDYgQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVQYW5lbCA9IGZ1bmN0aW9uKCkKIH0KIAogV2Vi
SW5zcGVjdG9yLkNvbnNvbGVQYW5lbC5wcm90b3R5cGUgPSB7Ci0gICAgZ2V0IHRvb2xiYXJJdGVt
TGFiZWwoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ29u
c29sZSIpOwotICAgIH0sCi0KICAgICBnZXQgc3RhdHVzQmFySXRlbXMoKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIHRoaXMuX3ZpZXcuc3RhdHVzQmFySXRlbXM7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RPTUFnZW50LmpzIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9ET01BZ2VudC5qcwppbmRleCAwYmIwN2Y5NGY5YTI2M2EzZWM4
MjgxOGIwNjcwMjIyMzEyZTBhYjkxLi5lZWRlYmU1NzMwYzU5MmVmNWQzMTk5MmQ0NTk2MDQ0ZDA5
OTlhOTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RP
TUFnZW50LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRE9NQWdl
bnQuanMKQEAgLTgyNSw2ICs4MjUsMTQgQEAgV2ViSW5zcGVjdG9yLkRPTUFnZW50LnByb3RvdHlw
ZSA9IHsKICAgICB9LAogCiAgICAgLyoqCisgICAgICogQHJldHVybiB7V2ViSW5zcGVjdG9yLkRP
TURvY3VtZW50P30KKyAgICAgKi8KKyAgICBleGlzdGluZ0RvY3VtZW50OiBmdW5jdGlvbigpCisg
ICAgeworICAgICAgICByZXR1cm4gdGhpcy5fZG9jdW1lbnQ7CisgICAgfSwKKworICAgIC8qKgog
ICAgICAqIEBwYXJhbSB7UnVudGltZUFnZW50LlJlbW90ZU9iamVjdElkfSBvYmplY3RJZAogICAg
ICAqIEBwYXJhbSB7ZnVuY3Rpb24oP0RPTUFnZW50Lk5vZGVJZCk9fSBjYWxsYmFjawogICAgICAq
LwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9ET01TdG9y
YWdlLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9ET01TdG9yYWdlLmpz
CmluZGV4IDBjOTY2OTM1YzFmYjQxMDY2YjdlODI3NmQxODIzNzA0MzU1ZjExNjMuLmNkYjMyZjQx
NTYxMWIxYWIyMTJkN2I2Y2U0ZGNlZGZjZWQ3N2E3NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRE9NU3RvcmFnZS5qcworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RPTVN0b3JhZ2UuanMKQEAgLTEwMiw3ICsxMDIsNyBAQCBX
ZWJJbnNwZWN0b3IuRE9NU3RvcmFnZURpc3BhdGNoZXIucHJvdG90eXBlID0gewogICAgICAgICAg
ICAgcGF5bG9hZC5pZCwKICAgICAgICAgICAgIHBheWxvYWQub3JpZ2luLAogICAgICAgICAgICAg
cGF5bG9hZC5pc0xvY2FsU3RvcmFnZSk7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMucmVz
b3VyY2VzLmFkZERPTVN0b3JhZ2UoZG9tU3RvcmFnZSk7CisgICAgICAgIFdlYkluc3BlY3Rvci5w
YW5lbCgicmVzb3VyY2VzIikuYWRkRE9NU3RvcmFnZShkb21TdG9yYWdlKTsKICAgICB9LAogCiAg
ICAgLyoqCkBAIC0xMTAsNiArMTEwLDYgQEAgV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VEaXNwYXRj
aGVyLnByb3RvdHlwZSA9IHsKICAgICAgKi8KICAgICBkb21TdG9yYWdlVXBkYXRlZDogZnVuY3Rp
b24oc3RvcmFnZUlkKQogICAgIHsKLSAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5yZXNvdXJj
ZXMuZG9tU3RvcmFnZVVwZGF0ZWQoc3RvcmFnZUlkKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLnBh
bmVsKCJyZXNvdXJjZXMiKS5kb21TdG9yYWdlVXBkYXRlZChzdG9yYWdlSWQpOwogICAgIH0KIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGF0YWJhc2Uu
anMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RhdGFiYXNlLmpzCmluZGV4
IDdmYTQxYTk3ODZmNDdjMGZlYWM4NTY5NDVlMmZmOTEwYmQxZTAxNzIuLjZlOTRhZGI0ODc5N2Rj
YjBlYzEyYmJiMjU3NjZmNTk5YmQzMTk2YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvRGF0YWJhc2UuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9EYXRhYmFzZS5qcwpAQCAtMTQwLDcgKzE0MCw3IEBAIFdlYkluc3BlY3Rv
ci5EYXRhYmFzZURpc3BhdGNoZXIucHJvdG90eXBlID0gewogICAgICAgICAgICAgcGF5bG9hZC5k
b21haW4sCiAgICAgICAgICAgICBwYXlsb2FkLm5hbWUsCiAgICAgICAgICAgICBwYXlsb2FkLnZl
cnNpb24pOwotICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLnJlc291cmNlcy5hZGREYXRhYmFz
ZShkYXRhYmFzZSk7CisgICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbCgicmVzb3VyY2VzIikuYWRk
RGF0YWJhc2UoZGF0YWJhc2UpOwogICAgIH0sCiAKICAgICAvKioKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNQYW5lbC5qcyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNQYW5lbC5qcwppbmRleCA1ZmQyMzIy
N2ZhY2Q0NzYxNzhjNjhkMTg5MGM2OGEzMjAzZGM3MGFkLi5jYzI2ZWQzNTM1ZDg1MTVhMjE1YzE2
NjhlMDVhZTUyOGE4YzU1MTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0VsZW1lbnRzUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9FbGVtZW50c1BhbmVsLmpzCkBAIC05MCwyNSArOTAsMjAgQEAgV2ViSW5zcGVj
dG9yLkVsZW1lbnRzUGFuZWwgPSBmdW5jdGlvbigpCiAgICAgICAgICAgICB0aGlzLnNpZGViYXJQ
YW5lc1twYW5lXS5vbmF0dGFjaCgpOwogICAgIH0KIAotICAgIHRoaXMubm9kZVNlYXJjaEJ1dHRv
biA9IG5ldyBXZWJJbnNwZWN0b3IuU3RhdHVzQmFyQnV0dG9uKFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiU2VsZWN0IGFuIGVsZW1lbnQgaW4gdGhlIHBhZ2UgdG8gaW5zcGVjdCBpdC4iKSwgIm5vZGUt
c2VhcmNoLXN0YXR1cy1iYXItaXRlbSIpOwotICAgIHRoaXMubm9kZVNlYXJjaEJ1dHRvbi5hZGRF
dmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMudG9nZ2xlU2VhcmNoaW5nRm9yTm9kZSwgdGhpcyk7
Ci0KICAgICB0aGlzLl9yZWdpc3RlclNob3J0Y3V0cygpOwogCiAgICAgdGhpcy5fcG9wb3Zlckhl
bHBlciA9IG5ldyBXZWJJbnNwZWN0b3IuUG9wb3ZlckhlbHBlcihkb2N1bWVudC5ib2R5LCB0aGlz
Ll9nZXRQb3BvdmVyQW5jaG9yLmJpbmQodGhpcyksIHRoaXMuX3Nob3dQb3BvdmVyLmJpbmQodGhp
cykpOwogICAgIHRoaXMuX3BvcG92ZXJIZWxwZXIuc2V0VGltZW91dCgwKTsKIAogICAgIFdlYklu
c3BlY3Rvci5kb21BZ2VudC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5ET01BZ2VudC5F
dmVudHMuTm9kZVJlbW92ZWQsIHRoaXMuX25vZGVSZW1vdmVkLCB0aGlzKTsKLSAgICBXZWJJbnNw
ZWN0b3IuZG9tQWdlbnQuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRE9NQWdlbnQuRXZl
bnRzLkRvY3VtZW50VXBkYXRlZCwgdGhpcy5fZG9jdW1lbnRVcGRhdGVkLCB0aGlzKTsKKyAgICBX
ZWJJbnNwZWN0b3IuZG9tQWdlbnQuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRE9NQWdl
bnQuRXZlbnRzLkRvY3VtZW50VXBkYXRlZCwgdGhpcy5fZG9jdW1lbnRVcGRhdGVkRXZlbnQsIHRo
aXMpOwogICAgIFdlYkluc3BlY3Rvci5kb21BZ2VudC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3Bl
Y3Rvci5ET01BZ2VudC5FdmVudHMuSW5zcGVjdEVsZW1lbnRSZXF1ZXN0ZWQsIHRoaXMuX2luc3Bl
Y3RFbGVtZW50UmVxdWVzdGVkLCB0aGlzKTsKKworICAgIGlmIChXZWJJbnNwZWN0b3IuZG9tQWdl
bnQuZXhpc3RpbmdEb2N1bWVudCgpKQorICAgICAgICB0aGlzLl9kb2N1bWVudFVwZGF0ZWQoV2Vi
SW5zcGVjdG9yLmRvbUFnZW50LmV4aXN0aW5nRG9jdW1lbnQoKSk7CiB9CiAKIFdlYkluc3BlY3Rv
ci5FbGVtZW50c1BhbmVsLnByb3RvdHlwZSA9IHsKLSAgICBnZXQgdG9vbGJhckl0ZW1MYWJlbCgp
Ci0gICAgewotICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJFbGVtZW50cyIp
OwotICAgIH0sCi0KICAgICBnZXQgc3RhdHVzQmFySXRlbXMoKQogICAgIHsKICAgICAgICAgcmV0
dXJuIFt0aGlzLmNydW1ic0VsZW1lbnRdOwpAQCAtMTQ1LDcgKzE0MCw2IEBAIFdlYkluc3BlY3Rv
ci5FbGVtZW50c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICB3aWxsSGlkZTogZnVuY3Rpb24oKQog
ICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLmRvbUFnZW50LmhpZGVET01Ob2RlSGlnaGxpZ2h0
KCk7Ci0gICAgICAgIHRoaXMuc2V0U2VhcmNoaW5nRm9yTm9kZShmYWxzZSk7CiAgICAgICAgIHRo
aXMudHJlZU91dGxpbmUuc2V0VmlzaWJsZShmYWxzZSk7CiAgICAgICAgIHRoaXMuX3BvcG92ZXJI
ZWxwZXIuaGlkZVBvcG92ZXIoKTsKIApAQCAtMjMwLDEwICsyMjQsMTMgQEAgV2ViSW5zcGVjdG9y
LkVsZW1lbnRzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICBkZWxldGUgdGhpcy5jdXJyZW50
UXVlcnk7CiAgICAgfSwKIAotICAgIF9kb2N1bWVudFVwZGF0ZWQ6IGZ1bmN0aW9uKGV2ZW50KQor
ICAgIF9kb2N1bWVudFVwZGF0ZWRFdmVudDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewotICAgICAg
ICB2YXIgaW5zcGVjdGVkUm9vdERvY3VtZW50ID0gZXZlbnQuZGF0YTsKKyAgICAgICAgdGhpcy5f
ZG9jdW1lbnRVcGRhdGVkKGV2ZW50LmRhdGEpOworICAgIH0sCiAKKyAgICBfZG9jdW1lbnRVcGRh
dGVkOiBmdW5jdGlvbihpbnNwZWN0ZWRSb290RG9jdW1lbnQpCisgICAgewogICAgICAgICB0aGlz
Ll9yZXNldCgpOwogICAgICAgICB0aGlzLnNlYXJjaENhbmNlbGVkKCk7CiAKQEAgLTEwNzMsMjIg
KzEwNzAsNiBAQCBXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbC5wcm90b3R5cGUgPSB7CiAKICAg
ICBoYW5kbGVTaG9ydGN1dDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewotICAgICAgICAvLyBDbWQv
Q29udHJvbCArIFNoaWZ0ICsgQyBzaG91bGQgYmUgYSBzaG9ydGN1dCB0byBjbGlja2luZyB0aGUg
Tm9kZSBTZWFyY2ggQnV0dG9uLgotICAgICAgICAvLyBUaGlzIHNob3J0Y3V0IG1hdGNoZXMgRmly
ZWJ1Zy4KLSAgICAgICAgaWYgKGV2ZW50LmtleUlkZW50aWZpZXIgPT09ICJVKzAwNDMiKSB7IC8v
IEMga2V5Ci0gICAgICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLmlzTWFjKCkpCi0gICAgICAgICAg
ICAgICAgdmFyIGlzTm9kZVNlYXJjaEtleSA9IGV2ZW50Lm1ldGFLZXkgJiYgIWV2ZW50LmN0cmxL
ZXkgJiYgIWV2ZW50LmFsdEtleSAmJiBldmVudC5zaGlmdEtleTsKLSAgICAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgICAgICB2YXIgaXNOb2RlU2VhcmNoS2V5ID0gZXZlbnQuY3RybEtleSAmJiAh
ZXZlbnQubWV0YUtleSAmJiAhZXZlbnQuYWx0S2V5ICYmIGV2ZW50LnNoaWZ0S2V5OwotCi0gICAg
ICAgICAgICBpZiAoaXNOb2RlU2VhcmNoS2V5KSB7Ci0gICAgICAgICAgICAgICAgdGhpcy50b2dn
bGVTZWFyY2hpbmdGb3JOb2RlKCk7Ci0gICAgICAgICAgICAgICAgZXZlbnQuaGFuZGxlZCA9IHRy
dWU7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICB9Ci0KICAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5LZXlib2FyZFNo
b3J0Y3V0LmV2ZW50SGFzQ3RybE9yTWV0YShldmVudCkgJiYgIWV2ZW50LnNoaWZ0S2V5ICYmIGV2
ZW50LmtleUlkZW50aWZpZXIgPT09ICJVKzAwNUEiKSB7IC8vIFoga2V5CiAgICAgICAgICAgICBX
ZWJJbnNwZWN0b3IuZG9tQWdlbnQudW5kbyh0aGlzLl91cGRhdGVTaWRlYmFycy5iaW5kKHRoaXMp
KTsKICAgICAgICAgICAgIGV2ZW50LmhhbmRsZWQgPSB0cnVlOwpAQCAtMTEzNywyOCArMTExOCw2
IEBAIFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVsLnByb3RvdHlwZSA9IHsKIAogICAgICAgICBX
ZWJJbnNwZWN0b3IuZG9tQWdlbnQuaGlnaGxpZ2h0RE9NTm9kZUZvclR3b1NlY29uZHMobm9kZUlk
KTsKICAgICAgICAgdGhpcy5zZWxlY3RET01Ob2RlKG5vZGUsIHRydWUpOwotICAgICAgICBpZiAo
dGhpcy5ub2RlU2VhcmNoQnV0dG9uLnRvZ2dsZWQpIHsKLSAgICAgICAgICAgIEluc3BlY3RvckZy
b250ZW5kSG9zdC5icmluZ1RvRnJvbnQoKTsKLSAgICAgICAgICAgIHRoaXMubm9kZVNlYXJjaEJ1
dHRvbi50b2dnbGVkID0gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9LAotCi0gICAgc2V0U2VhcmNo
aW5nRm9yTm9kZTogZnVuY3Rpb24oZW5hYmxlZCkKLSAgICB7Ci0gICAgICAgIC8qKgotICAgICAg
ICAgKiBAcGFyYW0gez9Qcm90b2NvbC5FcnJvcn0gZXJyb3IKLSAgICAgICAgICovCi0gICAgICAg
IGZ1bmN0aW9uIGNhbGxiYWNrKGVycm9yKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIWVy
cm9yKQotICAgICAgICAgICAgICAgIHRoaXMubm9kZVNlYXJjaEJ1dHRvbi50b2dnbGVkID0gZW5h
YmxlZDsKLSAgICAgICAgfQotICAgICAgICBXZWJJbnNwZWN0b3IuZG9tQWdlbnQuc2V0SW5zcGVj
dE1vZGVFbmFibGVkKGVuYWJsZWQsIGNhbGxiYWNrLmJpbmQodGhpcykpOwotICAgIH0sCi0KLSAg
ICB0b2dnbGVTZWFyY2hpbmdGb3JOb2RlOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB0aGlz
LnNldFNlYXJjaGluZ0Zvck5vZGUoIXRoaXMubm9kZVNlYXJjaEJ1dHRvbi50b2dnbGVkKTsKICAg
ICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
RWxlbWVudHNUcmVlT3V0bGluZS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvRWxlbWVudHNUcmVlT3V0bGluZS5qcwppbmRleCAzNDEzMDMxMDM1YzE2MDFkZjFlMzJiNjZl
N2Q2YmE0YmMxNjNkNTA3Li4xOGNhYjhhZTRkZGQxZDdiNzlhYTc1NTUwMzJkZmI4YWNiMDdiODBk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRz
VHJlZU91dGxpbmUuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9F
bGVtZW50c1RyZWVPdXRsaW5lLmpzCkBAIC0xMTcyLDcgKzExNzIsNiBAQCBXZWJJbnNwZWN0b3Iu
RWxlbWVudHNUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGNvbnN0IHBzZXVkb0Ns
YXNzZXMgPSBbImFjdGl2ZSIsICJob3ZlciIsICJmb2N1cyIsICJ2aXNpdGVkIl07CiAgICAgICAg
IHZhciBub2RlID0gdGhpcy5yZXByZXNlbnRlZE9iamVjdDsKICAgICAgICAgdmFyIGZvcmNlZFBz
ZXVkb1N0YXRlID0gKG5vZGUgPyBub2RlLmdldFVzZXJQcm9wZXJ0eSgicHNldWRvU3RhdGUiKSA6
IG51bGwpIHx8IFtdOwotICAgICAgICB2YXIgZWxlbWVudHNQYW5lbCA9IFdlYkluc3BlY3Rvci5w
YW5lbHMuZWxlbWVudHM7CiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcHNldWRvQ2xhc3Nl
cy5sZW5ndGg7ICsraSkgewogICAgICAgICAgICAgdmFyIHBzZXVkb0NsYXNzRm9yY2VkID0gZm9y
Y2VkUHNldWRvU3RhdGUuaW5kZXhPZihwc2V1ZG9DbGFzc2VzW2ldKSA+PSAwOwogICAgICAgICAg
ICAgc3ViTWVudS5hcHBlbmRDaGVja2JveEl0ZW0oIjoiICsgcHNldWRvQ2xhc3Nlc1tpXSwgdGhp
cy50cmVlT3V0bGluZS5fc2V0UHNldWRvQ2xhc3NDYWxsYmFjay5iaW5kKG51bGwsIG5vZGUuaWQs
IHBzZXVkb0NsYXNzZXNbaV0sICFwc2V1ZG9DbGFzc0ZvcmNlZCksIHBzZXVkb0NsYXNzRm9yY2Vk
LCBmYWxzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0V4dGVuc2lvblBhbmVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9F
eHRlbnNpb25QYW5lbC5qcwppbmRleCAxYzY5NjUzNmRkY2I5YzY1OWIyZDlmNTVhZDQwZWRiOWUz
YzM3ZmUyLi40NmNkYjExN2ZjMGJkNTM5NmEyMDhhZWRhYzg4ODIxYjNiNDg4ZjdjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lvblBhbmVsLmpz
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9uUGFuZWwu
anMKQEAgLTMyLDMxICszMiwxOCBAQAogICogQGNvbnN0cnVjdG9yCiAgKiBAZXh0ZW5kcyB7V2Vi
SW5zcGVjdG9yLlBhbmVsfQogICogQHBhcmFtIHtzdHJpbmd9IGlkCi0gKiBAcGFyYW0ge3N0cmlu
Z30gbGFiZWwKICAqIEBwYXJhbSB7c3RyaW5nfSBwYWdlVVJMCi0gKiBAcGFyYW0ge3N0cmluZ30g
aWNvblVSTAogICovCi1XZWJJbnNwZWN0b3IuRXh0ZW5zaW9uUGFuZWwgPSBmdW5jdGlvbihpZCwg
bGFiZWwsIHBhZ2VVUkwsIGljb25VUkwpCitXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uUGFuZWwgPSBm
dW5jdGlvbihpZCwgcGFnZVVSTCkKIHsKICAgICBXZWJJbnNwZWN0b3IuUGFuZWwuY2FsbCh0aGlz
LCBpZCk7CiAgICAgdGhpcy5zZXRIaWRlT25EZXRhY2goKTsKLSAgICB0aGlzLl90b29sYmFySXRl
bUxhYmVsID0gbGFiZWw7CiAgICAgdGhpcy5fc3RhdHVzQmFySXRlbXMgPSBbXTsKLQotICAgIGlm
IChpY29uVVJMKSB7Ci0gICAgICAgIHRoaXMuX2FkZFN0eWxlUnVsZSgiLnRvb2xiYXItaXRlbS4i
ICsgaWQgKyAiIC50b29sYmFyLWljb24iLCAiYmFja2dyb3VuZC1pbWFnZTogdXJsKCIgKyBpY29u
VVJMICsgIik7Iik7Ci0gICAgICAgIHRoaXMuX2FkZFN0eWxlUnVsZSgiLnRvb2xiYXItc21hbGwg
LnRvb2xiYXItaXRlbS4iICsgaWQgKyAiIC50b29sYmFyLWljb24iLCAiYmFja2dyb3VuZC1wb3Np
dGlvbi14OiAtMzJweDsiKTsKLSAgICB9CiAgICAgdmFyIGV4dGVuc2lvblZpZXcgPSBuZXcgV2Vi
SW5zcGVjdG9yLkV4dGVuc2lvblZpZXcoaWQsIHBhZ2VVUkwsICJleHRlbnNpb24gcGFuZWwiKTsK
ICAgICBleHRlbnNpb25WaWV3LnNob3codGhpcy5lbGVtZW50KTsKIH0KIAogV2ViSW5zcGVjdG9y
LkV4dGVuc2lvblBhbmVsLnByb3RvdHlwZSA9IHsKLSAgICBnZXQgdG9vbGJhckl0ZW1MYWJlbCgp
Ci0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fdG9vbGJhckl0ZW1MYWJlbDsKLSAgICB9LAot
CiAgICAgZGVmYXVsdEZvY3VzZWRFbGVtZW50OiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICBy
ZXR1cm4gdGhpcy5zaWRlYmFyVHJlZUVsZW1lbnQgfHwgdGhpcy5lbGVtZW50OwpAQCAtMTAwLDEz
ICs4Nyw2IEBAIFdlYkluc3BlY3Rvci5FeHRlbnNpb25QYW5lbC5wcm90b3R5cGUgPSB7CiAgICAg
ewogICAgICAgICBXZWJJbnNwZWN0b3IuZXh0ZW5zaW9uU2VydmVyLm5vdGlmeVNlYXJjaEFjdGlv
bih0aGlzLm5hbWUsIFdlYkluc3BlY3Rvci5leHRlbnNpb25BUEkucGFuZWxzLlNlYXJjaEFjdGlv
bi5QcmV2aW91c1NlYXJjaFJlc3VsdCk7CiAgICAgICAgIFdlYkluc3BlY3Rvci5QYW5lbC5wcm90
b3R5cGUuanVtcFRvUHJldmlvdXNTZWFyY2hSZXN1bHQuY2FsbCh0aGlzKTsKLSAgICB9LAotCi0g
ICAgX2FkZFN0eWxlUnVsZTogZnVuY3Rpb24oc2VsZWN0b3IsIGJvZHkpCi0gICAgewotICAgICAg
ICB2YXIgc3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpOwotICAgICAgICBz
dHlsZS50ZXh0Q29udGVudCA9IHNlbGVjdG9yICsgIiB7ICIgKyBib2R5ICsgIiB9IjsKLSAgICAg
ICAgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChzdHlsZSk7CiAgICAgfQogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lvblNlcnZlci5q
cyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9uU2VydmVyLmpz
CmluZGV4IGNlMDE1N2Y5ZmU1YjMyODAzOTUwOGUzOTQxOGIwMDJjMmJkMTFhNDIuLjY2MGJkNWI4
MWZiOTQ0YzkxNjZkYWJmNWIzODdmYTEyYzdjNzllYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9uU2VydmVyLmpzCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9uU2VydmVyLmpzCkBAIC0xOTcsMTEg
KzE5NywxMCBAQCBXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uU2VydmVyLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgICAgIHJldHVybiB0aGlzLl9zdGF0dXMuRV9FWElTVFMoaWQpOwogCiAgICAgICAgIHZh
ciBwYWdlID0gdGhpcy5fZXhwYW5kUmVzb3VyY2VQYXRoKHBvcnQuX2V4dGVuc2lvbk9yaWdpbiwg
bWVzc2FnZS5wYWdlKTsKLSAgICAgICAgdmFyIGljb24gPSB0aGlzLl9leHBhbmRSZXNvdXJjZVBh
dGgocG9ydC5fZXh0ZW5zaW9uT3JpZ2luLCBtZXNzYWdlLmljb24pCi0gICAgICAgIHZhciBwYW5l
bCA9IG5ldyBXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uUGFuZWwoaWQsIG1lc3NhZ2UudGl0bGUsIHBh
Z2UsIGljb24pOwotICAgICAgICB0aGlzLl9jbGllbnRPYmplY3RzW2lkXSA9IHBhbmVsOwotICAg
ICAgICBXZWJJbnNwZWN0b3IucGFuZWxzW2lkXSA9IHBhbmVsOwotICAgICAgICBXZWJJbnNwZWN0
b3IuYWRkUGFuZWwocGFuZWwpOworICAgICAgICB2YXIgcGFuZWxEZXNjcmlwdG9yID0gbmV3IFdl
Ykluc3BlY3Rvci5QYW5lbERlc2NyaXB0b3IoaWQsIG1lc3NhZ2UudGl0bGUsIFdlYkluc3BlY3Rv
ci5FeHRlbnNpb25QYW5lbC5iaW5kKG51bGwsIGlkLCBwYWdlKSk7CisgICAgICAgIHBhbmVsRGVz
Y3JpcHRvci5zZXRJY29uVVJMKHRoaXMuX2V4cGFuZFJlc291cmNlUGF0aChwb3J0Ll9leHRlbnNp
b25PcmlnaW4sIG1lc3NhZ2UuaWNvbikpOworICAgICAgICB0aGlzLl9jbGllbnRPYmplY3RzW2lk
XSA9IHBhbmVsRGVzY3JpcHRvci5wYW5lbCgpOworICAgICAgICBXZWJJbnNwZWN0b3IuaW5zcGVj
dG9yVmlldy5hZGRQYW5lbChwYW5lbERlc2NyaXB0b3IpOwogICAgICAgICByZXR1cm4gdGhpcy5f
c3RhdHVzLk9LKCk7CiAgICAgfSwKIApAQCAtMjMzLDcgKzIzMiw3IEBAIFdlYkluc3BlY3Rvci5F
eHRlbnNpb25TZXJ2ZXIucHJvdG90eXBlID0gewogCiAgICAgX29uQ3JlYXRlU2lkZWJhclBhbmU6
IGZ1bmN0aW9uKG1lc3NhZ2UpCiAgICAgewotICAgICAgICB2YXIgcGFuZWwgPSBXZWJJbnNwZWN0
b3IucGFuZWxzW21lc3NhZ2UucGFuZWxdOworICAgICAgICB2YXIgcGFuZWwgPSBXZWJJbnNwZWN0
b3IucGFuZWwobWVzc2FnZS5wYW5lbCk7CiAgICAgICAgIGlmICghcGFuZWwpCiAgICAgICAgICAg
ICByZXR1cm4gdGhpcy5fc3RhdHVzLkVfTk9URk9VTkQobWVzc2FnZS5wYW5lbCk7CiAgICAgICAg
IGlmICghcGFuZWwuc2lkZWJhckVsZW1lbnQgfHwgIXBhbmVsLnNpZGViYXJQYW5lcykKQEAgLTUz
MiwxMCArNTMxLDEwIEBAIFdlYkluc3BlY3Rvci5FeHRlbnNpb25TZXJ2ZXIucHJvdG90eXBlID0g
ewogICAgIF9vbkFkZEF1ZGl0Q2F0ZWdvcnk6IGZ1bmN0aW9uKG1lc3NhZ2UsIHBvcnQpCiAgICAg
ewogICAgICAgICB2YXIgY2F0ZWdvcnkgPSBuZXcgV2ViSW5zcGVjdG9yLkV4dGVuc2lvbkF1ZGl0
Q2F0ZWdvcnkocG9ydC5fZXh0ZW5zaW9uT3JpZ2luLCBtZXNzYWdlLmlkLCBtZXNzYWdlLmRpc3Bs
YXlOYW1lLCBtZXNzYWdlLnJlc3VsdENvdW50KTsKLSAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5w
YW5lbHMuYXVkaXRzLmdldENhdGVnb3J5KGNhdGVnb3J5LmlkKSkKKyAgICAgICAgaWYgKFdlYklu
c3BlY3Rvci5wYW5lbCgiYXVkaXRzIikuZ2V0Q2F0ZWdvcnkoY2F0ZWdvcnkuaWQpKQogICAgICAg
ICAgICAgcmV0dXJuIHRoaXMuX3N0YXR1cy5FX0VYSVNUUyhjYXRlZ29yeS5pZCk7CiAgICAgICAg
IHRoaXMuX2NsaWVudE9iamVjdHNbbWVzc2FnZS5pZF0gPSBjYXRlZ29yeTsKLSAgICAgICAgV2Vi
SW5zcGVjdG9yLnBhbmVscy5hdWRpdHMuYWRkQ2F0ZWdvcnkoY2F0ZWdvcnkpOworICAgICAgICBX
ZWJJbnNwZWN0b3IucGFuZWwoImF1ZGl0cyIpLmFkZENhdGVnb3J5KGNhdGVnb3J5KTsKICAgICB9
LAogCiAgICAgX29uQWRkQXVkaXRSZXN1bHQ6IGZ1bmN0aW9uKG1lc3NhZ2UpCkBAIC01NzUsMTIg
KzU3NCwxNyBAQCBXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uU2VydmVyLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgICAgIFdlYkluc3BlY3Rvci53b3Jrc3BhY2UsCiAgICAgICAgICAgICBXZWJJbnNwZWN0
b3IuVUlTb3VyY2VDb2RlUHJvdmlkZXIuRXZlbnRzLlVJU291cmNlQ29kZUFkZGVkLAogICAgICAg
ICAgICAgdGhpcy5fbm90aWZ5UmVzb3VyY2VBZGRlZCk7Ci0gICAgICAgIGlmIChXZWJJbnNwZWN0
b3IucGFuZWxzLmVsZW1lbnRzKSB7Ci0gICAgICAgICAgICB0aGlzLl9yZWdpc3RlckF1dG9zdWJz
Y3JpcHRpb25IYW5kbGVyKFdlYkluc3BlY3Rvci5leHRlbnNpb25BUEkuRXZlbnRzLkVsZW1lbnRz
UGFuZWxPYmplY3RTZWxlY3RlZCwKLSAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxz
LmVsZW1lbnRzLnRyZWVPdXRsaW5lLAotICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5FbGVt
ZW50c1RyZWVPdXRsaW5lLkV2ZW50cy5TZWxlY3RlZE5vZGVDaGFuZ2VkLAotICAgICAgICAgICAg
ICAgIHRoaXMuX25vdGlmeUVsZW1lbnRzU2VsZWN0aW9uQ2hhbmdlZCk7Ci0gICAgICAgIH0KKyAg
ICAgICAgdGhpcy5fcmVnaXN0ZXJTdWJzY3JpcHRpb25IYW5kbGVyKFdlYkluc3BlY3Rvci5leHRl
bnNpb25BUEkuRXZlbnRzLkVsZW1lbnRzUGFuZWxPYmplY3RTZWxlY3RlZCwKKyAgICAgICAgICAg
IGZ1bmN0aW9uKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3Iu
cGFuZWwoImVsZW1lbnRzIikudHJlZU91dGxpbmUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0
b3IuRWxlbWVudHNUcmVlT3V0bGluZS5FdmVudHMuU2VsZWN0ZWROb2RlQ2hhbmdlZCwgdGhpcy5f
bm90aWZ5RWxlbWVudHNTZWxlY3Rpb25DaGFuZ2VkLCB0aGlzKTsKKyAgICAgICAgICAgIH0uYmlu
ZCh0aGlzKSwKKyAgICAgICAgICAgIGZ1bmN0aW9uICgpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVsKCJlbGVtZW50cyIpLnRyZWVPdXRsaW5lLnJlbW92
ZUV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZU91dGxpbmUuRXZlbnRzLlNl
bGVjdGVkTm9kZUNoYW5nZWQsIHRoaXMuX25vdGlmeUVsZW1lbnRzU2VsZWN0aW9uQ2hhbmdlZCwg
dGhpcyk7CisgICAgICAgICAgICB9LmJpbmQodGhpcykKKyAgICAgICAgKTsKKwogICAgICAgICB0
aGlzLl9yZWdpc3RlckF1dG9zdWJzY3JpcHRpb25IYW5kbGVyKFdlYkluc3BlY3Rvci5leHRlbnNp
b25BUEkuRXZlbnRzLlJlc291cmNlQ29udGVudENvbW1pdHRlZCwKICAgICAgICAgICAgIFdlYklu
c3BlY3Rvci53b3Jrc3BhY2UsCiAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuV29ya3NwYWNlLkV2
ZW50cy5VSVNvdXJjZUNvZGVDb250ZW50Q29tbWl0dGVkLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9JbnNwZWN0b3JGcm9udGVuZEFQSS5qcyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW5zcGVjdG9yRnJvbnRlbmRBUEkuanMKaW5k
ZXggNDczMjY3MDkxNWIyYzMxYmY4Mjc0YjRmYTkyYTQ4NWQ2ZmM1NjM1NC4uMmNhMjlmM2FkYmNj
MGRjYjk5OGU4NWQwNWM5NDZiNzIxYzYzN2Y1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9JbnNwZWN0b3JGcm9udGVuZEFQSS5qcworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luc3BlY3RvckZyb250ZW5kQVBJLmpzCkBAIC00
NywxMiArNDcsMTIgQEAgSW5zcGVjdG9yRnJvbnRlbmRBUEkgPSB7CiAKICAgICBpc1RpbWVsaW5l
UHJvZmlsaW5nRW5hYmxlZDogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgcmV0dXJuIFdlYklu
c3BlY3Rvci5wYW5lbHMudGltZWxpbmUudGltZWxpbmVQcm9maWxpbmdFbmFibGVkOworICAgICAg
ICByZXR1cm4gV2ViSW5zcGVjdG9yLnBhbmVscy50aW1lbGluZSAmJiBXZWJJbnNwZWN0b3IucGFu
ZWxzLnRpbWVsaW5lLnRpbWVsaW5lUHJvZmlsaW5nRW5hYmxlZDsKICAgICB9LAogCiAgICAgc2V0
VGltZWxpbmVQcm9maWxpbmdFbmFibGVkOiBmdW5jdGlvbihlbmFibGVkKQogICAgIHsKLSAgICAg
ICAgV2ViSW5zcGVjdG9yLnBhbmVscy50aW1lbGluZS5zZXRUaW1lbGluZVByb2ZpbGluZ0VuYWJs
ZWQoZW5hYmxlZCk7CisgICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbCgidGltZWxpbmUiKS5zZXRU
aW1lbGluZVByb2ZpbGluZ0VuYWJsZWQoZW5hYmxlZCk7CiAgICAgfSwKIAogICAgIGlzUHJvZmls
aW5nSmF2YVNjcmlwdDogZnVuY3Rpb24oKQpAQCAtODIsNyArODIsNyBAQCBJbnNwZWN0b3JGcm9u
dGVuZEFQSSA9IHsKIAogICAgIHNob3dDb25zb2xlOiBmdW5jdGlvbigpCiAgICAgewotICAgICAg
ICBXZWJJbnNwZWN0b3IuaW5zcGVjdG9yVmlldy5zZXRDdXJyZW50UGFuZWwoV2ViSW5zcGVjdG9y
LnBhbmVscy5jb25zb2xlKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLnNob3dQYW5lbCgiY29uc29s
ZSIpOwogICAgIH0sCiAKICAgICBzaG93TWFpblJlc291cmNlRm9yRnJhbWU6IGZ1bmN0aW9uKGZy
YW1lSWQpCkBAIC05Miw3ICs5Miw3IEBAIEluc3BlY3RvckZyb250ZW5kQVBJID0gewogCiAgICAg
c2hvd1Jlc291cmNlczogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgV2ViSW5zcGVjdG9yLmlu
c3BlY3RvclZpZXcuc2V0Q3VycmVudFBhbmVsKFdlYkluc3BlY3Rvci5wYW5lbHMucmVzb3VyY2Vz
KTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLnNob3dQYW5lbCgicmVzb3VyY2VzIik7CiAgICAgfSwK
IAogICAgIHNldERvY2tpbmdVbmF2YWlsYWJsZTogZnVuY3Rpb24odW5hdmFpbGFibGUpCkBAIC0x
MDIsNyArMTAyLDcgQEAgSW5zcGVjdG9yRnJvbnRlbmRBUEkgPSB7CiAKICAgICBlbnRlckluc3Bl
Y3RFbGVtZW50TW9kZTogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgV2ViSW5zcGVjdG9yLnRv
Z2dsZVNlYXJjaGluZ0Zvck5vZGUoKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVsKCJlbGVt
ZW50cyIpLnRvZ2dsZVNlYXJjaGluZ0Zvck5vZGUoKTsKICAgICB9LAogCiAgICAgc2F2ZWRVUkw6
IGZ1bmN0aW9uKHVybCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvSW5zcGVjdG9yVmlldy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvSW5zcGVjdG9yVmlldy5qcwppbmRleCBjNjYwMWM3ZjE2YmQ1NzZiNGVjY2QwOWY3MThmNDk3
ZDEwMGM1YTVlLi5kNDliMDRlMzM0NjAwMjljNjkxYzA1YWY5Mjg4MDgzYzVmYWIwZjBmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luc3BlY3RvclZpZXcu
anMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9JbnNwZWN0b3JWaWV3
LmpzCkBAIC00Myw2ICs0Myw3IEBAIFdlYkluc3BlY3Rvci5JbnNwZWN0b3JWaWV3ID0gZnVuY3Rp
b24oKQogICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLCB0aGlzLl9rZXlE
b3duLmJpbmQodGhpcyksIGZhbHNlKTsKICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJr
ZXlwcmVzcyIsIHRoaXMuX2tleVByZXNzLmJpbmQodGhpcyksIGZhbHNlKTsKICAgICB0aGlzLl9w
YW5lbE9yZGVyID0gW107CisgICAgdGhpcy5fcGFuZWxEZXNjcmlwdG9ycyA9IHt9OwogCiAgICAg
Ly8gV2luZG93cyBhbmQgTWFjIGhhdmUgdHdvIGRpZmZlcmVudCBkZWZpbml0aW9ucyBvZiAnWycg
YW5kICddJywgc28gYWNjZXB0IGJvdGggb2YgZWFjaC4KICAgICB0aGlzLl9vcGVuQnJhY2tldElk
ZW50aWZpZXJzID0gWyJVKzAwNUIiLCAiVSswMERCIl0ua2V5U2V0KCk7CkBAIC01MiwxNCArNTMs
NDIgQEAgV2ViSW5zcGVjdG9yLkluc3BlY3RvclZpZXcgPSBmdW5jdGlvbigpCiB9CiAKIFdlYklu
c3BlY3Rvci5JbnNwZWN0b3JWaWV3LkV2ZW50cyA9IHsKLSAgICBQYW5lbFNlbGVjdGVkOiAicGFu
ZWwtc2VsZWN0ZWQiCisgICAgUGFuZWxTZWxlY3RlZDogIlBhbmVsU2VsZWN0ZWQiCiB9CiAKIFdl
Ykluc3BlY3Rvci5JbnNwZWN0b3JWaWV3LnByb3RvdHlwZSA9IHsKLSAgICBhZGRQYW5lbDogZnVu
Y3Rpb24ocGFuZWwpCisgICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuUGFuZWxE
ZXNjcmlwdG9yfSBwYW5lbERlc2NyaXB0b3IKKyAgICAgKi8KKyAgICBhZGRQYW5lbDogZnVuY3Rp
b24ocGFuZWxEZXNjcmlwdG9yKQorICAgIHsKKyAgICAgICAgdGhpcy5fcGFuZWxPcmRlci5wdXNo
KHBhbmVsRGVzY3JpcHRvci5uYW1lKCkpOworICAgICAgICB0aGlzLl9wYW5lbERlc2NyaXB0b3Jz
W3BhbmVsRGVzY3JpcHRvci5uYW1lKCldID0gcGFuZWxEZXNjcmlwdG9yOworICAgICAgICBXZWJJ
bnNwZWN0b3IudG9vbGJhci5hZGRQYW5lbChwYW5lbERlc2NyaXB0b3IpOworICAgIH0sCisKKyAg
ICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gcGFuZWxOYW1lCisgICAgICogQHJldHVybiB7
P1dlYkluc3BlY3Rvci5QYW5lbH0KKyAgICAgKi8KKyAgICBwYW5lbDogZnVuY3Rpb24ocGFuZWxO
YW1lKQorICAgIHsKKyAgICAgICAgdmFyIHBhbmVsRGVzY3JpcHRvciA9IHRoaXMuX3BhbmVsRGVz
Y3JpcHRvcnNbcGFuZWxOYW1lXTsKKyAgICAgICAgaWYgKCFwYW5lbERlc2NyaXB0b3IgJiYgdGhp
cy5fcGFuZWxPcmRlci5sZW5ndGgpCisgICAgICAgICAgICBwYW5lbERlc2NyaXB0b3IgPSB0aGlz
Ll9wYW5lbERlc2NyaXB0b3JzW3RoaXMuX3BhbmVsT3JkZXJbMF1dOworICAgICAgICByZXR1cm4g
cGFuZWxEZXNjcmlwdG9yID8gcGFuZWxEZXNjcmlwdG9yLnBhbmVsKCkgOiBudWxsOworICAgIH0s
CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gcGFuZWxOYW1lCisgICAgICogQHJl
dHVybiB7P1dlYkluc3BlY3Rvci5QYW5lbH0KKyAgICAgKi8KKyAgICBzaG93UGFuZWw6IGZ1bmN0
aW9uKHBhbmVsTmFtZSkKICAgICB7Ci0gICAgICAgIHRoaXMuX3BhbmVsT3JkZXIucHVzaChwYW5l
bCk7Ci0gICAgICAgIFdlYkluc3BlY3Rvci50b29sYmFyLmFkZFBhbmVsKHBhbmVsKTsKKyAgICAg
ICAgdmFyIHBhbmVsID0gdGhpcy5wYW5lbChwYW5lbE5hbWUpOworICAgICAgICBpZiAocGFuZWwp
CisgICAgICAgICAgICB0aGlzLnNldEN1cnJlbnRQYW5lbChwYW5lbCk7CisgICAgICAgIHJldHVy
biBwYW5lbDsKICAgICB9LAogCiAgICAgY3VycmVudFBhbmVsOiBmdW5jdGlvbigpCkBAIC0xMTYs
OSArMTQ1LDkgQEAgV2ViSW5zcGVjdG9yLkluc3BlY3RvclZpZXcucHJvdG90eXBlID0gewogICAg
ICAgICBpZiAodGhpcy5fb3BlbkJyYWNrZXRJZGVudGlmaWVycy5oYXNPd25Qcm9wZXJ0eShldmVu
dC5rZXlJZGVudGlmaWVyKSkgewogICAgICAgICAgICAgdmFyIGlzUm90YXRlTGVmdCA9IFdlYklu
c3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0LmV2ZW50SGFzQ3RybE9yTWV0YShldmVudCkgJiYgIWV2
ZW50LnNoaWZ0S2V5ICYmICFldmVudC5hbHRLZXk7CiAgICAgICAgICAgICBpZiAoaXNSb3RhdGVM
ZWZ0KSB7Ci0gICAgICAgICAgICAgICAgdmFyIGluZGV4ID0gdGhpcy5fcGFuZWxPcmRlci5pbmRl
eE9mKHRoaXMuY3VycmVudFBhbmVsKCkpOworICAgICAgICAgICAgICAgIHZhciBpbmRleCA9IHRo
aXMuX3BhbmVsT3JkZXIuaW5kZXhPZih0aGlzLmN1cnJlbnRQYW5lbCgpLm5hbWUpOwogICAgICAg
ICAgICAgICAgIGluZGV4ID0gKGluZGV4ID09PSAwKSA/IHRoaXMuX3BhbmVsT3JkZXIubGVuZ3Ro
IC0gMSA6IGluZGV4IC0gMTsKLSAgICAgICAgICAgICAgICB0aGlzLl9wYW5lbE9yZGVyW2luZGV4
XS50b29sYmFySXRlbS5jbGljaygpOworICAgICAgICAgICAgICAgIHRoaXMuc2hvd1BhbmVsKHRo
aXMuX3BhbmVsT3JkZXJbaW5kZXhdKTsKICAgICAgICAgICAgICAgICBldmVudC5jb25zdW1lKHRy
dWUpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KQEAgLTEzNCw5ICsx
NjMsOSBAQCBXZWJJbnNwZWN0b3IuSW5zcGVjdG9yVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAg
IGlmICh0aGlzLl9jbG9zZUJyYWNrZXRJZGVudGlmaWVycy5oYXNPd25Qcm9wZXJ0eShldmVudC5r
ZXlJZGVudGlmaWVyKSkgewogICAgICAgICAgICAgdmFyIGlzUm90YXRlUmlnaHQgPSBXZWJJbnNw
ZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5ldmVudEhhc0N0cmxPck1ldGEoZXZlbnQpICYmICFldmVu
dC5zaGlmdEtleSAmJiAhZXZlbnQuYWx0S2V5OwogICAgICAgICAgICAgaWYgKGlzUm90YXRlUmln
aHQpIHsKLSAgICAgICAgICAgICAgICB2YXIgaW5kZXggPSB0aGlzLl9wYW5lbE9yZGVyLmluZGV4
T2YodGhpcy5jdXJyZW50UGFuZWwoKSk7CisgICAgICAgICAgICAgICAgdmFyIGluZGV4ID0gdGhp
cy5fcGFuZWxPcmRlci5pbmRleE9mKHRoaXMuY3VycmVudFBhbmVsKCkubmFtZSk7CiAgICAgICAg
ICAgICAgICAgaW5kZXggPSAoaW5kZXggKyAxKSAlIHRoaXMuX3BhbmVsT3JkZXIubGVuZ3RoOwot
ICAgICAgICAgICAgICAgIHRoaXMuX3BhbmVsT3JkZXJbaW5kZXhdLnRvb2xiYXJJdGVtLmNsaWNr
KCk7CisgICAgICAgICAgICAgICAgdGhpcy5zaG93UGFuZWwodGhpcy5fcGFuZWxPcmRlcltpbmRl
eF0pOwogICAgICAgICAgICAgICAgIGV2ZW50LmNvbnN1bWUodHJ1ZSk7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrUGFuZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL05ldHdvcmtQYW5lbC5qcwppbmRleCAyZWZjMWRhZGY3NGYyNjU3YTQxMzk3
ZTg2MTI0NTMwOWM1NmFjNTIxLi40YzliOTliZTVhN2ZlZTdmOWE1NmJlNmQwZWM0YzUxYWExYjFm
OTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdv
cmtQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdv
cmtQYW5lbC5qcwpAQCAtMTI1MSwxMSArMTI1MSw2IEBAIFdlYkluc3BlY3Rvci5OZXR3b3JrUGFu
ZWwgPSBmdW5jdGlvbigpCiB9CiAKIFdlYkluc3BlY3Rvci5OZXR3b3JrUGFuZWwucHJvdG90eXBl
ID0gewotICAgIGdldCB0b29sYmFySXRlbUxhYmVsKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk5ldHdvcmsiKTsKLSAgICB9LAotCiAgICAgZ2V0IHN0YXR1
c0Jhckl0ZW1zKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9uZXR3b3JrTG9nVmlldy5z
dGF0dXNCYXJJdGVtczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvUGFuZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1BhbmVs
LmpzCmluZGV4IGY2NWY1ZWEzMGY3NjljNzExYmFjOTI0NDFmYTBmODE4Njk5NWM2MTUuLmY5OTdl
ZGFiMDg0YmJmMzcxZTNmNDZkY2VhMWQ5OTE0N2IwMjBkMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9QYW5lbC5qcwpAQCAtNDcsMTUgKzQ3LDYgQEAgV2ViSW5zcGVj
dG9yLlBhbmVsID0gZnVuY3Rpb24obmFtZSkKIFdlYkluc3BlY3Rvci5QYW5lbC5jb3VudGVyUmln
aHRNYXJnaW4gPSAyNTsKIAogV2ViSW5zcGVjdG9yLlBhbmVsLnByb3RvdHlwZSA9IHsKLSAgICBn
ZXQgdG9vbGJhckl0ZW0oKQotICAgIHsKLSAgICAgICAgaWYgKHRoaXMuX3Rvb2xiYXJJdGVtKQot
ICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3Rvb2xiYXJJdGVtOwotCi0gICAgICAgIHRoaXMuX3Rv
b2xiYXJJdGVtID0gV2ViSW5zcGVjdG9yLlRvb2xiYXIuY3JlYXRlUGFuZWxUb29sYmFySXRlbSh0
aGlzKTsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3Rvb2xiYXJJdGVtOwotICAgIH0sCi0KICAgICBn
ZXQgbmFtZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fcGFuZWxOYW1lOwpAQCAtNzYs
OSArNjcsNiBAQCBXZWJJbnNwZWN0b3IuUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBhbmVsLXN0YXR1cy1iYXIiKS5hcHBlbmRDaGlsZCh0
aGlzLl9zdGF0dXNCYXJJdGVtQ29udGFpbmVyKTsKICAgICAgICAgfQogCi0gICAgICAgIGlmICgi
X3Rvb2xiYXJJdGVtIiBpbiB0aGlzKQotICAgICAgICAgICAgdGhpcy5fdG9vbGJhckl0ZW0uYWRk
U3R5bGVDbGFzcygidG9nZ2xlZC1vbiIpOwotCiAgICAgICAgIHRoaXMuZm9jdXMoKTsKICAgICB9
LAogCkBAIC04Nyw4ICs3NSw2IEBAIFdlYkluc3BlY3Rvci5QYW5lbC5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIGlmICh0aGlzLl9zdGF0dXNCYXJJdGVtQ29udGFpbmVyICYmIHRoaXMuX3N0YXR1c0Jh
ckl0ZW1Db250YWluZXIucGFyZW50Tm9kZSkKICAgICAgICAgICAgIHRoaXMuX3N0YXR1c0Jhckl0
ZW1Db250YWluZXIucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLl9zdGF0dXNCYXJJdGVtQ29u
dGFpbmVyKTsKICAgICAgICAgZGVsZXRlIHRoaXMuX3N0YXR1c0Jhckl0ZW1Db250YWluZXI7Ci0g
ICAgICAgIGlmICgiX3Rvb2xiYXJJdGVtIiBpbiB0aGlzKQotICAgICAgICAgICAgdGhpcy5fdG9v
bGJhckl0ZW0ucmVtb3ZlU3R5bGVDbGFzcygidG9nZ2xlZC1vbiIpOwogICAgIH0sCiAKICAgICBy
ZXNldDogZnVuY3Rpb24oKQpAQCAtMTkzLDEwICsxNzksNiBAQCBXZWJJbnNwZWN0b3IuUGFuZWwu
cHJvdG90eXBlID0gewogCiAgICAgLy8gU2hvdWxkIGJlIGltcGxlbWVudGVkIGJ5IGFuY2VzdG9y
cy4KIAotICAgIGdldCB0b29sYmFySXRlbUxhYmVsKCkKLSAgICB7Ci0gICAgfSwKLQogICAgIGdl
dCBzdGF0dXNCYXJJdGVtcygpCiAgICAgewogICAgIH0sCkBAIC0yNTIsMyArMjM0LDYzIEBAIFdl
Ykluc3BlY3Rvci5QYW5lbC5wcm90b3R5cGUgPSB7CiB9CiAKIFdlYkluc3BlY3Rvci5QYW5lbC5w
cm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLlZpZXcucHJvdG90eXBlOworCisvKioK
KyAqIEBjb25zdHJ1Y3RvcgorICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAqIEBwYXJhbSB7c3Ry
aW5nfSB0aXRsZQorICogQHBhcmFtIHtmdW5jdGlvbihuZXc6V2ViSW5zcGVjdG9yLlBhbmVsKX0g
Y29uc3RydWN0b3IKKyAqIEBwYXJhbSB7Ym9vbGVhbj19IGxhenlJbml0CisgKi8KK1dlYkluc3Bl
Y3Rvci5QYW5lbERlc2NyaXB0b3IgPSBmdW5jdGlvbihuYW1lLCB0aXRsZSwgY29uc3RydWN0b3Is
IGxhenlJbml0KQoreworICAgIHRoaXMuX25hbWUgPSBuYW1lOworICAgIHRoaXMuX3RpdGxlID0g
dGl0bGU7CisgICAgdGhpcy5fY29uc3RydWN0b3IgPSBjb25zdHJ1Y3RvcjsKKyAgICB0aGlzLl9w
YW5lbCA9IGxhenlJbml0ID8gbnVsbCA6IHRoaXMucGFuZWwoKTsKK30KKworV2ViSW5zcGVjdG9y
LlBhbmVsRGVzY3JpcHRvci5wcm90b3R5cGUgPSB7CisgICAgLyoqCisgICAgICogQHJldHVybiB7
c3RyaW5nfQorICAgICAqLworICAgIG5hbWU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJl
dHVybiB0aGlzLl9uYW1lOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtzdHJp
bmd9CisgICAgICovCisgICAgdGl0bGU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVy
biB0aGlzLl90aXRsZTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHJldHVybiB7c3RyaW5n
fQorICAgICAqLworICAgIGljb25VUkw6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVy
biB0aGlzLl9pY29uVVJMOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmlu
Z30gaWNvblVSTAorICAgICAqLworICAgIHNldEljb25VUkw6IGZ1bmN0aW9uKGljb25VUkwpCisg
ICAgeworICAgICAgICB0aGlzLl9pY29uVVJMID0gaWNvblVSTDsKKyAgICB9LAorCisgICAgLyoq
CisgICAgICogQHJldHVybiB7V2ViSW5zcGVjdG9yLlBhbmVsfQorICAgICAqLworICAgIHBhbmVs
OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBpZiAoIXRoaXMuX3BhbmVsKQorICAgICAgICAg
ICAgdGhpcy5fcGFuZWwgPSBuZXcgdGhpcy5fY29uc3RydWN0b3IoKTsKKyAgICAgICAgV2ViSW5z
cGVjdG9yLnBhbmVsc1t0aGlzLl9uYW1lXSA9IHRoaXMuX3BhbmVsOworICAgICAgICByZXR1cm4g
dGhpcy5fcGFuZWw7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9Qcm9maWxlc1BhbmVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9Qcm9maWxlc1BhbmVsLmpzCmluZGV4IGZmNTMyYjU0ZWRiMWRlZjdlNzU2OGNi
ODY3ZWU0YTBiOTI5NDQyODUuLjI3NjUxN2ViMmQ5ZjdlZmY1M2Q4ZTdkMzY2MWUwM2VmMmFjMTRh
NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUHJvZmls
ZXNQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2Zp
bGVzUGFuZWwuanMKQEAgLTI5NCwxMSArMjk0LDYgQEAgV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFu
ZWwucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9jcmVhdGVGaWxlU2VsZWN0b3JFbGVtZW50
KCk7CiAgICAgfSwKIAotICAgIGdldCB0b29sYmFySXRlbUxhYmVsKCkKLSAgICB7Ci0gICAgICAg
IHJldHVybiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlByb2ZpbGVzIik7Ci0gICAgfSwKLQogICAg
IGdldCBzdGF0dXNCYXJJdGVtcygpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fc3RhdHVz
QmFyQnV0dG9ucy5zZWxlY3QoImVsZW1lbnQiKS5jb25jYXQoW3RoaXMucHJvZmlsZVZpZXdTdGF0
dXNCYXJJdGVtc0NvbnRhaW5lcl0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9SZXNvdXJjZVRyZWVNb2RlbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvUmVzb3VyY2VUcmVlTW9kZWwuanMKaW5kZXggMzYxNjU3MTRkNmM1OWFk
YmM4M2Q1NmU0YjE5MjM4YzgxNjc0YjlhYy4uY2EyNWM5NTlmNTUwMjRmNTYwY2EyYzJhYjQwY2Zh
ZWY2Njc5YzRhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9SZXNvdXJjZVRyZWVNb2RlbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1Jlc291cmNlVHJlZU1vZGVsLmpzCkBAIC04OSw2ICs4OSwxMSBAQCBXZWJJbnNwZWN0
b3IuUmVzb3VyY2VUcmVlTW9kZWwucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9jYWNoZWRS
ZXNvdXJjZXNQcm9jZXNzZWQgPSB0cnVlOwogICAgIH0sCiAKKyAgICBjYWNoZWRSZXNvdXJjZXNM
b2FkZWQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9jYWNoZWRSZXNv
dXJjZXNQcm9jZXNzZWQ7CisgICAgfSwKKwogICAgIF9kaXNwYXRjaEluc3BlY3RlZFVSTENoYW5n
ZWQ6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIEluc3BlY3RvckZyb250ZW5kSG9zdC5pbnNw
ZWN0ZWRVUkxDaGFuZ2VkKFdlYkluc3BlY3Rvci5pbnNwZWN0ZWRQYWdlVVJMKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanMg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlc1BhbmVsLmpzCmlu
ZGV4IDg1ZDNjMjIyNmNmNzRjYjVlMTdkMmE2ZmQ1ZGMzNWJjNWMxODBmYmMuLmIyYTZhMmI0ZDdk
ZjNkMmQzYjA5YmJjZmMwYmNmNTYwN2U1MTdmMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qcwpAQCAtOTYsMTQgKzk2LDEx
IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZXNQYW5lbCA9IGZ1bmN0aW9uKGRhdGFiYXNlKQogICAg
IFdlYkluc3BlY3Rvci5yZXNvdXJjZVRyZWVNb2RlbC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3Bl
Y3Rvci5SZXNvdXJjZVRyZWVNb2RlbC5FdmVudFR5cGVzLk9uTG9hZCwgdGhpcy5fb25Mb2FkRXZl
bnRGaXJlZCwgdGhpcyk7CiAgICAgV2ViSW5zcGVjdG9yLnJlc291cmNlVHJlZU1vZGVsLmFkZEV2
ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZU1vZGVsLkV2ZW50VHlwZXMuQ2Fj
aGVkUmVzb3VyY2VzTG9hZGVkLCB0aGlzLl9jYWNoZWRSZXNvdXJjZXNMb2FkZWQsIHRoaXMpOwog
ICAgIFdlYkluc3BlY3Rvci5yZXNvdXJjZVRyZWVNb2RlbC5hZGRFdmVudExpc3RlbmVyKFdlYklu
c3BlY3Rvci5SZXNvdXJjZVRyZWVNb2RlbC5FdmVudFR5cGVzLldpbGxMb2FkQ2FjaGVkUmVzb3Vy
Y2VzLCB0aGlzLl9yZXNldFdpdGhGcmFtZXMsIHRoaXMpOworICAgIGlmIChXZWJJbnNwZWN0b3Iu
cmVzb3VyY2VUcmVlTW9kZWwuY2FjaGVkUmVzb3VyY2VzTG9hZGVkKCkpCisgICAgICAgIHRoaXMu
X2NhY2hlZFJlc291cmNlc0xvYWRlZCgpOwogfQogCiBXZWJJbnNwZWN0b3IuUmVzb3VyY2VzUGFu
ZWwucHJvdG90eXBlID0gewotICAgIGdldCB0b29sYmFySXRlbUxhYmVsKCkKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlc291cmNlcyIpOwotICAgIH0sCi0K
ICAgICBnZXQgc3RhdHVzQmFySXRlbXMoKQogICAgIHsKICAgICAgICAgcmV0dXJuIFt0aGlzLnN0
b3JhZ2VWaWV3U3RhdHVzQmFySXRlbXNDb250YWluZXJdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanMgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qcwppbmRleCBjMDAzZjljZjhiMmVh
ZTdkYjIwNjM2MTJkYjQ1NmI5YzJmMTRlNmY4Li40ZjQ0N2IwOWZhZmY3NzUwMjNhZWU5YWEyMGFj
MTRmZmE1MmVmYzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1NjcmlwdHNQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1NjcmlwdHNQYW5lbC5qcwpAQCAtMTg5LDExICsxODksNiBAQCBXZWJJbnNwZWN0b3IuU2Ny
aXB0c1BhbmVsLlBhdXNlT25FeGNlcHRpb25zU3RhdGUgPSB7CiB9OwogCiBXZWJJbnNwZWN0b3Iu
U2NyaXB0c1BhbmVsLnByb3RvdHlwZSA9IHsKLSAgICBnZXQgdG9vbGJhckl0ZW1MYWJlbCgpCi0g
ICAgewotICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTb3VyY2VzIik7Ci0g
ICAgfSwKLQogICAgIGdldCBzdGF0dXNCYXJJdGVtcygpCiAgICAgewogICAgICAgICByZXR1cm4g
W3RoaXMuZW5hYmxlVG9nZ2xlQnV0dG9uLmVsZW1lbnQsIHRoaXMuX3BhdXNlT25FeGNlcHRpb25C
dXR0b24uZWxlbWVudCwgdGhpcy5fdG9nZ2xlRm9ybWF0U291cmNlQnV0dG9uLmVsZW1lbnQsIHRo
aXMuX3NjcmlwdFZpZXdTdGF0dXNCYXJJdGVtc0NvbnRhaW5lcl07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1N0eWxlc1NpZGViYXJQYW5lLmpzIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTaWRlYmFyUGFuZS5qcwppbmRl
eCAyODY4MWYwY2U4OTdlMWFmM2NiMmNhNDBmZGZiZjBjMTQxZWZkODdiLi5hZGVhYWY1ZjFhMzJj
OTIzN2Q3NzhmNDJiNmJiZTM3MDk1MWI0ZGFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1N0eWxlc1NpZGViYXJQYW5lLmpzCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzU2lkZWJhclBhbmUuanMKQEAgLTEzMzIsMTIg
KzEzMzIsMTIgQEAgV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydGllc1NlY3Rpb24ucHJvdG90eXBl
ID0gewogICAgICAgICAgICAgdGhpcy5ydWxlID0gbmV3UnVsZTsKICAgICAgICAgICAgIHRoaXMu
c3R5bGVSdWxlID0geyBzZWN0aW9uOiB0aGlzLCBzdHlsZTogbmV3UnVsZS5zdHlsZSwgc2VsZWN0
b3JUZXh0OiBuZXdSdWxlLnNlbGVjdG9yVGV4dCwgbWVkaWE6IG5ld1J1bGUubWVkaWEsIHNvdXJj
ZVVSTDogbmV3UnVsZS5zb3VyY2VVUkwsIHJ1bGU6IG5ld1J1bGUgfTsKIAotICAgICAgICAgICAg
dGhpcy5wYW5lLnVwZGF0ZSgpOworICAgICAgICAgICAgdGhpcy5fcGFyZW50UGFuZS51cGRhdGUo
KTsKIAogICAgICAgICAgICAgdGhpcy5fbW92ZUVkaXRvckZyb21TZWxlY3Rvcihtb3ZlRGlyZWN0
aW9uKTsKICAgICAgICAgfQogCi0gICAgICAgIHZhciBzZWxlY3RlZE5vZGUgPSBXZWJJbnNwZWN0
b3IucGFuZWxzLmVsZW1lbnRzLnNlbGVjdGVkRE9NTm9kZSgpOworICAgICAgICB2YXIgc2VsZWN0
ZWROb2RlID0gdGhpcy5fcGFyZW50UGFuZS5ub2RlOwogICAgICAgICBXZWJJbnNwZWN0b3IuY3Nz
TW9kZWwuc2V0UnVsZVNlbGVjdG9yKHRoaXMucnVsZS5pZCwgc2VsZWN0ZWROb2RlID8gc2VsZWN0
ZWROb2RlLmlkIDogMCwgbmV3Q29udGVudCwgc3VjY2Vzc0NhbGxiYWNrLmJpbmQodGhpcyksIHRo
aXMuX21vdmVFZGl0b3JGcm9tU2VsZWN0b3IuYmluZCh0aGlzLCBtb3ZlRGlyZWN0aW9uKSk7CiAg
ICAgfSwKIApAQCAtMTcyOSw4ICsxNzI5LDggQEAgV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydHlU
cmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgY29udGFpbmVyLmFwcGVu
ZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJ1cmwoIikpOwogICAgICAgICAgICAgICAg
IGlmIChzZWxmLl9zdHlsZVJ1bGUuc291cmNlVVJMKQogICAgICAgICAgICAgICAgICAgICBocmVm
VXJsID0gV2ViSW5zcGVjdG9yLmNvbXBsZXRlVVJMKHNlbGYuX3N0eWxlUnVsZS5zb3VyY2VVUkws
IGhyZWZVcmwpOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKFdlYkluc3BlY3Rvci5wYW5lbHMu
ZWxlbWVudHMuc2VsZWN0ZWRET01Ob2RlKCkpCi0gICAgICAgICAgICAgICAgICAgIGhyZWZVcmwg
PSBXZWJJbnNwZWN0b3IucmVzb3VyY2VVUkxGb3JSZWxhdGVkTm9kZShXZWJJbnNwZWN0b3IucGFu
ZWxzLmVsZW1lbnRzLnNlbGVjdGVkRE9NTm9kZSgpLCBocmVmVXJsKTsKKyAgICAgICAgICAgICAg
ICBlbHNlIGlmICh0aGlzLl9wYXJlbnRQYW5lLm5vZGUpCisgICAgICAgICAgICAgICAgICAgIGhy
ZWZVcmwgPSBXZWJJbnNwZWN0b3IucmVzb3VyY2VVUkxGb3JSZWxhdGVkTm9kZSh0aGlzLl9wYXJl
bnRQYW5lLm5vZGUsIGhyZWZVcmwpOwogICAgICAgICAgICAgICAgIHZhciBoYXNSZXNvdXJjZSA9
ICEhV2ViSW5zcGVjdG9yLnJlc291cmNlRm9yVVJMKGhyZWZVcmwpOwogICAgICAgICAgICAgICAg
IC8vIEZJWE1FOiBXZWJJbnNwZWN0b3IubGlua2lmeVVSTEFzTm9kZSgpIHNob3VsZCByZWFsbHkg
dXNlIGJhc2VVUkkuCiAgICAgICAgICAgICAgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKFdlYklu
c3BlY3Rvci5saW5raWZ5VVJMQXNOb2RlKGhyZWZVcmwsIHVybCwgdW5kZWZpbmVkLCAhaGFzUmVz
b3VyY2UpKTsKQEAgLTE5MDQsNyArMTkwNCw3IEBAIFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnR5
VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICAgICAgdmFyIGNvbG9yUmVnZXggPSAv
KCg/OnJnYnxoc2wpYT9cKFteKV0rXCl8I1swLTlhLWZBLUZdezZ9fCNbMC05YS1mQS1GXXszfXxc
Ylx3K1xiKD8hLSkpL2c7CiAgICAgICAgICAgICB2YXIgY29sb3JQcm9jZXNzb3IgPSBwcm9jZXNz
VmFsdWUuYmluZCh3aW5kb3csIGNvbG9yUmVnZXgsIHByb2Nlc3NDb2xvciwgbnVsbCk7CiAKLSAg
ICAgICAgICAgIHZhbHVlRWxlbWVudC5hcHBlbmRDaGlsZChwcm9jZXNzVmFsdWUoL3VybFwoXHMq
KFteKVxzXSspXHMqXCkvZywgbGlua2lmeVVSTCwgV2ViSW5zcGVjdG9yLkNTU0tleXdvcmRDb21w
bGV0aW9ucy5pc0NvbG9yQXdhcmVQcm9wZXJ0eShzZWxmLm5hbWUpID8gY29sb3JQcm9jZXNzb3Ig
OiBudWxsLCB2YWx1ZSkpOworICAgICAgICAgICAgdmFsdWVFbGVtZW50LmFwcGVuZENoaWxkKHBy
b2Nlc3NWYWx1ZSgvdXJsXChccyooW14pXHNdKylccypcKS9nLCBsaW5raWZ5VVJMLmJpbmQodGhp
cyksIFdlYkluc3BlY3Rvci5DU1NLZXl3b3JkQ29tcGxldGlvbnMuaXNDb2xvckF3YXJlUHJvcGVy
dHkoc2VsZi5uYW1lKSA/IGNvbG9yUHJvY2Vzc29yIDogbnVsbCwgdmFsdWUpKTsKICAgICAgICAg
fQogCiAgICAgICAgIHRoaXMubGlzdEl0ZW1FbGVtZW50LnJlbW92ZUNoaWxkcmVuKCk7CkBAIC0y
NDM5LDcgKzI0MzksNiBAQCBXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50LnBy
b3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICB2YXIgc2VjdGlvbiA9
IHRoaXMudHJlZU91dGxpbmUuc2VjdGlvbjsKLSAgICAgICAgdmFyIGVsZW1lbnRzUGFuZWwgPSBX
ZWJJbnNwZWN0b3IucGFuZWxzLmVsZW1lbnRzOwogICAgICAgICBzdHlsZVRleHQgPSBzdHlsZVRl
eHQucmVwbGFjZSgvXHMvZywgIiAiKS50cmltKCk7IC8vIFJlcGxhY2UgJm5ic3A7IHdpdGggd2hp
dGVzcGFjZS4KICAgICAgICAgdmFyIHN0eWxlVGV4dExlbmd0aCA9IHN0eWxlVGV4dC5sZW5ndGg7
CiAgICAgICAgIGlmICghc3R5bGVUZXh0TGVuZ3RoICYmIHVwZGF0ZUludGVyZmFjZSAmJiAhaXNS
ZXZlcnQgJiYgdGhpcy5fbmV3UHJvcGVydHkgJiYgIXRoaXMuX2hhc0JlZW5Nb2RpZmllZEluY3Jl
bWVudGFsbHkoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9UaW1lbGluZVBhbmVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9UaW1lbGluZVBhbmVsLmpzCmluZGV4IDNkMzE4YzY2NmE5NmZkYzk3NWU3MmUyMDI5OGFkYzlm
YmE2MmEwZTguLjMyMGZjMGQ4ZTIyMGRjOWI1ODNhNmNiODU4MjVmYzAwZjE1NjY0M2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGltZWxpbmVQYW5lbC5q
cworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lUGFuZWwu
anMKQEAgLTE5NSwxMSArMTk1LDYgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwucHJvdG90
eXBlID0gewogICAgICAgICByZXR1cm4gdGhpcy5fY2FsY3VsYXRvcjsKICAgICB9LAogCi0gICAg
Z2V0IHRvb2xiYXJJdGVtTGFiZWwoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiVGltZWxpbmUiKTsKLSAgICB9LAotCiAgICAgZ2V0IHN0YXR1c0Jhckl0ZW1z
KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9zdGF0dXNCYXJCdXR0b25zLnNlbGVjdCgi
ZWxlbWVudCIpLmNvbmNhdChbCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1Rvb2xiYXIuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1Rvb2xiYXIuanMKaW5kZXggMzcyZmY2N2FjZTQ4NWQ5M2RjZjY5M2Y5NjViZjBmZDk0NmRlNmEy
OC4uZjU4OGU5N2VmYWU1ZTc0MDk4OTgzZTQ0MTA4OWUzMDRkZjQxYTkzZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Ub29sYmFyLmpzCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVG9vbGJhci5qcwpAQCAtNTksMTMgKzU5LDUz
IEBAIFdlYkluc3BlY3Rvci5Ub29sYmFyLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fdXBk
YXRlRHJvcGRvd25CdXR0b25BbmRIaWRlRHJvcGRvd24oKTsKICAgICB9LAogCi0gICAgYWRkUGFu
ZWw6IGZ1bmN0aW9uKHBhbmVsKQorICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9y
LlBhbmVsRGVzY3JpcHRvcn0gcGFuZWxEZXNjcmlwdG9yCisgICAgICovCisgICAgYWRkUGFuZWw6
IGZ1bmN0aW9uKHBhbmVsRGVzY3JpcHRvcikKICAgICB7Ci0gICAgICAgIHRoaXMuZWxlbWVudC5h
cHBlbmRDaGlsZChwYW5lbC50b29sYmFySXRlbSk7CisgICAgICAgIHRoaXMuZWxlbWVudC5hcHBl
bmRDaGlsZCh0aGlzLl9jcmVhdGVQYW5lbFRvb2xiYXJJdGVtKHBhbmVsRGVzY3JpcHRvcikpOwog
ICAgICAgICB0aGlzLnJlc2l6ZSgpOwogICAgIH0sCiAKICAgICAvKioKKyAgICAgKiBAcGFyYW0g
e1dlYkluc3BlY3Rvci5QYW5lbERlc2NyaXB0b3J9IHBhbmVsRGVzY3JpcHRvcgorICAgICAqIEBy
ZXR1cm4ge0VsZW1lbnR9CisgICAgICovCisgICAgX2NyZWF0ZVBhbmVsVG9vbGJhckl0ZW06IGZ1
bmN0aW9uKHBhbmVsRGVzY3JpcHRvcikKKyAgICB7CisgICAgICAgIHZhciB0b29sYmFySXRlbSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImJ1dHRvbiIpOworICAgICAgICB0b29sYmFySXRlbS5j
bGFzc05hbWUgPSAidG9vbGJhci1pdGVtIHRvZ2dsZWFibGUiOworICAgICAgICB0b29sYmFySXRl
bS5wYW5lbERlc2NyaXB0b3IgPSBwYW5lbERlc2NyaXB0b3I7CisgICAgICAgIHRvb2xiYXJJdGVt
LmFkZFN0eWxlQ2xhc3MocGFuZWxEZXNjcmlwdG9yLm5hbWUoKSk7CisKKyAgICAgICAgZnVuY3Rp
b24gb25Ub29sYmFySXRlbUNsaWNrZWQoKQorICAgICAgICB7CisgICAgICAgICAgICB0aGlzLl91
cGRhdGVEcm9wZG93bkJ1dHRvbkFuZEhpZGVEcm9wZG93bigpOworICAgICAgICAgICAgV2ViSW5z
cGVjdG9yLmluc3BlY3RvclZpZXcuc2V0Q3VycmVudFBhbmVsKHBhbmVsRGVzY3JpcHRvci5wYW5l
bCgpKTsKKyAgICAgICAgfQorICAgICAgICB0b29sYmFySXRlbS5hZGRFdmVudExpc3RlbmVyKCJj
bGljayIsIG9uVG9vbGJhckl0ZW1DbGlja2VkLmJpbmQodGhpcyksIGZhbHNlKTsKKworICAgICAg
ICBmdW5jdGlvbiBwYW5lbFNlbGVjdGVkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKFdl
Ykluc3BlY3Rvci5pbnNwZWN0b3JWaWV3LmN1cnJlbnRQYW5lbCgpICYmIHBhbmVsRGVzY3JpcHRv
ci5uYW1lKCkgPT09IFdlYkluc3BlY3Rvci5pbnNwZWN0b3JWaWV3LmN1cnJlbnRQYW5lbCgpLm5h
bWUpCisgICAgICAgICAgICAgICAgdG9vbGJhckl0ZW0uYWRkU3R5bGVDbGFzcygidG9nZ2xlZC1v
biIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRvb2xiYXJJdGVtLnJlbW92
ZVN0eWxlQ2xhc3MoInRvZ2dsZWQtb24iKTsKKyAgICAgICAgfQorICAgICAgICBXZWJJbnNwZWN0
b3IuaW5zcGVjdG9yVmlldy5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5JbnNwZWN0b3JW
aWV3LkV2ZW50cy5QYW5lbFNlbGVjdGVkLCBwYW5lbFNlbGVjdGVkKTsKKworICAgICAgICB2YXIg
aWNvbkVsZW1lbnQgPSB0b29sYmFySXRlbS5jcmVhdGVDaGlsZCgiZGl2IiwgInRvb2xiYXItaWNv
biIpOworICAgICAgICB0b29sYmFySXRlbS5jcmVhdGVDaGlsZCgiZGl2IiwgInRvb2xiYXItbGFi
ZWwiKS50ZXh0Q29udGVudCA9IHBhbmVsRGVzY3JpcHRvci50aXRsZSgpOworICAgICAgICBpZiAo
cGFuZWxEZXNjcmlwdG9yLmljb25VUkwoKSkgeworICAgICAgICAgICAgaWNvbkVsZW1lbnQuYWRk
U3R5bGVDbGFzcygiY3VzdG9tLXRvb2xiYXItaWNvbiIpOworICAgICAgICAgICAgaWNvbkVsZW1l
bnQuc3R5bGUuYmFja2dyb3VuZEltYWdlID0gInVybCgiICsgcGFuZWxEZXNjcmlwdG9yLmljb25V
UkwoKSArICIpIjsKKyAgICAgICAgfQorICAgICAgICBwYW5lbFNlbGVjdGVkKCk7CisgICAgICAg
IHJldHVybiB0b29sYmFySXRlbTsKKyAgICB9LAorCisgICAgLyoqCiAgICAgICogQHJldHVybiB7
Ym9vbGVhbn0KICAgICAgKi8KICAgICBfdG9vbGJhckRyYWdTdGFydDogZnVuY3Rpb24oZXZlbnQp
CkBAIC0xMjIsNyArMTYyLDcgQEAgV2ViSW5zcGVjdG9yLlRvb2xiYXIucHJvdG90eXBlID0gewog
ICAgICAgICBpZiAoIXRoaXMuX2Ryb3Bkb3duKSB7CiAgICAgICAgICAgICBpZiAoIXZpc2libGUp
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgdGhpcy5fZHJvcGRvd24gPSBu
ZXcgV2ViSW5zcGVjdG9yLlRvb2xiYXJEcm9wZG93bigpOworICAgICAgICAgICAgdGhpcy5fZHJv
cGRvd24gPSBuZXcgV2ViSW5zcGVjdG9yLlRvb2xiYXJEcm9wZG93bih0aGlzKTsKICAgICAgICAg
fQogICAgICAgICBpZiAodmlzaWJsZSkKICAgICAgICAgICAgIHRoaXMuX2Ryb3Bkb3duLnNob3co
KTsKQEAgLTE0NywzNiArMTg3LDEzIEBAIFdlYkluc3BlY3Rvci5Ub29sYmFyLnByb3RvdHlwZSA9
IHsKICAgICB9CiB9CiAKLVdlYkluc3BlY3Rvci5Ub29sYmFyLmNyZWF0ZVBhbmVsVG9vbGJhckl0
ZW0gPSBmdW5jdGlvbihwYW5lbCkKLXsKLSAgICB2YXIgdG9vbGJhckl0ZW0gPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJidXR0b24iKTsKLSAgICB0b29sYmFySXRlbS5jbGFzc05hbWUgPSAidG9v
bGJhci1pdGVtIHRvZ2dsZWFibGUiOwotICAgIHRvb2xiYXJJdGVtLnBhbmVsID0gcGFuZWw7Ci0g
ICAgdG9vbGJhckl0ZW0uYWRkU3R5bGVDbGFzcyhwYW5lbC5fcGFuZWxOYW1lKTsKLSAgICBmdW5j
dGlvbiBvblRvb2xiYXJJdGVtQ2xpY2tlZCgpCi0gICAgewotICAgICAgICBXZWJJbnNwZWN0b3Iu
dG9vbGJhci5fdXBkYXRlRHJvcGRvd25CdXR0b25BbmRIaWRlRHJvcGRvd24oKTsKLSAgICAgICAg
V2ViSW5zcGVjdG9yLmluc3BlY3RvclZpZXcuc2V0Q3VycmVudFBhbmVsKHBhbmVsKTsKLSAgICB9
Ci0gICAgdG9vbGJhckl0ZW0uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBvblRvb2xiYXJJdGVt
Q2xpY2tlZCwgZmFsc2UpOwotCi0gICAgdmFyIGljb25FbGVtZW50ID0gdG9vbGJhckl0ZW0uY3Jl
YXRlQ2hpbGQoImRpdiIsICJ0b29sYmFyLWljb24iKTsKLQotICAgIGlmICgidG9vbGJhckl0ZW1M
YWJlbCIgaW4gcGFuZWwpCi0gICAgICAgIHRvb2xiYXJJdGVtLmNyZWF0ZUNoaWxkKCJkaXYiLCAi
dG9vbGJhci1sYWJlbCIpLnRleHRDb250ZW50ID0gcGFuZWwudG9vbGJhckl0ZW1MYWJlbDsKLQot
ICAgIGlmIChwYW5lbCA9PT0gV2ViSW5zcGVjdG9yLmluc3BlY3RvclZpZXcuY3VycmVudFBhbmVs
KCkpCi0gICAgICAgIHRvb2xiYXJJdGVtLmFkZFN0eWxlQ2xhc3MoInRvZ2dsZWQtb24iKTsKLQot
ICAgIHJldHVybiB0b29sYmFySXRlbTsKLX0KLQogLyoqCiAgKiBAY29uc3RydWN0b3IKKyAqIEBw
YXJhbSB7V2ViSW5zcGVjdG9yLlRvb2xiYXJ9IHRvb2xiYXIKICAqLwotV2ViSW5zcGVjdG9yLlRv
b2xiYXJEcm9wZG93biA9IGZ1bmN0aW9uKCkKK1dlYkluc3BlY3Rvci5Ub29sYmFyRHJvcGRvd24g
PSBmdW5jdGlvbih0b29sYmFyKQogewotICAgIHRoaXMuX3Rvb2xiYXIgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgidG9vbGJhciIpOworICAgIHRoaXMuX3Rvb2xiYXIgPSB0b29sYmFyOwogICAg
IHRoaXMuX2Fycm93ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRvb2xiYXItZHJvcGRvd24t
YXJyb3ciKTsKICAgICB0aGlzLmVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYi
KTsKICAgICB0aGlzLmVsZW1lbnQuaWQgPSAidG9vbGJhci1kcm9wZG93biI7CkBAIC0xOTgsNyAr
MjE1LDcgQEAgV2ViSW5zcGVjdG9yLlRvb2xiYXJEcm9wZG93bi5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIHRoaXMuZWxlbWVudC5zdHlsZS50b3AgPSB0b3AgKyAicHgiOwogICAgICAgICB0aGlzLmVs
ZW1lbnQuc3R5bGUubGVmdCA9IHRoaXMuX2Fycm93LnRvdGFsT2Zmc2V0TGVmdCgpICsgInB4IjsK
ICAgICAgICAgdGhpcy5fY29udGVudEVsZW1lbnQuc3R5bGUubWF4SGVpZ2h0ID0gd2luZG93Lmlu
bmVySGVpZ2h0IC0gdG9wIC0gMjAgKyAicHgiOwotICAgICAgICB0aGlzLl90b29sYmFyLmFwcGVu
ZENoaWxkKHRoaXMuZWxlbWVudCk7CisgICAgICAgIHRoaXMuX3Rvb2xiYXIuZWxlbWVudC5hcHBl
bmRDaGlsZCh0aGlzLmVsZW1lbnQpOwogICAgIH0sCiAKICAgICBoaWRlOiBmdW5jdGlvbigpCkBA
IC0yMTcsMTEgKzIzNCwxMSBAQCBXZWJJbnNwZWN0b3IuVG9vbGJhckRyb3Bkb3duLnByb3RvdHlw
ZSA9IHsKIAogICAgIF9wb3B1bGF0ZTogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgdmFyIHRv
b2xiYXJJdGVtcyA9IHRoaXMuX3Rvb2xiYXIucXVlcnlTZWxlY3RvckFsbCgiLnRvb2xiYXItaXRl
bS50b2dnbGVhYmxlIik7CisgICAgICAgIHZhciB0b29sYmFySXRlbXMgPSB0aGlzLl90b29sYmFy
LmVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLnRvb2xiYXItaXRlbS50b2dnbGVhYmxlIik7CiAK
ICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0b29sYmFySXRlbXMubGVuZ3RoOyArK2kpIHsK
ICAgICAgICAgICAgIGlmICh0b29sYmFySXRlbXNbaV0ub2Zmc2V0VG9wID4gMCkKLSAgICAgICAg
ICAgICAgICB0aGlzLl9jb250ZW50RWxlbWVudC5hcHBlbmRDaGlsZChXZWJJbnNwZWN0b3IuVG9v
bGJhci5jcmVhdGVQYW5lbFRvb2xiYXJJdGVtKHRvb2xiYXJJdGVtc1tpXS5wYW5lbCkpOworICAg
ICAgICAgICAgICAgIHRoaXMuX2NvbnRlbnRFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3Rvb2xi
YXIuX2NyZWF0ZVBhbmVsVG9vbGJhckl0ZW0odG9vbGJhckl0ZW1zW2ldLnBhbmVsRGVzY3JpcHRv
cikpOwogICAgICAgICB9CiAgICAgfSwKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3NzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9pbnNwZWN0b3IuY3NzCmluZGV4IGVhNWVlZGM0NGU1MmY0NTZmZTYwNGNkODE5
MzE0OTM2YzJjNTY1OWYuLmY2NTI3ZTI4MDAzYzYxYjJiOTYwNDcwOWIyYWU2ZjY2ODllMDQ5NzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9y
LmNzcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5j
c3MKQEAgLTExOCw2ICsxMTgsMTAgQEAgYm9keS5jb21wYWN0LmluYWN0aXZlICN0b29sYmFyIHsK
ICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoSW1hZ2VzL3Rvb2xiYXJJY29uc1NtYWxsLnBuZyk7
CiB9CiAKKy50b29sYmFyLXNtYWxsIC50b29sYmFyLWljb24uY3VzdG9tLXRvb2xiYXItaWNvbiB7
CisgICAgYmFja2dyb3VuZC1wb3NpdGlvbi14OiAtMzJweDsKK30KKwogLnRvb2xiYXItaXRlbTph
Y3RpdmUgLnRvb2xiYXItaWNvbiB7CiAgICAgYmFja2dyb3VuZC1wb3NpdGlvbi15OiAzMnB4Owog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0
b3IuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcwpp
bmRleCAyMWNmYzAyMjVlZjVkNTdiMTAwNzJkNjEzOTNiYzQ3YzM4YzY3ZDc2Li42ZGQxMDgwZTlj
YjViOWI5NjM4NGQ3MTQzNDRkODM0MTIzNDAxNDc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcwpAQCAtMjksNyArMjksNyBAQAogICovCiAK
IHZhciBXZWJJbnNwZWN0b3IgPSB7Ci0gICAgX2NyZWF0ZVBhbmVsczogZnVuY3Rpb24oKQorICAg
IF9wYW5lbERlc2NyaXB0b3JzOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICB0aGlzLnBhbmVs
cyA9IHt9OwogICAgICAgICBXZWJJbnNwZWN0b3IuaW5zcGVjdG9yVmlldyA9IG5ldyBXZWJJbnNw
ZWN0b3IuSW5zcGVjdG9yVmlldygpOwpAQCAtMzcsMzUgKzM3LDM2IEBAIHZhciBXZWJJbnNwZWN0
b3IgPSB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5pbnNwZWN0b3JWaWV3LnNob3cocGFyZW50RWxl
bWVudCk7CiAgICAgICAgIFdlYkluc3BlY3Rvci5pbnNwZWN0b3JWaWV3LmFkZEV2ZW50TGlzdGVu
ZXIoV2ViSW5zcGVjdG9yLkluc3BlY3RvclZpZXcuRXZlbnRzLlBhbmVsU2VsZWN0ZWQsIHRoaXMu
X3BhbmVsU2VsZWN0ZWQsIHRoaXMpOwogCisgICAgICAgIHZhciBlbGVtZW50cyA9IG5ldyBXZWJJ
bnNwZWN0b3IuUGFuZWxEZXNjcmlwdG9yKCJlbGVtZW50cyIsIFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiRWxlbWVudHMiKSwgV2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwsIHRydWUpOworICAgICAg
ICB2YXIgcmVzb3VyY2VzID0gbmV3IFdlYkluc3BlY3Rvci5QYW5lbERlc2NyaXB0b3IoInJlc291
cmNlcyIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVzb3VyY2VzIiksIFdlYkluc3BlY3Rvci5S
ZXNvdXJjZXNQYW5lbCwgdHJ1ZSk7CisgICAgICAgIHZhciBuZXR3b3JrID0gbmV3IFdlYkluc3Bl
Y3Rvci5QYW5lbERlc2NyaXB0b3IoIm5ldHdvcmsiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk5l
dHdvcmsiKSwgV2ViSW5zcGVjdG9yLk5ldHdvcmtQYW5lbCk7CisgICAgICAgIHZhciBzY3JpcHRz
ID0gbmV3IFdlYkluc3BlY3Rvci5QYW5lbERlc2NyaXB0b3IoInNjcmlwdHMiLCBXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIlNvdXJjZXMiKSwgV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbCk7CisgICAg
ICAgIHZhciB0aW1lbGluZSA9IG5ldyBXZWJJbnNwZWN0b3IuUGFuZWxEZXNjcmlwdG9yKCJ0aW1l
bGluZSIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiVGltZWxpbmUiKSwgV2ViSW5zcGVjdG9yLlRp
bWVsaW5lUGFuZWwsIHRydWUpOworICAgICAgICB2YXIgcHJvZmlsZXMgPSBuZXcgV2ViSW5zcGVj
dG9yLlBhbmVsRGVzY3JpcHRvcigicHJvZmlsZXMiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlBy
b2ZpbGVzIiksIFdlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsKTsKKyAgICAgICAgdmFyIGF1ZGl0
cyA9IG5ldyBXZWJJbnNwZWN0b3IuUGFuZWxEZXNjcmlwdG9yKCJhdWRpdHMiLCBXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIkF1ZGl0cyIpLCBXZWJJbnNwZWN0b3IuQXVkaXRzUGFuZWwsIHRydWUpOwor
ICAgICAgICB2YXIgY29uc29sZSA9IG5ldyBXZWJJbnNwZWN0b3IuUGFuZWxEZXNjcmlwdG9yKCJj
b25zb2xlIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDb25zb2xlIiksIFdlYkluc3BlY3Rvci5D
b25zb2xlUGFuZWwsIHRydWUpOworICAgICAgICB2YXIgYWxsRGVzY3JpcHRvcnMgPSBbZWxlbWVu
dHMsIHJlc291cmNlcywgbmV0d29yaywgc2NyaXB0cywgdGltZWxpbmUsIHByb2ZpbGVzLCBhdWRp
dHMsIGNvbnNvbGVdOworCisgICAgICAgIHZhciBwYW5lbERlc2NyaXB0b3JzID0gW107CiAgICAg
ICAgIGlmIChXZWJJbnNwZWN0b3IuV29ya2VyTWFuYWdlci5pc1dvcmtlckZyb250ZW5kKCkpIHsK
LSAgICAgICAgICAgIHRoaXMucGFuZWxzLnNjcmlwdHMgPSBuZXcgV2ViSW5zcGVjdG9yLlNjcmlw
dHNQYW5lbCgpOwotICAgICAgICAgICAgdGhpcy5wYW5lbHMudGltZWxpbmUgPSBuZXcgV2ViSW5z
cGVjdG9yLlRpbWVsaW5lUGFuZWwoKTsKLSAgICAgICAgICAgIHRoaXMucGFuZWxzLnByb2ZpbGVz
ID0gbmV3IFdlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsKCk7Ci0gICAgICAgICAgICB0aGlzLnBh
bmVscy5jb25zb2xlID0gbmV3IFdlYkluc3BlY3Rvci5Db25zb2xlUGFuZWwoKTsKLSAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgICAgIHBhbmVsRGVzY3JpcHRvcnMucHVzaChzY3JpcHRzKTsK
KyAgICAgICAgICAgIHBhbmVsRGVzY3JpcHRvcnMucHVzaCh0aW1lbGluZSk7CisgICAgICAgICAg
ICBwYW5lbERlc2NyaXB0b3JzLnB1c2gocHJvZmlsZXMpOworICAgICAgICAgICAgcGFuZWxEZXNj
cmlwdG9ycy5wdXNoKGNvbnNvbGUpOworICAgICAgICAgICAgcmV0dXJuIHBhbmVsRGVzY3JpcHRv
cnM7CiAgICAgICAgIH0KKyAgICAgICAgdmFyIGFsbERlc2NyaXB0b3JzID0gW2VsZW1lbnRzLCBy
ZXNvdXJjZXMsIG5ldHdvcmssIHNjcmlwdHMsIHRpbWVsaW5lLCBwcm9maWxlcywgYXVkaXRzLCBj
b25zb2xlXTsKICAgICAgICAgdmFyIGhpZGRlblBhbmVscyA9IChJbnNwZWN0b3JGcm9udGVuZEhv
c3QuaGlkZGVuUGFuZWxzKCkgfHwgIiIpLnNwbGl0KCcsJyk7Ci0gICAgICAgIGlmIChoaWRkZW5Q
YW5lbHMuaW5kZXhPZigiZWxlbWVudHMiKSA9PT0gLTEpCi0gICAgICAgICAgICB0aGlzLnBhbmVs
cy5lbGVtZW50cyA9IG5ldyBXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbCgpOwotICAgICAgICBp
ZiAoaGlkZGVuUGFuZWxzLmluZGV4T2YoInJlc291cmNlcyIpID09PSAtMSkKLSAgICAgICAgICAg
IHRoaXMucGFuZWxzLnJlc291cmNlcyA9IG5ldyBXZWJJbnNwZWN0b3IuUmVzb3VyY2VzUGFuZWwo
KTsKLSAgICAgICAgaWYgKGhpZGRlblBhbmVscy5pbmRleE9mKCJuZXR3b3JrIikgPT09IC0xKQot
ICAgICAgICAgICAgdGhpcy5wYW5lbHMubmV0d29yayA9IG5ldyBXZWJJbnNwZWN0b3IuTmV0d29y
a1BhbmVsKCk7Ci0gICAgICAgIGlmIChoaWRkZW5QYW5lbHMuaW5kZXhPZigic2NyaXB0cyIpID09
PSAtMSkKLSAgICAgICAgICAgIHRoaXMucGFuZWxzLnNjcmlwdHMgPSBuZXcgV2ViSW5zcGVjdG9y
LlNjcmlwdHNQYW5lbCgpOwotICAgICAgICBpZiAoaGlkZGVuUGFuZWxzLmluZGV4T2YoInRpbWVs
aW5lIikgPT09IC0xKQotICAgICAgICAgICAgdGhpcy5wYW5lbHMudGltZWxpbmUgPSBuZXcgV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwoKTsKLSAgICAgICAgaWYgKGhpZGRlblBhbmVscy5pbmRl
eE9mKCJwcm9maWxlcyIpID09PSAtMSkKLSAgICAgICAgICAgIHRoaXMucGFuZWxzLnByb2ZpbGVz
ID0gbmV3IFdlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsKCk7Ci0gICAgICAgIGlmIChoaWRkZW5Q
YW5lbHMuaW5kZXhPZigiYXVkaXRzIikgPT09IC0xKQotICAgICAgICAgICAgdGhpcy5wYW5lbHMu
YXVkaXRzID0gbmV3IFdlYkluc3BlY3Rvci5BdWRpdHNQYW5lbCgpOwotICAgICAgICBpZiAoaGlk
ZGVuUGFuZWxzLmluZGV4T2YoImNvbnNvbGUiKSA9PT0gLTEpCi0gICAgICAgICAgICB0aGlzLnBh
bmVscy5jb25zb2xlID0gbmV3IFdlYkluc3BlY3Rvci5Db25zb2xlUGFuZWwoKTsKKyAgICAgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBhbGxEZXNjcmlwdG9ycy5sZW5ndGg7ICsraSkgeworICAgICAg
ICAgICAgaWYgKGhpZGRlblBhbmVscy5pbmRleE9mKGFsbERlc2NyaXB0b3JzW2ldLm5hbWUpID09
PSAtMSkKKyAgICAgICAgICAgICAgICBwYW5lbERlc2NyaXB0b3JzLnB1c2goYWxsRGVzY3JpcHRv
cnNbaV0pOworICAgICAgICB9CisgICAgICAgIHJldHVybiBwYW5lbERlc2NyaXB0b3JzOwogICAg
IH0sCiAKICAgICBfcGFuZWxTZWxlY3RlZDogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgdGhp
cy5fdG9nZ2xlQ29uc29sZUJ1dHRvbi5kaXNhYmxlZCA9IFdlYkluc3BlY3Rvci5pbnNwZWN0b3JW
aWV3LmN1cnJlbnRQYW5lbCgpID09PSBXZWJJbnNwZWN0b3IucGFuZWxzLmNvbnNvbGU7CisgICAg
ICAgIHRoaXMuX3RvZ2dsZUNvbnNvbGVCdXR0b24uZGlzYWJsZWQgPSBXZWJJbnNwZWN0b3IuaW5z
cGVjdG9yVmlldy5jdXJyZW50UGFuZWwoKS5uYW1lID09PSAiY29uc29sZSI7CiAgICAgfSwKIAog
ICAgIF9jcmVhdGVHbG9iYWxTdGF0dXNCYXJJdGVtczogZnVuY3Rpb24oKQpAQCAtODMsOCArODQs
MTIgQEAgdmFyIFdlYkluc3BlY3RvciA9IHsKICAgICAgICAgdGhpcy5fdG9nZ2xlQ29uc29sZUJ1
dHRvbi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX3RvZ2dsZUNvbnNvbGVCdXR0b25D
bGlja2VkLmJpbmQodGhpcyksIGZhbHNlKTsKICAgICAgICAgbWFpblN0YXR1c0Jhci5pbnNlcnRC
ZWZvcmUodGhpcy5fdG9nZ2xlQ29uc29sZUJ1dHRvbi5lbGVtZW50LCBib3R0b21TdGF0dXNCYXJD
b250YWluZXIpOwogCi0gICAgICAgIGlmICh0aGlzLnBhbmVscy5lbGVtZW50cykKLSAgICAgICAg
ICAgIG1haW5TdGF0dXNCYXIuaW5zZXJ0QmVmb3JlKHRoaXMucGFuZWxzLmVsZW1lbnRzLm5vZGVT
ZWFyY2hCdXR0b24uZWxlbWVudCwgYm90dG9tU3RhdHVzQmFyQ29udGFpbmVyKTsKKyAgICAgICAg
aWYgKCFXZWJJbnNwZWN0b3IuV29ya2VyTWFuYWdlci5pc1dvcmtlckZyb250ZW5kKCkpIHsKKyAg
ICAgICAgICAgIHRoaXMuX25vZGVTZWFyY2hCdXR0b24gPSBuZXcgV2ViSW5zcGVjdG9yLlN0YXR1
c0JhckJ1dHRvbihXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNlbGVjdCBhbiBlbGVtZW50IGluIHRo
ZSBwYWdlIHRvIGluc3BlY3QgaXQuIiksICJub2RlLXNlYXJjaC1zdGF0dXMtYmFyLWl0ZW0iKTsK
KyAgICAgICAgICAgIHRoaXMuX25vZGVTZWFyY2hCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcigiY2xp
Y2siLCB0aGlzLl90b2dnbGVTZWFyY2hpbmdGb3JOb2RlLCB0aGlzKTsKKyAgICAgICAgICAgIG1h
aW5TdGF0dXNCYXIuaW5zZXJ0QmVmb3JlKHRoaXMuX25vZGVTZWFyY2hCdXR0b24uZWxlbWVudCwg
Ym90dG9tU3RhdHVzQmFyQ29udGFpbmVyKTsKKyAgICAgICAgfQorCiAgICAgICAgIG1haW5TdGF0
dXNCYXIuYXBwZW5kQ2hpbGQodGhpcy5zZXR0aW5nc0NvbnRyb2xsZXIuc3RhdHVzQmFySXRlbSk7
CiAgICAgfSwKIApAQCAtMzY1LDYgKzM3MCwyMCBAQCB2YXIgV2ViSW5zcGVjdG9yID0gewogICAg
IHsKICAgICAgICAgV2ViSW5zcGVjdG9yLnNldHRpbmdzLnpvb21MZXZlbC5zZXQodGhpcy5fem9v
bUxldmVsKTsKICAgICAgICAgSW5zcGVjdG9yRnJvbnRlbmRIb3N0LnNldFpvb21GYWN0b3IoTWF0
aC5wb3coMS4yLCB0aGlzLl96b29tTGV2ZWwpKTsKKyAgICB9LAorCisgICAgX3RvZ2dsZVNlYXJj
aGluZ0Zvck5vZGU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHZhciBlbmFibGVkID0gIXRo
aXMuX25vZGVTZWFyY2hCdXR0b24udG9nZ2xlZDsKKyAgICAgICAgLyoqCisgICAgICAgICAqIEBw
YXJhbSB7P1Byb3RvY29sLkVycm9yfSBlcnJvcgorICAgICAgICAgKi8KKyAgICAgICAgZnVuY3Rp
b24gY2FsbGJhY2soZXJyb3IpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghZXJyb3IpCisg
ICAgICAgICAgICAgICAgdGhpcy5fbm9kZVNlYXJjaEJ1dHRvbi50b2dnbGVkID0gZW5hYmxlZDsK
KyAgICAgICAgfQorICAgICAgICBXZWJJbnNwZWN0b3IuZG9tQWdlbnQuc2V0SW5zcGVjdE1vZGVF
bmFibGVkKGVuYWJsZWQsIGNhbGxiYWNrLmJpbmQodGhpcykpOwogICAgIH0KIH0KIApAQCAtNDk2
LDE0ICs1MTUsMTQgQEAgV2ViSW5zcGVjdG9yLl9kb0xvYWRlZERvbmVXaXRoQ2FwYWJpbGl0aWVz
ID0gZnVuY3Rpb24oKQogICAgIHRoaXMud29ya3NwYWNlID0gbmV3IFdlYkluc3BlY3Rvci5Xb3Jr
c3BhY2UoKTsKICAgICB0aGlzLmJyZWFrcG9pbnRNYW5hZ2VyID0gbmV3IFdlYkluc3BlY3Rvci5C
cmVha3BvaW50TWFuYWdlcihXZWJJbnNwZWN0b3Iuc2V0dGluZ3MuYnJlYWtwb2ludHMsIHRoaXMu
ZGVidWdnZXJNb2RlbCwgdGhpcy53b3Jrc3BhY2UpOwogCi0gICAgdGhpcy5fY3JlYXRlUGFuZWxz
KCk7CiAgICAgdGhpcy5fY3JlYXRlR2xvYmFsU3RhdHVzQmFySXRlbXMoKTsKIAogICAgIHRoaXMu
dG9vbGJhciA9IG5ldyBXZWJJbnNwZWN0b3IuVG9vbGJhcigpOwogICAgIFdlYkluc3BlY3Rvci5f
aW5zdGFsbERvY2tUb1JpZ2h0KCk7CiAKLSAgICBmb3IgKHZhciBwYW5lbE5hbWUgaW4gdGhpcy5w
YW5lbHMpCi0gICAgICAgIHRoaXMuYWRkUGFuZWwodGhpcy5wYW5lbHNbcGFuZWxOYW1lXSk7Cisg
ICAgdmFyIHBhbmVsRGVzY3JpcHRvcnMgPSB0aGlzLl9wYW5lbERlc2NyaXB0b3JzKCk7CisgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBwYW5lbERlc2NyaXB0b3JzLmxlbmd0aDsgKytpKQorICAgICAg
ICBXZWJJbnNwZWN0b3IuaW5zcGVjdG9yVmlldy5hZGRQYW5lbChwYW5lbERlc2NyaXB0b3JzW2ld
KTsKIAogICAgIHRoaXMuYWRkTWFpbkV2ZW50TGlzdGVuZXJzKGRvY3VtZW50KTsKIApAQCAtNTY5
LDExICs1ODgsNiBAQCBXZWJJbnNwZWN0b3IuX2luc3RhbGxEb2NrVG9SaWdodCA9IGZ1bmN0aW9u
KCkKICAgICB9CiB9CiAKLVdlYkluc3BlY3Rvci5hZGRQYW5lbCA9IGZ1bmN0aW9uKHBhbmVsKQot
ewotICAgIFdlYkluc3BlY3Rvci5pbnNwZWN0b3JWaWV3LmFkZFBhbmVsKHBhbmVsKTsKLX0KLQog
dmFyIHdpbmRvd0xvYWRlZCA9IGZ1bmN0aW9uKCkKIHsKICAgICB2YXIgbG9jYWxpemVkU3RyaW5n
c1VSTCA9IEluc3BlY3RvckZyb250ZW5kSG9zdC5sb2NhbGl6ZWRTdHJpbmdzVVJMKCk7CkBAIC02
NjUsNyArNjc5LDcgQEAgV2ViSW5zcGVjdG9yLmRvY3VtZW50Q2xpY2sgPSBmdW5jdGlvbihldmVu
dCkKICAgICAgICAgaWYgKHBhcnNlZFVSTCAmJiBwYXJzZWRVUkwuc2NoZW1lID09PSAid2Via2l0
LWxpbmstYWN0aW9uIikgewogICAgICAgICAgICAgaWYgKHBhcnNlZFVSTC5ob3N0ID09PSAic2hv
dy1wYW5lbCIpIHsKICAgICAgICAgICAgICAgICB2YXIgcGFuZWwgPSBwYXJzZWRVUkwucGF0aC5z
dWJzdHJpbmcoMSk7Ci0gICAgICAgICAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5wYW5lbHNbcGFu
ZWxdKQorICAgICAgICAgICAgICAgIGlmIChXZWJJbnNwZWN0b3IucGFuZWwocGFuZWwpKQogICAg
ICAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3Iuc2hvd1BhbmVsKHBhbmVsKTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIHJldHVybjsKQEAgLTY5MSwxMCArNzA1LDkgQEAgV2ViSW5zcGVj
dG9yLmRvY3VtZW50Q2xpY2sgPSBmdW5jdGlvbihldmVudCkKIFdlYkluc3BlY3Rvci5vcGVuUmVz
b3VyY2UgPSBmdW5jdGlvbihyZXNvdXJjZVVSTCwgaW5SZXNvdXJjZXNQYW5lbCkKIHsKICAgICB2
YXIgcmVzb3VyY2UgPSBXZWJJbnNwZWN0b3IucmVzb3VyY2VGb3JVUkwocmVzb3VyY2VVUkwpOwot
ICAgIGlmIChpblJlc291cmNlc1BhbmVsICYmIHJlc291cmNlKSB7Ci0gICAgICAgIFdlYkluc3Bl
Y3Rvci5zaG93UGFuZWwoInJlc291cmNlcyIpOwotICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxz
LnJlc291cmNlcy5zaG93UmVzb3VyY2UocmVzb3VyY2UpOwotICAgIH0gZWxzZQorICAgIGlmIChp
blJlc291cmNlc1BhbmVsICYmIHJlc291cmNlKQorICAgICAgICBXZWJJbnNwZWN0b3Iuc2hvd1Bh
bmVsKCJyZXNvdXJjZXMiKS5zaG93UmVzb3VyY2UocmVzb3VyY2UpOworICAgIGVsc2UKICAgICAg
ICAgSW5zcGVjdG9yRnJvbnRlbmRIb3N0Lm9wZW5Jbk5ld1RhYihyZXNvdXJjZVVSTCk7CiB9CiAK
QEAgLTgxNCw2ICs4MjcsMjIgQEAgV2ViSW5zcGVjdG9yLmRvY3VtZW50S2V5RG93biA9IGZ1bmN0
aW9uKGV2ZW50KQogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQorCisg
ICAgLy8gQ21kL0NvbnRyb2wgKyBTaGlmdCArIEMgc2hvdWxkIGJlIGEgc2hvcnRjdXQgdG8gY2xp
Y2tpbmcgdGhlIE5vZGUgU2VhcmNoIEJ1dHRvbi4KKyAgICAvLyBUaGlzIHNob3J0Y3V0IG1hdGNo
ZXMgRmlyZWJ1Zy4KKyAgICBpZiAoZXZlbnQua2V5SWRlbnRpZmllciA9PT0gIlUrMDA0MyIpIHsg
Ly8gQyBrZXkKKyAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5pc01hYygpKQorICAgICAgICAgICAg
dmFyIGlzTm9kZVNlYXJjaEtleSA9IGV2ZW50Lm1ldGFLZXkgJiYgIWV2ZW50LmN0cmxLZXkgJiYg
IWV2ZW50LmFsdEtleSAmJiBldmVudC5zaGlmdEtleTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgdmFyIGlzTm9kZVNlYXJjaEtleSA9IGV2ZW50LmN0cmxLZXkgJiYgIWV2ZW50Lm1ldGFLZXkg
JiYgIWV2ZW50LmFsdEtleSAmJiBldmVudC5zaGlmdEtleTsKKworICAgICAgICBpZiAoaXNOb2Rl
U2VhcmNoS2V5KSB7CisgICAgICAgICAgICB0aGlzLl90b2dnbGVTZWFyY2hpbmdGb3JOb2RlKCk7
CisgICAgICAgICAgICBldmVudC5jb25zdW1lKHRydWUpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisgICAgICAgIHJldHVybjsKKyAgICB9CiB9CiAKIFdlYkluc3BlY3Rvci5wb3N0
RG9jdW1lbnRLZXlEb3duID0gZnVuY3Rpb24oZXZlbnQpCkBAIC04NTMsMTQgKzg4Miw2IEBAIFdl
Ykluc3BlY3Rvci5jb250ZXh0TWVudUV2ZW50RmlyZWQgPSBmdW5jdGlvbihldmVudCkKICAgICAg
ICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKIH0KIAotV2ViSW5zcGVjdG9yLnRvZ2dsZVNlYXJj
aGluZ0Zvck5vZGUgPSBmdW5jdGlvbigpCi17Ci0gICAgaWYgKHRoaXMucGFuZWxzLmVsZW1lbnRz
KSB7Ci0gICAgICAgIHRoaXMuc2hvd1BhbmVsKCJlbGVtZW50cyIpOwotICAgICAgICB0aGlzLnBh
bmVscy5lbGVtZW50cy50b2dnbGVTZWFyY2hpbmdGb3JOb2RlKCk7Ci0gICAgfQotfQotCiBXZWJJ
bnNwZWN0b3Iuc2hvd0NvbnNvbGUgPSBmdW5jdGlvbigpCiB7CiAgICAgaWYgKFdlYkluc3BlY3Rv
ci5fdG9nZ2xlQ29uc29sZUJ1dHRvbiAmJiAhV2ViSW5zcGVjdG9yLl90b2dnbGVDb25zb2xlQnV0
dG9uLnRvZ2dsZWQpIHsKQEAgLTg3MiwxMyArODkzLDEyIEBAIFdlYkluc3BlY3Rvci5zaG93Q29u
c29sZSA9IGZ1bmN0aW9uKCkKIAogV2ViSW5zcGVjdG9yLnNob3dQYW5lbCA9IGZ1bmN0aW9uKHBh
bmVsKQogewotICAgIGlmICghKHBhbmVsIGluIHRoaXMucGFuZWxzKSkgewotICAgICAgICBpZiAo
V2ViSW5zcGVjdG9yLldvcmtlck1hbmFnZXIuaXNXb3JrZXJGcm9udGVuZCgpKQotICAgICAgICAg
ICAgcGFuZWwgPSAic2NyaXB0cyI7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHBhbmVsID0g
ImVsZW1lbnRzIjsKLSAgICB9Ci0gICAgV2ViSW5zcGVjdG9yLmluc3BlY3RvclZpZXcuc2V0Q3Vy
cmVudFBhbmVsKHRoaXMucGFuZWxzW3BhbmVsXSk7CisgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5p
bnNwZWN0b3JWaWV3LnNob3dQYW5lbChwYW5lbCk7Cit9CisKK1dlYkluc3BlY3Rvci5wYW5lbCA9
IGZ1bmN0aW9uKHBhbmVsKQoreworICAgIHJldHVybiBXZWJJbnNwZWN0b3IuaW5zcGVjdG9yVmll
dy5wYW5lbChwYW5lbCk7CiB9CiAKIFdlYkluc3BlY3Rvci5icmluZ1RvRnJvbnQgPSBmdW5jdGlv
bigpCkBAIC05NjUsNDUgKzk4NSw0NSBAQCBXZWJJbnNwZWN0b3IuaW5zcGVjdCA9IGZ1bmN0aW9u
KHBheWxvYWQsIGhpbnRzKQogewogICAgIHZhciBvYmplY3QgPSBXZWJJbnNwZWN0b3IuUmVtb3Rl
T2JqZWN0LmZyb21QYXlsb2FkKHBheWxvYWQpOwogICAgIGlmIChvYmplY3Quc3VidHlwZSA9PT0g
Im5vZGUiKSB7Ci0gICAgICAgIC8vIFJlcXVlc3Qgbm9kZSBmcm9tIGJhY2tlbmQgYW5kIGZvY3Vz
IGl0LgotICAgICAgICBXZWJJbnNwZWN0b3IuaW5zcGVjdG9yVmlldy5zZXRDdXJyZW50UGFuZWwo
V2ViSW5zcGVjdG9yLnBhbmVscy5lbGVtZW50cyk7Ci0gICAgICAgIG9iamVjdC5wdXNoTm9kZVRv
RnJvbnRlbmQoV2ViSW5zcGVjdG9yLnVwZGF0ZUZvY3VzZWROb2RlLmJpbmQoV2ViSW5zcGVjdG9y
KSwgb2JqZWN0LnJlbGVhc2UuYmluZChvYmplY3QpKTsKKyAgICAgICAgZnVuY3Rpb24gY2FsbGJh
Y2sobm9kZUlkKQorICAgICAgICB7CisgICAgICAgICAgICBXZWJJbnNwZWN0b3IuX3VwZGF0ZUZv
Y3VzZWROb2RlKG5vZGVJZCk7CisgICAgICAgICAgICBvYmplY3QucmVsZWFzZSgpOworICAgICAg
ICB9CisgICAgICAgIG9iamVjdC5wdXNoTm9kZVRvRnJvbnRlbmQoY2FsbGJhY2spOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKGhpbnRzLmRhdGFiYXNlSWQpIHsKLSAgICAgICAg
V2ViSW5zcGVjdG9yLmluc3BlY3RvclZpZXcuc2V0Q3VycmVudFBhbmVsKFdlYkluc3BlY3Rvci5w
YW5lbHMucmVzb3VyY2VzKTsKLSAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5yZXNvdXJjZXMu
c2VsZWN0RGF0YWJhc2UoaGludHMuZGF0YWJhc2VJZCk7Ci0gICAgfSBlbHNlIGlmIChoaW50cy5k
b21TdG9yYWdlSWQpIHsKLSAgICAgICAgV2ViSW5zcGVjdG9yLmluc3BlY3RvclZpZXcuc2V0Q3Vy
cmVudFBhbmVsKFdlYkluc3BlY3Rvci5wYW5lbHMucmVzb3VyY2VzKTsKLSAgICAgICAgV2ViSW5z
cGVjdG9yLnBhbmVscy5yZXNvdXJjZXMuc2VsZWN0RE9NU3RvcmFnZShoaW50cy5kb21TdG9yYWdl
SWQpOwotICAgIH0KKyAgICBpZiAoaGludHMuZGF0YWJhc2VJZCkKKyAgICAgICAgV2ViSW5zcGVj
dG9yLnNob3dQYW5lbCgicmVzb3VyY2VzIikuc2VsZWN0RGF0YWJhc2UoaGludHMuZGF0YWJhc2VJ
ZCk7CisgICAgZWxzZSBpZiAoaGludHMuZG9tU3RvcmFnZUlkKQorICAgICAgICBXZWJJbnNwZWN0
b3Iuc2hvd1BhbmVsKCJyZXNvdXJjZXMiKS5zZWxlY3RET01TdG9yYWdlKGhpbnRzLmRvbVN0b3Jh
Z2VJZCk7CiAKICAgICBvYmplY3QucmVsZWFzZSgpOwogfQogCi1XZWJJbnNwZWN0b3IudXBkYXRl
Rm9jdXNlZE5vZGUgPSBmdW5jdGlvbihub2RlSWQpCitXZWJJbnNwZWN0b3IuX3VwZGF0ZUZvY3Vz
ZWROb2RlID0gZnVuY3Rpb24obm9kZUlkKQogewotICAgIHRoaXMucGFuZWxzLmVsZW1lbnRzLnJl
dmVhbEFuZFNlbGVjdE5vZGUobm9kZUlkKTsKKyAgICBpZiAoV2ViSW5zcGVjdG9yLl9ub2RlU2Vh
cmNoQnV0dG9uLnRvZ2dsZWQpIHsKKyAgICAgICAgSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmJyaW5n
VG9Gcm9udCgpOworICAgICAgICBXZWJJbnNwZWN0b3IuX25vZGVTZWFyY2hCdXR0b24udG9nZ2xl
ZCA9IGZhbHNlOworICAgIH0KKyAgICBXZWJJbnNwZWN0b3Iuc2hvd1BhbmVsKCJlbGVtZW50cyIp
LnJldmVhbEFuZFNlbGVjdE5vZGUobm9kZUlkKTsKIH0KIAogV2ViSW5zcGVjdG9yLl9zaG93QW5j
aG9yTG9jYXRpb24gPSBmdW5jdGlvbihhbmNob3IpCiB7CiAgICAgaWYgKFdlYkluc3BlY3Rvci5v
cGVuQW5jaG9yTG9jYXRpb25SZWdpc3RyeS5kaXNwYXRjaCh7IHVybDogYW5jaG9yLmhyZWYsIGxp
bmVOdW1iZXI6IGFuY2hvci5saW5lTnVtYmVyfSkpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAg
IHZhciBwcmVmZXJyZWRQYW5lbHMgPSBbXTsKLSAgICBpZiAodGhpcy5wYW5lbHNbYW5jaG9yLnBy
ZWZlcnJlZFBhbmVsXSkKLSAgICAgICAgcHJlZmVycmVkUGFuZWxzLnB1c2godGhpcy5wYW5lbHNb
YW5jaG9yLnByZWZlcnJlZFBhbmVsXSk7Ci0gICAgaWYgKHRoaXMucGFuZWxzLnNjcmlwdHMpCi0g
ICAgICAgIHByZWZlcnJlZFBhbmVscy5wdXNoKHRoaXMucGFuZWxzLnNjcmlwdHMpOwotICAgIGlm
ICh0aGlzLnBhbmVscy5yZXNvdXJjZXMpCi0gICAgICAgIHByZWZlcnJlZFBhbmVscy5wdXNoKHRo
aXMucGFuZWxzLnJlc291cmNlcyk7Ci0gICAgaWYgKHRoaXMucGFuZWxzLm5ldHdvcmspCi0gICAg
ICAgIHByZWZlcnJlZFBhbmVscy5wdXNoKHRoaXMucGFuZWxzLm5ldHdvcmspOwotICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgcHJlZmVycmVkUGFuZWxzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgIGlm
IChXZWJJbnNwZWN0b3IuX3Nob3dBbmNob3JMb2NhdGlvbkluUGFuZWwoYW5jaG9yLCBwcmVmZXJy
ZWRQYW5lbHNbaV0pKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQorICAgIHZhciBw
cmVmZXJyZWRQYW5lbCA9IHRoaXMucGFuZWxzW2FuY2hvci5wcmVmZXJyZWRQYW5lbF07CisgICAg
aWYgKHByZWZlcnJlZFBhbmVsICYmIFdlYkluc3BlY3Rvci5fc2hvd0FuY2hvckxvY2F0aW9uSW5Q
YW5lbChhbmNob3IsIHByZWZlcnJlZFBhbmVsKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
aWYgKFdlYkluc3BlY3Rvci5fc2hvd0FuY2hvckxvY2F0aW9uSW5QYW5lbChhbmNob3IsIHRoaXMu
cGFuZWxzLnNjcmlwdHMpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoV2ViSW5zcGVj
dG9yLl9zaG93QW5jaG9yTG9jYXRpb25JblBhbmVsKGFuY2hvciwgdGhpcy5wYW5lbCgicmVzb3Vy
Y2VzIikpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoV2ViSW5zcGVjdG9yLl9zaG93
QW5jaG9yTG9jYXRpb25JblBhbmVsKGFuY2hvciwgdGhpcy5wYW5lbHMubmV0d29yaykpCisgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtMTAzMSw4ICsxMDUx
LDcgQEAgV2ViSW5zcGVjdG9yLnNob3dQYW5lbEZvckFuY2hvck5hdmlnYXRpb24gPSBmdW5jdGlv
bihwYW5lbCkKIAogV2ViSW5zcGVjdG9yLnNob3dQcm9maWxlRm9yVVJMID0gZnVuY3Rpb24odXJs
KQogewotICAgIFdlYkluc3BlY3Rvci5zaG93UGFuZWwoInByb2ZpbGVzIik7Ci0gICAgV2ViSW5z
cGVjdG9yLnBhbmVscy5wcm9maWxlcy5zaG93UHJvZmlsZUZvclVSTCh1cmwpOworICAgIFdlYklu
c3BlY3Rvci5zaG93UGFuZWwoInByb2ZpbGVzIikuc2hvd1Byb2ZpbGVGb3JVUkwodXJsKTsKIH0K
IAogV2ViSW5zcGVjdG9yLmV2YWx1YXRlSW5Db25zb2xlID0gZnVuY3Rpb24oZXhwcmVzc2lvbiwg
c2hvd1Jlc3VsdE9ubHkpCkBAIC0xMDU1LDEwICsxMDc0LDMgQEAgV2ViSW5zcGVjdG9yLmZyb250
ZW5kUmV1c2VkID0gZnVuY3Rpb24oKQogewogICAgIHRoaXMucmVzb3VyY2VUcmVlTW9kZWwuZnJv
bnRlbmRSZXVzZWQoKTsKIH0KLQotV2ViSW5zcGVjdG9yLl90b29sYmFySXRlbUNsaWNrZWQgPSBm
dW5jdGlvbihldmVudCkKLXsKLSAgICB2YXIgdG9vbGJhckl0ZW0gPSBldmVudC5jdXJyZW50VGFy
Z2V0OwotICAgIFdlYkluc3BlY3Rvci5pbnNwZWN0b3JWaWV3LnNldEN1cnJlbnRQYW5lbCh0b29s
YmFySXRlbS5wYW5lbCk7Ci19Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBlYjFhNDQ0NThjMGU2ZTUzM2FiYjU5OTFlM2Zl
NmQ0MzQ3YmI4MjVhLi4wMWM0MTRhNDAyMWFmZTEzZmJiZjc5ZjE5OWNmYWQxYTIxZWRiMjlhIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMzggQEAKKzIwMTItMDgtMTYgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1h
bkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogYnVpbGQgRWxlbWVudHMs
IFJlc291cmNlcywgVGltZWxpbmUsIEF1ZGl0cyBhbmQgQ29uc29sZSBwYW5lbHMgbGF6aWx5Lgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQyMjIKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0dHAvdGVz
dHMvaW5zcGVjdG9yL2VsZW1lbnRzLXRlc3QuanM6CisgICAgICAgIChpbml0aWFsaXplX0VsZW1l
bnRUZXN0Lkluc3BlY3RvclRlc3Quc2VsZWN0Tm9kZVdpdGhJZC5vbk5vZGVGb3VuZCk6CisgICAg
ICAgIChpbml0aWFsaXplX0VsZW1lbnRUZXN0Lkluc3BlY3RvclRlc3Quc2VsZWN0Tm9kZVdpdGhJ
ZCk6CisgICAgICAgIChpbml0aWFsaXplX0VsZW1lbnRUZXN0Lkluc3BlY3RvclRlc3QuZXhwYW5k
RWxlbWVudHNUcmVlKToKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9leHRlbnNpb25z
LXRlc3QuanM6CisgICAgICAgIChpbml0aWFsaXplX0V4dGVuc2lvbnNUZXN0Lkluc3BlY3RvclRl
c3Quc2hvd1BhbmVsKToKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0LWVs
ZW1lbnQuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZS1oYXIt
cGFnZXMuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZS10cmVl
L3Jlc291cmNlLXRyZWUtZnJhbWUtYWRkLmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvcmVzb3VyY2UtdHJlZS9yZXNvdXJjZS10cmVlLW5vbi11bmlxdWUtdXJsLmh0bWw6Cisg
ICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2UtdHJlZS9yZXNvdXJjZS10cmVl
LXJlbG9hZC5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlLXRy
ZWUvcmVzb3VyY2UtdHJlZS10ZXN0LmpzOgorICAgICAgICAoaW5pdGlhbGl6ZV9SZXNvdXJjZVRy
ZWVUZXN0Lkluc3BlY3RvclRlc3QuZHVtcFJlc291cmNlc1RyZWUpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9jb25zb2xlL2NvbW1hbmQtbGluZS1hcGktaW5zcGVjdC5odG1sOgorICAgICAgICAqIGlu
c3BlY3Rvci9kZWJ1Z2dlci9kb20tYnJlYWtwb2ludHMuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvZGVidWdnZXIvc291cmNlLWZyYW1lLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2VsZW1l
bnRzL2VkaXQtZG9tLWFjdGlvbnMuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZWxlbWVudHMv
ZWxlbWVudHMtaW1nLXRvb2x0aXAuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZWxlbWVudHMv
ZWxlbWVudHMtcGFuZWwtbGltaXRlZC1jaGlsZHJlbi5odG1sOgorICAgICAgICAqIGluc3BlY3Rv
ci9lbGVtZW50cy9oaWdobGlnaHQtbm9kZS1zY2FsZWQuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvZXh0ZW5zaW9ucy9leHRlbnNpb25zLXBhbmVsLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9y
L2V4dGVuc2lvbnMvZXh0ZW5zaW9ucy1zaWRlYmFyLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9y
L3N0eWxlcy9mb3JjZS1wc2V1ZG8tc3RhdGUuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc3R5
bGVzL3NldC1wcm9wZXJ0eS1ib3VuZGFyaWVzLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL3N0
eWxlcy9zdHlsZXMtbmV3LUFQSS5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci90aW1lbGluZS90
aW1lbGluZS10ZXN0LmpzOgorICAgICAgICAoaW5pdGlhbGl6ZV9UaW1lbGluZS5JbnNwZWN0b3JU
ZXN0LnN0b3BUaW1lbGluZSk6CisKIDIwMTItMDgtMTYgIFlvc2hpZnVtaSBJbm91ZSAgPHlvc2lu
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBbVGVzdHNdIFJlbW92ZSByZWR1bmRhbnQgdGV4dCBm
cm9tIGZhc3QvZm9ybXMvcmVzb3VyY2VzL2NvbW1vbi1jaGFuZ2UtdHlwZS1vbi1mb2N1cy5qcwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMtdGVz
dC5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzLXRlc3QuanMK
aW5kZXggNDI2ZDdiMTdmOWVmNGRmMjRkYTdlYTJmMGU1MDJhM2M2NWIxZTYzMC4uMjcyMjA0NTRh
ZGRkNGYwZWFkOWM5YmY4YmE2ZDIzYmI0ZWQxZWY2NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMtdGVzdC5qcworKysgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9lbGVtZW50cy10ZXN0LmpzCkBAIC02Myw3ICs2Myw3IEBAIElu
c3BlY3RvclRlc3Quc2VsZWN0Tm9kZVdpdGhJZCA9IGZ1bmN0aW9uKGlkVmFsdWUsIGNhbGxiYWNr
KQogICAgIGZ1bmN0aW9uIG9uTm9kZUZvdW5kKG5vZGUpCiAgICAgewogICAgICAgICBpZiAobm9k
ZSkKLSAgICAgICAgICAgIFdlYkluc3BlY3Rvci51cGRhdGVGb2N1c2VkTm9kZShub2RlLmlkKTsK
KyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5fdXBkYXRlRm9jdXNlZE5vZGUobm9kZS5pZCk7CiAg
ICAgICAgIGNhbGxiYWNrKG5vZGUpOwogICAgIH0KICAgICBJbnNwZWN0b3JUZXN0Lm5vZGVXaXRo
SWQoaWRWYWx1ZSwgb25Ob2RlRm91bmQpOwpAQCAtNDA3LDcgKzQwNyw3IEBAIEluc3BlY3RvclRl
c3QuZXhwYW5kRWxlbWVudHNUcmVlID0gZnVuY3Rpb24oY2FsbGJhY2spCiAgICAgICAgIGV4cGFu
ZChXZWJJbnNwZWN0b3IucGFuZWxzLmVsZW1lbnRzLnRyZWVPdXRsaW5lKTsKICAgICAgICAgY2Fs
bGJhY2soKTsKICAgICB9Ci0gICAgV2ViSW5zcGVjdG9yLmluc3BlY3RvclZpZXcuc2V0Q3VycmVu
dFBhbmVsKFdlYkluc3BlY3Rvci5wYW5lbHMuZWxlbWVudHMpOworICAgIFdlYkluc3BlY3Rvci5z
aG93UGFuZWwoImVsZW1lbnRzIik7CiAgICAgSW5zcGVjdG9yVGVzdC5maW5kTm9kZShmdW5jdGlv
bigpIHsgcmV0dXJuIGZhbHNlOyB9LCBvbkFsbE5vZGVzQXZhaWxhYmxlKTsKIH07CiAKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMtdGVzdC5q
cyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMtdGVzdC5qcwpp
bmRleCBjNjZjNTc5NzdmNTJlNWQ0NzcyNTAyYTRiYzU5OWQyMWIzNTRhNTJjLi4zMjcxNjM3ZDkx
Mzk2ODZhMzZjMTU4NzkxMDlmZTU3YmNhOGM3NDg3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zLXRlc3QuanMKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy10ZXN0LmpzCkBAIC0zNiw3ICszNiw3IEBA
IHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgSW5zcGVjdG9yVGVzdC5zYWZlV3Jh
cChvbk1lc3NhZ2UpLCBmYWxzZSk7CiBJbnNwZWN0b3JUZXN0LnNob3dQYW5lbCA9IGZ1bmN0aW9u
KHBhbmVsSWQpCiB7CiAgICAgaWYgKHBhbmVsSWQgPT09ICJleHRlbnNpb24iKQotICAgICAgICBw
YW5lbElkID0gV2ViSW5zcGVjdG9yLmluc3BlY3RvclZpZXcuX3BhbmVsT3JkZXJbV2ViSW5zcGVj
dG9yLmluc3BlY3RvclZpZXcuX3BhbmVsT3JkZXIubGVuZ3RoIC0gMV0ubmFtZTsKKyAgICAgICAg
cGFuZWxJZCA9IFdlYkluc3BlY3Rvci5pbnNwZWN0b3JWaWV3Ll9wYW5lbE9yZGVyW1dlYkluc3Bl
Y3Rvci5pbnNwZWN0b3JWaWV3Ll9wYW5lbE9yZGVyLmxlbmd0aCAtIDFdOwogICAgIFdlYkluc3Bl
Y3Rvci5zaG93UGFuZWwocGFuZWxJZCk7CiB9CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3QtZWxlbWVudC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdC1lbGVtZW50Lmh0bWwKaW5kZXggYzg3YmFhNWRkMWYw
ZTBiNTQ3NjA4ODg1YzQ4NGFiOGZjN2IyZGUwOC4uOTNhMzA1NDVjNzIyMmFmNjVmODY1ZjNhYWI2
MDQxOWE5M2Y1YmVjMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0
b3IvaW5zcGVjdC1lbGVtZW50Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvaW5zcGVjdC1lbGVtZW50Lmh0bWwKQEAgLTYsOCArNiw4IEBACiAKIGZ1bmN0aW9uIHRl
c3QoKQogewotICAgIFdlYkluc3BlY3Rvci5pbnNwZWN0b3JWaWV3LnNldEN1cnJlbnRQYW5lbChX
ZWJJbnNwZWN0b3IucGFuZWxzLmVsZW1lbnRzKTsKLSAgICBXZWJJbnNwZWN0b3IucGFuZWxzLmVs
ZW1lbnRzLnRyZWVPdXRsaW5lLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkVsZW1lbnRz
VHJlZU91dGxpbmUuRXZlbnRzLlNlbGVjdGVkTm9kZUNoYW5nZWQsIHNlbGVjdGVkTm9kZUNoYW5n
ZWQsIHRoaXMpOworICAgIFdlYkluc3BlY3Rvci5zaG93UGFuZWwoImVsZW1lbnRzIikudHJlZU91
dGxpbmUuCisgICAgICAgIGFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJl
ZU91dGxpbmUuRXZlbnRzLlNlbGVjdGVkTm9kZUNoYW5nZWQsIHNlbGVjdGVkTm9kZUNoYW5nZWQs
IHRoaXMpOwogICAgIGZ1bmN0aW9uIHNlbGVjdGVkTm9kZUNoYW5nZWQoZXZlbnQpCiAgICAgewog
ICAgICAgICB2YXIgbm9kZSA9IGV2ZW50LmRhdGE7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZS1oYXItcGFnZXMuaHRtbCBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlLWhhci1wYWdlcy5odG1sCmluZGV4IGM1N2Qx
NGUzZWU1ZTVmYzczNmViMGY0ZmI0ZTZiZThhMWVkOGQ0NWQuLmU1ZDYyYzAxZmM2YzVmY2RlNWQw
YTFlOGE4M2EyZDczNWE0NmMzMzkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL3Jlc291cmNlLWhhci1wYWdlcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlLWhhci1wYWdlcy5odG1sCkBAIC0yMiw3ICsyMiw3IEBA
IHZhciB0ZXN0ID0gZnVuY3Rpb24oKQogICAgICAgICAgICAgICAgIHN0ZXAyKCk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgV2ViSW5zcGVjdG9yLmluc3BlY3RvclZpZXcuc2V0
Q3VycmVudFBhbmVsKFdlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yayk7CisgICAgICAgIFdlYklu
c3BlY3Rvci5zaG93UGFuZWwoIm5ldHdvcmsiKTsKICAgICAgICAgdmFyIG5ldHdvcmtMb2dWaWV3
ID0gV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLl9uZXR3b3JrTG9nVmlldzsKICAgICAgICAg
Ly8gbmV0d29ya0xvZ1ZpZXcuY2xlYXIoKTsKICAgICAgICAgbmV0d29ya0xvZ1ZpZXcuX3ByZXNl
cnZlTG9nVG9nZ2xlLnRvZ2dsZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2UtdHJlZS9yZXNvdXJjZS10cmVlLWZyYW1lLWFkZC5o
dG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2UtdHJlZS9yZXNv
dXJjZS10cmVlLWZyYW1lLWFkZC5odG1sCmluZGV4IDc1Yjk1Zjg2MjMxNjM2ZjlhMGQ0MWMwNmFl
YWJiYTFkMWVmMzQ2ZGIuLjE3ZGFjMjdmZTM2Y2YzMjBiMmFkZTI1YWNiOGU3ZWYzZDhmYWRjNDQg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlLXRy
ZWUvcmVzb3VyY2UtdHJlZS1mcmFtZS1hZGQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luc3BlY3Rvci9yZXNvdXJjZS10cmVlL3Jlc291cmNlLXRyZWUtZnJhbWUtYWRkLmh0bWwK
QEAgLTIzLDYgKzIzLDcgQEAgZnVuY3Rpb24gb25JZnJhbWVMb2FkKCkKIAogZnVuY3Rpb24gdGVz
dCgpCiB7CisgICAgV2ViSW5zcGVjdG9yLnNob3dQYW5lbCgicmVzb3VyY2VzIik7CiAgICAgSW5z
cGVjdG9yVGVzdC5ydW5BZnRlclJlc291cmNlc0FyZUZpbmlzaGVkKFsicmVzb3VyY2UtdHJlZS1m
cmFtZS1hZGQuaHRtbCIsICJyZXNvdXJjZS10cmVlLXRlc3QuanMiLCAic3R5bGVzLWluaXRpYWwu
Y3NzIl0sIHN0ZXAxKTsKIAogICAgIGZ1bmN0aW9uIHN0ZXAxKCkKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlLXRyZWUvcmVzb3VyY2UtdHJlZS1u
b24tdW5pcXVlLXVybC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVz
b3VyY2UtdHJlZS9yZXNvdXJjZS10cmVlLW5vbi11bmlxdWUtdXJsLmh0bWwKaW5kZXggOWQ2MDE1
NjQ4MWI1MzVhYjNmZDBiYzc2YjQ0YjM0OGRkMTVlYWI0YS4uMzdmMThjYTcyYTRhZDNkZDFmMGIx
M2VkYTQ0Y2ExMjM4ZDIwMjBhZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9p
bnNwZWN0b3IvcmVzb3VyY2UtdHJlZS9yZXNvdXJjZS10cmVlLW5vbi11bmlxdWUtdXJsLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2UtdHJlZS9yZXNv
dXJjZS10cmVlLW5vbi11bmlxdWUtdXJsLmh0bWwKQEAgLTE0LDcgKzE0LDcgQEAgZnVuY3Rpb24g
bG9hZElmcmFtZSgpCiBmdW5jdGlvbiB0ZXN0KCkKIHsKICAgICBJbnNwZWN0b3JUZXN0LmFkZFNu
aWZmZXIoV2ViSW5zcGVjdG9yLlJlc291cmNlc1BhbmVsLnByb3RvdHlwZSwgIl9yZXNvdXJjZUFk
ZGVkIiwgb25SZXNvdXJjZSwgdHJ1ZSk7Ci0gICAgV2ViSW5zcGVjdG9yLnBhbmVscy5yZXNvdXJj
ZXMuc2hvdygpOworICAgIFdlYkluc3BlY3Rvci5zaG93UGFuZWwoInJlc291cmNlcyIpOwogCiAg
ICAgdmFyIGNzc1JlcXVlc3RzQ291bnQgPSAwOwogICAgIGZ1bmN0aW9uIG9uUmVzb3VyY2UoZXZl
bnQpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJj
ZS10cmVlL3Jlc291cmNlLXRyZWUtcmVsb2FkLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9yZXNvdXJjZS10cmVlL3Jlc291cmNlLXRyZWUtcmVsb2FkLmh0bWwKaW5kZXgg
YWUyYzA4NWEyMWQ1MTMzYzRhYzczZGI0N2VhMGM3OTRkMjA4NGMyYi4uOWFiMmUxNDlhYWVjYjY3
ODUxODM5YjdmNjhmMDk4NzcyN2EyOGQyYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2UtdHJlZS9yZXNvdXJjZS10cmVlLXJlbG9hZC5odG1sCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlLXRyZWUvcmVzb3Vy
Y2UtdHJlZS1yZWxvYWQuaHRtbApAQCAtMTAsNiArMTAsOCBAQAogCiBmdW5jdGlvbiB0ZXN0KCkK
IHsKKyAgICBXZWJJbnNwZWN0b3Iuc2hvd1BhbmVsKCJyZXNvdXJjZXMiKTsKKwogICAgIEluc3Bl
Y3RvclRlc3QucmVsb2FkUGFnZShzdGVwMSk7CiAKICAgICBmdW5jdGlvbiBzdGVwMSgpCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZS10cmVlL3Jl
c291cmNlLXRyZWUtdGVzdC5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jl
c291cmNlLXRyZWUvcmVzb3VyY2UtdHJlZS10ZXN0LmpzCmluZGV4IGVhZTc1NjRkMDU0OWY2MDFi
NGVlNTBiMTJhMDNmNGU3MDVlNDU0YzcuLjBkNTZiMzIwNjYwN2M3NTY3ZmQ5ZTI4M2VjZWQwNzkw
ZTQ0NDg1MWIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jl
c291cmNlLXRyZWUvcmVzb3VyY2UtdHJlZS10ZXN0LmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlLXRyZWUvcmVzb3VyY2UtdHJlZS10ZXN0LmpzCkBAIC02
NSw3ICs2NSw3IEBAIEluc3BlY3RvclRlc3QuZHVtcFJlc291cmNlc1RyZWUgPSBmdW5jdGlvbigp
CiAgICAgfQogCiAgICAgV2ViSW5zcGVjdG9yLmluc3BlY3RvclZpZXcuc2V0Q3VycmVudFBhbmVs
KFdlYkluc3BlY3Rvci5wYW5lbHMucmVzb3VyY2VzKTsKLSAgICBkdW1wKFdlYkluc3BlY3Rvci5w
YW5lbHMucmVzb3VyY2VzLnJlc291cmNlc0xpc3RUcmVlRWxlbWVudCwgIiIpOworICAgIGR1bXAo
V2ViSW5zcGVjdG9yLnBhbmVsKCJyZXNvdXJjZXMiKS5yZXNvdXJjZXNMaXN0VHJlZUVsZW1lbnQs
ICIiKTsKIH0KIAogSW5zcGVjdG9yVGVzdC5kdW1wUmVzb3VyY2VUcmVlRXZlcnl0aGluZyA9IGZ1
bmN0aW9uKCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9jb25zb2xlL2NvbW1h
bmQtbGluZS1hcGktaW5zcGVjdC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUv
Y29tbWFuZC1saW5lLWFwaS1pbnNwZWN0Lmh0bWwKaW5kZXggZmFiODVhYzRmMzhhOTgxZGVlYzNk
YjMxNTNiMTVlZjIzMWQ0NDNlNS4uOTM1NTk0ZDIxNjc4OTdkODBhOGQ2N2I4NWNjYmRiMTgxNTI5
ZGNlMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUvY29tbWFuZC1s
aW5lLWFwaS1pbnNwZWN0Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUv
Y29tbWFuZC1saW5lLWFwaS1pbnNwZWN0Lmh0bWwKQEAgLTMyLDcgKzMyLDcgQEAgZnVuY3Rpb24g
dGVzdCgpCiAgICAgSW5zcGVjdG9yVGVzdC5ydW5UZXN0U3VpdGUoWwogICAgICAgICBmdW5jdGlv
biB0ZXN0UmV2ZWFsRWxlbWVudChuZXh0KQogICAgICAgICB7Ci0gICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmFkZFNuaWZmZXIoV2ViSW5zcGVjdG9yLCAidXBkYXRlRm9jdXNlZE5vZGUiLCBzdGVw
Mik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFNuaWZmZXIoV2ViSW5zcGVjdG9yLCAi
X3VwZGF0ZUZvY3VzZWROb2RlIiwgc3RlcDIpOwogICAgICAgICAgICAgZXZhbEFuZER1bXAoImlu
c3BlY3QoJCgncDEnKSkiKTsKIAogICAgICAgICAgICAgZnVuY3Rpb24gc3RlcDIoKQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2RvbS1icmVha3BvaW50cy5odG1s
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2RvbS1icmVha3BvaW50cy5odG1sCmlu
ZGV4IDgwZGQ0ZDkyNzY1MzYxYWJmMzIwYjQyNzM0NzZkZDMyNDY3NjhmMzguLjlmYjM4MzYzYjBj
ODUzMTc3ZDAwYjkzZTI3OTJlZWEzYzQ0NjQ1YmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9kZWJ1Z2dlci9kb20tYnJlYWtwb2ludHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZGVidWdnZXIvZG9tLWJyZWFrcG9pbnRzLmh0bWwKQEAgLTU3LDcgKzU3LDcgQEAg
ZnVuY3Rpb24gYnJlYWtEZWJ1Z2dlcigpCiAKIGZ1bmN0aW9uIHRlc3QoKQogewotICAgIFdlYklu
c3BlY3Rvci5pbnNwZWN0b3JWaWV3LnNldEN1cnJlbnRQYW5lbChXZWJJbnNwZWN0b3IucGFuZWxz
LmVsZW1lbnRzKTsKKyAgICBXZWJJbnNwZWN0b3Iuc2hvd1BhbmVsKCJlbGVtZW50cyIpOwogCiAg
ICAgdmFyIHBhbmUgPSBXZWJJbnNwZWN0b3IuZG9tQnJlYWtwb2ludHNTaWRlYmFyUGFuZTsKICAg
ICB2YXIgcm9vdEVsZW1lbnQ7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVi
dWdnZXIvc291cmNlLWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIv
c291cmNlLWZyYW1lLmh0bWwKaW5kZXggNGE4NzkwNjAzMTZlYTVkNDQyOTk1MGM3ZGM5YWM4NTcy
YWY2MGFhOC4uNGY3YjY2NjQzMjViMDVkZmYyN2YzMzYyMGNhNjJiNmYxMzIzMTk3YyAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NvdXJjZS1mcmFtZS5odG1sCisr
KyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zb3VyY2UtZnJhbWUuaHRtbApAQCAt
MTcsNyArMTcsNyBAQCBmdW5jdGlvbiBtZXRob2RGb3JCcmVha3BvaW50KCkKIAogZnVuY3Rpb24g
dGVzdCgpCiB7Ci0gICAgV2ViSW5zcGVjdG9yLmluc3BlY3RvclZpZXcuc2V0Q3VycmVudFBhbmVs
KFdlYkluc3BlY3Rvci5wYW5lbHMucmVzb3VyY2VzKTsKKyAgICBXZWJJbnNwZWN0b3Iuc2hvd1Bh
bmVsKCJyZXNvdXJjZXMiKTsKICAgICBJbnNwZWN0b3JUZXN0LnJ1bkRlYnVnZ2VyVGVzdFN1aXRl
KFsKICAgICAgICAgZnVuY3Rpb24gdGVzdFNldEJyZWFrcG9pbnQobmV4dCkKICAgICAgICAgewpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzL2VkaXQtZG9tLWFjdGlv
bnMuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9lbGVtZW50cy9lZGl0LWRvbS1hY3Rpb25z
Lmh0bWwKaW5kZXggZjZkODNmY2Y5NjhhNjMwOWRkNDg0YjI5MTUxMGQ5NWVlY2QzYTNlNi4uYmYz
ODZlODFhMDNmYzdhZWM0ZDdkYzU5Zjc1ZWI0YmZmYjgzYTYxMSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzL2VkaXQtZG9tLWFjdGlvbnMuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMvZWRpdC1kb20tYWN0aW9ucy5odG1sCkBAIC0xMDYs
NyArMTA2LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAgICAgICAgdmFyIGNoaWxkTm9k
ZXMgPSB0ZXN0Tm9kZS5jaGlsZHJlbjsKICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsg
aSA8IGNoaWxkTm9kZXMubGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKGNo
aWxkTm9kZXNbaV0ubm9kZVR5cGUoKSA9PT0gOCkgewotICAgICAgICAgICAgICAgICAgICAgICAg
V2ViSW5zcGVjdG9yLnVwZGF0ZUZvY3VzZWROb2RlKGNoaWxkTm9kZXNbaV0uaWQpOworICAgICAg
ICAgICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLl91cGRhdGVGb2N1c2VkTm9kZShjaGlsZE5v
ZGVzW2ldLmlkKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKGNoaWxkTm9kZXNb
aV0pOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAg
ICB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMvZWxlbWVudHMt
aW1nLXRvb2x0aXAuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9lbGVtZW50cy9lbGVtZW50
cy1pbWctdG9vbHRpcC5odG1sCmluZGV4IDFlMDA5YTQ1NTU5Yjg3ZjAwMDE2ZTExOWQwYWVlODM1
MGFiN2ZlYjYuLmRiMGExMjEyNjBjNGJjNzk1NzdjZTcwYmVjOGFkYzc0MGQ5ZWYyOGMgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9lbGVtZW50cy9lbGVtZW50cy1pbWctdG9vbHRp
cC5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9lbGVtZW50cy9lbGVtZW50cy1pbWct
dG9vbHRpcC5odG1sCkBAIC03LDcgKzcsNyBAQAogCiB2YXIgdGVzdCA9IGZ1bmN0aW9uKCkKIHsK
LSAgICBXZWJJbnNwZWN0b3IuaW5zcGVjdG9yVmlldy5zZXRDdXJyZW50UGFuZWwoV2ViSW5zcGVj
dG9yLnBhbmVscy5lbGVtZW50cyk7CisgICAgV2ViSW5zcGVjdG9yLnNob3dQYW5lbCgiZWxlbWVu
dHMiKTsKIAogICAgIHZhciB0cmVlRWxlbWVudDsKICAgICBJbnNwZWN0b3JUZXN0Lm5vZGVXaXRo
SWQoImltYWdlIiwgc3RlcDEpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Vs
ZW1lbnRzL2VsZW1lbnRzLXBhbmVsLWxpbWl0ZWQtY2hpbGRyZW4uaHRtbCBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9lbGVtZW50cy9lbGVtZW50cy1wYW5lbC1saW1pdGVkLWNoaWxkcmVuLmh0bWwK
aW5kZXggODEyODc3ZDlhZTE4Mzk1MGMzYzgxNjZiNWQ4ZDMwOTU5NzNlNjM2YS4uZDhmMWJiZDE2
ODRkMTc1YjEzZDUyOTU2NzJmNTczYzJkOGIyZTNjMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2VsZW1lbnRzL2VsZW1lbnRzLXBhbmVsLWxpbWl0ZWQtY2hpbGRyZW4uaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMvZWxlbWVudHMtcGFuZWwtbGltaXRl
ZC1jaGlsZHJlbi5odG1sCkBAIC0xOCw3ICsxOCw3IEBAIGZ1bmN0aW9uIGluc2VydE5vZGUoKQog
ZnVuY3Rpb24gdGVzdCgpCiB7CiAgICAgdmFyIGRhdGFUcmVlRWxlbWVudDsKLSAgICBXZWJJbnNw
ZWN0b3IuaW5zcGVjdG9yVmlldy5zZXRDdXJyZW50UGFuZWwoV2ViSW5zcGVjdG9yLnBhbmVscy5l
bGVtZW50cyk7CisgICAgV2ViSW5zcGVjdG9yLnNob3dQYW5lbCgiZWxlbWVudHMiKTsKICAgICBJ
bnNwZWN0b3JUZXN0Lm5vZGVXaXRoSWQoImRhdGEiLCBzdGVwMSk7CiAKICAgICBmdW5jdGlvbiBz
dGVwMShub2RlKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzL2hp
Z2hsaWdodC1ub2RlLXNjYWxlZC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRz
L2hpZ2hsaWdodC1ub2RlLXNjYWxlZC5odG1sCmluZGV4IDBlNzlmY2QyYjhiZTlhOWQzMzM3Y2Q2
NzExZjhlNDIwYzZiNGE5ODIuLjkzNzQ4ZTJkN2VhYWRmNDhmZjEwNDFlYTE1ZjMwZmI1OGJkNjEz
ZTAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9lbGVtZW50cy9oaWdobGlnaHQt
bm9kZS1zY2FsZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMvaGln
aGxpZ2h0LW5vZGUtc2NhbGVkLmh0bWwKQEAgLTMwLDcgKzMwLDcgQEAgZnVuY3Rpb24gb25sb2Fk
KCkKICAgICAKIGZ1bmN0aW9uIHRlc3QoKQogewotICAgIFdlYkluc3BlY3Rvci5pbnNwZWN0b3JW
aWV3LnNldEN1cnJlbnRQYW5lbChXZWJJbnNwZWN0b3IucGFuZWxzLmVsZW1lbnRzKTsKKyAgICBX
ZWJJbnNwZWN0b3Iuc2hvd1BhbmVsKCJlbGVtZW50cyIpOwogICAgIFdlYkluc3BlY3Rvci5wYW5l
bHMuZWxlbWVudHMudHJlZU91dGxpbmUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRWxl
bWVudHNUcmVlT3V0bGluZS5FdmVudHMuU2VsZWN0ZWROb2RlQ2hhbmdlZCwgc2VsZWN0ZWROb2Rl
Q2hhbmdlZCwgdGhpcyk7CiAKICAgICBmdW5jdGlvbiBzZWxlY3RlZE5vZGVDaGFuZ2VkKGV2ZW50
KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMvZXh0ZW5zaW9u
cy1wYW5lbC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMvZXh0ZW5zaW9u
cy1wYW5lbC5odG1sCmluZGV4IDljMjViMTFhYTFhZWY3OTE1MzE5Yzc4NzQzZmY2OTg2ZmM1ZDE5
NzcuLmIyMjQwZGM4ZjdiMGU2ZDZhMjUwZjZmMTEyYjNkOWI4NDgwNWVhY2EgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zL2V4dGVuc2lvbnMtcGFuZWwuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy9leHRlbnNpb25zLXBhbmVsLmh0
bWwKQEAgLTEyLDcgKzEyLDYgQEAgZnVuY3Rpb24gaW5pdGlhbGl6ZV9leHRlbnNpb25zUGFuZWxU
ZXN0KCkKIHsKICAgICBJbnNwZWN0b3JUZXN0LmdldFBhbmVsU2l6ZSA9IGZ1bmN0aW9uKCkKICAg
ICB7Ci0gICAgICAgIHZhciBleHRlbnNpb25QYW5lbCA9IFdlYkluc3BlY3Rvci5pbnNwZWN0b3JW
aWV3Ll9wYW5lbE9yZGVyW1dlYkluc3BlY3Rvci5pbnNwZWN0b3JWaWV3Ll9wYW5lbE9yZGVyLmxl
bmd0aCAtIDFdOwogICAgICAgICB2YXIgYm91bmRpbmdSZWN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoIm1haW4tcGFuZWxzIikuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CiAgICAgICAgIHJl
dHVybiB7CiAgICAgICAgICAgICB3aWR0aDogYm91bmRpbmdSZWN0LndpZHRoLApAQCAtNDcsNyAr
NDYsNyBAQCBmdW5jdGlvbiBpbml0aWFsaXplX2V4dGVuc2lvbnNQYW5lbFRlc3QoKQogICAgIHsK
ICAgICAgICAgV2ViSW5zcGVjdG9yLnNob3dQYW5lbCgiY29uc29sZSIpOwogICAgICAgICB2YXIg
eHBhdGhSZXN1bHQgPSBkb2N1bWVudC5ldmFsdWF0ZSgiLy9hW3N0YXJ0cy13aXRoKC4sICdleHRl
bnNpb25zLXBhbmVsLmh0bWwnKV0iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLmNvbnNvbGUuZWxlbWVudCwgbnVsbCwgWFBh
dGhSZXN1bHQuQU5ZX1VOT1JERVJFRF9OT0RFX1RZUEUsIG51bGwpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWwoImNvbnNvbGUi
KS5lbGVtZW50LCBudWxsLCBYUGF0aFJlc3VsdC5BTllfVU5PUkRFUkVEX05PREVfVFlQRSwgbnVs
bCk7CiAgICAgICAgIHZhciBjbGljayA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCJNb3VzZUV2ZW50
Iik7CiAgICAgICAgIGNsaWNrLmluaXRNb3VzZUV2ZW50KCJjbGljayIsIHRydWUsIHRydWUpOwog
ICAgICAgICB4cGF0aFJlc3VsdC5zaW5nbGVOb2RlVmFsdWUuZGlzcGF0Y2hFdmVudChjbGljayk7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy9leHRlbnNpb25z
LXNpZGViYXIuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zL2V4dGVuc2lv
bnMtc2lkZWJhci5odG1sCmluZGV4IDEzODY1MDY3YmQ3MmYwZDczODgzMjRkODY2NzNhNWEzN2Fl
MGNhZjkuLjJkNTQ5NWQxZDE2NWM3Yzc4YWNkM2JiNjlmZTZlNTg1ZTFiM2RlMDQgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zL2V4dGVuc2lvbnMtc2lkZWJhci5o
dG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zL2V4dGVuc2lvbnMtc2lk
ZWJhci5odG1sCkBAIC04LDcgKzgsNyBAQCBmdW5jdGlvbiBpbml0aWFsaXplX2V4dGVuc2lvbnNT
aWRlYmFyVGVzdCgpCiB7CiAgICAgSW5zcGVjdG9yVGVzdC5kdW1wU2lkZWJhckNvbnRlbnQgPSBm
dW5jdGlvbihjYWxsYmFjaykKICAgICB7Ci0gICAgICAgIHZhciBzaWRlYmFyUGFuZXMgPSBXZWJJ
bnNwZWN0b3IucGFuZWxzLmVsZW1lbnRzLnNpZGViYXJQYW5lczsKKyAgICAgICAgdmFyIHNpZGVi
YXJQYW5lcyA9IFdlYkluc3BlY3Rvci5wYW5lbCgiZWxlbWVudHMiKS5zaWRlYmFyUGFuZXM7CiAg
ICAgICAgIC8vIHRoZSBzaWRlYmFyIG9mIGludGVyZXN0IGlzIHByZXN1bWVkIHRvIGFsd2F5cyBi
ZSBsYXN0LgogICAgICAgICB2YXIgc2lkZWJhciA9IHNpZGViYXJQYW5lc1tPYmplY3Qua2V5cyhz
aWRlYmFyUGFuZXMpLnBvcCgpXTsKICAgICAgICAgSW5zcGVjdG9yVGVzdC5ydW5BZnRlclBlbmRp
bmdEaXNwYXRjaGVzKGZ1bmN0aW9uKCkgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL3N0eWxlcy9mb3JjZS1wc2V1ZG8tc3RhdGUuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9zdHlsZXMvZm9yY2UtcHNldWRvLXN0YXRlLmh0bWwKaW5kZXggYTYxNDZkZDkyMTJjMTEyZjk2
MTQxNmY2YjgzZGRhN2YyMmUzZmIwZi4uZTk1ZTQ2MTk2ZDMyZmJlZDBhY2RmMGFlM2U2YmYzYWFh
MjkwNmU4OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9mb3JjZS1w
c2V1ZG8tc3RhdGUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL2ZvcmNl
LXBzZXVkby1zdGF0ZS5odG1sCkBAIC02LDcgKzYsNyBAQAogCiBmdW5jdGlvbiB0ZXN0KCkKIHsK
LSAgICBXZWJJbnNwZWN0b3IuaW5zcGVjdG9yVmlldy5zZXRDdXJyZW50UGFuZWwoV2ViSW5zcGVj
dG9yLnBhbmVscy5lbGVtZW50cyk7CisgICAgV2ViSW5zcGVjdG9yLnNob3dQYW5lbCgiZWxlbWVu
dHMiKTsKIAogICAgIEluc3BlY3RvclRlc3Qubm9kZVdpdGhJZCgiZGl2IiwgZm91bmREaXYpOwog
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3NldC1wcm9wZXJ0eS1i
b3VuZGFyaWVzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3NldC1wcm9wZXJ0
eS1ib3VuZGFyaWVzLmh0bWwKaW5kZXggOTJhOTVkNjU1NmUzMzU0ODlmYjY2OGYzYzEwYTcwMTI5
OGUxMDhkOC4uZDU2YTE1ZTQ0NTUxNmE0Mjk5NTFiMjVhZGI4MTQ5N2UwY2YyNmM4OCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9zZXQtcHJvcGVydHktYm91bmRhcmll
cy5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvc2V0LXByb3BlcnR5LWJv
dW5kYXJpZXMuaHRtbApAQCAtMTMsNyArMTMsNyBAQCBoMSB7CiAKIGZ1bmN0aW9uIHRlc3QoKQog
ewotICAgIFdlYkluc3BlY3Rvci5pbnNwZWN0b3JWaWV3LnNldEN1cnJlbnRQYW5lbChXZWJJbnNw
ZWN0b3IucGFuZWxzLmVsZW1lbnRzKTsKKyAgICBXZWJJbnNwZWN0b3Iuc2hvd1BhbmVsKCJlbGVt
ZW50cyIpOwogICAgIENTU0FnZW50LmdldEFsbFN0eWxlU2hlZXRzKHN0eWxlU2hlZXRJbmZvc0xv
YWRlZCk7CiAKICAgICBmdW5jdGlvbiBzdHlsZVNoZWV0SW5mb3NMb2FkZWQoZXJyb3IsIGluZm9z
KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMtbmV3LUFQ
SS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMtbmV3LUFQSS5odG1s
CmluZGV4IGQ1MGJhMjE0YzNmYzYzNmFlNmNhNWVjZGUwMGVmYmNlYzQyMjUyNWUuLjVlNmYzOTNk
YjgyN2RkMjU1ZmQzNzZiYjhkZjA5M2NjZTQ3ZmQ2YTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9zdHlsZXMvc3R5bGVzLW5ldy1BUEkuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3Ivc3R5bGVzL3N0eWxlcy1uZXctQVBJLmh0bWwKQEAgLTksNyArOSw3IEBACiAKIGZ1
bmN0aW9uIHRlc3QoKQogewotICAgIFdlYkluc3BlY3Rvci5pbnNwZWN0b3JWaWV3LnNldEN1cnJl
bnRQYW5lbChXZWJJbnNwZWN0b3IucGFuZWxzLmVsZW1lbnRzKTsKKyAgICBXZWJJbnNwZWN0b3Iu
c2hvd1BhbmVsKCJlbGVtZW50cyIpOwogCiAgICAgdGVzdF9zdHlsZXMoKTsKIApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3RpbWVsaW5lL3RpbWVsaW5lLXRlc3QuanMgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvdGltZWxpbmUvdGltZWxpbmUtdGVzdC5qcwppbmRleCA5ZTY5OTM1
M2UxMzBmZjA5ODk1NTE2OTA3Yzc5MDgzNDkyNjY3MTFiLi4yMTk5MDkzOWRkNTBkNDU1ODAzN2Vm
ZTA0YzhmY2U0MjQ1YTc5MGY0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGlt
ZWxpbmUvdGltZWxpbmUtdGVzdC5qcworKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdGltZWxp
bmUvdGltZWxpbmUtdGVzdC5qcwpAQCAtMjYsOCArMjYsOCBAQCBJbnNwZWN0b3JUZXN0LnRpbWVs
aW5lUHJvcGVydHlGb3JtYXR0ZXJzID0gewogSW5zcGVjdG9yVGVzdC5zdGFydFRpbWVsaW5lID0g
ZnVuY3Rpb24oY2FsbGJhY2spCiB7CiAgICAgSW5zcGVjdG9yVGVzdC5fdGltZWxpbmVSZWNvcmRz
ID0gW107Ci0gICAgV2ViSW5zcGVjdG9yLnBhbmVscy50aW1lbGluZS50b2dnbGVUaW1lbGluZUJ1
dHRvbi50b2dnbGVkID0gdHJ1ZTsKLSAgICBXZWJJbnNwZWN0b3IucGFuZWxzLnRpbWVsaW5lLl9t
b2RlbC5fY29sbGVjdGlvbkVuYWJsZWQgPSB0cnVlOworICAgIFdlYkluc3BlY3Rvci5wYW5lbCgi
dGltZWxpbmUiKS50b2dnbGVUaW1lbGluZUJ1dHRvbi50b2dnbGVkID0gdHJ1ZTsKKyAgICBXZWJJ
bnNwZWN0b3IucGFuZWwoInRpbWVsaW5lIikuX21vZGVsLl9jb2xsZWN0aW9uRW5hYmxlZCA9IHRy
dWU7CiAgICAgVGltZWxpbmVBZ2VudC5zdGFydChjYWxsYmFjayk7CiAgICAgZnVuY3Rpb24gYWRk
UmVjb3JkKHJlY29yZCkKICAgICB7CkBAIC02Miw4ICs2Miw4IEBAIEluc3BlY3RvclRlc3Quc3Rv
cFRpbWVsaW5lID0gZnVuY3Rpb24oY2FsbGJhY2spCiB7CiAgICAgZnVuY3Rpb24gZGlkU3RvcCgp
CiAgICAgewotICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLnRpbWVsaW5lLnRvZ2dsZVRpbWVs
aW5lQnV0dG9uLnRvZ2dsZWQgPSBmYWxzZTsKLSAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy50
aW1lbGluZS5fbW9kZWwuX2NvbGxlY3Rpb25FbmFibGVkID0gZmFsc2U7CisgICAgICAgIFdlYklu
c3BlY3Rvci5wYW5lbCgidGltZWxpbmUiKS50b2dnbGVUaW1lbGluZUJ1dHRvbi50b2dnbGVkID0g
ZmFsc2U7CisgICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbCgidGltZWxpbmUiKS5fbW9kZWwuX2Nv
bGxlY3Rpb25FbmFibGVkID0gZmFsc2U7CiAgICAgICAgIGNhbGxiYWNrKEluc3BlY3RvclRlc3Qu
X3RpbWVsaW5lUmVjb3Jkcyk7CiAgICAgfQogICAgIFRpbWVsaW5lQWdlbnQuc3RvcChkaWRTdG9w
KTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>