<?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>132875</bug_id>
          
          <creation_ts>2014-05-13 10:58:52 -0700</creation_ts>
          <short_desc>Web Inspector: support storing multiple timeline recordings in the manager</short_desc>
          <delta_ts>2014-08-07 23:43: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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brian Burg">burg</reporter>
          <assigned_to name="Brian Burg">burg</assigned_to>
          <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1009004</commentid>
    <comment_count>0</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-05-13 10:58:52 -0700</bug_when>
    <thetext>The inspector currently drops old recordings on the floor. We should instead have a set of them, and an &quot;active&quot; recording.

This allows us to import/export recordings, add UI to switch between them, etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1009005</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2014-05-13 10:59:36 -0700</bug_when>
    <thetext>&lt;rdar://problem/16900269&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1009031</commentid>
    <comment_count>2</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-05-13 11:58:51 -0700</bug_when>
    <thetext>I&apos;ve started prototyping this. We can add UI for switching between recordings later.

Some issues:

* If the TimelineContentView now represents TimelineRecording, then we need to create a new view for each recording. I am trying out creating a new recording whenever we would have done TimelineRecording.reset() before.

* We should save the selected timeline across resets (i.e., creating and displaying a new recording), but not across switching between views. Right?

* We shouldn&apos;t hold onto all timeline data forever. I think we could use a LRU cache with n=10 to support re-navigating in a drop-down select menu. I would probably want to land this separately with the UI that depends on it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1009032</commentid>
    <comment_count>3</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-05-13 12:04:48 -0700</bug_when>
    <thetext>Another thing I&apos;m unsure about is how to implement the path components so that viewing the overview shows:

Timelines &gt; www.example.com

and each timeline shows:

Timelines &gt; www.example.com &gt; Network Requests

and you can switch between the last &apos;n&apos; recordings by clicking on the www.example.com component.

If the TimelineContentView is supplying the path components but we switch out the TimelineContentView when another recording is selected via path components, will this work? Or, do we need some sort of persistent &quot;cluster&quot; view that provides path components for all recordings?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1009057</commentid>
    <comment_count>4</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2014-05-13 13:38:03 -0700</bug_when>
    <thetext>The Timelines sidebar can supply a base path. The view supplies a selection path (which is the selected timeline).

So the sidebar should be able to provide any path needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1009058</commentid>
    <comment_count>5</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2014-05-13 13:43:10 -0700</bug_when>
    <thetext>Actually right now the ContentBrowser builds the base path based on the TreeElement ancestors that matches the represented object. So to do this today, it would require a matching tree with the desired hierarchy. More delegate hooks could be added to change that requirement.

We do artificially create a &quot;Timelines&quot; tree element for the base of the path in TimelineSidebarPanel (_timelineOverviewTreeElement).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1009102</commentid>
    <comment_count>6</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-05-13 15:09:09 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Actually right now the ContentBrowser builds the base path based on the TreeElement ancestors that matches the represented object. So to do this today, it would require a matching tree with the desired hierarchy. More delegate hooks could be added to change that requirement.
&gt; 
&gt; We do artificially create a &quot;Timelines&quot; tree element for the base of the path in TimelineSidebarPanel (_timelineOverviewTreeElement).

So, what if we create a separate content tree outline for recordings that is never shown? We can proxy out attempts to select recording tree elements to the alternate drop-down-based UI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1009132</commentid>
    <comment_count>7</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2014-05-13 16:38:10 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; &gt; Actually right now the ContentBrowser builds the base path based on the TreeElement ancestors that matches the represented object. So to do this today, it would require a matching tree with the desired hierarchy. More delegate hooks could be added to change that requirement.
&gt; &gt; 
&gt; &gt; We do artificially create a &quot;Timelines&quot; tree element for the base of the path in TimelineSidebarPanel (_timelineOverviewTreeElement).
&gt; 
&gt; So, what if we create a separate content tree outline for recordings that is never shown? We can proxy out attempts to select recording tree elements to the alternate drop-down-based UI.

That is an option. It could also be a tree outline that is shown by sliding in and out like we talked about before.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1026843</commentid>
    <comment_count>8</comment_count>
      <attachid>236029</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-08-05 08:09:44 -0700</bug_when>
    <thetext>Created attachment 236029
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1026893</commentid>
    <comment_count>9</comment_count>
      <attachid>236029</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2014-08-05 11:24:14 -0700</bug_when>
    <thetext>Comment on attachment 236029
Patch

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

Screenshot?

&gt; Source/WebInspectorUI/UserInterface/Controllers/TimelineManager.js:40
&gt; +    function delayedWork() {

Newline before {.

&gt; Source/WebInspectorUI/UserInterface/Controllers/TimelineManager.js:102
&gt; +        var result = TimelineAgent.stop();

Why store result if we don&apos;t use it? Merge cruft when it was used to stop async?

&gt; Source/WebInspectorUI/UserInterface/Models/Timeline.js:31
&gt; +        // When instantiated directly, potentially return an instance of a concrete subclass.
&gt; +        if (type === WebInspector.TimelineRecord.Type.Network)
&gt; +            return new WebInspector.NetworkTimeline(type);

Nice!

&gt; Source/WebInspectorUI/UserInterface/Views/OverviewTimelineView.js:310
&gt; -        console.assert(!this._recording.sourceCodeTimelinesForSourceCode(resourceTimelineRecord.resource).length);
&gt; +        console.assert(!this.representedObject.sourceCodeTimelinesForSourceCode(resourceTimelineRecord.resource).length);

Even if recording is the representedObject, I still like having a var with a more descriptive name (like it was) to hint at the type of object. Just use recording.sourceCodeTimelinesForSourceCode here?

&gt; Source/WebInspectorUI/UserInterface/Views/TimelineContentView.js:36
&gt; +    for (var [identifier, timeline] of recording.timelines)
&gt; +        this._discreteTimelineOverviewGraphMap.set(timeline, new WebInspector.TimelineOverviewGraph(timeline));

Woot!

&gt; Source/WebInspectorUI/UserInterface/Views/TimelineContentView.js:53
&gt; +    for (var [identifier, timeline] of recording.timelines)
&gt; +        this._discreteTimelineViewMap.set(timeline, new WebInspector.TimelineView(timeline));

Yay!

&gt; Source/WebInspectorUI/UserInterface/Views/TimelineContentView.js:65
&gt; +    this._pathComponentMap.set(recording.timelines.get(WebInspector.TimelineRecord.Type.Network), createPathComponent.call(this, WebInspector.UIString(&quot;Network Requests&quot;), WebInspector.TimelineSidebarPanel.NetworkIconStyleClass, recording.timelines.get(WebInspector.TimelineRecord.Type.Network)));
&gt; +    this._pathComponentMap.set(recording.timelines.get(WebInspector.TimelineRecord.Type.Layout), createPathComponent.call(this, WebInspector.UIString(&quot;Layout &amp; Rendering&quot;), WebInspector.TimelineSidebarPanel.ColorsIconStyleClass, recording.timelines.get(WebInspector.TimelineRecord.Type.Layout)));
&gt; +    this._pathComponentMap.set(recording.timelines.get(WebInspector.TimelineRecord.Type.Script), createPathComponent.call(this, WebInspector.UIString(&quot;JavaScript &amp; Events&quot;), WebInspector.TimelineSidebarPanel.ScriptIconStyleClass, recording.timelines.get(WebInspector.TimelineRecord.Type.Script)));

These hit the Map two times each. Maybe store them in locals?

&gt; Source/WebInspectorUI/UserInterface/Views/TimelineContentView.js:110
&gt; +    showTimelineViewForTimeline: function(representedObject)

Why representedObject and not timeline?

&gt; Source/WebInspectorUI/UserInterface/Views/TimelineContentView.js:177
&gt; +    saveToCookie: function(cookie)

Yay!

&gt; Source/WebInspectorUI/UserInterface/Views/TimelineOverviewGraph.js:29
&gt; +    if (this.constructor === WebInspector.TimelineOverviewGraph) {
&gt; +        // When instantiated directly return an instance of a type-based concrete subclass.

This works well here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1026966</commentid>
    <comment_count>10</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-08-05 15:33:14 -0700</bug_when>
    <thetext>Committed r172094: &lt;http://trac.webkit.org/changeset/172094&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1027730</commentid>
    <comment_count>11</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-08-07 18:50:07 -0700</bug_when>
    <thetext>This patch is causing a number of issues with Timelines.

1. Uncaught exception
showTimelineViewForType called with an undefined type from restoreFromCookie. You mentioned this should fix that problem:

-        if (selectedTimelineViewIdentifier === WebInspector.TimelineSidebarPanel.OverviewTimelineIdentifierCookieValue)
+        if (!selectedTimelineViewIdentifier || selectedTimelineViewIdentifier === WebInspector.TimelineSidebarPanel.OverviewTimelineIdentifierCookieValue)

2. Timeline views showing up completely blank

- reload a page with the inspector open =&gt; overview/specific views are blank
- make new selections in the timeline =&gt; views are still blank
- switch recordings =&gt; causes things to work, but you have to make a new time selection

I don&apos;t quite understand the issues for #2. I wonder if we should roll this out while it is investigated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1027795</commentid>
    <comment_count>12</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-08-07 23:43:48 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; This patch is causing a number of issues with Timelines.
&gt; 
&gt; 1. Uncaught exception
&gt; showTimelineViewForType called with an undefined type from restoreFromCookie. You mentioned this should fix that problem:
&gt; 
&gt; -        if (selectedTimelineViewIdentifier === WebInspector.TimelineSidebarPanel.OverviewTimelineIdentifierCookieValue)
&gt; +        if (!selectedTimelineViewIdentifier || selectedTimelineViewIdentifier === WebInspector.TimelineSidebarPanel.OverviewTimelineIdentifierCookieValue)
&gt; 
&gt; 2. Timeline views showing up completely blank
&gt; 
&gt; - reload a page with the inspector open =&gt; overview/specific views are blank
&gt; - make new selections in the timeline =&gt; views are still blank
&gt; - switch recordings =&gt; causes things to work, but you have to make a new time selection
&gt; 
&gt; I don&apos;t quite understand the issues for #2. I wonder if we should roll this out while it is investigated.

Opened https://bugs.webkit.org/show_bug.cgi?id=135742 to track a fix.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>236029</attachid>
            <date>2014-08-05 08:09:44 -0700</date>
            <delta_ts>2014-08-05 11:24:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-132875-20140805080916.patch</filename>
            <type>text/plain</type>
            <size>62537</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTcyMDI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCBh
ZmM4ZDQwMjZjMGQ5MjYxNWUwYzdjMTMwNDYzNmJkOGE1NDkwODMxLi5iMmNmNDA0YWRlMWEwZjI1
NDZmNTNiNmVmNzBlNGM5YzU5MGJjOTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMzQgQEAKKzIwMTQtMDgtMDQgIEJyaWFuIEouIEJ1cmcgIDxidXJnQGNzLndhc2hpbmd0
b24uZWR1PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IHN1cHBvcnQgc3RvcmluZyBtdWx0aXBs
ZSB0aW1lbGluZSByZWNvcmRpbmdzIGluIHRoZSBtYW5hZ2VyCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzI4NzUKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3Ig
Y2FwdHVyaW5nIG11bHRpcGxlIHRpbWVsaW5lIHJlY29yZGluZ3MgYW5kIHN3aXRjaGluZworICAg
ICAgICBiZXR3ZWVuIHRoZW0gaW4gdGhlIHVzZXIgaW50ZXJmYWNlIHVzaW5nIGhpZXJhcmNoaWNh
bCBwYXRoIGNvbXBvbmVudHMuCisKKyAgICAgICAgKiBMb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xv
Y2FsaXplZFN0cmluZ3MuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9CYXNlL01haW4uanM6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuY29udGVudExvYWRlZCk6IFJlbW92ZSBoYXJkLWNvZGVk
IHByaW1pbmcgb2YgdGhlIHRpbWVsaW5lIHNpZGViYXIgcGFuZWwuCisgICAgICAgIEluc3RlYWQs
IGxvYWQgdGhlIGZpcnN0IHJlY29yZGluZyBpbiB0aGUgdGltZWxpbmUgbWFuYWdlciBhZnRlciB0
aGUgaW5pdGlhbCBsb2FkLgorCisgICAgICAgIChXZWJJbnNwZWN0b3IuX3JldmVhbEFuZFNlbGVj
dFJlcHJlc2VudGVkT2JqZWN0SW5OYXZpZ2F0aW9uU2lkZWJhcik6IERvbid0IHN1cHByZXNzCisg
ICAgICAgIG9uc2VsZWN0IGV2ZW50cyB3aGVuIHNlbGVjdGluZyB0aGUgdHJlZSBlbGVtZW50IGZv
ciBhIG5ld2x5IHNob3duIGNvbnRlbnQgdmlldy4gVGhpcworICAgICAgICBhbGxvd3MgdGhlIHNp
ZGViYXIgdG8gc3luYyB0aGUgY3VycmVudCBjb250ZW50IHZpZXcgYW5kIHRpbWVsaW5lIHRyZWUg
ZWxlbWVudCBzZWxlY3Rpb24KKyAgICAgICAgd2l0aCB3aGF0IGlzIGRpc3BsYXllZCBpbiB0aGUg
Y29udGVudCBicm93c2VyLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9Db250cm9sbGVycy9U
aW1lbGluZU1hbmFnZXIuanM6IEFkZCB0d28gbmV3IGV2ZW50cywgUmVjb3JkaW5nQ3JlYXRlZCBh
bmQKKyAgICAgICAgUmVjb3JkaW5nTG9hZGVkLiBBIHJlY29yZGluZyBpcyBjb25zaWRlcmVkIGFj
dGl2ZSB3aGVuIGFueSBuZXcgcmVjb3JkcyByZWNpZXZlZCB3aWxsIGJlCisgICAgICAgIGFwcGVu
ZGVkIHRvIHRoYXQgcmVjb3JkaW5nLiBUaGUgdXNlciBpbnRlcmZhY2UgaXMgbm90IG5lY2Vzc2Fy
aWx5IHZpZXdpbmcgdGhlIGFjdGl2ZQorICAgICAgICByZWNvcmRpbmcuCisKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5UaW1lbGluZU1hbmFnZXIuZGVsYXllZFdvcmspOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlRpbWVsaW5lTWFuYWdlcik6IEtlZXAgYSBsaXN0IG9mIHJlY29yZGluZ3MsIGFuZCBs
b2FkIHRoZSBmaXJzdCByZWNvcmRpbmcKKyAgICAgICAgYXN5bmNocm9ub3VzbHkgc28gdGhhdCBl
dmVyeW9uZSBjYW4gYWRkIGFuIGV2ZW50IGxpc3RlbmVyIGZvciBpdC4KKworICAgICAgICAoV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lTWFuYWdlci5wcm90b3R5cGUuZ2V0IGFjdGl2ZVJlY29yZGluZyk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVNYW5hZ2VyLnByb3RvdHlwZS5nZXQgcmVj
b3JkaW5ncyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVNYW5hZ2VyLnByb3RvdHlw
ZS5zdGFydENhcHR1cmluZyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVNYW5hZ2Vy
LnByb3RvdHlwZS5zdG9wQ2FwdHVyaW5nKTogVXNlIHByb21pc2VzIHRvIG1ha2UgdGhlIGlPUyA3
CisgICAgICAgIGZhbGxiYWNrIHBhdGggYmV0dGVyIG1hdGNoIHRoZSBhc3luYyBzZW1hbnRpY3Mg
b2YgdGhlIG5vbi1mYWxsYmFjayBwYXRoLgorCisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxp
bmVNYW5hZ2VyLnByb3RvdHlwZS51bmxvYWRSZWNvcmRpbmcpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlRpbWVsaW5lTWFuYWdlci5wcm90b3R5cGUuX2xvYWROZXdSZWNvcmRpbmcpOiBTdG9wIGNh
cHR1cmluZyBhbmQgdW5sb2FkCisgICAgICAgIGFueSBleGlzdGluZyByZWNvcmRpbmcgYmVmb3Jl
IGNyZWF0aW5nIGFuZCBsb2FkaW5nIGEgbmV3IHJlY29yZGluZy4KKworICAgICAgICAoV2ViSW5z
cGVjdG9yLlRpbWVsaW5lTWFuYWdlci5wcm90b3R5cGUuX3N0YXJ0QXV0b0NhcHR1cmluZyk6IENy
ZWF0ZSBhIG5ldyByZWNvcmRpbmcKKyAgICAgICAgcmF0aGVyIHRoYW4gcmVzZXR0aW5nIHRoZSBj
dXJyZW50IHJlY29yZGluZy4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTW9kZWxzL05ldHdv
cmtUaW1lbGluZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrVGltZWxpbmUpOgor
ICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTW9kZWxzL1RpbWVsaW5lLmpzOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZS5wcm90
b3R5cGUuZ2V0IHR5cGUpOiBFYWNoIHRpbWVsaW5lIHN0b3JlcyBpdHMgVGltZWxpbmVSZWNvcmQu
VHlwZQorICAgICAgICBzbyB0aGF0IG90aGVyIGNvZGUgY2FuIGNyZWF0ZSB0eXBlLXNwZWNpZmlj
IHZpZXdzIHVzaW5nIHRoZSBUaW1lbGluZSBhcyBhIHJlcHJlc2VudGVkT2JqZWN0LgorCisgICAg
ICAgICogVXNlckludGVyZmFjZS9Nb2RlbHMvVGltZWxpbmVSZWNvcmRpbmcuanM6IEZvciBlYWNo
IHJlY29yZGluZywgYWRkIG5ldyBzdGF0ZSBmb3IgYSB1bmlxdWUgaWRlbnRpZmllciwKKyAgICAg
ICAgZGlzcGxheSBzdHJpbmcsIGFuZCBhbiBpc1dyaXRhYmxlIGZsYWcuIE9uY2UgYSByZWNvcmRp
bmcgaXMgdW5sb2FkZWQsIGl0IGJlY29tZXMgcmVhZC1vbmx5LgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlRpbWVsaW5lUmVjb3JkaW5nLnByb3RvdHlwZS5nZXQgZGlzcGxheU5hbWUpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkaW5nLnByb3RvdHlwZS5nZXQgaWRlbnRpZmll
cik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRpbmcucHJvdG90eXBlLmlz
V3JpdGFibGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkaW5nLnByb3Rv
dHlwZS51bmxvYWRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRpbmcu
cHJvdG90eXBlLnJlc2V0KTogQSByZWNvcmRpbmcgY2FuIG9ubHkgYmUgcmVzZXQgaWYgaXQgaXMg
d3JpdGFibGUuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Byb3RvY29sL0luc3BlY3RvckZy
b250ZW5kQVBJLmpzOgorICAgICAgICAoSW5zcGVjdG9yRnJvbnRlbmRBUEkuc2V0VGltZWxpbmVQ
cm9maWxpbmdFbmFibGVkKTogRG9uJ3QgbWFrZSByZWR1bmRhbnQgc3RhcnQvc3RvcCBjYXB0dXJp
bmcgY2FsbHMuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0xheW91dFRpbWVsaW5l
T3ZlcnZpZXdHcmFwaC5qczogVXNlIGEgdGltZWxpbmUgYXMgdGhlIHJlcHJlc2VudGVkT2JqZWN0
IGZvciBhbGwKKyAgICAgICAgdGltZWxpbmUtc3BlY2lmaWMgZ3JhcGhzIGFuZCB2aWV3cy4gT3Ro
ZXJ3aXNlLCB1c2UgdGhlIHJlY29yZGluZy4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5MYXlvdXRU
aW1lbGluZU92ZXJ2aWV3R3JhcGgpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvTGF5
b3V0VGltZWxpbmVWaWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkxheW91dFRpbWVsaW5l
Vmlldyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTGF5b3V0VGltZWxpbmVWaWV3LnByb3RvdHlw
ZS5fdHJlZUVsZW1lbnRTZWxlY3RlZCk6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9O
ZXR3b3JrVGltZWxpbmVPdmVydmlld0dyYXBoLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5l
dHdvcmtUaW1lbGluZU92ZXJ2aWV3R3JhcGgpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmll
d3MvTmV0d29ya1RpbWVsaW5lVmlldy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3Jr
VGltZWxpbmVWaWV3KToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL092ZXJ2aWV3VGlt
ZWxpbmVWaWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk92ZXJ2aWV3VGltZWxpbmVWaWV3
LnByb3RvdHlwZS5fbmV0d29ya1RpbWVsaW5lUmVjb3JkQWRkZWQpOgorICAgICAgICAqIFVzZXJJ
bnRlcmZhY2UvVmlld3MvU2NyaXB0VGltZWxpbmVPdmVydmlld0dyYXBoLmpzOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlNjcmlwdFRpbWVsaW5lT3ZlcnZpZXdHcmFwaCk6CisgICAgICAgICogVXNl
ckludGVyZmFjZS9WaWV3cy9TY3JpcHRUaW1lbGluZVZpZXcuanM6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuU2NyaXB0VGltZWxpbmVWaWV3KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRU
aW1lbGluZVZpZXcucHJvdG90eXBlLl90cmVlRWxlbWVudFNlbGVjdGVkKToKKworICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVDb250ZW50Vmlldy5qczogSXRlcmF0ZSBvdmVy
IHRpbWVsaW5lIG9iamVjdHMgd2hlbiBzZXR0aW5nIHVwIG1hcHMuIFVzZSB0aW1lbGluZXMKKyAg
ICAgICAgYXMga2V5cyByYXRoZXIgdGhhbiB0aGVpciB0eXBlIGlkZW50aWZpZXJzLgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lQ29udGVudFZpZXcucHJvdG90eXBlLnNob3dUaW1lbGlu
ZVZpZXdGb3JUaW1lbGluZSk6IFJlbmFtZWQgZnJvbSBzaG93VGltZWxpbmVWaWV3LiBUaGlzCisg
ICAgICAgIGZ1bmN0aW9uIHRha2VzIGEgVGltZWxpbmUgaW5zdGFuY2UgcmF0aGVyIHRoYW4gYW4g
aWRlbnRpZmllciwgc2luY2UgdGhlIGNvbnRlbiB2aWV3IGlzIHNwZWNpZmljIHRvIG9uZSByZWNv
cmRpbmcuCisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVDb250ZW50Vmlldy5wcm90b3R5
cGUuZ2V0IHNlbGVjdGlvblBhdGhDb21wb25lbnRzKTogTWF0Y2ggdHlwZXMgYWdhaW5zdCB0aGUg
Y3VycmVudGx5CisgICAgICAgIHZpc2libGUgdGltZWxpbmUncyByZXByZXNlbnRlZE9iamVjdC4K
KyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5nZXQg
Y3VycmVudFRpbWVsaW5lVmlldyk6IFVzZWQgYnkgdGhlIHNpZGViYXIgcGFuZWwgdG8gc3luYyB0
aW1lbGluZQorICAgICAgICB0cmVlIGVsZW1lbnQgc2VsZWN0aW9ucyB0byBUaW1lbGluZVZpZXcg
c2hvd24gYnkgdGhlIFRpbWVsaW5lQ29udGVudFZpZXcuCisgICAgICAgIChXZWJJbnNwZWN0b3Iu
VGltZWxpbmVDb250ZW50Vmlldy5wcm90b3R5cGUuc2hvd24pOiBTeW5jIGVuYWJsZW1lbnQgb2Yg
dGhlICJDbGVhciBUaW1lbGluZXMiIGJ1dHRvbiB0byByZWNvcmRpbmcKKyAgICAgICAgcmVhZC1v
bmx5IHN0YXRlLgorCisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVDb250ZW50Vmlldy5w
cm90b3R5cGUuc2F2ZVRvQ29va2llKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZUNv
bnRlbnRWaWV3LnByb3RvdHlwZS5yZXN0b3JlRnJvbUNvb2tpZSk6IEFkZGVkLiBPbmx5IGhhbmRs
ZSBzYXZpbmcvcmVzdG9yaW5nIHRoZSBzdWJ2aWV3LgorCisgICAgICAgIChXZWJJbnNwZWN0b3Iu
VGltZWxpbmVDb250ZW50Vmlldy5wcm90b3R5cGUuX3BhdGhDb21wb25lbnRTZWxlY3RlZCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVDb250ZW50Vmlldy5wcm90b3R5cGUuX3Nob3dU
aW1lbGluZVZpZXcpOiBSZWxheCB0aGUgZWFybHkgcmV0dXJuIHNvIHRoYXQgdGltZWxpbmUgdmll
d3MKKyAgICAgICAgYW5kIGNvbnRlbnQgdHJlZSBvdXRsaW5lcyBhcmUgcmVhdHRhY2hlZCB3aGVu
IHJlLW5hdmlnYXRpbmcgdG8gdGhlIHNhbWUgdGltZWxpbmUgdmlldyB2aWEgYmFjay1mb3J3YXJk
IGVudHJpZXMuCisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVDb250ZW50Vmlldy5wcm90
b3R5cGUuc2hvd1RpbWVsaW5lVmlldyk6IERlbGV0ZWQuCisKKyAgICAgICAgKiBVc2VySW50ZXJm
YWNlL1ZpZXdzL1RpbWVsaW5lT3ZlcnZpZXdHcmFwaC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5UaW1lbGluZU92ZXJ2aWV3R3JhcGgpOgorCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3
cy9UaW1lbGluZVNpZGViYXJQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGlu
ZVNpZGViYXJQYW5lbCk6IEtlZXAgYSB0cmVlIG91dGxpbmUgYW5kIHRyZWUgZWxlbWVudCBtYXAg
Zm9yIHN0b3JpbmcgYXZhaWxhYmxlIHJlY29yZGluZ3MuCisgICAgICAgIChXZWJJbnNwZWN0b3Iu
VGltZWxpbmVTaWRlYmFyUGFuZWwuY3JlYXRlVGltZWxpbmVUcmVlRWxlbWVudCk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwucHJvdG90eXBlLnNob3duKTogQWRk
ZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwucHJvdG90eXBl
LnNob3dEZWZhdWx0Q29udGVudFZpZXcpOiBBZGQgYSBndWFyZC4KKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5wcm90b3R5cGUuZ2V0IGhhc1NlbGVjdGVkRWxlbWVu
dCk6IEFkZGVkLiBTZWxlY3RlZCByZWNvcmRpbmcgdHJlZSBlbGVtZW50cworICAgICAgICBzaG91
bGQgYmUgY29uc2lkZXJlZCB3aGVuIGRlY2lkaW5nIHdoZXRoZXIgYSByZXByZXNlbnRlZCBvYmpl
Y3QgaGFzIGJlZW4gc2VsZWN0ZWQgaW4gdGhlIHNpZGViYXIgcGFuZWwuCisKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5wcm90b3R5cGUudHJlZUVsZW1lbnRGb3JS
ZXByZXNlbnRlZE9iamVjdC5sb29zZWx5Q29tcGFyZVJlcHJlc2VudGVkT2JqZWN0cyk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwucHJvdG90eXBlLnRyZWVFbGVt
ZW50Rm9yUmVwcmVzZW50ZWRPYmplY3QuZ2V0IGlmKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5U
aW1lbGluZVNpZGViYXJQYW5lbC5wcm90b3R5cGUudHJlZUVsZW1lbnRGb3JSZXByZXNlbnRlZE9i
amVjdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwucHJvdG90
eXBlLnNob3dUaW1lbGluZU92ZXJ2aWV3KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGlu
ZVNpZGViYXJQYW5lbC5wcm90b3R5cGUuc2hvd1RpbWVsaW5lVmlld0ZvclR5cGUpOiBSZW5hbWVk
IHRvIGV4cGxpY2l0IHRha2UgYSB0eXBlIGlkZW50aWZpZXIuCisgICAgICAgIERlbGVnYXRlIHRo
ZSBhY3R1YWwgc2hvd2luZyBvZiB0aGUgdGltZWxpbmUgdmlldyB0byB0aGUgb25zZWxlY3QgaGFu
ZGxlciBmb3IgdGhlIHRpbWVsaW5lcyB0cmVlIG91dGxpbmUuCisKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5wcm90b3R5cGUubWF0Y2hUcmVlRWxlbWVudEFnYWlu
c3RDdXN0b21GaWx0ZXJzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQ
YW5lbC5wcm90b3R5cGUuc2F2ZVN0YXRlVG9Db29raWUpOiBGaXggYSB0eXBvLgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsLnByb3RvdHlwZS5yZXN0b3JlU3RhdGVG
cm9tQ29va2llKTogRml4IGEgdHlwby4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVNp
ZGViYXJQYW5lbC5wcm90b3R5cGUuX3JlY29yZGluZ3NUcmVlRWxlbWVudFNlbGVjdGVkKTogU3lu
YyB0aGUgY3VycmVudGx5IGRpc3BsYXllZAorICAgICAgICByZWNvcmRpbmcgb2JqZWN0IGFuZCBj
b250ZW50IHZpZXcsIGFuZCBzeW5jIHRoZSBzZWxlY3RlZCB0cmVlIGVsZW1lbnQgdG8gdGhlIGRp
c3BsYXllZCB0aW1lbGluZSBzdWJ2aWV3LgorCisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxp
bmVTaWRlYmFyUGFuZWwucHJvdG90eXBlLl90aW1lbGluZXNUcmVlRWxlbWVudFNlbGVjdGVkKTog
SWYgdGhpcyBpcyBhIHVzZXIgYWN0aW9uLCBzaG93IHRoZSB0aW1lbGluZS4KKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5wcm90b3R5cGUuX2NvbnRlbnRCcm93c2Vy
Q3VycmVudENvbnRlbnRWaWV3RGlkQ2hhbmdlKTogVXNlIGNsYXNzTGlzdC50b2dnbGUoKS4KKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5wcm90b3R5cGUuX3JlY29y
ZGluZ0NyZWF0ZWQpOiBEeW5hbWljYWxseSBhZGQgbmV3IHJlY29yZGluZ3MgdG8gdGhlIGludGVy
ZmFjZS4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5wcm90b3R5
cGUuX3JlY29yZGluZ0xvYWRlZCk6IEF1dG9tYXRpY2FsbHkgc2hvdyByZWNvcmRpbmdzIHdoZW4g
dGhleSBhcmUgbG9hZGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJhclBh
bmVsLnByb3RvdHlwZS5fcmVjb3JkR2x5cGhDbGlja2VkKTogU2hpZnQrY2xpY2sgd2lsbCBmb3Jj
ZS1jcmVhdGUgYSBuZXcgcmVjb3JkaW5nLgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5l
U2lkZWJhclBhbmVsLnByb3RvdHlwZS5pbml0aWFsaXplKTogRGVsZXRlZC4KKyAgICAgICAgKiBV
c2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lVmlldy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5UaW1lbGluZVZpZXcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lVmlldy5wcm90
b3R5cGUuZ2V0IHJlcHJlc2VudGVkT2JqZWN0KToKKwogMjAxNC0wOC0wMSAgSm9uYXRoYW4gV2Vs
bHMgIDxqb25vd2VsbHNAYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFRpbWVs
aW5lIGhlYWRlciBoZWlnaHQgZG9lc24ndCBtYXRjaCBzdHlsZSB1cGRhdGVzLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL0xvY2FsaXphdGlvbnMvZW4ubHByb2ovbG9jYWxpemVk
U3RyaW5ncy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Mb2NhbGl6YXRpb25zL2VuLmxwcm9q
L2xvY2FsaXplZFN0cmluZ3MuanMKaW5kZXggMjE0N2U4YTA1NDU4YmE5MjQ1NTVjYTI2MmY3NjA2
YjE3NTA5Mzg3ZS4uNWU0M2Y0YWIyMGUzMzk4Y2JjODI1YTVjNzg3MzNkZDM2NjVjYmZkMiAxMDA2
NDQKR0lUIGJpbmFyeSBwYXRjaApkZWx0YSA3MAp6Y21kbkRpdXVIOTxfKWFKQl40Tmc3KlpMTThT
KXY1NypaSEE4UylzPzg1OV4pOEIhKU1JM19RTUF2WmEkJTVidigKTWFnTlBAazImJUkwS0lKI3dF
ekdCCgpkZWx0YSAxNApXY21YQEhudDkoVTxfKWFKSH1AYTY8TzJYVG1qPG8/CgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpzCmluZGV4IDJkNTBi
NzM0YTc3NGJmNDU3NjQ3MGU1NWYxMGMwODg3NTk3MjBjNTQuLjUzZmJlOWJlMDA1ZjM4OTRkZjY1
ZWQyYWY5ZDRjYTNhYmIxNTk1MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL0Jhc2UvTWFpbi5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9CYXNlL01haW4uanMKQEAgLTI1Nyw4ICsyNTcsNiBAQCBXZWJJbnNwZWN0b3Iu
Y29udGVudExvYWRlZCA9IGZ1bmN0aW9uKCkKICAgICB0aGlzLnRpbWVsaW5lU2lkZWJhclBhbmVs
ID0gbmV3IFdlYkluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbDsKICAgICB0aGlzLmRlYnVn
Z2VyU2lkZWJhclBhbmVsID0gbmV3IFdlYkluc3BlY3Rvci5EZWJ1Z2dlclNpZGViYXJQYW5lbDsK
IAotICAgIHRoaXMudGltZWxpbmVTaWRlYmFyUGFuZWwuaW5pdGlhbGl6ZSgpOwotCiAgICAgdGhp
cy5uYXZpZ2F0aW9uU2lkZWJhci5hZGRTaWRlYmFyUGFuZWwodGhpcy5yZXNvdXJjZVNpZGViYXJQ
YW5lbCk7CiAgICAgLy8gRklYTUU6IEVuYWJsZSB0aW1lbGluZXMgcGFuZWwgZm9yIEphdmFTY3Jp
cHQgaW5zcGVjdGlvbi4KICAgICBpZiAodGhpcy5kZWJ1Z2dhYmxlVHlwZSAhPT0gV2ViSW5zcGVj
dG9yLkRlYnVnZ2FibGVUeXBlLkphdmFTY3JpcHQpCkBAIC05MTEsNyArOTA5LDcgQEAgV2ViSW5z
cGVjdG9yLl9yZXZlYWxBbmRTZWxlY3RSZXByZXNlbnRlZE9iamVjdEluTmF2aWdhdGlvblNpZGVi
YXIgPSBmdW5jdGlvbihyZXAKICAgICB2YXIgdHJlZUVsZW1lbnQgPSBzZWxlY3RlZFNpZGViYXJQ
YW5lbC50cmVlRWxlbWVudEZvclJlcHJlc2VudGVkT2JqZWN0KHJlcHJlc2VudGVkT2JqZWN0KTsK
IAogICAgIGlmICh0cmVlRWxlbWVudCkKLSAgICAgICAgdHJlZUVsZW1lbnQucmV2ZWFsQW5kU2Vs
ZWN0KHRydWUsIGZhbHNlLCB0cnVlLCB0cnVlKTsKKyAgICAgICAgdHJlZUVsZW1lbnQucmV2ZWFs
QW5kU2VsZWN0KHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSk7CiAgICAgZWxzZSBpZiAoc2VsZWN0
ZWRTaWRlYmFyUGFuZWwuY29udGVudFRyZWVPdXRsaW5lLnNlbGVjdGVkVHJlZUVsZW1lbnQpCiAg
ICAgICAgIHNlbGVjdGVkU2lkZWJhclBhbmVsLmNvbnRlbnRUcmVlT3V0bGluZS5zZWxlY3RlZFRy
ZWVFbGVtZW50LmRlc2VsZWN0KHRydWUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9UaW1lbGluZU1hbmFnZXIuanMgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9UaW1lbGluZU1hbmFn
ZXIuanMKaW5kZXggODJjNWQ2NGM2ZmEwMTQwMWM0Nzg1NWFjMTc2MWY2MDQ4NTAxMzg4Zi4uYTll
Njk0OWM0NTk5ZTNjMGQyNmRkMWJmNDNkN2U4MzE4NDc4ZWU3OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvVGltZWxpbmVNYW5hZ2Vy
LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJz
L1RpbWVsaW5lTWFuYWdlci5qcwpAQCAtMzEsMTEgKzMxLDIzIEBAIFdlYkluc3BlY3Rvci5UaW1l
bGluZU1hbmFnZXIgPSBmdW5jdGlvbigpCiAgICAgV2ViSW5zcGVjdG9yLkZyYW1lLmFkZEV2ZW50
TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkZyYW1lLkV2ZW50Lk1haW5SZXNvdXJjZURpZENoYW5nZSwg
dGhpcy5fbWFpblJlc291cmNlRGlkQ2hhbmdlLCB0aGlzKTsKICAgICBXZWJJbnNwZWN0b3IuRnJh
bWUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRnJhbWUuRXZlbnQuUmVzb3VyY2VXYXNB
ZGRlZCwgdGhpcy5fcmVzb3VyY2VXYXNBZGRlZCwgdGhpcyk7CiAKLSAgICB0aGlzLl9hY3RpdmVS
ZWNvcmRpbmcgPSBuZXcgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkaW5nOworICAgIHRoaXMu
X3JlY29yZGluZ3MgPSBbXTsKKyAgICB0aGlzLl9hY3RpdmVSZWNvcmRpbmcgPSBudWxsOwogICAg
IHRoaXMuX2lzQ2FwdHVyaW5nID0gZmFsc2U7CisKKyAgICB0aGlzLl9uZXh0UmVjb3JkaW5nSWRl
bnRpZmllciA9IDE7CisKKyAgICBmdW5jdGlvbiBkZWxheWVkV29yaygpIHsKKyAgICAgICAgdGhp
cy5fbG9hZE5ld1JlY29yZGluZygpOworICAgIH0KKworICAgIC8vIEFsbG93IG90aGVyIGNvZGUg
dG8gc2V0IHVwIGxpc3RlbmVycyBiZWZvcmUgZmlyaW5nIHRoZSBpbml0aWFsIFJlY29yZGluZ0xv
YWRlZCBldmVudC4KKyAgICBzZXRUaW1lb3V0KGRlbGF5ZWRXb3JrLmJpbmQodGhpcyksIDApOwog
fTsKIAogV2ViSW5zcGVjdG9yLlRpbWVsaW5lTWFuYWdlci5FdmVudCA9IHsKKyAgICBSZWNvcmRp
bmdDcmVhdGVkOiAidGltZWxpbmUtbWFuYWdlci1yZWNvcmRpbmctY3JlYXRlZCIsCisgICAgUmVj
b3JkaW5nTG9hZGVkOiAidGltZWxpbmUtbWFuYWdlci1yZWNvcmRpbmctbG9hZGVkIiwKICAgICBD
YXB0dXJpbmdTdGFydGVkOiAidGltZWxpbmUtbWFuYWdlci1jYXB0dXJpbmctc3RhcnRlZCIsCiAg
ICAgQ2FwdHVyaW5nU3RvcHBlZDogInRpbWVsaW5lLW1hbmFnZXItY2FwdHVyaW5nLXN0b3BwZWQi
CiB9OwpAQCAtNDksMzQgKzYxLDY1IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZU1hbmFnZXIucHJv
dG90eXBlID0gewogCiAgICAgLy8gUHVibGljCiAKKyAgICAvLyBUaGUgY3VycmVudCByZWNvcmRp
bmcgdGhhdCBuZXcgdGltZWxpbmUgcmVjb3JkcyB3aWxsIGJlIGFwcGVuZGVkIHRvLCBpZiBhbnku
CiAgICAgZ2V0IGFjdGl2ZVJlY29yZGluZygpCiAgICAgeworICAgICAgICBjb25zb2xlLmFzc2Vy
dCh0aGlzLl9hY3RpdmVSZWNvcmRpbmcgfHwgIXRoaXMuX2lzQ2FwdHVyaW5nKTsKICAgICAgICAg
cmV0dXJuIHRoaXMuX2FjdGl2ZVJlY29yZGluZzsKICAgICB9LAogCisgICAgZ2V0IHJlY29yZGlu
Z3MoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3JlY29yZGluZ3Muc2xpY2UoKTsKKyAg
ICB9LAorCiAgICAgaXNDYXB0dXJpbmc6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHJldHVy
biB0aGlzLl9pc0NhcHR1cmluZzsKICAgICB9LAogCi0gICAgc3RhcnRDYXB0dXJpbmc6IGZ1bmN0
aW9uKCkKKyAgICBzdGFydENhcHR1cmluZzogZnVuY3Rpb24oc2hvdWxkQ3JlYXRlUmVjb3JkaW5n
KQogICAgIHsKLSAgICAgICAgVGltZWxpbmVBZ2VudC5zdGFydCgpOworICAgICAgICBjb25zb2xl
LmFzc2VydCghdGhpcy5faXNDYXB0dXJpbmcsICJUaW1lbGluZU1hbmFnZXIgaXMgYWxyZWFkeSBj
YXB0dXJpbmcuIik7CisKKyAgICAgICAgaWYgKCF0aGlzLl9hY3RpdmVSZWNvcmRpbmcgfHwgc2hv
dWxkQ3JlYXRlUmVjb3JkaW5nKQorICAgICAgICAgICAgdGhpcy5fbG9hZE5ld1JlY29yZGluZygp
OworCisgICAgICAgIHZhciByZXN1bHQgPSBUaW1lbGluZUFnZW50LnN0YXJ0LnByb21pc2UoKTsK
IAogICAgICAgICAvLyBDT01QQVRJQklMSVRZIChpT1MgNyk6IHJlY29yZGluZ1N0YXJ0ZWQgZXZl
bnQgZGlkIG5vdCBleGlzdCB5ZXQuIFN0YXJ0IGV4cGxpY2l0bHkuCi0gICAgICAgIGlmICghVGlt
ZWxpbmVBZ2VudC5oYXNFdmVudCgicmVjb3JkaW5nU3RhcnRlZCIpKQotICAgICAgICAgICAgdGhp
cy5jYXB0dXJpbmdTdGFydGVkKCk7CisgICAgICAgIGlmICghVGltZWxpbmVBZ2VudC5oYXNFdmVu
dCgicmVjb3JkaW5nU3RhcnRlZCIpKSB7CisgICAgICAgICAgICByZXN1bHQudGhlbihmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IudGltZWxpbmVNYW5hZ2VyLmNhcHR1
cmluZ1N0YXJ0ZWQoKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CiAgICAgfSwKIAogICAg
IHN0b3BDYXB0dXJpbmc6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIFRpbWVsaW5lQWdlbnQu
c3RvcCgpOworICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9pc0NhcHR1cmluZywgIlRpbWVs
aW5lTWFuYWdlciBpcyBub3QgY2FwdHVyaW5nLiIpOworCisgICAgICAgIHZhciByZXN1bHQgPSBU
aW1lbGluZUFnZW50LnN0b3AoKTsKIAogICAgICAgICAvLyBOT1RFOiBBbHdheXMgc3RvcCBpbW1l
ZGlhdGVseSBpbnN0ZWFkIG9mIHdhaXRpbmcgZm9yIGEgVGltZWxpbmUucmVjb3JkaW5nU3RvcHBl
ZCBldmVudC4KICAgICAgICAgLy8gVGhpcyB3YXkgdGhlIFVJIGZlZWxzIGFzIHJlc3BvbnNpdmUg
dG8gYSBzdG9wIGFzIHBvc3NpYmxlLgogICAgICAgICB0aGlzLmNhcHR1cmluZ1N0b3BwZWQoKTsK
ICAgICB9LAogCisgICAgdW5sb2FkUmVjb3JkaW5nOiBmdW5jdGlvbigpCisgICAgeworICAgICAg
ICBpZiAoIXRoaXMuX2FjdGl2ZVJlY29yZGluZykKKyAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICBpZiAodGhpcy5faXNDYXB0dXJpbmcpCisgICAgICAgICAgICB0aGlzLnN0b3BDYXB0dXJp
bmcoKTsKKworICAgICAgICB0aGlzLl9hY3RpdmVSZWNvcmRpbmcudW5sb2FkZWQoKTsKKyAgICAg
ICAgdGhpcy5fYWN0aXZlUmVjb3JkaW5nID0gbnVsbDsKKyAgICB9LAorCisgICAgLy8gUHJvdGVj
dGVkCisKICAgICBjYXB0dXJpbmdTdGFydGVkOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICBp
ZiAodGhpcy5faXNDYXB0dXJpbmcpCkBAIC0zNTIsNiArMzk1LDI2IEBAIFdlYkluc3BlY3Rvci5U
aW1lbGluZU1hbmFnZXIucHJvdG90eXBlID0gewogCiAgICAgLy8gUHJpdmF0ZQogCisgICAgX2xv
YWROZXdSZWNvcmRpbmc6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHZhciBpZGVudGlmaWVy
ID0gdGhpcy5fbmV4dFJlY29yZGluZ0lkZW50aWZpZXIrKzsKKyAgICAgICAgdmFyIG5ld1JlY29y
ZGluZyA9IG5ldyBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRpbmcoaWRlbnRpZmllciwgV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJUaW1lbGluZSBSZWNvcmRpbmcgJWQiKS5mb3JtYXQoaWRlbnRp
ZmllcikpOworICAgICAgICB0aGlzLl9yZWNvcmRpbmdzLnB1c2gobmV3UmVjb3JkaW5nKTsKKyAg
ICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlRpbWVsaW5l
TWFuYWdlci5FdmVudC5SZWNvcmRpbmdDcmVhdGVkLCB7cmVjb3JkaW5nOiBuZXdSZWNvcmRpbmd9
KTsKKworICAgICAgICBjb25zb2xlLmFzc2VydChuZXdSZWNvcmRpbmcuaXNXcml0YWJsZSgpKTsK
KworICAgICAgICBpZiAodGhpcy5faXNDYXB0dXJpbmcpCisgICAgICAgICAgICB0aGlzLnN0b3BD
YXB0dXJpbmcoKTsKKworICAgICAgICB2YXIgb2xkUmVjb3JkaW5nID0gdGhpcy5fYWN0aXZlUmVj
b3JkaW5nOworICAgICAgICBpZiAob2xkUmVjb3JkaW5nKQorICAgICAgICAgICAgb2xkUmVjb3Jk
aW5nLnVubG9hZGVkKCk7CisKKyAgICAgICAgdGhpcy5fYWN0aXZlUmVjb3JkaW5nID0gbmV3UmVj
b3JkaW5nOworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0
b3IuVGltZWxpbmVNYW5hZ2VyLkV2ZW50LlJlY29yZGluZ0xvYWRlZCwge29sZFJlY29yZGluZzog
b2xkUmVjb3JkaW5nfSk7CisgICAgfSwKKwogICAgIF9jYWxsRnJhbWVzRnJvbVBheWxvYWQ6IGZ1
bmN0aW9uKHBheWxvYWQpCiAgICAgewogICAgICAgICBpZiAoIXBheWxvYWQpCkBAIC00MDEsMTEg
KzQ2NCwxMiBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVNYW5hZ2VyLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgaWYgKG1haW5SZXNvdXJjZSA9PT0gdGhpcy5fYXV0b0NhcHR1cmluZ01haW5SZXNvdXJj
ZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICB0aGlzLnN0b3BDYXB0dXJp
bmcoKTsKKyAgICAgICAgaWYgKHRoaXMuX2lzQ2FwdHVyaW5nKQorICAgICAgICAgICAgdGhpcy5z
dG9wQ2FwdHVyaW5nKCk7CiAKICAgICAgICAgdGhpcy5fYXV0b0NhcHR1cmluZ01haW5SZXNvdXJj
ZSA9IG1haW5SZXNvdXJjZTsKIAotICAgICAgICB0aGlzLl9hY3RpdmVSZWNvcmRpbmcucmVzZXQo
KTsKKyAgICAgICAgdGhpcy5fbG9hZE5ld1JlY29yZGluZygpOwogCiAgICAgICAgIHRoaXMuc3Rh
cnRDYXB0dXJpbmcoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvTW9kZWxzL05ldHdvcmtUaW1lbGluZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL01vZGVscy9OZXR3b3JrVGltZWxpbmUuanMKaW5kZXggOWNjZTY0MWZj
ZDQ0OTMxNzhkN2VlNzNmMzkwM2RmNzU1NjY1NmM4YS4uNzVkNGQ5ZjM3MzQ1MzJjOTI4NTIwNWFi
MzZhZTg5YjRjODQ2OWY4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvTW9kZWxzL05ldHdvcmtUaW1lbGluZS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvTmV0d29ya1RpbWVsaW5lLmpzCkBAIC0yMyw5ICsy
Myw5IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5z
cGVjdG9yLk5ldHdvcmtUaW1lbGluZSA9IGZ1bmN0aW9uKCkKK1dlYkluc3BlY3Rvci5OZXR3b3Jr
VGltZWxpbmUgPSBmdW5jdGlvbih0eXBlKQogewotICAgIFdlYkluc3BlY3Rvci5UaW1lbGluZS5j
YWxsKHRoaXMpOworICAgIFdlYkluc3BlY3Rvci5UaW1lbGluZS5jYWxsKHRoaXMsIHR5cGUpOwog
fTsKIAogV2ViSW5zcGVjdG9yLk5ldHdvcmtUaW1lbGluZS5wcm90b3R5cGUgPSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvVGltZWxpbmUu
anMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvVGltZWxpbmUu
anMKaW5kZXggZTJlMjcyOTQ0MGFjNjY3NDU2Y2VlMThmZjEzYTU5NzFkY2JhNTZiYy4uYmJmZGU1
NjMwM2E3YmFjYjY5NzRmYzVmMDAwZjI1YWMzYTI2YjVjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1RpbWVsaW5lLmpzCisrKyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9UaW1lbGluZS5qcwpAQCAtMjMs
MTAgKzIzLDE4IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAot
V2ViSW5zcGVjdG9yLlRpbWVsaW5lID0gZnVuY3Rpb24oKQorV2ViSW5zcGVjdG9yLlRpbWVsaW5l
ID0gZnVuY3Rpb24odHlwZSkKIHsKKyAgICBpZiAodGhpcy5jb25zdHJ1Y3RvciA9PT0gV2ViSW5z
cGVjdG9yLlRpbWVsaW5lKSB7CisgICAgICAgIC8vIFdoZW4gaW5zdGFudGlhdGVkIGRpcmVjdGx5
LCBwb3RlbnRpYWxseSByZXR1cm4gYW4gaW5zdGFuY2Ugb2YgYSBjb25jcmV0ZSBzdWJjbGFzcy4K
KyAgICAgICAgaWYgKHR5cGUgPT09IFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZC5UeXBlLk5l
dHdvcmspCisgICAgICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5OZXR3b3JrVGltZWxp
bmUodHlwZSk7CisgICAgfQorCiAgICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOwog
CisgICAgdGhpcy5fdHlwZSA9IHR5cGU7CisKICAgICB0aGlzLnJlc2V0KHRydWUpOwogfTsKIApA
QCAtNTcsNiArNjUsMTEgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgcmV0dXJuIHRoaXMuX3JlY29yZHM7CiAgICAgfSwKIAorICAgIGdldCB0eXBlKCkKKyAg
ICB7CisgICAgICAgIHJldHVybiB0aGlzLl90eXBlOworICAgIH0sCisKICAgICByZXNldDogZnVu
Y3Rpb24oc3VwcHJlc3NFdmVudHMpCiAgICAgewogICAgICAgICB0aGlzLl9yZWNvcmRzID0gW107
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMv
VGltZWxpbmVSZWNvcmRpbmcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Nb2RlbHMvVGltZWxpbmVSZWNvcmRpbmcuanMKaW5kZXggZThhYTcyMTZlMThhZTQ1OTFjMzZk
ZWZmNjVmYTkyOWYzMTFmOTYzMC4uMTllZTQxOTQ2YjhlNDllOWYyYjJhYjNhZTI0NDMyMTc5ZDIy
MmI1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9k
ZWxzL1RpbWVsaW5lUmVjb3JkaW5nLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL01vZGVscy9UaW1lbGluZVJlY29yZGluZy5qcwpAQCAtMjMsMTcgKzIzLDIxIEBA
CiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9y
LlRpbWVsaW5lUmVjb3JkaW5nID0gZnVuY3Rpb24oKQorV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVj
b3JkaW5nID0gZnVuY3Rpb24oaWRlbnRpZmllciwgZGlzcGxheU5hbWUpCiB7CiAgICAgV2ViSW5z
cGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOwogCisgICAgdGhpcy5faWRlbnRpZmllciA9IGlkZW50
aWZpZXI7CiAgICAgdGhpcy5fdGltZWxpbmVzID0gbmV3IE1hcDsKLSAgICB0aGlzLl90aW1lbGlu
ZXMuc2V0KFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZC5UeXBlLk5ldHdvcmssIG5ldyBXZWJJ
bnNwZWN0b3IuTmV0d29ya1RpbWVsaW5lKTsKLSAgICB0aGlzLl90aW1lbGluZXMuc2V0KFdlYklu
c3BlY3Rvci5UaW1lbGluZVJlY29yZC5UeXBlLlNjcmlwdCwgbmV3IFdlYkluc3BlY3Rvci5UaW1l
bGluZSk7Ci0gICAgdGhpcy5fdGltZWxpbmVzLnNldChXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNv
cmQuVHlwZS5MYXlvdXQsIG5ldyBXZWJJbnNwZWN0b3IuVGltZWxpbmUpOworICAgIHRoaXMuX2Rp
c3BsYXlOYW1lID0gZGlzcGxheU5hbWU7CisgICAgdGhpcy5faXNXcml0YWJsZSA9IHRydWU7CiAK
LSAgICBmb3IgKHZhciB0aW1lbGluZSBvZiB0aGlzLl90aW1lbGluZXMudmFsdWVzKCkpCisgICAg
Zm9yICh2YXIga2V5IG9mIE9iamVjdC5rZXlzKFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZC5U
eXBlKSkgeworICAgICAgICB2YXIgdHlwZSA9IFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZC5U
eXBlW2tleV07CisgICAgICAgIHZhciB0aW1lbGluZSA9IG5ldyBXZWJJbnNwZWN0b3IuVGltZWxp
bmUodHlwZSk7CisgICAgICAgIHRoaXMuX3RpbWVsaW5lcy5zZXQodHlwZSwgdGltZWxpbmUpOwog
ICAgICAgICB0aW1lbGluZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5UaW1lbGluZS5F
dmVudC5UaW1lc1VwZGF0ZWQsIHRoaXMuX3RpbWVsaW5lVGltZXNVcGRhdGVkLCB0aGlzKTsKKyAg
ICB9CiAKICAgICB0aGlzLnJlc2V0KHRydWUpOwogfTsKQEAgLTUwLDYgKzU0LDE2IEBAIFdlYklu
c3BlY3Rvci5UaW1lbGluZVJlY29yZGluZy5wcm90b3R5cGUgPSB7CiAKICAgICAvLyBQdWJsaWMK
IAorICAgIGdldCBkaXNwbGF5TmFtZSgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fZGlz
cGxheU5hbWU7CisgICAgfSwKKworICAgIGdldCBpZGVudGlmaWVyKCkKKyAgICB7CisgICAgICAg
IHJldHVybiB0aGlzLl9pZGVudGlmaWVyOworICAgIH0sCisKICAgICBnZXQgdGltZWxpbmVzKCkK
ICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl90aW1lbGluZXM7CkBAIC02NSw4ICs3OSwyMCBA
QCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRpbmcucHJvdG90eXBlID0gewogICAgICAgICBy
ZXR1cm4gdGhpcy5fZW5kVGltZTsKICAgICB9LAogCisgICAgaXNXcml0YWJsZTogZnVuY3Rpb24o
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2lzV3JpdGFibGU7CisgICAgfSwKKworICAg
IHVubG9hZGVkOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlzLl9pc1dyaXRhYmxlID0g
ZmFsc2U7CisgICAgfSwKKwogICAgIHJlc2V0OiBmdW5jdGlvbihzdXBwcmVzc0V2ZW50cykKICAg
ICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2lzV3JpdGFibGUsICJDYW4ndCByZXNl
dCBhIHJlYWQtb25seSByZWNvcmRpbmcuIik7CisKICAgICAgICAgdGhpcy5fc291cmNlQ29kZVRp
bWVsaW5lc01hcCA9IG5ldyBNYXA7CiAgICAgICAgIHRoaXMuX2V2ZW50TWFya2VycyA9IFtdOwog
ICAgICAgICB0aGlzLl9zdGFydFRpbWUgPSBOYU47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9JbnNwZWN0b3JGcm9udGVuZEFQSS5qcyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0luc3BlY3RvckZy
b250ZW5kQVBJLmpzCmluZGV4IGZmZGViMmM2YjBiYWNmMzdhYjcxNDM3NjMyYjk3ODY0ZmNhNDBh
OGUuLmJmMDRjZGJlNGY0ODcwYmU3MGUzMDNiMjQ3MGMxMmNkYmFjZjIyOGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0luc3BlY3RvckZy
b250ZW5kQVBJLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1By
b3RvY29sL0luc3BlY3RvckZyb250ZW5kQVBJLmpzCkBAIC01Niw2ICs1Niw5IEBAIEluc3BlY3Rv
ckZyb250ZW5kQVBJID0gewogCiAgICAgc2V0VGltZWxpbmVQcm9maWxpbmdFbmFibGVkOiBmdW5j
dGlvbihlbmFibGVkKQogICAgIHsKKyAgICAgICAgaWYgKFdlYkluc3BlY3Rvci50aW1lbGluZU1h
bmFnZXIuaXNDYXB0dXJpbmcoKSAhPT0gZW5hYmxlZCkKKyAgICAgICAgICAgIHJldHVybjsKKwog
ICAgICAgICBpZiAoZW5hYmxlZCkgewogICAgICAgICAgICAgV2ViSW5zcGVjdG9yLm5hdmlnYXRp
b25TaWRlYmFyLnNlbGVjdGVkU2lkZWJhclBhbmVsID0gV2ViSW5zcGVjdG9yLnRpbWVsaW5lU2lk
ZWJhclBhbmVsOwogICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnRpbWVsaW5lU2lkZWJhclBhbmVs
LnNob3dUaW1lbGluZU92ZXJ2aWV3KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9MYXlvdXRUaW1lbGluZU92ZXJ2aWV3R3JhcGguanMgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9MYXlvdXRUaW1lbGluZU92
ZXJ2aWV3R3JhcGguanMKaW5kZXggNjk1NTkyZmZlY2UyYmU1ZmQzNGEzMGMzNTgyNmQ4NzI4YWIx
MmQ2OC4uZjc0ODlkYzFhM2NkMDAwNTdhNGUxNWI3MzhmMjNkYjkzMDNiYzExYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTGF5b3V0VGltZWxp
bmVPdmVydmlld0dyYXBoLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL0xheW91dFRpbWVsaW5lT3ZlcnZpZXdHcmFwaC5qcwpAQCAtMjMsMTMgKzIzLDEz
IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVj
dG9yLkxheW91dFRpbWVsaW5lT3ZlcnZpZXdHcmFwaCA9IGZ1bmN0aW9uKHJlY29yZGluZykKK1dl
Ykluc3BlY3Rvci5MYXlvdXRUaW1lbGluZU92ZXJ2aWV3R3JhcGggPSBmdW5jdGlvbih0aW1lbGlu
ZSkKIHsKLSAgICBXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlld0dyYXBoLmNhbGwodGhpcywg
cmVjb3JkaW5nKTsKKyAgICBXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlld0dyYXBoLmNhbGwo
dGhpcywgdGltZWxpbmUpOwogCiAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5z
cGVjdG9yLkxheW91dFRpbWVsaW5lT3ZlcnZpZXdHcmFwaC5TdHlsZUNsYXNzTmFtZSk7CiAKLSAg
ICB0aGlzLl9sYXlvdXRUaW1lbGluZSA9IHJlY29yZGluZy50aW1lbGluZXMuZ2V0KFdlYkluc3Bl
Y3Rvci5UaW1lbGluZVJlY29yZC5UeXBlLkxheW91dCk7CisgICAgdGhpcy5fbGF5b3V0VGltZWxp
bmUgPSB0aW1lbGluZTsKICAgICB0aGlzLl9sYXlvdXRUaW1lbGluZS5hZGRFdmVudExpc3RlbmVy
KFdlYkluc3BlY3Rvci5UaW1lbGluZS5FdmVudC5SZWNvcmRBZGRlZCwgdGhpcy5fbGF5b3V0VGlt
ZWxpbmVSZWNvcmRBZGRlZCwgdGhpcyk7CiAKICAgICB0aGlzLl90aW1lbGluZVJlY29yZEJhcnMg
PSBbXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL0xheW91dFRpbWVsaW5lVmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0xheW91dFRpbWVsaW5lVmlldy5qcwppbmRleCAwMTlmM2RlOGI3Y2Q2MWMx
NDdhMjU3M2U0YTY0MDU0MTZiNGVjOGNkLi45ZjYzZGU3YTZjOGY5ZmQ1NWE5YzcxMGEwM2EzNTE2
YTk0YmZlY2YyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9MYXlvdXRUaW1lbGluZVZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvTGF5b3V0VGltZWxpbmVWaWV3LmpzCkBAIC0yMyw5ICsyMywx
MSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3Bl
Y3Rvci5MYXlvdXRUaW1lbGluZVZpZXcgPSBmdW5jdGlvbihyZWNvcmRpbmcpCitXZWJJbnNwZWN0
b3IuTGF5b3V0VGltZWxpbmVWaWV3ID0gZnVuY3Rpb24odGltZWxpbmUpCiB7Ci0gICAgV2ViSW5z
cGVjdG9yLlRpbWVsaW5lVmlldy5jYWxsKHRoaXMpOworICAgIFdlYkluc3BlY3Rvci5UaW1lbGlu
ZVZpZXcuY2FsbCh0aGlzLCB0aW1lbGluZSk7CisKKyAgICBjb25zb2xlLmFzc2VydCh0aW1lbGlu
ZS50eXBlID09PSBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmQuVHlwZS5MYXlvdXQpOwogCiAg
ICAgdGhpcy5uYXZpZ2F0aW9uU2lkZWJhclRyZWVPdXRsaW5lLm9uc2VsZWN0ID0gdGhpcy5fdHJl
ZUVsZW1lbnRTZWxlY3RlZC5iaW5kKHRoaXMpOwogICAgIHRoaXMubmF2aWdhdGlvblNpZGViYXJU
cmVlT3V0bGluZS5lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25T
aWRlYmFyUGFuZWwuSGlkZURpc2Nsb3N1cmVCdXR0b25zU3R5bGVDbGFzc05hbWUpOwpAQCAtNjgs
OCArNzAsNyBAQCBXZWJJbnNwZWN0b3IuTGF5b3V0VGltZWxpbmVWaWV3ID0gZnVuY3Rpb24ocmVj
b3JkaW5nKQogICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5MYXlv
dXRUaW1lbGluZVZpZXcuU3R5bGVDbGFzc05hbWUpOwogICAgIHRoaXMuZWxlbWVudC5hcHBlbmRD
aGlsZCh0aGlzLl9kYXRhR3JpZC5lbGVtZW50KTsKIAotICAgIHZhciBsYXlvdXRUaW1lbGluZSA9
IHJlY29yZGluZy50aW1lbGluZXMuZ2V0KFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZC5UeXBl
LkxheW91dCk7Ci0gICAgbGF5b3V0VGltZWxpbmUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0
b3IuVGltZWxpbmUuRXZlbnQuUmVjb3JkQWRkZWQsIHRoaXMuX2xheW91dFRpbWVsaW5lUmVjb3Jk
QWRkZWQsIHRoaXMpOworICAgIHRpbWVsaW5lLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9y
LlRpbWVsaW5lLkV2ZW50LlJlY29yZEFkZGVkLCB0aGlzLl9sYXlvdXRUaW1lbGluZVJlY29yZEFk
ZGVkLCB0aGlzKTsKIAogICAgIHRoaXMuX3BlbmRpbmdSZWNvcmRzID0gW107CiB9OwpAQCAtMTg3
LDcgKzE4OCw3IEBAIFdlYkluc3BlY3Rvci5MYXlvdXRUaW1lbGluZVZpZXcucHJvdG90eXBlID0g
ewogICAgICAgICB9CiAKICAgICAgICAgaWYgKCF0cmVlRWxlbWVudC5yZWNvcmQuc291cmNlQ29k
ZUxvY2F0aW9uKSB7Ci0gICAgICAgICAgICBXZWJJbnNwZWN0b3IudGltZWxpbmVTaWRlYmFyUGFu
ZWwuc2hvd1RpbWVsaW5lVmlldyhXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmQuVHlwZS5MYXlv
dXQpOworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnRpbWVsaW5lU2lkZWJhclBhbmVsLnNob3dU
aW1lbGluZVZpZXdGb3JUeXBlKFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZC5UeXBlLkxheW91
dCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTmV0d29ya1RpbWVsaW5lT3ZlcnZp
ZXdHcmFwaC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05l
dHdvcmtUaW1lbGluZU92ZXJ2aWV3R3JhcGguanMKaW5kZXggMGNmMWU3NTczODQ3Mzg3YTg1MTVh
MmZjYmI4NjlhNGEwYjQ1NjIxYS4uODU2Nzc4YjkxZWM4MWFkNDEzMzZjOWUzMWQ1MGRiYTBlOTBk
Y2FkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvTmV0d29ya1RpbWVsaW5lT3ZlcnZpZXdHcmFwaC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9OZXR3b3JrVGltZWxpbmVPdmVydmlld0dyYXBoLmpz
CkBAIC0yNCwxNSArMjQsMTQgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
ICAqLwogCi1XZWJJbnNwZWN0b3IuTmV0d29ya1RpbWVsaW5lT3ZlcnZpZXdHcmFwaCA9IGZ1bmN0
aW9uKHJlY29yZGluZykKK1dlYkluc3BlY3Rvci5OZXR3b3JrVGltZWxpbmVPdmVydmlld0dyYXBo
ID0gZnVuY3Rpb24odGltZWxpbmUpCiB7Ci0gICAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZp
ZXdHcmFwaC5jYWxsKHRoaXMsIHJlY29yZGluZyk7CisgICAgV2ViSW5zcGVjdG9yLlRpbWVsaW5l
T3ZlcnZpZXdHcmFwaC5jYWxsKHRoaXMsIHRpbWVsaW5lKTsKIAogICAgIHRoaXMuZWxlbWVudC5j
bGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5OZXR3b3JrVGltZWxpbmVPdmVydmlld0dyYXBoLlN0
eWxlQ2xhc3NOYW1lKTsKIAotICAgIHZhciBuZXR3b3JrVGltZWxpbmUgPSByZWNvcmRpbmcudGlt
ZWxpbmVzLmdldChXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmQuVHlwZS5OZXR3b3JrKTsKLSAg
ICBuZXR3b3JrVGltZWxpbmUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGltZWxpbmUu
RXZlbnQuUmVjb3JkQWRkZWQsIHRoaXMuX25ldHdvcmtUaW1lbGluZVJlY29yZEFkZGVkLCB0aGlz
KTsKLSAgICBuZXR3b3JrVGltZWxpbmUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGlt
ZWxpbmUuRXZlbnQuVGltZXNVcGRhdGVkLCB0aGlzLm5lZWRzTGF5b3V0LCB0aGlzKTsKKyAgICB0
aW1lbGluZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5UaW1lbGluZS5FdmVudC5SZWNv
cmRBZGRlZCwgdGhpcy5fbmV0d29ya1RpbWVsaW5lUmVjb3JkQWRkZWQsIHRoaXMpOworICAgIHRp
bWVsaW5lLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRpbWVsaW5lLkV2ZW50LlRpbWVz
VXBkYXRlZCwgdGhpcy5uZWVkc0xheW91dCwgdGhpcyk7CiAKICAgICB0aGlzLnJlc2V0KCk7CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
TmV0d29ya1RpbWVsaW5lVmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL05ldHdvcmtUaW1lbGluZVZpZXcuanMKaW5kZXggNjk2YmE4ZjE3ZDc1ODMwMjYy
MWViZjJlNmMxOTU3MmVmNDUwNGY0Yy4uMzA5NzkwYjVhNTJkYmMwOTY2Mjc2MWYxYjZhYWU1MDBj
MWQwMDgyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvTmV0d29ya1RpbWVsaW5lVmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9OZXR3b3JrVGltZWxpbmVWaWV3LmpzCkBAIC0yMyw5ICsyMywx
MSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3Bl
Y3Rvci5OZXR3b3JrVGltZWxpbmVWaWV3ID0gZnVuY3Rpb24ocmVjb3JkaW5nKQorV2ViSW5zcGVj
dG9yLk5ldHdvcmtUaW1lbGluZVZpZXcgPSBmdW5jdGlvbih0aW1lbGluZSkKIHsKLSAgICBXZWJJ
bnNwZWN0b3IuVGltZWxpbmVWaWV3LmNhbGwodGhpcyk7CisgICAgV2ViSW5zcGVjdG9yLlRpbWVs
aW5lVmlldy5jYWxsKHRoaXMsIHRpbWVsaW5lKTsKKworICAgIGNvbnNvbGUuYXNzZXJ0KHRpbWVs
aW5lLnR5cGUgPT09IFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZC5UeXBlLk5ldHdvcmspOwog
CiAgICAgdGhpcy5uYXZpZ2F0aW9uU2lkZWJhclRyZWVPdXRsaW5lLm9uc2VsZWN0ID0gdGhpcy5f
dHJlZUVsZW1lbnRTZWxlY3RlZC5iaW5kKHRoaXMpOwogICAgIHRoaXMubmF2aWdhdGlvblNpZGVi
YXJUcmVlT3V0bGluZS5lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLk5hdmlnYXRp
b25TaWRlYmFyUGFuZWwuSGlkZURpc2Nsb3N1cmVCdXR0b25zU3R5bGVDbGFzc05hbWUpOwpAQCAt
ODQsOCArODYsNyBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya1RpbWVsaW5lVmlldyA9IGZ1bmN0aW9u
KHJlY29yZGluZykKICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3Iu
TmV0d29ya1RpbWVsaW5lVmlldy5TdHlsZUNsYXNzTmFtZSk7CiAgICAgdGhpcy5lbGVtZW50LmFw
cGVuZENoaWxkKHRoaXMuX2RhdGFHcmlkLmVsZW1lbnQpOwogCi0gICAgdmFyIG5ldHdvcmtUaW1l
bGluZSA9IHJlY29yZGluZy50aW1lbGluZXMuZ2V0KFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29y
ZC5UeXBlLk5ldHdvcmspOwotICAgIG5ldHdvcmtUaW1lbGluZS5hZGRFdmVudExpc3RlbmVyKFdl
Ykluc3BlY3Rvci5UaW1lbGluZS5FdmVudC5SZWNvcmRBZGRlZCwgdGhpcy5fbmV0d29ya1RpbWVs
aW5lUmVjb3JkQWRkZWQsIHRoaXMpOworICAgIHRpbWVsaW5lLmFkZEV2ZW50TGlzdGVuZXIoV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lLkV2ZW50LlJlY29yZEFkZGVkLCB0aGlzLl9uZXR3b3JrVGltZWxp
bmVSZWNvcmRBZGRlZCwgdGhpcyk7CiAKICAgICB0aGlzLl9wZW5kaW5nUmVjb3JkcyA9IFtdOwog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L092ZXJ2aWV3VGltZWxpbmVWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvT3ZlcnZpZXdUaW1lbGluZVZpZXcuanMKaW5kZXggMGI3M2ZlYjI3MTI3MzEw
MTU5Yzc1NjQ4Y2ExM2VkODE0MjI3OWUyZi4uODVjM2QxNzRlYjJjZjE1N2ZmM2YwMTZkNzlkMDJj
NmRiNmJiMDIyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvT3ZlcnZpZXdUaW1lbGluZVZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvT3ZlcnZpZXdUaW1lbGluZVZpZXcuanMKQEAgLTI1LDkg
KzI1LDcgQEAKIAogV2ViSW5zcGVjdG9yLk92ZXJ2aWV3VGltZWxpbmVWaWV3ID0gZnVuY3Rpb24o
cmVjb3JkaW5nKQogewotICAgIFdlYkluc3BlY3Rvci5UaW1lbGluZVZpZXcuY2FsbCh0aGlzKTsK
LQotICAgIHRoaXMuX3JlY29yZGluZyA9IHJlY29yZGluZzsKKyAgICBXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVWaWV3LmNhbGwodGhpcywgcmVjb3JkaW5nKTsKIAogICAgIHRoaXMubmF2aWdhdGlvblNp
ZGViYXJUcmVlT3V0bGluZS5vbnNlbGVjdCA9IHRoaXMuX3RyZWVFbGVtZW50U2VsZWN0ZWQuYmlu
ZCh0aGlzKTsKIApAQCAtMzA5LDcgKzMwNyw3IEBAIFdlYkluc3BlY3Rvci5PdmVydmlld1RpbWVs
aW5lVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMubmVlZHNMYXlvdXQoKTsKIAogICAg
ICAgICAvLyBXZSBkb24ndCBleHBlY3QgdG8gaGF2ZSBhbnkgc291cmNlIGNvZGUgdGltZWxpbmVz
IHlldC4gVGhvc2Ugc2hvdWxkIGJlIGFkZGVkIHdpdGggX3NvdXJjZUNvZGVUaW1lbGluZUFkZGVk
LgotICAgICAgICBjb25zb2xlLmFzc2VydCghdGhpcy5fcmVjb3JkaW5nLnNvdXJjZUNvZGVUaW1l
bGluZXNGb3JTb3VyY2VDb2RlKHJlc291cmNlVGltZWxpbmVSZWNvcmQucmVzb3VyY2UpLmxlbmd0
aCk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzLnJlcHJlc2VudGVkT2JqZWN0LnNvdXJj
ZUNvZGVUaW1lbGluZXNGb3JTb3VyY2VDb2RlKHJlc291cmNlVGltZWxpbmVSZWNvcmQucmVzb3Vy
Y2UpLmxlbmd0aCk7CiAgICAgfSwKIAogICAgIF9zb3VyY2VDb2RlVGltZWxpbmVBZGRlZDogZnVu
Y3Rpb24oZXZlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9TY3JpcHRUaW1lbGluZU92ZXJ2aWV3R3JhcGguanMgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TY3JpcHRUaW1lbGluZU92ZXJ2aWV3R3JhcGgu
anMKaW5kZXggMDg4ZjkzYWNiY2FkNmJlMTNlODI5M2RlYmVkM2ZhZGZjMzIxODBhNC4uMzc4N2Ez
M2M2OTdkYWQzOTE5MmE4OGVhYzAzOGM0YjI4MzM5YmUyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2NyaXB0VGltZWxpbmVPdmVydmlld0dy
YXBoLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Nj
cmlwdFRpbWVsaW5lT3ZlcnZpZXdHcmFwaC5qcwpAQCAtMjMsMTMgKzIzLDEzIEBACiAgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLlNjcmlwdFRp
bWVsaW5lT3ZlcnZpZXdHcmFwaCA9IGZ1bmN0aW9uKHJlY29yZGluZykKK1dlYkluc3BlY3Rvci5T
Y3JpcHRUaW1lbGluZU92ZXJ2aWV3R3JhcGggPSBmdW5jdGlvbih0aW1lbGluZSkKIHsKLSAgICBX
ZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlld0dyYXBoLmNhbGwodGhpcywgcmVjb3JkaW5nKTsK
KyAgICBXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlld0dyYXBoLmNhbGwodGhpcywgdGltZWxp
bmUpOwogCiAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLlNjcmlw
dFRpbWVsaW5lT3ZlcnZpZXdHcmFwaC5TdHlsZUNsYXNzTmFtZSk7CiAKLSAgICB0aGlzLl9zY3Jp
cHRUaW1lbGluZSA9IHJlY29yZGluZy50aW1lbGluZXMuZ2V0KFdlYkluc3BlY3Rvci5UaW1lbGlu
ZVJlY29yZC5UeXBlLlNjcmlwdCk7CisgICAgdGhpcy5fc2NyaXB0VGltZWxpbmUgPSB0aW1lbGlu
ZTsKICAgICB0aGlzLl9zY3JpcHRUaW1lbGluZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rv
ci5UaW1lbGluZS5FdmVudC5SZWNvcmRBZGRlZCwgdGhpcy5fc2NyaXB0VGltZWxpbmVSZWNvcmRB
ZGRlZCwgdGhpcyk7CiAKICAgICB0aGlzLl90aW1lbGluZVJlY29yZEJhcnMgPSBbXTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NjcmlwdFRp
bWVsaW5lVmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L1NjcmlwdFRpbWVsaW5lVmlldy5qcwppbmRleCBjOWU3YzY5ODQ0MjY2NmMwNDk5YjU0MGI2OTJj
ODdlODlhOWJlYzQwLi41OWI0NDUxYmM1ZjMyNWYwYWNiOWZlZmI1NDMxM2RlNTRiNmEzMjU2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TY3Jp
cHRUaW1lbGluZVZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvU2NyaXB0VGltZWxpbmVWaWV3LmpzCkBAIC0yMyw5ICsyMywxMSBAQAogICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5TY3JpcHRU
aW1lbGluZVZpZXcgPSBmdW5jdGlvbihyZWNvcmRpbmcpCitXZWJJbnNwZWN0b3IuU2NyaXB0VGlt
ZWxpbmVWaWV3ID0gZnVuY3Rpb24odGltZWxpbmUpCiB7Ci0gICAgV2ViSW5zcGVjdG9yLlRpbWVs
aW5lVmlldy5jYWxsKHRoaXMpOworICAgIFdlYkluc3BlY3Rvci5UaW1lbGluZVZpZXcuY2FsbCh0
aGlzLCB0aW1lbGluZSk7CisKKyAgICBjb25zb2xlLmFzc2VydCh0aW1lbGluZS50eXBlID09PSBX
ZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmQuVHlwZS5TY3JpcHQpOwogCiAgICAgdGhpcy5uYXZp
Z2F0aW9uU2lkZWJhclRyZWVPdXRsaW5lLm9uc2VsZWN0ID0gdGhpcy5fdHJlZUVsZW1lbnRTZWxl
Y3RlZC5iaW5kKHRoaXMpOwogICAgIHRoaXMubmF2aWdhdGlvblNpZGViYXJUcmVlT3V0bGluZS5l
bGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLlNjcmlwdFRpbWVsaW5lVmlldy5UcmVl
T3V0bGluZVN0eWxlQ2xhc3NOYW1lKTsKQEAgLTY3LDggKzY5LDcgQEAgV2ViSW5zcGVjdG9yLlNj
cmlwdFRpbWVsaW5lVmlldyA9IGZ1bmN0aW9uKHJlY29yZGluZykKICAgICB0aGlzLmVsZW1lbnQu
Y2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuU2NyaXB0VGltZWxpbmVWaWV3LlN0eWxlQ2xhc3NO
YW1lKTsKICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fZGF0YUdyaWQuZWxlbWVu
dCk7CiAKLSAgICB2YXIgc2NyaXB0VGltZWxpbmUgPSByZWNvcmRpbmcudGltZWxpbmVzLmdldChX
ZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmQuVHlwZS5TY3JpcHQpOwotICAgIHNjcmlwdFRpbWVs
aW5lLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRpbWVsaW5lLkV2ZW50LlJlY29yZEFk
ZGVkLCB0aGlzLl9zY3JpcHRUaW1lbGluZVJlY29yZEFkZGVkLCB0aGlzKTsKKyAgICB0aW1lbGlu
ZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5UaW1lbGluZS5FdmVudC5SZWNvcmRBZGRl
ZCwgdGhpcy5fc2NyaXB0VGltZWxpbmVSZWNvcmRBZGRlZCwgdGhpcyk7CiAKICAgICB0aGlzLl9w
ZW5kaW5nUmVjb3JkcyA9IFtdOwogfTsKQEAgLTI3MSw3ICsyNzIsNyBAQCBXZWJJbnNwZWN0b3Iu
U2NyaXB0VGltZWxpbmVWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGNvbnNvbGUuZXJy
b3IoIlVua25vd24gdHJlZSBlbGVtZW50IHNlbGVjdGVkLiIpOwogCiAgICAgICAgIGlmICghc291
cmNlQ29kZUxvY2F0aW9uKSB7Ci0gICAgICAgICAgICBXZWJJbnNwZWN0b3IudGltZWxpbmVTaWRl
YmFyUGFuZWwuc2hvd1RpbWVsaW5lVmlldyhXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmQuVHlw
ZS5TY3JpcHQpOworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnRpbWVsaW5lU2lkZWJhclBhbmVs
LnNob3dUaW1lbGluZVZpZXdGb3JUeXBlKFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZC5UeXBl
LlNjcmlwdCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVDb250ZW50
Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVs
aW5lQ29udGVudFZpZXcuanMKaW5kZXggNTlmZGEyYmFjOTE0ZTQzNGUyYTI4MjA3YTdkMmVhM2Ji
NzdkMzc5MC4uZmRlYTg4OGIyZDM0OTY4MmVjZWYzYjdhYTA0MDI4ZWE4ODI2ZGE2MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVD
b250ZW50Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9UaW1lbGluZUNvbnRlbnRWaWV3LmpzCkBAIC0zMiw5ICszMiw4IEBAIFdlYkluc3BlY3Rv
ci5UaW1lbGluZUNvbnRlbnRWaWV3ID0gZnVuY3Rpb24ocmVjb3JkaW5nKQogICAgIHRoaXMuZWxl
bWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5UaW1lbGluZUNvbnRlbnRWaWV3LlN0eWxl
Q2xhc3NOYW1lKTsKIAogICAgIHRoaXMuX2Rpc2NyZXRlVGltZWxpbmVPdmVydmlld0dyYXBoTWFw
ID0gbmV3IE1hcDsKLSAgICB0aGlzLl9kaXNjcmV0ZVRpbWVsaW5lT3ZlcnZpZXdHcmFwaE1hcC5z
ZXQoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkLlR5cGUuTmV0d29yaywgbmV3IFdlYkluc3Bl
Y3Rvci5OZXR3b3JrVGltZWxpbmVPdmVydmlld0dyYXBoKHJlY29yZGluZykpOwotICAgIHRoaXMu
X2Rpc2NyZXRlVGltZWxpbmVPdmVydmlld0dyYXBoTWFwLnNldChXZWJJbnNwZWN0b3IuVGltZWxp
bmVSZWNvcmQuVHlwZS5MYXlvdXQsIG5ldyBXZWJJbnNwZWN0b3IuTGF5b3V0VGltZWxpbmVPdmVy
dmlld0dyYXBoKHJlY29yZGluZykpOwotICAgIHRoaXMuX2Rpc2NyZXRlVGltZWxpbmVPdmVydmll
d0dyYXBoTWFwLnNldChXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmQuVHlwZS5TY3JpcHQsIG5l
dyBXZWJJbnNwZWN0b3IuU2NyaXB0VGltZWxpbmVPdmVydmlld0dyYXBoKHJlY29yZGluZykpOwor
ICAgIGZvciAodmFyIFtpZGVudGlmaWVyLCB0aW1lbGluZV0gb2YgcmVjb3JkaW5nLnRpbWVsaW5l
cykKKyAgICAgICAgdGhpcy5fZGlzY3JldGVUaW1lbGluZU92ZXJ2aWV3R3JhcGhNYXAuc2V0KHRp
bWVsaW5lLCBuZXcgV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXdHcmFwaCh0aW1lbGluZSkp
OwogCiAgICAgdGhpcy5fdGltZWxpbmVPdmVydmlldyA9IG5ldyBXZWJJbnNwZWN0b3IuVGltZWxp
bmVPdmVydmlldyh0aGlzLl9kaXNjcmV0ZVRpbWVsaW5lT3ZlcnZpZXdHcmFwaE1hcCk7CiAgICAg
dGhpcy5fdGltZWxpbmVPdmVydmlldy5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5UaW1l
bGluZU92ZXJ2aWV3LkV2ZW50LlRpbWVSYW5nZVNlbGVjdGlvbkNoYW5nZWQsIHRoaXMuX3RpbWVS
YW5nZVNlbGVjdGlvbkNoYW5nZWQsIHRoaXMpOwpAQCAtNTAsOSArNDksOCBAQCBXZWJJbnNwZWN0
b3IuVGltZWxpbmVDb250ZW50VmlldyA9IGZ1bmN0aW9uKHJlY29yZGluZykKICAgICB0aGlzLl9v
dmVydmlld1RpbWVsaW5lVmlldyA9IG5ldyBXZWJJbnNwZWN0b3IuT3ZlcnZpZXdUaW1lbGluZVZp
ZXcocmVjb3JkaW5nKTsKIAogICAgIHRoaXMuX2Rpc2NyZXRlVGltZWxpbmVWaWV3TWFwID0gbmV3
IE1hcDsKLSAgICB0aGlzLl9kaXNjcmV0ZVRpbWVsaW5lVmlld01hcC5zZXQoV2ViSW5zcGVjdG9y
LlRpbWVsaW5lUmVjb3JkLlR5cGUuTmV0d29yaywgbmV3IFdlYkluc3BlY3Rvci5OZXR3b3JrVGlt
ZWxpbmVWaWV3KHJlY29yZGluZykpOwotICAgIHRoaXMuX2Rpc2NyZXRlVGltZWxpbmVWaWV3TWFw
LnNldChXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmQuVHlwZS5MYXlvdXQsIG5ldyBXZWJJbnNw
ZWN0b3IuTGF5b3V0VGltZWxpbmVWaWV3KHJlY29yZGluZykpOwotICAgIHRoaXMuX2Rpc2NyZXRl
VGltZWxpbmVWaWV3TWFwLnNldChXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmQuVHlwZS5TY3Jp
cHQsIG5ldyBXZWJJbnNwZWN0b3IuU2NyaXB0VGltZWxpbmVWaWV3KHJlY29yZGluZykpOworICAg
IGZvciAodmFyIFtpZGVudGlmaWVyLCB0aW1lbGluZV0gb2YgcmVjb3JkaW5nLnRpbWVsaW5lcykK
KyAgICAgICAgdGhpcy5fZGlzY3JldGVUaW1lbGluZVZpZXdNYXAuc2V0KHRpbWVsaW5lLCBuZXcg
V2ViSW5zcGVjdG9yLlRpbWVsaW5lVmlldyh0aW1lbGluZSkpOwogCiAgICAgZnVuY3Rpb24gY3Jl
YXRlUGF0aENvbXBvbmVudChkaXNwbGF5TmFtZSwgY2xhc3NOYW1lLCByZXByZXNlbnRlZE9iamVj
dCkKICAgICB7CkBAIC02Miw5ICs2MCw5IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZUNvbnRlbnRW
aWV3ID0gZnVuY3Rpb24ocmVjb3JkaW5nKQogICAgIH0KIAogICAgIHRoaXMuX3BhdGhDb21wb25l
bnRNYXAgPSBuZXcgTWFwOwotICAgIHRoaXMuX3BhdGhDb21wb25lbnRNYXAuc2V0KFdlYkluc3Bl
Y3Rvci5UaW1lbGluZVJlY29yZC5UeXBlLk5ldHdvcmssIGNyZWF0ZVBhdGhDb21wb25lbnQuY2Fs
bCh0aGlzLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk5ldHdvcmsgUmVxdWVzdHMiKSwgV2ViSW5z
cGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsLk5ldHdvcmtJY29uU3R5bGVDbGFzcywgV2ViSW5z
cGVjdG9yLlRpbWVsaW5lUmVjb3JkLlR5cGUuTmV0d29yaykpOwotICAgIHRoaXMuX3BhdGhDb21w
b25lbnRNYXAuc2V0KFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZC5UeXBlLkxheW91dCwgY3Jl
YXRlUGF0aENvbXBvbmVudC5jYWxsKHRoaXMsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiTGF5b3V0
ICYgUmVuZGVyaW5nIiksIFdlYkluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5Db2xvcnNJ
Y29uU3R5bGVDbGFzcywgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkLlR5cGUuTGF5b3V0KSk7
Ci0gICAgdGhpcy5fcGF0aENvbXBvbmVudE1hcC5zZXQoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVj
b3JkLlR5cGUuU2NyaXB0LCBjcmVhdGVQYXRoQ29tcG9uZW50LmNhbGwodGhpcywgV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJKYXZhU2NyaXB0ICYgRXZlbnRzIiksIFdlYkluc3BlY3Rvci5UaW1lbGlu
ZVNpZGViYXJQYW5lbC5TY3JpcHRJY29uU3R5bGVDbGFzcywgV2ViSW5zcGVjdG9yLlRpbWVsaW5l
UmVjb3JkLlR5cGUuU2NyaXB0KSk7CisgICAgdGhpcy5fcGF0aENvbXBvbmVudE1hcC5zZXQocmVj
b3JkaW5nLnRpbWVsaW5lcy5nZXQoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkLlR5cGUuTmV0
d29yayksIGNyZWF0ZVBhdGhDb21wb25lbnQuY2FsbCh0aGlzLCBXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIk5ldHdvcmsgUmVxdWVzdHMiKSwgV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVs
Lk5ldHdvcmtJY29uU3R5bGVDbGFzcywgcmVjb3JkaW5nLnRpbWVsaW5lcy5nZXQoV2ViSW5zcGVj
dG9yLlRpbWVsaW5lUmVjb3JkLlR5cGUuTmV0d29yaykpKTsKKyAgICB0aGlzLl9wYXRoQ29tcG9u
ZW50TWFwLnNldChyZWNvcmRpbmcudGltZWxpbmVzLmdldChXZWJJbnNwZWN0b3IuVGltZWxpbmVS
ZWNvcmQuVHlwZS5MYXlvdXQpLCBjcmVhdGVQYXRoQ29tcG9uZW50LmNhbGwodGhpcywgV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJMYXlvdXQgJiBSZW5kZXJpbmciKSwgV2ViSW5zcGVjdG9yLlRpbWVs
aW5lU2lkZWJhclBhbmVsLkNvbG9yc0ljb25TdHlsZUNsYXNzLCByZWNvcmRpbmcudGltZWxpbmVz
LmdldChXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmQuVHlwZS5MYXlvdXQpKSk7CisgICAgdGhp
cy5fcGF0aENvbXBvbmVudE1hcC5zZXQocmVjb3JkaW5nLnRpbWVsaW5lcy5nZXQoV2ViSW5zcGVj
dG9yLlRpbWVsaW5lUmVjb3JkLlR5cGUuU2NyaXB0KSwgY3JlYXRlUGF0aENvbXBvbmVudC5jYWxs
KHRoaXMsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiSmF2YVNjcmlwdCAmIEV2ZW50cyIpLCBXZWJJ
bnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwuU2NyaXB0SWNvblN0eWxlQ2xhc3MsIHJlY29y
ZGluZy50aW1lbGluZXMuZ2V0KFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZC5UeXBlLlNjcmlw
dCkpKTsKIAogICAgIHZhciBwcmV2aW91c1BhdGhDb21wb25lbnQgPSBudWxsOwogICAgIGZvciAo
dmFyIHBhdGhDb21wb25lbnQgb2YgdGhpcy5fcGF0aENvbXBvbmVudE1hcC52YWx1ZXMoKSkgewpA
QCAtOTUsNiArOTMsOSBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVDb250ZW50VmlldyA9IGZ1bmN0
aW9uKHJlY29yZGluZykKIFdlYkluc3BlY3Rvci5UaW1lbGluZUNvbnRlbnRWaWV3LlN0eWxlQ2xh
c3NOYW1lID0gInRpbWVsaW5lIjsKIFdlYkluc3BlY3Rvci5UaW1lbGluZUNvbnRlbnRWaWV3LlZp
ZXdDb250YWluZXJTdHlsZUNsYXNzTmFtZSA9ICJ2aWV3LWNvbnRhaW5lciI7CiAKK1dlYkluc3Bl
Y3Rvci5UaW1lbGluZUNvbnRlbnRWaWV3LlNlbGVjdGVkVGltZWxpbmVUeXBlQ29va2llS2V5ID0g
InRpbWVsaW5lLWNvbnRlbnQtdmlldy1zZWxlY3RlZC10aW1lbGluZS10eXBlIjsKK1dlYkluc3Bl
Y3Rvci5UaW1lbGluZUNvbnRlbnRWaWV3Lk92ZXJ2aWV3VGltZWxpbmVWaWV3Q29va2llVmFsdWUg
PSAidGltZWxpbmUtY29udGVudC12aWV3LW92ZXJ2aWV3LXRpbWVsaW5lLXZpZXciOworCiBXZWJJ
bnNwZWN0b3IuVGltZWxpbmVDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgY29uc3RydWN0
b3I6IFdlYkluc3BlY3Rvci5UaW1lbGluZUNvbnRlbnRWaWV3LAogICAgIF9fcHJvdG9fXzogV2Vi
SW5zcGVjdG9yLkNvbnRlbnRWaWV3LnByb3RvdHlwZSwKQEAgLTEwNiwxMyArMTA3LDE0IEBAIFdl
Ykluc3BlY3Rvci5UaW1lbGluZUNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhp
cy5fc2hvd1RpbWVsaW5lVmlldyh0aGlzLl9vdmVydmlld1RpbWVsaW5lVmlldyk7CiAgICAgfSwK
IAotICAgIHNob3dUaW1lbGluZVZpZXc6IGZ1bmN0aW9uKGlkZW50aWZpZXIpCisgICAgc2hvd1Rp
bWVsaW5lVmlld0ZvclRpbWVsaW5lOiBmdW5jdGlvbihyZXByZXNlbnRlZE9iamVjdCkKICAgICB7
Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2Rpc2NyZXRlVGltZWxpbmVWaWV3TWFwLmhh
cyhpZGVudGlmaWVyKSk7Ci0gICAgICAgIGlmICghdGhpcy5fZGlzY3JldGVUaW1lbGluZVZpZXdN
YXAuaGFzKGlkZW50aWZpZXIpKQorICAgICAgICBjb25zb2xlLmFzc2VydChyZXByZXNlbnRlZE9i
amVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5UaW1lbGluZSwgcmVwcmVzZW50ZWRPYmplY3Qp
OworICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9kaXNjcmV0ZVRpbWVsaW5lVmlld01hcC5o
YXMocmVwcmVzZW50ZWRPYmplY3QpLCByZXByZXNlbnRlZE9iamVjdCk7CisgICAgICAgIGlmICgh
dGhpcy5fZGlzY3JldGVUaW1lbGluZVZpZXdNYXAuaGFzKHJlcHJlc2VudGVkT2JqZWN0KSkKICAg
ICAgICAgICAgIHJldHVybjsKIAotICAgICAgICB0aGlzLl9zaG93VGltZWxpbmVWaWV3KHRoaXMu
X2Rpc2NyZXRlVGltZWxpbmVWaWV3TWFwLmdldChpZGVudGlmaWVyKSwgaWRlbnRpZmllcik7Cisg
ICAgICAgIHRoaXMuX3Nob3dUaW1lbGluZVZpZXcodGhpcy5fZGlzY3JldGVUaW1lbGluZVZpZXdN
YXAuZ2V0KHJlcHJlc2VudGVkT2JqZWN0KSk7CiAgICAgfSwKIAogICAgIGdldCBhbGxvd2VkTmF2
aWdhdGlvblNpZGViYXJQYW5lbHMoKQpAQCAtMTI4LDcgKzEzMCw5IEBAIFdlYkluc3BlY3Rvci5U
aW1lbGluZUNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKIAogICAgIGdldCBzZWxlY3Rpb25QYXRo
Q29tcG9uZW50cygpCiAgICAgewotICAgICAgICB2YXIgcGF0aENvbXBvbmVudHMgPSB0aGlzLl9j
dXJyZW50VGltZWxpbmVWaWV3SWRlbnRpZmllciA/IFt0aGlzLl9wYXRoQ29tcG9uZW50TWFwLmdl
dCh0aGlzLl9jdXJyZW50VGltZWxpbmVWaWV3SWRlbnRpZmllcildIDogW107CisgICAgICAgIHZh
ciBwYXRoQ29tcG9uZW50cyA9IFtdOworICAgICAgICBpZiAodGhpcy5fY3VycmVudFRpbWVsaW5l
Vmlldy5yZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5UaW1lbGluZSkK
KyAgICAgICAgICAgIHBhdGhDb21wb25lbnRzLnB1c2godGhpcy5fcGF0aENvbXBvbmVudE1hcC5n
ZXQodGhpcy5fY3VycmVudFRpbWVsaW5lVmlldy5yZXByZXNlbnRlZE9iamVjdCkpOwogICAgICAg
ICBwYXRoQ29tcG9uZW50cyA9IHBhdGhDb21wb25lbnRzLmNvbmNhdCh0aGlzLl9jdXJyZW50VGlt
ZWxpbmVWaWV3LnNlbGVjdGlvblBhdGhDb21wb25lbnRzIHx8IFtdKTsKICAgICAgICAgcmV0dXJu
IHBhdGhDb21wb25lbnRzOwogICAgIH0sCkBAIC0xMzgsMTIgKzE0MiwxOCBAQCBXZWJJbnNwZWN0
b3IuVGltZWxpbmVDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiBbdGhp
cy5fY2xlYXJUaW1lbGluZU5hdmlnYXRpb25JdGVtXTsKICAgICB9LAogCisgICAgZ2V0IGN1cnJl
bnRUaW1lbGluZVZpZXcoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRUaW1l
bGluZVZpZXc7CisgICAgfSwKKwogICAgIHNob3duOiBmdW5jdGlvbigpCiAgICAgewogICAgICAg
ICBpZiAoIXRoaXMuX2N1cnJlbnRUaW1lbGluZVZpZXcpCiAgICAgICAgICAgICByZXR1cm47CiAK
ICAgICAgICAgdGhpcy5fY3VycmVudFRpbWVsaW5lVmlldy5zaG93bigpOworICAgICAgICB0aGlz
Ll9jbGVhclRpbWVsaW5lTmF2aWdhdGlvbkl0ZW0uZW5hYmxlZCA9IHRoaXMuX3JlY29yZGluZy5p
c1dyaXRhYmxlKCk7CiAgICAgfSwKIAogICAgIGhpZGRlbjogZnVuY3Rpb24oKQpAQCAtMTY0LDYg
KzE3NCwyNiBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7
CiAgICAgICAgIHRoaXMuX2N1cnJlbnRUaW1lbGluZVZpZXcudXBkYXRlTGF5b3V0KCk7CiAgICAg
fSwKIAorICAgIHNhdmVUb0Nvb2tpZTogZnVuY3Rpb24oY29va2llKQorICAgIHsKKyAgICAgICAg
Y29va2llLnR5cGUgPSBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXdDb29raWVUeXBlLlRpbWVsaW5l
czsKKworICAgICAgICBpZiAoIXRoaXMuX2N1cnJlbnRUaW1lbGluZVZpZXcgfHwgdGhpcy5fY3Vy
cmVudFRpbWVsaW5lVmlldyA9PT0gdGhpcy5fb3ZlcnZpZXdUaW1lbGluZVZpZXcpCisgICAgICAg
ICAgICBjb29raWVbV2ViSW5zcGVjdG9yLlRpbWVsaW5lQ29udGVudFZpZXcuU2VsZWN0ZWRUaW1l
bGluZVR5cGVDb29raWVLZXldID0gV2ViSW5zcGVjdG9yLlRpbWVsaW5lQ29udGVudFZpZXcuT3Zl
cnZpZXdUaW1lbGluZVZpZXdDb29raWVWYWx1ZTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
Y29va2llW1dlYkluc3BlY3Rvci5UaW1lbGluZUNvbnRlbnRWaWV3LlNlbGVjdGVkVGltZWxpbmVU
eXBlQ29va2llS2V5XSA9IHRoaXMuX2N1cnJlbnRUaW1lbGluZVZpZXcucmVwcmVzZW50ZWRPYmpl
Y3QudHlwZTsKKyAgICB9LAorCisgICAgcmVzdG9yZUZyb21Db29raWU6IGZ1bmN0aW9uKGNvb2tp
ZSkKKyAgICB7CisgICAgICAgIHZhciB0aW1lbGluZVR5cGUgPSBjb29raWVbV2ViSW5zcGVjdG9y
LlRpbWVsaW5lQ29udGVudFZpZXcuU2VsZWN0ZWRUaW1lbGluZVR5cGVDb29raWVLZXldOworCisg
ICAgICAgIGlmICh0aW1lbGluZVR5cGUgPT09IFdlYkluc3BlY3Rvci5UaW1lbGluZUNvbnRlbnRW
aWV3Lk92ZXJ2aWV3VGltZWxpbmVWaWV3Q29va2llVmFsdWUpCisgICAgICAgICAgICB0aGlzLnNo
b3dPdmVydmlld1RpbWVsaW5lVmlldygpOworICAgICAgICBlbHNlCisgICAgICAgICAgICB0aGlz
LnNob3dUaW1lbGluZVZpZXdGb3JUaW1lbGluZSh0aGlzLnJlcHJlc2VudGVkT2JqZWN0LnRpbWVs
aW5lcy5nZXQodGltZWxpbmVUeXBlKSk7CisgICAgfSwKKwogICAgIG1hdGNoVHJlZUVsZW1lbnRB
Z2FpbnN0Q3VzdG9tRmlsdGVyczogZnVuY3Rpb24odHJlZUVsZW1lbnQpCiAgICAgewogICAgICAg
ICBpZiAodGhpcy5fY3VycmVudFRpbWVsaW5lVmlldyAmJiAhdGhpcy5fY3VycmVudFRpbWVsaW5l
Vmlldy5tYXRjaFRyZWVFbGVtZW50QWdhaW5zdEN1c3RvbUZpbHRlcnModHJlZUVsZW1lbnQpKQpA
QCAtMjI0LDcgKzI1NCw3IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZUNvbnRlbnRWaWV3LnByb3Rv
dHlwZSA9IHsKIAogICAgIF9wYXRoQ29tcG9uZW50U2VsZWN0ZWQ6IGZ1bmN0aW9uKGV2ZW50KQog
ICAgIHsKLSAgICAgICAgV2ViSW5zcGVjdG9yLnRpbWVsaW5lU2lkZWJhclBhbmVsLnNob3dUaW1l
bGluZVZpZXcoZXZlbnQuZGF0YS5wYXRoQ29tcG9uZW50LnJlcHJlc2VudGVkT2JqZWN0KTsKKyAg
ICAgICAgV2ViSW5zcGVjdG9yLnRpbWVsaW5lU2lkZWJhclBhbmVsLnNob3dUaW1lbGluZVZpZXdG
b3JUeXBlKGV2ZW50LmRhdGEucGF0aENvbXBvbmVudC5yZXByZXNlbnRlZE9iamVjdC50eXBlKTsK
ICAgICB9LAogCiAgICAgX3RpbWVsaW5lVmlld1NlbGVjdGlvblBhdGhDb21wb25lbnRzRGlkQ2hh
bmdlOiBmdW5jdGlvbigpCkBAIC0yMzIsMTEgKzI2MiwxMiBAQCBXZWJJbnNwZWN0b3IuVGltZWxp
bmVDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRv
TGlzdGVuZXJzKFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5FdmVudC5TZWxlY3Rpb25QYXRoQ29t
cG9uZW50c0RpZENoYW5nZSk7CiAgICAgfSwKIAotICAgIF9zaG93VGltZWxpbmVWaWV3OiBmdW5j
dGlvbih0aW1lbGluZVZpZXcsIGlkZW50aWZpZXIpCisgICAgX3Nob3dUaW1lbGluZVZpZXc6IGZ1
bmN0aW9uKHRpbWVsaW5lVmlldykKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRpbWVs
aW5lVmlldyBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5UaW1lbGluZVZpZXcpOwogCi0gICAgICAg
IGlmICh0aGlzLl9jdXJyZW50VGltZWxpbmVWaWV3ID09PSB0aW1lbGluZVZpZXcpCisgICAgICAg
IC8vIElmIHRoZSBjb250ZW50IHZpZXcgaXMgc2hvd24gYW5kIHRoZW4gaGlkZGVuLCB3ZSBtdXN0
IHJlYXR0YWNoIHRoZSBjb250ZW50IHRyZWUgb3V0bGluZSBhbmQgdGltZWxpbmUgdmlldy4KKyAg
ICAgICAgaWYgKHRpbWVsaW5lVmlldy52aXNpYmxlICYmIHRpbWVsaW5lVmlldyA9PT0gdGhpcy5f
Y3VycmVudFRpbWVsaW5lVmlldykKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBpZiAo
dGhpcy5fY3VycmVudFRpbWVsaW5lVmlldykgewpAQCAtMjQ3LDcgKzI3OCw2IEBAIFdlYkluc3Bl
Y3Rvci5UaW1lbGluZUNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAgICAg
ICAgIHRoaXMuX2N1cnJlbnRUaW1lbGluZVZpZXcgPSB0aW1lbGluZVZpZXc7Ci0gICAgICAgIHRo
aXMuX2N1cnJlbnRUaW1lbGluZVZpZXdJZGVudGlmaWVyID0gaWRlbnRpZmllciB8fCBudWxsOwog
CiAgICAgICAgIFdlYkluc3BlY3Rvci50aW1lbGluZVNpZGViYXJQYW5lbC5jb250ZW50VHJlZU91
dGxpbmUgPSB0aW1lbGluZVZpZXcgJiYgdGltZWxpbmVWaWV3Lm5hdmlnYXRpb25TaWRlYmFyVHJl
ZU91dGxpbmU7CiAgICAgICAgIFdlYkluc3BlY3Rvci50aW1lbGluZVNpZGViYXJQYW5lbC5jb250
ZW50VHJlZU91dGxpbmVMYWJlbCA9IHRpbWVsaW5lVmlldyAmJiB0aW1lbGluZVZpZXcubmF2aWdh
dGlvblNpZGViYXJUcmVlT3V0bGluZUxhYmVsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVPdmVydmlld0dyYXBoLmpzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVPdmVydmlld0dy
YXBoLmpzCmluZGV4IGZhOGEwNWIzODNmNTY4NWFlZDg3YWNiYTk3NWY2YTYyZTgyMTUyMzUuLjFm
NmU0ZTc0ZTMyNGViYzNjZmIxZTk5MmVlMzkxNjBiNmRmNTZmMDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lT3ZlcnZpZXdHcmFw
aC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1l
bGluZU92ZXJ2aWV3R3JhcGguanMKQEAgLTIzLDggKzIzLDI5IEBACiAgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXdH
cmFwaCA9IGZ1bmN0aW9uKHJlY29yZGluZykKK1dlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3
R3JhcGggPSBmdW5jdGlvbih0aW1lbGluZSkKIHsKKyAgICBpZiAodGhpcy5jb25zdHJ1Y3RvciA9
PT0gV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXdHcmFwaCkgeworICAgICAgICAvLyBXaGVu
IGluc3RhbnRpYXRlZCBkaXJlY3RseSByZXR1cm4gYW4gaW5zdGFuY2Ugb2YgYSB0eXBlLWJhc2Vk
IGNvbmNyZXRlIHN1YmNsYXNzLgorCisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRpbWVsaW5lICYm
IHRpbWVsaW5lIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlRpbWVsaW5lKTsKKworICAgICAgICB2
YXIgdGltZWxpbmVUeXBlID0gdGltZWxpbmUudHlwZTsKKyAgICAgICAgaWYgKHRpbWVsaW5lVHlw
ZSA9PT0gV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkLlR5cGUuTmV0d29yaykKKyAgICAgICAg
ICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLk5ldHdvcmtUaW1lbGluZU92ZXJ2aWV3R3JhcGgo
dGltZWxpbmUpOworCisgICAgICAgIGlmICh0aW1lbGluZVR5cGUgPT09IFdlYkluc3BlY3Rvci5U
aW1lbGluZVJlY29yZC5UeXBlLkxheW91dCkKKyAgICAgICAgICAgIHJldHVybiBuZXcgV2ViSW5z
cGVjdG9yLkxheW91dFRpbWVsaW5lT3ZlcnZpZXdHcmFwaCh0aW1lbGluZSk7CisKKyAgICAgICAg
aWYgKHRpbWVsaW5lVHlwZSA9PT0gV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkLlR5cGUuU2Ny
aXB0KQorICAgICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuU2NyaXB0VGltZWxpbmVP
dmVydmlld0dyYXBoKHRpbWVsaW5lKTsKKworICAgICAgICB0aHJvdyBFcnJvcigiQ2FuJ3QgbWFr
ZSBhIGdyYXBoIGZvciBhbiB1bmtub3duIHRpbWVsaW5lLiIpOworICAgIH0KKworICAgIC8vIENv
bmNyZXRlIG9iamVjdCBpbnN0YW50aWF0aW9uLgorICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuY29u
c3RydWN0b3IgIT09IFdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3R3JhcGggJiYgdGhpcyBp
bnN0YW5jZW9mIFdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3R3JhcGgpOworCiAgICAgV2Vi
SW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOwogCiAgICAgdGhpcy5lbGVtZW50ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZVNpZGViYXJQYW5lbC5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lU2lkZWJhclBhbmVsLmpz
CmluZGV4IDhhMGRiY2I2OTJmNjNhMmYyMDdhMmUxM2ZhYTNiMTBmZjhhNTY3NmUuLjRkOWRhN2M2
ZWRiODY0YWFlMGY3Njk4NjBmNGJmOTc3ZjE4OTdiNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lU2lkZWJhclBhbmVsLmpzCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lU2lk
ZWJhclBhbmVsLmpzCkBAIC0zOCwxMSArMzgsNDAgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lk
ZWJhclBhbmVsID0gZnVuY3Rpb24oKQogICAgIHRoaXMuX3RpbWVsaW5lc0NvbnRlbnRDb250YWlu
ZXIuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwuVGltZWxp
bmVzQ29udGVudENvbnRhaW5lclN0eWxlQ2xhc3MpOwogICAgIHRoaXMuZWxlbWVudC5pbnNlcnRC
ZWZvcmUodGhpcy5fdGltZWxpbmVzQ29udGVudENvbnRhaW5lciwgdGhpcy5lbGVtZW50LmZpcnN0
Q2hpbGQpOwogCisgICAgLy8gTWFpbnRhaW4gYW4gaW52aXNpYmxlIHRyZWUgb3V0bGluZSBjb250
YWluaW5nIHRyZWUgZWxlbWVudHMgZm9yIGFsbCByZWNvcmRpbmdzLgorICAgIC8vIFRoZSB2aXNp
YmxlIHJlY29yZGluZydzIHRyZWUgZWxlbWVudCBpcyBzZWxlY3RlZCB3aGVuIHRoZSBjb250ZW50
IHZpZXcgY2hhbmdlcy4KKyAgICB0aGlzLl9yZWNvcmRpbmdUcmVlRWxlbWVudE1hcCA9IG5ldyBN
YXA7CisgICAgdGhpcy5fcmVjb3JkaW5nc1RyZWVPdXRsaW5lID0gdGhpcy5jcmVhdGVDb250ZW50
VHJlZU91dGxpbmUodHJ1ZSwgdHJ1ZSk7CisgICAgdGhpcy5fcmVjb3JkaW5nc1RyZWVPdXRsaW5l
LmVsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQYW5l
bC5IaWRlRGlzY2xvc3VyZUJ1dHRvbnNTdHlsZUNsYXNzTmFtZSk7CisgICAgdGhpcy5fcmVjb3Jk
aW5nc1RyZWVPdXRsaW5lLmVsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuTmF2aWdh
dGlvblNpZGViYXJQYW5lbC5Db250ZW50VHJlZU91dGxpbmVFbGVtZW50SGlkZGVuU3R5bGVDbGFz
c05hbWUpOworICAgIHRoaXMuX3JlY29yZGluZ3NUcmVlT3V0bGluZS5vbnNlbGVjdCA9IHRoaXMu
X3JlY29yZGluZ3NUcmVlRWxlbWVudFNlbGVjdGVkLmJpbmQodGhpcyk7CisgICAgdGhpcy5fdGlt
ZWxpbmVzQ29udGVudENvbnRhaW5lci5hcHBlbmRDaGlsZCh0aGlzLl9yZWNvcmRpbmdzVHJlZU91
dGxpbmUuZWxlbWVudCk7CisKICAgICB0aGlzLl90aW1lbGluZXNUcmVlT3V0bGluZSA9IHRoaXMu
Y3JlYXRlQ29udGVudFRyZWVPdXRsaW5lKHRydWUsIHRydWUpOwogICAgIHRoaXMuX3RpbWVsaW5l
c1RyZWVPdXRsaW5lLmVsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuTmF2aWdhdGlv
blNpZGViYXJQYW5lbC5IaWRlRGlzY2xvc3VyZUJ1dHRvbnNTdHlsZUNsYXNzTmFtZSk7CiAgICAg
dGhpcy5fdGltZWxpbmVzVHJlZU91dGxpbmUub25zZWxlY3QgPSB0aGlzLl90aW1lbGluZXNUcmVl
RWxlbWVudFNlbGVjdGVkLmJpbmQodGhpcyk7CiAgICAgdGhpcy5fdGltZWxpbmVzQ29udGVudENv
bnRhaW5lci5hcHBlbmRDaGlsZCh0aGlzLl90aW1lbGluZXNUcmVlT3V0bGluZS5lbGVtZW50KTsK
IAorICAgIGZ1bmN0aW9uIGNyZWF0ZVRpbWVsaW5lVHJlZUVsZW1lbnQobGFiZWwsIGljb25DbGFz
cywgaWRlbnRpZmllcikKKyAgICB7CisgICAgICAgIHZhciB0cmVlRWxlbWVudCA9IG5ldyBXZWJJ
bnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50KFtpY29uQ2xhc3MsIFdlYkluc3BlY3Rvci5UaW1l
bGluZVNpZGViYXJQYW5lbC5MYXJnZUljb25TdHlsZUNsYXNzXSwgbGFiZWwsIG51bGwsIGlkZW50
aWZpZXIpOworICAgICAgICB2YXIgY2xvc2VCdXR0b24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJpbWciKTsKKyAgICAgICAgY2xvc2VCdXR0b24uY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3Iu
VGltZWxpbmVTaWRlYmFyUGFuZWwuQ2xvc2VCdXR0b25TdHlsZUNsYXNzKTsKKyAgICAgICAgY2xv
c2VCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLnNob3dUaW1lbGluZU92ZXJ2
aWV3LmJpbmQodGhpcykpOworICAgICAgICB0cmVlRWxlbWVudC5zdGF0dXMgPSBjbG9zZUJ1dHRv
bjsKKyAgICAgICAgcmV0dXJuIHRyZWVFbGVtZW50OworICAgIH0KKworICAgIC8vIFRpbWVsaW5l
IGVsZW1lbnRzIGFyZSByZXVzZWQ7IGNsaWNraW5nIHRoZW0gZGlzcGxheXMgYSBUaW1lbGluZVZp
ZXcKKyAgICAvLyBmb3IgdGhlIHJlbGV2YW50IHRpbWVsaW5lIG9mIHRoZSBhY3RpdmUgcmVjb3Jk
aW5nLgorICAgIHRoaXMuX3RpbWVsaW5lVHJlZUVsZW1lbnRNYXAgPSBuZXcgTWFwOworICAgIHRo
aXMuX3RpbWVsaW5lVHJlZUVsZW1lbnRNYXAuc2V0KFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29y
ZC5UeXBlLk5ldHdvcmssIGNyZWF0ZVRpbWVsaW5lVHJlZUVsZW1lbnQuY2FsbCh0aGlzLCBXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIk5ldHdvcmsgUmVxdWVzdHMiKSwgV2ViSW5zcGVjdG9yLlRpbWVs
aW5lU2lkZWJhclBhbmVsLk5ldHdvcmtJY29uU3R5bGVDbGFzcywgV2ViSW5zcGVjdG9yLlRpbWVs
aW5lUmVjb3JkLlR5cGUuTmV0d29yaykpOworICAgIHRoaXMuX3RpbWVsaW5lVHJlZUVsZW1lbnRN
YXAuc2V0KFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZC5UeXBlLkxheW91dCwgY3JlYXRlVGlt
ZWxpbmVUcmVlRWxlbWVudC5jYWxsKHRoaXMsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiTGF5b3V0
ICYgUmVuZGVyaW5nIiksIFdlYkluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5Db2xvcnNJ
Y29uU3R5bGVDbGFzcywgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkLlR5cGUuTGF5b3V0KSk7
CisgICAgdGhpcy5fdGltZWxpbmVUcmVlRWxlbWVudE1hcC5zZXQoV2ViSW5zcGVjdG9yLlRpbWVs
aW5lUmVjb3JkLlR5cGUuU2NyaXB0LCBjcmVhdGVUaW1lbGluZVRyZWVFbGVtZW50LmNhbGwodGhp
cywgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJKYXZhU2NyaXB0ICYgRXZlbnRzIiksIFdlYkluc3Bl
Y3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5TY3JpcHRJY29uU3R5bGVDbGFzcywgV2ViSW5zcGVj
dG9yLlRpbWVsaW5lUmVjb3JkLlR5cGUuU2NyaXB0KSk7CisKKyAgICBmb3IgKHZhciB0aW1lbGlu
ZVRyZWVFbGVtZW50IG9mIHRoaXMuX3RpbWVsaW5lVHJlZUVsZW1lbnRNYXAudmFsdWVzKCkpCisg
ICAgICAgIHRoaXMuX3RpbWVsaW5lc1RyZWVPdXRsaW5lLmFwcGVuZENoaWxkKHRpbWVsaW5lVHJl
ZUVsZW1lbnQpOworCiAgICAgdmFyIHRpbWVsaW5lc1RpdGxlQmFyRWxlbWVudCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgIHRpbWVsaW5lc1RpdGxlQmFyRWxlbWVudC50ZXh0
Q29udGVudCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiVGltZWxpbmVzIik7CiAgICAgdGltZWxp
bmVzVGl0bGVCYXJFbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lk
ZWJhclBhbmVsLlRpdGxlQmFyU3R5bGVDbGFzcyk7CkBAIC05MSwyNiArMTIwLDggQEAgV2ViSW5z
cGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsID0gZnVuY3Rpb24oKQogICAgIHRoaXMuX25hdmln
YXRpb25CYXIuZWxlbWVudC5vbmNvbnRleHRtZW51ID0gdGhpcy5fY29udGV4dE1lbnVOYXZpZ2F0
aW9uQmFyT3JTdGF0dXNCYXIuYmluZCh0aGlzKTsKICAgICB0aGlzLl91cGRhdGVSZXBsYXlJbnRl
cmZhY2VWaXNpYmlsaXR5KCk7CiAKLSAgICBmdW5jdGlvbiBjcmVhdGVUaW1lbGluZVRyZWVFbGVt
ZW50KGxhYmVsLCBpY29uQ2xhc3MsIGlkZW50aWZpZXIpCi0gICAgewotICAgICAgICB2YXIgdHJl
ZUVsZW1lbnQgPSBuZXcgV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudChbaWNvbkNsYXNz
LCBXZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwuTGFyZ2VJY29uU3R5bGVDbGFzc10s
IGxhYmVsLCBudWxsLCBpZGVudGlmaWVyKTsKLSAgICAgICAgdmFyIGNsb3NlQnV0dG9uID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiaW1nIik7Ci0gICAgICAgIGNsb3NlQnV0dG9uLmNsYXNzTGlz
dC5hZGQoV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsLkNsb3NlQnV0dG9uU3R5bGVD
bGFzcyk7Ci0gICAgICAgIGNsb3NlQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhp
cy5zaG93VGltZWxpbmVPdmVydmlldy5iaW5kKHRoaXMpKTsKLSAgICAgICAgdHJlZUVsZW1lbnQu
c3RhdHVzID0gY2xvc2VCdXR0b247Ci0gICAgICAgIHJldHVybiB0cmVlRWxlbWVudDsKLSAgICB9
Ci0KLSAgICB0aGlzLl90aW1lbGluZVRyZWVFbGVtZW50TWFwID0gbmV3IE1hcDsKLSAgICB0aGlz
Ll90aW1lbGluZVRyZWVFbGVtZW50TWFwLnNldChXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmQu
VHlwZS5OZXR3b3JrLCBjcmVhdGVUaW1lbGluZVRyZWVFbGVtZW50LmNhbGwodGhpcywgV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJOZXR3b3JrIFJlcXVlc3RzIiksIFdlYkluc3BlY3Rvci5UaW1lbGlu
ZVNpZGViYXJQYW5lbC5OZXR3b3JrSWNvblN0eWxlQ2xhc3MsIFdlYkluc3BlY3Rvci5UaW1lbGlu
ZVJlY29yZC5UeXBlLk5ldHdvcmspKTsKLSAgICB0aGlzLl90aW1lbGluZVRyZWVFbGVtZW50TWFw
LnNldChXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmQuVHlwZS5MYXlvdXQsIGNyZWF0ZVRpbWVs
aW5lVHJlZUVsZW1lbnQuY2FsbCh0aGlzLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkxheW91dCAm
IFJlbmRlcmluZyIpLCBXZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwuQ29sb3JzSWNv
blN0eWxlQ2xhc3MsIFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZC5UeXBlLkxheW91dCkpOwot
ICAgIHRoaXMuX3RpbWVsaW5lVHJlZUVsZW1lbnRNYXAuc2V0KFdlYkluc3BlY3Rvci5UaW1lbGlu
ZVJlY29yZC5UeXBlLlNjcmlwdCwgY3JlYXRlVGltZWxpbmVUcmVlRWxlbWVudC5jYWxsKHRoaXMs
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiSmF2YVNjcmlwdCAmIEV2ZW50cyIpLCBXZWJJbnNwZWN0
b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwuU2NyaXB0SWNvblN0eWxlQ2xhc3MsIFdlYkluc3BlY3Rv
ci5UaW1lbGluZVJlY29yZC5UeXBlLlNjcmlwdCkpOwotCi0gICAgZm9yICh2YXIgdGltZWxpbmVU
cmVlRWxlbWVudCBvZiB0aGlzLl90aW1lbGluZVRyZWVFbGVtZW50TWFwLnZhbHVlcygpKQotICAg
ICAgICB0aGlzLl90aW1lbGluZXNUcmVlT3V0bGluZS5hcHBlbmRDaGlsZCh0aW1lbGluZVRyZWVF
bGVtZW50KTsKLQotICAgIHRoaXMuX3RpbWVsaW5lT3ZlcnZpZXdUcmVlRWxlbWVudCA9IG5ldyBX
ZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50KFdlYkluc3BlY3Rvci5UaW1lbGluZVNpZGVi
YXJQYW5lbC5TdG9wd2F0Y2hJY29uU3R5bGVDbGFzcywgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJU
aW1lbGluZXMiKSwgbnVsbCwgV2ViSW5zcGVjdG9yLnRpbWVsaW5lTWFuYWdlci5hY3RpdmVSZWNv
cmRpbmcpOwotICAgIHRoaXMuX3RpbWVsaW5lT3ZlcnZpZXdUcmVlRWxlbWVudC5hZGRFdmVudExp
c3RlbmVyKFdlYkluc3BlY3Rvci5IaWVyYXJjaGljYWxQYXRoQ29tcG9uZW50LkV2ZW50LlNpYmxp
bmdXYXNTZWxlY3RlZCwgdGhpcy5zaG93VGltZWxpbmVPdmVydmlldywgdGhpcyk7CisgICAgV2Vi
SW5zcGVjdG9yLnRpbWVsaW5lTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5U
aW1lbGluZU1hbmFnZXIuRXZlbnQuUmVjb3JkaW5nQ3JlYXRlZCwgdGhpcy5fcmVjb3JkaW5nQ3Jl
YXRlZCwgdGhpcyk7CisgICAgV2ViSW5zcGVjdG9yLnRpbWVsaW5lTWFuYWdlci5hZGRFdmVudExp
c3RlbmVyKFdlYkluc3BlY3Rvci5UaW1lbGluZU1hbmFnZXIuRXZlbnQuUmVjb3JkaW5nTG9hZGVk
LCB0aGlzLl9yZWNvcmRpbmdMb2FkZWQsIHRoaXMpOwogCiAgICAgdGhpcy5fc3RyaXBlQmFja2dy
b3VuZEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICB0aGlzLl9z
dHJpcGVCYWNrZ3JvdW5kRWxlbWVudC5jbGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuVGltZWxpbmVT
aWRlYmFyUGFuZWwuU3RyaXBlQmFja2dyb3VuZFN0eWxlQ2xhc3M7CkBAIC0xMzksNiArMTUwLDcg
QEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsLk5ldHdvcmtJY29uU3R5bGVDbGFz
cyA9ICJuZXR3b3JrLWljb24iOwogV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsLkNv
bG9yc0ljb25TdHlsZUNsYXNzID0gImNvbG9ycy1pY29uIjsKIFdlYkluc3BlY3Rvci5UaW1lbGlu
ZVNpZGViYXJQYW5lbC5TY3JpcHRJY29uU3R5bGVDbGFzcyA9ICJzY3JpcHQtaWNvbiI7CiBXZWJJ
bnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwuVGltZWxpbmVDb250ZW50Vmlld1Nob3dpbmdT
dHlsZUNsYXNzID0gInRpbWVsaW5lLWNvbnRlbnQtdmlldy1zaG93aW5nIjsKKwogV2ViSW5zcGVj
dG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsLlNob3dpbmdUaW1lbGluZUNvbnRlbnRWaWV3Q29va2ll
S2V5ID0gInRpbWVsaW5lLXNpZGViYXItcGFuZWwtc2hvd2luZy10aW1lbGluZS1jb250ZW50LXZp
ZXciOwogV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsLlNlbGVjdGVkVGltZWxpbmVW
aWV3SWRlbnRpZmllckNvb2tpZUtleSA9ICJ0aW1lbGluZS1zaWRlYmFyLXBhbmVsLXNlbGVjdGVk
LXRpbWVsaW5lLXZpZXctaWRlbnRpZmllciI7CiBXZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFy
UGFuZWwuT3ZlcnZpZXdUaW1lbGluZUlkZW50aWZpZXJDb29raWVWYWx1ZSA9ICJvdmVydmlldyI7
CkBAIC0xNDksMjEgKzE2MSwyOSBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwu
cHJvdG90eXBlID0gewogCiAgICAgLy8gUHVibGljCiAKLSAgICBpbml0aWFsaXplOiBmdW5jdGlv
bigpCisgICAgc2hvd246IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIC8vIFByaW1lIHRoZSBj
cmVhdGlvbiBvZiB0aGUgc2luZ2xldG9uIFRpbWVsaW5lQ29udGVudFZpZXcgc2luY2UgaXQgbmVl
ZHMgdG8gbGlzdGVuIGZvciBldmVudHMuCi0gICAgICAgIHRoaXMuX3RpbWVsaW5lQ29udGVudFZp
ZXcgPSBXZWJJbnNwZWN0b3IuY29udGVudEJyb3dzZXIuY29udGVudFZpZXdGb3JSZXByZXNlbnRl
ZE9iamVjdChXZWJJbnNwZWN0b3IudGltZWxpbmVNYW5hZ2VyLmFjdGl2ZVJlY29yZGluZyk7Cisg
ICAgICAgIFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLnByb3RvdHlwZS5zaG93
bi5jYWxsKHRoaXMpOworCisgICAgICAgIGlmICh0aGlzLl9hY3RpdmVDb250ZW50VmlldykKKyAg
ICAgICAgICAgIFdlYkluc3BlY3Rvci5jb250ZW50QnJvd3Nlci5zaG93Q29udGVudFZpZXcodGhp
cy5fYWN0aXZlQ29udGVudFZpZXcpOwogICAgIH0sCiAKICAgICBzaG93RGVmYXVsdENvbnRlbnRW
aWV3OiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICBXZWJJbnNwZWN0b3IuY29udGVudEJyb3dz
ZXIuc2hvd0NvbnRlbnRWaWV3KHRoaXMuX3RpbWVsaW5lQ29udGVudFZpZXcpOworICAgICAgICBp
ZiAodGhpcy5fYWN0aXZlQ29udGVudFZpZXcpCisgICAgICAgICAgICB0aGlzLnNob3dUaW1lbGlu
ZU92ZXJ2aWV3KCk7CisgICAgfSwKKworICAgIGdldCBoYXNTZWxlY3RlZEVsZW1lbnQoKQorICAg
IHsKKyAgICAgICAgcmV0dXJuICEhdGhpcy5fY29udGVudFRyZWVPdXRsaW5lLnNlbGVjdGVkVHJl
ZUVsZW1lbnQgfHwgISF0aGlzLl9yZWNvcmRpbmdzVHJlZU91dGxpbmUuc2VsZWN0ZWRUcmVlRWxl
bWVudDsKICAgICB9LAogCiAgICAgdHJlZUVsZW1lbnRGb3JSZXByZXNlbnRlZE9iamVjdDogZnVu
Y3Rpb24ocmVwcmVzZW50ZWRPYmplY3QpCiAgICAgewogICAgICAgICBpZiAocmVwcmVzZW50ZWRP
YmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRpbmcpCi0gICAgICAg
ICAgICByZXR1cm4gdGhpcy5fdGltZWxpbmVPdmVydmlld1RyZWVFbGVtZW50OworICAgICAgICAg
ICAgcmV0dXJuIHRoaXMuX3JlY29yZGluZ1RyZWVFbGVtZW50TWFwLmdldChyZXByZXNlbnRlZE9i
amVjdCk7CiAKICAgICAgICAgLy8gVGhlIG1haW4gcmVzb3VyY2UgaXMgdXNlZCBhcyB0aGUgcmVw
cmVzZW50ZWRPYmplY3QgaW5zdGVhZCBvZiBGcmFtZSBpbiBvdXIgdHJlZS4KICAgICAgICAgaWYg
KHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkZyYW1lKQpAQCAtMjAw
LDcgKzIyMCw3IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5wcm90b3R5cGUg
PSB7CiAgICAgICAgICAgICBpZiAoY2FuZGlkYXRlUmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2Vv
ZiBXZWJJbnNwZWN0b3IuUHJvZmlsZU5vZGUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgICAgICAgICBjb25zb2xlLmVycm9yKCJVbmtub3duIFRyZWVFbGVtZW50Iik7Cisg
ICAgICAgICAgICBjb25zb2xlLmVycm9yKCJVbmtub3duIFRyZWVFbGVtZW50IiwgY2FuZGlkYXRl
VHJlZUVsZW1lbnQpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKQEAg
LTIzNywyMCArMjU3LDIwIEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5wcm90
b3R5cGUgPSB7CiAgICAgICAgIGlmICh0aGlzLl90aW1lbGluZXNUcmVlT3V0bGluZS5zZWxlY3Rl
ZFRyZWVFbGVtZW50KQogICAgICAgICAgICAgdGhpcy5fdGltZWxpbmVzVHJlZU91dGxpbmUuc2Vs
ZWN0ZWRUcmVlRWxlbWVudC5kZXNlbGVjdCgpOwogCi0gICAgICAgIHRoaXMuX3RpbWVsaW5lQ29u
dGVudFZpZXcuc2hvd092ZXJ2aWV3VGltZWxpbmVWaWV3KCk7Ci0gICAgICAgIFdlYkluc3BlY3Rv
ci5jb250ZW50QnJvd3Nlci5zaG93Q29udGVudFZpZXcodGhpcy5fdGltZWxpbmVDb250ZW50Vmll
dyk7CisgICAgICAgIHRoaXMuX2FjdGl2ZUNvbnRlbnRWaWV3LnNob3dPdmVydmlld1RpbWVsaW5l
VmlldygpOworICAgICAgICBXZWJJbnNwZWN0b3IuY29udGVudEJyb3dzZXIuc2hvd0NvbnRlbnRW
aWV3KHRoaXMuX2FjdGl2ZUNvbnRlbnRWaWV3KTsKICAgICB9LAogCi0gICAgc2hvd1RpbWVsaW5l
VmlldzogZnVuY3Rpb24oaWRlbnRpZmllcikKKyAgICBzaG93VGltZWxpbmVWaWV3Rm9yVHlwZTog
ZnVuY3Rpb24odGltZWxpbmVUeXBlKQogICAgIHsKLSAgICAgICAgY29uc29sZS5hc3NlcnQodGhp
cy5fdGltZWxpbmVUcmVlRWxlbWVudE1hcC5oYXMoaWRlbnRpZmllcikpOwotICAgICAgICBpZiAo
IXRoaXMuX3RpbWVsaW5lVHJlZUVsZW1lbnRNYXAuaGFzKGlkZW50aWZpZXIpKQorICAgICAgICBj
b25zb2xlLmFzc2VydCh0aGlzLl90aW1lbGluZVRyZWVFbGVtZW50TWFwLmhhcyh0aW1lbGluZVR5
cGUpLCB0aW1lbGluZVR5cGUpOworICAgICAgICBpZiAoIXRoaXMuX3RpbWVsaW5lVHJlZUVsZW1l
bnRNYXAuaGFzKHRpbWVsaW5lVHlwZSkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAg
dGhpcy5fdGltZWxpbmVUcmVlRWxlbWVudE1hcC5nZXQoaWRlbnRpZmllcikuc2VsZWN0KHRydWUs
IGZhbHNlLCB0cnVlLCB0cnVlKTsKLQotICAgICAgICB0aGlzLl90aW1lbGluZUNvbnRlbnRWaWV3
LnNob3dUaW1lbGluZVZpZXcoaWRlbnRpZmllcik7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5jb250
ZW50QnJvd3Nlci5zaG93Q29udGVudFZpZXcodGhpcy5fdGltZWxpbmVDb250ZW50Vmlldyk7Cisg
ICAgICAgIC8vIERlZmVyIHNob3dpbmcgdGhlIHJlbGV2YW50IHRpbWVsaW5lIHRvIHRoZSBvbnNl
bGVjdCBoYW5kbGVyIG9mIHRoZSB0aW1lbGluZXMgdHJlZSBlbGVtZW50LgorICAgICAgICBjb25z
dCB3YXNTZWxlY3RlZEJ5VXNlciA9IHRydWU7CisgICAgICAgIGNvbnN0IHNob3VsZFN1cHByZXNz
T25TZWxlY3QgPSBmYWxzZTsKKyAgICAgICAgdGhpcy5fdGltZWxpbmVUcmVlRWxlbWVudE1hcC5n
ZXQodGltZWxpbmVUeXBlKS5zZWxlY3QodHJ1ZSwgd2FzU2VsZWN0ZWRCeVVzZXIsIHNob3VsZFN1
cHByZXNzT25TZWxlY3QsIHRydWUpOwogICAgIH0sCiAKICAgICAvLyBQcm90ZWN0ZWQKQEAgLTI3
MywxMCArMjkzLDEwIEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5wcm90b3R5
cGUgPSB7CiAKICAgICBtYXRjaFRyZWVFbGVtZW50QWdhaW5zdEN1c3RvbUZpbHRlcnM6IGZ1bmN0
aW9uKHRyZWVFbGVtZW50KQogICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLl90aW1lbGluZUNvbnRl
bnRWaWV3KQorICAgICAgICBpZiAoIXRoaXMuX2FjdGl2ZUNvbnRlbnRWaWV3KQogICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAKLSAgICAgICAgcmV0dXJuIHRoaXMuX3RpbWVsaW5lQ29udGVudFZp
ZXcubWF0Y2hUcmVlRWxlbWVudEFnYWluc3RDdXN0b21GaWx0ZXJzKHRyZWVFbGVtZW50KTsKKyAg
ICAgICAgcmV0dXJuIHRoaXMuX2FjdGl2ZUNvbnRlbnRWaWV3Lm1hdGNoVHJlZUVsZW1lbnRBZ2Fp
bnN0Q3VzdG9tRmlsdGVycyh0cmVlRWxlbWVudCk7CiAgICAgfSwKIAogICAgIGNhblNob3dEaWZm
ZXJlbnRDb250ZW50VmlldzogZnVuY3Rpb24oKQpAQCAtMjg4LDExICszMDgsMTEgQEAgV2ViSW5z
cGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAg
IGNvbnNvbGUuYXNzZXJ0KGNvb2tpZSk7CiAKLSAgICAgICAgY29va2llW1dlYkluc3BlY3Rvci50
aW1lbGluZVNpZGViYXJQYW5lbC5TaG93aW5nVGltZWxpbmVDb250ZW50Vmlld0Nvb2tpZUtleV0g
PSBXZWJJbnNwZWN0b3IuY29udGVudEJyb3dzZXIuY3VycmVudENvbnRlbnRWaWV3IGluc3RhbmNl
b2YgV2ViSW5zcGVjdG9yLlRpbWVsaW5lQ29udGVudFZpZXc7CisgICAgICAgIGNvb2tpZVtXZWJJ
bnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwuU2hvd2luZ1RpbWVsaW5lQ29udGVudFZpZXdD
b29raWVLZXldID0gV2ViSW5zcGVjdG9yLmNvbnRlbnRCcm93c2VyLmN1cnJlbnRDb250ZW50Vmll
dyBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5UaW1lbGluZUNvbnRlbnRWaWV3OwogCiAgICAgICAg
IHZhciBzZWxlY3RlZFRyZWVFbGVtZW50ID0gdGhpcy5fdGltZWxpbmVzVHJlZU91dGxpbmUuc2Vs
ZWN0ZWRUcmVlRWxlbWVudDsKICAgICAgICAgaWYgKHNlbGVjdGVkVHJlZUVsZW1lbnQpCi0gICAg
ICAgICAgICBjb29raWVbV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsLlNlbGVjdGVk
VGltZWxpbmVWaWV3SWRlbnRpZmllckNvb2tpZUtleV0gPSBzZWxlY3RlZFRyZWVFbGVtZW50LnJl
cHJlc2VudGVkT2JqZWN0OworICAgICAgICAgICAgY29va2llW1dlYkluc3BlY3Rvci5UaW1lbGlu
ZVNpZGViYXJQYW5lbC5TZWxlY3RlZFRpbWVsaW5lVmlld0lkZW50aWZpZXJDb29raWVLZXldID0g
c2VsZWN0ZWRUcmVlRWxlbWVudC5yZXByZXNlbnRlZE9iamVjdC50eXBlOwogICAgICAgICBlbHNl
CiAgICAgICAgICAgICBjb29raWVbV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsLlNl
bGVjdGVkVGltZWxpbmVWaWV3SWRlbnRpZmllckNvb2tpZUtleV0gPSBXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVTaWRlYmFyUGFuZWwuT3ZlcnZpZXdUaW1lbGluZUlkZW50aWZpZXJDb29raWVWYWx1ZTsK
IApAQCAtMzAzLDM4ICszMjMsNjMgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVs
LnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGNvb2tpZSk7CiAK
LSAgICAgICAgLy8gVGhlIF90aW1lbGluZUNvbnRlbnRWaWV3IGlzIG5vdCByZWFkeSBvbiBpbml0
aWFsIGxvYWQsIHNvIGRlbGF5IHRoZSByZXN0b3JlLgorICAgICAgICAvLyBUaGUgX2FjdGl2ZUNv
bnRlbnRWaWV3IGlzIG5vdCByZWFkeSBvbiBpbml0aWFsIGxvYWQsIHNvIGRlbGF5IHRoZSByZXN0
b3JlLgogICAgICAgICAvLyBUaGlzIG1hdGNoZXMgdGhlIGRlbGF5ZWQgd29yayBpbiB0aGUgV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsIGNvbnN0cnVjdG9yLgotICAgICAgICBpZiAo
IXRoaXMuX3RpbWVsaW5lQ29udGVudFZpZXcpIHsKKyAgICAgICAgaWYgKCF0aGlzLl9hY3RpdmVD
b250ZW50VmlldykgewogICAgICAgICAgICAgc2V0VGltZW91dCh0aGlzLnJlc3RvcmVTdGF0ZUZy
b21Db29raWUuYmluZCh0aGlzLCBjb29raWUsIHJlbGF4ZWRNYXRjaERlbGF5KSwgMCk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICB0aGlzLl9yZXN0b3JlZFNob3dp
bmdUaW1lbGluZUNvbnRlbnRWaWV3ID0gY29va2llW1dlYkluc3BlY3Rvci50aW1lbGluZVNpZGVi
YXJQYW5lbC5TaG93aW5nVGltZWxpbmVDb250ZW50Vmlld0Nvb2tpZUtleV07CisgICAgICAgIHRo
aXMuX3Jlc3RvcmVkU2hvd2luZ1RpbWVsaW5lQ29udGVudFZpZXcgPSBjb29raWVbV2ViSW5zcGVj
dG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsLlNob3dpbmdUaW1lbGluZUNvbnRlbnRWaWV3Q29va2ll
S2V5XTsKIAogICAgICAgICB2YXIgc2VsZWN0ZWRUaW1lbGluZVZpZXdJZGVudGlmaWVyID0gY29v
a2llW1dlYkluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5TZWxlY3RlZFRpbWVsaW5lVmll
d0lkZW50aWZpZXJDb29raWVLZXldOwogICAgICAgICBpZiAoc2VsZWN0ZWRUaW1lbGluZVZpZXdJ
ZGVudGlmaWVyID09PSBXZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwuT3ZlcnZpZXdU
aW1lbGluZUlkZW50aWZpZXJDb29raWVWYWx1ZSkKICAgICAgICAgICAgIHRoaXMuc2hvd1RpbWVs
aW5lT3ZlcnZpZXcoKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgdGhpcy5zaG93VGltZWxp
bmVWaWV3KHNlbGVjdGVkVGltZWxpbmVWaWV3SWRlbnRpZmllcik7CisgICAgICAgICAgICB0aGlz
LnNob3dUaW1lbGluZVZpZXdGb3JUeXBlKHNlbGVjdGVkVGltZWxpbmVWaWV3SWRlbnRpZmllcik7
CiAKICAgICAgICAgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwucHJvdG90eXBl
LnJlc3RvcmVTdGF0ZUZyb21Db29raWUuY2FsbCh0aGlzLCBjb29raWUsIHJlbGF4ZWRNYXRjaERl
bGF5KTsKICAgICB9LAogCiAgICAgLy8gUHJpdmF0ZQogCisgICAgX3JlY29yZGluZ3NUcmVlRWxl
bWVudFNlbGVjdGVkOiBmdW5jdGlvbih0cmVlRWxlbWVudCwgc2VsZWN0ZWRCeVVzZXIpCisgICAg
eworICAgICAgICBjb25zb2xlLmFzc2VydCh0cmVlRWxlbWVudC5yZXByZXNlbnRlZE9iamVjdCBp
bnN0YW5jZW9mIFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZGluZyk7CisgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KCFzZWxlY3RlZEJ5VXNlciwgIlJlY29yZGluZyB0cmVlIGVsZW1lbnRzIHNob3Vs
ZCBiZSBoaWRkZW4gYW5kIG9ubHkgcHJvZ3JhbW1hdGljYWxseSBzZWxlY3RhYmxlLiIpCisKKyAg
ICAgICAgdGhpcy5fYWN0aXZlQ29udGVudFZpZXcgPSBXZWJJbnNwZWN0b3IuY29udGVudEJyb3dz
ZXIuY29udGVudFZpZXdGb3JSZXByZXNlbnRlZE9iamVjdCh0cmVlRWxlbWVudC5yZXByZXNlbnRl
ZE9iamVjdCk7CisKKyAgICAgICAgLy8gRGVzZWxlY3Qgb3IgcmUtc2VsZWN0IHRoZSB0aW1lbGlu
ZSB0cmVlIGVsZW1lbnQgZm9yIHRoZSB0aW1lbGluZSB2aWV3IGJlaW5nIGRpc3BsYXllZC4KKyAg
ICAgICAgdmFyIGN1cnJlbnRUaW1lbGluZVZpZXcgPSB0aGlzLl9hY3RpdmVDb250ZW50Vmlldy5j
dXJyZW50VGltZWxpbmVWaWV3OworICAgICAgICBpZiAoY3VycmVudFRpbWVsaW5lVmlldyAmJiBj
dXJyZW50VGltZWxpbmVWaWV3LnJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVj
dG9yLlRpbWVsaW5lKSB7CisgICAgICAgICAgICBjb25zdCB3YXNTZWxlY3RlZEJ5VXNlciA9IGZh
bHNlOyAvLyBUaGlzIGlzIGEgc2ltdWxhdGVkIHNlbGVjdGlvbi4KKyAgICAgICAgICAgIGNvbnN0
IHNob3VsZFN1cHByZXNzT25TZWxlY3QgPSBmYWxzZTsKKyAgICAgICAgICAgIHRoaXMuX3RpbWVs
aW5lVHJlZUVsZW1lbnRNYXAuZ2V0KGN1cnJlbnRUaW1lbGluZVZpZXcucmVwcmVzZW50ZWRPYmpl
Y3QudHlwZSkuc2VsZWN0KHRydWUsIHdhc1NlbGVjdGVkQnlVc2VyLCBzaG91bGRTdXBwcmVzc09u
U2VsZWN0LCB0cnVlKTsKKyAgICAgICAgfSBlbHNlIGlmICh0aGlzLl90aW1lbGluZXNUcmVlT3V0
bGluZS5zZWxlY3RlZFRyZWVFbGVtZW50KQorICAgICAgICAgICAgdGhpcy5fdGltZWxpbmVzVHJl
ZU91dGxpbmUuc2VsZWN0ZWRUcmVlRWxlbWVudC5kZXNlbGVjdCgpOworICAgIH0sCisKICAgICBf
dGltZWxpbmVzVHJlZUVsZW1lbnRTZWxlY3RlZDogZnVuY3Rpb24odHJlZUVsZW1lbnQsIHNlbGVj
dGVkQnlVc2VyKQogICAgIHsKLSAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fdGltZWxpbmVU
cmVlRWxlbWVudE1hcC5nZXQodHJlZUVsZW1lbnQucmVwcmVzZW50ZWRPYmplY3QpID09PSB0cmVl
RWxlbWVudCk7Ci0gICAgICAgIHRoaXMuc2hvd1RpbWVsaW5lVmlldyh0cmVlRWxlbWVudC5yZXBy
ZXNlbnRlZE9iamVjdCk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX3RpbWVsaW5lVHJl
ZUVsZW1lbnRNYXAuZ2V0KHRyZWVFbGVtZW50LnJlcHJlc2VudGVkT2JqZWN0KSA9PT0gdHJlZUVs
ZW1lbnQsIHRyZWVFbGVtZW50KTsKKworICAgICAgICAvLyBJZiBub3Qgc2VsZWN0ZWQgYnkgdXNl
ciwgdGhlbiB0aGlzIHNlbGVjdGlvbiBtZXJlbHkgc3luY2VkIHRoZSB0cmVlIGVsZW1lbnQgd2l0
aCB0aGUgY29udGVudCB2aWV3J3MgY29udGVudHMuCisgICAgICAgIGlmICghc2VsZWN0ZWRCeVVz
ZXIpIHsKKyAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2FjdGl2ZUNvbnRlbnRWaWV3
LmN1cnJlbnRUaW1lbGluZVZpZXcucmVwcmVzZW50ZWRPYmplY3QudHlwZSA9PT0gdHJlZUVsZW1l
bnQucmVwcmVzZW50ZWRPYmplY3QpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisK
KyAgICAgICAgdmFyIHRpbWVsaW5lVHlwZSA9IHRyZWVFbGVtZW50LnJlcHJlc2VudGVkT2JqZWN0
OworICAgICAgICB2YXIgdGltZWxpbmUgPSB0aGlzLl9hY3RpdmVDb250ZW50Vmlldy5yZXByZXNl
bnRlZE9iamVjdC50aW1lbGluZXMuZ2V0KHRpbWVsaW5lVHlwZSk7CisgICAgICAgIHRoaXMuX2Fj
dGl2ZUNvbnRlbnRWaWV3LnNob3dUaW1lbGluZVZpZXdGb3JUaW1lbGluZSh0aW1lbGluZSk7Cisg
ICAgICAgIFdlYkluc3BlY3Rvci5jb250ZW50QnJvd3Nlci5zaG93Q29udGVudFZpZXcodGhpcy5f
YWN0aXZlQ29udGVudFZpZXcpOwogICAgIH0sCiAKICAgICBfY29udGVudEJyb3dzZXJDdXJyZW50
Q29udGVudFZpZXdEaWRDaGFuZ2U6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAgaWYg
KFdlYkluc3BlY3Rvci5jb250ZW50QnJvd3Nlci5jdXJyZW50Q29udGVudFZpZXcgaW5zdGFuY2Vv
ZiBXZWJJbnNwZWN0b3IuVGltZWxpbmVDb250ZW50VmlldykKLSAgICAgICAgICAgIHRoaXMuZWxl
bWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5UaW1l
bGluZUNvbnRlbnRWaWV3U2hvd2luZ1N0eWxlQ2xhc3MpOwotICAgICAgICBlbHNlCi0gICAgICAg
ICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShXZWJJbnNwZWN0b3IuVGltZWxpbmVT
aWRlYmFyUGFuZWwuVGltZWxpbmVDb250ZW50Vmlld1Nob3dpbmdTdHlsZUNsYXNzKTsKKyAgICAg
ICAgdmFyIGRpZFNob3dUaW1lbGluZUNvbnRlbnRWaWV3ID0gV2ViSW5zcGVjdG9yLmNvbnRlbnRC
cm93c2VyLmN1cnJlbnRDb250ZW50VmlldyBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5UaW1lbGlu
ZUNvbnRlbnRWaWV3OworICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZShXZWJJ
bnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwuVGltZWxpbmVDb250ZW50Vmlld1Nob3dpbmdT
dHlsZUNsYXNzLCBkaWRTaG93VGltZWxpbmVDb250ZW50Vmlldyk7CiAgICAgfSwKIAogICAgIF9j
YXB0dXJpbmdTdGFydGVkOiBmdW5jdGlvbihldmVudCkKQEAgLTM0OSw2ICszOTQsMzIgQEAgV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhp
cy5fcmVjb3JkR2x5cGhFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoV2ViSW5zcGVjdG9yLlRpbWVs
aW5lU2lkZWJhclBhbmVsLlJlY29yZEdseXBoUmVjb3JkaW5nU3R5bGVDbGFzcyk7CiAgICAgfSwK
IAorICAgIF9yZWNvcmRpbmdDcmVhdGVkOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAg
IHZhciByZWNvcmRpbmcgPSBldmVudC5kYXRhLnJlY29yZGluZzsKKyAgICAgICAgY29uc29sZS5h
c3NlcnQocmVjb3JkaW5nIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkaW5n
LCByZWNvcmRpbmcpOworCisgICAgICAgIHZhciByZWNvcmRpbmdUcmVlRWxlbWVudCA9IG5ldyBX
ZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50KFdlYkluc3BlY3Rvci5UaW1lbGluZVNpZGVi
YXJQYW5lbC5TdG9wd2F0Y2hJY29uU3R5bGVDbGFzcywgcmVjb3JkaW5nLmRpc3BsYXlOYW1lLCBu
dWxsLCByZWNvcmRpbmcpOworICAgICAgICB0aGlzLl9yZWNvcmRpbmdUcmVlRWxlbWVudE1hcC5z
ZXQocmVjb3JkaW5nLCByZWNvcmRpbmdUcmVlRWxlbWVudCk7CisgICAgICAgIHRoaXMuX3JlY29y
ZGluZ3NUcmVlT3V0bGluZS5hcHBlbmRDaGlsZChyZWNvcmRpbmdUcmVlRWxlbWVudCk7CisKKyAg
ICAgICAgdmFyIHByZXZpb3VzVHJlZUVsZW1lbnQgPSBudWxsOworICAgICAgICBmb3IgKHZhciB0
cmVlRWxlbWVudCBvZiB0aGlzLl9yZWNvcmRpbmdUcmVlRWxlbWVudE1hcC52YWx1ZXMoKSkgewor
ICAgICAgICAgICAgaWYgKHByZXZpb3VzVHJlZUVsZW1lbnQpIHsKKyAgICAgICAgICAgICAgICBw
cmV2aW91c1RyZWVFbGVtZW50Lm5leHRTaWJsaW5nID0gdHJlZUVsZW1lbnQ7CisgICAgICAgICAg
ICAgICAgdHJlZUVsZW1lbnQucHJldmlvdXNTaWJsaW5nID0gcHJldmlvdXNUcmVlRWxlbWVudDsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcHJldmlvdXNUcmVlRWxlbWVudCA9IHRyZWVF
bGVtZW50OworICAgICAgICB9CisgICAgfSwKKworICAgIF9yZWNvcmRpbmdMb2FkZWQ6IGZ1bmN0
aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMuX2FjdGl2ZUNvbnRlbnRWaWV3ID0gV2ViSW5zcGVj
dG9yLmNvbnRlbnRCcm93c2VyLmNvbnRlbnRWaWV3Rm9yUmVwcmVzZW50ZWRPYmplY3QoV2ViSW5z
cGVjdG9yLnRpbWVsaW5lTWFuYWdlci5hY3RpdmVSZWNvcmRpbmcpOworICAgICAgICBXZWJJbnNw
ZWN0b3IuY29udGVudEJyb3dzZXIuc2hvd0NvbnRlbnRWaWV3KHRoaXMuX2FjdGl2ZUNvbnRlbnRW
aWV3KTsKKyAgICB9LAorCiAgICAgX3JlY29yZEdseXBoTW91c2VkT3ZlcjogZnVuY3Rpb24oZXZl
bnQpCiAgICAgewogICAgICAgICB0aGlzLl9yZWNvcmRHbHlwaEVsZW1lbnQuY2xhc3NMaXN0LnJl
bW92ZShXZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwuUmVjb3JkR2x5cGhSZWNvcmRp
bmdGb3JjZWRTdHlsZUNsYXNzKTsKQEAgLTM3NCwxMCArNDQ1LDEyIEBAIFdlYkluc3BlY3Rvci5U
aW1lbGluZVNpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIC8vIEFkZCBmb3JjZWQg
Y2xhc3MgdG8gcHJldmVudCB0aGUgZ2x5cGggZnJvbSBzaG93aW5nIGEgY29uZnVzaW5nIHN0YXR1
cyBhZnRlciBjbGljay4KICAgICAgICAgdGhpcy5fcmVjb3JkR2x5cGhFbGVtZW50LmNsYXNzTGlz
dC5hZGQoV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsLlJlY29yZEdseXBoUmVjb3Jk
aW5nRm9yY2VkU3R5bGVDbGFzcyk7CiAKKyAgICAgICAgdmFyIHNob3VsZENyZWF0ZVJlY29yZGlu
ZyA9IGV2ZW50LnNoaWZ0S2V5OworCiAgICAgICAgIGlmIChXZWJJbnNwZWN0b3IudGltZWxpbmVN
YW5hZ2VyLmlzQ2FwdHVyaW5nKCkpCiAgICAgICAgICAgICBXZWJJbnNwZWN0b3IudGltZWxpbmVN
YW5hZ2VyLnN0b3BDYXB0dXJpbmcoKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgV2ViSW5z
cGVjdG9yLnRpbWVsaW5lTWFuYWdlci5zdGFydENhcHR1cmluZygpOworICAgICAgICAgICAgV2Vi
SW5zcGVjdG9yLnRpbWVsaW5lTWFuYWdlci5zdGFydENhcHR1cmluZyhzaG91bGRDcmVhdGVSZWNv
cmRpbmcpOwogICAgIH0sCiAKICAgICAvLyBUaGVzZSBtZXRob2RzIGFyZSBvbmx5IHVzZWQgd2hl
biBSZXBsYXlBZ2VudCBpcyBhdmFpbGFibGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZVZpZXcuanMgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZVZpZXcuanMKaW5kZXggMDhlODE5
MWIwZWNlZTcwZGQ3ZTMxMGRmOGJmOGM5NTA2NDE2ZWUyMi4uNjZjMTE0MTVlNDAxYzdkMjI0MmMw
MGYyZWNiOTFkM2FiMzM3MmY0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lVmlldy5qcwpAQCAtMjMsMTAgKzIzLDM0
IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVj
dG9yLlRpbWVsaW5lVmlldyA9IGZ1bmN0aW9uKCkKK1dlYkluc3BlY3Rvci5UaW1lbGluZVZpZXcg
PSBmdW5jdGlvbihyZXByZXNlbnRlZE9iamVjdCkKIHsKKyAgICBpZiAodGhpcy5jb25zdHJ1Y3Rv
ciA9PT0gV2ViSW5zcGVjdG9yLlRpbWVsaW5lVmlldykgeworICAgICAgICAvLyBXaGVuIGluc3Rh
bnRpYXRlZCBkaXJlY3RseSByZXR1cm4gYW4gaW5zdGFuY2Ugb2YgYSB0eXBlLWJhc2VkIGNvbmNy
ZXRlIHN1YmNsYXNzLgorCisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHJlcHJlc2VudGVkT2JqZWN0
ICYmIHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlRpbWVsaW5lKTsK
KworICAgICAgICB2YXIgdGltZWxpbmVUeXBlID0gcmVwcmVzZW50ZWRPYmplY3QudHlwZTsKKyAg
ICAgICAgaWYgKHRpbWVsaW5lVHlwZSA9PT0gV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkLlR5
cGUuTmV0d29yaykKKyAgICAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLk5ldHdvcmtU
aW1lbGluZVZpZXcocmVwcmVzZW50ZWRPYmplY3QpOworCisgICAgICAgIGlmICh0aW1lbGluZVR5
cGUgPT09IFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZC5UeXBlLkxheW91dCkKKyAgICAgICAg
ICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkxheW91dFRpbWVsaW5lVmlldyhyZXByZXNlbnRl
ZE9iamVjdCk7CisKKyAgICAgICAgaWYgKHRpbWVsaW5lVHlwZSA9PT0gV2ViSW5zcGVjdG9yLlRp
bWVsaW5lUmVjb3JkLlR5cGUuU2NyaXB0KQorICAgICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNw
ZWN0b3IuU2NyaXB0VGltZWxpbmVWaWV3KHJlcHJlc2VudGVkT2JqZWN0KTsKKworICAgICAgICB0
aHJvdyBFcnJvcigiQ2FuJ3QgbWFrZSBhIFRpbWVsaW5lIGZvciBhbiB1bmtub3duIHJlcHJlc2Vu
dGVkT2JqZWN0LiIpOworICAgIH0KKworICAgIC8vIENvbmNyZXRlIG9iamVjdCBpbnN0YW50aWF0
aW9uLgorICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuY29uc3RydWN0b3IgIT09IFdlYkluc3BlY3Rv
ci5UaW1lbGluZVZpZXcgJiYgdGhpcyBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5UaW1lbGluZVZp
ZXcpOworCiAgICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOwogCisgICAgY29uc29s
ZS5hc3NlcnQocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuVGltZWxp
bmUgfHwgcmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuVGltZWxpbmVS
ZWNvcmRpbmcpOworICAgIHRoaXMuX3JlcHJlc2VudGVkT2JqZWN0ID0gcmVwcmVzZW50ZWRPYmpl
Y3Q7CisKICAgICB0aGlzLl9jb250ZW50VHJlZU91dGxpbmUgPSBXZWJJbnNwZWN0b3IudGltZWxp
bmVTaWRlYmFyUGFuZWwuY3JlYXRlQ29udGVudFRyZWVPdXRsaW5lKCk7CiAKICAgICB0aGlzLmVs
ZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKQEAgLTUwLDYgKzc0LDExIEBA
IFdlYkluc3BlY3Rvci5UaW1lbGluZVZpZXcucHJvdG90eXBlID0gewogCiAgICAgLy8gUHVibGlj
CiAKKyAgICBnZXQgcmVwcmVzZW50ZWRPYmplY3QoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRo
aXMuX3JlcHJlc2VudGVkT2JqZWN0OworICAgIH0sCisKICAgICBnZXQgbmF2aWdhdGlvblNpZGVi
YXJUcmVlT3V0bGluZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fY29udGVudFRyZWVP
dXRsaW5lOwo=
</data>
<flag name="review"
          id="260613"
          type_id="1"
          status="+"
          setter="timothy"
    />
          </attachment>
      

    </bug>

</bugzilla>