<?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>158351</bug_id>
          
          <creation_ts>2016-06-03 13:03:58 -0700</creation_ts>
          <short_desc>Use the media element&apos;s video box when getting the inline video rect in WebVideoFullscreenManager</short_desc>
          <delta_ts>2016-06-14 14:26:52 -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>Media</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ada Chan">adachan</reporter>
          <assigned_to name="Ada Chan">adachan</assigned_to>
          <cc>darin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>jeremyj-wk</cc>
    
    <cc>jer.noble</cc>
    
    <cc>jonlee</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1199009</commentid>
    <comment_count>0</comment_count>
    <who name="Ada Chan">adachan</who>
    <bug_when>2016-06-03 13:03:58 -0700</bug_when>
    <thetext>Use the video box for the video element&apos;s client rect in WebVideoFullscreenManager on Mac.

&lt;rdar://problem/26567938&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1199012</commentid>
    <comment_count>1</comment_count>
      <attachid>280457</attachid>
    <who name="Ada Chan">adachan</who>
    <bug_when>2016-06-03 13:24:25 -0700</bug_when>
    <thetext>Created attachment 280457
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1199067</commentid>
    <comment_count>2</comment_count>
      <attachid>280457</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2016-06-03 15:16:04 -0700</bug_when>
    <thetext>Comment on attachment 280457
Patch

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

&gt; Source/WebKit2/WebProcess/cocoa/WebVideoFullscreenManager.mm:62
&gt; +#if PLATFORM(MAC) &amp;&amp; ENABLE(VIDEO_PRESENTATION_MODE)

Why is this different in this case? Seems like something that should be true for all videos.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1199084</commentid>
    <comment_count>3</comment_count>
    <who name="Ada Chan">adachan</who>
    <bug_when>2016-06-03 15:33:35 -0700</bug_when>
    <thetext>The way the video fullscreen layer is handled in WebVideoFullscreenInterface between iOS and Mac are different.  I&apos;ll see if I can move the platform differences out of WK2 and into WebCore instead.

Thanks for taking a look!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1199269</commentid>
    <comment_count>4</comment_count>
      <attachid>280457</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-06-04 13:40:15 -0700</bug_when>
    <thetext>Comment on attachment 280457
Patch

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

&gt; Source/WebCore/html/HTMLMediaElement.cpp:7072
&gt; +    if (!is&lt;RenderVideo&gt;(renderer()))
&gt; +        return IntRect();
&gt; +
&gt; +    return downcast&lt;RenderVideo&gt;(*renderer()).videoBox();

Please put renderer into a local variable and don’t call it twice.

More importantly, if this was in HTMLVideoElement then we would not need to typecast renderer(), although we would still need to null check it.

&gt; Source/WebCore/html/HTMLMediaElement.h:466
&gt; +    WEBCORE_EXPORT IntRect videoBox() const;

This should be in HTMLVideoElement instead of HTMLMediaElement.

&gt; Source/WebKit2/WebProcess/cocoa/WebVideoFullscreenManager.mm:63
&gt; +    if (element-&gt;isMediaElement()) {

This should be:

    if (is&lt;HTMLVideoElement&gt;(*element)) {</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201039</commentid>
    <comment_count>5</comment_count>
      <attachid>280963</attachid>
    <who name="Ada Chan">adachan</who>
    <bug_when>2016-06-09 16:18:41 -0700</bug_when>
    <thetext>Created attachment 280963
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201041</commentid>
    <comment_count>6</comment_count>
    <who name="Ada Chan">adachan</who>
    <bug_when>2016-06-09 16:20:55 -0700</bug_when>
    <thetext>Posted an updated patch. It turns out that I can use the same code to get the video rect on both platforms which addresses Tim&apos;s feedback. I also addressed Darin&apos;s feedback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201092</commentid>
    <comment_count>7</comment_count>
      <attachid>280963</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-06-09 19:32:40 -0700</bug_when>
    <thetext>Comment on attachment 280963
Patch

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

I’m saying review+ but I would suggest a few significant changes to make this better before landing.

&gt; Source/WebCore/html/HTMLVideoElement.h:95
&gt; +    WEBCORE_EXPORT IntRect videoBox() const;

I don’t think this should be added as a member function of HTMLVideoElement. A caller that needs this rectangle should fetch the renderer and call videoBox on the renderer.

It’s not a good pattern to hide the fact that a function uses the render tree by adding a function on a DOM object that then turns around and calls a function on the renderer. Functions that use the render tree depend on layout being up to date, and we typically don’t want that hidden behind an abstraction. In fact, normally the caller needs to call some kind of updateLayout function before using a renderer.

Functions like Element::clientRect exist because they are part of the DOM standard but we should not add new ones like those.

See Element::offsetLeft, for an example of a function that correctly calls updateLayoutIgnorePendingStylesheets before getting at the DOM. I think we need something like that here (in the code in WebVideoFullscreenManager) too. I have no idea why Element::clientRect can function correctly without including a call to an updateLayout function. I am guessing it’s a subtle bug in that function.

&gt; Source/WebKit2/WebProcess/cocoa/WebVideoFullscreenManager.mm:70
&gt; -static IntRect clientRectForElement(HTMLElement* element)
&gt; +static IntRect inlineVideoRectForElement(HTMLElement* element)
&gt;  {
&gt;      if (!element)
&gt;          return IntRect();
&gt;  
&gt; -    return element-&gt;clientRect();
&gt; +    IntRect clientRect = element-&gt;clientRect();
&gt; +    if (is&lt;HTMLVideoElement&gt;(*element)) {
&gt; +        IntRect videoRect = downcast&lt;HTMLVideoElement&gt;(element)-&gt;videoBox();
&gt; +        if (!videoRect.isEmpty()) {
&gt; +            videoRect.moveBy(clientRect.location());
&gt; +            return videoRect;
&gt; +        }
&gt; +    }
&gt; +
&gt; +    return clientRect;
&gt;  }

This function should take an HTMLVideoElement&amp;, not an HTMLElement*. If I am wrong and it needs to take an HTMLElement* for some reason, why is it ever helpful for this to return the clientRect for a non-video element?

As mentioned above, something needs to guarantee layout is up to date. Often that means calling updateLayoutIgnorePendingStylesheets before getting the renderer.

I think it would be better to write something more like this:

    element.document(). updateLayoutIgnorePendingStylesheets();
    auto* renderer = element.renderer();
    if (!renderer)
         return { };
    return renderer-&gt;view().contentsToRootView(renderer-&gt;videoBox());

rather than using clientRect and moveBy.

I don’t think the function needs “ForElement” in its name.

&gt; Source/WebKit2/WebProcess/cocoa/WebVideoFullscreenManager.mm:287
&gt; +    IntRect videoRect = inlineVideoRectForElement(&amp;videoElement);

I think auto is better than IntRect here.

&gt; Source/WebKit2/WebProcess/cocoa/WebVideoFullscreenManager.mm:288
&gt; +    FloatRect videoLayerFrame = FloatRect(0, 0, videoRect.width(), videoRect.height());

Since this trick of using only the size and ignoring the position of the video box is done twice, I suggest making a helper function for this purpose. Just have to figure out what the name of it should be. What is the name for this &quot;at 0,0&quot; version of the video box?

&gt; Source/WebKit2/WebProcess/cocoa/WebVideoFullscreenManager.mm:486
&gt; +        FloatRect videoRect = inlineVideoRectForElement(model-&gt;videoElement());

Seems peculiar to put this IntRect into a FloatRect, just to get values out of it. I think you fixed that above but not here. I suggest we use &quot;auto&quot; here instead of an explicit type.

&gt; Source/WebKit2/WebProcess/cocoa/WebVideoFullscreenManager.mm:487
&gt; +        bounds = FloatRect(0, 0, videoRect.width(), videoRect.height());

See above about using a helper function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201093</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-06-09 19:33:08 -0700</bug_when>
    <thetext>Sorry I didn’t think of those things the first time I reviewed!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201321</commentid>
    <comment_count>9</comment_count>
      <attachid>280963</attachid>
    <who name="Ada Chan">adachan</who>
    <bug_when>2016-06-10 12:07:43 -0700</bug_when>
    <thetext>Comment on attachment 280963
Patch

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

Thanks for all your feedback!  Since I&apos;ve changed a lot of the original patch, I&apos;ll post an updated one soon.

&gt;&gt; Source/WebCore/html/HTMLVideoElement.h:95
&gt;&gt; +    WEBCORE_EXPORT IntRect videoBox() const;
&gt; 
&gt; I don’t think this should be added as a member function of HTMLVideoElement. A caller that needs this rectangle should fetch the renderer and call videoBox on the renderer.
&gt; 
&gt; It’s not a good pattern to hide the fact that a function uses the render tree by adding a function on a DOM object that then turns around and calls a function on the renderer. Functions that use the render tree depend on layout being up to date, and we typically don’t want that hidden behind an abstraction. In fact, normally the caller needs to call some kind of updateLayout function before using a renderer.
&gt; 
&gt; Functions like Element::clientRect exist because they are part of the DOM standard but we should not add new ones like those.
&gt; 
&gt; See Element::offsetLeft, for an example of a function that correctly calls updateLayoutIgnorePendingStylesheets before getting at the DOM. I think we need something like that here (in the code in WebVideoFullscreenManager) too. I have no idea why Element::clientRect can function correctly without including a call to an updateLayout function. I am guessing it’s a subtle bug in that function.

This is good to know.  Thanks for explaining this to me!

&gt;&gt; Source/WebKit2/WebProcess/cocoa/WebVideoFullscreenManager.mm:70
&gt;&gt;  }
&gt; 
&gt; This function should take an HTMLVideoElement&amp;, not an HTMLElement*. If I am wrong and it needs to take an HTMLElement* for some reason, why is it ever helpful for this to return the clientRect for a non-video element?
&gt; 
&gt; As mentioned above, something needs to guarantee layout is up to date. Often that means calling updateLayoutIgnorePendingStylesheets before getting the renderer.
&gt; 
&gt; I think it would be better to write something more like this:
&gt; 
&gt;     element.document(). updateLayoutIgnorePendingStylesheets();
&gt;     auto* renderer = element.renderer();
&gt;     if (!renderer)
&gt;          return { };
&gt;     return renderer-&gt;view().contentsToRootView(renderer-&gt;videoBox());
&gt; 
&gt; rather than using clientRect and moveBy.
&gt; 
&gt; I don’t think the function needs “ForElement” in its name.

It looks like RenderVideo::videoBox() returns a rect that&apos;s relative to the renderer&apos;s bounding box.  I ended up changing the implementation to this:

static IntRect inlineVideoFrame(HTMLVideoElement&amp; element)
{
    element.document().updateLayoutIgnorePendingStylesheets();
    auto* renderer = element.renderer();
    if (!renderer)
        return element.clientRect();
    auto rect = renderer-&gt;videoBox();
    rect.moveBy(renderer-&gt;absoluteBoundingBoxRect().location());
    return element.document().view()-&gt;contentsToRootView(rect);
}

I tested a video with thick border and padding (and also testing the case where the video is in an iframe) to make sure it works.

&gt;&gt; Source/WebKit2/WebProcess/cocoa/WebVideoFullscreenManager.mm:287
&gt;&gt; +    IntRect videoRect = inlineVideoRectForElement(&amp;videoElement);
&gt; 
&gt; I think auto is better than IntRect here.

Fixed to use auto.

&gt;&gt; Source/WebKit2/WebProcess/cocoa/WebVideoFullscreenManager.mm:288
&gt;&gt; +    FloatRect videoLayerFrame = FloatRect(0, 0, videoRect.width(), videoRect.height());
&gt; 
&gt; Since this trick of using only the size and ignoring the position of the video box is done twice, I suggest making a helper function for this purpose. Just have to figure out what the name of it should be. What is the name for this &quot;at 0,0&quot; version of the video box?

This trick is done twice in this file.  However, in the first instance (WebVideoFullscreenManager::enterVideoFullscreenForVideoElement()), we do use the videoRect variable later in the code.  If I make a helper function to get the videoLayerFrame and call it here, I&apos;d end up calling inlineVideoRectForElement() twice in this method which I&apos;d like to avoid.  So I think I&apos;ll keep this as is.

&gt;&gt; Source/WebKit2/WebProcess/cocoa/WebVideoFullscreenManager.mm:486
&gt;&gt; +        FloatRect videoRect = inlineVideoRectForElement(model-&gt;videoElement());
&gt; 
&gt; Seems peculiar to put this IntRect into a FloatRect, just to get values out of it. I think you fixed that above but not here. I suggest we use &quot;auto&quot; here instead of an explicit type.

Changed to use auto.

&gt;&gt; Source/WebKit2/WebProcess/cocoa/WebVideoFullscreenManager.mm:487
&gt;&gt; +        bounds = FloatRect(0, 0, videoRect.width(), videoRect.height());
&gt; 
&gt; See above about using a helper function.

Since I won&apos;t be using this helper method in WebVideoFullscreenManager::enterVideoFullscreenForVideoElement(), such helper method will only be used once here.  So I&apos;ll hold off in making a helper method until we need it somewhere else in this file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201324</commentid>
    <comment_count>10</comment_count>
      <attachid>281029</attachid>
    <who name="Ada Chan">adachan</who>
    <bug_when>2016-06-10 12:14:47 -0700</bug_when>
    <thetext>Created attachment 281029
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201326</commentid>
    <comment_count>11</comment_count>
      <attachid>281030</attachid>
    <who name="Ada Chan">adachan</who>
    <bug_when>2016-06-10 12:17:26 -0700</bug_when>
    <thetext>Created attachment 281030
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201403</commentid>
    <comment_count>12</comment_count>
      <attachid>281030</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-06-10 15:16:15 -0700</bug_when>
    <thetext>Comment on attachment 281030
Patch

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

&gt; Source/WebKit2/WebProcess/cocoa/WebVideoFullscreenManager.mm:61
&gt; +        return element.clientRect();

This should just return an empty rectangle (could use IntRect(), IntRect { }, or { }, depending on which syntax you prefer). That’s what the clientRect function is going to return if the renderer is null.

&gt; Source/WebKit2/WebProcess/cocoa/WebVideoFullscreenManager.mm:64
&gt; +    auto rect = renderer-&gt;videoBox();
&gt; +    rect.moveBy(renderer-&gt;absoluteBoundingBoxRect().location());
&gt; +    return element.document().view()-&gt;contentsToRootView(rect);

I’m slightly surprised that this rather complex coordinate conversion is correct, but I’m not enough of an expert on rendering to know whether it is or not, so I will take your word for it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201488</commentid>
    <comment_count>13</comment_count>
      <attachid>281073</attachid>
    <who name="Ada Chan">adachan</who>
    <bug_when>2016-06-10 20:38:55 -0700</bug_when>
    <thetext>Created attachment 281073
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201489</commentid>
    <comment_count>14</comment_count>
    <who name="Ada Chan">adachan</who>
    <bug_when>2016-06-10 20:42:13 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; Comment on attachment 281030 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=281030&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/cocoa/WebVideoFullscreenManager.mm:61
&gt; &gt; +        return element.clientRect();
&gt; 
&gt; This should just return an empty rectangle (could use IntRect(), IntRect {
&gt; }, or { }, depending on which syntax you prefer). That’s what the clientRect
&gt; function is going to return if the renderer is null.

Fixed to return { }

&gt; 
&gt; &gt; Source/WebKit2/WebProcess/cocoa/WebVideoFullscreenManager.mm:64
&gt; &gt; +    auto rect = renderer-&gt;videoBox();
&gt; &gt; +    rect.moveBy(renderer-&gt;absoluteBoundingBoxRect().location());
&gt; &gt; +    return element.document().view()-&gt;contentsToRootView(rect);
&gt; 
&gt; I’m slightly surprised that this rather complex coordinate conversion is
&gt; correct, but I’m not enough of an expert on rendering to know whether it is
&gt; or not, so I will take your word for it.

I&apos;ve asked Simon Fraser to take a look just to make sure and he thinks that&apos;s right.

Thanks for the review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201494</commentid>
    <comment_count>15</comment_count>
    <who name="Ada Chan">adachan</who>
    <bug_when>2016-06-10 21:36:45 -0700</bug_when>
    <thetext>Committed:
http://trac.webkit.org/changeset/201963</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201584</commentid>
    <comment_count>16</comment_count>
      <attachid>281073</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-06-11 10:40:01 -0700</bug_when>
    <thetext>Comment on attachment 281073
Patch

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

&gt; Source/WebKit2/WebProcess/cocoa/WebVideoFullscreenManager.mm:64
&gt; +    return element.document().view()-&gt;contentsToRootView(rect);

Darn it, I forgot to comment on this. It’s better not to go through the DOM here, staying in the render tree is more direct, clearer, and the fact that the return value is a reference makes it clearer there is no issue with null:

    return renderer-&gt;view().contentsToRootView(rect);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201687</commentid>
    <comment_count>17</comment_count>
    <who name="Ada Chan">adachan</who>
    <bug_when>2016-06-11 21:45:52 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; Comment on attachment 281073 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=281073&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/cocoa/WebVideoFullscreenManager.mm:64
&gt; &gt; +    return element.document().view()-&gt;contentsToRootView(rect);
&gt; 
&gt; Darn it, I forgot to comment on this. It’s better not to go through the DOM
&gt; here, staying in the render tree is more direct, clearer, and the fact that
&gt; the return value is a reference makes it clearer there is no issue with null:
&gt; 
&gt;     return renderer-&gt;view().contentsToRootView(rect);

I did notice you suggested doing this in your first set of feedback, and I did try it and get a compile error (since renderer-&gt;view() returns a RenderView which doesn&apos;t have a contentsToRootView() method). But now looking at RenderView&apos;s header more carefully, maybe what I can do is:

renderer-&gt;view().frameView().contentsToRootView(rect);

Rs=you to do this?

Thanks for explaining why going through the render tree is a better option.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201689</commentid>
    <comment_count>18</comment_count>
    <who name="Ada Chan">adachan</who>
    <bug_when>2016-06-11 22:20:32 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; (In reply to comment #16)
&gt; &gt; Comment on attachment 281073 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=281073&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit2/WebProcess/cocoa/WebVideoFullscreenManager.mm:64
&gt; &gt; &gt; +    return element.document().view()-&gt;contentsToRootView(rect);
&gt; &gt; 
&gt; &gt; Darn it, I forgot to comment on this. It’s better not to go through the DOM
&gt; &gt; here, staying in the render tree is more direct, clearer, and the fact that
&gt; &gt; the return value is a reference makes it clearer there is no issue with null:
&gt; &gt; 
&gt; &gt;     return renderer-&gt;view().contentsToRootView(rect);
&gt; 
&gt; I did notice you suggested doing this in your first set of feedback, and I
&gt; did try it and get a compile error (since renderer-&gt;view() returns a
&gt; RenderView which doesn&apos;t have a contentsToRootView() method). But now
&gt; looking at RenderView&apos;s header more carefully, maybe what I can do is:
&gt; 
&gt; renderer-&gt;view().frameView().contentsToRootView(rect);
&gt; 
&gt; Rs=you to do this?

Nevermind, I just saw https://bugs.webkit.org/show_bug.cgi?id=158667.

&gt; 
&gt; Thanks for explaining why going through the render tree is a better option.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1202316</commentid>
    <comment_count>19</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-06-14 14:26:52 -0700</bug_when>
    <thetext>Yes, no problem. I will fix this and do some other things to the code in that class and related classes; no rush to do it, I will finish it when I have the time.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280457</attachid>
            <date>2016-06-03 13:24:25 -0700</date>
            <delta_ts>2016-06-03 15:34:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158351-20160603132546.patch</filename>
            <type>text/plain</type>
            <size>7567</size>
            <attacher name="Ada Chan">adachan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAxNjI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGFlZmM2NzljMzE5NjRl
ZThlNWI2YWFkMDZkMTBhYmM0N2Y4ZDJhNi4uZmE2ZWEzNzNhZjVmNjdlOWZmZjYwYzI5MjI2YjQ4
Y2ZmNzkxODgzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE2LTA2LTAzICBBZGEg
Q2hhbiAgPGFkYWNoYW5AYXBwbGUuY29tPgorCisgICAgICAgIFVzZSB0aGUgbWVkaWEgZWxlbWVu
dCdzIHZpZGVvIGJveCB3aGVuIGdldHRpbmcgdGhlIGlubGluZSB2aWRlbyByZWN0IGluIFdlYlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXIgb24gTWFjCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTgzNTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp2aWRlb0JveCk6CisgICAgICAgIFJldHVybiB0
aGUgUmVuZGVyVmlkZW8ncyB2aWRlbyBib3guCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVt
ZW50Lmg6CisKIDIwMTYtMDYtMDIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAog
ICAgICAgICBbV2ViSURMXSAndW5kZWZpbmVkJyBzaG91bGQgYmUgYW4gYWNjZXB0YWJsZSB2YWx1
ZSBmb3IgbnVsbGFibGUgcGFyYW1ldGVycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDZjMDk0Y2ExZWFjZjM4Mzgx
YzNhMjIwZjk1ZDFjNWJhMmIwOGJiYTIuLmNiZGU5MjVkZmFkYmZkYzNkY2RlZDI4YTY5YTVmYjJj
MWI4MmU0MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxNi0wNi0wMyAgQWRhIENo
YW4gIDxhZGFjaGFuQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgdGhlIG1lZGlhIGVsZW1lbnQn
cyB2aWRlbyBib3ggd2hlbiBnZXR0aW5nIHRoZSBpbmxpbmUgdmlkZW8gcmVjdCBpbiBXZWJWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyIG9uIE1hYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTU4MzUxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yNjU2Nzkz
OD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdl
YlByb2Nlc3MvY29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbToKKyAgICAgICAgKFdl
YktpdDo6aW5saW5lVmlkZW9SZWN0Rm9yRWxlbWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmVudGVyVmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50
KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZXhpdFZpZGVv
RnVsbHNjcmVlbkZvclZpZGVvRWxlbWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVs
bHNjcmVlbk1hbmFnZXI6OmZ1bGxzY3JlZW5NYXlSZXR1cm5Ub0lubGluZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnNldFZpZGVvTGF5ZXJGcmFtZUZlbmNl
ZCk6CisgICAgICAgIChXZWJLaXQ6OmNsaWVudFJlY3RGb3JFbGVtZW50KTogRGVsZXRlZC4KKwog
MjAxNi0wNi0wMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIENy
YXNoIHVuZGVyIFdlYlByb2Nlc3M6OnJlZ2lzdGVyV2l0aFN0YXRlRHVtcGVyKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IGQ1ZDZkNjI5OTNmNDBhNTcxY2Q2
YzEwNjY0NmNkYmQ4OGMyOWY5ZTkuLmRlNDkzNzM1MDg2Yzk4MGU0NzdlNWI2ZGVmMjFhZTUxODVm
ZjU4NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtNzA2
NCw2ICs3MDY0LDE0IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlUGxheWJhY2tDb250
cm9sc01hbmFnZXIoKQogICAgICAgICBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS5jbGVhclBsYXli
YWNrQ29udHJvbHNNYW5hZ2VyKCp0aGlzKTsKIH0KIAorSW50UmVjdCBIVE1MTWVkaWFFbGVtZW50
Ojp2aWRlb0JveCgpIGNvbnN0Cit7CisgICAgaWYgKCFpczxSZW5kZXJWaWRlbz4ocmVuZGVyZXIo
KSkpCisgICAgICAgIHJldHVybiBJbnRSZWN0KCk7CisKKyAgICByZXR1cm4gZG93bmNhc3Q8UmVu
ZGVyVmlkZW8+KCpyZW5kZXJlcigpKS52aWRlb0JveCgpOworfQorCiAjaWYgIVVTRShBUFBMRV9J
TlRFUk5BTF9TREspCiBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OnNob3VsZE92ZXJyaWRlQmFja2dy
b3VuZExvYWRpbmdSZXN0cmljdGlvbigpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5oCmluZGV4IDkxYWZhNDQ4OGVmYWY5ZWQ1NjQwYWVkZjgxYWQzMDMyYjM3NDg4
OTIuLjhiODQxMWM4MmYwN2E0M2Y0YzYyZDQyNjYwZDBmNzQwNjk1NmVlZDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBAIC00NjMsNiArNDYzLDggQEAgcHVibGljOgog
CiAgICAgUmVuZGVyTWVkaWEqIHJlbmRlcmVyKCkgY29uc3Q7CiAKKyAgICBXRUJDT1JFX0VYUE9S
VCBJbnRSZWN0IHZpZGVvQm94KCkgY29uc3Q7CisKIHByb3RlY3RlZDoKICAgICBIVE1MTWVkaWFF
bGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYsIGJvb2wgY3JlYXRlZEJ5UGFy
c2VyKTsKICAgICB2aXJ0dWFsIH5IVE1MTWVkaWFFbGVtZW50KCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0g
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXIubW0KaW5kZXggZWVlY2M2NDJjZjgyMWQyMDY2M2U1NzJhNTBmZDNlOTNjNDk0NGJkYi4uMTBh
YmVhMjc5YjkxM2Y4YTgwYWZkNTI2MmEyNjYzNWRiYjEwNjljOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFu
YWdlci5tbQpAQCAtNTIsMTIgKzUyLDI0IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAotc3RhdGljIEludFJlY3QgY2xpZW50UmVjdEZvckVsZW1lbnQo
SFRNTEVsZW1lbnQqIGVsZW1lbnQpCitzdGF0aWMgSW50UmVjdCBpbmxpbmVWaWRlb1JlY3RGb3JF
bGVtZW50KEhUTUxFbGVtZW50KiBlbGVtZW50KQogewogICAgIGlmICghZWxlbWVudCkKICAgICAg
ICAgcmV0dXJuIEludFJlY3QoKTsKIAotICAgIHJldHVybiBlbGVtZW50LT5jbGllbnRSZWN0KCk7
CisgICAgSW50UmVjdCBjbGllbnRSZWN0ID0gZWxlbWVudC0+Y2xpZW50UmVjdCgpOworCisjaWYg
UExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpCisgICAgaWYg
KGVsZW1lbnQtPmlzTWVkaWFFbGVtZW50KCkpIHsKKyAgICAgICAgSW50UmVjdCB2aWRlb1JlY3Qg
PSBkb3duY2FzdDxIVE1MTWVkaWFFbGVtZW50PihlbGVtZW50KS0+dmlkZW9Cb3goKTsKKyAgICAg
ICAgaWYgKCF2aWRlb1JlY3QuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICB2aWRlb1JlY3QubW92
ZUJ5KGNsaWVudFJlY3QubG9jYXRpb24oKSk7CisgICAgICAgICAgICByZXR1cm4gdmlkZW9SZWN0
OworICAgICAgICB9CisgICAgfQorI2VuZGlmCisKKyAgICByZXR1cm4gY2xpZW50UmVjdDsKIH0K
IAogI3ByYWdtYSBtYXJrIC0gV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dApAQCAt
Mjc1LDcgKzI4Nyw3IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZW50ZXJWaWRl
b0Z1bGxzY3JlZW5Gb3JWaWRlb0VsZW1lbnQoSFRNTFZpZGVvRWxlCiAgICAgaWYgKCFpbnRlcmZh
Y2UtPmxheWVySG9zdGluZ0NvbnRleHQoKSkKICAgICAgICAgaW50ZXJmYWNlLT5zZXRMYXllckhv
c3RpbmdDb250ZXh0KExheWVySG9zdGluZ0NvbnRleHQ6OmNyZWF0ZUZvckV4dGVybmFsSG9zdGlu
Z1Byb2Nlc3MoKSk7CiAKLSAgICBGbG9hdFJlY3QgY2xpZW50UmVjdCA9IGNsaWVudFJlY3RGb3JF
bGVtZW50KCZ2aWRlb0VsZW1lbnQpOworICAgIEZsb2F0UmVjdCBjbGllbnRSZWN0ID0gaW5saW5l
VmlkZW9SZWN0Rm9yRWxlbWVudCgmdmlkZW9FbGVtZW50KTsKICAgICBGbG9hdFJlY3QgdmlkZW9M
YXllckZyYW1lID0gRmxvYXRSZWN0KDAsIDAsIGNsaWVudFJlY3Qud2lkdGgoKSwgY2xpZW50UmVj
dC5oZWlnaHQoKSk7CiAKICAgICBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVl
bk1vZGUgb2xkTW9kZSA9IGludGVyZmFjZS0+ZnVsbHNjcmVlbk1vZGUoKTsKQEAgLTI5MSw3ICsz
MDMsNyBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmVudGVyVmlkZW9GdWxsc2Ny
ZWVuRm9yVmlkZW9FbGVtZW50KEhUTUxWaWRlb0VsZQogCiAgICAgYm9vbCBhbGxvd3NQaWN0dXJl
SW5QaWN0dXJlID0gdmlkZW9FbGVtZW50Lm1lZGlhU2Vzc2lvbigpLmFsbG93c1BpY3R1cmVJblBp
Y3R1cmUodmlkZW9FbGVtZW50KTsKICAgICAKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6Oldl
YlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6U2V0dXBGdWxsc2NyZWVuV2l0aElEKGNvbnRl
eHRJZCwgaW50ZXJmYWNlLT5sYXllckhvc3RpbmdDb250ZXh0KCktPmNvbnRleHRJRCgpLCBjbGll
bnRSZWN0Rm9yRWxlbWVudCgmdmlkZW9FbGVtZW50KSwgbV9wYWdlLT5kZXZpY2VTY2FsZUZhY3Rv
cigpLCBpbnRlcmZhY2UtPmZ1bGxzY3JlZW5Nb2RlKCksIGFsbG93c1BpY3R1cmVJblBpY3R1cmUp
LCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlZpZGVv
RnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6U2V0dXBGdWxsc2NyZWVuV2l0aElEKGNvbnRleHRJZCwg
aW50ZXJmYWNlLT5sYXllckhvc3RpbmdDb250ZXh0KCktPmNvbnRleHRJRCgpLCBpbmxpbmVWaWRl
b1JlY3RGb3JFbGVtZW50KCZ2aWRlb0VsZW1lbnQpLCBtX3BhZ2UtPmRldmljZVNjYWxlRmFjdG9y
KCksIGludGVyZmFjZS0+ZnVsbHNjcmVlbk1vZGUoKSwgYWxsb3dzUGljdHVyZUluUGljdHVyZSks
IG1fcGFnZS0+cGFnZUlEKCkpOwogfQogCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6
OmV4aXRWaWRlb0Z1bGxzY3JlZW5Gb3JWaWRlb0VsZW1lbnQoV2ViQ29yZTo6SFRNTFZpZGVvRWxl
bWVudCYgdmlkZW9FbGVtZW50KQpAQCAtMzA3LDcgKzMxOSw3IEBAIHZvaWQgV2ViVmlkZW9GdWxs
c2NyZWVuTWFuYWdlcjo6ZXhpdFZpZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxlbWVudChXZWJDb3Jl
OjpIVE1MCiAgICAgICAgIHJldHVybjsKIAogICAgIGludGVyZmFjZS5zZXRJc0FuaW1hdGluZyh0
cnVlKTsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXJQcm94eTo6RXhpdEZ1bGxzY3JlZW4oY29udGV4dElkLCBjbGllbnRSZWN0Rm9yRWxlbWVudCgm
dmlkZW9FbGVtZW50KSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNz
YWdlczo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpFeGl0RnVsbHNjcmVlbihjb250
ZXh0SWQsIGlubGluZVZpZGVvUmVjdEZvckVsZW1lbnQoJnZpZGVvRWxlbWVudCkpLCBtX3BhZ2Ut
PnBhZ2VJRCgpKTsKIH0KIAogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpleGl0Vmlk
ZW9GdWxsc2NyZWVuVG9Nb2RlV2l0aG91dEFuaW1hdGlvbihXZWJDb3JlOjpIVE1MVmlkZW9FbGVt
ZW50JiB2aWRlb0VsZW1lbnQsIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9G
dWxsc2NyZWVuTW9kZSB0YXJnZXRNb2RlKQpAQCAtNDY0LDcgKzQ3Niw3IEBAIHZvaWQgV2ViVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZnVsbHNjcmVlbk1heVJldHVyblRvSW5saW5lKHVpbnQ2NF90
IGNvbnRleHRJZCwKIAogICAgIGlmICghaXNQYWdlVmlzaWJsZSkKICAgICAgICAgbW9kZWwudmlk
ZW9FbGVtZW50KCktPnNjcm9sbEludG9WaWV3SWZOb3RWaXNpYmxlKGZhbHNlKTsKLSAgICBtX3Bh
Z2UtPnNlbmQoTWVzc2FnZXM6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6UHJlcGFy
ZWRUb1JldHVyblRvSW5saW5lKGNvbnRleHRJZCwgdHJ1ZSwgY2xpZW50UmVjdEZvckVsZW1lbnQo
bW9kZWwudmlkZW9FbGVtZW50KCkpKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlByZXBhcmVkVG9S
ZXR1cm5Ub0lubGluZShjb250ZXh0SWQsIHRydWUsIGlubGluZVZpZGVvUmVjdEZvckVsZW1lbnQo
bW9kZWwudmlkZW9FbGVtZW50KCkpKSwgbV9wYWdlLT5wYWdlSUQoKSk7CiB9CiAgICAgCiB2b2lk
IFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnNldFZpZGVvTGF5ZXJGcmFtZUZlbmNlZCh1aW50
NjRfdCBjb250ZXh0SWQsIFdlYkNvcmU6OkZsb2F0UmVjdCBib3VuZHMsIElQQzo6QXR0YWNobWVu
dCBmZW5jZVBvcnQpCkBAIC00NzQsNyArNDg2LDcgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyOjpzZXRWaWRlb0xheWVyRnJhbWVGZW5jZWQodWludDY0X3QgY29udGV4dElkLCBXZWIK
ICAgICBzdGQ6OnRpZShtb2RlbCwgaW50ZXJmYWNlKSA9IGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNl
KGNvbnRleHRJZCk7CiAKICAgICBpZiAoc3RkOjppc25hbihib3VuZHMueCgpKSB8fCBzdGQ6Omlz
bmFuKGJvdW5kcy55KCkpIHx8IHN0ZDo6aXNuYW4oYm91bmRzLndpZHRoKCkpIHx8IHN0ZDo6aXNu
YW4oYm91bmRzLmhlaWdodCgpKSkgewotICAgICAgICBGbG9hdFJlY3QgY2xpZW50UmVjdCA9IGNs
aWVudFJlY3RGb3JFbGVtZW50KG1vZGVsLT52aWRlb0VsZW1lbnQoKSk7CisgICAgICAgIEZsb2F0
UmVjdCBjbGllbnRSZWN0ID0gaW5saW5lVmlkZW9SZWN0Rm9yRWxlbWVudChtb2RlbC0+dmlkZW9F
bGVtZW50KCkpOwogICAgICAgICBib3VuZHMgPSBGbG9hdFJlY3QoMCwgMCwgY2xpZW50UmVjdC53
aWR0aCgpLCBjbGllbnRSZWN0LmhlaWdodCgpKTsKICAgICB9CiAgICAgCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280963</attachid>
            <date>2016-06-09 16:18:41 -0700</date>
            <delta_ts>2016-06-10 12:14:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158351-20160609162010.patch</filename>
            <type>text/plain</type>
            <size>7570</size>
            <attacher name="Ada Chan">adachan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAxODgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjYxYjI0NzY1NmJhNGUy
ZjFlMzhkZTNjMmU1MTA3Y2JmOTU3OTg5MS4uMTVlOGZmMjBlYzVlMDcwOGM4MmU2OWRiMmJlZjY5
OTY2NjI2MWViZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE2LTA2LTA5ICBBZGEg
Q2hhbiAgPGFkYWNoYW5AYXBwbGUuY29tPgorCisgICAgICAgIFVzZSB0aGUgdmlkZW8gZWxlbWVu
dCdzIHZpZGVvIGJveCB3aGVuIGdldHRpbmcgdGhlIGlubGluZSB2aWRlbyByZWN0IGluIFdlYlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXIgb24gTWFjCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTgzNTEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI2NTY3
OTM4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
aHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWRlb0Vs
ZW1lbnQ6OnZpZGVvQm94KToKKyAgICAgICAgKiBodG1sL0hUTUxWaWRlb0VsZW1lbnQuaDoKKwog
MjAxNi0wNi0wOSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgog
CiAgICAgICAgIENsZWFuIHVwIFdlYlNvY2tldCBjb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYjMxMDQ2Njdh
YTNhY2Y5NDU2ZTRkY2VjOGY4YjZhZDdiNmM1ZGY1MS4uM2MyZGE2ZjE2OWUzYWQ1NGY5ZjQyZjM3
M2Y1YWViYzc2NzhjMDNiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE2LTA2LTA5
ICBBZGEgQ2hhbiAgPGFkYWNoYW5AYXBwbGUuY29tPgorCisgICAgICAgIFVzZSB0aGUgdmlkZW8g
ZWxlbWVudCdzIHZpZGVvIGJveCB3aGVuIGdldHRpbmcgdGhlIGlubGluZSB2aWRlbyByZWN0IGlu
IFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIgb24gTWFjCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTgzNTEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzI2NTY3OTM4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogV2ViUHJvY2Vzcy9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tOgorICAg
ICAgICAoV2ViS2l0OjppbmxpbmVWaWRlb1JlY3RGb3JFbGVtZW50KToKKyAgICAgICAgKFdlYktp
dDo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZW50ZXJWaWRlb0Z1bGxzY3JlZW5Gb3JWaWRl
b0VsZW1lbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpl
eGl0VmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZnVsbHNjcmVlbk1heVJldHVyblRvSW5saW5lKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c2V0VmlkZW9MYXllckZy
YW1lRmVuY2VkKToKKyAgICAgICAgKFdlYktpdDo6Y2xpZW50UmVjdEZvckVsZW1lbnQpOiBEZWxl
dGVkLgorCiAyMDE2LTA2LTA5ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgQ2xlYW4gdXAgV2ViU29ja2V0IGNvZGUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCmluZGV4IGQxN2NiZTdmMGRlMTJlYmUxMjlkOWE0M2Mz
ZjlkYTliZmU1MWRmMDQuLjM1ZjhjYmQ0NWY2ODAyOGFiYzQ2ZDNlZjI5N2U1MDA1OGYzOWEwZTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcApAQCAtMjg3LDYgKzI4
NywxNCBAQCBib29sIEhUTUxWaWRlb0VsZW1lbnQ6Omhhc0F2YWlsYWJsZVZpZGVvRnJhbWUoKSBj
b25zdAogICAgIHJldHVybiBwbGF5ZXIoKS0+aGFzVmlkZW8oKSAmJiBwbGF5ZXIoKS0+aGFzQXZh
aWxhYmxlVmlkZW9GcmFtZSgpOwogfQogCitJbnRSZWN0IEhUTUxWaWRlb0VsZW1lbnQ6OnZpZGVv
Qm94KCkgY29uc3QKK3sKKyAgICBpZiAoYXV0byogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigp
KQorICAgICAgICByZXR1cm4gcmVuZGVyZXItPnZpZGVvQm94KCk7CisKKyAgICByZXR1cm4gSW50
UmVjdCgpOworfQorCiBOYXRpdmVJbWFnZVB0ciBIVE1MVmlkZW9FbGVtZW50OjpuYXRpdmVJbWFn
ZUZvckN1cnJlbnRUaW1lKCkKIHsKICAgICBpZiAoIXBsYXllcigpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxWaWRlb0VsZW1lbnQuaAppbmRleCAxNDVlZWIzNTZkMmYzYzEzYmFlZGEwMGU1NjNhM2Qy
NjU0YjIxYzdlLi5hNGE3ODMzYzcwZDhmMjdkYmEwZTIxMjdmOTBhZTIzNGRhZWM0YTYyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaApAQCAtOTIsNiArOTIsNyBAQCBwdWJs
aWM6CiAjZW5kaWYKIAogICAgIFJlbmRlclZpZGVvKiByZW5kZXJlcigpIGNvbnN0OworICAgIFdF
QkNPUkVfRVhQT1JUIEludFJlY3QgdmlkZW9Cb3goKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBI
VE1MVmlkZW9FbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYsIGJvb2wgY3Jl
YXRlZEJ5UGFyc2VyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29j
b2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvY29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQppbmRleCBlZWVjYzY0MmNmODIx
ZDIwNjYzZTU3MmE1MGZkM2U5M2M0OTQ0YmRiLi4zMTM0YzFmNjI5MTg3MjY4NjFlM2QwNGI5MWZj
NjFkM2JiYWZmYzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29h
L1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCkBAIC01MiwxMiArNTIsMjEg
QEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1zdGF0
aWMgSW50UmVjdCBjbGllbnRSZWN0Rm9yRWxlbWVudChIVE1MRWxlbWVudCogZWxlbWVudCkKK3N0
YXRpYyBJbnRSZWN0IGlubGluZVZpZGVvUmVjdEZvckVsZW1lbnQoSFRNTEVsZW1lbnQqIGVsZW1l
bnQpCiB7CiAgICAgaWYgKCFlbGVtZW50KQogICAgICAgICByZXR1cm4gSW50UmVjdCgpOwogCi0g
ICAgcmV0dXJuIGVsZW1lbnQtPmNsaWVudFJlY3QoKTsKKyAgICBJbnRSZWN0IGNsaWVudFJlY3Qg
PSBlbGVtZW50LT5jbGllbnRSZWN0KCk7CisgICAgaWYgKGlzPEhUTUxWaWRlb0VsZW1lbnQ+KCpl
bGVtZW50KSkgeworICAgICAgICBJbnRSZWN0IHZpZGVvUmVjdCA9IGRvd25jYXN0PEhUTUxWaWRl
b0VsZW1lbnQ+KGVsZW1lbnQpLT52aWRlb0JveCgpOworICAgICAgICBpZiAoIXZpZGVvUmVjdC5p
c0VtcHR5KCkpIHsKKyAgICAgICAgICAgIHZpZGVvUmVjdC5tb3ZlQnkoY2xpZW50UmVjdC5sb2Nh
dGlvbigpKTsKKyAgICAgICAgICAgIHJldHVybiB2aWRlb1JlY3Q7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICByZXR1cm4gY2xpZW50UmVjdDsKIH0KIAogI3ByYWdtYSBtYXJrIC0gV2ViVmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dApAQCAtMjc1LDggKzI4NCw4IEBAIHZvaWQgV2ViVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZW50ZXJWaWRlb0Z1bGxzY3JlZW5Gb3JWaWRlb0VsZW1lbnQo
SFRNTFZpZGVvRWxlCiAgICAgaWYgKCFpbnRlcmZhY2UtPmxheWVySG9zdGluZ0NvbnRleHQoKSkK
ICAgICAgICAgaW50ZXJmYWNlLT5zZXRMYXllckhvc3RpbmdDb250ZXh0KExheWVySG9zdGluZ0Nv
bnRleHQ6OmNyZWF0ZUZvckV4dGVybmFsSG9zdGluZ1Byb2Nlc3MoKSk7CiAKLSAgICBGbG9hdFJl
Y3QgY2xpZW50UmVjdCA9IGNsaWVudFJlY3RGb3JFbGVtZW50KCZ2aWRlb0VsZW1lbnQpOwotICAg
IEZsb2F0UmVjdCB2aWRlb0xheWVyRnJhbWUgPSBGbG9hdFJlY3QoMCwgMCwgY2xpZW50UmVjdC53
aWR0aCgpLCBjbGllbnRSZWN0LmhlaWdodCgpKTsKKyAgICBJbnRSZWN0IHZpZGVvUmVjdCA9IGlu
bGluZVZpZGVvUmVjdEZvckVsZW1lbnQoJnZpZGVvRWxlbWVudCk7CisgICAgRmxvYXRSZWN0IHZp
ZGVvTGF5ZXJGcmFtZSA9IEZsb2F0UmVjdCgwLCAwLCB2aWRlb1JlY3Qud2lkdGgoKSwgdmlkZW9S
ZWN0LmhlaWdodCgpKTsKIAogICAgIEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2Ny
ZWVuTW9kZSBvbGRNb2RlID0gaW50ZXJmYWNlLT5mdWxsc2NyZWVuTW9kZSgpOwogICAgIGludGVy
ZmFjZS0+c2V0VGFyZ2V0SXNGdWxsc2NyZWVuKHRydWUpOwpAQCAtMjkxLDcgKzMwMCw3IEBAIHZv
aWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZW50ZXJWaWRlb0Z1bGxzY3JlZW5Gb3JWaWRl
b0VsZW1lbnQoSFRNTFZpZGVvRWxlCiAKICAgICBib29sIGFsbG93c1BpY3R1cmVJblBpY3R1cmUg
PSB2aWRlb0VsZW1lbnQubWVkaWFTZXNzaW9uKCkuYWxsb3dzUGljdHVyZUluUGljdHVyZSh2aWRl
b0VsZW1lbnQpOwogICAgIAotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViVmlkZW9GdWxs
c2NyZWVuTWFuYWdlclByb3h5OjpTZXR1cEZ1bGxzY3JlZW5XaXRoSUQoY29udGV4dElkLCBpbnRl
cmZhY2UtPmxheWVySG9zdGluZ0NvbnRleHQoKS0+Y29udGV4dElEKCksIGNsaWVudFJlY3RGb3JF
bGVtZW50KCZ2aWRlb0VsZW1lbnQpLCBtX3BhZ2UtPmRldmljZVNjYWxlRmFjdG9yKCksIGludGVy
ZmFjZS0+ZnVsbHNjcmVlbk1vZGUoKSwgYWxsb3dzUGljdHVyZUluUGljdHVyZSksIG1fcGFnZS0+
cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViVmlkZW9GdWxsc2NyZWVu
TWFuYWdlclByb3h5OjpTZXR1cEZ1bGxzY3JlZW5XaXRoSUQoY29udGV4dElkLCBpbnRlcmZhY2Ut
PmxheWVySG9zdGluZ0NvbnRleHQoKS0+Y29udGV4dElEKCksIHZpZGVvUmVjdCwgbV9wYWdlLT5k
ZXZpY2VTY2FsZUZhY3RvcigpLCBpbnRlcmZhY2UtPmZ1bGxzY3JlZW5Nb2RlKCksIGFsbG93c1Bp
Y3R1cmVJblBpY3R1cmUpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKIH0KIAogdm9pZCBXZWJWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyOjpleGl0VmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50KFdlYkNv
cmU6OkhUTUxWaWRlb0VsZW1lbnQmIHZpZGVvRWxlbWVudCkKQEAgLTMwNyw3ICszMTYsNyBAQCB2
b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmV4aXRWaWRlb0Z1bGxzY3JlZW5Gb3JWaWRl
b0VsZW1lbnQoV2ViQ29yZTo6SFRNTAogICAgICAgICByZXR1cm47CiAKICAgICBpbnRlcmZhY2Uu
c2V0SXNBbmltYXRpbmcodHJ1ZSk7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OkV4aXRGdWxsc2NyZWVuKGNvbnRleHRJZCwgY2xpZW50
UmVjdEZvckVsZW1lbnQoJnZpZGVvRWxlbWVudCkpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBt
X3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6RXhp
dEZ1bGxzY3JlZW4oY29udGV4dElkLCBpbmxpbmVWaWRlb1JlY3RGb3JFbGVtZW50KCZ2aWRlb0Vs
ZW1lbnQpKSwgbV9wYWdlLT5wYWdlSUQoKSk7CiB9CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVu
TWFuYWdlcjo6ZXhpdFZpZGVvRnVsbHNjcmVlblRvTW9kZVdpdGhvdXRBbmltYXRpb24oV2ViQ29y
ZTo6SFRNTFZpZGVvRWxlbWVudCYgdmlkZW9FbGVtZW50LCBXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgdGFyZ2V0TW9kZSkKQEAgLTQ2NCw3ICs0NzMs
NyBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmZ1bGxzY3JlZW5NYXlSZXR1cm5U
b0lubGluZSh1aW50NjRfdCBjb250ZXh0SWQsCiAKICAgICBpZiAoIWlzUGFnZVZpc2libGUpCiAg
ICAgICAgIG1vZGVsLnZpZGVvRWxlbWVudCgpLT5zY3JvbGxJbnRvVmlld0lmTm90VmlzaWJsZShm
YWxzZSk7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyUHJveHk6OlByZXBhcmVkVG9SZXR1cm5Ub0lubGluZShjb250ZXh0SWQsIHRydWUsIGNsaWVu
dFJlY3RGb3JFbGVtZW50KG1vZGVsLnZpZGVvRWxlbWVudCgpKSksIG1fcGFnZS0+cGFnZUlEKCkp
OworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclBy
b3h5OjpQcmVwYXJlZFRvUmV0dXJuVG9JbmxpbmUoY29udGV4dElkLCB0cnVlLCBpbmxpbmVWaWRl
b1JlY3RGb3JFbGVtZW50KG1vZGVsLnZpZGVvRWxlbWVudCgpKSksIG1fcGFnZS0+cGFnZUlEKCkp
OwogfQogICAgIAogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzZXRWaWRlb0xheWVy
RnJhbWVGZW5jZWQodWludDY0X3QgY29udGV4dElkLCBXZWJDb3JlOjpGbG9hdFJlY3QgYm91bmRz
LCBJUEM6OkF0dGFjaG1lbnQgZmVuY2VQb3J0KQpAQCAtNDc0LDggKzQ4Myw4IEBAIHZvaWQgV2Vi
VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c2V0VmlkZW9MYXllckZyYW1lRmVuY2VkKHVpbnQ2NF90
IGNvbnRleHRJZCwgV2ViCiAgICAgc3RkOjp0aWUobW9kZWwsIGludGVyZmFjZSkgPSBlbnN1cmVN
b2RlbEFuZEludGVyZmFjZShjb250ZXh0SWQpOwogCiAgICAgaWYgKHN0ZDo6aXNuYW4oYm91bmRz
LngoKSkgfHwgc3RkOjppc25hbihib3VuZHMueSgpKSB8fCBzdGQ6OmlzbmFuKGJvdW5kcy53aWR0
aCgpKSB8fCBzdGQ6OmlzbmFuKGJvdW5kcy5oZWlnaHQoKSkpIHsKLSAgICAgICAgRmxvYXRSZWN0
IGNsaWVudFJlY3QgPSBjbGllbnRSZWN0Rm9yRWxlbWVudChtb2RlbC0+dmlkZW9FbGVtZW50KCkp
OwotICAgICAgICBib3VuZHMgPSBGbG9hdFJlY3QoMCwgMCwgY2xpZW50UmVjdC53aWR0aCgpLCBj
bGllbnRSZWN0LmhlaWdodCgpKTsKKyAgICAgICAgRmxvYXRSZWN0IHZpZGVvUmVjdCA9IGlubGlu
ZVZpZGVvUmVjdEZvckVsZW1lbnQobW9kZWwtPnZpZGVvRWxlbWVudCgpKTsKKyAgICAgICAgYm91
bmRzID0gRmxvYXRSZWN0KDAsIDAsIHZpZGVvUmVjdC53aWR0aCgpLCB2aWRlb1JlY3QuaGVpZ2h0
KCkpOwogICAgIH0KICAgICAKICAgICBbQ0FUcmFuc2FjdGlvbiBiZWdpbl07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>281029</attachid>
            <date>2016-06-10 12:14:47 -0700</date>
            <delta_ts>2016-06-10 12:17:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158351-20160610121617.patch</filename>
            <type>text/plain</type>
            <size>13259</size>
            <attacher name="Ada Chan">adachan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAxODgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjYxYjI0NzY1NmJhNGUy
ZjFlMzhkZTNjMmU1MTA3Y2JmOTU3OTg5MS4uMDJhNTMwOTMyODY5NmYyNjZhYmIyM2NkYjFhZmJj
ZTg0YmJkZmE1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE2LTA2LTEwICBBZGEg
Q2hhbiAgPGFkYWNoYW5AYXBwbGUuY29tPgorCisgICAgICAgIFVzZSB0aGUgdmlkZW8gZWxlbWVu
dCdzIHZpZGVvIGJveCB3aGVuIGdldHRpbmcgdGhlIGlubGluZSB2aWRlbyByZWN0IGluIFdlYlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXIgb24gTWFjCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTgzNTEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI2NTY3
OTM4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICBDaGFuZ2UgdGhlIHZp
c2liaWxpdHkgb2YgUmVuZGVyVmlkZW8uaCBhbmQgUmVuZGVyTWVkaWEuaCBzaW5jZSB3ZSdsbCBi
ZSBpbXBvcnRpbmcgUmVuZGVyVmlkZW8uaCBmcm9tIFdlYktpdDIuCisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclZpZGVvLmg6CisKIDIwMTYtMDYtMDkgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hy
aXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBDbGVhbiB1cCBXZWJTb2NrZXQgY29kZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCmluZGV4IGIzMTA0NjY3YWEzYWNmOTQ1NmU0ZGNlYzhmOGI2YWQ3YjZjNWRmNTEuLmIy
MDY5NGFhNTgzODY3ZDk3NmZmNmI1MzY0NmEwMWFlZTc4MzQ2YTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOSBAQAorMjAxNi0wNi0xMCAgQWRhIENoYW4gIDxhZGFjaGFuQGFwcGxlLmNvbT4KKwor
ICAgICAgICBVc2UgdGhlIHZpZGVvIGVsZW1lbnQncyB2aWRlbyBib3ggd2hlbiBnZXR0aW5nIHRo
ZSBpbmxpbmUgdmlkZW8gcmVjdCBpbiBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyIG9uIE1hYwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4MzUxCisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yNjU2NzkzOD4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvV2ViVmlkZW9GdWxs
c2NyZWVuTWFuYWdlci5tbToKKyAgICAgICAgKFdlYktpdDo6aW5saW5lVmlkZW9GcmFtZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmVudGVyVmlkZW9GdWxs
c2NyZWVuRm9yVmlkZW9FbGVtZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlcjo6ZXhpdFZpZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxlbWVudCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmZ1bGxzY3JlZW5NYXlSZXR1cm5U
b0lubGluZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnNl
dFZpZGVvTGF5ZXJGcmFtZUZlbmNlZCk6CisgICAgICAgIChXZWJLaXQ6OmNsaWVudFJlY3RGb3JF
bGVtZW50KTogRGVsZXRlZC4KKwogMjAxNi0wNi0wOSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJp
c3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIENsZWFuIHVwIFdlYlNvY2tldCBjb2RlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggODc2MDA4MzIwZGVmNDY5MTJiMDM4NjI1ZTRlMmFhMWE0N2RhMDY5My4uZTY1MzljMjQzMzNl
MmIyZWEzMDZiYmVhNzY3NzdjZTA4NDAzMzg4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTY1OCw4ICsxNjU4LDggQEAKIAkJ
NDM5MDQ2RTcxMkRBMjVFODAwQUY4MEEyIC8qIFJlbmRlck1hdGhNTFNjcmlwdHMuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDM5MDQ2RDMxMkRBMjVF
ODAwQUY4MEEyIC8qIFJlbmRlck1hdGhNTFNjcmlwdHMuY3BwICovOyB9OwogCQk0MzkwNDZFODEy
REEyNUU4MDBBRjgwQTIgLyogUmVuZGVyTWF0aE1MU2NyaXB0cy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDM5MDQ2RDQxMkRBMjVFODAwQUY4MEEyIC8q
IFJlbmRlck1hdGhNTFNjcmlwdHMuaCAqLzsgfTsKIAkJNDM5MDQ2RTkxMkRBMjVFODAwQUY4MEEy
IC8qIFJlbmRlck1hdGhNTFVuZGVyT3Zlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MzkwNDZENTEyREEyNUU4MDBBRjgwQTIgLyogUmVuZGVyTWF0
aE1MVW5kZXJPdmVyLmNwcCAqLzsgfTsKLQkJNDM5MDQ2RUExMkRBMjVFODAwQUY4MEEyIC8qIFJl
bmRlck1hdGhNTFVuZGVyT3Zlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDM5MDQ2RDYxMkRBMjVFODAwQUY4MEEyIC8qIFJlbmRlck1hdGhNTFVuZGVy
T3Zlci5oICovOyB9OwogCQk0MzkwNDZFOTEyREEyNUU4MTJBRjgwQUMgLyogTWF0aE9wZXJhdG9y
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQzOTA0
NkQ1MTJEQTI1RTgxMkFGODBBQyAvKiBNYXRoT3BlcmF0b3IuY3BwICovOyB9OworCQk0MzkwNDZF
QTEyREEyNUU4MDBBRjgwQTIgLyogUmVuZGVyTWF0aE1MVW5kZXJPdmVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MzkwNDZENjEyREEyNUU4MDBBRjgw
QTIgLyogUmVuZGVyTWF0aE1MVW5kZXJPdmVyLmggKi87IH07CiAJCTQzOTA0NkVBMTJEQTI1RTgx
MkFGODBBQyAvKiBNYXRoT3BlcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQzOTA0NkQ2MTJEQTI1RTgxMkFGODBBQyAvKiBNYXRoT3BlcmF0b3Iu
aCAqLzsgfTsKIAkJNDM5MDQ2RUIxMkRBMjVFODAwQUY4MEE5IC8qIFJlbmRlck1hdGhNTFRva2Vu
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQzOTA0
NkQ3MTJEQTI1RTgwMEFGODBBOSAvKiBSZW5kZXJNYXRoTUxUb2tlbi5jcHAgKi87IH07CiAJCTQz
OTA0NkVDMTJEQTI1RTgwMEFGODBBOSAvKiBSZW5kZXJNYXRoTUxUb2tlbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDM5MDQ2RDgxMkRBMjVFODAwQUY4
MEE5IC8qIFJlbmRlck1hdGhNTFRva2VuLmggKi87IH07CkBAIC02NjM0LDcgKzY2MzQsNyBAQAog
CQlFNDQ2MTQzQjBDRDY4OUNDMDBGQURBNzUgLyogSlNIVE1MU291cmNlRWxlbWVudC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEI0MjM3MTBDQkZC
NkUwMDBBRjJFQ0UgLyogSlNIVE1MU291cmNlRWxlbWVudC5jcHAgKi87IH07CiAJCUU0NDYxNDND
MENENjg5Q0MwMEZBREE3NSAvKiBKU0hUTUxTb3VyY2VFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEI0MjM3MjBDQkZCNkUwMDBBRjJFQ0Ug
LyogSlNIVE1MU291cmNlRWxlbWVudC5oICovOyB9OwogCQlFNDQ2MTQ1MTBDRDY4QTM1MDBGQURB
NzUgLyogUmVuZGVyVmlkZW8uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTRCNDFFMzMwQ0JGQjYwOTAwQUYyRUNFIC8qIFJlbmRlclZpZGVvLmNwcCAq
LzsgfTsKLQkJRTQ0NjE0NTIwQ0Q2OEEzNTAwRkFEQTc1IC8qIFJlbmRlclZpZGVvLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEI0MUUzNDBDQkZCNjA5
MDBBRjJFQ0UgLyogUmVuZGVyVmlkZW8uaCAqLzsgfTsKKwkJRTQ0NjE0NTIwQ0Q2OEEzNTAwRkFE
QTc1IC8qIFJlbmRlclZpZGVvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFNEI0MUUzNDBDQkZCNjA5MDBBRjJFQ0UgLyogUmVuZGVyVmlkZW8uaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFNDRCNEJCMzE0
MTY1MEQ3MDAyQjFEOEIgLyogU2VsZWN0b3JDaGVja2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0NEI0QkIxMTQxNjUwRDcwMDJCMUQ4QiAvKiBT
ZWxlY3RvckNoZWNrZXIuY3BwICovOyB9OwogCQlFNDRCNEJCNDE0MTY1MEQ3MDAyQjFEOEIgLyog
U2VsZWN0b3JDaGVja2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFNDRCNEJCMjE0MTY1MEQ3MDAyQjFEOEIgLyogU2VsZWN0b3JDaGVja2VyLmggKi87
IH07CiAJCUU0NEVFM0E4MTc1NzdFQkQwMEVFRThDRiAvKiBGb250R2VuZXJpY0ZhbWlsaWVzLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0NEVFM0E2
MTc1NzZFNTUwMEVFRThDRiAvKiBGb250R2VuZXJpY0ZhbWlsaWVzLmNwcCAqLzsgfTsKQEAgLTY3
MDUsNyArNjcwNSw3IEBACiAJCUU0QzE3ODlBMEVFNjkwMzgwMDgyNEQ2OSAvKiBDU1NTZWxlY3Rv
ckxpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTRDMTc4OTUwRUU2OTAzODAwODI0RDY5IC8qIENTU1NlbGVjdG9yTGlzdC5jcHAgKi87IH07CiAJ
CUU0QzE3ODlCMEVFNjkwMzgwMDgyNEQ2OSAvKiBDU1NTZWxlY3Rvckxpc3QuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QzE3ODk2MEVFNjkwMzgwMDgy
NEQ2OSAvKiBDU1NTZWxlY3Rvckxpc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlFNEMyNzk1ODBDRjk3NDE5MDBFOTdCOTggLyogUmVuZGVyTWVk
aWEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRD
Mjc5NTYwQ0Y5NzQxOTAwRTk3Qjk4IC8qIFJlbmRlck1lZGlhLmNwcCAqLzsgfTsKLQkJRTRDMjc5
NTkwQ0Y5NzQxOTAwRTk3Qjk4IC8qIFJlbmRlck1lZGlhLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEMyNzk1NzBDRjk3NDE5MDBFOTdCOTggLyogUmVu
ZGVyTWVkaWEuaCAqLzsgfTsKKwkJRTRDMjc5NTkwQ0Y5NzQxOTAwRTk3Qjk4IC8qIFJlbmRlck1l
ZGlhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEMy
Nzk1NzBDRjk3NDE5MDBFOTdCOTggLyogUmVuZGVyTWVkaWEuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFNEMzQjFGQTBGMEU0MTYxMDA5NjkzRjYg
LyogTGVnYWN5VGlsZUNhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFNEMzQjFGOTBGMEU0MTYxMDA5NjkzRjYgLyogTGVnYWN5VGlsZUNhY2hlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTRDM0Ix
RkMwRjBFNDE3MDAwOTY5M0Y2IC8qIExlZ2FjeVRpbGVDYWNoZS5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QzNCMUZCMEYwRTQxNzAwMDk2OTNGNiAv
KiBMZWdhY3lUaWxlQ2FjaGUubW0gKi87IH07CiAJCUU0QzkxQTBFMTgwMjM0MzEwMEExN0Y2RCAv
KiBUZXh0UGFpbnRTdHlsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTRDOTFBMEQxODAyMzQzMTAwQTE3RjZEIC8qIFRleHRQYWludFN0eWxlLmggKi87
IH07CkBAIC05MjA1LDggKzkyMDUsOCBAQAogCQk0MzkwNDZEMzEyREEyNUU4MDBBRjgwQTIgLyog
UmVuZGVyTWF0aE1MU2NyaXB0cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBSZW5kZXJNYXRoTUxTY3JpcHRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDM5MDQ2RDQxMkRBMjVFODAwQUY4MEEyIC8qIFJlbmRlck1hdGhNTFNjcmlwdHMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyTWF0aE1MU2NyaXB0cy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MzkwNDZENTEyREEyNUU4MDBBRjgwQTIgLyogUmVu
ZGVyTWF0aE1MVW5kZXJPdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFJlbmRlck1hdGhNTFVuZGVyT3Zlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTQzOTA0NkQ2MTJEQTI1RTgwMEFGODBBMiAvKiBSZW5kZXJNYXRoTUxVbmRlck92ZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyTWF0aE1MVW5kZXJPdmVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQzOTA0NkQ1MTJEQTI1RTgxMkFGODBBQyAv
KiBNYXRoT3BlcmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
TWF0aE9wZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDM5MDQ2RDYx
MkRBMjVFODAwQUY4MEEyIC8qIFJlbmRlck1hdGhNTFVuZGVyT3Zlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJNYXRoTUxVbmRlck92ZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDM5MDQ2RDYxMkRBMjVFODEyQUY4MEFDIC8qIE1hdGhPcGVyYXRv
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYXRoT3BlcmF0b3IuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDM5MDQ2RDcxMkRBMjVFODAwQUY4MEE5IC8qIFJl
bmRlck1hdGhNTFRva2VuLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFJlbmRlck1hdGhNTFRva2VuLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDM5
MDQ2RDgxMkRBMjVFODAwQUY4MEE5IC8qIFJlbmRlck1hdGhNTFRva2VuLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlck1hdGhNTFRva2VuLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VmlkZW8uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWRlby5oCmluZGV4IDRk
YWU2MDkzZDg2YTkyNzIwODJiZDU4M2JhNzhmOTJhMTAyZmQyNDQuLjI5ZDAwYTNjMGFiYmEyODg0
MDBlNGQ1NzNlMWMzNWJkYTZkZDk1ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJWaWRlby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJW
aWRlby5oCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKIAogICAgIEhUTUxWaWRlb0VsZW1lbnQm
IHZpZGVvRWxlbWVudCgpIGNvbnN0OwogCi0gICAgSW50UmVjdCB2aWRlb0JveCgpIGNvbnN0Owor
ICAgIFdFQkNPUkVfRVhQT1JUIEludFJlY3QgdmlkZW9Cb3goKSBjb25zdDsKIAogICAgIHN0YXRp
YyBJbnRTaXplIGRlZmF1bHRTaXplKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvY29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbSBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQppbmRleCBl
ZWVjYzY0MmNmODIxZDIwNjYzZTU3MmE1MGZkM2U5M2M0OTQ0YmRiLi41NzI5MzZlMGY3YTk0ODE4
Y2RiMGRhYmE2ZDkwOTRiNTQ5MTI5NWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCkBAIC00
Myw2ICs0Myw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL1BsYXRmb3JtQ0FMYXllci5oPgogI2ltcG9y
dCA8V2ViQ29yZS9SZW5kZXJMYXllci5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZW5kZXJMYXllckJh
Y2tpbmcuaD4KKyNpbXBvcnQgPFdlYkNvcmUvUmVuZGVyVmlkZW8uaD4KICNpbXBvcnQgPFdlYkNv
cmUvUmVuZGVyVmlldy5oPgogI2ltcG9ydCA8V2ViQ29yZS9TZXR0aW5ncy5oPgogI2ltcG9ydCA8
V2ViQ29yZS9UaW1lUmFuZ2VzLmg+CkBAIC01MiwxMiArNTMsMTUgQEAgdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1zdGF0aWMgSW50UmVjdCBjbGllbnRS
ZWN0Rm9yRWxlbWVudChIVE1MRWxlbWVudCogZWxlbWVudCkKK3N0YXRpYyBJbnRSZWN0IGlubGlu
ZVZpZGVvRnJhbWUoSFRNTFZpZGVvRWxlbWVudCYgZWxlbWVudCkKIHsKLSAgICBpZiAoIWVsZW1l
bnQpCi0gICAgICAgIHJldHVybiBJbnRSZWN0KCk7Ci0KLSAgICByZXR1cm4gZWxlbWVudC0+Y2xp
ZW50UmVjdCgpOworICAgIGVsZW1lbnQuZG9jdW1lbnQoKS51cGRhdGVMYXlvdXRJZ25vcmVQZW5k
aW5nU3R5bGVzaGVldHMoKTsKKyAgICBhdXRvKiByZW5kZXJlciA9IGVsZW1lbnQucmVuZGVyZXIo
KTsKKyAgICBpZiAoIXJlbmRlcmVyKQorICAgICAgICByZXR1cm4gZWxlbWVudC5jbGllbnRSZWN0
KCk7CisgICAgYXV0byByZWN0ID0gcmVuZGVyZXItPnZpZGVvQm94KCk7CisgICAgcmVjdC5tb3Zl
QnkocmVuZGVyZXItPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCkubG9jYXRpb24oKSk7CisgICAg
cmV0dXJuIGVsZW1lbnQuZG9jdW1lbnQoKS52aWV3KCktPmNvbnRlbnRzVG9Sb290VmlldyhyZWN0
KTsKIH0KIAogI3ByYWdtYSBtYXJrIC0gV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4
dApAQCAtMjc1LDggKzI3OSw4IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZW50
ZXJWaWRlb0Z1bGxzY3JlZW5Gb3JWaWRlb0VsZW1lbnQoSFRNTFZpZGVvRWxlCiAgICAgaWYgKCFp
bnRlcmZhY2UtPmxheWVySG9zdGluZ0NvbnRleHQoKSkKICAgICAgICAgaW50ZXJmYWNlLT5zZXRM
YXllckhvc3RpbmdDb250ZXh0KExheWVySG9zdGluZ0NvbnRleHQ6OmNyZWF0ZUZvckV4dGVybmFs
SG9zdGluZ1Byb2Nlc3MoKSk7CiAKLSAgICBGbG9hdFJlY3QgY2xpZW50UmVjdCA9IGNsaWVudFJl
Y3RGb3JFbGVtZW50KCZ2aWRlb0VsZW1lbnQpOwotICAgIEZsb2F0UmVjdCB2aWRlb0xheWVyRnJh
bWUgPSBGbG9hdFJlY3QoMCwgMCwgY2xpZW50UmVjdC53aWR0aCgpLCBjbGllbnRSZWN0LmhlaWdo
dCgpKTsKKyAgICBhdXRvIHZpZGVvUmVjdCA9IGlubGluZVZpZGVvRnJhbWUodmlkZW9FbGVtZW50
KTsKKyAgICBGbG9hdFJlY3QgdmlkZW9MYXllckZyYW1lID0gRmxvYXRSZWN0KDAsIDAsIHZpZGVv
UmVjdC53aWR0aCgpLCB2aWRlb1JlY3QuaGVpZ2h0KCkpOwogCiAgICAgSFRNTE1lZGlhRWxlbWVu
dEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIG9sZE1vZGUgPSBpbnRlcmZhY2UtPmZ1bGxzY3Jl
ZW5Nb2RlKCk7CiAgICAgaW50ZXJmYWNlLT5zZXRUYXJnZXRJc0Z1bGxzY3JlZW4odHJ1ZSk7CkBA
IC0yOTEsNyArMjk1LDcgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjplbnRlclZp
ZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxlbWVudChIVE1MVmlkZW9FbGUKIAogICAgIGJvb2wgYWxs
b3dzUGljdHVyZUluUGljdHVyZSA9IHZpZGVvRWxlbWVudC5tZWRpYVNlc3Npb24oKS5hbGxvd3NQ
aWN0dXJlSW5QaWN0dXJlKHZpZGVvRWxlbWVudCk7CiAgICAgCi0gICAgbV9wYWdlLT5zZW5kKE1l
c3NhZ2VzOjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlNldHVwRnVsbHNjcmVlbldp
dGhJRChjb250ZXh0SWQsIGludGVyZmFjZS0+bGF5ZXJIb3N0aW5nQ29udGV4dCgpLT5jb250ZXh0
SUQoKSwgY2xpZW50UmVjdEZvckVsZW1lbnQoJnZpZGVvRWxlbWVudCksIG1fcGFnZS0+ZGV2aWNl
U2NhbGVGYWN0b3IoKSwgaW50ZXJmYWNlLT5mdWxsc2NyZWVuTW9kZSgpLCBhbGxvd3NQaWN0dXJl
SW5QaWN0dXJlKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlNldHVwRnVsbHNjcmVlbldpdGhJRChj
b250ZXh0SWQsIGludGVyZmFjZS0+bGF5ZXJIb3N0aW5nQ29udGV4dCgpLT5jb250ZXh0SUQoKSwg
dmlkZW9SZWN0LCBtX3BhZ2UtPmRldmljZVNjYWxlRmFjdG9yKCksIGludGVyZmFjZS0+ZnVsbHNj
cmVlbk1vZGUoKSwgYWxsb3dzUGljdHVyZUluUGljdHVyZSksIG1fcGFnZS0+cGFnZUlEKCkpOwog
fQogCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmV4aXRWaWRlb0Z1bGxzY3JlZW5G
b3JWaWRlb0VsZW1lbnQoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudCYgdmlkZW9FbGVtZW50KQpA
QCAtMzA3LDcgKzMxMSw3IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZXhpdFZp
ZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxlbWVudChXZWJDb3JlOjpIVE1MCiAgICAgICAgIHJldHVy
bjsKIAogICAgIGludGVyZmFjZS5zZXRJc0FuaW1hdGluZyh0cnVlKTsKLSAgICBtX3BhZ2UtPnNl
bmQoTWVzc2FnZXM6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6RXhpdEZ1bGxzY3Jl
ZW4oY29udGV4dElkLCBjbGllbnRSZWN0Rm9yRWxlbWVudCgmdmlkZW9FbGVtZW50KSksIG1fcGFn
ZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlclByb3h5OjpFeGl0RnVsbHNjcmVlbihjb250ZXh0SWQsIGlubGluZVZpZGVvRnJh
bWUodmlkZW9FbGVtZW50KSksIG1fcGFnZS0+cGFnZUlEKCkpOwogfQogCiB2b2lkIFdlYlZpZGVv
RnVsbHNjcmVlbk1hbmFnZXI6OmV4aXRWaWRlb0Z1bGxzY3JlZW5Ub01vZGVXaXRob3V0QW5pbWF0
aW9uKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQmIHZpZGVvRWxlbWVudCwgV2ViQ29yZTo6SFRN
TE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIHRhcmdldE1vZGUpCkBAIC00
NjQsNyArNDY4LDcgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpmdWxsc2NyZWVu
TWF5UmV0dXJuVG9JbmxpbmUodWludDY0X3QgY29udGV4dElkLAogCiAgICAgaWYgKCFpc1BhZ2VW
aXNpYmxlKQogICAgICAgICBtb2RlbC52aWRlb0VsZW1lbnQoKS0+c2Nyb2xsSW50b1ZpZXdJZk5v
dFZpc2libGUoZmFsc2UpOwotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViVmlkZW9GdWxs
c2NyZWVuTWFuYWdlclByb3h5OjpQcmVwYXJlZFRvUmV0dXJuVG9JbmxpbmUoY29udGV4dElkLCB0
cnVlLCBjbGllbnRSZWN0Rm9yRWxlbWVudChtb2RlbC52aWRlb0VsZW1lbnQoKSkpLCBtX3BhZ2Ut
PnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eTo6UHJlcGFyZWRUb1JldHVyblRvSW5saW5lKGNvbnRleHRJZCwgdHJ1ZSwg
aW5saW5lVmlkZW9GcmFtZSgqbW9kZWwudmlkZW9FbGVtZW50KCkpKSwgbV9wYWdlLT5wYWdlSUQo
KSk7CiB9CiAgICAgCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnNldFZpZGVvTGF5
ZXJGcmFtZUZlbmNlZCh1aW50NjRfdCBjb250ZXh0SWQsIFdlYkNvcmU6OkZsb2F0UmVjdCBib3Vu
ZHMsIElQQzo6QXR0YWNobWVudCBmZW5jZVBvcnQpCkBAIC00NzQsOCArNDc4LDggQEAgdm9pZCBX
ZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzZXRWaWRlb0xheWVyRnJhbWVGZW5jZWQodWludDY0
X3QgY29udGV4dElkLCBXZWIKICAgICBzdGQ6OnRpZShtb2RlbCwgaW50ZXJmYWNlKSA9IGVuc3Vy
ZU1vZGVsQW5kSW50ZXJmYWNlKGNvbnRleHRJZCk7CiAKICAgICBpZiAoc3RkOjppc25hbihib3Vu
ZHMueCgpKSB8fCBzdGQ6OmlzbmFuKGJvdW5kcy55KCkpIHx8IHN0ZDo6aXNuYW4oYm91bmRzLndp
ZHRoKCkpIHx8IHN0ZDo6aXNuYW4oYm91bmRzLmhlaWdodCgpKSkgewotICAgICAgICBGbG9hdFJl
Y3QgY2xpZW50UmVjdCA9IGNsaWVudFJlY3RGb3JFbGVtZW50KG1vZGVsLT52aWRlb0VsZW1lbnQo
KSk7Ci0gICAgICAgIGJvdW5kcyA9IEZsb2F0UmVjdCgwLCAwLCBjbGllbnRSZWN0LndpZHRoKCks
IGNsaWVudFJlY3QuaGVpZ2h0KCkpOworICAgICAgICBhdXRvIHZpZGVvUmVjdCA9IGlubGluZVZp
ZGVvRnJhbWUoKm1vZGVsLT52aWRlb0VsZW1lbnQoKSk7CisgICAgICAgIGJvdW5kcyA9IEZsb2F0
UmVjdCgwLCAwLCB2aWRlb1JlY3Qud2lkdGgoKSwgdmlkZW9SZWN0LmhlaWdodCgpKTsKICAgICB9
CiAgICAgCiAgICAgW0NBVHJhbnNhY3Rpb24gYmVnaW5dOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>281030</attachid>
            <date>2016-06-10 12:17:26 -0700</date>
            <delta_ts>2016-06-10 15:16:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158351-20160610121856.patch</filename>
            <type>text/plain</type>
            <size>10111</size>
            <attacher name="Ada Chan">adachan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAxOTMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2UxOGFjYmI2NDgxMjAy
NjNiMzdlNjlkMmU3ZWE4YzVkZTM0N2ZkOC4uZThjMjgwZGFiZThjNTVhYjcwZDY0NjYxMjJhYTg1
ODUzYmJiYmNiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE2LTA2LTEwICBBZGEg
Q2hhbiAgPGFkYWNoYW5AYXBwbGUuY29tPgorCisgICAgICAgIFVzZSB0aGUgdmlkZW8gZWxlbWVu
dCdzIHZpZGVvIGJveCB3aGVuIGdldHRpbmcgdGhlIGlubGluZSB2aWRlbyByZWN0IGluIFdlYlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXIgb24gTWFjCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTgzNTEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI2NTY3
OTM4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICBDaGFuZ2UgdGhlIHZp
c2liaWxpdHkgb2YgUmVuZGVyVmlkZW8uaCBhbmQgUmVuZGVyTWVkaWEuaCBzaW5jZSB3ZSdsbCBi
ZSBpbXBvcnRpbmcgUmVuZGVyVmlkZW8uaCBmcm9tIFdlYktpdDIuCisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclZpZGVvLmg6CisKIDIwMTYtMDYtMTAgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm4u
ZmFibGV0QGNyZi5jYW5vbi5mcj4KIAogICAgICAgICBPcmlnaW4gaGVhZGVyIGlzIG5vdCBpbmNs
dWRlZCBpbiBDT1JTIHJlcXVlc3RzIGZvciBwcmVsb2FkZWQgY3Jvc3Mtb3JpZ2luIHJlc291cmNl
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCmluZGV4IGEzNmJhMmIwYjYxYzUyYWFlMDYzMmIyM2I0YTJiZGM1ZTNjNDAyNDQu
LjM4OGFmNTBiNDRjMTYyMTQwODgyNWFjNjlhYTE5YWQ4YWRiMDQ5MWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxOSBAQAorMjAxNi0wNi0xMCAgQWRhIENoYW4gIDxhZGFjaGFuQGFwcGxlLmNvbT4K
KworICAgICAgICBVc2UgdGhlIHZpZGVvIGVsZW1lbnQncyB2aWRlbyBib3ggd2hlbiBnZXR0aW5n
IHRoZSBpbmxpbmUgdmlkZW8gcmVjdCBpbiBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyIG9uIE1h
YworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4MzUx
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yNjU2NzkzOD4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvV2ViVmlkZW9G
dWxsc2NyZWVuTWFuYWdlci5tbToKKyAgICAgICAgKFdlYktpdDo6aW5saW5lVmlkZW9GcmFtZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmVudGVyVmlkZW9G
dWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxs
c2NyZWVuTWFuYWdlcjo6ZXhpdFZpZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxlbWVudCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmZ1bGxzY3JlZW5NYXlSZXR1
cm5Ub0lubGluZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6
OnNldFZpZGVvTGF5ZXJGcmFtZUZlbmNlZCk6CisgICAgICAgIChXZWJLaXQ6OmNsaWVudFJlY3RG
b3JFbGVtZW50KTogRGVsZXRlZC4KKwogMjAxNi0wNi0xMCAgQW5kZXJzIENhcmxzc29uICA8YW5k
ZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBDb21tYW5kTGluZSBjbGFzcwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IDc0MDE0MjVhZDI1M2FlN2M0YmVkN2YzYTAzZTQ3Y2I3MzcxMjRiMTAuLjcwYjcxMjE4ZDdiOTE2
OTc0OTk2MGI5N2MxMDhhYmMxOGJhY2Q4YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTY2MzgsNyArNjYzOCw3IEBACiAJCUU0
NDYxNDNCMENENjg5Q0MwMEZBREE3NSAvKiBKU0hUTUxTb3VyY2VFbGVtZW50LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QjQyMzcxMENCRkI2RTAw
MEFGMkVDRSAvKiBKU0hUTUxTb3VyY2VFbGVtZW50LmNwcCAqLzsgfTsKIAkJRTQ0NjE0M0MwQ0Q2
ODlDQzAwRkFEQTc1IC8qIEpTSFRNTFNvdXJjZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QjQyMzcyMENCRkI2RTAwMEFGMkVDRSAvKiBK
U0hUTUxTb3VyY2VFbGVtZW50LmggKi87IH07CiAJCUU0NDYxNDUxMENENjhBMzUwMEZBREE3NSAv
KiBSZW5kZXJWaWRlby5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFNEI0MUUzMzBDQkZCNjA5MDBBRjJFQ0UgLyogUmVuZGVyVmlkZW8uY3BwICovOyB9
OwotCQlFNDQ2MTQ1MjBDRDY4QTM1MDBGQURBNzUgLyogUmVuZGVyVmlkZW8uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QjQxRTM0MENCRkI2MDkwMEFG
MkVDRSAvKiBSZW5kZXJWaWRlby5oICovOyB9OworCQlFNDQ2MTQ1MjBDRDY4QTM1MDBGQURBNzUg
LyogUmVuZGVyVmlkZW8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEU0QjQxRTM0MENCRkI2MDkwMEFGMkVDRSAvKiBSZW5kZXJWaWRlby5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUU0NEI0QkIzMTQxNjUw
RDcwMDJCMUQ4QiAvKiBTZWxlY3RvckNoZWNrZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ0QjRCQjExNDE2NTBENzAwMkIxRDhCIC8qIFNlbGVj
dG9yQ2hlY2tlci5jcHAgKi87IH07CiAJCUU0NEI0QkI0MTQxNjUwRDcwMDJCMUQ4QiAvKiBTZWxl
Y3RvckNoZWNrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEU0NEI0QkIyMTQxNjUwRDcwMDJCMUQ4QiAvKiBTZWxlY3RvckNoZWNrZXIuaCAqLzsgfTsK
IAkJRTQ0RUUzQTgxNzU3N0VCRDAwRUVFOENGIC8qIEZvbnRHZW5lcmljRmFtaWxpZXMuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ0RUUzQTYxNzU3
NkU1NTAwRUVFOENGIC8qIEZvbnRHZW5lcmljRmFtaWxpZXMuY3BwICovOyB9OwpAQCAtNjcwOSw3
ICs2NzA5LDcgQEAKIAkJRTRDMTc4OUEwRUU2OTAzODAwODI0RDY5IC8qIENTU1NlbGVjdG9yTGlz
dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEMx
Nzg5NTBFRTY5MDM4MDA4MjRENjkgLyogQ1NTU2VsZWN0b3JMaXN0LmNwcCAqLzsgfTsKIAkJRTRD
MTc4OUIwRUU2OTAzODAwODI0RDY5IC8qIENTU1NlbGVjdG9yTGlzdC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRDMTc4OTYwRUU2OTAzODAwODI0RDY5
IC8qIENTU1NlbGVjdG9yTGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUU0QzI3OTU4MENGOTc0MTkwMEU5N0I5OCAvKiBSZW5kZXJNZWRpYS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEMyNzk1
NjBDRjk3NDE5MDBFOTdCOTggLyogUmVuZGVyTWVkaWEuY3BwICovOyB9OwotCQlFNEMyNzk1OTBD
Rjk3NDE5MDBFOTdCOTggLyogUmVuZGVyTWVkaWEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QzI3OTU3MENGOTc0MTkwMEU5N0I5OCAvKiBSZW5kZXJN
ZWRpYS5oICovOyB9OworCQlFNEMyNzk1OTBDRjk3NDE5MDBFOTdCOTggLyogUmVuZGVyTWVkaWEu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QzI3OTU3
MENGOTc0MTkwMEU5N0I5OCAvKiBSZW5kZXJNZWRpYS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUU0QzNCMUZBMEYwRTQxNjEwMDk2OTNGNiAvKiBM
ZWdhY3lUaWxlQ2FjaGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEU0QzNCMUY5MEYwRTQxNjEwMDk2OTNGNiAvKiBMZWdhY3lUaWxlQ2FjaGUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFNEMzQjFGQzBG
MEU0MTcwMDA5NjkzRjYgLyogTGVnYWN5VGlsZUNhY2hlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRDM0IxRkIwRjBFNDE3MDAwOTY5M0Y2IC8qIExl
Z2FjeVRpbGVDYWNoZS5tbSAqLzsgfTsKIAkJRTRDOTFBMEUxODAyMzQzMTAwQTE3RjZEIC8qIFRl
eHRQYWludFN0eWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFNEM5MUEwRDE4MDIzNDMxMDBBMTdGNkQgLyogVGV4dFBhaW50U3R5bGUuaCAqLzsgfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWRlby5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZGVvLmgKaW5kZXggNGRhZTYwOTNkODZhOTI3
MjA4MmJkNTgzYmE3OGY5MmExMDJmZDI0NC4uMjlkMDBhM2MwYWJiYTI4ODQwMGU0ZDU3M2UxYzM1
YmRhNmRkOTVkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZp
ZGVvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZGVvLmgKQEAgLTM5
LDcgKzM5LDcgQEAgcHVibGljOgogCiAgICAgSFRNTFZpZGVvRWxlbWVudCYgdmlkZW9FbGVtZW50
KCkgY29uc3Q7CiAKLSAgICBJbnRSZWN0IHZpZGVvQm94KCkgY29uc3Q7CisgICAgV0VCQ09SRV9F
WFBPUlQgSW50UmVjdCB2aWRlb0JveCgpIGNvbnN0OwogCiAgICAgc3RhdGljIEludFNpemUgZGVm
YXVsdFNpemUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2Nv
YS9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCmluZGV4IGVlZWNjNjQyY2Y4MjFk
MjA2NjNlNTcyYTUwZmQzZTkzYzQ5NDRiZGIuLjU3MjkzNmUwZjdhOTQ4MThjZGIwZGFiYTZkOTA5
NGI1NDkxMjk1YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2Ev
V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KQEAgLTQzLDYgKzQzLDcgQEAK
ICNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1DQUxheWVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Jl
bmRlckxheWVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1JlbmRlckxheWVyQmFja2luZy5oPgorI2lt
cG9ydCA8V2ViQ29yZS9SZW5kZXJWaWRlby5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZW5kZXJWaWV3
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NldHRpbmdzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RpbWVS
YW5nZXMuaD4KQEAgLTUyLDEyICs1MywxNSBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAog
bmFtZXNwYWNlIFdlYktpdCB7CiAKLXN0YXRpYyBJbnRSZWN0IGNsaWVudFJlY3RGb3JFbGVtZW50
KEhUTUxFbGVtZW50KiBlbGVtZW50KQorc3RhdGljIEludFJlY3QgaW5saW5lVmlkZW9GcmFtZShI
VE1MVmlkZW9FbGVtZW50JiBlbGVtZW50KQogewotICAgIGlmICghZWxlbWVudCkKLSAgICAgICAg
cmV0dXJuIEludFJlY3QoKTsKLQotICAgIHJldHVybiBlbGVtZW50LT5jbGllbnRSZWN0KCk7Cisg
ICAgZWxlbWVudC5kb2N1bWVudCgpLnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0
cygpOworICAgIGF1dG8qIHJlbmRlcmVyID0gZWxlbWVudC5yZW5kZXJlcigpOworICAgIGlmICgh
cmVuZGVyZXIpCisgICAgICAgIHJldHVybiBlbGVtZW50LmNsaWVudFJlY3QoKTsKKyAgICBhdXRv
IHJlY3QgPSByZW5kZXJlci0+dmlkZW9Cb3goKTsKKyAgICByZWN0Lm1vdmVCeShyZW5kZXJlci0+
YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKS5sb2NhdGlvbigpKTsKKyAgICByZXR1cm4gZWxlbWVu
dC5kb2N1bWVudCgpLnZpZXcoKS0+Y29udGVudHNUb1Jvb3RWaWV3KHJlY3QpOwogfQogCiAjcHJh
Z21hIG1hcmsgLSBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0CkBAIC0yNzUsOCAr
Mjc5LDggQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjplbnRlclZpZGVvRnVsbHNj
cmVlbkZvclZpZGVvRWxlbWVudChIVE1MVmlkZW9FbGUKICAgICBpZiAoIWludGVyZmFjZS0+bGF5
ZXJIb3N0aW5nQ29udGV4dCgpKQogICAgICAgICBpbnRlcmZhY2UtPnNldExheWVySG9zdGluZ0Nv
bnRleHQoTGF5ZXJIb3N0aW5nQ29udGV4dDo6Y3JlYXRlRm9yRXh0ZXJuYWxIb3N0aW5nUHJvY2Vz
cygpKTsKIAotICAgIEZsb2F0UmVjdCBjbGllbnRSZWN0ID0gY2xpZW50UmVjdEZvckVsZW1lbnQo
JnZpZGVvRWxlbWVudCk7Ci0gICAgRmxvYXRSZWN0IHZpZGVvTGF5ZXJGcmFtZSA9IEZsb2F0UmVj
dCgwLCAwLCBjbGllbnRSZWN0LndpZHRoKCksIGNsaWVudFJlY3QuaGVpZ2h0KCkpOworICAgIGF1
dG8gdmlkZW9SZWN0ID0gaW5saW5lVmlkZW9GcmFtZSh2aWRlb0VsZW1lbnQpOworICAgIEZsb2F0
UmVjdCB2aWRlb0xheWVyRnJhbWUgPSBGbG9hdFJlY3QoMCwgMCwgdmlkZW9SZWN0LndpZHRoKCks
IHZpZGVvUmVjdC5oZWlnaHQoKSk7CiAKICAgICBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVv
RnVsbHNjcmVlbk1vZGUgb2xkTW9kZSA9IGludGVyZmFjZS0+ZnVsbHNjcmVlbk1vZGUoKTsKICAg
ICBpbnRlcmZhY2UtPnNldFRhcmdldElzRnVsbHNjcmVlbih0cnVlKTsKQEAgLTI5MSw3ICsyOTUs
NyBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmVudGVyVmlkZW9GdWxsc2NyZWVu
Rm9yVmlkZW9FbGVtZW50KEhUTUxWaWRlb0VsZQogCiAgICAgYm9vbCBhbGxvd3NQaWN0dXJlSW5Q
aWN0dXJlID0gdmlkZW9FbGVtZW50Lm1lZGlhU2Vzc2lvbigpLmFsbG93c1BpY3R1cmVJblBpY3R1
cmUodmlkZW9FbGVtZW50KTsKICAgICAKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6U2V0dXBGdWxsc2NyZWVuV2l0aElEKGNvbnRleHRJ
ZCwgaW50ZXJmYWNlLT5sYXllckhvc3RpbmdDb250ZXh0KCktPmNvbnRleHRJRCgpLCBjbGllbnRS
ZWN0Rm9yRWxlbWVudCgmdmlkZW9FbGVtZW50KSwgbV9wYWdlLT5kZXZpY2VTY2FsZUZhY3Rvcigp
LCBpbnRlcmZhY2UtPmZ1bGxzY3JlZW5Nb2RlKCksIGFsbG93c1BpY3R1cmVJblBpY3R1cmUpLCBt
X3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlZpZGVvRnVs
bHNjcmVlbk1hbmFnZXJQcm94eTo6U2V0dXBGdWxsc2NyZWVuV2l0aElEKGNvbnRleHRJZCwgaW50
ZXJmYWNlLT5sYXllckhvc3RpbmdDb250ZXh0KCktPmNvbnRleHRJRCgpLCB2aWRlb1JlY3QsIG1f
cGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSwgaW50ZXJmYWNlLT5mdWxsc2NyZWVuTW9kZSgpLCBh
bGxvd3NQaWN0dXJlSW5QaWN0dXJlKSwgbV9wYWdlLT5wYWdlSUQoKSk7CiB9CiAKIHZvaWQgV2Vi
VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZXhpdFZpZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxlbWVu
dChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50JiB2aWRlb0VsZW1lbnQpCkBAIC0zMDcsNyArMzEx
LDcgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpleGl0VmlkZW9GdWxsc2NyZWVu
Rm9yVmlkZW9FbGVtZW50KFdlYkNvcmU6OkhUTUwKICAgICAgICAgcmV0dXJuOwogCiAgICAgaW50
ZXJmYWNlLnNldElzQW5pbWF0aW5nKHRydWUpOwotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6
V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpFeGl0RnVsbHNjcmVlbihjb250ZXh0SWQs
IGNsaWVudFJlY3RGb3JFbGVtZW50KCZ2aWRlb0VsZW1lbnQpKSwgbV9wYWdlLT5wYWdlSUQoKSk7
CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJv
eHk6OkV4aXRGdWxsc2NyZWVuKGNvbnRleHRJZCwgaW5saW5lVmlkZW9GcmFtZSh2aWRlb0VsZW1l
bnQpKSwgbV9wYWdlLT5wYWdlSUQoKSk7CiB9CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFu
YWdlcjo6ZXhpdFZpZGVvRnVsbHNjcmVlblRvTW9kZVdpdGhvdXRBbmltYXRpb24oV2ViQ29yZTo6
SFRNTFZpZGVvRWxlbWVudCYgdmlkZW9FbGVtZW50LCBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgdGFyZ2V0TW9kZSkKQEAgLTQ2NCw3ICs0NjgsNyBA
QCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmZ1bGxzY3JlZW5NYXlSZXR1cm5Ub0lu
bGluZSh1aW50NjRfdCBjb250ZXh0SWQsCiAKICAgICBpZiAoIWlzUGFnZVZpc2libGUpCiAgICAg
ICAgIG1vZGVsLnZpZGVvRWxlbWVudCgpLT5zY3JvbGxJbnRvVmlld0lmTm90VmlzaWJsZShmYWxz
ZSk7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
UHJveHk6OlByZXBhcmVkVG9SZXR1cm5Ub0lubGluZShjb250ZXh0SWQsIHRydWUsIGNsaWVudFJl
Y3RGb3JFbGVtZW50KG1vZGVsLnZpZGVvRWxlbWVudCgpKSksIG1fcGFnZS0+cGFnZUlEKCkpOwor
ICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5
OjpQcmVwYXJlZFRvUmV0dXJuVG9JbmxpbmUoY29udGV4dElkLCB0cnVlLCBpbmxpbmVWaWRlb0Zy
YW1lKCptb2RlbC52aWRlb0VsZW1lbnQoKSkpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKIH0KICAgICAK
IHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c2V0VmlkZW9MYXllckZyYW1lRmVuY2Vk
KHVpbnQ2NF90IGNvbnRleHRJZCwgV2ViQ29yZTo6RmxvYXRSZWN0IGJvdW5kcywgSVBDOjpBdHRh
Y2htZW50IGZlbmNlUG9ydCkKQEAgLTQ3NCw4ICs0NzgsOCBAQCB2b2lkIFdlYlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXI6OnNldFZpZGVvTGF5ZXJGcmFtZUZlbmNlZCh1aW50NjRfdCBjb250ZXh0SWQs
IFdlYgogICAgIHN0ZDo6dGllKG1vZGVsLCBpbnRlcmZhY2UpID0gZW5zdXJlTW9kZWxBbmRJbnRl
cmZhY2UoY29udGV4dElkKTsKIAogICAgIGlmIChzdGQ6OmlzbmFuKGJvdW5kcy54KCkpIHx8IHN0
ZDo6aXNuYW4oYm91bmRzLnkoKSkgfHwgc3RkOjppc25hbihib3VuZHMud2lkdGgoKSkgfHwgc3Rk
Ojppc25hbihib3VuZHMuaGVpZ2h0KCkpKSB7Ci0gICAgICAgIEZsb2F0UmVjdCBjbGllbnRSZWN0
ID0gY2xpZW50UmVjdEZvckVsZW1lbnQobW9kZWwtPnZpZGVvRWxlbWVudCgpKTsKLSAgICAgICAg
Ym91bmRzID0gRmxvYXRSZWN0KDAsIDAsIGNsaWVudFJlY3Qud2lkdGgoKSwgY2xpZW50UmVjdC5o
ZWlnaHQoKSk7CisgICAgICAgIGF1dG8gdmlkZW9SZWN0ID0gaW5saW5lVmlkZW9GcmFtZSgqbW9k
ZWwtPnZpZGVvRWxlbWVudCgpKTsKKyAgICAgICAgYm91bmRzID0gRmxvYXRSZWN0KDAsIDAsIHZp
ZGVvUmVjdC53aWR0aCgpLCB2aWRlb1JlY3QuaGVpZ2h0KCkpOwogICAgIH0KICAgICAKICAgICBb
Q0FUcmFuc2FjdGlvbiBiZWdpbl07Cg==
</data>
<flag name="review"
          id="304896"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>281073</attachid>
            <date>2016-06-10 20:38:55 -0700</date>
            <delta_ts>2016-06-10 20:38:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158351-20160610204025.patch</filename>
            <type>text/plain</type>
            <size>10094</size>
            <attacher name="Ada Chan">adachan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAxOTM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2UxOGFjYmI2NDgxMjAy
NjNiMzdlNjlkMmU3ZWE4YzVkZTM0N2ZkOC4uZThjMjgwZGFiZThjNTVhYjcwZDY0NjYxMjJhYTg1
ODUzYmJiYmNiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE2LTA2LTEwICBBZGEg
Q2hhbiAgPGFkYWNoYW5AYXBwbGUuY29tPgorCisgICAgICAgIFVzZSB0aGUgdmlkZW8gZWxlbWVu
dCdzIHZpZGVvIGJveCB3aGVuIGdldHRpbmcgdGhlIGlubGluZSB2aWRlbyByZWN0IGluIFdlYlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXIgb24gTWFjCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTgzNTEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI2NTY3
OTM4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICBDaGFuZ2UgdGhlIHZp
c2liaWxpdHkgb2YgUmVuZGVyVmlkZW8uaCBhbmQgUmVuZGVyTWVkaWEuaCBzaW5jZSB3ZSdsbCBi
ZSBpbXBvcnRpbmcgUmVuZGVyVmlkZW8uaCBmcm9tIFdlYktpdDIuCisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclZpZGVvLmg6CisKIDIwMTYtMDYtMTAgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm4u
ZmFibGV0QGNyZi5jYW5vbi5mcj4KIAogICAgICAgICBPcmlnaW4gaGVhZGVyIGlzIG5vdCBpbmNs
dWRlZCBpbiBDT1JTIHJlcXVlc3RzIGZvciBwcmVsb2FkZWQgY3Jvc3Mtb3JpZ2luIHJlc291cmNl
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCmluZGV4IGEzNmJhMmIwYjYxYzUyYWFlMDYzMmIyM2I0YTJiZGM1ZTNjNDAyNDQu
LjM4OGFmNTBiNDRjMTYyMTQwODgyNWFjNjlhYTE5YWQ4YWRiMDQ5MWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxOSBAQAorMjAxNi0wNi0xMCAgQWRhIENoYW4gIDxhZGFjaGFuQGFwcGxlLmNvbT4K
KworICAgICAgICBVc2UgdGhlIHZpZGVvIGVsZW1lbnQncyB2aWRlbyBib3ggd2hlbiBnZXR0aW5n
IHRoZSBpbmxpbmUgdmlkZW8gcmVjdCBpbiBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyIG9uIE1h
YworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4MzUx
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yNjU2NzkzOD4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvV2ViVmlkZW9G
dWxsc2NyZWVuTWFuYWdlci5tbToKKyAgICAgICAgKFdlYktpdDo6aW5saW5lVmlkZW9GcmFtZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmVudGVyVmlkZW9G
dWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxs
c2NyZWVuTWFuYWdlcjo6ZXhpdFZpZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxlbWVudCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmZ1bGxzY3JlZW5NYXlSZXR1
cm5Ub0lubGluZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6
OnNldFZpZGVvTGF5ZXJGcmFtZUZlbmNlZCk6CisgICAgICAgIChXZWJLaXQ6OmNsaWVudFJlY3RG
b3JFbGVtZW50KTogRGVsZXRlZC4KKwogMjAxNi0wNi0xMCAgQW5kZXJzIENhcmxzc29uICA8YW5k
ZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBDb21tYW5kTGluZSBjbGFzcwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IDc0MDE0MjVhZDI1M2FlN2M0YmVkN2YzYTAzZTQ3Y2I3MzcxMjRiMTAuLjcwYjcxMjE4ZDdiOTE2
OTc0OTk2MGI5N2MxMDhhYmMxOGJhY2Q4YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTY2MzgsNyArNjYzOCw3IEBACiAJCUU0
NDYxNDNCMENENjg5Q0MwMEZBREE3NSAvKiBKU0hUTUxTb3VyY2VFbGVtZW50LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QjQyMzcxMENCRkI2RTAw
MEFGMkVDRSAvKiBKU0hUTUxTb3VyY2VFbGVtZW50LmNwcCAqLzsgfTsKIAkJRTQ0NjE0M0MwQ0Q2
ODlDQzAwRkFEQTc1IC8qIEpTSFRNTFNvdXJjZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QjQyMzcyMENCRkI2RTAwMEFGMkVDRSAvKiBK
U0hUTUxTb3VyY2VFbGVtZW50LmggKi87IH07CiAJCUU0NDYxNDUxMENENjhBMzUwMEZBREE3NSAv
KiBSZW5kZXJWaWRlby5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFNEI0MUUzMzBDQkZCNjA5MDBBRjJFQ0UgLyogUmVuZGVyVmlkZW8uY3BwICovOyB9
OwotCQlFNDQ2MTQ1MjBDRDY4QTM1MDBGQURBNzUgLyogUmVuZGVyVmlkZW8uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QjQxRTM0MENCRkI2MDkwMEFG
MkVDRSAvKiBSZW5kZXJWaWRlby5oICovOyB9OworCQlFNDQ2MTQ1MjBDRDY4QTM1MDBGQURBNzUg
LyogUmVuZGVyVmlkZW8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEU0QjQxRTM0MENCRkI2MDkwMEFGMkVDRSAvKiBSZW5kZXJWaWRlby5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUU0NEI0QkIzMTQxNjUw
RDcwMDJCMUQ4QiAvKiBTZWxlY3RvckNoZWNrZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ0QjRCQjExNDE2NTBENzAwMkIxRDhCIC8qIFNlbGVj
dG9yQ2hlY2tlci5jcHAgKi87IH07CiAJCUU0NEI0QkI0MTQxNjUwRDcwMDJCMUQ4QiAvKiBTZWxl
Y3RvckNoZWNrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEU0NEI0QkIyMTQxNjUwRDcwMDJCMUQ4QiAvKiBTZWxlY3RvckNoZWNrZXIuaCAqLzsgfTsK
IAkJRTQ0RUUzQTgxNzU3N0VCRDAwRUVFOENGIC8qIEZvbnRHZW5lcmljRmFtaWxpZXMuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ0RUUzQTYxNzU3
NkU1NTAwRUVFOENGIC8qIEZvbnRHZW5lcmljRmFtaWxpZXMuY3BwICovOyB9OwpAQCAtNjcwOSw3
ICs2NzA5LDcgQEAKIAkJRTRDMTc4OUEwRUU2OTAzODAwODI0RDY5IC8qIENTU1NlbGVjdG9yTGlz
dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEMx
Nzg5NTBFRTY5MDM4MDA4MjRENjkgLyogQ1NTU2VsZWN0b3JMaXN0LmNwcCAqLzsgfTsKIAkJRTRD
MTc4OUIwRUU2OTAzODAwODI0RDY5IC8qIENTU1NlbGVjdG9yTGlzdC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRDMTc4OTYwRUU2OTAzODAwODI0RDY5
IC8qIENTU1NlbGVjdG9yTGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUU0QzI3OTU4MENGOTc0MTkwMEU5N0I5OCAvKiBSZW5kZXJNZWRpYS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEMyNzk1
NjBDRjk3NDE5MDBFOTdCOTggLyogUmVuZGVyTWVkaWEuY3BwICovOyB9OwotCQlFNEMyNzk1OTBD
Rjk3NDE5MDBFOTdCOTggLyogUmVuZGVyTWVkaWEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QzI3OTU3MENGOTc0MTkwMEU5N0I5OCAvKiBSZW5kZXJN
ZWRpYS5oICovOyB9OworCQlFNEMyNzk1OTBDRjk3NDE5MDBFOTdCOTggLyogUmVuZGVyTWVkaWEu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QzI3OTU3
MENGOTc0MTkwMEU5N0I5OCAvKiBSZW5kZXJNZWRpYS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUU0QzNCMUZBMEYwRTQxNjEwMDk2OTNGNiAvKiBM
ZWdhY3lUaWxlQ2FjaGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEU0QzNCMUY5MEYwRTQxNjEwMDk2OTNGNiAvKiBMZWdhY3lUaWxlQ2FjaGUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFNEMzQjFGQzBG
MEU0MTcwMDA5NjkzRjYgLyogTGVnYWN5VGlsZUNhY2hlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRDM0IxRkIwRjBFNDE3MDAwOTY5M0Y2IC8qIExl
Z2FjeVRpbGVDYWNoZS5tbSAqLzsgfTsKIAkJRTRDOTFBMEUxODAyMzQzMTAwQTE3RjZEIC8qIFRl
eHRQYWludFN0eWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFNEM5MUEwRDE4MDIzNDMxMDBBMTdGNkQgLyogVGV4dFBhaW50U3R5bGUuaCAqLzsgfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWRlby5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZGVvLmgKaW5kZXggNGRhZTYwOTNkODZhOTI3
MjA4MmJkNTgzYmE3OGY5MmExMDJmZDI0NC4uMjlkMDBhM2MwYWJiYTI4ODQwMGU0ZDU3M2UxYzM1
YmRhNmRkOTVkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZp
ZGVvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZGVvLmgKQEAgLTM5
LDcgKzM5LDcgQEAgcHVibGljOgogCiAgICAgSFRNTFZpZGVvRWxlbWVudCYgdmlkZW9FbGVtZW50
KCkgY29uc3Q7CiAKLSAgICBJbnRSZWN0IHZpZGVvQm94KCkgY29uc3Q7CisgICAgV0VCQ09SRV9F
WFBPUlQgSW50UmVjdCB2aWRlb0JveCgpIGNvbnN0OwogCiAgICAgc3RhdGljIEludFNpemUgZGVm
YXVsdFNpemUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2Nv
YS9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCmluZGV4IGVlZWNjNjQyY2Y4MjFk
MjA2NjNlNTcyYTUwZmQzZTkzYzQ5NDRiZGIuLjZlZjZmNWJmMTI3MmE3YjlhMjg3MWQ3ZDRiNzI0
ZjYzMjY5NDc2NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2Ev
V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KQEAgLTQzLDYgKzQzLDcgQEAK
ICNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1DQUxheWVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Jl
bmRlckxheWVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1JlbmRlckxheWVyQmFja2luZy5oPgorI2lt
cG9ydCA8V2ViQ29yZS9SZW5kZXJWaWRlby5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZW5kZXJWaWV3
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NldHRpbmdzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RpbWVS
YW5nZXMuaD4KQEAgLTUyLDEyICs1MywxNSBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAog
bmFtZXNwYWNlIFdlYktpdCB7CiAKLXN0YXRpYyBJbnRSZWN0IGNsaWVudFJlY3RGb3JFbGVtZW50
KEhUTUxFbGVtZW50KiBlbGVtZW50KQorc3RhdGljIEludFJlY3QgaW5saW5lVmlkZW9GcmFtZShI
VE1MVmlkZW9FbGVtZW50JiBlbGVtZW50KQogewotICAgIGlmICghZWxlbWVudCkKLSAgICAgICAg
cmV0dXJuIEludFJlY3QoKTsKLQotICAgIHJldHVybiBlbGVtZW50LT5jbGllbnRSZWN0KCk7Cisg
ICAgZWxlbWVudC5kb2N1bWVudCgpLnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0
cygpOworICAgIGF1dG8qIHJlbmRlcmVyID0gZWxlbWVudC5yZW5kZXJlcigpOworICAgIGlmICgh
cmVuZGVyZXIpCisgICAgICAgIHJldHVybiB7IH07CisgICAgYXV0byByZWN0ID0gcmVuZGVyZXIt
PnZpZGVvQm94KCk7CisgICAgcmVjdC5tb3ZlQnkocmVuZGVyZXItPmFic29sdXRlQm91bmRpbmdC
b3hSZWN0KCkubG9jYXRpb24oKSk7CisgICAgcmV0dXJuIGVsZW1lbnQuZG9jdW1lbnQoKS52aWV3
KCktPmNvbnRlbnRzVG9Sb290VmlldyhyZWN0KTsKIH0KIAogI3ByYWdtYSBtYXJrIC0gV2ViVmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dApAQCAtMjc1LDggKzI3OSw4IEBAIHZvaWQgV2Vi
VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZW50ZXJWaWRlb0Z1bGxzY3JlZW5Gb3JWaWRlb0VsZW1l
bnQoSFRNTFZpZGVvRWxlCiAgICAgaWYgKCFpbnRlcmZhY2UtPmxheWVySG9zdGluZ0NvbnRleHQo
KSkKICAgICAgICAgaW50ZXJmYWNlLT5zZXRMYXllckhvc3RpbmdDb250ZXh0KExheWVySG9zdGlu
Z0NvbnRleHQ6OmNyZWF0ZUZvckV4dGVybmFsSG9zdGluZ1Byb2Nlc3MoKSk7CiAKLSAgICBGbG9h
dFJlY3QgY2xpZW50UmVjdCA9IGNsaWVudFJlY3RGb3JFbGVtZW50KCZ2aWRlb0VsZW1lbnQpOwot
ICAgIEZsb2F0UmVjdCB2aWRlb0xheWVyRnJhbWUgPSBGbG9hdFJlY3QoMCwgMCwgY2xpZW50UmVj
dC53aWR0aCgpLCBjbGllbnRSZWN0LmhlaWdodCgpKTsKKyAgICBhdXRvIHZpZGVvUmVjdCA9IGlu
bGluZVZpZGVvRnJhbWUodmlkZW9FbGVtZW50KTsKKyAgICBGbG9hdFJlY3QgdmlkZW9MYXllckZy
YW1lID0gRmxvYXRSZWN0KDAsIDAsIHZpZGVvUmVjdC53aWR0aCgpLCB2aWRlb1JlY3QuaGVpZ2h0
KCkpOwogCiAgICAgSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIG9s
ZE1vZGUgPSBpbnRlcmZhY2UtPmZ1bGxzY3JlZW5Nb2RlKCk7CiAgICAgaW50ZXJmYWNlLT5zZXRU
YXJnZXRJc0Z1bGxzY3JlZW4odHJ1ZSk7CkBAIC0yOTEsNyArMjk1LDcgQEAgdm9pZCBXZWJWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyOjplbnRlclZpZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxlbWVudChI
VE1MVmlkZW9FbGUKIAogICAgIGJvb2wgYWxsb3dzUGljdHVyZUluUGljdHVyZSA9IHZpZGVvRWxl
bWVudC5tZWRpYVNlc3Npb24oKS5hbGxvd3NQaWN0dXJlSW5QaWN0dXJlKHZpZGVvRWxlbWVudCk7
CiAgICAgCi0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyUHJveHk6OlNldHVwRnVsbHNjcmVlbldpdGhJRChjb250ZXh0SWQsIGludGVyZmFjZS0+bGF5
ZXJIb3N0aW5nQ29udGV4dCgpLT5jb250ZXh0SUQoKSwgY2xpZW50UmVjdEZvckVsZW1lbnQoJnZp
ZGVvRWxlbWVudCksIG1fcGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSwgaW50ZXJmYWNlLT5mdWxs
c2NyZWVuTW9kZSgpLCBhbGxvd3NQaWN0dXJlSW5QaWN0dXJlKSwgbV9wYWdlLT5wYWdlSUQoKSk7
CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJv
eHk6OlNldHVwRnVsbHNjcmVlbldpdGhJRChjb250ZXh0SWQsIGludGVyZmFjZS0+bGF5ZXJIb3N0
aW5nQ29udGV4dCgpLT5jb250ZXh0SUQoKSwgdmlkZW9SZWN0LCBtX3BhZ2UtPmRldmljZVNjYWxl
RmFjdG9yKCksIGludGVyZmFjZS0+ZnVsbHNjcmVlbk1vZGUoKSwgYWxsb3dzUGljdHVyZUluUGlj
dHVyZSksIG1fcGFnZS0+cGFnZUlEKCkpOwogfQogCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1h
bmFnZXI6OmV4aXRWaWRlb0Z1bGxzY3JlZW5Gb3JWaWRlb0VsZW1lbnQoV2ViQ29yZTo6SFRNTFZp
ZGVvRWxlbWVudCYgdmlkZW9FbGVtZW50KQpAQCAtMzA3LDcgKzMxMSw3IEBAIHZvaWQgV2ViVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZXhpdFZpZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxlbWVudChX
ZWJDb3JlOjpIVE1MCiAgICAgICAgIHJldHVybjsKIAogICAgIGludGVyZmFjZS5zZXRJc0FuaW1h
dGluZyh0cnVlKTsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eTo6RXhpdEZ1bGxzY3JlZW4oY29udGV4dElkLCBjbGllbnRSZWN0Rm9yRWxl
bWVudCgmdmlkZW9FbGVtZW50KSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2Vu
ZChNZXNzYWdlczo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpFeGl0RnVsbHNjcmVl
bihjb250ZXh0SWQsIGlubGluZVZpZGVvRnJhbWUodmlkZW9FbGVtZW50KSksIG1fcGFnZS0+cGFn
ZUlEKCkpOwogfQogCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmV4aXRWaWRlb0Z1
bGxzY3JlZW5Ub01vZGVXaXRob3V0QW5pbWF0aW9uKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQm
IHZpZGVvRWxlbWVudCwgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxz
Y3JlZW5Nb2RlIHRhcmdldE1vZGUpCkBAIC00NjQsNyArNDY4LDcgQEAgdm9pZCBXZWJWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyOjpmdWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmUodWludDY0X3QgY29u
dGV4dElkLAogCiAgICAgaWYgKCFpc1BhZ2VWaXNpYmxlKQogICAgICAgICBtb2RlbC52aWRlb0Vs
ZW1lbnQoKS0+c2Nyb2xsSW50b1ZpZXdJZk5vdFZpc2libGUoZmFsc2UpOwotICAgIG1fcGFnZS0+
c2VuZChNZXNzYWdlczo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpQcmVwYXJlZFRv
UmV0dXJuVG9JbmxpbmUoY29udGV4dElkLCB0cnVlLCBjbGllbnRSZWN0Rm9yRWxlbWVudChtb2Rl
bC52aWRlb0VsZW1lbnQoKSkpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQo
TWVzc2FnZXM6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6UHJlcGFyZWRUb1JldHVy
blRvSW5saW5lKGNvbnRleHRJZCwgdHJ1ZSwgaW5saW5lVmlkZW9GcmFtZSgqbW9kZWwudmlkZW9F
bGVtZW50KCkpKSwgbV9wYWdlLT5wYWdlSUQoKSk7CiB9CiAgICAgCiB2b2lkIFdlYlZpZGVvRnVs
bHNjcmVlbk1hbmFnZXI6OnNldFZpZGVvTGF5ZXJGcmFtZUZlbmNlZCh1aW50NjRfdCBjb250ZXh0
SWQsIFdlYkNvcmU6OkZsb2F0UmVjdCBib3VuZHMsIElQQzo6QXR0YWNobWVudCBmZW5jZVBvcnQp
CkBAIC00NzQsOCArNDc4LDggQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzZXRW
aWRlb0xheWVyRnJhbWVGZW5jZWQodWludDY0X3QgY29udGV4dElkLCBXZWIKICAgICBzdGQ6OnRp
ZShtb2RlbCwgaW50ZXJmYWNlKSA9IGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKGNvbnRleHRJZCk7
CiAKICAgICBpZiAoc3RkOjppc25hbihib3VuZHMueCgpKSB8fCBzdGQ6OmlzbmFuKGJvdW5kcy55
KCkpIHx8IHN0ZDo6aXNuYW4oYm91bmRzLndpZHRoKCkpIHx8IHN0ZDo6aXNuYW4oYm91bmRzLmhl
aWdodCgpKSkgewotICAgICAgICBGbG9hdFJlY3QgY2xpZW50UmVjdCA9IGNsaWVudFJlY3RGb3JF
bGVtZW50KG1vZGVsLT52aWRlb0VsZW1lbnQoKSk7Ci0gICAgICAgIGJvdW5kcyA9IEZsb2F0UmVj
dCgwLCAwLCBjbGllbnRSZWN0LndpZHRoKCksIGNsaWVudFJlY3QuaGVpZ2h0KCkpOworICAgICAg
ICBhdXRvIHZpZGVvUmVjdCA9IGlubGluZVZpZGVvRnJhbWUoKm1vZGVsLT52aWRlb0VsZW1lbnQo
KSk7CisgICAgICAgIGJvdW5kcyA9IEZsb2F0UmVjdCgwLCAwLCB2aWRlb1JlY3Qud2lkdGgoKSwg
dmlkZW9SZWN0LmhlaWdodCgpKTsKICAgICB9CiAgICAgCiAgICAgW0NBVHJhbnNhY3Rpb24gYmVn
aW5dOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>