<?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>135476</bug_id>
          
          <creation_ts>2014-07-31 15:12:07 -0700</creation_ts>
          <short_desc>Implement long mouse press over links. Part of 135257 - Add long mouse press gesture.</short_desc>
          <delta_ts>2014-08-08 17:00:24 -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>
          <dependson>135276</dependson>
          <blocked>135257</blocked>
    
    <blocked>135767</blocked>
    
    <blocked>135515</blocked>
    
    <blocked>135682</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Peyton Randolph">prandolph</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>prandolph</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1026083</commentid>
    <comment_count>0</comment_count>
    <who name="Peyton Randolph">prandolph</who>
    <bug_when>2014-07-31 15:12:07 -0700</bug_when>
    <thetext>Implement long mouse press over links. Part of 135257 - Add long-press gesture to Mac.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1026085</commentid>
    <comment_count>1</comment_count>
      <attachid>235850</attachid>
    <who name="Peyton Randolph">prandolph</who>
    <bug_when>2014-07-31 15:14:14 -0700</bug_when>
    <thetext>Created attachment 235850
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1026090</commentid>
    <comment_count>2</comment_count>
      <attachid>235850</attachid>
    <who name="Peyton Randolph">prandolph</who>
    <bug_when>2014-07-31 15:27:04 -0700</bug_when>
    <thetext>Comment on attachment 235850
Patch

webkit-patch failed to edit the changelog. Uploading a new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1026095</commentid>
    <comment_count>3</comment_count>
      <attachid>235855</attachid>
    <who name="Peyton Randolph">prandolph</who>
    <bug_when>2014-07-31 15:34:16 -0700</bug_when>
    <thetext>Created attachment 235855
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1026331</commentid>
    <comment_count>4</comment_count>
      <attachid>235855</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-08-01 14:13:23 -0700</bug_when>
    <thetext>Comment on attachment 235855
Patch

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

&gt; Source/WebCore/page/EventHandler.cpp:167
&gt; +const double longMousePressDelay = 0.5;

This could use std::chrono so the units are explicit.

&gt; Source/WebCore/page/EventHandler.cpp:168
&gt; +const int longMousePressHysteresis = 5;

What is this value? Pixels? The name should make it clear.

&gt; Source/WebCore/page/EventHandler.cpp:1583
&gt; +    // FIXME: bubble long mouse press up to UI process.

This comment doesn&apos;t make sense here, since EventHandler is also used in non-mulitprocess mode.

&gt; Source/WebCore/page/EventHandler.cpp:1588
&gt; +    // FIXME: bubble long mouse press up to UI process.

Ditto, etc.

&gt; Source/WebCore/page/EventHandler.cpp:1627
&gt; +        if (FrameView* view = m_frame.view())
&gt; +            view-&gt;setCursor(pointerCursor());

It seems a bit odd to reset the cursor here. Why?

&gt; Source/WebCore/page/EventHandler.h:384
&gt; +    bool mouseHysteresisExceeded(const FloatPoint&amp;, const int) const;

The second parameter should be named here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1026390</commentid>
    <comment_count>5</comment_count>
    <who name="Peyton Randolph">prandolph</who>
    <bug_when>2014-08-01 16:17:32 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 235855 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=235855&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/page/EventHandler.cpp:167
&gt; &gt; +const double longMousePressDelay = 0.5;
&gt; 
&gt; This could use std::chrono so the units are explicit.

Done.

&gt; 
&gt; &gt; Source/WebCore/page/EventHandler.cpp:168
&gt; &gt; +const int longMousePressHysteresis = 5;
&gt; 
&gt; What is this value? Pixels? The name should make it clear.

Renamed to longMousePressPointsHysteresis.

&gt; 
&gt; &gt; Source/WebCore/page/EventHandler.cpp:1583
&gt; &gt; +    // FIXME: bubble long mouse press up to UI process.
&gt; 
&gt; This comment doesn&apos;t make sense here, since EventHandler is also used in non-mulitprocess mode.

Reworded to FIXME: bubble long mouse press up to the client.

&gt; 
&gt; &gt; Source/WebCore/page/EventHandler.cpp:1588
&gt; &gt; +    // FIXME: bubble long mouse press up to UI process.
&gt; 
&gt; Ditto, etc.

Done.
&gt; 
&gt; &gt; Source/WebCore/page/EventHandler.cpp:1627
&gt; &gt; +        if (FrameView* view = m_frame.view())
&gt; &gt; +            view-&gt;setCursor(pointerCursor());
&gt; 
&gt; It seems a bit odd to reset the cursor here. Why?

Removed. The thinking was to reset the cursor because if the user moves their mouse a significant distance after recognizing the long press, it looks odd if the cursor is still a pointer, i-bar, or a wacky custom cursor. I added this because HandleDrag does the same. But it&apos;s not really necessary.

&gt; 
&gt; &gt; Source/WebCore/page/EventHandler.h:384
&gt; &gt; +    bool mouseHysteresisExceeded(const FloatPoint&amp;, const int) const;
&gt; 
&gt; The second parameter should be named here.

Named pointsThreshold.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1026395</commentid>
    <comment_count>6</comment_count>
      <attachid>235922</attachid>
    <who name="Peyton Randolph">prandolph</who>
    <bug_when>2014-08-01 16:21:23 -0700</bug_when>
    <thetext>Created attachment 235922
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1027655</commentid>
    <comment_count>7</comment_count>
      <attachid>235922</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-08-07 15:12:33 -0700</bug_when>
    <thetext>Comment on attachment 235922
Patch

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

&gt; Source/WebCore/page/EventHandler.cpp:167
&gt; +const std::chrono::milliseconds longMousePressDelay = std::chrono::milliseconds(500);

s/std::chrono::milliseconds(500)/500_ms/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1027717</commentid>
    <comment_count>8</comment_count>
      <attachid>236247</attachid>
    <who name="Peyton Randolph">prandolph</who>
    <bug_when>2014-08-07 17:56:19 -0700</bug_when>
    <thetext>Created attachment 236247
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1027930</commentid>
    <comment_count>9</comment_count>
      <attachid>236247</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-08-08 13:57:39 -0700</bug_when>
    <thetext>Comment on attachment 236247
Patch

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

&gt; Source/WebCore/page/EventHandler.cpp:166
&gt; +#if ENABLE(LONG_MOUSE_PRESS)

Simon noted that you might want to get rid of these ENABLEs, since there&apos;s nothing particularly scary or platform-specific about this feature, and it has/will have a runtime flag, and won&apos;t do anything if the client doesn&apos;t care, anyway. That said, I think that can happen later, perhaps in https://bugs.webkit.org/show_bug.cgi?id=135721.

&gt; Source/WebCore/page/EventHandler.cpp:168
&gt; +const int longMousePressPointsHysteresis = 5;

Maybe &quot;maximumDistanceForLongMousePress&quot;, or something (that&apos;s not a great name either, but a little better). &quot;pointsHysteresis&quot; reads oddly to me.

&gt; Source/WebCore/page/EventHandler.cpp:780
&gt; +        beginLongMousePress();

Is this &quot;beginTrackingPotentialLongMousePress&quot;? because I don&apos;t think the *long* mouse press is technically beginning yet. But I dunno!

&gt; Source/WebCore/page/EventHandler.cpp:1585
&gt; +    // FIXME: bubble long mouse press up to the client.

Capital &apos;B&apos;, perhaps. Also, do you have a bug number for these?

&gt; Source/WebCore/page/EventHandler.cpp:1619
&gt; +    if (mouseEvent.button() != LeftButton || mouseEvent.type() != PlatformEvent::MouseMoved)

Why would long press be restricted to the left mouse button? Should we not support long-press of any arbitrary button and let the client decide which ones it cares about? I could see that being useful.

&gt; Source/WebCore/page/EventHandler.cpp:1630
&gt; +    if (!mouseHysteresisExceeded(mouseEvent.position(), longMousePressPointsHysteresis))
&gt; +        return false;
&gt; +
&gt; +    cancelLongMousePress();
&gt; +
&gt; +    return false;

I think this would read better as just:

if (mouseHysteresisExceeded(mouseEvent.position(), longMousePressPointsHysteresis))
    cancelLongMousePress();

return false;

&gt; Source/WebCore/page/EventHandler.cpp:3527
&gt; +bool EventHandler::mouseHysteresisExceeded(const FloatPoint&amp; viewportLocation, const int pointsThreshold) const

This is still technically about drag, in some sense. Maybe &quot;dragDistanceExceedsThreshold&quot;? That sounds good in an if statement (&quot;if dragDistanceExceedsThreshold&quot;).

&gt; Source/WebCore/page/EventHandler.cpp:3535
&gt; +    return abs(delta.width()) &gt;= pointsThreshold || abs(delta.height()) &gt;= pointsThreshold;

Should this be something like delta.diagonalLengthSquared() &gt;= pointsThreshold * pointsThreshold, to make a circle of hysteresis?

I see you got this from existing code, so maybe don&apos;t change it, but I wonder why!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1027949</commentid>
    <comment_count>10</comment_count>
    <who name="Peyton Randolph">prandolph</who>
    <bug_when>2014-08-08 14:32:17 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 236247 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=236247&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/page/EventHandler.cpp:166
&gt; &gt; +#if ENABLE(LONG_MOUSE_PRESS)
&gt; 
&gt; Simon noted that you might want to get rid of these ENABLEs, since there&apos;s nothing particularly scary or platform-specific about this feature, and it has/will have a runtime flag, and won&apos;t do anything if the client doesn&apos;t care, anyway. That said, I think that can happen later, perhaps in https://bugs.webkit.org/show_bug.cgi?id=135721.

I agree with doing so later. I wasn&apos;t up-to-date on WebKit conventions when I added the flag. Ideally the runtime switch (https://bugs.webkit.org/show_bug.cgi?id=135682) would have come first.

&gt; 
&gt; &gt; Source/WebCore/page/EventHandler.cpp:168
&gt; &gt; +const int longMousePressPointsHysteresis = 5;
&gt; 
&gt; Maybe &quot;maximumDistanceForLongMousePress&quot;, or something (that&apos;s not a great name either, but a little better). &quot;pointsHysteresis&quot; reads oddly to me.

I&apos;ve renamed to MaximumLongMousePressDragDistance and added a comment that its units are in points.

&gt; 
&gt; &gt; Source/WebCore/page/EventHandler.cpp:780
&gt; &gt; +        beginLongMousePress();
&gt; 
&gt; Is this &quot;beginTrackingPotentialLongMousePress&quot;? because I don&apos;t think the *long* mouse press is technically beginning yet. But I dunno!

The term is borrowed from UIKit&apos;s gesture recognizers. It means &quot;begin determining if a long mouse press is occurring.&quot; 

I like your interpretation though. I will rename this and cancelLongMousePress to cancelTrackingPotentialLongMousePress as well.

&gt; 
&gt; &gt; Source/WebCore/page/EventHandler.cpp:1585
&gt; &gt; +    // FIXME: bubble long mouse press up to the client.
&gt; 
&gt; Capital &apos;B&apos;, perhaps. Also, do you have a bug number for these?

Capitalized and added bug number, https://bugs.webkit.org/show_bug.cgi?id=135580

&gt; 
&gt; &gt; Source/WebCore/page/EventHandler.cpp:1619
&gt; &gt; +    if (mouseEvent.button() != LeftButton || mouseEvent.type() != PlatformEvent::MouseMoved)
&gt; 
&gt; Why would long press be restricted to the left mouse button? Should we not support long-press of any arbitrary button and let the client decide which ones it cares about? I could see that being useful.

Ah, good idea. For this patch, I would like to restrict ourselves to left mouse presses because it&apos;s difficult enough test the single case of left-mouse-pressing links. I filed a bug tracking the extension to arbitrary mouse clicks: https://bugs.webkit.org/show_bug.cgi?id=135767.

&gt; 
&gt; &gt; Source/WebCore/page/EventHandler.cpp:1630
&gt; &gt; +    if (!mouseHysteresisExceeded(mouseEvent.position(), longMousePressPointsHysteresis))
&gt; &gt; +        return false;
&gt; &gt; +
&gt; &gt; +    cancelLongMousePress();
&gt; &gt; +
&gt; &gt; +    return false;
&gt; 
&gt; I think this would read better as just:
&gt; 
&gt; if (mouseHysteresisExceeded(mouseEvent.position(), longMousePressPointsHysteresis))
&gt;     cancelLongMousePress();
&gt; 
&gt; return false;
&gt; 
Done.

&gt; &gt; Source/WebCore/page/EventHandler.cpp:3527
&gt; &gt; +bool EventHandler::mouseHysteresisExceeded(const FloatPoint&amp; viewportLocation, const int pointsThreshold) const
&gt; 
&gt; This is still technically about drag, in some sense. Maybe &quot;dragDistanceExceedsThreshold&quot;? That sounds good in an if statement (&quot;if dragDistanceExceedsThreshold&quot;).

While dragging requires a mouse button to be pressed, this method does not. Maybe mouseMovementExceedsThreshold?

&gt; 
&gt; &gt; Source/WebCore/page/EventHandler.cpp:3535
&gt; &gt; +    return abs(delta.width()) &gt;= pointsThreshold || abs(delta.height()) &gt;= pointsThreshold;
&gt; 
&gt; Should this be something like delta.diagonalLengthSquared() &gt;= pointsThreshold * pointsThreshold, to make a circle of hysteresis?
&gt; 
&gt; I see you got this from existing code, so maybe don&apos;t change it, but I wonder why!

I agree, the box model is pretty weird :/ I&apos;m going to leave it as-is since this code is used by dragging, so I don&apos;t know if there&apos;s something else counting on this behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1027962</commentid>
    <comment_count>11</comment_count>
      <attachid>236311</attachid>
    <who name="Peyton Randolph">prandolph</who>
    <bug_when>2014-08-08 15:00:05 -0700</bug_when>
    <thetext>Created attachment 236311
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1027986</commentid>
    <comment_count>12</comment_count>
      <attachid>236311</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-08-08 16:07:57 -0700</bug_when>
    <thetext>Comment on attachment 236311
Patch

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

&gt; Source/WebCore/page/EventHandler.cpp:136
&gt; +const std::chrono::milliseconds LongMousePressRecognitionDelay = 500_ms;
&gt; +const int MaximumLongMousePressDragDistance = 5; // in points.

Lowercase leading letters was actually correct, the things around here are wrong :D

&gt; Source/WebCore/page/EventHandler.h:384
&gt; +    bool mouseMovementExceedsThreshold(const FloatPoint&amp;, const int pointsThreshold) const;

Sounds good to me!

Don&apos;t think you need the &apos;const&apos; on the int parameter (some would even say const reference is overkill for FloatPoint, but I will leave that be).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1027988</commentid>
    <comment_count>13</comment_count>
    <who name="Peyton Randolph">prandolph</who>
    <bug_when>2014-08-08 16:15:01 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (From update of attachment 236311 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=236311&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/page/EventHandler.cpp:136
&gt; &gt; +const std::chrono::milliseconds LongMousePressRecognitionDelay = 500_ms;
&gt; &gt; +const int MaximumLongMousePressDragDistance = 5; // in points.
&gt; 
&gt; Lowercase leading letters was actually correct, the things around here are wrong :D

Ah, the constants above lie. Fixed.
&gt; 
&gt; &gt; Source/WebCore/page/EventHandler.h:384
&gt; &gt; +    bool mouseMovementExceedsThreshold(const FloatPoint&amp;, const int pointsThreshold) const;
&gt; 
&gt; Sounds good to me!
&gt; 
&gt; Don&apos;t think you need the &apos;const&apos; on the int parameter (some would even say const reference is overkill for FloatPoint, but I will leave that be).

Removed the const int.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1027991</commentid>
    <comment_count>14</comment_count>
      <attachid>236321</attachid>
    <who name="Peyton Randolph">prandolph</who>
    <bug_when>2014-08-08 16:16:51 -0700</bug_when>
    <thetext>Created attachment 236321
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1028011</commentid>
    <comment_count>15</comment_count>
      <attachid>236321</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-08-08 17:00:21 -0700</bug_when>
    <thetext>Comment on attachment 236321
Patch

Clearing flags on attachment: 236321

Committed r172367: &lt;http://trac.webkit.org/changeset/172367&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1028012</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-08-08 17:00:24 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>235850</attachid>
            <date>2014-07-31 15:14:14 -0700</date>
            <delta_ts>2014-07-31 15:27:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-135476-20140731151401.patch</filename>
            <type>text/plain</type>
            <size>10360</size>
            <attacher name="Peyton Randolph">prandolph</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTcxODgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0V2ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5j
cHAKaW5kZXggODdiYjIxM2ZkMWQyOTc2ZGI4NmI5ZGEwOTkwNGViMzg4MGY5OWZlZi4uZDI3NTI5
NDM4OTYwMDMxZTNjMjIwNzI0ZGFhNDVkMzI4YmZjMzQ2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZl
bnRIYW5kbGVyLmNwcApAQCAtMTYyLDYgKzE2MiwxMSBAQCBjb25zdCBkb3VibGUgY3Vyc29yVXBk
YXRlSW50ZXJ2YWwgPSAwLjAyOwogCiBjb25zdCBpbnQgbWF4aW11bUN1cnNvclNpemUgPSAxMjg7
CiAjZW5kaWYKKyAgICAKKyNpZiBFTkFCTEUoTE9OR19NT1VTRV9QUkVTUykKK2NvbnN0IGRvdWJs
ZSBsb25nTW91c2VQcmVzc0RlbGF5ID0gMC41OworY29uc3QgaW50IGxvbmdNb3VzZVByZXNzSHlz
dGVyZXNpcyA9IDU7CisjZW5kaWYKIAogI2lmIEVOQUJMRShNT1VTRV9DVVJTT1JfU0NBTEUpCiAv
LyBJdCdzIHByZXR0eSB1bmxpa2VseSB0aGF0IGEgc2NhbGUgb2YgbGVzcyB0aGFuIG9uZSB3b3Vs
ZCBldmVyIGJlIHVzZWQuIEJ1dCBhbGwgd2UgcmVhbGx5CkBAIC0zNzEsNiArMzc2LDEwIEBAIEV2
ZW50SGFuZGxlcjo6RXZlbnRIYW5kbGVyKEZyYW1lJiBmcmFtZSkKICNpZiBFTkFCTEUoQ1VSU09S
X1NVUFBPUlQpCiAgICAgLCBtX2N1cnNvclVwZGF0ZVRpbWVyKHRoaXMsICZFdmVudEhhbmRsZXI6
OmN1cnNvclVwZGF0ZVRpbWVyRmlyZWQpCiAjZW5kaWYKKyNpZiBFTkFCTEUoTE9OR19NT1VTRV9Q
UkVTUykKKyAgICAsIG1fbG9uZ01vdXNlUHJlc3NUaW1lcih0aGlzLCAmRXZlbnRIYW5kbGVyOjps
b25nTW91c2VQcmVzc1RpbWVyRmlyZWQpCisgICAgLCBtX2RpZExvbmdNb3VzZVByZXNzKGZhbHNl
KQorI2VuZGlmCiAgICAgLCBtX2F1dG9zY3JvbGxDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8
QXV0b3Njcm9sbENvbnRyb2xsZXI+KCkpCiAgICAgLCBtX21vdXNlRG93bk1heVN0YXJ0QXV0b3Nj
cm9sbChmYWxzZSkKICAgICAsIG1fbW91c2VEb3duV2FzSW5TdWJmcmFtZShmYWxzZSkKQEAgLTQ0
Nyw2ICs0NTYsOSBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6Y2xlYXIoKQogI2lmIEVOQUJMRShDVVJT
T1JfVklTSUJJTElUWSkKICAgICBjYW5jZWxBdXRvSGlkZUN1cnNvclRpbWVyKCk7CiAjZW5kaWYK
KyNpZiBFTkFCTEUoTE9OR19NT1VTRV9QUkVTUykKKyAgICBjbGVhckxvbmdNb3VzZVByZXNzU3Rh
dGUoKTsKKyNlbmRpZgogICAgIG1fcmVzaXplTGF5ZXIgPSAwOwogICAgIG1fZWxlbWVudFVuZGVy
TW91c2UgPSBudWxscHRyOwogICAgIG1fbGFzdEVsZW1lbnRVbmRlck1vdXNlID0gbnVsbHB0cjsK
QEAgLTc2Miw2ICs3NzQsMTEgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NF
dmVudChjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBldmUKICAgICAgICAgfQog
ICAgIH0KIAorI2lmIEVOQUJMRShMT05HX01PVVNFX1BSRVNTKQorICAgIGlmIChldmVudC5pc092
ZXJMaW5rKCkgJiYgZXZlbnQuZXZlbnQoKS5idXR0b24oKSA9PSBMZWZ0QnV0dG9uKQorICAgICAg
ICBzdGFydExvbmdNb3VzZVByZXNzKCk7CisjZW5kaWYKKwogICAgIC8vIFdlIGRvbid0IGRvIHRo
aXMgYXQgdGhlIHN0YXJ0IG9mIG1vdXNlIGRvd24gaGFuZGxpbmcsCiAgICAgLy8gYmVjYXVzZSB3
ZSBkb24ndCB3YW50IHRvIGRvIGl0IHVudGlsIHdlIGtub3cgd2UgZGlkbid0IGhpdCBhIHdpZGdl
dC4KICAgICBpZiAoc2luZ2xlQ2xpY2spCkBAIC04NDYsNiArODYzLDExIEBAIGJvb2wgRXZlbnRI
YW5kbGVyOjpldmVudE1heVN0YXJ0RHJhZyhjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50
KSBjb25zdAogCiAgICAgaWYgKGV2ZW50LmJ1dHRvbigpICE9IExlZnRCdXR0b24gfHwgZXZlbnQu
Y2xpY2tDb3VudCgpICE9IDEpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKworI2lmIEVOQUJMRShM
T05HX01PVVNFX1BSRVNTKQorICAgIGlmIChtX2RpZExvbmdNb3VzZVByZXNzKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisjZW5kaWYKICAgICAKICAgICBGcmFtZVZpZXcqIHZpZXcgPSBtX2ZyYW1l
LnZpZXcoKTsKICAgICBpZiAoIXZpZXcpCkBAIC0xMDAyLDYgKzEwMjQsMTMgQEAgYm9vbCBFdmVu
dEhhbmRsZXI6OmhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0
VGVzdFJlc3VsdHMmIGUKICAgICBtX21vdXNlRG93bldhc0luU3ViZnJhbWUgPSBmYWxzZTsKICAg
CiAgICAgYm9vbCBoYW5kbGVkID0gZmFsc2U7CisgICAgCisjaWYgRU5BQkxFKExPTkdfTU9VU0Vf
UFJFU1MpCisgICAgaWYgKCFtX2RpZExvbmdNb3VzZVByZXNzICYmIGV2ZW50LmV2ZW50KCkuYnV0
dG9uKCkgPT0gTGVmdEJ1dHRvbikgeworICAgICAgICBjYW5jZWxMb25nTW91c2VQcmVzcygpOwor
ICAgICAgICBjbGVhckxvbmdNb3VzZVByZXNzU3RhdGUoKTsKKyAgICB9CisjZW5kaWYKIAogICAg
IC8vIENsZWFyIHRoZSBzZWxlY3Rpb24gaWYgdGhlIG1vdXNlIGRpZG4ndCBtb3ZlIGFmdGVyIHRo
ZSBsYXN0IG1vdXNlCiAgICAgLy8gcHJlc3MgYW5kIGl0J3Mgbm90IGEgY29udGV4dCBtZW51IGNs
aWNrLiAgV2UgZG8gdGhpcyBzbyB3aGVuIGNsaWNraW5nCkBAIC0xNTQ1LDYgKzE1NzQsNzIgQEAg
dm9pZCBFdmVudEhhbmRsZXI6OmF1dG9IaWRlQ3Vyc29yVGltZXJGaXJlZChUaW1lcjxFdmVudEhh
bmRsZXI+JiB0aW1lcikKICAgICAgICAgdmlldy0+c2V0Q3Vyc29yKG1fY3VycmVudE1vdXNlQ3Vy
c29yKTsKIH0KICNlbmRpZgorICAgIAorI2lmIEVOQUJMRShMT05HX01PVVNFX1BSRVNTKQordm9p
ZCBFdmVudEhhbmRsZXI6OnN0YXJ0TG9uZ01vdXNlUHJlc3MoKQoreworICAgIGNsZWFyTG9uZ01v
dXNlUHJlc3NTdGF0ZSgpOworICAgIAorICAgIG1fbG9uZ01vdXNlUHJlc3NUaW1lci5zdGFydE9u
ZVNob3QobG9uZ01vdXNlUHJlc3NEZWxheSk7CisgICAgCisgICAgLy8gRklYTUU6IHNlbmQgbGlu
ayBpbmZvcm1hdGlvbiB1cCB0byBVSSBwcm9jZXNzLgorfQorICAgIAordm9pZCBFdmVudEhhbmRs
ZXI6OnRyaWdnZXJMb25nTW91c2VQcmVzcygpCit7CisgICAgLy8gRklYTUU6IHNlbmQgbGluayBp
bmZvcm1hdGlvbiB1cCB0byBVSSBwcm9jZXNzLgorCit9CisgICAgCit2b2lkIEV2ZW50SGFuZGxl
cjo6Y2FuY2VsTG9uZ01vdXNlUHJlc3MoKQoreworICAgIGlmICghbV9sb25nTW91c2VQcmVzc1Rp
bWVyLmlzQWN0aXZlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGNsZWFyTG9uZ01vdXNlUHJl
c3NTdGF0ZSgpOworICAgIC8vIEZJWE1FOiBzZW5kIGxpbmsgaW5mb3JtYXRpb24gdXAgdG8gVUkg
cHJvY2Vzcy4KK30KKwordm9pZCBFdmVudEhhbmRsZXI6OmNsZWFyTG9uZ01vdXNlUHJlc3NTdGF0
ZSgpCit7CisgICAgbV9sb25nTW91c2VQcmVzc1RpbWVyLnN0b3AoKTsKKyAgICBtX2RpZExvbmdN
b3VzZVByZXNzID0gZmFsc2U7Cit9CisgICAgCit2b2lkIEV2ZW50SGFuZGxlcjo6bG9uZ01vdXNl
UHJlc3NUaW1lckZpcmVkKFRpbWVyPEV2ZW50SGFuZGxlcj4mIHRpbWVyKQoreworICAgIEFTU0VS
VF9VTlVTRUQodGltZXIsICZ0aW1lciA9PSAmbV9sb25nTW91c2VQcmVzc1RpbWVyKTsKKyAgICAK
KyAgICBtX2RpZExvbmdNb3VzZVByZXNzID0gdHJ1ZTsKKyAgICAKKyAgICAvLyBDbGVhciBtb3Vz
ZSBzdGF0ZSB0byBhdm9pZCBpbml0aWF0aW5nIGEgZHJhZy4KKyAgICBtX21vdXNlUHJlc3NlZCA9
IGZhbHNlOworICAgIGludmFsaWRhdGVDbGljaygpOworICAgIAorICAgIHRyaWdnZXJMb25nTW91
c2VQcmVzcygpOworfQorICAgIAorYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZUxvbmdNb3VzZVBy
ZXNzTW91c2VNb3ZlZEV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgbW91c2VFdmVudCkK
K3sKKyAgICBpZiAobW91c2VFdmVudC5idXR0b24oKSAhPSBMZWZ0QnV0dG9uIHx8IG1vdXNlRXZl
bnQudHlwZSgpICE9IFBsYXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIGlmIChtX2RpZExvbmdNb3VzZVByZXNzKSB7CisgICAgICAgIGlmIChGcmFt
ZVZpZXcqIHZpZXcgPSBtX2ZyYW1lLnZpZXcoKSkKKyAgICAgICAgICAgIHZpZXctPnNldEN1cnNv
cihwb2ludGVyQ3Vyc29yKCkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBp
ZiAoIW1vdXNlSHlzdGVyZXNpc0V4Y2VlZGVkKG1vdXNlRXZlbnQucG9zaXRpb24oKSwgbG9uZ01v
dXNlUHJlc3NIeXN0ZXJlc2lzKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgY2FuY2Vs
TG9uZ01vdXNlUHJlc3MoKTsKKyAgICBjbGVhckxvbmdNb3VzZVByZXNzU3RhdGUoKTsKKworICAg
IHJldHVybiBmYWxzZTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShMT05HX01PVVNFX1BSRVNTKQog
CiBzdGF0aWMgTGF5b3V0UG9pbnQgZG9jdW1lbnRQb2ludEZvcldpbmRvd1BvaW50KEZyYW1lJiBm
cmFtZSwgY29uc3QgSW50UG9pbnQmIHdpbmRvd1BvaW50KQogewpAQCAtMTc5Niw2ICsxODkxLDEx
IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZU1vdmVFdmVudChjb25zdCBQbGF0Zm9y
bU1vdXNlRXZlbnQmIG1vdXNlRXZlbnQsIEhpCiAgICAgICAgIHJldHVybiB0cnVlOwogI2VuZGlm
CiAKKyNpZiBFTkFCTEUoTE9OR19NT1VTRV9QUkVTUykKKyAgICBpZiAoaGFuZGxlTG9uZ01vdXNl
UHJlc3NNb3VzZU1vdmVkRXZlbnQobW91c2VFdmVudCkpCisgICAgICAgIHJldHVybiB0cnVlOwor
I2VuZGlmCisKICAgICBSZWZQdHI8RnJhbWVWaWV3PiBwcm90ZWN0b3IobV9mcmFtZS52aWV3KCkp
OwogICAgIAogICAgIHNldExhc3RLbm93bk1vdXNlUG9zaXRpb24obW91c2VFdmVudCk7CkBAIC0x
ODY0LDcgKzE5NjQsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VNb3ZlRXZlbnQo
Y29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBtb3VzZUV2ZW50LCBIaQogCiAgICAgYm9vbCBzd2Fs
bG93RXZlbnQgPSBmYWxzZTsKICAgICBSZWZQdHI8RnJhbWU+IG5ld1N1YmZyYW1lID0gbV9jYXB0
dXJpbmdNb3VzZUV2ZW50c0VsZW1lbnQuZ2V0KCkgPyBzdWJmcmFtZUZvclRhcmdldE5vZGUobV9j
YXB0dXJpbmdNb3VzZUV2ZW50c0VsZW1lbnQuZ2V0KCkpIDogc3ViZnJhbWVGb3JIaXRUZXN0UmVz
dWx0KG1ldik7Ci0gCisKICAgICAvLyBXZSB3YW50IG1vdXNlb3V0cyB0byBoYXBwZW4gZmlyc3Qs
IGZyb20gdGhlIGluc2lkZSBvdXQuICBGaXJzdCBzZW5kIGEgbW92ZSBldmVudCB0byB0aGUgbGFz
dCBzdWJmcmFtZSBzbyB0aGF0IGl0IHdpbGwgZmlyZSBtb3VzZW91dHMuCiAgICAgaWYgKG1fbGFz
dE1vdXNlTW92ZUV2ZW50U3ViZnJhbWUgJiYgbV9sYXN0TW91c2VNb3ZlRXZlbnRTdWJmcmFtZS0+
dHJlZSgpLmlzRGVzY2VuZGFudE9mKCZtX2ZyYW1lKSAmJiBtX2xhc3RNb3VzZU1vdmVFdmVudFN1
YmZyYW1lICE9IG5ld1N1YmZyYW1lKQogICAgICAgICBwYXNzTW91c2VNb3ZlRXZlbnRUb1N1YmZy
YW1lKG1ldiwgbV9sYXN0TW91c2VNb3ZlRXZlbnRTdWJmcmFtZS5nZXQoKSk7CkBAIC0xODc4LDcg
KzE5NzgsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VNb3ZlRXZlbnQoY29uc3Qg
UGxhdGZvcm1Nb3VzZUV2ZW50JiBtb3VzZUV2ZW50LCBIaQogICAgICAgICBpZiAobmV3U3ViZnJh
bWUtPnZpZXcoKSkKICAgICAgICAgICAgIHN3YWxsb3dFdmVudCB8PSBwYXNzTW91c2VNb3ZlRXZl
bnRUb1N1YmZyYW1lKG1ldiwgbmV3U3ViZnJhbWUuZ2V0KCksIGhvdmVyZWROb2RlKTsKICNpZiBF
TkFCTEUoQ1VSU09SX1NVUFBPUlQpCi0gICAgfSBlbHNlIHsKKyAgICB9IGVsc2UgaWYgKCFzd2Fs
bG93RXZlbnQpIHsKICAgICAgICAgaWYgKEZyYW1lVmlldyogdmlldyA9IG1fZnJhbWUudmlldygp
KSB7CiAgICAgICAgICAgICBPcHRpb25hbEN1cnNvciBvcHRpb25hbEN1cnNvciA9IHNlbGVjdEN1
cnNvcihtZXYuaGl0VGVzdFJlc3VsdCgpLCBtb3VzZUV2ZW50LnNoaWZ0S2V5KCkpOwogICAgICAg
ICAgICAgaWYgKG9wdGlvbmFsQ3Vyc29yLmlzQ3Vyc29yQ2hhbmdlKCkpIHsKQEAgLTE4OTUsNiAr
MTk5NSw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZU1vdmVFdmVudChjb25zdCBQ
bGF0Zm9ybU1vdXNlRXZlbnQmIG1vdXNlRXZlbnQsIEhpCiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIAogICAgIHN3YWxsb3dFdmVudCA9ICFkaXNwYXRjaE1vdXNlRXZlbnQoZXZlbnROYW1lcygp
Lm1vdXNlbW92ZUV2ZW50LCBtZXYudGFyZ2V0Tm9kZSgpLCBmYWxzZSwgMCwgbW91c2VFdmVudCwg
dHJ1ZSk7CisgICAgCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKICAgICBpZiAoIXN3YWxsb3dF
dmVudCkKICAgICAgICAgc3dhbGxvd0V2ZW50ID0gaGFuZGxlTW91c2VEcmFnZ2VkRXZlbnQobWV2
KTsKQEAgLTMyMTUsMTIgKzMzMTYsNiBAQCBib29sIEV2ZW50SGFuZGxlcjo6ZHJhZ0h5c3RlcmVz
aXNFeGNlZWRlZChjb25zdCBJbnRQb2ludCYgZmxvYXREcmFnVmlld3BvcnRMb2NhdAogCiBib29s
IEV2ZW50SGFuZGxlcjo6ZHJhZ0h5c3RlcmVzaXNFeGNlZWRlZChjb25zdCBGbG9hdFBvaW50JiBk
cmFnVmlld3BvcnRMb2NhdGlvbikgY29uc3QKIHsKLSAgICBGcmFtZVZpZXcqIHZpZXcgPSBtX2Zy
YW1lLnZpZXcoKTsKLSAgICBpZiAoIXZpZXcpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBJ
bnRQb2ludCBkcmFnTG9jYXRpb24gPSB2aWV3LT53aW5kb3dUb0NvbnRlbnRzKGZsb29yZWRJbnRQ
b2ludChkcmFnVmlld3BvcnRMb2NhdGlvbikpOwotICAgIEludFNpemUgZGVsdGEgPSBkcmFnTG9j
YXRpb24gLSBtX21vdXNlRG93blBvczsKLSAgICAKICAgICBpbnQgdGhyZXNob2xkID0gR2VuZXJh
bERyYWdIeXN0ZXJlc2lzOwogICAgIHN3aXRjaCAoZHJhZ1N0YXRlKCkudHlwZSkgewogICAgIGNh
c2UgRHJhZ1NvdXJjZUFjdGlvblNlbGVjdGlvbjoKQEAgLTMyMzksNyArMzMzNCw3IEBAIGJvb2wg
RXZlbnRIYW5kbGVyOjpkcmFnSHlzdGVyZXNpc0V4Y2VlZGVkKGNvbnN0IEZsb2F0UG9pbnQmIGRy
YWdWaWV3cG9ydExvY2F0aW9uCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0K
ICAgICAKLSAgICByZXR1cm4gYWJzKGRlbHRhLndpZHRoKCkpID49IHRocmVzaG9sZCB8fCBhYnMo
ZGVsdGEuaGVpZ2h0KCkpID49IHRocmVzaG9sZDsKKyAgICByZXR1cm4gbW91c2VIeXN0ZXJlc2lz
RXhjZWVkZWQoZHJhZ1ZpZXdwb3J0TG9jYXRpb24sIHRocmVzaG9sZCk7CiB9CiAgICAgCiB2b2lk
IEV2ZW50SGFuZGxlcjo6ZnJlZURhdGFUcmFuc2ZlcigpCkBAIC0zNDEzLDYgKzM1MDgsMTAgQEAg
Ym9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZURyYWcoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0
UmVzdWx0cyYgZXZlbnQsIENoZWNrRHIKICAgICAgICAgLy8gT24gT1MgWCB0aGlzIGNhdXNlcyBw
cm9ibGVtcyB3aXRoIHRoZSBvd25lcnNoaXAgb2YgdGhlIHBhc3RlYm9hcmQgYW5kIHRoZSBwcm9t
aXNlZCB0eXBlcy4KICAgICAgICAgaWYgKG1fZGlkU3RhcnREcmFnKSB7CiAgICAgICAgICAgICBt
X21vdXNlRG93bk1heVN0YXJ0RHJhZyA9IGZhbHNlOworCisjaWYgRU5BQkxFKExPTkdfTU9VU0Vf
UFJFU1MpCisgICAgICAgICAgICBjYW5jZWxMb25nTW91c2VQcmVzcygpOworI2VuZGlmCiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICBpZiAoZHJhZ1N0YXRlKCku
c291cmNlICYmIGRyYWdTdGF0ZSgpLnNob3VsZERpc3BhdGNoRXZlbnRzKSB7CkBAIC0zNDMzLDcg
KzM1MzIsMjAgQEAgY2xlYW51cERyYWc6CiAgICAgcmV0dXJuIHRydWU7CiB9CiAjZW5kaWYgLy8g
RU5BQkxFKERSQUdfU1VQUE9SVCkKLSAgCisgICAgCisjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkg
fHwgRU5BQkxFKExPTkdfTU9VU0VfUFJFU1MpCitib29sIEV2ZW50SGFuZGxlcjo6bW91c2VIeXN0
ZXJlc2lzRXhjZWVkZWQoY29uc3QgRmxvYXRQb2ludCYgdmlld3BvcnRMb2NhdGlvbiwgY29uc3Qg
aW50IHRocmVzaG9sZCkgY29uc3QKK3sKKyAgICBGcmFtZVZpZXcqIHZpZXcgPSBtX2ZyYW1lLnZp
ZXcoKTsKKyAgICBpZiAoIXZpZXcpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBJbnRQb2lu
dCBsb2NhdGlvbiA9IHZpZXctPndpbmRvd1RvQ29udGVudHMoZmxvb3JlZEludFBvaW50KHZpZXdw
b3J0TG9jYXRpb24pKTsKKyAgICBJbnRTaXplIGRlbHRhID0gbG9jYXRpb24gLSBtX21vdXNlRG93
blBvczsKKyAgICAKKyAgICByZXR1cm4gYWJzKGRlbHRhLndpZHRoKCkpID49IHRocmVzaG9sZCB8
fCBhYnMoZGVsdGEuaGVpZ2h0KCkpID49IHRocmVzaG9sZDsKK30KKyNlbmRpZiAvLyBFTkFCTEUo
RFJBR19TVVBQT1JUKSB8fCBFTkFCTEUoTE9OR19NT1VTRV9QUkVTUykKKwogYm9vbCBFdmVudEhh
bmRsZXI6OmhhbmRsZVRleHRJbnB1dEV2ZW50KGNvbnN0IFN0cmluZyYgdGV4dCwgRXZlbnQqIHVu
ZGVybHlpbmdFdmVudCwgVGV4dEV2ZW50SW5wdXRUeXBlIGlucHV0VHlwZSkKIHsKICAgICAvLyBQ
bGF0Zm9ybXMgc2hvdWxkIGRpZmZlcmVudGlhdGUgcmVhbCBjb21tYW5kcyBsaWtlIHNlbGVjdEFs
bCBmcm9tIHRleHQgaW5wdXQgaW4gZGlzZ3Vpc2UgKGxpa2UgaW5zZXJ0TmV3bGluZSksCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9FdmVudEhhbmRsZXIuaAppbmRleCBmNjQwYTQ0NmMyNmJmZWZkMWVlM2Q1OWM0ZDYx
MGRiNTlkNWMyZDI5Li5jNDE1NTFkODQyZGMyOGMxMzU4OWMxYzQ0YjU3YzQzYjRjYmJjMjg4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKQEAgLTM3OSw2ICszNzksMTAgQEAgcHJpdmF0
ZToKICAgICBib29sIGRyYWdIeXN0ZXJlc2lzRXhjZWVkZWQoY29uc3QgRmxvYXRQb2ludCYpIGNv
bnN0OwogICAgIGJvb2wgZHJhZ0h5c3RlcmVzaXNFeGNlZWRlZChjb25zdCBJbnRQb2ludCYpIGNv
bnN0OwogI2VuZGlmIC8vIEVOQUJMRShEUkFHX1NVUFBPUlQpCisgICAgCisjaWYgRU5BQkxFKERS
QUdfU1VQUE9SVCkgfHwgRU5BQkxFKExPTkdfTU9VU0VfUFJFU1MpCisgICAgYm9vbCBtb3VzZUh5
c3RlcmVzaXNFeGNlZWRlZChjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgaW50KSBjb25zdDsKKyNl
bmRpZgogCiAgICAgYm9vbCBwYXNzTW91c2VQcmVzc0V2ZW50VG9TdWJmcmFtZShNb3VzZUV2ZW50
V2l0aEhpdFRlc3RSZXN1bHRzJiwgRnJhbWUqIHN1YmZyYW1lKTsKICAgICBib29sIHBhc3NNb3Vz
ZU1vdmVFdmVudFRvU3ViZnJhbWUoTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYsIEZyYW1l
KiBzdWJmcmFtZSwgSGl0VGVzdFJlc3VsdCogaG92ZXJlZE5vZGUgPSAwKTsKQEAgLTQzOCw2ICs0
NDIsMTYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGF1dG9IaWRlQ3Vyc29yVGltZXJGaXJlZChUaW1l
cjxFdmVudEhhbmRsZXI+Jik7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShMT05HX01PVVNFX1BSRVNT
KQorICAgIHZvaWQgc3RhcnRMb25nTW91c2VQcmVzcygpOworICAgIHZvaWQgdHJpZ2dlckxvbmdN
b3VzZVByZXNzKCk7CisgICAgdm9pZCBjYW5jZWxMb25nTW91c2VQcmVzcygpOworICAgIGJvb2wg
bG9uZ01vdXNlUHJlc3NIeXN0ZXJlc2lzRXhjZWVkZWQoKTsKKyAgICB2b2lkIGNsZWFyTG9uZ01v
dXNlUHJlc3NTdGF0ZSgpOworICAgIHZvaWQgbG9uZ01vdXNlUHJlc3NUaW1lckZpcmVkKFRpbWVy
PEV2ZW50SGFuZGxlcj4mKTsKKyAgICBib29sIGhhbmRsZUxvbmdNb3VzZVByZXNzTW91c2VNb3Zl
ZEV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOworI2VuZGlmCisgICAgCiAgICAgdm9p
ZCBjbGVhckxhdGNoZWRTdGF0ZSgpOwogCiAgICAgRnJhbWUmIG1fZnJhbWU7CkBAIC00NjUsNiAr
NDc5LDEwIEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKENVUlNPUl9TVVBQT1JUKQogICAgIFRpbWVy
PEV2ZW50SGFuZGxlcj4gbV9jdXJzb3JVcGRhdGVUaW1lcjsKICNlbmRpZgorI2lmIEVOQUJMRShM
T05HX01PVVNFX1BSRVNTKQorICAgIFRpbWVyPEV2ZW50SGFuZGxlcj4gbV9sb25nTW91c2VQcmVz
c1RpbWVyOworICAgIGJvb2wgbV9kaWRMb25nTW91c2VQcmVzczsKKyNlbmRpZgogCiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPEF1dG9zY3JvbGxDb250cm9sbGVyPiBtX2F1dG9zY3JvbGxDb250cm9sbGVy
OwogICAgIGJvb2wgbV9tb3VzZURvd25NYXlTdGFydEF1dG9zY3JvbGw7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>235855</attachid>
            <date>2014-07-31 15:34:16 -0700</date>
            <delta_ts>2014-08-01 16:21:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-135476-20140731153403.patch</filename>
            <type>text/plain</type>
            <size>11230</size>
            <attacher name="Peyton Randolph">prandolph</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTcxODgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzgxOWE0ODM3NGY3OWVk
MzgyZWFlYmNkY2MwYWNiZjAzZDUzMTczZS4uNzg1OTU5MDI5MDk2ODQ3NjQwZTMyMTRlZGNhNjdk
OWM2MzdhMDg1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDE0LTA3LTMxICBQZXl0
b24gUmFuZG9scGggIDxwcmFuZG9scGhAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBs
b25nIG1vdXNlIHByZXNzIG92ZXIgbGlua3MuIFBhcnQgb2YgMTM1MjU3IC0gQWRkIGxvbmctcHJl
c3MgZ2VzdHVyZSB0byBNYWMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMzU0NzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2
ZW50SGFuZGxlcjo6RXZlbnRIYW5kbGVyKTogCisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRs
ZXI6OmNsZWFyKTogQ2xlYXIgbG9uZyBwcmVzcyBzdGF0ZS4KKyAgICAgICAgKFdlYkNvcmU6OkV2
ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50KTogU3RhcnQgdGhlIGxvbmctcHJlc3Mg
aWYgdGhlIG1vdXNlIHByZXNzIGlzIGEgbGVmdAorICAgICAgICBtb3VzZSBwcmVzcyBvdmVyIGEg
bGluay4KKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6ZXZlbnRNYXlTdGFydERyYWcp
OiBXZSBjYW5ub3Qgc3RhcnQgYSBkcmFnIGlmIHdlJ3ZlIHJlY29nbml6ZWQgYSBsb25nIHByZXNz
LgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVJlbGVhc2VFdmVu
dCk6IElmIHdlIGRpZG4ndCByZWNvZ25pemUgYSBsb25nIHByZXNzLAorICAgICAgICAoV2ViQ29y
ZTo6RXZlbnRIYW5kbGVyOjpzdGFydExvbmdNb3VzZVByZXNzKTogU3RhcnQgdGhlIGxvbmcgcHJl
c3MgdGltZXIuCisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnRyaWdnZXJMb25nTW91
c2VQcmVzcyk6IFRyaWdnZXIgdGhlIGxvbmcgcHJlc3MgdGltZXIuCisgICAgICAgIChXZWJDb3Jl
OjpFdmVudEhhbmRsZXI6OmNhbmNlbExvbmdNb3VzZVByZXNzKTogQWRkZWQuIENhbmNlbCB0aGUg
bG9uZyBwcmVzcy4KKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6Y2xlYXJMb25nTW91
c2VQcmVzc1N0YXRlKTogQWRkZWQuIENsZWFyIGxvbmcgcHJlc3Mgc3RhdGUuCisgICAgICAgIChX
ZWJDb3JlOjpFdmVudEhhbmRsZXI6OmxvbmdNb3VzZVByZXNzVGltZXJGaXJlZCk6IEFkZGVkLiBU
cmlnZ2VyIHRoZSBsb25nLXByZXNzIGFuZCBkaXNhYmxlIG90aGVyCisgICAgICAgIGFjdGlvbnMg
bGlrZSBkcmFnZ2luZy4KKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlTG9u
Z01vdXNlUHJlc3NNb3VzZU1vdmVkRXZlbnQpOiBBZGRlZC4gQ2FuY2VsIHRoZSBsb25nIHByZXNz
IGlmCisgICAgICAgIHRoZSBtb3VzZSBtb3ZlcyBvdXRzaWRlIGEgc3BlY2lmaWVkIGh5c3RlcmVz
aXMuIFVwZGF0ZSB0aGUgY3Vyc29yIGlmIHRoZSBsb25nIHByZXNzIGhhcyBiZWVuCisgICAgICAg
IHRyaWdnZXJlZCBhbHJlYWR5LgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5k
bGVNb3VzZU1vdmVFdmVudCk6IEFzayBoYW5kbGVMb25nTW91c2VQcmVzc01vdXNlTW92ZWRFdmVu
dCB3aGV0aGVyIHRvCisgICAgICAgIHJldHVybiBlYXJseSBhbmQgbm90IHVwZGF0ZSBob3ZlcnMs
IGN1cnNvcnMsIGRyYWdzLCBldGMuCisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmRy
YWdIeXN0ZXJlc2lzRXhjZWVkZWQpOiBGYWN0b3Igb3V0IHRoZSBoeXN0ZXJlc2lzIGJvdW5kcyBj
aGVjayBpbnRvCisgICAgICAgIG1vdXNlSHlzdGVyZXNpc0V4Y2VlZGVkKCkuCisgICAgICAgIChX
ZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZURyYWcpOiBDYW5jZWwgbG9uZyBwcmVzcyB1cG9u
IHN0YXJ0aW5nIGRyYWcuCisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6Om1vdXNlSHlz
dGVyZXNpc0V4Y2VlZGVkKTogQWRkZWQuIEdlbmVyYWwgaHlzdGVyZXNpcyBmdW5jdGlvbiB0aGF0
IHRha2VzIGFuCisgICAgICAgIGFyYml0cmFyeSBtb3VzZSBtb3ZlbWVudCB0aHJlc2hvbGQuIEZh
Y3RvcmVkIG91dCBmcm9tIGRyYWdIeXN0ZXJlc2lzRXhjZWVkZWQuCisgICAgICAgICogcGFnZS9F
dmVudEhhbmRsZXIuaDoKKwogMjAxNC0wNy0zMSAgQW5kcmVpIEJ1Y3VyICA8YWJ1Y3VyQGFkb2Jl
LmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OOiBTZWFyY2ggaGlnaGxpZ2h0IGlzIGJyb2tlbiBp
biBSVEwgbXVsdGljb2x1bW4gY29udGVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3Bw
CmluZGV4IDg3YmIyMTNmZDFkMjk3NmRiODZiOWRhMDk5MDRlYjM4ODBmOTlmZWYuLjhiNWRiN2Zk
MDY0NzFlMDA2NDdkNzVmZjZjYTRkN2I1NjU5NDlhZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50
SGFuZGxlci5jcHAKQEAgLTE2Miw2ICsxNjIsMTEgQEAgY29uc3QgZG91YmxlIGN1cnNvclVwZGF0
ZUludGVydmFsID0gMC4wMjsKIAogY29uc3QgaW50IG1heGltdW1DdXJzb3JTaXplID0gMTI4Owog
I2VuZGlmCisgICAgCisjaWYgRU5BQkxFKExPTkdfTU9VU0VfUFJFU1MpCitjb25zdCBkb3VibGUg
bG9uZ01vdXNlUHJlc3NEZWxheSA9IDAuNTsKK2NvbnN0IGludCBsb25nTW91c2VQcmVzc0h5c3Rl
cmVzaXMgPSA1OworI2VuZGlmCiAKICNpZiBFTkFCTEUoTU9VU0VfQ1VSU09SX1NDQUxFKQogLy8g
SXQncyBwcmV0dHkgdW5saWtlbHkgdGhhdCBhIHNjYWxlIG9mIGxlc3MgdGhhbiBvbmUgd291bGQg
ZXZlciBiZSB1c2VkLiBCdXQgYWxsIHdlIHJlYWxseQpAQCAtMzcxLDYgKzM3NiwxMCBAQCBFdmVu
dEhhbmRsZXI6OkV2ZW50SGFuZGxlcihGcmFtZSYgZnJhbWUpCiAjaWYgRU5BQkxFKENVUlNPUl9T
VVBQT1JUKQogICAgICwgbV9jdXJzb3JVcGRhdGVUaW1lcih0aGlzLCAmRXZlbnRIYW5kbGVyOjpj
dXJzb3JVcGRhdGVUaW1lckZpcmVkKQogI2VuZGlmCisjaWYgRU5BQkxFKExPTkdfTU9VU0VfUFJF
U1MpCisgICAgLCBtX2xvbmdNb3VzZVByZXNzVGltZXIodGhpcywgJkV2ZW50SGFuZGxlcjo6bG9u
Z01vdXNlUHJlc3NUaW1lckZpcmVkKQorICAgICwgbV9kaWRMb25nTW91c2VQcmVzcyhmYWxzZSkK
KyNlbmRpZgogICAgICwgbV9hdXRvc2Nyb2xsQ29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPEF1
dG9zY3JvbGxDb250cm9sbGVyPigpKQogICAgICwgbV9tb3VzZURvd25NYXlTdGFydEF1dG9zY3Jv
bGwoZmFsc2UpCiAgICAgLCBtX21vdXNlRG93bldhc0luU3ViZnJhbWUoZmFsc2UpCkBAIC00NDcs
NiArNDU2LDkgQEAgdm9pZCBFdmVudEhhbmRsZXI6OmNsZWFyKCkKICNpZiBFTkFCTEUoQ1VSU09S
X1ZJU0lCSUxJVFkpCiAgICAgY2FuY2VsQXV0b0hpZGVDdXJzb3JUaW1lcigpOwogI2VuZGlmCisj
aWYgRU5BQkxFKExPTkdfTU9VU0VfUFJFU1MpCisgICAgY2xlYXJMb25nTW91c2VQcmVzc1N0YXRl
KCk7CisjZW5kaWYKICAgICBtX3Jlc2l6ZUxheWVyID0gMDsKICAgICBtX2VsZW1lbnRVbmRlck1v
dXNlID0gbnVsbHB0cjsKICAgICBtX2xhc3RFbGVtZW50VW5kZXJNb3VzZSA9IG51bGxwdHI7CkBA
IC03NjIsNiArNzc0LDExIEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVByZXNzRXZl
bnQoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZlCiAgICAgICAgIH0KICAg
ICB9CiAKKyNpZiBFTkFCTEUoTE9OR19NT1VTRV9QUkVTUykKKyAgICBpZiAoZXZlbnQuaXNPdmVy
TGluaygpICYmIGV2ZW50LmV2ZW50KCkuYnV0dG9uKCkgPT0gTGVmdEJ1dHRvbikKKyAgICAgICAg
c3RhcnRMb25nTW91c2VQcmVzcygpOworI2VuZGlmCisKICAgICAvLyBXZSBkb24ndCBkbyB0aGlz
IGF0IHRoZSBzdGFydCBvZiBtb3VzZSBkb3duIGhhbmRsaW5nLAogICAgIC8vIGJlY2F1c2Ugd2Ug
ZG9uJ3Qgd2FudCB0byBkbyBpdCB1bnRpbCB3ZSBrbm93IHdlIGRpZG4ndCBoaXQgYSB3aWRnZXQu
CiAgICAgaWYgKHNpbmdsZUNsaWNrKQpAQCAtODQ2LDYgKzg2MywxMSBAQCBib29sIEV2ZW50SGFu
ZGxlcjo6ZXZlbnRNYXlTdGFydERyYWcoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCkg
Y29uc3QKIAogICAgIGlmIChldmVudC5idXR0b24oKSAhPSBMZWZ0QnV0dG9uIHx8IGV2ZW50LmNs
aWNrQ291bnQoKSAhPSAxKQogICAgICAgICByZXR1cm4gZmFsc2U7CisKKyNpZiBFTkFCTEUoTE9O
R19NT1VTRV9QUkVTUykKKyAgICBpZiAobV9kaWRMb25nTW91c2VQcmVzcykKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworI2VuZGlmCiAgICAgCiAgICAgRnJhbWVWaWV3KiB2aWV3ID0gbV9mcmFtZS52
aWV3KCk7CiAgICAgaWYgKCF2aWV3KQpAQCAtMTAwMiw2ICsxMDI0LDExIEBAIGJvb2wgRXZlbnRI
YW5kbGVyOjpoYW5kbGVNb3VzZVJlbGVhc2VFdmVudChjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRl
c3RSZXN1bHRzJiBlCiAgICAgbV9tb3VzZURvd25XYXNJblN1YmZyYW1lID0gZmFsc2U7CiAgIAog
ICAgIGJvb2wgaGFuZGxlZCA9IGZhbHNlOworICAgIAorI2lmIEVOQUJMRShMT05HX01PVVNFX1BS
RVNTKQorICAgIGlmICghbV9kaWRMb25nTW91c2VQcmVzcyAmJiBldmVudC5ldmVudCgpLmJ1dHRv
bigpID09IExlZnRCdXR0b24pCisgICAgICAgIGNsZWFyTG9uZ01vdXNlUHJlc3NTdGF0ZSgpOwor
I2VuZGlmCiAKICAgICAvLyBDbGVhciB0aGUgc2VsZWN0aW9uIGlmIHRoZSBtb3VzZSBkaWRuJ3Qg
bW92ZSBhZnRlciB0aGUgbGFzdCBtb3VzZQogICAgIC8vIHByZXNzIGFuZCBpdCdzIG5vdCBhIGNv
bnRleHQgbWVudSBjbGljay4gIFdlIGRvIHRoaXMgc28gd2hlbiBjbGlja2luZwpAQCAtMTU0NSw2
ICsxNTcyLDcyIEBAIHZvaWQgRXZlbnRIYW5kbGVyOjphdXRvSGlkZUN1cnNvclRpbWVyRmlyZWQo
VGltZXI8RXZlbnRIYW5kbGVyPiYgdGltZXIpCiAgICAgICAgIHZpZXctPnNldEN1cnNvcihtX2N1
cnJlbnRNb3VzZUN1cnNvcik7CiB9CiAjZW5kaWYKKyAgICAKKyNpZiBFTkFCTEUoTE9OR19NT1VT
RV9QUkVTUykKK3ZvaWQgRXZlbnRIYW5kbGVyOjpzdGFydExvbmdNb3VzZVByZXNzKCkKK3sKKyAg
ICBjbGVhckxvbmdNb3VzZVByZXNzU3RhdGUoKTsKKyAgICAKKyAgICBtX2xvbmdNb3VzZVByZXNz
VGltZXIuc3RhcnRPbmVTaG90KGxvbmdNb3VzZVByZXNzRGVsYXkpOworICAgIAorICAgIC8vIEZJ
WE1FOiBidWJibGUgbG9uZyBtb3VzZSBwcmVzcyB1cCB0byBVSSBwcm9jZXNzLgorfQorICAgIAor
dm9pZCBFdmVudEhhbmRsZXI6OnRyaWdnZXJMb25nTW91c2VQcmVzcygpCit7CisgICAgLy8gRklY
TUU6IGJ1YmJsZSBsb25nIG1vdXNlIHByZXNzIHVwIHRvIFVJIHByb2Nlc3MuCit9CisgICAgCit2
b2lkIEV2ZW50SGFuZGxlcjo6Y2FuY2VsTG9uZ01vdXNlUHJlc3MoKQoreworICAgIGlmICghbV9s
b25nTW91c2VQcmVzc1RpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGNs
ZWFyTG9uZ01vdXNlUHJlc3NTdGF0ZSgpOworICAgIAorICAgIC8vIEZJWE1FOiBidWJibGUgbG9u
ZyBtb3VzZSBwcmVzcyB1cCB0byBVSSBwcm9jZXNzLgorfQorCit2b2lkIEV2ZW50SGFuZGxlcjo6
Y2xlYXJMb25nTW91c2VQcmVzc1N0YXRlKCkKK3sKKyAgICBtX2xvbmdNb3VzZVByZXNzVGltZXIu
c3RvcCgpOworICAgIG1fZGlkTG9uZ01vdXNlUHJlc3MgPSBmYWxzZTsKK30KKyAgICAKK3ZvaWQg
RXZlbnRIYW5kbGVyOjpsb25nTW91c2VQcmVzc1RpbWVyRmlyZWQoVGltZXI8RXZlbnRIYW5kbGVy
PiYgdGltZXIpCit7CisgICAgQVNTRVJUX1VOVVNFRCh0aW1lciwgJnRpbWVyID09ICZtX2xvbmdN
b3VzZVByZXNzVGltZXIpOworICAgIAorICAgIG1fZGlkTG9uZ01vdXNlUHJlc3MgPSB0cnVlOwor
ICAgIAorICAgIC8vIENsZWFyIG1vdXNlIHN0YXRlIHRvIGF2b2lkIGluaXRpYXRpbmcgYSBkcmFn
LgorICAgIG1fbW91c2VQcmVzc2VkID0gZmFsc2U7CisgICAgaW52YWxpZGF0ZUNsaWNrKCk7Cisg
ICAgCisgICAgdHJpZ2dlckxvbmdNb3VzZVByZXNzKCk7Cit9CisgICAgCitib29sIEV2ZW50SGFu
ZGxlcjo6aGFuZGxlTG9uZ01vdXNlUHJlc3NNb3VzZU1vdmVkRXZlbnQoY29uc3QgUGxhdGZvcm1N
b3VzZUV2ZW50JiBtb3VzZUV2ZW50KQoreworICAgIGlmIChtb3VzZUV2ZW50LmJ1dHRvbigpICE9
IExlZnRCdXR0b24gfHwgbW91c2VFdmVudC50eXBlKCkgIT0gUGxhdGZvcm1FdmVudDo6TW91c2VN
b3ZlZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKG1fZGlkTG9uZ01vdXNlUHJl
c3MpIHsKKyAgICAgICAgaWYgKEZyYW1lVmlldyogdmlldyA9IG1fZnJhbWUudmlldygpKQorICAg
ICAgICAgICAgdmlldy0+c2V0Q3Vyc29yKHBvaW50ZXJDdXJzb3IoKSk7CisgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0KKworICAgIGlmICghbW91c2VIeXN0ZXJlc2lzRXhjZWVkZWQobW91c2VF
dmVudC5wb3NpdGlvbigpLCBsb25nTW91c2VQcmVzc0h5c3RlcmVzaXMpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBjYW5jZWxMb25nTW91c2VQcmVzcygpOworICAgIGNsZWFyTG9uZ01v
dXNlUHJlc3NTdGF0ZSgpOworCisgICAgcmV0dXJuIGZhbHNlOworfQorCisjZW5kaWYgLy8gRU5B
QkxFKExPTkdfTU9VU0VfUFJFU1MpCiAKIHN0YXRpYyBMYXlvdXRQb2ludCBkb2N1bWVudFBvaW50
Rm9yV2luZG93UG9pbnQoRnJhbWUmIGZyYW1lLCBjb25zdCBJbnRQb2ludCYgd2luZG93UG9pbnQp
CiB7CkBAIC0xNzk2LDYgKzE4ODksMTEgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNl
TW92ZUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgbW91c2VFdmVudCwgSGkKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShMT05HX01PVVNFX1BSRVNTKQor
ICAgIGlmIChoYW5kbGVMb25nTW91c2VQcmVzc01vdXNlTW92ZWRFdmVudChtb3VzZUV2ZW50KSkK
KyAgICAgICAgcmV0dXJuIHRydWU7CisjZW5kaWYKKwogICAgIFJlZlB0cjxGcmFtZVZpZXc+IHBy
b3RlY3RvcihtX2ZyYW1lLnZpZXcoKSk7CiAgICAgCiAgICAgc2V0TGFzdEtub3duTW91c2VQb3Np
dGlvbihtb3VzZUV2ZW50KTsKQEAgLTMyMTUsMTIgKzMzMTMsNiBAQCBib29sIEV2ZW50SGFuZGxl
cjo6ZHJhZ0h5c3RlcmVzaXNFeGNlZWRlZChjb25zdCBJbnRQb2ludCYgZmxvYXREcmFnVmlld3Bv
cnRMb2NhdAogCiBib29sIEV2ZW50SGFuZGxlcjo6ZHJhZ0h5c3RlcmVzaXNFeGNlZWRlZChjb25z
dCBGbG9hdFBvaW50JiBkcmFnVmlld3BvcnRMb2NhdGlvbikgY29uc3QKIHsKLSAgICBGcmFtZVZp
ZXcqIHZpZXcgPSBtX2ZyYW1lLnZpZXcoKTsKLSAgICBpZiAoIXZpZXcpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICBJbnRQb2ludCBkcmFnTG9jYXRpb24gPSB2aWV3LT53aW5kb3dUb0NvbnRl
bnRzKGZsb29yZWRJbnRQb2ludChkcmFnVmlld3BvcnRMb2NhdGlvbikpOwotICAgIEludFNpemUg
ZGVsdGEgPSBkcmFnTG9jYXRpb24gLSBtX21vdXNlRG93blBvczsKLSAgICAKICAgICBpbnQgdGhy
ZXNob2xkID0gR2VuZXJhbERyYWdIeXN0ZXJlc2lzOwogICAgIHN3aXRjaCAoZHJhZ1N0YXRlKCku
dHlwZSkgewogICAgIGNhc2UgRHJhZ1NvdXJjZUFjdGlvblNlbGVjdGlvbjoKQEAgLTMyMzksNyAr
MzMzMSw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpkcmFnSHlzdGVyZXNpc0V4Y2VlZGVkKGNvbnN0
IEZsb2F0UG9pbnQmIGRyYWdWaWV3cG9ydExvY2F0aW9uCiAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgIH0KICAgICAKLSAgICByZXR1cm4gYWJzKGRlbHRhLndpZHRoKCkpID49IHRo
cmVzaG9sZCB8fCBhYnMoZGVsdGEuaGVpZ2h0KCkpID49IHRocmVzaG9sZDsKKyAgICByZXR1cm4g
bW91c2VIeXN0ZXJlc2lzRXhjZWVkZWQoZHJhZ1ZpZXdwb3J0TG9jYXRpb24sIHRocmVzaG9sZCk7
CiB9CiAgICAgCiB2b2lkIEV2ZW50SGFuZGxlcjo6ZnJlZURhdGFUcmFuc2ZlcigpCkBAIC0zNDEz
LDYgKzM1MDUsMTAgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZURyYWcoY29uc3QgTW91c2VF
dmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZlbnQsIENoZWNrRHIKICAgICAgICAgLy8gT24gT1Mg
WCB0aGlzIGNhdXNlcyBwcm9ibGVtcyB3aXRoIHRoZSBvd25lcnNoaXAgb2YgdGhlIHBhc3RlYm9h
cmQgYW5kIHRoZSBwcm9taXNlZCB0eXBlcy4KICAgICAgICAgaWYgKG1fZGlkU3RhcnREcmFnKSB7
CiAgICAgICAgICAgICBtX21vdXNlRG93bk1heVN0YXJ0RHJhZyA9IGZhbHNlOworCisjaWYgRU5B
QkxFKExPTkdfTU9VU0VfUFJFU1MpCisgICAgICAgICAgICBjYW5jZWxMb25nTW91c2VQcmVzcygp
OworI2VuZGlmCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICBp
ZiAoZHJhZ1N0YXRlKCkuc291cmNlICYmIGRyYWdTdGF0ZSgpLnNob3VsZERpc3BhdGNoRXZlbnRz
KSB7CkBAIC0zNDMzLDcgKzM1MjksMjAgQEAgY2xlYW51cERyYWc6CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAjZW5kaWYgLy8gRU5BQkxFKERSQUdfU1VQUE9SVCkKLSAgCisgICAgCisjaWYgRU5BQkxF
KERSQUdfU1VQUE9SVCkgfHwgRU5BQkxFKExPTkdfTU9VU0VfUFJFU1MpCitib29sIEV2ZW50SGFu
ZGxlcjo6bW91c2VIeXN0ZXJlc2lzRXhjZWVkZWQoY29uc3QgRmxvYXRQb2ludCYgdmlld3BvcnRM
b2NhdGlvbiwgY29uc3QgaW50IHRocmVzaG9sZCkgY29uc3QKK3sKKyAgICBGcmFtZVZpZXcqIHZp
ZXcgPSBtX2ZyYW1lLnZpZXcoKTsKKyAgICBpZiAoIXZpZXcpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBJbnRQb2ludCBsb2NhdGlvbiA9IHZpZXctPndpbmRvd1RvQ29udGVudHMoZmxvb3Jl
ZEludFBvaW50KHZpZXdwb3J0TG9jYXRpb24pKTsKKyAgICBJbnRTaXplIGRlbHRhID0gbG9jYXRp
b24gLSBtX21vdXNlRG93blBvczsKKyAgICAKKyAgICByZXR1cm4gYWJzKGRlbHRhLndpZHRoKCkp
ID49IHRocmVzaG9sZCB8fCBhYnMoZGVsdGEuaGVpZ2h0KCkpID49IHRocmVzaG9sZDsKK30KKyNl
bmRpZiAvLyBFTkFCTEUoRFJBR19TVVBQT1JUKSB8fCBFTkFCTEUoTE9OR19NT1VTRV9QUkVTUykK
KwogYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZVRleHRJbnB1dEV2ZW50KGNvbnN0IFN0cmluZyYg
dGV4dCwgRXZlbnQqIHVuZGVybHlpbmdFdmVudCwgVGV4dEV2ZW50SW5wdXRUeXBlIGlucHV0VHlw
ZSkKIHsKICAgICAvLyBQbGF0Zm9ybXMgc2hvdWxkIGRpZmZlcmVudGlhdGUgcmVhbCBjb21tYW5k
cyBsaWtlIHNlbGVjdEFsbCBmcm9tIHRleHQgaW5wdXQgaW4gZGlzZ3Vpc2UgKGxpa2UgaW5zZXJ0
TmV3bGluZSksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAppbmRleCBmNjQwYTQ0NmMyNmJm
ZWZkMWVlM2Q1OWM0ZDYxMGRiNTlkNWMyZDI5Li5jNDE1NTFkODQyZGMyOGMxMzU4OWMxYzQ0YjU3
YzQzYjRjYmJjMjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKQEAgLTM3OSw2ICsz
NzksMTAgQEAgcHJpdmF0ZToKICAgICBib29sIGRyYWdIeXN0ZXJlc2lzRXhjZWVkZWQoY29uc3Qg
RmxvYXRQb2ludCYpIGNvbnN0OwogICAgIGJvb2wgZHJhZ0h5c3RlcmVzaXNFeGNlZWRlZChjb25z
dCBJbnRQb2ludCYpIGNvbnN0OwogI2VuZGlmIC8vIEVOQUJMRShEUkFHX1NVUFBPUlQpCisgICAg
CisjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkgfHwgRU5BQkxFKExPTkdfTU9VU0VfUFJFU1MpCisg
ICAgYm9vbCBtb3VzZUh5c3RlcmVzaXNFeGNlZWRlZChjb25zdCBGbG9hdFBvaW50JiwgY29uc3Qg
aW50KSBjb25zdDsKKyNlbmRpZgogCiAgICAgYm9vbCBwYXNzTW91c2VQcmVzc0V2ZW50VG9TdWJm
cmFtZShNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiwgRnJhbWUqIHN1YmZyYW1lKTsKICAg
ICBib29sIHBhc3NNb3VzZU1vdmVFdmVudFRvU3ViZnJhbWUoTW91c2VFdmVudFdpdGhIaXRUZXN0
UmVzdWx0cyYsIEZyYW1lKiBzdWJmcmFtZSwgSGl0VGVzdFJlc3VsdCogaG92ZXJlZE5vZGUgPSAw
KTsKQEAgLTQzOCw2ICs0NDIsMTYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGF1dG9IaWRlQ3Vyc29y
VGltZXJGaXJlZChUaW1lcjxFdmVudEhhbmRsZXI+Jik7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShM
T05HX01PVVNFX1BSRVNTKQorICAgIHZvaWQgc3RhcnRMb25nTW91c2VQcmVzcygpOworICAgIHZv
aWQgdHJpZ2dlckxvbmdNb3VzZVByZXNzKCk7CisgICAgdm9pZCBjYW5jZWxMb25nTW91c2VQcmVz
cygpOworICAgIGJvb2wgbG9uZ01vdXNlUHJlc3NIeXN0ZXJlc2lzRXhjZWVkZWQoKTsKKyAgICB2
b2lkIGNsZWFyTG9uZ01vdXNlUHJlc3NTdGF0ZSgpOworICAgIHZvaWQgbG9uZ01vdXNlUHJlc3NU
aW1lckZpcmVkKFRpbWVyPEV2ZW50SGFuZGxlcj4mKTsKKyAgICBib29sIGhhbmRsZUxvbmdNb3Vz
ZVByZXNzTW91c2VNb3ZlZEV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOworI2VuZGlm
CisgICAgCiAgICAgdm9pZCBjbGVhckxhdGNoZWRTdGF0ZSgpOwogCiAgICAgRnJhbWUmIG1fZnJh
bWU7CkBAIC00NjUsNiArNDc5LDEwIEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKENVUlNPUl9TVVBQ
T1JUKQogICAgIFRpbWVyPEV2ZW50SGFuZGxlcj4gbV9jdXJzb3JVcGRhdGVUaW1lcjsKICNlbmRp
ZgorI2lmIEVOQUJMRShMT05HX01PVVNFX1BSRVNTKQorICAgIFRpbWVyPEV2ZW50SGFuZGxlcj4g
bV9sb25nTW91c2VQcmVzc1RpbWVyOworICAgIGJvb2wgbV9kaWRMb25nTW91c2VQcmVzczsKKyNl
bmRpZgogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEF1dG9zY3JvbGxDb250cm9sbGVyPiBtX2F1dG9z
Y3JvbGxDb250cm9sbGVyOwogICAgIGJvb2wgbV9tb3VzZURvd25NYXlTdGFydEF1dG9zY3JvbGw7
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>235922</attachid>
            <date>2014-08-01 16:21:23 -0700</date>
            <delta_ts>2014-08-07 17:56:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-135476-20140801162110.patch</filename>
            <type>text/plain</type>
            <size>11145</size>
            <attacher name="Peyton Randolph">prandolph</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTcxODgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzgxOWE0ODM3NGY3OWVk
MzgyZWFlYmNkY2MwYWNiZjAzZDUzMTczZS4uODIzNGU0MzU3ZjNkZGQ0MWFiMGE5Y2JiM2JkOTJl
YTQ4M2M1Mzc1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDE0LTA3LTMxICBQZXl0
b24gUmFuZG9scGggIDxwcmFuZG9scGhAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBs
b25nIG1vdXNlIHByZXNzIG92ZXIgbGlua3MuIFBhcnQgb2YgMTM1MjU3IC0gQWRkIGxvbmctcHJl
c3MgZ2VzdHVyZSB0byBNYWMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMzU0NzYKKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCisK
KyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVu
dEhhbmRsZXI6OkV2ZW50SGFuZGxlcik6IAorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVy
OjpjbGVhcik6IENsZWFyIGxvbmcgcHJlc3Mgc3RhdGUuCisgICAgICAgIChXZWJDb3JlOjpFdmVu
dEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVudCk6IFN0YXJ0IHRoZSBsb25nLXByZXNzIGlm
IHRoZSBtb3VzZSBwcmVzcyBpcyBhIGxlZnQKKyAgICAgICAgbW91c2UgcHJlc3Mgb3ZlciBhIGxp
bmsuCisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmV2ZW50TWF5U3RhcnREcmFnKTog
V2UgY2Fubm90IHN0YXJ0IGEgZHJhZyBpZiB3ZSd2ZSByZWNvZ25pemVkIGEgbG9uZyBwcmVzcy4K
KyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VSZWxlYXNlRXZlbnQp
OiAKKyAgICAgICAgSWYgd2UgZGlkbid0IHJlY29nbml6ZSBhIGxvbmcgcHJlc3MsIGNhbmNlbCB0
aGUgbG9uZyBwcmVzcy4KKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6YmVnaW5Mb25n
TW91c2VQcmVzcyk6IAorICAgICAgICBCZWdpbiB0aGUgbG9uZyBtb3VzZSBwcmVzcyBieSBraWNr
aW5nIG9mZiBhIHRpbWVyLiBJZiB0aGUgdGltZXIgZmlyZXMgYmVmb3JlIHRoZSBsb25nIHByZXNz
IGlzCisgICAgICAgIGNhbmNlbGxlZCwgdGhlIGxvbmcgcHJlc3MgaXMgcmVjb2duaXplZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6cmVjb2duaXplTG9uZ01vdXNlUHJlc3MpOiBB
ZGRlZC4gVHJpZ2dlciB0aGUgbG9uZy1wcmVzcyBhbmQgZGlzYWJsZSBvdGhlcgorICAgICAgICBh
Y3Rpb25zIGxpa2UgZHJhZ2dpbmcuCisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmNh
bmNlbExvbmdNb3VzZVByZXNzKTogQWRkZWQuIENhbmNlbCB0aGUgbG9uZyBwcmVzcyBieSBjbGVh
cmluZyByZWxhdGVkIHN0YXRlLgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpjbGVh
ckxvbmdNb3VzZVByZXNzU3RhdGUpOiBBZGRlZC4gQ2xlYXIgbG9uZyBwcmVzcyBzdGF0ZS4KKyAg
ICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlTG9uZ01vdXNlUHJlc3NNb3VzZU1v
dmVkRXZlbnQpOiBBZGRlZC4gQ2FuY2VsIHRoZSBsb25nIHByZXNzIGlmCisgICAgICAgIHRoZSBt
b3VzZSBtb3ZlcyBvdXRzaWRlIGEgc3BlY2lmaWVkIGh5c3RlcmVzaXMgaW50ZXJ2YWwuCisgICAg
ICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlTW92ZUV2ZW50KTogQXNrIGhh
bmRsZUxvbmdNb3VzZVByZXNzTW91c2VNb3ZlZEV2ZW50IHdoZXRoZXIgdG8KKyAgICAgICAgcmV0
dXJuIGVhcmx5IGFuZCBub3QgdXBkYXRlIGhvdmVycywgY3Vyc29ycywgZHJhZ3MsIGV0Yy4KKyAg
ICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6ZHJhZ0h5c3RlcmVzaXNFeGNlZWRlZCk6IEZh
Y3RvciBvdXQgdGhlIGh5c3RlcmVzaXMgYm91bmRzIGNoZWNrIGludG8KKyAgICAgICAgbW91c2VI
eXN0ZXJlc2lzRXhjZWVkZWQoKS4KKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFu
ZGxlRHJhZyk6IENhbmNlbCBsb25nIHByZXNzIHVwb24gc3RhcnRpbmcgZHJhZy4KKyAgICAgICAg
KFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6bW91c2VIeXN0ZXJlc2lzRXhjZWVkZWQpOiBBZGRlZC4g
R2VuZXJhbCBoeXN0ZXJlc2lzIGZ1bmN0aW9uIHRoYXQgdGFrZXMgYW4KKyAgICAgICAgYXJiaXRy
YXJ5IG1vdXNlIG1vdmVtZW50IHRocmVzaG9sZC4gRmFjdG9yZWQgb3V0IGZyb20gZHJhZ0h5c3Rl
cmVzaXNFeGNlZWRlZC4KKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5oOgorCiAyMDE0LTA3
LTMxICBBbmRyZWkgQnVjdXIgIDxhYnVjdXJAYWRvYmUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJ
T046IFNlYXJjaCBoaWdobGlnaHQgaXMgYnJva2VuIGluIFJUTCBtdWx0aWNvbHVtbiBjb250ZW50
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKaW5kZXggODdiYjIxM2ZkMWQyOTc2ZGI4
NmI5ZGEwOTkwNGViMzg4MGY5OWZlZi4uZjMxNGU0YjkwOTI2ZWZkYzljOTRmMGI5MDU2Yzk3OTQ4
NmQ2NmJjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtMTYyLDYgKzE2
MiwxMSBAQCBjb25zdCBkb3VibGUgY3Vyc29yVXBkYXRlSW50ZXJ2YWwgPSAwLjAyOwogCiBjb25z
dCBpbnQgbWF4aW11bUN1cnNvclNpemUgPSAxMjg7CiAjZW5kaWYKKyAgICAKKyNpZiBFTkFCTEUo
TE9OR19NT1VTRV9QUkVTUykKK2NvbnN0IHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHMgbG9uZ01v
dXNlUHJlc3NEZWxheSA9IHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHMoNTAwKTsKK2NvbnN0IGlu
dCBsb25nTW91c2VQcmVzc1BvaW50c0h5c3RlcmVzaXMgPSA1OworI2VuZGlmCiAKICNpZiBFTkFC
TEUoTU9VU0VfQ1VSU09SX1NDQUxFKQogLy8gSXQncyBwcmV0dHkgdW5saWtlbHkgdGhhdCBhIHNj
YWxlIG9mIGxlc3MgdGhhbiBvbmUgd291bGQgZXZlciBiZSB1c2VkLiBCdXQgYWxsIHdlIHJlYWxs
eQpAQCAtMzcxLDYgKzM3NiwxMCBAQCBFdmVudEhhbmRsZXI6OkV2ZW50SGFuZGxlcihGcmFtZSYg
ZnJhbWUpCiAjaWYgRU5BQkxFKENVUlNPUl9TVVBQT1JUKQogICAgICwgbV9jdXJzb3JVcGRhdGVU
aW1lcih0aGlzLCAmRXZlbnRIYW5kbGVyOjpjdXJzb3JVcGRhdGVUaW1lckZpcmVkKQogI2VuZGlm
CisjaWYgRU5BQkxFKExPTkdfTU9VU0VfUFJFU1MpCisgICAgLCBtX2xvbmdNb3VzZVByZXNzVGlt
ZXIodGhpcywgJkV2ZW50SGFuZGxlcjo6cmVjb2duaXplTG9uZ01vdXNlUHJlc3MpCisgICAgLCBt
X2RpZFJlY29nbml6ZUxvbmdNb3VzZVByZXNzKGZhbHNlKQorI2VuZGlmCiAgICAgLCBtX2F1dG9z
Y3JvbGxDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8QXV0b3Njcm9sbENvbnRyb2xsZXI+KCkp
CiAgICAgLCBtX21vdXNlRG93bk1heVN0YXJ0QXV0b3Njcm9sbChmYWxzZSkKICAgICAsIG1fbW91
c2VEb3duV2FzSW5TdWJmcmFtZShmYWxzZSkKQEAgLTQ0Nyw2ICs0NTYsOSBAQCB2b2lkIEV2ZW50
SGFuZGxlcjo6Y2xlYXIoKQogI2lmIEVOQUJMRShDVVJTT1JfVklTSUJJTElUWSkKICAgICBjYW5j
ZWxBdXRvSGlkZUN1cnNvclRpbWVyKCk7CiAjZW5kaWYKKyNpZiBFTkFCTEUoTE9OR19NT1VTRV9Q
UkVTUykKKyAgICBjbGVhckxvbmdNb3VzZVByZXNzU3RhdGUoKTsKKyNlbmRpZgogICAgIG1fcmVz
aXplTGF5ZXIgPSAwOwogICAgIG1fZWxlbWVudFVuZGVyTW91c2UgPSBudWxscHRyOwogICAgIG1f
bGFzdEVsZW1lbnRVbmRlck1vdXNlID0gbnVsbHB0cjsKQEAgLTc2Miw2ICs3NzQsMTEgQEAgYm9v
bCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVudChjb25zdCBNb3VzZUV2ZW50V2l0
aEhpdFRlc3RSZXN1bHRzJiBldmUKICAgICAgICAgfQogICAgIH0KIAorI2lmIEVOQUJMRShMT05H
X01PVVNFX1BSRVNTKQorICAgIGlmIChldmVudC5pc092ZXJMaW5rKCkgJiYgZXZlbnQuZXZlbnQo
KS5idXR0b24oKSA9PSBMZWZ0QnV0dG9uKQorICAgICAgICBiZWdpbkxvbmdNb3VzZVByZXNzKCk7
CisjZW5kaWYKKwogICAgIC8vIFdlIGRvbid0IGRvIHRoaXMgYXQgdGhlIHN0YXJ0IG9mIG1vdXNl
IGRvd24gaGFuZGxpbmcsCiAgICAgLy8gYmVjYXVzZSB3ZSBkb24ndCB3YW50IHRvIGRvIGl0IHVu
dGlsIHdlIGtub3cgd2UgZGlkbid0IGhpdCBhIHdpZGdldC4KICAgICBpZiAoc2luZ2xlQ2xpY2sp
CkBAIC04NDYsNiArODYzLDExIEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpldmVudE1heVN0YXJ0RHJh
Zyhjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50KSBjb25zdAogCiAgICAgaWYgKGV2ZW50
LmJ1dHRvbigpICE9IExlZnRCdXR0b24gfHwgZXZlbnQuY2xpY2tDb3VudCgpICE9IDEpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKKworI2lmIEVOQUJMRShMT05HX01PVVNFX1BSRVNTKQorICAgIGlm
IChtX2RpZFJlY29nbml6ZUxvbmdNb3VzZVByZXNzKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisj
ZW5kaWYKICAgICAKICAgICBGcmFtZVZpZXcqIHZpZXcgPSBtX2ZyYW1lLnZpZXcoKTsKICAgICBp
ZiAoIXZpZXcpCkBAIC0xMDAyLDYgKzEwMjQsMTEgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRs
ZU1vdXNlUmVsZWFzZUV2ZW50KGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGUK
ICAgICBtX21vdXNlRG93bldhc0luU3ViZnJhbWUgPSBmYWxzZTsKICAgCiAgICAgYm9vbCBoYW5k
bGVkID0gZmFsc2U7CisgICAgCisjaWYgRU5BQkxFKExPTkdfTU9VU0VfUFJFU1MpCisgICAgaWYg
KCFtX2RpZFJlY29nbml6ZUxvbmdNb3VzZVByZXNzICYmIGV2ZW50LmV2ZW50KCkuYnV0dG9uKCkg
PT0gTGVmdEJ1dHRvbikKKyAgICAgICAgY2xlYXJMb25nTW91c2VQcmVzc1N0YXRlKCk7CisjZW5k
aWYKIAogICAgIC8vIENsZWFyIHRoZSBzZWxlY3Rpb24gaWYgdGhlIG1vdXNlIGRpZG4ndCBtb3Zl
IGFmdGVyIHRoZSBsYXN0IG1vdXNlCiAgICAgLy8gcHJlc3MgYW5kIGl0J3Mgbm90IGEgY29udGV4
dCBtZW51IGNsaWNrLiAgV2UgZG8gdGhpcyBzbyB3aGVuIGNsaWNraW5nCkBAIC0xNTQ1LDYgKzE1
NzIsNjMgQEAgdm9pZCBFdmVudEhhbmRsZXI6OmF1dG9IaWRlQ3Vyc29yVGltZXJGaXJlZChUaW1l
cjxFdmVudEhhbmRsZXI+JiB0aW1lcikKICAgICAgICAgdmlldy0+c2V0Q3Vyc29yKG1fY3VycmVu
dE1vdXNlQ3Vyc29yKTsKIH0KICNlbmRpZgorICAgIAorI2lmIEVOQUJMRShMT05HX01PVVNFX1BS
RVNTKQordm9pZCBFdmVudEhhbmRsZXI6OmJlZ2luTG9uZ01vdXNlUHJlc3MoKQoreworICAgIGNs
ZWFyTG9uZ01vdXNlUHJlc3NTdGF0ZSgpOworICAgIAorICAgIG1fbG9uZ01vdXNlUHJlc3NUaW1l
ci5zdGFydE9uZVNob3QobG9uZ01vdXNlUHJlc3NEZWxheSk7CisgICAgCisgICAgLy8gRklYTUU6
IGJ1YmJsZSBsb25nIG1vdXNlIHByZXNzIHVwIHRvIHRoZSBjbGllbnQuCit9CisgICAgCit2b2lk
IEV2ZW50SGFuZGxlcjo6cmVjb2duaXplTG9uZ01vdXNlUHJlc3MoVGltZXI8RXZlbnRIYW5kbGVy
PiYgdGltZXIpCit7CisgICAgQVNTRVJUX1VOVVNFRCh0aW1lciwgJnRpbWVyID09ICZtX2xvbmdN
b3VzZVByZXNzVGltZXIpOworCisgICAgbV9kaWRSZWNvZ25pemVMb25nTW91c2VQcmVzcyA9IHRy
dWU7CisKKyAgICAvLyBDbGVhciBtb3VzZSBzdGF0ZSB0byBhdm9pZCBpbml0aWF0aW5nIGEgZHJh
Zy4KKyAgICBtX21vdXNlUHJlc3NlZCA9IGZhbHNlOworICAgIGludmFsaWRhdGVDbGljaygpOwor
CisgICAgLy8gRklYTUU6IGJ1YmJsZSBsb25nIG1vdXNlIHByZXNzIHVwIHRvIHRoZSBjbGllbnQu
Cit9CisgICAgCit2b2lkIEV2ZW50SGFuZGxlcjo6Y2FuY2VsTG9uZ01vdXNlUHJlc3MoKQorewor
ICAgIGlmICghbV9sb25nTW91c2VQcmVzc1RpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIGNsZWFyTG9uZ01vdXNlUHJlc3NTdGF0ZSgpOworICAgIAorICAgIC8vIEZJWE1F
OiBidWJibGUgbG9uZyBtb3VzZSBwcmVzcyB1cCB0byB0aGUgY2xpZW50LgorfQorCit2b2lkIEV2
ZW50SGFuZGxlcjo6Y2xlYXJMb25nTW91c2VQcmVzc1N0YXRlKCkKK3sKKyAgICBtX2xvbmdNb3Vz
ZVByZXNzVGltZXIuc3RvcCgpOworICAgIG1fZGlkUmVjb2duaXplTG9uZ01vdXNlUHJlc3MgPSBm
YWxzZTsKK30KKyAgICAKK2Jvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVMb25nTW91c2VQcmVzc01v
dXNlTW92ZWRFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIG1vdXNlRXZlbnQpCit7Cisg
ICAgaWYgKG1vdXNlRXZlbnQuYnV0dG9uKCkgIT0gTGVmdEJ1dHRvbiB8fCBtb3VzZUV2ZW50LnR5
cGUoKSAhPSBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBpZiAobV9kaWRSZWNvZ25pemVMb25nTW91c2VQcmVzcykKKyAgICAgICAgcmV0dXJu
IHRydWU7CisKKyAgICBpZiAoIW1vdXNlSHlzdGVyZXNpc0V4Y2VlZGVkKG1vdXNlRXZlbnQucG9z
aXRpb24oKSwgbG9uZ01vdXNlUHJlc3NQb2ludHNIeXN0ZXJlc2lzKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgY2FuY2VsTG9uZ01vdXNlUHJlc3MoKTsKKworICAgIHJldHVybiBmYWxz
ZTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShMT05HX01PVVNFX1BSRVNTKQogCiBzdGF0aWMgTGF5
b3V0UG9pbnQgZG9jdW1lbnRQb2ludEZvcldpbmRvd1BvaW50KEZyYW1lJiBmcmFtZSwgY29uc3Qg
SW50UG9pbnQmIHdpbmRvd1BvaW50KQogewpAQCAtMTc5Niw2ICsxODgwLDExIEBAIGJvb2wgRXZl
bnRIYW5kbGVyOjpoYW5kbGVNb3VzZU1vdmVFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQm
IG1vdXNlRXZlbnQsIEhpCiAgICAgICAgIHJldHVybiB0cnVlOwogI2VuZGlmCiAKKyNpZiBFTkFC
TEUoTE9OR19NT1VTRV9QUkVTUykKKyAgICBpZiAoaGFuZGxlTG9uZ01vdXNlUHJlc3NNb3VzZU1v
dmVkRXZlbnQobW91c2VFdmVudCkpCisgICAgICAgIHJldHVybiB0cnVlOworI2VuZGlmCisKICAg
ICBSZWZQdHI8RnJhbWVWaWV3PiBwcm90ZWN0b3IobV9mcmFtZS52aWV3KCkpOwogICAgIAogICAg
IHNldExhc3RLbm93bk1vdXNlUG9zaXRpb24obW91c2VFdmVudCk7CkBAIC0zMjE1LDEyICszMzA0
LDYgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmRyYWdIeXN0ZXJlc2lzRXhjZWVkZWQoY29uc3QgSW50
UG9pbnQmIGZsb2F0RHJhZ1ZpZXdwb3J0TG9jYXQKIAogYm9vbCBFdmVudEhhbmRsZXI6OmRyYWdI
eXN0ZXJlc2lzRXhjZWVkZWQoY29uc3QgRmxvYXRQb2ludCYgZHJhZ1ZpZXdwb3J0TG9jYXRpb24p
IGNvbnN0CiB7Ci0gICAgRnJhbWVWaWV3KiB2aWV3ID0gbV9mcmFtZS52aWV3KCk7Ci0gICAgaWYg
KCF2aWV3KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgSW50UG9pbnQgZHJhZ0xvY2F0aW9u
ID0gdmlldy0+d2luZG93VG9Db250ZW50cyhmbG9vcmVkSW50UG9pbnQoZHJhZ1ZpZXdwb3J0TG9j
YXRpb24pKTsKLSAgICBJbnRTaXplIGRlbHRhID0gZHJhZ0xvY2F0aW9uIC0gbV9tb3VzZURvd25Q
b3M7Ci0gICAgCiAgICAgaW50IHRocmVzaG9sZCA9IEdlbmVyYWxEcmFnSHlzdGVyZXNpczsKICAg
ICBzd2l0Y2ggKGRyYWdTdGF0ZSgpLnR5cGUpIHsKICAgICBjYXNlIERyYWdTb3VyY2VBY3Rpb25T
ZWxlY3Rpb246CkBAIC0zMjM5LDcgKzMzMjIsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6ZHJhZ0h5
c3RlcmVzaXNFeGNlZWRlZChjb25zdCBGbG9hdFBvaW50JiBkcmFnVmlld3BvcnRMb2NhdGlvbgog
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAgICAgCi0gICAgcmV0dXJuIGFi
cyhkZWx0YS53aWR0aCgpKSA+PSB0aHJlc2hvbGQgfHwgYWJzKGRlbHRhLmhlaWdodCgpKSA+PSB0
aHJlc2hvbGQ7CisgICAgcmV0dXJuIG1vdXNlSHlzdGVyZXNpc0V4Y2VlZGVkKGRyYWdWaWV3cG9y
dExvY2F0aW9uLCB0aHJlc2hvbGQpOwogfQogICAgIAogdm9pZCBFdmVudEhhbmRsZXI6OmZyZWVE
YXRhVHJhbnNmZXIoKQpAQCAtMzQxMyw2ICszNDk2LDEwIEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpo
YW5kbGVEcmFnKGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGV2ZW50LCBDaGVj
a0RyCiAgICAgICAgIC8vIE9uIE9TIFggdGhpcyBjYXVzZXMgcHJvYmxlbXMgd2l0aCB0aGUgb3du
ZXJzaGlwIG9mIHRoZSBwYXN0ZWJvYXJkIGFuZCB0aGUgcHJvbWlzZWQgdHlwZXMuCiAgICAgICAg
IGlmIChtX2RpZFN0YXJ0RHJhZykgewogICAgICAgICAgICAgbV9tb3VzZURvd25NYXlTdGFydERy
YWcgPSBmYWxzZTsKKworI2lmIEVOQUJMRShMT05HX01PVVNFX1BSRVNTKQorICAgICAgICAgICAg
Y2FuY2VsTG9uZ01vdXNlUHJlc3MoKTsKKyNlbmRpZgogICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgICAgIH0KICAgICAgICAgaWYgKGRyYWdTdGF0ZSgpLnNvdXJjZSAmJiBkcmFnU3RhdGUo
KS5zaG91bGREaXNwYXRjaEV2ZW50cykgewpAQCAtMzQzMyw3ICszNTIwLDIwIEBAIGNsZWFudXBE
cmFnOgogICAgIHJldHVybiB0cnVlOwogfQogI2VuZGlmIC8vIEVOQUJMRShEUkFHX1NVUFBPUlQp
Ci0gIAorICAgIAorI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpIHx8IEVOQUJMRShMT05HX01PVVNF
X1BSRVNTKQorYm9vbCBFdmVudEhhbmRsZXI6Om1vdXNlSHlzdGVyZXNpc0V4Y2VlZGVkKGNvbnN0
IEZsb2F0UG9pbnQmIHZpZXdwb3J0TG9jYXRpb24sIGNvbnN0IGludCBwb2ludHNUaHJlc2hvbGQp
IGNvbnN0Cit7CisgICAgRnJhbWVWaWV3KiB2aWV3ID0gbV9mcmFtZS52aWV3KCk7CisgICAgaWYg
KCF2aWV3KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgSW50UG9pbnQgbG9jYXRpb24gPSB2
aWV3LT53aW5kb3dUb0NvbnRlbnRzKGZsb29yZWRJbnRQb2ludCh2aWV3cG9ydExvY2F0aW9uKSk7
CisgICAgSW50U2l6ZSBkZWx0YSA9IGxvY2F0aW9uIC0gbV9tb3VzZURvd25Qb3M7CisgICAgCisg
ICAgcmV0dXJuIGFicyhkZWx0YS53aWR0aCgpKSA+PSBwb2ludHNUaHJlc2hvbGQgfHwgYWJzKGRl
bHRhLmhlaWdodCgpKSA+PSBwb2ludHNUaHJlc2hvbGQ7Cit9CisjZW5kaWYgLy8gRU5BQkxFKERS
QUdfU1VQUE9SVCkgfHwgRU5BQkxFKExPTkdfTU9VU0VfUFJFU1MpCisKIGJvb2wgRXZlbnRIYW5k
bGVyOjpoYW5kbGVUZXh0SW5wdXRFdmVudChjb25zdCBTdHJpbmcmIHRleHQsIEV2ZW50KiB1bmRl
cmx5aW5nRXZlbnQsIFRleHRFdmVudElucHV0VHlwZSBpbnB1dFR5cGUpCiB7CiAgICAgLy8gUGxh
dGZvcm1zIHNob3VsZCBkaWZmZXJlbnRpYXRlIHJlYWwgY29tbWFuZHMgbGlrZSBzZWxlY3RBbGwg
ZnJvbSB0ZXh0IGlucHV0IGluIGRpc2d1aXNlIChsaWtlIGluc2VydE5ld2xpbmUpLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRXZlbnRIYW5kbGVyLmgKaW5kZXggZjY0MGE0NDZjMjZiZmVmZDFlZTNkNTljNGQ2MTBk
YjU5ZDVjMmQyOS4uNGM3MmQ4ZWU4ZDk2YmQ3OWE4MzUzZDgzZjEyOTBmY2Y1ZGNiYmY5NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCkBAIC0zNzksNiArMzc5LDEwIEBAIHByaXZhdGU6
CiAgICAgYm9vbCBkcmFnSHlzdGVyZXNpc0V4Y2VlZGVkKGNvbnN0IEZsb2F0UG9pbnQmKSBjb25z
dDsKICAgICBib29sIGRyYWdIeXN0ZXJlc2lzRXhjZWVkZWQoY29uc3QgSW50UG9pbnQmKSBjb25z
dDsKICNlbmRpZiAvLyBFTkFCTEUoRFJBR19TVVBQT1JUKQorICAgIAorI2lmIEVOQUJMRShEUkFH
X1NVUFBPUlQpIHx8IEVOQUJMRShMT05HX01PVVNFX1BSRVNTKQorICAgIGJvb2wgbW91c2VIeXN0
ZXJlc2lzRXhjZWVkZWQoY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IGludCBwb2ludHNUaHJlc2hv
bGQpIGNvbnN0OworI2VuZGlmCiAKICAgICBib29sIHBhc3NNb3VzZVByZXNzRXZlbnRUb1N1YmZy
YW1lKE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmLCBGcmFtZSogc3ViZnJhbWUpOwogICAg
IGJvb2wgcGFzc01vdXNlTW92ZUV2ZW50VG9TdWJmcmFtZShNb3VzZUV2ZW50V2l0aEhpdFRlc3RS
ZXN1bHRzJiwgRnJhbWUqIHN1YmZyYW1lLCBIaXRUZXN0UmVzdWx0KiBob3ZlcmVkTm9kZSA9IDAp
OwpAQCAtNDM4LDYgKzQ0MiwxNSBAQCBwcml2YXRlOgogICAgIHZvaWQgYXV0b0hpZGVDdXJzb3JU
aW1lckZpcmVkKFRpbWVyPEV2ZW50SGFuZGxlcj4mKTsKICNlbmRpZgogCisjaWYgRU5BQkxFKExP
TkdfTU9VU0VfUFJFU1MpCisgICAgdm9pZCBiZWdpbkxvbmdNb3VzZVByZXNzKCk7CisgICAgdm9p
ZCByZWNvZ25pemVMb25nTW91c2VQcmVzcyhUaW1lcjxFdmVudEhhbmRsZXI+Jik7CisgICAgdm9p
ZCBjYW5jZWxMb25nTW91c2VQcmVzcygpOworICAgIGJvb2wgbG9uZ01vdXNlUHJlc3NIeXN0ZXJl
c2lzRXhjZWVkZWQoKTsKKyAgICB2b2lkIGNsZWFyTG9uZ01vdXNlUHJlc3NTdGF0ZSgpOworICAg
IGJvb2wgaGFuZGxlTG9uZ01vdXNlUHJlc3NNb3VzZU1vdmVkRXZlbnQoY29uc3QgUGxhdGZvcm1N
b3VzZUV2ZW50Jik7CisjZW5kaWYKKyAgICAKICAgICB2b2lkIGNsZWFyTGF0Y2hlZFN0YXRlKCk7
CiAKICAgICBGcmFtZSYgbV9mcmFtZTsKQEAgLTQ2NSw2ICs0NzgsMTAgQEAgcHJpdmF0ZToKICNp
ZiBFTkFCTEUoQ1VSU09SX1NVUFBPUlQpCiAgICAgVGltZXI8RXZlbnRIYW5kbGVyPiBtX2N1cnNv
clVwZGF0ZVRpbWVyOwogI2VuZGlmCisjaWYgRU5BQkxFKExPTkdfTU9VU0VfUFJFU1MpCisgICAg
VGltZXI8RXZlbnRIYW5kbGVyPiBtX2xvbmdNb3VzZVByZXNzVGltZXI7CisgICAgYm9vbCBtX2Rp
ZFJlY29nbml6ZUxvbmdNb3VzZVByZXNzOworI2VuZGlmCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
QXV0b3Njcm9sbENvbnRyb2xsZXI+IG1fYXV0b3Njcm9sbENvbnRyb2xsZXI7CiAgICAgYm9vbCBt
X21vdXNlRG93bk1heVN0YXJ0QXV0b3Njcm9sbDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>236247</attachid>
            <date>2014-08-07 17:56:19 -0700</date>
            <delta_ts>2014-08-08 15:00:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-135476-20140807175608.patch</filename>
            <type>text/plain</type>
            <size>11190</size>
            <attacher name="Peyton Randolph">prandolph</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTcyMjEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWViNTBhMWYyMGQ0NTVh
ZTEwMDRkYWM0NGQ2ZjRhZTgxMjIwNzZhMC4uZGViNDEyZmY2MjYyYTM3Y2M4YjBhZmZhZjRiZjQw
NTgxMDljN2YzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDE0LTA4LTA3ICBQZXl0
b24gUmFuZG9scGggIDxwcmFuZG9scGhAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBs
b25nIG1vdXNlIHByZXNzIG92ZXIgbGlua3MuIFBhcnQgb2YgMTM1MjU3IC0gQWRkIGxvbmctcHJl
c3MgZ2VzdHVyZSB0byBNYWMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMzU0NzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2
ZW50SGFuZGxlcjo6RXZlbnRIYW5kbGVyKTogCisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRs
ZXI6OmNsZWFyKTogQ2xlYXIgbG9uZyBwcmVzcyBzdGF0ZS4KKyAgICAgICAgKFdlYkNvcmU6OkV2
ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50KTogU3RhcnQgdGhlIGxvbmctcHJlc3Mg
aWYgdGhlIG1vdXNlIHByZXNzIGlzIGEgbGVmdAorICAgICAgICBtb3VzZSBwcmVzcyBvdmVyIGEg
bGluay4KKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6ZXZlbnRNYXlTdGFydERyYWcp
OiBXZSBjYW5ub3Qgc3RhcnQgYSBkcmFnIGlmIHdlJ3ZlIHJlY29nbml6ZWQgYSBsb25nIHByZXNz
LgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVJlbGVhc2VFdmVu
dCk6IAorICAgICAgICBJZiB3ZSBkaWRuJ3QgcmVjb2duaXplIGEgbG9uZyBwcmVzcywgY2FuY2Vs
IHRoZSBsb25nIHByZXNzLgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpiZWdpbkxv
bmdNb3VzZVByZXNzKTogCisgICAgICAgIEJlZ2luIHRoZSBsb25nIG1vdXNlIHByZXNzIGJ5IGtp
Y2tpbmcgb2ZmIGEgdGltZXIuIElmIHRoZSB0aW1lciBmaXJlcyBiZWZvcmUgdGhlIGxvbmcgcHJl
c3MgaXMKKyAgICAgICAgY2FuY2VsbGVkLCB0aGUgbG9uZyBwcmVzcyBpcyByZWNvZ25pemVkLgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpyZWNvZ25pemVMb25nTW91c2VQcmVzcyk6
IEFkZGVkLiBUcmlnZ2VyIHRoZSBsb25nLXByZXNzIGFuZCBkaXNhYmxlIG90aGVyCisgICAgICAg
IGFjdGlvbnMgbGlrZSBkcmFnZ2luZy4KKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6
Y2FuY2VsTG9uZ01vdXNlUHJlc3MpOiBBZGRlZC4gQ2FuY2VsIHRoZSBsb25nIHByZXNzIGJ5IGNs
ZWFyaW5nIHJlbGF0ZWQgc3RhdGUuCisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmNs
ZWFyTG9uZ01vdXNlUHJlc3NTdGF0ZSk6IEFkZGVkLiBDbGVhciBsb25nIHByZXNzIHN0YXRlLgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVMb25nTW91c2VQcmVzc01vdXNl
TW92ZWRFdmVudCk6IEFkZGVkLiBDYW5jZWwgdGhlIGxvbmcgcHJlc3MgaWYKKyAgICAgICAgdGhl
IG1vdXNlIG1vdmVzIG91dHNpZGUgYSBzcGVjaWZpZWQgaHlzdGVyZXNpcyBpbnRlcnZhbC4KKyAg
ICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VNb3ZlRXZlbnQpOiBBc2sg
aGFuZGxlTG9uZ01vdXNlUHJlc3NNb3VzZU1vdmVkRXZlbnQgd2hldGhlciB0bworICAgICAgICBy
ZXR1cm4gZWFybHkgYW5kIG5vdCB1cGRhdGUgaG92ZXJzLCBjdXJzb3JzLCBkcmFncywgZXRjLgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpkcmFnSHlzdGVyZXNpc0V4Y2VlZGVkKTog
RmFjdG9yIG91dCB0aGUgaHlzdGVyZXNpcyBib3VuZHMgY2hlY2sgaW50bworICAgICAgICBtb3Vz
ZUh5c3RlcmVzaXNFeGNlZWRlZCgpLgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpo
YW5kbGVEcmFnKTogQ2FuY2VsIGxvbmcgcHJlc3MgdXBvbiBzdGFydGluZyBkcmFnLgorICAgICAg
ICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjptb3VzZUh5c3RlcmVzaXNFeGNlZWRlZCk6IEFkZGVk
LiBHZW5lcmFsIGh5c3RlcmVzaXMgZnVuY3Rpb24gdGhhdCB0YWtlcyBhbgorICAgICAgICBhcmJp
dHJhcnkgbW91c2UgbW92ZW1lbnQgdGhyZXNob2xkLiBGYWN0b3JlZCBvdXQgZnJvbSBkcmFnSHlz
dGVyZXNpc0V4Y2VlZGVkLgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmg6CisKIDIwMTQt
MDgtMDYgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgW01h
YywgaU9TXSBDYXB0aW9ucyBhcmUgYXBwZWFyaW5nIG11bHRpcGxlIHRpbWVzIGR1cmluZyByZXBl
YXRlZCB2aWRlbyBwbGF5IHRocm91Z2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApp
bmRleCA4N2JiMjEzZmQxZDI5NzZkYjg2YjlkYTA5OTA0ZWIzODgwZjk5ZmVmLi5mMTUxMTQ4NDQy
MWU5ZTgwY2M4N2Q2ZDdkNDQ5ODQ0ZjNjNzJkYTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhh
bmRsZXIuY3BwCkBAIC0xNjIsNiArMTYyLDExIEBAIGNvbnN0IGRvdWJsZSBjdXJzb3JVcGRhdGVJ
bnRlcnZhbCA9IDAuMDI7CiAKIGNvbnN0IGludCBtYXhpbXVtQ3Vyc29yU2l6ZSA9IDEyODsKICNl
bmRpZgorICAgIAorI2lmIEVOQUJMRShMT05HX01PVVNFX1BSRVNTKQorY29uc3Qgc3RkOjpjaHJv
bm86Om1pbGxpc2Vjb25kcyBsb25nTW91c2VQcmVzc0RlbGF5ID0gNTAwX21zOworY29uc3QgaW50
IGxvbmdNb3VzZVByZXNzUG9pbnRzSHlzdGVyZXNpcyA9IDU7CisjZW5kaWYKIAogI2lmIEVOQUJM
RShNT1VTRV9DVVJTT1JfU0NBTEUpCiAvLyBJdCdzIHByZXR0eSB1bmxpa2VseSB0aGF0IGEgc2Nh
bGUgb2YgbGVzcyB0aGFuIG9uZSB3b3VsZCBldmVyIGJlIHVzZWQuIEJ1dCBhbGwgd2UgcmVhbGx5
CkBAIC0zNzEsNiArMzc2LDEwIEBAIEV2ZW50SGFuZGxlcjo6RXZlbnRIYW5kbGVyKEZyYW1lJiBm
cmFtZSkKICNpZiBFTkFCTEUoQ1VSU09SX1NVUFBPUlQpCiAgICAgLCBtX2N1cnNvclVwZGF0ZVRp
bWVyKHRoaXMsICZFdmVudEhhbmRsZXI6OmN1cnNvclVwZGF0ZVRpbWVyRmlyZWQpCiAjZW5kaWYK
KyNpZiBFTkFCTEUoTE9OR19NT1VTRV9QUkVTUykKKyAgICAsIG1fbG9uZ01vdXNlUHJlc3NUaW1l
cih0aGlzLCAmRXZlbnRIYW5kbGVyOjpyZWNvZ25pemVMb25nTW91c2VQcmVzcykKKyAgICAsIG1f
ZGlkUmVjb2duaXplTG9uZ01vdXNlUHJlc3MoZmFsc2UpCisjZW5kaWYKICAgICAsIG1fYXV0b3Nj
cm9sbENvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxBdXRvc2Nyb2xsQ29udHJvbGxlcj4oKSkK
ICAgICAsIG1fbW91c2VEb3duTWF5U3RhcnRBdXRvc2Nyb2xsKGZhbHNlKQogICAgICwgbV9tb3Vz
ZURvd25XYXNJblN1YmZyYW1lKGZhbHNlKQpAQCAtNDQ3LDYgKzQ1Niw5IEBAIHZvaWQgRXZlbnRI
YW5kbGVyOjpjbGVhcigpCiAjaWYgRU5BQkxFKENVUlNPUl9WSVNJQklMSVRZKQogICAgIGNhbmNl
bEF1dG9IaWRlQ3Vyc29yVGltZXIoKTsKICNlbmRpZgorI2lmIEVOQUJMRShMT05HX01PVVNFX1BS
RVNTKQorICAgIGNsZWFyTG9uZ01vdXNlUHJlc3NTdGF0ZSgpOworI2VuZGlmCiAgICAgbV9yZXNp
emVMYXllciA9IDA7CiAgICAgbV9lbGVtZW50VW5kZXJNb3VzZSA9IG51bGxwdHI7CiAgICAgbV9s
YXN0RWxlbWVudFVuZGVyTW91c2UgPSBudWxscHRyOwpAQCAtNzYyLDYgKzc3NCwxMyBAQCBib29s
IEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50KGNvbnN0IE1vdXNlRXZlbnRXaXRo
SGl0VGVzdFJlc3VsdHMmIGV2ZQogICAgICAgICB9CiAgICAgfQogCisjaWYgRU5BQkxFKExPTkdf
TU9VU0VfUFJFU1MpCisgICAgaWYgKGV2ZW50LmV2ZW50KCkuYnV0dG9uKCkgPT0gTGVmdEJ1dHRv
biAmJiBldmVudC5pc092ZXJMaW5rKCkpIHsKKyAgICAgICAgLy8gRklYTUUgMTM1NzAzOiBIYW5k
bGUgbG9uZyBwcmVzcyBmb3IgbW9yZSB0aGFuIGp1c3QgbGlua3MuCisgICAgICAgIGJlZ2luTG9u
Z01vdXNlUHJlc3MoKTsKKyAgICB9CisjZW5kaWYKKwogICAgIC8vIFdlIGRvbid0IGRvIHRoaXMg
YXQgdGhlIHN0YXJ0IG9mIG1vdXNlIGRvd24gaGFuZGxpbmcsCiAgICAgLy8gYmVjYXVzZSB3ZSBk
b24ndCB3YW50IHRvIGRvIGl0IHVudGlsIHdlIGtub3cgd2UgZGlkbid0IGhpdCBhIHdpZGdldC4K
ICAgICBpZiAoc2luZ2xlQ2xpY2spCkBAIC04NDYsNiArODY1LDExIEBAIGJvb2wgRXZlbnRIYW5k
bGVyOjpldmVudE1heVN0YXJ0RHJhZyhjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50KSBj
b25zdAogCiAgICAgaWYgKGV2ZW50LmJ1dHRvbigpICE9IExlZnRCdXR0b24gfHwgZXZlbnQuY2xp
Y2tDb3VudCgpICE9IDEpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKworI2lmIEVOQUJMRShMT05H
X01PVVNFX1BSRVNTKQorICAgIGlmIChtX2RpZFJlY29nbml6ZUxvbmdNb3VzZVByZXNzKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKICAgICAKICAgICBGcmFtZVZpZXcqIHZpZXcgPSBt
X2ZyYW1lLnZpZXcoKTsKICAgICBpZiAoIXZpZXcpCkBAIC0xMDAyLDYgKzEwMjYsMTEgQEAgYm9v
bCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KGNvbnN0IE1vdXNlRXZlbnRX
aXRoSGl0VGVzdFJlc3VsdHMmIGUKICAgICBtX21vdXNlRG93bldhc0luU3ViZnJhbWUgPSBmYWxz
ZTsKICAgCiAgICAgYm9vbCBoYW5kbGVkID0gZmFsc2U7CisgICAgCisjaWYgRU5BQkxFKExPTkdf
TU9VU0VfUFJFU1MpCisgICAgaWYgKGV2ZW50LmV2ZW50KCkuYnV0dG9uKCkgPT0gTGVmdEJ1dHRv
bikKKyAgICAgICAgY2xlYXJMb25nTW91c2VQcmVzc1N0YXRlKCk7CisjZW5kaWYKIAogICAgIC8v
IENsZWFyIHRoZSBzZWxlY3Rpb24gaWYgdGhlIG1vdXNlIGRpZG4ndCBtb3ZlIGFmdGVyIHRoZSBs
YXN0IG1vdXNlCiAgICAgLy8gcHJlc3MgYW5kIGl0J3Mgbm90IGEgY29udGV4dCBtZW51IGNsaWNr
LiAgV2UgZG8gdGhpcyBzbyB3aGVuIGNsaWNraW5nCkBAIC0xNTQ1LDYgKzE1NzQsNjMgQEAgdm9p
ZCBFdmVudEhhbmRsZXI6OmF1dG9IaWRlQ3Vyc29yVGltZXJGaXJlZChUaW1lcjxFdmVudEhhbmRs
ZXI+JiB0aW1lcikKICAgICAgICAgdmlldy0+c2V0Q3Vyc29yKG1fY3VycmVudE1vdXNlQ3Vyc29y
KTsKIH0KICNlbmRpZgorICAgIAorI2lmIEVOQUJMRShMT05HX01PVVNFX1BSRVNTKQordm9pZCBF
dmVudEhhbmRsZXI6OmJlZ2luTG9uZ01vdXNlUHJlc3MoKQoreworICAgIGNsZWFyTG9uZ01vdXNl
UHJlc3NTdGF0ZSgpOworICAgIAorICAgIG1fbG9uZ01vdXNlUHJlc3NUaW1lci5zdGFydE9uZVNo
b3QobG9uZ01vdXNlUHJlc3NEZWxheSk7CisgICAgCisgICAgLy8gRklYTUU6IGJ1YmJsZSBsb25n
IG1vdXNlIHByZXNzIHVwIHRvIHRoZSBjbGllbnQuCit9CisgICAgCit2b2lkIEV2ZW50SGFuZGxl
cjo6cmVjb2duaXplTG9uZ01vdXNlUHJlc3MoVGltZXI8RXZlbnRIYW5kbGVyPiYgdGltZXIpCit7
CisgICAgQVNTRVJUX1VOVVNFRCh0aW1lciwgJnRpbWVyID09ICZtX2xvbmdNb3VzZVByZXNzVGlt
ZXIpOworCisgICAgbV9kaWRSZWNvZ25pemVMb25nTW91c2VQcmVzcyA9IHRydWU7CisKKyAgICAv
LyBDbGVhciBtb3VzZSBzdGF0ZSB0byBhdm9pZCBpbml0aWF0aW5nIGEgZHJhZy4KKyAgICBtX21v
dXNlUHJlc3NlZCA9IGZhbHNlOworICAgIGludmFsaWRhdGVDbGljaygpOworCisgICAgLy8gRklY
TUU6IGJ1YmJsZSBsb25nIG1vdXNlIHByZXNzIHVwIHRvIHRoZSBjbGllbnQuCit9CisgICAgCit2
b2lkIEV2ZW50SGFuZGxlcjo6Y2FuY2VsTG9uZ01vdXNlUHJlc3MoKQoreworICAgIGlmICghbV9s
b25nTW91c2VQcmVzc1RpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGNs
ZWFyTG9uZ01vdXNlUHJlc3NTdGF0ZSgpOworICAgIAorICAgIC8vIEZJWE1FOiBidWJibGUgbG9u
ZyBtb3VzZSBwcmVzcyB1cCB0byB0aGUgY2xpZW50LgorfQorCit2b2lkIEV2ZW50SGFuZGxlcjo6
Y2xlYXJMb25nTW91c2VQcmVzc1N0YXRlKCkKK3sKKyAgICBtX2xvbmdNb3VzZVByZXNzVGltZXIu
c3RvcCgpOworICAgIG1fZGlkUmVjb2duaXplTG9uZ01vdXNlUHJlc3MgPSBmYWxzZTsKK30KKyAg
ICAKK2Jvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVMb25nTW91c2VQcmVzc01vdXNlTW92ZWRFdmVu
dChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIG1vdXNlRXZlbnQpCit7CisgICAgaWYgKG1vdXNl
RXZlbnQuYnV0dG9uKCkgIT0gTGVmdEJ1dHRvbiB8fCBtb3VzZUV2ZW50LnR5cGUoKSAhPSBQbGF0
Zm9ybUV2ZW50OjpNb3VzZU1vdmVkKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAo
bV9kaWRSZWNvZ25pemVMb25nTW91c2VQcmVzcykKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAg
ICBpZiAoIW1vdXNlSHlzdGVyZXNpc0V4Y2VlZGVkKG1vdXNlRXZlbnQucG9zaXRpb24oKSwgbG9u
Z01vdXNlUHJlc3NQb2ludHNIeXN0ZXJlc2lzKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgY2FuY2VsTG9uZ01vdXNlUHJlc3MoKTsKKworICAgIHJldHVybiBmYWxzZTsKK30KKworI2Vu
ZGlmIC8vIEVOQUJMRShMT05HX01PVVNFX1BSRVNTKQogCiBzdGF0aWMgTGF5b3V0UG9pbnQgZG9j
dW1lbnRQb2ludEZvcldpbmRvd1BvaW50KEZyYW1lJiBmcmFtZSwgY29uc3QgSW50UG9pbnQmIHdp
bmRvd1BvaW50KQogewpAQCAtMTc5Niw2ICsxODgyLDExIEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpo
YW5kbGVNb3VzZU1vdmVFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIG1vdXNlRXZlbnQs
IEhpCiAgICAgICAgIHJldHVybiB0cnVlOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTE9OR19NT1VT
RV9QUkVTUykKKyAgICBpZiAoaGFuZGxlTG9uZ01vdXNlUHJlc3NNb3VzZU1vdmVkRXZlbnQobW91
c2VFdmVudCkpCisgICAgICAgIHJldHVybiB0cnVlOworI2VuZGlmCisKICAgICBSZWZQdHI8RnJh
bWVWaWV3PiBwcm90ZWN0b3IobV9mcmFtZS52aWV3KCkpOwogICAgIAogICAgIHNldExhc3RLbm93
bk1vdXNlUG9zaXRpb24obW91c2VFdmVudCk7CkBAIC0zMjE1LDEyICszMzA2LDYgQEAgYm9vbCBF
dmVudEhhbmRsZXI6OmRyYWdIeXN0ZXJlc2lzRXhjZWVkZWQoY29uc3QgSW50UG9pbnQmIGZsb2F0
RHJhZ1ZpZXdwb3J0TG9jYXQKIAogYm9vbCBFdmVudEhhbmRsZXI6OmRyYWdIeXN0ZXJlc2lzRXhj
ZWVkZWQoY29uc3QgRmxvYXRQb2ludCYgZHJhZ1ZpZXdwb3J0TG9jYXRpb24pIGNvbnN0CiB7Ci0g
ICAgRnJhbWVWaWV3KiB2aWV3ID0gbV9mcmFtZS52aWV3KCk7Ci0gICAgaWYgKCF2aWV3KQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgSW50UG9pbnQgZHJhZ0xvY2F0aW9uID0gdmlldy0+d2lu
ZG93VG9Db250ZW50cyhmbG9vcmVkSW50UG9pbnQoZHJhZ1ZpZXdwb3J0TG9jYXRpb24pKTsKLSAg
ICBJbnRTaXplIGRlbHRhID0gZHJhZ0xvY2F0aW9uIC0gbV9tb3VzZURvd25Qb3M7Ci0gICAgCiAg
ICAgaW50IHRocmVzaG9sZCA9IEdlbmVyYWxEcmFnSHlzdGVyZXNpczsKICAgICBzd2l0Y2ggKGRy
YWdTdGF0ZSgpLnR5cGUpIHsKICAgICBjYXNlIERyYWdTb3VyY2VBY3Rpb25TZWxlY3Rpb246CkBA
IC0zMjM5LDcgKzMzMjQsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6ZHJhZ0h5c3RlcmVzaXNFeGNl
ZWRlZChjb25zdCBGbG9hdFBvaW50JiBkcmFnVmlld3BvcnRMb2NhdGlvbgogICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAgICAgCi0gICAgcmV0dXJuIGFicyhkZWx0YS53aWR0
aCgpKSA+PSB0aHJlc2hvbGQgfHwgYWJzKGRlbHRhLmhlaWdodCgpKSA+PSB0aHJlc2hvbGQ7Cisg
ICAgcmV0dXJuIG1vdXNlSHlzdGVyZXNpc0V4Y2VlZGVkKGRyYWdWaWV3cG9ydExvY2F0aW9uLCB0
aHJlc2hvbGQpOwogfQogICAgIAogdm9pZCBFdmVudEhhbmRsZXI6OmZyZWVEYXRhVHJhbnNmZXIo
KQpAQCAtMzQxMyw2ICszNDk4LDEwIEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFnKGNv
bnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGV2ZW50LCBDaGVja0RyCiAgICAgICAg
IC8vIE9uIE9TIFggdGhpcyBjYXVzZXMgcHJvYmxlbXMgd2l0aCB0aGUgb3duZXJzaGlwIG9mIHRo
ZSBwYXN0ZWJvYXJkIGFuZCB0aGUgcHJvbWlzZWQgdHlwZXMuCiAgICAgICAgIGlmIChtX2RpZFN0
YXJ0RHJhZykgewogICAgICAgICAgICAgbV9tb3VzZURvd25NYXlTdGFydERyYWcgPSBmYWxzZTsK
KworI2lmIEVOQUJMRShMT05HX01PVVNFX1BSRVNTKQorICAgICAgICAgICAgY2FuY2VsTG9uZ01v
dXNlUHJlc3MoKTsKKyNlbmRpZgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0K
ICAgICAgICAgaWYgKGRyYWdTdGF0ZSgpLnNvdXJjZSAmJiBkcmFnU3RhdGUoKS5zaG91bGREaXNw
YXRjaEV2ZW50cykgewpAQCAtMzQzMyw3ICszNTIyLDIwIEBAIGNsZWFudXBEcmFnOgogICAgIHJl
dHVybiB0cnVlOwogfQogI2VuZGlmIC8vIEVOQUJMRShEUkFHX1NVUFBPUlQpCi0gIAorICAgIAor
I2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpIHx8IEVOQUJMRShMT05HX01PVVNFX1BSRVNTKQorYm9v
bCBFdmVudEhhbmRsZXI6Om1vdXNlSHlzdGVyZXNpc0V4Y2VlZGVkKGNvbnN0IEZsb2F0UG9pbnQm
IHZpZXdwb3J0TG9jYXRpb24sIGNvbnN0IGludCBwb2ludHNUaHJlc2hvbGQpIGNvbnN0Cit7Cisg
ICAgRnJhbWVWaWV3KiB2aWV3ID0gbV9mcmFtZS52aWV3KCk7CisgICAgaWYgKCF2aWV3KQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgSW50UG9pbnQgbG9jYXRpb24gPSB2aWV3LT53aW5kb3dU
b0NvbnRlbnRzKGZsb29yZWRJbnRQb2ludCh2aWV3cG9ydExvY2F0aW9uKSk7CisgICAgSW50U2l6
ZSBkZWx0YSA9IGxvY2F0aW9uIC0gbV9tb3VzZURvd25Qb3M7CisgICAgCisgICAgcmV0dXJuIGFi
cyhkZWx0YS53aWR0aCgpKSA+PSBwb2ludHNUaHJlc2hvbGQgfHwgYWJzKGRlbHRhLmhlaWdodCgp
KSA+PSBwb2ludHNUaHJlc2hvbGQ7Cit9CisjZW5kaWYgLy8gRU5BQkxFKERSQUdfU1VQUE9SVCkg
fHwgRU5BQkxFKExPTkdfTU9VU0VfUFJFU1MpCisKIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVU
ZXh0SW5wdXRFdmVudChjb25zdCBTdHJpbmcmIHRleHQsIEV2ZW50KiB1bmRlcmx5aW5nRXZlbnQs
IFRleHRFdmVudElucHV0VHlwZSBpbnB1dFR5cGUpCiB7CiAgICAgLy8gUGxhdGZvcm1zIHNob3Vs
ZCBkaWZmZXJlbnRpYXRlIHJlYWwgY29tbWFuZHMgbGlrZSBzZWxlY3RBbGwgZnJvbSB0ZXh0IGlu
cHV0IGluIGRpc2d1aXNlIChsaWtlIGluc2VydE5ld2xpbmUpLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRI
YW5kbGVyLmgKaW5kZXggZjY0MGE0NDZjMjZiZmVmZDFlZTNkNTljNGQ2MTBkYjU5ZDVjMmQyOS4u
NGM3MmQ4ZWU4ZDk2YmQ3OWE4MzUzZDgzZjEyOTBmY2Y1ZGNiYmY5NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0V2ZW50SGFuZGxlci5oCkBAIC0zNzksNiArMzc5LDEwIEBAIHByaXZhdGU6CiAgICAgYm9vbCBk
cmFnSHlzdGVyZXNpc0V4Y2VlZGVkKGNvbnN0IEZsb2F0UG9pbnQmKSBjb25zdDsKICAgICBib29s
IGRyYWdIeXN0ZXJlc2lzRXhjZWVkZWQoY29uc3QgSW50UG9pbnQmKSBjb25zdDsKICNlbmRpZiAv
LyBFTkFCTEUoRFJBR19TVVBQT1JUKQorICAgIAorI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpIHx8
IEVOQUJMRShMT05HX01PVVNFX1BSRVNTKQorICAgIGJvb2wgbW91c2VIeXN0ZXJlc2lzRXhjZWVk
ZWQoY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IGludCBwb2ludHNUaHJlc2hvbGQpIGNvbnN0Owor
I2VuZGlmCiAKICAgICBib29sIHBhc3NNb3VzZVByZXNzRXZlbnRUb1N1YmZyYW1lKE1vdXNlRXZl
bnRXaXRoSGl0VGVzdFJlc3VsdHMmLCBGcmFtZSogc3ViZnJhbWUpOwogICAgIGJvb2wgcGFzc01v
dXNlTW92ZUV2ZW50VG9TdWJmcmFtZShNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiwgRnJh
bWUqIHN1YmZyYW1lLCBIaXRUZXN0UmVzdWx0KiBob3ZlcmVkTm9kZSA9IDApOwpAQCAtNDM4LDYg
KzQ0MiwxNSBAQCBwcml2YXRlOgogICAgIHZvaWQgYXV0b0hpZGVDdXJzb3JUaW1lckZpcmVkKFRp
bWVyPEV2ZW50SGFuZGxlcj4mKTsKICNlbmRpZgogCisjaWYgRU5BQkxFKExPTkdfTU9VU0VfUFJF
U1MpCisgICAgdm9pZCBiZWdpbkxvbmdNb3VzZVByZXNzKCk7CisgICAgdm9pZCByZWNvZ25pemVM
b25nTW91c2VQcmVzcyhUaW1lcjxFdmVudEhhbmRsZXI+Jik7CisgICAgdm9pZCBjYW5jZWxMb25n
TW91c2VQcmVzcygpOworICAgIGJvb2wgbG9uZ01vdXNlUHJlc3NIeXN0ZXJlc2lzRXhjZWVkZWQo
KTsKKyAgICB2b2lkIGNsZWFyTG9uZ01vdXNlUHJlc3NTdGF0ZSgpOworICAgIGJvb2wgaGFuZGxl
TG9uZ01vdXNlUHJlc3NNb3VzZU1vdmVkRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7
CisjZW5kaWYKKyAgICAKICAgICB2b2lkIGNsZWFyTGF0Y2hlZFN0YXRlKCk7CiAKICAgICBGcmFt
ZSYgbV9mcmFtZTsKQEAgLTQ2NSw2ICs0NzgsMTAgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoQ1VS
U09SX1NVUFBPUlQpCiAgICAgVGltZXI8RXZlbnRIYW5kbGVyPiBtX2N1cnNvclVwZGF0ZVRpbWVy
OwogI2VuZGlmCisjaWYgRU5BQkxFKExPTkdfTU9VU0VfUFJFU1MpCisgICAgVGltZXI8RXZlbnRI
YW5kbGVyPiBtX2xvbmdNb3VzZVByZXNzVGltZXI7CisgICAgYm9vbCBtX2RpZFJlY29nbml6ZUxv
bmdNb3VzZVByZXNzOworI2VuZGlmCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QXV0b3Njcm9sbENv
bnRyb2xsZXI+IG1fYXV0b3Njcm9sbENvbnRyb2xsZXI7CiAgICAgYm9vbCBtX21vdXNlRG93bk1h
eVN0YXJ0QXV0b3Njcm9sbDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>236311</attachid>
            <date>2014-08-08 15:00:05 -0700</date>
            <delta_ts>2014-08-08 16:16:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-135476-20140808145954.patch</filename>
            <type>text/plain</type>
            <size>11374</size>
            <attacher name="Peyton Randolph">prandolph</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTcyMjEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWViNTBhMWYyMGQ0NTVh
ZTEwMDRkYWM0NGQ2ZjRhZTgxMjIwNzZhMC4uZTBkZDFmNDY0ZTM0ZjQ1MDA4NWFjOWM4ODBhMGZh
ZDA4ODdhYTFiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDE0LTA4LTA3ICBQZXl0
b24gUmFuZG9scGggIDxwcmFuZG9scGhAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBs
b25nIG1vdXNlIHByZXNzIG92ZXIgbGlua3MuIFBhcnQgb2YgMTM1MjU3IC0gQWRkIGxvbmcgbW91
c2UgcHJlc3MgZ2VzdHVyZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEzNTQ3NgorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBIb3J0b24uCisKKyAg
ICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhh
bmRsZXI6OkV2ZW50SGFuZGxlcik6IAorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpj
bGVhcik6IENsZWFyIGxvbmcgcHJlc3Mgc3RhdGUuCisgICAgICAgIChXZWJDb3JlOjpFdmVudEhh
bmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVudCk6IFN0YXJ0IHRoZSBsb25nLXByZXNzIGlmIHRo
ZSBtb3VzZSBwcmVzcyBpcyBhIGxlZnQKKyAgICAgICAgbW91c2UgcHJlc3Mgb3ZlciBhIGxpbmsu
CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmV2ZW50TWF5U3RhcnREcmFnKTogV2Ug
Y2Fubm90IHN0YXJ0IGEgZHJhZyBpZiB3ZSd2ZSByZWNvZ25pemVkIGEgbG9uZyBwcmVzcy4KKyAg
ICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VSZWxlYXNlRXZlbnQpOiAK
KyAgICAgICAgSWYgd2UgZGlkbid0IHJlY29nbml6ZSBhIGxvbmcgcHJlc3MsIGNhbmNlbCB0aGUg
bG9uZyBwcmVzcy4KKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6YmVnaW5UcmFja2lu
Z1BvdGVudGlhbExvbmdNb3VzZVByZXNzKTogCisgICAgICAgIEJlZ2luIHRoZSBsb25nIG1vdXNl
IHByZXNzIGJ5IGtpY2tpbmcgb2ZmIGEgdGltZXIuIElmIHRoZSB0aW1lciBmaXJlcyBiZWZvcmUg
dGhlIGxvbmcgcHJlc3MgaXMKKyAgICAgICAgY2FuY2VsbGVkLCB0aGUgbG9uZyBwcmVzcyBpcyBy
ZWNvZ25pemVkLgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpyZWNvZ25pemVMb25n
TW91c2VQcmVzcyk6IEFkZGVkLiBUcmlnZ2VyIHRoZSBsb25nLXByZXNzIGFuZCBkaXNhYmxlIG90
aGVyCisgICAgICAgIGFjdGlvbnMgbGlrZSBkcmFnZ2luZy4KKyAgICAgICAgKFdlYkNvcmU6OkV2
ZW50SGFuZGxlcjo6Y2FuY2VsVHJhY2tpbmdQb3RlbnRpYWxMb25nTW91c2VQcmVzcyk6IEFkZGVk
LiBDYW5jZWwgdGhlIGxvbmcgcHJlc3MgYnkgCisgICAgICAgIGNsZWFyaW5nIHJlbGF0ZWQgc3Rh
dGUuCisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmNsZWFyTG9uZ01vdXNlUHJlc3NT
dGF0ZSk6IEFkZGVkLiBDbGVhciBsb25nIHByZXNzIHN0YXRlLgorICAgICAgICAoV2ViQ29yZTo6
RXZlbnRIYW5kbGVyOjpoYW5kbGVMb25nTW91c2VQcmVzc01vdXNlTW92ZWRFdmVudCk6IEFkZGVk
LiBDYW5jZWwgdGhlIGxvbmcgcHJlc3MgaWYKKyAgICAgICAgdGhlIG1vdXNlIG1vdmVzIG91dHNp
ZGUgYSBzcGVjaWZpZWQgaHlzdGVyZXNpcyBpbnRlcnZhbC4KKyAgICAgICAgKFdlYkNvcmU6OkV2
ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VNb3ZlRXZlbnQpOiBBc2sgaGFuZGxlTG9uZ01vdXNlUHJl
c3NNb3VzZU1vdmVkRXZlbnQgd2hldGhlciB0bworICAgICAgICByZXR1cm4gZWFybHkgYW5kIG5v
dCB1cGRhdGUgaG92ZXJzLCBjdXJzb3JzLCBkcmFncywgZXRjLgorICAgICAgICAoV2ViQ29yZTo6
RXZlbnRIYW5kbGVyOjpkcmFnSHlzdGVyZXNpc0V4Y2VlZGVkKTogRmFjdG9yIG91dCB0aGUgaHlz
dGVyZXNpcyBib3VuZHMgY2hlY2sgaW50bworICAgICAgICBtb3VzZUh5c3RlcmVzaXNFeGNlZWRl
ZCgpLgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFnKTogQ2FuY2Vs
IGxvbmcgcHJlc3MgdXBvbiBzdGFydGluZyBkcmFnLgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRI
YW5kbGVyOjptb3VzZUh5c3RlcmVzaXNFeGNlZWRlZCk6IEFkZGVkLiBHZW5lcmFsIGh5c3RlcmVz
aXMgZnVuY3Rpb24gdGhhdCB0YWtlcyBhbgorICAgICAgICBhcmJpdHJhcnkgbW91c2UgbW92ZW1l
bnQgdGhyZXNob2xkLiBGYWN0b3JlZCBvdXQgZnJvbSBkcmFnSHlzdGVyZXNpc0V4Y2VlZGVkLgor
ICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmg6CisKIDIwMTQtMDgtMDYgIEJyZW50IEZ1bGdo
YW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgW01hYywgaU9TXSBDYXB0aW9ucyBh
cmUgYXBwZWFyaW5nIG11bHRpcGxlIHRpbWVzIGR1cmluZyByZXBlYXRlZCB2aWRlbyBwbGF5IHRo
cm91Z2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCA4N2JiMjEzZmQxZDI5
NzZkYjg2YjlkYTA5OTA0ZWIzODgwZjk5ZmVmLi42NjY3Y2M5ZTQ1ZTNkMGMxZTZjYWQ0YzRkYmRi
MTc2NjYyNWM1YmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC0xMzEs
NiArMTMxLDExIEBAIGNvbnN0IGludCBUZXh0RHJhZ0h5c3RlcmVzaXMgPSAzOwogY29uc3QgaW50
IEdlbmVyYWxEcmFnSHlzdGVyZXNpcyA9IDM7CiAjZW5kaWYgLy8gRU5BQkxFKERSQUdfU1VQUE9S
VCkKIAorI2lmIEVOQUJMRShMT05HX01PVVNFX1BSRVNTKQorY29uc3Qgc3RkOjpjaHJvbm86Om1p
bGxpc2Vjb25kcyBMb25nTW91c2VQcmVzc1JlY29nbml0aW9uRGVsYXkgPSA1MDBfbXM7Citjb25z
dCBpbnQgTWF4aW11bUxvbmdNb3VzZVByZXNzRHJhZ0Rpc3RhbmNlID0gNTsgLy8gaW4gcG9pbnRz
LgorI2VuZGlmCisKICNpZiBFTkFCTEUoSU9TX0dFU1RVUkVfRVZFTlRTKQogY29uc3QgZmxvYXQg
R2VzdHVyZVVua25vd24gPSAwOwogI2VuZGlmCkBAIC0zNzEsNiArMzc2LDEwIEBAIEV2ZW50SGFu
ZGxlcjo6RXZlbnRIYW5kbGVyKEZyYW1lJiBmcmFtZSkKICNpZiBFTkFCTEUoQ1VSU09SX1NVUFBP
UlQpCiAgICAgLCBtX2N1cnNvclVwZGF0ZVRpbWVyKHRoaXMsICZFdmVudEhhbmRsZXI6OmN1cnNv
clVwZGF0ZVRpbWVyRmlyZWQpCiAjZW5kaWYKKyNpZiBFTkFCTEUoTE9OR19NT1VTRV9QUkVTUykK
KyAgICAsIG1fbG9uZ01vdXNlUHJlc3NUaW1lcih0aGlzLCAmRXZlbnRIYW5kbGVyOjpyZWNvZ25p
emVMb25nTW91c2VQcmVzcykKKyAgICAsIG1fZGlkUmVjb2duaXplTG9uZ01vdXNlUHJlc3MoZmFs
c2UpCisjZW5kaWYKICAgICAsIG1fYXV0b3Njcm9sbENvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1
ZTxBdXRvc2Nyb2xsQ29udHJvbGxlcj4oKSkKICAgICAsIG1fbW91c2VEb3duTWF5U3RhcnRBdXRv
c2Nyb2xsKGZhbHNlKQogICAgICwgbV9tb3VzZURvd25XYXNJblN1YmZyYW1lKGZhbHNlKQpAQCAt
NDQ3LDYgKzQ1Niw5IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpjbGVhcigpCiAjaWYgRU5BQkxFKENV
UlNPUl9WSVNJQklMSVRZKQogICAgIGNhbmNlbEF1dG9IaWRlQ3Vyc29yVGltZXIoKTsKICNlbmRp
ZgorI2lmIEVOQUJMRShMT05HX01PVVNFX1BSRVNTKQorICAgIGNsZWFyTG9uZ01vdXNlUHJlc3NT
dGF0ZSgpOworI2VuZGlmCiAgICAgbV9yZXNpemVMYXllciA9IDA7CiAgICAgbV9lbGVtZW50VW5k
ZXJNb3VzZSA9IG51bGxwdHI7CiAgICAgbV9sYXN0RWxlbWVudFVuZGVyTW91c2UgPSBudWxscHRy
OwpAQCAtNzYyLDYgKzc3NCwxMyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVz
c0V2ZW50KGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGV2ZQogICAgICAgICB9
CiAgICAgfQogCisjaWYgRU5BQkxFKExPTkdfTU9VU0VfUFJFU1MpCisgICAgaWYgKGV2ZW50LmV2
ZW50KCkuYnV0dG9uKCkgPT0gTGVmdEJ1dHRvbiAmJiBldmVudC5pc092ZXJMaW5rKCkpIHsKKyAg
ICAgICAgLy8gRklYTUUgMTM1NzAzOiBIYW5kbGUgbG9uZyBwcmVzcyBmb3IgbW9yZSB0aGFuIGp1
c3QgbGlua3MuCisgICAgICAgIGJlZ2luVHJhY2tpbmdQb3RlbnRpYWxMb25nTW91c2VQcmVzcygp
OworICAgIH0KKyNlbmRpZgorCiAgICAgLy8gV2UgZG9uJ3QgZG8gdGhpcyBhdCB0aGUgc3RhcnQg
b2YgbW91c2UgZG93biBoYW5kbGluZywKICAgICAvLyBiZWNhdXNlIHdlIGRvbid0IHdhbnQgdG8g
ZG8gaXQgdW50aWwgd2Uga25vdyB3ZSBkaWRuJ3QgaGl0IGEgd2lkZ2V0LgogICAgIGlmIChzaW5n
bGVDbGljaykKQEAgLTg0Niw2ICs4NjUsMTEgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmV2ZW50TWF5
U3RhcnREcmFnKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQpIGNvbnN0CiAKICAgICBp
ZiAoZXZlbnQuYnV0dG9uKCkgIT0gTGVmdEJ1dHRvbiB8fCBldmVudC5jbGlja0NvdW50KCkgIT0g
MSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworCisjaWYgRU5BQkxFKExPTkdfTU9VU0VfUFJFU1Mp
CisgICAgaWYgKG1fZGlkUmVjb2duaXplTG9uZ01vdXNlUHJlc3MpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyNlbmRpZgogICAgIAogICAgIEZyYW1lVmlldyogdmlldyA9IG1fZnJhbWUudmlldygp
OwogICAgIGlmICghdmlldykKQEAgLTEwMDIsNiArMTAyNiwxMSBAQCBib29sIEV2ZW50SGFuZGxl
cjo6aGFuZGxlTW91c2VSZWxlYXNlRXZlbnQoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVz
dWx0cyYgZQogICAgIG1fbW91c2VEb3duV2FzSW5TdWJmcmFtZSA9IGZhbHNlOwogICAKICAgICBi
b29sIGhhbmRsZWQgPSBmYWxzZTsKKyAgICAKKyNpZiBFTkFCTEUoTE9OR19NT1VTRV9QUkVTUykK
KyAgICBpZiAoZXZlbnQuZXZlbnQoKS5idXR0b24oKSA9PSBMZWZ0QnV0dG9uKQorICAgICAgICBj
bGVhckxvbmdNb3VzZVByZXNzU3RhdGUoKTsKKyNlbmRpZgogCiAgICAgLy8gQ2xlYXIgdGhlIHNl
bGVjdGlvbiBpZiB0aGUgbW91c2UgZGlkbid0IG1vdmUgYWZ0ZXIgdGhlIGxhc3QgbW91c2UKICAg
ICAvLyBwcmVzcyBhbmQgaXQncyBub3QgYSBjb250ZXh0IG1lbnUgY2xpY2suICBXZSBkbyB0aGlz
IHNvIHdoZW4gY2xpY2tpbmcKQEAgLTE1NDUsNiArMTU3NCw2MSBAQCB2b2lkIEV2ZW50SGFuZGxl
cjo6YXV0b0hpZGVDdXJzb3JUaW1lckZpcmVkKFRpbWVyPEV2ZW50SGFuZGxlcj4mIHRpbWVyKQog
ICAgICAgICB2aWV3LT5zZXRDdXJzb3IobV9jdXJyZW50TW91c2VDdXJzb3IpOwogfQogI2VuZGlm
CisgICAgCisjaWYgRU5BQkxFKExPTkdfTU9VU0VfUFJFU1MpCit2b2lkIEV2ZW50SGFuZGxlcjo6
YmVnaW5UcmFja2luZ1BvdGVudGlhbExvbmdNb3VzZVByZXNzKCkKK3sKKyAgICBjbGVhckxvbmdN
b3VzZVByZXNzU3RhdGUoKTsKKyAgICAKKyAgICBtX2xvbmdNb3VzZVByZXNzVGltZXIuc3RhcnRP
bmVTaG90KExvbmdNb3VzZVByZXNzUmVjb2duaXRpb25EZWxheSk7CisgICAgCisgICAgLy8gRklY
TUUgMTM1NTgwOiBCdWJibGUgbG9uZyBtb3VzZSBwcmVzcyB1cCB0byB0aGUgY2xpZW50LgorfQor
ICAgIAordm9pZCBFdmVudEhhbmRsZXI6OnJlY29nbml6ZUxvbmdNb3VzZVByZXNzKFRpbWVyPEV2
ZW50SGFuZGxlcj4mIHRpbWVyKQoreworICAgIEFTU0VSVF9VTlVTRUQodGltZXIsICZ0aW1lciA9
PSAmbV9sb25nTW91c2VQcmVzc1RpbWVyKTsKKworICAgIG1fZGlkUmVjb2duaXplTG9uZ01vdXNl
UHJlc3MgPSB0cnVlOworCisgICAgLy8gQ2xlYXIgbW91c2Ugc3RhdGUgdG8gYXZvaWQgaW5pdGlh
dGluZyBhIGRyYWcuCisgICAgbV9tb3VzZVByZXNzZWQgPSBmYWxzZTsKKyAgICBpbnZhbGlkYXRl
Q2xpY2soKTsKKworICAgIC8vIEZJWE1FIDEzNTU4MDogQnViYmxlIGxvbmcgbW91c2UgcHJlc3Mg
dXAgdG8gdGhlIGNsaWVudC4KK30KKyAgICAKK3ZvaWQgRXZlbnRIYW5kbGVyOjpjYW5jZWxUcmFj
a2luZ1BvdGVudGlhbExvbmdNb3VzZVByZXNzKCkKK3sKKyAgICBpZiAoIW1fbG9uZ01vdXNlUHJl
c3NUaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBjbGVhckxvbmdNb3Vz
ZVByZXNzU3RhdGUoKTsKKyAgICAKKyAgICAvLyBGSVhNRSAxMzU1ODA6IEJ1YmJsZSBsb25nIG1v
dXNlIHByZXNzIHVwIHRvIHRoZSBjbGllbnQuCit9CisKK3ZvaWQgRXZlbnRIYW5kbGVyOjpjbGVh
ckxvbmdNb3VzZVByZXNzU3RhdGUoKQoreworICAgIG1fbG9uZ01vdXNlUHJlc3NUaW1lci5zdG9w
KCk7CisgICAgbV9kaWRSZWNvZ25pemVMb25nTW91c2VQcmVzcyA9IGZhbHNlOworfQorICAgIAor
Ym9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZUxvbmdNb3VzZVByZXNzTW91c2VNb3ZlZEV2ZW50KGNv
bnN0IFBsYXRmb3JtTW91c2VFdmVudCYgbW91c2VFdmVudCkKK3sKKyAgICBpZiAobW91c2VFdmVu
dC5idXR0b24oKSAhPSBMZWZ0QnV0dG9uIHx8IG1vdXNlRXZlbnQudHlwZSgpICE9IFBsYXRmb3Jt
RXZlbnQ6Ok1vdXNlTW92ZWQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChtX2Rp
ZFJlY29nbml6ZUxvbmdNb3VzZVByZXNzKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGlm
ICghbW91c2VNb3ZlbWVudEV4Y2VlZHNUaHJlc2hvbGQobW91c2VFdmVudC5wb3NpdGlvbigpLCBN
YXhpbXVtTG9uZ01vdXNlUHJlc3NEcmFnRGlzdGFuY2UpKQorICAgICAgICBjYW5jZWxUcmFja2lu
Z1BvdGVudGlhbExvbmdNb3VzZVByZXNzKCk7CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKKyNl
bmRpZiAvLyBFTkFCTEUoTE9OR19NT1VTRV9QUkVTUykKIAogc3RhdGljIExheW91dFBvaW50IGRv
Y3VtZW50UG9pbnRGb3JXaW5kb3dQb2ludChGcmFtZSYgZnJhbWUsIGNvbnN0IEludFBvaW50JiB3
aW5kb3dQb2ludCkKIHsKQEAgLTE3OTYsNiArMTg4MCwxMSBAQCBib29sIEV2ZW50SGFuZGxlcjo6
aGFuZGxlTW91c2VNb3ZlRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBtb3VzZUV2ZW50
LCBIaQogICAgICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgogCisjaWYgRU5BQkxFKExPTkdfTU9V
U0VfUFJFU1MpCisgICAgaWYgKGhhbmRsZUxvbmdNb3VzZVByZXNzTW91c2VNb3ZlZEV2ZW50KG1v
dXNlRXZlbnQpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgorCiAgICAgUmVmUHRyPEZy
YW1lVmlldz4gcHJvdGVjdG9yKG1fZnJhbWUudmlldygpKTsKICAgICAKICAgICBzZXRMYXN0S25v
d25Nb3VzZVBvc2l0aW9uKG1vdXNlRXZlbnQpOwpAQCAtMzIxNSwxMiArMzMwNCw2IEBAIGJvb2wg
RXZlbnRIYW5kbGVyOjpkcmFnSHlzdGVyZXNpc0V4Y2VlZGVkKGNvbnN0IEludFBvaW50JiBmbG9h
dERyYWdWaWV3cG9ydExvY2F0CiAKIGJvb2wgRXZlbnRIYW5kbGVyOjpkcmFnSHlzdGVyZXNpc0V4
Y2VlZGVkKGNvbnN0IEZsb2F0UG9pbnQmIGRyYWdWaWV3cG9ydExvY2F0aW9uKSBjb25zdAogewot
ICAgIEZyYW1lVmlldyogdmlldyA9IG1fZnJhbWUudmlldygpOwotICAgIGlmICghdmlldykKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIEludFBvaW50IGRyYWdMb2NhdGlvbiA9IHZpZXctPndp
bmRvd1RvQ29udGVudHMoZmxvb3JlZEludFBvaW50KGRyYWdWaWV3cG9ydExvY2F0aW9uKSk7Ci0g
ICAgSW50U2l6ZSBkZWx0YSA9IGRyYWdMb2NhdGlvbiAtIG1fbW91c2VEb3duUG9zOwotICAgIAog
ICAgIGludCB0aHJlc2hvbGQgPSBHZW5lcmFsRHJhZ0h5c3RlcmVzaXM7CiAgICAgc3dpdGNoIChk
cmFnU3RhdGUoKS50eXBlKSB7CiAgICAgY2FzZSBEcmFnU291cmNlQWN0aW9uU2VsZWN0aW9uOgpA
QCAtMzIzOSw3ICszMzIyLDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmRyYWdIeXN0ZXJlc2lzRXhj
ZWVkZWQoY29uc3QgRmxvYXRQb2ludCYgZHJhZ1ZpZXdwb3J0TG9jYXRpb24KICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogICAgIAotICAgIHJldHVybiBhYnMoZGVsdGEud2lk
dGgoKSkgPj0gdGhyZXNob2xkIHx8IGFicyhkZWx0YS5oZWlnaHQoKSkgPj0gdGhyZXNob2xkOwor
ICAgIHJldHVybiBtb3VzZU1vdmVtZW50RXhjZWVkc1RocmVzaG9sZChkcmFnVmlld3BvcnRMb2Nh
dGlvbiwgdGhyZXNob2xkKTsKIH0KICAgICAKIHZvaWQgRXZlbnRIYW5kbGVyOjpmcmVlRGF0YVRy
YW5zZmVyKCkKQEAgLTM0MTMsNiArMzQ5NiwxMCBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxl
RHJhZyhjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBldmVudCwgQ2hlY2tEcgog
ICAgICAgICAvLyBPbiBPUyBYIHRoaXMgY2F1c2VzIHByb2JsZW1zIHdpdGggdGhlIG93bmVyc2hp
cCBvZiB0aGUgcGFzdGVib2FyZCBhbmQgdGhlIHByb21pc2VkIHR5cGVzLgogICAgICAgICBpZiAo
bV9kaWRTdGFydERyYWcpIHsKICAgICAgICAgICAgIG1fbW91c2VEb3duTWF5U3RhcnREcmFnID0g
ZmFsc2U7CisKKyNpZiBFTkFCTEUoTE9OR19NT1VTRV9QUkVTUykKKyAgICAgICAgICAgIGNhbmNl
bFRyYWNraW5nUG90ZW50aWFsTG9uZ01vdXNlUHJlc3MoKTsKKyNlbmRpZgogICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGRyYWdTdGF0ZSgpLnNvdXJjZSAm
JiBkcmFnU3RhdGUoKS5zaG91bGREaXNwYXRjaEV2ZW50cykgewpAQCAtMzQzMyw3ICszNTIwLDIw
IEBAIGNsZWFudXBEcmFnOgogICAgIHJldHVybiB0cnVlOwogfQogI2VuZGlmIC8vIEVOQUJMRShE
UkFHX1NVUFBPUlQpCi0gIAorICAgIAorI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpIHx8IEVOQUJM
RShMT05HX01PVVNFX1BSRVNTKQorYm9vbCBFdmVudEhhbmRsZXI6Om1vdXNlTW92ZW1lbnRFeGNl
ZWRzVGhyZXNob2xkKGNvbnN0IEZsb2F0UG9pbnQmIHZpZXdwb3J0TG9jYXRpb24sIGNvbnN0IGlu
dCBwb2ludHNUaHJlc2hvbGQpIGNvbnN0Cit7CisgICAgRnJhbWVWaWV3KiB2aWV3ID0gbV9mcmFt
ZS52aWV3KCk7CisgICAgaWYgKCF2aWV3KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgSW50
UG9pbnQgbG9jYXRpb24gPSB2aWV3LT53aW5kb3dUb0NvbnRlbnRzKGZsb29yZWRJbnRQb2ludCh2
aWV3cG9ydExvY2F0aW9uKSk7CisgICAgSW50U2l6ZSBkZWx0YSA9IGxvY2F0aW9uIC0gbV9tb3Vz
ZURvd25Qb3M7CisgICAgCisgICAgcmV0dXJuIGFicyhkZWx0YS53aWR0aCgpKSA+PSBwb2ludHNU
aHJlc2hvbGQgfHwgYWJzKGRlbHRhLmhlaWdodCgpKSA+PSBwb2ludHNUaHJlc2hvbGQ7Cit9Cisj
ZW5kaWYgLy8gRU5BQkxFKERSQUdfU1VQUE9SVCkgfHwgRU5BQkxFKExPTkdfTU9VU0VfUFJFU1Mp
CisKIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVUZXh0SW5wdXRFdmVudChjb25zdCBTdHJpbmcm
IHRleHQsIEV2ZW50KiB1bmRlcmx5aW5nRXZlbnQsIFRleHRFdmVudElucHV0VHlwZSBpbnB1dFR5
cGUpCiB7CiAgICAgLy8gUGxhdGZvcm1zIHNob3VsZCBkaWZmZXJlbnRpYXRlIHJlYWwgY29tbWFu
ZHMgbGlrZSBzZWxlY3RBbGwgZnJvbSB0ZXh0IGlucHV0IGluIGRpc2d1aXNlIChsaWtlIGluc2Vy
dE5ld2xpbmUpLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKaW5kZXggZjY0MGE0NDZjMjZi
ZmVmZDFlZTNkNTljNGQ2MTBkYjU5ZDVjMmQyOS4uZDI2OWU1NDYxMjg5MTVkM2RkMjE2NTU5MDdh
MzBmZTk2Mjk0NTAzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRs
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCkBAIC0zNzksNiAr
Mzc5LDEwIEBAIHByaXZhdGU6CiAgICAgYm9vbCBkcmFnSHlzdGVyZXNpc0V4Y2VlZGVkKGNvbnN0
IEZsb2F0UG9pbnQmKSBjb25zdDsKICAgICBib29sIGRyYWdIeXN0ZXJlc2lzRXhjZWVkZWQoY29u
c3QgSW50UG9pbnQmKSBjb25zdDsKICNlbmRpZiAvLyBFTkFCTEUoRFJBR19TVVBQT1JUKQorICAg
IAorI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpIHx8IEVOQUJMRShMT05HX01PVVNFX1BSRVNTKQor
ICAgIGJvb2wgbW91c2VNb3ZlbWVudEV4Y2VlZHNUaHJlc2hvbGQoY29uc3QgRmxvYXRQb2ludCYs
IGNvbnN0IGludCBwb2ludHNUaHJlc2hvbGQpIGNvbnN0OworI2VuZGlmCiAKICAgICBib29sIHBh
c3NNb3VzZVByZXNzRXZlbnRUb1N1YmZyYW1lKE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMm
LCBGcmFtZSogc3ViZnJhbWUpOwogICAgIGJvb2wgcGFzc01vdXNlTW92ZUV2ZW50VG9TdWJmcmFt
ZShNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiwgRnJhbWUqIHN1YmZyYW1lLCBIaXRUZXN0
UmVzdWx0KiBob3ZlcmVkTm9kZSA9IDApOwpAQCAtNDM4LDYgKzQ0MiwxNSBAQCBwcml2YXRlOgog
ICAgIHZvaWQgYXV0b0hpZGVDdXJzb3JUaW1lckZpcmVkKFRpbWVyPEV2ZW50SGFuZGxlcj4mKTsK
ICNlbmRpZgogCisjaWYgRU5BQkxFKExPTkdfTU9VU0VfUFJFU1MpCisgICAgdm9pZCBiZWdpblRy
YWNraW5nUG90ZW50aWFsTG9uZ01vdXNlUHJlc3MoKTsKKyAgICB2b2lkIHJlY29nbml6ZUxvbmdN
b3VzZVByZXNzKFRpbWVyPEV2ZW50SGFuZGxlcj4mKTsKKyAgICB2b2lkIGNhbmNlbFRyYWNraW5n
UG90ZW50aWFsTG9uZ01vdXNlUHJlc3MoKTsKKyAgICBib29sIGxvbmdNb3VzZVByZXNzSHlzdGVy
ZXNpc0V4Y2VlZGVkKCk7CisgICAgdm9pZCBjbGVhckxvbmdNb3VzZVByZXNzU3RhdGUoKTsKKyAg
ICBib29sIGhhbmRsZUxvbmdNb3VzZVByZXNzTW91c2VNb3ZlZEV2ZW50KGNvbnN0IFBsYXRmb3Jt
TW91c2VFdmVudCYpOworI2VuZGlmCisgICAgCiAgICAgdm9pZCBjbGVhckxhdGNoZWRTdGF0ZSgp
OwogCiAgICAgRnJhbWUmIG1fZnJhbWU7CkBAIC00NjUsNiArNDc4LDEwIEBAIHByaXZhdGU6CiAj
aWYgRU5BQkxFKENVUlNPUl9TVVBQT1JUKQogICAgIFRpbWVyPEV2ZW50SGFuZGxlcj4gbV9jdXJz
b3JVcGRhdGVUaW1lcjsKICNlbmRpZgorI2lmIEVOQUJMRShMT05HX01PVVNFX1BSRVNTKQorICAg
IFRpbWVyPEV2ZW50SGFuZGxlcj4gbV9sb25nTW91c2VQcmVzc1RpbWVyOworICAgIGJvb2wgbV9k
aWRSZWNvZ25pemVMb25nTW91c2VQcmVzczsKKyNlbmRpZgogCiAgICAgc3RkOjp1bmlxdWVfcHRy
PEF1dG9zY3JvbGxDb250cm9sbGVyPiBtX2F1dG9zY3JvbGxDb250cm9sbGVyOwogICAgIGJvb2wg
bV9tb3VzZURvd25NYXlTdGFydEF1dG9zY3JvbGw7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>236321</attachid>
            <date>2014-08-08 16:16:51 -0700</date>
            <delta_ts>2014-08-08 17:00:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-135476-20140808161640.patch</filename>
            <type>text/plain</type>
            <size>11362</size>
            <attacher name="Peyton Randolph">prandolph</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTcyMjEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWViNTBhMWYyMGQ0NTVh
ZTEwMDRkYWM0NGQ2ZjRhZTgxMjIwNzZhMC4uZTBkZDFmNDY0ZTM0ZjQ1MDA4NWFjOWM4ODBhMGZh
ZDA4ODdhYTFiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDE0LTA4LTA3ICBQZXl0
b24gUmFuZG9scGggIDxwcmFuZG9scGhAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBs
b25nIG1vdXNlIHByZXNzIG92ZXIgbGlua3MuIFBhcnQgb2YgMTM1MjU3IC0gQWRkIGxvbmcgbW91
c2UgcHJlc3MgZ2VzdHVyZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEzNTQ3NgorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBIb3J0b24uCisKKyAg
ICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhh
bmRsZXI6OkV2ZW50SGFuZGxlcik6IAorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpj
bGVhcik6IENsZWFyIGxvbmcgcHJlc3Mgc3RhdGUuCisgICAgICAgIChXZWJDb3JlOjpFdmVudEhh
bmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVudCk6IFN0YXJ0IHRoZSBsb25nLXByZXNzIGlmIHRo
ZSBtb3VzZSBwcmVzcyBpcyBhIGxlZnQKKyAgICAgICAgbW91c2UgcHJlc3Mgb3ZlciBhIGxpbmsu
CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmV2ZW50TWF5U3RhcnREcmFnKTogV2Ug
Y2Fubm90IHN0YXJ0IGEgZHJhZyBpZiB3ZSd2ZSByZWNvZ25pemVkIGEgbG9uZyBwcmVzcy4KKyAg
ICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VSZWxlYXNlRXZlbnQpOiAK
KyAgICAgICAgSWYgd2UgZGlkbid0IHJlY29nbml6ZSBhIGxvbmcgcHJlc3MsIGNhbmNlbCB0aGUg
bG9uZyBwcmVzcy4KKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6YmVnaW5UcmFja2lu
Z1BvdGVudGlhbExvbmdNb3VzZVByZXNzKTogCisgICAgICAgIEJlZ2luIHRoZSBsb25nIG1vdXNl
IHByZXNzIGJ5IGtpY2tpbmcgb2ZmIGEgdGltZXIuIElmIHRoZSB0aW1lciBmaXJlcyBiZWZvcmUg
dGhlIGxvbmcgcHJlc3MgaXMKKyAgICAgICAgY2FuY2VsbGVkLCB0aGUgbG9uZyBwcmVzcyBpcyBy
ZWNvZ25pemVkLgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpyZWNvZ25pemVMb25n
TW91c2VQcmVzcyk6IEFkZGVkLiBUcmlnZ2VyIHRoZSBsb25nLXByZXNzIGFuZCBkaXNhYmxlIG90
aGVyCisgICAgICAgIGFjdGlvbnMgbGlrZSBkcmFnZ2luZy4KKyAgICAgICAgKFdlYkNvcmU6OkV2
ZW50SGFuZGxlcjo6Y2FuY2VsVHJhY2tpbmdQb3RlbnRpYWxMb25nTW91c2VQcmVzcyk6IEFkZGVk
LiBDYW5jZWwgdGhlIGxvbmcgcHJlc3MgYnkgCisgICAgICAgIGNsZWFyaW5nIHJlbGF0ZWQgc3Rh
dGUuCisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmNsZWFyTG9uZ01vdXNlUHJlc3NT
dGF0ZSk6IEFkZGVkLiBDbGVhciBsb25nIHByZXNzIHN0YXRlLgorICAgICAgICAoV2ViQ29yZTo6
RXZlbnRIYW5kbGVyOjpoYW5kbGVMb25nTW91c2VQcmVzc01vdXNlTW92ZWRFdmVudCk6IEFkZGVk
LiBDYW5jZWwgdGhlIGxvbmcgcHJlc3MgaWYKKyAgICAgICAgdGhlIG1vdXNlIG1vdmVzIG91dHNp
ZGUgYSBzcGVjaWZpZWQgaHlzdGVyZXNpcyBpbnRlcnZhbC4KKyAgICAgICAgKFdlYkNvcmU6OkV2
ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VNb3ZlRXZlbnQpOiBBc2sgaGFuZGxlTG9uZ01vdXNlUHJl
c3NNb3VzZU1vdmVkRXZlbnQgd2hldGhlciB0bworICAgICAgICByZXR1cm4gZWFybHkgYW5kIG5v
dCB1cGRhdGUgaG92ZXJzLCBjdXJzb3JzLCBkcmFncywgZXRjLgorICAgICAgICAoV2ViQ29yZTo6
RXZlbnRIYW5kbGVyOjpkcmFnSHlzdGVyZXNpc0V4Y2VlZGVkKTogRmFjdG9yIG91dCB0aGUgaHlz
dGVyZXNpcyBib3VuZHMgY2hlY2sgaW50bworICAgICAgICBtb3VzZUh5c3RlcmVzaXNFeGNlZWRl
ZCgpLgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFnKTogQ2FuY2Vs
IGxvbmcgcHJlc3MgdXBvbiBzdGFydGluZyBkcmFnLgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRI
YW5kbGVyOjptb3VzZUh5c3RlcmVzaXNFeGNlZWRlZCk6IEFkZGVkLiBHZW5lcmFsIGh5c3RlcmVz
aXMgZnVuY3Rpb24gdGhhdCB0YWtlcyBhbgorICAgICAgICBhcmJpdHJhcnkgbW91c2UgbW92ZW1l
bnQgdGhyZXNob2xkLiBGYWN0b3JlZCBvdXQgZnJvbSBkcmFnSHlzdGVyZXNpc0V4Y2VlZGVkLgor
ICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmg6CisKIDIwMTQtMDgtMDYgIEJyZW50IEZ1bGdo
YW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgW01hYywgaU9TXSBDYXB0aW9ucyBh
cmUgYXBwZWFyaW5nIG11bHRpcGxlIHRpbWVzIGR1cmluZyByZXBlYXRlZCB2aWRlbyBwbGF5IHRo
cm91Z2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCA4N2JiMjEzZmQxZDI5
NzZkYjg2YjlkYTA5OTA0ZWIzODgwZjk5ZmVmLi4wMmExMzU4ZTFhZDhmNDlhM2MzZDU5ZWQ3MzBl
OTE2MTA0NjU2MDY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC0xMzEs
NiArMTMxLDExIEBAIGNvbnN0IGludCBUZXh0RHJhZ0h5c3RlcmVzaXMgPSAzOwogY29uc3QgaW50
IEdlbmVyYWxEcmFnSHlzdGVyZXNpcyA9IDM7CiAjZW5kaWYgLy8gRU5BQkxFKERSQUdfU1VQUE9S
VCkKIAorI2lmIEVOQUJMRShMT05HX01PVVNFX1BSRVNTKQorY29uc3Qgc3RkOjpjaHJvbm86Om1p
bGxpc2Vjb25kcyBsb25nTW91c2VQcmVzc1JlY29nbml0aW9uRGVsYXkgPSA1MDBfbXM7Citjb25z
dCBpbnQgbWF4aW11bUxvbmdNb3VzZVByZXNzRHJhZ0Rpc3RhbmNlID0gNTsgLy8gaW4gcG9pbnRz
LgorI2VuZGlmCisKICNpZiBFTkFCTEUoSU9TX0dFU1RVUkVfRVZFTlRTKQogY29uc3QgZmxvYXQg
R2VzdHVyZVVua25vd24gPSAwOwogI2VuZGlmCkBAIC0zNzEsNiArMzc2LDEwIEBAIEV2ZW50SGFu
ZGxlcjo6RXZlbnRIYW5kbGVyKEZyYW1lJiBmcmFtZSkKICNpZiBFTkFCTEUoQ1VSU09SX1NVUFBP
UlQpCiAgICAgLCBtX2N1cnNvclVwZGF0ZVRpbWVyKHRoaXMsICZFdmVudEhhbmRsZXI6OmN1cnNv
clVwZGF0ZVRpbWVyRmlyZWQpCiAjZW5kaWYKKyNpZiBFTkFCTEUoTE9OR19NT1VTRV9QUkVTUykK
KyAgICAsIG1fbG9uZ01vdXNlUHJlc3NUaW1lcih0aGlzLCAmRXZlbnRIYW5kbGVyOjpyZWNvZ25p
emVMb25nTW91c2VQcmVzcykKKyAgICAsIG1fZGlkUmVjb2duaXplTG9uZ01vdXNlUHJlc3MoZmFs
c2UpCisjZW5kaWYKICAgICAsIG1fYXV0b3Njcm9sbENvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1
ZTxBdXRvc2Nyb2xsQ29udHJvbGxlcj4oKSkKICAgICAsIG1fbW91c2VEb3duTWF5U3RhcnRBdXRv
c2Nyb2xsKGZhbHNlKQogICAgICwgbV9tb3VzZURvd25XYXNJblN1YmZyYW1lKGZhbHNlKQpAQCAt
NDQ3LDYgKzQ1Niw5IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpjbGVhcigpCiAjaWYgRU5BQkxFKENV
UlNPUl9WSVNJQklMSVRZKQogICAgIGNhbmNlbEF1dG9IaWRlQ3Vyc29yVGltZXIoKTsKICNlbmRp
ZgorI2lmIEVOQUJMRShMT05HX01PVVNFX1BSRVNTKQorICAgIGNsZWFyTG9uZ01vdXNlUHJlc3NT
dGF0ZSgpOworI2VuZGlmCiAgICAgbV9yZXNpemVMYXllciA9IDA7CiAgICAgbV9lbGVtZW50VW5k
ZXJNb3VzZSA9IG51bGxwdHI7CiAgICAgbV9sYXN0RWxlbWVudFVuZGVyTW91c2UgPSBudWxscHRy
OwpAQCAtNzYyLDYgKzc3NCwxMyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVz
c0V2ZW50KGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGV2ZQogICAgICAgICB9
CiAgICAgfQogCisjaWYgRU5BQkxFKExPTkdfTU9VU0VfUFJFU1MpCisgICAgaWYgKGV2ZW50LmV2
ZW50KCkuYnV0dG9uKCkgPT0gTGVmdEJ1dHRvbiAmJiBldmVudC5pc092ZXJMaW5rKCkpIHsKKyAg
ICAgICAgLy8gRklYTUUgMTM1NzAzOiBIYW5kbGUgbG9uZyBwcmVzcyBmb3IgbW9yZSB0aGFuIGp1
c3QgbGlua3MuCisgICAgICAgIGJlZ2luVHJhY2tpbmdQb3RlbnRpYWxMb25nTW91c2VQcmVzcygp
OworICAgIH0KKyNlbmRpZgorCiAgICAgLy8gV2UgZG9uJ3QgZG8gdGhpcyBhdCB0aGUgc3RhcnQg
b2YgbW91c2UgZG93biBoYW5kbGluZywKICAgICAvLyBiZWNhdXNlIHdlIGRvbid0IHdhbnQgdG8g
ZG8gaXQgdW50aWwgd2Uga25vdyB3ZSBkaWRuJ3QgaGl0IGEgd2lkZ2V0LgogICAgIGlmIChzaW5n
bGVDbGljaykKQEAgLTg0Niw2ICs4NjUsMTEgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmV2ZW50TWF5
U3RhcnREcmFnKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQpIGNvbnN0CiAKICAgICBp
ZiAoZXZlbnQuYnV0dG9uKCkgIT0gTGVmdEJ1dHRvbiB8fCBldmVudC5jbGlja0NvdW50KCkgIT0g
MSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworCisjaWYgRU5BQkxFKExPTkdfTU9VU0VfUFJFU1Mp
CisgICAgaWYgKG1fZGlkUmVjb2duaXplTG9uZ01vdXNlUHJlc3MpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyNlbmRpZgogICAgIAogICAgIEZyYW1lVmlldyogdmlldyA9IG1fZnJhbWUudmlldygp
OwogICAgIGlmICghdmlldykKQEAgLTEwMDIsNiArMTAyNiwxMSBAQCBib29sIEV2ZW50SGFuZGxl
cjo6aGFuZGxlTW91c2VSZWxlYXNlRXZlbnQoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVz
dWx0cyYgZQogICAgIG1fbW91c2VEb3duV2FzSW5TdWJmcmFtZSA9IGZhbHNlOwogICAKICAgICBi
b29sIGhhbmRsZWQgPSBmYWxzZTsKKyAgICAKKyNpZiBFTkFCTEUoTE9OR19NT1VTRV9QUkVTUykK
KyAgICBpZiAoZXZlbnQuZXZlbnQoKS5idXR0b24oKSA9PSBMZWZ0QnV0dG9uKQorICAgICAgICBj
bGVhckxvbmdNb3VzZVByZXNzU3RhdGUoKTsKKyNlbmRpZgogCiAgICAgLy8gQ2xlYXIgdGhlIHNl
bGVjdGlvbiBpZiB0aGUgbW91c2UgZGlkbid0IG1vdmUgYWZ0ZXIgdGhlIGxhc3QgbW91c2UKICAg
ICAvLyBwcmVzcyBhbmQgaXQncyBub3QgYSBjb250ZXh0IG1lbnUgY2xpY2suICBXZSBkbyB0aGlz
IHNvIHdoZW4gY2xpY2tpbmcKQEAgLTE1NDUsNiArMTU3NCw2MSBAQCB2b2lkIEV2ZW50SGFuZGxl
cjo6YXV0b0hpZGVDdXJzb3JUaW1lckZpcmVkKFRpbWVyPEV2ZW50SGFuZGxlcj4mIHRpbWVyKQog
ICAgICAgICB2aWV3LT5zZXRDdXJzb3IobV9jdXJyZW50TW91c2VDdXJzb3IpOwogfQogI2VuZGlm
CisgICAgCisjaWYgRU5BQkxFKExPTkdfTU9VU0VfUFJFU1MpCit2b2lkIEV2ZW50SGFuZGxlcjo6
YmVnaW5UcmFja2luZ1BvdGVudGlhbExvbmdNb3VzZVByZXNzKCkKK3sKKyAgICBjbGVhckxvbmdN
b3VzZVByZXNzU3RhdGUoKTsKKyAgICAKKyAgICBtX2xvbmdNb3VzZVByZXNzVGltZXIuc3RhcnRP
bmVTaG90KGxvbmdNb3VzZVByZXNzUmVjb2duaXRpb25EZWxheSk7CisgICAgCisgICAgLy8gRklY
TUUgMTM1NTgwOiBCdWJibGUgbG9uZyBtb3VzZSBwcmVzcyB1cCB0byB0aGUgY2xpZW50LgorfQor
ICAgIAordm9pZCBFdmVudEhhbmRsZXI6OnJlY29nbml6ZUxvbmdNb3VzZVByZXNzKFRpbWVyPEV2
ZW50SGFuZGxlcj4mIHRpbWVyKQoreworICAgIEFTU0VSVF9VTlVTRUQodGltZXIsICZ0aW1lciA9
PSAmbV9sb25nTW91c2VQcmVzc1RpbWVyKTsKKworICAgIG1fZGlkUmVjb2duaXplTG9uZ01vdXNl
UHJlc3MgPSB0cnVlOworCisgICAgLy8gQ2xlYXIgbW91c2Ugc3RhdGUgdG8gYXZvaWQgaW5pdGlh
dGluZyBhIGRyYWcuCisgICAgbV9tb3VzZVByZXNzZWQgPSBmYWxzZTsKKyAgICBpbnZhbGlkYXRl
Q2xpY2soKTsKKworICAgIC8vIEZJWE1FIDEzNTU4MDogQnViYmxlIGxvbmcgbW91c2UgcHJlc3Mg
dXAgdG8gdGhlIGNsaWVudC4KK30KKyAgICAKK3ZvaWQgRXZlbnRIYW5kbGVyOjpjYW5jZWxUcmFj
a2luZ1BvdGVudGlhbExvbmdNb3VzZVByZXNzKCkKK3sKKyAgICBpZiAoIW1fbG9uZ01vdXNlUHJl
c3NUaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBjbGVhckxvbmdNb3Vz
ZVByZXNzU3RhdGUoKTsKKyAgICAKKyAgICAvLyBGSVhNRSAxMzU1ODA6IEJ1YmJsZSBsb25nIG1v
dXNlIHByZXNzIHVwIHRvIHRoZSBjbGllbnQuCit9CisKK3ZvaWQgRXZlbnRIYW5kbGVyOjpjbGVh
ckxvbmdNb3VzZVByZXNzU3RhdGUoKQoreworICAgIG1fbG9uZ01vdXNlUHJlc3NUaW1lci5zdG9w
KCk7CisgICAgbV9kaWRSZWNvZ25pemVMb25nTW91c2VQcmVzcyA9IGZhbHNlOworfQorICAgIAor
Ym9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZUxvbmdNb3VzZVByZXNzTW91c2VNb3ZlZEV2ZW50KGNv
bnN0IFBsYXRmb3JtTW91c2VFdmVudCYgbW91c2VFdmVudCkKK3sKKyAgICBpZiAobW91c2VFdmVu
dC5idXR0b24oKSAhPSBMZWZ0QnV0dG9uIHx8IG1vdXNlRXZlbnQudHlwZSgpICE9IFBsYXRmb3Jt
RXZlbnQ6Ok1vdXNlTW92ZWQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChtX2Rp
ZFJlY29nbml6ZUxvbmdNb3VzZVByZXNzKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGlm
ICghbW91c2VNb3ZlbWVudEV4Y2VlZHNUaHJlc2hvbGQobW91c2VFdmVudC5wb3NpdGlvbigpLCBt
YXhpbXVtTG9uZ01vdXNlUHJlc3NEcmFnRGlzdGFuY2UpKQorICAgICAgICBjYW5jZWxUcmFja2lu
Z1BvdGVudGlhbExvbmdNb3VzZVByZXNzKCk7CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKKyNl
bmRpZiAvLyBFTkFCTEUoTE9OR19NT1VTRV9QUkVTUykKIAogc3RhdGljIExheW91dFBvaW50IGRv
Y3VtZW50UG9pbnRGb3JXaW5kb3dQb2ludChGcmFtZSYgZnJhbWUsIGNvbnN0IEludFBvaW50JiB3
aW5kb3dQb2ludCkKIHsKQEAgLTE3OTYsNiArMTg4MCwxMSBAQCBib29sIEV2ZW50SGFuZGxlcjo6
aGFuZGxlTW91c2VNb3ZlRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBtb3VzZUV2ZW50
LCBIaQogICAgICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgogCisjaWYgRU5BQkxFKExPTkdfTU9V
U0VfUFJFU1MpCisgICAgaWYgKGhhbmRsZUxvbmdNb3VzZVByZXNzTW91c2VNb3ZlZEV2ZW50KG1v
dXNlRXZlbnQpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgorCiAgICAgUmVmUHRyPEZy
YW1lVmlldz4gcHJvdGVjdG9yKG1fZnJhbWUudmlldygpKTsKICAgICAKICAgICBzZXRMYXN0S25v
d25Nb3VzZVBvc2l0aW9uKG1vdXNlRXZlbnQpOwpAQCAtMzIxNSwxMiArMzMwNCw2IEBAIGJvb2wg
RXZlbnRIYW5kbGVyOjpkcmFnSHlzdGVyZXNpc0V4Y2VlZGVkKGNvbnN0IEludFBvaW50JiBmbG9h
dERyYWdWaWV3cG9ydExvY2F0CiAKIGJvb2wgRXZlbnRIYW5kbGVyOjpkcmFnSHlzdGVyZXNpc0V4
Y2VlZGVkKGNvbnN0IEZsb2F0UG9pbnQmIGRyYWdWaWV3cG9ydExvY2F0aW9uKSBjb25zdAogewot
ICAgIEZyYW1lVmlldyogdmlldyA9IG1fZnJhbWUudmlldygpOwotICAgIGlmICghdmlldykKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIEludFBvaW50IGRyYWdMb2NhdGlvbiA9IHZpZXctPndp
bmRvd1RvQ29udGVudHMoZmxvb3JlZEludFBvaW50KGRyYWdWaWV3cG9ydExvY2F0aW9uKSk7Ci0g
ICAgSW50U2l6ZSBkZWx0YSA9IGRyYWdMb2NhdGlvbiAtIG1fbW91c2VEb3duUG9zOwotICAgIAog
ICAgIGludCB0aHJlc2hvbGQgPSBHZW5lcmFsRHJhZ0h5c3RlcmVzaXM7CiAgICAgc3dpdGNoIChk
cmFnU3RhdGUoKS50eXBlKSB7CiAgICAgY2FzZSBEcmFnU291cmNlQWN0aW9uU2VsZWN0aW9uOgpA
QCAtMzIzOSw3ICszMzIyLDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmRyYWdIeXN0ZXJlc2lzRXhj
ZWVkZWQoY29uc3QgRmxvYXRQb2ludCYgZHJhZ1ZpZXdwb3J0TG9jYXRpb24KICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogICAgIAotICAgIHJldHVybiBhYnMoZGVsdGEud2lk
dGgoKSkgPj0gdGhyZXNob2xkIHx8IGFicyhkZWx0YS5oZWlnaHQoKSkgPj0gdGhyZXNob2xkOwor
ICAgIHJldHVybiBtb3VzZU1vdmVtZW50RXhjZWVkc1RocmVzaG9sZChkcmFnVmlld3BvcnRMb2Nh
dGlvbiwgdGhyZXNob2xkKTsKIH0KICAgICAKIHZvaWQgRXZlbnRIYW5kbGVyOjpmcmVlRGF0YVRy
YW5zZmVyKCkKQEAgLTM0MTMsNiArMzQ5NiwxMCBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxl
RHJhZyhjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBldmVudCwgQ2hlY2tEcgog
ICAgICAgICAvLyBPbiBPUyBYIHRoaXMgY2F1c2VzIHByb2JsZW1zIHdpdGggdGhlIG93bmVyc2hp
cCBvZiB0aGUgcGFzdGVib2FyZCBhbmQgdGhlIHByb21pc2VkIHR5cGVzLgogICAgICAgICBpZiAo
bV9kaWRTdGFydERyYWcpIHsKICAgICAgICAgICAgIG1fbW91c2VEb3duTWF5U3RhcnREcmFnID0g
ZmFsc2U7CisKKyNpZiBFTkFCTEUoTE9OR19NT1VTRV9QUkVTUykKKyAgICAgICAgICAgIGNhbmNl
bFRyYWNraW5nUG90ZW50aWFsTG9uZ01vdXNlUHJlc3MoKTsKKyNlbmRpZgogICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGRyYWdTdGF0ZSgpLnNvdXJjZSAm
JiBkcmFnU3RhdGUoKS5zaG91bGREaXNwYXRjaEV2ZW50cykgewpAQCAtMzQzMyw3ICszNTIwLDIw
IEBAIGNsZWFudXBEcmFnOgogICAgIHJldHVybiB0cnVlOwogfQogI2VuZGlmIC8vIEVOQUJMRShE
UkFHX1NVUFBPUlQpCi0gIAorICAgIAorI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpIHx8IEVOQUJM
RShMT05HX01PVVNFX1BSRVNTKQorYm9vbCBFdmVudEhhbmRsZXI6Om1vdXNlTW92ZW1lbnRFeGNl
ZWRzVGhyZXNob2xkKGNvbnN0IEZsb2F0UG9pbnQmIHZpZXdwb3J0TG9jYXRpb24sIGludCBwb2lu
dHNUaHJlc2hvbGQpIGNvbnN0Cit7CisgICAgRnJhbWVWaWV3KiB2aWV3ID0gbV9mcmFtZS52aWV3
KCk7CisgICAgaWYgKCF2aWV3KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgSW50UG9pbnQg
bG9jYXRpb24gPSB2aWV3LT53aW5kb3dUb0NvbnRlbnRzKGZsb29yZWRJbnRQb2ludCh2aWV3cG9y
dExvY2F0aW9uKSk7CisgICAgSW50U2l6ZSBkZWx0YSA9IGxvY2F0aW9uIC0gbV9tb3VzZURvd25Q
b3M7CisgICAgCisgICAgcmV0dXJuIGFicyhkZWx0YS53aWR0aCgpKSA+PSBwb2ludHNUaHJlc2hv
bGQgfHwgYWJzKGRlbHRhLmhlaWdodCgpKSA+PSBwb2ludHNUaHJlc2hvbGQ7Cit9CisjZW5kaWYg
Ly8gRU5BQkxFKERSQUdfU1VQUE9SVCkgfHwgRU5BQkxFKExPTkdfTU9VU0VfUFJFU1MpCisKIGJv
b2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVUZXh0SW5wdXRFdmVudChjb25zdCBTdHJpbmcmIHRleHQs
IEV2ZW50KiB1bmRlcmx5aW5nRXZlbnQsIFRleHRFdmVudElucHV0VHlwZSBpbnB1dFR5cGUpCiB7
CiAgICAgLy8gUGxhdGZvcm1zIHNob3VsZCBkaWZmZXJlbnRpYXRlIHJlYWwgY29tbWFuZHMgbGlr
ZSBzZWxlY3RBbGwgZnJvbSB0ZXh0IGlucHV0IGluIGRpc2d1aXNlIChsaWtlIGluc2VydE5ld2xp
bmUpLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKaW5kZXggZjY0MGE0NDZjMjZiZmVmZDFl
ZTNkNTljNGQ2MTBkYjU5ZDVjMmQyOS4uZmY3MWE5NmRkNDlhZjIyOGYxOWRlNDRhZTQ1YTY5YWM2
MTQwNDBmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCkBAIC0zNzksNiArMzc5LDEw
IEBAIHByaXZhdGU6CiAgICAgYm9vbCBkcmFnSHlzdGVyZXNpc0V4Y2VlZGVkKGNvbnN0IEZsb2F0
UG9pbnQmKSBjb25zdDsKICAgICBib29sIGRyYWdIeXN0ZXJlc2lzRXhjZWVkZWQoY29uc3QgSW50
UG9pbnQmKSBjb25zdDsKICNlbmRpZiAvLyBFTkFCTEUoRFJBR19TVVBQT1JUKQorICAgIAorI2lm
IEVOQUJMRShEUkFHX1NVUFBPUlQpIHx8IEVOQUJMRShMT05HX01PVVNFX1BSRVNTKQorICAgIGJv
b2wgbW91c2VNb3ZlbWVudEV4Y2VlZHNUaHJlc2hvbGQoY29uc3QgRmxvYXRQb2ludCYsIGludCBw
b2ludHNUaHJlc2hvbGQpIGNvbnN0OworI2VuZGlmCiAKICAgICBib29sIHBhc3NNb3VzZVByZXNz
RXZlbnRUb1N1YmZyYW1lKE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmLCBGcmFtZSogc3Vi
ZnJhbWUpOwogICAgIGJvb2wgcGFzc01vdXNlTW92ZUV2ZW50VG9TdWJmcmFtZShNb3VzZUV2ZW50
V2l0aEhpdFRlc3RSZXN1bHRzJiwgRnJhbWUqIHN1YmZyYW1lLCBIaXRUZXN0UmVzdWx0KiBob3Zl
cmVkTm9kZSA9IDApOwpAQCAtNDM4LDYgKzQ0MiwxNSBAQCBwcml2YXRlOgogICAgIHZvaWQgYXV0
b0hpZGVDdXJzb3JUaW1lckZpcmVkKFRpbWVyPEV2ZW50SGFuZGxlcj4mKTsKICNlbmRpZgogCisj
aWYgRU5BQkxFKExPTkdfTU9VU0VfUFJFU1MpCisgICAgdm9pZCBiZWdpblRyYWNraW5nUG90ZW50
aWFsTG9uZ01vdXNlUHJlc3MoKTsKKyAgICB2b2lkIHJlY29nbml6ZUxvbmdNb3VzZVByZXNzKFRp
bWVyPEV2ZW50SGFuZGxlcj4mKTsKKyAgICB2b2lkIGNhbmNlbFRyYWNraW5nUG90ZW50aWFsTG9u
Z01vdXNlUHJlc3MoKTsKKyAgICBib29sIGxvbmdNb3VzZVByZXNzSHlzdGVyZXNpc0V4Y2VlZGVk
KCk7CisgICAgdm9pZCBjbGVhckxvbmdNb3VzZVByZXNzU3RhdGUoKTsKKyAgICBib29sIGhhbmRs
ZUxvbmdNb3VzZVByZXNzTW91c2VNb3ZlZEV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYp
OworI2VuZGlmCisgICAgCiAgICAgdm9pZCBjbGVhckxhdGNoZWRTdGF0ZSgpOwogCiAgICAgRnJh
bWUmIG1fZnJhbWU7CkBAIC00NjUsNiArNDc4LDEwIEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKENV
UlNPUl9TVVBQT1JUKQogICAgIFRpbWVyPEV2ZW50SGFuZGxlcj4gbV9jdXJzb3JVcGRhdGVUaW1l
cjsKICNlbmRpZgorI2lmIEVOQUJMRShMT05HX01PVVNFX1BSRVNTKQorICAgIFRpbWVyPEV2ZW50
SGFuZGxlcj4gbV9sb25nTW91c2VQcmVzc1RpbWVyOworICAgIGJvb2wgbV9kaWRSZWNvZ25pemVM
b25nTW91c2VQcmVzczsKKyNlbmRpZgogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEF1dG9zY3JvbGxD
b250cm9sbGVyPiBtX2F1dG9zY3JvbGxDb250cm9sbGVyOwogICAgIGJvb2wgbV9tb3VzZURvd25N
YXlTdGFydEF1dG9zY3JvbGw7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>