<?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>19954</bug_id>
          
          <creation_ts>2008-07-08 16:33:00 -0700</creation_ts>
          <short_desc>Element with -webkit-mask: -webkit-canvas() is not redrawn when the canvas updates</short_desc>
          <delta_ts>2008-07-11 10:58:25 -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>Mac</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>dino</cc>
    
    <cc>hyatt</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>85499</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2008-07-08 16:33:00 -0700</bug_when>
    <thetext>The attached testcase shows a problem where, when the mask, which is a canvas, changes, the element is not redrawn.

The testcase has an image with style:
  -webkit-mask: -webkit-canvas(canvas1);
and an onmousemove() handler that redraws the canvas using the mouse coordinate to determine the size of the gradient.

What I see:
When the page loads, the image is drawn with the gradient mask, but never changes thereafter.

What I expect:
The image + mask is redrawn whenever the canvas is udpated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>85500</commentid>
    <comment_count>1</comment_count>
      <attachid>22166</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2008-07-08 16:33:24 -0700</bug_when>
    <thetext>Created attachment 22166
Testcase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>85501</commentid>
    <comment_count>2</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2008-07-08 16:35:20 -0700</bug_when>
    <thetext>&lt;rdar://problem/6061428&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>85502</commentid>
    <comment_count>3</comment_count>
      <attachid>22167</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2008-07-08 16:36:47 -0700</bug_when>
    <thetext>Created attachment 22167
Patch to repaint() when the mask image changes

First cut at a patch. Not sure how to do a non-manual testcase for this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>85568</commentid>
    <comment_count>4</comment_count>
      <attachid>22167</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2008-07-09 13:12:04 -0700</bug_when>
    <thetext>Comment on attachment 22167
Patch to repaint() when the mask image changes

(1) Adding maskBoxImage to RenderBox&apos;s first check is good.

(2) Adding maskImage is bad.  We want precise invalidation like we have  with backgrounds.  See the layer walk at the end of the function.  You should make a little static helper function that walks layers to do the invalidation.  Then you can call it on the background layers and on the mask layers.

(2) The patch to RenderImage should just call the base class if you have a mask.  So changing if (hasBoxDecorations()) to if (hasBoxDecorations() || hasMask()) should be sufficient.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>85574</commentid>
    <comment_count>5</comment_count>
      <attachid>22191</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2008-07-09 15:40:24 -0700</bug_when>
    <thetext>Created attachment 22191
Patch addressing review comments

&gt; (1) Adding maskBoxImage to RenderBox&apos;s first check is good.

I didn&apos;t add that, I just unwrapped the line.

&gt; (2) Adding maskImage is bad.  We want precise invalidation like we have  with
&gt; backgrounds.  See the layer walk at the end of the function.  You should make a
&gt; little static helper function that walks layers to do the invalidation.  Then
&gt; you can call it on the background layers and on the mask layers.

Done. Note that I had to add FillLayer::containsWrappedImage().

I added a method, repaintLayerRectsForImage(), rather than a static method, because
it needs to get at the view() for invalidation.

&gt; (2) The patch to RenderImage should just call the base class if you have a
&gt; mask.  So changing if (hasBoxDecorations()) to if (hasBoxDecorations() ||
&gt; hasMask()) should be sufficient.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>85576</commentid>
    <comment_count>6</comment_count>
      <attachid>22191</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2008-07-09 15:46:43 -0700</bug_when>
    <thetext>Comment on attachment 22191
Patch addressing review comments

containsWrappedImage is unnecessary. Doesn&apos;t really buy you anything and worst case causes you to do two walks of the layers instead of one.  The existing walk already checks for the image.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>85577</commentid>
    <comment_count>7</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2008-07-09 15:54:03 -0700</bug_when>
    <thetext>But I don&apos;t have a StyleImage to pass into containsImage(), just a WrappedImagePtr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>85583</commentid>
    <comment_count>8</comment_count>
      <attachid>22193</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2008-07-09 17:27:48 -0700</bug_when>
    <thetext>Created attachment 22193
Final patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>85585</commentid>
    <comment_count>9</comment_count>
      <attachid>22193</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2008-07-09 17:29:44 -0700</bug_when>
    <thetext>Comment on attachment 22193
Final patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>85615</commentid>
    <comment_count>10</comment_count>
      <attachid>22199</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2008-07-10 10:48:16 -0700</bug_when>
    <thetext>Created attachment 22199
Patch with testcase and changelog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>85617</commentid>
    <comment_count>11</comment_count>
      <attachid>22199</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2008-07-10 11:07:46 -0700</bug_when>
    <thetext>Comment on attachment 22199
Patch with testcase and changelog.

Transferring r= from hyatt</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>85627</commentid>
    <comment_count>12</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2008-07-10 12:32:38 -0700</bug_when>
    <thetext>Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	WebCore/ChangeLog
	A	WebCore/manual-tests/canvas-mask-redraw.html
	M	WebCore/rendering/RenderBox.cpp
	M	WebCore/rendering/RenderBox.h
	M	WebCore/rendering/RenderImage.cpp
	M	WebCore/rendering/RenderObject.cpp
Committed r35101

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>85636</commentid>
    <comment_count>13</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2008-07-10 13:48:09 -0700</bug_when>
    <thetext>Committed by dino in r35101</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>22166</attachid>
            <date>2008-07-08 16:33:24 -0700</date>
            <delta_ts>2008-07-08 16:33:24 -0700</delta_ts>
            <desc>Testcase</desc>
            <filename>canvas_mask.html</filename>
            <type>text/html</type>
            <size>2169</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFs
Ly9FTiIKICAgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Cgo8aHRtbCBs
YW5nPSJlbiI+CjxoZWFkPgogIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVu
dD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KICA8dGl0bGU+Q2FudmFzIE1hc2s8L3RpdGxl
PgogIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9InNjcmVlbiI+CiAgICAjY2FudmFzMSB7
CiAgICAgIGhlaWdodDogMzAwcHg7CiAgICAgIHdpZHRoOiA0MDBweDsKICAgICAgYm9yZGVyOiAx
cHggc29saWQgYmxhY2s7CiAgICB9CgogICAgLm1hc2tlZCB7Ci8qICAgICAgLXdlYmtpdC10cmFu
c2Zvcm06IHJvdGF0ZSgxMGRlZyk7Ki8KICAgICAgLXdlYmtpdC1tYXNrOiAtd2Via2l0LWNhbnZh
cyhjYW52YXMxKTsKICAgIH0KICA8L3N0eWxlPgogIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2Ny
aXB0IiBjaGFyc2V0PSJ1dGYtOCI+CiAgCiAgICB2YXIgZ1BhZ2VXaWR0aCA9IDMyMDsKICAgIHZh
ciBnUGFnZUhlaWdodCA9IDIwMDsKCiAgICBmdW5jdGlvbiBkcmF3UGFnZVNoYWRvdyhzaGFkb3dX
aWR0aCkKICAgIHsKICAgICAgICB2YXIgY3R4ID0gZG9jdW1lbnQuZ2V0Q1NTQ2FudmFzQ29udGV4
dCgnMmQnLCAnY2FudmFzMScsIGdQYWdlV2lkdGgsIGdQYWdlSGVpZ2h0KTsKICAgICAgICBjdHgu
Y2xlYXJSZWN0ICgwLCAwLCBnUGFnZVdpZHRoLCBnUGFnZUhlaWdodCk7CgogICAgICAgIHZhciBn
cmFkaWVudCA9IGN0eC5jcmVhdGVMaW5lYXJHcmFkaWVudCgwLCAwLCBzaGFkb3dXaWR0aCwgMCk7
CiAgICAgICAgZ3JhZGllbnQuYWRkQ29sb3JTdG9wKDAsICdyZ2JhKDAsMCwwLDEpJyk7CiAgICAg
ICAgZ3JhZGllbnQuYWRkQ29sb3JTdG9wKDEsICdyZ2JhKDAsMCwwLDApJyk7CiAgICAgICAgY3R4
LmZpbGxTdHlsZSA9IGdyYWRpZW50OwogICAgICAgIGN0eC5maWxsUmVjdCAoMCwgMCwgc2hhZG93
V2lkdGgsIGdQYWdlSGVpZ2h0KTsgICAgCiAgICB9CiAgICAKICAgIGZ1bmN0aW9uIHJlZHJhd0Nh
bnZhcyhldmVudCkKICAgIHsKICAgICAgZHJhd1BhZ2VTaGFkb3coZXZlbnQucGFnZVgpOwogICAg
fQogICAgCiAgICBmdW5jdGlvbiBvblBhZ2VMb2FkKCkKICAgIHsKICAgICAgZHJhd1BhZ2VTaGFk
b3coNjQwKTsKICAgIH0KICAgIAogICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBv
blBhZ2VMb2FkLCBmYWxzZSk7CiAgICAKICA8L3NjcmlwdD4KPC9oZWFkPgo8Ym9keT4KCiAgPHA+
SG92ZXJpbmcgb3ZlciB0aGUgaW1hZ2VzIHNob3VsZCBjYXVzZSB0aGUgbWFzayB0byByZWRyYXcg
KHdhdGNoIHRoZSBjb25zb2xlKTwvcD4KICA8aDI+SW1hZ2Ugd2l0aCBtYXNrPC9oMj4KICA8aW1n
IHNyYz0iaHR0cDovL3d3dy5nb29nbGUuY29tL2ludGwvZW5fQUxML2ltYWdlcy9sb2dvLmdpZiIg
IHdpZHRoPSIzMjAiIGhlaWdodD0iMjAwIiBhbHQ9IkNsb3duIEZpc2giIGNsYXNzPSJtYXNrZWQi
CiAgICBvbm1vdXNlbW92ZT0icmVkcmF3Q2FudmFzKGV2ZW50KSI+CgogICAgPGgyPkRpdiB3aXRo
IG1hc2s8L2gyPgogICAgPGRpdiBjbGFzcz0ibWFza2VkIiBzdHlsZT0id2lkdGg6IDY0MHB4IiBv
bm1vdXNlbW92ZT0icmVkcmF3Q2FudmFzKGV2ZW50KSI+CiAgICAgTG9yZW0gaXBzdW0gZG9sb3Ig
c2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2ljaW5nIGVsaXQsIHNlZCBkbyBlaXVzbW9kIHRl
bXBvciBpbmNpZGlkdW50IHV0IGxhYm9yZSBldCBkb2xvcmUgbWFnbmEgYWxpcXVhLiBVdCBlbmlt
IGFkIG1pbmltIHZlbmlhbSwgcXVpcyBub3N0cnVkIGV4ZXJjaXRhdGlvbiB1bGxhbWNvIGxhYm9y
aXMgbmlzaSB1dCBhbGlxdWlwIGV4IGVhIGNvbW1vZG8gY29uc2VxdWF0LiBEdWlzIGF1dGUgaXJ1
cmUgZG9sb3IgaW4gcmVwcmVoZW5kZXJpdCBpbiB2b2x1cHRhdGUgdmVsaXQgZXNzZSBjaWxsdW0g
ZG9sb3JlIGV1IGZ1Z2lhdCBudWxsYSBwYXJpYXR1ci4gRXhjZXB0ZXVyIHNpbnQgb2NjYWVjYXQg
Y3VwaWRhdGF0IG5vbiBwcm9pZGVudCwgc3VudCBpbiBjdWxwYSBxdWkgb2ZmaWNpYSBkZXNlcnVu
dCBtb2xsaXQgYW5pbSBpZCBlc3QgbGFib3J1bS4KICAgIDwvZGl2PgogIAo8L2JvZHk+CjwvaHRt
bD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>22167</attachid>
            <date>2008-07-08 16:36:47 -0700</date>
            <delta_ts>2008-07-09 15:40:24 -0700</delta_ts>
            <desc>Patch to repaint() when the mask image changes</desc>
            <filename>canvas_mask_patch.txt</filename>
            <type>text/plain</type>
            <size>2100</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAgYi9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3guY3BwCmluZGV4IDg1NDA3MjcuLjFmOGJjZDYgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94LmNwcApAQCAtNTM4LDggKzUzOCwxMCBAQCBJbnRTaXplIFJlbmRlckJveDo6Y2Fs
Y3VsYXRlQmFja2dyb3VuZFNpemUoY29uc3QgRmlsbExheWVyKiBiZ0xheWVyLCBpbnQgc2NhbGVk
VwogCiB2b2lkIFJlbmRlckJveDo6aW1hZ2VDaGFuZ2VkKFdyYXBwZWRJbWFnZVB0ciBpbWFnZSkK
IHsKLSAgICBpZiAoaXNJbmxpbmVGbG93KCkgfHwgc3R5bGUoKS0+Ym9yZGVySW1hZ2UoKS5pbWFn
ZSgpICYmIHN0eWxlKCktPmJvcmRlckltYWdlKCkuaW1hZ2UoKS0+ZGF0YSgpID09IGltYWdlIHx8
Ci0gICAgICAgIHN0eWxlKCktPm1hc2tCb3hJbWFnZSgpLmltYWdlKCkgJiYgc3R5bGUoKS0+bWFz
a0JveEltYWdlKCkuaW1hZ2UoKS0+ZGF0YSgpID09IGltYWdlKSB7CisgICAgaWYgKGlzSW5saW5l
RmxvdygpIHx8CisgICAgICAgIHN0eWxlKCktPmJvcmRlckltYWdlKCkuaW1hZ2UoKSAmJiBzdHls
ZSgpLT5ib3JkZXJJbWFnZSgpLmltYWdlKCktPmRhdGEoKSA9PSBpbWFnZSB8fAorICAgICAgICBz
dHlsZSgpLT5tYXNrQm94SW1hZ2UoKS5pbWFnZSgpICYmIHN0eWxlKCktPm1hc2tCb3hJbWFnZSgp
LmltYWdlKCktPmRhdGEoKSA9PSBpbWFnZSB8fAorICAgICAgICBzdHlsZSgpLT5tYXNrSW1hZ2Uo
KSAmJiBzdHlsZSgpLT5tYXNrSW1hZ2UoKS0+ZGF0YSgpID09IGltYWdlKSB7CiAgICAgICAgIHJl
cGFpbnQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckltYWdlLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNw
cAppbmRleCBhYmIzMWZjLi40MmYyMTBiIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJJbWFnZS5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCkBA
IC0yNTEsOCArMjUxLDE3IEBAIHZvaWQgUmVuZGVySW1hZ2U6OmltYWdlQ2hhbmdlZChXcmFwcGVk
SW1hZ2VQdHIgbmV3SW1hZ2UpCiAKICAgICBpZiAoaGFzQm94RGVjb3JhdGlvbnMoKSkKICAgICAg
ICAgUmVuZGVyUmVwbGFjZWQ6OmltYWdlQ2hhbmdlZChuZXdJbWFnZSk7Ci0gICAgCi0gICAgaWYg
KG5ld0ltYWdlICE9IGltYWdlUHRyKCkgfHwgIW5ld0ltYWdlKQorCisgICAgaWYgKCFuZXdJbWFn
ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gY2hlY2sgYm9yZGVySW1hZ2UoKSBhbmQgbWFz
a0JveEltYWdlKCkgaGVyZSB0b28/CisgICAgaWYgKHN0eWxlKCktPm1hc2tJbWFnZSgpICYmIHN0
eWxlKCktPm1hc2tJbWFnZSgpLT5kYXRhKCkgPT0gbmV3SW1hZ2UpIHsKKyAgICAgICAgcmVwYWlu
dCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKG5ld0ltYWdlICE9IGltYWdl
UHRyKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGJvb2wgaW1hZ2VTaXplQ2hhbmdlZCA9IGZh
bHNlOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCBiL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKaW5kZXggZDhiZTY0ZC4uMjQwNDg0NCAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAorKysgYi9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCkBAIC0zMDk0LDcgKzMwOTQsNyBAQCBBbmlt
YXRpb25Db250cm9sbGVyKiBSZW5kZXJPYmplY3Q6OmFuaW1hdGlvbigpIGNvbnN0CiAKIHZvaWQg
UmVuZGVyT2JqZWN0OjppbWFnZUNoYW5nZWQoQ2FjaGVkSW1hZ2UqIGltYWdlKQogewotICAgIHJl
dHVybiBpbWFnZUNoYW5nZWQoc3RhdGljX2Nhc3Q8V3JhcHBlZEltYWdlUHRyPihpbWFnZSkpOwor
ICAgIGltYWdlQ2hhbmdlZChzdGF0aWNfY2FzdDxXcmFwcGVkSW1hZ2VQdHI+KGltYWdlKSk7CiB9
CiAKIEludFJlY3QgUmVuZGVyT2JqZWN0OjpyZWZsZWN0aW9uQm94KCkgY29uc3QK
</data>
<flag name="review"
          id="9761"
          type_id="1"
          status="-"
          setter="hyatt"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>22191</attachid>
            <date>2008-07-09 15:40:24 -0700</date>
            <delta_ts>2008-07-09 17:27:48 -0700</delta_ts>
            <desc>Patch addressing review comments</desc>
            <filename>canvas_mask_patch.txt</filename>
            <type>text/plain</type>
            <size>4813</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAgYi9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3guY3BwCmluZGV4IDg1NDA3MjcuLmVlZTgyODkgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94LmNwcApAQCAtNTM4LDEzICs1MzgsMTMgQEAgSW50U2l6ZSBSZW5kZXJCb3g6OmNh
bGN1bGF0ZUJhY2tncm91bmRTaXplKGNvbnN0IEZpbGxMYXllciogYmdMYXllciwgaW50IHNjYWxl
ZFcKIAogdm9pZCBSZW5kZXJCb3g6OmltYWdlQ2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIgaW1hZ2Up
CiB7Ci0gICAgaWYgKGlzSW5saW5lRmxvdygpIHx8IHN0eWxlKCktPmJvcmRlckltYWdlKCkuaW1h
Z2UoKSAmJiBzdHlsZSgpLT5ib3JkZXJJbWFnZSgpLmltYWdlKCktPmRhdGEoKSA9PSBpbWFnZSB8
fAorICAgIGlmIChpc0lubGluZUZsb3coKSB8fAorICAgICAgICBzdHlsZSgpLT5ib3JkZXJJbWFn
ZSgpLmltYWdlKCkgJiYgc3R5bGUoKS0+Ym9yZGVySW1hZ2UoKS5pbWFnZSgpLT5kYXRhKCkgPT0g
aW1hZ2UgfHwKICAgICAgICAgc3R5bGUoKS0+bWFza0JveEltYWdlKCkuaW1hZ2UoKSAmJiBzdHls
ZSgpLT5tYXNrQm94SW1hZ2UoKS5pbWFnZSgpLT5kYXRhKCkgPT0gaW1hZ2UpIHsKICAgICAgICAg
cmVwYWludCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYm9vbCBkaWRGdWxsUmVw
YWludCA9IGZhbHNlOwogICAgIEludFJlY3QgYWJzb2x1dGVSZWN0OwogICAgIFJlbmRlckJveCog
YmFja2dyb3VuZFJlbmRlcmVyOwogCkBAIC01NzMsMTUgKzU3MywyNCBAQCB2b2lkIFJlbmRlckJv
eDo6aW1hZ2VDaGFuZ2VkKFdyYXBwZWRJbWFnZVB0ciBpbWFnZSkKIAogICAgIGJhY2tncm91bmRS
ZW5kZXJlci0+Y29tcHV0ZUFic29sdXRlUmVwYWludFJlY3QoYWJzb2x1dGVSZWN0KTsKIAotICAg
IGZvciAoY29uc3QgRmlsbExheWVyKiBiZ0xheWVyID0gc3R5bGUoKS0+YmFja2dyb3VuZExheWVy
cygpOyBiZ0xheWVyICYmICFkaWRGdWxsUmVwYWludDsgYmdMYXllciA9IGJnTGF5ZXItPm5leHQo
KSkgewotICAgICAgICBpZiAoYmdMYXllci0+aW1hZ2UoKSAmJiBpbWFnZSA9PSBiZ0xheWVyLT5p
bWFnZSgpLT5kYXRhKCkpIHsKKyAgICBpZiAoc3R5bGUoKS0+bWFza0xheWVycygpICYmIHN0eWxl
KCktPm1hc2tMYXllcnMoKS0+Y29udGFpbnNXcmFwcGVkSW1hZ2UoaW1hZ2UpKQorICAgICAgICBy
ZXBhaW50TGF5ZXJSZWN0c0ZvckltYWdlKGFic29sdXRlUmVjdCwgYmFja2dyb3VuZFJlbmRlcmVy
LCBpbWFnZSwgc3R5bGUoKS0+bWFza0xheWVycygpKTsKKworICAgIGlmIChzdHlsZSgpLT5iYWNr
Z3JvdW5kTGF5ZXJzKCkgJiYgc3R5bGUoKS0+YmFja2dyb3VuZExheWVycygpLT5jb250YWluc1dy
YXBwZWRJbWFnZShpbWFnZSkpCisgICAgICAgIHJlcGFpbnRMYXllclJlY3RzRm9ySW1hZ2UoYWJz
b2x1dGVSZWN0LCBiYWNrZ3JvdW5kUmVuZGVyZXIsIGltYWdlLCBzdHlsZSgpLT5iYWNrZ3JvdW5k
TGF5ZXJzKCkpOworfQorCit2b2lkIFJlbmRlckJveDo6cmVwYWludExheWVyUmVjdHNGb3JJbWFn
ZShjb25zdCBJbnRSZWN0JiBhYnNvbHV0ZVJlY3QsIFJlbmRlckJveCogYmFja2dyb3VuZFJlbmRl
cmVyLCBXcmFwcGVkSW1hZ2VQdHIgaW1hZ2UsIGNvbnN0IEZpbGxMYXllciogbGF5ZXJzKQorewor
ICAgIGZvciAoY29uc3QgRmlsbExheWVyKiBjdXJMYXllciA9IGxheWVyczsgY3VyTGF5ZXI7IGN1
ckxheWVyID0gY3VyTGF5ZXItPm5leHQoKSkgeworICAgICAgICBpZiAoY3VyTGF5ZXItPmltYWdl
KCkgJiYgaW1hZ2UgPT0gY3VyTGF5ZXItPmltYWdlKCktPmRhdGEoKSkgewogICAgICAgICAgICAg
SW50UmVjdCByZXBhaW50UmVjdDsKICAgICAgICAgICAgIEludFBvaW50IHBoYXNlOwogICAgICAg
ICAgICAgSW50U2l6ZSB0aWxlU2l6ZTsKLSAgICAgICAgICAgIGJhY2tncm91bmRSZW5kZXJlci0+
Y2FsY3VsYXRlQmFja2dyb3VuZEltYWdlR2VvbWV0cnkoYmdMYXllciwgYWJzb2x1dGVSZWN0Lngo
KSwgYWJzb2x1dGVSZWN0LnkoKSwgYWJzb2x1dGVSZWN0LndpZHRoKCksIGFic29sdXRlUmVjdC5o
ZWlnaHQoKSwgcmVwYWludFJlY3QsIHBoYXNlLCB0aWxlU2l6ZSk7CisgICAgICAgICAgICBiYWNr
Z3JvdW5kUmVuZGVyZXItPmNhbGN1bGF0ZUJhY2tncm91bmRJbWFnZUdlb21ldHJ5KGN1ckxheWVy
LCBhYnNvbHV0ZVJlY3QueCgpLCBhYnNvbHV0ZVJlY3QueSgpLCBhYnNvbHV0ZVJlY3Qud2lkdGgo
KSwgYWJzb2x1dGVSZWN0LmhlaWdodCgpLCByZXBhaW50UmVjdCwgcGhhc2UsIHRpbGVTaXplKTsK
ICAgICAgICAgICAgIHZpZXcoKS0+cmVwYWludFZpZXdSZWN0YW5nbGUocmVwYWludFJlY3QpOwog
ICAgICAgICAgICAgaWYgKHJlcGFpbnRSZWN0ID09IGFic29sdXRlUmVjdCkKLSAgICAgICAgICAg
ICAgICBkaWRGdWxsUmVwYWludCA9IHRydWU7CisgICAgICAgICAgICAgICAgYnJlYWs7ICAgICAv
LyBubyBuZWVkIHRvIGRvIGFueSBtb3JlIGludmFsaWRhdGVzCiAgICAgICAgIH0KICAgICB9CiB9
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaCBiL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveC5oCmluZGV4IDhiMDQ5ODcuLmFhYzc0ODAgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJveC5oCkBAIC0xODMsNiArMTgzLDcgQEAgcHJvdGVjdGVkOgogCiBwcml2YXRlOgogICAgIHZv
aWQgcGFpbnRSb290Qm94RGVjb3JhdGlvbnMoUGFpbnRJbmZvJiwgaW50IHR4LCBpbnQgdHkpOwor
ICAgIHZvaWQgcmVwYWludExheWVyUmVjdHNGb3JJbWFnZShjb25zdCBJbnRSZWN0JiBhYnNvbHV0
ZVJlY3QsIFJlbmRlckJveCogYmFja2dyb3VuZFJlbmRlcmVyLCBXcmFwcGVkSW1hZ2VQdHIgaW1h
Z2UsIGNvbnN0IEZpbGxMYXllciogbGF5ZXJzKTsKIAogICAgIHZvaWQgY2FsY3VsYXRlQmFja2dy
b3VuZEltYWdlR2VvbWV0cnkoY29uc3QgRmlsbExheWVyKiwgaW50IHR4LCBpbnQgdHksIGludCB3
LCBpbnQgaCwgSW50UmVjdCYgZGVzdFJlY3QsIEludFBvaW50JiBwaGFzZSwgSW50U2l6ZSYgdGls
ZVNpemUpOwogICAgIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2Uu
Y3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCmluZGV4IGFiYjMxZmMuLjdl
MmM3ZmMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAorKysg
Yi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKQEAgLTI0OSw3ICsyNDksNyBAQCB2
b2lkIFJlbmRlckltYWdlOjppbWFnZUNoYW5nZWQoV3JhcHBlZEltYWdlUHRyIG5ld0ltYWdlKQog
ICAgIGlmIChkb2N1bWVudEJlaW5nRGVzdHJveWVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGlmIChoYXNCb3hEZWNvcmF0aW9ucygpKQorICAgIGlmIChoYXNCb3hEZWNvcmF0aW9ucygpIHx8
IGhhc01hc2soKSkKICAgICAgICAgUmVuZGVyUmVwbGFjZWQ6OmltYWdlQ2hhbmdlZChuZXdJbWFn
ZSk7CiAgICAgCiAgICAgaWYgKG5ld0ltYWdlICE9IGltYWdlUHRyKCkgfHwgIW5ld0ltYWdlKQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCBiL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKaW5kZXggZDhiZTY0ZC4uMjQwNDg0NCAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAorKysgYi9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCkBAIC0zMDk0LDcgKzMwOTQsNyBAQCBBbmltYXRpb25D
b250cm9sbGVyKiBSZW5kZXJPYmplY3Q6OmFuaW1hdGlvbigpIGNvbnN0CiAKIHZvaWQgUmVuZGVy
T2JqZWN0OjppbWFnZUNoYW5nZWQoQ2FjaGVkSW1hZ2UqIGltYWdlKQogewotICAgIHJldHVybiBp
bWFnZUNoYW5nZWQoc3RhdGljX2Nhc3Q8V3JhcHBlZEltYWdlUHRyPihpbWFnZSkpOworICAgIGlt
YWdlQ2hhbmdlZChzdGF0aWNfY2FzdDxXcmFwcGVkSW1hZ2VQdHI+KGltYWdlKSk7CiB9CiAKIElu
dFJlY3QgUmVuZGVyT2JqZWN0OjpyZWZsZWN0aW9uQm94KCkgY29uc3QKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmggYi9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9SZW5kZXJTdHlsZS5oCmluZGV4IGViYWI4YjYuLjVhMDY4ODMgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKKysrIGIvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvUmVuZGVyU3R5bGUuaApAQCAtNjQxLDYgKzY0MSwxNiBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICByZXR1cm4gbV9uZXh0LT5jb250YWluc0ltYWdlKHMpOwogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQorCisgICAgYm9vbCBjb250YWluc1dyYXBwZWRJbWFnZShXcmFwcGVkSW1h
Z2VQdHIgaW1hZ2UpIGNvbnN0IHsKKyAgICAgICAgaWYgKCFpbWFnZSkKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgaWYgKG1faW1hZ2UgJiYgbV9pbWFnZS0+ZGF0YSgpID09IGlt
YWdlKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGlmIChtX25leHQpCisgICAg
ICAgICAgICByZXR1cm4gbV9uZXh0LT5jb250YWluc1dyYXBwZWRJbWFnZShpbWFnZSk7CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CiAgICAgCiAgICAgYm9vbCBoYXNJbWFnZSgpIGNvbnN0
IHsKICAgICAgICAgaWYgKG1faW1hZ2UpCg==
</data>
<flag name="review"
          id="9765"
          type_id="1"
          status="-"
          setter="hyatt"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>22193</attachid>
            <date>2008-07-09 17:27:48 -0700</date>
            <delta_ts>2008-07-10 10:48:16 -0700</delta_ts>
            <desc>Final patch</desc>
            <filename>canvas_mask_patch.txt</filename>
            <type>text/plain</type>
            <size>6860</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAgYi9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3guY3BwCmluZGV4IDg1NDA3MjcuLjBjOTczZTQgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94LmNwcApAQCAtNTM4LDUyICs1MzgsNjYgQEAgSW50U2l6ZSBSZW5kZXJCb3g6OmNh
bGN1bGF0ZUJhY2tncm91bmRTaXplKGNvbnN0IEZpbGxMYXllciogYmdMYXllciwgaW50IHNjYWxl
ZFcKIAogdm9pZCBSZW5kZXJCb3g6OmltYWdlQ2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIgaW1hZ2Up
CiB7Ci0gICAgaWYgKGlzSW5saW5lRmxvdygpIHx8IHN0eWxlKCktPmJvcmRlckltYWdlKCkuaW1h
Z2UoKSAmJiBzdHlsZSgpLT5ib3JkZXJJbWFnZSgpLmltYWdlKCktPmRhdGEoKSA9PSBpbWFnZSB8
fAorICAgIGlmIChpc0lubGluZUZsb3coKSB8fAorICAgICAgICBzdHlsZSgpLT5ib3JkZXJJbWFn
ZSgpLmltYWdlKCkgJiYgc3R5bGUoKS0+Ym9yZGVySW1hZ2UoKS5pbWFnZSgpLT5kYXRhKCkgPT0g
aW1hZ2UgfHwKICAgICAgICAgc3R5bGUoKS0+bWFza0JveEltYWdlKCkuaW1hZ2UoKSAmJiBzdHls
ZSgpLT5tYXNrQm94SW1hZ2UoKS5pbWFnZSgpLT5kYXRhKCkgPT0gaW1hZ2UpIHsKICAgICAgICAg
cmVwYWludCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYm9vbCBkaWRGdWxsUmVw
YWludCA9IGZhbHNlOwotICAgIEludFJlY3QgYWJzb2x1dGVSZWN0OwotICAgIFJlbmRlckJveCog
YmFja2dyb3VuZFJlbmRlcmVyOwotCi0gICAgaWYgKGlzUm9vdCgpIHx8IChpc0JvZHkoKSAmJiBk
b2N1bWVudCgpLT5pc0hUTUxEb2N1bWVudCgpICYmICFkb2N1bWVudCgpLT5kb2N1bWVudEVsZW1l
bnQoKS0+cmVuZGVyZXIoKS0+c3R5bGUoKS0+aGFzQmFja2dyb3VuZCgpKSkgewotICAgICAgICAv
LyBPdXIgYmFja2dyb3VuZCBwcm9wYWdhdGVzIHRvIHRoZSByb290LgotICAgICAgICBiYWNrZ3Jv
dW5kUmVuZGVyZXIgPSB2aWV3KCk7CisgICAgYm9vbCBkaWRGdWxsUmVwYWludCA9IHJlcGFpbnRM
YXllclJlY3RzRm9ySW1hZ2UoaW1hZ2UsIHN0eWxlKCktPmJhY2tncm91bmRMYXllcnMoKSwgdHJ1
ZSk7CisgICAgaWYgKCFkaWRGdWxsUmVwYWludCkgeworICAgICAgICByZXBhaW50TGF5ZXJSZWN0
c0ZvckltYWdlKGltYWdlLCBzdHlsZSgpLT5tYXNrTGF5ZXJzKCksIGZhbHNlKTsKKyAgICB9Cit9
CiAKLSAgICAgICAgaW50IHJ3OwotICAgICAgICBpbnQgcmg7Citib29sIFJlbmRlckJveDo6cmVw
YWludExheWVyUmVjdHNGb3JJbWFnZShXcmFwcGVkSW1hZ2VQdHIgaW1hZ2UsIGNvbnN0IEZpbGxM
YXllciogbGF5ZXJzLCBib29sIGRyYXdpbmdCYWNrZ3JvdW5kKQoreworICAgIEludFJlY3QgYWJz
b2x1dGVSZWN0OworICAgIFJlbmRlckJveCogbGF5ZXJSZW5kZXJlciA9IDA7CiAKLSAgICAgICAg
aWYgKEZyYW1lVmlldyogZnJhbWVWaWV3ID0gc3RhdGljX2Nhc3Q8UmVuZGVyVmlldyo+KGJhY2tn
cm91bmRSZW5kZXJlciktPmZyYW1lVmlldygpKSB7Ci0gICAgICAgICAgICBydyA9IGZyYW1lVmll
dy0+Y29udGVudHNXaWR0aCgpOwotICAgICAgICAgICAgcmggPSBmcmFtZVZpZXctPmNvbnRlbnRz
SGVpZ2h0KCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBydyA9IGJhY2tncm91bmRS
ZW5kZXJlci0+d2lkdGgoKTsKLSAgICAgICAgICAgIHJoID0gYmFja2dyb3VuZFJlbmRlcmVyLT5o
ZWlnaHQoKTsKLSAgICAgICAgfQotICAgICAgICBhYnNvbHV0ZVJlY3QgPSBJbnRSZWN0KC1iYWNr
Z3JvdW5kUmVuZGVyZXItPm1hcmdpbkxlZnQoKSwKLSAgICAgICAgICAgIC1iYWNrZ3JvdW5kUmVu
ZGVyZXItPm1hcmdpblRvcCgpLAotICAgICAgICAgICAgbWF4KGJhY2tncm91bmRSZW5kZXJlci0+
d2lkdGgoKSArIGJhY2tncm91bmRSZW5kZXJlci0+bWFyZ2luTGVmdCgpICsgYmFja2dyb3VuZFJl
bmRlcmVyLT5tYXJnaW5SaWdodCgpICsgYmFja2dyb3VuZFJlbmRlcmVyLT5ib3JkZXJMZWZ0KCkg
KyBiYWNrZ3JvdW5kUmVuZGVyZXItPmJvcmRlclJpZ2h0KCksIHJ3KSwKLSAgICAgICAgICAgIG1h
eChiYWNrZ3JvdW5kUmVuZGVyZXItPmhlaWdodCgpICsgYmFja2dyb3VuZFJlbmRlcmVyLT5tYXJn
aW5Ub3AoKSArIGJhY2tncm91bmRSZW5kZXJlci0+bWFyZ2luQm90dG9tKCkgKyBiYWNrZ3JvdW5k
UmVuZGVyZXItPmJvcmRlclRvcCgpICsgYmFja2dyb3VuZFJlbmRlcmVyLT5ib3JkZXJCb3R0b20o
KSwgcmgpKTsKLSAgICB9IGVsc2UgewotICAgICAgICBiYWNrZ3JvdW5kUmVuZGVyZXIgPSB0aGlz
OwotICAgICAgICBhYnNvbHV0ZVJlY3QgPSBib3JkZXJCb3goKTsKLSAgICB9CisgICAgZm9yIChj
b25zdCBGaWxsTGF5ZXIqIGN1ckxheWVyID0gbGF5ZXJzOyBjdXJMYXllcjsgY3VyTGF5ZXIgPSBj
dXJMYXllci0+bmV4dCgpKSB7CisgICAgICAgIGlmIChjdXJMYXllci0+aW1hZ2UoKSAmJiBpbWFn
ZSA9PSBjdXJMYXllci0+aW1hZ2UoKS0+ZGF0YSgpKSB7CisgICAgICAgIAorICAgICAgICAgICAg
Ly8gTm93IHRoYXQgd2Uga25vdyB0aGlzIGltYWdlIGlzIGJlaW5nIHVzZWQsIGNvbXB1dGUgdGhl
IHJlbmRlcmVyIGFuZCB0aGUgcmVjdAorICAgICAgICAgICAgLy8gaWYgd2UgaGF2ZW4ndCBhbHJl
YWR5CisgICAgICAgICAgICBpZiAoIWxheWVyUmVuZGVyZXIpIHsKKyAgICAgICAgICAgICAgICBi
b29sIGRyYXdpbmdSb290QmFja2dyb3VuZCA9IGRyYXdpbmdCYWNrZ3JvdW5kICYmIChpc1Jvb3Qo
KSB8fCAoaXNCb2R5KCkgJiYgZG9jdW1lbnQoKS0+aXNIVE1MRG9jdW1lbnQoKSAmJiAhZG9jdW1l
bnQoKS0+ZG9jdW1lbnRFbGVtZW50KCktPnJlbmRlcmVyKCktPnN0eWxlKCktPmhhc0JhY2tncm91
bmQoKSkpOworICAgICAgICAgICAgICAgIGlmIChkcmF3aW5nUm9vdEJhY2tncm91bmQpIHsKKyAg
ICAgICAgICAgICAgICAgICAgbGF5ZXJSZW5kZXJlciA9IHZpZXcoKTsKKworICAgICAgICAgICAg
ICAgICAgICBpbnQgcnc7CisgICAgICAgICAgICAgICAgICAgIGludCByaDsKKworICAgICAgICAg
ICAgICAgICAgICBpZiAoRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBzdGF0aWNfY2FzdDxSZW5kZXJW
aWV3Kj4obGF5ZXJSZW5kZXJlciktPmZyYW1lVmlldygpKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBydyA9IGZyYW1lVmlldy0+Y29udGVudHNXaWR0aCgpOworICAgICAgICAgICAgICAgICAg
ICAgICAgcmggPSBmcmFtZVZpZXctPmNvbnRlbnRzSGVpZ2h0KCk7CisgICAgICAgICAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBydyA9IGxheWVyUmVuZGVyZXIt
PndpZHRoKCk7CisgICAgICAgICAgICAgICAgICAgICAgICByaCA9IGxheWVyUmVuZGVyZXItPmhl
aWdodCgpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGFic29s
dXRlUmVjdCA9IEludFJlY3QoLWxheWVyUmVuZGVyZXItPm1hcmdpbkxlZnQoKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIC1sYXllclJlbmRlcmVyLT5tYXJnaW5Ub3AoKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIG1heChsYXllclJlbmRlcmVyLT53aWR0aCgpICsgbGF5ZXJSZW5kZXJlci0+
bWFyZ2luTGVmdCgpICsgbGF5ZXJSZW5kZXJlci0+bWFyZ2luUmlnaHQoKSArIGxheWVyUmVuZGVy
ZXItPmJvcmRlckxlZnQoKSArIGxheWVyUmVuZGVyZXItPmJvcmRlclJpZ2h0KCksIHJ3KSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIG1heChsYXllclJlbmRlcmVyLT5oZWlnaHQoKSArIGxheWVy
UmVuZGVyZXItPm1hcmdpblRvcCgpICsgbGF5ZXJSZW5kZXJlci0+bWFyZ2luQm90dG9tKCkgKyBs
YXllclJlbmRlcmVyLT5ib3JkZXJUb3AoKSArIGxheWVyUmVuZGVyZXItPmJvcmRlckJvdHRvbSgp
LCByaCkpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGxh
eWVyUmVuZGVyZXIgPSB0aGlzOworICAgICAgICAgICAgICAgICAgICBhYnNvbHV0ZVJlY3QgPSBi
b3JkZXJCb3goKTsKKyAgICAgICAgICAgICAgICB9CiAKLSAgICBiYWNrZ3JvdW5kUmVuZGVyZXIt
PmNvbXB1dGVBYnNvbHV0ZVJlcGFpbnRSZWN0KGFic29sdXRlUmVjdCk7CisgICAgICAgICAgICAg
ICAgbGF5ZXJSZW5kZXJlci0+Y29tcHV0ZUFic29sdXRlUmVwYWludFJlY3QoYWJzb2x1dGVSZWN0
KTsKKyAgICAgICAgICAgIH0KIAotICAgIGZvciAoY29uc3QgRmlsbExheWVyKiBiZ0xheWVyID0g
c3R5bGUoKS0+YmFja2dyb3VuZExheWVycygpOyBiZ0xheWVyICYmICFkaWRGdWxsUmVwYWludDsg
YmdMYXllciA9IGJnTGF5ZXItPm5leHQoKSkgewotICAgICAgICBpZiAoYmdMYXllci0+aW1hZ2Uo
KSAmJiBpbWFnZSA9PSBiZ0xheWVyLT5pbWFnZSgpLT5kYXRhKCkpIHsKICAgICAgICAgICAgIElu
dFJlY3QgcmVwYWludFJlY3Q7CiAgICAgICAgICAgICBJbnRQb2ludCBwaGFzZTsKICAgICAgICAg
ICAgIEludFNpemUgdGlsZVNpemU7Ci0gICAgICAgICAgICBiYWNrZ3JvdW5kUmVuZGVyZXItPmNh
bGN1bGF0ZUJhY2tncm91bmRJbWFnZUdlb21ldHJ5KGJnTGF5ZXIsIGFic29sdXRlUmVjdC54KCks
IGFic29sdXRlUmVjdC55KCksIGFic29sdXRlUmVjdC53aWR0aCgpLCBhYnNvbHV0ZVJlY3QuaGVp
Z2h0KCksIHJlcGFpbnRSZWN0LCBwaGFzZSwgdGlsZVNpemUpOworICAgICAgICAgICAgbGF5ZXJS
ZW5kZXJlci0+Y2FsY3VsYXRlQmFja2dyb3VuZEltYWdlR2VvbWV0cnkoY3VyTGF5ZXIsIGFic29s
dXRlUmVjdC54KCksIGFic29sdXRlUmVjdC55KCksIGFic29sdXRlUmVjdC53aWR0aCgpLCBhYnNv
bHV0ZVJlY3QuaGVpZ2h0KCksIHJlcGFpbnRSZWN0LCBwaGFzZSwgdGlsZVNpemUpOwogICAgICAg
ICAgICAgdmlldygpLT5yZXBhaW50Vmlld1JlY3RhbmdsZShyZXBhaW50UmVjdCk7CiAgICAgICAg
ICAgICBpZiAocmVwYWludFJlY3QgPT0gYWJzb2x1dGVSZWN0KQotICAgICAgICAgICAgICAgIGRp
ZEZ1bGxSZXBhaW50ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAg
ICAgfQogICAgIH0KKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIHZvaWQgUmVuZGVyQm94OjpjYWxj
dWxhdGVCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeShjb25zdCBGaWxsTGF5ZXIqIGJnTGF5ZXIsIGlu
dCB0eCwgaW50IHR5LCBpbnQgdywgaW50IGgsIEludFJlY3QmIGRlc3RSZWN0LCBJbnRQb2ludCYg
cGhhc2UsIEludFNpemUmIHRpbGVTaXplKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94LmggYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAppbmRleCA4YjA0OTg3
Li44YzU3OWEzIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAorKysg
Yi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaApAQCAtMTgzLDYgKzE4Myw4IEBAIHByb3Rl
Y3RlZDoKIAogcHJpdmF0ZToKICAgICB2b2lkIHBhaW50Um9vdEJveERlY29yYXRpb25zKFBhaW50
SW5mbyYsIGludCB0eCwgaW50IHR5KTsKKyAgICAvLyByZXR1cm5zIHRydWUgaWYgd2UgZGlkIGEg
ZnVsbCByZXBhaW50CisgICAgYm9vbCByZXBhaW50TGF5ZXJSZWN0c0ZvckltYWdlKFdyYXBwZWRJ
bWFnZVB0ciBpbWFnZSwgY29uc3QgRmlsbExheWVyKiBsYXllcnMsIGJvb2wgZHJhd2luZ0JhY2tn
cm91bmQpOwogCiAgICAgdm9pZCBjYWxjdWxhdGVCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeShjb25z
dCBGaWxsTGF5ZXIqLCBpbnQgdHgsIGludCB0eSwgaW50IHcsIGludCBoLCBJbnRSZWN0JiBkZXN0
UmVjdCwgSW50UG9pbnQmIHBoYXNlLCBJbnRTaXplJiB0aWxlU2l6ZSk7CiAgICAgCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAgYi9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJJbWFnZS5jcHAKaW5kZXggYWJiMzFmYy4uN2UyYzdmYyAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckltYWdlLmNwcApAQCAtMjQ5LDcgKzI0OSw3IEBAIHZvaWQgUmVuZGVySW1hZ2U6OmltYWdl
Q2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIgbmV3SW1hZ2UpCiAgICAgaWYgKGRvY3VtZW50QmVpbmdE
ZXN0cm95ZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGhhc0JveERlY29yYXRpb25z
KCkpCisgICAgaWYgKGhhc0JveERlY29yYXRpb25zKCkgfHwgaGFzTWFzaygpKQogICAgICAgICBS
ZW5kZXJSZXBsYWNlZDo6aW1hZ2VDaGFuZ2VkKG5ld0ltYWdlKTsKICAgICAKICAgICBpZiAobmV3
SW1hZ2UgIT0gaW1hZ2VQdHIoKSB8fCAhbmV3SW1hZ2UpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJPYmplY3QuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0
LmNwcAppbmRleCBkOGJlNjRkLi4yNDA0ODQ0IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJPYmplY3QuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5j
cHAKQEAgLTMwOTQsNyArMzA5NCw3IEBAIEFuaW1hdGlvbkNvbnRyb2xsZXIqIFJlbmRlck9iamVj
dDo6YW5pbWF0aW9uKCkgY29uc3QKIAogdm9pZCBSZW5kZXJPYmplY3Q6OmltYWdlQ2hhbmdlZChD
YWNoZWRJbWFnZSogaW1hZ2UpCiB7Ci0gICAgcmV0dXJuIGltYWdlQ2hhbmdlZChzdGF0aWNfY2Fz
dDxXcmFwcGVkSW1hZ2VQdHI+KGltYWdlKSk7CisgICAgaW1hZ2VDaGFuZ2VkKHN0YXRpY19jYXN0
PFdyYXBwZWRJbWFnZVB0cj4oaW1hZ2UpKTsKIH0KIAogSW50UmVjdCBSZW5kZXJPYmplY3Q6OnJl
ZmxlY3Rpb25Cb3goKSBjb25zdAo=
</data>
<flag name="review"
          id="9767"
          type_id="1"
          status="+"
          setter="hyatt"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>22199</attachid>
            <date>2008-07-10 10:48:16 -0700</date>
            <delta_ts>2008-07-10 11:07:46 -0700</delta_ts>
            <desc>Patch with testcase and changelog.</desc>
            <filename>mask_redraw_patch.txt</filename>
            <type>text/plain</type>
            <size>10585</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZWVmZDhlYS4uN2JlMTNhYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAwOC0wNy0xMCAgU2ltb24gRnJhc2Vy
ICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBXaGVuIGEgbWFzayBpbWFnZSBj
aGFuZ2VzLCBlbnN1cmUgdGhhdCBlbGVtZW50cworICAgICAgICB0aGF0IHVzZSB0aGF0IG1hc2sg
aW1hZ2UgYXJlIHJlcGFpbnRlZCBjb3JyZWN0bHkuCisgICAgICAgIAorICAgICAgICA8aHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5OTU0PgorICAgICAgICAKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgRGF2ZSBIeWF0dAorCisgICAgICAgICogbWFudWFsLXRlc3RzL2NhbnZh
cy1tYXNrLXJlZHJhdy5odG1sCisgICAgICAgICAgTWFudWFsIHRlc3RjYXNlCisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6Omlt
YWdlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnJlcGFpbnRMYXllclJl
Y3RzRm9ySW1hZ2UpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guaDoKKyAgICAgICAg
TG9vcCB0aHJvdWdoIGJhY2tncm91bmQgbGF5ZXJzIGFuZCBtYXNrIGxheWVycywgYW5kCisgICAg
ICAgIGlmIHRoaXMgaW1hZ2UgaXMgdXNlZCBpbiBhIGxheWVyLCBjb21wdXRlIGEgcmVwYWludAor
ICAgICAgICByZWN0IGFuZCByZXBhaW50LgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbWFn
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6aW1hZ2VDaGFuZ2VkKToKKyAg
ICAgICAgSWYgdGhpcyBpbWFnZSBoYXMgYSBtYXNrLCBjYWxsIHRoZSBiYXNlIGNsYXNzIG1ldGhv
ZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgUmVtb3Zl
IGEgYm9ndXMgJ3JldHVybicuCisKIDIwMDgtMDctMDkgIEFsZXggTWF0aGV3cyAgPHBvc3Nlc3Nl
ZHBlbmd1aW5ib2JAZ21haWwuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE9saXZlciBIdW50
LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9tYW51YWwtdGVzdHMvY2FudmFzLW1hc2stcmVkcmF3Lmh0
bWwgYi9XZWJDb3JlL21hbnVhbC10ZXN0cy9jYW52YXMtbWFzay1yZWRyYXcuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMTY2YjNhCi0tLSAvZGV2L251bGwKKysrIGIv
V2ViQ29yZS9tYW51YWwtdGVzdHMvY2FudmFzLW1hc2stcmVkcmF3Lmh0bWwKQEAgLTAsMCArMSw2
NSBAQAorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNp
dGlvbmFsLy9FTiIKKyAgICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgor
Cis8aHRtbCBsYW5nPSJlbiI+Cis8aGVhZD4KKyAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1U
eXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorICA8dGl0bGU+Q2FudmFz
IE1hc2s8L3RpdGxlPgorICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiIG1lZGlhPSJzY3JlZW4iPgor
ICAgICNjYW52YXMxIHsKKyAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICB3aWR0aDogNDAwcHg7
CisgICAgICBib3JkZXI6IDFweCBzb2xpZCBibGFjazsKKyAgICB9CisKKyAgICAubWFza2VkIHsK
Ky8qICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgxMGRlZyk7Ki8KKyAgICAgIC13ZWJr
aXQtbWFzazogLXdlYmtpdC1jYW52YXMoY2FudmFzMSk7CisgICAgfQorICA8L3N0eWxlPgorICA8
c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPgorICAKKyAgICB2
YXIgZ1BhZ2VXaWR0aCA9IDMyMDsKKyAgICB2YXIgZ1BhZ2VIZWlnaHQgPSAyMDA7CisKKyAgICBm
dW5jdGlvbiBkcmF3UGFnZVNoYWRvdyhzaGFkb3dXaWR0aCkKKyAgICB7CisgICAgICAgIHZhciBj
dHggPSBkb2N1bWVudC5nZXRDU1NDYW52YXNDb250ZXh0KCcyZCcsICdjYW52YXMxJywgZ1BhZ2VX
aWR0aCwgZ1BhZ2VIZWlnaHQpOworICAgICAgICBjdHguY2xlYXJSZWN0ICgwLCAwLCBnUGFnZVdp
ZHRoLCBnUGFnZUhlaWdodCk7CisKKyAgICAgICAgdmFyIGdyYWRpZW50ID0gY3R4LmNyZWF0ZUxp
bmVhckdyYWRpZW50KDAsIDAsIHNoYWRvd1dpZHRoLCAwKTsKKyAgICAgICAgZ3JhZGllbnQuYWRk
Q29sb3JTdG9wKDAsICdyZ2JhKDAsMCwwLDEpJyk7CisgICAgICAgIGdyYWRpZW50LmFkZENvbG9y
U3RvcCgxLCAncmdiYSgwLDAsMCwwKScpOworICAgICAgICBjdHguZmlsbFN0eWxlID0gZ3JhZGll
bnQ7CisgICAgICAgIGN0eC5maWxsUmVjdCAoMCwgMCwgc2hhZG93V2lkdGgsIGdQYWdlSGVpZ2h0
KTsgICAgCisgICAgfQorICAgIAorICAgIGZ1bmN0aW9uIHJlZHJhd0NhbnZhcyhldmVudCkKKyAg
ICB7CisgICAgICBkcmF3UGFnZVNoYWRvdyhldmVudC5wYWdlWCk7CisgICAgfQorICAgIAorICAg
IGZ1bmN0aW9uIG9uUGFnZUxvYWQoKQorICAgIHsKKyAgICAgIGRyYXdQYWdlU2hhZG93KDY0MCk7
CisgICAgfQorICAgIAorICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgb25QYWdl
TG9hZCwgZmFsc2UpOworICAgIAorICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorCisgIDxw
PkhvdmVyaW5nIG92ZXIgdGhlIGltYWdlIG9yIHRleHQgc2hvdWxkIGNhdXNlIHRoZSBlbGVtZW50
IHRvIGJlIHJlZHJhd24gd2l0aCBhIG5ldyBtYXNrPC9wPgorICA8YSBocmVmPSJodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk5NTQiPmh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xOTk1NDwvYT4KKyAgPGgyPkltYWdlIHdpdGggbWFzazwvaDI+
CisgIDxpbWcgc3JjPSJodHRwOi8vd3d3Lmdvb2dsZS5jb20vaW50bC9lbl9BTEwvaW1hZ2VzL2xv
Z28uZ2lmIiAgd2lkdGg9IjMyMCIgaGVpZ2h0PSIyMDAiIGFsdD0iQ2xvd24gRmlzaCIgY2xhc3M9
Im1hc2tlZCIKKyAgICBvbm1vdXNlbW92ZT0icmVkcmF3Q2FudmFzKGV2ZW50KSI+CisKKyAgICA8
aDI+RGl2IHdpdGggbWFzazwvaDI+CisgICAgPGRpdiBjbGFzcz0ibWFza2VkIiBzdHlsZT0id2lk
dGg6IDY0MHB4IiBvbm1vdXNlbW92ZT0icmVkcmF3Q2FudmFzKGV2ZW50KSI+CisgICAgIExvcmVt
IGlwc3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1ciBhZGlwaXNpY2luZyBlbGl0LCBzZWQg
ZG8gZWl1c21vZCB0ZW1wb3IgaW5jaWRpZHVudCB1dCBsYWJvcmUgZXQgZG9sb3JlIG1hZ25hIGFs
aXF1YS4gVXQgZW5pbSBhZCBtaW5pbSB2ZW5pYW0sIHF1aXMgbm9zdHJ1ZCBleGVyY2l0YXRpb24g
dWxsYW1jbyBsYWJvcmlzIG5pc2kgdXQgYWxpcXVpcCBleCBlYSBjb21tb2RvIGNvbnNlcXVhdC4g
RHVpcyBhdXRlIGlydXJlIGRvbG9yIGluIHJlcHJlaGVuZGVyaXQgaW4gdm9sdXB0YXRlIHZlbGl0
IGVzc2UgY2lsbHVtIGRvbG9yZSBldSBmdWdpYXQgbnVsbGEgcGFyaWF0dXIuIEV4Y2VwdGV1ciBz
aW50IG9jY2FlY2F0IGN1cGlkYXRhdCBub24gcHJvaWRlbnQsIHN1bnQgaW4gY3VscGEgcXVpIG9m
ZmljaWEgZGVzZXJ1bnQgbW9sbGl0IGFuaW0gaWQgZXN0IGxhYm9ydW0uCisgICAgPC9kaXY+Cisg
IAorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Qm94LmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKaW5kZXggODU0MDcyNy4u
MGM5NzNlNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAorKysg
Yi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCkBAIC01MzgsNTIgKzUzOCw2NiBAQCBJ
bnRTaXplIFJlbmRlckJveDo6Y2FsY3VsYXRlQmFja2dyb3VuZFNpemUoY29uc3QgRmlsbExheWVy
KiBiZ0xheWVyLCBpbnQgc2NhbGVkVwogCiB2b2lkIFJlbmRlckJveDo6aW1hZ2VDaGFuZ2VkKFdy
YXBwZWRJbWFnZVB0ciBpbWFnZSkKIHsKLSAgICBpZiAoaXNJbmxpbmVGbG93KCkgfHwgc3R5bGUo
KS0+Ym9yZGVySW1hZ2UoKS5pbWFnZSgpICYmIHN0eWxlKCktPmJvcmRlckltYWdlKCkuaW1hZ2Uo
KS0+ZGF0YSgpID09IGltYWdlIHx8CisgICAgaWYgKGlzSW5saW5lRmxvdygpIHx8CisgICAgICAg
IHN0eWxlKCktPmJvcmRlckltYWdlKCkuaW1hZ2UoKSAmJiBzdHlsZSgpLT5ib3JkZXJJbWFnZSgp
LmltYWdlKCktPmRhdGEoKSA9PSBpbWFnZSB8fAogICAgICAgICBzdHlsZSgpLT5tYXNrQm94SW1h
Z2UoKS5pbWFnZSgpICYmIHN0eWxlKCktPm1hc2tCb3hJbWFnZSgpLmltYWdlKCktPmRhdGEoKSA9
PSBpbWFnZSkgewogICAgICAgICByZXBhaW50KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBib29sIGRpZEZ1bGxSZXBhaW50ID0gZmFsc2U7Ci0gICAgSW50UmVjdCBhYnNvbHV0ZVJl
Y3Q7Ci0gICAgUmVuZGVyQm94KiBiYWNrZ3JvdW5kUmVuZGVyZXI7Ci0KLSAgICBpZiAoaXNSb290
KCkgfHwgKGlzQm9keSgpICYmIGRvY3VtZW50KCktPmlzSFRNTERvY3VtZW50KCkgJiYgIWRvY3Vt
ZW50KCktPmRvY3VtZW50RWxlbWVudCgpLT5yZW5kZXJlcigpLT5zdHlsZSgpLT5oYXNCYWNrZ3Jv
dW5kKCkpKSB7Ci0gICAgICAgIC8vIE91ciBiYWNrZ3JvdW5kIHByb3BhZ2F0ZXMgdG8gdGhlIHJv
b3QuCi0gICAgICAgIGJhY2tncm91bmRSZW5kZXJlciA9IHZpZXcoKTsKKyAgICBib29sIGRpZEZ1
bGxSZXBhaW50ID0gcmVwYWludExheWVyUmVjdHNGb3JJbWFnZShpbWFnZSwgc3R5bGUoKS0+YmFj
a2dyb3VuZExheWVycygpLCB0cnVlKTsKKyAgICBpZiAoIWRpZEZ1bGxSZXBhaW50KSB7CisgICAg
ICAgIHJlcGFpbnRMYXllclJlY3RzRm9ySW1hZ2UoaW1hZ2UsIHN0eWxlKCktPm1hc2tMYXllcnMo
KSwgZmFsc2UpOworICAgIH0KK30KIAotICAgICAgICBpbnQgcnc7Ci0gICAgICAgIGludCByaDsK
K2Jvb2wgUmVuZGVyQm94OjpyZXBhaW50TGF5ZXJSZWN0c0ZvckltYWdlKFdyYXBwZWRJbWFnZVB0
ciBpbWFnZSwgY29uc3QgRmlsbExheWVyKiBsYXllcnMsIGJvb2wgZHJhd2luZ0JhY2tncm91bmQp
Cit7CisgICAgSW50UmVjdCBhYnNvbHV0ZVJlY3Q7CisgICAgUmVuZGVyQm94KiBsYXllclJlbmRl
cmVyID0gMDsKIAotICAgICAgICBpZiAoRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBzdGF0aWNfY2Fz
dDxSZW5kZXJWaWV3Kj4oYmFja2dyb3VuZFJlbmRlcmVyKS0+ZnJhbWVWaWV3KCkpIHsKLSAgICAg
ICAgICAgIHJ3ID0gZnJhbWVWaWV3LT5jb250ZW50c1dpZHRoKCk7Ci0gICAgICAgICAgICByaCA9
IGZyYW1lVmlldy0+Y29udGVudHNIZWlnaHQoKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgIHJ3ID0gYmFja2dyb3VuZFJlbmRlcmVyLT53aWR0aCgpOwotICAgICAgICAgICAgcmggPSBi
YWNrZ3JvdW5kUmVuZGVyZXItPmhlaWdodCgpOwotICAgICAgICB9Ci0gICAgICAgIGFic29sdXRl
UmVjdCA9IEludFJlY3QoLWJhY2tncm91bmRSZW5kZXJlci0+bWFyZ2luTGVmdCgpLAotICAgICAg
ICAgICAgLWJhY2tncm91bmRSZW5kZXJlci0+bWFyZ2luVG9wKCksCi0gICAgICAgICAgICBtYXgo
YmFja2dyb3VuZFJlbmRlcmVyLT53aWR0aCgpICsgYmFja2dyb3VuZFJlbmRlcmVyLT5tYXJnaW5M
ZWZ0KCkgKyBiYWNrZ3JvdW5kUmVuZGVyZXItPm1hcmdpblJpZ2h0KCkgKyBiYWNrZ3JvdW5kUmVu
ZGVyZXItPmJvcmRlckxlZnQoKSArIGJhY2tncm91bmRSZW5kZXJlci0+Ym9yZGVyUmlnaHQoKSwg
cncpLAotICAgICAgICAgICAgbWF4KGJhY2tncm91bmRSZW5kZXJlci0+aGVpZ2h0KCkgKyBiYWNr
Z3JvdW5kUmVuZGVyZXItPm1hcmdpblRvcCgpICsgYmFja2dyb3VuZFJlbmRlcmVyLT5tYXJnaW5C
b3R0b20oKSArIGJhY2tncm91bmRSZW5kZXJlci0+Ym9yZGVyVG9wKCkgKyBiYWNrZ3JvdW5kUmVu
ZGVyZXItPmJvcmRlckJvdHRvbSgpLCByaCkpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGJhY2tn
cm91bmRSZW5kZXJlciA9IHRoaXM7Ci0gICAgICAgIGFic29sdXRlUmVjdCA9IGJvcmRlckJveCgp
OwotICAgIH0KKyAgICBmb3IgKGNvbnN0IEZpbGxMYXllciogY3VyTGF5ZXIgPSBsYXllcnM7IGN1
ckxheWVyOyBjdXJMYXllciA9IGN1ckxheWVyLT5uZXh0KCkpIHsKKyAgICAgICAgaWYgKGN1ckxh
eWVyLT5pbWFnZSgpICYmIGltYWdlID09IGN1ckxheWVyLT5pbWFnZSgpLT5kYXRhKCkpIHsKKyAg
ICAgICAgCisgICAgICAgICAgICAvLyBOb3cgdGhhdCB3ZSBrbm93IHRoaXMgaW1hZ2UgaXMgYmVp
bmcgdXNlZCwgY29tcHV0ZSB0aGUgcmVuZGVyZXIgYW5kIHRoZSByZWN0CisgICAgICAgICAgICAv
LyBpZiB3ZSBoYXZlbid0IGFscmVhZHkKKyAgICAgICAgICAgIGlmICghbGF5ZXJSZW5kZXJlcikg
eworICAgICAgICAgICAgICAgIGJvb2wgZHJhd2luZ1Jvb3RCYWNrZ3JvdW5kID0gZHJhd2luZ0Jh
Y2tncm91bmQgJiYgKGlzUm9vdCgpIHx8IChpc0JvZHkoKSAmJiBkb2N1bWVudCgpLT5pc0hUTUxE
b2N1bWVudCgpICYmICFkb2N1bWVudCgpLT5kb2N1bWVudEVsZW1lbnQoKS0+cmVuZGVyZXIoKS0+
c3R5bGUoKS0+aGFzQmFja2dyb3VuZCgpKSk7CisgICAgICAgICAgICAgICAgaWYgKGRyYXdpbmdS
b290QmFja2dyb3VuZCkgeworICAgICAgICAgICAgICAgICAgICBsYXllclJlbmRlcmVyID0gdmll
dygpOworCisgICAgICAgICAgICAgICAgICAgIGludCBydzsKKyAgICAgICAgICAgICAgICAgICAg
aW50IHJoOworCisgICAgICAgICAgICAgICAgICAgIGlmIChGcmFtZVZpZXcqIGZyYW1lVmlldyA9
IHN0YXRpY19jYXN0PFJlbmRlclZpZXcqPihsYXllclJlbmRlcmVyKS0+ZnJhbWVWaWV3KCkpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHJ3ID0gZnJhbWVWaWV3LT5jb250ZW50c1dpZHRoKCk7
CisgICAgICAgICAgICAgICAgICAgICAgICByaCA9IGZyYW1lVmlldy0+Y29udGVudHNIZWlnaHQo
KTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHJ3ID0gbGF5ZXJSZW5kZXJlci0+d2lkdGgoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJo
ID0gbGF5ZXJSZW5kZXJlci0+aGVpZ2h0KCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICAgICAgYWJzb2x1dGVSZWN0ID0gSW50UmVjdCgtbGF5ZXJSZW5kZXJlci0+bWFy
Z2luTGVmdCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgLWxheWVyUmVuZGVyZXItPm1hcmdp
blRvcCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgbWF4KGxheWVyUmVuZGVyZXItPndpZHRo
KCkgKyBsYXllclJlbmRlcmVyLT5tYXJnaW5MZWZ0KCkgKyBsYXllclJlbmRlcmVyLT5tYXJnaW5S
aWdodCgpICsgbGF5ZXJSZW5kZXJlci0+Ym9yZGVyTGVmdCgpICsgbGF5ZXJSZW5kZXJlci0+Ym9y
ZGVyUmlnaHQoKSwgcncpLAorICAgICAgICAgICAgICAgICAgICAgICAgbWF4KGxheWVyUmVuZGVy
ZXItPmhlaWdodCgpICsgbGF5ZXJSZW5kZXJlci0+bWFyZ2luVG9wKCkgKyBsYXllclJlbmRlcmVy
LT5tYXJnaW5Cb3R0b20oKSArIGxheWVyUmVuZGVyZXItPmJvcmRlclRvcCgpICsgbGF5ZXJSZW5k
ZXJlci0+Ym9yZGVyQm90dG9tKCksIHJoKSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICAgICAgbGF5ZXJSZW5kZXJlciA9IHRoaXM7CisgICAgICAgICAgICAgICAg
ICAgIGFic29sdXRlUmVjdCA9IGJvcmRlckJveCgpOworICAgICAgICAgICAgICAgIH0KIAotICAg
IGJhY2tncm91bmRSZW5kZXJlci0+Y29tcHV0ZUFic29sdXRlUmVwYWludFJlY3QoYWJzb2x1dGVS
ZWN0KTsKKyAgICAgICAgICAgICAgICBsYXllclJlbmRlcmVyLT5jb21wdXRlQWJzb2x1dGVSZXBh
aW50UmVjdChhYnNvbHV0ZVJlY3QpOworICAgICAgICAgICAgfQogCi0gICAgZm9yIChjb25zdCBG
aWxsTGF5ZXIqIGJnTGF5ZXIgPSBzdHlsZSgpLT5iYWNrZ3JvdW5kTGF5ZXJzKCk7IGJnTGF5ZXIg
JiYgIWRpZEZ1bGxSZXBhaW50OyBiZ0xheWVyID0gYmdMYXllci0+bmV4dCgpKSB7Ci0gICAgICAg
IGlmIChiZ0xheWVyLT5pbWFnZSgpICYmIGltYWdlID09IGJnTGF5ZXItPmltYWdlKCktPmRhdGEo
KSkgewogICAgICAgICAgICAgSW50UmVjdCByZXBhaW50UmVjdDsKICAgICAgICAgICAgIEludFBv
aW50IHBoYXNlOwogICAgICAgICAgICAgSW50U2l6ZSB0aWxlU2l6ZTsKLSAgICAgICAgICAgIGJh
Y2tncm91bmRSZW5kZXJlci0+Y2FsY3VsYXRlQmFja2dyb3VuZEltYWdlR2VvbWV0cnkoYmdMYXll
ciwgYWJzb2x1dGVSZWN0LngoKSwgYWJzb2x1dGVSZWN0LnkoKSwgYWJzb2x1dGVSZWN0LndpZHRo
KCksIGFic29sdXRlUmVjdC5oZWlnaHQoKSwgcmVwYWludFJlY3QsIHBoYXNlLCB0aWxlU2l6ZSk7
CisgICAgICAgICAgICBsYXllclJlbmRlcmVyLT5jYWxjdWxhdGVCYWNrZ3JvdW5kSW1hZ2VHZW9t
ZXRyeShjdXJMYXllciwgYWJzb2x1dGVSZWN0LngoKSwgYWJzb2x1dGVSZWN0LnkoKSwgYWJzb2x1
dGVSZWN0LndpZHRoKCksIGFic29sdXRlUmVjdC5oZWlnaHQoKSwgcmVwYWludFJlY3QsIHBoYXNl
LCB0aWxlU2l6ZSk7CiAgICAgICAgICAgICB2aWV3KCktPnJlcGFpbnRWaWV3UmVjdGFuZ2xlKHJl
cGFpbnRSZWN0KTsKICAgICAgICAgICAgIGlmIChyZXBhaW50UmVjdCA9PSBhYnNvbHV0ZVJlY3Qp
Ci0gICAgICAgICAgICAgICAgZGlkRnVsbFJlcGFpbnQgPSB0cnVlOworICAgICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgfQorICAgIHJldHVybiBmYWxzZTsKIH0KIAog
dm9pZCBSZW5kZXJCb3g6OmNhbGN1bGF0ZUJhY2tncm91bmRJbWFnZUdlb21ldHJ5KGNvbnN0IEZp
bGxMYXllciogYmdMYXllciwgaW50IHR4LCBpbnQgdHksIGludCB3LCBpbnQgaCwgSW50UmVjdCYg
ZGVzdFJlY3QsIEludFBvaW50JiBwaGFzZSwgSW50U2l6ZSYgdGlsZVNpemUpCmRpZmYgLS1naXQg
YS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJveC5oCmluZGV4IDhiMDQ5ODcuLmNkN2U4MjMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveC5oCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCkBAIC0x
ODMsNiArMTgzLDggQEAgcHJvdGVjdGVkOgogCiBwcml2YXRlOgogICAgIHZvaWQgcGFpbnRSb290
Qm94RGVjb3JhdGlvbnMoUGFpbnRJbmZvJiwgaW50IHR4LCBpbnQgdHkpOworICAgIC8vIFJldHVy
bnMgdHJ1ZSBpZiB3ZSBkaWQgYSBmdWxsIHJlcGFpbnQKKyAgICBib29sIHJlcGFpbnRMYXllclJl
Y3RzRm9ySW1hZ2UoV3JhcHBlZEltYWdlUHRyIGltYWdlLCBjb25zdCBGaWxsTGF5ZXIqIGxheWVy
cywgYm9vbCBkcmF3aW5nQmFja2dyb3VuZCk7CiAKICAgICB2b2lkIGNhbGN1bGF0ZUJhY2tncm91
bmRJbWFnZUdlb21ldHJ5KGNvbnN0IEZpbGxMYXllciosIGludCB0eCwgaW50IHR5LCBpbnQgdywg
aW50IGgsIEludFJlY3QmIGRlc3RSZWN0LCBJbnRQb2ludCYgcGhhc2UsIEludFNpemUmIHRpbGVT
aXplKTsKICAgICAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNw
cCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAppbmRleCBhYmIzMWZjLi43ZTJj
N2ZjIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKKysrIGIv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCkBAIC0yNDksNyArMjQ5LDcgQEAgdm9p
ZCBSZW5kZXJJbWFnZTo6aW1hZ2VDaGFuZ2VkKFdyYXBwZWRJbWFnZVB0ciBuZXdJbWFnZSkKICAg
ICBpZiAoZG9jdW1lbnRCZWluZ0Rlc3Ryb3llZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBp
ZiAoaGFzQm94RGVjb3JhdGlvbnMoKSkKKyAgICBpZiAoaGFzQm94RGVjb3JhdGlvbnMoKSB8fCBo
YXNNYXNrKCkpCiAgICAgICAgIFJlbmRlclJlcGxhY2VkOjppbWFnZUNoYW5nZWQobmV3SW1hZ2Up
OwogICAgIAogICAgIGlmIChuZXdJbWFnZSAhPSBpbWFnZVB0cigpIHx8ICFuZXdJbWFnZSkKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCmluZGV4IGVkYmM3NDAuLjQ2YmM4M2YgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKKysrIGIvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtMzEwMCw3ICszMTAwLDcgQEAgQW5pbWF0aW9uQ29u
dHJvbGxlciogUmVuZGVyT2JqZWN0OjphbmltYXRpb24oKSBjb25zdAogCiB2b2lkIFJlbmRlck9i
amVjdDo6aW1hZ2VDaGFuZ2VkKENhY2hlZEltYWdlKiBpbWFnZSkKIHsKLSAgICByZXR1cm4gaW1h
Z2VDaGFuZ2VkKHN0YXRpY19jYXN0PFdyYXBwZWRJbWFnZVB0cj4oaW1hZ2UpKTsKKyAgICBpbWFn
ZUNoYW5nZWQoc3RhdGljX2Nhc3Q8V3JhcHBlZEltYWdlUHRyPihpbWFnZSkpOwogfQogCiBJbnRS
ZWN0IFJlbmRlck9iamVjdDo6cmVmbGVjdGlvbkJveCgpIGNvbnN0Cg==
</data>
<flag name="review"
          id="9771"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>