<?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>141936</bug_id>
          
          <creation_ts>2015-02-23 17:11:44 -0800</creation_ts>
          <short_desc>Setting any of the &lt;object&gt; element plugin controlling attributes does not have any affect</short_desc>
          <delta_ts>2015-03-06 10:45:08 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>SVG</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>142249</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Said Abou-Hallawa">sabouhallawa</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kangil.han</cc>
    
    <cc>koivisto</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1071432</commentid>
    <comment_count>0</comment_count>
      <attachid>247171</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-02-23 17:11:44 -0800</bug_when>
    <thetext>Created attachment 247171
test case

Open the following test case (attached).

&lt;html&gt;
&lt;body&gt;
  &lt;object id=&quot;object1&quot; type=&quot;image/svg+xml&quot; data=&quot;data:image/svg+xml,
    &lt;svg xmlns=&apos;http://www.w3.org/2000/svg&apos; width=&apos;100&apos; height=&apos;100&apos;&gt;
      &lt;rect width=&apos;100%&apos; height=&apos;100%&apos; fill=&apos;red&apos;/&gt;
    &lt;/svg&gt;&quot;&gt;
  &lt;/object&gt;
  &lt;script&gt;
    var object = document.getElementById(&quot;object1&quot;);
    object.setAttribute(&quot;data&quot;, &quot;data:image/svg+xml, \
        &lt;svg xmlns=&apos;http://www.w3.org/2000/svg&apos; width=&apos;100&apos; height=&apos;100&apos;&gt; \
          &lt;rect width=&apos;100%&apos; height=&apos;100%&apos; fill=&apos;lime&apos;/&gt; \
        &lt;/svg&gt;&quot;);
  &lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;

It has an &lt;object&gt; tag. Its data attributes points to an SVG data uri image which loads fine. After loading the page, the data attribute to another SVG data uri image.

Results: Setting the data attribute has no effect.
Expected: The contents of the &lt;object&gt; gets updated once the data attributes changes.
Notes: FireFox and Safari both work as expected.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1071435</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-02-23 17:13:11 -0800</bug_when>
    <thetext>&lt;rdar://problem/19931466&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1071890</commentid>
    <comment_count>2</comment_count>
      <attachid>247291</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-02-24 19:31:47 -0800</bug_when>
    <thetext>Created attachment 247291
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1071920</commentid>
    <comment_count>3</comment_count>
      <attachid>247291</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-02-24 19:55:12 -0800</bug_when>
    <thetext>Comment on attachment 247291
Patch

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

&gt; LayoutTests/svg/as-object/svg-in-object-dynamic-attribute-change.html:52
&gt; +        setTimeout(function () {
&gt; +          testRunner.notifyDone();
&gt; +        }, 200);

200ms is really long for a test. Can&apos;t we use an unload handler?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1071928</commentid>
    <comment_count>4</comment_count>
      <attachid>247300</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-02-24 20:19:19 -0800</bug_when>
    <thetext>Created attachment 247300
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1071929</commentid>
    <comment_count>5</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-02-24 20:20:16 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 247291 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=247291&amp;action=review
&gt; 
&gt; &gt; LayoutTests/svg/as-object/svg-in-object-dynamic-attribute-change.html:52
&gt; &gt; +        setTimeout(function () {
&gt; &gt; +          testRunner.notifyDone();
&gt; &gt; +        }, 200);
&gt; 
&gt; 200ms is really long for a test. Can&apos;t we use an unload handler?

Done. I used the object2.onload event to notify the test runner.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1071941</commentid>
    <comment_count>6</comment_count>
      <attachid>247291</attachid>
    <who name="alan">zalan</who>
    <bug_when>2015-02-24 20:40:30 -0800</bug_when>
    <thetext>Comment on attachment 247291
Patch

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

&gt; Source/WebCore/ChangeLog:10
&gt; +        When setting any of the &lt;object&gt; element attributes dynamically we need
&gt; +        to mark the renderer of the element to be dirty, so it can be recreated
&gt; +        when needed.

I don&apos;t see any renderers marked dirty in this changeset and even if there was, a dirty bit on the renderer does not mean that the renderer will be recreated.
Could you also explain why the renderer needs to be recreated? (if it is recreated at all)

&gt; Source/WebCore/html/HTMLObjectElement.cpp:130
&gt; +        if (renderer() &amp;&amp; isImageType()) {
&gt; +            if (!m_imageLoader)
&gt; +                m_imageLoader = std::make_unique&lt;HTMLImageLoader&gt;(*this);
&gt; +            m_imageLoader-&gt;updateFromElementIgnoringPreviousError();
&gt; +        } else {
&gt; +            invalidateRendererOnAttributeChange(name);
&gt;          }
&gt; -    } else if (name == classidAttr)
&gt; +    } else if (name == classidAttr) {
&gt;          setNeedsWidgetUpdate(true);
&gt; -    else if (name == onbeforeloadAttr)
&gt; +        invalidateRendererOnAttributeChange(name);
&gt; +    } else if (name == onbeforeloadAttr)

The changelog entry say &quot;When setting any of the &lt;object&gt; element attributes...&quot;, while the changeset only deals with typeAttr, dataAttr and classidAttr. Any particular reason why those attributes are triggering style recalc while others don&apos;t?

&gt; Source/WebCore/html/HTMLObjectElement.cpp:281
&gt; +void HTMLObjectElement::invalidateRendererOnAttributeChange(const QualifiedName&amp; name)

This functions does not invalidate a renderer as far as I can see. It simply triggers a style recalc on the element.

&gt; Source/WebCore/html/HTMLObjectElement.cpp:283
&gt; +    if (!inDocument() || isImageType() || !renderer())

Could you explain why isImageType() initiates early return?

&gt; Source/WebCore/html/HTMLObjectElement.cpp:294
&gt; +    if (invalidateRenderer) {

if (!invalidaterRenderer)
    return;

&gt; Source/WebCore/html/HTMLObjectElement.cpp:295
&gt; +        m_useFallbackContent = false;

Why?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1072027</commentid>
    <comment_count>7</comment_count>
      <attachid>247300</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2015-02-25 02:33:58 -0800</bug_when>
    <thetext>Comment on attachment 247300
Patch

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

&gt; Source/WebCore/html/HTMLObjectElement.cpp:126
&gt; +        } else {
&gt; +            invalidateRendererOnAttributeChange(name);
&gt;          }

We don&apos;t use brackets for single line code blocks.

&gt; Source/WebCore/html/HTMLObjectElement.cpp:292
&gt; +void HTMLObjectElement::invalidateRendererOnAttributeChange(const QualifiedName&amp; name)
&gt; +{
&gt; +    if (!inDocument() || isImageType() || !renderer())
&gt; +        return;
&gt; +
&gt; +    bool invalidateRenderer = false;
&gt; +    if (name == typeAttr || name == dataAttr)
&gt; +        invalidateRenderer = !fastHasAttribute(classidAttr);
&gt; +    else if (name == classidAttr)
&gt; +        invalidateRenderer = true;
&gt; +    else
&gt; +        ASSERT_NOT_REACHED();

This function is called from if (name == fooAttr) tests and then it does the same tests again. Maybe there is a nicer factoring?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1072028</commentid>
    <comment_count>8</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2015-02-25 02:36:41 -0800</bug_when>
    <thetext>And please address zalan&apos;s comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1072130</commentid>
    <comment_count>9</comment_count>
      <attachid>247344</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-02-25 13:55:11 -0800</bug_when>
    <thetext>Created attachment 247344
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1072136</commentid>
    <comment_count>10</comment_count>
      <attachid>247346</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-02-25 14:20:02 -0800</bug_when>
    <thetext>Created attachment 247346
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1072142</commentid>
    <comment_count>11</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-02-25 14:34:45 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; Comment on attachment 247291 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=247291&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:10
&gt; &gt; +        When setting any of the &lt;object&gt; element attributes dynamically we need
&gt; &gt; +        to mark the renderer of the element to be dirty, so it can be recreated
&gt; &gt; +        when needed.
&gt; 
&gt; I don&apos;t see any renderers marked dirty in this changeset and even if there
&gt; was, a dirty bit on the renderer does not mean that the renderer will be
&gt; recreated.
&gt; Could you also explain why the renderer needs to be recreated? (if it is
&gt; recreated at all)
&gt; 

I misunderstood the terminology. I meant we need to mark the element dirty by calling setNeedsStyleRecalc() when one of the plugin controlling attributes gets changed. I fixed the ChangeLog.

&gt; &gt; Source/WebCore/html/HTMLObjectElement.cpp:130
&gt; &gt; +        if (renderer() &amp;&amp; isImageType()) {
&gt; &gt; +            if (!m_imageLoader)
&gt; &gt; +                m_imageLoader = std::make_unique&lt;HTMLImageLoader&gt;(*this);
&gt; &gt; +            m_imageLoader-&gt;updateFromElementIgnoringPreviousError();
&gt; &gt; +        } else {
&gt; &gt; +            invalidateRendererOnAttributeChange(name);
&gt; &gt;          }
&gt; &gt; -    } else if (name == classidAttr)
&gt; &gt; +    } else if (name == classidAttr) {
&gt; &gt;          setNeedsWidgetUpdate(true);
&gt; &gt; -    else if (name == onbeforeloadAttr)
&gt; &gt; +        invalidateRendererOnAttributeChange(name);
&gt; &gt; +    } else if (name == onbeforeloadAttr)
&gt; 
&gt; The changelog entry say &quot;When setting any of the &lt;object&gt; element
&gt; attributes...&quot;, while the changeset only deals with typeAttr, dataAttr and
&gt; classidAttr. Any particular reason why those attributes are triggering style
&gt; recalc while others don&apos;t?
&gt; 

I meant changing the value of one of the plugin controlling attributes (classic, type and data). Changing these attributes may require recreating the the plugin.

&gt; &gt; Source/WebCore/html/HTMLObjectElement.cpp:281
&gt; &gt; +void HTMLObjectElement::invalidateRendererOnAttributeChange(const QualifiedName&amp; name)
&gt; 
&gt; This functions does not invalidate a renderer as far as I can see. It simply
&gt; triggers a style recalc on the element.
&gt; 

Yes you are right. The element marked as need style recalc. If the old and the new styles are different, the renderer will be recreated. I fixed the ChangeLog and combined this function with HTMLObjectElement::parseAttribute() as Antti and you suggested.

&gt; &gt; Source/WebCore/html/HTMLObjectElement.cpp:283
&gt; &gt; +    if (!inDocument() || isImageType() || !renderer())
&gt; 
&gt; Could you explain why isImageType() initiates early return?
&gt; 

Your concern is valid. It turned out we need to handle the image object the same way we do for other types. The reason is if the image was rendering fall back content, the new value might fix the image object rendering.

&gt; &gt; Source/WebCore/html/HTMLObjectElement.cpp:294
&gt; &gt; +    if (invalidateRenderer) {
&gt; 
&gt; if (!invalidaterRenderer)
&gt;     return;
&gt; 

Done. But in HTMLObjectElement::parseAttribute().

&gt; &gt; Source/WebCore/html/HTMLObjectElement.cpp:295
&gt; &gt; +        m_useFallbackContent = false;
&gt; 
&gt; Why?

Because if the object was rendering fall back content, the new value might fix the object rendering. The problem is we can&apos;t know right away if the new value will fix the rendering or not. If the data attribute was changing we have to wait until the resource gets loaded and parsed. And if the object can&apos;t render itself, we will fallback again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1072145</commentid>
    <comment_count>12</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-02-25 14:36:16 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; Comment on attachment 247300 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=247300&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/html/HTMLObjectElement.cpp:126
&gt; &gt; +        } else {
&gt; &gt; +            invalidateRendererOnAttributeChange(name);
&gt; &gt;          }
&gt; 
&gt; We don&apos;t use brackets for single line code blocks.
&gt; 

Done. But I changed the code a little and I combined invalidateRendererOnAttributeChange() in HTMLObjectElement::parseAttribute() as you suggested below.

&gt; &gt; Source/WebCore/html/HTMLObjectElement.cpp:292
&gt; &gt; +void HTMLObjectElement::invalidateRendererOnAttributeChange(const QualifiedName&amp; name)
&gt; &gt; +{
&gt; &gt; +    if (!inDocument() || isImageType() || !renderer())
&gt; &gt; +        return;
&gt; &gt; +
&gt; &gt; +    bool invalidateRenderer = false;
&gt; &gt; +    if (name == typeAttr || name == dataAttr)
&gt; &gt; +        invalidateRenderer = !fastHasAttribute(classidAttr);
&gt; &gt; +    else if (name == classidAttr)
&gt; &gt; +        invalidateRenderer = true;
&gt; &gt; +    else
&gt; &gt; +        ASSERT_NOT_REACHED();
&gt; 
&gt; This function is called from if (name == fooAttr) tests and then it does the
&gt; same tests again. Maybe there is a nicer factoring?

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1072427</commentid>
    <comment_count>13</comment_count>
      <attachid>247346</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-02-26 10:35:10 -0800</bug_when>
    <thetext>Comment on attachment 247346
Patch

Clearing flags on attachment: 247346

Committed r180683: &lt;http://trac.webkit.org/changeset/180683&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1072428</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-02-26 10:35:14 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1073884</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-03 16:59:27 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 142249</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1074592</commentid>
    <comment_count>16</comment_count>
      <attachid>247972</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-03-05 11:13:26 -0800</bug_when>
    <thetext>Created attachment 247972
guarding test case</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1074593</commentid>
    <comment_count>17</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-03-05 11:14:07 -0800</bug_when>
    <thetext>The change I did in HTMLPlugInImageElement::willRecalcStyle() the in http://trac.webkit.org/changeset/180683 was wrong not only because it makes one test flaky https://bugs.webkit.org/show_bug.cgi?id=142249 but because it causes an image object to disappear in some cases. I attached a test case which fails with run-webkit-tests always with the blamed revision. Another way to see the failure is to open the attached page and hover the image object then it will disappear.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1074609</commentid>
    <comment_count>18</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-03-05 11:53:03 -0800</bug_when>
    <thetext>The flakiness was addressed in https://bugs.webkit.org/show_bug.cgi?id=142181</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1074633</commentid>
    <comment_count>19</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-03-05 12:31:15 -0800</bug_when>
    <thetext>The change I did in HTMLPlugInImageElement::willRecalcStyle() the in http://trac.webkit.org/changeset/180683 was wrong not only because it makes one test flaky https://bugs.webkit.org/show_bug.cgi?id=142181 but because it causes an image object to disappear in some cases. I attached a test case which fails with run-webkit-tests always with the blamed revision. Another way to see the failure is to open the attached page and hover the image object then it will disappear.

Now I am going to explain why the test fast/css/acid2-pixel.html became flaky with this change:

--    if (!useFallbackContent() &amp;&amp; needsWidgetUpdate() &amp;&amp; renderer() &amp;&amp; !isImageType() &amp;&amp; (displayState() != DisplayingSnapshot)) 
++    if (!useFallbackContent() &amp;&amp; needsWidgetUpdate() &amp;&amp; renderer() &amp;&amp; (displayState() != DisplayingSnapshot)

In other words I will answer the question why reconstructing the image renderer of an HTMLObjectElement when HTMLPlugInImageElement::willRecalcStyle() is wrong?

Depending on the Change type we pass to setNeedsStyleRecalc() we may ask the element to recreate its renderer. When the StyleRecalc timer fires or when needed, we call resolveTree() to fix the render tree. resolveTree() will call willRecalcStyle() for the dirty element. Calling setNeedsStyleRecalc(ReconstructRenderTree) or recreating the renderer might be okay for some cases but not for the RenderImage case. The RenderImage has two states. The first one is the state when the image data content is not available in which case it does not have an intrinsic size to calculate its bounding box. In this case, it returns only the padding and the border widths as the bounding box and (0, 0) as the client width. The second case when the image data content becomes available. In this case, an intrinsic size is assigned to the RenderImage so it can return the correct bounding box. Switching between these two states happens asynchronously even if the image is in the cache. A request is sent to the resource loader to get the image data content given its url. The resource loader notifies the observers (RenderImage) through CachedImage when the image is available. So if rendering, or dumping the render tree happens before the RenderImage gets notified from the resource loader regarding the availability of the resource, it will displays nothing and will have an empty client rect

If we look at failure diff which happened because of the blamed revision in fast/css/acid2-pixel.html.

   RenderBlock (positioned) {DIV} at (48,72) size 144x24 [bgcolor=#FF0000]
     RenderBlock {DIV} at (0,0) size 144x0
-      RenderInline {OBJECT} at (0,0) size 131x14
-        RenderInline {OBJECT} at (0,0) size 131x14
-          RenderImage {OBJECT} at (13,0) size 131x24 [border: none (12px solid #000000) none]
+      RenderInline {OBJECT} at (0,0) size 35x14
+        RenderInline {OBJECT} at (0,0) size 35x14
+          RenderImage {OBJECT} at (109,24) size 35x0 [border: none (12px solid #000000) none]
     RenderBlock (floating) {DIV} at (0,0) size 144x24 [border: none (12px solid #FF0000) none (12px solid #000000)]
     RenderBlock {DIV} at (0,0) size 144x24 [border: none (24px solid #FFFF00)]
     
The RenderImage in the failed result has size = (35, 0) which is the size of the border and padding set by css. Since the image size = (96, 14), the bounding box size = (131, 14). The expected result for the RenderImage is the final bounding box while the actual result is the bounding box before attaching the image data content to the RenderImage. What happens in this case is we were asked to reconstruct the renderer of the image object and before the new RenderImage corrects its state, we capture the wrong data.

Since dumping the render tree and processing events are done synchronously we should never have asked for reconstructing the renderer of an image objet. If we do so, we are going to get an intermediate state for the RenderImage and most likely we are going to get wrong results. Getting the test flaky represents the case where the dump render tree can get wrong results because it starts by resolving the style tree and immediately starts dumping the render tree. The new attached case represents the case of handling things synchronously. The mouse event for example, resolves the style tree and then the rendering the page happens immediately.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1074646</commentid>
    <comment_count>20</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-03-05 12:48:38 -0800</bug_when>
    <thetext>One last piece of information I would like to include here is the following. When fast/css/acid2-pixel.html fails, HTMLPlugInImageElement::willRecalcStyle() gets called and the following condition evaluates to true only once.

if (!useFallbackContent() &amp;&amp; needsWidgetUpdate() &amp;&amp; renderer() &amp;&amp; (displayState() != DisplayingSnapshot)

Here is the backtrace in this case:

_ZN7WebCore5StyleL11resolveTreeERNS_7ElementERNS_11RenderStyleERNS0_18RenderTreePositionENS0_6ChangeE
_ZN7WebCore5StyleL11resolveTreeERNS_7ElementERNS_11RenderStyleERNS0_18RenderTreePositionENS0_6ChangeE
_ZN7WebCore5StyleL11resolveTreeERNS_7ElementERNS_11RenderStyleERNS0_18RenderTreePositionENS0_6ChangeE
_ZN7WebCore5StyleL11resolveTreeERNS_7ElementERNS_11RenderStyleERNS0_18RenderTreePositionENS0_6ChangeE
_ZN7WebCore5StyleL11resolveTreeERNS_7ElementERNS_11RenderStyleERNS0_18RenderTreePositionENS0_6ChangeE
_ZN7WebCore5StyleL11resolveTreeERNS_7ElementERNS_11RenderStyleERNS0_18RenderTreePositionENS0_6ChangeE
_ZN7WebCore5StyleL11resolveTreeERNS_7ElementERNS_11RenderStyleERNS0_18RenderTreePositionENS0_6ChangeE
_ZN7WebCore5StyleL11resolveTreeERNS_7ElementERNS_11RenderStyleERNS0_18RenderTreePositionENS0_6ChangeE
_ZN7WebCore5Style11resolveTreeERNS_8DocumentENS0_6ChangeE
_ZN7WebCore8Document11recalcStyleENS_5Style6ChangeE
_ZN7WebCore8Document19updateStyleIfNeededEv
_ZN7WebCore9FrameView37updateLayoutAndStyleIfNeededRecursiveEv
-[WebHTMLView(WebInternal) _web_updateLayoutAndStyleIfNeededRecursive]
-[WebHTMLView(WebPrivate) viewWillDraw]
-[NSView viewWillDraw]
-[NSView viewWillDraw]
-[NSScrollView viewWillDraw]
-[NSView viewWillDraw]
-[NSView viewWillDraw]
-[NSView viewWillDraw]
-[NSView viewWillDraw]
-[NSView _sendViewWillDrawInRect:clipRootView:]
-[NSView displayIfNeeded]
_ZL13updateDisplayv
_Z4dumpv
-[FrameLoadDelegate webView:locationChangeDone:forDataSource:]
-[FrameLoadDelegate webView:didFinishLoadForFrame:]
_Z10wtfCallIMPIP11objc_objectJP7WebViewS1_EET_PFvvES1_P13objc_selectorDpT0_
_ZL12CallDelegatePFvvEP7WebViewP11objc_objectP13objc_selectorS4_
_Z21CallFrameLoadDelegatePFvvEP7WebViewP13objc_selectorP11objc_object
_ZN20WebFrameLoaderClient21dispatchDidFinishLoadEv

The only place in resolveTree(), setNeedsStyleRecalc() gets called in the following:

    if (elementNeedingStyleRecalcAffectsNextSiblingElementStyle) {
        if (childElement.styleIsAffectedByPreviousSibling())
            childElement.setNeedsStyleRecalc();
                elementNeedingStyleRecalcAffectsNextSiblingElementStyle = childElement.affectsNextSiblingElementStyle();
    }

But I could not figure out whether setNeedsStyleRecalc() for the image object was called before calling resolveTree or form resolveTree itself.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1074671</commentid>
    <comment_count>21</comment_count>
      <attachid>247992</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-03-05 13:31:41 -0800</bug_when>
    <thetext>Created attachment 247992
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1074690</commentid>
    <comment_count>22</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-03-05 14:32:16 -0800</bug_when>
    <thetext>Calling setNeedsStyleRecalc(ReconstructRenderTree); when one of the following attributes changes dynamically: classic, type and data,  an&apos;t be avoided. If any of these attributes gets changed we need to reconstruct the renderer and to clearUseFallbackContent(). ReconstructRenderTree is a big hammer but it is never used while loading the page.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1075011</commentid>
    <comment_count>23</comment_count>
      <attachid>247992</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-06 10:44:59 -0800</bug_when>
    <thetext>Comment on attachment 247992
Patch

Clearing flags on attachment: 247992

Committed r181168: &lt;http://trac.webkit.org/changeset/181168&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1075012</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-06 10:45:08 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>247171</attachid>
            <date>2015-02-23 17:11:44 -0800</date>
            <delta_ts>2015-02-23 17:11:44 -0800</delta_ts>
            <desc>test case</desc>
            <filename>test070.html</filename>
            <type>text/html</type>
            <size>531</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">PGh0bWw+Cjxib2R5PgogIDxvYmplY3QgaWQ9Im9iamVjdDEiIHR5cGU9ImltYWdlL3N2Zyt4bWwi
IGRhdGE9ImRhdGE6aW1hZ2Uvc3ZnK3htbCwKICAgIDxzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnJyB3aWR0aD0nMTAwJyBoZWlnaHQ9JzEwMCc+CiAgICAgIDxyZWN0IHdpZHRo
PScxMDAlJyBoZWlnaHQ9JzEwMCUnIGZpbGw9J3JlZCcvPgogICAgPC9zdmc+Ij4KICA8L29iamVj
dD4KICA8c2NyaXB0PgogICAgdmFyIG9iamVjdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJv
YmplY3QxIik7CiAgICBvYmplY3Quc2V0QXR0cmlidXRlKCJkYXRhIiwgImRhdGE6aW1hZ2Uvc3Zn
K3htbCwgXAogICAgICAgIDxzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB3
aWR0aD0nMTAwJyBoZWlnaHQ9JzEwMCc+IFwKICAgICAgICAgIDxyZWN0IHdpZHRoPScxMDAlJyBo
ZWlnaHQ9JzEwMCUnIGZpbGw9J2xpbWUnLz4gXAogICAgICAgIDwvc3ZnPiIpOwogIDwvc2NyaXB0
Pgo8L2JvZHk+CjwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>247291</attachid>
            <date>2015-02-24 19:31:47 -0800</date>
            <delta_ts>2015-02-25 13:55:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-141936-20150224193135.patch</filename>
            <type>text/plain</type>
            <size>9398</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MDYwNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDE1LTAyLTI0ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgU2V0dGluZyBh
bnkgb2YgdGhlIDxvYmplY3Q+IGVsZW1lbnQgYXR0cmlidXRlcyBkb2VzIG5vdCBoYXZlIGFueSBh
ZmZlY3QuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NDE5MzYuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
V2hlbiBzZXR0aW5nIGFueSBvZiB0aGUgPG9iamVjdD4gZWxlbWVudCBhdHRyaWJ1dGVzIGR5bmFt
aWNhbGx5IHdlIG5lZWQKKyAgICAgICAgdG8gbWFyayB0aGUgcmVuZGVyZXIgb2YgdGhlIGVsZW1l
bnQgdG8gYmUgZGlydHksIHNvIGl0IGNhbiBiZSByZWNyZWF0ZWQKKyAgICAgICAgd2hlbiBuZWVk
ZWQuCisKKyAgICAgICAgVGVzdDogc3ZnL2FzLW9iamVjdC9zdmctaW4tb2JqZWN0LWR5bmFtaWMt
YXR0cmlidXRlLWNoYW5nZS5odG1sCisKKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgorICAgICAg
ICBEZWxldGUgdW5pbXBsZW1lbnRlZCBmdW5jdGlvbi4KKyAgICAgICAgCisgICAgICAgICogaHRt
bC9IVE1MT2JqZWN0RWxlbWVudC5jcHA6CisgICAgICAgICogaHRtbC9IVE1MT2JqZWN0RWxlbWVu
dC5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9iamVjdEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRl
KToKKyAgICAgICAgQ2FsbCBpbnZhbGlkYXRlUmVuZGVyZXJPbkF0dHJpYnV0ZUNoYW5nZSgpIHRv
IGRpcnR5IHRoZSByZW5kZXJlciBvZiB0aGUKKyAgICAgICAgPG9iamVjdD4gZWxlbWVudC4KKyAg
ICAgICAgCisgICAgICAgIChXZWJDb3JlOjpIVE1MT2JqZWN0RWxlbWVudDo6aW52YWxpZGF0ZVJl
bmRlcmVyT25BdHRyaWJ1dGVDaGFuZ2UpOgorICAgICAgICBEZWNpZGUgd2hlbiB3ZSBuZWVkIHRv
IGNhbGwgc2V0TmVlZHNTdHlsZVJlY2FsYygpIGJhc2VkIG9uIHdoYXQgdGhlIG9iamVjdAorICAg
ICAgICBjb250YWlucy4KKwogMjAxNS0wMi0yNCAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3Jn
PgogCiAgICAgICAgIFtBdHRhY2htZW50XSBHaXZlIDxhdHRhY2htZW50PiBlbGVtZW50cyBhbiB1
bmRlcmx5aW5nIEZpbGUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAkocmV2aXNpb24gMTgwNTIxKQor
KysgU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzEwLDgg
KzMxMCw2IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBjb3B5Tm9uQXR0cmlidXRlUHJv
cGVydGllc0Zyb21FbGVtZW50KGNvbnN0IEVsZW1lbnQmKSB7IH0KIAotICAgIHZvaWQgbGF6eVJl
YXR0YWNoKCk7Ci0KICAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVF
bGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmKTsKICAgICB2aXJ0dWFsIGJvb2wgcmVu
ZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcAkocmV2aXNpb24gMTgwNTIxKQorKysgU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEx
MiwyMCArMTEyLDIyIEBAIHZvaWQgSFRNTE9iamVjdEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGMK
ICAgICBlbHNlIGlmIChuYW1lID09IHR5cGVBdHRyKSB7CiAgICAgICAgIG1fc2VydmljZVR5cGUg
PSB2YWx1ZS5zdHJpbmcoKS5sZWZ0KHZhbHVlLmZpbmQoJzsnKSkubG93ZXIoKTsKICAgICAgICAg
c2V0TmVlZHNXaWRnZXRVcGRhdGUodHJ1ZSk7CisgICAgICAgIGludmFsaWRhdGVSZW5kZXJlck9u
QXR0cmlidXRlQ2hhbmdlKG5hbWUpOwogICAgIH0gZWxzZSBpZiAobmFtZSA9PSBkYXRhQXR0cikg
ewogICAgICAgICBtX3VybCA9IHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyh2YWx1
ZSk7CiAgICAgICAgIHNldE5lZWRzV2lkZ2V0VXBkYXRlKHRydWUpOwogICAgICAgICBkb2N1bWVu
dCgpLnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKLSAgICAgICAgaWYgKHJlbmRlcmVyKCkpIHsKLSAg
ICAgICAgICAgIGlmIChpc0ltYWdlVHlwZSgpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFtX2lt
YWdlTG9hZGVyKQotICAgICAgICAgICAgICAgICAgICBtX2ltYWdlTG9hZGVyID0gc3RkOjptYWtl
X3VuaXF1ZTxIVE1MSW1hZ2VMb2FkZXI+KCp0aGlzKTsKLSAgICAgICAgICAgICAgICBtX2ltYWdl
TG9hZGVyLT51cGRhdGVGcm9tRWxlbWVudElnbm9yaW5nUHJldmlvdXNFcnJvcigpOwotICAgICAg
ICAgICAgfQorICAgICAgICBpZiAocmVuZGVyZXIoKSAmJiBpc0ltYWdlVHlwZSgpKSB7CisgICAg
ICAgICAgICBpZiAoIW1faW1hZ2VMb2FkZXIpCisgICAgICAgICAgICAgICAgbV9pbWFnZUxvYWRl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8SFRNTEltYWdlTG9hZGVyPigqdGhpcyk7CisgICAgICAgICAg
ICBtX2ltYWdlTG9hZGVyLT51cGRhdGVGcm9tRWxlbWVudElnbm9yaW5nUHJldmlvdXNFcnJvcigp
OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaW52YWxpZGF0ZVJlbmRlcmVyT25BdHRy
aWJ1dGVDaGFuZ2UobmFtZSk7CiAgICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKG5hbWUgPT0gY2xh
c3NpZEF0dHIpCisgICAgfSBlbHNlIGlmIChuYW1lID09IGNsYXNzaWRBdHRyKSB7CiAgICAgICAg
IHNldE5lZWRzV2lkZ2V0VXBkYXRlKHRydWUpOwotICAgIGVsc2UgaWYgKG5hbWUgPT0gb25iZWZv
cmVsb2FkQXR0cikKKyAgICAgICAgaW52YWxpZGF0ZVJlbmRlcmVyT25BdHRyaWJ1dGVDaGFuZ2Uo
bmFtZSk7CisgICAgfSBlbHNlIGlmIChuYW1lID09IG9uYmVmb3JlbG9hZEF0dHIpCiAgICAgICAg
IHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmJlZm9yZWxvYWRFdmVudCwg
bmFtZSwgdmFsdWUpOwogICAgIGVsc2UKICAgICAgICAgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6
cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOwpAQCAtMjc2LDYgKzI3OCwyNSBAQCBib29sIEhU
TUxPYmplY3RFbGVtZW50OjpoYXNWYWxpZENsYXNzSWQoCiAgICAgcmV0dXJuIGZhc3RHZXRBdHRy
aWJ1dGUoY2xhc3NpZEF0dHIpLmlzRW1wdHkoKTsKIH0KIAordm9pZCBIVE1MT2JqZWN0RWxlbWVu
dDo6aW52YWxpZGF0ZVJlbmRlcmVyT25BdHRyaWJ1dGVDaGFuZ2UoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgbmFtZSkKK3sKKyAgICBpZiAoIWluRG9jdW1lbnQoKSB8fCBpc0ltYWdlVHlwZSgpIHx8ICFy
ZW5kZXJlcigpKQorICAgICAgICByZXR1cm47CisKKyAgICBib29sIGludmFsaWRhdGVSZW5kZXJl
ciA9IGZhbHNlOworICAgIGlmIChuYW1lID09IHR5cGVBdHRyIHx8IG5hbWUgPT0gZGF0YUF0dHIp
CisgICAgICAgIGludmFsaWRhdGVSZW5kZXJlciA9ICFmYXN0SGFzQXR0cmlidXRlKGNsYXNzaWRB
dHRyKTsKKyAgICBlbHNlIGlmIChuYW1lID09IGNsYXNzaWRBdHRyKQorICAgICAgICBpbnZhbGlk
YXRlUmVuZGVyZXIgPSB0cnVlOworICAgIGVsc2UKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisKKyAgICBpZiAoaW52YWxpZGF0ZVJlbmRlcmVyKSB7CisgICAgICAgIG1fdXNlRmFsbGJh
Y2tDb250ZW50ID0gZmFsc2U7CisgICAgICAgIHNldE5lZWRzU3R5bGVSZWNhbGMoU3ludGhldGlj
U3R5bGVDaGFuZ2UpOworICAgIH0KK30KKwogLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIHVuaWZp
ZWQgd2l0aCBIVE1MRW1iZWRFbGVtZW50Ojp1cGRhdGVXaWRnZXQgYW5kCiAvLyBtb3ZlZCBkb3du
IGludG8gSFRNTFBsdWdpbkltYWdlRWxlbWVudC5jcHAKIHZvaWQgSFRNTE9iamVjdEVsZW1lbnQ6
OnVwZGF0ZVdpZGdldChQbHVnaW5DcmVhdGlvbk9wdGlvbiBwbHVnaW5DcmVhdGlvbk9wdGlvbikK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmgJKHJldmlzaW9uIDE4
MDUyMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtODUsNiArODUsNyBAQCBwcml2YXRlOgogICAgIAogICAgIGJvb2wgc2hvdWxk
QWxsb3dRdWlja1RpbWVDbGFzc0lkUXVpcmsoKTsKICAgICBib29sIGhhc1ZhbGlkQ2xhc3NJZCgp
OworICAgIHZvaWQgaW52YWxpZGF0ZVJlbmRlcmVyT25BdHRyaWJ1dGVDaGFuZ2UoY29uc3QgUXVh
bGlmaWVkTmFtZSYpOwogCiAgICAgdmlydHVhbCB2b2lkIHJlZkZvcm1Bc3NvY2lhdGVkRWxlbWVu
dCgpIG92ZXJyaWRlIHsgcmVmKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGVyZWZGb3JtQXNzb2Np
YXRlZEVsZW1lbnQoKSBvdmVycmlkZSB7IGRlcmVmKCk7IH0KSW5kZXg6IExheW91dFRlc3RzL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4
MDYwNCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDE2IEBACisyMDE1LTAyLTI0ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBs
ZS5jb20+CisKKyAgICAgICAgU2V0dGluZyBhbnkgb2YgdGhlIDxvYmplY3Q+IGVsZW1lbnQgYXR0
cmlidXRlcyBkb2VzIG5vdCBoYXZlIGFueSBhZmZlY3QuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDE5MzYuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdmcvYXMtb2JqZWN0L3N2Zy1pbi1vYmplY3Qt
ZHluYW1pYy1hdHRyaWJ1dGUtY2hhbmdlLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IHN2Zy9hcy1vYmplY3Qvc3ZnLWluLW9iamVjdC1keW5hbWljLWF0dHJpYnV0ZS1jaGFuZ2UuaHRt
bDogQWRkZWQuCisgICAgICAgIEVuc3VyZSB0aGF0IGNoYW5naW5nIHRoZSAndHlwZScgYW5kIHRo
ZSAnZGF0YScgYXR0cmlidXRlcyBvZiB0aGUgPG9iamVjdD4KKyAgICAgICAgZWxlbWVudCB3aWxs
IGhhdmUgdGhlIGV4cGVjdGVkIG91dGNvbWUuIEFsc28gbWFrZSBzdXJlIHdoZW4gd2UgZmFsbGJh
Y2sKKyAgICAgICAgY29ycmVjdGx5IHdoZW4gc2V0dGluZyBhbnkgb2YgdGhlIGF0dHJpYnV0ZXMg
dG8gc29tZSB1bmV4cGVjdGVkIHZhbHVlLgorCiAyMDE1LTAyLTI0ICBTYW0gV2VpbmlnICA8c2Ft
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgW0F0dGFjaG1lbnRdIEdpdmUgPGF0dGFjaG1lbnQ+IGVs
ZW1lbnRzIGFuIHVuZGVybHlpbmcgRmlsZQpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2FzLW9iamVj
dC9zdmctaW4tb2JqZWN0LWR5bmFtaWMtYXR0cmlidXRlLWNoYW5nZS1leHBlY3RlZC5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9hcy1vYmplY3Qvc3ZnLWluLW9iamVjdC1keW5h
bWljLWF0dHJpYnV0ZS1jaGFuZ2UtZXhwZWN0ZWQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL3N2Zy9hcy1vYmplY3Qvc3ZnLWluLW9iamVjdC1keW5hbWljLWF0dHJpYnV0ZS1jaGFu
Z2UtZXhwZWN0ZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE5IEBACis8aHRtbD4K
Kzxib2R5PgorICA8b2JqZWN0IGlkPSJvYmplY3QxIiB0eXBlPSJpbWFnZS9zdmcreG1sIiBkYXRh
PSJkYXRhOmltYWdlL3N2Zyt4bWwsCisgICAgPHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmcnIHdpZHRoPScxMDAnIGhlaWdodD0nMTAwJz4KKyAgICAgIDxyZWN0IHdpZHRoPScx
MDAlJyBoZWlnaHQ9JzEwMCUnIGZpbGw9J2xpbWUnLz4KKyAgICA8L3N2Zz4iPgorICA8L29iamVj
dD4KKyAgPG9iamVjdCBpZD0ib2JqZWN0MiIgdHlwZT0iaW1hZ2Uvc3ZnK3htbCIgZGF0YT0iZGF0
YTppbWFnZS9zdmcreG1sLAorICAgIDxzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnJyB3aWR0aD0nMTAwJyBoZWlnaHQ9JzEwMCc+CisgICAgICA8cmVjdCB3aWR0aD0nMTAwJScg
aGVpZ2h0PScxMDAlJyBmaWxsPSdsaW1lJy8+CisgICAgPC9zdmc+Ij4KKyAgPC9vYmplY3Q+Cisg
IDxvYmplY3QgaWQ9Im9iamVjdDMiIHR5cGU9ImltYWdlL3N2Zyt4bWwiIGRhdGE9ImRhdGE6aW1h
Z2Uvc3ZnK3htbCwKKyAgICA8c3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycg
d2lkdGg9JzEwMCcgaGVpZ2h0PScxMDAnPgorICAgICAgPHJlY3Qgd2lkdGg9JzEwMCUnIGhlaWdo
dD0nMTAwJScgZmlsbD0nbGltZScvPgorICAgIDwvc3ZnPiI+CisgIDwvb2JqZWN0PgorPC9ib2R5
PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2FzLW9iamVjdC9zdmctaW4tb2JqZWN0
LWR5bmFtaWMtYXR0cmlidXRlLWNoYW5nZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L3N2Zy9hcy1vYmplY3Qvc3ZnLWluLW9iamVjdC1keW5hbWljLWF0dHJpYnV0ZS1jaGFuZ2UuaHRt
bAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3N2Zy9hcy1vYmplY3Qvc3ZnLWluLW9iamVj
dC1keW5hbWljLWF0dHJpYnV0ZS1jaGFuZ2UuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDU3IEBACis8aHRtbD4KKzxib2R5PgorICA8b2JqZWN0IGlkPSJvYmplY3QxIiB0eXBlPSJ0ZXh0
IiBkYXRhPSJkYXRhOmltYWdlL3N2Zyt4bWwsCisgICAgPHN2ZyB4bWxucz0naHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmcnIHdpZHRoPScxMDAnIGhlaWdodD0nMTAwJz4KKyAgICAgIDxyZWN0IHdp
ZHRoPScxMDAlJyBoZWlnaHQ9JzEwMCUnIGZpbGw9J2xpbWUnLz4KKyAgICA8L3N2Zz4iPgorICAg
IDxpbWcgc3JjPSJkYXRhOmltYWdlL3N2Zyt4bWwsCisgICAgICA8c3ZnIHhtbG5zPSdodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2Zycgd2lkdGg9JzEwMCcgaGVpZ2h0PScxMDAnPgorICAgICAgICA8
cmVjdCB3aWR0aD0nMTAwJScgaGVpZ2h0PScxMDAlJyBmaWxsPSdyZWQnLz4KKyAgICAgIDwvc3Zn
PiI+CisgIDwvb2JqZWN0PgorICA8b2JqZWN0IGlkPSJvYmplY3QyIiB0eXBlPSJpbWFnZS9zdmcr
eG1sIiBkYXRhPSJkYXRhOmltYWdlL3N2Zyt4bWwsCisgICAgPHN2ZyB4bWxucz0naHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPScxMDAnIGhlaWdodD0nMTAwJz4KKyAgICAgIDxyZWN0
IHdpZHRoPScxMDAlJyBoZWlnaHQ9JzEwMCUnIGZpbGw9J3JlZCcvPgorICAgIDwvc3ZnPiI+Cisg
IDwvb2JqZWN0PgorICA8b2JqZWN0IGlkPSJvYmplY3QzIiB0eXBlPSJpbWFnZS9zdmcreG1sIiBk
YXRhPSJkYXRhOmltYWdlL3N2Zyt4bWwsCisgICAgPHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmcnIHdpZHRoPScxMDAnIGhlaWdodD0nMTAwJz4KKyAgICAgIDxyZWN0IHdpZHRo
PScxMDAlJyBoZWlnaHQ9JzEwMCUnIGZpbGw9J3JlZCcvPgorICAgIDwvc3ZnPiI+CisgICAgPGlt
ZyBzcmM9ImRhdGE6aW1hZ2Uvc3ZnK3htbCwKKyAgICAgIDxzdmcgeG1sbnM9J2h0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnJyB3aWR0aD0nMTAwJyBoZWlnaHQ9JzEwMCc+CisgICAgICAgIDxyZWN0
IHdpZHRoPScxMDAlJyBoZWlnaHQ9JzEwMCUnIGZpbGw9J2xpbWUnLz4KKyAgICAgIDwvc3ZnPiI+
CisgIDwvb2JqZWN0PgorICA8c2NyaXB0PgorICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJs
b2FkIiwgZnVuY3Rpb24oKSB7CisgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAg
IHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworCisgICAgICAvLyBjaGFuZ2UgdGhlICd0eXBl
JyBhdHRyaWJ1dGUKKyAgICAgIHZhciBvYmplY3QxID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
Im9iamVjdDEiKTsKKyAgICAgIG9iamVjdDEuc2V0QXR0cmlidXRlKCJ0eXBlIiwgImltYWdlL3N2
Zyt4bWwiKTsKKworICAgICAgLy8gY2hhbmdlIHRoZSAnZGF0YScgYXR0cmlidXRlCisgICAgICB2
YXIgb2JqZWN0MiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJvYmplY3QyIik7CisgICAgICBv
YmplY3QyLnNldEF0dHJpYnV0ZSgiZGF0YSIsICJkYXRhOmltYWdlL3N2Zyt4bWwsIFwKKyAgICAg
ICAgPHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPScxMDAnIGhl
aWdodD0nMTAwJz4gXAorICAgICAgICAgIDxyZWN0IHdpZHRoPScxMDAlJyBoZWlnaHQ9JzEwMCUn
IGZpbGw9J2xpbWUnLz4gXAorICAgICAgICA8L3N2Zz4iKTsKKworICAgICAgLy8gdGVzdCB0aGUg
ZmFsbGJhY2sKKyAgICAgIHZhciBvYmplY3QzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm9i
amVjdDMiKTsKKyAgICAgIG9iamVjdDMuc2V0QXR0cmlidXRlKCJ0eXBlIiwgInRleHQiKTsKKwor
ICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIC8vIHdpbmRvdyBsb2FkIGV2
ZW50IGZpcmVzIHdoZW4gdGhlIHRoZSBwYWdlIGFuZCBpdHMgcmVzb3VyY2VzIGFyZSBsb2FkZWQu
CisgICAgICAgIC8vIEJ1dCB3ZSBuZWVkIHRvIHdhaXQgYSBsaXR0bGUgYml0IHRpbGwgdGhlIG9i
amVjdDIgbmV3ICdkYXRhJyBhdHRyaWJ1dGUKKyAgICAgICAgLy8gdmFsdWUgaXMgbG9hZGVkIGJl
Zm9yZSB3ZSBjYWxsIG5vdGlmeURvbmUoKS4KKyAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAo
KSB7CisgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgIH0sIDIwMCk7
CisgICAgICB9CisgICAgfSk7CisgIDwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>247300</attachid>
            <date>2015-02-24 20:19:19 -0800</date>
            <delta_ts>2015-02-25 13:55:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-141936-20150224201907.patch</filename>
            <type>text/plain</type>
            <size>9159</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MDYwNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDE1LTAyLTI0ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgU2V0dGluZyBh
bnkgb2YgdGhlIDxvYmplY3Q+IGVsZW1lbnQgYXR0cmlidXRlcyBkb2VzIG5vdCBoYXZlIGFueSBh
ZmZlY3QuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NDE5MzYuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
V2hlbiBzZXR0aW5nIGFueSBvZiB0aGUgPG9iamVjdD4gZWxlbWVudCBhdHRyaWJ1dGVzIGR5bmFt
aWNhbGx5IHdlIG5lZWQKKyAgICAgICAgdG8gbWFyayB0aGUgcmVuZGVyZXIgb2YgdGhlIGVsZW1l
bnQgdG8gYmUgZGlydHksIHNvIGl0IGNhbiBiZSByZWNyZWF0ZWQKKyAgICAgICAgd2hlbiBuZWVk
ZWQuCisKKyAgICAgICAgVGVzdDogc3ZnL2FzLW9iamVjdC9zdmctaW4tb2JqZWN0LWR5bmFtaWMt
YXR0cmlidXRlLWNoYW5nZS5odG1sCisKKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgorICAgICAg
ICBEZWxldGUgdW5pbXBsZW1lbnRlZCBmdW5jdGlvbi4KKyAgICAgICAgCisgICAgICAgICogaHRt
bC9IVE1MT2JqZWN0RWxlbWVudC5jcHA6CisgICAgICAgICogaHRtbC9IVE1MT2JqZWN0RWxlbWVu
dC5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9iamVjdEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRl
KToKKyAgICAgICAgQ2FsbCBpbnZhbGlkYXRlUmVuZGVyZXJPbkF0dHJpYnV0ZUNoYW5nZSgpIHRv
IGRpcnR5IHRoZSByZW5kZXJlciBvZiB0aGUKKyAgICAgICAgPG9iamVjdD4gZWxlbWVudC4KKyAg
ICAgICAgCisgICAgICAgIChXZWJDb3JlOjpIVE1MT2JqZWN0RWxlbWVudDo6aW52YWxpZGF0ZVJl
bmRlcmVyT25BdHRyaWJ1dGVDaGFuZ2UpOgorICAgICAgICBEZWNpZGUgd2hlbiB3ZSBuZWVkIHRv
IGNhbGwgc2V0TmVlZHNTdHlsZVJlY2FsYygpIGJhc2VkIG9uIHdoYXQgdGhlIG9iamVjdAorICAg
ICAgICBjb250YWlucy4KKwogMjAxNS0wMi0yNCAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3Jn
PgogCiAgICAgICAgIFtBdHRhY2htZW50XSBHaXZlIDxhdHRhY2htZW50PiBlbGVtZW50cyBhbiB1
bmRlcmx5aW5nIEZpbGUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAkocmV2aXNpb24gMTgwNTIxKQor
KysgU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzEwLDgg
KzMxMCw2IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBjb3B5Tm9uQXR0cmlidXRlUHJv
cGVydGllc0Zyb21FbGVtZW50KGNvbnN0IEVsZW1lbnQmKSB7IH0KIAotICAgIHZvaWQgbGF6eVJl
YXR0YWNoKCk7Ci0KICAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVF
bGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmKTsKICAgICB2aXJ0dWFsIGJvb2wgcmVu
ZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcAkocmV2aXNpb24gMTgwNTIxKQorKysgU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEx
MiwyMCArMTEyLDIyIEBAIHZvaWQgSFRNTE9iamVjdEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGMK
ICAgICBlbHNlIGlmIChuYW1lID09IHR5cGVBdHRyKSB7CiAgICAgICAgIG1fc2VydmljZVR5cGUg
PSB2YWx1ZS5zdHJpbmcoKS5sZWZ0KHZhbHVlLmZpbmQoJzsnKSkubG93ZXIoKTsKICAgICAgICAg
c2V0TmVlZHNXaWRnZXRVcGRhdGUodHJ1ZSk7CisgICAgICAgIGludmFsaWRhdGVSZW5kZXJlck9u
QXR0cmlidXRlQ2hhbmdlKG5hbWUpOwogICAgIH0gZWxzZSBpZiAobmFtZSA9PSBkYXRhQXR0cikg
ewogICAgICAgICBtX3VybCA9IHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyh2YWx1
ZSk7CiAgICAgICAgIHNldE5lZWRzV2lkZ2V0VXBkYXRlKHRydWUpOwogICAgICAgICBkb2N1bWVu
dCgpLnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKLSAgICAgICAgaWYgKHJlbmRlcmVyKCkpIHsKLSAg
ICAgICAgICAgIGlmIChpc0ltYWdlVHlwZSgpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFtX2lt
YWdlTG9hZGVyKQotICAgICAgICAgICAgICAgICAgICBtX2ltYWdlTG9hZGVyID0gc3RkOjptYWtl
X3VuaXF1ZTxIVE1MSW1hZ2VMb2FkZXI+KCp0aGlzKTsKLSAgICAgICAgICAgICAgICBtX2ltYWdl
TG9hZGVyLT51cGRhdGVGcm9tRWxlbWVudElnbm9yaW5nUHJldmlvdXNFcnJvcigpOwotICAgICAg
ICAgICAgfQorICAgICAgICBpZiAocmVuZGVyZXIoKSAmJiBpc0ltYWdlVHlwZSgpKSB7CisgICAg
ICAgICAgICBpZiAoIW1faW1hZ2VMb2FkZXIpCisgICAgICAgICAgICAgICAgbV9pbWFnZUxvYWRl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8SFRNTEltYWdlTG9hZGVyPigqdGhpcyk7CisgICAgICAgICAg
ICBtX2ltYWdlTG9hZGVyLT51cGRhdGVGcm9tRWxlbWVudElnbm9yaW5nUHJldmlvdXNFcnJvcigp
OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaW52YWxpZGF0ZVJlbmRlcmVyT25BdHRy
aWJ1dGVDaGFuZ2UobmFtZSk7CiAgICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKG5hbWUgPT0gY2xh
c3NpZEF0dHIpCisgICAgfSBlbHNlIGlmIChuYW1lID09IGNsYXNzaWRBdHRyKSB7CiAgICAgICAg
IHNldE5lZWRzV2lkZ2V0VXBkYXRlKHRydWUpOwotICAgIGVsc2UgaWYgKG5hbWUgPT0gb25iZWZv
cmVsb2FkQXR0cikKKyAgICAgICAgaW52YWxpZGF0ZVJlbmRlcmVyT25BdHRyaWJ1dGVDaGFuZ2Uo
bmFtZSk7CisgICAgfSBlbHNlIGlmIChuYW1lID09IG9uYmVmb3JlbG9hZEF0dHIpCiAgICAgICAg
IHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmJlZm9yZWxvYWRFdmVudCwg
bmFtZSwgdmFsdWUpOwogICAgIGVsc2UKICAgICAgICAgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6
cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOwpAQCAtMjc2LDYgKzI3OCwyNSBAQCBib29sIEhU
TUxPYmplY3RFbGVtZW50OjpoYXNWYWxpZENsYXNzSWQoCiAgICAgcmV0dXJuIGZhc3RHZXRBdHRy
aWJ1dGUoY2xhc3NpZEF0dHIpLmlzRW1wdHkoKTsKIH0KIAordm9pZCBIVE1MT2JqZWN0RWxlbWVu
dDo6aW52YWxpZGF0ZVJlbmRlcmVyT25BdHRyaWJ1dGVDaGFuZ2UoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgbmFtZSkKK3sKKyAgICBpZiAoIWluRG9jdW1lbnQoKSB8fCBpc0ltYWdlVHlwZSgpIHx8ICFy
ZW5kZXJlcigpKQorICAgICAgICByZXR1cm47CisKKyAgICBib29sIGludmFsaWRhdGVSZW5kZXJl
ciA9IGZhbHNlOworICAgIGlmIChuYW1lID09IHR5cGVBdHRyIHx8IG5hbWUgPT0gZGF0YUF0dHIp
CisgICAgICAgIGludmFsaWRhdGVSZW5kZXJlciA9ICFmYXN0SGFzQXR0cmlidXRlKGNsYXNzaWRB
dHRyKTsKKyAgICBlbHNlIGlmIChuYW1lID09IGNsYXNzaWRBdHRyKQorICAgICAgICBpbnZhbGlk
YXRlUmVuZGVyZXIgPSB0cnVlOworICAgIGVsc2UKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisKKyAgICBpZiAoaW52YWxpZGF0ZVJlbmRlcmVyKSB7CisgICAgICAgIG1fdXNlRmFsbGJh
Y2tDb250ZW50ID0gZmFsc2U7CisgICAgICAgIHNldE5lZWRzU3R5bGVSZWNhbGMoU3ludGhldGlj
U3R5bGVDaGFuZ2UpOworICAgIH0KK30KKwogLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIHVuaWZp
ZWQgd2l0aCBIVE1MRW1iZWRFbGVtZW50Ojp1cGRhdGVXaWRnZXQgYW5kCiAvLyBtb3ZlZCBkb3du
IGludG8gSFRNTFBsdWdpbkltYWdlRWxlbWVudC5jcHAKIHZvaWQgSFRNTE9iamVjdEVsZW1lbnQ6
OnVwZGF0ZVdpZGdldChQbHVnaW5DcmVhdGlvbk9wdGlvbiBwbHVnaW5DcmVhdGlvbk9wdGlvbikK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmgJKHJldmlzaW9uIDE4
MDUyMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtODUsNiArODUsNyBAQCBwcml2YXRlOgogICAgIAogICAgIGJvb2wgc2hvdWxk
QWxsb3dRdWlja1RpbWVDbGFzc0lkUXVpcmsoKTsKICAgICBib29sIGhhc1ZhbGlkQ2xhc3NJZCgp
OworICAgIHZvaWQgaW52YWxpZGF0ZVJlbmRlcmVyT25BdHRyaWJ1dGVDaGFuZ2UoY29uc3QgUXVh
bGlmaWVkTmFtZSYpOwogCiAgICAgdmlydHVhbCB2b2lkIHJlZkZvcm1Bc3NvY2lhdGVkRWxlbWVu
dCgpIG92ZXJyaWRlIHsgcmVmKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGVyZWZGb3JtQXNzb2Np
YXRlZEVsZW1lbnQoKSBvdmVycmlkZSB7IGRlcmVmKCk7IH0KSW5kZXg6IExheW91dFRlc3RzL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4
MDYwNCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDE2IEBACisyMDE1LTAyLTI0ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBs
ZS5jb20+CisKKyAgICAgICAgU2V0dGluZyBhbnkgb2YgdGhlIDxvYmplY3Q+IGVsZW1lbnQgYXR0
cmlidXRlcyBkb2VzIG5vdCBoYXZlIGFueSBhZmZlY3QuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDE5MzYuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdmcvYXMtb2JqZWN0L3N2Zy1pbi1vYmplY3Qt
ZHluYW1pYy1hdHRyaWJ1dGUtY2hhbmdlLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IHN2Zy9hcy1vYmplY3Qvc3ZnLWluLW9iamVjdC1keW5hbWljLWF0dHJpYnV0ZS1jaGFuZ2UuaHRt
bDogQWRkZWQuCisgICAgICAgIEVuc3VyZSB0aGF0IGNoYW5naW5nIHRoZSAndHlwZScgYW5kIHRo
ZSAnZGF0YScgYXR0cmlidXRlcyBvZiB0aGUgPG9iamVjdD4KKyAgICAgICAgZWxlbWVudCB3aWxs
IGhhdmUgdGhlIGV4cGVjdGVkIG91dGNvbWUuIEFsc28gbWFrZSBzdXJlIHdoZW4gd2UgZmFsbGJh
Y2sKKyAgICAgICAgY29ycmVjdGx5IHdoZW4gc2V0dGluZyBhbnkgb2YgdGhlIGF0dHJpYnV0ZXMg
dG8gc29tZSB1bmV4cGVjdGVkIHZhbHVlLgorCiAyMDE1LTAyLTI0ICBTYW0gV2VpbmlnICA8c2Ft
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgW0F0dGFjaG1lbnRdIEdpdmUgPGF0dGFjaG1lbnQ+IGVs
ZW1lbnRzIGFuIHVuZGVybHlpbmcgRmlsZQpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2FzLW9iamVj
dC9zdmctaW4tb2JqZWN0LWR5bmFtaWMtYXR0cmlidXRlLWNoYW5nZS1leHBlY3RlZC5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9hcy1vYmplY3Qvc3ZnLWluLW9iamVjdC1keW5h
bWljLWF0dHJpYnV0ZS1jaGFuZ2UtZXhwZWN0ZWQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL3N2Zy9hcy1vYmplY3Qvc3ZnLWluLW9iamVjdC1keW5hbWljLWF0dHJpYnV0ZS1jaGFu
Z2UtZXhwZWN0ZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE5IEBACis8aHRtbD4K
Kzxib2R5PgorICA8b2JqZWN0IGlkPSJvYmplY3QxIiB0eXBlPSJpbWFnZS9zdmcreG1sIiBkYXRh
PSJkYXRhOmltYWdlL3N2Zyt4bWwsCisgICAgPHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmcnIHdpZHRoPScxMDAnIGhlaWdodD0nMTAwJz4KKyAgICAgIDxyZWN0IHdpZHRoPScx
MDAlJyBoZWlnaHQ9JzEwMCUnIGZpbGw9J2xpbWUnLz4KKyAgICA8L3N2Zz4iPgorICA8L29iamVj
dD4KKyAgPG9iamVjdCBpZD0ib2JqZWN0MiIgdHlwZT0iaW1hZ2Uvc3ZnK3htbCIgZGF0YT0iZGF0
YTppbWFnZS9zdmcreG1sLAorICAgIDxzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnJyB3aWR0aD0nMTAwJyBoZWlnaHQ9JzEwMCc+CisgICAgICA8cmVjdCB3aWR0aD0nMTAwJScg
aGVpZ2h0PScxMDAlJyBmaWxsPSdsaW1lJy8+CisgICAgPC9zdmc+Ij4KKyAgPC9vYmplY3Q+Cisg
IDxvYmplY3QgaWQ9Im9iamVjdDMiIHR5cGU9ImltYWdlL3N2Zyt4bWwiIGRhdGE9ImRhdGE6aW1h
Z2Uvc3ZnK3htbCwKKyAgICA8c3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycg
d2lkdGg9JzEwMCcgaGVpZ2h0PScxMDAnPgorICAgICAgPHJlY3Qgd2lkdGg9JzEwMCUnIGhlaWdo
dD0nMTAwJScgZmlsbD0nbGltZScvPgorICAgIDwvc3ZnPiI+CisgIDwvb2JqZWN0PgorPC9ib2R5
PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2FzLW9iamVjdC9zdmctaW4tb2JqZWN0
LWR5bmFtaWMtYXR0cmlidXRlLWNoYW5nZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L3N2Zy9hcy1vYmplY3Qvc3ZnLWluLW9iamVjdC1keW5hbWljLWF0dHJpYnV0ZS1jaGFuZ2UuaHRt
bAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3N2Zy9hcy1vYmplY3Qvc3ZnLWluLW9iamVj
dC1keW5hbWljLWF0dHJpYnV0ZS1jaGFuZ2UuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDUzIEBACis8aHRtbD4KKzxib2R5PgorICA8b2JqZWN0IGlkPSJvYmplY3QxIiB0eXBlPSJ0ZXh0
IiBkYXRhPSJkYXRhOmltYWdlL3N2Zyt4bWwsCisgICAgPHN2ZyB4bWxucz0naHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmcnIHdpZHRoPScxMDAnIGhlaWdodD0nMTAwJz4KKyAgICAgIDxyZWN0IHdp
ZHRoPScxMDAlJyBoZWlnaHQ9JzEwMCUnIGZpbGw9J2xpbWUnLz4KKyAgICA8L3N2Zz4iPgorICAg
IDxpbWcgc3JjPSJkYXRhOmltYWdlL3N2Zyt4bWwsCisgICAgICA8c3ZnIHhtbG5zPSdodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2Zycgd2lkdGg9JzEwMCcgaGVpZ2h0PScxMDAnPgorICAgICAgICA8
cmVjdCB3aWR0aD0nMTAwJScgaGVpZ2h0PScxMDAlJyBmaWxsPSdyZWQnLz4KKyAgICAgIDwvc3Zn
PiI+CisgIDwvb2JqZWN0PgorICA8b2JqZWN0IGlkPSJvYmplY3QyIiB0eXBlPSJpbWFnZS9zdmcr
eG1sIiBkYXRhPSJkYXRhOmltYWdlL3N2Zyt4bWwsCisgICAgPHN2ZyB4bWxucz0naHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPScxMDAnIGhlaWdodD0nMTAwJz4KKyAgICAgIDxyZWN0
IHdpZHRoPScxMDAlJyBoZWlnaHQ9JzEwMCUnIGZpbGw9J3JlZCcvPgorICAgIDwvc3ZnPiI+Cisg
IDwvb2JqZWN0PgorICA8b2JqZWN0IGlkPSJvYmplY3QzIiB0eXBlPSJpbWFnZS9zdmcreG1sIiBk
YXRhPSJkYXRhOmltYWdlL3N2Zyt4bWwsCisgICAgPHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmcnIHdpZHRoPScxMDAnIGhlaWdodD0nMTAwJz4KKyAgICAgIDxyZWN0IHdpZHRo
PScxMDAlJyBoZWlnaHQ9JzEwMCUnIGZpbGw9J3JlZCcvPgorICAgIDwvc3ZnPiI+CisgICAgPGlt
ZyBzcmM9ImRhdGE6aW1hZ2Uvc3ZnK3htbCwKKyAgICAgIDxzdmcgeG1sbnM9J2h0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnJyB3aWR0aD0nMTAwJyBoZWlnaHQ9JzEwMCc+CisgICAgICAgIDxyZWN0
IHdpZHRoPScxMDAlJyBoZWlnaHQ9JzEwMCUnIGZpbGw9J2xpbWUnLz4KKyAgICAgIDwvc3ZnPiI+
CisgIDwvb2JqZWN0PgorICA8c2NyaXB0PgorICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJs
b2FkIiwgZnVuY3Rpb24oKSB7CisgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAg
IHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworCisgICAgICAvLyBjaGFuZ2UgdGhlICd0eXBl
JyBhdHRyaWJ1dGUKKyAgICAgIHZhciBvYmplY3QxID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
Im9iamVjdDEiKTsKKyAgICAgIG9iamVjdDEuc2V0QXR0cmlidXRlKCJ0eXBlIiwgImltYWdlL3N2
Zyt4bWwiKTsKKworICAgICAgLy8gY2hhbmdlIHRoZSAnZGF0YScgYXR0cmlidXRlCisgICAgICB2
YXIgb2JqZWN0MiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJvYmplY3QyIik7CisgICAgICBv
YmplY3QyLnNldEF0dHJpYnV0ZSgiZGF0YSIsICJkYXRhOmltYWdlL3N2Zyt4bWwsIFwKKyAgICAg
ICAgPHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPScxMDAnIGhl
aWdodD0nMTAwJz4gXAorICAgICAgICAgIDxyZWN0IHdpZHRoPScxMDAlJyBoZWlnaHQ9JzEwMCUn
IGZpbGw9J2xpbWUnLz4gXAorICAgICAgICA8L3N2Zz4iKTsKKworICAgICAgb2JqZWN0Mi5vbmxv
YWQgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAg
ICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgfQorCisgICAgICAvLyB0ZXN0IHRo
ZSBmYWxsYmFjaworICAgICAgdmFyIG9iamVjdDMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
b2JqZWN0MyIpOworICAgICAgb2JqZWN0My5zZXRBdHRyaWJ1dGUoInR5cGUiLCAidGV4dCIpOwor
ICAgIH0pOworICA8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>247344</attachid>
            <date>2015-02-25 13:55:11 -0800</date>
            <delta_ts>2015-02-25 14:01:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-141936-20150225135458.patch</filename>
            <type>text/plain</type>
            <size>13685</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MDYzMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM2IEBACisyMDE1LTAyLTI1ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgU2V0dGluZyBh
bnkgb2YgdGhlIDxvYmplY3Q+IGVsZW1lbnQgcGx1Z2luIGNvbnRyb2xsaW5nIGF0dHJpYnV0ZXMg
ZG9lcyBub3QgaGF2ZSBhbnkgYWZmZWN0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTQxOTM2LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFdoZW4gc2V0dGluZyBhbnkgb2YgdGhlIDxvYmplY3Q+IGVsZW1l
bnQgcGx1Z2luIGNvbnRyb2xsaW5nIGF0dHJpYnV0ZXMKKyAgICAgICAgZHluYW1pY2FsbHkgd2Ug
bmVlZCB0byBtYXJrIHRoZSB0aGUgZWxlbWVudCB0byBiZSBkaXJ0eSBieSBjYWxsaW5nCisgICAg
ICAgIHNldE5lZWRzU3R5bGVSZWNhbGMoKSwgc28gaXQgaGFzIHRvIHJlY3JlYXRlIGl0cyByZW5k
ZXJlciB3aGVuIG5lZWRlZC4KKyAgICAgICAgCisgICAgICAgIFRlc3Q6IHN2Zy9hcy1vYmplY3Qv
c3ZnLWluLW9iamVjdC1keW5hbWljLWF0dHJpYnV0ZS1jaGFuZ2UuaHRtbAorCisgICAgICAgICog
ZG9tL0VsZW1lbnQuaDogRGVsZXRlIHVuaW1wbGVtZW50ZWQgZnVuY3Rpb24uCisgICAgICAgIAor
ICAgICAgICAqIGh0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE9iamVjdEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKTogRGlydHkgdGhlIGVsZW1lbnQgYnkg
Y2FsbGluZworICAgICAgICBpbnZhbGlkYXRlUmVuZGVyZXJJZk5lZWRlZCgpIHdoZW4gb25lIG9m
IHRoZSBwbHVnaW4gY29udHJvbGxpbmcgYXR0cmlidXRlcworICAgICAgICBnZXRzIGNoYW5nZWQu
CisgICAgICAgIAorICAgICAgICAoV2ViQ29yZTo6SFRNTE9iamVjdEVsZW1lbnQ6OmludmFsaWRh
dGVSZW5kZXJlcklmTmVlZGVkKTogRGVjaWRlIHdoZW4gd2UKKyAgICAgICAgbmVlZCB0byBjYWxs
IHNldE5lZWRzU3R5bGVSZWNhbGMoKSBiYXNlZCBvbiB3aGF0IHRoZSBvYmplY3QgY29udGFpbnMu
IFdlCisgICAgICAgIGhhdmUgdG8gY2xlYXIgdGhlIG1fdXNlRmFsbGJhY2tDb250ZW50IGJlY2F1
c2UgdGhlIGF0dHJpYnV0ZSdzIG5ldyBjaGFuZ2UKKyAgICAgICAgbWlnaHQgZml4IHRoZSBvYmpl
Y3QgcmVuZGVyaW5nLgorICAgICAgICAKKyAgICAgICAgKiBodG1sL0hUTUxPYmplY3RFbGVtZW50
Lmg6IEFkZCBhIGZ1bmN0aW9uIHRvIGNsZWFyIG1fdXNlRmFsbGJhY2tDb250ZW50LgorICAgICAg
ICAKKyAgICAgICAgKiBodG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFBsdWdJbkltYWdlRWxlbWVudDo6d2lsbFJlY2FsY1N0eWxlKTogV2UgbWln
aHQgbmVlZCB0byAKKyAgICAgICAgcmVjb25zdHJ1Y3QgdGhlIG9iamVjdCByZW5kZXJlciBpbiB0
aGUgaW1hZ2UgY2FzZS4gVGhpcyBjYW4gaGFwcGVuIGlmIHRoZQorICAgICAgICBpbWFnZSB3YXMg
cmVuZGVyaW5nIGZhbGxiYWNrIGNvbnRlbnQgYW5kIHRoZSBhdHRyaWJ1dGUncyBuZXcgY2hhbmdl
IGZpeGVzCisgICAgICAgIHRoZSBvYmplY3QgcmVuZGVyaW5nLgorCiAyMDE1LTAyLTI1ICBSeW9z
dWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIEhUTUxFbGVtZW50Ojpjb2xs
ZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUgZHVwbGljYXRlcyBhIGxvdCBvZiBjb2Rl
IGZvciBjb250ZW50RWRpdGFibGVBdHRyCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgJKHJldmlzaW9u
IDE4MDUyMSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTMxMCw4ICszMTAsNiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgY29weU5vbkF0
dHJpYnV0ZVByb3BlcnRpZXNGcm9tRWxlbWVudChjb25zdCBFbGVtZW50JikgeyB9CiAKLSAgICB2
b2lkIGxhenlSZWF0dGFjaCgpOwotCiAgICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVu
dD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJik7CiAgICAgdmlydHVh
bCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmKTsKIApJbmRleDogU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAJKHJldmlzaW9uIDE4MDUyMSkK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMTIsMjAgKzExMiwyMSBAQCB2b2lkIEhUTUxPYmplY3RFbGVtZW50OjpwYXJzZUF0
dHJpYnV0ZShjCiAgICAgZWxzZSBpZiAobmFtZSA9PSB0eXBlQXR0cikgewogICAgICAgICBtX3Nl
cnZpY2VUeXBlID0gdmFsdWUuc3RyaW5nKCkubGVmdCh2YWx1ZS5maW5kKCc7JykpLmxvd2VyKCk7
CiAgICAgICAgIHNldE5lZWRzV2lkZ2V0VXBkYXRlKHRydWUpOworICAgICAgICBpbnZhbGlkYXRl
UmVuZGVyZXJJZk5lZWRlZCghZmFzdEhhc0F0dHJpYnV0ZShjbGFzc2lkQXR0cikpOwogICAgIH0g
ZWxzZSBpZiAobmFtZSA9PSBkYXRhQXR0cikgewogICAgICAgICBtX3VybCA9IHN0cmlwTGVhZGlu
Z0FuZFRyYWlsaW5nSFRNTFNwYWNlcyh2YWx1ZSk7Ci0gICAgICAgIHNldE5lZWRzV2lkZ2V0VXBk
YXRlKHRydWUpOwogICAgICAgICBkb2N1bWVudCgpLnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKLSAg
ICAgICAgaWYgKHJlbmRlcmVyKCkpIHsKLSAgICAgICAgICAgIGlmIChpc0ltYWdlVHlwZSgpKSB7
Ci0gICAgICAgICAgICAgICAgaWYgKCFtX2ltYWdlTG9hZGVyKQotICAgICAgICAgICAgICAgICAg
ICBtX2ltYWdlTG9hZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxIVE1MSW1hZ2VMb2FkZXI+KCp0aGlz
KTsKLSAgICAgICAgICAgICAgICBtX2ltYWdlTG9hZGVyLT51cGRhdGVGcm9tRWxlbWVudElnbm9y
aW5nUHJldmlvdXNFcnJvcigpOwotICAgICAgICAgICAgfQorICAgICAgICBpZiAoaXNJbWFnZVR5
cGUoKSAmJiByZW5kZXJlcigpKSB7CisgICAgICAgICAgICBpZiAoIW1faW1hZ2VMb2FkZXIpCisg
ICAgICAgICAgICAgICAgbV9pbWFnZUxvYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8SFRNTEltYWdl
TG9hZGVyPigqdGhpcyk7CisgICAgICAgICAgICBtX2ltYWdlTG9hZGVyLT51cGRhdGVGcm9tRWxl
bWVudElnbm9yaW5nUHJldmlvdXNFcnJvcigpOwogICAgICAgICB9Ci0gICAgfSBlbHNlIGlmIChu
YW1lID09IGNsYXNzaWRBdHRyKQogICAgICAgICBzZXROZWVkc1dpZGdldFVwZGF0ZSh0cnVlKTsK
LSAgICBlbHNlIGlmIChuYW1lID09IG9uYmVmb3JlbG9hZEF0dHIpCisgICAgICAgIGludmFsaWRh
dGVSZW5kZXJlcklmTmVlZGVkKCFmYXN0SGFzQXR0cmlidXRlKGNsYXNzaWRBdHRyKSk7CisgICAg
fSBlbHNlIGlmIChuYW1lID09IGNsYXNzaWRBdHRyKSB7CisgICAgICAgIHNldE5lZWRzV2lkZ2V0
VXBkYXRlKHRydWUpOworICAgICAgICBpbnZhbGlkYXRlUmVuZGVyZXJJZk5lZWRlZCh0cnVlKTsK
KyAgICB9IGVsc2UgaWYgKG5hbWUgPT0gb25iZWZvcmVsb2FkQXR0cikKICAgICAgICAgc2V0QXR0
cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuYmVmb3JlbG9hZEV2ZW50LCBuYW1lLCB2
YWx1ZSk7CiAgICAgZWxzZQogICAgICAgICBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpwYXJzZUF0
dHJpYnV0ZShuYW1lLCB2YWx1ZSk7CkBAIC0yNzYsNiArMjc3LDE1IEBAIGJvb2wgSFRNTE9iamVj
dEVsZW1lbnQ6Omhhc1ZhbGlkQ2xhc3NJZCgKICAgICByZXR1cm4gZmFzdEdldEF0dHJpYnV0ZShj
bGFzc2lkQXR0cikuaXNFbXB0eSgpOwogfQogCit2b2lkIEhUTUxPYmplY3RFbGVtZW50OjppbnZh
bGlkYXRlUmVuZGVyZXJJZk5lZWRlZChib29sIGludmFsaWRhdGVSZW5kZXJlcikKK3sKKyAgICBp
ZiAoIWludmFsaWRhdGVSZW5kZXJlciB8fCAhaW5Eb2N1bWVudCgpIHx8ICFyZW5kZXJlcigpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBjbGVhclVzZUZhbGxiYWNrQ29udGVudCgpOworICAgIHNl
dE5lZWRzU3R5bGVSZWNhbGMoU3ludGhldGljU3R5bGVDaGFuZ2UpOworfQorCiAvLyBGSVhNRTog
VGhpcyBzaG91bGQgYmUgdW5pZmllZCB3aXRoIEhUTUxFbWJlZEVsZW1lbnQ6OnVwZGF0ZVdpZGdl
dCBhbmQKIC8vIG1vdmVkIGRvd24gaW50byBIVE1MUGx1Z2luSW1hZ2VFbGVtZW50LmNwcAogdm9p
ZCBIVE1MT2JqZWN0RWxlbWVudDo6dXBkYXRlV2lkZ2V0KFBsdWdpbkNyZWF0aW9uT3B0aW9uIHBs
dWdpbkNyZWF0aW9uT3B0aW9uKQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0
RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVs
ZW1lbnQuaAkocmV2aXNpb24gMTgwNTIxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2Jq
ZWN0RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC04NSw2ICs4NSw4IEBAIHByaXZhdGU6CiAg
ICAgCiAgICAgYm9vbCBzaG91bGRBbGxvd1F1aWNrVGltZUNsYXNzSWRRdWlyaygpOwogICAgIGJv
b2wgaGFzVmFsaWRDbGFzc0lkKCk7CisgICAgdm9pZCBjbGVhclVzZUZhbGxiYWNrQ29udGVudCgp
IHsgbV91c2VGYWxsYmFja0NvbnRlbnQgPSBmYWxzZTsgfQorICAgIHZvaWQgaW52YWxpZGF0ZVJl
bmRlcmVySWZOZWVkZWQoYm9vbCBpbnZhbGlkYXRlUmVuZGVyZXIpOwogCiAgICAgdmlydHVhbCB2
b2lkIHJlZkZvcm1Bc3NvY2lhdGVkRWxlbWVudCgpIG92ZXJyaWRlIHsgcmVmKCk7IH0KICAgICB2
aXJ0dWFsIHZvaWQgZGVyZWZGb3JtQXNzb2NpYXRlZEVsZW1lbnQoKSBvdmVycmlkZSB7IGRlcmVm
KCk7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVt
ZW50LmNwcAkocmV2aXNpb24gMTgwNTIxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1
Z0luSW1hZ2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM3LDcgKzIzNyw3IEBAIGJv
b2wgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6d2lsbFJlY2FsY1MKIAogICAgIC8vIEZJWE1FOiBU
aGVyZSBzaG91ZG4ndCBiZSBuZWVkIHRvIGZvcmNlIHJlbmRlciB0cmVlIHJlY29uc3RydWN0aW9u
IGhlcmUuCiAgICAgLy8gSXQgaXMgb25seSBkb25lIGJlY2F1c2UgbG9hZGluZyBhbmQgbG9hZCBl
dmVudCBkaXNwYXRjaGluZyBpcyB0aWVkIHRvIHJlbmRlciB0cmVlIGNvbnN0cnVjdGlvbi4KLSAg
ICBpZiAoIXVzZUZhbGxiYWNrQ29udGVudCgpICYmIG5lZWRzV2lkZ2V0VXBkYXRlKCkgJiYgcmVu
ZGVyZXIoKSAmJiAhaXNJbWFnZVR5cGUoKSAmJiAoZGlzcGxheVN0YXRlKCkgIT0gRGlzcGxheWlu
Z1NuYXBzaG90KSkKKyAgICBpZiAoIXVzZUZhbGxiYWNrQ29udGVudCgpICYmIG5lZWRzV2lkZ2V0
VXBkYXRlKCkgJiYgcmVuZGVyZXIoKSAmJiAoZGlzcGxheVN0YXRlKCkgIT0gRGlzcGxheWluZ1Nu
YXBzaG90KSkKICAgICAgICAgc2V0TmVlZHNTdHlsZVJlY2FsYyhSZWNvbnN0cnVjdFJlbmRlclRy
ZWUpOwogICAgIHJldHVybiB0cnVlOwogfQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTgwNjMzKQorKysg
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIw
MTUtMDItMjUgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKwor
ICAgICAgICBTZXR0aW5nIGFueSBvZiB0aGUgPG9iamVjdD4gZWxlbWVudCBwbHVnaW4gY29udHJv
bGxpbmcgYXR0cmlidXRlcyBkb2VzIG5vdCBoYXZlIGFueSBhZmZlY3QuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDE5MzYuCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdmcvYXMtb2JqZWN0L3Jlc291
cmNlcy9saW1lMTAweDEwMC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvYXMtb2JqZWN0L3Jl
c291cmNlcy9saW1lMTAweDEwMC5wbmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy9hcy1vYmplY3Qv
cmVzb3VyY2VzL2xpbWUxMDB4MTAwLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL2FzLW9iamVj
dC9yZXNvdXJjZXMvcmVkMTAweDEwMC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy9hcy1vYmpl
Y3Qvc3ZnLWluLW9iamVjdC1keW5hbWljLWF0dHJpYnV0ZS1jaGFuZ2UtZXhwZWN0ZWQuaHRtbDog
QWRkZWQuCisgICAgICAgICogc3ZnL2FzLW9iamVjdC9zdmctaW4tb2JqZWN0LWR5bmFtaWMtYXR0
cmlidXRlLWNoYW5nZS5odG1sOiBBZGRlZC4KKyAgICAgICAgRW5zdXJlIHRoYXQgY2hhbmdpbmcg
dGhlICd0eXBlJyBhbmQgdGhlICdkYXRhJyBhdHRyaWJ1dGVzIG9mIHRoZSA8b2JqZWN0PgorICAg
ICAgICBlbGVtZW50IHdpbGwgaGF2ZSB0aGUgZXhwZWN0ZWQgb3V0Y29tZS4gQWxzbyBtYWtlIHN1
cmUgdGhhdCB0aGUgPG9iamVjdD4KKyAgICAgICAgZWxlbWVudCByZW5kZXJlciBmYWxscyBiYWNr
IGNvcnJlY3RseSB3aGVuIHNldHRpbmcgYW55IG9mIHRoZSBhdHRyaWJ1dGVzCisgICAgICAgIHRv
IHNvbWUgdW5leHBlY3RlZCB2YWx1ZS4KKwogMjAxNS0wMi0yNSAgQnJhZHkgRWlkc29uICA8YmVp
ZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgTGF5b3V0IHRlc3Qgc3VwcG9ydCBmb3IgdXNlciBj
b250ZW50IGZpbHRlcnMKSW5kZXg6IExheW91dFRlc3RzL3N2Zy9hcy1vYmplY3Qvc3ZnLWluLW9i
amVjdC1keW5hbWljLWF0dHJpYnV0ZS1jaGFuZ2UtZXhwZWN0ZWQuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9zdmcvYXMtb2JqZWN0L3N2Zy1pbi1vYmplY3QtZHluYW1pYy1hdHRyaWJ1
dGUtY2hhbmdlLWV4cGVjdGVkLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9zdmcv
YXMtb2JqZWN0L3N2Zy1pbi1vYmplY3QtZHluYW1pYy1hdHRyaWJ1dGUtY2hhbmdlLWV4cGVjdGVk
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyMSBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorICA8c3R5bGU+CisgICAgZGl2IHsKKyAgICAgICAgd2lkdGg6IDEwMHB4
OworICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBsaW1l
OworICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgfQorICA8L3N0eWxlPgorPC9o
ZWFkPgorPGJvZHk+CisgIDxkaXY+PC9kaXY+CisgIDxkaXY+PC9kaXY+CisgIDxkaXY+PC9kaXY+
CisgIDxkaXY+PC9kaXY+CisgIDxkaXY+PC9kaXY+CisgIDxkaXY+PC9kaXY+Cis8L2JvZHk+Cis8
L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvYXMtb2JqZWN0L3N2Zy1pbi1vYmplY3QtZHlu
YW1pYy1hdHRyaWJ1dGUtY2hhbmdlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3Zn
L2FzLW9iamVjdC9zdmctaW4tb2JqZWN0LWR5bmFtaWMtYXR0cmlidXRlLWNoYW5nZS5odG1sCShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvc3ZnL2FzLW9iamVjdC9zdmctaW4tb2JqZWN0LWR5
bmFtaWMtYXR0cmlidXRlLWNoYW5nZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzAg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKyAgPG9iamVjdCBpZD0ib2JqZWN0
MSIgZGF0YT0icmVzb3VyY2VzL2xpbWUxMDB4MTAwLnN2ZyI+CisgICAgPGltZyBzcmM9InJlc291
cmNlcy9yZWQxMDB4MTAwLnN2ZyI+CisgIDwvb2JqZWN0PgorICA8b2JqZWN0IGlkPSJvYmplY3Qy
IiB0eXBlPSJpbWFnZS9zdmcreG1sIiBkYXRhPSJyZXNvdXJjZXMvcmVkMTAweDEwMC5zdmciPgor
ICAgIDxpbWcgc3JjPSJyZXNvdXJjZXMvcmVkMTAweDEwMC5zdmciPgorICA8L29iamVjdD4KKyAg
PG9iamVjdCB3aWR0aD0iMTAwcHgiIGhlaWdodD0iMTAwcHgiIGlkPSJvYmplY3QzIj4KKyAgICA8
aW1nIHNyYz0icmVzb3VyY2VzL3JlZDEwMHgxMDAuc3ZnIj4KKyAgPC9vYmplY3Q+CisgIDxvYmpl
Y3QgaWQ9Im9iamVjdDQiIHR5cGU9ImR1bW15Ij4KKyAgICA8aW1nIHNyYz0icmVzb3VyY2VzL3Jl
ZDEwMHgxMDAuc3ZnIj4KKyAgPC9vYmplY3Q+CisgIDxvYmplY3QgaWQ9Im9iamVjdDUiIHR5cGU9
ImR1bW15Ij4KKyAgICA8aW1nIHNyYz0icmVzb3VyY2VzL3JlZDEwMHgxMDAuc3ZnIj4KKyAgPC9v
YmplY3Q+CisgIDxvYmplY3QgaWQ9Im9iamVjdDYiIHR5cGU9ImltYWdlL3N2Zyt4bWwiIGRhdGE9
InJlc291cmNlcy9yZWQxMDB4MTAwLnN2ZyI+CisgICAgPGltZyBzcmM9InJlc291cmNlcy9saW1l
MTAweDEwMC5zdmciPgorICA8L29iamVjdD4KKyAgPHNjcmlwdD4KKyAgICBmdW5jdGlvbiBvbk9i
amVjdExvYWQoKSB7CisgICAgICBpZiAoIXdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICByZXR1
cm47CisgICAgICAgIAorICAgICAgaWYgKHR5cGVvZiBvbk9iamVjdExvYWQuY291bnRlciA9PSAn
dW5kZWZpbmVkJykKKyAgICAgICAgb25PYmplY3RMb2FkLmNvdW50ZXIgPSAwOworICAgIAorICAg
ICAgaWYgKCsrb25PYmplY3RMb2FkLmNvdW50ZXIgPT0gNCkKKyAgICAgICAgdGVzdFJ1bm5lci5u
b3RpZnlEb25lKCk7CisgICAgfQorIAorICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJsb2Fk
IiwgZnVuY3Rpb24oKSB7CisgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRl
c3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworCisgICAgICAvLyBjaGFuZ2UgdGhlICd0eXBlJyBh
dHRyaWJ1dGUKKyAgICAgIHZhciBvYmplY3QxID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm9i
amVjdDEiKTsKKyAgICAgIG9iamVjdDEuc2V0QXR0cmlidXRlKCJ0eXBlIiwgImltYWdlL3N2Zyt4
bWwiKTsKKworICAgICAgLy8gY2hhbmdlIHRoZSAnZGF0YScgYXR0cmlidXRlCisgICAgICB2YXIg
b2JqZWN0MiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJvYmplY3QyIik7CisgICAgICBvYmpl
Y3QyLm9ubG9hZCA9IG9uT2JqZWN0TG9hZDsKKyAgICAgIG9iamVjdDIuc2V0QXR0cmlidXRlKCJk
YXRhIiwgInJlc291cmNlcy9saW1lMTAweDEwMC5zdmciKTsKKworICAgICAgLy8gY2hhbmdlIHRo
ZSAnZGF0YScgYXR0cmlidXRlCisgICAgICB2YXIgb2JqZWN0MyA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJvYmplY3QzIik7CisgICAgICBvYmplY3QzLm9ubG9hZCA9IG9uT2JqZWN0TG9hZDsK
KyAgICAgIG9iamVjdDMuc2V0QXR0cmlidXRlKCJkYXRhIiwgInJlc291cmNlcy9saW1lMTAweDEw
MC5odG1sIik7CisKKyAgICAgIC8vIGNoYW5nZSB0aGUgJ3R5cGUnIHRoZW4gdGhlICdkYXRhJyBh
dHRyaWJ1dGVzIG9mIGFuIGltYWdlIG9iamVjdAorICAgICAgdmFyIG9iamVjdDQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgib2JqZWN0NCIpOworICAgICAgb2JqZWN0NC5vbmxvYWQgPSBvbk9i
amVjdExvYWQ7CisgICAgICBvYmplY3Q0LnNldEF0dHJpYnV0ZSgidHlwZSIsICJpbWFnZS9wbmci
KTsKKyAgICAgIG9iamVjdDQuc2V0QXR0cmlidXRlKCJkYXRhIiwgInJlc291cmNlcy9saW1lMTAw
eDEwMC5wbmciKTsKKworICAgICAgLy8gY2hhbmdlIHRoZSAnZGF0YScgdGhlbiB0aGUgJ3R5cGUn
IGF0dHJpYnV0ZXMgb2YgYW4gaW1hZ2Ugb2JqZWN0CisgICAgICB2YXIgb2JqZWN0NSA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJvYmplY3Q1Iik7CisgICAgICBvYmplY3Q1Lm9ubG9hZCA9IG9u
T2JqZWN0TG9hZDsKKyAgICAgIG9iamVjdDUuc2V0QXR0cmlidXRlKCJkYXRhIiwgInJlc291cmNl
cy9saW1lMTAweDEwMC5wbmciKTsKKyAgICAgIG9iamVjdDUuc2V0QXR0cmlidXRlKCJ0eXBlIiwg
ImltYWdlL3BuZyIpOworCisgICAgICAvLyBvYmplY3QgcmVkZXJlciBmYWxsYmFjaworICAgICAg
dmFyIG9iamVjdDYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgib2JqZWN0NiIpOworICAgICAg
b2JqZWN0Ni5zZXRBdHRyaWJ1dGUoInR5cGUiLCAiZHVtbXkiKTsKKyAgICB9KTsKKyAgPC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvYXMtb2JqZWN0L3Jl
c291cmNlcy9saW1lMTAweDEwMC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9h
cy1vYmplY3QvcmVzb3VyY2VzL2xpbWUxMDB4MTAwLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9zdmcvYXMtb2JqZWN0L3Jlc291cmNlcy9saW1lMTAweDEwMC5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMTQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4K
KyAgPHN0eWxlPgorICAgIGh0bWwsIGJvZHkgeworICAgICAgbWFyZ2luOiAwIDAgMCAwOworICAg
ICAgb3ZlcmZsb3c6aGlkZGVuOworICAgIH0KKyAgPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5Pgor
ICA8aW1nIHNyYz0ibGltZTEwMHgxMDAuc3ZnIj4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExh
eW91dFRlc3RzL3N2Zy9hcy1vYmplY3QvcmVzb3VyY2VzL2xpbWUxMDB4MTAwLnN2Zwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvYXMtb2JqZWN0L3Jlc291cmNlcy9saW1lMTAweDEwMC5z
dmcJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9zdmcvYXMtb2JqZWN0L3Jlc291cmNlcy9s
aW1lMTAweDEwMC5zdmcJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzIEBACis8c3ZnIHhtbG5z
PSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgd2lkdGg9JzEwMCcgaGVpZ2h0PScxMDAnPgor
ICA8cmVjdCB3aWR0aD0nMTAwJScgaGVpZ2h0PScxMDAlJyBmaWxsPSdsaW1lJy8+Cis8L3N2Zz4K
SW5kZXg6IExheW91dFRlc3RzL3N2Zy9hcy1vYmplY3QvcmVzb3VyY2VzL3JlZDEwMHgxMDAuc3Zn
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9hcy1vYmplY3QvcmVzb3VyY2VzL3JlZDEw
MHgxMDAuc3ZnCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvc3ZnL2FzLW9iamVjdC9yZXNv
dXJjZXMvcmVkMTAweDEwMC5zdmcJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzIEBACis8c3Zn
IHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgd2lkdGg9JzEwMCcgaGVpZ2h0PScx
MDAnPgorICA8cmVjdCB3aWR0aD0nMTAwJScgaGVpZ2h0PScxMDAlJyBmaWxsPSdyZWQnLz4KKzwv
c3ZnPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IExheW91dFRlc3RzL3N2Zy9h
cy1vYmplY3QvcmVzb3VyY2VzL2xpbWUxMDB4MTAwLnBuZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNhbm5vdCBkaXNw
bGF5OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFyeSB0eXBlLgpzdm46bWltZS10eXBlID0gaW1hZ2Uv
cG5nCkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvYXMtb2JqZWN0L3Jlc291cmNlcy9saW1lMTAweDEw
MC5wbmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2FzLW9iamVjdC9yZXNvdXJjZXMv
bGltZTEwMHgxMDAucG5nCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvc3ZnL2FzLW9iamVj
dC9yZXNvdXJjZXMvbGltZTEwMHgxMDAucG5nCSh3b3JraW5nIGNvcHkpCgpQcm9wZXJ0eSBjaGFu
Z2VzIG9uOiBMYXlvdXRUZXN0cy9zdmcvYXMtb2JqZWN0L3Jlc291cmNlcy9saW1lMTAweDEwMC5w
bmcKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fXwpBZGRlZDogc3ZuOm1pbWUtdHlwZQojIyAtMCwwICsxICMjCitpbWFnZS9w
bmcKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQoKaVZCT1J3MEtHZ29BQUFBTlNVaEVV
Z0FBQUdRQUFBQmtDQVlBQUFCdzRwVlVBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeApq
d3Y4WVFVQUFBQWdZMGhTVFFBQWVpWUFBSUNFQUFENkFBQUFnT2dBQUhVd0FBRHFZQUFBT3BnQUFC
ZHduTHBSUEFBQUFCaDBSVmgwClUyOW1kSGRoY21VQVVHRnBiblF1VGtWVUlIWXpMakE0WlhLYzRR
QUFBZU5KUkVGVWVGN3Qwc0VSZ0RBUXcwRFNmOUZBcXZBK2xCUncKR3NubmVmL2Znd3pjSUgzSFFE
RXdBeGlPczlRVlNVRXdBeGpPYXBmTzNZSmdCakFjWjZrcmtvSmdCakNjMVM2ZHV3WEJER0E0emxK
WApKQVhCREdBNHExMDZkd3VDR2NCd25LV3VTQXFDR2NCd1ZydDA3aFlFTTREaE9FdGRrUlFFTTRE
aHJIYnAzQzBJWmdERGNaYTZJaWtJClpnRERXZTNTdVZzUXpBQ0c0eXgxUlZJUXpBQ0dzOXFsYzdj
Z21BRU14MW5xaXFRZ21BRU1aN1ZMNTI1Qk1BTVlqclBVRlVsQk1BTVkKem1xWHp0MkNZQVl3SEdl
cEs1S0NZQVl3bk5VdW5ic0Z3UXhnT001U1Z5UUZ3UXhnT0t0ZE9uY0xnaG5BY0p5bHJrZ0tnaG5B
Y0ZhNwpkTzRXQkRPQTRUaExYWkVVQkRPQTRheDI2ZHd0Q0dZQXczR1d1aUlwQ0dZQXcxbnQwcmxi
RU13QWh1TXNkVVZTRU13QWhyUGFwWE8zCklKZ0JETWRaNm9xa0lKZ0JER2UxUytkdVFUQURHSTZ6
MUJWSlFUQURHTTVxbDg3ZGdtQUdNQnhucVN1U2dtQUdNSnpWTHAyN0JjRU0KWURqT1VsY2tCY0VN
WURpclhUcDNDNElad0hDY3BhNUlDb0lad0hCV3UzVHVGZ1F6Z09FNFMxMlJGQVF6Z09Hc2R1bmNM
UWhtQU1OeApscm9pS1FobUFNTlo3ZEs1V3hETUFJYmpMSFZGVWhETUFJYXoycVZ6dHlDWUFRekhX
ZXFLcENDWUFReG50VXZuYmtFd0F4aU9zOVFSCnlRZW1TQkVyUWhaK0xBQUFBQUJKUlU1RXJrSmdn
Zz09Cgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>247346</attachid>
            <date>2015-02-25 14:20:02 -0800</date>
            <delta_ts>2015-03-05 13:31:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-141936-20150225141949.patch</filename>
            <type>text/plain</type>
            <size>13299</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MDYzMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBACisyMDE1LTAyLTI1ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgU2V0dGluZyBh
bnkgb2YgdGhlIDxvYmplY3Q+IGVsZW1lbnQgcGx1Z2luIGNvbnRyb2xsaW5nIGF0dHJpYnV0ZXMg
ZG9lcyBub3QgaGF2ZSBhbnkgYWZmZWN0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTQxOTM2LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFdoZW4gc2V0dGluZyBhbnkgb2YgdGhlIDxvYmplY3Q+IGVsZW1l
bnQgcGx1Z2luIGNvbnRyb2xsaW5nIGF0dHJpYnV0ZXMKKyAgICAgICAgZHluYW1pY2FsbHkgd2Ug
bmVlZCB0byBtYXJrIHRoZSB0aGUgZWxlbWVudCB0byBiZSBkaXJ0eSBieSBjYWxsaW5nCisgICAg
ICAgIHNldE5lZWRzU3R5bGVSZWNhbGMoKSwgc28gaXQgaGFzIHRvIHJlY3JlYXRlIGl0cyByZW5k
ZXJlciB3aGVuIG5lZWRlZC4KKyAgICAgICAgCisgICAgICAgIFRlc3Q6IHN2Zy9hcy1vYmplY3Qv
c3ZnLWluLW9iamVjdC1keW5hbWljLWF0dHJpYnV0ZS1jaGFuZ2UuaHRtbAorCisgICAgICAgICog
ZG9tL0VsZW1lbnQuaDogRGVsZXRlIHVuaW1wbGVtZW50ZWQgZnVuY3Rpb24uCisgICAgICAgIAor
ICAgICAgICAqIGh0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE9iamVjdEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKTogRGlydHkgdGhlIGVsZW1lbnQgYnkg
Y2FsbGluZworICAgICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKCkgd2hlbiBvbmUgb2YgdGhlIHBs
dWdpbiBjb250cm9sbGluZyBhdHRyaWJ1dGVzIGdldHMKKyAgICAgICAgY2hhbmdlZC4gV2UgaGF2
ZSB0byBjbGVhciB0aGUgbV91c2VGYWxsYmFja0NvbnRlbnQgYmVjYXVzZSB0aGUgYXR0cmlidXRl
J3MKKyAgICAgICAgbmV3IHZhbHVlIG1pZ2h0IGZpeCB0aGUgb2JqZWN0IHJlbmRlcmluZy4KKyAg
ICAgICAgCisgICAgICAgICogaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5oOiBBZGQgYSBmdW5jdGlv
biB0byBjbGVhciBtX3VzZUZhbGxiYWNrQ29udGVudC4KKyAgICAgICAgCisgICAgICAgICogaHRt
bC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQbHVn
SW5JbWFnZUVsZW1lbnQ6OndpbGxSZWNhbGNTdHlsZSk6IFdlIG1pZ2h0IG5lZWQgdG8gCisgICAg
ICAgIHJlY29uc3RydWN0IHRoZSBvYmplY3QgcmVuZGVyZXIgaW4gdGhlIGltYWdlIGNhc2UuIFRo
aXMgY2FuIGhhcHBlbiBpZiB0aGUKKyAgICAgICAgaW1hZ2Ugd2FzIHJlbmRlcmluZyBmYWxsYmFj
ayBjb250ZW50IGFuZCB0aGUgYXR0cmlidXRlJ3MgbmV3IHZhbHVlIGZpeGVzCisgICAgICAgIHRo
ZSBvYmplY3QgcmVuZGVyaW5nLgorCiAyMDE1LTAyLTI1ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3
ZWJraXQub3JnPgogCiAgICAgICAgIEhUTUxFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JQcmVzZW50
YXRpb25BdHRyaWJ1dGUgZHVwbGljYXRlcyBhIGxvdCBvZiBjb2RlIGZvciBjb250ZW50RWRpdGFi
bGVBdHRyCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgJKHJldmlzaW9uIDE4MDUyMSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMxMCw4ICszMTAsNiBA
QCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgY29weU5vbkF0dHJpYnV0ZVByb3BlcnRpZXNG
cm9tRWxlbWVudChjb25zdCBFbGVtZW50JikgeyB9CiAKLSAgICB2b2lkIGxhenlSZWF0dGFjaCgp
OwotCiAgICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJl
bmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJik7CiAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNO
ZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MT2JqZWN0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MT2JqZWN0RWxlbWVudC5jcHAJKHJldmlzaW9uIDE4MDUyMSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDcsMjggKzEw
NywzNyBAQCB2b2lkIEhUTUxPYmplY3RFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JQCiAKIHZvaWQg
SFRNTE9iamVjdEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5h
bWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiB7CisgICAgYm9vbCBpbnZhbGlkYXRlUmVu
ZGVyZXIgPSBmYWxzZTsKKwogICAgIGlmIChuYW1lID09IGZvcm1BdHRyKQogICAgICAgICBmb3Jt
QXR0cmlidXRlQ2hhbmdlZCgpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gdHlwZUF0dHIpIHsKICAg
ICAgICAgbV9zZXJ2aWNlVHlwZSA9IHZhbHVlLnN0cmluZygpLmxlZnQodmFsdWUuZmluZCgnOycp
KS5sb3dlcigpOworICAgICAgICBpbnZhbGlkYXRlUmVuZGVyZXIgPSAhZmFzdEhhc0F0dHJpYnV0
ZShjbGFzc2lkQXR0cik7CiAgICAgICAgIHNldE5lZWRzV2lkZ2V0VXBkYXRlKHRydWUpOwogICAg
IH0gZWxzZSBpZiAobmFtZSA9PSBkYXRhQXR0cikgewogICAgICAgICBtX3VybCA9IHN0cmlwTGVh
ZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyh2YWx1ZSk7Ci0gICAgICAgIHNldE5lZWRzV2lkZ2V0
VXBkYXRlKHRydWUpOwogICAgICAgICBkb2N1bWVudCgpLnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsK
LSAgICAgICAgaWYgKHJlbmRlcmVyKCkpIHsKLSAgICAgICAgICAgIGlmIChpc0ltYWdlVHlwZSgp
KSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFtX2ltYWdlTG9hZGVyKQotICAgICAgICAgICAgICAg
ICAgICBtX2ltYWdlTG9hZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxIVE1MSW1hZ2VMb2FkZXI+KCp0
aGlzKTsKLSAgICAgICAgICAgICAgICBtX2ltYWdlTG9hZGVyLT51cGRhdGVGcm9tRWxlbWVudEln
bm9yaW5nUHJldmlvdXNFcnJvcigpOwotICAgICAgICAgICAgfQorICAgICAgICBpZiAoaXNJbWFn
ZVR5cGUoKSAmJiByZW5kZXJlcigpKSB7CisgICAgICAgICAgICBpZiAoIW1faW1hZ2VMb2FkZXIp
CisgICAgICAgICAgICAgICAgbV9pbWFnZUxvYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8SFRNTElt
YWdlTG9hZGVyPigqdGhpcyk7CisgICAgICAgICAgICBtX2ltYWdlTG9hZGVyLT51cGRhdGVGcm9t
RWxlbWVudElnbm9yaW5nUHJldmlvdXNFcnJvcigpOwogICAgICAgICB9Ci0gICAgfSBlbHNlIGlm
IChuYW1lID09IGNsYXNzaWRBdHRyKQorICAgICAgICBpbnZhbGlkYXRlUmVuZGVyZXIgPSAhZmFz
dEhhc0F0dHJpYnV0ZShjbGFzc2lkQXR0cik7CisgICAgICAgIHNldE5lZWRzV2lkZ2V0VXBkYXRl
KHRydWUpOworICAgIH0gZWxzZSBpZiAobmFtZSA9PSBjbGFzc2lkQXR0cikgeworICAgICAgICBp
bnZhbGlkYXRlUmVuZGVyZXIgPSB0cnVlOwogICAgICAgICBzZXROZWVkc1dpZGdldFVwZGF0ZSh0
cnVlKTsKLSAgICBlbHNlIGlmIChuYW1lID09IG9uYmVmb3JlbG9hZEF0dHIpCisgICAgfSBlbHNl
IGlmIChuYW1lID09IG9uYmVmb3JlbG9hZEF0dHIpCiAgICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50
TGlzdGVuZXIoZXZlbnROYW1lcygpLmJlZm9yZWxvYWRFdmVudCwgbmFtZSwgdmFsdWUpOwogICAg
IGVsc2UKICAgICAgICAgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUobmFt
ZSwgdmFsdWUpOworCisgICAgaWYgKCFpbnZhbGlkYXRlUmVuZGVyZXIgfHwgIWluRG9jdW1lbnQo
KSB8fCAhcmVuZGVyZXIoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgY2xlYXJVc2VGYWxsYmFj
a0NvbnRlbnQoKTsKKyAgICBzZXROZWVkc1N0eWxlUmVjYWxjKFN5bnRoZXRpY1N0eWxlQ2hhbmdl
KTsKIH0KIAogc3RhdGljIHZvaWQgbWFwRGF0YVBhcmFtVG9TcmMoVmVjdG9yPFN0cmluZz4qIHBh
cmFtTmFtZXMsIFZlY3RvcjxTdHJpbmc+KiBwYXJhbVZhbHVlcykKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmgJKHJldmlzaW9uIDE4MDUyMSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtODUsNiAr
ODUsNyBAQCBwcml2YXRlOgogICAgIAogICAgIGJvb2wgc2hvdWxkQWxsb3dRdWlja1RpbWVDbGFz
c0lkUXVpcmsoKTsKICAgICBib29sIGhhc1ZhbGlkQ2xhc3NJZCgpOworICAgIHZvaWQgY2xlYXJV
c2VGYWxsYmFja0NvbnRlbnQoKSB7IG1fdXNlRmFsbGJhY2tDb250ZW50ID0gZmFsc2U7IH0KIAog
ICAgIHZpcnR1YWwgdm9pZCByZWZGb3JtQXNzb2NpYXRlZEVsZW1lbnQoKSBvdmVycmlkZSB7IHJl
ZigpOyB9CiAgICAgdmlydHVhbCB2b2lkIGRlcmVmRm9ybUFzc29jaWF0ZWRFbGVtZW50KCkgb3Zl
cnJpZGUgeyBkZXJlZigpOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5J
bWFnZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBs
dWdJbkltYWdlRWxlbWVudC5jcHAJKHJldmlzaW9uIDE4MDUyMSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzNyw3
ICsyMzcsNyBAQCBib29sIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OndpbGxSZWNhbGNTCiAKICAg
ICAvLyBGSVhNRTogVGhlcmUgc2hvdWRuJ3QgYmUgbmVlZCB0byBmb3JjZSByZW5kZXIgdHJlZSBy
ZWNvbnN0cnVjdGlvbiBoZXJlLgogICAgIC8vIEl0IGlzIG9ubHkgZG9uZSBiZWNhdXNlIGxvYWRp
bmcgYW5kIGxvYWQgZXZlbnQgZGlzcGF0Y2hpbmcgaXMgdGllZCB0byByZW5kZXIgdHJlZSBjb25z
dHJ1Y3Rpb24uCi0gICAgaWYgKCF1c2VGYWxsYmFja0NvbnRlbnQoKSAmJiBuZWVkc1dpZGdldFVw
ZGF0ZSgpICYmIHJlbmRlcmVyKCkgJiYgIWlzSW1hZ2VUeXBlKCkgJiYgKGRpc3BsYXlTdGF0ZSgp
ICE9IERpc3BsYXlpbmdTbmFwc2hvdCkpCisgICAgaWYgKCF1c2VGYWxsYmFja0NvbnRlbnQoKSAm
JiBuZWVkc1dpZGdldFVwZGF0ZSgpICYmIHJlbmRlcmVyKCkgJiYgKGRpc3BsYXlTdGF0ZSgpICE9
IERpc3BsYXlpbmdTbmFwc2hvdCkpCiAgICAgICAgIHNldE5lZWRzU3R5bGVSZWNhbGMoUmVjb25z
dHJ1Y3RSZW5kZXJUcmVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KSW5kZXg6IExheW91dFRlc3Rz
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9u
IDE4MDYzMykKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDIxIEBACisyMDE1LTAyLTI1ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBh
cHBsZS5jb20+CisKKyAgICAgICAgU2V0dGluZyBhbnkgb2YgdGhlIDxvYmplY3Q+IGVsZW1lbnQg
cGx1Z2luIGNvbnRyb2xsaW5nIGF0dHJpYnV0ZXMgZG9lcyBub3QgaGF2ZSBhbnkgYWZmZWN0Lgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQxOTM2Lgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3ZnL2Fz
LW9iamVjdC9yZXNvdXJjZXMvbGltZTEwMHgxMDAuaHRtbDogQWRkZWQuCisgICAgICAgICogc3Zn
L2FzLW9iamVjdC9yZXNvdXJjZXMvbGltZTEwMHgxMDAucG5nOiBBZGRlZC4KKyAgICAgICAgKiBz
dmcvYXMtb2JqZWN0L3Jlc291cmNlcy9saW1lMTAweDEwMC5zdmc6IEFkZGVkLgorICAgICAgICAq
IHN2Zy9hcy1vYmplY3QvcmVzb3VyY2VzL3JlZDEwMHgxMDAuc3ZnOiBBZGRlZC4KKyAgICAgICAg
KiBzdmcvYXMtb2JqZWN0L3N2Zy1pbi1vYmplY3QtZHluYW1pYy1hdHRyaWJ1dGUtY2hhbmdlLWV4
cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHN2Zy9hcy1vYmplY3Qvc3ZnLWluLW9iamVj
dC1keW5hbWljLWF0dHJpYnV0ZS1jaGFuZ2UuaHRtbDogQWRkZWQuCisgICAgICAgIEVuc3VyZSB0
aGF0IGNoYW5naW5nIHRoZSAndHlwZScgYW5kIHRoZSAnZGF0YScgYXR0cmlidXRlcyBvZiB0aGUg
PG9iamVjdD4KKyAgICAgICAgZWxlbWVudCB3aWxsIGhhdmUgdGhlIGV4cGVjdGVkIG91dGNvbWUu
IEFsc28gbWFrZSBzdXJlIHRoYXQgdGhlIDxvYmplY3Q+CisgICAgICAgIGVsZW1lbnQgcmVuZGVy
ZXIgZmFsbHMgYmFjayBjb3JyZWN0bHkgd2hlbiBzZXR0aW5nIGFueSBvZiB0aGUgYXR0cmlidXRl
cworICAgICAgICB0byBzb21lIHVuZXhwZWN0ZWQgdmFsdWUuCisKIDIwMTUtMDItMjUgIEJyYWR5
IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIExheW91dCB0ZXN0IHN1cHBv
cnQgZm9yIHVzZXIgY29udGVudCBmaWx0ZXJzCkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvYXMtb2Jq
ZWN0L3N2Zy1pbi1vYmplY3QtZHluYW1pYy1hdHRyaWJ1dGUtY2hhbmdlLWV4cGVjdGVkLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2FzLW9iamVjdC9zdmctaW4tb2JqZWN0LWR5
bmFtaWMtYXR0cmlidXRlLWNoYW5nZS1leHBlY3RlZC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvc3ZnL2FzLW9iamVjdC9zdmctaW4tb2JqZWN0LWR5bmFtaWMtYXR0cmlidXRlLWNo
YW5nZS1leHBlY3RlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjEgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgPHN0eWxlPgorICAgIGRpdiB7CisgICAgICAg
IHdpZHRoOiAxMDBweDsKKyAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICAgICAgYmFja2dyb3Vu
ZC1jb2xvcjogbGltZTsKKyAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgIH0KKyAg
PC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorICA8ZGl2PjwvZGl2PgorICA8ZGl2PjwvZGl2Pgor
ICA8ZGl2PjwvZGl2PgorICA8ZGl2PjwvZGl2PgorICA8ZGl2PjwvZGl2PgorICA8ZGl2PjwvZGl2
PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2FzLW9iamVjdC9zdmct
aW4tb2JqZWN0LWR5bmFtaWMtYXR0cmlidXRlLWNoYW5nZS5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL3N2Zy9hcy1vYmplY3Qvc3ZnLWluLW9iamVjdC1keW5hbWljLWF0dHJpYnV0ZS1j
aGFuZ2UuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3N2Zy9hcy1vYmplY3Qvc3Zn
LWluLW9iamVjdC1keW5hbWljLWF0dHJpYnV0ZS1jaGFuZ2UuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDcwIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+CisgIDxvYmpl
Y3QgaWQ9Im9iamVjdDEiIGRhdGE9InJlc291cmNlcy9saW1lMTAweDEwMC5zdmciPgorICAgIDxp
bWcgc3JjPSJyZXNvdXJjZXMvcmVkMTAweDEwMC5zdmciPgorICA8L29iamVjdD4KKyAgPG9iamVj
dCBpZD0ib2JqZWN0MiIgdHlwZT0iaW1hZ2Uvc3ZnK3htbCIgZGF0YT0icmVzb3VyY2VzL3JlZDEw
MHgxMDAuc3ZnIj4KKyAgICA8aW1nIHNyYz0icmVzb3VyY2VzL3JlZDEwMHgxMDAuc3ZnIj4KKyAg
PC9vYmplY3Q+CisgIDxvYmplY3Qgd2lkdGg9IjEwMHB4IiBoZWlnaHQ9IjEwMHB4IiBpZD0ib2Jq
ZWN0MyI+CisgICAgPGltZyBzcmM9InJlc291cmNlcy9yZWQxMDB4MTAwLnN2ZyI+CisgIDwvb2Jq
ZWN0PgorICA8b2JqZWN0IGlkPSJvYmplY3Q0IiB0eXBlPSJkdW1teSI+CisgICAgPGltZyBzcmM9
InJlc291cmNlcy9yZWQxMDB4MTAwLnN2ZyI+CisgIDwvb2JqZWN0PgorICA8b2JqZWN0IGlkPSJv
YmplY3Q1IiB0eXBlPSJkdW1teSI+CisgICAgPGltZyBzcmM9InJlc291cmNlcy9yZWQxMDB4MTAw
LnN2ZyI+CisgIDwvb2JqZWN0PgorICA8b2JqZWN0IGlkPSJvYmplY3Q2IiB0eXBlPSJpbWFnZS9z
dmcreG1sIiBkYXRhPSJyZXNvdXJjZXMvcmVkMTAweDEwMC5zdmciPgorICAgIDxpbWcgc3JjPSJy
ZXNvdXJjZXMvbGltZTEwMHgxMDAuc3ZnIj4KKyAgPC9vYmplY3Q+CisgIDxzY3JpcHQ+CisgICAg
ZnVuY3Rpb24gb25PYmplY3RMb2FkKCkgeworICAgICAgaWYgKCF3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICAgICAgcmV0dXJuOworICAgICAgICAKKyAgICAgIGlmICh0eXBlb2Ygb25PYmplY3RMb2Fk
LmNvdW50ZXIgPT0gJ3VuZGVmaW5lZCcpCisgICAgICAgIG9uT2JqZWN0TG9hZC5jb3VudGVyID0g
MDsKKyAgICAKKyAgICAgIGlmICgrK29uT2JqZWN0TG9hZC5jb3VudGVyID09IDQpCisgICAgICAg
IHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgIH0KKyAKKyAgICB3aW5kb3cuYWRkRXZlbnRM
aXN0ZW5lcigibG9hZCIsIGZ1bmN0aW9uKCkgeworICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQorICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKworICAgICAgLy8gY2hhbmdl
IHRoZSAndHlwZScgYXR0cmlidXRlCisgICAgICB2YXIgb2JqZWN0MSA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJvYmplY3QxIik7CisgICAgICBvYmplY3QxLnNldEF0dHJpYnV0ZSgidHlwZSIs
ICJpbWFnZS9zdmcreG1sIik7CisKKyAgICAgIC8vIGNoYW5nZSB0aGUgJ2RhdGEnIGF0dHJpYnV0
ZQorICAgICAgdmFyIG9iamVjdDIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgib2JqZWN0MiIp
OworICAgICAgb2JqZWN0Mi5vbmxvYWQgPSBvbk9iamVjdExvYWQ7CisgICAgICBvYmplY3QyLnNl
dEF0dHJpYnV0ZSgiZGF0YSIsICJyZXNvdXJjZXMvbGltZTEwMHgxMDAuc3ZnIik7CisKKyAgICAg
IC8vIGNoYW5nZSB0aGUgJ2RhdGEnIGF0dHJpYnV0ZQorICAgICAgdmFyIG9iamVjdDMgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgib2JqZWN0MyIpOworICAgICAgb2JqZWN0My5vbmxvYWQgPSBv
bk9iamVjdExvYWQ7CisgICAgICBvYmplY3QzLnNldEF0dHJpYnV0ZSgiZGF0YSIsICJyZXNvdXJj
ZXMvbGltZTEwMHgxMDAuaHRtbCIpOworCisgICAgICAvLyBjaGFuZ2UgdGhlICd0eXBlJyB0aGVu
IHRoZSAnZGF0YScgYXR0cmlidXRlcyBvZiBhbiBpbWFnZSBvYmplY3QKKyAgICAgIHZhciBvYmpl
Y3Q0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm9iamVjdDQiKTsKKyAgICAgIG9iamVjdDQu
b25sb2FkID0gb25PYmplY3RMb2FkOworICAgICAgb2JqZWN0NC5zZXRBdHRyaWJ1dGUoInR5cGUi
LCAiaW1hZ2UvcG5nIik7CisgICAgICBvYmplY3Q0LnNldEF0dHJpYnV0ZSgiZGF0YSIsICJyZXNv
dXJjZXMvbGltZTEwMHgxMDAucG5nIik7CisKKyAgICAgIC8vIGNoYW5nZSB0aGUgJ2RhdGEnIHRo
ZW4gdGhlICd0eXBlJyBhdHRyaWJ1dGVzIG9mIGFuIGltYWdlIG9iamVjdAorICAgICAgdmFyIG9i
amVjdDUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgib2JqZWN0NSIpOworICAgICAgb2JqZWN0
NS5vbmxvYWQgPSBvbk9iamVjdExvYWQ7CisgICAgICBvYmplY3Q1LnNldEF0dHJpYnV0ZSgiZGF0
YSIsICJyZXNvdXJjZXMvbGltZTEwMHgxMDAucG5nIik7CisgICAgICBvYmplY3Q1LnNldEF0dHJp
YnV0ZSgidHlwZSIsICJpbWFnZS9wbmciKTsKKworICAgICAgLy8gb2JqZWN0IHJlZGVyZXIgZmFs
bGJhY2sKKyAgICAgIHZhciBvYmplY3Q2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm9iamVj
dDYiKTsKKyAgICAgIG9iamVjdDYuc2V0QXR0cmlidXRlKCJ0eXBlIiwgImR1bW15Iik7CisgICAg
fSk7CisgIDwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvc3Zn
L2FzLW9iamVjdC9yZXNvdXJjZXMvbGltZTEwMHgxMDAuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9zdmcvYXMtb2JqZWN0L3Jlc291cmNlcy9saW1lMTAweDEwMC5odG1sCShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvc3ZnL2FzLW9iamVjdC9yZXNvdXJjZXMvbGltZTEwMHgxMDAu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+CisgIDxzdHlsZT4KKyAgICBodG1sLCBib2R5IHsKKyAgICAgIG1hcmdpbjog
MCAwIDAgMDsKKyAgICAgIG92ZXJmbG93OmhpZGRlbjsKKyAgICB9CisgIDwvc3R5bGU+Cis8L2hl
YWQ+Cis8Ym9keT4KKyAgPGltZyBzcmM9ImxpbWUxMDB4MTAwLnN2ZyI+Cis8L2JvZHk+Cis8L2h0
bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvYXMtb2JqZWN0L3Jlc291cmNlcy9saW1lMTAweDEw
MC5zdmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2FzLW9iamVjdC9yZXNvdXJjZXMv
bGltZTEwMHgxMDAuc3ZnCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvc3ZnL2FzLW9iamVj
dC9yZXNvdXJjZXMvbGltZTEwMHgxMDAuc3ZnCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMyBA
QAorPHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPScxMDAnIGhl
aWdodD0nMTAwJz4KKyAgPHJlY3Qgd2lkdGg9JzEwMCUnIGhlaWdodD0nMTAwJScgZmlsbD0nbGlt
ZScvPgorPC9zdmc+CkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvYXMtb2JqZWN0L3Jlc291cmNlcy9y
ZWQxMDB4MTAwLnN2Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvYXMtb2JqZWN0L3Jl
c291cmNlcy9yZWQxMDB4MTAwLnN2ZwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3N2Zy9h
cy1vYmplY3QvcmVzb3VyY2VzL3JlZDEwMHgxMDAuc3ZnCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMyBAQAorPHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPScx
MDAnIGhlaWdodD0nMTAwJz4KKyAgPHJlY3Qgd2lkdGg9JzEwMCUnIGhlaWdodD0nMTAwJScgZmls
bD0ncmVkJy8+Cis8L3N2Zz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBMYXlv
dXRUZXN0cy9zdmcvYXMtb2JqZWN0L3Jlc291cmNlcy9saW1lMTAweDEwMC5wbmcKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQpDYW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3ZuOm1pbWUt
dHlwZSA9IGltYWdlL3BuZwpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2FzLW9iamVjdC9yZXNvdXJj
ZXMvbGltZTEwMHgxMDAucG5nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9hcy1vYmpl
Y3QvcmVzb3VyY2VzL2xpbWUxMDB4MTAwLnBuZwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L3N2Zy9hcy1vYmplY3QvcmVzb3VyY2VzL2xpbWUxMDB4MTAwLnBuZwkod29ya2luZyBjb3B5KQoK
UHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvc3ZnL2FzLW9iamVjdC9yZXNvdXJjZXMv
bGltZTEwMHgxMDAucG5nCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjptaW1lLXR5cGUKIyMgLTAsMCAr
MSAjIworaW1hZ2UvcG5nClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKCmlWQk9SdzBL
R2dvQUFBQU5TVWhFVWdBQUFHUUFBQUJrQ0FZQUFBQnc0cFZVQUFBQUFYTlNSMElBcnM0YzZRQUFB
QVJuUVUxQkFBQ3gKand2OFlRVUFBQUFnWTBoU1RRQUFlaVlBQUlDRUFBRDZBQUFBZ09nQUFIVXdB
QURxWUFBQU9wZ0FBQmR3bkxwUlBBQUFBQmgwUlZoMApVMjltZEhkaGNtVUFVR0ZwYm5RdVRrVlVJ
SFl6TGpBNFpYS2M0UUFBQWVOSlJFRlVlRjd0MHNFUmdEQVF3MERTZjlGQXF2QStsQlJ3Ckdzbm5l
Zi9mZ3d6Y0lIM0hRREV3QXhpT3M5UVZTVUV3QXhqT2FwZk8zWUpnQmpBY1o2a3Jrb0pnQmpDYzFT
NmR1d1hCREdBNHpsSlgKSkFYQkRHQTRxMTA2ZHd1Q0djQnduS1d1U0FxQ0djQndWcnQwN2hZRU00
RGhPRXRka1JRRU00RGhySGJwM0MwSVpnRERjWmE2SWlrSQpaZ0REV2UzU3VWc1F6QUNHNHl4MVJW
SVF6QUNHczlxbGM3Y2dtQUVNeDFucWlxUWdtQUVNWjdWTDUyNUJNQU1ZanJQVUZVbEJNQU1ZCnpt
cVh6dDJDWUFZd0hHZXBLNUtDWUFZd25OVXVuYnNGd1F4Z09NNVNWeVFGd1F4Z09LdGRPbmNMZ2hu
QWNKeWxya2dLZ2huQWNGYTcKZE80V0JET0E0VGhMWFpFVUJET0E0YXgyNmR3dENHWUF3M0dXdWlJ
cENHWUF3MW50MHJsYkVNd0FodU1zZFVWU0VNd0FoclBhcFhPMwpJSmdCRE1kWjZvcWtJSmdCREdl
MVMrZHVRVEFER0k2ejFCVkpRVEFER001cWw4N2RnbUFHTUJ4bnFTdVNnbUFHTUp6VkxwMjdCY0VN
CllEak9VbGNrQmNFTVlEaXJYVHAzQzRJWndIQ2NwYTVJQ29JWndIQld1M1R1RmdRemdPRTRTMTJS
RkFRemdPR3NkdW5jTFFobUFNTngKbHJvaUtRaG1BTU5aN2RLNVd4RE1BSWJqTEhWRlVoRE1BSWF6
MnFWenR5Q1lBUXpIV2VxS3BDQ1lBUXhudFV2bmJrRXdBeGlPczlRUgp5UWVtU0JFclFoWitMQUFB
QUFCSlJVNUVya0pnZ2c9PQoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>247972</attachid>
            <date>2015-03-05 11:13:26 -0800</date>
            <delta_ts>2015-03-05 11:13:26 -0800</delta_ts>
            <desc>guarding test case</desc>
            <filename>image-object-hover-inherit.html</filename>
            <type>text/html</type>
            <size>1487</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIEhUTUw+CjxodG1sPgo8aGVhZD4KICA8c3R5bGU+CiAgICBkaXYgewogICAgICB3
aWR0aDogMTAwcHg7CiAgICAgIGhlaWdodDogMTAwcHg7CiAgICAgIGJhY2tncm91bmQtY29sb3I6
cmVkOwogICAgfQogICAgZGl2OmhvdmVyIHsKICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogaW5o
ZXJpdDsKICAgIH0KICA8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgogIDxkaXY+CiAgICA8b2JqZWN0
IGlkPSJpbWFnZSIgZGF0YT0iZGF0YTppbWFnZS9wbmc7YmFzZTY0LAogICAgICBpVkJPUncwS0dn
b0FBQUFOU1VoRVVnQUFBR1FBQUFCa0NBWUFBQUJ3NHBWVUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFS
blFVMUJBQUN4CiAgICAgIGp3djhZUVVBQUFBZ1kwaFNUUUFBZWlZQUFJQ0VBQUQ2QUFBQWdPZ0FB
SFV3QUFEcVlBQUFPcGdBQUJkd25McFJQQUFBQUJoMFJWaDAKICAgICAgVTI5bWRIZGhjbVVBVUdG
cGJuUXVUa1ZVSUhZekxqQTRaWEtjNFFBQUFlTkpSRUZVZUY3dDBzRVJnREFRdzBEU2Y5RkFxdkEr
bEJSdwogICAgICBHc25uZWYvZmd3emNJSDNIUURFd0F4aU9zOVFWU1VFd0F4ak9hcGZPM1lKZ0Jq
QWNaNmtya29KZ0JqQ2MxUzZkdXdYQkRHQTR6bEpYCiAgICAgIEpBWEJER0E0cTEwNmR3dUNHY0J3
bktXdVNBcUNHY0J3VnJ0MDdoWUVNNERoT0V0ZGtSUUVNNERockhicDNDMElaZ0REY1phNklpa0kK
ICAgICAgWmdERFdlM1N1VnNRekFDRzR5eDFSVklRekFDR3M5cWxjN2NnbUFFTXgxbnFpcVFnbUFF
TVo3Vkw1MjVCTUFNWWpyUFVGVWxCTUFNWQogICAgICB6bXFYenQyQ1lBWXdIR2VwSzVLQ1lBWXdu
TlV1bmJzRndReGdPTTVTVnlRRndReGdPS3RkT25jTGdobkFjSnlscmtnS2dobkFjRmE3CiAgICAg
IGRPNFdCRE9BNFRoTFhaRVVCRE9BNGF4MjZkd3RDR1lBdzNHV3VpSXBDR1lBdzFudDBybGJFTXdB
aHVNc2RVVlNFTXdBaHJQYXBYTzMKICAgICAgSUpnQkRNZFo2b3FrSUpnQkRHZTFTK2R1UVRBREdJ
NnoxQlZKUVRBREdNNXFsODdkZ21BR01CeG5xU3VTZ21BR01KelZMcDI3QmNFTQogICAgICBZRGpP
VWxja0JjRU1ZRGlyWFRwM0M0SVp3SENjcGE1SUNvSVp3SEJXdTNUdUZnUXpnT0U0UzEyUkZBUXpn
T0dzZHVuY0xRaG1BTU54CiAgICAgIGxyb2lLUWhtQU1OWjdkSzVXeERNQUliakxIVkZVaERNQUlh
ejJxVnp0eUNZQVF6SFdlcUtwQ0NZQVF4bnRVdm5ia0V3QXhpT3M5UVIKICAgICAgeVFlbVNCRXJR
aForTEFBQUFBQkpSVTVFcmtKZ2dnPT0iPgogICAgPC9vYmplY3Q+CiAgPC9kaXY+CiAgPHNjcmlw
dD4KICB3aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKSB7CiAgICBpZiAod2luZG93LmV2ZW50U2Vu
ZGVyKSB7CiAgICAgIGltYWdlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ltYWdlJyk7CiAg
ICAgIHdpbmRvdy5ldmVudFNlbmRlci5tb3VzZU1vdmVUbyhpbWFnZS5vZmZzZXRMZWZ0ICsgMTAs
IGltYWdlLm9mZnNldFRvcCArIDEwKTsKICAgIH0KICB9CiAgPC9zY3JpcHQ+CjwvYm9keT4KPC9o
dG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>247992</attachid>
            <date>2015-03-05 13:31:41 -0800</date>
            <delta_ts>2015-03-06 10:44:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-141936-20150305133123.patch</filename>
            <type>text/plain</type>
            <size>14822</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MTA5NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBACisyMDE1LTAzLTA1ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgU2V0dGluZyBh
bnkgb2YgdGhlIDxvYmplY3Q+IGVsZW1lbnQgcGx1Z2luIGNvbnRyb2xsaW5nIGF0dHJpYnV0ZXMg
ZG9lcyBub3QgaGF2ZSBhbnkgYWZmZWN0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTQxOTM2LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorICAgICAgICAKKyAgICAgICAgV2hlbiBzZXR0aW5nIGFueSBvZiB0aGUgPG9iamVj
dD4gZWxlbWVudCBwbHVnaW4gY29udHJvbGxpbmcgYXR0cmlidXRlcworICAgICAgICBkeW5hbWlj
YWxseSB3ZSBuZWVkIHRvIG1hcmsgdGhlIHRoZSBlbGVtZW50IHRvIGJlIGRpcnR5IGJ5IGNhbGxp
bmcKKyAgICAgICAgc2V0TmVlZHNTdHlsZVJlY2FsYygpLCBzbyBpdCBoYXMgdG8gcmVjcmVhdGUg
aXRzIHJlbmRlcmVyIHdoZW4gbmVlZGVkLgorCisgICAgICAgIFRlc3RzOiBmYXN0L2Nzcy9pbWFn
ZS1vYmplY3QtaG92ZXItaW5oZXJpdC5odG1sCisgICAgICAgICAgICAgICBzdmcvYXMtb2JqZWN0
L3N2Zy1pbi1vYmplY3QtZHluYW1pYy1hdHRyaWJ1dGUtY2hhbmdlLmh0bWwKKworICAgICAgICAq
IGRvbS9FbGVtZW50Lmg6IERlbGV0ZSB1bmltcGxlbWVudGVkIGZ1bmN0aW9uLgorICAgICAgICAK
KyAgICAgICAgKiBodG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxPYmplY3RFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6IE1hcmsgdGhlIGVsZW1lbnQgZGly
dHkgYnkKKyAgICAgICAgY2FsbGluZyBzZXROZWVkc1N0eWxlUmVjYWxjKCkgd2hlbiBvbmUgb2Yg
dGhlIHBsdWdpbiBjb250cm9sbGluZyBhdHRyaWJ1dGVzCisgICAgICAgIGdldHMgY2hhbmdlZC4g
V2UgaGF2ZSB0byBjbGVhciBtX3VzZUZhbGxiYWNrQ29udGVudCBiZWNhdXNlIHRoZSBhdHRyaWJ1
dGUncworICAgICAgICBuZXcgdmFsdWUgbWlnaHQgZml4IHRoZSBvYmplY3QgcmVuZGVyaW5nLgor
ICAgICAgICAKKyAgICAgICAgKiBodG1sL0hUTUxPYmplY3RFbGVtZW50Lmg6IEFkZCBhIGZ1bmN0
aW9uIHRvIGNsZWFyIG1fdXNlRmFsbGJhY2tDb250ZW50LgorCiAyMDE1LTAzLTA1ICBSb2dlciBG
b25nICA8cm9nZXJfZm9uZ0BhcHBsZS5jb20+CiAKICAgICAgICAgVXBkYXRlIGlubGluZSBtZWRp
YSBjb250cm9sIGljb25zIGZvciBPU1guCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgJKHJldmlzaW9u
IDE4MTA0MykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTMxMCw4ICszMTAsNiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgY29weU5vbkF0
dHJpYnV0ZVByb3BlcnRpZXNGcm9tRWxlbWVudChjb25zdCBFbGVtZW50JikgeyB9CiAKLSAgICB2
b2lkIGxhenlSZWF0dGFjaCgpOwotCiAgICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVu
dD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJik7CiAgICAgdmlydHVh
bCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmKTsKIApJbmRleDogU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAJKHJldmlzaW9uIDE4MTA0MykK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMDcsMjggKzEwNywzNyBAQCB2b2lkIEhUTUxPYmplY3RFbGVtZW50Ojpjb2xsZWN0
U3R5bGVGb3JQCiAKIHZvaWQgSFRNTE9iamVjdEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiB7CisgICAg
Ym9vbCBpbnZhbGlkYXRlUmVuZGVyZXIgPSBmYWxzZTsKKwogICAgIGlmIChuYW1lID09IGZvcm1B
dHRyKQogICAgICAgICBmb3JtQXR0cmlidXRlQ2hhbmdlZCgpOwogICAgIGVsc2UgaWYgKG5hbWUg
PT0gdHlwZUF0dHIpIHsKICAgICAgICAgbV9zZXJ2aWNlVHlwZSA9IHZhbHVlLnN0cmluZygpLmxl
ZnQodmFsdWUuZmluZCgnOycpKS5sb3dlcigpOworICAgICAgICBpbnZhbGlkYXRlUmVuZGVyZXIg
PSAhZmFzdEhhc0F0dHJpYnV0ZShjbGFzc2lkQXR0cik7CiAgICAgICAgIHNldE5lZWRzV2lkZ2V0
VXBkYXRlKHRydWUpOwogICAgIH0gZWxzZSBpZiAobmFtZSA9PSBkYXRhQXR0cikgewogICAgICAg
ICBtX3VybCA9IHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyh2YWx1ZSk7Ci0gICAg
ICAgIHNldE5lZWRzV2lkZ2V0VXBkYXRlKHRydWUpOwogICAgICAgICBkb2N1bWVudCgpLnVwZGF0
ZVN0eWxlSWZOZWVkZWQoKTsKLSAgICAgICAgaWYgKHJlbmRlcmVyKCkpIHsKLSAgICAgICAgICAg
IGlmIChpc0ltYWdlVHlwZSgpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFtX2ltYWdlTG9hZGVy
KQotICAgICAgICAgICAgICAgICAgICBtX2ltYWdlTG9hZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxI
VE1MSW1hZ2VMb2FkZXI+KCp0aGlzKTsKLSAgICAgICAgICAgICAgICBtX2ltYWdlTG9hZGVyLT51
cGRhdGVGcm9tRWxlbWVudElnbm9yaW5nUHJldmlvdXNFcnJvcigpOwotICAgICAgICAgICAgfQor
ICAgICAgICBpZiAoaXNJbWFnZVR5cGUoKSAmJiByZW5kZXJlcigpKSB7CisgICAgICAgICAgICBp
ZiAoIW1faW1hZ2VMb2FkZXIpCisgICAgICAgICAgICAgICAgbV9pbWFnZUxvYWRlciA9IHN0ZDo6
bWFrZV91bmlxdWU8SFRNTEltYWdlTG9hZGVyPigqdGhpcyk7CisgICAgICAgICAgICBtX2ltYWdl
TG9hZGVyLT51cGRhdGVGcm9tRWxlbWVudElnbm9yaW5nUHJldmlvdXNFcnJvcigpOwogICAgICAg
ICB9Ci0gICAgfSBlbHNlIGlmIChuYW1lID09IGNsYXNzaWRBdHRyKQorICAgICAgICBpbnZhbGlk
YXRlUmVuZGVyZXIgPSAhZmFzdEhhc0F0dHJpYnV0ZShjbGFzc2lkQXR0cik7CisgICAgICAgIHNl
dE5lZWRzV2lkZ2V0VXBkYXRlKHRydWUpOworICAgIH0gZWxzZSBpZiAobmFtZSA9PSBjbGFzc2lk
QXR0cikgeworICAgICAgICBpbnZhbGlkYXRlUmVuZGVyZXIgPSB0cnVlOwogICAgICAgICBzZXRO
ZWVkc1dpZGdldFVwZGF0ZSh0cnVlKTsKLSAgICBlbHNlIGlmIChuYW1lID09IG9uYmVmb3JlbG9h
ZEF0dHIpCisgICAgfSBlbHNlIGlmIChuYW1lID09IG9uYmVmb3JlbG9hZEF0dHIpCiAgICAgICAg
IHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmJlZm9yZWxvYWRFdmVudCwg
bmFtZSwgdmFsdWUpOwogICAgIGVsc2UKICAgICAgICAgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6
cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOworCisgICAgaWYgKCFpbnZhbGlkYXRlUmVuZGVy
ZXIgfHwgIWluRG9jdW1lbnQoKSB8fCAhcmVuZGVyZXIoKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgY2xlYXJVc2VGYWxsYmFja0NvbnRlbnQoKTsKKyAgICBzZXROZWVkc1N0eWxlUmVjYWxjKFJl
Y29uc3RydWN0UmVuZGVyVHJlZSk7CiB9CiAKIHN0YXRpYyB2b2lkIG1hcERhdGFQYXJhbVRvU3Jj
KFZlY3RvcjxTdHJpbmc+KiBwYXJhbU5hbWVzLCBWZWN0b3I8U3RyaW5nPiogcGFyYW1WYWx1ZXMp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5oCShyZXZpc2lvbiAx
ODEwNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTg1LDYgKzg1LDcgQEAgcHJpdmF0ZToKICAgICAKICAgICBib29sIHNob3Vs
ZEFsbG93UXVpY2tUaW1lQ2xhc3NJZFF1aXJrKCk7CiAgICAgYm9vbCBoYXNWYWxpZENsYXNzSWQo
KTsKKyAgICB2b2lkIGNsZWFyVXNlRmFsbGJhY2tDb250ZW50KCkgeyBtX3VzZUZhbGxiYWNrQ29u
dGVudCA9IGZhbHNlOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVmRm9ybUFzc29jaWF0ZWRFbGVt
ZW50KCkgb3ZlcnJpZGUgeyByZWYoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBkZXJlZkZvcm1Bc3Nv
Y2lhdGVkRWxlbWVudCgpIG92ZXJyaWRlIHsgZGVyZWYoKTsgfQpJbmRleDogTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24g
MTgxMDk2KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMjcgQEAKKzIwMTUtMDMtMDUgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFw
cGxlLmNvbT4KKworICAgICAgICBTZXR0aW5nIGFueSBvZiB0aGUgPG9iamVjdD4gZWxlbWVudCBw
bHVnaW4gY29udHJvbGxpbmcgYXR0cmlidXRlcyBkb2VzIG5vdCBoYXZlIGFueSBhZmZlY3QuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDE5MzYuCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2Nz
cy9pbWFnZS1vYmplY3QtaG92ZXItaW5oZXJpdC1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2Nzcy9pbWFnZS1vYmplY3QtaG92ZXItaW5oZXJpdC5odG1sOiBBZGRlZC4KKyAg
ICAgICAgQSBndWFyZGluZyB0ZXN0IHRvIGNhdGNoIHRoZSBjYXNlIG9mIHJlY29uc3RydWN0aW5n
IHRoZSBpbWFnZSA8b2JqZWN0PgorICAgICAgICByZW5kZXJlciB3aGlsZSBwZXJmb3JtaW5nIGEg
c3luY2hyb25vdXMgcmVzb2x2ZVRyZWUoKSBmb2xsb3dlZCBieSBwYWdlCisgICAgICAgIHJlbmRl
cmluZyBvciBkdW1wIHJlbmRlciB0cmVlLgorICAgICAgICAKKyAgICAgICAgKiBzdmcvYXMtb2Jq
ZWN0L3Jlc291cmNlcy9saW1lMTAweDEwMC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvYXMt
b2JqZWN0L3Jlc291cmNlcy9saW1lMTAweDEwMC5wbmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy9h
cy1vYmplY3QvcmVzb3VyY2VzL2xpbWUxMDB4MTAwLnN2ZzogQWRkZWQuCisgICAgICAgICogc3Zn
L2FzLW9iamVjdC9yZXNvdXJjZXMvcmVkMTAweDEwMC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2
Zy9hcy1vYmplY3Qvc3ZnLWluLW9iamVjdC1keW5hbWljLWF0dHJpYnV0ZS1jaGFuZ2UtZXhwZWN0
ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogc3ZnL2FzLW9iamVjdC9zdmctaW4tb2JqZWN0LWR5
bmFtaWMtYXR0cmlidXRlLWNoYW5nZS5odG1sOiBBZGRlZC4KKyAgICAgICAgRW5zdXJlIHRoYXQg
Y2hhbmdpbmcgdGhlICd0eXBlJyBhbmQgdGhlICdkYXRhJyBhdHRyaWJ1dGVzIG9mIHRoZSA8b2Jq
ZWN0PgorICAgICAgICBlbGVtZW50IHdpbGwgaGF2ZSB0aGUgZXhwZWN0ZWQgb3V0Y29tZS4gQWxz
byBtYWtlIHN1cmUgdGhhdCB0aGUgPG9iamVjdD4KKyAgICAgICAgZWxlbWVudCByZW5kZXJlciBm
YWxscyBiYWNrIGNvcnJlY3RseSB3aGVuIHNldHRpbmcgYW55IG9mIHRoZSBhdHRyaWJ1dGVzCisg
ICAgICAgIHRvIHNvbWUgdW5leHBlY3RlZCB2YWx1ZS4KKwogMjAxNS0wMy0wNSAgUm9nZXIgRm9u
ZyAgPHJvZ2VyX2ZvbmdAYXBwbGUuY29tPgogCiAgICAgICAgIFVwZGF0ZSBpbmxpbmUgbWVkaWEg
Y29udHJvbCBpY29ucyBmb3IgT1NYLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3MvaW1hZ2Ut
b2JqZWN0LWhvdmVyLWluaGVyaXQtZXhwZWN0ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2Nzcy9pbWFnZS1vYmplY3QtaG92ZXItaW5oZXJpdC1leHBlY3RlZC5odG1sCShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3MvaW1hZ2Utb2JqZWN0LWhvdmVyLWlu
aGVyaXQtZXhwZWN0ZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE1IEBACis8IURP
Q1RZUEUgSFRNTD4KKzxodG1sPgorPGhlYWQ+CisgIDxzdHlsZT4KKyAgICBkaXYgeworICAgICAg
d2lkdGg6IDEwMHB4OworICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICAgIGJhY2tncm91bmQtY29s
b3I6bGltZTsKKyAgICB9CisgIDwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgPGRpdj48L2Rp
dj4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL2ltYWdlLW9i
amVjdC1ob3Zlci1pbmhlcml0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9j
c3MvaW1hZ2Utb2JqZWN0LWhvdmVyLWluaGVyaXQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2Zhc3QvY3NzL2ltYWdlLW9iamVjdC1ob3Zlci1pbmhlcml0Lmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw0MSBAQAorPCFET0NUWVBFIEhUTUw+Cis8aHRtbD4KKzxoZWFkPgor
ICA8c3R5bGU+CisgICAgZGl2IHsKKyAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgIGhlaWdodDog
MTAwcHg7CisgICAgICBiYWNrZ3JvdW5kLWNvbG9yOnJlZDsKKyAgICB9CisgICAgZGl2OmhvdmVy
IHsKKyAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6IGluaGVyaXQ7CisgICAgfQorICA8L3N0eWxl
PgorPC9oZWFkPgorPGJvZHk+CisgIDxkaXY+CisgICAgPG9iamVjdCBpZD0iaW1hZ2UiIGRhdGE9
ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCwKKyAgICAgIGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFH
UUFBQUJrQ0FZQUFBQnc0cFZVQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3gKKyAgICAg
IGp3djhZUVVBQUFBZ1kwaFNUUUFBZWlZQUFJQ0VBQUQ2QUFBQWdPZ0FBSFV3QUFEcVlBQUFPcGdB
QUJkd25McFJQQUFBQUJoMFJWaDAKKyAgICAgIFUyOW1kSGRoY21VQVVHRnBiblF1VGtWVUlIWXpM
akE0WlhLYzRRQUFBZU5KUkVGVWVGN3Qwc0VSZ0RBUXcwRFNmOUZBcXZBK2xCUncKKyAgICAgIEdz
bm5lZi9mZ3d6Y0lIM0hRREV3QXhpT3M5UVZTVUV3QXhqT2FwZk8zWUpnQmpBY1o2a3Jrb0pnQmpD
YzFTNmR1d1hCREdBNHpsSlgKKyAgICAgIEpBWEJER0E0cTEwNmR3dUNHY0J3bktXdVNBcUNHY0J3
VnJ0MDdoWUVNNERoT0V0ZGtSUUVNNERockhicDNDMElaZ0REY1phNklpa0kKKyAgICAgIFpnRERX
ZTNTdVZzUXpBQ0c0eXgxUlZJUXpBQ0dzOXFsYzdjZ21BRU14MW5xaXFRZ21BRU1aN1ZMNTI1Qk1B
TVlqclBVRlVsQk1BTVkKKyAgICAgIHptcVh6dDJDWUFZd0hHZXBLNUtDWUFZd25OVXVuYnNGd1F4
Z09NNVNWeVFGd1F4Z09LdGRPbmNMZ2huQWNKeWxya2dLZ2huQWNGYTcKKyAgICAgIGRPNFdCRE9B
NFRoTFhaRVVCRE9BNGF4MjZkd3RDR1lBdzNHV3VpSXBDR1lBdzFudDBybGJFTXdBaHVNc2RVVlNF
TXdBaHJQYXBYTzMKKyAgICAgIElKZ0JETWRaNm9xa0lKZ0JER2UxUytkdVFUQURHSTZ6MUJWSlFU
QURHTTVxbDg3ZGdtQUdNQnhucVN1U2dtQUdNSnpWTHAyN0JjRU0KKyAgICAgIFlEak9VbGNrQmNF
TVlEaXJYVHAzQzRJWndIQ2NwYTVJQ29JWndIQld1M1R1RmdRemdPRTRTMTJSRkFRemdPR3NkdW5j
TFFobUFNTngKKyAgICAgIGxyb2lLUWhtQU1OWjdkSzVXeERNQUliakxIVkZVaERNQUlhejJxVnp0
eUNZQVF6SFdlcUtwQ0NZQVF4bnRVdm5ia0V3QXhpT3M5UVIKKyAgICAgIHlRZW1TQkVyUWhaK0xB
QUFBQUJKUlU1RXJrSmdnZz09Ij4KKyAgICA8L29iamVjdD4KKyAgPC9kaXY+CisgIDxzY3JpcHQ+
CisgIHdpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpIHsKKyAgICBpZiAod2luZG93LmV2ZW50U2Vu
ZGVyKSB7CisgICAgICBpbWFnZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbWFnZScpOwor
ICAgICAgd2luZG93LmV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKGltYWdlLm9mZnNldExlZnQgKyAx
MCwgaW1hZ2Uub2Zmc2V0VG9wICsgMTApOworICAgIH0KKyAgfQorICA8L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL3N2Zy9hcy1vYmplY3Qvc3ZnLWluLW9iamVj
dC1keW5hbWljLWF0dHJpYnV0ZS1jaGFuZ2UtZXhwZWN0ZWQuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9zdmcvYXMtb2JqZWN0L3N2Zy1pbi1vYmplY3QtZHluYW1pYy1hdHRyaWJ1dGUt
Y2hhbmdlLWV4cGVjdGVkLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9zdmcvYXMt
b2JqZWN0L3N2Zy1pbi1vYmplY3QtZHluYW1pYy1hdHRyaWJ1dGUtY2hhbmdlLWV4cGVjdGVkLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyMSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorICA8c3R5bGU+CisgICAgZGl2IHsKKyAgICAgICAgd2lkdGg6IDEwMHB4Owor
ICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBsaW1lOwor
ICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgfQorICA8L3N0eWxlPgorPC9oZWFk
PgorPGJvZHk+CisgIDxkaXY+PC9kaXY+CisgIDxkaXY+PC9kaXY+CisgIDxkaXY+PC9kaXY+Cisg
IDxkaXY+PC9kaXY+CisgIDxkaXY+PC9kaXY+CisgIDxkaXY+PC9kaXY+Cis8L2JvZHk+Cis8L2h0
bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvYXMtb2JqZWN0L3N2Zy1pbi1vYmplY3QtZHluYW1p
Yy1hdHRyaWJ1dGUtY2hhbmdlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2Fz
LW9iamVjdC9zdmctaW4tb2JqZWN0LWR5bmFtaWMtYXR0cmlidXRlLWNoYW5nZS5odG1sCShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvc3ZnL2FzLW9iamVjdC9zdmctaW4tb2JqZWN0LWR5bmFt
aWMtYXR0cmlidXRlLWNoYW5nZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzAgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKyAgPG9iamVjdCBpZD0ib2JqZWN0MSIg
ZGF0YT0icmVzb3VyY2VzL2xpbWUxMDB4MTAwLnN2ZyI+CisgICAgPGltZyBzcmM9InJlc291cmNl
cy9yZWQxMDB4MTAwLnN2ZyI+CisgIDwvb2JqZWN0PgorICA8b2JqZWN0IGlkPSJvYmplY3QyIiB0
eXBlPSJpbWFnZS9zdmcreG1sIiBkYXRhPSJyZXNvdXJjZXMvcmVkMTAweDEwMC5zdmciPgorICAg
IDxpbWcgc3JjPSJyZXNvdXJjZXMvcmVkMTAweDEwMC5zdmciPgorICA8L29iamVjdD4KKyAgPG9i
amVjdCB3aWR0aD0iMTAwcHgiIGhlaWdodD0iMTAwcHgiIGlkPSJvYmplY3QzIj4KKyAgICA8aW1n
IHNyYz0icmVzb3VyY2VzL3JlZDEwMHgxMDAuc3ZnIj4KKyAgPC9vYmplY3Q+CisgIDxvYmplY3Qg
aWQ9Im9iamVjdDQiIHR5cGU9ImR1bW15Ij4KKyAgICA8aW1nIHNyYz0icmVzb3VyY2VzL3JlZDEw
MHgxMDAuc3ZnIj4KKyAgPC9vYmplY3Q+CisgIDxvYmplY3QgaWQ9Im9iamVjdDUiIHR5cGU9ImR1
bW15Ij4KKyAgICA8aW1nIHNyYz0icmVzb3VyY2VzL3JlZDEwMHgxMDAuc3ZnIj4KKyAgPC9vYmpl
Y3Q+CisgIDxvYmplY3QgaWQ9Im9iamVjdDYiIHR5cGU9ImltYWdlL3N2Zyt4bWwiIGRhdGE9InJl
c291cmNlcy9yZWQxMDB4MTAwLnN2ZyI+CisgICAgPGltZyBzcmM9InJlc291cmNlcy9saW1lMTAw
eDEwMC5zdmciPgorICA8L29iamVjdD4KKyAgPHNjcmlwdD4KKyAgICBmdW5jdGlvbiBvbk9iamVj
dExvYWQoKSB7CisgICAgICBpZiAoIXdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICByZXR1cm47
CisgICAgICAgIAorICAgICAgaWYgKHR5cGVvZiBvbk9iamVjdExvYWQuY291bnRlciA9PSAndW5k
ZWZpbmVkJykKKyAgICAgICAgb25PYmplY3RMb2FkLmNvdW50ZXIgPSAwOworICAgIAorICAgICAg
aWYgKCsrb25PYmplY3RMb2FkLmNvdW50ZXIgPT0gNCkKKyAgICAgICAgdGVzdFJ1bm5lci5ub3Rp
ZnlEb25lKCk7CisgICAgfQorIAorICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwg
ZnVuY3Rpb24oKSB7CisgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RS
dW5uZXIud2FpdFVudGlsRG9uZSgpOworCisgICAgICAvLyBjaGFuZ2UgdGhlICd0eXBlJyBhdHRy
aWJ1dGUKKyAgICAgIHZhciBvYmplY3QxID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm9iamVj
dDEiKTsKKyAgICAgIG9iamVjdDEuc2V0QXR0cmlidXRlKCJ0eXBlIiwgImltYWdlL3N2Zyt4bWwi
KTsKKworICAgICAgLy8gY2hhbmdlIHRoZSAnZGF0YScgYXR0cmlidXRlCisgICAgICB2YXIgb2Jq
ZWN0MiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJvYmplY3QyIik7CisgICAgICBvYmplY3Qy
Lm9ubG9hZCA9IG9uT2JqZWN0TG9hZDsKKyAgICAgIG9iamVjdDIuc2V0QXR0cmlidXRlKCJkYXRh
IiwgInJlc291cmNlcy9saW1lMTAweDEwMC5zdmciKTsKKworICAgICAgLy8gY2hhbmdlIHRoZSAn
ZGF0YScgYXR0cmlidXRlCisgICAgICB2YXIgb2JqZWN0MyA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJvYmplY3QzIik7CisgICAgICBvYmplY3QzLm9ubG9hZCA9IG9uT2JqZWN0TG9hZDsKKyAg
ICAgIG9iamVjdDMuc2V0QXR0cmlidXRlKCJkYXRhIiwgInJlc291cmNlcy9saW1lMTAweDEwMC5o
dG1sIik7CisKKyAgICAgIC8vIGNoYW5nZSB0aGUgJ3R5cGUnIHRoZW4gdGhlICdkYXRhJyBhdHRy
aWJ1dGVzIG9mIGFuIGltYWdlIG9iamVjdAorICAgICAgdmFyIG9iamVjdDQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgib2JqZWN0NCIpOworICAgICAgb2JqZWN0NC5vbmxvYWQgPSBvbk9iamVj
dExvYWQ7CisgICAgICBvYmplY3Q0LnNldEF0dHJpYnV0ZSgidHlwZSIsICJpbWFnZS9wbmciKTsK
KyAgICAgIG9iamVjdDQuc2V0QXR0cmlidXRlKCJkYXRhIiwgInJlc291cmNlcy9saW1lMTAweDEw
MC5wbmciKTsKKworICAgICAgLy8gY2hhbmdlIHRoZSAnZGF0YScgdGhlbiB0aGUgJ3R5cGUnIGF0
dHJpYnV0ZXMgb2YgYW4gaW1hZ2Ugb2JqZWN0CisgICAgICB2YXIgb2JqZWN0NSA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJvYmplY3Q1Iik7CisgICAgICBvYmplY3Q1Lm9ubG9hZCA9IG9uT2Jq
ZWN0TG9hZDsKKyAgICAgIG9iamVjdDUuc2V0QXR0cmlidXRlKCJkYXRhIiwgInJlc291cmNlcy9s
aW1lMTAweDEwMC5wbmciKTsKKyAgICAgIG9iamVjdDUuc2V0QXR0cmlidXRlKCJ0eXBlIiwgImlt
YWdlL3BuZyIpOworCisgICAgICAvLyBvYmplY3QgcmVkZXJlciBmYWxsYmFjaworICAgICAgdmFy
IG9iamVjdDYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgib2JqZWN0NiIpOworICAgICAgb2Jq
ZWN0Ni5zZXRBdHRyaWJ1dGUoInR5cGUiLCAiZHVtbXkiKTsKKyAgICB9KTsKKyAgPC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvYXMtb2JqZWN0L3Jlc291
cmNlcy9saW1lMTAweDEwMC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9hcy1v
YmplY3QvcmVzb3VyY2VzL2xpbWUxMDB4MTAwLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9zdmcvYXMtb2JqZWN0L3Jlc291cmNlcy9saW1lMTAweDEwMC5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMTQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAg
PHN0eWxlPgorICAgIGh0bWwsIGJvZHkgeworICAgICAgbWFyZ2luOiAwIDAgMCAwOworICAgICAg
b3ZlcmZsb3c6aGlkZGVuOworICAgIH0KKyAgPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorICA8
aW1nIHNyYz0ibGltZTEwMHgxMDAuc3ZnIj4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91
dFRlc3RzL3N2Zy9hcy1vYmplY3QvcmVzb3VyY2VzL2xpbWUxMDB4MTAwLnN2Zwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9zdmcvYXMtb2JqZWN0L3Jlc291cmNlcy9saW1lMTAweDEwMC5zdmcJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9zdmcvYXMtb2JqZWN0L3Jlc291cmNlcy9saW1l
MTAweDEwMC5zdmcJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzIEBACis8c3ZnIHhtbG5zPSdo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgd2lkdGg9JzEwMCcgaGVpZ2h0PScxMDAnPgorICA8
cmVjdCB3aWR0aD0nMTAwJScgaGVpZ2h0PScxMDAlJyBmaWxsPSdsaW1lJy8+Cis8L3N2Zz4KSW5k
ZXg6IExheW91dFRlc3RzL3N2Zy9hcy1vYmplY3QvcmVzb3VyY2VzL3JlZDEwMHgxMDAuc3ZnCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9hcy1vYmplY3QvcmVzb3VyY2VzL3JlZDEwMHgx
MDAuc3ZnCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvc3ZnL2FzLW9iamVjdC9yZXNvdXJj
ZXMvcmVkMTAweDEwMC5zdmcJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzIEBACis8c3ZnIHht
bG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgd2lkdGg9JzEwMCcgaGVpZ2h0PScxMDAn
PgorICA8cmVjdCB3aWR0aD0nMTAwJScgaGVpZ2h0PScxMDAlJyBmaWxsPSdyZWQnLz4KKzwvc3Zn
PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IExheW91dFRlc3RzL3N2Zy9hcy1v
YmplY3QvcmVzb3VyY2VzL2xpbWUxMDB4MTAwLnBuZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNhbm5vdCBkaXNwbGF5
OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFyeSB0eXBlLgpzdm46bWltZS10eXBlID0gaW1hZ2UvcG5n
CkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvYXMtb2JqZWN0L3Jlc291cmNlcy9saW1lMTAweDEwMC5w
bmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2FzLW9iamVjdC9yZXNvdXJjZXMvbGlt
ZTEwMHgxMDAucG5nCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvc3ZnL2FzLW9iamVjdC9y
ZXNvdXJjZXMvbGltZTEwMHgxMDAucG5nCSh3b3JraW5nIGNvcHkpCgpQcm9wZXJ0eSBjaGFuZ2Vz
IG9uOiBMYXlvdXRUZXN0cy9zdmcvYXMtb2JqZWN0L3Jlc291cmNlcy9saW1lMTAweDEwMC5wbmcK
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fXwpBZGRlZDogc3ZuOm1pbWUtdHlwZQojIyAtMCwwICsxICMjCitpbWFnZS9wbmcK
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQoKaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FB
QUdRQUFBQmtDQVlBQUFCdzRwVlVBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeApqd3Y4
WVFVQUFBQWdZMGhTVFFBQWVpWUFBSUNFQUFENkFBQUFnT2dBQUhVd0FBRHFZQUFBT3BnQUFCZHdu
THBSUEFBQUFCaDBSVmgwClUyOW1kSGRoY21VQVVHRnBiblF1VGtWVUlIWXpMakE0WlhLYzRRQUFB
ZU5KUkVGVWVGN3Qwc0VSZ0RBUXcwRFNmOUZBcXZBK2xCUncKR3NubmVmL2Znd3pjSUgzSFFERXdB
eGlPczlRVlNVRXdBeGpPYXBmTzNZSmdCakFjWjZrcmtvSmdCakNjMVM2ZHV3WEJER0E0emxKWApK
QVhCREdBNHExMDZkd3VDR2NCd25LV3VTQXFDR2NCd1ZydDA3aFlFTTREaE9FdGRrUlFFTTREaHJI
YnAzQzBJWmdERGNaYTZJaWtJClpnRERXZTNTdVZzUXpBQ0c0eXgxUlZJUXpBQ0dzOXFsYzdjZ21B
RU14MW5xaXFRZ21BRU1aN1ZMNTI1Qk1BTVlqclBVRlVsQk1BTVkKem1xWHp0MkNZQVl3SEdlcEs1
S0NZQVl3bk5VdW5ic0Z3UXhnT001U1Z5UUZ3UXhnT0t0ZE9uY0xnaG5BY0p5bHJrZ0tnaG5BY0Zh
NwpkTzRXQkRPQTRUaExYWkVVQkRPQTRheDI2ZHd0Q0dZQXczR1d1aUlwQ0dZQXcxbnQwcmxiRU13
QWh1TXNkVVZTRU13QWhyUGFwWE8zCklKZ0JETWRaNm9xa0lKZ0JER2UxUytkdVFUQURHSTZ6MUJW
SlFUQURHTTVxbDg3ZGdtQUdNQnhucVN1U2dtQUdNSnpWTHAyN0JjRU0KWURqT1VsY2tCY0VNWURp
clhUcDNDNElad0hDY3BhNUlDb0lad0hCV3UzVHVGZ1F6Z09FNFMxMlJGQVF6Z09Hc2R1bmNMUWht
QU1OeApscm9pS1FobUFNTlo3ZEs1V3hETUFJYmpMSFZGVWhETUFJYXoycVZ6dHlDWUFRekhXZXFL
cENDWUFReG50VXZuYmtFd0F4aU9zOVFSCnlRZW1TQkVyUWhaK0xBQUFBQUJKUlU1RXJrSmdnZz09
Cgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>