<?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>122125</bug_id>
          
          <creation_ts>2013-09-30 14:39:13 -0700</creation_ts>
          <short_desc>Web Inspector: restore navigation panel state across page reloads and reopens</short_desc>
          <delta_ts>2013-12-03 11:48:23 -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>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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>125165</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brian Burg">burg</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>934813</commentid>
    <comment_count>0</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2013-09-30 14:39:13 -0700</bug_when>
    <thetext>When a page is reloaded with the same main frame, we lose all navigation history.

I think this bug is already in in Radar, but filing a public bug in case I fix it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934817</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2013-09-30 14:39:59 -0700</bug_when>
    <thetext>&lt;rdar://problem/15115189&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>955153</commentid>
    <comment_count>2</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2013-12-01 09:14:52 -0800</bug_when>
    <thetext>This has been fixed by a more comprehensive refactoring in my own branch. https://github.com/burg/timelapse/commit/943de47644bcf1efeb8fe019e4f5daf2fa5f51d5 I will try to extract the changes and submit a patch here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>955182</commentid>
    <comment_count>3</comment_count>
      <attachid>218123</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2013-12-01 14:29:58 -0800</bug_when>
    <thetext>Created attachment 218123
v1 patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>955565</commentid>
    <comment_count>4</comment_count>
      <attachid>218123</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2013-12-02 13:51:55 -0800</bug_when>
    <thetext>Comment on attachment 218123
v1 patch

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

Nice work! I like this new approach. Some minor things that should be fixed (dontHideByDefault being the main one.)

&gt; Source/WebInspectorUI/UserInterface/Main.js:723
&gt; +WebInspector._provisionalLoadCommitted = function(event)

Where is the addEventListener call for this? Also, IIRC, some navigations do not fire ProvisionalLoadCommitted and only fire MainResourceDidChange. I think about:blank or data URLs are like that.

&gt; Source/WebInspectorUI/UserInterface/Main.js:1106
&gt; +    WebInspector.navigationSidebar.selectedSidebarPanel = sidebarPanel;
&gt; +    var relaxMatchDelay = causedByReload ? matchTypeOnlyDelayForReload : matchTypeOnlyDelayForReopen;

I&apos;d add a newline in-between these. They are disparate actions.

&gt; Source/WebInspectorUI/UserInterface/NavigationSidebarPanel.js:47
&gt; +    this._allContentTreeOutlines = new Set;

Set! Woot!

&gt; Source/WebInspectorUI/UserInterface/NavigationSidebarPanel.js:171
&gt; +        this._allContentTreeOutlines.add(contentTreeOutline);

contentTreeOutline is hidden by default when it is created. If the set is only suppose to contain the visible tree outlines, then this should only add to the set when dontHideByDefault is true.

&gt; Source/WebInspectorUI/UserInterface/NavigationSidebarPanel.js:193
&gt; +        // FIXME: this does not handle selections in the search results tree outline, or folder selections.

But I think it would get the search result tree outline if it is the contentTreeOutline.

&gt; Source/WebInspectorUI/UserInterface/NavigationSidebarPanel.js:199
&gt; +        });
&gt; +        if (!selectedTreeElement)

Newline.

&gt; Source/WebInspectorUI/UserInterface/NavigationSidebarPanel.js:211
&gt; +        this._pendingViewStateCookie = cookie;
&gt; +        // Check if any existing tree elements in any outline match the cookie.

Newline.

&gt; Source/WebInspectorUI/UserInterface/NavigationSidebarPanel.js:550
&gt; +        for (var i = 0; i &lt; workList.length; ++i)
&gt; +            if (workList[i].hasChildren)
&gt; +                workList = workList.concat(workList[i].children);

Needs {} around the for() since it is multiline.

&gt; Source/WebInspectorUI/UserInterface/NavigationSidebarPanel.js:553
&gt; +        // This includes treeOutlines in the elements list, but this is harmless.
&gt; +        return this._checkElementsForPendingViewStateCookie(workList);

I&apos;m not sure what this comment means.

&gt; Source/WebInspectorUI/UserInterface/NavigationSidebarPanel.js:563
&gt; +        function treeElementMatchesCookie(treeElement) {

{ on newline.

&gt; Source/WebInspectorUI/UserInterface/NavigationSidebarPanel.js:580
&gt; +            return Object.keys(candidateObjectCookie).every(function valuesMatchForKey(key) {
&gt; +                return candidateObjectCookie[key] === cookie[key];
&gt; +            });

Object.shallowEqual?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>955711</commentid>
    <comment_count>5</comment_count>
      <attachid>218123</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2013-12-02 17:31:22 -0800</bug_when>
    <thetext>Comment on attachment 218123
v1 patch

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

&gt;&gt; Source/WebInspectorUI/UserInterface/Main.js:723
&gt;&gt; +WebInspector._provisionalLoadCommitted = function(event)
&gt; 
&gt; Where is the addEventListener call for this? Also, IIRC, some navigations do not fire ProvisionalLoadCommitted and only fire MainResourceDidChange. I think about:blank or data URLs are like that.

Oops, the addEventListener got lost in the rebase somehow.

For navigations without ProvisionalLoadCommitted, is there another event we can use as a time to save the view state? We can&apos;t use MainResourceDidChange, as some of the state is torn down by the time that event&apos;s handlers have all run.

&gt;&gt; Source/WebInspectorUI/UserInterface/NavigationSidebarPanel.js:171
&gt;&gt; +        this._allContentTreeOutlines.add(contentTreeOutline);
&gt; 
&gt; contentTreeOutline is hidden by default when it is created. If the set is only suppose to contain the visible tree outlines, then this should only add to the set when dontHideByDefault is true.

Oh, I missed that. I will rename the set and add a conditional around this statement.

With this change, are there other places where I should be adding or removing tree outlines from the set of visible outlines?

&gt;&gt; Source/WebInspectorUI/UserInterface/NavigationSidebarPanel.js:193
&gt;&gt; +        // FIXME: this does not handle selections in the search results tree outline, or folder selections.
&gt; 
&gt; But I think it would get the search result tree outline if it is the contentTreeOutline.

This comment is from a prior approach, I&apos;ll rewrite it to mention folder selections only.

&gt;&gt; Source/WebInspectorUI/UserInterface/NavigationSidebarPanel.js:553
&gt;&gt; +        return this._checkElementsForPendingViewStateCookie(workList);
&gt; 
&gt; I&apos;m not sure what this comment means.

Oh, the work list included the tree outlines as well as elements. I&apos;ll change this to prune the tree outlines (which should all be at the front, thus easy to remove).

&gt;&gt; Source/WebInspectorUI/UserInterface/NavigationSidebarPanel.js:580
&gt;&gt; +            });
&gt; 
&gt; Object.shallowEqual?

This is asymmetric on purpose, because the saved cookie may contain other things (such as selected sidebar) besides the representedObject&apos;s serialized identity.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>955718</commentid>
    <comment_count>6</comment_count>
      <attachid>218246</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2013-12-02 17:47:01 -0800</bug_when>
    <thetext>Created attachment 218246
v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>955726</commentid>
    <comment_count>7</comment_count>
      <attachid>218246</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2013-12-02 18:05:19 -0800</bug_when>
    <thetext>Comment on attachment 218246
v2

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

&gt; Source/WebInspectorUI/UserInterface/NavigationSidebarPanel.js:557
&gt; +        var workList = [];
&gt; +        this._visibleContentTreeOutlines.forEach(function(outline) { workList.push(outline); });
&gt; +        for (var i = 0; i &lt; workList.length; ++i) {
&gt; +            if (workList[i].hasChildren)
&gt; +                workList = workList.concat(workList[i].children);
&gt; +        }
&gt; +
&gt; +        // Remove TreeOutline elements from the front of the work list.
&gt; +        workList.splice(0, this._visibleContentTreeOutlines.size);

I think this can be simplified (and likely in a performant way). Can this just iterate over the TreeOutlines and then use traverseNextTreeElement to append to workList?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>955743</commentid>
    <comment_count>8</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2013-12-02 18:59:23 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 218246 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=218246&amp;action=review
&gt; 
&gt; &gt; Source/WebInspectorUI/UserInterface/NavigationSidebarPanel.js:557
&gt; &gt; +        var workList = [];
&gt; &gt; +        this._visibleContentTreeOutlines.forEach(function(outline) { workList.push(outline); });
&gt; &gt; +        for (var i = 0; i &lt; workList.length; ++i) {
&gt; &gt; +            if (workList[i].hasChildren)
&gt; &gt; +                workList = workList.concat(workList[i].children);
&gt; &gt; +        }
&gt; &gt; +
&gt; &gt; +        // Remove TreeOutline elements from the front of the work list.
&gt; &gt; +        workList.splice(0, this._visibleContentTreeOutlines.size);
&gt; 
&gt; I think this can be simplified (and likely in a performant way). Can this just iterate over the TreeOutlines and then use traverseNextTreeElement to append to workList?

I couldn&apos;t figure out traverseNextTreeElement or find an example where it seems to iterate the entire tree. If it works, it would definitely be faster.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>955932</commentid>
    <comment_count>9</comment_count>
      <attachid>218246</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2013-12-03 09:26:16 -0800</bug_when>
    <thetext>Comment on attachment 218246
v2

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

&gt;&gt;&gt; Source/WebInspectorUI/UserInterface/NavigationSidebarPanel.js:557
&gt;&gt;&gt; +        workList.splice(0, this._visibleContentTreeOutlines.size);
&gt;&gt; 
&gt;&gt; I think this can be simplified (and likely in a performant way). Can this just iterate over the TreeOutlines and then use traverseNextTreeElement to append to workList?
&gt; 
&gt; I couldn&apos;t figure out traverseNextTreeElement or find an example where it seems to iterate the entire tree. If it works, it would definitely be faster.

http://pastie.org/private/iqgn2kypobwj5eapfk1za is an example from NavigationSidebarPanel.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>955965</commentid>
    <comment_count>10</comment_count>
      <attachid>218304</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2013-12-03 10:30:09 -0800</bug_when>
    <thetext>Created attachment 218304
v3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>956024</commentid>
    <comment_count>11</comment_count>
      <attachid>218304</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2013-12-03 11:46:03 -0800</bug_when>
    <thetext>Comment on attachment 218304
v3

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

&gt; Source/WebInspectorUI/UserInterface/NavigationSidebarPanel.js:551
&gt; +            var currentTreeElement = outline.hasChildren ? outline.children[0] : null;

outline.children[0] alone works, since it will be undefined if there are no children. But this works.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>956025</commentid>
    <comment_count>12</comment_count>
      <attachid>218304</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-12-03 11:48:21 -0800</bug_when>
    <thetext>Comment on attachment 218304
v3

Clearing flags on attachment: 218304

Committed r160025: &lt;http://trac.webkit.org/changeset/160025&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>956026</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-12-03 11:48:23 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>218123</attachid>
            <date>2013-12-01 14:29:58 -0800</date>
            <delta_ts>2013-12-02 17:46:58 -0800</delta_ts>
            <desc>v1 patch</desc>
            <filename>bug-122125-20131201142957.patch</filename>
            <type>text/plain</type>
            <size>55463</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU5OTAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCA1
OGIxMDNiM2JiZGFkMmIwMWY5YzQ5YjY0YTZiMDg0ODU3MmU5YmZmLi44YTNjNWY4M2QzMjg0ODQ0
NDNlOTk2M2E5YzYyMDJkYWViY2RjODhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNjUgQEAKKzIwMTMtMTItMDEgIEJyaWFuIEouIEJ1cmcgIDxidXJnQGNzLndhc2hpbmd0
b24uZWR1PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IHJlc3RvcmUgbmF2aWdhdGlvbiBwYW5l
bCBzdGF0ZSBhY3Jvc3MgcmVsb2FkcyBhbmQgcmVvcGVucworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIyMTI1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIHByZXZpb3VzIHN0cmF0ZWd5IGZvciByZXN0
b3JpbmcgY29udGVudCB2aWV3cyBhZnRlciBpbnNwZWN0b3IKKyAgICAgICAgcmUtb3BlbiBkaWQg
bm90IGNvbnNpZGVyIHRoZSBhY3RpdmUgc2lkZWJhciBhbmQgaXRzIHNlbGVjdGlvbiwgYW5kCisg
ICAgICAgIHRyaWVkIHRvIHJlY3JlYXRlIHRoZSBhcHByb3ByaWF0ZSBzZWxlY3Rpb24gZnJvbSB0
aGUgc2F2ZWQgY29udGVudAorICAgICAgICB2aWV3LiBIb3dldmVyLCBkb2Vzbid0IHdvcmsgZm9y
IHRyZWUgZWxlbWVudHMgaW4gdGhlIHNpZGViYXIgcGFuZWwKKyAgICAgICAgdGhhdCBkb24ndCBj
aGFuZ2Ugdmlld3Mgd2hlbiBzZWxlY3RlZCwgc3VjaCBhcyBzY3JpcHQgYnJlYWtwb2ludHMsCisg
ICAgICAgIHNwZWNpYWwgYnJlYWtwb2ludHMsIGNhbGwgc3RhY2ssIHRpbWVsaW5lIHNlY3Rpb25z
LCBldGMuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIGEgbmV3IHN0cmF0ZWd5IHRo
YXQgc2F2ZXMgdGhlIG5hdmlnYXRpb24KKyAgICAgICAgc2lkZWJhciBwYW5lbCdzIHZpZXcgc3Rh
dGUgYnkgc2VyaWFsaXppbmcgdGhlIGlkZW50aXR5IG9mIHRoZQorICAgICAgICBzZWxlY3RlZCBl
bGVtZW50J3MgcmVwcmVzZW50ZWQgb2JqZWN0LiBSZWxldmFudCByZXByZXNlbnRlZAorICAgICAg
ICBvYmplY3QgY2xhc3NlcyBpbXBsZW1lbnQgdGhlIHNhdmVJZGVudGl0eVRvQ29va2llKCkgbWV0
aG9kLiBFYWNoCisgICAgICAgIHJlcHJlc2VudGVkIG9iamVjdCBjbGFzcyBhbHNvIGFkZHMgYSBU
eXBlSWRlbnRpZmllciBwcm9wZXJ0eSB0bworICAgICAgICBpdHMgY29uc3RydWN0b3IsIHRvIGFp
ZCBpbmV4YWN0IG1hdGNoaW5nIGJhc2VkIG9uIHJlcHJlc2VudGVkCisgICAgICAgIG9iamVjdCB0
eXBlLCByYXRoZXIgdGhhbiBpdHMgY29tcGxldGUgaWRlbnRpdHkuCisKKyAgICAgICAgV2hlbiBy
ZXN0b3JpbmcsIHRoZSBuYXZpZ2F0aW9uIHNpZGViYXIgYXR0ZW1wdHMgdG8gbWF0Y2ggYWRkZWQK
KyAgICAgICAgdHJlZSBlbGVtZW50cyBhZ2FpbnN0IHRoZSBwZW5kaW5nIGNvb2tpZSwgYW5kIHNl
bGVjdHMgdGhlIGVsZW1lbnQKKyAgICAgICAgaWYgaXQgbWF0Y2hlcy4gQSByZXByZXNlbnRlZCBv
YmplY3QgbWF0Y2hlcyBpZiBpdHMgc2VyaWFsaXplZAorICAgICAgICBpZGVudGl0eSBtYXRjaGVz
IHRoZSBwcmV2aW91c2x5IHNhdmVkIHNlcmlhbGl6ZWQgaWRlbnRpdHkuCisKKyAgICAgICAgVGhl
IGluc3BlY3RvciB2aWV3IHN0YXRlIGlzIG5vdyBvbmx5IHNhdmVkIG9uIHRoZSBwYWdlIGhpZGUg
ZXZlbnQKKyAgICAgICAgKGZvciBzYXZpbmcgYWNyb3NzIHJlb3BlbikgYW5kIHdoZW4gdGhlIG1h
aW4gZnJhbWUgY29tbWl0cyBpdHMKKyAgICAgICAgcHJvdmlzaW9uYWwgbG9hZCAoZm9yIHNhdmlu
ZyBhY3Jvc3Mgc2FtZS1wYWdlIHJlbG9hZHMpLiBJdAorICAgICAgICBjb25zb2xpZGF0ZXMgc2lt
aWxhciB2aWV3IHN0YXRlIHNldHRpbmdzIGludG8gYSBzaW5nbGUgc2V0dGluZy4KKworICAgICAg
ICAqIFVzZXJJbnRlcmZhY2UvQXBwbGljYXRpb25DYWNoZUZyYW1lLmpzOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVGcmFtZSk6IEFkZCBjb29raWUga2V5cyBhbmQgdHlw
ZSBpZGVudGlmaWVyLgorICAgICAgICAoV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVGcmFt
ZS5wcm90b3R5cGUuc2F2ZUlkZW50aXR5VG9Db29raWUpOiBBZGRlZC4KKyAgICAgICAgKiBVc2Vy
SW50ZXJmYWNlL0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmpzOiByZW1vdmUgb2JqZWN0Rm9yQ29v
a2llKCkuCisgICAgICAgICogVXNlckludGVyZmFjZS9CcmVha3BvaW50LmpzOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQpOiBBZGQgY29va2llIGtleXMgYW5kIHR5cGUgaWRlbnRp
Zmllci4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5CcmVha3BvaW50LnByb3RvdHlwZS5zYXZlSWRl
bnRpdHlUb0Nvb2tpZSk6CisgICAgICAgICogVXNlckludGVyZmFjZS9Db29raWVTdG9yYWdlT2Jq
ZWN0LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvb2tpZVN0b3JhZ2VPYmplY3QucHJvdG90
eXBlLnNhdmVJZGVudGl0eVRvQ29va2llKTogQWRkZWQuCisgICAgICAgICogVXNlckludGVyZmFj
ZS9ET01TdG9yYWdlT2JqZWN0LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VP
YmplY3QpOiBBZGQgY29va2llIGtleXMgYW5kIHR5cGUgaWRlbnRpZmllci4KKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5ET01TdG9yYWdlT2JqZWN0LnByb3RvdHlwZS5zYXZlSWRlbnRpdHlUb0Nvb2tp
ZSk6IEFkZGVkLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvRGF0YWJhc2VPYmplY3QuanM6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuRGF0YWJhc2VPYmplY3QpOiBBZGQgY29va2llIGtleXMgYW5k
IHR5cGUgaWRlbnRpZmllci4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXRhYmFzZU9iamVjdC5w
cm90b3R5cGUuc2F2ZUlkZW50aXR5VG9Db29raWUpOiBBZGRlZC4KKyAgICAgICAgKiBVc2VySW50
ZXJmYWNlL0RhdGFiYXNlVGFibGVPYmplY3QuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGF0
YWJhc2VUYWJsZU9iamVjdCk6IEFkZCBjb29raWUga2V5cyBhbmQgdHlwZSBpZGVudGlmaWVyLgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkRhdGFiYXNlVGFibGVPYmplY3QucHJvdG90eXBlLnNhdmVJ
ZGVudGl0eVRvQ29va2llKTogQWRkZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9EZWJ1Z2dl
clNpZGViYXJQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclNpZGViYXJQ
YW5lbC5wcm90b3R5cGUuc2F2ZVN0YXRlVG9Db29raWUpOiBBZGRlZC4KKyAgICAgICAgKFdlYklu
c3BlY3Rvci5EZWJ1Z2dlclNpZGViYXJQYW5lbC5wcm90b3R5cGUucmVzdG9yZVN0YXRlRnJvbUNv
b2tpZSk6IEFkZGVkLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvRnJhbWUuanM6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuRnJhbWUpOiBBZGQgY29va2llIGtleXMgYW5kIHR5cGUgaWRlbnRpZmll
ci4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5GcmFtZS5wcm90b3R5cGUuc2F2ZUlkZW50aXR5VG9D
b29raWUpOiBBZGRlZC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0ZyYW1lUmVzb3VyY2VNYW5h
Z2VyLmpzOiByZW1vdmUgb2JqZWN0Rm9yQ29va2llKCkuCisgICAgICAgICogVXNlckludGVyZmFj
ZS9JbnN0cnVtZW50U2lkZWJhclBhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkluc3Ry
dW1lbnRTaWRlYmFyUGFuZWwucHJvdG90eXBlLnNob3dUaW1lbGluZUZvclJlY29yZFR5cGUpOgor
ICAgICAgICBSZXR1cm4gdGhlIHNob3duIHRpbWVsaW5lLCBpZiBhbnkuCisKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5JbnN0cnVtZW50U2lkZWJhclBhbmVsLnByb3RvdHlwZS5zYXZlU3RhdGVUb0Nv
b2tpZSk6IEFkZGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLkluc3RydW1lbnRTaWRlYmFyUGFu
ZWwucHJvdG90eXBlLnJlc3RvcmVTdGF0ZUZyb21Db29raWUpOiBBZGRlZC4KKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5JbnN0cnVtZW50U2lkZWJhclBhbmVsLnByb3RvdHlwZS5zaG93UHJvZmlsZSk6
CisgICAgICAgIFJldHVybiB0aGUgc2hvd24gcHJvZmlsZSwgaWYgYW55LgorCisgICAgICAgICog
VXNlckludGVyZmFjZS9NYWluLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yKTogQWRkZWQgY29v
a2llIGtleXMgZm9yIHRoZSBzZWxlY3RlZCBzaWRlYmFyIGFuZAorICAgICAgICB0eXBlaWRlbnRp
ZmllciBvZiB0aGUgc2lkZWJhcidzIHNlbGVjdGVkIHRyZWUgZWxlbWVudC4KKworICAgICAgICAo
V2ViSW5zcGVjdG9yLmNvbnRlbnRMb2FkZWQpOiBSZW1vdmUgY2FsbGJhY2tzIGZvcgorICAgICAg
ICByZXNvbHZlQW5kU2hvd1BlbmRpbmdDb250ZW50Vmlld0Nvb2tpZSgpLiBDb25zb2xpZGF0ZSBh
bGwgc2F2ZWQKKyAgICAgICAgaW5zcGVjdG9yIHZpZXcgc3RhdGUgaW50byBvbmUgU2V0dGluZy4g
TW92ZSBzcGVjaWFsLWNhc2VkCisgICAgICAgIHJlc3RvcmluZyBvZiB0aGUgY29uc29sZSB0byB0
aGUgcmVzdG9yYXRpb24gbWV0aG9kLiBNb3ZlIHNhdmluZworICAgICAgICBvZiBsYXN0IG9wZW5l
ZCBuYXZpZ2F0aW9uIHBhbmVsIHRvIHRoZSBzYXZpbmcgbWV0aG9kLgorCisgICAgICAgIChXZWJJ
bnNwZWN0b3IuX21haW5SZXNvdXJjZURpZENoYW5nZSk6IFRyeSB0byByZXN0b3JlIHNhdmVkIHZp
ZXcKKyAgICAgICAgc3RhdGUgd2hlbiB0aGUgbWFpbiByZXNvdXJjZSBjaGFuZ2VzLgorCisgICAg
ICAgIChXZWJJbnNwZWN0b3IuX3Byb3Zpc2lvbmFsTG9hZENvbW1pdHRlZCk6IFVwZGF0ZSB0aGUg
c2F2ZWQgdmlldworICAgICAgICBzdGF0ZSB3aGVuIHRoZSBuYXZpZ2F0aW9uIGNvbW1pdHMuIFRo
aXMgaXMgdGhlIGxhc3QgY2hhbmNlIHRvIHNhdmUKKyAgICAgICAgaXQgYmVmb3JlIHRoZSBtYWlu
IHJlc291cmNlIGNoYW5nZXMgYW5kIHRoZSBuYXZpZ2F0aW9uIHBhbmVsIHZpZXcKKyAgICAgICAg
c3RhdGUgaXMgZGlzY2FyZGVkIGFuZCByZWJ1aWx0LgorCisgICAgICAgIChXZWJJbnNwZWN0b3Iu
X3BhZ2VIaWRkZW4pOiBVcGRhdGUgdGhlIHNhdmVkIHZpZXcgc3RhdGUgd2hlbiB0aGUKKyAgICAg
ICAgaW5zcGVjdG9yIHBhZ2UgaXMgaGlkZGVuLCBidXQgYmVmb3JlIHN0YXRlIGlzIGRpc2NhcmRl
ZC4KKworICAgICAgICAoV2ViSW5zcGVjdG9yLl9uYXZpZ2F0aW9uU2lkZWJhclBhbmVsU2VsZWN0
ZWQpOiBEb24ndCBzYXZlIGxhc3QKKyAgICAgICAgbmF2aWdhdGlvbiBzaWRlYmFyIHBhbmVsLgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLl91cGRhdGVDb29raWVGb3JJbnNwZWN0b3JWaWV3U3RhdGUp
OiBSZW5hbWVkIGZyb20KKyAgICAgICAgX3VwZGF0ZUN1cnJlbnRDb250ZW50Vmlld0Nvb2tpZS4g
SXQgZGVsZWdhdGVzIHZpZXcgc3RhdGUKKyAgICAgICAgc2VyaWFsaXphdGlvbiB0byB0aGUgY3Vy
cmVudGx5IG9wZW4gbmF2aWdhdGlvbiBzaWRlYmFyLCByYXRoZXIKKyAgICAgICAgdGhhbiB0aGUg
Y3VycmVudCBjb250ZW50IHZpZXcuCisKKyAgICAgICAgKFdlYkluc3BlY3Rvci5fY29udGVudEJy
b3dzZXJSZXByZXNlbnRlZE9iamVjdHNEaWRDaGFuZ2UpOiBEb24ndAorICAgICAgICBzcHVyaW91
c2x5IHNlcmlhbGl6ZSB0aGUgY3VycmVudCB2aWV3IHN0YXRlIGNvb2tpZSBvbiBldmVyeQorICAg
ICAgICBDb250ZW50VmlldyBjaGFuZ2UuCisKKyAgICAgICAgKFdlYkluc3BlY3Rvci5fcmVzdG9y
ZUluc3BlY3RvclZpZXdTdGF0ZUZyb21Db29raWUpOiBSZW5hbWVkIGZyb20KKyAgICAgICAgX3No
b3dDb250ZW50Vmlld0ZvckNvb2tpZS4gSXQgbm93IHJlc3RvcmVzIGEgc3BlY2lmaWMgbmF2aWdh
dGlvbgorICAgICAgICBwYW5lbCBhbmQgZGVsZWdhdGVzIHJlbWFpbmluZyB2aWV3IHN0YXRlIHJl
c3RvcmF0aW9uIHRvIHRoZSBwYW5lbAorICAgICAgICBpdHNlbGYuIExhc3QtcmVzb3J0IHNlbGVj
dGlvbiBvZiBhbnkgdHJlZSBlbGVtZW50IHdpdGggdGhlIHNhbWUKKyAgICAgICAgdHlwZSBpZGVu
dGlmaWVyIHdhcyBtb3ZlZCB0byB0aGUgbmF2aWdhdGlvbiBwYW5lbCdzIHJlc3RvcmUgbWV0aG9k
LgorCisgICAgICAgICogVXNlckludGVyZmFjZS9OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLmpzOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwucHJvdG90eXBlLnNldCBjb250ZW50
VHJlZU91dGxpbmUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFu
ZWwucHJvdG90eXBlLmNyZWF0ZUNvbnRlbnRUcmVlT3V0bGluZSk6CisgICAgICAgIFNhdmUgcmVm
ZXJlbmNlcyB0byBhbGwgY3JlYXRlZCBUcmVlT3V0bGluZXMgaW4gYSBTZXQsIHNvIHdlIGNhbgor
ICAgICAgICByZXN0b3JlIGFueSB0cmVlJ3Mgc2VsZWN0aW9uLgorCisgICAgICAgIChXZWJJbnNw
ZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQYW5lbC5wcm90b3R5cGUuc2F2ZVN0YXRlVG9Db29raWUp
OgorICAgICAgICBBZGRlZC4gRmluZCB0aGUgc2VsZWN0ZWQgdHJlZSBlbGVtZW50IGZyb20gYWxs
IHRyZWUgb3V0bGluZXMgYW5kCisgICAgICAgIGFzayBpdCB0byBzZXJpYWxpemUgaXRzIGlkZW50
aXR5LgorCisgICAgICAgIChXZWJJbnNwZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQYW5lbC5wcm90
b3R5cGUucmVzdG9yZVN0YXRlRnJvbUNvb2tpZSk6CisgICAgICAgIEFkZGVkLiBFYWdlcmx5IHNl
YXJjaCBleGlzdGluZyB0cmVlIGVsZW1lbnRzIGZvciBhIG1hdGNoaW5nCisgICAgICAgIHJlcHJl
c2VudGVkT2JqZWN0LiBJZiBub25lIGV4aXN0cywgc2F2ZSB0aGUgcGVuZGluZyBjb29raWUgYW5k
CisgICAgICAgIHNjaGVkdWxlIGxhc3QtcmVzb3J0IG1hdGNoaW5nIHVzaW5nIHRoZSBwcm92aWRl
ZCB0aW1lb3V0IGludGVydmFsLgorCisgICAgICAgIChXZWJJbnNwZWN0b3IuTmF2aWdhdGlvblNp
ZGViYXJQYW5lbC5wcm90b3R5cGUuX3RyZWVFbGVtZW50QWRkZWRPckNoYW5nZWQpOgorICAgICAg
ICBDaGVjayBpZiB0aGUgYWRkZWQgdHJlZSBlbGVtZW50IG1hdGNoZXMgYSBwZW5kaW5nIHZpZXcg
c3RhdGUKKyAgICAgICAgY29va2llLCBpZiBvbmUgZXhpc3RzLgorCisgICAgICAgIChXZWJJbnNw
ZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQYW5lbC5wcm90b3R5cGUudHJlZUVsZW1lbnRNYXRjaGVz
Q29va2llKToKKyAgICAgICAgQWRkZWQuIENoZWNrIGlmIHRoZSB0cmVlIGVsZW1lbnQncyByZXBy
ZXNlbnRlZE9iamVjdCBtYXRjaGVzIHRoZQorICAgICAgICBwZW5kaW5nIHZpZXcgc3RhdGUgY29v
a2llLgorCisgICAgICAgIChXZWJJbnNwZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQYW5lbC5wcm90
b3R5cGUuX2NoZWNrRWxlbWVudHNGb3JQZW5kaW5nVmlld1N0YXRlQ29va2llKToKKyAgICAgICAg
QWRkZWQuIEZvciBlYWNoIHByb3ZpZGVkIHRyZWUgZWxlbWVudCwgY2hlY2sgaWYgdGhlIHRyZWUK
KyAgICAgICAgZWxlbWVudCdzIHJlcHJlc2VudGVkIG9iamVjdCBwcm9kdWNlcyB0aGUgc2FtZSBz
ZXJpYWxpemVkIGlkZW50aXR5CisgICAgICAgIGFzIHRoZSBwZW5kaW5nIHZpZXcgc3RhdGUgY29v
a2llIHRoYXQgd2UgYXJlIHRyeWluZyB0byByZXNvbHZlLgorICAgICAgICBJZiBhIG1hdGNoIGlz
IGZvdW5kIChwb3NzaWJseSBieSByZWxheGluZyB0byBtYXRjaGluZyBhbnl0aGluZworICAgICAg
ICB3aXRoIHRoZSBzYW1lIHR5cGUpLCBzZWxlY3QgdGhlIHRyZWUgZWxlbWVudCBhbmQgY2xlYXIg
Ym90aCB0aGUKKyAgICAgICAgcGVuZGluZyB2aWV3IHN0YXRlIGNvb2tpZSBhbmQgbGFzdC1yZXNv
cnQgc2VsZWN0aW9uIHRpbWVyLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9SZXNvdXJjZS5q
czoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZSk6IEFkZCBjb29raWUga2V5cyBhbmQg
dHlwZSBpZGVudGlmaWVyLgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlLnByb3RvdHlw
ZS5zYXZlSWRlbnRpdHlUb0Nvb2tpZSk6IEFkZGVkLgorCisgICAgICAgICogVXNlckludGVyZmFj
ZS9SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5S
ZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5wcm90b3R5cGUuc2F2ZVRvQ29va2llKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5wcm90b3R5cGUucmVz
dG9yZUZyb21Db29raWUpOgorICAgICAgICBTaW5jZSBpZGVudGl0eSBzdGF0ZSBpcyBzZXJpYWxp
emVkIGJ5IHRoZSByZXByZXNlbnRlZE9iamVjdCwgdGhlc2UKKyAgICAgICAgbWV0aG9kcyBvbmx5
IG5lZWQgdG8gc2F2ZSB2aWV3LXNwZWNpZmljIHN0YXRlLCBzdWNoIGFzIHRoZSB2aXNpYmxlCisg
ICAgICAgIHN1YnZpZXcuIFJlbW92ZSBleHRyYW5lb3VzIHN0YXRlLgorCisgICAgICAgICogVXNl
ckludGVyZmFjZS9TY3JpcHQuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0KTogQWRk
IGNvb2tpZSBrZXlzIGFuZCB0eXBlIGlkZW50aWZpZXIuCisgICAgICAgIChXZWJJbnNwZWN0b3Iu
U2NyaXB0LnByb3RvdHlwZS5zYXZlSWRlbnRpdHlUb0Nvb2tpZSk6IEFkZGVkLgorICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvU3RvcmFnZU1hbmFnZXIuanM6IHJlbW92ZSBvYmplY3RGb3JDb29raWUo
KS4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1RpbWVsaW5lTWFuYWdlci5qczogcmVtb3ZlIG9i
amVjdEZvckNvb2tpZSgpLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVGltZWxpbmVzQ29udGVu
dFZpZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVzQ29udGVudFZpZXcucHJv
dG90eXBlLnNhdmVUb0Nvb2tpZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVzQ29u
dGVudFZpZXcucHJvdG90eXBlLnJlc3RvcmVGcm9tQ29va2llKToKKyAgICAgICAgU2luY2UgaWRl
bnRpdHkgc3RhdGUgaXMgc2VyaWFsaXplZCBieSB0aGUgcmVwcmVzZW50ZWRPYmplY3QsIHRoZXNl
CisgICAgICAgIG1ldGhvZHMgb25seSBuZWVkIHRvIHNhdmUgdmlldy1zcGVjaWZpYyBzdGF0ZSwg
c3VjaCBhcyB0aGUgdmlzaWJsZQorICAgICAgICBzdWJ2aWV3LiBSZW1vdmUgZXh0cmFuZW91cyBz
dGF0ZS4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVHJlZU91dGxpbmUuanM6IEFkZCBUcmVl
T3V0bGluZS5wcm90b3R5cGUuY29uc3RydWN0b3IKKyAgICAgICAgc28gb3RoZXIgY29kZSBjYW4g
YXNzdW1lIHRoZSBjb25zdHJ1Y3RvciBwcm9wZXJ0eSBleGlzdHMuCisKIDIwMTMtMTEtMjYgIEFu
dG9pbmUgUXVpbnQgIDxncmFvdXRzQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9y
OiBBbGxvdyBzaG93aW5nIGEgY29udGV4dCBtZW51IG9uIGFsbCBtb3VzZSBldmVudHMuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9BcHBsaWNhdGlvbkNh
Y2hlRnJhbWUuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9BcHBsaWNh
dGlvbkNhY2hlRnJhbWUuanMKaW5kZXggODRmNTA2YWMzNjk3N2ZiM2I0YmFlNTViNjdkZGU3Y2Nj
MTczOWM3Mi4uNGQ3NTg3NWNkNTY0N2QwN2M0ZmMwODU2ZWNlMmNjZjkxMTY0OTdlNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQXBwbGljYXRpb25DYWNo
ZUZyYW1lLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0FwcGxp
Y2F0aW9uQ2FjaGVGcmFtZS5qcwpAQCAtMzUsOSArMzUsMTUgQEAgV2ViSW5zcGVjdG9yLkFwcGxp
Y2F0aW9uQ2FjaGVGcmFtZSA9IGZ1bmN0aW9uKGZyYW1lLCBtYW5pZmVzdCwgc3RhdHVzKQogICAg
IHRoaXMuX3N0YXR1cyA9IHN0YXR1czsKIH07CiAKK1dlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNh
Y2hlRnJhbWUuVHlwZUlkZW50aWZpZXIgPSAiYXBwbGljYXRpb24tY2FjaGUtZnJhbWUiOworV2Vi
SW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVGcmFtZS5GcmFtZVVSTENvb2tpZUtleSA9ICJhcHBs
aWNhdGlvbi1jYWNoZS1mcmFtZS11cmwiOworV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVG
cmFtZS5NYW5pZmVzdFVSTENvb2tpZUtleSA9ICJhcHBsaWNhdGlvbi1jYWNoZS1mcmFtZS1tYW5p
ZmVzdC11cmwiOworCiBXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZUZyYW1lLnByb3RvdHlw
ZSA9IHsKICAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVGcmFt
ZSwKICAgICAKKyAgICAvLyBQdWJsaWMKKwogICAgIGdldCBmcmFtZSgpCiAgICAgewogICAgICAg
ICByZXR1cm4gdGhpcy5fZnJhbWU7CkBAIC01Niw2ICs2MiwxMiBAQCBXZWJJbnNwZWN0b3IuQXBw
bGljYXRpb25DYWNoZUZyYW1lLnByb3RvdHlwZSA9IHsKICAgICBzZXQgc3RhdHVzKHN0YXR1cykK
ICAgICB7CiAgICAgICAgIHRoaXMuX3N0YXR1cyA9IHN0YXR1czsKKyAgICB9LAorCisgICAgc2F2
ZUlkZW50aXR5VG9Db29raWU6IGZ1bmN0aW9uKGNvb2tpZSkKKyAgICB7CisgICAgICAgIGNvb2tp
ZVtXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZUZyYW1lLkZyYW1lVVJMQ29va2llS2V5XSA9
IHRoaXMuZnJhbWUudXJsOworICAgICAgICBjb29raWVbV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9u
Q2FjaGVGcmFtZS5NYW5pZmVzdFVSTENvb2tpZUtleV0gPSB0aGlzLm1hbmlmZXN0Lm1hbmlmZXN0
VVJMOwogICAgIH0KIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmpzIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuanMKaW5kZXggYzU1NTg2
YzdjODc0MTlkNjRkMmI1NTdkMTM5OGM1ZGY1ZWZlYjljYS4uNmJhYTM0M2FhZmNmYzBiNDdiNDE3
NTZhY2Y5MTI2YTM1MzE3YTQ3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuanMKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuanMKQEAgLTEw
MiwxOSArMTAyLDYgQEAgV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgQXBwbGljYXRpb25DYWNoZUFnZW50LmdldEFwcGxpY2F0aW9uQ2Fj
aGVGb3JGcmFtZShmcmFtZS5pZCwgY2FsbGJhY2tXcmFwcGVyKTsKICAgICB9LAogCi0gICAgb2Jq
ZWN0Rm9yQ29va2llOiBmdW5jdGlvbihjb29raWUsIG1hdGNoT25UeXBlQWxvbmUpCi0gICAgewot
ICAgICAgICBjb25zb2xlLmFzc2VydChjb29raWUudHlwZSAmJiBjb29raWUudHlwZSA9PT0gV2Vi
SW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29va2llVHlwZS5BcHBsaWNhdGlvbkNhY2hlKTsKLQotICAg
ICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX2FwcGxpY2F0aW9uQ2FjaGVPYmplY3RzLmxl
bmd0aDsgKytpKSB7Ci0gICAgICAgICAgICB2YXIgb2JqZWN0ID0gdGhpcy5fYXBwbGljYXRpb25D
YWNoZU9iamVjdHNbaV07Ci0gICAgICAgICAgICBpZiAob2JqZWN0LmZyYW1lLnVybCA9PT0gY29v
a2llLmZyYW1lICYmIG9iamVjdC5tYW5pZmVzdC5tYW5pZmVzdFVSTCA9PT0gY29va2llLm1hbmlm
ZXN0KQotICAgICAgICAgICAgICAgIHJldHVybiBvYmplY3Q7Ci0gICAgICAgIH0KLQotICAgICAg
ICByZXR1cm4gbWF0Y2hPblR5cGVBbG9uZSAmJiB0aGlzLl9hcHBsaWNhdGlvbkNhY2hlT2JqZWN0
cy5sZW5ndGggPyB0aGlzLl9hcHBsaWNhdGlvbkNhY2hlT2JqZWN0c1swXSA6IG51bGw7Ci0gICAg
fSwKLQogICAgIC8vIFByaXZhdGUKIAogICAgIF9tYWluUmVzb3VyY2VEaWRDaGFuZ2U6IGZ1bmN0
aW9uKGV2ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvQnJlYWtwb2ludC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jy
ZWFrcG9pbnQuanMKaW5kZXggOWU2MzhlNWQxNTJjOTExZjMzNmIzNWY1YWE0Njk0MDVmNWZkNTk2
OS4uNWZjOGQwMzEyOWMwNmI3MTRkMmU5ZDhmN2RmNzA0ZGI5ZjJhOTM3YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQnJlYWtwb2ludC5qcworKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CcmVha3BvaW50LmpzCkBAIC02OSw2
ICs2OSwxMSBAQCBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5Qb3BvdmVyT3B0aW9uc0F1dG9Db250
aW51ZUlucHV0SWQgPSAiZWRpdC1icmVha3BvaW50LXBvcAogCiBXZWJJbnNwZWN0b3IuQnJlYWtw
b2ludC5EZWZhdWx0QnJlYWtwb2ludEFjdGlvblR5cGUgPSBXZWJJbnNwZWN0b3IuQnJlYWtwb2lu
dEFjdGlvbi5UeXBlLkxvZzsKIAorV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQuVHlwZUlkZW50aWZp
ZXIgPSAiYnJlYWtwb2ludCI7CitXZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5VUkxDb29raWVLZXkg
PSAiYnJlYWtwb2ludC11cmwiOworV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQuTGluZU51bWJlckNv
b2tpZUtleSA9ICJicmVha3BvaW50LWxpbmUtbnVtYmVyIjsKK1dlYkluc3BlY3Rvci5CcmVha3Bv
aW50LkNvbHVtbk51bWJlckNvb2tpZUtleSA9ICJicmVha3BvaW50LWNvbHVtbi1udW1iZXIiOwor
CiBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5FdmVudCA9IHsKICAgICBEaXNhYmxlZFN0YXRlRGlk
Q2hhbmdlOiAiYnJlYWtwb2ludC1kaXNhYmxlZC1zdGF0ZS1kaWQtY2hhbmdlIiwKICAgICBSZXNv
bHZlZFN0YXRlRGlkQ2hhbmdlOiAiYnJlYWtwb2ludC1yZXNvbHZlZC1zdGF0ZS1kaWQtY2hhbmdl
IiwKQEAgLTI5MCw2ICsyOTUsMTMgQEAgV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQucHJvdG90eXBl
ID0gewogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3Iu
QnJlYWtwb2ludC5FdmVudC5BY3Rpb25zRGlkQ2hhbmdlKTsKICAgICB9LAogCisgICAgc2F2ZUlk
ZW50aXR5VG9Db29raWU6IGZ1bmN0aW9uKGNvb2tpZSkKKyAgICB7CisgICAgICAgIGNvb2tpZVtX
ZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5VUkxDb29raWVLZXldID0gdGhpcy51cmw7CisgICAgICAg
IGNvb2tpZVtXZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5MaW5lTnVtYmVyQ29va2llS2V5XSA9IHRo
aXMuc291cmNlQ29kZUxvY2F0aW9uLmxpbmVOdW1iZXI7CisgICAgICAgIGNvb2tpZVtXZWJJbnNw
ZWN0b3IuQnJlYWtwb2ludC5Db2x1bW5OdW1iZXJDb29raWVLZXldID0gdGhpcy5zb3VyY2VDb2Rl
TG9jYXRpb24uY29sdW1uTnVtYmVyOworICAgIH0sCisKICAgICAvLyBQcm90ZWN0ZWQgKENhbGxl
ZCBieSBCcmVha3BvaW50QWN0aW9uKQogCiAgICAgYnJlYWtwb2ludEFjdGlvbkRpZENoYW5nZTog
ZnVuY3Rpb24oYWN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvQ29va2llU3RvcmFnZU9iamVjdC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL0Nvb2tpZVN0b3JhZ2VPYmplY3QuanMKaW5kZXggMTFhM2EzYzEyNjRiZTVk
NWVmYjE2YWQ3M2M1NWZiOGIzMDA4MmUwMy4uZDFjYTk2ZWIwODRmOGRjMGUwMDYzMTdlYjg3MDBh
ZThjMTU1Y2Q5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvQ29va2llU3RvcmFnZU9iamVjdC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Db29raWVTdG9yYWdlT2JqZWN0LmpzCkBAIC0yOCw2ICsyOCw5IEBAIFdlYklu
c3BlY3Rvci5Db29raWVTdG9yYWdlT2JqZWN0ID0gZnVuY3Rpb24oaG9zdCkKICAgICB0aGlzLl9o
b3N0ID0gaG9zdDsKIH07CiAKK1dlYkluc3BlY3Rvci5Db29raWVTdG9yYWdlT2JqZWN0LlR5cGVJ
ZGVudGlmaWVyID0gImNvb2tpZS1zdG9yYWdlIjsKK1dlYkluc3BlY3Rvci5Db29raWVTdG9yYWdl
T2JqZWN0LkNvb2tpZUhvc3RDb29raWVLZXkgPSAiY29va2llLXN0b3JhZ2UtaG9zdCI7CisKIFdl
Ykluc3BlY3Rvci5Db29raWVTdG9yYWdlT2JqZWN0LnByb3RvdHlwZSA9IHsKICAgICBjb25zdHJ1
Y3RvcjogV2ViSW5zcGVjdG9yLkNvb2tpZVN0b3JhZ2VPYmplY3QsCiAKQEAgLTM2LDUgKzM5LDkg
QEAgV2ViSW5zcGVjdG9yLkNvb2tpZVN0b3JhZ2VPYmplY3QucHJvdG90eXBlID0gewogICAgICAg
ICByZXR1cm4gdGhpcy5faG9zdDsKICAgICB9LAogICAgIAorICAgIHNhdmVJZGVudGl0eVRvQ29v
a2llOiBmdW5jdGlvbihjb29raWUpCisgICAgeworICAgICAgICBjb29raWVbV2ViSW5zcGVjdG9y
LkNvb2tpZVN0b3JhZ2VPYmplY3QuQ29va2llSG9zdENvb2tpZUtleV0gPSB0aGlzLmhvc3Q7Cisg
ICAgfQogICAgIC8vIEZJWE1FOiBUaGlzIGNsYXNzIHdpbGwgbmVlZCB0byBsb29rIHVwIGNvb2tp
ZXMgdGhhdCBhcmUgc2V0IGZvciB0aGlzIGhvc3QuCiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRE9NU3RvcmFnZU9iamVjdC5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0RPTVN0b3JhZ2VPYmplY3QuanMKaW5kZXggMWMz
NzIwZjg5OWQwNWEwN2ZkNjhjM2ZmYjEwMTJmMzIxMWM3MzAzNC4uZDZmZDFlMDQ2ZDE1ZGI3YTFm
YWY2OTRlNDY5NDEwNDAyMTE2OTU0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvRE9NU3RvcmFnZU9iamVjdC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9ET01TdG9yYWdlT2JqZWN0LmpzCkBAIC0zMCw2ICszMCwxMCBA
QCBXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZU9iamVjdCA9IGZ1bmN0aW9uKGlkLCBob3N0LCBpc0xv
Y2FsU3RvcmFnZSkKICAgICB0aGlzLl9pc0xvY2FsU3RvcmFnZSA9IGlzTG9jYWxTdG9yYWdlOwog
fTsKIAorV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VPYmplY3QuVHlwZUlkZW50aWZpZXIgPSAiZG9t
LXN0b3JhZ2UiOworV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VPYmplY3QuSG9zdENvb2tpZUtleSA9
ICJkb20tc3RvcmFnZS1vYmplY3QtaG9zdCI7CitXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZU9iamVj
dC5Mb2NhbFN0b3JhZ2VDb29raWVLZXkgPSAiZG9tLXN0b3JhZ2Utb2JqZWN0LWxvY2FsLXN0b3Jh
Z2UiOworCiBXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZU9iamVjdC5wcm90b3R5cGUgPSB7CiAgICAg
Y29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5ET01TdG9yYWdlT2JqZWN0LAogICAgIApAQCAtNDMs
NiArNDcsMTIgQEAgV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VPYmplY3QucHJvdG90eXBlID0gewog
ICAgICAgICByZXR1cm4gdGhpcy5faG9zdDsKICAgICB9LAogCisgICAgc2F2ZUlkZW50aXR5VG9D
b29raWU6IGZ1bmN0aW9uKGNvb2tpZSkKKyAgICB7CisgICAgICAgIGNvb2tpZVtXZWJJbnNwZWN0
b3IuRE9NU3RvcmFnZU9iamVjdC5Ib3N0Q29va2llS2V5XSA9IHRoaXMuaG9zdDsKKyAgICAgICAg
Y29va2llW1dlYkluc3BlY3Rvci5ET01TdG9yYWdlT2JqZWN0LkxvY2FsU3RvcmFnZUNvb2tpZUtl
eV0gPSB0aGlzLmlzTG9jYWxTdG9yYWdlKCk7CisgICAgfSwKKwogICAgIGlzTG9jYWxTdG9yYWdl
OiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5faXNMb2NhbFN0b3JhZ2U7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9EYXRhYmFz
ZU9iamVjdC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0RhdGFiYXNl
T2JqZWN0LmpzCmluZGV4IGMzNjkzZTNhNTUxNDJlZjExYThmZTcyNmM4YmZjYWY2MzNhNGQ5NjIu
LjAxODE1OTc2N2I5N2UxNmI1NGU5N2NlNzYxMmFmN2NjZjI0MDNhNDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0RhdGFiYXNlT2JqZWN0LmpzCisrKyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0RhdGFiYXNlT2JqZWN0LmpzCkBA
IC0zMSw5ICszMSwxNSBAQCBXZWJJbnNwZWN0b3IuRGF0YWJhc2VPYmplY3QgPSBmdW5jdGlvbihp
ZCwgaG9zdCwgbmFtZSwgdmVyc2lvbikKICAgICB0aGlzLl92ZXJzaW9uID0gdmVyc2lvbjsKIH07
CiAKK1dlYkluc3BlY3Rvci5EYXRhYmFzZU9iamVjdC5UeXBlSWRlbnRpZmllciA9ICJkYXRhYmFz
ZSI7CitXZWJJbnNwZWN0b3IuRGF0YWJhc2VPYmplY3QuSG9zdENvb2tpZUtleSA9ICJkYXRhYmFz
ZS1vYmplY3QtaG9zdCI7CitXZWJJbnNwZWN0b3IuRGF0YWJhc2VPYmplY3QuTmFtZUNvb2tpZUtl
eSA9ICJkYXRhYmFzZS1vYmplY3QtbmFtZSI7CisKIFdlYkluc3BlY3Rvci5EYXRhYmFzZU9iamVj
dC5wcm90b3R5cGUgPSB7CiAgICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5EYXRhYmFzZU9i
amVjdCwKICAgICAKKyAgICAvLyBQdWJsaWMKKwogICAgIGdldCBpZCgpCiAgICAgewogICAgICAg
ICByZXR1cm4gdGhpcy5faWQ7CkBAIC01NCw2ICs2MCwxMiBAQCBXZWJJbnNwZWN0b3IuRGF0YWJh
c2VPYmplY3QucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gdGhpcy5fdmVyc2lvbjsKICAg
ICB9LAogICAgIAorICAgIHNhdmVJZGVudGl0eVRvQ29va2llOiBmdW5jdGlvbihjb29raWUpCisg
ICAgeworICAgICAgICBjb29raWVbV2ViSW5zcGVjdG9yLkRhdGFiYXNlT2JqZWN0Lkhvc3RDb29r
aWVLZXldID0gdGhpcy5ob3N0OworICAgICAgICBjb29raWVbV2ViSW5zcGVjdG9yLkRhdGFiYXNl
T2JqZWN0Lk5hbWVDb29raWVLZXldID0gdGhpcy5uYW1lOworICAgIH0sCisKICAgICBnZXRUYWJs
ZU5hbWVzOiBmdW5jdGlvbihjYWxsYmFjaykKICAgICB7CiAgICAgICAgIGZ1bmN0aW9uIHNvcnRp
bmdDYWxsYmFjayhlcnJvciwgbmFtZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9EYXRhYmFzZVRhYmxlT2JqZWN0LmpzIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvRGF0YWJhc2VUYWJsZU9iamVjdC5qcwppbmRleCAyNzM2ODM5
ODE4YzMwYWQ5MjAzMjE4NWUwY2Y3ZGFmMDMwZGQ0MDYxLi5jZGY0OTgyNWJiMWM0MjJjYTZjODdl
ZGEwYWZlZjBiNzVjNzUwNDhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9EYXRhYmFzZVRhYmxlT2JqZWN0LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL0RhdGFiYXNlVGFibGVPYmplY3QuanMKQEAgLTMxLDYgKzMxLDkg
QEAgV2ViSW5zcGVjdG9yLkRhdGFiYXNlVGFibGVPYmplY3QgPSBmdW5jdGlvbihuYW1lLCBkYXRh
YmFzZSkKICAgICB0aGlzLl9kYXRhYmFzZSA9IGRhdGFiYXNlOwogfTsKIAorV2ViSW5zcGVjdG9y
LkRhdGFiYXNlVGFibGVPYmplY3QuVHlwZUlkZW50aWZpZXIgPSAiZGF0YWJhc2UtdGFibGUiOwor
V2ViSW5zcGVjdG9yLkRhdGFiYXNlVGFibGVPYmplY3QuTmFtZUNvb2tpZUtleSA9ICJkYXRhYmFz
ZS10YWJsZS1vYmplY3QtbmFtZSI7CisKIFdlYkluc3BlY3Rvci5EYXRhYmFzZVRhYmxlT2JqZWN0
LnByb3RvdHlwZSA9IHsKICAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkRhdGFiYXNlVGFi
bGVPYmplY3QsCiAgICAgCkBAIC00Myw2ICs0NiwxMSBAQCBXZWJJbnNwZWN0b3IuRGF0YWJhc2VU
YWJsZU9iamVjdC5wcm90b3R5cGUgPSB7CiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZGF0
YWJhc2U7CiAgICAgfQorCisgICAgc2F2ZUlkZW50aXR5VG9Db29raWU6IGZ1bmN0aW9uKGNvb2tp
ZSkKKyAgICB7CisgICAgICAgIGNvb2tpZVtXZWJJbnNwZWN0b3IuRGF0YWJhc2VUYWJsZU9iamVj
dC5OYW1lQ29va2llS2V5XSA9IHRoaXMubmFtZTsKKyAgICB9LAogfTsKIAogV2ViSW5zcGVjdG9y
LkRhdGFiYXNlVGFibGVPYmplY3QucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5P
YmplY3QucHJvdG90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvRGVidWdnZXJTaWRlYmFyUGFuZWwuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9EZWJ1Z2dlclNpZGViYXJQYW5lbC5qcwppbmRleCA0NDI4NDRjOGNmOTY4
ZGMwZmFjNjA1Mjc5MjgzZTEzMTNiOThhZDljLi5hYjIwODRhNTAxNjJjYTQ5ZjhjNzhhOTMzMTA3
NmIyMTc5ZmFlZWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9EZWJ1Z2dlclNpZGViYXJQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9EZWJ1Z2dlclNpZGViYXJQYW5lbC5qcwpAQCAtMTIwLDYgKzEyMCw5IEBA
IFdlYkluc3BlY3Rvci5EZWJ1Z2dlclNpZGViYXJQYW5lbCA9IGZ1bmN0aW9uKCkKIFdlYkluc3Bl
Y3Rvci5EZWJ1Z2dlclNpZGViYXJQYW5lbC5PZmZzZXRTZWN0aW9uc1N0eWxlQ2xhc3NOYW1lID0g
Im9mZnNldC1zZWN0aW9ucyI7CiBXZWJJbnNwZWN0b3IuRGVidWdnZXJTaWRlYmFyUGFuZWwuRXhj
ZXB0aW9uSWNvblN0eWxlQ2xhc3NOYW1lID0gImJyZWFrcG9pbnQtZXhjZXB0aW9uLWljb24iOwog
CitXZWJJbnNwZWN0b3IuRGVidWdnZXJTaWRlYmFyUGFuZWwuU2VsZWN0ZWRBbGxFeGNlcHRpb25z
Q29va2llS2V5ID0gImRlYnVnZ2VyLXNpZGViYXItcGFuZWwtYWxsLWV4Y2VwdGlvbnMtYnJlYWtw
b2ludCI7CitXZWJJbnNwZWN0b3IuRGVidWdnZXJTaWRlYmFyUGFuZWwuU2VsZWN0ZWRBbGxVbmNh
dWdodEV4Y2VwdGlvbnNDb29raWVLZXkgPSAiZGVidWdnZXItc2lkZWJhci1wYW5lbC1hbGwtdW5j
YXVnaHQtZXhjZXB0aW9ucy1icmVha3BvaW50IjsKKwogV2ViSW5zcGVjdG9yLkRlYnVnZ2VyU2lk
ZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkRl
YnVnZ2VyU2lkZWJhclBhbmVsLAogCkBAIC0xMzQsNiArMTM3LDQwIEBAIFdlYkluc3BlY3Rvci5E
ZWJ1Z2dlclNpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiB0aGlzLmNv
bnRlbnRUcmVlT3V0bGluZS5nZXRDYWNoZWRUcmVlRWxlbWVudChyZXByZXNlbnRlZE9iamVjdCk7
CiAgICAgfSwKIAorICAgIC8vIFByb3RlY3RlZAorCisgICAgc2F2ZVN0YXRlVG9Db29raWU6IGZ1
bmN0aW9uKGNvb2tpZSkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGNvb2tpZSk7CisK
KyAgICAgICAgdmFyIHNlbGVjdGVkVHJlZUVsZW1lbnQgPSB0aGlzLl9icmVha3BvaW50c0NvbnRl
bnRUcmVlT3V0bGluZS5zZWxlY3RlZFRyZWVFbGVtZW50OworICAgICAgICBpZiAoIXNlbGVjdGVk
VHJlZUVsZW1lbnQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdmFyIHJlcHJlc2Vu
dGVkT2JqZWN0ID0gc2VsZWN0ZWRUcmVlRWxlbWVudC5yZXByZXNlbnRlZE9iamVjdDsKKworICAg
ICAgICBpZiAocmVwcmVzZW50ZWRPYmplY3QgPT09IFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1hbmFn
ZXIuYWxsRXhjZXB0aW9uc0JyZWFrcG9pbnQpCisgICAgICAgICAgICBjb29raWVbV2ViSW5zcGVj
dG9yLkRlYnVnZ2VyU2lkZWJhclBhbmVsLlNlbGVjdGVkQWxsRXhjZXB0aW9uc0Nvb2tpZUtleV0g
PSB0cnVlOworCisgICAgICAgIGlmIChyZXByZXNlbnRlZE9iamVjdCA9PT0gV2ViSW5zcGVjdG9y
LmRlYnVnZ2VyTWFuYWdlci5hbGxVbmNhdWdodEV4Y2VwdGlvbnNCcmVha3BvaW50KQorICAgICAg
ICAgICAgY29va2llW1dlYkluc3BlY3Rvci5EZWJ1Z2dlclNpZGViYXJQYW5lbC5TZWxlY3RlZEFs
bFVuY2F1Z2h0RXhjZXB0aW9uc0Nvb2tpZUtleV0gPSB0cnVlOworCisgICAgICAgIFdlYkluc3Bl
Y3Rvci5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLnByb3RvdHlwZS5zYXZlU3RhdGVUb0Nvb2tpZS5j
YWxsKHRoaXMsIGNvb2tpZSk7CisgICAgfSwKKworICAgIHJlc3RvcmVTdGF0ZUZyb21Db29raWU6
IGZ1bmN0aW9uKGNvb2tpZSkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGNvb2tpZSk7
CisKKyAgICAgICAgLy8gRWFnZXJseSByZXNvbHZlIHRoZSBzcGVjaWFsIGJyZWFrcG9pbnRzOyBv
dGhlcndpc2UsIHVzZSB0aGUgZGVmYXVsdCBiZWhhdmlvci4KKyAgICAgICAgaWYgKGNvb2tpZVtX
ZWJJbnNwZWN0b3IuRGVidWdnZXJTaWRlYmFyUGFuZWwuU2VsZWN0ZWRBbGxFeGNlcHRpb25zQ29v
a2llS2V5XSkKKyAgICAgICAgICAgIHRoaXMuX2FsbEV4Y2VwdGlvbnNCcmVha3BvaW50VHJlZUVs
ZW1lbnQucmV2ZWFsQW5kU2VsZWN0KCk7CisgICAgICAgIGVsc2UgaWYgKGNvb2tpZVtXZWJJbnNw
ZWN0b3IuRGVidWdnZXJTaWRlYmFyUGFuZWwuU2VsZWN0ZWRBbGxVbmNhdWdodEV4Y2VwdGlvbnND
b29raWVLZXldKQorICAgICAgICAgICAgdGhpcy5fYWxsVW5jYXVnaHRFeGNlcHRpb25zQnJlYWtw
b2ludFRyZWVFbGVtZW50LnJldmVhbEFuZFNlbGVjdCgpOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQYW5lbC5wcm90b3R5cGUucmVzdG9y
ZVN0YXRlRnJvbUNvb2tpZS5jYWxsKHRoaXMsIGNvb2tpZSk7CisgICAgfSwKKwogICAgIC8vIFBy
aXZhdGUKIAogICAgIF9kZWJ1Z2dlclBhdXNlUmVzdW1lQnV0dG9uQ2xpY2tlZDogZnVuY3Rpb24o
ZXZlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9G
cmFtZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0ZyYW1lLmpzCmlu
ZGV4IDU5OGZmZTEwODdjYjQyZWMyZTVhN2MxNDAzZmZjNzljMzIwY2Q2ZDguLjA1ZGQ1OGIzNWRi
ZTQxNGE2NzFjMTg2ZjUxYTQzZWFhNTRjYzYxZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0ZyYW1lLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL0ZyYW1lLmpzCkBAIC02Nyw2ICs2Nyw5IEBAIFdlYkluc3BlY3Rvci5G
cmFtZS5FdmVudCA9IHsKICAgICBFeGVjdXRpb25Db250ZXh0c0NsZWFyZWQ6ICJmcmFtZS1leGVj
dXRpb24tY29udGV4dHMtY2xlYXJlZCIKIH07CiAKK1dlYkluc3BlY3Rvci5GcmFtZS5UeXBlSWRl
bnRpZmllciA9ICJGcmFtZSI7CitXZWJJbnNwZWN0b3IuRnJhbWUuTWFpblJlc291cmNlVVJMQ29v
a2llS2V5ID0gImZyYW1lLW1haW4tcmVzb3VyY2UtdXJsIjsKKwogV2ViSW5zcGVjdG9yLkZyYW1l
LnByb3RvdHlwZSA9IHsKICAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkZyYW1lLAogCkBA
IC00MzIsNiArNDM1LDExIEBAIFdlYkluc3BlY3Rvci5GcmFtZS5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5GcmFtZS5FdmVu
dC5BbGxSZXNvdXJjZXNSZW1vdmVkKTsKICAgICB9LAogCisgICAgc2F2ZUlkZW50aXR5VG9Db29r
aWU6IGZ1bmN0aW9uKGNvb2tpZSkKKyAgICB7CisgICAgICAgIGNvb2tpZVtXZWJJbnNwZWN0b3Iu
RnJhbWUuTWFpblJlc291cmNlVVJMQ29va2llS2V5XSA9IHRoaXMubWFpblJlc291cmNlLnVybDsK
KyAgICB9LAorCiAgICAgLy8gUHJpdmF0ZQogCiAgICAgX2lzUHJvdmlzaW9uYWxSZXNvdXJjZTog
ZnVuY3Rpb24ocmVzb3VyY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9GcmFtZVJlc291cmNlTWFuYWdlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL0ZyYW1lUmVzb3VyY2VNYW5hZ2VyLmpzCmluZGV4IDI3M2Q3OWI3NTRi
Njc5MzFhMzg0MWJiNjlmZDkyZGFkN2FlZWRjOTcuLjhlZWZlMTcwMDZiNGJlYWZjODQ5N2E5NmFh
YTYwNDcwMWI3ODhmOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL0ZyYW1lUmVzb3VyY2VNYW5hZ2VyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL0ZyYW1lUmVzb3VyY2VNYW5hZ2VyLmpzCkBAIC04MCwyMCArODAsNiBA
QCBXZWJJbnNwZWN0b3IuRnJhbWVSZXNvdXJjZU1hbmFnZXIucHJvdG90eXBlID0gewogICAgICAg
ICByZXR1cm4gdGhpcy5fZnJhbWVJZGVudGlmaWVyTWFwW2ZyYW1lSWRdIHx8IG51bGw7CiAgICAg
fSwKIAotCi0gICAgb2JqZWN0Rm9yQ29va2llOiBmdW5jdGlvbihjb29raWUpCi0gICAgewotICAg
ICAgICB2YXIgcmVwcmVzZW50ZWRPYmplY3QgPSBjb29raWUudXJsID8gdGhpcy5yZXNvdXJjZUZv
clVSTChjb29raWUudXJsKSA6IHRoaXMubWFpbkZyYW1lOwotCi0gICAgICAgIGlmICghcmVwcmVz
ZW50ZWRPYmplY3QpCi0gICAgICAgICAgICByZXByZXNlbnRlZE9iamVjdCA9IHRoaXMubWFpbkZy
YW1lOwotCi0gICAgICAgIGlmIChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3Bl
Y3Rvci5SZXNvdXJjZSAmJiByZXByZXNlbnRlZE9iamVjdC5pc01haW5SZXNvdXJjZSgpKQotICAg
ICAgICAgICAgcmVwcmVzZW50ZWRPYmplY3QgPSByZXByZXNlbnRlZE9iamVjdC5wYXJlbnRGcmFt
ZTsKLQotICAgICAgICByZXR1cm4gcmVwcmVzZW50ZWRPYmplY3Q7Ci0gICAgfSwKLQogICAgIGZy
YW1lRGlkTmF2aWdhdGU6IGZ1bmN0aW9uKGZyYW1lUGF5bG9hZCkKICAgICB7CiAgICAgICAgIC8v
IENhbGxlZCBmcm9tIFdlYkluc3BlY3Rvci5QYWdlT2JzZXJ2ZXIuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9JbnN0cnVtZW50U2lkZWJhclBhbmVsLmpz
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSW5zdHJ1bWVudFNpZGViYXJQ
YW5lbC5qcwppbmRleCBmOGY5YmJjZWU3YmNmNTMzNzEwZThhMDk2MjM4YjIzOWYxOTU4OGUxLi5j
MGI4MGRlODVlOWE0ZmUxM2FjZmNjZGYzNjIyOTNlZGUwODY2NjZjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9JbnN0cnVtZW50U2lkZWJhclBhbmVsLmpz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0luc3RydW1lbnRTaWRl
YmFyUGFuZWwuanMKQEAgLTE1OCw2ICsxNTgsMTAgQEAgV2ViSW5zcGVjdG9yLkluc3RydW1lbnRT
aWRlYmFyUGFuZWwuU3RhcnRKYXZhU2NyaXB0UHJvZmlsZVZhbHVlID0gInN0YXJ0LWphdmFzY3IK
IFdlYkluc3BlY3Rvci5JbnN0cnVtZW50U2lkZWJhclBhbmVsLlN0YXJ0Q1NTU2VsZWN0b3JQcm9m
aWxlVmFsdWUgPSAic3RhcnQtY3NzLXNlbGVjdG9yLXByb2ZpbGUiOwogV2ViSW5zcGVjdG9yLklu
c3RydW1lbnRTaWRlYmFyUGFuZWwuU3RhcnRDYW52YXNQcm9maWxlVmFsdWUgPSAic3RhcnQtY2Fu
dmFzLXByb2ZpbGUiOwogCitXZWJJbnNwZWN0b3IuSW5zdHJ1bWVudFNpZGViYXJQYW5lbC5TZWxl
Y3RlZFRpbWVsaW5lQ29va2llS2V5ID0gImluc3RydW1lbnQtc2lkZWJhci1wYW5lbC1zZWxlY3Rl
ZC10aW1lbGluZSI7CitXZWJJbnNwZWN0b3IuSW5zdHJ1bWVudFNpZGViYXJQYW5lbC5TZWxlY3Rl
ZFByb2ZpbGVUeXBlQ29va2llS2V5ID0gImluc3RydW1lbnQtc2lkZWJhci1wYW5lbC1zZWxlY3Rl
ZC1wcm9maWxlLXR5cGUiOworV2ViSW5zcGVjdG9yLkluc3RydW1lbnRTaWRlYmFyUGFuZWwuU2Vs
ZWN0ZWRQcm9maWxlVGl0bGVDb29raWVLZXkgPSAiaW5zdHJ1bWVudC1zaWRlYmFyLXBhbmVsLXNl
bGVjdGVkLXByb2ZpbGUtdGl0bGUiOworCiBXZWJJbnNwZWN0b3IuSW5zdHJ1bWVudFNpZGViYXJQ
YW5lbC5wcm90b3R5cGUgPSB7CiAgICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5JbnN0cnVt
ZW50U2lkZWJhclBhbmVsLAogCkBAIC0xNzksOSArMTgzLDQ4IEBAIFdlYkluc3BlY3Rvci5JbnN0
cnVtZW50U2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAgIHZhciB0cmVl
RWxlbWVudFRvU2VsZWN0ID0gdGhpcy5fdGltZWxpbmVUcmVlRWxlbWVudE1hcFt0eXBlXTsKICAg
ICAgICAgaWYgKCF0cmVlRWxlbWVudFRvU2VsZWN0KQotICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgcmV0dXJuIG51bGw7CiAKICAgICAgICAgdHJlZUVsZW1lbnRUb1NlbGVjdC5zZWxl
Y3QodHJ1ZSwgdHJ1ZSk7CisgICAgICAgIHJldHVybiB0cmVlRWxlbWVudFRvU2VsZWN0LnJlcHJl
c2VudGVkT2JqZWN0OworICAgIH0sCisKKyAgICBzYXZlU3RhdGVUb0Nvb2tpZTogZnVuY3Rpb24o
Y29va2llKQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoY29va2llKTsKKworICAgICAg
ICAvLyBUaGlzIHNpZGViYXIgaGFzIHR3byBzZXBhcmF0ZSB0cmVlIG91dGxpbmVzLCBidXQgb25s
eSBvbmUgc2VsZWN0ZWQgdHJlZSBlbGVtZW50IGJldHdlZW4gdGhlbS4KKyAgICAgICAgdmFyIHNl
bGVjdGVkVHJlZUVsZW1lbnQgPSB0aGlzLl90aW1lbGluZXNUcmVlT3V0bGluZS5zZWxlY3RlZFRy
ZWVFbGVtZW50IHx8IHRoaXMuY29udGVudFRyZWVPdXRsaW5lLnNlbGVjdGVkVHJlZUVsZW1lbnQ7
CisgICAgICAgIGlmICghc2VsZWN0ZWRUcmVlRWxlbWVudCkKKyAgICAgICAgICAgIHJldHVybjsK
KworICAgICAgICB2YXIgcmVwcmVzZW50ZWRPYmplY3QgPSBzZWxlY3RlZFRyZWVFbGVtZW50LnJl
cHJlc2VudGVkT2JqZWN0OworICAgICAgICBpZiAocmVwcmVzZW50ZWRPYmplY3QgPT09IFdlYklu
c3BlY3Rvci5UaW1lbGluZVJlY29yZC5UeXBlLlNjcmlwdCB8fCByZXByZXNlbnRlZE9iamVjdCA9
PT0gV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkLlR5cGUuTGF5b3V0IHx8IHJlcHJlc2VudGVk
T2JqZWN0ID09PSBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmQuVHlwZS5OZXR3b3JrKQorICAg
ICAgICAgICAgY29va2llW1dlYkluc3BlY3Rvci5JbnN0cnVtZW50U2lkZWJhclBhbmVsLlNlbGVj
dGVkVGltZWxpbmVDb29raWVLZXldID0gcmVwcmVzZW50ZWRPYmplY3Q7CisgICAgICAgIGVsc2Ug
aWYgKHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlByb2ZpbGVPYmpl
Y3QpIHsKKyAgICAgICAgICAgIGNvb2tpZVtXZWJJbnNwZWN0b3IuSW5zdHJ1bWVudFNpZGViYXJQ
YW5lbC5TZWxlY3RlZFByb2ZpbGVUeXBlQ29va2llS2V5XSA9IHJlcHJlc2VudGVkT2JqZWN0LnR5
cGU7CisgICAgICAgICAgICBjb29raWVbV2ViSW5zcGVjdG9yLkluc3RydW1lbnRTaWRlYmFyUGFu
ZWwuU2VsZWN0ZWRQcm9maWxlVGl0bGVDb29raWVLZXldID0gcmVwcmVzZW50ZWRPYmplY3QudGl0
bGU7CisgICAgICAgIH0KKyAgICB9LAorCisgICAgcmVzdG9yZVN0YXRlRnJvbUNvb2tpZTogZnVu
Y3Rpb24oY29va2llKQorICAgIHsKKyAgICAgICAgLy8gRWFnZXJseSByZXN0b3JlIHRoZSBzaWRl
YmFyJ3Mgc2VsZWN0aW9uLCBzaW5jZSBpdHMgZWxlbWVudHMgYXJlIHBlcnNpc3RlbnQgb3IgcGVy
bWFuZW50LgorICAgICAgICBjb25zb2xlLmFzc2VydChjb29raWUpOworICAgICAgICB2YXIgc2Vs
ZWN0ZWRUaW1lbGluZVR5cGUgPSBjb29raWVbV2ViSW5zcGVjdG9yLkluc3RydW1lbnRTaWRlYmFy
UGFuZWwuU2VsZWN0ZWRUaW1lbGluZUNvb2tpZUtleV07CisgICAgICAgIGlmIChzZWxlY3RlZFRp
bWVsaW5lVHlwZSkgeworICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2hvd1RpbWVsaW5lRm9yUmVj
b3JkVHlwZShzZWxlY3RlZFRpbWVsaW5lVHlwZSk7CisgICAgICAgICAgICByZXR1cm4gV2ViSW5z
cGVjdG9yLnRpbWVsaW5lTWFuYWdlci50aW1lbGluZXM7CisgICAgICAgIH0KKworICAgICAgICAv
LyBQcm9maWxlcyBhcmUgcGVyc2lzdGVkIGFjcm9zcyBwYWdlIHJlbG9hZHMsIGJ1dCBub3QgYWNy
b3NzIGluc3BlY3RvciBvcGVuL2Nsb3NlLgorICAgICAgICB2YXIgc2VsZWN0ZWRQcm9maWxlVHlw
ZSA9IGNvb2tpZVtXZWJJbnNwZWN0b3IuSW5zdHJ1bWVudFNpZGViYXJQYW5lbC5TZWxlY3RlZFBy
b2ZpbGVUeXBlQ29va2llS2V5XTsKKyAgICAgICAgdmFyIHNlbGVjdGVkUHJvZmlsZVRpdGxlID0g
Y29va2llW1dlYkluc3BlY3Rvci5JbnN0cnVtZW50U2lkZWJhclBhbmVsLlNlbGVjdGVkUHJvZmls
ZVRpdGxlQ29va2llS2V5XTsKKyAgICAgICAgLy8gUHJvZmlsZSB0aXRsZXMgYXJlIG9wdGlvbmFs
LCBidXQgcHJvZmlsZSB0eXBlcyBhcmUgbWFuZGF0b3J5LgorICAgICAgICBpZiAoIXNlbGVjdGVk
UHJvZmlsZVR5cGUpCisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKworICAgICAgICByZXR1cm4g
dGhpcy5zaG93UHJvZmlsZShzZWxlY3RlZFByb2ZpbGVUeXBlLCBzZWxlY3RlZFByb2ZpbGVUaXRs
ZSk7CiAgICAgfSwKIAogICAgIHNob3dQcm9maWxlOiBmdW5jdGlvbih0eXBlLCB0aXRsZSkKQEAg
LTE5Miw3ICsyMzUsNyBAQCBXZWJJbnNwZWN0b3IuSW5zdHJ1bWVudFNpZGViYXJQYW5lbC5wcm90
b3R5cGUgPSB7CiAgICAgICAgICAgICB2YXIgcHJvZmlsZSA9IHRyZWVFbGVtZW50LnJlcHJlc2Vu
dGVkT2JqZWN0OwogICAgICAgICAgICAgaWYgKHByb2ZpbGUudHlwZSA9PT0gdHlwZSAmJiBwcm9m
aWxlLnRpdGxlID09PSB0aXRsZSkgewogICAgICAgICAgICAgICAgIHRyZWVFbGVtZW50LnJldmVh
bEFuZFNlbGVjdCgpOwotICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gcHJvZmlsZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmpzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5qcwppbmRleCBjZDc0NjRlYWU3MzIy
ZWNiZWY4ZGFjYzBiNjkzYjgxYjQ1Nzk5YTQ3Li41OGI3OTU1ZWUzNWU5MGFmYjg0OTY0OTU5MTVj
N2I1OTBiNzI2NmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9NYWluLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01h
aW4uanMKQEAgLTQwLDYgKzQwLDkgQEAgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29va2llVHlw
ZSA9IHsKIAogfTsKIAorV2ViSW5zcGVjdG9yLlNlbGVjdGVkU2lkZWJhclBhbmVsQ29va2llS2V5
ID0gInNlbGVjdGVkLXNpZGViYXItcGFuZWwiOworV2ViSW5zcGVjdG9yLlR5cGVJZGVudGlmaWVy
Q29va2llS2V5ID0gInJlcHJlc2VudGVkLW9iamVjdC10eXBlIjsKKwogV2ViSW5zcGVjdG9yLmxv
YWRlZCA9IGZ1bmN0aW9uKCkKIHsKICAgICAvLyBUZWxsIHRoZSBJbnNwZWN0b3JGcm9udGVuZEhv
c3Qgd2UgbG9hZGVkIGZpcnN0IHRvIGVzdGFibGlzaCBjb21tdW5pY2F0aW9uIHdpdGggSW5zcGVj
dG9yQmFja2VuZC4KQEAgLTEwNCwxMyArMTA3LDYgQEAgV2ViSW5zcGVjdG9yLmxvYWRlZCA9IGZ1
bmN0aW9uKCkKIAogICAgIFdlYkluc3BlY3Rvci5GcmFtZS5hZGRFdmVudExpc3RlbmVyKFdlYklu
c3BlY3Rvci5GcmFtZS5FdmVudC5NYWluUmVzb3VyY2VEaWRDaGFuZ2UsIHRoaXMuX21haW5SZXNv
dXJjZURpZENoYW5nZSwgdGhpcyk7CiAKLSAgICAvLyBUaGVzZSBsaXN0ZW5lcnMgYXJlIGZvciBl
dmVudHMgdGhhdCBjb3VsZCByZXNvbHZlIGEgcGVuZGluZyBjb250ZW50IHZpZXcgY29va2llLgot
ICAgIHRoaXMuYXBwbGljYXRpb25DYWNoZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNw
ZWN0b3IuQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuRXZlbnQuRnJhbWVNYW5pZmVzdEFkZGVkLCB0
aGlzLl9yZXNvbHZlQW5kU2hvd1BlbmRpbmdDb250ZW50Vmlld0Nvb2tpZSwgdGhpcyk7Ci0gICAg
dGhpcy5mcmFtZVJlc291cmNlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5G
cmFtZVJlc291cmNlTWFuYWdlci5FdmVudC5NYWluRnJhbWVEaWRDaGFuZ2UsIHRoaXMuX3Jlc29s
dmVBbmRTaG93UGVuZGluZ0NvbnRlbnRWaWV3Q29va2llLCB0aGlzKTsKLSAgICB0aGlzLnN0b3Jh
Z2VNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlN0b3JhZ2VNYW5hZ2VyLkV2
ZW50LkRhdGFiYXNlV2FzQWRkZWQsIHRoaXMuX3Jlc29sdmVBbmRTaG93UGVuZGluZ0NvbnRlbnRW
aWV3Q29va2llLCB0aGlzKTsKLSAgICB0aGlzLnN0b3JhZ2VNYW5hZ2VyLmFkZEV2ZW50TGlzdGVu
ZXIoV2ViSW5zcGVjdG9yLlN0b3JhZ2VNYW5hZ2VyLkV2ZW50LkNvb2tpZVN0b3JhZ2VPYmplY3RX
YXNBZGRlZCwgdGhpcy5fcmVzb2x2ZUFuZFNob3dQZW5kaW5nQ29udGVudFZpZXdDb29raWUsIHRo
aXMpOwotICAgIHRoaXMuc3RvcmFnZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0
b3IuU3RvcmFnZU1hbmFnZXIuRXZlbnQuRE9NU3RvcmFnZU9iamVjdFdhc0FkZGVkLCB0aGlzLl9y
ZXNvbHZlQW5kU2hvd1BlbmRpbmdDb250ZW50Vmlld0Nvb2tpZSwgdGhpcyk7Ci0KICAgICBkb2N1
bWVudC5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIiwgdGhpcy5jb250ZW50TG9h
ZGVkLmJpbmQodGhpcykpOwogCiAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiYmVmb3Jl
Y29weSIsIHRoaXMuX2JlZm9yZWNvcHkuYmluZCh0aGlzKSk7CkBAIC0xMjYsOSArMTIyLDExIEBA
IFdlYkluc3BlY3Rvci5sb2FkZWQgPSBmdW5jdGlvbigpCiAgICAgd2luZG93LmFkZEV2ZW50TGlz
dGVuZXIoImtleWRvd24iLCB0aGlzLl93aW5kb3dLZXlEb3duLmJpbmQodGhpcykpOwogICAgIHdp
bmRvdy5hZGRFdmVudExpc3RlbmVyKCJrZXl1cCIsIHRoaXMuX3dpbmRvd0tleVVwLmJpbmQodGhp
cykpOwogICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLCB0aGlzLl9tb3Vz
ZU1vdmVkLmJpbmQodGhpcyksIHRydWUpOworICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJw
YWdlaGlkZSIsIHRoaXMuX3BhZ2VIaWRkZW4uYmluZCh0aGlzKSk7CiAKICAgICAvLyBDcmVhdGUg
c2V0dGluZ3MuCi0gICAgdGhpcy5fbGFzdFNlbGVjdGVkTmF2aWdhdGlvblNpZGViYXJQYW5lbFNl
dHRpbmcgPSBuZXcgV2ViSW5zcGVjdG9yLlNldHRpbmcoImxhc3Qtc2VsZWN0ZWQtbmF2aWdhdGlv
bi1zaWRlYmFyLXBhbmVsIiwgInJlc291cmNlIik7CisgICAgdGhpcy5fbGFzdEluc3BlY3RvclZp
ZXdTdGF0ZUNvb2tpZVNldHRpbmcgPSBuZXcgV2ViSW5zcGVjdG9yLlNldHRpbmcoImxhc3QtY29u
dGVudC12aWV3LXN0YXRlLWNvb2tpZSIsIHt9KTsKKwogICAgIHRoaXMuX25hdmlnYXRpb25TaWRl
YmFyQ29sbGFwc2VkU2V0dGluZyA9IG5ldyBXZWJJbnNwZWN0b3IuU2V0dGluZygibmF2aWdhdGlv
bi1zaWRlYmFyLWNvbGxhcHNlZCIsIGZhbHNlKTsKICAgICB0aGlzLl9uYXZpZ2F0aW9uU2lkZWJh
cldpZHRoU2V0dGluZyA9IG5ldyBXZWJJbnNwZWN0b3IuU2V0dGluZygibmF2aWdhdGlvbi1zaWRl
YmFyLXdpZHRoIiwgbnVsbCk7CiAKQEAgLTEzNiw5ICsxMzQsNiBAQCBXZWJJbnNwZWN0b3IubG9h
ZGVkID0gZnVuY3Rpb24oKQogICAgIHRoaXMuX2RldGFpbHNTaWRlYmFyQ29sbGFwc2VkU2V0dGlu
ZyA9IG5ldyBXZWJJbnNwZWN0b3IuU2V0dGluZygiZGV0YWlscy1zaWRlYmFyLWNvbGxhcHNlZCIs
IHRydWUpOwogICAgIHRoaXMuX2RldGFpbHNTaWRlYmFyV2lkdGhTZXR0aW5nID0gbmV3IFdlYklu
c3BlY3Rvci5TZXR0aW5nKCJkZXRhaWxzLXNpZGViYXItd2lkdGgiLCBudWxsKTsKIAotICAgIHRo
aXMuX2xhc3RDb250ZW50Vmlld1Jlc3BvbnNpYmxlU2lkZWJhclBhbmVsU2V0dGluZyA9IG5ldyBX
ZWJJbnNwZWN0b3IuU2V0dGluZygibGFzdC1jb250ZW50LXZpZXctcmVzcG9uc2libGUtc2lkZWJh
ci1wYW5lbCIsICJyZXNvdXJjZSIpOwotICAgIHRoaXMuX2xhc3RDb250ZW50Q29va2llU2V0dGlu
ZyA9IG5ldyBXZWJJbnNwZWN0b3IuU2V0dGluZygibGFzdC1jb250ZW50LXZpZXctY29va2llIiwg
e30pOwotCiAgICAgdGhpcy5fdG9vbGJhckRvY2tlZFJpZ2h0RGlzcGxheU1vZGVTZXR0aW5nID0g
bmV3IFdlYkluc3BlY3Rvci5TZXR0aW5nKCJ0b29sYmFyLWRvY2tlZC1yaWdodC1kaXNwbGF5LW1v
ZGUiLCBXZWJJbnNwZWN0b3IuVG9vbGJhci5EaXNwbGF5TW9kZS5JY29uQW5kTGFiZWxWZXJ0aWNh
bCk7CiAgICAgdGhpcy5fdG9vbGJhckRvY2tlZFJpZ2h0U2l6ZU1vZGVTZXR0aW5nID0gbmV3IFdl
Ykluc3BlY3Rvci5TZXR0aW5nKCJ0b29sYmFyLWRvY2tlZC1yaWdodC1zaXplLW1vZGUiLFdlYklu
c3BlY3Rvci5Ub29sYmFyLlNpemVNb2RlLk5vcm1hbCk7CiAKQEAgLTI3OCw4ICsyNzMsNiBAQCBX
ZWJJbnNwZWN0b3IuY29udGVudExvYWRlZCA9IGZ1bmN0aW9uKCkKIAogICAgIHRoaXMuX3VwZGF0
ZVRvb2xiYXJIZWlnaHQoKTsKIAotICAgIHRoaXMubmF2aWdhdGlvblNpZGViYXIuc2VsZWN0ZWRT
aWRlYmFyUGFuZWwgPSB0aGlzLl9sYXN0U2VsZWN0ZWROYXZpZ2F0aW9uU2lkZWJhclBhbmVsU2V0
dGluZy52YWx1ZTsKLQogICAgIGlmICh0aGlzLl9uYXZpZ2F0aW9uU2lkZWJhcldpZHRoU2V0dGlu
Zy52YWx1ZSkKICAgICAgICAgdGhpcy5uYXZpZ2F0aW9uU2lkZWJhci53aWR0aCA9IHRoaXMuX25h
dmlnYXRpb25TaWRlYmFyV2lkdGhTZXR0aW5nLnZhbHVlOwogCkBAIC0yOTYsMTQgKzI4OSw5IEBA
IFdlYkluc3BlY3Rvci5jb250ZW50TG9hZGVkID0gZnVuY3Rpb24oKQogICAgIC8vIHNlbGVjdGVk
IHNpZGViYXIgcGFuZWwgZ2V0cyBzaG93biBhbmQgaGFzIGEgc2F5IGluIHdoYXQgY29udGVudCB2
aWV3IGdldHMgc2hvd24uCiAgICAgdGhpcy5uYXZpZ2F0aW9uU2lkZWJhci5jb2xsYXBzZWQgPSB0
aGlzLl9uYXZpZ2F0aW9uU2lkZWJhckNvbGxhcHNlZFNldHRpbmcudmFsdWU7CiAKLSAgICAvLyBJ
ZiBJbnNwZWN0b3JGcm9udGVuZEFQSSBkaWRuJ3Qgc2hvdyBhIGNvbnRlbnQgdmlldywgdGhlbiB0
cnkgdG8gc2hvdyB0aGUgbGFzdCBjb250ZW50IHZpZXcuCi0gICAgaWYgKCF0aGlzLmNvbnRlbnRC
cm93c2VyLmN1cnJlbnRDb250ZW50VmlldyAmJiAhdGhpcy5pZ25vcmVMYXN0Q29udGVudENvb2tp
ZSkgewotICAgICAgICBpZiAodGhpcy5fbGFzdENvbnRlbnRDb29raWVTZXR0aW5nLnZhbHVlID09
PSAiY29uc29sZSIpIHsKLSAgICAgICAgICAgIC8vIFRoZSBjb25zb2xlIGRvZXMgbm90IGhhdmUg
YSBzaWRlYmFyLCBzbyBoYW5kbGUgaXRzIHNwZWNpYWwgY29va2llIGhlcmUuCi0gICAgICAgICAg
ICB0aGlzLnNob3dGdWxsSGVpZ2h0Q29uc29sZSgpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAg
ICAgIHRoaXMuX3Nob3dDb250ZW50Vmlld0ZvckNvb2tpZSh0aGlzLl9sYXN0Q29udGVudENvb2tp
ZVNldHRpbmcudmFsdWUpOwotICAgIH0KKyAgICAvLyBJZiBJbnNwZWN0b3JGcm9udGVuZEFQSSBk
aWRuJ3Qgc2hvdyBhIGNvbnRlbnQgdmlldywgdGhlbiB0cnkgdG8gcmVzdG9yZSB0aGUgbGFzdCBz
YXZlZCB2aWV3IHN0YXRlLgorICAgIGlmICghdGhpcy5jb250ZW50QnJvd3Nlci5jdXJyZW50Q29u
dGVudFZpZXcgJiYgIXRoaXMuaWdub3JlTGFzdENvbnRlbnRDb29raWUpCisgICAgICAgIHRoaXMu
X3Jlc3RvcmVJbnNwZWN0b3JWaWV3U3RhdGVGcm9tQ29va2llKHRoaXMuX2xhc3RJbnNwZWN0b3JW
aWV3U3RhdGVDb29raWVTZXR0aW5nLnZhbHVlKTsKIAogICAgIHRoaXMuX3VwZGF0ZVNwbGl0Q29u
c29sZUhlaWdodCh0aGlzLl9zcGxpdENvbnNvbGVIZWlnaHRTZXR0aW5nLnZhbHVlKTsKIApAQCAt
NzI2LDkgKzcxNCwyMCBAQCBXZWJJbnNwZWN0b3IuX21haW5SZXNvdXJjZURpZENoYW5nZSA9IGZ1
bmN0aW9uKGV2ZW50KQogewogICAgIGlmICghZXZlbnQudGFyZ2V0LmlzTWFpbkZyYW1lKCkpCiAg
ICAgICAgIHJldHVybjsKKworICAgIHRoaXMuX3Jlc3RvcmVJbnNwZWN0b3JWaWV3U3RhdGVGcm9t
Q29va2llKHRoaXMuX2xhc3RJbnNwZWN0b3JWaWV3U3RhdGVDb29raWVTZXR0aW5nLnZhbHVlLCB0
cnVlKTsKKwogICAgIHRoaXMudXBkYXRlV2luZG93VGl0bGUoKTsKIH0KIAorV2ViSW5zcGVjdG9y
Ll9wcm92aXNpb25hbExvYWRDb21taXR0ZWQgPSBmdW5jdGlvbihldmVudCkKK3sKKyAgICBpZiAo
IWV2ZW50LnRhcmdldC5pc01haW5GcmFtZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICB0aGlz
Ll91cGRhdGVDb29raWVGb3JJbnNwZWN0b3JWaWV3U3RhdGUoKTsKK30KKwogV2ViSW5zcGVjdG9y
Ll93aW5kb3dGb2N1c2VkID0gZnVuY3Rpb24oZXZlbnQpCiB7CiAgICAgaWYgKGV2ZW50LnRhcmdl
dC5kb2N1bWVudC5ub2RlVHlwZSAhPT0gTm9kZS5ET0NVTUVOVF9OT0RFIHx8IHRoaXMuZG9ja2Vk
KQpAQCAtNzg5LDYgKzc4OCwxMSBAQCBXZWJJbnNwZWN0b3IuX21vdXNlTW92ZWQgPSBmdW5jdGlv
bihldmVudCkKICAgICB9OwogfQogCitXZWJJbnNwZWN0b3IuX3BhZ2VIaWRkZW4gPSBmdW5jdGlv
bihldmVudCkKK3sKKyAgICB0aGlzLl91cGRhdGVDb29raWVGb3JJbnNwZWN0b3JWaWV3U3RhdGUo
KTsKK30KKwogV2ViSW5zcGVjdG9yLl91bmRvY2sgPSBmdW5jdGlvbihldmVudCkKIHsKICAgICB0
aGlzLl9kb2NrQnV0dG9uVG9nZ2xlZFNldHRpbmcudmFsdWUgPSB0aGlzLnVuZG9ja0J1dHRvbk5h
dmlnYXRpb25JdGVtLnRvZ2dsZWQ7CkBAIC04OTAsOCArODk0LDYgQEAgV2ViSW5zcGVjdG9yLl9u
YXZpZ2F0aW9uU2lkZWJhclBhbmVsU2VsZWN0ZWQgPSBmdW5jdGlvbihldmVudCkKICAgICBpZiAo
IXNlbGVjdGVkU2lkZWJhclBhbmVsKQogICAgICAgICByZXR1cm47CiAKLSAgICB0aGlzLl9sYXN0
U2VsZWN0ZWROYXZpZ2F0aW9uU2lkZWJhclBhbmVsU2V0dGluZy52YWx1ZSA9IHNlbGVjdGVkU2lk
ZWJhclBhbmVsLmlkZW50aWZpZXI7Ci0KICAgICB0aGlzLl91cGRhdGVOYXZpZ2F0aW9uU2lkZWJh
ckZvckN1cnJlbnRDb250ZW50VmlldygpOwogfQogCkBAIC05NjUsMjcgKzk2NywyOCBAQCBXZWJJ
bnNwZWN0b3IuX3Rvb2xiYXJTaXplTW9kZURpZENoYW5nZSA9IGZ1bmN0aW9uKGV2ZW50KQogICAg
IHRoaXMuX3VwZGF0ZVRvb2xiYXJIZWlnaHQoKTsKIH0KIAotV2ViSW5zcGVjdG9yLl91cGRhdGVD
dXJyZW50Q29udGVudFZpZXdDb29raWUgPSBmdW5jdGlvbigpCitXZWJJbnNwZWN0b3IuX3VwZGF0
ZUNvb2tpZUZvckluc3BlY3RvclZpZXdTdGF0ZSA9IGZ1bmN0aW9uKCkKIHsKKyAgICB2YXIgY29v
a2llID0ge307CiAgICAgdmFyIGN1cnJlbnRDb250ZW50VmlldyA9IHRoaXMuY29udGVudEJyb3dz
ZXIuY3VycmVudENvbnRlbnRWaWV3OwotICAgIGlmICghY3VycmVudENvbnRlbnRWaWV3KQotICAg
ICAgICByZXR1cm47CiAKICAgICAvLyBUaGUgY29uc29sZSBkb2VzIG5vdCBoYXZlIGEgc2lkZWJh
ciwgc28gY3JlYXRlIGEgY29va2llIGhlcmUuCi0gICAgaWYgKGN1cnJlbnRDb250ZW50Vmlldy5y
ZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Mb2dPYmplY3QpIHsKLSAg
ICAgICAgdGhpcy5fbGFzdENvbnRlbnRWaWV3UmVzcG9uc2libGVTaWRlYmFyUGFuZWxTZXR0aW5n
LnZhbHVlID0gbnVsbDsKLSAgICAgICAgdGhpcy5fbGFzdENvbnRlbnRDb29raWVTZXR0aW5nLnZh
bHVlID0gImNvbnNvbGUiOworICAgIGlmIChjdXJyZW50Q29udGVudFZpZXcgJiYgY3VycmVudENv
bnRlbnRWaWV3LnJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkxvZ09i
amVjdCkgeworICAgICAgICBjb29raWVbV2ViSW5zcGVjdG9yLlNlbGVjdGVkU2lkZWJhclBhbmVs
Q29va2llS2V5XSA9ICJjb25zb2xlIjsKKyAgICAgICAgdGhpcy5fbGFzdEluc3BlY3RvclZpZXdT
dGF0ZUNvb2tpZVNldHRpbmcudmFsdWUgPSBjb29raWU7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICB2YXIgcmVzcG9uc2libGVTaWRlYmFyUGFuZWwgPSB0aGlzLnNpZGViYXJQYW5lbEZv
clJlcHJlc2VudGVkT2JqZWN0KGN1cnJlbnRDb250ZW50Vmlldy5yZXByZXNlbnRlZE9iamVjdCk7
Ci0gICAgaWYgKCFyZXNwb25zaWJsZVNpZGViYXJQYW5lbCkKKyAgICB2YXIgc2VsZWN0ZWRTaWRl
YmFyUGFuZWwgPSB0aGlzLm5hdmlnYXRpb25TaWRlYmFyLnNlbGVjdGVkU2lkZWJhclBhbmVsOwor
ICAgIGlmICghc2VsZWN0ZWRTaWRlYmFyUGFuZWwpCiAgICAgICAgIHJldHVybjsKIAotICAgIHZh
ciBjb29raWUgPSB7fTsKLSAgICBjdXJyZW50Q29udGVudFZpZXcuc2F2ZVRvQ29va2llKGNvb2tp
ZSk7Ci0gICAgdGhpcy5fbGFzdENvbnRlbnRWaWV3UmVzcG9uc2libGVTaWRlYmFyUGFuZWxTZXR0
aW5nLnZhbHVlID0gcmVzcG9uc2libGVTaWRlYmFyUGFuZWwuaWRlbnRpZmllcjsKLSAgICB0aGlz
Ll9sYXN0Q29udGVudENvb2tpZVNldHRpbmcudmFsdWUgPSBjb29raWU7CisgICAgLy8gUmVzdG9y
aW5nIHZpZXcgc3RhdGUgYWZ0ZXIgaW5zcGVjdG9yIHJlLW9wZW4gb3IgcGFnZSByZWxvYWQgaXMg
ZGVsZWdhdGVkIHRvIG5hdmlnYXRpb24gc2lkZWJhcnMuCisgICAgLy8gVGhpcyBpcyBiZWNhdXNl
IHNvbWUgbmF2aWdhdGlvbiBzaWRlYmFyIHN0YXRlIChzdWNoIGFzIGJyZWFrcG9pbnQgc2VsZWN0
aW9ucykgY2Fubm90IGJlIGluZmVycmVkCisgICAgLy8gc29sZWx5IGJhc2VkIG9uIHdoaWNoIGNv
bnRlbnQgdmlldyBpcyB2aXNpYmxlLCBvciBtdWx0aXBsZSBuYXZpZ2F0aW9uIHNpZGViYXJzIGNv
dWxkIGJlIHNob3duLgorICAgIGNvb2tpZVtXZWJJbnNwZWN0b3IuU2VsZWN0ZWRTaWRlYmFyUGFu
ZWxDb29raWVLZXldID0gc2VsZWN0ZWRTaWRlYmFyUGFuZWwuaWRlbnRpZmllcjsKKyAgICBzZWxl
Y3RlZFNpZGViYXJQYW5lbC5zYXZlU3RhdGVUb0Nvb2tpZShjb29raWUpOworICAgIHRoaXMuX2xh
c3RJbnNwZWN0b3JWaWV3U3RhdGVDb29raWVTZXR0aW5nLnZhbHVlID0gY29va2llOwogfQogCiBX
ZWJJbnNwZWN0b3IuX2NvbnRlbnRCcm93c2VyQ3VycmVudENvbnRlbnRWaWV3RGlkQ2hhbmdlID0g
ZnVuY3Rpb24oZXZlbnQpCkBAIC0xMDc5LDc1ICsxMDgyLDI5IEBAIFdlYkluc3BlY3Rvci5fY29u
dGVudEJyb3dzZXJSZXByZXNlbnRlZE9iamVjdHNEaWRDaGFuZ2UgPSBmdW5jdGlvbihldmVudCkK
IAogICAgIC8vIFN0b3AgaWdub3JpbmcgdGhlIHNpZGViYXIgcGFuZWwgc2VsZWN0ZWQgZXZlbnQu
CiAgICAgZGVsZXRlIHRoaXMuX2lnbm9yZURldGFpbHNTaWRlYmFyUGFuZWxTZWxlY3RlZEV2ZW50
OwotCi0gICAgdGhpcy5fdXBkYXRlQ3VycmVudENvbnRlbnRWaWV3Q29va2llKGV2ZW50KTsKIH0K
IAotV2ViSW5zcGVjdG9yLl9zaG93Q29udGVudFZpZXdGb3JDb29raWUgPSBmdW5jdGlvbihjb29r
aWUpCitXZWJJbnNwZWN0b3IuX3Jlc3RvcmVJbnNwZWN0b3JWaWV3U3RhdGVGcm9tQ29va2llID0g
ZnVuY3Rpb24oY29va2llLCBjYXVzZWRCeVJlbG9hZCkKIHsKLSAgICBpZiAoIWNvb2tpZSB8fCAh
Y29va2llLnR5cGUpCi0gICAgICAgIHJldHVybiBudWxsOwotCi0gICAgdGhpcy5fcGVuZGluZ0Nv
bnRlbnRWaWV3Q29va2llID0gY29va2llOwotICAgIHZhciBzaG93bkNvbnRlbnRWaWV3ID0gdGhp
cy5fcmVzb2x2ZUFuZFNob3dQZW5kaW5nQ29udGVudFZpZXdDb29raWUoKTsKLQotICAgIC8vIEF0
IHRoaXMgcG9pbnQsIHdlIGFzc3VtZSBubyBzdG9yYWdlIG9iamVjdHMgb3Igdmlld3MgaGF2ZSBi
ZWVuIGNyZWF0ZWQgeWV0LgotICAgIC8vIElmIHRoZSBjb29raWUgcmVxdWVzdHMgdGhlc2Ugdmll
d3MsIHRoZXkgd2lsbCBiZSBzaG93biB3aGVuIHRoZSBzdG9yYWdlIG9iamVjdAotICAgIC8vIGlz
IGFkZGVkIChpZiBpdCBtYXRjaGVzIGV4YWN0bHkpLCBvciBhbnkgdmlldyBvZiB0aGUgc2FtZSB0
eXBlIChhZnRlciBhIHRpbWVvdXQpLgotICAgIGlmICghc2hvd25Db250ZW50VmlldykgewotICAg
ICAgICBpZiAodGhpcy5fbGFzdEF0dGVtcHRDb29raWVDaGVja2luZ1RpbWVvdXQpCi0gICAgICAg
ICAgICBjbGVhclRpbWVvdXQodGhpcy5fbGFzdEF0dGVtcHRDb29raWVDaGVja2luZ1RpbWVvdXQp
OwotCi0gICAgICAgIHZhciBsYXN0QXR0ZW1wdFRvUmVzdG9yZUZyb21Db29raWUgPSBmdW5jdGlv
bigpIHsKLSAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9sYXN0QXR0ZW1wdENvb2tpZUNoZWNraW5n
VGltZW91dDsKLSAgICAgICAgICAgIHRoaXMuX3Jlc29sdmVBbmRTaG93UGVuZGluZ0NvbnRlbnRW
aWV3Q29va2llKHRydWUpOwotICAgICAgICB9OwotCi0gICAgICAgIC8vIFdoZW4gdGhlIHNwZWNp
ZmljIHN0b3JhZ2UgaXRlbSB3YXNuJ3QgZm91bmQgd2Ugd2FudCB0byByZWxheCB0aGUgY2hlY2sg
dG8gc2hvdyB0aGUgZmlyc3QgaXRlbSB3aXRoIHRoZQotICAgICAgICAvLyBzYW1lIHR5cGUuIFRo
ZXJlIGlzIG5vIGdvb2QgdGltZSB0byBuYXR1cmFsbHkgZGVjbGFyZSB0aGUgY29va2llIHdhc24n
dCBmb3VuZCwgc28gd2UgZG8gdGhhdCBvbiBhIHRpbWVvdXQuCi0gICAgICAgIHRoaXMuX2xhc3RB
dHRlbXB0Q29va2llQ2hlY2tpbmdUaW1lb3V0ID0gc2V0VGltZW91dChsYXN0QXR0ZW1wdFRvUmVz
dG9yZUZyb21Db29raWUuYmluZCh0aGlzKSwgNTAwKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gc2hv
d25Db250ZW50VmlldzsKLX0KLQotV2ViSW5zcGVjdG9yLl9yZXNvbHZlQW5kU2hvd1BlbmRpbmdD
b250ZW50Vmlld0Nvb2tpZSA9IGZ1bmN0aW9uKG1hdGNoT25UeXBlQWxvbmUpCi17Ci0gICAgdmFy
IGNvb2tpZSA9IHRoaXMuX3BlbmRpbmdDb250ZW50Vmlld0Nvb2tpZTsKICAgICBpZiAoIWNvb2tp
ZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgdmFyIHJlcHJlc2VudGVkT2JqZWN0ID0g
bnVsbDsKLQotICAgIGlmIChjb29raWUudHlwZSA9PT0gV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3
Q29va2llVHlwZS5SZXNvdXJjZSkKLSAgICAgICAgcmVwcmVzZW50ZWRPYmplY3QgPSB0aGlzLmZy
YW1lUmVzb3VyY2VNYW5hZ2VyLm9iamVjdEZvckNvb2tpZShjb29raWUpOwotCi0gICAgaWYgKGNv
b2tpZS50eXBlID09PSBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXdDb29raWVUeXBlLlRpbWVsaW5l
cykKLSAgICAgICAgcmVwcmVzZW50ZWRPYmplY3QgPSB0aGlzLnRpbWVsaW5lTWFuYWdlci5vYmpl
Y3RGb3JDb29raWUoY29va2llKTsKLQotICAgIGlmIChjb29raWUudHlwZSA9PT0gV2ViSW5zcGVj
dG9yLkNvbnRlbnRWaWV3Q29va2llVHlwZS5Db29raWVTdG9yYWdlIHx8IGNvb2tpZS50eXBlID09
PSBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXdDb29raWVUeXBlLkRhdGFiYXNlICB8fCBjb29raWUu
dHlwZSA9PT0gV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29va2llVHlwZS5EYXRhYmFzZVRhYmxl
IHx8IGNvb2tpZS50eXBlID09PSBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXdDb29raWVUeXBlLkRP
TVN0b3JhZ2UpCi0gICAgICAgIHJlcHJlc2VudGVkT2JqZWN0ID0gdGhpcy5zdG9yYWdlTWFuYWdl
ci5vYmplY3RGb3JDb29raWUoY29va2llLCBtYXRjaE9uVHlwZUFsb25lKTsKLQotICAgIGlmIChj
b29raWUudHlwZSA9PT0gV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29va2llVHlwZS5BcHBsaWNh
dGlvbkNhY2hlKQotICAgICAgICByZXByZXNlbnRlZE9iamVjdCA9IHRoaXMuYXBwbGljYXRpb25D
YWNoZU1hbmFnZXIub2JqZWN0Rm9yQ29va2llKGNvb2tpZSwgbWF0Y2hPblR5cGVBbG9uZSk7Cisg
ICAgICAgIHJldHVybjsKIAotICAgIGlmICghcmVwcmVzZW50ZWRPYmplY3QpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAvLyBUaGUgY29uc29sZSBkb2VzIG5vdCBoYXZlIGEgc2lkZWJhciwg
c28gaGFuZGxlIGl0cyBzcGVjaWFsIGNvb2tpZSBoZXJlLgorICAgIGlmIChjb29raWVbV2ViSW5z
cGVjdG9yLlNlbGVjdGVkU2lkZWJhclBhbmVsQ29va2llS2V5XSA9PT0gImNvbnNvbGUiKSB7Cisg
ICAgICAgIHRoaXMuc2hvd0Z1bGxIZWlnaHRDb25zb2xlKCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CiAKLSAgICAvLyBJZiB3ZSByZWFjaGVkIHRoaXMgcG9pbnQsIHRoZW4gd2Ugc2hvdWxkIGJl
IGFibGUgdG8gY3JlYXRlIGFuZC9vciBkaXNwbGF5IGEgY29udGVudCB2aWV3IGJhc2VkIG9uIHRo
ZSBjb29raWUuCi0gICAgZGVsZXRlIHRoaXMuX3BlbmRpbmdDb250ZW50Vmlld0Nvb2tpZTsKLSAg
ICBpZiAodGhpcy5fbGFzdEF0dGVtcHRDb29raWVDaGVja2luZ1RpbWVvdXQpCi0gICAgICAgIGNs
ZWFyVGltZW91dCh0aGlzLl9sYXN0QXR0ZW1wdENvb2tpZUNoZWNraW5nVGltZW91dCk7CisgICAg
Y29uc3QgbWF0Y2hUeXBlT25seURlbGF5Rm9yUmVsb2FkID0gMjAwMDsKKyAgICBjb25zdCBtYXRj
aFR5cGVPbmx5RGVsYXlGb3JSZW9wZW4gPSAxMDAwOworICAgIHZhciBzaWRlYmFyUGFuZWxJZGVu
dGlmaWVyID0gY29va2llW1dlYkluc3BlY3Rvci5TZWxlY3RlZFNpZGViYXJQYW5lbENvb2tpZUtl
eV07CisgICAgdmFyIHNpZGViYXJQYW5lbCA9IFdlYkluc3BlY3Rvci5uYXZpZ2F0aW9uU2lkZWJh
ci5maW5kU2lkZWJhclBhbmVsKHNpZGViYXJQYW5lbElkZW50aWZpZXIpOworICAgIGlmICghc2lk
ZWJhclBhbmVsKQorICAgICAgICByZXR1cm47CiAKLSAgICAvLyBEZWxheSB0aGlzIHdvcmsgYmVj
YXVzZSBvdGhlciBsaXN0ZW5lcnMgb2YgdGhlIG9yaWdpbmF0aW5nIGV2ZW50IG1pZ2h0IG5vdCBo
YXZlIGZpcmVkIHlldC4KLSAgICAvLyBTbyBkaXNwbGF5aW5nIHRoZSBjb250ZW50IHZpZXcgYmVm
b3JlIHRob3NlIGxpc3RlbmVycyBkbyB0aGVpciB3b3JrIG1pZ2h0IGNhdXNlIHRoZQotICAgIC8v
IGRlcGVuZGVudCB2aWV3IHN0YXRlcyAobmF2aWdhdGlvbiBzaWRlYmFyIHRyZWUgZWxlbWVudHMs
IHBhdGggY29tcG9uZW50cykgdG8gYmUgd3JvbmcuCi0gICAgZnVuY3Rpb24gZGVsYXllZFdvcmso
KQotICAgIHsKLSAgICAgICAgdGhpcy5jb250ZW50QnJvd3Nlci5zaG93Q29udGVudFZpZXdGb3JS
ZXByZXNlbnRlZE9iamVjdChyZXByZXNlbnRlZE9iamVjdCwgY29va2llKTsKLSAgICB9Ci0gICAg
c2V0VGltZW91dChkZWxheWVkV29yay5iaW5kKHRoaXMpLCAwKTsKLSAgICByZXR1cm4gdHJ1ZTsK
KyAgICBXZWJJbnNwZWN0b3IubmF2aWdhdGlvblNpZGViYXIuc2VsZWN0ZWRTaWRlYmFyUGFuZWwg
PSBzaWRlYmFyUGFuZWw7CisgICAgdmFyIHJlbGF4TWF0Y2hEZWxheSA9IGNhdXNlZEJ5UmVsb2Fk
ID8gbWF0Y2hUeXBlT25seURlbGF5Rm9yUmVsb2FkIDogbWF0Y2hUeXBlT25seURlbGF5Rm9yUmVv
cGVuOworICAgIHNpZGViYXJQYW5lbC5yZXN0b3JlU3RhdGVGcm9tQ29va2llKGNvb2tpZSwgcmVs
YXhNYXRjaERlbGF5KTsKIH0KIAogV2ViSW5zcGVjdG9yLl9pbml0aWFsaXplV2ViU29ja2V0SWZO
ZWVkZWQgPSBmdW5jdGlvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLmpzIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvTmF2aWdhdGlvblNpZGViYXJQYW5lbC5qcwppbmRleCA4YTllNTJj
ZTViMzQ4ZTExZWM0YTQ1MzFjZjI3YjRiN2MwY2UzN2E0Li45ODE3OWU2ZTc5NmUyMmJjY2ZmZjBm
MmQ1NjQyMzQwZTJiMDNlZjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL05hdmlnYXRpb25TaWRlYmFyUGFuZWwuanMKQEAgLTQ0LDYg
KzQ0LDggQEAgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwgPSBmdW5jdGlvbihp
ZGVudGlmaWVyLCBkaXNwbGF5TmFtZSwgaW1hZ2UsIGsKICAgICBpZiAoYXV0b0hpZGVUb29sYmFy
SXRlbVdoZW5FbXB0eSkKICAgICAgICAgdGhpcy50b29sYmFySXRlbS5oaWRkZW4gPSB0cnVlOwog
CisgICAgdGhpcy5fYWxsQ29udGVudFRyZWVPdXRsaW5lcyA9IG5ldyBTZXQ7CisKICAgICB0aGlz
Ll9jb250ZW50RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgIHRo
aXMuX2NvbnRlbnRFbGVtZW50LmNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uU2lk
ZWJhclBhbmVsLkNvbnRlbnRFbGVtZW50U3R5bGVDbGFzc05hbWU7CiAgICAgdGhpcy5fY29udGVu
dEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigic2Nyb2xsIiwgdGhpcy5fdXBkYXRlQ29udGVudE92
ZXJmbG93U2hhZG93VmlzaWJpbGl0eS5iaW5kKHRoaXMpKTsKQEAgLTEzNSw2ICsxMzcsOSBAQCBX
ZWJJbnNwZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAg
IHRoaXMuX2NvbnRlbnRUcmVlT3V0bGluZSA9IG5ld1RyZWVPdXRsaW5lOwogICAgICAgICB0aGlz
Ll9jb250ZW50VHJlZU91dGxpbmUuZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKFdlYkluc3BlY3Rv
ci5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLkNvbnRlbnRUcmVlT3V0bGluZUVsZW1lbnRIaWRkZW5T
dHlsZUNsYXNzTmFtZSk7CiAKKyAgICAgICAgdGhpcy5fYWxsQ29udGVudFRyZWVPdXRsaW5lcy5k
ZWxldGUodGhpcy5fY29udGVudFRyZWVPdXRsaW5lKTsKKyAgICAgICAgdGhpcy5fYWxsQ29udGVu
dFRyZWVPdXRsaW5lcy5hZGQobmV3VHJlZU91dGxpbmUpOworCiAgICAgICAgIHRoaXMuX3VwZGF0
ZUZpbHRlcigpOwogICAgIH0sCiAKQEAgLTE2Myw2ICsxNjgsOCBAQCBXZWJJbnNwZWN0b3IuTmF2
aWdhdGlvblNpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGNvbnRlbnRUcmVlT3V0
bGluZS5vbmNvbGxhcHNlID0gdGhpcy5fdHJlZUVsZW1lbnRFeHBhbmRlZE9yQ29sbGFwc2VkLmJp
bmQodGhpcyk7CiAgICAgICAgIGNvbnRlbnRUcmVlT3V0bGluZS5hbGxvd3NSZXBlYXRTZWxlY3Rp
b24gPSB0cnVlOwogCisgICAgICAgIHRoaXMuX2FsbENvbnRlbnRUcmVlT3V0bGluZXMuYWRkKGNv
bnRlbnRUcmVlT3V0bGluZSk7CisKICAgICAgICAgcmV0dXJuIGNvbnRlbnRUcmVlT3V0bGluZTsK
ICAgICB9LAogCkBAIC0xNzksNiArMTg2LDQ0IEBAIFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uU2lk
ZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHNlbGVjdGVkVHJlZUVsZW1lbnQu
c2VsZWN0KCk7CiAgICAgfSwKIAorICAgIHNhdmVTdGF0ZVRvQ29va2llOiBmdW5jdGlvbihjb29r
aWUpCisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydChjb29raWUpOworCisgICAgICAgIC8v
IEZJWE1FOiB0aGlzIGRvZXMgbm90IGhhbmRsZSBzZWxlY3Rpb25zIGluIHRoZSBzZWFyY2ggcmVz
dWx0cyB0cmVlIG91dGxpbmUsIG9yIGZvbGRlciBzZWxlY3Rpb25zLgorICAgICAgICB2YXIgc2Vs
ZWN0ZWRUcmVlRWxlbWVudCA9IG51bGw7CisgICAgICAgIHRoaXMuX2FsbENvbnRlbnRUcmVlT3V0
bGluZXMuZm9yRWFjaChmdW5jdGlvbihvdXRsaW5lKSB7CisgICAgICAgICAgICBpZiAob3V0bGlu
ZS5zZWxlY3RlZFRyZWVFbGVtZW50KQorICAgICAgICAgICAgICAgIHNlbGVjdGVkVHJlZUVsZW1l
bnQgPSBvdXRsaW5lLnNlbGVjdGVkVHJlZUVsZW1lbnQ7CisgICAgICAgIH0pOworICAgICAgICBp
ZiAoIXNlbGVjdGVkVHJlZUVsZW1lbnQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
dmFyIHJlcHJlc2VudGVkT2JqZWN0ID0gc2VsZWN0ZWRUcmVlRWxlbWVudC5yZXByZXNlbnRlZE9i
amVjdDsKKyAgICAgICAgY29va2llW1dlYkluc3BlY3Rvci5UeXBlSWRlbnRpZmllckNvb2tpZUtl
eV0gPSByZXByZXNlbnRlZE9iamVjdC5jb25zdHJ1Y3Rvci5UeXBlSWRlbnRpZmllcjsKKyAgICAg
ICAgcmVwcmVzZW50ZWRPYmplY3Quc2F2ZUlkZW50aXR5VG9Db29raWUoY29va2llKTsKKyAgICB9
LAorCisgICAgLy8gVGhpcyBjYW4gYmUgc3VwcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMgdGhhdCBh
ZG1pdCBhIHNpbXBsZXIgc3RyYXRlZ3kgZm9yIHN0YXRpYyB0cmVlIGVsZW1lbnRzLgorICAgIHJl
c3RvcmVTdGF0ZUZyb21Db29raWU6IGZ1bmN0aW9uKGNvb2tpZSwgcmVsYXhlZE1hdGNoRGVsYXkp
CisgICAgeworICAgICAgICB0aGlzLl9wZW5kaW5nVmlld1N0YXRlQ29va2llID0gY29va2llOwor
ICAgICAgICAvLyBDaGVjayBpZiBhbnkgZXhpc3RpbmcgdHJlZSBlbGVtZW50cyBpbiBhbnkgb3V0
bGluZSBtYXRjaCB0aGUgY29va2llLgorICAgICAgICB0aGlzLl9jaGVja091dGxpbmVzRm9yUGVu
ZGluZ1ZpZXdTdGF0ZUNvb2tpZSgpOworCisgICAgICAgIGlmICh0aGlzLl9maW5hbEF0dGVtcHRU
b1Jlc3RvcmVWaWV3U3RhdGVUaW1lb3V0KQorICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMu
X2ZpbmFsQXR0ZW1wdFRvUmVzdG9yZVZpZXdTdGF0ZVRpbWVvdXQpOworCisgICAgICAgIHZhciBm
aW5hbEF0dGVtcHRUb1Jlc3RvcmVWaWV3U3RhdGVGcm9tQ29va2llID0gZnVuY3Rpb24oKSB7Cisg
ICAgICAgICAgICBkZWxldGUgdGhpcy5fZmluYWxBdHRlbXB0VG9SZXN0b3JlVmlld1N0YXRlVGlt
ZW91dDsKKyAgICAgICAgICAgIHRoaXMuX2NoZWNrT3V0bGluZXNGb3JQZW5kaW5nVmlld1N0YXRl
Q29va2llKHRydWUpOworICAgICAgICB9OworCisgICAgICAgIC8vIElmIHRoZSBzcGVjaWZpYyB0
cmVlIGVsZW1lbnQgd2Fzbid0IGZvdW5kLCB3ZSBtYXkgbmVlZCB0byB3YWl0IGZvciB0aGUgcmVz
b3VyY2VzCisgICAgICAgIC8vIHRvIGJlIHJlZ2lzdGVyZWQuIFdlIHRyeSBvbmUgbGFzdCB0aW1l
IChtYXRjaCB0eXBlIG9ubHkpIGFmdGVyIGFuIGFyYml0cmFyeSBhbW91bnQgb2YgdGltZW91dC4K
KyAgICAgICAgdGhpcy5fZmluYWxBdHRlbXB0VG9SZXN0b3JlVmlld1N0YXRlVGltZW91dCA9IHNl
dFRpbWVvdXQoZmluYWxBdHRlbXB0VG9SZXN0b3JlVmlld1N0YXRlRnJvbUNvb2tpZS5iaW5kKHRo
aXMpLCByZWxheGVkTWF0Y2hEZWxheSk7CisgICAgfSwKKwogICAgIHNob3dFbXB0eUNvbnRlbnRQ
bGFjZWhvbGRlcjogZnVuY3Rpb24obWVzc2FnZSwgaGlkZVRvb2xiYXJJdGVtKQogICAgIHsKICAg
ICAgICAgY29uc29sZS5hc3NlcnQobWVzc2FnZSk7CkBAIC0zOTksNiArNDQ0LDcgQEAgV2ViSW5z
cGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogCiAgICAgICAgIHRo
aXMuX2NoZWNrRm9yRW1wdHlGaWx0ZXJSZXN1bHRzKCk7CiAgICAgICAgIHRoaXMuX3VwZGF0ZUNv
bnRlbnRPdmVyZmxvd1NoYWRvd1Zpc2liaWxpdHkoKTsKKyAgICAgICAgdGhpcy5fY2hlY2tFbGVt
ZW50c0ZvclBlbmRpbmdWaWV3U3RhdGVDb29raWUodHJlZUVsZW1lbnQpOwogICAgIH0sCiAKICAg
ICBfdHJlZUVsZW1lbnRFeHBhbmRlZE9yQ29sbGFwc2VkOiBmdW5jdGlvbih0cmVlRWxlbWVudCkK
QEAgLTQ5MCw2ICs1MzYsNjcgQEAgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwu
cHJvdG90eXBlID0gewogCiAgICAgICAgIC8vIENoZWNrIG9uIGEgZGVsYXkgdG8gY29hbGVzY2Ug
bXVsdGlwbGUgY2FsbHMgdG8gX2NoZWNrRm9yT2xkUmVzb3VyY2VzLgogICAgICAgICB0aGlzLl9j
aGVja0Zvck9sZFJlc291cmNlc1RpbWVvdXRJZGVudGlmaWVyID0gc2V0VGltZW91dChkZWxheWVk
V29yay5iaW5kKHRoaXMpLCAwKTsKKyAgICB9LAorCisgICAgX2NoZWNrT3V0bGluZXNGb3JQZW5k
aW5nVmlld1N0YXRlQ29va2llOiBmdW5jdGlvbihtYXRjaFR5cGVPbmx5KQorICAgIHsKKyAgICAg
ICAgaWYgKCF0aGlzLl9wZW5kaW5nVmlld1N0YXRlQ29va2llKQorICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgIHZhciB3b3JrTGlzdCA9IFtdOworICAgICAgICB0aGlzLl9hbGxDb250ZW50
VHJlZU91dGxpbmVzLmZvckVhY2goZnVuY3Rpb24ob3V0bGluZSkgeyB3b3JrTGlzdC5wdXNoKG91
dGxpbmUpOyB9KTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB3b3JrTGlzdC5sZW5ndGg7
ICsraSkKKyAgICAgICAgICAgIGlmICh3b3JrTGlzdFtpXS5oYXNDaGlsZHJlbikKKyAgICAgICAg
ICAgICAgICB3b3JrTGlzdCA9IHdvcmtMaXN0LmNvbmNhdCh3b3JrTGlzdFtpXS5jaGlsZHJlbik7
CisKKyAgICAgICAgLy8gVGhpcyBpbmNsdWRlcyB0cmVlT3V0bGluZXMgaW4gdGhlIGVsZW1lbnRz
IGxpc3QsIGJ1dCB0aGlzIGlzIGhhcm1sZXNzLgorICAgICAgICByZXR1cm4gdGhpcy5fY2hlY2tF
bGVtZW50c0ZvclBlbmRpbmdWaWV3U3RhdGVDb29raWUod29ya0xpc3QpOworICAgIH0sCisKKyAg
ICBfY2hlY2tFbGVtZW50c0ZvclBlbmRpbmdWaWV3U3RhdGVDb29raWU6IGZ1bmN0aW9uKHRyZWVF
bGVtZW50cywgbWF0Y2hUeXBlT25seSkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5fcGVuZGlu
Z1ZpZXdTdGF0ZUNvb2tpZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB2YXIgY29v
a2llID0gdGhpcy5fcGVuZGluZ1ZpZXdTdGF0ZUNvb2tpZTsKKworICAgICAgICBmdW5jdGlvbiB0
cmVlRWxlbWVudE1hdGNoZXNDb29raWUodHJlZUVsZW1lbnQpIHsKKyAgICAgICAgICAgIHZhciBy
ZXByZXNlbnRlZE9iamVjdCA9IHRyZWVFbGVtZW50LnJlcHJlc2VudGVkT2JqZWN0OworICAgICAg
ICAgICAgaWYgKCFyZXByZXNlbnRlZE9iamVjdCkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICAgICAgICAgIHZhciB0eXBlSWRlbnRpZmllciA9IGNvb2tpZVtXZWJJbnNwZWN0
b3IuVHlwZUlkZW50aWZpZXJDb29raWVLZXldOworICAgICAgICAgICAgaWYgKHR5cGVJZGVudGlm
aWVyICE9PSByZXByZXNlbnRlZE9iamVjdC5jb25zdHJ1Y3Rvci5UeXBlSWRlbnRpZmllcikKKyAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgIGlmIChtYXRjaFR5cGVP
bmx5KQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAgICAgICB2YXIgY2Fu
ZGlkYXRlT2JqZWN0Q29va2llID0ge307CisgICAgICAgICAgICByZXByZXNlbnRlZE9iamVjdC5z
YXZlSWRlbnRpdHlUb0Nvb2tpZShjYW5kaWRhdGVPYmplY3RDb29raWUpOworCisgICAgICAgICAg
ICByZXR1cm4gT2JqZWN0LmtleXMoY2FuZGlkYXRlT2JqZWN0Q29va2llKS5ldmVyeShmdW5jdGlv
biB2YWx1ZXNNYXRjaEZvcktleShrZXkpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gY2FuZGlk
YXRlT2JqZWN0Q29va2llW2tleV0gPT09IGNvb2tpZVtrZXldOworICAgICAgICAgICAgfSk7Cisg
ICAgICAgIH0KKworICAgICAgICBpZiAoISh0cmVlRWxlbWVudHMgaW5zdGFuY2VvZiBBcnJheSkp
CisgICAgICAgICAgICB0cmVlRWxlbWVudHMgPSBbdHJlZUVsZW1lbnRzXTsKKworICAgICAgICB2
YXIgbWF0Y2hlZEVsZW1lbnQgPSBudWxsOworICAgICAgICB0cmVlRWxlbWVudHMuc29tZShmdW5j
dGlvbihlbGVtZW50KSB7CisgICAgICAgICAgICBpZiAodHJlZUVsZW1lbnRNYXRjaGVzQ29va2ll
KGVsZW1lbnQpKSB7CisgICAgICAgICAgICAgICAgbWF0Y2hlZEVsZW1lbnQgPSBlbGVtZW50Owor
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICB9KTsK
KworICAgICAgICBpZiAobWF0Y2hlZEVsZW1lbnQpIHsKKyAgICAgICAgICAgIG1hdGNoZWRFbGVt
ZW50LnJldmVhbEFuZFNlbGVjdCgpOworICAgICAgICAgICAgZGVsZXRlIHRoaXMuX3BlbmRpbmdW
aWV3U3RhdGVDb29raWU7CisgICAgICAgICAgICBpZiAodGhpcy5fZmluYWxBdHRlbXB0VG9SZXN0
b3JlVmlld1N0YXRlVGltZW91dCkKKyAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5f
ZmluYWxBdHRlbXB0VG9SZXN0b3JlVmlld1N0YXRlVGltZW91dCk7CisgICAgICAgIH0KICAgICB9
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9S
ZXNvdXJjZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Jlc291cmNl
LmpzCmluZGV4IDNjMjZmZWJkYTM3ZWYzNDg2ODQzOGRlYjE3MjQwYTQ0MjI2YWE4ZDMuLjAxOWQ1
M2FjZDkwZTJkMjYyOWYyYTUyOGVmZDk3MWQ1ZjhmYTA2Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Jlc291cmNlLmpzCisrKyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Jlc291cmNlLmpzCkBAIC01NSw2ICs1NSwxMCBAQCBX
ZWJJbnNwZWN0b3IuUmVzb3VyY2UgPSBmdW5jdGlvbih1cmwsIG1pbWVUeXBlLCB0eXBlLCBsb2Fk
ZXJJZGVudGlmaWVyLCByZXF1ZXN0SQogCiBXZWJJbnNwZWN0b3IuT2JqZWN0LmFkZENvbnN0cnVj
dG9yRnVuY3Rpb25zKFdlYkluc3BlY3Rvci5SZXNvdXJjZSk7CiAKK1dlYkluc3BlY3Rvci5SZXNv
dXJjZS5UeXBlSWRlbnRpZmllciA9ICJyZXNvdXJjZSI7CitXZWJJbnNwZWN0b3IuUmVzb3VyY2Uu
VVJMQ29va2llS2V5ID0gInJlc291cmNlLXVybCI7CitXZWJJbnNwZWN0b3IuUmVzb3VyY2UuTWFp
blJlc291cmNlQ29va2llS2V5ID0gInJlc291cmNlLWlzLW1haW4tcmVzb3VyY2UiOworCiBXZWJJ
bnNwZWN0b3IuUmVzb3VyY2UuRXZlbnQgPSB7CiAgICAgVVJMRGlkQ2hhbmdlOiAicmVzb3VyY2Ut
dXJsLWRpZC1jaGFuZ2UiLAogICAgIE1JTUVUeXBlRGlkQ2hhbmdlOiAicmVzb3VyY2UtbWltZS10
eXBlLWRpZC1jaGFuZ2UiLApAQCAtNjkxLDYgKzY5NSwxMiBAQCBXZWJJbnNwZWN0b3IuUmVzb3Vy
Y2UucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5fdHlwZSA9IFdlYkluc3BlY3Rvci5S
ZXNvdXJjZS5UeXBlLlNjcmlwdDsKICAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlz
dGVuZXJzKFdlYkluc3BlY3Rvci5SZXNvdXJjZS5FdmVudC5UeXBlRGlkQ2hhbmdlLCB7b2xkVHlw
ZTogb2xkVHlwZX0pOwogICAgICAgICB9CisgICAgfSwKKworICAgIHNhdmVJZGVudGl0eVRvQ29v
a2llOiBmdW5jdGlvbihjb29raWUpCisgICAgeworICAgICAgICBjb29raWVbV2ViSW5zcGVjdG9y
LlJlc291cmNlLlVSTENvb2tpZUtleV0gPSB0aGlzLnVybDsKKyAgICAgICAgY29va2llW1dlYklu
c3BlY3Rvci5SZXNvdXJjZS5NYWluUmVzb3VyY2VDb29raWVLZXldID0gdGhpcy5pc01haW5SZXNv
dXJjZSgpOwogICAgIH0KIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1Jlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUmVzb3VyY2VDbHVzdGVyQ29udGVudFZpZXcuanMKaW5k
ZXggMzIxOTAwY2VlNGQwMmRlOTkwMGViMDQ3Y2M4ZDBhNzg2ZWI1MjFjMS4uYWE1Y2Q1OTM1MTli
ZWZkMWRiOTljNzExMDA0NjNjYTlmNGZmYzViMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvUmVzb3VyY2VDbHVzdGVyQ29udGVudFZpZXcuanMKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUmVzb3VyY2VDbHVzdGVyQ29udGVu
dFZpZXcuanMKQEAgLTQ3LDYgKzQ3LDggQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlQ2x1c3RlckNv
bnRlbnRWaWV3ID0gZnVuY3Rpb24ocmVzb3VyY2UpCiAgICAgdGhpcy5fY3VycmVudENvbnRlbnRW
aWV3U2V0dGluZyA9IG5ldyBXZWJJbnNwZWN0b3IuU2V0dGluZygicmVzb3VyY2UtY3VycmVudC12
aWV3LSIgKyB0aGlzLl9yZXNvdXJjZS51cmwuaGFzaCwgV2ViSW5zcGVjdG9yLlJlc291cmNlQ2x1
c3RlckNvbnRlbnRWaWV3LlJlc3BvbnNlSWRlbnRpZmllcik7CiB9OwogCitXZWJJbnNwZWN0b3Iu
UmVzb3VyY2VDbHVzdGVyQ29udGVudFZpZXcuQ29udGVudFZpZXdJZGVudGlmaWVyQ29va2llS2V5
ID0gInJlc291cmNlLWNsdXN0ZXItY29udGVudC12aWV3LWlkZW50aWZpZXIiOworCiBXZWJJbnNw
ZWN0b3IuUmVzb3VyY2VDbHVzdGVyQ29udGVudFZpZXcuUmVxdWVzdEljb25TdHlsZUNsYXNzTmFt
ZSA9ICJyZXF1ZXN0LWljb24iOwogV2ViSW5zcGVjdG9yLlJlc291cmNlQ2x1c3RlckNvbnRlbnRW
aWV3LlJlc3BvbnNlSWNvblN0eWxlQ2xhc3NOYW1lID0gInJlc3BvbnNlLWljb24iOwogV2ViSW5z
cGVjdG9yLlJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3LlJlcXVlc3RJZGVudGlmaWVyID0gInJl
cXVlc3QiOwpAQCAtMTQyLDE3ICsxNDQsMTMgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlQ2x1c3Rl
ckNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKIAogICAgIHNhdmVUb0Nvb2tpZTogZnVuY3Rpb24o
Y29va2llKQogICAgIHsKLSAgICAgICAgY29va2llLnR5cGUgPSBXZWJJbnNwZWN0b3IuQ29udGVu
dFZpZXdDb29raWVUeXBlLlJlc291cmNlOwotICAgICAgICBjb29raWUudXJsID0gdGhpcy5yZXBy
ZXNlbnRlZE9iamVjdC51cmw7Ci0gICAgICAgIGNvb2tpZS5zdWJ2aWV3ID0gdGhpcy5fY3VycmVu
dENvbnRlbnRWaWV3U2V0dGluZy52YWx1ZTsKKyAgICAgICAgY29va2llW1dlYkluc3BlY3Rvci5S
ZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5Db250ZW50Vmlld0lkZW50aWZpZXJDb29raWVLZXld
ID0gdGhpcy5fY3VycmVudENvbnRlbnRWaWV3U2V0dGluZy52YWx1ZTsKICAgICB9LAogCiAgICAg
cmVzdG9yZUZyb21Db29raWU6IGZ1bmN0aW9uKGNvb2tpZSkKICAgICB7Ci0gICAgICAgIGlmICgi
bGluZU51bWJlciIgaW4gY29va2llICYmICJjb2x1bW5OdW1iZXIiIGluIGNvb2tpZSkKLSAgICAg
ICAgICAgIHJldHVybiB0aGlzLnNob3dSZXNwb25zZShuZXcgV2ViSW5zcGVjdG9yLlNvdXJjZUNv
ZGVQb3NpdGlvbihjb29raWUubGluZU51bWJlciwgY29va2llLmNvbHVtbk51bWJlcikpOwotCi0g
ICAgICAgIHRoaXMuX3Nob3dDb250ZW50Vmlld0ZvcklkZW50aWZpZXIoY29va2llLnN1YnZpZXcp
OworICAgICAgICB2YXIgdmlld0lkZW50aWZpZXIgPSBjb29raWVbV2ViSW5zcGVjdG9yLlJlc291
cmNlQ2x1c3RlckNvbnRlbnRWaWV3LkNvbnRlbnRWaWV3SWRlbnRpZmllckNvb2tpZUtleV07Cisg
ICAgICAgIHRoaXMuX3Nob3dDb250ZW50Vmlld0ZvcklkZW50aWZpZXIodmlld0lkZW50aWZpZXIp
OwogICAgIH0sCiAKICAgICBzaG93UmVxdWVzdDogZnVuY3Rpb24oKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvU2NyaXB0LmpzIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvU2NyaXB0LmpzCmluZGV4IDYzZjQwMWQ0YzgyYzc0ZjRi
NzE1NzcwNzA5ZTM0YTlkMTMzNTU2MGQuLjQ2ZjFkZGJjZWUwYWY3MjVlOTZiNjllMTc3YmMyNjUy
YWMzNmM4ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1NjcmlwdC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9TY3Jp
cHQuanMKQEAgLTQzLDYgKzQzLDEwIEBAIFdlYkluc3BlY3Rvci5TY3JpcHQgPSBmdW5jdGlvbihp
ZCwgcmFuZ2UsIHVybCwgaW5qZWN0ZWQsIHNvdXJjZU1hcFVSTCkKICAgICAgICAgV2ViSW5zcGVj
dG9yLnNvdXJjZU1hcE1hbmFnZXIuZG93bmxvYWRTb3VyY2VNYXAoc291cmNlTWFwVVJMLCB0aGlz
Ll91cmwsIHRoaXMpOwogfTsKIAorV2ViSW5zcGVjdG9yLlNjcmlwdC5UeXBlSWRlbnRpZmllciA9
ICJzY3JpcHQiOworV2ViSW5zcGVjdG9yLlNjcmlwdC5VUkxDb29raWVLZXkgPSAic2NyaXB0LXVy
bCI7CitXZWJJbnNwZWN0b3IuU2NyaXB0LkRpc3BsYXlOYW1lQ29va2llS2V5ID0gInNjcmlwdC1k
aXNwbGF5LW5hbWUiOworCiBXZWJJbnNwZWN0b3IuU2NyaXB0LnJlc2V0VW5pcXVlRGlzcGxheU5h
bWVOdW1iZXJzID0gZnVuY3Rpb24oKQogewogICAgIFdlYkluc3BlY3Rvci5TY3JpcHQuX25leHRV
bmlxdWVEaXNwbGF5TmFtZU51bWJlciA9IDE7CkBAIC0xMTcsNiArMTIxLDEyIEBAIFdlYkluc3Bl
Y3Rvci5TY3JpcHQucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9LAog
CisgICAgc2F2ZUlkZW50aXR5VG9Db29raWU6IGZ1bmN0aW9uKGNvb2tpZSkKKyAgICB7CisgICAg
ICAgIGNvb2tpZVtXZWJJbnNwZWN0b3IuU2NyaXB0LlVSTENvb2tpZUtleV0gPSB0aGlzLnVybDsK
KyAgICAgICAgY29va2llW1dlYkluc3BlY3Rvci5TY3JpcHQuRGlzcGxheU5hbWVDb29raWVLZXld
ID0gdGhpcy5kaXNwbGF5TmFtZTsKKyAgICB9LAorCiAgICAgLy8gUHJpdmF0ZQogCiAgICAgX3Jl
c29sdmVSZXNvdXJjZTogZnVuY3Rpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvU3RvcmFnZU1hbmFnZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9TdG9yYWdlTWFuYWdlci5qcwppbmRleCA4OTVkYTExM2M2Yzg1Zjc3
ZWZkYWYwOGZmNmIzNTA0ZDZjZDY1Njg0Li5kYjgzY2UyZjQ4NDE3M2Q3Mzk1MTY2Mzc0ZjNmYWI5
OTM2MzgwYmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9TdG9yYWdlTWFuYWdlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9TdG9yYWdlTWFuYWdlci5qcwpAQCAtMTQ3LDU3ICsxNDcsNiBAQCBXZWJJbnNwZWN0b3Iu
U3RvcmFnZU1hbmFnZXIucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRU
b0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuU3RvcmFnZU1hbmFnZXIuRXZlbnQuRE9NU3RvcmFnZU9i
amVjdFdhc0luc3BlY3RlZCwge2RvbVN0b3JhZ2U6IGRvbVN0b3JhZ2V9KTsKICAgICB9LAogCi0g
ICAgb2JqZWN0Rm9yQ29va2llOiBmdW5jdGlvbihjb29raWUsIG1hdGNoT25UeXBlQWxvbmUpCi0g
ICAgewotICAgICAgICBjb25zb2xlLmFzc2VydChjb29raWUudHlwZSk7Ci0KLSAgICAgICAgdmFy
IGZpbmRNYXRjaGluZ09iamVjdEluQXJyYXkgPSBmdW5jdGlvbiAoYXJyYXksIG1hdGNoZXNGdW5j
dGlvbikgewotICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7ICsr
aSkKLSAgICAgICAgICAgICAgICBpZiAobWF0Y2hlc0Z1bmN0aW9uLmNhbGwobnVsbCwgYXJyYXlb
aV0pKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXJyYXlbaV07Ci0KLSAgICAgICAgICAg
IHJldHVybiBtYXRjaE9uVHlwZUFsb25lICYmIGFycmF5Lmxlbmd0aCA/IGFycmF5WzBdIDogbnVs
bDsKLSAgICAgICAgfTsKLQotICAgICAgICBpZiAoY29va2llLnR5cGUgPT09IFdlYkluc3BlY3Rv
ci5Db250ZW50Vmlld0Nvb2tpZVR5cGUuQ29va2llU3RvcmFnZSkgewotICAgICAgICAgICAgaWYg
KHRoaXMuX2Nvb2tpZVN0b3JhZ2VPYmplY3RzW2Nvb2tpZS5ob3N0XSkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gdGhpcy5fY29va2llU3RvcmFnZU9iamVjdHNbY29va2llLmhvc3RdOwotCi0gICAg
ICAgICAgICBpZiAoIW1hdGNoT25UeXBlQWxvbmUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG51
bGw7Ci0KLSAgICAgICAgICAgIC8vIElmIHdlIGp1c3Qgd2FudCBhbnkgY29va2llIHN0b3JhZ2Ug
b2JqZWN0LCB1c2UgdGhlIGZpcnN0IG9uZS4KLSAgICAgICAgICAgIGZvciAodmFyIGtleSBpbiB0
aGlzLl9jb29raWVTdG9yYWdlT2JqZWN0cykKLSAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5f
Y29va2llU3RvcmFnZU9iamVjdHNba2V5XTsKLQotICAgICAgICAgICAgcmV0dXJuIG51bGw7Ci0g
ICAgICAgIH0KLQotICAgICAgICBpZiAoY29va2llLnR5cGUgPT09IFdlYkluc3BlY3Rvci5Db250
ZW50Vmlld0Nvb2tpZVR5cGUuRE9NU3RvcmFnZSkgewotICAgICAgICAgICAgcmV0dXJuIGZpbmRN
YXRjaGluZ09iamVjdEluQXJyYXkodGhpcy5fZG9tU3RvcmFnZU9iamVjdHMsIGZ1bmN0aW9uKG9i
amVjdCkgewotICAgICAgICAgICAgICAgIHJldHVybiBvYmplY3QuaG9zdCA9PT0gY29va2llLmhv
c3QgJiYgb2JqZWN0LmlzTG9jYWxTdG9yYWdlKCkgPT09IGNvb2tpZS5pc0xvY2FsU3RvcmFnZTsK
LSAgICAgICAgICAgIH0pOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGNvb2tpZS50eXBlID09
PSBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXdDb29raWVUeXBlLkRhdGFiYXNlKSB7Ci0gICAgICAg
ICAgICByZXR1cm4gZmluZE1hdGNoaW5nT2JqZWN0SW5BcnJheSh0aGlzLl9kYXRhYmFzZU9iamVj
dHMsIGZ1bmN0aW9uKG9iamVjdCkgewotICAgICAgICAgICAgICAgIHJldHVybiBvYmplY3QuaG9z
dCA9PT0gY29va2llLmhvc3QgJiYgb2JqZWN0Lm5hbWUgPT09IGNvb2tpZS5uYW1lOwotICAgICAg
ICAgICAgfSk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBGSVhNRTogVGhpcyBpc24ndCBlYXN5
IHRvIGltcGxlbWVudCBsaWtlIHRoZSBvdGhlcnMgc2luY2UgRGF0YWJhc2VUcmVlRWxlbWVudAot
ICAgICAgICAvLyBjcmVhdGVzIGRhdGFiYXNlIHRhYmxlIG9iamVjdHMsIGFuZCB0aGV5IGFyZW4n
dCBrbm93biBieSBTdG9yYWdlTWFuYWdlci4gSnVzdAotICAgICAgICAvLyBkaXNwbGF5IHRoZSBk
YXRhYmFzZSBpbnN0ZWFkLgotICAgICAgICBpZiAoY29va2llLnR5cGUgPT09IFdlYkluc3BlY3Rv
ci5Db250ZW50Vmlld0Nvb2tpZVR5cGUuRGF0YWJhc2VUYWJsZSkgewotICAgICAgICAgICAgcmV0
dXJuIGZpbmRNYXRjaGluZ09iamVjdEluQXJyYXkodGhpcy5fZGF0YWJhc2VPYmplY3RzLCBmdW5j
dGlvbihvYmplY3QpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gb2JqZWN0Lmhvc3QgPT09IGNv
b2tpZS5ob3N0ICYmIG9iamVjdC5kYXRhYmFzZSA9PT0gY29va2llLm5hbWU7Ci0gICAgICAgICAg
ICB9KTsKLSAgICAgICAgfQotCi0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KCJVbmtub3duIGNvbnRl
bnQgdmlldyBjb29raWU6ICIsIGNvb2tpZSk7Ci0gICAgICAgIHJldHVybiBudWxsOwotICAgIH0s
Ci0KICAgICAvLyBQcml2YXRlCiAKICAgICBfbWFpblJlc291cmNlRGlkQ2hhbmdlOiBmdW5jdGlv
bihldmVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1RpbWVsaW5lTWFuYWdlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1RpbWVsaW5lTWFuYWdlci5qcwppbmRleCBhMWFkNDZlNDhiMGE1ZjU3MThlOTJlMmEwYjBkNDEz
ZDgyNWVkNjhiLi5jNWZiOGQ2ZmI2YWZmODJmZjVkNjk5OWE1NDUxNjk2MTQ0MGM5NmY1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UaW1lbGluZU1hbmFn
ZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGltZWxpbmVN
YW5hZ2VyLmpzCkBAIC0yOTksMTEgKzI5OSw2IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZU1hbmFn
ZXIucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5fbG9hZEV2ZW50VGltZSA9IHRpbWVz
dGFtcDsKICAgICB9LAogCi0gICAgb2JqZWN0Rm9yQ29va2llOiBmdW5jdGlvbihjb29raWUpCi0g
ICAgewotICAgICAgICByZXR1cm4gdGhpcy50aW1lbGluZXM7Ci0gICAgfSwKLQogICAgIC8vIFBy
aXZhdGUKIAogICAgIF9jbGVhcjogZnVuY3Rpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGltZWxpbmVzQ29udGVudFZpZXcuanMgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UaW1lbGluZXNDb250ZW50Vmlldy5qcwppbmRl
eCAxOTg0YWUzNzFmODUzODQ4ZmMwMDQwYWRjMzQ2NTFlODJlZDA2ZDE2Li41ZDVkM2I5MWU2NTEw
YTJhMGY1NWQ3OTIyMjFlMWRkMGI0NmY5OWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9UaW1lbGluZXNDb250ZW50Vmlldy5qcworKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UaW1lbGluZXNDb250ZW50Vmlldy5qcwpAQCAt
MjA5LDYgKzIwOSw4IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZXNDb250ZW50Vmlldy5Db2xsYXBz
ZUJ1dHRvbi5TdGF0ZXMgPSB7fTsKIFdlYkluc3BlY3Rvci5UaW1lbGluZXNDb250ZW50Vmlldy5D
b2xsYXBzZUJ1dHRvbi5TdGF0ZXMuTm9ybWFsID0gIm5vcm1hbCI7CiBXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVzQ29udGVudFZpZXcuQ29sbGFwc2VCdXR0b24uU3RhdGVzLkFjdGl2ZSA9ICJhY3RpdmUi
OwogCitXZWJJbnNwZWN0b3IuVGltZWxpbmVzQ29udGVudFZpZXcuU2VsZWN0ZWRUaW1lbGluZUNv
b2tpZUtleSA9ICJ0aW1lbGluZXMtY29udGVudC12aWV3LXNlbGVjdGVkLXRpbWVsaW5lIjsKKwog
V2ViSW5zcGVjdG9yLlRpbWVsaW5lc0NvbnRlbnRWaWV3LmdlbmVyYXRlRW1ib3NzZWRDb2xsYXBz
ZUltYWdlcyA9IGZ1bmN0aW9uKCkKIHsKICAgICBpZiAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lc0Nv
bnRlbnRWaWV3Ll9nZW5lcmF0ZWRJbWFnZXMpCkBAIC0zMzcsMTMgKzMzOSwxMyBAQCBXZWJJbnNw
ZWN0b3IuVGltZWxpbmVzQ29udGVudFZpZXcucHJvdG90eXBlID0gewogCiAgICAgc2F2ZVRvQ29v
a2llOiBmdW5jdGlvbihjb29raWUpCiAgICAgewotICAgICAgICBjb29raWUudHlwZSA9IFdlYklu
c3BlY3Rvci5Db250ZW50Vmlld0Nvb2tpZVR5cGUuVGltZWxpbmVzOwotICAgICAgICBjb29raWUu
dGltZWxpbmUgPSB0aGlzLl9jdXJyZW50UmVjb3JkVHlwZVNldHRpbmcudmFsdWU7CisgICAgICAg
IGNvb2tpZVtXZWJJbnNwZWN0b3IuVGltZWxpbmVzQ29udGVudFZpZXcuU2VsZWN0ZWRUaW1lbGlu
ZUNvb2tpZUtleV0gPSB0aGlzLl9jdXJyZW50UmVjb3JkVHlwZVNldHRpbmcudmFsdWU7CiAgICAg
fSwKIAogICAgIHJlc3RvcmVGcm9tQ29va2llOiBmdW5jdGlvbihjb29raWUpCiAgICAgewotICAg
ICAgICB0aGlzLnNob3dUaW1lbGluZUZvclJlY29yZFR5cGUoY29va2llLnRpbWVsaW5lKTsKKyAg
ICAgICAgdmFyIHRpbWVsaW5lID0gY29va2llW1dlYkluc3BlY3Rvci5UaW1lbGluZXNDb250ZW50
Vmlldy5TZWxlY3RlZFRpbWVsaW5lQ29va2llS2V5XTsKKyAgICAgICAgdGhpcy5zaG93VGltZWxp
bmVGb3JSZWNvcmRUeXBlKHRpbWVsaW5lKTsKICAgICB9LAogCiAgICAgdGltZWxpbmVPdmVydmll
d1JlY29yZHNXaXRoVHlwZTogZnVuY3Rpb24odHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1RyZWVPdXRsaW5lLmpzIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVHJlZU91dGxpbmUuanMKaW5kZXggMDQ4Y2Q1YjAzMjg5ZWZl
MmE2OTcxNjI3MWRiMmMzMDNiMGE5ZDQ4NS4uMDdlZTllZTlhOTM1YTRjZjE4MDgxZDcyYzk4MmE2
MGZkZmMwNThhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVHJlZU91dGxpbmUuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVHJlZU91dGxpbmUuanMKQEAgLTU3LDYgKzU3LDcgQEAgZnVuY3Rpb24gVHJlZU91dGxpbmUo
bGlzdE5vZGUpCiB9CiAKIFRyZWVPdXRsaW5lLl9rbm93blRyZWVFbGVtZW50TmV4dElkZW50aWZp
ZXIgPSAxOworVHJlZU91dGxpbmUucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gVHJlZU91dGxpbmU7
CiAKIFRyZWVPdXRsaW5lLnByb3RvdHlwZS5hcHBlbmRDaGlsZCA9IGZ1bmN0aW9uKGNoaWxkKQog
ewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>218246</attachid>
            <date>2013-12-02 17:47:01 -0800</date>
            <delta_ts>2013-12-03 10:30:06 -0800</delta_ts>
            <desc>v2</desc>
            <filename>bug-122125-20131202174700.patch</filename>
            <type>text/plain</type>
            <size>55806</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU5OTgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCAy
NmMyYjg0ZWE3NzM2NGZhZWM2NGZhZjA4MzYwMjVhNzU1N2Y5YzdmLi4yNDljMjNlM2NlNThiYTM2
N2Y3ZjlhYmVjZjhhMTFmOTBmNjg5NDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNjUgQEAKKzIwMTMtMTItMDIgIEJyaWFuIEouIEJ1cmcgIDxidXJnQGNzLndhc2hpbmd0
b24uZWR1PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IHJlc3RvcmUgbmF2aWdhdGlvbiBwYW5l
bCBzdGF0ZSBhY3Jvc3MgcmVsb2FkcyBhbmQgcmVvcGVucworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIyMTI1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIHByZXZpb3VzIHN0cmF0ZWd5IGZvciByZXN0
b3JpbmcgY29udGVudCB2aWV3cyBhZnRlciBpbnNwZWN0b3IKKyAgICAgICAgcmUtb3BlbiBkaWQg
bm90IGNvbnNpZGVyIHRoZSBhY3RpdmUgc2lkZWJhciBhbmQgaXRzIHNlbGVjdGlvbiwgYW5kCisg
ICAgICAgIHRyaWVkIHRvIHJlY3JlYXRlIHRoZSBhcHByb3ByaWF0ZSBzZWxlY3Rpb24gZnJvbSB0
aGUgc2F2ZWQgY29udGVudAorICAgICAgICB2aWV3LiBIb3dldmVyLCBkb2Vzbid0IHdvcmsgZm9y
IHRyZWUgZWxlbWVudHMgaW4gdGhlIHNpZGViYXIgcGFuZWwKKyAgICAgICAgdGhhdCBkb24ndCBj
aGFuZ2Ugdmlld3Mgd2hlbiBzZWxlY3RlZCwgc3VjaCBhcyBzY3JpcHQgYnJlYWtwb2ludHMsCisg
ICAgICAgIHNwZWNpYWwgYnJlYWtwb2ludHMsIGNhbGwgc3RhY2ssIHRpbWVsaW5lIHNlY3Rpb25z
LCBldGMuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIGEgbmV3IHN0cmF0ZWd5IHRo
YXQgc2F2ZXMgdGhlIG5hdmlnYXRpb24KKyAgICAgICAgc2lkZWJhciBwYW5lbCdzIHZpZXcgc3Rh
dGUgYnkgc2VyaWFsaXppbmcgdGhlIGlkZW50aXR5IG9mIHRoZQorICAgICAgICBzZWxlY3RlZCBl
bGVtZW50J3MgcmVwcmVzZW50ZWQgb2JqZWN0LiBSZWxldmFudCByZXByZXNlbnRlZAorICAgICAg
ICBvYmplY3QgY2xhc3NlcyBpbXBsZW1lbnQgdGhlIHNhdmVJZGVudGl0eVRvQ29va2llKCkgbWV0
aG9kLiBFYWNoCisgICAgICAgIHJlcHJlc2VudGVkIG9iamVjdCBjbGFzcyBhbHNvIGFkZHMgYSBU
eXBlSWRlbnRpZmllciBwcm9wZXJ0eSB0bworICAgICAgICBpdHMgY29uc3RydWN0b3IsIHRvIGFp
ZCBpbmV4YWN0IG1hdGNoaW5nIGJhc2VkIG9uIHJlcHJlc2VudGVkCisgICAgICAgIG9iamVjdCB0
eXBlLCByYXRoZXIgdGhhbiBpdHMgY29tcGxldGUgaWRlbnRpdHkuCisKKyAgICAgICAgV2hlbiBy
ZXN0b3JpbmcsIHRoZSBuYXZpZ2F0aW9uIHNpZGViYXIgYXR0ZW1wdHMgdG8gbWF0Y2ggYWRkZWQK
KyAgICAgICAgdHJlZSBlbGVtZW50cyBhZ2FpbnN0IHRoZSBwZW5kaW5nIGNvb2tpZSwgYW5kIHNl
bGVjdHMgdGhlIGVsZW1lbnQKKyAgICAgICAgaWYgaXQgbWF0Y2hlcy4gQSByZXByZXNlbnRlZCBv
YmplY3QgbWF0Y2hlcyBpZiBpdHMgc2VyaWFsaXplZAorICAgICAgICBpZGVudGl0eSBtYXRjaGVz
IHRoZSBwcmV2aW91c2x5IHNhdmVkIHNlcmlhbGl6ZWQgaWRlbnRpdHkuCisKKyAgICAgICAgVGhl
IGluc3BlY3RvciB2aWV3IHN0YXRlIGlzIG5vdyBvbmx5IHNhdmVkIG9uIHRoZSBwYWdlIGhpZGUg
ZXZlbnQKKyAgICAgICAgKGZvciBzYXZpbmcgYWNyb3NzIHJlb3BlbikgYW5kIHdoZW4gdGhlIG1h
aW4gZnJhbWUgY29tbWl0cyBpdHMKKyAgICAgICAgcHJvdmlzaW9uYWwgbG9hZCAoZm9yIHNhdmlu
ZyBhY3Jvc3Mgc2FtZS1wYWdlIHJlbG9hZHMpLiBJdAorICAgICAgICBjb25zb2xpZGF0ZXMgc2lt
aWxhciB2aWV3IHN0YXRlIHNldHRpbmdzIGludG8gYSBzaW5nbGUgc2V0dGluZy4KKworICAgICAg
ICAqIFVzZXJJbnRlcmZhY2UvQXBwbGljYXRpb25DYWNoZUZyYW1lLmpzOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVGcmFtZSk6IEFkZCBjb29raWUga2V5cyBhbmQgdHlw
ZSBpZGVudGlmaWVyLgorICAgICAgICAoV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVGcmFt
ZS5wcm90b3R5cGUuc2F2ZUlkZW50aXR5VG9Db29raWUpOiBBZGRlZC4KKyAgICAgICAgKiBVc2Vy
SW50ZXJmYWNlL0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmpzOiByZW1vdmUgb2JqZWN0Rm9yQ29v
a2llKCkuCisgICAgICAgICogVXNlckludGVyZmFjZS9CcmVha3BvaW50LmpzOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQpOiBBZGQgY29va2llIGtleXMgYW5kIHR5cGUgaWRlbnRp
Zmllci4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5CcmVha3BvaW50LnByb3RvdHlwZS5zYXZlSWRl
bnRpdHlUb0Nvb2tpZSk6CisgICAgICAgICogVXNlckludGVyZmFjZS9Db29raWVTdG9yYWdlT2Jq
ZWN0LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvb2tpZVN0b3JhZ2VPYmplY3QucHJvdG90
eXBlLnNhdmVJZGVudGl0eVRvQ29va2llKTogQWRkZWQuCisgICAgICAgICogVXNlckludGVyZmFj
ZS9ET01TdG9yYWdlT2JqZWN0LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VP
YmplY3QpOiBBZGQgY29va2llIGtleXMgYW5kIHR5cGUgaWRlbnRpZmllci4KKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5ET01TdG9yYWdlT2JqZWN0LnByb3RvdHlwZS5zYXZlSWRlbnRpdHlUb0Nvb2tp
ZSk6IEFkZGVkLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvRGF0YWJhc2VPYmplY3QuanM6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuRGF0YWJhc2VPYmplY3QpOiBBZGQgY29va2llIGtleXMgYW5k
IHR5cGUgaWRlbnRpZmllci4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXRhYmFzZU9iamVjdC5w
cm90b3R5cGUuc2F2ZUlkZW50aXR5VG9Db29raWUpOiBBZGRlZC4KKyAgICAgICAgKiBVc2VySW50
ZXJmYWNlL0RhdGFiYXNlVGFibGVPYmplY3QuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGF0
YWJhc2VUYWJsZU9iamVjdCk6IEFkZCBjb29raWUga2V5cyBhbmQgdHlwZSBpZGVudGlmaWVyLgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkRhdGFiYXNlVGFibGVPYmplY3QucHJvdG90eXBlLnNhdmVJ
ZGVudGl0eVRvQ29va2llKTogQWRkZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9EZWJ1Z2dl
clNpZGViYXJQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclNpZGViYXJQ
YW5lbC5wcm90b3R5cGUuc2F2ZVN0YXRlVG9Db29raWUpOiBBZGRlZC4KKyAgICAgICAgKFdlYklu
c3BlY3Rvci5EZWJ1Z2dlclNpZGViYXJQYW5lbC5wcm90b3R5cGUucmVzdG9yZVN0YXRlRnJvbUNv
b2tpZSk6IEFkZGVkLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvRnJhbWUuanM6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuRnJhbWUpOiBBZGQgY29va2llIGtleXMgYW5kIHR5cGUgaWRlbnRpZmll
ci4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5GcmFtZS5wcm90b3R5cGUuc2F2ZUlkZW50aXR5VG9D
b29raWUpOiBBZGRlZC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0ZyYW1lUmVzb3VyY2VNYW5h
Z2VyLmpzOiByZW1vdmUgb2JqZWN0Rm9yQ29va2llKCkuCisgICAgICAgICogVXNlckludGVyZmFj
ZS9JbnN0cnVtZW50U2lkZWJhclBhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkluc3Ry
dW1lbnRTaWRlYmFyUGFuZWwucHJvdG90eXBlLnNob3dUaW1lbGluZUZvclJlY29yZFR5cGUpOgor
ICAgICAgICBSZXR1cm4gdGhlIHNob3duIHRpbWVsaW5lLCBpZiBhbnkuCisKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5JbnN0cnVtZW50U2lkZWJhclBhbmVsLnByb3RvdHlwZS5zYXZlU3RhdGVUb0Nv
b2tpZSk6IEFkZGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLkluc3RydW1lbnRTaWRlYmFyUGFu
ZWwucHJvdG90eXBlLnJlc3RvcmVTdGF0ZUZyb21Db29raWUpOiBBZGRlZC4KKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5JbnN0cnVtZW50U2lkZWJhclBhbmVsLnByb3RvdHlwZS5zaG93UHJvZmlsZSk6
CisgICAgICAgIFJldHVybiB0aGUgc2hvd24gcHJvZmlsZSwgaWYgYW55LgorCisgICAgICAgICog
VXNlckludGVyZmFjZS9NYWluLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yKTogQWRkZWQgY29v
a2llIGtleXMgZm9yIHRoZSBzZWxlY3RlZCBzaWRlYmFyIGFuZAorICAgICAgICB0eXBlaWRlbnRp
ZmllciBvZiB0aGUgc2lkZWJhcidzIHNlbGVjdGVkIHRyZWUgZWxlbWVudC4KKworICAgICAgICAo
V2ViSW5zcGVjdG9yLmNvbnRlbnRMb2FkZWQpOiBSZW1vdmUgY2FsbGJhY2tzIGZvcgorICAgICAg
ICByZXNvbHZlQW5kU2hvd1BlbmRpbmdDb250ZW50Vmlld0Nvb2tpZSgpLiBDb25zb2xpZGF0ZSBh
bGwgc2F2ZWQKKyAgICAgICAgaW5zcGVjdG9yIHZpZXcgc3RhdGUgaW50byBvbmUgU2V0dGluZy4g
TW92ZSBzcGVjaWFsLWNhc2VkCisgICAgICAgIHJlc3RvcmluZyBvZiB0aGUgY29uc29sZSB0byB0
aGUgcmVzdG9yYXRpb24gbWV0aG9kLiBNb3ZlIHNhdmluZworICAgICAgICBvZiBsYXN0IG9wZW5l
ZCBuYXZpZ2F0aW9uIHBhbmVsIHRvIHRoZSBzYXZpbmcgbWV0aG9kLgorCisgICAgICAgIChXZWJJ
bnNwZWN0b3IuX21haW5SZXNvdXJjZURpZENoYW5nZSk6IFRyeSB0byByZXN0b3JlIHNhdmVkIHZp
ZXcKKyAgICAgICAgc3RhdGUgd2hlbiB0aGUgbWFpbiByZXNvdXJjZSBjaGFuZ2VzLgorCisgICAg
ICAgIChXZWJJbnNwZWN0b3IuX3Byb3Zpc2lvbmFsTG9hZENvbW1pdHRlZCk6IFVwZGF0ZSB0aGUg
c2F2ZWQgdmlldworICAgICAgICBzdGF0ZSB3aGVuIHRoZSBuYXZpZ2F0aW9uIGNvbW1pdHMuIFRo
aXMgaXMgdGhlIGxhc3QgY2hhbmNlIHRvIHNhdmUKKyAgICAgICAgaXQgYmVmb3JlIHRoZSBtYWlu
IHJlc291cmNlIGNoYW5nZXMgYW5kIHRoZSBuYXZpZ2F0aW9uIHBhbmVsIHZpZXcKKyAgICAgICAg
c3RhdGUgaXMgZGlzY2FyZGVkIGFuZCByZWJ1aWx0LgorCisgICAgICAgIChXZWJJbnNwZWN0b3Iu
X3BhZ2VIaWRkZW4pOiBVcGRhdGUgdGhlIHNhdmVkIHZpZXcgc3RhdGUgd2hlbiB0aGUKKyAgICAg
ICAgaW5zcGVjdG9yIHBhZ2UgaXMgaGlkZGVuLCBidXQgYmVmb3JlIHN0YXRlIGlzIGRpc2NhcmRl
ZC4KKworICAgICAgICAoV2ViSW5zcGVjdG9yLl9uYXZpZ2F0aW9uU2lkZWJhclBhbmVsU2VsZWN0
ZWQpOiBEb24ndCBzYXZlIGxhc3QKKyAgICAgICAgbmF2aWdhdGlvbiBzaWRlYmFyIHBhbmVsLgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLl91cGRhdGVDb29raWVGb3JJbnNwZWN0b3JWaWV3U3RhdGUp
OiBSZW5hbWVkIGZyb20KKyAgICAgICAgX3VwZGF0ZUN1cnJlbnRDb250ZW50Vmlld0Nvb2tpZS4g
SXQgZGVsZWdhdGVzIHZpZXcgc3RhdGUKKyAgICAgICAgc2VyaWFsaXphdGlvbiB0byB0aGUgY3Vy
cmVudGx5IG9wZW4gbmF2aWdhdGlvbiBzaWRlYmFyLCByYXRoZXIKKyAgICAgICAgdGhhbiB0aGUg
Y3VycmVudCBjb250ZW50IHZpZXcuCisKKyAgICAgICAgKFdlYkluc3BlY3Rvci5fY29udGVudEJy
b3dzZXJSZXByZXNlbnRlZE9iamVjdHNEaWRDaGFuZ2UpOiBEb24ndAorICAgICAgICBzcHVyaW91
c2x5IHNlcmlhbGl6ZSB0aGUgY3VycmVudCB2aWV3IHN0YXRlIGNvb2tpZSBvbiBldmVyeQorICAg
ICAgICBDb250ZW50VmlldyBjaGFuZ2UuCisKKyAgICAgICAgKFdlYkluc3BlY3Rvci5fcmVzdG9y
ZUluc3BlY3RvclZpZXdTdGF0ZUZyb21Db29raWUpOiBSZW5hbWVkIGZyb20KKyAgICAgICAgX3No
b3dDb250ZW50Vmlld0ZvckNvb2tpZS4gSXQgbm93IHJlc3RvcmVzIGEgc3BlY2lmaWMgbmF2aWdh
dGlvbgorICAgICAgICBwYW5lbCBhbmQgZGVsZWdhdGVzIHJlbWFpbmluZyB2aWV3IHN0YXRlIHJl
c3RvcmF0aW9uIHRvIHRoZSBwYW5lbAorICAgICAgICBpdHNlbGYuIExhc3QtcmVzb3J0IHNlbGVj
dGlvbiBvZiBhbnkgdHJlZSBlbGVtZW50IHdpdGggdGhlIHNhbWUKKyAgICAgICAgdHlwZSBpZGVu
dGlmaWVyIHdhcyBtb3ZlZCB0byB0aGUgbmF2aWdhdGlvbiBwYW5lbCdzIHJlc3RvcmUgbWV0aG9k
LgorCisgICAgICAgICogVXNlckludGVyZmFjZS9OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLmpzOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwucHJvdG90eXBlLnNldCBjb250ZW50
VHJlZU91dGxpbmUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFu
ZWwucHJvdG90eXBlLmNyZWF0ZUNvbnRlbnRUcmVlT3V0bGluZSk6CisgICAgICAgIFNhdmUgcmVm
ZXJlbmNlcyB0byBhbGwgY3JlYXRlZCBUcmVlT3V0bGluZXMgaW4gYSBTZXQsIHNvIHdlIGNhbgor
ICAgICAgICByZXN0b3JlIGFueSB0cmVlJ3Mgc2VsZWN0aW9uLgorCisgICAgICAgIChXZWJJbnNw
ZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQYW5lbC5wcm90b3R5cGUuc2F2ZVN0YXRlVG9Db29raWUp
OgorICAgICAgICBBZGRlZC4gRmluZCB0aGUgc2VsZWN0ZWQgdHJlZSBlbGVtZW50IGZyb20gYWxs
IHRyZWUgb3V0bGluZXMgYW5kCisgICAgICAgIGFzayBpdCB0byBzZXJpYWxpemUgaXRzIGlkZW50
aXR5LgorCisgICAgICAgIChXZWJJbnNwZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQYW5lbC5wcm90
b3R5cGUucmVzdG9yZVN0YXRlRnJvbUNvb2tpZSk6CisgICAgICAgIEFkZGVkLiBFYWdlcmx5IHNl
YXJjaCBleGlzdGluZyB0cmVlIGVsZW1lbnRzIGZvciBhIG1hdGNoaW5nCisgICAgICAgIHJlcHJl
c2VudGVkT2JqZWN0LiBJZiBub25lIGV4aXN0cywgc2F2ZSB0aGUgcGVuZGluZyBjb29raWUgYW5k
CisgICAgICAgIHNjaGVkdWxlIGxhc3QtcmVzb3J0IG1hdGNoaW5nIHVzaW5nIHRoZSBwcm92aWRl
ZCB0aW1lb3V0IGludGVydmFsLgorCisgICAgICAgIChXZWJJbnNwZWN0b3IuTmF2aWdhdGlvblNp
ZGViYXJQYW5lbC5wcm90b3R5cGUuX3RyZWVFbGVtZW50QWRkZWRPckNoYW5nZWQpOgorICAgICAg
ICBDaGVjayBpZiB0aGUgYWRkZWQgdHJlZSBlbGVtZW50IG1hdGNoZXMgYSBwZW5kaW5nIHZpZXcg
c3RhdGUKKyAgICAgICAgY29va2llLCBpZiBvbmUgZXhpc3RzLgorCisgICAgICAgIChXZWJJbnNw
ZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQYW5lbC5wcm90b3R5cGUudHJlZUVsZW1lbnRNYXRjaGVz
Q29va2llKToKKyAgICAgICAgQWRkZWQuIENoZWNrIGlmIHRoZSB0cmVlIGVsZW1lbnQncyByZXBy
ZXNlbnRlZE9iamVjdCBtYXRjaGVzIHRoZQorICAgICAgICBwZW5kaW5nIHZpZXcgc3RhdGUgY29v
a2llLgorCisgICAgICAgIChXZWJJbnNwZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQYW5lbC5wcm90
b3R5cGUuX2NoZWNrRWxlbWVudHNGb3JQZW5kaW5nVmlld1N0YXRlQ29va2llKToKKyAgICAgICAg
QWRkZWQuIEZvciBlYWNoIHByb3ZpZGVkIHRyZWUgZWxlbWVudCwgY2hlY2sgaWYgdGhlIHRyZWUK
KyAgICAgICAgZWxlbWVudCdzIHJlcHJlc2VudGVkIG9iamVjdCBwcm9kdWNlcyB0aGUgc2FtZSBz
ZXJpYWxpemVkIGlkZW50aXR5CisgICAgICAgIGFzIHRoZSBwZW5kaW5nIHZpZXcgc3RhdGUgY29v
a2llIHRoYXQgd2UgYXJlIHRyeWluZyB0byByZXNvbHZlLgorICAgICAgICBJZiBhIG1hdGNoIGlz
IGZvdW5kIChwb3NzaWJseSBieSByZWxheGluZyB0byBtYXRjaGluZyBhbnl0aGluZworICAgICAg
ICB3aXRoIHRoZSBzYW1lIHR5cGUpLCBzZWxlY3QgdGhlIHRyZWUgZWxlbWVudCBhbmQgY2xlYXIg
Ym90aCB0aGUKKyAgICAgICAgcGVuZGluZyB2aWV3IHN0YXRlIGNvb2tpZSBhbmQgbGFzdC1yZXNv
cnQgc2VsZWN0aW9uIHRpbWVyLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9SZXNvdXJjZS5q
czoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZSk6IEFkZCBjb29raWUga2V5cyBhbmQg
dHlwZSBpZGVudGlmaWVyLgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlLnByb3RvdHlw
ZS5zYXZlSWRlbnRpdHlUb0Nvb2tpZSk6IEFkZGVkLgorCisgICAgICAgICogVXNlckludGVyZmFj
ZS9SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5S
ZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5wcm90b3R5cGUuc2F2ZVRvQ29va2llKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5wcm90b3R5cGUucmVz
dG9yZUZyb21Db29raWUpOgorICAgICAgICBTaW5jZSBpZGVudGl0eSBzdGF0ZSBpcyBzZXJpYWxp
emVkIGJ5IHRoZSByZXByZXNlbnRlZE9iamVjdCwgdGhlc2UKKyAgICAgICAgbWV0aG9kcyBvbmx5
IG5lZWQgdG8gc2F2ZSB2aWV3LXNwZWNpZmljIHN0YXRlLCBzdWNoIGFzIHRoZSB2aXNpYmxlCisg
ICAgICAgIHN1YnZpZXcuIFJlbW92ZSBleHRyYW5lb3VzIHN0YXRlLgorCisgICAgICAgICogVXNl
ckludGVyZmFjZS9TY3JpcHQuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0KTogQWRk
IGNvb2tpZSBrZXlzIGFuZCB0eXBlIGlkZW50aWZpZXIuCisgICAgICAgIChXZWJJbnNwZWN0b3Iu
U2NyaXB0LnByb3RvdHlwZS5zYXZlSWRlbnRpdHlUb0Nvb2tpZSk6IEFkZGVkLgorICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvU3RvcmFnZU1hbmFnZXIuanM6IHJlbW92ZSBvYmplY3RGb3JDb29raWUo
KS4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1RpbWVsaW5lTWFuYWdlci5qczogcmVtb3ZlIG9i
amVjdEZvckNvb2tpZSgpLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVGltZWxpbmVzQ29udGVu
dFZpZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVzQ29udGVudFZpZXcucHJv
dG90eXBlLnNhdmVUb0Nvb2tpZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVzQ29u
dGVudFZpZXcucHJvdG90eXBlLnJlc3RvcmVGcm9tQ29va2llKToKKyAgICAgICAgU2luY2UgaWRl
bnRpdHkgc3RhdGUgaXMgc2VyaWFsaXplZCBieSB0aGUgcmVwcmVzZW50ZWRPYmplY3QsIHRoZXNl
CisgICAgICAgIG1ldGhvZHMgb25seSBuZWVkIHRvIHNhdmUgdmlldy1zcGVjaWZpYyBzdGF0ZSwg
c3VjaCBhcyB0aGUgdmlzaWJsZQorICAgICAgICBzdWJ2aWV3LiBSZW1vdmUgZXh0cmFuZW91cyBz
dGF0ZS4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVHJlZU91dGxpbmUuanM6IEFkZCBUcmVl
T3V0bGluZS5wcm90b3R5cGUuY29uc3RydWN0b3IKKyAgICAgICAgc28gb3RoZXIgY29kZSBjYW4g
YXNzdW1lIHRoZSBjb25zdHJ1Y3RvciBwcm9wZXJ0eSBleGlzdHMuCisKIDIwMTMtMTItMDIgIEFu
dG9pbmUgUXVpbnQgIDxncmFvdXRzQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9y
OiBwb3BvdmVyIGNhbiBvdmVybGFwIHRhcmdldCBmcmFtZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQXBwbGljYXRpb25DYWNoZUZyYW1lLmpzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQXBwbGljYXRpb25DYWNoZUZyYW1lLmpz
CmluZGV4IDg0ZjUwNmFjMzY5NzdmYjNiNGJhZTU1YjY3ZGRlN2NjYzE3MzljNzIuLjRkNzU4NzVj
ZDU2NDdkMDdjNGZjMDg1NmVjZTJjY2Y5MTE2NDk3ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0FwcGxpY2F0aW9uQ2FjaGVGcmFtZS5qcworKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9BcHBsaWNhdGlvbkNhY2hlRnJhbWUu
anMKQEAgLTM1LDkgKzM1LDE1IEBAIFdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlRnJhbWUg
PSBmdW5jdGlvbihmcmFtZSwgbWFuaWZlc3QsIHN0YXR1cykKICAgICB0aGlzLl9zdGF0dXMgPSBz
dGF0dXM7CiB9OwogCitXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZUZyYW1lLlR5cGVJZGVu
dGlmaWVyID0gImFwcGxpY2F0aW9uLWNhY2hlLWZyYW1lIjsKK1dlYkluc3BlY3Rvci5BcHBsaWNh
dGlvbkNhY2hlRnJhbWUuRnJhbWVVUkxDb29raWVLZXkgPSAiYXBwbGljYXRpb24tY2FjaGUtZnJh
bWUtdXJsIjsKK1dlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlRnJhbWUuTWFuaWZlc3RVUkxD
b29raWVLZXkgPSAiYXBwbGljYXRpb24tY2FjaGUtZnJhbWUtbWFuaWZlc3QtdXJsIjsKKwogV2Vi
SW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVGcmFtZS5wcm90b3R5cGUgPSB7CiAgICAgY29uc3Ry
dWN0b3I6IFdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlRnJhbWUsCiAgICAgCisgICAgLy8g
UHVibGljCisKICAgICBnZXQgZnJhbWUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2Zy
YW1lOwpAQCAtNTYsNiArNjIsMTIgQEAgV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVGcmFt
ZS5wcm90b3R5cGUgPSB7CiAgICAgc2V0IHN0YXR1cyhzdGF0dXMpCiAgICAgewogICAgICAgICB0
aGlzLl9zdGF0dXMgPSBzdGF0dXM7CisgICAgfSwKKworICAgIHNhdmVJZGVudGl0eVRvQ29va2ll
OiBmdW5jdGlvbihjb29raWUpCisgICAgeworICAgICAgICBjb29raWVbV2ViSW5zcGVjdG9yLkFw
cGxpY2F0aW9uQ2FjaGVGcmFtZS5GcmFtZVVSTENvb2tpZUtleV0gPSB0aGlzLmZyYW1lLnVybDsK
KyAgICAgICAgY29va2llW1dlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlRnJhbWUuTWFuaWZl
c3RVUkxDb29raWVLZXldID0gdGhpcy5tYW5pZmVzdC5tYW5pZmVzdFVSTDsKICAgICB9CiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9BcHBsaWNh
dGlvbkNhY2hlTWFuYWdlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmpzCmluZGV4IGM1NTU4NmM3Yzg3NDE5ZDY0ZDJiNTU3
ZDEzOThjNWRmNWVmZWI5Y2EuLjZiYWEzNDNhYWZjZmMwYjQ3YjQxNzU2YWNmOTEyNmEzNTMxN2E0
NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0FwcGxp
Y2F0aW9uQ2FjaGVNYW5hZ2VyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmpzCkBAIC0xMDIsMTkgKzEwMiw2IEBAIFdl
Ykluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5wcm90b3R5cGUgPSB7CiAgICAgICAg
IEFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5nZXRBcHBsaWNhdGlvbkNhY2hlRm9yRnJhbWUoZnJhbWUu
aWQsIGNhbGxiYWNrV3JhcHBlcik7CiAgICAgfSwKIAotICAgIG9iamVjdEZvckNvb2tpZTogZnVu
Y3Rpb24oY29va2llLCBtYXRjaE9uVHlwZUFsb25lKQotICAgIHsKLSAgICAgICAgY29uc29sZS5h
c3NlcnQoY29va2llLnR5cGUgJiYgY29va2llLnR5cGUgPT09IFdlYkluc3BlY3Rvci5Db250ZW50
Vmlld0Nvb2tpZVR5cGUuQXBwbGljYXRpb25DYWNoZSk7Ci0KLSAgICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCB0aGlzLl9hcHBsaWNhdGlvbkNhY2hlT2JqZWN0cy5sZW5ndGg7ICsraSkgewotICAg
ICAgICAgICAgdmFyIG9iamVjdCA9IHRoaXMuX2FwcGxpY2F0aW9uQ2FjaGVPYmplY3RzW2ldOwot
ICAgICAgICAgICAgaWYgKG9iamVjdC5mcmFtZS51cmwgPT09IGNvb2tpZS5mcmFtZSAmJiBvYmpl
Y3QubWFuaWZlc3QubWFuaWZlc3RVUkwgPT09IGNvb2tpZS5tYW5pZmVzdCkKLSAgICAgICAgICAg
ICAgICByZXR1cm4gb2JqZWN0OwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIG1hdGNoT25U
eXBlQWxvbmUgJiYgdGhpcy5fYXBwbGljYXRpb25DYWNoZU9iamVjdHMubGVuZ3RoID8gdGhpcy5f
YXBwbGljYXRpb25DYWNoZU9iamVjdHNbMF0gOiBudWxsOwotICAgIH0sCi0KICAgICAvLyBQcml2
YXRlCiAKICAgICBfbWFpblJlc291cmNlRGlkQ2hhbmdlOiBmdW5jdGlvbihldmVudCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0JyZWFrcG9pbnQuanMg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CcmVha3BvaW50LmpzCmluZGV4
IDk3NWI4MjYzZTc4YzRhNzJlZTU0NTdmY2VkZTk2YzA1OGQyYTgwYTkuLmEyYTA4MTkzZTU2MzJk
MDliZDRiNTZlNWRkMGQ2NDQ1NTIwNjlhYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL0JyZWFrcG9pbnQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvQnJlYWtwb2ludC5qcwpAQCAtNjksNiArNjksMTEgQEAgV2ViSW5z
cGVjdG9yLkJyZWFrcG9pbnQuUG9wb3Zlck9wdGlvbnNBdXRvQ29udGludWVJbnB1dElkID0gImVk
aXQtYnJlYWtwb2ludC1wb3AKIAogV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQuRGVmYXVsdEJyZWFr
cG9pbnRBY3Rpb25UeXBlID0gV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRBY3Rpb24uVHlwZS5Mb2c7
CiAKK1dlYkluc3BlY3Rvci5CcmVha3BvaW50LlR5cGVJZGVudGlmaWVyID0gImJyZWFrcG9pbnQi
OworV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQuVVJMQ29va2llS2V5ID0gImJyZWFrcG9pbnQtdXJs
IjsKK1dlYkluc3BlY3Rvci5CcmVha3BvaW50LkxpbmVOdW1iZXJDb29raWVLZXkgPSAiYnJlYWtw
b2ludC1saW5lLW51bWJlciI7CitXZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5Db2x1bW5OdW1iZXJD
b29raWVLZXkgPSAiYnJlYWtwb2ludC1jb2x1bW4tbnVtYmVyIjsKKwogV2ViSW5zcGVjdG9yLkJy
ZWFrcG9pbnQuRXZlbnQgPSB7CiAgICAgRGlzYWJsZWRTdGF0ZURpZENoYW5nZTogImJyZWFrcG9p
bnQtZGlzYWJsZWQtc3RhdGUtZGlkLWNoYW5nZSIsCiAgICAgUmVzb2x2ZWRTdGF0ZURpZENoYW5n
ZTogImJyZWFrcG9pbnQtcmVzb2x2ZWQtc3RhdGUtZGlkLWNoYW5nZSIsCkBAIC0yOTAsNiArMjk1
LDEzIEBAIFdlYkluc3BlY3Rvci5CcmVha3BvaW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhp
cy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQuRXZlbnQu
QWN0aW9uc0RpZENoYW5nZSk7CiAgICAgfSwKIAorICAgIHNhdmVJZGVudGl0eVRvQ29va2llOiBm
dW5jdGlvbihjb29raWUpCisgICAgeworICAgICAgICBjb29raWVbV2ViSW5zcGVjdG9yLkJyZWFr
cG9pbnQuVVJMQ29va2llS2V5XSA9IHRoaXMudXJsOworICAgICAgICBjb29raWVbV2ViSW5zcGVj
dG9yLkJyZWFrcG9pbnQuTGluZU51bWJlckNvb2tpZUtleV0gPSB0aGlzLnNvdXJjZUNvZGVMb2Nh
dGlvbi5saW5lTnVtYmVyOworICAgICAgICBjb29raWVbV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQu
Q29sdW1uTnVtYmVyQ29va2llS2V5XSA9IHRoaXMuc291cmNlQ29kZUxvY2F0aW9uLmNvbHVtbk51
bWJlcjsKKyAgICB9LAorCiAgICAgLy8gUHJvdGVjdGVkIChDYWxsZWQgYnkgQnJlYWtwb2ludEFj
dGlvbikKIAogICAgIGJyZWFrcG9pbnRBY3Rpb25EaWRDaGFuZ2U6IGZ1bmN0aW9uKGFjdGlvbikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Nvb2tpZVN0
b3JhZ2VPYmplY3QuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db29r
aWVTdG9yYWdlT2JqZWN0LmpzCmluZGV4IDExYTNhM2MxMjY0YmU1ZDVlZmIxNmFkNzNjNTVmYjhi
MzAwODJlMDMuLmQxY2E5NmViMDg0ZjhkYzBlMDA2MzE3ZWI4NzAwYWU4YzE1NWNkOTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Nvb2tpZVN0b3JhZ2VP
YmplY3QuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29va2ll
U3RvcmFnZU9iamVjdC5qcwpAQCAtMjgsNiArMjgsOSBAQCBXZWJJbnNwZWN0b3IuQ29va2llU3Rv
cmFnZU9iamVjdCA9IGZ1bmN0aW9uKGhvc3QpCiAgICAgdGhpcy5faG9zdCA9IGhvc3Q7CiB9Owog
CitXZWJJbnNwZWN0b3IuQ29va2llU3RvcmFnZU9iamVjdC5UeXBlSWRlbnRpZmllciA9ICJjb29r
aWUtc3RvcmFnZSI7CitXZWJJbnNwZWN0b3IuQ29va2llU3RvcmFnZU9iamVjdC5Db29raWVIb3N0
Q29va2llS2V5ID0gImNvb2tpZS1zdG9yYWdlLWhvc3QiOworCiBXZWJJbnNwZWN0b3IuQ29va2ll
U3RvcmFnZU9iamVjdC5wcm90b3R5cGUgPSB7CiAgICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rv
ci5Db29raWVTdG9yYWdlT2JqZWN0LAogCkBAIC0zNiw1ICszOSw5IEBAIFdlYkluc3BlY3Rvci5D
b29raWVTdG9yYWdlT2JqZWN0LnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2hv
c3Q7CiAgICAgfSwKICAgICAKKyAgICBzYXZlSWRlbnRpdHlUb0Nvb2tpZTogZnVuY3Rpb24oY29v
a2llKQorICAgIHsKKyAgICAgICAgY29va2llW1dlYkluc3BlY3Rvci5Db29raWVTdG9yYWdlT2Jq
ZWN0LkNvb2tpZUhvc3RDb29raWVLZXldID0gdGhpcy5ob3N0OworICAgIH0KICAgICAvLyBGSVhN
RTogVGhpcyBjbGFzcyB3aWxsIG5lZWQgdG8gbG9vayB1cCBjb29raWVzIHRoYXQgYXJlIHNldCBm
b3IgdGhpcyBob3N0LgogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL0RPTVN0b3JhZ2VPYmplY3QuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9ET01TdG9yYWdlT2JqZWN0LmpzCmluZGV4IDFjMzcyMGY4OTlkMDVhMDdmZDY4
YzNmZmIxMDEyZjMyMTFjNzMwMzQuLmQ2ZmQxZTA0NmQxNWRiN2ExZmFmNjk0ZTQ2OTQxMDQwMjEx
Njk1NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0RP
TVN0b3JhZ2VPYmplY3QuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvRE9NU3RvcmFnZU9iamVjdC5qcwpAQCAtMzAsNiArMzAsMTAgQEAgV2ViSW5zcGVjdG9yLkRP
TVN0b3JhZ2VPYmplY3QgPSBmdW5jdGlvbihpZCwgaG9zdCwgaXNMb2NhbFN0b3JhZ2UpCiAgICAg
dGhpcy5faXNMb2NhbFN0b3JhZ2UgPSBpc0xvY2FsU3RvcmFnZTsKIH07CiAKK1dlYkluc3BlY3Rv
ci5ET01TdG9yYWdlT2JqZWN0LlR5cGVJZGVudGlmaWVyID0gImRvbS1zdG9yYWdlIjsKK1dlYklu
c3BlY3Rvci5ET01TdG9yYWdlT2JqZWN0Lkhvc3RDb29raWVLZXkgPSAiZG9tLXN0b3JhZ2Utb2Jq
ZWN0LWhvc3QiOworV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VPYmplY3QuTG9jYWxTdG9yYWdlQ29v
a2llS2V5ID0gImRvbS1zdG9yYWdlLW9iamVjdC1sb2NhbC1zdG9yYWdlIjsKKwogV2ViSW5zcGVj
dG9yLkRPTVN0b3JhZ2VPYmplY3QucHJvdG90eXBlID0gewogICAgIGNvbnN0cnVjdG9yOiBXZWJJ
bnNwZWN0b3IuRE9NU3RvcmFnZU9iamVjdCwKICAgICAKQEAgLTQzLDYgKzQ3LDEyIEBAIFdlYklu
c3BlY3Rvci5ET01TdG9yYWdlT2JqZWN0LnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIHRo
aXMuX2hvc3Q7CiAgICAgfSwKIAorICAgIHNhdmVJZGVudGl0eVRvQ29va2llOiBmdW5jdGlvbihj
b29raWUpCisgICAgeworICAgICAgICBjb29raWVbV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VPYmpl
Y3QuSG9zdENvb2tpZUtleV0gPSB0aGlzLmhvc3Q7CisgICAgICAgIGNvb2tpZVtXZWJJbnNwZWN0
b3IuRE9NU3RvcmFnZU9iamVjdC5Mb2NhbFN0b3JhZ2VDb29raWVLZXldID0gdGhpcy5pc0xvY2Fs
U3RvcmFnZSgpOworICAgIH0sCisKICAgICBpc0xvY2FsU3RvcmFnZTogZnVuY3Rpb24oKQogICAg
IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2lzTG9jYWxTdG9yYWdlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRGF0YWJhc2VPYmplY3QuanMgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9EYXRhYmFzZU9iamVjdC5qcwppbmRleCBj
MzY5M2UzYTU1MTQyZWYxMWE4ZmU3MjZjOGJmY2FmNjMzYTRkOTYyLi4wMTgxNTk3NjdiOTdlMTZi
NTRlOTdjZTc2MTJhZjdjY2YyNDAzYTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9EYXRhYmFzZU9iamVjdC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9EYXRhYmFzZU9iamVjdC5qcwpAQCAtMzEsOSArMzEsMTUgQEAg
V2ViSW5zcGVjdG9yLkRhdGFiYXNlT2JqZWN0ID0gZnVuY3Rpb24oaWQsIGhvc3QsIG5hbWUsIHZl
cnNpb24pCiAgICAgdGhpcy5fdmVyc2lvbiA9IHZlcnNpb247CiB9OwogCitXZWJJbnNwZWN0b3Iu
RGF0YWJhc2VPYmplY3QuVHlwZUlkZW50aWZpZXIgPSAiZGF0YWJhc2UiOworV2ViSW5zcGVjdG9y
LkRhdGFiYXNlT2JqZWN0Lkhvc3RDb29raWVLZXkgPSAiZGF0YWJhc2Utb2JqZWN0LWhvc3QiOwor
V2ViSW5zcGVjdG9yLkRhdGFiYXNlT2JqZWN0Lk5hbWVDb29raWVLZXkgPSAiZGF0YWJhc2Utb2Jq
ZWN0LW5hbWUiOworCiBXZWJJbnNwZWN0b3IuRGF0YWJhc2VPYmplY3QucHJvdG90eXBlID0gewog
ICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuRGF0YWJhc2VPYmplY3QsCiAgICAgCisgICAg
Ly8gUHVibGljCisKICAgICBnZXQgaWQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2lk
OwpAQCAtNTQsNiArNjAsMTIgQEAgV2ViSW5zcGVjdG9yLkRhdGFiYXNlT2JqZWN0LnByb3RvdHlw
ZSA9IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3ZlcnNpb247CiAgICAgfSwKICAgICAKKyAgICBz
YXZlSWRlbnRpdHlUb0Nvb2tpZTogZnVuY3Rpb24oY29va2llKQorICAgIHsKKyAgICAgICAgY29v
a2llW1dlYkluc3BlY3Rvci5EYXRhYmFzZU9iamVjdC5Ib3N0Q29va2llS2V5XSA9IHRoaXMuaG9z
dDsKKyAgICAgICAgY29va2llW1dlYkluc3BlY3Rvci5EYXRhYmFzZU9iamVjdC5OYW1lQ29va2ll
S2V5XSA9IHRoaXMubmFtZTsKKyAgICB9LAorCiAgICAgZ2V0VGFibGVOYW1lczogZnVuY3Rpb24o
Y2FsbGJhY2spCiAgICAgewogICAgICAgICBmdW5jdGlvbiBzb3J0aW5nQ2FsbGJhY2soZXJyb3Is
IG5hbWVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
RGF0YWJhc2VUYWJsZU9iamVjdC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL0RhdGFiYXNlVGFibGVPYmplY3QuanMKaW5kZXggMjczNjgzOTgxOGMzMGFkOTIwMzIxODVl
MGNmN2RhZjAzMGRkNDA2MS4uNWU2MWQyNThlYmY2M2ZhY2Q5MzQzZDE5ZmVkOGEzMjliMjJmNzJk
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRGF0YWJh
c2VUYWJsZU9iamVjdC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9EYXRhYmFzZVRhYmxlT2JqZWN0LmpzCkBAIC0zMSw2ICszMSw5IEBAIFdlYkluc3BlY3Rvci5E
YXRhYmFzZVRhYmxlT2JqZWN0ID0gZnVuY3Rpb24obmFtZSwgZGF0YWJhc2UpCiAgICAgdGhpcy5f
ZGF0YWJhc2UgPSBkYXRhYmFzZTsKIH07CiAKK1dlYkluc3BlY3Rvci5EYXRhYmFzZVRhYmxlT2Jq
ZWN0LlR5cGVJZGVudGlmaWVyID0gImRhdGFiYXNlLXRhYmxlIjsKK1dlYkluc3BlY3Rvci5EYXRh
YmFzZVRhYmxlT2JqZWN0Lk5hbWVDb29raWVLZXkgPSAiZGF0YWJhc2UtdGFibGUtb2JqZWN0LW5h
bWUiOworCiBXZWJJbnNwZWN0b3IuRGF0YWJhc2VUYWJsZU9iamVjdC5wcm90b3R5cGUgPSB7CiAg
ICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5EYXRhYmFzZVRhYmxlT2JqZWN0LAogICAgIApA
QCAtNDIsNyArNDUsMTIgQEAgV2ViSW5zcGVjdG9yLkRhdGFiYXNlVGFibGVPYmplY3QucHJvdG90
eXBlID0gewogICAgIGdldCBkYXRhYmFzZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5f
ZGF0YWJhc2U7Ci0gICAgfQorICAgIH0sCisKKyAgICBzYXZlSWRlbnRpdHlUb0Nvb2tpZTogZnVu
Y3Rpb24oY29va2llKQorICAgIHsKKyAgICAgICAgY29va2llW1dlYkluc3BlY3Rvci5EYXRhYmFz
ZVRhYmxlT2JqZWN0Lk5hbWVDb29raWVLZXldID0gdGhpcy5uYW1lOworICAgIH0sCiB9OwogCiBX
ZWJJbnNwZWN0b3IuRGF0YWJhc2VUYWJsZU9iamVjdC5wcm90b3R5cGUuX19wcm90b19fID0gV2Vi
SW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9EZWJ1Z2dlclNpZGViYXJQYW5lbC5qcyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0RlYnVnZ2VyU2lkZWJhclBhbmVsLmpzCmluZGV4IDQ0
Mjg0NGM4Y2Y5NjhkYzBmYWM2MDUyNzkyODNlMTMxM2I5OGFkOWMuLmFiMjA4NGE1MDE2MmNhNDlm
OGM3OGE5MzMxMDc2YjIxNzlmYWVlZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL0RlYnVnZ2VyU2lkZWJhclBhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0RlYnVnZ2VyU2lkZWJhclBhbmVsLmpzCkBAIC0xMjAs
NiArMTIwLDkgQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyU2lkZWJhclBhbmVsID0gZnVuY3Rpb24o
KQogV2ViSW5zcGVjdG9yLkRlYnVnZ2VyU2lkZWJhclBhbmVsLk9mZnNldFNlY3Rpb25zU3R5bGVD
bGFzc05hbWUgPSAib2Zmc2V0LXNlY3Rpb25zIjsKIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclNpZGVi
YXJQYW5lbC5FeGNlcHRpb25JY29uU3R5bGVDbGFzc05hbWUgPSAiYnJlYWtwb2ludC1leGNlcHRp
b24taWNvbiI7CiAKK1dlYkluc3BlY3Rvci5EZWJ1Z2dlclNpZGViYXJQYW5lbC5TZWxlY3RlZEFs
bEV4Y2VwdGlvbnNDb29raWVLZXkgPSAiZGVidWdnZXItc2lkZWJhci1wYW5lbC1hbGwtZXhjZXB0
aW9ucy1icmVha3BvaW50IjsKK1dlYkluc3BlY3Rvci5EZWJ1Z2dlclNpZGViYXJQYW5lbC5TZWxl
Y3RlZEFsbFVuY2F1Z2h0RXhjZXB0aW9uc0Nvb2tpZUtleSA9ICJkZWJ1Z2dlci1zaWRlYmFyLXBh
bmVsLWFsbC11bmNhdWdodC1leGNlcHRpb25zLWJyZWFrcG9pbnQiOworCiBXZWJJbnNwZWN0b3Iu
RGVidWdnZXJTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogICAgIGNvbnN0cnVjdG9yOiBXZWJJ
bnNwZWN0b3IuRGVidWdnZXJTaWRlYmFyUGFuZWwsCiAKQEAgLTEzNCw2ICsxMzcsNDAgQEAgV2Vi
SW5zcGVjdG9yLkRlYnVnZ2VyU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0
dXJuIHRoaXMuY29udGVudFRyZWVPdXRsaW5lLmdldENhY2hlZFRyZWVFbGVtZW50KHJlcHJlc2Vu
dGVkT2JqZWN0KTsKICAgICB9LAogCisgICAgLy8gUHJvdGVjdGVkCisKKyAgICBzYXZlU3RhdGVU
b0Nvb2tpZTogZnVuY3Rpb24oY29va2llKQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQo
Y29va2llKTsKKworICAgICAgICB2YXIgc2VsZWN0ZWRUcmVlRWxlbWVudCA9IHRoaXMuX2JyZWFr
cG9pbnRzQ29udGVudFRyZWVPdXRsaW5lLnNlbGVjdGVkVHJlZUVsZW1lbnQ7CisgICAgICAgIGlm
ICghc2VsZWN0ZWRUcmVlRWxlbWVudCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB2
YXIgcmVwcmVzZW50ZWRPYmplY3QgPSBzZWxlY3RlZFRyZWVFbGVtZW50LnJlcHJlc2VudGVkT2Jq
ZWN0OworCisgICAgICAgIGlmIChyZXByZXNlbnRlZE9iamVjdCA9PT0gV2ViSW5zcGVjdG9yLmRl
YnVnZ2VyTWFuYWdlci5hbGxFeGNlcHRpb25zQnJlYWtwb2ludCkKKyAgICAgICAgICAgIGNvb2tp
ZVtXZWJJbnNwZWN0b3IuRGVidWdnZXJTaWRlYmFyUGFuZWwuU2VsZWN0ZWRBbGxFeGNlcHRpb25z
Q29va2llS2V5XSA9IHRydWU7CisKKyAgICAgICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0ID09PSBX
ZWJJbnNwZWN0b3IuZGVidWdnZXJNYW5hZ2VyLmFsbFVuY2F1Z2h0RXhjZXB0aW9uc0JyZWFrcG9p
bnQpCisgICAgICAgICAgICBjb29raWVbV2ViSW5zcGVjdG9yLkRlYnVnZ2VyU2lkZWJhclBhbmVs
LlNlbGVjdGVkQWxsVW5jYXVnaHRFeGNlcHRpb25zQ29va2llS2V5XSA9IHRydWU7CisKKyAgICAg
ICAgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwucHJvdG90eXBlLnNhdmVTdGF0
ZVRvQ29va2llLmNhbGwodGhpcywgY29va2llKTsKKyAgICB9LAorCisgICAgcmVzdG9yZVN0YXRl
RnJvbUNvb2tpZTogZnVuY3Rpb24oY29va2llKQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3Nl
cnQoY29va2llKTsKKworICAgICAgICAvLyBFYWdlcmx5IHJlc29sdmUgdGhlIHNwZWNpYWwgYnJl
YWtwb2ludHM7IG90aGVyd2lzZSwgdXNlIHRoZSBkZWZhdWx0IGJlaGF2aW9yLgorICAgICAgICBp
ZiAoY29va2llW1dlYkluc3BlY3Rvci5EZWJ1Z2dlclNpZGViYXJQYW5lbC5TZWxlY3RlZEFsbEV4
Y2VwdGlvbnNDb29raWVLZXldKQorICAgICAgICAgICAgdGhpcy5fYWxsRXhjZXB0aW9uc0JyZWFr
cG9pbnRUcmVlRWxlbWVudC5yZXZlYWxBbmRTZWxlY3QoKTsKKyAgICAgICAgZWxzZSBpZiAoY29v
a2llW1dlYkluc3BlY3Rvci5EZWJ1Z2dlclNpZGViYXJQYW5lbC5TZWxlY3RlZEFsbFVuY2F1Z2h0
RXhjZXB0aW9uc0Nvb2tpZUtleV0pCisgICAgICAgICAgICB0aGlzLl9hbGxVbmNhdWdodEV4Y2Vw
dGlvbnNCcmVha3BvaW50VHJlZUVsZW1lbnQucmV2ZWFsQW5kU2VsZWN0KCk7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLnByb3Rv
dHlwZS5yZXN0b3JlU3RhdGVGcm9tQ29va2llLmNhbGwodGhpcywgY29va2llKTsKKyAgICB9LAor
CiAgICAgLy8gUHJpdmF0ZQogCiAgICAgX2RlYnVnZ2VyUGF1c2VSZXN1bWVCdXR0b25DbGlja2Vk
OiBmdW5jdGlvbihldmVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL0ZyYW1lLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
RnJhbWUuanMKaW5kZXggNTk4ZmZlMTA4N2NiNDJlYzJlNWE3YzE0MDNmZmM3OWMzMjBjZDZkOC4u
MDVkZDU4YjM1ZGJlNDE0YTY3MWMxODZmNTFhNDNlYWE1NGNjNjFkNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRnJhbWUuanMKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRnJhbWUuanMKQEAgLTY3LDYgKzY3LDkgQEAgV2Vi
SW5zcGVjdG9yLkZyYW1lLkV2ZW50ID0gewogICAgIEV4ZWN1dGlvbkNvbnRleHRzQ2xlYXJlZDog
ImZyYW1lLWV4ZWN1dGlvbi1jb250ZXh0cy1jbGVhcmVkIgogfTsKIAorV2ViSW5zcGVjdG9yLkZy
YW1lLlR5cGVJZGVudGlmaWVyID0gIkZyYW1lIjsKK1dlYkluc3BlY3Rvci5GcmFtZS5NYWluUmVz
b3VyY2VVUkxDb29raWVLZXkgPSAiZnJhbWUtbWFpbi1yZXNvdXJjZS11cmwiOworCiBXZWJJbnNw
ZWN0b3IuRnJhbWUucHJvdG90eXBlID0gewogICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3Iu
RnJhbWUsCiAKQEAgLTQzMiw2ICs0MzUsMTEgQEAgV2ViSW5zcGVjdG9yLkZyYW1lLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9y
LkZyYW1lLkV2ZW50LkFsbFJlc291cmNlc1JlbW92ZWQpOwogICAgIH0sCiAKKyAgICBzYXZlSWRl
bnRpdHlUb0Nvb2tpZTogZnVuY3Rpb24oY29va2llKQorICAgIHsKKyAgICAgICAgY29va2llW1dl
Ykluc3BlY3Rvci5GcmFtZS5NYWluUmVzb3VyY2VVUkxDb29raWVLZXldID0gdGhpcy5tYWluUmVz
b3VyY2UudXJsOworICAgIH0sCisKICAgICAvLyBQcml2YXRlCiAKICAgICBfaXNQcm92aXNpb25h
bFJlc291cmNlOiBmdW5jdGlvbihyZXNvdXJjZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0ZyYW1lUmVzb3VyY2VNYW5hZ2VyLmpzIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRnJhbWVSZXNvdXJjZU1hbmFnZXIuanMKaW5kZXgg
MjczZDc5Yjc1NGI2NzkzMWEzODQxYmI2OWZkOTJkYWQ3YWVlZGM5Ny4uOGVlZmUxNzAwNmI0YmVh
ZmM4NDk3YTk2YWFhNjA0NzAxYjc4OGY5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvRnJhbWVSZXNvdXJjZU1hbmFnZXIuanMKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRnJhbWVSZXNvdXJjZU1hbmFnZXIuanMKQEAgLTgw
LDIwICs4MCw2IEBAIFdlYkluc3BlY3Rvci5GcmFtZVJlc291cmNlTWFuYWdlci5wcm90b3R5cGUg
PSB7CiAgICAgICAgIHJldHVybiB0aGlzLl9mcmFtZUlkZW50aWZpZXJNYXBbZnJhbWVJZF0gfHwg
bnVsbDsKICAgICB9LAogCi0KLSAgICBvYmplY3RGb3JDb29raWU6IGZ1bmN0aW9uKGNvb2tpZSkK
LSAgICB7Ci0gICAgICAgIHZhciByZXByZXNlbnRlZE9iamVjdCA9IGNvb2tpZS51cmwgPyB0aGlz
LnJlc291cmNlRm9yVVJMKGNvb2tpZS51cmwpIDogdGhpcy5tYWluRnJhbWU7Ci0KLSAgICAgICAg
aWYgKCFyZXByZXNlbnRlZE9iamVjdCkKLSAgICAgICAgICAgIHJlcHJlc2VudGVkT2JqZWN0ID0g
dGhpcy5tYWluRnJhbWU7Ci0KLSAgICAgICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNl
b2YgV2ViSW5zcGVjdG9yLlJlc291cmNlICYmIHJlcHJlc2VudGVkT2JqZWN0LmlzTWFpblJlc291
cmNlKCkpCi0gICAgICAgICAgICByZXByZXNlbnRlZE9iamVjdCA9IHJlcHJlc2VudGVkT2JqZWN0
LnBhcmVudEZyYW1lOwotCi0gICAgICAgIHJldHVybiByZXByZXNlbnRlZE9iamVjdDsKLSAgICB9
LAotCiAgICAgZnJhbWVEaWROYXZpZ2F0ZTogZnVuY3Rpb24oZnJhbWVQYXlsb2FkKQogICAgIHsK
ICAgICAgICAgLy8gQ2FsbGVkIGZyb20gV2ViSW5zcGVjdG9yLlBhZ2VPYnNlcnZlci4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0luc3RydW1lbnRTaWRl
YmFyUGFuZWwuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9JbnN0cnVt
ZW50U2lkZWJhclBhbmVsLmpzCmluZGV4IGY4ZjliYmNlZTdiY2Y1MzM3MTBlOGEwOTYyMzhiMjM5
ZjE5NTg4ZTEuLmMwYjgwZGU4NWU5YTRmZTEzYWNmY2NkZjM2MjI5M2VkZTA4NjY2NmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0luc3RydW1lbnRTaWRl
YmFyUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSW5z
dHJ1bWVudFNpZGViYXJQYW5lbC5qcwpAQCAtMTU4LDYgKzE1OCwxMCBAQCBXZWJJbnNwZWN0b3Iu
SW5zdHJ1bWVudFNpZGViYXJQYW5lbC5TdGFydEphdmFTY3JpcHRQcm9maWxlVmFsdWUgPSAic3Rh
cnQtamF2YXNjcgogV2ViSW5zcGVjdG9yLkluc3RydW1lbnRTaWRlYmFyUGFuZWwuU3RhcnRDU1NT
ZWxlY3RvclByb2ZpbGVWYWx1ZSA9ICJzdGFydC1jc3Mtc2VsZWN0b3ItcHJvZmlsZSI7CiBXZWJJ
bnNwZWN0b3IuSW5zdHJ1bWVudFNpZGViYXJQYW5lbC5TdGFydENhbnZhc1Byb2ZpbGVWYWx1ZSA9
ICJzdGFydC1jYW52YXMtcHJvZmlsZSI7CiAKK1dlYkluc3BlY3Rvci5JbnN0cnVtZW50U2lkZWJh
clBhbmVsLlNlbGVjdGVkVGltZWxpbmVDb29raWVLZXkgPSAiaW5zdHJ1bWVudC1zaWRlYmFyLXBh
bmVsLXNlbGVjdGVkLXRpbWVsaW5lIjsKK1dlYkluc3BlY3Rvci5JbnN0cnVtZW50U2lkZWJhclBh
bmVsLlNlbGVjdGVkUHJvZmlsZVR5cGVDb29raWVLZXkgPSAiaW5zdHJ1bWVudC1zaWRlYmFyLXBh
bmVsLXNlbGVjdGVkLXByb2ZpbGUtdHlwZSI7CitXZWJJbnNwZWN0b3IuSW5zdHJ1bWVudFNpZGVi
YXJQYW5lbC5TZWxlY3RlZFByb2ZpbGVUaXRsZUNvb2tpZUtleSA9ICJpbnN0cnVtZW50LXNpZGVi
YXItcGFuZWwtc2VsZWN0ZWQtcHJvZmlsZS10aXRsZSI7CisKIFdlYkluc3BlY3Rvci5JbnN0cnVt
ZW50U2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVj
dG9yLkluc3RydW1lbnRTaWRlYmFyUGFuZWwsCiAKQEAgLTE3OSw5ICsxODMsNDggQEAgV2ViSW5z
cGVjdG9yLkluc3RydW1lbnRTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogICAgIHsKICAgICAg
ICAgdmFyIHRyZWVFbGVtZW50VG9TZWxlY3QgPSB0aGlzLl90aW1lbGluZVRyZWVFbGVtZW50TWFw
W3R5cGVdOwogICAgICAgICBpZiAoIXRyZWVFbGVtZW50VG9TZWxlY3QpCi0gICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICByZXR1cm4gbnVsbDsKIAogICAgICAgICB0cmVlRWxlbWVudFRv
U2VsZWN0LnNlbGVjdCh0cnVlLCB0cnVlKTsKKyAgICAgICAgcmV0dXJuIHRyZWVFbGVtZW50VG9T
ZWxlY3QucmVwcmVzZW50ZWRPYmplY3Q7CisgICAgfSwKKworICAgIHNhdmVTdGF0ZVRvQ29va2ll
OiBmdW5jdGlvbihjb29raWUpCisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydChjb29raWUp
OworCisgICAgICAgIC8vIFRoaXMgc2lkZWJhciBoYXMgdHdvIHNlcGFyYXRlIHRyZWUgb3V0bGlu
ZXMsIGJ1dCBvbmx5IG9uZSBzZWxlY3RlZCB0cmVlIGVsZW1lbnQgYmV0d2VlbiB0aGVtLgorICAg
ICAgICB2YXIgc2VsZWN0ZWRUcmVlRWxlbWVudCA9IHRoaXMuX3RpbWVsaW5lc1RyZWVPdXRsaW5l
LnNlbGVjdGVkVHJlZUVsZW1lbnQgfHwgdGhpcy5jb250ZW50VHJlZU91dGxpbmUuc2VsZWN0ZWRU
cmVlRWxlbWVudDsKKyAgICAgICAgaWYgKCFzZWxlY3RlZFRyZWVFbGVtZW50KQorICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgIHZhciByZXByZXNlbnRlZE9iamVjdCA9IHNlbGVjdGVkVHJl
ZUVsZW1lbnQucmVwcmVzZW50ZWRPYmplY3Q7CisgICAgICAgIGlmIChyZXByZXNlbnRlZE9iamVj
dCA9PT0gV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkLlR5cGUuU2NyaXB0IHx8IHJlcHJlc2Vu
dGVkT2JqZWN0ID09PSBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmQuVHlwZS5MYXlvdXQgfHwg
cmVwcmVzZW50ZWRPYmplY3QgPT09IFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZC5UeXBlLk5l
dHdvcmspCisgICAgICAgICAgICBjb29raWVbV2ViSW5zcGVjdG9yLkluc3RydW1lbnRTaWRlYmFy
UGFuZWwuU2VsZWN0ZWRUaW1lbGluZUNvb2tpZUtleV0gPSByZXByZXNlbnRlZE9iamVjdDsKKyAg
ICAgICAgZWxzZSBpZiAocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3Iu
UHJvZmlsZU9iamVjdCkgeworICAgICAgICAgICAgY29va2llW1dlYkluc3BlY3Rvci5JbnN0cnVt
ZW50U2lkZWJhclBhbmVsLlNlbGVjdGVkUHJvZmlsZVR5cGVDb29raWVLZXldID0gcmVwcmVzZW50
ZWRPYmplY3QudHlwZTsKKyAgICAgICAgICAgIGNvb2tpZVtXZWJJbnNwZWN0b3IuSW5zdHJ1bWVu
dFNpZGViYXJQYW5lbC5TZWxlY3RlZFByb2ZpbGVUaXRsZUNvb2tpZUtleV0gPSByZXByZXNlbnRl
ZE9iamVjdC50aXRsZTsKKyAgICAgICAgfQorICAgIH0sCisKKyAgICByZXN0b3JlU3RhdGVGcm9t
Q29va2llOiBmdW5jdGlvbihjb29raWUpCisgICAgeworICAgICAgICAvLyBFYWdlcmx5IHJlc3Rv
cmUgdGhlIHNpZGViYXIncyBzZWxlY3Rpb24sIHNpbmNlIGl0cyBlbGVtZW50cyBhcmUgcGVyc2lz
dGVudCBvciBwZXJtYW5lbnQuCisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGNvb2tpZSk7CisgICAg
ICAgIHZhciBzZWxlY3RlZFRpbWVsaW5lVHlwZSA9IGNvb2tpZVtXZWJJbnNwZWN0b3IuSW5zdHJ1
bWVudFNpZGViYXJQYW5lbC5TZWxlY3RlZFRpbWVsaW5lQ29va2llS2V5XTsKKyAgICAgICAgaWYg
KHNlbGVjdGVkVGltZWxpbmVUeXBlKSB7CisgICAgICAgICAgICByZXR1cm4gdGhpcy5zaG93VGlt
ZWxpbmVGb3JSZWNvcmRUeXBlKHNlbGVjdGVkVGltZWxpbmVUeXBlKTsKKyAgICAgICAgICAgIHJl
dHVybiBXZWJJbnNwZWN0b3IudGltZWxpbmVNYW5hZ2VyLnRpbWVsaW5lczsKKyAgICAgICAgfQor
CisgICAgICAgIC8vIFByb2ZpbGVzIGFyZSBwZXJzaXN0ZWQgYWNyb3NzIHBhZ2UgcmVsb2Fkcywg
YnV0IG5vdCBhY3Jvc3MgaW5zcGVjdG9yIG9wZW4vY2xvc2UuCisgICAgICAgIHZhciBzZWxlY3Rl
ZFByb2ZpbGVUeXBlID0gY29va2llW1dlYkluc3BlY3Rvci5JbnN0cnVtZW50U2lkZWJhclBhbmVs
LlNlbGVjdGVkUHJvZmlsZVR5cGVDb29raWVLZXldOworICAgICAgICB2YXIgc2VsZWN0ZWRQcm9m
aWxlVGl0bGUgPSBjb29raWVbV2ViSW5zcGVjdG9yLkluc3RydW1lbnRTaWRlYmFyUGFuZWwuU2Vs
ZWN0ZWRQcm9maWxlVGl0bGVDb29raWVLZXldOworICAgICAgICAvLyBQcm9maWxlIHRpdGxlcyBh
cmUgb3B0aW9uYWwsIGJ1dCBwcm9maWxlIHR5cGVzIGFyZSBtYW5kYXRvcnkuCisgICAgICAgIGlm
ICghc2VsZWN0ZWRQcm9maWxlVHlwZSkKKyAgICAgICAgICAgIHJldHVybiBudWxsOworCisgICAg
ICAgIHJldHVybiB0aGlzLnNob3dQcm9maWxlKHNlbGVjdGVkUHJvZmlsZVR5cGUsIHNlbGVjdGVk
UHJvZmlsZVRpdGxlKTsKICAgICB9LAogCiAgICAgc2hvd1Byb2ZpbGU6IGZ1bmN0aW9uKHR5cGUs
IHRpdGxlKQpAQCAtMTkyLDcgKzIzNSw3IEBAIFdlYkluc3BlY3Rvci5JbnN0cnVtZW50U2lkZWJh
clBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHZhciBwcm9maWxlID0gdHJlZUVsZW1l
bnQucmVwcmVzZW50ZWRPYmplY3Q7CiAgICAgICAgICAgICBpZiAocHJvZmlsZS50eXBlID09PSB0
eXBlICYmIHByb2ZpbGUudGl0bGUgPT09IHRpdGxlKSB7CiAgICAgICAgICAgICAgICAgdHJlZUVs
ZW1lbnQucmV2ZWFsQW5kU2VsZWN0KCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgICAgIHJldHVybiBwcm9maWxlOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAg
fSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4u
anMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmpzCmluZGV4IGNk
NzQ2NGVhZTczMjJlY2JlZjhkYWNjMGI2OTNiODFiNDU3OTlhNDcuLjRjYWE3YWM2MjY5NjhiNTcz
Y2NlODI5Njc1N2ZhNDVjYmVlNDBmZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL01haW4uanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvTWFpbi5qcwpAQCAtNDAsNiArNDAsOSBAQCBXZWJJbnNwZWN0b3IuQ29udGVudFZp
ZXdDb29raWVUeXBlID0gewogCiB9OwogCitXZWJJbnNwZWN0b3IuU2VsZWN0ZWRTaWRlYmFyUGFu
ZWxDb29raWVLZXkgPSAic2VsZWN0ZWQtc2lkZWJhci1wYW5lbCI7CitXZWJJbnNwZWN0b3IuVHlw
ZUlkZW50aWZpZXJDb29raWVLZXkgPSAicmVwcmVzZW50ZWQtb2JqZWN0LXR5cGUiOworCiBXZWJJ
bnNwZWN0b3IubG9hZGVkID0gZnVuY3Rpb24oKQogewogICAgIC8vIFRlbGwgdGhlIEluc3BlY3Rv
ckZyb250ZW5kSG9zdCB3ZSBsb2FkZWQgZmlyc3QgdG8gZXN0YWJsaXNoIGNvbW11bmljYXRpb24g
d2l0aCBJbnNwZWN0b3JCYWNrZW5kLgpAQCAtMTAzLDEzICsxMDYsNyBAQCBXZWJJbnNwZWN0b3Iu
bG9hZGVkID0gZnVuY3Rpb24oKQogICAgIHRoaXMuZnJhbWVSZXNvdXJjZU1hbmFnZXIuYWRkRXZl
bnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRnJhbWVSZXNvdXJjZU1hbmFnZXIuRXZlbnQuTWFpbkZy
YW1lRGlkQ2hhbmdlLCB0aGlzLl9tYWluRnJhbWVEaWRDaGFuZ2UsIHRoaXMpOwogCiAgICAgV2Vi
SW5zcGVjdG9yLkZyYW1lLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkZyYW1lLkV2ZW50
Lk1haW5SZXNvdXJjZURpZENoYW5nZSwgdGhpcy5fbWFpblJlc291cmNlRGlkQ2hhbmdlLCB0aGlz
KTsKLQotICAgIC8vIFRoZXNlIGxpc3RlbmVycyBhcmUgZm9yIGV2ZW50cyB0aGF0IGNvdWxkIHJl
c29sdmUgYSBwZW5kaW5nIGNvbnRlbnQgdmlldyBjb29raWUuCi0gICAgdGhpcy5hcHBsaWNhdGlv
bkNhY2hlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNh
Y2hlTWFuYWdlci5FdmVudC5GcmFtZU1hbmlmZXN0QWRkZWQsIHRoaXMuX3Jlc29sdmVBbmRTaG93
UGVuZGluZ0NvbnRlbnRWaWV3Q29va2llLCB0aGlzKTsKLSAgICB0aGlzLmZyYW1lUmVzb3VyY2VN
YW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkZyYW1lUmVzb3VyY2VNYW5hZ2Vy
LkV2ZW50Lk1haW5GcmFtZURpZENoYW5nZSwgdGhpcy5fcmVzb2x2ZUFuZFNob3dQZW5kaW5nQ29u
dGVudFZpZXdDb29raWUsIHRoaXMpOwotICAgIHRoaXMuc3RvcmFnZU1hbmFnZXIuYWRkRXZlbnRM
aXN0ZW5lcihXZWJJbnNwZWN0b3IuU3RvcmFnZU1hbmFnZXIuRXZlbnQuRGF0YWJhc2VXYXNBZGRl
ZCwgdGhpcy5fcmVzb2x2ZUFuZFNob3dQZW5kaW5nQ29udGVudFZpZXdDb29raWUsIHRoaXMpOwot
ICAgIHRoaXMuc3RvcmFnZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuU3Rv
cmFnZU1hbmFnZXIuRXZlbnQuQ29va2llU3RvcmFnZU9iamVjdFdhc0FkZGVkLCB0aGlzLl9yZXNv
bHZlQW5kU2hvd1BlbmRpbmdDb250ZW50Vmlld0Nvb2tpZSwgdGhpcyk7Ci0gICAgdGhpcy5zdG9y
YWdlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5TdG9yYWdlTWFuYWdlci5F
dmVudC5ET01TdG9yYWdlT2JqZWN0V2FzQWRkZWQsIHRoaXMuX3Jlc29sdmVBbmRTaG93UGVuZGlu
Z0NvbnRlbnRWaWV3Q29va2llLCB0aGlzKTsKKyAgICBXZWJJbnNwZWN0b3IuRnJhbWUuYWRkRXZl
bnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRnJhbWUuRXZlbnQuUHJvdmlzaW9uYWxMb2FkQ29tbWl0
dGVkLCB0aGlzLl9wcm92aXNpb25hbExvYWRDb21taXR0ZWQsIHRoaXMpOwogCiAgICAgZG9jdW1l
bnQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsIHRoaXMuY29udGVudExvYWRl
ZC5iaW5kKHRoaXMpKTsKIApAQCAtMTI2LDkgKzEyMywxMSBAQCBXZWJJbnNwZWN0b3IubG9hZGVk
ID0gZnVuY3Rpb24oKQogICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIiwgdGhp
cy5fd2luZG93S2V5RG93bi5iaW5kKHRoaXMpKTsKICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5l
cigia2V5dXAiLCB0aGlzLl93aW5kb3dLZXlVcC5iaW5kKHRoaXMpKTsKICAgICB3aW5kb3cuYWRk
RXZlbnRMaXN0ZW5lcigibW91c2Vtb3ZlIiwgdGhpcy5fbW91c2VNb3ZlZC5iaW5kKHRoaXMpLCB0
cnVlKTsKKyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigicGFnZWhpZGUiLCB0aGlzLl9wYWdl
SGlkZGVuLmJpbmQodGhpcykpOwogCiAgICAgLy8gQ3JlYXRlIHNldHRpbmdzLgotICAgIHRoaXMu
X2xhc3RTZWxlY3RlZE5hdmlnYXRpb25TaWRlYmFyUGFuZWxTZXR0aW5nID0gbmV3IFdlYkluc3Bl
Y3Rvci5TZXR0aW5nKCJsYXN0LXNlbGVjdGVkLW5hdmlnYXRpb24tc2lkZWJhci1wYW5lbCIsICJy
ZXNvdXJjZSIpOworICAgIHRoaXMuX2xhc3RJbnNwZWN0b3JWaWV3U3RhdGVDb29raWVTZXR0aW5n
ID0gbmV3IFdlYkluc3BlY3Rvci5TZXR0aW5nKCJsYXN0LWNvbnRlbnQtdmlldy1zdGF0ZS1jb29r
aWUiLCB7fSk7CisKICAgICB0aGlzLl9uYXZpZ2F0aW9uU2lkZWJhckNvbGxhcHNlZFNldHRpbmcg
PSBuZXcgV2ViSW5zcGVjdG9yLlNldHRpbmcoIm5hdmlnYXRpb24tc2lkZWJhci1jb2xsYXBzZWQi
LCBmYWxzZSk7CiAgICAgdGhpcy5fbmF2aWdhdGlvblNpZGViYXJXaWR0aFNldHRpbmcgPSBuZXcg
V2ViSW5zcGVjdG9yLlNldHRpbmcoIm5hdmlnYXRpb24tc2lkZWJhci13aWR0aCIsIG51bGwpOwog
CkBAIC0xMzYsOSArMTM1LDYgQEAgV2ViSW5zcGVjdG9yLmxvYWRlZCA9IGZ1bmN0aW9uKCkKICAg
ICB0aGlzLl9kZXRhaWxzU2lkZWJhckNvbGxhcHNlZFNldHRpbmcgPSBuZXcgV2ViSW5zcGVjdG9y
LlNldHRpbmcoImRldGFpbHMtc2lkZWJhci1jb2xsYXBzZWQiLCB0cnVlKTsKICAgICB0aGlzLl9k
ZXRhaWxzU2lkZWJhcldpZHRoU2V0dGluZyA9IG5ldyBXZWJJbnNwZWN0b3IuU2V0dGluZygiZGV0
YWlscy1zaWRlYmFyLXdpZHRoIiwgbnVsbCk7CiAKLSAgICB0aGlzLl9sYXN0Q29udGVudFZpZXdS
ZXNwb25zaWJsZVNpZGViYXJQYW5lbFNldHRpbmcgPSBuZXcgV2ViSW5zcGVjdG9yLlNldHRpbmco
Imxhc3QtY29udGVudC12aWV3LXJlc3BvbnNpYmxlLXNpZGViYXItcGFuZWwiLCAicmVzb3VyY2Ui
KTsKLSAgICB0aGlzLl9sYXN0Q29udGVudENvb2tpZVNldHRpbmcgPSBuZXcgV2ViSW5zcGVjdG9y
LlNldHRpbmcoImxhc3QtY29udGVudC12aWV3LWNvb2tpZSIsIHt9KTsKLQogICAgIHRoaXMuX3Rv
b2xiYXJEb2NrZWRSaWdodERpc3BsYXlNb2RlU2V0dGluZyA9IG5ldyBXZWJJbnNwZWN0b3IuU2V0
dGluZygidG9vbGJhci1kb2NrZWQtcmlnaHQtZGlzcGxheS1tb2RlIiwgV2ViSW5zcGVjdG9yLlRv
b2xiYXIuRGlzcGxheU1vZGUuSWNvbkFuZExhYmVsVmVydGljYWwpOwogICAgIHRoaXMuX3Rvb2xi
YXJEb2NrZWRSaWdodFNpemVNb2RlU2V0dGluZyA9IG5ldyBXZWJJbnNwZWN0b3IuU2V0dGluZygi
dG9vbGJhci1kb2NrZWQtcmlnaHQtc2l6ZS1tb2RlIixXZWJJbnNwZWN0b3IuVG9vbGJhci5TaXpl
TW9kZS5Ob3JtYWwpOwogCkBAIC0yNzgsOCArMjc0LDYgQEAgV2ViSW5zcGVjdG9yLmNvbnRlbnRM
b2FkZWQgPSBmdW5jdGlvbigpCiAKICAgICB0aGlzLl91cGRhdGVUb29sYmFySGVpZ2h0KCk7CiAK
LSAgICB0aGlzLm5hdmlnYXRpb25TaWRlYmFyLnNlbGVjdGVkU2lkZWJhclBhbmVsID0gdGhpcy5f
bGFzdFNlbGVjdGVkTmF2aWdhdGlvblNpZGViYXJQYW5lbFNldHRpbmcudmFsdWU7Ci0KICAgICBp
ZiAodGhpcy5fbmF2aWdhdGlvblNpZGViYXJXaWR0aFNldHRpbmcudmFsdWUpCiAgICAgICAgIHRo
aXMubmF2aWdhdGlvblNpZGViYXIud2lkdGggPSB0aGlzLl9uYXZpZ2F0aW9uU2lkZWJhcldpZHRo
U2V0dGluZy52YWx1ZTsKIApAQCAtMjk2LDE0ICsyOTAsOSBAQCBXZWJJbnNwZWN0b3IuY29udGVu
dExvYWRlZCA9IGZ1bmN0aW9uKCkKICAgICAvLyBzZWxlY3RlZCBzaWRlYmFyIHBhbmVsIGdldHMg
c2hvd24gYW5kIGhhcyBhIHNheSBpbiB3aGF0IGNvbnRlbnQgdmlldyBnZXRzIHNob3duLgogICAg
IHRoaXMubmF2aWdhdGlvblNpZGViYXIuY29sbGFwc2VkID0gdGhpcy5fbmF2aWdhdGlvblNpZGVi
YXJDb2xsYXBzZWRTZXR0aW5nLnZhbHVlOwogCi0gICAgLy8gSWYgSW5zcGVjdG9yRnJvbnRlbmRB
UEkgZGlkbid0IHNob3cgYSBjb250ZW50IHZpZXcsIHRoZW4gdHJ5IHRvIHNob3cgdGhlIGxhc3Qg
Y29udGVudCB2aWV3LgotICAgIGlmICghdGhpcy5jb250ZW50QnJvd3Nlci5jdXJyZW50Q29udGVu
dFZpZXcgJiYgIXRoaXMuaWdub3JlTGFzdENvbnRlbnRDb29raWUpIHsKLSAgICAgICAgaWYgKHRo
aXMuX2xhc3RDb250ZW50Q29va2llU2V0dGluZy52YWx1ZSA9PT0gImNvbnNvbGUiKSB7Ci0gICAg
ICAgICAgICAvLyBUaGUgY29uc29sZSBkb2VzIG5vdCBoYXZlIGEgc2lkZWJhciwgc28gaGFuZGxl
IGl0cyBzcGVjaWFsIGNvb2tpZSBoZXJlLgotICAgICAgICAgICAgdGhpcy5zaG93RnVsbEhlaWdo
dENvbnNvbGUoKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICB0aGlzLl9zaG93Q29udGVu
dFZpZXdGb3JDb29raWUodGhpcy5fbGFzdENvbnRlbnRDb29raWVTZXR0aW5nLnZhbHVlKTsKLSAg
ICB9CisgICAgLy8gSWYgSW5zcGVjdG9yRnJvbnRlbmRBUEkgZGlkbid0IHNob3cgYSBjb250ZW50
IHZpZXcsIHRoZW4gdHJ5IHRvIHJlc3RvcmUgdGhlIGxhc3Qgc2F2ZWQgdmlldyBzdGF0ZS4KKyAg
ICBpZiAoIXRoaXMuY29udGVudEJyb3dzZXIuY3VycmVudENvbnRlbnRWaWV3ICYmICF0aGlzLmln
bm9yZUxhc3RDb250ZW50Q29va2llKQorICAgICAgICB0aGlzLl9yZXN0b3JlSW5zcGVjdG9yVmll
d1N0YXRlRnJvbUNvb2tpZSh0aGlzLl9sYXN0SW5zcGVjdG9yVmlld1N0YXRlQ29va2llU2V0dGlu
Zy52YWx1ZSk7CiAKICAgICB0aGlzLl91cGRhdGVTcGxpdENvbnNvbGVIZWlnaHQodGhpcy5fc3Bs
aXRDb25zb2xlSGVpZ2h0U2V0dGluZy52YWx1ZSk7CiAKQEAgLTcyNiw5ICs3MTUsMjAgQEAgV2Vi
SW5zcGVjdG9yLl9tYWluUmVzb3VyY2VEaWRDaGFuZ2UgPSBmdW5jdGlvbihldmVudCkKIHsKICAg
ICBpZiAoIWV2ZW50LnRhcmdldC5pc01haW5GcmFtZSgpKQogICAgICAgICByZXR1cm47CisKKyAg
ICB0aGlzLl9yZXN0b3JlSW5zcGVjdG9yVmlld1N0YXRlRnJvbUNvb2tpZSh0aGlzLl9sYXN0SW5z
cGVjdG9yVmlld1N0YXRlQ29va2llU2V0dGluZy52YWx1ZSwgdHJ1ZSk7CisKICAgICB0aGlzLnVw
ZGF0ZVdpbmRvd1RpdGxlKCk7CiB9CiAKK1dlYkluc3BlY3Rvci5fcHJvdmlzaW9uYWxMb2FkQ29t
bWl0dGVkID0gZnVuY3Rpb24oZXZlbnQpCit7CisgICAgaWYgKCFldmVudC50YXJnZXQuaXNNYWlu
RnJhbWUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgdGhpcy5fdXBkYXRlQ29va2llRm9ySW5z
cGVjdG9yVmlld1N0YXRlKCk7Cit9CisKIFdlYkluc3BlY3Rvci5fd2luZG93Rm9jdXNlZCA9IGZ1
bmN0aW9uKGV2ZW50KQogewogICAgIGlmIChldmVudC50YXJnZXQuZG9jdW1lbnQubm9kZVR5cGUg
IT09IE5vZGUuRE9DVU1FTlRfTk9ERSB8fCB0aGlzLmRvY2tlZCkKQEAgLTc4OSw2ICs3ODksMTEg
QEAgV2ViSW5zcGVjdG9yLl9tb3VzZU1vdmVkID0gZnVuY3Rpb24oZXZlbnQpCiAgICAgfTsKIH0K
IAorV2ViSW5zcGVjdG9yLl9wYWdlSGlkZGVuID0gZnVuY3Rpb24oZXZlbnQpCit7CisgICAgdGhp
cy5fdXBkYXRlQ29va2llRm9ySW5zcGVjdG9yVmlld1N0YXRlKCk7Cit9CisKIFdlYkluc3BlY3Rv
ci5fdW5kb2NrID0gZnVuY3Rpb24oZXZlbnQpCiB7CiAgICAgdGhpcy5fZG9ja0J1dHRvblRvZ2ds
ZWRTZXR0aW5nLnZhbHVlID0gdGhpcy51bmRvY2tCdXR0b25OYXZpZ2F0aW9uSXRlbS50b2dnbGVk
OwpAQCAtODkwLDggKzg5NSw2IEBAIFdlYkluc3BlY3Rvci5fbmF2aWdhdGlvblNpZGViYXJQYW5l
bFNlbGVjdGVkID0gZnVuY3Rpb24oZXZlbnQpCiAgICAgaWYgKCFzZWxlY3RlZFNpZGViYXJQYW5l
bCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgdGhpcy5fbGFzdFNlbGVjdGVkTmF2aWdhdGlvblNp
ZGViYXJQYW5lbFNldHRpbmcudmFsdWUgPSBzZWxlY3RlZFNpZGViYXJQYW5lbC5pZGVudGlmaWVy
OwotCiAgICAgdGhpcy5fdXBkYXRlTmF2aWdhdGlvblNpZGViYXJGb3JDdXJyZW50Q29udGVudFZp
ZXcoKTsKIH0KIApAQCAtOTY1LDI3ICs5NjgsMjggQEAgV2ViSW5zcGVjdG9yLl90b29sYmFyU2l6
ZU1vZGVEaWRDaGFuZ2UgPSBmdW5jdGlvbihldmVudCkKICAgICB0aGlzLl91cGRhdGVUb29sYmFy
SGVpZ2h0KCk7CiB9CiAKLVdlYkluc3BlY3Rvci5fdXBkYXRlQ3VycmVudENvbnRlbnRWaWV3Q29v
a2llID0gZnVuY3Rpb24oKQorV2ViSW5zcGVjdG9yLl91cGRhdGVDb29raWVGb3JJbnNwZWN0b3JW
aWV3U3RhdGUgPSBmdW5jdGlvbigpCiB7CisgICAgdmFyIGNvb2tpZSA9IHt9OwogICAgIHZhciBj
dXJyZW50Q29udGVudFZpZXcgPSB0aGlzLmNvbnRlbnRCcm93c2VyLmN1cnJlbnRDb250ZW50Vmll
dzsKLSAgICBpZiAoIWN1cnJlbnRDb250ZW50VmlldykKLSAgICAgICAgcmV0dXJuOwogCiAgICAg
Ly8gVGhlIGNvbnNvbGUgZG9lcyBub3QgaGF2ZSBhIHNpZGViYXIsIHNvIGNyZWF0ZSBhIGNvb2tp
ZSBoZXJlLgotICAgIGlmIChjdXJyZW50Q29udGVudFZpZXcucmVwcmVzZW50ZWRPYmplY3QgaW5z
dGFuY2VvZiBXZWJJbnNwZWN0b3IuTG9nT2JqZWN0KSB7Ci0gICAgICAgIHRoaXMuX2xhc3RDb250
ZW50Vmlld1Jlc3BvbnNpYmxlU2lkZWJhclBhbmVsU2V0dGluZy52YWx1ZSA9IG51bGw7Ci0gICAg
ICAgIHRoaXMuX2xhc3RDb250ZW50Q29va2llU2V0dGluZy52YWx1ZSA9ICJjb25zb2xlIjsKKyAg
ICBpZiAoY3VycmVudENvbnRlbnRWaWV3ICYmIGN1cnJlbnRDb250ZW50Vmlldy5yZXByZXNlbnRl
ZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Mb2dPYmplY3QpIHsKKyAgICAgICAgY29v
a2llW1dlYkluc3BlY3Rvci5TZWxlY3RlZFNpZGViYXJQYW5lbENvb2tpZUtleV0gPSAiY29uc29s
ZSI7CisgICAgICAgIHRoaXMuX2xhc3RJbnNwZWN0b3JWaWV3U3RhdGVDb29raWVTZXR0aW5nLnZh
bHVlID0gY29va2llOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgdmFyIHJlc3BvbnNp
YmxlU2lkZWJhclBhbmVsID0gdGhpcy5zaWRlYmFyUGFuZWxGb3JSZXByZXNlbnRlZE9iamVjdChj
dXJyZW50Q29udGVudFZpZXcucmVwcmVzZW50ZWRPYmplY3QpOwotICAgIGlmICghcmVzcG9uc2li
bGVTaWRlYmFyUGFuZWwpCisgICAgdmFyIHNlbGVjdGVkU2lkZWJhclBhbmVsID0gdGhpcy5uYXZp
Z2F0aW9uU2lkZWJhci5zZWxlY3RlZFNpZGViYXJQYW5lbDsKKyAgICBpZiAoIXNlbGVjdGVkU2lk
ZWJhclBhbmVsKQogICAgICAgICByZXR1cm47CiAKLSAgICB2YXIgY29va2llID0ge307Ci0gICAg
Y3VycmVudENvbnRlbnRWaWV3LnNhdmVUb0Nvb2tpZShjb29raWUpOwotICAgIHRoaXMuX2xhc3RD
b250ZW50Vmlld1Jlc3BvbnNpYmxlU2lkZWJhclBhbmVsU2V0dGluZy52YWx1ZSA9IHJlc3BvbnNp
YmxlU2lkZWJhclBhbmVsLmlkZW50aWZpZXI7Ci0gICAgdGhpcy5fbGFzdENvbnRlbnRDb29raWVT
ZXR0aW5nLnZhbHVlID0gY29va2llOworICAgIC8vIFJlc3RvcmluZyB2aWV3IHN0YXRlIGFmdGVy
IGluc3BlY3RvciByZS1vcGVuIG9yIHBhZ2UgcmVsb2FkIGlzIGRlbGVnYXRlZCB0byBuYXZpZ2F0
aW9uIHNpZGViYXJzLgorICAgIC8vIFRoaXMgaXMgYmVjYXVzZSBzb21lIG5hdmlnYXRpb24gc2lk
ZWJhciBzdGF0ZSAoc3VjaCBhcyBicmVha3BvaW50IHNlbGVjdGlvbnMpIGNhbm5vdCBiZSBpbmZl
cnJlZAorICAgIC8vIHNvbGVseSBiYXNlZCBvbiB3aGljaCBjb250ZW50IHZpZXcgaXMgdmlzaWJs
ZSwgb3IgbXVsdGlwbGUgbmF2aWdhdGlvbiBzaWRlYmFycyBjb3VsZCBiZSBzaG93bi4KKyAgICBj
b29raWVbV2ViSW5zcGVjdG9yLlNlbGVjdGVkU2lkZWJhclBhbmVsQ29va2llS2V5XSA9IHNlbGVj
dGVkU2lkZWJhclBhbmVsLmlkZW50aWZpZXI7CisgICAgc2VsZWN0ZWRTaWRlYmFyUGFuZWwuc2F2
ZVN0YXRlVG9Db29raWUoY29va2llKTsKKyAgICB0aGlzLl9sYXN0SW5zcGVjdG9yVmlld1N0YXRl
Q29va2llU2V0dGluZy52YWx1ZSA9IGNvb2tpZTsKIH0KIAogV2ViSW5zcGVjdG9yLl9jb250ZW50
QnJvd3NlckN1cnJlbnRDb250ZW50Vmlld0RpZENoYW5nZSA9IGZ1bmN0aW9uKGV2ZW50KQpAQCAt
MTA3OSw3NSArMTA4MywzMCBAQCBXZWJJbnNwZWN0b3IuX2NvbnRlbnRCcm93c2VyUmVwcmVzZW50
ZWRPYmplY3RzRGlkQ2hhbmdlID0gZnVuY3Rpb24oZXZlbnQpCiAKICAgICAvLyBTdG9wIGlnbm9y
aW5nIHRoZSBzaWRlYmFyIHBhbmVsIHNlbGVjdGVkIGV2ZW50LgogICAgIGRlbGV0ZSB0aGlzLl9p
Z25vcmVEZXRhaWxzU2lkZWJhclBhbmVsU2VsZWN0ZWRFdmVudDsKLQotICAgIHRoaXMuX3VwZGF0
ZUN1cnJlbnRDb250ZW50Vmlld0Nvb2tpZShldmVudCk7CiB9CiAKLVdlYkluc3BlY3Rvci5fc2hv
d0NvbnRlbnRWaWV3Rm9yQ29va2llID0gZnVuY3Rpb24oY29va2llKQorV2ViSW5zcGVjdG9yLl9y
ZXN0b3JlSW5zcGVjdG9yVmlld1N0YXRlRnJvbUNvb2tpZSA9IGZ1bmN0aW9uKGNvb2tpZSwgY2F1
c2VkQnlSZWxvYWQpCiB7Ci0gICAgaWYgKCFjb29raWUgfHwgIWNvb2tpZS50eXBlKQotICAgICAg
ICByZXR1cm4gbnVsbDsKLQotICAgIHRoaXMuX3BlbmRpbmdDb250ZW50Vmlld0Nvb2tpZSA9IGNv
b2tpZTsKLSAgICB2YXIgc2hvd25Db250ZW50VmlldyA9IHRoaXMuX3Jlc29sdmVBbmRTaG93UGVu
ZGluZ0NvbnRlbnRWaWV3Q29va2llKCk7Ci0KLSAgICAvLyBBdCB0aGlzIHBvaW50LCB3ZSBhc3N1
bWUgbm8gc3RvcmFnZSBvYmplY3RzIG9yIHZpZXdzIGhhdmUgYmVlbiBjcmVhdGVkIHlldC4KLSAg
ICAvLyBJZiB0aGUgY29va2llIHJlcXVlc3RzIHRoZXNlIHZpZXdzLCB0aGV5IHdpbGwgYmUgc2hv
d24gd2hlbiB0aGUgc3RvcmFnZSBvYmplY3QKLSAgICAvLyBpcyBhZGRlZCAoaWYgaXQgbWF0Y2hl
cyBleGFjdGx5KSwgb3IgYW55IHZpZXcgb2YgdGhlIHNhbWUgdHlwZSAoYWZ0ZXIgYSB0aW1lb3V0
KS4KLSAgICBpZiAoIXNob3duQ29udGVudFZpZXcpIHsKLSAgICAgICAgaWYgKHRoaXMuX2xhc3RB
dHRlbXB0Q29va2llQ2hlY2tpbmdUaW1lb3V0KQotICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRo
aXMuX2xhc3RBdHRlbXB0Q29va2llQ2hlY2tpbmdUaW1lb3V0KTsKLQotICAgICAgICB2YXIgbGFz
dEF0dGVtcHRUb1Jlc3RvcmVGcm9tQ29va2llID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBk
ZWxldGUgdGhpcy5fbGFzdEF0dGVtcHRDb29raWVDaGVja2luZ1RpbWVvdXQ7Ci0gICAgICAgICAg
ICB0aGlzLl9yZXNvbHZlQW5kU2hvd1BlbmRpbmdDb250ZW50Vmlld0Nvb2tpZSh0cnVlKTsKLSAg
ICAgICAgfTsKLQotICAgICAgICAvLyBXaGVuIHRoZSBzcGVjaWZpYyBzdG9yYWdlIGl0ZW0gd2Fz
bid0IGZvdW5kIHdlIHdhbnQgdG8gcmVsYXggdGhlIGNoZWNrIHRvIHNob3cgdGhlIGZpcnN0IGl0
ZW0gd2l0aCB0aGUKLSAgICAgICAgLy8gc2FtZSB0eXBlLiBUaGVyZSBpcyBubyBnb29kIHRpbWUg
dG8gbmF0dXJhbGx5IGRlY2xhcmUgdGhlIGNvb2tpZSB3YXNuJ3QgZm91bmQsIHNvIHdlIGRvIHRo
YXQgb24gYSB0aW1lb3V0LgotICAgICAgICB0aGlzLl9sYXN0QXR0ZW1wdENvb2tpZUNoZWNraW5n
VGltZW91dCA9IHNldFRpbWVvdXQobGFzdEF0dGVtcHRUb1Jlc3RvcmVGcm9tQ29va2llLmJpbmQo
dGhpcyksIDUwMCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIHNob3duQ29udGVudFZpZXc7Ci19Ci0K
LVdlYkluc3BlY3Rvci5fcmVzb2x2ZUFuZFNob3dQZW5kaW5nQ29udGVudFZpZXdDb29raWUgPSBm
dW5jdGlvbihtYXRjaE9uVHlwZUFsb25lKQotewotICAgIHZhciBjb29raWUgPSB0aGlzLl9wZW5k
aW5nQ29udGVudFZpZXdDb29raWU7CiAgICAgaWYgKCFjb29raWUpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgIHZhciByZXByZXNlbnRlZE9iamVjdCA9IG51bGw7Ci0KLSAgICBpZiAoY29v
a2llLnR5cGUgPT09IFdlYkluc3BlY3Rvci5Db250ZW50Vmlld0Nvb2tpZVR5cGUuUmVzb3VyY2Up
Ci0gICAgICAgIHJlcHJlc2VudGVkT2JqZWN0ID0gdGhpcy5mcmFtZVJlc291cmNlTWFuYWdlci5v
YmplY3RGb3JDb29raWUoY29va2llKTsKLQotICAgIGlmIChjb29raWUudHlwZSA9PT0gV2ViSW5z
cGVjdG9yLkNvbnRlbnRWaWV3Q29va2llVHlwZS5UaW1lbGluZXMpCi0gICAgICAgIHJlcHJlc2Vu
dGVkT2JqZWN0ID0gdGhpcy50aW1lbGluZU1hbmFnZXIub2JqZWN0Rm9yQ29va2llKGNvb2tpZSk7
Ci0KLSAgICBpZiAoY29va2llLnR5cGUgPT09IFdlYkluc3BlY3Rvci5Db250ZW50Vmlld0Nvb2tp
ZVR5cGUuQ29va2llU3RvcmFnZSB8fCBjb29raWUudHlwZSA9PT0gV2ViSW5zcGVjdG9yLkNvbnRl
bnRWaWV3Q29va2llVHlwZS5EYXRhYmFzZSAgfHwgY29va2llLnR5cGUgPT09IFdlYkluc3BlY3Rv
ci5Db250ZW50Vmlld0Nvb2tpZVR5cGUuRGF0YWJhc2VUYWJsZSB8fCBjb29raWUudHlwZSA9PT0g
V2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29va2llVHlwZS5ET01TdG9yYWdlKQotICAgICAgICBy
ZXByZXNlbnRlZE9iamVjdCA9IHRoaXMuc3RvcmFnZU1hbmFnZXIub2JqZWN0Rm9yQ29va2llKGNv
b2tpZSwgbWF0Y2hPblR5cGVBbG9uZSk7CisgICAgICAgIHJldHVybjsKIAotICAgIGlmIChjb29r
aWUudHlwZSA9PT0gV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29va2llVHlwZS5BcHBsaWNhdGlv
bkNhY2hlKQotICAgICAgICByZXByZXNlbnRlZE9iamVjdCA9IHRoaXMuYXBwbGljYXRpb25DYWNo
ZU1hbmFnZXIub2JqZWN0Rm9yQ29va2llKGNvb2tpZSwgbWF0Y2hPblR5cGVBbG9uZSk7CisgICAg
Ly8gVGhlIGNvbnNvbGUgZG9lcyBub3QgaGF2ZSBhIHNpZGViYXIsIHNvIGhhbmRsZSBpdHMgc3Bl
Y2lhbCBjb29raWUgaGVyZS4KKyAgICBpZiAoY29va2llW1dlYkluc3BlY3Rvci5TZWxlY3RlZFNp
ZGViYXJQYW5lbENvb2tpZUtleV0gPT09ICJjb25zb2xlIikgeworICAgICAgICB0aGlzLnNob3dG
dWxsSGVpZ2h0Q29uc29sZSgpOworICAgICAgICByZXR1cm47CisgICAgfQogCi0gICAgaWYgKCFy
ZXByZXNlbnRlZE9iamVjdCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGNvbnN0IG1hdGNo
VHlwZU9ubHlEZWxheUZvclJlbG9hZCA9IDIwMDA7CisgICAgY29uc3QgbWF0Y2hUeXBlT25seURl
bGF5Rm9yUmVvcGVuID0gMTAwMDsKKyAgICB2YXIgc2lkZWJhclBhbmVsSWRlbnRpZmllciA9IGNv
b2tpZVtXZWJJbnNwZWN0b3IuU2VsZWN0ZWRTaWRlYmFyUGFuZWxDb29raWVLZXldOworICAgIHZh
ciBzaWRlYmFyUGFuZWwgPSBXZWJJbnNwZWN0b3IubmF2aWdhdGlvblNpZGViYXIuZmluZFNpZGVi
YXJQYW5lbChzaWRlYmFyUGFuZWxJZGVudGlmaWVyKTsKKyAgICBpZiAoIXNpZGViYXJQYW5lbCkK
KyAgICAgICAgcmV0dXJuOwogCi0gICAgLy8gSWYgd2UgcmVhY2hlZCB0aGlzIHBvaW50LCB0aGVu
IHdlIHNob3VsZCBiZSBhYmxlIHRvIGNyZWF0ZSBhbmQvb3IgZGlzcGxheSBhIGNvbnRlbnQgdmll
dyBiYXNlZCBvbiB0aGUgY29va2llLgotICAgIGRlbGV0ZSB0aGlzLl9wZW5kaW5nQ29udGVudFZp
ZXdDb29raWU7Ci0gICAgaWYgKHRoaXMuX2xhc3RBdHRlbXB0Q29va2llQ2hlY2tpbmdUaW1lb3V0
KQotICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5fbGFzdEF0dGVtcHRDb29raWVDaGVja2luZ1Rp
bWVvdXQpOworICAgIFdlYkluc3BlY3Rvci5uYXZpZ2F0aW9uU2lkZWJhci5zZWxlY3RlZFNpZGVi
YXJQYW5lbCA9IHNpZGViYXJQYW5lbDsKIAotICAgIC8vIERlbGF5IHRoaXMgd29yayBiZWNhdXNl
IG90aGVyIGxpc3RlbmVycyBvZiB0aGUgb3JpZ2luYXRpbmcgZXZlbnQgbWlnaHQgbm90IGhhdmUg
ZmlyZWQgeWV0LgotICAgIC8vIFNvIGRpc3BsYXlpbmcgdGhlIGNvbnRlbnQgdmlldyBiZWZvcmUg
dGhvc2UgbGlzdGVuZXJzIGRvIHRoZWlyIHdvcmsgbWlnaHQgY2F1c2UgdGhlCi0gICAgLy8gZGVw
ZW5kZW50IHZpZXcgc3RhdGVzIChuYXZpZ2F0aW9uIHNpZGViYXIgdHJlZSBlbGVtZW50cywgcGF0
aCBjb21wb25lbnRzKSB0byBiZSB3cm9uZy4KLSAgICBmdW5jdGlvbiBkZWxheWVkV29yaygpCi0g
ICAgewotICAgICAgICB0aGlzLmNvbnRlbnRCcm93c2VyLnNob3dDb250ZW50Vmlld0ZvclJlcHJl
c2VudGVkT2JqZWN0KHJlcHJlc2VudGVkT2JqZWN0LCBjb29raWUpOwotICAgIH0KLSAgICBzZXRU
aW1lb3V0KGRlbGF5ZWRXb3JrLmJpbmQodGhpcyksIDApOwotICAgIHJldHVybiB0cnVlOworICAg
IHZhciByZWxheE1hdGNoRGVsYXkgPSBjYXVzZWRCeVJlbG9hZCA/IG1hdGNoVHlwZU9ubHlEZWxh
eUZvclJlbG9hZCA6IG1hdGNoVHlwZU9ubHlEZWxheUZvclJlb3BlbjsKKyAgICBzaWRlYmFyUGFu
ZWwucmVzdG9yZVN0YXRlRnJvbUNvb2tpZShjb29raWUsIHJlbGF4TWF0Y2hEZWxheSk7CiB9CiAK
IFdlYkluc3BlY3Rvci5faW5pdGlhbGl6ZVdlYlNvY2tldElmTmVlZGVkID0gZnVuY3Rpb24oKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTmF2aWdhdGlv
blNpZGViYXJQYW5lbC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL05h
dmlnYXRpb25TaWRlYmFyUGFuZWwuanMKaW5kZXggOGE5ZTUyY2U1YjM0OGUxMWVjNGE0NTMxY2Yy
N2I0YjdjMGNlMzdhNC4uYTlkMjI3ZWNjNGJkNGM5NTJiZjAzMjY4ZDNiZjExZGNmOWRjYzJhYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTmF2aWdhdGlv
blNpZGViYXJQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLmpzCkBAIC00NCw2ICs0NCw4IEBAIFdlYkluc3BlY3Rv
ci5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsID0gZnVuY3Rpb24oaWRlbnRpZmllciwgZGlzcGxheU5h
bWUsIGltYWdlLCBrCiAgICAgaWYgKGF1dG9IaWRlVG9vbGJhckl0ZW1XaGVuRW1wdHkpCiAgICAg
ICAgIHRoaXMudG9vbGJhckl0ZW0uaGlkZGVuID0gdHJ1ZTsKIAorICAgIHRoaXMuX3Zpc2libGVD
b250ZW50VHJlZU91dGxpbmVzID0gbmV3IFNldDsKKwogICAgIHRoaXMuX2NvbnRlbnRFbGVtZW50
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgdGhpcy5fY29udGVudEVsZW1l
bnQuY2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwuQ29udGVu
dEVsZW1lbnRTdHlsZUNsYXNzTmFtZTsKICAgICB0aGlzLl9jb250ZW50RWxlbWVudC5hZGRFdmVu
dExpc3RlbmVyKCJzY3JvbGwiLCB0aGlzLl91cGRhdGVDb250ZW50T3ZlcmZsb3dTaGFkb3dWaXNp
YmlsaXR5LmJpbmQodGhpcykpOwpAQCAtMTM1LDYgKzEzNyw5IEBAIFdlYkluc3BlY3Rvci5OYXZp
Z2F0aW9uU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fY29udGVudFRy
ZWVPdXRsaW5lID0gbmV3VHJlZU91dGxpbmU7CiAgICAgICAgIHRoaXMuX2NvbnRlbnRUcmVlT3V0
bGluZS5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRl
YmFyUGFuZWwuQ29udGVudFRyZWVPdXRsaW5lRWxlbWVudEhpZGRlblN0eWxlQ2xhc3NOYW1lKTsK
IAorICAgICAgICB0aGlzLl92aXNpYmxlQ29udGVudFRyZWVPdXRsaW5lcy5kZWxldGUodGhpcy5f
Y29udGVudFRyZWVPdXRsaW5lKTsKKyAgICAgICAgdGhpcy5fdmlzaWJsZUNvbnRlbnRUcmVlT3V0
bGluZXMuYWRkKG5ld1RyZWVPdXRsaW5lKTsKKwogICAgICAgICB0aGlzLl91cGRhdGVGaWx0ZXIo
KTsKICAgICB9LAogCkBAIC0xNjMsNiArMTY4LDkgQEAgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25T
aWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICBjb250ZW50VHJlZU91dGxpbmUub25j
b2xsYXBzZSA9IHRoaXMuX3RyZWVFbGVtZW50RXhwYW5kZWRPckNvbGxhcHNlZC5iaW5kKHRoaXMp
OwogICAgICAgICBjb250ZW50VHJlZU91dGxpbmUuYWxsb3dzUmVwZWF0U2VsZWN0aW9uID0gdHJ1
ZTsKIAorICAgICAgICBpZiAoZG9udEhpZGVCeURlZmF1bHQpCisgICAgICAgICAgICB0aGlzLl92
aXNpYmxlQ29udGVudFRyZWVPdXRsaW5lcy5hZGQoY29udGVudFRyZWVPdXRsaW5lKTsKKwogICAg
ICAgICByZXR1cm4gY29udGVudFRyZWVPdXRsaW5lOwogICAgIH0sCiAKQEAgLTE3OSw2ICsxODcs
NDYgQEAgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewog
ICAgICAgICAgICAgc2VsZWN0ZWRUcmVlRWxlbWVudC5zZWxlY3QoKTsKICAgICB9LAogCisgICAg
c2F2ZVN0YXRlVG9Db29raWU6IGZ1bmN0aW9uKGNvb2tpZSkKKyAgICB7CisgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KGNvb2tpZSk7CisKKyAgICAgICAgLy8gVGhpcyBkb2VzIG5vdCBzYXZlIGZvbGRl
ciBzZWxlY3Rpb25zLCB3aGljaCBsYWNrIGEgcmVwcmVzZW50ZWQgb2JqZWN0IGFuZCBjb250ZW50
IHZpZXcuCisgICAgICAgIHZhciBzZWxlY3RlZFRyZWVFbGVtZW50ID0gbnVsbDsKKyAgICAgICAg
dGhpcy5fdmlzaWJsZUNvbnRlbnRUcmVlT3V0bGluZXMuZm9yRWFjaChmdW5jdGlvbihvdXRsaW5l
KSB7CisgICAgICAgICAgICBpZiAob3V0bGluZS5zZWxlY3RlZFRyZWVFbGVtZW50KQorICAgICAg
ICAgICAgICAgIHNlbGVjdGVkVHJlZUVsZW1lbnQgPSBvdXRsaW5lLnNlbGVjdGVkVHJlZUVsZW1l
bnQ7CisgICAgICAgIH0pOworCisgICAgICAgIGlmICghc2VsZWN0ZWRUcmVlRWxlbWVudCkKKyAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICB2YXIgcmVwcmVzZW50ZWRPYmplY3QgPSBzZWxl
Y3RlZFRyZWVFbGVtZW50LnJlcHJlc2VudGVkT2JqZWN0OworICAgICAgICBjb29raWVbV2ViSW5z
cGVjdG9yLlR5cGVJZGVudGlmaWVyQ29va2llS2V5XSA9IHJlcHJlc2VudGVkT2JqZWN0LmNvbnN0
cnVjdG9yLlR5cGVJZGVudGlmaWVyOworICAgICAgICByZXByZXNlbnRlZE9iamVjdC5zYXZlSWRl
bnRpdHlUb0Nvb2tpZShjb29raWUpOworICAgIH0sCisKKyAgICAvLyBUaGlzIGNhbiBiZSBzdXBw
bGVtZW50ZWQgYnkgc3ViY2xhc3NlcyB0aGF0IGFkbWl0IGEgc2ltcGxlciBzdHJhdGVneSBmb3Ig
c3RhdGljIHRyZWUgZWxlbWVudHMuCisgICAgcmVzdG9yZVN0YXRlRnJvbUNvb2tpZTogZnVuY3Rp
b24oY29va2llLCByZWxheGVkTWF0Y2hEZWxheSkKKyAgICB7CisgICAgICAgIHRoaXMuX3BlbmRp
bmdWaWV3U3RhdGVDb29raWUgPSBjb29raWU7CisKKyAgICAgICAgLy8gQ2hlY2sgaWYgYW55IGV4
aXN0aW5nIHRyZWUgZWxlbWVudHMgaW4gYW55IG91dGxpbmUgbWF0Y2ggdGhlIGNvb2tpZS4KKyAg
ICAgICAgdGhpcy5fY2hlY2tPdXRsaW5lc0ZvclBlbmRpbmdWaWV3U3RhdGVDb29raWUoKTsKKwor
ICAgICAgICBpZiAodGhpcy5fZmluYWxBdHRlbXB0VG9SZXN0b3JlVmlld1N0YXRlVGltZW91dCkK
KyAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLl9maW5hbEF0dGVtcHRUb1Jlc3RvcmVWaWV3
U3RhdGVUaW1lb3V0KTsKKworICAgICAgICB2YXIgZmluYWxBdHRlbXB0VG9SZXN0b3JlVmlld1N0
YXRlRnJvbUNvb2tpZSA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgZGVsZXRlIHRoaXMuX2Zp
bmFsQXR0ZW1wdFRvUmVzdG9yZVZpZXdTdGF0ZVRpbWVvdXQ7CisgICAgICAgICAgICB0aGlzLl9j
aGVja091dGxpbmVzRm9yUGVuZGluZ1ZpZXdTdGF0ZUNvb2tpZSh0cnVlKTsKKyAgICAgICAgfTsK
KworICAgICAgICAvLyBJZiB0aGUgc3BlY2lmaWMgdHJlZSBlbGVtZW50IHdhc24ndCBmb3VuZCwg
d2UgbWF5IG5lZWQgdG8gd2FpdCBmb3IgdGhlIHJlc291cmNlcworICAgICAgICAvLyB0byBiZSBy
ZWdpc3RlcmVkLiBXZSB0cnkgb25lIGxhc3QgdGltZSAobWF0Y2ggdHlwZSBvbmx5KSBhZnRlciBh
biBhcmJpdHJhcnkgYW1vdW50IG9mIHRpbWVvdXQuCisgICAgICAgIHRoaXMuX2ZpbmFsQXR0ZW1w
dFRvUmVzdG9yZVZpZXdTdGF0ZVRpbWVvdXQgPSBzZXRUaW1lb3V0KGZpbmFsQXR0ZW1wdFRvUmVz
dG9yZVZpZXdTdGF0ZUZyb21Db29raWUuYmluZCh0aGlzKSwgcmVsYXhlZE1hdGNoRGVsYXkpOwor
ICAgIH0sCisKICAgICBzaG93RW1wdHlDb250ZW50UGxhY2Vob2xkZXI6IGZ1bmN0aW9uKG1lc3Nh
Z2UsIGhpZGVUb29sYmFySXRlbSkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KG1lc3Nh
Z2UpOwpAQCAtMzk5LDYgKzQ0Nyw3IEBAIFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uU2lkZWJhclBh
bmVsLnByb3RvdHlwZSA9IHsKIAogICAgICAgICB0aGlzLl9jaGVja0ZvckVtcHR5RmlsdGVyUmVz
dWx0cygpOwogICAgICAgICB0aGlzLl91cGRhdGVDb250ZW50T3ZlcmZsb3dTaGFkb3dWaXNpYmls
aXR5KCk7CisgICAgICAgIHRoaXMuX2NoZWNrRWxlbWVudHNGb3JQZW5kaW5nVmlld1N0YXRlQ29v
a2llKHRyZWVFbGVtZW50KTsKICAgICB9LAogCiAgICAgX3RyZWVFbGVtZW50RXhwYW5kZWRPckNv
bGxhcHNlZDogZnVuY3Rpb24odHJlZUVsZW1lbnQpCkBAIC00OTAsNiArNTM5LDcwIEBAIFdlYklu
c3BlY3Rvci5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKIAogICAgICAgICAv
LyBDaGVjayBvbiBhIGRlbGF5IHRvIGNvYWxlc2NlIG11bHRpcGxlIGNhbGxzIHRvIF9jaGVja0Zv
ck9sZFJlc291cmNlcy4KICAgICAgICAgdGhpcy5fY2hlY2tGb3JPbGRSZXNvdXJjZXNUaW1lb3V0
SWRlbnRpZmllciA9IHNldFRpbWVvdXQoZGVsYXllZFdvcmsuYmluZCh0aGlzKSwgMCk7CisgICAg
fSwKKworICAgIF9jaGVja091dGxpbmVzRm9yUGVuZGluZ1ZpZXdTdGF0ZUNvb2tpZTogZnVuY3Rp
b24obWF0Y2hUeXBlT25seSkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5fcGVuZGluZ1ZpZXdT
dGF0ZUNvb2tpZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB2YXIgd29ya0xpc3Qg
PSBbXTsKKyAgICAgICAgdGhpcy5fdmlzaWJsZUNvbnRlbnRUcmVlT3V0bGluZXMuZm9yRWFjaChm
dW5jdGlvbihvdXRsaW5lKSB7IHdvcmtMaXN0LnB1c2gob3V0bGluZSk7IH0pOworICAgICAgICBm
b3IgKHZhciBpID0gMDsgaSA8IHdvcmtMaXN0Lmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBp
ZiAod29ya0xpc3RbaV0uaGFzQ2hpbGRyZW4pCisgICAgICAgICAgICAgICAgd29ya0xpc3QgPSB3
b3JrTGlzdC5jb25jYXQod29ya0xpc3RbaV0uY2hpbGRyZW4pOworICAgICAgICB9CisKKyAgICAg
ICAgLy8gUmVtb3ZlIFRyZWVPdXRsaW5lIGVsZW1lbnRzIGZyb20gdGhlIGZyb250IG9mIHRoZSB3
b3JrIGxpc3QuCisgICAgICAgIHdvcmtMaXN0LnNwbGljZSgwLCB0aGlzLl92aXNpYmxlQ29udGVu
dFRyZWVPdXRsaW5lcy5zaXplKTsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2NoZWNrRWxlbWVudHNG
b3JQZW5kaW5nVmlld1N0YXRlQ29va2llKHdvcmtMaXN0KTsKKyAgICB9LAorCisgICAgX2NoZWNr
RWxlbWVudHNGb3JQZW5kaW5nVmlld1N0YXRlQ29va2llOiBmdW5jdGlvbih0cmVlRWxlbWVudHMs
IG1hdGNoVHlwZU9ubHkpCisgICAgeworICAgICAgICBpZiAoIXRoaXMuX3BlbmRpbmdWaWV3U3Rh
dGVDb29raWUpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdmFyIGNvb2tpZSA9IHRo
aXMuX3BlbmRpbmdWaWV3U3RhdGVDb29raWU7CisKKyAgICAgICAgZnVuY3Rpb24gdHJlZUVsZW1l
bnRNYXRjaGVzQ29va2llKHRyZWVFbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIg
cmVwcmVzZW50ZWRPYmplY3QgPSB0cmVlRWxlbWVudC5yZXByZXNlbnRlZE9iamVjdDsKKyAgICAg
ICAgICAgIGlmICghcmVwcmVzZW50ZWRPYmplY3QpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgICAgICAgICB2YXIgdHlwZUlkZW50aWZpZXIgPSBjb29raWVbV2ViSW5zcGVj
dG9yLlR5cGVJZGVudGlmaWVyQ29va2llS2V5XTsKKyAgICAgICAgICAgIGlmICh0eXBlSWRlbnRp
ZmllciAhPT0gcmVwcmVzZW50ZWRPYmplY3QuY29uc3RydWN0b3IuVHlwZUlkZW50aWZpZXIpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICBpZiAobWF0Y2hUeXBl
T25seSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICAgICAgdmFyIGNh
bmRpZGF0ZU9iamVjdENvb2tpZSA9IHt9OworICAgICAgICAgICAgcmVwcmVzZW50ZWRPYmplY3Qu
c2F2ZUlkZW50aXR5VG9Db29raWUoY2FuZGlkYXRlT2JqZWN0Q29va2llKTsKKworICAgICAgICAg
ICAgcmV0dXJuIE9iamVjdC5rZXlzKGNhbmRpZGF0ZU9iamVjdENvb2tpZSkuZXZlcnkoZnVuY3Rp
b24gdmFsdWVzTWF0Y2hGb3JLZXkoa2V5KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGNhbmRp
ZGF0ZU9iamVjdENvb2tpZVtrZXldID09PSBjb29raWVba2V5XTsKKyAgICAgICAgICAgIH0pOwor
ICAgICAgICB9CisKKyAgICAgICAgaWYgKCEodHJlZUVsZW1lbnRzIGluc3RhbmNlb2YgQXJyYXkp
KQorICAgICAgICAgICAgdHJlZUVsZW1lbnRzID0gW3RyZWVFbGVtZW50c107CisKKyAgICAgICAg
dmFyIG1hdGNoZWRFbGVtZW50ID0gbnVsbDsKKyAgICAgICAgdHJlZUVsZW1lbnRzLnNvbWUoZnVu
Y3Rpb24oZWxlbWVudCkgeworICAgICAgICAgICAgaWYgKHRyZWVFbGVtZW50TWF0Y2hlc0Nvb2tp
ZShlbGVtZW50KSkgeworICAgICAgICAgICAgICAgIG1hdGNoZWRFbGVtZW50ID0gZWxlbWVudDsK
KyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7
CisKKyAgICAgICAgaWYgKG1hdGNoZWRFbGVtZW50KSB7CisgICAgICAgICAgICBtYXRjaGVkRWxl
bWVudC5yZXZlYWxBbmRTZWxlY3QoKTsKKyAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9wZW5kaW5n
Vmlld1N0YXRlQ29va2llOworICAgICAgICAgICAgaWYgKHRoaXMuX2ZpbmFsQXR0ZW1wdFRvUmVz
dG9yZVZpZXdTdGF0ZVRpbWVvdXQpCisgICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMu
X2ZpbmFsQXR0ZW1wdFRvUmVzdG9yZVZpZXdTdGF0ZVRpbWVvdXQpOworICAgICAgICB9CiAgICAg
fQogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
UmVzb3VyY2UuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9SZXNvdXJj
ZS5qcwppbmRleCAzYzI2ZmViZGEzN2VmMzQ4Njg0MzhkZWIxNzI0MGE0NDIyNmFhOGQzLi4wMTlk
NTNhY2Q5MGUyZDI2MjlmMmE1MjhlZmQ5NzFkNWY4ZmEwNmNlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9SZXNvdXJjZS5qcworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9SZXNvdXJjZS5qcwpAQCAtNTUsNiArNTUsMTAgQEAg
V2ViSW5zcGVjdG9yLlJlc291cmNlID0gZnVuY3Rpb24odXJsLCBtaW1lVHlwZSwgdHlwZSwgbG9h
ZGVySWRlbnRpZmllciwgcmVxdWVzdEkKIAogV2ViSW5zcGVjdG9yLk9iamVjdC5hZGRDb25zdHJ1
Y3RvckZ1bmN0aW9ucyhXZWJJbnNwZWN0b3IuUmVzb3VyY2UpOwogCitXZWJJbnNwZWN0b3IuUmVz
b3VyY2UuVHlwZUlkZW50aWZpZXIgPSAicmVzb3VyY2UiOworV2ViSW5zcGVjdG9yLlJlc291cmNl
LlVSTENvb2tpZUtleSA9ICJyZXNvdXJjZS11cmwiOworV2ViSW5zcGVjdG9yLlJlc291cmNlLk1h
aW5SZXNvdXJjZUNvb2tpZUtleSA9ICJyZXNvdXJjZS1pcy1tYWluLXJlc291cmNlIjsKKwogV2Vi
SW5zcGVjdG9yLlJlc291cmNlLkV2ZW50ID0gewogICAgIFVSTERpZENoYW5nZTogInJlc291cmNl
LXVybC1kaWQtY2hhbmdlIiwKICAgICBNSU1FVHlwZURpZENoYW5nZTogInJlc291cmNlLW1pbWUt
dHlwZS1kaWQtY2hhbmdlIiwKQEAgLTY5MSw2ICs2OTUsMTIgQEAgV2ViSW5zcGVjdG9yLlJlc291
cmNlLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX3R5cGUgPSBXZWJJbnNwZWN0b3Iu
UmVzb3VyY2UuVHlwZS5TY3JpcHQ7CiAgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xp
c3RlbmVycyhXZWJJbnNwZWN0b3IuUmVzb3VyY2UuRXZlbnQuVHlwZURpZENoYW5nZSwge29sZFR5
cGU6IG9sZFR5cGV9KTsKICAgICAgICAgfQorICAgIH0sCisKKyAgICBzYXZlSWRlbnRpdHlUb0Nv
b2tpZTogZnVuY3Rpb24oY29va2llKQorICAgIHsKKyAgICAgICAgY29va2llW1dlYkluc3BlY3Rv
ci5SZXNvdXJjZS5VUkxDb29raWVLZXldID0gdGhpcy51cmw7CisgICAgICAgIGNvb2tpZVtXZWJJ
bnNwZWN0b3IuUmVzb3VyY2UuTWFpblJlc291cmNlQ29va2llS2V5XSA9IHRoaXMuaXNNYWluUmVz
b3VyY2UoKTsKICAgICB9CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Jlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3LmpzCmlu
ZGV4IDMyMTkwMGNlZTRkMDJkZTk5MDBlYjA0N2NjOGQwYTc4NmViNTIxYzEuLmFhNWNkNTkzNTE5
YmVmZDFkYjk5YzcxMTAwNDYzY2E5ZjRmZmM1YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Jlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3LmpzCisrKyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Jlc291cmNlQ2x1c3RlckNvbnRl
bnRWaWV3LmpzCkBAIC00Nyw2ICs0Nyw4IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZUNsdXN0ZXJD
b250ZW50VmlldyA9IGZ1bmN0aW9uKHJlc291cmNlKQogICAgIHRoaXMuX2N1cnJlbnRDb250ZW50
Vmlld1NldHRpbmcgPSBuZXcgV2ViSW5zcGVjdG9yLlNldHRpbmcoInJlc291cmNlLWN1cnJlbnQt
dmlldy0iICsgdGhpcy5fcmVzb3VyY2UudXJsLmhhc2gsIFdlYkluc3BlY3Rvci5SZXNvdXJjZUNs
dXN0ZXJDb250ZW50Vmlldy5SZXNwb25zZUlkZW50aWZpZXIpOwogfTsKIAorV2ViSW5zcGVjdG9y
LlJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3LkNvbnRlbnRWaWV3SWRlbnRpZmllckNvb2tpZUtl
eSA9ICJyZXNvdXJjZS1jbHVzdGVyLWNvbnRlbnQtdmlldy1pZGVudGlmaWVyIjsKKwogV2ViSW5z
cGVjdG9yLlJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3LlJlcXVlc3RJY29uU3R5bGVDbGFzc05h
bWUgPSAicmVxdWVzdC1pY29uIjsKIFdlYkluc3BlY3Rvci5SZXNvdXJjZUNsdXN0ZXJDb250ZW50
Vmlldy5SZXNwb25zZUljb25TdHlsZUNsYXNzTmFtZSA9ICJyZXNwb25zZS1pY29uIjsKIFdlYklu
c3BlY3Rvci5SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5SZXF1ZXN0SWRlbnRpZmllciA9ICJy
ZXF1ZXN0IjsKQEAgLTE0MiwxNyArMTQ0LDEzIEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZUNsdXN0
ZXJDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAKICAgICBzYXZlVG9Db29raWU6IGZ1bmN0aW9u
KGNvb2tpZSkKICAgICB7Ci0gICAgICAgIGNvb2tpZS50eXBlID0gV2ViSW5zcGVjdG9yLkNvbnRl
bnRWaWV3Q29va2llVHlwZS5SZXNvdXJjZTsKLSAgICAgICAgY29va2llLnVybCA9IHRoaXMucmVw
cmVzZW50ZWRPYmplY3QudXJsOwotICAgICAgICBjb29raWUuc3VidmlldyA9IHRoaXMuX2N1cnJl
bnRDb250ZW50Vmlld1NldHRpbmcudmFsdWU7CisgICAgICAgIGNvb2tpZVtXZWJJbnNwZWN0b3Iu
UmVzb3VyY2VDbHVzdGVyQ29udGVudFZpZXcuQ29udGVudFZpZXdJZGVudGlmaWVyQ29va2llS2V5
XSA9IHRoaXMuX2N1cnJlbnRDb250ZW50Vmlld1NldHRpbmcudmFsdWU7CiAgICAgfSwKIAogICAg
IHJlc3RvcmVGcm9tQ29va2llOiBmdW5jdGlvbihjb29raWUpCiAgICAgewotICAgICAgICBpZiAo
ImxpbmVOdW1iZXIiIGluIGNvb2tpZSAmJiAiY29sdW1uTnVtYmVyIiBpbiBjb29raWUpCi0gICAg
ICAgICAgICByZXR1cm4gdGhpcy5zaG93UmVzcG9uc2UobmV3IFdlYkluc3BlY3Rvci5Tb3VyY2VD
b2RlUG9zaXRpb24oY29va2llLmxpbmVOdW1iZXIsIGNvb2tpZS5jb2x1bW5OdW1iZXIpKTsKLQot
ICAgICAgICB0aGlzLl9zaG93Q29udGVudFZpZXdGb3JJZGVudGlmaWVyKGNvb2tpZS5zdWJ2aWV3
KTsKKyAgICAgICAgdmFyIHZpZXdJZGVudGlmaWVyID0gY29va2llW1dlYkluc3BlY3Rvci5SZXNv
dXJjZUNsdXN0ZXJDb250ZW50Vmlldy5Db250ZW50Vmlld0lkZW50aWZpZXJDb29raWVLZXldOwor
ICAgICAgICB0aGlzLl9zaG93Q29udGVudFZpZXdGb3JJZGVudGlmaWVyKHZpZXdJZGVudGlmaWVy
KTsKICAgICB9LAogCiAgICAgc2hvd1JlcXVlc3Q6IGZ1bmN0aW9uKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1NjcmlwdC5qcyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1NjcmlwdC5qcwppbmRleCA2M2Y0MDFkNGM4MmM3NGY0
YjcxNTc3MDcwOWUzNGE5ZDEzMzU1NjBkLi40NmYxZGRiY2VlMGFmNzI1ZTk2YjY5ZTE3N2JjMjY1
MmFjMzZjOGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9TY3JpcHQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvU2Ny
aXB0LmpzCkBAIC00Myw2ICs0MywxMCBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0ID0gZnVuY3Rpb24o
aWQsIHJhbmdlLCB1cmwsIGluamVjdGVkLCBzb3VyY2VNYXBVUkwpCiAgICAgICAgIFdlYkluc3Bl
Y3Rvci5zb3VyY2VNYXBNYW5hZ2VyLmRvd25sb2FkU291cmNlTWFwKHNvdXJjZU1hcFVSTCwgdGhp
cy5fdXJsLCB0aGlzKTsKIH07CiAKK1dlYkluc3BlY3Rvci5TY3JpcHQuVHlwZUlkZW50aWZpZXIg
PSAic2NyaXB0IjsKK1dlYkluc3BlY3Rvci5TY3JpcHQuVVJMQ29va2llS2V5ID0gInNjcmlwdC11
cmwiOworV2ViSW5zcGVjdG9yLlNjcmlwdC5EaXNwbGF5TmFtZUNvb2tpZUtleSA9ICJzY3JpcHQt
ZGlzcGxheS1uYW1lIjsKKwogV2ViSW5zcGVjdG9yLlNjcmlwdC5yZXNldFVuaXF1ZURpc3BsYXlO
YW1lTnVtYmVycyA9IGZ1bmN0aW9uKCkKIHsKICAgICBXZWJJbnNwZWN0b3IuU2NyaXB0Ll9uZXh0
VW5pcXVlRGlzcGxheU5hbWVOdW1iZXIgPSAxOwpAQCAtMTE3LDYgKzEyMSwxMiBAQCBXZWJJbnNw
ZWN0b3IuU2NyaXB0LnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfSwK
IAorICAgIHNhdmVJZGVudGl0eVRvQ29va2llOiBmdW5jdGlvbihjb29raWUpCisgICAgeworICAg
ICAgICBjb29raWVbV2ViSW5zcGVjdG9yLlNjcmlwdC5VUkxDb29raWVLZXldID0gdGhpcy51cmw7
CisgICAgICAgIGNvb2tpZVtXZWJJbnNwZWN0b3IuU2NyaXB0LkRpc3BsYXlOYW1lQ29va2llS2V5
XSA9IHRoaXMuZGlzcGxheU5hbWU7CisgICAgfSwKKwogICAgIC8vIFByaXZhdGUKIAogICAgIF9y
ZXNvbHZlUmVzb3VyY2U6IGZ1bmN0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1N0b3JhZ2VNYW5hZ2VyLmpzIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvU3RvcmFnZU1hbmFnZXIuanMKaW5kZXggODk1ZGExMTNjNmM4NWY3
N2VmZGFmMDhmZjZiMzUwNGQ2Y2Q2NTY4NC4uZGI4M2NlMmY0ODQxNzNkNzM5NTE2NjM3NGYzZmFi
OTkzNjM4MGJmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvU3RvcmFnZU1hbmFnZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvU3RvcmFnZU1hbmFnZXIuanMKQEAgLTE0Nyw1NyArMTQ3LDYgQEAgV2ViSW5zcGVjdG9y
LlN0b3JhZ2VNYW5hZ2VyLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50
VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlN0b3JhZ2VNYW5hZ2VyLkV2ZW50LkRPTVN0b3JhZ2VP
YmplY3RXYXNJbnNwZWN0ZWQsIHtkb21TdG9yYWdlOiBkb21TdG9yYWdlfSk7CiAgICAgfSwKIAot
ICAgIG9iamVjdEZvckNvb2tpZTogZnVuY3Rpb24oY29va2llLCBtYXRjaE9uVHlwZUFsb25lKQot
ICAgIHsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoY29va2llLnR5cGUpOwotCi0gICAgICAgIHZh
ciBmaW5kTWF0Y2hpbmdPYmplY3RJbkFycmF5ID0gZnVuY3Rpb24gKGFycmF5LCBtYXRjaGVzRnVu
Y3Rpb24pIHsKLSAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyAr
K2kpCi0gICAgICAgICAgICAgICAgaWYgKG1hdGNoZXNGdW5jdGlvbi5jYWxsKG51bGwsIGFycmF5
W2ldKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFycmF5W2ldOwotCi0gICAgICAgICAg
ICByZXR1cm4gbWF0Y2hPblR5cGVBbG9uZSAmJiBhcnJheS5sZW5ndGggPyBhcnJheVswXSA6IG51
bGw7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgaWYgKGNvb2tpZS50eXBlID09PSBXZWJJbnNwZWN0
b3IuQ29udGVudFZpZXdDb29raWVUeXBlLkNvb2tpZVN0b3JhZ2UpIHsKLSAgICAgICAgICAgIGlm
ICh0aGlzLl9jb29raWVTdG9yYWdlT2JqZWN0c1tjb29raWUuaG9zdF0pCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIHRoaXMuX2Nvb2tpZVN0b3JhZ2VPYmplY3RzW2Nvb2tpZS5ob3N0XTsKLQotICAg
ICAgICAgICAgaWYgKCFtYXRjaE9uVHlwZUFsb25lKQotICAgICAgICAgICAgICAgIHJldHVybiBu
dWxsOwotCi0gICAgICAgICAgICAvLyBJZiB3ZSBqdXN0IHdhbnQgYW55IGNvb2tpZSBzdG9yYWdl
IG9iamVjdCwgdXNlIHRoZSBmaXJzdCBvbmUuCi0gICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4g
dGhpcy5fY29va2llU3RvcmFnZU9iamVjdHMpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMu
X2Nvb2tpZVN0b3JhZ2VPYmplY3RzW2tleV07Ci0KLSAgICAgICAgICAgIHJldHVybiBudWxsOwot
ICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGNvb2tpZS50eXBlID09PSBXZWJJbnNwZWN0b3IuQ29u
dGVudFZpZXdDb29raWVUeXBlLkRPTVN0b3JhZ2UpIHsKLSAgICAgICAgICAgIHJldHVybiBmaW5k
TWF0Y2hpbmdPYmplY3RJbkFycmF5KHRoaXMuX2RvbVN0b3JhZ2VPYmplY3RzLCBmdW5jdGlvbihv
YmplY3QpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gb2JqZWN0Lmhvc3QgPT09IGNvb2tpZS5o
b3N0ICYmIG9iamVjdC5pc0xvY2FsU3RvcmFnZSgpID09PSBjb29raWUuaXNMb2NhbFN0b3JhZ2U7
Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChjb29raWUudHlwZSA9
PT0gV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29va2llVHlwZS5EYXRhYmFzZSkgewotICAgICAg
ICAgICAgcmV0dXJuIGZpbmRNYXRjaGluZ09iamVjdEluQXJyYXkodGhpcy5fZGF0YWJhc2VPYmpl
Y3RzLCBmdW5jdGlvbihvYmplY3QpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gb2JqZWN0Lmhv
c3QgPT09IGNvb2tpZS5ob3N0ICYmIG9iamVjdC5uYW1lID09PSBjb29raWUubmFtZTsKLSAgICAg
ICAgICAgIH0pOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gRklYTUU6IFRoaXMgaXNuJ3QgZWFz
eSB0byBpbXBsZW1lbnQgbGlrZSB0aGUgb3RoZXJzIHNpbmNlIERhdGFiYXNlVHJlZUVsZW1lbnQK
LSAgICAgICAgLy8gY3JlYXRlcyBkYXRhYmFzZSB0YWJsZSBvYmplY3RzLCBhbmQgdGhleSBhcmVu
J3Qga25vd24gYnkgU3RvcmFnZU1hbmFnZXIuIEp1c3QKLSAgICAgICAgLy8gZGlzcGxheSB0aGUg
ZGF0YWJhc2UgaW5zdGVhZC4KLSAgICAgICAgaWYgKGNvb2tpZS50eXBlID09PSBXZWJJbnNwZWN0
b3IuQ29udGVudFZpZXdDb29raWVUeXBlLkRhdGFiYXNlVGFibGUpIHsKLSAgICAgICAgICAgIHJl
dHVybiBmaW5kTWF0Y2hpbmdPYmplY3RJbkFycmF5KHRoaXMuX2RhdGFiYXNlT2JqZWN0cywgZnVu
Y3Rpb24ob2JqZWN0KSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG9iamVjdC5ob3N0ID09PSBj
b29raWUuaG9zdCAmJiBvYmplY3QuZGF0YWJhc2UgPT09IGNvb2tpZS5uYW1lOwotICAgICAgICAg
ICAgfSk7Ci0gICAgICAgIH0KLQotICAgICAgICBjb25zb2xlLmFzc2VydCgiVW5rbm93biBjb250
ZW50IHZpZXcgY29va2llOiAiLCBjb29raWUpOwotICAgICAgICByZXR1cm4gbnVsbDsKLSAgICB9
LAotCiAgICAgLy8gUHJpdmF0ZQogCiAgICAgX21haW5SZXNvdXJjZURpZENoYW5nZTogZnVuY3Rp
b24oZXZlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9UaW1lbGluZU1hbmFnZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9UaW1lbGluZU1hbmFnZXIuanMKaW5kZXggYTFhZDQ2ZTQ4YjBhNWY1NzE4ZTkyZTJhMGIwZDQx
M2Q4MjVlZDY4Yi4uYzVmYjhkNmZiNmFmZjgyZmY1ZDY5OTlhNTQ1MTY5NjE0NDBjOTZmNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGltZWxpbmVNYW5h
Z2VyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1RpbWVsaW5l
TWFuYWdlci5qcwpAQCAtMjk5LDExICsyOTksNiBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVNYW5h
Z2VyLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX2xvYWRFdmVudFRpbWUgPSB0aW1l
c3RhbXA7CiAgICAgfSwKIAotICAgIG9iamVjdEZvckNvb2tpZTogZnVuY3Rpb24oY29va2llKQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMudGltZWxpbmVzOwotICAgIH0sCi0KICAgICAvLyBQ
cml2YXRlCiAKICAgICBfY2xlYXI6IGZ1bmN0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1RpbWVsaW5lc0NvbnRlbnRWaWV3LmpzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGltZWxpbmVzQ29udGVudFZpZXcuanMKaW5k
ZXggMTk4NGFlMzcxZjg1Mzg0OGZjMDA0MGFkYzM0NjUxZTgyZWQwNmQxNi4uNWQ1ZDNiOTFlNjUx
MGEyYTBmNTVkNzkyMjIxZTFkZDBiNDZmOTlmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVGltZWxpbmVzQ29udGVudFZpZXcuanMKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGltZWxpbmVzQ29udGVudFZpZXcuanMKQEAg
LTIwOSw2ICsyMDksOCBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVzQ29udGVudFZpZXcuQ29sbGFw
c2VCdXR0b24uU3RhdGVzID0ge307CiBXZWJJbnNwZWN0b3IuVGltZWxpbmVzQ29udGVudFZpZXcu
Q29sbGFwc2VCdXR0b24uU3RhdGVzLk5vcm1hbCA9ICJub3JtYWwiOwogV2ViSW5zcGVjdG9yLlRp
bWVsaW5lc0NvbnRlbnRWaWV3LkNvbGxhcHNlQnV0dG9uLlN0YXRlcy5BY3RpdmUgPSAiYWN0aXZl
IjsKIAorV2ViSW5zcGVjdG9yLlRpbWVsaW5lc0NvbnRlbnRWaWV3LlNlbGVjdGVkVGltZWxpbmVD
b29raWVLZXkgPSAidGltZWxpbmVzLWNvbnRlbnQtdmlldy1zZWxlY3RlZC10aW1lbGluZSI7CisK
IFdlYkluc3BlY3Rvci5UaW1lbGluZXNDb250ZW50Vmlldy5nZW5lcmF0ZUVtYm9zc2VkQ29sbGFw
c2VJbWFnZXMgPSBmdW5jdGlvbigpCiB7CiAgICAgaWYgKFdlYkluc3BlY3Rvci5UaW1lbGluZXND
b250ZW50Vmlldy5fZ2VuZXJhdGVkSW1hZ2VzKQpAQCAtMzM3LDEzICszMzksMTMgQEAgV2ViSW5z
cGVjdG9yLlRpbWVsaW5lc0NvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKIAogICAgIHNhdmVUb0Nv
b2tpZTogZnVuY3Rpb24oY29va2llKQogICAgIHsKLSAgICAgICAgY29va2llLnR5cGUgPSBXZWJJ
bnNwZWN0b3IuQ29udGVudFZpZXdDb29raWVUeXBlLlRpbWVsaW5lczsKLSAgICAgICAgY29va2ll
LnRpbWVsaW5lID0gdGhpcy5fY3VycmVudFJlY29yZFR5cGVTZXR0aW5nLnZhbHVlOworICAgICAg
ICBjb29raWVbV2ViSW5zcGVjdG9yLlRpbWVsaW5lc0NvbnRlbnRWaWV3LlNlbGVjdGVkVGltZWxp
bmVDb29raWVLZXldID0gdGhpcy5fY3VycmVudFJlY29yZFR5cGVTZXR0aW5nLnZhbHVlOwogICAg
IH0sCiAKICAgICByZXN0b3JlRnJvbUNvb2tpZTogZnVuY3Rpb24oY29va2llKQogICAgIHsKLSAg
ICAgICAgdGhpcy5zaG93VGltZWxpbmVGb3JSZWNvcmRUeXBlKGNvb2tpZS50aW1lbGluZSk7Cisg
ICAgICAgIHZhciB0aW1lbGluZSA9IGNvb2tpZVtXZWJJbnNwZWN0b3IuVGltZWxpbmVzQ29udGVu
dFZpZXcuU2VsZWN0ZWRUaW1lbGluZUNvb2tpZUtleV07CisgICAgICAgIHRoaXMuc2hvd1RpbWVs
aW5lRm9yUmVjb3JkVHlwZSh0aW1lbGluZSk7CiAgICAgfSwKIAogICAgIHRpbWVsaW5lT3ZlcnZp
ZXdSZWNvcmRzV2l0aFR5cGU6IGZ1bmN0aW9uKHR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UcmVlT3V0bGluZS5qcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1RyZWVPdXRsaW5lLmpzCmluZGV4IDA0OGNkNWIwMzI4OWVm
ZTJhNjk3MTYyNzFkYjJjMzAzYjBhOWQ0ODUuLjA3ZWU5ZWU5YTkzNWE0Y2YxODA4MWQ3MmM5ODJh
NjBmZGZjMDU4YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1RyZWVPdXRsaW5lLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1RyZWVPdXRsaW5lLmpzCkBAIC01Nyw2ICs1Nyw3IEBAIGZ1bmN0aW9uIFRyZWVPdXRsaW5l
KGxpc3ROb2RlKQogfQogCiBUcmVlT3V0bGluZS5fa25vd25UcmVlRWxlbWVudE5leHRJZGVudGlm
aWVyID0gMTsKK1RyZWVPdXRsaW5lLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFRyZWVPdXRsaW5l
OwogCiBUcmVlT3V0bGluZS5wcm90b3R5cGUuYXBwZW5kQ2hpbGQgPSBmdW5jdGlvbihjaGlsZCkK
IHsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>218304</attachid>
            <date>2013-12-03 10:30:09 -0800</date>
            <delta_ts>2013-12-03 11:48:21 -0800</delta_ts>
            <desc>v3</desc>
            <filename>bug-122125-20131203103008.patch</filename>
            <type>text/plain</type>
            <size>55824</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU5OTgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCAy
NmMyYjg0ZWE3NzM2NGZhZWM2NGZhZjA4MzYwMjVhNzU1N2Y5YzdmLi4yNDljMjNlM2NlNThiYTM2
N2Y3ZjlhYmVjZjhhMTFmOTBmNjg5NDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNjUgQEAKKzIwMTMtMTItMDIgIEJyaWFuIEouIEJ1cmcgIDxidXJnQGNzLndhc2hpbmd0
b24uZWR1PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IHJlc3RvcmUgbmF2aWdhdGlvbiBwYW5l
bCBzdGF0ZSBhY3Jvc3MgcmVsb2FkcyBhbmQgcmVvcGVucworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIyMTI1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIHByZXZpb3VzIHN0cmF0ZWd5IGZvciByZXN0
b3JpbmcgY29udGVudCB2aWV3cyBhZnRlciBpbnNwZWN0b3IKKyAgICAgICAgcmUtb3BlbiBkaWQg
bm90IGNvbnNpZGVyIHRoZSBhY3RpdmUgc2lkZWJhciBhbmQgaXRzIHNlbGVjdGlvbiwgYW5kCisg
ICAgICAgIHRyaWVkIHRvIHJlY3JlYXRlIHRoZSBhcHByb3ByaWF0ZSBzZWxlY3Rpb24gZnJvbSB0
aGUgc2F2ZWQgY29udGVudAorICAgICAgICB2aWV3LiBIb3dldmVyLCBkb2Vzbid0IHdvcmsgZm9y
IHRyZWUgZWxlbWVudHMgaW4gdGhlIHNpZGViYXIgcGFuZWwKKyAgICAgICAgdGhhdCBkb24ndCBj
aGFuZ2Ugdmlld3Mgd2hlbiBzZWxlY3RlZCwgc3VjaCBhcyBzY3JpcHQgYnJlYWtwb2ludHMsCisg
ICAgICAgIHNwZWNpYWwgYnJlYWtwb2ludHMsIGNhbGwgc3RhY2ssIHRpbWVsaW5lIHNlY3Rpb25z
LCBldGMuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIGEgbmV3IHN0cmF0ZWd5IHRo
YXQgc2F2ZXMgdGhlIG5hdmlnYXRpb24KKyAgICAgICAgc2lkZWJhciBwYW5lbCdzIHZpZXcgc3Rh
dGUgYnkgc2VyaWFsaXppbmcgdGhlIGlkZW50aXR5IG9mIHRoZQorICAgICAgICBzZWxlY3RlZCBl
bGVtZW50J3MgcmVwcmVzZW50ZWQgb2JqZWN0LiBSZWxldmFudCByZXByZXNlbnRlZAorICAgICAg
ICBvYmplY3QgY2xhc3NlcyBpbXBsZW1lbnQgdGhlIHNhdmVJZGVudGl0eVRvQ29va2llKCkgbWV0
aG9kLiBFYWNoCisgICAgICAgIHJlcHJlc2VudGVkIG9iamVjdCBjbGFzcyBhbHNvIGFkZHMgYSBU
eXBlSWRlbnRpZmllciBwcm9wZXJ0eSB0bworICAgICAgICBpdHMgY29uc3RydWN0b3IsIHRvIGFp
ZCBpbmV4YWN0IG1hdGNoaW5nIGJhc2VkIG9uIHJlcHJlc2VudGVkCisgICAgICAgIG9iamVjdCB0
eXBlLCByYXRoZXIgdGhhbiBpdHMgY29tcGxldGUgaWRlbnRpdHkuCisKKyAgICAgICAgV2hlbiBy
ZXN0b3JpbmcsIHRoZSBuYXZpZ2F0aW9uIHNpZGViYXIgYXR0ZW1wdHMgdG8gbWF0Y2ggYWRkZWQK
KyAgICAgICAgdHJlZSBlbGVtZW50cyBhZ2FpbnN0IHRoZSBwZW5kaW5nIGNvb2tpZSwgYW5kIHNl
bGVjdHMgdGhlIGVsZW1lbnQKKyAgICAgICAgaWYgaXQgbWF0Y2hlcy4gQSByZXByZXNlbnRlZCBv
YmplY3QgbWF0Y2hlcyBpZiBpdHMgc2VyaWFsaXplZAorICAgICAgICBpZGVudGl0eSBtYXRjaGVz
IHRoZSBwcmV2aW91c2x5IHNhdmVkIHNlcmlhbGl6ZWQgaWRlbnRpdHkuCisKKyAgICAgICAgVGhl
IGluc3BlY3RvciB2aWV3IHN0YXRlIGlzIG5vdyBvbmx5IHNhdmVkIG9uIHRoZSBwYWdlIGhpZGUg
ZXZlbnQKKyAgICAgICAgKGZvciBzYXZpbmcgYWNyb3NzIHJlb3BlbikgYW5kIHdoZW4gdGhlIG1h
aW4gZnJhbWUgY29tbWl0cyBpdHMKKyAgICAgICAgcHJvdmlzaW9uYWwgbG9hZCAoZm9yIHNhdmlu
ZyBhY3Jvc3Mgc2FtZS1wYWdlIHJlbG9hZHMpLiBJdAorICAgICAgICBjb25zb2xpZGF0ZXMgc2lt
aWxhciB2aWV3IHN0YXRlIHNldHRpbmdzIGludG8gYSBzaW5nbGUgc2V0dGluZy4KKworICAgICAg
ICAqIFVzZXJJbnRlcmZhY2UvQXBwbGljYXRpb25DYWNoZUZyYW1lLmpzOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVGcmFtZSk6IEFkZCBjb29raWUga2V5cyBhbmQgdHlw
ZSBpZGVudGlmaWVyLgorICAgICAgICAoV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVGcmFt
ZS5wcm90b3R5cGUuc2F2ZUlkZW50aXR5VG9Db29raWUpOiBBZGRlZC4KKyAgICAgICAgKiBVc2Vy
SW50ZXJmYWNlL0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmpzOiByZW1vdmUgb2JqZWN0Rm9yQ29v
a2llKCkuCisgICAgICAgICogVXNlckludGVyZmFjZS9CcmVha3BvaW50LmpzOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQpOiBBZGQgY29va2llIGtleXMgYW5kIHR5cGUgaWRlbnRp
Zmllci4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5CcmVha3BvaW50LnByb3RvdHlwZS5zYXZlSWRl
bnRpdHlUb0Nvb2tpZSk6CisgICAgICAgICogVXNlckludGVyZmFjZS9Db29raWVTdG9yYWdlT2Jq
ZWN0LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvb2tpZVN0b3JhZ2VPYmplY3QucHJvdG90
eXBlLnNhdmVJZGVudGl0eVRvQ29va2llKTogQWRkZWQuCisgICAgICAgICogVXNlckludGVyZmFj
ZS9ET01TdG9yYWdlT2JqZWN0LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VP
YmplY3QpOiBBZGQgY29va2llIGtleXMgYW5kIHR5cGUgaWRlbnRpZmllci4KKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5ET01TdG9yYWdlT2JqZWN0LnByb3RvdHlwZS5zYXZlSWRlbnRpdHlUb0Nvb2tp
ZSk6IEFkZGVkLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvRGF0YWJhc2VPYmplY3QuanM6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuRGF0YWJhc2VPYmplY3QpOiBBZGQgY29va2llIGtleXMgYW5k
IHR5cGUgaWRlbnRpZmllci4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXRhYmFzZU9iamVjdC5w
cm90b3R5cGUuc2F2ZUlkZW50aXR5VG9Db29raWUpOiBBZGRlZC4KKyAgICAgICAgKiBVc2VySW50
ZXJmYWNlL0RhdGFiYXNlVGFibGVPYmplY3QuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGF0
YWJhc2VUYWJsZU9iamVjdCk6IEFkZCBjb29raWUga2V5cyBhbmQgdHlwZSBpZGVudGlmaWVyLgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkRhdGFiYXNlVGFibGVPYmplY3QucHJvdG90eXBlLnNhdmVJ
ZGVudGl0eVRvQ29va2llKTogQWRkZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9EZWJ1Z2dl
clNpZGViYXJQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclNpZGViYXJQ
YW5lbC5wcm90b3R5cGUuc2F2ZVN0YXRlVG9Db29raWUpOiBBZGRlZC4KKyAgICAgICAgKFdlYklu
c3BlY3Rvci5EZWJ1Z2dlclNpZGViYXJQYW5lbC5wcm90b3R5cGUucmVzdG9yZVN0YXRlRnJvbUNv
b2tpZSk6IEFkZGVkLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvRnJhbWUuanM6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuRnJhbWUpOiBBZGQgY29va2llIGtleXMgYW5kIHR5cGUgaWRlbnRpZmll
ci4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5GcmFtZS5wcm90b3R5cGUuc2F2ZUlkZW50aXR5VG9D
b29raWUpOiBBZGRlZC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0ZyYW1lUmVzb3VyY2VNYW5h
Z2VyLmpzOiByZW1vdmUgb2JqZWN0Rm9yQ29va2llKCkuCisgICAgICAgICogVXNlckludGVyZmFj
ZS9JbnN0cnVtZW50U2lkZWJhclBhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkluc3Ry
dW1lbnRTaWRlYmFyUGFuZWwucHJvdG90eXBlLnNob3dUaW1lbGluZUZvclJlY29yZFR5cGUpOgor
ICAgICAgICBSZXR1cm4gdGhlIHNob3duIHRpbWVsaW5lLCBpZiBhbnkuCisKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5JbnN0cnVtZW50U2lkZWJhclBhbmVsLnByb3RvdHlwZS5zYXZlU3RhdGVUb0Nv
b2tpZSk6IEFkZGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLkluc3RydW1lbnRTaWRlYmFyUGFu
ZWwucHJvdG90eXBlLnJlc3RvcmVTdGF0ZUZyb21Db29raWUpOiBBZGRlZC4KKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5JbnN0cnVtZW50U2lkZWJhclBhbmVsLnByb3RvdHlwZS5zaG93UHJvZmlsZSk6
CisgICAgICAgIFJldHVybiB0aGUgc2hvd24gcHJvZmlsZSwgaWYgYW55LgorCisgICAgICAgICog
VXNlckludGVyZmFjZS9NYWluLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yKTogQWRkZWQgY29v
a2llIGtleXMgZm9yIHRoZSBzZWxlY3RlZCBzaWRlYmFyIGFuZAorICAgICAgICB0eXBlaWRlbnRp
ZmllciBvZiB0aGUgc2lkZWJhcidzIHNlbGVjdGVkIHRyZWUgZWxlbWVudC4KKworICAgICAgICAo
V2ViSW5zcGVjdG9yLmNvbnRlbnRMb2FkZWQpOiBSZW1vdmUgY2FsbGJhY2tzIGZvcgorICAgICAg
ICByZXNvbHZlQW5kU2hvd1BlbmRpbmdDb250ZW50Vmlld0Nvb2tpZSgpLiBDb25zb2xpZGF0ZSBh
bGwgc2F2ZWQKKyAgICAgICAgaW5zcGVjdG9yIHZpZXcgc3RhdGUgaW50byBvbmUgU2V0dGluZy4g
TW92ZSBzcGVjaWFsLWNhc2VkCisgICAgICAgIHJlc3RvcmluZyBvZiB0aGUgY29uc29sZSB0byB0
aGUgcmVzdG9yYXRpb24gbWV0aG9kLiBNb3ZlIHNhdmluZworICAgICAgICBvZiBsYXN0IG9wZW5l
ZCBuYXZpZ2F0aW9uIHBhbmVsIHRvIHRoZSBzYXZpbmcgbWV0aG9kLgorCisgICAgICAgIChXZWJJ
bnNwZWN0b3IuX21haW5SZXNvdXJjZURpZENoYW5nZSk6IFRyeSB0byByZXN0b3JlIHNhdmVkIHZp
ZXcKKyAgICAgICAgc3RhdGUgd2hlbiB0aGUgbWFpbiByZXNvdXJjZSBjaGFuZ2VzLgorCisgICAg
ICAgIChXZWJJbnNwZWN0b3IuX3Byb3Zpc2lvbmFsTG9hZENvbW1pdHRlZCk6IFVwZGF0ZSB0aGUg
c2F2ZWQgdmlldworICAgICAgICBzdGF0ZSB3aGVuIHRoZSBuYXZpZ2F0aW9uIGNvbW1pdHMuIFRo
aXMgaXMgdGhlIGxhc3QgY2hhbmNlIHRvIHNhdmUKKyAgICAgICAgaXQgYmVmb3JlIHRoZSBtYWlu
IHJlc291cmNlIGNoYW5nZXMgYW5kIHRoZSBuYXZpZ2F0aW9uIHBhbmVsIHZpZXcKKyAgICAgICAg
c3RhdGUgaXMgZGlzY2FyZGVkIGFuZCByZWJ1aWx0LgorCisgICAgICAgIChXZWJJbnNwZWN0b3Iu
X3BhZ2VIaWRkZW4pOiBVcGRhdGUgdGhlIHNhdmVkIHZpZXcgc3RhdGUgd2hlbiB0aGUKKyAgICAg
ICAgaW5zcGVjdG9yIHBhZ2UgaXMgaGlkZGVuLCBidXQgYmVmb3JlIHN0YXRlIGlzIGRpc2NhcmRl
ZC4KKworICAgICAgICAoV2ViSW5zcGVjdG9yLl9uYXZpZ2F0aW9uU2lkZWJhclBhbmVsU2VsZWN0
ZWQpOiBEb24ndCBzYXZlIGxhc3QKKyAgICAgICAgbmF2aWdhdGlvbiBzaWRlYmFyIHBhbmVsLgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLl91cGRhdGVDb29raWVGb3JJbnNwZWN0b3JWaWV3U3RhdGUp
OiBSZW5hbWVkIGZyb20KKyAgICAgICAgX3VwZGF0ZUN1cnJlbnRDb250ZW50Vmlld0Nvb2tpZS4g
SXQgZGVsZWdhdGVzIHZpZXcgc3RhdGUKKyAgICAgICAgc2VyaWFsaXphdGlvbiB0byB0aGUgY3Vy
cmVudGx5IG9wZW4gbmF2aWdhdGlvbiBzaWRlYmFyLCByYXRoZXIKKyAgICAgICAgdGhhbiB0aGUg
Y3VycmVudCBjb250ZW50IHZpZXcuCisKKyAgICAgICAgKFdlYkluc3BlY3Rvci5fY29udGVudEJy
b3dzZXJSZXByZXNlbnRlZE9iamVjdHNEaWRDaGFuZ2UpOiBEb24ndAorICAgICAgICBzcHVyaW91
c2x5IHNlcmlhbGl6ZSB0aGUgY3VycmVudCB2aWV3IHN0YXRlIGNvb2tpZSBvbiBldmVyeQorICAg
ICAgICBDb250ZW50VmlldyBjaGFuZ2UuCisKKyAgICAgICAgKFdlYkluc3BlY3Rvci5fcmVzdG9y
ZUluc3BlY3RvclZpZXdTdGF0ZUZyb21Db29raWUpOiBSZW5hbWVkIGZyb20KKyAgICAgICAgX3No
b3dDb250ZW50Vmlld0ZvckNvb2tpZS4gSXQgbm93IHJlc3RvcmVzIGEgc3BlY2lmaWMgbmF2aWdh
dGlvbgorICAgICAgICBwYW5lbCBhbmQgZGVsZWdhdGVzIHJlbWFpbmluZyB2aWV3IHN0YXRlIHJl
c3RvcmF0aW9uIHRvIHRoZSBwYW5lbAorICAgICAgICBpdHNlbGYuIExhc3QtcmVzb3J0IHNlbGVj
dGlvbiBvZiBhbnkgdHJlZSBlbGVtZW50IHdpdGggdGhlIHNhbWUKKyAgICAgICAgdHlwZSBpZGVu
dGlmaWVyIHdhcyBtb3ZlZCB0byB0aGUgbmF2aWdhdGlvbiBwYW5lbCdzIHJlc3RvcmUgbWV0aG9k
LgorCisgICAgICAgICogVXNlckludGVyZmFjZS9OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLmpzOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwucHJvdG90eXBlLnNldCBjb250ZW50
VHJlZU91dGxpbmUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFu
ZWwucHJvdG90eXBlLmNyZWF0ZUNvbnRlbnRUcmVlT3V0bGluZSk6CisgICAgICAgIFNhdmUgcmVm
ZXJlbmNlcyB0byBhbGwgY3JlYXRlZCBUcmVlT3V0bGluZXMgaW4gYSBTZXQsIHNvIHdlIGNhbgor
ICAgICAgICByZXN0b3JlIGFueSB0cmVlJ3Mgc2VsZWN0aW9uLgorCisgICAgICAgIChXZWJJbnNw
ZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQYW5lbC5wcm90b3R5cGUuc2F2ZVN0YXRlVG9Db29raWUp
OgorICAgICAgICBBZGRlZC4gRmluZCB0aGUgc2VsZWN0ZWQgdHJlZSBlbGVtZW50IGZyb20gYWxs
IHRyZWUgb3V0bGluZXMgYW5kCisgICAgICAgIGFzayBpdCB0byBzZXJpYWxpemUgaXRzIGlkZW50
aXR5LgorCisgICAgICAgIChXZWJJbnNwZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQYW5lbC5wcm90
b3R5cGUucmVzdG9yZVN0YXRlRnJvbUNvb2tpZSk6CisgICAgICAgIEFkZGVkLiBFYWdlcmx5IHNl
YXJjaCBleGlzdGluZyB0cmVlIGVsZW1lbnRzIGZvciBhIG1hdGNoaW5nCisgICAgICAgIHJlcHJl
c2VudGVkT2JqZWN0LiBJZiBub25lIGV4aXN0cywgc2F2ZSB0aGUgcGVuZGluZyBjb29raWUgYW5k
CisgICAgICAgIHNjaGVkdWxlIGxhc3QtcmVzb3J0IG1hdGNoaW5nIHVzaW5nIHRoZSBwcm92aWRl
ZCB0aW1lb3V0IGludGVydmFsLgorCisgICAgICAgIChXZWJJbnNwZWN0b3IuTmF2aWdhdGlvblNp
ZGViYXJQYW5lbC5wcm90b3R5cGUuX3RyZWVFbGVtZW50QWRkZWRPckNoYW5nZWQpOgorICAgICAg
ICBDaGVjayBpZiB0aGUgYWRkZWQgdHJlZSBlbGVtZW50IG1hdGNoZXMgYSBwZW5kaW5nIHZpZXcg
c3RhdGUKKyAgICAgICAgY29va2llLCBpZiBvbmUgZXhpc3RzLgorCisgICAgICAgIChXZWJJbnNw
ZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQYW5lbC5wcm90b3R5cGUudHJlZUVsZW1lbnRNYXRjaGVz
Q29va2llKToKKyAgICAgICAgQWRkZWQuIENoZWNrIGlmIHRoZSB0cmVlIGVsZW1lbnQncyByZXBy
ZXNlbnRlZE9iamVjdCBtYXRjaGVzIHRoZQorICAgICAgICBwZW5kaW5nIHZpZXcgc3RhdGUgY29v
a2llLgorCisgICAgICAgIChXZWJJbnNwZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQYW5lbC5wcm90
b3R5cGUuX2NoZWNrRWxlbWVudHNGb3JQZW5kaW5nVmlld1N0YXRlQ29va2llKToKKyAgICAgICAg
QWRkZWQuIEZvciBlYWNoIHByb3ZpZGVkIHRyZWUgZWxlbWVudCwgY2hlY2sgaWYgdGhlIHRyZWUK
KyAgICAgICAgZWxlbWVudCdzIHJlcHJlc2VudGVkIG9iamVjdCBwcm9kdWNlcyB0aGUgc2FtZSBz
ZXJpYWxpemVkIGlkZW50aXR5CisgICAgICAgIGFzIHRoZSBwZW5kaW5nIHZpZXcgc3RhdGUgY29v
a2llIHRoYXQgd2UgYXJlIHRyeWluZyB0byByZXNvbHZlLgorICAgICAgICBJZiBhIG1hdGNoIGlz
IGZvdW5kIChwb3NzaWJseSBieSByZWxheGluZyB0byBtYXRjaGluZyBhbnl0aGluZworICAgICAg
ICB3aXRoIHRoZSBzYW1lIHR5cGUpLCBzZWxlY3QgdGhlIHRyZWUgZWxlbWVudCBhbmQgY2xlYXIg
Ym90aCB0aGUKKyAgICAgICAgcGVuZGluZyB2aWV3IHN0YXRlIGNvb2tpZSBhbmQgbGFzdC1yZXNv
cnQgc2VsZWN0aW9uIHRpbWVyLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9SZXNvdXJjZS5q
czoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZSk6IEFkZCBjb29raWUga2V5cyBhbmQg
dHlwZSBpZGVudGlmaWVyLgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlLnByb3RvdHlw
ZS5zYXZlSWRlbnRpdHlUb0Nvb2tpZSk6IEFkZGVkLgorCisgICAgICAgICogVXNlckludGVyZmFj
ZS9SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5S
ZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5wcm90b3R5cGUuc2F2ZVRvQ29va2llKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5wcm90b3R5cGUucmVz
dG9yZUZyb21Db29raWUpOgorICAgICAgICBTaW5jZSBpZGVudGl0eSBzdGF0ZSBpcyBzZXJpYWxp
emVkIGJ5IHRoZSByZXByZXNlbnRlZE9iamVjdCwgdGhlc2UKKyAgICAgICAgbWV0aG9kcyBvbmx5
IG5lZWQgdG8gc2F2ZSB2aWV3LXNwZWNpZmljIHN0YXRlLCBzdWNoIGFzIHRoZSB2aXNpYmxlCisg
ICAgICAgIHN1YnZpZXcuIFJlbW92ZSBleHRyYW5lb3VzIHN0YXRlLgorCisgICAgICAgICogVXNl
ckludGVyZmFjZS9TY3JpcHQuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0KTogQWRk
IGNvb2tpZSBrZXlzIGFuZCB0eXBlIGlkZW50aWZpZXIuCisgICAgICAgIChXZWJJbnNwZWN0b3Iu
U2NyaXB0LnByb3RvdHlwZS5zYXZlSWRlbnRpdHlUb0Nvb2tpZSk6IEFkZGVkLgorICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvU3RvcmFnZU1hbmFnZXIuanM6IHJlbW92ZSBvYmplY3RGb3JDb29raWUo
KS4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1RpbWVsaW5lTWFuYWdlci5qczogcmVtb3ZlIG9i
amVjdEZvckNvb2tpZSgpLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVGltZWxpbmVzQ29udGVu
dFZpZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVzQ29udGVudFZpZXcucHJv
dG90eXBlLnNhdmVUb0Nvb2tpZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVzQ29u
dGVudFZpZXcucHJvdG90eXBlLnJlc3RvcmVGcm9tQ29va2llKToKKyAgICAgICAgU2luY2UgaWRl
bnRpdHkgc3RhdGUgaXMgc2VyaWFsaXplZCBieSB0aGUgcmVwcmVzZW50ZWRPYmplY3QsIHRoZXNl
CisgICAgICAgIG1ldGhvZHMgb25seSBuZWVkIHRvIHNhdmUgdmlldy1zcGVjaWZpYyBzdGF0ZSwg
c3VjaCBhcyB0aGUgdmlzaWJsZQorICAgICAgICBzdWJ2aWV3LiBSZW1vdmUgZXh0cmFuZW91cyBz
dGF0ZS4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVHJlZU91dGxpbmUuanM6IEFkZCBUcmVl
T3V0bGluZS5wcm90b3R5cGUuY29uc3RydWN0b3IKKyAgICAgICAgc28gb3RoZXIgY29kZSBjYW4g
YXNzdW1lIHRoZSBjb25zdHJ1Y3RvciBwcm9wZXJ0eSBleGlzdHMuCisKIDIwMTMtMTItMDIgIEFu
dG9pbmUgUXVpbnQgIDxncmFvdXRzQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9y
OiBwb3BvdmVyIGNhbiBvdmVybGFwIHRhcmdldCBmcmFtZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQXBwbGljYXRpb25DYWNoZUZyYW1lLmpzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQXBwbGljYXRpb25DYWNoZUZyYW1lLmpz
CmluZGV4IDg0ZjUwNmFjMzY5NzdmYjNiNGJhZTU1YjY3ZGRlN2NjYzE3MzljNzIuLjRkNzU4NzVj
ZDU2NDdkMDdjNGZjMDg1NmVjZTJjY2Y5MTE2NDk3ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0FwcGxpY2F0aW9uQ2FjaGVGcmFtZS5qcworKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9BcHBsaWNhdGlvbkNhY2hlRnJhbWUu
anMKQEAgLTM1LDkgKzM1LDE1IEBAIFdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlRnJhbWUg
PSBmdW5jdGlvbihmcmFtZSwgbWFuaWZlc3QsIHN0YXR1cykKICAgICB0aGlzLl9zdGF0dXMgPSBz
dGF0dXM7CiB9OwogCitXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZUZyYW1lLlR5cGVJZGVu
dGlmaWVyID0gImFwcGxpY2F0aW9uLWNhY2hlLWZyYW1lIjsKK1dlYkluc3BlY3Rvci5BcHBsaWNh
dGlvbkNhY2hlRnJhbWUuRnJhbWVVUkxDb29raWVLZXkgPSAiYXBwbGljYXRpb24tY2FjaGUtZnJh
bWUtdXJsIjsKK1dlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlRnJhbWUuTWFuaWZlc3RVUkxD
b29raWVLZXkgPSAiYXBwbGljYXRpb24tY2FjaGUtZnJhbWUtbWFuaWZlc3QtdXJsIjsKKwogV2Vi
SW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVGcmFtZS5wcm90b3R5cGUgPSB7CiAgICAgY29uc3Ry
dWN0b3I6IFdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlRnJhbWUsCiAgICAgCisgICAgLy8g
UHVibGljCisKICAgICBnZXQgZnJhbWUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2Zy
YW1lOwpAQCAtNTYsNiArNjIsMTIgQEAgV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVGcmFt
ZS5wcm90b3R5cGUgPSB7CiAgICAgc2V0IHN0YXR1cyhzdGF0dXMpCiAgICAgewogICAgICAgICB0
aGlzLl9zdGF0dXMgPSBzdGF0dXM7CisgICAgfSwKKworICAgIHNhdmVJZGVudGl0eVRvQ29va2ll
OiBmdW5jdGlvbihjb29raWUpCisgICAgeworICAgICAgICBjb29raWVbV2ViSW5zcGVjdG9yLkFw
cGxpY2F0aW9uQ2FjaGVGcmFtZS5GcmFtZVVSTENvb2tpZUtleV0gPSB0aGlzLmZyYW1lLnVybDsK
KyAgICAgICAgY29va2llW1dlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlRnJhbWUuTWFuaWZl
c3RVUkxDb29raWVLZXldID0gdGhpcy5tYW5pZmVzdC5tYW5pZmVzdFVSTDsKICAgICB9CiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9BcHBsaWNh
dGlvbkNhY2hlTWFuYWdlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmpzCmluZGV4IGM1NTU4NmM3Yzg3NDE5ZDY0ZDJiNTU3
ZDEzOThjNWRmNWVmZWI5Y2EuLjZiYWEzNDNhYWZjZmMwYjQ3YjQxNzU2YWNmOTEyNmEzNTMxN2E0
NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0FwcGxp
Y2F0aW9uQ2FjaGVNYW5hZ2VyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmpzCkBAIC0xMDIsMTkgKzEwMiw2IEBAIFdl
Ykluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5wcm90b3R5cGUgPSB7CiAgICAgICAg
IEFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5nZXRBcHBsaWNhdGlvbkNhY2hlRm9yRnJhbWUoZnJhbWUu
aWQsIGNhbGxiYWNrV3JhcHBlcik7CiAgICAgfSwKIAotICAgIG9iamVjdEZvckNvb2tpZTogZnVu
Y3Rpb24oY29va2llLCBtYXRjaE9uVHlwZUFsb25lKQotICAgIHsKLSAgICAgICAgY29uc29sZS5h
c3NlcnQoY29va2llLnR5cGUgJiYgY29va2llLnR5cGUgPT09IFdlYkluc3BlY3Rvci5Db250ZW50
Vmlld0Nvb2tpZVR5cGUuQXBwbGljYXRpb25DYWNoZSk7Ci0KLSAgICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCB0aGlzLl9hcHBsaWNhdGlvbkNhY2hlT2JqZWN0cy5sZW5ndGg7ICsraSkgewotICAg
ICAgICAgICAgdmFyIG9iamVjdCA9IHRoaXMuX2FwcGxpY2F0aW9uQ2FjaGVPYmplY3RzW2ldOwot
ICAgICAgICAgICAgaWYgKG9iamVjdC5mcmFtZS51cmwgPT09IGNvb2tpZS5mcmFtZSAmJiBvYmpl
Y3QubWFuaWZlc3QubWFuaWZlc3RVUkwgPT09IGNvb2tpZS5tYW5pZmVzdCkKLSAgICAgICAgICAg
ICAgICByZXR1cm4gb2JqZWN0OwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIG1hdGNoT25U
eXBlQWxvbmUgJiYgdGhpcy5fYXBwbGljYXRpb25DYWNoZU9iamVjdHMubGVuZ3RoID8gdGhpcy5f
YXBwbGljYXRpb25DYWNoZU9iamVjdHNbMF0gOiBudWxsOwotICAgIH0sCi0KICAgICAvLyBQcml2
YXRlCiAKICAgICBfbWFpblJlc291cmNlRGlkQ2hhbmdlOiBmdW5jdGlvbihldmVudCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0JyZWFrcG9pbnQuanMg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CcmVha3BvaW50LmpzCmluZGV4
IDk3NWI4MjYzZTc4YzRhNzJlZTU0NTdmY2VkZTk2YzA1OGQyYTgwYTkuLmEyYTA4MTkzZTU2MzJk
MDliZDRiNTZlNWRkMGQ2NDQ1NTIwNjlhYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL0JyZWFrcG9pbnQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvQnJlYWtwb2ludC5qcwpAQCAtNjksNiArNjksMTEgQEAgV2ViSW5z
cGVjdG9yLkJyZWFrcG9pbnQuUG9wb3Zlck9wdGlvbnNBdXRvQ29udGludWVJbnB1dElkID0gImVk
aXQtYnJlYWtwb2ludC1wb3AKIAogV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQuRGVmYXVsdEJyZWFr
cG9pbnRBY3Rpb25UeXBlID0gV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRBY3Rpb24uVHlwZS5Mb2c7
CiAKK1dlYkluc3BlY3Rvci5CcmVha3BvaW50LlR5cGVJZGVudGlmaWVyID0gImJyZWFrcG9pbnQi
OworV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQuVVJMQ29va2llS2V5ID0gImJyZWFrcG9pbnQtdXJs
IjsKK1dlYkluc3BlY3Rvci5CcmVha3BvaW50LkxpbmVOdW1iZXJDb29raWVLZXkgPSAiYnJlYWtw
b2ludC1saW5lLW51bWJlciI7CitXZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5Db2x1bW5OdW1iZXJD
b29raWVLZXkgPSAiYnJlYWtwb2ludC1jb2x1bW4tbnVtYmVyIjsKKwogV2ViSW5zcGVjdG9yLkJy
ZWFrcG9pbnQuRXZlbnQgPSB7CiAgICAgRGlzYWJsZWRTdGF0ZURpZENoYW5nZTogImJyZWFrcG9p
bnQtZGlzYWJsZWQtc3RhdGUtZGlkLWNoYW5nZSIsCiAgICAgUmVzb2x2ZWRTdGF0ZURpZENoYW5n
ZTogImJyZWFrcG9pbnQtcmVzb2x2ZWQtc3RhdGUtZGlkLWNoYW5nZSIsCkBAIC0yOTAsNiArMjk1
LDEzIEBAIFdlYkluc3BlY3Rvci5CcmVha3BvaW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhp
cy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQuRXZlbnQu
QWN0aW9uc0RpZENoYW5nZSk7CiAgICAgfSwKIAorICAgIHNhdmVJZGVudGl0eVRvQ29va2llOiBm
dW5jdGlvbihjb29raWUpCisgICAgeworICAgICAgICBjb29raWVbV2ViSW5zcGVjdG9yLkJyZWFr
cG9pbnQuVVJMQ29va2llS2V5XSA9IHRoaXMudXJsOworICAgICAgICBjb29raWVbV2ViSW5zcGVj
dG9yLkJyZWFrcG9pbnQuTGluZU51bWJlckNvb2tpZUtleV0gPSB0aGlzLnNvdXJjZUNvZGVMb2Nh
dGlvbi5saW5lTnVtYmVyOworICAgICAgICBjb29raWVbV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQu
Q29sdW1uTnVtYmVyQ29va2llS2V5XSA9IHRoaXMuc291cmNlQ29kZUxvY2F0aW9uLmNvbHVtbk51
bWJlcjsKKyAgICB9LAorCiAgICAgLy8gUHJvdGVjdGVkIChDYWxsZWQgYnkgQnJlYWtwb2ludEFj
dGlvbikKIAogICAgIGJyZWFrcG9pbnRBY3Rpb25EaWRDaGFuZ2U6IGZ1bmN0aW9uKGFjdGlvbikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Nvb2tpZVN0
b3JhZ2VPYmplY3QuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db29r
aWVTdG9yYWdlT2JqZWN0LmpzCmluZGV4IDExYTNhM2MxMjY0YmU1ZDVlZmIxNmFkNzNjNTVmYjhi
MzAwODJlMDMuLmQxY2E5NmViMDg0ZjhkYzBlMDA2MzE3ZWI4NzAwYWU4YzE1NWNkOTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Nvb2tpZVN0b3JhZ2VP
YmplY3QuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29va2ll
U3RvcmFnZU9iamVjdC5qcwpAQCAtMjgsNiArMjgsOSBAQCBXZWJJbnNwZWN0b3IuQ29va2llU3Rv
cmFnZU9iamVjdCA9IGZ1bmN0aW9uKGhvc3QpCiAgICAgdGhpcy5faG9zdCA9IGhvc3Q7CiB9Owog
CitXZWJJbnNwZWN0b3IuQ29va2llU3RvcmFnZU9iamVjdC5UeXBlSWRlbnRpZmllciA9ICJjb29r
aWUtc3RvcmFnZSI7CitXZWJJbnNwZWN0b3IuQ29va2llU3RvcmFnZU9iamVjdC5Db29raWVIb3N0
Q29va2llS2V5ID0gImNvb2tpZS1zdG9yYWdlLWhvc3QiOworCiBXZWJJbnNwZWN0b3IuQ29va2ll
U3RvcmFnZU9iamVjdC5wcm90b3R5cGUgPSB7CiAgICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rv
ci5Db29raWVTdG9yYWdlT2JqZWN0LAogCkBAIC0zNiw1ICszOSw5IEBAIFdlYkluc3BlY3Rvci5D
b29raWVTdG9yYWdlT2JqZWN0LnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2hv
c3Q7CiAgICAgfSwKICAgICAKKyAgICBzYXZlSWRlbnRpdHlUb0Nvb2tpZTogZnVuY3Rpb24oY29v
a2llKQorICAgIHsKKyAgICAgICAgY29va2llW1dlYkluc3BlY3Rvci5Db29raWVTdG9yYWdlT2Jq
ZWN0LkNvb2tpZUhvc3RDb29raWVLZXldID0gdGhpcy5ob3N0OworICAgIH0KICAgICAvLyBGSVhN
RTogVGhpcyBjbGFzcyB3aWxsIG5lZWQgdG8gbG9vayB1cCBjb29raWVzIHRoYXQgYXJlIHNldCBm
b3IgdGhpcyBob3N0LgogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL0RPTVN0b3JhZ2VPYmplY3QuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9ET01TdG9yYWdlT2JqZWN0LmpzCmluZGV4IDFjMzcyMGY4OTlkMDVhMDdmZDY4
YzNmZmIxMDEyZjMyMTFjNzMwMzQuLmQ2ZmQxZTA0NmQxNWRiN2ExZmFmNjk0ZTQ2OTQxMDQwMjEx
Njk1NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0RP
TVN0b3JhZ2VPYmplY3QuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvRE9NU3RvcmFnZU9iamVjdC5qcwpAQCAtMzAsNiArMzAsMTAgQEAgV2ViSW5zcGVjdG9yLkRP
TVN0b3JhZ2VPYmplY3QgPSBmdW5jdGlvbihpZCwgaG9zdCwgaXNMb2NhbFN0b3JhZ2UpCiAgICAg
dGhpcy5faXNMb2NhbFN0b3JhZ2UgPSBpc0xvY2FsU3RvcmFnZTsKIH07CiAKK1dlYkluc3BlY3Rv
ci5ET01TdG9yYWdlT2JqZWN0LlR5cGVJZGVudGlmaWVyID0gImRvbS1zdG9yYWdlIjsKK1dlYklu
c3BlY3Rvci5ET01TdG9yYWdlT2JqZWN0Lkhvc3RDb29raWVLZXkgPSAiZG9tLXN0b3JhZ2Utb2Jq
ZWN0LWhvc3QiOworV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VPYmplY3QuTG9jYWxTdG9yYWdlQ29v
a2llS2V5ID0gImRvbS1zdG9yYWdlLW9iamVjdC1sb2NhbC1zdG9yYWdlIjsKKwogV2ViSW5zcGVj
dG9yLkRPTVN0b3JhZ2VPYmplY3QucHJvdG90eXBlID0gewogICAgIGNvbnN0cnVjdG9yOiBXZWJJ
bnNwZWN0b3IuRE9NU3RvcmFnZU9iamVjdCwKICAgICAKQEAgLTQzLDYgKzQ3LDEyIEBAIFdlYklu
c3BlY3Rvci5ET01TdG9yYWdlT2JqZWN0LnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIHRo
aXMuX2hvc3Q7CiAgICAgfSwKIAorICAgIHNhdmVJZGVudGl0eVRvQ29va2llOiBmdW5jdGlvbihj
b29raWUpCisgICAgeworICAgICAgICBjb29raWVbV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VPYmpl
Y3QuSG9zdENvb2tpZUtleV0gPSB0aGlzLmhvc3Q7CisgICAgICAgIGNvb2tpZVtXZWJJbnNwZWN0
b3IuRE9NU3RvcmFnZU9iamVjdC5Mb2NhbFN0b3JhZ2VDb29raWVLZXldID0gdGhpcy5pc0xvY2Fs
U3RvcmFnZSgpOworICAgIH0sCisKICAgICBpc0xvY2FsU3RvcmFnZTogZnVuY3Rpb24oKQogICAg
IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2lzTG9jYWxTdG9yYWdlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRGF0YWJhc2VPYmplY3QuanMgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9EYXRhYmFzZU9iamVjdC5qcwppbmRleCBj
MzY5M2UzYTU1MTQyZWYxMWE4ZmU3MjZjOGJmY2FmNjMzYTRkOTYyLi4wMTgxNTk3NjdiOTdlMTZi
NTRlOTdjZTc2MTJhZjdjY2YyNDAzYTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9EYXRhYmFzZU9iamVjdC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9EYXRhYmFzZU9iamVjdC5qcwpAQCAtMzEsOSArMzEsMTUgQEAg
V2ViSW5zcGVjdG9yLkRhdGFiYXNlT2JqZWN0ID0gZnVuY3Rpb24oaWQsIGhvc3QsIG5hbWUsIHZl
cnNpb24pCiAgICAgdGhpcy5fdmVyc2lvbiA9IHZlcnNpb247CiB9OwogCitXZWJJbnNwZWN0b3Iu
RGF0YWJhc2VPYmplY3QuVHlwZUlkZW50aWZpZXIgPSAiZGF0YWJhc2UiOworV2ViSW5zcGVjdG9y
LkRhdGFiYXNlT2JqZWN0Lkhvc3RDb29raWVLZXkgPSAiZGF0YWJhc2Utb2JqZWN0LWhvc3QiOwor
V2ViSW5zcGVjdG9yLkRhdGFiYXNlT2JqZWN0Lk5hbWVDb29raWVLZXkgPSAiZGF0YWJhc2Utb2Jq
ZWN0LW5hbWUiOworCiBXZWJJbnNwZWN0b3IuRGF0YWJhc2VPYmplY3QucHJvdG90eXBlID0gewog
ICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuRGF0YWJhc2VPYmplY3QsCiAgICAgCisgICAg
Ly8gUHVibGljCisKICAgICBnZXQgaWQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2lk
OwpAQCAtNTQsNiArNjAsMTIgQEAgV2ViSW5zcGVjdG9yLkRhdGFiYXNlT2JqZWN0LnByb3RvdHlw
ZSA9IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3ZlcnNpb247CiAgICAgfSwKICAgICAKKyAgICBz
YXZlSWRlbnRpdHlUb0Nvb2tpZTogZnVuY3Rpb24oY29va2llKQorICAgIHsKKyAgICAgICAgY29v
a2llW1dlYkluc3BlY3Rvci5EYXRhYmFzZU9iamVjdC5Ib3N0Q29va2llS2V5XSA9IHRoaXMuaG9z
dDsKKyAgICAgICAgY29va2llW1dlYkluc3BlY3Rvci5EYXRhYmFzZU9iamVjdC5OYW1lQ29va2ll
S2V5XSA9IHRoaXMubmFtZTsKKyAgICB9LAorCiAgICAgZ2V0VGFibGVOYW1lczogZnVuY3Rpb24o
Y2FsbGJhY2spCiAgICAgewogICAgICAgICBmdW5jdGlvbiBzb3J0aW5nQ2FsbGJhY2soZXJyb3Is
IG5hbWVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
RGF0YWJhc2VUYWJsZU9iamVjdC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL0RhdGFiYXNlVGFibGVPYmplY3QuanMKaW5kZXggMjczNjgzOTgxOGMzMGFkOTIwMzIxODVl
MGNmN2RhZjAzMGRkNDA2MS4uNWU2MWQyNThlYmY2M2ZhY2Q5MzQzZDE5ZmVkOGEzMjliMjJmNzJk
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRGF0YWJh
c2VUYWJsZU9iamVjdC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9EYXRhYmFzZVRhYmxlT2JqZWN0LmpzCkBAIC0zMSw2ICszMSw5IEBAIFdlYkluc3BlY3Rvci5E
YXRhYmFzZVRhYmxlT2JqZWN0ID0gZnVuY3Rpb24obmFtZSwgZGF0YWJhc2UpCiAgICAgdGhpcy5f
ZGF0YWJhc2UgPSBkYXRhYmFzZTsKIH07CiAKK1dlYkluc3BlY3Rvci5EYXRhYmFzZVRhYmxlT2Jq
ZWN0LlR5cGVJZGVudGlmaWVyID0gImRhdGFiYXNlLXRhYmxlIjsKK1dlYkluc3BlY3Rvci5EYXRh
YmFzZVRhYmxlT2JqZWN0Lk5hbWVDb29raWVLZXkgPSAiZGF0YWJhc2UtdGFibGUtb2JqZWN0LW5h
bWUiOworCiBXZWJJbnNwZWN0b3IuRGF0YWJhc2VUYWJsZU9iamVjdC5wcm90b3R5cGUgPSB7CiAg
ICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5EYXRhYmFzZVRhYmxlT2JqZWN0LAogICAgIApA
QCAtNDIsNyArNDUsMTIgQEAgV2ViSW5zcGVjdG9yLkRhdGFiYXNlVGFibGVPYmplY3QucHJvdG90
eXBlID0gewogICAgIGdldCBkYXRhYmFzZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5f
ZGF0YWJhc2U7Ci0gICAgfQorICAgIH0sCisKKyAgICBzYXZlSWRlbnRpdHlUb0Nvb2tpZTogZnVu
Y3Rpb24oY29va2llKQorICAgIHsKKyAgICAgICAgY29va2llW1dlYkluc3BlY3Rvci5EYXRhYmFz
ZVRhYmxlT2JqZWN0Lk5hbWVDb29raWVLZXldID0gdGhpcy5uYW1lOworICAgIH0sCiB9OwogCiBX
ZWJJbnNwZWN0b3IuRGF0YWJhc2VUYWJsZU9iamVjdC5wcm90b3R5cGUuX19wcm90b19fID0gV2Vi
SW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9EZWJ1Z2dlclNpZGViYXJQYW5lbC5qcyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0RlYnVnZ2VyU2lkZWJhclBhbmVsLmpzCmluZGV4IDQ0
Mjg0NGM4Y2Y5NjhkYzBmYWM2MDUyNzkyODNlMTMxM2I5OGFkOWMuLmFiMjA4NGE1MDE2MmNhNDlm
OGM3OGE5MzMxMDc2YjIxNzlmYWVlZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL0RlYnVnZ2VyU2lkZWJhclBhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0RlYnVnZ2VyU2lkZWJhclBhbmVsLmpzCkBAIC0xMjAs
NiArMTIwLDkgQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyU2lkZWJhclBhbmVsID0gZnVuY3Rpb24o
KQogV2ViSW5zcGVjdG9yLkRlYnVnZ2VyU2lkZWJhclBhbmVsLk9mZnNldFNlY3Rpb25zU3R5bGVD
bGFzc05hbWUgPSAib2Zmc2V0LXNlY3Rpb25zIjsKIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclNpZGVi
YXJQYW5lbC5FeGNlcHRpb25JY29uU3R5bGVDbGFzc05hbWUgPSAiYnJlYWtwb2ludC1leGNlcHRp
b24taWNvbiI7CiAKK1dlYkluc3BlY3Rvci5EZWJ1Z2dlclNpZGViYXJQYW5lbC5TZWxlY3RlZEFs
bEV4Y2VwdGlvbnNDb29raWVLZXkgPSAiZGVidWdnZXItc2lkZWJhci1wYW5lbC1hbGwtZXhjZXB0
aW9ucy1icmVha3BvaW50IjsKK1dlYkluc3BlY3Rvci5EZWJ1Z2dlclNpZGViYXJQYW5lbC5TZWxl
Y3RlZEFsbFVuY2F1Z2h0RXhjZXB0aW9uc0Nvb2tpZUtleSA9ICJkZWJ1Z2dlci1zaWRlYmFyLXBh
bmVsLWFsbC11bmNhdWdodC1leGNlcHRpb25zLWJyZWFrcG9pbnQiOworCiBXZWJJbnNwZWN0b3Iu
RGVidWdnZXJTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogICAgIGNvbnN0cnVjdG9yOiBXZWJJ
bnNwZWN0b3IuRGVidWdnZXJTaWRlYmFyUGFuZWwsCiAKQEAgLTEzNCw2ICsxMzcsNDAgQEAgV2Vi
SW5zcGVjdG9yLkRlYnVnZ2VyU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0
dXJuIHRoaXMuY29udGVudFRyZWVPdXRsaW5lLmdldENhY2hlZFRyZWVFbGVtZW50KHJlcHJlc2Vu
dGVkT2JqZWN0KTsKICAgICB9LAogCisgICAgLy8gUHJvdGVjdGVkCisKKyAgICBzYXZlU3RhdGVU
b0Nvb2tpZTogZnVuY3Rpb24oY29va2llKQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQo
Y29va2llKTsKKworICAgICAgICB2YXIgc2VsZWN0ZWRUcmVlRWxlbWVudCA9IHRoaXMuX2JyZWFr
cG9pbnRzQ29udGVudFRyZWVPdXRsaW5lLnNlbGVjdGVkVHJlZUVsZW1lbnQ7CisgICAgICAgIGlm
ICghc2VsZWN0ZWRUcmVlRWxlbWVudCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB2
YXIgcmVwcmVzZW50ZWRPYmplY3QgPSBzZWxlY3RlZFRyZWVFbGVtZW50LnJlcHJlc2VudGVkT2Jq
ZWN0OworCisgICAgICAgIGlmIChyZXByZXNlbnRlZE9iamVjdCA9PT0gV2ViSW5zcGVjdG9yLmRl
YnVnZ2VyTWFuYWdlci5hbGxFeGNlcHRpb25zQnJlYWtwb2ludCkKKyAgICAgICAgICAgIGNvb2tp
ZVtXZWJJbnNwZWN0b3IuRGVidWdnZXJTaWRlYmFyUGFuZWwuU2VsZWN0ZWRBbGxFeGNlcHRpb25z
Q29va2llS2V5XSA9IHRydWU7CisKKyAgICAgICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0ID09PSBX
ZWJJbnNwZWN0b3IuZGVidWdnZXJNYW5hZ2VyLmFsbFVuY2F1Z2h0RXhjZXB0aW9uc0JyZWFrcG9p
bnQpCisgICAgICAgICAgICBjb29raWVbV2ViSW5zcGVjdG9yLkRlYnVnZ2VyU2lkZWJhclBhbmVs
LlNlbGVjdGVkQWxsVW5jYXVnaHRFeGNlcHRpb25zQ29va2llS2V5XSA9IHRydWU7CisKKyAgICAg
ICAgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwucHJvdG90eXBlLnNhdmVTdGF0
ZVRvQ29va2llLmNhbGwodGhpcywgY29va2llKTsKKyAgICB9LAorCisgICAgcmVzdG9yZVN0YXRl
RnJvbUNvb2tpZTogZnVuY3Rpb24oY29va2llKQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3Nl
cnQoY29va2llKTsKKworICAgICAgICAvLyBFYWdlcmx5IHJlc29sdmUgdGhlIHNwZWNpYWwgYnJl
YWtwb2ludHM7IG90aGVyd2lzZSwgdXNlIHRoZSBkZWZhdWx0IGJlaGF2aW9yLgorICAgICAgICBp
ZiAoY29va2llW1dlYkluc3BlY3Rvci5EZWJ1Z2dlclNpZGViYXJQYW5lbC5TZWxlY3RlZEFsbEV4
Y2VwdGlvbnNDb29raWVLZXldKQorICAgICAgICAgICAgdGhpcy5fYWxsRXhjZXB0aW9uc0JyZWFr
cG9pbnRUcmVlRWxlbWVudC5yZXZlYWxBbmRTZWxlY3QoKTsKKyAgICAgICAgZWxzZSBpZiAoY29v
a2llW1dlYkluc3BlY3Rvci5EZWJ1Z2dlclNpZGViYXJQYW5lbC5TZWxlY3RlZEFsbFVuY2F1Z2h0
RXhjZXB0aW9uc0Nvb2tpZUtleV0pCisgICAgICAgICAgICB0aGlzLl9hbGxVbmNhdWdodEV4Y2Vw
dGlvbnNCcmVha3BvaW50VHJlZUVsZW1lbnQucmV2ZWFsQW5kU2VsZWN0KCk7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLnByb3Rv
dHlwZS5yZXN0b3JlU3RhdGVGcm9tQ29va2llLmNhbGwodGhpcywgY29va2llKTsKKyAgICB9LAor
CiAgICAgLy8gUHJpdmF0ZQogCiAgICAgX2RlYnVnZ2VyUGF1c2VSZXN1bWVCdXR0b25DbGlja2Vk
OiBmdW5jdGlvbihldmVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL0ZyYW1lLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
RnJhbWUuanMKaW5kZXggNTk4ZmZlMTA4N2NiNDJlYzJlNWE3YzE0MDNmZmM3OWMzMjBjZDZkOC4u
MDVkZDU4YjM1ZGJlNDE0YTY3MWMxODZmNTFhNDNlYWE1NGNjNjFkNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRnJhbWUuanMKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRnJhbWUuanMKQEAgLTY3LDYgKzY3LDkgQEAgV2Vi
SW5zcGVjdG9yLkZyYW1lLkV2ZW50ID0gewogICAgIEV4ZWN1dGlvbkNvbnRleHRzQ2xlYXJlZDog
ImZyYW1lLWV4ZWN1dGlvbi1jb250ZXh0cy1jbGVhcmVkIgogfTsKIAorV2ViSW5zcGVjdG9yLkZy
YW1lLlR5cGVJZGVudGlmaWVyID0gIkZyYW1lIjsKK1dlYkluc3BlY3Rvci5GcmFtZS5NYWluUmVz
b3VyY2VVUkxDb29raWVLZXkgPSAiZnJhbWUtbWFpbi1yZXNvdXJjZS11cmwiOworCiBXZWJJbnNw
ZWN0b3IuRnJhbWUucHJvdG90eXBlID0gewogICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3Iu
RnJhbWUsCiAKQEAgLTQzMiw2ICs0MzUsMTEgQEAgV2ViSW5zcGVjdG9yLkZyYW1lLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9y
LkZyYW1lLkV2ZW50LkFsbFJlc291cmNlc1JlbW92ZWQpOwogICAgIH0sCiAKKyAgICBzYXZlSWRl
bnRpdHlUb0Nvb2tpZTogZnVuY3Rpb24oY29va2llKQorICAgIHsKKyAgICAgICAgY29va2llW1dl
Ykluc3BlY3Rvci5GcmFtZS5NYWluUmVzb3VyY2VVUkxDb29raWVLZXldID0gdGhpcy5tYWluUmVz
b3VyY2UudXJsOworICAgIH0sCisKICAgICAvLyBQcml2YXRlCiAKICAgICBfaXNQcm92aXNpb25h
bFJlc291cmNlOiBmdW5jdGlvbihyZXNvdXJjZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0ZyYW1lUmVzb3VyY2VNYW5hZ2VyLmpzIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRnJhbWVSZXNvdXJjZU1hbmFnZXIuanMKaW5kZXgg
MjczZDc5Yjc1NGI2NzkzMWEzODQxYmI2OWZkOTJkYWQ3YWVlZGM5Ny4uOGVlZmUxNzAwNmI0YmVh
ZmM4NDk3YTk2YWFhNjA0NzAxYjc4OGY5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvRnJhbWVSZXNvdXJjZU1hbmFnZXIuanMKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRnJhbWVSZXNvdXJjZU1hbmFnZXIuanMKQEAgLTgw
LDIwICs4MCw2IEBAIFdlYkluc3BlY3Rvci5GcmFtZVJlc291cmNlTWFuYWdlci5wcm90b3R5cGUg
PSB7CiAgICAgICAgIHJldHVybiB0aGlzLl9mcmFtZUlkZW50aWZpZXJNYXBbZnJhbWVJZF0gfHwg
bnVsbDsKICAgICB9LAogCi0KLSAgICBvYmplY3RGb3JDb29raWU6IGZ1bmN0aW9uKGNvb2tpZSkK
LSAgICB7Ci0gICAgICAgIHZhciByZXByZXNlbnRlZE9iamVjdCA9IGNvb2tpZS51cmwgPyB0aGlz
LnJlc291cmNlRm9yVVJMKGNvb2tpZS51cmwpIDogdGhpcy5tYWluRnJhbWU7Ci0KLSAgICAgICAg
aWYgKCFyZXByZXNlbnRlZE9iamVjdCkKLSAgICAgICAgICAgIHJlcHJlc2VudGVkT2JqZWN0ID0g
dGhpcy5tYWluRnJhbWU7Ci0KLSAgICAgICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNl
b2YgV2ViSW5zcGVjdG9yLlJlc291cmNlICYmIHJlcHJlc2VudGVkT2JqZWN0LmlzTWFpblJlc291
cmNlKCkpCi0gICAgICAgICAgICByZXByZXNlbnRlZE9iamVjdCA9IHJlcHJlc2VudGVkT2JqZWN0
LnBhcmVudEZyYW1lOwotCi0gICAgICAgIHJldHVybiByZXByZXNlbnRlZE9iamVjdDsKLSAgICB9
LAotCiAgICAgZnJhbWVEaWROYXZpZ2F0ZTogZnVuY3Rpb24oZnJhbWVQYXlsb2FkKQogICAgIHsK
ICAgICAgICAgLy8gQ2FsbGVkIGZyb20gV2ViSW5zcGVjdG9yLlBhZ2VPYnNlcnZlci4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0luc3RydW1lbnRTaWRl
YmFyUGFuZWwuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9JbnN0cnVt
ZW50U2lkZWJhclBhbmVsLmpzCmluZGV4IGY4ZjliYmNlZTdiY2Y1MzM3MTBlOGEwOTYyMzhiMjM5
ZjE5NTg4ZTEuLmMwYjgwZGU4NWU5YTRmZTEzYWNmY2NkZjM2MjI5M2VkZTA4NjY2NmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0luc3RydW1lbnRTaWRl
YmFyUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSW5z
dHJ1bWVudFNpZGViYXJQYW5lbC5qcwpAQCAtMTU4LDYgKzE1OCwxMCBAQCBXZWJJbnNwZWN0b3Iu
SW5zdHJ1bWVudFNpZGViYXJQYW5lbC5TdGFydEphdmFTY3JpcHRQcm9maWxlVmFsdWUgPSAic3Rh
cnQtamF2YXNjcgogV2ViSW5zcGVjdG9yLkluc3RydW1lbnRTaWRlYmFyUGFuZWwuU3RhcnRDU1NT
ZWxlY3RvclByb2ZpbGVWYWx1ZSA9ICJzdGFydC1jc3Mtc2VsZWN0b3ItcHJvZmlsZSI7CiBXZWJJ
bnNwZWN0b3IuSW5zdHJ1bWVudFNpZGViYXJQYW5lbC5TdGFydENhbnZhc1Byb2ZpbGVWYWx1ZSA9
ICJzdGFydC1jYW52YXMtcHJvZmlsZSI7CiAKK1dlYkluc3BlY3Rvci5JbnN0cnVtZW50U2lkZWJh
clBhbmVsLlNlbGVjdGVkVGltZWxpbmVDb29raWVLZXkgPSAiaW5zdHJ1bWVudC1zaWRlYmFyLXBh
bmVsLXNlbGVjdGVkLXRpbWVsaW5lIjsKK1dlYkluc3BlY3Rvci5JbnN0cnVtZW50U2lkZWJhclBh
bmVsLlNlbGVjdGVkUHJvZmlsZVR5cGVDb29raWVLZXkgPSAiaW5zdHJ1bWVudC1zaWRlYmFyLXBh
bmVsLXNlbGVjdGVkLXByb2ZpbGUtdHlwZSI7CitXZWJJbnNwZWN0b3IuSW5zdHJ1bWVudFNpZGVi
YXJQYW5lbC5TZWxlY3RlZFByb2ZpbGVUaXRsZUNvb2tpZUtleSA9ICJpbnN0cnVtZW50LXNpZGVi
YXItcGFuZWwtc2VsZWN0ZWQtcHJvZmlsZS10aXRsZSI7CisKIFdlYkluc3BlY3Rvci5JbnN0cnVt
ZW50U2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVj
dG9yLkluc3RydW1lbnRTaWRlYmFyUGFuZWwsCiAKQEAgLTE3OSw5ICsxODMsNDggQEAgV2ViSW5z
cGVjdG9yLkluc3RydW1lbnRTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogICAgIHsKICAgICAg
ICAgdmFyIHRyZWVFbGVtZW50VG9TZWxlY3QgPSB0aGlzLl90aW1lbGluZVRyZWVFbGVtZW50TWFw
W3R5cGVdOwogICAgICAgICBpZiAoIXRyZWVFbGVtZW50VG9TZWxlY3QpCi0gICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICByZXR1cm4gbnVsbDsKIAogICAgICAgICB0cmVlRWxlbWVudFRv
U2VsZWN0LnNlbGVjdCh0cnVlLCB0cnVlKTsKKyAgICAgICAgcmV0dXJuIHRyZWVFbGVtZW50VG9T
ZWxlY3QucmVwcmVzZW50ZWRPYmplY3Q7CisgICAgfSwKKworICAgIHNhdmVTdGF0ZVRvQ29va2ll
OiBmdW5jdGlvbihjb29raWUpCisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydChjb29raWUp
OworCisgICAgICAgIC8vIFRoaXMgc2lkZWJhciBoYXMgdHdvIHNlcGFyYXRlIHRyZWUgb3V0bGlu
ZXMsIGJ1dCBvbmx5IG9uZSBzZWxlY3RlZCB0cmVlIGVsZW1lbnQgYmV0d2VlbiB0aGVtLgorICAg
ICAgICB2YXIgc2VsZWN0ZWRUcmVlRWxlbWVudCA9IHRoaXMuX3RpbWVsaW5lc1RyZWVPdXRsaW5l
LnNlbGVjdGVkVHJlZUVsZW1lbnQgfHwgdGhpcy5jb250ZW50VHJlZU91dGxpbmUuc2VsZWN0ZWRU
cmVlRWxlbWVudDsKKyAgICAgICAgaWYgKCFzZWxlY3RlZFRyZWVFbGVtZW50KQorICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgIHZhciByZXByZXNlbnRlZE9iamVjdCA9IHNlbGVjdGVkVHJl
ZUVsZW1lbnQucmVwcmVzZW50ZWRPYmplY3Q7CisgICAgICAgIGlmIChyZXByZXNlbnRlZE9iamVj
dCA9PT0gV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkLlR5cGUuU2NyaXB0IHx8IHJlcHJlc2Vu
dGVkT2JqZWN0ID09PSBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmQuVHlwZS5MYXlvdXQgfHwg
cmVwcmVzZW50ZWRPYmplY3QgPT09IFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZC5UeXBlLk5l
dHdvcmspCisgICAgICAgICAgICBjb29raWVbV2ViSW5zcGVjdG9yLkluc3RydW1lbnRTaWRlYmFy
UGFuZWwuU2VsZWN0ZWRUaW1lbGluZUNvb2tpZUtleV0gPSByZXByZXNlbnRlZE9iamVjdDsKKyAg
ICAgICAgZWxzZSBpZiAocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3Iu
UHJvZmlsZU9iamVjdCkgeworICAgICAgICAgICAgY29va2llW1dlYkluc3BlY3Rvci5JbnN0cnVt
ZW50U2lkZWJhclBhbmVsLlNlbGVjdGVkUHJvZmlsZVR5cGVDb29raWVLZXldID0gcmVwcmVzZW50
ZWRPYmplY3QudHlwZTsKKyAgICAgICAgICAgIGNvb2tpZVtXZWJJbnNwZWN0b3IuSW5zdHJ1bWVu
dFNpZGViYXJQYW5lbC5TZWxlY3RlZFByb2ZpbGVUaXRsZUNvb2tpZUtleV0gPSByZXByZXNlbnRl
ZE9iamVjdC50aXRsZTsKKyAgICAgICAgfQorICAgIH0sCisKKyAgICByZXN0b3JlU3RhdGVGcm9t
Q29va2llOiBmdW5jdGlvbihjb29raWUpCisgICAgeworICAgICAgICAvLyBFYWdlcmx5IHJlc3Rv
cmUgdGhlIHNpZGViYXIncyBzZWxlY3Rpb24sIHNpbmNlIGl0cyBlbGVtZW50cyBhcmUgcGVyc2lz
dGVudCBvciBwZXJtYW5lbnQuCisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGNvb2tpZSk7CisgICAg
ICAgIHZhciBzZWxlY3RlZFRpbWVsaW5lVHlwZSA9IGNvb2tpZVtXZWJJbnNwZWN0b3IuSW5zdHJ1
bWVudFNpZGViYXJQYW5lbC5TZWxlY3RlZFRpbWVsaW5lQ29va2llS2V5XTsKKyAgICAgICAgaWYg
KHNlbGVjdGVkVGltZWxpbmVUeXBlKSB7CisgICAgICAgICAgICByZXR1cm4gdGhpcy5zaG93VGlt
ZWxpbmVGb3JSZWNvcmRUeXBlKHNlbGVjdGVkVGltZWxpbmVUeXBlKTsKKyAgICAgICAgICAgIHJl
dHVybiBXZWJJbnNwZWN0b3IudGltZWxpbmVNYW5hZ2VyLnRpbWVsaW5lczsKKyAgICAgICAgfQor
CisgICAgICAgIC8vIFByb2ZpbGVzIGFyZSBwZXJzaXN0ZWQgYWNyb3NzIHBhZ2UgcmVsb2Fkcywg
YnV0IG5vdCBhY3Jvc3MgaW5zcGVjdG9yIG9wZW4vY2xvc2UuCisgICAgICAgIHZhciBzZWxlY3Rl
ZFByb2ZpbGVUeXBlID0gY29va2llW1dlYkluc3BlY3Rvci5JbnN0cnVtZW50U2lkZWJhclBhbmVs
LlNlbGVjdGVkUHJvZmlsZVR5cGVDb29raWVLZXldOworICAgICAgICB2YXIgc2VsZWN0ZWRQcm9m
aWxlVGl0bGUgPSBjb29raWVbV2ViSW5zcGVjdG9yLkluc3RydW1lbnRTaWRlYmFyUGFuZWwuU2Vs
ZWN0ZWRQcm9maWxlVGl0bGVDb29raWVLZXldOworICAgICAgICAvLyBQcm9maWxlIHRpdGxlcyBh
cmUgb3B0aW9uYWwsIGJ1dCBwcm9maWxlIHR5cGVzIGFyZSBtYW5kYXRvcnkuCisgICAgICAgIGlm
ICghc2VsZWN0ZWRQcm9maWxlVHlwZSkKKyAgICAgICAgICAgIHJldHVybiBudWxsOworCisgICAg
ICAgIHJldHVybiB0aGlzLnNob3dQcm9maWxlKHNlbGVjdGVkUHJvZmlsZVR5cGUsIHNlbGVjdGVk
UHJvZmlsZVRpdGxlKTsKICAgICB9LAogCiAgICAgc2hvd1Byb2ZpbGU6IGZ1bmN0aW9uKHR5cGUs
IHRpdGxlKQpAQCAtMTkyLDcgKzIzNSw3IEBAIFdlYkluc3BlY3Rvci5JbnN0cnVtZW50U2lkZWJh
clBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHZhciBwcm9maWxlID0gdHJlZUVsZW1l
bnQucmVwcmVzZW50ZWRPYmplY3Q7CiAgICAgICAgICAgICBpZiAocHJvZmlsZS50eXBlID09PSB0
eXBlICYmIHByb2ZpbGUudGl0bGUgPT09IHRpdGxlKSB7CiAgICAgICAgICAgICAgICAgdHJlZUVs
ZW1lbnQucmV2ZWFsQW5kU2VsZWN0KCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgICAgIHJldHVybiBwcm9maWxlOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAg
fSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4u
anMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmpzCmluZGV4IGNk
NzQ2NGVhZTczMjJlY2JlZjhkYWNjMGI2OTNiODFiNDU3OTlhNDcuLjRjYWE3YWM2MjY5NjhiNTcz
Y2NlODI5Njc1N2ZhNDVjYmVlNDBmZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL01haW4uanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvTWFpbi5qcwpAQCAtNDAsNiArNDAsOSBAQCBXZWJJbnNwZWN0b3IuQ29udGVudFZp
ZXdDb29raWVUeXBlID0gewogCiB9OwogCitXZWJJbnNwZWN0b3IuU2VsZWN0ZWRTaWRlYmFyUGFu
ZWxDb29raWVLZXkgPSAic2VsZWN0ZWQtc2lkZWJhci1wYW5lbCI7CitXZWJJbnNwZWN0b3IuVHlw
ZUlkZW50aWZpZXJDb29raWVLZXkgPSAicmVwcmVzZW50ZWQtb2JqZWN0LXR5cGUiOworCiBXZWJJ
bnNwZWN0b3IubG9hZGVkID0gZnVuY3Rpb24oKQogewogICAgIC8vIFRlbGwgdGhlIEluc3BlY3Rv
ckZyb250ZW5kSG9zdCB3ZSBsb2FkZWQgZmlyc3QgdG8gZXN0YWJsaXNoIGNvbW11bmljYXRpb24g
d2l0aCBJbnNwZWN0b3JCYWNrZW5kLgpAQCAtMTAzLDEzICsxMDYsNyBAQCBXZWJJbnNwZWN0b3Iu
bG9hZGVkID0gZnVuY3Rpb24oKQogICAgIHRoaXMuZnJhbWVSZXNvdXJjZU1hbmFnZXIuYWRkRXZl
bnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRnJhbWVSZXNvdXJjZU1hbmFnZXIuRXZlbnQuTWFpbkZy
YW1lRGlkQ2hhbmdlLCB0aGlzLl9tYWluRnJhbWVEaWRDaGFuZ2UsIHRoaXMpOwogCiAgICAgV2Vi
SW5zcGVjdG9yLkZyYW1lLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkZyYW1lLkV2ZW50
Lk1haW5SZXNvdXJjZURpZENoYW5nZSwgdGhpcy5fbWFpblJlc291cmNlRGlkQ2hhbmdlLCB0aGlz
KTsKLQotICAgIC8vIFRoZXNlIGxpc3RlbmVycyBhcmUgZm9yIGV2ZW50cyB0aGF0IGNvdWxkIHJl
c29sdmUgYSBwZW5kaW5nIGNvbnRlbnQgdmlldyBjb29raWUuCi0gICAgdGhpcy5hcHBsaWNhdGlv
bkNhY2hlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNh
Y2hlTWFuYWdlci5FdmVudC5GcmFtZU1hbmlmZXN0QWRkZWQsIHRoaXMuX3Jlc29sdmVBbmRTaG93
UGVuZGluZ0NvbnRlbnRWaWV3Q29va2llLCB0aGlzKTsKLSAgICB0aGlzLmZyYW1lUmVzb3VyY2VN
YW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkZyYW1lUmVzb3VyY2VNYW5hZ2Vy
LkV2ZW50Lk1haW5GcmFtZURpZENoYW5nZSwgdGhpcy5fcmVzb2x2ZUFuZFNob3dQZW5kaW5nQ29u
dGVudFZpZXdDb29raWUsIHRoaXMpOwotICAgIHRoaXMuc3RvcmFnZU1hbmFnZXIuYWRkRXZlbnRM
aXN0ZW5lcihXZWJJbnNwZWN0b3IuU3RvcmFnZU1hbmFnZXIuRXZlbnQuRGF0YWJhc2VXYXNBZGRl
ZCwgdGhpcy5fcmVzb2x2ZUFuZFNob3dQZW5kaW5nQ29udGVudFZpZXdDb29raWUsIHRoaXMpOwot
ICAgIHRoaXMuc3RvcmFnZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuU3Rv
cmFnZU1hbmFnZXIuRXZlbnQuQ29va2llU3RvcmFnZU9iamVjdFdhc0FkZGVkLCB0aGlzLl9yZXNv
bHZlQW5kU2hvd1BlbmRpbmdDb250ZW50Vmlld0Nvb2tpZSwgdGhpcyk7Ci0gICAgdGhpcy5zdG9y
YWdlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5TdG9yYWdlTWFuYWdlci5F
dmVudC5ET01TdG9yYWdlT2JqZWN0V2FzQWRkZWQsIHRoaXMuX3Jlc29sdmVBbmRTaG93UGVuZGlu
Z0NvbnRlbnRWaWV3Q29va2llLCB0aGlzKTsKKyAgICBXZWJJbnNwZWN0b3IuRnJhbWUuYWRkRXZl
bnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRnJhbWUuRXZlbnQuUHJvdmlzaW9uYWxMb2FkQ29tbWl0
dGVkLCB0aGlzLl9wcm92aXNpb25hbExvYWRDb21taXR0ZWQsIHRoaXMpOwogCiAgICAgZG9jdW1l
bnQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsIHRoaXMuY29udGVudExvYWRl
ZC5iaW5kKHRoaXMpKTsKIApAQCAtMTI2LDkgKzEyMywxMSBAQCBXZWJJbnNwZWN0b3IubG9hZGVk
ID0gZnVuY3Rpb24oKQogICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIiwgdGhp
cy5fd2luZG93S2V5RG93bi5iaW5kKHRoaXMpKTsKICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5l
cigia2V5dXAiLCB0aGlzLl93aW5kb3dLZXlVcC5iaW5kKHRoaXMpKTsKICAgICB3aW5kb3cuYWRk
RXZlbnRMaXN0ZW5lcigibW91c2Vtb3ZlIiwgdGhpcy5fbW91c2VNb3ZlZC5iaW5kKHRoaXMpLCB0
cnVlKTsKKyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigicGFnZWhpZGUiLCB0aGlzLl9wYWdl
SGlkZGVuLmJpbmQodGhpcykpOwogCiAgICAgLy8gQ3JlYXRlIHNldHRpbmdzLgotICAgIHRoaXMu
X2xhc3RTZWxlY3RlZE5hdmlnYXRpb25TaWRlYmFyUGFuZWxTZXR0aW5nID0gbmV3IFdlYkluc3Bl
Y3Rvci5TZXR0aW5nKCJsYXN0LXNlbGVjdGVkLW5hdmlnYXRpb24tc2lkZWJhci1wYW5lbCIsICJy
ZXNvdXJjZSIpOworICAgIHRoaXMuX2xhc3RJbnNwZWN0b3JWaWV3U3RhdGVDb29raWVTZXR0aW5n
ID0gbmV3IFdlYkluc3BlY3Rvci5TZXR0aW5nKCJsYXN0LWNvbnRlbnQtdmlldy1zdGF0ZS1jb29r
aWUiLCB7fSk7CisKICAgICB0aGlzLl9uYXZpZ2F0aW9uU2lkZWJhckNvbGxhcHNlZFNldHRpbmcg
PSBuZXcgV2ViSW5zcGVjdG9yLlNldHRpbmcoIm5hdmlnYXRpb24tc2lkZWJhci1jb2xsYXBzZWQi
LCBmYWxzZSk7CiAgICAgdGhpcy5fbmF2aWdhdGlvblNpZGViYXJXaWR0aFNldHRpbmcgPSBuZXcg
V2ViSW5zcGVjdG9yLlNldHRpbmcoIm5hdmlnYXRpb24tc2lkZWJhci13aWR0aCIsIG51bGwpOwog
CkBAIC0xMzYsOSArMTM1LDYgQEAgV2ViSW5zcGVjdG9yLmxvYWRlZCA9IGZ1bmN0aW9uKCkKICAg
ICB0aGlzLl9kZXRhaWxzU2lkZWJhckNvbGxhcHNlZFNldHRpbmcgPSBuZXcgV2ViSW5zcGVjdG9y
LlNldHRpbmcoImRldGFpbHMtc2lkZWJhci1jb2xsYXBzZWQiLCB0cnVlKTsKICAgICB0aGlzLl9k
ZXRhaWxzU2lkZWJhcldpZHRoU2V0dGluZyA9IG5ldyBXZWJJbnNwZWN0b3IuU2V0dGluZygiZGV0
YWlscy1zaWRlYmFyLXdpZHRoIiwgbnVsbCk7CiAKLSAgICB0aGlzLl9sYXN0Q29udGVudFZpZXdS
ZXNwb25zaWJsZVNpZGViYXJQYW5lbFNldHRpbmcgPSBuZXcgV2ViSW5zcGVjdG9yLlNldHRpbmco
Imxhc3QtY29udGVudC12aWV3LXJlc3BvbnNpYmxlLXNpZGViYXItcGFuZWwiLCAicmVzb3VyY2Ui
KTsKLSAgICB0aGlzLl9sYXN0Q29udGVudENvb2tpZVNldHRpbmcgPSBuZXcgV2ViSW5zcGVjdG9y
LlNldHRpbmcoImxhc3QtY29udGVudC12aWV3LWNvb2tpZSIsIHt9KTsKLQogICAgIHRoaXMuX3Rv
b2xiYXJEb2NrZWRSaWdodERpc3BsYXlNb2RlU2V0dGluZyA9IG5ldyBXZWJJbnNwZWN0b3IuU2V0
dGluZygidG9vbGJhci1kb2NrZWQtcmlnaHQtZGlzcGxheS1tb2RlIiwgV2ViSW5zcGVjdG9yLlRv
b2xiYXIuRGlzcGxheU1vZGUuSWNvbkFuZExhYmVsVmVydGljYWwpOwogICAgIHRoaXMuX3Rvb2xi
YXJEb2NrZWRSaWdodFNpemVNb2RlU2V0dGluZyA9IG5ldyBXZWJJbnNwZWN0b3IuU2V0dGluZygi
dG9vbGJhci1kb2NrZWQtcmlnaHQtc2l6ZS1tb2RlIixXZWJJbnNwZWN0b3IuVG9vbGJhci5TaXpl
TW9kZS5Ob3JtYWwpOwogCkBAIC0yNzgsOCArMjc0LDYgQEAgV2ViSW5zcGVjdG9yLmNvbnRlbnRM
b2FkZWQgPSBmdW5jdGlvbigpCiAKICAgICB0aGlzLl91cGRhdGVUb29sYmFySGVpZ2h0KCk7CiAK
LSAgICB0aGlzLm5hdmlnYXRpb25TaWRlYmFyLnNlbGVjdGVkU2lkZWJhclBhbmVsID0gdGhpcy5f
bGFzdFNlbGVjdGVkTmF2aWdhdGlvblNpZGViYXJQYW5lbFNldHRpbmcudmFsdWU7Ci0KICAgICBp
ZiAodGhpcy5fbmF2aWdhdGlvblNpZGViYXJXaWR0aFNldHRpbmcudmFsdWUpCiAgICAgICAgIHRo
aXMubmF2aWdhdGlvblNpZGViYXIud2lkdGggPSB0aGlzLl9uYXZpZ2F0aW9uU2lkZWJhcldpZHRo
U2V0dGluZy52YWx1ZTsKIApAQCAtMjk2LDE0ICsyOTAsOSBAQCBXZWJJbnNwZWN0b3IuY29udGVu
dExvYWRlZCA9IGZ1bmN0aW9uKCkKICAgICAvLyBzZWxlY3RlZCBzaWRlYmFyIHBhbmVsIGdldHMg
c2hvd24gYW5kIGhhcyBhIHNheSBpbiB3aGF0IGNvbnRlbnQgdmlldyBnZXRzIHNob3duLgogICAg
IHRoaXMubmF2aWdhdGlvblNpZGViYXIuY29sbGFwc2VkID0gdGhpcy5fbmF2aWdhdGlvblNpZGVi
YXJDb2xsYXBzZWRTZXR0aW5nLnZhbHVlOwogCi0gICAgLy8gSWYgSW5zcGVjdG9yRnJvbnRlbmRB
UEkgZGlkbid0IHNob3cgYSBjb250ZW50IHZpZXcsIHRoZW4gdHJ5IHRvIHNob3cgdGhlIGxhc3Qg
Y29udGVudCB2aWV3LgotICAgIGlmICghdGhpcy5jb250ZW50QnJvd3Nlci5jdXJyZW50Q29udGVu
dFZpZXcgJiYgIXRoaXMuaWdub3JlTGFzdENvbnRlbnRDb29raWUpIHsKLSAgICAgICAgaWYgKHRo
aXMuX2xhc3RDb250ZW50Q29va2llU2V0dGluZy52YWx1ZSA9PT0gImNvbnNvbGUiKSB7Ci0gICAg
ICAgICAgICAvLyBUaGUgY29uc29sZSBkb2VzIG5vdCBoYXZlIGEgc2lkZWJhciwgc28gaGFuZGxl
IGl0cyBzcGVjaWFsIGNvb2tpZSBoZXJlLgotICAgICAgICAgICAgdGhpcy5zaG93RnVsbEhlaWdo
dENvbnNvbGUoKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICB0aGlzLl9zaG93Q29udGVu
dFZpZXdGb3JDb29raWUodGhpcy5fbGFzdENvbnRlbnRDb29raWVTZXR0aW5nLnZhbHVlKTsKLSAg
ICB9CisgICAgLy8gSWYgSW5zcGVjdG9yRnJvbnRlbmRBUEkgZGlkbid0IHNob3cgYSBjb250ZW50
IHZpZXcsIHRoZW4gdHJ5IHRvIHJlc3RvcmUgdGhlIGxhc3Qgc2F2ZWQgdmlldyBzdGF0ZS4KKyAg
ICBpZiAoIXRoaXMuY29udGVudEJyb3dzZXIuY3VycmVudENvbnRlbnRWaWV3ICYmICF0aGlzLmln
bm9yZUxhc3RDb250ZW50Q29va2llKQorICAgICAgICB0aGlzLl9yZXN0b3JlSW5zcGVjdG9yVmll
d1N0YXRlRnJvbUNvb2tpZSh0aGlzLl9sYXN0SW5zcGVjdG9yVmlld1N0YXRlQ29va2llU2V0dGlu
Zy52YWx1ZSk7CiAKICAgICB0aGlzLl91cGRhdGVTcGxpdENvbnNvbGVIZWlnaHQodGhpcy5fc3Bs
aXRDb25zb2xlSGVpZ2h0U2V0dGluZy52YWx1ZSk7CiAKQEAgLTcyNiw5ICs3MTUsMjAgQEAgV2Vi
SW5zcGVjdG9yLl9tYWluUmVzb3VyY2VEaWRDaGFuZ2UgPSBmdW5jdGlvbihldmVudCkKIHsKICAg
ICBpZiAoIWV2ZW50LnRhcmdldC5pc01haW5GcmFtZSgpKQogICAgICAgICByZXR1cm47CisKKyAg
ICB0aGlzLl9yZXN0b3JlSW5zcGVjdG9yVmlld1N0YXRlRnJvbUNvb2tpZSh0aGlzLl9sYXN0SW5z
cGVjdG9yVmlld1N0YXRlQ29va2llU2V0dGluZy52YWx1ZSwgdHJ1ZSk7CisKICAgICB0aGlzLnVw
ZGF0ZVdpbmRvd1RpdGxlKCk7CiB9CiAKK1dlYkluc3BlY3Rvci5fcHJvdmlzaW9uYWxMb2FkQ29t
bWl0dGVkID0gZnVuY3Rpb24oZXZlbnQpCit7CisgICAgaWYgKCFldmVudC50YXJnZXQuaXNNYWlu
RnJhbWUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgdGhpcy5fdXBkYXRlQ29va2llRm9ySW5z
cGVjdG9yVmlld1N0YXRlKCk7Cit9CisKIFdlYkluc3BlY3Rvci5fd2luZG93Rm9jdXNlZCA9IGZ1
bmN0aW9uKGV2ZW50KQogewogICAgIGlmIChldmVudC50YXJnZXQuZG9jdW1lbnQubm9kZVR5cGUg
IT09IE5vZGUuRE9DVU1FTlRfTk9ERSB8fCB0aGlzLmRvY2tlZCkKQEAgLTc4OSw2ICs3ODksMTEg
QEAgV2ViSW5zcGVjdG9yLl9tb3VzZU1vdmVkID0gZnVuY3Rpb24oZXZlbnQpCiAgICAgfTsKIH0K
IAorV2ViSW5zcGVjdG9yLl9wYWdlSGlkZGVuID0gZnVuY3Rpb24oZXZlbnQpCit7CisgICAgdGhp
cy5fdXBkYXRlQ29va2llRm9ySW5zcGVjdG9yVmlld1N0YXRlKCk7Cit9CisKIFdlYkluc3BlY3Rv
ci5fdW5kb2NrID0gZnVuY3Rpb24oZXZlbnQpCiB7CiAgICAgdGhpcy5fZG9ja0J1dHRvblRvZ2ds
ZWRTZXR0aW5nLnZhbHVlID0gdGhpcy51bmRvY2tCdXR0b25OYXZpZ2F0aW9uSXRlbS50b2dnbGVk
OwpAQCAtODkwLDggKzg5NSw2IEBAIFdlYkluc3BlY3Rvci5fbmF2aWdhdGlvblNpZGViYXJQYW5l
bFNlbGVjdGVkID0gZnVuY3Rpb24oZXZlbnQpCiAgICAgaWYgKCFzZWxlY3RlZFNpZGViYXJQYW5l
bCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgdGhpcy5fbGFzdFNlbGVjdGVkTmF2aWdhdGlvblNp
ZGViYXJQYW5lbFNldHRpbmcudmFsdWUgPSBzZWxlY3RlZFNpZGViYXJQYW5lbC5pZGVudGlmaWVy
OwotCiAgICAgdGhpcy5fdXBkYXRlTmF2aWdhdGlvblNpZGViYXJGb3JDdXJyZW50Q29udGVudFZp
ZXcoKTsKIH0KIApAQCAtOTY1LDI3ICs5NjgsMjggQEAgV2ViSW5zcGVjdG9yLl90b29sYmFyU2l6
ZU1vZGVEaWRDaGFuZ2UgPSBmdW5jdGlvbihldmVudCkKICAgICB0aGlzLl91cGRhdGVUb29sYmFy
SGVpZ2h0KCk7CiB9CiAKLVdlYkluc3BlY3Rvci5fdXBkYXRlQ3VycmVudENvbnRlbnRWaWV3Q29v
a2llID0gZnVuY3Rpb24oKQorV2ViSW5zcGVjdG9yLl91cGRhdGVDb29raWVGb3JJbnNwZWN0b3JW
aWV3U3RhdGUgPSBmdW5jdGlvbigpCiB7CisgICAgdmFyIGNvb2tpZSA9IHt9OwogICAgIHZhciBj
dXJyZW50Q29udGVudFZpZXcgPSB0aGlzLmNvbnRlbnRCcm93c2VyLmN1cnJlbnRDb250ZW50Vmll
dzsKLSAgICBpZiAoIWN1cnJlbnRDb250ZW50VmlldykKLSAgICAgICAgcmV0dXJuOwogCiAgICAg
Ly8gVGhlIGNvbnNvbGUgZG9lcyBub3QgaGF2ZSBhIHNpZGViYXIsIHNvIGNyZWF0ZSBhIGNvb2tp
ZSBoZXJlLgotICAgIGlmIChjdXJyZW50Q29udGVudFZpZXcucmVwcmVzZW50ZWRPYmplY3QgaW5z
dGFuY2VvZiBXZWJJbnNwZWN0b3IuTG9nT2JqZWN0KSB7Ci0gICAgICAgIHRoaXMuX2xhc3RDb250
ZW50Vmlld1Jlc3BvbnNpYmxlU2lkZWJhclBhbmVsU2V0dGluZy52YWx1ZSA9IG51bGw7Ci0gICAg
ICAgIHRoaXMuX2xhc3RDb250ZW50Q29va2llU2V0dGluZy52YWx1ZSA9ICJjb25zb2xlIjsKKyAg
ICBpZiAoY3VycmVudENvbnRlbnRWaWV3ICYmIGN1cnJlbnRDb250ZW50Vmlldy5yZXByZXNlbnRl
ZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Mb2dPYmplY3QpIHsKKyAgICAgICAgY29v
a2llW1dlYkluc3BlY3Rvci5TZWxlY3RlZFNpZGViYXJQYW5lbENvb2tpZUtleV0gPSAiY29uc29s
ZSI7CisgICAgICAgIHRoaXMuX2xhc3RJbnNwZWN0b3JWaWV3U3RhdGVDb29raWVTZXR0aW5nLnZh
bHVlID0gY29va2llOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgdmFyIHJlc3BvbnNp
YmxlU2lkZWJhclBhbmVsID0gdGhpcy5zaWRlYmFyUGFuZWxGb3JSZXByZXNlbnRlZE9iamVjdChj
dXJyZW50Q29udGVudFZpZXcucmVwcmVzZW50ZWRPYmplY3QpOwotICAgIGlmICghcmVzcG9uc2li
bGVTaWRlYmFyUGFuZWwpCisgICAgdmFyIHNlbGVjdGVkU2lkZWJhclBhbmVsID0gdGhpcy5uYXZp
Z2F0aW9uU2lkZWJhci5zZWxlY3RlZFNpZGViYXJQYW5lbDsKKyAgICBpZiAoIXNlbGVjdGVkU2lk
ZWJhclBhbmVsKQogICAgICAgICByZXR1cm47CiAKLSAgICB2YXIgY29va2llID0ge307Ci0gICAg
Y3VycmVudENvbnRlbnRWaWV3LnNhdmVUb0Nvb2tpZShjb29raWUpOwotICAgIHRoaXMuX2xhc3RD
b250ZW50Vmlld1Jlc3BvbnNpYmxlU2lkZWJhclBhbmVsU2V0dGluZy52YWx1ZSA9IHJlc3BvbnNp
YmxlU2lkZWJhclBhbmVsLmlkZW50aWZpZXI7Ci0gICAgdGhpcy5fbGFzdENvbnRlbnRDb29raWVT
ZXR0aW5nLnZhbHVlID0gY29va2llOworICAgIC8vIFJlc3RvcmluZyB2aWV3IHN0YXRlIGFmdGVy
IGluc3BlY3RvciByZS1vcGVuIG9yIHBhZ2UgcmVsb2FkIGlzIGRlbGVnYXRlZCB0byBuYXZpZ2F0
aW9uIHNpZGViYXJzLgorICAgIC8vIFRoaXMgaXMgYmVjYXVzZSBzb21lIG5hdmlnYXRpb24gc2lk
ZWJhciBzdGF0ZSAoc3VjaCBhcyBicmVha3BvaW50IHNlbGVjdGlvbnMpIGNhbm5vdCBiZSBpbmZl
cnJlZAorICAgIC8vIHNvbGVseSBiYXNlZCBvbiB3aGljaCBjb250ZW50IHZpZXcgaXMgdmlzaWJs
ZSwgb3IgbXVsdGlwbGUgbmF2aWdhdGlvbiBzaWRlYmFycyBjb3VsZCBiZSBzaG93bi4KKyAgICBj
b29raWVbV2ViSW5zcGVjdG9yLlNlbGVjdGVkU2lkZWJhclBhbmVsQ29va2llS2V5XSA9IHNlbGVj
dGVkU2lkZWJhclBhbmVsLmlkZW50aWZpZXI7CisgICAgc2VsZWN0ZWRTaWRlYmFyUGFuZWwuc2F2
ZVN0YXRlVG9Db29raWUoY29va2llKTsKKyAgICB0aGlzLl9sYXN0SW5zcGVjdG9yVmlld1N0YXRl
Q29va2llU2V0dGluZy52YWx1ZSA9IGNvb2tpZTsKIH0KIAogV2ViSW5zcGVjdG9yLl9jb250ZW50
QnJvd3NlckN1cnJlbnRDb250ZW50Vmlld0RpZENoYW5nZSA9IGZ1bmN0aW9uKGV2ZW50KQpAQCAt
MTA3OSw3NSArMTA4MywzMCBAQCBXZWJJbnNwZWN0b3IuX2NvbnRlbnRCcm93c2VyUmVwcmVzZW50
ZWRPYmplY3RzRGlkQ2hhbmdlID0gZnVuY3Rpb24oZXZlbnQpCiAKICAgICAvLyBTdG9wIGlnbm9y
aW5nIHRoZSBzaWRlYmFyIHBhbmVsIHNlbGVjdGVkIGV2ZW50LgogICAgIGRlbGV0ZSB0aGlzLl9p
Z25vcmVEZXRhaWxzU2lkZWJhclBhbmVsU2VsZWN0ZWRFdmVudDsKLQotICAgIHRoaXMuX3VwZGF0
ZUN1cnJlbnRDb250ZW50Vmlld0Nvb2tpZShldmVudCk7CiB9CiAKLVdlYkluc3BlY3Rvci5fc2hv
d0NvbnRlbnRWaWV3Rm9yQ29va2llID0gZnVuY3Rpb24oY29va2llKQorV2ViSW5zcGVjdG9yLl9y
ZXN0b3JlSW5zcGVjdG9yVmlld1N0YXRlRnJvbUNvb2tpZSA9IGZ1bmN0aW9uKGNvb2tpZSwgY2F1
c2VkQnlSZWxvYWQpCiB7Ci0gICAgaWYgKCFjb29raWUgfHwgIWNvb2tpZS50eXBlKQotICAgICAg
ICByZXR1cm4gbnVsbDsKLQotICAgIHRoaXMuX3BlbmRpbmdDb250ZW50Vmlld0Nvb2tpZSA9IGNv
b2tpZTsKLSAgICB2YXIgc2hvd25Db250ZW50VmlldyA9IHRoaXMuX3Jlc29sdmVBbmRTaG93UGVu
ZGluZ0NvbnRlbnRWaWV3Q29va2llKCk7Ci0KLSAgICAvLyBBdCB0aGlzIHBvaW50LCB3ZSBhc3N1
bWUgbm8gc3RvcmFnZSBvYmplY3RzIG9yIHZpZXdzIGhhdmUgYmVlbiBjcmVhdGVkIHlldC4KLSAg
ICAvLyBJZiB0aGUgY29va2llIHJlcXVlc3RzIHRoZXNlIHZpZXdzLCB0aGV5IHdpbGwgYmUgc2hv
d24gd2hlbiB0aGUgc3RvcmFnZSBvYmplY3QKLSAgICAvLyBpcyBhZGRlZCAoaWYgaXQgbWF0Y2hl
cyBleGFjdGx5KSwgb3IgYW55IHZpZXcgb2YgdGhlIHNhbWUgdHlwZSAoYWZ0ZXIgYSB0aW1lb3V0
KS4KLSAgICBpZiAoIXNob3duQ29udGVudFZpZXcpIHsKLSAgICAgICAgaWYgKHRoaXMuX2xhc3RB
dHRlbXB0Q29va2llQ2hlY2tpbmdUaW1lb3V0KQotICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRo
aXMuX2xhc3RBdHRlbXB0Q29va2llQ2hlY2tpbmdUaW1lb3V0KTsKLQotICAgICAgICB2YXIgbGFz
dEF0dGVtcHRUb1Jlc3RvcmVGcm9tQ29va2llID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBk
ZWxldGUgdGhpcy5fbGFzdEF0dGVtcHRDb29raWVDaGVja2luZ1RpbWVvdXQ7Ci0gICAgICAgICAg
ICB0aGlzLl9yZXNvbHZlQW5kU2hvd1BlbmRpbmdDb250ZW50Vmlld0Nvb2tpZSh0cnVlKTsKLSAg
ICAgICAgfTsKLQotICAgICAgICAvLyBXaGVuIHRoZSBzcGVjaWZpYyBzdG9yYWdlIGl0ZW0gd2Fz
bid0IGZvdW5kIHdlIHdhbnQgdG8gcmVsYXggdGhlIGNoZWNrIHRvIHNob3cgdGhlIGZpcnN0IGl0
ZW0gd2l0aCB0aGUKLSAgICAgICAgLy8gc2FtZSB0eXBlLiBUaGVyZSBpcyBubyBnb29kIHRpbWUg
dG8gbmF0dXJhbGx5IGRlY2xhcmUgdGhlIGNvb2tpZSB3YXNuJ3QgZm91bmQsIHNvIHdlIGRvIHRo
YXQgb24gYSB0aW1lb3V0LgotICAgICAgICB0aGlzLl9sYXN0QXR0ZW1wdENvb2tpZUNoZWNraW5n
VGltZW91dCA9IHNldFRpbWVvdXQobGFzdEF0dGVtcHRUb1Jlc3RvcmVGcm9tQ29va2llLmJpbmQo
dGhpcyksIDUwMCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIHNob3duQ29udGVudFZpZXc7Ci19Ci0K
LVdlYkluc3BlY3Rvci5fcmVzb2x2ZUFuZFNob3dQZW5kaW5nQ29udGVudFZpZXdDb29raWUgPSBm
dW5jdGlvbihtYXRjaE9uVHlwZUFsb25lKQotewotICAgIHZhciBjb29raWUgPSB0aGlzLl9wZW5k
aW5nQ29udGVudFZpZXdDb29raWU7CiAgICAgaWYgKCFjb29raWUpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgIHZhciByZXByZXNlbnRlZE9iamVjdCA9IG51bGw7Ci0KLSAgICBpZiAoY29v
a2llLnR5cGUgPT09IFdlYkluc3BlY3Rvci5Db250ZW50Vmlld0Nvb2tpZVR5cGUuUmVzb3VyY2Up
Ci0gICAgICAgIHJlcHJlc2VudGVkT2JqZWN0ID0gdGhpcy5mcmFtZVJlc291cmNlTWFuYWdlci5v
YmplY3RGb3JDb29raWUoY29va2llKTsKLQotICAgIGlmIChjb29raWUudHlwZSA9PT0gV2ViSW5z
cGVjdG9yLkNvbnRlbnRWaWV3Q29va2llVHlwZS5UaW1lbGluZXMpCi0gICAgICAgIHJlcHJlc2Vu
dGVkT2JqZWN0ID0gdGhpcy50aW1lbGluZU1hbmFnZXIub2JqZWN0Rm9yQ29va2llKGNvb2tpZSk7
Ci0KLSAgICBpZiAoY29va2llLnR5cGUgPT09IFdlYkluc3BlY3Rvci5Db250ZW50Vmlld0Nvb2tp
ZVR5cGUuQ29va2llU3RvcmFnZSB8fCBjb29raWUudHlwZSA9PT0gV2ViSW5zcGVjdG9yLkNvbnRl
bnRWaWV3Q29va2llVHlwZS5EYXRhYmFzZSAgfHwgY29va2llLnR5cGUgPT09IFdlYkluc3BlY3Rv
ci5Db250ZW50Vmlld0Nvb2tpZVR5cGUuRGF0YWJhc2VUYWJsZSB8fCBjb29raWUudHlwZSA9PT0g
V2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29va2llVHlwZS5ET01TdG9yYWdlKQotICAgICAgICBy
ZXByZXNlbnRlZE9iamVjdCA9IHRoaXMuc3RvcmFnZU1hbmFnZXIub2JqZWN0Rm9yQ29va2llKGNv
b2tpZSwgbWF0Y2hPblR5cGVBbG9uZSk7CisgICAgICAgIHJldHVybjsKIAotICAgIGlmIChjb29r
aWUudHlwZSA9PT0gV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29va2llVHlwZS5BcHBsaWNhdGlv
bkNhY2hlKQotICAgICAgICByZXByZXNlbnRlZE9iamVjdCA9IHRoaXMuYXBwbGljYXRpb25DYWNo
ZU1hbmFnZXIub2JqZWN0Rm9yQ29va2llKGNvb2tpZSwgbWF0Y2hPblR5cGVBbG9uZSk7CisgICAg
Ly8gVGhlIGNvbnNvbGUgZG9lcyBub3QgaGF2ZSBhIHNpZGViYXIsIHNvIGhhbmRsZSBpdHMgc3Bl
Y2lhbCBjb29raWUgaGVyZS4KKyAgICBpZiAoY29va2llW1dlYkluc3BlY3Rvci5TZWxlY3RlZFNp
ZGViYXJQYW5lbENvb2tpZUtleV0gPT09ICJjb25zb2xlIikgeworICAgICAgICB0aGlzLnNob3dG
dWxsSGVpZ2h0Q29uc29sZSgpOworICAgICAgICByZXR1cm47CisgICAgfQogCi0gICAgaWYgKCFy
ZXByZXNlbnRlZE9iamVjdCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGNvbnN0IG1hdGNo
VHlwZU9ubHlEZWxheUZvclJlbG9hZCA9IDIwMDA7CisgICAgY29uc3QgbWF0Y2hUeXBlT25seURl
bGF5Rm9yUmVvcGVuID0gMTAwMDsKKyAgICB2YXIgc2lkZWJhclBhbmVsSWRlbnRpZmllciA9IGNv
b2tpZVtXZWJJbnNwZWN0b3IuU2VsZWN0ZWRTaWRlYmFyUGFuZWxDb29raWVLZXldOworICAgIHZh
ciBzaWRlYmFyUGFuZWwgPSBXZWJJbnNwZWN0b3IubmF2aWdhdGlvblNpZGViYXIuZmluZFNpZGVi
YXJQYW5lbChzaWRlYmFyUGFuZWxJZGVudGlmaWVyKTsKKyAgICBpZiAoIXNpZGViYXJQYW5lbCkK
KyAgICAgICAgcmV0dXJuOwogCi0gICAgLy8gSWYgd2UgcmVhY2hlZCB0aGlzIHBvaW50LCB0aGVu
IHdlIHNob3VsZCBiZSBhYmxlIHRvIGNyZWF0ZSBhbmQvb3IgZGlzcGxheSBhIGNvbnRlbnQgdmll
dyBiYXNlZCBvbiB0aGUgY29va2llLgotICAgIGRlbGV0ZSB0aGlzLl9wZW5kaW5nQ29udGVudFZp
ZXdDb29raWU7Ci0gICAgaWYgKHRoaXMuX2xhc3RBdHRlbXB0Q29va2llQ2hlY2tpbmdUaW1lb3V0
KQotICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5fbGFzdEF0dGVtcHRDb29raWVDaGVja2luZ1Rp
bWVvdXQpOworICAgIFdlYkluc3BlY3Rvci5uYXZpZ2F0aW9uU2lkZWJhci5zZWxlY3RlZFNpZGVi
YXJQYW5lbCA9IHNpZGViYXJQYW5lbDsKIAotICAgIC8vIERlbGF5IHRoaXMgd29yayBiZWNhdXNl
IG90aGVyIGxpc3RlbmVycyBvZiB0aGUgb3JpZ2luYXRpbmcgZXZlbnQgbWlnaHQgbm90IGhhdmUg
ZmlyZWQgeWV0LgotICAgIC8vIFNvIGRpc3BsYXlpbmcgdGhlIGNvbnRlbnQgdmlldyBiZWZvcmUg
dGhvc2UgbGlzdGVuZXJzIGRvIHRoZWlyIHdvcmsgbWlnaHQgY2F1c2UgdGhlCi0gICAgLy8gZGVw
ZW5kZW50IHZpZXcgc3RhdGVzIChuYXZpZ2F0aW9uIHNpZGViYXIgdHJlZSBlbGVtZW50cywgcGF0
aCBjb21wb25lbnRzKSB0byBiZSB3cm9uZy4KLSAgICBmdW5jdGlvbiBkZWxheWVkV29yaygpCi0g
ICAgewotICAgICAgICB0aGlzLmNvbnRlbnRCcm93c2VyLnNob3dDb250ZW50Vmlld0ZvclJlcHJl
c2VudGVkT2JqZWN0KHJlcHJlc2VudGVkT2JqZWN0LCBjb29raWUpOwotICAgIH0KLSAgICBzZXRU
aW1lb3V0KGRlbGF5ZWRXb3JrLmJpbmQodGhpcyksIDApOwotICAgIHJldHVybiB0cnVlOworICAg
IHZhciByZWxheE1hdGNoRGVsYXkgPSBjYXVzZWRCeVJlbG9hZCA/IG1hdGNoVHlwZU9ubHlEZWxh
eUZvclJlbG9hZCA6IG1hdGNoVHlwZU9ubHlEZWxheUZvclJlb3BlbjsKKyAgICBzaWRlYmFyUGFu
ZWwucmVzdG9yZVN0YXRlRnJvbUNvb2tpZShjb29raWUsIHJlbGF4TWF0Y2hEZWxheSk7CiB9CiAK
IFdlYkluc3BlY3Rvci5faW5pdGlhbGl6ZVdlYlNvY2tldElmTmVlZGVkID0gZnVuY3Rpb24oKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTmF2aWdhdGlv
blNpZGViYXJQYW5lbC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL05h
dmlnYXRpb25TaWRlYmFyUGFuZWwuanMKaW5kZXggOGE5ZTUyY2U1YjM0OGUxMWVjNGE0NTMxY2Yy
N2I0YjdjMGNlMzdhNC4uNTI1NDc2ZTFlMGQxZmU1YThjMTYxYjNlMmExOTA5Mzk3YWQ5Y2JmYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTmF2aWdhdGlv
blNpZGViYXJQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLmpzCkBAIC00NCw2ICs0NCw4IEBAIFdlYkluc3BlY3Rv
ci5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsID0gZnVuY3Rpb24oaWRlbnRpZmllciwgZGlzcGxheU5h
bWUsIGltYWdlLCBrCiAgICAgaWYgKGF1dG9IaWRlVG9vbGJhckl0ZW1XaGVuRW1wdHkpCiAgICAg
ICAgIHRoaXMudG9vbGJhckl0ZW0uaGlkZGVuID0gdHJ1ZTsKIAorICAgIHRoaXMuX3Zpc2libGVD
b250ZW50VHJlZU91dGxpbmVzID0gbmV3IFNldDsKKwogICAgIHRoaXMuX2NvbnRlbnRFbGVtZW50
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgdGhpcy5fY29udGVudEVsZW1l
bnQuY2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwuQ29udGVu
dEVsZW1lbnRTdHlsZUNsYXNzTmFtZTsKICAgICB0aGlzLl9jb250ZW50RWxlbWVudC5hZGRFdmVu
dExpc3RlbmVyKCJzY3JvbGwiLCB0aGlzLl91cGRhdGVDb250ZW50T3ZlcmZsb3dTaGFkb3dWaXNp
YmlsaXR5LmJpbmQodGhpcykpOwpAQCAtMTM1LDYgKzEzNyw5IEBAIFdlYkluc3BlY3Rvci5OYXZp
Z2F0aW9uU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fY29udGVudFRy
ZWVPdXRsaW5lID0gbmV3VHJlZU91dGxpbmU7CiAgICAgICAgIHRoaXMuX2NvbnRlbnRUcmVlT3V0
bGluZS5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRl
YmFyUGFuZWwuQ29udGVudFRyZWVPdXRsaW5lRWxlbWVudEhpZGRlblN0eWxlQ2xhc3NOYW1lKTsK
IAorICAgICAgICB0aGlzLl92aXNpYmxlQ29udGVudFRyZWVPdXRsaW5lcy5kZWxldGUodGhpcy5f
Y29udGVudFRyZWVPdXRsaW5lKTsKKyAgICAgICAgdGhpcy5fdmlzaWJsZUNvbnRlbnRUcmVlT3V0
bGluZXMuYWRkKG5ld1RyZWVPdXRsaW5lKTsKKwogICAgICAgICB0aGlzLl91cGRhdGVGaWx0ZXIo
KTsKICAgICB9LAogCkBAIC0xNjMsNiArMTY4LDkgQEAgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25T
aWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICBjb250ZW50VHJlZU91dGxpbmUub25j
b2xsYXBzZSA9IHRoaXMuX3RyZWVFbGVtZW50RXhwYW5kZWRPckNvbGxhcHNlZC5iaW5kKHRoaXMp
OwogICAgICAgICBjb250ZW50VHJlZU91dGxpbmUuYWxsb3dzUmVwZWF0U2VsZWN0aW9uID0gdHJ1
ZTsKIAorICAgICAgICBpZiAoZG9udEhpZGVCeURlZmF1bHQpCisgICAgICAgICAgICB0aGlzLl92
aXNpYmxlQ29udGVudFRyZWVPdXRsaW5lcy5hZGQoY29udGVudFRyZWVPdXRsaW5lKTsKKwogICAg
ICAgICByZXR1cm4gY29udGVudFRyZWVPdXRsaW5lOwogICAgIH0sCiAKQEAgLTE3OSw2ICsxODcs
NDYgQEAgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewog
ICAgICAgICAgICAgc2VsZWN0ZWRUcmVlRWxlbWVudC5zZWxlY3QoKTsKICAgICB9LAogCisgICAg
c2F2ZVN0YXRlVG9Db29raWU6IGZ1bmN0aW9uKGNvb2tpZSkKKyAgICB7CisgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KGNvb2tpZSk7CisKKyAgICAgICAgLy8gVGhpcyBkb2VzIG5vdCBzYXZlIGZvbGRl
ciBzZWxlY3Rpb25zLCB3aGljaCBsYWNrIGEgcmVwcmVzZW50ZWQgb2JqZWN0IGFuZCBjb250ZW50
IHZpZXcuCisgICAgICAgIHZhciBzZWxlY3RlZFRyZWVFbGVtZW50ID0gbnVsbDsKKyAgICAgICAg
dGhpcy5fdmlzaWJsZUNvbnRlbnRUcmVlT3V0bGluZXMuZm9yRWFjaChmdW5jdGlvbihvdXRsaW5l
KSB7CisgICAgICAgICAgICBpZiAob3V0bGluZS5zZWxlY3RlZFRyZWVFbGVtZW50KQorICAgICAg
ICAgICAgICAgIHNlbGVjdGVkVHJlZUVsZW1lbnQgPSBvdXRsaW5lLnNlbGVjdGVkVHJlZUVsZW1l
bnQ7CisgICAgICAgIH0pOworCisgICAgICAgIGlmICghc2VsZWN0ZWRUcmVlRWxlbWVudCkKKyAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICB2YXIgcmVwcmVzZW50ZWRPYmplY3QgPSBzZWxl
Y3RlZFRyZWVFbGVtZW50LnJlcHJlc2VudGVkT2JqZWN0OworICAgICAgICBjb29raWVbV2ViSW5z
cGVjdG9yLlR5cGVJZGVudGlmaWVyQ29va2llS2V5XSA9IHJlcHJlc2VudGVkT2JqZWN0LmNvbnN0
cnVjdG9yLlR5cGVJZGVudGlmaWVyOworICAgICAgICByZXByZXNlbnRlZE9iamVjdC5zYXZlSWRl
bnRpdHlUb0Nvb2tpZShjb29raWUpOworICAgIH0sCisKKyAgICAvLyBUaGlzIGNhbiBiZSBzdXBw
bGVtZW50ZWQgYnkgc3ViY2xhc3NlcyB0aGF0IGFkbWl0IGEgc2ltcGxlciBzdHJhdGVneSBmb3Ig
c3RhdGljIHRyZWUgZWxlbWVudHMuCisgICAgcmVzdG9yZVN0YXRlRnJvbUNvb2tpZTogZnVuY3Rp
b24oY29va2llLCByZWxheGVkTWF0Y2hEZWxheSkKKyAgICB7CisgICAgICAgIHRoaXMuX3BlbmRp
bmdWaWV3U3RhdGVDb29raWUgPSBjb29raWU7CisKKyAgICAgICAgLy8gQ2hlY2sgaWYgYW55IGV4
aXN0aW5nIHRyZWUgZWxlbWVudHMgaW4gYW55IG91dGxpbmUgbWF0Y2ggdGhlIGNvb2tpZS4KKyAg
ICAgICAgdGhpcy5fY2hlY2tPdXRsaW5lc0ZvclBlbmRpbmdWaWV3U3RhdGVDb29raWUoKTsKKwor
ICAgICAgICBpZiAodGhpcy5fZmluYWxBdHRlbXB0VG9SZXN0b3JlVmlld1N0YXRlVGltZW91dCkK
KyAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLl9maW5hbEF0dGVtcHRUb1Jlc3RvcmVWaWV3
U3RhdGVUaW1lb3V0KTsKKworICAgICAgICB2YXIgZmluYWxBdHRlbXB0VG9SZXN0b3JlVmlld1N0
YXRlRnJvbUNvb2tpZSA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgZGVsZXRlIHRoaXMuX2Zp
bmFsQXR0ZW1wdFRvUmVzdG9yZVZpZXdTdGF0ZVRpbWVvdXQ7CisgICAgICAgICAgICB0aGlzLl9j
aGVja091dGxpbmVzRm9yUGVuZGluZ1ZpZXdTdGF0ZUNvb2tpZSh0cnVlKTsKKyAgICAgICAgfTsK
KworICAgICAgICAvLyBJZiB0aGUgc3BlY2lmaWMgdHJlZSBlbGVtZW50IHdhc24ndCBmb3VuZCwg
d2UgbWF5IG5lZWQgdG8gd2FpdCBmb3IgdGhlIHJlc291cmNlcworICAgICAgICAvLyB0byBiZSBy
ZWdpc3RlcmVkLiBXZSB0cnkgb25lIGxhc3QgdGltZSAobWF0Y2ggdHlwZSBvbmx5KSBhZnRlciBh
biBhcmJpdHJhcnkgYW1vdW50IG9mIHRpbWVvdXQuCisgICAgICAgIHRoaXMuX2ZpbmFsQXR0ZW1w
dFRvUmVzdG9yZVZpZXdTdGF0ZVRpbWVvdXQgPSBzZXRUaW1lb3V0KGZpbmFsQXR0ZW1wdFRvUmVz
dG9yZVZpZXdTdGF0ZUZyb21Db29raWUuYmluZCh0aGlzKSwgcmVsYXhlZE1hdGNoRGVsYXkpOwor
ICAgIH0sCisKICAgICBzaG93RW1wdHlDb250ZW50UGxhY2Vob2xkZXI6IGZ1bmN0aW9uKG1lc3Nh
Z2UsIGhpZGVUb29sYmFySXRlbSkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KG1lc3Nh
Z2UpOwpAQCAtMzk5LDYgKzQ0Nyw3IEBAIFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uU2lkZWJhclBh
bmVsLnByb3RvdHlwZSA9IHsKIAogICAgICAgICB0aGlzLl9jaGVja0ZvckVtcHR5RmlsdGVyUmVz
dWx0cygpOwogICAgICAgICB0aGlzLl91cGRhdGVDb250ZW50T3ZlcmZsb3dTaGFkb3dWaXNpYmls
aXR5KCk7CisgICAgICAgIHRoaXMuX2NoZWNrRWxlbWVudHNGb3JQZW5kaW5nVmlld1N0YXRlQ29v
a2llKHRyZWVFbGVtZW50KTsKICAgICB9LAogCiAgICAgX3RyZWVFbGVtZW50RXhwYW5kZWRPckNv
bGxhcHNlZDogZnVuY3Rpb24odHJlZUVsZW1lbnQpCkBAIC00OTAsNiArNTM5LDcwIEBAIFdlYklu
c3BlY3Rvci5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKIAogICAgICAgICAv
LyBDaGVjayBvbiBhIGRlbGF5IHRvIGNvYWxlc2NlIG11bHRpcGxlIGNhbGxzIHRvIF9jaGVja0Zv
ck9sZFJlc291cmNlcy4KICAgICAgICAgdGhpcy5fY2hlY2tGb3JPbGRSZXNvdXJjZXNUaW1lb3V0
SWRlbnRpZmllciA9IHNldFRpbWVvdXQoZGVsYXllZFdvcmsuYmluZCh0aGlzKSwgMCk7CisgICAg
fSwKKworICAgIF9jaGVja091dGxpbmVzRm9yUGVuZGluZ1ZpZXdTdGF0ZUNvb2tpZTogZnVuY3Rp
b24obWF0Y2hUeXBlT25seSkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5fcGVuZGluZ1ZpZXdT
dGF0ZUNvb2tpZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB2YXIgdmlzaWJsZVRy
ZWVFbGVtZW50cyA9IFtdOworICAgICAgICB0aGlzLl92aXNpYmxlQ29udGVudFRyZWVPdXRsaW5l
cy5mb3JFYWNoKGZ1bmN0aW9uKG91dGxpbmUpIHsKKyAgICAgICAgICAgIHZhciBjdXJyZW50VHJl
ZUVsZW1lbnQgPSBvdXRsaW5lLmhhc0NoaWxkcmVuID8gb3V0bGluZS5jaGlsZHJlblswXSA6IG51
bGw7CisgICAgICAgICAgICB3aGlsZSAoY3VycmVudFRyZWVFbGVtZW50KSB7CisgICAgICAgICAg
ICAgICAgdmlzaWJsZVRyZWVFbGVtZW50cy5wdXNoKGN1cnJlbnRUcmVlRWxlbWVudCk7CisgICAg
ICAgICAgICAgICAgY3VycmVudFRyZWVFbGVtZW50ID0gY3VycmVudFRyZWVFbGVtZW50LnRyYXZl
cnNlTmV4dFRyZWVFbGVtZW50KGZhbHNlLCBudWxsLCBmYWxzZSk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0pOworCisgICAgICAgIHJldHVybiB0aGlzLl9jaGVja0VsZW1lbnRzRm9yUGVuZGlu
Z1ZpZXdTdGF0ZUNvb2tpZSh2aXNpYmxlVHJlZUVsZW1lbnRzLCBtYXRjaFR5cGVPbmx5KTsKKyAg
ICB9LAorCisgICAgX2NoZWNrRWxlbWVudHNGb3JQZW5kaW5nVmlld1N0YXRlQ29va2llOiBmdW5j
dGlvbih0cmVlRWxlbWVudHMsIG1hdGNoVHlwZU9ubHkpCisgICAgeworICAgICAgICBpZiAoIXRo
aXMuX3BlbmRpbmdWaWV3U3RhdGVDb29raWUpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgdmFyIGNvb2tpZSA9IHRoaXMuX3BlbmRpbmdWaWV3U3RhdGVDb29raWU7CisKKyAgICAgICAg
ZnVuY3Rpb24gdHJlZUVsZW1lbnRNYXRjaGVzQ29va2llKHRyZWVFbGVtZW50KQorICAgICAgICB7
CisgICAgICAgICAgICB2YXIgcmVwcmVzZW50ZWRPYmplY3QgPSB0cmVlRWxlbWVudC5yZXByZXNl
bnRlZE9iamVjdDsKKyAgICAgICAgICAgIGlmICghcmVwcmVzZW50ZWRPYmplY3QpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICB2YXIgdHlwZUlkZW50aWZpZXIg
PSBjb29raWVbV2ViSW5zcGVjdG9yLlR5cGVJZGVudGlmaWVyQ29va2llS2V5XTsKKyAgICAgICAg
ICAgIGlmICh0eXBlSWRlbnRpZmllciAhPT0gcmVwcmVzZW50ZWRPYmplY3QuY29uc3RydWN0b3Iu
VHlwZUlkZW50aWZpZXIpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAg
ICAgICBpZiAobWF0Y2hUeXBlT25seSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKwor
ICAgICAgICAgICAgdmFyIGNhbmRpZGF0ZU9iamVjdENvb2tpZSA9IHt9OworICAgICAgICAgICAg
cmVwcmVzZW50ZWRPYmplY3Quc2F2ZUlkZW50aXR5VG9Db29raWUoY2FuZGlkYXRlT2JqZWN0Q29v
a2llKTsKKworICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKGNhbmRpZGF0ZU9iamVjdENv
b2tpZSkuZXZlcnkoZnVuY3Rpb24gdmFsdWVzTWF0Y2hGb3JLZXkoa2V5KSB7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIGNhbmRpZGF0ZU9iamVjdENvb2tpZVtrZXldID09PSBjb29raWVba2V5XTsK
KyAgICAgICAgICAgIH0pOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCEodHJlZUVsZW1lbnRz
IGluc3RhbmNlb2YgQXJyYXkpKQorICAgICAgICAgICAgdHJlZUVsZW1lbnRzID0gW3RyZWVFbGVt
ZW50c107CisKKyAgICAgICAgdmFyIG1hdGNoZWRFbGVtZW50ID0gbnVsbDsKKyAgICAgICAgdHJl
ZUVsZW1lbnRzLnNvbWUoZnVuY3Rpb24oZWxlbWVudCkgeworICAgICAgICAgICAgaWYgKHRyZWVF
bGVtZW50TWF0Y2hlc0Nvb2tpZShlbGVtZW50KSkgeworICAgICAgICAgICAgICAgIG1hdGNoZWRF
bGVtZW50ID0gZWxlbWVudDsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfSk7CisKKyAgICAgICAgaWYgKG1hdGNoZWRFbGVtZW50KSB7CisgICAg
ICAgICAgICBtYXRjaGVkRWxlbWVudC5yZXZlYWxBbmRTZWxlY3QoKTsKKyAgICAgICAgICAgIGRl
bGV0ZSB0aGlzLl9wZW5kaW5nVmlld1N0YXRlQ29va2llOworICAgICAgICAgICAgaWYgKHRoaXMu
X2ZpbmFsQXR0ZW1wdFRvUmVzdG9yZVZpZXdTdGF0ZVRpbWVvdXQpCisgICAgICAgICAgICAgICAg
Y2xlYXJUaW1lb3V0KHRoaXMuX2ZpbmFsQXR0ZW1wdFRvUmVzdG9yZVZpZXdTdGF0ZVRpbWVvdXQp
OworICAgICAgICB9CiAgICAgfQogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvUmVzb3VyY2UuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9SZXNvdXJjZS5qcwppbmRleCAzYzI2ZmViZGEzN2VmMzQ4Njg0MzhkZWIxNzI0
MGE0NDIyNmFhOGQzLi4wMTlkNTNhY2Q5MGUyZDI2MjlmMmE1MjhlZmQ5NzFkNWY4ZmEwNmNlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9SZXNvdXJjZS5q
cworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9SZXNvdXJjZS5qcwpA
QCAtNTUsNiArNTUsMTAgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlID0gZnVuY3Rpb24odXJsLCBt
aW1lVHlwZSwgdHlwZSwgbG9hZGVySWRlbnRpZmllciwgcmVxdWVzdEkKIAogV2ViSW5zcGVjdG9y
Lk9iamVjdC5hZGRDb25zdHJ1Y3RvckZ1bmN0aW9ucyhXZWJJbnNwZWN0b3IuUmVzb3VyY2UpOwog
CitXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZUlkZW50aWZpZXIgPSAicmVzb3VyY2UiOworV2Vi
SW5zcGVjdG9yLlJlc291cmNlLlVSTENvb2tpZUtleSA9ICJyZXNvdXJjZS11cmwiOworV2ViSW5z
cGVjdG9yLlJlc291cmNlLk1haW5SZXNvdXJjZUNvb2tpZUtleSA9ICJyZXNvdXJjZS1pcy1tYWlu
LXJlc291cmNlIjsKKwogV2ViSW5zcGVjdG9yLlJlc291cmNlLkV2ZW50ID0gewogICAgIFVSTERp
ZENoYW5nZTogInJlc291cmNlLXVybC1kaWQtY2hhbmdlIiwKICAgICBNSU1FVHlwZURpZENoYW5n
ZTogInJlc291cmNlLW1pbWUtdHlwZS1kaWQtY2hhbmdlIiwKQEAgLTY5MSw2ICs2OTUsMTIgQEAg
V2ViSW5zcGVjdG9yLlJlc291cmNlLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX3R5
cGUgPSBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5TY3JpcHQ7CiAgICAgICAgICAgICB0aGlz
LmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuUmVzb3VyY2UuRXZlbnQuVHlw
ZURpZENoYW5nZSwge29sZFR5cGU6IG9sZFR5cGV9KTsKICAgICAgICAgfQorICAgIH0sCisKKyAg
ICBzYXZlSWRlbnRpdHlUb0Nvb2tpZTogZnVuY3Rpb24oY29va2llKQorICAgIHsKKyAgICAgICAg
Y29va2llW1dlYkluc3BlY3Rvci5SZXNvdXJjZS5VUkxDb29raWVLZXldID0gdGhpcy51cmw7Cisg
ICAgICAgIGNvb2tpZVtXZWJJbnNwZWN0b3IuUmVzb3VyY2UuTWFpblJlc291cmNlQ29va2llS2V5
XSA9IHRoaXMuaXNNYWluUmVzb3VyY2UoKTsKICAgICB9CiB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmll
dy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Jlc291cmNlQ2x1c3Rl
ckNvbnRlbnRWaWV3LmpzCmluZGV4IDMyMTkwMGNlZTRkMDJkZTk5MDBlYjA0N2NjOGQwYTc4NmVi
NTIxYzEuLmFhNWNkNTkzNTE5YmVmZDFkYjk5YzcxMTAwNDYzY2E5ZjRmZmM1YjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Jlc291cmNlQ2x1c3RlckNv
bnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Jl
c291cmNlQ2x1c3RlckNvbnRlbnRWaWV3LmpzCkBAIC00Nyw2ICs0Nyw4IEBAIFdlYkluc3BlY3Rv
ci5SZXNvdXJjZUNsdXN0ZXJDb250ZW50VmlldyA9IGZ1bmN0aW9uKHJlc291cmNlKQogICAgIHRo
aXMuX2N1cnJlbnRDb250ZW50Vmlld1NldHRpbmcgPSBuZXcgV2ViSW5zcGVjdG9yLlNldHRpbmco
InJlc291cmNlLWN1cnJlbnQtdmlldy0iICsgdGhpcy5fcmVzb3VyY2UudXJsLmhhc2gsIFdlYklu
c3BlY3Rvci5SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5SZXNwb25zZUlkZW50aWZpZXIpOwog
fTsKIAorV2ViSW5zcGVjdG9yLlJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3LkNvbnRlbnRWaWV3
SWRlbnRpZmllckNvb2tpZUtleSA9ICJyZXNvdXJjZS1jbHVzdGVyLWNvbnRlbnQtdmlldy1pZGVu
dGlmaWVyIjsKKwogV2ViSW5zcGVjdG9yLlJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3LlJlcXVl
c3RJY29uU3R5bGVDbGFzc05hbWUgPSAicmVxdWVzdC1pY29uIjsKIFdlYkluc3BlY3Rvci5SZXNv
dXJjZUNsdXN0ZXJDb250ZW50Vmlldy5SZXNwb25zZUljb25TdHlsZUNsYXNzTmFtZSA9ICJyZXNw
b25zZS1pY29uIjsKIFdlYkluc3BlY3Rvci5SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5SZXF1
ZXN0SWRlbnRpZmllciA9ICJyZXF1ZXN0IjsKQEAgLTE0MiwxNyArMTQ0LDEzIEBAIFdlYkluc3Bl
Y3Rvci5SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAKICAgICBzYXZl
VG9Db29raWU6IGZ1bmN0aW9uKGNvb2tpZSkKICAgICB7Ci0gICAgICAgIGNvb2tpZS50eXBlID0g
V2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29va2llVHlwZS5SZXNvdXJjZTsKLSAgICAgICAgY29v
a2llLnVybCA9IHRoaXMucmVwcmVzZW50ZWRPYmplY3QudXJsOwotICAgICAgICBjb29raWUuc3Vi
dmlldyA9IHRoaXMuX2N1cnJlbnRDb250ZW50Vmlld1NldHRpbmcudmFsdWU7CisgICAgICAgIGNv
b2tpZVtXZWJJbnNwZWN0b3IuUmVzb3VyY2VDbHVzdGVyQ29udGVudFZpZXcuQ29udGVudFZpZXdJ
ZGVudGlmaWVyQ29va2llS2V5XSA9IHRoaXMuX2N1cnJlbnRDb250ZW50Vmlld1NldHRpbmcudmFs
dWU7CiAgICAgfSwKIAogICAgIHJlc3RvcmVGcm9tQ29va2llOiBmdW5jdGlvbihjb29raWUpCiAg
ICAgewotICAgICAgICBpZiAoImxpbmVOdW1iZXIiIGluIGNvb2tpZSAmJiAiY29sdW1uTnVtYmVy
IiBpbiBjb29raWUpCi0gICAgICAgICAgICByZXR1cm4gdGhpcy5zaG93UmVzcG9uc2UobmV3IFdl
Ykluc3BlY3Rvci5Tb3VyY2VDb2RlUG9zaXRpb24oY29va2llLmxpbmVOdW1iZXIsIGNvb2tpZS5j
b2x1bW5OdW1iZXIpKTsKLQotICAgICAgICB0aGlzLl9zaG93Q29udGVudFZpZXdGb3JJZGVudGlm
aWVyKGNvb2tpZS5zdWJ2aWV3KTsKKyAgICAgICAgdmFyIHZpZXdJZGVudGlmaWVyID0gY29va2ll
W1dlYkluc3BlY3Rvci5SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5Db250ZW50Vmlld0lkZW50
aWZpZXJDb29raWVLZXldOworICAgICAgICB0aGlzLl9zaG93Q29udGVudFZpZXdGb3JJZGVudGlm
aWVyKHZpZXdJZGVudGlmaWVyKTsKICAgICB9LAogCiAgICAgc2hvd1JlcXVlc3Q6IGZ1bmN0aW9u
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Njcmlw
dC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1NjcmlwdC5qcwppbmRl
eCA2M2Y0MDFkNGM4MmM3NGY0YjcxNTc3MDcwOWUzNGE5ZDEzMzU1NjBkLi40NmYxZGRiY2VlMGFm
NzI1ZTk2YjY5ZTE3N2JjMjY1MmFjMzZjOGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9TY3JpcHQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvU2NyaXB0LmpzCkBAIC00Myw2ICs0MywxMCBAQCBXZWJJbnNwZWN0b3Iu
U2NyaXB0ID0gZnVuY3Rpb24oaWQsIHJhbmdlLCB1cmwsIGluamVjdGVkLCBzb3VyY2VNYXBVUkwp
CiAgICAgICAgIFdlYkluc3BlY3Rvci5zb3VyY2VNYXBNYW5hZ2VyLmRvd25sb2FkU291cmNlTWFw
KHNvdXJjZU1hcFVSTCwgdGhpcy5fdXJsLCB0aGlzKTsKIH07CiAKK1dlYkluc3BlY3Rvci5TY3Jp
cHQuVHlwZUlkZW50aWZpZXIgPSAic2NyaXB0IjsKK1dlYkluc3BlY3Rvci5TY3JpcHQuVVJMQ29v
a2llS2V5ID0gInNjcmlwdC11cmwiOworV2ViSW5zcGVjdG9yLlNjcmlwdC5EaXNwbGF5TmFtZUNv
b2tpZUtleSA9ICJzY3JpcHQtZGlzcGxheS1uYW1lIjsKKwogV2ViSW5zcGVjdG9yLlNjcmlwdC5y
ZXNldFVuaXF1ZURpc3BsYXlOYW1lTnVtYmVycyA9IGZ1bmN0aW9uKCkKIHsKICAgICBXZWJJbnNw
ZWN0b3IuU2NyaXB0Ll9uZXh0VW5pcXVlRGlzcGxheU5hbWVOdW1iZXIgPSAxOwpAQCAtMTE3LDYg
KzEyMSwxMiBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0LnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfSwKIAorICAgIHNhdmVJZGVudGl0eVRvQ29va2llOiBmdW5jdGlvbihj
b29raWUpCisgICAgeworICAgICAgICBjb29raWVbV2ViSW5zcGVjdG9yLlNjcmlwdC5VUkxDb29r
aWVLZXldID0gdGhpcy51cmw7CisgICAgICAgIGNvb2tpZVtXZWJJbnNwZWN0b3IuU2NyaXB0LkRp
c3BsYXlOYW1lQ29va2llS2V5XSA9IHRoaXMuZGlzcGxheU5hbWU7CisgICAgfSwKKwogICAgIC8v
IFByaXZhdGUKIAogICAgIF9yZXNvbHZlUmVzb3VyY2U6IGZ1bmN0aW9uKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1N0b3JhZ2VNYW5hZ2VyLmpzIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvU3RvcmFnZU1hbmFnZXIuanMKaW5k
ZXggODk1ZGExMTNjNmM4NWY3N2VmZGFmMDhmZjZiMzUwNGQ2Y2Q2NTY4NC4uZGI4M2NlMmY0ODQx
NzNkNzM5NTE2NjM3NGYzZmFiOTkzNjM4MGJmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvU3RvcmFnZU1hbmFnZXIuanMKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvU3RvcmFnZU1hbmFnZXIuanMKQEAgLTE0Nyw1NyArMTQ3
LDYgQEAgV2ViSW5zcGVjdG9yLlN0b3JhZ2VNYW5hZ2VyLnByb3RvdHlwZSA9IHsKICAgICAgICAg
dGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlN0b3JhZ2VNYW5hZ2Vy
LkV2ZW50LkRPTVN0b3JhZ2VPYmplY3RXYXNJbnNwZWN0ZWQsIHtkb21TdG9yYWdlOiBkb21TdG9y
YWdlfSk7CiAgICAgfSwKIAotICAgIG9iamVjdEZvckNvb2tpZTogZnVuY3Rpb24oY29va2llLCBt
YXRjaE9uVHlwZUFsb25lKQotICAgIHsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoY29va2llLnR5
cGUpOwotCi0gICAgICAgIHZhciBmaW5kTWF0Y2hpbmdPYmplY3RJbkFycmF5ID0gZnVuY3Rpb24g
KGFycmF5LCBtYXRjaGVzRnVuY3Rpb24pIHsKLSAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgYXJyYXkubGVuZ3RoOyArK2kpCi0gICAgICAgICAgICAgICAgaWYgKG1hdGNoZXNGdW5jdGlv
bi5jYWxsKG51bGwsIGFycmF5W2ldKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFycmF5
W2ldOwotCi0gICAgICAgICAgICByZXR1cm4gbWF0Y2hPblR5cGVBbG9uZSAmJiBhcnJheS5sZW5n
dGggPyBhcnJheVswXSA6IG51bGw7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgaWYgKGNvb2tpZS50
eXBlID09PSBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXdDb29raWVUeXBlLkNvb2tpZVN0b3JhZ2Up
IHsKLSAgICAgICAgICAgIGlmICh0aGlzLl9jb29raWVTdG9yYWdlT2JqZWN0c1tjb29raWUuaG9z
dF0pCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2Nvb2tpZVN0b3JhZ2VPYmplY3RzW2Nv
b2tpZS5ob3N0XTsKLQotICAgICAgICAgICAgaWYgKCFtYXRjaE9uVHlwZUFsb25lKQotICAgICAg
ICAgICAgICAgIHJldHVybiBudWxsOwotCi0gICAgICAgICAgICAvLyBJZiB3ZSBqdXN0IHdhbnQg
YW55IGNvb2tpZSBzdG9yYWdlIG9iamVjdCwgdXNlIHRoZSBmaXJzdCBvbmUuCi0gICAgICAgICAg
ICBmb3IgKHZhciBrZXkgaW4gdGhpcy5fY29va2llU3RvcmFnZU9iamVjdHMpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIHRoaXMuX2Nvb2tpZVN0b3JhZ2VPYmplY3RzW2tleV07Ci0KLSAgICAgICAg
ICAgIHJldHVybiBudWxsOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGNvb2tpZS50eXBlID09
PSBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXdDb29raWVUeXBlLkRPTVN0b3JhZ2UpIHsKLSAgICAg
ICAgICAgIHJldHVybiBmaW5kTWF0Y2hpbmdPYmplY3RJbkFycmF5KHRoaXMuX2RvbVN0b3JhZ2VP
YmplY3RzLCBmdW5jdGlvbihvYmplY3QpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gb2JqZWN0
Lmhvc3QgPT09IGNvb2tpZS5ob3N0ICYmIG9iamVjdC5pc0xvY2FsU3RvcmFnZSgpID09PSBjb29r
aWUuaXNMb2NhbFN0b3JhZ2U7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfQotCi0gICAgICAg
IGlmIChjb29raWUudHlwZSA9PT0gV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29va2llVHlwZS5E
YXRhYmFzZSkgewotICAgICAgICAgICAgcmV0dXJuIGZpbmRNYXRjaGluZ09iamVjdEluQXJyYXko
dGhpcy5fZGF0YWJhc2VPYmplY3RzLCBmdW5jdGlvbihvYmplY3QpIHsKLSAgICAgICAgICAgICAg
ICByZXR1cm4gb2JqZWN0Lmhvc3QgPT09IGNvb2tpZS5ob3N0ICYmIG9iamVjdC5uYW1lID09PSBj
b29raWUubmFtZTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gRklY
TUU6IFRoaXMgaXNuJ3QgZWFzeSB0byBpbXBsZW1lbnQgbGlrZSB0aGUgb3RoZXJzIHNpbmNlIERh
dGFiYXNlVHJlZUVsZW1lbnQKLSAgICAgICAgLy8gY3JlYXRlcyBkYXRhYmFzZSB0YWJsZSBvYmpl
Y3RzLCBhbmQgdGhleSBhcmVuJ3Qga25vd24gYnkgU3RvcmFnZU1hbmFnZXIuIEp1c3QKLSAgICAg
ICAgLy8gZGlzcGxheSB0aGUgZGF0YWJhc2UgaW5zdGVhZC4KLSAgICAgICAgaWYgKGNvb2tpZS50
eXBlID09PSBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXdDb29raWVUeXBlLkRhdGFiYXNlVGFibGUp
IHsKLSAgICAgICAgICAgIHJldHVybiBmaW5kTWF0Y2hpbmdPYmplY3RJbkFycmF5KHRoaXMuX2Rh
dGFiYXNlT2JqZWN0cywgZnVuY3Rpb24ob2JqZWN0KSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IG9iamVjdC5ob3N0ID09PSBjb29raWUuaG9zdCAmJiBvYmplY3QuZGF0YWJhc2UgPT09IGNvb2tp
ZS5uYW1lOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0KLQotICAgICAgICBjb25zb2xlLmFz
c2VydCgiVW5rbm93biBjb250ZW50IHZpZXcgY29va2llOiAiLCBjb29raWUpOwotICAgICAgICBy
ZXR1cm4gbnVsbDsKLSAgICB9LAotCiAgICAgLy8gUHJpdmF0ZQogCiAgICAgX21haW5SZXNvdXJj
ZURpZENoYW5nZTogZnVuY3Rpb24oZXZlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9UaW1lbGluZU1hbmFnZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9UaW1lbGluZU1hbmFnZXIuanMKaW5kZXggYTFhZDQ2ZTQ4YjBh
NWY1NzE4ZTkyZTJhMGIwZDQxM2Q4MjVlZDY4Yi4uYzVmYjhkNmZiNmFmZjgyZmY1ZDY5OTlhNTQ1
MTY5NjE0NDBjOTZmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVGltZWxpbmVNYW5hZ2VyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1RpbWVsaW5lTWFuYWdlci5qcwpAQCAtMjk5LDExICsyOTksNiBAQCBXZWJJbnNw
ZWN0b3IuVGltZWxpbmVNYW5hZ2VyLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX2xv
YWRFdmVudFRpbWUgPSB0aW1lc3RhbXA7CiAgICAgfSwKIAotICAgIG9iamVjdEZvckNvb2tpZTog
ZnVuY3Rpb24oY29va2llKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMudGltZWxpbmVzOwot
ICAgIH0sCi0KICAgICAvLyBQcml2YXRlCiAKICAgICBfY2xlYXI6IGZ1bmN0aW9uKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1RpbWVsaW5lc0NvbnRl
bnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGltZWxpbmVz
Q29udGVudFZpZXcuanMKaW5kZXggMTk4NGFlMzcxZjg1Mzg0OGZjMDA0MGFkYzM0NjUxZTgyZWQw
NmQxNi4uNWQ1ZDNiOTFlNjUxMGEyYTBmNTVkNzkyMjIxZTFkZDBiNDZmOTlmOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGltZWxpbmVzQ29udGVudFZp
ZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGltZWxpbmVz
Q29udGVudFZpZXcuanMKQEAgLTIwOSw2ICsyMDksOCBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVz
Q29udGVudFZpZXcuQ29sbGFwc2VCdXR0b24uU3RhdGVzID0ge307CiBXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVzQ29udGVudFZpZXcuQ29sbGFwc2VCdXR0b24uU3RhdGVzLk5vcm1hbCA9ICJub3JtYWwi
OwogV2ViSW5zcGVjdG9yLlRpbWVsaW5lc0NvbnRlbnRWaWV3LkNvbGxhcHNlQnV0dG9uLlN0YXRl
cy5BY3RpdmUgPSAiYWN0aXZlIjsKIAorV2ViSW5zcGVjdG9yLlRpbWVsaW5lc0NvbnRlbnRWaWV3
LlNlbGVjdGVkVGltZWxpbmVDb29raWVLZXkgPSAidGltZWxpbmVzLWNvbnRlbnQtdmlldy1zZWxl
Y3RlZC10aW1lbGluZSI7CisKIFdlYkluc3BlY3Rvci5UaW1lbGluZXNDb250ZW50Vmlldy5nZW5l
cmF0ZUVtYm9zc2VkQ29sbGFwc2VJbWFnZXMgPSBmdW5jdGlvbigpCiB7CiAgICAgaWYgKFdlYklu
c3BlY3Rvci5UaW1lbGluZXNDb250ZW50Vmlldy5fZ2VuZXJhdGVkSW1hZ2VzKQpAQCAtMzM3LDEz
ICszMzksMTMgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lc0NvbnRlbnRWaWV3LnByb3RvdHlwZSA9
IHsKIAogICAgIHNhdmVUb0Nvb2tpZTogZnVuY3Rpb24oY29va2llKQogICAgIHsKLSAgICAgICAg
Y29va2llLnR5cGUgPSBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXdDb29raWVUeXBlLlRpbWVsaW5l
czsKLSAgICAgICAgY29va2llLnRpbWVsaW5lID0gdGhpcy5fY3VycmVudFJlY29yZFR5cGVTZXR0
aW5nLnZhbHVlOworICAgICAgICBjb29raWVbV2ViSW5zcGVjdG9yLlRpbWVsaW5lc0NvbnRlbnRW
aWV3LlNlbGVjdGVkVGltZWxpbmVDb29raWVLZXldID0gdGhpcy5fY3VycmVudFJlY29yZFR5cGVT
ZXR0aW5nLnZhbHVlOwogICAgIH0sCiAKICAgICByZXN0b3JlRnJvbUNvb2tpZTogZnVuY3Rpb24o
Y29va2llKQogICAgIHsKLSAgICAgICAgdGhpcy5zaG93VGltZWxpbmVGb3JSZWNvcmRUeXBlKGNv
b2tpZS50aW1lbGluZSk7CisgICAgICAgIHZhciB0aW1lbGluZSA9IGNvb2tpZVtXZWJJbnNwZWN0
b3IuVGltZWxpbmVzQ29udGVudFZpZXcuU2VsZWN0ZWRUaW1lbGluZUNvb2tpZUtleV07CisgICAg
ICAgIHRoaXMuc2hvd1RpbWVsaW5lRm9yUmVjb3JkVHlwZSh0aW1lbGluZSk7CiAgICAgfSwKIAog
ICAgIHRpbWVsaW5lT3ZlcnZpZXdSZWNvcmRzV2l0aFR5cGU6IGZ1bmN0aW9uKHR5cGUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UcmVlT3V0bGluZS5q
cyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1RyZWVPdXRsaW5lLmpzCmlu
ZGV4IDA0OGNkNWIwMzI4OWVmZTJhNjk3MTYyNzFkYjJjMzAzYjBhOWQ0ODUuLjA3ZWU5ZWU5YTkz
NWE0Y2YxODA4MWQ3MmM5ODJhNjBmZGZjMDU4YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1RyZWVPdXRsaW5lLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1RyZWVPdXRsaW5lLmpzCkBAIC01Nyw2ICs1Nyw3IEBAIGZ1
bmN0aW9uIFRyZWVPdXRsaW5lKGxpc3ROb2RlKQogfQogCiBUcmVlT3V0bGluZS5fa25vd25UcmVl
RWxlbWVudE5leHRJZGVudGlmaWVyID0gMTsKK1RyZWVPdXRsaW5lLnByb3RvdHlwZS5jb25zdHJ1
Y3RvciA9IFRyZWVPdXRsaW5lOwogCiBUcmVlT3V0bGluZS5wcm90b3R5cGUuYXBwZW5kQ2hpbGQg
PSBmdW5jdGlvbihjaGlsZCkKIHsK
</data>

          </attachment>
      

    </bug>

</bugzilla>