<?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>147381</bug_id>
          
          <creation_ts>2015-07-28 15:54:07 -0700</creation_ts>
          <short_desc>Web Inspector: Convert timeline view classes to ES6 classes</short_desc>
          <delta_ts>2015-07-31 16:27:30 -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>
          
          <blocked>147409</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brian Burg">burg</reporter>
          <assigned_to name="Brian Burg">burg</assigned_to>
          <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>jonowells</cc>
    
    <cc>mattbaker</cc>
    
    <cc>nvasilyev</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1112910</commentid>
    <comment_count>0</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2015-07-28 15:54:07 -0700</bug_when>
    <thetext>,</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1112912</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-07-28 15:54:33 -0700</bug_when>
    <thetext>&lt;rdar://problem/22040696&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1113175</commentid>
    <comment_count>2</comment_count>
      <attachid>257769</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2015-07-29 14:30:35 -0700</bug_when>
    <thetext>Created attachment 257769
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1113416</commentid>
    <comment_count>3</comment_count>
      <attachid>257769</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-07-30 11:18:13 -0700</bug_when>
    <thetext>Comment on attachment 257769
Patch

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

&gt; Source/WebInspectorUI/UserInterface/Views/TimelineRecordingContentView.js:27
&gt; +WebInspector.TimelineRecordingContentView = class TimelineRecordingContentView extends WebInspector.ContentView

Can you do this and extend WebInspector.ContentView even though that is not an ES6 class yet?!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1113465</commentid>
    <comment_count>4</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2015-07-30 12:43:02 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 257769 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=257769&amp;action=review
&gt; 
&gt; &gt; Source/WebInspectorUI/UserInterface/Views/TimelineRecordingContentView.js:27
&gt; &gt; +WebInspector.TimelineRecordingContentView = class TimelineRecordingContentView extends WebInspector.ContentView
&gt; 
&gt; Can you do this and extend WebInspector.ContentView even though that is not
&gt; an ES6 class yet?!

I was skeptical, but everything seemed to work. Maybe you should apply the patch and sanity check it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1113766</commentid>
    <comment_count>5</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2015-07-31 11:34:00 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 257769 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=257769&amp;action=review
&gt; 
&gt; &gt; Source/WebInspectorUI/UserInterface/Views/TimelineRecordingContentView.js:27
&gt; &gt; +WebInspector.TimelineRecordingContentView = class TimelineRecordingContentView extends WebInspector.ContentView
&gt; 
&gt; Can you do this and extend WebInspector.ContentView even though that is not
&gt; an ES6 class yet?!

Here&apos;s a console interaction to demo this:

&gt; window.A = function() { console.log(&quot;A ctor&quot;); }; window.B = class B extends A { }
&lt; class B = $1
&gt; new B
[Log] A ctor
&lt; B {} = $2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1113862</commentid>
    <comment_count>6</comment_count>
      <attachid>257769</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-07-31 14:35:34 -0700</bug_when>
    <thetext>Comment on attachment 257769
Patch

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

r=me

&gt; Source/WebInspectorUI/UserInterface/Views/LayoutTimelineView.js:34
&gt; -    this.navigationSidebarTreeOutline.element.classList.add(WebInspector.NavigationSidebarPanel.HideDisclosureButtonsStyleClassName);
&gt; -    this.navigationSidebarTreeOutline.element.classList.add(WebInspector.LayoutTimelineView.TreeOutlineStyleClassName);
&gt; +        console.assert(timeline.type === WebInspector.TimelineRecord.Type.Layout, timeline);
&gt;  
&gt; -    var columns = {eventType: {}, location: {}, width: {}, height: {}, startTime: {}, totalTime: {}};
&gt; +        this.navigationSidebarTreeOutline.element.classList.add(WebInspector.NavigationSidebarPanel.HideDisclosureButtonsStyleClassName);

I think there is a way to create a git diff ignoring whitespace only changes. It would likely make this much easier to read / see the actual changes!

&gt; Source/WebInspectorUI/UserInterface/Views/TimelineRecordBar.js:-43
&gt; -WebInspector.TimelineRecordBar.UnfinishedStyleClassName = &quot;unfinished&quot;;

I feel like if the style class is used in multiple places it could stay a variable. But I don&apos;t mind inline a few of these.

&gt; Source/WebInspectorUI/UserInterface/Views/TimelineRecordingContentView.js:547
&gt;          const timelineHeight = 36;
&gt;          const renderingFramesTimelineHeight = 108;

This is interesting. Until Saam&apos;s super recent changes, we couldn&apos;t use &quot;const&quot; in classes. Now, we can! There are a couple instances of &quot;const &quot; in these files, but we should be good now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1113918</commentid>
    <comment_count>7</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2015-07-31 16:27:30 -0700</bug_when>
    <thetext>Committed r187689: &lt;http://trac.webkit.org/changeset/187689&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>257769</attachid>
            <date>2015-07-29 14:30:35 -0700</date>
            <delta_ts>2015-07-31 14:35:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147381-20150729142912.patch</filename>
            <type>text/plain</type>
            <size>174566</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg3NTQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCBi
ODc3MmRiN2EyNGRkYWM5MzkzZjRiNTk3ODNkNThiMGJiYjhhZGFjLi5iMzcyMDQ0NTdlMTE1Nzdl
MzlhZGJjMGI3OWRhODQ3OGE2MzIxOTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNCBAQAorMjAxNS0wNy0yOSAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rv
bi5lZHU+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQ29udmVydCB0aW1lbGluZSB2aWV3IGNs
YXNzZXMgdG8gRVM2IGNsYXNzZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE0NzM4MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFsb25nIHRoZSB3YXksIGlubGluZSBhIGZldyBzdHlsZSBjbGFzcyBuYW1l
cy4KKworICAgICAgICBFbGlkZWQgbWVjaGFuaWNhbCBjaGFuZ2VzIGZyb20gdGhlIENoYW5nZWxv
Zy4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvTGF5b3V0VGltZWxpbmVPdmVydmll
d0dyYXBoLmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvTGF5b3V0VGltZWxpbmVW
aWV3LmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvTGluZWFyVGltZWxpbmVPdmVy
dmlldy5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL05ldHdvcmtUaW1lbGluZU92
ZXJ2aWV3R3JhcGguanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9OZXR3b3JrVGlt
ZWxpbmVWaWV3LmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvT3ZlcnZpZXdUaW1l
bGluZVZpZXcuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9SZW5kZXJpbmdGcmFt
ZVRpbWVsaW5lT3ZlcnZpZXcuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9SZW5k
ZXJpbmdGcmFtZVRpbWVsaW5lT3ZlcnZpZXdHcmFwaC5qczoKKyAgICAgICAgKiBVc2VySW50ZXJm
YWNlL1ZpZXdzL1JlbmRlcmluZ0ZyYW1lVGltZWxpbmVWaWV3LmpzOgorICAgICAgICAqIFVzZXJJ
bnRlcmZhY2UvVmlld3MvU2NyaXB0VGltZWxpbmVPdmVydmlld0dyYXBoLmpzOgorICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvVmlld3MvU2NyaXB0VGltZWxpbmVWaWV3LmpzOgorICAgICAgICAqIFVz
ZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVPdmVydmlldy5qczoKKyAgICAgICAgKiBVc2VySW50
ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lT3ZlcnZpZXdHcmFwaC5qczoKKyAgICAgICAgKiBVc2VySW50
ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lUmVjb3JkQmFyLmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZh
Y2UvVmlld3MvVGltZWxpbmVSZWNvcmRGcmFtZS5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNl
L1ZpZXdzL1RpbWVsaW5lUmVjb3JkaW5nQ29udGVudFZpZXcuanM6CisgICAgICAgICogVXNlcklu
dGVyZmFjZS9WaWV3cy9UaW1lbGluZVJ1bGVyLmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2Uv
Vmlld3MvVGltZWxpbmVUYWJDb250ZW50Vmlldy5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNl
L1ZpZXdzL1RpbWVsaW5lVmlldy5qczoKKwogMjAxNS0wNy0yOCAgSm9zZXBoIFBlY29yYXJvICA8
cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IGNvbnNvbGUuZ3Jv
dXBFbmQgY2F1c2VzIG5lZ2F0aXZlIGluZGVudCB3aGVuIG5vIGdyb3VwIGlzIGFjdGl2ZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTGF5b3V0
VGltZWxpbmVPdmVydmlld0dyYXBoLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvTGF5b3V0VGltZWxpbmVPdmVydmlld0dyYXBoLmpzCmluZGV4IGY2MWNhOWRj
NmI2YmEzZmExYTcxMmY2OGZkYmM0ZjE1NTY3OWMzNzkuLjUyYzk5YzQ0NjBkNTkyMmUwOTY4MGQ3
ZGE1NGFjMGQ1MGMwMzlhNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0xheW91dFRpbWVsaW5lT3ZlcnZpZXdHcmFwaC5qcworKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9MYXlvdXRUaW1lbGluZU92ZXJ2
aWV3R3JhcGguanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAx
NSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTIzLDI3ICsyMywyNSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5MYXlvdXRUaW1lbGluZU92ZXJ2aWV3R3JhcGgg
PSBmdW5jdGlvbih0aW1lbGluZSwgdGltZWxpbmVPdmVydmlldykKK1dlYkluc3BlY3Rvci5MYXlv
dXRUaW1lbGluZU92ZXJ2aWV3R3JhcGggPSBjbGFzcyBMYXlvdXRUaW1lbGluZU92ZXJ2aWV3R3Jh
cGggZXh0ZW5kcyBXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlld0dyYXBoCiB7Ci0gICAgV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXdHcmFwaC5jYWxsKHRoaXMsIHRpbWVsaW5lLCB0aW1l
bGluZU92ZXJ2aWV3KTsKLQotICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJsYXlvdXQi
KTsKKyAgICBjb25zdHJ1Y3Rvcih0aW1lbGluZSwgdGltZWxpbmVPdmVydmlldykKKyAgICB7Cisg
ICAgICAgIHN1cGVyKHRpbWVsaW5lLCB0aW1lbGluZU92ZXJ2aWV3KTsKIAotICAgIHRoaXMuX2xh
eW91dFRpbWVsaW5lID0gdGltZWxpbmU7Ci0gICAgdGhpcy5fbGF5b3V0VGltZWxpbmUuYWRkRXZl
bnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGltZWxpbmUuRXZlbnQuUmVjb3JkQWRkZWQsIHRoaXMu
X2xheW91dFRpbWVsaW5lUmVjb3JkQWRkZWQsIHRoaXMpOworICAgICAgICB0aGlzLmVsZW1lbnQu
Y2xhc3NMaXN0LmFkZCgibGF5b3V0Iik7CiAKLSAgICB0aGlzLnJlc2V0KCk7Ci19OworICAgICAg
ICB0aGlzLl9sYXlvdXRUaW1lbGluZSA9IHRpbWVsaW5lOworICAgICAgICB0aGlzLl9sYXlvdXRU
aW1lbGluZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5UaW1lbGluZS5FdmVudC5SZWNv
cmRBZGRlZCwgdGhpcy5fbGF5b3V0VGltZWxpbmVSZWNvcmRBZGRlZCwgdGhpcyk7CiAKLVdlYklu
c3BlY3Rvci5MYXlvdXRUaW1lbGluZU92ZXJ2aWV3R3JhcGgucHJvdG90eXBlID0gewotICAgIGNv
bnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuTGF5b3V0VGltZWxpbmVPdmVydmlld0dyYXBoLAotICAg
IF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXdHcmFwaC5wcm90b3R5cGUs
CisgICAgICAgIHRoaXMucmVzZXQoKTsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAotICAgIHJl
c2V0OiBmdW5jdGlvbigpCisgICAgcmVzZXQoKQogICAgIHsKLSAgICAgICAgV2ViSW5zcGVjdG9y
LlRpbWVsaW5lT3ZlcnZpZXdHcmFwaC5wcm90b3R5cGUucmVzZXQuY2FsbCh0aGlzKTsKKyAgICAg
ICAgc3VwZXIucmVzZXQoKTsKIAogICAgICAgICBmdW5jdGlvbiBjcmVhdGVSZWNvcmRSb3coKQog
ICAgICAgICB7CkBAIC01OCwxOSArNTYsMTkgQEAgV2ViSW5zcGVjdG9yLkxheW91dFRpbWVsaW5l
T3ZlcnZpZXdHcmFwaC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX3RpbWVsaW5lUmVjb3Jk
QmFyTWFwID0gbmV3IE1hcDsKICAgICAgICAgdGhpcy5fdGltZWxpbmVMYXlvdXRSZWNvcmRSb3cg
PSBjcmVhdGVSZWNvcmRSb3cuY2FsbCh0aGlzKTsKICAgICAgICAgdGhpcy5fdGltZWxpbmVQYWlu
dFJlY29yZFJvdyA9IGNyZWF0ZVJlY29yZFJvdy5jYWxsKHRoaXMpOwotICAgIH0sCisgICAgfQog
Ci0gICAgdXBkYXRlTGF5b3V0OiBmdW5jdGlvbigpCisgICAgdXBkYXRlTGF5b3V0KCkKICAgICB7
Ci0gICAgICAgIFdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3R3JhcGgucHJvdG90eXBlLnVw
ZGF0ZUxheW91dC5jYWxsKHRoaXMpOworICAgICAgICBzdXBlci51cGRhdGVMYXlvdXQoKTsKIAog
ICAgICAgICB0aGlzLl91cGRhdGVSb3dMYXlvdXQodGhpcy5fdGltZWxpbmVQYWludFJlY29yZFJv
dyk7CiAgICAgICAgIHRoaXMuX3VwZGF0ZVJvd0xheW91dCh0aGlzLl90aW1lbGluZUxheW91dFJl
Y29yZFJvdyk7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcml2YXRlCiAKLSAgICBfdXBkYXRl
Um93TGF5b3V0OiBmdW5jdGlvbihyb3cpCisgICAgX3VwZGF0ZVJvd0xheW91dChyb3cpCiAgICAg
ewogICAgICAgICB2YXIgc2Vjb25kc1BlclBpeGVsID0gdGhpcy50aW1lbGluZU92ZXJ2aWV3LnNl
Y29uZHNQZXJQaXhlbDsKICAgICAgICAgdmFyIHJlY29yZEJhckluZGV4ID0gMDsKQEAgLTk4LDkg
Kzk2LDkgQEAgV2ViSW5zcGVjdG9yLkxheW91dFRpbWVsaW5lT3ZlcnZpZXdHcmFwaC5wcm90b3R5
cGUgPSB7CiAgICAgICAgICAgICByb3cucmVjb3JkQmFyc1tyZWNvcmRCYXJJbmRleF0ucmVjb3Jk
cyA9IG51bGw7CiAgICAgICAgICAgICByb3cucmVjb3JkQmFyc1tyZWNvcmRCYXJJbmRleF0uZWxl
bWVudC5yZW1vdmUoKTsKICAgICAgICAgfQotICAgIH0sCisgICAgfQogCi0gICAgX2xheW91dFRp
bWVsaW5lUmVjb3JkQWRkZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9sYXlvdXRUaW1lbGluZVJl
Y29yZEFkZGVkKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIGxheW91dFRpbWVsaW5lUmVjb3Jk
ID0gZXZlbnQuZGF0YS5yZWNvcmQ7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGxheW91dFRpbWVs
aW5lUmVjb3JkIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkxheW91dFRpbWVsaW5lUmVjb3JkKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0xh
eW91dFRpbWVsaW5lVmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL0xheW91dFRpbWVsaW5lVmlldy5qcwppbmRleCA3NjIyMTRiNzYyNmI2NGFmMGZhN2M4
ZDE1NWEwZGZlZTI4ZjdjMjhiLi45MGU1OTA2YTk2M2ZmOGIyNTc3OTlkYmNiNmU1MTI2NjZjYThl
NzgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9MYXlvdXRUaW1lbGluZVZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvTGF5b3V0VGltZWxpbmVWaWV3LmpzCkBAIC0yMywxNzUgKzIzLDE3MCBA
QAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rv
ci5MYXlvdXRUaW1lbGluZVZpZXcgPSBmdW5jdGlvbih0aW1lbGluZSwgZXh0cmFBcmd1bWVudHMp
CitXZWJJbnNwZWN0b3IuTGF5b3V0VGltZWxpbmVWaWV3ID0gY2xhc3MgTGF5b3V0VGltZWxpbmVW
aWV3IGV4dGVuZHMgV2ViSW5zcGVjdG9yLlRpbWVsaW5lVmlldwogewotICAgIFdlYkluc3BlY3Rv
ci5UaW1lbGluZVZpZXcuY2FsbCh0aGlzLCB0aW1lbGluZSwgZXh0cmFBcmd1bWVudHMpOwotCi0g
ICAgY29uc29sZS5hc3NlcnQodGltZWxpbmUudHlwZSA9PT0gV2ViSW5zcGVjdG9yLlRpbWVsaW5l
UmVjb3JkLlR5cGUuTGF5b3V0KTsKKyAgICBjb25zdHJ1Y3Rvcih0aW1lbGluZSwgZXh0cmFBcmd1
bWVudHMpCisgICAgeworICAgICAgICBzdXBlcih0aW1lbGluZSwgZXh0cmFBcmd1bWVudHMpOwog
Ci0gICAgdGhpcy5uYXZpZ2F0aW9uU2lkZWJhclRyZWVPdXRsaW5lLmVsZW1lbnQuY2xhc3NMaXN0
LmFkZChXZWJJbnNwZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQYW5lbC5IaWRlRGlzY2xvc3VyZUJ1
dHRvbnNTdHlsZUNsYXNzTmFtZSk7Ci0gICAgdGhpcy5uYXZpZ2F0aW9uU2lkZWJhclRyZWVPdXRs
aW5lLmVsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuTGF5b3V0VGltZWxpbmVWaWV3
LlRyZWVPdXRsaW5lU3R5bGVDbGFzc05hbWUpOworICAgICAgICBjb25zb2xlLmFzc2VydCh0aW1l
bGluZS50eXBlID09PSBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmQuVHlwZS5MYXlvdXQsIHRp
bWVsaW5lKTsKIAotICAgIHZhciBjb2x1bW5zID0ge2V2ZW50VHlwZToge30sIGxvY2F0aW9uOiB7
fSwgd2lkdGg6IHt9LCBoZWlnaHQ6IHt9LCBzdGFydFRpbWU6IHt9LCB0b3RhbFRpbWU6IHt9fTsK
KyAgICAgICAgdGhpcy5uYXZpZ2F0aW9uU2lkZWJhclRyZWVPdXRsaW5lLmVsZW1lbnQuY2xhc3NM
aXN0LmFkZChXZWJJbnNwZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQYW5lbC5IaWRlRGlzY2xvc3Vy
ZUJ1dHRvbnNTdHlsZUNsYXNzTmFtZSk7CisgICAgICAgIHRoaXMubmF2aWdhdGlvblNpZGViYXJU
cmVlT3V0bGluZS5lbGVtZW50LmNsYXNzTGlzdC5hZGQoImxheW91dCIpOwogCi0gICAgY29sdW1u
cy5ldmVudFR5cGUudGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlR5cGUiKTsKLSAgICBj
b2x1bW5zLmV2ZW50VHlwZS53aWR0aCA9ICIxNSUiOworICAgICAgICB2YXIgY29sdW1ucyA9IHtl
dmVudFR5cGU6IHt9LCBsb2NhdGlvbjoge30sIHdpZHRoOiB7fSwgaGVpZ2h0OiB7fSwgc3RhcnRU
aW1lOiB7fSwgdG90YWxUaW1lOiB7fX07CiAKLSAgICB2YXIgdHlwZVRvTGFiZWxNYXAgPSBuZXcg
TWFwOwotICAgIGZvciAodmFyIGtleSBpbiBXZWJJbnNwZWN0b3IuTGF5b3V0VGltZWxpbmVSZWNv
cmQuRXZlbnRUeXBlKSB7Ci0gICAgICAgIHZhciB2YWx1ZSA9IFdlYkluc3BlY3Rvci5MYXlvdXRU
aW1lbGluZVJlY29yZC5FdmVudFR5cGVba2V5XTsKLSAgICAgICAgdHlwZVRvTGFiZWxNYXAuc2V0
KHZhbHVlLCBXZWJJbnNwZWN0b3IuTGF5b3V0VGltZWxpbmVSZWNvcmQuZGlzcGxheU5hbWVGb3JF
dmVudFR5cGUodmFsdWUpKTsKLSAgICB9CisgICAgICAgIGNvbHVtbnMuZXZlbnRUeXBlLnRpdGxl
ID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJUeXBlIik7CisgICAgICAgIGNvbHVtbnMuZXZlbnRU
eXBlLndpZHRoID0gIjE1JSI7CiAKLSAgICBjb2x1bW5zLmV2ZW50VHlwZS5zY29wZUJhciA9IFdl
Ykluc3BlY3Rvci5UaW1lbGluZURhdGFHcmlkLmNyZWF0ZUNvbHVtblNjb3BlQmFyKCJsYXlvdXQi
LCB0eXBlVG9MYWJlbE1hcCk7Ci0gICAgY29sdW1ucy5ldmVudFR5cGUuaGlkZGVuID0gdHJ1ZTsK
LSAgICB0aGlzLl9zY29wZUJhciA9IGNvbHVtbnMuZXZlbnRUeXBlLnNjb3BlQmFyOwotCi0gICAg
Y29sdW1ucy5sb2NhdGlvbi50aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiSW5pdGlhdG9y
Iik7Ci0gICAgY29sdW1ucy5sb2NhdGlvbi53aWR0aCA9ICIyNSUiOworICAgICAgICB2YXIgdHlw
ZVRvTGFiZWxNYXAgPSBuZXcgTWFwOworICAgICAgICBmb3IgKHZhciBrZXkgaW4gV2ViSW5zcGVj
dG9yLkxheW91dFRpbWVsaW5lUmVjb3JkLkV2ZW50VHlwZSkgeworICAgICAgICAgICAgdmFyIHZh
bHVlID0gV2ViSW5zcGVjdG9yLkxheW91dFRpbWVsaW5lUmVjb3JkLkV2ZW50VHlwZVtrZXldOwor
ICAgICAgICAgICAgdHlwZVRvTGFiZWxNYXAuc2V0KHZhbHVlLCBXZWJJbnNwZWN0b3IuTGF5b3V0
VGltZWxpbmVSZWNvcmQuZGlzcGxheU5hbWVGb3JFdmVudFR5cGUodmFsdWUpKTsKKyAgICAgICAg
fQogCi0gICAgY29sdW1ucy53aWR0aC50aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiV2lk
dGgiKTsKLSAgICBjb2x1bW5zLndpZHRoLndpZHRoID0gIjglIjsKKyAgICAgICAgY29sdW1ucy5l
dmVudFR5cGUuc2NvcGVCYXIgPSBXZWJJbnNwZWN0b3IuVGltZWxpbmVEYXRhR3JpZC5jcmVhdGVD
b2x1bW5TY29wZUJhcigibGF5b3V0IiwgdHlwZVRvTGFiZWxNYXApOworICAgICAgICBjb2x1bW5z
LmV2ZW50VHlwZS5oaWRkZW4gPSB0cnVlOworICAgICAgICB0aGlzLl9zY29wZUJhciA9IGNvbHVt
bnMuZXZlbnRUeXBlLnNjb3BlQmFyOwogCi0gICAgY29sdW1ucy5oZWlnaHQudGl0bGUgPSBXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIkhlaWdodCIpOwotICAgIGNvbHVtbnMuaGVpZ2h0LndpZHRoID0g
IjglIjsKKyAgICAgICAgY29sdW1ucy5sb2NhdGlvbi50aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0
cmluZygiSW5pdGlhdG9yIik7CisgICAgICAgIGNvbHVtbnMubG9jYXRpb24ud2lkdGggPSAiMjUl
IjsKIAotICAgIGNvbHVtbnMuc3RhcnRUaW1lLnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJTdGFydCBUaW1lIik7Ci0gICAgY29sdW1ucy5zdGFydFRpbWUud2lkdGggPSAiOCUiOwotICAg
IGNvbHVtbnMuc3RhcnRUaW1lLmFsaWduZWQgPSAicmlnaHQiOworICAgICAgICBjb2x1bW5zLndp
ZHRoLnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJXaWR0aCIpOworICAgICAgICBjb2x1
bW5zLndpZHRoLndpZHRoID0gIjglIjsKIAotICAgIGNvbHVtbnMudG90YWxUaW1lLnRpdGxlID0g
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJEdXJhdGlvbiIpOwotICAgIGNvbHVtbnMudG90YWxUaW1l
LndpZHRoID0gIjglIjsKLSAgICBjb2x1bW5zLnRvdGFsVGltZS5hbGlnbmVkID0gInJpZ2h0IjsK
KyAgICAgICAgY29sdW1ucy5oZWlnaHQudGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkhl
aWdodCIpOworICAgICAgICBjb2x1bW5zLmhlaWdodC53aWR0aCA9ICI4JSI7CiAKLSAgICBmb3Ig
KHZhciBjb2x1bW4gaW4gY29sdW1ucykKLSAgICAgICAgY29sdW1uc1tjb2x1bW5dLnNvcnRhYmxl
ID0gdHJ1ZTsKKyAgICAgICAgY29sdW1ucy5zdGFydFRpbWUudGl0bGUgPSBXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIlN0YXJ0IFRpbWUiKTsKKyAgICAgICAgY29sdW1ucy5zdGFydFRpbWUud2lkdGgg
PSAiOCUiOworICAgICAgICBjb2x1bW5zLnN0YXJ0VGltZS5hbGlnbmVkID0gInJpZ2h0IjsKIAot
ICAgIHRoaXMuX2RhdGFHcmlkID0gbmV3IFdlYkluc3BlY3Rvci5MYXlvdXRUaW1lbGluZURhdGFH
cmlkKHRoaXMubmF2aWdhdGlvblNpZGViYXJUcmVlT3V0bGluZSwgY29sdW1ucyk7Ci0gICAgdGhp
cy5fZGF0YUdyaWQuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGltZWxpbmVEYXRhR3Jp
ZC5FdmVudC5GaWx0ZXJzRGlkQ2hhbmdlLCB0aGlzLl9kYXRhR3JpZEZpbHRlcnNEaWRDaGFuZ2Us
IHRoaXMpOwotICAgIHRoaXMuX2RhdGFHcmlkLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9y
LkRhdGFHcmlkLkV2ZW50LlNlbGVjdGVkTm9kZUNoYW5nZWQsIHRoaXMuX2RhdGFHcmlkTm9kZVNl
bGVjdGVkLCB0aGlzKTsKKyAgICAgICAgY29sdW1ucy50b3RhbFRpbWUudGl0bGUgPSBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIkR1cmF0aW9uIik7CisgICAgICAgIGNvbHVtbnMudG90YWxUaW1lLndp
ZHRoID0gIjglIjsKKyAgICAgICAgY29sdW1ucy50b3RhbFRpbWUuYWxpZ25lZCA9ICJyaWdodCI7
CiAKLSAgICB0aGlzLl9kYXRhR3JpZC5zb3J0Q29sdW1uSWRlbnRpZmllciA9ICJzdGFydFRpbWUi
OwotICAgIHRoaXMuX2RhdGFHcmlkLnNvcnRPcmRlciA9IFdlYkluc3BlY3Rvci5EYXRhR3JpZC5T
b3J0T3JkZXIuQXNjZW5kaW5nOworICAgICAgICBmb3IgKHZhciBjb2x1bW4gaW4gY29sdW1ucykK
KyAgICAgICAgICAgIGNvbHVtbnNbY29sdW1uXS5zb3J0YWJsZSA9IHRydWU7CiAKLSAgICB0aGlz
Ll9ob3ZlcmVkVHJlZUVsZW1lbnQgPSBudWxsOwotICAgIHRoaXMuX2hvdmVyZWREYXRhR3JpZE5v
ZGUgPSBudWxsOwotICAgIHRoaXMuX3Nob3dpbmdIaWdobGlnaHQgPSBmYWxzZTsKLSAgICB0aGlz
Ll9zaG93aW5nSGlnaGxpZ2h0Rm9yUmVjb3JkID0gbnVsbDsKKyAgICAgICAgdGhpcy5fZGF0YUdy
aWQgPSBuZXcgV2ViSW5zcGVjdG9yLkxheW91dFRpbWVsaW5lRGF0YUdyaWQodGhpcy5uYXZpZ2F0
aW9uU2lkZWJhclRyZWVPdXRsaW5lLCBjb2x1bW5zKTsKKyAgICAgICAgdGhpcy5fZGF0YUdyaWQu
YWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGltZWxpbmVEYXRhR3JpZC5FdmVudC5GaWx0
ZXJzRGlkQ2hhbmdlLCB0aGlzLl9kYXRhR3JpZEZpbHRlcnNEaWRDaGFuZ2UsIHRoaXMpOworICAg
ICAgICB0aGlzLl9kYXRhR3JpZC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5EYXRhR3Jp
ZC5FdmVudC5TZWxlY3RlZE5vZGVDaGFuZ2VkLCB0aGlzLl9kYXRhR3JpZE5vZGVTZWxlY3RlZCwg
dGhpcyk7CiAKLSAgICB0aGlzLl9kYXRhR3JpZC5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1v
dXNlb3ZlciIsIHRoaXMuX21vdXNlT3ZlckRhdGFHcmlkLmJpbmQodGhpcykpOwotICAgIHRoaXMu
X2RhdGFHcmlkLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VsZWF2ZSIsIHRoaXMuX21v
dXNlTGVhdmVEYXRhR3JpZC5iaW5kKHRoaXMpKTsKLSAgICB0aGlzLm5hdmlnYXRpb25TaWRlYmFy
VHJlZU91dGxpbmUuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW92ZXIiLCB0aGlzLl9t
b3VzZU92ZXJUcmVlT3V0bGluZS5iaW5kKHRoaXMpKTsKLSAgICB0aGlzLm5hdmlnYXRpb25TaWRl
YmFyVHJlZU91dGxpbmUuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWxlYXZlIiwgdGhp
cy5fbW91c2VMZWF2ZVRyZWVPdXRsaW5lLmJpbmQodGhpcykpOworICAgICAgICB0aGlzLl9kYXRh
R3JpZC5zb3J0Q29sdW1uSWRlbnRpZmllciA9ICJzdGFydFRpbWUiOworICAgICAgICB0aGlzLl9k
YXRhR3JpZC5zb3J0T3JkZXIgPSBXZWJJbnNwZWN0b3IuRGF0YUdyaWQuU29ydE9yZGVyLkFzY2Vu
ZGluZzsKIAotICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5MYXlv
dXRUaW1lbGluZVZpZXcuU3R5bGVDbGFzc05hbWUpOwotICAgIHRoaXMuZWxlbWVudC5hcHBlbmRD
aGlsZCh0aGlzLl9kYXRhR3JpZC5lbGVtZW50KTsKKyAgICAgICAgdGhpcy5faG92ZXJlZFRyZWVF
bGVtZW50ID0gbnVsbDsKKyAgICAgICAgdGhpcy5faG92ZXJlZERhdGFHcmlkTm9kZSA9IG51bGw7
CisgICAgICAgIHRoaXMuX3Nob3dpbmdIaWdobGlnaHQgPSBmYWxzZTsKKyAgICAgICAgdGhpcy5f
c2hvd2luZ0hpZ2hsaWdodEZvclJlY29yZCA9IG51bGw7CiAKLSAgICB0aW1lbGluZS5hZGRFdmVu
dExpc3RlbmVyKFdlYkluc3BlY3Rvci5UaW1lbGluZS5FdmVudC5SZWNvcmRBZGRlZCwgdGhpcy5f
bGF5b3V0VGltZWxpbmVSZWNvcmRBZGRlZCwgdGhpcyk7CisgICAgICAgIHRoaXMuX2RhdGFHcmlk
LmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VvdmVyIiwgdGhpcy5fbW91c2VPdmVyRGF0
YUdyaWQuYmluZCh0aGlzKSk7CisgICAgICAgIHRoaXMuX2RhdGFHcmlkLmVsZW1lbnQuYWRkRXZl
bnRMaXN0ZW5lcigibW91c2VsZWF2ZSIsIHRoaXMuX21vdXNlTGVhdmVEYXRhR3JpZC5iaW5kKHRo
aXMpKTsKKyAgICAgICAgdGhpcy5uYXZpZ2F0aW9uU2lkZWJhclRyZWVPdXRsaW5lLmVsZW1lbnQu
YWRkRXZlbnRMaXN0ZW5lcigibW91c2VvdmVyIiwgdGhpcy5fbW91c2VPdmVyVHJlZU91dGxpbmUu
YmluZCh0aGlzKSk7CisgICAgICAgIHRoaXMubmF2aWdhdGlvblNpZGViYXJUcmVlT3V0bGluZS5l
bGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlbGVhdmUiLCB0aGlzLl9tb3VzZUxlYXZlVHJl
ZU91dGxpbmUuYmluZCh0aGlzKSk7CiAKLSAgICB0aGlzLl9wZW5kaW5nUmVjb3JkcyA9IFtdOwot
fTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoImxheW91dCIpOworICAgICAg
ICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fZGF0YUdyaWQuZWxlbWVudCk7CiAKLVdl
Ykluc3BlY3Rvci5MYXlvdXRUaW1lbGluZVZpZXcuU3R5bGVDbGFzc05hbWUgPSAibGF5b3V0IjsK
LVdlYkluc3BlY3Rvci5MYXlvdXRUaW1lbGluZVZpZXcuVHJlZU91dGxpbmVTdHlsZUNsYXNzTmFt
ZSA9ICJsYXlvdXQiOworICAgICAgICB0aW1lbGluZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3Bl
Y3Rvci5UaW1lbGluZS5FdmVudC5SZWNvcmRBZGRlZCwgdGhpcy5fbGF5b3V0VGltZWxpbmVSZWNv
cmRBZGRlZCwgdGhpcyk7CiAKLVdlYkluc3BlY3Rvci5MYXlvdXRUaW1lbGluZVZpZXcucHJvdG90
eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuTGF5b3V0VGltZWxpbmVWaWV3
LAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLlRpbWVsaW5lVmlldy5wcm90b3R5cGUsCisg
ICAgICAgIHRoaXMuX3BlbmRpbmdSZWNvcmRzID0gW107CisgICAgfQogCiAgICAgLy8gUHVibGlj
CiAKICAgICBnZXQgbmF2aWdhdGlvblNpZGViYXJUcmVlT3V0bGluZUxhYmVsKCkKICAgICB7CiAg
ICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlY29yZHMiKTsKLSAgICB9LAor
ICAgIH0KIAotICAgIHNob3duOiBmdW5jdGlvbigpCisgICAgc2hvd24oKQogICAgIHsKLSAgICAg
ICAgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LnByb3RvdHlwZS5zaG93bi5jYWxsKHRoaXMpOwor
ICAgICAgICBzdXBlci5zaG93bigpOwogCiAgICAgICAgIHRoaXMuX3VwZGF0ZUhpZ2hsaWdodCgp
OwogCiAgICAgICAgIHRoaXMuX2RhdGFHcmlkLnNob3duKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBoaWRkZW46IGZ1bmN0aW9uKCkKKyAgICBoaWRkZW4oKQogICAgIHsKICAgICAgICAgdGhpcy5f
aGlkZUhpZ2hsaWdodElmTmVlZGVkKCk7CiAKICAgICAgICAgdGhpcy5fZGF0YUdyaWQuaGlkZGVu
KCk7CiAKLSAgICAgICAgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LnByb3RvdHlwZS5oaWRkZW4u
Y2FsbCh0aGlzKTsKLSAgICB9LAorICAgICAgICBzdXBlci5oaWRkZW4oKTsKKyAgICB9CiAKLSAg
ICBjbG9zZWQ6IGZ1bmN0aW9uKCkKKyAgICBjbG9zZWQoKQogICAgIHsKICAgICAgICAgY29uc29s
ZS5hc3NlcnQodGhpcy5yZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5U
aW1lbGluZSk7CiAgICAgICAgIHRoaXMucmVwcmVzZW50ZWRPYmplY3QucmVtb3ZlRXZlbnRMaXN0
ZW5lcihudWxsLCBudWxsLCB0aGlzKTsKIAogICAgICAgICB0aGlzLl9kYXRhR3JpZC5jbG9zZWQo
KTsKLSAgICB9LAorICAgIH0KIAotICAgIGZpbHRlckRpZENoYW5nZTogZnVuY3Rpb24oKQorICAg
IGZpbHRlckRpZENoYW5nZSgpCiAgICAgewotICAgICAgICBXZWJJbnNwZWN0b3IuVGltZWxpbmVW
aWV3LnByb3RvdHlwZS5maWx0ZXJEaWRDaGFuZ2UuY2FsbCh0aGlzKTsKKyAgICAgICAgc3VwZXIu
ZmlsdGVyRGlkQ2hhbmdlKCk7CiAKICAgICAgICAgdGhpcy5fdXBkYXRlSGlnaGxpZ2h0KCk7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICB1cGRhdGVMYXlvdXQ6IGZ1bmN0aW9uKCkKKyAgICB1cGRhdGVM
YXlvdXQoKQogICAgIHsKLSAgICAgICAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lVmlldy5wcm90b3R5
cGUudXBkYXRlTGF5b3V0LmNhbGwodGhpcyk7CisgICAgICAgIHN1cGVyLnVwZGF0ZUxheW91dCgp
OwogCiAgICAgICAgIHRoaXMuX2RhdGFHcmlkLnVwZGF0ZUxheW91dCgpOwogCiAgICAgICAgIHRo
aXMuX3Byb2Nlc3NQZW5kaW5nUmVjb3JkcygpOwotICAgIH0sCisgICAgfQogCi0gICAgbWF0Y2hU
cmVlRWxlbWVudEFnYWluc3RDdXN0b21GaWx0ZXJzOiBmdW5jdGlvbih0cmVlRWxlbWVudCkKKyAg
ICBtYXRjaFRyZWVFbGVtZW50QWdhaW5zdEN1c3RvbUZpbHRlcnModHJlZUVsZW1lbnQpCiAgICAg
ewogICAgICAgICByZXR1cm4gdGhpcy5fZGF0YUdyaWQudHJlZUVsZW1lbnRNYXRjaGVzQWN0aXZl
U2NvcGVGaWx0ZXJzKHRyZWVFbGVtZW50KTsKLSAgICB9LAorICAgIH0KIAotICAgIHJlc2V0OiBm
dW5jdGlvbigpCisgICAgcmVzZXQoKQogICAgIHsKLSAgICAgICAgV2ViSW5zcGVjdG9yLlRpbWVs
aW5lVmlldy5wcm90b3R5cGUucmVzZXQuY2FsbCh0aGlzKTsKKyAgICAgICAgc3VwZXIucmVzZXQo
KTsKIAogICAgICAgICB0aGlzLl9oaWRlSGlnaGxpZ2h0SWZOZWVkZWQoKTsKIAogICAgICAgICB0
aGlzLl9kYXRhR3JpZC5yZXNldCgpOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJvdGVjdGVk
CiAKLSAgICB0cmVlRWxlbWVudFBhdGhDb21wb25lbnRTZWxlY3RlZDogZnVuY3Rpb24oZXZlbnQp
CisgICAgdHJlZUVsZW1lbnRQYXRoQ29tcG9uZW50U2VsZWN0ZWQoZXZlbnQpCiAgICAgewogICAg
ICAgICB2YXIgZGF0YUdyaWROb2RlID0gdGhpcy5fZGF0YUdyaWQuZGF0YUdyaWROb2RlRm9yVHJl
ZUVsZW1lbnQoZXZlbnQuZGF0YS5wYXRoQ29tcG9uZW50LmdlbmVyYWxUcmVlRWxlbWVudCk7CiAg
ICAgICAgIGlmICghZGF0YUdyaWROb2RlKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBk
YXRhR3JpZE5vZGUucmV2ZWFsQW5kU2VsZWN0KCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICB0cmVl
RWxlbWVudERlc2VsZWN0ZWQ6IGZ1bmN0aW9uKHRyZWVFbGVtZW50KQorICAgIHRyZWVFbGVtZW50
RGVzZWxlY3RlZCh0cmVlRWxlbWVudCkKICAgICB7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5UaW1l
bGluZVZpZXcucHJvdG90eXBlLnRyZWVFbGVtZW50RGVzZWxlY3RlZC5jYWxsKHRoaXMsIHRyZWVF
bGVtZW50KTsKKyAgICAgICAgc3VwZXIudHJlZUVsZW1lbnREZXNlbGVjdGVkKHRyZWVFbGVtZW50
KTsKIAogICAgICAgICB0aGlzLl91cGRhdGVIaWdobGlnaHQoKTsKLSAgICB9LAorICAgIH0KIAot
ICAgIHRyZWVFbGVtZW50U2VsZWN0ZWQ6IGZ1bmN0aW9uKHRyZWVFbGVtZW50LCBzZWxlY3RlZEJ5
VXNlcikKKyAgICB0cmVlRWxlbWVudFNlbGVjdGVkKHRyZWVFbGVtZW50LCBzZWxlY3RlZEJ5VXNl
cikKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9kYXRhR3JpZC5zaG91bGRJZ25vcmVTZWxlY3Rp
b25FdmVudCgpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIFdlYkluc3BlY3Rvci5U
aW1lbGluZVZpZXcucHJvdG90eXBlLnRyZWVFbGVtZW50U2VsZWN0ZWQuY2FsbCh0aGlzLCB0cmVl
RWxlbWVudCwgc2VsZWN0ZWRCeVVzZXIpOworICAgICAgICBzdXBlci50cmVlRWxlbWVudFNlbGVj
dGVkKHRyZWVFbGVtZW50LCBzZWxlY3RlZEJ5VXNlcik7CiAKICAgICAgICAgdGhpcy5fdXBkYXRl
SGlnaGxpZ2h0KCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcml2YXRlCiAKLSAgICBfcHJv
Y2Vzc1BlbmRpbmdSZWNvcmRzOiBmdW5jdGlvbigpCisgICAgX3Byb2Nlc3NQZW5kaW5nUmVjb3Jk
cygpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX3BlbmRpbmdSZWNvcmRzLmxlbmd0aCkKICAg
ICAgICAgICAgIHJldHVybjsKQEAgLTIwNCw5ICsxOTksOSBAQCBXZWJJbnNwZWN0b3IuTGF5b3V0
VGltZWxpbmVWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIHRoaXMuX3Bl
bmRpbmdSZWNvcmRzID0gW107Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfbGF5b3V0VGltZWxpbmVS
ZWNvcmRBZGRlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX2xheW91dFRpbWVsaW5lUmVjb3JkQWRk
ZWQoZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgbGF5b3V0VGltZWxpbmVSZWNvcmQgPSBldmVu
dC5kYXRhLnJlY29yZDsKICAgICAgICAgY29uc29sZS5hc3NlcnQobGF5b3V0VGltZWxpbmVSZWNv
cmQgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuTGF5b3V0VGltZWxpbmVSZWNvcmQpOwpAQCAtMjE0
LDE5ICsyMDksMTkgQEAgV2ViSW5zcGVjdG9yLkxheW91dFRpbWVsaW5lVmlldy5wcm90b3R5cGUg
PSB7CiAgICAgICAgIHRoaXMuX3BlbmRpbmdSZWNvcmRzLnB1c2gobGF5b3V0VGltZWxpbmVSZWNv
cmQpOwogCiAgICAgICAgIHRoaXMubmVlZHNMYXlvdXQoKTsKLSAgICB9LAorICAgIH0KIAotICAg
IF9kYXRhR3JpZEZpbHRlcnNEaWRDaGFuZ2U6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9kYXRhR3Jp
ZEZpbHRlcnNEaWRDaGFuZ2UoZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLnRpbWVsaW5lU2lk
ZWJhclBhbmVsLnVwZGF0ZUZpbHRlcigpOwotICAgIH0sCisgICAgfQogCi0gICAgX2RhdGFHcmlk
Tm9kZVNlbGVjdGVkOiBmdW5jdGlvbihldmVudCkKKyAgICBfZGF0YUdyaWROb2RlU2VsZWN0ZWQo
ZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJ
bnNwZWN0b3IuQ29udGVudFZpZXcuRXZlbnQuU2VsZWN0aW9uUGF0aENvbXBvbmVudHNEaWRDaGFu
Z2UpOwotICAgIH0sCisgICAgfQogCi0gICAgX3VwZGF0ZUhpZ2hsaWdodDogZnVuY3Rpb24oKQor
ICAgIF91cGRhdGVIaWdobGlnaHQoKQogICAgIHsKICAgICAgICAgdmFyIHJlY29yZCA9IHRoaXMu
X2hvdmVyZWRPclNlbGVjdGVkUmVjb3JkKCk7CiAgICAgICAgIGlmICghcmVjb3JkKSB7CkBAIC0y
MzUsOSArMjMwLDkgQEAgV2ViSW5zcGVjdG9yLkxheW91dFRpbWVsaW5lVmlldy5wcm90b3R5cGUg
PSB7CiAgICAgICAgIH0KIAogICAgICAgICB0aGlzLl9zaG93SGlnaGxpZ2h0Rm9yUmVjb3JkKHJl
Y29yZCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfc2hvd0hpZ2hsaWdodEZvclJlY29yZDogZnVu
Y3Rpb24ocmVjb3JkKQorICAgIF9zaG93SGlnaGxpZ2h0Rm9yUmVjb3JkKHJlY29yZCkKICAgICB7
CiAgICAgICAgIGlmICh0aGlzLl9zaG93aW5nSGlnaGxpZ2h0Rm9yUmVjb3JkID09PSByZWNvcmQp
CiAgICAgICAgICAgICByZXR1cm47CkBAIC0yNjcsOSArMjYyLDkgQEAgV2ViSW5zcGVjdG9yLkxh
eW91dFRpbWVsaW5lVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9zaG93aW5n
SGlnaGxpZ2h0ID0gZmFsc2U7CiAgICAgICAgICAgICBET01BZ2VudC5oaWRlSGlnaGxpZ2h0KCk7
CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0KIAotICAgIF9oaWRlSGlnaGxpZ2h0SWZOZWVkZWQ6
IGZ1bmN0aW9uKCkKKyAgICBfaGlkZUhpZ2hsaWdodElmTmVlZGVkKCkKICAgICB7CiAgICAgICAg
IHRoaXMuX3Nob3dpbmdIaWdobGlnaHRGb3JSZWNvcmQgPSBudWxsOwogCkBAIC0yNzcsOSArMjcy
LDkgQEAgV2ViSW5zcGVjdG9yLkxheW91dFRpbWVsaW5lVmlldy5wcm90b3R5cGUgPSB7CiAgICAg
ICAgICAgICB0aGlzLl9zaG93aW5nSGlnaGxpZ2h0ID0gZmFsc2U7CiAgICAgICAgICAgICBET01B
Z2VudC5oaWRlSGlnaGxpZ2h0KCk7CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0KIAotICAgIF9o
b3ZlcmVkT3JTZWxlY3RlZFJlY29yZDogZnVuY3Rpb24oKQorICAgIF9ob3ZlcmVkT3JTZWxlY3Rl
ZFJlY29yZCgpCiAgICAgewogICAgICAgICBpZiAodGhpcy5faG92ZXJlZERhdGFHcmlkTm9kZSkK
ICAgICAgICAgICAgIHJldHVybiB0aGlzLl9ob3ZlcmVkRGF0YUdyaWROb2RlLnJlY29yZDsKQEAg
LTI5NCw5ICsyODksOSBAQCBXZWJJbnNwZWN0b3IuTGF5b3V0VGltZWxpbmVWaWV3LnByb3RvdHlw
ZSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIHJldHVybiBudWxsOwotICAgIH0sCisgICAgfQog
Ci0gICAgX21vdXNlT3ZlckRhdGFHcmlkOiBmdW5jdGlvbihldmVudCkKKyAgICBfbW91c2VPdmVy
RGF0YUdyaWQoZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgaG92ZXJlZERhdGFHcmlkTm9kZSA9
IHRoaXMuX2RhdGFHcmlkLmRhdGFHcmlkTm9kZUZyb21Ob2RlKGV2ZW50LnRhcmdldCk7CiAgICAg
ICAgIGlmICghaG92ZXJlZERhdGFHcmlkTm9kZSkKQEAgLTMwNCwxNSArMjk5LDE1IEBAIFdlYklu
c3BlY3Rvci5MYXlvdXRUaW1lbGluZVZpZXcucHJvdG90eXBlID0gewogCiAgICAgICAgIHRoaXMu
X2hvdmVyZWREYXRhR3JpZE5vZGUgPSBob3ZlcmVkRGF0YUdyaWROb2RlOwogICAgICAgICB0aGlz
Ll91cGRhdGVIaWdobGlnaHQoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9tb3VzZUxlYXZlRGF0
YUdyaWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9tb3VzZUxlYXZlRGF0YUdyaWQoZXZlbnQpCiAg
ICAgewogICAgICAgICB0aGlzLl9ob3ZlcmVkRGF0YUdyaWROb2RlID0gbnVsbDsKICAgICAgICAg
dGhpcy5fdXBkYXRlSGlnaGxpZ2h0KCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfbW91c2VPdmVy
VHJlZU91dGxpbmU6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9tb3VzZU92ZXJUcmVlT3V0bGluZShl
dmVudCkKICAgICB7CiAgICAgICAgIHZhciBob3ZlcmVkVHJlZUVsZW1lbnQgPSB0aGlzLm5hdmln
YXRpb25TaWRlYmFyVHJlZU91dGxpbmUudHJlZUVsZW1lbnRGcm9tTm9kZShldmVudC50YXJnZXQp
OwogICAgICAgICBpZiAoIWhvdmVyZWRUcmVlRWxlbWVudCkKQEAgLTMyMCw5ICszMTUsOSBAQCBX
ZWJJbnNwZWN0b3IuTGF5b3V0VGltZWxpbmVWaWV3LnByb3RvdHlwZSA9IHsKIAogICAgICAgICB0
aGlzLl9ob3ZlcmVkVHJlZUVsZW1lbnQgPSBob3ZlcmVkVHJlZUVsZW1lbnQ7CiAgICAgICAgIHRo
aXMuX3VwZGF0ZUhpZ2hsaWdodCgpOwotICAgIH0sCisgICAgfQogCi0gICAgX21vdXNlTGVhdmVU
cmVlT3V0bGluZTogZnVuY3Rpb24oZXZlbnQpCisgICAgX21vdXNlTGVhdmVUcmVlT3V0bGluZShl
dmVudCkKICAgICB7CiAgICAgICAgIHRoaXMuX2hvdmVyZWRUcmVlRWxlbWVudCA9IG51bGw7CiAg
ICAgICAgIHRoaXMuX3VwZGF0ZUhpZ2hsaWdodCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTGluZWFyVGltZWxpbmVPdmVydmlldy5qcyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0xpbmVhclRpbWVsaW5l
T3ZlcnZpZXcuanMKaW5kZXggMzAzYzFlNmZjYTAyZDRkZGM2ZmZlMGFmZWQ3MjFlZjg4ZDJhZWJl
Yi4uY2YxMWNhOWJiMmY5ZGMxYTMzODgxNDk2N2M4N2Y5ODQ4NTMzNTgxZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTGluZWFyVGltZWxpbmVP
dmVydmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9MaW5lYXJUaW1lbGluZU92ZXJ2aWV3LmpzCkBAIC0yMywyNiArMjMsMjIgQEAKICAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuTGluZWFyVGlt
ZWxpbmVPdmVydmlldyA9IGZ1bmN0aW9uKHRpbWVsaW5lUmVjb3JkaW5nKQorV2ViSW5zcGVjdG9y
LkxpbmVhclRpbWVsaW5lT3ZlcnZpZXcgPSBjbGFzcyBMaW5lYXJUaW1lbGluZU92ZXJ2aWV3IGV4
dGVuZHMgV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXcKIHsKLSAgICAvLyBGSVhNRTogQ29u
dmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXcgc3ViY2xhc3MsIGFu
ZCBjYWxsIHN1cGVyKCkuCi0KLSAgICB2YXIgZGVmYXVsdFNldHRpbmdzVmFsdWVzID0gewotICAg
ICAgICBkdXJhdGlvblBlclBpeGVsOiAwLjAxLAotICAgICAgICBzZWxlY3Rpb25TdGFydFZhbHVl
OiAwLAotICAgICAgICBzZWxlY3Rpb25EdXJhdGlvbjogMTUKLSAgICB9OwotCi0gICAgV2ViSW5z
cGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXcuY2FsbCh0aGlzLCAibGluZWFyIiwgdGltZWxpbmVSZWNv
cmRpbmcsIDAuMDAwMSwgNjAsIGRlZmF1bHRTZXR0aW5nc1ZhbHVlcyk7Ci19OworICAgIGNvbnN0
cnVjdG9yKHRpbWVsaW5lUmVjb3JkaW5nKQorICAgIHsKKyAgICAgICAgdmFyIGRlZmF1bHRTZXR0
aW5nc1ZhbHVlcyA9IHsKKyAgICAgICAgICAgIGR1cmF0aW9uUGVyUGl4ZWw6IDAuMDEsCisgICAg
ICAgICAgICBzZWxlY3Rpb25TdGFydFZhbHVlOiAwLAorICAgICAgICAgICAgc2VsZWN0aW9uRHVy
YXRpb246IDE1CisgICAgICAgIH07CiAKLVdlYkluc3BlY3Rvci5MaW5lYXJUaW1lbGluZU92ZXJ2
aWV3LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkxpbmVhclRp
bWVsaW5lT3ZlcnZpZXcsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVy
dmlldy5wcm90b3R5cGUsCisgICAgICAgIHN1cGVyKCJsaW5lYXIiLCB0aW1lbGluZVJlY29yZGlu
ZywgMC4wMDAxLCA2MCwgZGVmYXVsdFNldHRpbmdzVmFsdWVzKTsKKyAgICB9CiAKICAgICAvLyBQ
cm90ZWN0ZWQKIAotICAgIGNhblNob3dUaW1lbGluZTogZnVuY3Rpb24odGltZWxpbmUpCisgICAg
Y2FuU2hvd1RpbWVsaW5lKHRpbWVsaW5lKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRpbWVsaW5l
LnR5cGUgIT09IFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZC5UeXBlLlJlbmRlcmluZ0ZyYW1l
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL05ldHdvcmtUaW1lbGluZU92ZXJ2aWV3R3JhcGguanMgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9OZXR3b3JrVGltZWxpbmVPdmVydmlld0dyYXBoLmpz
CmluZGV4IDU0NGU1NmRkMzAxMDFjMzAyMTM1OGM1MTY3ZTgzMjdkMWFmOWM3MGUuLmY5NGJlOWUw
ODRmZDUyOGYxMTQ4ZDM2YjNhOWIzMDEwZTBhMWFiY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05ldHdvcmtUaW1lbGluZU92ZXJ2aWV3R3Jh
cGguanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTmV0
d29ya1RpbWVsaW5lT3ZlcnZpZXdHcmFwaC5qcwpAQCAtMSw2ICsxLDYgQEAKIAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNCwzMyArMjQsMjUgQEAKICAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuTmV0d29ya1Rp
bWVsaW5lT3ZlcnZpZXdHcmFwaCA9IGZ1bmN0aW9uKHRpbWVsaW5lLCB0aW1lbGluZU92ZXJ2aWV3
KQorV2ViSW5zcGVjdG9yLk5ldHdvcmtUaW1lbGluZU92ZXJ2aWV3R3JhcGggPSBjbGFzcyBOZXR3
b3JrVGltZWxpbmVPdmVydmlld0dyYXBoIGV4dGVuZHMgV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3Zl
cnZpZXdHcmFwaAogewotICAgIFdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3R3JhcGguY2Fs
bCh0aGlzLCB0aW1lbGluZSwgdGltZWxpbmVPdmVydmlldyk7Ci0KLSAgICB0aGlzLmVsZW1lbnQu
Y2xhc3NMaXN0LmFkZCgibmV0d29yayIpOworICAgIGNvbnN0cnVjdG9yKHRpbWVsaW5lLCB0aW1l
bGluZU92ZXJ2aWV3KQorICAgIHsKKyAgICAgICAgc3VwZXIodGltZWxpbmUsIHRpbWVsaW5lT3Zl
cnZpZXcpOwogCi0gICAgdGltZWxpbmUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGlt
ZWxpbmUuRXZlbnQuUmVjb3JkQWRkZWQsIHRoaXMuX25ldHdvcmtUaW1lbGluZVJlY29yZEFkZGVk
LCB0aGlzKTsKLSAgICB0aW1lbGluZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5UaW1l
bGluZS5FdmVudC5UaW1lc1VwZGF0ZWQsIHRoaXMubmVlZHNMYXlvdXQsIHRoaXMpOworICAgICAg
ICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgibmV0d29yayIpOwogCi0gICAgdGhpcy5yZXNl
dCgpOwotfTsKLQotV2ViSW5zcGVjdG9yLk5ldHdvcmtUaW1lbGluZU92ZXJ2aWV3R3JhcGguR3Jh
cGhSb3dTdHlsZUNsYXNzTmFtZSA9ICJncmFwaC1yb3ciOwotV2ViSW5zcGVjdG9yLk5ldHdvcmtU
aW1lbGluZU92ZXJ2aWV3R3JhcGguQmFyU3R5bGVDbGFzc05hbWUgPSAiYmFyIjsKLVdlYkluc3Bl
Y3Rvci5OZXR3b3JrVGltZWxpbmVPdmVydmlld0dyYXBoLkluYWN0aXZlQmFyU3R5bGVDbGFzc05h
bWUgPSAiaW5hY3RpdmUiOwotV2ViSW5zcGVjdG9yLk5ldHdvcmtUaW1lbGluZU92ZXJ2aWV3R3Jh
cGguVW5maW5pc2hlZFN0eWxlQ2xhc3NOYW1lID0gInVuZmluaXNoZWQiOwotV2ViSW5zcGVjdG9y
Lk5ldHdvcmtUaW1lbGluZU92ZXJ2aWV3R3JhcGguTWF4aW11bVJvd0NvdW50ID0gNjsKKyAgICAg
ICAgdGltZWxpbmUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGltZWxpbmUuRXZlbnQu
UmVjb3JkQWRkZWQsIHRoaXMuX25ldHdvcmtUaW1lbGluZVJlY29yZEFkZGVkLCB0aGlzKTsKKyAg
ICAgICAgdGltZWxpbmUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGltZWxpbmUuRXZl
bnQuVGltZXNVcGRhdGVkLCB0aGlzLm5lZWRzTGF5b3V0LCB0aGlzKTsKIAotV2ViSW5zcGVjdG9y
Lk5ldHdvcmtUaW1lbGluZU92ZXJ2aWV3R3JhcGgucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVj
dG9yOiBXZWJJbnNwZWN0b3IuTmV0d29ya1RpbWVsaW5lT3ZlcnZpZXdHcmFwaCwKLSAgICBfX3By
b3RvX186IFdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3R3JhcGgucHJvdG90eXBlLAorICAg
ICAgICB0aGlzLnJlc2V0KCk7CisgICAgfQogCiAgICAgLy8gUHVibGljCiAKLSAgICByZXNldDog
ZnVuY3Rpb24oKQorICAgIHJlc2V0KCkKICAgICB7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5UaW1l
bGluZU92ZXJ2aWV3R3JhcGgucHJvdG90eXBlLnJlc2V0LmNhbGwodGhpcyk7CisgICAgICAgIHN1
cGVyLnJlc2V0KCk7CiAKICAgICAgICAgdGhpcy5fbmV4dER1bXBSb3cgPSAwOwogICAgICAgICB0
aGlzLl90aW1lbGluZVJlY29yZEdyaWRSb3dzID0gW107CkBAIC02MiwxNiArNTQsMTYgQEAgV2Vi
SW5zcGVjdG9yLk5ldHdvcmtUaW1lbGluZU92ZXJ2aWV3R3JhcGgucHJvdG90eXBlID0gewogCiAg
ICAgICAgIGZvciAodmFyIHJvd1JlY29yZHMgb2YgdGhpcy5fdGltZWxpbmVSZWNvcmRHcmlkUm93
cykgewogICAgICAgICAgICAgcm93UmVjb3Jkcy5fX2VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJkaXYiKTsKLSAgICAgICAgICAgIHJvd1JlY29yZHMuX19lbGVtZW50LmNsYXNzTmFt
ZSA9IFdlYkluc3BlY3Rvci5OZXR3b3JrVGltZWxpbmVPdmVydmlld0dyYXBoLkdyYXBoUm93U3R5
bGVDbGFzc05hbWU7CisgICAgICAgICAgICByb3dSZWNvcmRzLl9fZWxlbWVudC5jbGFzc0xpc3Qu
YWRkKCJncmFwaC1yb3ciKTsKICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZChy
b3dSZWNvcmRzLl9fZWxlbWVudCk7CiAKICAgICAgICAgICAgIHJvd1JlY29yZHMuX19yZWNvcmRC
YXJzID0gW107CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0KIAotICAgIHVwZGF0ZUxheW91dDog
ZnVuY3Rpb24oKQorICAgIHVwZGF0ZUxheW91dCgpCiAgICAgewotICAgICAgICBXZWJJbnNwZWN0
b3IuVGltZWxpbmVPdmVydmlld0dyYXBoLnByb3RvdHlwZS51cGRhdGVMYXlvdXQuY2FsbCh0aGlz
KTsKKyAgICAgICAgc3VwZXIudXBkYXRlTGF5b3V0KCk7CiAKICAgICAgICAgdmFyIHNlY29uZHNQ
ZXJQaXhlbCA9IHRoaXMudGltZWxpbmVPdmVydmlldy5zZWNvbmRzUGVyUGl4ZWw7CiAKQEAgLTEw
NiwxMSArOTgsMTEgQEAgV2ViSW5zcGVjdG9yLk5ldHdvcmtUaW1lbGluZU92ZXJ2aWV3R3JhcGgu
cHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgIHJvd1JlY29yZEJhcnNbcmVjb3JkQmFySW5k
ZXhdLmVsZW1lbnQucmVtb3ZlKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICB9LAor
ICAgIH0KIAogICAgIC8vIFByaXZhdGUKIAotICAgIF9uZXR3b3JrVGltZWxpbmVSZWNvcmRBZGRl
ZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX25ldHdvcmtUaW1lbGluZVJlY29yZEFkZGVkKGV2ZW50
KQogICAgIHsKICAgICAgICAgdmFyIHJlc291cmNlVGltZWxpbmVSZWNvcmQgPSBldmVudC5kYXRh
LnJlY29yZDsKICAgICAgICAgY29uc29sZS5hc3NlcnQocmVzb3VyY2VUaW1lbGluZVJlY29yZCBp
bnN0YW5jZW9mIFdlYkluc3BlY3Rvci5SZXNvdXJjZVRpbWVsaW5lUmVjb3JkKTsKQEAgLTE2MCwz
ICsxNTIsNSBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya1RpbWVsaW5lT3ZlcnZpZXdHcmFwaC5wcm90
b3R5cGUgPSB7CiAgICAgICAgIHRoaXMubmVlZHNMYXlvdXQoKTsKICAgICB9CiB9OworCitXZWJJ
bnNwZWN0b3IuTmV0d29ya1RpbWVsaW5lT3ZlcnZpZXdHcmFwaC5NYXhpbXVtUm93Q291bnQgPSA2
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
TmV0d29ya1RpbWVsaW5lVmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL05ldHdvcmtUaW1lbGluZVZpZXcuanMKaW5kZXggYmVhMTk1MDE1NmM2ZGFjOGE2
NTBlOWY4ZTQ4OTllMWE2NjY3NzI2OC4uZTNjNWJiNzdmODMyNDBkZmZhNDk2YTUzN2MxODhjMDcz
OTBhYmVmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvTmV0d29ya1RpbWVsaW5lVmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9OZXR3b3JrVGltZWxpbmVWaWV3LmpzCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywxNDggKzIzLDE0
MyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3Bl
Y3Rvci5OZXR3b3JrVGltZWxpbmVWaWV3ID0gZnVuY3Rpb24odGltZWxpbmUsIGV4dHJhQXJndW1l
bnRzKQorV2ViSW5zcGVjdG9yLk5ldHdvcmtUaW1lbGluZVZpZXcgPSBjbGFzcyBOZXR3b3JrVGlt
ZWxpbmVWaWV3IGV4dGVuZHMgV2ViSW5zcGVjdG9yLlRpbWVsaW5lVmlldwogewotICAgIFdlYklu
c3BlY3Rvci5UaW1lbGluZVZpZXcuY2FsbCh0aGlzLCB0aW1lbGluZSwgZXh0cmFBcmd1bWVudHMp
OwotCi0gICAgY29uc29sZS5hc3NlcnQodGltZWxpbmUudHlwZSA9PT0gV2ViSW5zcGVjdG9yLlRp
bWVsaW5lUmVjb3JkLlR5cGUuTmV0d29yayk7Ci0KLSAgICB0aGlzLm5hdmlnYXRpb25TaWRlYmFy
VHJlZU91dGxpbmUuZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9u
U2lkZWJhclBhbmVsLkhpZGVEaXNjbG9zdXJlQnV0dG9uc1N0eWxlQ2xhc3NOYW1lKTsKLSAgICB0
aGlzLm5hdmlnYXRpb25TaWRlYmFyVHJlZU91dGxpbmUuZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdl
Ykluc3BlY3Rvci5OZXR3b3JrVGltZWxpbmVWaWV3LlRyZWVPdXRsaW5lU3R5bGVDbGFzc05hbWUp
OworICAgIGNvbnN0cnVjdG9yKHRpbWVsaW5lLCBleHRyYUFyZ3VtZW50cykKKyAgICB7CisgICAg
ICAgIHN1cGVyKHRpbWVsaW5lLCBleHRyYUFyZ3VtZW50cyk7CiAKLSAgICB2YXIgY29sdW1ucyA9
IHtkb21haW46IHt9LCB0eXBlOiB7fSwgbWV0aG9kOiB7fSwgc2NoZW1lOiB7fSwgc3RhdHVzQ29k
ZToge30sIGNhY2hlZDoge30sIHNpemU6IHt9LCB0cmFuc2ZlclNpemU6IHt9LCByZXF1ZXN0U2Vu
dDoge30sIGxhdGVuY3k6IHt9LCBkdXJhdGlvbjoge319OworICAgICAgICBjb25zb2xlLmFzc2Vy
dCh0aW1lbGluZS50eXBlID09PSBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmQuVHlwZS5OZXR3
b3JrKTsKIAotICAgIGNvbHVtbnMuZG9tYWluLnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJEb21haW4iKTsKLSAgICBjb2x1bW5zLmRvbWFpbi53aWR0aCA9ICIxMCUiOworICAgICAgICB0
aGlzLm5hdmlnYXRpb25TaWRlYmFyVHJlZU91dGxpbmUuZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdl
Ykluc3BlY3Rvci5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLkhpZGVEaXNjbG9zdXJlQnV0dG9uc1N0
eWxlQ2xhc3NOYW1lKTsKKyAgICAgICAgdGhpcy5uYXZpZ2F0aW9uU2lkZWJhclRyZWVPdXRsaW5l
LmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgibmV0d29yayIpOwogCi0gICAgY29sdW1ucy50eXBlLnRp
dGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJUeXBlIik7Ci0gICAgY29sdW1ucy50eXBlLndp
ZHRoID0gIjglIjsKKyAgICAgICAgdmFyIGNvbHVtbnMgPSB7ZG9tYWluOiB7fSwgdHlwZToge30s
IG1ldGhvZDoge30sIHNjaGVtZToge30sIHN0YXR1c0NvZGU6IHt9LCBjYWNoZWQ6IHt9LCBzaXpl
OiB7fSwgdHJhbnNmZXJTaXplOiB7fSwgcmVxdWVzdFNlbnQ6IHt9LCBsYXRlbmN5OiB7fSwgZHVy
YXRpb246IHt9fTsKIAotICAgIHZhciB0eXBlVG9MYWJlbE1hcCA9IG5ldyBNYXA7Ci0gICAgZm9y
ICh2YXIga2V5IGluIFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlKSB7Ci0gICAgICAgIHZhciB2
YWx1ZSA9IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlW2tleV07Ci0gICAgICAgIHR5cGVUb0xh
YmVsTWFwLnNldCh2YWx1ZSwgV2ViSW5zcGVjdG9yLlJlc291cmNlLmRpc3BsYXlOYW1lRm9yVHlw
ZSh2YWx1ZSwgdHJ1ZSkpOwotICAgIH0KKyAgICAgICAgY29sdW1ucy5kb21haW4udGl0bGUgPSBX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkRvbWFpbiIpOworICAgICAgICBjb2x1bW5zLmRvbWFpbi53
aWR0aCA9ICIxMCUiOwogCi0gICAgY29sdW1ucy50eXBlLnNjb3BlQmFyID0gV2ViSW5zcGVjdG9y
LlRpbWVsaW5lRGF0YUdyaWQuY3JlYXRlQ29sdW1uU2NvcGVCYXIoIm5ldHdvcmsiLCB0eXBlVG9M
YWJlbE1hcCk7Ci0gICAgdGhpcy5fc2NvcGVCYXIgPSBjb2x1bW5zLnR5cGUuc2NvcGVCYXI7Cisg
ICAgICAgIGNvbHVtbnMudHlwZS50aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiVHlwZSIp
OworICAgICAgICBjb2x1bW5zLnR5cGUud2lkdGggPSAiOCUiOwogCi0gICAgY29sdW1ucy5tZXRo
b2QudGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk1ldGhvZCIpOwotICAgIGNvbHVtbnMu
bWV0aG9kLndpZHRoID0gIjYlIjsKKyAgICAgICAgdmFyIHR5cGVUb0xhYmVsTWFwID0gbmV3IE1h
cDsKKyAgICAgICAgZm9yICh2YXIga2V5IGluIFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlKSB7
CisgICAgICAgICAgICB2YXIgdmFsdWUgPSBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZVtrZXld
OworICAgICAgICAgICAgdHlwZVRvTGFiZWxNYXAuc2V0KHZhbHVlLCBXZWJJbnNwZWN0b3IuUmVz
b3VyY2UuZGlzcGxheU5hbWVGb3JUeXBlKHZhbHVlLCB0cnVlKSk7CisgICAgICAgIH0KIAotICAg
IGNvbHVtbnMuc2NoZW1lLnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTY2hlbWUiKTsK
LSAgICBjb2x1bW5zLnNjaGVtZS53aWR0aCA9ICI2JSI7CisgICAgICAgIGNvbHVtbnMudHlwZS5z
Y29wZUJhciA9IFdlYkluc3BlY3Rvci5UaW1lbGluZURhdGFHcmlkLmNyZWF0ZUNvbHVtblNjb3Bl
QmFyKCJuZXR3b3JrIiwgdHlwZVRvTGFiZWxNYXApOworICAgICAgICB0aGlzLl9zY29wZUJhciA9
IGNvbHVtbnMudHlwZS5zY29wZUJhcjsKIAotICAgIGNvbHVtbnMuc3RhdHVzQ29kZS50aXRsZSA9
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU3RhdHVzIik7Ci0gICAgY29sdW1ucy5zdGF0dXNDb2Rl
LndpZHRoID0gIjYlIjsKKyAgICAgICAgY29sdW1ucy5tZXRob2QudGl0bGUgPSBXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIk1ldGhvZCIpOworICAgICAgICBjb2x1bW5zLm1ldGhvZC53aWR0aCA9ICI2
JSI7CiAKLSAgICBjb2x1bW5zLmNhY2hlZC50aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygi
Q2FjaGVkIik7Ci0gICAgY29sdW1ucy5jYWNoZWQud2lkdGggPSAiNiUiOworICAgICAgICBjb2x1
bW5zLnNjaGVtZS50aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2NoZW1lIik7CisgICAg
ICAgIGNvbHVtbnMuc2NoZW1lLndpZHRoID0gIjYlIjsKIAotICAgIGNvbHVtbnMuc2l6ZS50aXRs
ZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2l6ZSIpOwotICAgIGNvbHVtbnMuc2l6ZS53aWR0
aCA9ICI4JSI7Ci0gICAgY29sdW1ucy5zaXplLmFsaWduZWQgPSAicmlnaHQiOworICAgICAgICBj
b2x1bW5zLnN0YXR1c0NvZGUudGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlN0YXR1cyIp
OworICAgICAgICBjb2x1bW5zLnN0YXR1c0NvZGUud2lkdGggPSAiNiUiOwogCi0gICAgY29sdW1u
cy50cmFuc2ZlclNpemUudGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlRyYW5zZmVyZWQi
KTsKLSAgICBjb2x1bW5zLnRyYW5zZmVyU2l6ZS53aWR0aCA9ICI4JSI7Ci0gICAgY29sdW1ucy50
cmFuc2ZlclNpemUuYWxpZ25lZCA9ICJyaWdodCI7CisgICAgICAgIGNvbHVtbnMuY2FjaGVkLnRp
dGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDYWNoZWQiKTsKKyAgICAgICAgY29sdW1ucy5j
YWNoZWQud2lkdGggPSAiNiUiOwogCi0gICAgY29sdW1ucy5yZXF1ZXN0U2VudC50aXRsZSA9IFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiU3RhcnQgVGltZSIpOwotICAgIGNvbHVtbnMucmVxdWVzdFNl
bnQud2lkdGggPSAiOSUiOwotICAgIGNvbHVtbnMucmVxdWVzdFNlbnQuYWxpZ25lZCA9ICJyaWdo
dCI7CisgICAgICAgIGNvbHVtbnMuc2l6ZS50aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygi
U2l6ZSIpOworICAgICAgICBjb2x1bW5zLnNpemUud2lkdGggPSAiOCUiOworICAgICAgICBjb2x1
bW5zLnNpemUuYWxpZ25lZCA9ICJyaWdodCI7CiAKLSAgICBjb2x1bW5zLmxhdGVuY3kudGl0bGUg
PSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkxhdGVuY3kiKTsKLSAgICBjb2x1bW5zLmxhdGVuY3ku
d2lkdGggPSAiOSUiOwotICAgIGNvbHVtbnMubGF0ZW5jeS5hbGlnbmVkID0gInJpZ2h0IjsKKyAg
ICAgICAgY29sdW1ucy50cmFuc2ZlclNpemUudGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IlRyYW5zZmVyZWQiKTsKKyAgICAgICAgY29sdW1ucy50cmFuc2ZlclNpemUud2lkdGggPSAiOCUi
OworICAgICAgICBjb2x1bW5zLnRyYW5zZmVyU2l6ZS5hbGlnbmVkID0gInJpZ2h0IjsKIAotICAg
IGNvbHVtbnMuZHVyYXRpb24udGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkR1cmF0aW9u
Iik7Ci0gICAgY29sdW1ucy5kdXJhdGlvbi53aWR0aCA9ICI5JSI7Ci0gICAgY29sdW1ucy5kdXJh
dGlvbi5hbGlnbmVkID0gInJpZ2h0IjsKKyAgICAgICAgY29sdW1ucy5yZXF1ZXN0U2VudC50aXRs
ZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU3RhcnQgVGltZSIpOworICAgICAgICBjb2x1bW5z
LnJlcXVlc3RTZW50LndpZHRoID0gIjklIjsKKyAgICAgICAgY29sdW1ucy5yZXF1ZXN0U2VudC5h
bGlnbmVkID0gInJpZ2h0IjsKIAotICAgIGZvciAodmFyIGNvbHVtbiBpbiBjb2x1bW5zKQotICAg
ICAgICBjb2x1bW5zW2NvbHVtbl0uc29ydGFibGUgPSB0cnVlOworICAgICAgICBjb2x1bW5zLmxh
dGVuY3kudGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkxhdGVuY3kiKTsKKyAgICAgICAg
Y29sdW1ucy5sYXRlbmN5LndpZHRoID0gIjklIjsKKyAgICAgICAgY29sdW1ucy5sYXRlbmN5LmFs
aWduZWQgPSAicmlnaHQiOwogCi0gICAgdGhpcy5fZGF0YUdyaWQgPSBuZXcgV2ViSW5zcGVjdG9y
LlRpbWVsaW5lRGF0YUdyaWQodGhpcy5uYXZpZ2F0aW9uU2lkZWJhclRyZWVPdXRsaW5lLCBjb2x1
bW5zKTsKLSAgICB0aGlzLl9kYXRhR3JpZC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5U
aW1lbGluZURhdGFHcmlkLkV2ZW50LkZpbHRlcnNEaWRDaGFuZ2UsIHRoaXMuX2RhdGFHcmlkRmls
dGVyc0RpZENoYW5nZSwgdGhpcyk7Ci0gICAgdGhpcy5fZGF0YUdyaWQuYWRkRXZlbnRMaXN0ZW5l
cihXZWJJbnNwZWN0b3IuRGF0YUdyaWQuRXZlbnQuU2VsZWN0ZWROb2RlQ2hhbmdlZCwgdGhpcy5f
ZGF0YUdyaWROb2RlU2VsZWN0ZWQsIHRoaXMpOwotICAgIHRoaXMuX2RhdGFHcmlkLnNvcnRDb2x1
bW5JZGVudGlmaWVyID0gInJlcXVlc3RTZW50IjsKLSAgICB0aGlzLl9kYXRhR3JpZC5zb3J0T3Jk
ZXIgPSBXZWJJbnNwZWN0b3IuRGF0YUdyaWQuU29ydE9yZGVyLkFzY2VuZGluZzsKKyAgICAgICAg
Y29sdW1ucy5kdXJhdGlvbi50aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiRHVyYXRpb24i
KTsKKyAgICAgICAgY29sdW1ucy5kdXJhdGlvbi53aWR0aCA9ICI5JSI7CisgICAgICAgIGNvbHVt
bnMuZHVyYXRpb24uYWxpZ25lZCA9ICJyaWdodCI7CiAKLSAgICB0aGlzLmVsZW1lbnQuY2xhc3NM
aXN0LmFkZChXZWJJbnNwZWN0b3IuTmV0d29ya1RpbWVsaW5lVmlldy5TdHlsZUNsYXNzTmFtZSk7
Ci0gICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2RhdGFHcmlkLmVsZW1lbnQpOwor
ICAgICAgICBmb3IgKHZhciBjb2x1bW4gaW4gY29sdW1ucykKKyAgICAgICAgICAgIGNvbHVtbnNb
Y29sdW1uXS5zb3J0YWJsZSA9IHRydWU7CiAKLSAgICB0aW1lbGluZS5hZGRFdmVudExpc3RlbmVy
KFdlYkluc3BlY3Rvci5UaW1lbGluZS5FdmVudC5SZWNvcmRBZGRlZCwgdGhpcy5fbmV0d29ya1Rp
bWVsaW5lUmVjb3JkQWRkZWQsIHRoaXMpOworICAgICAgICB0aGlzLl9kYXRhR3JpZCA9IG5ldyBX
ZWJJbnNwZWN0b3IuVGltZWxpbmVEYXRhR3JpZCh0aGlzLm5hdmlnYXRpb25TaWRlYmFyVHJlZU91
dGxpbmUsIGNvbHVtbnMpOworICAgICAgICB0aGlzLl9kYXRhR3JpZC5hZGRFdmVudExpc3RlbmVy
KFdlYkluc3BlY3Rvci5UaW1lbGluZURhdGFHcmlkLkV2ZW50LkZpbHRlcnNEaWRDaGFuZ2UsIHRo
aXMuX2RhdGFHcmlkRmlsdGVyc0RpZENoYW5nZSwgdGhpcyk7CisgICAgICAgIHRoaXMuX2RhdGFH
cmlkLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRhdGFHcmlkLkV2ZW50LlNlbGVjdGVk
Tm9kZUNoYW5nZWQsIHRoaXMuX2RhdGFHcmlkTm9kZVNlbGVjdGVkLCB0aGlzKTsKKyAgICAgICAg
dGhpcy5fZGF0YUdyaWQuc29ydENvbHVtbklkZW50aWZpZXIgPSAicmVxdWVzdFNlbnQiOworICAg
ICAgICB0aGlzLl9kYXRhR3JpZC5zb3J0T3JkZXIgPSBXZWJJbnNwZWN0b3IuRGF0YUdyaWQuU29y
dE9yZGVyLkFzY2VuZGluZzsKIAotICAgIHRoaXMuX3BlbmRpbmdSZWNvcmRzID0gW107Ci19Owor
ICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgibmV0d29yayIpOworICAgICAgICB0
aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fZGF0YUdyaWQuZWxlbWVudCk7CiAKLVdlYklu
c3BlY3Rvci5OZXR3b3JrVGltZWxpbmVWaWV3LlN0eWxlQ2xhc3NOYW1lID0gIm5ldHdvcmsiOwot
V2ViSW5zcGVjdG9yLk5ldHdvcmtUaW1lbGluZVZpZXcuVHJlZU91dGxpbmVTdHlsZUNsYXNzTmFt
ZSA9ICJuZXR3b3JrIjsKKyAgICAgICAgdGltZWxpbmUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNw
ZWN0b3IuVGltZWxpbmUuRXZlbnQuUmVjb3JkQWRkZWQsIHRoaXMuX25ldHdvcmtUaW1lbGluZVJl
Y29yZEFkZGVkLCB0aGlzKTsKIAotV2ViSW5zcGVjdG9yLk5ldHdvcmtUaW1lbGluZVZpZXcucHJv
dG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuTmV0d29ya1RpbWVsaW5l
VmlldywKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5UaW1lbGluZVZpZXcucHJvdG90eXBl
LAorICAgICAgICB0aGlzLl9wZW5kaW5nUmVjb3JkcyA9IFtdOworICAgIH0KIAogICAgIC8vIFB1
YmxpYwogCiAgICAgZ2V0IG5hdmlnYXRpb25TaWRlYmFyVHJlZU91dGxpbmVMYWJlbCgpCiAgICAg
ewogICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZXNvdXJjZXMiKTsKLSAg
ICB9LAorICAgIH0KIAotICAgIHNob3duOiBmdW5jdGlvbigpCisgICAgc2hvd24oKQogICAgIHsK
LSAgICAgICAgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LnByb3RvdHlwZS5zaG93bi5jYWxsKHRo
aXMpOworICAgICAgICBzdXBlci5zaG93bigpOwogCiAgICAgICAgIHRoaXMuX2RhdGFHcmlkLnNo
b3duKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBoaWRkZW46IGZ1bmN0aW9uKCkKKyAgICBoaWRk
ZW4oKQogICAgIHsKICAgICAgICAgdGhpcy5fZGF0YUdyaWQuaGlkZGVuKCk7CiAKLSAgICAgICAg
V2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LnByb3RvdHlwZS5oaWRkZW4uY2FsbCh0aGlzKTsKLSAg
ICB9LAorICAgICAgICBzdXBlci5oaWRkZW4oKTsKKyAgICB9CiAKLSAgICBjbG9zZWQ6IGZ1bmN0
aW9uKCkKKyAgICBjbG9zZWQoKQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5y
ZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5UaW1lbGluZSk7CiAgICAg
ICAgIHRoaXMucmVwcmVzZW50ZWRPYmplY3QucmVtb3ZlRXZlbnRMaXN0ZW5lcihudWxsLCBudWxs
LCB0aGlzKTsKIAogICAgICAgICB0aGlzLl9kYXRhR3JpZC5jbG9zZWQoKTsKLSAgICB9LAorICAg
IH0KIAotICAgIHVwZGF0ZUxheW91dDogZnVuY3Rpb24oKQorICAgIHVwZGF0ZUxheW91dCgpCiAg
ICAgewotICAgICAgICBXZWJJbnNwZWN0b3IuVGltZWxpbmVWaWV3LnByb3RvdHlwZS51cGRhdGVM
YXlvdXQuY2FsbCh0aGlzKTsKKyAgICAgICAgc3VwZXIudXBkYXRlTGF5b3V0KCk7CiAKICAgICAg
ICAgdGhpcy5fZGF0YUdyaWQudXBkYXRlTGF5b3V0KCk7CiAKICAgICAgICAgdGhpcy5fcHJvY2Vz
c1BlbmRpbmdSZWNvcmRzKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBtYXRjaFRyZWVFbGVtZW50
QWdhaW5zdEN1c3RvbUZpbHRlcnM6IGZ1bmN0aW9uKHRyZWVFbGVtZW50KQorICAgIG1hdGNoVHJl
ZUVsZW1lbnRBZ2FpbnN0Q3VzdG9tRmlsdGVycyh0cmVlRWxlbWVudCkKICAgICB7CiAgICAgICAg
IHJldHVybiB0aGlzLl9kYXRhR3JpZC50cmVlRWxlbWVudE1hdGNoZXNBY3RpdmVTY29wZUZpbHRl
cnModHJlZUVsZW1lbnQpOwotICAgIH0sCisgICAgfQogCi0gICAgcmVzZXQ6IGZ1bmN0aW9uKCkK
KyAgICByZXNldCgpCiAgICAgewotICAgICAgICBXZWJJbnNwZWN0b3IuVGltZWxpbmVWaWV3LnBy
b3RvdHlwZS5yZXNldC5jYWxsKHRoaXMpOworICAgICAgICBzdXBlci5yZXNldCgpOwogCiAgICAg
ICAgIHRoaXMuX2RhdGFHcmlkLnJlc2V0KCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcm90
ZWN0ZWQKIAotICAgIGNhblNob3dDb250ZW50Vmlld0ZvclRyZWVFbGVtZW50OiBmdW5jdGlvbih0
cmVlRWxlbWVudCkKKyAgICBjYW5TaG93Q29udGVudFZpZXdGb3JUcmVlRWxlbWVudCh0cmVlRWxl
bWVudCkKICAgICB7CiAgICAgICAgIGlmICh0cmVlRWxlbWVudCBpbnN0YW5jZW9mIFdlYkluc3Bl
Y3Rvci5SZXNvdXJjZVRyZWVFbGVtZW50IHx8IHRyZWVFbGVtZW50IGluc3RhbmNlb2YgV2ViSW5z
cGVjdG9yLlNjcmlwdFRyZWVFbGVtZW50KQogICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
ICAgIHJldHVybiBXZWJJbnNwZWN0b3IuVGltZWxpbmVWaWV3LnByb3RvdHlwZS5jYW5TaG93Q29u
dGVudFZpZXdGb3JUcmVlRWxlbWVudCh0cmVlRWxlbWVudCk7Ci0gICAgfSwKKyAgICAgICAgcmV0
dXJuIHN1cGVyLmNhblNob3dDb250ZW50Vmlld0ZvclRyZWVFbGVtZW50KHRyZWVFbGVtZW50KTsK
KyAgICB9CiAKLSAgICBzaG93Q29udGVudFZpZXdGb3JUcmVlRWxlbWVudDogZnVuY3Rpb24odHJl
ZUVsZW1lbnQpCisgICAgc2hvd0NvbnRlbnRWaWV3Rm9yVHJlZUVsZW1lbnQodHJlZUVsZW1lbnQp
CiAgICAgewogICAgICAgICBpZiAodHJlZUVsZW1lbnQgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3Iu
UmVzb3VyY2VUcmVlRWxlbWVudCB8fCB0cmVlRWxlbWVudCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rv
ci5TY3JpcHRUcmVlRWxlbWVudCkgewogICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnNob3dTb3Vy
Y2VDb2RlKHRyZWVFbGVtZW50LnJlcHJlc2VudGVkT2JqZWN0KTsKQEAgLTE3MiwyNyArMTY3LDI3
IEBAIFdlYkluc3BlY3Rvci5OZXR3b3JrVGltZWxpbmVWaWV3LnByb3RvdHlwZSA9IHsKICAgICAg
ICAgfQogCiAgICAgICAgIGNvbnNvbGUuZXJyb3IoIlVua25vd24gdHJlZSBlbGVtZW50IHNlbGVj
dGVkLiIsIHRyZWVFbGVtZW50KTsKLSAgICB9LAorICAgIH0KIAotICAgIHRyZWVFbGVtZW50UGF0
aENvbXBvbmVudFNlbGVjdGVkOiBmdW5jdGlvbihldmVudCkKKyAgICB0cmVlRWxlbWVudFBhdGhD
b21wb25lbnRTZWxlY3RlZChldmVudCkKICAgICB7CiAgICAgICAgIHZhciBkYXRhR3JpZE5vZGUg
PSB0aGlzLl9kYXRhR3JpZC5kYXRhR3JpZE5vZGVGb3JUcmVlRWxlbWVudChldmVudC5kYXRhLnBh
dGhDb21wb25lbnQuZ2VuZXJhbFRyZWVFbGVtZW50KTsKICAgICAgICAgaWYgKCFkYXRhR3JpZE5v
ZGUpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGRhdGFHcmlkTm9kZS5yZXZlYWxBbmRT
ZWxlY3QoKTsKLSAgICB9LAorICAgIH0KIAotICAgIHRyZWVFbGVtZW50U2VsZWN0ZWQ6IGZ1bmN0
aW9uKHRyZWVFbGVtZW50LCBzZWxlY3RlZEJ5VXNlcikKKyAgICB0cmVlRWxlbWVudFNlbGVjdGVk
KHRyZWVFbGVtZW50LCBzZWxlY3RlZEJ5VXNlcikKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9k
YXRhR3JpZC5zaG91bGRJZ25vcmVTZWxlY3Rpb25FdmVudCgpKQogICAgICAgICAgICAgcmV0dXJu
OwogCi0gICAgICAgIFdlYkluc3BlY3Rvci5UaW1lbGluZVZpZXcucHJvdG90eXBlLnRyZWVFbGVt
ZW50U2VsZWN0ZWQuY2FsbCh0aGlzLCB0cmVlRWxlbWVudCwgc2VsZWN0ZWRCeVVzZXIpOwotICAg
IH0sCisgICAgICAgIHN1cGVyLnRyZWVFbGVtZW50U2VsZWN0ZWQodHJlZUVsZW1lbnQsIHNlbGVj
dGVkQnlVc2VyKTsKKyAgICB9CiAKICAgICAvLyBQcml2YXRlCiAKLSAgICBfcHJvY2Vzc1BlbmRp
bmdSZWNvcmRzOiBmdW5jdGlvbigpCisgICAgX3Byb2Nlc3NQZW5kaW5nUmVjb3JkcygpCiAgICAg
ewogICAgICAgICBpZiAoIXRoaXMuX3BlbmRpbmdSZWNvcmRzLmxlbmd0aCkKICAgICAgICAgICAg
IHJldHVybjsKQEAgLTIxMCw5ICsyMDUsOSBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya1RpbWVsaW5l
Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICB0aGlzLl9wZW5kaW5nUmVj
b3JkcyA9IFtdOwotICAgIH0sCisgICAgfQogCi0gICAgX25ldHdvcmtUaW1lbGluZVJlY29yZEFk
ZGVkOiBmdW5jdGlvbihldmVudCkKKyAgICBfbmV0d29ya1RpbWVsaW5lUmVjb3JkQWRkZWQoZXZl
bnQpCiAgICAgewogICAgICAgICB2YXIgcmVzb3VyY2VUaW1lbGluZVJlY29yZCA9IGV2ZW50LmRh
dGEucmVjb3JkOwogICAgICAgICBjb25zb2xlLmFzc2VydChyZXNvdXJjZVRpbWVsaW5lUmVjb3Jk
IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlJlc291cmNlVGltZWxpbmVSZWNvcmQpOwpAQCAtMjIw
LDE0ICsyMTUsMTQgQEAgV2ViSW5zcGVjdG9yLk5ldHdvcmtUaW1lbGluZVZpZXcucHJvdG90eXBl
ID0gewogICAgICAgICB0aGlzLl9wZW5kaW5nUmVjb3Jkcy5wdXNoKHJlc291cmNlVGltZWxpbmVS
ZWNvcmQpOwogCiAgICAgICAgIHRoaXMubmVlZHNMYXlvdXQoKTsKLSAgICB9LAorICAgIH0KIAot
ICAgIF9kYXRhR3JpZEZpbHRlcnNEaWRDaGFuZ2U6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9kYXRh
R3JpZEZpbHRlcnNEaWRDaGFuZ2UoZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLnRpbWVsaW5l
U2lkZWJhclBhbmVsLnVwZGF0ZUZpbHRlcigpOwotICAgIH0sCisgICAgfQogCi0gICAgX2RhdGFH
cmlkTm9kZVNlbGVjdGVkOiBmdW5jdGlvbihldmVudCkKKyAgICBfZGF0YUdyaWROb2RlU2VsZWN0
ZWQoZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhX
ZWJJbnNwZWN0b3IuQ29udGVudFZpZXcuRXZlbnQuU2VsZWN0aW9uUGF0aENvbXBvbmVudHNEaWRD
aGFuZ2UpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL092ZXJ2aWV3VGltZWxpbmVWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvT3ZlcnZpZXdUaW1lbGluZVZpZXcuanMKaW5kZXggZTli
MGFlYTkwNTU2M2FjMTNkZjUyYmIwZDA2NGQ1MzIzYzI4ZTJlYi4uZDU2MjRlMDg1ZDVlMjM3ZjVl
OTkzNGU5YzRkMDNhOTI1NDYxOTY3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvT3ZlcnZpZXdUaW1lbGluZVZpZXcuanMKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvT3ZlcnZpZXdUaW1lbGluZVZpZXcu
anMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTIzLDc1ICsyMyw3MyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
ICovCiAKLVdlYkluc3BlY3Rvci5PdmVydmlld1RpbWVsaW5lVmlldyA9IGZ1bmN0aW9uKHJlY29y
ZGluZywgZXh0cmFBcmd1bWVudHMpCitXZWJJbnNwZWN0b3IuT3ZlcnZpZXdUaW1lbGluZVZpZXcg
PSBjbGFzcyBPdmVydmlld1RpbWVsaW5lVmlldyBleHRlbmRzIFdlYkluc3BlY3Rvci5UaW1lbGlu
ZVZpZXcKIHsKLSAgICBXZWJJbnNwZWN0b3IuVGltZWxpbmVWaWV3LmNhbGwodGhpcywgcmVjb3Jk
aW5nLCBleHRyYUFyZ3VtZW50cyk7Ci0KLSAgICB0aGlzLl9yZWNvcmRpbmcgPSByZWNvcmRpbmc7
CisgICAgY29uc3RydWN0b3IocmVjb3JkaW5nLCBleHRyYUFyZ3VtZW50cykKKyAgICB7CisgICAg
ICAgIHN1cGVyKHJlY29yZGluZywgZXh0cmFBcmd1bWVudHMpOwogCi0gICAgdmFyIGNvbHVtbnMg
PSB7ImdyYXBoIjoge3dpZHRoOiAiMTAwJSJ9fTsKKyAgICAgICAgdGhpcy5fcmVjb3JkaW5nID0g
cmVjb3JkaW5nOwogCi0gICAgdGhpcy5fZGF0YUdyaWQgPSBuZXcgV2ViSW5zcGVjdG9yLkRhdGFH
cmlkKGNvbHVtbnMpOwotICAgIHRoaXMuX2RhdGFHcmlkLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5z
cGVjdG9yLkRhdGFHcmlkLkV2ZW50LlNlbGVjdGVkTm9kZUNoYW5nZWQsIHRoaXMuX2RhdGFHcmlk
Tm9kZVNlbGVjdGVkLCB0aGlzKTsKLSAgICB0aGlzLl9kYXRhR3JpZC5lbGVtZW50LmNsYXNzTGlz
dC5hZGQoIm5vLWhlYWRlciIpOworICAgICAgICB2YXIgY29sdW1ucyA9IHsiZ3JhcGgiOiB7d2lk
dGg6ICIxMDAlIn19OwogCi0gICAgdGhpcy5fdHJlZU91dGxpbmVEYXRhR3JpZFN5bmNocm9uaXpl
ciA9IG5ldyBXZWJJbnNwZWN0b3IuVHJlZU91dGxpbmVEYXRhR3JpZFN5bmNocm9uaXplcih0aGlz
Lm5hdmlnYXRpb25TaWRlYmFyVHJlZU91dGxpbmUsIHRoaXMuX2RhdGFHcmlkKTsKKyAgICAgICAg
dGhpcy5fZGF0YUdyaWQgPSBuZXcgV2ViSW5zcGVjdG9yLkRhdGFHcmlkKGNvbHVtbnMpOworICAg
ICAgICB0aGlzLl9kYXRhR3JpZC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5EYXRhR3Jp
ZC5FdmVudC5TZWxlY3RlZE5vZGVDaGFuZ2VkLCB0aGlzLl9kYXRhR3JpZE5vZGVTZWxlY3RlZCwg
dGhpcyk7CisgICAgICAgIHRoaXMuX2RhdGFHcmlkLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgibm8t
aGVhZGVyIik7CiAKLSAgICB0aGlzLl90aW1lbGluZVJ1bGVyID0gbmV3IFdlYkluc3BlY3Rvci5U
aW1lbGluZVJ1bGVyOwotICAgIHRoaXMuX3RpbWVsaW5lUnVsZXIuYWxsb3dzQ2xpcHBlZExhYmVs
cyA9IHRydWU7Ci0gICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3RpbWVsaW5lUnVs
ZXIuZWxlbWVudCk7CisgICAgICAgIHRoaXMuX3RyZWVPdXRsaW5lRGF0YUdyaWRTeW5jaHJvbml6
ZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlRyZWVPdXRsaW5lRGF0YUdyaWRTeW5jaHJvbml6ZXIodGhp
cy5uYXZpZ2F0aW9uU2lkZWJhclRyZWVPdXRsaW5lLCB0aGlzLl9kYXRhR3JpZCk7CiAKLSAgICB0
aGlzLl9jdXJyZW50VGltZU1hcmtlciA9IG5ldyBXZWJJbnNwZWN0b3IuVGltZWxpbmVNYXJrZXIo
MCwgV2ViSW5zcGVjdG9yLlRpbWVsaW5lTWFya2VyLlR5cGUuQ3VycmVudFRpbWUpOwotICAgIHRo
aXMuX3RpbWVsaW5lUnVsZXIuYWRkTWFya2VyKHRoaXMuX2N1cnJlbnRUaW1lTWFya2VyKTsKKyAg
ICAgICAgdGhpcy5fdGltZWxpbmVSdWxlciA9IG5ldyBXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxl
cjsKKyAgICAgICAgdGhpcy5fdGltZWxpbmVSdWxlci5hbGxvd3NDbGlwcGVkTGFiZWxzID0gdHJ1
ZTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3RpbWVsaW5lUnVsZXIu
ZWxlbWVudCk7CiAKLSAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgib3ZlcnZpZXciKTsK
LSAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fZGF0YUdyaWQuZWxlbWVudCk7Cisg
ICAgICAgIHRoaXMuX2N1cnJlbnRUaW1lTWFya2VyID0gbmV3IFdlYkluc3BlY3Rvci5UaW1lbGlu
ZU1hcmtlcigwLCBXZWJJbnNwZWN0b3IuVGltZWxpbmVNYXJrZXIuVHlwZS5DdXJyZW50VGltZSk7
CisgICAgICAgIHRoaXMuX3RpbWVsaW5lUnVsZXIuYWRkTWFya2VyKHRoaXMuX2N1cnJlbnRUaW1l
TWFya2VyKTsKIAotICAgIHRoaXMuX25ldHdvcmtUaW1lbGluZSA9IHJlY29yZGluZy50aW1lbGlu
ZXMuZ2V0KFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZC5UeXBlLk5ldHdvcmspOwotICAgIHRo
aXMuX25ldHdvcmtUaW1lbGluZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5UaW1lbGlu
ZS5FdmVudC5SZWNvcmRBZGRlZCwgdGhpcy5fbmV0d29ya1RpbWVsaW5lUmVjb3JkQWRkZWQsIHRo
aXMpOworICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgib3ZlcnZpZXciKTsKKyAg
ICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2RhdGFHcmlkLmVsZW1lbnQpOwog
Ci0gICAgcmVjb3JkaW5nLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVj
b3JkaW5nLkV2ZW50LlNvdXJjZUNvZGVUaW1lbGluZUFkZGVkLCB0aGlzLl9zb3VyY2VDb2RlVGlt
ZWxpbmVBZGRlZCwgdGhpcyk7CisgICAgICAgIHRoaXMuX25ldHdvcmtUaW1lbGluZSA9IHJlY29y
ZGluZy50aW1lbGluZXMuZ2V0KFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZC5UeXBlLk5ldHdv
cmspOworICAgICAgICB0aGlzLl9uZXR3b3JrVGltZWxpbmUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJ
bnNwZWN0b3IuVGltZWxpbmUuRXZlbnQuUmVjb3JkQWRkZWQsIHRoaXMuX25ldHdvcmtUaW1lbGlu
ZVJlY29yZEFkZGVkLCB0aGlzKTsKIAotICAgIHRoaXMuX3BlbmRpbmdSZXByZXNlbnRlZE9iamVj
dHMgPSBbXTsKLX07CisgICAgICAgIHJlY29yZGluZy5hZGRFdmVudExpc3RlbmVyKFdlYkluc3Bl
Y3Rvci5UaW1lbGluZVJlY29yZGluZy5FdmVudC5Tb3VyY2VDb2RlVGltZWxpbmVBZGRlZCwgdGhp
cy5fc291cmNlQ29kZVRpbWVsaW5lQWRkZWQsIHRoaXMpOwogCi1XZWJJbnNwZWN0b3IuT3ZlcnZp
ZXdUaW1lbGluZVZpZXcucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0
b3IuT3ZlcnZpZXdUaW1lbGluZVZpZXcsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVWaWV3LnByb3RvdHlwZSwKKyAgICAgICAgdGhpcy5fcGVuZGluZ1JlcHJlc2VudGVkT2Jq
ZWN0cyA9IFtdOworICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IG5hdmlnYXRpb25T
aWRlYmFyVHJlZU91dGxpbmVMYWJlbCgpCiAgICAgewogICAgICAgICByZXR1cm4gV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJUaW1lbGluZSBFdmVudHMiKTsKLSAgICB9LAorICAgIH0KIAogICAgIGdl
dCBzZWNvbmRzUGVyUGl4ZWwoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3RpbWVsaW5l
UnVsZXIuc2Vjb25kc1BlclBpeGVsOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IHNlY29uZHNQ
ZXJQaXhlbCh4KQogICAgIHsKICAgICAgICAgdGhpcy5fdGltZWxpbmVSdWxlci5zZWNvbmRzUGVy
UGl4ZWwgPSB4OwotICAgIH0sCisgICAgfQogCi0gICAgc2hvd246IGZ1bmN0aW9uKCkKKyAgICBz
aG93bigpCiAgICAgewotICAgICAgICBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcucHJvdG90eXBl
LnNob3duLmNhbGwodGhpcyk7CisgICAgICAgIHN1cGVyLnNob3duKCk7CiAKICAgICAgICAgdGhp
cy5fdHJlZU91dGxpbmVEYXRhR3JpZFN5bmNocm9uaXplci5zeW5jaHJvbml6ZSgpOwotICAgIH0s
CisgICAgfQogCi0gICAgY2xvc2VkOiBmdW5jdGlvbigpCisgICAgY2xvc2VkKCkKICAgICB7CiAg
ICAgICAgIHRoaXMuX25ldHdvcmtUaW1lbGluZS5yZW1vdmVFdmVudExpc3RlbmVyKG51bGwsIG51
bGwsIHRoaXMpOwogICAgICAgICB0aGlzLl9yZWNvcmRpbmcucmVtb3ZlRXZlbnRMaXN0ZW5lcihu
dWxsLCBudWxsLCB0aGlzKTsKLSAgICB9LAorICAgIH0KIAotICAgIHVwZGF0ZUxheW91dDogZnVu
Y3Rpb24oKQorICAgIHVwZGF0ZUxheW91dCgpCiAgICAgewotICAgICAgICBXZWJJbnNwZWN0b3Iu
VGltZWxpbmVWaWV3LnByb3RvdHlwZS51cGRhdGVMYXlvdXQuY2FsbCh0aGlzKTsKKyAgICAgICAg
c3VwZXIudXBkYXRlTGF5b3V0KCk7CiAKICAgICAgICAgdmFyIG9sZFplcm9UaW1lID0gdGhpcy5f
dGltZWxpbmVSdWxlci56ZXJvVGltZTsKICAgICAgICAgdmFyIG9sZFN0YXJ0VGltZSA9IHRoaXMu
X3RpbWVsaW5lUnVsZXIuc3RhcnRUaW1lOwpAQCAtMTE2LDcgKzExNCw3IEBAIFdlYkluc3BlY3Rv
ci5PdmVydmlld1RpbWVsaW5lVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX3RpbWVs
aW5lUnVsZXIudXBkYXRlTGF5b3V0KCk7CiAKICAgICAgICAgdGhpcy5fcHJvY2Vzc1BlbmRpbmdS
ZXByZXNlbnRlZE9iamVjdHMoKTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBzZWxlY3Rpb25Q
YXRoQ29tcG9uZW50cygpCiAgICAgewpAQCAtMTQyLDI2ICsxNDAsMjYgQEAgV2ViSW5zcGVjdG9y
Lk92ZXJ2aWV3VGltZWxpbmVWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAgICAgICAg
IHJldHVybiBwYXRoQ29tcG9uZW50czsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByb3RlY3Rl
ZAogCi0gICAgdHJlZUVsZW1lbnRQYXRoQ29tcG9uZW50U2VsZWN0ZWQ6IGZ1bmN0aW9uKGV2ZW50
KQorICAgIHRyZWVFbGVtZW50UGF0aENvbXBvbmVudFNlbGVjdGVkKGV2ZW50KQogICAgIHsKICAg
ICAgICAgdmFyIGRhdGFHcmlkTm9kZSA9IHRoaXMuX3RyZWVPdXRsaW5lRGF0YUdyaWRTeW5jaHJv
bml6ZXIuZGF0YUdyaWROb2RlRm9yVHJlZUVsZW1lbnQoZXZlbnQuZGF0YS5wYXRoQ29tcG9uZW50
LmdlbmVyYWxUcmVlRWxlbWVudCk7CiAgICAgICAgIGlmICghZGF0YUdyaWROb2RlKQogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICBkYXRhR3JpZE5vZGUucmV2ZWFsQW5kU2VsZWN0KCk7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBjYW5TaG93Q29udGVudFZpZXdGb3JUcmVlRWxlbWVudDogZnVu
Y3Rpb24odHJlZUVsZW1lbnQpCisgICAgY2FuU2hvd0NvbnRlbnRWaWV3Rm9yVHJlZUVsZW1lbnQo
dHJlZUVsZW1lbnQpCiAgICAgewogICAgICAgICBpZiAodHJlZUVsZW1lbnQgaW5zdGFuY2VvZiBX
ZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRWxlbWVudCB8fCB0cmVlRWxlbWVudCBpbnN0YW5jZW9m
IFdlYkluc3BlY3Rvci5TY3JpcHRUcmVlRWxlbWVudCkKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwotICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlRpbWVsaW5lVmlldy5wcm90b3R5cGUuY2Fu
U2hvd0NvbnRlbnRWaWV3Rm9yVHJlZUVsZW1lbnQodHJlZUVsZW1lbnQpOwotICAgIH0sCisgICAg
ICAgIHJldHVybiBzdXBlci5jYW5TaG93Q29udGVudFZpZXdGb3JUcmVlRWxlbWVudCh0cmVlRWxl
bWVudCk7CisgICAgfQogCi0gICAgc2hvd0NvbnRlbnRWaWV3Rm9yVHJlZUVsZW1lbnQ6IGZ1bmN0
aW9uKHRyZWVFbGVtZW50KQorICAgIHNob3dDb250ZW50Vmlld0ZvclRyZWVFbGVtZW50KHRyZWVF
bGVtZW50KQogICAgIHsKICAgICAgICAgaWYgKHRyZWVFbGVtZW50IGluc3RhbmNlb2YgV2ViSW5z
cGVjdG9yLlJlc291cmNlVHJlZUVsZW1lbnQgfHwgdHJlZUVsZW1lbnQgaW5zdGFuY2VvZiBXZWJJ
bnNwZWN0b3IuU2NyaXB0VHJlZUVsZW1lbnQpIHsKICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5z
aG93U291cmNlQ29kZSh0cmVlRWxlbWVudC5yZXByZXNlbnRlZE9iamVjdCk7CkBAIC0xNzksMTEg
KzE3NywxMSBAQCBXZWJJbnNwZWN0b3IuT3ZlcnZpZXdUaW1lbGluZVZpZXcucHJvdG90eXBlID0g
ewogICAgICAgICB9CiAKICAgICAgICAgV2ViSW5zcGVjdG9yLnNob3dPcmlnaW5hbE9yRm9ybWF0
dGVkU291cmNlQ29kZUxvY2F0aW9uKHRyZWVFbGVtZW50LnNvdXJjZUNvZGVUaW1lbGluZS5zb3Vy
Y2VDb2RlTG9jYXRpb24pOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJpdmF0ZQogCi0gICAg
X2NvbXBhcmVUcmVlRWxlbWVudHNCeURldGFpbHM6IGZ1bmN0aW9uKGEsIGIpCisgICAgX2NvbXBh
cmVUcmVlRWxlbWVudHNCeURldGFpbHMoYSwgYikKICAgICB7CiAgICAgICAgIGlmIChhIGluc3Rh
bmNlb2YgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUaW1lbGluZVRyZWVFbGVtZW50ICYmIGIgaW5z
dGFuY2VvZiBXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRWxlbWVudCkKICAgICAgICAgICAgIHJl
dHVybiAtMTsKQEAgLTIxMyw5ICsyMTEsOSBAQCBXZWJJbnNwZWN0b3IuT3ZlcnZpZXdUaW1lbGlu
ZVZpZXcucHJvdG90eXBlID0gewogCiAgICAgICAgIC8vIEZhbGxiYWNrIHRvIGNvbXBhcmluZyBi
eSBzdGFydCB0aW1lIGZvciBSZXNvdXJjZVRyZWVFbGVtZW50IG9yIGFueXRoaW5nIGVsc2UuCiAg
ICAgICAgIHJldHVybiB0aGlzLl9jb21wYXJlVHJlZUVsZW1lbnRzQnlTdGFydFRpbWUoYSwgYik7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfY29tcGFyZVRyZWVFbGVtZW50c0J5U3RhcnRUaW1lOiBm
dW5jdGlvbihhLCBiKQorICAgIF9jb21wYXJlVHJlZUVsZW1lbnRzQnlTdGFydFRpbWUoYSwgYikK
ICAgICB7CiAgICAgICAgIGZ1bmN0aW9uIGdldFN0YXJ0VGltZSh0cmVlRWxlbWVudCkKICAgICAg
ICAgewpAQCAtMjM0LDE4ICsyMzIsMTggQEAgV2ViSW5zcGVjdG9yLk92ZXJ2aWV3VGltZWxpbmVW
aWV3LnByb3RvdHlwZSA9IHsKIAogICAgICAgICAvLyBGYWxsYmFjayB0byBjb21wYXJpbmcgdGl0
bGVzLgogICAgICAgICByZXR1cm4gYS5tYWluVGl0bGUubG9jYWxlQ29tcGFyZShiLm1haW5UaXRs
ZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfaW5zZXJ0VHJlZUVsZW1lbnQ6IGZ1bmN0aW9uKHRy
ZWVFbGVtZW50LCBwYXJlbnRUcmVlRWxlbWVudCkKKyAgICBfaW5zZXJ0VHJlZUVsZW1lbnQodHJl
ZUVsZW1lbnQsIHBhcmVudFRyZWVFbGVtZW50KQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3Nl
cnQodHJlZUVsZW1lbnQpOwogICAgICAgICBjb25zb2xlLmFzc2VydCghdHJlZUVsZW1lbnQucGFy
ZW50KTsKICAgICAgICAgY29uc29sZS5hc3NlcnQocGFyZW50VHJlZUVsZW1lbnQpOwogCiAgICAg
ICAgIHBhcmVudFRyZWVFbGVtZW50Lmluc2VydENoaWxkKHRyZWVFbGVtZW50LCBpbnNlcnRpb25J
bmRleEZvck9iamVjdEluTGlzdFNvcnRlZEJ5RnVuY3Rpb24odHJlZUVsZW1lbnQsIHBhcmVudFRy
ZWVFbGVtZW50LmNoaWxkcmVuLCB0aGlzLl9jb21wYXJlVHJlZUVsZW1lbnRzQnlTdGFydFRpbWUu
YmluZCh0aGlzKSkpOwotICAgIH0sCisgICAgfQogCi0gICAgX2FkZFJlc291cmNlVG9UcmVlSWZO
ZWVkZWQ6IGZ1bmN0aW9uKHJlc291cmNlKQorICAgIF9hZGRSZXNvdXJjZVRvVHJlZUlmTmVlZGVk
KHJlc291cmNlKQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQocmVzb3VyY2UpOwogICAg
ICAgICBpZiAoIXJlc291cmNlKQpAQCAtMjkwLDkgKzI4OCw5IEBAIFdlYkluc3BlY3Rvci5PdmVy
dmlld1RpbWVsaW5lVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2luc2VydFRyZWVF
bGVtZW50KHJlc291cmNlVHJlZUVsZW1lbnQsIHBhcmVudFRyZWVFbGVtZW50KTsKIAogICAgICAg
ICByZXR1cm4gcmVzb3VyY2VUcmVlRWxlbWVudDsKLSAgICB9LAorICAgIH0KIAotICAgIF9hZGRT
b3VyY2VDb2RlVGltZWxpbmU6IGZ1bmN0aW9uKHNvdXJjZUNvZGVUaW1lbGluZSkKKyAgICBfYWRk
U291cmNlQ29kZVRpbWVsaW5lKHNvdXJjZUNvZGVUaW1lbGluZSkKICAgICB7CiAgICAgICAgIHZh
ciBwYXJlbnRUcmVlRWxlbWVudCA9IHNvdXJjZUNvZGVUaW1lbGluZS5zb3VyY2VDb2RlTG9jYXRp
b24gPyB0aGlzLl9hZGRSZXNvdXJjZVRvVHJlZUlmTmVlZGVkKHNvdXJjZUNvZGVUaW1lbGluZS5z
b3VyY2VDb2RlKSA6IHRoaXMubmF2aWdhdGlvblNpZGViYXJUcmVlT3V0bGluZTsKICAgICAgICAg
Y29uc29sZS5hc3NlcnQocGFyZW50VHJlZUVsZW1lbnQpOwpAQCAtMzA0LDkgKzMwMiw5IEBAIFdl
Ykluc3BlY3Rvci5PdmVydmlld1RpbWVsaW5lVmlldy5wcm90b3R5cGUgPSB7CiAKICAgICAgICAg
dGhpcy5fdHJlZU91dGxpbmVEYXRhR3JpZFN5bmNocm9uaXplci5hc3NvY2lhdGUoc291cmNlQ29k
ZVRpbWVsaW5lVHJlZUVsZW1lbnQsIHNvdXJjZUNvZGVUaW1lbGluZURhdGFHcmlkTm9kZSk7CiAg
ICAgICAgIHRoaXMuX2luc2VydFRyZWVFbGVtZW50KHNvdXJjZUNvZGVUaW1lbGluZVRyZWVFbGVt
ZW50LCBwYXJlbnRUcmVlRWxlbWVudCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcHJvY2Vzc1Bl
bmRpbmdSZXByZXNlbnRlZE9iamVjdHM6IGZ1bmN0aW9uKCkKKyAgICBfcHJvY2Vzc1BlbmRpbmdS
ZXByZXNlbnRlZE9iamVjdHMoKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9wZW5kaW5nUmVw
cmVzZW50ZWRPYmplY3RzIHx8ICF0aGlzLl9wZW5kaW5nUmVwcmVzZW50ZWRPYmplY3RzLmxlbmd0
aCkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTMyMSw5ICszMTksOSBAQCBXZWJJbnNwZWN0b3Iu
T3ZlcnZpZXdUaW1lbGluZVZpZXcucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAg
dGhpcy5fcGVuZGluZ1JlcHJlc2VudGVkT2JqZWN0cyA9IFtdOwotICAgIH0sCisgICAgfQogCi0g
ICAgX25ldHdvcmtUaW1lbGluZVJlY29yZEFkZGVkOiBmdW5jdGlvbihldmVudCkKKyAgICBfbmV0
d29ya1RpbWVsaW5lUmVjb3JkQWRkZWQoZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgcmVzb3Vy
Y2VUaW1lbGluZVJlY29yZCA9IGV2ZW50LmRhdGEucmVjb3JkOwogICAgICAgICBjb25zb2xlLmFz
c2VydChyZXNvdXJjZVRpbWVsaW5lUmVjb3JkIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlJlc291
cmNlVGltZWxpbmVSZWNvcmQpOwpAQCAtMzM0LDkgKzMzMiw5IEBAIFdlYkluc3BlY3Rvci5PdmVy
dmlld1RpbWVsaW5lVmlldy5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgLy8gV2UgZG9uJ3QgZXhw
ZWN0IHRvIGhhdmUgYW55IHNvdXJjZSBjb2RlIHRpbWVsaW5lcyB5ZXQuIFRob3NlIHNob3VsZCBi
ZSBhZGRlZCB3aXRoIF9zb3VyY2VDb2RlVGltZWxpbmVBZGRlZC4KICAgICAgICAgY29uc29sZS5h
c3NlcnQoIXRoaXMuX3JlY29yZGluZy5zb3VyY2VDb2RlVGltZWxpbmVzRm9yU291cmNlQ29kZShy
ZXNvdXJjZVRpbWVsaW5lUmVjb3JkLnJlc291cmNlKS5sZW5ndGgpOwotICAgIH0sCisgICAgfQog
Ci0gICAgX3NvdXJjZUNvZGVUaW1lbGluZUFkZGVkOiBmdW5jdGlvbihldmVudCkKKyAgICBfc291
cmNlQ29kZVRpbWVsaW5lQWRkZWQoZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgc291cmNlQ29k
ZVRpbWVsaW5lID0gZXZlbnQuZGF0YS5zb3VyY2VDb2RlVGltZWxpbmU7CiAgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KHNvdXJjZUNvZGVUaW1lbGluZSk7CkBAIC0zNDYsOSArMzQ0LDkgQEAgV2ViSW5z
cGVjdG9yLk92ZXJ2aWV3VGltZWxpbmVWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5f
cGVuZGluZ1JlcHJlc2VudGVkT2JqZWN0cy5wdXNoKHNvdXJjZUNvZGVUaW1lbGluZSk7CiAKICAg
ICAgICAgdGhpcy5uZWVkc0xheW91dCgpOwotICAgIH0sCisgICAgfQogCi0gICAgX2RhdGFHcmlk
Tm9kZVNlbGVjdGVkOiBmdW5jdGlvbihldmVudCkKKyAgICBfZGF0YUdyaWROb2RlU2VsZWN0ZWQo
ZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJ
bnNwZWN0b3IuQ29udGVudFZpZXcuRXZlbnQuU2VsZWN0aW9uUGF0aENvbXBvbmVudHNEaWRDaGFu
Z2UpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL1JlbmRlcmluZ0ZyYW1lVGltZWxpbmVPdmVydmlldy5qcyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1JlbmRlcmluZ0ZyYW1lVGltZWxpbmVPdmVy
dmlldy5qcwppbmRleCA4MmY0ZjIwZWUwOTY5ZDk1ODQ1MzU5MmZhZDY5ZTIxODhlZWY5NzIzLi5h
MWEwMDUxNzgzNDJhMWRiMzhkOWI3NDliOTVjYzU5NTQ4OTJlNWZkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZW5kZXJpbmdGcmFtZVRpbWVs
aW5lT3ZlcnZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvUmVuZGVyaW5nRnJhbWVUaW1lbGluZU92ZXJ2aWV3LmpzCkBAIC0yMywzNSArMjMsMzEg
QEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0
b3IuUmVuZGVyaW5nRnJhbWVUaW1lbGluZU92ZXJ2aWV3ID0gZnVuY3Rpb24odGltZWxpbmVSZWNv
cmRpbmcpCitXZWJJbnNwZWN0b3IuUmVuZGVyaW5nRnJhbWVUaW1lbGluZU92ZXJ2aWV3ID0gY2xh
c3MgUmVuZGVyaW5nRnJhbWVUaW1lbGluZU92ZXJ2aWV3IGV4dGVuZHMgV2ViSW5zcGVjdG9yLlRp
bWVsaW5lT3ZlcnZpZXcKIHsKLSAgICAvLyBGSVhNRTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5z
cGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXcgc3ViY2xhc3MsIGFuZCBjYWxsIHN1cGVyKCkuCi0KLSAg
ICB2YXIgbWluaW11bUR1cmF0aW9uUGVyUGl4ZWwgPSAxIC8gV2ViSW5zcGVjdG9yLlRpbWVsaW5l
UmVjb3JkRnJhbWUuTWF4aW11bVdpZHRoUGl4ZWxzOwotICAgIHZhciBtYXhpbXVtRHVyYXRpb25Q
ZXJQaXhlbCA9IDEgLyBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRGcmFtZS5NaW5pbXVtV2lk
dGhQaXhlbHM7Ci0gICAgdmFyIGRlZmF1bHRTZXR0aW5nc1ZhbHVlcyA9IHsKLSAgICAgICAgZHVy
YXRpb25QZXJQaXhlbDogbWluaW11bUR1cmF0aW9uUGVyUGl4ZWwsCi0gICAgICAgIHNlbGVjdGlv
blN0YXJ0VmFsdWU6IDAsCi0gICAgICAgIHNlbGVjdGlvbkR1cmF0aW9uOiAxMDAKLSAgICB9Owor
ICAgIGNvbnN0cnVjdG9yKHRpbWVsaW5lUmVjb3JkaW5nKQorICAgIHsKKyAgICAgICAgdmFyIG1p
bmltdW1EdXJhdGlvblBlclBpeGVsID0gMSAvIFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZEZy
YW1lLk1heGltdW1XaWR0aFBpeGVsczsKKyAgICAgICAgdmFyIG1heGltdW1EdXJhdGlvblBlclBp
eGVsID0gMSAvIFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZEZyYW1lLk1pbmltdW1XaWR0aFBp
eGVsczsKKyAgICAgICAgdmFyIGRlZmF1bHRTZXR0aW5nc1ZhbHVlcyA9IHsKKyAgICAgICAgICAg
IGR1cmF0aW9uUGVyUGl4ZWw6IG1pbmltdW1EdXJhdGlvblBlclBpeGVsLAorICAgICAgICAgICAg
c2VsZWN0aW9uU3RhcnRWYWx1ZTogMCwKKyAgICAgICAgICAgIHNlbGVjdGlvbkR1cmF0aW9uOiAx
MDAKKyAgICAgICAgfTsKIAotICAgIFdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3LmNhbGwo
dGhpcywgImZyYW1lcyIsIHRpbWVsaW5lUmVjb3JkaW5nLCBtaW5pbXVtRHVyYXRpb25QZXJQaXhl
bCwgbWF4aW11bUR1cmF0aW9uUGVyUGl4ZWwsIGRlZmF1bHRTZXR0aW5nc1ZhbHVlcyk7CisgICAg
ICAgIHN1cGVyKCJmcmFtZXMiLCB0aW1lbGluZVJlY29yZGluZywgbWluaW11bUR1cmF0aW9uUGVy
UGl4ZWwsIG1heGltdW1EdXJhdGlvblBlclBpeGVsLCBkZWZhdWx0U2V0dGluZ3NWYWx1ZXMpOwog
Ci0gICAgdGhpcy5waXhlbEFsaWduRHVyYXRpb24gPSB0cnVlOwotICAgIHRoaXMudGltZWxpbmVS
dWxlci5taW5pbXVtU2VsZWN0aW9uRHVyYXRpb24gPSAxOwotICAgIHRoaXMudGltZWxpbmVSdWxl
ci5zbmFwSW50ZXJ2YWwgPSAxOwotICAgIHRoaXMudGltZWxpbmVSdWxlci5mb3JtYXRMYWJlbENh
bGxiYWNrID0gZnVuY3Rpb24odmFsdWUpIHsKLSAgICAgICAgcmV0dXJuIHZhbHVlLnRvRml4ZWQo
MCk7Ci0gICAgfTsKLX07Ci0KLVdlYkluc3BlY3Rvci5SZW5kZXJpbmdGcmFtZVRpbWVsaW5lT3Zl
cnZpZXcucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuUmVuZGVy
aW5nRnJhbWVUaW1lbGluZU92ZXJ2aWV3LAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLlRp
bWVsaW5lT3ZlcnZpZXcucHJvdG90eXBlLAorICAgICAgICB0aGlzLnBpeGVsQWxpZ25EdXJhdGlv
biA9IHRydWU7CisgICAgICAgIHRoaXMudGltZWxpbmVSdWxlci5taW5pbXVtU2VsZWN0aW9uRHVy
YXRpb24gPSAxOworICAgICAgICB0aGlzLnRpbWVsaW5lUnVsZXIuc25hcEludGVydmFsID0gMTsK
KyAgICAgICAgdGhpcy50aW1lbGluZVJ1bGVyLmZvcm1hdExhYmVsQ2FsbGJhY2sgPSBmdW5jdGlv
bih2YWx1ZSkgeworICAgICAgICAgICAgcmV0dXJuIHZhbHVlLnRvRml4ZWQoMCk7CisgICAgICAg
IH07CisgICAgfQogCiAgICAgLy8gUHJvdGVjdGVkCiAKLSAgICBjYW5TaG93VGltZWxpbmU6IGZ1
bmN0aW9uKHRpbWVsaW5lKQorICAgIGNhblNob3dUaW1lbGluZSh0aW1lbGluZSkKICAgICB7CiAg
ICAgICAgIHJldHVybiB0aW1lbGluZS50eXBlID09PSBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNv
cmQuVHlwZS5SZW5kZXJpbmdGcmFtZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZW5kZXJpbmdGcmFtZVRpbWVsaW5lT3ZlcnZp
ZXdHcmFwaC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Jl
bmRlcmluZ0ZyYW1lVGltZWxpbmVPdmVydmlld0dyYXBoLmpzCmluZGV4IDI0NTQ3NzA0MDdlZmY2
ZmIyYzg4ZWJhOGU0MWVkNDJiNjJhN2I4MjkuLjIzYjFmMGJmNmMxMjQwMmZhNTI2ZWMxOWIxMDUz
YzhjNmM0YTNiM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL1JlbmRlcmluZ0ZyYW1lVGltZWxpbmVPdmVydmlld0dyYXBoLmpzCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1JlbmRlcmluZ0ZyYW1lVGlt
ZWxpbmVPdmVydmlld0dyYXBoLmpzCkBAIC0yMywzNCArMjMsMjggQEAKICAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuUmVuZGVyaW5nRnJhbWVU
aW1lbGluZU92ZXJ2aWV3R3JhcGggPSBmdW5jdGlvbih0aW1lbGluZSwgdGltZWxpbmVPdmVydmll
dykKK1dlYkluc3BlY3Rvci5SZW5kZXJpbmdGcmFtZVRpbWVsaW5lT3ZlcnZpZXdHcmFwaCA9IGNs
YXNzIFJlbmRlcmluZ0ZyYW1lVGltZWxpbmVPdmVydmlld0dyYXBoIGV4dGVuZHMgV2ViSW5zcGVj
dG9yLlRpbWVsaW5lT3ZlcnZpZXdHcmFwaAogewotICAgIFdlYkluc3BlY3Rvci5UaW1lbGluZU92
ZXJ2aWV3R3JhcGguY2FsbCh0aGlzLCB0aW1lbGluZSwgdGltZWxpbmVPdmVydmlldyk7Ci0KLSAg
ICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuUmVuZGVyaW5nRnJhbWVU
aW1lbGluZU92ZXJ2aWV3R3JhcGguU3R5bGVDbGFzc05hbWUpOwotICAgIHRoaXMuZWxlbWVudC5h
ZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX21vdXNlQ2xpY2tlZC5iaW5kKHRoaXMpKTsK
KyAgICBjb25zdHJ1Y3Rvcih0aW1lbGluZSwgdGltZWxpbmVPdmVydmlldykKKyAgICB7CisgICAg
ICAgIHN1cGVyKHRpbWVsaW5lLCB0aW1lbGluZU92ZXJ2aWV3KTsKIAotICAgIHRoaXMuX3JlbmRl
cmluZ0ZyYW1lVGltZWxpbmUgPSB0aW1lbGluZTsKLSAgICB0aGlzLl9yZW5kZXJpbmdGcmFtZVRp
bWVsaW5lLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRpbWVsaW5lLkV2ZW50LlJlY29y
ZEFkZGVkLCB0aGlzLl90aW1lbGluZVJlY29yZEFkZGVkLCB0aGlzKTsKKyAgICAgICAgdGhpcy5l
bGVtZW50LmNsYXNzTGlzdC5hZGQoInJlbmRlcmluZy1mcmFtZSIpOworICAgICAgICB0aGlzLmVs
ZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9tb3VzZUNsaWNrZWQuYmluZCh0
aGlzKSk7CiAKLSAgICB0aGlzLl9zZWxlY3RlZEZyYW1lTWFya2VyID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgiZGl2Iik7Ci0gICAgdGhpcy5fc2VsZWN0ZWRGcmFtZU1hcmtlci5jbGFzc05hbWUg
PSAiZnJhbWUtbWFya2VyIjsKKyAgICAgICAgdGhpcy5fcmVuZGVyaW5nRnJhbWVUaW1lbGluZSA9
IHRpbWVsaW5lOworICAgICAgICB0aGlzLl9yZW5kZXJpbmdGcmFtZVRpbWVsaW5lLmFkZEV2ZW50
TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRpbWVsaW5lLkV2ZW50LlJlY29yZEFkZGVkLCB0aGlzLl90
aW1lbGluZVJlY29yZEFkZGVkLCB0aGlzKTsKIAotICAgIHRoaXMuX3RpbWVsaW5lUmVjb3JkRnJh
bWVzID0gW107Ci0gICAgdGhpcy5fc2VsZWN0ZWRUaW1lbGluZVJlY29yZEZyYW1lID0gbnVsbDsK
LSAgICB0aGlzLl9ncmFwaEhlaWdodFNlY29uZHMgPSBOYU47Ci0gICAgdGhpcy5fZnJhbWVzUGVy
U2Vjb25kRGl2aWRlck1hcCA9IG5ldyBNYXA7CisgICAgICAgIHRoaXMuX3NlbGVjdGVkRnJhbWVN
YXJrZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgdGhpcy5fc2Vs
ZWN0ZWRGcmFtZU1hcmtlci5jbGFzc0xpc3QuYWRkKCJmcmFtZS1tYXJrZXIiKTsKIAotICAgIHRo
aXMucmVzZXQoKTsKLX07Ci0KLVdlYkluc3BlY3Rvci5SZW5kZXJpbmdGcmFtZVRpbWVsaW5lT3Zl
cnZpZXdHcmFwaC5TdHlsZUNsYXNzTmFtZSA9ICJyZW5kZXJpbmctZnJhbWUiOwotV2ViSW5zcGVj
dG9yLlJlbmRlcmluZ0ZyYW1lVGltZWxpbmVPdmVydmlld0dyYXBoLk1heGltdW1HcmFwaEhlaWdo
dFNlY29uZHMgPSAwLjAzNzsKLVdlYkluc3BlY3Rvci5SZW5kZXJpbmdGcmFtZVRpbWVsaW5lT3Zl
cnZpZXdHcmFwaC5NaW5pbXVtR3JhcGhIZWlnaHRTZWNvbmRzID0gMC4wMTg1OworICAgICAgICB0
aGlzLl90aW1lbGluZVJlY29yZEZyYW1lcyA9IFtdOworICAgICAgICB0aGlzLl9zZWxlY3RlZFRp
bWVsaW5lUmVjb3JkRnJhbWUgPSBudWxsOworICAgICAgICB0aGlzLl9ncmFwaEhlaWdodFNlY29u
ZHMgPSBOYU47CisgICAgICAgIHRoaXMuX2ZyYW1lc1BlclNlY29uZERpdmlkZXJNYXAgPSBuZXcg
TWFwOwogCi1XZWJJbnNwZWN0b3IuUmVuZGVyaW5nRnJhbWVUaW1lbGluZU92ZXJ2aWV3R3JhcGgu
cHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuUmVuZGVyaW5nRnJh
bWVUaW1lbGluZU92ZXJ2aWV3R3JhcGgsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVPdmVydmlld0dyYXBoLnByb3RvdHlwZSwKKyAgICAgICAgdGhpcy5yZXNldCgpOworICAg
IH0KIAogICAgIC8vIFB1YmxpYwogCkBAIC02NywyMiArNjEsMjIgQEAgV2ViSW5zcGVjdG9yLlJl
bmRlcmluZ0ZyYW1lVGltZWxpbmVPdmVydmlld0dyYXBoLnByb3RvdHlwZSA9IHsKICAgICAgICAg
dGhpcy5fZ3JhcGhIZWlnaHRTZWNvbmRzID0gTWF0aC5taW4odGhpcy5fZ3JhcGhIZWlnaHRTZWNv
bmRzLCBXZWJJbnNwZWN0b3IuUmVuZGVyaW5nRnJhbWVUaW1lbGluZU92ZXJ2aWV3R3JhcGguTWF4
aW11bUdyYXBoSGVpZ2h0U2Vjb25kcyk7CiAgICAgICAgIHRoaXMuX2dyYXBoSGVpZ2h0U2Vjb25k
cyA9IE1hdGgubWF4KHRoaXMuX2dyYXBoSGVpZ2h0U2Vjb25kcywgV2ViSW5zcGVjdG9yLlJlbmRl
cmluZ0ZyYW1lVGltZWxpbmVPdmVydmlld0dyYXBoLk1pbmltdW1HcmFwaEhlaWdodFNlY29uZHMp
OwogICAgICAgICByZXR1cm4gdGhpcy5fZ3JhcGhIZWlnaHRTZWNvbmRzOwotICAgIH0sCisgICAg
fQogCiAgICAgcmVzZXQoKQogICAgIHsKLSAgICAgICAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3Zl
cnZpZXdHcmFwaC5wcm90b3R5cGUucmVzZXQuY2FsbCh0aGlzKTsKKyAgICAgICAgc3VwZXIucmVz
ZXQoKTsKIAogICAgICAgICB0aGlzLmVsZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsKIAogICAgICAg
ICB0aGlzLnNlbGVjdGVkUmVjb3JkID0gbnVsbDsKIAogICAgICAgICB0aGlzLl9mcmFtZXNQZXJT
ZWNvbmREaXZpZGVyTWFwLmNsZWFyKCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICB1cGRhdGVMYXlv
dXQoKQogICAgIHsKLSAgICAgICAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXdHcmFwaC5w
cm90b3R5cGUudXBkYXRlTGF5b3V0LmNhbGwodGhpcyk7CisgICAgICAgIHN1cGVyLnVwZGF0ZUxh
eW91dCgpOwogCiAgICAgICAgIGlmICghdGhpcy5fcmVuZGVyaW5nRnJhbWVUaW1lbGluZS5yZWNv
cmRzLmxlbmd0aCkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTExNSw3ICsxMDksNyBAQCBXZWJJ
bnNwZWN0b3IuUmVuZGVyaW5nRnJhbWVUaW1lbGluZU92ZXJ2aWV3R3JhcGgucHJvdG90eXBlID0g
ewogCiAgICAgICAgIHRoaXMuX3VwZGF0ZURpdmlkZXJzKCk7CiAgICAgICAgIHRoaXMuX3VwZGF0
ZUZyYW1lTWFya2VyKCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcm90ZWN0ZWQKIApAQCAt
MTQyLDcgKzEzNiw3IEBAIFdlYkluc3BlY3Rvci5SZW5kZXJpbmdGcmFtZVRpbWVsaW5lT3ZlcnZp
ZXdHcmFwaC5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICB0aGlzLl91cGRhdGVG
cmFtZU1hcmtlcigpOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJpdmF0ZQogCkBAIC0xNTEs
NyArMTQ1LDcgQEAgV2ViSW5zcGVjdG9yLlJlbmRlcmluZ0ZyYW1lVGltZWxpbmVPdmVydmlld0dy
YXBoLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fZ3JhcGhIZWlnaHRTZWNvbmRzID0gTmFO
OwogCiAgICAgICAgIHRoaXMubmVlZHNMYXlvdXQoKTsKLSAgICB9LAorICAgIH0KIAogICAgIF91
cGRhdGVEaXZpZGVycygpCiAgICAgewpAQCAtMTg3LDcgKzE4MSw3IEBAIFdlYkluc3BlY3Rvci5S
ZW5kZXJpbmdGcmFtZVRpbWVsaW5lT3ZlcnZpZXdHcmFwaC5wcm90b3R5cGUgPSB7CiAKICAgICAg
ICAgY3JlYXRlRGl2aWRlckF0UG9zaXRpb24uY2FsbCh0aGlzLCA2MCk7CiAgICAgICAgIGNyZWF0
ZURpdmlkZXJBdFBvc2l0aW9uLmNhbGwodGhpcywgMzApOwotICAgIH0sCisgICAgfQogCiAgICAg
X3VwZGF0ZUZyYW1lTWFya2VyKCkKICAgICB7CkBAIC0yMjYsOSArMjIwLDkgQEAgV2ViSW5zcGVj
dG9yLlJlbmRlcmluZ0ZyYW1lVGltZWxpbmVPdmVydmlld0dyYXBoLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgdGhpcy5fc2VsZWN0ZWRUaW1lbGluZVJlY29yZEZyYW1lLnNlbGVjdGVkID0gdHJ1ZTsK
IAogICAgICAgICB0aGlzLmRpc3BhdGNoU2VsZWN0ZWRSZWNvcmRDaGFuZ2VkRXZlbnQoKTsKLSAg
ICB9LAorICAgIH0KIAotICAgIF9tb3VzZUNsaWNrZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9t
b3VzZUNsaWNrZWQoZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgcG9zaXRpb24gPSBldmVudC5w
YWdlWCAtIHRoaXMuZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0OwogICAgICAg
ICB2YXIgZnJhbWVJbmRleCA9IE1hdGguZmxvb3IocG9zaXRpb24gKiB0aGlzLnRpbWVsaW5lT3Zl
cnZpZXcuc2Vjb25kc1BlclBpeGVsICsgdGhpcy5zdGFydFRpbWUpOwpAQCAtMjUxLDMgKzI0NSw2
IEBAIFdlYkluc3BlY3Rvci5SZW5kZXJpbmdGcmFtZVRpbWVsaW5lT3ZlcnZpZXdHcmFwaC5wcm90
b3R5cGUgPSB7CiAgICAgICAgIHRoaXMudGltZWxpbmVPdmVydmlldy5zZWxlY3Rpb25EdXJhdGlv
biA9IDE7CiAgICAgfQogfTsKKworV2ViSW5zcGVjdG9yLlJlbmRlcmluZ0ZyYW1lVGltZWxpbmVP
dmVydmlld0dyYXBoLk1heGltdW1HcmFwaEhlaWdodFNlY29uZHMgPSAwLjAzNzsKK1dlYkluc3Bl
Y3Rvci5SZW5kZXJpbmdGcmFtZVRpbWVsaW5lT3ZlcnZpZXdHcmFwaC5NaW5pbXVtR3JhcGhIZWln
aHRTZWNvbmRzID0gMC4wMTg1OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvUmVuZGVyaW5nRnJhbWVUaW1lbGluZVZpZXcuanMgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZW5kZXJpbmdGcmFtZVRpbWVsaW5l
Vmlldy5qcwppbmRleCA3NTZlNTI1M2VlM2Q1ZDM0MmQ4Y2JiY2Y5OTViOTI3NGE4N2E1MDBlLi4z
OGRjNTA4NjdiOWJmNzRmOTRkMjgwNTM2NjVlMDUzNGIwYTg1ZjkzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZW5kZXJpbmdGcmFtZVRpbWVs
aW5lVmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9SZW5kZXJpbmdGcmFtZVRpbWVsaW5lVmlldy5qcwpAQCAtMjMsOTkgKzIzLDk3IEBACiAgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLlJlbmRl
cmluZ0ZyYW1lVGltZWxpbmVWaWV3ID0gZnVuY3Rpb24odGltZWxpbmUsIGV4dHJhQXJndW1lbnRz
KQorV2ViSW5zcGVjdG9yLlJlbmRlcmluZ0ZyYW1lVGltZWxpbmVWaWV3ID0gY2xhc3MgUmVuZGVy
aW5nRnJhbWVUaW1lbGluZVZpZXcgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuVGltZWxpbmVWaWV3CiB7
Ci0gICAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lVmlldy5jYWxsKHRoaXMsIHRpbWVsaW5lLCBleHRy
YUFyZ3VtZW50cyk7Ci0KLSAgICBjb25zb2xlLmFzc2VydChXZWJJbnNwZWN0b3IuVGltZWxpbmVS
ZWNvcmQuVHlwZS5SZW5kZXJpbmdGcmFtZSk7CisgICAgY29uc3RydWN0b3IodGltZWxpbmUsIGV4
dHJhQXJndW1lbnRzKQorICAgIHsKKyAgICAgICAgc3VwZXIodGltZWxpbmUsIGV4dHJhQXJndW1l
bnRzKTsKIAotICAgIHRoaXMubmF2aWdhdGlvblNpZGViYXJUcmVlT3V0bGluZS5lbGVtZW50LmNs
YXNzTGlzdC5hZGQoInJlbmRlcmluZy1mcmFtZSIpOworICAgICAgICBjb25zb2xlLmFzc2VydCh0
aW1lbGluZS50eXBlID09PSBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmQuVHlwZS5SZW5kZXJp
bmdGcmFtZSk7CiAKLSAgICB2YXIgY29sdW1ucyA9IHtsb2NhdGlvbjoge30sIHN0YXJ0VGltZTog
e30sIHNjcmlwdFRpbWU6IHt9LCBwYWludFRpbWU6IHt9LCBsYXlvdXRUaW1lOiB7fSwgb3RoZXJU
aW1lOiB7fSwgdG90YWxUaW1lOiB7fX07CisgICAgICAgIHRoaXMubmF2aWdhdGlvblNpZGViYXJU
cmVlT3V0bGluZS5lbGVtZW50LmNsYXNzTGlzdC5hZGQoInJlbmRlcmluZy1mcmFtZSIpOwogCi0g
ICAgY29sdW1ucy5sb2NhdGlvbi50aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiTG9jYXRp
b24iKTsKKyAgICAgICAgdmFyIGNvbHVtbnMgPSB7bG9jYXRpb246IHt9LCBzdGFydFRpbWU6IHt9
LCBzY3JpcHRUaW1lOiB7fSwgcGFpbnRUaW1lOiB7fSwgbGF5b3V0VGltZToge30sIG90aGVyVGlt
ZToge30sIHRvdGFsVGltZToge319OwogCi0gICAgY29sdW1ucy5zdGFydFRpbWUudGl0bGUgPSBX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlN0YXJ0IFRpbWUiKTsKLSAgICBjb2x1bW5zLnN0YXJ0VGlt
ZS53aWR0aCA9ICIxNSUiOwotICAgIGNvbHVtbnMuc3RhcnRUaW1lLmFsaWduZWQgPSAicmlnaHQi
OworICAgICAgICBjb2x1bW5zLmxvY2F0aW9uLnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJMb2NhdGlvbiIpOwogCi0gICAgY29sdW1ucy5zY3JpcHRUaW1lLnRpdGxlID0gV2ViSW5zcGVj
dG9yLlJlbmRlcmluZ0ZyYW1lVGltZWxpbmVSZWNvcmQuZGlzcGxheU5hbWVGb3JUYXNrVHlwZShX
ZWJJbnNwZWN0b3IuUmVuZGVyaW5nRnJhbWVUaW1lbGluZVJlY29yZC5UYXNrVHlwZS5TY3JpcHQp
OwotICAgIGNvbHVtbnMuc2NyaXB0VGltZS53aWR0aCA9ICIxMCUiOwotICAgIGNvbHVtbnMuc2Ny
aXB0VGltZS5hbGlnbmVkID0gInJpZ2h0IjsKKyAgICAgICAgY29sdW1ucy5zdGFydFRpbWUudGl0
bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlN0YXJ0IFRpbWUiKTsKKyAgICAgICAgY29sdW1u
cy5zdGFydFRpbWUud2lkdGggPSAiMTUlIjsKKyAgICAgICAgY29sdW1ucy5zdGFydFRpbWUuYWxp
Z25lZCA9ICJyaWdodCI7CiAKLSAgICBjb2x1bW5zLmxheW91dFRpbWUudGl0bGUgPSBXZWJJbnNw
ZWN0b3IuUmVuZGVyaW5nRnJhbWVUaW1lbGluZVJlY29yZC5kaXNwbGF5TmFtZUZvclRhc2tUeXBl
KFdlYkluc3BlY3Rvci5SZW5kZXJpbmdGcmFtZVRpbWVsaW5lUmVjb3JkLlRhc2tUeXBlLkxheW91
dCk7Ci0gICAgY29sdW1ucy5sYXlvdXRUaW1lLndpZHRoID0gIjEwJSI7Ci0gICAgY29sdW1ucy5s
YXlvdXRUaW1lLmFsaWduZWQgPSAicmlnaHQiOworICAgICAgICBjb2x1bW5zLnNjcmlwdFRpbWUu
dGl0bGUgPSBXZWJJbnNwZWN0b3IuUmVuZGVyaW5nRnJhbWVUaW1lbGluZVJlY29yZC5kaXNwbGF5
TmFtZUZvclRhc2tUeXBlKFdlYkluc3BlY3Rvci5SZW5kZXJpbmdGcmFtZVRpbWVsaW5lUmVjb3Jk
LlRhc2tUeXBlLlNjcmlwdCk7CisgICAgICAgIGNvbHVtbnMuc2NyaXB0VGltZS53aWR0aCA9ICIx
MCUiOworICAgICAgICBjb2x1bW5zLnNjcmlwdFRpbWUuYWxpZ25lZCA9ICJyaWdodCI7CiAKLSAg
ICBjb2x1bW5zLnBhaW50VGltZS50aXRsZSA9IFdlYkluc3BlY3Rvci5SZW5kZXJpbmdGcmFtZVRp
bWVsaW5lUmVjb3JkLmRpc3BsYXlOYW1lRm9yVGFza1R5cGUoV2ViSW5zcGVjdG9yLlJlbmRlcmlu
Z0ZyYW1lVGltZWxpbmVSZWNvcmQuVGFza1R5cGUuUGFpbnQpOwotICAgIGNvbHVtbnMucGFpbnRU
aW1lLndpZHRoID0gIjEwJSI7Ci0gICAgY29sdW1ucy5wYWludFRpbWUuYWxpZ25lZCA9ICJyaWdo
dCI7CisgICAgICAgIGNvbHVtbnMubGF5b3V0VGltZS50aXRsZSA9IFdlYkluc3BlY3Rvci5SZW5k
ZXJpbmdGcmFtZVRpbWVsaW5lUmVjb3JkLmRpc3BsYXlOYW1lRm9yVGFza1R5cGUoV2ViSW5zcGVj
dG9yLlJlbmRlcmluZ0ZyYW1lVGltZWxpbmVSZWNvcmQuVGFza1R5cGUuTGF5b3V0KTsKKyAgICAg
ICAgY29sdW1ucy5sYXlvdXRUaW1lLndpZHRoID0gIjEwJSI7CisgICAgICAgIGNvbHVtbnMubGF5
b3V0VGltZS5hbGlnbmVkID0gInJpZ2h0IjsKIAotICAgIGNvbHVtbnMub3RoZXJUaW1lLnRpdGxl
ID0gV2ViSW5zcGVjdG9yLlJlbmRlcmluZ0ZyYW1lVGltZWxpbmVSZWNvcmQuZGlzcGxheU5hbWVG
b3JUYXNrVHlwZShXZWJJbnNwZWN0b3IuUmVuZGVyaW5nRnJhbWVUaW1lbGluZVJlY29yZC5UYXNr
VHlwZS5PdGhlcik7Ci0gICAgY29sdW1ucy5vdGhlclRpbWUud2lkdGggPSAiMTAlIjsKLSAgICBj
b2x1bW5zLm90aGVyVGltZS5hbGlnbmVkID0gInJpZ2h0IjsKKyAgICAgICAgY29sdW1ucy5wYWlu
dFRpbWUudGl0bGUgPSBXZWJJbnNwZWN0b3IuUmVuZGVyaW5nRnJhbWVUaW1lbGluZVJlY29yZC5k
aXNwbGF5TmFtZUZvclRhc2tUeXBlKFdlYkluc3BlY3Rvci5SZW5kZXJpbmdGcmFtZVRpbWVsaW5l
UmVjb3JkLlRhc2tUeXBlLlBhaW50KTsKKyAgICAgICAgY29sdW1ucy5wYWludFRpbWUud2lkdGgg
PSAiMTAlIjsKKyAgICAgICAgY29sdW1ucy5wYWludFRpbWUuYWxpZ25lZCA9ICJyaWdodCI7CiAK
LSAgICBjb2x1bW5zLnRvdGFsVGltZS50aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiVG90
YWwgVGltZSIpOwotICAgIGNvbHVtbnMudG90YWxUaW1lLndpZHRoID0gIjE1JSI7Ci0gICAgY29s
dW1ucy50b3RhbFRpbWUuYWxpZ25lZCA9ICJyaWdodCI7CisgICAgICAgIGNvbHVtbnMub3RoZXJU
aW1lLnRpdGxlID0gV2ViSW5zcGVjdG9yLlJlbmRlcmluZ0ZyYW1lVGltZWxpbmVSZWNvcmQuZGlz
cGxheU5hbWVGb3JUYXNrVHlwZShXZWJJbnNwZWN0b3IuUmVuZGVyaW5nRnJhbWVUaW1lbGluZVJl
Y29yZC5UYXNrVHlwZS5PdGhlcik7CisgICAgICAgIGNvbHVtbnMub3RoZXJUaW1lLndpZHRoID0g
IjEwJSI7CisgICAgICAgIGNvbHVtbnMub3RoZXJUaW1lLmFsaWduZWQgPSAicmlnaHQiOwogCi0g
ICAgZm9yICh2YXIgY29sdW1uIGluIGNvbHVtbnMpCi0gICAgICAgIGNvbHVtbnNbY29sdW1uXS5z
b3J0YWJsZSA9IHRydWU7CisgICAgICAgIGNvbHVtbnMudG90YWxUaW1lLnRpdGxlID0gV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJUb3RhbCBUaW1lIik7CisgICAgICAgIGNvbHVtbnMudG90YWxUaW1l
LndpZHRoID0gIjE1JSI7CisgICAgICAgIGNvbHVtbnMudG90YWxUaW1lLmFsaWduZWQgPSAicmln
aHQiOwogCi0gICAgdGhpcy5fZGF0YUdyaWQgPSBuZXcgV2ViSW5zcGVjdG9yLlRpbWVsaW5lRGF0
YUdyaWQodGhpcy5uYXZpZ2F0aW9uU2lkZWJhclRyZWVPdXRsaW5lLCBjb2x1bW5zLCB0aGlzKTsK
LSAgICB0aGlzLl9kYXRhR3JpZC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5EYXRhR3Jp
ZC5FdmVudC5TZWxlY3RlZE5vZGVDaGFuZ2VkLCB0aGlzLl9kYXRhR3JpZE5vZGVTZWxlY3RlZCwg
dGhpcyk7Ci0gICAgdGhpcy5fZGF0YUdyaWQuc29ydENvbHVtbklkZW50aWZpZXIgPSAic3RhcnRU
aW1lIjsKLSAgICB0aGlzLl9kYXRhR3JpZC5zb3J0T3JkZXIgPSBXZWJJbnNwZWN0b3IuRGF0YUdy
aWQuU29ydE9yZGVyLkFzY2VuZGluZzsKKyAgICAgICAgZm9yICh2YXIgY29sdW1uIGluIGNvbHVt
bnMpCisgICAgICAgICAgICBjb2x1bW5zW2NvbHVtbl0uc29ydGFibGUgPSB0cnVlOwogCi0gICAg
dGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoInJlbmRlcmluZy1mcmFtZSIpOwotICAgIHRoaXMu
ZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9kYXRhR3JpZC5lbGVtZW50KTsKKyAgICAgICAgdGhp
cy5fZGF0YUdyaWQgPSBuZXcgV2ViSW5zcGVjdG9yLlRpbWVsaW5lRGF0YUdyaWQodGhpcy5uYXZp
Z2F0aW9uU2lkZWJhclRyZWVPdXRsaW5lLCBjb2x1bW5zLCB0aGlzKTsKKyAgICAgICAgdGhpcy5f
ZGF0YUdyaWQuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRGF0YUdyaWQuRXZlbnQuU2Vs
ZWN0ZWROb2RlQ2hhbmdlZCwgdGhpcy5fZGF0YUdyaWROb2RlU2VsZWN0ZWQsIHRoaXMpOworICAg
ICAgICB0aGlzLl9kYXRhR3JpZC5zb3J0Q29sdW1uSWRlbnRpZmllciA9ICJzdGFydFRpbWUiOwor
ICAgICAgICB0aGlzLl9kYXRhR3JpZC5zb3J0T3JkZXIgPSBXZWJJbnNwZWN0b3IuRGF0YUdyaWQu
U29ydE9yZGVyLkFzY2VuZGluZzsKIAotICAgIHRpbWVsaW5lLmFkZEV2ZW50TGlzdGVuZXIoV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lLkV2ZW50LlJlY29yZEFkZGVkLCB0aGlzLl9yZW5kZXJpbmdGcmFt
ZVRpbWVsaW5lUmVjb3JkQWRkZWQsIHRoaXMpOworICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NM
aXN0LmFkZCgicmVuZGVyaW5nLWZyYW1lIik7CisgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRD
aGlsZCh0aGlzLl9kYXRhR3JpZC5lbGVtZW50KTsKIAotICAgIHRoaXMuX3BlbmRpbmdSZWNvcmRz
ID0gW107Ci19OworICAgICAgICB0aW1lbGluZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rv
ci5UaW1lbGluZS5FdmVudC5SZWNvcmRBZGRlZCwgdGhpcy5fcmVuZGVyaW5nRnJhbWVUaW1lbGlu
ZVJlY29yZEFkZGVkLCB0aGlzKTsKIAotV2ViSW5zcGVjdG9yLlJlbmRlcmluZ0ZyYW1lVGltZWxp
bmVWaWV3LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLlJlbmRl
cmluZ0ZyYW1lVGltZWxpbmVWaWV3LAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLlRpbWVs
aW5lVmlldy5wcm90b3R5cGUsCisgICAgICAgIHRoaXMuX3BlbmRpbmdSZWNvcmRzID0gW107Cisg
ICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgbmF2aWdhdGlvblNpZGViYXJUcmVlT3V0
bGluZUxhYmVsKCkKICAgICB7CiAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IlJlY29yZHMiKTsKLSAgICB9LAorICAgIH0KIAotICAgIHNob3duOiBmdW5jdGlvbigpCisgICAg
c2hvd24oKQogICAgIHsKLSAgICAgICAgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LnByb3RvdHlw
ZS5zaG93bi5jYWxsKHRoaXMpOworICAgICAgICBzdXBlci5zaG93bigpOwogCiAgICAgICAgIHRo
aXMuX2RhdGFHcmlkLnNob3duKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBoaWRkZW46IGZ1bmN0
aW9uKCkKKyAgICBoaWRkZW4oKQogICAgIHsKICAgICAgICAgdGhpcy5fZGF0YUdyaWQuaGlkZGVu
KCk7CiAKLSAgICAgICAgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LnByb3RvdHlwZS5oaWRkZW4u
Y2FsbCh0aGlzKTsKLSAgICB9LAorICAgICAgICBzdXBlci5oaWRkZW4oKTsKKyAgICB9CiAKLSAg
ICBjbG9zZWQ6IGZ1bmN0aW9uKCkKKyAgICBjbG9zZWQoKQogICAgIHsKICAgICAgICAgY29uc29s
ZS5hc3NlcnQodGhpcy5yZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5U
aW1lbGluZSk7CiAgICAgICAgIHRoaXMucmVwcmVzZW50ZWRPYmplY3QucmVtb3ZlRXZlbnRMaXN0
ZW5lcihudWxsLCBudWxsLCB0aGlzKTsKIAogICAgICAgICB0aGlzLl9kYXRhR3JpZC5jbG9zZWQo
KTsKLSAgICB9LAorICAgIH0KIAotICAgIHVwZGF0ZUxheW91dDogZnVuY3Rpb24oKQorICAgIHVw
ZGF0ZUxheW91dCgpCiAgICAgewotICAgICAgICBXZWJJbnNwZWN0b3IuVGltZWxpbmVWaWV3LnBy
b3RvdHlwZS51cGRhdGVMYXlvdXQuY2FsbCh0aGlzKTsKKyAgICAgICAgc3VwZXIudXBkYXRlTGF5
b3V0KCk7CiAKICAgICAgICAgdGhpcy5fZGF0YUdyaWQudXBkYXRlTGF5b3V0KCk7CiAKICAgICAg
ICAgdGhpcy5fcHJvY2Vzc1BlbmRpbmdSZWNvcmRzKCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBn
ZXQgc2VsZWN0aW9uUGF0aENvbXBvbmVudHMoKQogICAgIHsKQEAgLTE0MSwzMCArMTM5LDMwIEBA
IFdlYkluc3BlY3Rvci5SZW5kZXJpbmdGcmFtZVRpbWVsaW5lVmlldy5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIH0KIAogICAgICAgICByZXR1cm4gcGF0aENvbXBvbmVudHM7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBtYXRjaFRyZWVFbGVtZW50QWdhaW5zdEN1c3RvbUZpbHRlcnM6IGZ1bmN0aW9uKHRy
ZWVFbGVtZW50KQorICAgIG1hdGNoVHJlZUVsZW1lbnRBZ2FpbnN0Q3VzdG9tRmlsdGVycyh0cmVl
RWxlbWVudCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9kYXRhR3JpZC50cmVlRWxlbWVu
dE1hdGNoZXNBY3RpdmVTY29wZUZpbHRlcnModHJlZUVsZW1lbnQpOwotICAgIH0sCisgICAgfQog
Ci0gICAgcmVzZXQ6IGZ1bmN0aW9uKCkKKyAgICByZXNldCgpCiAgICAgewotICAgICAgICBXZWJJ
bnNwZWN0b3IuVGltZWxpbmVWaWV3LnByb3RvdHlwZS5yZXNldC5jYWxsKHRoaXMpOworICAgICAg
ICBzdXBlci5yZXNldCgpOwogCiAgICAgICAgIHRoaXMuX2RhdGFHcmlkLnJlc2V0KCk7Ci0gICAg
fSwKKyAgICB9CiAKICAgICAvLyBQcm90ZWN0ZWQKIAotICAgIGNhblNob3dDb250ZW50Vmlld0Zv
clRyZWVFbGVtZW50OiBmdW5jdGlvbih0cmVlRWxlbWVudCkKKyAgICBjYW5TaG93Q29udGVudFZp
ZXdGb3JUcmVlRWxlbWVudCh0cmVlRWxlbWVudCkKICAgICB7CiAgICAgICAgIGlmICh0cmVlRWxl
bWVudCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Qcm9maWxlTm9kZVRyZWVFbGVtZW50KQogICAg
ICAgICAgICAgcmV0dXJuICEhdHJlZUVsZW1lbnQucHJvZmlsZU5vZGUuc291cmNlQ29kZUxvY2F0
aW9uOwotICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlRpbWVsaW5lVmlldy5wcm90b3R5cGUu
Y2FuU2hvd0NvbnRlbnRWaWV3Rm9yVHJlZUVsZW1lbnQodHJlZUVsZW1lbnQpOwotICAgIH0sCisg
ICAgICAgIHJldHVybiBzdXBlci5jYW5TaG93Q29udGVudFZpZXdGb3JUcmVlRWxlbWVudCh0cmVl
RWxlbWVudCk7CisgICAgfQogCi0gICAgc2hvd0NvbnRlbnRWaWV3Rm9yVHJlZUVsZW1lbnQ6IGZ1
bmN0aW9uKHRyZWVFbGVtZW50KQorICAgIHNob3dDb250ZW50Vmlld0ZvclRyZWVFbGVtZW50KHRy
ZWVFbGVtZW50KQogICAgIHsKICAgICAgICAgaWYgKHRyZWVFbGVtZW50IGluc3RhbmNlb2YgV2Vi
SW5zcGVjdG9yLlByb2ZpbGVOb2RlVHJlZUVsZW1lbnQpIHsKICAgICAgICAgICAgIGlmICh0cmVl
RWxlbWVudC5wcm9maWxlTm9kZS5zb3VyY2VDb2RlTG9jYXRpb24pCkBAIC0xNzIsNDQgKzE3MCw0
NCBAQCBXZWJJbnNwZWN0b3IuUmVuZGVyaW5nRnJhbWVUaW1lbGluZVZpZXcucHJvdG90eXBlID0g
ewogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgV2ViSW5zcGVjdG9y
LlRpbWVsaW5lVmlldy5wcm90b3R5cGUuc2hvd0NvbnRlbnRWaWV3Rm9yVHJlZUVsZW1lbnQuY2Fs
bCh0aGlzLCB0cmVlRWxlbWVudCk7Ci0gICAgfSwKKyAgICAgICAgc3VwZXIuc2hvd0NvbnRlbnRW
aWV3Rm9yVHJlZUVsZW1lbnQodHJlZUVsZW1lbnQpOworICAgIH0KIAotICAgIHRyZWVFbGVtZW50
RGVzZWxlY3RlZDogZnVuY3Rpb24odHJlZUVsZW1lbnQpCisgICAgdHJlZUVsZW1lbnREZXNlbGVj
dGVkKHRyZWVFbGVtZW50KQogICAgIHsKICAgICAgICAgdmFyIGRhdGFHcmlkTm9kZSA9IHRoaXMu
X2RhdGFHcmlkLmRhdGFHcmlkTm9kZUZvclRyZWVFbGVtZW50KHRyZWVFbGVtZW50KTsKICAgICAg
ICAgaWYgKCFkYXRhR3JpZE5vZGUpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgZGF0
YUdyaWROb2RlLmRlc2VsZWN0KCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICB0cmVlRWxlbWVudFNl
bGVjdGVkOiBmdW5jdGlvbih0cmVlRWxlbWVudCwgc2VsZWN0ZWRCeVVzZXIpCisgICAgdHJlZUVs
ZW1lbnRTZWxlY3RlZCh0cmVlRWxlbWVudCwgc2VsZWN0ZWRCeVVzZXIpCiAgICAgewogICAgICAg
ICBpZiAodGhpcy5fZGF0YUdyaWQuc2hvdWxkSWdub3JlU2VsZWN0aW9uRXZlbnQoKSkKICAgICAg
ICAgICAgIHJldHVybjsKIAotICAgICAgICBXZWJJbnNwZWN0b3IuVGltZWxpbmVWaWV3LnByb3Rv
dHlwZS50cmVlRWxlbWVudFNlbGVjdGVkLmNhbGwodGhpcywgdHJlZUVsZW1lbnQsIHNlbGVjdGVk
QnlVc2VyKTsKLSAgICB9LAorICAgICAgICBzdXBlci50cmVlRWxlbWVudFNlbGVjdGVkKHRyZWVF
bGVtZW50LCBzZWxlY3RlZEJ5VXNlcik7CisgICAgfQogCi0gICAgdHJlZUVsZW1lbnRQYXRoQ29t
cG9uZW50U2VsZWN0ZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHRyZWVFbGVtZW50UGF0aENvbXBv
bmVudFNlbGVjdGVkKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIGRhdGFHcmlkTm9kZSA9IHRo
aXMuX2RhdGFHcmlkLmRhdGFHcmlkTm9kZUZvclRyZWVFbGVtZW50KGV2ZW50LmRhdGEucGF0aENv
bXBvbmVudC5nZW5lcmFsVHJlZUVsZW1lbnQpOwogICAgICAgICBpZiAoIWRhdGFHcmlkTm9kZSkK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgZGF0YUdyaWROb2RlLnJldmVhbEFuZFNlbGVj
dCgpOwotICAgIH0sCisgICAgfQogCi0gICAgZGF0YUdyaWROb2RlRm9yVHJlZUVsZW1lbnQ6IGZ1
bmN0aW9uKHRyZWVFbGVtZW50KQorICAgIGRhdGFHcmlkTm9kZUZvclRyZWVFbGVtZW50KHRyZWVF
bGVtZW50KQogICAgIHsKICAgICAgICAgaWYgKHRyZWVFbGVtZW50IGluc3RhbmNlb2YgV2ViSW5z
cGVjdG9yLlByb2ZpbGVOb2RlVHJlZUVsZW1lbnQpCiAgICAgICAgICAgICByZXR1cm4gbmV3IFdl
Ykluc3BlY3Rvci5Qcm9maWxlTm9kZURhdGFHcmlkTm9kZSh0cmVlRWxlbWVudC5wcm9maWxlTm9k
ZSwgdGhpcy56ZXJvVGltZSwgdGhpcy5zdGFydFRpbWUsIHRoaXMuZW5kVGltZSk7CiAgICAgICAg
IHJldHVybiBudWxsOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJpdmF0ZQogCi0gICAgX3By
b2Nlc3NQZW5kaW5nUmVjb3JkczogZnVuY3Rpb24oKQorICAgIF9wcm9jZXNzUGVuZGluZ1JlY29y
ZHMoKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9wZW5kaW5nUmVjb3Jkcy5sZW5ndGgpCiAg
ICAgICAgICAgICByZXR1cm47CkBAIC0yNTQsOSArMjUyLDkgQEAgV2ViSW5zcGVjdG9yLlJlbmRl
cmluZ0ZyYW1lVGltZWxpbmVWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAgICAgICAg
IHRoaXMuX3BlbmRpbmdSZWNvcmRzID0gW107Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcmVuZGVy
aW5nRnJhbWVUaW1lbGluZVJlY29yZEFkZGVkOiBmdW5jdGlvbihldmVudCkKKyAgICBfcmVuZGVy
aW5nRnJhbWVUaW1lbGluZVJlY29yZEFkZGVkKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIHJl
bmRlcmluZ0ZyYW1lVGltZWxpbmVSZWNvcmQgPSBldmVudC5kYXRhLnJlY29yZDsKICAgICAgICAg
Y29uc29sZS5hc3NlcnQocmVuZGVyaW5nRnJhbWVUaW1lbGluZVJlY29yZCBpbnN0YW5jZW9mIFdl
Ykluc3BlY3Rvci5SZW5kZXJpbmdGcmFtZVRpbWVsaW5lUmVjb3JkKTsKQEAgLTI2NCw5ICsyNjIs
OSBAQCBXZWJJbnNwZWN0b3IuUmVuZGVyaW5nRnJhbWVUaW1lbGluZVZpZXcucHJvdG90eXBlID0g
ewogICAgICAgICB0aGlzLl9wZW5kaW5nUmVjb3Jkcy5wdXNoKHJlbmRlcmluZ0ZyYW1lVGltZWxp
bmVSZWNvcmQpOwogCiAgICAgICAgIHRoaXMubmVlZHNMYXlvdXQoKTsKLSAgICB9LAorICAgIH0K
IAotICAgIF9kYXRhR3JpZE5vZGVTZWxlY3RlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX2RhdGFH
cmlkTm9kZVNlbGVjdGVkKGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50
VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LkV2ZW50LlNlbGVjdGlvblBhdGhD
b21wb25lbnRzRGlkQ2hhbmdlKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TY3JpcHRUaW1lbGluZU92ZXJ2aWV3R3JhcGguanMg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TY3JpcHRUaW1lbGlu
ZU92ZXJ2aWV3R3JhcGguanMKaW5kZXggZDBhZjVjMzFjM2IwYzAwNTk0ZDg0MzAwYjMwMzk1MzMz
OTU2ZGJiMy4uMDdlNDk5YTk2ZGRkNDkzYmE3ZWEwM2VlMWQ0ZTEyMjNiYzIzNGFmNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2NyaXB0VGlt
ZWxpbmVPdmVydmlld0dyYXBoLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL1NjcmlwdFRpbWVsaW5lT3ZlcnZpZXdHcmFwaC5qcwpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsMzggKzIzLDM2
IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVj
dG9yLlNjcmlwdFRpbWVsaW5lT3ZlcnZpZXdHcmFwaCA9IGZ1bmN0aW9uKHRpbWVsaW5lLCB0aW1l
bGluZU92ZXJ2aWV3KQorV2ViSW5zcGVjdG9yLlNjcmlwdFRpbWVsaW5lT3ZlcnZpZXdHcmFwaCA9
IGNsYXNzIFNjcmlwdFRpbWVsaW5lT3ZlcnZpZXdHcmFwaCBleHRlbmRzIFdlYkluc3BlY3Rvci5U
aW1lbGluZU92ZXJ2aWV3R3JhcGgKIHsKLSAgICBXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmll
d0dyYXBoLmNhbGwodGhpcywgdGltZWxpbmUsIHRpbWVsaW5lT3ZlcnZpZXcpOwotCi0gICAgdGhp
cy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoInNjcmlwdCIpOworICAgIGNvbnN0cnVjdG9yKHRpbWVs
aW5lLCB0aW1lbGluZU92ZXJ2aWV3KQorICAgIHsKKyAgICAgICAgc3VwZXIodGltZWxpbmUsIHRp
bWVsaW5lT3ZlcnZpZXcpOwogCi0gICAgdGhpcy5fc2NyaXB0VGltZWxpbmUgPSB0aW1lbGluZTsK
LSAgICB0aGlzLl9zY3JpcHRUaW1lbGluZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5U
aW1lbGluZS5FdmVudC5SZWNvcmRBZGRlZCwgdGhpcy5fc2NyaXB0VGltZWxpbmVSZWNvcmRBZGRl
ZCwgdGhpcyk7CisgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJzY3JpcHQiKTsK
IAotICAgIHRoaXMuX3RpbWVsaW5lUmVjb3JkQmFycyA9IFtdOworICAgICAgICB0aGlzLl9zY3Jp
cHRUaW1lbGluZSA9IHRpbWVsaW5lOworICAgICAgICB0aGlzLl9zY3JpcHRUaW1lbGluZS5hZGRF
dmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5UaW1lbGluZS5FdmVudC5SZWNvcmRBZGRlZCwgdGhp
cy5fc2NyaXB0VGltZWxpbmVSZWNvcmRBZGRlZCwgdGhpcyk7CiAKLSAgICB0aGlzLnJlc2V0KCk7
Ci19OworICAgICAgICB0aGlzLl90aW1lbGluZVJlY29yZEJhcnMgPSBbXTsKIAotV2ViSW5zcGVj
dG9yLlNjcmlwdFRpbWVsaW5lT3ZlcnZpZXdHcmFwaC5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3Ry
dWN0b3I6IFdlYkluc3BlY3Rvci5TY3JpcHRUaW1lbGluZU92ZXJ2aWV3R3JhcGgsCi0gICAgX19w
cm90b19fOiBXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlld0dyYXBoLnByb3RvdHlwZSwKKyAg
ICAgICAgdGhpcy5yZXNldCgpOworICAgIH0KIAogICAgIC8vIFB1YmxpYwogCi0gICAgcmVzZXQ6
IGZ1bmN0aW9uKCkKKyAgICByZXNldCgpCiAgICAgewotICAgICAgICBXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVPdmVydmlld0dyYXBoLnByb3RvdHlwZS5yZXNldC5jYWxsKHRoaXMpOworICAgICAgICBz
dXBlci5yZXNldCgpOwogCiAgICAgICAgIHRoaXMuX3RpbWVsaW5lUmVjb3JkQmFyTWFwID0gbmV3
IE1hcDsKIAogICAgICAgICB0aGlzLmVsZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsKLSAgICB9LAor
ICAgIH0KIAotICAgIHVwZGF0ZUxheW91dDogZnVuY3Rpb24oKQorICAgIHVwZGF0ZUxheW91dCgp
CiAgICAgewotICAgICAgICBXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlld0dyYXBoLnByb3Rv
dHlwZS51cGRhdGVMYXlvdXQuY2FsbCh0aGlzKTsKKyAgICAgICAgc3VwZXIudXBkYXRlTGF5b3V0
KCk7CiAKICAgICAgICAgdmFyIHNlY29uZHNQZXJQaXhlbCA9IHRoaXMudGltZWxpbmVPdmVydmll
dy5zZWNvbmRzUGVyUGl4ZWw7CiAKQEAgLTgyLDExICs4MCwxMSBAQCBXZWJJbnNwZWN0b3IuU2Ny
aXB0VGltZWxpbmVPdmVydmlld0dyYXBoLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMu
X3RpbWVsaW5lUmVjb3JkQmFyc1tyZWNvcmRCYXJJbmRleF0ucmVjb3JkcyA9IG51bGw7CiAgICAg
ICAgICAgICB0aGlzLl90aW1lbGluZVJlY29yZEJhcnNbcmVjb3JkQmFySW5kZXhdLmVsZW1lbnQu
cmVtb3ZlKCk7CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByaXZhdGUKIAot
ICAgIF9zY3JpcHRUaW1lbGluZVJlY29yZEFkZGVkOiBmdW5jdGlvbihldmVudCkKKyAgICBfc2Ny
aXB0VGltZWxpbmVSZWNvcmRBZGRlZChldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMubmVlZHNM
YXlvdXQoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9TY3JpcHRUaW1lbGluZVZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9TY3JpcHRUaW1lbGluZVZpZXcuanMKaW5kZXggNGZiMjA1
YTU1NDk5ZjA1MTJhY2MwYjI0MTQ0NTgzMGZjZjU2YWMzZi4uZmYwNDkyZTcwMzE4NDgxZmVhODNm
NDA5YWFlYjQyZjhhNzdmNDUxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvU2NyaXB0VGltZWxpbmVWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NjcmlwdFRpbWVsaW5lVmlldy5qcwpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMs
OTUgKzIzLDkwIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAot
V2ViSW5zcGVjdG9yLlNjcmlwdFRpbWVsaW5lVmlldyA9IGZ1bmN0aW9uKHRpbWVsaW5lLCBleHRy
YUFyZ3VtZW50cykKK1dlYkluc3BlY3Rvci5TY3JpcHRUaW1lbGluZVZpZXcgPSBjbGFzcyBTY3Jp
cHRUaW1lbGluZVZpZXcgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuVGltZWxpbmVWaWV3CiB7Ci0gICAg
V2ViSW5zcGVjdG9yLlRpbWVsaW5lVmlldy5jYWxsKHRoaXMsIHRpbWVsaW5lLCBleHRyYUFyZ3Vt
ZW50cyk7Ci0KLSAgICBjb25zb2xlLmFzc2VydCh0aW1lbGluZS50eXBlID09PSBXZWJJbnNwZWN0
b3IuVGltZWxpbmVSZWNvcmQuVHlwZS5TY3JpcHQpOwotCi0gICAgdGhpcy5uYXZpZ2F0aW9uU2lk
ZWJhclRyZWVPdXRsaW5lLmVsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuU2NyaXB0
VGltZWxpbmVWaWV3LlRyZWVPdXRsaW5lU3R5bGVDbGFzc05hbWUpOworICAgIGNvbnN0cnVjdG9y
KHRpbWVsaW5lLCBleHRyYUFyZ3VtZW50cykKKyAgICB7CisgICAgICAgIHN1cGVyKHRpbWVsaW5l
LCBleHRyYUFyZ3VtZW50cyk7CiAKLSAgICB2YXIgY29sdW1ucyA9IHtsb2NhdGlvbjoge30sIGNh
bGxDb3VudDoge30sIHN0YXJ0VGltZToge30sIHRvdGFsVGltZToge30sIHNlbGZUaW1lOiB7fSwg
YXZlcmFnZVRpbWU6IHt9fTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodGltZWxpbmUudHlwZSA9
PT0gV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkLlR5cGUuU2NyaXB0KTsKIAotICAgIGNvbHVt
bnMubG9jYXRpb24udGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkxvY2F0aW9uIik7Ci0g
ICAgY29sdW1ucy5sb2NhdGlvbi53aWR0aCA9ICIxNSUiOworICAgICAgICB0aGlzLm5hdmlnYXRp
b25TaWRlYmFyVHJlZU91dGxpbmUuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJzY3JpcHQiKTsKIAot
ICAgIGNvbHVtbnMuY2FsbENvdW50LnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDYWxs
cyIpOwotICAgIGNvbHVtbnMuY2FsbENvdW50LndpZHRoID0gIjUlIjsKLSAgICBjb2x1bW5zLmNh
bGxDb3VudC5hbGlnbmVkID0gInJpZ2h0IjsKKyAgICAgICAgdmFyIGNvbHVtbnMgPSB7bG9jYXRp
b246IHt9LCBjYWxsQ291bnQ6IHt9LCBzdGFydFRpbWU6IHt9LCB0b3RhbFRpbWU6IHt9LCBzZWxm
VGltZToge30sIGF2ZXJhZ2VUaW1lOiB7fX07CiAKLSAgICBjb2x1bW5zLnN0YXJ0VGltZS50aXRs
ZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU3RhcnQgVGltZSIpOwotICAgIGNvbHVtbnMuc3Rh
cnRUaW1lLndpZHRoID0gIjEwJSI7Ci0gICAgY29sdW1ucy5zdGFydFRpbWUuYWxpZ25lZCA9ICJy
aWdodCI7CisgICAgICAgIGNvbHVtbnMubG9jYXRpb24udGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIkxvY2F0aW9uIik7CisgICAgICAgIGNvbHVtbnMubG9jYXRpb24ud2lkdGggPSAiMTUl
IjsKIAotICAgIGNvbHVtbnMudG90YWxUaW1lLnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJUb3RhbCBUaW1lIik7Ci0gICAgY29sdW1ucy50b3RhbFRpbWUud2lkdGggPSAiMTAlIjsKLSAg
ICBjb2x1bW5zLnRvdGFsVGltZS5hbGlnbmVkID0gInJpZ2h0IjsKKyAgICAgICAgY29sdW1ucy5j
YWxsQ291bnQudGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNhbGxzIik7CisgICAgICAg
IGNvbHVtbnMuY2FsbENvdW50LndpZHRoID0gIjUlIjsKKyAgICAgICAgY29sdW1ucy5jYWxsQ291
bnQuYWxpZ25lZCA9ICJyaWdodCI7CiAKLSAgICBjb2x1bW5zLnNlbGZUaW1lLnRpdGxlID0gV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJTZWxmIFRpbWUiKTsKLSAgICBjb2x1bW5zLnNlbGZUaW1lLndp
ZHRoID0gIjEwJSI7Ci0gICAgY29sdW1ucy5zZWxmVGltZS5hbGlnbmVkID0gInJpZ2h0IjsKKyAg
ICAgICAgY29sdW1ucy5zdGFydFRpbWUudGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlN0
YXJ0IFRpbWUiKTsKKyAgICAgICAgY29sdW1ucy5zdGFydFRpbWUud2lkdGggPSAiMTAlIjsKKyAg
ICAgICAgY29sdW1ucy5zdGFydFRpbWUuYWxpZ25lZCA9ICJyaWdodCI7CiAKLSAgICBjb2x1bW5z
LmF2ZXJhZ2VUaW1lLnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJBdmVyYWdlIFRpbWUi
KTsKLSAgICBjb2x1bW5zLmF2ZXJhZ2VUaW1lLndpZHRoID0gIjEwJSI7Ci0gICAgY29sdW1ucy5h
dmVyYWdlVGltZS5hbGlnbmVkID0gInJpZ2h0IjsKKyAgICAgICAgY29sdW1ucy50b3RhbFRpbWUu
dGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlRvdGFsIFRpbWUiKTsKKyAgICAgICAgY29s
dW1ucy50b3RhbFRpbWUud2lkdGggPSAiMTAlIjsKKyAgICAgICAgY29sdW1ucy50b3RhbFRpbWUu
YWxpZ25lZCA9ICJyaWdodCI7CiAKLSAgICBmb3IgKHZhciBjb2x1bW4gaW4gY29sdW1ucykKLSAg
ICAgICAgY29sdW1uc1tjb2x1bW5dLnNvcnRhYmxlID0gdHJ1ZTsKKyAgICAgICAgY29sdW1ucy5z
ZWxmVGltZS50aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2VsZiBUaW1lIik7CisgICAg
ICAgIGNvbHVtbnMuc2VsZlRpbWUud2lkdGggPSAiMTAlIjsKKyAgICAgICAgY29sdW1ucy5zZWxm
VGltZS5hbGlnbmVkID0gInJpZ2h0IjsKIAotICAgIHRoaXMuX2RhdGFHcmlkID0gbmV3IFdlYklu
c3BlY3Rvci5TY3JpcHRUaW1lbGluZURhdGFHcmlkKHRoaXMubmF2aWdhdGlvblNpZGViYXJUcmVl
T3V0bGluZSwgY29sdW1ucywgdGhpcyk7Ci0gICAgdGhpcy5fZGF0YUdyaWQuYWRkRXZlbnRMaXN0
ZW5lcihXZWJJbnNwZWN0b3IuVGltZWxpbmVEYXRhR3JpZC5FdmVudC5GaWx0ZXJzRGlkQ2hhbmdl
LCB0aGlzLl9kYXRhR3JpZEZpbHRlcnNEaWRDaGFuZ2UsIHRoaXMpOwotICAgIHRoaXMuX2RhdGFH
cmlkLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRhdGFHcmlkLkV2ZW50LlNlbGVjdGVk
Tm9kZUNoYW5nZWQsIHRoaXMuX2RhdGFHcmlkTm9kZVNlbGVjdGVkLCB0aGlzKTsKLSAgICB0aGlz
Ll9kYXRhR3JpZC5zb3J0Q29sdW1uSWRlbnRpZmllciA9ICJzdGFydFRpbWUiOwotICAgIHRoaXMu
X2RhdGFHcmlkLnNvcnRPcmRlciA9IFdlYkluc3BlY3Rvci5EYXRhR3JpZC5Tb3J0T3JkZXIuQXNj
ZW5kaW5nOworICAgICAgICBjb2x1bW5zLmF2ZXJhZ2VUaW1lLnRpdGxlID0gV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJBdmVyYWdlIFRpbWUiKTsKKyAgICAgICAgY29sdW1ucy5hdmVyYWdlVGltZS53
aWR0aCA9ICIxMCUiOworICAgICAgICBjb2x1bW5zLmF2ZXJhZ2VUaW1lLmFsaWduZWQgPSAicmln
aHQiOwogCi0gICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLlNjcmlw
dFRpbWVsaW5lVmlldy5TdHlsZUNsYXNzTmFtZSk7Ci0gICAgdGhpcy5lbGVtZW50LmFwcGVuZENo
aWxkKHRoaXMuX2RhdGFHcmlkLmVsZW1lbnQpOworICAgICAgICBmb3IgKHZhciBjb2x1bW4gaW4g
Y29sdW1ucykKKyAgICAgICAgICAgIGNvbHVtbnNbY29sdW1uXS5zb3J0YWJsZSA9IHRydWU7CiAK
LSAgICB0aW1lbGluZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5UaW1lbGluZS5FdmVu
dC5SZWNvcmRBZGRlZCwgdGhpcy5fc2NyaXB0VGltZWxpbmVSZWNvcmRBZGRlZCwgdGhpcyk7Cisg
ICAgICAgIHRoaXMuX2RhdGFHcmlkID0gbmV3IFdlYkluc3BlY3Rvci5TY3JpcHRUaW1lbGluZURh
dGFHcmlkKHRoaXMubmF2aWdhdGlvblNpZGViYXJUcmVlT3V0bGluZSwgY29sdW1ucywgdGhpcyk7
CisgICAgICAgIHRoaXMuX2RhdGFHcmlkLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRp
bWVsaW5lRGF0YUdyaWQuRXZlbnQuRmlsdGVyc0RpZENoYW5nZSwgdGhpcy5fZGF0YUdyaWRGaWx0
ZXJzRGlkQ2hhbmdlLCB0aGlzKTsKKyAgICAgICAgdGhpcy5fZGF0YUdyaWQuYWRkRXZlbnRMaXN0
ZW5lcihXZWJJbnNwZWN0b3IuRGF0YUdyaWQuRXZlbnQuU2VsZWN0ZWROb2RlQ2hhbmdlZCwgdGhp
cy5fZGF0YUdyaWROb2RlU2VsZWN0ZWQsIHRoaXMpOworICAgICAgICB0aGlzLl9kYXRhR3JpZC5z
b3J0Q29sdW1uSWRlbnRpZmllciA9ICJzdGFydFRpbWUiOworICAgICAgICB0aGlzLl9kYXRhR3Jp
ZC5zb3J0T3JkZXIgPSBXZWJJbnNwZWN0b3IuRGF0YUdyaWQuU29ydE9yZGVyLkFzY2VuZGluZzsK
IAotICAgIHRoaXMuX3BlbmRpbmdSZWNvcmRzID0gW107Ci19OworICAgICAgICB0aGlzLmVsZW1l
bnQuY2xhc3NMaXN0LmFkZCgic2NyaXB0Iik7CisgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRD
aGlsZCh0aGlzLl9kYXRhR3JpZC5lbGVtZW50KTsKIAotV2ViSW5zcGVjdG9yLlNjcmlwdFRpbWVs
aW5lVmlldy5TdHlsZUNsYXNzTmFtZSA9ICJzY3JpcHQiOwotV2ViSW5zcGVjdG9yLlNjcmlwdFRp
bWVsaW5lVmlldy5UcmVlT3V0bGluZVN0eWxlQ2xhc3NOYW1lID0gInNjcmlwdCI7CisgICAgICAg
IHRpbWVsaW5lLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRpbWVsaW5lLkV2ZW50LlJl
Y29yZEFkZGVkLCB0aGlzLl9zY3JpcHRUaW1lbGluZVJlY29yZEFkZGVkLCB0aGlzKTsKIAotV2Vi
SW5zcGVjdG9yLlNjcmlwdFRpbWVsaW5lVmlldy5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0
b3I6IFdlYkluc3BlY3Rvci5TY3JpcHRUaW1lbGluZVZpZXcsCi0gICAgX19wcm90b19fOiBXZWJJ
bnNwZWN0b3IuVGltZWxpbmVWaWV3LnByb3RvdHlwZSwKKyAgICAgICAgdGhpcy5fcGVuZGluZ1Jl
Y29yZHMgPSBbXTsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBuYXZpZ2F0aW9u
U2lkZWJhclRyZWVPdXRsaW5lTGFiZWwoKQogICAgIHsKICAgICAgICAgcmV0dXJuIFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiUmVjb3JkcyIpOwotICAgIH0sCisgICAgfQogCi0gICAgc2hvd246IGZ1
bmN0aW9uKCkKKyAgICBzaG93bigpCiAgICAgewotICAgICAgICBXZWJJbnNwZWN0b3IuQ29udGVu
dFZpZXcucHJvdG90eXBlLnNob3duLmNhbGwodGhpcyk7CisgICAgICAgIHN1cGVyLnNob3duKCk7
CiAKICAgICAgICAgdGhpcy5fZGF0YUdyaWQuc2hvd24oKTsKLSAgICB9LAorICAgIH0KIAotICAg
IGhpZGRlbjogZnVuY3Rpb24oKQorICAgIGhpZGRlbigpCiAgICAgewogICAgICAgICB0aGlzLl9k
YXRhR3JpZC5oaWRkZW4oKTsKIAotICAgICAgICBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcucHJv
dG90eXBlLmhpZGRlbi5jYWxsKHRoaXMpOwotICAgIH0sCisgICAgICAgIHN1cGVyLmhpZGRlbigp
OworICAgIH0KIAotICAgIGNsb3NlZDogZnVuY3Rpb24oKQorICAgIGNsb3NlZCgpCiAgICAgewog
ICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLnJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2Yg
V2ViSW5zcGVjdG9yLlRpbWVsaW5lKTsKICAgICAgICAgdGhpcy5yZXByZXNlbnRlZE9iamVjdC5y
ZW1vdmVFdmVudExpc3RlbmVyKG51bGwsIG51bGwsIHRoaXMpOwogCiAgICAgICAgIHRoaXMuX2Rh
dGFHcmlkLmNsb3NlZCgpOwotICAgIH0sCisgICAgfQogCi0gICAgdXBkYXRlTGF5b3V0OiBmdW5j
dGlvbigpCisgICAgdXBkYXRlTGF5b3V0KCkKICAgICB7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5U
aW1lbGluZVZpZXcucHJvdG90eXBlLnVwZGF0ZUxheW91dC5jYWxsKHRoaXMpOworICAgICAgICBz
dXBlci51cGRhdGVMYXlvdXQoKTsKIAogICAgICAgICB0aGlzLl9kYXRhR3JpZC51cGRhdGVMYXlv
dXQoKTsKIApAQCAtMTI5LDcgKzEyNCw3IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRUaW1lbGluZVZp
ZXcucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgdGhpcy5fcHJvY2Vzc1BlbmRp
bmdSZWNvcmRzKCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgc2VsZWN0aW9uUGF0aENvbXBv
bmVudHMoKQogICAgIHsKQEAgLTE1NSwzMCArMTUwLDMwIEBAIFdlYkluc3BlY3Rvci5TY3JpcHRU
aW1lbGluZVZpZXcucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIHBh
dGhDb21wb25lbnRzOwotICAgIH0sCisgICAgfQogCi0gICAgbWF0Y2hUcmVlRWxlbWVudEFnYWlu
c3RDdXN0b21GaWx0ZXJzOiBmdW5jdGlvbih0cmVlRWxlbWVudCkKKyAgICBtYXRjaFRyZWVFbGVt
ZW50QWdhaW5zdEN1c3RvbUZpbHRlcnModHJlZUVsZW1lbnQpCiAgICAgewogICAgICAgICByZXR1
cm4gdGhpcy5fZGF0YUdyaWQudHJlZUVsZW1lbnRNYXRjaGVzQWN0aXZlU2NvcGVGaWx0ZXJzKHRy
ZWVFbGVtZW50KTsKLSAgICB9LAorICAgIH0KIAotICAgIHJlc2V0OiBmdW5jdGlvbigpCisgICAg
cmVzZXQoKQogICAgIHsKLSAgICAgICAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lVmlldy5wcm90b3R5
cGUucmVzZXQuY2FsbCh0aGlzKTsKKyAgICAgICAgc3VwZXIucmVzZXQoKTsKIAogICAgICAgICB0
aGlzLl9kYXRhR3JpZC5yZXNldCgpOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJvdGVjdGVk
CiAKLSAgICBjYW5TaG93Q29udGVudFZpZXdGb3JUcmVlRWxlbWVudDogZnVuY3Rpb24odHJlZUVs
ZW1lbnQpCisgICAgY2FuU2hvd0NvbnRlbnRWaWV3Rm9yVHJlZUVsZW1lbnQodHJlZUVsZW1lbnQp
CiAgICAgewogICAgICAgICBpZiAodHJlZUVsZW1lbnQgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3Iu
UHJvZmlsZU5vZGVUcmVlRWxlbWVudCkKICAgICAgICAgICAgIHJldHVybiAhIXRyZWVFbGVtZW50
LnByb2ZpbGVOb2RlLnNvdXJjZUNvZGVMb2NhdGlvbjsKLSAgICAgICAgcmV0dXJuIFdlYkluc3Bl
Y3Rvci5UaW1lbGluZVZpZXcucHJvdG90eXBlLmNhblNob3dDb250ZW50Vmlld0ZvclRyZWVFbGVt
ZW50KHRyZWVFbGVtZW50KTsKLSAgICB9LAorICAgICAgICByZXR1cm4gc3VwZXIuY2FuU2hvd0Nv
bnRlbnRWaWV3Rm9yVHJlZUVsZW1lbnQodHJlZUVsZW1lbnQpOworICAgIH0KIAotICAgIHNob3dD
b250ZW50Vmlld0ZvclRyZWVFbGVtZW50OiBmdW5jdGlvbih0cmVlRWxlbWVudCkKKyAgICBzaG93
Q29udGVudFZpZXdGb3JUcmVlRWxlbWVudCh0cmVlRWxlbWVudCkKICAgICB7CiAgICAgICAgIGlm
ICh0cmVlRWxlbWVudCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Qcm9maWxlTm9kZVRyZWVFbGVt
ZW50KSB7CiAgICAgICAgICAgICBpZiAodHJlZUVsZW1lbnQucHJvZmlsZU5vZGUuc291cmNlQ29k
ZUxvY2F0aW9uKQpAQCAtMTg2LDMzICsxODEsMzMgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdFRpbWVs
aW5lVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAot
ICAgICAgICBXZWJJbnNwZWN0b3IuVGltZWxpbmVWaWV3LnByb3RvdHlwZS5zaG93Q29udGVudFZp
ZXdGb3JUcmVlRWxlbWVudC5jYWxsKHRoaXMsIHRyZWVFbGVtZW50KTsKLSAgICB9LAorICAgICAg
ICBzdXBlci5zaG93Q29udGVudFZpZXdGb3JUcmVlRWxlbWVudCh0cmVlRWxlbWVudCk7CisgICAg
fQogCi0gICAgdHJlZUVsZW1lbnRQYXRoQ29tcG9uZW50U2VsZWN0ZWQ6IGZ1bmN0aW9uKGV2ZW50
KQorICAgIHRyZWVFbGVtZW50UGF0aENvbXBvbmVudFNlbGVjdGVkKGV2ZW50KQogICAgIHsKICAg
ICAgICAgdmFyIGRhdGFHcmlkTm9kZSA9IHRoaXMuX2RhdGFHcmlkLmRhdGFHcmlkTm9kZUZvclRy
ZWVFbGVtZW50KGV2ZW50LmRhdGEucGF0aENvbXBvbmVudC5nZW5lcmFsVHJlZUVsZW1lbnQpOwog
ICAgICAgICBpZiAoIWRhdGFHcmlkTm9kZSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
ZGF0YUdyaWROb2RlLnJldmVhbEFuZFNlbGVjdCgpOwotICAgIH0sCisgICAgfQogCi0gICAgdHJl
ZUVsZW1lbnRTZWxlY3RlZDogZnVuY3Rpb24odHJlZUVsZW1lbnQsIHNlbGVjdGVkQnlVc2VyKQor
ICAgIHRyZWVFbGVtZW50U2VsZWN0ZWQodHJlZUVsZW1lbnQsIHNlbGVjdGVkQnlVc2VyKQogICAg
IHsKICAgICAgICAgaWYgKHRoaXMuX2RhdGFHcmlkLnNob3VsZElnbm9yZVNlbGVjdGlvbkV2ZW50
KCkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgV2ViSW5zcGVjdG9yLlRpbWVsaW5l
Vmlldy5wcm90b3R5cGUudHJlZUVsZW1lbnRTZWxlY3RlZC5jYWxsKHRoaXMsIHRyZWVFbGVtZW50
LCBzZWxlY3RlZEJ5VXNlcik7Ci0gICAgfSwKKyAgICAgICAgc3VwZXIudHJlZUVsZW1lbnRTZWxl
Y3RlZCh0cmVlRWxlbWVudCwgc2VsZWN0ZWRCeVVzZXIpOworICAgIH0KIAotICAgIGRhdGFHcmlk
Tm9kZUZvclRyZWVFbGVtZW50OiBmdW5jdGlvbih0cmVlRWxlbWVudCkKKyAgICBkYXRhR3JpZE5v
ZGVGb3JUcmVlRWxlbWVudCh0cmVlRWxlbWVudCkKICAgICB7CiAgICAgICAgIGlmICh0cmVlRWxl
bWVudCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Qcm9maWxlTm9kZVRyZWVFbGVtZW50KQogICAg
ICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuUHJvZmlsZU5vZGVEYXRhR3JpZE5vZGUo
dHJlZUVsZW1lbnQucHJvZmlsZU5vZGUsIHRoaXMuemVyb1RpbWUsIHRoaXMuc3RhcnRUaW1lLCB0
aGlzLmVuZFRpbWUpOwogICAgICAgICByZXR1cm4gbnVsbDsKLSAgICB9LAorICAgIH0KIAotICAg
IHBvcHVsYXRlUHJvZmlsZU5vZGVUcmVlRWxlbWVudDogZnVuY3Rpb24odHJlZUVsZW1lbnQpCisg
ICAgcG9wdWxhdGVQcm9maWxlTm9kZVRyZWVFbGVtZW50KHRyZWVFbGVtZW50KQogICAgIHsKICAg
ICAgICAgdmFyIHplcm9UaW1lID0gdGhpcy56ZXJvVGltZTsKICAgICAgICAgdmFyIHN0YXJ0VGlt
ZSA9IHRoaXMuc3RhcnRUaW1lOwpAQCAtMjIzLDExICsyMTgsMTEgQEAgV2ViSW5zcGVjdG9yLlNj
cmlwdFRpbWVsaW5lVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB2YXIgcHJvZmlsZU5v
ZGVEYXRhR3JpZE5vZGUgPSBuZXcgV2ViSW5zcGVjdG9yLlByb2ZpbGVOb2RlRGF0YUdyaWROb2Rl
KGNoaWxkUHJvZmlsZU5vZGUsIHplcm9UaW1lLCBzdGFydFRpbWUsIGVuZFRpbWUpOwogICAgICAg
ICAgICAgdGhpcy5fZGF0YUdyaWQuYWRkUm93SW5Tb3J0T3JkZXIocHJvZmlsZU5vZGVUcmVlRWxl
bWVudCwgcHJvZmlsZU5vZGVEYXRhR3JpZE5vZGUsIHRyZWVFbGVtZW50KTsKICAgICAgICAgfQot
ICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJpdmF0ZQogCi0gICAgX3Byb2Nlc3NQZW5kaW5nUmVj
b3JkczogZnVuY3Rpb24oKQorICAgIF9wcm9jZXNzUGVuZGluZ1JlY29yZHMoKQogICAgIHsKICAg
ICAgICAgaWYgKCF0aGlzLl9wZW5kaW5nUmVjb3Jkcy5sZW5ndGgpCiAgICAgICAgICAgICByZXR1
cm47CkBAIC0yNTYsOSArMjUxLDkgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdFRpbWVsaW5lVmlldy5w
cm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICB0aGlzLl9wZW5kaW5nUmVjb3JkcyA9
IFtdOwotICAgIH0sCisgICAgfQogCi0gICAgX3NjcmlwdFRpbWVsaW5lUmVjb3JkQWRkZWQ6IGZ1
bmN0aW9uKGV2ZW50KQorICAgIF9zY3JpcHRUaW1lbGluZVJlY29yZEFkZGVkKGV2ZW50KQogICAg
IHsKICAgICAgICAgdmFyIHNjcmlwdFRpbWVsaW5lUmVjb3JkID0gZXZlbnQuZGF0YS5yZWNvcmQ7
CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHNjcmlwdFRpbWVsaW5lUmVjb3JkIGluc3RhbmNlb2Yg
V2ViSW5zcGVjdG9yLlNjcmlwdFRpbWVsaW5lUmVjb3JkKTsKQEAgLTI2NiwxNCArMjYxLDE0IEBA
IFdlYkluc3BlY3Rvci5TY3JpcHRUaW1lbGluZVZpZXcucHJvdG90eXBlID0gewogICAgICAgICB0
aGlzLl9wZW5kaW5nUmVjb3Jkcy5wdXNoKHNjcmlwdFRpbWVsaW5lUmVjb3JkKTsKIAogICAgICAg
ICB0aGlzLm5lZWRzTGF5b3V0KCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZGF0YUdyaWRGaWx0
ZXJzRGlkQ2hhbmdlOiBmdW5jdGlvbihldmVudCkKKyAgICBfZGF0YUdyaWRGaWx0ZXJzRGlkQ2hh
bmdlKGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy50aW1lbGluZVNpZGViYXJQYW5lbC51cGRh
dGVGaWx0ZXIoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9kYXRhR3JpZE5vZGVTZWxlY3RlZDog
ZnVuY3Rpb24oZXZlbnQpCisgICAgX2RhdGFHcmlkTm9kZVNlbGVjdGVkKGV2ZW50KQogICAgIHsK
ICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkNvbnRl
bnRWaWV3LkV2ZW50LlNlbGVjdGlvblBhdGhDb21wb25lbnRzRGlkQ2hhbmdlKTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1l
bGluZU92ZXJ2aWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvVGltZWxpbmVPdmVydmlldy5qcwppbmRleCAzZTY2ZmYxNzExMDM5Y2FjODc1ZmU3YjcyNWJi
MTBhODBmNWNmMTY2Li5iZTQxNGFiNWNmMTlhN2JjNDYyMmE2MWE3MWY4NGQyNjRjZTU0ZDc4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1l
bGluZU92ZXJ2aWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL1RpbWVsaW5lT3ZlcnZpZXcuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDk1ICsyMyw4NSBAQAogICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2
aWV3ID0gZnVuY3Rpb24oaWRlbnRpZmllciwgdGltZWxpbmVSZWNvcmRpbmcsIG1pbmltdW1EdXJh
dGlvblBlclBpeGVsLCBtYXhpbXVtRHVyYXRpb25QZXJQaXhlbCwgZGVmYXVsdFNldHRpbmdzVmFs
dWVzKQorV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXcgPSBjbGFzcyBUaW1lbGluZU92ZXJ2
aWV3IGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogewotICAgIC8vIEZJWE1FOiBDb252ZXJ0
IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigp
LgotICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKLQotICAgIHRoaXMuX3Jl
Y29yZGluZyA9IHRpbWVsaW5lUmVjb3JkaW5nOwotICAgIHRoaXMuX3JlY29yZGluZy5hZGRFdmVu
dExpc3RlbmVyKFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZGluZy5FdmVudC5UaW1lbGluZUFk
ZGVkLCB0aGlzLl90aW1lbGluZUFkZGVkLCB0aGlzKTsKLSAgICB0aGlzLl9yZWNvcmRpbmcuYWRk
RXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRpbmcuRXZlbnQuVGltZWxp
bmVSZW1vdmVkLCB0aGlzLl90aW1lbGluZVJlbW92ZWQsIHRoaXMpOwotCi0gICAgdGhpcy5fZWxl
bWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgIHRoaXMuX2VsZW1lbnQu
Y2xhc3NMaXN0LmFkZCgidGltZWxpbmUtb3ZlcnZpZXciLCBpZGVudGlmaWVyKTsKLSAgICB0aGlz
Ll9lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIndoZWVsIiwgdGhpcy5faGFuZGxlV2hlZWxFdmVu
dC5iaW5kKHRoaXMpKTsKLQotICAgIHRoaXMuX2dyYXBoc0NvbnRhaW5lckVsZW1lbnQgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICB0aGlzLl9ncmFwaHNDb250YWluZXJFbGVt
ZW50LmNsYXNzTmFtZSA9ICJncmFwaHMtY29udGFpbmVyIjsKLSAgICB0aGlzLl9lbGVtZW50LmFw
cGVuZENoaWxkKHRoaXMuX2dyYXBoc0NvbnRhaW5lckVsZW1lbnQpOwotCi0gICAgdGhpcy5fdGlt
ZWxpbmVPdmVydmlld0dyYXBoc01hcCA9IG5ldyBNYXA7Ci0KLSAgICB0aGlzLl90aW1lbGluZVJ1
bGVyID0gbmV3IFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyOwotICAgIHRoaXMuX3RpbWVsaW5l
UnVsZXIuYWxsb3dzQ2xpcHBlZExhYmVscyA9IHRydWU7Ci0gICAgdGhpcy5fdGltZWxpbmVSdWxl
ci5hbGxvd3NUaW1lUmFuZ2VTZWxlY3Rpb24gPSB0cnVlOwotICAgIHRoaXMuX3RpbWVsaW5lUnVs
ZXIuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCB0aGlzLl90aW1lbGluZVJ1
bGVyTW91c2VEb3duLmJpbmQodGhpcykpOwotICAgIHRoaXMuX3RpbWVsaW5lUnVsZXIuZWxlbWVu
dC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX3RpbWVsaW5lUnVsZXJNb3VzZUNsaWNr
ZWQuYmluZCh0aGlzKSk7Ci0gICAgdGhpcy5fdGltZWxpbmVSdWxlci5hZGRFdmVudExpc3RlbmVy
KFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyLkV2ZW50LlRpbWVSYW5nZVNlbGVjdGlvbkNoYW5n
ZWQsIHRoaXMuX3RpbWVSYW5nZVNlbGVjdGlvbkNoYW5nZWQsIHRoaXMpOwotICAgIHRoaXMuX2Vs
ZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fdGltZWxpbmVSdWxlci5lbGVtZW50KTsKLQotICAgIHRo
aXMuX2N1cnJlbnRUaW1lTWFya2VyID0gbmV3IFdlYkluc3BlY3Rvci5UaW1lbGluZU1hcmtlcigw
LCBXZWJJbnNwZWN0b3IuVGltZWxpbmVNYXJrZXIuVHlwZS5DdXJyZW50VGltZSk7Ci0gICAgdGhp
cy5fdGltZWxpbmVSdWxlci5hZGRNYXJrZXIodGhpcy5fY3VycmVudFRpbWVNYXJrZXIpOwotCi0g
ICAgdGhpcy5fc2Nyb2xsQ29udGFpbmVyRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImRpdiIpOwotICAgIHRoaXMuX3Njcm9sbENvbnRhaW5lckVsZW1lbnQuY2xhc3NOYW1lID0gInNj
cm9sbC1jb250YWluZXIiOwotICAgIHRoaXMuX3Njcm9sbENvbnRhaW5lckVsZW1lbnQuYWRkRXZl
bnRMaXN0ZW5lcigic2Nyb2xsIiwgdGhpcy5faGFuZGxlU2Nyb2xsRXZlbnQuYmluZCh0aGlzKSk7
Ci0gICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9zY3JvbGxDb250YWluZXJFbGVt
ZW50KTsKLQotICAgIHRoaXMuX3Njcm9sbFdpZHRoU2l6ZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJkaXYiKTsKLSAgICB0aGlzLl9zY3JvbGxXaWR0aFNpemVyLmNsYXNzTmFtZSA9ICJzY3Jv
bGwtd2lkdGgtc2l6ZXIiOwotICAgIHRoaXMuX3Njcm9sbENvbnRhaW5lckVsZW1lbnQuYXBwZW5k
Q2hpbGQodGhpcy5fc2Nyb2xsV2lkdGhTaXplcik7Ci0KLSAgICB0aGlzLl9kZWZhdWx0U2V0dGlu
Z3NWYWx1ZXMgPSBkZWZhdWx0U2V0dGluZ3NWYWx1ZXM7Ci0gICAgdGhpcy5fZHVyYXRpb25QZXJQ
aXhlbFNldHRpbmcgPSBuZXcgV2ViSW5zcGVjdG9yLlNldHRpbmcoaWRlbnRpZmllciArICItdGlt
ZWxpbmUtb3ZlcnZpZXctZHVyYXRpb24tcGVyLXBpeGVsIiwgdGhpcy5fZGVmYXVsdFNldHRpbmdz
VmFsdWVzLmR1cmF0aW9uUGVyUGl4ZWwpOwotICAgIHRoaXMuX3NlbGVjdGlvblN0YXJ0VmFsdWVT
ZXR0aW5nID0gbmV3IFdlYkluc3BlY3Rvci5TZXR0aW5nKGlkZW50aWZpZXIgKyAiLXRpbWVsaW5l
LW92ZXJ2aWV3LXNlbGVjdGlvbi1zdGFydC12YWx1ZSIsIHRoaXMuX2RlZmF1bHRTZXR0aW5nc1Zh
bHVlcy5zZWxlY3Rpb25TdGFydFZhbHVlKTsKLSAgICB0aGlzLl9zZWxlY3Rpb25EdXJhdGlvblNl
dHRpbmcgPSBuZXcgV2ViSW5zcGVjdG9yLlNldHRpbmcoaWRlbnRpZmllciArICItdGltZWxpbmUt
b3ZlcnZpZXctc2VsZWN0aW9uLWR1cmF0aW9uIiwgdGhpcy5fZGVmYXVsdFNldHRpbmdzVmFsdWVz
LnNlbGVjdGlvbkR1cmF0aW9uKTsKLQotICAgIHRoaXMuX3N0YXJ0VGltZSA9IDA7Ci0gICAgdGhp
cy5fY3VycmVudFRpbWUgPSAwOwotICAgIHRoaXMuX3JldmVhbEN1cnJlbnRUaW1lID0gZmFsc2U7
Ci0gICAgdGhpcy5fZW5kVGltZSA9IDA7Ci0gICAgdGhpcy5fbWluaW11bUR1cmF0aW9uUGVyUGl4
ZWwgPSBtaW5pbXVtRHVyYXRpb25QZXJQaXhlbDsKLSAgICB0aGlzLl9tYXhpbXVtRHVyYXRpb25Q
ZXJQaXhlbCA9IG1heGltdW1EdXJhdGlvblBlclBpeGVsOwotICAgIHRoaXMuX2R1cmF0aW9uUGVy
UGl4ZWwgPSBNYXRoLm1pbih0aGlzLl9tYXhpbXVtRHVyYXRpb25QZXJQaXhlbCwgTWF0aC5tYXgo
dGhpcy5fbWluaW11bUR1cmF0aW9uUGVyUGl4ZWwsIHRoaXMuX2R1cmF0aW9uUGVyUGl4ZWxTZXR0
aW5nLnZhbHVlKSk7Ci0gICAgdGhpcy5fcGl4ZWxBbGlnbkR1cmF0aW9uID0gZmFsc2U7Ci0gICAg
dGhpcy5fbW91c2VXaGVlbERlbHRhID0gMDsKLSAgICB0aGlzLl9zY3JvbGxTdGFydFRpbWUgPSAw
OwotICAgIHRoaXMuX2NhY2hlZFNjcm9sbENvbnRhaW5lcldpZHRoID0gTmFOOwotICAgIHRoaXMu
X3RpbWVsaW5lUnVsZXJTZWxlY3Rpb25DaGFuZ2VkID0gZmFsc2U7Ci0KLSAgICB0aGlzLnNlbGVj
dGlvblN0YXJ0VGltZSA9IHRoaXMuX3NlbGVjdGlvblN0YXJ0VmFsdWVTZXR0aW5nLnZhbHVlOwot
ICAgIHRoaXMuc2VsZWN0aW9uRHVyYXRpb24gPSB0aGlzLl9zZWxlY3Rpb25EdXJhdGlvblNldHRp
bmcudmFsdWU7Ci0KLSAgICBmb3IgKHZhciB0aW1lbGluZSBvZiB0aGlzLl9yZWNvcmRpbmcudGlt
ZWxpbmVzLnZhbHVlcygpKQotICAgICAgICB0aGlzLl90aW1lbGluZUFkZGVkKHRpbWVsaW5lKTsK
LQotICAgIGlmICghV2ViSW5zcGVjdG9yLnRpbWVsaW5lTWFuYWdlci5pc0NhcHR1cmluZ1BhZ2VS
ZWxvYWQoKSkKLSAgICAgICAgdGhpcy5fcmVzZXRTZWxlY3Rpb24oKTsKLX07CisgICAgY29uc3Ry
dWN0b3IoaWRlbnRpZmllciwgdGltZWxpbmVSZWNvcmRpbmcsIG1pbmltdW1EdXJhdGlvblBlclBp
eGVsLCBtYXhpbXVtRHVyYXRpb25QZXJQaXhlbCwgZGVmYXVsdFNldHRpbmdzVmFsdWVzKQorICAg
IHsKKyAgICAgICAgc3VwZXIoKTsKKworICAgICAgICB0aGlzLl9yZWNvcmRpbmcgPSB0aW1lbGlu
ZVJlY29yZGluZzsKKyAgICAgICAgdGhpcy5fcmVjb3JkaW5nLmFkZEV2ZW50TGlzdGVuZXIoV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkaW5nLkV2ZW50LlRpbWVsaW5lQWRkZWQsIHRoaXMuX3Rp
bWVsaW5lQWRkZWQsIHRoaXMpOworICAgICAgICB0aGlzLl9yZWNvcmRpbmcuYWRkRXZlbnRMaXN0
ZW5lcihXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRpbmcuRXZlbnQuVGltZWxpbmVSZW1vdmVk
LCB0aGlzLl90aW1lbGluZVJlbW92ZWQsIHRoaXMpOworCisgICAgICAgIHRoaXMuX2VsZW1lbnQg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgdGhpcy5fZWxlbWVudC5j
bGFzc0xpc3QuYWRkKCJ0aW1lbGluZS1vdmVydmlldyIsIGlkZW50aWZpZXIpOworICAgICAgICB0
aGlzLl9lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIndoZWVsIiwgdGhpcy5faGFuZGxlV2hlZWxF
dmVudC5iaW5kKHRoaXMpKTsKKworICAgICAgICB0aGlzLl9ncmFwaHNDb250YWluZXJFbGVtZW50
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIHRoaXMuX2dyYXBoc0Nv
bnRhaW5lckVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiZ3JhcGhzLWNvbnRhaW5lciIpOworICAgICAg
ICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2dyYXBoc0NvbnRhaW5lckVsZW1lbnQp
OworCisgICAgICAgIHRoaXMuX3RpbWVsaW5lT3ZlcnZpZXdHcmFwaHNNYXAgPSBuZXcgTWFwOwor
CisgICAgICAgIHRoaXMuX3RpbWVsaW5lUnVsZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlRpbWVsaW5l
UnVsZXI7CisgICAgICAgIHRoaXMuX3RpbWVsaW5lUnVsZXIuYWxsb3dzQ2xpcHBlZExhYmVscyA9
IHRydWU7CisgICAgICAgIHRoaXMuX3RpbWVsaW5lUnVsZXIuYWxsb3dzVGltZVJhbmdlU2VsZWN0
aW9uID0gdHJ1ZTsKKyAgICAgICAgdGhpcy5fdGltZWxpbmVSdWxlci5lbGVtZW50LmFkZEV2ZW50
TGlzdGVuZXIoIm1vdXNlZG93biIsIHRoaXMuX3RpbWVsaW5lUnVsZXJNb3VzZURvd24uYmluZCh0
aGlzKSk7CisgICAgICAgIHRoaXMuX3RpbWVsaW5lUnVsZXIuZWxlbWVudC5hZGRFdmVudExpc3Rl
bmVyKCJjbGljayIsIHRoaXMuX3RpbWVsaW5lUnVsZXJNb3VzZUNsaWNrZWQuYmluZCh0aGlzKSk7
CisgICAgICAgIHRoaXMuX3RpbWVsaW5lUnVsZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0
b3IuVGltZWxpbmVSdWxlci5FdmVudC5UaW1lUmFuZ2VTZWxlY3Rpb25DaGFuZ2VkLCB0aGlzLl90
aW1lUmFuZ2VTZWxlY3Rpb25DaGFuZ2VkLCB0aGlzKTsKKyAgICAgICAgdGhpcy5fZWxlbWVudC5h
cHBlbmRDaGlsZCh0aGlzLl90aW1lbGluZVJ1bGVyLmVsZW1lbnQpOworCisgICAgICAgIHRoaXMu
X2N1cnJlbnRUaW1lTWFya2VyID0gbmV3IFdlYkluc3BlY3Rvci5UaW1lbGluZU1hcmtlcigwLCBX
ZWJJbnNwZWN0b3IuVGltZWxpbmVNYXJrZXIuVHlwZS5DdXJyZW50VGltZSk7CisgICAgICAgIHRo
aXMuX3RpbWVsaW5lUnVsZXIuYWRkTWFya2VyKHRoaXMuX2N1cnJlbnRUaW1lTWFya2VyKTsKKwor
ICAgICAgICB0aGlzLl9zY3JvbGxDb250YWluZXJFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiZGl2Iik7CisgICAgICAgIHRoaXMuX3Njcm9sbENvbnRhaW5lckVsZW1lbnQuY2xhc3NM
aXN0LmFkZCgic2Nyb2xsLWNvbnRhaW5lciIpOworICAgICAgICB0aGlzLl9zY3JvbGxDb250YWlu
ZXJFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoInNjcm9sbCIsIHRoaXMuX2hhbmRsZVNjcm9sbEV2
ZW50LmJpbmQodGhpcykpOworICAgICAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMu
X3Njcm9sbENvbnRhaW5lckVsZW1lbnQpOworCisgICAgICAgIHRoaXMuX3Njcm9sbFdpZHRoU2l6
ZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgdGhpcy5fc2Nyb2xs
V2lkdGhTaXplci5jbGFzc0xpc3QuYWRkKCJzY3JvbGwtd2lkdGgtc2l6ZXIiKTsKKyAgICAgICAg
dGhpcy5fc2Nyb2xsQ29udGFpbmVyRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9zY3JvbGxXaWR0
aFNpemVyKTsKKworICAgICAgICB0aGlzLl9kZWZhdWx0U2V0dGluZ3NWYWx1ZXMgPSBkZWZhdWx0
U2V0dGluZ3NWYWx1ZXM7CisgICAgICAgIHRoaXMuX2R1cmF0aW9uUGVyUGl4ZWxTZXR0aW5nID0g
bmV3IFdlYkluc3BlY3Rvci5TZXR0aW5nKGlkZW50aWZpZXIgKyAiLXRpbWVsaW5lLW92ZXJ2aWV3
LWR1cmF0aW9uLXBlci1waXhlbCIsIHRoaXMuX2RlZmF1bHRTZXR0aW5nc1ZhbHVlcy5kdXJhdGlv
blBlclBpeGVsKTsKKyAgICAgICAgdGhpcy5fc2VsZWN0aW9uU3RhcnRWYWx1ZVNldHRpbmcgPSBu
ZXcgV2ViSW5zcGVjdG9yLlNldHRpbmcoaWRlbnRpZmllciArICItdGltZWxpbmUtb3ZlcnZpZXct
c2VsZWN0aW9uLXN0YXJ0LXZhbHVlIiwgdGhpcy5fZGVmYXVsdFNldHRpbmdzVmFsdWVzLnNlbGVj
dGlvblN0YXJ0VmFsdWUpOworICAgICAgICB0aGlzLl9zZWxlY3Rpb25EdXJhdGlvblNldHRpbmcg
PSBuZXcgV2ViSW5zcGVjdG9yLlNldHRpbmcoaWRlbnRpZmllciArICItdGltZWxpbmUtb3ZlcnZp
ZXctc2VsZWN0aW9uLWR1cmF0aW9uIiwgdGhpcy5fZGVmYXVsdFNldHRpbmdzVmFsdWVzLnNlbGVj
dGlvbkR1cmF0aW9uKTsKKworICAgICAgICB0aGlzLl9zdGFydFRpbWUgPSAwOworICAgICAgICB0
aGlzLl9jdXJyZW50VGltZSA9IDA7CisgICAgICAgIHRoaXMuX3JldmVhbEN1cnJlbnRUaW1lID0g
ZmFsc2U7CisgICAgICAgIHRoaXMuX2VuZFRpbWUgPSAwOworICAgICAgICB0aGlzLl9taW5pbXVt
RHVyYXRpb25QZXJQaXhlbCA9IG1pbmltdW1EdXJhdGlvblBlclBpeGVsOworICAgICAgICB0aGlz
Ll9tYXhpbXVtRHVyYXRpb25QZXJQaXhlbCA9IG1heGltdW1EdXJhdGlvblBlclBpeGVsOworICAg
ICAgICB0aGlzLl9kdXJhdGlvblBlclBpeGVsID0gTWF0aC5taW4odGhpcy5fbWF4aW11bUR1cmF0
aW9uUGVyUGl4ZWwsIE1hdGgubWF4KHRoaXMuX21pbmltdW1EdXJhdGlvblBlclBpeGVsLCB0aGlz
Ll9kdXJhdGlvblBlclBpeGVsU2V0dGluZy52YWx1ZSkpOworICAgICAgICB0aGlzLl9waXhlbEFs
aWduRHVyYXRpb24gPSBmYWxzZTsKKyAgICAgICAgdGhpcy5fbW91c2VXaGVlbERlbHRhID0gMDsK
KyAgICAgICAgdGhpcy5fc2Nyb2xsU3RhcnRUaW1lID0gMDsKKyAgICAgICAgdGhpcy5fY2FjaGVk
U2Nyb2xsQ29udGFpbmVyV2lkdGggPSBOYU47CisgICAgICAgIHRoaXMuX3RpbWVsaW5lUnVsZXJT
ZWxlY3Rpb25DaGFuZ2VkID0gZmFsc2U7CiAKLVdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3
LlNjcm9sbERlbHRhRGVub21pbmF0b3IgPSA1MDA7CisgICAgICAgIHRoaXMuc2VsZWN0aW9uU3Rh
cnRUaW1lID0gdGhpcy5fc2VsZWN0aW9uU3RhcnRWYWx1ZVNldHRpbmcudmFsdWU7CisgICAgICAg
IHRoaXMuc2VsZWN0aW9uRHVyYXRpb24gPSB0aGlzLl9zZWxlY3Rpb25EdXJhdGlvblNldHRpbmcu
dmFsdWU7CiAKLVdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3LkV2ZW50ID0gewotICAgIFJl
Y29yZFNlbGVjdGVkOiAidGltZWxpbmUtb3ZlcnZpZXctcmVjb3JkLXNlbGVjdGVkIiwKLSAgICBU
aW1lUmFuZ2VTZWxlY3Rpb25DaGFuZ2VkOiAidGltZWxpbmUtb3ZlcnZpZXctdGltZS1yYW5nZS1z
ZWxlY3Rpb24tY2hhbmdlZCIKLX07CisgICAgICAgIGZvciAodmFyIHRpbWVsaW5lIG9mIHRoaXMu
X3JlY29yZGluZy50aW1lbGluZXMudmFsdWVzKCkpCisgICAgICAgICAgICB0aGlzLl90aW1lbGlu
ZUFkZGVkKHRpbWVsaW5lKTsKIAotV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXcucHJvdG90
eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlldywK
LSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlLAorICAgICAgICBp
ZiAoIVdlYkluc3BlY3Rvci50aW1lbGluZU1hbmFnZXIuaXNDYXB0dXJpbmdQYWdlUmVsb2FkKCkp
CisgICAgICAgICAgICB0aGlzLl9yZXNldFNlbGVjdGlvbigpOworICAgIH0KIAogICAgIC8vIFB1
YmxpYwogCiAgICAgZ2V0IGVsZW1lbnQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2Vs
ZW1lbnQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgc3RhcnRUaW1lKCkKICAgICB7CiAgICAg
ICAgIHJldHVybiB0aGlzLl9zdGFydFRpbWU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgc3Rh
cnRUaW1lKHgpCiAgICAgewpAQCAtMTIxLDEyICsxMTEsMTIgQEAgV2ViSW5zcGVjdG9yLlRpbWVs
aW5lT3ZlcnZpZXcucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9zdGFydFRpbWUgPSB4IHx8
IDA7CiAKICAgICAgICAgdGhpcy5fbmVlZHNMYXlvdXQoKTsKLSAgICB9LAorICAgIH0KIAogICAg
IGdldCBjdXJyZW50VGltZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fY3VycmVudFRp
bWU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgY3VycmVudFRpbWUoeCkKICAgICB7CkBAIC0x
MzcsMTIgKzEyNywxMiBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlldy5wcm90b3R5cGUg
PSB7CiAgICAgICAgIHRoaXMuX3JldmVhbEN1cnJlbnRUaW1lID0gdHJ1ZTsKIAogICAgICAgICB0
aGlzLl9uZWVkc0xheW91dCgpOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHNlY29uZHNQZXJQ
aXhlbCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZHVyYXRpb25QZXJQaXhlbDsKLSAg
ICB9LAorICAgIH0KIAogICAgIHNldCBzZWNvbmRzUGVyUGl4ZWwoeCkKICAgICB7CkBAIC0xNjEs
MTIgKzE1MSwxMiBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlldy5wcm90b3R5cGUgPSB7
CiAgICAgICAgIHRoaXMuX2R1cmF0aW9uUGVyUGl4ZWxTZXR0aW5nLnZhbHVlID0geDsKIAogICAg
ICAgICB0aGlzLl9uZWVkc0xheW91dCgpOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHBpeGVs
QWxpZ25EdXJhdGlvbigpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fcGl4ZWxBbGlnbkR1
cmF0aW9uOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IHBpeGVsQWxpZ25EdXJhdGlvbih4KQog
ICAgIHsKQEAgLTE3NywxMiArMTY3LDEyIEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3
LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fcGl4ZWxBbGlnbkR1cmF0aW9uID0geDsKICAg
ICAgICAgaWYgKHRoaXMuX3BpeGVsQWxpZ25EdXJhdGlvbikKICAgICAgICAgICAgIHRoaXMuc2Vj
b25kc1BlclBpeGVsID0gMSAvIE1hdGgucm91bmQoMSAvIHRoaXMuX2R1cmF0aW9uUGVyUGl4ZWwp
OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGVuZFRpbWUoKQogICAgIHsKICAgICAgICAgcmV0
dXJuIHRoaXMuX2VuZFRpbWU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgZW5kVGltZSh4KQog
ICAgIHsKQEAgLTE5MiwxMiArMTgyLDEyIEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3
LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fZW5kVGltZSA9IHggfHwgMDsKIAogICAgICAg
ICB0aGlzLl9uZWVkc0xheW91dCgpOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHNjcm9sbFN0
YXJ0VGltZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fc2Nyb2xsU3RhcnRUaW1lOwot
ICAgIH0sCisgICAgfQogCiAgICAgc2V0IHNjcm9sbFN0YXJ0VGltZSh4KQogICAgIHsKQEAgLTIw
Nyw3ICsxOTcsNyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlldy5wcm90b3R5cGUgPSB7
CiAgICAgICAgIHRoaXMuX3Njcm9sbFN0YXJ0VGltZSA9IHggfHwgMDsKIAogICAgICAgICB0aGlz
Ll9uZWVkc0xheW91dCgpOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHZpc2libGVEdXJhdGlv
bigpCiAgICAgewpAQCAtMjE4LDEyICsyMDgsMTIgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3Zl
cnZpZXcucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIHRoaXMuX2Nh
Y2hlZFNjcm9sbENvbnRhaW5lcldpZHRoICogdGhpcy5fZHVyYXRpb25QZXJQaXhlbDsKLSAgICB9
LAorICAgIH0KIAogICAgIGdldCBzZWxlY3Rpb25TdGFydFRpbWUoKQogICAgIHsKICAgICAgICAg
cmV0dXJuIHRoaXMuX3RpbWVsaW5lUnVsZXIuc2VsZWN0aW9uU3RhcnRUaW1lOwotICAgIH0sCisg
ICAgfQogCiAgICAgc2V0IHNlbGVjdGlvblN0YXJ0VGltZSh4KQogICAgIHsKQEAgLTIzMiwyNiAr
MjIyLDI2IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3LnByb3RvdHlwZSA9IHsKICAg
ICAgICAgdmFyIHNlbGVjdGlvbkR1cmF0aW9uID0gdGhpcy5zZWxlY3Rpb25EdXJhdGlvbjsKICAg
ICAgICAgdGhpcy5fdGltZWxpbmVSdWxlci5zZWxlY3Rpb25TdGFydFRpbWUgPSB4OwogICAgICAg
ICB0aGlzLl90aW1lbGluZVJ1bGVyLnNlbGVjdGlvbkVuZFRpbWUgPSB4ICsgc2VsZWN0aW9uRHVy
YXRpb247Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgc2VsZWN0aW9uRHVyYXRpb24oKQogICAg
IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3RpbWVsaW5lUnVsZXIuc2VsZWN0aW9uRW5kVGltZSAt
IHRoaXMuX3RpbWVsaW5lUnVsZXIuc2VsZWN0aW9uU3RhcnRUaW1lOwotICAgIH0sCisgICAgfQog
CiAgICAgc2V0IHNlbGVjdGlvbkR1cmF0aW9uKHgpCiAgICAgewogICAgICAgICB4ID0gTWF0aC5t
YXgodGhpcy5fdGltZWxpbmVSdWxlci5taW5pbXVtU2VsZWN0aW9uRHVyYXRpb24sIHgpOwogCiAg
ICAgICAgIHRoaXMuX3RpbWVsaW5lUnVsZXIuc2VsZWN0aW9uRW5kVGltZSA9IHRoaXMuX3RpbWVs
aW5lUnVsZXIuc2VsZWN0aW9uU3RhcnRUaW1lICsgeDsKLSAgICB9LAorICAgIH0KIAogICAgIGdl
dCB2aXNpYmxlKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl92aXNpYmxlOwotICAgIH0s
CisgICAgfQogCi0gICAgc2hvd246IGZ1bmN0aW9uKCkKKyAgICBzaG93bigpCiAgICAgewogICAg
ICAgICB0aGlzLl92aXNpYmxlID0gdHJ1ZTsKIApAQCAtMjU5LDE3ICsyNDksMTcgQEAgV2ViSW5z
cGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXcucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGltZWxp
bmVPdmVydmlld0dyYXBoLnNob3duKCk7CiAKICAgICAgICAgdGhpcy51cGRhdGVMYXlvdXQoKTsK
LSAgICB9LAorICAgIH0KIAotICAgIGhpZGRlbjogZnVuY3Rpb24oKQorICAgIGhpZGRlbigpCiAg
ICAgewogICAgICAgICB0aGlzLl92aXNpYmxlID0gZmFsc2U7CiAKICAgICAgICAgZm9yICh2YXIg
dGltZWxpbmVPdmVydmlld0dyYXBoIG9mIHRoaXMuX3RpbWVsaW5lT3ZlcnZpZXdHcmFwaHNNYXAu
dmFsdWVzKCkpCiAgICAgICAgICAgICB0aW1lbGluZU92ZXJ2aWV3R3JhcGguaGlkZGVuKCk7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICByZXNldDogZnVuY3Rpb24oKQorICAgIHJlc2V0KCkKICAgICB7
CiAgICAgICAgIGZvciAodmFyIHRpbWVsaW5lT3ZlcnZpZXdHcmFwaCBvZiB0aGlzLl90aW1lbGlu
ZU92ZXJ2aWV3R3JhcGhzTWFwLnZhbHVlcygpKQogICAgICAgICAgICAgdGltZWxpbmVPdmVydmll
d0dyYXBoLnJlc2V0KCk7CkBAIC0yNzcsMTkgKzI2NywxOSBAQCBXZWJJbnNwZWN0b3IuVGltZWxp
bmVPdmVydmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX21vdXNlV2hlZWxEZWx0YSA9
IDA7CiAKICAgICAgICAgdGhpcy5fcmVzZXRTZWxlY3Rpb24oKTsKLSAgICB9LAorICAgIH0KIAot
ICAgIGFkZE1hcmtlcjogZnVuY3Rpb24obWFya2VyKQorICAgIGFkZE1hcmtlcihtYXJrZXIpCiAg
ICAgewogICAgICAgICB0aGlzLl90aW1lbGluZVJ1bGVyLmFkZE1hcmtlcihtYXJrZXIpOwotICAg
IH0sCisgICAgfQogCi0gICAgcmV2ZWFsTWFya2VyOiBmdW5jdGlvbihtYXJrZXIpCisgICAgcmV2
ZWFsTWFya2VyKG1hcmtlcikKICAgICB7CiAgICAgICAgIHRoaXMuc2Nyb2xsU3RhcnRUaW1lID0g
bWFya2VyLnRpbWUgLSAodGhpcy52aXNpYmxlRHVyYXRpb24gLyAyKTsKLSAgICB9LAorICAgIH0K
IAotICAgIHNlbGVjdFJlY29yZDogZnVuY3Rpb24odGltZWxpbmUsIHJlY29yZCkKKyAgICBzZWxl
Y3RSZWNvcmQodGltZWxpbmUsIHJlY29yZCkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0
KHRoaXMuY2FuU2hvd1RpbWVsaW5lKHRpbWVsaW5lKSwgdGltZWxpbmUpOwogCkBAIC0yOTksMTUg
KzI4OSwxNSBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlldy5wcm90b3R5cGUgPSB7CiAg
ICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgb3ZlcnZpZXdHcmFwaC5zZWxlY3RlZFJlY29y
ZCA9IHJlY29yZDsKLSAgICB9LAorICAgIH0KIAotICAgIHVwZGF0ZUxheW91dEZvclJlc2l6ZTog
ZnVuY3Rpb24oKQorICAgIHVwZGF0ZUxheW91dEZvclJlc2l6ZSgpCiAgICAgewogICAgICAgICB0
aGlzLl9jYWNoZWRTY3JvbGxDb250YWluZXJXaWR0aCA9IE5hTjsKICAgICAgICAgdGhpcy51cGRh
dGVMYXlvdXQoKTsKLSAgICB9LAorICAgIH0KIAotICAgIHVwZGF0ZUxheW91dDogZnVuY3Rpb24o
KQorICAgIHVwZGF0ZUxheW91dCgpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fc2NoZWR1bGVk
TGF5b3V0VXBkYXRlSWRlbnRpZmllcikgewogICAgICAgICAgICAgY2FuY2VsQW5pbWF0aW9uRnJh
bWUodGhpcy5fc2NoZWR1bGVkTGF5b3V0VXBkYXRlSWRlbnRpZmllcik7CkBAIC0zNTIsOSArMzQy
LDkgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXcucHJvdG90eXBlID0gewogICAgICAg
ICAgICAgdGltZWxpbmVPdmVydmlld0dyYXBoLmVuZFRpbWUgPSBzY3JvbGxTdGFydFRpbWUgKyB2
aXNpYmxlRHVyYXRpb247CiAgICAgICAgICAgICB0aW1lbGluZU92ZXJ2aWV3R3JhcGgudXBkYXRl
TGF5b3V0KCk7CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0KIAotICAgIHVwZGF0ZUxheW91dElm
TmVlZGVkOiBmdW5jdGlvbigpCisgICAgdXBkYXRlTGF5b3V0SWZOZWVkZWQoKQogICAgIHsKICAg
ICAgICAgaWYgKHRoaXMuX3NjaGVkdWxlZExheW91dFVwZGF0ZUlkZW50aWZpZXIpIHsKICAgICAg
ICAgICAgIHRoaXMudXBkYXRlTGF5b3V0KCk7CkBAIC0zNjUsMzEgKzM1NSwzMSBAQCBXZWJJbnNw
ZWN0b3IuVGltZWxpbmVPdmVydmlldy5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgZm9yICh2YXIg
dGltZWxpbmVPdmVydmlld0dyYXBoIG9mIHRoaXMuX3RpbWVsaW5lT3ZlcnZpZXdHcmFwaHNNYXAu
dmFsdWVzKCkpCiAgICAgICAgICAgICB0aW1lbGluZU92ZXJ2aWV3R3JhcGgudXBkYXRlTGF5b3V0
SWZOZWVkZWQoKTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByb3RlY3RlZAogCiAgICAgZ2V0
IHRpbWVsaW5lUnVsZXIoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3RpbWVsaW5lUnVs
ZXI7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBjYW5TaG93VGltZWxpbmU6IGZ1bmN0aW9uKHRpbWVs
aW5lKQorICAgIGNhblNob3dUaW1lbGluZSh0aW1lbGluZSkKICAgICB7CiAgICAgICAgIC8vIElt
cGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMuCiAgICAgICAgIGNvbnNvbGUuZXJyb3IoIk5lZWRzIHRv
IGJlIGltcGxlbWVudGVkIGJ5IGEgc3ViY2xhc3MuIik7Ci0gICAgfSwKKyAgICB9CiAKICAgICAv
LyBQcml2YXRlCiAKLSAgICBfdXBkYXRlRWxlbWVudFdpZHRoOiBmdW5jdGlvbihlbGVtZW50LCBu
ZXdXaWR0aCkKKyAgICBfdXBkYXRlRWxlbWVudFdpZHRoKGVsZW1lbnQsIG5ld1dpZHRoKQogICAg
IHsKICAgICAgICAgdmFyIGN1cnJlbnRXaWR0aCA9IHBhcnNlSW50KGVsZW1lbnQuc3R5bGUud2lk
dGgpOwogICAgICAgICBpZiAoY3VycmVudFdpZHRoICE9PSBuZXdXaWR0aCkKICAgICAgICAgICAg
IGVsZW1lbnQuc3R5bGUud2lkdGggPSBuZXdXaWR0aCArICJweCI7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBfbmVlZHNMYXlvdXQ6IGZ1bmN0aW9uKCkKKyAgICBfbmVlZHNMYXlvdXQoKQogICAgIHsK
ICAgICAgICAgaWYgKCF0aGlzLl92aXNpYmxlKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzk4
LDkgKzM4OCw5IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3LnByb3RvdHlwZSA9IHsK
ICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICB0aGlzLl9zY2hlZHVsZWRMYXlvdXRVcGRh
dGVJZGVudGlmaWVyID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHRoaXMudXBkYXRlTGF5b3V0LmJp
bmQodGhpcykpOwotICAgIH0sCisgICAgfQogCi0gICAgX2hhbmRsZVNjcm9sbEV2ZW50OiBmdW5j
dGlvbihldmVudCkKKyAgICBfaGFuZGxlU2Nyb2xsRXZlbnQoZXZlbnQpCiAgICAgewogICAgICAg
ICBpZiAodGhpcy5faWdub3JlTmV4dFNjcm9sbEV2ZW50KSB7CiAgICAgICAgICAgICBkZWxldGUg
dGhpcy5faWdub3JlTmV4dFNjcm9sbEV2ZW50OwpAQCAtNDE2LDkgKzQwNiw5IEBAIFdlYkluc3Bl
Y3Rvci5UaW1lbGluZU92ZXJ2aWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy51cGRhdGVM
YXlvdXRJZk5lZWRlZCgpOwogCiAgICAgICAgIGRlbGV0ZSB0aGlzLl9kb250VXBkYXRlU2Nyb2xs
TGVmdDsKLSAgICB9LAorICAgIH0KIAotICAgIF9oYW5kbGVXaGVlbEV2ZW50OiBmdW5jdGlvbihl
dmVudCkKKyAgICBfaGFuZGxlV2hlZWxFdmVudChldmVudCkKICAgICB7CiAgICAgICAgIC8vIEln
bm9yZSBjbG9uZWQgZXZlbnRzIHRoYXQgY29tZSBvdXIgd2F5LCB3ZSBhbHJlYWR5IGhhbmRsZWQg
dGhlIG9yaWdpbmFsLgogICAgICAgICBpZiAoZXZlbnQuX19jbG9uZWQpCkBAIC00NTksOSArNDQ5
LDkgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXcucHJvdG90eXBlID0gewogCiAgICAg
ICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlv
bigpOwotICAgIH0sCisgICAgfQogCi0gICAgX3RpbWVsaW5lQWRkZWQ6IGZ1bmN0aW9uKHRpbWVs
aW5lT3JFdmVudCkKKyAgICBfdGltZWxpbmVBZGRlZCh0aW1lbGluZU9yRXZlbnQpCiAgICAgewog
ICAgICAgICB2YXIgdGltZWxpbmUgPSB0aW1lbGluZU9yRXZlbnQ7CiAgICAgICAgIGlmICghKHRp
bWVsaW5lIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlRpbWVsaW5lKSkKQEAgLTQ3MiwxMyArNDYy
LDEzIEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3LnByb3RvdHlwZSA9IHsKICAgICAg
ICAgaWYgKCF0aGlzLmNhblNob3dUaW1lbGluZSh0aW1lbGluZSkpCiAgICAgICAgICAgICByZXR1
cm47CiAKLSAgICAgICAgdmFyIG92ZXJ2aWV3R3JhcGggPSBuZXcgV2ViSW5zcGVjdG9yLlRpbWVs
aW5lT3ZlcnZpZXdHcmFwaCh0aW1lbGluZSwgdGhpcyk7CisgICAgICAgIHZhciBvdmVydmlld0dy
YXBoID0gV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXdHcmFwaC5jcmVhdGVGb3JUaW1lbGlu
ZSh0aW1lbGluZSwgdGhpcyk7CiAgICAgICAgIG92ZXJ2aWV3R3JhcGguYWRkRXZlbnRMaXN0ZW5l
cihXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlld0dyYXBoLkV2ZW50LlJlY29yZFNlbGVjdGVk
LCB0aGlzLl9yZWNvcmRTZWxlY3RlZCwgdGhpcyk7CiAgICAgICAgIHRoaXMuX3RpbWVsaW5lT3Zl
cnZpZXdHcmFwaHNNYXAuc2V0KHRpbWVsaW5lLCBvdmVydmlld0dyYXBoKTsKICAgICAgICAgdGhp
cy5fZ3JhcGhzQ29udGFpbmVyRWxlbWVudC5hcHBlbmRDaGlsZChvdmVydmlld0dyYXBoLmVsZW1l
bnQpOwotICAgIH0sCisgICAgfQogCi0gICAgX3RpbWVsaW5lUmVtb3ZlZDogZnVuY3Rpb24oZXZl
bnQpCisgICAgX3RpbWVsaW5lUmVtb3ZlZChldmVudCkKICAgICB7CiAgICAgICAgIHZhciB0aW1l
bGluZSA9IGV2ZW50LmRhdGEudGltZWxpbmU7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRpbWVs
aW5lIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlRpbWVsaW5lLCB0aW1lbGluZSk7CkBAIC00OTAs
MTQgKzQ4MCwxNCBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlldy5wcm90b3R5cGUgPSB7
CiAgICAgICAgIHZhciBvdmVydmlld0dyYXBoID0gdGhpcy5fdGltZWxpbmVPdmVydmlld0dyYXBo
c01hcC50YWtlKHRpbWVsaW5lKTsKICAgICAgICAgb3ZlcnZpZXdHcmFwaC5yZW1vdmVFdmVudExp
c3RlbmVyKFdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3R3JhcGguRXZlbnQuUmVjb3JkU2Vs
ZWN0ZWQsIHRoaXMuX3JlY29yZFNlbGVjdGVkLCB0aGlzKTsKICAgICAgICAgdGhpcy5fZ3JhcGhz
Q29udGFpbmVyRWxlbWVudC5yZW1vdmVDaGlsZChvdmVydmlld0dyYXBoLmVsZW1lbnQpOwotICAg
IH0sCisgICAgfQogCi0gICAgX3RpbWVsaW5lUnVsZXJNb3VzZURvd246IGZ1bmN0aW9uKGV2ZW50
KQorICAgIF90aW1lbGluZVJ1bGVyTW91c2VEb3duKGV2ZW50KQogICAgIHsKICAgICAgICAgdGhp
cy5fdGltZWxpbmVSdWxlclNlbGVjdGlvbkNoYW5nZWQgPSBmYWxzZTsKLSAgICB9LAorICAgIH0K
IAotICAgIF90aW1lbGluZVJ1bGVyTW91c2VDbGlja2VkOiBmdW5jdGlvbihldmVudCkKKyAgICBf
dGltZWxpbmVSdWxlck1vdXNlQ2xpY2tlZChldmVudCkKICAgICB7CiAgICAgICAgIGlmICh0aGlz
Ll90aW1lbGluZVJ1bGVyU2VsZWN0aW9uQ2hhbmdlZCkKICAgICAgICAgICAgIHJldHVybjsKQEAg
LTUxMiwzMiArNTAyLDM5IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3LnByb3RvdHlw
ZSA9IHsKICAgICAgICAgICAgIG92ZXJ2aWV3R3JhcGguZWxlbWVudC5kaXNwYXRjaEV2ZW50KG5l
d0NsaWNrRXZlbnQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBfdGltZVJhbmdlU2VsZWN0aW9uQ2hhbmdlZDogZnVuY3Rpb24oZXZlbnQpCisg
ICAgX3RpbWVSYW5nZVNlbGVjdGlvbkNoYW5nZWQoZXZlbnQpCiAgICAgewogICAgICAgICB0aGlz
Ll90aW1lbGluZVJ1bGVyU2VsZWN0aW9uQ2hhbmdlZCA9IHRydWU7CiAgICAgICAgIHRoaXMuX3Nl
bGVjdGlvblN0YXJ0VmFsdWVTZXR0aW5nLnZhbHVlID0gdGhpcy5zZWxlY3Rpb25TdGFydFRpbWUg
LSB0aGlzLl9zdGFydFRpbWU7CiAgICAgICAgIHRoaXMuX3NlbGVjdGlvbkR1cmF0aW9uU2V0dGlu
Zy52YWx1ZSA9IHRoaXMuc2VsZWN0aW9uRHVyYXRpb247CiAKICAgICAgICAgdGhpcy5kaXNwYXRj
aEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXcuRXZlbnQuVGlt
ZVJhbmdlU2VsZWN0aW9uQ2hhbmdlZCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcmVjb3JkU2Vs
ZWN0ZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9yZWNvcmRTZWxlY3RlZChldmVudCkKICAgICB7
Ci0gICAgICAgIGZvciAoW3RpbWVsaW5lLCBvdmVydmlld0dyYXBoXSBvZiB0aGlzLl90aW1lbGlu
ZU92ZXJ2aWV3R3JhcGhzTWFwKSB7CisgICAgICAgIGZvciAodmFyIFt0aW1lbGluZSwgb3ZlcnZp
ZXdHcmFwaF0gb2YgdGhpcy5fdGltZWxpbmVPdmVydmlld0dyYXBoc01hcCkgewogICAgICAgICAg
ICAgaWYgKG92ZXJ2aWV3R3JhcGggIT09IGV2ZW50LnRhcmdldCkKICAgICAgICAgICAgICAgICBj
b250aW51ZTsKIAogICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXcuRXZlbnQuUmVjb3JkU2VsZWN0ZWQsIHt0aW1lbGlu
ZSwgcmVjb3JkOiBldmVudC5kYXRhLnJlY29yZH0pOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcmVzZXRTZWxlY3Rpb246IGZ1bmN0aW9uKCkK
KyAgICBfcmVzZXRTZWxlY3Rpb24oKQogICAgIHsKICAgICAgICAgdGhpcy5zZWNvbmRzUGVyUGl4
ZWwgPSB0aGlzLl9kZWZhdWx0U2V0dGluZ3NWYWx1ZXMuZHVyYXRpb25QZXJQaXhlbDsKICAgICAg
ICAgdGhpcy5zZWxlY3Rpb25TdGFydFRpbWUgPSB0aGlzLl9kZWZhdWx0U2V0dGluZ3NWYWx1ZXMu
c2VsZWN0aW9uU3RhcnRWYWx1ZTsKICAgICAgICAgdGhpcy5zZWxlY3Rpb25EdXJhdGlvbiA9IHRo
aXMuX2RlZmF1bHRTZXR0aW5nc1ZhbHVlcy5zZWxlY3Rpb25EdXJhdGlvbjsKICAgICB9CiB9Owor
CitXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlldy5TY3JvbGxEZWx0YURlbm9taW5hdG9yID0g
NTAwOworCitXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlldy5FdmVudCA9IHsKKyAgICBSZWNv
cmRTZWxlY3RlZDogInRpbWVsaW5lLW92ZXJ2aWV3LXJlY29yZC1zZWxlY3RlZCIsCisgICAgVGlt
ZVJhbmdlU2VsZWN0aW9uQ2hhbmdlZDogInRpbWVsaW5lLW92ZXJ2aWV3LXRpbWUtcmFuZ2Utc2Vs
ZWN0aW9uLWNoYW5nZWQiCit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVPdmVydmlld0dyYXBoLmpzIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVPdmVydmlld0dyYXBoLmpzCmlu
ZGV4IDY5OGY0ZjdmZjIwNTI4Y2M4MDE0NDUwMWQyYTVjMTQ3NjAwYmUzZjkuLmJhZGRjOTk2YzZm
ZGRlYmJmYWQ0OThiMmEwY2IxODdkZDc5ZDA3NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lT3ZlcnZpZXdHcmFwaC5qcworKysg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZU92ZXJ2
aWV3R3JhcGguanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAx
NSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTIzLDEyICsyMywzMiBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3R3JhcGggPSBmdW5j
dGlvbih0aW1lbGluZSwgdGltZWxpbmVPdmVydmlldykKK1dlYkluc3BlY3Rvci5UaW1lbGluZU92
ZXJ2aWV3R3JhcGggPSBjbGFzcyBUaW1lbGluZU92ZXJ2aWV3R3JhcGggZXh0ZW5kcyBXZWJJbnNw
ZWN0b3IuT2JqZWN0CiB7Ci0gICAgaWYgKHRoaXMuY29uc3RydWN0b3IgPT09IFdlYkluc3BlY3Rv
ci5UaW1lbGluZU92ZXJ2aWV3R3JhcGgpIHsKLSAgICAgICAgLy8gV2hlbiBpbnN0YW50aWF0ZWQg
ZGlyZWN0bHkgcmV0dXJuIGFuIGluc3RhbmNlIG9mIGEgdHlwZS1iYXNlZCBjb25jcmV0ZSBzdWJj
bGFzcy4KKyAgICBjb25zdHJ1Y3Rvcih0aW1lbGluZU92ZXJ2aWV3KQorICAgIHsKKyAgICAgICAg
c3VwZXIoKTsKKworICAgICAgICB0aGlzLmVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJkaXYiKTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoInRpbWVsaW5lLW92
ZXJ2aWV3LWdyYXBoIik7CisKKyAgICAgICAgdGhpcy5femVyb1RpbWUgPSAwOworICAgICAgICB0
aGlzLl9zdGFydFRpbWUgPSAwOworICAgICAgICB0aGlzLl9lbmRUaW1lID0gNTsKKyAgICAgICAg
dGhpcy5fY3VycmVudFRpbWUgPSAwOworICAgICAgICB0aGlzLl90aW1lbGluZU92ZXJ2aWV3ID0g
dGltZWxpbmVPdmVydmlldzsKKyAgICAgICAgdGhpcy5fc2VsZWN0ZWRSZWNvcmQgPSBudWxsOwor
ICAgICAgICB0aGlzLl9zZWxlY3RlZFJlY29yZENoYW5nZWQgPSBmYWxzZTsKKyAgICAgICAgdGhp
cy5fc2NoZWR1bGVkTGF5b3V0VXBkYXRlSWRlbnRpZmllciA9IDA7CisgICAgICAgIHRoaXMuX3Nj
aGVkdWxlZFNlbGVjdGVkUmVjb3JkTGF5b3V0VXBkYXRlSWRlbnRpZmllciA9IDA7CisgICAgfQog
Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRpbWVsaW5lICYmIHRpbWVsaW5lIGluc3RhbmNlb2Yg
V2ViSW5zcGVjdG9yLlRpbWVsaW5lKTsKKyAgICAvLyBQdWJsaWMKKworICAgIHN0YXRpYyBjcmVh
dGVGb3JUaW1lbGluZSh0aW1lbGluZSwgdGltZWxpbmVPdmVydmlldykKKyAgICB7CisgICAgICAg
IGNvbnNvbGUuYXNzZXJ0KHRpbWVsaW5lIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlRpbWVsaW5l
LCB0aW1lbGluZSk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRpbWVsaW5lT3ZlcnZpZXcgaW5z
dGFuY2VvZiBXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlldywgdGltZWxpbmVPdmVydmlldyk7
CiAKICAgICAgICAgdmFyIHRpbWVsaW5lVHlwZSA9IHRpbWVsaW5lLnR5cGU7CiAgICAgICAgIGlm
ICh0aW1lbGluZVR5cGUgPT09IFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZC5UeXBlLk5ldHdv
cmspCkBAIC00Myw0MyArNjMsMTMgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXdHcmFw
aCA9IGZ1bmN0aW9uKHRpbWVsaW5lLCB0aW1lbGluZU92ZXJ2aWV3KQogICAgICAgICBpZiAodGlt
ZWxpbmVUeXBlID09PSBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmQuVHlwZS5SZW5kZXJpbmdG
cmFtZSkKICAgICAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlJlbmRlcmluZ0ZyYW1l
VGltZWxpbmVPdmVydmlld0dyYXBoKHRpbWVsaW5lLCB0aW1lbGluZU92ZXJ2aWV3KTsKIAotICAg
ICAgICB0aHJvdyBFcnJvcigiQ2FuJ3QgbWFrZSBhIGdyYXBoIGZvciBhbiB1bmtub3duIHRpbWVs
aW5lLiIpOworICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkNhbid0IG1ha2UgYSBncmFwaCBmb3Ig
YW4gdW5rbm93biB0aW1lbGluZS4iKTsKICAgICB9CiAKLSAgICAvLyBDb25jcmV0ZSBvYmplY3Qg
aW5zdGFudGlhdGlvbi4KLSAgICBjb25zb2xlLmFzc2VydCh0aGlzLmNvbnN0cnVjdG9yICE9PSBX
ZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlld0dyYXBoICYmIHRoaXMgaW5zdGFuY2VvZiBXZWJJ
bnNwZWN0b3IuVGltZWxpbmVPdmVydmlld0dyYXBoKTsKLQotICAgIC8vIEZJWE1FOiBDb252ZXJ0
IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigp
LgotICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKLQotICAgIHRoaXMuZWxl
bWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgIHRoaXMuZWxlbWVudC5j
bGFzc0xpc3QuYWRkKCJ0aW1lbGluZS1vdmVydmlldy1ncmFwaCIpOwotCi0gICAgdGhpcy5femVy
b1RpbWUgPSAwOwotICAgIHRoaXMuX3N0YXJ0VGltZSA9IDA7Ci0gICAgdGhpcy5fZW5kVGltZSA9
IDU7Ci0gICAgdGhpcy5fY3VycmVudFRpbWUgPSAwOwotICAgIHRoaXMuX3RpbWVsaW5lT3ZlcnZp
ZXcgPSB0aW1lbGluZU92ZXJ2aWV3OwotICAgIHRoaXMuX3NlbGVjdGVkUmVjb3JkID0gbnVsbDsK
LSAgICB0aGlzLl9zZWxlY3RlZFJlY29yZENoYW5nZWQgPSBmYWxzZTsKLSAgICB0aGlzLl9zY2hl
ZHVsZWRMYXlvdXRVcGRhdGVJZGVudGlmaWVyID0gMDsKLSAgICB0aGlzLl9zY2hlZHVsZWRTZWxl
Y3RlZFJlY29yZExheW91dFVwZGF0ZUlkZW50aWZpZXIgPSAwOwotfTsKLQotV2ViSW5zcGVjdG9y
LlRpbWVsaW5lT3ZlcnZpZXdHcmFwaC5FdmVudCA9IHsKLSAgICBSZWNvcmRTZWxlY3RlZDogInRp
bWVsaW5lLW92ZXJ2aWV3LWdyYXBoLXJlY29yZC1zZWxlY3RlZCIKLX07Ci0KLVdlYkluc3BlY3Rv
ci5UaW1lbGluZU92ZXJ2aWV3R3JhcGgucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBX
ZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlld0dyYXBoLAotICAgIF9fcHJvdG9fXzogV2ViSW5z
cGVjdG9yLk9iamVjdC5wcm90b3R5cGUsCi0KLSAgICAvLyBQdWJsaWMKLQogICAgIGdldCB6ZXJv
VGltZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5femVyb1RpbWU7Ci0gICAgfSwKKyAg
ICB9CiAKICAgICBzZXQgemVyb1RpbWUoeCkKICAgICB7CkBAIC04OSwxMiArNzksMTIgQEAgV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXdHcmFwaC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRo
aXMuX3plcm9UaW1lID0geCB8fCAwOwogCiAgICAgICAgIHRoaXMubmVlZHNMYXlvdXQoKTsKLSAg
ICB9LAorICAgIH0KIAogICAgIGdldCBzdGFydFRpbWUoKQogICAgIHsKICAgICAgICAgcmV0dXJu
IHRoaXMuX3N0YXJ0VGltZTsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBzdGFydFRpbWUoeCkK
ICAgICB7CkBAIC0xMDQsMTIgKzk0LDEyIEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3
R3JhcGgucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9zdGFydFRpbWUgPSB4IHx8IDA7CiAK
ICAgICAgICAgdGhpcy5uZWVkc0xheW91dCgpOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGVu
ZFRpbWUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2VuZFRpbWU7Ci0gICAgfSwKKyAg
ICB9CiAKICAgICBzZXQgZW5kVGltZSh4KQogICAgIHsKQEAgLTExOSwxMiArMTA5LDEyIEBAIFdl
Ykluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3R3JhcGgucHJvdG90eXBlID0gewogICAgICAgICB0
aGlzLl9lbmRUaW1lID0geCB8fCAwOwogCiAgICAgICAgIHRoaXMubmVlZHNMYXlvdXQoKTsKLSAg
ICB9LAorICAgIH0KIAogICAgIGdldCBjdXJyZW50VGltZSgpCiAgICAgewogICAgICAgICByZXR1
cm4gdGhpcy5fY3VycmVudFRpbWU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgY3VycmVudFRp
bWUoeCkKICAgICB7CkBAIC0xMzcsMjIgKzEyNywyMiBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVP
dmVydmlld0dyYXBoLnByb3RvdHlwZSA9IHsKIAogICAgICAgICBpZiAoKHRoaXMuX3N0YXJ0VGlt
ZSA8PSBvbGRDdXJyZW50VGltZSAmJiBvbGRDdXJyZW50VGltZSA8PSB0aGlzLl9lbmRUaW1lKSB8
fCAodGhpcy5fc3RhcnRUaW1lIDw9IHRoaXMuX2N1cnJlbnRUaW1lICYmIHRoaXMuX2N1cnJlbnRU
aW1lIDw9IHRoaXMuX2VuZFRpbWUpKQogICAgICAgICAgICAgdGhpcy5uZWVkc0xheW91dCgpOwot
ICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHRpbWVsaW5lT3ZlcnZpZXcoKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIHRoaXMuX3RpbWVsaW5lT3ZlcnZpZXc7Ci0gICAgfSwKKyAgICB9CiAKICAgICBn
ZXQgdmlzaWJsZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fdmlzaWJsZTsKLSAgICB9
LAorICAgIH0KIAogICAgIGdldCBzZWxlY3RlZFJlY29yZCgpCiAgICAgewogICAgICAgICByZXR1
cm4gdGhpcy5fc2VsZWN0ZWRSZWNvcmQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgc2VsZWN0
ZWRSZWNvcmQoeCkKICAgICB7CkBAIC0xNjMsMjUgKzE1MywyNSBAQCBXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVPdmVydmlld0dyYXBoLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fc2VsZWN0ZWRS
ZWNvcmRDaGFuZ2VkID0gdHJ1ZTsKIAogICAgICAgICB0aGlzLl9uZWVkc1NlbGVjdGVkUmVjb3Jk
TGF5b3V0KCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzaG93bjogZnVuY3Rpb24oKQorICAgIHNo
b3duKCkKICAgICB7CiAgICAgICAgIHRoaXMuX3Zpc2libGUgPSB0cnVlOwogICAgICAgICB0aGlz
LnVwZGF0ZUxheW91dCgpOwotICAgIH0sCisgICAgfQogCi0gICAgaGlkZGVuOiBmdW5jdGlvbigp
CisgICAgaGlkZGVuKCkKICAgICB7CiAgICAgICAgIHRoaXMuX3Zpc2libGUgPSBmYWxzZTsKLSAg
ICB9LAorICAgIH0KIAotICAgIHJlc2V0OiBmdW5jdGlvbigpCisgICAgcmVzZXQoKQogICAgIHsK
ICAgICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViLWNsYXNzZXMgaWYgbmVlZGVkLgotICAgIH0s
CisgICAgfQogCi0gICAgdXBkYXRlTGF5b3V0OiBmdW5jdGlvbigpCisgICAgdXBkYXRlTGF5b3V0
KCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9zY2hlZHVsZWRMYXlvdXRVcGRhdGVJZGVudGlm
aWVyKSB7CiAgICAgICAgICAgICBjYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLl9zY2hlZHVsZWRM
YXlvdXRVcGRhdGVJZGVudGlmaWVyKTsKQEAgLTE4OSwxOCArMTc5LDE4IEBAIFdlYkluc3BlY3Rv
ci5UaW1lbGluZU92ZXJ2aWV3R3JhcGgucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAg
ICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViLWNsYXNzZXMgaWYgbmVlZGVkLgotICAgIH0sCisgICAg
fQogCi0gICAgdXBkYXRlTGF5b3V0SWZOZWVkZWQ6IGZ1bmN0aW9uKCkKKyAgICB1cGRhdGVMYXlv
dXRJZk5lZWRlZCgpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX3NjaGVkdWxlZExheW91dFVw
ZGF0ZUlkZW50aWZpZXIpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIHRoaXMudXBkYXRl
TGF5b3V0KCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcm90ZWN0ZWQKIAotICAgIG5lZWRz
TGF5b3V0OiBmdW5jdGlvbigpCisgICAgbmVlZHNMYXlvdXQoKQogICAgIHsKICAgICAgICAgaWYg
KCF0aGlzLl92aXNpYmxlKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjA5LDkgKzE5OSw5IEBA
IFdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3R3JhcGgucHJvdG90eXBlID0gewogICAgICAg
ICAgICAgcmV0dXJuOwogCiAgICAgICAgIHRoaXMuX3NjaGVkdWxlZExheW91dFVwZGF0ZUlkZW50
aWZpZXIgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUodGhpcy51cGRhdGVMYXlvdXQuYmluZCh0aGlz
KSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBkaXNwYXRjaFNlbGVjdGVkUmVjb3JkQ2hhbmdlZEV2
ZW50OiBmdW5jdGlvbigpCisgICAgZGlzcGF0Y2hTZWxlY3RlZFJlY29yZENoYW5nZWRFdmVudCgp
CiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX3NlbGVjdGVkUmVjb3JkQ2hhbmdlZCkKICAgICAg
ICAgICAgIHJldHVybjsKQEAgLTIxOSwxNiArMjA5LDE2IEBAIFdlYkluc3BlY3Rvci5UaW1lbGlu
ZU92ZXJ2aWV3R3JhcGgucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9zZWxlY3RlZFJlY29y
ZENoYW5nZWQgPSBmYWxzZTsKIAogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVy
cyhXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlld0dyYXBoLkV2ZW50LlJlY29yZFNlbGVjdGVk
LCB7cmVjb3JkOiB0aGlzLnNlbGVjdGVkUmVjb3JkfSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICB1
cGRhdGVTZWxlY3RlZFJlY29yZDogZnVuY3Rpb24oKQorICAgIHVwZGF0ZVNlbGVjdGVkUmVjb3Jk
KCkKICAgICB7CiAgICAgICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1Yi1jbGFzc2VzIGlmIG5lZWRl
ZC4KLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByaXZhdGUKIAotICAgIF9uZWVkc1NlbGVjdGVk
UmVjb3JkTGF5b3V0OiBmdW5jdGlvbigpCisgICAgX25lZWRzU2VsZWN0ZWRSZWNvcmRMYXlvdXQo
KQogICAgIHsKICAgICAgICAgLy8gSWYgbGF5b3V0IGlzIHNjaGVkdWxlZCwgYWJvcnQgc2luY2Ug
dGhlIHNlbGVjdGVkIHJlY29yZCB3aWxsIGJlIHVwZGF0ZWQgd2hlbiBsYXlvdXQgaGFwcGVucy4K
ICAgICAgICAgaWYgKHRoaXMuX3NjaGVkdWxlZExheW91dFVwZGF0ZUlkZW50aWZpZXIpCkBAIC0y
NDcsMyArMjM3LDcgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXdHcmFwaC5wcm90b3R5
cGUgPSB7CiAgICAgICAgIHRoaXMuX3NjaGVkdWxlZFNlbGVjdGVkUmVjb3JkTGF5b3V0VXBkYXRl
SWRlbnRpZmllciA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSh1cGRhdGUuYmluZCh0aGlzKSk7CiAg
ICAgfQogfTsKKworV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXdHcmFwaC5FdmVudCA9IHsK
KyAgICBSZWNvcmRTZWxlY3RlZDogInRpbWVsaW5lLW92ZXJ2aWV3LWdyYXBoLXJlY29yZC1zZWxl
Y3RlZCIKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9UaW1lbGluZVJlY29yZEJhci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lUmVjb3JkQmFyLmpzCmluZGV4IGU3OGJhN2M1MTM5ZmE1
ZWVhMWMzZDljYzJmYjg4ODEwOGZmZWM5ZjcuLjY0OTIxOTFlNDM3NTM2MmFhZWVkYWQ1M2VlZmI0
MDYyYWJmZmU4N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL1RpbWVsaW5lUmVjb3JkQmFyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lUmVjb3JkQmFyLmpzCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywxODUgKzIzLDE2
NiBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3Bl
Y3Rvci5UaW1lbGluZVJlY29yZEJhciA9IGZ1bmN0aW9uKHJlY29yZHMsIHJlbmRlck1vZGUpCitX
ZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRCYXIgPSBjbGFzcyBUaW1lbGluZVJlY29yZEJhciBl
eHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIHsKLSAgICAvLyBGSVhNRTogQ29udmVydCB0aGlz
IHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcywgYW5kIGNhbGwgc3VwZXIoKS4KLSAg
ICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CisgICAgY29uc3RydWN0b3IocmVj
b3JkcywgcmVuZGVyTW9kZSkKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CiAKLSAgICB0aGlzLl9l
bGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgdGhpcy5fZWxlbWVu
dC5jbGFzc0xpc3QuYWRkKCJ0aW1lbGluZS1yZWNvcmQtYmFyIik7CisgICAgICAgIHRoaXMuX2Vs
ZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgdGhpcy5fZWxl
bWVudC5jbGFzc0xpc3QuYWRkKCJ0aW1lbGluZS1yZWNvcmQtYmFyIik7CiAKLSAgICB0aGlzLnJl
bmRlck1vZGUgPSByZW5kZXJNb2RlOwotICAgIHRoaXMucmVjb3JkcyA9IHJlY29yZHM7Ci19Owor
ICAgICAgICB0aGlzLnJlbmRlck1vZGUgPSByZW5kZXJNb2RlOworICAgICAgICB0aGlzLnJlY29y
ZHMgPSByZWNvcmRzOworICAgIH0KIAotLy8gRklYTUU6IE1vdmUgdG8gYSBXZWJJbnNwZWN0b3Iu
T2JqZWN0IHN1YmNsYXNzIGFuZCB3ZSBjYW4gcmVtb3ZlIHRoaXMuCi1XZWJJbnNwZWN0b3IuT2Jq
ZWN0LmRlcHJlY2F0ZWRBZGRDb25zdHJ1Y3RvckZ1bmN0aW9ucyhXZWJJbnNwZWN0b3IuVGltZWxp
bmVSZWNvcmRCYXIpOworICAgIHN0YXRpYyBjcmVhdGVDb21iaW5lZEJhcnMocmVjb3Jkcywgc2Vj
b25kc1BlclBpeGVsLCBncmFwaERhdGFTb3VyY2UsIGNyZWF0ZUJhckNhbGxiYWNrKQorICAgIHsK
KyAgICAgICAgaWYgKCFyZWNvcmRzLmxlbmd0aCkKKyAgICAgICAgICAgIHJldHVybjsKIAotV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkQmFyLkJhclNlZ21lbnRTdHlsZUNsYXNzTmFtZSA9ICJz
ZWdtZW50IjsKLVdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZEJhci5JbmFjdGl2ZVN0eWxlQ2xh
c3NOYW1lID0gImluYWN0aXZlIjsKLVdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZEJhci5VbmZp
bmlzaGVkU3R5bGVDbGFzc05hbWUgPSAidW5maW5pc2hlZCI7Ci1XZWJJbnNwZWN0b3IuVGltZWxp
bmVSZWNvcmRCYXIuSGFzSW5hY3RpdmVTZWdtZW50U3R5bGVDbGFzc05hbWUgPSAiaGFzLWluYWN0
aXZlLXNlZ21lbnQiOwotV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkQmFyLk1pbmltdW1XaWR0
aFBpeGVscyA9IDQ7Ci1XZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRCYXIuTWluaW11bU1hcmdp
blBpeGVscyA9IDE7CisgICAgICAgIHZhciBzdGFydFRpbWUgPSBncmFwaERhdGFTb3VyY2Uuc3Rh
cnRUaW1lOworICAgICAgICB2YXIgY3VycmVudFRpbWUgPSBncmFwaERhdGFTb3VyY2UuY3VycmVu
dFRpbWU7CisgICAgICAgIHZhciBlbmRUaW1lID0gZ3JhcGhEYXRhU291cmNlLmVuZFRpbWU7CiAK
LVdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZEJhci5SZW5kZXJNb2RlID0gewotICAgIE5vcm1h
bDogInRpbWVsaW5lLXJlY29yZC1iYXItbm9ybWFsLXJlbmRlci1tb2RlIiwKLSAgICBJbmFjdGl2
ZU9ubHk6ICJ0aW1lbGluZS1yZWNvcmQtYmFyLWluYWN0aXZlLW9ubHktcmVuZGVyLW1vZGUiLAot
ICAgIEFjdGl2ZU9ubHk6ICJ0aW1lbGluZS1yZWNvcmQtYmFyLWFjdGl2ZS1vbmx5LXJlbmRlci1t
b2RlIgotfTsKKyAgICAgICAgdmFyIHZpc2libGVSZWNvcmRzID0gW107CisgICAgICAgIHZhciB1
c2VzQWN0aXZlU3RhcnRUaW1lID0gZmFsc2U7CisgICAgICAgIHZhciBsYXN0UmVjb3JkVHlwZSA9
IG51bGw7CiAKLVdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZEJhci5jcmVhdGVDb21iaW5lZEJh
cnMgPSBmdW5jdGlvbihyZWNvcmRzLCBzZWNvbmRzUGVyUGl4ZWwsIGdyYXBoRGF0YVNvdXJjZSwg
Y3JlYXRlQmFyQ2FsbGJhY2spCi17Ci0gICAgaWYgKCFyZWNvcmRzLmxlbmd0aCkKLSAgICAgICAg
cmV0dXJuOworICAgICAgICAvLyBGSVhNRTogRG8gYSBiaW5hcnkgc2VhcmNoIGZvciByZWNvcmRz
IHRoYXQgZmFsbCBpbnNpZGUgc3RhcnQgYW5kIGN1cnJlbnQgdGltZS4KIAotICAgIHZhciBzdGFy
dFRpbWUgPSBncmFwaERhdGFTb3VyY2Uuc3RhcnRUaW1lOwotICAgIHZhciBjdXJyZW50VGltZSA9
IGdyYXBoRGF0YVNvdXJjZS5jdXJyZW50VGltZTsKLSAgICB2YXIgZW5kVGltZSA9IGdyYXBoRGF0
YVNvdXJjZS5lbmRUaW1lOworICAgICAgICBmb3IgKHZhciByZWNvcmQgb2YgcmVjb3Jkcykgewor
ICAgICAgICAgICAgaWYgKGlzTmFOKHJlY29yZC5zdGFydFRpbWUpKQorICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwogCi0gICAgdmFyIHZpc2libGVSZWNvcmRzID0gW107Ci0gICAgdmFyIHVzZXNB
Y3RpdmVTdGFydFRpbWUgPSBmYWxzZTsKLSAgICB2YXIgbGFzdFJlY29yZFR5cGUgPSBudWxsOwor
ICAgICAgICAgICAgLy8gSWYgdGhpcyBiYXIgaXMgY29tcGxldGVseSBiZWZvcmUgdGhlIGJvdW5k
cyBvZiB0aGUgZ3JhcGgsIHNraXAgdGhpcyByZWNvcmQuCisgICAgICAgICAgICBpZiAocmVjb3Jk
LmVuZFRpbWUgPCBzdGFydFRpbWUpCisgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAv
LyBGSVhNRTogRG8gYSBiaW5hcnkgc2VhcmNoIGZvciByZWNvcmRzIHRoYXQgZmFsbCBpbnNpZGUg
c3RhcnQgYW5kIGN1cnJlbnQgdGltZS4KKyAgICAgICAgICAgIC8vIElmIHRoaXMgcmVjb3JkIGlz
IGNvbXBsZXRlbHkgYWZ0ZXIgdGhlIGN1cnJlbnQgdGltZSBvciBlbmQgdGltZSwgYnJlYWsgb3V0
IG5vdy4KKyAgICAgICAgICAgIC8vIFJlY29yZHMgYXJlIHNvcnRlZCwgc28gYWxsIHJlY29yZHMg
YWZ0ZXIgdGhpcyB3aWxsIGJlIGJleW9uZCB0aGUgY3VycmVudCBvciBlbmQgdGltZSB0b28uCisg
ICAgICAgICAgICBpZiAocmVjb3JkLnN0YXJ0VGltZSA+IGN1cnJlbnRUaW1lIHx8IHJlY29yZC5z
dGFydFRpbWUgPiBlbmRUaW1lKQorICAgICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgZm9yICh2
YXIgcmVjb3JkIG9mIHJlY29yZHMpIHsKLSAgICAgICAgaWYgKGlzTmFOKHJlY29yZC5zdGFydFRp
bWUpKQotICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBpZiAocmVjb3JkLnVzZXNB
Y3RpdmVTdGFydFRpbWUpCisgICAgICAgICAgICAgICAgdXNlc0FjdGl2ZVN0YXJ0VGltZSA9IHRy
dWU7CiAKLSAgICAgICAgLy8gSWYgdGhpcyBiYXIgaXMgY29tcGxldGVseSBiZWZvcmUgdGhlIGJv
dW5kcyBvZiB0aGUgZ3JhcGgsIHNraXAgdGhpcyByZWNvcmQuCi0gICAgICAgIGlmIChyZWNvcmQu
ZW5kVGltZSA8IHN0YXJ0VGltZSkKLSAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAg
Ly8gSWYgb25lIHJlY29yZCB1c2VzIGFjdGl2ZSB0aW1lIHRoZSByZXN0IGFyZSBhc3N1bWVkIHRv
IHVzZSBpdC4KKyAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHJlY29yZC51c2VzQWN0aXZlU3Rh
cnRUaW1lID09PSB1c2VzQWN0aXZlU3RhcnRUaW1lKTsKIAotICAgICAgICAvLyBJZiB0aGlzIHJl
Y29yZCBpcyBjb21wbGV0ZWx5IGFmdGVyIHRoZSBjdXJyZW50IHRpbWUgb3IgZW5kIHRpbWUsIGJy
ZWFrIG91dCBub3cuCi0gICAgICAgIC8vIFJlY29yZHMgYXJlIHNvcnRlZCwgc28gYWxsIHJlY29y
ZHMgYWZ0ZXIgdGhpcyB3aWxsIGJlIGJleW9uZCB0aGUgY3VycmVudCBvciBlbmQgdGltZSB0b28u
Ci0gICAgICAgIGlmIChyZWNvcmQuc3RhcnRUaW1lID4gY3VycmVudFRpbWUgfHwgcmVjb3JkLnN0
YXJ0VGltZSA+IGVuZFRpbWUpCi0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIC8vIE9u
bHkgYSBzaW5nbGUgcmVjb3JkIHR5cGUgaXMgc3VwcG9ydGVkIHJpZ2h0IG5vdy4KKyAgICAgICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KCFsYXN0UmVjb3JkVHlwZSB8fCByZWNvcmQudHlwZSA9PT0gbGFz
dFJlY29yZFR5cGUpOwogCi0gICAgICAgIGlmIChyZWNvcmQudXNlc0FjdGl2ZVN0YXJ0VGltZSkK
LSAgICAgICAgICAgIHVzZXNBY3RpdmVTdGFydFRpbWUgPSB0cnVlOworICAgICAgICAgICAgdmlz
aWJsZVJlY29yZHMucHVzaChyZWNvcmQpOwogCi0gICAgICAgIC8vIElmIG9uZSByZWNvcmQgdXNl
cyBhY3RpdmUgdGltZSB0aGUgcmVzdCBhcmUgYXNzdW1lZCB0byB1c2UgaXQuCi0gICAgICAgIGNv
bnNvbGUuYXNzZXJ0KHJlY29yZC51c2VzQWN0aXZlU3RhcnRUaW1lID09PSB1c2VzQWN0aXZlU3Rh
cnRUaW1lKTsKKyAgICAgICAgICAgIGxhc3RSZWNvcmRUeXBlID0gcmVjb3JkLnR5cGU7CisgICAg
ICAgIH0KIAotICAgICAgICAvLyBPbmx5IGEgc2luZ2xlIHJlY29yZCB0eXBlIGlzIHN1cHBvcnRl
ZCByaWdodCBub3cuCi0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFsYXN0UmVjb3JkVHlwZSB8fCBy
ZWNvcmQudHlwZSA9PT0gbGFzdFJlY29yZFR5cGUpOworICAgICAgICBpZiAoIXZpc2libGVSZWNv
cmRzLmxlbmd0aCkKKyAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICB2aXNpYmxlUmVjb3Jk
cy5wdXNoKHJlY29yZCk7CisgICAgICAgIGlmICh2aXNpYmxlUmVjb3Jkcy5sZW5ndGggPT09IDEp
IHsKKyAgICAgICAgICAgIGNyZWF0ZUJhckNhbGxiYWNrKHZpc2libGVSZWNvcmRzLCBXZWJJbnNw
ZWN0b3IuVGltZWxpbmVSZWNvcmRCYXIuUmVuZGVyTW9kZS5Ob3JtYWwpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CiAKLSAgICAgICAgbGFzdFJlY29yZFR5cGUgPSByZWNvcmQudHlw
ZTsKLSAgICB9CisgICAgICAgIGZ1bmN0aW9uIGNvbXBhcmVCeUFjdGl2ZVN0YXJ0VGltZShhLCBi
KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gYS5hY3RpdmVTdGFydFRpbWUgLSBiLmFj
dGl2ZVN0YXJ0VGltZTsKKyAgICAgICAgfQogCi0gICAgaWYgKCF2aXNpYmxlUmVjb3Jkcy5sZW5n
dGgpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgdmFyIG1pbmltdW1EdXJhdGlvbiA9IHNlY29u
ZHNQZXJQaXhlbCAqIFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZEJhci5NaW5pbXVtV2lkdGhQ
aXhlbHM7CisgICAgICAgIHZhciBtaW5pbXVtTWFyZ2luID0gc2Vjb25kc1BlclBpeGVsICogV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkQmFyLk1pbmltdW1NYXJnaW5QaXhlbHM7CiAKLSAgICBp
ZiAodmlzaWJsZVJlY29yZHMubGVuZ3RoID09PSAxKSB7Ci0gICAgICAgIGNyZWF0ZUJhckNhbGxi
YWNrKHZpc2libGVSZWNvcmRzLCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRCYXIuUmVuZGVy
TW9kZS5Ob3JtYWwpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgICAgICBpZiAodXNlc0Fj
dGl2ZVN0YXJ0VGltZSkgeworICAgICAgICAgICAgdmFyIGluYWN0aXZlU3RhcnRUaW1lID0gTmFO
OworICAgICAgICAgICAgdmFyIGluYWN0aXZlRW5kVGltZSA9IE5hTjsKKyAgICAgICAgICAgIHZh
ciBpbmFjdGl2ZVJlY29yZHMgPSBbXTsKIAotICAgIGZ1bmN0aW9uIGNvbXBhcmVCeUFjdGl2ZVN0
YXJ0VGltZShhLCBiKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGEuYWN0aXZlU3RhcnRUaW1lIC0g
Yi5hY3RpdmVTdGFydFRpbWU7Ci0gICAgfQorICAgICAgICAgICAgZm9yICh2YXIgcmVjb3JkIG9m
IHZpc2libGVSZWNvcmRzKSB7CisgICAgICAgICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIHByZXZp
b3VzIHJlY29yZCBpcyBmYXIgZW5vdWdoIGF3YXkgdG8gY3JlYXRlIHRoZSBpbmFjdGl2ZSBiYXIu
CisgICAgICAgICAgICAgICAgaWYgKCFpc05hTihpbmFjdGl2ZVN0YXJ0VGltZSkgJiYgaW5hY3Rp
dmVTdGFydFRpbWUgKyBNYXRoLm1heChpbmFjdGl2ZUVuZFRpbWUgLSBpbmFjdGl2ZVN0YXJ0VGlt
ZSwgbWluaW11bUR1cmF0aW9uKSArIG1pbmltdW1NYXJnaW4gPD0gcmVjb3JkLnN0YXJ0VGltZSkg
eworICAgICAgICAgICAgICAgICAgICBjcmVhdGVCYXJDYWxsYmFjayhpbmFjdGl2ZVJlY29yZHMs
IFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZEJhci5SZW5kZXJNb2RlLkluYWN0aXZlT25seSk7
CisgICAgICAgICAgICAgICAgICAgIGluYWN0aXZlUmVjb3JkcyA9IFtdOworICAgICAgICAgICAg
ICAgICAgICBpbmFjdGl2ZVN0YXJ0VGltZSA9IE5hTjsKKyAgICAgICAgICAgICAgICAgICAgaW5h
Y3RpdmVFbmRUaW1lID0gTmFOOworICAgICAgICAgICAgICAgIH0KIAotICAgIHZhciBtaW5pbXVt
RHVyYXRpb24gPSBzZWNvbmRzUGVyUGl4ZWwgKiBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRC
YXIuTWluaW11bVdpZHRoUGl4ZWxzOwotICAgIHZhciBtaW5pbXVtTWFyZ2luID0gc2Vjb25kc1Bl
clBpeGVsICogV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkQmFyLk1pbmltdW1NYXJnaW5QaXhl
bHM7CisgICAgICAgICAgICAgICAgLy8gSWYgdGhpcyBpcyBhIG5ldyBiYXIsIHBlZyB0aGUgc3Rh
cnQgdGltZS4KKyAgICAgICAgICAgICAgICBpZiAoaXNOYU4oaW5hY3RpdmVTdGFydFRpbWUpKQor
ICAgICAgICAgICAgICAgICAgICBpbmFjdGl2ZVN0YXJ0VGltZSA9IHJlY29yZC5zdGFydFRpbWU7
CiAKLSAgICBpZiAodXNlc0FjdGl2ZVN0YXJ0VGltZSkgewotICAgICAgICB2YXIgaW5hY3RpdmVT
dGFydFRpbWUgPSBOYU47Ci0gICAgICAgIHZhciBpbmFjdGl2ZUVuZFRpbWUgPSBOYU47Ci0gICAg
ICAgIHZhciBpbmFjdGl2ZVJlY29yZHMgPSBbXTsKKyAgICAgICAgICAgICAgICAvLyBVcGRhdGUg
dGhlIGVuZCB0aW1lIHRvIGJlIHRoZSBtYXhpbXVtIHdlIGVuY291bnRlci4gaW5hY3RpdmVFbmRU
aW1lIG1pZ2h0IGJlIE5hTiwgc28gInx8IDAiIHRvIHByZXZlbnQgTWF0aC5tYXggZnJvbSByZXR1
cm5pbmcgTmFOLgorICAgICAgICAgICAgICAgIGluYWN0aXZlRW5kVGltZSA9IE1hdGgubWF4KGlu
YWN0aXZlRW5kVGltZSB8fCAwLCByZWNvcmQuYWN0aXZlU3RhcnRUaW1lKTsKIAotICAgICAgICBm
b3IgKHZhciByZWNvcmQgb2YgdmlzaWJsZVJlY29yZHMpIHsKLSAgICAgICAgICAgIC8vIENoZWNr
IGlmIHRoZSBwcmV2aW91cyByZWNvcmQgaXMgZmFyIGVub3VnaCBhd2F5IHRvIGNyZWF0ZSB0aGUg
aW5hY3RpdmUgYmFyLgotICAgICAgICAgICAgaWYgKCFpc05hTihpbmFjdGl2ZVN0YXJ0VGltZSkg
JiYgaW5hY3RpdmVTdGFydFRpbWUgKyBNYXRoLm1heChpbmFjdGl2ZUVuZFRpbWUgLSBpbmFjdGl2
ZVN0YXJ0VGltZSwgbWluaW11bUR1cmF0aW9uKSArIG1pbmltdW1NYXJnaW4gPD0gcmVjb3JkLnN0
YXJ0VGltZSkgewotICAgICAgICAgICAgICAgIGNyZWF0ZUJhckNhbGxiYWNrKGluYWN0aXZlUmVj
b3JkcywgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkQmFyLlJlbmRlck1vZGUuSW5hY3RpdmVP
bmx5KTsKLSAgICAgICAgICAgICAgICBpbmFjdGl2ZVJlY29yZHMgPSBbXTsKLSAgICAgICAgICAg
ICAgICBpbmFjdGl2ZVN0YXJ0VGltZSA9IE5hTjsKLSAgICAgICAgICAgICAgICBpbmFjdGl2ZUVu
ZFRpbWUgPSBOYU47CisgICAgICAgICAgICAgICAgaW5hY3RpdmVSZWNvcmRzLnB1c2gocmVjb3Jk
KTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgLy8gSWYgdGhpcyBpcyBhIG5ldyBiYXIs
IHBlZyB0aGUgc3RhcnQgdGltZS4KLSAgICAgICAgICAgIGlmIChpc05hTihpbmFjdGl2ZVN0YXJ0
VGltZSkpCi0gICAgICAgICAgICAgICAgaW5hY3RpdmVTdGFydFRpbWUgPSByZWNvcmQuc3RhcnRU
aW1lOwotCi0gICAgICAgICAgICAvLyBVcGRhdGUgdGhlIGVuZCB0aW1lIHRvIGJlIHRoZSBtYXhp
bXVtIHdlIGVuY291bnRlci4gaW5hY3RpdmVFbmRUaW1lIG1pZ2h0IGJlIE5hTiwgc28gInx8IDAi
IHRvIHByZXZlbnQgTWF0aC5tYXggZnJvbSByZXR1cm5pbmcgTmFOLgotICAgICAgICAgICAgaW5h
Y3RpdmVFbmRUaW1lID0gTWF0aC5tYXgoaW5hY3RpdmVFbmRUaW1lIHx8IDAsIHJlY29yZC5hY3Rp
dmVTdGFydFRpbWUpOworICAgICAgICAgICAgLy8gQ3JlYXRlIHRoZSBpbmFjdGl2ZSBiYXIgZm9y
IHRoZSBsYXN0IHJlY29yZCBpZiBuZWVkZWQuCisgICAgICAgICAgICBpZiAoIWlzTmFOKGluYWN0
aXZlU3RhcnRUaW1lKSkKKyAgICAgICAgICAgICAgICBjcmVhdGVCYXJDYWxsYmFjayhpbmFjdGl2
ZVJlY29yZHMsIFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZEJhci5SZW5kZXJNb2RlLkluYWN0
aXZlT25seSk7CiAKLSAgICAgICAgICAgIGluYWN0aXZlUmVjb3Jkcy5wdXNoKHJlY29yZCk7Cisg
ICAgICAgICAgICB2aXNpYmxlUmVjb3Jkcy5zb3J0KGNvbXBhcmVCeUFjdGl2ZVN0YXJ0VGltZSk7
CiAgICAgICAgIH0KIAotICAgICAgICAvLyBDcmVhdGUgdGhlIGluYWN0aXZlIGJhciBmb3IgdGhl
IGxhc3QgcmVjb3JkIGlmIG5lZWRlZC4KLSAgICAgICAgaWYgKCFpc05hTihpbmFjdGl2ZVN0YXJ0
VGltZSkpCi0gICAgICAgICAgICBjcmVhdGVCYXJDYWxsYmFjayhpbmFjdGl2ZVJlY29yZHMsIFdl
Ykluc3BlY3Rvci5UaW1lbGluZVJlY29yZEJhci5SZW5kZXJNb2RlLkluYWN0aXZlT25seSk7Ci0K
LSAgICAgICAgdmlzaWJsZVJlY29yZHMuc29ydChjb21wYXJlQnlBY3RpdmVTdGFydFRpbWUpOwot
ICAgIH0KKyAgICAgICAgbGFzdFJlY29yZFR5cGUgPSBudWxsOwogCi0gICAgbGFzdFJlY29yZFR5
cGUgPSBudWxsOworICAgICAgICB2YXIgYWN0aXZlU3RhcnRUaW1lID0gTmFOOworICAgICAgICB2
YXIgYWN0aXZlRW5kVGltZSA9IE5hTjsKKyAgICAgICAgdmFyIGFjdGl2ZVJlY29yZHMgPSBbXTsK
IAotICAgIHZhciBhY3RpdmVTdGFydFRpbWUgPSBOYU47Ci0gICAgdmFyIGFjdGl2ZUVuZFRpbWUg
PSBOYU47Ci0gICAgdmFyIGFjdGl2ZVJlY29yZHMgPSBbXTsKKyAgICAgICAgdmFyIHN0YXJ0VGlt
ZVByb3BlcnR5ID0gdXNlc0FjdGl2ZVN0YXJ0VGltZSA/ICJhY3RpdmVTdGFydFRpbWUiIDogInN0
YXJ0VGltZSI7CiAKLSAgICB2YXIgc3RhcnRUaW1lUHJvcGVydHkgPSB1c2VzQWN0aXZlU3RhcnRU
aW1lID8gImFjdGl2ZVN0YXJ0VGltZSIgOiAic3RhcnRUaW1lIjsKKyAgICAgICAgZm9yICh2YXIg
cmVjb3JkIG9mIHZpc2libGVSZWNvcmRzKSB7CisgICAgICAgICAgICAvLyBDaGVjayBpZiB0aGUg
cHJldmlvdXMgcmVjb3JkIGlzIGZhciBlbm91Z2ggYXdheSB0byBjcmVhdGUgdGhlIGFjdGl2ZSBi
YXIuIFdlIGFsc28gY3JlYXRlIGl0IG5vdyBpZiB0aGUgY3VycmVudCByZWNvcmQgaGFzIG5vIGFj
dGl2ZSBzdGF0ZSB0aW1lLgorICAgICAgICAgICAgaWYgKCFpc05hTihhY3RpdmVTdGFydFRpbWUp
ICYmIChhY3RpdmVTdGFydFRpbWUgKyBNYXRoLm1heChhY3RpdmVFbmRUaW1lIC0gYWN0aXZlU3Rh
cnRUaW1lLCBtaW5pbXVtRHVyYXRpb24pICsgbWluaW11bU1hcmdpbiA8PSByZWNvcmRbc3RhcnRU
aW1lUHJvcGVydHldCisgICAgICAgICAgICAgICAgfHwgKGlzTmFOKHJlY29yZFtzdGFydFRpbWVQ
cm9wZXJ0eV0pICYmICFpc05hTihhY3RpdmVFbmRUaW1lKSkpKSB7CisgICAgICAgICAgICAgICAg
Y3JlYXRlQmFyQ2FsbGJhY2soYWN0aXZlUmVjb3JkcywgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVj
b3JkQmFyLlJlbmRlck1vZGUuQWN0aXZlT25seSk7CisgICAgICAgICAgICAgICAgYWN0aXZlUmVj
b3JkcyA9IFtdOworICAgICAgICAgICAgICAgIGFjdGl2ZVN0YXJ0VGltZSA9IE5hTjsKKyAgICAg
ICAgICAgICAgICBhY3RpdmVFbmRUaW1lID0gTmFOOworICAgICAgICAgICAgfQogCi0gICAgZm9y
ICh2YXIgcmVjb3JkIG9mIHZpc2libGVSZWNvcmRzKSB7Ci0gICAgICAgIC8vIENoZWNrIGlmIHRo
ZSBwcmV2aW91cyByZWNvcmQgaXMgZmFyIGVub3VnaCBhd2F5IHRvIGNyZWF0ZSB0aGUgYWN0aXZl
IGJhci4gV2UgYWxzbyBjcmVhdGUgaXQgbm93IGlmIHRoZSBjdXJyZW50IHJlY29yZCBoYXMgbm8g
YWN0aXZlIHN0YXRlIHRpbWUuCi0gICAgICAgIGlmICghaXNOYU4oYWN0aXZlU3RhcnRUaW1lKSAm
JiAoYWN0aXZlU3RhcnRUaW1lICsgTWF0aC5tYXgoYWN0aXZlRW5kVGltZSAtIGFjdGl2ZVN0YXJ0
VGltZSwgbWluaW11bUR1cmF0aW9uKSArIG1pbmltdW1NYXJnaW4gPD0gcmVjb3JkW3N0YXJ0VGlt
ZVByb3BlcnR5XQotICAgICAgICAgICAgfHwgKGlzTmFOKHJlY29yZFtzdGFydFRpbWVQcm9wZXJ0
eV0pICYmICFpc05hTihhY3RpdmVFbmRUaW1lKSkpKSB7Ci0gICAgICAgICAgICBjcmVhdGVCYXJD
YWxsYmFjayhhY3RpdmVSZWNvcmRzLCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRCYXIuUmVu
ZGVyTW9kZS5BY3RpdmVPbmx5KTsKLSAgICAgICAgICAgIGFjdGl2ZVJlY29yZHMgPSBbXTsKLSAg
ICAgICAgICAgIGFjdGl2ZVN0YXJ0VGltZSA9IE5hTjsKLSAgICAgICAgICAgIGFjdGl2ZUVuZFRp
bWUgPSBOYU47Ci0gICAgICAgIH0KKyAgICAgICAgICAgIGlmIChpc05hTihyZWNvcmRbc3RhcnRU
aW1lUHJvcGVydHldKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBpZiAo
aXNOYU4ocmVjb3JkW3N0YXJ0VGltZVByb3BlcnR5XSkpCi0gICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgICAgIC8vIElmIHRoaXMgaXMgYSBuZXcgYmFyLCBwZWcgdGhlIHN0YXJ0IHRpbWUu
CisgICAgICAgICAgICBpZiAoaXNOYU4oYWN0aXZlU3RhcnRUaW1lKSkKKyAgICAgICAgICAgICAg
ICBhY3RpdmVTdGFydFRpbWUgPSByZWNvcmRbc3RhcnRUaW1lUHJvcGVydHldOwogCi0gICAgICAg
IC8vIElmIHRoaXMgaXMgYSBuZXcgYmFyLCBwZWcgdGhlIHN0YXJ0IHRpbWUuCi0gICAgICAgIGlm
IChpc05hTihhY3RpdmVTdGFydFRpbWUpKQotICAgICAgICAgICAgYWN0aXZlU3RhcnRUaW1lID0g
cmVjb3JkW3N0YXJ0VGltZVByb3BlcnR5XTsKKyAgICAgICAgICAgIC8vIFVwZGF0ZSB0aGUgZW5k
IHRpbWUgdG8gYmUgdGhlIG1heGltdW0gd2UgZW5jb3VudGVyLiBhY3RpdmVFbmRUaW1lIG1pZ2h0
IGJlIE5hTiwgc28gInx8IDAiIHRvIHByZXZlbnQgTWF0aC5tYXggZnJvbSByZXR1cm5pbmcgTmFO
LgorICAgICAgICAgICAgaWYgKCFpc05hTihyZWNvcmQuZW5kVGltZSkpCisgICAgICAgICAgICAg
ICAgYWN0aXZlRW5kVGltZSA9IE1hdGgubWF4KGFjdGl2ZUVuZFRpbWUgfHwgMCwgcmVjb3JkLmVu
ZFRpbWUpOwogCi0gICAgICAgIC8vIFVwZGF0ZSB0aGUgZW5kIHRpbWUgdG8gYmUgdGhlIG1heGlt
dW0gd2UgZW5jb3VudGVyLiBhY3RpdmVFbmRUaW1lIG1pZ2h0IGJlIE5hTiwgc28gInx8IDAiIHRv
IHByZXZlbnQgTWF0aC5tYXggZnJvbSByZXR1cm5pbmcgTmFOLgotICAgICAgICBpZiAoIWlzTmFO
KHJlY29yZC5lbmRUaW1lKSkKLSAgICAgICAgICAgIGFjdGl2ZUVuZFRpbWUgPSBNYXRoLm1heChh
Y3RpdmVFbmRUaW1lIHx8IDAsIHJlY29yZC5lbmRUaW1lKTsKKyAgICAgICAgICAgIGFjdGl2ZVJl
Y29yZHMucHVzaChyZWNvcmQpOworICAgICAgICB9CiAKLSAgICAgICAgYWN0aXZlUmVjb3Jkcy5w
dXNoKHJlY29yZCk7CisgICAgICAgIC8vIENyZWF0ZSB0aGUgYWN0aXZlIGJhciBmb3IgdGhlIGxh
c3QgcmVjb3JkIGlmIG5lZWRlZC4KKyAgICAgICAgaWYgKCFpc05hTihhY3RpdmVTdGFydFRpbWUp
KQorICAgICAgICAgICAgY3JlYXRlQmFyQ2FsbGJhY2soYWN0aXZlUmVjb3JkcywgV2ViSW5zcGVj
dG9yLlRpbWVsaW5lUmVjb3JkQmFyLlJlbmRlck1vZGUuQWN0aXZlT25seSk7CiAgICAgfQogCi0g
ICAgLy8gQ3JlYXRlIHRoZSBhY3RpdmUgYmFyIGZvciB0aGUgbGFzdCByZWNvcmQgaWYgbmVlZGVk
LgotICAgIGlmICghaXNOYU4oYWN0aXZlU3RhcnRUaW1lKSkKLSAgICAgICAgY3JlYXRlQmFyQ2Fs
bGJhY2soYWN0aXZlUmVjb3JkcywgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkQmFyLlJlbmRl
ck1vZGUuQWN0aXZlT25seSk7Ci19OwotCi1XZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRCYXIu
cHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNv
cmRCYXIsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZSwKLQog
ICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IGVsZW1lbnQoKQogICAgIHsKICAgICAgICAgcmV0dXJu
IHRoaXMuX2VsZW1lbnQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgcmVuZGVyTW9kZSgpCiAg
ICAgewogICAgICAgICByZXR1cm4gdGhpcy5fcmVuZGVyTW9kZTsKLSAgICB9LAorICAgIH0KIAog
ICAgIHNldCByZW5kZXJNb2RlKHJlbmRlck1vZGUpCiAgICAgewogICAgICAgICB0aGlzLl9yZW5k
ZXJNb2RlID0gcmVuZGVyTW9kZSB8fCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRCYXIuUmVu
ZGVyTW9kZS5Ob3JtYWw7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgcmVjb3JkcygpCiAgICAg
ewogICAgICAgICByZXR1cm4gdGhpcy5fcmVjb3JkczsKLSAgICB9LAorICAgIH0KIAogICAgIHNl
dCByZWNvcmRzKHJlY29yZHMpCiAgICAgewpAQCAtMjI2LDkgKzIwNyw5IEBAIFdlYkluc3BlY3Rv
ci5UaW1lbGluZVJlY29yZEJhci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBpZiAodGhpcy5f
cmVjb3Jkc1swXS5ldmVudFR5cGUpCiAgICAgICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFz
c0xpc3QuYWRkKHRoaXMuX3JlY29yZHNbMF0uZXZlbnRUeXBlKTsKICAgICAgICAgfQotICAgIH0s
CisgICAgfQogCi0gICAgcmVmcmVzaDogZnVuY3Rpb24oZ3JhcGhEYXRhU291cmNlKQorICAgIHJl
ZnJlc2goZ3JhcGhEYXRhU291cmNlKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9yZWNvcmRz
IHx8ICF0aGlzLl9yZWNvcmRzLmxlbmd0aCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAg
LTI2MCw3ICsyNDEsNyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRCYXIucHJvdG90eXBl
ID0gewogCiAgICAgICAgIHZhciBncmFwaER1cmF0aW9uID0gZ3JhcGhFbmRUaW1lIC0gZ3JhcGhT
dGFydFRpbWU7CiAKLSAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKFdlYklu
c3BlY3Rvci5UaW1lbGluZVJlY29yZEJhci5VbmZpbmlzaGVkU3R5bGVDbGFzc05hbWUsIGJhclVu
ZmluaXNoZWQpOworICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC50b2dnbGUoInVuZmlu
aXNoZWQiLCBiYXJVbmZpbmlzaGVkKTsKIAogICAgICAgICB2YXIgbmV3QmFyTGVmdFBvc2l0aW9u
ID0gKGJhclN0YXJ0VGltZSAtIGdyYXBoU3RhcnRUaW1lKSAvIGdyYXBoRHVyYXRpb247CiAgICAg
ICAgIHRoaXMuX3VwZGF0ZUVsZW1lbnRQb3NpdGlvbih0aGlzLl9lbGVtZW50LCBuZXdCYXJMZWZ0
UG9zaXRpb24sICJsZWZ0Iik7CkBAIC0yNzAsMTEgKzI1MSwxMSBAQCBXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVSZWNvcmRCYXIucHJvdG90eXBlID0gewogCiAgICAgICAgIGlmICghdGhpcy5fYWN0aXZl
QmFyRWxlbWVudCAmJiB0aGlzLl9yZW5kZXJNb2RlICE9PSBXZWJJbnNwZWN0b3IuVGltZWxpbmVS
ZWNvcmRCYXIuUmVuZGVyTW9kZS5JbmFjdGl2ZU9ubHkpIHsKICAgICAgICAgICAgIHRoaXMuX2Fj
dGl2ZUJhckVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICAgICAg
ICAgIHRoaXMuX2FjdGl2ZUJhckVsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVSZWNvcmRCYXIuQmFyU2VnbWVudFN0eWxlQ2xhc3NOYW1lKTsKKyAgICAgICAgICAgIHRo
aXMuX2FjdGl2ZUJhckVsZW1lbnQuY2xhc3NMaXN0LmFkZCgic2VnbWVudCIpOwogICAgICAgICB9
CiAKICAgICAgICAgaWYgKCFmaXJzdFJlY29yZC51c2VzQWN0aXZlU3RhcnRUaW1lKSB7Ci0gICAg
ICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoV2ViSW5zcGVjdG9yLlRpbWVs
aW5lUmVjb3JkQmFyLkhhc0luYWN0aXZlU2VnbWVudFN0eWxlQ2xhc3NOYW1lKTsKKyAgICAgICAg
ICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgiaGFzLWluYWN0aXZlLXNlZ21lbnQi
KTsKIAogICAgICAgICAgICAgaWYgKHRoaXMuX2luYWN0aXZlQmFyRWxlbWVudCkKICAgICAgICAg
ICAgICAgICB0aGlzLl9pbmFjdGl2ZUJhckVsZW1lbnQucmVtb3ZlKCk7CkBAIC0yOTYsNyArMjc3
LDcgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkQmFyLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAKLSAgICAgICAgdGhpcy5fZWxlbWVudC5j
bGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZEJhci5IYXNJbmFjdGl2ZVNl
Z21lbnRTdHlsZUNsYXNzTmFtZSk7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFk
ZCgiaGFzLWluYWN0aXZlLXNlZ21lbnQiKTsKIAogICAgICAgICAvLyBGaW5kIHRoZSBlYXJsaWVz
dCBhY3RpdmUgc3RhcnQgdGltZSBmb3IgYWN0aXZlIG9ubHkgcmVuZGVyaW5nLCBhbmQgdGhlIGxh
dGVzdCBmb3IgdGhlIG90aGVyIG1vZGVzLgogICAgICAgICAvLyBUaGlzIG1hdGNoZXMgdGhlIHZh
bHVlcyB0aGF0IFRpbWVsaW5lUmVjb3JkQmFyLmNyZWF0ZUNvbWJpbmVkQmFycyB1c2VzIHdoZW4g
Y29tYmluaW5nLgpAQCAtMzA4LDcgKzI4OSw3IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29y
ZEJhci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBiYXJEdXJhdGlvbiA9IGJhckVuZFRpbWUg
LSBiYXJTdGFydFRpbWU7CiAKICAgICAgICAgdmFyIGluYWN0aXZlVW5maW5pc2hlZCA9IGlzTmFO
KGJhckFjdGl2ZVN0YXJ0VGltZSkgfHwgYmFyQWN0aXZlU3RhcnRUaW1lID49IGdyYXBoQ3VycmVu
dFRpbWU7Ci0gICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZShXZWJJbnNwZWN0
b3IuVGltZWxpbmVSZWNvcmRCYXIuVW5maW5pc2hlZFN0eWxlQ2xhc3NOYW1lLCBpbmFjdGl2ZVVu
ZmluaXNoZWQpOworICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC50b2dnbGUoInVuZmlu
aXNoZWQiLCBpbmFjdGl2ZVVuZmluaXNoZWQpOwogCiAgICAgICAgIGlmIChpbmFjdGl2ZVVuZmlu
aXNoZWQpCiAgICAgICAgICAgICBiYXJBY3RpdmVTdGFydFRpbWUgPSBncmFwaEN1cnJlbnRUaW1l
OwpAQCAtMzE4LDggKzI5OSw4IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZEJhci5wcm90
b3R5cGUgPSB7CiAgICAgICAgIGlmICh0aGlzLl9yZW5kZXJNb2RlICE9PSBXZWJJbnNwZWN0b3Iu
VGltZWxpbmVSZWNvcmRCYXIuUmVuZGVyTW9kZS5BY3RpdmVPbmx5KSB7CiAgICAgICAgICAgICBp
ZiAoIXRoaXMuX2luYWN0aXZlQmFyRWxlbWVudCkgewogICAgICAgICAgICAgICAgIHRoaXMuX2lu
YWN0aXZlQmFyRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAg
ICAgICAgICAgIHRoaXMuX2luYWN0aXZlQmFyRWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3Bl
Y3Rvci5UaW1lbGluZVJlY29yZEJhci5CYXJTZWdtZW50U3R5bGVDbGFzc05hbWUpOwotICAgICAg
ICAgICAgICAgIHRoaXMuX2luYWN0aXZlQmFyRWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3Bl
Y3Rvci5UaW1lbGluZVJlY29yZEJhci5JbmFjdGl2ZVN0eWxlQ2xhc3NOYW1lKTsKKyAgICAgICAg
ICAgICAgICB0aGlzLl9pbmFjdGl2ZUJhckVsZW1lbnQuY2xhc3NMaXN0LmFkZCgic2VnbWVudCIp
OworICAgICAgICAgICAgICAgIHRoaXMuX2luYWN0aXZlQmFyRWxlbWVudC5jbGFzc0xpc3QuYWRk
KCJpbmFjdGl2ZSIpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICB0aGlzLl91cGRhdGVF
bGVtZW50UG9zaXRpb24odGhpcy5faW5hY3RpdmVCYXJFbGVtZW50LCAxIC0gbWlkZGxlUGVyY2Vu
dGFnZSwgInJpZ2h0Iik7CkBAIC0zMzksMTEgKzMyMCwxMSBAQCBXZWJJbnNwZWN0b3IuVGltZWxp
bmVSZWNvcmRCYXIucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5fYWN0aXZlQmFyRWxl
bWVudC5yZW1vdmUoKTsKIAogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9LAorICAgIH0KIAog
ICAgIC8vIFByaXZhdGUKIAotICAgIF91cGRhdGVFbGVtZW50UG9zaXRpb246IGZ1bmN0aW9uKGVs
ZW1lbnQsIG5ld1Bvc2l0aW9uLCBwcm9wZXJ0eSkKKyAgICBfdXBkYXRlRWxlbWVudFBvc2l0aW9u
KGVsZW1lbnQsIG5ld1Bvc2l0aW9uLCBwcm9wZXJ0eSkKICAgICB7CiAgICAgICAgIG5ld1Bvc2l0
aW9uICo9IDEwMDsKICAgICAgICAgbmV3UG9zaXRpb24gPSBuZXdQb3NpdGlvbi50b0ZpeGVkKDIp
OwpAQCAtMzUzLDMgKzMzNCwxMiBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRCYXIucHJv
dG90eXBlID0gewogICAgICAgICAgICAgZWxlbWVudC5zdHlsZVtwcm9wZXJ0eV0gPSBuZXdQb3Np
dGlvbiArICIlIjsKICAgICB9CiB9OworCitXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRCYXIu
TWluaW11bVdpZHRoUGl4ZWxzID0gNDsKK1dlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZEJhci5N
aW5pbXVtTWFyZ2luUGl4ZWxzID0gMTsKKworV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkQmFy
LlJlbmRlck1vZGUgPSB7CisgICAgTm9ybWFsOiAidGltZWxpbmUtcmVjb3JkLWJhci1ub3JtYWwt
cmVuZGVyLW1vZGUiLAorICAgIEluYWN0aXZlT25seTogInRpbWVsaW5lLXJlY29yZC1iYXItaW5h
Y3RpdmUtb25seS1yZW5kZXItbW9kZSIsCisgICAgQWN0aXZlT25seTogInRpbWVsaW5lLXJlY29y
ZC1iYXItYWN0aXZlLW9ubHktcmVuZGVyLW1vZGUiCit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVSZWNvcmRGcmFtZS5qcyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lUmVjb3Jk
RnJhbWUuanMKaW5kZXggYThjMzBmMzIzY2M5NTMyMDM5MTNmOWQ3ZGI4YjE0NDUwOGQ3OTRkNy4u
NWNjZTU5N2UyOTRhNjczZmU3MmIzNzE2YjkwMzk0YjAxODY5MzM1MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVSZWNvcmRGcmFt
ZS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1l
bGluZVJlY29yZEZyYW1lLmpzCkBAIC0yMyw1MCArMjMsNDAgQEAKICAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRGcmFt
ZSA9IGZ1bmN0aW9uKGdyYXBoRGF0YVNvdXJjZSwgcmVjb3JkKQorV2ViSW5zcGVjdG9yLlRpbWVs
aW5lUmVjb3JkRnJhbWUgPSBjbGFzcyBUaW1lbGluZVJlY29yZEZyYW1lIGV4dGVuZHMgV2ViSW5z
cGVjdG9yLk9iamVjdAogewotICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNw
ZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigpLgotICAgIC8vIFdlYkluc3Bl
Y3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKLQotICAgIHRoaXMuX2VsZW1lbnQgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoInRp
bWVsaW5lLXJlY29yZC1mcmFtZSIpOwotCi0gICAgdGhpcy5fZ3JhcGhEYXRhU291cmNlID0gZ3Jh
cGhEYXRhU291cmNlOwotICAgIHRoaXMuX3JlY29yZCA9IHJlY29yZCB8fCBudWxsOwotfTsKKyAg
ICBjb25zdHJ1Y3RvcihncmFwaERhdGFTb3VyY2UsIHJlY29yZCkKKyAgICB7CisgICAgICAgIHN1
cGVyKCk7CiAKLS8vIEZJWE1FOiBNb3ZlIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFz
cyBhbmQgd2UgY2FuIHJlbW92ZSB0aGlzLgotV2ViSW5zcGVjdG9yLk9iamVjdC5kZXByZWNhdGVk
QWRkQ29uc3RydWN0b3JGdW5jdGlvbnMoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkRnJhbWUp
OworICAgICAgICB0aGlzLl9lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7
CisgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZCgidGltZWxpbmUtcmVjb3JkLWZy
YW1lIik7CiAKLVdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZEZyYW1lLk1pbmltdW1IZWlnaHRQ
aXhlbHMgPSAzOwotV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkRnJhbWUuTWF4aW11bVdpZHRo
UGl4ZWxzID0gMTQ7Ci1XZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRGcmFtZS5NaW5pbXVtV2lk
dGhQaXhlbHMgPSA0OwotCi1XZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRGcmFtZS5wcm90b3R5
cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZEZyYW1l
LAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGUsCisgICAgICAg
IHRoaXMuX2dyYXBoRGF0YVNvdXJjZSA9IGdyYXBoRGF0YVNvdXJjZTsKKyAgICAgICAgdGhpcy5f
cmVjb3JkID0gcmVjb3JkIHx8IG51bGw7CisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBn
ZXQgZWxlbWVudCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudDsKLSAgICB9
LAorICAgIH0KIAogICAgIGdldCByZWNvcmQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMu
X3JlY29yZDsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCByZWNvcmQocmVjb3JkKQogICAgIHsK
ICAgICAgICAgdGhpcy5fcmVjb3JkID0gcmVjb3JkOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0
IHNlbGVjdGVkKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50LmNsYXNzTGlz
dC5jb250YWlucygic2VsZWN0ZWQiKTsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBzZWxlY3Rl
ZCh4KQogICAgIHsKQEAgLTc0LDcgKzY0LDcgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3Jk
RnJhbWUucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIHRoaXMu
X2VsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZSgic2VsZWN0ZWQiKTsKLSAgICB9LAorICAgIH0KIAog
ICAgIHJlZnJlc2goZ3JhcGhEYXRhU291cmNlKQogICAgIHsKQEAgLTk3LDcgKzg3LDcgQEAgV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkRnJhbWUucHJvdG90eXBlID0gewogICAgICAgICB0aGlz
Ll91cGRhdGVDaGlsZEVsZW1lbnRzKGdyYXBoRGF0YVNvdXJjZSk7CiAKICAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcml2YXRlCiAKQEAgLTIyMiw3ICsyMTIs
NyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRGcmFtZS5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIH0pOwogCiAgICAgICAgIHJldHVybiB7ZnJhbWVEdXJhdGlvbiwgc2VnbWVudHN9OwotICAg
IH0sCisgICAgfQogCiAgICAgX3VwZGF0ZUNoaWxkRWxlbWVudHMoZ3JhcGhEYXRhU291cmNlKQog
ICAgIHsKQEAgLTI2Miw3ICsyNTIsNyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRGcmFt
ZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBlbGVtZW50LmNsYXNzTGlzdC5hZGQoImR1cmF0
aW9uIiwgc2VnbWVudC50YXNrVHlwZSk7CiAgICAgICAgICAgICBmcmFtZUVsZW1lbnQuaW5zZXJ0
QmVmb3JlKGVsZW1lbnQsIGZyYW1lRWxlbWVudC5maXJzdENoaWxkKTsKICAgICAgICAgfQotICAg
IH0sCisgICAgfQogCiAgICAgX3VwZGF0ZUVsZW1lbnRQb3NpdGlvbihlbGVtZW50LCBuZXdQb3Np
dGlvbiwgcHJvcGVydHkpCiAgICAgewpAQCAtMjc0LDMgKzI2NCw3IEBAIFdlYkluc3BlY3Rvci5U
aW1lbGluZVJlY29yZEZyYW1lLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGVsZW1lbnQuc3R5
bGVbcHJvcGVydHldID0gbmV3UG9zaXRpb24gKyAiJSI7CiAgICAgfQogfTsKKworV2ViSW5zcGVj
dG9yLlRpbWVsaW5lUmVjb3JkRnJhbWUuTWluaW11bUhlaWdodFBpeGVscyA9IDM7CitXZWJJbnNw
ZWN0b3IuVGltZWxpbmVSZWNvcmRGcmFtZS5NYXhpbXVtV2lkdGhQaXhlbHMgPSAxNDsKK1dlYklu
c3BlY3Rvci5UaW1lbGluZVJlY29yZEZyYW1lLk1pbmltdW1XaWR0aFBpeGVscyA9IDQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGlu
ZVJlY29yZGluZ0NvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvVGltZWxpbmVSZWNvcmRpbmdDb250ZW50Vmlldy5qcwppbmRleCBhNzYzOTkw
NGQ5YzBkY2EzOGQ0NWI5MzA1ZDE1OWI4M2M4NzRlY2Y0Li5hMTZlNjljYzQyMjU5MmMxNDdkZDU2
YWU2Y2RhMDNlYzExZDM0NTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9UaW1lbGluZVJlY29yZGluZ0NvbnRlbnRWaWV3LmpzCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lUmVjb3JkaW5n
Q29udGVudFZpZXcuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEz
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywg
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MTUgVW5pdmVyc2l0eSBvZiBXYXNoaW5ndG9uLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMjQsODIg
KzI0LDc3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkaW5nQ29udGVudFZpZXcgPSBmdW5jdGlvbihyZWNvcmRp
bmcsIGV4dHJhQXJndW1lbnRzKQorV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkaW5nQ29udGVu
dFZpZXcgPSBjbGFzcyBUaW1lbGluZVJlY29yZGluZ0NvbnRlbnRWaWV3IGV4dGVuZHMgV2ViSW5z
cGVjdG9yLkNvbnRlbnRWaWV3CiB7Ci0gICAgY29uc29sZS5hc3NlcnQoZXh0cmFBcmd1bWVudHMp
OwotICAgIGNvbnNvbGUuYXNzZXJ0KGV4dHJhQXJndW1lbnRzLnRpbWVsaW5lU2lkZWJhclBhbmVs
IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsKTsKLQotICAgIFdl
Ykluc3BlY3Rvci5Db250ZW50Vmlldy5jYWxsKHRoaXMsIHJlY29yZGluZyk7CisgICAgY29uc3Ry
dWN0b3IocmVjb3JkaW5nLCBleHRyYUFyZ3VtZW50cykKKyAgICB7CisgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KGV4dHJhQXJndW1lbnRzKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoZXh0cmFBcmd1
bWVudHMudGltZWxpbmVTaWRlYmFyUGFuZWwgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuVGltZWxp
bmVTaWRlYmFyUGFuZWwpOwogCi0gICAgdGhpcy5fcmVjb3JkaW5nID0gcmVjb3JkaW5nOwotICAg
IHRoaXMuX3RpbWVsaW5lU2lkZWJhclBhbmVsID0gZXh0cmFBcmd1bWVudHMudGltZWxpbmVTaWRl
YmFyUGFuZWw7CisgICAgICAgIHN1cGVyKHJlY29yZGluZyk7CiAKLSAgICB0aGlzLmVsZW1lbnQu
Y2xhc3NMaXN0LmFkZCgidGltZWxpbmUtcmVjb3JkaW5nIik7CisgICAgICAgIHRoaXMuX3JlY29y
ZGluZyA9IHJlY29yZGluZzsKKyAgICAgICAgdGhpcy5fdGltZWxpbmVTaWRlYmFyUGFuZWwgPSBl
eHRyYUFyZ3VtZW50cy50aW1lbGluZVNpZGViYXJQYW5lbDsKIAotICAgIHRoaXMuX2xpbmVhclRp
bWVsaW5lT3ZlcnZpZXcgPSBuZXcgV2ViSW5zcGVjdG9yLkxpbmVhclRpbWVsaW5lT3ZlcnZpZXco
dGhpcy5fcmVjb3JkaW5nKTsKLSAgICB0aGlzLl9saW5lYXJUaW1lbGluZU92ZXJ2aWV3LmFkZEV2
ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXcuRXZlbnQuVGltZVJhbmdl
U2VsZWN0aW9uQ2hhbmdlZCwgdGhpcy5fdGltZVJhbmdlU2VsZWN0aW9uQ2hhbmdlZCwgdGhpcyk7
CisgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJ0aW1lbGluZS1yZWNvcmRpbmci
KTsKIAotICAgIHRoaXMuX3JlbmRlcmluZ0ZyYW1lVGltZWxpbmVPdmVydmlldyA9IG5ldyBXZWJJ
bnNwZWN0b3IuUmVuZGVyaW5nRnJhbWVUaW1lbGluZU92ZXJ2aWV3KHRoaXMuX3JlY29yZGluZyk7
Ci0gICAgdGhpcy5fcmVuZGVyaW5nRnJhbWVUaW1lbGluZU92ZXJ2aWV3LmFkZEV2ZW50TGlzdGVu
ZXIoV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXcuRXZlbnQuVGltZVJhbmdlU2VsZWN0aW9u
Q2hhbmdlZCwgdGhpcy5fdGltZVJhbmdlU2VsZWN0aW9uQ2hhbmdlZCwgdGhpcyk7Ci0gICAgdGhp
cy5fcmVuZGVyaW5nRnJhbWVUaW1lbGluZU92ZXJ2aWV3LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5z
cGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXcuRXZlbnQuUmVjb3JkU2VsZWN0ZWQsIHRoaXMuX3JlY29y
ZFNlbGVjdGVkLCB0aGlzKTsKKyAgICAgICAgdGhpcy5fbGluZWFyVGltZWxpbmVPdmVydmlldyA9
IG5ldyBXZWJJbnNwZWN0b3IuTGluZWFyVGltZWxpbmVPdmVydmlldyh0aGlzLl9yZWNvcmRpbmcp
OworICAgICAgICB0aGlzLl9saW5lYXJUaW1lbGluZU92ZXJ2aWV3LmFkZEV2ZW50TGlzdGVuZXIo
V2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXcuRXZlbnQuVGltZVJhbmdlU2VsZWN0aW9uQ2hh
bmdlZCwgdGhpcy5fdGltZVJhbmdlU2VsZWN0aW9uQ2hhbmdlZCwgdGhpcyk7CiAKLSAgICB0aGlz
Ll9jdXJyZW50VGltZWxpbmVPdmVydmlldyA9IHRoaXMuX2xpbmVhclRpbWVsaW5lT3ZlcnZpZXc7
Ci0gICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2N1cnJlbnRUaW1lbGluZU92ZXJ2
aWV3LmVsZW1lbnQpOworICAgICAgICB0aGlzLl9yZW5kZXJpbmdGcmFtZVRpbWVsaW5lT3ZlcnZp
ZXcgPSBuZXcgV2ViSW5zcGVjdG9yLlJlbmRlcmluZ0ZyYW1lVGltZWxpbmVPdmVydmlldyh0aGlz
Ll9yZWNvcmRpbmcpOworICAgICAgICB0aGlzLl9yZW5kZXJpbmdGcmFtZVRpbWVsaW5lT3ZlcnZp
ZXcuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlldy5FdmVudC5U
aW1lUmFuZ2VTZWxlY3Rpb25DaGFuZ2VkLCB0aGlzLl90aW1lUmFuZ2VTZWxlY3Rpb25DaGFuZ2Vk
LCB0aGlzKTsKKyAgICAgICAgdGhpcy5fcmVuZGVyaW5nRnJhbWVUaW1lbGluZU92ZXJ2aWV3LmFk
ZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXcuRXZlbnQuUmVjb3Jk
U2VsZWN0ZWQsIHRoaXMuX3JlY29yZFNlbGVjdGVkLCB0aGlzKTsKIAotICAgIHRoaXMuX2NvbnRl
bnRWaWV3Q29udGFpbmVyID0gbmV3IFdlYkluc3BlY3Rvci5Db250ZW50Vmlld0NvbnRhaW5lcigp
OwotICAgIHRoaXMuX2NvbnRlbnRWaWV3Q29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5z
cGVjdG9yLkNvbnRlbnRWaWV3Q29udGFpbmVyLkV2ZW50LkN1cnJlbnRDb250ZW50Vmlld0RpZENo
YW5nZSwgdGhpcy5fY3VycmVudENvbnRlbnRWaWV3RGlkQ2hhbmdlLCB0aGlzKTsKLSAgICB0aGlz
LmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fY29udGVudFZpZXdDb250YWluZXIuZWxlbWVudCk7
CisgICAgICAgIHRoaXMuX2N1cnJlbnRUaW1lbGluZU92ZXJ2aWV3ID0gdGhpcy5fbGluZWFyVGlt
ZWxpbmVPdmVydmlldzsKKyAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2N1
cnJlbnRUaW1lbGluZU92ZXJ2aWV3LmVsZW1lbnQpOwogCi0gICAgdGhpcy5fY2xlYXJUaW1lbGlu
ZU5hdmlnYXRpb25JdGVtID0gbmV3IFdlYkluc3BlY3Rvci5CdXR0b25OYXZpZ2F0aW9uSXRlbSgi
Y2xlYXItdGltZWxpbmUiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNsZWFyIFRpbWVsaW5lIiks
ICJJbWFnZXMvTmF2aWdhdGlvbkl0ZW1UcmFzaC5zdmciLCAxNSwgMTUpOwotICAgIHRoaXMuX2Ns
ZWFyVGltZWxpbmVOYXZpZ2F0aW9uSXRlbS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5C
dXR0b25OYXZpZ2F0aW9uSXRlbS5FdmVudC5DbGlja2VkLCB0aGlzLl9jbGVhclRpbWVsaW5lLCB0
aGlzKTsKKyAgICAgICAgdGhpcy5fY29udGVudFZpZXdDb250YWluZXIgPSBuZXcgV2ViSW5zcGVj
dG9yLkNvbnRlbnRWaWV3Q29udGFpbmVyKCk7CisgICAgICAgIHRoaXMuX2NvbnRlbnRWaWV3Q29u
dGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29udGFpbmVy
LkV2ZW50LkN1cnJlbnRDb250ZW50Vmlld0RpZENoYW5nZSwgdGhpcy5fY3VycmVudENvbnRlbnRW
aWV3RGlkQ2hhbmdlLCB0aGlzKTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRo
aXMuX2NvbnRlbnRWaWV3Q29udGFpbmVyLmVsZW1lbnQpOwogCi0gICAgdGhpcy5fb3ZlcnZpZXdU
aW1lbGluZVZpZXcgPSBuZXcgV2ViSW5zcGVjdG9yLk92ZXJ2aWV3VGltZWxpbmVWaWV3KHJlY29y
ZGluZywge3RpbWVsaW5lU2lkZWJhclBhbmVsOiB0aGlzLl90aW1lbGluZVNpZGViYXJQYW5lbH0p
OwotICAgIHRoaXMuX292ZXJ2aWV3VGltZWxpbmVWaWV3LnNlY29uZHNQZXJQaXhlbCA9IHRoaXMu
X2xpbmVhclRpbWVsaW5lT3ZlcnZpZXcuc2Vjb25kc1BlclBpeGVsOworICAgICAgICB0aGlzLl9j
bGVhclRpbWVsaW5lTmF2aWdhdGlvbkl0ZW0gPSBuZXcgV2ViSW5zcGVjdG9yLkJ1dHRvbk5hdmln
YXRpb25JdGVtKCJjbGVhci10aW1lbGluZSIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ2xlYXIg
VGltZWxpbmUiKSwgIkltYWdlcy9OYXZpZ2F0aW9uSXRlbVRyYXNoLnN2ZyIsIDE1LCAxNSk7Cisg
ICAgICAgIHRoaXMuX2NsZWFyVGltZWxpbmVOYXZpZ2F0aW9uSXRlbS5hZGRFdmVudExpc3RlbmVy
KFdlYkluc3BlY3Rvci5CdXR0b25OYXZpZ2F0aW9uSXRlbS5FdmVudC5DbGlja2VkLCB0aGlzLl9j
bGVhclRpbWVsaW5lLCB0aGlzKTsKIAotICAgIHRoaXMuX3RpbWVsaW5lVmlld01hcCA9IG5ldyBN
YXA7Ci0gICAgdGhpcy5fcGF0aENvbXBvbmVudE1hcCA9IG5ldyBNYXA7CisgICAgICAgIHRoaXMu
X292ZXJ2aWV3VGltZWxpbmVWaWV3ID0gbmV3IFdlYkluc3BlY3Rvci5PdmVydmlld1RpbWVsaW5l
VmlldyhyZWNvcmRpbmcsIHt0aW1lbGluZVNpZGViYXJQYW5lbDogdGhpcy5fdGltZWxpbmVTaWRl
YmFyUGFuZWx9KTsKKyAgICAgICAgdGhpcy5fb3ZlcnZpZXdUaW1lbGluZVZpZXcuc2Vjb25kc1Bl
clBpeGVsID0gdGhpcy5fbGluZWFyVGltZWxpbmVPdmVydmlldy5zZWNvbmRzUGVyUGl4ZWw7CiAK
LSAgICB0aGlzLl91cGRhdGluZyA9IGZhbHNlOwotICAgIHRoaXMuX2N1cnJlbnRUaW1lID0gTmFO
OwotICAgIHRoaXMuX2xhc3RVcGRhdGVUaW1lc3RhbXAgPSBOYU47Ci0gICAgdGhpcy5fc3RhcnRU
aW1lTmVlZHNSZXNldCA9IHRydWU7Ci0gICAgdGhpcy5fcmVuZGVyaW5nRnJhbWVUaW1lbGluZSA9
IG51bGw7CisgICAgICAgIHRoaXMuX3RpbWVsaW5lVmlld01hcCA9IG5ldyBNYXA7CisgICAgICAg
IHRoaXMuX3BhdGhDb21wb25lbnRNYXAgPSBuZXcgTWFwOwogCi0gICAgdGhpcy5fcmVjb3JkaW5n
LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkaW5nLkV2ZW50LlRp
bWVsaW5lQWRkZWQsIHRoaXMuX3RpbWVsaW5lQWRkZWQsIHRoaXMpOwotICAgIHRoaXMuX3JlY29y
ZGluZy5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZGluZy5FdmVu
dC5UaW1lbGluZVJlbW92ZWQsIHRoaXMuX3RpbWVsaW5lUmVtb3ZlZCwgdGhpcyk7Ci0gICAgdGhp
cy5fcmVjb3JkaW5nLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3Jk
aW5nLkV2ZW50LlJlc2V0LCB0aGlzLl9yZWNvcmRpbmdSZXNldCwgdGhpcyk7Ci0gICAgdGhpcy5f
cmVjb3JkaW5nLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkaW5n
LkV2ZW50LlVubG9hZGVkLCB0aGlzLl9yZWNvcmRpbmdVbmxvYWRlZCwgdGhpcyk7CisgICAgICAg
IHRoaXMuX3VwZGF0aW5nID0gZmFsc2U7CisgICAgICAgIHRoaXMuX2N1cnJlbnRUaW1lID0gTmFO
OworICAgICAgICB0aGlzLl9sYXN0VXBkYXRlVGltZXN0YW1wID0gTmFOOworICAgICAgICB0aGlz
Ll9zdGFydFRpbWVOZWVkc1Jlc2V0ID0gdHJ1ZTsKKyAgICAgICAgdGhpcy5fcmVuZGVyaW5nRnJh
bWVUaW1lbGluZSA9IG51bGw7CiAKLSAgICBXZWJJbnNwZWN0b3IudGltZWxpbmVNYW5hZ2VyLmFk
ZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRpbWVsaW5lTWFuYWdlci5FdmVudC5DYXB0dXJp
bmdTdGFydGVkLCB0aGlzLl9jYXB0dXJpbmdTdGFydGVkLCB0aGlzKTsKLSAgICBXZWJJbnNwZWN0
b3IudGltZWxpbmVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRpbWVsaW5l
TWFuYWdlci5FdmVudC5DYXB0dXJpbmdTdG9wcGVkLCB0aGlzLl9jYXB0dXJpbmdTdG9wcGVkLCB0
aGlzKTsKKyAgICAgICAgdGhpcy5fcmVjb3JkaW5nLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVj
dG9yLlRpbWVsaW5lUmVjb3JkaW5nLkV2ZW50LlRpbWVsaW5lQWRkZWQsIHRoaXMuX3RpbWVsaW5l
QWRkZWQsIHRoaXMpOworICAgICAgICB0aGlzLl9yZWNvcmRpbmcuYWRkRXZlbnRMaXN0ZW5lcihX
ZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRpbmcuRXZlbnQuVGltZWxpbmVSZW1vdmVkLCB0aGlz
Ll90aW1lbGluZVJlbW92ZWQsIHRoaXMpOworICAgICAgICB0aGlzLl9yZWNvcmRpbmcuYWRkRXZl
bnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRpbmcuRXZlbnQuUmVzZXQsIHRo
aXMuX3JlY29yZGluZ1Jlc2V0LCB0aGlzKTsKKyAgICAgICAgdGhpcy5fcmVjb3JkaW5nLmFkZEV2
ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkaW5nLkV2ZW50LlVubG9hZGVk
LCB0aGlzLl9yZWNvcmRpbmdVbmxvYWRlZCwgdGhpcyk7CiAKLSAgICBXZWJJbnNwZWN0b3IuZGVi
dWdnZXJNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTWFuYWdl
ci5FdmVudC5QYXVzZWQsIHRoaXMuX2RlYnVnZ2VyUGF1c2VkLCB0aGlzKTsKLSAgICBXZWJJbnNw
ZWN0b3IuZGVidWdnZXJNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRlYnVn
Z2VyTWFuYWdlci5FdmVudC5SZXN1bWVkLCB0aGlzLl9kZWJ1Z2dlclJlc3VtZWQsIHRoaXMpOwor
ICAgICAgICBXZWJJbnNwZWN0b3IudGltZWxpbmVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lTWFuYWdlci5FdmVudC5DYXB0dXJpbmdTdGFydGVkLCB0aGlzLl9j
YXB0dXJpbmdTdGFydGVkLCB0aGlzKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLnRpbWVsaW5lTWFu
YWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5UaW1lbGluZU1hbmFnZXIuRXZlbnQu
Q2FwdHVyaW5nU3RvcHBlZCwgdGhpcy5fY2FwdHVyaW5nU3RvcHBlZCwgdGhpcyk7CiAKLSAgICBX
ZWJJbnNwZWN0b3IuQ29udGVudFZpZXcuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQ29u
dGVudFZpZXcuRXZlbnQuU2VsZWN0aW9uUGF0aENvbXBvbmVudHNEaWRDaGFuZ2UsIHRoaXMuX2Nv
bnRlbnRWaWV3U2VsZWN0aW9uUGF0aENvbXBvbmVudERpZENoYW5nZSwgdGhpcyk7Ci0gICAgV2Vi
SW5zcGVjdG9yLkNvbnRlbnRWaWV3LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkNvbnRl
bnRWaWV3LkV2ZW50LlN1cHBsZW1lbnRhbFJlcHJlc2VudGVkT2JqZWN0c0RpZENoYW5nZSwgdGhp
cy5fY29udGVudFZpZXdTdXBwbGVtZW50YWxSZXByZXNlbnRlZE9iamVjdHNEaWRDaGFuZ2UsIHRo
aXMpOworICAgICAgICBXZWJJbnNwZWN0b3IuZGVidWdnZXJNYW5hZ2VyLmFkZEV2ZW50TGlzdGVu
ZXIoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5QYXVzZWQsIHRoaXMuX2RlYnVn
Z2VyUGF1c2VkLCB0aGlzKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTWFuYWdlci5h
ZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuUmVzdW1l
ZCwgdGhpcy5fZGVidWdnZXJSZXN1bWVkLCB0aGlzKTsKIAotICAgIGZvciAodmFyIHRpbWVsaW5l
IG9mIHRoaXMuX3JlY29yZGluZy50aW1lbGluZXMudmFsdWVzKCkpCi0gICAgICAgIHRoaXMuX3Rp
bWVsaW5lQWRkZWQodGltZWxpbmUpOworICAgICAgICBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcu
YWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcuRXZlbnQuU2VsZWN0aW9u
UGF0aENvbXBvbmVudHNEaWRDaGFuZ2UsIHRoaXMuX2NvbnRlbnRWaWV3U2VsZWN0aW9uUGF0aENv
bXBvbmVudERpZENoYW5nZSwgdGhpcyk7CisgICAgICAgIFdlYkluc3BlY3Rvci5Db250ZW50Vmll
dy5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5FdmVudC5TdXBwbGVt
ZW50YWxSZXByZXNlbnRlZE9iamVjdHNEaWRDaGFuZ2UsIHRoaXMuX2NvbnRlbnRWaWV3U3VwcGxl
bWVudGFsUmVwcmVzZW50ZWRPYmplY3RzRGlkQ2hhbmdlLCB0aGlzKTsKIAotICAgIHRoaXMuc2hv
d092ZXJ2aWV3VGltZWxpbmVWaWV3KCk7Ci19OworICAgICAgICBmb3IgKHZhciB0aW1lbGluZSBv
ZiB0aGlzLl9yZWNvcmRpbmcudGltZWxpbmVzLnZhbHVlcygpKQorICAgICAgICAgICAgdGhpcy5f
dGltZWxpbmVBZGRlZCh0aW1lbGluZSk7CiAKLVdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZGlu
Z0NvbnRlbnRWaWV3LlNlbGVjdGVkVGltZWxpbmVUeXBlQ29va2llS2V5ID0gInRpbWVsaW5lLXJl
Y29yZGluZy1jb250ZW50LXZpZXctc2VsZWN0ZWQtdGltZWxpbmUtdHlwZSI7Ci1XZWJJbnNwZWN0
b3IuVGltZWxpbmVSZWNvcmRpbmdDb250ZW50Vmlldy5PdmVydmlld1RpbWVsaW5lVmlld0Nvb2tp
ZVZhbHVlID0gInRpbWVsaW5lLXJlY29yZGluZy1jb250ZW50LXZpZXctb3ZlcnZpZXctdGltZWxp
bmUtdmlldyI7Ci0KLVdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZGluZ0NvbnRlbnRWaWV3LnBy
b3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3Jk
aW5nQ29udGVudFZpZXcsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcu
cHJvdG90eXBlLAorICAgICAgICB0aGlzLnNob3dPdmVydmlld1RpbWVsaW5lVmlldygpOworICAg
IH0KIAogICAgIC8vIFB1YmxpYwogCi0gICAgc2hvd092ZXJ2aWV3VGltZWxpbmVWaWV3OiBmdW5j
dGlvbigpCisgICAgc2hvd092ZXJ2aWV3VGltZWxpbmVWaWV3KCkKICAgICB7CiAgICAgICAgIHRo
aXMuX2NvbnRlbnRWaWV3Q29udGFpbmVyLnNob3dDb250ZW50Vmlldyh0aGlzLl9vdmVydmlld1Rp
bWVsaW5lVmlldyk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzaG93VGltZWxpbmVWaWV3Rm9yVGlt
ZWxpbmU6IGZ1bmN0aW9uKHRpbWVsaW5lKQorICAgIHNob3dUaW1lbGluZVZpZXdGb3JUaW1lbGlu
ZSh0aW1lbGluZSkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRpbWVsaW5lIGluc3Rh
bmNlb2YgV2ViSW5zcGVjdG9yLlRpbWVsaW5lLCB0aW1lbGluZSk7CiAgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KHRoaXMuX3RpbWVsaW5lVmlld01hcC5oYXModGltZWxpbmUpLCB0aW1lbGluZSk7CkBA
IC0xMDcsMTMgKzEwMiwxMyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRpbmdDb250ZW50
Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgdGhpcy5f
Y29udGVudFZpZXdDb250YWluZXIuc2hvd0NvbnRlbnRWaWV3KHRoaXMuX3RpbWVsaW5lVmlld01h
cC5nZXQodGltZWxpbmUpKTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBzdXBwb3J0c1NwbGl0
Q29udGVudEJyb3dzZXIoKQogICAgIHsKICAgICAgICAgLy8gVGhlIGxheW91dCBvZiB0aGUgb3Zl
cnZpZXcgYW5kIHNwbGl0IGNvbnRlbnQgYnJvd3NlciBkb24ndCB3b3JrIHdlbGwuCiAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBzZWxlY3Rpb25QYXRoQ29t
cG9uZW50cygpCiAgICAgewpAQCAtMTI1LDQ1ICsxMjAsNDUgQEAgV2ViSW5zcGVjdG9yLlRpbWVs
aW5lUmVjb3JkaW5nQ29udGVudFZpZXcucHJvdG90eXBlID0gewogICAgICAgICBpZiAocmVwcmVz
ZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuVGltZWxpbmUpCiAgICAgICAgICAg
ICBwYXRoQ29tcG9uZW50cy51bnNoaWZ0KHRoaXMuX3BhdGhDb21wb25lbnRNYXAuZ2V0KHJlcHJl
c2VudGVkT2JqZWN0KSk7CiAgICAgICAgIHJldHVybiBwYXRoQ29tcG9uZW50czsKLSAgICB9LAor
ICAgIH0KIAogICAgIGdldCBzdXBwbGVtZW50YWxSZXByZXNlbnRlZE9iamVjdHMoKQogICAgIHsK
ICAgICAgICAgaWYgKCF0aGlzLl9jb250ZW50Vmlld0NvbnRhaW5lci5jdXJyZW50Q29udGVudFZp
ZXcpCiAgICAgICAgICAgICByZXR1cm4gW107CiAgICAgICAgIHJldHVybiB0aGlzLl9jb250ZW50
Vmlld0NvbnRhaW5lci5jdXJyZW50Q29udGVudFZpZXcuc3VwcGxlbWVudGFsUmVwcmVzZW50ZWRP
YmplY3RzOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IG5hdmlnYXRpb25JdGVtcygpCiAgICAg
ewogICAgICAgICByZXR1cm4gW3RoaXMuX2NsZWFyVGltZWxpbmVOYXZpZ2F0aW9uSXRlbV07Ci0g
ICAgfSwKKyAgICB9CiAKICAgICBnZXQgaGFuZGxlQ29weUV2ZW50KCkKICAgICB7CiAgICAgICAg
IHZhciBjdXJyZW50Q29udGVudFZpZXcgPSB0aGlzLl9jb250ZW50Vmlld0NvbnRhaW5lci5jdXJy
ZW50Q29udGVudFZpZXc7CiAgICAgICAgIHJldHVybiBjdXJyZW50Q29udGVudFZpZXcgJiYgdHlw
ZW9mIGN1cnJlbnRDb250ZW50Vmlldy5oYW5kbGVDb3B5RXZlbnQgPT09ICJmdW5jdGlvbiIgPyBj
dXJyZW50Q29udGVudFZpZXcuaGFuZGxlQ29weUV2ZW50LmJpbmQoY3VycmVudENvbnRlbnRWaWV3
KSA6IG51bGw7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgc3VwcG9ydHNTYXZlKCkKICAgICB7
CiAgICAgICAgIHZhciBjdXJyZW50Q29udGVudFZpZXcgPSB0aGlzLl9jb250ZW50Vmlld0NvbnRh
aW5lci5jdXJyZW50Q29udGVudFZpZXc7CiAgICAgICAgIHJldHVybiBjdXJyZW50Q29udGVudFZp
ZXcgJiYgY3VycmVudENvbnRlbnRWaWV3LnN1cHBvcnRzU2F2ZTsKLSAgICB9LAorICAgIH0KIAog
ICAgIGdldCBzYXZlRGF0YSgpCiAgICAgewogICAgICAgICB2YXIgY3VycmVudENvbnRlbnRWaWV3
ID0gdGhpcy5fY29udGVudFZpZXdDb250YWluZXIuY3VycmVudENvbnRlbnRWaWV3OwogICAgICAg
ICByZXR1cm4gY3VycmVudENvbnRlbnRWaWV3ICYmIGN1cnJlbnRDb250ZW50Vmlldy5zYXZlRGF0
YSB8fCBudWxsOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGN1cnJlbnRUaW1lbGluZVZpZXco
KQogICAgIHsKICAgICAgICAgdmFyIGNvbnRlbnRWaWV3ID0gdGhpcy5fY29udGVudFZpZXdDb250
YWluZXIuY3VycmVudENvbnRlbnRWaWV3OwogICAgICAgICByZXR1cm4gKGNvbnRlbnRWaWV3IGlu
c3RhbmNlb2YgV2ViSW5zcGVjdG9yLlRpbWVsaW5lVmlldykgPyBjb250ZW50VmlldyA6IG51bGw7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzaG93bjogZnVuY3Rpb24oKQorICAgIHNob3duKCkKICAg
ICB7CiAgICAgICAgIHRoaXMuX2N1cnJlbnRUaW1lbGluZU92ZXJ2aWV3LnNob3duKCk7CiAgICAg
ICAgIHRoaXMuX2NvbnRlbnRWaWV3Q29udGFpbmVyLnNob3duKCk7CkBAIC0xNzMsMTggKzE2OCwx
OCBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRpbmdDb250ZW50Vmlldy5wcm90b3R5cGUg
PSB7CiAKICAgICAgICAgaWYgKCF0aGlzLl91cGRhdGluZyAmJiBXZWJJbnNwZWN0b3IudGltZWxp
bmVNYW5hZ2VyLmFjdGl2ZVJlY29yZGluZyA9PT0gdGhpcy5fcmVjb3JkaW5nICYmIFdlYkluc3Bl
Y3Rvci50aW1lbGluZU1hbmFnZXIuaXNDYXB0dXJpbmcoKSkKICAgICAgICAgICAgIHRoaXMuX3N0
YXJ0VXBkYXRpbmdDdXJyZW50VGltZSgpOwotICAgIH0sCisgICAgfQogCi0gICAgaGlkZGVuOiBm
dW5jdGlvbigpCisgICAgaGlkZGVuKCkKICAgICB7CiAgICAgICAgIHRoaXMuX2N1cnJlbnRUaW1l
bGluZU92ZXJ2aWV3LmhpZGRlbigpOwogICAgICAgICB0aGlzLl9jb250ZW50Vmlld0NvbnRhaW5l
ci5oaWRkZW4oKTsKIAogICAgICAgICBpZiAodGhpcy5fdXBkYXRpbmcpCiAgICAgICAgICAgICB0
aGlzLl9zdG9wVXBkYXRpbmdDdXJyZW50VGltZSgpOwotICAgIH0sCisgICAgfQogCi0gICAgY2xv
c2VkOiBmdW5jdGlvbigpCisgICAgY2xvc2VkKCkKICAgICB7CiAgICAgICAgIHRoaXMuX2NvbnRl
bnRWaWV3Q29udGFpbmVyLmNsb3NlQWxsQ29udGVudFZpZXdzKCk7CiAKQEAgLTE5MywzOCArMTg4
LDM4IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZGluZ0NvbnRlbnRWaWV3LnByb3RvdHlw
ZSA9IHsKICAgICAgICAgV2ViSW5zcGVjdG9yLnRpbWVsaW5lTWFuYWdlci5yZW1vdmVFdmVudExp
c3RlbmVyKG51bGwsIG51bGwsIHRoaXMpOwogICAgICAgICBXZWJJbnNwZWN0b3IuZGVidWdnZXJN
YW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIobnVsbCwgbnVsbCwgdGhpcyk7CiAgICAgICAgIFdl
Ykluc3BlY3Rvci5Db250ZW50Vmlldy5yZW1vdmVFdmVudExpc3RlbmVyKG51bGwsIG51bGwsIHRo
aXMpOwotICAgIH0sCisgICAgfQogCi0gICAgY2FuR29CYWNrOiBmdW5jdGlvbigpCisgICAgY2Fu
R29CYWNrKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9jb250ZW50Vmlld0NvbnRhaW5l
ci5jYW5Hb0JhY2soKTsKLSAgICB9LAorICAgIH0KIAotICAgIGNhbkdvRm9yd2FyZDogZnVuY3Rp
b24oKQorICAgIGNhbkdvRm9yd2FyZCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fY29u
dGVudFZpZXdDb250YWluZXIuY2FuR29Gb3J3YXJkKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBn
b0JhY2s6IGZ1bmN0aW9uKCkKKyAgICBnb0JhY2soKQogICAgIHsKICAgICAgICAgdGhpcy5fY29u
dGVudFZpZXdDb250YWluZXIuZ29CYWNrKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBnb0Zvcndh
cmQ6IGZ1bmN0aW9uKCkKKyAgICBnb0ZvcndhcmQoKQogICAgIHsKICAgICAgICAgdGhpcy5fY29u
dGVudFZpZXdDb250YWluZXIuZ29Gb3J3YXJkKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICB1cGRh
dGVMYXlvdXQ6IGZ1bmN0aW9uKCkKKyAgICB1cGRhdGVMYXlvdXQoKQogICAgIHsKICAgICAgICAg
dGhpcy5fY3VycmVudFRpbWVsaW5lT3ZlcnZpZXcudXBkYXRlTGF5b3V0Rm9yUmVzaXplKCk7CiAK
ICAgICAgICAgdmFyIGN1cnJlbnRDb250ZW50VmlldyA9IHRoaXMuX2NvbnRlbnRWaWV3Q29udGFp
bmVyLmN1cnJlbnRDb250ZW50VmlldzsKICAgICAgICAgaWYgKGN1cnJlbnRDb250ZW50VmlldykK
ICAgICAgICAgICAgIGN1cnJlbnRDb250ZW50Vmlldy51cGRhdGVMYXlvdXQoKTsKLSAgICB9LAor
ICAgIH0KIAotICAgIHNhdmVUb0Nvb2tpZTogZnVuY3Rpb24oY29va2llKQorICAgIHNhdmVUb0Nv
b2tpZShjb29raWUpCiAgICAgewogICAgICAgICBjb29raWUudHlwZSA9IFdlYkluc3BlY3Rvci5D
b250ZW50Vmlld0Nvb2tpZVR5cGUuVGltZWxpbmVzOwogCkBAIC0yMzMsMjYgKzIyOCwyNiBAQCBX
ZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRpbmdDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAg
ICAgICAgICAgICBjb29raWVbV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkaW5nQ29udGVudFZp
ZXcuU2VsZWN0ZWRUaW1lbGluZVR5cGVDb29raWVLZXldID0gV2ViSW5zcGVjdG9yLlRpbWVsaW5l
UmVjb3JkaW5nQ29udGVudFZpZXcuT3ZlcnZpZXdUaW1lbGluZVZpZXdDb29raWVWYWx1ZTsKICAg
ICAgICAgZWxzZSBpZiAoY3VycmVudENvbnRlbnRWaWV3LnJlcHJlc2VudGVkT2JqZWN0IGluc3Rh
bmNlb2YgV2ViSW5zcGVjdG9yLlRpbWVsaW5lKQogICAgICAgICAgICAgY29va2llW1dlYkluc3Bl
Y3Rvci5UaW1lbGluZVJlY29yZGluZ0NvbnRlbnRWaWV3LlNlbGVjdGVkVGltZWxpbmVUeXBlQ29v
a2llS2V5XSA9IHRoaXMuY3VycmVudFRpbWVsaW5lVmlldy5yZXByZXNlbnRlZE9iamVjdC50eXBl
OwotICAgIH0sCisgICAgfQogCi0gICAgcmVzdG9yZUZyb21Db29raWU6IGZ1bmN0aW9uKGNvb2tp
ZSkKKyAgICByZXN0b3JlRnJvbUNvb2tpZShjb29raWUpCiAgICAgewogICAgICAgICB2YXIgdGlt
ZWxpbmVUeXBlID0gY29va2llW1dlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZGluZ0NvbnRlbnRW
aWV3LlNlbGVjdGVkVGltZWxpbmVUeXBlQ29va2llS2V5XTsKICAgICAgICAgaWYgKHRpbWVsaW5l
VHlwZSA9PT0gV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkaW5nQ29udGVudFZpZXcuT3ZlcnZp
ZXdUaW1lbGluZVZpZXdDb29raWVWYWx1ZSkKICAgICAgICAgICAgIHRoaXMuc2hvd092ZXJ2aWV3
VGltZWxpbmVWaWV3KCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHRoaXMuc2hvd1RpbWVs
aW5lVmlld0ZvclRpbWVsaW5lKHRoaXMucmVwcmVzZW50ZWRPYmplY3QudGltZWxpbmVzLmdldCh0
aW1lbGluZVR5cGUpKTsKLSAgICB9LAorICAgIH0KIAotICAgIGZpbHRlckRpZENoYW5nZTogZnVu
Y3Rpb24oKQorICAgIGZpbHRlckRpZENoYW5nZSgpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMu
Y3VycmVudFRpbWVsaW5lVmlldykKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICB0aGlz
LmN1cnJlbnRUaW1lbGluZVZpZXcuZmlsdGVyRGlkQ2hhbmdlKCk7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBtYXRjaFRyZWVFbGVtZW50QWdhaW5zdEN1c3RvbUZpbHRlcnM6IGZ1bmN0aW9uKHRyZWVF
bGVtZW50KQorICAgIG1hdGNoVHJlZUVsZW1lbnRBZ2FpbnN0Q3VzdG9tRmlsdGVycyh0cmVlRWxl
bWVudCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLmN1cnJlbnRUaW1lbGluZVZpZXcgJiYgIXRo
aXMuY3VycmVudFRpbWVsaW5lVmlldy5tYXRjaFRyZWVFbGVtZW50QWdhaW5zdEN1c3RvbUZpbHRl
cnModHJlZUVsZW1lbnQpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzIyLDExICsz
MTcsMTEgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkaW5nQ29udGVudFZpZXcucHJvdG90
eXBlID0gewogCiAgICAgICAgIGNvbnNvbGUuZXJyb3IoIlVua25vd24gVHJlZUVsZW1lbnQsIGNh
bid0IGZpbHRlciBieSB0aW1lLiIpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9LAorICAg
IH0KIAogICAgIC8vIFByaXZhdGUKIAotICAgIF9jdXJyZW50Q29udGVudFZpZXdEaWRDaGFuZ2U6
IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9jdXJyZW50Q29udGVudFZpZXdEaWRDaGFuZ2UoZXZlbnQp
CiAgICAgewogICAgICAgICB2YXIgbmV3VGltZWxpbmVPdmVydmlldyA9IHRoaXMuX2xpbmVhclRp
bWVsaW5lT3ZlcnZpZXc7CiAgICAgICAgIHZhciB0aW1lbGluZVZpZXcgPSB0aGlzLmN1cnJlbnRU
aW1lbGluZVZpZXc7CkBAIC0zNTcsMTQgKzM1MiwxNCBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVS
ZWNvcmRpbmdDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgdGhpcy5kaXNwYXRj
aEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LkV2ZW50LlNlbGVjdGlv
blBhdGhDb21wb25lbnRzRGlkQ2hhbmdlKTsKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9M
aXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LkV2ZW50Lk5hdmlnYXRpb25JdGVtc0Rp
ZENoYW5nZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcGF0aENvbXBvbmVudFNlbGVjdGVkOiBm
dW5jdGlvbihldmVudCkKKyAgICBfcGF0aENvbXBvbmVudFNlbGVjdGVkKGV2ZW50KQogICAgIHsK
ICAgICAgICAgdGhpcy5fdGltZWxpbmVTaWRlYmFyUGFuZWwuc2hvd1RpbWVsaW5lVmlld0ZvclRp
bWVsaW5lKGV2ZW50LmRhdGEucGF0aENvbXBvbmVudC5yZXByZXNlbnRlZE9iamVjdCk7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICBfY29udGVudFZpZXdTZWxlY3Rpb25QYXRoQ29tcG9uZW50RGlkQ2hh
bmdlOiBmdW5jdGlvbihldmVudCkKKyAgICBfY29udGVudFZpZXdTZWxlY3Rpb25QYXRoQ29tcG9u
ZW50RGlkQ2hhbmdlKGV2ZW50KQogICAgIHsKICAgICAgICAgaWYgKGV2ZW50LnRhcmdldCAhPT0g
dGhpcy5fY29udGVudFZpZXdDb250YWluZXIuY3VycmVudENvbnRlbnRWaWV3KQogICAgICAgICAg
ICAgcmV0dXJuOwpAQCAtMzc3LDE2ICszNzIsMTYgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVj
b3JkaW5nQ29udGVudFZpZXcucHJvdG90eXBlID0gewogICAgICAgICB2YXIgcmVjb3JkUGF0aENv
bXBvbmVudCA9IHRoaXMuc2VsZWN0aW9uUGF0aENvbXBvbmVudHMuZmluZChmdW5jdGlvbihlbGVt
ZW50KSB7IHJldHVybiBlbGVtZW50LnJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5z
cGVjdG9yLlRpbWVsaW5lUmVjb3JkOyB9KTsKICAgICAgICAgdmFyIHJlY29yZCA9IHJlY29yZFBh
dGhDb21wb25lbnQgPyByZWNvcmRQYXRoQ29tcG9uZW50LnJlcHJlc2VudGVkT2JqZWN0IDogbnVs
bDsKICAgICAgICAgdGhpcy5fY3VycmVudFRpbWVsaW5lT3ZlcnZpZXcuc2VsZWN0UmVjb3JkKGV2
ZW50LnRhcmdldC5yZXByZXNlbnRlZE9iamVjdCwgcmVjb3JkKTsKLSAgICB9LAorICAgIH0KIAot
ICAgIF9jb250ZW50Vmlld1N1cHBsZW1lbnRhbFJlcHJlc2VudGVkT2JqZWN0c0RpZENoYW5nZTog
ZnVuY3Rpb24oZXZlbnQpCisgICAgX2NvbnRlbnRWaWV3U3VwcGxlbWVudGFsUmVwcmVzZW50ZWRP
YmplY3RzRGlkQ2hhbmdlKGV2ZW50KQogICAgIHsKICAgICAgICAgaWYgKGV2ZW50LnRhcmdldCAh
PT0gdGhpcy5fY29udGVudFZpZXdDb250YWluZXIuY3VycmVudENvbnRlbnRWaWV3KQogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJ
bnNwZWN0b3IuQ29udGVudFZpZXcuRXZlbnQuU3VwcGxlbWVudGFsUmVwcmVzZW50ZWRPYmplY3Rz
RGlkQ2hhbmdlKTsKLSAgICB9LAorICAgIH0KIAotICAgIF91cGRhdGU6IGZ1bmN0aW9uKHRpbWVz
dGFtcCkKKyAgICBfdXBkYXRlKHRpbWVzdGFtcCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl93
YWl0aW5nVG9SZXNldEN1cnJlbnRUaW1lKSB7CiAgICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9u
RnJhbWUodGhpcy5fdXBkYXRlQ2FsbGJhY2spOwpAQCAtNDExLDkgKzQwNiw5IEBAIFdlYkluc3Bl
Y3Rvci5UaW1lbGluZVJlY29yZGluZ0NvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAg
dGhpcy5fbGFzdFVwZGF0ZVRpbWVzdGFtcCA9IHRpbWVzdGFtcDsKIAogICAgICAgICByZXF1ZXN0
QW5pbWF0aW9uRnJhbWUodGhpcy5fdXBkYXRlQ2FsbGJhY2spOwotICAgIH0sCisgICAgfQogCi0g
ICAgX3VwZGF0ZVRpbWVzOiBmdW5jdGlvbihzdGFydFRpbWUsIGN1cnJlbnRUaW1lLCBlbmRUaW1l
KQorICAgIF91cGRhdGVUaW1lcyhzdGFydFRpbWUsIGN1cnJlbnRUaW1lLCBlbmRUaW1lKQogICAg
IHsKICAgICAgICAgaWYgKHRoaXMuX3N0YXJ0VGltZU5lZWRzUmVzZXQgJiYgIWlzTmFOKHN0YXJ0
VGltZSkpIHsKICAgICAgICAgICAgIHZhciBzZWxlY3Rpb25PZmZzZXQgPSB0aGlzLl9saW5lYXJU
aW1lbGluZU92ZXJ2aWV3LnNlbGVjdGlvblN0YXJ0VGltZSAtIHRoaXMuX2xpbmVhclRpbWVsaW5l
T3ZlcnZpZXcuc3RhcnRUaW1lOwpAQCAtNDQ5LDkgKzQ0NCw5IEBAIFdlYkluc3BlY3Rvci5UaW1l
bGluZVJlY29yZGluZ0NvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fY3Vy
cmVudFRpbWVsaW5lT3ZlcnZpZXcudXBkYXRlTGF5b3V0SWZOZWVkZWQoKTsKICAgICAgICAgaWYg
KHRoaXMuY3VycmVudFRpbWVsaW5lVmlldykKICAgICAgICAgICAgIHRoaXMuY3VycmVudFRpbWVs
aW5lVmlldy51cGRhdGVMYXlvdXRJZk5lZWRlZCgpOwotICAgIH0sCisgICAgfQogCi0gICAgX3N0
YXJ0VXBkYXRpbmdDdXJyZW50VGltZTogZnVuY3Rpb24oc3RhcnRUaW1lKQorICAgIF9zdGFydFVw
ZGF0aW5nQ3VycmVudFRpbWUoc3RhcnRUaW1lKQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3Nl
cnQoIXRoaXMuX3VwZGF0aW5nKTsKICAgICAgICAgaWYgKHRoaXMuX3VwZGF0aW5nKQpAQCAtNDc3
LDkgKzQ3Miw5IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZGluZ0NvbnRlbnRWaWV3LnBy
b3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUNhbGxiYWNrID0gdGhpcy5fdXBk
YXRlLmJpbmQodGhpcyk7CiAKICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHRoaXMuX3Vw
ZGF0ZUNhbGxiYWNrKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9zdG9wVXBkYXRpbmdDdXJyZW50
VGltZTogZnVuY3Rpb24oKQorICAgIF9zdG9wVXBkYXRpbmdDdXJyZW50VGltZSgpCiAgICAgewog
ICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl91cGRhdGluZyk7CiAgICAgICAgIHRoaXMuX3Vw
ZGF0aW5nID0gZmFsc2U7CkBAIC00ODksMzYgKzQ4NCwzNiBAQCBXZWJJbnNwZWN0b3IuVGltZWxp
bmVSZWNvcmRpbmdDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9y
ZWNvcmRpbmcucmVtb3ZlRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRp
bmcuRXZlbnQuVGltZXNVcGRhdGVkLCB0aGlzLl9yZWNvcmRpbmdUaW1lc1VwZGF0ZWQsIHRoaXMp
OwogICAgICAgICAgICAgdGhpcy5fd2FpdGluZ1RvUmVzZXRDdXJyZW50VGltZSA9IGZhbHNlOwog
ICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfY2FwdHVyaW5nU3RhcnRlZDogZnVuY3Rp
b24oZXZlbnQpCisgICAgX2NhcHR1cmluZ1N0YXJ0ZWQoZXZlbnQpCiAgICAgewogICAgICAgICB0
aGlzLl9zdGFydFVwZGF0aW5nQ3VycmVudFRpbWUoZXZlbnQuZGF0YS5zdGFydFRpbWUpOwotICAg
IH0sCisgICAgfQogCi0gICAgX2NhcHR1cmluZ1N0b3BwZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAg
IF9jYXB0dXJpbmdTdG9wcGVkKGV2ZW50KQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX3VwZGF0
aW5nKQogICAgICAgICAgICAgdGhpcy5fc3RvcFVwZGF0aW5nQ3VycmVudFRpbWUoKTsKLSAgICB9
LAorICAgIH0KIAotICAgIF9kZWJ1Z2dlclBhdXNlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX2Rl
YnVnZ2VyUGF1c2VkKGV2ZW50KQogICAgIHsKICAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5yZXBs
YXlNYW5hZ2VyLnNlc3Npb25TdGF0ZSA9PT0gV2ViSW5zcGVjdG9yLlJlcGxheU1hbmFnZXIuU2Vz
c2lvblN0YXRlLlJlcGxheWluZykKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICB0aGlz
Ll9zdG9wVXBkYXRpbmdDdXJyZW50VGltZSgpOwotICAgIH0sCisgICAgfQogCi0gICAgX2RlYnVn
Z2VyUmVzdW1lZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX2RlYnVnZ2VyUmVzdW1lZChldmVudCkK
ICAgICB7CiAgICAgICAgIGlmIChXZWJJbnNwZWN0b3IucmVwbGF5TWFuYWdlci5zZXNzaW9uU3Rh
dGUgPT09IFdlYkluc3BlY3Rvci5SZXBsYXlNYW5hZ2VyLlNlc3Npb25TdGF0ZS5SZXBsYXlpbmcp
CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgdGhpcy5fc3RhcnRVcGRhdGluZ0N1cnJl
bnRUaW1lKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcmVjb3JkaW5nVGltZXNVcGRhdGVkOiBm
dW5jdGlvbihldmVudCkKKyAgICBfcmVjb3JkaW5nVGltZXNVcGRhdGVkKGV2ZW50KQogICAgIHsK
ICAgICAgICAgaWYgKCF0aGlzLl93YWl0aW5nVG9SZXNldEN1cnJlbnRUaW1lKQogICAgICAgICAg
ICAgcmV0dXJuOwpAQCAtNTM2LDE3ICs1MzEsMTcgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVj
b3JkaW5nQ29udGVudFZpZXcucHJvdG90eXBlID0gewogCiAgICAgICAgIHRoaXMuX3JlY29yZGlu
Zy5yZW1vdmVFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZGluZy5FdmVu
dC5UaW1lc1VwZGF0ZWQsIHRoaXMuX3JlY29yZGluZ1RpbWVzVXBkYXRlZCwgdGhpcyk7CiAgICAg
ICAgIHRoaXMuX3dhaXRpbmdUb1Jlc2V0Q3VycmVudFRpbWUgPSBmYWxzZTsKLSAgICB9LAorICAg
IH0KIAotICAgIF9jbGVhclRpbWVsaW5lOiBmdW5jdGlvbihldmVudCkKKyAgICBfY2xlYXJUaW1l
bGluZShldmVudCkKICAgICB7CiAgICAgICAgIGlmIChXZWJJbnNwZWN0b3IudGltZWxpbmVNYW5h
Z2VyLmFjdGl2ZVJlY29yZGluZyA9PT0gdGhpcy5fcmVjb3JkaW5nICYmIFdlYkluc3BlY3Rvci50
aW1lbGluZU1hbmFnZXIuaXNDYXB0dXJpbmcoKSkKICAgICAgICAgICAgIFdlYkluc3BlY3Rvci50
aW1lbGluZU1hbmFnZXIuc3RvcENhcHR1cmluZygpOwogCiAgICAgICAgIHRoaXMuX3JlY29yZGlu
Zy5yZXNldCgpOwotICAgIH0sCisgICAgfQogCi0gICAgX3VwZGF0ZVRpbWVsaW5lT3ZlcnZpZXdI
ZWlnaHQ6IGZ1bmN0aW9uKCkKKyAgICBfdXBkYXRlVGltZWxpbmVPdmVydmlld0hlaWdodCgpCiAg
ICAgewogICAgICAgICBjb25zdCB0aW1lbGluZUhlaWdodCA9IDM2OwogICAgICAgICBjb25zdCBy
ZW5kZXJpbmdGcmFtZXNUaW1lbGluZUhlaWdodCA9IDEwODsKQEAgLTU2Nyw5ICs1NjIsOSBAQCBX
ZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRpbmdDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIHZhciBzdHlsZVZhbHVlID0gKHJ1bGVySGVpZ2h0ICsgb3ZlcnZpZXdIZWlnaHQpICsg
InB4IjsKICAgICAgICAgdGhpcy5fY3VycmVudFRpbWVsaW5lT3ZlcnZpZXcuZWxlbWVudC5zdHls
ZS5oZWlnaHQgPSBzdHlsZVZhbHVlOwogICAgICAgICB0aGlzLl9jb250ZW50Vmlld0NvbnRhaW5l
ci5lbGVtZW50LnN0eWxlLnRvcCA9IHN0eWxlVmFsdWU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBf
dGltZWxpbmVBZGRlZDogZnVuY3Rpb24odGltZWxpbmVPckV2ZW50KQorICAgIF90aW1lbGluZUFk
ZGVkKHRpbWVsaW5lT3JFdmVudCkKICAgICB7CiAgICAgICAgIHZhciB0aW1lbGluZSA9IHRpbWVs
aW5lT3JFdmVudDsKICAgICAgICAgaWYgKCEodGltZWxpbmUgaW5zdGFuY2VvZiBXZWJJbnNwZWN0
b3IuVGltZWxpbmUpKQpAQCAtNTg3LDkgKzU4Miw5IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJl
Y29yZGluZ0NvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fcGF0aENvbXBv
bmVudE1hcC5zZXQodGltZWxpbmUsIHBhdGhDb21wb25lbnQpOwogCiAgICAgICAgIHRoaXMuX3Rp
bWVsaW5lQ291bnRDaGFuZ2VkKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdGltZWxpbmVSZW1v
dmVkOiBmdW5jdGlvbihldmVudCkKKyAgICBfdGltZWxpbmVSZW1vdmVkKGV2ZW50KQogICAgIHsK
ICAgICAgICAgdmFyIHRpbWVsaW5lID0gZXZlbnQuZGF0YS50aW1lbGluZTsKICAgICAgICAgY29u
c29sZS5hc3NlcnQodGltZWxpbmUgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuVGltZWxpbmUsIHRp
bWVsaW5lKTsKQEAgLTYwNCw5ICs1OTksOSBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRp
bmdDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX3BhdGhDb21wb25lbnRN
YXAuZGVsZXRlKHRpbWVsaW5lKTsKIAogICAgICAgICB0aGlzLl90aW1lbGluZUNvdW50Q2hhbmdl
ZCgpOwotICAgIH0sCisgICAgfQogCi0gICAgX3RpbWVsaW5lQ291bnRDaGFuZ2VkOiBmdW5jdGlv
bigpCisgICAgX3RpbWVsaW5lQ291bnRDaGFuZ2VkKCkKICAgICB7CiAgICAgICAgIHZhciBwcmV2
aW91c1BhdGhDb21wb25lbnQgPSBudWxsOwogICAgICAgICBmb3IgKHZhciBwYXRoQ29tcG9uZW50
IG9mIHRoaXMuX3BhdGhDb21wb25lbnRNYXAudmFsdWVzKCkpIHsKQEAgLTYxOSw5ICs2MTQsOSBA
QCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRpbmdDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7
CiAgICAgICAgIH0KIAogICAgICAgICB0aGlzLl91cGRhdGVUaW1lbGluZU92ZXJ2aWV3SGVpZ2h0
KCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcmVjb3JkaW5nUmVzZXQ6IGZ1bmN0aW9uKGV2ZW50
KQorICAgIF9yZWNvcmRpbmdSZXNldChldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMuX2N1cnJl
bnRUaW1lID0gTmFOOwogCkBAIC02NDIsMTcgKzYzNywxNyBAQCBXZWJJbnNwZWN0b3IuVGltZWxp
bmVSZWNvcmRpbmdDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX292ZXJ2
aWV3VGltZWxpbmVWaWV3LnJlc2V0KCk7CiAgICAgICAgIGZvciAodmFyIHRpbWVsaW5lVmlldyBv
ZiB0aGlzLl90aW1lbGluZVZpZXdNYXAudmFsdWVzKCkpCiAgICAgICAgICAgICB0aW1lbGluZVZp
ZXcucmVzZXQoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9yZWNvcmRpbmdVbmxvYWRlZDogZnVu
Y3Rpb24oZXZlbnQpCisgICAgX3JlY29yZGluZ1VubG9hZGVkKGV2ZW50KQogICAgIHsKICAgICAg
ICAgY29uc29sZS5hc3NlcnQoIXRoaXMuX3VwZGF0aW5nKTsKIAogICAgICAgICBXZWJJbnNwZWN0
b3IudGltZWxpbmVNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRpbWVs
aW5lTWFuYWdlci5FdmVudC5DYXB0dXJpbmdTdGFydGVkLCB0aGlzLl9jYXB0dXJpbmdTdGFydGVk
LCB0aGlzKTsKICAgICAgICAgV2ViSW5zcGVjdG9yLnRpbWVsaW5lTWFuYWdlci5yZW1vdmVFdmVu
dExpc3RlbmVyKFdlYkluc3BlY3Rvci5UaW1lbGluZU1hbmFnZXIuRXZlbnQuQ2FwdHVyaW5nU3Rv
cHBlZCwgdGhpcy5fY2FwdHVyaW5nU3RvcHBlZCwgdGhpcyk7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBfdGltZVJhbmdlU2VsZWN0aW9uQ2hhbmdlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX3RpbWVS
YW5nZVNlbGVjdGlvbkNoYW5nZWQoZXZlbnQpCiAgICAgewogICAgICAgICBpZiAodGhpcy5jdXJy
ZW50VGltZWxpbmVWaWV3KSB7CiAgICAgICAgICAgICB0aGlzLmN1cnJlbnRUaW1lbGluZVZpZXcu
c3RhcnRUaW1lID0gdGhpcy5fY3VycmVudFRpbWVsaW5lT3ZlcnZpZXcuc2VsZWN0aW9uU3RhcnRU
aW1lOwpAQCAtNjcyLDkgKzY2Nyw5IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZGluZ0Nv
bnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGlmIChzZWxlY3RlZFRyZWVFbGVt
ZW50ICYmIHNlbGVjdGVkVHJlZUVsZW1lbnQuaGlkZGVuICE9PSBzZWxlY3Rpb25XYXNIaWRkZW4p
CiAgICAgICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVj
dG9yLkNvbnRlbnRWaWV3LkV2ZW50LlNlbGVjdGlvblBhdGhDb21wb25lbnRzRGlkQ2hhbmdlKTsK
ICAgICAgICAgfS5iaW5kKHRoaXMpKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9yZWNvcmRTZWxl
Y3RlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX3JlY29yZFNlbGVjdGVkKGV2ZW50KQogICAgIHsK
ICAgICAgICAgdmFyIHRpbWVsaW5lVmlldyA9IHRoaXMuX3RpbWVsaW5lVmlld01hcC5nZXQoZXZl
bnQuZGF0YS50aW1lbGluZSk7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRpbWVsaW5lVmlldyA9
PT0gdGhpcy5jdXJyZW50VGltZWxpbmVWaWV3LCB0aW1lbGluZVZpZXcpOwpAQCAtNjk4LDkgKzY5
Myw5IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZGluZ0NvbnRlbnRWaWV3LnByb3RvdHlw
ZSA9IHsKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICB0cmVlRWxlbWVudC5yZXZlYWxB
bmRTZWxlY3QoZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBfdXBkYXRlRnJhbWVTZWxlY3Rpb246IGZ1bmN0aW9uKCkKKyAgICBfdXBkYXRlRnJhbWVTZWxl
Y3Rpb24oKQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fcmVuZGVyaW5nRnJh
bWVUaW1lbGluZSk7CiAgICAgICAgIGlmICghdGhpcy5fcmVuZGVyaW5nRnJhbWVUaW1lbGluZSkK
QEAgLTcxMSwzICs3MDYsNiBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRpbmdDb250ZW50
Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX3RpbWVsaW5lU2lkZWJhclBhbmVsLnVw
ZGF0ZUZyYW1lU2VsZWN0aW9uKHN0YXJ0SW5kZXgsIGVuZEluZGV4KTsKICAgICB9CiB9OworCitX
ZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRpbmdDb250ZW50Vmlldy5TZWxlY3RlZFRpbWVsaW5l
VHlwZUNvb2tpZUtleSA9ICJ0aW1lbGluZS1yZWNvcmRpbmctY29udGVudC12aWV3LXNlbGVjdGVk
LXRpbWVsaW5lLXR5cGUiOworV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkaW5nQ29udGVudFZp
ZXcuT3ZlcnZpZXdUaW1lbGluZVZpZXdDb29raWVWYWx1ZSA9ICJ0aW1lbGluZS1yZWNvcmRpbmct
Y29udGVudC12aWV3LW92ZXJ2aWV3LXRpbWVsaW5lLXZpZXciOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVSdWxlci5qcyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lUnVsZXIuanMK
aW5kZXggOGQ0ZmNiYWQ0NzNmNzlhNjU4OGM0ZmYzMDRhNGUwOWIxNTY1YjExOS4uOTcyMTNkNDVi
OGY2MmQ5MTYyM2M2MzRkMzk4N2Q0NGVhYjBlNDg4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVSdWxlci5qcworKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZVJ1bGVyLmpzCkBA
IC0yMyw2NiArMjMsNTIgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAq
LwogCi1XZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlciA9IGZ1bmN0aW9uKCkKK1dlYkluc3BlY3Rv
ci5UaW1lbGluZVJ1bGVyID0gY2xhc3MgVGltZWxpbmVSdWxlciBleHRlbmRzIFdlYkluc3BlY3Rv
ci5PYmplY3QKIHsKLSAgICAvLyBGSVhNRTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9y
Lk9iamVjdCBzdWJjbGFzcywgYW5kIGNhbGwgc3VwZXIoKS4KLSAgICAvLyBXZWJJbnNwZWN0b3Iu
T2JqZWN0LmNhbGwodGhpcyk7Ci0KLSAgICB0aGlzLl9lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgiZGl2Iik7Ci0gICAgdGhpcy5fZWxlbWVudC5jbGFzc05hbWUgPSAidGltZWxpbmUt
cnVsZXIiOwotCi0gICAgdGhpcy5faGVhZGVyRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoImRpdiIpOwotICAgIHRoaXMuX2hlYWRlckVsZW1lbnQuY2xhc3NOYW1lID0gImhlYWRlciI7
Ci0gICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9oZWFkZXJFbGVtZW50KTsKLQot
ICAgIHRoaXMuX21hcmtlcnNFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7
Ci0gICAgdGhpcy5fbWFya2Vyc0VsZW1lbnQuY2xhc3NOYW1lID0gIm1hcmtlcnMiOwotICAgIHRo
aXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fbWFya2Vyc0VsZW1lbnQpOwotCi0gICAgdGhp
cy5femVyb1RpbWUgPSAwOwotICAgIHRoaXMuX3N0YXJ0VGltZSA9IDA7Ci0gICAgdGhpcy5fZW5k
VGltZSA9IDA7Ci0gICAgdGhpcy5fZHVyYXRpb24gPSBOYU47Ci0gICAgdGhpcy5fc2Vjb25kc1Bl
clBpeGVsID0gMDsKLSAgICB0aGlzLl9zZWxlY3Rpb25TdGFydFRpbWUgPSAwOwotICAgIHRoaXMu
X3NlbGVjdGlvbkVuZFRpbWUgPSBJbmZpbml0eTsKLSAgICB0aGlzLl9lbmRUaW1lUGlubmVkID0g
ZmFsc2U7Ci0gICAgdGhpcy5fYWxsb3dzQ2xpcHBlZExhYmVscyA9IGZhbHNlOwotICAgIHRoaXMu
X2FsbG93c1RpbWVSYW5nZVNlbGVjdGlvbiA9IGZhbHNlOwotICAgIHRoaXMuX21pbmltdW1TZWxl
Y3Rpb25EdXJhdGlvbiA9IDAuMDE7Ci0gICAgdGhpcy5fZm9ybWF0TGFiZWxDYWxsYmFjayA9IG51
bGw7Ci0gICAgdGhpcy5fc3VwcHJlc3NOZXh0VGltZVJhbmdlU2VsZWN0aW9uQ2hhbmdlZEV2ZW50
ID0gZmFsc2U7Ci0gICAgdGhpcy5fdGltZVJhbmdlU2VsZWN0aW9uQ2hhbmdlZCA9IGZhbHNlOwot
Ci0gICAgdGhpcy5fbWFya2VyRWxlbWVudE1hcCA9IG5ldyBNYXA7Ci19OworICAgIGNvbnN0cnVj
dG9yKCkKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CiAKLVdlYkluc3BlY3Rvci5UaW1lbGluZVJ1
bGVyLk1pbmltdW1MZWZ0RGl2aWRlclNwYWNpbmcgPSA0ODsKLVdlYkluc3BlY3Rvci5UaW1lbGlu
ZVJ1bGVyLk1pbmltdW1EaXZpZGVyU3BhY2luZyA9IDY0OworICAgICAgICB0aGlzLl9lbGVtZW50
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIHRoaXMuX2VsZW1lbnQu
Y2xhc3NMaXN0LmFkZCgidGltZWxpbmUtcnVsZXIiKTsKIAotV2ViSW5zcGVjdG9yLlRpbWVsaW5l
UnVsZXIuQWxsb3dzVGltZVJhbmdlU2VsZWN0aW9uU3R5bGVDbGFzc05hbWUgPSAiYWxsb3dzLXRp
bWUtcmFuZ2Utc2VsZWN0aW9uIjsKLVdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyLlJlc2l6aW5n
U2VsZWN0aW9uU3R5bGVDbGFzc05hbWUgPSAicmVzaXppbmctc2VsZWN0aW9uIjsKLVdlYkluc3Bl
Y3Rvci5UaW1lbGluZVJ1bGVyLkRpdmlkZXJFbGVtZW50U3R5bGVDbGFzc05hbWUgPSAiZGl2aWRl
ciI7Ci1XZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlci5EaXZpZGVyTGFiZWxFbGVtZW50U3R5bGVD
bGFzc05hbWUgPSAibGFiZWwiOworICAgICAgICB0aGlzLl9oZWFkZXJFbGVtZW50ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIHRoaXMuX2hlYWRlckVsZW1lbnQuY2xh
c3NMaXN0LmFkZCgiaGVhZGVyIik7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQo
dGhpcy5faGVhZGVyRWxlbWVudCk7CiAKLVdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyLkV2ZW50
ID0gewotICAgIFRpbWVSYW5nZVNlbGVjdGlvbkNoYW5nZWQ6ICJ0aW1lLXJ1bGVyLXRpbWUtcmFu
Z2Utc2VsZWN0aW9uLWNoYW5nZWQiCi19OworICAgICAgICB0aGlzLl9tYXJrZXJzRWxlbWVudCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICB0aGlzLl9tYXJrZXJzRWxl
bWVudC5jbGFzc0xpc3QuYWRkKCJtYXJrZXJzIik7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuYXBw
ZW5kQ2hpbGQodGhpcy5fbWFya2Vyc0VsZW1lbnQpOwogCi1XZWJJbnNwZWN0b3IuVGltZWxpbmVS
dWxlci5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5UaW1lbGlu
ZVJ1bGVyLAorICAgICAgICB0aGlzLl96ZXJvVGltZSA9IDA7CisgICAgICAgIHRoaXMuX3N0YXJ0
VGltZSA9IDA7CisgICAgICAgIHRoaXMuX2VuZFRpbWUgPSAwOworICAgICAgICB0aGlzLl9kdXJh
dGlvbiA9IE5hTjsKKyAgICAgICAgdGhpcy5fc2Vjb25kc1BlclBpeGVsID0gMDsKKyAgICAgICAg
dGhpcy5fc2VsZWN0aW9uU3RhcnRUaW1lID0gMDsKKyAgICAgICAgdGhpcy5fc2VsZWN0aW9uRW5k
VGltZSA9IEluZmluaXR5OworICAgICAgICB0aGlzLl9lbmRUaW1lUGlubmVkID0gZmFsc2U7Cisg
ICAgICAgIHRoaXMuX2FsbG93c0NsaXBwZWRMYWJlbHMgPSBmYWxzZTsKKyAgICAgICAgdGhpcy5f
YWxsb3dzVGltZVJhbmdlU2VsZWN0aW9uID0gZmFsc2U7CisgICAgICAgIHRoaXMuX21pbmltdW1T
ZWxlY3Rpb25EdXJhdGlvbiA9IDAuMDE7CisgICAgICAgIHRoaXMuX2Zvcm1hdExhYmVsQ2FsbGJh
Y2sgPSBudWxsOworICAgICAgICB0aGlzLl9zdXBwcmVzc05leHRUaW1lUmFuZ2VTZWxlY3Rpb25D
aGFuZ2VkRXZlbnQgPSBmYWxzZTsKKyAgICAgICAgdGhpcy5fdGltZVJhbmdlU2VsZWN0aW9uQ2hh
bmdlZCA9IGZhbHNlOworCisgICAgICAgIHRoaXMuX21hcmtlckVsZW1lbnRNYXAgPSBuZXcgTWFw
OworICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IGVsZW1lbnQoKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgYWxs
b3dzQ2xpcHBlZExhYmVscygpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fYWxsb3dzQ2xp
cHBlZExhYmVsczsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBhbGxvd3NDbGlwcGVkTGFiZWxz
KHgpCiAgICAgewpAQCAtOTIsNyArNzgsNyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlci5w
cm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2FsbG93c0NsaXBwZWRMYWJlbHMgPSB4IHx8IGZh
bHNlOwogCiAgICAgICAgIHRoaXMuX25lZWRzTGF5b3V0KCk7Ci0gICAgfSwKKyAgICB9CiAKICAg
ICBzZXQgZm9ybWF0TGFiZWxDYWxsYmFjayh4KQogICAgIHsKQEAgLTEwNCwxMiArOTAsMTIgQEAg
V2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9m
b3JtYXRMYWJlbENhbGxiYWNrID0geCB8fCBudWxsOwogCiAgICAgICAgIHRoaXMuX25lZWRzTGF5
b3V0KCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgYWxsb3dzVGltZVJhbmdlU2VsZWN0aW9u
KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9hbGxvd3NUaW1lUmFuZ2VTZWxlY3Rpb247
Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgYWxsb3dzVGltZVJhbmdlU2VsZWN0aW9uKHgpCiAg
ICAgewpAQCAtMTYwLDIyICsxNDYsMjIgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIucHJv
dG90eXBlID0gewogICAgICAgICAgICAgZGVsZXRlIHRoaXMuX3JpZ2h0U2VsZWN0aW9uSGFuZGxl
RWxlbWVudDsKICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9zZWxlY3Rpb25EcmFnRWxlbWVudDsK
ICAgICAgICAgfQotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IG1pbmltdW1TZWxlY3Rpb25EdXJh
dGlvbigpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fbWluaW11bVNlbGVjdGlvbkR1cmF0
aW9uOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IG1pbmltdW1TZWxlY3Rpb25EdXJhdGlvbih4
KQogICAgIHsKICAgICAgICAgdGhpcy5fbWluaW11bVNlbGVjdGlvbkR1cmF0aW9uID0geDsKLSAg
ICB9LAorICAgIH0KIAogICAgIGdldCB6ZXJvVGltZSgpCiAgICAgewogICAgICAgICByZXR1cm4g
dGhpcy5femVyb1RpbWU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgemVyb1RpbWUoeCkKICAg
ICB7CkBAIC0xODUsMTIgKzE3MSwxMiBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlci5wcm90
b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX3plcm9UaW1lID0geCB8fCAwOwogCiAgICAgICAgIHRo
aXMuX25lZWRzTGF5b3V0KCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgc3RhcnRUaW1lKCkK
ICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9zdGFydFRpbWU7Ci0gICAgfSwKKyAgICB9CiAK
ICAgICBzZXQgc3RhcnRUaW1lKHgpCiAgICAgewpAQCAtMjAzLDE0ICsxODksMTQgQEAgV2ViSW5z
cGVjdG9yLlRpbWVsaW5lUnVsZXIucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5fZW5k
VGltZSA9IHRoaXMuX3N0YXJ0VGltZSArIHRoaXMuX2R1cmF0aW9uOwogCiAgICAgICAgIHRoaXMu
X25lZWRzTGF5b3V0KCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgZHVyYXRpb24oKQogICAg
IHsKICAgICAgICAgaWYgKCFpc05hTih0aGlzLl9kdXJhdGlvbikpCiAgICAgICAgICAgICByZXR1
cm4gdGhpcy5fZHVyYXRpb247CiAgICAgICAgIHJldHVybiB0aGlzLmVuZFRpbWUgLSB0aGlzLnN0
YXJ0VGltZTsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBkdXJhdGlvbih4KQogICAgIHsKQEAg
LTIyNiwxNCArMjEyLDE0IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyLnByb3RvdHlwZSA9
IHsKICAgICAgICAgICAgIHRoaXMuX2VuZFRpbWVQaW5uZWQgPSBmYWxzZTsKIAogICAgICAgICB0
aGlzLl9uZWVkc0xheW91dCgpOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGVuZFRpbWUoKQog
ICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9lbmRUaW1lUGlubmVkICYmIHRoaXMuX3NjaGVkdWxl
ZExheW91dFVwZGF0ZUlkZW50aWZpZXIpCiAgICAgICAgICAgICB0aGlzLl9yZWNhbGN1bGF0ZSgp
OwogICAgICAgICByZXR1cm4gdGhpcy5fZW5kVGltZTsKLSAgICB9LAorICAgIH0KIAogICAgIHNl
dCBlbmRUaW1lKHgpCiAgICAgewpAQCAtMjQ0LDE0ICsyMzAsMTQgQEAgV2ViSW5zcGVjdG9yLlRp
bWVsaW5lUnVsZXIucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9lbmRUaW1lUGlubmVkID0g
dHJ1ZTsKIAogICAgICAgICB0aGlzLl9uZWVkc0xheW91dCgpOwotICAgIH0sCisgICAgfQogCiAg
ICAgZ2V0IHNlY29uZHNQZXJQaXhlbCgpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fc2NoZWR1
bGVkTGF5b3V0VXBkYXRlSWRlbnRpZmllcikKICAgICAgICAgICAgIHRoaXMuX3JlY2FsY3VsYXRl
KCk7CiAgICAgICAgIHJldHVybiB0aGlzLl9zZWNvbmRzUGVyUGl4ZWw7Ci0gICAgfSwKKyAgICB9
CiAKICAgICBzZXQgc2Vjb25kc1BlclBpeGVsKHgpCiAgICAgewpAQCAtMjYzLDEyICsyNDksMTIg
QEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIucHJvdG90eXBlID0gewogICAgICAgICB0aGlz
Ll9jdXJyZW50U2xpY2VUaW1lID0gMDsKIAogICAgICAgICB0aGlzLl9uZWVkc0xheW91dCgpOwot
ICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHNuYXBJbnRlcnZhbCgpCiAgICAgewogICAgICAgICBy
ZXR1cm4gdGhpcy5fc25hcEludGVydmFsOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IHNuYXBJ
bnRlcnZhbCh4KQogICAgIHsKQEAgLTI3NiwxMiArMjYyLDEyIEBAIFdlYkluc3BlY3Rvci5UaW1l
bGluZVJ1bGVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICB0
aGlzLl9zbmFwSW50ZXJ2YWwgPSB4OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHNlbGVjdGlv
blN0YXJ0VGltZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fc2VsZWN0aW9uU3RhcnRU
aW1lOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IHNlbGVjdGlvblN0YXJ0VGltZSh4KQogICAg
IHsKQEAgLTI5MywxMiArMjc5LDEyIEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgdGhpcy5fdGltZVJhbmdlU2VsZWN0aW9uQ2hhbmdlZCA9IHRydWU7
CiAKICAgICAgICAgdGhpcy5fbmVlZHNTZWxlY3Rpb25MYXlvdXQoKTsKLSAgICB9LAorICAgIH0K
IAogICAgIGdldCBzZWxlY3Rpb25FbmRUaW1lKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlz
Ll9zZWxlY3Rpb25FbmRUaW1lOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IHNlbGVjdGlvbkVu
ZFRpbWUoeCkKICAgICB7CkBAIC0zMTAsOSArMjk2LDkgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5l
UnVsZXIucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl90aW1lUmFuZ2VTZWxlY3Rpb25DaGFu
Z2VkID0gdHJ1ZTsKIAogICAgICAgICB0aGlzLl9uZWVkc1NlbGVjdGlvbkxheW91dCgpOwotICAg
IH0sCisgICAgfQogCi0gICAgYWRkTWFya2VyOiBmdW5jdGlvbihtYXJrZXIpCisgICAgYWRkTWFy
a2VyKG1hcmtlcikKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KG1hcmtlciBpbnN0YW5j
ZW9mIFdlYkluc3BlY3Rvci5UaW1lbGluZU1hcmtlcik7CiAKQEAgLTMyNywxNCArMzEzLDE0IEBA
IFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5f
bWFya2VyRWxlbWVudE1hcC5zZXQobWFya2VyLCBtYXJrZXJFbGVtZW50KTsKIAogICAgICAgICB0
aGlzLl9uZWVkc01hcmtlckxheW91dCgpOwotICAgIH0sCisgICAgfQogCi0gICAgZWxlbWVudEZv
ck1hcmtlcjogZnVuY3Rpb24obWFya2VyKQorICAgIGVsZW1lbnRGb3JNYXJrZXIobWFya2VyKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX21hcmtlckVsZW1lbnRNYXAuZ2V0KG1hcmtlcikg
fHwgbnVsbDsKLSAgICB9LAorICAgIH0KIAotICAgIHVwZGF0ZUxheW91dDogZnVuY3Rpb24oKQor
ICAgIHVwZGF0ZUxheW91dCgpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fc2NoZWR1bGVkTGF5
b3V0VXBkYXRlSWRlbnRpZmllcikgewogICAgICAgICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUo
dGhpcy5fc2NoZWR1bGVkTGF5b3V0VXBkYXRlSWRlbnRpZmllcik7CkBAIC00NTAsOSArNDM2LDkg
QEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIucHJvdG90eXBlID0gewogCiAgICAgICAgIHRo
aXMuX3VwZGF0ZU1hcmtlcnModmlzaWJsZVdpZHRoLCBkdXJhdGlvbik7CiAgICAgICAgIHRoaXMu
X3VwZGF0ZVNlbGVjdGlvbih2aXNpYmxlV2lkdGgsIGR1cmF0aW9uKTsKLSAgICB9LAorICAgIH0K
IAotICAgIHVwZGF0ZUxheW91dElmTmVlZGVkOiBmdW5jdGlvbigpCisgICAgdXBkYXRlTGF5b3V0
SWZOZWVkZWQoKQogICAgIHsKICAgICAgICAgLy8gSWYgdGhlcmUgaXMgYSBtYWluIGxheW91dCBz
Y2hlZHVsZWQgd2UgY2FuIGp1c3QgdXBkYXRlIGxheW91dCBhbmQgcmV0dXJuLCBzaW5jZSB0aGF0
CiAgICAgICAgIC8vIHdpbGwgdXBkYXRlIG1hcmtlcnMgYW5kIHRoZSBzZWxlY3Rpb24gYXQgdGhl
IHNhbWUgdGltZS4KQEAgLTQ3MCwxMSArNDU2LDExIEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1
bGVyLnByb3RvdHlwZSA9IHsKIAogICAgICAgICBpZiAodGhpcy5fc2NoZWR1bGVkU2VsZWN0aW9u
TGF5b3V0VXBkYXRlSWRlbnRpZmllcikKICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZVNlbGVjdGlv
bih2aXNpYmxlV2lkdGgsIHRoaXMuZHVyYXRpb24pOwotICAgIH0sCisgICAgfQogCiAgICAgLy8g
UHJpdmF0ZQogCi0gICAgX25lZWRzTGF5b3V0OiBmdW5jdGlvbigpCisgICAgX25lZWRzTGF5b3V0
KCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9zY2hlZHVsZWRMYXlvdXRVcGRhdGVJZGVudGlm
aWVyKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtNDkwLDkgKzQ3Niw5IEBAIFdlYkluc3BlY3Rv
ci5UaW1lbGluZVJ1bGVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIHRoaXMu
X3NjaGVkdWxlZExheW91dFVwZGF0ZUlkZW50aWZpZXIgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUo
dGhpcy51cGRhdGVMYXlvdXQuYmluZCh0aGlzKSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfbmVl
ZHNNYXJrZXJMYXlvdXQ6IGZ1bmN0aW9uKCkKKyAgICBfbmVlZHNNYXJrZXJMYXlvdXQoKQogICAg
IHsKICAgICAgICAgLy8gSWYgbGF5b3V0IGlzIHNjaGVkdWxlZCwgYWJvcnQgc2luY2UgbWFya2Vy
cyB3aWxsIGJlIHVwZGF0ZWQgd2hlbiBsYXlvdXQgaGFwcGVucy4KICAgICAgICAgaWYgKHRoaXMu
X3NjaGVkdWxlZExheW91dFVwZGF0ZUlkZW50aWZpZXIpCkBAIC01MTMsOSArNDk5LDkgQEAgV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAg
ICAgdGhpcy5fc2NoZWR1bGVkTWFya2VyTGF5b3V0VXBkYXRlSWRlbnRpZmllciA9IHJlcXVlc3RB
bmltYXRpb25GcmFtZSh1cGRhdGUuYmluZCh0aGlzKSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBf
bmVlZHNTZWxlY3Rpb25MYXlvdXQ6IGZ1bmN0aW9uKCkKKyAgICBfbmVlZHNTZWxlY3Rpb25MYXlv
dXQoKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9hbGxvd3NUaW1lUmFuZ2VTZWxlY3Rpb24p
CiAgICAgICAgICAgICByZXR1cm47CkBAIC01MzksOSArNTI1LDkgQEAgV2ViSW5zcGVjdG9yLlRp
bWVsaW5lUnVsZXIucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgdGhpcy5fc2No
ZWR1bGVkU2VsZWN0aW9uTGF5b3V0VXBkYXRlSWRlbnRpZmllciA9IHJlcXVlc3RBbmltYXRpb25G
cmFtZSh1cGRhdGUuYmluZCh0aGlzKSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcmVjYWxjdWxh
dGU6IGZ1bmN0aW9uKCkKKyAgICBfcmVjYWxjdWxhdGUoKQogICAgIHsKICAgICAgICAgdmFyIHZp
c2libGVXaWR0aCA9IHRoaXMuX2VsZW1lbnQuY2xpZW50V2lkdGg7CiAgICAgICAgIGlmICh2aXNp
YmxlV2lkdGggPD0gMCkKQEAgLTU1OCw5ICs1NDQsOSBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVS
dWxlci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9lbmRUaW1lID0gdGhpcy5fc3Rh
cnRUaW1lICsgKHZpc2libGVXaWR0aCAqIHRoaXMuX3NlY29uZHNQZXJQaXhlbCk7CiAKICAgICAg
ICAgcmV0dXJuIHZpc2libGVXaWR0aDsKLSAgICB9LAorICAgIH0KIAotICAgIF91cGRhdGVQb3Np
dGlvbk9mRWxlbWVudDogZnVuY3Rpb24oZWxlbWVudCwgbmV3UG9zaXRpb24sIHZpc2libGVXaWR0
aCwgcHJvcGVydHkpCisgICAgX3VwZGF0ZVBvc2l0aW9uT2ZFbGVtZW50KGVsZW1lbnQsIG5ld1Bv
c2l0aW9uLCB2aXNpYmxlV2lkdGgsIHByb3BlcnR5KQogICAgIHsKICAgICAgICAgcHJvcGVydHkg
PSBwcm9wZXJ0eSB8fCAibGVmdCI7CiAKQEAgLTU3MCw5ICs1NTYsOSBAQCBXZWJJbnNwZWN0b3Iu
VGltZWxpbmVSdWxlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBjdXJyZW50UG9zaXRpb24g
PSBwYXJzZUZsb2F0KGVsZW1lbnQuc3R5bGVbcHJvcGVydHldKS50b0ZpeGVkKDIpOwogICAgICAg
ICBpZiAoY3VycmVudFBvc2l0aW9uICE9PSBuZXdQb3NpdGlvbikKICAgICAgICAgICAgIGVsZW1l
bnQuc3R5bGVbcHJvcGVydHldID0gbmV3UG9zaXRpb24gKyAodGhpcy5fZW5kVGltZVBpbm5lZCA/
ICIlIiA6ICJweCIpOwotICAgIH0sCisgICAgfQogCi0gICAgX3VwZGF0ZU1hcmtlcnM6IGZ1bmN0
aW9uKHZpc2libGVXaWR0aCwgZHVyYXRpb24pCisgICAgX3VwZGF0ZU1hcmtlcnModmlzaWJsZVdp
ZHRoLCBkdXJhdGlvbikKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9zY2hlZHVsZWRNYXJrZXJM
YXlvdXRVcGRhdGVJZGVudGlmaWVyKSB7CiAgICAgICAgICAgICBjYW5jZWxBbmltYXRpb25GcmFt
ZSh0aGlzLl9zY2hlZHVsZWRNYXJrZXJMYXlvdXRVcGRhdGVJZGVudGlmaWVyKTsKQEAgLTU4Nyw5
ICs1NzMsOSBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlci5wcm90b3R5cGUgPSB7CiAgICAg
ICAgICAgICBpZiAoIW1hcmtlckVsZW1lbnQucGFyZW50Tm9kZSkKICAgICAgICAgICAgICAgICB0
aGlzLl9tYXJrZXJzRWxlbWVudC5hcHBlbmRDaGlsZChtYXJrZXJFbGVtZW50KTsKICAgICAgICAg
fSwgdGhpcyk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdXBkYXRlU2VsZWN0aW9uOiBmdW5jdGlv
bih2aXNpYmxlV2lkdGgsIGR1cmF0aW9uKQorICAgIF91cGRhdGVTZWxlY3Rpb24odmlzaWJsZVdp
ZHRoLCBkdXJhdGlvbikKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9zY2hlZHVsZWRTZWxlY3Rp
b25MYXlvdXRVcGRhdGVJZGVudGlmaWVyKSB7CiAgICAgICAgICAgICBjYW5jZWxBbmltYXRpb25G
cmFtZSh0aGlzLl9zY2hlZHVsZWRTZWxlY3Rpb25MYXlvdXRVcGRhdGVJZGVudGlmaWVyKTsKQEAg
LTYyMCwyNSArNjA2LDI1IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyLnByb3RvdHlwZSA9
IHsKICAgICAgICAgfQogCiAgICAgICAgIHRoaXMuX2Rpc3BhdGNoVGltZVJhbmdlU2VsZWN0aW9u
Q2hhbmdlZEV2ZW50KCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZm9ybWF0RGl2aWRlckxhYmVs
VGV4dDogZnVuY3Rpb24odmFsdWUpCisgICAgX2Zvcm1hdERpdmlkZXJMYWJlbFRleHQodmFsdWUp
CiAgICAgewogICAgICAgICBpZiAodGhpcy5fZm9ybWF0TGFiZWxDYWxsYmFjaykKICAgICAgICAg
ICAgIHJldHVybiB0aGlzLl9mb3JtYXRMYWJlbENhbGxiYWNrKHZhbHVlKTsKIAogICAgICAgICBy
ZXR1cm4gTnVtYmVyLnNlY29uZHNUb1N0cmluZyh2YWx1ZSwgdHJ1ZSk7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBfc25hcFZhbHVlOiBmdW5jdGlvbih2YWx1ZSkKKyAgICBfc25hcFZhbHVlKHZhbHVl
KQogICAgIHsKICAgICAgICAgaWYgKCF2YWx1ZSB8fCAhdGhpcy5zbmFwSW50ZXJ2YWwpCiAgICAg
ICAgICAgICByZXR1cm4gdmFsdWU7CiAKICAgICAgICAgcmV0dXJuIE1hdGgucm91bmQodmFsdWUg
LyB0aGlzLnNuYXBJbnRlcnZhbCkgKiB0aGlzLnNuYXBJbnRlcnZhbDsKLSAgICB9LAorICAgIH0K
IAotICAgIF9kaXNwYXRjaFRpbWVSYW5nZVNlbGVjdGlvbkNoYW5nZWRFdmVudDogZnVuY3Rpb24o
KQorICAgIF9kaXNwYXRjaFRpbWVSYW5nZVNlbGVjdGlvbkNoYW5nZWRFdmVudCgpCiAgICAgewog
ICAgICAgICBpZiAoIXRoaXMuX3RpbWVSYW5nZVNlbGVjdGlvbkNoYW5nZWQpCiAgICAgICAgICAg
ICByZXR1cm47CkBAIC02NTEsMTQgKzYzNywxNCBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxl
ci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX3RpbWVSYW5nZVNlbGVjdGlvbkNoYW5nZWQg
PSBmYWxzZTsKIAogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNw
ZWN0b3IuVGltZWxpbmVSdWxlci5FdmVudC5UaW1lUmFuZ2VTZWxlY3Rpb25DaGFuZ2VkKTsKLSAg
ICB9LAorICAgIH0KIAotICAgIF90aW1lbGluZU1hcmtlclRpbWVDaGFuZ2VkOiBmdW5jdGlvbigp
CisgICAgX3RpbWVsaW5lTWFya2VyVGltZUNoYW5nZWQoKQogICAgIHsKICAgICAgICAgdGhpcy5f
bmVlZHNNYXJrZXJMYXlvdXQoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9oYW5kbGVNb3VzZURv
d246IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9oYW5kbGVNb3VzZURvd24oZXZlbnQpCiAgICAgewog
ICAgICAgICAvLyBPbmx5IGhhbmRsZSBsZWZ0IG1vdXNlIGNsaWNrcy4KICAgICAgICAgaWYgKGV2
ZW50LmJ1dHRvbiAhPT0gMCB8fCBldmVudC5jdHJsS2V5KQpAQCAtNjg0LDkgKzY3MCw5IEBAIFdl
Ykluc3BlY3Rvci5UaW1lbGluZVJ1bGVyLnByb3RvdHlwZSA9IHsKIAogICAgICAgICBldmVudC5w
cmV2ZW50RGVmYXVsdCgpOwogICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsKLSAgICB9
LAorICAgIH0KIAotICAgIF9oYW5kbGVNb3VzZU1vdmU6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9o
YW5kbGVNb3VzZU1vdmUoZXZlbnQpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChldmVu
dC5idXR0b24gPT09IDApOwogCkBAIC03MjksOSArNzE1LDkgQEAgV2ViSW5zcGVjdG9yLlRpbWVs
aW5lUnVsZXIucHJvdG90eXBlID0gewogCiAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7
CiAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOwotICAgIH0sCisgICAgfQogCi0gICAg
X2hhbmRsZU1vdXNlVXA6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9oYW5kbGVNb3VzZVVwKGV2ZW50
KQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoZXZlbnQuYnV0dG9uID09PSAwKTsKIApA
QCAtNzY3LDkgKzc1Myw5IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyLnByb3RvdHlwZSA9
IHsKIAogICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICBldmVudC5zdG9w
UHJvcGFnYXRpb24oKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9oYW5kbGVTZWxlY3Rpb25IYW5k
bGVNb3VzZURvd246IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9oYW5kbGVTZWxlY3Rpb25IYW5kbGVN
b3VzZURvd24oZXZlbnQpCiAgICAgewogICAgICAgICAvLyBPbmx5IGhhbmRsZSBsZWZ0IG1vdXNl
IGNsaWNrcy4KICAgICAgICAgaWYgKGV2ZW50LmJ1dHRvbiAhPT0gMCB8fCBldmVudC5jdHJsS2V5
KQpAQCAtNzg5LDkgKzc3NSw5IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyLnByb3RvdHlw
ZSA9IHsKIAogICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICBldmVudC5z
dG9wUHJvcGFnYXRpb24oKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9oYW5kbGVTZWxlY3Rpb25I
YW5kbGVNb3VzZU1vdmU6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9oYW5kbGVTZWxlY3Rpb25IYW5k
bGVNb3VzZU1vdmUoZXZlbnQpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChldmVudC5i
dXR0b24gPT09IDApOwogCkBAIC04MjMsOSArODA5LDkgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5l
UnVsZXIucHJvdG90eXBlID0gewogCiAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAg
ICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOwotICAgIH0sCisgICAgfQogCi0gICAgX2hh
bmRsZVNlbGVjdGlvbkhhbmRsZU1vdXNlVXA6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9oYW5kbGVT
ZWxlY3Rpb25IYW5kbGVNb3VzZVVwKGV2ZW50KQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3Nl
cnQoZXZlbnQuYnV0dG9uID09PSAwKTsKIApAQCAtODQ0LDQgKzgzMCwxNCBAQCBXZWJJbnNwZWN0
b3IuVGltZWxpbmVSdWxlci5wcm90b3R5cGUgPSB7CiAgICAgfQogfTsKIAotV2ViSW5zcGVjdG9y
LlRpbWVsaW5lUnVsZXIucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5PYmplY3Qu
cHJvdG90eXBlOworV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIuTWluaW11bUxlZnREaXZpZGVy
U3BhY2luZyA9IDQ4OworV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIuTWluaW11bURpdmlkZXJT
cGFjaW5nID0gNjQ7CisKK1dlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyLkFsbG93c1RpbWVSYW5n
ZVNlbGVjdGlvblN0eWxlQ2xhc3NOYW1lID0gImFsbG93cy10aW1lLXJhbmdlLXNlbGVjdGlvbiI7
CitXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlci5SZXNpemluZ1NlbGVjdGlvblN0eWxlQ2xhc3NO
YW1lID0gInJlc2l6aW5nLXNlbGVjdGlvbiI7CitXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlci5E
aXZpZGVyRWxlbWVudFN0eWxlQ2xhc3NOYW1lID0gImRpdmlkZXIiOworV2ViSW5zcGVjdG9yLlRp
bWVsaW5lUnVsZXIuRGl2aWRlckxhYmVsRWxlbWVudFN0eWxlQ2xhc3NOYW1lID0gImxhYmVsIjsK
KworV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIuRXZlbnQgPSB7CisgICAgVGltZVJhbmdlU2Vs
ZWN0aW9uQ2hhbmdlZDogInRpbWUtcnVsZXItdGltZS1yYW5nZS1zZWxlY3Rpb24tY2hhbmdlZCIK
K307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9UaW1lbGluZVRhYkNvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvVGltZWxpbmVUYWJDb250ZW50Vmlldy5qcwppbmRleCAxNGVlYzVjMjYx
MDNiNzlhYzY3Y2FkZGE3NzQ3ZjgwNjc4Y2RhMTU2Li43NDY4ZDQ1OTljMDIxNDYxNWNiNjRlNjgz
NmUzYjIwZWY1NWFjMGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9UaW1lbGluZVRhYkNvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lVGFiQ29udGVudFZpZXcuanMK
QEAgLTIzLDQwICsyMywzOCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
ICovCiAKLVdlYkluc3BlY3Rvci5UaW1lbGluZVRhYkNvbnRlbnRWaWV3ID0gZnVuY3Rpb24oaWRl
bnRpZmllcikKK1dlYkluc3BlY3Rvci5UaW1lbGluZVRhYkNvbnRlbnRWaWV3ID0gY2xhc3MgVGlt
ZWxpbmVUYWJDb250ZW50VmlldyBleHRlbmRzIFdlYkluc3BlY3Rvci5Db250ZW50QnJvd3NlclRh
YkNvbnRlbnRWaWV3CiB7Ci0gICAgdmFyIHRhYkJhckl0ZW0gPSBuZXcgV2ViSW5zcGVjdG9yLlRh
YkJhckl0ZW0oIkltYWdlcy9UaW1lbGluZS5zdmciLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlRp
bWVsaW5lcyIpKTsKLSAgICB2YXIgZGV0YWlsc1NpZGViYXJQYW5lbHMgPSBbV2ViSW5zcGVjdG9y
LnJlc291cmNlRGV0YWlsc1NpZGViYXJQYW5lbCwgV2ViSW5zcGVjdG9yLnByb2JlRGV0YWlsc1Np
ZGViYXJQYW5lbF07Ci0KLSAgICBXZWJJbnNwZWN0b3IuQ29udGVudEJyb3dzZXJUYWJDb250ZW50
Vmlldy5jYWxsKHRoaXMsIGlkZW50aWZpZXIgfHwgInRpbWVsaW5lIiwgInRpbWVsaW5lIiwgdGFi
QmFySXRlbSwgV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsLCBkZXRhaWxzU2lkZWJh
clBhbmVscyk7Ci19OworICAgIGNvbnN0cnVjdG9yKGlkZW50aWZpZXIpCisgICAgeworICAgICAg
ICB2YXIgdGFiQmFySXRlbSA9IG5ldyBXZWJJbnNwZWN0b3IuVGFiQmFySXRlbSgiSW1hZ2VzL1Rp
bWVsaW5lLnN2ZyIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiVGltZWxpbmVzIikpOworICAgICAg
ICB2YXIgZGV0YWlsc1NpZGViYXJQYW5lbHMgPSBbV2ViSW5zcGVjdG9yLnJlc291cmNlRGV0YWls
c1NpZGViYXJQYW5lbCwgV2ViSW5zcGVjdG9yLnByb2JlRGV0YWlsc1NpZGViYXJQYW5lbF07CiAK
LVdlYkluc3BlY3Rvci5UaW1lbGluZVRhYkNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKLSAgICBj
b25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLlRpbWVsaW5lVGFiQ29udGVudFZpZXcsCi0gICAgX19w
cm90b19fOiBXZWJJbnNwZWN0b3IuQ29udGVudEJyb3dzZXJUYWJDb250ZW50Vmlldy5wcm90b3R5
cGUsCisgICAgICAgIHN1cGVyKGlkZW50aWZpZXIgfHwgInRpbWVsaW5lIiwgInRpbWVsaW5lIiwg
dGFiQmFySXRlbSwgV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsLCBkZXRhaWxzU2lk
ZWJhclBhbmVscyk7CisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgdHlwZSgpCiAg
ICAgewogICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlRpbWVsaW5lVGFiQ29udGVudFZpZXcu
VHlwZTsKLSAgICB9LAorICAgIH0KIAotICAgIHNob3duOiBmdW5jdGlvbigpCisgICAgc2hvd24o
KQogICAgIHsKLSAgICAgICAgV2ViSW5zcGVjdG9yLkNvbnRlbnRCcm93c2VyVGFiQ29udGVudFZp
ZXcucHJvdG90eXBlLnNob3duLmNhbGwodGhpcyk7CisgICAgICAgIHN1cGVyLnNob3duKCk7CiAK
ICAgICAgICAgV2ViSW5zcGVjdG9yLnRpbWVsaW5lTWFuYWdlci5hdXRvQ2FwdHVyZU9uUGFnZUxv
YWQgPSB0cnVlOwotICAgIH0sCisgICAgfQogCi0gICAgaGlkZGVuOiBmdW5jdGlvbigpCisgICAg
aGlkZGVuKCkKICAgICB7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5Db250ZW50QnJvd3NlclRhYkNv
bnRlbnRWaWV3LnByb3RvdHlwZS5oaWRkZW4uY2FsbCh0aGlzKTsKKyAgICAgICAgc3VwZXIuaGlk
ZGVuKCk7CiAKICAgICAgICAgV2ViSW5zcGVjdG9yLnRpbWVsaW5lTWFuYWdlci5hdXRvQ2FwdHVy
ZU9uUGFnZUxvYWQgPSBmYWxzZTsKLSAgICB9LAorICAgIH0KIAotICAgIGNhblNob3dSZXByZXNl
bnRlZE9iamVjdDogZnVuY3Rpb24ocmVwcmVzZW50ZWRPYmplY3QpCisgICAgY2FuU2hvd1JlcHJl
c2VudGVkT2JqZWN0KHJlcHJlc2VudGVkT2JqZWN0KQogICAgIHsKICAgICAgICAgaWYgKHJlcHJl
c2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkaW5nKQog
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC02Niw3ICs2NCw3IEBAIFdlYkluc3BlY3Rvci5U
aW1lbGluZVRhYkNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybiAh
IXRoaXMubmF2aWdhdGlvblNpZGViYXJQYW5lbC50cmVlRWxlbWVudEZvclJlcHJlc2VudGVkT2Jq
ZWN0KHJlcHJlc2VudGVkT2JqZWN0KTsKIAogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfSwK
KyAgICB9CiAKICAgICBnZXQgc3VwcG9ydHNTcGxpdENvbnRlbnRCcm93c2VyKCkKICAgICB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1l
bGluZVZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9U
aW1lbGluZVZpZXcuanMKaW5kZXggNTQ0YmVmNjFmOTYyYzYxMDM3MzRiMzVkZmM0ZGUzODcyYjE5
OGVlOC4uOGJhZDgyM2Y1ODRmODg2MDY5NGFiNjAzOTMxZDA4ZjFlMTg5ZmI2NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVWaWV3
LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVs
aW5lVmlldy5qcwpAQCAtMjQsNTcgKzI0LDU1IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLlRpbWVsaW5lVmlldyA9IGZ1bmN0aW9uKHJl
cHJlc2VudGVkT2JqZWN0LCBleHRyYUFyZ3VtZW50cykKK1dlYkluc3BlY3Rvci5UaW1lbGluZVZp
ZXcgPSBjbGFzcyBUaW1lbGluZVZpZXcgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcK
IHsKLSAgICAvLyBUaGlzIGNsYXNzIHNob3VsZCBub3QgYmUgaW5zdGFudGlhdGVkIGRpcmVjdGx5
LiBDcmVhdGUgYSBjb25jcmV0ZSBzdWJjbGFzcyBpbnN0ZWFkLgotICAgIGNvbnNvbGUuYXNzZXJ0
KHRoaXMuY29uc3RydWN0b3IgIT09IFdlYkluc3BlY3Rvci5UaW1lbGluZVZpZXcgJiYgdGhpcyBp
bnN0YW5jZW9mIFdlYkluc3BlY3Rvci5UaW1lbGluZVZpZXcpOwotCi0gICAgY29uc29sZS5hc3Nl
cnQoZXh0cmFBcmd1bWVudHMpOwotICAgIGNvbnNvbGUuYXNzZXJ0KGV4dHJhQXJndW1lbnRzLnRp
bWVsaW5lU2lkZWJhclBhbmVsIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJh
clBhbmVsKTsKKyAgICBjb25zdHJ1Y3RvcihyZXByZXNlbnRlZE9iamVjdCwgZXh0cmFBcmd1bWVu
dHMpCisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydChleHRyYUFyZ3VtZW50cyk7CisgICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KGV4dHJhQXJndW1lbnRzLnRpbWVsaW5lU2lkZWJhclBhbmVsIGlu
c3RhbmNlb2YgV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsKTsKIAotICAgIFdlYklu
c3BlY3Rvci5Db250ZW50Vmlldy5jYWxsKHRoaXMsIHJlcHJlc2VudGVkT2JqZWN0KTsKKyAgICAg
ICAgc3VwZXIocmVwcmVzZW50ZWRPYmplY3QpOwogCi0gICAgdGhpcy5fdGltZWxpbmVTaWRlYmFy
UGFuZWwgPSBleHRyYUFyZ3VtZW50cy50aW1lbGluZVNpZGViYXJQYW5lbDsKKyAgICAgICAgLy8g
VGhpcyBjbGFzcyBzaG91bGQgbm90IGJlIGluc3RhbnRpYXRlZCBkaXJlY3RseS4gQ3JlYXRlIGEg
Y29uY3JldGUgc3ViY2xhc3MgaW5zdGVhZC4KKyAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5j
b25zdHJ1Y3RvciAhPT0gV2ViSW5zcGVjdG9yLlRpbWVsaW5lVmlldyAmJiB0aGlzIGluc3RhbmNl
b2YgV2ViSW5zcGVjdG9yLlRpbWVsaW5lVmlldyk7CiAKLSAgICB0aGlzLl9jb250ZW50VHJlZU91
dGxpbmUgPSB0aGlzLl90aW1lbGluZVNpZGViYXJQYW5lbC5jcmVhdGVDb250ZW50VHJlZU91dGxp
bmUoKTsKLSAgICB0aGlzLl9jb250ZW50VHJlZU91dGxpbmUub25zZWxlY3QgPSB0aGlzLnRyZWVF
bGVtZW50U2VsZWN0ZWQuYmluZCh0aGlzKTsKLSAgICB0aGlzLl9jb250ZW50VHJlZU91dGxpbmUu
b25kZXNlbGVjdCA9IHRoaXMudHJlZUVsZW1lbnREZXNlbGVjdGVkLmJpbmQodGhpcyk7Ci0gICAg
dGhpcy5fY29udGVudFRyZWVPdXRsaW5lLl9fY2FuU2hvd0NvbnRlbnRWaWV3Rm9yVHJlZUVsZW1l
bnQgPSB0aGlzLmNhblNob3dDb250ZW50Vmlld0ZvclRyZWVFbGVtZW50LmJpbmQodGhpcyk7Cisg
ICAgICAgIHRoaXMuX3RpbWVsaW5lU2lkZWJhclBhbmVsID0gZXh0cmFBcmd1bWVudHMudGltZWxp
bmVTaWRlYmFyUGFuZWw7CiAKLSAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgidGltZWxp
bmUtdmlldyIpOworICAgICAgICB0aGlzLl9jb250ZW50VHJlZU91dGxpbmUgPSB0aGlzLl90aW1l
bGluZVNpZGViYXJQYW5lbC5jcmVhdGVDb250ZW50VHJlZU91dGxpbmUoKTsKKyAgICAgICAgdGhp
cy5fY29udGVudFRyZWVPdXRsaW5lLm9uc2VsZWN0ID0gdGhpcy50cmVlRWxlbWVudFNlbGVjdGVk
LmJpbmQodGhpcyk7CisgICAgICAgIHRoaXMuX2NvbnRlbnRUcmVlT3V0bGluZS5vbmRlc2VsZWN0
ID0gdGhpcy50cmVlRWxlbWVudERlc2VsZWN0ZWQuYmluZCh0aGlzKTsKKyAgICAgICAgdGhpcy5f
Y29udGVudFRyZWVPdXRsaW5lLl9fY2FuU2hvd0NvbnRlbnRWaWV3Rm9yVHJlZUVsZW1lbnQgPSB0
aGlzLmNhblNob3dDb250ZW50Vmlld0ZvclRyZWVFbGVtZW50LmJpbmQodGhpcyk7CiAKLSAgICB0
aGlzLl96ZXJvVGltZSA9IDA7Ci0gICAgdGhpcy5fc3RhcnRUaW1lID0gMDsKLSAgICB0aGlzLl9l
bmRUaW1lID0gNTsKLSAgICB0aGlzLl9jdXJyZW50VGltZSA9IDA7Ci19OworICAgICAgICB0aGlz
LmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgidGltZWxpbmUtdmlldyIpOwogCi1XZWJJbnNwZWN0b3Iu
VGltZWxpbmVWaWV3LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9y
LlRpbWVsaW5lVmlldywKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5w
cm90b3R5cGUsCisgICAgICAgIHRoaXMuX3plcm9UaW1lID0gMDsKKyAgICAgICAgdGhpcy5fc3Rh
cnRUaW1lID0gMDsKKyAgICAgICAgdGhpcy5fZW5kVGltZSA9IDU7CisgICAgICAgIHRoaXMuX2N1
cnJlbnRUaW1lID0gMDsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBuYXZpZ2F0
aW9uU2lkZWJhclRyZWVPdXRsaW5lKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9jb250
ZW50VHJlZU91dGxpbmU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgbmF2aWdhdGlvblNpZGVi
YXJUcmVlT3V0bGluZUxhYmVsKCkKICAgICB7CiAgICAgICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1
Yi1jbGFzc2VzIGlmIG5lZWRlZC4KICAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgfSwKKyAgICB9
CiAKICAgICBnZXQgbmF2aWdhdGlvblNpZGViYXJUcmVlT3V0bGluZVNjb3BlQmFyKCkKICAgICB7
CiAgICAgICAgIHJldHVybiB0aGlzLl9zY29wZUJhcjsKLSAgICB9LAorICAgIH0KIAogICAgIGdl
dCB0aW1lbGluZVNpZGViYXJQYW5lbCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fdGlt
ZWxpbmVTaWRlYmFyUGFuZWw7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgc2VsZWN0aW9uUGF0
aENvbXBvbmVudHMoKQogICAgIHsKQEAgLTg0LDEyICs4MiwxMiBAQCBXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFyIHBhdGhDb21wb25lbnQgPSBuZXcg
V2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudFBhdGhDb21wb25lbnQodGhpcy5fY29udGVu
dFRyZWVPdXRsaW5lLnNlbGVjdGVkVHJlZUVsZW1lbnQpOwogICAgICAgICBwYXRoQ29tcG9uZW50
LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhDb21wb25lbnQu
RXZlbnQuU2libGluZ1dhc1NlbGVjdGVkLCB0aGlzLnRyZWVFbGVtZW50UGF0aENvbXBvbmVudFNl
bGVjdGVkLCB0aGlzKTsKICAgICAgICAgcmV0dXJuIFtwYXRoQ29tcG9uZW50XTsKLSAgICB9LAor
ICAgIH0KIAogICAgIGdldCB6ZXJvVGltZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5f
emVyb1RpbWU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgemVyb1RpbWUoeCkKICAgICB7CkBA
IC05OSwxMiArOTcsMTIgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lVmlldy5wcm90b3R5cGUgPSB7
CiAgICAgICAgIHRoaXMuX3plcm9UaW1lID0geCB8fCAwOwogCiAgICAgICAgIHRoaXMubmVlZHNM
YXlvdXQoKTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBzdGFydFRpbWUoKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIHRoaXMuX3N0YXJ0VGltZTsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBz
dGFydFRpbWUoeCkKICAgICB7CkBAIC0xMTQsMTIgKzExMiwxMiBAQCBXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fc3RhcnRUaW1lID0geCB8fCAw
OwogCiAgICAgICAgIHRoaXMubmVlZHNMYXlvdXQoKTsKLSAgICB9LAorICAgIH0KIAogICAgIGdl
dCBlbmRUaW1lKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9lbmRUaW1lOwotICAgIH0s
CisgICAgfQogCiAgICAgc2V0IGVuZFRpbWUoeCkKICAgICB7CkBAIC0xMjksMTIgKzEyNywxMiBA
QCBXZWJJbnNwZWN0b3IuVGltZWxpbmVWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5f
ZW5kVGltZSA9IHggfHwgMDsKIAogICAgICAgICB0aGlzLm5lZWRzTGF5b3V0KCk7Ci0gICAgfSwK
KyAgICB9CiAKICAgICBnZXQgY3VycmVudFRpbWUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRo
aXMuX2N1cnJlbnRUaW1lOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IGN1cnJlbnRUaW1lKHgp
CiAgICAgewpAQCAtMTU0LDI2ICsxNTIsMjYgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lVmlldy5w
cm90b3R5cGUgPSB7CiAKICAgICAgICAgaWYgKGNoZWNrSWZMYXlvdXRJc05lZWRlZC5jYWxsKHRo
aXMsIG9sZEN1cnJlbnRUaW1lKSB8fCBjaGVja0lmTGF5b3V0SXNOZWVkZWQuY2FsbCh0aGlzLCB0
aGlzLl9jdXJyZW50VGltZSkpCiAgICAgICAgICAgICB0aGlzLm5lZWRzTGF5b3V0KCk7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICByZXNldDogZnVuY3Rpb24oKQorICAgIHJlc2V0KCkKICAgICB7CiAg
ICAgICAgIHRoaXMuX2NvbnRlbnRUcmVlT3V0bGluZS5yZW1vdmVDaGlsZHJlbigpOwotICAgIH0s
CisgICAgfQogCiAKLSAgICBmaWx0ZXJEaWRDaGFuZ2U6IGZ1bmN0aW9uKCkKKyAgICBmaWx0ZXJE
aWRDaGFuZ2UoKQogICAgIHsKICAgICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViLWNsYXNzZXMg
aWYgbmVlZGVkLgotICAgIH0sCisgICAgfQogCi0gICAgbWF0Y2hUcmVlRWxlbWVudEFnYWluc3RD
dXN0b21GaWx0ZXJzOiBmdW5jdGlvbih0cmVlRWxlbWVudCkKKyAgICBtYXRjaFRyZWVFbGVtZW50
QWdhaW5zdEN1c3RvbUZpbHRlcnModHJlZUVsZW1lbnQpCiAgICAgewogICAgICAgICAvLyBJbXBs
ZW1lbnRlZCBieSBzdWItY2xhc3NlcyBpZiBuZWVkZWQuCiAgICAgICAgIHJldHVybiB0cnVlOwot
ICAgIH0sCisgICAgfQogCi0gICAgdXBkYXRlTGF5b3V0OiBmdW5jdGlvbigpCisgICAgdXBkYXRl
TGF5b3V0KCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9zY2hlZHVsZWRMYXlvdXRVcGRhdGVJ
ZGVudGlmaWVyKSB7CiAgICAgICAgICAgICBjYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLl9zY2hl
ZHVsZWRMYXlvdXRVcGRhdGVJZGVudGlmaWVyKTsKQEAgLTE4MSwzMiArMTc5LDMyIEBAIFdlYklu
c3BlY3Rvci5UaW1lbGluZVZpZXcucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAg
Ly8gSW1wbGVtZW50ZWQgYnkgc3ViLWNsYXNzZXMgaWYgbmVlZGVkLgotICAgIH0sCisgICAgfQog
Ci0gICAgdXBkYXRlTGF5b3V0SWZOZWVkZWQ6IGZ1bmN0aW9uKCkKKyAgICB1cGRhdGVMYXlvdXRJ
Zk5lZWRlZCgpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX3NjaGVkdWxlZExheW91dFVwZGF0
ZUlkZW50aWZpZXIpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIHRoaXMudXBkYXRlTGF5
b3V0KCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBmaWx0ZXJVcGRhdGVkOiBmdW5jdGlvbigpCisg
ICAgZmlsdGVyVXBkYXRlZCgpCiAgICAgewogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xp
c3RlbmVycyhXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcuRXZlbnQuU2VsZWN0aW9uUGF0aENvbXBv
bmVudHNEaWRDaGFuZ2UpOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJvdGVjdGVkCiAKLSAg
ICBjYW5TaG93Q29udGVudFZpZXdGb3JUcmVlRWxlbWVudDogZnVuY3Rpb24odHJlZUVsZW1lbnQp
CisgICAgY2FuU2hvd0NvbnRlbnRWaWV3Rm9yVHJlZUVsZW1lbnQodHJlZUVsZW1lbnQpCiAgICAg
ewogICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBzdWItY2xhc3NlcyBpZiBuZWVkZWQuCiAKICAg
ICAgICAgaWYgKHRyZWVFbGVtZW50IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVj
b3JkVHJlZUVsZW1lbnQpCiAgICAgICAgICAgICByZXR1cm4gISF0cmVlRWxlbWVudC5zb3VyY2VD
b2RlTG9jYXRpb247CiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9LAorICAgIH0KIAotICAg
IHNob3dDb250ZW50Vmlld0ZvclRyZWVFbGVtZW50OiBmdW5jdGlvbih0cmVlRWxlbWVudCkKKyAg
ICBzaG93Q29udGVudFZpZXdGb3JUcmVlRWxlbWVudCh0cmVlRWxlbWVudCkKICAgICB7CiAgICAg
ICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1Yi1jbGFzc2VzIGlmIG5lZWRlZC4KIApAQCAtMjIyLDE5
ICsyMjAsMTkgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lVmlldy5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIH0KIAogICAgICAgICBXZWJJbnNwZWN0b3Iuc2hvd09yaWdpbmFsT3JGb3JtYXR0ZWRTb3Vy
Y2VDb2RlTG9jYXRpb24oc291cmNlQ29kZUxvY2F0aW9uKTsKLSAgICB9LAorICAgIH0KIAotICAg
IHRyZWVFbGVtZW50UGF0aENvbXBvbmVudFNlbGVjdGVkOiBmdW5jdGlvbihldmVudCkKKyAgICB0
cmVlRWxlbWVudFBhdGhDb21wb25lbnRTZWxlY3RlZChldmVudCkKICAgICB7CiAgICAgICAgIC8v
IEltcGxlbWVudGVkIGJ5IHN1Yi1jbGFzc2VzIGlmIG5lZWRlZC4KLSAgICB9LAorICAgIH0KIAot
ICAgIHRyZWVFbGVtZW50RGVzZWxlY3RlZDogZnVuY3Rpb24odHJlZUVsZW1lbnQpCisgICAgdHJl
ZUVsZW1lbnREZXNlbGVjdGVkKHRyZWVFbGVtZW50KQogICAgIHsKICAgICAgICAgLy8gSW1wbGVt
ZW50ZWQgYnkgc3ViLWNsYXNzZXMgaWYgbmVlZGVkLgotICAgIH0sCisgICAgfQogCi0gICAgdHJl
ZUVsZW1lbnRTZWxlY3RlZDogZnVuY3Rpb24odHJlZUVsZW1lbnQsIHNlbGVjdGVkQnlVc2VyKQor
ICAgIHRyZWVFbGVtZW50U2VsZWN0ZWQodHJlZUVsZW1lbnQsIHNlbGVjdGVkQnlVc2VyKQogICAg
IHsKICAgICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViLWNsYXNzZXMgaWYgbmVlZGVkLgogCkBA
IC0yNDcsOSArMjQ1LDkgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lVmlldy5wcm90b3R5cGUgPSB7
CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgdGhpcy5zaG93Q29udGVudFZpZXdGb3JU
cmVlRWxlbWVudCh0cmVlRWxlbWVudCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBuZWVkc0xheW91
dDogZnVuY3Rpb24oKQorICAgIG5lZWRzTGF5b3V0KCkKICAgICB7CiAgICAgICAgIGlmICghdGhp
cy52aXNpYmxlKQogICAgICAgICAgICAgcmV0dXJuOwo=
</data>
<flag name="review"
          id="282942"
          type_id="1"
          status="+"
          setter="joepeck"
    />
          </attachment>
      

    </bug>

</bugzilla>