<?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>20469</bug_id>
          
          <creation_ts>2008-08-20 16:54:36 -0700</creation_ts>
          <short_desc>Close leak of PausedTimeouts, and clean up ownership</short_desc>
          <delta_ts>2008-08-28 04:42:55 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</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="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ap</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>88968</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-08-20 16:54:36 -0700</bug_when>
    <thetext>Close leak of PausedTimeouts, and clean up ownership

See attached patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>88969</commentid>
    <comment_count>1</comment_count>
      <attachid>22907</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-08-20 16:58:53 -0700</bug_when>
    <thetext>Created attachment 22907
First attempt at PausedTimeouts cleanup

 WebCore/ChangeLog                        |   31 ++++++++++++++++++++++++++++++
 WebCore/bindings/js/JSDOMWindowBase.cpp  |   21 ++++++++++---------
 WebCore/bindings/js/JSDOMWindowBase.h    |    5 ++-
 WebCore/bindings/js/ScriptController.cpp |   11 ++++++++++
 WebCore/bindings/js/ScriptController.h   |    3 ++
 WebCore/history/CachedPage.cpp           |    4 +-
 WebCore/page/Chrome.cpp                  |   24 ++++++++--------------
 WebCore/page/JavaScriptDebugServer.cpp   |   14 +++++++++---
 8 files changed, 80 insertions(+), 33 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>88970</commentid>
    <comment_count>2</comment_count>
      <attachid>22908</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-08-20 17:01:25 -0700</bug_when>
    <thetext>Created attachment 22908
First attempt at PausedTimeouts cleanup

 WebCore/ChangeLog                        |   34 ++++++++++++++++++++++++++++++
 WebCore/bindings/js/JSDOMWindowBase.cpp  |   21 +++++++++--------
 WebCore/bindings/js/JSDOMWindowBase.h    |    5 ++-
 WebCore/bindings/js/ScriptController.cpp |   11 +++++++++
 WebCore/bindings/js/ScriptController.h   |    3 ++
 WebCore/history/CachedPage.cpp           |    4 +-
 WebCore/page/Chrome.cpp                  |   24 ++++++++-------------
 WebCore/page/JavaScriptDebugServer.cpp   |   14 ++++++++---
 8 files changed, 83 insertions(+), 33 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>89130</commentid>
    <comment_count>3</comment_count>
      <attachid>22908</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-08-22 10:47:16 -0700</bug_when>
    <thetext>Comment on attachment 22908
First attempt at PausedTimeouts cleanup

Good change!

+    void resumeTimeouts(OwnPtr&lt;PausedTimeouts&gt;&amp;);

You&apos;re declaring this in ScriptController.h, but I don&apos;t see an implemention in ScriptController.cpp.

-    size_t count = m_deferredFrames.size();
-    for (size_t i = 0; i &lt; count; ++i)
+    for (size_t i = 0; i &lt; m_deferredFrames.size(); ++i)

Why this change? It makes the loop potentially slower by putting the calls to size() inside the loop instead of outside. Is there a benefit to the change?

+        OwnPtr&lt;PausedTimeouts&gt; timeouts = m_pausedTimeouts[i].second;

+            OwnPtr&lt;PausedTimeouts&gt; timeouts(m_pausedTimeouts.take(frame));

Why did you use assignment syntax in the first case, but not the second. Consistent would be better.

I&apos;m going to say review- because of the resumeTimeouts issue. I think the patch won&apos;t build!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>89131</commentid>
    <comment_count>4</comment_count>
      <attachid>22908</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-08-22 10:47:16 -0700</bug_when>
    <thetext>Comment on attachment 22908
First attempt at PausedTimeouts cleanup

Good change!

+    void resumeTimeouts(OwnPtr&lt;PausedTimeouts&gt;&amp;);

You&apos;re declaring this in ScriptController.h, but I don&apos;t see an implemention in ScriptController.cpp.

-    size_t count = m_deferredFrames.size();
-    for (size_t i = 0; i &lt; count; ++i)
+    for (size_t i = 0; i &lt; m_deferredFrames.size(); ++i)

Why this change? It makes the loop potentially slower by putting the calls to size() inside the loop instead of outside. Is there a benefit to the change?

+        OwnPtr&lt;PausedTimeouts&gt; timeouts = m_pausedTimeouts[i].second;

+            OwnPtr&lt;PausedTimeouts&gt; timeouts(m_pausedTimeouts.take(frame));

Why did you use assignment syntax in the first case, but not the second. Consistent would be better.

I&apos;m going to say review- because of the resumeTimeouts issue. I think the patch won&apos;t build!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>89623</commentid>
    <comment_count>5</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-08-28 04:18:14 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 22908 [edit])
&gt; Good change!
&gt; 
&gt; +    void resumeTimeouts(OwnPtr&lt;PausedTimeouts&gt;&amp;);
&gt; 
&gt; You&apos;re declaring this in ScriptController.h, but I don&apos;t see an implemention in
&gt; ScriptController.cpp.

Yeah, it was missing.  Oops!

&gt; -    size_t count = m_deferredFrames.size();
&gt; -    for (size_t i = 0; i &lt; count; ++i)
&gt; +    for (size_t i = 0; i &lt; m_deferredFrames.size(); ++i)
&gt; 
&gt; Why this change? It makes the loop potentially slower by putting the calls to
&gt; size() inside the loop instead of outside. Is there a benefit to the change?

It made the code smaller, and I know that Vector is a template, and thus all methods must be inlined, so the count is just a member access thus there is no function call overhead.  Perhaps that&apos;s cheating?  I can change it back if you feel strongly.

&gt; +        OwnPtr&lt;PausedTimeouts&gt; timeouts = m_pausedTimeouts[i].second;
&gt; 
&gt; +            OwnPtr&lt;PausedTimeouts&gt; timeouts(m_pausedTimeouts.take(frame));
&gt; 
&gt; Why did you use assignment syntax in the first case, but not the second.
&gt; Consistent would be better.

Fixed.

&gt; I&apos;m going to say review- because of the resumeTimeouts issue. I think the patch
&gt; won&apos;t build!

Yup.  Builds and runs fine on Mac, but wouldn&apos;t have on Windows!  Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>89625</commentid>
    <comment_count>6</comment_count>
      <attachid>23052</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-08-28 04:20:52 -0700</bug_when>
    <thetext>Created attachment 23052
Updated patch with darin&apos;s suggested changes

 WebCore/ChangeLog                        |   35 ++++++++++++++++++++++++++++++
 WebCore/bindings/js/JSDOMWindowBase.cpp  |   21 +++++++++--------
 WebCore/bindings/js/JSDOMWindowBase.h    |    5 ++-
 WebCore/bindings/js/ScriptController.cpp |   22 ++++++++++++++++++
 WebCore/bindings/js/ScriptController.h   |    3 ++
 WebCore/history/CachedPage.cpp           |    4 +-
 WebCore/page/Chrome.cpp                  |   26 ++++++++-------------
 WebCore/page/JavaScriptDebugServer.cpp   |   14 ++++++++---
 8 files changed, 96 insertions(+), 34 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>89626</commentid>
    <comment_count>7</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-08-28 04:23:19 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #4)
&gt; ... thus all
&gt; methods must be inlined, so the count is just a member access thus there is no
&gt; function call overhead. 

I meant that all methods must be declared in a header, and thus highly likely to be inlined.  I guess I&apos;m choosing more and more code size and cleanliness over possible speed optimizations these days.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>89628</commentid>
    <comment_count>8</comment_count>
      <attachid>23052</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-08-28 04:38:23 -0700</bug_when>
    <thetext>Comment on attachment 23052
Updated patch with darin&apos;s suggested changes

r=me, based on Darin&apos;s earlier review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>89629</commentid>
    <comment_count>9</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-08-28 04:42:55 -0700</bug_when>
    <thetext>Thanks to both of you!  r35964</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>22907</attachid>
            <date>2008-08-20 16:58:53 -0700</date>
            <delta_ts>2008-08-20 17:28:11 -0700</delta_ts>
            <desc>First attempt at PausedTimeouts cleanup</desc>
            <filename>First-attempt-at-PausedTimeouts-cleanup.patch</filename>
            <type>text/plain</type>
            <size>10228</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZTZjMjEwMTJkODNmYzE0MWE2MTE0YjQ2MjQ1MGI5NDk5ODA1NDVkMQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5ZjczZTQ0Li5iNGY1ZTA5
IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDM0IEBACisyMDA4LTA4LTIwICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDbG9z
ZSBhIGxlYWsgb2YgUGF1c2VkVGltZW91dHMgaWYgdGhlIEphdmFTY3JpcHREZWJ1Z1NlcnZlciB3
YXMgZGVzdHJveWVkCisgICAgICAgIHdpdGggdGltZW91dHMgcGF1c2VkLgorICAgICAgICAKKyAg
ICAgICAgSSBhdHRlbXB0ZWQgdG8gY2xlYW4gdXAgdGhlIG1lbW9yeSBtYW5hZ2VtZW50IG9mIFBh
dXNlZFRpbWVvdXRzLCBJJ20gbm90CisgICAgICAgIHN1cmUgdGhlIHNvbHV0aW9uIEkgY2FtZSB1
cCB3aXRoIGlzICJjbGVhbmVyIiwgYnV0IGl0J3MgaW4gc29tZSB3YXlzCisgICAgICAgICJzYWZl
ciIsIHNpbmNlIGl0IG5vIGxvbmdlciB1c2VzIHJhdyBwb2ludGVycyBhbmQgbWFudWFsIG5ldy9k
ZWxldGUuCisgICAgICAgIAorICAgICAgICBJIGFsc28gbWFkZSBDaHJvbWUuY3BwIG5vIGxvbmdl
ciBkZXBlbmQgb24gdGhlIEphdmFTY3JpcHQgYmluZGluZ3MKKyAgICAgICAgKGFrYSBKU0RPTVdp
bmRvd0Jhc2UuaCksIHNpbmNlIHRoZXJlIHdhcyBubyByZWFsIHJlYXNvbiBmb3IgaXQgdG8uCisK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNET01XaW5kb3dCYXNlOjpwYXVzZVRpbWVvdXRzKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTRE9NV2luZG93QmFzZTo6cmVzdW1lVGltZW91dHMpOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTRE9NV2luZG93QmFzZS5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xs
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6cGF1c2VUaW1lb3V0
cyk6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oOgorICAgICAgICAq
IGhpc3RvcnkvQ2FjaGVkUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRQYWdlOjpD
YWNoZWRQYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFBhZ2U6OnJlc3RvcmUpOgorICAg
ICAgICAqIHBhZ2UvQ2hyb21lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VHcm91cExvYWRE
ZWZlcnJlcjo6UGFnZUdyb3VwTG9hZERlZmVycmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VH
cm91cExvYWREZWZlcnJlcjo6flBhZ2VHcm91cExvYWREZWZlcnJlcik6CisgICAgICAgICogcGFn
ZS9KYXZhU2NyaXB0RGVidWdTZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SmF2YVNjcmlw
dERlYnVnU2VydmVyOjp+SmF2YVNjcmlwdERlYnVnU2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkphdmFTY3JpcHREZWJ1Z1NlcnZlcjo6c2V0SmF2YVNjcmlwdFBhdXNlZCk6CisKIDIwMDgtMDgt
MjAgIFRpbW90aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZHMg
YSBwb3NpdG9uIGJveCB0byB0aGUgSW5zcGVjdG9yJ3MgTWV0cmljcyBzaWRlYmFyCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAgYi9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKaW5kZXggNGU5MzQ4Mi4uNjBhYzY3MSAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCisrKyBiL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcApAQCAtMTIxMCwxNyArMTIxMCwx
OSBAQCBpbnQgSlNET01XaW5kb3dCYXNlOjppbnN0YWxsVGltZW91dChFeGVjU3RhdGUqIGV4ZWMs
IEpTVmFsdWUqIGZ1bmMsIGNvbnN0IEFyZ0xpcwogICAgIHJldHVybiBpbnN0YWxsVGltZW91dChu
ZXcgU2NoZWR1bGVkQWN0aW9uKGV4ZWMsIGZ1bmMsIGFyZ3MpLCB0LCBzaW5nbGVTaG90KTsKIH0K
IAotUGF1c2VkVGltZW91dHMqIEpTRE9NV2luZG93QmFzZTo6cGF1c2VUaW1lb3V0cygpCit2b2lk
IEpTRE9NV2luZG93QmFzZTo6cGF1c2VUaW1lb3V0cyhPd25QdHI8UGF1c2VkVGltZW91dHM+JiBy
ZXN1bHQpCiB7Ci0gICAgc2l6ZV90IGNvdW50ID0gZCgpLT50aW1lb3V0cy5zaXplKCk7Ci0gICAg
aWYgKGNvdW50ID09IDApCi0gICAgICAgIHJldHVybiAwOworICAgIHNpemVfdCB0aW1lb3V0c0Nv
dW50ID0gZCgpLT50aW1lb3V0cy5zaXplKCk7CisgICAgaWYgKCF0aW1lb3V0c0NvdW50KSB7Cisg
ICAgICAgIHJlc3VsdC5jbGVhcigpOworICAgICAgICByZXR1cm47CisgICAgfQogCi0gICAgUGF1
c2VkVGltZW91dCogdCA9IG5ldyBQYXVzZWRUaW1lb3V0IFtjb3VudF07Ci0gICAgUGF1c2VkVGlt
ZW91dHMqIHJlc3VsdCA9IG5ldyBQYXVzZWRUaW1lb3V0cyh0LCBjb3VudCk7CisgICAgUGF1c2Vk
VGltZW91dCogdCA9IG5ldyBQYXVzZWRUaW1lb3V0W3RpbWVvdXRzQ291bnRdOworICAgIHJlc3Vs
dC5zZXQobmV3IFBhdXNlZFRpbWVvdXRzKHQsIHRpbWVvdXRzQ291bnQpKTsKIAogICAgIEpTRE9N
V2luZG93QmFzZURhdGE6OlRpbWVvdXRzTWFwOjppdGVyYXRvciBpdCA9IGQoKS0+dGltZW91dHMu
YmVnaW4oKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSAhPSBjb3VudDsgKytpLCArK2l0KSB7
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgIT0gdGltZW91dHNDb3VudDsgKytpLCArK2l0KSB7
CiAgICAgICAgIGludCB0aW1lb3V0SWQgPSBpdC0+Zmlyc3Q7CiAgICAgICAgIERPTVdpbmRvd1Rp
bWVyKiB0aW1lciA9IGl0LT5zZWNvbmQ7CiAgICAgICAgIHRbaV0udGltZW91dElkID0gdGltZW91
dElkOwpAQCAtMTIzMywxMSArMTIzNSw5IEBAIFBhdXNlZFRpbWVvdXRzKiBKU0RPTVdpbmRvd0Jh
c2U6OnBhdXNlVGltZW91dHMoKQogCiAgICAgZGVsZXRlQWxsVmFsdWVzKGQoKS0+dGltZW91dHMp
OwogICAgIGQoKS0+dGltZW91dHMuY2xlYXIoKTsKLQotICAgIHJldHVybiByZXN1bHQ7CiB9CiAK
LXZvaWQgSlNET01XaW5kb3dCYXNlOjpyZXN1bWVUaW1lb3V0cyhQYXVzZWRUaW1lb3V0cyogdGlt
ZW91dHMpCit2b2lkIEpTRE9NV2luZG93QmFzZTo6cmVzdW1lVGltZW91dHMoT3duUHRyPFBhdXNl
ZFRpbWVvdXRzPiYgdGltZW91dHMpCiB7CiAgICAgaWYgKCF0aW1lb3V0cykKICAgICAgICAgcmV0
dXJuOwpAQCAtMTI1MCw2ICsxMjUwLDcgQEAgdm9pZCBKU0RPTVdpbmRvd0Jhc2U6OnJlc3VtZVRp
bWVvdXRzKFBhdXNlZFRpbWVvdXRzKiB0aW1lb3V0cykKICAgICAgICAgdGltZXItPnN0YXJ0KGFy
cmF5W2ldLm5leHRGaXJlSW50ZXJ2YWwsIGFycmF5W2ldLnJlcGVhdEludGVydmFsKTsKICAgICB9
CiAgICAgZGVsZXRlIFtdIGFycmF5OworICAgIHRpbWVvdXRzLmNsZWFyKCk7CiB9CiAKIHZvaWQg
SlNET01XaW5kb3dCYXNlOjpjbGVhclRpbWVvdXQoaW50IHRpbWVvdXRJZCwgYm9vbCBkZWxBY3Rp
b24pCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5oIGIv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuaAppbmRleCA5Y2NiOGRjLi5jNzE2
ODQwIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5oCisr
KyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmgKQEAgLTcxLDggKzcxLDkg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBpbnQgaW5zdGFsbFRpbWVvdXQoY29uc3Qg
S0pTOjpVU3RyaW5nJiBoYW5kbGVyLCBpbnQgdCwgYm9vbCBzaW5nbGVTaG90KTsKICAgICAgICAg
aW50IGluc3RhbGxUaW1lb3V0KEtKUzo6RXhlY1N0YXRlKiwgS0pTOjpKU1ZhbHVlKiBmdW5jdGlv
biwgY29uc3QgS0pTOjpBcmdMaXN0JiBhcmdzLCBpbnQgdCwgYm9vbCBzaW5nbGVTaG90KTsKICAg
ICAgICAgdm9pZCBjbGVhclRpbWVvdXQoaW50IHRpbWVySWQsIGJvb2wgZGVsQWN0aW9uID0gdHJ1
ZSk7Ci0gICAgICAgIFBhdXNlZFRpbWVvdXRzKiBwYXVzZVRpbWVvdXRzKCk7Ci0gICAgICAgIHZv
aWQgcmVzdW1lVGltZW91dHMoUGF1c2VkVGltZW91dHMqKTsKKworICAgICAgICB2b2lkIHBhdXNl
VGltZW91dHMoT3duUHRyPFBhdXNlZFRpbWVvdXRzPiYpOworICAgICAgICB2b2lkIHJlc3VtZVRp
bWVvdXRzKE93blB0cjxQYXVzZWRUaW1lb3V0cz4mKTsKIAogICAgICAgICB2b2lkIHRpbWVyRmly
ZWQoRE9NV2luZG93VGltZXIqKTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHRDb250cm9sbGVyLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxl
ci5jcHAKaW5kZXggZDE5ZDg1ZC4uNzUxODVjMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dENvbnRyb2xsZXIuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiTlBfanNvYmplY3Qu
aCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFnZUdyb3VwLmgiCisjaW5jbHVkZSAi
UGF1c2VkVGltZW91dHMuaCIKICNpbmNsdWRlICJydW50aW1lX3Jvb3QuaCIKICNpbmNsdWRlICJT
ZXR0aW5ncy5oIgogI2luY2x1ZGUgIlN0cmluZ1NvdXJjZVByb3ZpZGVyLmgiCkBAIC0zNjAsNCAr
MzYxLDE0IEBAIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6Y2xlYXJTY3JpcHRPYmplY3RzKCkKICAg
ICBjbGVhclBsYXRmb3JtU2NyaXB0T2JqZWN0cygpOwogfQogCit2b2lkIFNjcmlwdENvbnRyb2xs
ZXI6OnBhdXNlVGltZW91dHMoT3duUHRyPFBhdXNlZFRpbWVvdXRzPiYgcmVzdWx0KQoreworICAg
IGlmICghaGF2ZVdpbmRvd1NoZWxsKCkpIHsKKyAgICAgICAgcmVzdWx0LmNsZWFyKCk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICB3aW5kb3dTaGVsbCgpLT53aW5kb3coKS0+cGF1c2VU
aW1lb3V0cyhyZXN1bHQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaCBiL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0Q29udHJvbGxlci5oCmluZGV4IDJmMTE4ZDUuLjRkMmRkZjggMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oCisrKyBiL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oCkBAIC0xMDMsNiArMTAzLDkgQEAgcHVibGlj
OgogICAgIHZvaWQgY2xlYXJGb3JtZXJXaW5kb3coSlNET01XaW5kb3cqIHdpbmRvdykgeyBtX2xp
dmVGb3JtZXJXaW5kb3dzLnJlbW92ZSh3aW5kb3cpOyB9CiAgICAgdm9pZCB1cGRhdGVEb2N1bWVu
dCgpOwogCisgICAgdm9pZCBwYXVzZVRpbWVvdXRzKE93blB0cjxQYXVzZWRUaW1lb3V0cz4mKTsK
KyAgICB2b2lkIHJlc3VtZVRpbWVvdXRzKE93blB0cjxQYXVzZWRUaW1lb3V0cz4mKTsKKwogICAg
IHZvaWQgY2xlYXJTY3JpcHRPYmplY3RzKCk7CiAgICAgdm9pZCBjbGVhbnVwU2NyaXB0T2JqZWN0
c0ZvclBsdWdpbih2b2lkKik7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRQ
YWdlLmNwcCBiL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRQYWdlLmNwcAppbmRleCA5OGYzOTIzLi42
MGUyYjRiIDEwMDY0NAotLS0gYS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkUGFnZS5jcHAKKysrIGIv
V2ViQ29yZS9oaXN0b3J5L0NhY2hlZFBhZ2UuY3BwCkBAIC04Niw3ICs4Niw3IEBAIENhY2hlZFBh
Z2U6OkNhY2hlZFBhZ2UoUGFnZSogcGFnZSkKICAgICBTY3JpcHRDb250cm9sbGVyKiBwcm94eSA9
IG1haW5GcmFtZS0+c2NyaXB0KCk7CiAgICAgaWYgKHByb3h5LT5oYXZlV2luZG93U2hlbGwoKSkg
ewogICAgICAgICBtX3dpbmRvdyA9IHByb3h5LT53aW5kb3dTaGVsbCgpLT53aW5kb3coKTsKLSAg
ICAgICAgbV9wYXVzZWRUaW1lb3V0cy5zZXQobV93aW5kb3ctPnBhdXNlVGltZW91dHMoKSk7Cisg
ICAgICAgIG1fd2luZG93LT5wYXVzZVRpbWVvdXRzKG1fcGF1c2VkVGltZW91dHMpOwogICAgIH0K
IAogICAgIG1fZG9jdW1lbnQtPnNldEluUGFnZUNhY2hlKHRydWUpOwpAQCAtMTE0LDcgKzExNCw3
IEBAIHZvaWQgQ2FjaGVkUGFnZTo6cmVzdG9yZShQYWdlKiBwYWdlKQogICAgICAgICBKU0RPTVdp
bmRvd1NoZWxsKiB3aW5kb3dTaGVsbCA9IHByb3h5LT53aW5kb3dTaGVsbCgpOwogICAgICAgICBp
ZiAobV93aW5kb3cpIHsKICAgICAgICAgICAgIHdpbmRvd1NoZWxsLT5zZXRXaW5kb3cobV93aW5k
b3cuZ2V0KCkpOwotICAgICAgICAgICAgd2luZG93U2hlbGwtPndpbmRvdygpLT5yZXN1bWVUaW1l
b3V0cyhtX3BhdXNlZFRpbWVvdXRzLmdldCgpKTsKKyAgICAgICAgICAgIHdpbmRvd1NoZWxsLT53
aW5kb3coKS0+cmVzdW1lVGltZW91dHMobV9wYXVzZWRUaW1lb3V0cyk7CiAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICB3aW5kb3dTaGVsbC0+c2V0V2luZG93KG5ldyAoSlNET01XaW5kb3c6
OmNvbW1vbkpTR2xvYmFsRGF0YSgpKSBKU0RPTVdpbmRvdyhtYWluRnJhbWUtPmRvbVdpbmRvdygp
LCB3aW5kb3dTaGVsbCkpOwogICAgICAgICAgICAgcHJveHktPmF0dGFjaERlYnVnZ2VyKHBhZ2Ut
PmRlYnVnZ2VyKCkpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAgYi9XZWJD
b3JlL3BhZ2UvQ2hyb21lLmNwcAppbmRleCBjZTBhNDI2Li4xZjEwYjU3IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcApAQCAt
MzAsNyArMzAsNiBAQAogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKICNpbmNsdWRlICJI
VE1MTmFtZXMuaCIKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCi0jaW5jbHVkZSAiSlNET01X
aW5kb3cuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFnZUdyb3VwLmgiCiAjaW5j
bHVkZSAiUGF1c2VkVGltZW91dHMuaCIKQEAgLTQyNCwxMSArNDIzLDEwIEBAIFBhZ2VHcm91cExv
YWREZWZlcnJlcjo6UGFnZUdyb3VwTG9hZERlZmVycmVyKFBhZ2UqIHBhZ2UsIGJvb2wgZGVmZXJT
ZWxmKQogCiAjaWYgIVBMQVRGT1JNKE1BQykKICAgICAgICAgICAgIGZvciAoRnJhbWUqIGZyYW1l
ID0gb3RoZXJQYWdlLT5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+
dHJhdmVyc2VOZXh0KCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoSlNET01XaW5kb3cqIHdpbmRv
dyA9IHRvSlNET01XaW5kb3coZnJhbWUpKSB7Ci0gICAgICAgICAgICAgICAgICAgIFBhdXNlZFRp
bWVvdXRzKiB0aW1lb3V0cyA9IHdpbmRvdy0+cGF1c2VUaW1lb3V0cygpOwotCi0gICAgICAgICAg
ICAgICAgICAgIG1fcGF1c2VkVGltZW91dHMuYXBwZW5kKG1ha2VfcGFpcihSZWZQdHI8RnJhbWU+
KGZyYW1lKSwgdGltZW91dHMpKTsKLSAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
T3duUHRyPFBhdXNlZFRpbWVvdXRzPiB0aW1lb3V0czsKKyAgICAgICAgICAgICAgICBmcmFtZS0+
c2NyaXB0KCktPnBhdXNlVGltZW91dHModGltZW91dHMpOworICAgICAgICAgICAgICAgIGlmICh0
aW1lb3V0cykKKyAgICAgICAgICAgICAgICAgICAgbV9wYXVzZWRUaW1lb3V0cy5hcHBlbmQobWFr
ZV9wYWlyKFJlZlB0cjxGcmFtZT4oZnJhbWUpLCB0aW1lb3V0cy50YWtlKCkpKTsKICAgICAgICAg
ICAgIH0KICNlbmRpZgogICAgICAgICB9CkBAIC00NDIsMTkgKzQ0MCwxNSBAQCBQYWdlR3JvdXBM
b2FkRGVmZXJyZXI6OlBhZ2VHcm91cExvYWREZWZlcnJlcihQYWdlKiBwYWdlLCBib29sIGRlZmVy
U2VsZikKIAogUGFnZUdyb3VwTG9hZERlZmVycmVyOjp+UGFnZUdyb3VwTG9hZERlZmVycmVyKCkK
IHsKLSAgICBzaXplX3QgY291bnQgPSBtX2RlZmVycmVkRnJhbWVzLnNpemUoKTsKLSAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGNvdW50OyArK2kpCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBtX2RlZmVycmVkRnJhbWVzLnNpemUoKTsgKytpKQogICAgICAgICBpZiAoUGFnZSogcGFnZSA9
IG1fZGVmZXJyZWRGcmFtZXNbaV0tPnBhZ2UoKSkKICAgICAgICAgICAgIHBhZ2UtPnNldERlZmVy
c0xvYWRpbmcoZmFsc2UpOwogCiAjaWYgIVBMQVRGT1JNKE1BQykKLSAgICBjb3VudCA9IG1fcGF1
c2VkVGltZW91dHMuc2l6ZSgpOwotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb3VudDsg
aSsrKSB7Ci0gICAgICAgIEpTRE9NV2luZG93KiB3aW5kb3cgPSB0b0pTRE9NV2luZG93KG1fcGF1
c2VkVGltZW91dHNbaV0uZmlyc3QuZ2V0KCkpOwotICAgICAgICBpZiAod2luZG93KQotICAgICAg
ICAgICAgd2luZG93LT5yZXN1bWVUaW1lb3V0cyhtX3BhdXNlZFRpbWVvdXRzW2ldLnNlY29uZCk7
Ci0gICAgICAgIGRlbGV0ZSBtX3BhdXNlZFRpbWVvdXRzW2ldLnNlY29uZDsKKyAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IG1fcGF1c2VkVGltZW91dHMuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAg
RnJhbWUqIGZyYW1lID0gbV9wYXVzZWRUaW1lb3V0c1tpXS5maXJzdC5nZXQoKTsKKyAgICAgICAg
T3duUHRyPFBhdXNlZFRpbWVvdXRzPiB0aW1lb3V0cyA9IG1fcGF1c2VkVGltZW91dHNbaV0uc2Vj
b25kOworICAgICAgICBmcmFtZS0+c2NyaXB0KCktPnJlc3VtZVRpbWVvdXRzKHRpbWVvdXRzKTsK
ICAgICB9CiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9KYXZhU2NyaXB0RGVi
dWdTZXJ2ZXIuY3BwIGIvV2ViQ29yZS9wYWdlL0phdmFTY3JpcHREZWJ1Z1NlcnZlci5jcHAKaW5k
ZXggMzQ3MGJiYS4uZjlkNzkyNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0phdmFTY3JpcHRE
ZWJ1Z1NlcnZlci5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL0phdmFTY3JpcHREZWJ1Z1NlcnZlci5j
cHAKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJKYXZhU2NyaXB0RGVidWdMaXN0ZW5lci5o
IgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQYWdlR3JvdXAuaCIKKyNpbmNsdWRlICJQ
YXVzZWRUaW1lb3V0cy5oIgogI2luY2x1ZGUgIlBsdWdpblZpZXcuaCIKICNpbmNsdWRlICJTY3Jv
bGxWaWV3LmgiCiAjaW5jbHVkZSAiV2lkZ2V0LmgiCkBAIC03Myw2ICs3NCw3IEBAIEphdmFTY3Jp
cHREZWJ1Z1NlcnZlcjo6fkphdmFTY3JpcHREZWJ1Z1NlcnZlcigpCiB7CiAgICAgZGVsZXRlQWxs
VmFsdWVzKG1fcGFnZUxpc3RlbmVyc01hcCk7CiAgICAgZGVsZXRlQWxsVmFsdWVzKG1fYnJlYWtw
b2ludHMpOworICAgIGRlbGV0ZUFsbFZhbHVlcyhtX3BhdXNlZFRpbWVvdXRzKTsKIH0KIAogdm9p
ZCBKYXZhU2NyaXB0RGVidWdTZXJ2ZXI6OmFkZExpc3RlbmVyKEphdmFTY3JpcHREZWJ1Z0xpc3Rl
bmVyKiBsaXN0ZW5lcikKQEAgLTM1NiwxMCArMzU4LDE0IEBAIHZvaWQgSmF2YVNjcmlwdERlYnVn
U2VydmVyOjpzZXRKYXZhU2NyaXB0UGF1c2VkKEZyYW1lKiBmcmFtZSwgYm9vbCBwYXVzZWQpCiAg
ICAgZnJhbWUtPnNjcmlwdCgpLT5zZXRQYXVzZWQocGF1c2VkKTsKIAogICAgIGlmIChKU0RPTVdp
bmRvdyogd2luZG93ID0gdG9KU0RPTVdpbmRvdyhmcmFtZSkpIHsKLSAgICAgICAgaWYgKHBhdXNl
ZCkKLSAgICAgICAgICAgIG1fcGF1c2VkVGltZW91dHMuc2V0KGZyYW1lLCB3aW5kb3ctPnBhdXNl
VGltZW91dHMoKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHdpbmRvdy0+cmVzdW1lVGlt
ZW91dHMobV9wYXVzZWRUaW1lb3V0cy50YWtlKGZyYW1lKSk7CisgICAgICAgIGlmIChwYXVzZWQp
IHsKKyAgICAgICAgICAgIE93blB0cjxQYXVzZWRUaW1lb3V0cz4gdGltZW91dHM7CisgICAgICAg
ICAgICB3aW5kb3ctPnBhdXNlVGltZW91dHModGltZW91dHMpOworICAgICAgICAgICAgbV9wYXVz
ZWRUaW1lb3V0cy5zZXQoZnJhbWUsIHRpbWVvdXRzLnJlbGVhc2UoKSk7CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICBPd25QdHI8UGF1c2VkVGltZW91dHM+IHRpbWVvdXRzKG1fcGF1c2Vk
VGltZW91dHMudGFrZShmcmFtZSkpOworICAgICAgICAgICAgd2luZG93LT5yZXN1bWVUaW1lb3V0
cyh0aW1lb3V0cyk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBzZXRKYXZhU2NyaXB0UGF1c2Vk
KGZyYW1lLT52aWV3KCksIHBhdXNlZCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>22908</attachid>
            <date>2008-08-20 17:01:25 -0700</date>
            <delta_ts>2008-08-28 04:20:21 -0700</delta_ts>
            <desc>First attempt at PausedTimeouts cleanup</desc>
            <filename>First-attempt-at-PausedTimeouts-cleanup.patch</filename>
            <type>text/plain</type>
            <size>10383</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">MThmZGVjNmEzNWVmZTNkOTg1MTljM2Y0MDU0YTJjNDIzNjIwM2FkZgpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5ZjczZTQ0Li5jYmM3ODA5
IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDM3IEBACisyMDA4LTA4LTIwICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDbG9z
ZSBhIGxlYWsgb2YgUGF1c2VkVGltZW91dHMgaWYgdGhlIEphdmFTY3JpcHREZWJ1Z1NlcnZlciB3
YXMgZGVzdHJveWVkCisgICAgICAgIHdpdGggdGltZW91dHMgcGF1c2VkLgorICAgICAgICAKKyAg
ICAgICAgSSBhdHRlbXB0ZWQgdG8gY2xlYW4gdXAgdGhlIG1lbW9yeSBtYW5hZ2VtZW50IG9mIFBh
dXNlZFRpbWVvdXRzLCBJJ20gbm90CisgICAgICAgIHN1cmUgdGhlIHNvbHV0aW9uIEkgY2FtZSB1
cCB3aXRoIGlzICJjbGVhbmVyIiwgYnV0IGl0J3MgaW4gc29tZSB3YXlzCisgICAgICAgICJzYWZl
ciIsIHNpbmNlIGl0IG5vIGxvbmdlciB1c2VzIHJhdyBwb2ludGVycyBhbmQgbWFudWFsIG5ldy9k
ZWxldGUuCisgICAgICAgIAorICAgICAgICBUaGlzIGFsc28gbm93IHByZXZlbnRzIENhY2hlZFBh
Z2UgZnJvbSBuZWVkbGVzc2x5IGNyZWF0aW5nIFdpbmRvdworICAgICAgICBvYmplY3RzIHdoZW4g
Y2FjaGluZyBwYWdlcyB3aGljaCBkaWRuJ3QgYWxyZWFkeSBoYXZlIG9uZS4gOikKKyAgICAgICAg
CisgICAgICAgIEkgYWxzbyBtYWRlIENocm9tZS5jcHAgbm8gbG9uZ2VyIGRlcGVuZCBvbiB0aGUg
SmF2YVNjcmlwdCBiaW5kaW5ncworICAgICAgICAoYWthIEpTRE9NV2luZG93QmFzZS5oKSwgc2lu
Y2UgdGhlcmUgd2FzIG5vIHJlYWwgcmVhc29uIGZvciBpdCB0by4KKworICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRv
d0Jhc2U6OnBhdXNlVGltZW91dHMpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dCYXNl
OjpyZXN1bWVUaW1lb3V0cyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNl
Lmg6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpwYXVzZVRpbWVvdXRzKToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmg6CisgICAgICAgICogaGlzdG9yeS9DYWNoZWRQ
YWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFBhZ2U6OkNhY2hlZFBhZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkUGFnZTo6cmVzdG9yZSk6CisgICAgICAgICogcGFnZS9DaHJv
bWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUdyb3VwTG9hZERlZmVycmVyOjpQYWdlR3Jv
dXBMb2FkRGVmZXJyZXIpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUdyb3VwTG9hZERlZmVycmVy
Ojp+UGFnZUdyb3VwTG9hZERlZmVycmVyKToKKyAgICAgICAgKiBwYWdlL0phdmFTY3JpcHREZWJ1
Z1NlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKYXZhU2NyaXB0RGVidWdTZXJ2ZXI6On5K
YXZhU2NyaXB0RGVidWdTZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SmF2YVNjcmlwdERlYnVn
U2VydmVyOjpzZXRKYXZhU2NyaXB0UGF1c2VkKToKKwogMjAwOC0wOC0yMCAgVGltb3RoeSBIYXRj
aGVyICA8dGltb3RoeUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkcyBhIHBvc2l0b24gYm94IHRv
IHRoZSBJbnNwZWN0b3IncyBNZXRyaWNzIHNpZGViYXIKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01X
aW5kb3dCYXNlLmNwcAppbmRleCA0ZTkzNDgyLi42MGFjNjcxIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd0Jhc2UuY3BwCkBAIC0xMjEwLDE3ICsxMjEwLDE5IEBAIGludCBKU0RPTVdp
bmRvd0Jhc2U6Omluc3RhbGxUaW1lb3V0KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSogZnVuYywg
Y29uc3QgQXJnTGlzCiAgICAgcmV0dXJuIGluc3RhbGxUaW1lb3V0KG5ldyBTY2hlZHVsZWRBY3Rp
b24oZXhlYywgZnVuYywgYXJncyksIHQsIHNpbmdsZVNob3QpOwogfQogCi1QYXVzZWRUaW1lb3V0
cyogSlNET01XaW5kb3dCYXNlOjpwYXVzZVRpbWVvdXRzKCkKK3ZvaWQgSlNET01XaW5kb3dCYXNl
OjpwYXVzZVRpbWVvdXRzKE93blB0cjxQYXVzZWRUaW1lb3V0cz4mIHJlc3VsdCkKIHsKLSAgICBz
aXplX3QgY291bnQgPSBkKCktPnRpbWVvdXRzLnNpemUoKTsKLSAgICBpZiAoY291bnQgPT0gMCkK
LSAgICAgICAgcmV0dXJuIDA7CisgICAgc2l6ZV90IHRpbWVvdXRzQ291bnQgPSBkKCktPnRpbWVv
dXRzLnNpemUoKTsKKyAgICBpZiAoIXRpbWVvdXRzQ291bnQpIHsKKyAgICAgICAgcmVzdWx0LmNs
ZWFyKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKLSAgICBQYXVzZWRUaW1lb3V0KiB0ID0g
bmV3IFBhdXNlZFRpbWVvdXQgW2NvdW50XTsKLSAgICBQYXVzZWRUaW1lb3V0cyogcmVzdWx0ID0g
bmV3IFBhdXNlZFRpbWVvdXRzKHQsIGNvdW50KTsKKyAgICBQYXVzZWRUaW1lb3V0KiB0ID0gbmV3
IFBhdXNlZFRpbWVvdXRbdGltZW91dHNDb3VudF07CisgICAgcmVzdWx0LnNldChuZXcgUGF1c2Vk
VGltZW91dHModCwgdGltZW91dHNDb3VudCkpOwogCiAgICAgSlNET01XaW5kb3dCYXNlRGF0YTo6
VGltZW91dHNNYXA6Oml0ZXJhdG9yIGl0ID0gZCgpLT50aW1lb3V0cy5iZWdpbigpOwotICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpICE9IGNvdW50OyArK2ksICsraXQpIHsKKyAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSAhPSB0aW1lb3V0c0NvdW50OyArK2ksICsraXQpIHsKICAgICAgICAgaW50IHRp
bWVvdXRJZCA9IGl0LT5maXJzdDsKICAgICAgICAgRE9NV2luZG93VGltZXIqIHRpbWVyID0gaXQt
PnNlY29uZDsKICAgICAgICAgdFtpXS50aW1lb3V0SWQgPSB0aW1lb3V0SWQ7CkBAIC0xMjMzLDEx
ICsxMjM1LDkgQEAgUGF1c2VkVGltZW91dHMqIEpTRE9NV2luZG93QmFzZTo6cGF1c2VUaW1lb3V0
cygpCiAKICAgICBkZWxldGVBbGxWYWx1ZXMoZCgpLT50aW1lb3V0cyk7CiAgICAgZCgpLT50aW1l
b3V0cy5jbGVhcigpOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCBKU0RPTVdpbmRv
d0Jhc2U6OnJlc3VtZVRpbWVvdXRzKFBhdXNlZFRpbWVvdXRzKiB0aW1lb3V0cykKK3ZvaWQgSlNE
T01XaW5kb3dCYXNlOjpyZXN1bWVUaW1lb3V0cyhPd25QdHI8UGF1c2VkVGltZW91dHM+JiB0aW1l
b3V0cykKIHsKICAgICBpZiAoIXRpbWVvdXRzKQogICAgICAgICByZXR1cm47CkBAIC0xMjUwLDYg
KzEyNTAsNyBAQCB2b2lkIEpTRE9NV2luZG93QmFzZTo6cmVzdW1lVGltZW91dHMoUGF1c2VkVGlt
ZW91dHMqIHRpbWVvdXRzKQogICAgICAgICB0aW1lci0+c3RhcnQoYXJyYXlbaV0ubmV4dEZpcmVJ
bnRlcnZhbCwgYXJyYXlbaV0ucmVwZWF0SW50ZXJ2YWwpOwogICAgIH0KICAgICBkZWxldGUgW10g
YXJyYXk7CisgICAgdGltZW91dHMuY2xlYXIoKTsKIH0KIAogdm9pZCBKU0RPTVdpbmRvd0Jhc2U6
OmNsZWFyVGltZW91dChpbnQgdGltZW91dElkLCBib29sIGRlbEFjdGlvbikKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmggYi9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NV2luZG93QmFzZS5oCmluZGV4IDljY2I4ZGMuLmM3MTY4NDAgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmgKKysrIGIvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuaApAQCAtNzEsOCArNzEsOSBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIGludCBpbnN0YWxsVGltZW91dChjb25zdCBLSlM6OlVTdHJpbmcmIGhh
bmRsZXIsIGludCB0LCBib29sIHNpbmdsZVNob3QpOwogICAgICAgICBpbnQgaW5zdGFsbFRpbWVv
dXQoS0pTOjpFeGVjU3RhdGUqLCBLSlM6OkpTVmFsdWUqIGZ1bmN0aW9uLCBjb25zdCBLSlM6OkFy
Z0xpc3QmIGFyZ3MsIGludCB0LCBib29sIHNpbmdsZVNob3QpOwogICAgICAgICB2b2lkIGNsZWFy
VGltZW91dChpbnQgdGltZXJJZCwgYm9vbCBkZWxBY3Rpb24gPSB0cnVlKTsKLSAgICAgICAgUGF1
c2VkVGltZW91dHMqIHBhdXNlVGltZW91dHMoKTsKLSAgICAgICAgdm9pZCByZXN1bWVUaW1lb3V0
cyhQYXVzZWRUaW1lb3V0cyopOworCisgICAgICAgIHZvaWQgcGF1c2VUaW1lb3V0cyhPd25QdHI8
UGF1c2VkVGltZW91dHM+Jik7CisgICAgICAgIHZvaWQgcmVzdW1lVGltZW91dHMoT3duUHRyPFBh
dXNlZFRpbWVvdXRzPiYpOwogCiAgICAgICAgIHZvaWQgdGltZXJGaXJlZChET01XaW5kb3dUaW1l
ciopOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIu
Y3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCBkMTlk
ODVkLi43NTE4NWMzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRy
b2xsZXIuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAK
QEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJOUF9qc29iamVjdC5oIgogI2luY2x1ZGUgIlBh
Z2UuaCIKICNpbmNsdWRlICJQYWdlR3JvdXAuaCIKKyNpbmNsdWRlICJQYXVzZWRUaW1lb3V0cy5o
IgogI2luY2x1ZGUgInJ1bnRpbWVfcm9vdC5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5j
bHVkZSAiU3RyaW5nU291cmNlUHJvdmlkZXIuaCIKQEAgLTM2MCw0ICszNjEsMTQgQEAgdm9pZCBT
Y3JpcHRDb250cm9sbGVyOjpjbGVhclNjcmlwdE9iamVjdHMoKQogICAgIGNsZWFyUGxhdGZvcm1T
Y3JpcHRPYmplY3RzKCk7CiB9CiAKK3ZvaWQgU2NyaXB0Q29udHJvbGxlcjo6cGF1c2VUaW1lb3V0
cyhPd25QdHI8UGF1c2VkVGltZW91dHM+JiByZXN1bHQpCit7CisgICAgaWYgKCFoYXZlV2luZG93
U2hlbGwoKSkgeworICAgICAgICByZXN1bHQuY2xlYXIoKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIHdpbmRvd1NoZWxsKCktPndpbmRvdygpLT5wYXVzZVRpbWVvdXRzKHJlc3VsdCk7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0Q29udHJvbGxlci5oIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250
cm9sbGVyLmgKaW5kZXggMmYxMThkNS4uNGQyZGRmOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRDb250cm9sbGVyLmgKQEAgLTEwMyw2ICsxMDMsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVh
ckZvcm1lcldpbmRvdyhKU0RPTVdpbmRvdyogd2luZG93KSB7IG1fbGl2ZUZvcm1lcldpbmRvd3Mu
cmVtb3ZlKHdpbmRvdyk7IH0KICAgICB2b2lkIHVwZGF0ZURvY3VtZW50KCk7CiAKKyAgICB2b2lk
IHBhdXNlVGltZW91dHMoT3duUHRyPFBhdXNlZFRpbWVvdXRzPiYpOworICAgIHZvaWQgcmVzdW1l
VGltZW91dHMoT3duUHRyPFBhdXNlZFRpbWVvdXRzPiYpOworCiAgICAgdm9pZCBjbGVhclNjcmlw
dE9iamVjdHMoKTsKICAgICB2b2lkIGNsZWFudXBTY3JpcHRPYmplY3RzRm9yUGx1Z2luKHZvaWQq
KTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZFBhZ2UuY3BwIGIvV2ViQ29y
ZS9oaXN0b3J5L0NhY2hlZFBhZ2UuY3BwCmluZGV4IDk4ZjM5MjMuLjYwZTJiNGIgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRQYWdlLmNwcAorKysgYi9XZWJDb3JlL2hpc3Rvcnkv
Q2FjaGVkUGFnZS5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgQ2FjaGVkUGFnZTo6Q2FjaGVkUGFnZShQ
YWdlKiBwYWdlKQogICAgIFNjcmlwdENvbnRyb2xsZXIqIHByb3h5ID0gbWFpbkZyYW1lLT5zY3Jp
cHQoKTsKICAgICBpZiAocHJveHktPmhhdmVXaW5kb3dTaGVsbCgpKSB7CiAgICAgICAgIG1fd2lu
ZG93ID0gcHJveHktPndpbmRvd1NoZWxsKCktPndpbmRvdygpOwotICAgICAgICBtX3BhdXNlZFRp
bWVvdXRzLnNldChtX3dpbmRvdy0+cGF1c2VUaW1lb3V0cygpKTsKKyAgICAgICAgbV93aW5kb3ct
PnBhdXNlVGltZW91dHMobV9wYXVzZWRUaW1lb3V0cyk7CiAgICAgfQogCiAgICAgbV9kb2N1bWVu
dC0+c2V0SW5QYWdlQ2FjaGUodHJ1ZSk7CkBAIC0xMTQsNyArMTE0LDcgQEAgdm9pZCBDYWNoZWRQ
YWdlOjpyZXN0b3JlKFBhZ2UqIHBhZ2UpCiAgICAgICAgIEpTRE9NV2luZG93U2hlbGwqIHdpbmRv
d1NoZWxsID0gcHJveHktPndpbmRvd1NoZWxsKCk7CiAgICAgICAgIGlmIChtX3dpbmRvdykgewog
ICAgICAgICAgICAgd2luZG93U2hlbGwtPnNldFdpbmRvdyhtX3dpbmRvdy5nZXQoKSk7Ci0gICAg
ICAgICAgICB3aW5kb3dTaGVsbC0+d2luZG93KCktPnJlc3VtZVRpbWVvdXRzKG1fcGF1c2VkVGlt
ZW91dHMuZ2V0KCkpOworICAgICAgICAgICAgd2luZG93U2hlbGwtPndpbmRvdygpLT5yZXN1bWVU
aW1lb3V0cyhtX3BhdXNlZFRpbWVvdXRzKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
IHdpbmRvd1NoZWxsLT5zZXRXaW5kb3cobmV3IChKU0RPTVdpbmRvdzo6Y29tbW9uSlNHbG9iYWxE
YXRhKCkpIEpTRE9NV2luZG93KG1haW5GcmFtZS0+ZG9tV2luZG93KCksIHdpbmRvd1NoZWxsKSk7
CiAgICAgICAgICAgICBwcm94eS0+YXR0YWNoRGVidWdnZXIocGFnZS0+ZGVidWdnZXIoKSk7CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcCBiL1dlYkNvcmUvcGFnZS9DaHJvbWUu
Y3BwCmluZGV4IGNlMGE0MjYuLjFmMTBiNTcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9DaHJv
bWUuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCkBAIC0zMCw3ICszMCw2IEBACiAj
aW5jbHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2lu
Y2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKLSNpbmNsdWRlICJKU0RPTVdpbmRvdy5oIgogI2luY2x1
ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQYWdlR3JvdXAuaCIKICNpbmNsdWRlICJQYXVzZWRUaW1l
b3V0cy5oIgpAQCAtNDI0LDExICs0MjMsMTAgQEAgUGFnZUdyb3VwTG9hZERlZmVycmVyOjpQYWdl
R3JvdXBMb2FkRGVmZXJyZXIoUGFnZSogcGFnZSwgYm9vbCBkZWZlclNlbGYpCiAKICNpZiAhUExB
VEZPUk0oTUFDKQogICAgICAgICAgICAgZm9yIChGcmFtZSogZnJhbWUgPSBvdGhlclBhZ2UtPm1h
aW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLT50cmF2ZXJzZU5leHQoKSkg
ewotICAgICAgICAgICAgICAgIGlmIChKU0RPTVdpbmRvdyogd2luZG93ID0gdG9KU0RPTVdpbmRv
dyhmcmFtZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgUGF1c2VkVGltZW91dHMqIHRpbWVvdXRz
ID0gd2luZG93LT5wYXVzZVRpbWVvdXRzKCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgbV9wYXVz
ZWRUaW1lb3V0cy5hcHBlbmQobWFrZV9wYWlyKFJlZlB0cjxGcmFtZT4oZnJhbWUpLCB0aW1lb3V0
cykpOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBPd25QdHI8UGF1c2VkVGlt
ZW91dHM+IHRpbWVvdXRzOworICAgICAgICAgICAgICAgIGZyYW1lLT5zY3JpcHQoKS0+cGF1c2VU
aW1lb3V0cyh0aW1lb3V0cyk7CisgICAgICAgICAgICAgICAgaWYgKHRpbWVvdXRzKQorICAgICAg
ICAgICAgICAgICAgICBtX3BhdXNlZFRpbWVvdXRzLmFwcGVuZChtYWtlX3BhaXIoUmVmUHRyPEZy
YW1lPihmcmFtZSksIHRpbWVvdXRzLnRha2UoKSkpOwogICAgICAgICAgICAgfQogI2VuZGlmCiAg
ICAgICAgIH0KQEAgLTQ0MiwxOSArNDQwLDE1IEBAIFBhZ2VHcm91cExvYWREZWZlcnJlcjo6UGFn
ZUdyb3VwTG9hZERlZmVycmVyKFBhZ2UqIHBhZ2UsIGJvb2wgZGVmZXJTZWxmKQogCiBQYWdlR3Jv
dXBMb2FkRGVmZXJyZXI6On5QYWdlR3JvdXBMb2FkRGVmZXJyZXIoKQogewotICAgIHNpemVfdCBj
b3VudCA9IG1fZGVmZXJyZWRGcmFtZXMuc2l6ZSgpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgY291bnQ7ICsraSkKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZGVmZXJyZWRGcmFt
ZXMuc2l6ZSgpOyArK2kpCiAgICAgICAgIGlmIChQYWdlKiBwYWdlID0gbV9kZWZlcnJlZEZyYW1l
c1tpXS0+cGFnZSgpKQogICAgICAgICAgICAgcGFnZS0+c2V0RGVmZXJzTG9hZGluZyhmYWxzZSk7
CiAKICNpZiAhUExBVEZPUk0oTUFDKQotICAgIGNvdW50ID0gbV9wYXVzZWRUaW1lb3V0cy5zaXpl
KCk7Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKLSAgICAgICAg
SlNET01XaW5kb3cqIHdpbmRvdyA9IHRvSlNET01XaW5kb3cobV9wYXVzZWRUaW1lb3V0c1tpXS5m
aXJzdC5nZXQoKSk7Ci0gICAgICAgIGlmICh3aW5kb3cpCi0gICAgICAgICAgICB3aW5kb3ctPnJl
c3VtZVRpbWVvdXRzKG1fcGF1c2VkVGltZW91dHNbaV0uc2Vjb25kKTsKLSAgICAgICAgZGVsZXRl
IG1fcGF1c2VkVGltZW91dHNbaV0uc2Vjb25kOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bV9wYXVzZWRUaW1lb3V0cy5zaXplKCk7IGkrKykgeworICAgICAgICBGcmFtZSogZnJhbWUgPSBt
X3BhdXNlZFRpbWVvdXRzW2ldLmZpcnN0LmdldCgpOworICAgICAgICBPd25QdHI8UGF1c2VkVGlt
ZW91dHM+IHRpbWVvdXRzID0gbV9wYXVzZWRUaW1lb3V0c1tpXS5zZWNvbmQ7CisgICAgICAgIGZy
YW1lLT5zY3JpcHQoKS0+cmVzdW1lVGltZW91dHModGltZW91dHMpOwogICAgIH0KICNlbmRpZgog
fQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0phdmFTY3JpcHREZWJ1Z1NlcnZlci5jcHAgYi9X
ZWJDb3JlL3BhZ2UvSmF2YVNjcmlwdERlYnVnU2VydmVyLmNwcAppbmRleCAzNDcwYmJhLi5mOWQ3
OTI3IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvSmF2YVNjcmlwdERlYnVnU2VydmVyLmNwcAor
KysgYi9XZWJDb3JlL3BhZ2UvSmF2YVNjcmlwdERlYnVnU2VydmVyLmNwcApAQCAtMzksNiArMzks
NyBAQAogI2luY2x1ZGUgIkphdmFTY3JpcHREZWJ1Z0xpc3RlbmVyLmgiCiAjaW5jbHVkZSAiUGFn
ZS5oIgogI2luY2x1ZGUgIlBhZ2VHcm91cC5oIgorI2luY2x1ZGUgIlBhdXNlZFRpbWVvdXRzLmgi
CiAjaW5jbHVkZSAiUGx1Z2luVmlldy5oIgogI2luY2x1ZGUgIlNjcm9sbFZpZXcuaCIKICNpbmNs
dWRlICJXaWRnZXQuaCIKQEAgLTczLDYgKzc0LDcgQEAgSmF2YVNjcmlwdERlYnVnU2VydmVyOjp+
SmF2YVNjcmlwdERlYnVnU2VydmVyKCkKIHsKICAgICBkZWxldGVBbGxWYWx1ZXMobV9wYWdlTGlz
dGVuZXJzTWFwKTsKICAgICBkZWxldGVBbGxWYWx1ZXMobV9icmVha3BvaW50cyk7CisgICAgZGVs
ZXRlQWxsVmFsdWVzKG1fcGF1c2VkVGltZW91dHMpOwogfQogCiB2b2lkIEphdmFTY3JpcHREZWJ1
Z1NlcnZlcjo6YWRkTGlzdGVuZXIoSmF2YVNjcmlwdERlYnVnTGlzdGVuZXIqIGxpc3RlbmVyKQpA
QCAtMzU2LDEwICszNTgsMTQgQEAgdm9pZCBKYXZhU2NyaXB0RGVidWdTZXJ2ZXI6OnNldEphdmFT
Y3JpcHRQYXVzZWQoRnJhbWUqIGZyYW1lLCBib29sIHBhdXNlZCkKICAgICBmcmFtZS0+c2NyaXB0
KCktPnNldFBhdXNlZChwYXVzZWQpOwogCiAgICAgaWYgKEpTRE9NV2luZG93KiB3aW5kb3cgPSB0
b0pTRE9NV2luZG93KGZyYW1lKSkgewotICAgICAgICBpZiAocGF1c2VkKQotICAgICAgICAgICAg
bV9wYXVzZWRUaW1lb3V0cy5zZXQoZnJhbWUsIHdpbmRvdy0+cGF1c2VUaW1lb3V0cygpKTsKLSAg
ICAgICAgZWxzZQotICAgICAgICAgICAgd2luZG93LT5yZXN1bWVUaW1lb3V0cyhtX3BhdXNlZFRp
bWVvdXRzLnRha2UoZnJhbWUpKTsKKyAgICAgICAgaWYgKHBhdXNlZCkgeworICAgICAgICAgICAg
T3duUHRyPFBhdXNlZFRpbWVvdXRzPiB0aW1lb3V0czsKKyAgICAgICAgICAgIHdpbmRvdy0+cGF1
c2VUaW1lb3V0cyh0aW1lb3V0cyk7CisgICAgICAgICAgICBtX3BhdXNlZFRpbWVvdXRzLnNldChm
cmFtZSwgdGltZW91dHMucmVsZWFzZSgpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IE93blB0cjxQYXVzZWRUaW1lb3V0cz4gdGltZW91dHMobV9wYXVzZWRUaW1lb3V0cy50YWtlKGZy
YW1lKSk7CisgICAgICAgICAgICB3aW5kb3ctPnJlc3VtZVRpbWVvdXRzKHRpbWVvdXRzKTsKKyAg
ICAgICAgfQogICAgIH0KIAogICAgIHNldEphdmFTY3JpcHRQYXVzZWQoZnJhbWUtPnZpZXcoKSwg
cGF1c2VkKTsK
</data>
<flag name="review"
          id="10191"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23052</attachid>
            <date>2008-08-28 04:20:52 -0700</date>
            <delta_ts>2008-08-28 04:38:23 -0700</delta_ts>
            <desc>Updated patch with darin&apos;s suggested changes</desc>
            <filename>Updated-patch-with-darin-s-suggested-changes.patch</filename>
            <type>text/plain</type>
            <size>10729</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">MWI3NjZmYzUwYTg3MTJiMDkzZjUzMDQ4OWFhMjQ0ZTExYzc0NDY3NgpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0YTkzNzFiLi4wZmRkZjgx
IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDM4IEBACisyMDA4LTA4LTIwICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDbG9z
ZSBhIGxlYWsgb2YgUGF1c2VkVGltZW91dHMgaWYgdGhlIEphdmFTY3JpcHREZWJ1Z1NlcnZlciB3
YXMgZGVzdHJveWVkCisgICAgICAgIHdpdGggdGltZW91dHMgcGF1c2VkLgorICAgICAgICAKKyAg
ICAgICAgSSBhdHRlbXB0ZWQgdG8gY2xlYW4gdXAgdGhlIG1lbW9yeSBtYW5hZ2VtZW50IG9mIFBh
dXNlZFRpbWVvdXRzLCBJJ20gbm90CisgICAgICAgIHN1cmUgdGhlIHNvbHV0aW9uIEkgY2FtZSB1
cCB3aXRoIGlzICJjbGVhbmVyIiwgYnV0IGl0J3MgaW4gc29tZSB3YXlzCisgICAgICAgICJzYWZl
ciIsIHNpbmNlIGl0IG5vIGxvbmdlciB1c2VzIHJhdyBwb2ludGVycyBhbmQgbWFudWFsIG5ldy9k
ZWxldGUuCisgICAgICAgIAorICAgICAgICBUaGlzIGFsc28gbm93IHByZXZlbnRzIENhY2hlZFBh
Z2UgZnJvbSBuZWVkbGVzc2x5IGNyZWF0aW5nIFdpbmRvdworICAgICAgICBvYmplY3RzIHdoZW4g
Y2FjaGluZyBwYWdlcyB3aGljaCBkaWRuJ3QgYWxyZWFkeSBoYXZlIG9uZS4gOikKKyAgICAgICAg
CisgICAgICAgIEkgYWxzbyBtYWRlIENocm9tZS5jcHAgbm8gbG9uZ2VyIGRlcGVuZCBvbiB0aGUg
SmF2YVNjcmlwdCBiaW5kaW5ncworICAgICAgICAoYWthIEpTRE9NV2luZG93QmFzZS5oKSwgc2lu
Y2UgdGhlcmUgd2FzIG5vIHJlYWwgcmVhc29uIGZvciBpdCB0by4KKworICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRv
d0Jhc2U6OnBhdXNlVGltZW91dHMpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dCYXNl
OjpyZXN1bWVUaW1lb3V0cyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNl
Lmg6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpwYXVzZVRpbWVvdXRzKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OnJlc3VtZVRpbWVvdXRzKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmg6CisgICAgICAgICogaGlzdG9yeS9DYWNoZWRQYWdl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFBhZ2U6OkNhY2hlZFBhZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVkUGFnZTo6cmVzdG9yZSk6CisgICAgICAgICogcGFnZS9DaHJvbWUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUdyb3VwTG9hZERlZmVycmVyOjpQYWdlR3JvdXBM
b2FkRGVmZXJyZXIpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUdyb3VwTG9hZERlZmVycmVyOjp+
UGFnZUdyb3VwTG9hZERlZmVycmVyKToKKyAgICAgICAgKiBwYWdlL0phdmFTY3JpcHREZWJ1Z1Nl
cnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKYXZhU2NyaXB0RGVidWdTZXJ2ZXI6On5KYXZh
U2NyaXB0RGVidWdTZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SmF2YVNjcmlwdERlYnVnU2Vy
dmVyOjpzZXRKYXZhU2NyaXB0UGF1c2VkKToKKwogMjAwOC0wOC0yNyAgSG9sZ2VyIEhhbnMgUGV0
ZXIgRnJleXRoZXIgPHplY2tlQHNlbGZpc2gub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgY29t
cGlsZSBmaXgKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNl
LmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAppbmRleCA0ZTkz
NDgyLi42MGFjNjcxIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93
QmFzZS5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCkBA
IC0xMjEwLDE3ICsxMjEwLDE5IEBAIGludCBKU0RPTVdpbmRvd0Jhc2U6Omluc3RhbGxUaW1lb3V0
KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSogZnVuYywgY29uc3QgQXJnTGlzCiAgICAgcmV0dXJu
IGluc3RhbGxUaW1lb3V0KG5ldyBTY2hlZHVsZWRBY3Rpb24oZXhlYywgZnVuYywgYXJncyksIHQs
IHNpbmdsZVNob3QpOwogfQogCi1QYXVzZWRUaW1lb3V0cyogSlNET01XaW5kb3dCYXNlOjpwYXVz
ZVRpbWVvdXRzKCkKK3ZvaWQgSlNET01XaW5kb3dCYXNlOjpwYXVzZVRpbWVvdXRzKE93blB0cjxQ
YXVzZWRUaW1lb3V0cz4mIHJlc3VsdCkKIHsKLSAgICBzaXplX3QgY291bnQgPSBkKCktPnRpbWVv
dXRzLnNpemUoKTsKLSAgICBpZiAoY291bnQgPT0gMCkKLSAgICAgICAgcmV0dXJuIDA7CisgICAg
c2l6ZV90IHRpbWVvdXRzQ291bnQgPSBkKCktPnRpbWVvdXRzLnNpemUoKTsKKyAgICBpZiAoIXRp
bWVvdXRzQ291bnQpIHsKKyAgICAgICAgcmVzdWx0LmNsZWFyKCk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CiAKLSAgICBQYXVzZWRUaW1lb3V0KiB0ID0gbmV3IFBhdXNlZFRpbWVvdXQgW2NvdW50
XTsKLSAgICBQYXVzZWRUaW1lb3V0cyogcmVzdWx0ID0gbmV3IFBhdXNlZFRpbWVvdXRzKHQsIGNv
dW50KTsKKyAgICBQYXVzZWRUaW1lb3V0KiB0ID0gbmV3IFBhdXNlZFRpbWVvdXRbdGltZW91dHND
b3VudF07CisgICAgcmVzdWx0LnNldChuZXcgUGF1c2VkVGltZW91dHModCwgdGltZW91dHNDb3Vu
dCkpOwogCiAgICAgSlNET01XaW5kb3dCYXNlRGF0YTo6VGltZW91dHNNYXA6Oml0ZXJhdG9yIGl0
ID0gZCgpLT50aW1lb3V0cy5iZWdpbigpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpICE9IGNv
dW50OyArK2ksICsraXQpIHsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSAhPSB0aW1lb3V0c0Nv
dW50OyArK2ksICsraXQpIHsKICAgICAgICAgaW50IHRpbWVvdXRJZCA9IGl0LT5maXJzdDsKICAg
ICAgICAgRE9NV2luZG93VGltZXIqIHRpbWVyID0gaXQtPnNlY29uZDsKICAgICAgICAgdFtpXS50
aW1lb3V0SWQgPSB0aW1lb3V0SWQ7CkBAIC0xMjMzLDExICsxMjM1LDkgQEAgUGF1c2VkVGltZW91
dHMqIEpTRE9NV2luZG93QmFzZTo6cGF1c2VUaW1lb3V0cygpCiAKICAgICBkZWxldGVBbGxWYWx1
ZXMoZCgpLT50aW1lb3V0cyk7CiAgICAgZCgpLT50aW1lb3V0cy5jbGVhcigpOwotCi0gICAgcmV0
dXJuIHJlc3VsdDsKIH0KIAotdm9pZCBKU0RPTVdpbmRvd0Jhc2U6OnJlc3VtZVRpbWVvdXRzKFBh
dXNlZFRpbWVvdXRzKiB0aW1lb3V0cykKK3ZvaWQgSlNET01XaW5kb3dCYXNlOjpyZXN1bWVUaW1l
b3V0cyhPd25QdHI8UGF1c2VkVGltZW91dHM+JiB0aW1lb3V0cykKIHsKICAgICBpZiAoIXRpbWVv
dXRzKQogICAgICAgICByZXR1cm47CkBAIC0xMjUwLDYgKzEyNTAsNyBAQCB2b2lkIEpTRE9NV2lu
ZG93QmFzZTo6cmVzdW1lVGltZW91dHMoUGF1c2VkVGltZW91dHMqIHRpbWVvdXRzKQogICAgICAg
ICB0aW1lci0+c3RhcnQoYXJyYXlbaV0ubmV4dEZpcmVJbnRlcnZhbCwgYXJyYXlbaV0ucmVwZWF0
SW50ZXJ2YWwpOwogICAgIH0KICAgICBkZWxldGUgW10gYXJyYXk7CisgICAgdGltZW91dHMuY2xl
YXIoKTsKIH0KIAogdm9pZCBKU0RPTVdpbmRvd0Jhc2U6OmNsZWFyVGltZW91dChpbnQgdGltZW91
dElkLCBib29sIGRlbEFjdGlvbikKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XaW5kb3dCYXNlLmggYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5oCmlu
ZGV4IDljY2I4ZGMuLmM3MTY4NDAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XaW5kb3dCYXNlLmgKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2Uu
aApAQCAtNzEsOCArNzEsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGludCBpbnN0
YWxsVGltZW91dChjb25zdCBLSlM6OlVTdHJpbmcmIGhhbmRsZXIsIGludCB0LCBib29sIHNpbmds
ZVNob3QpOwogICAgICAgICBpbnQgaW5zdGFsbFRpbWVvdXQoS0pTOjpFeGVjU3RhdGUqLCBLSlM6
OkpTVmFsdWUqIGZ1bmN0aW9uLCBjb25zdCBLSlM6OkFyZ0xpc3QmIGFyZ3MsIGludCB0LCBib29s
IHNpbmdsZVNob3QpOwogICAgICAgICB2b2lkIGNsZWFyVGltZW91dChpbnQgdGltZXJJZCwgYm9v
bCBkZWxBY3Rpb24gPSB0cnVlKTsKLSAgICAgICAgUGF1c2VkVGltZW91dHMqIHBhdXNlVGltZW91
dHMoKTsKLSAgICAgICAgdm9pZCByZXN1bWVUaW1lb3V0cyhQYXVzZWRUaW1lb3V0cyopOworCisg
ICAgICAgIHZvaWQgcGF1c2VUaW1lb3V0cyhPd25QdHI8UGF1c2VkVGltZW91dHM+Jik7CisgICAg
ICAgIHZvaWQgcmVzdW1lVGltZW91dHMoT3duUHRyPFBhdXNlZFRpbWVvdXRzPiYpOwogCiAgICAg
ICAgIHZvaWQgdGltZXJGaXJlZChET01XaW5kb3dUaW1lciopOwogCmRpZmYgLS1naXQgYS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCBkMTlkODVkLi5hMTg4M2NjIDEwMDY0NAotLS0g
YS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNs
dWRlICJOUF9qc29iamVjdC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQYWdlR3Jv
dXAuaCIKKyNpbmNsdWRlICJQYXVzZWRUaW1lb3V0cy5oIgogI2luY2x1ZGUgInJ1bnRpbWVfcm9v
dC5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU3RyaW5nU291cmNlUHJvdmlk
ZXIuaCIKQEAgLTM2MCw0ICszNjEsMjUgQEAgdm9pZCBTY3JpcHRDb250cm9sbGVyOjpjbGVhclNj
cmlwdE9iamVjdHMoKQogICAgIGNsZWFyUGxhdGZvcm1TY3JpcHRPYmplY3RzKCk7CiB9CiAKK3Zv
aWQgU2NyaXB0Q29udHJvbGxlcjo6cGF1c2VUaW1lb3V0cyhPd25QdHI8UGF1c2VkVGltZW91dHM+
JiByZXN1bHQpCit7CisgICAgaWYgKCFoYXZlV2luZG93U2hlbGwoKSkgeworICAgICAgICByZXN1
bHQuY2xlYXIoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHdpbmRvd1NoZWxsKCkt
PndpbmRvdygpLT5wYXVzZVRpbWVvdXRzKHJlc3VsdCk7Cit9CisKK3ZvaWQgU2NyaXB0Q29udHJv
bGxlcjo6cmVzdW1lVGltZW91dHMoT3duUHRyPFBhdXNlZFRpbWVvdXRzPiYgcGF1c2VkVGltZW91
dHMpCit7CisgICAgaWYgKCFoYXZlV2luZG93U2hlbGwoKSkgeworICAgICAgICAvLyBDYWxsZXJz
IGNhbiBhc3N1bWUgd2Ugd2lsbCBhbHdheXMgY2xlYXIgdGhlIHBhc3NlZCBpbiB0aW1lb3V0cwor
ICAgICAgICBwYXVzZWRUaW1lb3V0cy5jbGVhcigpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgd2luZG93U2hlbGwoKS0+d2luZG93KCktPnJlc3VtZVRpbWVvdXRzKHBhdXNlZFRpbWVv
dXRzKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmggYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dENvbnRyb2xsZXIuaAppbmRleCAyZjExOGQ1Li40ZDJkZGY4IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdENvbnRyb2xsZXIuaApAQCAtMTAzLDYgKzEwMyw5IEBAIHB1YmxpYzoKICAgICB2b2lk
IGNsZWFyRm9ybWVyV2luZG93KEpTRE9NV2luZG93KiB3aW5kb3cpIHsgbV9saXZlRm9ybWVyV2lu
ZG93cy5yZW1vdmUod2luZG93KTsgfQogICAgIHZvaWQgdXBkYXRlRG9jdW1lbnQoKTsKIAorICAg
IHZvaWQgcGF1c2VUaW1lb3V0cyhPd25QdHI8UGF1c2VkVGltZW91dHM+Jik7CisgICAgdm9pZCBy
ZXN1bWVUaW1lb3V0cyhPd25QdHI8UGF1c2VkVGltZW91dHM+Jik7CisKICAgICB2b2lkIGNsZWFy
U2NyaXB0T2JqZWN0cygpOwogICAgIHZvaWQgY2xlYW51cFNjcmlwdE9iamVjdHNGb3JQbHVnaW4o
dm9pZCopOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkUGFnZS5jcHAgYi9X
ZWJDb3JlL2hpc3RvcnkvQ2FjaGVkUGFnZS5jcHAKaW5kZXggOThmMzkyMy4uNjBlMmI0YiAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZFBhZ2UuY3BwCisrKyBiL1dlYkNvcmUvaGlz
dG9yeS9DYWNoZWRQYWdlLmNwcApAQCAtODYsNyArODYsNyBAQCBDYWNoZWRQYWdlOjpDYWNoZWRQ
YWdlKFBhZ2UqIHBhZ2UpCiAgICAgU2NyaXB0Q29udHJvbGxlciogcHJveHkgPSBtYWluRnJhbWUt
PnNjcmlwdCgpOwogICAgIGlmIChwcm94eS0+aGF2ZVdpbmRvd1NoZWxsKCkpIHsKICAgICAgICAg
bV93aW5kb3cgPSBwcm94eS0+d2luZG93U2hlbGwoKS0+d2luZG93KCk7Ci0gICAgICAgIG1fcGF1
c2VkVGltZW91dHMuc2V0KG1fd2luZG93LT5wYXVzZVRpbWVvdXRzKCkpOworICAgICAgICBtX3dp
bmRvdy0+cGF1c2VUaW1lb3V0cyhtX3BhdXNlZFRpbWVvdXRzKTsKICAgICB9CiAKICAgICBtX2Rv
Y3VtZW50LT5zZXRJblBhZ2VDYWNoZSh0cnVlKTsKQEAgLTExNCw3ICsxMTQsNyBAQCB2b2lkIENh
Y2hlZFBhZ2U6OnJlc3RvcmUoUGFnZSogcGFnZSkKICAgICAgICAgSlNET01XaW5kb3dTaGVsbCog
d2luZG93U2hlbGwgPSBwcm94eS0+d2luZG93U2hlbGwoKTsKICAgICAgICAgaWYgKG1fd2luZG93
KSB7CiAgICAgICAgICAgICB3aW5kb3dTaGVsbC0+c2V0V2luZG93KG1fd2luZG93LmdldCgpKTsK
LSAgICAgICAgICAgIHdpbmRvd1NoZWxsLT53aW5kb3coKS0+cmVzdW1lVGltZW91dHMobV9wYXVz
ZWRUaW1lb3V0cy5nZXQoKSk7CisgICAgICAgICAgICB3aW5kb3dTaGVsbC0+d2luZG93KCktPnJl
c3VtZVRpbWVvdXRzKG1fcGF1c2VkVGltZW91dHMpOwogICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgd2luZG93U2hlbGwtPnNldFdpbmRvdyhuZXcgKEpTRE9NV2luZG93Ojpjb21tb25KU0ds
b2JhbERhdGEoKSkgSlNET01XaW5kb3cobWFpbkZyYW1lLT5kb21XaW5kb3coKSwgd2luZG93U2hl
bGwpKTsKICAgICAgICAgICAgIHByb3h5LT5hdHRhY2hEZWJ1Z2dlcihwYWdlLT5kZWJ1Z2dlcigp
KTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwIGIvV2ViQ29yZS9wYWdlL0No
cm9tZS5jcHAKaW5kZXggNjI0N2MwYi4uYzkzYTljYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdl
L0Nocm9tZS5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKQEAgLTI5LDcgKzI5LDYg
QEAKICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgi
CiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgotI2luY2x1ZGUgIkpTRE9NV2luZG93LmgiCiAj
aW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBhZ2VHcm91cC5oIgogI2luY2x1ZGUgIlBhdXNl
ZFRpbWVvdXRzLmgiCkBAIC00MjgsMTEgKzQyNywxMCBAQCBQYWdlR3JvdXBMb2FkRGVmZXJyZXI6
OlBhZ2VHcm91cExvYWREZWZlcnJlcihQYWdlKiBwYWdlLCBib29sIGRlZmVyU2VsZikKIAogI2lm
ICFQTEFURk9STShNQUMpCiAgICAgICAgICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IG90aGVyUGFn
ZS0+bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCktPnRyYXZlcnNlTmV4
dCgpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKEpTRE9NV2luZG93KiB3aW5kb3cgPSB0b0pTRE9N
V2luZG93KGZyYW1lKSkgewotICAgICAgICAgICAgICAgICAgICBQYXVzZWRUaW1lb3V0cyogdGlt
ZW91dHMgPSB3aW5kb3ctPnBhdXNlVGltZW91dHMoKTsKLQotICAgICAgICAgICAgICAgICAgICBt
X3BhdXNlZFRpbWVvdXRzLmFwcGVuZChtYWtlX3BhaXIoUmVmUHRyPEZyYW1lPihmcmFtZSksIHRp
bWVvdXRzKSk7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIE93blB0cjxQYXVz
ZWRUaW1lb3V0cz4gdGltZW91dHM7CisgICAgICAgICAgICAgICAgZnJhbWUtPnNjcmlwdCgpLT5w
YXVzZVRpbWVvdXRzKHRpbWVvdXRzKTsKKyAgICAgICAgICAgICAgICBpZiAodGltZW91dHMpCisg
ICAgICAgICAgICAgICAgICAgIG1fcGF1c2VkVGltZW91dHMuYXBwZW5kKG1ha2VfcGFpcihSZWZQ
dHI8RnJhbWU+KGZyYW1lKSwgdGltZW91dHMudGFrZSgpKSk7CiAgICAgICAgICAgICB9CiAjZW5k
aWYKICAgICAgICAgfQpAQCAtNDQ4LDIwICs0NDYsMTYgQEAgUGFnZUdyb3VwTG9hZERlZmVycmVy
Ojp+UGFnZUdyb3VwTG9hZERlZmVycmVyKCkKIHsKICAgICBpZiAoIW1fd2FzRGVmZXJyaW5nVGlt
ZXJzKQogICAgICAgICBzZXREZWZlcnJpbmdUaW1lcnMoZmFsc2UpOwotICAgIAotICAgIHNpemVf
dCBjb3VudCA9IG1fZGVmZXJyZWRGcmFtZXMuc2l6ZSgpOwotICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgY291bnQ7ICsraSkKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9kZWZlcnJl
ZEZyYW1lcy5zaXplKCk7ICsraSkKICAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX2RlZmVycmVk
RnJhbWVzW2ldLT5wYWdlKCkpCiAgICAgICAgICAgICBwYWdlLT5zZXREZWZlcnNMb2FkaW5nKGZh
bHNlKTsKIAogI2lmICFQTEFURk9STShNQUMpCi0gICAgY291bnQgPSBtX3BhdXNlZFRpbWVvdXRz
LnNpemUoKTsKLQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7IGkrKykgewotICAg
ICAgICBKU0RPTVdpbmRvdyogd2luZG93ID0gdG9KU0RPTVdpbmRvdyhtX3BhdXNlZFRpbWVvdXRz
W2ldLmZpcnN0LmdldCgpKTsKLSAgICAgICAgaWYgKHdpbmRvdykKLSAgICAgICAgICAgIHdpbmRv
dy0+cmVzdW1lVGltZW91dHMobV9wYXVzZWRUaW1lb3V0c1tpXS5zZWNvbmQpOwotICAgICAgICBk
ZWxldGUgbV9wYXVzZWRUaW1lb3V0c1tpXS5zZWNvbmQ7CisgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBtX3BhdXNlZFRpbWVvdXRzLnNpemUoKTsgaSsrKSB7CisgICAgICAgIEZyYW1lKiBmcmFt
ZSA9IG1fcGF1c2VkVGltZW91dHNbaV0uZmlyc3QuZ2V0KCk7CisgICAgICAgIE93blB0cjxQYXVz
ZWRUaW1lb3V0cz4gdGltZW91dHMobV9wYXVzZWRUaW1lb3V0c1tpXS5zZWNvbmQpOworICAgICAg
ICBmcmFtZS0+c2NyaXB0KCktPnJlc3VtZVRpbWVvdXRzKHRpbWVvdXRzKTsKICAgICB9CiAjZW5k
aWYKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9KYXZhU2NyaXB0RGVidWdTZXJ2ZXIuY3Bw
IGIvV2ViQ29yZS9wYWdlL0phdmFTY3JpcHREZWJ1Z1NlcnZlci5jcHAKaW5kZXggNWZiZTFiOC4u
ZTVjNDQxMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0phdmFTY3JpcHREZWJ1Z1NlcnZlci5j
cHAKKysrIGIvV2ViQ29yZS9wYWdlL0phdmFTY3JpcHREZWJ1Z1NlcnZlci5jcHAKQEAgLTM5LDYg
KzM5LDcgQEAKICNpbmNsdWRlICJKYXZhU2NyaXB0RGVidWdMaXN0ZW5lci5oIgogI2luY2x1ZGUg
IlBhZ2UuaCIKICNpbmNsdWRlICJQYWdlR3JvdXAuaCIKKyNpbmNsdWRlICJQYXVzZWRUaW1lb3V0
cy5oIgogI2luY2x1ZGUgIlBsdWdpblZpZXcuaCIKICNpbmNsdWRlICJTY3JvbGxWaWV3LmgiCiAj
aW5jbHVkZSAiV2lkZ2V0LmgiCkBAIC03Myw2ICs3NCw3IEBAIEphdmFTY3JpcHREZWJ1Z1NlcnZl
cjo6fkphdmFTY3JpcHREZWJ1Z1NlcnZlcigpCiB7CiAgICAgZGVsZXRlQWxsVmFsdWVzKG1fcGFn
ZUxpc3RlbmVyc01hcCk7CiAgICAgZGVsZXRlQWxsVmFsdWVzKG1fYnJlYWtwb2ludHMpOworICAg
IGRlbGV0ZUFsbFZhbHVlcyhtX3BhdXNlZFRpbWVvdXRzKTsKIH0KIAogdm9pZCBKYXZhU2NyaXB0
RGVidWdTZXJ2ZXI6OmFkZExpc3RlbmVyKEphdmFTY3JpcHREZWJ1Z0xpc3RlbmVyKiBsaXN0ZW5l
cikKQEAgLTM1NiwxMCArMzU4LDE0IEBAIHZvaWQgSmF2YVNjcmlwdERlYnVnU2VydmVyOjpzZXRK
YXZhU2NyaXB0UGF1c2VkKEZyYW1lKiBmcmFtZSwgYm9vbCBwYXVzZWQpCiAgICAgZnJhbWUtPnNj
cmlwdCgpLT5zZXRQYXVzZWQocGF1c2VkKTsKIAogICAgIGlmIChKU0RPTVdpbmRvdyogd2luZG93
ID0gdG9KU0RPTVdpbmRvdyhmcmFtZSkpIHsKLSAgICAgICAgaWYgKHBhdXNlZCkKLSAgICAgICAg
ICAgIG1fcGF1c2VkVGltZW91dHMuc2V0KGZyYW1lLCB3aW5kb3ctPnBhdXNlVGltZW91dHMoKSk7
Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHdpbmRvdy0+cmVzdW1lVGltZW91dHMobV9wYXVz
ZWRUaW1lb3V0cy50YWtlKGZyYW1lKSk7CisgICAgICAgIGlmIChwYXVzZWQpIHsKKyAgICAgICAg
ICAgIE93blB0cjxQYXVzZWRUaW1lb3V0cz4gdGltZW91dHM7CisgICAgICAgICAgICB3aW5kb3ct
PnBhdXNlVGltZW91dHModGltZW91dHMpOworICAgICAgICAgICAgbV9wYXVzZWRUaW1lb3V0cy5z
ZXQoZnJhbWUsIHRpbWVvdXRzLnJlbGVhc2UoKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICBPd25QdHI8UGF1c2VkVGltZW91dHM+IHRpbWVvdXRzKG1fcGF1c2VkVGltZW91dHMudGFr
ZShmcmFtZSkpOworICAgICAgICAgICAgd2luZG93LT5yZXN1bWVUaW1lb3V0cyh0aW1lb3V0cyk7
CisgICAgICAgIH0KICAgICB9CiAKICAgICBzZXRKYXZhU2NyaXB0UGF1c2VkKGZyYW1lLT52aWV3
KCksIHBhdXNlZCk7Cg==
</data>
<flag name="review"
          id="10261"
          type_id="1"
          status="+"
          setter="ap"
    />
          </attachment>
      

    </bug>

</bugzilla>