<?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>22580</bug_id>
          
          <creation_ts>2008-12-01 17:03:33 -0800</creation_ts>
          <short_desc>canvas.setShadow should use platform-independent GraphicsContext API</short_desc>
          <delta_ts>2008-12-08 15:43:37 -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>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Windows XP</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="Tony Chang">tony</reporter>
          <assigned_to name="Tony Chang">tony</assigned_to>
          <cc>hyatt</cc>
    
    <cc>mitz</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>100917</commentid>
    <comment_count>0</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2008-12-01 17:03:33 -0800</bug_when>
    <thetext>Currently there&apos;s only a CG path.  Switching to the platform independent GraphicsContext API should allow canvas shadows to work with cairo or skia.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>100918</commentid>
    <comment_count>1</comment_count>
      <attachid>25645</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2008-12-01 17:04:47 -0800</bug_when>
    <thetext>Created attachment 25645
take 1

Is there a way for me to convert CMYK to RGB to convert the last method as well?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>100920</commentid>
    <comment_count>2</comment_count>
      <attachid>25646</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2008-12-01 17:06:59 -0800</bug_when>
    <thetext>Created attachment 25646
take 2

Oops, remove an unnecessary call to applyShadow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>100947</commentid>
    <comment_count>3</comment_count>
      <attachid>25646</attachid>
    <who name="">mitz</who>
    <bug_when>2008-12-01 19:57:55 -0800</bug_when>
    <thetext>Comment on attachment 25646
take 2

CGContextSetShadowWithColor takes an offset and radius in device space, but GraphicsContext::setShadow()&apos;s parameters are in user space. I think this patch will lead to the wrong behavior in transformed contexts.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>101091</commentid>
    <comment_count>4</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2008-12-02 15:11:33 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 25646 [review])
&gt; CGContextSetShadowWithColor takes an offset and radius in device space, but
&gt; GraphicsContext::setShadow()&apos;s parameters are in user space. I think this patch
&gt; will lead to the wrong behavior in transformed contexts.

You&apos;re right, this patch causes transformations to be applied to the shadow as well.

It&apos;s unclear to me what the expected behavior is.  On Safari 3.2, I see the transformation not being applied to the shadow.  In Safari nightlies, I see the transformation being applied.  I&apos;ll upload a test case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>101092</commentid>
    <comment_count>5</comment_count>
      <attachid>25686</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2008-12-02 15:13:29 -0800</bug_when>
    <thetext>Created attachment 25686
test for transform and shadow

On some versions of safari, the red box is to the right, in others, it is below and to the right.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>101105</commentid>
    <comment_count>6</comment_count>
    <who name="">mitz</who>
    <bug_when>2008-12-02 16:14:14 -0800</bug_when>
    <thetext>TOT WebKit was changed to make CSS text-shadow and box-shadow respect transforms. However, my reading of the canvas specification is that when drawing in a canvas, the canvas&apos;s CTM should not affect shadow drawing:
&quot;The shadowOffsetX and shadowOffsetY attributes specify the distance that the shadow will be offset in the positive horizontal and positive vertical distance respectively. Their values are in coordinate space units. They are not affected by the current transformation matrix&quot; &lt;http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html#shadows&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>101136</commentid>
    <comment_count>7</comment_count>
      <attachid>25698</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2008-12-02 18:22:33 -0800</bug_when>
    <thetext>Created attachment 25698
[1/1] Convert CanvasRenderingContext2D::setShadow to use

platform-independent GraphicsContext API.
---
 LayoutTests/fast/css/shadow-scale.html             |    8 ++
 .../mac/fast/css/shadow-scale-expected.checksum    |    1 +
 .../mac/fast/css/shadow-scale-expected.png         |  Bin 0 -&gt; 14750 bytes
 .../mac/fast/css/shadow-scale-expected.txt         |    7 ++
 WebCore/html/CanvasRenderingContext2D.cpp          |   76 +++++---------------
 WebCore/platform/graphics/GraphicsContext.cpp      |    4 +-
 WebCore/platform/graphics/GraphicsContext.h        |    4 +-
 .../graphics/cairo/GraphicsContextCairo.cpp        |    2 +-
 WebCore/platform/graphics/cg/GraphicsContextCG.cpp |   31 +++++---
 WebCore/platform/graphics/qt/GraphicsContextQt.cpp |    2 +-
 10 files changed, 60 insertions(+), 75 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>101137</commentid>
    <comment_count>8</comment_count>
      <attachid>25698</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2008-12-02 18:24:00 -0800</bug_when>
    <thetext>Comment on attachment 25698
[1/1] Convert CanvasRenderingContext2D::setShadow to use

Ok, no longer apply transforms to canvas shadows.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>101147</commentid>
    <comment_count>9</comment_count>
      <attachid>25698</attachid>
    <who name="">mitz</who>
    <bug_when>2008-12-02 21:23:24 -0800</bug_when>
    <thetext>Comment on attachment 25698
[1/1] Convert CanvasRenderingContext2D::setShadow to use

The patch is missing a change log entry. I think the test is redundant, because fast/transforms/shadows.html covers that case as well as several other. Given the expected usage pattern, do you think it will make more sense to make the shadow behavior part of the graphics state, so that canvas can just set it once when it creates the context?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>101230</commentid>
    <comment_count>10</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2008-12-03 11:51:53 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 25698 [review])
&gt; The patch is missing a change log entry. I think the test is redundant, because
&gt; fast/transforms/shadows.html covers that case as well as several other. Given
&gt; the expected usage pattern, do you think it will make more sense to make the
&gt; shadow behavior part of the graphics state, so that canvas can just set it once
&gt; when it creates the context?

It&apos;s possible, but a bit tricky.  The GraphicsContext is owned by an ImageBuffer which is owned by the HTML canvas element.  I guess this would involve adding a default bool param to ImageBuffer::create for the transform case.  If you think this is the right approach, let me know and I&apos;ll make the change.  Otherwise, I&apos;ll make a new patch without the layout test and with a ChangeLog entry.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>101243</commentid>
    <comment_count>11</comment_count>
    <who name="">mitz</who>
    <bug_when>2008-12-03 12:38:31 -0800</bug_when>
    <thetext>Hyatt, what do you think?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>101427</commentid>
    <comment_count>12</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2008-12-04 17:34:59 -0800</bug_when>
    <thetext>I agree with Mitz.

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>101537</commentid>
    <comment_count>13</comment_count>
      <attachid>25782</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2008-12-05 12:19:29 -0800</bug_when>
    <thetext>Created attachment 25782
[1/1] Add a bool to GraphicsContext so that shadows can ignore

transformations.  This is needed by HTML canvas element
where the spec says shadows are applied w/o transformations.
---
 WebCore/ChangeLog                                  |   23 ++++++
 WebCore/html/CanvasRenderingContext2D.cpp          |   76 +++++---------------
 WebCore/html/HTMLCanvasElement.cpp                 |    2 +
 WebCore/platform/graphics/GraphicsContext.cpp      |    5 ++
 WebCore/platform/graphics/GraphicsContext.h        |    1 +
 WebCore/platform/graphics/GraphicsContextPrivate.h |    3 +
 WebCore/platform/graphics/cg/GraphicsContextCG.cpp |   29 +++++---
 7 files changed, 71 insertions(+), 68 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>101855</commentid>
    <comment_count>14</comment_count>
      <attachid>25782</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-12-08 12:52:49 -0800</bug_when>
    <thetext>Comment on attachment 25782
[1/1] Add a bool to GraphicsContext so that shadows can ignore

Looks good.  I really need to add a float-enabled Color class to platform, since with this patch, we only support 256 grays for shadows.  Which is fine... but still lame.

r+</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>101873</commentid>
    <comment_count>15</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-12-08 15:43:37 -0800</bug_when>
    <thetext>Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	WebCore/ChangeLog
	M	WebCore/html/CanvasRenderingContext2D.cpp
	M	WebCore/html/HTMLCanvasElement.cpp
	M	WebCore/platform/graphics/GraphicsContext.cpp
	M	WebCore/platform/graphics/GraphicsContext.h
	M	WebCore/platform/graphics/GraphicsContextPrivate.h
	M	WebCore/platform/graphics/cg/GraphicsContextCG.cpp
Committed r39105
</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>25645</attachid>
            <date>2008-12-01 17:04:47 -0800</date>
            <delta_ts>2008-12-01 17:06:59 -0800</delta_ts>
            <desc>take 1</desc>
            <filename>canvas-shadow.diff</filename>
            <type>text/plain</type>
            <size>6520</size>
            <attacher name="Tony Chang">tony</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDM4ODg0
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMDgtMTIt
MDEgIHRvbnkgY2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb252ZXJ0IENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRDo6c2V0U2hhZG93IHRvIHVzZQorICAgICAgICBwbGF0Zm9ybS1pbmRlcGVuZGVudCBHcmFw
aGljc0NvbnRleHQgQVBJLgorCisgICAgICAgICogaHRtbC9DYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRT
aGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjphcHBs
eVNoYWRvdyk6CisKIDIwMDgtMTItMDEgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNv
bT4KIAogICAgICAgICBCdWcgMjI0NjY6IFJFR1JFU1NJT04gKDM1ODY3KTogTWFueSByZXNvdXJj
ZXMgbWlzc2luZyB3aGVuIHNhdmluZyB3ZWJhcmNoaXZlIG9mIHdlYmtpdC5vcmcKSW5kZXg6IGh0
bWwvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBodG1sL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRC5jcHAJKHJldmlzaW9uIDM4ODgwKQorKysgaHRtbC9DYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MDAsMTUgKzcwMCwxMSBA
QCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U2hhZG93CiAgICAgR3JhcGhpY3ND
b250ZXh0KiBjID0gZHJhd2luZ0NvbnRleHQoKTsKICAgICBpZiAoIWMpCiAgICAgICAgIHJldHVy
bjsKLSAgICAvLyBGSVhNRTogRG8gdGhpcyB0aHJvdWdoIHBsYXRmb3JtLWluZGVwZW5kZW50IEdy
YXBoaWNzQ29udGV4dCBBUEkuCi0jaWYgUExBVEZPUk0oQ0cpCi0gICAgY29uc3QgQ0dGbG9hdCBj
b21wb25lbnRzWzJdID0geyBncmF5TGV2ZWwsIDEgfTsKLSAgICBDR0NvbG9yU3BhY2VSZWYgY29s
b3JTcGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0ZURldmljZUdyYXkoKTsKLSAgICBDR0NvbG9yUmVm
IGNvbG9yID0gQ0dDb2xvckNyZWF0ZShjb2xvclNwYWNlLCBjb21wb25lbnRzKTsKLSAgICBDR0Nv
bG9yU3BhY2VSZWxlYXNlKGNvbG9yU3BhY2UpOwotICAgIENHQ29udGV4dFNldFNoYWRvd1dpdGhD
b2xvcihjLT5wbGF0Zm9ybUNvbnRleHQoKSwgYWRqdXN0ZWRTaGFkb3dTaXplKHdpZHRoLCAtaGVp
Z2h0KSwgYmx1ciwgY29sb3IpOwotICAgIENHQ29sb3JSZWxlYXNlKGNvbG9yKTsKLSNlbmRpZgor
CisgICAgUkdCQTMyIHJnYmEgPSBtYWtlUkdCQTMyRnJvbUZsb2F0cyhncmF5TGV2ZWwsIGdyYXlM
ZXZlbCwgZ3JheUxldmVsLCAxLjApOworICAgIGMtPnNldFNoYWRvdyhJbnRTaXplKHN0YXRlKCku
bV9zaGFkb3dPZmZzZXQud2lkdGgoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSgp
Lm1fc2hhZG93T2Zmc2V0LmhlaWdodCgpKSwKKyAgICAgICAgICAgICAgICAgc3RhdGUoKS5tX3No
YWRvd0JsdXIsIENvbG9yKHJnYmEpKTsKIH0KIAogdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQ6OnNldFNoYWRvdyhmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBmbG9hdCBibHVyLCBjb25z
dCBTdHJpbmcmIGNvbG9yLCBmbG9hdCBhbHBoYSkKQEAgLTcxNiwyNiArNzEyLDE5IEBAIHZvaWQg
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRTaGFkb3cKICAgICBzdGF0ZSgpLm1fc2hhZG93
T2Zmc2V0ID0gRmxvYXRTaXplKHdpZHRoLCBoZWlnaHQpOwogICAgIHN0YXRlKCkubV9zaGFkb3dC
bHVyID0gYmx1cjsKICAgICBzdGF0ZSgpLm1fc2hhZG93Q29sb3IgPSBjb2xvcjsKKyAgICBhcHBs
eVNoYWRvdygpOwogCiAgICAgR3JhcGhpY3NDb250ZXh0KiBjID0gZHJhd2luZ0NvbnRleHQoKTsK
ICAgICBpZiAoIWMpCiAgICAgICAgIHJldHVybjsKLSAgICAvLyBGSVhNRTogRG8gdGhpcyB0aHJv
dWdoIHBsYXRmb3JtLWluZGVwZW5kZW50IEdyYXBoaWNzQ29udGV4dCBBUEkuCi0jaWYgUExBVEZP
Uk0oQ0cpCisKICAgICBSR0JBMzIgcmdiYSA9IDA7IC8vIGRlZmF1bHQgaXMgdHJhbnNwYXJlbnQg
YmxhY2sKLSAgICBDU1NQYXJzZXI6OnBhcnNlQ29sb3IocmdiYSwgY29sb3IpOwotICAgIGNvbnN0
IENHRmxvYXQgY29tcG9uZW50c1s0XSA9IHsKLSAgICAgICAgKChyZ2JhID4+IDE2KSAmIDB4RkYp
IC8gMjU1LjBmLAotICAgICAgICAoKHJnYmEgPj4gOCkgJiAweEZGKSAvIDI1NS4wZiwKLSAgICAg
ICAgKHJnYmEgJiAweEZGKSAvIDI1NS4wZiwKLSAgICAgICAgYWxwaGEKLSAgICB9OwotICAgIENH
Q29sb3JTcGFjZVJlZiBjb2xvclNwYWNlID0gQ0dDb2xvclNwYWNlQ3JlYXRlRGV2aWNlUkdCKCk7
Ci0gICAgQ0dDb2xvclJlZiBzaGFkb3dDb2xvciA9IENHQ29sb3JDcmVhdGUoY29sb3JTcGFjZSwg
Y29tcG9uZW50cyk7Ci0gICAgQ0dDb2xvclNwYWNlUmVsZWFzZShjb2xvclNwYWNlKTsKLSAgICBD
R0NvbnRleHRTZXRTaGFkb3dXaXRoQ29sb3IoYy0+cGxhdGZvcm1Db250ZXh0KCksIGFkanVzdGVk
U2hhZG93U2l6ZSh3aWR0aCwgLWhlaWdodCksIGJsdXIsIHNoYWRvd0NvbG9yKTsKLSAgICBDR0Nv
bG9yUmVsZWFzZShzaGFkb3dDb2xvcik7Ci0jZW5kaWYKKyAgICBpZiAoIXN0YXRlKCkubV9zaGFk
b3dDb2xvci5pc0VtcHR5KCkpCisgICAgICAgIENTU1BhcnNlcjo6cGFyc2VDb2xvcihyZ2JhLCBz
dGF0ZSgpLm1fc2hhZG93Q29sb3IpOworICAgIGMtPnNldFNoYWRvdyhJbnRTaXplKHN0YXRlKCku
bV9zaGFkb3dPZmZzZXQud2lkdGgoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSgp
Lm1fc2hhZG93T2Zmc2V0LmhlaWdodCgpKSwKKyAgICAgICAgICAgICAgICAgc3RhdGUoKS5tX3No
YWRvd0JsdXIsCisgICAgICAgICAgICAgICAgIENvbG9yKGNvbG9yV2l0aE92ZXJyaWRlQWxwaGEo
cmdiYSwgYWxwaGEpKSk7CiB9CiAKIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRT
aGFkb3coZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgYmx1ciwgZmxvYXQgZ3JheUxl
dmVsLCBmbG9hdCBhbHBoYSkKQEAgLTc0NywxNSArNzM2LDExIEBAIHZvaWQgQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEOjpzZXRTaGFkb3cKICAgICBHcmFwaGljc0NvbnRleHQqIGMgPSBkcmF3aW5n
Q29udGV4dCgpOwogICAgIGlmICghYykKICAgICAgICAgcmV0dXJuOwotICAgIC8vIEZJWE1FOiBE
byB0aGlzIHRocm91Z2ggcGxhdGZvcm0taW5kZXBlbmRlbnQgR3JhcGhpY3NDb250ZXh0IEFQSS4K
LSNpZiBQTEFURk9STShDRykKLSAgICBjb25zdCBDR0Zsb2F0IGNvbXBvbmVudHNbMl0gPSB7IGdy
YXlMZXZlbCwgYWxwaGEgfTsKLSAgICBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZSA9IENHQ29s
b3JTcGFjZUNyZWF0ZURldmljZUdyYXkoKTsKLSAgICBDR0NvbG9yUmVmIGNvbG9yID0gQ0dDb2xv
ckNyZWF0ZShjb2xvclNwYWNlLCBjb21wb25lbnRzKTsKLSAgICBDR0NvbG9yU3BhY2VSZWxlYXNl
KGNvbG9yU3BhY2UpOwotICAgIENHQ29udGV4dFNldFNoYWRvd1dpdGhDb2xvcihjLT5wbGF0Zm9y
bUNvbnRleHQoKSwgYWRqdXN0ZWRTaGFkb3dTaXplKHdpZHRoLCAtaGVpZ2h0KSwgYmx1ciwgY29s
b3IpOwotICAgIENHQ29sb3JSZWxlYXNlKGNvbG9yKTsKLSNlbmRpZgorCisgICAgUkdCQTMyIHJn
YmEgPSBtYWtlUkdCQTMyRnJvbUZsb2F0cyhncmF5TGV2ZWwsIGdyYXlMZXZlbCwgZ3JheUxldmVs
LCBhbHBoYSk7CisgICAgYy0+c2V0U2hhZG93KEludFNpemUoc3RhdGUoKS5tX3NoYWRvd09mZnNl
dC53aWR0aCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlKCkubV9zaGFkb3dPZmZz
ZXQuaGVpZ2h0KCkpLAorICAgICAgICAgICAgICAgICBzdGF0ZSgpLm1fc2hhZG93Qmx1ciwgQ29s
b3IocmdiYSkpOwogfQogCiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U2hhZG93
KGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0IGJsdXIsIGZsb2F0IHIsIGZsb2F0IGcs
IGZsb2F0IGIsIGZsb2F0IGEpCkBAIC03NjcsMTUgKzc1MiwxMyBAQCB2b2lkIENhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRDo6c2V0U2hhZG93CiAgICAgR3JhcGhpY3NDb250ZXh0KiBjID0gZHJhd2lu
Z0NvbnRleHQoKTsKICAgICBpZiAoIWMpCiAgICAgICAgIHJldHVybjsKLSAgICAvLyBGSVhNRTog
RG8gdGhpcyB0aHJvdWdoIHBsYXRmb3JtLWluZGVwZW5kZW50IEdyYXBoaWNzQ29udGV4dCBBUEku
Ci0jaWYgUExBVEZPUk0oQ0cpCi0gICAgY29uc3QgQ0dGbG9hdCBjb21wb25lbnRzWzRdID0geyBy
LCBnLCBiLCBhIH07Ci0gICAgQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2UgPSBDR0NvbG9yU3Bh
Y2VDcmVhdGVEZXZpY2VSR0IoKTsKLSAgICBDR0NvbG9yUmVmIHNoYWRvd0NvbG9yID0gQ0dDb2xv
ckNyZWF0ZShjb2xvclNwYWNlLCBjb21wb25lbnRzKTsKLSAgICBDR0NvbG9yU3BhY2VSZWxlYXNl
KGNvbG9yU3BhY2UpOwotICAgIENHQ29udGV4dFNldFNoYWRvd1dpdGhDb2xvcihjLT5wbGF0Zm9y
bUNvbnRleHQoKSwgYWRqdXN0ZWRTaGFkb3dTaXplKHdpZHRoLCAtaGVpZ2h0KSwgYmx1ciwgc2hh
ZG93Q29sb3IpOwotICAgIENHQ29sb3JSZWxlYXNlKHNoYWRvd0NvbG9yKTsKLSNlbmRpZgorCisg
ICAgUkdCQTMyIHJnYmEgPSBtYWtlUkdCQTMyRnJvbUZsb2F0cyhyLCBnLCBiLCBhKTsgLy8gZGVm
YXVsdCBpcyB0cmFuc3BhcmVudCBibGFjaworICAgIGlmICghc3RhdGUoKS5tX3NoYWRvd0NvbG9y
LmlzRW1wdHkoKSkKKyAgICAgICAgQ1NTUGFyc2VyOjpwYXJzZUNvbG9yKHJnYmEsIHN0YXRlKCku
bV9zaGFkb3dDb2xvcik7CisgICAgYy0+c2V0U2hhZG93KEludFNpemUoc3RhdGUoKS5tX3NoYWRv
d09mZnNldC53aWR0aCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlKCkubV9zaGFk
b3dPZmZzZXQuaGVpZ2h0KCkpLAorICAgICAgICAgICAgICAgICBzdGF0ZSgpLm1fc2hhZG93Qmx1
ciwgQ29sb3IocmdiYSkpOwogfQogCiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0
U2hhZG93KGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0IGJsdXIsIGZsb2F0IGMsIGZs
b2F0IG0sIGZsb2F0IHksIGZsb2F0IGssIGZsb2F0IGEpCkBAIC04MTEsMjQgKzc5NCwxMyBAQCB2
b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6YXBwbHlTaGFkCiAgICAgR3JhcGhpY3NDb250
ZXh0KiBjID0gZHJhd2luZ0NvbnRleHQoKTsKICAgICBpZiAoIWMpCiAgICAgICAgIHJldHVybjsK
LSAgICAvLyBGSVhNRTogRG8gdGhpcyB0aHJvdWdoIHBsYXRmb3JtLWluZGVwZW5kZW50IEdyYXBo
aWNzQ29udGV4dCBBUEkuCi0jaWYgUExBVEZPUk0oQ0cpCisKICAgICBSR0JBMzIgcmdiYSA9IDA7
IC8vIGRlZmF1bHQgaXMgdHJhbnNwYXJlbnQgYmxhY2sKICAgICBpZiAoIXN0YXRlKCkubV9zaGFk
b3dDb2xvci5pc0VtcHR5KCkpCiAgICAgICAgIENTU1BhcnNlcjo6cGFyc2VDb2xvcihyZ2JhLCBz
dGF0ZSgpLm1fc2hhZG93Q29sb3IpOwotICAgIGNvbnN0IENHRmxvYXQgY29tcG9uZW50c1s0XSA9
IHsKLSAgICAgICAgKChyZ2JhID4+IDE2KSAmIDB4RkYpIC8gMjU1LjBmLAotICAgICAgICAoKHJn
YmEgPj4gOCkgJiAweEZGKSAvIDI1NS4wZiwKLSAgICAgICAgKHJnYmEgJiAweEZGKSAvIDI1NS4w
ZiwKLSAgICAgICAgKChyZ2JhID4+IDI0KSAmIDB4RkYpIC8gMjU1LjBmCi0gICAgfTsKLSAgICBD
R0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0ZURldmljZVJHQigp
OwotICAgIENHQ29sb3JSZWYgY29sb3IgPSBDR0NvbG9yQ3JlYXRlKGNvbG9yU3BhY2UsIGNvbXBv
bmVudHMpOwotICAgIENHQ29sb3JTcGFjZVJlbGVhc2UoY29sb3JTcGFjZSk7Ci0KLSAgICBDR0Nv
bnRleHRTZXRTaGFkb3dXaXRoQ29sb3IoYy0+cGxhdGZvcm1Db250ZXh0KCksIGFkanVzdGVkU2hh
ZG93U2l6ZShzdGF0ZSgpLm1fc2hhZG93T2Zmc2V0LndpZHRoKCksIC1zdGF0ZSgpLm1fc2hhZG93
T2Zmc2V0LmhlaWdodCgpKSwgc3RhdGUoKS5tX3NoYWRvd0JsdXIsIGNvbG9yKTsKLSAgICBDR0Nv
bG9yUmVsZWFzZShjb2xvcik7Ci0jZW5kaWYKKyAgICBjLT5zZXRTaGFkb3coSW50U2l6ZShzdGF0
ZSgpLm1fc2hhZG93T2Zmc2V0LndpZHRoKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgc3Rh
dGUoKS5tX3NoYWRvd09mZnNldC5oZWlnaHQoKSksCisgICAgICAgICAgICAgICAgIHN0YXRlKCku
bV9zaGFkb3dCbHVyLCBDb2xvcihyZ2JhKSk7CiB9CiAKIHN0YXRpYyBJbnRTaXplIHNpemUoSFRN
TEltYWdlRWxlbWVudCogaW1hZ2UpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>25646</attachid>
            <date>2008-12-01 17:06:59 -0800</date>
            <delta_ts>2008-12-02 18:24:10 -0800</delta_ts>
            <desc>take 2</desc>
            <filename>canvas-shadow-2.diff</filename>
            <type>text/plain</type>
            <size>6372</size>
            <attacher name="Tony Chang">tony</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDM4ODg0
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMDgtMTIt
MDEgIHRvbnkgY2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb252ZXJ0IENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRDo6c2V0U2hhZG93IHRvIHVzZQorICAgICAgICBwbGF0Zm9ybS1pbmRlcGVuZGVudCBHcmFw
aGljc0NvbnRleHQgQVBJLgorCisgICAgICAgICogaHRtbC9DYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRT
aGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjphcHBs
eVNoYWRvdyk6CisKIDIwMDgtMTItMDEgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNv
bT4KIAogICAgICAgICBCdWcgMjI0NjY6IFJFR1JFU1NJT04gKDM1ODY3KTogTWFueSByZXNvdXJj
ZXMgbWlzc2luZyB3aGVuIHNhdmluZyB3ZWJhcmNoaXZlIG9mIHdlYmtpdC5vcmcKSW5kZXg6IGh0
bWwvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBodG1sL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRC5jcHAJKHJldmlzaW9uIDM4ODgwKQorKysgaHRtbC9DYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MDAsMTUgKzcwMCwxMSBA
QCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U2hhZG93CiAgICAgR3JhcGhpY3ND
b250ZXh0KiBjID0gZHJhd2luZ0NvbnRleHQoKTsKICAgICBpZiAoIWMpCiAgICAgICAgIHJldHVy
bjsKLSAgICAvLyBGSVhNRTogRG8gdGhpcyB0aHJvdWdoIHBsYXRmb3JtLWluZGVwZW5kZW50IEdy
YXBoaWNzQ29udGV4dCBBUEkuCi0jaWYgUExBVEZPUk0oQ0cpCi0gICAgY29uc3QgQ0dGbG9hdCBj
b21wb25lbnRzWzJdID0geyBncmF5TGV2ZWwsIDEgfTsKLSAgICBDR0NvbG9yU3BhY2VSZWYgY29s
b3JTcGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0ZURldmljZUdyYXkoKTsKLSAgICBDR0NvbG9yUmVm
IGNvbG9yID0gQ0dDb2xvckNyZWF0ZShjb2xvclNwYWNlLCBjb21wb25lbnRzKTsKLSAgICBDR0Nv
bG9yU3BhY2VSZWxlYXNlKGNvbG9yU3BhY2UpOwotICAgIENHQ29udGV4dFNldFNoYWRvd1dpdGhD
b2xvcihjLT5wbGF0Zm9ybUNvbnRleHQoKSwgYWRqdXN0ZWRTaGFkb3dTaXplKHdpZHRoLCAtaGVp
Z2h0KSwgYmx1ciwgY29sb3IpOwotICAgIENHQ29sb3JSZWxlYXNlKGNvbG9yKTsKLSNlbmRpZgor
CisgICAgUkdCQTMyIHJnYmEgPSBtYWtlUkdCQTMyRnJvbUZsb2F0cyhncmF5TGV2ZWwsIGdyYXlM
ZXZlbCwgZ3JheUxldmVsLCAxLjApOworICAgIGMtPnNldFNoYWRvdyhJbnRTaXplKHN0YXRlKCku
bV9zaGFkb3dPZmZzZXQud2lkdGgoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSgp
Lm1fc2hhZG93T2Zmc2V0LmhlaWdodCgpKSwKKyAgICAgICAgICAgICAgICAgc3RhdGUoKS5tX3No
YWRvd0JsdXIsIENvbG9yKHJnYmEpKTsKIH0KIAogdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQ6OnNldFNoYWRvdyhmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBmbG9hdCBibHVyLCBjb25z
dCBTdHJpbmcmIGNvbG9yLCBmbG9hdCBhbHBoYSkKQEAgLTcyMCwyMiArNzE2LDE0IEBAIHZvaWQg
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRTaGFkb3cKICAgICBHcmFwaGljc0NvbnRleHQq
IGMgPSBkcmF3aW5nQ29udGV4dCgpOwogICAgIGlmICghYykKICAgICAgICAgcmV0dXJuOwotICAg
IC8vIEZJWE1FOiBEbyB0aGlzIHRocm91Z2ggcGxhdGZvcm0taW5kZXBlbmRlbnQgR3JhcGhpY3ND
b250ZXh0IEFQSS4KLSNpZiBQTEFURk9STShDRykKKwogICAgIFJHQkEzMiByZ2JhID0gMDsgLy8g
ZGVmYXVsdCBpcyB0cmFuc3BhcmVudCBibGFjawotICAgIENTU1BhcnNlcjo6cGFyc2VDb2xvcihy
Z2JhLCBjb2xvcik7Ci0gICAgY29uc3QgQ0dGbG9hdCBjb21wb25lbnRzWzRdID0gewotICAgICAg
ICAoKHJnYmEgPj4gMTYpICYgMHhGRikgLyAyNTUuMGYsCi0gICAgICAgICgocmdiYSA+PiA4KSAm
IDB4RkYpIC8gMjU1LjBmLAotICAgICAgICAocmdiYSAmIDB4RkYpIC8gMjU1LjBmLAotICAgICAg
ICBhbHBoYQotICAgIH07Ci0gICAgQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2UgPSBDR0NvbG9y
U3BhY2VDcmVhdGVEZXZpY2VSR0IoKTsKLSAgICBDR0NvbG9yUmVmIHNoYWRvd0NvbG9yID0gQ0dD
b2xvckNyZWF0ZShjb2xvclNwYWNlLCBjb21wb25lbnRzKTsKLSAgICBDR0NvbG9yU3BhY2VSZWxl
YXNlKGNvbG9yU3BhY2UpOwotICAgIENHQ29udGV4dFNldFNoYWRvd1dpdGhDb2xvcihjLT5wbGF0
Zm9ybUNvbnRleHQoKSwgYWRqdXN0ZWRTaGFkb3dTaXplKHdpZHRoLCAtaGVpZ2h0KSwgYmx1ciwg
c2hhZG93Q29sb3IpOwotICAgIENHQ29sb3JSZWxlYXNlKHNoYWRvd0NvbG9yKTsKLSNlbmRpZgor
ICAgIGlmICghc3RhdGUoKS5tX3NoYWRvd0NvbG9yLmlzRW1wdHkoKSkKKyAgICAgICAgQ1NTUGFy
c2VyOjpwYXJzZUNvbG9yKHJnYmEsIHN0YXRlKCkubV9zaGFkb3dDb2xvcik7CisgICAgYy0+c2V0
U2hhZG93KEludFNpemUoc3RhdGUoKS5tX3NoYWRvd09mZnNldC53aWR0aCgpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0YXRlKCkubV9zaGFkb3dPZmZzZXQuaGVpZ2h0KCkpLAorICAgICAg
ICAgICAgICAgICBzdGF0ZSgpLm1fc2hhZG93Qmx1ciwKKyAgICAgICAgICAgICAgICAgQ29sb3Io
Y29sb3JXaXRoT3ZlcnJpZGVBbHBoYShyZ2JhLCBhbHBoYSkpKTsKIH0KIAogdm9pZCBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OnNldFNoYWRvdyhmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBm
bG9hdCBibHVyLCBmbG9hdCBncmF5TGV2ZWwsIGZsb2F0IGFscGhhKQpAQCAtNzQ3LDE1ICs3MzUs
MTEgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFNoYWRvdwogICAgIEdyYXBo
aWNzQ29udGV4dCogYyA9IGRyYXdpbmdDb250ZXh0KCk7CiAgICAgaWYgKCFjKQogICAgICAgICBy
ZXR1cm47Ci0gICAgLy8gRklYTUU6IERvIHRoaXMgdGhyb3VnaCBwbGF0Zm9ybS1pbmRlcGVuZGVu
dCBHcmFwaGljc0NvbnRleHQgQVBJLgotI2lmIFBMQVRGT1JNKENHKQotICAgIGNvbnN0IENHRmxv
YXQgY29tcG9uZW50c1syXSA9IHsgZ3JheUxldmVsLCBhbHBoYSB9OwotICAgIENHQ29sb3JTcGFj
ZVJlZiBjb2xvclNwYWNlID0gQ0dDb2xvclNwYWNlQ3JlYXRlRGV2aWNlR3JheSgpOwotICAgIENH
Q29sb3JSZWYgY29sb3IgPSBDR0NvbG9yQ3JlYXRlKGNvbG9yU3BhY2UsIGNvbXBvbmVudHMpOwot
ICAgIENHQ29sb3JTcGFjZVJlbGVhc2UoY29sb3JTcGFjZSk7Ci0gICAgQ0dDb250ZXh0U2V0U2hh
ZG93V2l0aENvbG9yKGMtPnBsYXRmb3JtQ29udGV4dCgpLCBhZGp1c3RlZFNoYWRvd1NpemUod2lk
dGgsIC1oZWlnaHQpLCBibHVyLCBjb2xvcik7Ci0gICAgQ0dDb2xvclJlbGVhc2UoY29sb3IpOwot
I2VuZGlmCisKKyAgICBSR0JBMzIgcmdiYSA9IG1ha2VSR0JBMzJGcm9tRmxvYXRzKGdyYXlMZXZl
bCwgZ3JheUxldmVsLCBncmF5TGV2ZWwsIGFscGhhKTsKKyAgICBjLT5zZXRTaGFkb3coSW50U2l6
ZShzdGF0ZSgpLm1fc2hhZG93T2Zmc2V0LndpZHRoKCksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RhdGUoKS5tX3NoYWRvd09mZnNldC5oZWlnaHQoKSksCisgICAgICAgICAgICAgICAgIHN0
YXRlKCkubV9zaGFkb3dCbHVyLCBDb2xvcihyZ2JhKSk7CiB9CiAKIHZvaWQgQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEOjpzZXRTaGFkb3coZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQg
Ymx1ciwgZmxvYXQgciwgZmxvYXQgZywgZmxvYXQgYiwgZmxvYXQgYSkKQEAgLTc2NywxNSArNzUx
LDEzIEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRTaGFkb3cKICAgICBHcmFw
aGljc0NvbnRleHQqIGMgPSBkcmF3aW5nQ29udGV4dCgpOwogICAgIGlmICghYykKICAgICAgICAg
cmV0dXJuOwotICAgIC8vIEZJWE1FOiBEbyB0aGlzIHRocm91Z2ggcGxhdGZvcm0taW5kZXBlbmRl
bnQgR3JhcGhpY3NDb250ZXh0IEFQSS4KLSNpZiBQTEFURk9STShDRykKLSAgICBjb25zdCBDR0Zs
b2F0IGNvbXBvbmVudHNbNF0gPSB7IHIsIGcsIGIsIGEgfTsKLSAgICBDR0NvbG9yU3BhY2VSZWYg
Y29sb3JTcGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0ZURldmljZVJHQigpOwotICAgIENHQ29sb3JS
ZWYgc2hhZG93Q29sb3IgPSBDR0NvbG9yQ3JlYXRlKGNvbG9yU3BhY2UsIGNvbXBvbmVudHMpOwot
ICAgIENHQ29sb3JTcGFjZVJlbGVhc2UoY29sb3JTcGFjZSk7Ci0gICAgQ0dDb250ZXh0U2V0U2hh
ZG93V2l0aENvbG9yKGMtPnBsYXRmb3JtQ29udGV4dCgpLCBhZGp1c3RlZFNoYWRvd1NpemUod2lk
dGgsIC1oZWlnaHQpLCBibHVyLCBzaGFkb3dDb2xvcik7Ci0gICAgQ0dDb2xvclJlbGVhc2Uoc2hh
ZG93Q29sb3IpOwotI2VuZGlmCisKKyAgICBSR0JBMzIgcmdiYSA9IG1ha2VSR0JBMzJGcm9tRmxv
YXRzKHIsIGcsIGIsIGEpOyAvLyBkZWZhdWx0IGlzIHRyYW5zcGFyZW50IGJsYWNrCisgICAgaWYg
KCFzdGF0ZSgpLm1fc2hhZG93Q29sb3IuaXNFbXB0eSgpKQorICAgICAgICBDU1NQYXJzZXI6OnBh
cnNlQ29sb3IocmdiYSwgc3RhdGUoKS5tX3NoYWRvd0NvbG9yKTsKKyAgICBjLT5zZXRTaGFkb3co
SW50U2l6ZShzdGF0ZSgpLm1fc2hhZG93T2Zmc2V0LndpZHRoKCksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgc3RhdGUoKS5tX3NoYWRvd09mZnNldC5oZWlnaHQoKSksCisgICAgICAgICAgICAg
ICAgIHN0YXRlKCkubV9zaGFkb3dCbHVyLCBDb2xvcihyZ2JhKSk7CiB9CiAKIHZvaWQgQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEOjpzZXRTaGFkb3coZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwg
ZmxvYXQgYmx1ciwgZmxvYXQgYywgZmxvYXQgbSwgZmxvYXQgeSwgZmxvYXQgaywgZmxvYXQgYSkK
QEAgLTgxMSwyNCArNzkzLDEzIEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjphcHBs
eVNoYWQKICAgICBHcmFwaGljc0NvbnRleHQqIGMgPSBkcmF3aW5nQ29udGV4dCgpOwogICAgIGlm
ICghYykKICAgICAgICAgcmV0dXJuOwotICAgIC8vIEZJWE1FOiBEbyB0aGlzIHRocm91Z2ggcGxh
dGZvcm0taW5kZXBlbmRlbnQgR3JhcGhpY3NDb250ZXh0IEFQSS4KLSNpZiBQTEFURk9STShDRykK
KwogICAgIFJHQkEzMiByZ2JhID0gMDsgLy8gZGVmYXVsdCBpcyB0cmFuc3BhcmVudCBibGFjawog
ICAgIGlmICghc3RhdGUoKS5tX3NoYWRvd0NvbG9yLmlzRW1wdHkoKSkKICAgICAgICAgQ1NTUGFy
c2VyOjpwYXJzZUNvbG9yKHJnYmEsIHN0YXRlKCkubV9zaGFkb3dDb2xvcik7Ci0gICAgY29uc3Qg
Q0dGbG9hdCBjb21wb25lbnRzWzRdID0gewotICAgICAgICAoKHJnYmEgPj4gMTYpICYgMHhGRikg
LyAyNTUuMGYsCi0gICAgICAgICgocmdiYSA+PiA4KSAmIDB4RkYpIC8gMjU1LjBmLAotICAgICAg
ICAocmdiYSAmIDB4RkYpIC8gMjU1LjBmLAotICAgICAgICAoKHJnYmEgPj4gMjQpICYgMHhGRikg
LyAyNTUuMGYKLSAgICB9OwotICAgIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlID0gQ0dDb2xv
clNwYWNlQ3JlYXRlRGV2aWNlUkdCKCk7Ci0gICAgQ0dDb2xvclJlZiBjb2xvciA9IENHQ29sb3JD
cmVhdGUoY29sb3JTcGFjZSwgY29tcG9uZW50cyk7Ci0gICAgQ0dDb2xvclNwYWNlUmVsZWFzZShj
b2xvclNwYWNlKTsKLQotICAgIENHQ29udGV4dFNldFNoYWRvd1dpdGhDb2xvcihjLT5wbGF0Zm9y
bUNvbnRleHQoKSwgYWRqdXN0ZWRTaGFkb3dTaXplKHN0YXRlKCkubV9zaGFkb3dPZmZzZXQud2lk
dGgoKSwgLXN0YXRlKCkubV9zaGFkb3dPZmZzZXQuaGVpZ2h0KCkpLCBzdGF0ZSgpLm1fc2hhZG93
Qmx1ciwgY29sb3IpOwotICAgIENHQ29sb3JSZWxlYXNlKGNvbG9yKTsKLSNlbmRpZgorICAgIGMt
PnNldFNoYWRvdyhJbnRTaXplKHN0YXRlKCkubV9zaGFkb3dPZmZzZXQud2lkdGgoKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICBzdGF0ZSgpLm1fc2hhZG93T2Zmc2V0LmhlaWdodCgpKSwKKyAg
ICAgICAgICAgICAgICAgc3RhdGUoKS5tX3NoYWRvd0JsdXIsIENvbG9yKHJnYmEpKTsKIH0KIAog
c3RhdGljIEludFNpemUgc2l6ZShIVE1MSW1hZ2VFbGVtZW50KiBpbWFnZSkK
</data>
<flag name="review"
          id="11957"
          type_id="1"
          status="-"
          setter="mitz"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>25686</attachid>
            <date>2008-12-02 15:13:29 -0800</date>
            <delta_ts>2008-12-02 15:13:29 -0800</delta_ts>
            <desc>test for transform and shadow</desc>
            <filename>shadow-scale.html</filename>
            <type>text/html</type>
            <size>223</size>
            <attacher name="Tony Chang">tony</attacher>
            
              <data encoding="base64">PGRpdiBzdHlsZT0iLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7CiAgICAgICAgICAg
IC13ZWJraXQtYm94LXNoYWRvdzogMTAwcHggMCAycHggcmVkOwogICAgICAgICAgICB3aWR0aDog
MTAwcHg7CiAgICAgICAgICAgIGhlaWdodDogMjAwcHg7CiAgICAgICAgICAgIG1hcmdpbi1sZWZ0
OiA1MHB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBibHVlIj4KPC9kaXY+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>25698</attachid>
            <date>2008-12-02 18:22:33 -0800</date>
            <delta_ts>2008-12-05 12:21:08 -0800</delta_ts>
            <desc>[1/1] Convert CanvasRenderingContext2D::setShadow to use</desc>
            <filename>-Convert-CanvasRenderingContext2D-setShadow-to-use.patch</filename>
            <type>text/plain</type>
            <size>12887</size>
            <attacher name="Tony Chang">tony</attacher>
            
              <data encoding="base64">ZGU2NTBiZjBhNDE4MjQxMGJmODM0OGVjM2ZjYzg2ZmNkMGFmOTgxMgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9jc3Mvc2hhZG93LXNjYWxlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nz
cy9zaGFkb3ctc2NhbGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4w
NjBlYmIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc2hhZG93LXNj
YWxlLmh0bWwKQEAgLTAsMCArMSw4IEBACis8IS0tIFRoaXMgdGVzdHMgdG8gbWFrZSBzdXJlIHRo
YXQgc2hhZG93cyBnZXQgYXBwbGllZCBhZnRlciB0cmFuc2Zvcm1hdGlvbnMuIC0tPgorPGRpdiBz
dHlsZT0iLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7CisgICAgICAgICAgICAtd2Vi
a2l0LWJveC1zaGFkb3c6IDEwMHB4IDAgMCByZWQ7CisgICAgICAgICAgICB3aWR0aDogMTAwcHg7
CisgICAgICAgICAgICBoZWlnaHQ6IDIwMHB4OworICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDUw
cHg7CisgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBibHVlIj4KKzwvZGl2PgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvY3NzL3NoYWRvdy1zY2FsZS1leHBl
Y3RlZC5jaGVja3N1bSBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2Nzcy9zaGFkb3ct
c2NhbGUtZXhwZWN0ZWQuY2hlY2tzdW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uMzE2OGQ1ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9m
YXN0L2Nzcy9zaGFkb3ctc2NhbGUtZXhwZWN0ZWQuY2hlY2tzdW0KQEAgLTAsMCArMSBAQAorOWQy
NDJiYzQ5YWU1ODcxY2FkOTcwNmY4N2Y0YjlhZDgKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9jc3Mvc2hhZG93LXNj
YWxlLWV4cGVjdGVkLnBuZyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2Nzcy9zaGFk
b3ctc2NhbGUtZXhwZWN0ZWQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjIyZTI2ZjIKQmluYXJ5IGZpbGVzIC9kZXYvbnVsbCBhbmQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMvZmFzdC9jc3Mvc2hhZG93LXNjYWxlLWV4cGVjdGVkLnBuZyBkaWZmZXIKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2Nzcy9zaGFkb3ctc2NhbGUtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvY3NzL3NoYWRvdy1zY2FsZS1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2JiYjQ1MAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2Nzcy9zaGFk
b3ctc2NhbGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNyBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6
ZSA4MDB4NjAwCisgIFJlbmRlclZpZXcgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCitsYXllciBhdCAo
MCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAw
eDYwMAorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDU4NAorbGF5ZXIg
YXQgKDU4LDgpIHNpemUgMjAweDIwMAorICBSZW5kZXJCbG9jayB7RElWfSBhdCAoNTAsMCkgc2l6
ZSAxMDB4MjAwIFtiZ2NvbG9yPSMwMDAwRkZdCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcCBiL1dlYkNvcmUvaHRtbC9DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQuY3BwCmluZGV4IDU2OTZiMmYuLmYwZmI0ZDUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
aHRtbC9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9DYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCkBAIC03MDAsMTUgKzcwMCw5IEBAIHZvaWQgQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEOjpzZXRTaGFkb3coZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwg
ZmxvYXQgYmx1ciwKICAgICBHcmFwaGljc0NvbnRleHQqIGMgPSBkcmF3aW5nQ29udGV4dCgpOwog
ICAgIGlmICghYykKICAgICAgICAgcmV0dXJuOwotICAgIC8vIEZJWE1FOiBEbyB0aGlzIHRocm91
Z2ggcGxhdGZvcm0taW5kZXBlbmRlbnQgR3JhcGhpY3NDb250ZXh0IEFQSS4KLSNpZiBQTEFURk9S
TShDRykKLSAgICBjb25zdCBDR0Zsb2F0IGNvbXBvbmVudHNbMl0gPSB7IGdyYXlMZXZlbCwgMSB9
OwotICAgIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlID0gQ0dDb2xvclNwYWNlQ3JlYXRlRGV2
aWNlR3JheSgpOwotICAgIENHQ29sb3JSZWYgY29sb3IgPSBDR0NvbG9yQ3JlYXRlKGNvbG9yU3Bh
Y2UsIGNvbXBvbmVudHMpOwotICAgIENHQ29sb3JTcGFjZVJlbGVhc2UoY29sb3JTcGFjZSk7Ci0g
ICAgQ0dDb250ZXh0U2V0U2hhZG93V2l0aENvbG9yKGMtPnBsYXRmb3JtQ29udGV4dCgpLCBhZGp1
c3RlZFNoYWRvd1NpemUod2lkdGgsIC1oZWlnaHQpLCBibHVyLCBjb2xvcik7Ci0gICAgQ0dDb2xv
clJlbGVhc2UoY29sb3IpOwotI2VuZGlmCisKKyAgICBSR0JBMzIgcmdiYSA9IG1ha2VSR0JBMzJG
cm9tRmxvYXRzKGdyYXlMZXZlbCwgZ3JheUxldmVsLCBncmF5TGV2ZWwsIDEuMGYpOworICAgIGMt
PnNldFNoYWRvdyhJbnRTaXplKHdpZHRoLCAtaGVpZ2h0KSwgc3RhdGUoKS5tX3NoYWRvd0JsdXIs
IENvbG9yKHJnYmEpLCB0cnVlKTsKIH0KIAogdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6
OnNldFNoYWRvdyhmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBmbG9hdCBibHVyLCBjb25zdCBT
dHJpbmcmIGNvbG9yLCBmbG9hdCBhbHBoYSkKQEAgLTcyMCwyMiArNzE0LDExIEBAIHZvaWQgQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRTaGFkb3coZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdo
dCwgZmxvYXQgYmx1ciwKICAgICBHcmFwaGljc0NvbnRleHQqIGMgPSBkcmF3aW5nQ29udGV4dCgp
OwogICAgIGlmICghYykKICAgICAgICAgcmV0dXJuOwotICAgIC8vIEZJWE1FOiBEbyB0aGlzIHRo
cm91Z2ggcGxhdGZvcm0taW5kZXBlbmRlbnQgR3JhcGhpY3NDb250ZXh0IEFQSS4KLSNpZiBQTEFU
Rk9STShDRykKKwogICAgIFJHQkEzMiByZ2JhID0gMDsgLy8gZGVmYXVsdCBpcyB0cmFuc3BhcmVu
dCBibGFjawotICAgIENTU1BhcnNlcjo6cGFyc2VDb2xvcihyZ2JhLCBjb2xvcik7Ci0gICAgY29u
c3QgQ0dGbG9hdCBjb21wb25lbnRzWzRdID0gewotICAgICAgICAoKHJnYmEgPj4gMTYpICYgMHhG
RikgLyAyNTUuMGYsCi0gICAgICAgICgocmdiYSA+PiA4KSAmIDB4RkYpIC8gMjU1LjBmLAotICAg
ICAgICAocmdiYSAmIDB4RkYpIC8gMjU1LjBmLAotICAgICAgICBhbHBoYQotICAgIH07Ci0gICAg
Q0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVEZXZpY2VSR0Io
KTsKLSAgICBDR0NvbG9yUmVmIHNoYWRvd0NvbG9yID0gQ0dDb2xvckNyZWF0ZShjb2xvclNwYWNl
LCBjb21wb25lbnRzKTsKLSAgICBDR0NvbG9yU3BhY2VSZWxlYXNlKGNvbG9yU3BhY2UpOwotICAg
IENHQ29udGV4dFNldFNoYWRvd1dpdGhDb2xvcihjLT5wbGF0Zm9ybUNvbnRleHQoKSwgYWRqdXN0
ZWRTaGFkb3dTaXplKHdpZHRoLCAtaGVpZ2h0KSwgYmx1ciwgc2hhZG93Q29sb3IpOwotICAgIENH
Q29sb3JSZWxlYXNlKHNoYWRvd0NvbG9yKTsKLSNlbmRpZgorICAgIGlmICghc3RhdGUoKS5tX3No
YWRvd0NvbG9yLmlzRW1wdHkoKSkKKyAgICAgICAgQ1NTUGFyc2VyOjpwYXJzZUNvbG9yKHJnYmEs
IHN0YXRlKCkubV9zaGFkb3dDb2xvcik7CisgICAgYy0+c2V0U2hhZG93KEludFNpemUod2lkdGgs
IC1oZWlnaHQpLCBzdGF0ZSgpLm1fc2hhZG93Qmx1ciwgQ29sb3IoY29sb3JXaXRoT3ZlcnJpZGVB
bHBoYShyZ2JhLCBhbHBoYSkpLCB0cnVlKTsKIH0KIAogdm9pZCBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQ6OnNldFNoYWRvdyhmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBmbG9hdCBibHVyLCBm
bG9hdCBncmF5TGV2ZWwsIGZsb2F0IGFscGhhKQpAQCAtNzQ3LDE1ICs3MzAsOSBAQCB2b2lkIENh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U2hhZG93KGZsb2F0IHdpZHRoLCBmbG9hdCBoZWln
aHQsIGZsb2F0IGJsdXIsCiAgICAgR3JhcGhpY3NDb250ZXh0KiBjID0gZHJhd2luZ0NvbnRleHQo
KTsKICAgICBpZiAoIWMpCiAgICAgICAgIHJldHVybjsKLSAgICAvLyBGSVhNRTogRG8gdGhpcyB0
aHJvdWdoIHBsYXRmb3JtLWluZGVwZW5kZW50IEdyYXBoaWNzQ29udGV4dCBBUEkuCi0jaWYgUExB
VEZPUk0oQ0cpCi0gICAgY29uc3QgQ0dGbG9hdCBjb21wb25lbnRzWzJdID0geyBncmF5TGV2ZWws
IGFscGhhIH07Ci0gICAgQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2UgPSBDR0NvbG9yU3BhY2VD
cmVhdGVEZXZpY2VHcmF5KCk7Ci0gICAgQ0dDb2xvclJlZiBjb2xvciA9IENHQ29sb3JDcmVhdGUo
Y29sb3JTcGFjZSwgY29tcG9uZW50cyk7Ci0gICAgQ0dDb2xvclNwYWNlUmVsZWFzZShjb2xvclNw
YWNlKTsKLSAgICBDR0NvbnRleHRTZXRTaGFkb3dXaXRoQ29sb3IoYy0+cGxhdGZvcm1Db250ZXh0
KCksIGFkanVzdGVkU2hhZG93U2l6ZSh3aWR0aCwgLWhlaWdodCksIGJsdXIsIGNvbG9yKTsKLSAg
ICBDR0NvbG9yUmVsZWFzZShjb2xvcik7Ci0jZW5kaWYKKworICAgIFJHQkEzMiByZ2JhID0gbWFr
ZVJHQkEzMkZyb21GbG9hdHMoZ3JheUxldmVsLCBncmF5TGV2ZWwsIGdyYXlMZXZlbCwgYWxwaGEp
OworICAgIGMtPnNldFNoYWRvdyhJbnRTaXplKHdpZHRoLCAtaGVpZ2h0KSwgc3RhdGUoKS5tX3No
YWRvd0JsdXIsIENvbG9yKHJnYmEpLCB0cnVlKTsKIH0KIAogdm9pZCBDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQ6OnNldFNoYWRvdyhmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBmbG9hdCBibHVy
LCBmbG9hdCByLCBmbG9hdCBnLCBmbG9hdCBiLCBmbG9hdCBhKQpAQCAtNzY3LDE1ICs3NDQsMTEg
QEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFNoYWRvdyhmbG9hdCB3aWR0aCwg
ZmxvYXQgaGVpZ2h0LCBmbG9hdCBibHVyLAogICAgIEdyYXBoaWNzQ29udGV4dCogYyA9IGRyYXdp
bmdDb250ZXh0KCk7CiAgICAgaWYgKCFjKQogICAgICAgICByZXR1cm47Ci0gICAgLy8gRklYTUU6
IERvIHRoaXMgdGhyb3VnaCBwbGF0Zm9ybS1pbmRlcGVuZGVudCBHcmFwaGljc0NvbnRleHQgQVBJ
LgotI2lmIFBMQVRGT1JNKENHKQotICAgIGNvbnN0IENHRmxvYXQgY29tcG9uZW50c1s0XSA9IHsg
ciwgZywgYiwgYSB9OwotICAgIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlID0gQ0dDb2xvclNw
YWNlQ3JlYXRlRGV2aWNlUkdCKCk7Ci0gICAgQ0dDb2xvclJlZiBzaGFkb3dDb2xvciA9IENHQ29s
b3JDcmVhdGUoY29sb3JTcGFjZSwgY29tcG9uZW50cyk7Ci0gICAgQ0dDb2xvclNwYWNlUmVsZWFz
ZShjb2xvclNwYWNlKTsKLSAgICBDR0NvbnRleHRTZXRTaGFkb3dXaXRoQ29sb3IoYy0+cGxhdGZv
cm1Db250ZXh0KCksIGFkanVzdGVkU2hhZG93U2l6ZSh3aWR0aCwgLWhlaWdodCksIGJsdXIsIHNo
YWRvd0NvbG9yKTsKLSAgICBDR0NvbG9yUmVsZWFzZShzaGFkb3dDb2xvcik7Ci0jZW5kaWYKKwor
ICAgIFJHQkEzMiByZ2JhID0gbWFrZVJHQkEzMkZyb21GbG9hdHMociwgZywgYiwgYSk7IC8vIGRl
ZmF1bHQgaXMgdHJhbnNwYXJlbnQgYmxhY2sKKyAgICBpZiAoIXN0YXRlKCkubV9zaGFkb3dDb2xv
ci5pc0VtcHR5KCkpCisgICAgICAgIENTU1BhcnNlcjo6cGFyc2VDb2xvcihyZ2JhLCBzdGF0ZSgp
Lm1fc2hhZG93Q29sb3IpOworICAgIGMtPnNldFNoYWRvdyhJbnRTaXplKHdpZHRoLCAtaGVpZ2h0
KSwgc3RhdGUoKS5tX3NoYWRvd0JsdXIsIENvbG9yKHJnYmEpLCB0cnVlKTsKIH0KIAogdm9pZCBD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFNoYWRvdyhmbG9hdCB3aWR0aCwgZmxvYXQgaGVp
Z2h0LCBmbG9hdCBibHVyLCBmbG9hdCBjLCBmbG9hdCBtLCBmbG9hdCB5LCBmbG9hdCBrLCBmbG9h
dCBhKQpAQCAtODExLDI0ICs3ODQsMTMgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6
OmFwcGx5U2hhZG93KCkKICAgICBHcmFwaGljc0NvbnRleHQqIGMgPSBkcmF3aW5nQ29udGV4dCgp
OwogICAgIGlmICghYykKICAgICAgICAgcmV0dXJuOwotICAgIC8vIEZJWE1FOiBEbyB0aGlzIHRo
cm91Z2ggcGxhdGZvcm0taW5kZXBlbmRlbnQgR3JhcGhpY3NDb250ZXh0IEFQSS4KLSNpZiBQTEFU
Rk9STShDRykKKwogICAgIFJHQkEzMiByZ2JhID0gMDsgLy8gZGVmYXVsdCBpcyB0cmFuc3BhcmVu
dCBibGFjawogICAgIGlmICghc3RhdGUoKS5tX3NoYWRvd0NvbG9yLmlzRW1wdHkoKSkKICAgICAg
ICAgQ1NTUGFyc2VyOjpwYXJzZUNvbG9yKHJnYmEsIHN0YXRlKCkubV9zaGFkb3dDb2xvcik7Ci0g
ICAgY29uc3QgQ0dGbG9hdCBjb21wb25lbnRzWzRdID0gewotICAgICAgICAoKHJnYmEgPj4gMTYp
ICYgMHhGRikgLyAyNTUuMGYsCi0gICAgICAgICgocmdiYSA+PiA4KSAmIDB4RkYpIC8gMjU1LjBm
LAotICAgICAgICAocmdiYSAmIDB4RkYpIC8gMjU1LjBmLAotICAgICAgICAoKHJnYmEgPj4gMjQp
ICYgMHhGRikgLyAyNTUuMGYKLSAgICB9OwotICAgIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNl
ID0gQ0dDb2xvclNwYWNlQ3JlYXRlRGV2aWNlUkdCKCk7Ci0gICAgQ0dDb2xvclJlZiBjb2xvciA9
IENHQ29sb3JDcmVhdGUoY29sb3JTcGFjZSwgY29tcG9uZW50cyk7Ci0gICAgQ0dDb2xvclNwYWNl
UmVsZWFzZShjb2xvclNwYWNlKTsKLQotICAgIENHQ29udGV4dFNldFNoYWRvd1dpdGhDb2xvcihj
LT5wbGF0Zm9ybUNvbnRleHQoKSwgYWRqdXN0ZWRTaGFkb3dTaXplKHN0YXRlKCkubV9zaGFkb3dP
ZmZzZXQud2lkdGgoKSwgLXN0YXRlKCkubV9zaGFkb3dPZmZzZXQuaGVpZ2h0KCkpLCBzdGF0ZSgp
Lm1fc2hhZG93Qmx1ciwgY29sb3IpOwotICAgIENHQ29sb3JSZWxlYXNlKGNvbG9yKTsKLSNlbmRp
ZgorICAgIGZsb2F0IHdpZHRoID0gc3RhdGUoKS5tX3NoYWRvd09mZnNldC53aWR0aCgpOworICAg
IGZsb2F0IGhlaWdodCA9IHN0YXRlKCkubV9zaGFkb3dPZmZzZXQuaGVpZ2h0KCk7CisgICAgYy0+
c2V0U2hhZG93KEludFNpemUod2lkdGgsIC1oZWlnaHQpLCBzdGF0ZSgpLm1fc2hhZG93Qmx1ciwg
Q29sb3IocmdiYSksIHRydWUpOwogfQogCiBzdGF0aWMgSW50U2l6ZSBzaXplKEhUTUxJbWFnZUVs
ZW1lbnQqIGltYWdlKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuY3BwCmluZGV4IDljZDI5NjkuLjViNzM3YjQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKQEAgLTEzOSwxMiArMTM5LDEyIEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpzZXRTdHJva2VDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCiAgICAgc2V0
UGxhdGZvcm1TdHJva2VDb2xvcihjb2xvcik7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0Ojpz
ZXRTaGFkb3coY29uc3QgSW50U2l6ZSYgc2l6ZSwgaW50IGJsdXIsIGNvbnN0IENvbG9yJiBjb2xv
cikKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRTaGFkb3coY29uc3QgSW50U2l6ZSYgc2l6ZSwg
aW50IGJsdXIsIGNvbnN0IENvbG9yJiBjb2xvciwgYm9vbCBpZ25vcmVUcmFuc2Zvcm1zKQogewog
ICAgIG1fY29tbW9uLT5zdGF0ZS5zaGFkb3dTaXplID0gc2l6ZTsKICAgICBtX2NvbW1vbi0+c3Rh
dGUuc2hhZG93Qmx1ciA9IGJsdXI7CiAgICAgbV9jb21tb24tPnN0YXRlLnNoYWRvd0NvbG9yID0g
Y29sb3I7Ci0gICAgc2V0UGxhdGZvcm1TaGFkb3coc2l6ZSwgYmx1ciwgY29sb3IpOworICAgIHNl
dFBsYXRmb3JtU2hhZG93KHNpemUsIGJsdXIsIGNvbG9yLCBpZ25vcmVUcmFuc2Zvcm1zKTsKIH0K
IAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsZWFyU2hhZG93KCkKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCmluZGV4IDRkZGY0NmQuLjkxZWZiZjQgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApAQCAtMjMyLDcgKzIz
Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBiZWdpblRyYW5zcGFyZW5j
eUxheWVyKGZsb2F0IG9wYWNpdHkpOwogICAgICAgICB2b2lkIGVuZFRyYW5zcGFyZW5jeUxheWVy
KCk7CiAKLSAgICAgICAgdm9pZCBzZXRTaGFkb3coY29uc3QgSW50U2l6ZSYsIGludCBibHVyLCBj
b25zdCBDb2xvciYpOworICAgICAgICB2b2lkIHNldFNoYWRvdyhjb25zdCBJbnRTaXplJiwgaW50
IGJsdXIsIGNvbnN0IENvbG9yJiwgYm9vbCBpZ25vcmVUcmFuc2Zvcm1zID0gZmFsc2UpOwogICAg
ICAgICBib29sIGdldFNoYWRvdyhJbnRTaXplJiwgaW50JiwgQ29sb3ImKSBjb25zdDsKICAgICAg
ICAgdm9pZCBjbGVhclNoYWRvdygpOwogCkBAIC0zMzIsNyArMzMyLDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiAgICAgICAgIHZvaWQgc2V0UGxhdGZvcm1GaWxsQ29sb3IoY29uc3QgQ29sb3Im
KTsKIAotICAgICAgICB2b2lkIHNldFBsYXRmb3JtU2hhZG93KGNvbnN0IEludFNpemUmLCBpbnQg
Ymx1ciwgY29uc3QgQ29sb3ImKTsKKyAgICAgICAgdm9pZCBzZXRQbGF0Zm9ybVNoYWRvdyhjb25z
dCBJbnRTaXplJiwgaW50IGJsdXIsIGNvbnN0IENvbG9yJiwgYm9vbCBpZ25vcmVUcmFuc2Zvcm1z
KTsKICAgICAgICAgdm9pZCBjbGVhclBsYXRmb3JtU2hhZG93KCk7CiAKICAgICAgICAgaW50IGZv
Y3VzUmluZ1dpZHRoKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCmluZGV4IDU1NGViYjEuLmU2ZTE5
YjAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3ND
b250ZXh0Q2Fpcm8uY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3Jh
cGhpY3NDb250ZXh0Q2Fpcm8uY3BwCkBAIC03ODIsNyArNzgyLDcgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OmNsaXBUb0ltYWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgSW1h
Z2VCdWZmZXIKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4
dDo6c2V0UGxhdGZvcm1TaGFkb3coSW50U2l6ZSBjb25zdCYsIGludCwgQ29sb3IgY29uc3QmKQor
dm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtU2hhZG93KEludFNpemUgY29uc3QmLCBp
bnQsIENvbG9yIGNvbnN0JiwgYm9vbCBpZ25vcmVUcmFuc2Zvcm1zKQogewogICAgIG5vdEltcGxl
bWVudGVkKCk7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dy
YXBoaWNzQ29udGV4dENHLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhp
Y3NDb250ZXh0Q0cuY3BwCmluZGV4IDllN2ZhZmQuLjViMjZiMzggMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCisrKyBiL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCkBAIC02ODEsMjcg
KzY4MSwzNCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKQog
ICAgIG1fZGF0YS0+bV91c2VyVG9EZXZpY2VUcmFuc2Zvcm1Lbm93blRvQmVJZGVudGl0eSA9IGZh
bHNlOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1TaGFkb3coY29uc3Qg
SW50U2l6ZSYgc2l6ZSwgaW50IGJsdXIsIGNvbnN0IENvbG9yJiBjb2xvcikKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpzZXRQbGF0Zm9ybVNoYWRvdyhjb25zdCBJbnRTaXplJiBzaXplLCBpbnQgYmx1
ciwgY29uc3QgQ29sb3ImIGNvbG9yLCBib29sIGlnbm9yZVRyYW5zZm9ybXMpCiB7CiAgICAgaWYg
KHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOworICAgIENHRmxvYXQgd2lkdGgg
PSBzaXplLndpZHRoKCk7CisgICAgQ0dGbG9hdCBoZWlnaHQgPSBzaXplLmhlaWdodCgpOworICAg
IENHRmxvYXQgYmx1clJhZGl1cyA9IGJsdXI7CiAgICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBw
bGF0Zm9ybUNvbnRleHQoKTsKLSAgICBDR0FmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm0gPSBDR0Nv
bnRleHRHZXRDVE0oY29udGV4dCk7CiAKLSAgICBDR0Zsb2F0IEEgPSB0cmFuc2Zvcm0uYSAqIHRy
YW5zZm9ybS5hICsgdHJhbnNmb3JtLmIgKiB0cmFuc2Zvcm0uYjsKLSAgICBDR0Zsb2F0IEIgPSB0
cmFuc2Zvcm0uYSAqIHRyYW5zZm9ybS5jICsgdHJhbnNmb3JtLmIgKiB0cmFuc2Zvcm0uZDsKLSAg
ICBDR0Zsb2F0IEMgPSBCOwotICAgIENHRmxvYXQgRCA9IHRyYW5zZm9ybS5jICogdHJhbnNmb3Jt
LmMgKyB0cmFuc2Zvcm0uZCAqIHRyYW5zZm9ybS5kOworICAgIGlmICghaWdub3JlVHJhbnNmb3Jt
cykgeworICAgICAgICBDR0FmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm0gPSBDR0NvbnRleHRHZXRD
VE0oY29udGV4dCk7CiAKLSAgICBDR0Zsb2F0IHNtYWxsRWlnZW52YWx1ZSA9IG5hcnJvd1ByZWNp
c2lvblRvQ0dGbG9hdChzcXJ0KDAuNSAqICgoQSArIEQpIC0gc3FydCg0ICogQiAqIEMgKyAoQSAt
IEQpICogKEEgLSBEKSkpKSk7CisgICAgICAgIENHRmxvYXQgQSA9IHRyYW5zZm9ybS5hICogdHJh
bnNmb3JtLmEgKyB0cmFuc2Zvcm0uYiAqIHRyYW5zZm9ybS5iOworICAgICAgICBDR0Zsb2F0IEIg
PSB0cmFuc2Zvcm0uYSAqIHRyYW5zZm9ybS5jICsgdHJhbnNmb3JtLmIgKiB0cmFuc2Zvcm0uZDsK
KyAgICAgICAgQ0dGbG9hdCBDID0gQjsKKyAgICAgICAgQ0dGbG9hdCBEID0gdHJhbnNmb3JtLmMg
KiB0cmFuc2Zvcm0uYyArIHRyYW5zZm9ybS5kICogdHJhbnNmb3JtLmQ7CiAKLSAgICAvLyBFeHRy
ZW1lICJibHVyIiB2YWx1ZXMgY2FuIG1ha2UgdGV4dCBkcmF3aW5nIGNyYXNoIG9yIHRha2UgY3Jh
enkgbG9uZyB0aW1lcywgc28gY2xhbXAKLSAgICBDR0Zsb2F0IGJsdXJSYWRpdXMgPSBtaW4oYmx1
ciAqIHNtYWxsRWlnZW52YWx1ZSwgbmFycm93UHJlY2lzaW9uVG9DR0Zsb2F0KDEwMDAuMCkpOwor
ICAgICAgICBDR0Zsb2F0IHNtYWxsRWlnZW52YWx1ZSA9IG5hcnJvd1ByZWNpc2lvblRvQ0dGbG9h
dChzcXJ0KDAuNSAqICgoQSArIEQpIC0gc3FydCg0ICogQiAqIEMgKyAoQSAtIEQpICogKEEgLSBE
KSkpKSk7CiAKLSAgICBDR1NpemUgc2l6ZUluRGV2aWNlU3BhY2UgPSBDR1NpemVBcHBseUFmZmlu
ZVRyYW5zZm9ybShzaXplLCB0cmFuc2Zvcm0pOworICAgICAgICAvLyBFeHRyZW1lICJibHVyIiB2
YWx1ZXMgY2FuIG1ha2UgdGV4dCBkcmF3aW5nIGNyYXNoIG9yIHRha2UgY3JhenkgbG9uZyB0aW1l
cywgc28gY2xhbXAKKyAgICAgICAgYmx1clJhZGl1cyA9IG1pbihibHVyICogc21hbGxFaWdlbnZh
bHVlLCBuYXJyb3dQcmVjaXNpb25Ub0NHRmxvYXQoMTAwMC4wKSk7CiAKLSAgICBDR0Zsb2F0IHdp
ZHRoID0gc2l6ZUluRGV2aWNlU3BhY2Uud2lkdGg7Ci0gICAgQ0dGbG9hdCBoZWlnaHQgPSBzaXpl
SW5EZXZpY2VTcGFjZS5oZWlnaHQ7CisgICAgICAgIENHU2l6ZSBzaXplSW5EZXZpY2VTcGFjZSA9
IENHU2l6ZUFwcGx5QWZmaW5lVHJhbnNmb3JtKHNpemUsIHRyYW5zZm9ybSk7CisKKyAgICAgICAg
d2lkdGggPSBzaXplSW5EZXZpY2VTcGFjZS53aWR0aDsKKyAgICAgICAgaGVpZ2h0ID0gc2l6ZUlu
RGV2aWNlU3BhY2UuaGVpZ2h0OworCisgICAgfQogCiAgICAgLy8gV29yayBhcm91bmQgPHJkYXI6
Ly9wcm9ibGVtLzU1MzkzODg+IGJ5IGVuc3VyaW5nIHRoYXQgdGhlIG9mZnNldHMgd2lsbCBnZXQg
dHJ1bmNhdGVkCiAgICAgLy8gdG8gdGhlIGRlc2lyZWQgaW50ZWdlci4KZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHRRdC5jcHAKaW5kZXggODcwYTY4
OC4uNmViYzkwMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFw
aGljc0NvbnRleHRRdC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFw
aGljc0NvbnRleHRRdC5jcHAKQEAgLTczNyw3ICs3MzcsNyBAQCBGbG9hdFJlY3QgR3JhcGhpY3ND
b250ZXh0Ojpyb3VuZFRvRGV2aWNlUGl4ZWxzKGNvbnN0IEZsb2F0UmVjdCYgZnJlY3QpCiAgICAg
cmV0dXJuIEZsb2F0UmVjdChRUmVjdEYocmVzdWx0KSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250
ZXh0OjpzZXRQbGF0Zm9ybVNoYWRvdyhjb25zdCBJbnRTaXplJiBwb3MsIGludCBibHVyLCBjb25z
dCBDb2xvciAmY29sb3IpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1TaGFkb3co
Y29uc3QgSW50U2l6ZSYgcG9zLCBpbnQgYmx1ciwgY29uc3QgQ29sb3IgJmNvbG9yLCBib29sIGln
bm9yZVRyYW5zZm9ybXMpCiB7CiAgICAgLy8gUXQgZG9lc24ndCBzdXBwb3J0IHNoYWRvd3MgbmF0
aXZlbHksIHRoZXkgYXJlIGRyYXduIG1hbnVhbGx5IGluIHRoZSBkcmF3KgogICAgIC8vIGZ1bmN0
aW9ucwo=
</data>
<flag name="review"
          id="12002"
          type_id="1"
          status="-"
          setter="mitz"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>25782</attachid>
            <date>2008-12-05 12:19:29 -0800</date>
            <delta_ts>2008-12-08 12:52:49 -0800</delta_ts>
            <desc>[1/1] Add a bool to GraphicsContext so that shadows can ignore</desc>
            <filename>-Add-a-bool-to-GraphicsContext-so-that-shadows-can-ignore.patch</filename>
            <type>text/plain</type>
            <size>11426</size>
            <attacher name="Tony Chang">tony</attacher>
            
              <data encoding="base64">YTZlZmI2NmQ5OWE2MmQ0ODk3MjI3Y2ZlYTM0MDAyNDk5ZDkyMDM4NgpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5ZWFhZWMzLi5iMmI3ZDI5
IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDI2IEBACisyMDA4LTEyLTA1ICBUb255IENoYW5nICA8dG9ueUBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
IGEgYm9vbCB0byBHcmFwaGljc0NvbnRleHQgc28gdGhhdCBzaGFkb3dzIGNhbiBpZ25vcmUKKyAg
ICAgICAgdHJhbnNmb3JtYXRpb25zLiAgVGhpcyBpcyBuZWVkZWQgYnkgSFRNTCBjYW52YXMgZWxl
bWVudAorICAgICAgICB3aGVyZSB0aGUgc3BlYyBzYXlzIHNoYWRvd3MgYXJlIGFwcGxpZWQgdy9v
IHRyYW5zZm9ybWF0aW9ucy4KKworICAgICAgICBXQVJOSU5HOiBOTyBURVNUIENBU0VTIEFEREVE
IE9SIENIQU5HRUQKKworICAgICAgICAqIGh0bWwvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U2hhZG93
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6YXBwbHlTaGFk
b3cpOgorICAgICAgICAqIGh0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OmNyZWF0ZUltYWdlQnVmZmVyKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0OjpzZXRTaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0UHJpdmF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0U3RhdGU6OkdyYXBoaWNzQ29udGV4dFN0YXRlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtU2hhZG93KToKKwogMjAwOC0xMi0wNSAgRGVh
biBKYWNrc29uICA8ZGlub0BhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGF2aWQg
SHlhdHQuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
LmNwcCBiL1dlYkNvcmUvaHRtbC9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCmluZGV4IDQ0
MjQxNGYuLjEzYTA5NzcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQu
Y3BwCkBAIC02OTksMTUgKzY5OSw5IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpz
ZXRTaGFkb3coZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgYmx1ciwKICAgICBHcmFw
aGljc0NvbnRleHQqIGMgPSBkcmF3aW5nQ29udGV4dCgpOwogICAgIGlmICghYykKICAgICAgICAg
cmV0dXJuOwotICAgIC8vIEZJWE1FOiBEbyB0aGlzIHRocm91Z2ggcGxhdGZvcm0taW5kZXBlbmRl
bnQgR3JhcGhpY3NDb250ZXh0IEFQSS4KLSNpZiBQTEFURk9STShDRykKLSAgICBjb25zdCBDR0Zs
b2F0IGNvbXBvbmVudHNbMl0gPSB7IGdyYXlMZXZlbCwgMSB9OwotICAgIENHQ29sb3JTcGFjZVJl
ZiBjb2xvclNwYWNlID0gQ0dDb2xvclNwYWNlQ3JlYXRlRGV2aWNlR3JheSgpOwotICAgIENHQ29s
b3JSZWYgY29sb3IgPSBDR0NvbG9yQ3JlYXRlKGNvbG9yU3BhY2UsIGNvbXBvbmVudHMpOwotICAg
IENHQ29sb3JTcGFjZVJlbGVhc2UoY29sb3JTcGFjZSk7Ci0gICAgQ0dDb250ZXh0U2V0U2hhZG93
V2l0aENvbG9yKGMtPnBsYXRmb3JtQ29udGV4dCgpLCBhZGp1c3RlZFNoYWRvd1NpemUod2lkdGgs
IC1oZWlnaHQpLCBibHVyLCBjb2xvcik7Ci0gICAgQ0dDb2xvclJlbGVhc2UoY29sb3IpOwotI2Vu
ZGlmCisKKyAgICBSR0JBMzIgcmdiYSA9IG1ha2VSR0JBMzJGcm9tRmxvYXRzKGdyYXlMZXZlbCwg
Z3JheUxldmVsLCBncmF5TGV2ZWwsIDEuMGYpOworICAgIGMtPnNldFNoYWRvdyhJbnRTaXplKHdp
ZHRoLCAtaGVpZ2h0KSwgc3RhdGUoKS5tX3NoYWRvd0JsdXIsIENvbG9yKHJnYmEpKTsKIH0KIAog
dm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFNoYWRvdyhmbG9hdCB3aWR0aCwgZmxv
YXQgaGVpZ2h0LCBmbG9hdCBibHVyLCBjb25zdCBTdHJpbmcmIGNvbG9yLCBmbG9hdCBhbHBoYSkK
QEAgLTcxOSwyMiArNzEzLDExIEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRT
aGFkb3coZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgYmx1ciwKICAgICBHcmFwaGlj
c0NvbnRleHQqIGMgPSBkcmF3aW5nQ29udGV4dCgpOwogICAgIGlmICghYykKICAgICAgICAgcmV0
dXJuOwotICAgIC8vIEZJWE1FOiBEbyB0aGlzIHRocm91Z2ggcGxhdGZvcm0taW5kZXBlbmRlbnQg
R3JhcGhpY3NDb250ZXh0IEFQSS4KLSNpZiBQTEFURk9STShDRykKKwogICAgIFJHQkEzMiByZ2Jh
ID0gMDsgLy8gZGVmYXVsdCBpcyB0cmFuc3BhcmVudCBibGFjawotICAgIENTU1BhcnNlcjo6cGFy
c2VDb2xvcihyZ2JhLCBjb2xvcik7Ci0gICAgY29uc3QgQ0dGbG9hdCBjb21wb25lbnRzWzRdID0g
ewotICAgICAgICAoKHJnYmEgPj4gMTYpICYgMHhGRikgLyAyNTUuMGYsCi0gICAgICAgICgocmdi
YSA+PiA4KSAmIDB4RkYpIC8gMjU1LjBmLAotICAgICAgICAocmdiYSAmIDB4RkYpIC8gMjU1LjBm
LAotICAgICAgICBhbHBoYQotICAgIH07Ci0gICAgQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2Ug
PSBDR0NvbG9yU3BhY2VDcmVhdGVEZXZpY2VSR0IoKTsKLSAgICBDR0NvbG9yUmVmIHNoYWRvd0Nv
bG9yID0gQ0dDb2xvckNyZWF0ZShjb2xvclNwYWNlLCBjb21wb25lbnRzKTsKLSAgICBDR0NvbG9y
U3BhY2VSZWxlYXNlKGNvbG9yU3BhY2UpOwotICAgIENHQ29udGV4dFNldFNoYWRvd1dpdGhDb2xv
cihjLT5wbGF0Zm9ybUNvbnRleHQoKSwgYWRqdXN0ZWRTaGFkb3dTaXplKHdpZHRoLCAtaGVpZ2h0
KSwgYmx1ciwgc2hhZG93Q29sb3IpOwotICAgIENHQ29sb3JSZWxlYXNlKHNoYWRvd0NvbG9yKTsK
LSNlbmRpZgorICAgIGlmICghc3RhdGUoKS5tX3NoYWRvd0NvbG9yLmlzRW1wdHkoKSkKKyAgICAg
ICAgQ1NTUGFyc2VyOjpwYXJzZUNvbG9yKHJnYmEsIHN0YXRlKCkubV9zaGFkb3dDb2xvcik7Cisg
ICAgYy0+c2V0U2hhZG93KEludFNpemUod2lkdGgsIC1oZWlnaHQpLCBzdGF0ZSgpLm1fc2hhZG93
Qmx1ciwgQ29sb3IoY29sb3JXaXRoT3ZlcnJpZGVBbHBoYShyZ2JhLCBhbHBoYSkpKTsKIH0KIAog
dm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFNoYWRvdyhmbG9hdCB3aWR0aCwgZmxv
YXQgaGVpZ2h0LCBmbG9hdCBibHVyLCBmbG9hdCBncmF5TGV2ZWwsIGZsb2F0IGFscGhhKQpAQCAt
NzQ2LDE1ICs3MjksOSBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U2hhZG93
KGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0IGJsdXIsCiAgICAgR3JhcGhpY3NDb250
ZXh0KiBjID0gZHJhd2luZ0NvbnRleHQoKTsKICAgICBpZiAoIWMpCiAgICAgICAgIHJldHVybjsK
LSAgICAvLyBGSVhNRTogRG8gdGhpcyB0aHJvdWdoIHBsYXRmb3JtLWluZGVwZW5kZW50IEdyYXBo
aWNzQ29udGV4dCBBUEkuCi0jaWYgUExBVEZPUk0oQ0cpCi0gICAgY29uc3QgQ0dGbG9hdCBjb21w
b25lbnRzWzJdID0geyBncmF5TGV2ZWwsIGFscGhhIH07Ci0gICAgQ0dDb2xvclNwYWNlUmVmIGNv
bG9yU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVEZXZpY2VHcmF5KCk7Ci0gICAgQ0dDb2xvclJl
ZiBjb2xvciA9IENHQ29sb3JDcmVhdGUoY29sb3JTcGFjZSwgY29tcG9uZW50cyk7Ci0gICAgQ0dD
b2xvclNwYWNlUmVsZWFzZShjb2xvclNwYWNlKTsKLSAgICBDR0NvbnRleHRTZXRTaGFkb3dXaXRo
Q29sb3IoYy0+cGxhdGZvcm1Db250ZXh0KCksIGFkanVzdGVkU2hhZG93U2l6ZSh3aWR0aCwgLWhl
aWdodCksIGJsdXIsIGNvbG9yKTsKLSAgICBDR0NvbG9yUmVsZWFzZShjb2xvcik7Ci0jZW5kaWYK
KworICAgIFJHQkEzMiByZ2JhID0gbWFrZVJHQkEzMkZyb21GbG9hdHMoZ3JheUxldmVsLCBncmF5
TGV2ZWwsIGdyYXlMZXZlbCwgYWxwaGEpOworICAgIGMtPnNldFNoYWRvdyhJbnRTaXplKHdpZHRo
LCAtaGVpZ2h0KSwgc3RhdGUoKS5tX3NoYWRvd0JsdXIsIENvbG9yKHJnYmEpKTsKIH0KIAogdm9p
ZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFNoYWRvdyhmbG9hdCB3aWR0aCwgZmxvYXQg
aGVpZ2h0LCBmbG9hdCBibHVyLCBmbG9hdCByLCBmbG9hdCBnLCBmbG9hdCBiLCBmbG9hdCBhKQpA
QCAtNzY2LDE1ICs3NDMsMTEgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFNo
YWRvdyhmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBmbG9hdCBibHVyLAogICAgIEdyYXBoaWNz
Q29udGV4dCogYyA9IGRyYXdpbmdDb250ZXh0KCk7CiAgICAgaWYgKCFjKQogICAgICAgICByZXR1
cm47Ci0gICAgLy8gRklYTUU6IERvIHRoaXMgdGhyb3VnaCBwbGF0Zm9ybS1pbmRlcGVuZGVudCBH
cmFwaGljc0NvbnRleHQgQVBJLgotI2lmIFBMQVRGT1JNKENHKQotICAgIGNvbnN0IENHRmxvYXQg
Y29tcG9uZW50c1s0XSA9IHsgciwgZywgYiwgYSB9OwotICAgIENHQ29sb3JTcGFjZVJlZiBjb2xv
clNwYWNlID0gQ0dDb2xvclNwYWNlQ3JlYXRlRGV2aWNlUkdCKCk7Ci0gICAgQ0dDb2xvclJlZiBz
aGFkb3dDb2xvciA9IENHQ29sb3JDcmVhdGUoY29sb3JTcGFjZSwgY29tcG9uZW50cyk7Ci0gICAg
Q0dDb2xvclNwYWNlUmVsZWFzZShjb2xvclNwYWNlKTsKLSAgICBDR0NvbnRleHRTZXRTaGFkb3dX
aXRoQ29sb3IoYy0+cGxhdGZvcm1Db250ZXh0KCksIGFkanVzdGVkU2hhZG93U2l6ZSh3aWR0aCwg
LWhlaWdodCksIGJsdXIsIHNoYWRvd0NvbG9yKTsKLSAgICBDR0NvbG9yUmVsZWFzZShzaGFkb3dD
b2xvcik7Ci0jZW5kaWYKKworICAgIFJHQkEzMiByZ2JhID0gbWFrZVJHQkEzMkZyb21GbG9hdHMo
ciwgZywgYiwgYSk7IC8vIGRlZmF1bHQgaXMgdHJhbnNwYXJlbnQgYmxhY2sKKyAgICBpZiAoIXN0
YXRlKCkubV9zaGFkb3dDb2xvci5pc0VtcHR5KCkpCisgICAgICAgIENTU1BhcnNlcjo6cGFyc2VD
b2xvcihyZ2JhLCBzdGF0ZSgpLm1fc2hhZG93Q29sb3IpOworICAgIGMtPnNldFNoYWRvdyhJbnRT
aXplKHdpZHRoLCAtaGVpZ2h0KSwgc3RhdGUoKS5tX3NoYWRvd0JsdXIsIENvbG9yKHJnYmEpKTsK
IH0KIAogdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFNoYWRvdyhmbG9hdCB3aWR0
aCwgZmxvYXQgaGVpZ2h0LCBmbG9hdCBibHVyLCBmbG9hdCBjLCBmbG9hdCBtLCBmbG9hdCB5LCBm
bG9hdCBrLCBmbG9hdCBhKQpAQCAtODEwLDI0ICs3ODMsMTMgQEAgdm9pZCBDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQ6OmFwcGx5U2hhZG93KCkKICAgICBHcmFwaGljc0NvbnRleHQqIGMgPSBkcmF3
aW5nQ29udGV4dCgpOwogICAgIGlmICghYykKICAgICAgICAgcmV0dXJuOwotICAgIC8vIEZJWE1F
OiBEbyB0aGlzIHRocm91Z2ggcGxhdGZvcm0taW5kZXBlbmRlbnQgR3JhcGhpY3NDb250ZXh0IEFQ
SS4KLSNpZiBQTEFURk9STShDRykKKwogICAgIFJHQkEzMiByZ2JhID0gMDsgLy8gZGVmYXVsdCBp
cyB0cmFuc3BhcmVudCBibGFjawogICAgIGlmICghc3RhdGUoKS5tX3NoYWRvd0NvbG9yLmlzRW1w
dHkoKSkKICAgICAgICAgQ1NTUGFyc2VyOjpwYXJzZUNvbG9yKHJnYmEsIHN0YXRlKCkubV9zaGFk
b3dDb2xvcik7Ci0gICAgY29uc3QgQ0dGbG9hdCBjb21wb25lbnRzWzRdID0gewotICAgICAgICAo
KHJnYmEgPj4gMTYpICYgMHhGRikgLyAyNTUuMGYsCi0gICAgICAgICgocmdiYSA+PiA4KSAmIDB4
RkYpIC8gMjU1LjBmLAotICAgICAgICAocmdiYSAmIDB4RkYpIC8gMjU1LjBmLAotICAgICAgICAo
KHJnYmEgPj4gMjQpICYgMHhGRikgLyAyNTUuMGYKLSAgICB9OwotICAgIENHQ29sb3JTcGFjZVJl
ZiBjb2xvclNwYWNlID0gQ0dDb2xvclNwYWNlQ3JlYXRlRGV2aWNlUkdCKCk7Ci0gICAgQ0dDb2xv
clJlZiBjb2xvciA9IENHQ29sb3JDcmVhdGUoY29sb3JTcGFjZSwgY29tcG9uZW50cyk7Ci0gICAg
Q0dDb2xvclNwYWNlUmVsZWFzZShjb2xvclNwYWNlKTsKLQotICAgIENHQ29udGV4dFNldFNoYWRv
d1dpdGhDb2xvcihjLT5wbGF0Zm9ybUNvbnRleHQoKSwgYWRqdXN0ZWRTaGFkb3dTaXplKHN0YXRl
KCkubV9zaGFkb3dPZmZzZXQud2lkdGgoKSwgLXN0YXRlKCkubV9zaGFkb3dPZmZzZXQuaGVpZ2h0
KCkpLCBzdGF0ZSgpLm1fc2hhZG93Qmx1ciwgY29sb3IpOwotICAgIENHQ29sb3JSZWxlYXNlKGNv
bG9yKTsKLSNlbmRpZgorICAgIGZsb2F0IHdpZHRoID0gc3RhdGUoKS5tX3NoYWRvd09mZnNldC53
aWR0aCgpOworICAgIGZsb2F0IGhlaWdodCA9IHN0YXRlKCkubV9zaGFkb3dPZmZzZXQuaGVpZ2h0
KCk7CisgICAgYy0+c2V0U2hhZG93KEludFNpemUod2lkdGgsIC1oZWlnaHQpLCBzdGF0ZSgpLm1f
c2hhZG93Qmx1ciwgQ29sb3IocmdiYSkpOwogfQogCiBzdGF0aWMgSW50U2l6ZSBzaXplKEhUTUxJ
bWFnZUVsZW1lbnQqIGltYWdlKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNF
bGVtZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKaW5kZXggNmM4
ZmUzNC4uNDc2ZmY4OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50
LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCkBAIC0yNTQsNiAr
MjU0LDggQEAgdm9pZCBIVE1MQ2FudmFzRWxlbWVudDo6Y3JlYXRlSW1hZ2VCdWZmZXIoKSBjb25z
dAogICAgIGlmICghc2l6ZS53aWR0aCgpIHx8ICFzaXplLmhlaWdodCgpKQogICAgICAgICByZXR1
cm47CiAgICAgbV9pbWFnZUJ1ZmZlci5zZXQoSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCBmYWxz
ZSkucmVsZWFzZSgpKTsKKworICAgIG1faW1hZ2VCdWZmZXItPmNvbnRleHQoKS0+c2V0U2hhZG93
c0lnbm9yZVRyYW5zZm9ybXModHJ1ZSk7CiB9CiAKIEdyYXBoaWNzQ29udGV4dCogSFRNTENhbnZh
c0VsZW1lbnQ6OmRyYXdpbmdDb250ZXh0KCkgY29uc3QKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAppbmRleCA5Y2QyOTY5Li40MWNjZGNmIDEwMDY0NAot
LS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKKysrIGIv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCkBAIC0yNTUsNiAr
MjU1LDExIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRGaWxsR3JhZGllbnQoUGFzc1JlZlB0
cjxHcmFkaWVudD4gZ3JhZGllbnQpCiAgICAgbV9jb21tb24tPnN0YXRlLmZpbGxHcmFkaWVudCA9
IGdyYWRpZW50OwogfQogCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0U2hhZG93c0lnbm9yZVRy
YW5zZm9ybXMoYm9vbCBpZ25vcmVUcmFuc2Zvcm1zKQoreworICAgIG1fY29tbW9uLT5zdGF0ZS5z
aGFkb3dzSWdub3JlVHJhbnNmb3JtcyA9IGlnbm9yZVRyYW5zZm9ybXM7Cit9CisKIGJvb2wgR3Jh
cGhpY3NDb250ZXh0Ojp1cGRhdGluZ0NvbnRyb2xUaW50cygpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IG1fY29tbW9uLT5tX3VwZGF0aW5nQ29udHJvbFRpbnRzOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKaW5kZXggNGRkZjQ2ZC4uN2JmMWFhZSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAorKysgYi9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCkBAIC0xNjAsNiArMTYwLDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHNldEZpbGxDb2xvcihjb25zdCBD
b2xvciYpOwogICAgICAgICB2b2lkIHNldEZpbGxQYXR0ZXJuKFBhc3NSZWZQdHI8UGF0dGVybj4p
OwogICAgICAgICB2b2lkIHNldEZpbGxHcmFkaWVudChQYXNzUmVmUHRyPEdyYWRpZW50Pik7Cisg
ICAgICAgIHZvaWQgc2V0U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoYm9vbCk7CiAKICAgICAgICAg
dm9pZCBzYXZlKCk7CiAgICAgICAgIHZvaWQgcmVzdG9yZSgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRQcml2YXRlLmggYi9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dFByaXZhdGUuaAppbmRleCA1MDc4MjVkLi5k
ZmNjNmFhIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dFByaXZhdGUuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dFByaXZhdGUuaApAQCAtNjEsNiArNjEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgICAgICAsIGZpbGxDb2xvcihDb2xvcjo6YmxhY2spCiAgICAgICAgICAgICAsIHBhaW50aW5n
RGlzYWJsZWQoZmFsc2UpCiAgICAgICAgICAgICAsIHNoYWRvd0JsdXIoMCkKKyAgICAgICAgICAg
ICwgc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoZmFsc2UpCiAgICAgICAgIHsKICAgICAgICAgfQog
CkBAIC05MSw2ICs5Miw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgSW50U2l6ZSBz
aGFkb3dTaXplOwogICAgICAgICB1bnNpZ25lZCBzaGFkb3dCbHVyOwogICAgICAgICBDb2xvciBz
aGFkb3dDb2xvcjsKKworICAgICAgICBib29sIHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOwogICAg
IH07CiAKICAgICBjbGFzcyBHcmFwaGljc0NvbnRleHRQcml2YXRlIHsKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKaW5kZXggOWU3ZmFm
ZC4uYWIyMjZlZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFw
aGljc0NvbnRleHRDRy5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFw
aGljc0NvbnRleHRDRy5jcHAKQEAgLTY4NSwyMyArNjg1LDMwIEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0OjpzZXRQbGF0Zm9ybVNoYWRvdyhjb25zdCBJbnRTaXplJiBzaXplLCBpbnQgYmx1ciwgY29u
c3QgQ29sCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwor
ICAgIENHRmxvYXQgd2lkdGggPSBzaXplLndpZHRoKCk7CisgICAgQ0dGbG9hdCBoZWlnaHQgPSBz
aXplLmhlaWdodCgpOworICAgIENHRmxvYXQgYmx1clJhZGl1cyA9IGJsdXI7CiAgICAgQ0dDb250
ZXh0UmVmIGNvbnRleHQgPSBwbGF0Zm9ybUNvbnRleHQoKTsKLSAgICBDR0FmZmluZVRyYW5zZm9y
bSB0cmFuc2Zvcm0gPSBDR0NvbnRleHRHZXRDVE0oY29udGV4dCk7CiAKLSAgICBDR0Zsb2F0IEEg
PSB0cmFuc2Zvcm0uYSAqIHRyYW5zZm9ybS5hICsgdHJhbnNmb3JtLmIgKiB0cmFuc2Zvcm0uYjsK
LSAgICBDR0Zsb2F0IEIgPSB0cmFuc2Zvcm0uYSAqIHRyYW5zZm9ybS5jICsgdHJhbnNmb3JtLmIg
KiB0cmFuc2Zvcm0uZDsKLSAgICBDR0Zsb2F0IEMgPSBCOwotICAgIENHRmxvYXQgRCA9IHRyYW5z
Zm9ybS5jICogdHJhbnNmb3JtLmMgKyB0cmFuc2Zvcm0uZCAqIHRyYW5zZm9ybS5kOworICAgIGlm
ICghbV9jb21tb24tPnN0YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKSB7CisgICAgICAgIENH
QWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybSA9IENHQ29udGV4dEdldENUTShjb250ZXh0KTsKIAot
ICAgIENHRmxvYXQgc21hbGxFaWdlbnZhbHVlID0gbmFycm93UHJlY2lzaW9uVG9DR0Zsb2F0KHNx
cnQoMC41ICogKChBICsgRCkgLSBzcXJ0KDQgKiBCICogQyArIChBIC0gRCkgKiAoQSAtIEQpKSkp
KTsKKyAgICAgICAgQ0dGbG9hdCBBID0gdHJhbnNmb3JtLmEgKiB0cmFuc2Zvcm0uYSArIHRyYW5z
Zm9ybS5iICogdHJhbnNmb3JtLmI7CisgICAgICAgIENHRmxvYXQgQiA9IHRyYW5zZm9ybS5hICog
dHJhbnNmb3JtLmMgKyB0cmFuc2Zvcm0uYiAqIHRyYW5zZm9ybS5kOworICAgICAgICBDR0Zsb2F0
IEMgPSBCOworICAgICAgICBDR0Zsb2F0IEQgPSB0cmFuc2Zvcm0uYyAqIHRyYW5zZm9ybS5jICsg
dHJhbnNmb3JtLmQgKiB0cmFuc2Zvcm0uZDsKIAotICAgIC8vIEV4dHJlbWUgImJsdXIiIHZhbHVl
cyBjYW4gbWFrZSB0ZXh0IGRyYXdpbmcgY3Jhc2ggb3IgdGFrZSBjcmF6eSBsb25nIHRpbWVzLCBz
byBjbGFtcAotICAgIENHRmxvYXQgYmx1clJhZGl1cyA9IG1pbihibHVyICogc21hbGxFaWdlbnZh
bHVlLCBuYXJyb3dQcmVjaXNpb25Ub0NHRmxvYXQoMTAwMC4wKSk7CisgICAgICAgIENHRmxvYXQg
c21hbGxFaWdlbnZhbHVlID0gbmFycm93UHJlY2lzaW9uVG9DR0Zsb2F0KHNxcnQoMC41ICogKChB
ICsgRCkgLSBzcXJ0KDQgKiBCICogQyArIChBIC0gRCkgKiAoQSAtIEQpKSkpKTsKIAotICAgIENH
U2l6ZSBzaXplSW5EZXZpY2VTcGFjZSA9IENHU2l6ZUFwcGx5QWZmaW5lVHJhbnNmb3JtKHNpemUs
IHRyYW5zZm9ybSk7CisgICAgICAgIC8vIEV4dHJlbWUgImJsdXIiIHZhbHVlcyBjYW4gbWFrZSB0
ZXh0IGRyYXdpbmcgY3Jhc2ggb3IgdGFrZSBjcmF6eSBsb25nIHRpbWVzLCBzbyBjbGFtcAorICAg
ICAgICBibHVyUmFkaXVzID0gbWluKGJsdXIgKiBzbWFsbEVpZ2VudmFsdWUsIG5hcnJvd1ByZWNp
c2lvblRvQ0dGbG9hdCgxMDAwLjApKTsKIAotICAgIENHRmxvYXQgd2lkdGggPSBzaXplSW5EZXZp
Y2VTcGFjZS53aWR0aDsKLSAgICBDR0Zsb2F0IGhlaWdodCA9IHNpemVJbkRldmljZVNwYWNlLmhl
aWdodDsKKyAgICAgICAgQ0dTaXplIHNpemVJbkRldmljZVNwYWNlID0gQ0dTaXplQXBwbHlBZmZp
bmVUcmFuc2Zvcm0oc2l6ZSwgdHJhbnNmb3JtKTsKKworICAgICAgICB3aWR0aCA9IHNpemVJbkRl
dmljZVNwYWNlLndpZHRoOworICAgICAgICBoZWlnaHQgPSBzaXplSW5EZXZpY2VTcGFjZS5oZWln
aHQ7CisKKyAgICB9CiAKICAgICAvLyBXb3JrIGFyb3VuZCA8cmRhcjovL3Byb2JsZW0vNTUzOTM4
OD4gYnkgZW5zdXJpbmcgdGhhdCB0aGUgb2Zmc2V0cyB3aWxsIGdldCB0cnVuY2F0ZWQKICAgICAv
LyB0byB0aGUgZGVzaXJlZCBpbnRlZ2VyLgo=
</data>
<flag name="review"
          id="12070"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>