<?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>211232</bug_id>
          
          <creation_ts>2020-04-30 07:09:24 -0700</creation_ts>
          <short_desc>[Web Animations] imported/w3c/web-platform-tests/web-animations/timing-model/timelines/update-and-send-events.html is a flaky failure</short_desc>
          <delta_ts>2020-05-13 07:37:43 -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>Animations</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=211842</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antoine Quint">graouts</reporter>
          <assigned_to name="Antoine Quint">graouts</assigned_to>
          <cc>cdumez</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>graouts</cc>
    
    <cc>kangil.han</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1647361</commentid>
    <comment_count>0</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-04-30 07:09:24 -0700</bug_when>
    <thetext>https://results.webkit.org/?suite=layout-tests&amp;test=imported%2Fw3c%2Fweb-platform-tests%2Fweb-animations%2Ftiming-model%2Ftimelines%2Fupdate-and-send-events.html

https://build.webkit.org/results/Apple%20Mojave%20Debug%20WK1%20(Tests)/r260898%20(10517)/imported/w3c/web-platform-tests/web-animations/timing-model/timelines/update-and-send-events-pretty-diff.html:

--- /Volumes/Data/slave/mojave-debug-tests-wk1/build/layout-test-results/imported/w3c/web-platform-tests/web-animations/timing-model/timelines/update-and-send-events-expected.txt
+++ /Volumes/Data/slave/mojave-debug-tests-wk1/build/layout-test-results/imported/w3c/web-platform-tests/web-animations/timing-model/timelines/update-and-send-events-actual.txt
@@ -6,5 +6,5 @@
 PASS Queues a cancel event in transitionstart event callback 
 PASS Sorts events for the same transition 
 PASS Playback events with the same timeline retain the order in which they arequeued 
-PASS All timelines are updated before running microtasks 
+FAIL All timelines are updated before running microtasks promise_test: Unhandled rejection with value: object &quot;AbortError: The operation was aborted.&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647362</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-04-30 07:09:44 -0700</bug_when>
    <thetext>&lt;rdar://problem/62650227&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647363</commentid>
    <comment_count>2</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-04-30 07:10:00 -0700</bug_when>
    <thetext>This reproduces locally with this command:

rwt --release imported/w3c/web-platform-tests/web-animations/timing-model/timelines/update-and-send-events.html --iterations=1000 --exit-after-n-failures=1

Eventually the test will fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1650099</commentid>
    <comment_count>3</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-05-07 08:06:57 -0700</bug_when>
    <thetext>There&apos;s some funky code in DocumentTimeline::currentTime() which leads to slightly different timing for two DocumentTimelines. I think we want to move the notion of the cached current time up to DocumentTimelinesController, or maybe just removing this block of code will work:

    auto&amp; mainDocumentTimeline = m_document-&gt;timeline();
    if (&amp;mainDocumentTimeline != this) {
        if (auto mainDocumentTimelineCurrentTime = mainDocumentTimeline.currentTime())
            return *mainDocumentTimelineCurrentTime - m_originTime;
        return WTF::nullopt;
    }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1650285</commentid>
    <comment_count>4</comment_count>
      <attachid>398775</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-05-07 12:26:16 -0700</bug_when>
    <thetext>Created attachment 398775
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1650320</commentid>
    <comment_count>5</comment_count>
      <attachid>398775</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2020-05-07 13:12:43 -0700</bug_when>
    <thetext>Comment on attachment 398775
Patch

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

&gt; Source/WebCore/ChangeLog:17
&gt; +        It would sometime happen that animA in one frame and animB in another, when they should always finished in sync. Thus animA.finished would
&gt; +        resolve and animB.cancel() would be called, rejecting animB.finished. This happened because animB was attached to a DocumentTimeline created
&gt; +        by script which isn&apos;t the main DocumenTimeline accessed via document.timeline. Some curious code would handle syncing of the various timelines
&gt; +        such that they would use a shared timebase. This was in DocumentTimeline::currentTime():

Sometimes, animA and animB would finish in different frames even though they were designed to finish at the same time. If this happened, animA.finished would resolve and trigger animB.cancel, which then rejected animB.finished.

&gt; Source/WebCore/ChangeLog:28
&gt; +        We now move the currentTime caching at the DocumentTimelinesController level which ensures all DocumentTimeline objects attached to a given
&gt; +        Document use the exact same currentTime(). This prompted some overdue refactoring where also all the related animation suspension code is moved
&gt; +        from DocumentTimeline up to DocumentTimelinesController.

Again, I don&apos;t understand how you manage to have such a large value for your line wrapping mark :)

View -&gt; Edit -&gt; Wrap Column</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1650358</commentid>
    <comment_count>6</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-05-07 14:44:23 -0700</bug_when>
    <thetext>Committed r261336: &lt;https://trac.webkit.org/changeset/261336&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398775</attachid>
            <date>2020-05-07 12:26:16 -0700</date>
            <delta_ts>2020-05-07 13:12:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211232-20200507212615.patch</filename>
            <type>text/plain</type>
            <size>28868</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxMjczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzU3YmVmNjEzYzkxYWVm
NDk3MjViNWI2ZmU0YzIwMjZjMjBiMjZlNy4uNjVjNTIyZjFiMzU0MGQ5YTczODQxMzlmMjVmYjJi
Nzg0MWJkNjM2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDIwLTA1LTA3ICBBbnRv
aW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYiBBbmltYXRpb25z
XSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYi1hbmltYXRpb25zL3RpbWluZy1t
b2RlbC90aW1lbGluZXMvdXBkYXRlLWFuZC1zZW5kLWV2ZW50cy5odG1sIGlzIGEgZmxha3kgZmFp
bHVyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEx
MjMyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MjY1MDIyNz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgZmxha2luZXNzIGNhbWUgZnJvbSB0
aGlzIHBvcnRpbmcgb2YgdGhlIHRlc3Q6CisgICAgICAgIAorICAgICAgICAgICAgYW5pbUEuZmlu
aXNoZWQudGhlbigoKSA9PiB7IGFuaW1CLmNhbmNlbCgpIH0pOworICAgICAgICAgICAgYW5pbUIu
ZmluaXNoZWQudGhlbigoKSA9PiB7IGFuaW1BLmNhbmNlbCgpIH0pOworCisgICAgICAgIEl0IHdv
dWxkIHNvbWV0aW1lIGhhcHBlbiB0aGF0IGFuaW1BIGluIG9uZSBmcmFtZSBhbmQgYW5pbUIgaW4g
YW5vdGhlciwgd2hlbiB0aGV5IHNob3VsZCBhbHdheXMgZmluaXNoZWQgaW4gc3luYy4gVGh1cyBh
bmltQS5maW5pc2hlZCB3b3VsZAorICAgICAgICByZXNvbHZlIGFuZCBhbmltQi5jYW5jZWwoKSB3
b3VsZCBiZSBjYWxsZWQsIHJlamVjdGluZyBhbmltQi5maW5pc2hlZC4gVGhpcyBoYXBwZW5lZCBi
ZWNhdXNlIGFuaW1CIHdhcyBhdHRhY2hlZCB0byBhIERvY3VtZW50VGltZWxpbmUgY3JlYXRlZAor
ICAgICAgICBieSBzY3JpcHQgd2hpY2ggaXNuJ3QgdGhlIG1haW4gRG9jdW1lblRpbWVsaW5lIGFj
Y2Vzc2VkIHZpYSBkb2N1bWVudC50aW1lbGluZS4gU29tZSBjdXJpb3VzIGNvZGUgd291bGQgaGFu
ZGxlIHN5bmNpbmcgb2YgdGhlIHZhcmlvdXMgdGltZWxpbmVzCisgICAgICAgIHN1Y2ggdGhhdCB0
aGV5IHdvdWxkIHVzZSBhIHNoYXJlZCB0aW1lYmFzZS4gVGhpcyB3YXMgaW4gRG9jdW1lbnRUaW1l
bGluZTo6Y3VycmVudFRpbWUoKToKKworICAgICAgICAgICAgYXV0byYgbWFpbkRvY3VtZW50VGlt
ZWxpbmUgPSBtX2RvY3VtZW50LT50aW1lbGluZSgpOworICAgICAgICAgICAgaWYgKCZtYWluRG9j
dW1lbnRUaW1lbGluZSAhPSB0aGlzKSB7CisgICAgICAgICAgICAgICAgaWYgKGF1dG8gbWFpbkRv
Y3VtZW50VGltZWxpbmVDdXJyZW50VGltZSA9IG1haW5Eb2N1bWVudFRpbWVsaW5lLmN1cnJlbnRU
aW1lKCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAqbWFpbkRvY3VtZW50VGltZWxpbmVD
dXJyZW50VGltZSAtIG1fb3JpZ2luVGltZTsKKyAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICAgICAgfQorCisgICAgICAgIFdlIG5vdyBtb3ZlIHRoZSBjdXJyZW50
VGltZSBjYWNoaW5nIGF0IHRoZSBEb2N1bWVudFRpbWVsaW5lc0NvbnRyb2xsZXIgbGV2ZWwgd2hp
Y2ggZW5zdXJlcyBhbGwgRG9jdW1lbnRUaW1lbGluZSBvYmplY3RzIGF0dGFjaGVkIHRvIGEgZ2l2
ZW4KKyAgICAgICAgRG9jdW1lbnQgdXNlIHRoZSBleGFjdCBzYW1lIGN1cnJlbnRUaW1lKCkuIFRo
aXMgcHJvbXB0ZWQgc29tZSBvdmVyZHVlIHJlZmFjdG9yaW5nIHdoZXJlIGFsc28gYWxsIHRoZSBy
ZWxhdGVkIGFuaW1hdGlvbiBzdXNwZW5zaW9uIGNvZGUgaXMgbW92ZWQKKyAgICAgICAgZnJvbSBE
b2N1bWVudFRpbWVsaW5lIHVwIHRvIERvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlci4KKworICAg
ICAgICAqIGFuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50VGltZWxpbmU6OmRldGFjaEZyb21Eb2N1bWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudFRpbWVsaW5lOjpzdXNwZW5kQW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudFRpbWVsaW5lOjpyZXN1bWVBbmltYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50VGltZWxpbmU6OmFuaW1hdGlvbnNBcmVTdXNwZW5kZWQgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnRUaW1lbGluZTo6Y3VycmVudFRpbWUpOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnRUaW1lbGluZTo6c2NoZWR1bGVBbmltYXRpb25SZXNvbHV0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGltZWxpbmU6OmRvY3VtZW50V2lsbFVwZGF0ZUFuaW1h
dGlvbnNBbmRTZW5kRXZlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGltZWxpbmU6
OmFuaW1hdGlvbnNBcmVTdXNwZW5kZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRUaW1lbGluZTo6bGl2ZUN1cnJlbnRUaW1lIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50VGltZWxpbmU6OmNhY2hlQ3VycmVudFRpbWUpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaW1lbGluZTo6bWF5YmVDbGVhckNhY2hlZEN1cnJl
bnRUaW1lKTogRGVsZXRlZC4KKyAgICAgICAgKiBhbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZS5o
OgorICAgICAgICAqIGFuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lc0NvbnRyb2xsZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaW1lbGluZXNDb250cm9sbGVyOjpkZXRhY2hGcm9t
RG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaW1lbGluZXNDb250cm9sbGVy
Ojp1cGRhdGVBbmltYXRpb25zQW5kU2VuZEV2ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudFRpbWVsaW5lc0NvbnRyb2xsZXI6OnN1c3BlbmRBbmltYXRpb25zKToKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlcjo6cmVzdW1lQW5pbWF0aW9ucyk6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRpbWVsaW5lc0NvbnRyb2xsZXI6OmFuaW1hdGlvbnNB
cmVTdXNwZW5kZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaW1lbGluZXND
b250cm9sbGVyOjpsaXZlQ3VycmVudFRpbWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRUaW1lbGluZXNDb250cm9sbGVyOjpjdXJyZW50VGltZSk6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudFRpbWVsaW5lc0NvbnRyb2xsZXI6OmNhY2hlQ3VycmVudFRpbWUpOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnRUaW1lbGluZXNDb250cm9sbGVyOjptYXliZUNsZWFyQ2FjaGVk
Q3VycmVudFRpbWUpOgorICAgICAgICAqIGFuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lc0NvbnRy
b2xsZXIuaDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6OmRpZEJlY29tZUN1cnJlbnREb2N1bWVudEluRnJhbWUpOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnQ6OnJlc3VtZSk6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAg
ICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6Y2xlYXJUaW1l
cnMpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OnJlc3VtZUFjdGl2ZURPTU9iamVjdHNBbmRB
bmltYXRpb25zKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UGFnZTo6c2V0SXNWaXNpYmxlSW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6aGlk
ZGVuUGFnZUNTU0FuaW1hdGlvblN1c3BlbnNpb25TdGF0ZUNoYW5nZWQpOgorICAgICAgICAqIHRl
c3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6YW5pbWF0
aW9uc0FyZVN1c3BlbmRlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnN1
c3BlbmRBbmltYXRpb25zIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6cmVz
dW1lQW5pbWF0aW9ucyBjb25zdCk6CisKIDIwMjAtMDUtMDYgIFNlcmdpbyBWaWxsYXIgU2VuaW4g
IDxzdmlsbGFyQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dlYlhSXSBJbXBsZW1lbnQgc2ltdWxh
dGVVc2VyQWN0aXZhdGlvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24v
RG9jdW1lbnRUaW1lbGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRU
aW1lbGluZS5jcHAKaW5kZXggYjQ4Yjk3YTc0OWFjYzEzYjMxZWVhYjBjNzA4MjE5NWNmY2MyNDYz
YS4uZTQ4ZTBmNjcxOWJiZmVjMzM3MDAxMjA2YzA0NDQyZDc2YjI2MGUwNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lLmNwcApAQCAtMjksNyArMjksNiBA
QAogI2luY2x1ZGUgIkFuaW1hdGlvbkV2ZW50QmFzZS5oIgogI2luY2x1ZGUgIkNTU0FuaW1hdGlv
bi5oIgogI2luY2x1ZGUgIkNTU1RyYW5zaXRpb24uaCIKLSNpbmNsdWRlICJET01XaW5kb3cuaCIK
ICNpbmNsdWRlICJEZWNsYXJhdGl2ZUFuaW1hdGlvbi5oIgogI2luY2x1ZGUgIkRvY3VtZW50Lmgi
CiAjaW5jbHVkZSAiRG9jdW1lbnRUaW1lbGluZXNDb250cm9sbGVyLmgiCkBAIC00NCw3ICs0Myw2
IEBACiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKICNpbmNsdWRlICJSZW5kZXJMYXllckJhY2tp
bmcuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1ZN
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtOTIsNyArOTAsNiBAQCB2b2lkIERvY3Vt
ZW50VGltZWxpbmU6OmRldGFjaEZyb21Eb2N1bWVudCgpCiAgICAgICAgIGNvbnRyb2xsZXItPnJl
bW92ZVRpbWVsaW5lKCp0aGlzKTsKIAogICAgIG1fcGVuZGluZ0FuaW1hdGlvbkV2ZW50cy5jbGVh
cigpOwotICAgIG1fY3VycmVudFRpbWVDbGVhcmluZ1Rhc2tRdWV1ZS5jbG9zZSgpOwogICAgIG1f
ZWxlbWVudHNXaXRoUnVubmluZ0FjY2VsZXJhdGVkQW5pbWF0aW9ucy5jbGVhcigpOwogCiAgICAg
YXV0byYgYW5pbWF0aW9uc1RvUmVtb3ZlID0gbV9hbmltYXRpb25zOwpAQCAtMjIwLDE3ICsyMTcs
OSBAQCBTZWNvbmRzIERvY3VtZW50VGltZWxpbmU6OmFuaW1hdGlvbkludGVydmFsKCkgY29uc3QK
IAogdm9pZCBEb2N1bWVudFRpbWVsaW5lOjpzdXNwZW5kQW5pbWF0aW9ucygpCiB7Ci0gICAgaWYg
KGFuaW1hdGlvbnNBcmVTdXNwZW5kZWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCFt
X2NhY2hlZEN1cnJlbnRUaW1lKQotICAgICAgICBtX2NhY2hlZEN1cnJlbnRUaW1lID0gbGl2ZUN1
cnJlbnRUaW1lKCk7Ci0KICAgICBmb3IgKGNvbnN0IGF1dG8mIGFuaW1hdGlvbiA6IG1fYW5pbWF0
aW9ucykKICAgICAgICAgYW5pbWF0aW9uLT5zZXRTdXNwZW5kZWQodHJ1ZSk7CiAKLSAgICBtX2lz
U3VzcGVuZGVkID0gdHJ1ZTsKLQogICAgIGFwcGx5UGVuZGluZ0FjY2VsZXJhdGVkQW5pbWF0aW9u
cygpOwogCiAgICAgY2xlYXJUaWNrU2NoZWR1bGVUaW1lcigpOwpAQCAtMjM4LDIyICsyMjcsMTUg
QEAgdm9pZCBEb2N1bWVudFRpbWVsaW5lOjpzdXNwZW5kQW5pbWF0aW9ucygpCiAKIHZvaWQgRG9j
dW1lbnRUaW1lbGluZTo6cmVzdW1lQW5pbWF0aW9ucygpCiB7Ci0gICAgaWYgKCFhbmltYXRpb25z
QXJlU3VzcGVuZGVkKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fY2FjaGVkQ3VycmVudFRp
bWUgPSBXVEY6Om51bGxvcHQ7Ci0KLSAgICBtX2lzU3VzcGVuZGVkID0gZmFsc2U7Ci0KICAgICBm
b3IgKGNvbnN0IGF1dG8mIGFuaW1hdGlvbiA6IG1fYW5pbWF0aW9ucykKICAgICAgICAgYW5pbWF0
aW9uLT5zZXRTdXNwZW5kZWQoZmFsc2UpOwogCiAgICAgc2NoZWR1bGVBbmltYXRpb25SZXNvbHV0
aW9uKCk7CiB9CiAKLWJvb2wgRG9jdW1lbnRUaW1lbGluZTo6YW5pbWF0aW9uc0FyZVN1c3BlbmRl
ZCgpCitib29sIERvY3VtZW50VGltZWxpbmU6OmFuaW1hdGlvbnNBcmVTdXNwZW5kZWQoKSBjb25z
dAogewotICAgIHJldHVybiBtX2lzU3VzcGVuZGVkOworICAgIHJldHVybiBjb250cm9sbGVyKCkg
JiYgY29udHJvbGxlcigpLT5hbmltYXRpb25zQXJlU3VzcGVuZGVkKCk7CiB9CiAKIHVuc2lnbmVk
IERvY3VtZW50VGltZWxpbmU6Om51bWJlck9mQWN0aXZlQW5pbWF0aW9uc0ZvclRlc3RpbmcoKSBj
b25zdApAQCAtMjY2LDU0ICsyNDgsMTQgQEAgdW5zaWduZWQgRG9jdW1lbnRUaW1lbGluZTo6bnVt
YmVyT2ZBY3RpdmVBbmltYXRpb25zRm9yVGVzdGluZygpIGNvbnN0CiAgICAgcmV0dXJuIGNvdW50
OwogfQogCi1SZWR1Y2VkUmVzb2x1dGlvblNlY29uZHMgRG9jdW1lbnRUaW1lbGluZTo6bGl2ZUN1
cnJlbnRUaW1lKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9kb2N1bWVudC0+ZG9tV2luZG93KCkt
Pm5vd1RpbWVzdGFtcCgpOwotfQotCiBPcHRpb25hbDxTZWNvbmRzPiBEb2N1bWVudFRpbWVsaW5l
OjpjdXJyZW50VGltZSgpCiB7Ci0gICAgaWYgKCFtX2RvY3VtZW50IHx8ICFtX2RvY3VtZW50LT5k
b21XaW5kb3coKSkKLSAgICAgICAgcmV0dXJuIEFuaW1hdGlvblRpbWVsaW5lOjpjdXJyZW50VGlt
ZSgpOwotCi0gICAgYXV0byYgbWFpbkRvY3VtZW50VGltZWxpbmUgPSBtX2RvY3VtZW50LT50aW1l
bGluZSgpOwotICAgIGlmICgmbWFpbkRvY3VtZW50VGltZWxpbmUgIT0gdGhpcykgewotICAgICAg
ICBpZiAoYXV0byBtYWluRG9jdW1lbnRUaW1lbGluZUN1cnJlbnRUaW1lID0gbWFpbkRvY3VtZW50
VGltZWxpbmUuY3VycmVudFRpbWUoKSkKLSAgICAgICAgICAgIHJldHVybiAqbWFpbkRvY3VtZW50
VGltZWxpbmVDdXJyZW50VGltZSAtIG1fb3JpZ2luVGltZTsKKyAgICBpZiAoYXV0byogY29udHJv
bGxlciA9IHRoaXMtPmNvbnRyb2xsZXIoKSkgeworICAgICAgICBpZiAoYXV0byBjdXJyZW50VGlt
ZSA9IGNvbnRyb2xsZXItPmN1cnJlbnRUaW1lKCkpCisgICAgICAgICAgICByZXR1cm4gKmN1cnJl
bnRUaW1lIC0gbV9vcmlnaW5UaW1lOwogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAg
IH0KLQotICAgIGlmICghbV9jYWNoZWRDdXJyZW50VGltZSkKLSAgICAgICAgY2FjaGVDdXJyZW50
VGltZShsaXZlQ3VycmVudFRpbWUoKSk7Ci0gICAgCi0gICAgcmV0dXJuIG1fY2FjaGVkQ3VycmVu
dFRpbWUudmFsdWUoKSAtIG1fb3JpZ2luVGltZTsKLX0KLQotdm9pZCBEb2N1bWVudFRpbWVsaW5l
OjpjYWNoZUN1cnJlbnRUaW1lKFJlZHVjZWRSZXNvbHV0aW9uU2Vjb25kcyBuZXdDdXJyZW50VGlt
ZSkKLXsKLSAgICBBU1NFUlQobV9kb2N1bWVudCk7Ci0KLSAgICBtX2NhY2hlZEN1cnJlbnRUaW1l
ID0gbmV3Q3VycmVudFRpbWU7Ci0gICAgLy8gV2Ugd2FudCB0byBiZSBzdXJlIHRvIGtlZXAgdGhp
cyB0aW1lIGNhY2hlZCB1bnRpbCB3ZSd2ZSBib3RoIGZpbmlzaGVkIHJ1bm5pbmcgSlMgYW5kIGZp
bmlzaGVkIHVwZGF0aW5nCi0gICAgLy8gYW5pbWF0aW9ucywgc28gd2Ugc2NoZWR1bGUgdGhlIGlu
dmFsaWRhdGlvbiB0YXNrIGFuZCByZWdpc3RlciBhIHdoZW5JZGxlIGNhbGxiYWNrIG9uIHRoZSBW
TSwgd2hpY2ggd2lsbAotICAgIC8vIGZpcmUgc3luY3Jvbm91c2x5IGlmIG5vIEpTIGlzIHJ1bm5p
bmcuCi0gICAgbV93YWl0aW5nT25WTUlkbGUgPSB0cnVlOwotICAgIGlmICghbV9jdXJyZW50VGlt
ZUNsZWFyaW5nVGFza1F1ZXVlLmhhc1BlbmRpbmdUYXNrcygpKQotICAgICAgICBtX2N1cnJlbnRU
aW1lQ2xlYXJpbmdUYXNrUXVldWUuZW5xdWV1ZVRhc2soc3RkOjpiaW5kKCZEb2N1bWVudFRpbWVs
aW5lOjptYXliZUNsZWFyQ2FjaGVkQ3VycmVudFRpbWUsIHRoaXMpKTsKLSAgICBtX2RvY3VtZW50
LT52bSgpLndoZW5JZGxlKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKV0o
KSB7Ci0gICAgICAgIG1fd2FpdGluZ09uVk1JZGxlID0gZmFsc2U7Ci0gICAgICAgIG1heWJlQ2xl
YXJDYWNoZWRDdXJyZW50VGltZSgpOwotICAgIH0pOwotfQotCi12b2lkIERvY3VtZW50VGltZWxp
bmU6Om1heWJlQ2xlYXJDYWNoZWRDdXJyZW50VGltZSgpCi17Ci0gICAgLy8gV2Ugd2FudCB0byBt
YWtlIHN1cmUgd2Ugb25seSBjbGVhciB0aGUgY2FjaGVkIGN1cnJlbnQgdGltZSBpZiB3ZSdyZSBu
b3QgY3VycmVudGx5IHJ1bm5pbmcKLSAgICAvLyBKUyBvciB3YWl0aW5nIG9uIGFsbCBjdXJyZW50
IGFuaW1hdGlvbiB1cGRhdGluZyBjb2RlIHRvIGhhdmUgY29tcGxldGVkLiBUaGlzIGlzIHNvIHRo
YXQKLSAgICAvLyB3ZSdyZSBndWFyYW50ZWVkIHRvIGhhdmUgYSBjb25zaXN0ZW50IGN1cnJlbnQg
dGltZSByZXBvcnRlZCBmb3IgYWxsIHdvcmsgaGFwcGVuaW5nIGluIGEgZ2l2ZW4KLSAgICAvLyBK
UyBmcmFtZSBvciB0aHJvdWdob3V0IHVwZGF0aW5nIGFuaW1hdGlvbnMgaW4gV2ViQ29yZS4KLSAg
ICBpZiAoIW1faXNTdXNwZW5kZWQgJiYgIW1fd2FpdGluZ09uVk1JZGxlICYmICFtX2N1cnJlbnRU
aW1lQ2xlYXJpbmdUYXNrUXVldWUuaGFzUGVuZGluZ1Rhc2tzKCkpCi0gICAgICAgIG1fY2FjaGVk
Q3VycmVudFRpbWUgPSBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIEFuaW1hdGlvblRpbWVsaW5l
OjpjdXJyZW50VGltZSgpOwogfQogCiB2b2lkIERvY3VtZW50VGltZWxpbmU6OmFuaW1hdGlvblRp
bWluZ0RpZENoYW5nZShXZWJBbmltYXRpb24mIGFuaW1hdGlvbikKQEAgLTMzMiw3ICsyNzQsNyBA
QCB2b2lkIERvY3VtZW50VGltZWxpbmU6OnJlbW92ZUFuaW1hdGlvbihXZWJBbmltYXRpb24mIGFu
aW1hdGlvbikKIAogdm9pZCBEb2N1bWVudFRpbWVsaW5lOjpzY2hlZHVsZUFuaW1hdGlvblJlc29s
dXRpb24oKQogewotICAgIGlmIChtX2lzU3VzcGVuZGVkIHx8IG1fYW5pbWF0aW9uUmVzb2x1dGlv
blNjaGVkdWxlZCB8fCAhbV9kb2N1bWVudCB8fCAhbV9kb2N1bWVudC0+cGFnZSgpKQorICAgIGlm
IChhbmltYXRpb25zQXJlU3VzcGVuZGVkKCkgfHwgbV9hbmltYXRpb25SZXNvbHV0aW9uU2NoZWR1
bGVkIHx8ICFtX2RvY3VtZW50IHx8ICFtX2RvY3VtZW50LT5wYWdlKCkpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIC8vIFdlIG5lZWQgc29tZSByZWxldmFudCBhbmltYXRpb25zIG9yIHBlbmRpbmcg
ZXZlbnRzIHRvIHByb2NlZWQuCkBAIC0zNTMsMTkgKzI5NSwxMyBAQCBib29sIERvY3VtZW50VGlt
ZWxpbmU6OnNob3VsZFJ1blVwZGF0ZUFuaW1hdGlvbnNBbmRTZW5kRXZlbnRzSWdub3JpbmdTdXNw
ZW5zaW9uUwogICAgIHJldHVybiAhbV9hbmltYXRpb25zLmlzRW1wdHkoKSB8fCAhbV9wZW5kaW5n
QW5pbWF0aW9uRXZlbnRzLmlzRW1wdHkoKSB8fCAhbV9hY2NlbGVyYXRlZEFuaW1hdGlvbnNQZW5k
aW5nUnVubmluZ1N0YXRlQ2hhbmdlLmlzRW1wdHkoKTsKIH0KIAotRG9jdW1lbnRUaW1lbGluZTo6
U2hvdWxkVXBkYXRlQW5pbWF0aW9uc0FuZFNlbmRFdmVudHMgRG9jdW1lbnRUaW1lbGluZTo6ZG9j
dW1lbnRXaWxsVXBkYXRlQW5pbWF0aW9uc0FuZFNlbmRFdmVudHMoUmVkdWNlZFJlc29sdXRpb25T
ZWNvbmRzIHRpbWVzdGFtcCkKK0RvY3VtZW50VGltZWxpbmU6OlNob3VsZFVwZGF0ZUFuaW1hdGlv
bnNBbmRTZW5kRXZlbnRzIERvY3VtZW50VGltZWxpbmU6OmRvY3VtZW50V2lsbFVwZGF0ZUFuaW1h
dGlvbnNBbmRTZW5kRXZlbnRzKCkKIHsKLSAgICAvLyBXZSBuZWVkIHRvIGZyZWV6ZSB0aGUgY3Vy
cmVudCB0aW1lIGV2ZW4gaWYgbm8gYW5pbWF0aW9uIGlzIHJ1bm5pbmcuCi0gICAgLy8gZG9jdW1l
bnQudGltZWxpbmUuY3VycmVudFRpbWUgbWF5IGJlIGNhbGxlZCBmcm9tIGEgckFGIGNhbGxiYWNr
IGFuZAotICAgIC8vIGl0IGhhcyB0byBtYXRjaCB0aGUgckFGIHRpbWVzdGFtcC4KLSAgICBpZiAo
IW1faXNTdXNwZW5kZWQgfHwgIXNob3VsZFJ1blVwZGF0ZUFuaW1hdGlvbnNBbmRTZW5kRXZlbnRz
SWdub3JpbmdTdXNwZW5zaW9uU3RhdGUoKSkKLSAgICAgICAgY2FjaGVDdXJyZW50VGltZSh0aW1l
c3RhbXApOwotCiAgICAgLy8gVXBkYXRpbmcgYW5pbWF0aW9ucyBhbmQgc2VuZGluZyBldmVudHMg
bWF5IGludmFsaWRhdGUgdGhlIHRpbWluZyBvZiBzb21lIGFuaW1hdGlvbnMsIHNvIHdlIG11c3Qg
c2V0IHRoZSBtX2FuaW1hdGlvblJlc29sdXRpb25TY2hlZHVsZWQKICAgICAvLyBmbGFnIHRvIGZh
bHNlIHByaW9yIHRvIHJ1bm5pbmcgdGhhdCBwcm9jZWR1cmUgdG8gYWxsb3cgYW5pbWF0aW9uIHdp
dGggdGltaW5nIG1vZGVsIHVwZGF0ZXMgdG8gc2NoZWR1bGUgdXBkYXRlcy4KICAgICBib29sIHdh
c0FuaW1hdGlvblJlc29sdXRpb25TY2hlZHVsZWQgPSBzdGQ6OmV4Y2hhbmdlKG1fYW5pbWF0aW9u
UmVzb2x1dGlvblNjaGVkdWxlZCwgZmFsc2UpOwogCi0gICAgaWYgKCF3YXNBbmltYXRpb25SZXNv
bHV0aW9uU2NoZWR1bGVkIHx8IG1faXNTdXNwZW5kZWQgfHwgIXNob3VsZFJ1blVwZGF0ZUFuaW1h
dGlvbnNBbmRTZW5kRXZlbnRzSWdub3JpbmdTdXNwZW5zaW9uU3RhdGUoKSkKKyAgICBpZiAoIXdh
c0FuaW1hdGlvblJlc29sdXRpb25TY2hlZHVsZWQgfHwgYW5pbWF0aW9uc0FyZVN1c3BlbmRlZCgp
IHx8ICFzaG91bGRSdW5VcGRhdGVBbmltYXRpb25zQW5kU2VuZEV2ZW50c0lnbm9yaW5nU3VzcGVu
c2lvblN0YXRlKCkpCiAgICAgICAgIHJldHVybiBEb2N1bWVudFRpbWVsaW5lOjpTaG91bGRVcGRh
dGVBbmltYXRpb25zQW5kU2VuZEV2ZW50czo6Tm87CiAKICAgICBtX251bWJlck9mQW5pbWF0aW9u
VGltZWxpbmVJbnZhbGlkYXRpb25zRm9yVGVzdGluZysrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1h
dGlvbi9Eb2N1bWVudFRpbWVsaW5lLmgKaW5kZXggYTA5YTQzNWRkNjhjNDU5MmNkNDE5NjMwZWI0
OWVkNTc0M2UyZmE0MC4uNTA3OTJiYWE1YzZjYTNjZDgzYTEzMGRmN2MwNzVmZTQwM2NmYzYzMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZS5oCkBAIC0yNywx
MCArMjcsNyBAQAogCiAjaW5jbHVkZSAiQW5pbWF0aW9uVGltZWxpbmUuaCIKICNpbmNsdWRlICJE
b2N1bWVudFRpbWVsaW5lT3B0aW9ucy5oIgotI2luY2x1ZGUgIkdlbmVyaWNUYXNrUXVldWUuaCIK
LSNpbmNsdWRlICJSZWR1Y2VkUmVzb2x1dGlvblNlY29uZHMuaCIKICNpbmNsdWRlICJUaW1lci5o
IgotI2luY2x1ZGUgPHd0Zi9NYXJrYWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNs
dWRlIDx3dGYvV2Vha1B0ci5oPgogCkBAIC03NSwxNSArNzIsMTUgQEAgcHVibGljOgogICAgIHZv
aWQgZW5xdWV1ZUFuaW1hdGlvbkV2ZW50KEFuaW1hdGlvbkV2ZW50QmFzZSYpOwogICAgIAogICAg
IGVudW0gY2xhc3MgU2hvdWxkVXBkYXRlQW5pbWF0aW9uc0FuZFNlbmRFdmVudHMgOiB1aW50OF90
IHsgWWVzLCBObyB9OwotICAgIFNob3VsZFVwZGF0ZUFuaW1hdGlvbnNBbmRTZW5kRXZlbnRzIGRv
Y3VtZW50V2lsbFVwZGF0ZUFuaW1hdGlvbnNBbmRTZW5kRXZlbnRzKFJlZHVjZWRSZXNvbHV0aW9u
U2Vjb25kcyk7CisgICAgU2hvdWxkVXBkYXRlQW5pbWF0aW9uc0FuZFNlbmRFdmVudHMgZG9jdW1l
bnRXaWxsVXBkYXRlQW5pbWF0aW9uc0FuZFNlbmRFdmVudHMoKTsKICAgICB2b2lkIHJlbW92ZVJl
cGxhY2VkQW5pbWF0aW9ucygpOwogICAgIEFuaW1hdGlvbkV2ZW50cyBwcmVwYXJlRm9yUGVuZGlu
Z0FuaW1hdGlvbkV2ZW50c0Rpc3BhdGNoKCk7CiAgICAgdm9pZCBkb2N1bWVudERpZFVwZGF0ZUFu
aW1hdGlvbnNBbmRTZW5kRXZlbnRzKCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBTZWNvbmRzIGFu
aW1hdGlvbkludGVydmFsKCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdXNwZW5k
QW5pbWF0aW9ucygpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVzdW1lQW5pbWF0aW9ucygp
OwotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgYW5pbWF0aW9uc0FyZVN1c3BlbmRlZCgpOworICAg
IHZvaWQgc3VzcGVuZEFuaW1hdGlvbnMoKTsKKyAgICB2b2lkIHJlc3VtZUFuaW1hdGlvbnMoKTsK
KyAgICBib29sIGFuaW1hdGlvbnNBcmVTdXNwZW5kZWQoKSBjb25zdDsKICAgICBXRUJDT1JFX0VY
UE9SVCB1bnNpZ25lZCBudW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnNGb3JUZXN0aW5nKCkgY29uc3Q7
CiAgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIGRvdWJsZT4+IGFj
Y2VsZXJhdGVkQW5pbWF0aW9uc0ZvckVsZW1lbnQoRWxlbWVudCYpIGNvbnN0OyAgICAKICAgICBX
RUJDT1JFX0VYUE9SVCB1bnNpZ25lZCBudW1iZXJPZkFuaW1hdGlvblRpbWVsaW5lSW52YWxpZGF0
aW9uc0ZvclRlc3RpbmcoKSBjb25zdDsKQEAgLTkyLDEwICs4OSw3IEBAIHByaXZhdGU6CiAgICAg
RG9jdW1lbnRUaW1lbGluZShEb2N1bWVudCYsIFNlY29uZHMpOwogCiAgICAgRG9jdW1lbnRUaW1l
bGluZXNDb250cm9sbGVyKiBjb250cm9sbGVyKCkgY29uc3Q7Ci0gICAgUmVkdWNlZFJlc29sdXRp
b25TZWNvbmRzIGxpdmVDdXJyZW50VGltZSgpIGNvbnN0OwogICAgIHZvaWQgYXBwbHlQZW5kaW5n
QWNjZWxlcmF0ZWRBbmltYXRpb25zKCk7Ci0gICAgdm9pZCBjYWNoZUN1cnJlbnRUaW1lKFJlZHVj
ZWRSZXNvbHV0aW9uU2Vjb25kcyk7Ci0gICAgdm9pZCBtYXliZUNsZWFyQ2FjaGVkQ3VycmVudFRp
bWUoKTsKICAgICB2b2lkIHNjaGVkdWxlSW52YWxpZGF0aW9uVGFza0lmTmVlZGVkKCk7CiAgICAg
dm9pZCBzY2hlZHVsZUFuaW1hdGlvblJlc29sdXRpb24oKTsKICAgICB2b2lkIGNsZWFyVGlja1Nj
aGVkdWxlVGltZXIoKTsKQEAgLTEwNiwxNiArMTAwLDEyIEBAIHByaXZhdGU6CiAgICAgYm9vbCBz
aG91bGRSdW5VcGRhdGVBbmltYXRpb25zQW5kU2VuZEV2ZW50c0lnbm9yaW5nU3VzcGVuc2lvblN0
YXRlKCkgY29uc3Q7CiAKICAgICBUaW1lciBtX3RpY2tTY2hlZHVsZVRpbWVyOwotICAgIEdlbmVy
aWNUYXNrUXVldWU8VGltZXI+IG1fY3VycmVudFRpbWVDbGVhcmluZ1Rhc2tRdWV1ZTsKICAgICBI
YXNoU2V0PFJlZlB0cjxXZWJBbmltYXRpb24+PiBtX2FjY2VsZXJhdGVkQW5pbWF0aW9uc1BlbmRp
bmdSdW5uaW5nU3RhdGVDaGFuZ2U7CiAgICAgSGFzaFNldDxFbGVtZW50Kj4gbV9lbGVtZW50c1dp
dGhSdW5uaW5nQWNjZWxlcmF0ZWRBbmltYXRpb25zOwogICAgIEFuaW1hdGlvbkV2ZW50cyBtX3Bl
bmRpbmdBbmltYXRpb25FdmVudHM7CiAgICAgV2Vha1B0cjxEb2N1bWVudD4gbV9kb2N1bWVudDsK
LSAgICBNYXJrYWJsZTxTZWNvbmRzLCBTZWNvbmRzOjpNYXJrYWJsZVRyYWl0cz4gbV9jYWNoZWRD
dXJyZW50VGltZTsKICAgICBTZWNvbmRzIG1fb3JpZ2luVGltZTsKICAgICB1bnNpZ25lZCBtX251
bWJlck9mQW5pbWF0aW9uVGltZWxpbmVJbnZhbGlkYXRpb25zRm9yVGVzdGluZyB7IDAgfTsKLSAg
ICBib29sIG1faXNTdXNwZW5kZWQgeyBmYWxzZSB9OwotICAgIGJvb2wgbV93YWl0aW5nT25WTUlk
bGUgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9hbmltYXRpb25SZXNvbHV0aW9uU2NoZWR1bGVkIHsg
ZmFsc2UgfTsKICAgICBib29sIG1fc2hvdWxkU2NoZWR1bGVBbmltYXRpb25SZXNvbHV0aW9uRm9y
TmV3UGVuZGluZ0V2ZW50cyB7IHRydWUgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9hbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZXNDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lc0NvbnRyb2xsZXIuY3BwCmluZGV4IDNhYmQz
N2VjYjU0YjUzM2QxYWI2NmU2YzdkMGY4MzZlYmYyNjBhMTEuLjY3ZmM0ZmYyNTFmOWVjMTZhM2Mx
Y2Y5OTFjNTEzYjVhODA5MjI0YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlv
bi9Eb2N1bWVudFRpbWVsaW5lc0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Fu
aW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lc0NvbnRyb2xsZXIuY3BwCkBAIC0yOCwxMSArMjgsMTMg
QEAKIAogI2luY2x1ZGUgIkFuaW1hdGlvbkV2ZW50QmFzZS5oIgogI2luY2x1ZGUgIkNTU1RyYW5z
aXRpb24uaCIKKyNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgog
I2luY2x1ZGUgIkRvY3VtZW50VGltZWxpbmUuaCIKICNpbmNsdWRlICJFdmVudExvb3AuaCIKICNp
bmNsdWRlICJXZWJBbmltYXRpb24uaCIKICNpbmNsdWRlICJXZWJBbmltYXRpb25UeXBlcy5oIgor
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1ZNLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApA
QCAtNTcsNiArNTksOCBAQCB2b2lkIERvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlcjo6cmVtb3Zl
VGltZWxpbmUoRG9jdW1lbnRUaW1lbGluZSYgdGltZWxpbmUpCiAKIHZvaWQgRG9jdW1lbnRUaW1l
bGluZXNDb250cm9sbGVyOjpkZXRhY2hGcm9tRG9jdW1lbnQoKQogeworICAgIG1fY3VycmVudFRp
bWVDbGVhcmluZ1Rhc2tRdWV1ZS5jbG9zZSgpOworCiAgICAgd2hpbGUgKCFtX3RpbWVsaW5lcy5j
b21wdXRlc0VtcHR5KCkpCiAgICAgICAgIG1fdGltZWxpbmVzLmJlZ2luKCktPmRldGFjaEZyb21E
b2N1bWVudCgpOwogfQpAQCAtNzAsMTIgKzc0LDE4IEBAIHZvaWQgRG9jdW1lbnRUaW1lbGluZXND
b250cm9sbGVyOjp1cGRhdGVBbmltYXRpb25zQW5kU2VuZEV2ZW50cyhSZWR1Y2VkUmVzb2x1dGlv
CiAgICAgZm9yIChhdXRvJiB0aW1lbGluZSA6IG1fdGltZWxpbmVzKQogICAgICAgICBwcm90ZWN0
ZWRUaW1lbGluZXMuYXBwZW5kKCZ0aW1lbGluZSk7CiAKKyAgICAvLyBXZSBuZWVkIHRvIGZyZWV6
ZSB0aGUgY3VycmVudCB0aW1lIGV2ZW4gaWYgbm8gYW5pbWF0aW9uIGlzIHJ1bm5pbmcuCisgICAg
Ly8gZG9jdW1lbnQudGltZWxpbmUuY3VycmVudFRpbWUgbWF5IGJlIGNhbGxlZCBmcm9tIGEgckFG
IGNhbGxiYWNrIGFuZAorICAgIC8vIGl0IGhhcyB0byBtYXRjaCB0aGUgckFGIHRpbWVzdGFtcC4K
KyAgICBpZiAoIW1faXNTdXNwZW5kZWQpCisgICAgICAgIGNhY2hlQ3VycmVudFRpbWUodGltZXN0
YW1wKTsKKwogICAgIC8vIDEuIFVwZGF0ZSB0aGUgY3VycmVudCB0aW1lIG9mIGFsbCB0aW1lbGlu
ZXMgYXNzb2NpYXRlZCB3aXRoIGRvYyBwYXNzaW5nIG5vdyBhcyB0aGUgdGltZXN0YW1wLgogICAg
IFZlY3RvcjxEb2N1bWVudFRpbWVsaW5lKj4gdGltZWxpbmVzVG9VcGRhdGU7CiAgICAgVmVjdG9y
PFJlZlB0cjxXZWJBbmltYXRpb24+PiBhbmltYXRpb25zVG9SZW1vdmU7CiAgICAgVmVjdG9yPFJl
ZlB0cjxDU1NUcmFuc2l0aW9uPj4gY29tcGxldGVkVHJhbnNpdGlvbnM7CiAgICAgZm9yIChhdXRv
JiB0aW1lbGluZSA6IHByb3RlY3RlZFRpbWVsaW5lcykgewotICAgICAgICBhdXRvIHNob3VsZFVw
ZGF0ZUFuaW1hdGlvbnNBbmRTZW5kRXZlbnRzID0gdGltZWxpbmUtPmRvY3VtZW50V2lsbFVwZGF0
ZUFuaW1hdGlvbnNBbmRTZW5kRXZlbnRzKHRpbWVzdGFtcCk7CisgICAgICAgIGF1dG8gc2hvdWxk
VXBkYXRlQW5pbWF0aW9uc0FuZFNlbmRFdmVudHMgPSB0aW1lbGluZS0+ZG9jdW1lbnRXaWxsVXBk
YXRlQW5pbWF0aW9uc0FuZFNlbmRFdmVudHMoKTsKICAgICAgICAgaWYgKHNob3VsZFVwZGF0ZUFu
aW1hdGlvbnNBbmRTZW5kRXZlbnRzID09IERvY3VtZW50VGltZWxpbmU6OlNob3VsZFVwZGF0ZUFu
aW1hdGlvbnNBbmRTZW5kRXZlbnRzOjpObykKICAgICAgICAgICAgIGNvbnRpbnVlOwogCkBAIC0x
NTYsNSArMTY2LDgwIEBAIHZvaWQgRG9jdW1lbnRUaW1lbGluZXNDb250cm9sbGVyOjp1cGRhdGVB
bmltYXRpb25zQW5kU2VuZEV2ZW50cyhSZWR1Y2VkUmVzb2x1dGlvCiAgICAgICAgIHRpbWVsaW5l
LT5kb2N1bWVudERpZFVwZGF0ZUFuaW1hdGlvbnNBbmRTZW5kRXZlbnRzKCk7CiB9CiAKK3ZvaWQg
RG9jdW1lbnRUaW1lbGluZXNDb250cm9sbGVyOjpzdXNwZW5kQW5pbWF0aW9ucygpCit7CisgICAg
aWYgKG1faXNTdXNwZW5kZWQpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghbV9jYWNoZWRD
dXJyZW50VGltZSkKKyAgICAgICAgbV9jYWNoZWRDdXJyZW50VGltZSA9IGxpdmVDdXJyZW50VGlt
ZSgpOworCisgICAgZm9yIChhdXRvJiB0aW1lbGluZSA6IG1fdGltZWxpbmVzKQorICAgICAgICB0
aW1lbGluZS5zdXNwZW5kQW5pbWF0aW9ucygpOworCisgICAgbV9pc1N1c3BlbmRlZCA9IHRydWU7
Cit9CisKK3ZvaWQgRG9jdW1lbnRUaW1lbGluZXNDb250cm9sbGVyOjpyZXN1bWVBbmltYXRpb25z
KCkKK3sKKyAgICBpZiAoIW1faXNTdXNwZW5kZWQpCisgICAgICAgIHJldHVybjsKKworICAgIG1f
Y2FjaGVkQ3VycmVudFRpbWUgPSBXVEY6Om51bGxvcHQ7CisKKyAgICBtX2lzU3VzcGVuZGVkID0g
ZmFsc2U7CisKKyAgICBmb3IgKGF1dG8mIHRpbWVsaW5lIDogbV90aW1lbGluZXMpCisgICAgICAg
IHRpbWVsaW5lLnJlc3VtZUFuaW1hdGlvbnMoKTsKK30KKworYm9vbCBEb2N1bWVudFRpbWVsaW5l
c0NvbnRyb2xsZXI6OmFuaW1hdGlvbnNBcmVTdXNwZW5kZWQoKSBjb25zdAoreworICAgIHJldHVy
biBtX2lzU3VzcGVuZGVkOworfQorCitSZWR1Y2VkUmVzb2x1dGlvblNlY29uZHMgRG9jdW1lbnRU
aW1lbGluZXNDb250cm9sbGVyOjpsaXZlQ3VycmVudFRpbWUoKSBjb25zdAoreworICAgIHJldHVy
biBtX2RvY3VtZW50LmRvbVdpbmRvdygpLT5ub3dUaW1lc3RhbXAoKTsKK30KKworT3B0aW9uYWw8
U2Vjb25kcz4gRG9jdW1lbnRUaW1lbGluZXNDb250cm9sbGVyOjpjdXJyZW50VGltZSgpCit7Cisg
ICAgaWYgKCFtX2RvY3VtZW50LmRvbVdpbmRvdygpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworCisgICAgaWYgKCFtX2NhY2hlZEN1cnJlbnRUaW1lKQorICAgICAgICBjYWNoZUN1cnJl
bnRUaW1lKGxpdmVDdXJyZW50VGltZSgpKTsKKworICAgIHJldHVybiAqbV9jYWNoZWRDdXJyZW50
VGltZTsKK30KKwordm9pZCBEb2N1bWVudFRpbWVsaW5lc0NvbnRyb2xsZXI6OmNhY2hlQ3VycmVu
dFRpbWUoUmVkdWNlZFJlc29sdXRpb25TZWNvbmRzIG5ld0N1cnJlbnRUaW1lKQoreworICAgIG1f
Y2FjaGVkQ3VycmVudFRpbWUgPSBuZXdDdXJyZW50VGltZTsKKyAgICAvLyBXZSB3YW50IHRvIGJl
IHN1cmUgdG8ga2VlcCB0aGlzIHRpbWUgY2FjaGVkIHVudGlsIHdlJ3ZlIGJvdGggZmluaXNoZWQg
cnVubmluZyBKUyBhbmQgZmluaXNoZWQgdXBkYXRpbmcKKyAgICAvLyBhbmltYXRpb25zLCBzbyB3
ZSBzY2hlZHVsZSB0aGUgaW52YWxpZGF0aW9uIHRhc2sgYW5kIHJlZ2lzdGVyIGEgd2hlbklkbGUg
Y2FsbGJhY2sgb24gdGhlIFZNLCB3aGljaCB3aWxsCisgICAgLy8gZmlyZSBzeW5jcm9ub3VzbHkg
aWYgbm8gSlMgaXMgcnVubmluZy4KKyAgICBtX3dhaXRpbmdPblZNSWRsZSA9IHRydWU7CisgICAg
aWYgKCFtX2N1cnJlbnRUaW1lQ2xlYXJpbmdUYXNrUXVldWUuaGFzUGVuZGluZ1Rhc2tzKCkpCisg
ICAgICAgIG1fY3VycmVudFRpbWVDbGVhcmluZ1Rhc2tRdWV1ZS5lbnF1ZXVlVGFzayhzdGQ6OmJp
bmQoJkRvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlcjo6bWF5YmVDbGVhckNhY2hlZEN1cnJlbnRU
aW1lLCB0aGlzKSk7CisgICAgLy8gV2UgZXh0ZW50IHRoZSBhc3NvY2lhdGVkIERvY3VtZW50J3Mg
bGlmZWN5Y2xlIHVudGlsIHRoZSBWTSBiZWNhbWUgaWRsZSBzaW5jZSB0aGUgRG9jdW1lbnRUaW1l
bGluZXNDb250cm9sbGVyCisgICAgLy8gaXMgb3duZWQgYnkgdGhlIERvY3VtZW50LgorICAgIG1f
ZG9jdW1lbnQudm0oKS53aGVuSWRsZShbdGhpcywgcHJvdGVjdGVkRG9jdW1lbnQgPSBtYWtlUmVm
UHRyKG1fZG9jdW1lbnQpXSgpIHsKKyAgICAgICAgbV93YWl0aW5nT25WTUlkbGUgPSBmYWxzZTsK
KyAgICAgICAgbWF5YmVDbGVhckNhY2hlZEN1cnJlbnRUaW1lKCk7CisgICAgfSk7Cit9CisKK3Zv
aWQgRG9jdW1lbnRUaW1lbGluZXNDb250cm9sbGVyOjptYXliZUNsZWFyQ2FjaGVkQ3VycmVudFRp
bWUoKQoreworICAgIC8vIFdlIHdhbnQgdG8gbWFrZSBzdXJlIHdlIG9ubHkgY2xlYXIgdGhlIGNh
Y2hlZCBjdXJyZW50IHRpbWUgaWYgd2UncmUgbm90IGN1cnJlbnRseSBydW5uaW5nCisgICAgLy8g
SlMgb3Igd2FpdGluZyBvbiBhbGwgY3VycmVudCBhbmltYXRpb24gdXBkYXRpbmcgY29kZSB0byBo
YXZlIGNvbXBsZXRlZC4gVGhpcyBpcyBzbyB0aGF0CisgICAgLy8gd2UncmUgZ3VhcmFudGVlZCB0
byBoYXZlIGEgY29uc2lzdGVudCBjdXJyZW50IHRpbWUgcmVwb3J0ZWQgZm9yIGFsbCB3b3JrIGhh
cHBlbmluZyBpbiBhIGdpdmVuCisgICAgLy8gSlMgZnJhbWUgb3IgdGhyb3VnaG91dCB1cGRhdGlu
ZyBhbmltYXRpb25zIGluIFdlYkNvcmUuCisgICAgaWYgKCFtX2lzU3VzcGVuZGVkICYmICFtX3dh
aXRpbmdPblZNSWRsZSAmJiAhbV9jdXJyZW50VGltZUNsZWFyaW5nVGFza1F1ZXVlLmhhc1BlbmRp
bmdUYXNrcygpKQorICAgICAgICBtX2NhY2hlZEN1cnJlbnRUaW1lID0gV1RGOjpudWxsb3B0Owor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lc0NvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lc0NvbnRyb2xsZXIuaAppbmRleCA5MDZjMTdkZDM4
NDEwNzhjZWYxZmZjZTAyMTFkNWJmNWFiZTc4ZjBkLi5kNzQ5YTA2NWRjNTNkNTcxMjFkZGE0Y2I5
NjYxZWQyNTYyMDhjMDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9j
dW1lbnRUaW1lbGluZXNDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9u
L0RvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlci5oCkBAIC0yNSw3ICsyNSwxMSBAQAogCiAjcHJh
Z21hIG9uY2UKIAorI2luY2x1ZGUgIkdlbmVyaWNUYXNrUXVldWUuaCIKICNpbmNsdWRlICJSZWR1
Y2VkUmVzb2x1dGlvblNlY29uZHMuaCIKKyNpbmNsdWRlICJUaW1lci5oIgorI2luY2x1ZGUgPHd0
Zi9NYXJrYWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9TZWNvbmRzLmg+CiAjaW5jbHVkZSA8d3RmL1dl
YWtIYXNoU2V0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ2LDE0ICs1MCwyOCBAQCBw
dWJsaWM6CiAgICAgdm9pZCBkZXRhY2hGcm9tRG9jdW1lbnQoKTsKICAgICB2b2lkIHVwZGF0ZUFu
aW1hdGlvbnNBbmRTZW5kRXZlbnRzKFJlZHVjZWRSZXNvbHV0aW9uU2Vjb25kcyk7CiAKKyAgICBP
cHRpb25hbDxTZWNvbmRzPiBjdXJyZW50VGltZSgpOworCisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzdXNwZW5kQW5pbWF0aW9ucygpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVzdW1lQW5p
bWF0aW9ucygpOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgYW5pbWF0aW9uc0FyZVN1c3BlbmRl
ZCgpIGNvbnN0OworCiBwcml2YXRlOgogICAgIHN0cnVjdCBBbmltYXRpb25zVG9Qcm9jZXNzIHsK
ICAgICAgICAgVmVjdG9yPFJlZlB0cjxXZWJBbmltYXRpb24+PiBhbmltYXRpb25zVG9SZW1vdmU7
CiAgICAgICAgIFZlY3RvcjxSZWZQdHI8Q1NTVHJhbnNpdGlvbj4+IGNvbXBsZXRlZFRyYW5zaXRp
b25zOwogICAgIH07CiAKKyAgICBSZWR1Y2VkUmVzb2x1dGlvblNlY29uZHMgbGl2ZUN1cnJlbnRU
aW1lKCkgY29uc3Q7CisgICAgdm9pZCBjYWNoZUN1cnJlbnRUaW1lKFJlZHVjZWRSZXNvbHV0aW9u
U2Vjb25kcyk7CisgICAgdm9pZCBtYXliZUNsZWFyQ2FjaGVkQ3VycmVudFRpbWUoKTsKKwogICAg
IFdlYWtIYXNoU2V0PERvY3VtZW50VGltZWxpbmU+IG1fdGltZWxpbmVzOworICAgIEdlbmVyaWNU
YXNrUXVldWU8VGltZXI+IG1fY3VycmVudFRpbWVDbGVhcmluZ1Rhc2tRdWV1ZTsKICAgICBEb2N1
bWVudCYgbV9kb2N1bWVudDsKKyAgICBNYXJrYWJsZTxTZWNvbmRzLCBTZWNvbmRzOjpNYXJrYWJs
ZVRyYWl0cz4gbV9jYWNoZWRDdXJyZW50VGltZTsKKyAgICBib29sIG1faXNTdXNwZW5kZWQgeyBm
YWxzZSB9OworICAgIGJvb2wgbV93YWl0aW5nT25WTUlkbGUgeyBmYWxzZSB9OwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggMmNjOWE4NmNm
ODllZWRjODhkMTE3MWU5MWEwODYyZDFlMzhlYWJhNy4uZTAxYWQ1YzUyMTdmNDViMTM3ODZmNzA0
OTVmNzkxNDk0Mjc3ZTc1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0yNDAzLDE2ICsy
NDAzLDE2IEBAIHZvaWQgRG9jdW1lbnQ6OmRpZEJlY29tZUN1cnJlbnREb2N1bWVudEluRnJhbWUo
KQogICAgIC8vIGJhY2svZm9yd2FyZCBjYWNoZSwgb3Igc2ltcGx5IG5ld2x5IGNyZWF0ZWQpLgog
ICAgIGlmIChtX2ZyYW1lLT5hY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9uc1N1c3BlbmRlZCgp
KSB7CiAgICAgICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygp
LndlYkFuaW1hdGlvbnNDU1NJbnRlZ3JhdGlvbkVuYWJsZWQoKSkgewotICAgICAgICAgICAgaWYg
KGF1dG8qIHRpbWVsaW5lID0gZXhpc3RpbmdUaW1lbGluZSgpKQotICAgICAgICAgICAgICAgIHRp
bWVsaW5lLT5zdXNwZW5kQW5pbWF0aW9ucygpOworICAgICAgICAgICAgaWYgKG1fdGltZWxpbmVz
Q29udHJvbGxlcikKKyAgICAgICAgICAgICAgICBtX3RpbWVsaW5lc0NvbnRyb2xsZXItPnN1c3Bl
bmRBbmltYXRpb25zKCk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgbV9mcmFtZS0+bGVn
YWN5QW5pbWF0aW9uKCkuc3VzcGVuZEFuaW1hdGlvbnNGb3JEb2N1bWVudCh0aGlzKTsKICAgICAg
ICAgc3VzcGVuZFNjaGVkdWxlZFRhc2tzKFJlYXNvbkZvclN1c3BlbnNpb246OlBhZ2VXaWxsQmVT
dXNwZW5kZWQpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHJlc3VtZVNjaGVkdWxlZFRhc2tzKFJl
YXNvbkZvclN1c3BlbnNpb246OlBhZ2VXaWxsQmVTdXNwZW5kZWQpOwogICAgICAgICBpZiAoUnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS53ZWJBbmltYXRpb25zQ1NTSW50
ZWdyYXRpb25FbmFibGVkKCkpIHsKLSAgICAgICAgICAgIGlmIChhdXRvKiB0aW1lbGluZSA9IGV4
aXN0aW5nVGltZWxpbmUoKSkKLSAgICAgICAgICAgICAgICB0aW1lbGluZS0+cmVzdW1lQW5pbWF0
aW9ucygpOworICAgICAgICAgICAgaWYgKG1fdGltZWxpbmVzQ29udHJvbGxlcikKKyAgICAgICAg
ICAgICAgICBtX3RpbWVsaW5lc0NvbnRyb2xsZXItPnJlc3VtZUFuaW1hdGlvbnMoKTsKICAgICAg
ICAgfSBlbHNlCiAgICAgICAgICAgICBtX2ZyYW1lLT5sZWdhY3lBbmltYXRpb24oKS5yZXN1bWVB
bmltYXRpb25zRm9yRG9jdW1lbnQodGhpcyk7CiAgICAgfQpAQCAtNTM5OSw4ICs1Mzk5LDggQEAg
dm9pZCBEb2N1bWVudDo6cmVzdW1lKFJlYXNvbkZvclN1c3BlbnNpb24gcmVhc29uKQogICAgIG1f
ZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLmRpc3BhdGNoRGlkQmVjb21lRnJhbWVzZXQoaXNGcmFt
ZVNldCgpKTsKIAogICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJl
cygpLndlYkFuaW1hdGlvbnNDU1NJbnRlZ3JhdGlvbkVuYWJsZWQoKSkgewotICAgICAgICBpZiAo
YXV0byogdGltZWxpbmUgPSBleGlzdGluZ1RpbWVsaW5lKCkpCi0gICAgICAgICAgICB0aW1lbGlu
ZS0+cmVzdW1lQW5pbWF0aW9ucygpOyAgCisgICAgICAgIGlmIChtX3RpbWVsaW5lc0NvbnRyb2xs
ZXIpCisgICAgICAgICAgICBtX3RpbWVsaW5lc0NvbnRyb2xsZXItPnJlc3VtZUFuaW1hdGlvbnMo
KTsgIAogICAgIH0gZWxzZQogICAgICAgICBtX2ZyYW1lLT5sZWdhY3lBbmltYXRpb24oKS5yZXN1
bWVBbmltYXRpb25zRm9yRG9jdW1lbnQodGhpcyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXgg
ZDgyODBhNzk3ZTlmMmZkOGE5YWUzOWU5NjkyOGRkYjRkYmM1OTlhMi4uNzdlY2I3YTAzMTMzOWZj
MTdiZWM1NTNmMzVmYjYzNjc1NzNkMGM0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTE0OTYs
NyArMTQ5Niw3IEBAIHB1YmxpYzoKICAgICBWZWN0b3I8UmVmUHRyPFdlYkFuaW1hdGlvbj4+IGdl
dEFuaW1hdGlvbnMoKTsKICAgICBWZWN0b3I8UmVmUHRyPFdlYkFuaW1hdGlvbj4+IG1hdGNoaW5n
QW5pbWF0aW9ucyhjb25zdCBXVEY6OkZ1bmN0aW9uPGJvb2woRWxlbWVudCYpPiYpOwogICAgIERv
Y3VtZW50VGltZWxpbmVzQ29udHJvbGxlciogdGltZWxpbmVzQ29udHJvbGxlcigpIGNvbnN0IHsg
cmV0dXJuIG1fdGltZWxpbmVzQ29udHJvbGxlci5nZXQoKTsgfQotICAgIERvY3VtZW50VGltZWxp
bmVzQ29udHJvbGxlciYgZW5zdXJlVGltZWxpbmVzQ29udHJvbGxlcigpOworICAgIFdFQkNPUkVf
RVhQT1JUIERvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlciYgZW5zdXJlVGltZWxpbmVzQ29udHJv
bGxlcigpOwogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKICAgICB2b2lkIHJlZ2lz
dGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3Bw
CmluZGV4IDM5ZGVhNGQ1ZTI1YTdjNjNkOWJmZGIwM2FhNWU3NTU1NGJiMWJjNjUuLjc2MDY2ZjUy
YThhMjE4NzBiNjU3OTdjNDhmNTM4OTliZDJjM2IxZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCkBA
IC03MTgsOCArNzE4LDggQEAgdm9pZCBGcmFtZTo6Y2xlYXJUaW1lcnMoRnJhbWVWaWV3ICp2aWV3
LCBEb2N1bWVudCAqZG9jdW1lbnQpCiAgICAgaWYgKHZpZXcpIHsKICAgICAgICAgdmlldy0+bGF5
b3V0Q29udGV4dCgpLnVuc2NoZWR1bGVMYXlvdXQoKTsKICAgICAgICAgaWYgKFJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2ViQW5pbWF0aW9uc0NTU0ludGVncmF0aW9u
RW5hYmxlZCgpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byogdGltZWxpbmUgPSBkb2N1bWVudC0+
ZXhpc3RpbmdUaW1lbGluZSgpKQotICAgICAgICAgICAgICAgIHRpbWVsaW5lLT5zdXNwZW5kQW5p
bWF0aW9ucygpOworICAgICAgICAgICAgaWYgKGF1dG8qIHRpbWVsaW5lcyA9IGRvY3VtZW50LT50
aW1lbGluZXNDb250cm9sbGVyKCkpCisgICAgICAgICAgICAgICAgdGltZWxpbmVzLT5zdXNwZW5k
QW5pbWF0aW9ucygpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIHZpZXctPmZyYW1lKCku
bGVnYWN5QW5pbWF0aW9uKCkuc3VzcGVuZEFuaW1hdGlvbnNGb3JEb2N1bWVudChkb2N1bWVudCk7
CiAgICAgICAgIHZpZXctPmZyYW1lKCkuZXZlbnRIYW5kbGVyKCkuc3RvcEF1dG9zY3JvbGxUaW1l
cigpOwpAQCAtMTAxMyw4ICsxMDEzLDggQEAgdm9pZCBGcmFtZTo6cmVzdW1lQWN0aXZlRE9NT2Jq
ZWN0c0FuZEFuaW1hdGlvbnMoKQogICAgIC8vIEZyYW1lOjpjbGVhclRpbWVycygpIHN1c3BlbmRl
ZCBhbmltYXRpb25zIGFuZCBwZW5kaW5nIHJlbGF5b3V0cy4KIAogICAgIGlmIChSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYkFuaW1hdGlvbnNDU1NJbnRlZ3JhdGlv
bkVuYWJsZWQoKSkgewotICAgICAgICBpZiAoYXV0byogdGltZWxpbmUgPSBtX2RvYy0+ZXhpc3Rp
bmdUaW1lbGluZSgpKQotICAgICAgICAgICAgdGltZWxpbmUtPnJlc3VtZUFuaW1hdGlvbnMoKTsK
KyAgICAgICAgaWYgKGF1dG8qIHRpbWVsaW5lcyA9IG1fZG9jLT50aW1lbGluZXNDb250cm9sbGVy
KCkpCisgICAgICAgICAgICB0aW1lbGluZXMtPnJlc3VtZUFuaW1hdGlvbnMoKTsKICAgICB9IGVs
c2UKICAgICAgICAgbGVnYWN5QW5pbWF0aW9uKCkucmVzdW1lQW5pbWF0aW9uc0ZvckRvY3VtZW50
KG1fZG9jLmdldCgpKTsKICAgICBpZiAobV92aWV3KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggZjVj
NGQwOWVhN2ZiOWExZGZjYTkwYzkxNmIzZTY2ZjE5N2VhNzUzZi4uNzNmNTllOWJmZGYyMzAyZjM0
NDliOWEzMjYxZDlkMGVkZjZmNDkzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0yMDU0LDggKzIw
NTQsOCBAQCB2b2lkIFBhZ2U6OnNldElzVmlzaWJsZUludGVybmFsKGJvb2wgaXNWaXNpYmxlKQog
ICAgICAgICBpZiAobV9zZXR0aW5ncy0+aGlkZGVuUGFnZUNTU0FuaW1hdGlvblN1c3BlbnNpb25F
bmFibGVkKCkpIHsKICAgICAgICAgICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFy
ZWRGZWF0dXJlcygpLndlYkFuaW1hdGlvbnNDU1NJbnRlZ3JhdGlvbkVuYWJsZWQoKSkgewogICAg
ICAgICAgICAgICAgIGZvckVhY2hEb2N1bWVudChbXSAoRG9jdW1lbnQmIGRvY3VtZW50KSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGlmIChhdXRvKiB0aW1lbGluZSA9IGRvY3VtZW50LmV4aXN0aW5n
VGltZWxpbmUoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVsaW5lLT5yZXN1bWVBbmlt
YXRpb25zKCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChhdXRvKiB0aW1lbGluZXMgPSBkb2N1
bWVudC50aW1lbGluZXNDb250cm9sbGVyKCkpCisgICAgICAgICAgICAgICAgICAgICAgICB0aW1l
bGluZXMtPnJlc3VtZUFuaW1hdGlvbnMoKTsKICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAg
ICAgIH0gZWxzZQogICAgICAgICAgICAgICAgIG1haW5GcmFtZSgpLmxlZ2FjeUFuaW1hdGlvbigp
LnJlc3VtZUFuaW1hdGlvbnMoKTsKQEAgLTIwNzgsOCArMjA3OCw4IEBAIHZvaWQgUGFnZTo6c2V0
SXNWaXNpYmxlSW50ZXJuYWwoYm9vbCBpc1Zpc2libGUpCiAgICAgICAgIGlmIChtX3NldHRpbmdz
LT5oaWRkZW5QYWdlQ1NTQW5pbWF0aW9uU3VzcGVuc2lvbkVuYWJsZWQoKSkgewogICAgICAgICAg
ICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2ViQW5pbWF0
aW9uc0NTU0ludGVncmF0aW9uRW5hYmxlZCgpKSB7CiAgICAgICAgICAgICAgICAgZm9yRWFjaERv
Y3VtZW50KFtdIChEb2N1bWVudCYgZG9jdW1lbnQpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYg
KGF1dG8qIHRpbWVsaW5lID0gZG9jdW1lbnQuZXhpc3RpbmdUaW1lbGluZSgpKQotICAgICAgICAg
ICAgICAgICAgICAgICAgdGltZWxpbmUtPnN1c3BlbmRBbmltYXRpb25zKCk7CisgICAgICAgICAg
ICAgICAgICAgIGlmIChhdXRvKiB0aW1lbGluZXMgPSBkb2N1bWVudC50aW1lbGluZXNDb250cm9s
bGVyKCkpCisgICAgICAgICAgICAgICAgICAgICAgICB0aW1lbGluZXMtPnN1c3BlbmRBbmltYXRp
b25zKCk7CiAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAg
ICAgICAgICBtYWluRnJhbWUoKS5sZWdhY3lBbmltYXRpb24oKS5zdXNwZW5kQW5pbWF0aW9ucygp
OwpAQCAtMjQyOSwxMSArMjQyOSwxMSBAQCB2b2lkIFBhZ2U6OmhpZGRlblBhZ2VDU1NBbmltYXRp
b25TdXNwZW5zaW9uU3RhdGVDaGFuZ2VkKCkKICAgICBpZiAoIWlzVmlzaWJsZSgpKSB7CiAgICAg
ICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYkFuaW1h
dGlvbnNDU1NJbnRlZ3JhdGlvbkVuYWJsZWQoKSkgewogICAgICAgICAgICAgZm9yRWFjaERvY3Vt
ZW50KFsmXSAoRG9jdW1lbnQmIGRvY3VtZW50KSB7Ci0gICAgICAgICAgICAgICAgaWYgKGF1dG8q
IHRpbWVsaW5lID0gZG9jdW1lbnQuZXhpc3RpbmdUaW1lbGluZSgpKSB7CisgICAgICAgICAgICAg
ICAgaWYgKGF1dG8qIHRpbWVsaW5lcyA9IGRvY3VtZW50LnRpbWVsaW5lc0NvbnRyb2xsZXIoKSkg
ewogICAgICAgICAgICAgICAgICAgICBpZiAobV9zZXR0aW5ncy0+aGlkZGVuUGFnZUNTU0FuaW1h
dGlvblN1c3BlbnNpb25FbmFibGVkKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICB0aW1lbGlu
ZS0+c3VzcGVuZEFuaW1hdGlvbnMoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVsaW5l
cy0+c3VzcGVuZEFuaW1hdGlvbnMoKTsKICAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgICAgICAgICAgICAgdGltZWxpbmUtPnJlc3VtZUFuaW1hdGlvbnMoKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHRpbWVsaW5lcy0+cmVzdW1lQW5pbWF0aW9ucygpOwogICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIH0pOwogICAgICAgICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IGJmZTgxZDNjMjI4YTI4NGMyNmNiODRkYzg2YmVhMTE3
ZjM1ZGMyNzUuLmIyYjRlMWRmMWU0Y2ExMDQ4ZjM1Y2ZjYTU1MDNhYzhlNTRjMDkxMDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTEwNzAsNyArMTA3MCw3IEBAIEV4Y2Vw
dGlvbk9yPGJvb2w+IEludGVybmFsczo6YW5pbWF0aW9uc0FyZVN1c3BlbmRlZCgpIGNvbnN0CiAg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkQWNjZXNzRXJyb3IgfTsKIAogICAgIGlm
IChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYkFuaW1hdGlvbnND
U1NJbnRlZ3JhdGlvbkVuYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuIGRvY3VtZW50LT50aW1lbGlu
ZSgpLmFuaW1hdGlvbnNBcmVTdXNwZW5kZWQoKTsKKyAgICAgICAgcmV0dXJuIGRvY3VtZW50LT5l
bnN1cmVUaW1lbGluZXNDb250cm9sbGVyKCkuYW5pbWF0aW9uc0FyZVN1c3BlbmRlZCgpOwogICAg
IHJldHVybiBkb2N1bWVudC0+ZnJhbWUoKS0+bGVnYWN5QW5pbWF0aW9uKCkuYW5pbWF0aW9uc0Fy
ZVN1c3BlbmRlZEZvckRvY3VtZW50KGRvY3VtZW50KTsKIH0KIApAQCAtMTA5OCwxMCArMTA5OCwx
MCBAQCBFeGNlcHRpb25Pcjx2b2lkPiBJbnRlcm5hbHM6OnN1c3BlbmRBbmltYXRpb25zKCkgY29u
c3QKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRBY2Nlc3NFcnJvciB9OwogCiAg
ICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2ViQW5pbWF0
aW9uc0NTU0ludGVncmF0aW9uRW5hYmxlZCgpKSB7Ci0gICAgICAgIGRvY3VtZW50LT50aW1lbGlu
ZSgpLnN1c3BlbmRBbmltYXRpb25zKCk7CisgICAgICAgIGRvY3VtZW50LT5lbnN1cmVUaW1lbGlu
ZXNDb250cm9sbGVyKCkuc3VzcGVuZEFuaW1hdGlvbnMoKTsKICAgICAgICAgZm9yIChGcmFtZSog
ZnJhbWUgPSBkb2N1bWVudC0+ZnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50
cmF2ZXJzZU5leHQoKSkgewogICAgICAgICAgICAgaWYgKERvY3VtZW50KiBkb2N1bWVudCA9IGZy
YW1lLT5kb2N1bWVudCgpKQotICAgICAgICAgICAgICAgIGRvY3VtZW50LT50aW1lbGluZSgpLnN1
c3BlbmRBbmltYXRpb25zKCk7CisgICAgICAgICAgICAgICAgZG9jdW1lbnQtPmVuc3VyZVRpbWVs
aW5lc0NvbnRyb2xsZXIoKS5zdXNwZW5kQW5pbWF0aW9ucygpOwogICAgICAgICB9CiAgICAgfSBl
bHNlIHsKICAgICAgICAgZG9jdW1lbnQtPmZyYW1lKCktPmxlZ2FjeUFuaW1hdGlvbigpLnN1c3Bl
bmRBbmltYXRpb25zRm9yRG9jdW1lbnQoZG9jdW1lbnQpOwpAQCAtMTEyMiwxMCArMTEyMiwxMCBA
QCBFeGNlcHRpb25Pcjx2b2lkPiBJbnRlcm5hbHM6OnJlc3VtZUFuaW1hdGlvbnMoKSBjb25zdAog
ICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZEFjY2Vzc0Vycm9yIH07CiAKICAgICBp
ZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS53ZWJBbmltYXRpb25z
Q1NTSW50ZWdyYXRpb25FbmFibGVkKCkpIHsKLSAgICAgICAgZG9jdW1lbnQtPnRpbWVsaW5lKCku
cmVzdW1lQW5pbWF0aW9ucygpOworICAgICAgICBkb2N1bWVudC0+ZW5zdXJlVGltZWxpbmVzQ29u
dHJvbGxlcigpLnJlc3VtZUFuaW1hdGlvbnMoKTsKICAgICAgICAgZm9yIChGcmFtZSogZnJhbWUg
PSBkb2N1bWVudC0+ZnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJz
ZU5leHQoKSkgewogICAgICAgICAgICAgaWYgKERvY3VtZW50KiBkb2N1bWVudCA9IGZyYW1lLT5k
b2N1bWVudCgpKQotICAgICAgICAgICAgICAgIGRvY3VtZW50LT50aW1lbGluZSgpLnJlc3VtZUFu
aW1hdGlvbnMoKTsKKyAgICAgICAgICAgICAgICBkb2N1bWVudC0+ZW5zdXJlVGltZWxpbmVzQ29u
dHJvbGxlcigpLnJlc3VtZUFuaW1hdGlvbnMoKTsKICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAg
ICAgICAgIGRvY3VtZW50LT5mcmFtZSgpLT5sZWdhY3lBbmltYXRpb24oKS5yZXN1bWVBbmltYXRp
b25zRm9yRG9jdW1lbnQoZG9jdW1lbnQpOwo=
</data>
<flag name="review"
          id="414169"
          type_id="1"
          status="+"
          setter="dino"
    />
          </attachment>
      

    </bug>

</bugzilla>