<?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>59159</bug_id>
          
          <creation_ts>2011-04-21 17:18:08 -0700</creation_ts>
          <short_desc>[chromium] Ensure compositing layers are up to date before entering doComposite</short_desc>
          <delta_ts>2011-04-27 18:44:05 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="James Robinson">jamesr</reporter>
          <assigned_to name="James Robinson">jamesr</assigned_to>
          <cc>abarth</cc>
    
    <cc>enne</cc>
    
    <cc>eric</cc>
    
    <cc>kbr</cc>
    
    <cc>nduca</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>vangelis</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>390480</commentid>
    <comment_count>0</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-04-21 17:18:08 -0700</bug_when>
    <thetext>[chromium] Ensure compositing layers are up to date before entering doComposite</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>390482</commentid>
    <comment_count>1</comment_count>
      <attachid>90639</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-04-21 17:21:48 -0700</bug_when>
    <thetext>Created attachment 90639
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>390514</commentid>
    <comment_count>2</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-04-21 18:15:08 -0700</bug_when>
    <thetext>My testcase for this is extremely flaky and timing-depending, but the bad case is roughly that at the start of WebViewImpl::composite() we have a composited RenderLayer inside an iframe with a dirty z order list.  When we call paintContents() on that layer, it lazily updates the z order list and re-evaluates the compositing requirements on that RenderLayerCompositor which can change the GraphicsLayer tree.  This patch avoids the issue by explicitly updating compositing layers for every FrameView (which is 1:1 with RenderLayerCompositor) in the patch, syncing the compositing state for all FrameViews, and then not pumping the event loop until after all the paintContents() calls complete.  I&apos;ve also added some assertions to make it easier to detect this case in debug builds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>393146</commentid>
    <comment_count>3</comment_count>
      <attachid>90639</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-04-26 17:10:10 -0700</bug_when>
    <thetext>Comment on attachment 90639
Patch

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

Looks good to me.

&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:64
&gt; +#ifndef NDEBUG
&gt; +bool LayerRendererChromium::s_inPaintContents = false;
&gt; +#endif

Barf!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>393189</commentid>
    <comment_count>4</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-04-26 17:45:41 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 90639 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=90639&amp;action=review
&gt; 
&gt; Looks good to me.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:64
&gt; &gt; +#ifndef NDEBUG
&gt; &gt; +bool LayerRendererChromium::s_inPaintContents = false;
&gt; &gt; +#endif
&gt; 
&gt; Barf!

Do you know of another way to do this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>393196</commentid>
    <comment_count>5</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-04-26 18:02:11 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; (From update of attachment 90639 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=90639&amp;action=review
&gt; &gt; 
&gt; &gt; Looks good to me.
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:64
&gt; &gt; &gt; +#ifndef NDEBUG
&gt; &gt; &gt; +bool LayerRendererChromium::s_inPaintContents = false;
&gt; &gt; &gt; +#endif
&gt; &gt; 
&gt; &gt; Barf!
&gt; 
&gt; Do you know of another way to do this?

Minimally I&apos;d scope the variable inside the LayerRendererChromium instance. But if the debugger makes it difficult to examine it in that case, don&apos;t worry about it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>393198</commentid>
    <comment_count>6</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-04-26 18:04:14 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #4)
&gt; &gt; (In reply to comment #3)
&gt; &gt; &gt; (From update of attachment 90639 [details] [details] [details])
&gt; &gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=90639&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; Looks good to me.
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:64
&gt; &gt; &gt; &gt; +#ifndef NDEBUG
&gt; &gt; &gt; &gt; +bool LayerRendererChromium::s_inPaintContents = false;
&gt; &gt; &gt; &gt; +#endif
&gt; &gt; &gt; 
&gt; &gt; &gt; Barf!
&gt; &gt; 
&gt; &gt; Do you know of another way to do this?
&gt; 
&gt; Minimally I&apos;d scope the variable inside the LayerRendererChromium instance. But if the debugger makes it difficult to examine it in that case, don&apos;t worry about it.

LayerChromiums are constructed without a LayerRendererChromium pointer, so that doesn&apos;t trivially work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>393897</commentid>
    <comment_count>7</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-04-27 15:41:41 -0700</bug_when>
    <thetext>Committed r85112: &lt;http://trac.webkit.org/changeset/85112&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>393913</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-27 15:59:55 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/85112 might have broken Leopard Intel Debug (Build) and SnowLeopard Intel Release (Build)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>393917</commentid>
    <comment_count>9</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-04-27 16:01:59 -0700</bug_when>
    <thetext>Reverted r85112 for reason:

Broke mac compile

Committed r85116: &lt;http://trac.webkit.org/changeset/85116&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>393928</commentid>
    <comment_count>10</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-04-27 16:09:39 -0700</bug_when>
    <thetext>FrameView.h is included from files in the WebKit project on Mac, so adding a header to FrameView.h requires adding that header to the forwarding headers.

Given that CompositingUpdateAfterLayoutOrStyleChange and CompositingUpdateOnPaintingOrHitTest in practice do exactly the same thing I think I&apos;ll just not add the parameter to FrameView::updateCompositingLayers()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>393962</commentid>
    <comment_count>11</comment_count>
      <attachid>91377</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-04-27 16:37:33 -0700</bug_when>
    <thetext>Created attachment 91377
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>393963</commentid>
    <comment_count>12</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-04-27 16:37:49 -0700</bug_when>
    <thetext>Take two - this patch only modifies chromium-specific code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>393999</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-27 16:54:12 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/85116 might have broken SnowLeopard Intel Release (Tests)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394071</commentid>
    <comment_count>14</comment_count>
      <attachid>91377</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-04-27 18:32:24 -0700</bug_when>
    <thetext>Comment on attachment 91377
Patch

Looks fine to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394083</commentid>
    <comment_count>15</comment_count>
      <attachid>91377</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-04-27 18:44:01 -0700</bug_when>
    <thetext>Comment on attachment 91377
Patch

Clearing flags on attachment: 91377

Committed r85136: &lt;http://trac.webkit.org/changeset/85136&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>394084</commentid>
    <comment_count>16</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-04-27 18:44:05 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>90639</attachid>
            <date>2011-04-21 17:21:48 -0700</date>
            <delta_ts>2011-04-27 16:37:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-59159-20110421172147.patch</filename>
            <type>text/plain</type>
            <size>12508</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODQ1NDUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxZjIyYzFiZGJlYTZiYzY4
OWRiNGM1MWUxOTM5NTJlYzVjMGY2MmJhLi41OGM5ZDAzYjJlMDc0ZWNmM2Q2OTJlMDBmOTQyNzc0
OGYwZTMxYzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTEtMDQtMjEgIEphbWVz
IFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbY2hyb21pdW1dIEVuc3VyZSBjb21wb3NpdGluZyBs
YXllcnMgYXJlIHVwIHRvIGRhdGUgYmVmb3JlIGVudGVyaW5nIGRvQ29tcG9zaXRlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTE1OQorCisgICAgICAg
IEFkZHMgc29tZSBhc3NlcnRpb25zIHRvIHRyeSB0byBjYXRjaCBHcmFwaGljc0xheWVyIG11dGF0
aW9ucyBhdCBiYWQgdGltZXMgKHN1Y2ggYXMgZHVyaW5nCisgICAgICAgIEdyYXBoaWNzTGF5ZXJD
bGllbnQ6OnBhaW50Q29udGVudHMoKSBpbXBsZW1lbnRhdGlvbnMpLgorCisgICAgICAgICogcGFn
ZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3Ojp1cGRhdGVDb21w
b3NpdGluZ0xheWVycyk6CisgICAgICAgICAgICBBZGQgYW4gb3B0aW9uYWwgQ29tcG9zaXRpbmdV
cGRhdGVUeXBlIHBhcmFtZXRlci4KKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnVwZGF0ZUxheWVyUHJl
c2VydmVzM0QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hy
b21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6TGF5ZXJDaHJvbWl1
bSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNocm9taXVtOjp+TGF5ZXJDaHJvbWl1bSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVt
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6dXBkYXRlTGF5
ZXJzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVy
Q2hyb21pdW0uaDoKKyAgICAgICAgICBBZGQgYSBzZXQgb2YgYXNzZXJ0aW9ucyB0aGF0IHdlIGFy
ZW4ndCBjcmVhdGluZyBvciBkZXN0cm95aW5nIExheWVyQ2hyb21pdW1zIGR1cmluZyBwYWludENv
bnRlbnRzCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxheWVyOjpkaXJ0eVpPcmRlckxpc3RzKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxheWVyOjp1cGRhdGVDb21wb3NpdGluZ0FuZExheWVyTGlzdHNJZk5lZWRlZCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZUNvbXBvc2l0aW5nTGF5ZXJzKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmg6CisgICAgICAgICAg
Rml4IGEgdHlwbyBpbiBDb21wb3NpdGluZ1VwZGF0ZVR5cGUgUGFpdC0+UGFpbnQKKwogMjAxMS0w
NC0yMSAgTWlrZSBSZWVkICA8cmVlZEBnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IEtlbm5ldGggUnVzc2VsbC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVW
aWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCAxYmZjNmZh
YTk2Nzk1ZDhkNDA5YWUyNDI3ZTU3YzI4YjhiYWExZTI2Li5mYzFiZjQyZGIzOTFhYmE0YjU4MGFm
MTJkOTcwNjRlYzUwNDZiMTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
Vmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC01NzIs
NyArNTcyLDcgQEAgc3RhdGljIGJvb2wgaXNEb2N1bWVudFJ1bm5pbmdGdWxsU2NyZWVuQW5pbWF0
aW9uKERvY3VtZW50KiBkb2N1bWVudCkKICNlbmRpZgogICAgIAogI2lmIFVTRShBQ0NFTEVSQVRF
RF9DT01QT1NJVElORykKLXZvaWQgRnJhbWVWaWV3Ojp1cGRhdGVDb21wb3NpdGluZ0xheWVycygp
Cit2b2lkIEZyYW1lVmlldzo6dXBkYXRlQ29tcG9zaXRpbmdMYXllcnMoQ29tcG9zaXRpbmdVcGRh
dGVUeXBlIHVwZGF0ZVR5cGUpCiB7CiAgICAgUmVuZGVyVmlldyogdmlldyA9IG1fZnJhbWUtPmNv
bnRlbnRSZW5kZXJlcigpOwogICAgIGlmICghdmlldykKQEAgLTU4MCwxMiArNTgwLDEyIEBAIHZv
aWQgRnJhbWVWaWV3Ojp1cGRhdGVDb21wb3NpdGluZ0xheWVycygpCiAKICAgICAvLyBUaGlzIGNh
bGwgd2lsbCBtYWtlIHN1cmUgdGhlIGNhY2hlZCBoYXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nIGlz
IHVwZGF0ZWQgZnJvbSB0aGUgcHJlZgogICAgIHZpZXctPmNvbXBvc2l0b3IoKS0+Y2FjaGVBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nRmxhZ3MoKTsKLSAgICB2aWV3LT5jb21wb3NpdG9yKCktPnVwZGF0
ZUNvbXBvc2l0aW5nTGF5ZXJzKENvbXBvc2l0aW5nVXBkYXRlQWZ0ZXJMYXlvdXRPclN0eWxlQ2hh
bmdlKTsKKyAgICB2aWV3LT5jb21wb3NpdG9yKCktPnVwZGF0ZUNvbXBvc2l0aW5nTGF5ZXJzKHVw
ZGF0ZVR5cGUpOwogICAgIAogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICBEb2N1bWVu
dCogZG9jdW1lbnQgPSBtX2ZyYW1lLT5kb2N1bWVudCgpOwogICAgIGlmIChpc0RvY3VtZW50UnVu
bmluZ0Z1bGxTY3JlZW5BbmltYXRpb24oZG9jdW1lbnQpKQotICAgICAgICB2aWV3LT5jb21wb3Np
dG9yKCktPnVwZGF0ZUNvbXBvc2l0aW5nTGF5ZXJzKENvbXBvc2l0aW5nVXBkYXRlQWZ0ZXJMYXlv
dXRPclN0eWxlQ2hhbmdlLCBkb2N1bWVudC0+ZnVsbFNjcmVlblJlbmRlcmVyKCktPmxheWVyKCkp
OworICAgICAgICB2aWV3LT5jb21wb3NpdG9yKCktPnVwZGF0ZUNvbXBvc2l0aW5nTGF5ZXJzKHVw
ZGF0ZVR5cGUsIGRvY3VtZW50LT5mdWxsU2NyZWVuUmVuZGVyZXIoKS0+bGF5ZXIoKSk7CiAjZW5k
aWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKaW5kZXggMzkzYWQ1ZTNkMjNjZDU0NjYyNGYz
ZjFhNWM5MTM2ODU0YWM2YzBhMy4uYjljNWVmNzMwZjdjOGUwYjlkMzRmNjEzNWIyNzQ5NjI5NDA0
NzZkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCkBAIC0zMyw2ICszMywxMCBAQAogI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogCisjaWYgVVNFKEFD
Q0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorI2luY2x1ZGUgIlJlbmRlckxheWVyQ29tcG9zaXRvci5o
IiAvLyBGb3IgQ29tcG9zaXRpbmdVcGRhdGVUeXBlCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBDb2xvcjsKQEAgLTEwNSw3ICsxMDksNyBAQCBwdWJsaWM6CiAjZW5kaWYK
IAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLSAgICB2b2lkIHVwZGF0ZUNvbXBv
c2l0aW5nTGF5ZXJzKCk7CisgICAgdm9pZCB1cGRhdGVDb21wb3NpdGluZ0xheWVycyhDb21wb3Np
dGluZ1VwZGF0ZVR5cGUgPSBDb21wb3NpdGluZ1VwZGF0ZUFmdGVyTGF5b3V0T3JTdHlsZUNoYW5n
ZSk7CiAgICAgYm9vbCBzeW5jQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNGcmFtZSgpOwogCiAgICAg
Ly8gQ2FsbGVkIHdoZW4gY2hhbmdlcyB0byB0aGUgR3JhcGhpY3NMYXllciBoaWVyYXJjaHkgaGF2
ZSB0byBiZSBzeW5jaHJvbml6ZWQgd2l0aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1
bS5jcHAKaW5kZXggMjMwMWNhMzEzZDFlNDNiNGRkM2MxNTUwNTk0MDcwNDZmNGZjNmM0MS4uMWJk
ZDdhYjYxZjJhOWY1Y2UwOTNmYWQwZWVkMzJhMTg0YTM0Njc0MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVt
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFw
aGljc0xheWVyQ2hyb21pdW0uY3BwCkBAIC01ODgsOCArNTg4LDkgQEAgdm9pZCBHcmFwaGljc0xh
eWVyQ2hyb21pdW06OnVwZGF0ZUxheWVyUHJlc2VydmVzM0QoKQogICAgICAgICB1cGRhdGVTdWJs
YXllckxpc3QoKTsKICAgICB9IGVsc2UgaWYgKCFtX3ByZXNlcnZlczNEICYmIG1fdHJhbnNmb3Jt
TGF5ZXIpIHsKICAgICAgICAgLy8gUmVsYWNlIHRoZSB0cmFuc2Zvcm1MYXllciBpbiB0aGUgcGFy
ZW50IHdpdGggdGhpcyBsYXllci4KKyAgICAgICAgaWYgKG1fdHJhbnNmb3JtTGF5ZXItPnN1cGVy
bGF5ZXIoKSkKKyAgICAgICAgICAgIG1fdHJhbnNmb3JtTGF5ZXItPnN1cGVybGF5ZXIoKS0+cmVw
bGFjZVN1YmxheWVyKG1fdHJhbnNmb3JtTGF5ZXIuZ2V0KCksIG1fbGF5ZXIuZ2V0KCkpOwogICAg
ICAgICBtX2xheWVyLT5yZW1vdmVGcm9tU3VwZXJsYXllcigpOwotICAgICAgICBtX3RyYW5zZm9y
bUxheWVyLT5zdXBlcmxheWVyKCktPnJlcGxhY2VTdWJsYXllcihtX3RyYW5zZm9ybUxheWVyLmdl
dCgpLCBtX2xheWVyLmdldCgpKTsKIAogICAgICAgICAvLyBSZWxlYXNlIHRoZSB0cmFuc2Zvcm0g
bGF5ZXIuCiAgICAgICAgIG1fdHJhbnNmb3JtTGF5ZXIgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNw
cAppbmRleCBmYmExZGM1MjQ3YmY3YmFiZDIzNmExNTJlYzQ0OTdkNDU3ZmRmNWRiLi41MmYzZmRh
NTZiYzZkZWUyM2JhM2Y2MjEzY2NiODViZjUzODRmYzhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNw
cApAQCAtODEsMTAgKzgxLDEyIEBAIExheWVyQ2hyb21pdW06OkxheWVyQ2hyb21pdW0oR3JhcGhp
Y3NMYXllckNocm9taXVtKiBvd25lcikKICAgICAsIG1fZG91YmxlU2lkZWQodHJ1ZSkKICAgICAs
IG1fcmVwbGljYUxheWVyKDApCiB7CisgICAgQVNTRVJUKCFMYXllclJlbmRlcmVyQ2hyb21pdW06
OnNfaW5QYWludENvbnRlbnRzKTsKIH0KIAogTGF5ZXJDaHJvbWl1bTo6fkxheWVyQ2hyb21pdW0o
KQogeworICAgIEFTU0VSVCghTGF5ZXJSZW5kZXJlckNocm9taXVtOjpzX2luUGFpbnRDb250ZW50
cyk7CiAgICAgLy8gT3VyIHN1cGVybGF5ZXIgc2hvdWxkIGJlIGhvbGRpbmcgYSByZWZlcmVuY2Ug
dG8gdXMgc28gdGhlcmUgc2hvdWxkIGJlIG5vCiAgICAgLy8gd2F5IGZvciB1cyB0byBiZSBkZXN0
cm95ZWQgd2hpbGUgd2Ugc3RpbGwgaGF2ZSBhIHN1cGVybGF5ZXIuCiAgICAgQVNTRVJUKCFzdXBl
cmxheWVyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKaW5kZXggMjdh
NjdlOTAyODk2NTY3YzM0OTNhZmY0OTlhNzQ2OTY1NWU3MDNiZi4uNzRhMWQzYmI3OGIyNzA4Mzg0
ZmU2MWQ1MDU2NDAzZmNlZjNkYzFmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21p
dW0uY3BwCkBAIC01OSw2ICs1OSwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBGSVhNRTog
TWFrZSB0aGlzIGxpbWl0IGFkanVzdGFibGUgYW5kIGdpdmUgaXQgYSB1c2VmdWwgdmFsdWUuCiBz
dGF0aWMgc2l6ZV90IHRleHR1cmVNZW1vcnlMaW1pdEJ5dGVzID0gNjQgKiAxMDI0ICogMTAyNDsK
IAorI2lmbmRlZiBOREVCVUcKK2Jvb2wgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpzX2luUGFpbnRD
b250ZW50cyA9IGZhbHNlOworI2VuZGlmCisKIHN0YXRpYyBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBv
cnRob01hdHJpeChmbG9hdCBsZWZ0LCBmbG9hdCByaWdodCwgZmxvYXQgYm90dG9tLCBmbG9hdCB0
b3ApCiB7CiAgICAgZmxvYXQgZGVsdGFYID0gcmlnaHQgLSBsZWZ0OwpAQCAtMjgyLDcgKzI4Niwx
MyBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dXBkYXRlTGF5ZXJzKExheWVyTGlzdCYg
cmVuZGVyU3VyZmFjZUxheWVyTGlzdCkKICAgICAvLyBjb25jZXB0IG9mIGEgbGFyZ2UgY29udGVu
dCBsYXllci4KICAgICB1cGRhdGVQcm9wZXJ0aWVzQW5kUmVuZGVyU3VyZmFjZXMobV9yb290TGF5
ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBtX2RlZmF1
bHRSZW5kZXJTdXJmYWNlLT5tX2xheWVyTGlzdCk7CiAKKyNpZm5kZWYgTkRFQlVHCisgICAgc19p
blBhaW50Q29udGVudHMgPSB0cnVlOworI2VuZGlmCiAgICAgcGFpbnRDb250ZW50c1JlY3Vyc2l2
ZShtX3Jvb3RMYXllci5nZXQoKSk7CisjaWZuZGVmIE5ERUJVRworICAgIHNfaW5QYWludENvbnRl
bnRzID0gZmFsc2U7CisjZW5kaWYKIAogICAgIC8vIEZJWE1FOiBCZWZvcmUgdXBkYXRlQ29tcG9z
aXRvclJlc291cmNlc1JlY3Vyc2l2ZSwgd2hlbiB0aGUgY29tcG9zaXRvciBydW5zIGluCiAgICAg
Ly8gaXRzIG93biB0aHJlYWQsIGFuZCB3aGVuIHRoZSBjb3B5VGV4SW1hZ2UyRCBidWcgaXMgZml4
ZWQsIGluc2VydApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaAppbmRleCA4MTNlYjQ2
ZTBiYWEzNjUxM2Q2MDc4ZGEyNWE0MjVkNDQ1YWViZWU5Li43YmIzZjM2Y2RmMDI3ZDY1M2I2YWUw
MDlhMjdmYzBiZWVmNzQ2ZmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaApA
QCAtMTMzLDYgKzEzMywxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRDaGlsZENvbnRleHQoR3Jh
cGhpY3NDb250ZXh0M0QqKTsKICAgICB2b2lkIHJlbW92ZUNoaWxkQ29udGV4dChHcmFwaGljc0Nv
bnRleHQzRCopOwogCisjaWZuZGVmIE5ERUJVRworICAgIHN0YXRpYyBib29sIHNfaW5QYWludENv
bnRlbnRzOworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgdHlwZWRlZiBWZWN0b3I8UmVmUHRyPEND
TGF5ZXJJbXBsPiA+IExheWVyTGlzdDsKICAgICB0eXBlZGVmIEhhc2hNYXA8R3JhcGhpY3NDb250
ZXh0M0QqLCBpbnQ+IENoaWxkQ29udGV4dE1hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXIuY3BwCmluZGV4IDU3ZjMwNWNiNWViZmNiNTI4YjlmZTc2MDg1MzNjZDVlYWZmYzA1
NjQuLjczN2JjYzU2ZGQ4YjUzNDQwMDExZjU1YmRlMTVhZDI5YTY1ZDA5YWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAtMzc2OCw2ICszNzY4LDcgQEAgc3Rh
dGljIGlubGluZSBib29sIGNvbXBhcmVaSW5kZXgoUmVuZGVyTGF5ZXIqIGZpcnN0LCBSZW5kZXJM
YXllciogc2Vjb25kKQogCiB2b2lkIFJlbmRlckxheWVyOjpkaXJ0eVpPcmRlckxpc3RzKCkKIHsK
KyAgICBBU1NFUlQoIXJlbmRlcmVyKCktPmRvY3VtZW50KCktPnZpZXcoKS0+aXNQYWludGluZygp
KTsKICAgICBpZiAobV9wb3NaT3JkZXJMaXN0KQogICAgICAgICBtX3Bvc1pPcmRlckxpc3QtPmNs
ZWFyKCk7CiAgICAgaWYgKG1fbmVnWk9yZGVyTGlzdCkKQEAgLTM4NzQsNyArMzg3NSw3IEBAIHZv
aWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZUNvbXBvc2l0aW5nQW5kTGF5ZXJMaXN0c0lmTmVlZGVkKCkK
ICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgaWYgKGNvbXBvc2l0b3IoKS0+
aW5Db21wb3NpdGluZ01vZGUoKSkgewogICAgICAgICBpZiAoKGlzU3RhY2tpbmdDb250ZXh0KCkg
JiYgbV96T3JkZXJMaXN0c0RpcnR5KSB8fCBtX25vcm1hbEZsb3dMaXN0RGlydHkpCi0gICAgICAg
ICAgICBjb21wb3NpdG9yKCktPnVwZGF0ZUNvbXBvc2l0aW5nTGF5ZXJzKENvbXBvc2l0aW5nVXBk
YXRlT25QYWl0aW5nT3JIaXRUZXN0LCB0aGlzKTsKKyAgICAgICAgICAgIGNvbXBvc2l0b3IoKS0+
dXBkYXRlQ29tcG9zaXRpbmdMYXllcnMoQ29tcG9zaXRpbmdVcGRhdGVPblBhaW50aW5nT3JIaXRU
ZXN0LCB0aGlzKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAppbmRleCA3MzM5
MTRhOGE2ZGNiMzYyNzRmYTUyZWUwNmEyYmE1NDBlZDA1ZTM5Li42YWM2ZWQxYzI1MDk3NThiMWI5
ZmZiZDAzNjMzMzUwZjRkMjkxNTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcApAQCAtMjUwLDcgKzI1MCw3IEBAIHZvaWQgUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVDb21wb3NpdGluZ0xheWVycyhDb21wb3NpdGluZ1Vw
ZGF0ZVR5cGUgdXBkYXRlCiAKICAgICBzd2l0Y2ggKHVwZGF0ZVR5cGUpIHsKICAgICBjYXNlIENv
bXBvc2l0aW5nVXBkYXRlQWZ0ZXJMYXlvdXRPclN0eWxlQ2hhbmdlOgotICAgIGNhc2UgQ29tcG9z
aXRpbmdVcGRhdGVPblBhaXRpbmdPckhpdFRlc3Q6CisgICAgY2FzZSBDb21wb3NpdGluZ1VwZGF0
ZU9uUGFpbnRpbmdPckhpdFRlc3Q6CiAgICAgICAgIGNoZWNrRm9ySGllcmFyY2h5VXBkYXRlID0g
dHJ1ZTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb21wb3NpdGluZ1VwZGF0ZU9uU2Nyb2xs
OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9z
aXRvci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5o
CmluZGV4IDNiZGFmZGQxMmFmNTRkYzA1YTFjNDMyY2QwMmQ4MjRlZTk2MWIzYjQuLmFmM2Y4NjAw
ZmVlMzZlNWFkZmE3MmMxZWU3YTg5MTEwZDhkMzlhMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgKQEAgLTQzLDcgKzQzLDcgQEAgY2xh
c3MgUmVuZGVyVmlkZW87CiAKIGVudW0gQ29tcG9zaXRpbmdVcGRhdGVUeXBlIHsKICAgICBDb21w
b3NpdGluZ1VwZGF0ZUFmdGVyTGF5b3V0T3JTdHlsZUNoYW5nZSwKLSAgICBDb21wb3NpdGluZ1Vw
ZGF0ZU9uUGFpdGluZ09ySGl0VGVzdCwKKyAgICBDb21wb3NpdGluZ1VwZGF0ZU9uUGFpbnRpbmdP
ckhpdFRlc3QsCiAgICAgQ29tcG9zaXRpbmdVcGRhdGVPblNjcm9sbAogfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZwppbmRleCAwZjBhY2QzMWNlZTE2N2E2OWUxNWZmYTExMDJkMDExZDEyOWUy
YTIwLi4yNjdkYTQ2MGRjMmVmMTNlMjdhZTQ1N2ZlMmQ1ZDMxZDJiNzg1Mjc3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDExLTA0LTIxICBKYW1lcyBSb2Jp
bnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgW2Nocm9taXVtXSBFbnN1cmUgY29tcG9zaXRpbmcgbGF5ZXJz
IGFyZSB1cCB0byBkYXRlIGJlZm9yZSBlbnRlcmluZyBkb0NvbXBvc2l0ZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTkxNTkKKworICAgICAgICBFeHBs
aWNpdGx5IHVwZGF0ZSBhbmQgc3luYyB0aGUgY29tcG9zaXRpbmcgbGF5ZXIgZGF0YSBzdHJ1Y3R1
cmVzIGZvciBhbGwgZnJhbWVzIGluIHRoZSB0cmVlIGJlZm9yZSBlbnRlcmluZyB0aGUKKyAgICAg
ICAgY29tcG9zaXRlIG9wZXJhdGlvbiBzbyB0aGF0IGxhemlseSB1cGRhdGVkIHN0YXRlIGRvZXNu
J3QgbXV0YXRlIHRoZSBHcmFwaGljc0xheWVyIHRyZWUgd2hpbGUgY29tcG9zaXRpbmcuCisKKyAg
ICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1w
bDo6Y29tcG9zaXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGxDb250ZW50UGFpbnRl
cjo6cGFpbnQpOgorCiAyMDExLTA0LTIxICBSb2xhbmQgU3RlaW5lciAgPHJvbGFuZHN0ZWluZXJA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERpbWl0cmkgR2xhemtvdi4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAppbmRleCAyNDM4YTk0ODFk
MDE3MGM1NmIzNjMyYTBmYjAxZDZjM2QwMTg3YjhkLi4yZTA1OTYwMDIwYTU2OGFhNWQ4M2I5N2E0
YjAxNWQ1MzNkZmFkODljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJWaWV3SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0lt
cGwuY3BwCkBAIC0xMDk4LDYgKzEwOTgsMTEgQEAgdm9pZCBXZWJWaWV3SW1wbDo6dGhlbWVDaGFu
Z2VkKCkKIAogdm9pZCBXZWJWaWV3SW1wbDo6Y29tcG9zaXRlKGJvb2wgZmluaXNoKQogeworICAg
IC8vIFVwZGF0ZSB0aGUgY29tcG9zaXRpbmcgcmVxdWlyZW1lbnRzIGZvciBhbGwgZnJhbWUgaW4g
dGhlIHRyZWUgYmVmb3JlIGRvaW5nIGFueSBwYWludGluZworICAgIC8vIGFzIHRoZSBjb21wb3Np
dGluZyByZXF1aXJlbWVudHMgZm9yIGEgUmVuZGVyTGF5ZXIgd2l0aGluIGEgc3ViZnJhbWUgbWln
aHQgY2hhbmdlLgorICAgIGZvciAoRnJhbWUqIGZyYW1lID0gcGFnZSgpLT5tYWluRnJhbWUoKTsg
ZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0KCkpCisgICAgICAgIGZy
YW1lLT52aWV3KCktPnVwZGF0ZUNvbXBvc2l0aW5nTGF5ZXJzKENvbXBvc2l0aW5nVXBkYXRlT25Q
YWludGluZ09ySGl0VGVzdCk7CisgICAgcGFnZSgpLT5tYWluRnJhbWUoKS0+dmlldygpLT5zeW5j
Q29tcG9zaXRpbmdTdGF0ZUluY2x1ZGluZ1N1YmZyYW1lcygpOwogI2lmIFVTRShBQ0NFTEVSQVRF
RF9DT01QT1NJVElORykKICAgICBUUkFDRV9FVkVOVCgiV2ViVmlld0ltcGw6OmNvbXBvc2l0ZSIs
IHRoaXMsIDApOwogICAgIGlmIChtX3JlY3JlYXRpbmdHcmFwaGljc0NvbnRleHQpIHsKQEAgLTIz
NjYsOCArMjM3MSw3IEBAIHB1YmxpYzoKICAgICAgICAgUGFnZSogcGFnZSA9IG1fd2ViVmlld0lt
cGwtPnBhZ2UoKTsKICAgICAgICAgaWYgKCFwYWdlKQogICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICBGcmFtZVZpZXcqIHZpZXcgPSBwYWdlLT5tYWluRnJhbWUoKS0+dmlldygpOwotICAgICAg
ICB2aWV3LT5wYWludENvbnRlbnRzKCZjb250ZXh0LCBjb250ZW50UmVjdCk7CisgICAgICAgIHBh
Z2UtPm1haW5GcmFtZSgpLT52aWV3KCktPnBhaW50Q29udGVudHMoJmNvbnRleHQsIGNvbnRlbnRS
ZWN0KTsKICAgICB9CiAKIHByaXZhdGU6Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>91377</attachid>
            <date>2011-04-27 16:37:33 -0700</date>
            <delta_ts>2011-04-27 18:44:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-59159-20110427163732.patch</filename>
            <type>text/plain</type>
            <size>7171</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODUxMTkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxNzhhYzI3MjMwMzg0YmEz
MTc5YTg2NTljYmFjOTkyZWQ3ZDBhZjNhLi5hYzhjMGQwMDJlMTE1MjRjN2UyZDBjN2ExOTRmZTJh
YThkM2M4MGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTEtMDQtMjcgIEphbWVz
IFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbY2hyb21pdW1dIEVuc3VyZSBjb21wb3NpdGluZyBs
YXllcnMgYXJlIHVwIHRvIGRhdGUgYmVmb3JlIGVudGVyaW5nIGRvQ29tcG9zaXRlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTE1OQorCisgICAgICAg
IEFkZHMgc29tZSBhc3NlcnRpb25zIHRvIHRyeSB0byBjYXRjaCBHcmFwaGljc0xheWVyIG11dGF0
aW9ucyBhdCBiYWQgdGltZXMgKHN1Y2ggYXMgZHVyaW5nCisgICAgICAgIEdyYXBoaWNzTGF5ZXJD
bGllbnQ6OnBhaW50Q29udGVudHMoKSBpbXBsZW1lbnRhdGlvbnMpLgorCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6dXBkYXRlTGF5ZXJQcmVzZXJ2ZXMz
RCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNocm9taXVtOjpMYXllckNocm9taXVtKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheWVyQ2hyb21pdW06On5MYXllckNocm9taXVtKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjp1cGRhdGVMYXllcnMpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1
bS5oOgorICAgICAgICAgIEFkZCBhIHNldCBvZiBhc3NlcnRpb25zIHRoYXQgd2UgYXJlbid0IGNy
ZWF0aW5nIG9yIGRlc3Ryb3lpbmcgTGF5ZXJDaHJvbWl1bXMgZHVyaW5nIHBhaW50Q29udGVudHMK
KwogMjAxMS0wNC0xOSAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBUb255IENoYW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJv
bWl1bS5jcHAKaW5kZXggMjMwMWNhMzEzZDFlNDNiNGRkM2MxNTUwNTk0MDcwNDZmNGZjNmM0MS4u
MWJkZDdhYjYxZjJhOWY1Y2UwOTNmYWQwZWVkMzJhMTg0YTM0Njc0MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9t
aXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9H
cmFwaGljc0xheWVyQ2hyb21pdW0uY3BwCkBAIC01ODgsOCArNTg4LDkgQEAgdm9pZCBHcmFwaGlj
c0xheWVyQ2hyb21pdW06OnVwZGF0ZUxheWVyUHJlc2VydmVzM0QoKQogICAgICAgICB1cGRhdGVT
dWJsYXllckxpc3QoKTsKICAgICB9IGVsc2UgaWYgKCFtX3ByZXNlcnZlczNEICYmIG1fdHJhbnNm
b3JtTGF5ZXIpIHsKICAgICAgICAgLy8gUmVsYWNlIHRoZSB0cmFuc2Zvcm1MYXllciBpbiB0aGUg
cGFyZW50IHdpdGggdGhpcyBsYXllci4KKyAgICAgICAgaWYgKG1fdHJhbnNmb3JtTGF5ZXItPnN1
cGVybGF5ZXIoKSkKKyAgICAgICAgICAgIG1fdHJhbnNmb3JtTGF5ZXItPnN1cGVybGF5ZXIoKS0+
cmVwbGFjZVN1YmxheWVyKG1fdHJhbnNmb3JtTGF5ZXIuZ2V0KCksIG1fbGF5ZXIuZ2V0KCkpOwog
ICAgICAgICBtX2xheWVyLT5yZW1vdmVGcm9tU3VwZXJsYXllcigpOwotICAgICAgICBtX3RyYW5z
Zm9ybUxheWVyLT5zdXBlcmxheWVyKCktPnJlcGxhY2VTdWJsYXllcihtX3RyYW5zZm9ybUxheWVy
LmdldCgpLCBtX2xheWVyLmdldCgpKTsKIAogICAgICAgICAvLyBSZWxlYXNlIHRoZSB0cmFuc2Zv
cm0gbGF5ZXIuCiAgICAgICAgIG1fdHJhbnNmb3JtTGF5ZXIgPSAwOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVt
LmNwcAppbmRleCBmYmExZGM1MjQ3YmY3YmFiZDIzNmExNTJlYzQ0OTdkNDU3ZmRmNWRiLi5hZWVm
Yjc4YzJjZjRmOGUyNmM3NGFhM2Q3NzA5ZmI2MjgyNTVhZTI4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVt
LmNwcApAQCAtODEsMTAgKzgxLDEyIEBAIExheWVyQ2hyb21pdW06OkxheWVyQ2hyb21pdW0oR3Jh
cGhpY3NMYXllckNocm9taXVtKiBvd25lcikKICAgICAsIG1fZG91YmxlU2lkZWQodHJ1ZSkKICAg
ICAsIG1fcmVwbGljYUxheWVyKDApCiB7CisgICAgQVNTRVJUKCFMYXllclJlbmRlcmVyQ2hyb21p
dW06OnNfaW5QYWludExheWVyQ29udGVudHMpOwogfQogCiBMYXllckNocm9taXVtOjp+TGF5ZXJD
aHJvbWl1bSgpCiB7CisgICAgQVNTRVJUKCFMYXllclJlbmRlcmVyQ2hyb21pdW06OnNfaW5QYWlu
dExheWVyQ29udGVudHMpOwogICAgIC8vIE91ciBzdXBlcmxheWVyIHNob3VsZCBiZSBob2xkaW5n
IGEgcmVmZXJlbmNlIHRvIHVzIHNvIHRoZXJlIHNob3VsZCBiZSBubwogICAgIC8vIHdheSBmb3Ig
dXMgdG8gYmUgZGVzdHJveWVkIHdoaWxlIHdlIHN0aWxsIGhhdmUgYSBzdXBlcmxheWVyLgogICAg
IEFTU0VSVCghc3VwZXJsYXllcigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0u
Y3BwCmluZGV4IGU2MmI2NzQxYTkzYjhjYzE3ZWI0ZTFmODEyY2E3ZTlkZjU1MTU4YmUuLmY2Y2Rm
YzcwN2IwYzVhYWIyNWJjYzQ1M2I3ODU0MTgyOWQ3ODNkNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJS
ZW5kZXJlckNocm9taXVtLmNwcApAQCAtNTksNiArNTksMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogLy8gRklYTUU6IE1ha2UgdGhpcyBsaW1pdCBhZGp1c3RhYmxlIGFuZCBnaXZlIGl0IGEgdXNl
ZnVsIHZhbHVlLgogc3RhdGljIHNpemVfdCB0ZXh0dXJlTWVtb3J5TGltaXRCeXRlcyA9IDY0ICog
MTAyNCAqIDEwMjQ7CiAKKyNpZm5kZWYgTkRFQlVHCitib29sIExheWVyUmVuZGVyZXJDaHJvbWl1
bTo6c19pblBhaW50TGF5ZXJDb250ZW50cyA9IGZhbHNlOworI2VuZGlmCisKIHN0YXRpYyBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCBvcnRob01hdHJpeChmbG9hdCBsZWZ0LCBmbG9hdCByaWdodCwgZmxv
YXQgYm90dG9tLCBmbG9hdCB0b3ApCiB7CiAgICAgZmxvYXQgZGVsdGFYID0gcmlnaHQgLSBsZWZ0
OwpAQCAtMjgzLDcgKzI4NywxMyBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dXBkYXRl
TGF5ZXJzKExheWVyTGlzdCYgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCkKICAgICAvLyBjb25jZXB0
IG9mIGEgbGFyZ2UgY29udGVudCBsYXllci4KICAgICB1cGRhdGVQcm9wZXJ0aWVzQW5kUmVuZGVy
U3VyZmFjZXMobV9yb290TGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCByZW5kZXJTdXJmYWNl
TGF5ZXJMaXN0LCBtX2RlZmF1bHRSZW5kZXJTdXJmYWNlLT5tX2xheWVyTGlzdCk7CiAKKyNpZm5k
ZWYgTkRFQlVHCisgICAgc19pblBhaW50TGF5ZXJDb250ZW50cyA9IHRydWU7CisjZW5kaWYKICAg
ICBwYWludExheWVyQ29udGVudHMocmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7CisjaWZuZGVmIE5E
RUJVRworICAgIHNfaW5QYWludExheWVyQ29udGVudHMgPSBmYWxzZTsKKyNlbmRpZgogCiAgICAg
Ly8gRklYTUU6IEJlZm9yZSB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzUmVjdXJzaXZlLCB3aGVu
IHRoZSBjb21wb3NpdG9yIHJ1bnMgaW4KICAgICAvLyBpdHMgb3duIHRocmVhZCwgYW5kIHdoZW4g
dGhlIGNvcHlUZXhJbWFnZTJEIGJ1ZyBpcyBmaXhlZCwgaW5zZXJ0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21p
dW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVu
ZGVyZXJDaHJvbWl1bS5oCmluZGV4IGIzNzNjNTk2YjViMzg5ZmEyOWQ0NjMyYTU4YjFmMmM0MmI5
NGY0M2IuLjQ4NDJhNWJiNGRkMGQxODk3NzNlMzE2NzQxZjRjNDRjZjNlNjAwNjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVy
ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCkBAIC0xMzQsNiArMTM0LDkgQEAgcHVibGljOgog
ICAgIHZvaWQgYWRkQ2hpbGRDb250ZXh0KEdyYXBoaWNzQ29udGV4dDNEKik7CiAgICAgdm9pZCBy
ZW1vdmVDaGlsZENvbnRleHQoR3JhcGhpY3NDb250ZXh0M0QqKTsKIAorI2lmbmRlZiBOREVCVUcK
KyAgICBzdGF0aWMgYm9vbCBzX2luUGFpbnRMYXllckNvbnRlbnRzOworI2VuZGlmCiBwcml2YXRl
OgogICAgIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxDQ0xheWVySW1wbD4gPiBMYXllckxpc3Q7CiAg
ICAgdHlwZWRlZiBIYXNoTWFwPEdyYXBoaWNzQ29udGV4dDNEKiwgaW50PiBDaGlsZENvbnRleHRN
YXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGJjNWNjYzdhNGNkN2JjZjBhYmQ4NmFl
OWNiYzkxODhjYzg0ZDcyODcuLmRiMGFhYmU0ODBjMDdhNWZkYjFjMDQ5NzlmYzhhNTA3YWE0NmU1
ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMDQt
MjcgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbY2hyb21pdW1dIEVuc3VyZSBjb21w
b3NpdGluZyBsYXllcnMgYXJlIHVwIHRvIGRhdGUgYmVmb3JlIGVudGVyaW5nIGRvQ29tcG9zaXRl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTE1OQor
CisgICAgICAgIEV4cGxpY2l0bHkgdXBkYXRlIGFuZCBzeW5jIHRoZSBjb21wb3NpdGluZyBsYXll
ciBkYXRhIHN0cnVjdHVyZXMgZm9yIGFsbCBmcmFtZXMgaW4gdGhlIHRyZWUgYmVmb3JlIGVudGVy
aW5nIHRoZQorICAgICAgICBjb21wb3NpdGUgb3BlcmF0aW9uIHNvIHRoYXQgbGF6aWx5IHVwZGF0
ZWQgc3RhdGUgZG9lc24ndCBtdXRhdGUgdGhlIEdyYXBoaWNzTGF5ZXIgdHJlZSB3aGlsZSBjb21w
b3NpdGluZy4KKworICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlZpZXdJbXBsOjpjb21wb3NpdGUpOgorCiAyMDExLTA0LTI3ICBEaXJrIFByYW5rZSAg
PGRwcmFua2VAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEZpc2hl
ci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNw
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAppbmRleCA5MGNl
MDFjOWJmYTY0ZDI1YzI1Mjc3YzA5Zjc0ODQ4MjJjMzEyY2VjLi43ZWNlZTA1MWFlZTU3YjZjYWY3
YWI0M2NiOWI1ZjU0Yjc0MWVkNDg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJWaWV3SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Vmlld0ltcGwuY3BwCkBAIC0xMTAwLDYgKzExMDAsMTIgQEAgdm9pZCBXZWJWaWV3SW1wbDo6dGhl
bWVDaGFuZ2VkKCkKIHZvaWQgV2ViVmlld0ltcGw6OmNvbXBvc2l0ZShib29sIGZpbmlzaCkKIHsK
ICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisgICAgLy8gVXBkYXRlIHRoZSBjb21w
b3NpdGluZyByZXF1aXJlbWVudHMgZm9yIGFsbCBmcmFtZSBpbiB0aGUgdHJlZSBiZWZvcmUgZG9p
bmcgYW55IHBhaW50aW5nCisgICAgLy8gYXMgdGhlIGNvbXBvc2l0aW5nIHJlcXVpcmVtZW50cyBm
b3IgYSBSZW5kZXJMYXllciB3aXRoaW4gYSBzdWJmcmFtZSBtaWdodCBjaGFuZ2UuCisgICAgZm9y
IChGcmFtZSogZnJhbWUgPSBwYWdlKCktPm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFt
ZS0+dHJlZSgpLT50cmF2ZXJzZU5leHQoKSkKKyAgICAgICAgZnJhbWUtPnZpZXcoKS0+dXBkYXRl
Q29tcG9zaXRpbmdMYXllcnMoKTsKKyAgICBwYWdlKCktPm1haW5GcmFtZSgpLT52aWV3KCktPnN5
bmNDb21wb3NpdGluZ1N0YXRlSW5jbHVkaW5nU3ViZnJhbWVzKCk7CisKICAgICBUUkFDRV9FVkVO
VCgiV2ViVmlld0ltcGw6OmNvbXBvc2l0ZSIsIHRoaXMsIDApOwogICAgIGlmIChtX3JlY3JlYXRp
bmdHcmFwaGljc0NvbnRleHQpIHsKICAgICAgICAgLy8gcmVhbGxvY2F0ZVJlbmRlcmVyIHdpbGwg
cmVxdWVzdCBhIHJlcGFpbnQgd2hldGhlciBvciBub3QgaXQgc3VjY2VlZGVkCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>