<?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>33927</bug_id>
          
          <creation_ts>2010-01-20 16:51:23 -0800</creation_ts>
          <short_desc>Hit testing on composited plugins is broken</short_desc>
          <delta_ts>2010-01-21 15:59:56 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>darin</cc>
    
    <cc>eric</cc>
    
    <cc>gustavo</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>182978</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-01-20 16:51:23 -0800</bug_when>
    <thetext>Hit testing on composited plugins is broken</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182979</commentid>
    <comment_count>1</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-01-20 16:51:53 -0800</bug_when>
    <thetext>&lt;rdar://problem/7559069&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182983</commentid>
    <comment_count>2</comment_count>
      <attachid>47080</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-01-20 16:59:44 -0800</bug_when>
    <thetext>Created attachment 47080
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183034</commentid>
    <comment_count>3</comment_count>
      <attachid>47080</attachid>
    <who name="">mitz</who>
    <bug_when>2010-01-20 19:12:57 -0800</bug_when>
    <thetext>Comment on attachment 47080
Patch

&gt; +/*    border: 1px solid black;*/

Please remove the commented-out property.

&gt; +2010-01-20  Simon Fraser  &lt;simon.fraser@apple.com&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        Hit testing on composited plugins is broken
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=33927
&gt; +        &lt;rdar://problem/7559069&gt;
&gt; +
&gt; +        
&gt; +        Test: plugins/mouse-events-fixedpos.html

Extra empty line.

&gt; +        * page/FrameView.cpp:
&gt; +        (WebCore::FrameView::scrollPositionChanged):
&gt; +        * platform/graphics/GraphicsContext.h:
&gt; +        (WebCore::GraphicsContext::translate):
&gt; +        * platform/graphics/IntSize.h:
&gt; +        (WebCore::IntSize::isZeroSize):
&gt; +        * platform/mac/WidgetMac.mm:
&gt; +        (WebCore::Widget::paint):
&gt; +        * rendering/RenderWidget.cpp:
&gt; +        (WebCore::RenderWidget::paint):

I think you can provide more detail about the changes to each function.

&gt; @@ -950,6 +950,10 @@ void FrameView::scrollPositionChanged()
&gt;      if (layer)
&gt;          layer-&gt;updateLayerPositions(RenderLayer::UpdateCompositingLayers);
&gt;  #endif
&gt; +
&gt; +    // Update widget positions to take care of widgets inside fixed position elements.
&gt; +    if (RenderView* root = m_frame-&gt;contentRenderer())
&gt; +        root-&gt;updateWidgetPositions();

updateWidgetPositions() can potentially call layout() or call into plug-in code. Is it safe to do here? Can scrollPositionChanged() ever be called during layout?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183229</commentid>
    <comment_count>4</comment_count>
      <attachid>47080</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-01-21 09:53:15 -0800</bug_when>
    <thetext>Comment on attachment 47080
Patch

&gt; +    // Update widget positions to take care of widgets inside fixed position elements.
&gt; +    if (RenderView* root = m_frame-&gt;contentRenderer())
&gt; +        root-&gt;updateWidgetPositions();

Does this do unneeded expensive work on pages that have no fixed position elements? Will it make scrolling noticeably slower in such cases?

&gt; +        void translate(const FloatSize&amp; size) { translate(size.width(), size.height()); }
&gt;          void translate(float x, float y);

Can we get rid of the separate x, y version of this function at some point?

&gt; +    bool isZeroSize() const { return !m_width &amp;&amp; !m_height; }

Why not just isZero()? The class&apos;s name already has the word size in it.

&gt; +            if (!paintOffset.isZeroSize()) {
&gt; +                paintInfo.context-&gt;translate(paintOffset);
&gt; +                paintRect.move(-paintOffset);
&gt; +            }

&gt; +            if (!paintOffset.isZeroSize())
&gt; +                paintInfo.context-&gt;translate(-paintOffset);

Is the zero check here a performance optimization? Could that optimization go into GraphicsContext::translate instead of the call site?

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183247</commentid>
    <comment_count>5</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-01-21 10:57:05 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 47080 [details])
&gt; &gt; +    // Update widget positions to take care of widgets inside fixed position elements.
&gt; &gt; +    if (RenderView* root = m_frame-&gt;contentRenderer())
&gt; &gt; +        root-&gt;updateWidgetPositions();
&gt; 
&gt; Does this do unneeded expensive work on pages that have no fixed position
&gt; elements? Will it make scrolling noticeably slower in such cases?

It&apos;s pretty fast; it uses a map of widgets, rather than crawling the tree.

&gt; &gt; +        void translate(const FloatSize&amp; size) { translate(size.width(), size.height()); }
&gt; &gt;          void translate(float x, float y);
&gt; 
&gt; Can we get rid of the separate x, y version of this function at some point?

Eventually!

&gt; 
&gt; &gt; +    bool isZeroSize() const { return !m_width &amp;&amp; !m_height; }
&gt; 
&gt; Why not just isZero()? The class&apos;s name already has the word size in it.

Right.

&gt; 
&gt; &gt; +            if (!paintOffset.isZeroSize()) {
&gt; &gt; +                paintInfo.context-&gt;translate(paintOffset);
&gt; &gt; +                paintRect.move(-paintOffset);
&gt; &gt; +            }
&gt; 
&gt; &gt; +            if (!paintOffset.isZeroSize())
&gt; &gt; +                paintInfo.context-&gt;translate(-paintOffset);
&gt; 
&gt; Is the zero check here a performance optimization? Could that optimization go
&gt; into GraphicsContext::translate instead of the call site?

GraphicsContext would need to avoid setting m_userToDeviceTransformKnownToBeIdentity for zero translations, rotations etc. This should be done as a separate patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183254</commentid>
    <comment_count>6</comment_count>
      <attachid>47132</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-01-21 11:24:59 -0800</bug_when>
    <thetext>Created attachment 47132
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183255</commentid>
    <comment_count>7</comment_count>
      <attachid>47132</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2010-01-21 11:27:29 -0800</bug_when>
    <thetext>Comment on attachment 47132
Patch

r=me.  You still need to fix scrollbars, though, since they have the same problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183276</commentid>
    <comment_count>8</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-01-21 12:14:47 -0800</bug_when>
    <thetext>I filed bug 33965 to fix scrollbar updating later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183279</commentid>
    <comment_count>9</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-01-21 12:27:31 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/53637</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183358</commentid>
    <comment_count>10</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-01-21 15:55:59 -0800</bug_when>
    <thetext>This caused the Gtk bots to fail. :( Please fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183360</commentid>
    <comment_count>11</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-01-21 15:59:56 -0800</bug_when>
    <thetext>Nevermind.  looks like you already fixed.  Thank you!  I guess I was looking at an old copy of /console. :)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47080</attachid>
            <date>2010-01-20 16:59:44 -0800</date>
            <delta_ts>2010-01-21 11:24:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-33927-20100120165943.patch</filename>
            <type>text/plain</type>
            <size>8587</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhY2I2NzdkLi5lZTc3YmQ3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTAtMDEt
MjAgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSGl0IHRlc3Rpbmcgb24gY29tcG9z
aXRlZCBwbHVnaW5zIGlzIGJyb2tlbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MzM5MjcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc1NTkwNjk+CisK
KyAgICAgICAgVGVzdGNhc2UgZm9yIGhpdCB0ZXN0aW5nIG9uIGEgZml4ZWQtcG9zaXRpb24gcGx1
Z2luIGFmdGVyIHNjcm9sbGluZy4KKyAgICAgICAgCisgICAgICAgICogcGx1Z2lucy9tb3VzZS1l
dmVudHMtZml4ZWRwb3MtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbHVnaW5zL21v
dXNlLWV2ZW50cy1maXhlZHBvcy5odG1sOiBBZGRlZC4KKwogMjAxMC0wMS0yMCAgQmVuIE11cmRv
Y2ggIDxiZW5tQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21h
bm4uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbHVnaW5zL21vdXNlLWV2ZW50cy1maXhlZHBv
cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbHVnaW5zL21vdXNlLWV2ZW50cy1maXhlZHBv
cy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmVlZmY5
MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsdWdpbnMvbW91c2UtZXZlbnRzLWZp
eGVkcG9zLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDcgQEAKK0NPTlNPTEUgTUVTU0FHRTogbGlu
ZSAwOiBQTFVHSU46IGdldEZvY3VzRXZlbnQKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAwOiBQTFVH
SU46IG1vdXNlRG93biBhdCAoNTAsIDUwKQorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDA6IFBMVUdJ
TjogbW91c2VVcCBhdCAoNTAsIDUwKQorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDA6IFBMVUdJTjog
bW91c2VEb3duIGF0ICg2MCwgNjApCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMDogUExVR0lOOiBt
b3VzZVVwIGF0ICg3MCwgNjApCisKK1Rlc3RzIGZvciB3aWRnZXQgcG9zaXRpb25zIGJlaW5nIGNv
cnJlY3RseSB1cGRhdGVkIGFmdGVyIHNjcm9sbGluZy4gcmRhcjovL3Byb2JsZW0vNzU1OTA2OQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGx1Z2lucy9tb3VzZS1ldmVudHMtZml4ZWRwb3MuaHRt
bCBiL0xheW91dFRlc3RzL3BsdWdpbnMvbW91c2UtZXZlbnRzLWZpeGVkcG9zLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmJhNzZhNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3BsdWdpbnMvbW91c2UtZXZlbnRzLWZpeGVkcG9zLmh0bWwKQEAgLTAsMCAr
MSw1OSBAQAorPGh0bWw+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiIG1lZGlhPSJzY3JlZW4iPgor
ICBib2R5IHsKKyAgICBoZWlnaHQ6IDEwMDBweDsKKyAgfQorCisgIC5maXhlZCB7CisgICAgcG9z
aXRpb246IGZpeGVkOworICAgIGxlZnQ6IDIwcHg7CisgICAgdG9wOiAyMHB4OworLyogICAgYm9y
ZGVyOiAxcHggc29saWQgYmxhY2s7Ki8KKyAgfQorCisgIHAgeworICAgIG1hcmdpbi10b3A6IDIw
MHB4OworICB9CisKKyAgZW1iZWQgeworICAgIG1hcmdpbjogMjBweDsKKyAgfQorPC9zdHlsZT4K
KzxzY3JpcHQ+CisKKyAgZnVuY3Rpb24gcnVuVGVzdCgpCisgIHsKKyAgICB3aW5kb3cuc2Nyb2xs
QnkoNTAsIDUwKTsKKworICAgIGlmICghd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Cisg
ICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUo
IlRoaXMgdGVzdCBkb2VzIG5vdCB3b3JrIGluIG1hbnVhbCBtb2RlLiIpKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKwor
ICAgIHBsZy5ldmVudExvZ2dpbmdFbmFibGVkID0gdHJ1ZTsKKworICAgIGV2ZW50U2VuZGVyLm1v
dXNlTW92ZVRvKDcwLDcwKTsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyg5MCw5MCk7Cisg
ICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOwor
ICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKDEwMCwxMDApOworICAgIGV2ZW50U2VuZGVyLm1v
dXNlRG93bigpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKDExMCwxMDApOworICAgIGV2
ZW50U2VuZGVyLm1vdXNlVXAoKTsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbygyMCwyMCk7
CisKKyAgICBwbGcuZXZlbnRMb2dnaW5nRW5hYmxlZCA9IGZhbHNlOyAvLyBzdG9wIGxvZ2dpbmcg
c28gb3VyIG91dHB1dCBkb2Vzbid0IGJsZWVkIGludG8gdGhlIG5leHQgdGVzdAorICB9CisgIAor
ICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIHJ1blRlc3QsIGZhbHNlKTsKKzwvc2Ny
aXB0PgorPGJvZHk+CisgIDxkaXYgY2xhc3M9ImZpeGVkIj4KKyAgICA8ZW1iZWQgbmFtZT0icGxn
IiB0eXBlPSJhcHBsaWNhdGlvbi94LXdlYmtpdC10ZXN0LW5ldHNjYXBlIiB3aWR0aD0xMDAgaGVp
Z2h0PTEwMD48L2VtYmVkPgorICA8L2Rpdj4KKworPHA+VGVzdHMgZm9yIHdpZGdldCBwb3NpdGlv
bnMgYmVpbmcgY29ycmVjdGx5IHVwZGF0ZWQgYWZ0ZXIgc2Nyb2xsaW5nLiA8YSBocmVmPSJyZGFy
Oi8vcHJvYmxlbS83NTU5MDY5Ij5yZGFyOi8vcHJvYmxlbS83NTU5MDY5PC9hPjwvcD4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggZDVlYWU3Yi4uNzVlOWJmZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAxMC0wMS0yMCAg
U2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBIaXQgdGVzdGluZyBvbiBjb21wb3NpdGVk
IHBsdWdpbnMgaXMgYnJva2VuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0zMzkyNworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzU1OTA2OT4KKworICAg
ICAgICAKKyAgICAgICAgVGVzdDogcGx1Z2lucy9tb3VzZS1ldmVudHMtZml4ZWRwb3MuaHRtbAor
CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVW
aWV3OjpzY3JvbGxQb3NpdGlvbkNoYW5nZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojp0
cmFuc2xhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ludFNpemUuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkludFNpemU6OmlzWmVyb1NpemUpOgorICAgICAgICAqIHBsYXRmb3JtL21h
Yy9XaWRnZXRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpXaWRnZXQ6OnBhaW50KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
cldpZGdldDo6cGFpbnQpOgorCiAyMDEwLTAxLTIwICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1F0XSBVbnJldmlld2VkIGJ1aWxkZml4IGZvciByNTM1
NDcuCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1dlYkNvcmUvcGFn
ZS9GcmFtZVZpZXcuY3BwCmluZGV4IDg2ZTEzYTcuLmRlNTAzZjYgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBA
IC05NTAsNiArOTUwLDEwIEBAIHZvaWQgRnJhbWVWaWV3OjpzY3JvbGxQb3NpdGlvbkNoYW5nZWQo
KQogICAgIGlmIChsYXllcikKICAgICAgICAgbGF5ZXItPnVwZGF0ZUxheWVyUG9zaXRpb25zKFJl
bmRlckxheWVyOjpVcGRhdGVDb21wb3NpdGluZ0xheWVycyk7CiAjZW5kaWYKKworICAgIC8vIFVw
ZGF0ZSB3aWRnZXQgcG9zaXRpb25zIHRvIHRha2UgY2FyZSBvZiB3aWRnZXRzIGluc2lkZSBmaXhl
ZCBwb3NpdGlvbiBlbGVtZW50cy4KKyAgICBpZiAoUmVuZGVyVmlldyogcm9vdCA9IG1fZnJhbWUt
PmNvbnRlbnRSZW5kZXJlcigpKQorICAgICAgICByb290LT51cGRhdGVXaWRnZXRQb3NpdGlvbnMo
KTsKIH0KIAogSG9zdFdpbmRvdyogRnJhbWVWaWV3Ojpob3N0V2luZG93KCkgY29uc3QKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCmluZGV4IDg4ZTQxZTYuLjlk
N2JhYzMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0LmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApA
QCAtMjkxLDYgKzI5MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2b2lkIHNj
YWxlKGNvbnN0IEZsb2F0U2l6ZSYpOwogICAgICAgICB2b2lkIHJvdGF0ZShmbG9hdCBhbmdsZUlu
UmFkaWFucyk7CisgICAgICAgIHZvaWQgdHJhbnNsYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkg
eyB0cmFuc2xhdGUoc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsgfQogICAgICAgICB2b2lk
IHRyYW5zbGF0ZShmbG9hdCB4LCBmbG9hdCB5KTsKICAgICAgICAgSW50UG9pbnQgb3JpZ2luKCk7
CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50U2l6ZS5oIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRTaXplLmgKaW5kZXggYjI0Mjc4NC4uZjA1ODRlMyAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRTaXplLmgKKysrIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRTaXplLmgKQEAgLTY5LDcgKzY5LDggQEAgcHVibGlj
OgogICAgIHZvaWQgc2V0SGVpZ2h0KGludCBoZWlnaHQpIHsgbV9oZWlnaHQgPSBoZWlnaHQ7IH0K
IAogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fd2lkdGggPD0gMCB8fCBtX2hl
aWdodCA8PSAwOyB9Ci0KKyAgICBib29sIGlzWmVyb1NpemUoKSBjb25zdCB7IHJldHVybiAhbV93
aWR0aCAmJiAhbV9oZWlnaHQ7IH0KKyAgICAKICAgICB2b2lkIGV4cGFuZChpbnQgd2lkdGgsIGlu
dCBoZWlnaHQpCiAgICAgewogICAgICAgICBtX3dpZHRoICs9IHdpZHRoOwpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2lkZ2V0TWFjLm1tIGIvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
V2lkZ2V0TWFjLm1tCmluZGV4IDNmZDMwYWEuLmU0NzMwNTMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1dpZGdldE1hYy5tbQorKysgYi9XZWJDb3JlL3BsYXRmb3JtL21hYy9XaWRn
ZXRNYWMubW0KQEAgLTE5Nyw3ICsxOTcsNyBAQCB2b2lkIFdpZGdldDo6cGFpbnQoR3JhcGhpY3ND
b250ZXh0KiBwLCBjb25zdCBJbnRSZWN0JiByKQogICAgICAgICBFTkRfQkxPQ0tfT0JKQ19FWENF
UFRJT05TOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGNhc2Ugb2YgZHJh
d2luZyBpbnRvIGEgYml0bWFwIGNvbnRleHQgb3RoZXIgdGhhbiBhIHdpbmRvdyBiYWNraW5nIHN0
b3JlLiBJdCBnZXRzIGhpdCBiZW5lYXRoCi0gICAgICAgIC8vIC1jYWNoZURpc3BsYXlJblJlY3Q6
dG9CaXRtYXBJbWFnZVJlcDouCisgICAgICAgIC8vIC1jYWNoZURpc3BsYXlJblJlY3Q6dG9CaXRt
YXBJbWFnZVJlcDosIGFuZCB3aGVuIHBhaW50aW5nIGludG8gY29tcG9zaXRpbmcgbGF5ZXJzLgog
CiAgICAgICAgIC8vIFRyYW5zcGFyZW50IHN1YmZyYW1lcyBhcmUgaW4gZmFjdCBpbXBsZW1lbnRl
ZCB3aXRoIHNjcm9sbCB2aWV3cyB0aGF0IHJldHVybiBZRVMgZnJvbSAtZHJhd3NCYWNrZ3JvdW5k
ICh3aGVuZXZlciB0aGUgV2ViVmlldwogICAgICAgICAvLyBpdHNlbGYgaXMgaW4gZHJhd3NCYWNr
Z3JvdW5kIG1vZGUpLiBJbiB0aGUgbm9ybWFsIGRyYXdpbmcgY29kZSBwYXRoLCB0aGUgc2Nyb2xs
IHZpZXdzIGFyZSBuZXZlciBhc2tlZCB0byBkcmF3IHRoZSBiYWNrZ3JvdW5kLApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlcldpZGdldC5jcHAKaW5kZXggYWYxOTllMi4uOGM1NzRmNSAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJXaWRnZXQuY3BwCkBAIC0yNTIsMTggKzI1MiwyNyBAQCB2b2lkIFJlbmRlcldpZGdldDo6
cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGludCB0eCwgaW50IHR5KQogICAgIH0KIAogICAg
IGlmIChtX3dpZGdldCkgewotICAgICAgICAvLyBNb3ZlIHRoZSB3aWRnZXQgaWYgbmVjZXNzYXJ5
LiAgV2Ugbm9ybWFsbHkgbW92ZSBhbmQgcmVzaXplIHdpZGdldHMgZHVyaW5nIGxheW91dCwgYnV0
IHNvbWV0aW1lcwotICAgICAgICAvLyB3aWRnZXRzIGNhbiBtb3ZlIHdpdGhvdXQgbGF5b3V0IG9j
Y3VycmluZyAobW9zdCBub3RhYmx5IHdoZW4geW91IHNjcm9sbCBhIGRvY3VtZW50IHRoYXQKLSAg
ICAgICAgLy8gY29udGFpbnMgZml4ZWQgcG9zaXRpb25lZCBlbGVtZW50cykuCi0gICAgICAgIG1f
d2lkZ2V0LT5tb3ZlKHR4ICsgYm9yZGVyTGVmdCgpICsgcGFkZGluZ0xlZnQoKSwgdHkgKyBib3Jk
ZXJUb3AoKSArIHBhZGRpbmdUb3AoKSk7Ci0KICAgICAgICAgLy8gVGVsbCB0aGUgd2lkZ2V0IHRv
IHBhaW50IG5vdy4gIFRoaXMgaXMgdGhlIG9ubHkgdGltZSB0aGUgd2lkZ2V0IGlzIGFsbG93ZWQK
ICAgICAgICAgLy8gdG8gcGFpbnQgaXRzZWxmLiAgVGhhdCB3YXkgaXQgd2lsbCBjb21wb3NpdGUg
cHJvcGVybHkgd2l0aCB6LWluZGV4ZWQgbGF5ZXJzLgogICAgICAgICBpZiAobV9zdWJzdGl0dXRl
SW1hZ2UpCiAgICAgICAgICAgICBwYWludEluZm8uY29udGV4dC0+ZHJhd0ltYWdlKG1fc3Vic3Rp
dHV0ZUltYWdlLmdldCgpLCBzdHlsZSgpLT5jb2xvclNwYWNlKCksIG1fd2lkZ2V0LT5mcmFtZVJl
Y3QoKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fd2lkZ2V0LT5wYWludChwYWludElu
Zm8uY29udGV4dCwgcGFpbnRJbmZvLnJlY3QpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAg
IEludFBvaW50IHdpZGdldExvY2F0aW9uID0gbV93aWRnZXQtPmZyYW1lUmVjdCgpLmxvY2F0aW9u
KCk7CisgICAgICAgICAgICBJbnRQb2ludCBwYWludExvY2F0aW9uKHR4ICsgYm9yZGVyTGVmdCgp
ICsgcGFkZGluZ0xlZnQoKSwgdHkgKyBib3JkZXJUb3AoKSArIHBhZGRpbmdUb3AoKSk7CisgICAg
ICAgICAgICBJbnRSZWN0IHBhaW50UmVjdCA9IHBhaW50SW5mby5yZWN0OworCisgICAgICAgICAg
ICBJbnRTaXplIHBhaW50T2Zmc2V0ID0gcGFpbnRMb2NhdGlvbiAtIHdpZGdldExvY2F0aW9uOwor
ICAgICAgICAgICAgLy8gV2hlbiBwYWludGluZyB3aWRnZXRzIGludG8gY29tcG9zaXRpbmcgbGF5
ZXJzLCB0eCBhbmQgdHkgYXJlIHJlbGF0aXZlIHRvIHRoZSBlbmNsb3NpbmcgY29tcG9zaXRpbmcg
bGF5ZXIsCisgICAgICAgICAgICAvLyBub3QgdGhlIHJvb3QuIEluIHRoaXMgY2FzZSwgc2hpZnQg
dGhlIENUTSBhbmQgYWRqdXN0IHRoZSBwYWludFJlY3QgdG8gYmUgcm9vdC1yZWxhdGl2ZSB0byBm
aXggcGx1Zy1pbiBkcmF3aW5nLgorICAgICAgICAgICAgaWYgKCFwYWludE9mZnNldC5pc1plcm9T
aXplKCkpIHsKKyAgICAgICAgICAgICAgICBwYWludEluZm8uY29udGV4dC0+dHJhbnNsYXRlKHBh
aW50T2Zmc2V0KTsKKyAgICAgICAgICAgICAgICBwYWludFJlY3QubW92ZSgtcGFpbnRPZmZzZXQp
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgbV93aWRnZXQtPnBhaW50KHBhaW50SW5mby5j
b250ZXh0LCBwYWludFJlY3QpOwogCisgICAgICAgICAgICBpZiAoIXBhaW50T2Zmc2V0LmlzWmVy
b1NpemUoKSkKKyAgICAgICAgICAgICAgICBwYWludEluZm8uY29udGV4dC0+dHJhbnNsYXRlKC1w
YWludE9mZnNldCk7CisgICAgICAgIH0KICAgICAgICAgaWYgKG1fd2lkZ2V0LT5pc0ZyYW1lVmll
dygpICYmIHBhaW50SW5mby5vdmVybGFwVGVzdFJlcXVlc3RzICYmICFzdGF0aWNfY2FzdDxGcmFt
ZVZpZXcqPihtX3dpZGdldC5nZXQoKSktPnVzZVNsb3dSZXBhaW50c0lmTm90T3ZlcmxhcHBlZCgp
KSB7CiAgICAgICAgICAgICBBU1NFUlQoIXBhaW50SW5mby5vdmVybGFwVGVzdFJlcXVlc3RzLT5j
b250YWlucyh0aGlzKSk7CiAgICAgICAgICAgICBwYWludEluZm8ub3ZlcmxhcFRlc3RSZXF1ZXN0
cy0+c2V0KHRoaXMsIG1fd2lkZ2V0LT5mcmFtZVJlY3QoKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47132</attachid>
            <date>2010-01-21 11:24:59 -0800</date>
            <delta_ts>2010-01-21 11:27:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-33927-20100121112458.patch</filename>
            <type>text/plain</type>
            <size>9805</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhY2I2NzdkLi5lZTc3YmQ3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTAtMDEt
MjAgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSGl0IHRlc3Rpbmcgb24gY29tcG9z
aXRlZCBwbHVnaW5zIGlzIGJyb2tlbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MzM5MjcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc1NTkwNjk+CisK
KyAgICAgICAgVGVzdGNhc2UgZm9yIGhpdCB0ZXN0aW5nIG9uIGEgZml4ZWQtcG9zaXRpb24gcGx1
Z2luIGFmdGVyIHNjcm9sbGluZy4KKyAgICAgICAgCisgICAgICAgICogcGx1Z2lucy9tb3VzZS1l
dmVudHMtZml4ZWRwb3MtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbHVnaW5zL21v
dXNlLWV2ZW50cy1maXhlZHBvcy5odG1sOiBBZGRlZC4KKwogMjAxMC0wMS0yMCAgQmVuIE11cmRv
Y2ggIDxiZW5tQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21h
bm4uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbHVnaW5zL21vdXNlLWV2ZW50cy1maXhlZHBv
cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbHVnaW5zL21vdXNlLWV2ZW50cy1maXhlZHBv
cy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmVlZmY5
MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsdWdpbnMvbW91c2UtZXZlbnRzLWZp
eGVkcG9zLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDcgQEAKK0NPTlNPTEUgTUVTU0FHRTogbGlu
ZSAwOiBQTFVHSU46IGdldEZvY3VzRXZlbnQKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAwOiBQTFVH
SU46IG1vdXNlRG93biBhdCAoNTAsIDUwKQorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDA6IFBMVUdJ
TjogbW91c2VVcCBhdCAoNTAsIDUwKQorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDA6IFBMVUdJTjog
bW91c2VEb3duIGF0ICg2MCwgNjApCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMDogUExVR0lOOiBt
b3VzZVVwIGF0ICg3MCwgNjApCisKK1Rlc3RzIGZvciB3aWRnZXQgcG9zaXRpb25zIGJlaW5nIGNv
cnJlY3RseSB1cGRhdGVkIGFmdGVyIHNjcm9sbGluZy4gcmRhcjovL3Byb2JsZW0vNzU1OTA2OQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGx1Z2lucy9tb3VzZS1ldmVudHMtZml4ZWRwb3MuaHRt
bCBiL0xheW91dFRlc3RzL3BsdWdpbnMvbW91c2UtZXZlbnRzLWZpeGVkcG9zLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmJhNzZhNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3BsdWdpbnMvbW91c2UtZXZlbnRzLWZpeGVkcG9zLmh0bWwKQEAgLTAsMCAr
MSw1OSBAQAorPGh0bWw+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiIG1lZGlhPSJzY3JlZW4iPgor
ICBib2R5IHsKKyAgICBoZWlnaHQ6IDEwMDBweDsKKyAgfQorCisgIC5maXhlZCB7CisgICAgcG9z
aXRpb246IGZpeGVkOworICAgIGxlZnQ6IDIwcHg7CisgICAgdG9wOiAyMHB4OworLyogICAgYm9y
ZGVyOiAxcHggc29saWQgYmxhY2s7Ki8KKyAgfQorCisgIHAgeworICAgIG1hcmdpbi10b3A6IDIw
MHB4OworICB9CisKKyAgZW1iZWQgeworICAgIG1hcmdpbjogMjBweDsKKyAgfQorPC9zdHlsZT4K
KzxzY3JpcHQ+CisKKyAgZnVuY3Rpb24gcnVuVGVzdCgpCisgIHsKKyAgICB3aW5kb3cuc2Nyb2xs
QnkoNTAsIDUwKTsKKworICAgIGlmICghd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Cisg
ICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUo
IlRoaXMgdGVzdCBkb2VzIG5vdCB3b3JrIGluIG1hbnVhbCBtb2RlLiIpKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKwor
ICAgIHBsZy5ldmVudExvZ2dpbmdFbmFibGVkID0gdHJ1ZTsKKworICAgIGV2ZW50U2VuZGVyLm1v
dXNlTW92ZVRvKDcwLDcwKTsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyg5MCw5MCk7Cisg
ICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOwor
ICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKDEwMCwxMDApOworICAgIGV2ZW50U2VuZGVyLm1v
dXNlRG93bigpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKDExMCwxMDApOworICAgIGV2
ZW50U2VuZGVyLm1vdXNlVXAoKTsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbygyMCwyMCk7
CisKKyAgICBwbGcuZXZlbnRMb2dnaW5nRW5hYmxlZCA9IGZhbHNlOyAvLyBzdG9wIGxvZ2dpbmcg
c28gb3VyIG91dHB1dCBkb2Vzbid0IGJsZWVkIGludG8gdGhlIG5leHQgdGVzdAorICB9CisgIAor
ICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIHJ1blRlc3QsIGZhbHNlKTsKKzwvc2Ny
aXB0PgorPGJvZHk+CisgIDxkaXYgY2xhc3M9ImZpeGVkIj4KKyAgICA8ZW1iZWQgbmFtZT0icGxn
IiB0eXBlPSJhcHBsaWNhdGlvbi94LXdlYmtpdC10ZXN0LW5ldHNjYXBlIiB3aWR0aD0xMDAgaGVp
Z2h0PTEwMD48L2VtYmVkPgorICA8L2Rpdj4KKworPHA+VGVzdHMgZm9yIHdpZGdldCBwb3NpdGlv
bnMgYmVpbmcgY29ycmVjdGx5IHVwZGF0ZWQgYWZ0ZXIgc2Nyb2xsaW5nLiA8YSBocmVmPSJyZGFy
Oi8vcHJvYmxlbS83NTU5MDY5Ij5yZGFyOi8vcHJvYmxlbS83NTU5MDY5PC9hPjwvcD4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggZDVlYWU3Yi4uZTRhYTViMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MSBAQAorMjAxMC0wMS0yMCAg
U2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBIaXQgdGVzdGluZyBvbiBjb21wb3NpdGVk
IHBsdWdpbnMgaXMgYnJva2VuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0zMzkyNworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzU1OTA2OT4KKworICAg
ICAgICBSZW5kZXJXaWRnZXQ6OnBhaW50KCkncyBzdHJhdGVneSBvZiBtb3Zpbmcgd2lkZ2V0cyBh
dCBwYWludCB0aW1lLCB1c2luZyB0eCBhbmQgdHksIHdhcyBmbGF3ZWQKKyAgICAgICAgYmVjYXVz
ZSB0eCx0eSBhcmUgbm90IGFsd2F5cyByb290LXJlbGF0aXZlLCBlc3BlY2lhbGx5IHdoZW4gcGFp
bnRpbmcgaW50byBjb21wb3NpdGluZyBsYXllcnMuCisgICAgICAgIFRoaXMgd291bGQgbW92ZSB3
aWRnZXRzIHRvIHRoZSB3cm9uZyBsb2NhdGlvbiwgd2hpY2ggY2F1c2VkIGhpdCB0ZXN0aW5nIGlz
c3Vlcy4KKyAgICAgICAgCisgICAgICAgIFdpZGdldHMgYXJlIHVzdWFsbHkgcG9zaXRpb25lZCBi
eSBsYXlvdXQuIFRoZSBvbmUgdGltZSB0aGlzIHdhcyBub3QgdHJ1ZSB3YXMgc2Nyb2xsaW5nIGZp
eGVkLXBvc2l0aW9uCisgICAgICAgIGVsZW1lbnRzLCBzbyB3ZSBub3cgcmVwb3NpdGlvbiB3aWRn
ZXRzIGFmdGVyIHNjcm9sbGluZyB0b28uCisgICAgICAgIAorICAgICAgICBUaGVyZSB3YXMgYSBy
ZWxhdGVkIHByb2JsZW0sIHdoaWNoIHdhcyB0aGF0IHdpZGdldHMgZXhwZWN0IHRoZSBncmFwaGlj
cyBjb250ZXh0IHRvIGJlIHNldCB1cCBmb3IKKyAgICAgICAgcm9vdC1yZWxhdGl2ZSBwYWludGlu
Zy4gVG8gZml4IHRoaXMsIGFkanVzdCB0aGUgQ1RNIGFuZCB0aGUgcGFpbnRSZWN0IHdoZW4gdGhl
IHdpZGdldCdzIGZyYW1lUmVjdAorICAgICAgICBpcyBpbiBhIGRpZmZlcmVudCBjb29yZGluYXRl
IHN5c3RlbSB0byB0aGUgcGFpbnRpbmcgb2Zmc2V0LgorICAgICAgICAKKyAgICAgICAgVGVzdDog
cGx1Z2lucy9tb3VzZS1ldmVudHMtZml4ZWRwb3MuaHRtbAorCisgICAgICAgICogcGFnZS9GcmFt
ZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpzY3JvbGxQb3NpdGlvbkNo
YW5nZWQpOiBVcGRhdGUgd2lkZ2V0IHBvc2l0aW9ucywgdG8gaGFuZGxlIHdpZGdldHMgaW4gZml4
ZWQgcG9zaXRpb24KKyAgICAgICAgZWxlbWVudHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDo6dHJhbnNsYXRlKTogQWRkIGEgdHJhbnNsYXRlKCkgY29udmVuaWVuY2UgbWV0aG9kIHRoYXQg
dGFrZXMgYSBGbG9hdFNpemUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbnRTaXpl
Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbnRTaXplOjppc1plcm9TaXplKTogQWRkIGEgY29udmVu
aWVuY2UgbWV0aG9kIGZvciB0ZXN0aW5nIGZvciBhIHplcm8gc2l6ZS4KKworICAgICAgICAqIHBs
YXRmb3JtL21hYy9XaWRnZXRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpXaWRnZXQ6OnBhaW50
KTogQWRqdXN0IGEgY29tbWVudC4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJXaWRnZXQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyV2lkZ2V0OjpwYWludCk6IERldGVjdCB3aGVu
IHRoZSB3aWRnZXQncyBmcmFtZSBpcyBpbiBhIGRpZmZlcmVudCBjb29yZGluYXRlIHN5c3RlbQor
ICAgICAgICB0byBwYWludGluZywgYW5kIGFkanVzdCB0aGUgQ1RNIGFuZCBwYWludFJlY3QgaW4g
dGhhdCBjYXNlLgorCiAyMDEwLTAxLTIwICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtp
dC5vcmc+CiAKICAgICAgICAgW1F0XSBVbnJldmlld2VkIGJ1aWxkZml4IGZvciByNTM1NDcuCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1dlYkNvcmUvcGFnZS9GcmFt
ZVZpZXcuY3BwCmluZGV4IDg2ZTEzYTcuLjIxNjY2YWUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFn
ZS9GcmFtZVZpZXcuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC05NTAs
NiArOTUwLDEzIEBAIHZvaWQgRnJhbWVWaWV3OjpzY3JvbGxQb3NpdGlvbkNoYW5nZWQoKQogICAg
IGlmIChsYXllcikKICAgICAgICAgbGF5ZXItPnVwZGF0ZUxheWVyUG9zaXRpb25zKFJlbmRlckxh
eWVyOjpVcGRhdGVDb21wb3NpdGluZ0xheWVycyk7CiAjZW5kaWYKKworICAgIC8vIFVwZGF0ZSB3
aWRnZXQgcG9zaXRpb25zIHRvIHRha2UgY2FyZSBvZiB3aWRnZXRzIGluc2lkZSBmaXhlZCBwb3Np
dGlvbiBlbGVtZW50cywKKyAgICAvLyBidXQgb25seSBpZiB3ZSdyZSBub3QgaW5zaWRlIG9mIGxh
eW91dC4KKyAgICBpZiAoIW1fbmVzdGVkTGF5b3V0Q291bnQpIHsKKyAgICAgICAgaWYgKFJlbmRl
clZpZXcqIHJvb3QgPSBtX2ZyYW1lLT5jb250ZW50UmVuZGVyZXIoKSkKKyAgICAgICAgICAgIHJv
b3QtPnVwZGF0ZVdpZGdldFBvc2l0aW9ucygpOworICAgIH0KIH0KIAogSG9zdFdpbmRvdyogRnJh
bWVWaWV3Ojpob3N0V2luZG93KCkgY29uc3QKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dC5oCmluZGV4IDg4ZTQxZTYuLjlkN2JhYzMgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApAQCAtMjkxLDYgKzI5MSw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2b2lkIHNjYWxlKGNvbnN0IEZsb2F0U2l6ZSYpOwog
ICAgICAgICB2b2lkIHJvdGF0ZShmbG9hdCBhbmdsZUluUmFkaWFucyk7CisgICAgICAgIHZvaWQg
dHJhbnNsYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkgeyB0cmFuc2xhdGUoc2l6ZS53aWR0aCgp
LCBzaXplLmhlaWdodCgpKTsgfQogICAgICAgICB2b2lkIHRyYW5zbGF0ZShmbG9hdCB4LCBmbG9h
dCB5KTsKICAgICAgICAgSW50UG9pbnQgb3JpZ2luKCk7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW50U2l6ZS5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bnRTaXplLmgKaW5kZXggYjI0Mjc4NC4uMTNkOWUyMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbnRTaXplLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bnRTaXplLmgKQEAgLTY5LDcgKzY5LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0SGVpZ2h0KGlu
dCBoZWlnaHQpIHsgbV9oZWlnaHQgPSBoZWlnaHQ7IH0KIAogICAgIGJvb2wgaXNFbXB0eSgpIGNv
bnN0IHsgcmV0dXJuIG1fd2lkdGggPD0gMCB8fCBtX2hlaWdodCA8PSAwOyB9Ci0KKyAgICBib29s
IGlzWmVybygpIGNvbnN0IHsgcmV0dXJuICFtX3dpZHRoICYmICFtX2hlaWdodDsgfQorICAgIAog
ICAgIHZvaWQgZXhwYW5kKGludCB3aWR0aCwgaW50IGhlaWdodCkKICAgICB7CiAgICAgICAgIG1f
d2lkdGggKz0gd2lkdGg7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XaWRnZXRN
YWMubW0gYi9XZWJDb3JlL3BsYXRmb3JtL21hYy9XaWRnZXRNYWMubW0KaW5kZXggM2ZkMzBhYS4u
ZTQ3MzA1MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2lkZ2V0TWFjLm1tCisr
KyBiL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dpZGdldE1hYy5tbQpAQCAtMTk3LDcgKzE5Nyw3IEBA
IHZvaWQgV2lkZ2V0OjpwYWludChHcmFwaGljc0NvbnRleHQqIHAsIGNvbnN0IEludFJlY3QmIHIp
CiAgICAgICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiAgICAgfSBlbHNlIHsKICAgICAg
ICAgLy8gVGhpcyBpcyB0aGUgY2FzZSBvZiBkcmF3aW5nIGludG8gYSBiaXRtYXAgY29udGV4dCBv
dGhlciB0aGFuIGEgd2luZG93IGJhY2tpbmcgc3RvcmUuIEl0IGdldHMgaGl0IGJlbmVhdGgKLSAg
ICAgICAgLy8gLWNhY2hlRGlzcGxheUluUmVjdDp0b0JpdG1hcEltYWdlUmVwOi4KKyAgICAgICAg
Ly8gLWNhY2hlRGlzcGxheUluUmVjdDp0b0JpdG1hcEltYWdlUmVwOiwgYW5kIHdoZW4gcGFpbnRp
bmcgaW50byBjb21wb3NpdGluZyBsYXllcnMuCiAKICAgICAgICAgLy8gVHJhbnNwYXJlbnQgc3Vi
ZnJhbWVzIGFyZSBpbiBmYWN0IGltcGxlbWVudGVkIHdpdGggc2Nyb2xsIHZpZXdzIHRoYXQgcmV0
dXJuIFlFUyBmcm9tIC1kcmF3c0JhY2tncm91bmQgKHdoZW5ldmVyIHRoZSBXZWJWaWV3CiAgICAg
ICAgIC8vIGl0c2VsZiBpcyBpbiBkcmF3c0JhY2tncm91bmQgbW9kZSkuIEluIHRoZSBub3JtYWwg
ZHJhd2luZyBjb2RlIHBhdGgsIHRoZSBzY3JvbGwgdmlld3MgYXJlIG5ldmVyIGFza2VkIHRvIGRy
YXcgdGhlIGJhY2tncm91bmQsCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJX
aWRnZXQuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcAppbmRleCBhZjE5
OWUyLi40NzYzMzA5IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQu
Y3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAKQEAgLTI1MiwxOCAr
MjUyLDI3IEBAIHZvaWQgUmVuZGVyV2lkZ2V0OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywg
aW50IHR4LCBpbnQgdHkpCiAgICAgfQogCiAgICAgaWYgKG1fd2lkZ2V0KSB7Ci0gICAgICAgIC8v
IE1vdmUgdGhlIHdpZGdldCBpZiBuZWNlc3NhcnkuICBXZSBub3JtYWxseSBtb3ZlIGFuZCByZXNp
emUgd2lkZ2V0cyBkdXJpbmcgbGF5b3V0LCBidXQgc29tZXRpbWVzCi0gICAgICAgIC8vIHdpZGdl
dHMgY2FuIG1vdmUgd2l0aG91dCBsYXlvdXQgb2NjdXJyaW5nIChtb3N0IG5vdGFibHkgd2hlbiB5
b3Ugc2Nyb2xsIGEgZG9jdW1lbnQgdGhhdAotICAgICAgICAvLyBjb250YWlucyBmaXhlZCBwb3Np
dGlvbmVkIGVsZW1lbnRzKS4KLSAgICAgICAgbV93aWRnZXQtPm1vdmUodHggKyBib3JkZXJMZWZ0
KCkgKyBwYWRkaW5nTGVmdCgpLCB0eSArIGJvcmRlclRvcCgpICsgcGFkZGluZ1RvcCgpKTsKLQog
ICAgICAgICAvLyBUZWxsIHRoZSB3aWRnZXQgdG8gcGFpbnQgbm93LiAgVGhpcyBpcyB0aGUgb25s
eSB0aW1lIHRoZSB3aWRnZXQgaXMgYWxsb3dlZAogICAgICAgICAvLyB0byBwYWludCBpdHNlbGYu
ICBUaGF0IHdheSBpdCB3aWxsIGNvbXBvc2l0ZSBwcm9wZXJseSB3aXRoIHotaW5kZXhlZCBsYXll
cnMuCiAgICAgICAgIGlmIChtX3N1YnN0aXR1dGVJbWFnZSkKICAgICAgICAgICAgIHBhaW50SW5m
by5jb250ZXh0LT5kcmF3SW1hZ2UobV9zdWJzdGl0dXRlSW1hZ2UuZ2V0KCksIHN0eWxlKCktPmNv
bG9yU3BhY2UoKSwgbV93aWRnZXQtPmZyYW1lUmVjdCgpKTsKLSAgICAgICAgZWxzZQotICAgICAg
ICAgICAgbV93aWRnZXQtPnBhaW50KHBhaW50SW5mby5jb250ZXh0LCBwYWludEluZm8ucmVjdCk7
CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgSW50UG9pbnQgd2lkZ2V0TG9jYXRpb24gPSBt
X3dpZGdldC0+ZnJhbWVSZWN0KCkubG9jYXRpb24oKTsKKyAgICAgICAgICAgIEludFBvaW50IHBh
aW50TG9jYXRpb24odHggKyBib3JkZXJMZWZ0KCkgKyBwYWRkaW5nTGVmdCgpLCB0eSArIGJvcmRl
clRvcCgpICsgcGFkZGluZ1RvcCgpKTsKKyAgICAgICAgICAgIEludFJlY3QgcGFpbnRSZWN0ID0g
cGFpbnRJbmZvLnJlY3Q7CisKKyAgICAgICAgICAgIEludFNpemUgcGFpbnRPZmZzZXQgPSBwYWlu
dExvY2F0aW9uIC0gd2lkZ2V0TG9jYXRpb247CisgICAgICAgICAgICAvLyBXaGVuIHBhaW50aW5n
IHdpZGdldHMgaW50byBjb21wb3NpdGluZyBsYXllcnMsIHR4IGFuZCB0eSBhcmUgcmVsYXRpdmUg
dG8gdGhlIGVuY2xvc2luZyBjb21wb3NpdGluZyBsYXllciwKKyAgICAgICAgICAgIC8vIG5vdCB0
aGUgcm9vdC4gSW4gdGhpcyBjYXNlLCBzaGlmdCB0aGUgQ1RNIGFuZCBhZGp1c3QgdGhlIHBhaW50
UmVjdCB0byBiZSByb290LXJlbGF0aXZlIHRvIGZpeCBwbHVnLWluIGRyYXdpbmcuCisgICAgICAg
ICAgICBpZiAoIXBhaW50T2Zmc2V0LmlzWmVybygpKSB7CisgICAgICAgICAgICAgICAgcGFpbnRJ
bmZvLmNvbnRleHQtPnRyYW5zbGF0ZShwYWludE9mZnNldCk7CisgICAgICAgICAgICAgICAgcGFp
bnRSZWN0Lm1vdmUoLXBhaW50T2Zmc2V0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1f
d2lkZ2V0LT5wYWludChwYWludEluZm8uY29udGV4dCwgcGFpbnRSZWN0KTsKIAorICAgICAgICAg
ICAgaWYgKCFwYWludE9mZnNldC5pc1plcm8oKSkKKyAgICAgICAgICAgICAgICBwYWludEluZm8u
Y29udGV4dC0+dHJhbnNsYXRlKC1wYWludE9mZnNldCk7CisgICAgICAgIH0KICAgICAgICAgaWYg
KG1fd2lkZ2V0LT5pc0ZyYW1lVmlldygpICYmIHBhaW50SW5mby5vdmVybGFwVGVzdFJlcXVlc3Rz
ICYmICFzdGF0aWNfY2FzdDxGcmFtZVZpZXcqPihtX3dpZGdldC5nZXQoKSktPnVzZVNsb3dSZXBh
aW50c0lmTm90T3ZlcmxhcHBlZCgpKSB7CiAgICAgICAgICAgICBBU1NFUlQoIXBhaW50SW5mby5v
dmVybGFwVGVzdFJlcXVlc3RzLT5jb250YWlucyh0aGlzKSk7CiAgICAgICAgICAgICBwYWludElu
Zm8ub3ZlcmxhcFRlc3RSZXF1ZXN0cy0+c2V0KHRoaXMsIG1fd2lkZ2V0LT5mcmFtZVJlY3QoKSk7
Cg==
</data>
<flag name="review"
          id="29527"
          type_id="1"
          status="+"
          setter="hyatt"
    />
          </attachment>
      

    </bug>

</bugzilla>