<?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>147534</bug_id>
          
          <creation_ts>2015-08-01 22:06:36 -0700</creation_ts>
          <short_desc>Web Inspector: Convert remaining ContentViews to use ES6 classes</short_desc>
          <delta_ts>2015-08-05 11:12:48 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>142891</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brian Burg">burg</reporter>
          <assigned_to name="Blaze Burg">bburg</assigned_to>
          <cc>bburg</cc>
    
    <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>jonowells</cc>
    
    <cc>mattbaker</cc>
    
    <cc>nvasilyev</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1114076</commentid>
    <comment_count>0</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2015-08-01 22:06:36 -0700</bug_when>
    <thetext>,</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1114102</commentid>
    <comment_count>1</comment_count>
      <attachid>258038</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2015-08-02 10:31:24 -0700</bug_when>
    <thetext>Created attachment 258038
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1114850</commentid>
    <comment_count>2</comment_count>
      <attachid>258227</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-08-04 16:23:33 -0700</bug_when>
    <thetext>Created attachment 258227
Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1114974</commentid>
    <comment_count>3</comment_count>
      <attachid>258227</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-08-04 22:13:59 -0700</bug_when>
    <thetext>Comment on attachment 258227
Proposed Fix

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

r=me

&gt; Source/WebInspectorUI/UserInterface/Views/ContentBrowserTabContentView.js:40
&gt; +        this._contentBrowser = contentBrowser; // Must call the super constructor before using `this`.

I&apos;m not sure the comment is needed. It should be obvious, in the future if someone does this wrong as it will result in a runtime TDZ error. You&apos;ve done the hard work here, and reordered the code appropriately.

&gt; Source/WebInspectorUI/UserInterface/Views/ContentFlowDOMTreeContentView.js:35
&gt; +        console.assert(contentFlow);

We should assert that this is instanceof something.

&gt; Source/WebInspectorUI/UserInterface/Views/ContentView.js:43
&gt; +    // Public

We&apos;ve been going with a &quot;// Static&quot; section before a &quot;// Public&quot; section.

&gt; Source/WebInspectorUI/UserInterface/Views/CookieStorageContentView.js:35
&gt; +    };

I do not believe this semicolon is allowed. I&apos;d have expected a parse error, but maybe it is allowed! Either way, drop it.

&gt; Source/WebInspectorUI/UserInterface/Views/CookieStorageContentView.js:40
&gt; +    static cookieMatchesResourceURL(cookie, resourceURL)

Style: &quot;// Static&quot; header before &quot;// Public&quot;.

We can consider just dropping the &quot;// Static&quot; comments... I&apos;m not sure they are valuable.

&gt; Source/WebInspectorUI/UserInterface/Views/FrameDOMTreeContentView.js:30
&gt; +        console.assert(domTree);

Nit: instanceof

&gt; Source/WebInspectorUI/UserInterface/Views/ResourceContentView.js:30
&gt; +        console.assert(resource);

Nit: instanceof

&gt; Source/WebInspectorUI/UserInterface/Views/ResourceContentView.js:31
&gt; +        console.assert(styleClassName);

Nit: typeof === &quot;string&quot;

&gt; Source/WebInspectorUI/UserInterface/Views/ScriptContentView.js:30
&gt; +        super(script);

Nit: Could assert instanceof WebInspector.Script.

&gt; Source/WebInspectorUI/UserInterface/Views/TimelineRecordingContentView.js:576
&gt; +        this._timelineViewMap.set(timeline, WebInspector.ContentView.createFromRepresentedObject(timeline, {timelineSidebarPanel: this._timelineSidebarPanel}));

I&apos;m surprised there aren&apos;t more places where we called &quot;new WebInspector.ContentView&quot;!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1115062</commentid>
    <comment_count>4</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-08-05 11:12:48 -0700</bug_when>
    <thetext>Committed r187967: &lt;http://trac.webkit.org/changeset/187967&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258038</attachid>
            <date>2015-08-02 10:31:24 -0700</date>
            <delta_ts>2015-08-04 16:23:29 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-147534-20150802103119.patch</filename>
            <type>text/plain</type>
            <size>98255</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg3NzI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCBj
N2E4NTdiNDgyM2MwYjJmYTNhNGZhNDEzY2ZiZDEzZDU0NjRiMjU4Li4yOTkwMDBmZDk4YWI4MjAz
ZWFjMDZjZGQzMjI4YjEzYjg0ZDQyYjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxODggQEAKKzIwMTUtMDgtMDIgIEJyaWFuIEouIEJ1cmcgIDxidXJnQGNzLndhc2hpbmd0
b24uZWR1PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IENvbnZlcnQgcmVtYWluaW5nIENvbnRl
bnRWaWV3cyB0byB1c2UgRVM2IGNsYXNzZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE0NzUzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9BcHBsaWNhdGlvbkNhY2hl
RnJhbWVDb250ZW50Vmlldy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNh
Y2hlRnJhbWVDb250ZW50Vmlldy5nZXQgc2Nyb2xsYWJsZUVsZW1lbnRzKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlRnJhbWVDb250ZW50Vmlldyk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZUZyYW1lQ29udGVudFZpZXcucHJvdG90eXBlLnNo
b3duKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlRnJh
bWVDb250ZW50Vmlldy5wcm90b3R5cGUuY2xvc2VkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYklu
c3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlRnJhbWVDb250ZW50Vmlldy5wcm90b3R5cGUudXBkYXRl
TGF5b3V0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hl
RnJhbWVDb250ZW50Vmlldy5wcm90b3R5cGUuc2F2ZVRvQ29va2llKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlRnJhbWVDb250ZW50Vmlldy5wcm90b3R5
cGUuZ2V0IHNjcm9sbGFibGVFbGVtZW50cyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJJbnNwZWN0
b3IuQXBwbGljYXRpb25DYWNoZUZyYW1lQ29udGVudFZpZXcucHJvdG90eXBlLl9tYXliZVVwZGF0
ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZUZyYW1l
Q29udGVudFZpZXcucHJvdG90eXBlLl9tYXJrRGlydHkpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVGcmFtZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5fdXBk
YXRlU3RhdHVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNh
Y2hlRnJhbWVDb250ZW50Vmlldy5wcm90b3R5cGUudXBkYXRlU3RhdHVzKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlRnJhbWVDb250ZW50Vmlldy5wcm90
b3R5cGUuX3VwZGF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuQXBwbGljYXRp
b25DYWNoZUZyYW1lQ29udGVudFZpZXcucHJvdG90eXBlLl91cGRhdGVDYWxsYmFjayk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZUZyYW1lQ29udGVudFZp
ZXcucHJvdG90eXBlLl9jcmVhdGVEYXRhR3JpZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJJbnNw
ZWN0b3IuQXBwbGljYXRpb25DYWNoZUZyYW1lQ29udGVudFZpZXcucHJvdG90eXBlLl9zb3J0RGF0
YUdyaWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVG
cmFtZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5fcG9wdWxhdGVEYXRhR3JpZCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZUZyYW1lQ29udGVudFZpZXcucHJv
dG90eXBlLl9kZWxldGVCdXR0b25DbGlja2VkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5BcHBsaWNhdGlvbkNhY2hlRnJhbWVDb250ZW50Vmlldy5wcm90b3R5cGUuX2RlbGV0ZUNh
bGxiYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnNvbGVU
YWJDb250ZW50Vmlldy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db25zb2xlVGFiQ29udGVu
dFZpZXcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnNvbGVUYWJDb250ZW50Vmlldy5wcm90
b3R5cGUuZ2V0IHR5cGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnNvbGVUYWJDb250ZW50
Vmlldy5wcm90b3R5cGUuc2hvd24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnNvbGVUYWJD
b250ZW50Vmlldy5wcm90b3R5cGUuc2hvd1JlcHJlc2VudGVkT2JqZWN0KToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5Db25zb2xlVGFiQ29udGVudFZpZXcucHJvdG90eXBlLmNhblNob3dSZXByZXNl
bnRlZE9iamVjdCk6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9Db250ZW50Rmxvd0RP
TVRyZWVDb250ZW50Vmlldy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db250ZW50Rmxvd0RP
TVRyZWVDb250ZW50Vmlldyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29udGVudEZsb3dET01U
cmVlQ29udGVudFZpZXcucHJvdG90eXBlLmNsb3NlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
Q29udGVudEZsb3dET01UcmVlQ29udGVudFZpZXcucHJvdG90eXBlLmdldFNlYXJjaENvbnRleHRO
b2Rlcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29udGVudEZsb3dET01UcmVlQ29udGVudFZp
ZXcucHJvdG90eXBlLl9jcmVhdGVDb250ZW50VHJlZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkNvbnRlbnRGbG93RE9NVHJlZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5fY29udGVudE5vZGVXYXNB
ZGRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29udGVudEZsb3dET01UcmVlQ29udGVudFZp
ZXcucHJvdG90eXBlLl9jb250ZW50Tm9kZVdhc1JlbW92ZWQpOiBEZWxldGVkLgorICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvVmlld3MvRE9NU3RvcmFnZUNvbnRlbnRWaWV3LmpzOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VDb250ZW50Vmlldyk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuRE9NU3RvcmFnZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5zYXZlVG9Db29raWUpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VDb250ZW50Vmlldy5wcm90b3R5cGUuaXRlbXNDbGVh
cmVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01TdG9yYWdlQ29udGVudFZpZXcucHJvdG90
eXBlLml0ZW1SZW1vdmVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01TdG9yYWdlQ29udGVu
dFZpZXcucHJvdG90eXBlLml0ZW1BZGRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NU3Rv
cmFnZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5pdGVtVXBkYXRlZCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuRE9NU3RvcmFnZUNvbnRlbnRWaWV3LnByb3RvdHlwZS51cGRhdGVMYXlvdXQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VDb250ZW50Vmlldy5wcm90b3R5cGUuZ2V0IHNj
cm9sbGFibGVFbGVtZW50cyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZUNvbnRl
bnRWaWV3LnByb3RvdHlwZS5fcG9wdWxhdGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVN0
b3JhZ2VDb250ZW50Vmlldy5wcm90b3R5cGUuX3NvcnREYXRhR3JpZCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuRE9NU3RvcmFnZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5fZGVsZXRlQ2FsbGJhY2sp
OgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZUNvbnRlbnRWaWV3LmpzOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVRyZWVDb250ZW50Vmlldyk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuRE9NVHJlZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5nZXQgbmF2aWdhdGlvbkl0ZW1z
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01UcmVlQ29udGVudFZpZXcucHJvdG90eXBlLmdl
dCBkb21UcmVlT3V0bGluZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NVHJlZUNvbnRlbnRW
aWV3LnByb3RvdHlwZS5nZXQgc2Nyb2xsYWJsZUVsZW1lbnRzKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5ET01UcmVlQ29udGVudFZpZXcucHJvdG90eXBlLnVwZGF0ZUxheW91dCk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuRE9NVHJlZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5zaG93bik6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuRE9NVHJlZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5oaWRkZW4pOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVRyZWVDb250ZW50Vmlldy5wcm90b3R5cGUuY2xvc2Vk
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01UcmVlQ29udGVudFZpZXcucHJvdG90eXBlLmdl
dCBzZWxlY3Rpb25QYXRoQ29tcG9uZW50cyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NVHJl
ZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5yZXN0b3JlRnJvbUNvb2tpZSk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuRE9NVHJlZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5zZWxlY3RBbmRSZXZlYWxET01O
b2RlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01UcmVlQ29udGVudFZpZXcucHJvdG90eXBl
LmhhbmRsZUNvcHlFdmVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NVHJlZUNvbnRlbnRW
aWV3LnByb3RvdHlwZS5nZXQgc3VwcG9ydHNTYXZlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5E
T01UcmVlQ29udGVudFZpZXcucHJvdG90eXBlLmdldCBzYXZlRGF0YSk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuRE9NVHJlZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5nZXQgc3VwcG9ydHNTZWFyY2gp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVRyZWVDb250ZW50Vmlldy5wcm90b3R5cGUuZ2V0
IG51bWJlck9mU2VhcmNoUmVzdWx0cyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NVHJlZUNv
bnRlbnRWaWV3LnByb3RvdHlwZS5nZXQgaGFzUGVyZm9ybWVkU2VhcmNoKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5ET01UcmVlQ29udGVudFZpZXcucHJvdG90eXBlLnNldCBhdXRvbWF0aWNhbGx5
UmV2ZWFsRmlyc3RTZWFyY2hSZXN1bHQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVRyZWVD
b250ZW50Vmlldy5wcm90b3R5cGUucGVyZm9ybVNlYXJjaCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuRE9NVHJlZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5nZXRTZWFyY2hDb250ZXh0Tm9kZXMpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVRyZWVDb250ZW50Vmlldy5wcm90b3R5cGUuc2VhcmNo
Q2xlYXJlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NVHJlZUNvbnRlbnRWaWV3LnByb3Rv
dHlwZS5yZXZlYWxQcmV2aW91c1NlYXJjaFJlc3VsdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
RE9NVHJlZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5yZXZlYWxOZXh0U2VhcmNoUmVzdWx0KToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5ET01UcmVlQ29udGVudFZpZXcucHJvdG90eXBlLl9yZXZlYWxT
ZWFyY2hSZXN1bHQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVRyZWVDb250ZW50Vmlldy5w
cm90b3R5cGUuX3Jlc3RvcmVTZWxlY3RlZE5vZGVBZnRlclVwZGF0ZSk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuRE9NVHJlZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5fc2VsZWN0ZWROb2RlRGlkQ2hh
bmdlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01UcmVlQ29udGVudFZpZXcucHJvdG90eXBl
Ll9wYXRoQ29tcG9uZW50U2VsZWN0ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVRyZWVD
b250ZW50Vmlldy5wcm90b3R5cGUuX2RvbU5vZGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5ET01UcmVlQ29udGVudFZpZXcucHJvdG90eXBlLl9tb3VzZVdhc0NsaWNrZWQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkRPTVRyZWVDb250ZW50Vmlldy5wcm90b3R5cGUuX3RvZ2dsZUNv
bXBvc2l0aW5nQm9yZGVycyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NVHJlZUNvbnRlbnRW
aWV3LnByb3RvdHlwZS5fdG9nZ2xlUGFpbnRGbGFzaGluZyk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuRE9NVHJlZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5fdXBkYXRlQ29tcG9zaXRpbmdCb3JkZXJz
QnV0dG9uVG9NYXRjaFBhZ2VTZXR0aW5ncyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NVHJl
ZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5fc2hvd1BhaW50UmVjdHNTZXR0aW5nQ2hhbmdlZCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuRE9NVHJlZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5fc2hvd1No
YWRvd0RPTVNldHRpbmdDaGFuZ2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01UcmVlQ29u
dGVudFZpZXcucHJvdG90eXBlLl90b2dnbGVTaG93c1NoYWRvd0RPTVNldHRpbmcpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkRPTVRyZWVDb250ZW50Vmlldy5wcm90b3R5cGUuX3Nob3dTZWFyY2hI
aWdobGlnaHRzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01UcmVlQ29udGVudFZpZXcucHJv
dG90eXBlLl9oaWRlU2VhcmNoSGlnaGxpZ2h0cyk6IERlbGV0ZWQuCisgICAgICAgICogVXNlcklu
dGVyZmFjZS9WaWV3cy9EYXRhYmFzZVRhYmxlQ29udGVudFZpZXcuanM6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuRGF0YWJhc2VUYWJsZUNvbnRlbnRWaWV3KToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5EYXRhYmFzZVRhYmxlQ29udGVudFZpZXcucHJvdG90eXBlLmdldCBuYXZpZ2F0aW9uSXRlbXMp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRhdGFiYXNlVGFibGVDb250ZW50Vmlldy5wcm90b3R5
cGUudXBkYXRlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXRhYmFzZVRhYmxlQ29udGVudFZp
ZXcucHJvdG90eXBlLnVwZGF0ZUxheW91dCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGF0YWJh
c2VUYWJsZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5zYXZlVG9Db29raWUpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkRhdGFiYXNlVGFibGVDb250ZW50Vmlldy5wcm90b3R5cGUuZ2V0IHNjcm9sbGFi
bGVFbGVtZW50cyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGF0YWJhc2VUYWJsZUNvbnRlbnRW
aWV3LnByb3RvdHlwZS5fZXNjYXBlVGFibGVOYW1lKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5E
YXRhYmFzZVRhYmxlQ29udGVudFZpZXcucHJvdG90eXBlLl9xdWVyeUZpbmlzaGVkKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5EYXRhYmFzZVRhYmxlQ29udGVudFZpZXcucHJvdG90eXBlLl9xdWVy
eUVycm9yKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXRhYmFzZVRhYmxlQ29udGVudFZpZXcu
cHJvdG90eXBlLl9yZWZyZXNoQnV0dG9uQ2xpY2tlZCk6IERlbGV0ZWQuCisgICAgICAgICogVXNl
ckludGVyZmFjZS9WaWV3cy9EZWJ1Z2dlclRhYkNvbnRlbnRWaWV3LmpzOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkRlYnVnZ2VyVGFiQ29udGVudFZpZXcpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkRlYnVnZ2VyVGFiQ29udGVudFZpZXcucHJvdG90eXBlLmdldCB0eXBlKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5EZWJ1Z2dlclRhYkNvbnRlbnRWaWV3LnByb3RvdHlwZS5jYW5TaG93UmVwcmVz
ZW50ZWRPYmplY3QpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyVGFiQ29udGVudFZp
ZXcucHJvdG90eXBlLnNob3dEZXRhaWxzU2lkZWJhclBhbmVscyk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuRGVidWdnZXJUYWJDb250ZW50Vmlldy5wcm90b3R5cGUuc2hvd1Njb3BlQ2hhaW5EZXRh
aWxzU2lkZWJhclBhbmVsKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclRhYkNvbnRl
bnRWaWV3LnByb3RvdHlwZS5yZXZlYWxBbmRTZWxlY3RCcmVha3BvaW50KTogRGVsZXRlZC4KKyAg
ICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL05ldHdvcmtHcmlkQ29udGVudFZpZXcuanM6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya0dyaWRDb250ZW50Vmlldyk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuTmV0d29ya0dyaWRDb250ZW50Vmlldy5wcm90b3R5cGUuZ2V0IG5hdmlnYXRp
b25TaWRlYmFyVHJlZU91dGxpbmUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtHcmlk
Q29udGVudFZpZXcucHJvdG90eXBlLmdldCBzZWxlY3Rpb25QYXRoQ29tcG9uZW50cyk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya0dyaWRDb250ZW50Vmlldy5wcm90b3R5cGUuZ2V0IHpl
cm9UaW1lKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrR3JpZENvbnRlbnRWaWV3LnBy
b3RvdHlwZS5zaG93bik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya0dyaWRDb250ZW50
Vmlldy5wcm90b3R5cGUuaGlkZGVuKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrR3Jp
ZENvbnRlbnRWaWV3LnByb3RvdHlwZS5jbG9zZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5l
dHdvcmtHcmlkQ29udGVudFZpZXcucHJvdG90eXBlLnVwZGF0ZUxheW91dCk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuTmV0d29ya0dyaWRDb250ZW50Vmlldy5wcm90b3R5cGUubmVlZHNMYXlvdXQp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtHcmlkQ29udGVudFZpZXcucHJvdG90eXBl
LnJlc2V0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrR3JpZENvbnRlbnRWaWV3LnBy
b3RvdHlwZS5fcHJvY2Vzc1BlbmRpbmdSZWNvcmRzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5O
ZXR3b3JrR3JpZENvbnRlbnRWaWV3LnByb3RvdHlwZS5fbmV0d29ya1RpbWVsaW5lUmVzZXQpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtHcmlkQ29udGVudFZpZXcucHJvdG90eXBlLl9u
ZXR3b3JrVGltZWxpbmVSZWNvcmRBZGRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29y
a0dyaWRDb250ZW50Vmlldy5wcm90b3R5cGUuX3RyZWVFbGVtZW50UGF0aENvbXBvbmVudFNlbGVj
dGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrR3JpZENvbnRlbnRWaWV3LnByb3Rv
dHlwZS5fdHJlZUVsZW1lbnRTZWxlY3RlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29y
a0dyaWRDb250ZW50Vmlldy5wcm90b3R5cGUuX2RhdGFHcmlkTm9kZVNlbGVjdGVkKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL05ldHdvcmtUYWJDb250ZW50Vmlldy5q
czoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrVGFiQ29udGVudFZpZXcpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtUYWJDb250ZW50Vmlldy5wcm90b3R5cGUuZ2V0IHR5cGUp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtUYWJDb250ZW50Vmlldy5wcm90b3R5cGUu
Y2FuU2hvd1JlcHJlc2VudGVkT2JqZWN0KToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdz
L05ld1RhYkNvbnRlbnRWaWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ld1RhYkNvbnRl
bnRWaWV3KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXdUYWJDb250ZW50Vmlldy5wcm90b3R5
cGUuZ2V0IHR5cGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ld1RhYkNvbnRlbnRWaWV3LnBy
b3RvdHlwZS5zaG93bik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV3VGFiQ29udGVudFZpZXcu
cHJvdG90eXBlLmhpZGRlbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV3VGFiQ29udGVudFZp
ZXcucHJvdG90eXBlLl9jcmVhdGVOZXdUYWIpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmll
d3MvUmVzb3VyY2VzVGFiQ29udGVudFZpZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVz
b3VyY2VzVGFiQ29udGVudFZpZXcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlc1Rh
YkNvbnRlbnRWaWV3LnByb3RvdHlwZS5nZXQgdHlwZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
UmVzb3VyY2VzVGFiQ29udGVudFZpZXcucHJvdG90eXBlLmNhblNob3dSZXByZXNlbnRlZE9iamVj
dCk6IERlbGV0ZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9TZWFyY2hUYWJDb250
ZW50Vmlldy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TZWFyY2hUYWJDb250ZW50Vmlldyk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2VhcmNoVGFiQ29udGVudFZpZXcucHJvdG90eXBlLmdl
dCB0eXBlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TZWFyY2hUYWJDb250ZW50Vmlldy5wcm90
b3R5cGUuc2hvd24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNlYXJjaFRhYkNvbnRlbnRWaWV3
LnByb3RvdHlwZS5jYW5TaG93UmVwcmVzZW50ZWRPYmplY3QpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlNlYXJjaFRhYkNvbnRlbnRWaWV3LnByb3RvdHlwZS5mb2N1c1NlYXJjaEZpZWxkKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5TZWFyY2hUYWJDb250ZW50Vmlldy5wcm90b3R5cGUucGVyZm9y
bVNlYXJjaCk6IERlbGV0ZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9TZXR0aW5n
c1RhYkNvbnRlbnRWaWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNldHRpbmdzVGFiQ29u
dGVudFZpZXcpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvU3RvcmFnZVRhYkNvbnRl
bnRWaWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlN0b3JhZ2VUYWJDb250ZW50Vmlldyk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3RvcmFnZVRhYkNvbnRlbnRWaWV3LnByb3RvdHlwZS5n
ZXQgdHlwZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3RvcmFnZVRhYkNvbnRlbnRWaWV3LnBy
b3RvdHlwZS5jYW5TaG93UmVwcmVzZW50ZWRPYmplY3QpOiBEZWxldGVkLgorICAgICAgICAqIFVz
ZXJJbnRlcmZhY2UvVmlld3MvVGV4dFJlc291cmNlQ29udGVudFZpZXcuanM6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuVGV4dFJlc291cmNlQ29udGVudFZpZXcpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlRleHRSZXNvdXJjZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5nZXQgbmF2aWdhdGlvbkl0ZW1z
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0UmVzb3VyY2VDb250ZW50Vmlldy5wcm90b3R5
cGUuZ2V0IG1hbmFnZXNPd25Jc3N1ZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRSZXNv
dXJjZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5nZXQgdGV4dEVkaXRvcik6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuVGV4dFJlc291cmNlQ29udGVudFZpZXcucHJvdG90eXBlLmdldCBzdXBwbGVtZW50
YWxSZXByZXNlbnRlZE9iamVjdHMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRSZXNvdXJj
ZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5yZXZlYWxQb3NpdGlvbik6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuVGV4dFJlc291cmNlQ29udGVudFZpZXcucHJvdG90eXBlLnNob3duKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5UZXh0UmVzb3VyY2VDb250ZW50Vmlldy5wcm90b3R5cGUuaGlkZGVuKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0UmVzb3VyY2VDb250ZW50Vmlldy5wcm90b3R5cGUu
Y2xvc2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0UmVzb3VyY2VDb250ZW50Vmlldy5w
cm90b3R5cGUuZ2V0IHN1cHBvcnRzU2F2ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dFJl
c291cmNlQ29udGVudFZpZXcucHJvdG90eXBlLmdldCBzYXZlRGF0YSk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuVGV4dFJlc291cmNlQ29udGVudFZpZXcucHJvdG90eXBlLmdldCBzdXBwb3J0c1Nl
YXJjaCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dFJlc291cmNlQ29udGVudFZpZXcucHJv
dG90eXBlLmdldCBudW1iZXJPZlNlYXJjaFJlc3VsdHMpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlRleHRSZXNvdXJjZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5nZXQgaGFzUGVyZm9ybWVkU2VhcmNo
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0UmVzb3VyY2VDb250ZW50Vmlldy5wcm90b3R5
cGUuc2V0IGF1dG9tYXRpY2FsbHlSZXZlYWxGaXJzdFNlYXJjaFJlc3VsdCk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuVGV4dFJlc291cmNlQ29udGVudFZpZXcucHJvdG90eXBlLnBlcmZvcm1TZWFy
Y2gpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRSZXNvdXJjZUNvbnRlbnRWaWV3LnByb3Rv
dHlwZS5zZWFyY2hDbGVhcmVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0UmVzb3VyY2VD
b250ZW50Vmlldy5wcm90b3R5cGUuc2VhcmNoUXVlcnlXaXRoU2VsZWN0aW9uKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5UZXh0UmVzb3VyY2VDb250ZW50Vmlldy5wcm90b3R5cGUucmV2ZWFsUHJl
dmlvdXNTZWFyY2hSZXN1bHQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRSZXNvdXJjZUNv
bnRlbnRWaWV3LnByb3RvdHlwZS5yZXZlYWxOZXh0U2VhcmNoUmVzdWx0KToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5UZXh0UmVzb3VyY2VDb250ZW50Vmlldy5wcm90b3R5cGUudXBkYXRlTGF5b3V0
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0UmVzb3VyY2VDb250ZW50Vmlldy5wcm90b3R5
cGUuX2NvbnRlbnRXaWxsUG9wdWxhdGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRSZXNv
dXJjZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5fY29udGVudERpZFBvcHVsYXRlKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5UZXh0UmVzb3VyY2VDb250ZW50Vmlldy5wcm90b3R5cGUuX3RvZ2dsZVBy
ZXR0eVByaW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0UmVzb3VyY2VDb250ZW50Vmll
dy5wcm90b3R5cGUuX3RvZ2dsZVR5cGVBbm5vdGF0aW9ucyk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuVGV4dFJlc291cmNlQ29udGVudFZpZXcucHJvdG90eXBlLl9zaG93SmF2YVNjcmlwdFR5cGVJ
bmZvcm1hdGlvblNldHRpbmdDaGFuZ2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0UmVz
b3VyY2VDb250ZW50Vmlldy5wcm90b3R5cGUuX3RleHRFZGl0b3JGb3JtYXR0aW5nRGlkQ2hhbmdl
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0UmVzb3VyY2VDb250ZW50Vmlldy5wcm90b3R5
cGUuX3NvdXJjZUNvZGVDb250ZW50RGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5U
ZXh0UmVzb3VyY2VDb250ZW50Vmlldy5wcm90b3R5cGUuX3RleHRFZGl0b3JDb250ZW50RGlkQ2hh
bmdlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0UmVzb3VyY2VDb250ZW50Vmlldy5wcm90
b3R5cGUuX2V4ZWN1dGlvbkxpbmVOdW1iZXJEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlRleHRSZXNvdXJjZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5fbnVtYmVyT2ZTZWFyY2hSZXN1
bHRzRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0UmVzb3VyY2VDb250ZW50
Vmlldy5wcm90b3R5cGUuX3Byb2JlU2V0c0NoYW5nZWQpOiBEZWxldGVkLgorCiAyMDE1LTA4LTAx
ICBOaWtpdGEgVmFzaWx5ZXYgIDxudmFzaWx5ZXZAYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJ
bnNwZWN0b3I6IFJlcGxhY2UgInVua25vd24tbWFjIiBDU1MgY2xhc3Mgd2l0aCAiZWwtY2FwaXRh
biIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L0FwcGxpY2F0aW9uQ2FjaGVGcmFtZUNvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQXBwbGljYXRpb25DYWNoZUZyYW1lQ29udGVudFZpZXcu
anMKaW5kZXggNTYzMGE1MzNjNTAzNjU2ODE2YWM0MjlmZGViZDliNTljMTAyN2NkOC4uMGNkNGQw
Y2NjYWU0Y2E5ZWI5MzE5M2QzOWE2ZGFkMWUyNjg0ZGM0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQXBwbGljYXRpb25DYWNoZUZyYW1lQ29u
dGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvQXBwbGljYXRpb25DYWNoZUZyYW1lQ29udGVudFZpZXcuanMKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMy0yMDE1IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MjMsNzkgKzIzLDc3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8K
IAotV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVGcmFtZUNvbnRlbnRWaWV3ID0gZnVuY3Rp
b24ocmVwcmVzZW50ZWRPYmplY3QpCitXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZUZyYW1l
Q29udGVudFZpZXcgPSBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlRnJhbWVDb250ZW50VmlldyBleHRl
bmRzIFdlYkluc3BlY3Rvci5Db250ZW50VmlldwogewotICAgIGNvbnNvbGUuYXNzZXJ0KHJlcHJl
c2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVGcmFt
ZSk7Ci0KLSAgICBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcuY2FsbCh0aGlzLCByZXByZXNlbnRl
ZE9iamVjdCk7CisgICAgY29uc3RydWN0b3IocmVwcmVzZW50ZWRPYmplY3QpCisgICAgeworICAg
ICAgICBjb25zb2xlLmFzc2VydChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3Bl
Y3Rvci5BcHBsaWNhdGlvbkNhY2hlRnJhbWUpOwogCi0gICAgdGhpcy5lbGVtZW50LmNsYXNzTGlz
dC5hZGQoImFwcGxpY2F0aW9uLWNhY2hlLWZyYW1lIik7CisgICAgICAgIHN1cGVyKHJlcHJlc2Vu
dGVkT2JqZWN0KTsKIAotICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJzdG9yYWdlLXZp
ZXciKTsKLSAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgidGFibGUiKTsKKyAgICAgICAg
dGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoImFwcGxpY2F0aW9uLWNhY2hlLWZyYW1lIik7CiAK
LSAgICB0aGlzLl9mcmFtZSA9IHJlcHJlc2VudGVkT2JqZWN0LmZyYW1lOworICAgICAgICB0aGlz
LmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgic3RvcmFnZS12aWV3Iik7CisgICAgICAgIHRoaXMuZWxl
bWVudC5jbGFzc0xpc3QuYWRkKCJ0YWJsZSIpOwogCi0gICAgdGhpcy5fZW1wdHlWaWV3ID0gV2Vi
SW5zcGVjdG9yLmNyZWF0ZU1lc3NhZ2VUZXh0VmlldyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk5v
IEFwcGxpY2F0aW9uIENhY2hlIGluZm9ybWF0aW9uIGF2YWlsYWJsZSIpLCBmYWxzZSk7Ci0gICAg
dGhpcy5fZW1wdHlWaWV3LmNsYXNzTGlzdC5hZGQoImhpZGRlbiIpOwotICAgIHRoaXMuZWxlbWVu
dC5hcHBlbmRDaGlsZCh0aGlzLl9lbXB0eVZpZXcpOworICAgICAgICB0aGlzLl9mcmFtZSA9IHJl
cHJlc2VudGVkT2JqZWN0LmZyYW1lOwogCi0gICAgdGhpcy5fbWFya0RpcnR5KCk7CisgICAgICAg
IHRoaXMuX2VtcHR5VmlldyA9IFdlYkluc3BlY3Rvci5jcmVhdGVNZXNzYWdlVGV4dFZpZXcoV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJObyBBcHBsaWNhdGlvbiBDYWNoZSBpbmZvcm1hdGlvbiBhdmFp
bGFibGUiKSwgZmFsc2UpOworICAgICAgICB0aGlzLl9lbXB0eVZpZXcuY2xhc3NMaXN0LmFkZCgi
aGlkZGVuIik7CisgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9lbXB0eVZp
ZXcpOwogCi0gICAgdmFyIHN0YXR1cyA9IHJlcHJlc2VudGVkT2JqZWN0LnN0YXR1czsKLSAgICB0
aGlzLnVwZGF0ZVN0YXR1cyhzdGF0dXMpOworICAgICAgICB0aGlzLl9tYXJrRGlydHkoKTsKIAot
ICAgIFdlYkluc3BlY3Rvci5hcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5hZGRFdmVudExpc3RlbmVy
KFdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5FdmVudC5GcmFtZU1hbmlmZXN0
U3RhdHVzQ2hhbmdlZCwgdGhpcy5fdXBkYXRlU3RhdHVzLCB0aGlzKTsKLX0KKyAgICAgICAgdmFy
IHN0YXR1cyA9IHJlcHJlc2VudGVkT2JqZWN0LnN0YXR1czsKKyAgICAgICAgdGhpcy51cGRhdGVT
dGF0dXMoc3RhdHVzKTsKIAotV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVGcmFtZUNvbnRl
bnRWaWV3LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkFwcGxp
Y2F0aW9uQ2FjaGVGcmFtZUNvbnRlbnRWaWV3LAorICAgICAgICBXZWJJbnNwZWN0b3IuYXBwbGlj
YXRpb25DYWNoZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQXBwbGljYXRp
b25DYWNoZU1hbmFnZXIuRXZlbnQuRnJhbWVNYW5pZmVzdFN0YXR1c0NoYW5nZWQsIHRoaXMuX3Vw
ZGF0ZVN0YXR1cywgdGhpcyk7CiAKLSAgICBzaG93bjogZnVuY3Rpb24oKQorICAgIHNob3duKCkK
ICAgICB7CiAgICAgICAgIHRoaXMuX21heWJlVXBkYXRlKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBjbG9zZWQ6IGZ1bmN0aW9uKCkKKyAgICBjbG9zZWQoKQogICAgIHsKICAgICAgICAgV2ViSW5z
cGVjdG9yLmFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIobnVsbCwg
bnVsbCwgdGhpcyk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICB1cGRhdGVMYXlvdXQ6IGZ1bmN0aW9u
KCkKKyAgICB1cGRhdGVMYXlvdXQoKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuZGF0YUdyaWQp
CiAgICAgICAgICAgICB0aGlzLmRhdGFHcmlkLnVwZGF0ZUxheW91dCgpOwotICAgIH0sCisgICAg
fQogCi0gICAgc2F2ZVRvQ29va2llOiBmdW5jdGlvbihjb29raWUpCisgICAgc2F2ZVRvQ29va2ll
KGNvb2tpZSkKICAgICB7CiAgICAgICAgIGNvb2tpZS50eXBlID0gV2ViSW5zcGVjdG9yLkNvbnRl
bnRWaWV3Q29va2llVHlwZS5BcHBsaWNhdGlvbkNhY2hlOwogICAgICAgICBjb29raWUuZnJhbWUg
PSB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LmZyYW1lLnVybDsKICAgICAgICAgY29va2llLm1hbmlm
ZXN0ID0gdGhpcy5yZXByZXNlbnRlZE9iamVjdC5tYW5pZmVzdC5tYW5pZmVzdFVSTDsKLSAgICB9
LAorICAgIH0KIAogICAgIGdldCBzY3JvbGxhYmxlRWxlbWVudHMoKQogICAgIHsKICAgICAgICAg
aWYgKCF0aGlzLl9kYXRhR3JpZCkKICAgICAgICAgICAgIHJldHVybiBbXTsKICAgICAgICAgcmV0
dXJuIFt0aGlzLl9kYXRhR3JpZC5zY3JvbGxDb250YWluZXJdOwotICAgIH0sCisgICAgfQogCi0g
ICAgX21heWJlVXBkYXRlOiBmdW5jdGlvbigpCisgICAgX21heWJlVXBkYXRlKCkKICAgICB7CiAg
ICAgICAgIGlmICghdGhpcy52aXNpYmxlIHx8ICF0aGlzLl92aWV3RGlydHkpCiAgICAgICAgICAg
ICByZXR1cm47CiAKICAgICAgICAgdGhpcy5fdXBkYXRlKCk7CiAgICAgICAgIHRoaXMuX3ZpZXdE
aXJ0eSA9IGZhbHNlOwotICAgIH0sCisgICAgfQogCi0gICAgX21hcmtEaXJ0eTogZnVuY3Rpb24o
KQorICAgIF9tYXJrRGlydHkoKQogICAgIHsKICAgICAgICAgdGhpcy5fdmlld0RpcnR5ID0gdHJ1
ZTsKLSAgICB9LAorICAgIH0KIAotICAgIF91cGRhdGVTdGF0dXM6IGZ1bmN0aW9uKGV2ZW50KQor
ICAgIF91cGRhdGVTdGF0dXMoZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgZnJhbWVNYW5pZmVz
dCA9IGV2ZW50LmRhdGEuZnJhbWVNYW5pZmVzdDsKICAgICAgICAgaWYgKGZyYW1lTWFuaWZlc3Qg
IT09IHRoaXMucmVwcmVzZW50ZWRPYmplY3QpCkBAIC0xMDQsOSArMTAyLDkgQEAgV2ViSW5zcGVj
dG9yLkFwcGxpY2F0aW9uQ2FjaGVGcmFtZUNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAg
ICAgY29uc29sZS5hc3NlcnQoZnJhbWVNYW5pZmVzdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5B
cHBsaWNhdGlvbkNhY2hlRnJhbWUpOwogCiAgICAgICAgIHRoaXMudXBkYXRlU3RhdHVzKGZyYW1l
TWFuaWZlc3Quc3RhdHVzKTsKLSAgICB9LAorICAgIH0KIAotICAgIHVwZGF0ZVN0YXR1czogZnVu
Y3Rpb24oc3RhdHVzKQorICAgIHVwZGF0ZVN0YXR1cyhzdGF0dXMpCiAgICAgewogICAgICAgICB2
YXIgb2xkU3RhdHVzID0gdGhpcy5fc3RhdHVzOwogICAgICAgICB0aGlzLl9zdGF0dXMgPSBzdGF0
dXM7CkBAIC0xMTUsMTQgKzExMywxNCBAQCBXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZUZy
YW1lQ29udGVudFZpZXcucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5fbWFya0RpcnR5
KCk7CiAKICAgICAgICAgdGhpcy5fbWF5YmVVcGRhdGUoKTsKLSAgICB9LAorICAgIH0KIAotICAg
IF91cGRhdGU6IGZ1bmN0aW9uKCkKKyAgICBfdXBkYXRlKCkKICAgICB7CiAgICAgICAgIFdlYklu
c3BlY3Rvci5hcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5yZXF1ZXN0QXBwbGljYXRpb25DYWNoZSh0
aGlzLl9mcmFtZSwgdGhpcy5fdXBkYXRlQ2FsbGJhY2suYmluZCh0aGlzKSk7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBfdXBkYXRlQ2FsbGJhY2s6IGZ1bmN0aW9uKGFwcGxpY2F0aW9uQ2FjaGUpCisg
ICAgX3VwZGF0ZUNhbGxiYWNrKGFwcGxpY2F0aW9uQ2FjaGUpCiAgICAgewogICAgICAgICBpZiAo
IWFwcGxpY2F0aW9uQ2FjaGUgfHwgIWFwcGxpY2F0aW9uQ2FjaGUubWFuaWZlc3RVUkwpIHsKICAg
ICAgICAgICAgIGRlbGV0ZSB0aGlzLl9tYW5pZmVzdDsKQEAgLTE1Myw5ICsxNTEsOSBAQCBXZWJJ
bnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZUZyYW1lQ29udGVudFZpZXcucHJvdG90eXBlID0gewog
ICAgICAgICB0aGlzLl9kYXRhR3JpZC5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoImhpZGRlbiIp
OwogCiAgICAgICAgIHRoaXMuX2VtcHR5Vmlldy5jbGFzc0xpc3QuYWRkKCJoaWRkZW4iKTsKLSAg
ICB9LAorICAgIH0KIAotICAgIF9jcmVhdGVEYXRhR3JpZDogZnVuY3Rpb24oKQorICAgIF9jcmVh
dGVEYXRhR3JpZCgpCiAgICAgewogICAgICAgICB2YXIgY29sdW1ucyA9IHt1cmw6IHt9LCB0eXBl
OiB7fSwgc2l6ZToge319OwogCkBAIC0xNzcsOSArMTc1LDkgQEAgV2ViSW5zcGVjdG9yLkFwcGxp
Y2F0aW9uQ2FjaGVGcmFtZUNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKIAogICAgICAgICB0aGlz
LmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fZGF0YUdyaWQuZWxlbWVudCk7CiAgICAgICAgIHRo
aXMuX2RhdGFHcmlkLnVwZGF0ZUxheW91dCgpOwotICAgIH0sCisgICAgfQogCi0gICAgX3NvcnRE
YXRhR3JpZDogZnVuY3Rpb24oKQorICAgIF9zb3J0RGF0YUdyaWQoKQogICAgIHsKICAgICAgICAg
ZnVuY3Rpb24gbnVtYmVyQ29tcGFyZShjb2x1bW5JZGVudGlmaWVyLCBub2RlQSwgbm9kZUIpCiAg
ICAgICAgIHsKQEAgLTE5OSw5ICsxOTcsOSBAQCBXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNo
ZUZyYW1lQ29udGVudFZpZXcucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgdGhp
cy5fZGF0YUdyaWQuc29ydE5vZGVzKGNvbXBhcmF0b3IpOwotICAgIH0sCisgICAgfQogCi0gICAg
X3BvcHVsYXRlRGF0YUdyaWQ6IGZ1bmN0aW9uKCkKKyAgICBfcG9wdWxhdGVEYXRhR3JpZCgpCiAg
ICAgewogICAgICAgICB0aGlzLl9kYXRhR3JpZC5yZW1vdmVDaGlsZHJlbigpOwogCkBAIC0yMTQs
MjMgKzIxMiwyMSBAQCBXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZUZyYW1lQ29udGVudFZp
ZXcucHJvdG90eXBlID0gewogICAgICAgICAgICAgdmFyIG5vZGUgPSBuZXcgV2ViSW5zcGVjdG9y
LkRhdGFHcmlkTm9kZShkYXRhKTsKICAgICAgICAgICAgIHRoaXMuX2RhdGFHcmlkLmFwcGVuZENo
aWxkKG5vZGUpOwogICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZGVsZXRlQnV0dG9u
Q2xpY2tlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX2RlbGV0ZUJ1dHRvbkNsaWNrZWQoZXZlbnQp
CiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX2RhdGFHcmlkIHx8ICF0aGlzLl9kYXRhR3JpZC5z
ZWxlY3RlZE5vZGUpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgLy8gRklYTUU6IERl
bGV0ZSBCdXR0b24gc2VtYW50aWNzIGFyZSBub3QgeWV0IGRlZmluZWQuIChEZWxldGUgYSBzaW5n
bGUsIG9yIGFsbD8pCiAgICAgICAgIHRoaXMuX2RlbGV0ZUNhbGxiYWNrKHRoaXMuX2RhdGFHcmlk
LnNlbGVjdGVkTm9kZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZGVsZXRlQ2FsbGJhY2s6IGZ1
bmN0aW9uKG5vZGUpCisgICAgX2RlbGV0ZUNhbGxiYWNrKG5vZGUpCiAgICAgewogICAgICAgICAv
LyBGSVhNRTogU2hvdWxkIHdlIGRlbGV0ZSBhIHNpbmdsZSAoc2VsZWN0ZWQpIHJlc291cmNlIG9y
IGFsbCByZXNvdXJjZXM/CiAgICAgICAgIC8vIEluc3BlY3RvckJhY2tlbmQuZGVsZXRlQ2FjaGVk
UmVzb3VyY2UoLi4uKQogICAgICAgICAvLyB0aGlzLl91cGRhdGUoKTsKICAgICB9Ci19Ci0KLVdl
Ykluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlRnJhbWVDb250ZW50Vmlldy5wcm90b3R5cGUuX19w
cm90b19fID0gV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LnByb3RvdHlwZTsKK307CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db25zb2xlVGFi
Q29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9Db25zb2xlVGFiQ29udGVudFZpZXcuanMKaW5kZXggODliMGJmZjRhZmI2OWIyZjc2YjAzNzgy
NDA4MTJiYjM4ZTE2MjlhNi4uMjFmOWJlYzEwMjc1OTkzOTgyODFlNWY2MTYzYjNmNzNiNDYwN2Ri
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
Q29uc29sZVRhYkNvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0NvbnNvbGVUYWJDb250ZW50Vmlldy5qcwpAQCAtMjMsMjcgKzIzLDI1
IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVj
dG9yLkNvbnNvbGVUYWJDb250ZW50VmlldyA9IGZ1bmN0aW9uKGlkZW50aWZpZXIpCitXZWJJbnNw
ZWN0b3IuQ29uc29sZVRhYkNvbnRlbnRWaWV3ID0gY2xhc3MgQ29uc29sZVRhYkNvbnRlbnRWaWV3
IGV4dGVuZHMgV2ViSW5zcGVjdG9yLkNvbnRlbnRCcm93c2VyVGFiQ29udGVudFZpZXcKIHsKLSAg
ICB2YXIgdGFiQmFySXRlbSA9IG5ldyBXZWJJbnNwZWN0b3IuVGFiQmFySXRlbSgiSW1hZ2VzL0Nv
bnNvbGUuc3ZnIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDb25zb2xlIikpOwotCi0gICAgV2Vi
SW5zcGVjdG9yLkNvbnRlbnRCcm93c2VyVGFiQ29udGVudFZpZXcuY2FsbCh0aGlzLCBpZGVudGlm
aWVyIHx8ICJjb25zb2xlIiwgImNvbnNvbGUiLCB0YWJCYXJJdGVtLCBudWxsLCBudWxsLCB0cnVl
KTsKLX07CisgICAgY29uc3RydWN0b3IoaWRlbnRpZmllcikKKyAgICB7CisgICAgICAgIHZhciB0
YWJCYXJJdGVtID0gbmV3IFdlYkluc3BlY3Rvci5UYWJCYXJJdGVtKCJJbWFnZXMvQ29uc29sZS5z
dmciLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNvbnNvbGUiKSk7CiAKLVdlYkluc3BlY3Rvci5D
b25zb2xlVGFiQ29udGVudFZpZXcucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJ
bnNwZWN0b3IuQ29uc29sZVRhYkNvbnRlbnRWaWV3LAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVj
dG9yLkNvbnRlbnRCcm93c2VyVGFiQ29udGVudFZpZXcucHJvdG90eXBlLAorICAgICAgICBzdXBl
cihpZGVudGlmaWVyIHx8ICJjb25zb2xlIiwgImNvbnNvbGUiLCB0YWJCYXJJdGVtLCBudWxsLCBu
dWxsLCB0cnVlKTsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCB0eXBlKCkKICAg
ICB7CiAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuQ29uc29sZVRhYkNvbnRlbnRWaWV3LlR5
cGU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzaG93bjogZnVuY3Rpb24oKQorICAgIHNob3duKCkK
ICAgICB7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5Db250ZW50QnJvd3NlclRhYkNvbnRlbnRWaWV3
LnByb3RvdHlwZS5zaG93bi5jYWxsKHRoaXMpOworICAgICAgICBzdXBlci5zaG93bigpOwogCiAg
ICAgICAgIGlmICh0aGlzLmNvbnRlbnRCcm93c2VyLmN1cnJlbnRDb250ZW50VmlldyA9PT0gV2Vi
SW5zcGVjdG9yLmNvbnNvbGVDb250ZW50VmlldykKICAgICAgICAgICAgIHJldHVybjsKQEAgLTU2
LDIwICs1NCwyMCBAQCBXZWJJbnNwZWN0b3IuQ29uc29sZVRhYkNvbnRlbnRWaWV3LnByb3RvdHlw
ZSA9IHsKICAgICAgICAgdGhpcy5jb250ZW50QnJvd3Nlci5zaG93Q29udGVudFZpZXcoV2ViSW5z
cGVjdG9yLmNvbnNvbGVDb250ZW50Vmlldyk7CiAKICAgICAgICAgY29uc29sZS5hc3NlcnQodGhp
cy5jb250ZW50QnJvd3Nlci5jdXJyZW50Q29udGVudFZpZXcgPT09IFdlYkluc3BlY3Rvci5jb25z
b2xlQ29udGVudFZpZXcpOwotICAgIH0sCisgICAgfQogCi0gICAgc2hvd1JlcHJlc2VudGVkT2Jq
ZWN0OiBmdW5jdGlvbihyZXByZXNlbnRlZE9iamVjdCwgY29va2llKQorICAgIHNob3dSZXByZXNl
bnRlZE9iamVjdChyZXByZXNlbnRlZE9iamVjdCwgY29va2llKQogICAgIHsKICAgICAgICAgLy8g
RG8gbm90aGluZy4gVGhlIHNob3duIGZ1bmN0aW9uIHdpbGwgaGFuZGxlIHRoaW5ncy4gQ2FsbGlu
ZwogICAgICAgICAvLyBDb250ZW50QnJvd3NlclRhYkNvbnRlbnRWaWV3LnNob3duIHdpbGwgY2F1
c2UgYSBuZXcgTG9nQ29udGVudFZpZXcKICAgICAgICAgLy8gdG8gYmUgY3JlYXRlZCBpbnN0ZWFk
IG9mIHJldXNpbmcgV2ViSW5zcGVjdG9yLmNvbnNvbGVDb250ZW50Vmlldy4KICAgICAgICAgY29u
c29sZS5hc3NlcnQocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuTG9n
T2JqZWN0KTsKLSAgICB9LAorICAgIH0KIAotICAgIGNhblNob3dSZXByZXNlbnRlZE9iamVjdDog
ZnVuY3Rpb24ocmVwcmVzZW50ZWRPYmplY3QpCisgICAgY2FuU2hvd1JlcHJlc2VudGVkT2JqZWN0
KHJlcHJlc2VudGVkT2JqZWN0KQogICAgIHsKICAgICAgICAgcmV0dXJuIHJlcHJlc2VudGVkT2Jq
ZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkxvZ09iamVjdDsKLSAgICB9LAorICAgIH0KIAog
ICAgIGdldCBzdXBwb3J0c1NwbGl0Q29udGVudEJyb3dzZXIoKQogICAgIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRGbG93RE9N
VHJlZUNvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvQ29udGVudEZsb3dET01UcmVlQ29udGVudFZpZXcuanMKaW5kZXggZGMxNTY4YTY1MjQ5
MjUzM2QzMWEwMjQxNzNkZDUxNTRhMDc1OWY5YS4uMDhjMWRlY2YxNDk0MGZkYjcxMTdkYmE2Nzdm
MzkyMDlhMWE4NTYyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvQ29udGVudEZsb3dET01UcmVlQ29udGVudFZpZXcuanMKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudEZsb3dET01UcmVlQ29u
dGVudFZpZXcuanMKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEzIEFk
b2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjcsNDEgKzI4LDM5IEBACiAgKiBTVUNIIERBTUFHRS4K
ICAqLwogCi1XZWJJbnNwZWN0b3IuQ29udGVudEZsb3dET01UcmVlQ29udGVudFZpZXcgPSBmdW5j
dGlvbihjb250ZW50RmxvdykKK1dlYkluc3BlY3Rvci5Db250ZW50Rmxvd0RPTVRyZWVDb250ZW50
VmlldyA9IGNsYXNzIENvbnRlbnRGbG93RE9NVHJlZUNvbnRlbnRWaWV3IGV4dGVuZHMgV2ViSW5z
cGVjdG9yLkRPTVRyZWVDb250ZW50VmlldwogewotICAgIGNvbnNvbGUuYXNzZXJ0KGNvbnRlbnRG
bG93KTsKLQotICAgIFdlYkluc3BlY3Rvci5ET01UcmVlQ29udGVudFZpZXcuY2FsbCh0aGlzLCBj
b250ZW50Rmxvdyk7CisgICAgY29uc3RydWN0b3IoY29udGVudEZsb3cpCisgICAgeworICAgICAg
ICBjb25zb2xlLmFzc2VydChjb250ZW50Rmxvdyk7CiAKLSAgICBjb250ZW50Rmxvdy5hZGRFdmVu
dExpc3RlbmVyKFdlYkluc3BlY3Rvci5Db250ZW50Rmxvdy5FdmVudC5Db250ZW50Tm9kZVdhc0Fk
ZGVkLCB0aGlzLl9jb250ZW50Tm9kZVdhc0FkZGVkLCB0aGlzKTsKLSAgICBjb250ZW50Rmxvdy5h
ZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Db250ZW50Rmxvdy5FdmVudC5Db250ZW50Tm9k
ZVdhc1JlbW92ZWQsIHRoaXMuX2NvbnRlbnROb2RlV2FzUmVtb3ZlZCwgdGhpcyk7CisgICAgICAg
IHN1cGVyKGNvbnRlbnRGbG93KTsKIAotICAgIHRoaXMuX2NyZWF0ZUNvbnRlbnRUcmVlcygpOwot
fTsKKyAgICAgICAgY29udGVudEZsb3cuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQ29u
dGVudEZsb3cuRXZlbnQuQ29udGVudE5vZGVXYXNBZGRlZCwgdGhpcy5fY29udGVudE5vZGVXYXNB
ZGRlZCwgdGhpcyk7CisgICAgICAgIGNvbnRlbnRGbG93LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5z
cGVjdG9yLkNvbnRlbnRGbG93LkV2ZW50LkNvbnRlbnROb2RlV2FzUmVtb3ZlZCwgdGhpcy5fY29u
dGVudE5vZGVXYXNSZW1vdmVkLCB0aGlzKTsKIAotV2ViSW5zcGVjdG9yLkNvbnRlbnRGbG93RE9N
VHJlZUNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVj
dG9yLkNvbnRlbnRGbG93RE9NVHJlZUNvbnRlbnRWaWV3LAotICAgIF9fcHJvdG9fXzogV2ViSW5z
cGVjdG9yLkRPTVRyZWVDb250ZW50Vmlldy5wcm90b3R5cGUsCisgICAgICAgIHRoaXMuX2NyZWF0
ZUNvbnRlbnRUcmVlcygpOworICAgIH0KIAogICAgIC8vIFB1YmxpYwogCi0gICAgY2xvc2VkOiBm
dW5jdGlvbigpCisgICAgY2xvc2VkKCkKICAgICB7CiAgICAgICAgIHRoaXMucmVwcmVzZW50ZWRP
YmplY3QucmVtb3ZlRXZlbnRMaXN0ZW5lcihudWxsLCBudWxsLCB0aGlzKTsKIAotICAgICAgICBX
ZWJJbnNwZWN0b3IuRE9NVHJlZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5jbG9zZWQuY2FsbCh0aGlz
KTsKLSAgICB9LAorICAgICAgICBzdXBlci5jbG9zZWQoKTsKKyAgICB9CiAKLSAgICBnZXRTZWFy
Y2hDb250ZXh0Tm9kZXM6IGZ1bmN0aW9uKGNhbGxiYWNrKQorICAgIGdldFNlYXJjaENvbnRleHRO
b2RlcyhjYWxsYmFjaykKICAgICB7CiAgICAgICAgIGNhbGxiYWNrKHRoaXMuZG9tVHJlZU91dGxp
bmUuY2hpbGRyZW4ubWFwKGZ1bmN0aW9uKHRyZWVPdXRsaW5lKSB7CiAgICAgICAgICAgICByZXR1
cm4gdHJlZU91dGxpbmUucmVwcmVzZW50ZWRPYmplY3QuaWQ7CiAgICAgICAgIH0pKTsKLSAgICB9
LAorICAgIH0KIAogICAgIC8vIFByaXZhdGUKIAotICAgIF9jcmVhdGVDb250ZW50VHJlZXM6IGZ1
bmN0aW9uKCkKKyAgICBfY3JlYXRlQ29udGVudFRyZWVzKCkKICAgICB7CiAgICAgICAgIHZhciBj
b250ZW50Tm9kZXMgPSB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LmNvbnRlbnROb2RlczsKICAgICAg
ICAgZm9yICh2YXIgY29udGVudE5vZGUgb2YgY29udGVudE5vZGVzKQpAQCAtNjksOSArNjgsOSBA
QCBXZWJJbnNwZWN0b3IuQ29udGVudEZsb3dET01UcmVlQ29udGVudFZpZXcucHJvdG90eXBlID0g
ewogCiAgICAgICAgIHZhciBkb2N1bWVudFVSTCA9IGNvbnRlbnROb2Rlcy5sZW5ndGggPyBjb250
ZW50Tm9kZXNbMF0ub3duZXJEb2N1bWVudC5kb2N1bWVudFVSTCA6IG51bGw7CiAgICAgICAgIHRo
aXMuX3Jlc3RvcmVTZWxlY3RlZE5vZGVBZnRlclVwZGF0ZShkb2N1bWVudFVSTCwgY29udGVudE5v
ZGVzWzBdKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9jb250ZW50Tm9kZVdhc0FkZGVkOiBmdW5j
dGlvbihldmVudCkKKyAgICBfY29udGVudE5vZGVXYXNBZGRlZChldmVudCkKICAgICB7CiAgICAg
ICAgIHZhciB0cmVlRWxlbWVudCA9IG5ldyBXZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnQoZXZl
bnQuZGF0YS5ub2RlKTsKICAgICAgICAgaWYgKCFldmVudC5kYXRhLmJlZm9yZSkgewpAQCAtODYs
OSArODUsOSBAQCBXZWJJbnNwZWN0b3IuQ29udGVudEZsb3dET01UcmVlQ29udGVudFZpZXcucHJv
dG90eXBlID0gewogICAgICAgICBjb25zb2xlLmFzc2VydChpbmRleCAhPT0gLTEpOwogCiAgICAg
ICAgIHRoaXMuZG9tVHJlZU91dGxpbmUuaW5zZXJ0Q2hpbGQodHJlZUVsZW1lbnQsIGluZGV4KTsK
LSAgICB9LAorICAgIH0KIAotICAgIF9jb250ZW50Tm9kZVdhc1JlbW92ZWQ6IGZ1bmN0aW9uKGV2
ZW50KQorICAgIF9jb250ZW50Tm9kZVdhc1JlbW92ZWQoZXZlbnQpCiAgICAgewogICAgICAgICB2
YXIgdHJlZUVsZW1lbnQgPSB0aGlzLmRvbVRyZWVPdXRsaW5lLmZpbmRUcmVlRWxlbWVudChldmVu
dC5kYXRhLm5vZGUpOwogICAgICAgICBjb25zb2xlLmFzc2VydCh0cmVlRWxlbWVudCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01TdG9y
YWdlQ29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9ET01TdG9yYWdlQ29udGVudFZpZXcuanMKaW5kZXggNGJjYWYxNWIxMWIxOTM5ZDBmZjY4
ZjUzZmY3ZmY5ZjU5MzY4MzAyZS4uZDJkYzk4YjAxMGI1YzgzYTk0Y2IwYzUxYjQ2ODNlNDgwODAw
Yzg4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvRE9NU3RvcmFnZUNvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0RPTVN0b3JhZ2VDb250ZW50Vmlldy5qcwpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTUgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzIFNhbXN1bmcgRWxlY3Ryb25pY3Mu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0yNCw2NCArMjQsNTcg
QEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0
b3IuRE9NU3RvcmFnZUNvbnRlbnRWaWV3ID0gZnVuY3Rpb24ocmVwcmVzZW50ZWRPYmplY3QpCitX
ZWJJbnNwZWN0b3IuRE9NU3RvcmFnZUNvbnRlbnRWaWV3ID0gY2xhc3MgRE9NU3RvcmFnZUNvbnRl
bnRWaWV3IGV4dGVuZHMgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3CiB7Ci0gICAgV2ViSW5zcGVj
dG9yLkNvbnRlbnRWaWV3LmNhbGwodGhpcywgcmVwcmVzZW50ZWRPYmplY3QpOwotCi0gICAgdGhp
cy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoImRvbS1zdG9yYWdlIik7Ci0KLSAgICByZXByZXNlbnRl
ZE9iamVjdC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5ET01TdG9yYWdlT2JqZWN0LkV2
ZW50Lkl0ZW1zQ2xlYXJlZCwgdGhpcy5pdGVtc0NsZWFyZWQsIHRoaXMpOwotICAgIHJlcHJlc2Vu
dGVkT2JqZWN0LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VPYmplY3Qu
RXZlbnQuSXRlbUFkZGVkLCB0aGlzLml0ZW1BZGRlZCwgdGhpcyk7Ci0gICAgcmVwcmVzZW50ZWRP
YmplY3QuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZU9iamVjdC5FdmVu
dC5JdGVtUmVtb3ZlZCwgdGhpcy5pdGVtUmVtb3ZlZCwgdGhpcyk7Ci0gICAgcmVwcmVzZW50ZWRP
YmplY3QuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZU9iamVjdC5FdmVu
dC5JdGVtVXBkYXRlZCwgdGhpcy5pdGVtVXBkYXRlZCwgdGhpcyk7Ci0KLSAgICB2YXIgY29sdW1u
cyA9IHt9OwotICAgIGNvbHVtbnMua2V5ID0ge3RpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IktleSIpLCBzb3J0YWJsZTogdHJ1ZX07Ci0gICAgY29sdW1ucy52YWx1ZSA9IHt0aXRsZTogV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJWYWx1ZSIpLCBzb3J0YWJsZTogdHJ1ZX07CisgICAgY29uc3Ry
dWN0b3IocmVwcmVzZW50ZWRPYmplY3QpCisgICAgeworICAgICAgICBzdXBlcihyZXByZXNlbnRl
ZE9iamVjdCk7CiAKLSAgICB0aGlzLl9kYXRhR3JpZCA9IG5ldyBXZWJJbnNwZWN0b3IuRGF0YUdy
aWQoY29sdW1ucywgdGhpcy5fZWRpdGluZ0NhbGxiYWNrLmJpbmQodGhpcyksIHRoaXMuX2RlbGV0
ZUNhbGxiYWNrLmJpbmQodGhpcykpOwotICAgIHRoaXMuX2RhdGFHcmlkLnNvcnRPcmRlciA9IFdl
Ykluc3BlY3Rvci5EYXRhR3JpZC5Tb3J0T3JkZXIuQXNjZW5kaW5nOwotICAgIHRoaXMuX2RhdGFH
cmlkLnNvcnRDb2x1bW5JZGVudGlmaWVyID0gImtleSI7Ci0gICAgdGhpcy5fZGF0YUdyaWQuYWRk
RXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRGF0YUdyaWQuRXZlbnQuU29ydENoYW5nZWQsIHRo
aXMuX3NvcnREYXRhR3JpZCwgdGhpcyk7CisgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3Qu
YWRkKCJkb20tc3RvcmFnZSIpOwogCi0gICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMu
X2RhdGFHcmlkLmVsZW1lbnQpOworICAgICAgICByZXByZXNlbnRlZE9iamVjdC5hZGRFdmVudExp
c3RlbmVyKFdlYkluc3BlY3Rvci5ET01TdG9yYWdlT2JqZWN0LkV2ZW50Lkl0ZW1zQ2xlYXJlZCwg
dGhpcy5pdGVtc0NsZWFyZWQsIHRoaXMpOworICAgICAgICByZXByZXNlbnRlZE9iamVjdC5hZGRF
dmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5ET01TdG9yYWdlT2JqZWN0LkV2ZW50Lkl0ZW1BZGRl
ZCwgdGhpcy5pdGVtQWRkZWQsIHRoaXMpOworICAgICAgICByZXByZXNlbnRlZE9iamVjdC5hZGRF
dmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5ET01TdG9yYWdlT2JqZWN0LkV2ZW50Lkl0ZW1SZW1v
dmVkLCB0aGlzLml0ZW1SZW1vdmVkLCB0aGlzKTsKKyAgICAgICAgcmVwcmVzZW50ZWRPYmplY3Qu
YWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZU9iamVjdC5FdmVudC5JdGVt
VXBkYXRlZCwgdGhpcy5pdGVtVXBkYXRlZCwgdGhpcyk7CiAKLSAgICB0aGlzLl9wb3B1bGF0ZSgp
OwotfTsKKyAgICAgICAgdmFyIGNvbHVtbnMgPSB7fTsKKyAgICAgICAgY29sdW1ucy5rZXkgPSB7
dGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiS2V5IiksIHNvcnRhYmxlOiB0cnVlfTsKKyAg
ICAgICAgY29sdW1ucy52YWx1ZSA9IHt0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJWYWx1
ZSIpLCBzb3J0YWJsZTogdHJ1ZX07CiAKLVdlYkluc3BlY3Rvci5ET01TdG9yYWdlQ29udGVudFZp
ZXcuRHVwbGljYXRlS2V5U3R5bGVDbGFzc05hbWUgPSAiZHVwbGljYXRlLWtleSI7Ci1XZWJJbnNw
ZWN0b3IuRE9NU3RvcmFnZUNvbnRlbnRWaWV3Lk1pc3NpbmdLZXlTdHlsZUNsYXNzTmFtZSA9ICJt
aXNzaW5nLWtleSI7Ci1XZWJJbnNwZWN0b3IuRE9NU3RvcmFnZUNvbnRlbnRWaWV3Lk1pc3NpbmdW
YWx1ZVN0eWxlQ2xhc3NOYW1lID0gIm1pc3NpbmctdmFsdWUiOworICAgICAgICB0aGlzLl9kYXRh
R3JpZCA9IG5ldyBXZWJJbnNwZWN0b3IuRGF0YUdyaWQoY29sdW1ucywgdGhpcy5fZWRpdGluZ0Nh
bGxiYWNrLmJpbmQodGhpcyksIHRoaXMuX2RlbGV0ZUNhbGxiYWNrLmJpbmQodGhpcykpOworICAg
ICAgICB0aGlzLl9kYXRhR3JpZC5zb3J0T3JkZXIgPSBXZWJJbnNwZWN0b3IuRGF0YUdyaWQuU29y
dE9yZGVyLkFzY2VuZGluZzsKKyAgICAgICAgdGhpcy5fZGF0YUdyaWQuc29ydENvbHVtbklkZW50
aWZpZXIgPSAia2V5IjsKKyAgICAgICAgdGhpcy5fZGF0YUdyaWQuYWRkRXZlbnRMaXN0ZW5lcihX
ZWJJbnNwZWN0b3IuRGF0YUdyaWQuRXZlbnQuU29ydENoYW5nZWQsIHRoaXMuX3NvcnREYXRhR3Jp
ZCwgdGhpcyk7CiAKKyAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2RhdGFH
cmlkLmVsZW1lbnQpOwogCi1XZWJJbnNwZWN0b3IuRE9NU3RvcmFnZUNvbnRlbnRWaWV3LnByb3Rv
dHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VDb250ZW50
VmlldywKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5wcm90b3R5cGUs
CisgICAgICAgIHRoaXMuX3BvcHVsYXRlKCk7CisgICAgfQogCiAgICAgLy8gUHVibGljCiAKLSAg
ICBzYXZlVG9Db29raWU6IGZ1bmN0aW9uKGNvb2tpZSkKKyAgICBzYXZlVG9Db29raWUoY29va2ll
KQogICAgIHsKICAgICAgICAgY29va2llLnR5cGUgPSBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXdD
b29raWVUeXBlLkRPTVN0b3JhZ2U7CiAgICAgICAgIGNvb2tpZS5pc0xvY2FsU3RvcmFnZSA9IHRo
aXMucmVwcmVzZW50ZWRPYmplY3QuaXNMb2NhbFN0b3JhZ2UoKTsKICAgICAgICAgY29va2llLmhv
c3QgPSB0aGlzLnJlcHJlc2VudGVkT2JqZWN0Lmhvc3Q7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBp
dGVtc0NsZWFyZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIGl0ZW1zQ2xlYXJlZChldmVudCkKICAg
ICB7CiAgICAgICAgIHRoaXMuX2RhdGFHcmlkLnJlbW92ZUNoaWxkcmVuKCk7CiAgICAgICAgIHRo
aXMuX2RhdGFHcmlkLmFkZFBsYWNlaG9sZGVyTm9kZSgpOwotICAgIH0sCisgICAgfQogCi0gICAg
aXRlbVJlbW92ZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIGl0ZW1SZW1vdmVkKGV2ZW50KQogICAg
IHsKICAgICAgICAgZm9yICh2YXIgbm9kZSBvZiB0aGlzLl9kYXRhR3JpZC5jaGlsZHJlbikgewog
ICAgICAgICAgICAgaWYgKG5vZGUuZGF0YS5rZXkgPT09IGV2ZW50LmRhdGEua2V5KQogICAgICAg
ICAgICAgICAgIHJldHVybiB0aGlzLl9kYXRhR3JpZC5yZW1vdmVDaGlsZChub2RlKTsKICAgICAg
ICAgfQotICAgIH0sCisgICAgfQogCi0gICAgaXRlbUFkZGVkOiBmdW5jdGlvbihldmVudCkKKyAg
ICBpdGVtQWRkZWQoZXZlbnQpCiAgICAgewogICAgICAgICB2YXIga2V5ID0gZXZlbnQuZGF0YS5r
ZXk7CiAgICAgICAgIHZhciB2YWx1ZSA9IGV2ZW50LmRhdGEudmFsdWU7CkBAIC05NSw5ICs4OCw5
IEBAIFdlYkluc3BlY3Rvci5ET01TdG9yYWdlQ29udGVudFZpZXcucHJvdG90eXBlID0gewogICAg
ICAgICB2YXIgZGF0YSA9IHtrZXksIHZhbHVlfTsKICAgICAgICAgdGhpcy5fZGF0YUdyaWQuYXBw
ZW5kQ2hpbGQobmV3IFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUoZGF0YSwgZmFsc2UpKTsKICAg
ICAgICAgdGhpcy5fc29ydERhdGFHcmlkKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBpdGVtVXBk
YXRlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgaXRlbVVwZGF0ZWQoZXZlbnQpCiAgICAgewogICAg
ICAgICB2YXIga2V5ID0gZXZlbnQuZGF0YS5rZXk7CiAgICAgICAgIHZhciB2YWx1ZSA9IGV2ZW50
LmRhdGEudmFsdWU7CkBAIC0xMTcsMjQgKzExMCwyNCBAQCBXZWJJbnNwZWN0b3IuRE9NU3RvcmFn
ZUNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAg
ICAgICB0aGlzLl9zb3J0RGF0YUdyaWQoKTsKLSAgICB9LAorICAgIH0KIAotICAgIHVwZGF0ZUxh
eW91dDogZnVuY3Rpb24oKQorICAgIHVwZGF0ZUxheW91dCgpCiAgICAgewogICAgICAgICBpZiAo
dGhpcy5fZGF0YUdyaWQpCiAgICAgICAgICAgICB0aGlzLl9kYXRhR3JpZC51cGRhdGVMYXlvdXQo
KTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBzY3JvbGxhYmxlRWxlbWVudHMoKQogICAgIHsK
ICAgICAgICAgaWYgKCF0aGlzLl9kYXRhR3JpZCkKICAgICAgICAgICAgIHJldHVybiBbXTsKICAg
ICAgICAgcmV0dXJuIFt0aGlzLl9kYXRhR3JpZC5zY3JvbGxDb250YWluZXJdOwotICAgIH0sCisg
ICAgfQogCiAgICAgLy8gUHJpdmF0ZQogCi0gICAgX3BvcHVsYXRlOiBmdW5jdGlvbigpCisgICAg
X3BvcHVsYXRlKCkKICAgICB7CiAgICAgICAgIHRoaXMucmVwcmVzZW50ZWRPYmplY3QuZ2V0RW50
cmllcyhmdW5jdGlvbihlcnJvciwgZW50cmllcykgewogICAgICAgICAgICAgaWYgKGVycm9yKQpA
QCAtMTUzLDkgKzE0Niw5IEBAIFdlYkluc3BlY3Rvci5ET01TdG9yYWdlQ29udGVudFZpZXcucHJv
dG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5fZGF0YUdyaWQuYWRkUGxhY2Vob2xkZXJOb2Rl
KCk7CiAgICAgICAgICAgICB0aGlzLl9kYXRhR3JpZC51cGRhdGVMYXlvdXQoKTsKICAgICAgICAg
fS5iaW5kKHRoaXMpKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9zb3J0RGF0YUdyaWQ6IGZ1bmN0
aW9uKCkKKyAgICBfc29ydERhdGFHcmlkKCkKICAgICB7CiAgICAgICAgIHZhciBzb3J0Q29sdW1u
SWRlbnRpZmllciA9IHRoaXMuX2RhdGFHcmlkLnNvcnRDb2x1bW5JZGVudGlmaWVyIHx8ICJrZXki
OwogCkBAIC0xNjUsMTggKzE1OCwxOCBAQCBXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZUNvbnRlbnRW
aWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIHRoaXMuX2RhdGFHcmlkLnNv
cnROb2Rlc0ltbWVkaWF0ZWx5KGNvbXBhcmF0b3IpOwotICAgIH0sCisgICAgfQogCi0gICAgX2Rl
bGV0ZUNhbGxiYWNrOiBmdW5jdGlvbihub2RlKQorICAgIF9kZWxldGVDYWxsYmFjayhub2RlKQog
ICAgIHsKICAgICAgICAgaWYgKCFub2RlIHx8IG5vZGUuaXNQbGFjZWhvbGRlck5vZGUpCiAgICAg
ICAgICAgICByZXR1cm47CiAKICAgICAgICAgdGhpcy5fZGF0YUdyaWQucmVtb3ZlQ2hpbGQobm9k
ZSk7CiAgICAgICAgIHRoaXMucmVwcmVzZW50ZWRPYmplY3QucmVtb3ZlSXRlbShub2RlLmRhdGFb
ImtleSJdKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9lZGl0aW5nQ2FsbGJhY2s6IGZ1bmN0aW9u
KGVkaXRpbmdOb2RlLCBjb2x1bW5JZGVudGlmaWVyLCBvbGRUZXh0LCBuZXdUZXh0LCBtb3ZlRGly
ZWN0aW9uKQorICAgIF9lZGl0aW5nQ2FsbGJhY2soZWRpdGluZ05vZGUsIGNvbHVtbklkZW50aWZp
ZXIsIG9sZFRleHQsIG5ld1RleHQsIG1vdmVEaXJlY3Rpb24pCiAgICAgewogICAgICAgICB2YXIg
a2V5ID0gZWRpdGluZ05vZGUuZGF0YVsia2V5Il0udHJpbSgpLnJlbW92ZVdvcmRCcmVha0NoYXJh
Y3RlcnMoKTsKICAgICAgICAgdmFyIHZhbHVlID0gZWRpdGluZ05vZGUuZGF0YVsidmFsdWUiXS50
cmltKCkucmVtb3ZlV29yZEJyZWFrQ2hhcmFjdGVycygpOwpAQCAtMjcwLDMgKzI2Myw3IEBAIFdl
Ykluc3BlY3Rvci5ET01TdG9yYWdlQ29udGVudFZpZXcucHJvdG90eXBlID0gewogICAgICAgICBk
b21TdG9yYWdlLnNldEl0ZW0oa2V5LCB2YWx1ZSk7CiAgICAgfQogfTsKKworV2ViSW5zcGVjdG9y
LkRPTVN0b3JhZ2VDb250ZW50Vmlldy5EdXBsaWNhdGVLZXlTdHlsZUNsYXNzTmFtZSA9ICJkdXBs
aWNhdGUta2V5IjsKK1dlYkluc3BlY3Rvci5ET01TdG9yYWdlQ29udGVudFZpZXcuTWlzc2luZ0tl
eVN0eWxlQ2xhc3NOYW1lID0gIm1pc3Npbmcta2V5IjsKK1dlYkluc3BlY3Rvci5ET01TdG9yYWdl
Q29udGVudFZpZXcuTWlzc2luZ1ZhbHVlU3R5bGVDbGFzc05hbWUgPSAibWlzc2luZy12YWx1ZSI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9E
T01UcmVlQ29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9ET01UcmVlQ29udGVudFZpZXcuanMKaW5kZXggYzJmZGYyYWYzMDNiNjdkNjRhY2Yz
NGMyYjc0N2ZlNzM4ZGM1M2EwNy4uYmNkNjQ4ODUzMGYyNDE3MzliMDUxODQ0YjIzMTZhNjBhNzNi
MTYyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvRE9NVHJlZUNvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVDb250ZW50Vmlldy5qcwpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsOTEgKzIzLDg5IEBACiAg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkRP
TVRyZWVDb250ZW50VmlldyA9IGZ1bmN0aW9uKHJlcHJlc2VudGVkT2JqZWN0KQorV2ViSW5zcGVj
dG9yLkRPTVRyZWVDb250ZW50VmlldyA9IGNsYXNzIERPTVRyZWVDb250ZW50VmlldyBleHRlbmRz
IFdlYkluc3BlY3Rvci5Db250ZW50VmlldwogewotICAgIGNvbnNvbGUuYXNzZXJ0KHJlcHJlc2Vu
dGVkT2JqZWN0KTsKLQotICAgIFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5jYWxsKHRoaXMsIHJl
cHJlc2VudGVkT2JqZWN0KTsKKyAgICBjb25zdHJ1Y3RvcihyZXByZXNlbnRlZE9iamVjdCkKKyAg
ICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHJlcHJlc2VudGVkT2JqZWN0KTsKIAotICAgIHRo
aXMuX2NvbXBvc2l0aW5nQm9yZGVyc0J1dHRvbk5hdmlnYXRpb25JdGVtID0gbmV3IFdlYkluc3Bl
Y3Rvci5BY3RpdmF0ZUJ1dHRvbk5hdmlnYXRpb25JdGVtKCJsYXllci1ib3JkZXJzIiwgV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJTaG93IGNvbXBvc2l0aW5nIGJvcmRlcnMiKSwgV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJIaWRlIGNvbXBvc2l0aW5nIGJvcmRlcnMiKSwgIkltYWdlcy9MYXllckJvcmRl
cnMuc3ZnIiwgMTMsIDEzKTsKLSAgICB0aGlzLl9jb21wb3NpdGluZ0JvcmRlcnNCdXR0b25OYXZp
Z2F0aW9uSXRlbS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5CdXR0b25OYXZpZ2F0aW9u
SXRlbS5FdmVudC5DbGlja2VkLCB0aGlzLl90b2dnbGVDb21wb3NpdGluZ0JvcmRlcnMsIHRoaXMp
OwotICAgIHRoaXMuX2NvbXBvc2l0aW5nQm9yZGVyc0J1dHRvbk5hdmlnYXRpb25JdGVtLmVuYWJs
ZWQgPSAhIVBhZ2VBZ2VudC5nZXRDb21wb3NpdGluZ0JvcmRlcnNWaXNpYmxlOworICAgICAgICBz
dXBlcihyZXByZXNlbnRlZE9iamVjdCk7CiAKLSAgICBXZWJJbnNwZWN0b3Iuc2hvd1BhaW50UmVj
dHNTZXR0aW5nLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlNldHRpbmcuRXZlbnQuQ2hh
bmdlZCwgdGhpcy5fc2hvd1BhaW50UmVjdHNTZXR0aW5nQ2hhbmdlZCwgdGhpcyk7Ci0gICAgdGhp
cy5fcGFpbnRGbGFzaGluZ0J1dHRvbk5hdmlnYXRpb25JdGVtID0gbmV3IFdlYkluc3BlY3Rvci5B
Y3RpdmF0ZUJ1dHRvbk5hdmlnYXRpb25JdGVtKCJwYWludC1mbGFzaGluZyIsIFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiRW5hYmxlIHBhaW50IGZsYXNoaW5nIiksIFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiRGlzYWJsZSBwYWludCBmbGFzaGluZyIpLCAiSW1hZ2VzL1BhaW50Rmxhc2hpbmcuc3ZnIiwg
MTYsIDE2KTsKLSAgICB0aGlzLl9wYWludEZsYXNoaW5nQnV0dG9uTmF2aWdhdGlvbkl0ZW0uYWRk
RXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uRXZlbnQuQ2xp
Y2tlZCwgdGhpcy5fdG9nZ2xlUGFpbnRGbGFzaGluZywgdGhpcyk7Ci0gICAgdGhpcy5fcGFpbnRG
bGFzaGluZ0J1dHRvbk5hdmlnYXRpb25JdGVtLmVuYWJsZWQgPSAhIVBhZ2VBZ2VudC5zZXRTaG93
UGFpbnRSZWN0czsKLSAgICB0aGlzLl9wYWludEZsYXNoaW5nQnV0dG9uTmF2aWdhdGlvbkl0ZW0u
YWN0aXZhdGVkID0gUGFnZUFnZW50LnNldFNob3dQYWludFJlY3RzICYmIFdlYkluc3BlY3Rvci5z
aG93UGFpbnRSZWN0c1NldHRpbmcudmFsdWU7CisgICAgICAgIHRoaXMuX2NvbXBvc2l0aW5nQm9y
ZGVyc0J1dHRvbk5hdmlnYXRpb25JdGVtID0gbmV3IFdlYkluc3BlY3Rvci5BY3RpdmF0ZUJ1dHRv
bk5hdmlnYXRpb25JdGVtKCJsYXllci1ib3JkZXJzIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJT
aG93IGNvbXBvc2l0aW5nIGJvcmRlcnMiKSwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJIaWRlIGNv
bXBvc2l0aW5nIGJvcmRlcnMiKSwgIkltYWdlcy9MYXllckJvcmRlcnMuc3ZnIiwgMTMsIDEzKTsK
KyAgICAgICAgdGhpcy5fY29tcG9zaXRpbmdCb3JkZXJzQnV0dG9uTmF2aWdhdGlvbkl0ZW0uYWRk
RXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uRXZlbnQuQ2xp
Y2tlZCwgdGhpcy5fdG9nZ2xlQ29tcG9zaXRpbmdCb3JkZXJzLCB0aGlzKTsKKyAgICAgICAgdGhp
cy5fY29tcG9zaXRpbmdCb3JkZXJzQnV0dG9uTmF2aWdhdGlvbkl0ZW0uZW5hYmxlZCA9ICEhUGFn
ZUFnZW50LmdldENvbXBvc2l0aW5nQm9yZGVyc1Zpc2libGU7CiAKLSAgICBXZWJJbnNwZWN0b3Iu
c2hvd1NoYWRvd0RPTVNldHRpbmcuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuU2V0dGlu
Zy5FdmVudC5DaGFuZ2VkLCB0aGlzLl9zaG93U2hhZG93RE9NU2V0dGluZ0NoYW5nZWQsIHRoaXMp
OwotICAgIHRoaXMuX3Nob3dzU2hhZG93RE9NQnV0dG9uTmF2aWdhdGlvbkl0ZW0gPSBuZXcgV2Vi
SW5zcGVjdG9yLkFjdGl2YXRlQnV0dG9uTmF2aWdhdGlvbkl0ZW0oInNob3dzLXNoYWRvdy1ET00i
LCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNob3cgc2hhZG93IERPTSBub2RlcyIpLCBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIkhpZGUgc2hhZG93IERPTSBub2RlcyIpLCAiSW1hZ2VzL1NoYWRvd0RP
TS5zdmciLCAxMywgMTMpOwotICAgIHRoaXMuX3Nob3dzU2hhZG93RE9NQnV0dG9uTmF2aWdhdGlv
bkl0ZW0uYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0ZW0u
RXZlbnQuQ2xpY2tlZCwgdGhpcy5fdG9nZ2xlU2hvd3NTaGFkb3dET01TZXR0aW5nLCB0aGlzKTsK
LSAgICB0aGlzLl9zaG93U2hhZG93RE9NU2V0dGluZ0NoYW5nZWQoKTsKKyAgICAgICAgV2ViSW5z
cGVjdG9yLnNob3dQYWludFJlY3RzU2V0dGluZy5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rv
ci5TZXR0aW5nLkV2ZW50LkNoYW5nZWQsIHRoaXMuX3Nob3dQYWludFJlY3RzU2V0dGluZ0NoYW5n
ZWQsIHRoaXMpOworICAgICAgICB0aGlzLl9wYWludEZsYXNoaW5nQnV0dG9uTmF2aWdhdGlvbkl0
ZW0gPSBuZXcgV2ViSW5zcGVjdG9yLkFjdGl2YXRlQnV0dG9uTmF2aWdhdGlvbkl0ZW0oInBhaW50
LWZsYXNoaW5nIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJFbmFibGUgcGFpbnQgZmxhc2hpbmci
KSwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJEaXNhYmxlIHBhaW50IGZsYXNoaW5nIiksICJJbWFn
ZXMvUGFpbnRGbGFzaGluZy5zdmciLCAxNiwgMTYpOworICAgICAgICB0aGlzLl9wYWludEZsYXNo
aW5nQnV0dG9uTmF2aWdhdGlvbkl0ZW0uYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQnV0
dG9uTmF2aWdhdGlvbkl0ZW0uRXZlbnQuQ2xpY2tlZCwgdGhpcy5fdG9nZ2xlUGFpbnRGbGFzaGlu
ZywgdGhpcyk7CisgICAgICAgIHRoaXMuX3BhaW50Rmxhc2hpbmdCdXR0b25OYXZpZ2F0aW9uSXRl
bS5lbmFibGVkID0gISFQYWdlQWdlbnQuc2V0U2hvd1BhaW50UmVjdHM7CisgICAgICAgIHRoaXMu
X3BhaW50Rmxhc2hpbmdCdXR0b25OYXZpZ2F0aW9uSXRlbS5hY3RpdmF0ZWQgPSBQYWdlQWdlbnQu
c2V0U2hvd1BhaW50UmVjdHMgJiYgV2ViSW5zcGVjdG9yLnNob3dQYWludFJlY3RzU2V0dGluZy52
YWx1ZTsKIAotICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJkb20tdHJlZSIpOwotICAg
IHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX21vdXNlV2FzQ2xp
Y2tlZC5iaW5kKHRoaXMpLCBmYWxzZSk7CisgICAgICAgIFdlYkluc3BlY3Rvci5zaG93U2hhZG93
RE9NU2V0dGluZy5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5TZXR0aW5nLkV2ZW50LkNo
YW5nZWQsIHRoaXMuX3Nob3dTaGFkb3dET01TZXR0aW5nQ2hhbmdlZCwgdGhpcyk7CisgICAgICAg
IHRoaXMuX3Nob3dzU2hhZG93RE9NQnV0dG9uTmF2aWdhdGlvbkl0ZW0gPSBuZXcgV2ViSW5zcGVj
dG9yLkFjdGl2YXRlQnV0dG9uTmF2aWdhdGlvbkl0ZW0oInNob3dzLXNoYWRvdy1ET00iLCBXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIlNob3cgc2hhZG93IERPTSBub2RlcyIpLCBXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIkhpZGUgc2hhZG93IERPTSBub2RlcyIpLCAiSW1hZ2VzL1NoYWRvd0RPTS5zdmci
LCAxMywgMTMpOworICAgICAgICB0aGlzLl9zaG93c1NoYWRvd0RPTUJ1dHRvbk5hdmlnYXRpb25J
dGVtLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkJ1dHRvbk5hdmlnYXRpb25JdGVtLkV2
ZW50LkNsaWNrZWQsIHRoaXMuX3RvZ2dsZVNob3dzU2hhZG93RE9NU2V0dGluZywgdGhpcyk7Cisg
ICAgICAgIHRoaXMuX3Nob3dTaGFkb3dET01TZXR0aW5nQ2hhbmdlZCgpOwogCi0gICAgdGhpcy5f
ZG9tVHJlZU91dGxpbmUgPSBuZXcgV2ViSW5zcGVjdG9yLkRPTVRyZWVPdXRsaW5lKHRydWUsIHRy
dWUsIHRydWUpOwotICAgIHRoaXMuX2RvbVRyZWVPdXRsaW5lLmFkZEV2ZW50TGlzdGVuZXIoV2Vi
SW5zcGVjdG9yLkRPTVRyZWVPdXRsaW5lLkV2ZW50LlNlbGVjdGVkTm9kZUNoYW5nZWQsIHRoaXMu
X3NlbGVjdGVkTm9kZURpZENoYW5nZSwgdGhpcyk7Ci0gICAgdGhpcy5fZG9tVHJlZU91dGxpbmUu
d2lyZVRvRG9tQWdlbnQoKTsKLSAgICB0aGlzLl9kb21UcmVlT3V0bGluZS5lZGl0YWJsZSA9IHRy
dWU7Ci0gICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2RvbVRyZWVPdXRsaW5lLmVs
ZW1lbnQpOworICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiZG9tLXRyZWUiKTsK
KyAgICAgICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fbW91
c2VXYXNDbGlja2VkLmJpbmQodGhpcyksIGZhbHNlKTsKIAotICAgIFdlYkluc3BlY3Rvci5kb21U
cmVlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5ET01UcmVlTWFuYWdlci5F
dmVudC5BdHRyaWJ1dGVNb2RpZmllZCwgdGhpcy5fZG9tTm9kZUNoYW5nZWQsIHRoaXMpOwotICAg
IFdlYkluc3BlY3Rvci5kb21UcmVlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rv
ci5ET01UcmVlTWFuYWdlci5FdmVudC5BdHRyaWJ1dGVSZW1vdmVkLCB0aGlzLl9kb21Ob2RlQ2hh
bmdlZCwgdGhpcyk7Ci0gICAgV2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2VyLmFkZEV2ZW50TGlz
dGVuZXIoV2ViSW5zcGVjdG9yLkRPTVRyZWVNYW5hZ2VyLkV2ZW50LkNoYXJhY3RlckRhdGFNb2Rp
ZmllZCwgdGhpcy5fZG9tTm9kZUNoYW5nZWQsIHRoaXMpOworICAgICAgICB0aGlzLl9kb21UcmVl
T3V0bGluZSA9IG5ldyBXZWJJbnNwZWN0b3IuRE9NVHJlZU91dGxpbmUodHJ1ZSwgdHJ1ZSwgdHJ1
ZSk7CisgICAgICAgIHRoaXMuX2RvbVRyZWVPdXRsaW5lLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5z
cGVjdG9yLkRPTVRyZWVPdXRsaW5lLkV2ZW50LlNlbGVjdGVkTm9kZUNoYW5nZWQsIHRoaXMuX3Nl
bGVjdGVkTm9kZURpZENoYW5nZSwgdGhpcyk7CisgICAgICAgIHRoaXMuX2RvbVRyZWVPdXRsaW5l
LndpcmVUb0RvbUFnZW50KCk7CisgICAgICAgIHRoaXMuX2RvbVRyZWVPdXRsaW5lLmVkaXRhYmxl
ID0gdHJ1ZTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2RvbVRyZWVP
dXRsaW5lLmVsZW1lbnQpOwogCi0gICAgdGhpcy5fbGFzdFNlbGVjdGVkTm9kZVBhdGhTZXR0aW5n
ID0gbmV3IFdlYkluc3BlY3Rvci5TZXR0aW5nKCJsYXN0LXNlbGVjdGVkLW5vZGUtcGF0aCIsIG51
bGwpOworICAgICAgICBXZWJJbnNwZWN0b3IuZG9tVHJlZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5l
cihXZWJJbnNwZWN0b3IuRE9NVHJlZU1hbmFnZXIuRXZlbnQuQXR0cmlidXRlTW9kaWZpZWQsIHRo
aXMuX2RvbU5vZGVDaGFuZ2VkLCB0aGlzKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLmRvbVRyZWVN
YW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRPTVRyZWVNYW5hZ2VyLkV2ZW50
LkF0dHJpYnV0ZVJlbW92ZWQsIHRoaXMuX2RvbU5vZGVDaGFuZ2VkLCB0aGlzKTsKKyAgICAgICAg
V2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9y
LkRPTVRyZWVNYW5hZ2VyLkV2ZW50LkNoYXJhY3RlckRhdGFNb2RpZmllZCwgdGhpcy5fZG9tTm9k
ZUNoYW5nZWQsIHRoaXMpOwogCi0gICAgdGhpcy5fbnVtYmVyT2ZTZWFyY2hSZXN1bHRzID0gbnVs
bDsKLX07CisgICAgICAgIHRoaXMuX2xhc3RTZWxlY3RlZE5vZGVQYXRoU2V0dGluZyA9IG5ldyBX
ZWJJbnNwZWN0b3IuU2V0dGluZygibGFzdC1zZWxlY3RlZC1ub2RlLXBhdGgiLCBudWxsKTsKIAot
V2ViSW5zcGVjdG9yLkRPTVRyZWVDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3Ry
dWN0b3I6IFdlYkluc3BlY3Rvci5ET01UcmVlQ29udGVudFZpZXcsCi0gICAgX19wcm90b19fOiBX
ZWJJbnNwZWN0b3IuQ29udGVudFZpZXcucHJvdG90eXBlLAorICAgICAgICB0aGlzLl9udW1iZXJP
ZlNlYXJjaFJlc3VsdHMgPSBudWxsOworICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0
IG5hdmlnYXRpb25JdGVtcygpCiAgICAgewogICAgICAgICByZXR1cm4gW3RoaXMuX3Nob3dzU2hh
ZG93RE9NQnV0dG9uTmF2aWdhdGlvbkl0ZW0sIHRoaXMuX2NvbXBvc2l0aW5nQm9yZGVyc0J1dHRv
bk5hdmlnYXRpb25JdGVtLCB0aGlzLl9wYWludEZsYXNoaW5nQnV0dG9uTmF2aWdhdGlvbkl0ZW1d
OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGRvbVRyZWVPdXRsaW5lKCkKICAgICB7CiAgICAg
ICAgIHJldHVybiB0aGlzLl9kb21UcmVlT3V0bGluZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdl
dCBzY3JvbGxhYmxlRWxlbWVudHMoKQogICAgIHsKICAgICAgICAgcmV0dXJuIFt0aGlzLmVsZW1l
bnRdOwotICAgIH0sCisgICAgfQogCi0gICAgdXBkYXRlTGF5b3V0OiBmdW5jdGlvbigpCisgICAg
dXBkYXRlTGF5b3V0KCkKICAgICB7CiAgICAgICAgIHRoaXMuX2RvbVRyZWVPdXRsaW5lLnVwZGF0
ZVNlbGVjdGlvbigpOwotICAgIH0sCisgICAgfQogCi0gICAgc2hvd246IGZ1bmN0aW9uKCkKKyAg
ICBzaG93bigpCiAgICAgewogICAgICAgICB0aGlzLl9kb21UcmVlT3V0bGluZS5zZXRWaXNpYmxl
KHRydWUsIFdlYkluc3BlY3Rvci5pc0NvbnNvbGVGb2N1c2VkKCkpOwogICAgICAgICB0aGlzLl91
cGRhdGVDb21wb3NpdGluZ0JvcmRlcnNCdXR0b25Ub01hdGNoUGFnZVNldHRpbmdzKCk7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICBoaWRkZW46IGZ1bmN0aW9uKCkKKyAgICBoaWRkZW4oKQogICAgIHsK
ICAgICAgICAgV2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2VyLmhpZGVET01Ob2RlSGlnaGxpZ2h0
KCk7CiAgICAgICAgIHRoaXMuX2RvbVRyZWVPdXRsaW5lLnNldFZpc2libGUoZmFsc2UpOwotICAg
IH0sCisgICAgfQogCi0gICAgY2xvc2VkOiBmdW5jdGlvbigpCisgICAgY2xvc2VkKCkKICAgICB7
CiAgICAgICAgIFdlYkluc3BlY3Rvci5zaG93UGFpbnRSZWN0c1NldHRpbmcucmVtb3ZlRXZlbnRM
aXN0ZW5lcihudWxsLCBudWxsLCB0aGlzKTsKICAgICAgICAgV2ViSW5zcGVjdG9yLnNob3dTaGFk
b3dET01TZXR0aW5nLnJlbW92ZUV2ZW50TGlzdGVuZXIobnVsbCwgbnVsbCwgdGhpcyk7CiAgICAg
ICAgIFdlYkluc3BlY3Rvci5kb21UcmVlTWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKG51bGws
IG51bGwsIHRoaXMpOwogCiAgICAgICAgIHRoaXMuX2RvbVRyZWVPdXRsaW5lLmNsb3NlKCk7Ci0g
ICAgfSwKKyAgICB9CiAKICAgICBnZXQgc2VsZWN0aW9uUGF0aENvbXBvbmVudHMoKQogICAgIHsK
QEAgLTEyOSw5ICsxMjcsOSBAQCBXZWJJbnNwZWN0b3IuRE9NVHJlZUNvbnRlbnRWaWV3LnByb3Rv
dHlwZSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIHJldHVybiBwYXRoQ29tcG9uZW50czsKLSAg
ICB9LAorICAgIH0KIAotICAgIHJlc3RvcmVGcm9tQ29va2llOiBmdW5jdGlvbihjb29raWUpCisg
ICAgcmVzdG9yZUZyb21Db29raWUoY29va2llKQogICAgIHsKICAgICAgICAgaWYgKCFjb29raWUg
fHwgIWNvb2tpZS5ub2RlVG9TZWxlY3QpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0xNDEsMTQg
KzEzOSwxNCBAQCBXZWJJbnNwZWN0b3IuRE9NVHJlZUNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsK
ICAgICAgICAgLy8gQmVjYXVzZSBub2RlVG9TZWxlY3QgaXMgZXBoZW1lcmFsLCB3ZSBkb24ndCB3
YW50IHRvIGtlZXAKICAgICAgICAgLy8gaXQgYXJvdW5kIGluIHRoZSBiYWNrLWZvcndhcmQgaGlz
dG9yeSBlbnRyaWVzLgogICAgICAgICBjb29raWUubm9kZVRvU2VsZWN0ID0gdW5kZWZpbmVkOwot
ICAgIH0sCisgICAgfQogCi0gICAgc2VsZWN0QW5kUmV2ZWFsRE9NTm9kZTogZnVuY3Rpb24oZG9t
Tm9kZSwgcHJldmVudEZvY3VzQ2hhbmdlKQorICAgIHNlbGVjdEFuZFJldmVhbERPTU5vZGUoZG9t
Tm9kZSwgcHJldmVudEZvY3VzQ2hhbmdlKQogICAgIHsKICAgICAgICAgdGhpcy5fZG9tVHJlZU91
dGxpbmUuc2VsZWN0RE9NTm9kZShkb21Ob2RlLCAhcHJldmVudEZvY3VzQ2hhbmdlKTsKLSAgICB9
LAorICAgIH0KIAotICAgIGhhbmRsZUNvcHlFdmVudDogZnVuY3Rpb24oZXZlbnQpCisgICAgaGFu
ZGxlQ29weUV2ZW50KGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIHNlbGVjdGVkRE9NTm9kZSA9
IHRoaXMuX2RvbVRyZWVPdXRsaW5lLnNlbGVjdGVkRE9NTm9kZSgpOwogICAgICAgICBpZiAoIXNl
bGVjdGVkRE9NTm9kZSkKQEAgLTE1OCwxMiArMTU2LDEyIEBAIFdlYkluc3BlY3Rvci5ET01UcmVl
Q29udGVudFZpZXcucHJvdG90eXBlID0gewogICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgp
OwogCiAgICAgICAgIHNlbGVjdGVkRE9NTm9kZS5jb3B5Tm9kZSgpOwotICAgIH0sCisgICAgfQog
CiAgICAgZ2V0IHN1cHBvcnRzU2F2ZSgpCiAgICAgewogICAgICAgICByZXR1cm4gV2ViSW5zcGVj
dG9yLmNhbkFyY2hpdmVNYWluRnJhbWUoKTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBzYXZl
RGF0YSgpCiAgICAgewpAQCAtMTczLDIyICsxNzEsMjIgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVD
b250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4geyBj
dXN0b21TYXZlSGFuZGxlcjogc2F2ZUhhbmRsZXIgfTsKLSAgICB9LAorICAgIH0KIAogICAgIGdl
dCBzdXBwb3J0c1NlYXJjaCgpCiAgICAgewogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9LAor
ICAgIH0KIAogICAgIGdldCBudW1iZXJPZlNlYXJjaFJlc3VsdHMoKQogICAgIHsKICAgICAgICAg
cmV0dXJuIHRoaXMuX251bWJlck9mU2VhcmNoUmVzdWx0czsKLSAgICB9LAorICAgIH0KIAogICAg
IGdldCBoYXNQZXJmb3JtZWRTZWFyY2goKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX251
bWJlck9mU2VhcmNoUmVzdWx0cyAhPT0gbnVsbDsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBh
dXRvbWF0aWNhbGx5UmV2ZWFsRmlyc3RTZWFyY2hSZXN1bHQocmV2ZWFsKQogICAgIHsKQEAgLTE5
OSw5ICsxOTcsOSBAQCBXZWJJbnNwZWN0b3IuRE9NVHJlZUNvbnRlbnRWaWV3LnByb3RvdHlwZSA9
IHsKICAgICAgICAgICAgIGlmICh0aGlzLl9jdXJyZW50U2VhcmNoUmVzdWx0SW5kZXggPT09IC0x
KQogICAgICAgICAgICAgICAgIHRoaXMucmV2ZWFsTmV4dFNlYXJjaFJlc3VsdCgpOwogICAgICAg
ICB9Ci0gICAgfSwKKyAgICB9CiAKLSAgICBwZXJmb3JtU2VhcmNoOiBmdW5jdGlvbihxdWVyeSkK
KyAgICBwZXJmb3JtU2VhcmNoKHF1ZXJ5KQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX3NlYXJj
aFF1ZXJ5ID09PSBxdWVyeSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTIzOCwxNiArMjM2LDE2
IEBAIFdlYkluc3BlY3Rvci5ET01UcmVlQ29udGVudFZpZXcucHJvdG90eXBlID0gewogICAgICAg
ICB9CiAKICAgICAgICAgdGhpcy5nZXRTZWFyY2hDb250ZXh0Tm9kZXMoY29udGV4dE5vZGVzUmVh
ZHkuYmluZCh0aGlzKSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBnZXRTZWFyY2hDb250ZXh0Tm9k
ZXM6IGZ1bmN0aW9uKGNhbGxiYWNrKQorICAgIGdldFNlYXJjaENvbnRleHROb2RlcyhjYWxsYmFj
aykKICAgICB7CiAgICAgICAgIC8vIE92ZXJ3cml0ZSB0aGlzIHRvIGxpbWl0IHRoZSBzZWFyY2gg
dG8ganVzdCBhIHN1YnRyZWUuCiAgICAgICAgIC8vIFBhc3NpbmcgdW5kZWZpbmVkIHdpbGwgbWFr
ZSBET01BZ2VudC5wZXJmb3JtU2VhcmNoIHNlYXJjaCB0aHJvdWdoIGFsbCB0aGUgZG9jdW1lbnRz
LgogICAgICAgICBjYWxsYmFjayh1bmRlZmluZWQpOwotICAgIH0sCisgICAgfQogCi0gICAgc2Vh
cmNoQ2xlYXJlZDogZnVuY3Rpb24oKQorICAgIHNlYXJjaENsZWFyZWQoKQogICAgIHsKICAgICAg
ICAgaWYgKHRoaXMuX3NlYXJjaElkZW50aWZpZXIpIHsKICAgICAgICAgICAgIERPTUFnZW50LmRp
c2NhcmRTZWFyY2hSZXN1bHRzKHRoaXMuX3NlYXJjaElkZW50aWZpZXIpOwpAQCAtMjU4LDkgKzI1
Niw5IEBAIFdlYkluc3BlY3Rvci5ET01UcmVlQ29udGVudFZpZXcucHJvdG90eXBlID0gewogICAg
ICAgICB0aGlzLl9zZWFyY2hJZGVudGlmaWVyID0gbnVsbDsKICAgICAgICAgdGhpcy5fbnVtYmVy
T2ZTZWFyY2hSZXN1bHRzID0gbnVsbDsKICAgICAgICAgdGhpcy5fY3VycmVudFNlYXJjaFJlc3Vs
dEluZGV4ID0gLTE7Ci0gICAgfSwKKyAgICB9CiAKLSAgICByZXZlYWxQcmV2aW91c1NlYXJjaFJl
c3VsdDogZnVuY3Rpb24oY2hhbmdlRm9jdXMpCisgICAgcmV2ZWFsUHJldmlvdXNTZWFyY2hSZXN1
bHQoY2hhbmdlRm9jdXMpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX251bWJlck9mU2VhcmNo
UmVzdWx0cykKICAgICAgICAgICAgIHJldHVybjsKQEAgLTI3MSw5ICsyNjksOSBAQCBXZWJJbnNw
ZWN0b3IuRE9NVHJlZUNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMu
X2N1cnJlbnRTZWFyY2hSZXN1bHRJbmRleCA9IHRoaXMuX251bWJlck9mU2VhcmNoUmVzdWx0cyAt
IDE7CiAKICAgICAgICAgdGhpcy5fcmV2ZWFsU2VhcmNoUmVzdWx0KHRoaXMuX2N1cnJlbnRTZWFy
Y2hSZXN1bHRJbmRleCwgY2hhbmdlRm9jdXMpOwotICAgIH0sCisgICAgfQogCi0gICAgcmV2ZWFs
TmV4dFNlYXJjaFJlc3VsdDogZnVuY3Rpb24oY2hhbmdlRm9jdXMpCisgICAgcmV2ZWFsTmV4dFNl
YXJjaFJlc3VsdChjaGFuZ2VGb2N1cykKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fbnVtYmVy
T2ZTZWFyY2hSZXN1bHRzKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjg0LDExICsyODIsMTEg
QEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAg
ICAgICB0aGlzLl9jdXJyZW50U2VhcmNoUmVzdWx0SW5kZXggPSAwOwogCiAgICAgICAgIHRoaXMu
X3JldmVhbFNlYXJjaFJlc3VsdCh0aGlzLl9jdXJyZW50U2VhcmNoUmVzdWx0SW5kZXgsIGNoYW5n
ZUZvY3VzKTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByaXZhdGUKIAotICAgIF9yZXZlYWxT
ZWFyY2hSZXN1bHQ6IGZ1bmN0aW9uKGluZGV4LCBjaGFuZ2VGb2N1cykKKyAgICBfcmV2ZWFsU2Vh
cmNoUmVzdWx0KGluZGV4LCBjaGFuZ2VGb2N1cykKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KHRoaXMuX3NlYXJjaElkZW50aWZpZXIpOwogCkBAIC0zMTgsOSArMzE2LDkgQEAgV2ViSW5z
cGVjdG9yLkRPTVRyZWVDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAg
ICAgICBET01BZ2VudC5nZXRTZWFyY2hSZXN1bHRzKHRoaXMuX3NlYXJjaElkZW50aWZpZXIsIGlu
ZGV4LCBpbmRleCArIDEsIHJldmVhbFJlc3VsdC5iaW5kKHRoaXMpKTsKLSAgICB9LAorICAgIH0K
IAotICAgIF9yZXN0b3JlU2VsZWN0ZWROb2RlQWZ0ZXJVcGRhdGU6IGZ1bmN0aW9uKGRvY3VtZW50
VVJMLCBkZWZhdWx0Tm9kZSkKKyAgICBfcmVzdG9yZVNlbGVjdGVkTm9kZUFmdGVyVXBkYXRlKGRv
Y3VtZW50VVJMLCBkZWZhdWx0Tm9kZSkKICAgICB7CiAgICAgICAgIGlmICghV2ViSW5zcGVjdG9y
LmRvbVRyZWVNYW5hZ2VyLnJlc3RvcmVTZWxlY3RlZE5vZGVJc0FsbG93ZWQpCiAgICAgICAgICAg
ICByZXR1cm47CkBAIC0zNTUsOSArMzUzLDkgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVDb250ZW50
Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuZG9tVHJlZU1hbmFn
ZXIucHVzaE5vZGVCeVBhdGhUb0Zyb250ZW5kKHRoaXMuX2xhc3RTZWxlY3RlZE5vZGVQYXRoU2V0
dGluZy52YWx1ZS5wYXRoLCBzZWxlY3RMYXN0U2VsZWN0ZWROb2RlLmJpbmQodGhpcykpOwogICAg
ICAgICBlbHNlCiAgICAgICAgICAgICBzZWxlY3ROb2RlLmNhbGwodGhpcyk7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBfc2VsZWN0ZWROb2RlRGlkQ2hhbmdlOiBmdW5jdGlvbihldmVudCkKKyAgICBf
c2VsZWN0ZWROb2RlRGlkQ2hhbmdlKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIHNlbGVjdGVk
RE9NTm9kZSA9IHRoaXMuX2RvbVRyZWVPdXRsaW5lLnNlbGVjdGVkRE9NTm9kZSgpOwogICAgICAg
ICBpZiAoc2VsZWN0ZWRET01Ob2RlICYmICF0aGlzLl9kb250U2V0TGFzdFNlbGVjdGVkTm9kZVBh
dGgpCkBAIC0zNjcsMjYgKzM2NSwyNiBAQCBXZWJJbnNwZWN0b3IuRE9NVHJlZUNvbnRlbnRWaWV3
LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIENvbnNvbGVBZ2VudC5hZGRJbnNwZWN0ZWROb2Rl
KHNlbGVjdGVkRE9NTm9kZS5pZCk7CiAKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0
ZW5lcnMoV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LkV2ZW50LlNlbGVjdGlvblBhdGhDb21wb25l
bnRzRGlkQ2hhbmdlKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9wYXRoQ29tcG9uZW50U2VsZWN0
ZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9wYXRoQ29tcG9uZW50U2VsZWN0ZWQoZXZlbnQpCiAg
ICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChldmVudC5kYXRhLnBhdGhDb21wb25lbnQgaW5z
dGFuY2VvZiBXZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnRQYXRoQ29tcG9uZW50KTsKICAgICAg
ICAgY29uc29sZS5hc3NlcnQoZXZlbnQuZGF0YS5wYXRoQ29tcG9uZW50LmRvbVRyZWVFbGVtZW50
IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50KTsKIAogICAgICAgICB0aGlz
Ll9kb21UcmVlT3V0bGluZS5zZWxlY3RET01Ob2RlKGV2ZW50LmRhdGEucGF0aENvbXBvbmVudC5k
b21UcmVlRWxlbWVudC5yZXByZXNlbnRlZE9iamVjdCwgdHJ1ZSk7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBfZG9tTm9kZUNoYW5nZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9kb21Ob2RlQ2hhbmdl
ZChldmVudCkKICAgICB7CiAgICAgICAgIHZhciBzZWxlY3RlZERPTU5vZGUgPSB0aGlzLl9kb21U
cmVlT3V0bGluZS5zZWxlY3RlZERPTU5vZGUoKTsKICAgICAgICAgaWYgKHNlbGVjdGVkRE9NTm9k
ZSAhPT0gZXZlbnQuZGF0YS5ub2RlKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIHRo
aXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5FdmVu
dC5TZWxlY3Rpb25QYXRoQ29tcG9uZW50c0RpZENoYW5nZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBfbW91c2VXYXNDbGlja2VkOiBmdW5jdGlvbihldmVudCkKKyAgICBfbW91c2VXYXNDbGlja2Vk
KGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIGFuY2hvckVsZW1lbnQgPSBldmVudC50YXJnZXQu
ZW5jbG9zaW5nTm9kZU9yU2VsZldpdGhOb2RlTmFtZSgiYSIpOwogICAgICAgICBpZiAoIWFuY2hv
ckVsZW1lbnQgfHwgIWFuY2hvckVsZW1lbnQuaHJlZikKQEAgLTQyNCwyMyArNDIyLDIzIEBAIFdl
Ykluc3BlY3Rvci5ET01UcmVlQ29udGVudFZpZXcucHJvdG90eXBlID0gewogICAgICAgICAvLyB0
aGVuIGEgZG91YmxlLWNsaWNrIGhhcHBlbmVkIG9yIGFub3RoZXIgbGluayB3YXMgY2xpY2tlZC4K
ICAgICAgICAgLy8gRklYTUU6IFRoZSBkdXJhdGlvbiBtaWdodCBiZSBsb25nZXIgb3Igc2hvcnRl
ciB0aGFuIHRoZSB1c2VyJ3MgY29uZmlndXJlZCBkb3VibGUgY2xpY2sgc3BlZWQuCiAgICAgICAg
IHRoaXMuX2ZvbGxvd0xpbmtUaW1lb3V0SWRlbnRpZmllciA9IHNldFRpbWVvdXQoZm9sbG93TGlu
ay5iaW5kKHRoaXMpLCAzMzMpOwotICAgIH0sCisgICAgfQogCi0gICAgX3RvZ2dsZUNvbXBvc2l0
aW5nQm9yZGVyczogZnVuY3Rpb24oZXZlbnQpCisgICAgX3RvZ2dsZUNvbXBvc2l0aW5nQm9yZGVy
cyhldmVudCkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KFBhZ2VBZ2VudC5zZXRDb21w
b3NpdGluZ0JvcmRlcnNWaXNpYmxlKTsKIAogICAgICAgICB2YXIgYWN0aXZhdGVkID0gIXRoaXMu
X2NvbXBvc2l0aW5nQm9yZGVyc0J1dHRvbk5hdmlnYXRpb25JdGVtLmFjdGl2YXRlZDsKICAgICAg
ICAgdGhpcy5fY29tcG9zaXRpbmdCb3JkZXJzQnV0dG9uTmF2aWdhdGlvbkl0ZW0uYWN0aXZhdGVk
ID0gYWN0aXZhdGVkOwogICAgICAgICBQYWdlQWdlbnQuc2V0Q29tcG9zaXRpbmdCb3JkZXJzVmlz
aWJsZShhY3RpdmF0ZWQpOwotICAgIH0sCisgICAgfQogCi0gICAgX3RvZ2dsZVBhaW50Rmxhc2hp
bmc6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF90b2dnbGVQYWludEZsYXNoaW5nKGV2ZW50KQogICAg
IHsKICAgICAgICAgV2ViSW5zcGVjdG9yLnNob3dQYWludFJlY3RzU2V0dGluZy52YWx1ZSA9ICFX
ZWJJbnNwZWN0b3Iuc2hvd1BhaW50UmVjdHNTZXR0aW5nLnZhbHVlOwotICAgIH0sCisgICAgfQog
Ci0gICAgX3VwZGF0ZUNvbXBvc2l0aW5nQm9yZGVyc0J1dHRvblRvTWF0Y2hQYWdlU2V0dGluZ3M6
IGZ1bmN0aW9uKCkKKyAgICBfdXBkYXRlQ29tcG9zaXRpbmdCb3JkZXJzQnV0dG9uVG9NYXRjaFBh
Z2VTZXR0aW5ncygpCiAgICAgewogICAgICAgICBpZiAoIVBhZ2VBZ2VudC5nZXRDb21wb3NpdGlu
Z0JvcmRlcnNWaXNpYmxlKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtNDUzLDI4ICs0NTEsMjgg
QEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAg
ICAgICBidXR0b24uYWN0aXZhdGVkID0gZXJyb3IgPyBmYWxzZSA6IGNvbXBvc2l0aW5nQm9yZGVy
c1Zpc2libGU7CiAgICAgICAgICAgICBidXR0b24uZW5hYmxlZCA9IGVycm9yICE9PSAidW5zdXBw
b3J0ZWQiOwogICAgICAgICB9KTsKLSAgICB9LAorICAgIH0KIAotICAgIF9zaG93UGFpbnRSZWN0
c1NldHRpbmdDaGFuZ2VkOiBmdW5jdGlvbihldmVudCkKKyAgICBfc2hvd1BhaW50UmVjdHNTZXR0
aW5nQ2hhbmdlZChldmVudCkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KFBhZ2VBZ2Vu
dC5zZXRTaG93UGFpbnRSZWN0cyk7CiAKICAgICAgICAgdGhpcy5fcGFpbnRGbGFzaGluZ0J1dHRv
bk5hdmlnYXRpb25JdGVtLmFjdGl2YXRlZCA9IFdlYkluc3BlY3Rvci5zaG93UGFpbnRSZWN0c1Nl
dHRpbmcudmFsdWU7CiAKICAgICAgICAgUGFnZUFnZW50LnNldFNob3dQYWludFJlY3RzKHRoaXMu
X3BhaW50Rmxhc2hpbmdCdXR0b25OYXZpZ2F0aW9uSXRlbS5hY3RpdmF0ZWQpOwotICAgIH0sCisg
ICAgfQogCi0gICAgX3Nob3dTaGFkb3dET01TZXR0aW5nQ2hhbmdlZDogZnVuY3Rpb24oZXZlbnQp
CisgICAgX3Nob3dTaGFkb3dET01TZXR0aW5nQ2hhbmdlZChldmVudCkKICAgICB7CiAgICAgICAg
IHRoaXMuX3Nob3dzU2hhZG93RE9NQnV0dG9uTmF2aWdhdGlvbkl0ZW0uYWN0aXZhdGVkID0gV2Vi
SW5zcGVjdG9yLnNob3dTaGFkb3dET01TZXR0aW5nLnZhbHVlOwotICAgIH0sCisgICAgfQogCi0g
ICAgX3RvZ2dsZVNob3dzU2hhZG93RE9NU2V0dGluZzogZnVuY3Rpb24oZXZlbnQpCisgICAgX3Rv
Z2dsZVNob3dzU2hhZG93RE9NU2V0dGluZyhldmVudCkKICAgICB7CiAgICAgICAgIFdlYkluc3Bl
Y3Rvci5zaG93U2hhZG93RE9NU2V0dGluZy52YWx1ZSA9ICFXZWJJbnNwZWN0b3Iuc2hvd1NoYWRv
d0RPTVNldHRpbmcudmFsdWU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfc2hvd1NlYXJjaEhpZ2hs
aWdodHM6IGZ1bmN0aW9uKCkKKyAgICBfc2hvd1NlYXJjaEhpZ2hsaWdodHMoKQogICAgIHsKICAg
ICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fc2VhcmNoSWRlbnRpZmllcik7CiAKQEAgLTUwNSw5
ICs1MDMsOSBAQCBXZWJJbnNwZWN0b3IuRE9NVHJlZUNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsK
ICAgICAgICAgICAgICAgICAgICAgdHJlZUVsZW1lbnQuaGlnaGxpZ2h0U2VhcmNoUmVzdWx0cyh0
aGlzLl9zZWFyY2hRdWVyeSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0uYmluZCh0aGlzKSk7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfaGlkZVNlYXJjaEhpZ2hsaWdodHM6IGZ1bmN0aW9uKCkK
KyAgICBfaGlkZVNlYXJjaEhpZ2hsaWdodHMoKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9z
ZWFyY2hSZXN1bHROb2RlcykKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RhdGFiYXNlVGFibGVDb250ZW50
Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RhdGFi
YXNlVGFibGVDb250ZW50Vmlldy5qcwppbmRleCA5N2ZhZTNiMjliYWM2OTVkZDBmZDQwYzI5Y2Nl
Y2FiZDY0NzJhMGY1Li5jOThlNGU5NDUxNzRlZjk5NTNlMWYyODA2MzVlYmI1ZDNiMTJiOWJhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EYXRh
YmFzZVRhYmxlQ29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvRGF0YWJhc2VUYWJsZUNvbnRlbnRWaWV3LmpzCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMyw2MyArMjMsNjEg
QEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0
b3IuRGF0YWJhc2VUYWJsZUNvbnRlbnRWaWV3ID0gZnVuY3Rpb24ocmVwcmVzZW50ZWRPYmplY3Qp
CitXZWJJbnNwZWN0b3IuRGF0YWJhc2VUYWJsZUNvbnRlbnRWaWV3ID0gY2xhc3MgRGF0YWJhc2VU
YWJsZUNvbnRlbnRWaWV3IGV4dGVuZHMgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3CiB7Ci0gICAg
V2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LmNhbGwodGhpcywgcmVwcmVzZW50ZWRPYmplY3QpOwot
Ci0gICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoImRhdGFiYXNlLXRhYmxlIik7CisgICAg
Y29uc3RydWN0b3IocmVwcmVzZW50ZWRPYmplY3QpCisgICAgeworICAgICAgICBzdXBlcihyZXBy
ZXNlbnRlZE9iamVjdCk7CiAKLSAgICB0aGlzLl9yZWZyZXNoQnV0dG9uTmF2aWdhdGlvbkl0ZW0g
PSBuZXcgV2ViSW5zcGVjdG9yLkJ1dHRvbk5hdmlnYXRpb25JdGVtKCJkYXRhYmFzZS10YWJsZS1y
ZWZyZXNoIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZWZyZXNoIiksICJJbWFnZXMvUmVsb2Fk
RnVsbC5zdmciLCAxMywgMTMpOwotICAgIHRoaXMuX3JlZnJlc2hCdXR0b25OYXZpZ2F0aW9uSXRl
bS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5CdXR0b25OYXZpZ2F0aW9uSXRlbS5FdmVu
dC5DbGlja2VkLCB0aGlzLl9yZWZyZXNoQnV0dG9uQ2xpY2tlZCwgdGhpcyk7CisgICAgICAgIHRo
aXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJkYXRhYmFzZS10YWJsZSIpOwogCi0gICAgdGhpcy51
cGRhdGUoKTsKLX07CisgICAgICAgIHRoaXMuX3JlZnJlc2hCdXR0b25OYXZpZ2F0aW9uSXRlbSA9
IG5ldyBXZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0ZW0oImRhdGFiYXNlLXRhYmxlLXJl
ZnJlc2giLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlZnJlc2giKSwgIkltYWdlcy9SZWxvYWRG
dWxsLnN2ZyIsIDEzLCAxMyk7CisgICAgICAgIHRoaXMuX3JlZnJlc2hCdXR0b25OYXZpZ2F0aW9u
SXRlbS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5CdXR0b25OYXZpZ2F0aW9uSXRlbS5F
dmVudC5DbGlja2VkLCB0aGlzLl9yZWZyZXNoQnV0dG9uQ2xpY2tlZCwgdGhpcyk7CiAKLVdlYklu
c3BlY3Rvci5EYXRhYmFzZVRhYmxlQ29udGVudFZpZXcucHJvdG90eXBlID0gewotICAgIGNvbnN0
cnVjdG9yOiBXZWJJbnNwZWN0b3IuRGF0YWJhc2VUYWJsZUNvbnRlbnRWaWV3LAotICAgIF9fcHJv
dG9fXzogV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LnByb3RvdHlwZSwKKyAgICAgICAgdGhpcy51
cGRhdGUoKTsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBuYXZpZ2F0aW9uSXRl
bXMoKQogICAgIHsKICAgICAgICAgcmV0dXJuIFt0aGlzLl9yZWZyZXNoQnV0dG9uTmF2aWdhdGlv
bkl0ZW1dOwotICAgIH0sCisgICAgfQogCi0gICAgdXBkYXRlOiBmdW5jdGlvbigpCisgICAgdXBk
YXRlKCkKICAgICB7CiAgICAgICAgIHRoaXMucmVwcmVzZW50ZWRPYmplY3QuZGF0YWJhc2UuZXhl
Y3V0ZVNRTCgiU0VMRUNUICogRlJPTSBcIiIgKyB0aGlzLl9lc2NhcGVUYWJsZU5hbWUodGhpcy5y
ZXByZXNlbnRlZE9iamVjdC5uYW1lKSArICJcIiIsIHRoaXMuX3F1ZXJ5RmluaXNoZWQuYmluZCh0
aGlzKSwgdGhpcy5fcXVlcnlFcnJvci5iaW5kKHRoaXMpKTsKLSAgICB9LAorICAgIH0KIAotICAg
IHVwZGF0ZUxheW91dDogZnVuY3Rpb24oKQorICAgIHVwZGF0ZUxheW91dCgpCiAgICAgewogICAg
ICAgICBpZiAodGhpcy5fZGF0YUdyaWQpCiAgICAgICAgICAgICB0aGlzLl9kYXRhR3JpZC51cGRh
dGVMYXlvdXQoKTsKLSAgICB9LAorICAgIH0KIAotICAgIHNhdmVUb0Nvb2tpZTogZnVuY3Rpb24o
Y29va2llKQorICAgIHNhdmVUb0Nvb2tpZShjb29raWUpCiAgICAgewogICAgICAgICBjb29raWUu
dHlwZSA9IFdlYkluc3BlY3Rvci5Db250ZW50Vmlld0Nvb2tpZVR5cGUuRGF0YWJhc2VUYWJsZTsK
ICAgICAgICAgY29va2llLmhvc3QgPSB0aGlzLnJlcHJlc2VudGVkT2JqZWN0Lmhvc3Q7CiAgICAg
ICAgIGNvb2tpZS5uYW1lID0gdGhpcy5yZXByZXNlbnRlZE9iamVjdC5uYW1lOwogICAgICAgICBj
b29raWUuZGF0YWJhc2UgPSB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LmRhdGFiYXNlLm5hbWU7Ci0g
ICAgfSwKKyAgICB9CiAKICAgICBnZXQgc2Nyb2xsYWJsZUVsZW1lbnRzKCkKICAgICB7CiAgICAg
ICAgIGlmICghdGhpcy5fZGF0YUdyaWQpCiAgICAgICAgICAgICByZXR1cm4gW107CiAgICAgICAg
IHJldHVybiBbdGhpcy5fZGF0YUdyaWQuc2Nyb2xsQ29udGFpbmVyXTsKLSAgICB9LAorICAgIH0K
IAogICAgIC8vIFByaXZhdGUKIAotICAgIF9lc2NhcGVUYWJsZU5hbWU6IGZ1bmN0aW9uKG5hbWUp
CisgICAgX2VzY2FwZVRhYmxlTmFtZShuYW1lKQogICAgIHsKICAgICAgICAgcmV0dXJuIG5hbWUu
cmVwbGFjZSgvXCIvZywgIlwiXCIiKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9xdWVyeUZpbmlz
aGVkOiBmdW5jdGlvbihjb2x1bW5OYW1lcywgdmFsdWVzKQorICAgIF9xdWVyeUZpbmlzaGVkKGNv
bHVtbk5hbWVzLCB2YWx1ZXMpCiAgICAgewogICAgICAgICAvLyBJdCB3b3VsZCBiZSBuaWNlIHRv
IGRvIGJldHRlciB0aGFuIGNyZWF0aW5nIGEgbmV3IGRhdGEgZ3JpZCBlYWNoIHRpbWUgdGhlIHRh
YmxlIGlzIHVwZGF0ZWQsIGJ1dCB0aGUgdGFibGUgdXBkYXRpbmcKICAgICAgICAgLy8gZG9lc24n
dCBoYXBwZW4gdmVyeSBmcmVxdWVudGx5LiBBZGRpdGlvbmFsbHksIHVzaW5nIERhdGFHcmlkJ3Mg
Y3JlYXRlU29ydGFibGVEYXRhR3JpZCBtYWtlcyBvdXIgY29kZSBtdWNoIGNsZWFuZXIgYW5kIGl0
IGtub3dzCkBAIC05OSwxNSArOTcsMTUgQEAgV2ViSW5zcGVjdG9yLkRhdGFiYXNlVGFibGVDb250
ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxk
KHRoaXMuX2RhdGFHcmlkLmVsZW1lbnQpOwogICAgICAgICB0aGlzLl9kYXRhR3JpZC51cGRhdGVM
YXlvdXQoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9xdWVyeUVycm9yOiBmdW5jdGlvbihlcnJv
cikKKyAgICBfcXVlcnlFcnJvcihlcnJvcikKICAgICB7CiAgICAgICAgIHRoaXMuZWxlbWVudC5y
ZW1vdmVDaGlsZHJlbigpOwogICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQoV2ViSW5z
cGVjdG9yLmNyZWF0ZU1lc3NhZ2VUZXh0VmlldyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkFuIGVy
cm9yIG9jY3VyZWQgdHJ5aW5nIHRvXG5yZWFkIHRoZSDigJwlc+KAnSB0YWJsZS4iKS5mb3JtYXQo
dGhpcy5yZXByZXNlbnRlZE9iamVjdC5uYW1lKSwgdHJ1ZSkpOwotICAgIH0sCisgICAgfQogCi0g
ICAgX3JlZnJlc2hCdXR0b25DbGlja2VkOiBmdW5jdGlvbigpCisgICAgX3JlZnJlc2hCdXR0b25D
bGlja2VkKCkKICAgICB7CiAgICAgICAgIHRoaXMudXBkYXRlKCk7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGVidWdnZXJUYWJD
b250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L0RlYnVnZ2VyVGFiQ29udGVudFZpZXcuanMKaW5kZXggMmUxYTFmY2E1MTEwMjg1ZThjMDAwNWZm
M2FiODk3YTdiNjZkYzhlMC4uNzk4ZDMxYzkyYWE0MzAzN2JlN2Q4MDhiZThmZWE3N2ZkZTUwYmVm
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
RGVidWdnZXJUYWJDb250ZW50Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9EZWJ1Z2dlclRhYkNvbnRlbnRWaWV3LmpzCkBAIC0yMywyNiArMjMs
MjQgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNw
ZWN0b3IuRGVidWdnZXJUYWJDb250ZW50VmlldyA9IGZ1bmN0aW9uKGlkZW50aWZpZXIpCitXZWJJ
bnNwZWN0b3IuRGVidWdnZXJUYWJDb250ZW50VmlldyA9IGNsYXNzIERlYnVnZ2VyVGFiQ29udGVu
dFZpZXcgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuQ29udGVudEJyb3dzZXJUYWJDb250ZW50Vmlldwog
ewotICAgIHZhciB0YWJCYXJJdGVtID0gbmV3IFdlYkluc3BlY3Rvci5UYWJCYXJJdGVtKCJJbWFn
ZXMvRGVidWdnZXIuc3ZnIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJEZWJ1Z2dlciIpKTsKLSAg
ICB2YXIgZGV0YWlsc1NpZGViYXJQYW5lbHMgPSBbV2ViSW5zcGVjdG9yLnJlc291cmNlRGV0YWls
c1NpZGViYXJQYW5lbCwgV2ViSW5zcGVjdG9yLnNjb3BlQ2hhaW5EZXRhaWxzU2lkZWJhclBhbmVs
LCBXZWJJbnNwZWN0b3IucHJvYmVEZXRhaWxzU2lkZWJhclBhbmVsXTsKLQotICAgIFdlYkluc3Bl
Y3Rvci5Db250ZW50QnJvd3NlclRhYkNvbnRlbnRWaWV3LmNhbGwodGhpcywgaWRlbnRpZmllciB8
fCAiZGVidWdnZXIiLCAiZGVidWdnZXIiLCB0YWJCYXJJdGVtLCBXZWJJbnNwZWN0b3IuRGVidWdn
ZXJTaWRlYmFyUGFuZWwsIGRldGFpbHNTaWRlYmFyUGFuZWxzKTsKLX07CisgICAgY29uc3RydWN0
b3IoaWRlbnRpZmllcikKKyAgICB7CisgICAgICAgIHZhciB0YWJCYXJJdGVtID0gbmV3IFdlYklu
c3BlY3Rvci5UYWJCYXJJdGVtKCJJbWFnZXMvRGVidWdnZXIuc3ZnIiwgV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJEZWJ1Z2dlciIpKTsKKyAgICAgICAgdmFyIGRldGFpbHNTaWRlYmFyUGFuZWxzID0g
W1dlYkluc3BlY3Rvci5yZXNvdXJjZURldGFpbHNTaWRlYmFyUGFuZWwsIFdlYkluc3BlY3Rvci5z
Y29wZUNoYWluRGV0YWlsc1NpZGViYXJQYW5lbCwgV2ViSW5zcGVjdG9yLnByb2JlRGV0YWlsc1Np
ZGViYXJQYW5lbF07CiAKLVdlYkluc3BlY3Rvci5EZWJ1Z2dlclRhYkNvbnRlbnRWaWV3LnByb3Rv
dHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkRlYnVnZ2VyVGFiQ29udGVu
dFZpZXcsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuQ29udGVudEJyb3dzZXJUYWJDb250
ZW50Vmlldy5wcm90b3R5cGUsCisgICAgICAgIHN1cGVyKGlkZW50aWZpZXIgfHwgImRlYnVnZ2Vy
IiwgImRlYnVnZ2VyIiwgdGFiQmFySXRlbSwgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyU2lkZWJhclBh
bmVsLCBkZXRhaWxzU2lkZWJhclBhbmVscyk7CisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAg
ICBnZXQgdHlwZSgpCiAgICAgewogICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLkRlYnVnZ2Vy
VGFiQ29udGVudFZpZXcuVHlwZTsKLSAgICB9LAorICAgIH0KIAotICAgIGNhblNob3dSZXByZXNl
bnRlZE9iamVjdDogZnVuY3Rpb24ocmVwcmVzZW50ZWRPYmplY3QpCisgICAgY2FuU2hvd1JlcHJl
c2VudGVkT2JqZWN0KHJlcHJlc2VudGVkT2JqZWN0KQogICAgIHsKICAgICAgICAgaWYgKHJlcHJl
c2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlNjcmlwdCkKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwpAQCAtNTEsOSArNDksOSBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJUYWJD
b250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAg
ICAgICAgcmV0dXJuIHJlcHJlc2VudGVkT2JqZWN0LnR5cGUgPT09IFdlYkluc3BlY3Rvci5SZXNv
dXJjZS5UeXBlLkRvY3VtZW50IHx8IHJlcHJlc2VudGVkT2JqZWN0LnR5cGUgPT09IFdlYkluc3Bl
Y3Rvci5SZXNvdXJjZS5UeXBlLlNjcmlwdDsKLSAgICB9LAorICAgIH0KIAotICAgIHNob3dEZXRh
aWxzU2lkZWJhclBhbmVsczogZnVuY3Rpb24oKQorICAgIHNob3dEZXRhaWxzU2lkZWJhclBhbmVs
cygpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3IuQ29udGVudEJyb3dzZXJUYWJDb250ZW50
Vmlldy5wcm90b3R5cGUuc2hvd0RldGFpbHNTaWRlYmFyUGFuZWxzLmNhbGwodGhpcyk7CiAKQEAg
LTYzLDE0ICs2MSwxNCBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJUYWJDb250ZW50Vmlldy5wcm90
b3R5cGUgPSB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5zY29wZUNoYWluRGV0YWlsc1NpZGViYXJQ
YW5lbC5zaG93KCk7CiAKICAgICAgICAgdGhpcy5fc2hvd1Njb3BlQ2hhaW5EZXRhaWxzU2lkZWJh
clBhbmVsID0gZmFsc2U7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzaG93U2NvcGVDaGFpbkRldGFp
bHNTaWRlYmFyUGFuZWw6IGZ1bmN0aW9uKCkKKyAgICBzaG93U2NvcGVDaGFpbkRldGFpbHNTaWRl
YmFyUGFuZWwoKQogICAgIHsKICAgICAgICAgdGhpcy5fc2hvd1Njb3BlQ2hhaW5EZXRhaWxzU2lk
ZWJhclBhbmVsID0gdHJ1ZTsKLSAgICB9LAorICAgIH0KIAotICAgIHJldmVhbEFuZFNlbGVjdEJy
ZWFrcG9pbnQ6IGZ1bmN0aW9uKGJyZWFrcG9pbnQpCisgICAgcmV2ZWFsQW5kU2VsZWN0QnJlYWtw
b2ludChicmVha3BvaW50KQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoYnJlYWtwb2lu
dCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5CcmVha3BvaW50KTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTmV0d29ya0dyaWRDb250ZW50
Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05ldHdv
cmtHcmlkQ29udGVudFZpZXcuanMKaW5kZXggMDk3N2YzNjI2NDlhOWQyYzE3OTg3NDBmZTgzMDU3
YTFmMjE3OGRjMi4uZjNkNjcyZjcyMTlmNDcxZmRkODg2Mjc1YjJiNjc5YzJmOWY0OThhMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTmV0d29y
a0dyaWRDb250ZW50Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9OZXR3b3JrR3JpZENvbnRlbnRWaWV3LmpzCkBAIC0yMyw4NiArMjMsODQgQEAK
ICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3Iu
TmV0d29ya0dyaWRDb250ZW50VmlldyA9IGZ1bmN0aW9uKHJlcHJlc2VudGVkT2JqZWN0LCBleHRy
YUFyZ3VtZW50cykKK1dlYkluc3BlY3Rvci5OZXR3b3JrR3JpZENvbnRlbnRWaWV3ID0gY2xhc3Mg
TmV0d29ya0dyaWRDb250ZW50VmlldyBleHRlbmRzIFdlYkluc3BlY3Rvci5Db250ZW50Vmlldwog
ewotICAgIGNvbnNvbGUuYXNzZXJ0KGV4dHJhQXJndW1lbnRzKTsKLSAgICBjb25zb2xlLmFzc2Vy
dChleHRyYUFyZ3VtZW50cy5uZXR3b3JrU2lkZWJhclBhbmVsIGluc3RhbmNlb2YgV2ViSW5zcGVj
dG9yLk5ldHdvcmtTaWRlYmFyUGFuZWwpOwotCi0gICAgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3
LmNhbGwodGhpcywgcmVwcmVzZW50ZWRPYmplY3QpOworICAgIGNvbnN0cnVjdG9yKHJlcHJlc2Vu
dGVkT2JqZWN0LCBleHRyYUFyZ3VtZW50cykKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0
KGV4dHJhQXJndW1lbnRzKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoZXh0cmFBcmd1bWVudHMu
bmV0d29ya1NpZGViYXJQYW5lbCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5OZXR3b3JrU2lkZWJh
clBhbmVsKTsKIAotICAgIHRoaXMuX25ldHdvcmtTaWRlYmFyUGFuZWwgPSBleHRyYUFyZ3VtZW50
cy5uZXR3b3JrU2lkZWJhclBhbmVsOworICAgICAgICBzdXBlcihyZXByZXNlbnRlZE9iamVjdCk7
CiAKLSAgICB0aGlzLl9jb250ZW50VHJlZU91dGxpbmUgPSB0aGlzLl9uZXR3b3JrU2lkZWJhclBh
bmVsLmNvbnRlbnRUcmVlT3V0bGluZTsKLSAgICB0aGlzLl9jb250ZW50VHJlZU91dGxpbmUub25z
ZWxlY3QgPSB0aGlzLl90cmVlRWxlbWVudFNlbGVjdGVkLmJpbmQodGhpcyk7CisgICAgICAgIHRo
aXMuX25ldHdvcmtTaWRlYmFyUGFuZWwgPSBleHRyYUFyZ3VtZW50cy5uZXR3b3JrU2lkZWJhclBh
bmVsOwogCi0gICAgdmFyIGNvbHVtbnMgPSB7ZG9tYWluOiB7fSwgdHlwZToge30sIG1ldGhvZDog
e30sIHNjaGVtZToge30sIHN0YXR1c0NvZGU6IHt9LCBjYWNoZWQ6IHt9LCBzaXplOiB7fSwgdHJh
bnNmZXJTaXplOiB7fSwgcmVxdWVzdFNlbnQ6IHt9LCBsYXRlbmN5OiB7fSwgZHVyYXRpb246IHt9
fTsKKyAgICAgICAgdGhpcy5fY29udGVudFRyZWVPdXRsaW5lID0gdGhpcy5fbmV0d29ya1NpZGVi
YXJQYW5lbC5jb250ZW50VHJlZU91dGxpbmU7CisgICAgICAgIHRoaXMuX2NvbnRlbnRUcmVlT3V0
bGluZS5vbnNlbGVjdCA9IHRoaXMuX3RyZWVFbGVtZW50U2VsZWN0ZWQuYmluZCh0aGlzKTsKIAot
ICAgIGNvbHVtbnMuZG9tYWluLnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJEb21haW4i
KTsKLSAgICBjb2x1bW5zLmRvbWFpbi53aWR0aCA9ICIxMCUiOworICAgICAgICB2YXIgY29sdW1u
cyA9IHtkb21haW46IHt9LCB0eXBlOiB7fSwgbWV0aG9kOiB7fSwgc2NoZW1lOiB7fSwgc3RhdHVz
Q29kZToge30sIGNhY2hlZDoge30sIHNpemU6IHt9LCB0cmFuc2ZlclNpemU6IHt9LCByZXF1ZXN0
U2VudDoge30sIGxhdGVuY3k6IHt9LCBkdXJhdGlvbjoge319OwogCi0gICAgY29sdW1ucy50eXBl
LnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJUeXBlIik7Ci0gICAgY29sdW1ucy50eXBl
LndpZHRoID0gIjglIjsKKyAgICAgICAgY29sdW1ucy5kb21haW4udGl0bGUgPSBXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIkRvbWFpbiIpOworICAgICAgICBjb2x1bW5zLmRvbWFpbi53aWR0aCA9ICIx
MCUiOwogCi0gICAgY29sdW1ucy5tZXRob2QudGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
Ik1ldGhvZCIpOwotICAgIGNvbHVtbnMubWV0aG9kLndpZHRoID0gIjYlIjsKKyAgICAgICAgY29s
dW1ucy50eXBlLnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJUeXBlIik7CisgICAgICAg
IGNvbHVtbnMudHlwZS53aWR0aCA9ICI4JSI7CiAKLSAgICBjb2x1bW5zLnNjaGVtZS50aXRsZSA9
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2NoZW1lIik7Ci0gICAgY29sdW1ucy5zY2hlbWUud2lk
dGggPSAiNiUiOworICAgICAgICBjb2x1bW5zLm1ldGhvZC50aXRsZSA9IFdlYkluc3BlY3Rvci5V
SVN0cmluZygiTWV0aG9kIik7CisgICAgICAgIGNvbHVtbnMubWV0aG9kLndpZHRoID0gIjYlIjsK
IAotICAgIGNvbHVtbnMuc3RhdHVzQ29kZS50aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygi
U3RhdHVzIik7Ci0gICAgY29sdW1ucy5zdGF0dXNDb2RlLndpZHRoID0gIjYlIjsKKyAgICAgICAg
Y29sdW1ucy5zY2hlbWUudGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNjaGVtZSIpOwor
ICAgICAgICBjb2x1bW5zLnNjaGVtZS53aWR0aCA9ICI2JSI7CiAKLSAgICBjb2x1bW5zLmNhY2hl
ZC50aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ2FjaGVkIik7Ci0gICAgY29sdW1ucy5j
YWNoZWQud2lkdGggPSAiNiUiOworICAgICAgICBjb2x1bW5zLnN0YXR1c0NvZGUudGl0bGUgPSBX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlN0YXR1cyIpOworICAgICAgICBjb2x1bW5zLnN0YXR1c0Nv
ZGUud2lkdGggPSAiNiUiOwogCi0gICAgY29sdW1ucy5zaXplLnRpdGxlID0gV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJTaXplIik7Ci0gICAgY29sdW1ucy5zaXplLndpZHRoID0gIjglIjsKLSAgICBj
b2x1bW5zLnNpemUuYWxpZ25lZCA9ICJyaWdodCI7CisgICAgICAgIGNvbHVtbnMuY2FjaGVkLnRp
dGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDYWNoZWQiKTsKKyAgICAgICAgY29sdW1ucy5j
YWNoZWQud2lkdGggPSAiNiUiOwogCi0gICAgY29sdW1ucy50cmFuc2ZlclNpemUudGl0bGUgPSBX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlRyYW5zZmVyZWQiKTsKLSAgICBjb2x1bW5zLnRyYW5zZmVy
U2l6ZS53aWR0aCA9ICI4JSI7Ci0gICAgY29sdW1ucy50cmFuc2ZlclNpemUuYWxpZ25lZCA9ICJy
aWdodCI7CisgICAgICAgIGNvbHVtbnMuc2l6ZS50aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiU2l6ZSIpOworICAgICAgICBjb2x1bW5zLnNpemUud2lkdGggPSAiOCUiOworICAgICAgICBj
b2x1bW5zLnNpemUuYWxpZ25lZCA9ICJyaWdodCI7CiAKLSAgICBjb2x1bW5zLnJlcXVlc3RTZW50
LnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTdGFydCBUaW1lIik7Ci0gICAgY29sdW1u
cy5yZXF1ZXN0U2VudC53aWR0aCA9ICI5JSI7Ci0gICAgY29sdW1ucy5yZXF1ZXN0U2VudC5hbGln
bmVkID0gInJpZ2h0IjsKKyAgICAgICAgY29sdW1ucy50cmFuc2ZlclNpemUudGl0bGUgPSBXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIlRyYW5zZmVyZWQiKTsKKyAgICAgICAgY29sdW1ucy50cmFuc2Zl
clNpemUud2lkdGggPSAiOCUiOworICAgICAgICBjb2x1bW5zLnRyYW5zZmVyU2l6ZS5hbGlnbmVk
ID0gInJpZ2h0IjsKIAotICAgIGNvbHVtbnMubGF0ZW5jeS50aXRsZSA9IFdlYkluc3BlY3Rvci5V
SVN0cmluZygiTGF0ZW5jeSIpOwotICAgIGNvbHVtbnMubGF0ZW5jeS53aWR0aCA9ICI5JSI7Ci0g
ICAgY29sdW1ucy5sYXRlbmN5LmFsaWduZWQgPSAicmlnaHQiOworICAgICAgICBjb2x1bW5zLnJl
cXVlc3RTZW50LnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTdGFydCBUaW1lIik7Cisg
ICAgICAgIGNvbHVtbnMucmVxdWVzdFNlbnQud2lkdGggPSAiOSUiOworICAgICAgICBjb2x1bW5z
LnJlcXVlc3RTZW50LmFsaWduZWQgPSAicmlnaHQiOwogCi0gICAgY29sdW1ucy5kdXJhdGlvbi50
aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiRHVyYXRpb24iKTsKLSAgICBjb2x1bW5zLmR1
cmF0aW9uLndpZHRoID0gIjklIjsKLSAgICBjb2x1bW5zLmR1cmF0aW9uLmFsaWduZWQgPSAicmln
aHQiOworICAgICAgICBjb2x1bW5zLmxhdGVuY3kudGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIkxhdGVuY3kiKTsKKyAgICAgICAgY29sdW1ucy5sYXRlbmN5LndpZHRoID0gIjklIjsKKyAg
ICAgICAgY29sdW1ucy5sYXRlbmN5LmFsaWduZWQgPSAicmlnaHQiOwogCi0gICAgZm9yICh2YXIg
Y29sdW1uIGluIGNvbHVtbnMpCi0gICAgICAgIGNvbHVtbnNbY29sdW1uXS5zb3J0YWJsZSA9IHRy
dWU7CisgICAgICAgIGNvbHVtbnMuZHVyYXRpb24udGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIkR1cmF0aW9uIik7CisgICAgICAgIGNvbHVtbnMuZHVyYXRpb24ud2lkdGggPSAiOSUiOwor
ICAgICAgICBjb2x1bW5zLmR1cmF0aW9uLmFsaWduZWQgPSAicmlnaHQiOwogCi0gICAgdGhpcy5f
ZGF0YUdyaWQgPSBuZXcgV2ViSW5zcGVjdG9yLlRpbWVsaW5lRGF0YUdyaWQodGhpcy5fY29udGVu
dFRyZWVPdXRsaW5lLCBjb2x1bW5zKTsKLSAgICB0aGlzLl9kYXRhR3JpZC5hZGRFdmVudExpc3Rl
bmVyKFdlYkluc3BlY3Rvci5EYXRhR3JpZC5FdmVudC5TZWxlY3RlZE5vZGVDaGFuZ2VkLCB0aGlz
Ll9kYXRhR3JpZE5vZGVTZWxlY3RlZCwgdGhpcyk7Ci0gICAgdGhpcy5fZGF0YUdyaWQuc29ydENv
bHVtbklkZW50aWZpZXIgPSAicmVxdWVzdFNlbnQiOwotICAgIHRoaXMuX2RhdGFHcmlkLnNvcnRP
cmRlciA9IFdlYkluc3BlY3Rvci5EYXRhR3JpZC5Tb3J0T3JkZXIuQXNjZW5kaW5nOworICAgICAg
ICBmb3IgKHZhciBjb2x1bW4gaW4gY29sdW1ucykKKyAgICAgICAgICAgIGNvbHVtbnNbY29sdW1u
XS5zb3J0YWJsZSA9IHRydWU7CiAKLSAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgibmV0
d29yay1ncmlkIik7Ci0gICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2RhdGFHcmlk
LmVsZW1lbnQpOworICAgICAgICB0aGlzLl9kYXRhR3JpZCA9IG5ldyBXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVEYXRhR3JpZCh0aGlzLl9jb250ZW50VHJlZU91dGxpbmUsIGNvbHVtbnMpOworICAgICAg
ICB0aGlzLl9kYXRhR3JpZC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5EYXRhR3JpZC5F
dmVudC5TZWxlY3RlZE5vZGVDaGFuZ2VkLCB0aGlzLl9kYXRhR3JpZE5vZGVTZWxlY3RlZCwgdGhp
cyk7CisgICAgICAgIHRoaXMuX2RhdGFHcmlkLnNvcnRDb2x1bW5JZGVudGlmaWVyID0gInJlcXVl
c3RTZW50IjsKKyAgICAgICAgdGhpcy5fZGF0YUdyaWQuc29ydE9yZGVyID0gV2ViSW5zcGVjdG9y
LkRhdGFHcmlkLlNvcnRPcmRlci5Bc2NlbmRpbmc7CiAKLSAgICB2YXIgbmV0d29ya1RpbWVsaW5l
ID0gV2ViSW5zcGVjdG9yLnRpbWVsaW5lTWFuYWdlci5wZXJzaXN0ZW50TmV0d29ya1RpbWVsaW5l
OwotICAgIG5ldHdvcmtUaW1lbGluZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5UaW1l
bGluZS5FdmVudC5SZWNvcmRBZGRlZCwgdGhpcy5fbmV0d29ya1RpbWVsaW5lUmVjb3JkQWRkZWQs
IHRoaXMpOwotICAgIG5ldHdvcmtUaW1lbGluZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rv
ci5UaW1lbGluZS5FdmVudC5SZXNldCwgdGhpcy5fbmV0d29ya1RpbWVsaW5lUmVzZXQsIHRoaXMp
OworICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgibmV0d29yay1ncmlkIik7Cisg
ICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9kYXRhR3JpZC5lbGVtZW50KTsK
IAotICAgIHRoaXMuX3BlbmRpbmdSZWNvcmRzID0gW107Ci19OworICAgICAgICB2YXIgbmV0d29y
a1RpbWVsaW5lID0gV2ViSW5zcGVjdG9yLnRpbWVsaW5lTWFuYWdlci5wZXJzaXN0ZW50TmV0d29y
a1RpbWVsaW5lOworICAgICAgICBuZXR3b3JrVGltZWxpbmUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJ
bnNwZWN0b3IuVGltZWxpbmUuRXZlbnQuUmVjb3JkQWRkZWQsIHRoaXMuX25ldHdvcmtUaW1lbGlu
ZVJlY29yZEFkZGVkLCB0aGlzKTsKKyAgICAgICAgbmV0d29ya1RpbWVsaW5lLmFkZEV2ZW50TGlz
dGVuZXIoV2ViSW5zcGVjdG9yLlRpbWVsaW5lLkV2ZW50LlJlc2V0LCB0aGlzLl9uZXR3b3JrVGlt
ZWxpbmVSZXNldCwgdGhpcyk7CiAKLVdlYkluc3BlY3Rvci5OZXR3b3JrR3JpZENvbnRlbnRWaWV3
LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLk5ldHdvcmtHcmlk
Q29udGVudFZpZXcsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcucHJv
dG90eXBlLAorICAgICAgICB0aGlzLl9wZW5kaW5nUmVjb3JkcyA9IFtdOworICAgIH0KIAogICAg
IC8vIFB1YmxpYwogCiAgICAgZ2V0IG5hdmlnYXRpb25TaWRlYmFyVHJlZU91dGxpbmUoKQogICAg
IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbnRlbnRUcmVlT3V0bGluZTsKLSAgICB9LAorICAg
IH0KIAogICAgIGdldCBzZWxlY3Rpb25QYXRoQ29tcG9uZW50cygpCiAgICAgewpAQCAtMTEyLDMz
ICsxMTAsMzMgQEAgV2ViSW5zcGVjdG9yLk5ldHdvcmtHcmlkQ29udGVudFZpZXcucHJvdG90eXBl
ID0gewogICAgICAgICB2YXIgcGF0aENvbXBvbmVudCA9IG5ldyBXZWJJbnNwZWN0b3IuR2VuZXJh
bFRyZWVFbGVtZW50UGF0aENvbXBvbmVudCh0aGlzLl9jb250ZW50VHJlZU91dGxpbmUuc2VsZWN0
ZWRUcmVlRWxlbWVudCk7CiAgICAgICAgIHBhdGhDb21wb25lbnQuYWRkRXZlbnRMaXN0ZW5lcihX
ZWJJbnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0aENvbXBvbmVudC5FdmVudC5TaWJsaW5nV2FzU2Vs
ZWN0ZWQsIHRoaXMuX3RyZWVFbGVtZW50UGF0aENvbXBvbmVudFNlbGVjdGVkLCB0aGlzKTsKICAg
ICAgICAgcmV0dXJuIFtwYXRoQ29tcG9uZW50XTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCB6
ZXJvVGltZSgpCiAgICAgewogICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLnRpbWVsaW5lTWFu
YWdlci5wZXJzaXN0ZW50TmV0d29ya1RpbWVsaW5lLnN0YXJ0VGltZTsKLSAgICB9LAorICAgIH0K
IAotICAgIHNob3duOiBmdW5jdGlvbigpCisgICAgc2hvd24oKQogICAgIHsKLSAgICAgICAgV2Vi
SW5zcGVjdG9yLkNvbnRlbnRWaWV3LnByb3RvdHlwZS5zaG93bi5jYWxsKHRoaXMpOworICAgICAg
ICBzdXBlci5zaG93bigpOwogCiAgICAgICAgIHRoaXMuX2RhdGFHcmlkLnNob3duKCk7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICBoaWRkZW46IGZ1bmN0aW9uKCkKKyAgICBoaWRkZW4oKQogICAgIHsK
ICAgICAgICAgdGhpcy5fZGF0YUdyaWQuaGlkZGVuKCk7CiAKLSAgICAgICAgV2ViSW5zcGVjdG9y
LkNvbnRlbnRWaWV3LnByb3RvdHlwZS5oaWRkZW4uY2FsbCh0aGlzKTsKLSAgICB9LAorICAgICAg
ICBzdXBlci5oaWRkZW4oKTsKKyAgICB9CiAKLSAgICBjbG9zZWQ6IGZ1bmN0aW9uKCkKKyAgICBj
bG9zZWQoKQogICAgIHsKICAgICAgICAgdGhpcy5fZGF0YUdyaWQuY2xvc2VkKCk7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICB1cGRhdGVMYXlvdXQ6IGZ1bmN0aW9uKCkKKyAgICB1cGRhdGVMYXlvdXQo
KQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX3NjaGVkdWxlZExheW91dFVwZGF0ZUlkZW50aWZp
ZXIpIHsKICAgICAgICAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMuX3NjaGVkdWxlZExh
eW91dFVwZGF0ZUlkZW50aWZpZXIpOwpAQCAtMTQ4LDkgKzE0Niw5IEBAIFdlYkluc3BlY3Rvci5O
ZXR3b3JrR3JpZENvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fZGF0YUdy
aWQudXBkYXRlTGF5b3V0KCk7CiAKICAgICAgICAgdGhpcy5fcHJvY2Vzc1BlbmRpbmdSZWNvcmRz
KCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBuZWVkc0xheW91dDogZnVuY3Rpb24oKQorICAgIG5l
ZWRzTGF5b3V0KCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fbmV0d29ya1NpZGViYXJQYW5l
bC52aXNpYmxlKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTU5LDE3ICsxNTcsMTcgQEAgV2Vi
SW5zcGVjdG9yLk5ldHdvcmtHcmlkQ29udGVudFZpZXcucHJvdG90eXBlID0gewogICAgICAgICAg
ICAgcmV0dXJuOwogCiAgICAgICAgIHRoaXMuX3NjaGVkdWxlZExheW91dFVwZGF0ZUlkZW50aWZp
ZXIgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUodGhpcy51cGRhdGVMYXlvdXQuYmluZCh0aGlzKSk7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICByZXNldDogZnVuY3Rpb24oKQorICAgIHJlc2V0KCkKICAg
ICB7CiAgICAgICAgIHRoaXMuX2NvbnRlbnRUcmVlT3V0bGluZS5yZW1vdmVDaGlsZHJlbigpOwog
ICAgICAgICB0aGlzLl9kYXRhR3JpZC5yZXNldCgpOwotICAgIH0sCisgICAgfQogCiAgICAgLy8g
UHJpdmF0ZQogCi0gICAgX3Byb2Nlc3NQZW5kaW5nUmVjb3JkczogZnVuY3Rpb24oKQorICAgIF9w
cm9jZXNzUGVuZGluZ1JlY29yZHMoKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9wZW5kaW5n
UmVjb3Jkcy5sZW5ndGgpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0xODcsMTQgKzE4NSwxNCBA
QCBXZWJJbnNwZWN0b3IuTmV0d29ya0dyaWRDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIH0KIAogICAgICAgICB0aGlzLl9wZW5kaW5nUmVjb3JkcyA9IFtdOwotICAgIH0sCisgICAg
fQogCi0gICAgX25ldHdvcmtUaW1lbGluZVJlc2V0OiBmdW5jdGlvbihldmVudCkKKyAgICBfbmV0
d29ya1RpbWVsaW5lUmVzZXQoZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLnJlc2V0KCk7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBfbmV0d29ya1RpbWVsaW5lUmVjb3JkQWRkZWQ6IGZ1bmN0aW9u
KGV2ZW50KQorICAgIF9uZXR3b3JrVGltZWxpbmVSZWNvcmRBZGRlZChldmVudCkKICAgICB7CiAg
ICAgICAgIHZhciByZXNvdXJjZVRpbWVsaW5lUmVjb3JkID0gZXZlbnQuZGF0YS5yZWNvcmQ7CiAg
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KHJlc291cmNlVGltZWxpbmVSZWNvcmQgaW5zdGFuY2VvZiBX
ZWJJbnNwZWN0b3IuUmVzb3VyY2VUaW1lbGluZVJlY29yZCk7CkBAIC0yMDIsMTcgKzIwMCwxNyBA
QCBXZWJJbnNwZWN0b3IuTmV0d29ya0dyaWRDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIHRoaXMuX3BlbmRpbmdSZWNvcmRzLnB1c2gocmVzb3VyY2VUaW1lbGluZVJlY29yZCk7CiAK
ICAgICAgICAgdGhpcy5uZWVkc0xheW91dCgpOwotICAgIH0sCisgICAgfQogCi0gICAgX3RyZWVF
bGVtZW50UGF0aENvbXBvbmVudFNlbGVjdGVkOiBmdW5jdGlvbihldmVudCkKKyAgICBfdHJlZUVs
ZW1lbnRQYXRoQ29tcG9uZW50U2VsZWN0ZWQoZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgZGF0
YUdyaWROb2RlID0gdGhpcy5fZGF0YUdyaWQuZGF0YUdyaWROb2RlRm9yVHJlZUVsZW1lbnQoZXZl
bnQuZGF0YS5wYXRoQ29tcG9uZW50LmdlbmVyYWxUcmVlRWxlbWVudCk7CiAgICAgICAgIGlmICgh
ZGF0YUdyaWROb2RlKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBkYXRhR3JpZE5vZGUu
cmV2ZWFsQW5kU2VsZWN0KCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdHJlZUVsZW1lbnRTZWxl
Y3RlZDogZnVuY3Rpb24odHJlZUVsZW1lbnQsIHNlbGVjdGVkQnlVc2VyKQorICAgIF90cmVlRWxl
bWVudFNlbGVjdGVkKHRyZWVFbGVtZW50LCBzZWxlY3RlZEJ5VXNlcikKICAgICB7CiAgICAgICAg
IHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5F
dmVudC5TZWxlY3Rpb25QYXRoQ29tcG9uZW50c0RpZENoYW5nZSk7CiAKQEAgLTIyNSw5ICsyMjMs
OSBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya0dyaWRDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIH0KIAogICAgICAgICBjb25zb2xlLmVycm9yKCJVbmtub3duIHRyZWUgZWxlbWVudCIs
IHRyZWVFbGVtZW50KTsKLSAgICB9LAorICAgIH0KIAotICAgIF9kYXRhR3JpZE5vZGVTZWxlY3Rl
ZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX2RhdGFHcmlkTm9kZVNlbGVjdGVkKGV2ZW50KQogICAg
IHsKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkNv
bnRlbnRWaWV3LkV2ZW50LlNlbGVjdGlvblBhdGhDb21wb25lbnRzRGlkQ2hhbmdlKTsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9O
ZXR3b3JrVGFiQ29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9OZXR3b3JrVGFiQ29udGVudFZpZXcuanMKaW5kZXggMzdmYzZjZTY1MThlYzc4
ZTZlMWI1ZDI0ZGQ3MjdlMDQ3NmJlY2MyYy4uZDE1M2MxMjRlZDM4OTcyZGIxYzY4MThjMjFhNTlm
MzdlNjZjNDI3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvTmV0d29ya1RhYkNvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05ldHdvcmtUYWJDb250ZW50Vmlldy5qcwpAQCAtMjMs
MjkgKzIzLDI3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAot
V2ViSW5zcGVjdG9yLk5ldHdvcmtUYWJDb250ZW50VmlldyA9IGZ1bmN0aW9uKGlkZW50aWZpZXIp
CitXZWJJbnNwZWN0b3IuTmV0d29ya1RhYkNvbnRlbnRWaWV3ID0gY2xhc3MgTmV0d29ya1RhYkNv
bnRlbnRWaWV3IGV4dGVuZHMgV2ViSW5zcGVjdG9yLkNvbnRlbnRCcm93c2VyVGFiQ29udGVudFZp
ZXcKIHsKLSAgICB2YXIgdGFiQmFySXRlbSA9IG5ldyBXZWJJbnNwZWN0b3IuVGFiQmFySXRlbSgi
SW1hZ2VzL05ldHdvcmsuc3ZnIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJOZXR3b3JrIikpOwot
ICAgIHZhciBkZXRhaWxzU2lkZWJhclBhbmVscyA9IFtXZWJJbnNwZWN0b3IucmVzb3VyY2VEZXRh
aWxzU2lkZWJhclBhbmVsLCBXZWJJbnNwZWN0b3IucHJvYmVEZXRhaWxzU2lkZWJhclBhbmVsXTsK
LQotICAgIFdlYkluc3BlY3Rvci5Db250ZW50QnJvd3NlclRhYkNvbnRlbnRWaWV3LmNhbGwodGhp
cywgaWRlbnRpZmllciB8fCAibmV0d29yayIsICJuZXR3b3JrIiwgdGFiQmFySXRlbSwgV2ViSW5z
cGVjdG9yLk5ldHdvcmtTaWRlYmFyUGFuZWwsIGRldGFpbHNTaWRlYmFyUGFuZWxzKTsKLX07Cisg
ICAgY29uc3RydWN0b3IoaWRlbnRpZmllcikKKyAgICB7CisgICAgICAgIHZhciB0YWJCYXJJdGVt
ID0gbmV3IFdlYkluc3BlY3Rvci5UYWJCYXJJdGVtKCJJbWFnZXMvTmV0d29yay5zdmciLCBXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIk5ldHdvcmsiKSk7CisgICAgICAgIHZhciBkZXRhaWxzU2lkZWJh
clBhbmVscyA9IFtXZWJJbnNwZWN0b3IucmVzb3VyY2VEZXRhaWxzU2lkZWJhclBhbmVsLCBXZWJJ
bnNwZWN0b3IucHJvYmVEZXRhaWxzU2lkZWJhclBhbmVsXTsKIAotV2ViSW5zcGVjdG9yLk5ldHdv
cmtUYWJDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3Bl
Y3Rvci5OZXR3b3JrVGFiQ29udGVudFZpZXcsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3Iu
Q29udGVudEJyb3dzZXJUYWJDb250ZW50Vmlldy5wcm90b3R5cGUsCisgICAgICAgIHN1cGVyKGlk
ZW50aWZpZXIgfHwgIm5ldHdvcmsiLCAibmV0d29yayIsIHRhYkJhckl0ZW0sIFdlYkluc3BlY3Rv
ci5OZXR3b3JrU2lkZWJhclBhbmVsLCBkZXRhaWxzU2lkZWJhclBhbmVscyk7CisgICAgfQogCiAg
ICAgLy8gUHVibGljCiAKICAgICBnZXQgdHlwZSgpCiAgICAgewogICAgICAgICByZXR1cm4gV2Vi
SW5zcGVjdG9yLk5ldHdvcmtUYWJDb250ZW50Vmlldy5UeXBlOwotICAgIH0sCisgICAgfQogCi0g
ICAgY2FuU2hvd1JlcHJlc2VudGVkT2JqZWN0OiBmdW5jdGlvbihyZXByZXNlbnRlZE9iamVjdCkK
KyAgICBjYW5TaG93UmVwcmVzZW50ZWRPYmplY3QocmVwcmVzZW50ZWRPYmplY3QpCiAgICAgewog
ICAgICAgICByZXR1cm4gcmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3Iu
UmVzb3VyY2U7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgc3VwcG9ydHNTcGxpdENvbnRlbnRC
cm93c2VyKCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9OZXdUYWJDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05ld1RhYkNvbnRlbnRWaWV3LmpzCmluZGV4IDFkOWVhNDE1
ZDdlNDFlZGVlYTkzNWI5ZWVmMzU4YjMzNGYyNDhkZmYuLmNmNjM3MGNjZTE4MDE5NmFjYmY4ODVm
ZWU5ZTQxMjA1MjIxODM0MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL05ld1RhYkNvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05ld1RhYkNvbnRlbnRWaWV3LmpzCkBAIC0yMyw1
NiArMjMsNTQgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1X
ZWJJbnNwZWN0b3IuTmV3VGFiQ29udGVudFZpZXcgPSBmdW5jdGlvbihpZGVudGlmaWVyKQorV2Vi
SW5zcGVjdG9yLk5ld1RhYkNvbnRlbnRWaWV3ID0gY2xhc3MgTmV3VGFiQ29udGVudFZpZXcgZXh0
ZW5kcyBXZWJJbnNwZWN0b3IuVGFiQ29udGVudFZpZXcKIHsKLSAgICB2YXIgdGFiQmFySXRlbSA9
IG5ldyBXZWJJbnNwZWN0b3IuVGFiQmFySXRlbSgiSW1hZ2VzL05ld1RhYi5zdmciLCBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIk5ldyBUYWIiKSk7CisgICAgY29uc3RydWN0b3IoaWRlbnRpZmllcikK
KyAgICB7CisgICAgICAgIHZhciB0YWJCYXJJdGVtID0gbmV3IFdlYkluc3BlY3Rvci5UYWJCYXJJ
dGVtKCJJbWFnZXMvTmV3VGFiLnN2ZyIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiTmV3IFRhYiIp
KTsKIAotICAgIFdlYkluc3BlY3Rvci5UYWJDb250ZW50Vmlldy5jYWxsKHRoaXMsIGlkZW50aWZp
ZXIgfHwgIm5ldy10YWIiLCAibmV3LXRhYiIsIHRhYkJhckl0ZW0pOworICAgICAgICBzdXBlcihp
ZGVudGlmaWVyIHx8ICJuZXctdGFiIiwgIm5ldy10YWIiLCB0YWJCYXJJdGVtKTsKIAotICAgIHZh
ciBhbGxvd2VkTmV3VGFicyA9IFsKLSAgICAgICAge2ltYWdlOiAiSW1hZ2VzL0NvbnNvbGUuc3Zn
IiwgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ29uc29sZSIpLCB0eXBlOiBXZWJJbnNw
ZWN0b3IuQ29uc29sZVRhYkNvbnRlbnRWaWV3LlR5cGV9LAotICAgICAgICB7aW1hZ2U6ICJJbWFn
ZXMvRGVidWdnZXIuc3ZnIiwgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiRGVidWdnZXIi
KSwgdHlwZTogV2ViSW5zcGVjdG9yLkRlYnVnZ2VyVGFiQ29udGVudFZpZXcuVHlwZX0sCi0gICAg
ICAgIHtpbWFnZTogIkltYWdlcy9FbGVtZW50cy5zdmciLCB0aXRsZTogV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJFbGVtZW50cyIpLCB0eXBlOiBXZWJJbnNwZWN0b3IuRWxlbWVudHNUYWJDb250ZW50
Vmlldy5UeXBlfSwKLSAgICAgICAge2ltYWdlOiAiSW1hZ2VzL05ldHdvcmsuc3ZnIiwgdGl0bGU6
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiTmV0d29yayIpLCB0eXBlOiBXZWJJbnNwZWN0b3IuTmV0
d29ya1RhYkNvbnRlbnRWaWV3LlR5cGV9LAotICAgICAgICB7aW1hZ2U6ICJJbWFnZXMvUmVzb3Vy
Y2VzLnN2ZyIsIHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlc291cmNlcyIpLCB0eXBl
OiBXZWJJbnNwZWN0b3IuUmVzb3VyY2VzVGFiQ29udGVudFZpZXcuVHlwZX0sCi0gICAgICAgIHtp
bWFnZTogIkltYWdlcy9TdG9yYWdlLnN2ZyIsIHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IlN0b3JhZ2UiKSwgdHlwZTogV2ViSW5zcGVjdG9yLlN0b3JhZ2VUYWJDb250ZW50Vmlldy5UeXBl
fSwKLSAgICAgICAge2ltYWdlOiAiSW1hZ2VzL1RpbWVsaW5lLnN2ZyIsIHRpdGxlOiBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIlRpbWVsaW5lcyIpLCB0eXBlOiBXZWJJbnNwZWN0b3IuVGltZWxpbmVU
YWJDb250ZW50Vmlldy5UeXBlfQotICAgIF07CisgICAgICAgIHZhciBhbGxvd2VkTmV3VGFicyA9
IFsKKyAgICAgICAgICAgIHtpbWFnZTogIkltYWdlcy9Db25zb2xlLnN2ZyIsIHRpdGxlOiBXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIkNvbnNvbGUiKSwgdHlwZTogV2ViSW5zcGVjdG9yLkNvbnNvbGVU
YWJDb250ZW50Vmlldy5UeXBlfSwKKyAgICAgICAgICAgIHtpbWFnZTogIkltYWdlcy9EZWJ1Z2dl
ci5zdmciLCB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJEZWJ1Z2dlciIpLCB0eXBlOiBX
ZWJJbnNwZWN0b3IuRGVidWdnZXJUYWJDb250ZW50Vmlldy5UeXBlfSwKKyAgICAgICAgICAgIHtp
bWFnZTogIkltYWdlcy9FbGVtZW50cy5zdmciLCB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJFbGVtZW50cyIpLCB0eXBlOiBXZWJJbnNwZWN0b3IuRWxlbWVudHNUYWJDb250ZW50Vmlldy5U
eXBlfSwKKyAgICAgICAgICAgIHtpbWFnZTogIkltYWdlcy9OZXR3b3JrLnN2ZyIsIHRpdGxlOiBX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk5ldHdvcmsiKSwgdHlwZTogV2ViSW5zcGVjdG9yLk5ldHdv
cmtUYWJDb250ZW50Vmlldy5UeXBlfSwKKyAgICAgICAgICAgIHtpbWFnZTogIkltYWdlcy9SZXNv
dXJjZXMuc3ZnIiwgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVzb3VyY2VzIiksIHR5
cGU6IFdlYkluc3BlY3Rvci5SZXNvdXJjZXNUYWJDb250ZW50Vmlldy5UeXBlfSwKKyAgICAgICAg
ICAgIHtpbWFnZTogIkltYWdlcy9TdG9yYWdlLnN2ZyIsIHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIlN0b3JhZ2UiKSwgdHlwZTogV2ViSW5zcGVjdG9yLlN0b3JhZ2VUYWJDb250ZW50Vmll
dy5UeXBlfSwKKyAgICAgICAgICAgIHtpbWFnZTogIkltYWdlcy9UaW1lbGluZS5zdmciLCB0aXRs
ZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJUaW1lbGluZXMiKSwgdHlwZTogV2ViSW5zcGVjdG9y
LlRpbWVsaW5lVGFiQ29udGVudFZpZXcuVHlwZX0KKyAgICAgICAgXTsKIAotICAgIGFsbG93ZWRO
ZXdUYWJzLnNvcnQoZnVuY3Rpb24oYSwgYikgeyByZXR1cm4gYS50aXRsZS5sb2NhbGVDb21wYXJl
KGIudGl0bGUpOyB9KTsKKyAgICAgICAgYWxsb3dlZE5ld1RhYnMuc29ydChmdW5jdGlvbihhLCBi
KSB7IHJldHVybiBhLnRpdGxlLmxvY2FsZUNvbXBhcmUoYi50aXRsZSk7IH0pOwogCi0gICAgZm9y
ICh2YXIgaW5mbyBvZiBhbGxvd2VkTmV3VGFicykgewotICAgICAgICBpZiAoIVdlYkluc3BlY3Rv
ci5pc1RhYlR5cGVBbGxvd2VkKGluZm8udHlwZSkpCi0gICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgZm9yICh2YXIgaW5mbyBvZiBhbGxvd2VkTmV3VGFicykgeworICAgICAgICAgICAgaWYg
KCFXZWJJbnNwZWN0b3IuaXNUYWJUeXBlQWxsb3dlZChpbmZvLnR5cGUpKQorICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwogCi0gICAgICAgIHZhciB0YWJJdGVtRWxlbWVudCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICB0YWJJdGVtRWxlbWVudC5jbGFzc0xpc3QuYWRk
KFdlYkluc3BlY3Rvci5OZXdUYWJDb250ZW50Vmlldy5UYWJJdGVtU3R5bGVDbGFzc05hbWUpOwot
ICAgICAgICB0YWJJdGVtRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX2Ny
ZWF0ZU5ld1RhYi5iaW5kKHRoaXMsIGluZm8udHlwZSkpOwotICAgICAgICB0YWJJdGVtRWxlbWVu
dFtXZWJJbnNwZWN0b3IuTmV3VGFiQ29udGVudFZpZXcuVHlwZVN5bWJvbF0gPSBpbmZvLnR5cGU7
CisgICAgICAgICAgICB2YXIgdGFiSXRlbUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJkaXYiKTsKKyAgICAgICAgICAgIHRhYkl0ZW1FbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5z
cGVjdG9yLk5ld1RhYkNvbnRlbnRWaWV3LlRhYkl0ZW1TdHlsZUNsYXNzTmFtZSk7CisgICAgICAg
ICAgICB0YWJJdGVtRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX2NyZWF0
ZU5ld1RhYi5iaW5kKHRoaXMsIGluZm8udHlwZSkpOworICAgICAgICAgICAgdGFiSXRlbUVsZW1l
bnRbV2ViSW5zcGVjdG9yLk5ld1RhYkNvbnRlbnRWaWV3LlR5cGVTeW1ib2xdID0gaW5mby50eXBl
OwogCi0gICAgICAgIHZhciBib3hFbGVtZW50ID0gdGFiSXRlbUVsZW1lbnQuYXBwZW5kQ2hpbGQo
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpOwotICAgICAgICBib3hFbGVtZW50LmNsYXNz
TGlzdC5hZGQoImJveCIpOworICAgICAgICAgICAgdmFyIGJveEVsZW1lbnQgPSB0YWJJdGVtRWxl
bWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSk7CisgICAgICAg
ICAgICBib3hFbGVtZW50LmNsYXNzTGlzdC5hZGQoImJveCIpOwogCi0gICAgICAgIHZhciBpbWFn
ZUVsZW1lbnQgPSBib3hFbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImltZyIpKTsKLSAgICAgICAgaW1hZ2VFbGVtZW50LnNyYyA9IGluZm8uaW1hZ2U7CisgICAgICAg
ICAgICB2YXIgaW1hZ2VFbGVtZW50ID0gYm94RWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJpbWciKSk7CisgICAgICAgICAgICBpbWFnZUVsZW1lbnQuc3JjID0gaW5m
by5pbWFnZTsKIAotICAgICAgICB2YXIgbGFiZWxFbGVtZW50ID0gdGFiSXRlbUVsZW1lbnQuYXBw
ZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGFiZWwiKSk7Ci0gICAgICAgIGxhYmVs
RWxlbWVudC50ZXh0Q29udGVudCA9IGluZm8udGl0bGU7CisgICAgICAgICAgICB2YXIgbGFiZWxF
bGVtZW50ID0gdGFiSXRlbUVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgibGFiZWwiKSk7CisgICAgICAgICAgICBsYWJlbEVsZW1lbnQudGV4dENvbnRlbnQgPSBpbmZv
LnRpdGxlOwogCi0gICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0YWJJdGVtRWxlbWVu
dCk7CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGFiSXRlbUVsZW1lbnQp
OworICAgICAgICB9CiAgICAgfQotfTsKLQotV2ViSW5zcGVjdG9yLk5ld1RhYkNvbnRlbnRWaWV3
LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLk5ld1RhYkNvbnRl
bnRWaWV3LAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLlRhYkNvbnRlbnRWaWV3LnByb3Rv
dHlwZSwKIAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IHR5cGUoKQogICAgIHsKICAgICAgICAg
cmV0dXJuIFdlYkluc3BlY3Rvci5OZXdUYWJDb250ZW50Vmlldy5UeXBlOwotICAgIH0sCisgICAg
fQogCiAgICAgc2hvd24oKQogICAgIHsKQEAgLTgwLDEyICs3OCwxMiBAQCBXZWJJbnNwZWN0b3Iu
TmV3VGFiQ29udGVudFZpZXcucHJvdG90eXBlID0gewogICAgICAgICBXZWJJbnNwZWN0b3IudGFi
QnJvd3Nlci50YWJCYXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGFiQmFyLkV2ZW50
LlRhYkJhckl0ZW1SZW1vdmVkLCB0aGlzLl91cGRhdGVUYWJJdGVtcywgdGhpcyk7CiAKICAgICAg
ICAgdGhpcy5fdXBkYXRlVGFiSXRlbXMoKTsKLSAgICB9LAorICAgIH0KIAogICAgIGhpZGRlbigp
CiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3IudGFiQnJvd3Nlci50YWJCYXIucmVtb3ZlRXZl
bnRMaXN0ZW5lcihudWxsLCBudWxsLCB0aGlzKTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFBy
aXZhdGUKIApAQCAtOTUsNyArOTMsNyBAQCBXZWJJbnNwZWN0b3IuTmV3VGFiQ29udGVudFZpZXcu
cHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIFdlYkluc3BlY3Rv
ci5jcmVhdGVOZXdUYWIodGFiVHlwZSwgdGhpcyk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBfdXBk
YXRlVGFiSXRlbXMoKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlc1RhYkNvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VzVGFiQ29udGVudFZpZXcu
anMKaW5kZXggM2QzNzlhNGQwZDZlMDc2ZmEwOGYwOTVhNWQ5ODc4MDMxN2E1MjhhYS4uMWRhYjU3
ZGI3NDY0YmUwMDIzNjNlYWI3Yzk0YThhZmNkOWFmZjYwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VzVGFiQ29udGVudFZpZXcu
anMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3Vy
Y2VzVGFiQ29udGVudFZpZXcuanMKQEAgLTIzLDMxICsyMywyOSBAQAogICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5SZXNvdXJjZXNUYWJDb250
ZW50VmlldyA9IGZ1bmN0aW9uKGlkZW50aWZpZXIpCitXZWJJbnNwZWN0b3IuUmVzb3VyY2VzVGFi
Q29udGVudFZpZXcgPSBjbGFzcyBSZXNvdXJjZXNUYWJDb250ZW50VmlldyBleHRlbmRzIFdlYklu
c3BlY3Rvci5Db250ZW50QnJvd3NlclRhYkNvbnRlbnRWaWV3CiB7Ci0gICAgdmFyIHRhYkJhckl0
ZW0gPSBuZXcgV2ViSW5zcGVjdG9yLlRhYkJhckl0ZW0oIkltYWdlcy9SZXNvdXJjZXMuc3ZnIiwg
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZXNvdXJjZXMiKSk7Ci0gICAgdmFyIGRldGFpbHNTaWRl
YmFyUGFuZWxzID0gW1dlYkluc3BlY3Rvci5yZXNvdXJjZURldGFpbHNTaWRlYmFyUGFuZWwsIFdl
Ykluc3BlY3Rvci5wcm9iZURldGFpbHNTaWRlYmFyUGFuZWxdOwotCi0gICAgLy8gRklYTUU6IFVu
dGlsIENvbnRlbnRGbG93cyBhcmUgbW92ZWQgdG8gdGhlIEVsZW1lbnRzIHRhYiwgdGhlc2UgZGV0
YWlscyBzaWRlYmFyIHBhbmVscyBuZWVkIHRvIGJlIGluY2x1ZGVkLgotICAgIGRldGFpbHNTaWRl
YmFyUGFuZWxzID0gZGV0YWlsc1NpZGViYXJQYW5lbHMuY29uY2F0KFtXZWJJbnNwZWN0b3IuZG9t
Tm9kZURldGFpbHNTaWRlYmFyUGFuZWwsIFdlYkluc3BlY3Rvci5jc3NTdHlsZURldGFpbHNTaWRl
YmFyUGFuZWxdKTsKLSAgICBpZiAoV2ViSW5zcGVjdG9yLmxheWVyVHJlZURldGFpbHNTaWRlYmFy
UGFuZWwpCi0gICAgICAgIGRldGFpbHNTaWRlYmFyUGFuZWxzLnB1c2goV2ViSW5zcGVjdG9yLmxh
eWVyVHJlZURldGFpbHNTaWRlYmFyUGFuZWwpOworICAgIGNvbnN0cnVjdG9yKGlkZW50aWZpZXIp
CisgICAgeworICAgICAgICB2YXIgdGFiQmFySXRlbSA9IG5ldyBXZWJJbnNwZWN0b3IuVGFiQmFy
SXRlbSgiSW1hZ2VzL1Jlc291cmNlcy5zdmciLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlc291
cmNlcyIpKTsKKyAgICAgICAgdmFyIGRldGFpbHNTaWRlYmFyUGFuZWxzID0gW1dlYkluc3BlY3Rv
ci5yZXNvdXJjZURldGFpbHNTaWRlYmFyUGFuZWwsIFdlYkluc3BlY3Rvci5wcm9iZURldGFpbHNT
aWRlYmFyUGFuZWxdOwogCi0gICAgV2ViSW5zcGVjdG9yLkNvbnRlbnRCcm93c2VyVGFiQ29udGVu
dFZpZXcuY2FsbCh0aGlzLCBpZGVudGlmaWVyIHx8ICJyZXNvdXJjZXMiLCAicmVzb3VyY2VzIiwg
dGFiQmFySXRlbSwgV2ViSW5zcGVjdG9yLlJlc291cmNlU2lkZWJhclBhbmVsLCBkZXRhaWxzU2lk
ZWJhclBhbmVscyk7Ci19OworICAgICAgICAvLyBGSVhNRTogVW50aWwgQ29udGVudEZsb3dzIGFy
ZSBtb3ZlZCB0byB0aGUgRWxlbWVudHMgdGFiLCB0aGVzZSBkZXRhaWxzIHNpZGViYXIgcGFuZWxz
IG5lZWQgdG8gYmUgaW5jbHVkZWQuCisgICAgICAgIGRldGFpbHNTaWRlYmFyUGFuZWxzID0gZGV0
YWlsc1NpZGViYXJQYW5lbHMuY29uY2F0KFtXZWJJbnNwZWN0b3IuZG9tTm9kZURldGFpbHNTaWRl
YmFyUGFuZWwsIFdlYkluc3BlY3Rvci5jc3NTdHlsZURldGFpbHNTaWRlYmFyUGFuZWxdKTsKKyAg
ICAgICAgaWYgKFdlYkluc3BlY3Rvci5sYXllclRyZWVEZXRhaWxzU2lkZWJhclBhbmVsKQorICAg
ICAgICAgICAgZGV0YWlsc1NpZGViYXJQYW5lbHMucHVzaChXZWJJbnNwZWN0b3IubGF5ZXJUcmVl
RGV0YWlsc1NpZGViYXJQYW5lbCk7CiAKLVdlYkluc3BlY3Rvci5SZXNvdXJjZXNUYWJDb250ZW50
Vmlldy5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5SZXNvdXJj
ZXNUYWJDb250ZW50VmlldywKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5Db250ZW50QnJv
d3NlclRhYkNvbnRlbnRWaWV3LnByb3RvdHlwZSwKKyAgICAgICAgc3VwZXIoaWRlbnRpZmllciB8
fCAicmVzb3VyY2VzIiwgInJlc291cmNlcyIsIHRhYkJhckl0ZW0sIFdlYkluc3BlY3Rvci5SZXNv
dXJjZVNpZGViYXJQYW5lbCwgZGV0YWlsc1NpZGViYXJQYW5lbHMpOworICAgIH0KIAogICAgIC8v
IFB1YmxpYwogCiAgICAgZ2V0IHR5cGUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIFdlYkluc3Bl
Y3Rvci5SZXNvdXJjZXNUYWJDb250ZW50Vmlldy5UeXBlOwotICAgIH0sCisgICAgfQogCi0gICAg
Y2FuU2hvd1JlcHJlc2VudGVkT2JqZWN0OiBmdW5jdGlvbihyZXByZXNlbnRlZE9iamVjdCkKKyAg
ICBjYW5TaG93UmVwcmVzZW50ZWRPYmplY3QocmVwcmVzZW50ZWRPYmplY3QpCiAgICAgewogICAg
ICAgICByZXR1cm4gcmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuRnJh
bWUKICAgICAgICAgICAgIHx8IHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVj
dG9yLlJlc291cmNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9TZWFyY2hUYWJDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NlYXJjaFRhYkNvbnRlbnRWaWV3LmpzCmluZGV4IDY2MmIw
ZWEzZjIyZDZkZjg3NmM4Mjk5OTU1ODQ1ODZjMzg0OGMxMWMuLjRlNzYxOTQyMWQxZDdmNjE4YTFi
MzdiZTQ1MzBjYWJmY2IxNDllNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL1NlYXJjaFRhYkNvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NlYXJjaFRhYkNvbnRlbnRWaWV3Lmpz
CkBAIC0yMyw0OCArMjMsNDYgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
ICAqLwogCi1XZWJJbnNwZWN0b3IuU2VhcmNoVGFiQ29udGVudFZpZXcgPSBmdW5jdGlvbihpZGVu
dGlmaWVyKQorV2ViSW5zcGVjdG9yLlNlYXJjaFRhYkNvbnRlbnRWaWV3ID0gY2xhc3MgU2VhcmNo
VGFiQ29udGVudFZpZXcgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuQ29udGVudEJyb3dzZXJUYWJDb250
ZW50VmlldwogewotICAgIHZhciB0YWJCYXJJdGVtID0gbmV3IFdlYkluc3BlY3Rvci5UYWJCYXJJ
dGVtKCJJbWFnZXMvU2VhcmNoUmVzdWx0cy5zdmciLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNl
YXJjaCIpKTsKLSAgICB2YXIgZGV0YWlsc1NpZGViYXJQYW5lbHMgPSBbV2ViSW5zcGVjdG9yLnJl
c291cmNlRGV0YWlsc1NpZGViYXJQYW5lbCwgV2ViSW5zcGVjdG9yLnByb2JlRGV0YWlsc1NpZGVi
YXJQYW5lbCwKLSAgICAgICAgV2ViSW5zcGVjdG9yLmRvbU5vZGVEZXRhaWxzU2lkZWJhclBhbmVs
LCBXZWJJbnNwZWN0b3IuY3NzU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsXTsKLQotICAgIGlmIChX
ZWJJbnNwZWN0b3IubGF5ZXJUcmVlRGV0YWlsc1NpZGViYXJQYW5lbCkKLSAgICAgICAgZGV0YWls
c1NpZGViYXJQYW5lbHMucHVzaChXZWJJbnNwZWN0b3IubGF5ZXJUcmVlRGV0YWlsc1NpZGViYXJQ
YW5lbCk7CisgICAgY29uc3RydWN0b3IoaWRlbnRpZmllcikKKyAgICB7CisgICAgICAgIHZhciB0
YWJCYXJJdGVtID0gbmV3IFdlYkluc3BlY3Rvci5UYWJCYXJJdGVtKCJJbWFnZXMvU2VhcmNoUmVz
dWx0cy5zdmciLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNlYXJjaCIpKTsKKyAgICAgICAgdmFy
IGRldGFpbHNTaWRlYmFyUGFuZWxzID0gW1dlYkluc3BlY3Rvci5yZXNvdXJjZURldGFpbHNTaWRl
YmFyUGFuZWwsIFdlYkluc3BlY3Rvci5wcm9iZURldGFpbHNTaWRlYmFyUGFuZWwsCisgICAgICAg
ICAgICBXZWJJbnNwZWN0b3IuZG9tTm9kZURldGFpbHNTaWRlYmFyUGFuZWwsIFdlYkluc3BlY3Rv
ci5jc3NTdHlsZURldGFpbHNTaWRlYmFyUGFuZWxdOwogCi0gICAgV2ViSW5zcGVjdG9yLkNvbnRl
bnRCcm93c2VyVGFiQ29udGVudFZpZXcuY2FsbCh0aGlzLCBpZGVudGlmaWVyIHx8ICJzZWFyY2gi
LCAic2VhcmNoIiwgdGFiQmFySXRlbSwgV2ViSW5zcGVjdG9yLlNlYXJjaFNpZGViYXJQYW5lbCwg
ZGV0YWlsc1NpZGViYXJQYW5lbHMpOwotfTsKKyAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5sYXll
clRyZWVEZXRhaWxzU2lkZWJhclBhbmVsKQorICAgICAgICAgICAgZGV0YWlsc1NpZGViYXJQYW5l
bHMucHVzaChXZWJJbnNwZWN0b3IubGF5ZXJUcmVlRGV0YWlsc1NpZGViYXJQYW5lbCk7CiAKLVdl
Ykluc3BlY3Rvci5TZWFyY2hUYWJDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3Ry
dWN0b3I6IFdlYkluc3BlY3Rvci5TZWFyY2hUYWJDb250ZW50VmlldywKLSAgICBfX3Byb3RvX186
IFdlYkluc3BlY3Rvci5Db250ZW50QnJvd3NlclRhYkNvbnRlbnRWaWV3LnByb3RvdHlwZSwKKyAg
ICAgICAgc3VwZXIoaWRlbnRpZmllciB8fCAic2VhcmNoIiwgInNlYXJjaCIsIHRhYkJhckl0ZW0s
IFdlYkluc3BlY3Rvci5TZWFyY2hTaWRlYmFyUGFuZWwsIGRldGFpbHNTaWRlYmFyUGFuZWxzKTsK
KyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCB0eXBlKCkKICAgICB7CiAgICAgICAg
IHJldHVybiBXZWJJbnNwZWN0b3IuU2VhcmNoVGFiQ29udGVudFZpZXcuVHlwZTsKLSAgICB9LAor
ICAgIH0KIAotICAgIHNob3duOiBmdW5jdGlvbigpCisgICAgc2hvd24oKQogICAgIHsKLSAgICAg
ICAgV2ViSW5zcGVjdG9yLkNvbnRlbnRCcm93c2VyVGFiQ29udGVudFZpZXcucHJvdG90eXBlLnNo
b3duLmNhbGwodGhpcyk7CisgICAgICAgIHN1cGVyLnNob3duKCk7CiAKICAgICAgICAgLy8gUGVy
Zm9ybSBvbiBhIGRlbGF5IGJlY2F1c2UgdGhlIGZpZWxkIG1pZ2h0IG5vdCBiZSB2aXNpYmxlIHll
dC4KICAgICAgICAgc2V0VGltZW91dCh0aGlzLmZvY3VzU2VhcmNoRmllbGQuYmluZCh0aGlzKSk7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBjYW5TaG93UmVwcmVzZW50ZWRPYmplY3Q6IGZ1bmN0aW9u
KHJlcHJlc2VudGVkT2JqZWN0KQorICAgIGNhblNob3dSZXByZXNlbnRlZE9iamVjdChyZXByZXNl
bnRlZE9iamVjdCkKICAgICB7CiAgICAgICAgIHJldHVybiByZXByZXNlbnRlZE9iamVjdCBpbnN0
YW5jZW9mIFdlYkluc3BlY3Rvci5SZXNvdXJjZSB8fCByZXByZXNlbnRlZE9iamVjdCBpbnN0YW5j
ZW9mIFdlYkluc3BlY3Rvci5TY3JpcHQgfHwgcmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBX
ZWJJbnNwZWN0b3IuRE9NVHJlZTsKLSAgICB9LAorICAgIH0KIAotICAgIGZvY3VzU2VhcmNoRmll
bGQ6IGZ1bmN0aW9uKCkKKyAgICBmb2N1c1NlYXJjaEZpZWxkKCkKICAgICB7CiAgICAgICAgIHRo
aXMubmF2aWdhdGlvblNpZGViYXJQYW5lbC5mb2N1c1NlYXJjaEZpZWxkKCk7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBwZXJmb3JtU2VhcmNoOiBmdW5jdGlvbihzZWFyY2hRdWVyeSkKKyAgICBwZXJm
b3JtU2VhcmNoKHNlYXJjaFF1ZXJ5KQogICAgIHsKICAgICAgICAgdGhpcy5uYXZpZ2F0aW9uU2lk
ZWJhclBhbmVsLnBlcmZvcm1TZWFyY2goc2VhcmNoUXVlcnkpOwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NldHRpbmdzVGFiQ29u
dGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9T
ZXR0aW5nc1RhYkNvbnRlbnRWaWV3LmpzCmluZGV4IGUyNTE2MTBiMDdmNWNhZjY5OTBlMzYyNDE3
YjJlZmU0MTc3ZjdkNzIuLjg4YTZlMGFlYTYyZjgwNDkyYWE3ZjVjYjdmMzU0NjczYWRiOTBiMDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Nl
dHRpbmdzVGFiQ29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvU2V0dGluZ3NUYWJDb250ZW50Vmlldy5qcwpAQCAtMjMsMTYgKzIzLDE0
IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVj
dG9yLlNldHRpbmdzVGFiQ29udGVudFZpZXcgPSBmdW5jdGlvbihpZGVudGlmaWVyKQorV2ViSW5z
cGVjdG9yLlNldHRpbmdzVGFiQ29udGVudFZpZXcgPSBjbGFzcyBTZXR0aW5nc1RhYkNvbnRlbnRW
aWV3IGV4dGVuZHMgV2ViSW5zcGVjdG9yLlRhYkNvbnRlbnRWaWV3CiB7Ci0gICAgdmFyIHRhYkJh
ckl0ZW0gPSBuZXcgV2ViSW5zcGVjdG9yLlRhYkJhckl0ZW0oIkltYWdlcy9HZWFyLnN2ZyIsIFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiU2V0dGluZ3MiKSwgdHJ1ZSk7Ci0KLSAgICBXZWJJbnNwZWN0
b3IuVGFiQ29udGVudFZpZXcuY2FsbCh0aGlzLCBpZGVudGlmaWVyIHx8ICJzZXR0aW5ncyIsICJz
ZXR0aW5ncyIsIHRhYkJhckl0ZW0pOwotfTsKKyAgICBjb25zdHJ1Y3RvcihpZGVudGlmaWVyKQor
ICAgIHsKKyAgICAgICAgdmFyIHRhYkJhckl0ZW0gPSBuZXcgV2ViSW5zcGVjdG9yLlRhYkJhckl0
ZW0oIkltYWdlcy9HZWFyLnN2ZyIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2V0dGluZ3MiKSwg
dHJ1ZSk7CiAKLVdlYkluc3BlY3Rvci5TZXR0aW5nc1RhYkNvbnRlbnRWaWV3LnByb3RvdHlwZSA9
IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLlNldHRpbmdzVGFiQ29udGVudFZpZXcs
Ci0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuVGFiQ29udGVudFZpZXcucHJvdG90eXBlLAor
ICAgICAgICBzdXBlcihpZGVudGlmaWVyIHx8ICJzZXR0aW5ncyIsICJzZXR0aW5ncyIsIHRhYkJh
ckl0ZW0pOworICAgIH0KIAogICAgIC8vIFB1YmxpYwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TdG9yYWdlVGFiQ29udGVudFZpZXcuanMg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TdG9yYWdlVGFiQ29u
dGVudFZpZXcuanMKaW5kZXggNjE2MmZlZjk0M2NkM2I2YTc0YjE5NDY4NDlmZTdjNzFhNWIxOWUw
Zi4uMzFlNTM2ZjIzMGIxOTI0ZDI2NGIzZjM3NjRhODZmYTk1MGZhMmNiYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU3RvcmFnZVRhYkNvbnRl
bnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L1N0b3JhZ2VUYWJDb250ZW50Vmlldy5qcwpAQCAtMjMsMjYgKzIzLDI0IEBACiAgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLlN0b3JhZ2VUYWJD
b250ZW50VmlldyA9IGZ1bmN0aW9uKGlkZW50aWZpZXIpCitXZWJJbnNwZWN0b3IuU3RvcmFnZVRh
YkNvbnRlbnRWaWV3ID0gY2xhc3MgU3RvcmFnZVRhYkNvbnRlbnRWaWV3IGV4dGVuZHMgV2ViSW5z
cGVjdG9yLkNvbnRlbnRCcm93c2VyVGFiQ29udGVudFZpZXcKIHsKLSAgICB2YXIgdGFiQmFySXRl
bSA9IG5ldyBXZWJJbnNwZWN0b3IuVGFiQmFySXRlbSgiSW1hZ2VzL1N0b3JhZ2Uuc3ZnIiwgV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJTdG9yYWdlIikpOwotICAgIHZhciBkZXRhaWxzU2lkZWJhclBh
bmVscyA9IFtXZWJJbnNwZWN0b3IuYXBwbGljYXRpb25DYWNoZURldGFpbHNTaWRlYmFyUGFuZWxd
OwotCi0gICAgV2ViSW5zcGVjdG9yLkNvbnRlbnRCcm93c2VyVGFiQ29udGVudFZpZXcuY2FsbCh0
aGlzLCBpZGVudGlmaWVyIHx8ICJzdG9yYWdlIiwgInN0b3JhZ2UiLCB0YWJCYXJJdGVtLCBXZWJJ
bnNwZWN0b3IuU3RvcmFnZVNpZGViYXJQYW5lbCwgZGV0YWlsc1NpZGViYXJQYW5lbHMpOwotfTsK
KyAgICBjb25zdHJ1Y3RvcihpZGVudGlmaWVyKQorICAgIHsKKyAgICAgICAgdmFyIHRhYkJhckl0
ZW0gPSBuZXcgV2ViSW5zcGVjdG9yLlRhYkJhckl0ZW0oIkltYWdlcy9TdG9yYWdlLnN2ZyIsIFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiU3RvcmFnZSIpKTsKKyAgICAgICAgdmFyIGRldGFpbHNTaWRl
YmFyUGFuZWxzID0gW1dlYkluc3BlY3Rvci5hcHBsaWNhdGlvbkNhY2hlRGV0YWlsc1NpZGViYXJQ
YW5lbF07CiAKLVdlYkluc3BlY3Rvci5TdG9yYWdlVGFiQ29udGVudFZpZXcucHJvdG90eXBlID0g
ewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuU3RvcmFnZVRhYkNvbnRlbnRWaWV3LAot
ICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLkNvbnRlbnRCcm93c2VyVGFiQ29udGVudFZpZXcu
cHJvdG90eXBlLAorICAgICAgICBzdXBlcihpZGVudGlmaWVyIHx8ICJzdG9yYWdlIiwgInN0b3Jh
Z2UiLCB0YWJCYXJJdGVtLCBXZWJJbnNwZWN0b3IuU3RvcmFnZVNpZGViYXJQYW5lbCwgZGV0YWls
c1NpZGViYXJQYW5lbHMpOworICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IHR5cGUo
KQogICAgIHsKICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5TdG9yYWdlVGFiQ29udGVudFZp
ZXcuVHlwZTsKLSAgICB9LAorICAgIH0KIAotICAgIGNhblNob3dSZXByZXNlbnRlZE9iamVjdDog
ZnVuY3Rpb24ocmVwcmVzZW50ZWRPYmplY3QpCisgICAgY2FuU2hvd1JlcHJlc2VudGVkT2JqZWN0
KHJlcHJlc2VudGVkT2JqZWN0KQogICAgIHsKICAgICAgICAgcmV0dXJuIHJlcHJlc2VudGVkT2Jq
ZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VPYmplY3QgfHwgcmVwcmVzZW50
ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuQ29va2llU3RvcmFnZU9iamVjdCB8fAog
ICAgICAgICAgICAgcmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuRGF0
YWJhc2VUYWJsZU9iamVjdCB8fCByZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3Bl
Y3Rvci5EYXRhYmFzZU9iamVjdCB8fApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvVGV4dFJlc291cmNlQ29udGVudFZpZXcuanMgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UZXh0UmVzb3VyY2VDb250ZW50Vmll
dy5qcwppbmRleCAzZTNjYzI5OThjN2IxYjk0ODQzZWZkZGUxMDlkYWZmNDc2NmViYjFjLi4yZDg4
MzE0NmZhYTFjM2Q3ZjU0MmY2OWQzZTc5YWQ0ZDk2NzZlMDVlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UZXh0UmVzb3VyY2VDb250ZW50Vmll
dy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UZXh0
UmVzb3VyY2VDb250ZW50Vmlldy5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsNjAgKzIzLDU3IEBACiAgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLlRleHRSZXNvdXJjZUNvbnRl
bnRWaWV3ID0gZnVuY3Rpb24ocmVzb3VyY2UpCitXZWJJbnNwZWN0b3IuVGV4dFJlc291cmNlQ29u
dGVudFZpZXcgPSBjbGFzcyBUZXh0UmVzb3VyY2VDb250ZW50VmlldyBleHRlbmRzIFdlYkluc3Bl
Y3Rvci5SZXNvdXJjZUNvbnRlbnRWaWV3CiB7Ci0gICAgV2ViSW5zcGVjdG9yLlJlc291cmNlQ29u
dGVudFZpZXcuY2FsbCh0aGlzLCByZXNvdXJjZSwgV2ViSW5zcGVjdG9yLlRleHRSZXNvdXJjZUNv
bnRlbnRWaWV3LlN0eWxlQ2xhc3NOYW1lKTsKLQotICAgIHJlc291cmNlLmFkZEV2ZW50TGlzdGVu
ZXIoV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGUuRXZlbnQuQ29udGVudERpZENoYW5nZSwgdGhpcy5f
c291cmNlQ29kZUNvbnRlbnREaWRDaGFuZ2UsIHRoaXMpOwotCi0gICAgdGhpcy5fdGV4dEVkaXRv
ciA9IG5ldyBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3IocmVzb3VyY2UpOwotICAg
IHRoaXMuX3RleHRFZGl0b3IuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGV4dEVkaXRv
ci5FdmVudC5FeGVjdXRpb25MaW5lTnVtYmVyRGlkQ2hhbmdlLCB0aGlzLl9leGVjdXRpb25MaW5l
TnVtYmVyRGlkQ2hhbmdlLCB0aGlzKTsKLSAgICB0aGlzLl90ZXh0RWRpdG9yLmFkZEV2ZW50TGlz
dGVuZXIoV2ViSW5zcGVjdG9yLlRleHRFZGl0b3IuRXZlbnQuTnVtYmVyT2ZTZWFyY2hSZXN1bHRz
RGlkQ2hhbmdlLCB0aGlzLl9udW1iZXJPZlNlYXJjaFJlc3VsdHNEaWRDaGFuZ2UsIHRoaXMpOwot
ICAgIHRoaXMuX3RleHRFZGl0b3IuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGV4dEVk
aXRvci5FdmVudC5Db250ZW50RGlkQ2hhbmdlLCB0aGlzLl90ZXh0RWRpdG9yQ29udGVudERpZENo
YW5nZSwgdGhpcyk7Ci0gICAgdGhpcy5fdGV4dEVkaXRvci5hZGRFdmVudExpc3RlbmVyKFdlYklu
c3BlY3Rvci5UZXh0RWRpdG9yLkV2ZW50LkZvcm1hdHRpbmdEaWRDaGFuZ2UsIHRoaXMuX3RleHRF
ZGl0b3JGb3JtYXR0aW5nRGlkQ2hhbmdlLCB0aGlzKTsKLSAgICB0aGlzLl90ZXh0RWRpdG9yLmFk
ZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yLkV2ZW50LkNv
bnRlbnRXaWxsUG9wdWxhdGUsIHRoaXMuX2NvbnRlbnRXaWxsUG9wdWxhdGUsIHRoaXMpOwotICAg
IHRoaXMuX3RleHRFZGl0b3IuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuU291cmNlQ29k
ZVRleHRFZGl0b3IuRXZlbnQuQ29udGVudERpZFBvcHVsYXRlLCB0aGlzLl9jb250ZW50RGlkUG9w
dWxhdGUsIHRoaXMpOwotCi0gICAgV2ViSW5zcGVjdG9yLnByb2JlTWFuYWdlci5hZGRFdmVudExp
c3RlbmVyKFdlYkluc3BlY3Rvci5Qcm9iZU1hbmFnZXIuRXZlbnQuUHJvYmVTZXRBZGRlZCwgdGhp
cy5fcHJvYmVTZXRzQ2hhbmdlZCwgdGhpcyk7Ci0gICAgV2ViSW5zcGVjdG9yLnByb2JlTWFuYWdl
ci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Qcm9iZU1hbmFnZXIuRXZlbnQuUHJvYmVT
ZXRSZW1vdmVkLCB0aGlzLl9wcm9iZVNldHNDaGFuZ2VkLCB0aGlzKTsKLQotICAgIHZhciB0b29s
VGlwID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJQcmV0dHkgcHJpbnQiKTsKLSAgICB2YXIgYWN0
aXZhdGVkVG9vbFRpcCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiT3JpZ2luYWwgZm9ybWF0dGlu
ZyIpOwotICAgIHRoaXMuX3ByZXR0eVByaW50QnV0dG9uTmF2aWdhdGlvbkl0ZW0gPSBuZXcgV2Vi
SW5zcGVjdG9yLkFjdGl2YXRlQnV0dG9uTmF2aWdhdGlvbkl0ZW0oInByZXR0eS1wcmludCIsIHRv
b2xUaXAsIGFjdGl2YXRlZFRvb2xUaXAsICJJbWFnZXMvTmF2aWdhdGlvbkl0ZW1DdXJsZXlCcmFj
ZXMuc3ZnIiwgMTMsIDEzKTsKLSAgICB0aGlzLl9wcmV0dHlQcmludEJ1dHRvbk5hdmlnYXRpb25J
dGVtLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkJ1dHRvbk5hdmlnYXRpb25JdGVtLkV2
ZW50LkNsaWNrZWQsIHRoaXMuX3RvZ2dsZVByZXR0eVByaW50LCB0aGlzKTsKLSAgICB0aGlzLl9w
cmV0dHlQcmludEJ1dHRvbk5hdmlnYXRpb25JdGVtLmVuYWJsZWQgPSBmYWxzZTsgLy8gRW5hYmxl
ZCB3aGVuIHRoZSB0ZXh0IGVkaXRvciBpcyBwb3B1bGF0ZWQgd2l0aCBjb250ZW50LgotCi0gICAg
dmFyIHRvb2xUaXBUeXBlcyA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2hvdyB0eXBlIGluZm9y
bWF0aW9uIik7Ci0gICAgdmFyIGFjdGl2YXRlZFRvb2xUaXBUeXBlcyA9IFdlYkluc3BlY3Rvci5V
SVN0cmluZygiSGlkZSB0eXBlIGluZm9ybWF0aW9uIik7Ci0gICAgdGhpcy5fc2hvd1R5cGVzQnV0
dG9uTmF2aWdhdGlvbkl0ZW0gPSBuZXcgV2ViSW5zcGVjdG9yLkFjdGl2YXRlQnV0dG9uTmF2aWdh
dGlvbkl0ZW0oInNob3ctdHlwZXMiLCB0b29sVGlwVHlwZXMsIGFjdGl2YXRlZFRvb2xUaXBUeXBl
cywgIkltYWdlcy9OYXZpZ2F0aW9uSXRlbVR5cGVzLnN2ZyIsIDEzLCAxNCk7Ci0gICAgdGhpcy5f
c2hvd1R5cGVzQnV0dG9uTmF2aWdhdGlvbkl0ZW0uYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0
b3IuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uRXZlbnQuQ2xpY2tlZCwgdGhpcy5fdG9nZ2xlVHlwZUFu
bm90YXRpb25zLCB0aGlzKTsKLSAgICB0aGlzLl9zaG93VHlwZXNCdXR0b25OYXZpZ2F0aW9uSXRl
bS5lbmFibGVkID0gZmFsc2U7Ci0KLSAgICBXZWJJbnNwZWN0b3Iuc2hvd0phdmFTY3JpcHRUeXBl
SW5mb3JtYXRpb25TZXR0aW5nLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlNldHRpbmcu
RXZlbnQuQ2hhbmdlZCwgdGhpcy5fc2hvd0phdmFTY3JpcHRUeXBlSW5mb3JtYXRpb25TZXR0aW5n
Q2hhbmdlZCwgdGhpcyk7Ci19OwotCi1XZWJJbnNwZWN0b3IuVGV4dFJlc291cmNlQ29udGVudFZp
ZXcuU3R5bGVDbGFzc05hbWUgPSAidGV4dCI7Ci0KLVdlYkluc3BlY3Rvci5UZXh0UmVzb3VyY2VD
b250ZW50Vmlldy5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5U
ZXh0UmVzb3VyY2VDb250ZW50VmlldywKKyAgICBjb25zdHJ1Y3RvcihyZXNvdXJjZSkKKyAgICB7
CisgICAgICAgIHN1cGVyKHJlc291cmNlLCAidGV4dCIpOworCisgICAgICAgIHJlc291cmNlLmFk
ZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGUuRXZlbnQuQ29udGVudERpZENo
YW5nZSwgdGhpcy5fc291cmNlQ29kZUNvbnRlbnREaWRDaGFuZ2UsIHRoaXMpOworCisgICAgICAg
IHRoaXMuX3RleHRFZGl0b3IgPSBuZXcgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9y
KHJlc291cmNlKTsKKyAgICAgICAgdGhpcy5fdGV4dEVkaXRvci5hZGRFdmVudExpc3RlbmVyKFdl
Ykluc3BlY3Rvci5UZXh0RWRpdG9yLkV2ZW50LkV4ZWN1dGlvbkxpbmVOdW1iZXJEaWRDaGFuZ2Us
IHRoaXMuX2V4ZWN1dGlvbkxpbmVOdW1iZXJEaWRDaGFuZ2UsIHRoaXMpOworICAgICAgICB0aGlz
Ll90ZXh0RWRpdG9yLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRleHRFZGl0b3IuRXZl
bnQuTnVtYmVyT2ZTZWFyY2hSZXN1bHRzRGlkQ2hhbmdlLCB0aGlzLl9udW1iZXJPZlNlYXJjaFJl
c3VsdHNEaWRDaGFuZ2UsIHRoaXMpOworICAgICAgICB0aGlzLl90ZXh0RWRpdG9yLmFkZEV2ZW50
TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRleHRFZGl0b3IuRXZlbnQuQ29udGVudERpZENoYW5nZSwg
dGhpcy5fdGV4dEVkaXRvckNvbnRlbnREaWRDaGFuZ2UsIHRoaXMpOworICAgICAgICB0aGlzLl90
ZXh0RWRpdG9yLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRleHRFZGl0b3IuRXZlbnQu
Rm9ybWF0dGluZ0RpZENoYW5nZSwgdGhpcy5fdGV4dEVkaXRvckZvcm1hdHRpbmdEaWRDaGFuZ2Us
IHRoaXMpOworICAgICAgICB0aGlzLl90ZXh0RWRpdG9yLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5z
cGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yLkV2ZW50LkNvbnRlbnRXaWxsUG9wdWxhdGUsIHRo
aXMuX2NvbnRlbnRXaWxsUG9wdWxhdGUsIHRoaXMpOworICAgICAgICB0aGlzLl90ZXh0RWRpdG9y
LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yLkV2ZW50
LkNvbnRlbnREaWRQb3B1bGF0ZSwgdGhpcy5fY29udGVudERpZFBvcHVsYXRlLCB0aGlzKTsKKwor
ICAgICAgICBXZWJJbnNwZWN0b3IucHJvYmVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5z
cGVjdG9yLlByb2JlTWFuYWdlci5FdmVudC5Qcm9iZVNldEFkZGVkLCB0aGlzLl9wcm9iZVNldHND
aGFuZ2VkLCB0aGlzKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLnByb2JlTWFuYWdlci5hZGRFdmVu
dExpc3RlbmVyKFdlYkluc3BlY3Rvci5Qcm9iZU1hbmFnZXIuRXZlbnQuUHJvYmVTZXRSZW1vdmVk
LCB0aGlzLl9wcm9iZVNldHNDaGFuZ2VkLCB0aGlzKTsKKworICAgICAgICB2YXIgdG9vbFRpcCA9
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiUHJldHR5IHByaW50Iik7CisgICAgICAgIHZhciBhY3Rp
dmF0ZWRUb29sVGlwID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJPcmlnaW5hbCBmb3JtYXR0aW5n
Iik7CisgICAgICAgIHRoaXMuX3ByZXR0eVByaW50QnV0dG9uTmF2aWdhdGlvbkl0ZW0gPSBuZXcg
V2ViSW5zcGVjdG9yLkFjdGl2YXRlQnV0dG9uTmF2aWdhdGlvbkl0ZW0oInByZXR0eS1wcmludCIs
IHRvb2xUaXAsIGFjdGl2YXRlZFRvb2xUaXAsICJJbWFnZXMvTmF2aWdhdGlvbkl0ZW1DdXJsZXlC
cmFjZXMuc3ZnIiwgMTMsIDEzKTsKKyAgICAgICAgdGhpcy5fcHJldHR5UHJpbnRCdXR0b25OYXZp
Z2F0aW9uSXRlbS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5CdXR0b25OYXZpZ2F0aW9u
SXRlbS5FdmVudC5DbGlja2VkLCB0aGlzLl90b2dnbGVQcmV0dHlQcmludCwgdGhpcyk7CisgICAg
ICAgIHRoaXMuX3ByZXR0eVByaW50QnV0dG9uTmF2aWdhdGlvbkl0ZW0uZW5hYmxlZCA9IGZhbHNl
OyAvLyBFbmFibGVkIHdoZW4gdGhlIHRleHQgZWRpdG9yIGlzIHBvcHVsYXRlZCB3aXRoIGNvbnRl
bnQuCisKKyAgICAgICAgdmFyIHRvb2xUaXBUeXBlcyA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygi
U2hvdyB0eXBlIGluZm9ybWF0aW9uIik7CisgICAgICAgIHZhciBhY3RpdmF0ZWRUb29sVGlwVHlw
ZXMgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkhpZGUgdHlwZSBpbmZvcm1hdGlvbiIpOworICAg
ICAgICB0aGlzLl9zaG93VHlwZXNCdXR0b25OYXZpZ2F0aW9uSXRlbSA9IG5ldyBXZWJJbnNwZWN0
b3IuQWN0aXZhdGVCdXR0b25OYXZpZ2F0aW9uSXRlbSgic2hvdy10eXBlcyIsIHRvb2xUaXBUeXBl
cywgYWN0aXZhdGVkVG9vbFRpcFR5cGVzLCAiSW1hZ2VzL05hdmlnYXRpb25JdGVtVHlwZXMuc3Zn
IiwgMTMsIDE0KTsKKyAgICAgICAgdGhpcy5fc2hvd1R5cGVzQnV0dG9uTmF2aWdhdGlvbkl0ZW0u
YWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uRXZlbnQu
Q2xpY2tlZCwgdGhpcy5fdG9nZ2xlVHlwZUFubm90YXRpb25zLCB0aGlzKTsKKyAgICAgICAgdGhp
cy5fc2hvd1R5cGVzQnV0dG9uTmF2aWdhdGlvbkl0ZW0uZW5hYmxlZCA9IGZhbHNlOworCisgICAg
ICAgIFdlYkluc3BlY3Rvci5zaG93SmF2YVNjcmlwdFR5cGVJbmZvcm1hdGlvblNldHRpbmcuYWRk
RXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuU2V0dGluZy5FdmVudC5DaGFuZ2VkLCB0aGlzLl9z
aG93SmF2YVNjcmlwdFR5cGVJbmZvcm1hdGlvblNldHRpbmdDaGFuZ2VkLCB0aGlzKTsKKyAgICB9
CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBuYXZpZ2F0aW9uSXRlbXMoKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIFt0aGlzLl9wcmV0dHlQcmludEJ1dHRvbk5hdmlnYXRpb25JdGVtLCB0aGlz
Ll9zaG93VHlwZXNCdXR0b25OYXZpZ2F0aW9uSXRlbV07Ci0gICAgfSwKKyAgICB9CiAKICAgICBn
ZXQgbWFuYWdlc093bklzc3VlcygpCiAgICAgewogICAgICAgICAvLyBTb3VyY2VDb2RlVGV4dEVk
aXRvciBtYW5hZ2VzIHRoZSBpc3N1ZXMsIHdlIGRvbid0IG5lZWQgUmVzb3VyY2VDb250ZW50Vmll
dyBkb2luZyBpdC4KICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBn
ZXQgdGV4dEVkaXRvcigpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fdGV4dEVkaXRvcjsK
LSAgICB9LAorICAgIH0KIAogICAgIGdldCBzdXBwbGVtZW50YWxSZXByZXNlbnRlZE9iamVjdHMo
KQogICAgIHsKQEAgLTkwLDEwMSArODcsMTAxIEBAIFdlYkluc3BlY3Rvci5UZXh0UmVzb3VyY2VD
b250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBvYmplY3RzLnB1c2goV2ViSW5z
cGVjdG9yLmRlYnVnZ2VyTWFuYWdlci5hY3RpdmVDYWxsRnJhbWUpOwogCiAgICAgICAgIHJldHVy
biBvYmplY3RzOwotICAgIH0sCisgICAgfQogCi0gICAgcmV2ZWFsUG9zaXRpb246IGZ1bmN0aW9u
KHBvc2l0aW9uLCB0ZXh0UmFuZ2VUb1NlbGVjdCwgZm9yY2VVbmZvcm1hdHRlZCkKKyAgICByZXZl
YWxQb3NpdGlvbihwb3NpdGlvbiwgdGV4dFJhbmdlVG9TZWxlY3QsIGZvcmNlVW5mb3JtYXR0ZWQp
CiAgICAgewogICAgICAgICB0aGlzLl90ZXh0RWRpdG9yLnJldmVhbFBvc2l0aW9uKHBvc2l0aW9u
LCB0ZXh0UmFuZ2VUb1NlbGVjdCwgZm9yY2VVbmZvcm1hdHRlZCk7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBzaG93bjogZnVuY3Rpb24oKQorICAgIHNob3duKCkKICAgICB7Ci0gICAgICAgIFdlYklu
c3BlY3Rvci5SZXNvdXJjZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5zaG93bi5jYWxsKHRoaXMpOwor
ICAgICAgICBzdXBlci5zaG93bigpOwogCiAgICAgICAgIHRoaXMuX3RleHRFZGl0b3Iuc2hvd24o
KTsKLSAgICB9LAorICAgIH0KIAotICAgIGhpZGRlbjogZnVuY3Rpb24oKQorICAgIGhpZGRlbigp
CiAgICAgewotICAgICAgICBXZWJJbnNwZWN0b3IuUmVzb3VyY2VDb250ZW50Vmlldy5wcm90b3R5
cGUuaGlkZGVuLmNhbGwodGhpcyk7CisgICAgICAgIHN1cGVyLmhpZGRlbigpOwogCiAgICAgICAg
IHRoaXMuX3RleHRFZGl0b3IuaGlkZGVuKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBjbG9zZWQ6
IGZ1bmN0aW9uKCkKKyAgICBjbG9zZWQoKQogICAgIHsKLSAgICAgICAgV2ViSW5zcGVjdG9yLlJl
c291cmNlQ29udGVudFZpZXcucHJvdG90eXBlLmNsb3NlZC5jYWxsKHRoaXMpOworICAgICAgICBz
dXBlci5jbG9zZWQoKTsKIAogICAgICAgICB0aGlzLnJlc291cmNlLnJlbW92ZUV2ZW50TGlzdGVu
ZXIobnVsbCwgbnVsbCwgdGhpcyk7CiAgICAgICAgIFdlYkluc3BlY3Rvci5wcm9iZU1hbmFnZXIu
cmVtb3ZlRXZlbnRMaXN0ZW5lcihudWxsLCBudWxsLCB0aGlzKTsKICAgICAgICAgV2ViSW5zcGVj
dG9yLnNob3dKYXZhU2NyaXB0VHlwZUluZm9ybWF0aW9uU2V0dGluZy5yZW1vdmVFdmVudExpc3Rl
bmVyKG51bGwsIG51bGwsIHRoaXMpOwogCiAgICAgICAgIHRoaXMuX3RleHRFZGl0b3IuY2xvc2Uo
KTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBzdXBwb3J0c1NhdmUoKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgc2F2ZURhdGEoKQogICAg
IHsKICAgICAgICAgcmV0dXJuIHt1cmw6IHRoaXMucmVzb3VyY2UudXJsLCBjb250ZW50OiB0aGlz
Ll90ZXh0RWRpdG9yLnN0cmluZ307Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgc3VwcG9ydHNT
ZWFyY2goKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfSwKKyAgICB9CiAKICAg
ICBnZXQgbnVtYmVyT2ZTZWFyY2hSZXN1bHRzKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlz
Ll90ZXh0RWRpdG9yLm51bWJlck9mU2VhcmNoUmVzdWx0czsKLSAgICB9LAorICAgIH0KIAogICAg
IGdldCBoYXNQZXJmb3JtZWRTZWFyY2goKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3Rl
eHRFZGl0b3IuY3VycmVudFNlYXJjaFF1ZXJ5ICE9PSBudWxsOwotICAgIH0sCisgICAgfQogCiAg
ICAgc2V0IGF1dG9tYXRpY2FsbHlSZXZlYWxGaXJzdFNlYXJjaFJlc3VsdChyZXZlYWwpCiAgICAg
ewogICAgICAgICB0aGlzLl90ZXh0RWRpdG9yLmF1dG9tYXRpY2FsbHlSZXZlYWxGaXJzdFNlYXJj
aFJlc3VsdCA9IHJldmVhbDsKLSAgICB9LAorICAgIH0KIAotICAgIHBlcmZvcm1TZWFyY2g6IGZ1
bmN0aW9uKHF1ZXJ5KQorICAgIHBlcmZvcm1TZWFyY2gocXVlcnkpCiAgICAgewogICAgICAgICB0
aGlzLl90ZXh0RWRpdG9yLnBlcmZvcm1TZWFyY2gocXVlcnkpOwotICAgIH0sCisgICAgfQogCi0g
ICAgc2VhcmNoQ2xlYXJlZDogZnVuY3Rpb24oKQorICAgIHNlYXJjaENsZWFyZWQoKQogICAgIHsK
ICAgICAgICAgdGhpcy5fdGV4dEVkaXRvci5zZWFyY2hDbGVhcmVkKCk7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBzZWFyY2hRdWVyeVdpdGhTZWxlY3Rpb246IGZ1bmN0aW9uKCkKKyAgICBzZWFyY2hR
dWVyeVdpdGhTZWxlY3Rpb24oKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3RleHRFZGl0
b3Iuc2VhcmNoUXVlcnlXaXRoU2VsZWN0aW9uKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICByZXZl
YWxQcmV2aW91c1NlYXJjaFJlc3VsdDogZnVuY3Rpb24oY2hhbmdlRm9jdXMpCisgICAgcmV2ZWFs
UHJldmlvdXNTZWFyY2hSZXN1bHQoY2hhbmdlRm9jdXMpCiAgICAgewogICAgICAgICB0aGlzLl90
ZXh0RWRpdG9yLnJldmVhbFByZXZpb3VzU2VhcmNoUmVzdWx0KGNoYW5nZUZvY3VzKTsKLSAgICB9
LAorICAgIH0KIAotICAgIHJldmVhbE5leHRTZWFyY2hSZXN1bHQ6IGZ1bmN0aW9uKGNoYW5nZUZv
Y3VzKQorICAgIHJldmVhbE5leHRTZWFyY2hSZXN1bHQoY2hhbmdlRm9jdXMpCiAgICAgewogICAg
ICAgICB0aGlzLl90ZXh0RWRpdG9yLnJldmVhbE5leHRTZWFyY2hSZXN1bHQoY2hhbmdlRm9jdXMp
OwotICAgIH0sCisgICAgfQogCi0gICAgdXBkYXRlTGF5b3V0OiBmdW5jdGlvbigpCisgICAgdXBk
YXRlTGF5b3V0KCkKICAgICB7CiAgICAgICAgIHRoaXMuX3RleHRFZGl0b3IudXBkYXRlTGF5b3V0
KCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcml2YXRlCiAKLSAgICBfY29udGVudFdpbGxQ
b3B1bGF0ZTogZnVuY3Rpb24oZXZlbnQpCisgICAgX2NvbnRlbnRXaWxsUG9wdWxhdGUoZXZlbnQp
CiAgICAgewogICAgICAgICBpZiAodGhpcy5fdGV4dEVkaXRvci5lbGVtZW50LnBhcmVudE5vZGUg
PT09IHRoaXMuZWxlbWVudCkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTE5OSw2NyArMTk2LDY1
IEBAIFdlYkluc3BlY3Rvci5UZXh0UmVzb3VyY2VDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAK
ICAgICAgICAgdGhpcy5lbGVtZW50LnJlbW92ZUNoaWxkcmVuKCk7CiAgICAgICAgIHRoaXMuZWxl
bWVudC5hcHBlbmRDaGlsZCh0aGlzLl90ZXh0RWRpdG9yLmVsZW1lbnQpOwotICAgIH0sCisgICAg
fQogCi0gICAgX2NvbnRlbnREaWRQb3B1bGF0ZTogZnVuY3Rpb24oZXZlbnQpCisgICAgX2NvbnRl
bnREaWRQb3B1bGF0ZShldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMuX3ByZXR0eVByaW50QnV0
dG9uTmF2aWdhdGlvbkl0ZW0uZW5hYmxlZCA9IHRoaXMuX3RleHRFZGl0b3IuY2FuQmVGb3JtYXR0
ZWQoKTsKICAgICAgICAgdGhpcy5fc2hvd1R5cGVzQnV0dG9uTmF2aWdhdGlvbkl0ZW0uZW5hYmxl
ZCA9IHRoaXMuX3RleHRFZGl0b3IuY2FuU2hvd1R5cGVBbm5vdGF0aW9ucygpOwogICAgICAgICB0
aGlzLl9zaG93VHlwZXNCdXR0b25OYXZpZ2F0aW9uSXRlbS5hY3RpdmF0ZWQgPSBXZWJJbnNwZWN0
b3Iuc2hvd0phdmFTY3JpcHRUeXBlSW5mb3JtYXRpb25TZXR0aW5nLnZhbHVlOwotICAgIH0sCisg
ICAgfQogCi0gICAgX3RvZ2dsZVByZXR0eVByaW50OiBmdW5jdGlvbihldmVudCkKKyAgICBfdG9n
Z2xlUHJldHR5UHJpbnQoZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgYWN0aXZhdGVkID0gIXRo
aXMuX3ByZXR0eVByaW50QnV0dG9uTmF2aWdhdGlvbkl0ZW0uYWN0aXZhdGVkOwogICAgICAgICB0
aGlzLl90ZXh0RWRpdG9yLmZvcm1hdHRlZCA9IGFjdGl2YXRlZDsKLSAgICB9LAorICAgIH0KIAot
ICAgIF90b2dnbGVUeXBlQW5ub3RhdGlvbnM6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF90b2dnbGVU
eXBlQW5ub3RhdGlvbnMoZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLl90ZXh0RWRpdG9yLnRv
Z2dsZVR5cGVBbm5vdGF0aW9ucygpOwotICAgIH0sCisgICAgfQogCi0gICAgX3Nob3dKYXZhU2Ny
aXB0VHlwZUluZm9ybWF0aW9uU2V0dGluZ0NoYW5nZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9z
aG93SmF2YVNjcmlwdFR5cGVJbmZvcm1hdGlvblNldHRpbmdDaGFuZ2VkKGV2ZW50KQogICAgIHsK
ICAgICAgICAgdGhpcy5fc2hvd1R5cGVzQnV0dG9uTmF2aWdhdGlvbkl0ZW0uYWN0aXZhdGVkID0g
V2ViSW5zcGVjdG9yLnNob3dKYXZhU2NyaXB0VHlwZUluZm9ybWF0aW9uU2V0dGluZy52YWx1ZTsK
LSAgICB9LAorICAgIH0KIAotICAgIF90ZXh0RWRpdG9yRm9ybWF0dGluZ0RpZENoYW5nZTogZnVu
Y3Rpb24oZXZlbnQpCisgICAgX3RleHRFZGl0b3JGb3JtYXR0aW5nRGlkQ2hhbmdlKGV2ZW50KQog
ICAgIHsKICAgICAgICAgdGhpcy5fcHJldHR5UHJpbnRCdXR0b25OYXZpZ2F0aW9uSXRlbS5hY3Rp
dmF0ZWQgPSB0aGlzLl90ZXh0RWRpdG9yLmZvcm1hdHRlZDsKLSAgICB9LAorICAgIH0KIAotICAg
IF9zb3VyY2VDb2RlQ29udGVudERpZENoYW5nZTogZnVuY3Rpb24oZXZlbnQpCisgICAgX3NvdXJj
ZUNvZGVDb250ZW50RGlkQ2hhbmdlKGV2ZW50KQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2ln
bm9yZVNvdXJjZUNvZGVDb250ZW50RGlkQ2hhbmdlRXZlbnQpCiAgICAgICAgICAgICByZXR1cm47
CiAKICAgICAgICAgdGhpcy5fdGV4dEVkaXRvci5zdHJpbmcgPSB0aGlzLnJlc291cmNlLmN1cnJl
bnRSZXZpc2lvbi5jb250ZW50OwotICAgIH0sCisgICAgfQogCi0gICAgX3RleHRFZGl0b3JDb250
ZW50RGlkQ2hhbmdlOiBmdW5jdGlvbihldmVudCkKKyAgICBfdGV4dEVkaXRvckNvbnRlbnREaWRD
aGFuZ2UoZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLl9pZ25vcmVTb3VyY2VDb2RlQ29udGVu
dERpZENoYW5nZUV2ZW50ID0gdHJ1ZTsKICAgICAgICAgV2ViSW5zcGVjdG9yLmJyYW5jaE1hbmFn
ZXIuY3VycmVudEJyYW5jaC5yZXZpc2lvbkZvclJlcHJlc2VudGVkT2JqZWN0KHRoaXMucmVzb3Vy
Y2UpLmNvbnRlbnQgPSB0aGlzLl90ZXh0RWRpdG9yLnN0cmluZzsKICAgICAgICAgZGVsZXRlIHRo
aXMuX2lnbm9yZVNvdXJjZUNvZGVDb250ZW50RGlkQ2hhbmdlRXZlbnQ7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBfZXhlY3V0aW9uTGluZU51bWJlckRpZENoYW5nZTogZnVuY3Rpb24oZXZlbnQpCisg
ICAgX2V4ZWN1dGlvbkxpbmVOdW1iZXJEaWRDaGFuZ2UoZXZlbnQpCiAgICAgewogICAgICAgICB0
aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcuRXZl
bnQuU3VwcGxlbWVudGFsUmVwcmVzZW50ZWRPYmplY3RzRGlkQ2hhbmdlKTsKLSAgICB9LAorICAg
IH0KIAotICAgIF9udW1iZXJPZlNlYXJjaFJlc3VsdHNEaWRDaGFuZ2U6IGZ1bmN0aW9uKGV2ZW50
KQorICAgIF9udW1iZXJPZlNlYXJjaFJlc3VsdHNEaWRDaGFuZ2UoZXZlbnQpCiAgICAgewogICAg
ICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuQ29udGVudFZp
ZXcuRXZlbnQuTnVtYmVyT2ZTZWFyY2hSZXN1bHRzRGlkQ2hhbmdlKTsKLSAgICB9LAorICAgIH0K
IAotICAgIF9wcm9iZVNldHNDaGFuZ2VkOiBmdW5jdGlvbihldmVudCkKKyAgICBfcHJvYmVTZXRz
Q2hhbmdlZChldmVudCkKICAgICB7CiAgICAgICAgIHZhciBicmVha3BvaW50ID0gZXZlbnQuZGF0
YS5wcm9iZVNldC5icmVha3BvaW50OwogICAgICAgICBpZiAoYnJlYWtwb2ludC5zb3VyY2VDb2Rl
TG9jYXRpb24uc291cmNlQ29kZSA9PT0gdGhpcy5yZXNvdXJjZSkKICAgICAgICAgICAgIHRoaXMu
ZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5FdmVudC5T
dXBwbGVtZW50YWxSZXByZXNlbnRlZE9iamVjdHNEaWRDaGFuZ2UpOwogICAgIH0KIH07Ci0KLVdl
Ykluc3BlY3Rvci5UZXh0UmVzb3VyY2VDb250ZW50Vmlldy5wcm90b3R5cGUuX19wcm90b19fID0g
V2ViSW5zcGVjdG9yLlJlc291cmNlQ29udGVudFZpZXcucHJvdG90eXBlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258227</attachid>
            <date>2015-08-04 16:23:33 -0700</date>
            <delta_ts>2015-08-04 22:13:59 -0700</delta_ts>
            <desc>Proposed Fix</desc>
            <filename>bug-147534-20150804162326.patch</filename>
            <type>text/plain</type>
            <size>229404</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg3ODg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCBh
ZWYyNTllYTYyYTRhNmNhYmIxZDZlZjRhODFkNzkxMjJjNzQ1YTJmLi5mMjg1ZDdlNWNhODFiYjJj
NTdjODdmNmVjZTEyZDEyYmY5OTc2YTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MCBAQAorMjAxNS0wOC0wNCAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKwor
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBDb252ZXJ0IHJlbWFpbmluZyBDb250ZW50Vmlld3MgdG8g
dXNlIEVTNiBjbGFzc2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNDc1MzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBbG9uZyB0aGUgd2F5LCBpbmxpbmUgYSBmZXcgc3R5bGUgY2xhc3MgbmFtZXMuCisK
KyAgICAgICAgRWxpZGVkIG1lY2hhbmljYWwgY2hhbmdlcyBmcm9tIHRoZSBDaGFuZ2Vsb2cuCisK
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0FwcGxpY2F0aW9uQ2FjaGVGcmFtZUNvbnRl
bnRWaWV3LmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvQ2x1c3RlckNvbnRlbnRW
aWV3LmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvQ29uc29sZVRhYkNvbnRlbnRW
aWV3LmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudEJyb3dzZXJUYWJD
b250ZW50Vmlldy5qczogUmVhcnJhbmdlIGluaXRpYWxpemF0aW9uCisgICAgICAgIG9mIHRoZSB0
YWIncyBjb250ZW50IGJyb3dzZXIgdG8gY29tcGx5IHdpdGggVERaIHJ1bGVzIGZvciB1c2luZyBg
dGhpc2AuCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9Db250ZW50Rmxvd0RPTVRyZWVD
b250ZW50Vmlldy5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRWaWV3
LmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudFZpZXdDb250YWluZXIu
anM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9Db29raWVTdG9yYWdlQ29udGVudFZp
ZXcuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9ET01TdG9yYWdlQ29udGVudFZp
ZXcuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlQ29udGVudFZpZXcu
anM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9EYXRhYmFzZUNvbnRlbnRWaWV3Lmpz
OgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvRGF0YWJhc2VUYWJsZUNvbnRlbnRWaWV3
LmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvRGVidWdnZXJUYWJDb250ZW50Vmll
dy5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0VsZW1lbnRzVGFiQ29udGVudFZp
ZXcuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9Gb250UmVzb3VyY2VDb250ZW50
Vmlldy5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0ZyYW1lRE9NVHJlZUNvbnRl
bnRWaWV3LmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvR2VuZXJpY1Jlc291cmNl
Q29udGVudFZpZXcuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9JbWFnZVJlc291
cmNlQ29udGVudFZpZXcuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9JbmRleGVk
RGF0YWJhc2VPYmplY3RTdG9yZUNvbnRlbnRWaWV3LmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZh
Y2UvVmlld3MvTG9nQ29udGVudFZpZXcuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3
cy9OZXR3b3JrR3JpZENvbnRlbnRWaWV3LmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmll
d3MvTmV0d29ya1RhYkNvbnRlbnRWaWV3LmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmll
d3MvTmV3VGFiQ29udGVudFZpZXcuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9S
ZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Zp
ZXdzL1Jlc291cmNlQ29udGVudFZpZXcuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3
cy9SZXNvdXJjZXNUYWJDb250ZW50Vmlldy5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Zp
ZXdzL1NjcmlwdENvbnRlbnRWaWV3LmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3Mv
U2VhcmNoVGFiQ29udGVudFZpZXcuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9T
ZXR0aW5nc1RhYkNvbnRlbnRWaWV3LmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3Mv
U3RvcmFnZVRhYkNvbnRlbnRWaWV3LmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3Mv
VGFiQ29udGVudFZpZXcuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9UZXh0Q29u
dGVudFZpZXcuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9UZXh0UmVzb3VyY2VD
b250ZW50Vmlldy5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lUmVj
b3JkaW5nQ29udGVudFZpZXcuanM6CisKIDIwMTUtMDgtMDQgIE1hdHQgQmFrZXIgIDxtYXR0YmFr
ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IHRpbWVsaW5lIG92ZXJ2aWV3
IHNob3VsZCB2aXN1YWxseSBkaXN0aW5ndWlzaCBzZWxlY3Rpb24gYm91bmRzIG91dHNpZGUgdGhl
IHZpc2libGUgZHVyYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0FwcGxpY2F0aW9uQ2FjaGVGcmFtZUNvbnRlbnRWaWV3LmpzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQXBwbGljYXRpb25DYWNoZUZy
YW1lQ29udGVudFZpZXcuanMKaW5kZXggZjAyZjBkY2I5MWZmZjFmNmZlYmExYTUyOWI0NWIzZmU4
OThjNGM1My4uNjNlYWFjN2RkNTI3NWNjZjg1Y2FhYmI3NWZlZTkyNGRlNGI5NzE1OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQXBwbGljYXRp
b25DYWNoZUZyYW1lQ29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvQXBwbGljYXRpb25DYWNoZUZyYW1lQ29udGVudFZpZXcuanMKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDEzLCAyMDE0IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMy0y
MDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMjMsNzYgKzIzLDc1IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVGcmFtZUNvbnRl
bnRWaWV3ID0gZnVuY3Rpb24ocmVwcmVzZW50ZWRPYmplY3QpCitXZWJJbnNwZWN0b3IuQXBwbGlj
YXRpb25DYWNoZUZyYW1lQ29udGVudFZpZXcgPSBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlRnJhbWVD
b250ZW50VmlldyBleHRlbmRzIFdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlRnJhbWUKIHsK
LSAgICBjb25zb2xlLmFzc2VydChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3Bl
Y3Rvci5BcHBsaWNhdGlvbkNhY2hlRnJhbWUpOwotCi0gICAgV2ViSW5zcGVjdG9yLkNvbnRlbnRW
aWV3LmNhbGwodGhpcywgcmVwcmVzZW50ZWRPYmplY3QpOworICAgIGNvbnN0cnVjdG9yKHJlcHJl
c2VudGVkT2JqZWN0KQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQocmVwcmVzZW50ZWRP
YmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZUZyYW1lKTsKIAot
ICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJhcHBsaWNhdGlvbi1jYWNoZS1mcmFtZSIs
ICJ0YWJsZSIpOworICAgICAgICBzdXBlcihyZXByZXNlbnRlZE9iamVjdCk7CiAKLSAgICB0aGlz
Ll9mcmFtZSA9IHJlcHJlc2VudGVkT2JqZWN0LmZyYW1lOworICAgICAgICB0aGlzLmVsZW1lbnQu
Y2xhc3NMaXN0LmFkZCgiYXBwbGljYXRpb24tY2FjaGUtZnJhbWUiLCAidGFibGUiKTsKIAotICAg
IHRoaXMuX2VtcHR5VmlldyA9IFdlYkluc3BlY3Rvci5jcmVhdGVNZXNzYWdlVGV4dFZpZXcoV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJObyBBcHBsaWNhdGlvbiBDYWNoZSBpbmZvcm1hdGlvbiBhdmFp
bGFibGUiKSwgZmFsc2UpOwotICAgIHRoaXMuX2VtcHR5Vmlldy5jbGFzc0xpc3QuYWRkKCJoaWRk
ZW4iKTsKLSAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fZW1wdHlWaWV3KTsKKyAg
ICAgICAgdGhpcy5fZnJhbWUgPSByZXByZXNlbnRlZE9iamVjdC5mcmFtZTsKIAotICAgIHRoaXMu
X21hcmtEaXJ0eSgpOworICAgICAgICB0aGlzLl9lbXB0eVZpZXcgPSBXZWJJbnNwZWN0b3IuY3Jl
YXRlTWVzc2FnZVRleHRWaWV3KFdlYkluc3BlY3Rvci5VSVN0cmluZygiTm8gQXBwbGljYXRpb24g
Q2FjaGUgaW5mb3JtYXRpb24gYXZhaWxhYmxlIiksIGZhbHNlKTsKKyAgICAgICAgdGhpcy5fZW1w
dHlWaWV3LmNsYXNzTGlzdC5hZGQoImhpZGRlbiIpOworICAgICAgICB0aGlzLmVsZW1lbnQuYXBw
ZW5kQ2hpbGQodGhpcy5fZW1wdHlWaWV3KTsKIAotICAgIHZhciBzdGF0dXMgPSByZXByZXNlbnRl
ZE9iamVjdC5zdGF0dXM7Ci0gICAgdGhpcy51cGRhdGVTdGF0dXMoc3RhdHVzKTsKKyAgICAgICAg
dGhpcy5fbWFya0RpcnR5KCk7CiAKLSAgICBXZWJJbnNwZWN0b3IuYXBwbGljYXRpb25DYWNoZU1h
bmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZU1hbmFn
ZXIuRXZlbnQuRnJhbWVNYW5pZmVzdFN0YXR1c0NoYW5nZWQsIHRoaXMuX3VwZGF0ZVN0YXR1cywg
dGhpcyk7Ci19CisgICAgICAgIHZhciBzdGF0dXMgPSByZXByZXNlbnRlZE9iamVjdC5zdGF0dXM7
CisgICAgICAgIHRoaXMudXBkYXRlU3RhdHVzKHN0YXR1cyk7CiAKLVdlYkluc3BlY3Rvci5BcHBs
aWNhdGlvbkNhY2hlRnJhbWVDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0
b3I6IFdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlRnJhbWVDb250ZW50VmlldywKKyAgICAg
ICAgV2ViSW5zcGVjdG9yLmFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIo
V2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLkV2ZW50LkZyYW1lTWFuaWZlc3RT
dGF0dXNDaGFuZ2VkLCB0aGlzLl91cGRhdGVTdGF0dXMsIHRoaXMpOworICAgIH0KIAotICAgIHNo
b3duOiBmdW5jdGlvbigpCisgICAgc2hvd24oKQogICAgIHsKICAgICAgICAgdGhpcy5fbWF5YmVV
cGRhdGUoKTsKLSAgICB9LAorICAgIH0KIAotICAgIGNsb3NlZDogZnVuY3Rpb24oKQorICAgIGNs
b3NlZCgpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3IuYXBwbGljYXRpb25DYWNoZU1hbmFn
ZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihudWxsLCBudWxsLCB0aGlzKTsKLSAgICB9LAorICAgIH0K
IAotICAgIHVwZGF0ZUxheW91dDogZnVuY3Rpb24oKQorICAgIHVwZGF0ZUxheW91dCgpCiAgICAg
ewogICAgICAgICBpZiAodGhpcy5kYXRhR3JpZCkKICAgICAgICAgICAgIHRoaXMuZGF0YUdyaWQu
dXBkYXRlTGF5b3V0KCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzYXZlVG9Db29raWU6IGZ1bmN0
aW9uKGNvb2tpZSkKKyAgICBzYXZlVG9Db29raWUoY29va2llKQogICAgIHsKICAgICAgICAgY29v
a2llLnR5cGUgPSBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXdDb29raWVUeXBlLkFwcGxpY2F0aW9u
Q2FjaGU7CiAgICAgICAgIGNvb2tpZS5mcmFtZSA9IHRoaXMucmVwcmVzZW50ZWRPYmplY3QuZnJh
bWUudXJsOwogICAgICAgICBjb29raWUubWFuaWZlc3QgPSB0aGlzLnJlcHJlc2VudGVkT2JqZWN0
Lm1hbmlmZXN0Lm1hbmlmZXN0VVJMOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHNjcm9sbGFi
bGVFbGVtZW50cygpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX2RhdGFHcmlkKQogICAgICAg
ICAgICAgcmV0dXJuIFtdOwogICAgICAgICByZXR1cm4gW3RoaXMuX2RhdGFHcmlkLnNjcm9sbENv
bnRhaW5lcl07Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfbWF5YmVVcGRhdGU6IGZ1bmN0aW9uKCkK
KyAgICBfbWF5YmVVcGRhdGUoKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLnZpc2libGUgfHwg
IXRoaXMuX3ZpZXdEaXJ0eSkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICB0aGlzLl91
cGRhdGUoKTsKICAgICAgICAgdGhpcy5fdmlld0RpcnR5ID0gZmFsc2U7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBfbWFya0RpcnR5OiBmdW5jdGlvbigpCisgICAgX21hcmtEaXJ0eSgpCiAgICAgewog
ICAgICAgICB0aGlzLl92aWV3RGlydHkgPSB0cnVlOwotICAgIH0sCisgICAgfQogCi0gICAgX3Vw
ZGF0ZVN0YXR1czogZnVuY3Rpb24oZXZlbnQpCisgICAgX3VwZGF0ZVN0YXR1cyhldmVudCkKICAg
ICB7CiAgICAgICAgIHZhciBmcmFtZU1hbmlmZXN0ID0gZXZlbnQuZGF0YS5mcmFtZU1hbmlmZXN0
OwogICAgICAgICBpZiAoZnJhbWVNYW5pZmVzdCAhPT0gdGhpcy5yZXByZXNlbnRlZE9iamVjdCkK
QEAgLTEwMSw5ICsxMDAsOSBAQCBXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZUZyYW1lQ29u
dGVudFZpZXcucHJvdG90eXBlID0gewogICAgICAgICBjb25zb2xlLmFzc2VydChmcmFtZU1hbmlm
ZXN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVGcmFtZSk7CiAKICAg
ICAgICAgdGhpcy51cGRhdGVTdGF0dXMoZnJhbWVNYW5pZmVzdC5zdGF0dXMpOwotICAgIH0sCisg
ICAgfQogCi0gICAgdXBkYXRlU3RhdHVzOiBmdW5jdGlvbihzdGF0dXMpCisgICAgdXBkYXRlU3Rh
dHVzKHN0YXR1cykKICAgICB7CiAgICAgICAgIHZhciBvbGRTdGF0dXMgPSB0aGlzLl9zdGF0dXM7
CiAgICAgICAgIHRoaXMuX3N0YXR1cyA9IHN0YXR1czsKQEAgLTExMiwxNCArMTExLDE0IEBAIFdl
Ykluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlRnJhbWVDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7
CiAgICAgICAgICAgICB0aGlzLl9tYXJrRGlydHkoKTsKIAogICAgICAgICB0aGlzLl9tYXliZVVw
ZGF0ZSgpOwotICAgIH0sCisgICAgfQogCi0gICAgX3VwZGF0ZTogZnVuY3Rpb24oKQorICAgIF91
cGRhdGUoKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLmFwcGxpY2F0aW9uQ2FjaGVNYW5h
Z2VyLnJlcXVlc3RBcHBsaWNhdGlvbkNhY2hlKHRoaXMuX2ZyYW1lLCB0aGlzLl91cGRhdGVDYWxs
YmFjay5iaW5kKHRoaXMpKTsKLSAgICB9LAorICAgIH0KIAotICAgIF91cGRhdGVDYWxsYmFjazog
ZnVuY3Rpb24oYXBwbGljYXRpb25DYWNoZSkKKyAgICBfdXBkYXRlQ2FsbGJhY2soYXBwbGljYXRp
b25DYWNoZSkKICAgICB7CiAgICAgICAgIGlmICghYXBwbGljYXRpb25DYWNoZSB8fCAhYXBwbGlj
YXRpb25DYWNoZS5tYW5pZmVzdFVSTCkgewogICAgICAgICAgICAgZGVsZXRlIHRoaXMuX21hbmlm
ZXN0OwpAQCAtMTUwLDkgKzE0OSw5IEBAIFdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlRnJh
bWVDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2RhdGFHcmlkLmVsZW1l
bnQuY2xhc3NMaXN0LnJlbW92ZSgiaGlkZGVuIik7CiAKICAgICAgICAgdGhpcy5fZW1wdHlWaWV3
LmNsYXNzTGlzdC5hZGQoImhpZGRlbiIpOwotICAgIH0sCisgICAgfQogCi0gICAgX2NyZWF0ZURh
dGFHcmlkOiBmdW5jdGlvbigpCisgICAgX2NyZWF0ZURhdGFHcmlkKCkKICAgICB7CiAgICAgICAg
IHZhciBjb2x1bW5zID0ge3VybDoge30sIHR5cGU6IHt9LCBzaXplOiB7fX07CiAKQEAgLTE3NCw5
ICsxNzMsOSBAQCBXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZUZyYW1lQ29udGVudFZpZXcu
cHJvdG90eXBlID0gewogCiAgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9k
YXRhR3JpZC5lbGVtZW50KTsKICAgICAgICAgdGhpcy5fZGF0YUdyaWQudXBkYXRlTGF5b3V0KCk7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfc29ydERhdGFHcmlkOiBmdW5jdGlvbigpCisgICAgX3Nv
cnREYXRhR3JpZCgpCiAgICAgewogICAgICAgICBmdW5jdGlvbiBudW1iZXJDb21wYXJlKGNvbHVt
bklkZW50aWZpZXIsIG5vZGVBLCBub2RlQikKICAgICAgICAgewpAQCAtMTk2LDkgKzE5NSw5IEBA
IFdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlRnJhbWVDb250ZW50Vmlldy5wcm90b3R5cGUg
PSB7CiAgICAgICAgIH0KIAogICAgICAgICB0aGlzLl9kYXRhR3JpZC5zb3J0Tm9kZXMoY29tcGFy
YXRvcik7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcG9wdWxhdGVEYXRhR3JpZDogZnVuY3Rpb24o
KQorICAgIF9wb3B1bGF0ZURhdGFHcmlkKCkKICAgICB7CiAgICAgICAgIHRoaXMuX2RhdGFHcmlk
LnJlbW92ZUNoaWxkcmVuKCk7CiAKQEAgLTIxMSwyMyArMjEwLDIxIEBAIFdlYkluc3BlY3Rvci5B
cHBsaWNhdGlvbkNhY2hlRnJhbWVDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAg
ICB2YXIgbm9kZSA9IG5ldyBXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlKGRhdGEpOwogICAgICAg
ICAgICAgdGhpcy5fZGF0YUdyaWQuYXBwZW5kQ2hpbGQobm9kZSk7CiAgICAgICAgIH0KLSAgICB9
LAorICAgIH0KIAotICAgIF9kZWxldGVCdXR0b25DbGlja2VkOiBmdW5jdGlvbihldmVudCkKKyAg
ICBfZGVsZXRlQnV0dG9uQ2xpY2tlZChldmVudCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5f
ZGF0YUdyaWQgfHwgIXRoaXMuX2RhdGFHcmlkLnNlbGVjdGVkTm9kZSkKICAgICAgICAgICAgIHJl
dHVybjsKIAogICAgICAgICAvLyBGSVhNRTogRGVsZXRlIEJ1dHRvbiBzZW1hbnRpY3MgYXJlIG5v
dCB5ZXQgZGVmaW5lZC4gKERlbGV0ZSBhIHNpbmdsZSwgb3IgYWxsPykKICAgICAgICAgdGhpcy5f
ZGVsZXRlQ2FsbGJhY2sodGhpcy5fZGF0YUdyaWQuc2VsZWN0ZWROb2RlKTsKLSAgICB9LAorICAg
IH0KIAotICAgIF9kZWxldGVDYWxsYmFjazogZnVuY3Rpb24obm9kZSkKKyAgICBfZGVsZXRlQ2Fs
bGJhY2sobm9kZSkKICAgICB7CiAgICAgICAgIC8vIEZJWE1FOiBTaG91bGQgd2UgZGVsZXRlIGEg
c2luZ2xlIChzZWxlY3RlZCkgcmVzb3VyY2Ugb3IgYWxsIHJlc291cmNlcz8KICAgICAgICAgLy8g
SW5zcGVjdG9yQmFja2VuZC5kZWxldGVDYWNoZWRSZXNvdXJjZSguLi4pCiAgICAgICAgIC8vIHRo
aXMuX3VwZGF0ZSgpOwogICAgIH0KLX0KLQotV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVG
cmFtZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuQ29udGVu
dFZpZXcucHJvdG90eXBlOworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0NsdXN0ZXJDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NsdXN0ZXJDb250ZW50Vmlldy5qcwppbmRleCBl
ODFhMTY0NjUxZDc5OWQ0ZTRhYTYxMWNmZDllNGZiZThlZDkzZDcyLi45M2E5YTJmZWY0MzhiN2Uy
ZjQwMWQ4NWQzYmI4NWUxYWQzMjI5YjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9DbHVzdGVyQ29udGVudFZpZXcuanMKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ2x1c3RlckNvbnRlbnRWaWV3Lmpz
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0yMywyMyArMjMsMjIgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAq
LwogCi1XZWJJbnNwZWN0b3IuQ2x1c3RlckNvbnRlbnRWaWV3ID0gZnVuY3Rpb24ocmVwcmVzZW50
ZWRPYmplY3QpCitXZWJJbnNwZWN0b3IuQ2x1c3RlckNvbnRlbnRWaWV3ID0gY2xhc3MgY2xhc3NO
YW1lIGV4dGVuZHMgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3CiB7Ci0gICAgV2ViSW5zcGVjdG9y
LkNvbnRlbnRWaWV3LmNhbGwodGhpcywgcmVwcmVzZW50ZWRPYmplY3QpOwotCi0gICAgdGhpcy5l
bGVtZW50LmNsYXNzTGlzdC5hZGQoImNsdXN0ZXIiKTsKKyAgICBjb25zdHJ1Y3RvcihyZXByZXNl
bnRlZE9iamVjdCkKKyAgICB7CisgICAgICAgIHN1cGVyKHJlcHJlc2VudGVkT2JqZWN0KTsKIAot
ICAgIHRoaXMuX2NvbnRlbnRWaWV3Q29udGFpbmVyID0gbmV3IFdlYkluc3BlY3Rvci5Db250ZW50
Vmlld0NvbnRhaW5lcigpOwotICAgIHRoaXMuX2NvbnRlbnRWaWV3Q29udGFpbmVyLmFkZEV2ZW50
TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29udGFpbmVyLkV2ZW50LkN1cnJlbnRD
b250ZW50Vmlld0RpZENoYW5nZSwgdGhpcy5fY3VycmVudENvbnRlbnRWaWV3RGlkQ2hhbmdlLCB0
aGlzKTsKLSAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fY29udGVudFZpZXdDb250
YWluZXIuZWxlbWVudCk7CisgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJjbHVz
dGVyIik7CiAKLSAgICBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcuYWRkRXZlbnRMaXN0ZW5lcihX
ZWJJbnNwZWN0b3IuQ29udGVudFZpZXcuRXZlbnQuU2VsZWN0aW9uUGF0aENvbXBvbmVudHNEaWRD
aGFuZ2UsIHRoaXMuX2NvbnRlbnRWaWV3U2VsZWN0aW9uUGF0aENvbXBvbmVudERpZENoYW5nZSwg
dGhpcyk7Ci0gICAgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LmFkZEV2ZW50TGlzdGVuZXIoV2Vi
SW5zcGVjdG9yLkNvbnRlbnRWaWV3LkV2ZW50LlN1cHBsZW1lbnRhbFJlcHJlc2VudGVkT2JqZWN0
c0RpZENoYW5nZSwgdGhpcy5fY29udGVudFZpZXdTdXBwbGVtZW50YWxSZXByZXNlbnRlZE9iamVj
dHNEaWRDaGFuZ2UsIHRoaXMpOwotICAgIFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5hZGRFdmVu
dExpc3RlbmVyKFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5FdmVudC5OdW1iZXJPZlNlYXJjaFJl
c3VsdHNEaWRDaGFuZ2UsIHRoaXMuX2NvbnRlbnRWaWV3TnVtYmVyT2ZTZWFyY2hSZXN1bHRzRGlk
Q2hhbmdlLCB0aGlzKTsKLX07CisgICAgICAgIHRoaXMuX2NvbnRlbnRWaWV3Q29udGFpbmVyID0g
bmV3IFdlYkluc3BlY3Rvci5Db250ZW50Vmlld0NvbnRhaW5lcigpOworICAgICAgICB0aGlzLl9j
b250ZW50Vmlld0NvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Db250ZW50
Vmlld0NvbnRhaW5lci5FdmVudC5DdXJyZW50Q29udGVudFZpZXdEaWRDaGFuZ2UsIHRoaXMuX2N1
cnJlbnRDb250ZW50Vmlld0RpZENoYW5nZSwgdGhpcyk7CisgICAgICAgIHRoaXMuZWxlbWVudC5h
cHBlbmRDaGlsZCh0aGlzLl9jb250ZW50Vmlld0NvbnRhaW5lci5lbGVtZW50KTsKIAotV2ViSW5z
cGVjdG9yLkNsdXN0ZXJDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6
IFdlYkluc3BlY3Rvci5DbHVzdGVyQ29udGVudFZpZXcsCisgICAgICAgIFdlYkluc3BlY3Rvci5D
b250ZW50Vmlldy5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5FdmVu
dC5TZWxlY3Rpb25QYXRoQ29tcG9uZW50c0RpZENoYW5nZSwgdGhpcy5fY29udGVudFZpZXdTZWxl
Y3Rpb25QYXRoQ29tcG9uZW50RGlkQ2hhbmdlLCB0aGlzKTsKKyAgICAgICAgV2ViSW5zcGVjdG9y
LkNvbnRlbnRWaWV3LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LkV2
ZW50LlN1cHBsZW1lbnRhbFJlcHJlc2VudGVkT2JqZWN0c0RpZENoYW5nZSwgdGhpcy5fY29udGVu
dFZpZXdTdXBwbGVtZW50YWxSZXByZXNlbnRlZE9iamVjdHNEaWRDaGFuZ2UsIHRoaXMpOworICAg
ICAgICBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0
b3IuQ29udGVudFZpZXcuRXZlbnQuTnVtYmVyT2ZTZWFyY2hSZXN1bHRzRGlkQ2hhbmdlLCB0aGlz
Ll9jb250ZW50Vmlld051bWJlck9mU2VhcmNoUmVzdWx0c0RpZENoYW5nZSwgdGhpcyk7CisgICAg
fQogCiAgICAgLy8gUHVibGljCiAKQEAgLTQ3LDEwMSArNDYsMTAxIEBAIFdlYkluc3BlY3Rvci5D
bHVzdGVyQ29udGVudFZpZXcucHJvdG90eXBlID0gewogICAgIHsKICAgICAgICAgdmFyIGN1cnJl
bnRDb250ZW50VmlldyA9IHRoaXMuX2NvbnRlbnRWaWV3Q29udGFpbmVyLmN1cnJlbnRDb250ZW50
VmlldzsKICAgICAgICAgcmV0dXJuIGN1cnJlbnRDb250ZW50VmlldyA/IGN1cnJlbnRDb250ZW50
Vmlldy5uYXZpZ2F0aW9uSXRlbXMgOiBbXTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBjb250
ZW50Vmlld0NvbnRhaW5lcigpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fY29udGVudFZp
ZXdDb250YWluZXI7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgc3VwcG9ydHNTcGxpdENvbnRl
bnRCcm93c2VyKCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9jb250ZW50Vmlld0NvbnRhaW5l
ci5jdXJyZW50Q29udGVudFZpZXcpCiAgICAgICAgICAgICByZXR1cm4gdGhpcy5fY29udGVudFZp
ZXdDb250YWluZXIuY3VycmVudENvbnRlbnRWaWV3LnN1cHBvcnRzU3BsaXRDb250ZW50QnJvd3Nl
cjsKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICB1cGRhdGVMYXlv
dXQ6IGZ1bmN0aW9uKCkKKyAgICB1cGRhdGVMYXlvdXQoKQogICAgIHsKICAgICAgICAgdmFyIGN1
cnJlbnRDb250ZW50VmlldyA9IHRoaXMuX2NvbnRlbnRWaWV3Q29udGFpbmVyLmN1cnJlbnRDb250
ZW50VmlldzsKICAgICAgICAgaWYgKGN1cnJlbnRDb250ZW50VmlldykKICAgICAgICAgICAgIGN1
cnJlbnRDb250ZW50Vmlldy51cGRhdGVMYXlvdXQoKTsKLSAgICB9LAorICAgIH0KIAotICAgIHNo
b3duOiBmdW5jdGlvbigpCisgICAgc2hvd24oKQogICAgIHsKICAgICAgICAgdGhpcy5fY29udGVu
dFZpZXdDb250YWluZXIuc2hvd24oKTsKLSAgICB9LAorICAgIH0KIAotICAgIGhpZGRlbjogZnVu
Y3Rpb24oKQorICAgIGhpZGRlbigpCiAgICAgewogICAgICAgICB0aGlzLl9jb250ZW50Vmlld0Nv
bnRhaW5lci5oaWRkZW4oKTsKLSAgICB9LAorICAgIH0KIAotICAgIGNsb3NlZDogZnVuY3Rpb24o
KQorICAgIGNsb3NlZCgpCiAgICAgewogICAgICAgICB0aGlzLl9jb250ZW50Vmlld0NvbnRhaW5l
ci5jbG9zZUFsbENvbnRlbnRWaWV3cygpOwogCiAgICAgICAgIFdlYkluc3BlY3Rvci5Db250ZW50
Vmlldy5yZW1vdmVFdmVudExpc3RlbmVyKG51bGwsIG51bGwsIHRoaXMpOwotICAgIH0sCisgICAg
fQogCi0gICAgY2FuR29CYWNrOiBmdW5jdGlvbigpCisgICAgY2FuR29CYWNrKCkKICAgICB7CiAg
ICAgICAgIHJldHVybiB0aGlzLl9jb250ZW50Vmlld0NvbnRhaW5lci5jYW5Hb0JhY2soKTsKLSAg
ICB9LAorICAgIH0KIAotICAgIGNhbkdvRm9yd2FyZDogZnVuY3Rpb24oKQorICAgIGNhbkdvRm9y
d2FyZCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fY29udGVudFZpZXdDb250YWluZXIu
Y2FuR29Gb3J3YXJkKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBnb0JhY2s6IGZ1bmN0aW9uKCkK
KyAgICBnb0JhY2soKQogICAgIHsKICAgICAgICAgdGhpcy5fY29udGVudFZpZXdDb250YWluZXIu
Z29CYWNrKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBnb0ZvcndhcmQ6IGZ1bmN0aW9uKCkKKyAg
ICBnb0ZvcndhcmQoKQogICAgIHsKICAgICAgICAgdGhpcy5fY29udGVudFZpZXdDb250YWluZXIu
Z29Gb3J3YXJkKCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgc2VsZWN0aW9uUGF0aENvbXBv
bmVudHMoKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9jb250ZW50Vmlld0NvbnRhaW5lci5j
dXJyZW50Q29udGVudFZpZXcpCiAgICAgICAgICAgICByZXR1cm4gW107CiAgICAgICAgIHJldHVy
biB0aGlzLl9jb250ZW50Vmlld0NvbnRhaW5lci5jdXJyZW50Q29udGVudFZpZXcuc2VsZWN0aW9u
UGF0aENvbXBvbmVudHM7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgc3VwcGxlbWVudGFsUmVw
cmVzZW50ZWRPYmplY3RzKCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fY29udGVudFZpZXdD
b250YWluZXIuY3VycmVudENvbnRlbnRWaWV3KQogICAgICAgICAgICAgcmV0dXJuIFtdOwogICAg
ICAgICByZXR1cm4gdGhpcy5fY29udGVudFZpZXdDb250YWluZXIuY3VycmVudENvbnRlbnRWaWV3
LnN1cHBsZW1lbnRhbFJlcHJlc2VudGVkT2JqZWN0czsKLSAgICB9LAorICAgIH0KIAogICAgIGdl
dCBoYW5kbGVDb3B5RXZlbnQoKQogICAgIHsKICAgICAgICAgdmFyIGN1cnJlbnRDb250ZW50Vmll
dyA9IHRoaXMuX2NvbnRlbnRWaWV3Q29udGFpbmVyLmN1cnJlbnRDb250ZW50VmlldzsKICAgICAg
ICAgcmV0dXJuIGN1cnJlbnRDb250ZW50VmlldyAmJiB0eXBlb2YgY3VycmVudENvbnRlbnRWaWV3
LmhhbmRsZUNvcHlFdmVudCA9PT0gImZ1bmN0aW9uIiA/IGN1cnJlbnRDb250ZW50Vmlldy5oYW5k
bGVDb3B5RXZlbnQuYmluZChjdXJyZW50Q29udGVudFZpZXcpIDogbnVsbDsKLSAgICB9LAorICAg
IH0KIAogICAgIGdldCBzdXBwb3J0c1NhdmUoKQogICAgIHsKICAgICAgICAgdmFyIGN1cnJlbnRD
b250ZW50VmlldyA9IHRoaXMuX2NvbnRlbnRWaWV3Q29udGFpbmVyLmN1cnJlbnRDb250ZW50Vmll
dzsKICAgICAgICAgcmV0dXJuIGN1cnJlbnRDb250ZW50VmlldyAmJiBjdXJyZW50Q29udGVudFZp
ZXcuc3VwcG9ydHNTYXZlOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHNhdmVEYXRhKCkKICAg
ICB7CiAgICAgICAgIHZhciBjdXJyZW50Q29udGVudFZpZXcgPSB0aGlzLl9jb250ZW50Vmlld0Nv
bnRhaW5lci5jdXJyZW50Q29udGVudFZpZXc7CiAgICAgICAgIHJldHVybiBjdXJyZW50Q29udGVu
dFZpZXcgJiYgY3VycmVudENvbnRlbnRWaWV3LnNhdmVEYXRhIHx8IG51bGw7Ci0gICAgfSwKKyAg
ICB9CiAKICAgICBnZXQgc3VwcG9ydHNTZWFyY2goKQogICAgIHsKICAgICAgICAgLy8gQWx3YXlz
IHJldHVybiB0cnVlIHNvIHdlIGNhbiBpbnRlcmNlcHQgdGhlIHNlYXJjaCBxdWVyeSB0byByZXNl
bmQgaXQgd2hlbiBzd2l0Y2hpbmcgY29udGVudCB2aWV3cy4KICAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgbnVtYmVyT2ZTZWFyY2hSZXN1bHRzKCkKICAgICB7
CkBAIC0xNDksNyArMTQ4LDcgQEAgV2ViSW5zcGVjdG9yLkNsdXN0ZXJDb250ZW50Vmlldy5wcm90
b3R5cGUgPSB7CiAgICAgICAgIGlmICghY3VycmVudENvbnRlbnRWaWV3IHx8ICFjdXJyZW50Q29u
dGVudFZpZXcuc3VwcG9ydHNTZWFyY2gpCiAgICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAg
ICAgcmV0dXJuIGN1cnJlbnRDb250ZW50Vmlldy5udW1iZXJPZlNlYXJjaFJlc3VsdHM7Ci0gICAg
fSwKKyAgICB9CiAKICAgICBnZXQgaGFzUGVyZm9ybWVkU2VhcmNoKCkKICAgICB7CkBAIC0xNTcs
NyArMTU2LDcgQEAgV2ViSW5zcGVjdG9yLkNsdXN0ZXJDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7
CiAgICAgICAgIGlmICghY3VycmVudENvbnRlbnRWaWV3IHx8ICFjdXJyZW50Q29udGVudFZpZXcu
c3VwcG9ydHNTZWFyY2gpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHJldHVy
biBjdXJyZW50Q29udGVudFZpZXcuaGFzUGVyZm9ybWVkU2VhcmNoOwotICAgIH0sCisgICAgfQog
CiAgICAgc2V0IGF1dG9tYXRpY2FsbHlSZXZlYWxGaXJzdFNlYXJjaFJlc3VsdChyZXZlYWwpCiAg
ICAgewpAQCAtMTY1LDkgKzE2NCw5IEBAIFdlYkluc3BlY3Rvci5DbHVzdGVyQ29udGVudFZpZXcu
cHJvdG90eXBlID0gewogICAgICAgICBpZiAoIWN1cnJlbnRDb250ZW50VmlldyB8fCAhY3VycmVu
dENvbnRlbnRWaWV3LnN1cHBvcnRzU2VhcmNoKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICBjdXJyZW50Q29udGVudFZpZXcuYXV0b21hdGljYWxseVJldmVhbEZpcnN0U2VhcmNoUmVzdWx0
ID0gcmV2ZWFsOwotICAgIH0sCisgICAgfQogCi0gICAgcGVyZm9ybVNlYXJjaDogZnVuY3Rpb24o
cXVlcnkpCisgICAgcGVyZm9ybVNlYXJjaChxdWVyeSkKICAgICB7CiAgICAgICAgIHRoaXMuX3Nl
YXJjaFF1ZXJ5ID0gcXVlcnk7CiAKQEAgLTE3NSw5ICsxNzQsOSBAQCBXZWJJbnNwZWN0b3IuQ2x1
c3RlckNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKCFjdXJyZW50Q29udGVu
dFZpZXcgfHwgIWN1cnJlbnRDb250ZW50Vmlldy5zdXBwb3J0c1NlYXJjaCkKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgY3VycmVudENvbnRlbnRWaWV3LnBlcmZvcm1TZWFyY2gocXVlcnkp
OwotICAgIH0sCisgICAgfQogCi0gICAgc2VhcmNoQ2xlYXJlZDogZnVuY3Rpb24oKQorICAgIHNl
YXJjaENsZWFyZWQoKQogICAgIHsKICAgICAgICAgdGhpcy5fc2VhcmNoUXVlcnkgPSBudWxsOwog
CkBAIC0xODUsMzUgKzE4NCwzNSBAQCBXZWJJbnNwZWN0b3IuQ2x1c3RlckNvbnRlbnRWaWV3LnBy
b3RvdHlwZSA9IHsKICAgICAgICAgaWYgKCFjdXJyZW50Q29udGVudFZpZXcgfHwgIWN1cnJlbnRD
b250ZW50Vmlldy5zdXBwb3J0c1NlYXJjaCkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
Y3VycmVudENvbnRlbnRWaWV3LnNlYXJjaENsZWFyZWQoKTsKLSAgICB9LAorICAgIH0KIAotICAg
IHNlYXJjaFF1ZXJ5V2l0aFNlbGVjdGlvbjogZnVuY3Rpb24oKQorICAgIHNlYXJjaFF1ZXJ5V2l0
aFNlbGVjdGlvbigpCiAgICAgewogICAgICAgICB2YXIgY3VycmVudENvbnRlbnRWaWV3ID0gdGhp
cy5fY29udGVudFZpZXdDb250YWluZXIuY3VycmVudENvbnRlbnRWaWV3OwogICAgICAgICBpZiAo
IWN1cnJlbnRDb250ZW50VmlldyB8fCAhY3VycmVudENvbnRlbnRWaWV3LnN1cHBvcnRzU2VhcmNo
KQogICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgIHJldHVybiBjdXJyZW50Q29udGVu
dFZpZXcuc2VhcmNoUXVlcnlXaXRoU2VsZWN0aW9uKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBy
ZXZlYWxQcmV2aW91c1NlYXJjaFJlc3VsdDogZnVuY3Rpb24oY2hhbmdlRm9jdXMpCisgICAgcmV2
ZWFsUHJldmlvdXNTZWFyY2hSZXN1bHQoY2hhbmdlRm9jdXMpCiAgICAgewogICAgICAgICB2YXIg
Y3VycmVudENvbnRlbnRWaWV3ID0gdGhpcy5fY29udGVudFZpZXdDb250YWluZXIuY3VycmVudENv
bnRlbnRWaWV3OwogICAgICAgICBpZiAoIWN1cnJlbnRDb250ZW50VmlldyB8fCAhY3VycmVudENv
bnRlbnRWaWV3LnN1cHBvcnRzU2VhcmNoKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBj
dXJyZW50Q29udGVudFZpZXcucmV2ZWFsUHJldmlvdXNTZWFyY2hSZXN1bHQoY2hhbmdlRm9jdXMp
OwotICAgIH0sCisgICAgfQogCi0gICAgcmV2ZWFsTmV4dFNlYXJjaFJlc3VsdDogZnVuY3Rpb24o
Y2hhbmdlRm9jdXMpCisgICAgcmV2ZWFsTmV4dFNlYXJjaFJlc3VsdChjaGFuZ2VGb2N1cykKICAg
ICB7CiAgICAgICAgIHZhciBjdXJyZW50Q29udGVudFZpZXcgPSB0aGlzLl9jb250ZW50Vmlld0Nv
bnRhaW5lci5jdXJyZW50Q29udGVudFZpZXc7CiAgICAgICAgIGlmICghY3VycmVudENvbnRlbnRW
aWV3IHx8ICFjdXJyZW50Q29udGVudFZpZXcuc3VwcG9ydHNTZWFyY2gpCiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIGN1cnJlbnRDb250ZW50Vmlldy5yZXZlYWxOZXh0U2VhcmNoUmVzdWx0
KGNoYW5nZUZvY3VzKTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByaXZhdGUKIAotICAgIF9j
dXJyZW50Q29udGVudFZpZXdEaWRDaGFuZ2U6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9jdXJyZW50
Q29udGVudFZpZXdEaWRDaGFuZ2UoZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgY3VycmVudENv
bnRlbnRWaWV3ID0gdGhpcy5fY29udGVudFZpZXdDb250YWluZXIuY3VycmVudENvbnRlbnRWaWV3
OwogICAgICAgICBpZiAoY3VycmVudENvbnRlbnRWaWV3ICYmIGN1cnJlbnRDb250ZW50Vmlldy5z
dXBwb3J0c1NlYXJjaCkgewpAQCAtMjI2LDI4ICsyMjUsMjYgQEAgV2ViSW5zcGVjdG9yLkNsdXN0
ZXJDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRv
TGlzdGVuZXJzKFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5FdmVudC5TZWxlY3Rpb25QYXRoQ29t
cG9uZW50c0RpZENoYW5nZSk7CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJz
KFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5FdmVudC5OdW1iZXJPZlNlYXJjaFJlc3VsdHNEaWRD
aGFuZ2UpOwogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0
b3IuQ29udGVudFZpZXcuRXZlbnQuTmF2aWdhdGlvbkl0ZW1zRGlkQ2hhbmdlKTsKLSAgICB9LAor
ICAgIH0KIAotICAgIF9jb250ZW50Vmlld1NlbGVjdGlvblBhdGhDb21wb25lbnREaWRDaGFuZ2U6
IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9jb250ZW50Vmlld1NlbGVjdGlvblBhdGhDb21wb25lbnRE
aWRDaGFuZ2UoZXZlbnQpCiAgICAgewogICAgICAgICBpZiAoZXZlbnQudGFyZ2V0ICE9PSB0aGlz
Ll9jb250ZW50Vmlld0NvbnRhaW5lci5jdXJyZW50Q29udGVudFZpZXcpCiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rv
ci5Db250ZW50Vmlldy5FdmVudC5TZWxlY3Rpb25QYXRoQ29tcG9uZW50c0RpZENoYW5nZSk7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBfY29udGVudFZpZXdTdXBwbGVtZW50YWxSZXByZXNlbnRlZE9i
amVjdHNEaWRDaGFuZ2U6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9jb250ZW50Vmlld1N1cHBsZW1l
bnRhbFJlcHJlc2VudGVkT2JqZWN0c0RpZENoYW5nZShldmVudCkKICAgICB7CiAgICAgICAgIGlm
IChldmVudC50YXJnZXQgIT09IHRoaXMuX2NvbnRlbnRWaWV3Q29udGFpbmVyLmN1cnJlbnRDb250
ZW50VmlldykKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50
VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LkV2ZW50LlN1cHBsZW1lbnRhbFJl
cHJlc2VudGVkT2JqZWN0c0RpZENoYW5nZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfY29udGVu
dFZpZXdOdW1iZXJPZlNlYXJjaFJlc3VsdHNEaWRDaGFuZ2U6IGZ1bmN0aW9uKGV2ZW50KQorICAg
IF9jb250ZW50Vmlld051bWJlck9mU2VhcmNoUmVzdWx0c0RpZENoYW5nZShldmVudCkKICAgICB7
CiAgICAgICAgIGlmIChldmVudC50YXJnZXQgIT09IHRoaXMuX2NvbnRlbnRWaWV3Q29udGFpbmVy
LmN1cnJlbnRDb250ZW50VmlldykKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgdGhpcy5k
aXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LkV2ZW50Lk51
bWJlck9mU2VhcmNoUmVzdWx0c0RpZENoYW5nZSk7CiAgICAgfQogfTsKLQotV2ViSW5zcGVjdG9y
LkNsdXN0ZXJDb250ZW50Vmlldy5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLkNv
bnRlbnRWaWV3LnByb3RvdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0NvbnNvbGVUYWJDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnNvbGVUYWJDb250ZW50Vmlldy5qcwpp
bmRleCA4OWIwYmZmNGFmYjY5YjJmNzZiMDM3ODI0MDgxMmJiMzhlMTYyOWE2Li4yMWY5YmVjMTAy
NzU5OTM5ODI4MWU1ZjYxNjNiM2Y3M2I0NjA3ZGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db25zb2xlVGFiQ29udGVudFZpZXcuanMKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29uc29sZVRhYkNv
bnRlbnRWaWV3LmpzCkBAIC0yMywyNyArMjMsMjUgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuQ29uc29sZVRhYkNvbnRlbnRWaWV3ID0g
ZnVuY3Rpb24oaWRlbnRpZmllcikKK1dlYkluc3BlY3Rvci5Db25zb2xlVGFiQ29udGVudFZpZXcg
PSBjbGFzcyBDb25zb2xlVGFiQ29udGVudFZpZXcgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuQ29udGVu
dEJyb3dzZXJUYWJDb250ZW50VmlldwogewotICAgIHZhciB0YWJCYXJJdGVtID0gbmV3IFdlYklu
c3BlY3Rvci5UYWJCYXJJdGVtKCJJbWFnZXMvQ29uc29sZS5zdmciLCBXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIkNvbnNvbGUiKSk7Ci0KLSAgICBXZWJJbnNwZWN0b3IuQ29udGVudEJyb3dzZXJUYWJD
b250ZW50Vmlldy5jYWxsKHRoaXMsIGlkZW50aWZpZXIgfHwgImNvbnNvbGUiLCAiY29uc29sZSIs
IHRhYkJhckl0ZW0sIG51bGwsIG51bGwsIHRydWUpOwotfTsKKyAgICBjb25zdHJ1Y3RvcihpZGVu
dGlmaWVyKQorICAgIHsKKyAgICAgICAgdmFyIHRhYkJhckl0ZW0gPSBuZXcgV2ViSW5zcGVjdG9y
LlRhYkJhckl0ZW0oIkltYWdlcy9Db25zb2xlLnN2ZyIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygi
Q29uc29sZSIpKTsKIAotV2ViSW5zcGVjdG9yLkNvbnNvbGVUYWJDb250ZW50Vmlldy5wcm90b3R5
cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5Db25zb2xlVGFiQ29udGVudFZp
ZXcsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuQ29udGVudEJyb3dzZXJUYWJDb250ZW50
Vmlldy5wcm90b3R5cGUsCisgICAgICAgIHN1cGVyKGlkZW50aWZpZXIgfHwgImNvbnNvbGUiLCAi
Y29uc29sZSIsIHRhYkJhckl0ZW0sIG51bGwsIG51bGwsIHRydWUpOworICAgIH0KIAogICAgIC8v
IFB1YmxpYwogCiAgICAgZ2V0IHR5cGUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIFdlYkluc3Bl
Y3Rvci5Db25zb2xlVGFiQ29udGVudFZpZXcuVHlwZTsKLSAgICB9LAorICAgIH0KIAotICAgIHNo
b3duOiBmdW5jdGlvbigpCisgICAgc2hvd24oKQogICAgIHsKLSAgICAgICAgV2ViSW5zcGVjdG9y
LkNvbnRlbnRCcm93c2VyVGFiQ29udGVudFZpZXcucHJvdG90eXBlLnNob3duLmNhbGwodGhpcyk7
CisgICAgICAgIHN1cGVyLnNob3duKCk7CiAKICAgICAgICAgaWYgKHRoaXMuY29udGVudEJyb3dz
ZXIuY3VycmVudENvbnRlbnRWaWV3ID09PSBXZWJJbnNwZWN0b3IuY29uc29sZUNvbnRlbnRWaWV3
KQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtNTYsMjAgKzU0LDIwIEBAIFdlYkluc3BlY3Rvci5D
b25zb2xlVGFiQ29udGVudFZpZXcucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLmNvbnRlbnRC
cm93c2VyLnNob3dDb250ZW50VmlldyhXZWJJbnNwZWN0b3IuY29uc29sZUNvbnRlbnRWaWV3KTsK
IAogICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLmNvbnRlbnRCcm93c2VyLmN1cnJlbnRDb250
ZW50VmlldyA9PT0gV2ViSW5zcGVjdG9yLmNvbnNvbGVDb250ZW50Vmlldyk7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBzaG93UmVwcmVzZW50ZWRPYmplY3Q6IGZ1bmN0aW9uKHJlcHJlc2VudGVkT2Jq
ZWN0LCBjb29raWUpCisgICAgc2hvd1JlcHJlc2VudGVkT2JqZWN0KHJlcHJlc2VudGVkT2JqZWN0
LCBjb29raWUpCiAgICAgewogICAgICAgICAvLyBEbyBub3RoaW5nLiBUaGUgc2hvd24gZnVuY3Rp
b24gd2lsbCBoYW5kbGUgdGhpbmdzLiBDYWxsaW5nCiAgICAgICAgIC8vIENvbnRlbnRCcm93c2Vy
VGFiQ29udGVudFZpZXcuc2hvd24gd2lsbCBjYXVzZSBhIG5ldyBMb2dDb250ZW50VmlldwogICAg
ICAgICAvLyB0byBiZSBjcmVhdGVkIGluc3RlYWQgb2YgcmV1c2luZyBXZWJJbnNwZWN0b3IuY29u
c29sZUNvbnRlbnRWaWV3LgogICAgICAgICBjb25zb2xlLmFzc2VydChyZXByZXNlbnRlZE9iamVj
dCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Mb2dPYmplY3QpOwotICAgIH0sCisgICAgfQogCi0g
ICAgY2FuU2hvd1JlcHJlc2VudGVkT2JqZWN0OiBmdW5jdGlvbihyZXByZXNlbnRlZE9iamVjdCkK
KyAgICBjYW5TaG93UmVwcmVzZW50ZWRPYmplY3QocmVwcmVzZW50ZWRPYmplY3QpCiAgICAgewog
ICAgICAgICByZXR1cm4gcmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3Iu
TG9nT2JqZWN0OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHN1cHBvcnRzU3BsaXRDb250ZW50
QnJvd3NlcigpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvQ29udGVudEJyb3dzZXJUYWJDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRCcm93c2VyVGFiQ29udGVu
dFZpZXcuanMKaW5kZXggMTdiNjg3NDk2YmY3ZTkwOGVhNjQ1ODE2ODVjYmE5YWY5MWNjMzZlMC4u
ZDkyN2MwNTBlZGVlM2IwNDZhOTkxNzg2YWE3ZDczNTUyZGFhNWMxNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudEJyb3dzZXJUYWJD
b250ZW50Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9Db250ZW50QnJvd3NlclRhYkNvbnRlbnRWaWV3LmpzCkBAIC0yMyw5NCArMjMsOTUgQEAK
ICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3Iu
Q29udGVudEJyb3dzZXJUYWJDb250ZW50VmlldyA9IGZ1bmN0aW9uKGlkZW50aWZpZXIsIHN0eWxl
Q2xhc3NOYW1lcywgdGFiQmFySXRlbSwgbmF2aWdhdGlvblNpZGViYXJQYW5lbENsYXNzLCBkZXRh
aWxzU2lkZWJhclBhbmVscywgZGlzYWJsZUJhY2tGb3J3YXJkKQorV2ViSW5zcGVjdG9yLkNvbnRl
bnRCcm93c2VyVGFiQ29udGVudFZpZXcgPSBjbGFzcyBDb250ZW50QnJvd3NlclRhYkNvbnRlbnRW
aWV3IGV4dGVuZHMgV2ViSW5zcGVjdG9yLlRhYkNvbnRlbnRWaWV3CiB7Ci0gICAgaWYgKHR5cGVv
ZiBzdHlsZUNsYXNzTmFtZXMgPT09ICJzdHJpbmciKQotICAgICAgICBzdHlsZUNsYXNzTmFtZXMg
PSBbc3R5bGVDbGFzc05hbWVzXTsKKyAgICBjb25zdHJ1Y3RvcihpZGVudGlmaWVyLCBzdHlsZUNs
YXNzTmFtZXMsIHRhYkJhckl0ZW0sIG5hdmlnYXRpb25TaWRlYmFyUGFuZWxDbGFzcywgZGV0YWls
c1NpZGViYXJQYW5lbHMsIGRpc2FibGVCYWNrRm9yd2FyZCkKKyAgICB7CisgICAgICAgIGlmICh0
eXBlb2Ygc3R5bGVDbGFzc05hbWVzID09PSAic3RyaW5nIikKKyAgICAgICAgICAgIHN0eWxlQ2xh
c3NOYW1lcyA9IFtzdHlsZUNsYXNzTmFtZXNdOwogCi0gICAgc3R5bGVDbGFzc05hbWVzLnB1c2go
ImNvbnRlbnQtYnJvd3NlciIpOworICAgICAgICBzdHlsZUNsYXNzTmFtZXMucHVzaCgiY29udGVu
dC1icm93c2VyIik7CiAKLSAgICB2YXIgY29udGVudEJyb3dzZXIgPSBuZXcgV2ViSW5zcGVjdG9y
LkNvbnRlbnRCcm93c2VyKG51bGwsIHRoaXMsIGRpc2FibGVCYWNrRm9yd2FyZCk7Ci0gICAgdmFy
IG5hdmlnYXRpb25TaWRlYmFyUGFuZWwgPSBuYXZpZ2F0aW9uU2lkZWJhclBhbmVsQ2xhc3MgPyBu
ZXcgbmF2aWdhdGlvblNpZGViYXJQYW5lbENsYXNzKGNvbnRlbnRCcm93c2VyKSA6IG51bGw7Cisg
ICAgICAgIHZhciBjb250ZW50QnJvd3NlciA9IG5ldyBXZWJJbnNwZWN0b3IuQ29udGVudEJyb3dz
ZXIobnVsbCwgbnVsbCwgZGlzYWJsZUJhY2tGb3J3YXJkKTsKKyAgICAgICAgdmFyIG5hdmlnYXRp
b25TaWRlYmFyUGFuZWwgPSBuYXZpZ2F0aW9uU2lkZWJhclBhbmVsQ2xhc3MgPyBuZXcgbmF2aWdh
dGlvblNpZGViYXJQYW5lbENsYXNzKGNvbnRlbnRCcm93c2VyKSA6IG51bGw7CiAKLSAgICBXZWJJ
bnNwZWN0b3IuVGFiQ29udGVudFZpZXcuY2FsbCh0aGlzLCBpZGVudGlmaWVyLCBzdHlsZUNsYXNz
TmFtZXMsIHRhYkJhckl0ZW0sIG5hdmlnYXRpb25TaWRlYmFyUGFuZWwsIGRldGFpbHNTaWRlYmFy
UGFuZWxzKTsKKyAgICAgICAgc3VwZXIoaWRlbnRpZmllciwgc3R5bGVDbGFzc05hbWVzLCB0YWJC
YXJJdGVtLCBuYXZpZ2F0aW9uU2lkZWJhclBhbmVsLCBkZXRhaWxzU2lkZWJhclBhbmVscyk7CiAK
LSAgICB0aGlzLl9sYXN0U2VsZWN0ZWREZXRhaWxzU2lkZWJhclBhbmVsU2V0dGluZyA9IG5ldyBX
ZWJJbnNwZWN0b3IuU2V0dGluZyhpZGVudGlmaWVyICsgIi1sYXN0LXNlbGVjdGVkLWRldGFpbHMt
c2lkZWJhci1wYW5lbCIsIG51bGwpOworICAgICAgICB0aGlzLl9jb250ZW50QnJvd3NlciA9IGNv
bnRlbnRCcm93c2VyOyAvLyBNdXN0IGNhbGwgdGhlIHN1cGVyIGNvbnN0cnVjdG9yIGJlZm9yZSB1
c2luZyBgdGhpc2AuCisgICAgICAgIHRoaXMuX2NvbnRlbnRCcm93c2VyLmRlbGVnYXRlID0gdGhp
czsKIAotICAgIHRoaXMuX2NvbnRlbnRCcm93c2VyID0gY29udGVudEJyb3dzZXI7Ci0gICAgdGhp
cy5fY29udGVudEJyb3dzZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQ29udGVudEJy
b3dzZXIuRXZlbnQuQ3VycmVudFJlcHJlc2VudGVkT2JqZWN0c0RpZENoYW5nZSwgdGhpcy5zaG93
RGV0YWlsc1NpZGViYXJQYW5lbHMsIHRoaXMpOwotICAgIHRoaXMuX2NvbnRlbnRCcm93c2VyLmFk
ZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkNvbnRlbnRCcm93c2VyLkV2ZW50LkN1cnJlbnRD
b250ZW50Vmlld0RpZENoYW5nZSwgdGhpcy5fY29udGVudEJyb3dzZXJDdXJyZW50Q29udGVudFZp
ZXdEaWRDaGFuZ2UsIHRoaXMpOworICAgICAgICB0aGlzLl9sYXN0U2VsZWN0ZWREZXRhaWxzU2lk
ZWJhclBhbmVsU2V0dGluZyA9IG5ldyBXZWJJbnNwZWN0b3IuU2V0dGluZyhpZGVudGlmaWVyICsg
Ii1sYXN0LXNlbGVjdGVkLWRldGFpbHMtc2lkZWJhci1wYW5lbCIsIG51bGwpOwogCi0gICAgLy8g
SWYgYW55IGNvbnRlbnQgdmlld3Mgd2VyZSBzaG93biBkdXJpbmcgc2lkZWJhciBjb25zdHJ1Y3Rp
b24sIGNvbnRlbnRCcm93c2VyVHJlZUVsZW1lbnRGb3JSZXByZXNlbnRlZE9iamVjdCgpIHdvdWxk
IGhhdmUgcmV0dXJuZWQgbnVsbC4KLSAgICAvLyBFeHBsaWNpdGx5IHVwZGF0ZSB0aGUgcGF0aCBm
b3IgdGhlIG5hdmlnYXRpb24gYmFyIHRvIHByZXZlbnQgaXQgZnJvbSBzaG93aW5nIHVwIGFzIGJs
YW5rLgotICAgIHRoaXMuX2NvbnRlbnRCcm93c2VyLnVwZGF0ZUhpZXJhcmNoaWNhbFBhdGhGb3JD
dXJyZW50Q29udGVudFZpZXcoKTsKKyAgICAgICAgdGhpcy5fY29udGVudEJyb3dzZXIgPSB0aGlz
Ll9jb250ZW50QnJvd3NlcjsKKyAgICAgICAgdGhpcy5fY29udGVudEJyb3dzZXIuYWRkRXZlbnRM
aXN0ZW5lcihXZWJJbnNwZWN0b3IuQ29udGVudEJyb3dzZXIuRXZlbnQuQ3VycmVudFJlcHJlc2Vu
dGVkT2JqZWN0c0RpZENoYW5nZSwgdGhpcy5zaG93RGV0YWlsc1NpZGViYXJQYW5lbHMsIHRoaXMp
OworICAgICAgICB0aGlzLl9jb250ZW50QnJvd3Nlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3Bl
Y3Rvci5Db250ZW50QnJvd3Nlci5FdmVudC5DdXJyZW50Q29udGVudFZpZXdEaWRDaGFuZ2UsIHRo
aXMuX2NvbnRlbnRCcm93c2VyQ3VycmVudENvbnRlbnRWaWV3RGlkQ2hhbmdlLCB0aGlzKTsKIAot
ICAgIGlmIChuYXZpZ2F0aW9uU2lkZWJhclBhbmVsKSB7Ci0gICAgICAgIHZhciBzaG93VG9vbFRp
cCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2hvdyB0aGUgbmF2aWdhdGlvbiBzaWRlYmFyICgl
cykiKS5mb3JtYXQoV2ViSW5zcGVjdG9yLm5hdmlnYXRpb25TaWRlYmFyS2V5Ym9hcmRTaG9ydGN1
dC5kaXNwbGF5TmFtZSk7Ci0gICAgICAgIHZhciBoaWRlVG9vbFRpcCA9IFdlYkluc3BlY3Rvci5V
SVN0cmluZygiSGlkZSB0aGUgbmF2aWdhdGlvbiBzaWRlYmFyICglcykiKS5mb3JtYXQoV2ViSW5z
cGVjdG9yLm5hdmlnYXRpb25TaWRlYmFyS2V5Ym9hcmRTaG9ydGN1dC5kaXNwbGF5TmFtZSk7Cisg
ICAgICAgIC8vIElmIGFueSBjb250ZW50IHZpZXdzIHdlcmUgc2hvd24gZHVyaW5nIHNpZGViYXIg
Y29uc3RydWN0aW9uLCBjb250ZW50QnJvd3NlclRyZWVFbGVtZW50Rm9yUmVwcmVzZW50ZWRPYmpl
Y3QoKSB3b3VsZCBoYXZlIHJldHVybmVkIG51bGwuCisgICAgICAgIC8vIEV4cGxpY2l0bHkgdXBk
YXRlIHRoZSBwYXRoIGZvciB0aGUgbmF2aWdhdGlvbiBiYXIgdG8gcHJldmVudCBpdCBmcm9tIHNo
b3dpbmcgdXAgYXMgYmxhbmsuCisgICAgICAgIHRoaXMuX2NvbnRlbnRCcm93c2VyLnVwZGF0ZUhp
ZXJhcmNoaWNhbFBhdGhGb3JDdXJyZW50Q29udGVudFZpZXcoKTsKIAotICAgICAgICB0aGlzLl9z
aG93TmF2aWdhdGlvblNpZGViYXJJdGVtID0gbmV3IFdlYkluc3BlY3Rvci5BY3RpdmF0ZUJ1dHRv
bk5hdmlnYXRpb25JdGVtKCJ0b2dnbGUtbmF2aWdhdGlvbi1zaWRlYmFyIiwgc2hvd1Rvb2xUaXAs
IGhpZGVUb29sVGlwLCAiSW1hZ2VzL1RvZ2dsZUxlZnRTaWRlYmFyLnN2ZyIsIDE2LCAxNik7Ci0g
ICAgICAgIHRoaXMuX3Nob3dOYXZpZ2F0aW9uU2lkZWJhckl0ZW0uYWRkRXZlbnRMaXN0ZW5lcihX
ZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uRXZlbnQuQ2xpY2tlZCwgV2ViSW5zcGVj
dG9yLnRvZ2dsZU5hdmlnYXRpb25TaWRlYmFyLCBXZWJJbnNwZWN0b3IpOwotICAgICAgICB0aGlz
Ll9zaG93TmF2aWdhdGlvblNpZGViYXJJdGVtLmFjdGl2YXRlZCA9ICFXZWJJbnNwZWN0b3IubmF2
aWdhdGlvblNpZGViYXIuY29sbGFwc2VkOworICAgICAgICBpZiAobmF2aWdhdGlvblNpZGViYXJQ
YW5lbCkgeworICAgICAgICAgICAgdmFyIHNob3dUb29sVGlwID0gV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJTaG93IHRoZSBuYXZpZ2F0aW9uIHNpZGViYXIgKCVzKSIpLmZvcm1hdChXZWJJbnNwZWN0
b3IubmF2aWdhdGlvblNpZGViYXJLZXlib2FyZFNob3J0Y3V0LmRpc3BsYXlOYW1lKTsKKyAgICAg
ICAgICAgIHZhciBoaWRlVG9vbFRpcCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiSGlkZSB0aGUg
bmF2aWdhdGlvbiBzaWRlYmFyICglcykiKS5mb3JtYXQoV2ViSW5zcGVjdG9yLm5hdmlnYXRpb25T
aWRlYmFyS2V5Ym9hcmRTaG9ydGN1dC5kaXNwbGF5TmFtZSk7CiAKLSAgICAgICAgdGhpcy5fY29u
dGVudEJyb3dzZXIubmF2aWdhdGlvbkJhci5pbnNlcnROYXZpZ2F0aW9uSXRlbSh0aGlzLl9zaG93
TmF2aWdhdGlvblNpZGViYXJJdGVtLCAwKTsKLSAgICAgICAgdGhpcy5fY29udGVudEJyb3dzZXIu
bmF2aWdhdGlvbkJhci5pbnNlcnROYXZpZ2F0aW9uSXRlbShuZXcgV2ViSW5zcGVjdG9yLkRpdmlk
ZXJOYXZpZ2F0aW9uSXRlbSwgMSk7CisgICAgICAgICAgICB0aGlzLl9zaG93TmF2aWdhdGlvblNp
ZGViYXJJdGVtID0gbmV3IFdlYkluc3BlY3Rvci5BY3RpdmF0ZUJ1dHRvbk5hdmlnYXRpb25JdGVt
KCJ0b2dnbGUtbmF2aWdhdGlvbi1zaWRlYmFyIiwgc2hvd1Rvb2xUaXAsIGhpZGVUb29sVGlwLCAi
SW1hZ2VzL1RvZ2dsZUxlZnRTaWRlYmFyLnN2ZyIsIDE2LCAxNik7CisgICAgICAgICAgICB0aGlz
Ll9zaG93TmF2aWdhdGlvblNpZGViYXJJdGVtLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9y
LkJ1dHRvbk5hdmlnYXRpb25JdGVtLkV2ZW50LkNsaWNrZWQsIFdlYkluc3BlY3Rvci50b2dnbGVO
YXZpZ2F0aW9uU2lkZWJhciwgV2ViSW5zcGVjdG9yKTsKKyAgICAgICAgICAgIHRoaXMuX3Nob3dO
YXZpZ2F0aW9uU2lkZWJhckl0ZW0uYWN0aXZhdGVkID0gIVdlYkluc3BlY3Rvci5uYXZpZ2F0aW9u
U2lkZWJhci5jb2xsYXBzZWQ7CiAKLSAgICAgICAgbmF2aWdhdGlvblNpZGViYXJQYW5lbC5jb250
ZW50QnJvd3NlciA9IHRoaXMuX2NvbnRlbnRCcm93c2VyOworICAgICAgICAgICAgdGhpcy5fY29u
dGVudEJyb3dzZXIubmF2aWdhdGlvbkJhci5pbnNlcnROYXZpZ2F0aW9uSXRlbSh0aGlzLl9zaG93
TmF2aWdhdGlvblNpZGViYXJJdGVtLCAwKTsKKyAgICAgICAgICAgIHRoaXMuX2NvbnRlbnRCcm93
c2VyLm5hdmlnYXRpb25CYXIuaW5zZXJ0TmF2aWdhdGlvbkl0ZW0obmV3IFdlYkluc3BlY3Rvci5E
aXZpZGVyTmF2aWdhdGlvbkl0ZW0sIDEpOwogCi0gICAgICAgIFdlYkluc3BlY3Rvci5uYXZpZ2F0
aW9uU2lkZWJhci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5TaWRlYmFyLkV2ZW50LkNv
bGxhcHNlZFN0YXRlRGlkQ2hhbmdlLCB0aGlzLl9uYXZpZ2F0aW9uU2lkZWJhckNvbGxhcHNlZFN0
YXRlRGlkQ2hhbmdlLCB0aGlzKTsKLSAgICB9CisgICAgICAgICAgICBuYXZpZ2F0aW9uU2lkZWJh
clBhbmVsLmNvbnRlbnRCcm93c2VyID0gdGhpcy5fY29udGVudEJyb3dzZXI7CiAKLSAgICBpZiAo
ZGV0YWlsc1NpZGViYXJQYW5lbHMgJiYgZGV0YWlsc1NpZGViYXJQYW5lbHMubGVuZ3RoKSB7Ci0g
ICAgICAgIHZhciBzaG93VG9vbFRpcCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2hvdyB0aGUg
ZGV0YWlscyBzaWRlYmFyICglcykiKS5mb3JtYXQoV2ViSW5zcGVjdG9yLmRldGFpbHNTaWRlYmFy
S2V5Ym9hcmRTaG9ydGN1dC5kaXNwbGF5TmFtZSk7Ci0gICAgICAgIHZhciBoaWRlVG9vbFRpcCA9
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiSGlkZSB0aGUgZGV0YWlscyBzaWRlYmFyICglcykiKS5m
b3JtYXQoV2ViSW5zcGVjdG9yLmRldGFpbHNTaWRlYmFyS2V5Ym9hcmRTaG9ydGN1dC5kaXNwbGF5
TmFtZSk7CisgICAgICAgICAgICBXZWJJbnNwZWN0b3IubmF2aWdhdGlvblNpZGViYXIuYWRkRXZl
bnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuU2lkZWJhci5FdmVudC5Db2xsYXBzZWRTdGF0ZURpZENo
YW5nZSwgdGhpcy5fbmF2aWdhdGlvblNpZGViYXJDb2xsYXBzZWRTdGF0ZURpZENoYW5nZSwgdGhp
cyk7CisgICAgICAgIH0KIAotICAgICAgICB0aGlzLl9zaG93RGV0YWlsc1NpZGViYXJJdGVtID0g
bmV3IFdlYkluc3BlY3Rvci5BY3RpdmF0ZUJ1dHRvbk5hdmlnYXRpb25JdGVtKCJ0b2dnbGUtZGV0
YWlscy1zaWRlYmFyIiwgc2hvd1Rvb2xUaXAsIGhpZGVUb29sVGlwLCAiSW1hZ2VzL1RvZ2dsZVJp
Z2h0U2lkZWJhci5zdmciLCAxNiwgMTYpOwotICAgICAgICB0aGlzLl9zaG93RGV0YWlsc1NpZGVi
YXJJdGVtLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkJ1dHRvbk5hdmlnYXRpb25JdGVt
LkV2ZW50LkNsaWNrZWQsIFdlYkluc3BlY3Rvci50b2dnbGVEZXRhaWxzU2lkZWJhciwgV2ViSW5z
cGVjdG9yKTsKLSAgICAgICAgdGhpcy5fc2hvd0RldGFpbHNTaWRlYmFySXRlbS5hY3RpdmF0ZWQg
PSAhV2ViSW5zcGVjdG9yLmRldGFpbHNTaWRlYmFyLmNvbGxhcHNlZDsKLSAgICAgICAgdGhpcy5f
c2hvd0RldGFpbHNTaWRlYmFySXRlbS5lbmFibGVkID0gZmFsc2U7CisgICAgICAgIGlmIChkZXRh
aWxzU2lkZWJhclBhbmVscyAmJiBkZXRhaWxzU2lkZWJhclBhbmVscy5sZW5ndGgpIHsKKyAgICAg
ICAgICAgIHZhciBzaG93VG9vbFRpcCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2hvdyB0aGUg
ZGV0YWlscyBzaWRlYmFyICglcykiKS5mb3JtYXQoV2ViSW5zcGVjdG9yLmRldGFpbHNTaWRlYmFy
S2V5Ym9hcmRTaG9ydGN1dC5kaXNwbGF5TmFtZSk7CisgICAgICAgICAgICB2YXIgaGlkZVRvb2xU
aXAgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkhpZGUgdGhlIGRldGFpbHMgc2lkZWJhciAoJXMp
IikuZm9ybWF0KFdlYkluc3BlY3Rvci5kZXRhaWxzU2lkZWJhcktleWJvYXJkU2hvcnRjdXQuZGlz
cGxheU5hbWUpOwogCi0gICAgICAgIHRoaXMuX2NvbnRlbnRCcm93c2VyLm5hdmlnYXRpb25CYXIu
YWRkTmF2aWdhdGlvbkl0ZW0obmV3IFdlYkluc3BlY3Rvci5EaXZpZGVyTmF2aWdhdGlvbkl0ZW0p
OwotICAgICAgICB0aGlzLl9jb250ZW50QnJvd3Nlci5uYXZpZ2F0aW9uQmFyLmFkZE5hdmlnYXRp
b25JdGVtKHRoaXMuX3Nob3dEZXRhaWxzU2lkZWJhckl0ZW0pOworICAgICAgICAgICAgdGhpcy5f
c2hvd0RldGFpbHNTaWRlYmFySXRlbSA9IG5ldyBXZWJJbnNwZWN0b3IuQWN0aXZhdGVCdXR0b25O
YXZpZ2F0aW9uSXRlbSgidG9nZ2xlLWRldGFpbHMtc2lkZWJhciIsIHNob3dUb29sVGlwLCBoaWRl
VG9vbFRpcCwgIkltYWdlcy9Ub2dnbGVSaWdodFNpZGViYXIuc3ZnIiwgMTYsIDE2KTsKKyAgICAg
ICAgICAgIHRoaXMuX3Nob3dEZXRhaWxzU2lkZWJhckl0ZW0uYWRkRXZlbnRMaXN0ZW5lcihXZWJJ
bnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uRXZlbnQuQ2xpY2tlZCwgV2ViSW5zcGVjdG9y
LnRvZ2dsZURldGFpbHNTaWRlYmFyLCBXZWJJbnNwZWN0b3IpOworICAgICAgICAgICAgdGhpcy5f
c2hvd0RldGFpbHNTaWRlYmFySXRlbS5hY3RpdmF0ZWQgPSAhV2ViSW5zcGVjdG9yLmRldGFpbHNT
aWRlYmFyLmNvbGxhcHNlZDsKKyAgICAgICAgICAgIHRoaXMuX3Nob3dEZXRhaWxzU2lkZWJhckl0
ZW0uZW5hYmxlZCA9IGZhbHNlOwogCi0gICAgICAgIFdlYkluc3BlY3Rvci5kZXRhaWxzU2lkZWJh
ci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5TaWRlYmFyLkV2ZW50LkNvbGxhcHNlZFN0
YXRlRGlkQ2hhbmdlLCB0aGlzLl9kZXRhaWxzU2lkZWJhckNvbGxhcHNlZFN0YXRlRGlkQ2hhbmdl
LCB0aGlzKTsKLSAgICAgICAgV2ViSW5zcGVjdG9yLmRldGFpbHNTaWRlYmFyLmFkZEV2ZW50TGlz
dGVuZXIoV2ViSW5zcGVjdG9yLlNpZGViYXIuRXZlbnQuU2lkZWJhclBhbmVsU2VsZWN0ZWQsIHRo
aXMuX2RldGFpbHNTaWRlYmFyUGFuZWxTZWxlY3RlZCwgdGhpcyk7Ci0gICAgfQorICAgICAgICAg
ICAgdGhpcy5fY29udGVudEJyb3dzZXIubmF2aWdhdGlvbkJhci5hZGROYXZpZ2F0aW9uSXRlbShu
ZXcgV2ViSW5zcGVjdG9yLkRpdmlkZXJOYXZpZ2F0aW9uSXRlbSk7CisgICAgICAgICAgICB0aGlz
Ll9jb250ZW50QnJvd3Nlci5uYXZpZ2F0aW9uQmFyLmFkZE5hdmlnYXRpb25JdGVtKHRoaXMuX3No
b3dEZXRhaWxzU2lkZWJhckl0ZW0pOwogCi0gICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRo
aXMuX2NvbnRlbnRCcm93c2VyLmVsZW1lbnQpOwotfTsKKyAgICAgICAgICAgIFdlYkluc3BlY3Rv
ci5kZXRhaWxzU2lkZWJhci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5TaWRlYmFyLkV2
ZW50LkNvbGxhcHNlZFN0YXRlRGlkQ2hhbmdlLCB0aGlzLl9kZXRhaWxzU2lkZWJhckNvbGxhcHNl
ZFN0YXRlRGlkQ2hhbmdlLCB0aGlzKTsKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5kZXRhaWxz
U2lkZWJhci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5TaWRlYmFyLkV2ZW50LlNpZGVi
YXJQYW5lbFNlbGVjdGVkLCB0aGlzLl9kZXRhaWxzU2lkZWJhclBhbmVsU2VsZWN0ZWQsIHRoaXMp
OworICAgICAgICB9CiAKLVdlYkluc3BlY3Rvci5Db250ZW50QnJvd3NlclRhYkNvbnRlbnRWaWV3
LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkNvbnRlbnRCcm93
c2VyVGFiQ29udGVudFZpZXcsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuVGFiQ29udGVu
dFZpZXcucHJvdG90eXBlLAorICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5f
Y29udGVudEJyb3dzZXIuZWxlbWVudCk7CisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBn
ZXQgY29udGVudEJyb3dzZXIoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbnRlbnRC
cm93c2VyOwotICAgIH0sCisgICAgfQogCi0gICAgc2hvd246IGZ1bmN0aW9uKCkKKyAgICBzaG93
bigpCiAgICAgewotICAgICAgICBXZWJJbnNwZWN0b3IuVGFiQ29udGVudFZpZXcucHJvdG90eXBl
LnNob3duLmNhbGwodGhpcyk7CisgICAgICAgIHN1cGVyLnNob3duKCk7CiAKICAgICAgICAgdGhp
cy5fY29udGVudEJyb3dzZXIuc2hvd24oKTsKIAogICAgICAgICBpZiAodGhpcy5uYXZpZ2F0aW9u
U2lkZWJhclBhbmVsICYmICF0aGlzLl9jb250ZW50QnJvd3Nlci5jdXJyZW50Q29udGVudFZpZXcp
CiAgICAgICAgICAgICB0aGlzLm5hdmlnYXRpb25TaWRlYmFyUGFuZWwuc2hvd0RlZmF1bHRDb250
ZW50VmlldygpOwotICAgIH0sCisgICAgfQogCi0gICAgaGlkZGVuOiBmdW5jdGlvbigpCisgICAg
aGlkZGVuKCkKICAgICB7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5UYWJDb250ZW50Vmlldy5wcm90
b3R5cGUuaGlkZGVuLmNhbGwodGhpcyk7CisgICAgICAgIHN1cGVyLmhpZGRlbigpOwogCiAgICAg
ICAgIHRoaXMuX2NvbnRlbnRCcm93c2VyLmhpZGRlbigpOwotICAgIH0sCisgICAgfQogCi0gICAg
Y2xvc2VkOiBmdW5jdGlvbigpCisgICAgY2xvc2VkKCkKICAgICB7Ci0gICAgICAgIFdlYkluc3Bl
Y3Rvci5UYWJDb250ZW50Vmlldy5wcm90b3R5cGUuY2xvc2VkLmNhbGwodGhpcyk7CisgICAgICAg
IHN1cGVyLmNsb3NlZCgpOwogCiAgICAgICAgIFdlYkluc3BlY3Rvci5uYXZpZ2F0aW9uU2lkZWJh
ci5yZW1vdmVFdmVudExpc3RlbmVyKG51bGwsIG51bGwsIHRoaXMpOwogICAgICAgICBXZWJJbnNw
ZWN0b3IuZGV0YWlsc1NpZGViYXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihudWxsLCBudWxsLCB0aGlz
KTsKQEAgLTExOSwyMSArMTIwLDIxIEBAIFdlYkluc3BlY3Rvci5Db250ZW50QnJvd3NlclRhYkNv
bnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMubmF2aWdhdGlvblNpZGVi
YXJQYW5lbC5jbG9zZWQoKTsKIAogICAgICAgICB0aGlzLl9jb250ZW50QnJvd3Nlci5jb250ZW50
Vmlld0NvbnRhaW5lci5jbG9zZUFsbENvbnRlbnRWaWV3cygpOwotICAgIH0sCisgICAgfQogCi0g
ICAgdXBkYXRlTGF5b3V0OiBmdW5jdGlvbigpCisgICAgdXBkYXRlTGF5b3V0KCkKICAgICB7Ci0g
ICAgICAgIFdlYkluc3BlY3Rvci5UYWJDb250ZW50Vmlldy5wcm90b3R5cGUudXBkYXRlTGF5b3V0
LmNhbGwodGhpcyk7CisgICAgICAgIHN1cGVyLnVwZGF0ZUxheW91dCgpOwogCiAgICAgICAgIHRo
aXMuX2NvbnRlbnRCcm93c2VyLnVwZGF0ZUxheW91dCgpOwotICAgIH0sCisgICAgfQogCiAgICAg
Z2V0IG1hbmFnZXNEZXRhaWxzU2lkZWJhclBhbmVscygpCiAgICAgewogICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICB9LAorICAgIH0KIAotICAgIHNob3dEZXRhaWxzU2lkZWJhclBhbmVsczogZnVu
Y3Rpb24oKQorICAgIHNob3dEZXRhaWxzU2lkZWJhclBhbmVscygpCiAgICAgewogICAgICAgICBp
ZiAoIXRoaXMudmlzaWJsZSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTE4MywzMiArMTg0LDMy
IEBAIFdlYkluc3BlY3Rvci5Db250ZW50QnJvd3NlclRhYkNvbnRlbnRWaWV3LnByb3RvdHlwZSA9
IHsKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICB0aGlzLl9zaG93RGV0YWlsc1NpZGVi
YXJJdGVtLmVuYWJsZWQgPSBXZWJJbnNwZWN0b3IuZGV0YWlsc1NpZGViYXIuc2lkZWJhclBhbmVs
cy5sZW5ndGg7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzaG93UmVwcmVzZW50ZWRPYmplY3Q6IGZ1
bmN0aW9uKHJlcHJlc2VudGVkT2JqZWN0LCBjb29raWUpCisgICAgc2hvd1JlcHJlc2VudGVkT2Jq
ZWN0KHJlcHJlc2VudGVkT2JqZWN0LCBjb29raWUpCiAgICAgewogICAgICAgICBpZiAodGhpcy5u
YXZpZ2F0aW9uU2lkZWJhclBhbmVsKQogICAgICAgICAgICAgdGhpcy5uYXZpZ2F0aW9uU2lkZWJh
clBhbmVsLmNhbmNlbFJlc3RvcmluZ1N0YXRlKCk7CiAgICAgICAgIHRoaXMuY29udGVudEJyb3dz
ZXIuc2hvd0NvbnRlbnRWaWV3Rm9yUmVwcmVzZW50ZWRPYmplY3QocmVwcmVzZW50ZWRPYmplY3Qs
IGNvb2tpZSk7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBDb250ZW50QnJvd3NlciBEZWxlZ2F0
ZQogCi0gICAgY29udGVudEJyb3dzZXJUcmVlRWxlbWVudEZvclJlcHJlc2VudGVkT2JqZWN0OiBm
dW5jdGlvbihjb250ZW50QnJvd3NlciwgcmVwcmVzZW50ZWRPYmplY3QpCisgICAgY29udGVudEJy
b3dzZXJUcmVlRWxlbWVudEZvclJlcHJlc2VudGVkT2JqZWN0KGNvbnRlbnRCcm93c2VyLCByZXBy
ZXNlbnRlZE9iamVjdCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLm5hdmlnYXRpb25TaWRlYmFy
UGFuZWwpCiAgICAgICAgICAgICByZXR1cm4gdGhpcy5uYXZpZ2F0aW9uU2lkZWJhclBhbmVsLnRy
ZWVFbGVtZW50Rm9yUmVwcmVzZW50ZWRPYmplY3QocmVwcmVzZW50ZWRPYmplY3QpOwogICAgICAg
ICByZXR1cm4gbnVsbDsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByaXZhdGUKIAotICAgIF9u
YXZpZ2F0aW9uU2lkZWJhckNvbGxhcHNlZFN0YXRlRGlkQ2hhbmdlOiBmdW5jdGlvbihldmVudCkK
KyAgICBfbmF2aWdhdGlvblNpZGViYXJDb2xsYXBzZWRTdGF0ZURpZENoYW5nZShldmVudCkKICAg
ICB7CiAgICAgICAgIHRoaXMuX3Nob3dOYXZpZ2F0aW9uU2lkZWJhckl0ZW0uYWN0aXZhdGVkID0g
IVdlYkluc3BlY3Rvci5uYXZpZ2F0aW9uU2lkZWJhci5jb2xsYXBzZWQ7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBfZGV0YWlsc1NpZGViYXJDb2xsYXBzZWRTdGF0ZURpZENoYW5nZTogZnVuY3Rpb24o
ZXZlbnQpCisgICAgX2RldGFpbHNTaWRlYmFyQ29sbGFwc2VkU3RhdGVEaWRDaGFuZ2UoZXZlbnQp
CiAgICAgewogICAgICAgICBpZiAoIXRoaXMudmlzaWJsZSkKICAgICAgICAgICAgIHJldHVybjsK
QEAgLTIyMCw5ICsyMjEsOSBAQCBXZWJJbnNwZWN0b3IuQ29udGVudEJyb3dzZXJUYWJDb250ZW50
Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgdGhpcy5k
ZXRhaWxzU2lkZWJhckNvbGxhcHNlZFNldHRpbmcudmFsdWUgPSBXZWJJbnNwZWN0b3IuZGV0YWls
c1NpZGViYXIuY29sbGFwc2VkOwotICAgIH0sCisgICAgfQogCi0gICAgX2RldGFpbHNTaWRlYmFy
UGFuZWxTZWxlY3RlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX2RldGFpbHNTaWRlYmFyUGFuZWxT
ZWxlY3RlZChldmVudCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy52aXNpYmxlKQogICAgICAg
ICAgICAgcmV0dXJuOwpAQCAtMjM0LDE4ICsyMzUsMTggQEAgV2ViSW5zcGVjdG9yLkNvbnRlbnRC
cm93c2VyVGFiQ29udGVudFZpZXcucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJuOwog
CiAgICAgICAgIHRoaXMuX2xhc3RTZWxlY3RlZERldGFpbHNTaWRlYmFyUGFuZWxTZXR0aW5nLnZh
bHVlID0gV2ViSW5zcGVjdG9yLmRldGFpbHNTaWRlYmFyLnNlbGVjdGVkU2lkZWJhclBhbmVsLmlk
ZW50aWZpZXI7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfY29udGVudEJyb3dzZXJDdXJyZW50Q29u
dGVudFZpZXdEaWRDaGFuZ2U6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9jb250ZW50QnJvd3NlckN1
cnJlbnRDb250ZW50Vmlld0RpZENoYW5nZShldmVudCkKICAgICB7CiAgICAgICAgIHZhciBjdXJy
ZW50Q29udGVudFZpZXcgPSB0aGlzLl9jb250ZW50QnJvd3Nlci5jdXJyZW50Q29udGVudFZpZXc7
CiAgICAgICAgIGlmICghY3VycmVudENvbnRlbnRWaWV3KQogICAgICAgICAgICAgcmV0dXJuOwog
CiAgICAgICAgIHRoaXMuX3JldmVhbEFuZFNlbGVjdFJlcHJlc2VudGVkT2JqZWN0SW5OYXZpZ2F0
aW9uU2lkZWJhcihjdXJyZW50Q29udGVudFZpZXcucmVwcmVzZW50ZWRPYmplY3QpOwotICAgIH0s
CisgICAgfQogCi0gICAgX3JldmVhbEFuZFNlbGVjdFJlcHJlc2VudGVkT2JqZWN0SW5OYXZpZ2F0
aW9uU2lkZWJhcjogZnVuY3Rpb24ocmVwcmVzZW50ZWRPYmplY3QpCisgICAgX3JldmVhbEFuZFNl
bGVjdFJlcHJlc2VudGVkT2JqZWN0SW5OYXZpZ2F0aW9uU2lkZWJhcihyZXByZXNlbnRlZE9iamVj
dCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5uYXZpZ2F0aW9uU2lkZWJhclBhbmVsKQogICAg
ICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvQ29udGVudEZsb3dET01UcmVlQ29udGVudFZpZXcuanMgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250ZW50Rmxvd0RPTVRyZWVDb250
ZW50Vmlldy5qcwppbmRleCBkYzE1NjhhNjUyNDkyNTMzZDMxYTAyNDE3M2RkNTE1NGEwNzU5Zjlh
Li4wOGMxZGVjZjE0OTQwZmRiNzExN2RiYTY3N2YzOTIwOWExYTg1NjI5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250ZW50Rmxvd0RPTVRy
ZWVDb250ZW50Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9Db250ZW50Rmxvd0RPTVRyZWVDb250ZW50Vmlldy5qcwpAQCAtMSw1ICsxLDYgQEAK
IC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNyw0
MSArMjgsMzkgQEAKICAqIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5Db250ZW50
Rmxvd0RPTVRyZWVDb250ZW50VmlldyA9IGZ1bmN0aW9uKGNvbnRlbnRGbG93KQorV2ViSW5zcGVj
dG9yLkNvbnRlbnRGbG93RE9NVHJlZUNvbnRlbnRWaWV3ID0gY2xhc3MgQ29udGVudEZsb3dET01U
cmVlQ29udGVudFZpZXcgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuRE9NVHJlZUNvbnRlbnRWaWV3CiB7
Ci0gICAgY29uc29sZS5hc3NlcnQoY29udGVudEZsb3cpOwotCi0gICAgV2ViSW5zcGVjdG9yLkRP
TVRyZWVDb250ZW50Vmlldy5jYWxsKHRoaXMsIGNvbnRlbnRGbG93KTsKKyAgICBjb25zdHJ1Y3Rv
cihjb250ZW50RmxvdykKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGNvbnRlbnRGbG93
KTsKIAotICAgIGNvbnRlbnRGbG93LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkNvbnRl
bnRGbG93LkV2ZW50LkNvbnRlbnROb2RlV2FzQWRkZWQsIHRoaXMuX2NvbnRlbnROb2RlV2FzQWRk
ZWQsIHRoaXMpOwotICAgIGNvbnRlbnRGbG93LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9y
LkNvbnRlbnRGbG93LkV2ZW50LkNvbnRlbnROb2RlV2FzUmVtb3ZlZCwgdGhpcy5fY29udGVudE5v
ZGVXYXNSZW1vdmVkLCB0aGlzKTsKKyAgICAgICAgc3VwZXIoY29udGVudEZsb3cpOwogCi0gICAg
dGhpcy5fY3JlYXRlQ29udGVudFRyZWVzKCk7Ci19OworICAgICAgICBjb250ZW50Rmxvdy5hZGRF
dmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Db250ZW50Rmxvdy5FdmVudC5Db250ZW50Tm9kZVdh
c0FkZGVkLCB0aGlzLl9jb250ZW50Tm9kZVdhc0FkZGVkLCB0aGlzKTsKKyAgICAgICAgY29udGVu
dEZsb3cuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQ29udGVudEZsb3cuRXZlbnQuQ29u
dGVudE5vZGVXYXNSZW1vdmVkLCB0aGlzLl9jb250ZW50Tm9kZVdhc1JlbW92ZWQsIHRoaXMpOwog
Ci1XZWJJbnNwZWN0b3IuQ29udGVudEZsb3dET01UcmVlQ29udGVudFZpZXcucHJvdG90eXBlID0g
ewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuQ29udGVudEZsb3dET01UcmVlQ29udGVu
dFZpZXcsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuRE9NVHJlZUNvbnRlbnRWaWV3LnBy
b3RvdHlwZSwKKyAgICAgICAgdGhpcy5fY3JlYXRlQ29udGVudFRyZWVzKCk7CisgICAgfQogCiAg
ICAgLy8gUHVibGljCiAKLSAgICBjbG9zZWQ6IGZ1bmN0aW9uKCkKKyAgICBjbG9zZWQoKQogICAg
IHsKICAgICAgICAgdGhpcy5yZXByZXNlbnRlZE9iamVjdC5yZW1vdmVFdmVudExpc3RlbmVyKG51
bGwsIG51bGwsIHRoaXMpOwogCi0gICAgICAgIFdlYkluc3BlY3Rvci5ET01UcmVlQ29udGVudFZp
ZXcucHJvdG90eXBlLmNsb3NlZC5jYWxsKHRoaXMpOwotICAgIH0sCisgICAgICAgIHN1cGVyLmNs
b3NlZCgpOworICAgIH0KIAotICAgIGdldFNlYXJjaENvbnRleHROb2RlczogZnVuY3Rpb24oY2Fs
bGJhY2spCisgICAgZ2V0U2VhcmNoQ29udGV4dE5vZGVzKGNhbGxiYWNrKQogICAgIHsKICAgICAg
ICAgY2FsbGJhY2sodGhpcy5kb21UcmVlT3V0bGluZS5jaGlsZHJlbi5tYXAoZnVuY3Rpb24odHJl
ZU91dGxpbmUpIHsKICAgICAgICAgICAgIHJldHVybiB0cmVlT3V0bGluZS5yZXByZXNlbnRlZE9i
amVjdC5pZDsKICAgICAgICAgfSkpOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJpdmF0ZQog
Ci0gICAgX2NyZWF0ZUNvbnRlbnRUcmVlczogZnVuY3Rpb24oKQorICAgIF9jcmVhdGVDb250ZW50
VHJlZXMoKQogICAgIHsKICAgICAgICAgdmFyIGNvbnRlbnROb2RlcyA9IHRoaXMucmVwcmVzZW50
ZWRPYmplY3QuY29udGVudE5vZGVzOwogICAgICAgICBmb3IgKHZhciBjb250ZW50Tm9kZSBvZiBj
b250ZW50Tm9kZXMpCkBAIC02OSw5ICs2OCw5IEBAIFdlYkluc3BlY3Rvci5Db250ZW50Rmxvd0RP
TVRyZWVDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgdmFyIGRvY3VtZW50VVJM
ID0gY29udGVudE5vZGVzLmxlbmd0aCA/IGNvbnRlbnROb2Rlc1swXS5vd25lckRvY3VtZW50LmRv
Y3VtZW50VVJMIDogbnVsbDsKICAgICAgICAgdGhpcy5fcmVzdG9yZVNlbGVjdGVkTm9kZUFmdGVy
VXBkYXRlKGRvY3VtZW50VVJMLCBjb250ZW50Tm9kZXNbMF0pOwotICAgIH0sCisgICAgfQogCi0g
ICAgX2NvbnRlbnROb2RlV2FzQWRkZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9jb250ZW50Tm9k
ZVdhc0FkZGVkKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIHRyZWVFbGVtZW50ID0gbmV3IFdl
Ykluc3BlY3Rvci5ET01UcmVlRWxlbWVudChldmVudC5kYXRhLm5vZGUpOwogICAgICAgICBpZiAo
IWV2ZW50LmRhdGEuYmVmb3JlKSB7CkBAIC04Niw5ICs4NSw5IEBAIFdlYkluc3BlY3Rvci5Db250
ZW50Rmxvd0RPTVRyZWVDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KGluZGV4ICE9PSAtMSk7CiAKICAgICAgICAgdGhpcy5kb21UcmVlT3V0bGluZS5pbnNl
cnRDaGlsZCh0cmVlRWxlbWVudCwgaW5kZXgpOwotICAgIH0sCisgICAgfQogCi0gICAgX2NvbnRl
bnROb2RlV2FzUmVtb3ZlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX2NvbnRlbnROb2RlV2FzUmVt
b3ZlZChldmVudCkKICAgICB7CiAgICAgICAgIHZhciB0cmVlRWxlbWVudCA9IHRoaXMuZG9tVHJl
ZU91dGxpbmUuZmluZFRyZWVFbGVtZW50KGV2ZW50LmRhdGEubm9kZSk7CiAgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KHRyZWVFbGVtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudFZpZXcuanMKaW5kZXggY2NkNTVlYjE2MmQz
YmI2NWYzZDdmNGIwYTMxMGZiNDAwOTk0MzFlZi4uNTgzZGJkYzYxYzQyMTY1ODA1ZTQ0NDY4YzI3
NWI0N2ZmZTE0OWNhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvQ29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudFZpZXcuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDExICsyMywyNyBAQAogICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5Db250ZW50
VmlldyA9IGZ1bmN0aW9uKHJlcHJlc2VudGVkT2JqZWN0LCBleHRyYUFyZ3VtZW50cykKK1dlYklu
c3BlY3Rvci5Db250ZW50VmlldyA9IGNsYXNzIENvbnRlbnRWaWV3IGV4dGVuZHMgV2ViSW5zcGVj
dG9yLk9iamVjdAogewotICAgIGlmICh0aGlzLmNvbnN0cnVjdG9yID09PSBXZWJJbnNwZWN0b3Iu
Q29udGVudFZpZXcpIHsKLSAgICAgICAgLy8gV2hlbiBpbnN0YW50aWF0ZWQgZGlyZWN0bHkgcmV0
dXJuIGFuIGluc3RhbmNlIG9mIGEgdHlwZS1iYXNlZCBjb25jcmV0ZSBzdWJjbGFzcy4KKyAgICBj
b25zdHJ1Y3RvcihyZXByZXNlbnRlZE9iamVjdCwgZXh0cmFBcmd1bWVudHMpCisgICAgeworICAg
ICAgICAvLyBDb25jcmV0ZSBvYmplY3QgaW5zdGFudGlhdGlvbi4KKyAgICAgICAgY29uc29sZS5h
c3NlcnQoIXJlcHJlc2VudGVkT2JqZWN0IHx8IFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5pc1Zp
ZXdhYmxlKHJlcHJlc2VudGVkT2JqZWN0KSwgcmVwcmVzZW50ZWRPYmplY3QpOworCisgICAgICAg
IHN1cGVyKCk7CisKKyAgICAgICAgdGhpcy5fcmVwcmVzZW50ZWRPYmplY3QgPSByZXByZXNlbnRl
ZE9iamVjdDsKKworICAgICAgICB0aGlzLl9lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiZGl2Iik7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZCgiY29udGVudC12
aWV3Iik7CiAKKyAgICAgICAgdGhpcy5fcGFyZW50Q29udGFpbmVyID0gbnVsbDsKKyAgICB9CisK
KyAgICAvLyBQdWJsaWMKKworICAgIHN0YXRpYyBjcmVhdGVGcm9tUmVwcmVzZW50ZWRPYmplY3Qo
cmVwcmVzZW50ZWRPYmplY3QsIGV4dHJhQXJndW1lbnRzKQorICAgIHsKICAgICAgICAgY29uc29s
ZS5hc3NlcnQocmVwcmVzZW50ZWRPYmplY3QpOwogCiAgICAgICAgIGlmIChyZXByZXNlbnRlZE9i
amVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5GcmFtZSkKQEAgLTU5LDcgKzc1LDcgQEAgV2Vi
SW5zcGVjdG9yLkNvbnRlbnRWaWV3ID0gZnVuY3Rpb24ocmVwcmVzZW50ZWRPYmplY3QsIGV4dHJh
QXJndW1lbnRzKQogCiAgICAgICAgIGlmIChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdl
Ykluc3BlY3Rvci5CcmVha3BvaW50KSB7CiAgICAgICAgICAgICBpZiAocmVwcmVzZW50ZWRPYmpl
Y3Quc291cmNlQ29kZUxvY2F0aW9uKQotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgV2ViSW5z
cGVjdG9yLkNvbnRlbnRWaWV3KHJlcHJlc2VudGVkT2JqZWN0LnNvdXJjZUNvZGVMb2NhdGlvbi5k
aXNwbGF5U291cmNlQ29kZSwgZXh0cmFBcmd1bWVudHMpOworICAgICAgICAgICAgICAgIHJldHVy
biBuZXcgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LmNyZWF0ZUZyb21SZXByZXNlbnRlZE9iamVj
dChyZXByZXNlbnRlZE9iamVjdC5zb3VyY2VDb2RlTG9jYXRpb24uZGlzcGxheVNvdXJjZUNvZGUs
IGV4dHJhQXJndW1lbnRzKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChyZXByZXNlbnRlZE9i
amVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5ET01TdG9yYWdlT2JqZWN0KQpAQCAtMTE5LDI0
NCArMTM1LDIyMSBAQCBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcgPSBmdW5jdGlvbihyZXByZXNl
bnRlZE9iamVjdCwgZXh0cmFBcmd1bWVudHMpCiAKICAgICAgICAgY29uc29sZS5hc3NlcnQoIVdl
Ykluc3BlY3Rvci5Db250ZW50Vmlldy5pc1ZpZXdhYmxlKHJlcHJlc2VudGVkT2JqZWN0KSk7CiAK
LSAgICAgICAgdGhyb3cgIkNhbid0IG1ha2UgYSBDb250ZW50VmlldyBmb3IgYW4gdW5rbm93biBy
ZXByZXNlbnRlZE9iamVjdC4iOworICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkNhbid0IG1ha2Ug
YSBDb250ZW50VmlldyBmb3IgYW4gdW5rbm93biByZXByZXNlbnRlZE9iamVjdC4iKTsKICAgICB9
CiAKLSAgICAvLyBDb25jcmV0ZSBvYmplY3QgaW5zdGFudGlhdGlvbi4KLSAgICBjb25zb2xlLmFz
c2VydCh0aGlzLmNvbnN0cnVjdG9yICE9PSBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcgJiYgdGhp
cyBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Db250ZW50Vmlldyk7Ci0gICAgY29uc29sZS5hc3Nl
cnQoIXJlcHJlc2VudGVkT2JqZWN0IHx8IFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5pc1ZpZXdh
YmxlKHJlcHJlc2VudGVkT2JqZWN0KSk7Ci0KLSAgICAvLyBGSVhNRTogQ29udmVydCB0aGlzIHRv
IGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcywgYW5kIGNhbGwgc3VwZXIoKS4KLSAgICAv
LyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7Ci0KLSAgICB0aGlzLl9yZXByZXNlbnRl
ZE9iamVjdCA9IHJlcHJlc2VudGVkT2JqZWN0OwotCi0gICAgdGhpcy5fZWxlbWVudCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFk
ZCgiY29udGVudC12aWV3Iik7Ci0KLSAgICB0aGlzLl9wYXJlbnRDb250YWluZXIgPSBudWxsOwot
fTsKLQotLy8gRklYTUU6IE1vdmUgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzIGFu
ZCB3ZSBjYW4gcmVtb3ZlIHRoaXMuCi1XZWJJbnNwZWN0b3IuT2JqZWN0LmRlcHJlY2F0ZWRBZGRD
b25zdHJ1Y3RvckZ1bmN0aW9ucyhXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcpOwotCi1XZWJJbnNw
ZWN0b3IuQ29udGVudFZpZXcuaXNWaWV3YWJsZSA9IGZ1bmN0aW9uKHJlcHJlc2VudGVkT2JqZWN0
KQotewotICAgIGlmIChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5G
cmFtZSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0IGlu
c3RhbmNlb2YgV2ViSW5zcGVjdG9yLlJlc291cmNlKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICBpZiAocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuU2NyaXB0KQot
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2Vv
ZiBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRpbmcpCi0gICAgICAgIHJldHVybiB0cnVlOwot
ICAgIGlmIChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5UaW1lbGlu
ZSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0IGluc3Rh
bmNlb2YgV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQpCi0gICAgICAgIHJldHVybiByZXByZXNlbnRl
ZE9iamVjdC5zb3VyY2VDb2RlTG9jYXRpb247Ci0gICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0IGlu
c3RhbmNlb2YgV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VPYmplY3QpCi0gICAgICAgIHJldHVybiB0
cnVlOwotICAgIGlmIChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5D
b29raWVTdG9yYWdlT2JqZWN0KQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAocmVwcmVz
ZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuRGF0YWJhc2VUYWJsZU9iamVjdCkK
LSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNl
b2YgV2ViSW5zcGVjdG9yLkRhdGFiYXNlT2JqZWN0KQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICBpZiAocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuSW5kZXhlZERh
dGFiYXNlT2JqZWN0U3RvcmUpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGlmIChyZXByZXNl
bnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5JbmRleGVkRGF0YWJhc2VPYmplY3RT
dG9yZUluZGV4KQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAocmVwcmVzZW50ZWRPYmpl
Y3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZUZyYW1lKQotICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJ
bnNwZWN0b3IuRE9NVHJlZSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKHJlcHJlc2Vu
dGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkRPTVNlYXJjaE1hdGNoT2JqZWN0KQot
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2Vv
ZiBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVNlYXJjaE1hdGNoT2JqZWN0KQotICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICBpZiAocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0
b3IuTG9nT2JqZWN0KQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAocmVwcmVzZW50ZWRP
YmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuQ29udGVudEZsb3cpCi0gICAgICAgIHJldHVy
biB0cnVlOwotICAgIGlmICh0eXBlb2YgcmVwcmVzZW50ZWRPYmplY3QgPT09ICJzdHJpbmciIHx8
IHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgU3RyaW5nKQotICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICByZXR1cm4gZmFsc2U7Ci19OwotCi1XZWJJbnNwZWN0b3IuQ29udGVudFZpZXcuRXZl
bnQgPSB7Ci0gICAgU2VsZWN0aW9uUGF0aENvbXBvbmVudHNEaWRDaGFuZ2U6ICJjb250ZW50LXZp
ZXctc2VsZWN0aW9uLXBhdGgtY29tcG9uZW50cy1kaWQtY2hhbmdlIiwKLSAgICBTdXBwbGVtZW50
YWxSZXByZXNlbnRlZE9iamVjdHNEaWRDaGFuZ2U6ICJjb250ZW50LXZpZXctc3VwcGxlbWVudGFs
LXJlcHJlc2VudGVkLW9iamVjdHMtZGlkLWNoYW5nZSIsCi0gICAgTnVtYmVyT2ZTZWFyY2hSZXN1
bHRzRGlkQ2hhbmdlOiAiY29udGVudC12aWV3LW51bWJlci1vZi1zZWFyY2gtcmVzdWx0cy1kaWQt
Y2hhbmdlIiwKLSAgICBOYXZpZ2F0aW9uSXRlbXNEaWRDaGFuZ2U6ICJjb250ZW50LXZpZXctbmF2
aWdhdGlvbi1pdGVtcy1kaWQtY2hhbmdlIgotfTsKLQotV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3
LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3
LAorICAgIHN0YXRpYyBpc1ZpZXdhYmxlKHJlcHJlc2VudGVkT2JqZWN0KQorICAgIHsKKyAgICAg
ICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkZyYW1lKQor
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGlmIChyZXByZXNlbnRlZE9iamVjdCBp
bnN0YW5jZW9mIFdlYkluc3BlY3Rvci5SZXNvdXJjZSkKKyAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgICAgICBpZiAocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3Iu
U2NyaXB0KQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGlmIChyZXByZXNlbnRl
ZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZGluZykKKyAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBpZiAocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFu
Y2VvZiBXZWJJbnNwZWN0b3IuVGltZWxpbmUpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkJyZWFr
cG9pbnQpCisgICAgICAgICAgICByZXR1cm4gcmVwcmVzZW50ZWRPYmplY3Quc291cmNlQ29kZUxv
Y2F0aW9uOworICAgICAgICBpZiAocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNw
ZWN0b3IuRE9NU3RvcmFnZU9iamVjdCkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICBpZiAocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuQ29va2llU3Rv
cmFnZU9iamVjdCkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBpZiAocmVwcmVz
ZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuRGF0YWJhc2VUYWJsZU9iamVjdCkK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBpZiAocmVwcmVzZW50ZWRPYmplY3Qg
aW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuRGF0YWJhc2VPYmplY3QpCisgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5z
cGVjdG9yLkluZGV4ZWREYXRhYmFzZU9iamVjdFN0b3JlKQorICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgIGlmIChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rv
ci5JbmRleGVkRGF0YWJhc2VPYmplY3RTdG9yZUluZGV4KQorICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgIGlmIChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rv
ci5BcHBsaWNhdGlvbkNhY2hlRnJhbWUpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkRPTVRyZWUp
CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0
IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkRPTVNlYXJjaE1hdGNoT2JqZWN0KQorICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICAgIGlmIChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9m
IFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlU2VhcmNoTWF0Y2hPYmplY3QpCisgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2Vi
SW5zcGVjdG9yLkxvZ09iamVjdCkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBp
ZiAocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuQ29udGVudEZsb3cp
CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgaWYgKHR5cGVvZiByZXByZXNlbnRl
ZE9iamVjdCA9PT0gInN0cmluZyIgfHwgcmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBTdHJp
bmcpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IHJlcHJlc2VudGVkT2JqZWN0KCkKICAgICB7
CiAgICAgICAgIHJldHVybiB0aGlzLl9yZXByZXNlbnRlZE9iamVjdDsKLSAgICB9LAorICAgIH0K
IAogICAgIGdldCBuYXZpZ2F0aW9uSXRlbXMoKQogICAgIHsKICAgICAgICAgLy8gTmF2aWdhdGlv
biBpdGVtcyB0aGF0IHdpbGwgYmUgZGlzcGxheWVkIGJ5IHRoZSBDb250ZW50QnJvd3NlciBpbnN0
YW5jZSwKICAgICAgICAgLy8gbWVhbnQgdG8gYmUgc3ViY2xhc3NlZC4gSW1wbGVtZW50ZWQgYnkg
c3ViY2xhc3Nlcy4KICAgICAgICAgcmV0dXJuIFtdOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0
IGVsZW1lbnQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQ7Ci0gICAgfSwK
KyAgICB9CiAKICAgICBnZXQgcGFyZW50Q29udGFpbmVyKCkKICAgICB7CiAgICAgICAgIHJldHVy
biB0aGlzLl9wYXJlbnRDb250YWluZXI7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgdmlzaWJs
ZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fdmlzaWJsZTsKLSAgICB9LAorICAgIH0K
IAogICAgIHNldCB2aXNpYmxlKGZsYWcpCiAgICAgewogICAgICAgICB0aGlzLl92aXNpYmxlID0g
ZmxhZzsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBzY3JvbGxhYmxlRWxlbWVudHMoKQogICAg
IHsKICAgICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViY2xhc3Nlcy4KICAgICAgICAgcmV0dXJu
IFtdOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHNob3VsZEtlZXBFbGVtZW50c1Njcm9sbGVk
VG9Cb3R0b20oKQogICAgIHsKICAgICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViY2xhc3Nlcy4K
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHNlbGVjdGlv
blBhdGhDb21wb25lbnRzKCkKICAgICB7CiAgICAgICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1YmNs
YXNzZXMuCiAgICAgICAgIHJldHVybiBbXTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBzdXBw
bGVtZW50YWxSZXByZXNlbnRlZE9iamVjdHMoKQogICAgIHsKICAgICAgICAgLy8gSW1wbGVtZW50
ZWQgYnkgc3ViY2xhc3Nlcy4KICAgICAgICAgcmV0dXJuIFtdOwotICAgIH0sCisgICAgfQogCiAg
ICAgZ2V0IHN1cHBvcnRzU3BsaXRDb250ZW50QnJvd3NlcigpCiAgICAgewogICAgICAgICAvLyBJ
bXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzLgogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9LAor
ICAgIH0KIAotICAgIHVwZGF0ZUxheW91dDogZnVuY3Rpb24oKQorICAgIHVwZGF0ZUxheW91dCgp
CiAgICAgewogICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzLgotICAgIH0sCisg
ICAgfQogCi0gICAgc2hvd246IGZ1bmN0aW9uKCkKKyAgICBzaG93bigpCiAgICAgewogICAgICAg
ICAvLyBJbXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzLgotICAgIH0sCisgICAgfQogCi0gICAgaGlk
ZGVuOiBmdW5jdGlvbigpCisgICAgaGlkZGVuKCkKICAgICB7CiAgICAgICAgIC8vIEltcGxlbWVu
dGVkIGJ5IHN1YmNsYXNzZXMuCi0gICAgfSwKKyAgICB9CiAKLSAgICBjbG9zZWQ6IGZ1bmN0aW9u
KCkKKyAgICBjbG9zZWQoKQogICAgIHsKICAgICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViY2xh
c3Nlcy4KLSAgICB9LAorICAgIH0KIAotICAgIHNhdmVUb0Nvb2tpZTogZnVuY3Rpb24oY29va2ll
KQorICAgIHNhdmVUb0Nvb2tpZShjb29raWUpCiAgICAgewogICAgICAgICAvLyBJbXBsZW1lbnRl
ZCBieSBzdWJjbGFzc2VzLgotICAgIH0sCisgICAgfQogCi0gICAgcmVzdG9yZUZyb21Db29raWU6
IGZ1bmN0aW9uKGNvb2tpZSkKKyAgICByZXN0b3JlRnJvbUNvb2tpZShjb29raWUpCiAgICAgewog
ICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzLgotICAgIH0sCisgICAgfQogCi0g
ICAgY2FuR29CYWNrOiBmdW5jdGlvbigpCisgICAgY2FuR29CYWNrKCkKICAgICB7CiAgICAgICAg
IC8vIEltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMuCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICB9LAorICAgIH0KIAotICAgIGNhbkdvRm9yd2FyZDogZnVuY3Rpb24oKQorICAgIGNhbkdvRm9y
d2FyZCgpCiAgICAgewogICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzLgogICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBnb0JhY2s6IGZ1bmN0aW9u
KCkKKyAgICBnb0JhY2soKQogICAgIHsKICAgICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViY2xh
c3Nlcy4KLSAgICB9LAorICAgIH0KIAotICAgIGdvRm9yd2FyZDogZnVuY3Rpb24oKQorICAgIGdv
Rm9yd2FyZCgpCiAgICAgewogICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzLgot
ICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHN1cHBvcnRzU2VhcmNoKCkKICAgICB7CiAgICAgICAg
IC8vIEltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMuCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICB9LAorICAgIH0KIAogICAgIGdldCBudW1iZXJPZlNlYXJjaFJlc3VsdHMoKQogICAgIHsKICAg
ICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViY2xhc3Nlcy4KICAgICAgICAgcmV0dXJuIG51bGw7
Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgaGFzUGVyZm9ybWVkU2VhcmNoKCkKICAgICB7CiAg
ICAgICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMuCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBhdXRvbWF0aWNhbGx5UmV2ZWFsRmlyc3RTZWFy
Y2hSZXN1bHQocmV2ZWFsKQogICAgIHsKICAgICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViY2xh
c3Nlcy4KLSAgICB9LAorICAgIH0KIAotICAgIHBlcmZvcm1TZWFyY2g6IGZ1bmN0aW9uKHF1ZXJ5
KQorICAgIHBlcmZvcm1TZWFyY2gocXVlcnkpCiAgICAgewogICAgICAgICAvLyBJbXBsZW1lbnRl
ZCBieSBzdWJjbGFzc2VzLgotICAgIH0sCisgICAgfQogCi0gICAgc2VhcmNoQ2xlYXJlZDogZnVu
Y3Rpb24oKQorICAgIHNlYXJjaENsZWFyZWQoKQogICAgIHsKICAgICAgICAgLy8gSW1wbGVtZW50
ZWQgYnkgc3ViY2xhc3Nlcy4KLSAgICB9LAorICAgIH0KIAotICAgIHNlYXJjaFF1ZXJ5V2l0aFNl
bGVjdGlvbjogZnVuY3Rpb24oKQorICAgIHNlYXJjaFF1ZXJ5V2l0aFNlbGVjdGlvbigpCiAgICAg
ewogICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzLgogICAgICAgICByZXR1cm4g
bnVsbDsKLSAgICB9LAorICAgIH0KIAotICAgIHJldmVhbFByZXZpb3VzU2VhcmNoUmVzdWx0OiBm
dW5jdGlvbihjaGFuZ2VGb2N1cykKKyAgICByZXZlYWxQcmV2aW91c1NlYXJjaFJlc3VsdChjaGFu
Z2VGb2N1cykKICAgICB7CiAgICAgICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMuCi0g
ICAgfSwKKyAgICB9CiAKLSAgICByZXZlYWxOZXh0U2VhcmNoUmVzdWx0OiBmdW5jdGlvbihjaGFu
Z2VGb2N1cykKKyAgICByZXZlYWxOZXh0U2VhcmNoUmVzdWx0KGNoYW5nZUZvY3VzKQogICAgIHsK
ICAgICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViY2xhc3Nlcy4KICAgICB9CiB9OwogCi1XZWJJ
bnNwZWN0b3IuQ29udGVudFZpZXcucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5P
YmplY3QucHJvdG90eXBlOworV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LkV2ZW50ID0geworICAg
IFNlbGVjdGlvblBhdGhDb21wb25lbnRzRGlkQ2hhbmdlOiAiY29udGVudC12aWV3LXNlbGVjdGlv
bi1wYXRoLWNvbXBvbmVudHMtZGlkLWNoYW5nZSIsCisgICAgU3VwcGxlbWVudGFsUmVwcmVzZW50
ZWRPYmplY3RzRGlkQ2hhbmdlOiAiY29udGVudC12aWV3LXN1cHBsZW1lbnRhbC1yZXByZXNlbnRl
ZC1vYmplY3RzLWRpZC1jaGFuZ2UiLAorICAgIE51bWJlck9mU2VhcmNoUmVzdWx0c0RpZENoYW5n
ZTogImNvbnRlbnQtdmlldy1udW1iZXItb2Ytc2VhcmNoLXJlc3VsdHMtZGlkLWNoYW5nZSIsCisg
ICAgTmF2aWdhdGlvbkl0ZW1zRGlkQ2hhbmdlOiAiY29udGVudC12aWV3LW5hdmlnYXRpb24taXRl
bXMtZGlkLWNoYW5nZSIKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9Db250ZW50Vmlld0NvbnRhaW5lci5qcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRWaWV3Q29udGFpbmVyLmpzCmluZGV4
IDY2NDIxZDMxZjA5NWZhMzE2NDJhMGFmZDRjM2Y3MTk4YzM2ODIxMDIuLjFmZDE1YWY0NGRiMWIz
NjY2M2ZjMjdmYzRlNmFhZjg0ZjFlYjViM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRWaWV3Q29udGFpbmVyLmpzCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRWaWV3Q29udGFp
bmVyLmpzCkBAIC0xMDYsNyArMTA2LDcgQEAgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29udGFp
bmVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybiBudWxsOwogCiAgICAgICAgIC8v
IE5vIGV4aXN0aW5nIGNvbnRlbnQgdmlldyBmb3VuZCwgbWFrZSBhIG5ldyBvbmUuCi0gICAgICAg
IGNvbnRlbnRWaWV3ID0gbmV3IFdlYkluc3BlY3Rvci5Db250ZW50VmlldyhyZXByZXNlbnRlZE9i
amVjdCwgZXh0cmFBcmd1bWVudHMpOworICAgICAgICBjb250ZW50VmlldyA9IFdlYkluc3BlY3Rv
ci5Db250ZW50Vmlldy5jcmVhdGVGcm9tUmVwcmVzZW50ZWRPYmplY3QocmVwcmVzZW50ZWRPYmpl
Y3QsIGV4dHJhQXJndW1lbnRzKTsKIAogICAgICAgICBjb25zb2xlLmFzc2VydChjb250ZW50Vmll
dywgIlVua25vd24gcmVwcmVzZW50ZWRPYmplY3QiLCByZXByZXNlbnRlZE9iamVjdCk7CiAgICAg
ICAgIGlmICghY29udGVudFZpZXcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9Db29raWVTdG9yYWdlQ29udGVudFZpZXcuanMgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db29raWVTdG9yYWdlQ29udGVudFZp
ZXcuanMKaW5kZXggZTU5ZjI0ZWFhMGY0NGUxOTljMTQzNzY5YmE2OTk2ZGI4ZDIzYTlmYS4uOTZh
MmMwMzJiM2E3Y2ZkMTBmYmZiNGI2N2VkNzBmOGI0MWJlOGU0ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29va2llU3RvcmFnZUNvbnRlbnRW
aWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0Nv
b2tpZVN0b3JhZ2VDb250ZW50Vmlldy5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsMjEgKzIzLDM5IEBACiAgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkNvb2tpZVN0b3JhZ2VD
b250ZW50VmlldyA9IGZ1bmN0aW9uKHJlcHJlc2VudGVkT2JqZWN0KQorV2ViSW5zcGVjdG9yLkNv
b2tpZVN0b3JhZ2VDb250ZW50VmlldyA9IGNsYXNzIENvb2tpZVN0b3JhZ2VDb250ZW50VmlldyBl
eHRlbmRzIFdlYkluc3BlY3Rvci5Db250ZW50VmlldwogewotICAgIFdlYkluc3BlY3Rvci5Db250
ZW50Vmlldy5jYWxsKHRoaXMsIHJlcHJlc2VudGVkT2JqZWN0KTsKLQotICAgIHRoaXMuZWxlbWVu
dC5jbGFzc0xpc3QuYWRkKCJjb29raWUtc3RvcmFnZSIpOworICAgIGNvbnN0cnVjdG9yKHJlcHJl
c2VudGVkT2JqZWN0KQorICAgIHsKKyAgICAgICAgc3VwZXIocmVwcmVzZW50ZWRPYmplY3QpOwog
Ci0gICAgdGhpcy51cGRhdGUoKTsKLX07CisgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3Qu
YWRkKCJjb29raWUtc3RvcmFnZSIpOwogCi1XZWJJbnNwZWN0b3IuQ29va2llU3RvcmFnZUNvbnRl
bnRWaWV3LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkNvb2tp
ZVN0b3JhZ2VDb250ZW50VmlldywKKyAgICAgICAgdGhpcy51cGRhdGUoKTsKKyAgICB9OwogCiAg
ICAgLy8gUHVibGljCiAKLSAgICB1cGRhdGU6IGZ1bmN0aW9uKCkKKworICAgIHN0YXRpYyBjb29r
aWVNYXRjaGVzUmVzb3VyY2VVUkwoY29va2llLCByZXNvdXJjZVVSTCkKKyAgICB7CisgICAgICAg
IHZhciBwYXJzZWRVUkwgPSBwYXJzZVVSTChyZXNvdXJjZVVSTCk7CisgICAgICAgIGlmICghcGFy
c2VkVVJMIHx8ICFXZWJJbnNwZWN0b3IuQ29va2llU3RvcmFnZUNvbnRlbnRWaWV3LmNvb2tpZURv
bWFpbk1hdGNoZXNSZXNvdXJjZURvbWFpbihjb29raWUuZG9tYWluLCBwYXJzZWRVUkwuaG9zdCkp
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgcmV0dXJuIChwYXJzZWRVUkwu
cGF0aC5zdGFydHNXaXRoKGNvb2tpZS5wYXRoKQorICAgICAgICAgICAgJiYgKCFjb29raWUucG9y
dCB8fCBwYXJzZWRVUkwucG9ydCA9PT0gY29va2llLnBvcnQpCisgICAgICAgICAgICAmJiAoIWNv
b2tpZS5zZWN1cmUgfHwgcGFyc2VkVVJMLnNjaGVtZSA9PT0gImh0dHBzIikpOworICAgIH0KKwor
ICAgIHN0YXRpYyBjb29raWVEb21haW5NYXRjaGVzUmVzb3VyY2VEb21haW4oY29va2llRG9tYWlu
LCByZXNvdXJjZURvbWFpbikKKyAgICB7CisgICAgICAgIGlmIChjb29raWVEb21haW4uY2hhckF0
KDApICE9PSAiLiIpCisgICAgICAgICAgICByZXR1cm4gcmVzb3VyY2VEb21haW4gPT09IGNvb2tp
ZURvbWFpbjsKKyAgICAgICAgcmV0dXJuICEhcmVzb3VyY2VEb21haW4ubWF0Y2gobmV3IFJlZ0V4
cCgiXihbXlxcLl0rXFwuKT8iICsgY29va2llRG9tYWluLnN1YnN0cmluZygxKS5lc2NhcGVGb3JS
ZWdFeHAoKSArICIkIiksICJpIik7CisgICAgfQorCisgICAgdXBkYXRlKCkKICAgICB7CiAgICAg
ICAgIGZ1bmN0aW9uIGNhbGxiYWNrKGVycm9yLCBjb29raWVzKQogICAgICAgICB7CkBAIC00OSwz
MCArNjcsMzAgQEAgV2ViSW5zcGVjdG9yLkNvb2tpZVN0b3JhZ2VDb250ZW50Vmlldy5wcm90b3R5
cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICBQYWdlQWdlbnQuZ2V0Q29va2llcyhjYWxsYmFj
ay5iaW5kKHRoaXMpKTsKLSAgICB9LAorICAgIH0KIAotICAgIHVwZGF0ZUxheW91dDogZnVuY3Rp
b24oKQorICAgIHVwZGF0ZUxheW91dCgpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fZGF0YUdy
aWQpCiAgICAgICAgICAgICB0aGlzLl9kYXRhR3JpZC51cGRhdGVMYXlvdXQoKTsKLSAgICB9LAor
ICAgIH0KIAotICAgIHNhdmVUb0Nvb2tpZTogZnVuY3Rpb24oY29va2llKQorICAgIHNhdmVUb0Nv
b2tpZShjb29raWUpCiAgICAgewogICAgICAgICBjb29raWUudHlwZSA9IFdlYkluc3BlY3Rvci5D
b250ZW50Vmlld0Nvb2tpZVR5cGUuQ29va2llU3RvcmFnZTsKICAgICAgICAgY29va2llLmhvc3Qg
PSB0aGlzLnJlcHJlc2VudGVkT2JqZWN0Lmhvc3Q7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQg
c2Nyb2xsYWJsZUVsZW1lbnRzKCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fZGF0YUdyaWQp
CiAgICAgICAgICAgICByZXR1cm4gW107CiAgICAgICAgIHJldHVybiBbdGhpcy5fZGF0YUdyaWQu
c2Nyb2xsQ29udGFpbmVyXTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByaXZhdGUKIAotICAg
IF9yZWJ1aWxkVGFibGU6IGZ1bmN0aW9uKCkKKyAgICBfcmVidWlsZFRhYmxlKCkKICAgICB7CiAg
ICAgICAgIC8vIEZJWE1FOiBJZiB0aGVyZSBhcmUgbm8gY29va2llcywgZG8gd2Ugd2FudCB0byBz
aG93IGFuIGVtcHR5IGRhdGFncmlkLCBvciBkbyBzb21ldGhpbmcgbGlrZSB0aGUgb2xkCiAgICAg
ICAgIC8vIGluc3BlY3RvciBhbmQgc2hvdyBzb21lIHRleHQgc2F5aW5nIHRoZXJlIGFyZSBubyBj
b29raWVzPwpAQCAtMTQ3LDkgKzE2NSw5IEBAIFdlYkluc3BlY3Rvci5Db29raWVTdG9yYWdlQ29u
dGVudFZpZXcucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgdGhpcy5fZGF0YUdy
aWQuc29ydENvbHVtbklkZW50aWZpZXIgPSAibmFtZSI7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBf
ZmlsdGVyQ29va2llczogZnVuY3Rpb24oY29va2llcykKKyAgICBfZmlsdGVyQ29va2llcyhjb29r
aWVzKQogICAgIHsKICAgICAgICAgdmFyIGZpbHRlcmVkQ29va2llcyA9IFtdOwogICAgICAgICB2
YXIgcmVzb3VyY2VzRm9yRG9tYWluID0gW107CkBAIC0xNzIsNyArMTkwLDcgQEAgV2ViSW5zcGVj
dG9yLkNvb2tpZVN0b3JhZ2VDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBjb29raWVzLmxlbmd0aDsgKytpKSB7CiAgICAgICAgICAgICBmb3Ig
KHZhciBqID0gMDsgaiA8IHJlc291cmNlc0ZvckRvbWFpbi5sZW5ndGg7ICsraikgewotICAgICAg
ICAgICAgICAgIGlmIChXZWJJbnNwZWN0b3IuY29va2llTWF0Y2hlc1Jlc291cmNlVVJMKGNvb2tp
ZXNbaV0sIHJlc291cmNlc0ZvckRvbWFpbltqXSkpIHsKKyAgICAgICAgICAgICAgICBpZiAoV2Vi
SW5zcGVjdG9yLkNvb2tpZVN0b3JhZ2VDb250ZW50Vmlldy5jb29raWVNYXRjaGVzUmVzb3VyY2VV
UkwoY29va2llc1tpXSwgcmVzb3VyY2VzRm9yRG9tYWluW2pdKSkgewogICAgICAgICAgICAgICAg
ICAgICBmaWx0ZXJlZENvb2tpZXMucHVzaChjb29raWVzW2ldKTsKICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQpAQCAtMTgwLDkgKzE5OCw5IEBAIFdlYkluc3Bl
Y3Rvci5Db29raWVTdG9yYWdlQ29udGVudFZpZXcucHJvdG90eXBlID0gewogICAgICAgICB9CiAK
ICAgICAgICAgcmV0dXJuIGZpbHRlcmVkQ29va2llczsKLSAgICB9LAorICAgIH0KIAotICAgIF9z
b3J0RGF0YUdyaWQ6IGZ1bmN0aW9uKCkKKyAgICBfc29ydERhdGFHcmlkKCkKICAgICB7CiAgICAg
ICAgIGZ1bmN0aW9uIGxvY2FsZUNvbXBhcmUoZmllbGQsIG5vZGVBLCBub2RlQikKICAgICAgICAg
ewpAQCAtMjIwLDkgKzIzOCw5IEBAIFdlYkluc3BlY3Rvci5Db29raWVTdG9yYWdlQ29udGVudFZp
ZXcucHJvdG90eXBlID0gewogCiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGNvbXBhcmF0b3IpOwog
ICAgICAgICB0aGlzLl9kYXRhR3JpZC5zb3J0Tm9kZXMoY29tcGFyYXRvcik7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBfZGVsZXRlQ2FsbGJhY2s6IGZ1bmN0aW9uKG5vZGUpCisgICAgX2RlbGV0ZUNh
bGxiYWNrKG5vZGUpCiAgICAgewogICAgICAgICBpZiAoIW5vZGUgfHwgIW5vZGUuY29va2llKQog
ICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjM3LDI2ICsyNTUsNiBAQCBXZWJJbnNwZWN0b3IuQ29v
a2llU3RvcmFnZUNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICB9CiB9OwogCi1XZWJJbnNw
ZWN0b3IuQ29va2llU3RvcmFnZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJ
bnNwZWN0b3IuQ29udGVudFZpZXcucHJvdG90eXBlOwotCi1XZWJJbnNwZWN0b3IuY29va2llTWF0
Y2hlc1Jlc291cmNlVVJMID0gZnVuY3Rpb24oY29va2llLCByZXNvdXJjZVVSTCkKLXsKLSAgICB2
YXIgcGFyc2VkVVJMID0gcGFyc2VVUkwocmVzb3VyY2VVUkwpOwotICAgIGlmICghcGFyc2VkVVJM
IHx8ICFXZWJJbnNwZWN0b3IuY29va2llRG9tYWluTWF0Y2hlc1Jlc291cmNlRG9tYWluKGNvb2tp
ZS5kb21haW4sIHBhcnNlZFVSTC5ob3N0KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAg
cmV0dXJuIChwYXJzZWRVUkwucGF0aC5zdGFydHNXaXRoKGNvb2tpZS5wYXRoKQotICAgICAgICAm
JiAoIWNvb2tpZS5wb3J0IHx8IHBhcnNlZFVSTC5wb3J0ID09PSBjb29raWUucG9ydCkKLSAgICAg
ICAgJiYgKCFjb29raWUuc2VjdXJlIHx8IHBhcnNlZFVSTC5zY2hlbWUgPT09ICJodHRwcyIpKTsK
LX0KLQotV2ViSW5zcGVjdG9yLmNvb2tpZURvbWFpbk1hdGNoZXNSZXNvdXJjZURvbWFpbiA9IGZ1
bmN0aW9uKGNvb2tpZURvbWFpbiwgcmVzb3VyY2VEb21haW4pCi17Ci0gICAgaWYgKGNvb2tpZURv
bWFpbi5jaGFyQXQoMCkgIT09ICIuIikKLSAgICAgICAgcmV0dXJuIHJlc291cmNlRG9tYWluID09
PSBjb29raWVEb21haW47Ci0gICAgcmV0dXJuICEhcmVzb3VyY2VEb21haW4ubWF0Y2gobmV3IFJl
Z0V4cCgiXihbXlxcLl0rXFwuKT8iICsgY29va2llRG9tYWluLnN1YnN0cmluZygxKS5lc2NhcGVG
b3JSZWdFeHAoKSArICIkIiksICJpIik7Ci19Ci0KIFdlYkluc3BlY3Rvci5Db29raWVUeXBlID0g
ewogICAgIFJlcXVlc3Q6IDAsCiAgICAgUmVzcG9uc2U6IDEKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVN0b3JhZ2VDb250ZW50Vmlldy5q
cyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVN0b3JhZ2VD
b250ZW50Vmlldy5qcwppbmRleCA0YmNhZjE1YjExYjE5MzlkMGZmNjhmNTNmZjdmZjlmNTkzNjgz
MDJlLi5kMmRjOThiMDEwYjVjODNhOTRjYjBjNTFiNDY4M2U0ODA4MDBjODhhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01TdG9yYWdlQ29u
dGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvRE9NU3RvcmFnZUNvbnRlbnRWaWV3LmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMTMgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTI0LDY0ICsyNCw1NyBAQAogICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5ET01TdG9yYWdlQ29u
dGVudFZpZXcgPSBmdW5jdGlvbihyZXByZXNlbnRlZE9iamVjdCkKK1dlYkluc3BlY3Rvci5ET01T
dG9yYWdlQ29udGVudFZpZXcgPSBjbGFzcyBET01TdG9yYWdlQ29udGVudFZpZXcgZXh0ZW5kcyBX
ZWJJbnNwZWN0b3IuQ29udGVudFZpZXcKIHsKLSAgICBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcu
Y2FsbCh0aGlzLCByZXByZXNlbnRlZE9iamVjdCk7Ci0KLSAgICB0aGlzLmVsZW1lbnQuY2xhc3NM
aXN0LmFkZCgiZG9tLXN0b3JhZ2UiKTsKLQotICAgIHJlcHJlc2VudGVkT2JqZWN0LmFkZEV2ZW50
TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VPYmplY3QuRXZlbnQuSXRlbXNDbGVhcmVk
LCB0aGlzLml0ZW1zQ2xlYXJlZCwgdGhpcyk7Ci0gICAgcmVwcmVzZW50ZWRPYmplY3QuYWRkRXZl
bnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZU9iamVjdC5FdmVudC5JdGVtQWRkZWQs
IHRoaXMuaXRlbUFkZGVkLCB0aGlzKTsKLSAgICByZXByZXNlbnRlZE9iamVjdC5hZGRFdmVudExp
c3RlbmVyKFdlYkluc3BlY3Rvci5ET01TdG9yYWdlT2JqZWN0LkV2ZW50Lkl0ZW1SZW1vdmVkLCB0
aGlzLml0ZW1SZW1vdmVkLCB0aGlzKTsKLSAgICByZXByZXNlbnRlZE9iamVjdC5hZGRFdmVudExp
c3RlbmVyKFdlYkluc3BlY3Rvci5ET01TdG9yYWdlT2JqZWN0LkV2ZW50Lkl0ZW1VcGRhdGVkLCB0
aGlzLml0ZW1VcGRhdGVkLCB0aGlzKTsKLQotICAgIHZhciBjb2x1bW5zID0ge307Ci0gICAgY29s
dW1ucy5rZXkgPSB7dGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiS2V5IiksIHNvcnRhYmxl
OiB0cnVlfTsKLSAgICBjb2x1bW5zLnZhbHVlID0ge3RpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIlZhbHVlIiksIHNvcnRhYmxlOiB0cnVlfTsKKyAgICBjb25zdHJ1Y3RvcihyZXByZXNlbnRl
ZE9iamVjdCkKKyAgICB7CisgICAgICAgIHN1cGVyKHJlcHJlc2VudGVkT2JqZWN0KTsKIAotICAg
IHRoaXMuX2RhdGFHcmlkID0gbmV3IFdlYkluc3BlY3Rvci5EYXRhR3JpZChjb2x1bW5zLCB0aGlz
Ll9lZGl0aW5nQ2FsbGJhY2suYmluZCh0aGlzKSwgdGhpcy5fZGVsZXRlQ2FsbGJhY2suYmluZCh0
aGlzKSk7Ci0gICAgdGhpcy5fZGF0YUdyaWQuc29ydE9yZGVyID0gV2ViSW5zcGVjdG9yLkRhdGFH
cmlkLlNvcnRPcmRlci5Bc2NlbmRpbmc7Ci0gICAgdGhpcy5fZGF0YUdyaWQuc29ydENvbHVtbklk
ZW50aWZpZXIgPSAia2V5IjsKLSAgICB0aGlzLl9kYXRhR3JpZC5hZGRFdmVudExpc3RlbmVyKFdl
Ykluc3BlY3Rvci5EYXRhR3JpZC5FdmVudC5Tb3J0Q2hhbmdlZCwgdGhpcy5fc29ydERhdGFHcmlk
LCB0aGlzKTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoImRvbS1zdG9yYWdl
Iik7CiAKLSAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fZGF0YUdyaWQuZWxlbWVu
dCk7CisgICAgICAgIHJlcHJlc2VudGVkT2JqZWN0LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVj
dG9yLkRPTVN0b3JhZ2VPYmplY3QuRXZlbnQuSXRlbXNDbGVhcmVkLCB0aGlzLml0ZW1zQ2xlYXJl
ZCwgdGhpcyk7CisgICAgICAgIHJlcHJlc2VudGVkT2JqZWN0LmFkZEV2ZW50TGlzdGVuZXIoV2Vi
SW5zcGVjdG9yLkRPTVN0b3JhZ2VPYmplY3QuRXZlbnQuSXRlbUFkZGVkLCB0aGlzLml0ZW1BZGRl
ZCwgdGhpcyk7CisgICAgICAgIHJlcHJlc2VudGVkT2JqZWN0LmFkZEV2ZW50TGlzdGVuZXIoV2Vi
SW5zcGVjdG9yLkRPTVN0b3JhZ2VPYmplY3QuRXZlbnQuSXRlbVJlbW92ZWQsIHRoaXMuaXRlbVJl
bW92ZWQsIHRoaXMpOworICAgICAgICByZXByZXNlbnRlZE9iamVjdC5hZGRFdmVudExpc3RlbmVy
KFdlYkluc3BlY3Rvci5ET01TdG9yYWdlT2JqZWN0LkV2ZW50Lkl0ZW1VcGRhdGVkLCB0aGlzLml0
ZW1VcGRhdGVkLCB0aGlzKTsKIAotICAgIHRoaXMuX3BvcHVsYXRlKCk7Ci19OworICAgICAgICB2
YXIgY29sdW1ucyA9IHt9OworICAgICAgICBjb2x1bW5zLmtleSA9IHt0aXRsZTogV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJLZXkiKSwgc29ydGFibGU6IHRydWV9OworICAgICAgICBjb2x1bW5zLnZh
bHVlID0ge3RpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlZhbHVlIiksIHNvcnRhYmxlOiB0
cnVlfTsKIAotV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VDb250ZW50Vmlldy5EdXBsaWNhdGVLZXlT
dHlsZUNsYXNzTmFtZSA9ICJkdXBsaWNhdGUta2V5IjsKLVdlYkluc3BlY3Rvci5ET01TdG9yYWdl
Q29udGVudFZpZXcuTWlzc2luZ0tleVN0eWxlQ2xhc3NOYW1lID0gIm1pc3Npbmcta2V5IjsKLVdl
Ykluc3BlY3Rvci5ET01TdG9yYWdlQ29udGVudFZpZXcuTWlzc2luZ1ZhbHVlU3R5bGVDbGFzc05h
bWUgPSAibWlzc2luZy12YWx1ZSI7CisgICAgICAgIHRoaXMuX2RhdGFHcmlkID0gbmV3IFdlYklu
c3BlY3Rvci5EYXRhR3JpZChjb2x1bW5zLCB0aGlzLl9lZGl0aW5nQ2FsbGJhY2suYmluZCh0aGlz
KSwgdGhpcy5fZGVsZXRlQ2FsbGJhY2suYmluZCh0aGlzKSk7CisgICAgICAgIHRoaXMuX2RhdGFH
cmlkLnNvcnRPcmRlciA9IFdlYkluc3BlY3Rvci5EYXRhR3JpZC5Tb3J0T3JkZXIuQXNjZW5kaW5n
OworICAgICAgICB0aGlzLl9kYXRhR3JpZC5zb3J0Q29sdW1uSWRlbnRpZmllciA9ICJrZXkiOwor
ICAgICAgICB0aGlzLl9kYXRhR3JpZC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5EYXRh
R3JpZC5FdmVudC5Tb3J0Q2hhbmdlZCwgdGhpcy5fc29ydERhdGFHcmlkLCB0aGlzKTsKIAorICAg
ICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fZGF0YUdyaWQuZWxlbWVudCk7CiAK
LVdlYkluc3BlY3Rvci5ET01TdG9yYWdlQ29udGVudFZpZXcucHJvdG90eXBlID0gewotICAgIGNv
bnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZUNvbnRlbnRWaWV3LAotICAgIF9fcHJv
dG9fXzogV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LnByb3RvdHlwZSwKKyAgICAgICAgdGhpcy5f
cG9wdWxhdGUoKTsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAotICAgIHNhdmVUb0Nvb2tpZTog
ZnVuY3Rpb24oY29va2llKQorICAgIHNhdmVUb0Nvb2tpZShjb29raWUpCiAgICAgewogICAgICAg
ICBjb29raWUudHlwZSA9IFdlYkluc3BlY3Rvci5Db250ZW50Vmlld0Nvb2tpZVR5cGUuRE9NU3Rv
cmFnZTsKICAgICAgICAgY29va2llLmlzTG9jYWxTdG9yYWdlID0gdGhpcy5yZXByZXNlbnRlZE9i
amVjdC5pc0xvY2FsU3RvcmFnZSgpOwogICAgICAgICBjb29raWUuaG9zdCA9IHRoaXMucmVwcmVz
ZW50ZWRPYmplY3QuaG9zdDsKLSAgICB9LAorICAgIH0KIAotICAgIGl0ZW1zQ2xlYXJlZDogZnVu
Y3Rpb24oZXZlbnQpCisgICAgaXRlbXNDbGVhcmVkKGV2ZW50KQogICAgIHsKICAgICAgICAgdGhp
cy5fZGF0YUdyaWQucmVtb3ZlQ2hpbGRyZW4oKTsKICAgICAgICAgdGhpcy5fZGF0YUdyaWQuYWRk
UGxhY2Vob2xkZXJOb2RlKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBpdGVtUmVtb3ZlZDogZnVu
Y3Rpb24oZXZlbnQpCisgICAgaXRlbVJlbW92ZWQoZXZlbnQpCiAgICAgewogICAgICAgICBmb3Ig
KHZhciBub2RlIG9mIHRoaXMuX2RhdGFHcmlkLmNoaWxkcmVuKSB7CiAgICAgICAgICAgICBpZiAo
bm9kZS5kYXRhLmtleSA9PT0gZXZlbnQuZGF0YS5rZXkpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IHRoaXMuX2RhdGFHcmlkLnJlbW92ZUNoaWxkKG5vZGUpOwogICAgICAgICB9Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBpdGVtQWRkZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIGl0ZW1BZGRlZChldmVu
dCkKICAgICB7CiAgICAgICAgIHZhciBrZXkgPSBldmVudC5kYXRhLmtleTsKICAgICAgICAgdmFy
IHZhbHVlID0gZXZlbnQuZGF0YS52YWx1ZTsKQEAgLTk1LDkgKzg4LDkgQEAgV2ViSW5zcGVjdG9y
LkRPTVN0b3JhZ2VDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBkYXRhID0g
e2tleSwgdmFsdWV9OwogICAgICAgICB0aGlzLl9kYXRhR3JpZC5hcHBlbmRDaGlsZChuZXcgV2Vi
SW5zcGVjdG9yLkRhdGFHcmlkTm9kZShkYXRhLCBmYWxzZSkpOwogICAgICAgICB0aGlzLl9zb3J0
RGF0YUdyaWQoKTsKLSAgICB9LAorICAgIH0KIAotICAgIGl0ZW1VcGRhdGVkOiBmdW5jdGlvbihl
dmVudCkKKyAgICBpdGVtVXBkYXRlZChldmVudCkKICAgICB7CiAgICAgICAgIHZhciBrZXkgPSBl
dmVudC5kYXRhLmtleTsKICAgICAgICAgdmFyIHZhbHVlID0gZXZlbnQuZGF0YS52YWx1ZTsKQEAg
LTExNywyNCArMTEwLDI0IEBAIFdlYkluc3BlY3Rvci5ET01TdG9yYWdlQ29udGVudFZpZXcucHJv
dG90eXBlID0gewogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIHRoaXMuX3NvcnRE
YXRhR3JpZCgpOwotICAgIH0sCisgICAgfQogCi0gICAgdXBkYXRlTGF5b3V0OiBmdW5jdGlvbigp
CisgICAgdXBkYXRlTGF5b3V0KCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9kYXRhR3JpZCkK
ICAgICAgICAgICAgIHRoaXMuX2RhdGFHcmlkLnVwZGF0ZUxheW91dCgpOwotICAgIH0sCisgICAg
fQogCiAgICAgZ2V0IHNjcm9sbGFibGVFbGVtZW50cygpCiAgICAgewogICAgICAgICBpZiAoIXRo
aXMuX2RhdGFHcmlkKQogICAgICAgICAgICAgcmV0dXJuIFtdOwogICAgICAgICByZXR1cm4gW3Ro
aXMuX2RhdGFHcmlkLnNjcm9sbENvbnRhaW5lcl07Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQ
cml2YXRlCiAKLSAgICBfcG9wdWxhdGU6IGZ1bmN0aW9uKCkKKyAgICBfcG9wdWxhdGUoKQogICAg
IHsKICAgICAgICAgdGhpcy5yZXByZXNlbnRlZE9iamVjdC5nZXRFbnRyaWVzKGZ1bmN0aW9uKGVy
cm9yLCBlbnRyaWVzKSB7CiAgICAgICAgICAgICBpZiAoZXJyb3IpCkBAIC0xNTMsOSArMTQ2LDkg
QEAgV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAg
ICAgICAgICB0aGlzLl9kYXRhR3JpZC5hZGRQbGFjZWhvbGRlck5vZGUoKTsKICAgICAgICAgICAg
IHRoaXMuX2RhdGFHcmlkLnVwZGF0ZUxheW91dCgpOwogICAgICAgICB9LmJpbmQodGhpcykpOwot
ICAgIH0sCisgICAgfQogCi0gICAgX3NvcnREYXRhR3JpZDogZnVuY3Rpb24oKQorICAgIF9zb3J0
RGF0YUdyaWQoKQogICAgIHsKICAgICAgICAgdmFyIHNvcnRDb2x1bW5JZGVudGlmaWVyID0gdGhp
cy5fZGF0YUdyaWQuc29ydENvbHVtbklkZW50aWZpZXIgfHwgImtleSI7CiAKQEAgLTE2NSwxOCAr
MTU4LDE4IEBAIFdlYkluc3BlY3Rvci5ET01TdG9yYWdlQ29udGVudFZpZXcucHJvdG90eXBlID0g
ewogICAgICAgICB9CiAKICAgICAgICAgdGhpcy5fZGF0YUdyaWQuc29ydE5vZGVzSW1tZWRpYXRl
bHkoY29tcGFyYXRvcik7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZGVsZXRlQ2FsbGJhY2s6IGZ1
bmN0aW9uKG5vZGUpCisgICAgX2RlbGV0ZUNhbGxiYWNrKG5vZGUpCiAgICAgewogICAgICAgICBp
ZiAoIW5vZGUgfHwgbm9kZS5pc1BsYWNlaG9sZGVyTm9kZSkKICAgICAgICAgICAgIHJldHVybjsK
IAogICAgICAgICB0aGlzLl9kYXRhR3JpZC5yZW1vdmVDaGlsZChub2RlKTsKICAgICAgICAgdGhp
cy5yZXByZXNlbnRlZE9iamVjdC5yZW1vdmVJdGVtKG5vZGUuZGF0YVsia2V5Il0pOwotICAgIH0s
CisgICAgfQogCi0gICAgX2VkaXRpbmdDYWxsYmFjazogZnVuY3Rpb24oZWRpdGluZ05vZGUsIGNv
bHVtbklkZW50aWZpZXIsIG9sZFRleHQsIG5ld1RleHQsIG1vdmVEaXJlY3Rpb24pCisgICAgX2Vk
aXRpbmdDYWxsYmFjayhlZGl0aW5nTm9kZSwgY29sdW1uSWRlbnRpZmllciwgb2xkVGV4dCwgbmV3
VGV4dCwgbW92ZURpcmVjdGlvbikKICAgICB7CiAgICAgICAgIHZhciBrZXkgPSBlZGl0aW5nTm9k
ZS5kYXRhWyJrZXkiXS50cmltKCkucmVtb3ZlV29yZEJyZWFrQ2hhcmFjdGVycygpOwogICAgICAg
ICB2YXIgdmFsdWUgPSBlZGl0aW5nTm9kZS5kYXRhWyJ2YWx1ZSJdLnRyaW0oKS5yZW1vdmVXb3Jk
QnJlYWtDaGFyYWN0ZXJzKCk7CkBAIC0yNzAsMyArMjYzLDcgQEAgV2ViSW5zcGVjdG9yLkRPTVN0
b3JhZ2VDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIGRvbVN0b3JhZ2Uuc2V0SXRl
bShrZXksIHZhbHVlKTsKICAgICB9CiB9OworCitXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZUNvbnRl
bnRWaWV3LkR1cGxpY2F0ZUtleVN0eWxlQ2xhc3NOYW1lID0gImR1cGxpY2F0ZS1rZXkiOworV2Vi
SW5zcGVjdG9yLkRPTVN0b3JhZ2VDb250ZW50Vmlldy5NaXNzaW5nS2V5U3R5bGVDbGFzc05hbWUg
PSAibWlzc2luZy1rZXkiOworV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VDb250ZW50Vmlldy5NaXNz
aW5nVmFsdWVTdHlsZUNsYXNzTmFtZSA9ICJtaXNzaW5nLXZhbHVlIjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVDb250ZW50Vmll
dy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVD
b250ZW50Vmlldy5qcwppbmRleCBjMmZkZjJhZjMwM2I2N2Q2NGFjZjM0YzJiNzQ3ZmU3MzhkYzUz
YTA3Li5iY2Q2NDg4NTMwZjI0MTczOWIwNTE4NDRiMjMxNmE2MGE3M2IxNjIzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlQ29udGVu
dFZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
RE9NVHJlZUNvbnRlbnRWaWV3LmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0yMyw5MSArMjMsODkgQEAKICAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuRE9NVHJlZUNvbnRlbnRWaWV3
ID0gZnVuY3Rpb24ocmVwcmVzZW50ZWRPYmplY3QpCitXZWJJbnNwZWN0b3IuRE9NVHJlZUNvbnRl
bnRWaWV3ID0gY2xhc3MgRE9NVHJlZUNvbnRlbnRWaWV3IGV4dGVuZHMgV2ViSW5zcGVjdG9yLkNv
bnRlbnRWaWV3CiB7Ci0gICAgY29uc29sZS5hc3NlcnQocmVwcmVzZW50ZWRPYmplY3QpOwotCi0g
ICAgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LmNhbGwodGhpcywgcmVwcmVzZW50ZWRPYmplY3Qp
OworICAgIGNvbnN0cnVjdG9yKHJlcHJlc2VudGVkT2JqZWN0KQorICAgIHsKKyAgICAgICAgY29u
c29sZS5hc3NlcnQocmVwcmVzZW50ZWRPYmplY3QpOwogCi0gICAgdGhpcy5fY29tcG9zaXRpbmdC
b3JkZXJzQnV0dG9uTmF2aWdhdGlvbkl0ZW0gPSBuZXcgV2ViSW5zcGVjdG9yLkFjdGl2YXRlQnV0
dG9uTmF2aWdhdGlvbkl0ZW0oImxheWVyLWJvcmRlcnMiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IlNob3cgY29tcG9zaXRpbmcgYm9yZGVycyIpLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkhpZGUg
Y29tcG9zaXRpbmcgYm9yZGVycyIpLCAiSW1hZ2VzL0xheWVyQm9yZGVycy5zdmciLCAxMywgMTMp
OwotICAgIHRoaXMuX2NvbXBvc2l0aW5nQm9yZGVyc0J1dHRvbk5hdmlnYXRpb25JdGVtLmFkZEV2
ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkJ1dHRvbk5hdmlnYXRpb25JdGVtLkV2ZW50LkNsaWNr
ZWQsIHRoaXMuX3RvZ2dsZUNvbXBvc2l0aW5nQm9yZGVycywgdGhpcyk7Ci0gICAgdGhpcy5fY29t
cG9zaXRpbmdCb3JkZXJzQnV0dG9uTmF2aWdhdGlvbkl0ZW0uZW5hYmxlZCA9ICEhUGFnZUFnZW50
LmdldENvbXBvc2l0aW5nQm9yZGVyc1Zpc2libGU7CisgICAgICAgIHN1cGVyKHJlcHJlc2VudGVk
T2JqZWN0KTsKIAotICAgIFdlYkluc3BlY3Rvci5zaG93UGFpbnRSZWN0c1NldHRpbmcuYWRkRXZl
bnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuU2V0dGluZy5FdmVudC5DaGFuZ2VkLCB0aGlzLl9zaG93
UGFpbnRSZWN0c1NldHRpbmdDaGFuZ2VkLCB0aGlzKTsKLSAgICB0aGlzLl9wYWludEZsYXNoaW5n
QnV0dG9uTmF2aWdhdGlvbkl0ZW0gPSBuZXcgV2ViSW5zcGVjdG9yLkFjdGl2YXRlQnV0dG9uTmF2
aWdhdGlvbkl0ZW0oInBhaW50LWZsYXNoaW5nIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJFbmFi
bGUgcGFpbnQgZmxhc2hpbmciKSwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJEaXNhYmxlIHBhaW50
IGZsYXNoaW5nIiksICJJbWFnZXMvUGFpbnRGbGFzaGluZy5zdmciLCAxNiwgMTYpOwotICAgIHRo
aXMuX3BhaW50Rmxhc2hpbmdCdXR0b25OYXZpZ2F0aW9uSXRlbS5hZGRFdmVudExpc3RlbmVyKFdl
Ykluc3BlY3Rvci5CdXR0b25OYXZpZ2F0aW9uSXRlbS5FdmVudC5DbGlja2VkLCB0aGlzLl90b2dn
bGVQYWludEZsYXNoaW5nLCB0aGlzKTsKLSAgICB0aGlzLl9wYWludEZsYXNoaW5nQnV0dG9uTmF2
aWdhdGlvbkl0ZW0uZW5hYmxlZCA9ICEhUGFnZUFnZW50LnNldFNob3dQYWludFJlY3RzOwotICAg
IHRoaXMuX3BhaW50Rmxhc2hpbmdCdXR0b25OYXZpZ2F0aW9uSXRlbS5hY3RpdmF0ZWQgPSBQYWdl
QWdlbnQuc2V0U2hvd1BhaW50UmVjdHMgJiYgV2ViSW5zcGVjdG9yLnNob3dQYWludFJlY3RzU2V0
dGluZy52YWx1ZTsKKyAgICAgICAgdGhpcy5fY29tcG9zaXRpbmdCb3JkZXJzQnV0dG9uTmF2aWdh
dGlvbkl0ZW0gPSBuZXcgV2ViSW5zcGVjdG9yLkFjdGl2YXRlQnV0dG9uTmF2aWdhdGlvbkl0ZW0o
ImxheWVyLWJvcmRlcnMiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNob3cgY29tcG9zaXRpbmcg
Ym9yZGVycyIpLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkhpZGUgY29tcG9zaXRpbmcgYm9yZGVy
cyIpLCAiSW1hZ2VzL0xheWVyQm9yZGVycy5zdmciLCAxMywgMTMpOworICAgICAgICB0aGlzLl9j
b21wb3NpdGluZ0JvcmRlcnNCdXR0b25OYXZpZ2F0aW9uSXRlbS5hZGRFdmVudExpc3RlbmVyKFdl
Ykluc3BlY3Rvci5CdXR0b25OYXZpZ2F0aW9uSXRlbS5FdmVudC5DbGlja2VkLCB0aGlzLl90b2dn
bGVDb21wb3NpdGluZ0JvcmRlcnMsIHRoaXMpOworICAgICAgICB0aGlzLl9jb21wb3NpdGluZ0Jv
cmRlcnNCdXR0b25OYXZpZ2F0aW9uSXRlbS5lbmFibGVkID0gISFQYWdlQWdlbnQuZ2V0Q29tcG9z
aXRpbmdCb3JkZXJzVmlzaWJsZTsKIAotICAgIFdlYkluc3BlY3Rvci5zaG93U2hhZG93RE9NU2V0
dGluZy5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5TZXR0aW5nLkV2ZW50LkNoYW5nZWQs
IHRoaXMuX3Nob3dTaGFkb3dET01TZXR0aW5nQ2hhbmdlZCwgdGhpcyk7Ci0gICAgdGhpcy5fc2hv
d3NTaGFkb3dET01CdXR0b25OYXZpZ2F0aW9uSXRlbSA9IG5ldyBXZWJJbnNwZWN0b3IuQWN0aXZh
dGVCdXR0b25OYXZpZ2F0aW9uSXRlbSgic2hvd3Mtc2hhZG93LURPTSIsIFdlYkluc3BlY3Rvci5V
SVN0cmluZygiU2hvdyBzaGFkb3cgRE9NIG5vZGVzIiksIFdlYkluc3BlY3Rvci5VSVN0cmluZygi
SGlkZSBzaGFkb3cgRE9NIG5vZGVzIiksICJJbWFnZXMvU2hhZG93RE9NLnN2ZyIsIDEzLCAxMyk7
Ci0gICAgdGhpcy5fc2hvd3NTaGFkb3dET01CdXR0b25OYXZpZ2F0aW9uSXRlbS5hZGRFdmVudExp
c3RlbmVyKFdlYkluc3BlY3Rvci5CdXR0b25OYXZpZ2F0aW9uSXRlbS5FdmVudC5DbGlja2VkLCB0
aGlzLl90b2dnbGVTaG93c1NoYWRvd0RPTVNldHRpbmcsIHRoaXMpOwotICAgIHRoaXMuX3Nob3dT
aGFkb3dET01TZXR0aW5nQ2hhbmdlZCgpOworICAgICAgICBXZWJJbnNwZWN0b3Iuc2hvd1BhaW50
UmVjdHNTZXR0aW5nLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlNldHRpbmcuRXZlbnQu
Q2hhbmdlZCwgdGhpcy5fc2hvd1BhaW50UmVjdHNTZXR0aW5nQ2hhbmdlZCwgdGhpcyk7CisgICAg
ICAgIHRoaXMuX3BhaW50Rmxhc2hpbmdCdXR0b25OYXZpZ2F0aW9uSXRlbSA9IG5ldyBXZWJJbnNw
ZWN0b3IuQWN0aXZhdGVCdXR0b25OYXZpZ2F0aW9uSXRlbSgicGFpbnQtZmxhc2hpbmciLCBXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIkVuYWJsZSBwYWludCBmbGFzaGluZyIpLCBXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIkRpc2FibGUgcGFpbnQgZmxhc2hpbmciKSwgIkltYWdlcy9QYWludEZsYXNoaW5n
LnN2ZyIsIDE2LCAxNik7CisgICAgICAgIHRoaXMuX3BhaW50Rmxhc2hpbmdCdXR0b25OYXZpZ2F0
aW9uSXRlbS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5CdXR0b25OYXZpZ2F0aW9uSXRl
bS5FdmVudC5DbGlja2VkLCB0aGlzLl90b2dnbGVQYWludEZsYXNoaW5nLCB0aGlzKTsKKyAgICAg
ICAgdGhpcy5fcGFpbnRGbGFzaGluZ0J1dHRvbk5hdmlnYXRpb25JdGVtLmVuYWJsZWQgPSAhIVBh
Z2VBZ2VudC5zZXRTaG93UGFpbnRSZWN0czsKKyAgICAgICAgdGhpcy5fcGFpbnRGbGFzaGluZ0J1
dHRvbk5hdmlnYXRpb25JdGVtLmFjdGl2YXRlZCA9IFBhZ2VBZ2VudC5zZXRTaG93UGFpbnRSZWN0
cyAmJiBXZWJJbnNwZWN0b3Iuc2hvd1BhaW50UmVjdHNTZXR0aW5nLnZhbHVlOwogCi0gICAgdGhp
cy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoImRvbS10cmVlIik7Ci0gICAgdGhpcy5lbGVtZW50LmFk
ZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fbW91c2VXYXNDbGlja2VkLmJpbmQodGhpcyks
IGZhbHNlKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLnNob3dTaGFkb3dET01TZXR0aW5nLmFkZEV2
ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlNldHRpbmcuRXZlbnQuQ2hhbmdlZCwgdGhpcy5fc2hv
d1NoYWRvd0RPTVNldHRpbmdDaGFuZ2VkLCB0aGlzKTsKKyAgICAgICAgdGhpcy5fc2hvd3NTaGFk
b3dET01CdXR0b25OYXZpZ2F0aW9uSXRlbSA9IG5ldyBXZWJJbnNwZWN0b3IuQWN0aXZhdGVCdXR0
b25OYXZpZ2F0aW9uSXRlbSgic2hvd3Mtc2hhZG93LURPTSIsIFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiU2hvdyBzaGFkb3cgRE9NIG5vZGVzIiksIFdlYkluc3BlY3Rvci5VSVN0cmluZygiSGlkZSBz
aGFkb3cgRE9NIG5vZGVzIiksICJJbWFnZXMvU2hhZG93RE9NLnN2ZyIsIDEzLCAxMyk7CisgICAg
ICAgIHRoaXMuX3Nob3dzU2hhZG93RE9NQnV0dG9uTmF2aWdhdGlvbkl0ZW0uYWRkRXZlbnRMaXN0
ZW5lcihXZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uRXZlbnQuQ2xpY2tlZCwgdGhp
cy5fdG9nZ2xlU2hvd3NTaGFkb3dET01TZXR0aW5nLCB0aGlzKTsKKyAgICAgICAgdGhpcy5fc2hv
d1NoYWRvd0RPTVNldHRpbmdDaGFuZ2VkKCk7CiAKLSAgICB0aGlzLl9kb21UcmVlT3V0bGluZSA9
IG5ldyBXZWJJbnNwZWN0b3IuRE9NVHJlZU91dGxpbmUodHJ1ZSwgdHJ1ZSwgdHJ1ZSk7Ci0gICAg
dGhpcy5fZG9tVHJlZU91dGxpbmUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRE9NVHJl
ZU91dGxpbmUuRXZlbnQuU2VsZWN0ZWROb2RlQ2hhbmdlZCwgdGhpcy5fc2VsZWN0ZWROb2RlRGlk
Q2hhbmdlLCB0aGlzKTsKLSAgICB0aGlzLl9kb21UcmVlT3V0bGluZS53aXJlVG9Eb21BZ2VudCgp
OwotICAgIHRoaXMuX2RvbVRyZWVPdXRsaW5lLmVkaXRhYmxlID0gdHJ1ZTsKLSAgICB0aGlzLmVs
ZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fZG9tVHJlZU91dGxpbmUuZWxlbWVudCk7CisgICAgICAg
IHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJkb20tdHJlZSIpOworICAgICAgICB0aGlzLmVs
ZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9tb3VzZVdhc0NsaWNrZWQuYmlu
ZCh0aGlzKSwgZmFsc2UpOwogCi0gICAgV2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2VyLmFkZEV2
ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRPTVRyZWVNYW5hZ2VyLkV2ZW50LkF0dHJpYnV0ZU1v
ZGlmaWVkLCB0aGlzLl9kb21Ob2RlQ2hhbmdlZCwgdGhpcyk7Ci0gICAgV2ViSW5zcGVjdG9yLmRv
bVRyZWVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRPTVRyZWVNYW5hZ2Vy
LkV2ZW50LkF0dHJpYnV0ZVJlbW92ZWQsIHRoaXMuX2RvbU5vZGVDaGFuZ2VkLCB0aGlzKTsKLSAg
ICBXZWJJbnNwZWN0b3IuZG9tVHJlZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0
b3IuRE9NVHJlZU1hbmFnZXIuRXZlbnQuQ2hhcmFjdGVyRGF0YU1vZGlmaWVkLCB0aGlzLl9kb21O
b2RlQ2hhbmdlZCwgdGhpcyk7CisgICAgICAgIHRoaXMuX2RvbVRyZWVPdXRsaW5lID0gbmV3IFdl
Ykluc3BlY3Rvci5ET01UcmVlT3V0bGluZSh0cnVlLCB0cnVlLCB0cnVlKTsKKyAgICAgICAgdGhp
cy5fZG9tVHJlZU91dGxpbmUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRE9NVHJlZU91
dGxpbmUuRXZlbnQuU2VsZWN0ZWROb2RlQ2hhbmdlZCwgdGhpcy5fc2VsZWN0ZWROb2RlRGlkQ2hh
bmdlLCB0aGlzKTsKKyAgICAgICAgdGhpcy5fZG9tVHJlZU91dGxpbmUud2lyZVRvRG9tQWdlbnQo
KTsKKyAgICAgICAgdGhpcy5fZG9tVHJlZU91dGxpbmUuZWRpdGFibGUgPSB0cnVlOworICAgICAg
ICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fZG9tVHJlZU91dGxpbmUuZWxlbWVudCk7
CiAKLSAgICB0aGlzLl9sYXN0U2VsZWN0ZWROb2RlUGF0aFNldHRpbmcgPSBuZXcgV2ViSW5zcGVj
dG9yLlNldHRpbmcoImxhc3Qtc2VsZWN0ZWQtbm9kZS1wYXRoIiwgbnVsbCk7CisgICAgICAgIFdl
Ykluc3BlY3Rvci5kb21UcmVlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5E
T01UcmVlTWFuYWdlci5FdmVudC5BdHRyaWJ1dGVNb2RpZmllZCwgdGhpcy5fZG9tTm9kZUNoYW5n
ZWQsIHRoaXMpOworICAgICAgICBXZWJJbnNwZWN0b3IuZG9tVHJlZU1hbmFnZXIuYWRkRXZlbnRM
aXN0ZW5lcihXZWJJbnNwZWN0b3IuRE9NVHJlZU1hbmFnZXIuRXZlbnQuQXR0cmlidXRlUmVtb3Zl
ZCwgdGhpcy5fZG9tTm9kZUNoYW5nZWQsIHRoaXMpOworICAgICAgICBXZWJJbnNwZWN0b3IuZG9t
VHJlZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRE9NVHJlZU1hbmFnZXIu
RXZlbnQuQ2hhcmFjdGVyRGF0YU1vZGlmaWVkLCB0aGlzLl9kb21Ob2RlQ2hhbmdlZCwgdGhpcyk7
CiAKLSAgICB0aGlzLl9udW1iZXJPZlNlYXJjaFJlc3VsdHMgPSBudWxsOwotfTsKKyAgICAgICAg
dGhpcy5fbGFzdFNlbGVjdGVkTm9kZVBhdGhTZXR0aW5nID0gbmV3IFdlYkluc3BlY3Rvci5TZXR0
aW5nKCJsYXN0LXNlbGVjdGVkLW5vZGUtcGF0aCIsIG51bGwpOwogCi1XZWJJbnNwZWN0b3IuRE9N
VHJlZUNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVj
dG9yLkRPTVRyZWVDb250ZW50VmlldywKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5Db250
ZW50Vmlldy5wcm90b3R5cGUsCisgICAgICAgIHRoaXMuX251bWJlck9mU2VhcmNoUmVzdWx0cyA9
IG51bGw7CisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgbmF2aWdhdGlvbkl0ZW1z
KCkKICAgICB7CiAgICAgICAgIHJldHVybiBbdGhpcy5fc2hvd3NTaGFkb3dET01CdXR0b25OYXZp
Z2F0aW9uSXRlbSwgdGhpcy5fY29tcG9zaXRpbmdCb3JkZXJzQnV0dG9uTmF2aWdhdGlvbkl0ZW0s
IHRoaXMuX3BhaW50Rmxhc2hpbmdCdXR0b25OYXZpZ2F0aW9uSXRlbV07Ci0gICAgfSwKKyAgICB9
CiAKICAgICBnZXQgZG9tVHJlZU91dGxpbmUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMu
X2RvbVRyZWVPdXRsaW5lOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHNjcm9sbGFibGVFbGVt
ZW50cygpCiAgICAgewogICAgICAgICByZXR1cm4gW3RoaXMuZWxlbWVudF07Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICB1cGRhdGVMYXlvdXQ6IGZ1bmN0aW9uKCkKKyAgICB1cGRhdGVMYXlvdXQoKQog
ICAgIHsKICAgICAgICAgdGhpcy5fZG9tVHJlZU91dGxpbmUudXBkYXRlU2VsZWN0aW9uKCk7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBzaG93bjogZnVuY3Rpb24oKQorICAgIHNob3duKCkKICAgICB7
CiAgICAgICAgIHRoaXMuX2RvbVRyZWVPdXRsaW5lLnNldFZpc2libGUodHJ1ZSwgV2ViSW5zcGVj
dG9yLmlzQ29uc29sZUZvY3VzZWQoKSk7CiAgICAgICAgIHRoaXMuX3VwZGF0ZUNvbXBvc2l0aW5n
Qm9yZGVyc0J1dHRvblRvTWF0Y2hQYWdlU2V0dGluZ3MoKTsKLSAgICB9LAorICAgIH0KIAotICAg
IGhpZGRlbjogZnVuY3Rpb24oKQorICAgIGhpZGRlbigpCiAgICAgewogICAgICAgICBXZWJJbnNw
ZWN0b3IuZG9tVHJlZU1hbmFnZXIuaGlkZURPTU5vZGVIaWdobGlnaHQoKTsKICAgICAgICAgdGhp
cy5fZG9tVHJlZU91dGxpbmUuc2V0VmlzaWJsZShmYWxzZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBjbG9zZWQ6IGZ1bmN0aW9uKCkKKyAgICBjbG9zZWQoKQogICAgIHsKICAgICAgICAgV2ViSW5z
cGVjdG9yLnNob3dQYWludFJlY3RzU2V0dGluZy5yZW1vdmVFdmVudExpc3RlbmVyKG51bGwsIG51
bGwsIHRoaXMpOwogICAgICAgICBXZWJJbnNwZWN0b3Iuc2hvd1NoYWRvd0RPTVNldHRpbmcucmVt
b3ZlRXZlbnRMaXN0ZW5lcihudWxsLCBudWxsLCB0aGlzKTsKICAgICAgICAgV2ViSW5zcGVjdG9y
LmRvbVRyZWVNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIobnVsbCwgbnVsbCwgdGhpcyk7CiAK
ICAgICAgICAgdGhpcy5fZG9tVHJlZU91dGxpbmUuY2xvc2UoKTsKLSAgICB9LAorICAgIH0KIAog
ICAgIGdldCBzZWxlY3Rpb25QYXRoQ29tcG9uZW50cygpCiAgICAgewpAQCAtMTI5LDkgKzEyNyw5
IEBAIFdlYkluc3BlY3Rvci5ET01UcmVlQ29udGVudFZpZXcucHJvdG90eXBlID0gewogICAgICAg
ICB9CiAKICAgICAgICAgcmV0dXJuIHBhdGhDb21wb25lbnRzOwotICAgIH0sCisgICAgfQogCi0g
ICAgcmVzdG9yZUZyb21Db29raWU6IGZ1bmN0aW9uKGNvb2tpZSkKKyAgICByZXN0b3JlRnJvbUNv
b2tpZShjb29raWUpCiAgICAgewogICAgICAgICBpZiAoIWNvb2tpZSB8fCAhY29va2llLm5vZGVU
b1NlbGVjdCkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTE0MSwxNCArMTM5LDE0IEBAIFdlYklu
c3BlY3Rvci5ET01UcmVlQ29udGVudFZpZXcucHJvdG90eXBlID0gewogICAgICAgICAvLyBCZWNh
dXNlIG5vZGVUb1NlbGVjdCBpcyBlcGhlbWVyYWwsIHdlIGRvbid0IHdhbnQgdG8ga2VlcAogICAg
ICAgICAvLyBpdCBhcm91bmQgaW4gdGhlIGJhY2stZm9yd2FyZCBoaXN0b3J5IGVudHJpZXMuCiAg
ICAgICAgIGNvb2tpZS5ub2RlVG9TZWxlY3QgPSB1bmRlZmluZWQ7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBzZWxlY3RBbmRSZXZlYWxET01Ob2RlOiBmdW5jdGlvbihkb21Ob2RlLCBwcmV2ZW50Rm9j
dXNDaGFuZ2UpCisgICAgc2VsZWN0QW5kUmV2ZWFsRE9NTm9kZShkb21Ob2RlLCBwcmV2ZW50Rm9j
dXNDaGFuZ2UpCiAgICAgewogICAgICAgICB0aGlzLl9kb21UcmVlT3V0bGluZS5zZWxlY3RET01O
b2RlKGRvbU5vZGUsICFwcmV2ZW50Rm9jdXNDaGFuZ2UpOwotICAgIH0sCisgICAgfQogCi0gICAg
aGFuZGxlQ29weUV2ZW50OiBmdW5jdGlvbihldmVudCkKKyAgICBoYW5kbGVDb3B5RXZlbnQoZXZl
bnQpCiAgICAgewogICAgICAgICB2YXIgc2VsZWN0ZWRET01Ob2RlID0gdGhpcy5fZG9tVHJlZU91
dGxpbmUuc2VsZWN0ZWRET01Ob2RlKCk7CiAgICAgICAgIGlmICghc2VsZWN0ZWRET01Ob2RlKQpA
QCAtMTU4LDEyICsxNTYsMTIgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVDb250ZW50Vmlldy5wcm90
b3R5cGUgPSB7CiAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAKICAgICAgICAgc2Vs
ZWN0ZWRET01Ob2RlLmNvcHlOb2RlKCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgc3VwcG9y
dHNTYXZlKCkKICAgICB7CiAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuY2FuQXJjaGl2ZU1h
aW5GcmFtZSgpOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHNhdmVEYXRhKCkKICAgICB7CkBA
IC0xNzMsMjIgKzE3MSwyMiBAQCBXZWJJbnNwZWN0b3IuRE9NVHJlZUNvbnRlbnRWaWV3LnByb3Rv
dHlwZSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIHJldHVybiB7IGN1c3RvbVNhdmVIYW5kbGVy
OiBzYXZlSGFuZGxlciB9OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHN1cHBvcnRzU2VhcmNo
KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0
IG51bWJlck9mU2VhcmNoUmVzdWx0cygpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fbnVt
YmVyT2ZTZWFyY2hSZXN1bHRzOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGhhc1BlcmZvcm1l
ZFNlYXJjaCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fbnVtYmVyT2ZTZWFyY2hSZXN1
bHRzICE9PSBudWxsOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IGF1dG9tYXRpY2FsbHlSZXZl
YWxGaXJzdFNlYXJjaFJlc3VsdChyZXZlYWwpCiAgICAgewpAQCAtMTk5LDkgKzE5Nyw5IEBAIFdl
Ykluc3BlY3Rvci5ET01UcmVlQ29udGVudFZpZXcucHJvdG90eXBlID0gewogICAgICAgICAgICAg
aWYgKHRoaXMuX2N1cnJlbnRTZWFyY2hSZXN1bHRJbmRleCA9PT0gLTEpCiAgICAgICAgICAgICAg
ICAgdGhpcy5yZXZlYWxOZXh0U2VhcmNoUmVzdWx0KCk7CiAgICAgICAgIH0KLSAgICB9LAorICAg
IH0KIAotICAgIHBlcmZvcm1TZWFyY2g6IGZ1bmN0aW9uKHF1ZXJ5KQorICAgIHBlcmZvcm1TZWFy
Y2gocXVlcnkpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fc2VhcmNoUXVlcnkgPT09IHF1ZXJ5
KQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjM4LDE2ICsyMzYsMTYgQEAgV2ViSW5zcGVjdG9y
LkRPTVRyZWVDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICB0
aGlzLmdldFNlYXJjaENvbnRleHROb2Rlcyhjb250ZXh0Tm9kZXNSZWFkeS5iaW5kKHRoaXMpKTsK
LSAgICB9LAorICAgIH0KIAotICAgIGdldFNlYXJjaENvbnRleHROb2RlczogZnVuY3Rpb24oY2Fs
bGJhY2spCisgICAgZ2V0U2VhcmNoQ29udGV4dE5vZGVzKGNhbGxiYWNrKQogICAgIHsKICAgICAg
ICAgLy8gT3ZlcndyaXRlIHRoaXMgdG8gbGltaXQgdGhlIHNlYXJjaCB0byBqdXN0IGEgc3VidHJl
ZS4KICAgICAgICAgLy8gUGFzc2luZyB1bmRlZmluZWQgd2lsbCBtYWtlIERPTUFnZW50LnBlcmZv
cm1TZWFyY2ggc2VhcmNoIHRocm91Z2ggYWxsIHRoZSBkb2N1bWVudHMuCiAgICAgICAgIGNhbGxi
YWNrKHVuZGVmaW5lZCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzZWFyY2hDbGVhcmVkOiBmdW5j
dGlvbigpCisgICAgc2VhcmNoQ2xlYXJlZCgpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fc2Vh
cmNoSWRlbnRpZmllcikgewogICAgICAgICAgICAgRE9NQWdlbnQuZGlzY2FyZFNlYXJjaFJlc3Vs
dHModGhpcy5fc2VhcmNoSWRlbnRpZmllcik7CkBAIC0yNTgsOSArMjU2LDkgQEAgV2ViSW5zcGVj
dG9yLkRPTVRyZWVDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX3NlYXJj
aElkZW50aWZpZXIgPSBudWxsOwogICAgICAgICB0aGlzLl9udW1iZXJPZlNlYXJjaFJlc3VsdHMg
PSBudWxsOwogICAgICAgICB0aGlzLl9jdXJyZW50U2VhcmNoUmVzdWx0SW5kZXggPSAtMTsKLSAg
ICB9LAorICAgIH0KIAotICAgIHJldmVhbFByZXZpb3VzU2VhcmNoUmVzdWx0OiBmdW5jdGlvbihj
aGFuZ2VGb2N1cykKKyAgICByZXZlYWxQcmV2aW91c1NlYXJjaFJlc3VsdChjaGFuZ2VGb2N1cykK
ICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fbnVtYmVyT2ZTZWFyY2hSZXN1bHRzKQogICAgICAg
ICAgICAgcmV0dXJuOwpAQCAtMjcxLDkgKzI2OSw5IEBAIFdlYkluc3BlY3Rvci5ET01UcmVlQ29u
dGVudFZpZXcucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5fY3VycmVudFNlYXJjaFJl
c3VsdEluZGV4ID0gdGhpcy5fbnVtYmVyT2ZTZWFyY2hSZXN1bHRzIC0gMTsKIAogICAgICAgICB0
aGlzLl9yZXZlYWxTZWFyY2hSZXN1bHQodGhpcy5fY3VycmVudFNlYXJjaFJlc3VsdEluZGV4LCBj
aGFuZ2VGb2N1cyk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICByZXZlYWxOZXh0U2VhcmNoUmVzdWx0
OiBmdW5jdGlvbihjaGFuZ2VGb2N1cykKKyAgICByZXZlYWxOZXh0U2VhcmNoUmVzdWx0KGNoYW5n
ZUZvY3VzKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9udW1iZXJPZlNlYXJjaFJlc3VsdHMp
CiAgICAgICAgICAgICByZXR1cm47CkBAIC0yODQsMTEgKzI4MiwxMSBAQCBXZWJJbnNwZWN0b3Iu
RE9NVHJlZUNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX2N1cnJl
bnRTZWFyY2hSZXN1bHRJbmRleCA9IDA7CiAKICAgICAgICAgdGhpcy5fcmV2ZWFsU2VhcmNoUmVz
dWx0KHRoaXMuX2N1cnJlbnRTZWFyY2hSZXN1bHRJbmRleCwgY2hhbmdlRm9jdXMpOwotICAgIH0s
CisgICAgfQogCiAgICAgLy8gUHJpdmF0ZQogCi0gICAgX3JldmVhbFNlYXJjaFJlc3VsdDogZnVu
Y3Rpb24oaW5kZXgsIGNoYW5nZUZvY3VzKQorICAgIF9yZXZlYWxTZWFyY2hSZXN1bHQoaW5kZXgs
IGNoYW5nZUZvY3VzKQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fc2VhcmNo
SWRlbnRpZmllcik7CiAKQEAgLTMxOCw5ICszMTYsOSBAQCBXZWJJbnNwZWN0b3IuRE9NVHJlZUNv
bnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIERPTUFnZW50Lmdl
dFNlYXJjaFJlc3VsdHModGhpcy5fc2VhcmNoSWRlbnRpZmllciwgaW5kZXgsIGluZGV4ICsgMSwg
cmV2ZWFsUmVzdWx0LmJpbmQodGhpcykpOwotICAgIH0sCisgICAgfQogCi0gICAgX3Jlc3RvcmVT
ZWxlY3RlZE5vZGVBZnRlclVwZGF0ZTogZnVuY3Rpb24oZG9jdW1lbnRVUkwsIGRlZmF1bHROb2Rl
KQorICAgIF9yZXN0b3JlU2VsZWN0ZWROb2RlQWZ0ZXJVcGRhdGUoZG9jdW1lbnRVUkwsIGRlZmF1
bHROb2RlKQogICAgIHsKICAgICAgICAgaWYgKCFXZWJJbnNwZWN0b3IuZG9tVHJlZU1hbmFnZXIu
cmVzdG9yZVNlbGVjdGVkTm9kZUlzQWxsb3dlZCkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTM1
NSw5ICszNTMsOSBAQCBXZWJJbnNwZWN0b3IuRE9NVHJlZUNvbnRlbnRWaWV3LnByb3RvdHlwZSA9
IHsKICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5kb21UcmVlTWFuYWdlci5wdXNoTm9kZUJ5UGF0
aFRvRnJvbnRlbmQodGhpcy5fbGFzdFNlbGVjdGVkTm9kZVBhdGhTZXR0aW5nLnZhbHVlLnBhdGgs
IHNlbGVjdExhc3RTZWxlY3RlZE5vZGUuYmluZCh0aGlzKSk7CiAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgIHNlbGVjdE5vZGUuY2FsbCh0aGlzKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9zZWxl
Y3RlZE5vZGVEaWRDaGFuZ2U6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9zZWxlY3RlZE5vZGVEaWRD
aGFuZ2UoZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgc2VsZWN0ZWRET01Ob2RlID0gdGhpcy5f
ZG9tVHJlZU91dGxpbmUuc2VsZWN0ZWRET01Ob2RlKCk7CiAgICAgICAgIGlmIChzZWxlY3RlZERP
TU5vZGUgJiYgIXRoaXMuX2RvbnRTZXRMYXN0U2VsZWN0ZWROb2RlUGF0aCkKQEAgLTM2NywyNiAr
MzY1LDI2IEBAIFdlYkluc3BlY3Rvci5ET01UcmVlQ29udGVudFZpZXcucHJvdG90eXBlID0gewog
ICAgICAgICAgICAgQ29uc29sZUFnZW50LmFkZEluc3BlY3RlZE5vZGUoc2VsZWN0ZWRET01Ob2Rl
LmlkKTsKIAogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0
b3IuQ29udGVudFZpZXcuRXZlbnQuU2VsZWN0aW9uUGF0aENvbXBvbmVudHNEaWRDaGFuZ2UpOwot
ICAgIH0sCisgICAgfQogCi0gICAgX3BhdGhDb21wb25lbnRTZWxlY3RlZDogZnVuY3Rpb24oZXZl
bnQpCisgICAgX3BhdGhDb21wb25lbnRTZWxlY3RlZChldmVudCkKICAgICB7CiAgICAgICAgIGNv
bnNvbGUuYXNzZXJ0KGV2ZW50LmRhdGEucGF0aENvbXBvbmVudCBpbnN0YW5jZW9mIFdlYkluc3Bl
Y3Rvci5ET01UcmVlRWxlbWVudFBhdGhDb21wb25lbnQpOwogICAgICAgICBjb25zb2xlLmFzc2Vy
dChldmVudC5kYXRhLnBhdGhDb21wb25lbnQuZG9tVHJlZUVsZW1lbnQgaW5zdGFuY2VvZiBXZWJJ
bnNwZWN0b3IuRE9NVHJlZUVsZW1lbnQpOwogCiAgICAgICAgIHRoaXMuX2RvbVRyZWVPdXRsaW5l
LnNlbGVjdERPTU5vZGUoZXZlbnQuZGF0YS5wYXRoQ29tcG9uZW50LmRvbVRyZWVFbGVtZW50LnJl
cHJlc2VudGVkT2JqZWN0LCB0cnVlKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9kb21Ob2RlQ2hh
bmdlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX2RvbU5vZGVDaGFuZ2VkKGV2ZW50KQogICAgIHsK
ICAgICAgICAgdmFyIHNlbGVjdGVkRE9NTm9kZSA9IHRoaXMuX2RvbVRyZWVPdXRsaW5lLnNlbGVj
dGVkRE9NTm9kZSgpOwogICAgICAgICBpZiAoc2VsZWN0ZWRET01Ob2RlICE9PSBldmVudC5kYXRh
Lm5vZGUpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50
VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LkV2ZW50LlNlbGVjdGlvblBhdGhD
b21wb25lbnRzRGlkQ2hhbmdlKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9tb3VzZVdhc0NsaWNr
ZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9tb3VzZVdhc0NsaWNrZWQoZXZlbnQpCiAgICAgewog
ICAgICAgICB2YXIgYW5jaG9yRWxlbWVudCA9IGV2ZW50LnRhcmdldC5lbmNsb3NpbmdOb2RlT3JT
ZWxmV2l0aE5vZGVOYW1lKCJhIik7CiAgICAgICAgIGlmICghYW5jaG9yRWxlbWVudCB8fCAhYW5j
aG9yRWxlbWVudC5ocmVmKQpAQCAtNDI0LDIzICs0MjIsMjMgQEAgV2ViSW5zcGVjdG9yLkRPTVRy
ZWVDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIC8vIHRoZW4gYSBkb3VibGUtY2xp
Y2sgaGFwcGVuZWQgb3IgYW5vdGhlciBsaW5rIHdhcyBjbGlja2VkLgogICAgICAgICAvLyBGSVhN
RTogVGhlIGR1cmF0aW9uIG1pZ2h0IGJlIGxvbmdlciBvciBzaG9ydGVyIHRoYW4gdGhlIHVzZXIn
cyBjb25maWd1cmVkIGRvdWJsZSBjbGljayBzcGVlZC4KICAgICAgICAgdGhpcy5fZm9sbG93TGlu
a1RpbWVvdXRJZGVudGlmaWVyID0gc2V0VGltZW91dChmb2xsb3dMaW5rLmJpbmQodGhpcyksIDMz
Myk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdG9nZ2xlQ29tcG9zaXRpbmdCb3JkZXJzOiBmdW5j
dGlvbihldmVudCkKKyAgICBfdG9nZ2xlQ29tcG9zaXRpbmdCb3JkZXJzKGV2ZW50KQogICAgIHsK
ICAgICAgICAgY29uc29sZS5hc3NlcnQoUGFnZUFnZW50LnNldENvbXBvc2l0aW5nQm9yZGVyc1Zp
c2libGUpOwogCiAgICAgICAgIHZhciBhY3RpdmF0ZWQgPSAhdGhpcy5fY29tcG9zaXRpbmdCb3Jk
ZXJzQnV0dG9uTmF2aWdhdGlvbkl0ZW0uYWN0aXZhdGVkOwogICAgICAgICB0aGlzLl9jb21wb3Np
dGluZ0JvcmRlcnNCdXR0b25OYXZpZ2F0aW9uSXRlbS5hY3RpdmF0ZWQgPSBhY3RpdmF0ZWQ7CiAg
ICAgICAgIFBhZ2VBZ2VudC5zZXRDb21wb3NpdGluZ0JvcmRlcnNWaXNpYmxlKGFjdGl2YXRlZCk7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdG9nZ2xlUGFpbnRGbGFzaGluZzogZnVuY3Rpb24oZXZl
bnQpCisgICAgX3RvZ2dsZVBhaW50Rmxhc2hpbmcoZXZlbnQpCiAgICAgewogICAgICAgICBXZWJJ
bnNwZWN0b3Iuc2hvd1BhaW50UmVjdHNTZXR0aW5nLnZhbHVlID0gIVdlYkluc3BlY3Rvci5zaG93
UGFpbnRSZWN0c1NldHRpbmcudmFsdWU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdXBkYXRlQ29t
cG9zaXRpbmdCb3JkZXJzQnV0dG9uVG9NYXRjaFBhZ2VTZXR0aW5nczogZnVuY3Rpb24oKQorICAg
IF91cGRhdGVDb21wb3NpdGluZ0JvcmRlcnNCdXR0b25Ub01hdGNoUGFnZVNldHRpbmdzKCkKICAg
ICB7CiAgICAgICAgIGlmICghUGFnZUFnZW50LmdldENvbXBvc2l0aW5nQm9yZGVyc1Zpc2libGUp
CiAgICAgICAgICAgICByZXR1cm47CkBAIC00NTMsMjggKzQ1MSwyOCBAQCBXZWJJbnNwZWN0b3Iu
RE9NVHJlZUNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGJ1dHRvbi5hY3Rp
dmF0ZWQgPSBlcnJvciA/IGZhbHNlIDogY29tcG9zaXRpbmdCb3JkZXJzVmlzaWJsZTsKICAgICAg
ICAgICAgIGJ1dHRvbi5lbmFibGVkID0gZXJyb3IgIT09ICJ1bnN1cHBvcnRlZCI7CiAgICAgICAg
IH0pOwotICAgIH0sCisgICAgfQogCi0gICAgX3Nob3dQYWludFJlY3RzU2V0dGluZ0NoYW5nZWQ6
IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9zaG93UGFpbnRSZWN0c1NldHRpbmdDaGFuZ2VkKGV2ZW50
KQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoUGFnZUFnZW50LnNldFNob3dQYWludFJl
Y3RzKTsKIAogICAgICAgICB0aGlzLl9wYWludEZsYXNoaW5nQnV0dG9uTmF2aWdhdGlvbkl0ZW0u
YWN0aXZhdGVkID0gV2ViSW5zcGVjdG9yLnNob3dQYWludFJlY3RzU2V0dGluZy52YWx1ZTsKIAog
ICAgICAgICBQYWdlQWdlbnQuc2V0U2hvd1BhaW50UmVjdHModGhpcy5fcGFpbnRGbGFzaGluZ0J1
dHRvbk5hdmlnYXRpb25JdGVtLmFjdGl2YXRlZCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfc2hv
d1NoYWRvd0RPTVNldHRpbmdDaGFuZ2VkOiBmdW5jdGlvbihldmVudCkKKyAgICBfc2hvd1NoYWRv
d0RPTVNldHRpbmdDaGFuZ2VkKGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5fc2hvd3NTaGFk
b3dET01CdXR0b25OYXZpZ2F0aW9uSXRlbS5hY3RpdmF0ZWQgPSBXZWJJbnNwZWN0b3Iuc2hvd1No
YWRvd0RPTVNldHRpbmcudmFsdWU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdG9nZ2xlU2hvd3NT
aGFkb3dET01TZXR0aW5nOiBmdW5jdGlvbihldmVudCkKKyAgICBfdG9nZ2xlU2hvd3NTaGFkb3dE
T01TZXR0aW5nKGV2ZW50KQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLnNob3dTaGFkb3dE
T01TZXR0aW5nLnZhbHVlID0gIVdlYkluc3BlY3Rvci5zaG93U2hhZG93RE9NU2V0dGluZy52YWx1
ZTsKLSAgICB9LAorICAgIH0KIAotICAgIF9zaG93U2VhcmNoSGlnaGxpZ2h0czogZnVuY3Rpb24o
KQorICAgIF9zaG93U2VhcmNoSGlnaGxpZ2h0cygpCiAgICAgewogICAgICAgICBjb25zb2xlLmFz
c2VydCh0aGlzLl9zZWFyY2hJZGVudGlmaWVyKTsKIApAQCAtNTA1LDkgKzUwMyw5IEBAIFdlYklu
c3BlY3Rvci5ET01UcmVlQ29udGVudFZpZXcucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAg
ICAgICB0cmVlRWxlbWVudC5oaWdobGlnaHRTZWFyY2hSZXN1bHRzKHRoaXMuX3NlYXJjaFF1ZXJ5
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfS5iaW5kKHRoaXMpKTsKLSAgICB9LAorICAgIH0K
IAotICAgIF9oaWRlU2VhcmNoSGlnaGxpZ2h0czogZnVuY3Rpb24oKQorICAgIF9oaWRlU2VhcmNo
SGlnaGxpZ2h0cygpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX3NlYXJjaFJlc3VsdE5vZGVz
KQogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvRGF0YWJhc2VDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RhdGFiYXNlQ29udGVudFZpZXcuanMKaW5k
ZXggYmFhMzMxN2NkYzU1YzE3ODk5OTFkY2Y1MzBiZGMwNDZiMGI3OTBkYS4uZDAzODEyNDA3NWIw
MTg3ZDgxYjcxNmViYmI0ZDkyZmVlNzMwM2JhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGF0YWJhc2VDb250ZW50Vmlldy5qcworKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EYXRhYmFzZUNvbnRlbnRW
aWV3LmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0yMywzOSArMjMsMzQgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KICAqLwogCi1XZWJJbnNwZWN0b3IuRGF0YWJhc2VDb250ZW50VmlldyA9IGZ1bmN0aW9uKHJl
cHJlc2VudGVkT2JqZWN0KQorV2ViSW5zcGVjdG9yLkRhdGFiYXNlQ29udGVudFZpZXcgPSBjbGFz
cyBEYXRhYmFzZUNvbnRlbnRWaWV3IGV4dGVuZHMgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3CiB7
Ci0gICAgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LmNhbGwodGhpcywgcmVwcmVzZW50ZWRPYmpl
Y3QpOwotCi0gICAgdGhpcy5kYXRhYmFzZSA9IHJlcHJlc2VudGVkT2JqZWN0OworICAgIGNvbnN0
cnVjdG9yKHJlcHJlc2VudGVkT2JqZWN0KQorICAgIHsKKyAgICAgICAgc3VwZXIocmVwcmVzZW50
ZWRPYmplY3QpOwogCi0gICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoInN0b3JhZ2Utdmll
dyIsICJxdWVyeSIsICJtb25vc3BhY2UiKTsKKyAgICAgICAgdGhpcy5kYXRhYmFzZSA9IHJlcHJl
c2VudGVkT2JqZWN0OwogCi0gICAgdGhpcy5fcHJvbXB0RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImRpdiIpOwotICAgIHRoaXMuX3Byb21wdEVsZW1lbnQuY2xhc3NOYW1lID0gImRh
dGFiYXNlLXF1ZXJ5LXByb21wdCI7Ci0gICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMu
X3Byb21wdEVsZW1lbnQpOworICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgic3Rv
cmFnZS12aWV3IiwgInF1ZXJ5IiwgIm1vbm9zcGFjZSIpOwogCi0gICAgdGhpcy5wcm9tcHQgPSBu
ZXcgV2ViSW5zcGVjdG9yLkNvbnNvbGVQcm9tcHQodGhpcywgInRleHQveC1zcWwiKTsKLSAgICB0
aGlzLl9wcm9tcHRFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMucHJvbXB0LmVsZW1lbnQpOworICAg
ICAgICB0aGlzLl9wcm9tcHRFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7
CisgICAgICAgIHRoaXMuX3Byb21wdEVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiZGF0YWJhc2UtcXVl
cnktcHJvbXB0Iik7CisgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9wcm9t
cHRFbGVtZW50KTsKIAotICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIs
IHRoaXMuX21lc3NhZ2VzQ2xpY2tlZC5iaW5kKHRoaXMpLCB0cnVlKTsKLX07CisgICAgICAgIHRo
aXMucHJvbXB0ID0gbmV3IFdlYkluc3BlY3Rvci5Db25zb2xlUHJvbXB0KHRoaXMsICJ0ZXh0L3gt
c3FsIik7CisgICAgICAgIHRoaXMuX3Byb21wdEVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5wcm9t
cHQuZWxlbWVudCk7CiAKLVdlYkluc3BlY3Rvci5EYXRhYmFzZUNvbnRlbnRWaWV3LkV2ZW50ID0g
ewotICAgIFNjaGVtYVVwZGF0ZWQ6ICJTY2hlbWFVcGRhdGVkIgotfTsKLQotV2ViSW5zcGVjdG9y
LkRhdGFiYXNlQ29udGVudFZpZXcucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJ
bnNwZWN0b3IuRGF0YWJhc2VDb250ZW50VmlldywKKyAgICAgICAgdGhpcy5lbGVtZW50LmFkZEV2
ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fbWVzc2FnZXNDbGlja2VkLmJpbmQodGhpcyksIHRy
dWUpOworICAgIH0KIAogICAgIC8vIFB1YmxpYwogCi0gICAgc2hvd246IGZ1bmN0aW9uKCkKKyAg
ICBzaG93bigpCiAgICAgewogICAgICAgICB0aGlzLnByb21wdC5zaG93bigpOwotICAgIH0sCisg
ICAgfQogCi0gICAgdXBkYXRlTGF5b3V0OiBmdW5jdGlvbigpCisgICAgdXBkYXRlTGF5b3V0KCkK
ICAgICB7CiAgICAgICAgIHRoaXMucHJvbXB0LnVwZGF0ZUxheW91dCgpOwogCkBAIC02NSwxNiAr
NjAsMTYgQEAgV2ViSW5zcGVjdG9yLkRhdGFiYXNlQ29udGVudFZpZXcucHJvdG90eXBlID0gewog
ICAgICAgICAgICAgaWYgKHJlc3VsdEVsZW1lbnQuZGF0YUdyaWQpCiAgICAgICAgICAgICAgICAg
cmVzdWx0RWxlbWVudC5kYXRhR3JpZC51cGRhdGVMYXlvdXQoKTsKICAgICAgICAgfQotICAgIH0s
CisgICAgfQogCi0gICAgc2F2ZVRvQ29va2llOiBmdW5jdGlvbihjb29raWUpCisgICAgc2F2ZVRv
Q29va2llKGNvb2tpZSkKICAgICB7CiAgICAgICAgIGNvb2tpZS50eXBlID0gV2ViSW5zcGVjdG9y
LkNvbnRlbnRWaWV3Q29va2llVHlwZS5EYXRhYmFzZTsKICAgICAgICAgY29va2llLmhvc3QgPSB0
aGlzLnJlcHJlc2VudGVkT2JqZWN0Lmhvc3Q7CiAgICAgICAgIGNvb2tpZS5uYW1lID0gdGhpcy5y
ZXByZXNlbnRlZE9iamVjdC5uYW1lOwotICAgIH0sCisgICAgfQogCi0gICAgY29uc29sZVByb21w
dENvbXBsZXRpb25zTmVlZGVkOiBmdW5jdGlvbihwcm9tcHQsIGRlZmF1bHRDb21wbGV0aW9ucywg
YmFzZSwgcHJlZml4LCBzdWZmaXgpCisgICAgY29uc29sZVByb21wdENvbXBsZXRpb25zTmVlZGVk
KHByb21wdCwgZGVmYXVsdENvbXBsZXRpb25zLCBiYXNlLCBwcmVmaXgsIHN1ZmZpeCkKICAgICB7
CiAgICAgICAgIHZhciByZXN1bHRzID0gW107CiAKQEAgLTk4LDIxICs5MywyMSBAQCBXZWJJbnNw
ZWN0b3IuRGF0YWJhc2VDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAg
ICAgICB0aGlzLmRhdGFiYXNlLmdldFRhYmxlTmFtZXModGFibGVOYW1lc0NhbGxiYWNrLmJpbmQo
dGhpcykpOwotICAgIH0sCisgICAgfQogCi0gICAgY29uc29sZVByb21wdFRleHRDb21taXR0ZWQ6
IGZ1bmN0aW9uKHByb21wdCwgcXVlcnkpCisgICAgY29uc29sZVByb21wdFRleHRDb21taXR0ZWQo
cHJvbXB0LCBxdWVyeSkKICAgICB7CiAgICAgICAgIHRoaXMuZGF0YWJhc2UuZXhlY3V0ZVNRTChx
dWVyeSwgdGhpcy5fcXVlcnlGaW5pc2hlZC5iaW5kKHRoaXMsIHF1ZXJ5KSwgdGhpcy5fcXVlcnlF
cnJvci5iaW5kKHRoaXMsIHF1ZXJ5KSk7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcml2YXRl
CiAKLSAgICBfbWVzc2FnZXNDbGlja2VkOiBmdW5jdGlvbigpCisgICAgX21lc3NhZ2VzQ2xpY2tl
ZCgpCiAgICAgewogICAgICAgICB0aGlzLnByb21wdC5mb2N1cygpOwotICAgIH0sCisgICAgfQog
Ci0gICAgX3F1ZXJ5RmluaXNoZWQ6IGZ1bmN0aW9uKHF1ZXJ5LCBjb2x1bW5OYW1lcywgdmFsdWVz
KQorICAgIF9xdWVyeUZpbmlzaGVkKHF1ZXJ5LCBjb2x1bW5OYW1lcywgdmFsdWVzKQogICAgIHsK
ICAgICAgICAgdmFyIGRhdGFHcmlkID0gV2ViSW5zcGVjdG9yLkRhdGFHcmlkLmNyZWF0ZVNvcnRh
YmxlRGF0YUdyaWQoY29sdW1uTmFtZXMsIHZhbHVlcyk7CiAgICAgICAgIHZhciB0cmltbWVkUXVl
cnkgPSBxdWVyeS50cmltKCk7CkBAIC0xMjUsOSArMTIwLDkgQEAgV2ViSW5zcGVjdG9yLkRhdGFi
YXNlQ29udGVudFZpZXcucHJvdG90eXBlID0gewogCiAgICAgICAgIGlmICh0cmltbWVkUXVlcnku
bWF0Y2goL15jcmVhdGUgL2kpIHx8IHRyaW1tZWRRdWVyeS5tYXRjaCgvXmRyb3AgdGFibGUgL2kp
KQogICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9y
LkRhdGFiYXNlQ29udGVudFZpZXcuRXZlbnQuU2NoZW1hVXBkYXRlZCwgdGhpcy5kYXRhYmFzZSk7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcXVlcnlFcnJvcjogZnVuY3Rpb24ocXVlcnksIGVycm9y
KQorICAgIF9xdWVyeUVycm9yKHF1ZXJ5LCBlcnJvcikKICAgICB7CiAgICAgICAgIGlmIChlcnJv
ci5tZXNzYWdlKQogICAgICAgICAgICAgdmFyIG1lc3NhZ2UgPSBlcnJvci5tZXNzYWdlOwpAQCAt
MTM3LDkgKzEzMiw5IEBAIFdlYkluc3BlY3Rvci5EYXRhYmFzZUNvbnRlbnRWaWV3LnByb3RvdHlw
ZSA9IHsKICAgICAgICAgICAgIHZhciBtZXNzYWdlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJB
biB1bmV4cGVjdGVkIGVycm9yICVzIG9jY3VycmVkLiIpLmZvcm1hdChlcnJvci5jb2RlKTsKIAog
ICAgICAgICB0aGlzLl9hcHBlbmRFcnJvclF1ZXJ5UmVzdWx0KHF1ZXJ5LCBtZXNzYWdlKTsKLSAg
ICB9LAorICAgIH0KIAotICAgIF9hcHBlbmRWaWV3UXVlcnlSZXN1bHQ6IGZ1bmN0aW9uKHF1ZXJ5
LCB2aWV3KQorICAgIF9hcHBlbmRWaWV3UXVlcnlSZXN1bHQocXVlcnksIHZpZXcpCiAgICAgewog
ICAgICAgICB2YXIgcmVzdWx0RWxlbWVudCA9IHRoaXMuX2FwcGVuZFF1ZXJ5UmVzdWx0KHF1ZXJ5
KTsKIApAQCAtMTQ4LDE4ICsxNDMsMTggQEAgV2ViSW5zcGVjdG9yLkRhdGFiYXNlQ29udGVudFZp
ZXcucHJvdG90eXBlID0gewogICAgICAgICByZXN1bHRFbGVtZW50LmFwcGVuZENoaWxkKHZpZXcu
ZWxlbWVudCk7CiAKICAgICAgICAgdGhpcy5fcHJvbXB0RWxlbWVudC5zY3JvbGxJbnRvVmlldyhm
YWxzZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfYXBwZW5kRXJyb3JRdWVyeVJlc3VsdDogZnVu
Y3Rpb24ocXVlcnksIGVycm9yVGV4dCkKKyAgICBfYXBwZW5kRXJyb3JRdWVyeVJlc3VsdChxdWVy
eSwgZXJyb3JUZXh0KQogICAgIHsKICAgICAgICAgdmFyIHJlc3VsdEVsZW1lbnQgPSB0aGlzLl9h
cHBlbmRRdWVyeVJlc3VsdChxdWVyeSk7CiAgICAgICAgIHJlc3VsdEVsZW1lbnQuY2xhc3NMaXN0
LmFkZCgiZXJyb3IiKTsKICAgICAgICAgcmVzdWx0RWxlbWVudC50ZXh0Q29udGVudCA9IGVycm9y
VGV4dDsKIAogICAgICAgICB0aGlzLl9wcm9tcHRFbGVtZW50LnNjcm9sbEludG9WaWV3KGZhbHNl
KTsKLSAgICB9LAorICAgIH0KIAotICAgIF9hcHBlbmRRdWVyeVJlc3VsdDogZnVuY3Rpb24ocXVl
cnkpCisgICAgX2FwcGVuZFF1ZXJ5UmVzdWx0KHF1ZXJ5KQogICAgIHsKICAgICAgICAgdmFyIGVs
ZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICAgICAgZWxlbWVudC5j
bGFzc05hbWUgPSAiZGF0YWJhc2UtdXNlci1xdWVyeSI7CkBAIC0xNzcsNCArMTcyLDYgQEAgV2Vi
SW5zcGVjdG9yLkRhdGFiYXNlQ29udGVudFZpZXcucHJvdG90eXBlID0gewogICAgIH0KIH07CiAK
LVdlYkluc3BlY3Rvci5EYXRhYmFzZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5fX3Byb3RvX18gPSBX
ZWJJbnNwZWN0b3IuQ29udGVudFZpZXcucHJvdG90eXBlOworV2ViSW5zcGVjdG9yLkRhdGFiYXNl
Q29udGVudFZpZXcuRXZlbnQgPSB7CisgICAgU2NoZW1hVXBkYXRlZDogIlNjaGVtYVVwZGF0ZWQi
Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvRGF0YWJhc2VUYWJsZUNvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvRGF0YWJhc2VUYWJsZUNvbnRlbnRWaWV3LmpzCmluZGV4IDg0NDhi
MDRhYjM1MTRhYjk2NjI0M2Y0NThiYTFjZTZlMWU3NTkwNjguLmM1ZTk0NjdlOTRmNzE4ZWUxM2E4
ZTU2YTc5NmQwZTA0MTQ2YzM3NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0RhdGFiYXNlVGFibGVDb250ZW50Vmlldy5qcworKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EYXRhYmFzZVRhYmxlQ29udGVu
dFZpZXcuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTIzLDYzICsyMyw2MSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5EYXRhYmFzZVRhYmxlQ29udGVudFZpZXcgPSBmdW5j
dGlvbihyZXByZXNlbnRlZE9iamVjdCkKK1dlYkluc3BlY3Rvci5EYXRhYmFzZVRhYmxlQ29udGVu
dFZpZXcgPSBjbGFzcyBEYXRhYmFzZVRhYmxlQ29udGVudFZpZXcgZXh0ZW5kcyBXZWJJbnNwZWN0
b3IuQ29udGVudFZpZXcKIHsKLSAgICBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcuY2FsbCh0aGlz
LCByZXByZXNlbnRlZE9iamVjdCk7Ci0KLSAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgi
ZGF0YWJhc2UtdGFibGUiKTsKKyAgICBjb25zdHJ1Y3RvcihyZXByZXNlbnRlZE9iamVjdCkKKyAg
ICB7CisgICAgICAgIHN1cGVyKHJlcHJlc2VudGVkT2JqZWN0KTsKIAotICAgIHRoaXMuX3JlZnJl
c2hCdXR0b25OYXZpZ2F0aW9uSXRlbSA9IG5ldyBXZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlv
bkl0ZW0oImRhdGFiYXNlLXRhYmxlLXJlZnJlc2giLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJl
ZnJlc2giKSwgIkltYWdlcy9SZWxvYWRGdWxsLnN2ZyIsIDEzLCAxMyk7Ci0gICAgdGhpcy5fcmVm
cmVzaEJ1dHRvbk5hdmlnYXRpb25JdGVtLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkJ1
dHRvbk5hdmlnYXRpb25JdGVtLkV2ZW50LkNsaWNrZWQsIHRoaXMuX3JlZnJlc2hCdXR0b25DbGlj
a2VkLCB0aGlzKTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoImRhdGFiYXNl
LXRhYmxlIik7CiAKLSAgICB0aGlzLnVwZGF0ZSgpOwotfTsKKyAgICAgICAgdGhpcy5fcmVmcmVz
aEJ1dHRvbk5hdmlnYXRpb25JdGVtID0gbmV3IFdlYkluc3BlY3Rvci5CdXR0b25OYXZpZ2F0aW9u
SXRlbSgiZGF0YWJhc2UtdGFibGUtcmVmcmVzaCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVm
cmVzaCIpLCAiSW1hZ2VzL1JlbG9hZEZ1bGwuc3ZnIiwgMTMsIDEzKTsKKyAgICAgICAgdGhpcy5f
cmVmcmVzaEJ1dHRvbk5hdmlnYXRpb25JdGVtLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9y
LkJ1dHRvbk5hdmlnYXRpb25JdGVtLkV2ZW50LkNsaWNrZWQsIHRoaXMuX3JlZnJlc2hCdXR0b25D
bGlja2VkLCB0aGlzKTsKIAotV2ViSW5zcGVjdG9yLkRhdGFiYXNlVGFibGVDb250ZW50Vmlldy5w
cm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5EYXRhYmFzZVRhYmxl
Q29udGVudFZpZXcsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcucHJv
dG90eXBlLAorICAgICAgICB0aGlzLnVwZGF0ZSgpOworICAgIH0KIAogICAgIC8vIFB1YmxpYwog
CiAgICAgZ2V0IG5hdmlnYXRpb25JdGVtcygpCiAgICAgewogICAgICAgICByZXR1cm4gW3RoaXMu
X3JlZnJlc2hCdXR0b25OYXZpZ2F0aW9uSXRlbV07Ci0gICAgfSwKKyAgICB9CiAKLSAgICB1cGRh
dGU6IGZ1bmN0aW9uKCkKKyAgICB1cGRhdGUoKQogICAgIHsKICAgICAgICAgdGhpcy5yZXByZXNl
bnRlZE9iamVjdC5kYXRhYmFzZS5leGVjdXRlU1FMKCJTRUxFQ1QgKiBGUk9NIFwiIiArIHRoaXMu
X2VzY2FwZVRhYmxlTmFtZSh0aGlzLnJlcHJlc2VudGVkT2JqZWN0Lm5hbWUpICsgIlwiIiwgdGhp
cy5fcXVlcnlGaW5pc2hlZC5iaW5kKHRoaXMpLCB0aGlzLl9xdWVyeUVycm9yLmJpbmQodGhpcykp
OwotICAgIH0sCisgICAgfQogCi0gICAgdXBkYXRlTGF5b3V0OiBmdW5jdGlvbigpCisgICAgdXBk
YXRlTGF5b3V0KCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9kYXRhR3JpZCkKICAgICAgICAg
ICAgIHRoaXMuX2RhdGFHcmlkLnVwZGF0ZUxheW91dCgpOwotICAgIH0sCisgICAgfQogCi0gICAg
c2F2ZVRvQ29va2llOiBmdW5jdGlvbihjb29raWUpCisgICAgc2F2ZVRvQ29va2llKGNvb2tpZSkK
ICAgICB7CiAgICAgICAgIGNvb2tpZS50eXBlID0gV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29v
a2llVHlwZS5EYXRhYmFzZVRhYmxlOwogICAgICAgICBjb29raWUuaG9zdCA9IHRoaXMucmVwcmVz
ZW50ZWRPYmplY3QuaG9zdDsKICAgICAgICAgY29va2llLm5hbWUgPSB0aGlzLnJlcHJlc2VudGVk
T2JqZWN0Lm5hbWU7CiAgICAgICAgIGNvb2tpZS5kYXRhYmFzZSA9IHRoaXMucmVwcmVzZW50ZWRP
YmplY3QuZGF0YWJhc2UubmFtZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBzY3JvbGxhYmxl
RWxlbWVudHMoKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9kYXRhR3JpZCkKICAgICAgICAg
ICAgIHJldHVybiBbXTsKICAgICAgICAgcmV0dXJuIFt0aGlzLl9kYXRhR3JpZC5zY3JvbGxDb250
YWluZXJdOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJpdmF0ZQogCi0gICAgX2VzY2FwZVRh
YmxlTmFtZTogZnVuY3Rpb24obmFtZSkKKyAgICBfZXNjYXBlVGFibGVOYW1lKG5hbWUpCiAgICAg
ewogICAgICAgICByZXR1cm4gbmFtZS5yZXBsYWNlKC9cIi9nLCAiXCJcIiIpOwotICAgIH0sCisg
ICAgfQogCi0gICAgX3F1ZXJ5RmluaXNoZWQ6IGZ1bmN0aW9uKGNvbHVtbk5hbWVzLCB2YWx1ZXMp
CisgICAgX3F1ZXJ5RmluaXNoZWQoY29sdW1uTmFtZXMsIHZhbHVlcykKICAgICB7CiAgICAgICAg
IC8vIEl0IHdvdWxkIGJlIG5pY2UgdG8gZG8gYmV0dGVyIHRoYW4gY3JlYXRpbmcgYSBuZXcgZGF0
YSBncmlkIGVhY2ggdGltZSB0aGUgdGFibGUgaXMgdXBkYXRlZCwgYnV0IHRoZSB0YWJsZSB1cGRh
dGluZwogICAgICAgICAvLyBkb2Vzbid0IGhhcHBlbiB2ZXJ5IGZyZXF1ZW50bHkuIEFkZGl0aW9u
YWxseSwgdXNpbmcgRGF0YUdyaWQncyBjcmVhdGVTb3J0YWJsZURhdGFHcmlkIG1ha2VzIG91ciBj
b2RlIG11Y2ggY2xlYW5lciBhbmQgaXQga25vd3MKQEAgLTk5LDE1ICs5NywxNSBAQCBXZWJJbnNw
ZWN0b3IuRGF0YWJhc2VUYWJsZUNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKIAogICAgICAgICB0
aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fZGF0YUdyaWQuZWxlbWVudCk7CiAgICAgICAg
IHRoaXMuX2RhdGFHcmlkLnVwZGF0ZUxheW91dCgpOwotICAgIH0sCisgICAgfQogCi0gICAgX3F1
ZXJ5RXJyb3I6IGZ1bmN0aW9uKGVycm9yKQorICAgIF9xdWVyeUVycm9yKGVycm9yKQogICAgIHsK
ICAgICAgICAgdGhpcy5lbGVtZW50LnJlbW92ZUNoaWxkcmVuKCk7CiAgICAgICAgIHRoaXMuZWxl
bWVudC5hcHBlbmRDaGlsZChXZWJJbnNwZWN0b3IuY3JlYXRlTWVzc2FnZVRleHRWaWV3KFdlYklu
c3BlY3Rvci5VSVN0cmluZygiQW4gZXJyb3Igb2NjdXJlZCB0cnlpbmcgdG9cbnJlYWQgdGhlIOKA
nCVz4oCdIHRhYmxlLiIpLmZvcm1hdCh0aGlzLnJlcHJlc2VudGVkT2JqZWN0Lm5hbWUpLCB0cnVl
KSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcmVmcmVzaEJ1dHRvbkNsaWNrZWQ6IGZ1bmN0aW9u
KCkKKyAgICBfcmVmcmVzaEJ1dHRvbkNsaWNrZWQoKQogICAgIHsKICAgICAgICAgdGhpcy51cGRh
dGUoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9EZWJ1Z2dlclRhYkNvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGVidWdnZXJUYWJDb250ZW50Vmlldy5qcwppbmRleCAy
ZTFhMWZjYTUxMTAyODVlOGMwMDA1ZmYzYWI4OTdhN2I2NmRjOGUwLi43OThkMzFjOTJhYTQzMDM3
YmU3ZDgwOGJlOGZlYTc3ZmRlNTBiZWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9EZWJ1Z2dlclRhYkNvbnRlbnRWaWV3LmpzCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RlYnVnZ2VyVGFiQ29udGVu
dFZpZXcuanMKQEAgLTIzLDI2ICsyMywyNCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5EZWJ1Z2dlclRhYkNvbnRlbnRWaWV3ID0gZnVu
Y3Rpb24oaWRlbnRpZmllcikKK1dlYkluc3BlY3Rvci5EZWJ1Z2dlclRhYkNvbnRlbnRWaWV3ID0g
Y2xhc3MgRGVidWdnZXJUYWJDb250ZW50VmlldyBleHRlbmRzIFdlYkluc3BlY3Rvci5Db250ZW50
QnJvd3NlclRhYkNvbnRlbnRWaWV3CiB7Ci0gICAgdmFyIHRhYkJhckl0ZW0gPSBuZXcgV2ViSW5z
cGVjdG9yLlRhYkJhckl0ZW0oIkltYWdlcy9EZWJ1Z2dlci5zdmciLCBXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIkRlYnVnZ2VyIikpOwotICAgIHZhciBkZXRhaWxzU2lkZWJhclBhbmVscyA9IFtXZWJJ
bnNwZWN0b3IucmVzb3VyY2VEZXRhaWxzU2lkZWJhclBhbmVsLCBXZWJJbnNwZWN0b3Iuc2NvcGVD
aGFpbkRldGFpbHNTaWRlYmFyUGFuZWwsIFdlYkluc3BlY3Rvci5wcm9iZURldGFpbHNTaWRlYmFy
UGFuZWxdOwotCi0gICAgV2ViSW5zcGVjdG9yLkNvbnRlbnRCcm93c2VyVGFiQ29udGVudFZpZXcu
Y2FsbCh0aGlzLCBpZGVudGlmaWVyIHx8ICJkZWJ1Z2dlciIsICJkZWJ1Z2dlciIsIHRhYkJhckl0
ZW0sIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclNpZGViYXJQYW5lbCwgZGV0YWlsc1NpZGViYXJQYW5l
bHMpOwotfTsKKyAgICBjb25zdHJ1Y3RvcihpZGVudGlmaWVyKQorICAgIHsKKyAgICAgICAgdmFy
IHRhYkJhckl0ZW0gPSBuZXcgV2ViSW5zcGVjdG9yLlRhYkJhckl0ZW0oIkltYWdlcy9EZWJ1Z2dl
ci5zdmciLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkRlYnVnZ2VyIikpOworICAgICAgICB2YXIg
ZGV0YWlsc1NpZGViYXJQYW5lbHMgPSBbV2ViSW5zcGVjdG9yLnJlc291cmNlRGV0YWlsc1NpZGVi
YXJQYW5lbCwgV2ViSW5zcGVjdG9yLnNjb3BlQ2hhaW5EZXRhaWxzU2lkZWJhclBhbmVsLCBXZWJJ
bnNwZWN0b3IucHJvYmVEZXRhaWxzU2lkZWJhclBhbmVsXTsKIAotV2ViSW5zcGVjdG9yLkRlYnVn
Z2VyVGFiQ29udGVudFZpZXcucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNw
ZWN0b3IuRGVidWdnZXJUYWJDb250ZW50VmlldywKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rv
ci5Db250ZW50QnJvd3NlclRhYkNvbnRlbnRWaWV3LnByb3RvdHlwZSwKKyAgICAgICAgc3VwZXIo
aWRlbnRpZmllciB8fCAiZGVidWdnZXIiLCAiZGVidWdnZXIiLCB0YWJCYXJJdGVtLCBXZWJJbnNw
ZWN0b3IuRGVidWdnZXJTaWRlYmFyUGFuZWwsIGRldGFpbHNTaWRlYmFyUGFuZWxzKTsKKyAgICB9
CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCB0eXBlKCkKICAgICB7CiAgICAgICAgIHJldHVy
biBXZWJJbnNwZWN0b3IuRGVidWdnZXJUYWJDb250ZW50Vmlldy5UeXBlOwotICAgIH0sCisgICAg
fQogCi0gICAgY2FuU2hvd1JlcHJlc2VudGVkT2JqZWN0OiBmdW5jdGlvbihyZXByZXNlbnRlZE9i
amVjdCkKKyAgICBjYW5TaG93UmVwcmVzZW50ZWRPYmplY3QocmVwcmVzZW50ZWRPYmplY3QpCiAg
ICAgewogICAgICAgICBpZiAocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0
b3IuU2NyaXB0KQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC01MSw5ICs0OSw5IEBAIFdl
Ykluc3BlY3Rvci5EZWJ1Z2dlclRhYkNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICByZXR1cm4gcmVwcmVzZW50ZWRPYmplY3QudHlw
ZSA9PT0gV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuRG9jdW1lbnQgfHwgcmVwcmVzZW50ZWRP
YmplY3QudHlwZSA9PT0gV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuU2NyaXB0OwotICAgIH0s
CisgICAgfQogCi0gICAgc2hvd0RldGFpbHNTaWRlYmFyUGFuZWxzOiBmdW5jdGlvbigpCisgICAg
c2hvd0RldGFpbHNTaWRlYmFyUGFuZWxzKCkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5D
b250ZW50QnJvd3NlclRhYkNvbnRlbnRWaWV3LnByb3RvdHlwZS5zaG93RGV0YWlsc1NpZGViYXJQ
YW5lbHMuY2FsbCh0aGlzKTsKIApAQCAtNjMsMTQgKzYxLDE0IEBAIFdlYkluc3BlY3Rvci5EZWJ1
Z2dlclRhYkNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgV2ViSW5zcGVjdG9yLnNj
b3BlQ2hhaW5EZXRhaWxzU2lkZWJhclBhbmVsLnNob3coKTsKIAogICAgICAgICB0aGlzLl9zaG93
U2NvcGVDaGFpbkRldGFpbHNTaWRlYmFyUGFuZWwgPSBmYWxzZTsKLSAgICB9LAorICAgIH0KIAot
ICAgIHNob3dTY29wZUNoYWluRGV0YWlsc1NpZGViYXJQYW5lbDogZnVuY3Rpb24oKQorICAgIHNo
b3dTY29wZUNoYWluRGV0YWlsc1NpZGViYXJQYW5lbCgpCiAgICAgewogICAgICAgICB0aGlzLl9z
aG93U2NvcGVDaGFpbkRldGFpbHNTaWRlYmFyUGFuZWwgPSB0cnVlOwotICAgIH0sCisgICAgfQog
Ci0gICAgcmV2ZWFsQW5kU2VsZWN0QnJlYWtwb2ludDogZnVuY3Rpb24oYnJlYWtwb2ludCkKKyAg
ICByZXZlYWxBbmRTZWxlY3RCcmVha3BvaW50KGJyZWFrcG9pbnQpCiAgICAgewogICAgICAgICBj
b25zb2xlLmFzc2VydChicmVha3BvaW50IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkJyZWFrcG9p
bnQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9FbGVtZW50c1RhYkNvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvRWxlbWVudHNUYWJDb250ZW50Vmlldy5qcwppbmRleCAxYzhmOGJj
YTEzMDk3NmY2ZmZmOTZkYjgyMGYwMDJmOWNjYjcyZDI2Li4xZDVlZmE5NTUwMzU5ODA2OGFkNGY0
OWMzOGJkZDI5ZDI5NTk3ZGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9FbGVtZW50c1RhYkNvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0VsZW1lbnRzVGFiQ29udGVudFZpZXcu
anMKQEAgLTIzLDM5ICsyMywzNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogICovCiAKLVdlYkluc3BlY3Rvci5FbGVtZW50c1RhYkNvbnRlbnRWaWV3ID0gZnVuY3Rpb24o
aWRlbnRpZmllcikKK1dlYkluc3BlY3Rvci5FbGVtZW50c1RhYkNvbnRlbnRWaWV3ID0gY2xhc3Mg
RWxlbWVudHNUYWJDb250ZW50VmlldyBleHRlbmRzIFdlYkluc3BlY3Rvci5Db250ZW50QnJvd3Nl
clRhYkNvbnRlbnRWaWV3CiB7Ci0gICAgdmFyIHRhYkJhckl0ZW0gPSBuZXcgV2ViSW5zcGVjdG9y
LlRhYkJhckl0ZW0oIkltYWdlcy9FbGVtZW50cy5zdmciLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IkVsZW1lbnRzIikpOwotICAgIHZhciBkZXRhaWxzU2lkZWJhclBhbmVscyA9IFtXZWJJbnNwZWN0
b3IuZG9tTm9kZURldGFpbHNTaWRlYmFyUGFuZWwsIFdlYkluc3BlY3Rvci5jc3NTdHlsZURldGFp
bHNTaWRlYmFyUGFuZWxdOwotCi0gICAgaWYgKFdlYkluc3BlY3Rvci5sYXllclRyZWVEZXRhaWxz
U2lkZWJhclBhbmVsKQotICAgICAgICBkZXRhaWxzU2lkZWJhclBhbmVscy5wdXNoKFdlYkluc3Bl
Y3Rvci5sYXllclRyZWVEZXRhaWxzU2lkZWJhclBhbmVsKTsKKyAgICBjb25zdHJ1Y3RvcihpZGVu
dGlmaWVyKQorICAgIHsKKyAgICAgICAgdmFyIHRhYkJhckl0ZW0gPSBuZXcgV2ViSW5zcGVjdG9y
LlRhYkJhckl0ZW0oIkltYWdlcy9FbGVtZW50cy5zdmciLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IkVsZW1lbnRzIikpOworICAgICAgICB2YXIgZGV0YWlsc1NpZGViYXJQYW5lbHMgPSBbV2ViSW5z
cGVjdG9yLmRvbU5vZGVEZXRhaWxzU2lkZWJhclBhbmVsLCBXZWJJbnNwZWN0b3IuY3NzU3R5bGVE
ZXRhaWxzU2lkZWJhclBhbmVsXTsKIAotICAgIFdlYkluc3BlY3Rvci5Db250ZW50QnJvd3NlclRh
YkNvbnRlbnRWaWV3LmNhbGwodGhpcywgaWRlbnRpZmllciB8fCAiZWxlbWVudHMiLCAiZWxlbWVu
dHMiLCB0YWJCYXJJdGVtLCBudWxsLCBkZXRhaWxzU2lkZWJhclBhbmVscywgdHJ1ZSk7CisgICAg
ICAgIGlmIChXZWJJbnNwZWN0b3IubGF5ZXJUcmVlRGV0YWlsc1NpZGViYXJQYW5lbCkKKyAgICAg
ICAgICAgIGRldGFpbHNTaWRlYmFyUGFuZWxzLnB1c2goV2ViSW5zcGVjdG9yLmxheWVyVHJlZURl
dGFpbHNTaWRlYmFyUGFuZWwpOwogCi0gICAgV2ViSW5zcGVjdG9yLmZyYW1lUmVzb3VyY2VNYW5h
Z2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkZyYW1lUmVzb3VyY2VNYW5hZ2VyLkV2
ZW50Lk1haW5GcmFtZURpZENoYW5nZSwgdGhpcy5fbWFpbkZyYW1lRGlkQ2hhbmdlLCB0aGlzKTsK
LSAgICBXZWJJbnNwZWN0b3IuRnJhbWUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRnJh
bWUuRXZlbnQuTWFpblJlc291cmNlRGlkQ2hhbmdlLCB0aGlzLl9tYWluUmVzb3VyY2VEaWRDaGFu
Z2UsIHRoaXMpOworICAgICAgICBzdXBlcihpZGVudGlmaWVyIHx8ICJlbGVtZW50cyIsICJlbGVt
ZW50cyIsIHRhYkJhckl0ZW0sIG51bGwsIGRldGFpbHNTaWRlYmFyUGFuZWxzLCB0cnVlKTsKIAot
ICAgIHRoaXMuX3Nob3dET01UcmVlQ29udGVudFZpZXcoKTsKLX07CisgICAgICAgIFdlYkluc3Bl
Y3Rvci5mcmFtZVJlc291cmNlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5G
cmFtZVJlc291cmNlTWFuYWdlci5FdmVudC5NYWluRnJhbWVEaWRDaGFuZ2UsIHRoaXMuX21haW5G
cmFtZURpZENoYW5nZSwgdGhpcyk7CisgICAgICAgIFdlYkluc3BlY3Rvci5GcmFtZS5hZGRFdmVu
dExpc3RlbmVyKFdlYkluc3BlY3Rvci5GcmFtZS5FdmVudC5NYWluUmVzb3VyY2VEaWRDaGFuZ2Us
IHRoaXMuX21haW5SZXNvdXJjZURpZENoYW5nZSwgdGhpcyk7CiAKLVdlYkluc3BlY3Rvci5FbGVt
ZW50c1RhYkNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5z
cGVjdG9yLkVsZW1lbnRzVGFiQ29udGVudFZpZXcsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0
b3IuQ29udGVudEJyb3dzZXJUYWJDb250ZW50Vmlldy5wcm90b3R5cGUsCisgICAgICAgIHRoaXMu
X3Nob3dET01UcmVlQ29udGVudFZpZXcoKTsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAg
IGdldCB0eXBlKCkKICAgICB7CiAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuRWxlbWVudHNU
YWJDb250ZW50Vmlldy5UeXBlOwotICAgIH0sCisgICAgfQogCi0gICAgY2FuU2hvd1JlcHJlc2Vu
dGVkT2JqZWN0OiBmdW5jdGlvbihyZXByZXNlbnRlZE9iamVjdCkKKyAgICBjYW5TaG93UmVwcmVz
ZW50ZWRPYmplY3QocmVwcmVzZW50ZWRPYmplY3QpCiAgICAgewogICAgICAgICByZXR1cm4gcmVw
cmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuRE9NVHJlZTsKLSAgICB9LAor
ICAgIH0KIAotICAgIHNob3dSZXByZXNlbnRlZE9iamVjdDogZnVuY3Rpb24ocmVwcmVzZW50ZWRP
YmplY3QsIGNvb2tpZSkKKyAgICBzaG93UmVwcmVzZW50ZWRPYmplY3QocmVwcmVzZW50ZWRPYmpl
Y3QsIGNvb2tpZSkKICAgICB7CiAgICAgICAgIHZhciBkb21UcmVlQ29udGVudFZpZXcgPSB0aGlz
LmNvbnRlbnRCcm93c2VyLmN1cnJlbnRDb250ZW50VmlldzsKICAgICAgICAgY29uc29sZS5hc3Nl
cnQoIWRvbVRyZWVDb250ZW50VmlldyB8fCBkb21UcmVlQ29udGVudFZpZXcgaW5zdGFuY2VvZiBX
ZWJJbnNwZWN0b3IuRE9NVHJlZUNvbnRlbnRWaWV3KTsKQEAgLTcyLDMzICs3MCwzMyBAQCBXZWJJ
bnNwZWN0b3IuRWxlbWVudHNUYWJDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIC8v
IEJlY2F1c2Ugbm9kZVRvU2VsZWN0IGlzIGVwaGVtZXJhbCwgd2UgZG9uJ3Qgd2FudCB0byBrZWVw
CiAgICAgICAgIC8vIGl0IGFyb3VuZCBpbiB0aGUgYmFjay1mb3J3YXJkIGhpc3RvcnkgZW50cmll
cy4KICAgICAgICAgY29va2llLm5vZGVUb1NlbGVjdCA9IHVuZGVmaW5lZDsKLSAgICB9LAorICAg
IH0KIAotICAgIGNsb3NlZDogZnVuY3Rpb24oKQorICAgIGNsb3NlZCgpCiAgICAgewotICAgICAg
ICBXZWJJbnNwZWN0b3IuQ29udGVudEJyb3dzZXJUYWJDb250ZW50Vmlldy5wcm90b3R5cGUuY2xv
c2VkLmNhbGwodGhpcyk7CisgICAgICAgIHN1cGVyLmNsb3NlZCgpOwogCiAgICAgICAgIFdlYklu
c3BlY3Rvci5mcmFtZVJlc291cmNlTWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKG51bGwsIG51
bGwsIHRoaXMpOwogICAgICAgICBXZWJJbnNwZWN0b3IuRnJhbWUucmVtb3ZlRXZlbnRMaXN0ZW5l
cihudWxsLCBudWxsLCB0aGlzKTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByaXZhdGUKIAot
ICAgIF9zaG93RE9NVHJlZUNvbnRlbnRWaWV3OiBmdW5jdGlvbigpCisgICAgX3Nob3dET01UcmVl
Q29udGVudFZpZXcoKQogICAgIHsKICAgICAgICAgdGhpcy5jb250ZW50QnJvd3Nlci5jb250ZW50
Vmlld0NvbnRhaW5lci5jbG9zZUFsbENvbnRlbnRWaWV3cygpOwogCiAgICAgICAgIHZhciBtYWlu
RnJhbWUgPSBXZWJJbnNwZWN0b3IuZnJhbWVSZXNvdXJjZU1hbmFnZXIubWFpbkZyYW1lOwogICAg
ICAgICBpZiAobWFpbkZyYW1lKQogICAgICAgICAgICAgdGhpcy5jb250ZW50QnJvd3Nlci5zaG93
Q29udGVudFZpZXdGb3JSZXByZXNlbnRlZE9iamVjdChtYWluRnJhbWUuZG9tVHJlZSk7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICBfbWFpbkZyYW1lRGlkQ2hhbmdlOiBmdW5jdGlvbihldmVudCkKKyAg
ICBfbWFpbkZyYW1lRGlkQ2hhbmdlKGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5fc2hvd0RP
TVRyZWVDb250ZW50VmlldygpOwotICAgIH0sCisgICAgfQogCi0gICAgX21haW5SZXNvdXJjZURp
ZENoYW5nZTogZnVuY3Rpb24oZXZlbnQpCisgICAgX21haW5SZXNvdXJjZURpZENoYW5nZShldmVu
dCkKICAgICB7CiAgICAgICAgIGlmICghZXZlbnQudGFyZ2V0LmlzTWFpbkZyYW1lKCkpCiAgICAg
ICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9Gb250UmVzb3VyY2VDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0ZvbnRSZXNvdXJjZUNvbnRlbnRWaWV3LmpzCmlu
ZGV4IGY0MWVjMjZlZWJlYTA1MzU5MmFmMjcwMzhmOTUzZWQ4MWI4YzBlZjkuLjk1Y2NiN2YwMTIw
MTUyMzc5ZGU3NzhiZjBhNTYzM2QyODIwYzQ5NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0ZvbnRSZXNvdXJjZUNvbnRlbnRWaWV3LmpzCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0ZvbnRSZXNvdXJj
ZUNvbnRlbnRWaWV3LmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMs
IDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0yMywzMiArMjMsMjQgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuRm9udFJlc291cmNlQ29udGVudFZpZXcg
PSBmdW5jdGlvbihyZXNvdXJjZSkKK1dlYkluc3BlY3Rvci5Gb250UmVzb3VyY2VDb250ZW50Vmll
dyA9IGNsYXNzIEZvbnRSZXNvdXJjZUNvbnRlbnRWaWV3IGV4dGVuZHMgV2ViSW5zcGVjdG9yLlJl
c291cmNlQ29udGVudFZpZXcKIHsKLSAgICBXZWJJbnNwZWN0b3IuUmVzb3VyY2VDb250ZW50Vmll
dy5jYWxsKHRoaXMsIHJlc291cmNlLCAiZm9udCIpOwotCi0gICAgdGhpcy5fc3R5bGVFbGVtZW50
ID0gbnVsbDsKLSAgICB0aGlzLl9wcmV2aWV3RWxlbWVudCA9IG51bGw7Ci19OwotCi1XZWJJbnNw
ZWN0b3IuRm9udFJlc291cmNlQ29udGVudFZpZXcuX3VuaXF1ZUZvbnRJZGVudGlmaWVyID0gMDsK
LQotV2ViSW5zcGVjdG9yLkZvbnRSZXNvdXJjZUNvbnRlbnRWaWV3LlByZXZpZXdMaW5lcyA9IFsi
QUJDREVGR0hJSktMTSIsICJOT1BRUlNUVVZXWFlaIiwgImFiY2RlZmdoaWprbG0iLCAibm9wcXJz
dHV2d3h5eiIsICIxMjM0NTY3ODkwIl07Ci0KLVdlYkluc3BlY3Rvci5Gb250UmVzb3VyY2VDb250
ZW50Vmlldy5NYXhpbXVtRm9udFNpemUgPSA3MjsKLVdlYkluc3BlY3Rvci5Gb250UmVzb3VyY2VD
b250ZW50Vmlldy5NaW5pbXVtRm9udFNpemUgPSAxMjsKKyAgICBjb25zdHJ1Y3RvcihyZXNvdXJj
ZSkKKyAgICB7CisgICAgICAgIHN1cGVyKHJlc291cmNlLCAiZm9udCIpOwogCi1XZWJJbnNwZWN0
b3IuRm9udFJlc291cmNlQ29udGVudFZpZXcucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9y
OiBXZWJJbnNwZWN0b3IuRm9udFJlc291cmNlQ29udGVudFZpZXcsCisgICAgICAgIHRoaXMuX3N0
eWxlRWxlbWVudCA9IG51bGw7CisgICAgICAgIHRoaXMuX3ByZXZpZXdFbGVtZW50ID0gbnVsbDsK
KyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBwcmV2aWV3RWxlbWVudCgpCiAgICAg
ewogICAgICAgICByZXR1cm4gdGhpcy5fcHJldmlld0VsZW1lbnQ7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBzaXplVG9GaXQ6IGZ1bmN0aW9uKCkKKyAgICBzaXplVG9GaXQoKQogICAgIHsKICAgICAg
ICAgaWYgKCF0aGlzLl9wcmV2aWV3RWxlbWVudCkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTU5
LDkgKzUxLDkgQEAgV2ViSW5zcGVjdG9yLkZvbnRSZXNvdXJjZUNvbnRlbnRWaWV3LnByb3RvdHlw
ZSA9IHsKICAgICAgICAgICAgIGlmICh0aGlzLl9wcmV2aWV3RWxlbWVudC5vZmZzZXRXaWR0aCA8
PSB0aGlzLmVsZW1lbnQub2Zmc2V0V2lkdGgpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KLSAgICB9LAorICAgIH0KIAotICAgIGNvbnRlbnRBdmFpbGFibGU6IGZ1bmN0aW9uKGNv
bnRlbnQsIGJhc2U2NEVuY29kZWQpCisgICAgY29udGVudEF2YWlsYWJsZShjb250ZW50LCBiYXNl
NjRFbmNvZGVkKQogICAgIHsKICAgICAgICAgdGhpcy5lbGVtZW50LnJlbW92ZUNoaWxkcmVuKCk7
CiAKQEAgLTExOCwyOCArMTEwLDI4IEBAIFdlYkluc3BlY3Rvci5Gb250UmVzb3VyY2VDb250ZW50
Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlz
Ll9wcmV2aWV3RWxlbWVudCk7CiAKICAgICAgICAgdGhpcy5zaXplVG9GaXQoKTsKLSAgICB9LAor
ICAgIH0KIAotICAgIHVwZGF0ZUxheW91dDogZnVuY3Rpb24oKQorICAgIHVwZGF0ZUxheW91dCgp
CiAgICAgewogICAgICAgICB0aGlzLnNpemVUb0ZpdCgpOwotICAgIH0sCisgICAgfQogCi0gICAg
c2hvd246IGZ1bmN0aW9uKCkKKyAgICBzaG93bigpCiAgICAgewogICAgICAgICAvLyBBZGQgdGhl
IHN0eWxlIGVsZW1lbnQgc2luY2UgaXQgaXMgcmVtb3ZlZCB3aGVuIGhpZGRlbi4KICAgICAgICAg
aWYgKHRoaXMuX3N0eWxlRWxlbWVudCkKICAgICAgICAgICAgIGRvY3VtZW50LmhlYWQuYXBwZW5k
Q2hpbGQodGhpcy5fc3R5bGVFbGVtZW50KTsKLSAgICB9LAorICAgIH0KIAotICAgIGhpZGRlbjog
ZnVuY3Rpb24oKQorICAgIGhpZGRlbigpCiAgICAgewogICAgICAgICAvLyBSZW1vdmUgdGhlIHN0
eWxlIGVsZW1lbnQgc28gaXQgd2lsbCBub3Qgc3RpY2sgYXJvdW5kIHdoZW4gdGhpcyBjb250ZW50
IHZpZXcgaXMgZGVzdHJveWVkLgogICAgICAgICBpZiAodGhpcy5fc3R5bGVFbGVtZW50ICYmIHRo
aXMuX3N0eWxlRWxlbWVudC5wYXJlbnROb2RlKQogICAgICAgICAgICAgdGhpcy5fc3R5bGVFbGVt
ZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5fc3R5bGVFbGVtZW50KTsKLSAgICB9LAor
ICAgIH0KIAotICAgIGNsb3NlZDogZnVuY3Rpb24oKQorICAgIGNsb3NlZCgpCiAgICAgewogICAg
ICAgICAvLyBUaGlzIGlzIGEgd29ya2Fyb3VuZCBmb3IgdGhlIGZhY3QgdGhhdCB0aGUgYnJvd3Nl
ciBkb2VzIG5vdCBzZW5kIGFueSBldmVudHMKICAgICAgICAgLy8gd2hlbiBhIEBmb250LWZhY2Ug
cmVzb3VyY2UgaXMgbG9hZGVkLiBTbywgd2UgYXNzdW1lIGl0IGNvdWxkIGJlIG5lZWRlZCB1bnRp
bApAQCAtMTQ4LDYgKzE0MCwxMSBAQCBXZWJJbnNwZWN0b3IuRm9udFJlc291cmNlQ29udGVudFZp
ZXcucHJvdG90eXBlID0gewogICAgICAgICBpZiAodGhpcy5fZm9udE9iamVjdFVSTCkKICAgICAg
ICAgICAgIFVSTC5yZXZva2VPYmplY3RVUkwodGhpcy5fZm9udE9iamVjdFVSTCk7CiAgICAgfQot
fTsKK30KIAotV2ViSW5zcGVjdG9yLkZvbnRSZXNvdXJjZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5f
X3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuUmVzb3VyY2VDb250ZW50Vmlldy5wcm90b3R5cGU7CitX
ZWJJbnNwZWN0b3IuRm9udFJlc291cmNlQ29udGVudFZpZXcuX3VuaXF1ZUZvbnRJZGVudGlmaWVy
ID0gMDsKKworV2ViSW5zcGVjdG9yLkZvbnRSZXNvdXJjZUNvbnRlbnRWaWV3LlByZXZpZXdMaW5l
cyA9IFsiQUJDREVGR0hJSktMTSIsICJOT1BRUlNUVVZXWFlaIiwgImFiY2RlZmdoaWprbG0iLCAi
bm9wcXJzdHV2d3h5eiIsICIxMjM0NTY3ODkwIl07CisKK1dlYkluc3BlY3Rvci5Gb250UmVzb3Vy
Y2VDb250ZW50Vmlldy5NYXhpbXVtRm9udFNpemUgPSA3MjsKK1dlYkluc3BlY3Rvci5Gb250UmVz
b3VyY2VDb250ZW50Vmlldy5NaW5pbXVtRm9udFNpemUgPSAxMjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0ZyYW1lRE9NVHJlZUNvbnRlbnRW
aWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRnJhbWVE
T01UcmVlQ29udGVudFZpZXcuanMKaW5kZXggMDI2YjhkYjU3ODQ4ODFjY2MxODdlNGM5NjQ4OWI0
YmZmZGE5YWM3NS4uYTU3Y2E2ZWZkNzJmM2YwNjA2MzRjZGNjMjI2MmE3MWM1ZWNlYzBiOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRnJhbWVE
T01UcmVlQ29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvRnJhbWVET01UcmVlQ29udGVudFZpZXcuanMKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDQ3ICsyMyw0NCBAQAog
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5G
cmFtZURPTVRyZWVDb250ZW50VmlldyA9IGZ1bmN0aW9uKGRvbVRyZWUpCitXZWJJbnNwZWN0b3Iu
RnJhbWVET01UcmVlQ29udGVudFZpZXcgPSBjbGFzcyBGcmFtZURPTVRyZWVDb250ZW50VmlldyBl
eHRlbmRzIFdlYkluc3BlY3Rvci5ET01UcmVlQ29udGVudFZpZXcKIHsKLSAgICBjb25zb2xlLmFz
c2VydChkb21UcmVlKTsKLQotICAgIFdlYkluc3BlY3Rvci5ET01UcmVlQ29udGVudFZpZXcuY2Fs
bCh0aGlzLCBkb21UcmVlKTsKLQotICAgIHRoaXMuX2RvbVRyZWUgPSBkb21UcmVlOwotICAgIHRo
aXMuX2RvbVRyZWUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRE9NVHJlZS5FdmVudC5S
b290RE9NTm9kZUludmFsaWRhdGVkLCB0aGlzLl9yb290RE9NTm9kZUludmFsaWRhdGVkLCB0aGlz
KTsKKyAgICBjb25zdHJ1Y3Rvcihkb21UcmVlKQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3Nl
cnQoZG9tVHJlZSk7CiAKLSAgICB0aGlzLl9yZXF1ZXN0Um9vdERPTU5vZGUoKTsKLX07CisgICAg
ICAgIHN1cGVyKGRvbVRyZWUpOwogCisgICAgICAgIHRoaXMuX2RvbVRyZWUgPSBkb21UcmVlOwor
ICAgICAgICB0aGlzLl9kb21UcmVlLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRPTVRy
ZWUuRXZlbnQuUm9vdERPTU5vZGVJbnZhbGlkYXRlZCwgdGhpcy5fcm9vdERPTU5vZGVJbnZhbGlk
YXRlZCwgdGhpcyk7CiAKLVdlYkluc3BlY3Rvci5GcmFtZURPTVRyZWVDb250ZW50Vmlldy5wcm90
b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5GcmFtZURPTVRyZWVDb250
ZW50VmlldywKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5ET01UcmVlQ29udGVudFZpZXcu
cHJvdG90eXBlLAorICAgICAgICB0aGlzLl9yZXF1ZXN0Um9vdERPTU5vZGUoKTsKKyAgICB9CiAK
ICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBkb21UcmVlKCkKICAgICB7CiAgICAgICAgIHJldHVy
biB0aGlzLl9kb21UcmVlOwotICAgIH0sCisgICAgfQogCi0gICAgY2xvc2VkOiBmdW5jdGlvbigp
CisgICAgY2xvc2VkKCkKICAgICB7CiAgICAgICAgIHRoaXMuX2RvbVRyZWUucmVtb3ZlRXZlbnRM
aXN0ZW5lcihudWxsLCBudWxsLCB0aGlzKTsKIAotICAgICAgICBXZWJJbnNwZWN0b3IuRE9NVHJl
ZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5jbG9zZWQuY2FsbCh0aGlzKTsKLSAgICB9LAorICAgICAg
ICBzdXBlci5jbG9zZWQoKTsKKyAgICB9CiAKLSAgICBnZXRTZWFyY2hDb250ZXh0Tm9kZXM6IGZ1
bmN0aW9uKGNhbGxiYWNrKQorICAgIGdldFNlYXJjaENvbnRleHROb2RlcyhjYWxsYmFjaykKICAg
ICB7CiAgICAgICAgIHRoaXMuX2RvbVRyZWUucmVxdWVzdFJvb3RET01Ob2RlKGZ1bmN0aW9uKHJv
b3RET01Ob2RlKSB7CiAgICAgICAgICAgICBjYWxsYmFjayhbcm9vdERPTU5vZGUuaWRdKTsKICAg
ICAgICAgfSk7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcml2YXRlCiAKLSAgICBfcm9vdERP
TU5vZGVBdmFpbGFibGU6IGZ1bmN0aW9uKHJvb3RET01Ob2RlKQorICAgIF9yb290RE9NTm9kZUF2
YWlsYWJsZShyb290RE9NTm9kZSkKICAgICB7CiAgICAgICAgIHRoaXMuZG9tVHJlZU91dGxpbmUu
cm9vdERPTU5vZGUgPSByb290RE9NTm9kZTsKIApAQCAtNzMsMTYgKzcwLDE1IEBAIFdlYkluc3Bl
Y3Rvci5GcmFtZURPTVRyZWVDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAog
ICAgICAgICB0aGlzLl9yZXN0b3JlU2VsZWN0ZWROb2RlQWZ0ZXJVcGRhdGUodGhpcy5fZG9tVHJl
ZS5mcmFtZS51cmwsIHJvb3RET01Ob2RlLmJvZHkgfHwgcm9vdERPTU5vZGUuZG9jdW1lbnRFbGVt
ZW50IHx8IHJvb3RET01Ob2RlLmZpcnN0Q2hpbGQpOwotICAgIH0sCisgICAgfQogCi0gICAgX3Jv
b3RET01Ob2RlSW52YWxpZGF0ZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9yb290RE9NTm9kZUlu
dmFsaWRhdGVkKGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5fcmVxdWVzdFJvb3RET01Ob2Rl
KCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcmVxdWVzdFJvb3RET01Ob2RlOiBmdW5jdGlvbigp
CisgICAgX3JlcXVlc3RSb290RE9NTm9kZSgpCiAgICAgewogICAgICAgICB0aGlzLl9kb21UcmVl
LnJlcXVlc3RSb290RE9NTm9kZSh0aGlzLl9yb290RE9NTm9kZUF2YWlsYWJsZS5iaW5kKHRoaXMp
KTsKICAgICB9Ci0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9HZW5lcmljUmVzb3VyY2VDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0dlbmVyaWNSZXNvdXJjZUNvbnRlbnRWaWV3
LmpzCmluZGV4IDJlYTg3Mzg2NzM0Y2MzMThhOTM4NzllM2RjMTMyMmZkZjFmMTlhN2IuLjNhNWRm
NzBjNzQ2NzUyNTViZTcxN2VhOWEwYjMxYWU1MDY5NWYyMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0dlbmVyaWNSZXNvdXJjZUNvbnRlbnRW
aWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0dl
bmVyaWNSZXNvdXJjZUNvbnRlbnRWaWV3LmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywxNSArMjMsMTAgQEAKICAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuR2VuZXJpY1Jlc291
cmNlQ29udGVudFZpZXcgPSBmdW5jdGlvbihyZXNvdXJjZSkKK1dlYkluc3BlY3Rvci5HZW5lcmlj
UmVzb3VyY2VDb250ZW50VmlldyA9IGNsYXNzIEdlbmVyaWNSZXNvdXJjZUNvbnRlbnRWaWV3IGV4
dGVuZHMgV2ViSW5zcGVjdG9yLlJlc291cmNlQ29udGVudFZpZXcKIHsKLSAgICBXZWJJbnNwZWN0
b3IuUmVzb3VyY2VDb250ZW50Vmlldy5jYWxsKHRoaXMsIHJlc291cmNlLCBXZWJJbnNwZWN0b3Iu
R2VuZXJpY1Jlc291cmNlQ29udGVudFZpZXcuU3R5bGVDbGFzc05hbWUpOworICAgIGNvbnN0cnVj
dG9yKHJlc291cmNlKQorICAgIHsKKyAgICAgICAgc3VwZXIocmVzb3VyY2UsICJnZW5lcmljIik7
CisgICAgfQogfTsKLQotV2ViSW5zcGVjdG9yLkdlbmVyaWNSZXNvdXJjZUNvbnRlbnRWaWV3LlN0
eWxlQ2xhc3NOYW1lID0gImdlbmVyaWMiOwotCi1XZWJJbnNwZWN0b3IuR2VuZXJpY1Jlc291cmNl
Q29udGVudFZpZXcucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3Iu
R2VuZXJpY1Jlc291cmNlQ29udGVudFZpZXcKLX07Ci0KLVdlYkluc3BlY3Rvci5HZW5lcmljUmVz
b3VyY2VDb250ZW50Vmlldy5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLlJlc291
cmNlQ29udGVudFZpZXcucHJvdG90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvSW1hZ2VSZXNvdXJjZUNvbnRlbnRWaWV3LmpzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvSW1hZ2VSZXNvdXJjZUNvbnRl
bnRWaWV3LmpzCmluZGV4IDI3OTY3OGMzYjY1ZDJkZGNhZDUyZWMwYzVmYjZlYjA1MmE4N2I1YjIu
LjU0ZmIxM2E4NTVlM2YwMTI0MTI5YzI4MDE4OWI2MjUxYzI4YjhmZDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0ltYWdlUmVzb3VyY2VDb250
ZW50Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9JbWFnZVJlc291cmNlQ29udGVudFZpZXcuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMy0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsMjYgKzIzLDIzIEBACiAgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkltYWdlUmVzb3Vy
Y2VDb250ZW50VmlldyA9IGZ1bmN0aW9uKHJlc291cmNlKQorV2ViSW5zcGVjdG9yLkltYWdlUmVz
b3VyY2VDb250ZW50VmlldyA9IGNsYXNzIEltYWdlUmVzb3VyY2VDb250ZW50VmlldyBleHRlbmRz
IFdlYkluc3BlY3Rvci5SZXNvdXJjZUNvbnRlbnRWaWV3CiB7Ci0gICAgV2ViSW5zcGVjdG9yLlJl
c291cmNlQ29udGVudFZpZXcuY2FsbCh0aGlzLCByZXNvdXJjZSwgV2ViSW5zcGVjdG9yLkltYWdl
UmVzb3VyY2VDb250ZW50Vmlldy5TdHlsZUNsYXNzTmFtZSk7Ci0KLSAgICB0aGlzLl9pbWFnZUVs
ZW1lbnQgPSBudWxsOwotfTsKLQotV2ViSW5zcGVjdG9yLkltYWdlUmVzb3VyY2VDb250ZW50Vmll
dy5TdHlsZUNsYXNzTmFtZSA9ICJpbWFnZSI7CisgICAgY29uc3RydWN0b3IocmVzb3VyY2UpCisg
ICAgeworICAgICAgICBzdXBlcihyZXNvdXJjZSwgImltYWdlIik7CiAKLVdlYkluc3BlY3Rvci5J
bWFnZVJlc291cmNlQ29udGVudFZpZXcucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBX
ZWJJbnNwZWN0b3IuSW1hZ2VSZXNvdXJjZUNvbnRlbnRWaWV3LAorICAgICAgICB0aGlzLl9pbWFn
ZUVsZW1lbnQgPSBudWxsOworICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IGltYWdl
RWxlbWVudCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5faW1hZ2VFbGVtZW50OwotICAg
IH0sCisgICAgfQogCi0gICAgY29udGVudEF2YWlsYWJsZTogZnVuY3Rpb24oY29udGVudCwgYmFz
ZTY0RW5jb2RlZCkKKyAgICBjb250ZW50QXZhaWxhYmxlKGNvbnRlbnQsIGJhc2U2NEVuY29kZWQp
CiAgICAgewogICAgICAgICB0aGlzLmVsZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsKIApAQCAtNTQs
NSArNTEsMyBAQCBXZWJJbnNwZWN0b3IuSW1hZ2VSZXNvdXJjZUNvbnRlbnRWaWV3LnByb3RvdHlw
ZSA9IHsKICAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2ltYWdlRWxlbWVu
dCk7CiAgICAgfQogfTsKLQotV2ViSW5zcGVjdG9yLkltYWdlUmVzb3VyY2VDb250ZW50Vmlldy5w
cm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLlJlc291cmNlQ29udGVudFZpZXcucHJv
dG90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvSW5kZXhlZERhdGFiYXNlT2JqZWN0U3RvcmVDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0luZGV4ZWREYXRhYmFzZU9iamVjdFN0
b3JlQ29udGVudFZpZXcuanMKaW5kZXggNWQ3ODRjZjlmMTgyNjQyM2I0NzY4MTM2MDlkNWYzYTIz
MTkwYjM0Mi4uMGVhOWEwYmRlNjg4MzhkNWM4YmMwYjhjNjIyN2FiNzkyNDQyNTg1MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvSW5kZXhlZERh
dGFiYXNlT2JqZWN0U3RvcmVDb250ZW50Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9JbmRleGVkRGF0YWJhc2VPYmplY3RTdG9yZUNvbnRlbnRW
aWV3LmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTUgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0yMyw5MyArMjMsOTEgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KICAqLwogCi1XZWJJbnNwZWN0b3IuSW5kZXhlZERhdGFiYXNlT2JqZWN0U3RvcmVDb250ZW50
VmlldyA9IGZ1bmN0aW9uKG9iamVjdFN0b3JlT3JJbmRleCkKK1dlYkluc3BlY3Rvci5JbmRleGVk
RGF0YWJhc2VPYmplY3RTdG9yZUNvbnRlbnRWaWV3ID0gY2xhc3MgSW5kZXhlZERhdGFiYXNlT2Jq
ZWN0U3RvcmVDb250ZW50VmlldyBleHRlbmRzIFdlYkluc3BlY3Rvci5Db250ZW50Vmlldwogewot
ICAgIFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5jYWxsKHRoaXMsIG9iamVjdFN0b3JlT3JJbmRl
eCk7Ci0KLSAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiaW5kZXhlZC1kYXRhYmFzZS1v
YmplY3Qtc3RvcmUiKTsKKyAgICBjb25zdHJ1Y3RvcihvYmplY3RTdG9yZU9ySW5kZXgpCisgICAg
eworICAgICAgICBzdXBlcihvYmplY3RTdG9yZU9ySW5kZXgpOwogCi0gICAgaWYgKG9iamVjdFN0
b3JlT3JJbmRleCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5JbmRleGVkRGF0YWJhc2VPYmplY3RT
dG9yZSkgewotICAgICAgICB0aGlzLl9vYmplY3RTdG9yZSA9IG9iamVjdFN0b3JlT3JJbmRleDsK
LSAgICAgICAgdGhpcy5fb2JqZWN0U3RvcmVJbmRleCA9IG51bGw7Ci0gICAgfSBlbHNlIGlmIChv
YmplY3RTdG9yZU9ySW5kZXggaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuSW5kZXhlZERhdGFiYXNl
T2JqZWN0U3RvcmVJbmRleCkgewotICAgICAgICB0aGlzLl9vYmplY3RTdG9yZSA9IG9iamVjdFN0
b3JlT3JJbmRleC5wYXJlbnRPYmplY3RTdG9yZTsKLSAgICAgICAgdGhpcy5fb2JqZWN0U3RvcmVJ
bmRleCA9IG9iamVjdFN0b3JlT3JJbmRleDsKLSAgICB9CisgICAgICAgIHRoaXMuZWxlbWVudC5j
bGFzc0xpc3QuYWRkKCJpbmRleGVkLWRhdGFiYXNlLW9iamVjdC1zdG9yZSIpOwogCi0gICAgZnVu
Y3Rpb24gZGlzcGxheUtleVBhdGgoa2V5UGF0aCkKLSAgICB7Ci0gICAgICAgIGlmICgha2V5UGF0
aCkKLSAgICAgICAgICAgIHJldHVybiAiIjsKLSAgICAgICAgaWYgKGtleVBhdGggaW5zdGFuY2Vv
ZiBBcnJheSkKLSAgICAgICAgICAgIHJldHVybiBrZXlQYXRoLmpvaW4oV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCIsICIpKTsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoa2V5UGF0aCBpbnN0YW5jZW9m
IFN0cmluZyB8fCB0eXBlb2Yga2V5UGF0aCA9PT0gInN0cmluZyIpOwotICAgICAgICByZXR1cm4g
a2V5UGF0aDsKLSAgICB9CisgICAgICAgIGlmIChvYmplY3RTdG9yZU9ySW5kZXggaW5zdGFuY2Vv
ZiBXZWJJbnNwZWN0b3IuSW5kZXhlZERhdGFiYXNlT2JqZWN0U3RvcmUpIHsKKyAgICAgICAgICAg
IHRoaXMuX29iamVjdFN0b3JlID0gb2JqZWN0U3RvcmVPckluZGV4OworICAgICAgICAgICAgdGhp
cy5fb2JqZWN0U3RvcmVJbmRleCA9IG51bGw7CisgICAgICAgIH0gZWxzZSBpZiAob2JqZWN0U3Rv
cmVPckluZGV4IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkluZGV4ZWREYXRhYmFzZU9iamVjdFN0
b3JlSW5kZXgpIHsKKyAgICAgICAgICAgIHRoaXMuX29iamVjdFN0b3JlID0gb2JqZWN0U3RvcmVP
ckluZGV4LnBhcmVudE9iamVjdFN0b3JlOworICAgICAgICAgICAgdGhpcy5fb2JqZWN0U3RvcmVJ
bmRleCA9IG9iamVjdFN0b3JlT3JJbmRleDsKKyAgICAgICAgfQogCi0gICAgdmFyIGRpc3BsYXlQ
cmltYXJ5S2V5UGF0aCA9IGRpc3BsYXlLZXlQYXRoKHRoaXMuX29iamVjdFN0b3JlLmtleVBhdGgp
OwotCi0gICAgdmFyIGNvbHVtbkluZm8gPSB7Ci0gICAgICAgIHByaW1hcnlLZXk6IHt0aXRsZTog
ZGlzcGxheVByaW1hcnlLZXlQYXRoID8gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJQcmltYXJ5IEtl
eSBcdTIwMTQgJXMiKS5mb3JtYXQoZGlzcGxheVByaW1hcnlLZXlQYXRoKSA6IFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiUHJpbWFyeSBLZXkiKX0sCi0gICAgICAgIGtleToge30sCi0gICAgICAgIHZh
bHVlOiB7dGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiVmFsdWUiKX0KLSAgICB9OwotCi0g
ICAgaWYgKHRoaXMuX29iamVjdFN0b3JlSW5kZXgpIHsKLSAgICAgICAgLy8gV2hlbiB0aGVyZSBp
cyBhbiBpbmRleCwgc2hvdyB0aGUga2V5IHBhdGggaW4gdGhlIEtleSBjb2x1bW4uCi0gICAgICAg
IHZhciBkaXNwbGF5SW5kZXhLZXlQYXRoID0gZGlzcGxheUtleVBhdGgodGhpcy5fb2JqZWN0U3Rv
cmVJbmRleC5rZXlQYXRoKTsKLSAgICAgICAgY29sdW1uSW5mby5rZXkudGl0bGUgPSBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIkluZGV4IEtleSBcdTIwMTQgJXMiKS5mb3JtYXQoZGlzcGxheUluZGV4
S2V5UGF0aCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgLy8gT25seSBuZWVkIHRvIHNob3cgS2V5
IGZvciBpbmRleGVzIC0tIGl0IGlzIHRoZSBzYW1lIGFzIFByaW1hcnkgS2V5Ci0gICAgICAgIC8v
IHdoZW4gdGhlcmUgaXMgbm8gaW5kZXggYmVpbmcgdXNlZC4KLSAgICAgICAgZGVsZXRlIGNvbHVt
bkluZm8ua2V5OwotICAgIH0KKyAgICAgICAgZnVuY3Rpb24gZGlzcGxheUtleVBhdGgoa2V5UGF0
aCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFrZXlQYXRoKQorICAgICAgICAgICAgICAg
IHJldHVybiAiIjsKKyAgICAgICAgICAgIGlmIChrZXlQYXRoIGluc3RhbmNlb2YgQXJyYXkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIGtleVBhdGguam9pbihXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IiwgIikpOworICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoa2V5UGF0aCBpbnN0YW5jZW9mIFN0
cmluZyB8fCB0eXBlb2Yga2V5UGF0aCA9PT0gInN0cmluZyIpOworICAgICAgICAgICAgcmV0dXJu
IGtleVBhdGg7CisgICAgICAgIH0KIAotICAgIHRoaXMuX2RhdGFHcmlkID0gbmV3IFdlYkluc3Bl
Y3Rvci5EYXRhR3JpZChjb2x1bW5JbmZvKTsKLSAgICB0aGlzLl9kYXRhR3JpZC5zY3JvbGxDb250
YWluZXIuYWRkRXZlbnRMaXN0ZW5lcigic2Nyb2xsIiwgdGhpcy5fZGF0YUdyaWRTY3JvbGxlZC5i
aW5kKHRoaXMpKTsKLSAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fZGF0YUdyaWQu
ZWxlbWVudCk7CisgICAgICAgIHZhciBkaXNwbGF5UHJpbWFyeUtleVBhdGggPSBkaXNwbGF5S2V5
UGF0aCh0aGlzLl9vYmplY3RTdG9yZS5rZXlQYXRoKTsKKworICAgICAgICB2YXIgY29sdW1uSW5m
byA9IHsKKyAgICAgICAgICAgIHByaW1hcnlLZXk6IHt0aXRsZTogZGlzcGxheVByaW1hcnlLZXlQ
YXRoID8gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJQcmltYXJ5IEtleSBcdTIwMTQgJXMiKS5mb3Jt
YXQoZGlzcGxheVByaW1hcnlLZXlQYXRoKSA6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiUHJpbWFy
eSBLZXkiKX0sCisgICAgICAgICAgICBrZXk6IHt9LAorICAgICAgICAgICAgdmFsdWU6IHt0aXRs
ZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJWYWx1ZSIpfQorICAgICAgICB9OworCisgICAgICAg
IGlmICh0aGlzLl9vYmplY3RTdG9yZUluZGV4KSB7CisgICAgICAgICAgICAvLyBXaGVuIHRoZXJl
IGlzIGFuIGluZGV4LCBzaG93IHRoZSBrZXkgcGF0aCBpbiB0aGUgS2V5IGNvbHVtbi4KKyAgICAg
ICAgICAgIHZhciBkaXNwbGF5SW5kZXhLZXlQYXRoID0gZGlzcGxheUtleVBhdGgodGhpcy5fb2Jq
ZWN0U3RvcmVJbmRleC5rZXlQYXRoKTsKKyAgICAgICAgICAgIGNvbHVtbkluZm8ua2V5LnRpdGxl
ID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJJbmRleCBLZXkgXHUyMDE0ICVzIikuZm9ybWF0KGRp
c3BsYXlJbmRleEtleVBhdGgpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gT25s
eSBuZWVkIHRvIHNob3cgS2V5IGZvciBpbmRleGVzIC0tIGl0IGlzIHRoZSBzYW1lIGFzIFByaW1h
cnkgS2V5CisgICAgICAgICAgICAvLyB3aGVuIHRoZXJlIGlzIG5vIGluZGV4IGJlaW5nIHVzZWQu
CisgICAgICAgICAgICBkZWxldGUgY29sdW1uSW5mby5rZXk7CisgICAgICAgIH0KIAotICAgIHRo
aXMuX2VudHJpZXMgPSBbXTsKKyAgICAgICAgdGhpcy5fZGF0YUdyaWQgPSBuZXcgV2ViSW5zcGVj
dG9yLkRhdGFHcmlkKGNvbHVtbkluZm8pOworICAgICAgICB0aGlzLl9kYXRhR3JpZC5zY3JvbGxD
b250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcigic2Nyb2xsIiwgdGhpcy5fZGF0YUdyaWRTY3JvbGxl
ZC5iaW5kKHRoaXMpKTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2Rh
dGFHcmlkLmVsZW1lbnQpOwogCi0gICAgdGhpcy5fZmV0Y2hNb3JlRGF0YSgpOworICAgICAgICB0
aGlzLl9lbnRyaWVzID0gW107CiAKLSAgICB0aGlzLl9yZWZyZXNoQnV0dG9uTmF2aWdhdGlvbkl0
ZW0gPSBuZXcgV2ViSW5zcGVjdG9yLkJ1dHRvbk5hdmlnYXRpb25JdGVtKCJpbmRleGVkLWRhdGFi
YXNlLW9iamVjdC1zdG9yZS1yZWZyZXNoIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZWZyZXNo
IiksICJJbWFnZXMvUmVsb2FkRnVsbC5zdmciLCAxMywgMTMpOwotICAgIHRoaXMuX3JlZnJlc2hC
dXR0b25OYXZpZ2F0aW9uSXRlbS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5CdXR0b25O
YXZpZ2F0aW9uSXRlbS5FdmVudC5DbGlja2VkLCB0aGlzLl9yZWZyZXNoQnV0dG9uQ2xpY2tlZCwg
dGhpcyk7Ci19OworICAgICAgICB0aGlzLl9mZXRjaE1vcmVEYXRhKCk7CiAKLVdlYkluc3BlY3Rv
ci5JbmRleGVkRGF0YWJhc2VPYmplY3RTdG9yZUNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKLSAg
ICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkluZGV4ZWREYXRhYmFzZU9iamVjdFN0b3JlQ29u
dGVudFZpZXcsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcucHJvdG90
eXBlLAorICAgICAgICB0aGlzLl9yZWZyZXNoQnV0dG9uTmF2aWdhdGlvbkl0ZW0gPSBuZXcgV2Vi
SW5zcGVjdG9yLkJ1dHRvbk5hdmlnYXRpb25JdGVtKCJpbmRleGVkLWRhdGFiYXNlLW9iamVjdC1z
dG9yZS1yZWZyZXNoIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZWZyZXNoIiksICJJbWFnZXMv
UmVsb2FkRnVsbC5zdmciLCAxMywgMTMpOworICAgICAgICB0aGlzLl9yZWZyZXNoQnV0dG9uTmF2
aWdhdGlvbkl0ZW0uYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlv
bkl0ZW0uRXZlbnQuQ2xpY2tlZCwgdGhpcy5fcmVmcmVzaEJ1dHRvbkNsaWNrZWQsIHRoaXMpOwor
ICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IG5hdmlnYXRpb25JdGVtcygpCiAgICAg
ewogICAgICAgICByZXR1cm4gW3RoaXMuX3JlZnJlc2hCdXR0b25OYXZpZ2F0aW9uSXRlbV07Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBjbG9zZWQ6IGZ1bmN0aW9uKCkKKyAgICBjbG9zZWQoKQogICAg
IHsKICAgICAgICAgdGhpcy5fcmVzZXQoKTsKLSAgICB9LAorICAgIH0KIAotICAgIHNhdmVUb0Nv
b2tpZTogZnVuY3Rpb24oY29va2llKQorICAgIHNhdmVUb0Nvb2tpZShjb29raWUpCiAgICAgewog
ICAgICAgICBjb29raWUudHlwZSA9IFdlYkluc3BlY3Rvci5Db250ZW50Vmlld0Nvb2tpZVR5cGUu
SW5kZXhlZERhdGFiYXNlT2JqZWN0U3RvcmU7CiAgICAgICAgIGNvb2tpZS5zZWN1cml0eU9yaWdp
biA9IHRoaXMuX29iamVjdFN0b3JlLnBhcmVudERhdGFiYXNlLnNlY3VyaXR5T3JpZ2luOwogICAg
ICAgICBjb29raWUuZGF0YWJhc2VOYW1lID0gdGhpcy5fb2JqZWN0U3RvcmUucGFyZW50RGF0YWJh
c2UubmFtZTsKICAgICAgICAgY29va2llLm9iamVjdFN0b3JlTmFtZSA9IHRoaXMuX29iamVjdFN0
b3JlLm5hbWU7CiAgICAgICAgIGNvb2tpZS5vYmplY3RTdG9yZUluZGV4TmFtZSA9IHRoaXMuX29i
amVjdFN0b3JlSW5kZXggJiYgdGhpcy5fb2JqZWN0U3RvcmVJbmRleC5uYW1lOwotICAgIH0sCisg
ICAgfQogCi0gICAgdXBkYXRlTGF5b3V0OiBmdW5jdGlvbigpCisgICAgdXBkYXRlTGF5b3V0KCkK
ICAgICB7CiAgICAgICAgIHRoaXMuX2RhdGFHcmlkLnVwZGF0ZUxheW91dCgpOwotICAgIH0sCisg
ICAgfQogCiAgICAgLy8gUHJpdmF0ZQogCi0gICAgX3Jlc2V0OiBmdW5jdGlvbigpCisgICAgX3Jl
c2V0KCkKICAgICB7CiAgICAgICAgIGZvciAodmFyIGVudHJ5IG9mIHRoaXMuX2VudHJpZXMpIHsK
ICAgICAgICAgICAgIGVudHJ5LnByaW1hcnlLZXkucmVsZWFzZSgpOwpAQCAtMTE5LDE3ICsxMTcs
MTcgQEAgV2ViSW5zcGVjdG9yLkluZGV4ZWREYXRhYmFzZU9iamVjdFN0b3JlQ29udGVudFZpZXcu
cHJvdG90eXBlID0gewogCiAgICAgICAgIHRoaXMuX2VudHJpZXMgPSBbXTsKICAgICAgICAgdGhp
cy5fZGF0YUdyaWQucmVtb3ZlQ2hpbGRyZW4oKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9kYXRh
R3JpZFNjcm9sbGVkOiBmdW5jdGlvbigpCisgICAgX2RhdGFHcmlkU2Nyb2xsZWQoKQogICAgIHsK
ICAgICAgICAgaWYgKCF0aGlzLl9tb3JlRW50cmllc0F2YWlsYWJsZSB8fCAhdGhpcy5fZGF0YUdy
aWQuaXNTY3JvbGxlZFRvTGFzdFJvdygpKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAg
IHRoaXMuX2ZldGNoTW9yZURhdGEoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9mZXRjaE1vcmVE
YXRhOiBmdW5jdGlvbigpCisgICAgX2ZldGNoTW9yZURhdGEoKQogICAgIHsKICAgICAgICAgaWYg
KHRoaXMuX2ZldGNoaW5nTW9yZURhdGEpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0xNTMsOSAr
MTUxLDkgQEAgV2ViSW5zcGVjdG9yLkluZGV4ZWREYXRhYmFzZU9iamVjdFN0b3JlQ29udGVudFZp
ZXcucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9mZXRjaGluZ01vcmVEYXRhID0gdHJ1ZTsK
IAogICAgICAgICBXZWJJbnNwZWN0b3Iuc3RvcmFnZU1hbmFnZXIucmVxdWVzdEluZGV4ZWREYXRh
YmFzZURhdGEodGhpcy5fb2JqZWN0U3RvcmUsIHRoaXMuX29iamVjdFN0b3JlSW5kZXgsIHRoaXMu
X2VudHJpZXMubGVuZ3RoLCAyNSwgcHJvY2Vzc0VudHJpZXMuYmluZCh0aGlzKSk7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBfcmVmcmVzaEJ1dHRvbkNsaWNrZWQ6IGZ1bmN0aW9uKCkKKyAgICBfcmVm
cmVzaEJ1dHRvbkNsaWNrZWQoKQogICAgIHsKICAgICAgICAgdGhpcy5fcmVzZXQoKTsKICAgICAg
ICAgdGhpcy5fZmV0Y2hNb3JlRGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTG9nQ29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Mb2dDb250ZW50Vmlldy5qcwppbmRleCBlOTBk
NWVhY2ExYTljYTY0MTY3NWUzZDQwYzkwODFkNGFkOTg4OThlLi4xNTRjYjM3OWE5M2RhYWFkMTE4
NWIwMDRkNjg5MjM3NjZmYTNkMTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9Mb2dDb250ZW50Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Mb2dDb250ZW50Vmlldy5qcwpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjUsODEgKzI1
LDY2IEBACiAKIC8vIEZJWE1FOiA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTQzNTQ1PiBXZWIgSW5z
cGVjdG9yOiBMb2dDb250ZW50VmlldyBzaG91bGQgdXNlIGhpZ2hlciBsZXZlbCBvYmplY3RzCiAK
LVdlYkluc3BlY3Rvci5Mb2dDb250ZW50VmlldyA9IGZ1bmN0aW9uKHJlcHJlc2VudGVkT2JqZWN0
KQorV2ViSW5zcGVjdG9yLkxvZ0NvbnRlbnRWaWV3ID0gY2xhc3MgTG9nQ29udGVudFZpZXcgZXh0
ZW5kcyBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcKIHsKLSAgICBXZWJJbnNwZWN0b3IuQ29udGVu
dFZpZXcuY2FsbCh0aGlzLCByZXByZXNlbnRlZE9iamVjdCk7CisgICAgY29uc3RydWN0b3IocmVw
cmVzZW50ZWRPYmplY3QpCisgICAgeworICAgICAgICBzdXBlcihyZXByZXNlbnRlZE9iamVjdCk7
CiAKLSAgICB0aGlzLl9uZXN0aW5nTGV2ZWwgPSAwOwotICAgIHRoaXMuX3NlbGVjdGVkTWVzc2Fn
ZXMgPSBbXTsKKyAgICAgICAgdGhpcy5fbmVzdGluZ0xldmVsID0gMDsKKyAgICAgICAgdGhpcy5f
c2VsZWN0ZWRNZXNzYWdlcyA9IFtdOwogCi0gICAgLy8gRklYTUU6IFRyeSB0byB1c2UgYSBtYXJr
ZXIsIGluc3RlYWQgb2YgYSBsaXN0IG9mIG1lc3NhZ2VzIHRoYXQgZ2V0IHJlLWFkZGVkLgotICAg
IHRoaXMuX3Byb3Zpc2lvbmFsTWVzc2FnZXMgPSBbXTsKKyAgICAgICAgLy8gRklYTUU6IFRyeSB0
byB1c2UgYSBtYXJrZXIsIGluc3RlYWQgb2YgYSBsaXN0IG9mIG1lc3NhZ2VzIHRoYXQgZ2V0IHJl
LWFkZGVkLgorICAgICAgICB0aGlzLl9wcm92aXNpb25hbE1lc3NhZ2VzID0gW107CiAKLSAgICB0
aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgibG9nIik7CisgICAgICAgIHRoaXMuZWxlbWVudC5j
bGFzc0xpc3QuYWRkKCJsb2ciKTsKIAotICAgIHRoaXMubWVzc2FnZXNFbGVtZW50ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgdGhpcy5tZXNzYWdlc0VsZW1lbnQuY2xhc3NO
YW1lID0gImNvbnNvbGUtbWVzc2FnZXMiOwotICAgIHRoaXMubWVzc2FnZXNFbGVtZW50LnRhYklu
ZGV4ID0gMDsKLSAgICB0aGlzLm1lc3NhZ2VzRWxlbWVudC5zZXRBdHRyaWJ1dGUoInJvbGUiLCAi
bG9nIik7Ci0gICAgdGhpcy5tZXNzYWdlc0VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vk
b3duIiwgdGhpcy5fbW91c2Vkb3duLmJpbmQodGhpcykpOwotICAgIHRoaXMubWVzc2FnZXNFbGVt
ZW50LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLCB0aGlzLl9rZXlEb3duLmJpbmQodGhpcykp
OwotICAgIHRoaXMubWVzc2FnZXNFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImRyYWdzdGFydCIs
IHRoaXMuX29uZHJhZ3N0YXJ0LmJpbmQodGhpcyksIHRydWUpOwotICAgIHRoaXMuZWxlbWVudC5h
cHBlbmRDaGlsZCh0aGlzLm1lc3NhZ2VzRWxlbWVudCk7CisgICAgICAgIHRoaXMubWVzc2FnZXNF
bGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIHRoaXMubWVz
c2FnZXNFbGVtZW50LmNsYXNzTGlzdC5hZGQoImNvbnNvbGUtbWVzc2FnZXMiKTsKKyAgICAgICAg
dGhpcy5tZXNzYWdlc0VsZW1lbnQudGFiSW5kZXggPSAwOworICAgICAgICB0aGlzLm1lc3NhZ2Vz
RWxlbWVudC5zZXRBdHRyaWJ1dGUoInJvbGUiLCAibG9nIik7CisgICAgICAgIHRoaXMubWVzc2Fn
ZXNFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsIHRoaXMuX21vdXNlZG93bi5i
aW5kKHRoaXMpKTsKKyAgICAgICAgdGhpcy5tZXNzYWdlc0VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5l
cigia2V5ZG93biIsIHRoaXMuX2tleURvd24uYmluZCh0aGlzKSk7CisgICAgICAgIHRoaXMubWVz
c2FnZXNFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImRyYWdzdGFydCIsIHRoaXMuX29uZHJhZ3N0
YXJ0LmJpbmQodGhpcyksIHRydWUpOworICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQo
dGhpcy5tZXNzYWdlc0VsZW1lbnQpOwogCi0gICAgdGhpcy5wcm9tcHQgPSBXZWJJbnNwZWN0b3Iu
cXVpY2tDb25zb2xlLnByb21wdDsKKyAgICAgICAgdGhpcy5wcm9tcHQgPSBXZWJJbnNwZWN0b3Iu
cXVpY2tDb25zb2xlLnByb21wdDsKIAotICAgIHRoaXMuX2tleWJvYXJkU2hvcnRjdXRDb21tYW5k
QSA9IG5ldyBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dChXZWJJbnNwZWN0b3IuS2V5Ym9h
cmRTaG9ydGN1dC5Nb2RpZmllci5Db21tYW5kT3JDb250cm9sLCAiQSIpOwotICAgIHRoaXMuX2tl
eWJvYXJkU2hvcnRjdXRFc2MgPSBuZXcgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQobnVs
bCwgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuS2V5LkVzY2FwZSk7CisgICAgICAgIHRo
aXMuX2tleWJvYXJkU2hvcnRjdXRDb21tYW5kQSA9IG5ldyBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRT
aG9ydGN1dChXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmllci5Db21tYW5kT3JD
b250cm9sLCAiQSIpOworICAgICAgICB0aGlzLl9rZXlib2FyZFNob3J0Y3V0RXNjID0gbmV3IFdl
Ykluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0KG51bGwsIFdlYkluc3BlY3Rvci5LZXlib2FyZFNo
b3J0Y3V0LktleS5Fc2NhcGUpOwogCi0gICAgdGhpcy5fbG9nVmlld0NvbnRyb2xsZXIgPSBuZXcg
V2ViSW5zcGVjdG9yLkphdmFTY3JpcHRMb2dWaWV3Q29udHJvbGxlcih0aGlzLm1lc3NhZ2VzRWxl
bWVudCwgdGhpcy5lbGVtZW50LCB0aGlzLnByb21wdCwgdGhpcywgImNvbnNvbGUtcHJvbXB0LWhp
c3RvcnkiKTsKLSAgICB0aGlzLl9sYXN0TWVzc2FnZVZpZXcgPSBudWxsOworICAgICAgICB0aGlz
Ll9sb2dWaWV3Q29udHJvbGxlciA9IG5ldyBXZWJJbnNwZWN0b3IuSmF2YVNjcmlwdExvZ1ZpZXdD
b250cm9sbGVyKHRoaXMubWVzc2FnZXNFbGVtZW50LCB0aGlzLmVsZW1lbnQsIHRoaXMucHJvbXB0
LCB0aGlzLCAiY29uc29sZS1wcm9tcHQtaGlzdG9yeSIpOworICAgICAgICB0aGlzLl9sYXN0TWVz
c2FnZVZpZXcgPSBudWxsOwogCi0gICAgdGhpcy5fc2VhcmNoQmFyID0gbmV3IFdlYkluc3BlY3Rv
ci5TZWFyY2hCYXIoImxvZy1zZWFyY2gtYmFyIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJGaWx0
ZXIgQ29uc29sZSBMb2ciKSwgdGhpcyk7Ci0gICAgdGhpcy5fc2VhcmNoQmFyLmFkZEV2ZW50TGlz
dGVuZXIoV2ViSW5zcGVjdG9yLlNlYXJjaEJhci5FdmVudC5UZXh0Q2hhbmdlZCwgdGhpcy5fc2Vh
cmNoVGV4dERpZENoYW5nZSwgdGhpcyk7CisgICAgICAgIHRoaXMuX3NlYXJjaEJhciA9IG5ldyBX
ZWJJbnNwZWN0b3IuU2VhcmNoQmFyKCJsb2ctc2VhcmNoLWJhciIsIFdlYkluc3BlY3Rvci5VSVN0
cmluZygiRmlsdGVyIENvbnNvbGUgTG9nIiksIHRoaXMpOworICAgICAgICB0aGlzLl9zZWFyY2hC
YXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuU2VhcmNoQmFyLkV2ZW50LlRleHRDaGFu
Z2VkLCB0aGlzLl9zZWFyY2hUZXh0RGlkQ2hhbmdlLCB0aGlzKTsKIAotICAgIHZhciBzY29wZUJh
ckl0ZW1zID0gWwotICAgICAgICBuZXcgV2ViSW5zcGVjdG9yLlNjb3BlQmFySXRlbShXZWJJbnNw
ZWN0b3IuTG9nQ29udGVudFZpZXcuU2NvcGVzLkFsbCwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJB
bGwiKSwgdHJ1ZSksCi0gICAgICAgIG5ldyBXZWJJbnNwZWN0b3IuU2NvcGVCYXJJdGVtKFdlYklu
c3BlY3Rvci5Mb2dDb250ZW50Vmlldy5TY29wZXMuRXJyb3JzLCBXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIkVycm9ycyIpLCBmYWxzZSwgImVycm9ycyIpLAotICAgICAgICBuZXcgV2ViSW5zcGVjdG9y
LlNjb3BlQmFySXRlbShXZWJJbnNwZWN0b3IuTG9nQ29udGVudFZpZXcuU2NvcGVzLldhcm5pbmdz
LCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIldhcm5pbmdzIiksIGZhbHNlLCAid2FybmluZ3MiKSwK
LSAgICAgICAgbmV3IFdlYkluc3BlY3Rvci5TY29wZUJhckl0ZW0oV2ViSW5zcGVjdG9yLkxvZ0Nv
bnRlbnRWaWV3LlNjb3Blcy5Mb2dzLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkxvZ3MiKSwgZmFs
c2UsICJsb2dzIikKLSAgICBdOworICAgICAgICB2YXIgc2NvcGVCYXJJdGVtcyA9IFsKKyAgICAg
ICAgICAgIG5ldyBXZWJJbnNwZWN0b3IuU2NvcGVCYXJJdGVtKFdlYkluc3BlY3Rvci5Mb2dDb250
ZW50Vmlldy5TY29wZXMuQWxsLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkFsbCIpLCB0cnVlKSwK
KyAgICAgICAgICAgIG5ldyBXZWJJbnNwZWN0b3IuU2NvcGVCYXJJdGVtKFdlYkluc3BlY3Rvci5M
b2dDb250ZW50Vmlldy5TY29wZXMuRXJyb3JzLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkVycm9y
cyIpLCBmYWxzZSwgImVycm9ycyIpLAorICAgICAgICAgICAgbmV3IFdlYkluc3BlY3Rvci5TY29w
ZUJhckl0ZW0oV2ViSW5zcGVjdG9yLkxvZ0NvbnRlbnRWaWV3LlNjb3Blcy5XYXJuaW5ncywgV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJXYXJuaW5ncyIpLCBmYWxzZSwgIndhcm5pbmdzIiksCisgICAg
ICAgICAgICBuZXcgV2ViSW5zcGVjdG9yLlNjb3BlQmFySXRlbShXZWJJbnNwZWN0b3IuTG9nQ29u
dGVudFZpZXcuU2NvcGVzLkxvZ3MsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiTG9ncyIpLCBmYWxz
ZSwgImxvZ3MiKQorICAgICAgICBdOwogCi0gICAgdGhpcy5fc2NvcGVCYXIgPSBuZXcgV2ViSW5z
cGVjdG9yLlNjb3BlQmFyKCJsb2ctc2NvcGUtYmFyIiwgc2NvcGVCYXJJdGVtcywgc2NvcGVCYXJJ
dGVtc1swXSk7Ci0gICAgdGhpcy5fc2NvcGVCYXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0
b3IuU2NvcGVCYXIuRXZlbnQuU2VsZWN0aW9uQ2hhbmdlZCwgdGhpcy5fc2NvcGVCYXJTZWxlY3Rp
b25EaWRDaGFuZ2UsIHRoaXMpOworICAgICAgICB0aGlzLl9zY29wZUJhciA9IG5ldyBXZWJJbnNw
ZWN0b3IuU2NvcGVCYXIoImxvZy1zY29wZS1iYXIiLCBzY29wZUJhckl0ZW1zLCBzY29wZUJhckl0
ZW1zWzBdKTsKKyAgICAgICAgdGhpcy5fc2NvcGVCYXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNw
ZWN0b3IuU2NvcGVCYXIuRXZlbnQuU2VsZWN0aW9uQ2hhbmdlZCwgdGhpcy5fc2NvcGVCYXJTZWxl
Y3Rpb25EaWRDaGFuZ2UsIHRoaXMpOwogCi0gICAgdGhpcy5fY2xlYXJMb2dOYXZpZ2F0aW9uSXRl
bSA9IG5ldyBXZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0ZW0oImNsZWFyLWxvZyIsIFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiQ2xlYXIgbG9nICglcyBvciAlcykiKS5mb3JtYXQodGhpcy5f
bG9nVmlld0NvbnRyb2xsZXIubWVzc2FnZXNDbGVhcktleWJvYXJkU2hvcnRjdXQuZGlzcGxheU5h
bWUsIHRoaXMuX2xvZ1ZpZXdDb250cm9sbGVyLm1lc3NhZ2VzQWx0ZXJuYXRlQ2xlYXJLZXlib2Fy
ZFNob3J0Y3V0LmRpc3BsYXlOYW1lKSwgIkltYWdlcy9OYXZpZ2F0aW9uSXRlbVRyYXNoLnN2ZyIs
IDE1LCAxNSk7Ci0gICAgdGhpcy5fY2xlYXJMb2dOYXZpZ2F0aW9uSXRlbS5hZGRFdmVudExpc3Rl
bmVyKFdlYkluc3BlY3Rvci5CdXR0b25OYXZpZ2F0aW9uSXRlbS5FdmVudC5DbGlja2VkLCB0aGlz
Ll9jbGVhckxvZywgdGhpcyk7CisgICAgICAgIHRoaXMuX2NsZWFyTG9nTmF2aWdhdGlvbkl0ZW0g
PSBuZXcgV2ViSW5zcGVjdG9yLkJ1dHRvbk5hdmlnYXRpb25JdGVtKCJjbGVhci1sb2ciLCBXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIkNsZWFyIGxvZyAoJXMgb3IgJXMpIikuZm9ybWF0KHRoaXMuX2xv
Z1ZpZXdDb250cm9sbGVyLm1lc3NhZ2VzQ2xlYXJLZXlib2FyZFNob3J0Y3V0LmRpc3BsYXlOYW1l
LCB0aGlzLl9sb2dWaWV3Q29udHJvbGxlci5tZXNzYWdlc0FsdGVybmF0ZUNsZWFyS2V5Ym9hcmRT
aG9ydGN1dC5kaXNwbGF5TmFtZSksICJJbWFnZXMvTmF2aWdhdGlvbkl0ZW1UcmFzaC5zdmciLCAx
NSwgMTUpOworICAgICAgICB0aGlzLl9jbGVhckxvZ05hdmlnYXRpb25JdGVtLmFkZEV2ZW50TGlz
dGVuZXIoV2ViSW5zcGVjdG9yLkJ1dHRvbk5hdmlnYXRpb25JdGVtLkV2ZW50LkNsaWNrZWQsIHRo
aXMuX2NsZWFyTG9nLCB0aGlzKTsKIAotICAgIHZhciB0b29sVGlwID0gV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJTaG93IGNvbnNvbGUgdGFiIik7Ci0gICAgdGhpcy5fc2hvd0NvbnNvbGVUYWJOYXZp
Z2F0aW9uSXRlbSA9IG5ldyBXZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0ZW0oInNob3ct
dGFiIiwgdG9vbFRpcCwgIkltYWdlcy9TcGxpdFRvZ2dsZVVwLnN2ZyIsIDE2LCAxNik7Ci0gICAg
dGhpcy5fc2hvd0NvbnNvbGVUYWJOYXZpZ2F0aW9uSXRlbS5hZGRFdmVudExpc3RlbmVyKFdlYklu
c3BlY3Rvci5CdXR0b25OYXZpZ2F0aW9uSXRlbS5FdmVudC5DbGlja2VkLCB0aGlzLl9zaG93Q29u
c29sZVRhYiwgdGhpcyk7CisgICAgICAgIHZhciB0b29sVGlwID0gV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJTaG93IGNvbnNvbGUgdGFiIik7CisgICAgICAgIHRoaXMuX3Nob3dDb25zb2xlVGFiTmF2
aWdhdGlvbkl0ZW0gPSBuZXcgV2ViSW5zcGVjdG9yLkJ1dHRvbk5hdmlnYXRpb25JdGVtKCJzaG93
LXRhYiIsIHRvb2xUaXAsICJJbWFnZXMvU3BsaXRUb2dnbGVVcC5zdmciLCAxNiwgMTYpOworICAg
ICAgICB0aGlzLl9zaG93Q29uc29sZVRhYk5hdmlnYXRpb25JdGVtLmFkZEV2ZW50TGlzdGVuZXIo
V2ViSW5zcGVjdG9yLkJ1dHRvbk5hdmlnYXRpb25JdGVtLkV2ZW50LkNsaWNrZWQsIHRoaXMuX3No
b3dDb25zb2xlVGFiLCB0aGlzKTsKIAotICAgIHRoaXMubWVzc2FnZXNFbGVtZW50LmFkZEV2ZW50
TGlzdGVuZXIoImNvbnRleHRtZW51IiwgdGhpcy5faGFuZGxlQ29udGV4dE1lbnVFdmVudC5iaW5k
KHRoaXMpLCBmYWxzZSk7CisgICAgICAgIHRoaXMubWVzc2FnZXNFbGVtZW50LmFkZEV2ZW50TGlz
dGVuZXIoImNvbnRleHRtZW51IiwgdGhpcy5faGFuZGxlQ29udGV4dE1lbnVFdmVudC5iaW5kKHRo
aXMpLCBmYWxzZSk7CiAKLSAgICBXZWJJbnNwZWN0b3IubG9nTWFuYWdlci5hZGRFdmVudExpc3Rl
bmVyKFdlYkluc3BlY3Rvci5Mb2dNYW5hZ2VyLkV2ZW50LlNlc3Npb25TdGFydGVkLCB0aGlzLl9z
ZXNzaW9uU3RhcnRlZCwgdGhpcyk7Ci0gICAgV2ViSW5zcGVjdG9yLmxvZ01hbmFnZXIuYWRkRXZl
bnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuTG9nTWFuYWdlci5FdmVudC5NZXNzYWdlQWRkZWQsIHRo
aXMuX21lc3NhZ2VBZGRlZCwgdGhpcyk7Ci0gICAgV2ViSW5zcGVjdG9yLmxvZ01hbmFnZXIuYWRk
RXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuTG9nTWFuYWdlci5FdmVudC5QcmV2aW91c01lc3Nh
Z2VSZXBlYXRDb3VudFVwZGF0ZWQsIHRoaXMuX3ByZXZpb3VzTWVzc2FnZVJlcGVhdENvdW50VXBk
YXRlZCwgdGhpcyk7Ci0gICAgV2ViSW5zcGVjdG9yLmxvZ01hbmFnZXIuYWRkRXZlbnRMaXN0ZW5l
cihXZWJJbnNwZWN0b3IuTG9nTWFuYWdlci5FdmVudC5DbGVhcmVkLCB0aGlzLl9sb2dDbGVhcmVk
LCB0aGlzKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLmxvZ01hbmFnZXIuYWRkRXZlbnRMaXN0ZW5l
cihXZWJJbnNwZWN0b3IuTG9nTWFuYWdlci5FdmVudC5TZXNzaW9uU3RhcnRlZCwgdGhpcy5fc2Vz
c2lvblN0YXJ0ZWQsIHRoaXMpOworICAgICAgICBXZWJJbnNwZWN0b3IubG9nTWFuYWdlci5hZGRF
dmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Mb2dNYW5hZ2VyLkV2ZW50Lk1lc3NhZ2VBZGRlZCwg
dGhpcy5fbWVzc2FnZUFkZGVkLCB0aGlzKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLmxvZ01hbmFn
ZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuTG9nTWFuYWdlci5FdmVudC5QcmV2aW91
c01lc3NhZ2VSZXBlYXRDb3VudFVwZGF0ZWQsIHRoaXMuX3ByZXZpb3VzTWVzc2FnZVJlcGVhdENv
dW50VXBkYXRlZCwgdGhpcyk7CisgICAgICAgIFdlYkluc3BlY3Rvci5sb2dNYW5hZ2VyLmFkZEV2
ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkxvZ01hbmFnZXIuRXZlbnQuQ2xlYXJlZCwgdGhpcy5f
bG9nQ2xlYXJlZCwgdGhpcyk7CiAKLSAgICBXZWJJbnNwZWN0b3IuRnJhbWUuYWRkRXZlbnRMaXN0
ZW5lcihXZWJJbnNwZWN0b3IuRnJhbWUuRXZlbnQuUHJvdmlzaW9uYWxMb2FkU3RhcnRlZCwgdGhp
cy5fcHJvdmlzaW9uYWxMb2FkU3RhcnRlZCwgdGhpcyk7Ci19OwotCi1XZWJJbnNwZWN0b3IuTG9n
Q29udGVudFZpZXcuU2NvcGVzID0gewotICAgIEFsbDogImxvZy1hbGwiLAotICAgIEVycm9yczog
ImxvZy1lcnJvcnMiLAotICAgIFdhcm5pbmdzOiAibG9nLXdhcm5pbmdzIiwKLSAgICBMb2dzOiAi
bG9nLWxvZ3MiCi19OwotCi1XZWJJbnNwZWN0b3IuTG9nQ29udGVudFZpZXcuSXRlbVdyYXBwZXJT
dHlsZUNsYXNzTmFtZSA9ICJjb25zb2xlLWl0ZW0iOwotV2ViSW5zcGVjdG9yLkxvZ0NvbnRlbnRW
aWV3LkZpbHRlcmVkT3V0U3R5bGVDbGFzc05hbWUgPSAiZmlsdGVyZWQtb3V0IjsKLVdlYkluc3Bl
Y3Rvci5Mb2dDb250ZW50Vmlldy5TZWxlY3RlZFN0eWxlQ2xhc3NOYW1lID0gInNlbGVjdGVkIjsK
LVdlYkluc3BlY3Rvci5Mb2dDb250ZW50Vmlldy5TZWFyY2hJblByb2dyZXNzU3R5bGVDbGFzc05h
bWUgPSAic2VhcmNoLWluLXByb2dyZXNzIjsKLVdlYkluc3BlY3Rvci5Mb2dDb250ZW50Vmlldy5G
aWx0ZXJlZE91dEJ5U2VhcmNoU3R5bGVDbGFzc05hbWUgPSAiZmlsdGVyZWQtb3V0LWJ5LXNlYXJj
aCI7Ci1XZWJJbnNwZWN0b3IuTG9nQ29udGVudFZpZXcuSGlnaGxpZ2h0ZWRTdHlsZUNsYXNzTmFt
ZSA9ICJoaWdobGlnaHRlZCI7Ci0KLVdlYkluc3BlY3Rvci5Mb2dDb250ZW50Vmlldy5wcm90b3R5
cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5Mb2dDb250ZW50VmlldywKKyAg
ICAgICAgV2ViSW5zcGVjdG9yLkZyYW1lLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkZy
YW1lLkV2ZW50LlByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQsIHRoaXMuX3Byb3Zpc2lvbmFsTG9hZFN0
YXJ0ZWQsIHRoaXMpOworICAgIH0KIAogICAgIC8vIFB1YmxpYwogCkBAIC0xMDksNDYgKzk0LDQ2
IEBAIFdlYkluc3BlY3Rvci5Mb2dDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlm
IChXZWJJbnNwZWN0b3IuaXNTaG93aW5nU3BsaXRDb25zb2xlKCkpCiAgICAgICAgICAgICBuYXZp
Z2F0aW9uSXRlbXMucHVzaCh0aGlzLl9zaG93Q29uc29sZVRhYk5hdmlnYXRpb25JdGVtKTsKICAg
ICAgICAgcmV0dXJuIG5hdmlnYXRpb25JdGVtczsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBz
Y29wZUJhcigpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fc2NvcGVCYXI7Ci0gICAgfSwK
KyAgICB9CiAKICAgICBnZXQgbG9nVmlld0NvbnRyb2xsZXIoKQogICAgIHsKICAgICAgICAgcmV0
dXJuIHRoaXMuX2xvZ1ZpZXdDb250cm9sbGVyOwotICAgIH0sCisgICAgfQogCi0gICAgdXBkYXRl
TGF5b3V0OiBmdW5jdGlvbigpCisgICAgdXBkYXRlTGF5b3V0KCkKICAgICB7Ci0gICAgICAgIFdl
Ykluc3BlY3Rvci5Db250ZW50Vmlldy5wcm90b3R5cGUudXBkYXRlTGF5b3V0LmNhbGwodGhpcyk7
CisgICAgICAgIHN1cGVyLnVwZGF0ZUxheW91dCgpOwogCiAgICAgICAgIHRoaXMuX3Njcm9sbEVs
ZW1lbnRIZWlnaHQgPSB0aGlzLm1lc3NhZ2VzRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3Qo
KS5oZWlnaHQ7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzaG93bjogZnVuY3Rpb24oKQorICAgIHNo
b3duKCkKICAgICB7CiAgICAgICAgIHRoaXMucHJvbXB0LmZvY3VzKCk7Ci0gICAgfSwKKyAgICB9
CiAKICAgICBnZXQgc2Nyb2xsYWJsZUVsZW1lbnRzKCkKICAgICB7CiAgICAgICAgIHJldHVybiBb
dGhpcy5lbGVtZW50XTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBzaG91bGRLZWVwRWxlbWVu
dHNTY3JvbGxlZFRvQm90dG9tKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0s
CisgICAgfQogCiAgICAgZ2V0IHNlYXJjaEluUHJvZ3Jlc3MoKQogICAgIHsKICAgICAgICAgcmV0
dXJuIHRoaXMubWVzc2FnZXNFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhXZWJJbnNwZWN0b3Iu
TG9nQ29udGVudFZpZXcuU2VhcmNoSW5Qcm9ncmVzc1N0eWxlQ2xhc3NOYW1lKTsKLSAgICB9LAor
ICAgIH0KIAotICAgIGRpZEFwcGVuZENvbnNvbGVNZXNzYWdlVmlldzogZnVuY3Rpb24obWVzc2Fn
ZVZpZXcpCisgICAgZGlkQXBwZW5kQ29uc29sZU1lc3NhZ2VWaWV3KG1lc3NhZ2VWaWV3KQogICAg
IHsKICAgICAgICAgY29uc29sZS5hc3NlcnQobWVzc2FnZVZpZXcgaW5zdGFuY2VvZiBXZWJJbnNw
ZWN0b3IuQ29uc29sZU1lc3NhZ2VWaWV3IHx8IG1lc3NhZ2VWaWV3IGluc3RhbmNlb2YgV2ViSW5z
cGVjdG9yLkNvbnNvbGVDb21tYW5kVmlldyk7CiAKQEAgLTE5MCwyNCArMTc1LDI0IEBAIFdlYklu
c3BlY3Rvci5Mb2dDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBXZWJJbnNw
ZWN0b3Iuc2hvd1NwbGl0Q29uc29sZSgpOwogCiAgICAgICAgIHRoaXMuX2xvZ1ZpZXdDb250cm9s
bGVyLnNjcm9sbFRvQm90dG9tKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBwcm9tcHREaWRDaGFu
Z2VIZWlnaHQ6IGZ1bmN0aW9uKCkKKyAgICBwcm9tcHREaWRDaGFuZ2VIZWlnaHQoKQogICAgIHsK
ICAgICAgICAgV2ViSW5zcGVjdG9yLnF1aWNrQ29uc29sZS51cGRhdGVMYXlvdXQoKTsKLSAgICB9
LAorICAgIH0KIAogICAgIGdldCBzdXBwb3J0c1NhdmUoKQogICAgIHsKICAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgc2F2ZURhdGEoKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIHt1cmw6ICJ3ZWItaW5zcGVjdG9yOi8vL0NvbnNvbGUudHh0IiwgY29udGVudDog
dGhpcy5fZm9ybWF0TWVzc2FnZXNBc0RhdGEoZmFsc2UpLCBmb3JjZVNhdmVBczogdHJ1ZX07Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBoYW5kbGVDb3B5RXZlbnQ6IGZ1bmN0aW9uKGV2ZW50KQorICAg
IGhhbmRsZUNvcHlFdmVudChldmVudCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fc2VsZWN0
ZWRNZXNzYWdlcy5sZW5ndGgpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0yMTUsMTcgKzIwMCwx
NyBAQCBXZWJJbnNwZWN0b3IuTG9nQ29udGVudFZpZXcucHJvdG90eXBlID0gewogICAgICAgICBl
dmVudC5jbGlwYm9hcmREYXRhLnNldERhdGEoInRleHQvcGxhaW4iLCB0aGlzLl9mb3JtYXRNZXNz
YWdlc0FzRGF0YSh0cnVlKSk7CiAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOwogICAg
ICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwotICAgIH0sCisgICAgfQogCi0gICAgZm9jdXNT
ZWFyY2hCYXI6IGZ1bmN0aW9uKCkKKyAgICBmb2N1c1NlYXJjaEJhcigpCiAgICAgewogICAgICAg
ICBpZiAoIXRoaXMudmlzaWJsZSkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICB0aGlz
Ll9zZWFyY2hCYXIuZm9jdXMoKTsKLSAgICB9LAorICAgIH0KIAotICAgIHNhdmU6IGZ1bmN0aW9u
KCkKKyAgICBzYXZlKCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy52aXNpYmxlKQogICAgICAg
ICAgICAgcmV0dXJuOwpAQCAtMjM0LDkgKzIxOSw5IEBAIFdlYkluc3BlY3Rvci5Mb2dDb250ZW50
Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgV2ViSW5z
cGVjdG9yLnNhdmVEYXRhVG9GaWxlKHRoaXMuc2F2ZURhdGEpOwotICAgIH0sCisgICAgfQogCi0g
ICAgc2F2ZUFzOiBmdW5jdGlvbigpCisgICAgc2F2ZUFzKCkKICAgICB7CiAgICAgICAgIGlmICgh
dGhpcy52aXNpYmxlKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjQ1LDQ0ICsyMzAsNDQgQEAg
V2ViSW5zcGVjdG9yLkxvZ0NvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJl
dHVybjsKIAogICAgICAgICBXZWJJbnNwZWN0b3Iuc2F2ZURhdGFUb0ZpbGUodGhpcy5zYXZlRGF0
YSwgdHJ1ZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBoaWdobGlnaHRQcmV2aW91c1NlYXJjaE1h
dGNoOiBmdW5jdGlvbigpCisgICAgaGlnaGxpZ2h0UHJldmlvdXNTZWFyY2hNYXRjaCgpCiAgICAg
ewogICAgICAgICBpZiAoIXRoaXMuc2VhcmNoSW5Qcm9ncmVzcyB8fCBpc0VtcHR5T2JqZWN0KHRo
aXMuX3NlYXJjaE1hdGNoZXMpKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIHZhciBp
bmRleCA9IHRoaXMuX3NlbGVjdGVkU2VhcmNoTWF0Y2ggPyB0aGlzLl9zZWFyY2hNYXRjaGVzLmlu
ZGV4T2YodGhpcy5fc2VsZWN0ZWRTZWFyY2hNYXRjaCkgOiB0aGlzLl9zZWFyY2hNYXRjaGVzLmxl
bmd0aDsKICAgICAgICAgdGhpcy5faGlnaGxpZ2h0U2VhcmNoTWF0Y2hBdEluZGV4KGluZGV4IC0g
MSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBoaWdobGlnaHROZXh0U2VhcmNoTWF0Y2g6IGZ1bmN0
aW9uKCkKKyAgICBoaWdobGlnaHROZXh0U2VhcmNoTWF0Y2goKQogICAgIHsKICAgICAgICAgaWYg
KCF0aGlzLnNlYXJjaEluUHJvZ3Jlc3MgfHwgaXNFbXB0eU9iamVjdCh0aGlzLl9zZWFyY2hNYXRj
aGVzKSkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICB2YXIgaW5kZXggPSB0aGlzLl9z
ZWxlY3RlZFNlYXJjaE1hdGNoID8gdGhpcy5fc2VhcmNoTWF0Y2hlcy5pbmRleE9mKHRoaXMuX3Nl
bGVjdGVkU2VhcmNoTWF0Y2gpICsgMSA6IDA7CiAgICAgICAgIHRoaXMuX2hpZ2hsaWdodFNlYXJj
aE1hdGNoQXRJbmRleChpbmRleCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzZWFyY2hCYXJXYW50
c1RvTG9zZUZvY3VzOiBmdW5jdGlvbihzZWFyY2hCYXIpCisgICAgc2VhcmNoQmFyV2FudHNUb0xv
c2VGb2N1cyhzZWFyY2hCYXIpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fc2VsZWN0ZWRNZXNz
YWdlcy5sZW5ndGgpCiAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VzRWxlbWVudC5mb2N1cygpOwog
ICAgICAgICBlbHNlCiAgICAgICAgICAgICB0aGlzLnByb21wdC5mb2N1cygpOwotICAgIH0sCisg
ICAgfQogCi0gICAgc2VhcmNoQmFyRGlkQWN0aXZhdGU6IGZ1bmN0aW9uKHNlYXJjaEJhcikKKyAg
ICBzZWFyY2hCYXJEaWRBY3RpdmF0ZShzZWFyY2hCYXIpCiAgICAgewogICAgICAgICBpZiAoIWlz
RW1wdHlPYmplY3QodGhpcy5fc2VhcmNoTWF0Y2hlcykpCiAgICAgICAgICAgICB0aGlzLl9oaWdo
bGlnaHRTZWFyY2hNYXRjaEF0SW5kZXgoMCk7CiAgICAgICAgIHRoaXMucHJvbXB0LmZvY3VzKCk7
Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcml2YXRlCiAKLSAgICBfZm9ybWF0TWVzc2FnZXNB
c0RhdGE6IGZ1bmN0aW9uKG9ubHlTZWxlY3RlZCkKKyAgICBfZm9ybWF0TWVzc2FnZXNBc0RhdGEo
b25seVNlbGVjdGVkKQogICAgIHsKICAgICAgICAgdmFyIG1lc3NhZ2VzID0gdGhpcy5fYWxsTWVz
c2FnZUVsZW1lbnRzKCk7CiAKQEAgLTMwNiw5ICsyOTEsOSBAQCBXZWJJbnNwZWN0b3IuTG9nQ29u
dGVudFZpZXcucHJvdG90eXBlID0gewogICAgICAgICB9KTsKIAogICAgICAgICByZXR1cm4gZGF0
YTsKLSAgICB9LAorICAgIH0KIAotICAgIF9zZXNzaW9uU3RhcnRlZDogZnVuY3Rpb24oZXZlbnQp
CisgICAgX3Nlc3Npb25TdGFydGVkKGV2ZW50KQogICAgIHsKICAgICAgICAgaWYgKFdlYkluc3Bl
Y3Rvci5sb2dNYW5hZ2VyLmNsZWFyTG9nT25OYXZpZ2F0ZVNldHRpbmcudmFsdWUpIHsKICAgICAg
ICAgICAgIHRoaXMuX3JlYXBwZW5kUHJvdmlzaW9uYWxNZXNzYWdlcygpOwpAQCAtMzE4LDkgKzMw
Myw5IEBAIFdlYkluc3BlY3Rvci5Mb2dDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAg
IHRoaXMuX2xvZ1ZpZXdDb250cm9sbGVyLnN0YXJ0TmV3U2Vzc2lvbigpOwogCiAgICAgICAgIHRo
aXMuX2NsZWFyUHJvdmlzaW9uYWxTdGF0ZSgpOwotICAgIH0sCisgICAgfQogCi0gICAgX3Njb3Bl
RnJvbU1lc3NhZ2VMZXZlbDogZnVuY3Rpb24obGV2ZWwpCisgICAgX3Njb3BlRnJvbU1lc3NhZ2VM
ZXZlbChsZXZlbCkKICAgICB7CiAgICAgICAgIHZhciBtZXNzYWdlTGV2ZWw7CiAKQEAgLTMzOSw5
ICszMjQsOSBAQCBXZWJJbnNwZWN0b3IuTG9nQ29udGVudFZpZXcucHJvdG90eXBlID0gewogICAg
ICAgICB9CiAKICAgICAgICAgcmV0dXJuIG1lc3NhZ2VMZXZlbDsKLSAgICB9LAorICAgIH0KIAot
ICAgIF9wdWxzZVNjb3BlQmFySXRlbUJvcmRlcjogZnVuY3Rpb24obGV2ZWwpCisgICAgX3B1bHNl
U2NvcGVCYXJJdGVtQm9yZGVyKGxldmVsKQogICAgIHsKICAgICAgICAgdmFyIG1lc3NhZ2VMZXZl
bCA9IHRoaXMuX3Njb3BlRnJvbU1lc3NhZ2VMZXZlbChsZXZlbCk7CiAKQEAgLTM1Miw5ICszMzcs
OSBAQCBXZWJJbnNwZWN0b3IuTG9nQ29udGVudFZpZXcucHJvdG90eXBlID0gewogCiAgICAgICAg
IGlmIChpdGVtICYmICFpdGVtLnNlbGVjdGVkICYmICF0aGlzLl9zY29wZUJhci5pdGVtKFdlYklu
c3BlY3Rvci5Mb2dDb250ZW50Vmlldy5TY29wZXMuQWxsKS5zZWxlY3RlZCkKICAgICAgICAgICAg
IGl0ZW0uZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJ1bnJlYWQiKTsKLSAgICB9LAorICAgIH0KIAot
ICAgIF9tZXNzYWdlQWRkZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9tZXNzYWdlQWRkZWQoZXZl
bnQpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fc3RhcnRlZFByb3Zpc2lvbmFsTG9hZCkKICAg
ICAgICAgICAgIHRoaXMuX3Byb3Zpc2lvbmFsTWVzc2FnZXMucHVzaChldmVudC5kYXRhLm1lc3Nh
Z2UpOwpAQCAtMzY0LDE1ICszNDksMTUgQEAgV2ViSW5zcGVjdG9yLkxvZ0NvbnRlbnRWaWV3LnBy
b3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX3B1bHNlU2NvcGVCYXJJdGVtQm9yZGVyKHRo
aXMuX2xhc3RNZXNzYWdlVmlldy5tZXNzYWdlLmxldmVsKTsKICAgICAgICAgICAgIHRoaXMuX2Zp
bHRlck1lc3NhZ2VFbGVtZW50cyhbdGhpcy5fbGFzdE1lc3NhZ2VWaWV3LmVsZW1lbnRdKTsKICAg
ICAgICAgfQotICAgIH0sCisgICAgfQogCi0gICAgX3ByZXZpb3VzTWVzc2FnZVJlcGVhdENvdW50
VXBkYXRlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX3ByZXZpb3VzTWVzc2FnZVJlcGVhdENvdW50
VXBkYXRlZChldmVudCkKICAgICB7ICAgICAgICAKICAgICAgICAgaWYgKHRoaXMuX2xvZ1ZpZXdD
b250cm9sbGVyLnVwZGF0ZVByZXZpb3VzTWVzc2FnZVJlcGVhdENvdW50KGV2ZW50LmRhdGEuY291
bnQpICYmIHRoaXMuX2xhc3RNZXNzYWdlVmlldykKICAgICAgICAgICAgIHRoaXMuX3B1bHNlU2Nv
cGVCYXJJdGVtQm9yZGVyKHRoaXMuX2xhc3RNZXNzYWdlVmlldy5tZXNzYWdlLmxldmVsKTsKLSAg
ICB9LAorICAgIH0KIAotICAgIF9oYW5kbGVDb250ZXh0TWVudUV2ZW50OiBmdW5jdGlvbihldmVu
dCkKKyAgICBfaGFuZGxlQ29udGV4dE1lbnVFdmVudChldmVudCkKICAgICB7CiAgICAgICAgIGlm
ICghd2luZG93LmdldFNlbGVjdGlvbigpLmlzQ29sbGFwc2VkKSB7CiAgICAgICAgICAgICAvLyBJ
ZiB0aGVyZSBpcyBhIHNlbGVjdGlvbiwgd2Ugd2FudCB0byBzaG93IG91ciBub3JtYWwgY29udGV4
dCBtZW51CkBAIC0zOTMsOSArMzc4LDkgQEAgV2ViSW5zcGVjdG9yLkxvZ0NvbnRlbnRWaWV3LnBy
b3RvdHlwZSA9IHsKICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShjbGVhckxvZ09uUmVs
b2FkVUlTdHJpbmcsIHRoaXMuX3RvZ2dsZUNsZWFyTG9nT25OYXZpZ2F0ZVNldHRpbmcuYmluZCh0
aGlzKSk7CiAKICAgICAgICAgY29udGV4dE1lbnUuc2hvdygpOwotICAgIH0sCisgICAgfQogCi0g
ICAgX21vdXNlZG93bjogZnVuY3Rpb24oZXZlbnQpCisgICAgX21vdXNlZG93bihldmVudCkKICAg
ICB7CiAgICAgICAgIGlmIChldmVudC5idXR0b24gIT09IDAgfHwgZXZlbnQuY3RybEtleSkKICAg
ICAgICAgICAgIHJldHVybjsKQEAgLTQxNCwxNiArMzk5LDE2IEBAIFdlYkluc3BlY3Rvci5Mb2dD
b250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVu
ZXIoIm1vdXNlbW92ZSIsIHRoaXMpOwogICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigi
bW91c2V1cCIsIHRoaXMpOwotICAgIH0sCisgICAgfQogCi0gICAgX3RhcmdldEluTWVzc2FnZUNh
bkJlU2VsZWN0ZWQ6IGZ1bmN0aW9uKHRhcmdldCwgbWVzc2FnZSkKKyAgICBfdGFyZ2V0SW5NZXNz
YWdlQ2FuQmVTZWxlY3RlZCh0YXJnZXQsIG1lc3NhZ2UpCiAgICAgewogICAgICAgICBpZiAodGFy
Z2V0LmVuY2xvc2luZ05vZGVPclNlbGZXaXRoTm9kZU5hbWUoImEiKSkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBf
bW91c2Vtb3ZlOiBmdW5jdGlvbihldmVudCkKKyAgICBfbW91c2Vtb3ZlKGV2ZW50KQogICAgIHsK
ICAgICAgICAgdmFyIHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsKICAgICAgICAg
dmFyIHdyYXBwZXIgPSBldmVudC50YXJnZXQuZW5jbG9zaW5nTm9kZU9yU2VsZldpdGhDbGFzcyhX
ZWJJbnNwZWN0b3IuTG9nQ29udGVudFZpZXcuSXRlbVdyYXBwZXJTdHlsZUNsYXNzTmFtZSk7CkBA
IC00NTYsOSArNDQxLDkgQEAgV2ViSW5zcGVjdG9yLkxvZ0NvbnRlbnRWaWV3LnByb3RvdHlwZSA9
IHsKIAogICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICBldmVudC5zdG9w
UHJvcGFnYXRpb24oKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9tb3VzZXVwOiBmdW5jdGlvbihl
dmVudCkKKyAgICBfbW91c2V1cChldmVudCkKICAgICB7CiAgICAgICAgIHdpbmRvdy5yZW1vdmVF
dmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLCB0aGlzKTsKICAgICAgICAgd2luZG93LnJlbW92ZUV2
ZW50TGlzdGVuZXIoIm1vdXNldXAiLCB0aGlzKTsKQEAgLTQ4OCwxNyArNDczLDE3IEBAIFdlYklu
c3BlY3Rvci5Mb2dDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIGRlbGV0ZSB0aGlz
Ll9tb3VzZURvd25XcmFwcGVyOwogICAgICAgICBkZWxldGUgdGhpcy5fbW91c2VEb3duU2hpZnRL
ZXk7CiAgICAgICAgIGRlbGV0ZSB0aGlzLl9tb3VzZURvd25Db21tYW5kS2V5OwotICAgIH0sCisg
ICAgfQogCi0gICAgX29uZHJhZ3N0YXJ0OiBmdW5jdGlvbihldmVudCkKKyAgICBfb25kcmFnc3Rh
cnQoZXZlbnQpCiAgICAgewogICAgICAgICBpZiAoZXZlbnQudGFyZ2V0LmVuY2xvc2luZ05vZGVP
clNlbGZXaXRoQ2xhc3MoV2ViSW5zcGVjdG9yLkRPTVRyZWVPdXRsaW5lLlN0eWxlQ2xhc3NOYW1l
KSkgewogICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgICAgICAgICBl
dmVudC5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAKLSAgICBo
YW5kbGVFdmVudDogZnVuY3Rpb24oZXZlbnQpCisgICAgaGFuZGxlRXZlbnQoZXZlbnQpCiAgICAg
ewogICAgICAgICBzd2l0Y2ggKGV2ZW50LnR5cGUpIHsKICAgICAgICAgY2FzZSAibW91c2Vtb3Zl
IjoKQEAgLTUwOCw5ICs0OTMsOSBAQCBXZWJJbnNwZWN0b3IuTG9nQ29udGVudFZpZXcucHJvdG90
eXBlID0gewogICAgICAgICAgICAgdGhpcy5fbW91c2V1cChldmVudCk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQotICAgIH0sCisgICAgfQogCi0gICAgX3VwZGF0ZU1lc3NhZ2VzU2Vs
ZWN0aW9uOiBmdW5jdGlvbihtZXNzYWdlLCBtdWx0aXBsZVNlbGVjdGlvbiwgcmFuZ2VTZWxlY3Rp
b24sIHNob3VsZFNjcm9sbEludG9WaWV3KQorICAgIF91cGRhdGVNZXNzYWdlc1NlbGVjdGlvbiht
ZXNzYWdlLCBtdWx0aXBsZVNlbGVjdGlvbiwgcmFuZ2VTZWxlY3Rpb24sIHNob3VsZFNjcm9sbElu
dG9WaWV3KQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQobWVzc2FnZSk7CiAgICAgICAg
IGlmICghbWVzc2FnZSkKQEAgLTU2Miw5ICs1NDcsOSBAQCBXZWJJbnNwZWN0b3IuTG9nQ29udGVu
dFZpZXcucHJvdG90eXBlID0gewogCiAgICAgICAgIGlmIChzaG91bGRTY3JvbGxJbnRvVmlldyAm
JiAhYWxyZWFkeVNlbGVjdGVkTWVzc2FnZSkKICAgICAgICAgICAgIHRoaXMuX2Vuc3VyZU1lc3Nh
Z2VJc1Zpc2libGUodGhpcy5fc2VsZWN0ZWRNZXNzYWdlcy5sYXN0VmFsdWUpOwotICAgIH0sCisg
ICAgfQogCi0gICAgX2Vuc3VyZU1lc3NhZ2VJc1Zpc2libGU6IGZ1bmN0aW9uKG1lc3NhZ2UpCisg
ICAgX2Vuc3VyZU1lc3NhZ2VJc1Zpc2libGUobWVzc2FnZSkKICAgICB7CiAgICAgICAgIGlmICgh
bWVzc2FnZSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTU4NSwxNSArNTcwLDE1IEBAIFdlYklu
c3BlY3Rvci5Mb2dDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBpZiAoeSA+
IHRoaXMuX3Njcm9sbEVsZW1lbnRIZWlnaHQpCiAgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50
LnNjcm9sbFRvcCArPSB5IC0gdGhpcy5fc2Nyb2xsRWxlbWVudEhlaWdodDsKICAgICAgICAgfQot
ICAgIH0sCisgICAgfQogCi0gICAgX3Bvc2l0aW9uRm9yTWVzc2FnZTogZnVuY3Rpb24obWVzc2Fn
ZSkKKyAgICBfcG9zaXRpb25Gb3JNZXNzYWdlKG1lc3NhZ2UpCiAgICAgewogICAgICAgICB2YXIg
cGFnZVBvaW50ID0gd2luZG93LndlYmtpdENvbnZlcnRQb2ludEZyb21Ob2RlVG9QYWdlKG1lc3Nh
Z2UsIG5ldyBXZWJLaXRQb2ludCgwLCAwKSk7CiAgICAgICAgIHJldHVybiB3aW5kb3cud2Via2l0
Q29udmVydFBvaW50RnJvbVBhZ2VUb05vZGUodGhpcy5lbGVtZW50LCBwYWdlUG9pbnQpOwotICAg
IH0sCisgICAgfQogCi0gICAgX2lzTWVzc2FnZVZpc2libGU6IGZ1bmN0aW9uKG1lc3NhZ2UpCisg
ICAgX2lzTWVzc2FnZVZpc2libGUobWVzc2FnZSkKICAgICB7CiAgICAgICAgIHZhciBub2RlID0g
bWVzc2FnZTsKIApAQCAtNjEzLDIzICs1OTgsMjMgQEAgV2ViSW5zcGVjdG9yLkxvZ0NvbnRlbnRW
aWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIHJldHVybiB0cnVlOwotICAg
IH0sCisgICAgfQogCi0gICAgX2lzTWVzc2FnZVNlbGVjdGVkOiBmdW5jdGlvbihtZXNzYWdlKQor
ICAgIF9pc01lc3NhZ2VTZWxlY3RlZChtZXNzYWdlKQogICAgIHsKICAgICAgICAgcmV0dXJuIG1l
c3NhZ2UuY2xhc3NMaXN0LmNvbnRhaW5zKFdlYkluc3BlY3Rvci5Mb2dDb250ZW50Vmlldy5TZWxl
Y3RlZFN0eWxlQ2xhc3NOYW1lKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9jbGVhck1lc3NhZ2Vz
U2VsZWN0aW9uOiBmdW5jdGlvbigpCisgICAgX2NsZWFyTWVzc2FnZXNTZWxlY3Rpb24oKQogICAg
IHsKICAgICAgICAgdGhpcy5fc2VsZWN0ZWRNZXNzYWdlcy5mb3JFYWNoKGZ1bmN0aW9uKG1lc3Nh
Z2UpIHsKICAgICAgICAgICAgIG1lc3NhZ2UuY2xhc3NMaXN0LnJlbW92ZShXZWJJbnNwZWN0b3Iu
TG9nQ29udGVudFZpZXcuU2VsZWN0ZWRTdHlsZUNsYXNzTmFtZSk7CiAgICAgICAgIH0pOwogICAg
ICAgICB0aGlzLl9zZWxlY3RlZE1lc3NhZ2VzID0gW107CiAgICAgICAgIGRlbGV0ZSB0aGlzLl9y
ZWZlcmVuY2VNZXNzYWdlRm9yUmFuZ2VTZWxlY3Rpb247Ci0gICAgfSwKKyAgICB9CiAKLSAgICBf
c2VsZWN0QWxsTWVzc2FnZXM6IGZ1bmN0aW9uKCkKKyAgICBfc2VsZWN0QWxsTWVzc2FnZXMoKQog
ICAgIHsKICAgICAgICAgdGhpcy5fY2xlYXJNZXNzYWdlc1NlbGVjdGlvbigpOwogCkBAIC02Mzks
MjEgKzYyNCwyMSBAQCBXZWJJbnNwZWN0b3IuTG9nQ29udGVudFZpZXcucHJvdG90eXBlID0gewog
ICAgICAgICAgICAgbWVzc2FnZS5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5Mb2dDb250ZW50
Vmlldy5TZWxlY3RlZFN0eWxlQ2xhc3NOYW1lKTsKICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVk
TWVzc2FnZXMucHVzaChtZXNzYWdlKTsKICAgICAgICAgfQotICAgIH0sCisgICAgfQogCi0gICAg
X2FsbE1lc3NhZ2VFbGVtZW50czogZnVuY3Rpb24oKQorICAgIF9hbGxNZXNzYWdlRWxlbWVudHMo
KQogICAgIHsKICAgICAgICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5tZXNzYWdlc0VsZW1lbnQu
cXVlcnlTZWxlY3RvckFsbCgiLmNvbnNvbGUtbWVzc2FnZSwgLmNvbnNvbGUtdXNlci1jb21tYW5k
IikpOwotICAgIH0sCisgICAgfQogCi0gICAgX3VuZmlsdGVyZWRNZXNzYWdlRWxlbWVudHM6IGZ1
bmN0aW9uKCkKKyAgICBfdW5maWx0ZXJlZE1lc3NhZ2VFbGVtZW50cygpCiAgICAgewogICAgICAg
ICByZXR1cm4gdGhpcy5fYWxsTWVzc2FnZUVsZW1lbnRzKCkuZmlsdGVyKGZ1bmN0aW9uKG1lc3Nh
Z2UpIHsKICAgICAgICAgICAgIHJldHVybiAhbWVzc2FnZS5jbGFzc0xpc3QuY29udGFpbnMoV2Vi
SW5zcGVjdG9yLkxvZ0NvbnRlbnRWaWV3LkZpbHRlcmVkT3V0U3R5bGVDbGFzc05hbWUpOwogICAg
ICAgICB9KTsKLSAgICB9LAorICAgIH0KIAotICAgIF92aXNpYmxlTWVzc2FnZUVsZW1lbnRzOiBm
dW5jdGlvbigpCisgICAgX3Zpc2libGVNZXNzYWdlRWxlbWVudHMoKQogICAgIHsKICAgICAgICAg
dmFyIHVuZmlsdGVyZWRNZXNzYWdlcyA9IHRoaXMuX3VuZmlsdGVyZWRNZXNzYWdlRWxlbWVudHMo
KTsKIApAQCAtNjYzLDMyICs2NDgsMzIgQEAgV2ViSW5zcGVjdG9yLkxvZ0NvbnRlbnRWaWV3LnBy
b3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIHVuZmlsdGVyZWRNZXNzYWdlcy5maWx0ZXIoZnVu
Y3Rpb24obWVzc2FnZSkgewogICAgICAgICAgICAgcmV0dXJuICFtZXNzYWdlLmNsYXNzTGlzdC5j
b250YWlucyhXZWJJbnNwZWN0b3IuTG9nQ29udGVudFZpZXcuRmlsdGVyZWRPdXRCeVNlYXJjaFN0
eWxlQ2xhc3NOYW1lKTsKICAgICAgICAgfSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfbG9nQ2xl
YXJlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX2xvZ0NsZWFyZWQoZXZlbnQpCiAgICAgewogICAg
ICAgICB0aGlzLl9sb2dWaWV3Q29udHJvbGxlci5jbGVhcigpOwotICAgIH0sCisgICAgfQogCi0g
ICAgX3Nob3dDb25zb2xlVGFiOiBmdW5jdGlvbigpCisgICAgX3Nob3dDb25zb2xlVGFiKCkKICAg
ICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5zaG93Q29uc29sZVRhYigpOwotICAgIH0sCisgICAg
fQogCi0gICAgX3RvZ2dsZUNsZWFyTG9nT25OYXZpZ2F0ZVNldHRpbmc6IGZ1bmN0aW9uKCkKKyAg
ICBfdG9nZ2xlQ2xlYXJMb2dPbk5hdmlnYXRlU2V0dGluZygpCiAgICAgewogICAgICAgICBXZWJJ
bnNwZWN0b3IubG9nTWFuYWdlci5jbGVhckxvZ09uTmF2aWdhdGVTZXR0aW5nLnZhbHVlID0gIVdl
Ykluc3BlY3Rvci5sb2dNYW5hZ2VyLmNsZWFyTG9nT25OYXZpZ2F0ZVNldHRpbmcudmFsdWU7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBfY2xlYXJMb2c6IGZ1bmN0aW9uKCkKKyAgICBfY2xlYXJMb2co
KQogICAgIHsKICAgICAgICAgZm9yICh2YXIgaXRlbSBvZiB0aGlzLl9zY29wZUJhci5pdGVtcykK
ICAgICAgICAgICAgIGl0ZW0uZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJ1bnJlYWQiKTsKIAog
ICAgICAgICBXZWJJbnNwZWN0b3IubG9nTWFuYWdlci5yZXF1ZXN0Q2xlYXJNZXNzYWdlcygpOwot
ICAgIH0sCisgICAgfQogCi0gICAgX3Njb3BlQmFyU2VsZWN0aW9uRGlkQ2hhbmdlOiBmdW5jdGlv
bihldmVudCkKKyAgICBfc2NvcGVCYXJTZWxlY3Rpb25EaWRDaGFuZ2UoZXZlbnQpCiAgICAgewog
ICAgICAgICB2YXIgaXRlbSA9IHRoaXMuX3Njb3BlQmFyLnNlbGVjdGVkSXRlbXNbMF07CiAgICAg
ICAgIApAQCAtNjk5LDkgKzY4NCw5IEBAIFdlYkluc3BlY3Rvci5Mb2dDb250ZW50Vmlldy5wcm90
b3R5cGUgPSB7CiAgICAgICAgICAgICBpdGVtLmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgidW5y
ZWFkIik7CiAKICAgICAgICAgdGhpcy5fZmlsdGVyTWVzc2FnZUVsZW1lbnRzKHRoaXMuX2FsbE1l
c3NhZ2VFbGVtZW50cygpKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9maWx0ZXJNZXNzYWdlRWxl
bWVudHM6IGZ1bmN0aW9uKG1lc3NhZ2VFbGVtZW50cykKKyAgICBfZmlsdGVyTWVzc2FnZUVsZW1l
bnRzKG1lc3NhZ2VFbGVtZW50cykKICAgICB7CiAgICAgICAgIHZhciBzaG93c0FsbCA9IHRoaXMu
X3Njb3BlQmFyLml0ZW0oV2ViSW5zcGVjdG9yLkxvZ0NvbnRlbnRWaWV3LlNjb3Blcy5BbGwpLnNl
bGVjdGVkOwogCkBAIC03MjUsOSArNzEwLDkgQEAgV2ViSW5zcGVjdG9yLkxvZ0NvbnRlbnRWaWV3
LnByb3RvdHlwZSA9IHsKICAgICAgICAgfSwgdGhpcyk7CiAKICAgICAgICAgdGhpcy5fcGVyZm9y
bVNlYXJjaCgpOwotICAgIH0sCisgICAgfQogCi0gICAgX2tleURvd246IGZ1bmN0aW9uKGV2ZW50
KQorICAgIF9rZXlEb3duKGV2ZW50KQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2tleWJvYXJk
U2hvcnRjdXRDb21tYW5kQS5tYXRjaGVzRXZlbnQoZXZlbnQpKQogICAgICAgICAgICAgdGhpcy5f
Y29tbWFuZEFXYXNQcmVzc2VkKGV2ZW50KTsKQEAgLTc0MSwxNSArNzI2LDE1IEBAIFdlYkluc3Bl
Y3Rvci5Mb2dDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9sZWZ0
QXJyb3dXYXNQcmVzc2VkKGV2ZW50KTsKICAgICAgICAgZWxzZSBpZiAoZXZlbnQua2V5SWRlbnRp
ZmllciA9PT0gIlJpZ2h0IikKICAgICAgICAgICAgIHRoaXMuX3JpZ2h0QXJyb3dXYXNQcmVzc2Vk
KGV2ZW50KTsKLSAgICB9LAorICAgIH0KIAotICAgIF9jb21tYW5kQVdhc1ByZXNzZWQ6IGZ1bmN0
aW9uKGV2ZW50KQorICAgIF9jb21tYW5kQVdhc1ByZXNzZWQoZXZlbnQpCiAgICAgewogICAgICAg
ICB0aGlzLl9zZWxlY3RBbGxNZXNzYWdlcygpOwogICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVs
dCgpOwotICAgIH0sCisgICAgfQogCi0gICAgX2VzY2FwZVdhc1ByZXNzZWQ6IGZ1bmN0aW9uKGV2
ZW50KQorICAgIF9lc2NhcGVXYXNQcmVzc2VkKGV2ZW50KQogICAgIHsKICAgICAgICAgaWYgKHRo
aXMuX3NlbGVjdGVkTWVzc2FnZXMubGVuZ3RoKQogICAgICAgICAgICAgdGhpcy5fY2xlYXJNZXNz
YWdlc1NlbGVjdGlvbigpOwpAQCAtNzU3LDkgKzc0Miw5IEBAIFdlYkluc3BlY3Rvci5Mb2dDb250
ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLnByb21wdC5mb2N1cygpOwog
CiAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBf
dXBBcnJvd1dhc1ByZXNzZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF91cEFycm93V2FzUHJlc3Nl
ZChldmVudCkKICAgICB7CiAgICAgICAgIHZhciBtZXNzYWdlcyA9IHRoaXMuX3Zpc2libGVNZXNz
YWdlRWxlbWVudHMoKTsKIApAQCAtNzc5LDkgKzc2NCw5IEBAIFdlYkluc3BlY3Rvci5Mb2dDb250
ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICBldmVudC5wcmV2ZW50
RGVmYXVsdCgpOwotICAgIH0sCisgICAgfQogCi0gICAgX2Rvd25BcnJvd1dhc1ByZXNzZWQ6IGZ1
bmN0aW9uKGV2ZW50KQorICAgIF9kb3duQXJyb3dXYXNQcmVzc2VkKGV2ZW50KQogICAgIHsKICAg
ICAgICAgdmFyIG1lc3NhZ2VzID0gdGhpcy5fdmlzaWJsZU1lc3NhZ2VFbGVtZW50cygpOwogCkBA
IC04MDEsOSArNzg2LDkgQEAgV2ViSW5zcGVjdG9yLkxvZ0NvbnRlbnRWaWV3LnByb3RvdHlwZSA9
IHsKICAgICAgICAgfQogCiAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBfbGVmdEFycm93V2FzUHJlc3NlZDogZnVuY3Rpb24oZXZlbnQpCisgICAg
X2xlZnRBcnJvd1dhc1ByZXNzZWQoZXZlbnQpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fc2Vs
ZWN0ZWRNZXNzYWdlcy5sZW5ndGggIT09IDEpCiAgICAgICAgICAgICByZXR1cm47CkBAIC04MTYs
OSArODAxLDkgQEAgV2ViSW5zcGVjdG9yLkxvZ0NvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKICAg
ICAgICAgICAgIGN1cnJlbnRNZXNzYWdlLl9fbWVzc2FnZVZpZXcuY29sbGFwc2UoKTsKICAgICAg
ICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0K
IAotICAgIF9yaWdodEFycm93V2FzUHJlc3NlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX3JpZ2h0
QXJyb3dXYXNQcmVzc2VkKGV2ZW50KQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGVk
TWVzc2FnZXMubGVuZ3RoICE9PSAxKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtODMxLDM5ICs4
MTYsMzkgQEAgV2ViSW5zcGVjdG9yLkxvZ0NvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAg
ICAgICAgIGN1cnJlbnRNZXNzYWdlLl9fbWVzc2FnZVZpZXcuZXhwYW5kKCk7CiAgICAgICAgICAg
ICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBfcHJldmlvdXNNZXNzYWdlOiBmdW5jdGlvbihtZXNzYWdlKQorICAgIF9wcmV2aW91c01lc3Nh
Z2UobWVzc2FnZSkKICAgICB7CiAgICAgICAgIHZhciBtZXNzYWdlcyA9IHRoaXMuX3Zpc2libGVN
ZXNzYWdlRWxlbWVudHMoKTsKICAgICAgICAgZm9yICh2YXIgaSA9IG1lc3NhZ2VzLmluZGV4T2Yo
bWVzc2FnZSkgLSAxOyBpID49IDA7IC0taSkgewogICAgICAgICAgICAgaWYgKHRoaXMuX2lzTWVz
c2FnZVZpc2libGUobWVzc2FnZXNbaV0pKQogICAgICAgICAgICAgICAgIHJldHVybiBtZXNzYWdl
c1tpXTsKICAgICAgICAgfQotICAgIH0sCisgICAgfQogCi0gICAgX25leHRNZXNzYWdlOiBmdW5j
dGlvbihtZXNzYWdlKQorICAgIF9uZXh0TWVzc2FnZShtZXNzYWdlKQogICAgIHsKICAgICAgICAg
dmFyIG1lc3NhZ2VzID0gdGhpcy5fdmlzaWJsZU1lc3NhZ2VFbGVtZW50cygpOwogICAgICAgICBm
b3IgKHZhciBpID0gbWVzc2FnZXMuaW5kZXhPZihtZXNzYWdlKSArIDE7IGkgPCBtZXNzYWdlcy5s
ZW5ndGg7ICsraSkgewogICAgICAgICAgICAgaWYgKHRoaXMuX2lzTWVzc2FnZVZpc2libGUobWVz
c2FnZXNbaV0pKQogICAgICAgICAgICAgICAgIHJldHVybiBtZXNzYWdlc1tpXTsKICAgICAgICAg
fQotICAgIH0sCisgICAgfQogCi0gICAgX2NsZWFyRm9jdXNhYmxlQ2hpbGRyZW46IGZ1bmN0aW9u
KCkKKyAgICBfY2xlYXJGb2N1c2FibGVDaGlsZHJlbigpCiAgICAgewogICAgICAgICB2YXIgZm9j
dXNhYmxlRWxlbWVudHMgPSB0aGlzLm1lc3NhZ2VzRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCJb
dGFiaW5kZXhdIik7CiAgICAgICAgIGZvciAodmFyIGkgPSAwLCBjb3VudCA9IGZvY3VzYWJsZUVs
ZW1lbnRzLmxlbmd0aDsgaSA8IGNvdW50OyArK2kpCiAgICAgICAgICAgICBmb2N1c2FibGVFbGVt
ZW50c1tpXS5yZW1vdmVBdHRyaWJ1dGUoInRhYmluZGV4Iik7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBfc2VhcmNoVGV4dERpZENoYW5nZTogZnVuY3Rpb24oZXZlbnQpCisgICAgX3NlYXJjaFRleHRE
aWRDaGFuZ2UoZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLl9wZXJmb3JtU2VhcmNoKCk7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBfcGVyZm9ybVNlYXJjaDogZnVuY3Rpb24oKQorICAgIF9wZXJm
b3JtU2VhcmNoKCkKICAgICB7CiAgICAgICAgIGlmICghaXNFbXB0eU9iamVjdCh0aGlzLl9zZWFy
Y2hIaWdobGlnaHRET01DaGFuZ2VzKSkKICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5yZXZlcnRE
b21DaGFuZ2VzKHRoaXMuX3NlYXJjaEhpZ2hsaWdodERPTUNoYW5nZXMpOwpAQCAtOTA3LDkgKzg5
Miw5IEBAIFdlYkluc3BlY3Rvci5Mb2dDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAg
ICAgICB0aGlzLl9zZWxlY3RlZFNlYXJjaE1hdGNoLmhpZ2hsaWdodC5jbGFzc0xpc3QucmVtb3Zl
KFdlYkluc3BlY3Rvci5Mb2dDb250ZW50Vmlldy5TZWxlY3RlZFN0eWxlQ2xhc3NOYW1lKTsKICAg
ICAgICAgICAgIGRlbGV0ZSB0aGlzLl9zZWxlY3RlZFNlYXJjaE1hdGNoOwogICAgICAgICB9Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBfaGlnaGxpZ2h0UmFuZ2VzOiBmdW5jdGlvbihtZXNzYWdlLCBt
YXRjaFJhbmdlcykKKyAgICBfaGlnaGxpZ2h0UmFuZ2VzKG1lc3NhZ2UsIG1hdGNoUmFuZ2VzKQog
ICAgIHsKICAgICAgICAgdmFyIGhpZ2hsaWdodGVkRWxlbWVudHMgPSBXZWJJbnNwZWN0b3IuaGln
aGxpZ2h0UmFuZ2VzV2l0aFN0eWxlQ2xhc3MobWVzc2FnZSwgbWF0Y2hSYW5nZXMsIFdlYkluc3Bl
Y3Rvci5Mb2dDb250ZW50Vmlldy5IaWdobGlnaHRlZFN0eWxlQ2xhc3NOYW1lLCB0aGlzLl9zZWFy
Y2hIaWdobGlnaHRET01DaGFuZ2VzKTsKIApAQCAtOTI2LDE0ICs5MTEsMTQgQEAgV2ViSW5zcGVj
dG9yLkxvZ0NvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0sIHRoaXMpOwotICAgIH0sCisgICAgfQogCi0gICAgX3Jhbmdl
c092ZXJsYXA6IGZ1bmN0aW9uKHJhbmdlMSwgcmFuZ2UyKQorICAgIF9yYW5nZXNPdmVybGFwKHJh
bmdlMSwgcmFuZ2UyKQogICAgIHsKICAgICAgICAgcmV0dXJuIHJhbmdlMS5vZmZzZXQgPD0gcmFu
Z2UyLm9mZnNldCArIHJhbmdlMi5sZW5ndGggJiYgcmFuZ2UyLm9mZnNldCA8PSByYW5nZTEub2Zm
c2V0ICsgcmFuZ2UxLmxlbmd0aDsKLSAgICB9LAorICAgIH0KIAotICAgIF9oaWdobGlnaHRTZWFy
Y2hNYXRjaEF0SW5kZXg6IGZ1bmN0aW9uKGluZGV4KQorICAgIF9oaWdobGlnaHRTZWFyY2hNYXRj
aEF0SW5kZXgoaW5kZXgpCiAgICAgewogICAgICAgICBpZiAoaW5kZXggPj0gdGhpcy5fc2VhcmNo
TWF0Y2hlcy5sZW5ndGgpCiAgICAgICAgICAgICBpbmRleCA9IDA7CkBAIC05NDcsMTQgKzkzMiwx
NCBAQCBXZWJJbnNwZWN0b3IuTG9nQ29udGVudFZpZXcucHJvdG90eXBlID0gewogICAgICAgICB0
aGlzLl9zZWxlY3RlZFNlYXJjaE1hdGNoLmhpZ2hsaWdodC5jbGFzc0xpc3QuYWRkKFdlYkluc3Bl
Y3Rvci5Mb2dDb250ZW50Vmlldy5TZWxlY3RlZFN0eWxlQ2xhc3NOYW1lKTsKIAogICAgICAgICB0
aGlzLl9lbnN1cmVNZXNzYWdlSXNWaXNpYmxlKHRoaXMuX3NlbGVjdGVkU2VhcmNoTWF0Y2gubWVz
c2FnZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcHJvdmlzaW9uYWxMb2FkU3RhcnRlZDogZnVu
Y3Rpb24oKQorICAgIF9wcm92aXNpb25hbExvYWRTdGFydGVkKCkKICAgICB7CiAgICAgICAgIHRo
aXMuX3N0YXJ0ZWRQcm92aXNpb25hbExvYWQgPSB0cnVlOwotICAgIH0sCisgICAgfQogCi0gICAg
X3JlYXBwZW5kUHJvdmlzaW9uYWxNZXNzYWdlczogZnVuY3Rpb24oKQorICAgIF9yZWFwcGVuZFBy
b3Zpc2lvbmFsTWVzc2FnZXMoKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9zdGFydGVkUHJv
dmlzaW9uYWxMb2FkKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtOTY4LDEzICs5NTMsMjUgQEAg
V2ViSW5zcGVjdG9yLkxvZ0NvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAg
ICAgICAgIHRoaXMuX3Byb3Zpc2lvbmFsTWVzc2FnZXMgPSBbXTsKLSAgICB9LAorICAgIH0KIAot
ICAgIF9jbGVhclByb3Zpc2lvbmFsU3RhdGU6IGZ1bmN0aW9uKCkKKyAgICBfY2xlYXJQcm92aXNp
b25hbFN0YXRlKCkKICAgICB7CiAgICAgICAgIHRoaXMuX3N0YXJ0ZWRQcm92aXNpb25hbExvYWQg
PSBmYWxzZTsKICAgICAgICAgdGhpcy5fcHJvdmlzaW9uYWxNZXNzYWdlcyA9IFtdOwogICAgIH0K
IH07CiAKLVdlYkluc3BlY3Rvci5Mb2dDb250ZW50Vmlldy5wcm90b3R5cGUuX19wcm90b19fID0g
V2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LnByb3RvdHlwZTsKK1dlYkluc3BlY3Rvci5Mb2dDb250
ZW50Vmlldy5TY29wZXMgPSB7CisgICAgQWxsOiAibG9nLWFsbCIsCisgICAgRXJyb3JzOiAibG9n
LWVycm9ycyIsCisgICAgV2FybmluZ3M6ICJsb2ctd2FybmluZ3MiLAorICAgIExvZ3M6ICJsb2ct
bG9ncyIKK307CisKK1dlYkluc3BlY3Rvci5Mb2dDb250ZW50Vmlldy5JdGVtV3JhcHBlclN0eWxl
Q2xhc3NOYW1lID0gImNvbnNvbGUtaXRlbSI7CitXZWJJbnNwZWN0b3IuTG9nQ29udGVudFZpZXcu
RmlsdGVyZWRPdXRTdHlsZUNsYXNzTmFtZSA9ICJmaWx0ZXJlZC1vdXQiOworV2ViSW5zcGVjdG9y
LkxvZ0NvbnRlbnRWaWV3LlNlbGVjdGVkU3R5bGVDbGFzc05hbWUgPSAic2VsZWN0ZWQiOworV2Vi
SW5zcGVjdG9yLkxvZ0NvbnRlbnRWaWV3LlNlYXJjaEluUHJvZ3Jlc3NTdHlsZUNsYXNzTmFtZSA9
ICJzZWFyY2gtaW4tcHJvZ3Jlc3MiOworV2ViSW5zcGVjdG9yLkxvZ0NvbnRlbnRWaWV3LkZpbHRl
cmVkT3V0QnlTZWFyY2hTdHlsZUNsYXNzTmFtZSA9ICJmaWx0ZXJlZC1vdXQtYnktc2VhcmNoIjsK
K1dlYkluc3BlY3Rvci5Mb2dDb250ZW50Vmlldy5IaWdobGlnaHRlZFN0eWxlQ2xhc3NOYW1lID0g
ImhpZ2hsaWdodGVkIjsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9OZXR3b3JrR3JpZENvbnRl
bnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTmV0
d29ya0dyaWRDb250ZW50Vmlldy5qcwppbmRleCAwOTc3ZjM2MjY0OWE5ZDJjMTc5ODc0MGZlODMw
NTdhMWYyMTc4ZGMyLi5mM2Q2NzJmNzIxOWY0NzFmZGQ4ODYyNzViMmI2NzljMmY5ZjQ5OGEyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9OZXR3
b3JrR3JpZENvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL05ldHdvcmtHcmlkQ29udGVudFZpZXcuanMKQEAgLTIzLDg2ICsyMyw4NCBA
QAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rv
ci5OZXR3b3JrR3JpZENvbnRlbnRWaWV3ID0gZnVuY3Rpb24ocmVwcmVzZW50ZWRPYmplY3QsIGV4
dHJhQXJndW1lbnRzKQorV2ViSW5zcGVjdG9yLk5ldHdvcmtHcmlkQ29udGVudFZpZXcgPSBjbGFz
cyBOZXR3b3JrR3JpZENvbnRlbnRWaWV3IGV4dGVuZHMgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3
CiB7Ci0gICAgY29uc29sZS5hc3NlcnQoZXh0cmFBcmd1bWVudHMpOwotICAgIGNvbnNvbGUuYXNz
ZXJ0KGV4dHJhQXJndW1lbnRzLm5ldHdvcmtTaWRlYmFyUGFuZWwgaW5zdGFuY2VvZiBXZWJJbnNw
ZWN0b3IuTmV0d29ya1NpZGViYXJQYW5lbCk7Ci0KLSAgICBXZWJJbnNwZWN0b3IuQ29udGVudFZp
ZXcuY2FsbCh0aGlzLCByZXByZXNlbnRlZE9iamVjdCk7CisgICAgY29uc3RydWN0b3IocmVwcmVz
ZW50ZWRPYmplY3QsIGV4dHJhQXJndW1lbnRzKQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3Nl
cnQoZXh0cmFBcmd1bWVudHMpOworICAgICAgICBjb25zb2xlLmFzc2VydChleHRyYUFyZ3VtZW50
cy5uZXR3b3JrU2lkZWJhclBhbmVsIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLk5ldHdvcmtTaWRl
YmFyUGFuZWwpOwogCi0gICAgdGhpcy5fbmV0d29ya1NpZGViYXJQYW5lbCA9IGV4dHJhQXJndW1l
bnRzLm5ldHdvcmtTaWRlYmFyUGFuZWw7CisgICAgICAgIHN1cGVyKHJlcHJlc2VudGVkT2JqZWN0
KTsKIAotICAgIHRoaXMuX2NvbnRlbnRUcmVlT3V0bGluZSA9IHRoaXMuX25ldHdvcmtTaWRlYmFy
UGFuZWwuY29udGVudFRyZWVPdXRsaW5lOwotICAgIHRoaXMuX2NvbnRlbnRUcmVlT3V0bGluZS5v
bnNlbGVjdCA9IHRoaXMuX3RyZWVFbGVtZW50U2VsZWN0ZWQuYmluZCh0aGlzKTsKKyAgICAgICAg
dGhpcy5fbmV0d29ya1NpZGViYXJQYW5lbCA9IGV4dHJhQXJndW1lbnRzLm5ldHdvcmtTaWRlYmFy
UGFuZWw7CiAKLSAgICB2YXIgY29sdW1ucyA9IHtkb21haW46IHt9LCB0eXBlOiB7fSwgbWV0aG9k
OiB7fSwgc2NoZW1lOiB7fSwgc3RhdHVzQ29kZToge30sIGNhY2hlZDoge30sIHNpemU6IHt9LCB0
cmFuc2ZlclNpemU6IHt9LCByZXF1ZXN0U2VudDoge30sIGxhdGVuY3k6IHt9LCBkdXJhdGlvbjog
e319OworICAgICAgICB0aGlzLl9jb250ZW50VHJlZU91dGxpbmUgPSB0aGlzLl9uZXR3b3JrU2lk
ZWJhclBhbmVsLmNvbnRlbnRUcmVlT3V0bGluZTsKKyAgICAgICAgdGhpcy5fY29udGVudFRyZWVP
dXRsaW5lLm9uc2VsZWN0ID0gdGhpcy5fdHJlZUVsZW1lbnRTZWxlY3RlZC5iaW5kKHRoaXMpOwog
Ci0gICAgY29sdW1ucy5kb21haW4udGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkRvbWFp
biIpOwotICAgIGNvbHVtbnMuZG9tYWluLndpZHRoID0gIjEwJSI7CisgICAgICAgIHZhciBjb2x1
bW5zID0ge2RvbWFpbjoge30sIHR5cGU6IHt9LCBtZXRob2Q6IHt9LCBzY2hlbWU6IHt9LCBzdGF0
dXNDb2RlOiB7fSwgY2FjaGVkOiB7fSwgc2l6ZToge30sIHRyYW5zZmVyU2l6ZToge30sIHJlcXVl
c3RTZW50OiB7fSwgbGF0ZW5jeToge30sIGR1cmF0aW9uOiB7fX07CiAKLSAgICBjb2x1bW5zLnR5
cGUudGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlR5cGUiKTsKLSAgICBjb2x1bW5zLnR5
cGUud2lkdGggPSAiOCUiOworICAgICAgICBjb2x1bW5zLmRvbWFpbi50aXRsZSA9IFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiRG9tYWluIik7CisgICAgICAgIGNvbHVtbnMuZG9tYWluLndpZHRoID0g
IjEwJSI7CiAKLSAgICBjb2x1bW5zLm1ldGhvZC50aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiTWV0aG9kIik7Ci0gICAgY29sdW1ucy5tZXRob2Qud2lkdGggPSAiNiUiOworICAgICAgICBj
b2x1bW5zLnR5cGUudGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlR5cGUiKTsKKyAgICAg
ICAgY29sdW1ucy50eXBlLndpZHRoID0gIjglIjsKIAotICAgIGNvbHVtbnMuc2NoZW1lLnRpdGxl
ID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTY2hlbWUiKTsKLSAgICBjb2x1bW5zLnNjaGVtZS53
aWR0aCA9ICI2JSI7CisgICAgICAgIGNvbHVtbnMubWV0aG9kLnRpdGxlID0gV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJNZXRob2QiKTsKKyAgICAgICAgY29sdW1ucy5tZXRob2Qud2lkdGggPSAiNiUi
OwogCi0gICAgY29sdW1ucy5zdGF0dXNDb2RlLnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJTdGF0dXMiKTsKLSAgICBjb2x1bW5zLnN0YXR1c0NvZGUud2lkdGggPSAiNiUiOworICAgICAg
ICBjb2x1bW5zLnNjaGVtZS50aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2NoZW1lIik7
CisgICAgICAgIGNvbHVtbnMuc2NoZW1lLndpZHRoID0gIjYlIjsKIAotICAgIGNvbHVtbnMuY2Fj
aGVkLnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDYWNoZWQiKTsKLSAgICBjb2x1bW5z
LmNhY2hlZC53aWR0aCA9ICI2JSI7CisgICAgICAgIGNvbHVtbnMuc3RhdHVzQ29kZS50aXRsZSA9
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU3RhdHVzIik7CisgICAgICAgIGNvbHVtbnMuc3RhdHVz
Q29kZS53aWR0aCA9ICI2JSI7CiAKLSAgICBjb2x1bW5zLnNpemUudGl0bGUgPSBXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIlNpemUiKTsKLSAgICBjb2x1bW5zLnNpemUud2lkdGggPSAiOCUiOwotICAg
IGNvbHVtbnMuc2l6ZS5hbGlnbmVkID0gInJpZ2h0IjsKKyAgICAgICAgY29sdW1ucy5jYWNoZWQu
dGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNhY2hlZCIpOworICAgICAgICBjb2x1bW5z
LmNhY2hlZC53aWR0aCA9ICI2JSI7CiAKLSAgICBjb2x1bW5zLnRyYW5zZmVyU2l6ZS50aXRsZSA9
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiVHJhbnNmZXJlZCIpOwotICAgIGNvbHVtbnMudHJhbnNm
ZXJTaXplLndpZHRoID0gIjglIjsKLSAgICBjb2x1bW5zLnRyYW5zZmVyU2l6ZS5hbGlnbmVkID0g
InJpZ2h0IjsKKyAgICAgICAgY29sdW1ucy5zaXplLnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJTaXplIik7CisgICAgICAgIGNvbHVtbnMuc2l6ZS53aWR0aCA9ICI4JSI7CisgICAgICAg
IGNvbHVtbnMuc2l6ZS5hbGlnbmVkID0gInJpZ2h0IjsKIAotICAgIGNvbHVtbnMucmVxdWVzdFNl
bnQudGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlN0YXJ0IFRpbWUiKTsKLSAgICBjb2x1
bW5zLnJlcXVlc3RTZW50LndpZHRoID0gIjklIjsKLSAgICBjb2x1bW5zLnJlcXVlc3RTZW50LmFs
aWduZWQgPSAicmlnaHQiOworICAgICAgICBjb2x1bW5zLnRyYW5zZmVyU2l6ZS50aXRsZSA9IFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiVHJhbnNmZXJlZCIpOworICAgICAgICBjb2x1bW5zLnRyYW5z
ZmVyU2l6ZS53aWR0aCA9ICI4JSI7CisgICAgICAgIGNvbHVtbnMudHJhbnNmZXJTaXplLmFsaWdu
ZWQgPSAicmlnaHQiOwogCi0gICAgY29sdW1ucy5sYXRlbmN5LnRpdGxlID0gV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJMYXRlbmN5Iik7Ci0gICAgY29sdW1ucy5sYXRlbmN5LndpZHRoID0gIjklIjsK
LSAgICBjb2x1bW5zLmxhdGVuY3kuYWxpZ25lZCA9ICJyaWdodCI7CisgICAgICAgIGNvbHVtbnMu
cmVxdWVzdFNlbnQudGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlN0YXJ0IFRpbWUiKTsK
KyAgICAgICAgY29sdW1ucy5yZXF1ZXN0U2VudC53aWR0aCA9ICI5JSI7CisgICAgICAgIGNvbHVt
bnMucmVxdWVzdFNlbnQuYWxpZ25lZCA9ICJyaWdodCI7CiAKLSAgICBjb2x1bW5zLmR1cmF0aW9u
LnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJEdXJhdGlvbiIpOwotICAgIGNvbHVtbnMu
ZHVyYXRpb24ud2lkdGggPSAiOSUiOwotICAgIGNvbHVtbnMuZHVyYXRpb24uYWxpZ25lZCA9ICJy
aWdodCI7CisgICAgICAgIGNvbHVtbnMubGF0ZW5jeS50aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0
cmluZygiTGF0ZW5jeSIpOworICAgICAgICBjb2x1bW5zLmxhdGVuY3kud2lkdGggPSAiOSUiOwor
ICAgICAgICBjb2x1bW5zLmxhdGVuY3kuYWxpZ25lZCA9ICJyaWdodCI7CiAKLSAgICBmb3IgKHZh
ciBjb2x1bW4gaW4gY29sdW1ucykKLSAgICAgICAgY29sdW1uc1tjb2x1bW5dLnNvcnRhYmxlID0g
dHJ1ZTsKKyAgICAgICAgY29sdW1ucy5kdXJhdGlvbi50aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0
cmluZygiRHVyYXRpb24iKTsKKyAgICAgICAgY29sdW1ucy5kdXJhdGlvbi53aWR0aCA9ICI5JSI7
CisgICAgICAgIGNvbHVtbnMuZHVyYXRpb24uYWxpZ25lZCA9ICJyaWdodCI7CiAKLSAgICB0aGlz
Ll9kYXRhR3JpZCA9IG5ldyBXZWJJbnNwZWN0b3IuVGltZWxpbmVEYXRhR3JpZCh0aGlzLl9jb250
ZW50VHJlZU91dGxpbmUsIGNvbHVtbnMpOwotICAgIHRoaXMuX2RhdGFHcmlkLmFkZEV2ZW50TGlz
dGVuZXIoV2ViSW5zcGVjdG9yLkRhdGFHcmlkLkV2ZW50LlNlbGVjdGVkTm9kZUNoYW5nZWQsIHRo
aXMuX2RhdGFHcmlkTm9kZVNlbGVjdGVkLCB0aGlzKTsKLSAgICB0aGlzLl9kYXRhR3JpZC5zb3J0
Q29sdW1uSWRlbnRpZmllciA9ICJyZXF1ZXN0U2VudCI7Ci0gICAgdGhpcy5fZGF0YUdyaWQuc29y
dE9yZGVyID0gV2ViSW5zcGVjdG9yLkRhdGFHcmlkLlNvcnRPcmRlci5Bc2NlbmRpbmc7CisgICAg
ICAgIGZvciAodmFyIGNvbHVtbiBpbiBjb2x1bW5zKQorICAgICAgICAgICAgY29sdW1uc1tjb2x1
bW5dLnNvcnRhYmxlID0gdHJ1ZTsKIAotICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJu
ZXR3b3JrLWdyaWQiKTsKLSAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fZGF0YUdy
aWQuZWxlbWVudCk7CisgICAgICAgIHRoaXMuX2RhdGFHcmlkID0gbmV3IFdlYkluc3BlY3Rvci5U
aW1lbGluZURhdGFHcmlkKHRoaXMuX2NvbnRlbnRUcmVlT3V0bGluZSwgY29sdW1ucyk7CisgICAg
ICAgIHRoaXMuX2RhdGFHcmlkLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRhdGFHcmlk
LkV2ZW50LlNlbGVjdGVkTm9kZUNoYW5nZWQsIHRoaXMuX2RhdGFHcmlkTm9kZVNlbGVjdGVkLCB0
aGlzKTsKKyAgICAgICAgdGhpcy5fZGF0YUdyaWQuc29ydENvbHVtbklkZW50aWZpZXIgPSAicmVx
dWVzdFNlbnQiOworICAgICAgICB0aGlzLl9kYXRhR3JpZC5zb3J0T3JkZXIgPSBXZWJJbnNwZWN0
b3IuRGF0YUdyaWQuU29ydE9yZGVyLkFzY2VuZGluZzsKIAotICAgIHZhciBuZXR3b3JrVGltZWxp
bmUgPSBXZWJJbnNwZWN0b3IudGltZWxpbmVNYW5hZ2VyLnBlcnNpc3RlbnROZXR3b3JrVGltZWxp
bmU7Ci0gICAgbmV0d29ya1RpbWVsaW5lLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRp
bWVsaW5lLkV2ZW50LlJlY29yZEFkZGVkLCB0aGlzLl9uZXR3b3JrVGltZWxpbmVSZWNvcmRBZGRl
ZCwgdGhpcyk7Ci0gICAgbmV0d29ya1RpbWVsaW5lLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVj
dG9yLlRpbWVsaW5lLkV2ZW50LlJlc2V0LCB0aGlzLl9uZXR3b3JrVGltZWxpbmVSZXNldCwgdGhp
cyk7CisgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJuZXR3b3JrLWdyaWQiKTsK
KyAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2RhdGFHcmlkLmVsZW1lbnQp
OwogCi0gICAgdGhpcy5fcGVuZGluZ1JlY29yZHMgPSBbXTsKLX07CisgICAgICAgIHZhciBuZXR3
b3JrVGltZWxpbmUgPSBXZWJJbnNwZWN0b3IudGltZWxpbmVNYW5hZ2VyLnBlcnNpc3RlbnROZXR3
b3JrVGltZWxpbmU7CisgICAgICAgIG5ldHdvcmtUaW1lbGluZS5hZGRFdmVudExpc3RlbmVyKFdl
Ykluc3BlY3Rvci5UaW1lbGluZS5FdmVudC5SZWNvcmRBZGRlZCwgdGhpcy5fbmV0d29ya1RpbWVs
aW5lUmVjb3JkQWRkZWQsIHRoaXMpOworICAgICAgICBuZXR3b3JrVGltZWxpbmUuYWRkRXZlbnRM
aXN0ZW5lcihXZWJJbnNwZWN0b3IuVGltZWxpbmUuRXZlbnQuUmVzZXQsIHRoaXMuX25ldHdvcmtU
aW1lbGluZVJlc2V0LCB0aGlzKTsKIAotV2ViSW5zcGVjdG9yLk5ldHdvcmtHcmlkQ29udGVudFZp
ZXcucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuTmV0d29ya0dy
aWRDb250ZW50VmlldywKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5w
cm90b3R5cGUsCisgICAgICAgIHRoaXMuX3BlbmRpbmdSZWNvcmRzID0gW107CisgICAgfQogCiAg
ICAgLy8gUHVibGljCiAKICAgICBnZXQgbmF2aWdhdGlvblNpZGViYXJUcmVlT3V0bGluZSgpCiAg
ICAgewogICAgICAgICByZXR1cm4gdGhpcy5fY29udGVudFRyZWVPdXRsaW5lOwotICAgIH0sCisg
ICAgfQogCiAgICAgZ2V0IHNlbGVjdGlvblBhdGhDb21wb25lbnRzKCkKICAgICB7CkBAIC0xMTIs
MzMgKzExMCwzMyBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya0dyaWRDb250ZW50Vmlldy5wcm90b3R5
cGUgPSB7CiAgICAgICAgIHZhciBwYXRoQ29tcG9uZW50ID0gbmV3IFdlYkluc3BlY3Rvci5HZW5l
cmFsVHJlZUVsZW1lbnRQYXRoQ29tcG9uZW50KHRoaXMuX2NvbnRlbnRUcmVlT3V0bGluZS5zZWxl
Y3RlZFRyZWVFbGVtZW50KTsKICAgICAgICAgcGF0aENvbXBvbmVudC5hZGRFdmVudExpc3RlbmVy
KFdlYkluc3BlY3Rvci5IaWVyYXJjaGljYWxQYXRoQ29tcG9uZW50LkV2ZW50LlNpYmxpbmdXYXNT
ZWxlY3RlZCwgdGhpcy5fdHJlZUVsZW1lbnRQYXRoQ29tcG9uZW50U2VsZWN0ZWQsIHRoaXMpOwog
ICAgICAgICByZXR1cm4gW3BhdGhDb21wb25lbnRdOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0
IHplcm9UaW1lKCkKICAgICB7CiAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IudGltZWxpbmVN
YW5hZ2VyLnBlcnNpc3RlbnROZXR3b3JrVGltZWxpbmUuc3RhcnRUaW1lOwotICAgIH0sCisgICAg
fQogCi0gICAgc2hvd246IGZ1bmN0aW9uKCkKKyAgICBzaG93bigpCiAgICAgewotICAgICAgICBX
ZWJJbnNwZWN0b3IuQ29udGVudFZpZXcucHJvdG90eXBlLnNob3duLmNhbGwodGhpcyk7CisgICAg
ICAgIHN1cGVyLnNob3duKCk7CiAKICAgICAgICAgdGhpcy5fZGF0YUdyaWQuc2hvd24oKTsKLSAg
ICB9LAorICAgIH0KIAotICAgIGhpZGRlbjogZnVuY3Rpb24oKQorICAgIGhpZGRlbigpCiAgICAg
ewogICAgICAgICB0aGlzLl9kYXRhR3JpZC5oaWRkZW4oKTsKIAotICAgICAgICBXZWJJbnNwZWN0
b3IuQ29udGVudFZpZXcucHJvdG90eXBlLmhpZGRlbi5jYWxsKHRoaXMpOwotICAgIH0sCisgICAg
ICAgIHN1cGVyLmhpZGRlbigpOworICAgIH0KIAotICAgIGNsb3NlZDogZnVuY3Rpb24oKQorICAg
IGNsb3NlZCgpCiAgICAgewogICAgICAgICB0aGlzLl9kYXRhR3JpZC5jbG9zZWQoKTsKLSAgICB9
LAorICAgIH0KIAotICAgIHVwZGF0ZUxheW91dDogZnVuY3Rpb24oKQorICAgIHVwZGF0ZUxheW91
dCgpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fc2NoZWR1bGVkTGF5b3V0VXBkYXRlSWRlbnRp
ZmllcikgewogICAgICAgICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5fc2NoZWR1bGVk
TGF5b3V0VXBkYXRlSWRlbnRpZmllcik7CkBAIC0xNDgsOSArMTQ2LDkgQEAgV2ViSW5zcGVjdG9y
Lk5ldHdvcmtHcmlkQ29udGVudFZpZXcucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9kYXRh
R3JpZC51cGRhdGVMYXlvdXQoKTsKIAogICAgICAgICB0aGlzLl9wcm9jZXNzUGVuZGluZ1JlY29y
ZHMoKTsKLSAgICB9LAorICAgIH0KIAotICAgIG5lZWRzTGF5b3V0OiBmdW5jdGlvbigpCisgICAg
bmVlZHNMYXlvdXQoKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9uZXR3b3JrU2lkZWJhclBh
bmVsLnZpc2libGUpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0xNTksMTcgKzE1NywxNyBAQCBX
ZWJJbnNwZWN0b3IuTmV0d29ya0dyaWRDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAg
ICAgICByZXR1cm47CiAKICAgICAgICAgdGhpcy5fc2NoZWR1bGVkTGF5b3V0VXBkYXRlSWRlbnRp
ZmllciA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSh0aGlzLnVwZGF0ZUxheW91dC5iaW5kKHRoaXMp
KTsKLSAgICB9LAorICAgIH0KIAotICAgIHJlc2V0OiBmdW5jdGlvbigpCisgICAgcmVzZXQoKQog
ICAgIHsKICAgICAgICAgdGhpcy5fY29udGVudFRyZWVPdXRsaW5lLnJlbW92ZUNoaWxkcmVuKCk7
CiAgICAgICAgIHRoaXMuX2RhdGFHcmlkLnJlc2V0KCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICAv
LyBQcml2YXRlCiAKLSAgICBfcHJvY2Vzc1BlbmRpbmdSZWNvcmRzOiBmdW5jdGlvbigpCisgICAg
X3Byb2Nlc3NQZW5kaW5nUmVjb3JkcygpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX3BlbmRp
bmdSZWNvcmRzLmxlbmd0aCkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTE4NywxNCArMTg1LDE0
IEBAIFdlYkluc3BlY3Rvci5OZXR3b3JrR3JpZENvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKICAg
ICAgICAgfQogCiAgICAgICAgIHRoaXMuX3BlbmRpbmdSZWNvcmRzID0gW107Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBfbmV0d29ya1RpbWVsaW5lUmVzZXQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9u
ZXR3b3JrVGltZWxpbmVSZXNldChldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMucmVzZXQoKTsK
LSAgICB9LAorICAgIH0KIAotICAgIF9uZXR3b3JrVGltZWxpbmVSZWNvcmRBZGRlZDogZnVuY3Rp
b24oZXZlbnQpCisgICAgX25ldHdvcmtUaW1lbGluZVJlY29yZEFkZGVkKGV2ZW50KQogICAgIHsK
ICAgICAgICAgdmFyIHJlc291cmNlVGltZWxpbmVSZWNvcmQgPSBldmVudC5kYXRhLnJlY29yZDsK
ICAgICAgICAgY29uc29sZS5hc3NlcnQocmVzb3VyY2VUaW1lbGluZVJlY29yZCBpbnN0YW5jZW9m
IFdlYkluc3BlY3Rvci5SZXNvdXJjZVRpbWVsaW5lUmVjb3JkKTsKQEAgLTIwMiwxNyArMjAwLDE3
IEBAIFdlYkluc3BlY3Rvci5OZXR3b3JrR3JpZENvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKICAg
ICAgICAgdGhpcy5fcGVuZGluZ1JlY29yZHMucHVzaChyZXNvdXJjZVRpbWVsaW5lUmVjb3JkKTsK
IAogICAgICAgICB0aGlzLm5lZWRzTGF5b3V0KCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdHJl
ZUVsZW1lbnRQYXRoQ29tcG9uZW50U2VsZWN0ZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF90cmVl
RWxlbWVudFBhdGhDb21wb25lbnRTZWxlY3RlZChldmVudCkKICAgICB7CiAgICAgICAgIHZhciBk
YXRhR3JpZE5vZGUgPSB0aGlzLl9kYXRhR3JpZC5kYXRhR3JpZE5vZGVGb3JUcmVlRWxlbWVudChl
dmVudC5kYXRhLnBhdGhDb21wb25lbnQuZ2VuZXJhbFRyZWVFbGVtZW50KTsKICAgICAgICAgaWYg
KCFkYXRhR3JpZE5vZGUpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGRhdGFHcmlkTm9k
ZS5yZXZlYWxBbmRTZWxlY3QoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF90cmVlRWxlbWVudFNl
bGVjdGVkOiBmdW5jdGlvbih0cmVlRWxlbWVudCwgc2VsZWN0ZWRCeVVzZXIpCisgICAgX3RyZWVF
bGVtZW50U2VsZWN0ZWQodHJlZUVsZW1lbnQsIHNlbGVjdGVkQnlVc2VyKQogICAgIHsKICAgICAg
ICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3
LkV2ZW50LlNlbGVjdGlvblBhdGhDb21wb25lbnRzRGlkQ2hhbmdlKTsKIApAQCAtMjI1LDkgKzIy
Myw5IEBAIFdlYkluc3BlY3Rvci5OZXR3b3JrR3JpZENvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsK
ICAgICAgICAgfQogCiAgICAgICAgIGNvbnNvbGUuZXJyb3IoIlVua25vd24gdHJlZSBlbGVtZW50
IiwgdHJlZUVsZW1lbnQpOwotICAgIH0sCisgICAgfQogCi0gICAgX2RhdGFHcmlkTm9kZVNlbGVj
dGVkOiBmdW5jdGlvbihldmVudCkKKyAgICBfZGF0YUdyaWROb2RlU2VsZWN0ZWQoZXZlbnQpCiAg
ICAgewogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3Iu
Q29udGVudFZpZXcuRXZlbnQuU2VsZWN0aW9uUGF0aENvbXBvbmVudHNEaWRDaGFuZ2UpOwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L05ldHdvcmtUYWJDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL05ldHdvcmtUYWJDb250ZW50Vmlldy5qcwppbmRleCAzN2ZjNmNlNjUxOGVj
NzhlNmUxYjVkMjRkZDcyN2UwNDc2YmVjYzJjLi5kMTUzYzEyNGVkMzg5NzJkYjFjNjgxOGMyMWE1
OWYzN2U2NmM0Mjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9OZXR3b3JrVGFiQ29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTmV0d29ya1RhYkNvbnRlbnRWaWV3LmpzCkBAIC0y
MywyOSArMjMsMjcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwog
Ci1XZWJJbnNwZWN0b3IuTmV0d29ya1RhYkNvbnRlbnRWaWV3ID0gZnVuY3Rpb24oaWRlbnRpZmll
cikKK1dlYkluc3BlY3Rvci5OZXR3b3JrVGFiQ29udGVudFZpZXcgPSBjbGFzcyBOZXR3b3JrVGFi
Q29udGVudFZpZXcgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuQ29udGVudEJyb3dzZXJUYWJDb250ZW50
VmlldwogewotICAgIHZhciB0YWJCYXJJdGVtID0gbmV3IFdlYkluc3BlY3Rvci5UYWJCYXJJdGVt
KCJJbWFnZXMvTmV0d29yay5zdmciLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk5ldHdvcmsiKSk7
Ci0gICAgdmFyIGRldGFpbHNTaWRlYmFyUGFuZWxzID0gW1dlYkluc3BlY3Rvci5yZXNvdXJjZURl
dGFpbHNTaWRlYmFyUGFuZWwsIFdlYkluc3BlY3Rvci5wcm9iZURldGFpbHNTaWRlYmFyUGFuZWxd
OwotCi0gICAgV2ViSW5zcGVjdG9yLkNvbnRlbnRCcm93c2VyVGFiQ29udGVudFZpZXcuY2FsbCh0
aGlzLCBpZGVudGlmaWVyIHx8ICJuZXR3b3JrIiwgIm5ldHdvcmsiLCB0YWJCYXJJdGVtLCBXZWJJ
bnNwZWN0b3IuTmV0d29ya1NpZGViYXJQYW5lbCwgZGV0YWlsc1NpZGViYXJQYW5lbHMpOwotfTsK
KyAgICBjb25zdHJ1Y3RvcihpZGVudGlmaWVyKQorICAgIHsKKyAgICAgICAgdmFyIHRhYkJhckl0
ZW0gPSBuZXcgV2ViSW5zcGVjdG9yLlRhYkJhckl0ZW0oIkltYWdlcy9OZXR3b3JrLnN2ZyIsIFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiTmV0d29yayIpKTsKKyAgICAgICAgdmFyIGRldGFpbHNTaWRl
YmFyUGFuZWxzID0gW1dlYkluc3BlY3Rvci5yZXNvdXJjZURldGFpbHNTaWRlYmFyUGFuZWwsIFdl
Ykluc3BlY3Rvci5wcm9iZURldGFpbHNTaWRlYmFyUGFuZWxdOwogCi1XZWJJbnNwZWN0b3IuTmV0
d29ya1RhYkNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5z
cGVjdG9yLk5ldHdvcmtUYWJDb250ZW50VmlldywKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rv
ci5Db250ZW50QnJvd3NlclRhYkNvbnRlbnRWaWV3LnByb3RvdHlwZSwKKyAgICAgICAgc3VwZXIo
aWRlbnRpZmllciB8fCAibmV0d29yayIsICJuZXR3b3JrIiwgdGFiQmFySXRlbSwgV2ViSW5zcGVj
dG9yLk5ldHdvcmtTaWRlYmFyUGFuZWwsIGRldGFpbHNTaWRlYmFyUGFuZWxzKTsKKyAgICB9CiAK
ICAgICAvLyBQdWJsaWMKIAogICAgIGdldCB0eXBlKCkKICAgICB7CiAgICAgICAgIHJldHVybiBX
ZWJJbnNwZWN0b3IuTmV0d29ya1RhYkNvbnRlbnRWaWV3LlR5cGU7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBjYW5TaG93UmVwcmVzZW50ZWRPYmplY3Q6IGZ1bmN0aW9uKHJlcHJlc2VudGVkT2JqZWN0
KQorICAgIGNhblNob3dSZXByZXNlbnRlZE9iamVjdChyZXByZXNlbnRlZE9iamVjdCkKICAgICB7
CiAgICAgICAgIHJldHVybiByZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rv
ci5SZXNvdXJjZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBzdXBwb3J0c1NwbGl0Q29udGVu
dEJyb3dzZXIoKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL05ld1RhYkNvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTmV3VGFiQ29udGVudFZpZXcuanMKaW5kZXggMWQ5ZWE0
MTVkN2U0MWVkZWVhOTM1YjllZWYzNThiMzM0ZjI0OGRmZi4uY2Y2MzcwY2NlMTgwMTk2YWNiZjg4
NWZlZTllNDEyMDUyMjE4MzQxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvTmV3VGFiQ29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTmV3VGFiQ29udGVudFZpZXcuanMKQEAgLTIz
LDU2ICsyMyw1NCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAK
LVdlYkluc3BlY3Rvci5OZXdUYWJDb250ZW50VmlldyA9IGZ1bmN0aW9uKGlkZW50aWZpZXIpCitX
ZWJJbnNwZWN0b3IuTmV3VGFiQ29udGVudFZpZXcgPSBjbGFzcyBOZXdUYWJDb250ZW50VmlldyBl
eHRlbmRzIFdlYkluc3BlY3Rvci5UYWJDb250ZW50VmlldwogewotICAgIHZhciB0YWJCYXJJdGVt
ID0gbmV3IFdlYkluc3BlY3Rvci5UYWJCYXJJdGVtKCJJbWFnZXMvTmV3VGFiLnN2ZyIsIFdlYklu
c3BlY3Rvci5VSVN0cmluZygiTmV3IFRhYiIpKTsKKyAgICBjb25zdHJ1Y3RvcihpZGVudGlmaWVy
KQorICAgIHsKKyAgICAgICAgdmFyIHRhYkJhckl0ZW0gPSBuZXcgV2ViSW5zcGVjdG9yLlRhYkJh
ckl0ZW0oIkltYWdlcy9OZXdUYWIuc3ZnIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJOZXcgVGFi
IikpOwogCi0gICAgV2ViSW5zcGVjdG9yLlRhYkNvbnRlbnRWaWV3LmNhbGwodGhpcywgaWRlbnRp
ZmllciB8fCAibmV3LXRhYiIsICJuZXctdGFiIiwgdGFiQmFySXRlbSk7CisgICAgICAgIHN1cGVy
KGlkZW50aWZpZXIgfHwgIm5ldy10YWIiLCAibmV3LXRhYiIsIHRhYkJhckl0ZW0pOwogCi0gICAg
dmFyIGFsbG93ZWROZXdUYWJzID0gWwotICAgICAgICB7aW1hZ2U6ICJJbWFnZXMvQ29uc29sZS5z
dmciLCB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDb25zb2xlIiksIHR5cGU6IFdlYklu
c3BlY3Rvci5Db25zb2xlVGFiQ29udGVudFZpZXcuVHlwZX0sCi0gICAgICAgIHtpbWFnZTogIklt
YWdlcy9EZWJ1Z2dlci5zdmciLCB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJEZWJ1Z2dl
ciIpLCB0eXBlOiBXZWJJbnNwZWN0b3IuRGVidWdnZXJUYWJDb250ZW50Vmlldy5UeXBlfSwKLSAg
ICAgICAge2ltYWdlOiAiSW1hZ2VzL0VsZW1lbnRzLnN2ZyIsIHRpdGxlOiBXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIkVsZW1lbnRzIiksIHR5cGU6IFdlYkluc3BlY3Rvci5FbGVtZW50c1RhYkNvbnRl
bnRWaWV3LlR5cGV9LAotICAgICAgICB7aW1hZ2U6ICJJbWFnZXMvTmV0d29yay5zdmciLCB0aXRs
ZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJOZXR3b3JrIiksIHR5cGU6IFdlYkluc3BlY3Rvci5O
ZXR3b3JrVGFiQ29udGVudFZpZXcuVHlwZX0sCi0gICAgICAgIHtpbWFnZTogIkltYWdlcy9SZXNv
dXJjZXMuc3ZnIiwgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVzb3VyY2VzIiksIHR5
cGU6IFdlYkluc3BlY3Rvci5SZXNvdXJjZXNUYWJDb250ZW50Vmlldy5UeXBlfSwKLSAgICAgICAg
e2ltYWdlOiAiSW1hZ2VzL1N0b3JhZ2Uuc3ZnIiwgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiU3RvcmFnZSIpLCB0eXBlOiBXZWJJbnNwZWN0b3IuU3RvcmFnZVRhYkNvbnRlbnRWaWV3LlR5
cGV9LAotICAgICAgICB7aW1hZ2U6ICJJbWFnZXMvVGltZWxpbmUuc3ZnIiwgdGl0bGU6IFdlYklu
c3BlY3Rvci5VSVN0cmluZygiVGltZWxpbmVzIiksIHR5cGU6IFdlYkluc3BlY3Rvci5UaW1lbGlu
ZVRhYkNvbnRlbnRWaWV3LlR5cGV9Ci0gICAgXTsKKyAgICAgICAgdmFyIGFsbG93ZWROZXdUYWJz
ID0gWworICAgICAgICAgICAge2ltYWdlOiAiSW1hZ2VzL0NvbnNvbGUuc3ZnIiwgdGl0bGU6IFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiQ29uc29sZSIpLCB0eXBlOiBXZWJJbnNwZWN0b3IuQ29uc29s
ZVRhYkNvbnRlbnRWaWV3LlR5cGV9LAorICAgICAgICAgICAge2ltYWdlOiAiSW1hZ2VzL0RlYnVn
Z2VyLnN2ZyIsIHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkRlYnVnZ2VyIiksIHR5cGU6
IFdlYkluc3BlY3Rvci5EZWJ1Z2dlclRhYkNvbnRlbnRWaWV3LlR5cGV9LAorICAgICAgICAgICAg
e2ltYWdlOiAiSW1hZ2VzL0VsZW1lbnRzLnN2ZyIsIHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIkVsZW1lbnRzIiksIHR5cGU6IFdlYkluc3BlY3Rvci5FbGVtZW50c1RhYkNvbnRlbnRWaWV3
LlR5cGV9LAorICAgICAgICAgICAge2ltYWdlOiAiSW1hZ2VzL05ldHdvcmsuc3ZnIiwgdGl0bGU6
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiTmV0d29yayIpLCB0eXBlOiBXZWJJbnNwZWN0b3IuTmV0
d29ya1RhYkNvbnRlbnRWaWV3LlR5cGV9LAorICAgICAgICAgICAge2ltYWdlOiAiSW1hZ2VzL1Jl
c291cmNlcy5zdmciLCB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZXNvdXJjZXMiKSwg
dHlwZTogV2ViSW5zcGVjdG9yLlJlc291cmNlc1RhYkNvbnRlbnRWaWV3LlR5cGV9LAorICAgICAg
ICAgICAge2ltYWdlOiAiSW1hZ2VzL1N0b3JhZ2Uuc3ZnIiwgdGl0bGU6IFdlYkluc3BlY3Rvci5V
SVN0cmluZygiU3RvcmFnZSIpLCB0eXBlOiBXZWJJbnNwZWN0b3IuU3RvcmFnZVRhYkNvbnRlbnRW
aWV3LlR5cGV9LAorICAgICAgICAgICAge2ltYWdlOiAiSW1hZ2VzL1RpbWVsaW5lLnN2ZyIsIHRp
dGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlRpbWVsaW5lcyIpLCB0eXBlOiBXZWJJbnNwZWN0
b3IuVGltZWxpbmVUYWJDb250ZW50Vmlldy5UeXBlfQorICAgICAgICBdOwogCi0gICAgYWxsb3dl
ZE5ld1RhYnMuc29ydChmdW5jdGlvbihhLCBiKSB7IHJldHVybiBhLnRpdGxlLmxvY2FsZUNvbXBh
cmUoYi50aXRsZSk7IH0pOworICAgICAgICBhbGxvd2VkTmV3VGFicy5zb3J0KGZ1bmN0aW9uKGEs
IGIpIHsgcmV0dXJuIGEudGl0bGUubG9jYWxlQ29tcGFyZShiLnRpdGxlKTsgfSk7CiAKLSAgICBm
b3IgKHZhciBpbmZvIG9mIGFsbG93ZWROZXdUYWJzKSB7Ci0gICAgICAgIGlmICghV2ViSW5zcGVj
dG9yLmlzVGFiVHlwZUFsbG93ZWQoaW5mby50eXBlKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICBmb3IgKHZhciBpbmZvIG9mIGFsbG93ZWROZXdUYWJzKSB7CisgICAgICAgICAgICBp
ZiAoIVdlYkluc3BlY3Rvci5pc1RhYlR5cGVBbGxvd2VkKGluZm8udHlwZSkpCisgICAgICAgICAg
ICAgICAgY29udGludWU7CiAKLSAgICAgICAgdmFyIHRhYkl0ZW1FbGVtZW50ID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgICAgIHRhYkl0ZW1FbGVtZW50LmNsYXNzTGlzdC5h
ZGQoV2ViSW5zcGVjdG9yLk5ld1RhYkNvbnRlbnRWaWV3LlRhYkl0ZW1TdHlsZUNsYXNzTmFtZSk7
Ci0gICAgICAgIHRhYkl0ZW1FbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5f
Y3JlYXRlTmV3VGFiLmJpbmQodGhpcywgaW5mby50eXBlKSk7Ci0gICAgICAgIHRhYkl0ZW1FbGVt
ZW50W1dlYkluc3BlY3Rvci5OZXdUYWJDb250ZW50Vmlldy5UeXBlU3ltYm9sXSA9IGluZm8udHlw
ZTsKKyAgICAgICAgICAgIHZhciB0YWJJdGVtRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoImRpdiIpOworICAgICAgICAgICAgdGFiSXRlbUVsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJ
bnNwZWN0b3IuTmV3VGFiQ29udGVudFZpZXcuVGFiSXRlbVN0eWxlQ2xhc3NOYW1lKTsKKyAgICAg
ICAgICAgIHRhYkl0ZW1FbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fY3Jl
YXRlTmV3VGFiLmJpbmQodGhpcywgaW5mby50eXBlKSk7CisgICAgICAgICAgICB0YWJJdGVtRWxl
bWVudFtXZWJJbnNwZWN0b3IuTmV3VGFiQ29udGVudFZpZXcuVHlwZVN5bWJvbF0gPSBpbmZvLnR5
cGU7CiAKLSAgICAgICAgdmFyIGJveEVsZW1lbnQgPSB0YWJJdGVtRWxlbWVudC5hcHBlbmRDaGls
ZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSk7Ci0gICAgICAgIGJveEVsZW1lbnQuY2xh
c3NMaXN0LmFkZCgiYm94Iik7CisgICAgICAgICAgICB2YXIgYm94RWxlbWVudCA9IHRhYkl0ZW1F
bGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKTsKKyAgICAg
ICAgICAgIGJveEVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiYm94Iik7CiAKLSAgICAgICAgdmFyIGlt
YWdlRWxlbWVudCA9IGJveEVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiaW1nIikpOwotICAgICAgICBpbWFnZUVsZW1lbnQuc3JjID0gaW5mby5pbWFnZTsKKyAgICAg
ICAgICAgIHZhciBpbWFnZUVsZW1lbnQgPSBib3hFbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImltZyIpKTsKKyAgICAgICAgICAgIGltYWdlRWxlbWVudC5zcmMgPSBp
bmZvLmltYWdlOwogCi0gICAgICAgIHZhciBsYWJlbEVsZW1lbnQgPSB0YWJJdGVtRWxlbWVudC5h
cHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsYWJlbCIpKTsKLSAgICAgICAgbGFi
ZWxFbGVtZW50LnRleHRDb250ZW50ID0gaW5mby50aXRsZTsKKyAgICAgICAgICAgIHZhciBsYWJl
bEVsZW1lbnQgPSB0YWJJdGVtRWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJsYWJlbCIpKTsKKyAgICAgICAgICAgIGxhYmVsRWxlbWVudC50ZXh0Q29udGVudCA9IGlu
Zm8udGl0bGU7CiAKLSAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRhYkl0ZW1FbGVt
ZW50KTsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0YWJJdGVtRWxlbWVu
dCk7CisgICAgICAgIH0KICAgICB9Ci19OwotCi1XZWJJbnNwZWN0b3IuTmV3VGFiQ29udGVudFZp
ZXcucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuTmV3VGFiQ29u
dGVudFZpZXcsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuVGFiQ29udGVudFZpZXcucHJv
dG90eXBlLAogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgdHlwZSgpCiAgICAgewogICAgICAg
ICByZXR1cm4gV2ViSW5zcGVjdG9yLk5ld1RhYkNvbnRlbnRWaWV3LlR5cGU7Ci0gICAgfSwKKyAg
ICB9CiAKICAgICBzaG93bigpCiAgICAgewpAQCAtODAsMTIgKzc4LDEyIEBAIFdlYkluc3BlY3Rv
ci5OZXdUYWJDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIFdlYkluc3BlY3Rvci50
YWJCcm93c2VyLnRhYkJhci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5UYWJCYXIuRXZl
bnQuVGFiQmFySXRlbVJlbW92ZWQsIHRoaXMuX3VwZGF0ZVRhYkl0ZW1zLCB0aGlzKTsKIAogICAg
ICAgICB0aGlzLl91cGRhdGVUYWJJdGVtcygpOwotICAgIH0sCisgICAgfQogCiAgICAgaGlkZGVu
KCkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci50YWJCcm93c2VyLnRhYkJhci5yZW1vdmVF
dmVudExpc3RlbmVyKG51bGwsIG51bGwsIHRoaXMpOwotICAgIH0sCisgICAgfQogCiAgICAgLy8g
UHJpdmF0ZQogCkBAIC05NSw3ICs5Myw3IEBAIFdlYkluc3BlY3Rvci5OZXdUYWJDb250ZW50Vmll
dy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgV2ViSW5zcGVj
dG9yLmNyZWF0ZU5ld1RhYih0YWJUeXBlLCB0aGlzKTsKLSAgICB9LAorICAgIH0KIAogICAgIF91
cGRhdGVUYWJJdGVtcygpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VDbHVzdGVyQ29udGVudFZpZXcuanMgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZUNsdXN0ZXJDb250
ZW50Vmlldy5qcwppbmRleCBmYTU0MmFjMGRhMTU5MWI5MmQ0ZTM2ZTE1MjIzZjE2ODQxY2Y5ZWUy
Li40MjY1ZmVlNGU3OTYzZTNjZmRkNGEyYTQzZDdjYTRjZmJjZTdjZGIxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZUNsdXN0ZXJD
b250ZW50Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsNDYgKzIzLDM4IEBACiAgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLlJlc291
cmNlQ2x1c3RlckNvbnRlbnRWaWV3ID0gZnVuY3Rpb24ocmVzb3VyY2UpCitXZWJJbnNwZWN0b3Iu
UmVzb3VyY2VDbHVzdGVyQ29udGVudFZpZXcgPSBjbGFzcyBSZXNvdXJjZUNsdXN0ZXJDb250ZW50
VmlldyBleHRlbmRzIFdlYkluc3BlY3Rvci5DbHVzdGVyQ29udGVudFZpZXcKIHsKLSAgICBXZWJJ
bnNwZWN0b3IuQ2x1c3RlckNvbnRlbnRWaWV3LmNhbGwodGhpcywgcmVzb3VyY2UpOwotCi0gICAg
dGhpcy5fcmVzb3VyY2UgPSByZXNvdXJjZTsKLSAgICB0aGlzLl9yZXNvdXJjZS5hZGRFdmVudExp
c3RlbmVyKFdlYkluc3BlY3Rvci5SZXNvdXJjZS5FdmVudC5UeXBlRGlkQ2hhbmdlLCB0aGlzLl9y
ZXNvdXJjZVR5cGVEaWRDaGFuZ2UsIHRoaXMpOwotICAgIHRoaXMuX3Jlc291cmNlLmFkZEV2ZW50
TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlJlc291cmNlLkV2ZW50LkxvYWRpbmdEaWRGaW5pc2gsIHRo
aXMuX3Jlc291cmNlTG9hZGluZ0RpZEZpbmlzaCwgdGhpcyk7Ci0KLSAgICBmdW5jdGlvbiBjcmVh
dGVQYXRoQ29tcG9uZW50KGRpc3BsYXlOYW1lLCBjbGFzc05hbWUsIGlkZW50aWZpZXIpCisgICAg
Y29uc3RydWN0b3IocmVzb3VyY2UpCiAgICAgewotICAgICAgICB2YXIgcGF0aENvbXBvbmVudCA9
IG5ldyBXZWJJbnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0aENvbXBvbmVudChkaXNwbGF5TmFtZSwg
Y2xhc3NOYW1lLCBpZGVudGlmaWVyLCBmYWxzZSwgdHJ1ZSk7Ci0gICAgICAgIHBhdGhDb21wb25l
bnQuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0aENvbXBvbmVu
dC5FdmVudC5TaWJsaW5nV2FzU2VsZWN0ZWQsIHRoaXMuX3BhdGhDb21wb25lbnRTZWxlY3RlZCwg
dGhpcyk7Ci0gICAgICAgIHJldHVybiBwYXRoQ29tcG9uZW50OwotICAgIH0KKyAgICAgICAgc3Vw
ZXIocmVzb3VyY2UpOwogCi0gICAgdGhpcy5fcmVxdWVzdFBhdGhDb21wb25lbnQgPSBjcmVhdGVQ
YXRoQ29tcG9uZW50LmNhbGwodGhpcywgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZXF1ZXN0Iiks
IFdlYkluc3BlY3Rvci5SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5SZXF1ZXN0SWNvblN0eWxl
Q2xhc3NOYW1lLCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VDbHVzdGVyQ29udGVudFZpZXcuUmVxdWVz
dElkZW50aWZpZXIpOwotICAgIHRoaXMuX3Jlc3BvbnNlUGF0aENvbXBvbmVudCA9IGNyZWF0ZVBh
dGhDb21wb25lbnQuY2FsbCh0aGlzLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlc3BvbnNlIiks
IFdlYkluc3BlY3Rvci5SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5SZXNwb25zZUljb25TdHls
ZUNsYXNzTmFtZSwgV2ViSW5zcGVjdG9yLlJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3LlJlc3Bv
bnNlSWRlbnRpZmllcik7CisgICAgICAgIHRoaXMuX3Jlc291cmNlID0gcmVzb3VyY2U7CisgICAg
ICAgIHRoaXMuX3Jlc291cmNlLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlJlc291cmNl
LkV2ZW50LlR5cGVEaWRDaGFuZ2UsIHRoaXMuX3Jlc291cmNlVHlwZURpZENoYW5nZSwgdGhpcyk7
CisgICAgICAgIHRoaXMuX3Jlc291cmNlLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlJl
c291cmNlLkV2ZW50LkxvYWRpbmdEaWRGaW5pc2gsIHRoaXMuX3Jlc291cmNlTG9hZGluZ0RpZEZp
bmlzaCwgdGhpcyk7CiAKLSAgICB0aGlzLl9yZXF1ZXN0UGF0aENvbXBvbmVudC5uZXh0U2libGlu
ZyA9IHRoaXMuX3Jlc3BvbnNlUGF0aENvbXBvbmVudDsKLSAgICB0aGlzLl9yZXNwb25zZVBhdGhD
b21wb25lbnQucHJldmlvdXNTaWJsaW5nID0gdGhpcy5fcmVxdWVzdFBhdGhDb21wb25lbnQ7Cisg
ICAgICAgIGZ1bmN0aW9uIGNyZWF0ZVBhdGhDb21wb25lbnQoZGlzcGxheU5hbWUsIGNsYXNzTmFt
ZSwgaWRlbnRpZmllcikKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBhdGhDb21wb25lbnQg
PSBuZXcgV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhDb21wb25lbnQoZGlzcGxheU5hbWUs
IGNsYXNzTmFtZSwgaWRlbnRpZmllciwgZmFsc2UsIHRydWUpOworICAgICAgICAgICAgcGF0aENv
bXBvbmVudC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5IaWVyYXJjaGljYWxQYXRoQ29t
cG9uZW50LkV2ZW50LlNpYmxpbmdXYXNTZWxlY3RlZCwgdGhpcy5fcGF0aENvbXBvbmVudFNlbGVj
dGVkLCB0aGlzKTsKKyAgICAgICAgICAgIHJldHVybiBwYXRoQ29tcG9uZW50OworICAgICAgICB9
CiAKLSAgICB0aGlzLl9jdXJyZW50Q29udGVudFZpZXdTZXR0aW5nID0gbmV3IFdlYkluc3BlY3Rv
ci5TZXR0aW5nKCJyZXNvdXJjZS1jdXJyZW50LXZpZXctIiArIHRoaXMuX3Jlc291cmNlLnVybC5o
YXNoLCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VDbHVzdGVyQ29udGVudFZpZXcuUmVzcG9uc2VJZGVu
dGlmaWVyKTsKLX07CisgICAgICAgIHRoaXMuX3JlcXVlc3RQYXRoQ29tcG9uZW50ID0gY3JlYXRl
UGF0aENvbXBvbmVudC5jYWxsKHRoaXMsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVxdWVzdCIp
LCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VDbHVzdGVyQ29udGVudFZpZXcuUmVxdWVzdEljb25TdHls
ZUNsYXNzTmFtZSwgV2ViSW5zcGVjdG9yLlJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3LlJlcXVl
c3RJZGVudGlmaWVyKTsKKyAgICAgICAgdGhpcy5fcmVzcG9uc2VQYXRoQ29tcG9uZW50ID0gY3Jl
YXRlUGF0aENvbXBvbmVudC5jYWxsKHRoaXMsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVzcG9u
c2UiKSwgV2ViSW5zcGVjdG9yLlJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3LlJlc3BvbnNlSWNv
blN0eWxlQ2xhc3NOYW1lLCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VDbHVzdGVyQ29udGVudFZpZXcu
UmVzcG9uc2VJZGVudGlmaWVyKTsKIAotV2ViSW5zcGVjdG9yLlJlc291cmNlQ2x1c3RlckNvbnRl
bnRWaWV3LkNvbnRlbnRWaWV3SWRlbnRpZmllckNvb2tpZUtleSA9ICJyZXNvdXJjZS1jbHVzdGVy
LWNvbnRlbnQtdmlldy1pZGVudGlmaWVyIjsKKyAgICAgICAgdGhpcy5fcmVxdWVzdFBhdGhDb21w
b25lbnQubmV4dFNpYmxpbmcgPSB0aGlzLl9yZXNwb25zZVBhdGhDb21wb25lbnQ7CisgICAgICAg
IHRoaXMuX3Jlc3BvbnNlUGF0aENvbXBvbmVudC5wcmV2aW91c1NpYmxpbmcgPSB0aGlzLl9yZXF1
ZXN0UGF0aENvbXBvbmVudDsKIAotV2ViSW5zcGVjdG9yLlJlc291cmNlQ2x1c3RlckNvbnRlbnRW
aWV3LlJlcXVlc3RJY29uU3R5bGVDbGFzc05hbWUgPSAicmVxdWVzdC1pY29uIjsKLVdlYkluc3Bl
Y3Rvci5SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5SZXNwb25zZUljb25TdHlsZUNsYXNzTmFt
ZSA9ICJyZXNwb25zZS1pY29uIjsKLVdlYkluc3BlY3Rvci5SZXNvdXJjZUNsdXN0ZXJDb250ZW50
Vmlldy5SZXF1ZXN0SWRlbnRpZmllciA9ICJyZXF1ZXN0IjsKLVdlYkluc3BlY3Rvci5SZXNvdXJj
ZUNsdXN0ZXJDb250ZW50Vmlldy5SZXNwb25zZUlkZW50aWZpZXIgPSAicmVzcG9uc2UiOwotCi1X
ZWJJbnNwZWN0b3IuUmVzb3VyY2VDbHVzdGVyQ29udGVudFZpZXcucHJvdG90eXBlID0gewotICAg
IGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuUmVzb3VyY2VDbHVzdGVyQ29udGVudFZpZXcsCisg
ICAgICAgIHRoaXMuX2N1cnJlbnRDb250ZW50Vmlld1NldHRpbmcgPSBuZXcgV2ViSW5zcGVjdG9y
LlNldHRpbmcoInJlc291cmNlLWN1cnJlbnQtdmlldy0iICsgdGhpcy5fcmVzb3VyY2UudXJsLmhh
c2gsIFdlYkluc3BlY3Rvci5SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5SZXNwb25zZUlkZW50
aWZpZXIpOworICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IHJlc291cmNlKCkKICAg
ICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9yZXNvdXJjZTsKLSAgICB9LAorICAgIH0KIAogICAg
IGdldCByZXNwb25zZUNvbnRlbnRWaWV3KCkKICAgICB7CkBAIC05MSw3ICs4Myw3IEBAIFdlYklu
c3BlY3Rvci5SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAg
IH0KIAogICAgICAgICByZXR1cm4gdGhpcy5fcmVzcG9uc2VDb250ZW50VmlldzsKLSAgICB9LAor
ICAgIH0KIAogICAgIGdldCByZXF1ZXN0Q29udGVudFZpZXcoKQogICAgIHsKQEAgLTEwNCw3ICs5
Niw3IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5wcm90b3R5cGUg
PSB7CiAgICAgICAgIHRoaXMuX3JlcXVlc3RDb250ZW50VmlldyA9IG5ldyBXZWJJbnNwZWN0b3Iu
VGV4dENvbnRlbnRWaWV3KHRoaXMuX3Jlc291cmNlLnJlcXVlc3REYXRhIHx8ICIiLCB0aGlzLl9y
ZXNvdXJjZS5yZXF1ZXN0RGF0YUNvbnRlbnRUeXBlKTsKIAogICAgICAgICByZXR1cm4gdGhpcy5f
cmVxdWVzdENvbnRlbnRWaWV3OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHNlbGVjdGlvblBh
dGhDb21wb25lbnRzKCkKICAgICB7CkBAIC0xMTgsNDUgKzExMCw0NSBAQCBXZWJJbnNwZWN0b3Iu
UmVzb3VyY2VDbHVzdGVyQ29udGVudFZpZXcucHJvdG90eXBlID0gewogICAgICAgICAvLyBBcHBl
bmQgdGhlIGN1cnJlbnQgdmlldydzIHBhdGggY29tcG9uZW50cyB0byB0aGUgcGF0aCBjb21wb25l
bnQgcmVwcmVzZW50aW5nIHRoZSBjdXJyZW50IHZpZXcuCiAgICAgICAgIHZhciBjb21wb25lbnRz
ID0gW3RoaXMuX3BhdGhDb21wb25lbnRGb3JDb250ZW50VmlldyhjdXJyZW50Q29udGVudFZpZXcp
XTsKICAgICAgICAgcmV0dXJuIGNvbXBvbmVudHMuY29uY2F0KGN1cnJlbnRDb250ZW50Vmlldy5z
ZWxlY3Rpb25QYXRoQ29tcG9uZW50cyk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzaG93bjogZnVu
Y3Rpb24oKQorICAgIHNob3duKCkKICAgICB7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5DbHVzdGVy
Q29udGVudFZpZXcucHJvdG90eXBlLnNob3duLmNhbGwodGhpcyk7CisgICAgICAgIHN1cGVyLnNo
b3duKCk7CiAKICAgICAgICAgaWYgKHRoaXMuX3Nob3duSW5pdGlhbENvbnRlbnQpCiAgICAgICAg
ICAgICByZXR1cm47CiAKICAgICAgICAgdGhpcy5fc2hvd0NvbnRlbnRWaWV3Rm9ySWRlbnRpZmll
cih0aGlzLl9jdXJyZW50Q29udGVudFZpZXdTZXR0aW5nLnZhbHVlKTsKLSAgICB9LAorICAgIH0K
IAotICAgIGNsb3NlZDogZnVuY3Rpb24oKQorICAgIGNsb3NlZCgpCiAgICAgewotICAgICAgICBX
ZWJJbnNwZWN0b3IuQ2x1c3RlckNvbnRlbnRWaWV3LnByb3RvdHlwZS5jbG9zZWQuY2FsbCh0aGlz
KTsKKyAgICAgICAgc3VwZXIuY2xvc2VkKCk7CiAKICAgICAgICAgdGhpcy5fc2hvd25Jbml0aWFs
Q29udGVudCA9IGZhbHNlOwotICAgIH0sCisgICAgfQogCi0gICAgc2F2ZVRvQ29va2llOiBmdW5j
dGlvbihjb29raWUpCisgICAgc2F2ZVRvQ29va2llKGNvb2tpZSkKICAgICB7CiAgICAgICAgIGNv
b2tpZVtXZWJJbnNwZWN0b3IuUmVzb3VyY2VDbHVzdGVyQ29udGVudFZpZXcuQ29udGVudFZpZXdJ
ZGVudGlmaWVyQ29va2llS2V5XSA9IHRoaXMuX2N1cnJlbnRDb250ZW50Vmlld1NldHRpbmcudmFs
dWU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICByZXN0b3JlRnJvbUNvb2tpZTogZnVuY3Rpb24oY29v
a2llKQorICAgIHJlc3RvcmVGcm9tQ29va2llKGNvb2tpZSkKICAgICB7CiAgICAgICAgIHZhciBj
b250ZW50VmlldyA9IHRoaXMuX3Nob3dDb250ZW50Vmlld0ZvcklkZW50aWZpZXIoY29va2llW1dl
Ykluc3BlY3Rvci5SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5Db250ZW50Vmlld0lkZW50aWZp
ZXJDb29raWVLZXldKTsKICAgICAgICAgaWYgKHR5cGVvZiBjb250ZW50Vmlldy5yZXZlYWxQb3Np
dGlvbiA9PT0gImZ1bmN0aW9uIiAmJiAibGluZU51bWJlciIgaW4gY29va2llICYmICJjb2x1bW5O
dW1iZXIiIGluIGNvb2tpZSkKICAgICAgICAgICAgIGNvbnRlbnRWaWV3LnJldmVhbFBvc2l0aW9u
KG5ldyBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVBvc2l0aW9uKGNvb2tpZS5saW5lTnVtYmVyLCBj
b29raWUuY29sdW1uTnVtYmVyKSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzaG93UmVxdWVzdDog
ZnVuY3Rpb24oKQorICAgIHNob3dSZXF1ZXN0KCkKICAgICB7CiAgICAgICAgIHRoaXMuX3Nob3du
SW5pdGlhbENvbnRlbnQgPSB0cnVlOwogCiAgICAgICAgIHJldHVybiB0aGlzLl9zaG93Q29udGVu
dFZpZXdGb3JJZGVudGlmaWVyKFdlYkluc3BlY3Rvci5SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmll
dy5SZXF1ZXN0SWRlbnRpZmllcik7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzaG93UmVzcG9uc2U6
IGZ1bmN0aW9uKHBvc2l0aW9uVG9SZXZlYWwsIHRleHRSYW5nZVRvU2VsZWN0LCBmb3JjZVVuZm9y
bWF0dGVkKQorICAgIHNob3dSZXNwb25zZShwb3NpdGlvblRvUmV2ZWFsLCB0ZXh0UmFuZ2VUb1Nl
bGVjdCwgZm9yY2VVbmZvcm1hdHRlZCkKICAgICB7CiAgICAgICAgIHRoaXMuX3Nob3duSW5pdGlh
bENvbnRlbnQgPSB0cnVlOwogCkBAIC0xNzAsMTEgKzE2MiwxMSBAQCBXZWJJbnNwZWN0b3IuUmVz
b3VyY2VDbHVzdGVyQ29udGVudFZpZXcucHJvdG90eXBlID0gewogICAgICAgICBpZiAodHlwZW9m
IHJlc3BvbnNlQ29udGVudFZpZXcucmV2ZWFsUG9zaXRpb24gPT09ICJmdW5jdGlvbiIpCiAgICAg
ICAgICAgICByZXNwb25zZUNvbnRlbnRWaWV3LnJldmVhbFBvc2l0aW9uKHBvc2l0aW9uVG9SZXZl
YWwsIHRleHRSYW5nZVRvU2VsZWN0LCBmb3JjZVVuZm9ybWF0dGVkKTsKICAgICAgICAgcmV0dXJu
IHJlc3BvbnNlQ29udGVudFZpZXc7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcml2YXRlCiAK
LSAgICBfY2FuU2hvd1JlcXVlc3RDb250ZW50VmlldzogZnVuY3Rpb24oKQorICAgIF9jYW5TaG93
UmVxdWVzdENvbnRlbnRWaWV3KCkKICAgICB7CiAgICAgICAgIHZhciByZXF1ZXN0RGF0YSA9IHRo
aXMuX3Jlc291cmNlLnJlcXVlc3REYXRhOwogICAgICAgICBpZiAoIXJlcXVlc3REYXRhKQpAQCAt
MTg1LDkgKzE3Nyw5IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5w
cm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcGF0aENvbXBvbmVudEZvckNvbnRlbnRWaWV3
OiBmdW5jdGlvbihjb250ZW50VmlldykKKyAgICBfcGF0aENvbXBvbmVudEZvckNvbnRlbnRWaWV3
KGNvbnRlbnRWaWV3KQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoY29udGVudFZpZXcp
OwogICAgICAgICBpZiAoIWNvbnRlbnRWaWV3KQpAQCAtMTk4LDkgKzE5MCw5IEBAIFdlYkluc3Bl
Y3Rvci5SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAg
ICByZXR1cm4gdGhpcy5fcmVzcG9uc2VQYXRoQ29tcG9uZW50OwogICAgICAgICBjb25zb2xlLmVy
cm9yKCJVbmtub3duIGNvbnRlbnRWaWV3LiIpOwogICAgICAgICByZXR1cm4gbnVsbDsKLSAgICB9
LAorICAgIH0KIAotICAgIF9pZGVudGlmaWVyRm9yQ29udGVudFZpZXc6IGZ1bmN0aW9uKGNvbnRl
bnRWaWV3KQorICAgIF9pZGVudGlmaWVyRm9yQ29udGVudFZpZXcoY29udGVudFZpZXcpCiAgICAg
ewogICAgICAgICBjb25zb2xlLmFzc2VydChjb250ZW50Vmlldyk7CiAgICAgICAgIGlmICghY29u
dGVudFZpZXcpCkBAIC0yMTEsOSArMjAzLDkgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlQ2x1c3Rl
ckNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0
b3IuUmVzb3VyY2VDbHVzdGVyQ29udGVudFZpZXcuUmVzcG9uc2VJZGVudGlmaWVyOwogICAgICAg
ICBjb25zb2xlLmVycm9yKCJVbmtub3duIGNvbnRlbnRWaWV3LiIpOwogICAgICAgICByZXR1cm4g
bnVsbDsKLSAgICB9LAorICAgIH0KIAotICAgIF9zaG93Q29udGVudFZpZXdGb3JJZGVudGlmaWVy
OiBmdW5jdGlvbihpZGVudGlmaWVyKQorICAgIF9zaG93Q29udGVudFZpZXdGb3JJZGVudGlmaWVy
KGlkZW50aWZpZXIpCiAgICAgewogICAgICAgICB2YXIgY29udGVudFZpZXdUb1Nob3cgPSBudWxs
OwogCkBAIC0yMzQsMTQgKzIyNiwxNCBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VDbHVzdGVyQ29u
dGVudFZpZXcucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9jdXJyZW50Q29udGVudFZpZXdT
ZXR0aW5nLnZhbHVlID0gdGhpcy5faWRlbnRpZmllckZvckNvbnRlbnRWaWV3KGNvbnRlbnRWaWV3
VG9TaG93KTsKIAogICAgICAgICByZXR1cm4gdGhpcy5jb250ZW50Vmlld0NvbnRhaW5lci5zaG93
Q29udGVudFZpZXcoY29udGVudFZpZXdUb1Nob3cpOwotICAgIH0sCisgICAgfQogCi0gICAgX3Bh
dGhDb21wb25lbnRTZWxlY3RlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX3BhdGhDb21wb25lbnRT
ZWxlY3RlZChldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMuX3Nob3dDb250ZW50Vmlld0Zvcklk
ZW50aWZpZXIoZXZlbnQuZGF0YS5wYXRoQ29tcG9uZW50LnJlcHJlc2VudGVkT2JqZWN0KTsKLSAg
ICB9LAorICAgIH0KIAotICAgIF9yZXNvdXJjZVR5cGVEaWRDaGFuZ2U6IGZ1bmN0aW9uKGV2ZW50
KQorICAgIF9yZXNvdXJjZVR5cGVEaWRDaGFuZ2UoZXZlbnQpCiAgICAgewogICAgICAgICAvLyBT
aW5jZSByZXNvdXJjZSB2aWV3cyBhcmUgYmFzZWQgb24gdGhlIHR5cGUsIHdlIG5lZWQgdG8gbWFr
ZSBhIG5ldyBjb250ZW50IHZpZXcgYW5kIHRlbGwgdGhlIGNvbnRhaW5lciB0byByZXBsYWNlIHRo
aXMKICAgICAgICAgLy8gY29udGVudCB2aWV3IHdpdGggdGhlIG5ldyBvbmUuIE1ha2UgYSBuZXcg
UmVzb3VyY2VDb250ZW50VmlldyB3aGljaCB3aWxsIHVzZSB0aGUgbmV3IHJlc291cmNlIHR5cGUg
dG8gbWFrZSB0aGUgY29ycmVjdApAQCAtMjU0LDkgKzI0Niw5IEBAIFdlYkluc3BlY3Rvci5SZXNv
dXJjZUNsdXN0ZXJDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIGRlbGV0ZSB0aGlz
Ll9yZXNwb25zZUNvbnRlbnRWaWV3OwogCiAgICAgICAgIHRoaXMuY29udGVudFZpZXdDb250YWlu
ZXIucmVwbGFjZUNvbnRlbnRWaWV3KGN1cnJlbnRSZXNwb25zZUNvbnRlbnRWaWV3LCB0aGlzLnJl
c3BvbnNlQ29udGVudFZpZXcpOwotICAgIH0sCisgICAgfQogCi0gICAgX3Jlc291cmNlTG9hZGlu
Z0RpZEZpbmlzaDogZnVuY3Rpb24oZXZlbnQpCisgICAgX3Jlc291cmNlTG9hZGluZ0RpZEZpbmlz
aChldmVudCkKICAgICB7CiAgICAgICAgIGlmICgiX3Bvc2l0aW9uVG9SZXZlYWwiIGluIHRoaXMp
IHsKICAgICAgICAgICAgIGlmICh0aGlzLl9jb250ZW50Vmlld0NvbnRhaW5lci5jdXJyZW50Q29u
dGVudFZpZXcgPT09IHRoaXMuX3Jlc3BvbnNlQ29udGVudFZpZXcpCkBAIC0yNjksNCArMjYxLDkg
QEAgV2ViSW5zcGVjdG9yLlJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsK
ICAgICB9CiB9OwogCi1XZWJJbnNwZWN0b3IuUmVzb3VyY2VDbHVzdGVyQ29udGVudFZpZXcucHJv
dG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5DbHVzdGVyQ29udGVudFZpZXcucHJvdG90
eXBlOworV2ViSW5zcGVjdG9yLlJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3LkNvbnRlbnRWaWV3
SWRlbnRpZmllckNvb2tpZUtleSA9ICJyZXNvdXJjZS1jbHVzdGVyLWNvbnRlbnQtdmlldy1pZGVu
dGlmaWVyIjsKKworV2ViSW5zcGVjdG9yLlJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3LlJlcXVl
c3RJY29uU3R5bGVDbGFzc05hbWUgPSAicmVxdWVzdC1pY29uIjsKK1dlYkluc3BlY3Rvci5SZXNv
dXJjZUNsdXN0ZXJDb250ZW50Vmlldy5SZXNwb25zZUljb25TdHlsZUNsYXNzTmFtZSA9ICJyZXNw
b25zZS1pY29uIjsKK1dlYkluc3BlY3Rvci5SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5SZXF1
ZXN0SWRlbnRpZmllciA9ICJyZXF1ZXN0IjsKK1dlYkluc3BlY3Rvci5SZXNvdXJjZUNsdXN0ZXJD
b250ZW50Vmlldy5SZXNwb25zZUlkZW50aWZpZXIgPSAicmVzcG9uc2UiOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VDb250ZW50
Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291
cmNlQ29udGVudFZpZXcuanMKaW5kZXggN2Q2Y2UzODg5MTI2NTI4NTk3MTdlYTZkZTdmZDY3ZDI4
OGUwYzQwNy4uMDlmZjUzM2EzNDViNWQ3NGIxNDNlOWE1MzgxYzQwMmU1YTdiZjU2NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VD
b250ZW50Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9SZXNvdXJjZUNvbnRlbnRWaWV3LmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMyw2OCArMjMsNjYgQEAKICAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuUmVzb3VyY2VDb250
ZW50VmlldyA9IGZ1bmN0aW9uKHJlc291cmNlLCBzdHlsZUNsYXNzTmFtZSkKK1dlYkluc3BlY3Rv
ci5SZXNvdXJjZUNvbnRlbnRWaWV3ID0gY2xhc3MgY2xhc3NOYW1lIGV4dGVuZHMgV2ViSW5zcGVj
dG9yLkNvbnRlbnRWaWV3CiB7Ci0gICAgY29uc29sZS5hc3NlcnQocmVzb3VyY2UpOwotICAgIGNv
bnNvbGUuYXNzZXJ0KHN0eWxlQ2xhc3NOYW1lKTsKKyAgICBjb25zdHJ1Y3RvcihyZXNvdXJjZSwg
c3R5bGVDbGFzc05hbWUpCisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydChyZXNvdXJjZSk7
CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHN0eWxlQ2xhc3NOYW1lKTsKIAotICAgIFdlYkluc3Bl
Y3Rvci5Db250ZW50Vmlldy5jYWxsKHRoaXMsIHJlc291cmNlKTsKKyAgICAgICAgc3VwZXIocmVz
b3VyY2UpOwogCi0gICAgdGhpcy5fcmVzb3VyY2UgPSByZXNvdXJjZTsKKyAgICAgICAgdGhpcy5f
cmVzb3VyY2UgPSByZXNvdXJjZTsKIAotICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKHN0
eWxlQ2xhc3NOYW1lLCAicmVzb3VyY2UiKTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlz
dC5hZGQoc3R5bGVDbGFzc05hbWUsICJyZXNvdXJjZSIpOwogCi0gICAgLy8gQXBwZW5kIGEgc3Bp
bm5lciB3aGlsZSB3YWl0aW5nIGZvciBjb250ZW50QXZhaWxhYmxlLiBUaGUgc3ViY2xhc3NlcyBh
cmUgcmVzcG9uc2libGUgZm9yIHJlbW92aW5nCi0gICAgLy8gdGhlIHNwaW5uZXIgYmVmb3JlIHNo
b3dpbmcgdGhlIHJlc291cmNlIGNvbnRlbnQuCi0gICAgdmFyIHNwaW5uZXIgPSBuZXcgV2ViSW5z
cGVjdG9yLkluZGV0ZXJtaW5hdGVQcm9ncmVzc1NwaW5uZXI7Ci0gICAgdGhpcy5lbGVtZW50LmFw
cGVuZENoaWxkKHNwaW5uZXIuZWxlbWVudCk7CisgICAgICAgIC8vIEFwcGVuZCBhIHNwaW5uZXIg
d2hpbGUgd2FpdGluZyBmb3IgY29udGVudEF2YWlsYWJsZS4gVGhlIHN1YmNsYXNzZXMgYXJlIHJl
c3BvbnNpYmxlIGZvciByZW1vdmluZworICAgICAgICAvLyB0aGUgc3Bpbm5lciBiZWZvcmUgc2hv
d2luZyB0aGUgcmVzb3VyY2UgY29udGVudC4KKyAgICAgICAgdmFyIHNwaW5uZXIgPSBuZXcgV2Vi
SW5zcGVjdG9yLkluZGV0ZXJtaW5hdGVQcm9ncmVzc1NwaW5uZXI7CisgICAgICAgIHRoaXMuZWxl
bWVudC5hcHBlbmRDaGlsZChzcGlubmVyLmVsZW1lbnQpOwogCi0gICAgdGhpcy5lbGVtZW50LmFk
ZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fbW91c2VXYXNDbGlja2VkLmJpbmQodGhpcyks
IGZhbHNlKTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwg
dGhpcy5fbW91c2VXYXNDbGlja2VkLmJpbmQodGhpcyksIGZhbHNlKTsKIAotICAgIC8vIFJlcXVl
c3QgY29udGVudCBsYXN0IHNvIHRoZSBzcGlubmVyIHdpbGwgYWx3YXlzIGJlIHJlbW92ZWQgaW4g
Y2FzZSB0aGUgY29udGVudCBpcyBpbW1lZGlhdGVseSBhdmFpbGFibGUuCi0gICAgcmVzb3VyY2Uu
cmVxdWVzdENvbnRlbnQoKS50aGVuKHRoaXMuX2NvbnRlbnRBdmFpbGFibGUuYmluZCh0aGlzKSku
Y2F0Y2godGhpcy5fcHJvdG9jb2xFcnJvci5iaW5kKHRoaXMpKTsKKyAgICAgICAgLy8gUmVxdWVz
dCBjb250ZW50IGxhc3Qgc28gdGhlIHNwaW5uZXIgd2lsbCBhbHdheXMgYmUgcmVtb3ZlZCBpbiBj
YXNlIHRoZSBjb250ZW50IGlzIGltbWVkaWF0ZWx5IGF2YWlsYWJsZS4KKyAgICAgICAgcmVzb3Vy
Y2UucmVxdWVzdENvbnRlbnQoKS50aGVuKHRoaXMuX2NvbnRlbnRBdmFpbGFibGUuYmluZCh0aGlz
KSkuY2F0Y2godGhpcy5fcHJvdG9jb2xFcnJvci5iaW5kKHRoaXMpKTsKIAotICAgIGlmICghdGhp
cy5tYW5hZ2VzT3duSXNzdWVzKSB7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5pc3N1ZU1hbmFnZXIu
YWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuSXNzdWVNYW5hZ2VyLkV2ZW50Lklzc3VlV2Fz
QWRkZWQsIHRoaXMuX2lzc3VlV2FzQWRkZWQsIHRoaXMpOworICAgICAgICBpZiAoIXRoaXMubWFu
YWdlc093bklzc3VlcykgeworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmlzc3VlTWFuYWdlci5h
ZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Jc3N1ZU1hbmFnZXIuRXZlbnQuSXNzdWVXYXNB
ZGRlZCwgdGhpcy5faXNzdWVXYXNBZGRlZCwgdGhpcyk7CiAKLSAgICAgICAgdmFyIGlzc3VlcyA9
IFdlYkluc3BlY3Rvci5pc3N1ZU1hbmFnZXIuaXNzdWVzRm9yU291cmNlQ29kZShyZXNvdXJjZSk7
Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaXNzdWVzLmxlbmd0aDsgKytpKQotICAgICAg
ICAgICAgdGhpcy5hZGRJc3N1ZShpc3N1ZXNbaV0pOworICAgICAgICAgICAgdmFyIGlzc3VlcyA9
IFdlYkluc3BlY3Rvci5pc3N1ZU1hbmFnZXIuaXNzdWVzRm9yU291cmNlQ29kZShyZXNvdXJjZSk7
CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGlzc3Vlcy5sZW5ndGg7ICsraSkKKyAg
ICAgICAgICAgICAgICB0aGlzLmFkZElzc3VlKGlzc3Vlc1tpXSk7CisgICAgICAgIH0KICAgICB9
Ci19OwotCi1XZWJJbnNwZWN0b3IuUmVzb3VyY2VDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7Ci0g
ICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5SZXNvdXJjZUNvbnRlbnRWaWV3LAotICAgIF9f
cHJvdG9fXzogV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LnByb3RvdHlwZSwKIAogICAgIC8vIFB1
YmxpYwogCiAgICAgZ2V0IHJlc291cmNlKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9y
ZXNvdXJjZTsKLSAgICB9LAorICAgIH0KIAotICAgIGNvbnRlbnRBdmFpbGFibGU6IGZ1bmN0aW9u
KGNvbnRlbnQsIGJhc2U2NEVuY29kZWQpCisgICAgY29udGVudEF2YWlsYWJsZShjb250ZW50LCBi
YXNlNjRFbmNvZGVkKQogICAgIHsKICAgICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViY2xhc3Nl
cy4KLSAgICB9LAorICAgIH0KIAotICAgIGFkZElzc3VlOiBmdW5jdGlvbihpc3N1ZSkKKyAgICBh
ZGRJc3N1ZShpc3N1ZSkKICAgICB7CiAgICAgICAgIC8vIFRoaXMgZ2VuZXJpY2FsbHkgc2hvd3Mg
b25seSB0aGUgbGFzdCBpc3N1ZSwgc3ViY2xhc3NlcyBjYW4gb3ZlcnJpZGUgZm9yIGJldHRlciBo
YW5kbGluZy4KICAgICAgICAgdGhpcy5lbGVtZW50LnJlbW92ZUNoaWxkcmVuKCk7CiAgICAgICAg
IHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZChXZWJJbnNwZWN0b3IuY3JlYXRlTWVzc2FnZVRleHRW
aWV3KGlzc3VlLnRleHQsIGlzc3VlLmxldmVsID09PSBXZWJJbnNwZWN0b3IuSXNzdWVNZXNzYWdl
LkxldmVsLkVycm9yKSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBjbG9zZWQ6IGZ1bmN0aW9uKCkK
KyAgICBjbG9zZWQoKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLm1hbmFnZXNPd25Jc3N1ZXMp
CiAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuaXNzdWVNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVu
ZXIobnVsbCwgbnVsbCwgdGhpcyk7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcml2YXRlCiAK
LSAgICBfY29udGVudEF2YWlsYWJsZTogZnVuY3Rpb24ocGFyYW1ldGVycykKKyAgICBfY29udGVu
dEF2YWlsYWJsZShwYXJhbWV0ZXJzKQogICAgIHsKICAgICAgICAgaWYgKHBhcmFtZXRlcnMuZXJy
b3IpIHsKICAgICAgICAgICAgIHRoaXMuX2NvbnRlbnRFcnJvcihwYXJhbWV0ZXJzLmVycm9yKTsK
QEAgLTk0LDI4ICs5MiwyOCBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VDb250ZW50Vmlldy5wcm90
b3R5cGUgPSB7CiAgICAgICAgIC8vIENvbnRlbnQgaXMgcmVhZHkgdG8gc2hvdywgY2FsbCB0aGUg
cHVibGljIG1ldGhvZCBub3cuCiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzLl9oYXNDb250
ZW50KCkpOwogICAgICAgICB0aGlzLmNvbnRlbnRBdmFpbGFibGUocGFyYW1ldGVycy5jb250ZW50
LCBwYXJhbWV0ZXJzLmJhc2U2NEVuY29kZWQpOwotICAgIH0sCisgICAgfQogCi0gICAgX2NvbnRl
bnRFcnJvcjogZnVuY3Rpb24oZXJyb3IpCisgICAgX2NvbnRlbnRFcnJvcihlcnJvcikKICAgICB7
CiAgICAgICAgIGlmICh0aGlzLl9oYXNDb250ZW50KCkpCiAgICAgICAgICAgICByZXR1cm47CiAK
ICAgICAgICAgdGhpcy5lbGVtZW50LnJlbW92ZUNoaWxkcmVuKCk7CiAgICAgICAgIHRoaXMuZWxl
bWVudC5hcHBlbmRDaGlsZChXZWJJbnNwZWN0b3IuY3JlYXRlTWVzc2FnZVRleHRWaWV3KGVycm9y
LCB0cnVlKSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcHJvdG9jb2xFcnJvcjogZnVuY3Rpb24o
ZXJyb3IpCisgICAgX3Byb3RvY29sRXJyb3IoZXJyb3IpCiAgICAgewogICAgICAgICB0aGlzLl9j
b250ZW50RXJyb3IoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJBbiBlcnJvciBvY2N1cnJlZCB0cnlp
bmcgdG8gbG9hZCB0aGUgcmVzb3VyY2UuIikpOwotICAgIH0sCisgICAgfQogCi0gICAgX2hhc0Nv
bnRlbnQ6IGZ1bmN0aW9uKCkKKyAgICBfaGFzQ29udGVudCgpCiAgICAgewogICAgICAgICByZXR1
cm4gIXRoaXMuZWxlbWVudC5xdWVyeVNlbGVjdG9yKCIuIiArIFdlYkluc3BlY3Rvci5JbmRldGVy
bWluYXRlUHJvZ3Jlc3NTcGlubmVyLlN0eWxlQ2xhc3NOYW1lKTsKLSAgICB9LAorICAgIH0KIAot
ICAgIF9pc3N1ZVdhc0FkZGVkOiBmdW5jdGlvbihldmVudCkKKyAgICBfaXNzdWVXYXNBZGRlZChl
dmVudCkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzLm1hbmFnZXNPd25Jc3N1
ZXMpOwogCkBAIC0xMjYsOSArMTI0LDkgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlQ29udGVudFZp
ZXcucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIHRoaXMuYWRk
SXNzdWUoaXNzdWUpOwotICAgIH0sCisgICAgfQogCi0gICAgX21vdXNlV2FzQ2xpY2tlZDogZnVu
Y3Rpb24oZXZlbnQpCisgICAgX21vdXNlV2FzQ2xpY2tlZChldmVudCkKICAgICB7CiAgICAgICAg
IFdlYkluc3BlY3Rvci5oYW5kbGVQb3NzaWJsZUxpbmtDbGljayhldmVudCwgdGhpcy5yZXNvdXJj
ZS5wYXJlbnRGcmFtZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VzVGFiQ29udGVudFZpZXcuanMgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZXNUYWJDb250ZW50Vmll
dy5qcwppbmRleCAzZDM3OWE0ZDBkNmUwNzZmYTA4ZjA5NWE1ZDk4NzgwMzE3YTUyOGFhLi4xZGFi
NTdkYjc0NjRiZTAwMjM2M2VhYjdjOTRhOGFmY2Q5YWZmNjA3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZXNUYWJDb250ZW50Vmll
dy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZXNv
dXJjZXNUYWJDb250ZW50Vmlldy5qcwpAQCAtMjMsMzEgKzIzLDI5IEBACiAgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLlJlc291cmNlc1RhYkNv
bnRlbnRWaWV3ID0gZnVuY3Rpb24oaWRlbnRpZmllcikKK1dlYkluc3BlY3Rvci5SZXNvdXJjZXNU
YWJDb250ZW50VmlldyA9IGNsYXNzIFJlc291cmNlc1RhYkNvbnRlbnRWaWV3IGV4dGVuZHMgV2Vi
SW5zcGVjdG9yLkNvbnRlbnRCcm93c2VyVGFiQ29udGVudFZpZXcKIHsKLSAgICB2YXIgdGFiQmFy
SXRlbSA9IG5ldyBXZWJJbnNwZWN0b3IuVGFiQmFySXRlbSgiSW1hZ2VzL1Jlc291cmNlcy5zdmci
LCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlc291cmNlcyIpKTsKLSAgICB2YXIgZGV0YWlsc1Np
ZGViYXJQYW5lbHMgPSBbV2ViSW5zcGVjdG9yLnJlc291cmNlRGV0YWlsc1NpZGViYXJQYW5lbCwg
V2ViSW5zcGVjdG9yLnByb2JlRGV0YWlsc1NpZGViYXJQYW5lbF07Ci0KLSAgICAvLyBGSVhNRTog
VW50aWwgQ29udGVudEZsb3dzIGFyZSBtb3ZlZCB0byB0aGUgRWxlbWVudHMgdGFiLCB0aGVzZSBk
ZXRhaWxzIHNpZGViYXIgcGFuZWxzIG5lZWQgdG8gYmUgaW5jbHVkZWQuCi0gICAgZGV0YWlsc1Np
ZGViYXJQYW5lbHMgPSBkZXRhaWxzU2lkZWJhclBhbmVscy5jb25jYXQoW1dlYkluc3BlY3Rvci5k
b21Ob2RlRGV0YWlsc1NpZGViYXJQYW5lbCwgV2ViSW5zcGVjdG9yLmNzc1N0eWxlRGV0YWlsc1Np
ZGViYXJQYW5lbF0pOwotICAgIGlmIChXZWJJbnNwZWN0b3IubGF5ZXJUcmVlRGV0YWlsc1NpZGVi
YXJQYW5lbCkKLSAgICAgICAgZGV0YWlsc1NpZGViYXJQYW5lbHMucHVzaChXZWJJbnNwZWN0b3Iu
bGF5ZXJUcmVlRGV0YWlsc1NpZGViYXJQYW5lbCk7CisgICAgY29uc3RydWN0b3IoaWRlbnRpZmll
cikKKyAgICB7CisgICAgICAgIHZhciB0YWJCYXJJdGVtID0gbmV3IFdlYkluc3BlY3Rvci5UYWJC
YXJJdGVtKCJJbWFnZXMvUmVzb3VyY2VzLnN2ZyIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVz
b3VyY2VzIikpOworICAgICAgICB2YXIgZGV0YWlsc1NpZGViYXJQYW5lbHMgPSBbV2ViSW5zcGVj
dG9yLnJlc291cmNlRGV0YWlsc1NpZGViYXJQYW5lbCwgV2ViSW5zcGVjdG9yLnByb2JlRGV0YWls
c1NpZGViYXJQYW5lbF07CiAKLSAgICBXZWJJbnNwZWN0b3IuQ29udGVudEJyb3dzZXJUYWJDb250
ZW50Vmlldy5jYWxsKHRoaXMsIGlkZW50aWZpZXIgfHwgInJlc291cmNlcyIsICJyZXNvdXJjZXMi
LCB0YWJCYXJJdGVtLCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VTaWRlYmFyUGFuZWwsIGRldGFpbHNT
aWRlYmFyUGFuZWxzKTsKLX07CisgICAgICAgIC8vIEZJWE1FOiBVbnRpbCBDb250ZW50Rmxvd3Mg
YXJlIG1vdmVkIHRvIHRoZSBFbGVtZW50cyB0YWIsIHRoZXNlIGRldGFpbHMgc2lkZWJhciBwYW5l
bHMgbmVlZCB0byBiZSBpbmNsdWRlZC4KKyAgICAgICAgZGV0YWlsc1NpZGViYXJQYW5lbHMgPSBk
ZXRhaWxzU2lkZWJhclBhbmVscy5jb25jYXQoW1dlYkluc3BlY3Rvci5kb21Ob2RlRGV0YWlsc1Np
ZGViYXJQYW5lbCwgV2ViSW5zcGVjdG9yLmNzc1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbF0pOwor
ICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLmxheWVyVHJlZURldGFpbHNTaWRlYmFyUGFuZWwpCisg
ICAgICAgICAgICBkZXRhaWxzU2lkZWJhclBhbmVscy5wdXNoKFdlYkluc3BlY3Rvci5sYXllclRy
ZWVEZXRhaWxzU2lkZWJhclBhbmVsKTsKIAotV2ViSW5zcGVjdG9yLlJlc291cmNlc1RhYkNvbnRl
bnRWaWV3LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLlJlc291
cmNlc1RhYkNvbnRlbnRWaWV3LAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLkNvbnRlbnRC
cm93c2VyVGFiQ29udGVudFZpZXcucHJvdG90eXBlLAorICAgICAgICBzdXBlcihpZGVudGlmaWVy
IHx8ICJyZXNvdXJjZXMiLCAicmVzb3VyY2VzIiwgdGFiQmFySXRlbSwgV2ViSW5zcGVjdG9yLlJl
c291cmNlU2lkZWJhclBhbmVsLCBkZXRhaWxzU2lkZWJhclBhbmVscyk7CisgICAgfQogCiAgICAg
Ly8gUHVibGljCiAKICAgICBnZXQgdHlwZSgpCiAgICAgewogICAgICAgICByZXR1cm4gV2ViSW5z
cGVjdG9yLlJlc291cmNlc1RhYkNvbnRlbnRWaWV3LlR5cGU7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBjYW5TaG93UmVwcmVzZW50ZWRPYmplY3Q6IGZ1bmN0aW9uKHJlcHJlc2VudGVkT2JqZWN0KQor
ICAgIGNhblNob3dSZXByZXNlbnRlZE9iamVjdChyZXByZXNlbnRlZE9iamVjdCkKICAgICB7CiAg
ICAgICAgIHJldHVybiByZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5G
cmFtZQogICAgICAgICAgICAgfHwgcmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNw
ZWN0b3IuUmVzb3VyY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL1NjcmlwdENvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvU2NyaXB0Q29udGVudFZpZXcuanMKaW5kZXggNGZlNmU3ZjBj
YmExMjhlMThjM2NiYzZlYTk3ZTllMzU2OTU0MTI4Ni4uMGZlYWQ1YzVjYjViZDU1YmRhZDQwZWVl
OWFmMjhkNTc0YWE4NTM4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvU2NyaXB0Q29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2NyaXB0Q29udGVudFZpZXcuanMKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDY1ICsy
Myw2NCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYklu
c3BlY3Rvci5TY3JpcHRDb250ZW50VmlldyA9IGZ1bmN0aW9uKHNjcmlwdCkKK1dlYkluc3BlY3Rv
ci5TY3JpcHRDb250ZW50VmlldyA9IGNsYXNzIFNjcmlwdENvbnRlbnRWaWV3IGV4dGVuZHMgV2Vi
SW5zcGVjdG9yLkNvbnRlbnRWaWV3CiB7Ci0gICAgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LmNh
bGwodGhpcywgc2NyaXB0KTsKLQotICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJzY3Jp
cHQiKTsKLQotICAgIC8vIEFwcGVuZCBhIHNwaW5uZXIgd2hpbGUgd2FpdGluZyBmb3IgX2NvbnRl
bnRXaWxsUG9wdWxhdGUuCi0gICAgdmFyIHNwaW5uZXIgPSBuZXcgV2ViSW5zcGVjdG9yLkluZGV0
ZXJtaW5hdGVQcm9ncmVzc1NwaW5uZXI7Ci0gICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHNw
aW5uZXIuZWxlbWVudCk7Ci0KLSAgICB0aGlzLl9zY3JpcHQgPSBzY3JpcHQ7Ci0KLSAgICAvLyBU
aGlzIHZpZXcgaXMgb25seSBmb3Igc3RhbmRhbG9uZSBTY3JpcHRzIHdpdGggbm8gY29ycmVzcG9u
ZGluZyBSZXNvdXJjZS4gQWxsIG90aGVyIFNjcmlwdHMKLSAgICAvLyBzaG91bGQgYmUgaGFuZGxl
ZCBieSBUZXh0UmVzb3VyY2VDb250ZW50VmlldyB2aWEgdGhlIFJlc291cmNlLgotICAgIGNvbnNv
bGUuYXNzZXJ0KCFzY3JpcHQucmVzb3VyY2UpOwotICAgIGNvbnNvbGUuYXNzZXJ0KHNjcmlwdC5y
YW5nZS5zdGFydExpbmUgPT09IDApOwotICAgIGNvbnNvbGUuYXNzZXJ0KHNjcmlwdC5yYW5nZS5z
dGFydENvbHVtbiA9PT0gMCk7Ci0KLSAgICB0aGlzLl90ZXh0RWRpdG9yID0gbmV3IFdlYkluc3Bl
Y3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvcihzY3JpcHQpOwotICAgIHRoaXMuX3RleHRFZGl0b3Iu
YWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGV4dEVkaXRvci5FdmVudC5FeGVjdXRpb25M
aW5lTnVtYmVyRGlkQ2hhbmdlLCB0aGlzLl9leGVjdXRpb25MaW5lTnVtYmVyRGlkQ2hhbmdlLCB0
aGlzKTsKLSAgICB0aGlzLl90ZXh0RWRpdG9yLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9y
LlRleHRFZGl0b3IuRXZlbnQuTnVtYmVyT2ZTZWFyY2hSZXN1bHRzRGlkQ2hhbmdlLCB0aGlzLl9u
dW1iZXJPZlNlYXJjaFJlc3VsdHNEaWRDaGFuZ2UsIHRoaXMpOwotICAgIHRoaXMuX3RleHRFZGl0
b3IuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGV4dEVkaXRvci5FdmVudC5Gb3JtYXR0
aW5nRGlkQ2hhbmdlLCB0aGlzLl90ZXh0RWRpdG9yRm9ybWF0dGluZ0RpZENoYW5nZSwgdGhpcyk7
Ci0gICAgdGhpcy5fdGV4dEVkaXRvci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Tb3Vy
Y2VDb2RlVGV4dEVkaXRvci5FdmVudC5Db250ZW50V2lsbFBvcHVsYXRlLCB0aGlzLl9jb250ZW50
V2lsbFBvcHVsYXRlLCB0aGlzKTsKLSAgICB0aGlzLl90ZXh0RWRpdG9yLmFkZEV2ZW50TGlzdGVu
ZXIoV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yLkV2ZW50LkNvbnRlbnREaWRQb3B1
bGF0ZSwgdGhpcy5fY29udGVudERpZFBvcHVsYXRlLCB0aGlzKTsKLQotICAgIHZhciB0b29sVGlw
ID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJQcmV0dHkgcHJpbnQiKTsKLSAgICB2YXIgYWN0aXZh
dGVkVG9vbFRpcCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiT3JpZ2luYWwgZm9ybWF0dGluZyIp
OwotICAgIHRoaXMuX3ByZXR0eVByaW50QnV0dG9uTmF2aWdhdGlvbkl0ZW0gPSBuZXcgV2ViSW5z
cGVjdG9yLkFjdGl2YXRlQnV0dG9uTmF2aWdhdGlvbkl0ZW0oInByZXR0eS1wcmludCIsIHRvb2xU
aXAsIGFjdGl2YXRlZFRvb2xUaXAsICJJbWFnZXMvTmF2aWdhdGlvbkl0ZW1DdXJsZXlCcmFjZXMu
c3ZnIiwgMTMsIDEzKTsKLSAgICB0aGlzLl9wcmV0dHlQcmludEJ1dHRvbk5hdmlnYXRpb25JdGVt
LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkJ1dHRvbk5hdmlnYXRpb25JdGVtLkV2ZW50
LkNsaWNrZWQsIHRoaXMuX3RvZ2dsZVByZXR0eVByaW50LCB0aGlzKTsKLSAgICB0aGlzLl9wcmV0
dHlQcmludEJ1dHRvbk5hdmlnYXRpb25JdGVtLmVuYWJsZWQgPSBmYWxzZTsgLy8gRW5hYmxlZCB3
aGVuIHRoZSB0ZXh0IGVkaXRvciBpcyBwb3B1bGF0ZWQgd2l0aCBjb250ZW50LgotCi0gICAgdmFy
IHRvb2xUaXBUeXBlcyA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2hvdyB0eXBlIGluZm9ybWF0
aW9uIik7Ci0gICAgdmFyIGFjdGl2YXRlZFRvb2xUaXBUeXBlcyA9IFdlYkluc3BlY3Rvci5VSVN0
cmluZygiSGlkZSB0eXBlIGluZm9ybWF0aW9uIik7Ci0gICAgdGhpcy5fc2hvd1R5cGVzQnV0dG9u
TmF2aWdhdGlvbkl0ZW0gPSBuZXcgV2ViSW5zcGVjdG9yLkFjdGl2YXRlQnV0dG9uTmF2aWdhdGlv
bkl0ZW0oInNob3ctdHlwZXMiLCB0b29sVGlwVHlwZXMsIGFjdGl2YXRlZFRvb2xUaXBUeXBlcywg
IkltYWdlcy9OYXZpZ2F0aW9uSXRlbVR5cGVzLnN2ZyIsIDEzLCAxNCk7Ci0gICAgdGhpcy5fc2hv
d1R5cGVzQnV0dG9uTmF2aWdhdGlvbkl0ZW0uYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3Iu
QnV0dG9uTmF2aWdhdGlvbkl0ZW0uRXZlbnQuQ2xpY2tlZCwgdGhpcy5fdG9nZ2xlVHlwZUFubm90
YXRpb25zLCB0aGlzKTsKLSAgICB0aGlzLl9zaG93VHlwZXNCdXR0b25OYXZpZ2F0aW9uSXRlbS5l
bmFibGVkID0gZmFsc2U7Ci0KLSAgICBXZWJJbnNwZWN0b3Iuc2hvd0phdmFTY3JpcHRUeXBlSW5m
b3JtYXRpb25TZXR0aW5nLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlNldHRpbmcuRXZl
bnQuQ2hhbmdlZCwgdGhpcy5fc2hvd0phdmFTY3JpcHRUeXBlSW5mb3JtYXRpb25TZXR0aW5nQ2hh
bmdlZCwgdGhpcyk7Ci19OworICAgIGNvbnN0cnVjdG9yKHNjcmlwdCkKKyAgICB7CisgICAgICAg
IHN1cGVyKHNjcmlwdCk7CisKKyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoInNj
cmlwdCIpOworCisgICAgICAgIC8vIEFwcGVuZCBhIHNwaW5uZXIgd2hpbGUgd2FpdGluZyBmb3Ig
X2NvbnRlbnRXaWxsUG9wdWxhdGUuCisgICAgICAgIHZhciBzcGlubmVyID0gbmV3IFdlYkluc3Bl
Y3Rvci5JbmRldGVybWluYXRlUHJvZ3Jlc3NTcGlubmVyOworICAgICAgICB0aGlzLmVsZW1lbnQu
YXBwZW5kQ2hpbGQoc3Bpbm5lci5lbGVtZW50KTsKKworICAgICAgICB0aGlzLl9zY3JpcHQgPSBz
Y3JpcHQ7CiAKLVdlYkluc3BlY3Rvci5TY3JpcHRDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7Ci0g
ICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5TY3JpcHRDb250ZW50VmlldywKKyAgICAgICAg
Ly8gVGhpcyB2aWV3IGlzIG9ubHkgZm9yIHN0YW5kYWxvbmUgU2NyaXB0cyB3aXRoIG5vIGNvcnJl
c3BvbmRpbmcgUmVzb3VyY2UuIEFsbCBvdGhlciBTY3JpcHRzCisgICAgICAgIC8vIHNob3VsZCBi
ZSBoYW5kbGVkIGJ5IFRleHRSZXNvdXJjZUNvbnRlbnRWaWV3IHZpYSB0aGUgUmVzb3VyY2UuCisg
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFzY3JpcHQucmVzb3VyY2UpOworICAgICAgICBjb25zb2xl
LmFzc2VydChzY3JpcHQucmFuZ2Uuc3RhcnRMaW5lID09PSAwKTsKKyAgICAgICAgY29uc29sZS5h
c3NlcnQoc2NyaXB0LnJhbmdlLnN0YXJ0Q29sdW1uID09PSAwKTsKKworICAgICAgICB0aGlzLl90
ZXh0RWRpdG9yID0gbmV3IFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvcihzY3JpcHQp
OworICAgICAgICB0aGlzLl90ZXh0RWRpdG9yLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9y
LlRleHRFZGl0b3IuRXZlbnQuRXhlY3V0aW9uTGluZU51bWJlckRpZENoYW5nZSwgdGhpcy5fZXhl
Y3V0aW9uTGluZU51bWJlckRpZENoYW5nZSwgdGhpcyk7CisgICAgICAgIHRoaXMuX3RleHRFZGl0
b3IuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGV4dEVkaXRvci5FdmVudC5OdW1iZXJP
ZlNlYXJjaFJlc3VsdHNEaWRDaGFuZ2UsIHRoaXMuX251bWJlck9mU2VhcmNoUmVzdWx0c0RpZENo
YW5nZSwgdGhpcyk7CisgICAgICAgIHRoaXMuX3RleHRFZGl0b3IuYWRkRXZlbnRMaXN0ZW5lcihX
ZWJJbnNwZWN0b3IuVGV4dEVkaXRvci5FdmVudC5Gb3JtYXR0aW5nRGlkQ2hhbmdlLCB0aGlzLl90
ZXh0RWRpdG9yRm9ybWF0dGluZ0RpZENoYW5nZSwgdGhpcyk7CisgICAgICAgIHRoaXMuX3RleHRF
ZGl0b3IuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3Iu
RXZlbnQuQ29udGVudFdpbGxQb3B1bGF0ZSwgdGhpcy5fY29udGVudFdpbGxQb3B1bGF0ZSwgdGhp
cyk7CisgICAgICAgIHRoaXMuX3RleHRFZGl0b3IuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0
b3IuU291cmNlQ29kZVRleHRFZGl0b3IuRXZlbnQuQ29udGVudERpZFBvcHVsYXRlLCB0aGlzLl9j
b250ZW50RGlkUG9wdWxhdGUsIHRoaXMpOworCisgICAgICAgIHZhciB0b29sVGlwID0gV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJQcmV0dHkgcHJpbnQiKTsKKyAgICAgICAgdmFyIGFjdGl2YXRlZFRv
b2xUaXAgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk9yaWdpbmFsIGZvcm1hdHRpbmciKTsKKyAg
ICAgICAgdGhpcy5fcHJldHR5UHJpbnRCdXR0b25OYXZpZ2F0aW9uSXRlbSA9IG5ldyBXZWJJbnNw
ZWN0b3IuQWN0aXZhdGVCdXR0b25OYXZpZ2F0aW9uSXRlbSgicHJldHR5LXByaW50IiwgdG9vbFRp
cCwgYWN0aXZhdGVkVG9vbFRpcCwgIkltYWdlcy9OYXZpZ2F0aW9uSXRlbUN1cmxleUJyYWNlcy5z
dmciLCAxMywgMTMpOworICAgICAgICB0aGlzLl9wcmV0dHlQcmludEJ1dHRvbk5hdmlnYXRpb25J
dGVtLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkJ1dHRvbk5hdmlnYXRpb25JdGVtLkV2
ZW50LkNsaWNrZWQsIHRoaXMuX3RvZ2dsZVByZXR0eVByaW50LCB0aGlzKTsKKyAgICAgICAgdGhp
cy5fcHJldHR5UHJpbnRCdXR0b25OYXZpZ2F0aW9uSXRlbS5lbmFibGVkID0gZmFsc2U7IC8vIEVu
YWJsZWQgd2hlbiB0aGUgdGV4dCBlZGl0b3IgaXMgcG9wdWxhdGVkIHdpdGggY29udGVudC4KKwor
ICAgICAgICB2YXIgdG9vbFRpcFR5cGVzID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTaG93IHR5
cGUgaW5mb3JtYXRpb24iKTsKKyAgICAgICAgdmFyIGFjdGl2YXRlZFRvb2xUaXBUeXBlcyA9IFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiSGlkZSB0eXBlIGluZm9ybWF0aW9uIik7CisgICAgICAgIHRo
aXMuX3Nob3dUeXBlc0J1dHRvbk5hdmlnYXRpb25JdGVtID0gbmV3IFdlYkluc3BlY3Rvci5BY3Rp
dmF0ZUJ1dHRvbk5hdmlnYXRpb25JdGVtKCJzaG93LXR5cGVzIiwgdG9vbFRpcFR5cGVzLCBhY3Rp
dmF0ZWRUb29sVGlwVHlwZXMsICJJbWFnZXMvTmF2aWdhdGlvbkl0ZW1UeXBlcy5zdmciLCAxMywg
MTQpOworICAgICAgICB0aGlzLl9zaG93VHlwZXNCdXR0b25OYXZpZ2F0aW9uSXRlbS5hZGRFdmVu
dExpc3RlbmVyKFdlYkluc3BlY3Rvci5CdXR0b25OYXZpZ2F0aW9uSXRlbS5FdmVudC5DbGlja2Vk
LCB0aGlzLl90b2dnbGVUeXBlQW5ub3RhdGlvbnMsIHRoaXMpOworICAgICAgICB0aGlzLl9zaG93
VHlwZXNCdXR0b25OYXZpZ2F0aW9uSXRlbS5lbmFibGVkID0gZmFsc2U7CisKKyAgICAgICAgV2Vi
SW5zcGVjdG9yLnNob3dKYXZhU2NyaXB0VHlwZUluZm9ybWF0aW9uU2V0dGluZy5hZGRFdmVudExp
c3RlbmVyKFdlYkluc3BlY3Rvci5TZXR0aW5nLkV2ZW50LkNoYW5nZWQsIHRoaXMuX3Nob3dKYXZh
U2NyaXB0VHlwZUluZm9ybWF0aW9uU2V0dGluZ0NoYW5nZWQsIHRoaXMpOworICAgIH0KIAogICAg
IC8vIFB1YmxpYwogCiAgICAgZ2V0IG5hdmlnYXRpb25JdGVtcygpCiAgICAgewogICAgICAgICBy
ZXR1cm4gW3RoaXMuX3ByZXR0eVByaW50QnV0dG9uTmF2aWdhdGlvbkl0ZW0sIHRoaXMuX3Nob3dU
eXBlc0J1dHRvbk5hdmlnYXRpb25JdGVtXTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBzY3Jp
cHQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3NjcmlwdDsKLSAgICB9LAorICAgIH0K
IAogICAgIGdldCB0ZXh0RWRpdG9yKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl90ZXh0
RWRpdG9yOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHN1cHBsZW1lbnRhbFJlcHJlc2VudGVk
T2JqZWN0cygpCiAgICAgewpAQCAtOTEsMTA2ICs5MCwxMDYgQEAgV2ViSW5zcGVjdG9yLlNjcmlw
dENvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgLy8gSWYgdGhlIFNvdXJjZUNvZGVU
ZXh0RWRpdG9yIGhhcyBhbiBleGVjdXRpb25MaW5lTnVtYmVyLCB3ZSBjYW4gYXNzdW1lCiAgICAg
ICAgIC8vIGl0IGlzIGFsd2F5cyB0aGUgYWN0aXZlIGNhbGwgZnJhbWUuCiAgICAgICAgIHJldHVy
biBbV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTWFuYWdlci5hY3RpdmVDYWxsRnJhbWVdOwotICAgIH0s
CisgICAgfQogCi0gICAgcmV2ZWFsUG9zaXRpb246IGZ1bmN0aW9uKHBvc2l0aW9uLCB0ZXh0UmFu
Z2VUb1NlbGVjdCwgZm9yY2VVbmZvcm1hdHRlZCkKKyAgICByZXZlYWxQb3NpdGlvbihwb3NpdGlv
biwgdGV4dFJhbmdlVG9TZWxlY3QsIGZvcmNlVW5mb3JtYXR0ZWQpCiAgICAgewogICAgICAgICB0
aGlzLl90ZXh0RWRpdG9yLnJldmVhbFBvc2l0aW9uKHBvc2l0aW9uLCB0ZXh0UmFuZ2VUb1NlbGVj
dCwgZm9yY2VVbmZvcm1hdHRlZCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzaG93bjogZnVuY3Rp
b24oKQorICAgIHNob3duKCkKICAgICB7CiAgICAgICAgIHRoaXMuX3RleHRFZGl0b3Iuc2hvd24o
KTsKLSAgICB9LAorICAgIH0KIAotICAgIGhpZGRlbjogZnVuY3Rpb24oKQorICAgIGhpZGRlbigp
CiAgICAgewogICAgICAgICB0aGlzLl90ZXh0RWRpdG9yLmhpZGRlbigpOwotICAgIH0sCisgICAg
fQogCi0gICAgY2xvc2VkOiBmdW5jdGlvbigpCisgICAgY2xvc2VkKCkKICAgICB7CiAgICAgICAg
IFdlYkluc3BlY3Rvci5zaG93SmF2YVNjcmlwdFR5cGVJbmZvcm1hdGlvblNldHRpbmcucmVtb3Zl
RXZlbnRMaXN0ZW5lcihudWxsLCBudWxsLCB0aGlzKTsKIAogICAgICAgICB0aGlzLl90ZXh0RWRp
dG9yLmNsb3NlKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzYXZlVG9Db29raWU6IGZ1bmN0aW9u
KGNvb2tpZSkKKyAgICBzYXZlVG9Db29raWUoY29va2llKQogICAgIHsKICAgICAgICAgY29va2ll
LnR5cGUgPSBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXdDb29raWVUeXBlLlJlc291cmNlOwogICAg
ICAgICBjb29raWUudXJsID0gdGhpcy5yZXByZXNlbnRlZE9iamVjdC51cmw7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICByZXN0b3JlRnJvbUNvb2tpZTogZnVuY3Rpb24oY29va2llKQorICAgIHJlc3Rv
cmVGcm9tQ29va2llKGNvb2tpZSkKICAgICB7CiAgICAgICAgIGlmICgibGluZU51bWJlciIgaW4g
Y29va2llICYmICJjb2x1bW5OdW1iZXIiIGluIGNvb2tpZSkKICAgICAgICAgICAgIHRoaXMucmV2
ZWFsUG9zaXRpb24obmV3IFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlUG9zaXRpb24oY29va2llLmxp
bmVOdW1iZXIsIGNvb2tpZS5jb2x1bW5OdW1iZXIpKTsKLSAgICB9LAorICAgIH0KIAogICAgIGdl
dCBzdXBwb3J0c1NhdmUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfSwKKyAg
ICB9CiAKICAgICBnZXQgc2F2ZURhdGEoKQogICAgIHsKICAgICAgICAgdmFyIHVybCA9IHRoaXMu
X3NjcmlwdC51cmwgfHwgIndlYi1pbnNwZWN0b3I6Ly8vIiArIGVuY29kZVVSSSh0aGlzLl9zY3Jp
cHQuZGlzcGxheU5hbWUpICsgIi5qcyI7CiAgICAgICAgIHJldHVybiB7dXJsLCBjb250ZW50OiB0
aGlzLl90ZXh0RWRpdG9yLnN0cmluZ307Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgc3VwcG9y
dHNTZWFyY2goKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfSwKKyAgICB9CiAK
ICAgICBnZXQgbnVtYmVyT2ZTZWFyY2hSZXN1bHRzKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0
aGlzLl90ZXh0RWRpdG9yLm51bWJlck9mU2VhcmNoUmVzdWx0czsKLSAgICB9LAorICAgIH0KIAog
ICAgIGdldCBoYXNQZXJmb3JtZWRTZWFyY2goKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMu
X3RleHRFZGl0b3IuY3VycmVudFNlYXJjaFF1ZXJ5ICE9PSBudWxsOwotICAgIH0sCisgICAgfQog
CiAgICAgc2V0IGF1dG9tYXRpY2FsbHlSZXZlYWxGaXJzdFNlYXJjaFJlc3VsdChyZXZlYWwpCiAg
ICAgewogICAgICAgICB0aGlzLl90ZXh0RWRpdG9yLmF1dG9tYXRpY2FsbHlSZXZlYWxGaXJzdFNl
YXJjaFJlc3VsdCA9IHJldmVhbDsKLSAgICB9LAorICAgIH0KIAotICAgIHBlcmZvcm1TZWFyY2g6
IGZ1bmN0aW9uKHF1ZXJ5KQorICAgIHBlcmZvcm1TZWFyY2gocXVlcnkpCiAgICAgewogICAgICAg
ICB0aGlzLl90ZXh0RWRpdG9yLnBlcmZvcm1TZWFyY2gocXVlcnkpOwotICAgIH0sCisgICAgfQog
Ci0gICAgc2VhcmNoQ2xlYXJlZDogZnVuY3Rpb24oKQorICAgIHNlYXJjaENsZWFyZWQoKQogICAg
IHsKICAgICAgICAgdGhpcy5fdGV4dEVkaXRvci5zZWFyY2hDbGVhcmVkKCk7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBzZWFyY2hRdWVyeVdpdGhTZWxlY3Rpb246IGZ1bmN0aW9uKCkKKyAgICBzZWFy
Y2hRdWVyeVdpdGhTZWxlY3Rpb24oKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3RleHRF
ZGl0b3Iuc2VhcmNoUXVlcnlXaXRoU2VsZWN0aW9uKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBy
ZXZlYWxQcmV2aW91c1NlYXJjaFJlc3VsdDogZnVuY3Rpb24oY2hhbmdlRm9jdXMpCisgICAgcmV2
ZWFsUHJldmlvdXNTZWFyY2hSZXN1bHQoY2hhbmdlRm9jdXMpCiAgICAgewogICAgICAgICB0aGlz
Ll90ZXh0RWRpdG9yLnJldmVhbFByZXZpb3VzU2VhcmNoUmVzdWx0KGNoYW5nZUZvY3VzKTsKLSAg
ICB9LAorICAgIH0KIAotICAgIHJldmVhbE5leHRTZWFyY2hSZXN1bHQ6IGZ1bmN0aW9uKGNoYW5n
ZUZvY3VzKQorICAgIHJldmVhbE5leHRTZWFyY2hSZXN1bHQoY2hhbmdlRm9jdXMpCiAgICAgewog
ICAgICAgICB0aGlzLl90ZXh0RWRpdG9yLnJldmVhbE5leHRTZWFyY2hSZXN1bHQoY2hhbmdlRm9j
dXMpOwotICAgIH0sCisgICAgfQogCi0gICAgdXBkYXRlTGF5b3V0OiBmdW5jdGlvbigpCisgICAg
dXBkYXRlTGF5b3V0KCkKICAgICB7CiAgICAgICAgIHRoaXMuX3RleHRFZGl0b3IudXBkYXRlTGF5
b3V0KCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcml2YXRlCiAKLSAgICBfY29udGVudFdp
bGxQb3B1bGF0ZTogZnVuY3Rpb24oZXZlbnQpCisgICAgX2NvbnRlbnRXaWxsUG9wdWxhdGUoZXZl
bnQpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fdGV4dEVkaXRvci5lbGVtZW50LnBhcmVudE5v
ZGUgPT09IHRoaXMuZWxlbWVudCkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTIwMSw0NSArMjAw
LDQzIEBAIFdlYkluc3BlY3Rvci5TY3JpcHRDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAKICAg
ICAgICAgdGhpcy5lbGVtZW50LnJlbW92ZUNoaWxkcmVuKCk7CiAgICAgICAgIHRoaXMuZWxlbWVu
dC5hcHBlbmRDaGlsZCh0aGlzLl90ZXh0RWRpdG9yLmVsZW1lbnQpOwotICAgIH0sCisgICAgfQog
Ci0gICAgX2NvbnRlbnREaWRQb3B1bGF0ZTogZnVuY3Rpb24oZXZlbnQpCisgICAgX2NvbnRlbnRE
aWRQb3B1bGF0ZShldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMuX3ByZXR0eVByaW50QnV0dG9u
TmF2aWdhdGlvbkl0ZW0uZW5hYmxlZCA9IHRoaXMuX3RleHRFZGl0b3IuY2FuQmVGb3JtYXR0ZWQo
KTsKICAgICAgICAgdGhpcy5fc2hvd1R5cGVzQnV0dG9uTmF2aWdhdGlvbkl0ZW0uZW5hYmxlZCA9
IHRoaXMuX3RleHRFZGl0b3IuY2FuU2hvd1R5cGVBbm5vdGF0aW9ucygpOwogICAgICAgICB0aGlz
Ll9zaG93VHlwZXNCdXR0b25OYXZpZ2F0aW9uSXRlbS5hY3RpdmF0ZWQgPSBXZWJJbnNwZWN0b3Iu
c2hvd0phdmFTY3JpcHRUeXBlSW5mb3JtYXRpb25TZXR0aW5nLnZhbHVlOwotICAgIH0sCisgICAg
fQogCi0gICAgX3RvZ2dsZVByZXR0eVByaW50OiBmdW5jdGlvbihldmVudCkKKyAgICBfdG9nZ2xl
UHJldHR5UHJpbnQoZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgYWN0aXZhdGVkID0gIXRoaXMu
X3ByZXR0eVByaW50QnV0dG9uTmF2aWdhdGlvbkl0ZW0uYWN0aXZhdGVkOwogICAgICAgICB0aGlz
Ll90ZXh0RWRpdG9yLmZvcm1hdHRlZCA9IGFjdGl2YXRlZDsKLSAgICB9LAorICAgIH0KIAotICAg
IF90b2dnbGVUeXBlQW5ub3RhdGlvbnM6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF90b2dnbGVUeXBl
QW5ub3RhdGlvbnMoZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLl90ZXh0RWRpdG9yLnRvZ2ds
ZVR5cGVBbm5vdGF0aW9ucygpOwotICAgIH0sCisgICAgfQogCi0gICAgX3Nob3dKYXZhU2NyaXB0
VHlwZUluZm9ybWF0aW9uU2V0dGluZ0NoYW5nZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9zaG93
SmF2YVNjcmlwdFR5cGVJbmZvcm1hdGlvblNldHRpbmdDaGFuZ2VkKGV2ZW50KQogICAgIHsKICAg
ICAgICAgdGhpcy5fc2hvd1R5cGVzQnV0dG9uTmF2aWdhdGlvbkl0ZW0uYWN0aXZhdGVkID0gV2Vi
SW5zcGVjdG9yLnNob3dKYXZhU2NyaXB0VHlwZUluZm9ybWF0aW9uU2V0dGluZy52YWx1ZTsKLSAg
ICB9LAorICAgIH0KIAotICAgIF90ZXh0RWRpdG9yRm9ybWF0dGluZ0RpZENoYW5nZTogZnVuY3Rp
b24oZXZlbnQpCisgICAgX3RleHRFZGl0b3JGb3JtYXR0aW5nRGlkQ2hhbmdlKGV2ZW50KQogICAg
IHsKICAgICAgICAgdGhpcy5fcHJldHR5UHJpbnRCdXR0b25OYXZpZ2F0aW9uSXRlbS5hY3RpdmF0
ZWQgPSB0aGlzLl90ZXh0RWRpdG9yLmZvcm1hdHRlZDsKLSAgICB9LAorICAgIH0KIAotICAgIF9l
eGVjdXRpb25MaW5lTnVtYmVyRGlkQ2hhbmdlOiBmdW5jdGlvbihldmVudCkKKyAgICBfZXhlY3V0
aW9uTGluZU51bWJlckRpZENoYW5nZShldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMuZGlzcGF0
Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5FdmVudC5TdXBwbGVt
ZW50YWxSZXByZXNlbnRlZE9iamVjdHNEaWRDaGFuZ2UpOwotICAgIH0sCisgICAgfQogCi0gICAg
X251bWJlck9mU2VhcmNoUmVzdWx0c0RpZENoYW5nZTogZnVuY3Rpb24oZXZlbnQpCisgICAgX251
bWJlck9mU2VhcmNoUmVzdWx0c0RpZENoYW5nZShldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMu
ZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5FdmVudC5O
dW1iZXJPZlNlYXJjaFJlc3VsdHNEaWRDaGFuZ2UpOwogICAgIH0KIH07Ci0KLVdlYkluc3BlY3Rv
ci5TY3JpcHRDb250ZW50Vmlldy5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLkNv
bnRlbnRWaWV3LnByb3RvdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL1NlYXJjaFRhYkNvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2VhcmNoVGFiQ29udGVudFZpZXcuanMKaW5k
ZXggNjYyYjBlYTNmMjJkNmRmODc2YzgyOTk5NTU4NDU4NmMzODQ4YzExYy4uNGU3NjE5NDIxZDFk
N2Y2MThhMWIzN2JlNDUzMGNhYmZjYjE0OWU0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2VhcmNoVGFiQ29udGVudFZpZXcuanMKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2VhcmNoVGFiQ29udGVu
dFZpZXcuanMKQEAgLTIzLDQ4ICsyMyw0NiBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5TZWFyY2hUYWJDb250ZW50VmlldyA9IGZ1bmN0
aW9uKGlkZW50aWZpZXIpCitXZWJJbnNwZWN0b3IuU2VhcmNoVGFiQ29udGVudFZpZXcgPSBjbGFz
cyBTZWFyY2hUYWJDb250ZW50VmlldyBleHRlbmRzIFdlYkluc3BlY3Rvci5Db250ZW50QnJvd3Nl
clRhYkNvbnRlbnRWaWV3CiB7Ci0gICAgdmFyIHRhYkJhckl0ZW0gPSBuZXcgV2ViSW5zcGVjdG9y
LlRhYkJhckl0ZW0oIkltYWdlcy9TZWFyY2hSZXN1bHRzLnN2ZyIsIFdlYkluc3BlY3Rvci5VSVN0
cmluZygiU2VhcmNoIikpOwotICAgIHZhciBkZXRhaWxzU2lkZWJhclBhbmVscyA9IFtXZWJJbnNw
ZWN0b3IucmVzb3VyY2VEZXRhaWxzU2lkZWJhclBhbmVsLCBXZWJJbnNwZWN0b3IucHJvYmVEZXRh
aWxzU2lkZWJhclBhbmVsLAotICAgICAgICBXZWJJbnNwZWN0b3IuZG9tTm9kZURldGFpbHNTaWRl
YmFyUGFuZWwsIFdlYkluc3BlY3Rvci5jc3NTdHlsZURldGFpbHNTaWRlYmFyUGFuZWxdOwotCi0g
ICAgaWYgKFdlYkluc3BlY3Rvci5sYXllclRyZWVEZXRhaWxzU2lkZWJhclBhbmVsKQotICAgICAg
ICBkZXRhaWxzU2lkZWJhclBhbmVscy5wdXNoKFdlYkluc3BlY3Rvci5sYXllclRyZWVEZXRhaWxz
U2lkZWJhclBhbmVsKTsKKyAgICBjb25zdHJ1Y3RvcihpZGVudGlmaWVyKQorICAgIHsKKyAgICAg
ICAgdmFyIHRhYkJhckl0ZW0gPSBuZXcgV2ViSW5zcGVjdG9yLlRhYkJhckl0ZW0oIkltYWdlcy9T
ZWFyY2hSZXN1bHRzLnN2ZyIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2VhcmNoIikpOworICAg
ICAgICB2YXIgZGV0YWlsc1NpZGViYXJQYW5lbHMgPSBbV2ViSW5zcGVjdG9yLnJlc291cmNlRGV0
YWlsc1NpZGViYXJQYW5lbCwgV2ViSW5zcGVjdG9yLnByb2JlRGV0YWlsc1NpZGViYXJQYW5lbCwK
KyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5kb21Ob2RlRGV0YWlsc1NpZGViYXJQYW5lbCwgV2Vi
SW5zcGVjdG9yLmNzc1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbF07CiAKLSAgICBXZWJJbnNwZWN0
b3IuQ29udGVudEJyb3dzZXJUYWJDb250ZW50Vmlldy5jYWxsKHRoaXMsIGlkZW50aWZpZXIgfHwg
InNlYXJjaCIsICJzZWFyY2giLCB0YWJCYXJJdGVtLCBXZWJJbnNwZWN0b3IuU2VhcmNoU2lkZWJh
clBhbmVsLCBkZXRhaWxzU2lkZWJhclBhbmVscyk7Ci19OworICAgICAgICBpZiAoV2ViSW5zcGVj
dG9yLmxheWVyVHJlZURldGFpbHNTaWRlYmFyUGFuZWwpCisgICAgICAgICAgICBkZXRhaWxzU2lk
ZWJhclBhbmVscy5wdXNoKFdlYkluc3BlY3Rvci5sYXllclRyZWVEZXRhaWxzU2lkZWJhclBhbmVs
KTsKIAotV2ViSW5zcGVjdG9yLlNlYXJjaFRhYkNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKLSAg
ICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLlNlYXJjaFRhYkNvbnRlbnRWaWV3LAotICAgIF9f
cHJvdG9fXzogV2ViSW5zcGVjdG9yLkNvbnRlbnRCcm93c2VyVGFiQ29udGVudFZpZXcucHJvdG90
eXBlLAorICAgICAgICBzdXBlcihpZGVudGlmaWVyIHx8ICJzZWFyY2giLCAic2VhcmNoIiwgdGFi
QmFySXRlbSwgV2ViSW5zcGVjdG9yLlNlYXJjaFNpZGViYXJQYW5lbCwgZGV0YWlsc1NpZGViYXJQ
YW5lbHMpOworICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IHR5cGUoKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5TZWFyY2hUYWJDb250ZW50Vmlldy5UeXBlOwot
ICAgIH0sCisgICAgfQogCi0gICAgc2hvd246IGZ1bmN0aW9uKCkKKyAgICBzaG93bigpCiAgICAg
ewotICAgICAgICBXZWJJbnNwZWN0b3IuQ29udGVudEJyb3dzZXJUYWJDb250ZW50Vmlldy5wcm90
b3R5cGUuc2hvd24uY2FsbCh0aGlzKTsKKyAgICAgICAgc3VwZXIuc2hvd24oKTsKIAogICAgICAg
ICAvLyBQZXJmb3JtIG9uIGEgZGVsYXkgYmVjYXVzZSB0aGUgZmllbGQgbWlnaHQgbm90IGJlIHZp
c2libGUgeWV0LgogICAgICAgICBzZXRUaW1lb3V0KHRoaXMuZm9jdXNTZWFyY2hGaWVsZC5iaW5k
KHRoaXMpKTsKLSAgICB9LAorICAgIH0KIAotICAgIGNhblNob3dSZXByZXNlbnRlZE9iamVjdDog
ZnVuY3Rpb24ocmVwcmVzZW50ZWRPYmplY3QpCisgICAgY2FuU2hvd1JlcHJlc2VudGVkT2JqZWN0
KHJlcHJlc2VudGVkT2JqZWN0KQogICAgIHsKICAgICAgICAgcmV0dXJuIHJlcHJlc2VudGVkT2Jq
ZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlJlc291cmNlIHx8IHJlcHJlc2VudGVkT2JqZWN0
IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlNjcmlwdCB8fCByZXByZXNlbnRlZE9iamVjdCBpbnN0
YW5jZW9mIFdlYkluc3BlY3Rvci5ET01UcmVlOwotICAgIH0sCisgICAgfQogCi0gICAgZm9jdXNT
ZWFyY2hGaWVsZDogZnVuY3Rpb24oKQorICAgIGZvY3VzU2VhcmNoRmllbGQoKQogICAgIHsKICAg
ICAgICAgdGhpcy5uYXZpZ2F0aW9uU2lkZWJhclBhbmVsLmZvY3VzU2VhcmNoRmllbGQoKTsKLSAg
ICB9LAorICAgIH0KIAotICAgIHBlcmZvcm1TZWFyY2g6IGZ1bmN0aW9uKHNlYXJjaFF1ZXJ5KQor
ICAgIHBlcmZvcm1TZWFyY2goc2VhcmNoUXVlcnkpCiAgICAgewogICAgICAgICB0aGlzLm5hdmln
YXRpb25TaWRlYmFyUGFuZWwucGVyZm9ybVNlYXJjaChzZWFyY2hRdWVyeSk7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2V0dGlu
Z3NUYWJDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL1NldHRpbmdzVGFiQ29udGVudFZpZXcuanMKaW5kZXggZTI1MTYxMGIwN2Y1Y2FmNjk5
MGUzNjI0MTdiMmVmZTQxNzdmN2Q3Mi4uODhhNmUwYWVhNjJmODA0OTJhYTdmNWNiN2YzNTQ2NzNh
ZGI5MGIwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvU2V0dGluZ3NUYWJDb250ZW50Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9TZXR0aW5nc1RhYkNvbnRlbnRWaWV3LmpzCkBAIC0yMywx
NiArMjMsMTQgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1X
ZWJJbnNwZWN0b3IuU2V0dGluZ3NUYWJDb250ZW50VmlldyA9IGZ1bmN0aW9uKGlkZW50aWZpZXIp
CitXZWJJbnNwZWN0b3IuU2V0dGluZ3NUYWJDb250ZW50VmlldyA9IGNsYXNzIFNldHRpbmdzVGFi
Q29udGVudFZpZXcgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuVGFiQ29udGVudFZpZXcKIHsKLSAgICB2
YXIgdGFiQmFySXRlbSA9IG5ldyBXZWJJbnNwZWN0b3IuVGFiQmFySXRlbSgiSW1hZ2VzL0dlYXIu
c3ZnIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTZXR0aW5ncyIpLCB0cnVlKTsKLQotICAgIFdl
Ykluc3BlY3Rvci5UYWJDb250ZW50Vmlldy5jYWxsKHRoaXMsIGlkZW50aWZpZXIgfHwgInNldHRp
bmdzIiwgInNldHRpbmdzIiwgdGFiQmFySXRlbSk7Ci19OworICAgIGNvbnN0cnVjdG9yKGlkZW50
aWZpZXIpCisgICAgeworICAgICAgICB2YXIgdGFiQmFySXRlbSA9IG5ldyBXZWJJbnNwZWN0b3Iu
VGFiQmFySXRlbSgiSW1hZ2VzL0dlYXIuc3ZnIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTZXR0
aW5ncyIpLCB0cnVlKTsKIAotV2ViSW5zcGVjdG9yLlNldHRpbmdzVGFiQ29udGVudFZpZXcucHJv
dG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuU2V0dGluZ3NUYWJDb250
ZW50VmlldywKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5UYWJDb250ZW50Vmlldy5wcm90
b3R5cGUsCisgICAgICAgIHN1cGVyKGlkZW50aWZpZXIgfHwgInNldHRpbmdzIiwgInNldHRpbmdz
IiwgdGFiQmFySXRlbSk7CisgICAgfQogCiAgICAgLy8gUHVibGljCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1N0b3JhZ2VUYWJDb250ZW50
Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1N0b3Jh
Z2VUYWJDb250ZW50Vmlldy5qcwppbmRleCA2MTYyZmVmOTQzY2QzYjZhNzRiMTk0Njg0OWZlN2M3
MWE1YjE5ZTBmLi4zMWU1MzZmMjMwYjE5MjRkMjY0YjNmMzc2NGE4NmZhOTUwZmEyY2JhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TdG9yYWdl
VGFiQ29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvU3RvcmFnZVRhYkNvbnRlbnRWaWV3LmpzCkBAIC0yMywyNiArMjMsMjQgQEAKICAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuU3Rv
cmFnZVRhYkNvbnRlbnRWaWV3ID0gZnVuY3Rpb24oaWRlbnRpZmllcikKK1dlYkluc3BlY3Rvci5T
dG9yYWdlVGFiQ29udGVudFZpZXcgPSBjbGFzcyBTdG9yYWdlVGFiQ29udGVudFZpZXcgZXh0ZW5k
cyBXZWJJbnNwZWN0b3IuQ29udGVudEJyb3dzZXJUYWJDb250ZW50VmlldwogewotICAgIHZhciB0
YWJCYXJJdGVtID0gbmV3IFdlYkluc3BlY3Rvci5UYWJCYXJJdGVtKCJJbWFnZXMvU3RvcmFnZS5z
dmciLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlN0b3JhZ2UiKSk7Ci0gICAgdmFyIGRldGFpbHNT
aWRlYmFyUGFuZWxzID0gW1dlYkluc3BlY3Rvci5hcHBsaWNhdGlvbkNhY2hlRGV0YWlsc1NpZGVi
YXJQYW5lbF07Ci0KLSAgICBXZWJJbnNwZWN0b3IuQ29udGVudEJyb3dzZXJUYWJDb250ZW50Vmll
dy5jYWxsKHRoaXMsIGlkZW50aWZpZXIgfHwgInN0b3JhZ2UiLCAic3RvcmFnZSIsIHRhYkJhckl0
ZW0sIFdlYkluc3BlY3Rvci5TdG9yYWdlU2lkZWJhclBhbmVsLCBkZXRhaWxzU2lkZWJhclBhbmVs
cyk7Ci19OworICAgIGNvbnN0cnVjdG9yKGlkZW50aWZpZXIpCisgICAgeworICAgICAgICB2YXIg
dGFiQmFySXRlbSA9IG5ldyBXZWJJbnNwZWN0b3IuVGFiQmFySXRlbSgiSW1hZ2VzL1N0b3JhZ2Uu
c3ZnIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTdG9yYWdlIikpOworICAgICAgICB2YXIgZGV0
YWlsc1NpZGViYXJQYW5lbHMgPSBbV2ViSW5zcGVjdG9yLmFwcGxpY2F0aW9uQ2FjaGVEZXRhaWxz
U2lkZWJhclBhbmVsXTsKIAotV2ViSW5zcGVjdG9yLlN0b3JhZ2VUYWJDb250ZW50Vmlldy5wcm90
b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5TdG9yYWdlVGFiQ29udGVu
dFZpZXcsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuQ29udGVudEJyb3dzZXJUYWJDb250
ZW50Vmlldy5wcm90b3R5cGUsCisgICAgICAgIHN1cGVyKGlkZW50aWZpZXIgfHwgInN0b3JhZ2Ui
LCAic3RvcmFnZSIsIHRhYkJhckl0ZW0sIFdlYkluc3BlY3Rvci5TdG9yYWdlU2lkZWJhclBhbmVs
LCBkZXRhaWxzU2lkZWJhclBhbmVscyk7CisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBn
ZXQgdHlwZSgpCiAgICAgewogICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlN0b3JhZ2VUYWJD
b250ZW50Vmlldy5UeXBlOwotICAgIH0sCisgICAgfQogCi0gICAgY2FuU2hvd1JlcHJlc2VudGVk
T2JqZWN0OiBmdW5jdGlvbihyZXByZXNlbnRlZE9iamVjdCkKKyAgICBjYW5TaG93UmVwcmVzZW50
ZWRPYmplY3QocmVwcmVzZW50ZWRPYmplY3QpCiAgICAgewogICAgICAgICByZXR1cm4gcmVwcmVz
ZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZU9iamVjdCB8fCBy
ZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Db29raWVTdG9yYWdlT2Jq
ZWN0IHx8CiAgICAgICAgICAgICByZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3Bl
Y3Rvci5EYXRhYmFzZVRhYmxlT2JqZWN0IHx8IHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2Yg
V2ViSW5zcGVjdG9yLkRhdGFiYXNlT2JqZWN0IHx8CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UYWJDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RhYkNvbnRlbnRWaWV3LmpzCmluZGV4
IDg2NDUwNzNjMmRmNjIwNjNlZWMwMmExMzc3Nzc0MTE0MjNhMjZiMjYuLjkxMjk2ZWE4YzllNTVh
MGNmN2ViOWIyNjRiMzQ5ZDVkZjE1NDQzZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RhYkNvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RhYkNvbnRlbnRWaWV3LmpzCkBAIC0y
MywzOSArMjMsMzcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwog
Ci1XZWJJbnNwZWN0b3IuVGFiQ29udGVudFZpZXcgPSBmdW5jdGlvbihpZGVudGlmaWVyLCBzdHls
ZUNsYXNzTmFtZXMsIHRhYkJhckl0ZW0sIG5hdmlnYXRpb25TaWRlYmFyUGFuZWwsIGRldGFpbHNT
aWRlYmFyUGFuZWxzKQorV2ViSW5zcGVjdG9yLlRhYkNvbnRlbnRWaWV3ID0gY2xhc3MgVGFiQ29u
dGVudFZpZXcgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcKIHsKLSAgICBjb25zb2xl
LmFzc2VydCh0eXBlb2YgaWRlbnRpZmllciA9PT0gInN0cmluZyIpOwotICAgIGNvbnNvbGUuYXNz
ZXJ0KHR5cGVvZiBzdHlsZUNsYXNzTmFtZXMgPT09ICJzdHJpbmciIHx8IHN0eWxlQ2xhc3NOYW1l
cy5ldmVyeShmdW5jdGlvbihjbGFzc05hbWUpIHsgcmV0dXJuIHR5cGVvZiBjbGFzc05hbWUgPT09
ICJzdHJpbmciOyB9KSk7Ci0gICAgY29uc29sZS5hc3NlcnQodGFiQmFySXRlbSBpbnN0YW5jZW9m
IFdlYkluc3BlY3Rvci5UYWJCYXJJdGVtKTsKLSAgICBjb25zb2xlLmFzc2VydCghbmF2aWdhdGlv
blNpZGViYXJQYW5lbCB8fCBuYXZpZ2F0aW9uU2lkZWJhclBhbmVsIGluc3RhbmNlb2YgV2ViSW5z
cGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwpOwotICAgIGNvbnNvbGUuYXNzZXJ0KCFkZXRh
aWxzU2lkZWJhclBhbmVscyB8fCBkZXRhaWxzU2lkZWJhclBhbmVscy5ldmVyeShmdW5jdGlvbihk
ZXRhaWxzU2lkZWJhclBhbmVsKSB7IHJldHVybiBkZXRhaWxzU2lkZWJhclBhbmVsIGluc3RhbmNl
b2YgV2ViSW5zcGVjdG9yLkRldGFpbHNTaWRlYmFyUGFuZWw7IH0pKTsKLQotICAgIFdlYkluc3Bl
Y3Rvci5Db250ZW50Vmlldy5jYWxsKHRoaXMsIG51bGwpOworICAgIGNvbnN0cnVjdG9yKGlkZW50
aWZpZXIsIHN0eWxlQ2xhc3NOYW1lcywgdGFiQmFySXRlbSwgbmF2aWdhdGlvblNpZGViYXJQYW5l
bCwgZGV0YWlsc1NpZGViYXJQYW5lbHMpCisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydCh0
eXBlb2YgaWRlbnRpZmllciA9PT0gInN0cmluZyIpOworICAgICAgICBjb25zb2xlLmFzc2VydCh0
eXBlb2Ygc3R5bGVDbGFzc05hbWVzID09PSAic3RyaW5nIiB8fCBzdHlsZUNsYXNzTmFtZXMuZXZl
cnkoZnVuY3Rpb24oY2xhc3NOYW1lKSB7IHJldHVybiB0eXBlb2YgY2xhc3NOYW1lID09PSAic3Ry
aW5nIjsgfSkpOworICAgICAgICBjb25zb2xlLmFzc2VydCh0YWJCYXJJdGVtIGluc3RhbmNlb2Yg
V2ViSW5zcGVjdG9yLlRhYkJhckl0ZW0pOworICAgICAgICBjb25zb2xlLmFzc2VydCghbmF2aWdh
dGlvblNpZGViYXJQYW5lbCB8fCBuYXZpZ2F0aW9uU2lkZWJhclBhbmVsIGluc3RhbmNlb2YgV2Vi
SW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwpOworICAgICAgICBjb25zb2xlLmFzc2Vy
dCghZGV0YWlsc1NpZGViYXJQYW5lbHMgfHwgZGV0YWlsc1NpZGViYXJQYW5lbHMuZXZlcnkoZnVu
Y3Rpb24oZGV0YWlsc1NpZGViYXJQYW5lbCkgeyByZXR1cm4gZGV0YWlsc1NpZGViYXJQYW5lbCBp
bnN0YW5jZW9mIFdlYkluc3BlY3Rvci5EZXRhaWxzU2lkZWJhclBhbmVsOyB9KSk7CiAKLSAgICB0
aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgidGFiIik7CisgICAgICAgIHN1cGVyKG51bGwpOwog
Ci0gICAgaWYgKHR5cGVvZiBzdHlsZUNsYXNzTmFtZXMgPT09ICJzdHJpbmciKQotICAgICAgICBz
dHlsZUNsYXNzTmFtZXMgPSBbc3R5bGVDbGFzc05hbWVzXTsKKyAgICAgICAgdGhpcy5lbGVtZW50
LmNsYXNzTGlzdC5hZGQoInRhYiIpOwogCi0gICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQo
Li4uc3R5bGVDbGFzc05hbWVzKTsKKyAgICAgICAgaWYgKHR5cGVvZiBzdHlsZUNsYXNzTmFtZXMg
PT09ICJzdHJpbmciKQorICAgICAgICAgICAgc3R5bGVDbGFzc05hbWVzID0gW3N0eWxlQ2xhc3NO
YW1lc107CiAKLSAgICB0aGlzLl9pZGVudGlmaWVyID0gaWRlbnRpZmllcjsKLSAgICB0aGlzLl90
YWJCYXJJdGVtID0gdGFiQmFySXRlbTsKLSAgICB0aGlzLl9uYXZpZ2F0aW9uU2lkZWJhclBhbmVs
ID0gbmF2aWdhdGlvblNpZGViYXJQYW5lbCB8fCBudWxsOwotICAgIHRoaXMuX2RldGFpbHNTaWRl
YmFyUGFuZWxzID0gZGV0YWlsc1NpZGViYXJQYW5lbHMgfHwgW107CisgICAgICAgIHRoaXMuZWxl
bWVudC5jbGFzc0xpc3QuYWRkKC4uLnN0eWxlQ2xhc3NOYW1lcyk7CiAKLSAgICB0aGlzLl9uYXZp
Z2F0aW9uU2lkZWJhckNvbGxhcHNlZFNldHRpbmcgPSBuZXcgV2ViSW5zcGVjdG9yLlNldHRpbmco
aWRlbnRpZmllciArICItbmF2aWdhdGlvbi1zaWRlYmFyLWNvbGxhcHNlZCIsIGZhbHNlKTsKKyAg
ICAgICAgdGhpcy5faWRlbnRpZmllciA9IGlkZW50aWZpZXI7CisgICAgICAgIHRoaXMuX3RhYkJh
ckl0ZW0gPSB0YWJCYXJJdGVtOworICAgICAgICB0aGlzLl9uYXZpZ2F0aW9uU2lkZWJhclBhbmVs
ID0gbmF2aWdhdGlvblNpZGViYXJQYW5lbCB8fCBudWxsOworICAgICAgICB0aGlzLl9kZXRhaWxz
U2lkZWJhclBhbmVscyA9IGRldGFpbHNTaWRlYmFyUGFuZWxzIHx8IFtdOwogCi0gICAgdGhpcy5f
ZGV0YWlsc1NpZGViYXJDb2xsYXBzZWRTZXR0aW5nID0gbmV3IFdlYkluc3BlY3Rvci5TZXR0aW5n
KGlkZW50aWZpZXIgKyAiLWRldGFpbHMtc2lkZWJhci1jb2xsYXBzZWQiLCB0cnVlKTsKLSAgICB0
aGlzLl9kZXRhaWxzU2lkZWJhclNlbGVjdGVkUGFuZWxTZXR0aW5nID0gbmV3IFdlYkluc3BlY3Rv
ci5TZXR0aW5nKGlkZW50aWZpZXIgKyAiLWRldGFpbHMtc2lkZWJhci1zZWxlY3RlZC1wYW5lbCIs
IG51bGwpOworICAgICAgICB0aGlzLl9uYXZpZ2F0aW9uU2lkZWJhckNvbGxhcHNlZFNldHRpbmcg
PSBuZXcgV2ViSW5zcGVjdG9yLlNldHRpbmcoaWRlbnRpZmllciArICItbmF2aWdhdGlvbi1zaWRl
YmFyLWNvbGxhcHNlZCIsIGZhbHNlKTsKIAotICAgIHRoaXMuX2Nvb2tpZVNldHRpbmcgPSBuZXcg
V2ViSW5zcGVjdG9yLlNldHRpbmcoaWRlbnRpZmllciArICItdGFiLWNvb2tpZSIsIHt9KTsKLX07
CisgICAgICAgIHRoaXMuX2RldGFpbHNTaWRlYmFyQ29sbGFwc2VkU2V0dGluZyA9IG5ldyBXZWJJ
bnNwZWN0b3IuU2V0dGluZyhpZGVudGlmaWVyICsgIi1kZXRhaWxzLXNpZGViYXItY29sbGFwc2Vk
IiwgdHJ1ZSk7CisgICAgICAgIHRoaXMuX2RldGFpbHNTaWRlYmFyU2VsZWN0ZWRQYW5lbFNldHRp
bmcgPSBuZXcgV2ViSW5zcGVjdG9yLlNldHRpbmcoaWRlbnRpZmllciArICItZGV0YWlscy1zaWRl
YmFyLXNlbGVjdGVkLXBhbmVsIiwgbnVsbCk7CiAKLVdlYkluc3BlY3Rvci5UYWJDb250ZW50Vmll
dy5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5UYWJDb250ZW50
VmlldywKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5wcm90b3R5cGUs
CisgICAgICAgIHRoaXMuX2Nvb2tpZVNldHRpbmcgPSBuZXcgV2ViSW5zcGVjdG9yLlNldHRpbmco
aWRlbnRpZmllciArICItdGFiLWNvb2tpZSIsIHt9KTsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMK
IApAQCAtNjMsNTcgKzYxLDU3IEBAIFdlYkluc3BlY3Rvci5UYWJDb250ZW50Vmlldy5wcm90b3R5
cGUgPSB7CiAgICAgewogICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzLgogICAg
ICAgICByZXR1cm4gbnVsbDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBwYXJlbnRUYWJCcm93
c2VyKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9wYXJlbnRUYWJCcm93c2VyOwotICAg
IH0sCisgICAgfQogCiAgICAgc2V0IHBhcmVudFRhYkJyb3dzZXIodGFiQnJvd3NlcikKICAgICB7
CiAgICAgICAgIHRoaXMuX3BhcmVudFRhYkJyb3dzZXIgPSB0YWJCcm93c2VyIHx8IG51bGw7Ci0g
ICAgfSwKKyAgICB9CiAKICAgICBnZXQgaWRlbnRpZmllcigpCiAgICAgewogICAgICAgICByZXR1
cm4gdGhpcy5faWRlbnRpZmllcjsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCB0YWJCYXJJdGVt
KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl90YWJCYXJJdGVtOwotICAgIH0sCisgICAg
fQogCiAgICAgZ2V0IG1hbmFnZXNEZXRhaWxzU2lkZWJhclBhbmVscygpCiAgICAgewogICAgICAg
ICAvLyBJbXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzLgogICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBzaG93RGV0YWlsc1NpZGViYXJQYW5lbHM6IGZ1bmN0aW9uKCkK
KyAgICBzaG93RGV0YWlsc1NpZGViYXJQYW5lbHMoKQogICAgIHsKICAgICAgICAgLy8gSW1wbGVt
ZW50ZWQgYnkgc3ViY2xhc3Nlcy4KLSAgICB9LAorICAgIH0KIAotICAgIHNob3dSZXByZXNlbnRl
ZE9iamVjdDogZnVuY3Rpb24ocmVwcmVzZW50ZWRPYmplY3QsIGNvb2tpZSkKKyAgICBzaG93UmVw
cmVzZW50ZWRPYmplY3QocmVwcmVzZW50ZWRPYmplY3QsIGNvb2tpZSkKICAgICB7CiAgICAgICAg
IC8vIEltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMuCi0gICAgfSwKKyAgICB9CiAKLSAgICBjYW5T
aG93UmVwcmVzZW50ZWRPYmplY3Q6IGZ1bmN0aW9uKHJlcHJlc2VudGVkT2JqZWN0KQorICAgIGNh
blNob3dSZXByZXNlbnRlZE9iamVjdChyZXByZXNlbnRlZE9iamVjdCkKICAgICB7CiAgICAgICAg
IC8vIEltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMuCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICB9LAorICAgIH0KIAotICAgIHNob3duOiBmdW5jdGlvbigpCisgICAgc2hvd24oKQogICAgIHsK
ICAgICAgICAgaWYgKHRoaXMuX3Nob3VsZFJlc3RvcmVTdGF0ZVdoZW5TaG93bikKICAgICAgICAg
ICAgIHRoaXMucmVzdG9yZVN0YXRlRnJvbUNvb2tpZShXZWJJbnNwZWN0b3IuU3RhdGVSZXN0b3Jh
dGlvblR5cGUuRGVsYXllZCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICByZXN0b3JlU3RhdGVGcm9t
Q29va2llOiBmdW5jdGlvbihyZXN0b3JhdGlvblR5cGUpCisgICAgcmVzdG9yZVN0YXRlRnJvbUNv
b2tpZShyZXN0b3JhdGlvblR5cGUpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMubmF2aWdhdGlv
blNpZGViYXJQYW5lbCkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTEzMiw5ICsxMzAsOSBAQCBX
ZWJJbnNwZWN0b3IuVGFiQ29udGVudFZpZXcucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmVs
YXhNYXRjaERlbGF5ID0gMjAwMDsKIAogICAgICAgICB0aGlzLm5hdmlnYXRpb25TaWRlYmFyUGFu
ZWwucmVzdG9yZVN0YXRlRnJvbUNvb2tpZSh0aGlzLl9jb29raWVTZXR0aW5nLnZhbHVlIHx8IHt9
LCByZWxheE1hdGNoRGVsYXkpOwotICAgIH0sCisgICAgfQogCi0gICAgc2F2ZVN0YXRlVG9Db29r
aWU6IGZ1bmN0aW9uKCkKKyAgICBzYXZlU3RhdGVUb0Nvb2tpZSgpCiAgICAgewogICAgICAgICBp
ZiAoIXRoaXMubmF2aWdhdGlvblNpZGViYXJQYW5lbCkKICAgICAgICAgICAgIHJldHVybjsKQEAg
LTE0NSwyNyArMTQzLDI3IEBAIFdlYkluc3BlY3Rvci5UYWJDb250ZW50Vmlldy5wcm90b3R5cGUg
PSB7CiAgICAgICAgIHZhciBjb29raWUgPSB7fTsKICAgICAgICAgdGhpcy5uYXZpZ2F0aW9uU2lk
ZWJhclBhbmVsLnNhdmVTdGF0ZVRvQ29va2llKGNvb2tpZSk7CiAgICAgICAgIHRoaXMuX2Nvb2tp
ZVNldHRpbmcudmFsdWUgPSBjb29raWU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgbmF2aWdh
dGlvblNpZGViYXJQYW5lbCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fbmF2aWdhdGlv
blNpZGViYXJQYW5lbDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBuYXZpZ2F0aW9uU2lkZWJh
ckNvbGxhcHNlZFNldHRpbmcoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX25hdmlnYXRp
b25TaWRlYmFyQ29sbGFwc2VkU2V0dGluZzsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBkZXRh
aWxzU2lkZWJhclBhbmVscygpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZGV0YWlsc1Np
ZGViYXJQYW5lbHM7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgZGV0YWlsc1NpZGViYXJDb2xs
YXBzZWRTZXR0aW5nKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9kZXRhaWxzU2lkZWJh
ckNvbGxhcHNlZFNldHRpbmc7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgZGV0YWlsc1NpZGVi
YXJTZWxlY3RlZFBhbmVsU2V0dGluZygpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGV4dENvbnRlbnRWaWV3LmpzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGV4dENvbnRlbnRWaWV3LmpzCmlu
ZGV4IDk2YWU0MDgwYjdjZTk1NzkzNDViYWRmYjAyOTY0ZWI0MjQwZDJmZGQuLjQxYzk5OTIyOTYy
NDAyMzU0NzRiZjMwNjc1NmFhMGQ3NDA4ZDhiYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RleHRDb250ZW50Vmlldy5qcworKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UZXh0Q29udGVudFZpZXcuanMK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTIzLDE1MyArMjMsMTUwIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAg
Ki8KIAotV2ViSW5zcGVjdG9yLlRleHRDb250ZW50VmlldyA9IGZ1bmN0aW9uKHN0cmluZywgbWlt
ZVR5cGUpCitXZWJJbnNwZWN0b3IuVGV4dENvbnRlbnRWaWV3ID0gY2xhc3MgVGV4dENvbnRlbnRW
aWV3IGV4dGVuZHMgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3CiB7Ci0gICAgV2ViSW5zcGVjdG9y
LkNvbnRlbnRWaWV3LmNhbGwodGhpcywgc3RyaW5nKTsKLQotICAgIHRoaXMuZWxlbWVudC5jbGFz
c0xpc3QuYWRkKCJ0ZXh0Iik7CisgICAgY29uc3RydWN0b3Ioc3RyaW5nLCBtaW1lVHlwZSkKKyAg
ICB7CisgICAgICAgIHN1cGVyKHN0cmluZyk7CiAKLSAgICB0aGlzLl90ZXh0RWRpdG9yID0gbmV3
IFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yOwotICAgIHRoaXMuX3RleHRFZGl0b3IuYWRkRXZlbnRM
aXN0ZW5lcihXZWJJbnNwZWN0b3IuVGV4dEVkaXRvci5FdmVudC5OdW1iZXJPZlNlYXJjaFJlc3Vs
dHNEaWRDaGFuZ2UsIHRoaXMuX251bWJlck9mU2VhcmNoUmVzdWx0c0RpZENoYW5nZSwgdGhpcyk7
Ci0gICAgdGhpcy5fdGV4dEVkaXRvci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5UZXh0
RWRpdG9yLkV2ZW50LkZvcm1hdHRpbmdEaWRDaGFuZ2UsIHRoaXMuX3RleHRFZGl0b3JGb3JtYXR0
aW5nRGlkQ2hhbmdlLCB0aGlzKTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQo
InRleHQiKTsKIAotICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl90ZXh0RWRpdG9y
LmVsZW1lbnQpOworICAgICAgICB0aGlzLl90ZXh0RWRpdG9yID0gbmV3IFdlYkluc3BlY3Rvci5U
ZXh0RWRpdG9yOworICAgICAgICB0aGlzLl90ZXh0RWRpdG9yLmFkZEV2ZW50TGlzdGVuZXIoV2Vi
SW5zcGVjdG9yLlRleHRFZGl0b3IuRXZlbnQuTnVtYmVyT2ZTZWFyY2hSZXN1bHRzRGlkQ2hhbmdl
LCB0aGlzLl9udW1iZXJPZlNlYXJjaFJlc3VsdHNEaWRDaGFuZ2UsIHRoaXMpOworICAgICAgICB0
aGlzLl90ZXh0RWRpdG9yLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRleHRFZGl0b3Iu
RXZlbnQuRm9ybWF0dGluZ0RpZENoYW5nZSwgdGhpcy5fdGV4dEVkaXRvckZvcm1hdHRpbmdEaWRD
aGFuZ2UsIHRoaXMpOwogCi0gICAgdGhpcy5fdGV4dEVkaXRvci5yZWFkT25seSA9IHRydWU7Ci0g
ICAgdGhpcy5fdGV4dEVkaXRvci5taW1lVHlwZSA9IG1pbWVUeXBlOwotICAgIHRoaXMuX3RleHRF
ZGl0b3Iuc3RyaW5nID0gc3RyaW5nOworICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQo
dGhpcy5fdGV4dEVkaXRvci5lbGVtZW50KTsKIAotICAgIHZhciB0b29sVGlwID0gV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJQcmV0dHkgcHJpbnQiKTsKLSAgICB2YXIgYWN0aXZhdGVkVG9vbFRpcCA9
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiT3JpZ2luYWwgZm9ybWF0dGluZyIpOwotICAgIHRoaXMu
X3ByZXR0eVByaW50QnV0dG9uTmF2aWdhdGlvbkl0ZW0gPSBuZXcgV2ViSW5zcGVjdG9yLkFjdGl2
YXRlQnV0dG9uTmF2aWdhdGlvbkl0ZW0oInByZXR0eS1wcmludCIsIHRvb2xUaXAsIGFjdGl2YXRl
ZFRvb2xUaXAsICJJbWFnZXMvTmF2aWdhdGlvbkl0ZW1DdXJsZXlCcmFjZXMuc3ZnIiwgMTMsIDEz
KTsKLSAgICB0aGlzLl9wcmV0dHlQcmludEJ1dHRvbk5hdmlnYXRpb25JdGVtLmFkZEV2ZW50TGlz
dGVuZXIoV2ViSW5zcGVjdG9yLkJ1dHRvbk5hdmlnYXRpb25JdGVtLkV2ZW50LkNsaWNrZWQsIHRo
aXMuX3RvZ2dsZVByZXR0eVByaW50LCB0aGlzKTsKLSAgICB0aGlzLl9wcmV0dHlQcmludEJ1dHRv
bk5hdmlnYXRpb25JdGVtLmVuYWJsZWQgPSB0aGlzLl90ZXh0RWRpdG9yLmNhbkJlRm9ybWF0dGVk
KCk7CisgICAgICAgIHRoaXMuX3RleHRFZGl0b3IucmVhZE9ubHkgPSB0cnVlOworICAgICAgICB0
aGlzLl90ZXh0RWRpdG9yLm1pbWVUeXBlID0gbWltZVR5cGU7CisgICAgICAgIHRoaXMuX3RleHRF
ZGl0b3Iuc3RyaW5nID0gc3RyaW5nOwogCi0gICAgdmFyIHRvb2xUaXBUeXBlcyA9IFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiU2hvdyB0eXBlIGluZm9ybWF0aW9uIik7Ci0gICAgdmFyIGFjdGl2YXRl
ZFRvb2xUaXBUeXBlcyA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiSGlkZSB0eXBlIGluZm9ybWF0
aW9uIik7Ci0gICAgdGhpcy5fc2hvd1R5cGVzQnV0dG9uTmF2aWdhdGlvbkl0ZW0gPSBuZXcgV2Vi
SW5zcGVjdG9yLkFjdGl2YXRlQnV0dG9uTmF2aWdhdGlvbkl0ZW0oInNob3ctdHlwZXMiLCB0b29s
VGlwVHlwZXMsIGFjdGl2YXRlZFRvb2xUaXBUeXBlcywgIkltYWdlcy9OYXZpZ2F0aW9uSXRlbVR5
cGVzLnN2ZyIsIDEzLCAxNCk7Ci0gICAgdGhpcy5fc2hvd1R5cGVzQnV0dG9uTmF2aWdhdGlvbkl0
ZW0uZW5hYmxlZCA9IGZhbHNlOwotfTsKKyAgICAgICAgdmFyIHRvb2xUaXAgPSBXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIlByZXR0eSBwcmludCIpOworICAgICAgICB2YXIgYWN0aXZhdGVkVG9vbFRp
cCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiT3JpZ2luYWwgZm9ybWF0dGluZyIpOworICAgICAg
ICB0aGlzLl9wcmV0dHlQcmludEJ1dHRvbk5hdmlnYXRpb25JdGVtID0gbmV3IFdlYkluc3BlY3Rv
ci5BY3RpdmF0ZUJ1dHRvbk5hdmlnYXRpb25JdGVtKCJwcmV0dHktcHJpbnQiLCB0b29sVGlwLCBh
Y3RpdmF0ZWRUb29sVGlwLCAiSW1hZ2VzL05hdmlnYXRpb25JdGVtQ3VybGV5QnJhY2VzLnN2ZyIs
IDEzLCAxMyk7CisgICAgICAgIHRoaXMuX3ByZXR0eVByaW50QnV0dG9uTmF2aWdhdGlvbkl0ZW0u
YWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uRXZlbnQu
Q2xpY2tlZCwgdGhpcy5fdG9nZ2xlUHJldHR5UHJpbnQsIHRoaXMpOworICAgICAgICB0aGlzLl9w
cmV0dHlQcmludEJ1dHRvbk5hdmlnYXRpb25JdGVtLmVuYWJsZWQgPSB0aGlzLl90ZXh0RWRpdG9y
LmNhbkJlRm9ybWF0dGVkKCk7CiAKLVdlYkluc3BlY3Rvci5UZXh0Q29udGVudFZpZXcucHJvdG90
eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuVGV4dENvbnRlbnRWaWV3LAor
ICAgICAgICB2YXIgdG9vbFRpcFR5cGVzID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTaG93IHR5
cGUgaW5mb3JtYXRpb24iKTsKKyAgICAgICAgdmFyIGFjdGl2YXRlZFRvb2xUaXBUeXBlcyA9IFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiSGlkZSB0eXBlIGluZm9ybWF0aW9uIik7CisgICAgICAgIHRo
aXMuX3Nob3dUeXBlc0J1dHRvbk5hdmlnYXRpb25JdGVtID0gbmV3IFdlYkluc3BlY3Rvci5BY3Rp
dmF0ZUJ1dHRvbk5hdmlnYXRpb25JdGVtKCJzaG93LXR5cGVzIiwgdG9vbFRpcFR5cGVzLCBhY3Rp
dmF0ZWRUb29sVGlwVHlwZXMsICJJbWFnZXMvTmF2aWdhdGlvbkl0ZW1UeXBlcy5zdmciLCAxMywg
MTQpOworICAgICAgICB0aGlzLl9zaG93VHlwZXNCdXR0b25OYXZpZ2F0aW9uSXRlbS5lbmFibGVk
ID0gZmFsc2U7CisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgdGV4dEVkaXRvcigp
CiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fdGV4dEVkaXRvcjsKLSAgICB9LAorICAgIH0K
IAogICAgIGdldCBuYXZpZ2F0aW9uSXRlbXMoKQogICAgIHsKICAgICAgICAgcmV0dXJuIFt0aGlz
Ll9wcmV0dHlQcmludEJ1dHRvbk5hdmlnYXRpb25JdGVtLCB0aGlzLl9zaG93VHlwZXNCdXR0b25O
YXZpZ2F0aW9uSXRlbV07Ci0gICAgfSwKKyAgICB9CiAKLSAgICByZXZlYWxQb3NpdGlvbjogZnVu
Y3Rpb24ocG9zaXRpb24sIHRleHRSYW5nZVRvU2VsZWN0LCBmb3JjZVVuZm9ybWF0dGVkKQorICAg
IHJldmVhbFBvc2l0aW9uKHBvc2l0aW9uLCB0ZXh0UmFuZ2VUb1NlbGVjdCwgZm9yY2VVbmZvcm1h
dHRlZCkKICAgICB7CiAgICAgICAgIHRoaXMuX3RleHRFZGl0b3IucmV2ZWFsUG9zaXRpb24ocG9z
aXRpb24sIHRleHRSYW5nZVRvU2VsZWN0LCBmb3JjZVVuZm9ybWF0dGVkKTsKLSAgICB9LAorICAg
IH0KIAotICAgIHNob3duOiBmdW5jdGlvbigpCisgICAgc2hvd24oKQogICAgIHsKLSAgICAgICAg
V2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LnByb3RvdHlwZS5zaG93bi5jYWxsKHRoaXMpOworICAg
ICAgICBzdXBlci5zaG93bigpOwogCiAgICAgICAgIHRoaXMuX3RleHRFZGl0b3Iuc2hvd24oKTsK
LSAgICB9LAorICAgIH0KIAotICAgIGhpZGRlbjogZnVuY3Rpb24oKQorICAgIGhpZGRlbigpCiAg
ICAgewotICAgICAgICBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcucHJvdG90eXBlLmhpZGRlbi5j
YWxsKHRoaXMpOworICAgICAgICBzdXBlci5oaWRkZW4oKTsKIAogICAgICAgICB0aGlzLl90ZXh0
RWRpdG9yLmhpZGRlbigpOwotICAgIH0sCisgICAgfQogCi0gICAgY2xvc2VkOiBmdW5jdGlvbigp
CisgICAgY2xvc2VkKCkKICAgICB7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5w
cm90b3R5cGUuY2xvc2VkLmNhbGwodGhpcyk7CisgICAgICAgIHN1cGVyLmNsb3NlZCgpOwogCiAg
ICAgICAgIHRoaXMuX3RleHRFZGl0b3IuY2xvc2UoKTsKLSAgICB9LAorICAgIH0KIAogICAgIGdl
dCBzdXBwb3J0c1NhdmUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfSwKKyAg
ICB9CiAKICAgICBnZXQgc2F2ZURhdGEoKQogICAgIHsKICAgICAgICAgdmFyIHVybCA9ICJ3ZWIt
aW5zcGVjdG9yOi8vLyIgKyBlbmNvZGVVUkkoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJVbnRpdGxl
ZCIpKSArICIudHh0IjsKICAgICAgICAgcmV0dXJuIHt1cmwsIGNvbnRlbnQ6IHRoaXMuX3RleHRF
ZGl0b3Iuc3RyaW5nLCBmb3JjZVNhdmVBczogdHJ1ZX07Ci0gICAgfSwKKyAgICB9CiAKICAgICBn
ZXQgc3VwcG9ydHNTZWFyY2goKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfSwK
KyAgICB9CiAKICAgICBnZXQgbnVtYmVyT2ZTZWFyY2hSZXN1bHRzKCkKICAgICB7CiAgICAgICAg
IHJldHVybiB0aGlzLl90ZXh0RWRpdG9yLm51bWJlck9mU2VhcmNoUmVzdWx0czsKLSAgICB9LAor
ICAgIH0KIAogICAgIGdldCBoYXNQZXJmb3JtZWRTZWFyY2goKQogICAgIHsKICAgICAgICAgcmV0
dXJuIHRoaXMuX3RleHRFZGl0b3IuY3VycmVudFNlYXJjaFF1ZXJ5ICE9PSBudWxsOwotICAgIH0s
CisgICAgfQogCiAgICAgc2V0IGF1dG9tYXRpY2FsbHlSZXZlYWxGaXJzdFNlYXJjaFJlc3VsdChy
ZXZlYWwpCiAgICAgewogICAgICAgICB0aGlzLl90ZXh0RWRpdG9yLmF1dG9tYXRpY2FsbHlSZXZl
YWxGaXJzdFNlYXJjaFJlc3VsdCA9IHJldmVhbDsKLSAgICB9LAorICAgIH0KIAotICAgIHBlcmZv
cm1TZWFyY2g6IGZ1bmN0aW9uKHF1ZXJ5KQorICAgIHBlcmZvcm1TZWFyY2gocXVlcnkpCiAgICAg
ewogICAgICAgICB0aGlzLl90ZXh0RWRpdG9yLnBlcmZvcm1TZWFyY2gocXVlcnkpOwotICAgIH0s
CisgICAgfQogCi0gICAgc2VhcmNoQ2xlYXJlZDogZnVuY3Rpb24oKQorICAgIHNlYXJjaENsZWFy
ZWQoKQogICAgIHsKICAgICAgICAgdGhpcy5fdGV4dEVkaXRvci5zZWFyY2hDbGVhcmVkKCk7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBzZWFyY2hRdWVyeVdpdGhTZWxlY3Rpb246IGZ1bmN0aW9uKCkK
KyAgICBzZWFyY2hRdWVyeVdpdGhTZWxlY3Rpb24oKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRo
aXMuX3RleHRFZGl0b3Iuc2VhcmNoUXVlcnlXaXRoU2VsZWN0aW9uKCk7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICByZXZlYWxQcmV2aW91c1NlYXJjaFJlc3VsdDogZnVuY3Rpb24oY2hhbmdlRm9jdXMp
CisgICAgcmV2ZWFsUHJldmlvdXNTZWFyY2hSZXN1bHQoY2hhbmdlRm9jdXMpCiAgICAgewogICAg
ICAgICB0aGlzLl90ZXh0RWRpdG9yLnJldmVhbFByZXZpb3VzU2VhcmNoUmVzdWx0KGNoYW5nZUZv
Y3VzKTsKLSAgICB9LAorICAgIH0KIAotICAgIHJldmVhbE5leHRTZWFyY2hSZXN1bHQ6IGZ1bmN0
aW9uKGNoYW5nZUZvY3VzKQorICAgIHJldmVhbE5leHRTZWFyY2hSZXN1bHQoY2hhbmdlRm9jdXMp
CiAgICAgewogICAgICAgICB0aGlzLl90ZXh0RWRpdG9yLnJldmVhbE5leHRTZWFyY2hSZXN1bHQo
Y2hhbmdlRm9jdXMpOwotICAgIH0sCisgICAgfQogCi0gICAgdXBkYXRlTGF5b3V0OiBmdW5jdGlv
bigpCisgICAgdXBkYXRlTGF5b3V0KCkKICAgICB7CiAgICAgICAgIHRoaXMuX3RleHRFZGl0b3Iu
dXBkYXRlTGF5b3V0KCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcml2YXRlCiAKLSAgICBf
dG9nZ2xlUHJldHR5UHJpbnQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF90b2dnbGVQcmV0dHlQcmlu
dChldmVudCkKICAgICB7CiAgICAgICAgIHZhciBhY3RpdmF0ZWQgPSAhdGhpcy5fcHJldHR5UHJp
bnRCdXR0b25OYXZpZ2F0aW9uSXRlbS5hY3RpdmF0ZWQ7CiAgICAgICAgIHRoaXMuX3RleHRFZGl0
b3IuZm9ybWF0dGVkID0gYWN0aXZhdGVkOwotICAgIH0sCisgICAgfQogCi0gICAgX3RleHRFZGl0
b3JGb3JtYXR0aW5nRGlkQ2hhbmdlOiBmdW5jdGlvbihldmVudCkKKyAgICBfdGV4dEVkaXRvckZv
cm1hdHRpbmdEaWRDaGFuZ2UoZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLl9wcmV0dHlQcmlu
dEJ1dHRvbk5hdmlnYXRpb25JdGVtLmFjdGl2YXRlZCA9IHRoaXMuX3RleHRFZGl0b3IuZm9ybWF0
dGVkOwotICAgIH0sCisgICAgfQogCi0gICAgX251bWJlck9mU2VhcmNoUmVzdWx0c0RpZENoYW5n
ZTogZnVuY3Rpb24oZXZlbnQpCisgICAgX251bWJlck9mU2VhcmNoUmVzdWx0c0RpZENoYW5nZShl
dmVudCkKICAgICB7CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYklu
c3BlY3Rvci5Db250ZW50Vmlldy5FdmVudC5OdW1iZXJPZlNlYXJjaFJlc3VsdHNEaWRDaGFuZ2Up
OwogICAgIH0KIH07Ci0KLVdlYkluc3BlY3Rvci5UZXh0Q29udGVudFZpZXcucHJvdG90eXBlLl9f
cHJvdG9fXyA9IFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5wcm90b3R5cGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UZXh0UmVzb3VyY2VD
b250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L1RleHRSZXNvdXJjZUNvbnRlbnRWaWV3LmpzCmluZGV4IDNlM2NjMjk5OGM3YjFiOTQ4NDNlZmRk
ZTEwOWRhZmY0NzY2ZWJiMWMuLjJkODgzMTQ2ZmFhMWMzZDdmNTQyZjY5ZDNlNzlhZDRkOTY3NmUw
NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L1RleHRSZXNvdXJjZUNvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL1RleHRSZXNvdXJjZUNvbnRlbnRWaWV3LmpzCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMyw2MCArMjMs
NTcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNw
ZWN0b3IuVGV4dFJlc291cmNlQ29udGVudFZpZXcgPSBmdW5jdGlvbihyZXNvdXJjZSkKK1dlYklu
c3BlY3Rvci5UZXh0UmVzb3VyY2VDb250ZW50VmlldyA9IGNsYXNzIFRleHRSZXNvdXJjZUNvbnRl
bnRWaWV3IGV4dGVuZHMgV2ViSW5zcGVjdG9yLlJlc291cmNlQ29udGVudFZpZXcKIHsKLSAgICBX
ZWJJbnNwZWN0b3IuUmVzb3VyY2VDb250ZW50Vmlldy5jYWxsKHRoaXMsIHJlc291cmNlLCBXZWJJ
bnNwZWN0b3IuVGV4dFJlc291cmNlQ29udGVudFZpZXcuU3R5bGVDbGFzc05hbWUpOwotCi0gICAg
cmVzb3VyY2UuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuU291cmNlQ29kZS5FdmVudC5D
b250ZW50RGlkQ2hhbmdlLCB0aGlzLl9zb3VyY2VDb2RlQ29udGVudERpZENoYW5nZSwgdGhpcyk7
Ci0KLSAgICB0aGlzLl90ZXh0RWRpdG9yID0gbmV3IFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4
dEVkaXRvcihyZXNvdXJjZSk7Ci0gICAgdGhpcy5fdGV4dEVkaXRvci5hZGRFdmVudExpc3RlbmVy
KFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yLkV2ZW50LkV4ZWN1dGlvbkxpbmVOdW1iZXJEaWRDaGFu
Z2UsIHRoaXMuX2V4ZWN1dGlvbkxpbmVOdW1iZXJEaWRDaGFuZ2UsIHRoaXMpOwotICAgIHRoaXMu
X3RleHRFZGl0b3IuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGV4dEVkaXRvci5FdmVu
dC5OdW1iZXJPZlNlYXJjaFJlc3VsdHNEaWRDaGFuZ2UsIHRoaXMuX251bWJlck9mU2VhcmNoUmVz
dWx0c0RpZENoYW5nZSwgdGhpcyk7Ci0gICAgdGhpcy5fdGV4dEVkaXRvci5hZGRFdmVudExpc3Rl
bmVyKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yLkV2ZW50LkNvbnRlbnREaWRDaGFuZ2UsIHRoaXMu
X3RleHRFZGl0b3JDb250ZW50RGlkQ2hhbmdlLCB0aGlzKTsKLSAgICB0aGlzLl90ZXh0RWRpdG9y
LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRleHRFZGl0b3IuRXZlbnQuRm9ybWF0dGlu
Z0RpZENoYW5nZSwgdGhpcy5fdGV4dEVkaXRvckZvcm1hdHRpbmdEaWRDaGFuZ2UsIHRoaXMpOwot
ICAgIHRoaXMuX3RleHRFZGl0b3IuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuU291cmNl
Q29kZVRleHRFZGl0b3IuRXZlbnQuQ29udGVudFdpbGxQb3B1bGF0ZSwgdGhpcy5fY29udGVudFdp
bGxQb3B1bGF0ZSwgdGhpcyk7Ci0gICAgdGhpcy5fdGV4dEVkaXRvci5hZGRFdmVudExpc3RlbmVy
KFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvci5FdmVudC5Db250ZW50RGlkUG9wdWxh
dGUsIHRoaXMuX2NvbnRlbnREaWRQb3B1bGF0ZSwgdGhpcyk7Ci0KLSAgICBXZWJJbnNwZWN0b3Iu
cHJvYmVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlByb2JlTWFuYWdlci5F
dmVudC5Qcm9iZVNldEFkZGVkLCB0aGlzLl9wcm9iZVNldHNDaGFuZ2VkLCB0aGlzKTsKLSAgICBX
ZWJJbnNwZWN0b3IucHJvYmVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlBy
b2JlTWFuYWdlci5FdmVudC5Qcm9iZVNldFJlbW92ZWQsIHRoaXMuX3Byb2JlU2V0c0NoYW5nZWQs
IHRoaXMpOwotCi0gICAgdmFyIHRvb2xUaXAgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlByZXR0
eSBwcmludCIpOwotICAgIHZhciBhY3RpdmF0ZWRUb29sVGlwID0gV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJPcmlnaW5hbCBmb3JtYXR0aW5nIik7Ci0gICAgdGhpcy5fcHJldHR5UHJpbnRCdXR0b25O
YXZpZ2F0aW9uSXRlbSA9IG5ldyBXZWJJbnNwZWN0b3IuQWN0aXZhdGVCdXR0b25OYXZpZ2F0aW9u
SXRlbSgicHJldHR5LXByaW50IiwgdG9vbFRpcCwgYWN0aXZhdGVkVG9vbFRpcCwgIkltYWdlcy9O
YXZpZ2F0aW9uSXRlbUN1cmxleUJyYWNlcy5zdmciLCAxMywgMTMpOwotICAgIHRoaXMuX3ByZXR0
eVByaW50QnV0dG9uTmF2aWdhdGlvbkl0ZW0uYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3Iu
QnV0dG9uTmF2aWdhdGlvbkl0ZW0uRXZlbnQuQ2xpY2tlZCwgdGhpcy5fdG9nZ2xlUHJldHR5UHJp
bnQsIHRoaXMpOwotICAgIHRoaXMuX3ByZXR0eVByaW50QnV0dG9uTmF2aWdhdGlvbkl0ZW0uZW5h
YmxlZCA9IGZhbHNlOyAvLyBFbmFibGVkIHdoZW4gdGhlIHRleHQgZWRpdG9yIGlzIHBvcHVsYXRl
ZCB3aXRoIGNvbnRlbnQuCi0KLSAgICB2YXIgdG9vbFRpcFR5cGVzID0gV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJTaG93IHR5cGUgaW5mb3JtYXRpb24iKTsKLSAgICB2YXIgYWN0aXZhdGVkVG9vbFRp
cFR5cGVzID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJIaWRlIHR5cGUgaW5mb3JtYXRpb24iKTsK
LSAgICB0aGlzLl9zaG93VHlwZXNCdXR0b25OYXZpZ2F0aW9uSXRlbSA9IG5ldyBXZWJJbnNwZWN0
b3IuQWN0aXZhdGVCdXR0b25OYXZpZ2F0aW9uSXRlbSgic2hvdy10eXBlcyIsIHRvb2xUaXBUeXBl
cywgYWN0aXZhdGVkVG9vbFRpcFR5cGVzLCAiSW1hZ2VzL05hdmlnYXRpb25JdGVtVHlwZXMuc3Zn
IiwgMTMsIDE0KTsKLSAgICB0aGlzLl9zaG93VHlwZXNCdXR0b25OYXZpZ2F0aW9uSXRlbS5hZGRF
dmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5CdXR0b25OYXZpZ2F0aW9uSXRlbS5FdmVudC5DbGlj
a2VkLCB0aGlzLl90b2dnbGVUeXBlQW5ub3RhdGlvbnMsIHRoaXMpOwotICAgIHRoaXMuX3Nob3dU
eXBlc0J1dHRvbk5hdmlnYXRpb25JdGVtLmVuYWJsZWQgPSBmYWxzZTsKLQotICAgIFdlYkluc3Bl
Y3Rvci5zaG93SmF2YVNjcmlwdFR5cGVJbmZvcm1hdGlvblNldHRpbmcuYWRkRXZlbnRMaXN0ZW5l
cihXZWJJbnNwZWN0b3IuU2V0dGluZy5FdmVudC5DaGFuZ2VkLCB0aGlzLl9zaG93SmF2YVNjcmlw
dFR5cGVJbmZvcm1hdGlvblNldHRpbmdDaGFuZ2VkLCB0aGlzKTsKLX07Ci0KLVdlYkluc3BlY3Rv
ci5UZXh0UmVzb3VyY2VDb250ZW50Vmlldy5TdHlsZUNsYXNzTmFtZSA9ICJ0ZXh0IjsKLQotV2Vi
SW5zcGVjdG9yLlRleHRSZXNvdXJjZUNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKLSAgICBjb25z
dHJ1Y3RvcjogV2ViSW5zcGVjdG9yLlRleHRSZXNvdXJjZUNvbnRlbnRWaWV3LAorICAgIGNvbnN0
cnVjdG9yKHJlc291cmNlKQorICAgIHsKKyAgICAgICAgc3VwZXIocmVzb3VyY2UsICJ0ZXh0Iik7
CisKKyAgICAgICAgcmVzb3VyY2UuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuU291cmNl
Q29kZS5FdmVudC5Db250ZW50RGlkQ2hhbmdlLCB0aGlzLl9zb3VyY2VDb2RlQ29udGVudERpZENo
YW5nZSwgdGhpcyk7CisKKyAgICAgICAgdGhpcy5fdGV4dEVkaXRvciA9IG5ldyBXZWJJbnNwZWN0
b3IuU291cmNlQ29kZVRleHRFZGl0b3IocmVzb3VyY2UpOworICAgICAgICB0aGlzLl90ZXh0RWRp
dG9yLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRleHRFZGl0b3IuRXZlbnQuRXhlY3V0
aW9uTGluZU51bWJlckRpZENoYW5nZSwgdGhpcy5fZXhlY3V0aW9uTGluZU51bWJlckRpZENoYW5n
ZSwgdGhpcyk7CisgICAgICAgIHRoaXMuX3RleHRFZGl0b3IuYWRkRXZlbnRMaXN0ZW5lcihXZWJJ
bnNwZWN0b3IuVGV4dEVkaXRvci5FdmVudC5OdW1iZXJPZlNlYXJjaFJlc3VsdHNEaWRDaGFuZ2Us
IHRoaXMuX251bWJlck9mU2VhcmNoUmVzdWx0c0RpZENoYW5nZSwgdGhpcyk7CisgICAgICAgIHRo
aXMuX3RleHRFZGl0b3IuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGV4dEVkaXRvci5F
dmVudC5Db250ZW50RGlkQ2hhbmdlLCB0aGlzLl90ZXh0RWRpdG9yQ29udGVudERpZENoYW5nZSwg
dGhpcyk7CisgICAgICAgIHRoaXMuX3RleHRFZGl0b3IuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNw
ZWN0b3IuVGV4dEVkaXRvci5FdmVudC5Gb3JtYXR0aW5nRGlkQ2hhbmdlLCB0aGlzLl90ZXh0RWRp
dG9yRm9ybWF0dGluZ0RpZENoYW5nZSwgdGhpcyk7CisgICAgICAgIHRoaXMuX3RleHRFZGl0b3Iu
YWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3IuRXZlbnQu
Q29udGVudFdpbGxQb3B1bGF0ZSwgdGhpcy5fY29udGVudFdpbGxQb3B1bGF0ZSwgdGhpcyk7Cisg
ICAgICAgIHRoaXMuX3RleHRFZGl0b3IuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuU291
cmNlQ29kZVRleHRFZGl0b3IuRXZlbnQuQ29udGVudERpZFBvcHVsYXRlLCB0aGlzLl9jb250ZW50
RGlkUG9wdWxhdGUsIHRoaXMpOworCisgICAgICAgIFdlYkluc3BlY3Rvci5wcm9iZU1hbmFnZXIu
YWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuUHJvYmVNYW5hZ2VyLkV2ZW50LlByb2JlU2V0
QWRkZWQsIHRoaXMuX3Byb2JlU2V0c0NoYW5nZWQsIHRoaXMpOworICAgICAgICBXZWJJbnNwZWN0
b3IucHJvYmVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlByb2JlTWFuYWdl
ci5FdmVudC5Qcm9iZVNldFJlbW92ZWQsIHRoaXMuX3Byb2JlU2V0c0NoYW5nZWQsIHRoaXMpOwor
CisgICAgICAgIHZhciB0b29sVGlwID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJQcmV0dHkgcHJp
bnQiKTsKKyAgICAgICAgdmFyIGFjdGl2YXRlZFRvb2xUaXAgPSBXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIk9yaWdpbmFsIGZvcm1hdHRpbmciKTsKKyAgICAgICAgdGhpcy5fcHJldHR5UHJpbnRCdXR0
b25OYXZpZ2F0aW9uSXRlbSA9IG5ldyBXZWJJbnNwZWN0b3IuQWN0aXZhdGVCdXR0b25OYXZpZ2F0
aW9uSXRlbSgicHJldHR5LXByaW50IiwgdG9vbFRpcCwgYWN0aXZhdGVkVG9vbFRpcCwgIkltYWdl
cy9OYXZpZ2F0aW9uSXRlbUN1cmxleUJyYWNlcy5zdmciLCAxMywgMTMpOworICAgICAgICB0aGlz
Ll9wcmV0dHlQcmludEJ1dHRvbk5hdmlnYXRpb25JdGVtLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5z
cGVjdG9yLkJ1dHRvbk5hdmlnYXRpb25JdGVtLkV2ZW50LkNsaWNrZWQsIHRoaXMuX3RvZ2dsZVBy
ZXR0eVByaW50LCB0aGlzKTsKKyAgICAgICAgdGhpcy5fcHJldHR5UHJpbnRCdXR0b25OYXZpZ2F0
aW9uSXRlbS5lbmFibGVkID0gZmFsc2U7IC8vIEVuYWJsZWQgd2hlbiB0aGUgdGV4dCBlZGl0b3Ig
aXMgcG9wdWxhdGVkIHdpdGggY29udGVudC4KKworICAgICAgICB2YXIgdG9vbFRpcFR5cGVzID0g
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTaG93IHR5cGUgaW5mb3JtYXRpb24iKTsKKyAgICAgICAg
dmFyIGFjdGl2YXRlZFRvb2xUaXBUeXBlcyA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiSGlkZSB0
eXBlIGluZm9ybWF0aW9uIik7CisgICAgICAgIHRoaXMuX3Nob3dUeXBlc0J1dHRvbk5hdmlnYXRp
b25JdGVtID0gbmV3IFdlYkluc3BlY3Rvci5BY3RpdmF0ZUJ1dHRvbk5hdmlnYXRpb25JdGVtKCJz
aG93LXR5cGVzIiwgdG9vbFRpcFR5cGVzLCBhY3RpdmF0ZWRUb29sVGlwVHlwZXMsICJJbWFnZXMv
TmF2aWdhdGlvbkl0ZW1UeXBlcy5zdmciLCAxMywgMTQpOworICAgICAgICB0aGlzLl9zaG93VHlw
ZXNCdXR0b25OYXZpZ2F0aW9uSXRlbS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5CdXR0
b25OYXZpZ2F0aW9uSXRlbS5FdmVudC5DbGlja2VkLCB0aGlzLl90b2dnbGVUeXBlQW5ub3RhdGlv
bnMsIHRoaXMpOworICAgICAgICB0aGlzLl9zaG93VHlwZXNCdXR0b25OYXZpZ2F0aW9uSXRlbS5l
bmFibGVkID0gZmFsc2U7CisKKyAgICAgICAgV2ViSW5zcGVjdG9yLnNob3dKYXZhU2NyaXB0VHlw
ZUluZm9ybWF0aW9uU2V0dGluZy5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5TZXR0aW5n
LkV2ZW50LkNoYW5nZWQsIHRoaXMuX3Nob3dKYXZhU2NyaXB0VHlwZUluZm9ybWF0aW9uU2V0dGlu
Z0NoYW5nZWQsIHRoaXMpOworICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IG5hdmln
YXRpb25JdGVtcygpCiAgICAgewogICAgICAgICByZXR1cm4gW3RoaXMuX3ByZXR0eVByaW50QnV0
dG9uTmF2aWdhdGlvbkl0ZW0sIHRoaXMuX3Nob3dUeXBlc0J1dHRvbk5hdmlnYXRpb25JdGVtXTsK
LSAgICB9LAorICAgIH0KIAogICAgIGdldCBtYW5hZ2VzT3duSXNzdWVzKCkKICAgICB7CiAgICAg
ICAgIC8vIFNvdXJjZUNvZGVUZXh0RWRpdG9yIG1hbmFnZXMgdGhlIGlzc3Vlcywgd2UgZG9uJ3Qg
bmVlZCBSZXNvdXJjZUNvbnRlbnRWaWV3IGRvaW5nIGl0LgogICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICB9LAorICAgIH0KIAogICAgIGdldCB0ZXh0RWRpdG9yKCkKICAgICB7CiAgICAgICAgIHJl
dHVybiB0aGlzLl90ZXh0RWRpdG9yOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHN1cHBsZW1l
bnRhbFJlcHJlc2VudGVkT2JqZWN0cygpCiAgICAgewpAQCAtOTAsMTAxICs4NywxMDEgQEAgV2Vi
SW5zcGVjdG9yLlRleHRSZXNvdXJjZUNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAg
ICAgIG9iamVjdHMucHVzaChXZWJJbnNwZWN0b3IuZGVidWdnZXJNYW5hZ2VyLmFjdGl2ZUNhbGxG
cmFtZSk7CiAKICAgICAgICAgcmV0dXJuIG9iamVjdHM7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBy
ZXZlYWxQb3NpdGlvbjogZnVuY3Rpb24ocG9zaXRpb24sIHRleHRSYW5nZVRvU2VsZWN0LCBmb3Jj
ZVVuZm9ybWF0dGVkKQorICAgIHJldmVhbFBvc2l0aW9uKHBvc2l0aW9uLCB0ZXh0UmFuZ2VUb1Nl
bGVjdCwgZm9yY2VVbmZvcm1hdHRlZCkKICAgICB7CiAgICAgICAgIHRoaXMuX3RleHRFZGl0b3Iu
cmV2ZWFsUG9zaXRpb24ocG9zaXRpb24sIHRleHRSYW5nZVRvU2VsZWN0LCBmb3JjZVVuZm9ybWF0
dGVkKTsKLSAgICB9LAorICAgIH0KIAotICAgIHNob3duOiBmdW5jdGlvbigpCisgICAgc2hvd24o
KQogICAgIHsKLSAgICAgICAgV2ViSW5zcGVjdG9yLlJlc291cmNlQ29udGVudFZpZXcucHJvdG90
eXBlLnNob3duLmNhbGwodGhpcyk7CisgICAgICAgIHN1cGVyLnNob3duKCk7CiAKICAgICAgICAg
dGhpcy5fdGV4dEVkaXRvci5zaG93bigpOwotICAgIH0sCisgICAgfQogCi0gICAgaGlkZGVuOiBm
dW5jdGlvbigpCisgICAgaGlkZGVuKCkKICAgICB7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5SZXNv
dXJjZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5oaWRkZW4uY2FsbCh0aGlzKTsKKyAgICAgICAgc3Vw
ZXIuaGlkZGVuKCk7CiAKICAgICAgICAgdGhpcy5fdGV4dEVkaXRvci5oaWRkZW4oKTsKLSAgICB9
LAorICAgIH0KIAotICAgIGNsb3NlZDogZnVuY3Rpb24oKQorICAgIGNsb3NlZCgpCiAgICAgewot
ICAgICAgICBXZWJJbnNwZWN0b3IuUmVzb3VyY2VDb250ZW50Vmlldy5wcm90b3R5cGUuY2xvc2Vk
LmNhbGwodGhpcyk7CisgICAgICAgIHN1cGVyLmNsb3NlZCgpOwogCiAgICAgICAgIHRoaXMucmVz
b3VyY2UucmVtb3ZlRXZlbnRMaXN0ZW5lcihudWxsLCBudWxsLCB0aGlzKTsKICAgICAgICAgV2Vi
SW5zcGVjdG9yLnByb2JlTWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKG51bGwsIG51bGwsIHRo
aXMpOwogICAgICAgICBXZWJJbnNwZWN0b3Iuc2hvd0phdmFTY3JpcHRUeXBlSW5mb3JtYXRpb25T
ZXR0aW5nLnJlbW92ZUV2ZW50TGlzdGVuZXIobnVsbCwgbnVsbCwgdGhpcyk7CiAKICAgICAgICAg
dGhpcy5fdGV4dEVkaXRvci5jbG9zZSgpOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHN1cHBv
cnRzU2F2ZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9LAorICAgIH0KIAog
ICAgIGdldCBzYXZlRGF0YSgpCiAgICAgewogICAgICAgICByZXR1cm4ge3VybDogdGhpcy5yZXNv
dXJjZS51cmwsIGNvbnRlbnQ6IHRoaXMuX3RleHRFZGl0b3Iuc3RyaW5nfTsKLSAgICB9LAorICAg
IH0KIAogICAgIGdldCBzdXBwb3J0c1NlYXJjaCgpCiAgICAgewogICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBudW1iZXJPZlNlYXJjaFJlc3VsdHMoKQogICAg
IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3RleHRFZGl0b3IubnVtYmVyT2ZTZWFyY2hSZXN1bHRz
OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGhhc1BlcmZvcm1lZFNlYXJjaCgpCiAgICAgewog
ICAgICAgICByZXR1cm4gdGhpcy5fdGV4dEVkaXRvci5jdXJyZW50U2VhcmNoUXVlcnkgIT09IG51
bGw7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgYXV0b21hdGljYWxseVJldmVhbEZpcnN0U2Vh
cmNoUmVzdWx0KHJldmVhbCkKICAgICB7CiAgICAgICAgIHRoaXMuX3RleHRFZGl0b3IuYXV0b21h
dGljYWxseVJldmVhbEZpcnN0U2VhcmNoUmVzdWx0ID0gcmV2ZWFsOwotICAgIH0sCisgICAgfQog
Ci0gICAgcGVyZm9ybVNlYXJjaDogZnVuY3Rpb24ocXVlcnkpCisgICAgcGVyZm9ybVNlYXJjaChx
dWVyeSkKICAgICB7CiAgICAgICAgIHRoaXMuX3RleHRFZGl0b3IucGVyZm9ybVNlYXJjaChxdWVy
eSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzZWFyY2hDbGVhcmVkOiBmdW5jdGlvbigpCisgICAg
c2VhcmNoQ2xlYXJlZCgpCiAgICAgewogICAgICAgICB0aGlzLl90ZXh0RWRpdG9yLnNlYXJjaENs
ZWFyZWQoKTsKLSAgICB9LAorICAgIH0KIAotICAgIHNlYXJjaFF1ZXJ5V2l0aFNlbGVjdGlvbjog
ZnVuY3Rpb24oKQorICAgIHNlYXJjaFF1ZXJ5V2l0aFNlbGVjdGlvbigpCiAgICAgewogICAgICAg
ICByZXR1cm4gdGhpcy5fdGV4dEVkaXRvci5zZWFyY2hRdWVyeVdpdGhTZWxlY3Rpb24oKTsKLSAg
ICB9LAorICAgIH0KIAotICAgIHJldmVhbFByZXZpb3VzU2VhcmNoUmVzdWx0OiBmdW5jdGlvbihj
aGFuZ2VGb2N1cykKKyAgICByZXZlYWxQcmV2aW91c1NlYXJjaFJlc3VsdChjaGFuZ2VGb2N1cykK
ICAgICB7CiAgICAgICAgIHRoaXMuX3RleHRFZGl0b3IucmV2ZWFsUHJldmlvdXNTZWFyY2hSZXN1
bHQoY2hhbmdlRm9jdXMpOwotICAgIH0sCisgICAgfQogCi0gICAgcmV2ZWFsTmV4dFNlYXJjaFJl
c3VsdDogZnVuY3Rpb24oY2hhbmdlRm9jdXMpCisgICAgcmV2ZWFsTmV4dFNlYXJjaFJlc3VsdChj
aGFuZ2VGb2N1cykKICAgICB7CiAgICAgICAgIHRoaXMuX3RleHRFZGl0b3IucmV2ZWFsTmV4dFNl
YXJjaFJlc3VsdChjaGFuZ2VGb2N1cyk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICB1cGRhdGVMYXlv
dXQ6IGZ1bmN0aW9uKCkKKyAgICB1cGRhdGVMYXlvdXQoKQogICAgIHsKICAgICAgICAgdGhpcy5f
dGV4dEVkaXRvci51cGRhdGVMYXlvdXQoKTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByaXZh
dGUKIAotICAgIF9jb250ZW50V2lsbFBvcHVsYXRlOiBmdW5jdGlvbihldmVudCkKKyAgICBfY29u
dGVudFdpbGxQb3B1bGF0ZShldmVudCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl90ZXh0RWRp
dG9yLmVsZW1lbnQucGFyZW50Tm9kZSA9PT0gdGhpcy5lbGVtZW50KQogICAgICAgICAgICAgcmV0
dXJuOwpAQCAtMTk5LDY3ICsxOTYsNjUgQEAgV2ViSW5zcGVjdG9yLlRleHRSZXNvdXJjZUNvbnRl
bnRWaWV3LnByb3RvdHlwZSA9IHsKIAogICAgICAgICB0aGlzLmVsZW1lbnQucmVtb3ZlQ2hpbGRy
ZW4oKTsKICAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3RleHRFZGl0b3Iu
ZWxlbWVudCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfY29udGVudERpZFBvcHVsYXRlOiBmdW5j
dGlvbihldmVudCkKKyAgICBfY29udGVudERpZFBvcHVsYXRlKGV2ZW50KQogICAgIHsKICAgICAg
ICAgdGhpcy5fcHJldHR5UHJpbnRCdXR0b25OYXZpZ2F0aW9uSXRlbS5lbmFibGVkID0gdGhpcy5f
dGV4dEVkaXRvci5jYW5CZUZvcm1hdHRlZCgpOwogICAgICAgICB0aGlzLl9zaG93VHlwZXNCdXR0
b25OYXZpZ2F0aW9uSXRlbS5lbmFibGVkID0gdGhpcy5fdGV4dEVkaXRvci5jYW5TaG93VHlwZUFu
bm90YXRpb25zKCk7CiAgICAgICAgIHRoaXMuX3Nob3dUeXBlc0J1dHRvbk5hdmlnYXRpb25JdGVt
LmFjdGl2YXRlZCA9IFdlYkluc3BlY3Rvci5zaG93SmF2YVNjcmlwdFR5cGVJbmZvcm1hdGlvblNl
dHRpbmcudmFsdWU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdG9nZ2xlUHJldHR5UHJpbnQ6IGZ1
bmN0aW9uKGV2ZW50KQorICAgIF90b2dnbGVQcmV0dHlQcmludChldmVudCkKICAgICB7CiAgICAg
ICAgIHZhciBhY3RpdmF0ZWQgPSAhdGhpcy5fcHJldHR5UHJpbnRCdXR0b25OYXZpZ2F0aW9uSXRl
bS5hY3RpdmF0ZWQ7CiAgICAgICAgIHRoaXMuX3RleHRFZGl0b3IuZm9ybWF0dGVkID0gYWN0aXZh
dGVkOwotICAgIH0sCisgICAgfQogCi0gICAgX3RvZ2dsZVR5cGVBbm5vdGF0aW9uczogZnVuY3Rp
b24oZXZlbnQpCisgICAgX3RvZ2dsZVR5cGVBbm5vdGF0aW9ucyhldmVudCkKICAgICB7CiAgICAg
ICAgIHRoaXMuX3RleHRFZGl0b3IudG9nZ2xlVHlwZUFubm90YXRpb25zKCk7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBfc2hvd0phdmFTY3JpcHRUeXBlSW5mb3JtYXRpb25TZXR0aW5nQ2hhbmdlZDog
ZnVuY3Rpb24oZXZlbnQpCisgICAgX3Nob3dKYXZhU2NyaXB0VHlwZUluZm9ybWF0aW9uU2V0dGlu
Z0NoYW5nZWQoZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLl9zaG93VHlwZXNCdXR0b25OYXZp
Z2F0aW9uSXRlbS5hY3RpdmF0ZWQgPSBXZWJJbnNwZWN0b3Iuc2hvd0phdmFTY3JpcHRUeXBlSW5m
b3JtYXRpb25TZXR0aW5nLnZhbHVlOwotICAgIH0sCisgICAgfQogCi0gICAgX3RleHRFZGl0b3JG
b3JtYXR0aW5nRGlkQ2hhbmdlOiBmdW5jdGlvbihldmVudCkKKyAgICBfdGV4dEVkaXRvckZvcm1h
dHRpbmdEaWRDaGFuZ2UoZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLl9wcmV0dHlQcmludEJ1
dHRvbk5hdmlnYXRpb25JdGVtLmFjdGl2YXRlZCA9IHRoaXMuX3RleHRFZGl0b3IuZm9ybWF0dGVk
OwotICAgIH0sCisgICAgfQogCi0gICAgX3NvdXJjZUNvZGVDb250ZW50RGlkQ2hhbmdlOiBmdW5j
dGlvbihldmVudCkKKyAgICBfc291cmNlQ29kZUNvbnRlbnREaWRDaGFuZ2UoZXZlbnQpCiAgICAg
ewogICAgICAgICBpZiAodGhpcy5faWdub3JlU291cmNlQ29kZUNvbnRlbnREaWRDaGFuZ2VFdmVu
dCkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICB0aGlzLl90ZXh0RWRpdG9yLnN0cmlu
ZyA9IHRoaXMucmVzb3VyY2UuY3VycmVudFJldmlzaW9uLmNvbnRlbnQ7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBfdGV4dEVkaXRvckNvbnRlbnREaWRDaGFuZ2U6IGZ1bmN0aW9uKGV2ZW50KQorICAg
IF90ZXh0RWRpdG9yQ29udGVudERpZENoYW5nZShldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMu
X2lnbm9yZVNvdXJjZUNvZGVDb250ZW50RGlkQ2hhbmdlRXZlbnQgPSB0cnVlOwogICAgICAgICBX
ZWJJbnNwZWN0b3IuYnJhbmNoTWFuYWdlci5jdXJyZW50QnJhbmNoLnJldmlzaW9uRm9yUmVwcmVz
ZW50ZWRPYmplY3QodGhpcy5yZXNvdXJjZSkuY29udGVudCA9IHRoaXMuX3RleHRFZGl0b3Iuc3Ry
aW5nOwogICAgICAgICBkZWxldGUgdGhpcy5faWdub3JlU291cmNlQ29kZUNvbnRlbnREaWRDaGFu
Z2VFdmVudDsKLSAgICB9LAorICAgIH0KIAotICAgIF9leGVjdXRpb25MaW5lTnVtYmVyRGlkQ2hh
bmdlOiBmdW5jdGlvbihldmVudCkKKyAgICBfZXhlY3V0aW9uTGluZU51bWJlckRpZENoYW5nZShl
dmVudCkKICAgICB7CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYklu
c3BlY3Rvci5Db250ZW50Vmlldy5FdmVudC5TdXBwbGVtZW50YWxSZXByZXNlbnRlZE9iamVjdHNE
aWRDaGFuZ2UpOwotICAgIH0sCisgICAgfQogCi0gICAgX251bWJlck9mU2VhcmNoUmVzdWx0c0Rp
ZENoYW5nZTogZnVuY3Rpb24oZXZlbnQpCisgICAgX251bWJlck9mU2VhcmNoUmVzdWx0c0RpZENo
YW5nZShldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJz
KFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5FdmVudC5OdW1iZXJPZlNlYXJjaFJlc3VsdHNEaWRD
aGFuZ2UpOwotICAgIH0sCisgICAgfQogCi0gICAgX3Byb2JlU2V0c0NoYW5nZWQ6IGZ1bmN0aW9u
KGV2ZW50KQorICAgIF9wcm9iZVNldHNDaGFuZ2VkKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFy
IGJyZWFrcG9pbnQgPSBldmVudC5kYXRhLnByb2JlU2V0LmJyZWFrcG9pbnQ7CiAgICAgICAgIGlm
IChicmVha3BvaW50LnNvdXJjZUNvZGVMb2NhdGlvbi5zb3VyY2VDb2RlID09PSB0aGlzLnJlc291
cmNlKQogICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVj
dG9yLkNvbnRlbnRWaWV3LkV2ZW50LlN1cHBsZW1lbnRhbFJlcHJlc2VudGVkT2JqZWN0c0RpZENo
YW5nZSk7CiAgICAgfQogfTsKLQotV2ViSW5zcGVjdG9yLlRleHRSZXNvdXJjZUNvbnRlbnRWaWV3
LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuUmVzb3VyY2VDb250ZW50Vmlldy5w
cm90b3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9UaW1lbGluZVJlY29yZGluZ0NvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVSZWNvcmRpbmdDb250ZW50Vmlldy5q
cwppbmRleCBhMTZlNjljYzQyMjU5MmMxNDdkZDU2YWU2Y2RhMDNlYzExZDM0NTdmLi43ZWVhYjJh
MDNlMWYzZjIxZGI2MWQxOWNkNDM0ODBiNzcwNmIxZGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZVJlY29yZGluZ0NvbnRlbnRW
aWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Rp
bWVsaW5lUmVjb3JkaW5nQ29udGVudFZpZXcuanMKQEAgLTU3Myw3ICs1NzMsNyBAQCBXZWJJbnNw
ZWN0b3IuVGltZWxpbmVSZWNvcmRpbmdDb250ZW50VmlldyA9IGNsYXNzIFRpbWVsaW5lUmVjb3Jk
aW5nQ29udGVudFZpZXcgZQogICAgICAgICBjb25zb2xlLmFzc2VydCh0aW1lbGluZSBpbnN0YW5j
ZW9mIFdlYkluc3BlY3Rvci5UaW1lbGluZSwgdGltZWxpbmUpOwogICAgICAgICBjb25zb2xlLmFz
c2VydCghdGhpcy5fdGltZWxpbmVWaWV3TWFwLmhhcyh0aW1lbGluZSksIHRpbWVsaW5lKTsKIAot
ICAgICAgICB0aGlzLl90aW1lbGluZVZpZXdNYXAuc2V0KHRpbWVsaW5lLCBuZXcgV2ViSW5zcGVj
dG9yLkNvbnRlbnRWaWV3KHRpbWVsaW5lLCB7dGltZWxpbmVTaWRlYmFyUGFuZWw6IHRoaXMuX3Rp
bWVsaW5lU2lkZWJhclBhbmVsfSkpOworICAgICAgICB0aGlzLl90aW1lbGluZVZpZXdNYXAuc2V0
KHRpbWVsaW5lLCBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcuY3JlYXRlRnJvbVJlcHJlc2VudGVk
T2JqZWN0KHRpbWVsaW5lLCB7dGltZWxpbmVTaWRlYmFyUGFuZWw6IHRoaXMuX3RpbWVsaW5lU2lk
ZWJhclBhbmVsfSkpOwogICAgICAgICBpZiAodGltZWxpbmUudHlwZSA9PT0gV2ViSW5zcGVjdG9y
LlRpbWVsaW5lUmVjb3JkLlR5cGUuUmVuZGVyaW5nRnJhbWUpCiAgICAgICAgICAgICB0aGlzLl9y
ZW5kZXJpbmdGcmFtZVRpbWVsaW5lID0gdGltZWxpbmU7CiAK
</data>
<flag name="review"
          id="283405"
          type_id="1"
          status="+"
          setter="joepeck"
    />
          </attachment>
      

    </bug>

</bugzilla>