<?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>128677</bug_id>
          
          <creation_ts>2014-02-12 11:16:11 -0800</creation_ts>
          <short_desc>Clean up PageThrottler interface</short_desc>
          <delta_ts>2014-02-12 13:51:33 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Gavin Barraclough">barraclough</reporter>
          <assigned_to name="Gavin Barraclough">barraclough</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>japhet</cc>
    
    <cc>jer.noble</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>979928</commentid>
    <comment_count>0</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2014-02-12 11:16:11 -0800</bug_when>
    <thetext>Currently, responsibility for throttling DOM timers &amp; suspending animations is split between the Page &amp; the PageThrottler. Clarify by making Page responsible for suspending animations (PageThrottler is now purely related to aspects of timer throttling), and move all timer throttling policy to the PageThrottler, with a single function on Page to enable (Page::setTimerThrottlingEnabled).

Also, transmit the full ViewState to the PageThrottler (not just the IsVisuallyIdle flag), and distinguish between media &amp; page-load activity.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>979940</commentid>
    <comment_count>1</comment_count>
      <attachid>223989</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2014-02-12 11:53:20 -0800</bug_when>
    <thetext>Created attachment 223989
Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>979942</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-02-12 11:55:52 -0800</bug_when>
    <thetext>Attachment 223989 did not pass style-queue:


ERROR: Source/WebCore/page/PageThrottler.h:46:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 1 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>979995</commentid>
    <comment_count>3</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2014-02-12 13:51:33 -0800</bug_when>
    <thetext>Transmitting file data ..........
Committed revision 163983.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>223989</attachid>
            <date>2014-02-12 11:53:20 -0800</date>
            <delta_ts>2014-02-12 12:40:38 -0800</delta_ts>
            <desc>Fix</desc>
            <filename>128677.1.patch</filename>
            <type>text/plain</type>
            <size>19059</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2Mzk2NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY3IEBACisyMDE0LTAyLTEyICBHYXZpbiBC
YXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KKworICAgICAgICBDbGVhbiB1cCBQ
YWdlVGhyb3R0bGVyIGludGVyZmFjZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTI4Njc3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQ3VycmVudGx5LCByZXNwb25zaWJpbGl0eSBmb3IgdGhyb3R0bGluZyBE
T00gdGltZXJzICYgc3VzcGVuZGluZyBhbmltYXRpb25zIGlzIHNwbGl0CisgICAgICAgIGJldHdl
ZW4gdGhlIFBhZ2UgJiB0aGUgUGFnZVRocm90dGxlci4gQ2xhcmlmeSBieSBtYWtpbmcgUGFnZSBy
ZXNwb25zaWJsZSBmb3Igc3VzcGVuZGluZworICAgICAgICBhbmltYXRpb25zIChQYWdlVGhyb3R0
bGVyIGlzIG5vdyBwdXJlbHkgcmVsYXRlZCB0byBhc3BlY3RzIG9mIHRpbWVyIHRocm90dGxpbmcp
LCBhbmQKKyAgICAgICAgbW92ZSBhbGwgdGltZXIgdGhyb3R0bGluZyBwb2xpY3kgdG8gdGhlIFBh
Z2VUaHJvdHRsZXIsIHdpdGggYSBzaW5nbGUgZnVuY3Rpb24gb24gUGFnZSB0bworICAgICAgICBl
bmFibGUgKFBhZ2U6OnNldFRpbWVyVGhyb3R0bGluZ0VuYWJsZWQpLgorCisgICAgICAgIEFsc28s
IHRyYW5zbWl0IHRoZSBmdWxsIFZpZXdTdGF0ZSB0byB0aGUgUGFnZVRocm90dGxlciAobm90IGp1
c3QgdGhlIElzVmlzdWFsbHlJZGxlIGZsYWcpLAorICAgICAgICBhbmQgZGlzdGluZ3Vpc2ggYmV0
d2VlbiBtZWRpYSAmIHBhZ2UtbG9hZCBhY3Rpdml0eS4KKworCisgICAgICAgICogV2ViQ29yZS5l
eHAuaW46CisgICAgICAgICAgICAtIHJlbW92ZWQgc2V0RE9NVGltZXJBbGlnbm1lbnRJbnRlcnZh
bC4KKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAgICAgLSBjcmVh
dGVBY3Rpdml0eVRva2VuIC0+IG1lZGlhQWN0aXZpdHlUb2tlbgorICAgICAgICAqIGxvYWRlci9G
cmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6c3RhcnRlZCk6
CisgICAgICAgICAgICAtIGNyZWF0ZUFjdGl2aXR5VG9rZW4gLT4gcGFnZUxvYWRBY3Rpdml0eVRv
a2VuCisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OlBh
Z2UpOgorICAgICAgICAgICAgLSBhZGRlZCBtX3RpbWVyVGhyb3R0bGluZ0VuYWJsZWQsIG1hZGUg
UGFnZVRocm90dGxlciBhIG1lbWJlcgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c2V0SXNWaXN1
YWxseUlkbGVJbnRlcm5hbCk6CisgICAgICAgICAgICAtIHVwZGF0ZSBhbmltaWF0aW9uIHN1c3Bl
bnNpb24uCisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpzZXRUaW1lclRocm90dGxpbmdFbmFibGVk
KToKKyAgICAgICAgICAgIC0gc2V0VGltZXJBbGlnbm1lbnRJbnRlcnZhbCAtPiBzZXRUaW1lclRo
cm90dGxpbmdFbmFibGVkCisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpzZXRWaWV3U3RhdGUpOgor
ICAgICAgICAgICAgLSBwYXNzIHZpZXdTdGF0ZSB0byBQYWdlVGhyb3R0bGVyLgorICAgICAgICAo
V2ViQ29yZTo6UGFnZTo6c2V0SXNWaXNpYmxlSW50ZXJuYWwpOgorICAgICAgICAgICAgLSBkb24n
dCB1cGRhdGUgdGltZXIgdGhyb3R0bGluZy4KKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBhZ2U6OnBhZ2VUaHJvdHRsZXIpOgorICAgICAgICAgICAgLSBtYWRlIFBh
Z2VUaHJvdHRsZXIgYSBtZW1iZXIuCisgICAgICAgIChXZWJDb3JlOjpQYWdlOjp0aW1lckFsaWdu
bWVudEludGVydmFsKToKKyAgICAgICAgICAgIC0gaW5saW5lZC4KKyAgICAgICAgKiBwYWdlL1Bh
Z2VUaHJvdHRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVRocm90dGxlcjo6UGFnZVRo
cm90dGxlcik6CisgICAgICAgICAgICAtIGluaXRpYWxpemUgVmlld1N0YXRlLgorICAgICAgICAo
V2ViQ29yZTo6UGFnZVRocm90dGxlcjo6flBhZ2VUaHJvdHRsZXIpOgorICAgICAgICAgICAgLSBj
bGVhbiB1cCBieSBjYWxsaW5nIHNldFRpbWVyVGhyb3R0bGluZ0VuYWJsZWQgZGlyZWN0bHkuCisg
ICAgICAgIChXZWJDb3JlOjpQYWdlVGhyb3R0bGVyOjpoaWRkZW5QYWdlRE9NVGltZXJUaHJvdHRs
aW5nU3RhdGVDaGFuZ2VkKToKKyAgICAgICAgICAgIC0gbW92ZWQgZnJvbSBQYWdlLgorICAgICAg
ICAoV2ViQ29yZTo6UGFnZVRocm90dGxlcjo6bWVkaWFBY3Rpdml0eVRva2VuKToKKyAgICAgICAg
KFdlYkNvcmU6OlBhZ2VUaHJvdHRsZXI6OnBhZ2VMb2FkQWN0aXZpdHlUb2tlbik6CisgICAgICAg
ICAgICAtIGZyb20gUGFnZTo6Y3JlYXRlQWN0aXZpdHlUb2tlbgorICAgICAgICAoV2ViQ29yZTo6
UGFnZVRocm90dGxlcjo6dGhyb3R0bGVQYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VUaHJv
dHRsZXI6OnVudGhyb3R0bGVQYWdlKToKKyAgICAgICAgICAgIC0gZG9uJ3QgdGhyb3R0bGUgYW5p
bWF0aW9ucyBoZXJlLgorICAgICAgICAoV2ViQ29yZTo6UGFnZVRocm90dGxlcjo6c2V0Vmlld1N0
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VUaHJvdHRsZXI6OnNldElzVmlzaWJsZSk6Cisg
ICAgICAgICAgICAtIGFkZGVkLCB0aHJvdHRsZSBEb20gdGltZXJzLgorICAgICAgICAqIHBhZ2Uv
UGFnZVRocm90dGxlci5oOgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2V0dGluZ3M6OnNldEhpZGRlblBhZ2VET01UaW1lclRocm90dGxpbmdFbmFibGVk
KToKKyAgICAgICAgICAgIC0gcmVtb3ZlZCBzZXRET01UaW1lckFsaWdubWVudEludGVydmFsLCBo
aWRkZW5QYWdlRE9NVGltZXJUaHJvdHRsaW5nU3RhdGVDaGFuZ2VkIG1vdmVkIHRvIFBhZ2VUaHJv
dHRsZXIuCisgICAgICAgICogcGFnZS9TZXR0aW5ncy5oOgorICAgICAgICAgICAgLSByZW1vdmVk
IHNldERPTVRpbWVyQWxpZ25tZW50SW50ZXJ2YWwuCisKIDIwMTQtMDItMTIgIEpvc2VwaCBQZWNv
cmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBNb2Rl
cm5pemUgbWlzc2VkIGluc3BlY3RvciBmaWxlcwpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHJl
dmlzaW9uIDE2MzgyMCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCSh3b3JraW5n
IGNvcHkpCkBAIC0xMjM5LDcgKzEyMzksNiBAQCBfX1pON1dlYkNvcmU4U2V0dGluZ3MyNmRlZmF1
bHRNaW5ET01UaW1lCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MyNnNldFNpbXBsZUxpbmVMYXlvdXRF
bmFibGVkRWIKIF9fWk43V2ViQ29yZThTZXR0aW5nczI3c2V0SmF2YUVuYWJsZWRGb3JMb2NhbEZp
bGVzRWIKIF9fWk43V2ViQ29yZThTZXR0aW5nczI3c2V0TG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5
RWIKLV9fWk43V2ViQ29yZThTZXR0aW5nczI4c2V0RE9NVGltZXJBbGlnbm1lbnRJbnRlcnZhbEVk
CiBfX1pON1dlYkNvcmU4U2V0dGluZ3MyOXNldEF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkRWIK
IF9fWk43V2ViQ29yZThTZXR0aW5nczI5c2V0RGVmYXVsdE1pbkRPTVRpbWVySW50ZXJ2YWxFZAog
X19aTjdXZWJDb3JlOFNldHRpbmdzMzBzZXRTaG93VGlsZWRTY3JvbGxpbmdJbmRpY2F0b3JFYgpJ
bmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCShyZXZpc2lvbiAx
NjM4MjApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC02Myw2ICs2Myw3IEBACiAjaW5jbHVkZSAiTWVkaWFTZXNzaW9uTWFuYWdl
ci5oIgogI2luY2x1ZGUgIlBhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuLmgiCiAjaW5jbHVkZSAi
UGFnZUdyb3VwLmgiCisjaW5jbHVkZSAiUGFnZVRocm90dGxlci5oIgogI2luY2x1ZGUgIlByb2dy
ZXNzVHJhY2tlci5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVyQ29tcG9zaXRvci5oIgogI2luY2x1
ZGUgIlJlbmRlclZpZGVvLmgiCkBAIC00Mjg2LDcgKzQyODcsNyBAQCB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OnVwZGF0ZVBsYXlTdGF0ZSgpCiAgICAgICAgIGlmIChoYXNNZWRpYUNvbnRyb2xzKCkp
CiAgICAgICAgICAgICBtZWRpYUNvbnRyb2xzKCktPnBsYXliYWNrU3RhcnRlZCgpOwogICAgICAg
ICBpZiAoZG9jdW1lbnQoKS5wYWdlKCkpCi0gICAgICAgICAgICBtX2FjdGl2aXR5VG9rZW4gPSBk
b2N1bWVudCgpLnBhZ2UoKS0+Y3JlYXRlQWN0aXZpdHlUb2tlbigpOworICAgICAgICAgICAgbV9h
Y3Rpdml0eVRva2VuID0gZG9jdW1lbnQoKS5wYWdlKCktPnBhZ2VUaHJvdHRsZXIoKS5tZWRpYUFj
dGl2aXR5VG9rZW4oKTsKIAogICAgICAgICBzdGFydFBsYXliYWNrUHJvZ3Jlc3NUaW1lcigpOwog
ICAgICAgICBtX3BsYXlpbmcgPSB0cnVlOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkZXIuY3BwCShyZXZpc2lvbiAxNjM4MjApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NSw2ICs4NSw3IEBACiAjaW5jbHVkZSAi
UGFnZS5oIgogI2luY2x1ZGUgIlBhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuLmgiCiAjaW5jbHVk
ZSAiUGFnZUNhY2hlLmgiCisjaW5jbHVkZSAiUGFnZVRocm90dGxlci5oIgogI2luY2x1ZGUgIlBh
Z2VUcmFuc2l0aW9uRXZlbnQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCIKICNp
bmNsdWRlICJQbHVnaW5EYXRhLmgiCkBAIC0xMTQyLDcgKzExNDMsNyBAQCB2b2lkIEZyYW1lTG9h
ZGVyOjpjb21wbGV0ZWQoKQogdm9pZCBGcmFtZUxvYWRlcjo6c3RhcnRlZCgpCiB7CiAgICAgaWYg
KG1fZnJhbWUucGFnZSgpKQotICAgICAgICBtX2FjdGl2aXR5QXNzZXJ0aW9uID0gbV9mcmFtZS5w
YWdlKCktPmNyZWF0ZUFjdGl2aXR5VG9rZW4oKTsKKyAgICAgICAgbV9hY3Rpdml0eUFzc2VydGlv
biA9IG1fZnJhbWUucGFnZSgpLT5wYWdlVGhyb3R0bGVyKCkucGFnZUxvYWRBY3Rpdml0eVRva2Vu
KCk7CiAgICAgZm9yIChGcmFtZSogZnJhbWUgPSAmbV9mcmFtZTsgZnJhbWU7IGZyYW1lID0gZnJh
bWUtPnRyZWUoKS5wYXJlbnQoKSkKICAgICAgICAgZnJhbWUtPmxvYWRlcigpLm1faXNDb21wbGV0
ZSA9IGZhbHNlOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCShyZXZpc2lvbiAxNjM4MjApCisr
KyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzIsNiAr
MTcyLDcgQEAgUGFnZTo6UGFnZShQYWdlQ2xpZW50cyYgcGFnZUNsaWVudHMpCiAgICAgLCBtX3Zp
ZXdNb2RlKFZpZXdNb2RlV2luZG93ZWQpCiAjZW5kaWYgLy8gRU5BQkxFKFZJRVdfTU9ERV9DU1Nf
TUVESUEpCiAgICAgLCBtX21pbmltdW1UaW1lckludGVydmFsKFNldHRpbmdzOjpkZWZhdWx0TWlu
RE9NVGltZXJJbnRlcnZhbCgpKQorICAgICwgbV90aW1lclRocm90dGxpbmdFbmFibGVkKGZhbHNl
KQogICAgICwgbV90aW1lckFsaWdubWVudEludGVydmFsKFNldHRpbmdzOjpkZWZhdWx0RE9NVGlt
ZXJBbGlnbm1lbnRJbnRlcnZhbCgpKQogICAgICwgbV9pc0VkaXRhYmxlKGZhbHNlKQogICAgICwg
bV9pc1ByZXJlbmRlcihmYWxzZSkKQEAgLTE4NSw3ICsxODYsNyBAQCBQYWdlOjpQYWdlKFBhZ2VD
bGllbnRzJiBwYWdlQ2xpZW50cykKICNlbmRpZgogICAgICwgbV9hbHRlcm5hdGl2ZVRleHRDbGll
bnQocGFnZUNsaWVudHMuYWx0ZXJuYXRpdmVUZXh0Q2xpZW50KQogICAgICwgbV9zY3JpcHRlZEFu
aW1hdGlvbnNTdXNwZW5kZWQoZmFsc2UpCi0gICAgLCBtX3BhZ2VUaHJvdHRsZXIoc3RkOjptYWtl
X3VuaXF1ZTxQYWdlVGhyb3R0bGVyPigqdGhpcykpCisgICAgLCBtX3BhZ2VUaHJvdHRsZXIoKnRo
aXMsIFBhZ2VJbml0aWFsVmlld1N0YXRlKQogICAgICwgbV9jb25zb2xlKHN0ZDo6bWFrZV91bmlx
dWU8UGFnZUNvbnNvbGU+KCp0aGlzKSkKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKICAg
ICAsIG1faW5zcGVjdG9yRGVidWdnYWJsZShzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VEZWJ1Z2dhYmxl
PigqdGhpcykpCkBAIC04NDcsNyArODQ4LDEwIEBAIHZvaWQgUGFnZTo6cmVzdW1lU2NyaXB0ZWRB
bmltYXRpb25zKCkKIAogdm9pZCBQYWdlOjpzZXRJc1Zpc3VhbGx5SWRsZUludGVybmFsKGJvb2wg
aXNWaXN1YWxseUlkbGUpCiB7Ci0gICAgbV9wYWdlVGhyb3R0bGVyLT5zZXRJc1Zpc3VhbGx5SWRs
ZShpc1Zpc3VhbGx5SWRsZSk7CisgICAgZm9yIChGcmFtZSogZnJhbWUgPSAmbWFpbkZyYW1lKCk7
IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsKKyAgICAgICAg
aWYgKGZyYW1lLT5kb2N1bWVudCgpKQorICAgICAgICAgICAgZnJhbWUtPmRvY3VtZW50KCktPnNj
cmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlclNldFRocm90dGxlZChpc1Zpc3VhbGx5SWRsZSk7Cisg
ICAgfQogfQogCiB2b2lkIFBhZ2U6OnVzZXJTdHlsZVNoZWV0TG9jYXRpb25DaGFuZ2VkKCkKQEAg
LTEwNDAsMjMgKzEwNDQsMjUgQEAgZG91YmxlIFBhZ2U6Om1pbmltdW1UaW1lckludGVydmFsKCkg
Y29ucwogICAgIHJldHVybiBtX21pbmltdW1UaW1lckludGVydmFsOwogfQogCi12b2lkIFBhZ2U6
OnNldFRpbWVyQWxpZ25tZW50SW50ZXJ2YWwoZG91YmxlIGludGVydmFsKQordm9pZCBQYWdlOjpz
ZXRUaW1lclRocm90dGxpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCkKIHsKLSAgICBpZiAoaW50ZXJ2
YWwgPT0gbV90aW1lckFsaWdubWVudEludGVydmFsKQorI2lmIEVOQUJMRShISURERU5fUEFHRV9E
T01fVElNRVJfVEhST1RUTElORykKKyAgICBpZiAoIW1fc2V0dGluZ3MtPmhpZGRlblBhZ2VET01U
aW1lclRocm90dGxpbmdFbmFibGVkKCkpCisgICAgICAgIGVuYWJsZWQgPSBmYWxzZTsKKyNlbmRp
ZgorCisgICAgaWYgKGVuYWJsZWQgPT0gbV90aW1lclRocm90dGxpbmdFbmFibGVkKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBtX3RpbWVyQWxpZ25tZW50SW50ZXJ2YWwgPSBpbnRlcnZhbDsKKyAg
ICBtX3RpbWVyVGhyb3R0bGluZ0VuYWJsZWQgPSBlbmFibGVkOworICAgIG1fdGltZXJBbGlnbm1l
bnRJbnRlcnZhbCA9IGVuYWJsZWQgPyBTZXR0aW5nczo6aGlkZGVuUGFnZURPTVRpbWVyQWxpZ25t
ZW50SW50ZXJ2YWwoKSA6IFNldHRpbmdzOjpkZWZhdWx0RE9NVGltZXJBbGlnbm1lbnRJbnRlcnZh
bCgpOworICAgIAogICAgIGZvciAoRnJhbWUqIGZyYW1lID0gJm1haW5GcmFtZSgpOyBmcmFtZTsg
ZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dFdpdGhXcmFwKGZhbHNlKSkgewogICAg
ICAgICBpZiAoZnJhbWUtPmRvY3VtZW50KCkpCiAgICAgICAgICAgICBmcmFtZS0+ZG9jdW1lbnQo
KS0+ZGlkQ2hhbmdlVGltZXJBbGlnbm1lbnRJbnRlcnZhbCgpOwogICAgIH0KIH0KIAotZG91Ymxl
IFBhZ2U6OnRpbWVyQWxpZ25tZW50SW50ZXJ2YWwoKSBjb25zdAotewotICAgIHJldHVybiBtX3Rp
bWVyQWxpZ25tZW50SW50ZXJ2YWw7Ci19Ci0KIHZvaWQgUGFnZTo6ZG5zUHJlZmV0Y2hpbmdTdGF0
ZUNoYW5nZWQoKQogewogICAgIGZvciAoRnJhbWUqIGZyYW1lID0gJm1haW5GcmFtZSgpOyBmcmFt
ZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKQpAQCAtMTEyMywyMiArMTEy
OSw2IEBAIHZvaWQgUGFnZTo6Y2hlY2tTdWJmcmFtZUNvdW50Q29uc2lzdGVuY3kKIH0KICNlbmRp
ZgogCi12b2lkIFBhZ2U6OnRocm90dGxlVGltZXJzKCkKLXsKLSNpZiBFTkFCTEUoSElEREVOX1BB
R0VfRE9NX1RJTUVSX1RIUk9UVExJTkcpCi0gICAgaWYgKG1fc2V0dGluZ3MtPmhpZGRlblBhZ2VE
T01UaW1lclRocm90dGxpbmdFbmFibGVkKCkpCi0gICAgICAgIHNldFRpbWVyQWxpZ25tZW50SW50
ZXJ2YWwoU2V0dGluZ3M6OmhpZGRlblBhZ2VET01UaW1lckFsaWdubWVudEludGVydmFsKCkpOwot
I2VuZGlmCi19Ci0KLXZvaWQgUGFnZTo6dW50aHJvdHRsZVRpbWVycygpCi17Ci0jaWYgRU5BQkxF
KEhJRERFTl9QQUdFX0RPTV9USU1FUl9USFJPVFRMSU5HKQotICAgIGlmIChtX3NldHRpbmdzLT5o
aWRkZW5QYWdlRE9NVGltZXJUaHJvdHRsaW5nRW5hYmxlZCgpKQotICAgICAgICBzZXRUaW1lckFs
aWdubWVudEludGVydmFsKFNldHRpbmdzOjpkZWZhdWx0RE9NVGltZXJBbGlnbm1lbnRJbnRlcnZh
bCgpKTsKLSNlbmRpZgotfQotCiB2b2lkIFBhZ2U6OnJlc3VtZUFuaW1hdGluZ0ltYWdlcygpCiB7
CiAgICAgLy8gRHJhd2luZyBtb2RlbHMgd2hpY2ggY2FjaGUgcGFpbnRlZCBjb250ZW50IHdoaWxl
IG91dC1vZi13aW5kb3cgKFdlYktpdDIncyBjb21wb3NpdGVkIGRyYXdpbmcgYXJlYXMsIGV0Yy4p
CkBAIC0xMTU2LDYgKzExNDYsNyBAQCB2b2lkIFBhZ2U6OnNldFZpZXdTdGF0ZShWaWV3U3RhdGU6
OkZsYWdzCiAKICAgICBtX3ZpZXdTdGF0ZSA9IHZpZXdTdGF0ZTsKICAgICBtX2ZvY3VzQ29udHJv
bGxlci0+c2V0Vmlld1N0YXRlKHZpZXdTdGF0ZSk7CisgICAgbV9wYWdlVGhyb3R0bGVyLnNldFZp
ZXdTdGF0ZSh2aWV3U3RhdGUpOwogCiAgICAgaWYgKGNoYW5nZWQgJiBWaWV3U3RhdGU6OklzVmlz
aWJsZSkKICAgICAgICAgc2V0SXNWaXNpYmxlSW50ZXJuYWwodmlld1N0YXRlICYgVmlld1N0YXRl
OjpJc1Zpc2libGUpOwpAQCAtMTE4OCw4ICsxMTc5LDYgQEAgdm9pZCBQYWdlOjpzZXRJc1Zpc2li
bGVJbnRlcm5hbChib29sIGlzVgogICAgICAgICBpZiAoRnJhbWVWaWV3KiB2aWV3ID0gbWFpbkZy
YW1lKCkudmlldygpKQogICAgICAgICAgICAgdmlldy0+c2hvdygpOwogCi0gICAgICAgIHVudGhy
b3R0bGVUaW1lcnMoKTsKLQogI2lmIEVOQUJMRShQQUdFX1ZJU0lCSUxJVFlfQVBJKQogICAgICAg
ICBpZiAobV9zZXR0aW5ncy0+aGlkZGVuUGFnZUNTU0FuaW1hdGlvblN1c3BlbnNpb25FbmFibGVk
KCkpCiAgICAgICAgICAgICBtYWluRnJhbWUoKS5hbmltYXRpb24oKS5yZXN1bWVBbmltYXRpb25z
KCk7CkBAIC0xMjA4LDkgKzExOTcsNiBAQCB2b2lkIFBhZ2U6OnNldElzVmlzaWJsZUludGVybmFs
KGJvb2wgaXNWCiAjZW5kaWYKIAogICAgIGlmICghaXNWaXNpYmxlKSB7Ci0gICAgICAgIGlmICht
X3BhZ2VUaHJvdHRsZXItPnNob3VsZFRocm90dGxlVGltZXJzKCkpCi0gICAgICAgICAgICB0aHJv
dHRsZVRpbWVycygpOwotCiAjaWYgRU5BQkxFKFBBR0VfVklTSUJJTElUWV9BUEkpCiAgICAgICAg
IGlmIChtX3NldHRpbmdzLT5oaWRkZW5QYWdlQ1NTQW5pbWF0aW9uU3VzcGVuc2lvbkVuYWJsZWQo
KSkKICAgICAgICAgICAgIG1haW5GcmFtZSgpLmFuaW1hdGlvbigpLnN1c3BlbmRBbmltYXRpb25z
KCk7CkBAIC0xNDc3LDI0ICsxNDYzLDYgQEAgdm9pZCBQYWdlOjpyZXNldFNlZW5NZWRpYUVuZ2lu
ZXMoKQogICAgIG1fc2Vlbk1lZGlhRW5naW5lcy5jbGVhcigpOwogfQogCi1zdGQ6OnVuaXF1ZV9w
dHI8UGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4+IFBhZ2U6OmNyZWF0ZUFjdGl2aXR5VG9rZW4o
KQotewotICAgIHJldHVybiBtX3BhZ2VUaHJvdHRsZXItPmNyZWF0ZUFjdGl2aXR5VG9rZW4oKTsK
LX0KLQotI2lmIEVOQUJMRShISURERU5fUEFHRV9ET01fVElNRVJfVEhST1RUTElORykKLXZvaWQg
UGFnZTo6aGlkZGVuUGFnZURPTVRpbWVyVGhyb3R0bGluZ1N0YXRlQ2hhbmdlZCgpCi17Ci0gICAg
aWYgKG1fc2V0dGluZ3MtPmhpZGRlblBhZ2VET01UaW1lclRocm90dGxpbmdFbmFibGVkKCkpIHsK
LSNpZiBFTkFCTEUoUEFHRV9WSVNJQklMSVRZX0FQSSkKLSAgICAgICAgaWYgKG1fcGFnZVRocm90
dGxlci0+c2hvdWxkVGhyb3R0bGVUaW1lcnMoKSkKLSAgICAgICAgICAgIHNldFRpbWVyQWxpZ25t
ZW50SW50ZXJ2YWwoU2V0dGluZ3M6OmhpZGRlblBhZ2VET01UaW1lckFsaWdubWVudEludGVydmFs
KCkpOwotI2VuZGlmCi0gICAgfSBlbHNlCi0gICAgICAgIHNldFRpbWVyQWxpZ25tZW50SW50ZXJ2
YWwoU2V0dGluZ3M6OmRlZmF1bHRET01UaW1lckFsaWdubWVudEludGVydmFsKCkpOwotfQotI2Vu
ZGlmCi0KICNpZiAoRU5BQkxFX1BBR0VfVklTSUJJTElUWV9BUEkpCiB2b2lkIFBhZ2U6OmhpZGRl
blBhZ2VDU1NBbmltYXRpb25TdXNwZW5zaW9uU3RhdGVDaGFuZ2VkKCkKIHsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZS5oCShyZXZpc2lvbiAxNjM4MjApCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAko
d29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgIkZyYW1lTG9hZGVyVHlw
ZXMuaCIKICNpbmNsdWRlICJMYXlvdXRNaWxlc3RvbmVzLmgiCiAjaW5jbHVkZSAiTGF5b3V0UmVj
dC5oIgorI2luY2x1ZGUgIlBhZ2VUaHJvdHRsZXIuaCIKICNpbmNsdWRlICJQYWdlVmlzaWJpbGl0
eVN0YXRlLmgiCiAjaW5jbHVkZSAiUGFnaW5hdGlvbi5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU2Ny
ZWVuLmgiCkBAIC0zOTAsMTQgKzM5MSwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzYXdNZWRpYUVu
Z2luZShjb25zdCBTdHJpbmcmIGVuZ2luZU5hbWUpOwogICAgIHZvaWQgcmVzZXRTZWVuTWVkaWFF
bmdpbmVzKCk7CiAKLSAgICBQYWdlVGhyb3R0bGVyJiBwYWdlVGhyb3R0bGVyKCkgeyByZXR1cm4g
Km1fcGFnZVRocm90dGxlcjsgfQotICAgIHN0ZDo6dW5pcXVlX3B0cjxQYWdlQWN0aXZpdHlBc3Nl
cnRpb25Ub2tlbj4gY3JlYXRlQWN0aXZpdHlUb2tlbigpOworICAgIFBhZ2VUaHJvdHRsZXImIHBh
Z2VUaHJvdHRsZXIoKSB7IHJldHVybiBtX3BhZ2VUaHJvdHRsZXI7IH0KIAogICAgIFBhZ2VDb25z
b2xlJiBjb25zb2xlKCkgeyByZXR1cm4gKm1fY29uc29sZTsgfQogCi0jaWYgRU5BQkxFKEhJRERF
Tl9QQUdFX0RPTV9USU1FUl9USFJPVFRMSU5HKQotICAgIHZvaWQgaGlkZGVuUGFnZURPTVRpbWVy
VGhyb3R0bGluZ1N0YXRlQ2hhbmdlZCgpOwotI2VuZGlmCiAjaWYgRU5BQkxFKFBBR0VfVklTSUJJ
TElUWV9BUEkpCiAgICAgdm9pZCBoaWRkZW5QYWdlQ1NTQW5pbWF0aW9uU3VzcGVuc2lvblN0YXRl
Q2hhbmdlZCgpOwogI2VuZGlmCkBAIC00MzgsMTMgKzQzNSwxMSBAQCBwcml2YXRlOgogICAgIHZv
aWQgc2V0TWluaW11bVRpbWVySW50ZXJ2YWwoZG91YmxlKTsKICAgICBkb3VibGUgbWluaW11bVRp
bWVySW50ZXJ2YWwoKSBjb25zdDsKIAotICAgIHZvaWQgc2V0VGltZXJBbGlnbm1lbnRJbnRlcnZh
bChkb3VibGUpOwotICAgIGRvdWJsZSB0aW1lckFsaWdubWVudEludGVydmFsKCkgY29uc3Q7Cisg
ICAgZG91YmxlIHRpbWVyQWxpZ25tZW50SW50ZXJ2YWwoKSBjb25zdCB7IHJldHVybiBtX3RpbWVy
QWxpZ25tZW50SW50ZXJ2YWw7IH0KIAogICAgIFZlY3RvcjxSZWY8UGx1Z2luVmlld0Jhc2U+PiBw
bHVnaW5WaWV3cygpOwogCi0gICAgdm9pZCB0aHJvdHRsZVRpbWVycygpOwotICAgIHZvaWQgdW50
aHJvdHRsZVRpbWVycygpOworICAgIHZvaWQgc2V0VGltZXJUaHJvdHRsaW5nRW5hYmxlZChib29s
KTsKIAogICAgIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxDaHJvbWU+IG1fY2hyb21lOwogICAgIGNv
bnN0IHN0ZDo6dW5pcXVlX3B0cjxEcmFnQ2FyZXRDb250cm9sbGVyPiBtX2RyYWdDYXJldENvbnRy
b2xsZXI7CkBAIC01MjIsNiArNTE3LDcgQEAgcHJpdmF0ZToKIAogICAgIGRvdWJsZSBtX21pbmlt
dW1UaW1lckludGVydmFsOwogCisgICAgYm9vbCBtX3RpbWVyVGhyb3R0bGluZ0VuYWJsZWQ7CiAg
ICAgZG91YmxlIG1fdGltZXJBbGlnbm1lbnRJbnRlcnZhbDsKIAogICAgIGJvb2wgbV9pc0VkaXRh
YmxlOwpAQCAtNTQ0LDcgKzU0MCw3IEBAIHByaXZhdGU6CiAgICAgQWx0ZXJuYXRpdmVUZXh0Q2xp
ZW50KiBtX2FsdGVybmF0aXZlVGV4dENsaWVudDsKIAogICAgIGJvb2wgbV9zY3JpcHRlZEFuaW1h
dGlvbnNTdXNwZW5kZWQ7Ci0gICAgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPFBhZ2VUaHJvdHRsZXI+
IG1fcGFnZVRocm90dGxlcjsKKyAgICBQYWdlVGhyb3R0bGVyIG1fcGFnZVRocm90dGxlcjsKICAg
ICBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8UGFnZUNvbnNvbGU+IG1fY29uc29sZTsKIAogI2lmIEVO
QUJMRShSRU1PVEVfSU5TUEVDVE9SKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlVGhy
b3R0bGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VUaHJvdHRs
ZXIuY3BwCShyZXZpc2lvbiAxNjM4MjApCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VUaHJv
dHRsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNywxOSArMzcsMjIgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBzdGF0aWMgY29uc3QgZG91YmxlIGtUaHJvdHRsZUh5c3RlcmVzaXNTZWNvbmRz
ID0gMi4wOwogCi1QYWdlVGhyb3R0bGVyOjpQYWdlVGhyb3R0bGVyKFBhZ2UmIHBhZ2UpCitQYWdl
VGhyb3R0bGVyOjpQYWdlVGhyb3R0bGVyKFBhZ2UmIHBhZ2UsIFZpZXdTdGF0ZTo6RmxhZ3Mgdmll
d1N0YXRlKQogICAgIDogbV9wYWdlKHBhZ2UpCisgICAgLCBtX3ZpZXdTdGF0ZSh2aWV3U3RhdGUp
CiAgICAgLCBtX3Rocm90dGxlU3RhdGUoUGFnZU5vdFRocm90dGxlZFN0YXRlKQogICAgICwgbV90
aHJvdHRsZUh5c3RlcmVzaXNUaW1lcih0aGlzLCAmUGFnZVRocm90dGxlcjo6dGhyb3R0bGVIeXN0
ZXJlc2lzVGltZXJGaXJlZCkKICAgICAsIG1fdmlzdWFsbHlOb25JZGxlKCJQYWdlIGlzIG5vdCB2
aXN1YWxseSBpZGxlLiIpCiAgICAgLCBtX3BhZ2VBY3Rpdml0eSgiUGFnZSBpcyBhY3RpdmUuIikK
IHsKICAgICBtX3BhZ2VBY3Rpdml0eS5iZWdpbkFjdGl2aXR5KCk7CisKKyAgICBzZXRJc1Zpc3Vh
bGx5SWRsZSh2aWV3U3RhdGUgJiBWaWV3U3RhdGU6OklzVmlzdWFsbHlJZGxlKTsKIH0KIAogUGFn
ZVRocm90dGxlcjo6flBhZ2VUaHJvdHRsZXIoKQogewotICAgIHNldElzVmlzdWFsbHlJZGxlKGZh
bHNlKTsKKyAgICBtX3BhZ2Uuc2V0VGltZXJUaHJvdHRsaW5nRW5hYmxlZChmYWxzZSk7CiAKICAg
ICBmb3IgKGF1dG8gaXQgPSBtX2FjdGl2aXR5VG9rZW5zLmJlZ2luKCksIGVuZCA9IG1fYWN0aXZp
dHlUb2tlbnMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkKICAgICAgICAgKCppdCktPmludmFsaWRh
dGUoKTsKQEAgLTU4LDcgKzYxLDE3IEBAIFBhZ2VUaHJvdHRsZXI6On5QYWdlVGhyb3R0bGVyKCkK
ICAgICAgICAgbV9wYWdlQWN0aXZpdHkuZW5kQWN0aXZpdHkoKTsKIH0KIAotc3RkOjp1bmlxdWVf
cHRyPFBhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuPiBQYWdlVGhyb3R0bGVyOjpjcmVhdGVBY3Rp
dml0eVRva2VuKCkKK3ZvaWQgUGFnZVRocm90dGxlcjo6aGlkZGVuUGFnZURPTVRpbWVyVGhyb3R0
bGluZ1N0YXRlQ2hhbmdlZCgpCit7CisgICAgbV9wYWdlLnNldFRpbWVyVGhyb3R0bGluZ0VuYWJs
ZWQobV90aHJvdHRsZVN0YXRlICE9IFBhZ2VOb3RUaHJvdHRsZWRTdGF0ZSk7Cit9CisKK3N0ZDo6
dW5pcXVlX3B0cjxQYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbj4gUGFnZVRocm90dGxlcjo6bWVk
aWFBY3Rpdml0eVRva2VuKCkKK3sKKyAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQYWdlQWN0
aXZpdHlBc3NlcnRpb25Ub2tlbj4oKnRoaXMpOworfQorCitzdGQ6OnVuaXF1ZV9wdHI8UGFnZUFj
dGl2aXR5QXNzZXJ0aW9uVG9rZW4+IFBhZ2VUaHJvdHRsZXI6OnBhZ2VMb2FkQWN0aXZpdHlUb2tl
bigpCiB7CiAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGFnZUFjdGl2aXR5QXNzZXJ0aW9u
VG9rZW4+KCp0aGlzKTsKIH0KQEAgLTY5LDEyICs4Miw3IEBAIHZvaWQgUGFnZVRocm90dGxlcjo6
dGhyb3R0bGVQYWdlKCkKIAogICAgIG1fcGFnZUFjdGl2aXR5LmVuZEFjdGl2aXR5KCk7CiAKLSAg
ICBmb3IgKEZyYW1lKiBmcmFtZSA9ICZtX3BhZ2UubWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9
IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsKLSAgICAgICAgaWYgKGZyYW1lLT5kb2N1
bWVudCgpKQotICAgICAgICAgICAgZnJhbWUtPmRvY3VtZW50KCktPnNjcmlwdGVkQW5pbWF0aW9u
Q29udHJvbGxlclNldFRocm90dGxlZCh0cnVlKTsKLSAgICB9Ci0KLSAgICBtX3BhZ2UudGhyb3R0
bGVUaW1lcnMoKTsKKyAgICBtX3BhZ2Uuc2V0VGltZXJUaHJvdHRsaW5nRW5hYmxlZCh0cnVlKTsK
IH0KIAogdm9pZCBQYWdlVGhyb3R0bGVyOjp1bnRocm90dGxlUGFnZSgpCkBAIC04OCwxMiArOTYs
MjYgQEAgdm9pZCBQYWdlVGhyb3R0bGVyOjp1bnRocm90dGxlUGFnZSgpCiAgICAgaWYgKG9sZFN0
YXRlID09IFBhZ2VUaHJvdHRsZWRTdGF0ZSkKICAgICAgICAgbV9wYWdlQWN0aXZpdHkuYmVnaW5B
Y3Rpdml0eSgpOwogICAgIAotICAgIGZvciAoRnJhbWUqIGZyYW1lID0gJm1fcGFnZS5tYWluRnJh
bWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkgewotICAg
ICAgICBpZiAoZnJhbWUtPmRvY3VtZW50KCkpCi0gICAgICAgICAgICBmcmFtZS0+ZG9jdW1lbnQo
KS0+c2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyU2V0VGhyb3R0bGVkKGZhbHNlKTsKLSAgICB9
CisgICAgbV9wYWdlLnNldFRpbWVyVGhyb3R0bGluZ0VuYWJsZWQoZmFsc2UpOworfQorCit2b2lk
IFBhZ2VUaHJvdHRsZXI6OnNldFZpZXdTdGF0ZShWaWV3U3RhdGU6OkZsYWdzIHZpZXdTdGF0ZSkK
K3sKKyAgICBWaWV3U3RhdGU6OkZsYWdzIGNoYW5nZWQgPSBtX3ZpZXdTdGF0ZSBeIHZpZXdTdGF0
ZTsKKyAgICBtX3ZpZXdTdGF0ZSA9IHZpZXdTdGF0ZTsKKworICAgIGlmIChjaGFuZ2VkICYgVmll
d1N0YXRlOjpJc1Zpc2libGUpCisgICAgICAgIHNldElzVmlzaWJsZSh2aWV3U3RhdGUgJiBWaWV3
U3RhdGU6OklzVmlzaWJsZSk7CisgICAgaWYgKGNoYW5nZWQgJiBWaWV3U3RhdGU6OklzVmlzdWFs
bHlJZGxlKQorICAgICAgICBzZXRJc1Zpc3VhbGx5SWRsZSh2aWV3U3RhdGUgJiBWaWV3U3RhdGU6
OklzVmlzdWFsbHlJZGxlKTsKK30KIAotICAgIG1fcGFnZS51bnRocm90dGxlVGltZXJzKCk7Cit2
b2lkIFBhZ2VUaHJvdHRsZXI6OnNldElzVmlzaWJsZShib29sIGlzVmlzaWJsZSkKK3sKKyAgICBp
ZiAoaXNWaXNpYmxlKQorICAgICAgICBtX3BhZ2Uuc2V0VGltZXJUaHJvdHRsaW5nRW5hYmxlZChm
YWxzZSk7CisgICAgZWxzZSBpZiAobV90aHJvdHRsZVN0YXRlICE9IFBhZ2VOb3RUaHJvdHRsZWRT
dGF0ZSkKKyAgICAgICAgbV9wYWdlLnNldFRpbWVyVGhyb3R0bGluZ0VuYWJsZWQodHJ1ZSk7CiB9
CiAKIHZvaWQgUGFnZVRocm90dGxlcjo6c2V0SXNWaXN1YWxseUlkbGUoYm9vbCBpc1Zpc3VhbGx5
SWRsZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVRocm90dGxlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVRocm90dGxlci5oCShyZXZpc2lvbiAxNjM4
MjApCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VUaHJvdHRsZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIlRpbWVyLmgiCiAKICNpbmNsdWRlICJVc2Vy
QWN0aXZpdHkuaCIKKyNpbmNsdWRlICJWaWV3U3RhdGUuaCIKICNpbmNsdWRlIDx3dGYvSGFzaFNl
dC5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5o
PgpAQCAtNDAsMTggKzQxLDE3IEBAIGNsYXNzIFBhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuOwog
CiBjbGFzcyBQYWdlVGhyb3R0bGVyIHsKIHB1YmxpYzoKLSAgICBQYWdlVGhyb3R0bGVyKFBhZ2Um
KTsKKyAgICBQYWdlVGhyb3R0bGVyKFBhZ2UmLCBWaWV3U3RhdGU6OkZsYWdzKTsKICAgICB+UGFn
ZVRocm90dGxlcigpOwotCi0gICAgc3RkOjp1bmlxdWVfcHRyPFBhZ2VBY3Rpdml0eUFzc2VydGlv
blRva2VuPiBjcmVhdGVBY3Rpdml0eVRva2VuKCk7Ci0KLSAgICBib29sIHNob3VsZFRocm90dGxl
QW5pbWF0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fdGhyb3R0bGVTdGF0ZSAhPSBQYWdlTm90VGhy
b3R0bGVkU3RhdGU7IH0KLSAgICBib29sIHNob3VsZFRocm90dGxlVGltZXJzKCkgY29uc3QgeyBy
ZXR1cm4gbV90aHJvdHRsZVN0YXRlICE9IFBhZ2VOb3RUaHJvdHRsZWRTdGF0ZTsgfQotCi0gICAg
dm9pZCBzZXRJc1Zpc3VhbGx5SWRsZShib29sKTsKKyAKKyAgICB2b2lkIHNldFZpZXdTdGF0ZShW
aWV3U3RhdGU6OkZsYWdzKTsKIAogICAgIHZvaWQgZGlkUmVjZWl2ZVVzZXJJbnB1dCgpIHsgcmVw
b3J0SW50ZXJlc3RpbmdFdmVudCgpOyB9CiAgICAgdm9pZCBwbHVnaW5EaWRFdmFsdWF0ZSgpIHsg
cmVwb3J0SW50ZXJlc3RpbmdFdmVudCgpOyB9CisgICAgc3RkOjp1bmlxdWVfcHRyPFBhZ2VBY3Rp
dml0eUFzc2VydGlvblRva2VuPiBtZWRpYUFjdGl2aXR5VG9rZW4oKTsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8UGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4+IHBhZ2VMb2FkQWN0aXZpdHlUb2tlbigp
OworCisgICAgdm9pZCBoaWRkZW5QYWdlRE9NVGltZXJUaHJvdHRsaW5nU3RhdGVDaGFuZ2VkKCk7
CiAKIHByaXZhdGU6CiAgICAgZW51bSBQYWdlVGhyb3R0bGVTdGF0ZSB7CkBAIC03Myw3ICs3Mywx
MSBAQCBwcml2YXRlOgogICAgIHZvaWQgdGhyb3R0bGVQYWdlKCk7CiAgICAgdm9pZCB1bnRocm90
dGxlUGFnZSgpOwogCisgICAgdm9pZCBzZXRJc1Zpc3VhbGx5SWRsZShib29sKTsKKyAgICB2b2lk
IHNldElzVmlzaWJsZShib29sKTsKKwogICAgIFBhZ2UmIG1fcGFnZTsKKyAgICBWaWV3U3RhdGU6
OkZsYWdzIG1fdmlld1N0YXRlOwogICAgIFBhZ2VUaHJvdHRsZVN0YXRlIG1fdGhyb3R0bGVTdGF0
ZTsKICAgICBUaW1lcjxQYWdlVGhyb3R0bGVyPiBtX3Rocm90dGxlSHlzdGVyZXNpc1RpbWVyOwog
ICAgIEhhc2hTZXQ8UGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4qPiBtX2FjdGl2aXR5VG9rZW5z
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAJKHJldmlzaW9uIDE2MzgyMCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OTksMTEg
KzQ5OSw2IEBAIGRvdWJsZSBTZXR0aW5nczo6ZGVmYXVsdERPTVRpbWVyQWxpZ25tZW4KICAgICBy
ZXR1cm4gZ0RlZmF1bHRET01UaW1lckFsaWdubWVudEludGVydmFsOwogfQogCi12b2lkIFNldHRp
bmdzOjpzZXRET01UaW1lckFsaWdubWVudEludGVydmFsKGRvdWJsZSBpbnRlcnZhbCkKLXsKLSAg
ICBtX3BhZ2UtPnNldFRpbWVyQWxpZ25tZW50SW50ZXJ2YWwoaW50ZXJ2YWwpOwotfQotCiBkb3Vi
bGUgU2V0dGluZ3M6OmRvbVRpbWVyQWxpZ25tZW50SW50ZXJ2YWwoKSBjb25zdAogewogICAgIHJl
dHVybiBtX3BhZ2UtPnRpbWVyQWxpZ25tZW50SW50ZXJ2YWwoKTsKQEAgLTY5Myw3ICs2ODgsNyBA
QCB2b2lkIFNldHRpbmdzOjpzZXRIaWRkZW5QYWdlRE9NVGltZXJUaHJvCiAgICAgaWYgKG1faGlk
ZGVuUGFnZURPTVRpbWVyVGhyb3R0bGluZ0VuYWJsZWQgPT0gZmxhZykKICAgICAgICAgcmV0dXJu
OwogICAgIG1faGlkZGVuUGFnZURPTVRpbWVyVGhyb3R0bGluZ0VuYWJsZWQgPSBmbGFnOwotICAg
IG1fcGFnZS0+aGlkZGVuUGFnZURPTVRpbWVyVGhyb3R0bGluZ1N0YXRlQ2hhbmdlZCgpOworICAg
IG1fcGFnZS0+cGFnZVRocm90dGxlcigpLmhpZGRlblBhZ2VET01UaW1lclRocm90dGxpbmdTdGF0
ZUNoYW5nZWQoKTsKIH0KICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRp
bmdzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCShyZXZp
c2lvbiAxNjM4MjApCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTE2OSw3ICsxNjksNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgc2V0RGVm
YXVsdERPTVRpbWVyQWxpZ25tZW50SW50ZXJ2YWwoZG91YmxlKTsKICAgICBzdGF0aWMgZG91Ymxl
IGRlZmF1bHRET01UaW1lckFsaWdubWVudEludGVydmFsKCk7CiAKLSAgICB2b2lkIHNldERPTVRp
bWVyQWxpZ25tZW50SW50ZXJ2YWwoZG91YmxlKTsKICAgICBkb3VibGUgZG9tVGltZXJBbGlnbm1l
bnRJbnRlcnZhbCgpIGNvbnN0OwogCiAgICAgdm9pZCBzZXRMYXlvdXRJbnRlcnZhbChzdGQ6OmNo
cm9ubzo6bWlsbGlzZWNvbmRzKTsK
</data>
<flag name="review"
          id="248069"
          type_id="1"
          status="+"
          setter="benjamin"
    />
          </attachment>
      

    </bug>

</bugzilla>