<?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>205138</bug_id>
          
          <creation_ts>2019-12-11 15:03:55 -0800</creation_ts>
          <short_desc>Web Inspector: add TabNavigation diagnostic event and related hooks</short_desc>
          <delta_ts>2019-12-16 15:28:34 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Blaze Burg">bburg</reporter>
          <assigned_to name="Blaze Burg">bburg</assigned_to>
          <cc>bburg</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>hi</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1597810</commentid>
    <comment_count>0</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2019-12-11 15:03:55 -0800</bug_when>
    <thetext>.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1597811</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-12-11 15:04:14 -0800</bug_when>
    <thetext>&lt;rdar://problem/57855456&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1597819</commentid>
    <comment_count>2</comment_count>
      <attachid>385451</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2019-12-11 15:36:14 -0800</bug_when>
    <thetext>Created attachment 385451
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1598273</commentid>
    <comment_count>3</comment_count>
      <attachid>385451</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-12-12 23:10:17 -0800</bug_when>
    <thetext>Comment on attachment 385451
Patch

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

r=me, nice work!

&gt; Source/WebInspectorUI/ChangeLog:102
&gt; +        Treat each tab button a a &quot;button click&quot;.

&quot;a a&quot; :(

&gt; Source/WebInspectorUI/UserInterface/Base/Main.js:679
&gt; +        let options = {initiatorHint: WI.TabBrowser.TabNavigationInitiator.KeyboardShortcut};
&gt; +        WI.tabBrowser.showTabForContentView(WI.settingsTabContentView, options);

Personally, I would either just inline these objects or put the key/value on a separate line.

&gt; Source/WebInspectorUI/UserInterface/Base/Main.js:1023
&gt; +    WI.showRepresentedObject(WI._consoleRepresentedObject, null, options);

Style: please add a `const cookie = null;` and use that instead of the hardcoded value.

&gt; Source/WebInspectorUI/UserInterface/Base/Main.js:1388
&gt; +    // Classify this as a keyboard shortcut, as the only other way to get to Search tab is via TabBar itself.

NIT: we normally capitalize &quot;Tab&quot; when referring to things like &quot;Search Tab&quot;.

&gt; Source/WebInspectorUI/UserInterface/Base/Main.js:1991
&gt; +    let initiatorHint = event.data.initiatorHint || WI.TabBrowser.TabNavigationInitiator.Inspect;
&gt; +    let options = {initiatorHint};

You could combine these:
```
    let options = {
        initiatorHint: event.data.initiatorHint || WI.TabBrowser.TabNavigationInitiator.Inspect,
    };
```

&gt; Source/WebInspectorUI/UserInterface/Base/Main.js:2893
&gt; +    options.initiatorHint = WI.TabBrowser.TabNavigationInitiator.LinkClick;

When we potentially override options like these, perhaps we should assert that they aren&apos;t previously set?  That way, it&apos;s more discoverable why something isn&apos;t working as expected.

&gt; Source/WebInspectorUI/UserInterface/Controllers/DOMManager.js:472
&gt; +        let initiatorHint = options.initiatorHint || WI.TabBrowser.TabNavigationInitiator.Inspect;
&gt; +        this.dispatchEventToListeners(WI.DOMManager.Event.DOMNodeWasInspected, {node, initiatorHint});

Ditto (Main.js:1990)

&gt; Source/WebInspectorUI/UserInterface/Controllers/TabNavigationDiagnosticEventRecorder.js:51
&gt; +        let outgoingTabType = event.data.outgoingTab.identifier;
&gt; +        let incomingTabType = event.data.incomingTab.identifier;
&gt; +        let initiator = WI.TabNavigationDiagnosticEventRecorder.tabBrowserInitiatorToEventInitiator(event.data.initiator || WI.TabBrowser.TabNavigationInitiator.Unknown);

Rather than continually referring to `event.data.*`, you could destructure at the beginning of the function.
```
    let {initiator, outgoingTab, incomingTab} = event.data;
```

&gt; Source/WebInspectorUI/UserInterface/Controllers/TabNavigationDiagnosticEventRecorder.js:85
&gt; +        default:
&gt; +            console.error(&quot;Unhandled initiator type: &quot; + tabBrowserInitiator);

I prefer putting the &quot;default&quot; case outside of the `switch` altogether, that way a static analyzer could theoretically notice that some `case` was missing.  Also, it&apos;s more obvious than a `default`.

Also, we should at least `return null;` if we hit an error.

&gt; Source/WebInspectorUI/UserInterface/Protocol/InspectorFrontendAPI.js:88
&gt; +        WI.showConsoleTab(null, options);

Style: please add a `const requestedScope = null;` and use that instead of a hardcoded value.

&gt; Source/WebInspectorUI/UserInterface/Views/LogContentView.js:847
&gt; +        WI.showConsoleTab(null, options);

Ditto (InspectorFrontendAPI.js:88)

&gt; Source/WebInspectorUI/UserInterface/Views/TabBar.js:364
&gt; +    selectTabBarItemWithInitiator(tabBarItem, initiator)

What about just `selectTabBarItem(tabBarItem, options = {})` and have `set selectedTabBarItem(tabBarItem)` pass through to this function instead?  That way, if we ever wanted to add more `options`, we can do so with minimal friction.  See `WI.ScopeBarItem.prototype.set selected` for an example.

&gt; Source/WebInspectorUI/UserInterface/Views/TabBar.js:366
&gt; +        this._currentTabNavigationRequestInitiator = initiator;

Please add this value to the `constructor()` so setting it later on doesn&apos;t cause a structure change.

&gt; Source/WebInspectorUI/UserInterface/Views/TabBrowser.js:184
&gt; +        this._currentTabNavigationRequestOptions = options;

Why not just save `this._currentTabNavigationRequestInitiator` instead?

Ditto (TabBar.js:364)

&gt; Source/WebInspectorUI/UserInterface/Views/TabBrowser.js:265
&gt; +        let unknownInitiator = WI.TabBrowser.TabNavigationInitiator.Unknown;

Why not just inline this?  If you rename to `this._currentTabNavigationRequestInitiator` the length of it shouldn&apos;t be a problem.

&gt; Source/WebInspectorUI/UserInterface/Views/TabBrowser.js:270
&gt; +        let inferredInitiator = unknownInitiator;
&gt; +        if (event.data.initiatorHint)
&gt; +            inferredInitiator = event.data.initiatorHint;
&gt; +        if (inferredInitiator === unknownInitiator &amp;&amp; this._currentTabNavigationRequestOptions &amp;&amp; this._currentTabNavigationRequestOptions.initiatorHint)
&gt; +            inferredInitiator = this._currentTabNavigationRequestOptions.initiatorHint;

Why not just `event.data.initiatorHint || this._currentTabNavigationRequestInitiator || WI.TabBrowser.TabNavigationInitiator.Unknown`, which you could then inline in the `dispatchEventToListeners`?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1599161</commentid>
    <comment_count>4</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2019-12-16 15:28:34 -0800</bug_when>
    <thetext>Committed r253591: &lt;https://trac.webkit.org/changeset/253591&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385451</attachid>
            <date>2019-12-11 15:36:14 -0800</date>
            <delta_ts>2019-12-12 23:10:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205138-20191211153613.patch</filename>
            <type>text/plain</type>
            <size>53368</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzMzAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCAx
NTBmN2E5YjJjZmYzZjkxMGI1ZDg3ZTkxOTNhMzIxZjc2Mjg3MmM0Li5lYTI4YzRiZTA3NTBhMjI1
NjYwYjMxNTZjMTU1YzgxMjc2NWMwNjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNDAgQEAKKzIwMTktMTItMTEgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgV2ViIEluc3BlY3RvcjogYWRkIFRhYk5hdmlnYXRpb24gZGlhZ25vc3RpYyBldmVu
dCBhbmQgcmVsYXRlZCBob29rcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjA1MTM4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81Nzg1NTQ1Nj4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNo
IGFkZHMgYSBuZXcgcmVjb3JkZXIgZm9yIHRoZSBUYWJOYXZpZ2F0aW9uIGRpYWdub3N0aWMgZXZl
bnQuCisKKyAgICAgICAgVGhlIGJ1bGsgb2YgdGhpcyBwYXRjaCBpcyB0byBmaW5kIGFsbCBjYWxs
c2l0ZXMgdGhhdCBjYW4gcG9zc2libHkgY2hhbmdlIHRoZSBhY3RpdmUKKyAgICAgICAgdGFiIGFu
ZCBhbm5vdGF0ZSB0aGVtIHdpdGggdGhlIHR5cGUgb2YgaW50ZXJhY3Rpb24gKHRhYiBjbGljaywg
bGluayBjbGljaywKKyAgICAgICAga2V5Ym9hcmQgc2hvcnRjdXQsIGluc3BlY3QsIGFuZCBvdGhl
cnMpLiBUaGlzIHBhdGNoIHdhcyBkZXZlbG9wZWQgdGhyb3VnaAorICAgICAgICB0cmlhbCBhbmQg
ZXJyb3IgYnkgbG9nZ2luZyB0aGUgZGlhZ25vc3RpYyBldmVudHMgYW5kIGRlYnVnZ2luZyBhbnkg
c2NlbmFyaW9zCisgICAgICAgIHdoZXJlIGEgdGFiIG5hdmlnYXRpb24gaXMgbm90IGNvcnJlY3Rs
eSBhbm5vdGF0ZWQgd2l0aCB0aGUgaW5pdGlhdGluZyBpbnRlcmFjdGlvbi4KKworICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvTWFpbi5odG1sOiBBZGQgbmV3IGZpbGUuCisgICAgICAgICogVXNlcklu
dGVyZmFjZS9CYXNlL01haW4uanM6CisgICAgICAgIChXSS5jb250ZW50TG9hZGVkKTogUmVnaXN0
ZXIgbmV3IHJlY29yZGVyLgorICAgICAgICAoV0kuX2hhbmRsZVNldHRpbmdzS2V5Ym9hcmRTaG9y
dGN1dCk6IEFubm90YXRlIGFzIGtleWJvYXJkIHNob3J0Y3V0LgorICAgICAgICAtIEFkZCBvcHRp
b25zIGFyZ3VtZW50IHRvIG1vc3QgV0kuc2hvdypUYWIgZnVuY3Rpb25zLCBhbmQgZm9yd2FyZCB0
byB0aGUgdW5kZXJseWluZworICAgICAgICBUYWJCcm93c2VyIG9yIFRhYkJhciBjYWxscy4gVGhp
cyBhbGxvd3MgaW5pdGlhdG9ySGludCB0byBiZSB1c2VkIGluIHRoZXNlIGNhc2VzLgorICAgICAg
ICAtIEFkZCBvdGhlciBhbm5vdGF0aW9ucyB0byBsaW5raWZ5RWxlbWVudAorCisgICAgICAgICog
VXNlckludGVyZmFjZS9WaWV3cy9UYWJCcm93c2VyLmpzOgorICAgICAgICAoV0kuVGFiQnJvd3Nl
ci5wcm90b3R5cGUuc2hvd1RhYkZvckNvbnRlbnRWaWV3KToKKyAgICAgICAgKFdJLlRhYkJyb3dz
ZXIucHJvdG90eXBlLl90YWJCYXJJdGVtU2VsZWN0ZWQpOgorICAgICAgICAtIFRyeSB0byBpbmZl
ciBhbiBpbml0aWF0b3IgZm9yIHRoZSB0YWIgbmF2aWdhdGlvbiBmcm9tIFRhYkJyb3dzZXIgQVBJ
IGFyZ3VtZW50cyBvciBmcm9tIFRhYkJhcidzIGV2ZW50LgorICAgICAgICAtIEFkZCBhbiBlbnVt
IHdpdGggVGFiTmF2aWdhdGlvbkluaXRpYXRvciB2YWx1ZXMuCisKKyAgICAgICAgKiBVc2VySW50
ZXJmYWNlL0Jhc2UvRE9NVXRpbGl0aWVzLmpzOgorICAgICAgICBDbGlja2FibGUgZWxlbWVudCBs
aW5rcyBzaG91bGQgYmUgcmVwb3J0ZWQgYXMgbGluayBjbGlja3MuIEFkZCBhbiBhbm5vdGF0aW9u
CisgICAgICAgIHNvIHRoYXQgaXQgaXNuJ3QgcmVwb3J0ZWQgYXMgIkluc3BlY3QiIChkdWUgdG8g
Z29pbmcgdGhyb3VnaCBET01NYW5hZ2VyLmluc3BlY3RFbGVtZW50KS4KKworICAgICAgICAqIFVz
ZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQ2FsbEZyYW1lVHJlZUNvbnRyb2xsZXIuanM6CisgICAg
ICAgIChXSS5DYWxsRnJhbWVUcmVlQ29udHJvbGxlcik6CisgICAgICAgIChXSS5DYWxsRnJhbWVU
cmVlQ29udHJvbGxlci5wcm90b3R5cGUuX3Nob3dTb3VyY2VDb2RlTG9jYXRpb24pOgorICAgICAg
ICBUaGlzIGlzIG1haW5seSB1c2VkIGJ5IENhbnZhcyB0YWIuIEFubm90YXRlIGNhbGwgZnJhbWUg
bGlua3MgYXMgbGluayBjbGlja3MuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRyb2xs
ZXJzL0RPTU1hbmFnZXIuanM6CisgICAgICAgIChXSS5ET01NYW5hZ2VyLnByb3RvdHlwZS5pbnNw
ZWN0RWxlbWVudCk6CisgICAgICAgIEFjY2VwdCBhbiBvcHRpb25zIGFyZ3VtZW50LiBUaGlzIGlz
IHVzZWQgdG8gZm9yd2FyZCB0aGUgaW5pdGlhdG9ySGludCB0bworICAgICAgICB0aGUgbGlzdGVu
ZXIgb2YgdGhpcyBldmVudCwgV0kuX2RvbU5vZGVXYXNJbnNwZWN0ZWQsIHNvIGl0IGNhbiBmb3J3
YXJkIHRoZQorICAgICAgICBpbml0aWF0b3JIaW50IGZ1cnRoZXIgb24uCisKKyAgICAgICAgKiBV
c2VySW50ZXJmYWNlL1Byb3RvY29sL0luc3BlY3RvckZyb250ZW5kQVBJLmpzOgorICAgICAgICAo
SW5zcGVjdG9yRnJvbnRlbmRBUEkuc2V0VGltZWxpbmVQcm9maWxpbmdFbmFibGVkKToKKyAgICAg
ICAgKEluc3BlY3RvckZyb250ZW5kQVBJLnNob3dDb25zb2xlKToKKyAgICAgICAgKEluc3BlY3Rv
ckZyb250ZW5kQVBJLnNob3dSZXNvdXJjZXMpOgorICAgICAgICAoSW5zcGVjdG9yRnJvbnRlbmRB
UEkuc2hvd1RpbWVsaW5lcyk6CisgICAgICAgIChJbnNwZWN0b3JGcm9udGVuZEFQSS5zaG93TWFp
blJlc291cmNlRm9yRnJhbWUpOgorICAgICAgICBBbm5vdGF0ZSB0aGVzZSBhcyBGcm9udGVuZEFQ
SSBjYWxscy4gTWFpbmx5IHVzZWQgYnkgRGV2ZWxvcCBtZW51IGl0ZW1zIGluIFNhZmFyaS4KKwor
ICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvQ29udGV4dE1lbnVVdGlsaXRpZXMuanM6Cisg
ICAgICAgIChXSS5hcHBlbmRDb250ZXh0TWVudUl0ZW1zRm9yU291cmNlQ29kZSk6CisgICAgICAg
IChXSS5hcHBlbmRDb250ZXh0TWVudUl0ZW1zRm9yVVJMKToKKyAgICAgICAgQW5ub3RhdGUgYXMg
Y29udGV4dCBtZW51LgorCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9ET01Ob2RlVHJl
ZUVsZW1lbnQuanM6CisgICAgICAgIChXSS5ET01Ob2RlVHJlZUVsZW1lbnQpOgorICAgICAgICAo
V0kuRE9NTm9kZVRyZWVFbGVtZW50LnByb3RvdHlwZS5wb3B1bGF0ZUNvbnRleHRNZW51KToKKyAg
ICAgICAgQW5ub3RhdGUgYXMgY29udGV4dCBtZW51LgorCisgICAgICAgICogVXNlckludGVyZmFj
ZS9WaWV3cy9ET01UcmVlRWxlbWVudC5qczoKKyAgICAgICAgKFdJLkRPTVRyZWVFbGVtZW50LnBy
b3RvdHlwZS5fYnVpbGRUYWdET00pOgorCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdz
L0RlZmF1bHREYXNoYm9hcmRWaWV3LmpzOgorICAgICAgICAoV0kuRGVmYXVsdERhc2hib2FyZFZp
ZXcucHJvdG90eXBlLl9yZXNvdXJjZXNJdGVtV2FzQ2xpY2tlZCk6CisgICAgICAgIChXSS5EZWZh
dWx0RGFzaGJvYXJkVmlldy5wcm90b3R5cGUuX25ldHdvcmtJdGVtV2FzQ2xpY2tlZCk6CisgICAg
ICAgIChXSS5EZWZhdWx0RGFzaGJvYXJkVmlldy5wcm90b3R5cGUuX3RpbWVsaW5lSXRlbVdhc0Ns
aWNrZWQpOgorICAgICAgICAoV0kuRGVmYXVsdERhc2hib2FyZFZpZXcucHJvdG90eXBlLl9jb25z
b2xlSXRlbVdhc0NsaWNrZWQpOgorICAgICAgICBBbm5vdGF0ZSBhcyBkYXNoYm9hcmQuCisKKyAg
ICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0xlZ2FjeVRhYkJhci5qczoKKyAgICAgICAgKFdJ
LkxlZ2FjeVRhYkJhci5wcm90b3R5cGUuc2V0IHNlbGVjdGVkVGFiQmFySXRlbSk6CisgICAgICAg
IEluY2x1ZGUgdGhlIGluZmVycmVkIGluaXRpYXRvciBpbiB0aGUgZXZlbnQgdGhhdCBpcyBkaXNw
YXRjaGVkLgorCisgICAgICAgIChXSS5MZWdhY3lUYWJCYXIucHJvdG90eXBlLnNlbGVjdFRhYkJh
ckl0ZW1XaXRoSW5pdGlhdG9yKToKKyAgICAgICAgQWRkZWQuIFRoaXMgaXMgYSBjb252ZW5pZW5j
ZSBtZXRob2QgdGhhdCB0ZW1wb3JhcmlseSBzZXRzIHRoZQorICAgICAgICBpbml0aWF0b3IgYmVm
b3JlIGludm9raW5nIHRoZSBzZXR0ZXIgKHdoaWNoIHJlYWRzIHRoZSBpbml0YXRvcikuCisKKyAg
ICAgICAgKFdJLkxlZ2FjeVRhYkJhci5wcm90b3R5cGUuX2hhbmRsZU1vdXNlRG93bik6CisgICAg
ICAgIChXSS5MZWdhY3lUYWJCYXIucHJvdG90eXBlLl9oYW5kbGVDbGljayk6CisgICAgICAgIChX
SS5MZWdhY3lUYWJCYXIucHJvdG90eXBlLl9oYW5kbGVOZXdUYWJDbGljayk6CisgICAgICAgIFRy
ZWF0IHRoZXNlIGFzICJ0YWIgY2xpY2tzIi4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmll
d3MvVGFiQmFyLmpzOgorICAgICAgICAoV0kuVGFiQmFyLnByb3RvdHlwZS5zZXQgc2VsZWN0ZWRU
YWJCYXJJdGVtKToKKyAgICAgICAgKFdJLlRhYkJhci5wcm90b3R5cGUuc2VsZWN0VGFiQmFySXRl
bVdpdGhJbml0aWF0b3IpOgorICAgICAgICAoV0kuVGFiQmFyLnByb3RvdHlwZS5faGFuZGxlTW91
c2VEb3duKToKKyAgICAgICAgKFdJLlRhYkJhci5wcm90b3R5cGUuX2hhbmRsZUNsaWNrKToKKyAg
ICAgICAgQ2hhbmdlcyBmcm9tIExlZ2FjeVRhYkJhciBoYXZlIGJlZW4gY29waWVkIHRvIHRoaXMg
dmVyc2lvbiwgYXMgaXQncyBhCisgICAgICAgIGRyb3AtaW4gcmVwbGFjZW1lbnQuCisKKyAgICAg
ICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0xvZ0NvbnRlbnRWaWV3LmpzOgorICAgICAgICAoV0ku
TG9nQ29udGVudFZpZXcucHJvdG90eXBlLl9zaG93Q29uc29sZVRhYik6CisgICAgICAgIFRyZWF0
IHRoZSBjb25zb2xlIGNoZXZyb24gYXMgYSAiYnV0dG9uIGNsaWNrIi4KKworICAgICAgICAqIFVz
ZXJJbnRlcmZhY2UvVmlld3MvTmV3VGFiQ29udGVudFZpZXcuanM6CisgICAgICAgIChXSS5OZXdU
YWJDb250ZW50Vmlldy5wcm90b3R5cGUuX2NyZWF0ZU5ld1RhYldpdGhUeXBlKToKKyAgICAgICAg
VHJlYXQgZWFjaCB0YWIgYnV0dG9uIGEgYSAiYnV0dG9uIGNsaWNrIi4KKworICAgICAgICAqIFVz
ZXJJbnRlcmZhY2UvVmlld3MvUmVjb3JkaW5nQWN0aW9uVHJlZUVsZW1lbnQuanM6CisgICAgICAg
IChXSS5SZWNvcmRpbmdBY3Rpb25UcmVlRWxlbWVudC5wcm90b3R5cGUucG9wdWxhdGVDb250ZXh0
TWVudSk6CisgICAgICAgIEFubm90YXRlIGFzIGNvbnRleHQgbWVudS4KKworICAgICAgICAqIFVz
ZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VUaW1lbGluZURhdGFHcmlkTm9kZS5qczoKKyAgICAg
ICAgKFdJLlJlc291cmNlVGltZWxpbmVEYXRhR3JpZE5vZGUucHJvdG90eXBlLl9kYXRhR3JpZE5v
ZGVHb1RvQXJyb3dDbGlja2VkKToKKyAgICAgICAgQW5ub3RhdGUgYXMgbGluayBjbGljay4KKwor
ICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvU2VhcmNoUmVzdWx0VHJlZUVsZW1lbnQuanM6
CisgICAgICAgIChXSS5TZWFyY2hSZXN1bHRUcmVlRWxlbWVudCk6CisgICAgICAgIChXSS5TZWFy
Y2hSZXN1bHRUcmVlRWxlbWVudC5wcm90b3R5cGUucG9wdWxhdGVDb250ZXh0TWVudSk6CisgICAg
ICAgIEFubm90YXRlIGFzIGNvbnRleHQgbWVudS4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2Uv
Vmlld3MvU291cmNlQ29kZVRleHRFZGl0b3IuanM6CisgICAgICAgIChXSS5Tb3VyY2VDb2RlVGV4
dEVkaXRvci5wcm90b3R5cGUudGV4dEVkaXRvckd1dHRlckNvbnRleHRNZW51KToKKyAgICAgICAg
QW5ub3RhdGUgYXMgY29udGV4dCBtZW51LgorCisgICAgICAgIChXSS5Tb3VyY2VDb2RlVGV4dEVk
aXRvci5wcm90b3R5cGUuX3Nob3dQb3BvdmVyRm9yT2JqZWN0Lik6CisgICAgICAgIChXSS5Tb3Vy
Y2VDb2RlVGV4dEVkaXRvci5wcm90b3R5cGUuX3Nob3dQb3BvdmVyRm9yT2JqZWN0KToKKyAgICAg
ICAgQW5ub3RhdGUgZWxlbWVudHMgaW4gcG9wb3ZlciBhcyBsaW5rIGNsaWNrLgorCisgICAgICAg
ICogVXNlckludGVyZmFjZS9WaWV3cy9Tb3VyY2VDb2RlVHJlZUVsZW1lbnQuanM6CisgICAgICAg
IChXSS5Tb3VyY2VDb2RlVHJlZUVsZW1lbnQpOgorICAgICAgICAoV0kuU291cmNlQ29kZVRyZWVF
bGVtZW50LnByb3RvdHlwZS5faGFuZGxlVG9nZ2xlQmxhY2tib3hlZEltYWdlRWxlbWVudENsaWNr
ZWQpOgorICAgICAgICBBbm5vdGF0ZSBhcyBjb250ZXh0IG1lbnUuCisKKyAgICAgICAgKiBVc2Vy
SW50ZXJmYWNlL1ZpZXdzL1NwcmVhZHNoZWV0Q1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24uanM6
CisgICAgICAgIChXSS5TcHJlYWRzaGVldENTU1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uLnByb3Rv
dHlwZS5fcG9wdWxhdGVJY29uRWxlbWVudENvbnRleHRNZW51KToKKyAgICAgICAgQW5ub3RhdGUg
YXMgY29udGV4dCBtZW51LgorCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9TcHJlYWRz
aGVldFN0eWxlUHJvcGVydHkuanM6CisgICAgICAgIChXSS5TcHJlYWRzaGVldFN0eWxlUHJvcGVy
dHkucHJvdG90eXBlLl9zZXR1cEp1bXBUb1N5bWJvbCk6CisgICAgICAgIEFubm90YXRlIGFzIGxp
bmsgY2xpY2suCisKIDIwMTktMTItMDYgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29t
PgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFVuY2F1Z2h0IEV4Y2VwdGlvbjogTWlzc2luZyBu
b2RlIGZvciBnaXZlbiBub2RlSWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL0Jhc2UvRE9NVXRpbGl0aWVzLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvQmFzZS9ET01VdGlsaXRpZXMuanMKaW5kZXggMDJmYjI0YTA1ZjU3MzQ2
MGQzOTI0YmUxZjYxM2VmNDBhMzc0Zjc2MC4uNDJiMzlhMTBkYjVlM2E0NzIxZDUyZjllYjMyYjYw
MWZlM2YzMjEyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvQmFzZS9ET01VdGlsaXRpZXMuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvQmFzZS9ET01VdGlsaXRpZXMuanMKQEAgLTg1LDcgKzg1LDkgQEAgV0kubGlua2lm
eU5vZGVSZWZlcmVuY2VFbGVtZW50ID0gZnVuY3Rpb24obm9kZSwgZWxlbWVudCwgb3B0aW9ucyA9
IHt9KQogV0kuYmluZEludGVyYWN0aW9uc0Zvck5vZGVUb0VsZW1lbnQgPSBmdW5jdGlvbihub2Rl
LCBlbGVtZW50LCBvcHRpb25zID0ge30pIHsKICAgICBpZiAoIW9wdGlvbnMuaWdub3JlQ2xpY2sp
IHsKICAgICAgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIChldmVudCkgPT4g
ewotICAgICAgICAgICAgV0kuZG9tTWFuYWdlci5pbnNwZWN0RWxlbWVudChub2RlLmlkKTsKKyAg
ICAgICAgICAgIFdJLmRvbU1hbmFnZXIuaW5zcGVjdEVsZW1lbnQobm9kZS5pZCwgeworICAgICAg
ICAgICAgICAgIGluaXRpYXRvckhpbnQ6IFdJLlRhYkJyb3dzZXIuVGFiTmF2aWdhdGlvbkluaXRp
YXRvci5MaW5rQ2xpY2ssCisgICAgICAgICAgICB9KTsKICAgICAgICAgfSk7CiAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL01haW4u
anMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL01haW4uanMKaW5k
ZXggNzg5MTBmYWEzNzlkYTAzYWFhYmZhZTdiYWUwM2QwMWRjMTJmYjU2Zi4uMzNkNzc5Mzg4OGE4
MzQzNDc0N2MzMTRmYjY2YTZlYzRiNzQ1N2Q5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvTWFpbi5qcwpAQCAtMzMzLDggKzMzMyw4IEBAIFdJLmNv
bnRlbnRMb2FkZWQgPSBmdW5jdGlvbigpCiAgICAgV0kuX2RlY3JlYXNlWm9vbUtleWJvYXJkU2hv
cnRjdXQyID0gbmV3IFdJLktleWJvYXJkU2hvcnRjdXQoV0kuS2V5Ym9hcmRTaG9ydGN1dC5Nb2Rp
Zmllci5Db21tYW5kT3JDb250cm9sIHwgV0kuS2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmllci5TaGlm
dCwgV0kuS2V5Ym9hcmRTaG9ydGN1dC5LZXkuTWludXMsIGJvdW5kRGVjcmVhc2Vab29tKTsKICAg
ICBXSS5fcmVzZXRab29tS2V5Ym9hcmRTaG9ydGN1dCA9IG5ldyBXSS5LZXlib2FyZFNob3J0Y3V0
KFdJLktleWJvYXJkU2hvcnRjdXQuTW9kaWZpZXIuQ29tbWFuZE9yQ29udHJvbCwgIjAiLCBXSS5f
cmVzZXRab29tKTsKIAotICAgIFdJLl9zaG93VGFiQXRJbmRleEtleWJvYXJkU2hvcnRjdXRzID0g
WzEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDldLm1hcCgoaSkgPT4gbmV3IFdJLktleWJvYXJkU2hv
cnRjdXQoV0kuS2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmllci5Db21tYW5kT3JDb250cm9sIHwgV0ku
S2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmllci5PcHRpb24sIGAke2l9YCwgKGV2ZW50KSA9PiB7IFdJ
Ll9zaG93VGFiQXRJbmRleChpKTsgfSkpOwotICAgIFdJLl9vcGVuTmV3VGFiS2V5Ym9hcmRTaG9y
dGN1dCA9IG5ldyBXSS5LZXlib2FyZFNob3J0Y3V0KFdJLktleWJvYXJkU2hvcnRjdXQuTW9kaWZp
ZXIuQ29tbWFuZE9yQ29udHJvbCB8IFdJLktleWJvYXJkU2hvcnRjdXQuTW9kaWZpZXIuT3B0aW9u
LCAiVCIsIFdJLnNob3dOZXdUYWJUYWIpOworICAgIFdJLl9zaG93VGFiQXRJbmRleEtleWJvYXJk
U2hvcnRjdXRzID0gWzEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDldLm1hcCgoaSkgPT4gbmV3IFdJ
LktleWJvYXJkU2hvcnRjdXQoV0kuS2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmllci5Db21tYW5kT3JD
b250cm9sIHwgV0kuS2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmllci5PcHRpb24sIGAke2l9YCwgKGV2
ZW50KSA9PiB7IFdJLl9zaG93VGFiQXRJbmRleEZyb21TaG9ydGN1dChpKTsgfSkpOworICAgIFdJ
Ll9vcGVuTmV3VGFiS2V5Ym9hcmRTaG9ydGN1dCA9IG5ldyBXSS5LZXlib2FyZFNob3J0Y3V0KFdJ
LktleWJvYXJkU2hvcnRjdXQuTW9kaWZpZXIuQ29tbWFuZE9yQ29udHJvbCB8IFdJLktleWJvYXJk
U2hvcnRjdXQuTW9kaWZpZXIuT3B0aW9uLCAiVCIsIFdJLl9zaG93TmV3VGFiRnJvbVNob3J0Y3V0
KTsKIAogICAgIFdJLnRhYkJyb3dzZXIgPSBuZXcgV0kuVGFiQnJvd3Nlcihkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgidGFiLWJyb3dzZXIiKSwgV0kudGFiQmFyLCBXSS5uYXZpZ2F0aW9uU2lkZWJh
ciwgV0kuZGV0YWlsc1NpZGViYXIpOwogICAgIFdJLnRhYkJyb3dzZXIuYWRkRXZlbnRMaXN0ZW5l
cihXSS5UYWJCcm93c2VyLkV2ZW50LlNlbGVjdGVkVGFiQ29udGVudFZpZXdEaWRDaGFuZ2UsIFdJ
Ll90YWJCcm93c2VyU2VsZWN0ZWRUYWJDb250ZW50Vmlld0RpZENoYW5nZSk7CkBAIC01NTMsNiAr
NTUzLDcgQEAgV0kuY29udGVudExvYWRlZCA9IGZ1bmN0aW9uKCkKICAgICBpZiAoSW5zcGVjdG9y
RnJvbnRlbmRIb3N0LnN1cHBvcnRzRGlhZ25vc3RpY0xvZ2dpbmcpIHsKICAgICAgICAgV0kuZGlh
Z25vc3RpY0NvbnRyb2xsZXIgPSBuZXcgV0kuRGlhZ25vc3RpY0NvbnRyb2xsZXI7CiAgICAgICAg
IFdJLmRpYWdub3N0aWNDb250cm9sbGVyLmFkZFJlY29yZGVyKG5ldyBXSS5UYWJBY3Rpdml0eURp
YWdub3N0aWNFdmVudFJlY29yZGVyKFdJLmRpYWdub3N0aWNDb250cm9sbGVyKSk7CisgICAgICAg
IFdJLmRpYWdub3N0aWNDb250cm9sbGVyLmFkZFJlY29yZGVyKG5ldyBXSS5UYWJOYXZpZ2F0aW9u
RGlhZ25vc3RpY0V2ZW50UmVjb3JkZXIoV0kuZGlhZ25vc3RpY0NvbnRyb2xsZXIpKTsKICAgICB9
CiB9OwogCkBAIC02NzMsOCArNjc0LDEwIEBAIFdJLl9vcGVuRGVmYXVsdFRhYiA9IGZ1bmN0aW9u
KGV2ZW50KQogCiBXSS5faGFuZGxlU2V0dGluZ3NLZXlib2FyZFNob3J0Y3V0ID0gZnVuY3Rpb24o
ZXZlbnQpCiB7Ci0gICAgaWYgKGV2ZW50LmtleUlkZW50aWZpZXIgPT09ICJVKzAwMkMiKSAvLyAi
LCIKLSAgICAgICAgV0kudGFiQnJvd3Nlci5zaG93VGFiRm9yQ29udGVudFZpZXcoV0kuc2V0dGlu
Z3NUYWJDb250ZW50Vmlldyk7CisgICAgaWYgKGV2ZW50LmtleUlkZW50aWZpZXIgPT09ICJVKzAw
MkMiKSB7IC8vICIsIgorICAgICAgICBsZXQgb3B0aW9ucyA9IHtpbml0aWF0b3JIaW50OiBXSS5U
YWJCcm93c2VyLlRhYk5hdmlnYXRpb25Jbml0aWF0b3IuS2V5Ym9hcmRTaG9ydGN1dH07CisgICAg
ICAgIFdJLnRhYkJyb3dzZXIuc2hvd1RhYkZvckNvbnRlbnRWaWV3KFdJLnNldHRpbmdzVGFiQ29u
dGVudFZpZXcsIG9wdGlvbnMpOworICAgIH0KIH07CiAKIFdJLl90cnlUb1Jlc3RvcmVQZW5kaW5n
VGFicyA9IGZ1bmN0aW9uKCkKQEAgLTc1NiwxMCArNzU5LDEwIEBAIFdJLmNyZWF0ZU5ld1RhYldp
dGhUeXBlID0gZnVuY3Rpb24odGFiVHlwZSwgb3B0aW9ucyA9IHt9KQogICAgIH0pOwogCiAgICAg
aWYgKHNob3VsZFJlcGxhY2VUYWIpCi0gICAgICAgIFdJLnRhYkJyb3dzZXIuY2xvc2VUYWJGb3JD
b250ZW50VmlldyhyZWZlcmVuY2VkVmlldywge3N1cHByZXNzQW5pbWF0aW9uc30pOworICAgICAg
ICBXSS50YWJCcm93c2VyLmNsb3NlVGFiRm9yQ29udGVudFZpZXcocmVmZXJlbmNlZFZpZXcsIHsu
Li5vcHRpb25zLCBzdXBwcmVzc0FuaW1hdGlvbnN9KTsKIAogICAgIGlmIChzaG91bGRTaG93TmV3
VGFiKQotICAgICAgICBXSS50YWJCcm93c2VyLnNob3dUYWJGb3JDb250ZW50Vmlldyh0YWJDb250
ZW50Vmlldyk7CisgICAgICAgIFdJLnRhYkJyb3dzZXIuc2hvd1RhYkZvckNvbnRlbnRWaWV3KHRh
YkNvbnRlbnRWaWV3LCBvcHRpb25zKTsKIH07CiAKIFdJLmFjdGl2YXRlRXh0cmFEb21haW5zID0g
ZnVuY3Rpb24oZG9tYWlucykKQEAgLTkyNiw2ICs5MjksOSBAQCBXSS5vcGVuVVJMID0gZnVuY3Rp
b24odXJsLCBmcmFtZSwgb3B0aW9ucyA9IHt9KQogICAgICAgICByZXNvdXJjZSA9IFdJLm1haW5U
YXJnZXQucmVzb3VyY2VDb2xsZWN0aW9uLnJlc291cmNlRm9yVVJMKHJlbW92ZVVSTEZyYWdtZW50
KHVybCkpOwogCiAgICAgaWYgKHJlc291cmNlKSB7CisgICAgICAgIC8vIENvbnRleHQgbWVudSBz
ZWxlY3Rpb25zIG1heSBnbyB0aHJvdWdoIHRoaXMgY29kZSBwYXRoOyBkb24ndCBjbG9iYmVyIHRo
ZSBwcmV2aW91c2x5LXNldCBoaW50LgorICAgICAgICBpZiAoIW9wdGlvbnMuaW5pdGlhdG9ySGlu
dCkKKyAgICAgICAgICAgIG9wdGlvbnMuaW5pdGlhdG9ySGludCA9IFdJLlRhYkJyb3dzZXIuVGFi
TmF2aWdhdGlvbkluaXRpYXRvci5MaW5rQ2xpY2s7CiAgICAgICAgIGxldCBwb3NpdGlvblRvUmV2
ZWFsID0gbmV3IFdJLlNvdXJjZUNvZGVQb3NpdGlvbihvcHRpb25zLmxpbmVOdW1iZXIsIDApOwog
ICAgICAgICBXSS5zaG93U291cmNlQ29kZShyZXNvdXJjZSwgey4uLm9wdGlvbnMsIHBvc2l0aW9u
VG9SZXZlYWx9KTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTAwNiw3ICsxMDEyLDcgQEAgV0kuaGlk
ZVNwbGl0Q29uc29sZSA9IGZ1bmN0aW9uKCkKICAgICBXSS5jb25zb2xlRHJhd2VyLmNvbGxhcHNl
ZCA9IHRydWU7CiB9OwogCi1XSS5zaG93Q29uc29sZVRhYiA9IGZ1bmN0aW9uKHJlcXVlc3RlZFNj
b3BlKQorV0kuc2hvd0NvbnNvbGVUYWIgPSBmdW5jdGlvbihyZXF1ZXN0ZWRTY29wZSwgb3B0aW9u
cyA9IHt9KQogewogICAgIHJlcXVlc3RlZFNjb3BlID0gcmVxdWVzdGVkU2NvcGUgfHwgV0kuTG9n
Q29udGVudFZpZXcuU2NvcGVzLkFsbDsKIApAQCAtMTAxNCw3ICsxMDIwLDcgQEAgV0kuc2hvd0Nv
bnNvbGVUYWIgPSBmdW5jdGlvbihyZXF1ZXN0ZWRTY29wZSkKIAogICAgIFdJLmNvbnNvbGVDb250
ZW50Vmlldy5zY29wZUJhci5pdGVtKHJlcXVlc3RlZFNjb3BlKS5zZWxlY3RlZCA9IHRydWU7CiAK
LSAgICBXSS5zaG93UmVwcmVzZW50ZWRPYmplY3QoV0kuX2NvbnNvbGVSZXByZXNlbnRlZE9iamVj
dCk7CisgICAgV0kuc2hvd1JlcHJlc2VudGVkT2JqZWN0KFdJLl9jb25zb2xlUmVwcmVzZW50ZWRP
YmplY3QsIG51bGwsIG9wdGlvbnMpOwogCiAgICAgY29uc29sZS5hc3NlcnQoV0kuaXNTaG93aW5n
Q29uc29sZVRhYigpKTsKIH07CkBAIC0xMDI0LDEyICsxMDMwLDEyIEBAIFdJLmlzU2hvd2luZ0Nv
bnNvbGVUYWIgPSBmdW5jdGlvbigpCiAgICAgcmV0dXJuIFdJLnRhYkJyb3dzZXIuc2VsZWN0ZWRU
YWJDb250ZW50VmlldyBpbnN0YW5jZW9mIFdJLkNvbnNvbGVUYWJDb250ZW50VmlldzsKIH07CiAK
LVdJLnNob3dFbGVtZW50c1RhYiA9IGZ1bmN0aW9uKCkKK1dJLnNob3dFbGVtZW50c1RhYiA9IGZ1
bmN0aW9uKG9wdGlvbnMgPSB7fSkKIHsKICAgICB2YXIgdGFiQ29udGVudFZpZXcgPSBXSS50YWJC
cm93c2VyLmJlc3RUYWJDb250ZW50Vmlld0ZvckNsYXNzKFdJLkVsZW1lbnRzVGFiQ29udGVudFZp
ZXcpOwogICAgIGlmICghdGFiQ29udGVudFZpZXcpCiAgICAgICAgIHRhYkNvbnRlbnRWaWV3ID0g
bmV3IFdJLkVsZW1lbnRzVGFiQ29udGVudFZpZXc7Ci0gICAgV0kudGFiQnJvd3Nlci5zaG93VGFi
Rm9yQ29udGVudFZpZXcodGFiQ29udGVudFZpZXcpOworICAgIFdJLnRhYkJyb3dzZXIuc2hvd1Rh
YkZvckNvbnRlbnRWaWV3KHRhYkNvbnRlbnRWaWV3LCBvcHRpb25zKTsKIH07CiAKIFdJLmlzU2hv
d2luZ0VsZW1lbnRzVGFiID0gZnVuY3Rpb24oKQpAQCAtMTA0OSw3ICsxMDU1LDcgQEAgV0kuc2hv
d1NvdXJjZXNUYWIgPSBmdW5jdGlvbihvcHRpb25zID0ge30pCiAgICAgaWYgKG9wdGlvbnMuc2hv
d1Njb3BlQ2hhaW5TaWRlYmFyKQogICAgICAgICB0YWJDb250ZW50Vmlldy5zaG93U2NvcGVDaGFp
bkRldGFpbHNTaWRlYmFyUGFuZWwoKTsKIAotICAgIFdJLnRhYkJyb3dzZXIuc2hvd1RhYkZvckNv
bnRlbnRWaWV3KHRhYkNvbnRlbnRWaWV3KTsKKyAgICBXSS50YWJCcm93c2VyLnNob3dUYWJGb3JD
b250ZW50Vmlldyh0YWJDb250ZW50Vmlldywgb3B0aW9ucyk7CiB9OwogCiBXSS5pc1Nob3dpbmdT
b3VyY2VzVGFiID0gZnVuY3Rpb24oKQpAQCAtMTA1NywyMSArMTA2MywyMSBAQCBXSS5pc1Nob3dp
bmdTb3VyY2VzVGFiID0gZnVuY3Rpb24oKQogICAgIHJldHVybiBXSS50YWJCcm93c2VyLnNlbGVj
dGVkVGFiQ29udGVudFZpZXcgaW5zdGFuY2VvZiBXSS5Tb3VyY2VzVGFiQ29udGVudFZpZXc7CiB9
OwogCi1XSS5zaG93U3RvcmFnZVRhYiA9IGZ1bmN0aW9uKCkKK1dJLnNob3dTdG9yYWdlVGFiID0g
ZnVuY3Rpb24ob3B0aW9ucyA9IHt9KQogewogICAgIHZhciB0YWJDb250ZW50VmlldyA9IFdJLnRh
YkJyb3dzZXIuYmVzdFRhYkNvbnRlbnRWaWV3Rm9yQ2xhc3MoV0kuU3RvcmFnZVRhYkNvbnRlbnRW
aWV3KTsKICAgICBpZiAoIXRhYkNvbnRlbnRWaWV3KQogICAgICAgICB0YWJDb250ZW50VmlldyA9
IG5ldyBXSS5TdG9yYWdlVGFiQ29udGVudFZpZXc7Ci0gICAgV0kudGFiQnJvd3Nlci5zaG93VGFi
Rm9yQ29udGVudFZpZXcodGFiQ29udGVudFZpZXcpOworICAgIFdJLnRhYkJyb3dzZXIuc2hvd1Rh
YkZvckNvbnRlbnRWaWV3KHRhYkNvbnRlbnRWaWV3LCBvcHRpb25zKTsKIH07CiAKLVdJLnNob3dO
ZXR3b3JrVGFiID0gZnVuY3Rpb24oKQorV0kuc2hvd05ldHdvcmtUYWIgPSBmdW5jdGlvbihvcHRp
b25zID0ge30pCiB7CiAgICAgbGV0IHRhYkNvbnRlbnRWaWV3ID0gV0kudGFiQnJvd3Nlci5iZXN0
VGFiQ29udGVudFZpZXdGb3JDbGFzcyhXSS5OZXR3b3JrVGFiQ29udGVudFZpZXcpOwogICAgIGlm
ICghdGFiQ29udGVudFZpZXcpCiAgICAgICAgIHRhYkNvbnRlbnRWaWV3ID0gbmV3IFdJLk5ldHdv
cmtUYWJDb250ZW50VmlldzsKIAotICAgIFdJLnRhYkJyb3dzZXIuc2hvd1RhYkZvckNvbnRlbnRW
aWV3KHRhYkNvbnRlbnRWaWV3KTsKKyAgICBXSS50YWJCcm93c2VyLnNob3dUYWJGb3JDb250ZW50
Vmlldyh0YWJDb250ZW50Vmlldywgb3B0aW9ucyk7CiB9OwogCiBXSS5pc1Nob3dpbmdOZXR3b3Jr
VGFiID0gZnVuY3Rpb24oKQpAQCAtMTA4NCwxMiArMTA5MCwxMiBAQCBXSS5pc1Nob3dpbmdTZWFy
Y2hUYWIgPSBmdW5jdGlvbigpCiAgICAgcmV0dXJuIFdJLnRhYkJyb3dzZXIuc2VsZWN0ZWRUYWJD
b250ZW50VmlldyBpbnN0YW5jZW9mIFdJLlNlYXJjaFRhYkNvbnRlbnRWaWV3OwogfTsKIAotV0ku
c2hvd1RpbWVsaW5lVGFiID0gZnVuY3Rpb24oKQorV0kuc2hvd1RpbWVsaW5lVGFiID0gZnVuY3Rp
b24ob3B0aW9ucyA9IHt9KQogewogICAgIHZhciB0YWJDb250ZW50VmlldyA9IFdJLnRhYkJyb3dz
ZXIuYmVzdFRhYkNvbnRlbnRWaWV3Rm9yQ2xhc3MoV0kuVGltZWxpbmVUYWJDb250ZW50Vmlldyk7
CiAgICAgaWYgKCF0YWJDb250ZW50VmlldykKICAgICAgICAgdGFiQ29udGVudFZpZXcgPSBuZXcg
V0kuVGltZWxpbmVUYWJDb250ZW50VmlldzsKLSAgICBXSS50YWJCcm93c2VyLnNob3dUYWJGb3JD
b250ZW50Vmlldyh0YWJDb250ZW50Vmlldyk7CisgICAgV0kudGFiQnJvd3Nlci5zaG93VGFiRm9y
Q29udGVudFZpZXcodGFiQ29udGVudFZpZXcsIG9wdGlvbnMpOwogfTsKIAogV0kuaXNTaG93aW5n
VGltZWxpbmVUYWIgPSBmdW5jdGlvbigpCkBAIC0xMTA5LDcgKzExMTUsNyBAQCBXSS5zaG93TGF5
ZXJzVGFiID0gZnVuY3Rpb24ob3B0aW9ucyA9IHt9KQogICAgICAgICB0YWJDb250ZW50VmlldyA9
IG5ldyBXSS5MYXllcnNUYWJDb250ZW50VmlldzsKICAgICBpZiAob3B0aW9ucy5ub2RlVG9TZWxl
Y3QpCiAgICAgICAgIHRhYkNvbnRlbnRWaWV3LnNlbGVjdExheWVyRm9yTm9kZShvcHRpb25zLm5v
ZGVUb1NlbGVjdCk7Ci0gICAgV0kudGFiQnJvd3Nlci5zaG93VGFiRm9yQ29udGVudFZpZXcodGFi
Q29udGVudFZpZXcpOworICAgIFdJLnRhYkJyb3dzZXIuc2hvd1RhYkZvckNvbnRlbnRWaWV3KHRh
YkNvbnRlbnRWaWV3LCBvcHRpb25zKTsKIH07CiAKIFdJLmlzU2hvd2luZ0xheWVyc1RhYiA9IGZ1
bmN0aW9uKCkKQEAgLTExMTksNyArMTEyNSw3IEBAIFdJLmlzU2hvd2luZ0xheWVyc1RhYiA9IGZ1
bmN0aW9uKCkKIAogV0kuc2hvd1NldHRpbmdzVGFiID0gZnVuY3Rpb24ob3B0aW9ucyA9IHt9KQog
ewotICAgIFdJLnRhYkJyb3dzZXIuc2hvd1RhYkZvckNvbnRlbnRWaWV3KFdJLnNldHRpbmdzVGFi
Q29udGVudFZpZXcpOworICAgIFdJLnRhYkJyb3dzZXIuc2hvd1RhYkZvckNvbnRlbnRWaWV3KFdJ
LnNldHRpbmdzVGFiQ29udGVudFZpZXcsIG9wdGlvbnMpOwogCiAgICAgaWYgKG9wdGlvbnMuYmxh
Y2tib3hQYXR0ZXJuVG9TZWxlY3QpCiAgICAgICAgIFdJLnNldHRpbmdzVGFiQ29udGVudFZpZXcu
c2VsZWN0QmxhY2tib3hQYXR0ZXJuKG9wdGlvbnMuYmxhY2tib3hQYXR0ZXJuVG9TZWxlY3QpOwpA
QCAtMTI1NywxMiArMTI2MywxMSBAQCBXSS5zaG93UmVwcmVzZW50ZWRPYmplY3QgPSBmdW5jdGlv
bihyZXByZXNlbnRlZE9iamVjdCwgY29va2llLCBvcHRpb25zID0ge30pCiAgICAgdGFiQ29udGVu
dFZpZXcuc2hvd1JlcHJlc2VudGVkT2JqZWN0KHJlcHJlc2VudGVkT2JqZWN0LCBjb29raWUpOwog
fTsKIAotV0kuc2hvd0xvY2FsUmVzb3VyY2VPdmVycmlkZSA9IGZ1bmN0aW9uKGxvY2FsUmVzb3Vy
Y2VPdmVycmlkZSkKK1dJLnNob3dMb2NhbFJlc291cmNlT3ZlcnJpZGUgPSBmdW5jdGlvbihsb2Nh
bFJlc291cmNlT3ZlcnJpZGUsIG9wdGlvbnMgPSB7fSkKIHsKICAgICBjb25zb2xlLmFzc2VydChs
b2NhbFJlc291cmNlT3ZlcnJpZGUgaW5zdGFuY2VvZiBXSS5Mb2NhbFJlc291cmNlT3ZlcnJpZGUp
OwogICAgIGNvbnN0IGNvb2tpZSA9IG51bGw7Ci0gICAgY29uc3Qgb3B0aW9ucyA9IHtpZ25vcmVO
ZXR3b3JrVGFiOiB0cnVlLCBpZ25vcmVTZWFyY2hUYWI6IHRydWV9OwotICAgIFdJLnNob3dSZXBy
ZXNlbnRlZE9iamVjdChsb2NhbFJlc291cmNlT3ZlcnJpZGUsIGNvb2tpZSwgb3B0aW9ucyk7Cisg
ICAgV0kuc2hvd1JlcHJlc2VudGVkT2JqZWN0KGxvY2FsUmVzb3VyY2VPdmVycmlkZSwgY29va2ll
LCB7Li4ub3B0aW9ucywgaWdub3JlTmV0d29ya1RhYjogdHJ1ZSwgaWdub3JlU2VhcmNoVGFiOiB0
cnVlfSk7CiB9OwogCiBXSS5zaG93TWFpbkZyYW1lRE9NVHJlZSA9IGZ1bmN0aW9uKG5vZGVUb1Nl
bGVjdCwgb3B0aW9ucyA9IHt9KQpAQCAtMTI4Myw3ICsxMjg4LDggQEAgV0kuc2hvd1NvdXJjZUNv
ZGVGb3JGcmFtZSA9IGZ1bmN0aW9uKGZyYW1lSWRlbnRpZmllciwgb3B0aW9ucyA9IHt9KQogCiAg
ICAgV0kuX2ZyYW1lSWRlbnRpZmllclRvU2hvd1NvdXJjZUNvZGVXaGVuQXZhaWxhYmxlID0gdW5k
ZWZpbmVkOwogCi0gICAgV0kuc2hvd1JlcHJlc2VudGVkT2JqZWN0KGZyYW1lLCBudWxsLCBvcHRp
b25zKTsKKyAgICBjb25zdCBjb29raWUgPSBudWxsOworICAgIFdJLnNob3dSZXByZXNlbnRlZE9i
amVjdChmcmFtZSwgY29va2llLCBvcHRpb25zKTsKIH07CiAKIFdJLnNob3dTb3VyY2VDb2RlID0g
ZnVuY3Rpb24oc291cmNlQ29kZSwgb3B0aW9ucyA9IHt9KQpAQCAtMTM3OSw3ICsxMzg1LDkgQEAg
V0kuX3NlYXJjaFRleHREaWRDaGFuZ2UgPSBmdW5jdGlvbihldmVudCkKICAgICB2YXIgc2VhcmNo
UXVlcnkgPSBXSS5fc2VhcmNoVG9vbGJhckl0ZW0udGV4dDsKICAgICBXSS5fc2VhcmNoVG9vbGJh
ckl0ZW0udGV4dCA9ICIiOwogCi0gICAgV0kudGFiQnJvd3Nlci5zaG93VGFiRm9yQ29udGVudFZp
ZXcodGFiQ29udGVudFZpZXcpOworICAgIC8vIENsYXNzaWZ5IHRoaXMgYXMgYSBrZXlib2FyZCBz
aG9ydGN1dCwgYXMgdGhlIG9ubHkgb3RoZXIgd2F5IHRvIGdldCB0byBTZWFyY2ggdGFiIGlzIHZp
YSBUYWJCYXIgaXRzZWxmLgorICAgIGxldCBvcHRpb25zID0ge2luaXRpYXRvckhpbnQ6IFdJLlRh
YkJyb3dzZXIuVGFiTmF2aWdhdGlvbkluaXRpYXRvci5LZXlib2FyZFNob3J0Y3V0fTsKKyAgICBX
SS50YWJCcm93c2VyLnNob3dUYWJGb3JDb250ZW50Vmlldyh0YWJDb250ZW50Vmlldywgb3B0aW9u
cyk7CiAKICAgICB0YWJDb250ZW50Vmlldy5wZXJmb3JtU2VhcmNoKHNlYXJjaFF1ZXJ5KTsKIH07
CkBAIC0xOTYwLDEzICsxOTY4LDE1IEBAIFdJLl9tb3ZlV2luZG93TW91c2VEb3duID0gZnVuY3Rp
b24oZXZlbnQpCiAKIFdJLl9kb21TdG9yYWdlV2FzSW5zcGVjdGVkID0gZnVuY3Rpb24oZXZlbnQp
CiB7Ci0gICAgV0kuc2hvd1N0b3JhZ2VUYWIoKTsKKyAgICBsZXQgb3B0aW9ucyA9IHtpbml0aWF0
b3JIaW50OiBXSS5UYWJCcm93c2VyLlRhYk5hdmlnYXRpb25Jbml0aWF0b3IuSW5zcGVjdH07Cisg
ICAgV0kuc2hvd1N0b3JhZ2VUYWIob3B0aW9ucyk7CiAgICAgV0kuc2hvd1JlcHJlc2VudGVkT2Jq
ZWN0KGV2ZW50LmRhdGEuZG9tU3RvcmFnZSwgbnVsbCwge2lnbm9yZVNlYXJjaFRhYjogdHJ1ZX0p
OwogfTsKIAogV0kuX2RhdGFiYXNlV2FzSW5zcGVjdGVkID0gZnVuY3Rpb24oZXZlbnQpCiB7Ci0g
ICAgV0kuc2hvd1N0b3JhZ2VUYWIoKTsKKyAgICBsZXQgb3B0aW9ucyA9IHtpbml0aWF0b3JIaW50
OiBXSS5UYWJCcm93c2VyLlRhYk5hdmlnYXRpb25Jbml0aWF0b3IuSW5zcGVjdH07CisgICAgV0ku
c2hvd1N0b3JhZ2VUYWIob3B0aW9ucyk7CiAgICAgV0kuc2hvd1JlcHJlc2VudGVkT2JqZWN0KGV2
ZW50LmRhdGEuZGF0YWJhc2UsIG51bGwsIHtpZ25vcmVTZWFyY2hUYWI6IHRydWV9KTsKIH07CiAK
QEAgLTE5NzYsOCArMTk4NiwxMSBAQCBXSS5fZG9tTm9kZVdhc0luc3BlY3RlZCA9IGZ1bmN0aW9u
KGV2ZW50KQogCiAgICAgSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmJyaW5nVG9Gcm9udCgpOwogCi0g
ICAgV0kuc2hvd0VsZW1lbnRzVGFiKCk7Ci0gICAgV0kuc2hvd01haW5GcmFtZURPTVRyZWUoZXZl
bnQuZGF0YS5ub2RlLCB7aWdub3JlU2VhcmNoVGFiOiB0cnVlfSk7CisgICAgLy8gVGhlIGV2ZW50
IGNhbiBvdmVycmlkZSB0aGUgaW5pdGlhdG9yLCBpbiBjYXNlcyB3aGVyZSB0aGUgSW5zcGVjdCBj
b2RlIHBhdGggaXMgdXNlZCBpbnRlcm5hbGx5LgorICAgIGxldCBpbml0aWF0b3JIaW50ID0gZXZl
bnQuZGF0YS5pbml0aWF0b3JIaW50IHx8IFdJLlRhYkJyb3dzZXIuVGFiTmF2aWdhdGlvbkluaXRp
YXRvci5JbnNwZWN0OworICAgIGxldCBvcHRpb25zID0ge2luaXRpYXRvckhpbnR9OworICAgIFdJ
LnNob3dFbGVtZW50c1RhYihvcHRpb25zKTsKKyAgICBXSS5zaG93TWFpbkZyYW1lRE9NVHJlZShl
dmVudC5kYXRhLm5vZGUsIHsuLi5vcHRpb25zLCBpZ25vcmVTZWFyY2hUYWI6IHRydWV9KTsKIH07
CiAKIFdJLl9pbnNwZWN0TW9kZVN0YXRlQ2hhbmdlZCA9IGZ1bmN0aW9uKGV2ZW50KQpAQCAtMjY4
MSwxMCArMjY5NCwxNiBAQCBXSS5zZXRMYXlvdXREaXJlY3Rpb24gPSBmdW5jdGlvbih2YWx1ZSkK
ICAgICBJbnNwZWN0b3JGcm9udGVuZEhvc3QucmVvcGVuKCk7CiB9OwogCi1XSS5fc2hvd1RhYkF0
SW5kZXggPSBmdW5jdGlvbihpKQorV0kuX3Nob3dOZXdUYWJGcm9tU2hvcnRjdXQgPSBmdW5jdGlv
bigpCit7CisgICAgbGV0IG9wdGlvbnMgPSB7aW5pdGlhdG9ySGludDogV0kuVGFiQnJvd3Nlci5U
YWJOYXZpZ2F0aW9uSW5pdGlhdG9yLktleWJvYXJkU2hvcnRjdXR9OworICAgIFdJLnNob3dOZXdU
YWJUYWIob3B0aW9ucyk7Cit9CisKK1dJLl9zaG93VGFiQXRJbmRleEZyb21TaG9ydGN1dCA9IGZ1
bmN0aW9uKGkpCiB7CiAgICAgaWYgKGkgPD0gV0kudGFiQmFyLnRhYkJhckl0ZW1zLmxlbmd0aCkK
LSAgICAgICAgV0kudGFiQmFyLnNlbGVjdGVkVGFiQmFySXRlbSA9IGkgLSAxOworICAgICAgICBX
SS50YWJCYXIuc2VsZWN0VGFiQmFySXRlbVdpdGhJbml0aWF0b3IoaSAtIDEsIFdJLlRhYkJyb3dz
ZXIuVGFiTmF2aWdhdGlvbkluaXRpYXRvci5LZXlib2FyZFNob3J0Y3V0KTsKIH07CiAKIFdJLl9z
aG93SmF2YVNjcmlwdFR5cGVJbmZvcm1hdGlvblNldHRpbmdDaGFuZ2VkID0gZnVuY3Rpb24oZXZl
bnQpCkBAIC0yODcxLDYgKzI4OTAsOCBAQCBXSS5saW5raWZ5U291cmNlQ29kZSA9IGZ1bmN0aW9u
KHNvdXJjZUNvZGUsIHNvdXJjZUNvZGVQb3NpdGlvbiwgb3B0aW9ucyA9IHt9KQogV0kubGlua2lm
eUVsZW1lbnQgPSBmdW5jdGlvbihsaW5rRWxlbWVudCwgc291cmNlQ29kZUxvY2F0aW9uLCBvcHRp
b25zID0ge30pIHsKICAgICBjb25zb2xlLmFzc2VydChzb3VyY2VDb2RlTG9jYXRpb24pOwogCisg
ICAgb3B0aW9ucy5pbml0aWF0b3JIaW50ID0gV0kuVGFiQnJvd3Nlci5UYWJOYXZpZ2F0aW9uSW5p
dGlhdG9yLkxpbmtDbGljazsKKwogICAgIGZ1bmN0aW9uIHNob3dTb3VyY2VDb2RlTG9jYXRpb24o
ZXZlbnQpCiAgICAgewogICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0NhbGxG
cmFtZVRyZWVDb250cm9sbGVyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvQ29udHJvbGxlcnMvQ2FsbEZyYW1lVHJlZUNvbnRyb2xsZXIuanMKaW5kZXggNjVjYjU5YWJm
OGU3OTg5ODQwOTNiYjczNmMzMzdhMjJkMGEzYzgzNy4uMGRiNWFjNDdjMDA4MTdlNThhZmI4OTFm
ODQ4ZDIyNWQ4NGJiZGFlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvQ29udHJvbGxlcnMvQ2FsbEZyYW1lVHJlZUNvbnRyb2xsZXIuanMKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQ2FsbEZyYW1lVHJl
ZUNvbnRyb2xsZXIuanMKQEAgLTg4LDYgKzg4LDggQEAgV0kuQ2FsbEZyYW1lVHJlZUNvbnRyb2xs
ZXIgPSBjbGFzcyBDYWxsRnJhbWVUcmVlQ29udHJvbGxlciBleHRlbmRzIFdJLk9iamVjdAogICAg
ICAgICBXSS5zaG93U291cmNlQ29kZUxvY2F0aW9uKGNhbGxGcmFtZS5zb3VyY2VDb2RlTG9jYXRp
b24sIHsKICAgICAgICAgICAgIGlnbm9yZU5ldHdvcmtUYWI6IHRydWUsCiAgICAgICAgICAgICBp
Z25vcmVTZWFyY2hUYWI6IHRydWUsCisgICAgICAgICAgICAvLyBUcmVhdCBjYWxsIGZyYW1lIGNs
aWNrcyBhcyBsaW5rIGNsaWNrcyBzaW5jZSBpdCBqdW1wcyB0byBhIHNvdXJjZSBsb2NhdGlvbi4K
KyAgICAgICAgICAgIGluaXRpYXRvckhpbnQ6IFdJLlRhYkJyb3dzZXIuVGFiTmF2aWdhdGlvbklu
aXRpYXRvci5MaW5rQ2xpY2ssCiAgICAgICAgIH0pOwogICAgIH0KIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9ET01NYW5hZ2Vy
LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRE9N
TWFuYWdlci5qcwppbmRleCA4YmI4MTQzY2QxYzdmNjY0ZTliZjU5MjEzMzlmZDE0ODljOTA0MmM0
Li5kMjU4N2RhZDU4OTlmNjE5NWYyOWQwOTU1NWJiNDhjNmQ4ODYxMjA2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9ET01NYW5hZ2Vy
LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJz
L0RPTU1hbmFnZXIuanMKQEAgLTQ2MCwxMyArNDYwLDE2IEBAIFdJLkRPTU1hbmFnZXIgPSBjbGFz
cyBET01NYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIHJldHVybiB0aGlzLl9yZXN0
b3JlU2VsZWN0ZWROb2RlSXNBbGxvd2VkOwogICAgIH0KIAotICAgIGluc3BlY3RFbGVtZW50KG5v
ZGVJZCkKKyAgICBpbnNwZWN0RWxlbWVudChub2RlSWQsIG9wdGlvbnMgPSB7fSkKICAgICB7CiAg
ICAgICAgIHZhciBub2RlID0gdGhpcy5faWRUb0RPTU5vZGVbbm9kZUlkXTsKICAgICAgICAgaWYg
KCFub2RlIHx8ICFub2RlLm93bmVyRG9jdW1lbnQpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAg
ICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuRE9NTWFuYWdlci5FdmVudC5E
T01Ob2RlV2FzSW5zcGVjdGVkLCB7bm9kZX0pOworICAgICAgICAvLyBUaGlzIGNvZGUgcGF0aCBp
cyBoaXQgYnkgIlJldmVhbCBpbiBET00gVHJlZSIgYW5kIGNsaWNraW5nIGVsZW1lbnQgbGlua3Mv
Y29uc29sZSB3aWRnZXRzLgorICAgICAgICAvLyBVbmxlc3Mgb3ZlcnJpZGRlbiBieSBjYWxsZXJz
LCBhc3N1bWUgdGhhdCB0aGlzIGlzIG5hdmlnYXRpb24gaXMgaW5pdGlhdGVkIGJ5IGEgSW5zcGVj
dCBtb2RlLgorICAgICAgICBsZXQgaW5pdGlhdG9ySGludCA9IG9wdGlvbnMuaW5pdGlhdG9ySGlu
dCB8fCBXSS5UYWJCcm93c2VyLlRhYk5hdmlnYXRpb25Jbml0aWF0b3IuSW5zcGVjdDsKKyAgICAg
ICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuRE9NTWFuYWdlci5FdmVudC5ET01O
b2RlV2FzSW5zcGVjdGVkLCB7bm9kZSwgaW5pdGlhdG9ySGludH0pOwogCiAgICAgICAgIHRoaXMu
X2luc3BlY3RNb2RlRW5hYmxlZCA9IGZhbHNlOwogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRU
b0xpc3RlbmVycyhXSS5ET01NYW5hZ2VyLkV2ZW50Lkluc3BlY3RNb2RlU3RhdGVDaGFuZ2VkKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xs
ZXJzL1RhYk5hdmlnYXRpb25EaWFnbm9zdGljRXZlbnRSZWNvcmRlci5qcyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1RhYk5hdmlnYXRpb25EaWFnbm9z
dGljRXZlbnRSZWNvcmRlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZGY2ZGM5OTgwNzQ0ZDY5NDA4MjI3YTVk
YzFlYzM1Y2NkZTRmZTk1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvVGFiTmF2aWdhdGlvbkRpYWdub3N0aWNFdmVudFJl
Y29yZGVyLmpzCkBAIC0wLDAgKzEsODkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitXSS5UYWJOYXZpZ2F0aW9u
RGlhZ25vc3RpY0V2ZW50UmVjb3JkZXIgPSBjbGFzcyBUYWJOYXZpZ2F0aW9uRGlhZ25vc3RpY0V2
ZW50UmVjb3JkZXIgZXh0ZW5kcyBXSS5EaWFnbm9zdGljRXZlbnRSZWNvcmRlcgoreworICAgIGNv
bnN0cnVjdG9yKGNvbnRyb2xsZXIpCisgICAgeworICAgICAgICBzdXBlcigiVGFiTmF2aWdhdGlv
biIsIGNvbnRyb2xsZXIpOworICAgIH0KKworICAgIC8vIFByb3RlY3RlZAorCisgICAgc2V0dXAo
KQorICAgIHsKKyAgICAgICAgV0kudGFiQnJvd3Nlci5hZGRFdmVudExpc3RlbmVyKFdJLlRhYkJy
b3dzZXIuRXZlbnQuU2VsZWN0ZWRUYWJDb250ZW50Vmlld0RpZENoYW5nZSwgdGhpcy5fc2VsZWN0
ZWRUYWJDb250ZW50Vmlld0RpZENoYW5nZSwgdGhpcyk7CisgICAgfQorCisgICAgdGVhcmRvd24o
KQorICAgIHsKKyAgICAgICAgV0kudGFiQnJvd3Nlci5yZW1vdmVFdmVudExpc3RlbmVyKFdJLlRh
YkJyb3dzZXIuRXZlbnQuU2VsZWN0ZWRUYWJDb250ZW50Vmlld0RpZENoYW5nZSwgdGhpcy5fc2Vs
ZWN0ZWRUYWJDb250ZW50Vmlld0RpZENoYW5nZSwgdGhpcyk7CisgICAgfQorCisgICAgLy8gUHJp
dmF0ZQorCisgICAgX3NlbGVjdGVkVGFiQ29udGVudFZpZXdEaWRDaGFuZ2UoZXZlbnQpCisgICAg
eworICAgICAgICBsZXQgb3V0Z29pbmdUYWJUeXBlID0gZXZlbnQuZGF0YS5vdXRnb2luZ1RhYi5p
ZGVudGlmaWVyOworICAgICAgICBsZXQgaW5jb21pbmdUYWJUeXBlID0gZXZlbnQuZGF0YS5pbmNv
bWluZ1RhYi5pZGVudGlmaWVyOworICAgICAgICBsZXQgaW5pdGlhdG9yID0gV0kuVGFiTmF2aWdh
dGlvbkRpYWdub3N0aWNFdmVudFJlY29yZGVyLnRhYkJyb3dzZXJJbml0aWF0b3JUb0V2ZW50SW5p
dGlhdG9yKGV2ZW50LmRhdGEuaW5pdGlhdG9yIHx8IFdJLlRhYkJyb3dzZXIuVGFiTmF2aWdhdGlv
bkluaXRpYXRvci5Vbmtub3duKTsKKyAgICAgICAgaWYgKCFpbml0aWF0b3IpIHsKKyAgICAgICAg
ICAgIC8vIElmIGluaXRpYXRvciBpcyBudWxsLCB0aGVuIHRoZXJlIGlzIGEgbWlzc2luZyB2YWx1
ZSBpbiB0aGUgc3dpdGNoLiBUaGlzIGlzIGEgcHJvZ3JhbW1pbmcgZXJyb3IuCisgICAgICAgICAg
ICBXSS5yZXBvcnRJbnRlcm5hbEVycm9yKCJWYWx1ZSBvZiAnaW5pdGlhdG9yJyBjb3VsZCBub3Qg
YmUgcGFyc2VkOiAiICsgZXZlbnQuZGF0YS5pbml0aWF0b3IpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5sb2dEaWFnbm9zdGljRXZlbnQodGhpcy5uYW1l
LCB7b3V0Z29pbmdUYWJUeXBlLCBpbmNvbWluZ1RhYlR5cGUsIGluaXRpYXRvcn0pOworICAgIH0K
KworICAgIHN0YXRpYyB0YWJCcm93c2VySW5pdGlhdG9yVG9FdmVudEluaXRpYXRvcih0YWJCcm93
c2VySW5pdGlhdG9yKQorICAgIHsKKyAgICAgICAgc3dpdGNoICh0YWJCcm93c2VySW5pdGlhdG9y
KSB7CisgICAgICAgIGNhc2UgV0kuVGFiQnJvd3Nlci5UYWJOYXZpZ2F0aW9uSW5pdGlhdG9yLlRh
YkNsaWNrOgorICAgICAgICAgICAgcmV0dXJuICJ0YWItY2xpY2siOworICAgICAgICBjYXNlIFdJ
LlRhYkJyb3dzZXIuVGFiTmF2aWdhdGlvbkluaXRpYXRvci5MaW5rQ2xpY2s6CisgICAgICAgICAg
ICByZXR1cm4gImxpbmstY2xpY2siOworICAgICAgICBjYXNlIFdJLlRhYkJyb3dzZXIuVGFiTmF2
aWdhdGlvbkluaXRpYXRvci5CdXR0b25DbGljazoKKyAgICAgICAgICAgIHJldHVybiAiYnV0dG9u
LWNsaWNrIjsKKyAgICAgICAgY2FzZSBXSS5UYWJCcm93c2VyLlRhYk5hdmlnYXRpb25Jbml0aWF0
b3IuQ29udGV4dE1lbnU6CisgICAgICAgICAgICByZXR1cm4gImNvbnRleHQtbWVudSI7CisgICAg
ICAgIGNhc2UgV0kuVGFiQnJvd3Nlci5UYWJOYXZpZ2F0aW9uSW5pdGlhdG9yLkRhc2hib2FyZDoK
KyAgICAgICAgICAgIHJldHVybiAiZGFzaGJvYXJkIjsKKyAgICAgICAgY2FzZSBXSS5UYWJCcm93
c2VyLlRhYk5hdmlnYXRpb25Jbml0aWF0b3IuQnJlYWtwb2ludDoKKyAgICAgICAgICAgIHJldHVy
biAiYnJlYWtwb2ludCI7CisgICAgICAgIGNhc2UgV0kuVGFiQnJvd3Nlci5UYWJOYXZpZ2F0aW9u
SW5pdGlhdG9yLkluc3BlY3Q6CisgICAgICAgICAgICByZXR1cm4gImluc3BlY3QiOworICAgICAg
ICBjYXNlIFdJLlRhYkJyb3dzZXIuVGFiTmF2aWdhdGlvbkluaXRpYXRvci5LZXlib2FyZFNob3J0
Y3V0OgorICAgICAgICAgICAgcmV0dXJuICJrZXlib2FyZC1zaG9ydGN1dCI7CisgICAgICAgIGNh
c2UgV0kuVGFiQnJvd3Nlci5UYWJOYXZpZ2F0aW9uSW5pdGlhdG9yLkZyb250ZW5kQVBJOgorICAg
ICAgICAgICAgcmV0dXJuICJmcm9udGVuZC1hcGkiOworICAgICAgICBjYXNlIFdJLlRhYkJyb3dz
ZXIuVGFiTmF2aWdhdGlvbkluaXRpYXRvci5Vbmtub3duOgorICAgICAgICAgICAgcmV0dXJuICJ1
bmtub3duIjsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoIlVu
aGFuZGxlZCBpbml0aWF0b3IgdHlwZTogIiArIHRhYkJyb3dzZXJJbml0aWF0b3IpOworICAgICAg
ICB9CisgICAgfQorfTsKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvTWFpbi5odG1sIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
TWFpbi5odG1sCmluZGV4IDYwMDQ0MDM1ZWI1N2FlMjczMmRmODAxN2MzMjZmNDI3MDhhNGM2MzYu
LmM4MjZkNTFmOTE3N2VkZTRkOWI5NTZiOTdjNTFkNDk4MDYwZWU3MGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbAorKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKQEAgLTkwMCw2ICs5MDAsNyBA
QAogICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9EaWFnbm9zdGljQ29udHJvbGxlci5qcyI+
PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJzL0RpYWdub3N0aWNFdmVudFJl
Y29yZGVyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvVGFiQWN0
aXZpdHlEaWFnbm9zdGljRXZlbnRSZWNvcmRlci5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBz
cmM9IkNvbnRyb2xsZXJzL1RhYk5hdmlnYXRpb25EaWFnbm9zdGljRXZlbnRSZWNvcmRlci5qcyI+
PC9zY3JpcHQ+CiAKICAgICA8c2NyaXB0IHNyYz0iQmFzZS9NYWluLmpzIj48L3NjcmlwdD4KICAg
ICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvQXBwQ29udHJvbGxlckJhc2UuanMiPjwvc2NyaXB0
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9j
b2wvSW5zcGVjdG9yRnJvbnRlbmRBUEkuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Qcm90b2NvbC9JbnNwZWN0b3JGcm9udGVuZEFQSS5qcwppbmRleCBjMzFkNzYyZjEy
ZjI4YmZhOTI0NjJmNzE1MmRmMWJmMDYzMjlhNTA0Li4wMDM2NjdmZmNkMTM1NWViZjNjZTFkNTky
NmE2ZmNiZTY1N2Y0ZDRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Qcm90b2NvbC9JbnNwZWN0b3JGcm9udGVuZEFQSS5qcworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9JbnNwZWN0b3JGcm9udGVuZEFQSS5q
cwpAQCAtNDQsNyArNDQsOCBAQCBJbnNwZWN0b3JGcm9udGVuZEFQSSA9IHsKIAogICAgIHNldFRp
bWVsaW5lUHJvZmlsaW5nRW5hYmxlZDogZnVuY3Rpb24oZW5hYmxlZCkKICAgICB7Ci0gICAgICAg
IFdJLnNob3dUaW1lbGluZVRhYigpOworICAgICAgICBsZXQgb3B0aW9ucyA9IHtpbml0aWF0b3JI
aW50OiBXSS5UYWJCcm93c2VyLlRhYk5hdmlnYXRpb25Jbml0aWF0b3IuRnJvbnRlbmRBUEl9Owor
ICAgICAgICBXSS5zaG93VGltZWxpbmVUYWIob3B0aW9ucyk7CiAKICAgICAgICAgaWYgKFdJLnRp
bWVsaW5lTWFuYWdlci5pc0NhcHR1cmluZygpID09PSBlbmFibGVkKQogICAgICAgICAgICAgcmV0
dXJuOwpAQCAtODMsNyArODQsOCBAQCBJbnNwZWN0b3JGcm9udGVuZEFQSSA9IHsKIAogICAgIHNo
b3dDb25zb2xlOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICBXSS5zaG93Q29uc29sZVRhYigp
OworICAgICAgICBsZXQgb3B0aW9ucyA9IHtpbml0aWF0b3JIaW50OiBXSS5UYWJCcm93c2VyLlRh
Yk5hdmlnYXRpb25Jbml0aWF0b3IuRnJvbnRlbmRBUEl9OworICAgICAgICBXSS5zaG93Q29uc29s
ZVRhYihudWxsLCBvcHRpb25zKTsKIAogICAgICAgICBXSS5xdWlja0NvbnNvbGUucHJvbXB0LmZv
Y3VzKCk7CiAKQEAgLTEwNywxMyArMTA5LDE1IEBAIEluc3BlY3RvckZyb250ZW5kQVBJID0gewog
CiAgICAgc2hvd1Jlc291cmNlczogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgV0kuc2hvd1Nv
dXJjZXNUYWIoKTsKKyAgICAgICAgbGV0IG9wdGlvbnMgPSB7aW5pdGlhdG9ySGludDogV0kuVGFi
QnJvd3Nlci5UYWJOYXZpZ2F0aW9uSW5pdGlhdG9yLkZyb250ZW5kQVBJfTsKKyAgICAgICAgV0ku
c2hvd1NvdXJjZXNUYWIob3B0aW9ucyk7CiAgICAgfSwKIAogICAgIC8vIENPTVBBVElCSUxJVFkg
KGlPUyAxMyk6IG1lcmdlZCBpbnRvIEluc3BlY3RvckZyb250ZW5kQVBJLnNldFRpbWVsaW5lUHJv
ZmlsaW5nRW5hYmxlZC4KICAgICBzaG93VGltZWxpbmVzOiBmdW5jdGlvbigpCiAgICAgewotICAg
ICAgICBXSS5zaG93VGltZWxpbmVUYWIoKTsKKyAgICAgICAgbGV0IG9wdGlvbnMgPSB7aW5pdGlh
dG9ySGludDogV0kuVGFiQnJvd3Nlci5UYWJOYXZpZ2F0aW9uSW5pdGlhdG9yLkZyb250ZW5kQVBJ
fTsKKyAgICAgICAgV0kuc2hvd1RpbWVsaW5lVGFiKG9wdGlvbnMpOwogICAgIH0sCiAKICAgICBz
aG93TWFpblJlc291cmNlRm9yRnJhbWU6IGZ1bmN0aW9uKGZyYW1lSWRlbnRpZmllcikKQEAgLTEy
MSw2ICsxMjUsNyBAQCBJbnNwZWN0b3JGcm9udGVuZEFQSSA9IHsKICAgICAgICAgY29uc3Qgb3B0
aW9ucyA9IHsKICAgICAgICAgICAgIGlnbm9yZU5ldHdvcmtUYWI6IHRydWUsCiAgICAgICAgICAg
ICBpZ25vcmVTZWFyY2hUYWI6IHRydWUsCisgICAgICAgICAgICBpbml0aWF0b3JIaW50OiBXSS5U
YWJCcm93c2VyLlRhYk5hdmlnYXRpb25Jbml0aWF0b3IuRnJvbnRlbmRBUEksCiAgICAgICAgIH07
CiAgICAgICAgIFdJLnNob3dTb3VyY2VDb2RlRm9yRnJhbWUoZnJhbWVJZGVudGlmaWVyLCBvcHRp
b25zKTsKICAgICB9LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvQ29udGV4dE1lbnVVdGlsaXRpZXMuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250ZXh0TWVudVV0aWxpdGllcy5qcwppbmRleCAzMjA5
N2VjOTA5Y2MwYzlhZGUzMmI0MGVkOGMyOThhZmFhY2ZmODI0Li4zY2ZmYjdlY2RhMDE5ZTU1MDJi
YmZkZWI5ZjM0MTNkOTU0OWE4MzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9Db250ZXh0TWVudVV0aWxpdGllcy5qcworKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250ZXh0TWVudVV0aWxpdGllcy5q
cwpAQCAtNzcsMTQgKzc3LDE4IEBAIFdJLmFwcGVuZENvbnRleHRNZW51SXRlbXNGb3JTb3VyY2VD
b2RlID0gZnVuY3Rpb24oY29udGV4dE1lbnUsIHNvdXJjZUNvZGVPckxvY2F0CiAgICAgICAgICAg
ICAgICAgbGV0IHJlc291cmNlID0gc291cmNlQ29kZTsKICAgICAgICAgICAgICAgICBsZXQgbG9j
YWxSZXNvdXJjZU92ZXJyaWRlID0gYXdhaXQgcmVzb3VyY2UuY3JlYXRlTG9jYWxSZXNvdXJjZU92
ZXJyaWRlKCk7CiAgICAgICAgICAgICAgICAgV0kubmV0d29ya01hbmFnZXIuYWRkTG9jYWxSZXNv
dXJjZU92ZXJyaWRlKGxvY2FsUmVzb3VyY2VPdmVycmlkZSk7Ci0gICAgICAgICAgICAgICAgV0ku
c2hvd0xvY2FsUmVzb3VyY2VPdmVycmlkZShsb2NhbFJlc291cmNlT3ZlcnJpZGUpOworICAgICAg
ICAgICAgICAgIFdJLnNob3dMb2NhbFJlc291cmNlT3ZlcnJpZGUobG9jYWxSZXNvdXJjZU92ZXJy
aWRlLCB7CisgICAgICAgICAgICAgICAgICAgIGluaXRpYXRvckhpbnQ6IFdJLlRhYkJyb3dzZXIu
VGFiTmF2aWdhdGlvbkluaXRpYXRvci5Db250ZXh0TWVudSwKKyAgICAgICAgICAgICAgICB9KTsK
ICAgICAgICAgICAgIH0pOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgbGV0IGxvY2Fs
UmVzb3VyY2VPdmVycmlkZSA9IFdJLm5ldHdvcmtNYW5hZ2VyLmxvY2FsUmVzb3VyY2VPdmVycmlk
ZUZvclVSTChzb3VyY2VDb2RlLnVybCk7CiAgICAgICAgICAgICBpZiAobG9jYWxSZXNvdXJjZU92
ZXJyaWRlKSB7CiAgICAgICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kU2VwYXJhdG9yKCk7
CiAgICAgICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXSS5VSVN0cmluZygiUmV2
ZWFsIExvY2FsIE92ZXJyaWRlIiksICgpID0+IHsKLSAgICAgICAgICAgICAgICAgICAgV0kuc2hv
d0xvY2FsUmVzb3VyY2VPdmVycmlkZShsb2NhbFJlc291cmNlT3ZlcnJpZGUpOworICAgICAgICAg
ICAgICAgICAgICBXSS5zaG93TG9jYWxSZXNvdXJjZU92ZXJyaWRlKGxvY2FsUmVzb3VyY2VPdmVy
cmlkZSwgeworICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhdG9ySGludDogV0kuVGFiQnJv
d3Nlci5UYWJOYXZpZ2F0aW9uSW5pdGlhdG9yLkNvbnRleHRNZW51LAorICAgICAgICAgICAgICAg
ICAgICB9KTsKICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpA
QCAtMTExLDYgKzExNSw3IEBAIFdJLmFwcGVuZENvbnRleHRNZW51SXRlbXNGb3JTb3VyY2VDb2Rl
ID0gZnVuY3Rpb24oY29udGV4dE1lbnUsIHNvdXJjZUNvZGVPckxvY2F0CiAgICAgICAgICAgICBj
b250ZXh0TWVudS5hcHBlbmRJdGVtKFdJLlVJU3RyaW5nKCJSZXZlYWwgYmxhY2tib3ggcGF0dGVy
biIpLCAoKSA9PiB7CiAgICAgICAgICAgICAgICAgV0kuc2hvd1NldHRpbmdzVGFiKHsKICAgICAg
ICAgICAgICAgICAgICAgYmxhY2tib3hQYXR0ZXJuVG9TZWxlY3Q6IGJsYWNrYm94RGF0YS5yZWdl
eCwKKyAgICAgICAgICAgICAgICAgICAgaW5pdGlhdG9ySGludDogV0kuVGFiQnJvd3Nlci5UYWJO
YXZpZ2F0aW9uSW5pdGlhdG9yLkNvbnRleHRNZW51LAogICAgICAgICAgICAgICAgIH0pOwogICAg
ICAgICAgICAgfSk7CiAgICAgICAgIH0gZWxzZSB7CkBAIC0xNzMsNiArMTc4LDcgQEAgV0kuYXBw
ZW5kQ29udGV4dE1lbnVJdGVtc0ZvclVSTCA9IGZ1bmN0aW9uKGNvbnRleHRNZW51LCB1cmwsIG9w
dGlvbnMgPSB7fSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgZnVuY3Rpb24gc2hvd1Jlc291cmNl
V2l0aE9wdGlvbnMob3B0aW9ucykgeworICAgICAgICBvcHRpb25zLmluaXRpYXRvckhpbnQgPSBX
SS5UYWJCcm93c2VyLlRhYk5hdmlnYXRpb25Jbml0aWF0b3IuQ29udGV4dE1lbnU7CiAgICAgICAg
IGlmIChvcHRpb25zLmxvY2F0aW9uKQogICAgICAgICAgICAgV0kuc2hvd1NvdXJjZUNvZGVMb2Nh
dGlvbihvcHRpb25zLmxvY2F0aW9uLCBvcHRpb25zKTsKICAgICAgICAgZWxzZSBpZiAob3B0aW9u
cy5zb3VyY2VDb2RlKQpAQCAtMzEwLDEzICszMTYsMTUgQEAgV0kuYXBwZW5kQ29udGV4dE1lbnVJ
dGVtc0ZvckRPTU5vZGUgPSBmdW5jdGlvbihjb250ZXh0TWVudSwgZG9tTm9kZSwgb3B0aW9ucyA9
IHsKIAogICAgICAgICBpZiAoIW9wdGlvbnMuZXhjbHVkZVJldmVhbEVsZW1lbnQgJiYgSW5zcGVj
dG9yQmFja2VuZC5oYXNEb21haW4oIkRPTSIpICYmIGF0dGFjaGVkKSB7CiAgICAgICAgICAgICBj
b250ZXh0TWVudS5hcHBlbmRJdGVtKFdJLnJlcGVhdGVkVUlTdHJpbmcucmV2ZWFsSW5ET01UcmVl
KCksICgpID0+IHsKLSAgICAgICAgICAgICAgICBXSS5kb21NYW5hZ2VyLmluc3BlY3RFbGVtZW50
KGRvbU5vZGUuaWQpOworICAgICAgICAgICAgICAgIFdJLmRvbU1hbmFnZXIuaW5zcGVjdEVsZW1l
bnQoZG9tTm9kZS5pZCwgeworICAgICAgICAgICAgICAgICAgICBpbml0aWF0b3JIaW50OiBXSS5U
YWJCcm93c2VyLlRhYk5hdmlnYXRpb25Jbml0aWF0b3IuQ29udGV4dE1lbnUsCisgICAgICAgICAg
ICAgICAgfSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChJbnNw
ZWN0b3JCYWNrZW5kLmhhc0RvbWFpbigiTGF5ZXJUcmVlIikgJiYgYXR0YWNoZWQpIHsKICAgICAg
ICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV0kuVUlTdHJpbmcoIlJldmVhbCBpbiBMYXll
cnMgVGFiIiwgIk9wZW4gTGF5ZXJzIHRhYiBhbmQgc2VsZWN0IHRoZSBsYXllciBjb3JyZXNwb25k
aW5nIHRvIHRoaXMgbm9kZSIpLCAoKSA9PiB7Ci0gICAgICAgICAgICAgICAgV0kuc2hvd0xheWVy
c1RhYih7bm9kZVRvU2VsZWN0OiBkb21Ob2RlfSk7CisgICAgICAgICAgICAgICAgV0kuc2hvd0xh
eWVyc1RhYih7bm9kZVRvU2VsZWN0OiBkb21Ob2RlLCBpbml0aWF0b3JIaW50OiBXSS5UYWJCcm93
c2VyLlRhYk5hdmlnYXRpb25Jbml0aWF0b3IuQ29udGV4dE1lbnV9KTsKICAgICAgICAgICAgIH0p
OwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0RPTU5vZGVUcmVlRWxlbWVudC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTU5vZGVUcmVlRWxlbWVudC5qcwppbmRleCBiZjBkOTc5
OTNmMGFiMzFmYzFkM2Y4MjJlN2I4NzgxN2M1Mjg4YTI0Li41MmJmOWE4MjUzZWZjY2IyZTk4Njc2
Y2E5YTdjNzFkZWZlMGMyNWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9ET01Ob2RlVHJlZUVsZW1lbnQuanMKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NTm9kZVRyZWVFbGVtZW50LmpzCkBAIC02
MCw3ICs2MCw5IEBAIFdJLkRPTU5vZGVUcmVlRWxlbWVudCA9IGNsYXNzIERPTU5vZGVUcmVlRWxl
bWVudCBleHRlbmRzIFdJLkdlbmVyYWxUcmVlRWxlbWVudAogICAgICAgICBjb250ZXh0TWVudS5h
cHBlbmRTZXBhcmF0b3IoKTsKIAogICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdJLnJl
cGVhdGVkVUlTdHJpbmcucmV2ZWFsSW5ET01UcmVlKCksICgpID0+IHsKLSAgICAgICAgICAgIFdJ
LmRvbU1hbmFnZXIuaW5zcGVjdEVsZW1lbnQodGhpcy5yZXByZXNlbnRlZE9iamVjdC5pZCk7Cisg
ICAgICAgICAgICBXSS5kb21NYW5hZ2VyLmluc3BlY3RFbGVtZW50KHRoaXMucmVwcmVzZW50ZWRP
YmplY3QuaWQsIHsKKyAgICAgICAgICAgICAgICBpbml0aWF0b3JIaW50OiBXSS5UYWJCcm93c2Vy
LlRhYk5hdmlnYXRpb25Jbml0aWF0b3IuQ29udGV4dE1lbnUsCisgICAgICAgICAgICB9KTsKICAg
ICAgICAgfSk7CiAgICAgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVFbGVtZW50LmpzIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZUVsZW1lbnQuanMKaW5kZXggZGRkYTMxMTdl
YWVkNDc5N2FmNzE0Zjg5MWM1YThiYTkxMGNlMWEyMi4uMWZjZDdmYTQ3MDI3YjllZTA2MmE1N2Jm
NzZhZGE3OWFmNzM5NDI5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvRE9NVHJlZUVsZW1lbnQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZUVsZW1lbnQuanMKQEAgLTE0MjAsNyArMTQy
MCw5IEBAIFdJLkRPTVRyZWVFbGVtZW50ID0gY2xhc3MgRE9NVHJlZUVsZW1lbnQgZXh0ZW5kcyBX
SS5UcmVlRWxlbWVudAogICAgICAgICAgICAgbGV0IGdvVG9BcnJvd0VsZW1lbnQgPSBwYXJlbnRF
bGVtZW50LmFwcGVuZENoaWxkKFdJLmNyZWF0ZUdvVG9BcnJvd0J1dHRvbigpKTsKICAgICAgICAg
ICAgIGdvVG9BcnJvd0VsZW1lbnQudGl0bGUgPSBXSS5VSVN0cmluZygiUmV2ZWFsIGluIEVsZW1l
bnRzIFRhYiIpOwogICAgICAgICAgICAgZ29Ub0Fycm93RWxlbWVudC5hZGRFdmVudExpc3RlbmVy
KCJjbGljayIsIChldmVudCkgPT4gewotICAgICAgICAgICAgICAgIFdJLmRvbU1hbmFnZXIuaW5z
cGVjdEVsZW1lbnQodGhpcy5yZXByZXNlbnRlZE9iamVjdC5pZCk7CisgICAgICAgICAgICAgICAg
V0kuZG9tTWFuYWdlci5pbnNwZWN0RWxlbWVudCh0aGlzLnJlcHJlc2VudGVkT2JqZWN0LmlkLCB7
CisgICAgICAgICAgICAgICAgICAgIGluaXRpYXRvckhpbnQ6IFdJLlRhYkJyb3dzZXIuVGFiTmF2
aWdhdGlvbkluaXRpYXRvci5MaW5rQ2xpY2ssCisgICAgICAgICAgICAgICAgfSk7CiAgICAgICAg
ICAgICB9KTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RlZmF1bHREYXNoYm9hcmRWaWV3LmpzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGVmYXVsdERhc2hib2FyZFZpZXcu
anMKaW5kZXggYmUzYzExYmQ2NGNjNjViOGE1ZWY3YzQ5ZDliNWRiMzM2NzUzMTk1My4uNzM2Yzk0
MWU5ZDIzODEwNWE3NTZmZmIyNTUyMjgwN2M1MDQ4OWUyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGVmYXVsdERhc2hib2FyZFZpZXcuanMK
KysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGVmYXVsdERh
c2hib2FyZFZpZXcuanMKQEAgLTEzMywyMiArMTMzLDI2IEBAIFdJLkRlZmF1bHREYXNoYm9hcmRW
aWV3ID0gY2xhc3MgRGVmYXVsdERhc2hib2FyZFZpZXcgZXh0ZW5kcyBXSS5EYXNoYm9hcmRWaWV3
CiAKICAgICBfcmVzb3VyY2VzSXRlbVdhc0NsaWNrZWQoKQogICAgIHsKLSAgICAgICAgV0kuc2hv
d1NvdXJjZXNUYWIoKTsKKyAgICAgICAgbGV0IG9wdGlvbnMgPSB7aW5pdGlhdG9ySGludDogV0ku
VGFiQnJvd3Nlci5UYWJOYXZpZ2F0aW9uSW5pdGlhdG9yLkRhc2hib2FyZH07CisgICAgICAgIFdJ
LnNob3dTb3VyY2VzVGFiKG9wdGlvbnMpOwogICAgIH0KIAogICAgIF9uZXR3b3JrSXRlbVdhc0Ns
aWNrZWQoKQogICAgIHsKLSAgICAgICAgV0kuc2hvd05ldHdvcmtUYWIoKTsKKyAgICAgICAgbGV0
IG9wdGlvbnMgPSB7aW5pdGlhdG9ySGludDogV0kuVGFiQnJvd3Nlci5UYWJOYXZpZ2F0aW9uSW5p
dGlhdG9yLkRhc2hib2FyZH07CisgICAgICAgIFdJLnNob3dOZXR3b3JrVGFiKG9wdGlvbnMpOwog
ICAgIH0KIAogICAgIF90aW1lbGluZUl0ZW1XYXNDbGlja2VkKCkKICAgICB7Ci0gICAgICAgIFdJ
LnNob3dUaW1lbGluZVRhYigpOworICAgICAgICBsZXQgb3B0aW9ucyA9IHtpbml0aWF0b3JIaW50
OiBXSS5UYWJCcm93c2VyLlRhYk5hdmlnYXRpb25Jbml0aWF0b3IuRGFzaGJvYXJkfTsKKyAgICAg
ICAgV0kuc2hvd1RpbWVsaW5lVGFiKG9wdGlvbnMpOwogICAgIH0KIAogICAgIF9jb25zb2xlSXRl
bVdhc0NsaWNrZWQoc2NvcGUpCiAgICAgewotICAgICAgICBXSS5zaG93Q29uc29sZVRhYihzY29w
ZSk7CisgICAgICAgIGxldCBvcHRpb25zID0ge2luaXRpYXRvckhpbnQ6IFdJLlRhYkJyb3dzZXIu
VGFiTmF2aWdhdGlvbkluaXRpYXRvci5EYXNoYm9hcmR9OworICAgICAgICBXSS5zaG93Q29uc29s
ZVRhYihzY29wZSwgb3B0aW9ucyk7CiAgICAgfQogCiAgICAgX3NldENvbnNvbGVJdGVtVmFsdWUo
aXRlbU5hbWUsIG5ld1ZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvTGVnYWN5VGFiQmFyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvTGVnYWN5VGFiQmFyLmpzCmluZGV4IDY0ZmUyM2RkYjY5M2Q0
OGIwNzgzOTA3MjVlNWRhNGUwNThlODRjYzUuLjYyZjc5ZDhmODFjNjE3NGUwOTlhY2I2YWVmNzIz
MjNhMjY1OWUzMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL0xlZ2FjeVRhYkJhci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9MZWdhY3lUYWJCYXIuanMKQEAgLTE5MSw3ICsxOTEsOCBAQCBXSS5M
ZWdhY3lUYWJCYXIgPSBjbGFzcyBMZWdhY3lUYWJCYXIgZXh0ZW5kcyBXSS5WaWV3CiAgICAgICAg
ICAgICBpZiAoIW5leHRUYWJCYXJJdGVtIHx8IG5leHRUYWJCYXJJdGVtIGluc3RhbmNlb2YgV0ku
UGlubmVkVGFiQmFySXRlbSkKICAgICAgICAgICAgICAgICBuZXh0VGFiQmFySXRlbSA9IHRoaXMu
X3RhYkJhckl0ZW1zW2luZGV4IC0gMV07CiAKLSAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRUYWJC
YXJJdGVtID0gbmV4dFRhYkJhckl0ZW07CisgICAgICAgICAgICBsZXQgaW5pdGlhdG9yID0gb3B0
aW9ucy5pbml0aWF0b3JIaW50IHx8IFdJLlRhYkJyb3dzZXIuVGFiTmF2aWdhdGlvbkluaXRpYXRv
ci5Vbmtub3duOworICAgICAgICAgICAgdGhpcy5zZWxlY3RUYWJCYXJJdGVtV2l0aEluaXRpYXRv
cihuZXh0VGFiQmFySXRlbSwgaW5pdGlhdG9yKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmICh0
aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCJhbmltYXRpbmciKSkgewpAQCAtMzg0LDcg
KzM4NSwxNSBAQCBXSS5MZWdhY3lUYWJCYXIgPSBjbGFzcyBMZWdhY3lUYWJCYXIgZXh0ZW5kcyBX
SS5WaWV3CiAgICAgICAgICAgICAgICAgdGhpcy5uZWVkc0xheW91dCgpOwogICAgICAgICB9CiAK
LSAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuVGFiQmFyLkV2ZW50LlRh
YkJhckl0ZW1TZWxlY3RlZCwge3ByZXZpb3VzVGFiQmFySXRlbX0pOworICAgICAgICBsZXQgaW5p
dGlhdG9ySGludCA9IHRoaXMuX2N1cnJlbnRUYWJOYXZpZ2F0aW9uUmVxdWVzdEluaXRpYXRvciB8
fCBXSS5UYWJCcm93c2VyLlRhYk5hdmlnYXRpb25Jbml0aWF0b3IuVW5rbm93bjsKKyAgICAgICAg
dGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuVGFiQmFyLkV2ZW50LlRhYkJhckl0ZW1T
ZWxlY3RlZCwge3ByZXZpb3VzVGFiQmFySXRlbSwgaW5pdGlhdG9ySGludH0pOworICAgIH0KKwor
ICAgIHNlbGVjdFRhYkJhckl0ZW1XaXRoSW5pdGlhdG9yKHRhYkJhckl0ZW0sIGluaXRpYXRvcikK
KyAgICB7CisgICAgICAgIHRoaXMuX2N1cnJlbnRUYWJOYXZpZ2F0aW9uUmVxdWVzdEluaXRpYXRv
ciA9IGluaXRpYXRvcjsKKyAgICAgICAgdGhpcy5zZWxlY3RlZFRhYkJhckl0ZW0gPSB0YWJCYXJJ
dGVtOworICAgICAgICB0aGlzLl9jdXJyZW50VGFiTmF2aWdhdGlvblJlcXVlc3RJbml0aWF0b3Ig
PSB1bmRlZmluZWQ7CiAgICAgfQogCiAgICAgZ2V0IHRhYkJhckl0ZW1zKCkKQEAgLTYyMSw3ICs2
MzAsNyBAQCBXSS5MZWdhY3lUYWJCYXIgPSBjbGFzcyBMZWdhY3lUYWJCYXIgZXh0ZW5kcyBXSS5W
aWV3CiAKICAgICAgICAgICAgIGZvciAobGV0IGl0ZW0gb2YgdGhpcy5faGlkZGVuVGFiQmFySXRl
bXMpIHsKICAgICAgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKGl0ZW0udGl0bGUs
ICgpID0+IHsKLSAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFRhYkJhckl0ZW0gPSBp
dGVtOworICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdFRhYkJhckl0ZW1XaXRoSW5pdGlh
dG9yKGl0ZW0sIFdJLlRhYkJyb3dzZXIuVGFiTmF2aWdhdGlvbkluaXRpYXRvci5Db250ZXh0TWVu
dSk7CiAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICB9CiAKQEAgLTYzMyw3ICs2NDIs
NyBAQCBXSS5MZWdhY3lUYWJCYXIgPSBjbGFzcyBMZWdhY3lUYWJCYXIgZXh0ZW5kcyBXSS5WaWV3
CiAgICAgICAgIGlmIChjbG9zZUJ1dHRvbkVsZW1lbnQpCiAgICAgICAgICAgICByZXR1cm47CiAK
LSAgICAgICAgdGhpcy5zZWxlY3RlZFRhYkJhckl0ZW0gPSB0YWJCYXJJdGVtOworICAgICAgICB0
aGlzLnNlbGVjdFRhYkJhckl0ZW1XaXRoSW5pdGlhdG9yKHRhYkJhckl0ZW0sIFdJLlRhYkJyb3dz
ZXIuVGFiTmF2aWdhdGlvbkluaXRpYXRvci5UYWJDbGljayk7CiAKICAgICAgICAgaWYgKHRhYkJh
ckl0ZW0gaW5zdGFuY2VvZiBXSS5QaW5uZWRUYWJCYXJJdGVtIHx8ICF0aGlzLl9oYXNNb3JlVGhh
bk9uZU5vcm1hbFRhYigpKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtNjgyLDcgKzY5MSwxMSBA
QCBXSS5MZWdhY3lUYWJCYXIgPSBjbGFzcyBMZWdhY3lUYWJCYXIgZXh0ZW5kcyBXSS5WaWV3CiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICBpZiAoIWV2ZW50LmFsdEtleSkg
ewotICAgICAgICAgICAgICAgIHRoaXMucmVtb3ZlVGFiQmFySXRlbSh0YWJCYXJJdGVtLCB7c3Vw
cHJlc3NFeHBhbnNpb246IHRydWV9KTsKKyAgICAgICAgICAgICAgICBsZXQgb3B0aW9ucyA9IHsK
KyAgICAgICAgICAgICAgICAgICAgc3VwcHJlc3NFeHBhbnNpb246IHRydWUsCisgICAgICAgICAg
ICAgICAgICAgIGluaXRpYXRvckhpbnQ6IFdJLlRhYkJyb3dzZXIuVGFiTmF2aWdhdGlvbkluaXRp
YXRvci5UYWJDbGljaywKKyAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgIHRoaXMu
cmVtb3ZlVGFiQmFySXRlbSh0YWJCYXJJdGVtLCBvcHRpb25zKTsKICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgICAgICB9CiAKQEAgLTg0OCw3ICs4NjEsOCBAQCBXSS5MZWdhY3lUYWJC
YXIgPSBjbGFzcyBMZWdhY3lUYWJCYXIgZXh0ZW5kcyBXSS5WaWV3CiAKICAgICBfaGFuZGxlTmV3
VGFiQ2xpY2soZXZlbnQpCiAgICAgewotICAgICAgICBXSS5zaG93TmV3VGFiVGFiKCk7CisgICAg
ICAgIGxldCBvcHRpb25zID0ge2luaXRpYXRvckhpbnQ6IFdJLlRhYkJyb3dzZXIuVGFiTmF2aWdh
dGlvbkluaXRpYXRvci5UYWJDbGlja307CisgICAgICAgIFdJLnNob3dOZXdUYWJUYWIob3B0aW9u
cyk7CiAgICAgfQogCiAgICAgX2hhbmRsZU5ld1RhYk1vdXNlRW50ZXIoZXZlbnQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Mb2dDb250ZW50
Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0xvZ0Nv
bnRlbnRWaWV3LmpzCmluZGV4IGQ4YmQ0MzIwYjE3OWYzYWI4YTlhZGU0NTQzODUyMTVlMjQxYjY3
NjUuLmM1YmE4OTIwOThiNjVkYzdlNmMxNjE2Y2NkZTgzMzYyMzIzNmI2NDIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0xvZ0NvbnRlbnRWaWV3
LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0xvZ0Nv
bnRlbnRWaWV3LmpzCkBAIC04NDMsNyArODQzLDggQEAgV0kuTG9nQ29udGVudFZpZXcgPSBjbGFz
cyBMb2dDb250ZW50VmlldyBleHRlbmRzIFdJLkNvbnRlbnRWaWV3CiAKICAgICBfc2hvd0NvbnNv
bGVUYWIoKQogICAgIHsKLSAgICAgICAgV0kuc2hvd0NvbnNvbGVUYWIoKTsKKyAgICAgICAgbGV0
IG9wdGlvbnMgPSB7aW5pdGlhdG9ySGludDogV0kuVGFiQnJvd3Nlci5UYWJOYXZpZ2F0aW9uSW5p
dGlhdG9yLkJ1dHRvbkNsaWNrfTsKKyAgICAgICAgV0kuc2hvd0NvbnNvbGVUYWIobnVsbCwgb3B0
aW9ucyk7CiAgICAgfQogCiAgICAgX2NsZWFyTG9nKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05ld1RhYkNvbnRlbnRWaWV3LmpzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTmV3VGFiQ29udGVudFZpZXcu
anMKaW5kZXggZWM0ZDM3NWZmNDk4YTNiNDFmYjcxM2YzMWVmNWZhODc0MTIxYWJmMy4uYTliMjM1
ZmUwZjM0ZjcwMDZhNzM0YjY2ZGU4OTkxZmQ5ZWU0YTJmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTmV3VGFiQ29udGVudFZpZXcuanMKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTmV3VGFiQ29udGVu
dFZpZXcuanMKQEAgLTExOSw3ICsxMTksOCBAQCBXSS5OZXdUYWJDb250ZW50VmlldyA9IGNsYXNz
IE5ld1RhYkNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuVGFiQ29udGVudFZpZXcKICAgICAgICAgY29u
c3Qgb3B0aW9ucyA9IHsKICAgICAgICAgICAgIHJlZmVyZW5jZWRWaWV3OiB0aGlzLAogICAgICAg
ICAgICAgc2hvdWxkUmVwbGFjZVRhYjogIWNhbkNyZWF0ZUFkZGl0aW9uYWxUYWJzIHx8ICFXSS5t
b2RpZmllcktleXMubWV0YUtleSwKLSAgICAgICAgICAgIHNob3VsZFNob3dOZXdUYWI6ICFXSS5t
b2RpZmllcktleXMubWV0YUtleQorICAgICAgICAgICAgc2hvdWxkU2hvd05ld1RhYjogIVdJLm1v
ZGlmaWVyS2V5cy5tZXRhS2V5LAorICAgICAgICAgICAgaW5pdGlhdG9ySGludDogV0kuVGFiQnJv
d3Nlci5UYWJOYXZpZ2F0aW9uSW5pdGlhdG9yLkJ1dHRvbkNsaWNrLAogICAgICAgICB9OwogICAg
ICAgICBXSS5jcmVhdGVOZXdUYWJXaXRoVHlwZSh0YWJUeXBlLCBvcHRpb25zKTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZWNv
cmRpbmdBY3Rpb25UcmVlRWxlbWVudC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL1JlY29yZGluZ0FjdGlvblRyZWVFbGVtZW50LmpzCmluZGV4IGJmMTRiMWYx
ODg0ZGE5MTczMzdlMGY1OWVhZmUyZjJmYjhlY2JjZTUuLjI2OTZhN2MxYjY3MjU1YjM3MDM0ZTQ3
MDMyZjQxOTZkOTVjMTIyMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL1JlY29yZGluZ0FjdGlvblRyZWVFbGVtZW50LmpzCisrKyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1JlY29yZGluZ0FjdGlvblRyZWVF
bGVtZW50LmpzCkBAIC00MzQsNiArNDM0LDcgQEAgV0kuUmVjb3JkaW5nQWN0aW9uVHJlZUVsZW1l
bnQgPSBjbGFzcyBSZWNvcmRpbmdBY3Rpb25UcmVlRWxlbWVudCBleHRlbmRzIFdJLkdlbmUKICAg
ICAgICAgICAgICAgICBXSS5zaG93U291cmNlQ29kZUxvY2F0aW9uKHNvdXJjZUNvZGVMb2NhdGlv
biwgewogICAgICAgICAgICAgICAgICAgICBpZ25vcmVOZXR3b3JrVGFiOiB0cnVlLAogICAgICAg
ICAgICAgICAgICAgICBpZ25vcmVTZWFyY2hUYWI6IHRydWUsCisgICAgICAgICAgICAgICAgICAg
IGluaXRpYXRvckhpbnQ6IFdJLlRhYkJyb3dzZXIuVGFiTmF2aWdhdGlvbkluaXRpYXRvci5Db250
ZXh0TWVudSwKICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIH0pOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZVRp
bWVsaW5lRGF0YUdyaWROb2RlLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvUmVzb3VyY2VUaW1lbGluZURhdGFHcmlkTm9kZS5qcwppbmRleCA2OTVkNGJlZGJi
NWNhZWM4NGJkZGMwZTc1ZDZlM2Y1Y2IwZGVmN2FmLi43ZWFmZTExN2I3ZWU5ODYwYTgyMTE4MDM2
NGRhZWFlYTEyZGZkNGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9SZXNvdXJjZVRpbWVsaW5lRGF0YUdyaWROb2RlLmpzCisrKyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlVGltZWxpbmVEYXRh
R3JpZE5vZGUuanMKQEAgLTI4Miw2ICsyODIsNyBAQCBXSS5SZXNvdXJjZVRpbWVsaW5lRGF0YUdy
aWROb2RlID0gY2xhc3MgUmVzb3VyY2VUaW1lbGluZURhdGFHcmlkTm9kZSBleHRlbmRzIFdJLgog
ICAgICAgICBjb25zdCBvcHRpb25zID0gewogICAgICAgICAgICAgaWdub3JlTmV0d29ya1RhYjog
dHJ1ZSwKICAgICAgICAgICAgIGlnbm9yZVNlYXJjaFRhYjogdHJ1ZSwKKyAgICAgICAgICAgIGlu
aXRpYXRvckhpbnQ6IFdJLlRhYkJyb3dzZXIuVGFiTmF2aWdhdGlvbkluaXRpYXRvci5MaW5rQ2xp
Y2ssCiAgICAgICAgIH07CiAgICAgICAgIFdJLnNob3dTb3VyY2VDb2RlKHRoaXMucmVzb3VyY2Us
IG9wdGlvbnMpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL1NlYXJjaFJlc3VsdFRyZWVFbGVtZW50LmpzIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2VhcmNoUmVzdWx0VHJlZUVsZW1lbnQuanMK
aW5kZXggYjM0NWI2NTZkNjU0YTMzYWIyZTc3YmUxMjM2MTUyZTBiYjA2ZjNhYy4uYzJmYWQ1Yjgx
MjVmMzliNjdmZmRhNGFhZWYyMzZjMWQyYzIwOTBhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2VhcmNoUmVzdWx0VHJlZUVsZW1lbnQuanMK
KysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2VhcmNoUmVz
dWx0VHJlZUVsZW1lbnQuanMKQEAgLTk2LDYgKzk2LDcgQEAgV0kuU2VhcmNoUmVzdWx0VHJlZUVs
ZW1lbnQgPSBjbGFzcyBTZWFyY2hSZXN1bHRUcmVlRWxlbWVudCBleHRlbmRzIFdJLkdlbmVyYWxU
cmUKICAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV0kuVUlTdHJpbmcoIlJldmVh
bCBpbiBFbGVtZW50cyBUYWIiKSwgKCkgPT4gewogICAgICAgICAgICAgICAgIFdJLnNob3dNYWlu
RnJhbWVET01UcmVlKHRoaXMucmVwcmVzZW50ZWRPYmplY3QuZG9tTm9kZSwgewogICAgICAgICAg
ICAgICAgICAgICBpZ25vcmVTZWFyY2hUYWI6IHRydWUsCisgICAgICAgICAgICAgICAgICAgIGlu
aXRpYXRvckhpbnQ6IFdJLlRhYkJyb3dzZXIuVGFiTmF2aWdhdGlvbkluaXRpYXRvci5Db250ZXh0
TWVudSwKICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9IGVs
c2UgaWYgKHRoaXMucmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXSS5Tb3VyY2VDb2RlU2Vh
cmNoTWF0Y2hPYmplY3QpIHsKQEAgLTEwMyw2ICsxMDQsNyBAQCBXSS5TZWFyY2hSZXN1bHRUcmVl
RWxlbWVudCA9IGNsYXNzIFNlYXJjaFJlc3VsdFRyZWVFbGVtZW50IGV4dGVuZHMgV0kuR2VuZXJh
bFRyZQogICAgICAgICAgICAgICAgIFdJLnNob3dPcmlnaW5hbE9yRm9ybWF0dGVkU291cmNlQ29k
ZVRleHRSYW5nZSh0aGlzLnJlcHJlc2VudGVkT2JqZWN0LnNvdXJjZUNvZGVUZXh0UmFuZ2UsIHsK
ICAgICAgICAgICAgICAgICAgICAgaWdub3JlTmV0d29ya1RhYjogdHJ1ZSwKICAgICAgICAgICAg
ICAgICAgICAgaWdub3JlU2VhcmNoVGFiOiB0cnVlLAorICAgICAgICAgICAgICAgICAgICBpbml0
aWF0b3JIaW50OiBXSS5UYWJCcm93c2VyLlRhYk5hdmlnYXRpb25Jbml0aWF0b3IuQ29udGV4dE1l
bnUsCiAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU291cmNl
Q29kZVRleHRFZGl0b3IuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9Tb3VyY2VDb2RlVGV4dEVkaXRvci5qcwppbmRleCA1NGZjMDFjZTdjNTU1MjkzMmNlMGJj
NDg0YjlhOTJkMWMyZmI0NDM4Li45MGExYzU3MmJmZDYwMTlkZTY0MWRhMWQ0ZmI0ODgyMzlmMGI2
OGNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9Tb3VyY2VDb2RlVGV4dEVkaXRvci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9Tb3VyY2VDb2RlVGV4dEVkaXRvci5qcwpAQCAtMTI2Miw3ICsxMjYy
LDggQEAgV0kuU291cmNlQ29kZVRleHRFZGl0b3IgPSBjbGFzcyBTb3VyY2VDb2RlVGV4dEVkaXRv
ciBleHRlbmRzIFdJLlRleHRFZGl0b3IKICAgICAgICAgICAgIGlmICghV0kuaXNTaG93aW5nU291
cmNlc1RhYigpKSB7CiAgICAgICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kU2VwYXJhdG9y
KCk7CiAgICAgICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXSS5VSVN0cmluZygi
UmV2ZWFsIGluIFNvdXJjZXMgVGFiIiksICgpID0+IHsKLSAgICAgICAgICAgICAgICAgICAgV0ku
c2hvd1NvdXJjZXNUYWIoe2JyZWFrcG9pbnRUb1NlbGVjdDogYnJlYWtwb2ludHNbMF19KTsKKyAg
ICAgICAgICAgICAgICAgICAgbGV0IG9wdGlvbnMgPSB7aW5pdGlhdG9ySGludDogV0kuVGFiQnJv
d3Nlci5UYWJOYXZpZ2F0aW9uSW5pdGlhdG9yLkNvbnRleHRNZW51fTsKKyAgICAgICAgICAgICAg
ICAgICAgV0kuc2hvd1NvdXJjZXNUYWIoe2JyZWFrcG9pbnRUb1NlbGVjdDogYnJlYWtwb2ludHNb
MF19LCBvcHRpb25zKTsKICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIH0KIApAQCAt
MTk0MCw3ICsxOTQxLDkgQEAgV0kuU291cmNlQ29kZVRleHRFZGl0b3IgPSBjbGFzcyBTb3VyY2VD
b2RlVGV4dEVkaXRvciBleHRlbmRzIFdJLlRleHRFZGl0b3IKIAogICAgICAgICAgICAgICAgIHZh
ciBnb1RvQnV0dG9uID0gdGl0bGVFbGVtZW50LmFwcGVuZENoaWxkKFdJLmNyZWF0ZUdvVG9BcnJv
d0J1dHRvbigpKTsKICAgICAgICAgICAgICAgICBnb1RvQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIo
ImNsaWNrIiwgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgICAgIFdJLmRvbU1hbmFnZXIu
aW5zcGVjdEVsZW1lbnQobm9kZUlkKTsKKyAgICAgICAgICAgICAgICAgICAgV0kuZG9tTWFuYWdl
ci5pbnNwZWN0RWxlbWVudChub2RlSWQsIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGluaXRp
YXRvckhpbnQ6IFdJLlRhYkJyb3dzZXIuVGFiTmF2aWdhdGlvbkluaXRpYXRvci5MaW5rQ2xpY2ss
CisgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAg
ICAgfSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL1NvdXJjZUNvZGVUcmVlRWxlbWVudC5qcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZUNvZGVUcmVlRWxlbWVudC5qcwppbmRl
eCBjMzgzOGMwODU4ZmJlZWYyMDdkOWE4MGVkNTJjZWFmZjdmMGRlYTY3Li5kODI3NDQxMWRkMzI5
ZTM0N2ZjMmYyMjc0OGU0OTlmMDYwODg4ODQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Tb3VyY2VDb2RlVHJlZUVsZW1lbnQuanMKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU291cmNlQ29kZVRyZWVF
bGVtZW50LmpzCkBAIC0yMzYsNiArMjM2LDcgQEAgV0kuU291cmNlQ29kZVRyZWVFbGVtZW50ID0g
Y2xhc3MgU291cmNlQ29kZVRyZWVFbGVtZW50IGV4dGVuZHMgV0kuRm9sZGVyaXplZFRyZWUKICAg
ICAgICAgaWYgKGJsYWNrYm94RGF0YSAmJiBibGFja2JveERhdGEudHlwZSA9PT0gV0kuRGVidWdn
ZXJNYW5hZ2VyLkJsYWNrYm94VHlwZS5QYXR0ZXJuKSB7CiAgICAgICAgICAgICBXSS5zaG93U2V0
dGluZ3NUYWIoewogICAgICAgICAgICAgICAgIGJsYWNrYm94UGF0dGVyblRvU2VsZWN0OiBibGFj
a2JveERhdGEucmVnZXgsCisgICAgICAgICAgICAgICAgaW5pdGlhdG9ySGludDogV0kuVGFiQnJv
d3Nlci5UYWJOYXZpZ2F0aW9uSW5pdGlhdG9yLkNvbnRleHRNZW51LAogICAgICAgICAgICAgfSk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NwcmVhZHNoZWV0Q1NTU3R5bGVEZWNsYXJh
dGlvblNlY3Rpb24uanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9TcHJlYWRzaGVldENTU1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uLmpzCmluZGV4IGZmNTIxMGMy
YTBmNTA5ZDgxODUxMzcwZmU0YmE1NjE0ZjAzZjU1NDAuLjc0MGIzYzZlNTM4MWM0Mzg0NDRiYTRk
ZDc0Y2JiNzkwNmRlNjE3NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL1NwcmVhZHNoZWV0Q1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24uanMK
KysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU3ByZWFkc2hl
ZXRDU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5qcwpAQCAtNTU4LDYgKzU1OCw3IEBAIFdJLlNw
cmVhZHNoZWV0Q1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24gPSBjbGFzcyBTcHJlYWRzaGVldENT
U1N0eWxlRGVjbGFyYXRpb25TCiAgICAgICAgICAgICAgICAgV0kuc2hvd1NvdXJjZUNvZGVMb2Nh
dGlvbih0aGlzLl9zdHlsZS5vd25lclJ1bGUuc291cmNlQ29kZUxvY2F0aW9uLCB7CiAgICAgICAg
ICAgICAgICAgICAgIGlnbm9yZU5ldHdvcmtUYWI6IHRydWUsCiAgICAgICAgICAgICAgICAgICAg
IGlnbm9yZVNlYXJjaFRhYjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgaW5pdGlhdG9ySGlu
dDogV0kuVGFiQnJvd3Nlci5UYWJOYXZpZ2F0aW9uSW5pdGlhdG9yLkNvbnRleHRNZW51LAogICAg
ICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NwcmVhZHNoZWV0U3R5
bGVQcm9wZXJ0eS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L1NwcmVhZHNoZWV0U3R5bGVQcm9wZXJ0eS5qcwppbmRleCBhMzgwMGMwYTMzMmRiMTUwYmE5NjFk
M2RmZDczZDc5YzFiZmJiYjBmLi5hZTQ2OGZhYjBmZmZkMjlhMDhiZDFhYzJjNGI5YTM3ZmE2ZTRj
ZjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9TcHJlYWRzaGVldFN0eWxlUHJvcGVydHkuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvU3ByZWFkc2hlZXRTdHlsZVByb3BlcnR5LmpzCkBAIC04NDcs
NiArODQ3LDcgQEAgV0kuU3ByZWFkc2hlZXRTdHlsZVByb3BlcnR5ID0gY2xhc3MgU3ByZWFkc2hl
ZXRTdHlsZVByb3BlcnR5IGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgICAgICBjb25zdCBvcHRp
b25zID0gewogICAgICAgICAgICAgICAgIGlnbm9yZU5ldHdvcmtUYWI6IHRydWUsCiAgICAgICAg
ICAgICAgICAgaWdub3JlU2VhcmNoVGFiOiB0cnVlLAorICAgICAgICAgICAgICAgIGluaXRpYXRv
ckhpbnQ6IFdJLlRhYkJyb3dzZXIuVGFiTmF2aWdhdGlvbkluaXRpYXRvci5MaW5rQ2xpY2ssCiAg
ICAgICAgICAgICB9OwogICAgICAgICAgICAgbGV0IHNvdXJjZUNvZGUgPSBzb3VyY2VDb2RlTG9j
YXRpb24uc291cmNlQ29kZTsKICAgICAgICAgICAgIFdJLnNob3dTb3VyY2VDb2RlTG9jYXRpb24o
c291cmNlQ29kZS5jcmVhdGVTb3VyY2VDb2RlTG9jYXRpb24ocmFuZ2Uuc3RhcnRMaW5lLCByYW5n
ZS5zdGFydENvbHVtbiksIG9wdGlvbnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGFiQmFyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvVGFiQmFyLmpzCmluZGV4IGEyYjVjYjA4ODA0MGE3ZTcyYzE2
NTg5ZDkxZmFmMDAwMWU0MDIwNjIuLjkwNGViNzI3OGU4NzEzNzA3NjFiOTA0NGRjZjNlNjJhNGI5
MTZmZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL1RhYkJhci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9UYWJCYXIuanMKQEAgLTM1Nyw3ICszNTcsMTUgQEAgV0kuVGFiQmFyID0gY2xhc3MgVGFi
QmFyIGV4dGVuZHMgV0kuVmlldwogICAgICAgICAgICAgICAgIHRoaXMubmVlZHNMYXlvdXQoKTsK
ICAgICAgICAgfQogCi0gICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLlRh
YkJhci5FdmVudC5UYWJCYXJJdGVtU2VsZWN0ZWQsIHtwcmV2aW91c1RhYkJhckl0ZW19KTsKKyAg
ICAgICAgbGV0IGluaXRpYXRvckhpbnQgPSB0aGlzLl9jdXJyZW50VGFiTmF2aWdhdGlvblJlcXVl
c3RJbml0aWF0b3IgfHwgV0kuVGFiQnJvd3Nlci5UYWJOYXZpZ2F0aW9uSW5pdGlhdG9yLlVua25v
d247CisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLlRhYkJhci5FdmVu
dC5UYWJCYXJJdGVtU2VsZWN0ZWQsIHtwcmV2aW91c1RhYkJhckl0ZW0sIGluaXRpYXRvckhpbnR9
KTsKKyAgICB9CisKKyAgICBzZWxlY3RUYWJCYXJJdGVtV2l0aEluaXRpYXRvcih0YWJCYXJJdGVt
LCBpbml0aWF0b3IpCisgICAgeworICAgICAgICB0aGlzLl9jdXJyZW50VGFiTmF2aWdhdGlvblJl
cXVlc3RJbml0aWF0b3IgPSBpbml0aWF0b3I7CisgICAgICAgIHRoaXMuc2VsZWN0ZWRUYWJCYXJJ
dGVtID0gdGFiQmFySXRlbTsKKyAgICAgICAgdGhpcy5fY3VycmVudFRhYk5hdmlnYXRpb25SZXF1
ZXN0SW5pdGlhdG9yID0gdW5kZWZpbmVkOwogICAgIH0KIAogICAgIGdldCB0YWJCYXJJdGVtcygp
CkBAIC01ODYsNyArNTk0LDcgQEAgV0kuVGFiQmFyID0gY2xhc3MgVGFiQmFyIGV4dGVuZHMgV0ku
VmlldwogCiAgICAgICAgICAgICBmb3IgKGxldCBpdGVtIG9mIHRoaXMuX2hpZGRlblRhYkJhckl0
ZW1zKSB7CiAgICAgICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShpdGVtLnRpdGxl
LCAoKSA9PiB7Ci0gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRUYWJCYXJJdGVtID0g
aXRlbTsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RUYWJCYXJJdGVtV2l0aEluaXRp
YXRvcihpdGVtLCBXSS5UYWJCcm93c2VyLlRhYk5hdmlnYXRpb25Jbml0aWF0b3IuQ29udGV4dE1l
bnUpOwogICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgfQogCkBAIC01OTgsNyArNjA2
LDcgQEAgV0kuVGFiQmFyID0gY2xhc3MgVGFiQmFyIGV4dGVuZHMgV0kuVmlldwogICAgICAgICBp
ZiAoY2xvc2VCdXR0b25FbGVtZW50KQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHRo
aXMuc2VsZWN0ZWRUYWJCYXJJdGVtID0gdGFiQmFySXRlbTsKKyAgICAgICAgdGhpcy5zZWxlY3RU
YWJCYXJJdGVtV2l0aEluaXRpYXRvcih0YWJCYXJJdGVtLCBXSS5UYWJCcm93c2VyLlRhYk5hdmln
YXRpb25Jbml0aWF0b3IuVGFiQ2xpY2spOwogCiAgICAgICAgIGlmICh0YWJCYXJJdGVtIGluc3Rh
bmNlb2YgV0kuUGlubmVkVGFiQmFySXRlbSB8fCAhdGhpcy5faGFzTW9yZVRoYW5PbmVOb3JtYWxU
YWIoKSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTY0Nyw3ICs2NTUsMTEgQEAgV0kuVGFiQmFy
ID0gY2xhc3MgVGFiQmFyIGV4dGVuZHMgV0kuVmlldwogICAgICAgICAgICAgICAgIHJldHVybjsK
IAogICAgICAgICAgICAgaWYgKCFldmVudC5hbHRLZXkpIHsKLSAgICAgICAgICAgICAgICB0aGlz
LnJlbW92ZVRhYkJhckl0ZW0odGFiQmFySXRlbSwge3N1cHByZXNzRXhwYW5zaW9uOiB0cnVlfSk7
CisgICAgICAgICAgICAgICAgbGV0IG9wdGlvbnMgPSB7CisgICAgICAgICAgICAgICAgICAgIHN1
cHByZXNzRXhwYW5zaW9uOiB0cnVlLAorICAgICAgICAgICAgICAgICAgICBpbml0aWF0b3JIaW50
OiBXSS5UYWJCcm93c2VyLlRhYk5hdmlnYXRpb25Jbml0aWF0b3IuVGFiQ2xpY2ssCisgICAgICAg
ICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZVRhYkJhckl0ZW0odGFiQmFy
SXRlbSwgb3B0aW9ucyk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9U
YWJCcm93c2VyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
VGFiQnJvd3Nlci5qcwppbmRleCA2ODhiZmY3NzM1OWM5MWZmYTBkZGYxYWNlNTcwMWNhM2U3ZWU5
YzZjLi43NGNkNGVmZjZlZjUxMzIyODA0ZmNiZGQ2YzRhMWNmMGJmZmIzOWRmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UYWJCcm93c2VyLmpz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RhYkJyb3dz
ZXIuanMKQEAgLTE3OSw3ICsxNzksMTEgQEAgV0kuVGFiQnJvd3NlciA9IGNsYXNzIFRhYkJyb3dz
ZXIgZXh0ZW5kcyBXSS5WaWV3CiAgICAgICAgIGlmICghdGhpcy5hZGRUYWJGb3JDb250ZW50Vmll
dyh0YWJDb250ZW50Vmlldywgb3B0aW9ucykpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAK
KyAgICAgICAgLy8gTWFrZSB0aGUgb3B0aW9ucyBhdmFpbGFibGUgd2l0aGluIF90YWJCYXJJdGVt
U2VsZWN0ZWQoKSBzbyB0aGF0IGl0IGNhbiBkZXRlcm1pbmUKKyAgICAgICAgLy8gdGhlIGluaXRp
YXRvciBmcm9tIGBvcHRpb25zLmluaXRpYXRvckhpbnRgIGlmIGl0J3MgYmVlbiBzZXQgYnkgdGhl
IGNhbGxlci4KKyAgICAgICAgdGhpcy5fY3VycmVudFRhYk5hdmlnYXRpb25SZXF1ZXN0T3B0aW9u
cyA9IG9wdGlvbnM7CiAgICAgICAgIHRoaXMuX3RhYkJhci5zZWxlY3RlZFRhYkJhckl0ZW0gPSB0
YWJDb250ZW50Vmlldy50YWJCYXJJdGVtOworICAgICAgICB0aGlzLl9jdXJyZW50VGFiTmF2aWdh
dGlvblJlcXVlc3RPcHRpb25zID0gdW5kZWZpbmVkOwogCiAgICAgICAgIC8vIEZJWE1FOiB0aGlz
IGlzIGEgd29ya2Fyb3VuZCBmb3IgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE1MTg3Nj4uCiAgICAg
ICAgIC8vIFdpdGhvdXQgdGhpcyBleHRyYSBjYWxsLCB3ZSBtaWdodCBuZXZlciBsYXkgb3V0IHRo
ZSBjaGlsZCB0YWIKQEAgLTI1Nyw3ICsyNjEsMTcgQEAgV0kuVGFiQnJvd3NlciA9IGNsYXNzIFRh
YkJyb3dzZXIgZXh0ZW5kcyBXSS5WaWV3CiAgICAgICAgICAgICB0YWJDb250ZW50Vmlldy51cGRh
dGVMYXlvdXQoV0kuVmlldy5MYXlvdXRSZWFzb24uUmVzaXplKTsKICAgICAgICAgfQogCi0gICAg
ICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLlRhYkJyb3dzZXIuRXZlbnQuU2Vs
ZWN0ZWRUYWJDb250ZW50Vmlld0RpZENoYW5nZSk7CisgICAgICAgIC8vIEluaXRpYWxpemUgYXMg
dW5rbm93bi4gVGhlbiB0cnkgdG8gdXNlIHRoZSBpbml0aWF0b3IgaGludCBpbiB0aGUgTGVnYWN5
VGFiQmFyIGV2ZW50LiBUaGVuIGluZmVyIGZyb20gVGFiQnJvd3NlciBoaW50cy4KKyAgICAgICAg
bGV0IHVua25vd25Jbml0aWF0b3IgPSBXSS5UYWJCcm93c2VyLlRhYk5hdmlnYXRpb25Jbml0aWF0
b3IuVW5rbm93bjsKKyAgICAgICAgbGV0IGluZmVycmVkSW5pdGlhdG9yID0gdW5rbm93bkluaXRp
YXRvcjsKKyAgICAgICAgaWYgKGV2ZW50LmRhdGEuaW5pdGlhdG9ySGludCkKKyAgICAgICAgICAg
IGluZmVycmVkSW5pdGlhdG9yID0gZXZlbnQuZGF0YS5pbml0aWF0b3JIaW50OworICAgICAgICBp
ZiAoaW5mZXJyZWRJbml0aWF0b3IgPT09IHVua25vd25Jbml0aWF0b3IgJiYgdGhpcy5fY3VycmVu
dFRhYk5hdmlnYXRpb25SZXF1ZXN0T3B0aW9ucyAmJiB0aGlzLl9jdXJyZW50VGFiTmF2aWdhdGlv
blJlcXVlc3RPcHRpb25zLmluaXRpYXRvckhpbnQpCisgICAgICAgICAgICBpbmZlcnJlZEluaXRp
YXRvciA9IHRoaXMuX2N1cnJlbnRUYWJOYXZpZ2F0aW9uUmVxdWVzdE9wdGlvbnMuaW5pdGlhdG9y
SGludDsKKworICAgICAgICBsZXQgb3V0Z29pbmdUYWIgPSBldmVudC5kYXRhLnByZXZpb3VzVGFi
QmFySXRlbSA/IGV2ZW50LmRhdGEucHJldmlvdXNUYWJCYXJJdGVtLnJlcHJlc2VudGVkT2JqZWN0
IDogbnVsbDsKKyAgICAgICAgbGV0IGluY29taW5nVGFiID0gdGFiQ29udGVudFZpZXc7CisgICAg
ICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLlRhYkJyb3dzZXIuRXZlbnQuU2Vs
ZWN0ZWRUYWJDb250ZW50Vmlld0RpZENoYW5nZSwge291dGdvaW5nVGFiLCBpbmNvbWluZ1RhYiwg
aW5pdGlhdG9yOiBpbmZlcnJlZEluaXRpYXRvcn0pOwogCiAgICAgICAgIHRoaXMuX3Jlc3RvcmVG
b2N1c2VkTm9kZUZvclRhYkNvbnRlbnRWaWV3KHRhYkNvbnRlbnRWaWV3KTsKICAgICB9CkBAIC00
ODUsNiArNDk5LDM4IEBAIFdJLlRhYkJyb3dzZXIgPSBjbGFzcyBUYWJCcm93c2VyIGV4dGVuZHMg
V0kuVmlldwogV0kuVGFiQnJvd3Nlci5OZWVkc1Jlc2l6ZUxheW91dFN5bWJvbCA9IFN5bWJvbCgi
bmVlZHMtcmVzaXplLWxheW91dCIpOwogV0kuVGFiQnJvd3Nlci5Gb2N1c2VkTm9kZVN5bWJvbCA9
IFN5bWJvbCgiZm9jdXNlZC1ub2RlIik7CiAKK1dJLlRhYkJyb3dzZXIuVGFiTmF2aWdhdGlvbklu
aXRpYXRvciA9IHsKKyAgICAvLyBJbml0aWF0ZWQgYnkgY2xpY2tpbmcgb24gdGhlIFRhYkJhciBV
SSAoc3dpdGNoaW5nLCBvcGVuaW5nLCBjbG9zaW5nKS4KKyAgICBUYWJDbGljazogInRhYi1icm93
c2VyLXRhYi1uYXZpZ2F0aW9uLWluaXRpYXRvci10YWItY2xpY2siLAorCisgICAgLy8gSW5pdGlh
dGVkIGJ5IGNsaWNraW5nIGEgVVJMLCBzeW1ib2wsIGdvLXRvLWFycm93LCBvciBvdGhlciBsaW5r
IHRvIGEgcmVzb3VyY2Uvc291cmNlIGNvZGUgbG9jYXRpb24uCisgICAgTGlua0NsaWNrOiAidGFi
LWJyb3dzZXItdGFiLW5hdmlnYXRpb24taW5pdGlhdG9yLWxpbmstY2xpY2siLAorCisgICAgLy8g
SW5pdGlhdGVkIGJ5IGNsaWNraW5nIG1pc2NlbGxhbmVvdXMgVUkgKGkuZS4sIFF1aWNrIENvbnNv
bGUncyBjaGV2cm9uLCBOZXcgVGFiIFRhYidzIGJ1dHRvbnMpLgorICAgIEJ1dHRvbkNsaWNrOiAi
dGFiLWJyb3dzZXItdGFiLW5hdmlnYXRpb24taW5pdGlhdG9yLWJ1dHRvbi1jbGljayIsCisKKyAg
ICAvLyBJbml0aWF0ZWQgYnkgc2VsZWN0aW5nIGEgY29udGV4dCBtZW51IGl0ZW0gaW4gV2ViIElu
c3BlY3RvciAoaS5lLiwgIlJldmVhbCBpbiBOZXR3b3JrIFRhYiIpLgorICAgIENvbnRleHRNZW51
OiAidGFiLWJyb3dzZXItdGFiLW5hdmlnYXRpb24taW5pdGlhdG9yLWNvbnRleHQtbWVudSIsCisK
KyAgICAvLyBJbml0aWF0ZWQgYnkgY2xpY2tpbmcgYSBkYXNoYm9hcmQgZWxlbWVudC4KKyAgICBE
YXNoYm9hcmQ6ICJ0YWItYnJvd3Nlci10YWItbmF2aWdhdGlvbi1pbml0aWF0b3ItZGFzaGJvYXJk
IiwKKworICAgIC8vIEluaXRpYXRlZCBieSBhdXRvbWF0aWNhbGx5IHN3aXRjaGluZyB0YWJzIHdo
ZW4gYSBicmVha3BvaW50IGlzIGhpdC4KKyAgICBCcmVha3BvaW50OiAidGFiLWJyb3dzZXItdGFi
LW5hdmlnYXRpb24taW5pdGlhdG9yLWJyZWFrcG9pbnQiLAorCisgICAgLy8gSW5pdGlhdGVkIGJ5
IGluc3BlY3RpbmcgYSBET00gZWxlbWVudCwgZGF0YWJhc2UsIG9yIG90aGVyIG9iamVjdCB2aWEg
Q29uc29sZSBBUEkncyBpbnNwZWN0KCkgb3IgbGl2ZSBub2RlIHNlbGVjdGlvbi4KKyAgICBJbnNw
ZWN0OiAidGFiLWJyb3dzZXItdGFiLW5hdmlnYXRpb24taW5pdGlhdG9yLWluc3BlY3QiLAorCisg
ICAgLy8gSW5pdGlhdGVkIGJ5IGtleWJvYXJkIHNob3J0Y3V0ICh0YWIgc3dpdGNoaW5nLCBuZXcg
dGFiLCBzZWFyY2ggYmFyKS4KKyAgICBLZXlib2FyZFNob3J0Y3V0OiAidGFiLWJyb3dzZXItdGFi
LW5hdmlnYXRpb24taW5pdGlhdG9yLWtleWJvYXJkLXNob3J0Y3V0IiwKKworICAgIC8vIEluaXRp
YXRlZCBmcm9tIG91dHNpZGUgb2YgV2ViIEluc3BlY3RvciAoRGV2ZWxvcCBNZW51LCBfV0tJbnNw
ZWN0b3IgU1BJKS4KKyAgICBGcm9udGVuZEFQSTogInRhYi1icm93c2VyLXRhYi1uYXZpZ2F0aW9u
LWluaXRpYXRvci1mcm9udGVuZC1hcGkiLAorCisgICAgLy8gVW5jYXRlZ29yaXplZDsgdGhlc2Ug
c2hvdWxkIGJlIGludmVzdGlnYXRlZCBhbmQgY2F0ZWdvcml6ZWQgYXMgb25lIG9mIHRoZSBhYm92
ZS4KKyAgICBVbmtub3duOiAidGFiLWJyb3dzZXItdGFiLW5hdmlnYXRpb24taW5pdGlhdG9yLXVu
a25vd24iCit9CisKIFdJLlRhYkJyb3dzZXIuRXZlbnQgPSB7CiAgICAgU2VsZWN0ZWRUYWJDb250
ZW50Vmlld0RpZENoYW5nZTogInRhYi1icm93c2VyLXNlbGVjdGVkLXRhYi1jb250ZW50LXZpZXct
ZGlkLWNoYW5nZSIKIH07Cg==
</data>
<flag name="review"
          id="401259"
          type_id="1"
          status="+"
          setter="hi"
    />
          </attachment>
      

    </bug>

</bugzilla>