<?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>80155</bug_id>
          
          <creation_ts>2012-03-02 05:49:19 -0800</creation_ts>
          <short_desc>Frame flattening ASSERT(!needsLayout()) in FrameView::paintContents()</short_desc>
          <delta_ts>2012-04-05 18:27:45 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>kenneth</cc>
    
    <cc>koivisto</cc>
    
    <cc>mrobinson</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yael</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>569600</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2012-03-02 05:49:19 -0800</bug_when>
    <thetext>FrameView::paintContents() asserts when frame flattening is on with the following simplified test case (originally is seen on nytimes.com)

&lt;html&gt;&lt;head&gt;&lt;/head&gt;&lt;body&gt;&lt;iframe src=&quot;data:text/html;charset=utf-8,&lt;html&gt;&lt;body&gt;test&lt;/body&gt;&lt;/html&gt;&quot; scrolling=&quot;no&quot; height=&quot;50&quot; width=&quot;50&quot;&gt;&lt;/iframe&gt;&lt;script&gt;document.body.offsetHeight&lt;/script&gt;&lt;/body&gt;&lt;/html&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>569603</commentid>
    <comment_count>1</comment_count>
      <attachid>129891</attachid>
    <who name="alan">zalan</who>
    <bug_when>2012-03-02 05:49:58 -0800</bug_when>
    <thetext>Created attachment 129891
test case</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>569604</commentid>
    <comment_count>2</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2012-03-02 05:52:43 -0800</bug_when>
    <thetext>also repro on wired.com</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>569635</commentid>
    <comment_count>3</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2012-03-02 07:15:30 -0800</bug_when>
    <thetext>the test case has
1, iframe which does not get flattened (fixed width/height + no scrolling)
2, offsetHeight which triggers sync layout

Assert happens, because the iframe remains dirty even after a few layout cycles on both the main and the child frame.

What happens here is
1, first layout cycle triggered by document.body.offsetHeight

offsetHeight -&gt; FrameView::layout(mainframe) -&gt; RenderIFrame::layout(no frame flattening, so child FrameView::layout() is not called) -&gt; FrameView::performPostLayoutTasks() -&gt; RenderWidget::updateWidgetPosition() -&gt; FrameView::layout(childframe) -&gt; (nothing to layout yet)
(after return back from layout(childframe) a recursive layout call on the mainframe leaves pending post layout tasks.)

2, second layout cycle triggered by finished parsing
Document::implicitClose() -&gt; FrameView::layout(mainframe) -&gt; FrameView::performPostLayoutTasks(pending post layout from 1st cycle) -&gt; RenderWidget::updateWidgetPosition() -&gt; FrameView::layout(childframe) -&gt; nested layout call? no -&gt; start layout from parent frame -&gt; FrameView::layout(mainframe) -&gt; RenderIFrame::layout(no frame flattening, so child FrameView::layout() is not called) -&gt; FrameView::layout(childframe) early returns and it leaves the child frame dirty.

3, third layout cycle triggered by paint

paint -&gt; layoutIfNeeded() -&gt; FrameView::layout(mainframe) -&gt; FrameView::performPostLayoutTasks(pending post layout from 2nd cycle) -&gt; RenderWidget::updateWidgetPosition() -&gt; FrameView::layout(childframe) -&gt; nested layout call? no -&gt; start layout from parent frame -&gt; FrameView::layout(mainframe) -&gt; RenderIFrame::layout(no frame flattening, so child FrameView::layout() is not called) -&gt; FrameView::layout(childframe) early returns and it leaves the child frame dirty.
-&gt;assert in paintContents() of the child FrameView()

This bug occurs, when m_postLayoutTasksTimer has no time to hit, before FrameView::layout() is called. 
Calling postlayout task from FrameView::layout() ends up calling FrameView::layout(childframe) with a state (m_nestedLayoutCount == 0) where child frameview always initiates the layout from the top and since the RenderIFrame is not calling back to the child FrameView::layout(), child frame remains dirty.
(The forced sync layout with offsetHeight at the beginning is needed in order to start the 2nd cycle with pending postlayout tasks.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570168</commentid>
    <comment_count>4</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2012-03-03 12:37:41 -0800</bug_when>
    <thetext>There seems to be 2 issues with frame flattening code in this context:
1, FrameView::layout(childframe) wrongly assumes that if layout is re-initiated from parent (parentView-&gt;layout(allowSubtree);), it will eventually come back to the child frame to finished off layouting. If the associated iframe is not getting flattened, it is absolutely unnecessary to call on parentView-&gt;layout() for layouting purposes. (and it still leaves childframe dirty as FrameView::layout(childframe) is not getting called from RenderIFrame::layout()). The flattening code should be smarter to not to initiate parent layouts, if possible.

2, Good amount of the FrameView::layout(childframe) calls are originated from parentView-&gt;performPostLayoutTasks(). Now, performPostLayoutTasks() is called from layout() at multiple places with different nesting state, depending whether this is a pending postlayouttask to be executed before root-&gt;layout() (no nesting), or normal sync postlayout after root-&gt;layout() (yes nesting). layout(childframe) relies on the parent&apos;s nesting state (m_nestedLayoutCount) to decide, if layout should be re-initiated from parent. In both cases, we are in parent&apos;s layout, and still child FrameView::layout() behaves differently.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570169</commentid>
    <comment_count>5</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2012-03-03 12:47:07 -0800</bug_when>
    <thetext>btw, this is not reproducible on mac port all the time due to timing issues. (m_postLayoutTasksTimer hits before the 2nd layout is initiated by documentClose())</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575819</commentid>
    <comment_count>6</comment_count>
      <attachid>131255</attachid>
    <who name="alan">zalan</who>
    <bug_when>2012-03-11 12:39:25 -0700</bug_when>
    <thetext>Created attachment 131255
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576171</commentid>
    <comment_count>7</comment_count>
      <attachid>131255</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-03-12 09:20:07 -0700</bug_when>
    <thetext>Comment on attachment 131255
Patch

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

r=me

&gt; Source/WebCore/ChangeLog:9
&gt; +        This patch ensures that iframes only start layouting from the topmost parent,
&gt; +        when the they are going to be flattened.

It would be good to explain how it ensures it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576175</commentid>
    <comment_count>8</comment_count>
      <attachid>131255</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-03-12 09:23:33 -0700</bug_when>
    <thetext>Comment on attachment 131255
Patch

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

&gt; LayoutTests/fast/frames/flattening/iframe-flattening-fixed-width-and-height-no-scrolling-with-js-forced-layout.html:5
&gt; +&lt;html&gt;
&gt; +&lt;head&gt;
&gt; +    &lt;script type=&quot;text/javascript&quot;&gt;
&gt; +        if (window.layoutTestController) {
&gt; +            layoutTestController.waitUntilDone();

This should use layoutTestController.dumpAsText(). The point is to (not) hit the assert, the output is not important. This would probably not be cross-platform.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576201</commentid>
    <comment_count>9</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-03-12 09:52:17 -0700</bug_when>
    <thetext>*** Bug 65530 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>577275</commentid>
    <comment_count>10</comment_count>
      <attachid>131604</attachid>
    <who name="alan">zalan</who>
    <bug_when>2012-03-13 07:02:41 -0700</bug_when>
    <thetext>Created attachment 131604
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578508</commentid>
    <comment_count>11</comment_count>
      <attachid>131604</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-03-14 09:58:24 -0700</bug_when>
    <thetext>Comment on attachment 131604
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578704</commentid>
    <comment_count>12</comment_count>
      <attachid>131604</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-14 13:23:10 -0700</bug_when>
    <thetext>Comment on attachment 131604
Patch

Clearing flags on attachment: 131604

Committed r110738: &lt;http://trac.webkit.org/changeset/110738&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578705</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-14 13:23:15 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597101</commentid>
    <comment_count>14</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-04-05 18:19:08 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; Created an attachment (id=131604) [details]
&gt; Patch

Zalan, it makes gardening a bit easier when you unskip tests upon fixing a bug. I&apos;ll unskip the faililng tests for GTK+ now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597105</commentid>
    <comment_count>15</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2012-04-05 18:25:12 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (In reply to comment #10)
&gt; &gt; Created an attachment (id=131604) [details] [details]
&gt; &gt; Patch
&gt; 
&gt; Zalan, it makes gardening a bit easier when you unskip tests upon fixing a bug. I&apos;ll unskip the faililng tests for GTK+ now.

Yeah, sorry. Thanks for doing it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597107</commentid>
    <comment_count>16</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-04-05 18:27:45 -0700</bug_when>
    <thetext>(In reply to comment #15)

&gt; &gt; Zalan, it makes gardening a bit easier when you unskip tests upon fixing a bug. I&apos;ll unskip the faililng tests for GTK+ now.
&gt; 
&gt; Yeah, sorry. Thanks for doing it.

Not a problem. Thanks for fixing the bug!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>129891</attachid>
            <date>2012-03-02 05:49:58 -0800</date>
            <delta_ts>2012-03-02 05:49:58 -0800</delta_ts>
            <desc>test case</desc>
            <filename>frame_flattening_assert.html</filename>
            <type>text/html</type>
            <size>204</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">PGh0bWw+PGhlYWQ+PC9oZWFkPjxib2R5PjxpZnJhbWUgc3JjPSJkYXRhOnRleHQvaHRtbDtjaGFy
c2V0PXV0Zi04LDxodG1sPjxib2R5PnRlc3Q8L2JvZHk+PC9odG1sPiIgc2Nyb2xsaW5nPSJubyIg
aGVpZ2h0PSI1MCIgd2lkdGg9IjUwIj48L2lmcmFtZT48c2NyaXB0PmRvY3VtZW50LmJvZHkub2Zm
c2V0SGVpZ2h0PC9zY3JpcHQ+PC9ib2R5PjwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131255</attachid>
            <date>2012-03-11 12:39:25 -0700</date>
            <delta_ts>2012-03-13 07:02:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80155-20120311203923.patch</filename>
            <type>text/plain</type>
            <size>9069</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExMDM5NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBACisyMDEyLTAzLTExICBaYWxhbiBC
dWp0YXMgIDx6YnVqdGFzQGdtYWlsLmNvbT4KKworICAgICAgICBGcmFtZSBmbGF0dGVuaW5nIEFT
U0VSVCghbmVlZHNMYXlvdXQoKSkgaW4gRnJhbWVWaWV3OjpwYWludENvbnRlbnRzKCkKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwMTU1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBlbnN1
cmVzIHRoYXQgaWZyYW1lcyBvbmx5IHN0YXJ0IGxheW91dGluZyBmcm9tIHRoZSB0b3Btb3N0IHBh
cmVudCwKKyAgICAgICAgd2hlbiB0aGUgdGhleSBhcmUgZ29pbmcgdG8gYmUgZmxhdHRlbmVkLgor
CisgICAgICAgIFRlc3Q6IGZhc3QvZnJhbWVzL2ZsYXR0ZW5pbmcvaWZyYW1lLWZsYXR0ZW5pbmct
Zml4ZWQtd2lkdGgtYW5kLWhlaWdodC1uby1zY3JvbGxpbmctd2l0aC1qcy1mb3JjZWQtbGF5b3V0
Lmh0bWwKKworICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lVmlldzo6bGF5b3V0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6cGFyZW50
RnJhbWVWaWV3KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVW
aWV3Ojppc0luU3ViZnJhbWVMYXlvdXRXaXRoRnJhbWVGbGF0dGVuaW5nKToKKyAgICAgICAgKiBw
YWdlL0ZyYW1lVmlldy5oOgorICAgICAgICAoRnJhbWVWaWV3KToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVySUZyYW1lLmg6CisgICAgICAgIChSZW5kZXJJRnJhbWUpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVySUZyYW1lOjpyZW5kZXJOYW1lKToKKwogMjAxMi0wMy0xMSAgUGF2ZWwgRmVs
ZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBj
b25zb2xlLmxvZyBhdHRlbXB0cyB0byBzdWJzdGl0dXRlIGFueSAiJSIgY2hhcmFjdGVyIGluIHRo
ZSBtZXNzYWdlLgpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAkocmV2aXNpb24gMTEw
Mzk0KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01Niw2ICs1Niw3IEBACiAjaW5jbHVkZSAiUmVuZGVyQXJlbmEuaCIKICNpbmNsdWRlICJS
ZW5kZXJFbWJlZGRlZE9iamVjdC5oIgogI2luY2x1ZGUgIlJlbmRlckZ1bGxTY3JlZW4uaCIKKyNp
bmNsdWRlICJSZW5kZXJJRnJhbWUuaCIKICNpbmNsdWRlICJSZW5kZXJMYXllci5oIgogI2luY2x1
ZGUgIlJlbmRlclBhcnQuaCIKICNpbmNsdWRlICJSZW5kZXJTY3JvbGxiYXIuaCIKQEAgLTg5MSwx
NyArODkyLDE5IEBAIHZvaWQgRnJhbWVWaWV3OjpsYXlvdXQoYm9vbCBhbGxvd1N1YnRyZWUKICAg
ICBpZiAobV9pbkxheW91dCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYm9vbCBpblN1YmZyYW1l
TGF5b3V0V2l0aEZyYW1lRmxhdHRlbmluZyA9IHBhcmVudCgpICYmIG1fZnJhbWUtPnNldHRpbmdz
KCkgJiYgbV9mcmFtZS0+c2V0dGluZ3MoKS0+ZnJhbWVGbGF0dGVuaW5nRW5hYmxlZCgpOworICAg
IGJvb2wgaW5TdWJmcmFtZUxheW91dFdpdGhGcmFtZUZsYXR0ZW5pbmcgPSBpc0luU3ViZnJhbWVM
YXlvdXRXaXRoRnJhbWVGbGF0dGVuaW5nKCk7CiAKICAgICBpZiAoaW5TdWJmcmFtZUxheW91dFdp
dGhGcmFtZUZsYXR0ZW5pbmcpIHsKLSAgICAgICAgaWYgKHBhcmVudCgpLT5pc0ZyYW1lVmlldygp
KSB7Ci0gICAgICAgICAgICBGcmFtZVZpZXcqIHBhcmVudFZpZXcgPSAgIHN0YXRpY19jYXN0PEZy
YW1lVmlldyo+KHBhcmVudCgpKTsKLSAgICAgICAgICAgIGlmICghcGFyZW50Vmlldy0+bV9uZXN0
ZWRMYXlvdXRDb3VudCkgewotICAgICAgICAgICAgICAgIHdoaWxlIChwYXJlbnRWaWV3LT5wYXJl
bnQoKSAmJiBwYXJlbnRWaWV3LT5wYXJlbnQoKS0+aXNGcmFtZVZpZXcoKSkKLSAgICAgICAgICAg
ICAgICAgICAgcGFyZW50VmlldyA9IHN0YXRpY19jYXN0PEZyYW1lVmlldyo+KHBhcmVudFZpZXct
PnBhcmVudCgpKTsKLSAgICAgICAgICAgICAgICBwYXJlbnRWaWV3LT5sYXlvdXQoYWxsb3dTdWJ0
cmVlKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9CisgICAgICAgIEZy
YW1lVmlldyogcGFyZW50VmlldyA9IHBhcmVudEZyYW1lVmlldygpOworICAgICAgICBpZiAocGFy
ZW50VmlldyAmJiAhcGFyZW50Vmlldy0+bV9uZXN0ZWRMYXlvdXRDb3VudCkgeworICAgICAgICAg
ICAgd2hpbGUgKHBhcmVudFZpZXctPnBhcmVudEZyYW1lVmlldygpKQorICAgICAgICAgICAgICAg
IHBhcmVudFZpZXcgPSBwYXJlbnRWaWV3LT5wYXJlbnRGcmFtZVZpZXcoKTsKKworICAgICAgICAg
ICAgcGFyZW50Vmlldy0+bGF5b3V0KGFsbG93U3VidHJlZSk7CisKKyAgICAgICAgICAgIFJlbmRl
ck9iamVjdCogcm9vdCA9IG1fbGF5b3V0Um9vdCA/IG1fbGF5b3V0Um9vdCA6IG1fZnJhbWUtPmRv
Y3VtZW50KCktPnJlbmRlcmVyKCk7CisgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKHJvb3QsICFy
b290LT5uZWVkc0xheW91dCgpKTsKKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAg
IH0KIApAQCAtMjgwMSw2ICsyODA0LDIxIEBAIEZyYW1lVmlldyogRnJhbWVWaWV3OjpwYXJlbnRG
cmFtZVZpZXcoKQogICAgIHJldHVybiAwOwogfQogCitib29sIEZyYW1lVmlldzo6aXNJblN1YmZy
YW1lTGF5b3V0V2l0aEZyYW1lRmxhdHRlbmluZygpCit7CisgICAgaWYgKCFwYXJlbnQoKSB8fCAh
bV9mcmFtZS0+c2V0dGluZ3MoKSB8fCAhbV9mcmFtZS0+c2V0dGluZ3MoKS0+ZnJhbWVGbGF0dGVu
aW5nRW5hYmxlZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAobV9mcmFtZS0+
b3duZXJFbGVtZW50KCktPmhhc1RhZ05hbWUoaWZyYW1lVGFnKSkgeworICAgICAgICBSZW5kZXJJ
RnJhbWUqIGlmcmFtZVJlbmRlcmVyID0gdG9SZW5kZXJJRnJhbWUobV9mcmFtZS0+b3duZXJFbGVt
ZW50KCktPnJlbmRlclBhcnQoKSk7CisKKyAgICAgICAgaWYgKCFpZnJhbWVSZW5kZXJlci0+Zmxh
dHRlbkZyYW1lKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0
dXJuIHRydWU7Cit9CisKIHZvaWQgRnJhbWVWaWV3Ojp1cGRhdGVDb250cm9sVGludHMoKQogewog
ICAgIC8vIFRoaXMgaXMgY2FsbGVkIHdoZW4gY29udHJvbCB0aW50cyBhcmUgY2hhbmdlZCBmcm9t
IGFxdWEvZ3JhcGhpdGUgdG8gY2xlYXIgYW5kIHZpY2UgdmVyc2EuCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lVmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3LmgJKHJldmlzaW9uIDExMDM5NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWVWaWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTQwNiw2ICs0MDYsOCBAQCBwcml2YXRlOgogCiAg
ICAgRnJhbWVWaWV3KiBwYXJlbnRGcmFtZVZpZXcoKSBjb25zdDsKIAorICAgIGJvb2wgaXNJblN1
YmZyYW1lTGF5b3V0V2l0aEZyYW1lRmxhdHRlbmluZygpOworCiAgICAgdmlydHVhbCBBWE9iamVj
dENhY2hlKiBheE9iamVjdENhY2hlKCkgY29uc3Q7CiAgICAgdm9pZCBub3RpZnlXaWRnZXRzSW5B
bGxGcmFtZXMoV2lkZ2V0Tm90aWZpY2F0aW9uKTsKICAgICAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJJRnJhbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVySUZyYW1lLmgJKHJldmlzaW9uIDExMDM5NCkKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJJRnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQs
OCBAQCBjbGFzcyBSZW5kZXJJRnJhbWUgOiBwdWJsaWMgUmVuZGVyRnJhbWVCCiBwdWJsaWM6CiAg
ICAgZXhwbGljaXQgUmVuZGVySUZyYW1lKEVsZW1lbnQqKTsKIAorICAgIGJvb2wgZmxhdHRlbkZy
YW1lKCk7CisKIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVMb2dpY2FsSGVpZ2h0
KCk7CiAgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVMb2dpY2FsV2lkdGgoKTsKQEAgLTQ0LDggKzQ2
LDYgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNv
bnN0IHsgcmV0dXJuICJSZW5kZXJQYXJ0T2JqZWN0IjsgfSAvLyBMeWluZyBmb3Igbm93IHRvIGF2
b2lkIGJyZWFraW5nIHRlc3RzCiAKLSAgICBib29sIGZsYXR0ZW5GcmFtZSgpOwotCiB9OwogCiBp
bmxpbmUgUmVuZGVySUZyYW1lKiB0b1JlbmRlcklGcmFtZShSZW5kZXJPYmplY3QqIG9iamVjdCkK
SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDExMDM5NikKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEyLTAzLTExICBaYWxhbiBCdWp0YXMgIDx6
YnVqdGFzQGdtYWlsLmNvbT4KKworICAgICAgICBGcmFtZSBmbGF0dGVuaW5nIEFTU0VSVCghbmVl
ZHNMYXlvdXQoKSkgaW4gRnJhbWVWaWV3OjpwYWludENvbnRlbnRzKCkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwMTU1CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9mbGF0dGVuaW5n
L2lmcmFtZS1mbGF0dGVuaW5nLWZpeGVkLXdpZHRoLWFuZC1oZWlnaHQtbm8tc2Nyb2xsaW5nLXdp
dGgtanMtZm9yY2VkLWxheW91dC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
ZnJhbWVzL2ZsYXR0ZW5pbmcvaWZyYW1lLWZsYXR0ZW5pbmctZml4ZWQtd2lkdGgtYW5kLWhlaWdo
dC1uby1zY3JvbGxpbmctd2l0aC1qcy1mb3JjZWQtbGF5b3V0Lmh0bWw6IEFkZGVkLgorCiAyMDEy
LTAzLTA5ICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KIAogICAg
ICAgICBPYmplY3QuZnJlZXplIGJyb2tlbiBvbiBsYXRlc3QgTmlnaHRseQpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9mcmFtZXMvZmxhdHRlbmluZy9pZnJhbWUtZmxhdHRlbmluZy1maXhlZC13aWR0
aC1hbmQtaGVpZ2h0LW5vLXNjcm9sbGluZy13aXRoLWpzLWZvcmNlZC1sYXlvdXQtZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2ZsYXR0ZW5pbmcvaWZy
YW1lLWZsYXR0ZW5pbmctZml4ZWQtd2lkdGgtYW5kLWhlaWdodC1uby1zY3JvbGxpbmctd2l0aC1q
cy1mb3JjZWQtbGF5b3V0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvZnJhbWVzL2ZsYXR0ZW5pbmcvaWZyYW1lLWZsYXR0ZW5pbmctZml4ZWQtd2lkdGgtYW5k
LWhlaWdodC1uby1zY3JvbGxpbmctd2l0aC1qcy1mb3JjZWQtbGF5b3V0LWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNiBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAw
CisgIFJlbmRlclZpZXcgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCitsYXllciBhdCAoMCwwKSBzaXpl
IDgwMHg2MDAKKyAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAweDYwMAorICAg
IFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDU4NAorICAgICAgUmVuZGVyQmxv
Y2sge0RJVn0gYXQgKDAsMCkgc2l6ZSA3ODR4MjEKKyAgICAgICAgUmVuZGVyQmxvY2sge1B9IGF0
ICgwLDApIHNpemUgNzg0eDIxCisgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDAp
IHNpemUgNzAzeDIxCisgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA3MDM6ICJU
aGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBuZXN0ZWQgaWZyYW1lcyBkbyBub3QgY2F1c2UgYXNzZXJ0
aW9uIGZhaWx1cmUsIHdoZW4gamF2YXNjcmlwdCBpcyBmb3JjaW5nIGxheW91dC4iCisgICAgICBS
ZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoMCwzNykgc2l6ZSA3ODR4MTA0CisgICAgICAgIFJl
bmRlclBhcnRPYmplY3Qge0lGUkFNRX0gYXQgKDAsMCkgc2l6ZSAxMDR4MTA0IFtib3JkZXI6ICgy
cHggaW5zZXQgIzAwMDAwMCldCisgICAgICAgICAgbGF5ZXIgYXQgKDAsMCkgc2l6ZSAxMDB4MTAw
CisgICAgICAgICAgICBSZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgMTAweDEwMAorICAgICAgICAg
IGxheWVyIGF0ICgwLDApIHNpemUgMTAweDEwMAorICAgICAgICAgICAgUmVuZGVyQmxvY2sge0hU
TUx9IGF0ICgwLDApIHNpemUgMTAweDEwMAorICAgICAgICAgICAgICBSZW5kZXJCb2R5IHtCT0RZ
fSBhdCAoOCw4KSBzaXplIDg0eDg0IFtiZ2NvbG9yPSMwMDgwMDBdCisgICAgICAgICAgICAgICAg
UmVuZGVyUGFydE9iamVjdCB7SUZSQU1FfSBhdCAoMCwwKSBzaXplIDU0eDU0IFtib3JkZXI6ICgy
cHggaW5zZXQgIzAwMDAwMCldCisgICAgICAgICAgICAgICAgICBsYXllciBhdCAoMCwwKSBzaXpl
IDUweDUwCisgICAgICAgICAgICAgICAgICAgIFJlbmRlclZpZXcgYXQgKDAsMCkgc2l6ZSA1MHg1
MAorICAgICAgICAgICAgICAgICAgbGF5ZXIgYXQgKDAsMCkgc2l6ZSA1MHg1MAorICAgICAgICAg
ICAgICAgICAgICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA1MHg1MAorICAgICAg
ICAgICAgICAgICAgICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgMzR4MzQgW2Jn
Y29sb3I9I0ZGRkYwMF0KKyAgICAgICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAs
MCkgc2l6ZSAweDAKKyAgICAgICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkg
c2l6ZSAweDAKKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMHgwCisg
ICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDB4MApJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9mcmFtZXMvZmxhdHRlbmluZy9pZnJhbWUtZmxhdHRlbmluZy1maXhlZC13aWR0
aC1hbmQtaGVpZ2h0LW5vLXNjcm9sbGluZy13aXRoLWpzLWZvcmNlZC1sYXlvdXQuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9mbGF0dGVuaW5nL2lmcmFtZS1mbGF0
dGVuaW5nLWZpeGVkLXdpZHRoLWFuZC1oZWlnaHQtbm8tc2Nyb2xsaW5nLXdpdGgtanMtZm9yY2Vk
LWxheW91dC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvZmxh
dHRlbmluZy9pZnJhbWUtZmxhdHRlbmluZy1maXhlZC13aWR0aC1hbmQtaGVpZ2h0LW5vLXNjcm9s
bGluZy13aXRoLWpzLWZvcmNlZC1sYXlvdXQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwz
MiBAQAorPGh0bWw+Cis8aGVhZD4KKyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+
CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLnNldEZyYW1lRmxhdHRlbmluZ0VuYWJsZWQodHJ1ZSk7CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiB0ZXN0KCkKKyAgICAgICAgeworICAgICAgICAgICAgc2V0
VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQorICAgICAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5u
b3RpZnlEb25lKCk7CisgICAgICAgICAgICB9LCAwKTsKKyAgICAgICAgfQorICAgIDwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJ0ZXN0KCkiPgorICAgIDxkaXY+CisgICAgICAgIDxw
PlRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IG5lc3RlZCBpZnJhbWVzIGRvIG5vdCBjYXVzZSBhc3Nl
cnRpb24gZmFpbHVyZSwgd2hlbiBqYXZhc2NyaXB0IGlzIGZvcmNpbmcgbGF5b3V0LjwvcD4KKyAg
ICA8L2Rpdj4KKyAgICA8aWZyYW1lIHNyYz0iZGF0YTp0ZXh0L2h0bWwsCisgICAgICAgICAgICA8
c3R5bGU+Ym9keSB7IGJhY2tncm91bmQtY29sb3I6IGdyZWVuOyB9PC9zdHlsZT4KKyAgICAgICAg
ICAgIDxib2R5PgorICAgICAgICAgICAgPGlmcmFtZSBzcmM9J2RhdGE6dGV4dC9odG1sLAorICAg
ICAgICAgICAgICAgIDxzdHlsZT5ib2R5IHsgYmFja2dyb3VuZC1jb2xvcjogeWVsbG93OyB9PC9z
dHlsZT4KKyAgICAgICAgICAgICAgICA8Ym9keT48L2JvZHk+JyBzY3JvbGxpbmc9J25vJyBoZWln
aHQ9JzUwcHgnIHdpZHRoPSc1MHB4Jz48L2lmcmFtZT4KKyAgICAgICAgICAgIDxzY3JpcHQ+ZG9j
dW1lbnQuYm9keS5vZmZzZXRIZWlnaHQ8L3NjcmlwdD4KKyAgICAgICAgICAgIDwvYm9keT4iIHNj
cm9sbGluZz0ibm8iIGhlaWdodD0iMTAwcHgiIHdpZHRoPSIxMDBweCI+PC9pZnJhbWU+CisgICAg
IDxzY3JpcHQ+ZG9jdW1lbnQuYm9keS5vZmZzZXRIZWlnaHQ8L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131604</attachid>
            <date>2012-03-13 07:02:41 -0700</date>
            <delta_ts>2012-03-14 13:23:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80155-20120313150239.patch</filename>
            <type>text/plain</type>
            <size>12269</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExMDU1NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBACisyMDEyLTAzLTEzICBaYWxhbiBC
dWp0YXMgIDx6YnVqdGFzQGdtYWlsLmNvbT4KKworICAgICAgICBGcmFtZSBmbGF0dGVuaW5nIEFT
U0VSVCghbmVlZHNMYXlvdXQoKSkgaW4gRnJhbWVWaWV3OjpwYWludENvbnRlbnRzKCkKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwMTU1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBlbnN1
cmVzIHRoYXQgYW4gaWZyYW1lIG9ubHkgc2NoZWR1bGVzIGFuZCBjYWxscyBwYXJlbnQncyBsYXlv
dXQsCisgICAgICAgIHdoZW4gaXQgaXMgZ29pbmcgdG8gYmUgZmxhdHRlbmVkLiBOb24tZmxhdHRl
bmVkIGlmcmFtZSBkb2VzIG5vdCBhZmZlY3QKKyAgICAgICAgcGFyZW50J3MgbGF5b3V0LCBzbyBu
b3JtYWwgbGF5b3V0IGZsb3cgYXBwbGllcy4gaXNJblN1YmZyYW1lTGF5b3V0V2l0aEZyYW1lRmxh
dHRlbmluZygpCisgICAgICAgIGZ1bmN0aW9uIGhhcyBiZWVuIGFkZGVkIHRvIHRlc3Qgd2hldGhl
ciBhIHBhcnRpY3VsYXIgY2hpbGQgZnJhbWUgaXMgY2hhbmdpbmcKKyAgICAgICAgcGFyZW50J3Mg
bGF5b3V0LiBUaGlzIGZ1bmN0aW9uIGFsc28gZW5zdXJlcyB0aGF0IHNjaGVkdWxlUmVsYXlvdXQo
KSBhbmQgbGF5b3V0KCkKKyAgICAgICAgYXJlIGluIHN5bmMgb2YgY2hlY2tpbmcgYWdhaW50cyBm
cmFtZSBmbGF0dGVuaW5nLgorCisgICAgICAgIFRlc3Q6IGZhc3QvZnJhbWVzL2ZsYXR0ZW5pbmcv
aWZyYW1lLWZsYXR0ZW5pbmctZml4ZWQtd2lkdGgtYW5kLWhlaWdodC1uby1zY3JvbGxpbmctd2l0
aC1qcy1mb3JjZWQtbGF5b3V0Lmh0bWwKKworICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6YXZvaWRTY3JvbGxiYXJDcmVhdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmxheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZVZpZXc6OnNjaGVkdWxlUmVsYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3
Ojppc0luQ2hpbGRGcmFtZVdpdGhGcmFtZUZsYXR0ZW5pbmcpOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnVwZGF0ZUxheW91dEFuZFN0eWxlSWZOZWVk
ZWRSZWN1cnNpdmUpOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3Lmg6CisgICAgICAgIChGcmFt
ZVZpZXcpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJRnJhbWUuaDoKKyAgICAgICAgKFJl
bmRlcklGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJRnJhbWU6OnJlbmRlck5hbWUp
OgorCiAyMDEyLTAzLTEzICBWc2V2b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFVucmV2aWV3ZWQgaW5zcGVjdG9yIGNvbXBpbGF0aW9uIG1vZHVsZSBuYW1lIGZp
eCBhZnRlciByMTEwNTUwLgpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAkocmV2aXNp
b24gMTEwNTU2KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01Niw2ICs1Niw3IEBACiAjaW5jbHVkZSAiUmVuZGVyQXJlbmEuaCIKICNpbmNs
dWRlICJSZW5kZXJFbWJlZGRlZE9iamVjdC5oIgogI2luY2x1ZGUgIlJlbmRlckZ1bGxTY3JlZW4u
aCIKKyNpbmNsdWRlICJSZW5kZXJJRnJhbWUuaCIKICNpbmNsdWRlICJSZW5kZXJMYXllci5oIgog
I2luY2x1ZGUgIlJlbmRlclBhcnQuaCIKICNpbmNsdWRlICJSZW5kZXJTY3JvbGxiYXIuaCIKQEAg
LTQzOCw3ICs0MzksNyBAQCBib29sIEZyYW1lVmlldzo6YXZvaWRTY3JvbGxiYXJDcmVhdGlvbigp
CiAgICAgQVNTRVJUKG1fZnJhbWUpOwogCiAgICAgLy8gd2l0aCBmcmFtZSBmbGF0dGVuaW5nIG5v
IHN1YmZyYW1lIGNhbiBoYXZlIHNjcm9sbGJhcnMKLSAgICAvLyBidXQgd2UgYWxzbyBjYW5ub3Qg
dHVybiBzY3JvbGxiYXJzIG9mIGFzIHdlIGRldGVybWluZQorICAgIC8vIGJ1dCB3ZSBhbHNvIGNh
bm5vdCB0dXJuIHNjcm9sbGJhcnMgb2ZmIGFzIHdlIGRldGVybWluZQogICAgIC8vIG91ciBmbGF0
dGVuaW5nIHBvbGljeSB1c2luZyB0aGF0LgogCiAgICAgaWYgKCFtX2ZyYW1lLT5vd25lckVsZW1l
bnQoKSkKQEAgLTg5MywxNyArODk0LDE5IEBAIHZvaWQgRnJhbWVWaWV3OjpsYXlvdXQoYm9vbCBh
bGxvd1N1YnRyZWUKICAgICBpZiAobV9pbkxheW91dCkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
Ym9vbCBpblN1YmZyYW1lTGF5b3V0V2l0aEZyYW1lRmxhdHRlbmluZyA9IHBhcmVudCgpICYmIG1f
ZnJhbWUtPnNldHRpbmdzKCkgJiYgbV9mcmFtZS0+c2V0dGluZ3MoKS0+ZnJhbWVGbGF0dGVuaW5n
RW5hYmxlZCgpOworICAgIGJvb2wgaW5DaGlsZEZyYW1lTGF5b3V0V2l0aEZyYW1lRmxhdHRlbmlu
ZyA9IGlzSW5DaGlsZEZyYW1lV2l0aEZyYW1lRmxhdHRlbmluZygpOwogCi0gICAgaWYgKGluU3Vi
ZnJhbWVMYXlvdXRXaXRoRnJhbWVGbGF0dGVuaW5nKSB7Ci0gICAgICAgIGlmIChwYXJlbnQoKS0+
aXNGcmFtZVZpZXcoKSkgewotICAgICAgICAgICAgRnJhbWVWaWV3KiBwYXJlbnRWaWV3ID0gICBz
dGF0aWNfY2FzdDxGcmFtZVZpZXcqPihwYXJlbnQoKSk7Ci0gICAgICAgICAgICBpZiAoIXBhcmVu
dFZpZXctPm1fbmVzdGVkTGF5b3V0Q291bnQpIHsKLSAgICAgICAgICAgICAgICB3aGlsZSAocGFy
ZW50Vmlldy0+cGFyZW50KCkgJiYgcGFyZW50Vmlldy0+cGFyZW50KCktPmlzRnJhbWVWaWV3KCkp
Ci0gICAgICAgICAgICAgICAgICAgIHBhcmVudFZpZXcgPSBzdGF0aWNfY2FzdDxGcmFtZVZpZXcq
PihwYXJlbnRWaWV3LT5wYXJlbnQoKSk7Ci0gICAgICAgICAgICAgICAgcGFyZW50Vmlldy0+bGF5
b3V0KGFsbG93U3VidHJlZSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAg
fQorICAgIGlmIChpbkNoaWxkRnJhbWVMYXlvdXRXaXRoRnJhbWVGbGF0dGVuaW5nKSB7CisgICAg
ICAgIEZyYW1lVmlldyogcGFyZW50VmlldyA9IHBhcmVudEZyYW1lVmlldygpOworICAgICAgICBp
ZiAocGFyZW50VmlldyAmJiAhcGFyZW50Vmlldy0+bV9uZXN0ZWRMYXlvdXRDb3VudCkgeworICAg
ICAgICAgICAgd2hpbGUgKHBhcmVudFZpZXctPnBhcmVudEZyYW1lVmlldygpKQorICAgICAgICAg
ICAgICAgIHBhcmVudFZpZXcgPSBwYXJlbnRWaWV3LT5wYXJlbnRGcmFtZVZpZXcoKTsKKworICAg
ICAgICAgICAgcGFyZW50Vmlldy0+bGF5b3V0KGFsbG93U3VidHJlZSk7CisKKyAgICAgICAgICAg
IFJlbmRlck9iamVjdCogcm9vdCA9IG1fbGF5b3V0Um9vdCA/IG1fbGF5b3V0Um9vdCA6IG1fZnJh
bWUtPmRvY3VtZW50KCktPnJlbmRlcmVyKCk7CisgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKHJv
b3QsICFyb290LT5uZWVkc0xheW91dCgpKTsKKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogICAgIH0KIApAQCAtOTQyLDcgKzk0NSw3IEBAIHZvaWQgRnJhbWVWaWV3OjpsYXlvdXQoYm9v
bCBhbGxvd1N1YnRyZWUKICAgICB7CiAgICAgICAgIFRlbXBvcmFyeUNoYW5nZTxib29sPiBjaGFu
Z2VTY2hlZHVsaW5nRW5hYmxlZChtX2xheW91dFNjaGVkdWxpbmdFbmFibGVkLCBmYWxzZSk7CiAK
LSAgICAgICAgaWYgKCFtX25lc3RlZExheW91dENvdW50ICYmICFtX2luU3luY2hyb25vdXNQb3N0
TGF5b3V0ICYmIG1fcG9zdExheW91dFRhc2tzVGltZXIuaXNBY3RpdmUoKSAmJiAhaW5TdWJmcmFt
ZUxheW91dFdpdGhGcmFtZUZsYXR0ZW5pbmcpIHsKKyAgICAgICAgaWYgKCFtX25lc3RlZExheW91
dENvdW50ICYmICFtX2luU3luY2hyb25vdXNQb3N0TGF5b3V0ICYmIG1fcG9zdExheW91dFRhc2tz
VGltZXIuaXNBY3RpdmUoKSAmJiAhaW5DaGlsZEZyYW1lTGF5b3V0V2l0aEZyYW1lRmxhdHRlbmlu
ZykgewogICAgICAgICAgICAgLy8gVGhpcyBpcyBhIG5ldyB0b3AtbGV2ZWwgbGF5b3V0LiBJZiB0
aGVyZSBhcmUgYW55IHJlbWFpbmluZyB0YXNrcyBmcm9tIHRoZSBwcmV2aW91cwogICAgICAgICAg
ICAgLy8gbGF5b3V0LCBmaW5pc2ggdGhlbSBub3cuCiAgICAgICAgICAgICBtX2luU3luY2hyb25v
dXNQb3N0TGF5b3V0ID0gdHJ1ZTsKQEAgLTExMjAsNyArMTEyMyw3IEBAIHZvaWQgRnJhbWVWaWV3
OjpsYXlvdXQoYm9vbCBhbGxvd1N1YnRyZWUKIAogICAgIGlmICghbV9wb3N0TGF5b3V0VGFza3NU
aW1lci5pc0FjdGl2ZSgpKSB7CiAgICAgICAgIGlmICghbV9pblN5bmNocm9ub3VzUG9zdExheW91
dCkgewotICAgICAgICAgICAgaWYgKGluU3ViZnJhbWVMYXlvdXRXaXRoRnJhbWVGbGF0dGVuaW5n
KSB7CisgICAgICAgICAgICBpZiAoaW5DaGlsZEZyYW1lTGF5b3V0V2l0aEZyYW1lRmxhdHRlbmlu
ZykgewogICAgICAgICAgICAgICAgIGlmIChSZW5kZXJWaWV3KiByb290ID0gcm9vdFJlbmRlcmVy
KHRoaXMpKQogICAgICAgICAgICAgICAgICAgICByb290LT51cGRhdGVXaWRnZXRQb3NpdGlvbnMo
KTsKICAgICAgICAgICAgIH0gZWxzZSB7CkBAIC0xMTMxLDcgKzExMzQsNyBAQCB2b2lkIEZyYW1l
Vmlldzo6bGF5b3V0KGJvb2wgYWxsb3dTdWJ0cmVlCiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
ICAgICAgICAgCi0gICAgICAgIGlmICghbV9wb3N0TGF5b3V0VGFza3NUaW1lci5pc0FjdGl2ZSgp
ICYmIChuZWVkc0xheW91dCgpIHx8IG1faW5TeW5jaHJvbm91c1Bvc3RMYXlvdXQgfHwgaW5TdWJm
cmFtZUxheW91dFdpdGhGcmFtZUZsYXR0ZW5pbmcpKSB7CisgICAgICAgIGlmICghbV9wb3N0TGF5
b3V0VGFza3NUaW1lci5pc0FjdGl2ZSgpICYmIChuZWVkc0xheW91dCgpIHx8IG1faW5TeW5jaHJv
bm91c1Bvc3RMYXlvdXQgfHwgaW5DaGlsZEZyYW1lTGF5b3V0V2l0aEZyYW1lRmxhdHRlbmluZykp
IHsKICAgICAgICAgICAgIC8vIElmIHdlIG5lZWQgbGF5b3V0IG9yIGFyZSBhbHJlYWR5IGluIGEg
c3luY2hyb25vdXMgY2FsbCB0byBwb3N0TGF5b3V0VGFza3MoKSwgCiAgICAgICAgICAgICAvLyBk
ZWZlciB3aWRnZXQgdXBkYXRlcyBhbmQgZXZlbnQgZGlzcGF0Y2ggdW50aWwgYWZ0ZXIgd2UgcmV0
dXJuLiBwb3N0TGF5b3V0VGFza3MoKQogICAgICAgICAgICAgLy8gY2FuIG1ha2UgdXMgbmVlZCB0
byB1cGRhdGUgYWdhaW4sIGFuZCB3ZSBjYW4gZ2V0IHN0dWNrIGluIGEgbmFzdHkgY3ljbGUgdW5s
ZXNzCkBAIC0xOTg2LDEyICsxOTg5LDEwIEBAIHZvaWQgRnJhbWVWaWV3OjpzY2hlZHVsZVJlbGF5
b3V0KCkKICAgICBpZiAoIW1fZnJhbWUtPmRvY3VtZW50KCktPnNob3VsZFNjaGVkdWxlTGF5b3V0
KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIC8vIFdoZW4gZnJhbWUgZmxhdHRlbmluZyBpcyBl
bmFibGVkLCB0aGUgY29udGVudHMgb2YgdGhlIGZyYW1lIGFmZmVjdHMgbGF5b3V0IG9mIHRoZSBw
YXJlbnQgZnJhbWVzLgorICAgIC8vIFdoZW4gZnJhbWUgZmxhdHRlbmluZyBpcyBlbmFibGVkLCB0
aGUgY29udGVudHMgb2YgdGhlIGZyYW1lIGNvdWxkIGFmZmVjdCB0aGUgbGF5b3V0IG9mIHRoZSBw
YXJlbnQgZnJhbWVzLgogICAgIC8vIEFsc28gaW52YWxpZGF0ZSBwYXJlbnQgZnJhbWUgc3RhcnRp
bmcgZnJvbSB0aGUgb3duZXIgZWxlbWVudCBvZiB0aGlzIGZyYW1lLgotICAgIGlmIChtX2ZyYW1l
LT5zZXR0aW5ncygpICYmIG1fZnJhbWUtPnNldHRpbmdzKCktPmZyYW1lRmxhdHRlbmluZ0VuYWJs
ZWQoKSAmJiBtX2ZyYW1lLT5vd25lclJlbmRlcmVyKCkpIHsKLSAgICAgICAgaWYgKG1fZnJhbWUt
Pm93bmVyRWxlbWVudCgpLT5oYXNUYWdOYW1lKGlmcmFtZVRhZykgfHwgbV9mcmFtZS0+b3duZXJF
bGVtZW50KCktPmhhc1RhZ05hbWUoZnJhbWVUYWcpKQotICAgICAgICAgICAgbV9mcmFtZS0+b3du
ZXJSZW5kZXJlcigpLT5zZXROZWVkc0xheW91dCh0cnVlLCB0cnVlKTsKLSAgICB9CisgICAgaWYg
KGlzSW5DaGlsZEZyYW1lV2l0aEZyYW1lRmxhdHRlbmluZygpICYmIG1fZnJhbWUtPm93bmVyUmVu
ZGVyZXIoKSkKKyAgICAgICAgbV9mcmFtZS0+b3duZXJSZW5kZXJlcigpLT5zZXROZWVkc0xheW91
dCh0cnVlLCB0cnVlKTsKIAogICAgIGludCBkZWxheSA9IG1fZnJhbWUtPmRvY3VtZW50KCktPm1p
bmltdW1MYXlvdXREZWxheSgpOwogICAgIGlmIChtX2xheW91dFRpbWVyLmlzQWN0aXZlKCkgJiYg
bV9kZWxheWVkTGF5b3V0ICYmICFkZWxheSkKQEAgLTI4MjUsNiArMjgyNiwyNSBAQCBGcmFtZVZp
ZXcqIEZyYW1lVmlldzo6cGFyZW50RnJhbWVWaWV3KCkKICAgICByZXR1cm4gMDsKIH0KIAorYm9v
bCBGcmFtZVZpZXc6OmlzSW5DaGlsZEZyYW1lV2l0aEZyYW1lRmxhdHRlbmluZygpCit7CisgICAg
aWYgKCFwYXJlbnQoKSB8fCAhbV9mcmFtZS0+b3duZXJFbGVtZW50KCkgfHwgIW1fZnJhbWUtPnNl
dHRpbmdzKCkgfHwgIW1fZnJhbWUtPnNldHRpbmdzKCktPmZyYW1lRmxhdHRlbmluZ0VuYWJsZWQo
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gRnJhbWUgZmxhdHRlbmluZyBhcHBs
aWVzIHdoZW4gdGhlIG93bmVyIGVsZW1lbnQgaXMgZWl0aGVyIGluIGEgZnJhbWVzZXQgb3IKKyAg
ICAvLyBhbiBpZnJhbWUgd2l0aCBmbGF0dGVuaW5nIHBhcmFtZXRlcnMuCisgICAgaWYgKG1fZnJh
bWUtPm93bmVyRWxlbWVudCgpLT5oYXNUYWdOYW1lKGlmcmFtZVRhZykpIHsKKyAgICAgICAgUmVu
ZGVySUZyYW1lKiBpZnJhbWVSZW5kZXJlciA9IHRvUmVuZGVySUZyYW1lKG1fZnJhbWUtPm93bmVy
RWxlbWVudCgpLT5yZW5kZXJQYXJ0KCkpOworCisgICAgICAgIGlmIChpZnJhbWVSZW5kZXJlci0+
ZmxhdHRlbkZyYW1lKCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIH0gZWxzZSBp
ZiAobV9mcmFtZS0+b3duZXJFbGVtZW50KCktPmhhc1RhZ05hbWUoZnJhbWVUYWcpKQorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKworICAgIHJldHVybiBmYWxzZTsKK30KKwogdm9pZCBGcmFtZVZpZXc6
OnVwZGF0ZUNvbnRyb2xUaW50cygpCiB7CiAgICAgLy8gVGhpcyBpcyBjYWxsZWQgd2hlbiBjb250
cm9sIHRpbnRzIGFyZSBjaGFuZ2VkIGZyb20gYXF1YS9ncmFwaGl0ZSB0byBjbGVhciBhbmQgdmlj
ZSB2ZXJzYS4KQEAgLTMwMzIsNiArMzA1MiwxMSBAQCB2b2lkIEZyYW1lVmlldzo6dXBkYXRlTGF5
b3V0QW5kU3R5bGVJZk5lCiAgICAgLy8gdXBkYXRlTGF5b3V0QW5kU3R5bGVJZk5lZWRlZFJlY3Vy
c2l2ZSBpcyBjYWxsZWQgd2hlbiB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSBzdHlsZSBhbmQgbGF5b3V0
IGFyZSB1cC10by1kYXRlIGJlZm9yZQogICAgIC8vIHBhaW50aW5nLCBzbyB3ZSBuZWVkIHRvIGZs
dXNoIG91dCBhbnkgZGVmZXJyZWQgcmVwYWludHMgdG9vLgogICAgIGZsdXNoRGVmZXJyZWRSZXBh
aW50cygpOworCisgICAgLy8gV2hlbiBmcmFtZSBmbGF0dGVuaW5nIGlzIG9uLCBjaGlsZCBmcmFt
ZSBjYW4gbWFyayBwYXJlbnQgZnJhbWUgZGlydHkuIEluIHN1Y2ggY2FzZSwgY2hpbGQgZnJhbWUK
KyAgICAvLyBuZWVkcyB0byBjYWxsIGxheW91dCBvbiBwYXJlbnQgZnJhbWUgcmVjdXJzaXZlbHku
CisgICAgLy8gVGhpcyBhc3NlcnQgZW5zdXJlcyB0aGF0IHBhcmVudCBmcmFtZXMgYXJlIGNsZWFu
LCB3aGVuIGNoaWxkIGZyYW1lcyBmaW5pc2hlZCB1cGRhdGluZyBsYXlvdXQgYW5kIHN0eWxlLgor
ICAgIEFTU0VSVCghbmVlZHNMYXlvdXQoKSk7CiB9CiAgICAgCiB2b2lkIEZyYW1lVmlldzo6Zmx1
c2hEZWZlcnJlZFJlcGFpbnRzKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAkocmV2aXNp
b24gMTEwNTU2KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAkod29ya2luZyBj
b3B5KQpAQCAtNDExLDYgKzQxMSw4IEBAIHByaXZhdGU6CiAKICAgICBGcmFtZVZpZXcqIHBhcmVu
dEZyYW1lVmlldygpIGNvbnN0OwogCisgICAgYm9vbCBpc0luQ2hpbGRGcmFtZVdpdGhGcmFtZUZs
YXR0ZW5pbmcoKTsKKwogICAgIHZpcnR1YWwgQVhPYmplY3RDYWNoZSogYXhPYmplY3RDYWNoZSgp
IGNvbnN0OwogICAgIHZvaWQgbm90aWZ5V2lkZ2V0c0luQWxsRnJhbWVzKFdpZGdldE5vdGlmaWNh
dGlvbik7CiAgICAgCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySUZyYW1l
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklGcmFtZS5o
CShyZXZpc2lvbiAxMTA1NTYpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySUZy
YW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDggQEAgY2xhc3MgUmVuZGVySUZyYW1l
IDogcHVibGljIFJlbmRlckZyYW1lQgogcHVibGljOgogICAgIGV4cGxpY2l0IFJlbmRlcklGcmFt
ZShFbGVtZW50Kik7CiAKKyAgICBib29sIGZsYXR0ZW5GcmFtZSgpOworCiBwcml2YXRlOgogICAg
IHZpcnR1YWwgdm9pZCBjb21wdXRlTG9naWNhbEhlaWdodCgpOwogICAgIHZpcnR1YWwgdm9pZCBj
b21wdXRlTG9naWNhbFdpZHRoKCk7CkBAIC00NCw4ICs0Niw2IEBAIHByaXZhdGU6CiAKICAgICB2
aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCB7IHJldHVybiAiUmVuZGVyUGFy
dE9iamVjdCI7IH0gLy8gTHlpbmcgZm9yIG5vdyB0byBhdm9pZCBicmVha2luZyB0ZXN0cwogCi0g
ICAgYm9vbCBmbGF0dGVuRnJhbWUoKTsKLQogfTsKIAogaW5saW5lIFJlbmRlcklGcmFtZSogdG9S
ZW5kZXJJRnJhbWUoUmVuZGVyT2JqZWN0KiBvYmplY3QpCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMTA1
NTYpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
MyBAQAorMjAxMi0wMy0xMyAgWmFsYW4gQnVqdGFzICA8emJ1anRhc0BnbWFpbC5jb20+CisKKyAg
ICAgICAgRnJhbWUgZmxhdHRlbmluZyBBU1NFUlQoIW5lZWRzTGF5b3V0KCkpIGluIEZyYW1lVmll
dzo6cGFpbnRDb250ZW50cygpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD04MDE1NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogZmFzdC9mcmFtZXMvZmxhdHRlbmluZy9pZnJhbWUtZmxhdHRlbmluZy1maXhl
ZC13aWR0aC1hbmQtaGVpZ2h0LW5vLXNjcm9sbGluZy13aXRoLWpzLWZvcmNlZC1sYXlvdXQtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9mbGF0dGVuaW5nL2lmcmFt
ZS1mbGF0dGVuaW5nLWZpeGVkLXdpZHRoLWFuZC1oZWlnaHQtbm8tc2Nyb2xsaW5nLXdpdGgtanMt
Zm9yY2VkLWxheW91dC5odG1sOiBBZGRlZC4KKwogMjAxMi0wMy0xMyAgSGFqaW1lIE1vcnJpdGEg
IDxtb3JyaXRhQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCBza2lwcGluZyBz
b21lIG1vcmUgZmFpbGluZyB0ZXN0cy4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2Zs
YXR0ZW5pbmcvaWZyYW1lLWZsYXR0ZW5pbmctZml4ZWQtd2lkdGgtYW5kLWhlaWdodC1uby1zY3Jv
bGxpbmctd2l0aC1qcy1mb3JjZWQtbGF5b3V0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9mbGF0dGVuaW5nL2lmcmFtZS1mbGF0dGVuaW5nLWZpeGVk
LXdpZHRoLWFuZC1oZWlnaHQtbm8tc2Nyb2xsaW5nLXdpdGgtanMtZm9yY2VkLWxheW91dC1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9mbGF0dGVu
aW5nL2lmcmFtZS1mbGF0dGVuaW5nLWZpeGVkLXdpZHRoLWFuZC1oZWlnaHQtbm8tc2Nyb2xsaW5n
LXdpdGgtanMtZm9yY2VkLWxheW91dC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMyBAQAorVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgbmVzdGVkIGlmcmFtZXMgZG8gbm90IGNh
dXNlIGFzc2VydGlvbiBmYWlsdXJlLCB3aGVuIGphdmFzY3JpcHQgaXMgZm9yY2luZyBsYXlvdXQu
IFBBU1MgaWYgbm8gYXNzZXJ0IGluIGRlYnVnLgorCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
ZnJhbWVzL2ZsYXR0ZW5pbmcvaWZyYW1lLWZsYXR0ZW5pbmctZml4ZWQtd2lkdGgtYW5kLWhlaWdo
dC1uby1zY3JvbGxpbmctd2l0aC1qcy1mb3JjZWQtbGF5b3V0Lmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvZmxhdHRlbmluZy9pZnJhbWUtZmxhdHRlbmluZy1maXhl
ZC13aWR0aC1hbmQtaGVpZ2h0LW5vLXNjcm9sbGluZy13aXRoLWpzLWZvcmNlZC1sYXlvdXQuaHRt
bAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2ZsYXR0ZW5pbmcvaWZy
YW1lLWZsYXR0ZW5pbmctZml4ZWQtd2lkdGgtYW5kLWhlaWdodC1uby1zY3JvbGxpbmctd2l0aC1q
cy1mb3JjZWQtbGF5b3V0Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzMgQEAKKzxodG1s
PgorPGhlYWQ+CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgICAgICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRG
cmFtZUZsYXR0ZW5pbmdFbmFibGVkKHRydWUpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rp
b24gdGVzdCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
CisgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAg
ICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAg
ICAgICAgfSwgMCk7CisgICAgICAgIH0KKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9u
bG9hZD0idGVzdCgpIj4KKyAgICA8ZGl2PgorICAgICAgICA8cD5UaGlzIHRlc3QgdmVyaWZpZXMg
dGhhdCBuZXN0ZWQgaWZyYW1lcyBkbyBub3QgY2F1c2UgYXNzZXJ0aW9uIGZhaWx1cmUsIHdoZW4g
amF2YXNjcmlwdCBpcyBmb3JjaW5nIGxheW91dC4gUEFTUyBpZiBubyBhc3NlcnQgaW4gZGVidWcu
PC9wPgorICAgIDwvZGl2PgorICAgIDxpZnJhbWUgc3JjPSJkYXRhOnRleHQvaHRtbCwKKyAgICAg
ICAgICAgIDxzdHlsZT5ib2R5IHsgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47IH08L3N0eWxlPgor
ICAgICAgICAgICAgPGJvZHk+CisgICAgICAgICAgICA8aWZyYW1lIHNyYz0nZGF0YTp0ZXh0L2h0
bWwsCisgICAgICAgICAgICAgICAgPHN0eWxlPmJvZHkgeyBiYWNrZ3JvdW5kLWNvbG9yOiB5ZWxs
b3c7IH08L3N0eWxlPgorICAgICAgICAgICAgICAgIDxib2R5PjwvYm9keT4nIHNjcm9sbGluZz0n
bm8nIGhlaWdodD0nNTBweCcgd2lkdGg9JzUwcHgnPjwvaWZyYW1lPgorICAgICAgICAgICAgPHNj
cmlwdD5kb2N1bWVudC5ib2R5Lm9mZnNldEhlaWdodDwvc2NyaXB0PgorICAgICAgICAgICAgPC9i
b2R5PiIgc2Nyb2xsaW5nPSJubyIgaGVpZ2h0PSIxMDBweCIgd2lkdGg9IjEwMHB4Ij48L2lmcmFt
ZT4KKyAgICAgPHNjcmlwdD5kb2N1bWVudC5ib2R5Lm9mZnNldEhlaWdodDwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>