<?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>65645</bug_id>
          
          <creation_ts>2011-08-03 15:02:27 -0700</creation_ts>
          <short_desc>Scroll animator changes to nail the framerate</short_desc>
          <delta_ts>2011-08-09 16:56:21 -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>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>0</everconfirmed>
          <reporter name="Scott Byer">scottbyer</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>jamesr</cc>
    
    <cc>rjkroege</cc>
    
    <cc>sam</cc>
    
    <cc>scottbyer</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>wjmaclean</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>446117</commentid>
    <comment_count>0</comment_count>
    <who name="Scott Byer">scottbyer</who>
    <bug_when>2011-08-03 15:02:27 -0700</bug_when>
    <thetext>Scroll animator changes to nail the framerate</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446120</commentid>
    <comment_count>1</comment_count>
      <attachid>102835</attachid>
    <who name="Scott Byer">scottbyer</who>
    <bug_when>2011-08-03 15:04:46 -0700</bug_when>
    <thetext>Created attachment 102835
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446123</commentid>
    <comment_count>2</comment_count>
      <attachid>102835</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-08-03 15:12:55 -0700</bug_when>
    <thetext>Comment on attachment 102835
Patch

Hmm, I didn&apos;t realize this was all Timer based.  You will not get a solid framerate off of Timers, no matter what you do.  Have you looked into use the requestAnimationFrame machinery?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446166</commentid>
    <comment_count>3</comment_count>
    <who name="Scott Byer">scottbyer</who>
    <bug_when>2011-08-03 15:58:25 -0700</bug_when>
    <thetext>Ah, so the idea would be to register an animation callback with the parent Document&apos;s ScriptedAnimationController instead of using the Timer directly? Are the frame rate tolerances for that tighter than for what I&apos;m doing with Timer? This gets the Timer use behaving pretty nicely.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446174</commentid>
    <comment_count>4</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-08-03 16:05:13 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Ah, so the idea would be to register an animation callback with the parent Document&apos;s ScriptedAnimationController instead of using the Timer directly?

Yep.

&gt; Are the frame rate tolerances for that tighter than for what I&apos;m doing with Timer? This gets the Timer use behaving pretty nicely.

The ScriptedAnimationController callbacks are tied directly into the paint/compositing loops and are vsync-driven when GPU composited.  Timers have no explicit links to the rendering loop, so they just fire whenever.  This might line up with the display loop, or (much more likely) it might have all sorts of aliasing issues if it&apos;s close to but not exactly synchronized with the display loop.  Think lots and lots of dropped and doubled frames.

One major difference is that the ScriptedAnimationController callbacks will not fire if the tab is not visible, so you need to be aware of that in your logic.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446179</commentid>
    <comment_count>5</comment_count>
    <who name="Scott Byer">scottbyer</who>
    <bug_when>2011-08-03 16:10:08 -0700</bug_when>
    <thetext>That shouldn&apos;t be a problem - the math in here is all time domain based - I will get one call when the tab becomes visible? I can write up a test to cover that case. Let me give the ScriptedAnimationController a shot.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446181</commentid>
    <comment_count>6</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-08-03 16:15:35 -0700</bug_when>
    <thetext>Yup, you get one call when switching back.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446186</commentid>
    <comment_count>7</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-08-03 16:18:18 -0700</bug_when>
    <thetext>Note that in layout tests, in order to get those callbacks to fire you&apos;ll have to manually kick the display system by calling layoutTestController.display().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446913</commentid>
    <comment_count>8</comment_count>
    <who name="Scott Byer">scottbyer</who>
    <bug_when>2011-08-04 17:17:44 -0700</bug_when>
    <thetext>Getting back to this; is it appropriate for something in platform to be using something from dom? Part of the problem is getting to the Document to register the animation callback; it seems like a layering violation. It seems like a lot of plumbing would be needed before this code could be switched over.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446915</commentid>
    <comment_count>9</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-08-04 17:21:01 -0700</bug_when>
    <thetext>Ah yes, you&apos;re right - that would be a layering violation :( if platform/ depended on dom/ (or page/), and it would be a lot of plumbing to hook that all up.  Still, in the end it would produce a much better visual result if we were to get that working.

Would you like to proceed with this patch in the meantime?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446916</commentid>
    <comment_count>10</comment_count>
    <who name="Scott Byer">scottbyer</who>
    <bug_when>2011-08-04 17:23:52 -0700</bug_when>
    <thetext>Yes, I would. For the longer term, I think I&apos;d want to talk over potential designs on how scrolling could be hooked up to the animator; there&apos;s another layering violation I keep running across in the code that should be cleaned up at the same time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446928</commentid>
    <comment_count>11</comment_count>
      <attachid>102835</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-08-04 17:43:08 -0700</bug_when>
    <thetext>Comment on attachment 102835
Patch

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

In that case I think this looks fine, although I left some comments for you to consider before landing.

&gt; Source/WebCore/platform/ScrollAnimatorNone.cpp:346
&gt;      double currentTime = WTF::currentTime();

could you use WTF::monotonicallyIncreasingTime() instead for this logic?  That&apos;s what WebCore::Timer is based off of.  The main differences between it and WTF::currentTime() are:
- monotonicallyIncreasingTime() does not go backwards when the system clock is adjusted (which is rare in practice, but does happen due to NTP and such)
- monotonicallyIncreasingTime() does not go crazy on windows when the clocks drift (which is not so rare in practice)
- monotonicallyIncreasingTime() can be a lot cheaper to call on some systems, primarily windows

this might not be an appropriate change for this patch, but something to think about for the future.

&gt; Source/WebCore/platform/ScrollAnimatorNone.cpp:347
&gt; +    PerAxisData* data = (timer == &amp;m_horizontalData.m_animationTimer) ? &amp;m_horizontalData : &amp;m_verticalData;

this stuff is slightly confusing - could you perhaps use a temporary bool to keep track of which scrollbar we&apos;re updating here, and maybe use const references to the relevant PerAxisData instead of a pointer (since it seems we don&apos;t mutate it at all).

Do we never use the same timer for both scrollbars?

&gt; Source/WebCore/platform/ScrollAnimatorNone.cpp:350
&gt; +        double nextTimerInterval = max(kMinimumTimerInterval, deltaToNextFrame - WTF::currentTime() + currentTime);

this seems to be trying to account for the time delta between the top of this function and hitting this line, which is a little confusing - do you expect the operations in animateScroll() to be expensive enough to have to worry about this delta?  querying the clock is not necessarily cheap on all platforms</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447361</commentid>
    <comment_count>12</comment_count>
      <attachid>103097</attachid>
    <who name="Scott Byer">scottbyer</who>
    <bug_when>2011-08-05 12:51:10 -0700</bug_when>
    <thetext>Created attachment 103097
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447363</commentid>
    <comment_count>13</comment_count>
    <who name="Scott Byer">scottbyer</who>
    <bug_when>2011-08-05 12:52:22 -0700</bug_when>
    <thetext>Cleaned up a bit, went to the single timer for both directions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447371</commentid>
    <comment_count>14</comment_count>
      <attachid>103097</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-05 12:59:14 -0700</bug_when>
    <thetext>Comment on attachment 103097
Patch

Attachment 103097 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/9323064</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447413</commentid>
    <comment_count>15</comment_count>
      <attachid>103111</attachid>
    <who name="Scott Byer">scottbyer</who>
    <bug_when>2011-08-05 14:15:53 -0700</bug_when>
    <thetext>Created attachment 103111
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447546</commentid>
    <comment_count>16</comment_count>
      <attachid>103111</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-08-05 19:18:43 -0700</bug_when>
    <thetext>Comment on attachment 103111
Patch

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

R=me, one nit.  You don&apos;t have to upload another patch for review, just upload a new patch that has &quot;Reviewed by James Robinson.&quot; in the ChangeLogs instead of NOBODY (OOPS!) and mark the patch cq? but not review? and any committer can flag it for review. I&apos;ve come down with some sort of illness so I might not be able to get back to this soon.

&gt; Source/WebCore/platform/ScrollAnimatorNone.cpp:318
&gt; +    bool result = data.updateDataFromParameters(orientation, step, multiplier, scrollableSize, WTF::monotonicallyIncreasingTime(), &amp;parameters);

nitpick: &quot;result&quot; is not very illuminating.  what does it mean when updateDataFromParameters() returns false?  was there some problem with the input parameters, or internal error in the calculations? did the scroll happen or not?  I&apos;d suggest renaming this variable to describe what it means.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448093</commentid>
    <comment_count>17</comment_count>
      <attachid>103264</attachid>
    <who name="Scott Byer">scottbyer</who>
    <bug_when>2011-08-08 10:42:02 -0700</bug_when>
    <thetext>Created attachment 103264
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448286</commentid>
    <comment_count>18</comment_count>
      <attachid>103264</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-08 15:01:28 -0700</bug_when>
    <thetext>Comment on attachment 103264
Patch

Clearing flags on attachment: 103264

Committed r92639: &lt;http://trac.webkit.org/changeset/92639&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448287</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-08 15:01:34 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102835</attachid>
            <date>2011-08-03 15:04:46 -0700</date>
            <delta_ts>2011-08-05 12:51:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65645-20110803150445.patch</filename>
            <type>text/plain</type>
            <size>9936</size>
            <attacher name="Scott Byer">scottbyer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTIyMjYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzZmY5MmNmNDQwYmJhZWVi
MGNjMjAzOWVlZDhlNWVlNDI0YWE5YWFlLi45MzZmZTlhNDZhZTExODRhY2E2ZmU5NTQxZjFmNTI1
YzA4MTQwNTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMDgtMDMgIFNjb3R0
IEJ5ZXIgIDxzY290dGJ5ZXJAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFNjcm9sbCBhbmltYXRv
ciBjaGFuZ2VzIHRvIG5haWwgdGhlIGZyYW1lcmF0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjU2NDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBQYXJ0aWFsIHRlc3QgaW4gU2Nyb2xsQW5pbWF0b3JOb25l
VGVzdDo6RW5hYmxlZC4KKworICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdG9yTm9uZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck5vbmU6OlBlckF4aXNEYXRhOjp1
cGRhdGVEYXRhRnJvbVBhcmFtZXRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0
b3JOb25lOjpQZXJBeGlzRGF0YTo6YW5pbWF0ZVNjcm9sbCk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxBbmltYXRvck5vbmU6OnNjcm9sbCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmlt
YXRvck5vbmU6OmFuaW1hdGlvblRpbWVyRmlyZWQpOgorCiAyMDExLTA4LTAyICBGaWxpcCBQaXps
byAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgSlNDIEdDIGlzIGZhciB0b28gY29uc2Vy
dmF0aXZlIGFib3V0IGdyb3dpbmcgdGhlIGhlYXAgc2l6ZSwgcGFydGljdWxhcmx5CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvck5vbmUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3JOb25lLmNwcAppbmRleCBhMTBjZjAx
MWZmYTkyNDZmNDcyNmFmYTgzNDI3ZmE5ODY3M2M2NDUwLi4zZjQxNGMyZDBmY2M1OGYzODhlNWE0
MTNlYWU3MWNmYmM0OWE4Zjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxBbmltYXRvck5vbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bEFuaW1hdG9yTm9uZS5jcHAKQEAgLTQ4LDEwICs0OCwxMiBAQCB1c2luZyBuYW1lc3BhY2Ugc3Rk
OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBkb3VibGUga1RpY2tUaW1lID0gLjAx
NjY7CitzdGF0aWMgZG91YmxlIGtGcmFtZVJhdGUgPSA2MDsKK3N0YXRpYyBkb3VibGUga1RpY2tU
aW1lID0gMSAvIGtGcmFtZVJhdGU7CitzdGF0aWMgZG91YmxlIGtNaW5pbXVtVGltZXJJbnRlcnZh
bCA9IC4wMDE7CiAKIC8vIFRoaXMgaXMgdXNlZCB0byBzZXQgdGhlIHRpbWVyIGRlbGF5IC0gaXQg
bmVlZHMgdG8gYmUgc2xpZ2h0bHkgc21hbGxlciB0aGFuIHRoZSB0aWNrIGNvdW50IHRvIGxlYXZl
IHNvbWUgb3ZlcmhlYWQuCi1zdGF0aWMgZG91YmxlIGtBbmltYXRpb25UaW1lckRlbGF5ID0gMC4w
MTU7CitzdGF0aWMgZG91YmxlIGtBbmltYXRpb25UaW1lckRlbGF5ID0ga1RpY2tUaW1lICogMC45
OwogCiBQYXNzT3duUHRyPFNjcm9sbEFuaW1hdG9yPiBTY3JvbGxBbmltYXRvcjo6Y3JlYXRlKFNj
cm9sbGFibGVBcmVhKiBzY3JvbGxhYmxlQXJlYSkKIHsKQEAgLTE5NCw3ICsxOTYsNyBAQCBib29s
IFNjcm9sbEFuaW1hdG9yTm9uZTo6UGVyQXhpc0RhdGE6OnVwZGF0ZURhdGFGcm9tUGFyYW1ldGVy
cyhTY3JvbGxiYXJPcmllbnRhdAogICAgICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgdGhl
IHRpbWUgZnJvbSB0aGUgZXZlbnQgdGhhdCBnb3QgdXMgaGVyZS4KICAgICAgICAgbV9zdGFydFRp
bWUgPSBjdXJyZW50VGltZSAtIGtUaWNrVGltZSAvIDI7CiAgICAgICAgIG1fc3RhcnRQb3NpdGlv
biA9ICptX2N1cnJlbnRQb3NpdGlvbjsKLSAgICAgICAgbV9sYXN0QW5pbWF0aW9uVGltZSA9IGN1
cnJlbnRUaW1lOworICAgICAgICBtX2xhc3RBbmltYXRpb25UaW1lID0gbV9zdGFydFRpbWU7CiAg
ICAgfQogICAgIG1fc3RhcnRWZWxvY2l0eSA9IG1fY3VycmVudFZlbG9jaXR5OwogCkBAIC0yNDAs
OCArMjQyLDEwIEBAIGJvb2wgU2Nyb2xsQW5pbWF0b3JOb25lOjpQZXJBeGlzRGF0YTo6dXBkYXRl
RGF0YUZyb21QYXJhbWV0ZXJzKFNjcm9sbGJhck9yaWVudGF0CiAvLyBGSVhNRTogQWRkIGluIGph
bmsgZGV0ZWN0aW9uIHRyYWNlIGV2ZW50cyBpbnRvIHRoaXMgZnVuY3Rpb24uCiBib29sIFNjcm9s
bEFuaW1hdG9yTm9uZTo6UGVyQXhpc0RhdGE6OmFuaW1hdGVTY3JvbGwoZG91YmxlIGN1cnJlbnRU
aW1lKQogewotICAgIC8vIEdldCB0aGUgY3VycmVudCB0aW1lOyBncmFiYmluZyB0aGUgY3VycmVu
dCB0aW1lIG9uY2UgaGVscHMga2VlcCBhIGNvbnNpc3RlbnQgaGVhcnRiZWF0LgogICAgIGRvdWJs
ZSBsYXN0U2Nyb2xsSW50ZXJ2YWwgPSBjdXJyZW50VGltZSAtIG1fbGFzdEFuaW1hdGlvblRpbWU7
CisgICAgaWYgKGxhc3RTY3JvbGxJbnRlcnZhbCA8IGtNaW5pbXVtVGltZXJJbnRlcnZhbCkKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisKICAgICBtX2xhc3RBbmltYXRpb25UaW1lID0gY3VycmVudFRp
bWU7CiAKICAgICBkb3VibGUgZGVsdGFUaW1lID0gY3VycmVudFRpbWUgLSBtX3N0YXJ0VGltZTsK
QEAgLTMxNiwxMiArMzIwLDggQEAgYm9vbCBTY3JvbGxBbmltYXRvck5vbmU6OnNjcm9sbChTY3Jv
bGxiYXJPcmllbnRhdGlvbiBvcmllbnRhdGlvbiwgU2Nyb2xsR3JhbnVsYXIKIAogICAgIGZsb2F0
IHNjcm9sbGFibGVTaXplID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1fc2Nyb2xsYWJsZUFyZWEtPnNj
cm9sbFNpemUob3JpZW50YXRpb24pKTsKICAgICBib29sIHJlc3VsdCA9IGRhdGEtPnVwZGF0ZURh
dGFGcm9tUGFyYW1ldGVycyhvcmllbnRhdGlvbiwgc3RlcCwgbXVsdGlwbGllciwgc2Nyb2xsYWJs
ZVNpemUsIFdURjo6Y3VycmVudFRpbWUoKSwgJnBhcmFtZXRlcnMpOwotICAgIGlmICghZGF0YS0+
bV9hbmltYXRpb25UaW1lci5pc0FjdGl2ZSgpKSB7Ci0gICAgICAgIHJlc3VsdCAmPSBkYXRhLT5h
bmltYXRlU2Nyb2xsKFdURjo6Y3VycmVudFRpbWUoKSk7Ci0gICAgICAgIGlmIChyZXN1bHQpCi0g
ICAgICAgICAgICBkYXRhLT5tX2FuaW1hdGlvblRpbWVyLnN0YXJ0T25lU2hvdChrQW5pbWF0aW9u
VGltZXJEZWxheSk7Ci0gICAgfQotICAgIG5vdGl0eVBvc2l0aW9uQ2hhbmdlZCgpOworICAgIGlm
ICghZGF0YS0+bV9hbmltYXRpb25UaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICBhbmltYXRpb25U
aW1lckZpcmVkKCZkYXRhLT5tX2FuaW1hdGlvblRpbWVyKTsKICAgICByZXR1cm4gcmVzdWx0Owog
fQogCkBAIC0zNDQsMTIgKzM0NCwxMSBAQCB2b2lkIFNjcm9sbEFuaW1hdG9yTm9uZTo6c2Nyb2xs
VG9PZmZzZXRXaXRob3V0QW5pbWF0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIG9mZnNldAogdm9pZCBT
Y3JvbGxBbmltYXRvck5vbmU6OmFuaW1hdGlvblRpbWVyRmlyZWQoVGltZXI8U2Nyb2xsQW5pbWF0
b3JOb25lPiogdGltZXIpCiB7CiAgICAgZG91YmxlIGN1cnJlbnRUaW1lID0gV1RGOjpjdXJyZW50
VGltZSgpOwotICAgIGlmICgodGltZXIgPT0gJm1faG9yaXpvbnRhbERhdGEubV9hbmltYXRpb25U
aW1lcikgPwotICAgICAgICBtX2hvcml6b250YWxEYXRhLmFuaW1hdGVTY3JvbGwoY3VycmVudFRp
bWUpIDoKLSAgICAgICAgbV92ZXJ0aWNhbERhdGEuYW5pbWF0ZVNjcm9sbChjdXJyZW50VGltZSkp
Ci0gICAgewotICAgICAgICBkb3VibGUgZGVsdGEgPSBXVEY6OmN1cnJlbnRUaW1lKCkgLSBjdXJy
ZW50VGltZTsKLSAgICAgICAgdGltZXItPnN0YXJ0T25lU2hvdChrQW5pbWF0aW9uVGltZXJEZWxh
eSAtIGRlbHRhKTsKKyAgICBQZXJBeGlzRGF0YSogZGF0YSA9ICh0aW1lciA9PSAmbV9ob3Jpem9u
dGFsRGF0YS5tX2FuaW1hdGlvblRpbWVyKSA/ICZtX2hvcml6b250YWxEYXRhIDogJm1fdmVydGlj
YWxEYXRhOworICAgIGRvdWJsZSBkZWx0YVRvTmV4dEZyYW1lID0gY2VpbCgoY3VycmVudFRpbWUg
LSBkYXRhLT5tX3N0YXJ0VGltZSkgKiBrRnJhbWVSYXRlKSAvIGtGcmFtZVJhdGUgLSAoY3VycmVu
dFRpbWUgLSBkYXRhLT5tX3N0YXJ0VGltZSk7CisgICAgaWYgKGRhdGEtPmFuaW1hdGVTY3JvbGwo
Y3VycmVudFRpbWUgKyBkZWx0YVRvTmV4dEZyYW1lKSkgeworICAgICAgICBkb3VibGUgbmV4dFRp
bWVySW50ZXJ2YWwgPSBtYXgoa01pbmltdW1UaW1lckludGVydmFsLCBkZWx0YVRvTmV4dEZyYW1l
IC0gV1RGOjpjdXJyZW50VGltZSgpICsgY3VycmVudFRpbWUpOworICAgICAgICB0aW1lci0+c3Rh
cnRPbmVTaG90KG5leHRUaW1lckludGVydmFsKTsKICAgICB9CiAgICAgbm90aXR5UG9zaXRpb25D
aGFuZ2VkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDEyODNlMjUwY2JiZjA1
MTI3NDZlZTY4NTBmOTgzYTM2YTM2MGUyZjMuLmUwMzNiZWQ1MjRlZWJhMTMyMzNkYjk0OGU0NDA3
YTRlMDM4NGU4NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTEtMDgtMDMgIFNjb3R0IEJ5ZXIgIDxzY290dGJ5ZXJAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFNjcm9sbCBhbmltYXRvciBjaGFuZ2VzIHRvIG5haWwgdGhlIGZyYW1lcmF0ZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjU2NDUKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHRlc3RzL1Njcm9sbEFu
aW1hdG9yTm9uZVRlc3QuY3BwOgorICAgICAgICAoVEVTVCk6CisKIDIwMTEtMDgtMDIgIFpoZW55
YW8gTW8gIDx6bW9AZ29vZ2xlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBtYXJrIFNlbGVj
dFBvcHVwTWVudVRlc3QuU2VsZWN0SXRlbUtleUV2ZW50IGFzIGZsYWt5LCBnYXJkZW5lciBzdHVm
Zi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvU2Nyb2xsQW5pbWF0
b3JOb25lVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1Njcm9sbEFuaW1h
dG9yTm9uZVRlc3QuY3BwCmluZGV4IDgzYjNiODkyOGI2YTdjMDY3ZThmM2NiNzcxYWE5MGEyNDBj
ZTliOWUuLmEwOGYxZjJkNmFkMThhNjc2MDE4YmEyMDk0MWRkYzdiYTYxMjMwMjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvU2Nyb2xsQW5pbWF0b3JOb25lVGVzdC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9TY3JvbGxBbmltYXRvck5vbmVU
ZXN0LmNwcApAQCAtOTMsNTcgKzkzLDU3IEBAIHB1YmxpYzoKIFRFU1QoU2Nyb2xsQW5pbWF0b3JF
bmFibGVkLCBFbmFibGVkKQogewogICAgIE1vY2tTY3JvbGxhYmxlQXJlYSBzY3JvbGxhYmxlQXJl
YSh0cnVlKTsKLSAgICBNb2NrU2Nyb2xsQW5pbWF0b3JOb25lIHNjcm9sbEFuaW1hdG9yQ2hyb21p
dW0oJnNjcm9sbGFibGVBcmVhKTsKKyAgICBNb2NrU2Nyb2xsQW5pbWF0b3JOb25lIHNjcm9sbEFu
aW1hdG9yTm9uZSgmc2Nyb2xsYWJsZUFyZWEpOwogCiAgICAgRVhQRUNUX0NBTEwoc2Nyb2xsYWJs
ZUFyZWEsIHNjcm9sbFNpemUoXykpLlRpbWVzKEF0TGVhc3QoMSkpLldpbGxSZXBlYXRlZGx5KFJl
dHVybigxMDAwKSk7Ci0gICAgRVhQRUNUX0NBTEwoc2Nyb2xsYWJsZUFyZWEsIHNldFNjcm9sbE9m
ZnNldChfKSkuVGltZXMoQXRMZWFzdCgxKSk7CisgICAgRVhQRUNUX0NBTEwoc2Nyb2xsYWJsZUFy
ZWEsIHNldFNjcm9sbE9mZnNldChfKSkuVGltZXMoMyk7CiAKLSAgICBzY3JvbGxBbmltYXRvckNo
cm9taXVtLnNjcm9sbChIb3Jpem9udGFsU2Nyb2xsYmFyLCBTY3JvbGxCeUxpbmUsIDEwMCwgMSk7
Ci0gICAgRVhQRUNUX05FKDEwMCwgc2Nyb2xsQW5pbWF0b3JDaHJvbWl1bS5jdXJyZW50WCgpKTsK
LSAgICBFWFBFQ1RfTkUoMCwgc2Nyb2xsQW5pbWF0b3JDaHJvbWl1bS5jdXJyZW50WCgpKTsKLSAg
ICBFWFBFQ1RfRVEoMCwgc2Nyb2xsQW5pbWF0b3JDaHJvbWl1bS5jdXJyZW50WSgpKTsKLSAgICBz
Y3JvbGxBbmltYXRvckNocm9taXVtLnJlc2V0KCk7CisgICAgc2Nyb2xsQW5pbWF0b3JOb25lLnNj
cm9sbChIb3Jpem9udGFsU2Nyb2xsYmFyLCBTY3JvbGxCeUxpbmUsIDEwMCwgMSk7CisgICAgRVhQ
RUNUX05FKDEwMCwgc2Nyb2xsQW5pbWF0b3JOb25lLmN1cnJlbnRYKCkpOworICAgIEVYUEVDVF9O
RSgwLCBzY3JvbGxBbmltYXRvck5vbmUuY3VycmVudFgoKSk7CisgICAgRVhQRUNUX0VRKDAsIHNj
cm9sbEFuaW1hdG9yTm9uZS5jdXJyZW50WSgpKTsKKyAgICBzY3JvbGxBbmltYXRvck5vbmUucmVz
ZXQoKTsKIAotICAgIHNjcm9sbEFuaW1hdG9yQ2hyb21pdW0uc2Nyb2xsKEhvcml6b250YWxTY3Jv
bGxiYXIsIFNjcm9sbEJ5UGFnZSwgMTAwLCAxKTsKLSAgICBFWFBFQ1RfTkUoMTAwLCBzY3JvbGxB
bmltYXRvckNocm9taXVtLmN1cnJlbnRYKCkpOwotICAgIEVYUEVDVF9ORSgwLCBzY3JvbGxBbmlt
YXRvckNocm9taXVtLmN1cnJlbnRYKCkpOwotICAgIEVYUEVDVF9FUSgwLCBzY3JvbGxBbmltYXRv
ckNocm9taXVtLmN1cnJlbnRZKCkpOwotICAgIHNjcm9sbEFuaW1hdG9yQ2hyb21pdW0ucmVzZXQo
KTsKKyAgICBzY3JvbGxBbmltYXRvck5vbmUuc2Nyb2xsKEhvcml6b250YWxTY3JvbGxiYXIsIFNj
cm9sbEJ5UGFnZSwgMTAwLCAxKTsKKyAgICBFWFBFQ1RfTkUoMTAwLCBzY3JvbGxBbmltYXRvck5v
bmUuY3VycmVudFgoKSk7CisgICAgRVhQRUNUX05FKDAsIHNjcm9sbEFuaW1hdG9yTm9uZS5jdXJy
ZW50WCgpKTsKKyAgICBFWFBFQ1RfRVEoMCwgc2Nyb2xsQW5pbWF0b3JOb25lLmN1cnJlbnRZKCkp
OworICAgIHNjcm9sbEFuaW1hdG9yTm9uZS5yZXNldCgpOwogCi0gICAgc2Nyb2xsQW5pbWF0b3JD
aHJvbWl1bS5zY3JvbGwoSG9yaXpvbnRhbFNjcm9sbGJhciwgU2Nyb2xsQnlQaXhlbCwgNCwgMjUp
OwotICAgIEVYUEVDVF9ORSgxMDAsIHNjcm9sbEFuaW1hdG9yQ2hyb21pdW0uY3VycmVudFgoKSk7
Ci0gICAgRVhQRUNUX05FKDAsIHNjcm9sbEFuaW1hdG9yQ2hyb21pdW0uY3VycmVudFgoKSk7Ci0g
ICAgRVhQRUNUX0VRKDAsIHNjcm9sbEFuaW1hdG9yQ2hyb21pdW0uY3VycmVudFkoKSk7Ci0gICAg
c2Nyb2xsQW5pbWF0b3JDaHJvbWl1bS5yZXNldCgpOworICAgIHNjcm9sbEFuaW1hdG9yTm9uZS5z
Y3JvbGwoSG9yaXpvbnRhbFNjcm9sbGJhciwgU2Nyb2xsQnlQaXhlbCwgNCwgMjUpOworICAgIEVY
UEVDVF9ORSgxMDAsIHNjcm9sbEFuaW1hdG9yTm9uZS5jdXJyZW50WCgpKTsKKyAgICBFWFBFQ1Rf
TkUoMCwgc2Nyb2xsQW5pbWF0b3JOb25lLmN1cnJlbnRYKCkpOworICAgIEVYUEVDVF9FUSgwLCBz
Y3JvbGxBbmltYXRvck5vbmUuY3VycmVudFkoKSk7CisgICAgc2Nyb2xsQW5pbWF0b3JOb25lLnJl
c2V0KCk7CiB9CiAKIFRFU1QoU2Nyb2xsQW5pbWF0b3JFbmFibGVkLCBEaXNhYmxlZCkKIHsKICAg
ICBNb2NrU2Nyb2xsYWJsZUFyZWEgc2Nyb2xsYWJsZUFyZWEoZmFsc2UpOwotICAgIE1vY2tTY3Jv
bGxBbmltYXRvck5vbmUgc2Nyb2xsQW5pbWF0b3JDaHJvbWl1bSgmc2Nyb2xsYWJsZUFyZWEpOwor
ICAgIE1vY2tTY3JvbGxBbmltYXRvck5vbmUgc2Nyb2xsQW5pbWF0b3JOb25lKCZzY3JvbGxhYmxl
QXJlYSk7CiAKICAgICBFWFBFQ1RfQ0FMTChzY3JvbGxhYmxlQXJlYSwgc2Nyb2xsU2l6ZShfKSku
VGltZXMoQXRMZWFzdCgxKSkuV2lsbFJlcGVhdGVkbHkoUmV0dXJuKDEwMDApKTsKLSAgICBFWFBF
Q1RfQ0FMTChzY3JvbGxhYmxlQXJlYSwgc2V0U2Nyb2xsT2Zmc2V0KF8pKS5UaW1lcyhBdExlYXN0
KDEpKTsKLQotICAgIHNjcm9sbEFuaW1hdG9yQ2hyb21pdW0uc2Nyb2xsKEhvcml6b250YWxTY3Jv
bGxiYXIsIFNjcm9sbEJ5TGluZSwgMTAwLCAxKTsKLSAgICBFWFBFQ1RfRVEoMTAwLCBzY3JvbGxB
bmltYXRvckNocm9taXVtLmN1cnJlbnRYKCkpOwotICAgIEVYUEVDVF9FUSgwLCBzY3JvbGxBbmlt
YXRvckNocm9taXVtLmN1cnJlbnRZKCkpOwotICAgIHNjcm9sbEFuaW1hdG9yQ2hyb21pdW0ucmVz
ZXQoKTsKLQotICAgIHNjcm9sbEFuaW1hdG9yQ2hyb21pdW0uc2Nyb2xsKEhvcml6b250YWxTY3Jv
bGxiYXIsIFNjcm9sbEJ5UGFnZSwgMTAwLCAxKTsKLSAgICBFWFBFQ1RfRVEoMTAwLCBzY3JvbGxB
bmltYXRvckNocm9taXVtLmN1cnJlbnRYKCkpOwotICAgIEVYUEVDVF9FUSgwLCBzY3JvbGxBbmlt
YXRvckNocm9taXVtLmN1cnJlbnRZKCkpOwotICAgIHNjcm9sbEFuaW1hdG9yQ2hyb21pdW0ucmVz
ZXQoKTsKLQotICAgIHNjcm9sbEFuaW1hdG9yQ2hyb21pdW0uc2Nyb2xsKEhvcml6b250YWxTY3Jv
bGxiYXIsIFNjcm9sbEJ5RG9jdW1lbnQsIDEwMCwgMSk7Ci0gICAgRVhQRUNUX0VRKDEwMCwgc2Ny
b2xsQW5pbWF0b3JDaHJvbWl1bS5jdXJyZW50WCgpKTsKLSAgICBFWFBFQ1RfRVEoMCwgc2Nyb2xs
QW5pbWF0b3JDaHJvbWl1bS5jdXJyZW50WSgpKTsKLSAgICBzY3JvbGxBbmltYXRvckNocm9taXVt
LnJlc2V0KCk7Ci0KLSAgICBzY3JvbGxBbmltYXRvckNocm9taXVtLnNjcm9sbChIb3Jpem9udGFs
U2Nyb2xsYmFyLCBTY3JvbGxCeVBpeGVsLCAxMDAsIDEpOwotICAgIEVYUEVDVF9FUSgxMDAsIHNj
cm9sbEFuaW1hdG9yQ2hyb21pdW0uY3VycmVudFgoKSk7Ci0gICAgRVhQRUNUX0VRKDAsIHNjcm9s
bEFuaW1hdG9yQ2hyb21pdW0uY3VycmVudFkoKSk7Ci0gICAgc2Nyb2xsQW5pbWF0b3JDaHJvbWl1
bS5yZXNldCgpOworICAgIEVYUEVDVF9DQUxMKHNjcm9sbGFibGVBcmVhLCBzZXRTY3JvbGxPZmZz
ZXQoXykpLlRpbWVzKDQpOworCisgICAgc2Nyb2xsQW5pbWF0b3JOb25lLnNjcm9sbChIb3Jpem9u
dGFsU2Nyb2xsYmFyLCBTY3JvbGxCeUxpbmUsIDEwMCwgMSk7CisgICAgRVhQRUNUX0VRKDEwMCwg
c2Nyb2xsQW5pbWF0b3JOb25lLmN1cnJlbnRYKCkpOworICAgIEVYUEVDVF9FUSgwLCBzY3JvbGxB
bmltYXRvck5vbmUuY3VycmVudFkoKSk7CisgICAgc2Nyb2xsQW5pbWF0b3JOb25lLnJlc2V0KCk7
CisKKyAgICBzY3JvbGxBbmltYXRvck5vbmUuc2Nyb2xsKEhvcml6b250YWxTY3JvbGxiYXIsIFNj
cm9sbEJ5UGFnZSwgMTAwLCAxKTsKKyAgICBFWFBFQ1RfRVEoMTAwLCBzY3JvbGxBbmltYXRvck5v
bmUuY3VycmVudFgoKSk7CisgICAgRVhQRUNUX0VRKDAsIHNjcm9sbEFuaW1hdG9yTm9uZS5jdXJy
ZW50WSgpKTsKKyAgICBzY3JvbGxBbmltYXRvck5vbmUucmVzZXQoKTsKKworICAgIHNjcm9sbEFu
aW1hdG9yTm9uZS5zY3JvbGwoSG9yaXpvbnRhbFNjcm9sbGJhciwgU2Nyb2xsQnlEb2N1bWVudCwg
MTAwLCAxKTsKKyAgICBFWFBFQ1RfRVEoMTAwLCBzY3JvbGxBbmltYXRvck5vbmUuY3VycmVudFgo
KSk7CisgICAgRVhQRUNUX0VRKDAsIHNjcm9sbEFuaW1hdG9yTm9uZS5jdXJyZW50WSgpKTsKKyAg
ICBzY3JvbGxBbmltYXRvck5vbmUucmVzZXQoKTsKKworICAgIHNjcm9sbEFuaW1hdG9yTm9uZS5z
Y3JvbGwoSG9yaXpvbnRhbFNjcm9sbGJhciwgU2Nyb2xsQnlQaXhlbCwgMTAwLCAxKTsKKyAgICBF
WFBFQ1RfRVEoMTAwLCBzY3JvbGxBbmltYXRvck5vbmUuY3VycmVudFgoKSk7CisgICAgRVhQRUNU
X0VRKDAsIHNjcm9sbEFuaW1hdG9yTm9uZS5jdXJyZW50WSgpKTsKKyAgICBzY3JvbGxBbmltYXRv
ck5vbmUucmVzZXQoKTsKIH0KIAogY2xhc3MgU2Nyb2xsQW5pbWF0b3JOb25lVGVzdCA6IHB1Ymxp
YyB0ZXN0aW5nOjpUZXN0IHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103097</attachid>
            <date>2011-08-05 12:51:10 -0700</date>
            <delta_ts>2011-08-05 14:15:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65645-20110805125109.patch</filename>
            <type>text/plain</type>
            <size>13429</size>
            <attacher name="Scott Byer">scottbyer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTI0OTUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxMWQ2NmJiMDQ4NTI3YjYz
OTRhMTc2M2FlOWNiYTUwNGIwMDQ4ZjFiLi42ZDU3MzJlOGViNDQ4YmYzZDYyN2Y1MTA2MDQwNjcy
NGQ0MWM4MjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTEtMDgtMDUgIFNjb3R0
IEJ5ZXIgIDxzY290dGJ5ZXJAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFNjcm9sbCBhbmltYXRv
ciBjaGFuZ2VzIHRvIG5haWwgdGhlIGZyYW1lcmF0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjU2NDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBQYXJ0aWFsIHRlc3QgaW4gU2Nyb2xsQW5pbWF0b3JOb25l
VGVzdDo6RW5hYmxlZC4KKworICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdG9yTm9uZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck5vbmU6OlBlckF4aXNEYXRhOjpQ
ZXJBeGlzRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck5vbmU6OlBlckF4
aXNEYXRhOjp1cGRhdGVEYXRhRnJvbVBhcmFtZXRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsQW5pbWF0b3JOb25lOjpQZXJBeGlzRGF0YTo6YW5pbWF0ZVNjcm9sbCk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxBbmltYXRvck5vbmU6OlNjcm9sbEFuaW1hdG9yTm9uZSk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck5vbmU6On5TY3JvbGxBbmltYXRvck5vbmUpOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JOb25lOjpzY3JvbGwpOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsQW5pbWF0b3JOb25lOjpzY3JvbGxUb09mZnNldFdpdGhvdXRBbmltYXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JOb25lOjphbmltYXRpb25UaW1lckZp
cmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTm9uZTo6c3RvcEFuaW1hdGlv
blRpbWVySWZOZWVkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdG9yTm9uZS5o
OgorCiAyMDExLTA4LTA1ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAK
ICAgICAgICAgUmVtb3ZlIFBsdWdpbkhhbHRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3JOb25lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbEFuaW1hdG9yTm9uZS5jcHAKaW5kZXggYTEwY2YwMTFmZmE5MjQ2ZjQ3MjZhZmE4MzQy
N2ZhOTg2NzNjNjQ1MC4uMjMyNzAwZWZmOGQ2N2UzMzUxNmJmNzQzY2MzNmFkNTFjN2IyYmNmYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3JOb25lLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvck5vbmUuY3BwCkBA
IC00OCwxMCArNDgsOSBAQCB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLXN0YXRpYyBkb3VibGUga1RpY2tUaW1lID0gLjAxNjY7Ci0KLS8vIFRoaXMgaXMgdXNl
ZCB0byBzZXQgdGhlIHRpbWVyIGRlbGF5IC0gaXQgbmVlZHMgdG8gYmUgc2xpZ2h0bHkgc21hbGxl
ciB0aGFuIHRoZSB0aWNrIGNvdW50IHRvIGxlYXZlIHNvbWUgb3ZlcmhlYWQuCi1zdGF0aWMgZG91
YmxlIGtBbmltYXRpb25UaW1lckRlbGF5ID0gMC4wMTU7CitzdGF0aWMgZG91YmxlIGtGcmFtZVJh
dGUgPSA2MDsKK3N0YXRpYyBkb3VibGUga1RpY2tUaW1lID0gMSAvIGtGcmFtZVJhdGU7CitzdGF0
aWMgZG91YmxlIGtNaW5pbXVtVGltZXJJbnRlcnZhbCA9IC4wMDE7CiAKIFBhc3NPd25QdHI8U2Ny
b2xsQW5pbWF0b3I+IFNjcm9sbEFuaW1hdG9yOjpjcmVhdGUoU2Nyb2xsYWJsZUFyZWEqIHNjcm9s
bGFibGVBcmVhKQogewpAQCAtMTMxLDcgKzEzMCw2IEBAIGRvdWJsZSBTY3JvbGxBbmltYXRvck5v
bmU6OlBlckF4aXNEYXRhOjpjdXJ2ZURlcml2YXRpdmVBdChDdXJ2ZSBjdXJ2ZSwgZG91YmxlIHQp
CiAKIFNjcm9sbEFuaW1hdG9yTm9uZTo6UGVyQXhpc0RhdGE6OlBlckF4aXNEYXRhKFNjcm9sbEFu
aW1hdG9yTm9uZSogcGFyZW50LCBmbG9hdCogY3VycmVudFBvc2l0aW9uKQogICAgIDogbV9jdXJy
ZW50UG9zaXRpb24oY3VycmVudFBvc2l0aW9uKQotICAgICwgbV9hbmltYXRpb25UaW1lcihwYXJl
bnQsICZTY3JvbGxBbmltYXRvck5vbmU6OmFuaW1hdGlvblRpbWVyRmlyZWQpCiB7CiAgICAgcmVz
ZXQoKTsKIH0KQEAgLTE5NCw3ICsxOTIsNyBAQCBib29sIFNjcm9sbEFuaW1hdG9yTm9uZTo6UGVy
QXhpc0RhdGE6OnVwZGF0ZURhdGFGcm9tUGFyYW1ldGVycyhTY3JvbGxiYXJPcmllbnRhdAogICAg
ICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgdGhlIHRpbWUgZnJvbSB0aGUgZXZlbnQgdGhh
dCBnb3QgdXMgaGVyZS4KICAgICAgICAgbV9zdGFydFRpbWUgPSBjdXJyZW50VGltZSAtIGtUaWNr
VGltZSAvIDI7CiAgICAgICAgIG1fc3RhcnRQb3NpdGlvbiA9ICptX2N1cnJlbnRQb3NpdGlvbjsK
LSAgICAgICAgbV9sYXN0QW5pbWF0aW9uVGltZSA9IGN1cnJlbnRUaW1lOworICAgICAgICBtX2xh
c3RBbmltYXRpb25UaW1lID0gbV9zdGFydFRpbWU7CiAgICAgfQogICAgIG1fc3RhcnRWZWxvY2l0
eSA9IG1fY3VycmVudFZlbG9jaXR5OwogCkBAIC0yNDAsOCArMjM4LDEwIEBAIGJvb2wgU2Nyb2xs
QW5pbWF0b3JOb25lOjpQZXJBeGlzRGF0YTo6dXBkYXRlRGF0YUZyb21QYXJhbWV0ZXJzKFNjcm9s
bGJhck9yaWVudGF0CiAvLyBGSVhNRTogQWRkIGluIGphbmsgZGV0ZWN0aW9uIHRyYWNlIGV2ZW50
cyBpbnRvIHRoaXMgZnVuY3Rpb24uCiBib29sIFNjcm9sbEFuaW1hdG9yTm9uZTo6UGVyQXhpc0Rh
dGE6OmFuaW1hdGVTY3JvbGwoZG91YmxlIGN1cnJlbnRUaW1lKQogewotICAgIC8vIEdldCB0aGUg
Y3VycmVudCB0aW1lOyBncmFiYmluZyB0aGUgY3VycmVudCB0aW1lIG9uY2UgaGVscHMga2VlcCBh
IGNvbnNpc3RlbnQgaGVhcnRiZWF0LgogICAgIGRvdWJsZSBsYXN0U2Nyb2xsSW50ZXJ2YWwgPSBj
dXJyZW50VGltZSAtIG1fbGFzdEFuaW1hdGlvblRpbWU7CisgICAgaWYgKGxhc3RTY3JvbGxJbnRl
cnZhbCA8IGtNaW5pbXVtVGltZXJJbnRlcnZhbCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKICAg
ICBtX2xhc3RBbmltYXRpb25UaW1lID0gY3VycmVudFRpbWU7CiAKICAgICBkb3VibGUgZGVsdGFU
aW1lID0gY3VycmVudFRpbWUgLSBtX3N0YXJ0VGltZTsKQEAgLTI3NCwxMyArMjc0LDEzIEBAIFNj
cm9sbEFuaW1hdG9yTm9uZTo6U2Nyb2xsQW5pbWF0b3JOb25lKFNjcm9sbGFibGVBcmVhKiBzY3Jv
bGxhYmxlQXJlYSkKICAgICA6IFNjcm9sbEFuaW1hdG9yKHNjcm9sbGFibGVBcmVhKQogICAgICwg
bV9ob3Jpem9udGFsRGF0YSh0aGlzLCAmbV9jdXJyZW50UG9zWCkKICAgICAsIG1fdmVydGljYWxE
YXRhKHRoaXMsICZtX2N1cnJlbnRQb3NZKQorICAgICwgbV9hbmltYXRpb25UaW1lcih0aGlzLCAm
U2Nyb2xsQW5pbWF0b3JOb25lOjphbmltYXRpb25UaW1lckZpcmVkKQogewogfQogCiBTY3JvbGxB
bmltYXRvck5vbmU6On5TY3JvbGxBbmltYXRvck5vbmUoKQogewotICAgIHN0b3BBbmltYXRpb25U
aW1lcklmTmVlZGVkKCZtX2hvcml6b250YWxEYXRhKTsKLSAgICBzdG9wQW5pbWF0aW9uVGltZXJJ
Zk5lZWRlZCgmbV92ZXJ0aWNhbERhdGEpOworICAgIHN0b3BBbmltYXRpb25UaW1lcklmTmVlZGVk
KCk7CiB9CiAKIGJvb2wgU2Nyb2xsQW5pbWF0b3JOb25lOjpzY3JvbGwoU2Nyb2xsYmFyT3JpZW50
YXRpb24gb3JpZW50YXRpb24sIFNjcm9sbEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBmbG9hdCBz
dGVwLCBmbG9hdCBtdWx0aXBsaWVyKQpAQCAtMzExLDI0ICszMTEsMjEgQEAgYm9vbCBTY3JvbGxB
bmltYXRvck5vbmU6OnNjcm9sbChTY3JvbGxiYXJPcmllbnRhdGlvbiBvcmllbnRhdGlvbiwgU2Ny
b2xsR3JhbnVsYXIKICAgICBpZiAoIXBhcmFtZXRlcnMubV9pc0VuYWJsZWQpCiAgICAgICAgIHJl
dHVybiBTY3JvbGxBbmltYXRvcjo6c2Nyb2xsKG9yaWVudGF0aW9uLCBncmFudWxhcml0eSwgc3Rl
cCwgbXVsdGlwbGllcik7CiAKLSAgICAvLyBUaGlzIGlzIGFuIGFuaW1hdGFibGUgc2Nyb2xsLiBD
YWxjdWxhdGUgdGhlIHNjcm9sbCBkZWx0YS4KLSAgICBQZXJBeGlzRGF0YSogZGF0YSA9IChvcmll
bnRhdGlvbiA9PSBWZXJ0aWNhbFNjcm9sbGJhcikgPyAmbV92ZXJ0aWNhbERhdGEgOiAmbV9ob3Jp
em9udGFsRGF0YTsKLQorICAgIC8vIFRoaXMgaXMgYW4gYW5pbWF0YWJsZSBzY3JvbGwuIFNldCB0
aGUgYW5pbWF0aW9uIGluIG1vdGlvbiB1c2luZyB0aGUgYXBwcm9wcmlhdGUgcGFyYW1ldGVycy4K
ICAgICBmbG9hdCBzY3JvbGxhYmxlU2l6ZSA9IHN0YXRpY19jYXN0PGZsb2F0PihtX3Njcm9sbGFi
bGVBcmVhLT5zY3JvbGxTaXplKG9yaWVudGF0aW9uKSk7Ci0gICAgYm9vbCByZXN1bHQgPSBkYXRh
LT51cGRhdGVEYXRhRnJvbVBhcmFtZXRlcnMob3JpZW50YXRpb24sIHN0ZXAsIG11bHRpcGxpZXIs
IHNjcm9sbGFibGVTaXplLCBXVEY6OmN1cnJlbnRUaW1lKCksICZwYXJhbWV0ZXJzKTsKLSAgICBp
ZiAoIWRhdGEtPm1fYW5pbWF0aW9uVGltZXIuaXNBY3RpdmUoKSkgewotICAgICAgICByZXN1bHQg
Jj0gZGF0YS0+YW5pbWF0ZVNjcm9sbChXVEY6OmN1cnJlbnRUaW1lKCkpOwotICAgICAgICBpZiAo
cmVzdWx0KQotICAgICAgICAgICAgZGF0YS0+bV9hbmltYXRpb25UaW1lci5zdGFydE9uZVNob3Qo
a0FuaW1hdGlvblRpbWVyRGVsYXkpOworCisgICAgUGVyQXhpc0RhdGEmIGRhdGEgPSAob3JpZW50
YXRpb24gPT0gVmVydGljYWxTY3JvbGxiYXIpID8gbV92ZXJ0aWNhbERhdGEgOiBtX2hvcml6b250
YWxEYXRhOworICAgIGJvb2wgcmVzdWx0ID0gZGF0YS51cGRhdGVEYXRhRnJvbVBhcmFtZXRlcnMo
b3JpZW50YXRpb24sIHN0ZXAsIG11bHRpcGxpZXIsIHNjcm9sbGFibGVTaXplLCBXVEY6Om1vbm90
b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpLCAmcGFyYW1ldGVycyk7CisgICAgaWYgKHJlc3VsdCAm
JiAhbV9hbmltYXRpb25UaW1lci5pc0FjdGl2ZSgpKSB7CisgICAgICAgIG1fc3RhcnRUaW1lID0g
ZGF0YS5tX3N0YXJ0VGltZTsKKyAgICAgICAgYW5pbWF0aW9uVGltZXJGaXJlZCgmbV9hbmltYXRp
b25UaW1lcik7CiAgICAgfQotICAgIG5vdGl0eVBvc2l0aW9uQ2hhbmdlZCgpOwogICAgIHJldHVy
biByZXN1bHQ7CiB9CiAKIHZvaWQgU2Nyb2xsQW5pbWF0b3JOb25lOjpzY3JvbGxUb09mZnNldFdp
dGhvdXRBbmltYXRpb24oY29uc3QgRmxvYXRQb2ludCYgb2Zmc2V0KQogewotICAgIHN0b3BBbmlt
YXRpb25UaW1lcklmTmVlZGVkKCZtX2hvcml6b250YWxEYXRhKTsKLSAgICBzdG9wQW5pbWF0aW9u
VGltZXJJZk5lZWRlZCgmbV92ZXJ0aWNhbERhdGEpOworICAgIHN0b3BBbmltYXRpb25UaW1lcklm
TmVlZGVkKCk7CiAKICAgICBtX2hvcml6b250YWxEYXRhLnJlc2V0KCk7CiAgICAgKm1faG9yaXpv
bnRhbERhdGEubV9jdXJyZW50UG9zaXRpb24gPSBvZmZzZXQueCgpOwpAQCAtMzQzLDIxICszNDAs
MjUgQEAgdm9pZCBTY3JvbGxBbmltYXRvck5vbmU6OnNjcm9sbFRvT2Zmc2V0V2l0aG91dEFuaW1h
dGlvbihjb25zdCBGbG9hdFBvaW50JiBvZmZzZXQKIAogdm9pZCBTY3JvbGxBbmltYXRvck5vbmU6
OmFuaW1hdGlvblRpbWVyRmlyZWQoVGltZXI8U2Nyb2xsQW5pbWF0b3JOb25lPiogdGltZXIpCiB7
Ci0gICAgZG91YmxlIGN1cnJlbnRUaW1lID0gV1RGOjpjdXJyZW50VGltZSgpOwotICAgIGlmICgo
dGltZXIgPT0gJm1faG9yaXpvbnRhbERhdGEubV9hbmltYXRpb25UaW1lcikgPwotICAgICAgICBt
X2hvcml6b250YWxEYXRhLmFuaW1hdGVTY3JvbGwoY3VycmVudFRpbWUpIDoKLSAgICAgICAgbV92
ZXJ0aWNhbERhdGEuYW5pbWF0ZVNjcm9sbChjdXJyZW50VGltZSkpCi0gICAgewotICAgICAgICBk
b3VibGUgZGVsdGEgPSBXVEY6OmN1cnJlbnRUaW1lKCkgLSBjdXJyZW50VGltZTsKLSAgICAgICAg
dGltZXItPnN0YXJ0T25lU2hvdChrQW5pbWF0aW9uVGltZXJEZWxheSAtIGRlbHRhKTsKKyAgICBk
b3VibGUgY3VycmVudFRpbWUgPSBXVEY6Om1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOwor
ICAgIGRvdWJsZSBkZWx0YVRvTmV4dEZyYW1lID0gY2VpbCgoY3VycmVudFRpbWUgLSBtX3N0YXJ0
VGltZSkgKiBrRnJhbWVSYXRlKSAvIGtGcmFtZVJhdGUgLSAoY3VycmVudFRpbWUgLSBtX3N0YXJ0
VGltZSk7CisKKyAgICBib29sIGNvbnRpbnVlQW5pbWF0aW9uID0gZmFsc2U7CisgICAgaWYgKG1f
aG9yaXpvbnRhbERhdGEubV9zdGFydFRpbWUgJiYgbV9ob3Jpem9udGFsRGF0YS5hbmltYXRlU2Ny
b2xsKGN1cnJlbnRUaW1lICsgZGVsdGFUb05leHRGcmFtZSkpCisgICAgICAgIGNvbnRpbnVlQW5p
bWF0aW9uID0gdHJ1ZTsKKyAgICBpZiAobV92ZXJ0aWNhbERhdGEubV9zdGFydFRpbWUgJiYgbV92
ZXJ0aWNhbERhdGEuYW5pbWF0ZVNjcm9sbChjdXJyZW50VGltZSArIGRlbHRhVG9OZXh0RnJhbWUp
KQorICAgICAgICBjb250aW51ZUFuaW1hdGlvbiA9IHRydWU7CisgICAgaWYgKGNvbnRpbnVlQW5p
bWF0aW9uKSB7CisgICAgICAgIGRvdWJsZSBuZXh0VGltZXJJbnRlcnZhbCA9IG1heChrTWluaW11
bVRpbWVySW50ZXJ2YWwsIGRlbHRhVG9OZXh0RnJhbWUpOworICAgICAgICB0aW1lci0+c3RhcnRP
bmVTaG90KG5leHRUaW1lckludGVydmFsKTsKICAgICB9CiAgICAgbm90aXR5UG9zaXRpb25DaGFu
Z2VkKCk7CiB9CiAKLXZvaWQgU2Nyb2xsQW5pbWF0b3JOb25lOjpzdG9wQW5pbWF0aW9uVGltZXJJ
Zk5lZWRlZChQZXJBeGlzRGF0YSogZGF0YSkKK3ZvaWQgU2Nyb2xsQW5pbWF0b3JOb25lOjpzdG9w
QW5pbWF0aW9uVGltZXJJZk5lZWRlZCgpCiB7Ci0gICAgaWYgKGRhdGEtPm1fYW5pbWF0aW9uVGlt
ZXIuaXNBY3RpdmUoKSkKLSAgICAgICAgZGF0YS0+bV9hbmltYXRpb25UaW1lci5zdG9wKCk7Cisg
ICAgaWYgKG1fYW5pbWF0aW9uVGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgbV9hbmltYXRpb25U
aW1lci5zdG9wKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yTm9uZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3JOb25lLmgKaW5kZXggM2U3ZGQxMDZhZGUyMDk0YzA4
YTNiZjc3NDljZmQ2Mjg0ZDJkMWRiYy4uODMyMzVkMTc2MWJjNmEwMDZjNTNmOTk1YzcyYzdkMjhh
ZTQ1NGJlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0
b3JOb25lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3JOb25l
LmgKQEAgLTExMiwxNCArMTEyLDE2IEBAIHByb3RlY3RlZDoKICAgICAgICAgQ3VydmUgbV9yZWxl
YXNlQ3VydmU7CiAKICAgICAgICAgU2Nyb2xsYmFyT3JpZW50YXRpb24gbV9vcmllbnRhdGlvbjsK
LSAgICAgICAgVGltZXI8U2Nyb2xsQW5pbWF0b3JOb25lPiBtX2FuaW1hdGlvblRpbWVyOwogICAg
IH07CiAKICAgICB2b2lkIGFuaW1hdGlvblRpbWVyRmlyZWQoVGltZXI8U2Nyb2xsQW5pbWF0b3JO
b25lPiopOwotICAgIHZvaWQgc3RvcEFuaW1hdGlvblRpbWVySWZOZWVkZWQoUGVyQXhpc0RhdGEq
KTsKKyAgICB2b2lkIHN0b3BBbmltYXRpb25UaW1lcklmTmVlZGVkKCk7CiAKICAgICBQZXJBeGlz
RGF0YSBtX2hvcml6b250YWxEYXRhOwogICAgIFBlckF4aXNEYXRhIG1fdmVydGljYWxEYXRhOwor
CisgICAgZG91YmxlIG1fc3RhcnRUaW1lOworICAgIFRpbWVyPFNjcm9sbEFuaW1hdG9yTm9uZT4g
bV9hbmltYXRpb25UaW1lcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKaW5kZXggNTExYmE1MDAxM2QwY2MyN2JmNjE4ZmRmMGJmMTY1YjFhNWY2
Yjg4Zi4uZTI3ZmQ5MWFlMDQ0MjQ0MTE4MTFiODhkMzZhNzI0MjY2Njg3YWY0ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMS0wOC0wNSAgU2NvdHQgQnll
ciAgPHNjb3R0YnllckBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU2Nyb2xsIGFuaW1hdG9yIGNo
YW5nZXMgdG8gbmFpbCB0aGUgZnJhbWVyYXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD02NTY0NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogdGVzdHMvU2Nyb2xsQW5pbWF0b3JOb25lVGVzdC5jcHA6Cisg
ICAgICAgIChURVNUKToKKwogMjAxMS0wOC0wNSAgSm9jaGVuIEVpc2luZ2VyICA8am9jaGVuQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBJbnRyb2R1Y2UgYSBuZXcgUmVzb3VyY2VSZXF1ZXN0OjpU
YXJnZXRUeXBlIGZvciBYSFJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL1Njcm9sbEFuaW1hdG9yTm9uZVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9TY3JvbGxBbmltYXRvck5vbmVUZXN0LmNwcAppbmRleCA4M2IzYjg5MjhiNmE3YzA2N2U4
ZjNjYjc3MWFhOTBhMjQwY2U5YjllLi5hMDhmMWYyZDZhZDE4YTY3NjAxOGJhMjA5NDFkZGM3YmE2
MTIzMDI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1Njcm9sbEFu
aW1hdG9yTm9uZVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvU2Ny
b2xsQW5pbWF0b3JOb25lVGVzdC5jcHAKQEAgLTkzLDU3ICs5Myw1NyBAQCBwdWJsaWM6CiBURVNU
KFNjcm9sbEFuaW1hdG9yRW5hYmxlZCwgRW5hYmxlZCkKIHsKICAgICBNb2NrU2Nyb2xsYWJsZUFy
ZWEgc2Nyb2xsYWJsZUFyZWEodHJ1ZSk7Ci0gICAgTW9ja1Njcm9sbEFuaW1hdG9yTm9uZSBzY3Jv
bGxBbmltYXRvckNocm9taXVtKCZzY3JvbGxhYmxlQXJlYSk7CisgICAgTW9ja1Njcm9sbEFuaW1h
dG9yTm9uZSBzY3JvbGxBbmltYXRvck5vbmUoJnNjcm9sbGFibGVBcmVhKTsKIAogICAgIEVYUEVD
VF9DQUxMKHNjcm9sbGFibGVBcmVhLCBzY3JvbGxTaXplKF8pKS5UaW1lcyhBdExlYXN0KDEpKS5X
aWxsUmVwZWF0ZWRseShSZXR1cm4oMTAwMCkpOwotICAgIEVYUEVDVF9DQUxMKHNjcm9sbGFibGVB
cmVhLCBzZXRTY3JvbGxPZmZzZXQoXykpLlRpbWVzKEF0TGVhc3QoMSkpOworICAgIEVYUEVDVF9D
QUxMKHNjcm9sbGFibGVBcmVhLCBzZXRTY3JvbGxPZmZzZXQoXykpLlRpbWVzKDMpOwogCi0gICAg
c2Nyb2xsQW5pbWF0b3JDaHJvbWl1bS5zY3JvbGwoSG9yaXpvbnRhbFNjcm9sbGJhciwgU2Nyb2xs
QnlMaW5lLCAxMDAsIDEpOwotICAgIEVYUEVDVF9ORSgxMDAsIHNjcm9sbEFuaW1hdG9yQ2hyb21p
dW0uY3VycmVudFgoKSk7Ci0gICAgRVhQRUNUX05FKDAsIHNjcm9sbEFuaW1hdG9yQ2hyb21pdW0u
Y3VycmVudFgoKSk7Ci0gICAgRVhQRUNUX0VRKDAsIHNjcm9sbEFuaW1hdG9yQ2hyb21pdW0uY3Vy
cmVudFkoKSk7Ci0gICAgc2Nyb2xsQW5pbWF0b3JDaHJvbWl1bS5yZXNldCgpOworICAgIHNjcm9s
bEFuaW1hdG9yTm9uZS5zY3JvbGwoSG9yaXpvbnRhbFNjcm9sbGJhciwgU2Nyb2xsQnlMaW5lLCAx
MDAsIDEpOworICAgIEVYUEVDVF9ORSgxMDAsIHNjcm9sbEFuaW1hdG9yTm9uZS5jdXJyZW50WCgp
KTsKKyAgICBFWFBFQ1RfTkUoMCwgc2Nyb2xsQW5pbWF0b3JOb25lLmN1cnJlbnRYKCkpOworICAg
IEVYUEVDVF9FUSgwLCBzY3JvbGxBbmltYXRvck5vbmUuY3VycmVudFkoKSk7CisgICAgc2Nyb2xs
QW5pbWF0b3JOb25lLnJlc2V0KCk7CiAKLSAgICBzY3JvbGxBbmltYXRvckNocm9taXVtLnNjcm9s
bChIb3Jpem9udGFsU2Nyb2xsYmFyLCBTY3JvbGxCeVBhZ2UsIDEwMCwgMSk7Ci0gICAgRVhQRUNU
X05FKDEwMCwgc2Nyb2xsQW5pbWF0b3JDaHJvbWl1bS5jdXJyZW50WCgpKTsKLSAgICBFWFBFQ1Rf
TkUoMCwgc2Nyb2xsQW5pbWF0b3JDaHJvbWl1bS5jdXJyZW50WCgpKTsKLSAgICBFWFBFQ1RfRVEo
MCwgc2Nyb2xsQW5pbWF0b3JDaHJvbWl1bS5jdXJyZW50WSgpKTsKLSAgICBzY3JvbGxBbmltYXRv
ckNocm9taXVtLnJlc2V0KCk7CisgICAgc2Nyb2xsQW5pbWF0b3JOb25lLnNjcm9sbChIb3Jpem9u
dGFsU2Nyb2xsYmFyLCBTY3JvbGxCeVBhZ2UsIDEwMCwgMSk7CisgICAgRVhQRUNUX05FKDEwMCwg
c2Nyb2xsQW5pbWF0b3JOb25lLmN1cnJlbnRYKCkpOworICAgIEVYUEVDVF9ORSgwLCBzY3JvbGxB
bmltYXRvck5vbmUuY3VycmVudFgoKSk7CisgICAgRVhQRUNUX0VRKDAsIHNjcm9sbEFuaW1hdG9y
Tm9uZS5jdXJyZW50WSgpKTsKKyAgICBzY3JvbGxBbmltYXRvck5vbmUucmVzZXQoKTsKIAotICAg
IHNjcm9sbEFuaW1hdG9yQ2hyb21pdW0uc2Nyb2xsKEhvcml6b250YWxTY3JvbGxiYXIsIFNjcm9s
bEJ5UGl4ZWwsIDQsIDI1KTsKLSAgICBFWFBFQ1RfTkUoMTAwLCBzY3JvbGxBbmltYXRvckNocm9t
aXVtLmN1cnJlbnRYKCkpOwotICAgIEVYUEVDVF9ORSgwLCBzY3JvbGxBbmltYXRvckNocm9taXVt
LmN1cnJlbnRYKCkpOwotICAgIEVYUEVDVF9FUSgwLCBzY3JvbGxBbmltYXRvckNocm9taXVtLmN1
cnJlbnRZKCkpOwotICAgIHNjcm9sbEFuaW1hdG9yQ2hyb21pdW0ucmVzZXQoKTsKKyAgICBzY3Jv
bGxBbmltYXRvck5vbmUuc2Nyb2xsKEhvcml6b250YWxTY3JvbGxiYXIsIFNjcm9sbEJ5UGl4ZWws
IDQsIDI1KTsKKyAgICBFWFBFQ1RfTkUoMTAwLCBzY3JvbGxBbmltYXRvck5vbmUuY3VycmVudFgo
KSk7CisgICAgRVhQRUNUX05FKDAsIHNjcm9sbEFuaW1hdG9yTm9uZS5jdXJyZW50WCgpKTsKKyAg
ICBFWFBFQ1RfRVEoMCwgc2Nyb2xsQW5pbWF0b3JOb25lLmN1cnJlbnRZKCkpOworICAgIHNjcm9s
bEFuaW1hdG9yTm9uZS5yZXNldCgpOwogfQogCiBURVNUKFNjcm9sbEFuaW1hdG9yRW5hYmxlZCwg
RGlzYWJsZWQpCiB7CiAgICAgTW9ja1Njcm9sbGFibGVBcmVhIHNjcm9sbGFibGVBcmVhKGZhbHNl
KTsKLSAgICBNb2NrU2Nyb2xsQW5pbWF0b3JOb25lIHNjcm9sbEFuaW1hdG9yQ2hyb21pdW0oJnNj
cm9sbGFibGVBcmVhKTsKKyAgICBNb2NrU2Nyb2xsQW5pbWF0b3JOb25lIHNjcm9sbEFuaW1hdG9y
Tm9uZSgmc2Nyb2xsYWJsZUFyZWEpOwogCiAgICAgRVhQRUNUX0NBTEwoc2Nyb2xsYWJsZUFyZWEs
IHNjcm9sbFNpemUoXykpLlRpbWVzKEF0TGVhc3QoMSkpLldpbGxSZXBlYXRlZGx5KFJldHVybigx
MDAwKSk7Ci0gICAgRVhQRUNUX0NBTEwoc2Nyb2xsYWJsZUFyZWEsIHNldFNjcm9sbE9mZnNldChf
KSkuVGltZXMoQXRMZWFzdCgxKSk7Ci0KLSAgICBzY3JvbGxBbmltYXRvckNocm9taXVtLnNjcm9s
bChIb3Jpem9udGFsU2Nyb2xsYmFyLCBTY3JvbGxCeUxpbmUsIDEwMCwgMSk7Ci0gICAgRVhQRUNU
X0VRKDEwMCwgc2Nyb2xsQW5pbWF0b3JDaHJvbWl1bS5jdXJyZW50WCgpKTsKLSAgICBFWFBFQ1Rf
RVEoMCwgc2Nyb2xsQW5pbWF0b3JDaHJvbWl1bS5jdXJyZW50WSgpKTsKLSAgICBzY3JvbGxBbmlt
YXRvckNocm9taXVtLnJlc2V0KCk7Ci0KLSAgICBzY3JvbGxBbmltYXRvckNocm9taXVtLnNjcm9s
bChIb3Jpem9udGFsU2Nyb2xsYmFyLCBTY3JvbGxCeVBhZ2UsIDEwMCwgMSk7Ci0gICAgRVhQRUNU
X0VRKDEwMCwgc2Nyb2xsQW5pbWF0b3JDaHJvbWl1bS5jdXJyZW50WCgpKTsKLSAgICBFWFBFQ1Rf
RVEoMCwgc2Nyb2xsQW5pbWF0b3JDaHJvbWl1bS5jdXJyZW50WSgpKTsKLSAgICBzY3JvbGxBbmlt
YXRvckNocm9taXVtLnJlc2V0KCk7Ci0KLSAgICBzY3JvbGxBbmltYXRvckNocm9taXVtLnNjcm9s
bChIb3Jpem9udGFsU2Nyb2xsYmFyLCBTY3JvbGxCeURvY3VtZW50LCAxMDAsIDEpOwotICAgIEVY
UEVDVF9FUSgxMDAsIHNjcm9sbEFuaW1hdG9yQ2hyb21pdW0uY3VycmVudFgoKSk7Ci0gICAgRVhQ
RUNUX0VRKDAsIHNjcm9sbEFuaW1hdG9yQ2hyb21pdW0uY3VycmVudFkoKSk7Ci0gICAgc2Nyb2xs
QW5pbWF0b3JDaHJvbWl1bS5yZXNldCgpOwotCi0gICAgc2Nyb2xsQW5pbWF0b3JDaHJvbWl1bS5z
Y3JvbGwoSG9yaXpvbnRhbFNjcm9sbGJhciwgU2Nyb2xsQnlQaXhlbCwgMTAwLCAxKTsKLSAgICBF
WFBFQ1RfRVEoMTAwLCBzY3JvbGxBbmltYXRvckNocm9taXVtLmN1cnJlbnRYKCkpOwotICAgIEVY
UEVDVF9FUSgwLCBzY3JvbGxBbmltYXRvckNocm9taXVtLmN1cnJlbnRZKCkpOwotICAgIHNjcm9s
bEFuaW1hdG9yQ2hyb21pdW0ucmVzZXQoKTsKKyAgICBFWFBFQ1RfQ0FMTChzY3JvbGxhYmxlQXJl
YSwgc2V0U2Nyb2xsT2Zmc2V0KF8pKS5UaW1lcyg0KTsKKworICAgIHNjcm9sbEFuaW1hdG9yTm9u
ZS5zY3JvbGwoSG9yaXpvbnRhbFNjcm9sbGJhciwgU2Nyb2xsQnlMaW5lLCAxMDAsIDEpOworICAg
IEVYUEVDVF9FUSgxMDAsIHNjcm9sbEFuaW1hdG9yTm9uZS5jdXJyZW50WCgpKTsKKyAgICBFWFBF
Q1RfRVEoMCwgc2Nyb2xsQW5pbWF0b3JOb25lLmN1cnJlbnRZKCkpOworICAgIHNjcm9sbEFuaW1h
dG9yTm9uZS5yZXNldCgpOworCisgICAgc2Nyb2xsQW5pbWF0b3JOb25lLnNjcm9sbChIb3Jpem9u
dGFsU2Nyb2xsYmFyLCBTY3JvbGxCeVBhZ2UsIDEwMCwgMSk7CisgICAgRVhQRUNUX0VRKDEwMCwg
c2Nyb2xsQW5pbWF0b3JOb25lLmN1cnJlbnRYKCkpOworICAgIEVYUEVDVF9FUSgwLCBzY3JvbGxB
bmltYXRvck5vbmUuY3VycmVudFkoKSk7CisgICAgc2Nyb2xsQW5pbWF0b3JOb25lLnJlc2V0KCk7
CisKKyAgICBzY3JvbGxBbmltYXRvck5vbmUuc2Nyb2xsKEhvcml6b250YWxTY3JvbGxiYXIsIFNj
cm9sbEJ5RG9jdW1lbnQsIDEwMCwgMSk7CisgICAgRVhQRUNUX0VRKDEwMCwgc2Nyb2xsQW5pbWF0
b3JOb25lLmN1cnJlbnRYKCkpOworICAgIEVYUEVDVF9FUSgwLCBzY3JvbGxBbmltYXRvck5vbmUu
Y3VycmVudFkoKSk7CisgICAgc2Nyb2xsQW5pbWF0b3JOb25lLnJlc2V0KCk7CisKKyAgICBzY3Jv
bGxBbmltYXRvck5vbmUuc2Nyb2xsKEhvcml6b250YWxTY3JvbGxiYXIsIFNjcm9sbEJ5UGl4ZWws
IDEwMCwgMSk7CisgICAgRVhQRUNUX0VRKDEwMCwgc2Nyb2xsQW5pbWF0b3JOb25lLmN1cnJlbnRY
KCkpOworICAgIEVYUEVDVF9FUSgwLCBzY3JvbGxBbmltYXRvck5vbmUuY3VycmVudFkoKSk7Cisg
ICAgc2Nyb2xsQW5pbWF0b3JOb25lLnJlc2V0KCk7CiB9CiAKIGNsYXNzIFNjcm9sbEFuaW1hdG9y
Tm9uZVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103111</attachid>
            <date>2011-08-05 14:15:53 -0700</date>
            <delta_ts>2011-08-08 10:41:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65645-20110805141552.patch</filename>
            <type>text/plain</type>
            <size>13722</size>
            <attacher name="Scott Byer">scottbyer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTI1MDIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwYWJkNjhmNzkwODRiMTZi
ZTA0MTI1YWQ5ZjM0NTA2MWNlOWIxMmRlLi5hMGJkMWY2ZWUzNzJiYTI4ZDNjMzg1MDgzZGYzMTky
YzBkODNmZjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTEtMDgtMDUgIFNjb3R0
IEJ5ZXIgIDxzY290dGJ5ZXJAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFNjcm9sbCBhbmltYXRv
ciBjaGFuZ2VzIHRvIG5haWwgdGhlIGZyYW1lcmF0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjU2NDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBQYXJ0aWFsIHRlc3QgaW4gU2Nyb2xsQW5pbWF0b3JOb25l
VGVzdDo6RW5hYmxlZC4KKworICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdG9yTm9uZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck5vbmU6OlBlckF4aXNEYXRhOjpQ
ZXJBeGlzRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck5vbmU6OlBlckF4
aXNEYXRhOjp1cGRhdGVEYXRhRnJvbVBhcmFtZXRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsQW5pbWF0b3JOb25lOjpQZXJBeGlzRGF0YTo6YW5pbWF0ZVNjcm9sbCk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxBbmltYXRvck5vbmU6OlNjcm9sbEFuaW1hdG9yTm9uZSk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck5vbmU6On5TY3JvbGxBbmltYXRvck5vbmUpOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JOb25lOjpzY3JvbGwpOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsQW5pbWF0b3JOb25lOjpzY3JvbGxUb09mZnNldFdpdGhvdXRBbmltYXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JOb25lOjphbmltYXRpb25UaW1lckZp
cmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTm9uZTo6c3RvcEFuaW1hdGlv
blRpbWVySWZOZWVkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdG9yTm9uZS5o
OgorCiAyMDExLTA4LTA1ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAK
ICAgICAgICAgRml4IENocm9taXVtIGJ1aWxkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3JOb25lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbEFuaW1hdG9yTm9uZS5jcHAKaW5kZXggYTEwY2YwMTFmZmE5MjQ2ZjQ3MjZhZmE4MzQy
N2ZhOTg2NzNjNjQ1MC4uMjMyNzAwZWZmOGQ2N2UzMzUxNmJmNzQzY2MzNmFkNTFjN2IyYmNmYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3JOb25lLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvck5vbmUuY3BwCkBA
IC00OCwxMCArNDgsOSBAQCB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLXN0YXRpYyBkb3VibGUga1RpY2tUaW1lID0gLjAxNjY7Ci0KLS8vIFRoaXMgaXMgdXNl
ZCB0byBzZXQgdGhlIHRpbWVyIGRlbGF5IC0gaXQgbmVlZHMgdG8gYmUgc2xpZ2h0bHkgc21hbGxl
ciB0aGFuIHRoZSB0aWNrIGNvdW50IHRvIGxlYXZlIHNvbWUgb3ZlcmhlYWQuCi1zdGF0aWMgZG91
YmxlIGtBbmltYXRpb25UaW1lckRlbGF5ID0gMC4wMTU7CitzdGF0aWMgZG91YmxlIGtGcmFtZVJh
dGUgPSA2MDsKK3N0YXRpYyBkb3VibGUga1RpY2tUaW1lID0gMSAvIGtGcmFtZVJhdGU7CitzdGF0
aWMgZG91YmxlIGtNaW5pbXVtVGltZXJJbnRlcnZhbCA9IC4wMDE7CiAKIFBhc3NPd25QdHI8U2Ny
b2xsQW5pbWF0b3I+IFNjcm9sbEFuaW1hdG9yOjpjcmVhdGUoU2Nyb2xsYWJsZUFyZWEqIHNjcm9s
bGFibGVBcmVhKQogewpAQCAtMTMxLDcgKzEzMCw2IEBAIGRvdWJsZSBTY3JvbGxBbmltYXRvck5v
bmU6OlBlckF4aXNEYXRhOjpjdXJ2ZURlcml2YXRpdmVBdChDdXJ2ZSBjdXJ2ZSwgZG91YmxlIHQp
CiAKIFNjcm9sbEFuaW1hdG9yTm9uZTo6UGVyQXhpc0RhdGE6OlBlckF4aXNEYXRhKFNjcm9sbEFu
aW1hdG9yTm9uZSogcGFyZW50LCBmbG9hdCogY3VycmVudFBvc2l0aW9uKQogICAgIDogbV9jdXJy
ZW50UG9zaXRpb24oY3VycmVudFBvc2l0aW9uKQotICAgICwgbV9hbmltYXRpb25UaW1lcihwYXJl
bnQsICZTY3JvbGxBbmltYXRvck5vbmU6OmFuaW1hdGlvblRpbWVyRmlyZWQpCiB7CiAgICAgcmVz
ZXQoKTsKIH0KQEAgLTE5NCw3ICsxOTIsNyBAQCBib29sIFNjcm9sbEFuaW1hdG9yTm9uZTo6UGVy
QXhpc0RhdGE6OnVwZGF0ZURhdGFGcm9tUGFyYW1ldGVycyhTY3JvbGxiYXJPcmllbnRhdAogICAg
ICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgdGhlIHRpbWUgZnJvbSB0aGUgZXZlbnQgdGhh
dCBnb3QgdXMgaGVyZS4KICAgICAgICAgbV9zdGFydFRpbWUgPSBjdXJyZW50VGltZSAtIGtUaWNr
VGltZSAvIDI7CiAgICAgICAgIG1fc3RhcnRQb3NpdGlvbiA9ICptX2N1cnJlbnRQb3NpdGlvbjsK
LSAgICAgICAgbV9sYXN0QW5pbWF0aW9uVGltZSA9IGN1cnJlbnRUaW1lOworICAgICAgICBtX2xh
c3RBbmltYXRpb25UaW1lID0gbV9zdGFydFRpbWU7CiAgICAgfQogICAgIG1fc3RhcnRWZWxvY2l0
eSA9IG1fY3VycmVudFZlbG9jaXR5OwogCkBAIC0yNDAsOCArMjM4LDEwIEBAIGJvb2wgU2Nyb2xs
QW5pbWF0b3JOb25lOjpQZXJBeGlzRGF0YTo6dXBkYXRlRGF0YUZyb21QYXJhbWV0ZXJzKFNjcm9s
bGJhck9yaWVudGF0CiAvLyBGSVhNRTogQWRkIGluIGphbmsgZGV0ZWN0aW9uIHRyYWNlIGV2ZW50
cyBpbnRvIHRoaXMgZnVuY3Rpb24uCiBib29sIFNjcm9sbEFuaW1hdG9yTm9uZTo6UGVyQXhpc0Rh
dGE6OmFuaW1hdGVTY3JvbGwoZG91YmxlIGN1cnJlbnRUaW1lKQogewotICAgIC8vIEdldCB0aGUg
Y3VycmVudCB0aW1lOyBncmFiYmluZyB0aGUgY3VycmVudCB0aW1lIG9uY2UgaGVscHMga2VlcCBh
IGNvbnNpc3RlbnQgaGVhcnRiZWF0LgogICAgIGRvdWJsZSBsYXN0U2Nyb2xsSW50ZXJ2YWwgPSBj
dXJyZW50VGltZSAtIG1fbGFzdEFuaW1hdGlvblRpbWU7CisgICAgaWYgKGxhc3RTY3JvbGxJbnRl
cnZhbCA8IGtNaW5pbXVtVGltZXJJbnRlcnZhbCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKICAg
ICBtX2xhc3RBbmltYXRpb25UaW1lID0gY3VycmVudFRpbWU7CiAKICAgICBkb3VibGUgZGVsdGFU
aW1lID0gY3VycmVudFRpbWUgLSBtX3N0YXJ0VGltZTsKQEAgLTI3NCwxMyArMjc0LDEzIEBAIFNj
cm9sbEFuaW1hdG9yTm9uZTo6U2Nyb2xsQW5pbWF0b3JOb25lKFNjcm9sbGFibGVBcmVhKiBzY3Jv
bGxhYmxlQXJlYSkKICAgICA6IFNjcm9sbEFuaW1hdG9yKHNjcm9sbGFibGVBcmVhKQogICAgICwg
bV9ob3Jpem9udGFsRGF0YSh0aGlzLCAmbV9jdXJyZW50UG9zWCkKICAgICAsIG1fdmVydGljYWxE
YXRhKHRoaXMsICZtX2N1cnJlbnRQb3NZKQorICAgICwgbV9hbmltYXRpb25UaW1lcih0aGlzLCAm
U2Nyb2xsQW5pbWF0b3JOb25lOjphbmltYXRpb25UaW1lckZpcmVkKQogewogfQogCiBTY3JvbGxB
bmltYXRvck5vbmU6On5TY3JvbGxBbmltYXRvck5vbmUoKQogewotICAgIHN0b3BBbmltYXRpb25U
aW1lcklmTmVlZGVkKCZtX2hvcml6b250YWxEYXRhKTsKLSAgICBzdG9wQW5pbWF0aW9uVGltZXJJ
Zk5lZWRlZCgmbV92ZXJ0aWNhbERhdGEpOworICAgIHN0b3BBbmltYXRpb25UaW1lcklmTmVlZGVk
KCk7CiB9CiAKIGJvb2wgU2Nyb2xsQW5pbWF0b3JOb25lOjpzY3JvbGwoU2Nyb2xsYmFyT3JpZW50
YXRpb24gb3JpZW50YXRpb24sIFNjcm9sbEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBmbG9hdCBz
dGVwLCBmbG9hdCBtdWx0aXBsaWVyKQpAQCAtMzExLDI0ICszMTEsMjEgQEAgYm9vbCBTY3JvbGxB
bmltYXRvck5vbmU6OnNjcm9sbChTY3JvbGxiYXJPcmllbnRhdGlvbiBvcmllbnRhdGlvbiwgU2Ny
b2xsR3JhbnVsYXIKICAgICBpZiAoIXBhcmFtZXRlcnMubV9pc0VuYWJsZWQpCiAgICAgICAgIHJl
dHVybiBTY3JvbGxBbmltYXRvcjo6c2Nyb2xsKG9yaWVudGF0aW9uLCBncmFudWxhcml0eSwgc3Rl
cCwgbXVsdGlwbGllcik7CiAKLSAgICAvLyBUaGlzIGlzIGFuIGFuaW1hdGFibGUgc2Nyb2xsLiBD
YWxjdWxhdGUgdGhlIHNjcm9sbCBkZWx0YS4KLSAgICBQZXJBeGlzRGF0YSogZGF0YSA9IChvcmll
bnRhdGlvbiA9PSBWZXJ0aWNhbFNjcm9sbGJhcikgPyAmbV92ZXJ0aWNhbERhdGEgOiAmbV9ob3Jp
em9udGFsRGF0YTsKLQorICAgIC8vIFRoaXMgaXMgYW4gYW5pbWF0YWJsZSBzY3JvbGwuIFNldCB0
aGUgYW5pbWF0aW9uIGluIG1vdGlvbiB1c2luZyB0aGUgYXBwcm9wcmlhdGUgcGFyYW1ldGVycy4K
ICAgICBmbG9hdCBzY3JvbGxhYmxlU2l6ZSA9IHN0YXRpY19jYXN0PGZsb2F0PihtX3Njcm9sbGFi
bGVBcmVhLT5zY3JvbGxTaXplKG9yaWVudGF0aW9uKSk7Ci0gICAgYm9vbCByZXN1bHQgPSBkYXRh
LT51cGRhdGVEYXRhRnJvbVBhcmFtZXRlcnMob3JpZW50YXRpb24sIHN0ZXAsIG11bHRpcGxpZXIs
IHNjcm9sbGFibGVTaXplLCBXVEY6OmN1cnJlbnRUaW1lKCksICZwYXJhbWV0ZXJzKTsKLSAgICBp
ZiAoIWRhdGEtPm1fYW5pbWF0aW9uVGltZXIuaXNBY3RpdmUoKSkgewotICAgICAgICByZXN1bHQg
Jj0gZGF0YS0+YW5pbWF0ZVNjcm9sbChXVEY6OmN1cnJlbnRUaW1lKCkpOwotICAgICAgICBpZiAo
cmVzdWx0KQotICAgICAgICAgICAgZGF0YS0+bV9hbmltYXRpb25UaW1lci5zdGFydE9uZVNob3Qo
a0FuaW1hdGlvblRpbWVyRGVsYXkpOworCisgICAgUGVyQXhpc0RhdGEmIGRhdGEgPSAob3JpZW50
YXRpb24gPT0gVmVydGljYWxTY3JvbGxiYXIpID8gbV92ZXJ0aWNhbERhdGEgOiBtX2hvcml6b250
YWxEYXRhOworICAgIGJvb2wgcmVzdWx0ID0gZGF0YS51cGRhdGVEYXRhRnJvbVBhcmFtZXRlcnMo
b3JpZW50YXRpb24sIHN0ZXAsIG11bHRpcGxpZXIsIHNjcm9sbGFibGVTaXplLCBXVEY6Om1vbm90
b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpLCAmcGFyYW1ldGVycyk7CisgICAgaWYgKHJlc3VsdCAm
JiAhbV9hbmltYXRpb25UaW1lci5pc0FjdGl2ZSgpKSB7CisgICAgICAgIG1fc3RhcnRUaW1lID0g
ZGF0YS5tX3N0YXJ0VGltZTsKKyAgICAgICAgYW5pbWF0aW9uVGltZXJGaXJlZCgmbV9hbmltYXRp
b25UaW1lcik7CiAgICAgfQotICAgIG5vdGl0eVBvc2l0aW9uQ2hhbmdlZCgpOwogICAgIHJldHVy
biByZXN1bHQ7CiB9CiAKIHZvaWQgU2Nyb2xsQW5pbWF0b3JOb25lOjpzY3JvbGxUb09mZnNldFdp
dGhvdXRBbmltYXRpb24oY29uc3QgRmxvYXRQb2ludCYgb2Zmc2V0KQogewotICAgIHN0b3BBbmlt
YXRpb25UaW1lcklmTmVlZGVkKCZtX2hvcml6b250YWxEYXRhKTsKLSAgICBzdG9wQW5pbWF0aW9u
VGltZXJJZk5lZWRlZCgmbV92ZXJ0aWNhbERhdGEpOworICAgIHN0b3BBbmltYXRpb25UaW1lcklm
TmVlZGVkKCk7CiAKICAgICBtX2hvcml6b250YWxEYXRhLnJlc2V0KCk7CiAgICAgKm1faG9yaXpv
bnRhbERhdGEubV9jdXJyZW50UG9zaXRpb24gPSBvZmZzZXQueCgpOwpAQCAtMzQzLDIxICszNDAs
MjUgQEAgdm9pZCBTY3JvbGxBbmltYXRvck5vbmU6OnNjcm9sbFRvT2Zmc2V0V2l0aG91dEFuaW1h
dGlvbihjb25zdCBGbG9hdFBvaW50JiBvZmZzZXQKIAogdm9pZCBTY3JvbGxBbmltYXRvck5vbmU6
OmFuaW1hdGlvblRpbWVyRmlyZWQoVGltZXI8U2Nyb2xsQW5pbWF0b3JOb25lPiogdGltZXIpCiB7
Ci0gICAgZG91YmxlIGN1cnJlbnRUaW1lID0gV1RGOjpjdXJyZW50VGltZSgpOwotICAgIGlmICgo
dGltZXIgPT0gJm1faG9yaXpvbnRhbERhdGEubV9hbmltYXRpb25UaW1lcikgPwotICAgICAgICBt
X2hvcml6b250YWxEYXRhLmFuaW1hdGVTY3JvbGwoY3VycmVudFRpbWUpIDoKLSAgICAgICAgbV92
ZXJ0aWNhbERhdGEuYW5pbWF0ZVNjcm9sbChjdXJyZW50VGltZSkpCi0gICAgewotICAgICAgICBk
b3VibGUgZGVsdGEgPSBXVEY6OmN1cnJlbnRUaW1lKCkgLSBjdXJyZW50VGltZTsKLSAgICAgICAg
dGltZXItPnN0YXJ0T25lU2hvdChrQW5pbWF0aW9uVGltZXJEZWxheSAtIGRlbHRhKTsKKyAgICBk
b3VibGUgY3VycmVudFRpbWUgPSBXVEY6Om1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOwor
ICAgIGRvdWJsZSBkZWx0YVRvTmV4dEZyYW1lID0gY2VpbCgoY3VycmVudFRpbWUgLSBtX3N0YXJ0
VGltZSkgKiBrRnJhbWVSYXRlKSAvIGtGcmFtZVJhdGUgLSAoY3VycmVudFRpbWUgLSBtX3N0YXJ0
VGltZSk7CisKKyAgICBib29sIGNvbnRpbnVlQW5pbWF0aW9uID0gZmFsc2U7CisgICAgaWYgKG1f
aG9yaXpvbnRhbERhdGEubV9zdGFydFRpbWUgJiYgbV9ob3Jpem9udGFsRGF0YS5hbmltYXRlU2Ny
b2xsKGN1cnJlbnRUaW1lICsgZGVsdGFUb05leHRGcmFtZSkpCisgICAgICAgIGNvbnRpbnVlQW5p
bWF0aW9uID0gdHJ1ZTsKKyAgICBpZiAobV92ZXJ0aWNhbERhdGEubV9zdGFydFRpbWUgJiYgbV92
ZXJ0aWNhbERhdGEuYW5pbWF0ZVNjcm9sbChjdXJyZW50VGltZSArIGRlbHRhVG9OZXh0RnJhbWUp
KQorICAgICAgICBjb250aW51ZUFuaW1hdGlvbiA9IHRydWU7CisgICAgaWYgKGNvbnRpbnVlQW5p
bWF0aW9uKSB7CisgICAgICAgIGRvdWJsZSBuZXh0VGltZXJJbnRlcnZhbCA9IG1heChrTWluaW11
bVRpbWVySW50ZXJ2YWwsIGRlbHRhVG9OZXh0RnJhbWUpOworICAgICAgICB0aW1lci0+c3RhcnRP
bmVTaG90KG5leHRUaW1lckludGVydmFsKTsKICAgICB9CiAgICAgbm90aXR5UG9zaXRpb25DaGFu
Z2VkKCk7CiB9CiAKLXZvaWQgU2Nyb2xsQW5pbWF0b3JOb25lOjpzdG9wQW5pbWF0aW9uVGltZXJJ
Zk5lZWRlZChQZXJBeGlzRGF0YSogZGF0YSkKK3ZvaWQgU2Nyb2xsQW5pbWF0b3JOb25lOjpzdG9w
QW5pbWF0aW9uVGltZXJJZk5lZWRlZCgpCiB7Ci0gICAgaWYgKGRhdGEtPm1fYW5pbWF0aW9uVGlt
ZXIuaXNBY3RpdmUoKSkKLSAgICAgICAgZGF0YS0+bV9hbmltYXRpb25UaW1lci5zdG9wKCk7Cisg
ICAgaWYgKG1fYW5pbWF0aW9uVGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgbV9hbmltYXRpb25U
aW1lci5zdG9wKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yTm9uZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3JOb25lLmgKaW5kZXggM2U3ZGQxMDZhZGUyMDk0YzA4
YTNiZjc3NDljZmQ2Mjg0ZDJkMWRiYy4uODMyMzVkMTc2MWJjNmEwMDZjNTNmOTk1YzcyYzdkMjhh
ZTQ1NGJlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0
b3JOb25lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3JOb25l
LmgKQEAgLTExMiwxNCArMTEyLDE2IEBAIHByb3RlY3RlZDoKICAgICAgICAgQ3VydmUgbV9yZWxl
YXNlQ3VydmU7CiAKICAgICAgICAgU2Nyb2xsYmFyT3JpZW50YXRpb24gbV9vcmllbnRhdGlvbjsK
LSAgICAgICAgVGltZXI8U2Nyb2xsQW5pbWF0b3JOb25lPiBtX2FuaW1hdGlvblRpbWVyOwogICAg
IH07CiAKICAgICB2b2lkIGFuaW1hdGlvblRpbWVyRmlyZWQoVGltZXI8U2Nyb2xsQW5pbWF0b3JO
b25lPiopOwotICAgIHZvaWQgc3RvcEFuaW1hdGlvblRpbWVySWZOZWVkZWQoUGVyQXhpc0RhdGEq
KTsKKyAgICB2b2lkIHN0b3BBbmltYXRpb25UaW1lcklmTmVlZGVkKCk7CiAKICAgICBQZXJBeGlz
RGF0YSBtX2hvcml6b250YWxEYXRhOwogICAgIFBlckF4aXNEYXRhIG1fdmVydGljYWxEYXRhOwor
CisgICAgZG91YmxlIG1fc3RhcnRUaW1lOworICAgIFRpbWVyPFNjcm9sbEFuaW1hdG9yTm9uZT4g
bV9hbmltYXRpb25UaW1lcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKaW5kZXggNTExYmE1MDAxM2QwY2MyN2JmNjE4ZmRmMGJmMTY1YjFhNWY2
Yjg4Zi4uZTI3ZmQ5MWFlMDQ0MjQ0MTE4MTFiODhkMzZhNzI0MjY2Njg3YWY0ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMS0wOC0wNSAgU2NvdHQgQnll
ciAgPHNjb3R0YnllckBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU2Nyb2xsIGFuaW1hdG9yIGNo
YW5nZXMgdG8gbmFpbCB0aGUgZnJhbWVyYXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD02NTY0NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogdGVzdHMvU2Nyb2xsQW5pbWF0b3JOb25lVGVzdC5jcHA6Cisg
ICAgICAgIChURVNUKToKKwogMjAxMS0wOC0wNSAgSm9jaGVuIEVpc2luZ2VyICA8am9jaGVuQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBJbnRyb2R1Y2UgYSBuZXcgUmVzb3VyY2VSZXF1ZXN0OjpU
YXJnZXRUeXBlIGZvciBYSFJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL1Njcm9sbEFuaW1hdG9yTm9uZVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9TY3JvbGxBbmltYXRvck5vbmVUZXN0LmNwcAppbmRleCA4M2IzYjg5MjhiNmE3YzA2N2U4
ZjNjYjc3MWFhOTBhMjQwY2U5YjllLi45MGI0YzJjYjJhNzZhMDBmMmE1ZDBiNDk3MmVmMmE0ZTQ5
N2FmNGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1Njcm9sbEFu
aW1hdG9yTm9uZVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvU2Ny
b2xsQW5pbWF0b3JOb25lVGVzdC5jcHAKQEAgLTc5LDggKzc5LDcgQEAgcHVibGljOgogCiAgICAg
dm9pZCByZXNldCgpCiAgICAgewotICAgICAgICBzdG9wQW5pbWF0aW9uVGltZXJJZk5lZWRlZCgm
bV9ob3Jpem9udGFsRGF0YSk7Ci0gICAgICAgIHN0b3BBbmltYXRpb25UaW1lcklmTmVlZGVkKCZt
X3ZlcnRpY2FsRGF0YSk7CisgICAgICAgIHN0b3BBbmltYXRpb25UaW1lcklmTmVlZGVkKCk7CiAg
ICAgICAgIG1fY3VycmVudFBvc1ggPSAwOwogICAgICAgICBtX2N1cnJlbnRQb3NZID0gMDsKICAg
ICAgICAgbV9ob3Jpem9udGFsRGF0YS5yZXNldCgpOwpAQCAtOTMsNTcgKzkyLDU3IEBAIHB1Ymxp
YzoKIFRFU1QoU2Nyb2xsQW5pbWF0b3JFbmFibGVkLCBFbmFibGVkKQogewogICAgIE1vY2tTY3Jv
bGxhYmxlQXJlYSBzY3JvbGxhYmxlQXJlYSh0cnVlKTsKLSAgICBNb2NrU2Nyb2xsQW5pbWF0b3JO
b25lIHNjcm9sbEFuaW1hdG9yQ2hyb21pdW0oJnNjcm9sbGFibGVBcmVhKTsKKyAgICBNb2NrU2Ny
b2xsQW5pbWF0b3JOb25lIHNjcm9sbEFuaW1hdG9yTm9uZSgmc2Nyb2xsYWJsZUFyZWEpOwogCiAg
ICAgRVhQRUNUX0NBTEwoc2Nyb2xsYWJsZUFyZWEsIHNjcm9sbFNpemUoXykpLlRpbWVzKEF0TGVh
c3QoMSkpLldpbGxSZXBlYXRlZGx5KFJldHVybigxMDAwKSk7Ci0gICAgRVhQRUNUX0NBTEwoc2Ny
b2xsYWJsZUFyZWEsIHNldFNjcm9sbE9mZnNldChfKSkuVGltZXMoQXRMZWFzdCgxKSk7CisgICAg
RVhQRUNUX0NBTEwoc2Nyb2xsYWJsZUFyZWEsIHNldFNjcm9sbE9mZnNldChfKSkuVGltZXMoMyk7
CiAKLSAgICBzY3JvbGxBbmltYXRvckNocm9taXVtLnNjcm9sbChIb3Jpem9udGFsU2Nyb2xsYmFy
LCBTY3JvbGxCeUxpbmUsIDEwMCwgMSk7Ci0gICAgRVhQRUNUX05FKDEwMCwgc2Nyb2xsQW5pbWF0
b3JDaHJvbWl1bS5jdXJyZW50WCgpKTsKLSAgICBFWFBFQ1RfTkUoMCwgc2Nyb2xsQW5pbWF0b3JD
aHJvbWl1bS5jdXJyZW50WCgpKTsKLSAgICBFWFBFQ1RfRVEoMCwgc2Nyb2xsQW5pbWF0b3JDaHJv
bWl1bS5jdXJyZW50WSgpKTsKLSAgICBzY3JvbGxBbmltYXRvckNocm9taXVtLnJlc2V0KCk7Cisg
ICAgc2Nyb2xsQW5pbWF0b3JOb25lLnNjcm9sbChIb3Jpem9udGFsU2Nyb2xsYmFyLCBTY3JvbGxC
eUxpbmUsIDEwMCwgMSk7CisgICAgRVhQRUNUX05FKDEwMCwgc2Nyb2xsQW5pbWF0b3JOb25lLmN1
cnJlbnRYKCkpOworICAgIEVYUEVDVF9ORSgwLCBzY3JvbGxBbmltYXRvck5vbmUuY3VycmVudFgo
KSk7CisgICAgRVhQRUNUX0VRKDAsIHNjcm9sbEFuaW1hdG9yTm9uZS5jdXJyZW50WSgpKTsKKyAg
ICBzY3JvbGxBbmltYXRvck5vbmUucmVzZXQoKTsKIAotICAgIHNjcm9sbEFuaW1hdG9yQ2hyb21p
dW0uc2Nyb2xsKEhvcml6b250YWxTY3JvbGxiYXIsIFNjcm9sbEJ5UGFnZSwgMTAwLCAxKTsKLSAg
ICBFWFBFQ1RfTkUoMTAwLCBzY3JvbGxBbmltYXRvckNocm9taXVtLmN1cnJlbnRYKCkpOwotICAg
IEVYUEVDVF9ORSgwLCBzY3JvbGxBbmltYXRvckNocm9taXVtLmN1cnJlbnRYKCkpOwotICAgIEVY
UEVDVF9FUSgwLCBzY3JvbGxBbmltYXRvckNocm9taXVtLmN1cnJlbnRZKCkpOwotICAgIHNjcm9s
bEFuaW1hdG9yQ2hyb21pdW0ucmVzZXQoKTsKKyAgICBzY3JvbGxBbmltYXRvck5vbmUuc2Nyb2xs
KEhvcml6b250YWxTY3JvbGxiYXIsIFNjcm9sbEJ5UGFnZSwgMTAwLCAxKTsKKyAgICBFWFBFQ1Rf
TkUoMTAwLCBzY3JvbGxBbmltYXRvck5vbmUuY3VycmVudFgoKSk7CisgICAgRVhQRUNUX05FKDAs
IHNjcm9sbEFuaW1hdG9yTm9uZS5jdXJyZW50WCgpKTsKKyAgICBFWFBFQ1RfRVEoMCwgc2Nyb2xs
QW5pbWF0b3JOb25lLmN1cnJlbnRZKCkpOworICAgIHNjcm9sbEFuaW1hdG9yTm9uZS5yZXNldCgp
OwogCi0gICAgc2Nyb2xsQW5pbWF0b3JDaHJvbWl1bS5zY3JvbGwoSG9yaXpvbnRhbFNjcm9sbGJh
ciwgU2Nyb2xsQnlQaXhlbCwgNCwgMjUpOwotICAgIEVYUEVDVF9ORSgxMDAsIHNjcm9sbEFuaW1h
dG9yQ2hyb21pdW0uY3VycmVudFgoKSk7Ci0gICAgRVhQRUNUX05FKDAsIHNjcm9sbEFuaW1hdG9y
Q2hyb21pdW0uY3VycmVudFgoKSk7Ci0gICAgRVhQRUNUX0VRKDAsIHNjcm9sbEFuaW1hdG9yQ2hy
b21pdW0uY3VycmVudFkoKSk7Ci0gICAgc2Nyb2xsQW5pbWF0b3JDaHJvbWl1bS5yZXNldCgpOwor
ICAgIHNjcm9sbEFuaW1hdG9yTm9uZS5zY3JvbGwoSG9yaXpvbnRhbFNjcm9sbGJhciwgU2Nyb2xs
QnlQaXhlbCwgNCwgMjUpOworICAgIEVYUEVDVF9ORSgxMDAsIHNjcm9sbEFuaW1hdG9yTm9uZS5j
dXJyZW50WCgpKTsKKyAgICBFWFBFQ1RfTkUoMCwgc2Nyb2xsQW5pbWF0b3JOb25lLmN1cnJlbnRY
KCkpOworICAgIEVYUEVDVF9FUSgwLCBzY3JvbGxBbmltYXRvck5vbmUuY3VycmVudFkoKSk7Cisg
ICAgc2Nyb2xsQW5pbWF0b3JOb25lLnJlc2V0KCk7CiB9CiAKIFRFU1QoU2Nyb2xsQW5pbWF0b3JF
bmFibGVkLCBEaXNhYmxlZCkKIHsKICAgICBNb2NrU2Nyb2xsYWJsZUFyZWEgc2Nyb2xsYWJsZUFy
ZWEoZmFsc2UpOwotICAgIE1vY2tTY3JvbGxBbmltYXRvck5vbmUgc2Nyb2xsQW5pbWF0b3JDaHJv
bWl1bSgmc2Nyb2xsYWJsZUFyZWEpOworICAgIE1vY2tTY3JvbGxBbmltYXRvck5vbmUgc2Nyb2xs
QW5pbWF0b3JOb25lKCZzY3JvbGxhYmxlQXJlYSk7CiAKICAgICBFWFBFQ1RfQ0FMTChzY3JvbGxh
YmxlQXJlYSwgc2Nyb2xsU2l6ZShfKSkuVGltZXMoQXRMZWFzdCgxKSkuV2lsbFJlcGVhdGVkbHko
UmV0dXJuKDEwMDApKTsKLSAgICBFWFBFQ1RfQ0FMTChzY3JvbGxhYmxlQXJlYSwgc2V0U2Nyb2xs
T2Zmc2V0KF8pKS5UaW1lcyhBdExlYXN0KDEpKTsKLQotICAgIHNjcm9sbEFuaW1hdG9yQ2hyb21p
dW0uc2Nyb2xsKEhvcml6b250YWxTY3JvbGxiYXIsIFNjcm9sbEJ5TGluZSwgMTAwLCAxKTsKLSAg
ICBFWFBFQ1RfRVEoMTAwLCBzY3JvbGxBbmltYXRvckNocm9taXVtLmN1cnJlbnRYKCkpOwotICAg
IEVYUEVDVF9FUSgwLCBzY3JvbGxBbmltYXRvckNocm9taXVtLmN1cnJlbnRZKCkpOwotICAgIHNj
cm9sbEFuaW1hdG9yQ2hyb21pdW0ucmVzZXQoKTsKLQotICAgIHNjcm9sbEFuaW1hdG9yQ2hyb21p
dW0uc2Nyb2xsKEhvcml6b250YWxTY3JvbGxiYXIsIFNjcm9sbEJ5UGFnZSwgMTAwLCAxKTsKLSAg
ICBFWFBFQ1RfRVEoMTAwLCBzY3JvbGxBbmltYXRvckNocm9taXVtLmN1cnJlbnRYKCkpOwotICAg
IEVYUEVDVF9FUSgwLCBzY3JvbGxBbmltYXRvckNocm9taXVtLmN1cnJlbnRZKCkpOwotICAgIHNj
cm9sbEFuaW1hdG9yQ2hyb21pdW0ucmVzZXQoKTsKLQotICAgIHNjcm9sbEFuaW1hdG9yQ2hyb21p
dW0uc2Nyb2xsKEhvcml6b250YWxTY3JvbGxiYXIsIFNjcm9sbEJ5RG9jdW1lbnQsIDEwMCwgMSk7
Ci0gICAgRVhQRUNUX0VRKDEwMCwgc2Nyb2xsQW5pbWF0b3JDaHJvbWl1bS5jdXJyZW50WCgpKTsK
LSAgICBFWFBFQ1RfRVEoMCwgc2Nyb2xsQW5pbWF0b3JDaHJvbWl1bS5jdXJyZW50WSgpKTsKLSAg
ICBzY3JvbGxBbmltYXRvckNocm9taXVtLnJlc2V0KCk7Ci0KLSAgICBzY3JvbGxBbmltYXRvckNo
cm9taXVtLnNjcm9sbChIb3Jpem9udGFsU2Nyb2xsYmFyLCBTY3JvbGxCeVBpeGVsLCAxMDAsIDEp
OwotICAgIEVYUEVDVF9FUSgxMDAsIHNjcm9sbEFuaW1hdG9yQ2hyb21pdW0uY3VycmVudFgoKSk7
Ci0gICAgRVhQRUNUX0VRKDAsIHNjcm9sbEFuaW1hdG9yQ2hyb21pdW0uY3VycmVudFkoKSk7Ci0g
ICAgc2Nyb2xsQW5pbWF0b3JDaHJvbWl1bS5yZXNldCgpOworICAgIEVYUEVDVF9DQUxMKHNjcm9s
bGFibGVBcmVhLCBzZXRTY3JvbGxPZmZzZXQoXykpLlRpbWVzKDQpOworCisgICAgc2Nyb2xsQW5p
bWF0b3JOb25lLnNjcm9sbChIb3Jpem9udGFsU2Nyb2xsYmFyLCBTY3JvbGxCeUxpbmUsIDEwMCwg
MSk7CisgICAgRVhQRUNUX0VRKDEwMCwgc2Nyb2xsQW5pbWF0b3JOb25lLmN1cnJlbnRYKCkpOwor
ICAgIEVYUEVDVF9FUSgwLCBzY3JvbGxBbmltYXRvck5vbmUuY3VycmVudFkoKSk7CisgICAgc2Ny
b2xsQW5pbWF0b3JOb25lLnJlc2V0KCk7CisKKyAgICBzY3JvbGxBbmltYXRvck5vbmUuc2Nyb2xs
KEhvcml6b250YWxTY3JvbGxiYXIsIFNjcm9sbEJ5UGFnZSwgMTAwLCAxKTsKKyAgICBFWFBFQ1Rf
RVEoMTAwLCBzY3JvbGxBbmltYXRvck5vbmUuY3VycmVudFgoKSk7CisgICAgRVhQRUNUX0VRKDAs
IHNjcm9sbEFuaW1hdG9yTm9uZS5jdXJyZW50WSgpKTsKKyAgICBzY3JvbGxBbmltYXRvck5vbmUu
cmVzZXQoKTsKKworICAgIHNjcm9sbEFuaW1hdG9yTm9uZS5zY3JvbGwoSG9yaXpvbnRhbFNjcm9s
bGJhciwgU2Nyb2xsQnlEb2N1bWVudCwgMTAwLCAxKTsKKyAgICBFWFBFQ1RfRVEoMTAwLCBzY3Jv
bGxBbmltYXRvck5vbmUuY3VycmVudFgoKSk7CisgICAgRVhQRUNUX0VRKDAsIHNjcm9sbEFuaW1h
dG9yTm9uZS5jdXJyZW50WSgpKTsKKyAgICBzY3JvbGxBbmltYXRvck5vbmUucmVzZXQoKTsKKwor
ICAgIHNjcm9sbEFuaW1hdG9yTm9uZS5zY3JvbGwoSG9yaXpvbnRhbFNjcm9sbGJhciwgU2Nyb2xs
QnlQaXhlbCwgMTAwLCAxKTsKKyAgICBFWFBFQ1RfRVEoMTAwLCBzY3JvbGxBbmltYXRvck5vbmUu
Y3VycmVudFgoKSk7CisgICAgRVhQRUNUX0VRKDAsIHNjcm9sbEFuaW1hdG9yTm9uZS5jdXJyZW50
WSgpKTsKKyAgICBzY3JvbGxBbmltYXRvck5vbmUucmVzZXQoKTsKIH0KIAogY2xhc3MgU2Nyb2xs
QW5pbWF0b3JOb25lVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103264</attachid>
            <date>2011-08-08 10:42:02 -0700</date>
            <delta_ts>2011-08-08 15:01:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65645-20110808104200.patch</filename>
            <type>text/plain</type>
            <size>13770</size>
            <attacher name="Scott Byer">scottbyer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTI2MDEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2MGQwZjljMGRjNjMyMmY3
NTgwY2E0ZDEwNjQ4YTdlZWZiY2E4YTM4Li4wNWViYjQ3MGY0NDJkYzQ5ZjJlYzRhN2IxMGU1ZTRl
MjUxZjc0MmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTEtMDgtMDUgIFNjb3R0
IEJ5ZXIgIDxzY290dGJ5ZXJAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFNjcm9sbCBhbmltYXRv
ciBjaGFuZ2VzIHRvIG5haWwgdGhlIGZyYW1lcmF0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjU2NDUKKworICAgICAgICBSZXZpZXdlZCBieSBKYW1l
cyBSb2JpbnNvbi4KKworICAgICAgICBQYXJ0aWFsIHRlc3QgaW4gU2Nyb2xsQW5pbWF0b3JOb25l
VGVzdDo6RW5hYmxlZC4KKworICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdG9yTm9uZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck5vbmU6OlBlckF4aXNEYXRhOjpQ
ZXJBeGlzRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck5vbmU6OlBlckF4
aXNEYXRhOjp1cGRhdGVEYXRhRnJvbVBhcmFtZXRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsQW5pbWF0b3JOb25lOjpQZXJBeGlzRGF0YTo6YW5pbWF0ZVNjcm9sbCk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxBbmltYXRvck5vbmU6OlNjcm9sbEFuaW1hdG9yTm9uZSk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck5vbmU6On5TY3JvbGxBbmltYXRvck5vbmUpOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JOb25lOjpzY3JvbGwpOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsQW5pbWF0b3JOb25lOjpzY3JvbGxUb09mZnNldFdpdGhvdXRBbmltYXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JOb25lOjphbmltYXRpb25UaW1lckZp
cmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTm9uZTo6c3RvcEFuaW1hdGlv
blRpbWVySWZOZWVkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdG9yTm9uZS5o
OgorCiAyMDExLTA4LTA4ICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAg
ICAgQnVpbGQgZml4LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
QW5pbWF0b3JOb25lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9y
Tm9uZS5jcHAKaW5kZXggYTEwY2YwMTFmZmE5MjQ2ZjQ3MjZhZmE4MzQyN2ZhOTg2NzNjNjQ1MC4u
YmQyY2U1NGZhYmM3ZjNkY2QxYmY2Mzc4MTc1N2YzZjAzZTE3NjAwMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3JOb25lLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvck5vbmUuY3BwCkBAIC00OCwxMCArNDgsOSBA
QCB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBk
b3VibGUga1RpY2tUaW1lID0gLjAxNjY7Ci0KLS8vIFRoaXMgaXMgdXNlZCB0byBzZXQgdGhlIHRp
bWVyIGRlbGF5IC0gaXQgbmVlZHMgdG8gYmUgc2xpZ2h0bHkgc21hbGxlciB0aGFuIHRoZSB0aWNr
IGNvdW50IHRvIGxlYXZlIHNvbWUgb3ZlcmhlYWQuCi1zdGF0aWMgZG91YmxlIGtBbmltYXRpb25U
aW1lckRlbGF5ID0gMC4wMTU7CitzdGF0aWMgZG91YmxlIGtGcmFtZVJhdGUgPSA2MDsKK3N0YXRp
YyBkb3VibGUga1RpY2tUaW1lID0gMSAvIGtGcmFtZVJhdGU7CitzdGF0aWMgZG91YmxlIGtNaW5p
bXVtVGltZXJJbnRlcnZhbCA9IC4wMDE7CiAKIFBhc3NPd25QdHI8U2Nyb2xsQW5pbWF0b3I+IFNj
cm9sbEFuaW1hdG9yOjpjcmVhdGUoU2Nyb2xsYWJsZUFyZWEqIHNjcm9sbGFibGVBcmVhKQogewpA
QCAtMTMxLDcgKzEzMCw2IEBAIGRvdWJsZSBTY3JvbGxBbmltYXRvck5vbmU6OlBlckF4aXNEYXRh
OjpjdXJ2ZURlcml2YXRpdmVBdChDdXJ2ZSBjdXJ2ZSwgZG91YmxlIHQpCiAKIFNjcm9sbEFuaW1h
dG9yTm9uZTo6UGVyQXhpc0RhdGE6OlBlckF4aXNEYXRhKFNjcm9sbEFuaW1hdG9yTm9uZSogcGFy
ZW50LCBmbG9hdCogY3VycmVudFBvc2l0aW9uKQogICAgIDogbV9jdXJyZW50UG9zaXRpb24oY3Vy
cmVudFBvc2l0aW9uKQotICAgICwgbV9hbmltYXRpb25UaW1lcihwYXJlbnQsICZTY3JvbGxBbmlt
YXRvck5vbmU6OmFuaW1hdGlvblRpbWVyRmlyZWQpCiB7CiAgICAgcmVzZXQoKTsKIH0KQEAgLTE5
NCw3ICsxOTIsNyBAQCBib29sIFNjcm9sbEFuaW1hdG9yTm9uZTo6UGVyQXhpc0RhdGE6OnVwZGF0
ZURhdGFGcm9tUGFyYW1ldGVycyhTY3JvbGxiYXJPcmllbnRhdAogICAgICAgICAvLyBGSVhNRTog
VGhpcyBzaG91bGQgYmUgdGhlIHRpbWUgZnJvbSB0aGUgZXZlbnQgdGhhdCBnb3QgdXMgaGVyZS4K
ICAgICAgICAgbV9zdGFydFRpbWUgPSBjdXJyZW50VGltZSAtIGtUaWNrVGltZSAvIDI7CiAgICAg
ICAgIG1fc3RhcnRQb3NpdGlvbiA9ICptX2N1cnJlbnRQb3NpdGlvbjsKLSAgICAgICAgbV9sYXN0
QW5pbWF0aW9uVGltZSA9IGN1cnJlbnRUaW1lOworICAgICAgICBtX2xhc3RBbmltYXRpb25UaW1l
ID0gbV9zdGFydFRpbWU7CiAgICAgfQogICAgIG1fc3RhcnRWZWxvY2l0eSA9IG1fY3VycmVudFZl
bG9jaXR5OwogCkBAIC0yNDAsOCArMjM4LDEwIEBAIGJvb2wgU2Nyb2xsQW5pbWF0b3JOb25lOjpQ
ZXJBeGlzRGF0YTo6dXBkYXRlRGF0YUZyb21QYXJhbWV0ZXJzKFNjcm9sbGJhck9yaWVudGF0CiAv
LyBGSVhNRTogQWRkIGluIGphbmsgZGV0ZWN0aW9uIHRyYWNlIGV2ZW50cyBpbnRvIHRoaXMgZnVu
Y3Rpb24uCiBib29sIFNjcm9sbEFuaW1hdG9yTm9uZTo6UGVyQXhpc0RhdGE6OmFuaW1hdGVTY3Jv
bGwoZG91YmxlIGN1cnJlbnRUaW1lKQogewotICAgIC8vIEdldCB0aGUgY3VycmVudCB0aW1lOyBn
cmFiYmluZyB0aGUgY3VycmVudCB0aW1lIG9uY2UgaGVscHMga2VlcCBhIGNvbnNpc3RlbnQgaGVh
cnRiZWF0LgogICAgIGRvdWJsZSBsYXN0U2Nyb2xsSW50ZXJ2YWwgPSBjdXJyZW50VGltZSAtIG1f
bGFzdEFuaW1hdGlvblRpbWU7CisgICAgaWYgKGxhc3RTY3JvbGxJbnRlcnZhbCA8IGtNaW5pbXVt
VGltZXJJbnRlcnZhbCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKICAgICBtX2xhc3RBbmltYXRp
b25UaW1lID0gY3VycmVudFRpbWU7CiAKICAgICBkb3VibGUgZGVsdGFUaW1lID0gY3VycmVudFRp
bWUgLSBtX3N0YXJ0VGltZTsKQEAgLTI3NCwxMyArMjc0LDEzIEBAIFNjcm9sbEFuaW1hdG9yTm9u
ZTo6U2Nyb2xsQW5pbWF0b3JOb25lKFNjcm9sbGFibGVBcmVhKiBzY3JvbGxhYmxlQXJlYSkKICAg
ICA6IFNjcm9sbEFuaW1hdG9yKHNjcm9sbGFibGVBcmVhKQogICAgICwgbV9ob3Jpem9udGFsRGF0
YSh0aGlzLCAmbV9jdXJyZW50UG9zWCkKICAgICAsIG1fdmVydGljYWxEYXRhKHRoaXMsICZtX2N1
cnJlbnRQb3NZKQorICAgICwgbV9hbmltYXRpb25UaW1lcih0aGlzLCAmU2Nyb2xsQW5pbWF0b3JO
b25lOjphbmltYXRpb25UaW1lckZpcmVkKQogewogfQogCiBTY3JvbGxBbmltYXRvck5vbmU6On5T
Y3JvbGxBbmltYXRvck5vbmUoKQogewotICAgIHN0b3BBbmltYXRpb25UaW1lcklmTmVlZGVkKCZt
X2hvcml6b250YWxEYXRhKTsKLSAgICBzdG9wQW5pbWF0aW9uVGltZXJJZk5lZWRlZCgmbV92ZXJ0
aWNhbERhdGEpOworICAgIHN0b3BBbmltYXRpb25UaW1lcklmTmVlZGVkKCk7CiB9CiAKIGJvb2wg
U2Nyb2xsQW5pbWF0b3JOb25lOjpzY3JvbGwoU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50YXRp
b24sIFNjcm9sbEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBmbG9hdCBzdGVwLCBmbG9hdCBtdWx0
aXBsaWVyKQpAQCAtMzExLDI0ICszMTEsMjEgQEAgYm9vbCBTY3JvbGxBbmltYXRvck5vbmU6OnNj
cm9sbChTY3JvbGxiYXJPcmllbnRhdGlvbiBvcmllbnRhdGlvbiwgU2Nyb2xsR3JhbnVsYXIKICAg
ICBpZiAoIXBhcmFtZXRlcnMubV9pc0VuYWJsZWQpCiAgICAgICAgIHJldHVybiBTY3JvbGxBbmlt
YXRvcjo6c2Nyb2xsKG9yaWVudGF0aW9uLCBncmFudWxhcml0eSwgc3RlcCwgbXVsdGlwbGllcik7
CiAKLSAgICAvLyBUaGlzIGlzIGFuIGFuaW1hdGFibGUgc2Nyb2xsLiBDYWxjdWxhdGUgdGhlIHNj
cm9sbCBkZWx0YS4KLSAgICBQZXJBeGlzRGF0YSogZGF0YSA9IChvcmllbnRhdGlvbiA9PSBWZXJ0
aWNhbFNjcm9sbGJhcikgPyAmbV92ZXJ0aWNhbERhdGEgOiAmbV9ob3Jpem9udGFsRGF0YTsKLQor
ICAgIC8vIFRoaXMgaXMgYW4gYW5pbWF0YWJsZSBzY3JvbGwuIFNldCB0aGUgYW5pbWF0aW9uIGlu
IG1vdGlvbiB1c2luZyB0aGUgYXBwcm9wcmlhdGUgcGFyYW1ldGVycy4KICAgICBmbG9hdCBzY3Jv
bGxhYmxlU2l6ZSA9IHN0YXRpY19jYXN0PGZsb2F0PihtX3Njcm9sbGFibGVBcmVhLT5zY3JvbGxT
aXplKG9yaWVudGF0aW9uKSk7Ci0gICAgYm9vbCByZXN1bHQgPSBkYXRhLT51cGRhdGVEYXRhRnJv
bVBhcmFtZXRlcnMob3JpZW50YXRpb24sIHN0ZXAsIG11bHRpcGxpZXIsIHNjcm9sbGFibGVTaXpl
LCBXVEY6OmN1cnJlbnRUaW1lKCksICZwYXJhbWV0ZXJzKTsKLSAgICBpZiAoIWRhdGEtPm1fYW5p
bWF0aW9uVGltZXIuaXNBY3RpdmUoKSkgewotICAgICAgICByZXN1bHQgJj0gZGF0YS0+YW5pbWF0
ZVNjcm9sbChXVEY6OmN1cnJlbnRUaW1lKCkpOwotICAgICAgICBpZiAocmVzdWx0KQotICAgICAg
ICAgICAgZGF0YS0+bV9hbmltYXRpb25UaW1lci5zdGFydE9uZVNob3Qoa0FuaW1hdGlvblRpbWVy
RGVsYXkpOworCisgICAgUGVyQXhpc0RhdGEmIGRhdGEgPSAob3JpZW50YXRpb24gPT0gVmVydGlj
YWxTY3JvbGxiYXIpID8gbV92ZXJ0aWNhbERhdGEgOiBtX2hvcml6b250YWxEYXRhOworICAgIGJv
b2wgbmVlZFRvU2Nyb2xsID0gZGF0YS51cGRhdGVEYXRhRnJvbVBhcmFtZXRlcnMob3JpZW50YXRp
b24sIHN0ZXAsIG11bHRpcGxpZXIsIHNjcm9sbGFibGVTaXplLCBXVEY6Om1vbm90b25pY2FsbHlJ
bmNyZWFzaW5nVGltZSgpLCAmcGFyYW1ldGVycyk7CisgICAgaWYgKG5lZWRUb1Njcm9sbCAmJiAh
bV9hbmltYXRpb25UaW1lci5pc0FjdGl2ZSgpKSB7CisgICAgICAgIG1fc3RhcnRUaW1lID0gZGF0
YS5tX3N0YXJ0VGltZTsKKyAgICAgICAgYW5pbWF0aW9uVGltZXJGaXJlZCgmbV9hbmltYXRpb25U
aW1lcik7CiAgICAgfQotICAgIG5vdGl0eVBvc2l0aW9uQ2hhbmdlZCgpOwotICAgIHJldHVybiBy
ZXN1bHQ7CisgICAgcmV0dXJuIG5lZWRUb1Njcm9sbDsKIH0KIAogdm9pZCBTY3JvbGxBbmltYXRv
ck5vbmU6OnNjcm9sbFRvT2Zmc2V0V2l0aG91dEFuaW1hdGlvbihjb25zdCBGbG9hdFBvaW50JiBv
ZmZzZXQpCiB7Ci0gICAgc3RvcEFuaW1hdGlvblRpbWVySWZOZWVkZWQoJm1faG9yaXpvbnRhbERh
dGEpOwotICAgIHN0b3BBbmltYXRpb25UaW1lcklmTmVlZGVkKCZtX3ZlcnRpY2FsRGF0YSk7Cisg
ICAgc3RvcEFuaW1hdGlvblRpbWVySWZOZWVkZWQoKTsKIAogICAgIG1faG9yaXpvbnRhbERhdGEu
cmVzZXQoKTsKICAgICAqbV9ob3Jpem9udGFsRGF0YS5tX2N1cnJlbnRQb3NpdGlvbiA9IG9mZnNl
dC54KCk7CkBAIC0zNDMsMjEgKzM0MCwyNSBAQCB2b2lkIFNjcm9sbEFuaW1hdG9yTm9uZTo6c2Ny
b2xsVG9PZmZzZXRXaXRob3V0QW5pbWF0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIG9mZnNldAogCiB2
b2lkIFNjcm9sbEFuaW1hdG9yTm9uZTo6YW5pbWF0aW9uVGltZXJGaXJlZChUaW1lcjxTY3JvbGxB
bmltYXRvck5vbmU+KiB0aW1lcikKIHsKLSAgICBkb3VibGUgY3VycmVudFRpbWUgPSBXVEY6OmN1
cnJlbnRUaW1lKCk7Ci0gICAgaWYgKCh0aW1lciA9PSAmbV9ob3Jpem9udGFsRGF0YS5tX2FuaW1h
dGlvblRpbWVyKSA/Ci0gICAgICAgIG1faG9yaXpvbnRhbERhdGEuYW5pbWF0ZVNjcm9sbChjdXJy
ZW50VGltZSkgOgotICAgICAgICBtX3ZlcnRpY2FsRGF0YS5hbmltYXRlU2Nyb2xsKGN1cnJlbnRU
aW1lKSkKLSAgICB7Ci0gICAgICAgIGRvdWJsZSBkZWx0YSA9IFdURjo6Y3VycmVudFRpbWUoKSAt
IGN1cnJlbnRUaW1lOwotICAgICAgICB0aW1lci0+c3RhcnRPbmVTaG90KGtBbmltYXRpb25UaW1l
ckRlbGF5IC0gZGVsdGEpOworICAgIGRvdWJsZSBjdXJyZW50VGltZSA9IFdURjo6bW9ub3Rvbmlj
YWxseUluY3JlYXNpbmdUaW1lKCk7CisgICAgZG91YmxlIGRlbHRhVG9OZXh0RnJhbWUgPSBjZWls
KChjdXJyZW50VGltZSAtIG1fc3RhcnRUaW1lKSAqIGtGcmFtZVJhdGUpIC8ga0ZyYW1lUmF0ZSAt
IChjdXJyZW50VGltZSAtIG1fc3RhcnRUaW1lKTsKKworICAgIGJvb2wgY29udGludWVBbmltYXRp
b24gPSBmYWxzZTsKKyAgICBpZiAobV9ob3Jpem9udGFsRGF0YS5tX3N0YXJ0VGltZSAmJiBtX2hv
cml6b250YWxEYXRhLmFuaW1hdGVTY3JvbGwoY3VycmVudFRpbWUgKyBkZWx0YVRvTmV4dEZyYW1l
KSkKKyAgICAgICAgY29udGludWVBbmltYXRpb24gPSB0cnVlOworICAgIGlmIChtX3ZlcnRpY2Fs
RGF0YS5tX3N0YXJ0VGltZSAmJiBtX3ZlcnRpY2FsRGF0YS5hbmltYXRlU2Nyb2xsKGN1cnJlbnRU
aW1lICsgZGVsdGFUb05leHRGcmFtZSkpCisgICAgICAgIGNvbnRpbnVlQW5pbWF0aW9uID0gdHJ1
ZTsKKyAgICBpZiAoY29udGludWVBbmltYXRpb24pIHsKKyAgICAgICAgZG91YmxlIG5leHRUaW1l
ckludGVydmFsID0gbWF4KGtNaW5pbXVtVGltZXJJbnRlcnZhbCwgZGVsdGFUb05leHRGcmFtZSk7
CisgICAgICAgIHRpbWVyLT5zdGFydE9uZVNob3QobmV4dFRpbWVySW50ZXJ2YWwpOwogICAgIH0K
ICAgICBub3RpdHlQb3NpdGlvbkNoYW5nZWQoKTsKIH0KIAotdm9pZCBTY3JvbGxBbmltYXRvck5v
bmU6OnN0b3BBbmltYXRpb25UaW1lcklmTmVlZGVkKFBlckF4aXNEYXRhKiBkYXRhKQordm9pZCBT
Y3JvbGxBbmltYXRvck5vbmU6OnN0b3BBbmltYXRpb25UaW1lcklmTmVlZGVkKCkKIHsKLSAgICBp
ZiAoZGF0YS0+bV9hbmltYXRpb25UaW1lci5pc0FjdGl2ZSgpKQotICAgICAgICBkYXRhLT5tX2Fu
aW1hdGlvblRpbWVyLnN0b3AoKTsKKyAgICBpZiAobV9hbmltYXRpb25UaW1lci5pc0FjdGl2ZSgp
KQorICAgICAgICBtX2FuaW1hdGlvblRpbWVyLnN0b3AoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0
b3JOb25lLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvck5vbmUuaApp
bmRleCAzZTdkZDEwNmFkZTIwOTRjMDhhM2JmNzc0OWNmZDYyODRkMmQxZGJjLi44MzIzNWQxNzYx
YmM2YTAwNmM1M2Y5OTVjNzJjN2QyOGFlNDU0YmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvck5vbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxBbmltYXRvck5vbmUuaApAQCAtMTEyLDE0ICsxMTIsMTYgQEAgcHJvdGVjdGVk
OgogICAgICAgICBDdXJ2ZSBtX3JlbGVhc2VDdXJ2ZTsKIAogICAgICAgICBTY3JvbGxiYXJPcmll
bnRhdGlvbiBtX29yaWVudGF0aW9uOwotICAgICAgICBUaW1lcjxTY3JvbGxBbmltYXRvck5vbmU+
IG1fYW5pbWF0aW9uVGltZXI7CiAgICAgfTsKIAogICAgIHZvaWQgYW5pbWF0aW9uVGltZXJGaXJl
ZChUaW1lcjxTY3JvbGxBbmltYXRvck5vbmU+Kik7Ci0gICAgdm9pZCBzdG9wQW5pbWF0aW9uVGlt
ZXJJZk5lZWRlZChQZXJBeGlzRGF0YSopOworICAgIHZvaWQgc3RvcEFuaW1hdGlvblRpbWVySWZO
ZWVkZWQoKTsKIAogICAgIFBlckF4aXNEYXRhIG1faG9yaXpvbnRhbERhdGE7CiAgICAgUGVyQXhp
c0RhdGEgbV92ZXJ0aWNhbERhdGE7CisKKyAgICBkb3VibGUgbV9zdGFydFRpbWU7CisgICAgVGlt
ZXI8U2Nyb2xsQW5pbWF0b3JOb25lPiBtX2FuaW1hdGlvblRpbWVyOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBmMzE4YTAxZGY3Mjg1
MWQ1ZWNlZGU3YWRjMjAyNzg3MDg0MTY2NWJkLi43Njg2MDIzYWE3M2I2NDhkMzVmOGViNzM5MTkw
YmQ0NzA3MWFmMGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBA
CisyMDExLTA4LTA1ICBTY290dCBCeWVyICA8c2NvdHRieWVyQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBTY3JvbGwgYW5pbWF0b3IgY2hhbmdlcyB0byBuYWlsIHRoZSBmcmFtZXJhdGUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1NjQ1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgSmFtZXMgUm9iaW5zb24uCisKKyAgICAgICAgKiB0ZXN0cy9TY3JvbGxB
bmltYXRvck5vbmVUZXN0LmNwcDoKKyAgICAgICAgKFRFU1QpOgorCiAyMDExLTA4LTA1ICBQYXZl
bCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0
b3I6IGltcGxlbWVudCBkb2NrL3VuZG9jayBpbiBXZWJLaXQyIHdpdGhvdXQgZ2V0dGluZyBpbnRv
IFdlYkNvcmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1Njcm9s
bEFuaW1hdG9yTm9uZVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9TY3Jv
bGxBbmltYXRvck5vbmVUZXN0LmNwcAppbmRleCA4M2IzYjg5MjhiNmE3YzA2N2U4ZjNjYjc3MWFh
OTBhMjQwY2U5YjllLi45MGI0YzJjYjJhNzZhMDBmMmE1ZDBiNDk3MmVmMmE0ZTQ5N2FmNGZhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1Njcm9sbEFuaW1hdG9yTm9u
ZVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvU2Nyb2xsQW5pbWF0
b3JOb25lVGVzdC5jcHAKQEAgLTc5LDggKzc5LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCByZXNl
dCgpCiAgICAgewotICAgICAgICBzdG9wQW5pbWF0aW9uVGltZXJJZk5lZWRlZCgmbV9ob3Jpem9u
dGFsRGF0YSk7Ci0gICAgICAgIHN0b3BBbmltYXRpb25UaW1lcklmTmVlZGVkKCZtX3ZlcnRpY2Fs
RGF0YSk7CisgICAgICAgIHN0b3BBbmltYXRpb25UaW1lcklmTmVlZGVkKCk7CiAgICAgICAgIG1f
Y3VycmVudFBvc1ggPSAwOwogICAgICAgICBtX2N1cnJlbnRQb3NZID0gMDsKICAgICAgICAgbV9o
b3Jpem9udGFsRGF0YS5yZXNldCgpOwpAQCAtOTMsNTcgKzkyLDU3IEBAIHB1YmxpYzoKIFRFU1Qo
U2Nyb2xsQW5pbWF0b3JFbmFibGVkLCBFbmFibGVkKQogewogICAgIE1vY2tTY3JvbGxhYmxlQXJl
YSBzY3JvbGxhYmxlQXJlYSh0cnVlKTsKLSAgICBNb2NrU2Nyb2xsQW5pbWF0b3JOb25lIHNjcm9s
bEFuaW1hdG9yQ2hyb21pdW0oJnNjcm9sbGFibGVBcmVhKTsKKyAgICBNb2NrU2Nyb2xsQW5pbWF0
b3JOb25lIHNjcm9sbEFuaW1hdG9yTm9uZSgmc2Nyb2xsYWJsZUFyZWEpOwogCiAgICAgRVhQRUNU
X0NBTEwoc2Nyb2xsYWJsZUFyZWEsIHNjcm9sbFNpemUoXykpLlRpbWVzKEF0TGVhc3QoMSkpLldp
bGxSZXBlYXRlZGx5KFJldHVybigxMDAwKSk7Ci0gICAgRVhQRUNUX0NBTEwoc2Nyb2xsYWJsZUFy
ZWEsIHNldFNjcm9sbE9mZnNldChfKSkuVGltZXMoQXRMZWFzdCgxKSk7CisgICAgRVhQRUNUX0NB
TEwoc2Nyb2xsYWJsZUFyZWEsIHNldFNjcm9sbE9mZnNldChfKSkuVGltZXMoMyk7CiAKLSAgICBz
Y3JvbGxBbmltYXRvckNocm9taXVtLnNjcm9sbChIb3Jpem9udGFsU2Nyb2xsYmFyLCBTY3JvbGxC
eUxpbmUsIDEwMCwgMSk7Ci0gICAgRVhQRUNUX05FKDEwMCwgc2Nyb2xsQW5pbWF0b3JDaHJvbWl1
bS5jdXJyZW50WCgpKTsKLSAgICBFWFBFQ1RfTkUoMCwgc2Nyb2xsQW5pbWF0b3JDaHJvbWl1bS5j
dXJyZW50WCgpKTsKLSAgICBFWFBFQ1RfRVEoMCwgc2Nyb2xsQW5pbWF0b3JDaHJvbWl1bS5jdXJy
ZW50WSgpKTsKLSAgICBzY3JvbGxBbmltYXRvckNocm9taXVtLnJlc2V0KCk7CisgICAgc2Nyb2xs
QW5pbWF0b3JOb25lLnNjcm9sbChIb3Jpem9udGFsU2Nyb2xsYmFyLCBTY3JvbGxCeUxpbmUsIDEw
MCwgMSk7CisgICAgRVhQRUNUX05FKDEwMCwgc2Nyb2xsQW5pbWF0b3JOb25lLmN1cnJlbnRYKCkp
OworICAgIEVYUEVDVF9ORSgwLCBzY3JvbGxBbmltYXRvck5vbmUuY3VycmVudFgoKSk7CisgICAg
RVhQRUNUX0VRKDAsIHNjcm9sbEFuaW1hdG9yTm9uZS5jdXJyZW50WSgpKTsKKyAgICBzY3JvbGxB
bmltYXRvck5vbmUucmVzZXQoKTsKIAotICAgIHNjcm9sbEFuaW1hdG9yQ2hyb21pdW0uc2Nyb2xs
KEhvcml6b250YWxTY3JvbGxiYXIsIFNjcm9sbEJ5UGFnZSwgMTAwLCAxKTsKLSAgICBFWFBFQ1Rf
TkUoMTAwLCBzY3JvbGxBbmltYXRvckNocm9taXVtLmN1cnJlbnRYKCkpOwotICAgIEVYUEVDVF9O
RSgwLCBzY3JvbGxBbmltYXRvckNocm9taXVtLmN1cnJlbnRYKCkpOwotICAgIEVYUEVDVF9FUSgw
LCBzY3JvbGxBbmltYXRvckNocm9taXVtLmN1cnJlbnRZKCkpOwotICAgIHNjcm9sbEFuaW1hdG9y
Q2hyb21pdW0ucmVzZXQoKTsKKyAgICBzY3JvbGxBbmltYXRvck5vbmUuc2Nyb2xsKEhvcml6b250
YWxTY3JvbGxiYXIsIFNjcm9sbEJ5UGFnZSwgMTAwLCAxKTsKKyAgICBFWFBFQ1RfTkUoMTAwLCBz
Y3JvbGxBbmltYXRvck5vbmUuY3VycmVudFgoKSk7CisgICAgRVhQRUNUX05FKDAsIHNjcm9sbEFu
aW1hdG9yTm9uZS5jdXJyZW50WCgpKTsKKyAgICBFWFBFQ1RfRVEoMCwgc2Nyb2xsQW5pbWF0b3JO
b25lLmN1cnJlbnRZKCkpOworICAgIHNjcm9sbEFuaW1hdG9yTm9uZS5yZXNldCgpOwogCi0gICAg
c2Nyb2xsQW5pbWF0b3JDaHJvbWl1bS5zY3JvbGwoSG9yaXpvbnRhbFNjcm9sbGJhciwgU2Nyb2xs
QnlQaXhlbCwgNCwgMjUpOwotICAgIEVYUEVDVF9ORSgxMDAsIHNjcm9sbEFuaW1hdG9yQ2hyb21p
dW0uY3VycmVudFgoKSk7Ci0gICAgRVhQRUNUX05FKDAsIHNjcm9sbEFuaW1hdG9yQ2hyb21pdW0u
Y3VycmVudFgoKSk7Ci0gICAgRVhQRUNUX0VRKDAsIHNjcm9sbEFuaW1hdG9yQ2hyb21pdW0uY3Vy
cmVudFkoKSk7Ci0gICAgc2Nyb2xsQW5pbWF0b3JDaHJvbWl1bS5yZXNldCgpOworICAgIHNjcm9s
bEFuaW1hdG9yTm9uZS5zY3JvbGwoSG9yaXpvbnRhbFNjcm9sbGJhciwgU2Nyb2xsQnlQaXhlbCwg
NCwgMjUpOworICAgIEVYUEVDVF9ORSgxMDAsIHNjcm9sbEFuaW1hdG9yTm9uZS5jdXJyZW50WCgp
KTsKKyAgICBFWFBFQ1RfTkUoMCwgc2Nyb2xsQW5pbWF0b3JOb25lLmN1cnJlbnRYKCkpOworICAg
IEVYUEVDVF9FUSgwLCBzY3JvbGxBbmltYXRvck5vbmUuY3VycmVudFkoKSk7CisgICAgc2Nyb2xs
QW5pbWF0b3JOb25lLnJlc2V0KCk7CiB9CiAKIFRFU1QoU2Nyb2xsQW5pbWF0b3JFbmFibGVkLCBE
aXNhYmxlZCkKIHsKICAgICBNb2NrU2Nyb2xsYWJsZUFyZWEgc2Nyb2xsYWJsZUFyZWEoZmFsc2Up
OwotICAgIE1vY2tTY3JvbGxBbmltYXRvck5vbmUgc2Nyb2xsQW5pbWF0b3JDaHJvbWl1bSgmc2Ny
b2xsYWJsZUFyZWEpOworICAgIE1vY2tTY3JvbGxBbmltYXRvck5vbmUgc2Nyb2xsQW5pbWF0b3JO
b25lKCZzY3JvbGxhYmxlQXJlYSk7CiAKICAgICBFWFBFQ1RfQ0FMTChzY3JvbGxhYmxlQXJlYSwg
c2Nyb2xsU2l6ZShfKSkuVGltZXMoQXRMZWFzdCgxKSkuV2lsbFJlcGVhdGVkbHkoUmV0dXJuKDEw
MDApKTsKLSAgICBFWFBFQ1RfQ0FMTChzY3JvbGxhYmxlQXJlYSwgc2V0U2Nyb2xsT2Zmc2V0KF8p
KS5UaW1lcyhBdExlYXN0KDEpKTsKLQotICAgIHNjcm9sbEFuaW1hdG9yQ2hyb21pdW0uc2Nyb2xs
KEhvcml6b250YWxTY3JvbGxiYXIsIFNjcm9sbEJ5TGluZSwgMTAwLCAxKTsKLSAgICBFWFBFQ1Rf
RVEoMTAwLCBzY3JvbGxBbmltYXRvckNocm9taXVtLmN1cnJlbnRYKCkpOwotICAgIEVYUEVDVF9F
USgwLCBzY3JvbGxBbmltYXRvckNocm9taXVtLmN1cnJlbnRZKCkpOwotICAgIHNjcm9sbEFuaW1h
dG9yQ2hyb21pdW0ucmVzZXQoKTsKLQotICAgIHNjcm9sbEFuaW1hdG9yQ2hyb21pdW0uc2Nyb2xs
KEhvcml6b250YWxTY3JvbGxiYXIsIFNjcm9sbEJ5UGFnZSwgMTAwLCAxKTsKLSAgICBFWFBFQ1Rf
RVEoMTAwLCBzY3JvbGxBbmltYXRvckNocm9taXVtLmN1cnJlbnRYKCkpOwotICAgIEVYUEVDVF9F
USgwLCBzY3JvbGxBbmltYXRvckNocm9taXVtLmN1cnJlbnRZKCkpOwotICAgIHNjcm9sbEFuaW1h
dG9yQ2hyb21pdW0ucmVzZXQoKTsKLQotICAgIHNjcm9sbEFuaW1hdG9yQ2hyb21pdW0uc2Nyb2xs
KEhvcml6b250YWxTY3JvbGxiYXIsIFNjcm9sbEJ5RG9jdW1lbnQsIDEwMCwgMSk7Ci0gICAgRVhQ
RUNUX0VRKDEwMCwgc2Nyb2xsQW5pbWF0b3JDaHJvbWl1bS5jdXJyZW50WCgpKTsKLSAgICBFWFBF
Q1RfRVEoMCwgc2Nyb2xsQW5pbWF0b3JDaHJvbWl1bS5jdXJyZW50WSgpKTsKLSAgICBzY3JvbGxB
bmltYXRvckNocm9taXVtLnJlc2V0KCk7Ci0KLSAgICBzY3JvbGxBbmltYXRvckNocm9taXVtLnNj
cm9sbChIb3Jpem9udGFsU2Nyb2xsYmFyLCBTY3JvbGxCeVBpeGVsLCAxMDAsIDEpOwotICAgIEVY
UEVDVF9FUSgxMDAsIHNjcm9sbEFuaW1hdG9yQ2hyb21pdW0uY3VycmVudFgoKSk7Ci0gICAgRVhQ
RUNUX0VRKDAsIHNjcm9sbEFuaW1hdG9yQ2hyb21pdW0uY3VycmVudFkoKSk7Ci0gICAgc2Nyb2xs
QW5pbWF0b3JDaHJvbWl1bS5yZXNldCgpOworICAgIEVYUEVDVF9DQUxMKHNjcm9sbGFibGVBcmVh
LCBzZXRTY3JvbGxPZmZzZXQoXykpLlRpbWVzKDQpOworCisgICAgc2Nyb2xsQW5pbWF0b3JOb25l
LnNjcm9sbChIb3Jpem9udGFsU2Nyb2xsYmFyLCBTY3JvbGxCeUxpbmUsIDEwMCwgMSk7CisgICAg
RVhQRUNUX0VRKDEwMCwgc2Nyb2xsQW5pbWF0b3JOb25lLmN1cnJlbnRYKCkpOworICAgIEVYUEVD
VF9FUSgwLCBzY3JvbGxBbmltYXRvck5vbmUuY3VycmVudFkoKSk7CisgICAgc2Nyb2xsQW5pbWF0
b3JOb25lLnJlc2V0KCk7CisKKyAgICBzY3JvbGxBbmltYXRvck5vbmUuc2Nyb2xsKEhvcml6b250
YWxTY3JvbGxiYXIsIFNjcm9sbEJ5UGFnZSwgMTAwLCAxKTsKKyAgICBFWFBFQ1RfRVEoMTAwLCBz
Y3JvbGxBbmltYXRvck5vbmUuY3VycmVudFgoKSk7CisgICAgRVhQRUNUX0VRKDAsIHNjcm9sbEFu
aW1hdG9yTm9uZS5jdXJyZW50WSgpKTsKKyAgICBzY3JvbGxBbmltYXRvck5vbmUucmVzZXQoKTsK
KworICAgIHNjcm9sbEFuaW1hdG9yTm9uZS5zY3JvbGwoSG9yaXpvbnRhbFNjcm9sbGJhciwgU2Ny
b2xsQnlEb2N1bWVudCwgMTAwLCAxKTsKKyAgICBFWFBFQ1RfRVEoMTAwLCBzY3JvbGxBbmltYXRv
ck5vbmUuY3VycmVudFgoKSk7CisgICAgRVhQRUNUX0VRKDAsIHNjcm9sbEFuaW1hdG9yTm9uZS5j
dXJyZW50WSgpKTsKKyAgICBzY3JvbGxBbmltYXRvck5vbmUucmVzZXQoKTsKKworICAgIHNjcm9s
bEFuaW1hdG9yTm9uZS5zY3JvbGwoSG9yaXpvbnRhbFNjcm9sbGJhciwgU2Nyb2xsQnlQaXhlbCwg
MTAwLCAxKTsKKyAgICBFWFBFQ1RfRVEoMTAwLCBzY3JvbGxBbmltYXRvck5vbmUuY3VycmVudFgo
KSk7CisgICAgRVhQRUNUX0VRKDAsIHNjcm9sbEFuaW1hdG9yTm9uZS5jdXJyZW50WSgpKTsKKyAg
ICBzY3JvbGxBbmltYXRvck5vbmUucmVzZXQoKTsKIH0KIAogY2xhc3MgU2Nyb2xsQW5pbWF0b3JO
b25lVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsK
</data>

          </attachment>
      

    </bug>

</bugzilla>