<?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>28167</bug_id>
          
          <creation_ts>2009-08-10 14:48:49 -0700</creation_ts>
          <short_desc>WINCE PORT: Implement ImageBuffer</short_desc>
          <delta_ts>2009-09-02 08:19:45 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>Other</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>
          
          <blocked>27511</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Yong Li">yong.li.webkit</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric</cc>
    
    <cc>manyoso</cc>
    
    <cc>pkasting</cc>
    
    <cc>staikos</cc>
    
    <cc>yong.li.webkit</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>138828</commentid>
    <comment_count>0</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2009-08-10 14:48:49 -0700</bug_when>
    <thetext>separated from bug 27511</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>138834</commentid>
    <comment_count>1</comment_count>
      <attachid>34519</attachid>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2009-08-10 15:04:45 -0700</bug_when>
    <thetext>Created attachment 34519
the patch

modified according to Eric&apos;s suggestion</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>139003</commentid>
    <comment_count>2</comment_count>
      <attachid>34519</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-11 09:54:44 -0700</bug_when>
    <thetext>Comment on attachment 34519
the patch

You mentioned in the other bug, that BufferedImage could be implemented by BitmapImage by implementing a BitmapImage(NativeImagePtr) constructor.  Why would we not want to do that?  I expect you could encounter later porting problems being the only port with a special BitmapImage-like-thing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>139007</commentid>
    <comment_count>3</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2009-08-11 10:04:31 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 34519 [details])
&gt; You mentioned in the other bug, that BufferedImage could be implemented by
&gt; BitmapImage by implementing a BitmapImage(NativeImagePtr) constructor.  Why
&gt; would we not want to do that?  I expect you could encounter later porting
&gt; problems being the only port with a special BitmapImage-like-thing.

Because I think that is ugly. BitmapImage is too powerful. It is designed to receive encoded image data, decode the data with ImageSource, display the frames even they are just partially decoded, and animate with multiple frames and correct time intervals...

All of these are not necessary for ImageBuffer. ImageBuffer just holds a single-frame flat decoded buffer (or platform native image). That&apos;s why ImageBuffer::image() returns Image* but not BitmapImage*, because BitmapImage is much more than necessary.

So I think other ports should also do the similiar thing: using a light class like BufferedImage. It is very simple, and doesn&apos;t required too much coding.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>139014</commentid>
    <comment_count>4</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2009-08-11 10:13:46 -0700</bug_when>
    <thetext>Furthermore, I think the best way is let ImageBuffer be a subclass of Image. It&apos;s just used for rendering purpose</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>139028</commentid>
    <comment_count>5</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-11 10:27:07 -0700</bug_when>
    <thetext>ImageBuffer and Image are used for different things.  ImageBuffer is a bag of bytes, designed to store image data, and used for things which need direct access to bit maps.  Image is an opaque image pointer which could be backed by an ImageBuffer, or any other sort of storage.  Image might also not even be a bitmap image (in the case of SVG or PDF), so it might not have a fixed size.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>139965</commentid>
    <comment_count>6</comment_count>
      <attachid>34765</attachid>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2009-08-13 12:21:17 -0700</bug_when>
    <thetext>Created attachment 34765
updated

updated to implement premultiplied getting and putting image data</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144093</commentid>
    <comment_count>7</comment_count>
      <attachid>34765</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-09-01 18:35:16 -0700</bug_when>
    <thetext>Comment on attachment 34765
updated

Why is BufferedImage specific to WINCE?  That seems like a general concept that should be factored out and shared with the other ports if it&apos;s useful.  Also, it violates the &quot;one class per file&quot; rule.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144096</commentid>
    <comment_count>8</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2009-09-01 18:46:50 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 34765 [details])
&gt; Why is BufferedImage specific to WINCE?  That seems like a general concept that
&gt; should be factored out and shared with the other ports if it&apos;s useful.  Also,
&gt; it violates the &quot;one class per file&quot; rule.

Is this the reason for r-?

Where&apos;s the &quot;one class per file&quot; rule? If there is, I can find hundreds of violations.

Why is contributing to webkit so difficult?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144103</commentid>
    <comment_count>9</comment_count>
    <who name="George Staikos">staikos</who>
    <bug_when>2009-09-01 20:20:37 -0700</bug_when>
    <thetext>The approach we&apos;ve taken is that if something isn&apos;t 100% clearly a benefit to all platforms, we kept it as WINCE and then left it possible to move it to an ENABLE(feature) or unconditional code later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144206</commentid>
    <comment_count>10</comment_count>
      <attachid>34765</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-09-02 08:04:41 -0700</bug_when>
    <thetext>Comment on attachment 34765
updated

Based on the webkit-dev discussion and George&apos;s comment above, this patch is probably fine.  I&apos;m not in love with this code

+ *dst++ = static_cast&lt;unsigned char&gt;((red * alpha + 254) / 255);

but I think it&apos;s ok for a first pass.

Thanks for your patience.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144207</commentid>
    <comment_count>11</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2009-09-02 08:10:41 -0700</bug_when>
    <thetext>Thanks a lot. sorry for my languages</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144209</commentid>
    <comment_count>12</comment_count>
      <attachid>34765</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-02 08:16:17 -0700</bug_when>
    <thetext>Comment on attachment 34765
updated

Rejecting patch 34765 from commit-queue.  This patch will require manual commit.

[&apos;WebKitTools/Scripts/run-webkit-tests&apos;, &apos;--no-launch-safari&apos;, &apos;--quiet&apos;, &apos;--exit-after-n-failures=1&apos;] failed with exit code 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144210</commentid>
    <comment_count>13</comment_count>
      <attachid>34765</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-09-02 08:19:39 -0700</bug_when>
    <thetext>Comment on attachment 34765
updated

Clearing flags on attachment: 34765

Committed r47968: &lt;http://trac.webkit.org/changeset/47968&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144211</commentid>
    <comment_count>14</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-09-02 08:19:45 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34519</attachid>
            <date>2009-08-10 15:04:45 -0700</date>
            <delta_ts>2009-08-13 12:21:17 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>28167.patch</filename>
            <type>text/plain</type>
            <size>9256</size>
            <attacher name="Yong Li">yong.li.webkit</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
M2FmYzgyNS4uODc2NmZmMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAwOS0wOC0wOCAgWW9uZyBMaSAgPHlv
bmcubGlAdG9yY2htb2JpbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFdJTkNFIFBPUlQ6IEltcGxlbWVudCBJbWFnZUJ1ZmZlciBmb3IgV0lO
Q0UKKyAgICAgICAgSW1wbGVtZW50IEltYWdlIGludGVyZmFjZSB3aXRoIGEgbGlnaHQgY2xhc3Mg
QnVmZmVyZWRJbWFnZQorICAgICAgICBmb3IgcmVuZGVyaW5nIEltYWdlQnVmZmVyCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yODE2NworCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvSW1hZ2VCdWZmZXJEYXRhLmg6IEFkZGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0ltYWdlQnVmZmVyV2luY2UuY3BwOiBBZGRl
ZC4KKwogMjAwOS0wOC0wNiAgWW9uZyBMaSAgPHlvbmcubGlAdG9yY2htb2JpbGUuY29tPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW5jZS9JbWFnZUJ1ZmZlckRhdGEuaCBiL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luY2UvSW1hZ2VCdWZmZXJEYXRhLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uMDFiN2QwNgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luY2UvSW1hZ2VCdWZmZXJEYXRhLmgKQEAgLTAsMCArMSwzNCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAwOSBUb3JjaCBNb2JpbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAq
ICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
KyAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAg
SWYgbm90LCB3cml0ZSB0bworICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiAgQm9zdG9uLCBNQSAwMjExMC0x
MzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBJbWFnZUJ1ZmZlckRhdGFfaAorI2RlZmluZSBJbWFn
ZUJ1ZmZlckRhdGFfaAorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICBjbGFzcyBJbnRTaXpl
OworICAgIGNsYXNzIEltYWdlQnVmZmVyRGF0YSB7CisgICAgcHVibGljOgorICAgICAgICBJbWFn
ZUJ1ZmZlckRhdGEoY29uc3QgSW50U2l6ZSYgc2l6ZSk7CisgICAgICAgIFJlZlB0cjxTaGFyZWRC
aXRtYXA+IG1fYml0bWFwOworICAgIH07CisKK30gIC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAgLy8gSW1hZ2VCdWZmZXJEYXRhX2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luY2UvSW1hZ2VCdWZmZXJXaW5jZS5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbmNlL0ltYWdlQnVmZmVyV2luY2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjcxNWZhNDkKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbmNlL0ltYWdlQnVmZmVyV2luY2UuY3BwCkBAIC0wLDAgKzEsMjAxIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDA5IFRvcmNoIE1vYmlsZSwgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgor
ICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZQorICogIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIu
ICBJZiBub3QsIHdyaXRlIHRvCisgKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqICBCb3N0b24sIE1BIDAyMTEw
LTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW1hZ2VC
dWZmZXIuaCIKKworI2luY2x1ZGUgIkJhc2U2NC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4
dC5oIgorI2luY2x1ZGUgIkltYWdlLmgiCisjaW5jbHVkZSAiSW1hZ2VEYXRhLmgiCisjaW5jbHVk
ZSAiSlBFR0VuY29kZXIuaCIKKyNpbmNsdWRlICJQTkdFbmNvZGVyLmgiCisjaW5jbHVkZSAiU2hh
cmVkQml0bWFwLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQnVmZmVyZWRJbWFn
ZTogcHVibGljIEltYWdlIHsKKworcHVibGljOgorICAgIEJ1ZmZlcmVkSW1hZ2UoY29uc3QgSW1h
Z2VCdWZmZXJEYXRhKiBkYXRhKQorICAgICAgICA6IG1fZGF0YShkYXRhKQorICAgIHsKKyAgICB9
CisKKyAgICB2aXJ0dWFsIEludFNpemUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIEludFNpemUobV9k
YXRhLT5tX2JpdG1hcC0+d2lkdGgoKSwgbV9kYXRhLT5tX2JpdG1hcC0+aGVpZ2h0KCkpOyB9Cisg
ICAgdmlydHVhbCB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YShib29sIGRlc3Ryb3lBbGwgPSB0cnVl
KSB7fQorICAgIHZpcnR1YWwgdW5zaWduZWQgZGVjb2RlZFNpemUoKSBjb25zdCB7IHJldHVybiAw
OyB9CisgICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRS
ZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9y
KTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0KiwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcGF0dGVyblRy
YW5zZm9ybSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRmxvYXRQb2ludCYg
cGhhc2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KTsKKwor
ICAgIGNvbnN0IEltYWdlQnVmZmVyRGF0YSogbV9kYXRhOworfTsKKwordm9pZCBCdWZmZXJlZElt
YWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9w
KQoreworICAgIEludFJlY3QgaW50RHN0UmVjdCA9IGVuY2xvc2luZ0ludFJlY3QoZHN0UmVjdCk7
CisgICAgSW50UmVjdCBpbnRTcmNSZWN0KHNyY1JlY3QpOworICAgIG1fZGF0YS0+bV9iaXRtYXAt
PmRyYXcoY3R4dCwgaW50RHN0UmVjdCwgaW50U3JjUmVjdCwgY29tcG9zaXRlT3ApOworfQorCit2
b2lkIEJ1ZmZlcmVkSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogY3R4dCwgY29u
c3QgRmxvYXRSZWN0JiB0aWxlUmVjdEluLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcGF0
dGVyblRyYW5zZm9ybSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRmxvYXRQ
b2ludCYgcGhhc2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0KQoreworICAgIG1fZGF0YS0+bV9iaXRtYXAtPmRyYXdQYXR0ZXJuKGN0eHQsIHRpbGVSZWN0
SW4sIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBvcCwgZGVzdFJlY3QsIHNpemUoKSk7Cit9CisK
K0ltYWdlQnVmZmVyRGF0YTo6SW1hZ2VCdWZmZXJEYXRhKGNvbnN0IEludFNpemUmIHNpemUpCis6
IG1fYml0bWFwKFNoYXJlZEJpdG1hcDo6Y3JlYXRlSW5zdGFuY2UoZmFsc2UsIHNpemUud2lkdGgo
KSwgc2l6ZS5oZWlnaHQoKSwgZmFsc2UpKQoreworICAgIC8vIGh0dHA6Ly93d3cudzMub3JnL1RS
LzIwMDkvV0QtaHRtbDUtMjAwOTAyMTIvdGhlLWNhbnZhcy1lbGVtZW50Lmh0bWwjY2FudmFzcGl4
ZWxhcnJheQorICAgIC8vICJXaGVuIHRoZSBjYW52YXMgaXMgaW5pdGlhbGl6ZWQgaXQgbXVzdCBi
ZSBzZXQgdG8gZnVsbHkgdHJhbnNwYXJlbnQgYmxhY2suIgorICAgIG1fYml0bWFwLT5yZXNldFBp
eGVscyh0cnVlKTsKKyAgICBtX2JpdG1hcC0+c2V0SGFzQWxwaGEodHJ1ZSk7Cit9CisKK0ltYWdl
QnVmZmVyOjpJbWFnZUJ1ZmZlcihjb25zdCBJbnRTaXplJiBzaXplLCBib29sIGdyYXlTY2FsZSwg
Ym9vbCYgc3VjY2VzcykKKyAgICA6IG1fZGF0YShzaXplKQorICAgICwgbV9zaXplKHNpemUpCit7
CisgICAgLy8gRklYTUU6IGdyYXlTY2FsZSBpcyBub3Qgc3VwcG9ydGVkCisgICAgVU5VU0VEX1BB
UkFNKGdyYXlTY2FsZSk7CisKKyAgICBtX2NvbnRleHQuc2V0KG5ldyBHcmFwaGljc0NvbnRleHQo
MCkpOworICAgIG1fY29udGV4dC0+c2V0Qml0bWFwKG1fZGF0YS5tX2JpdG1hcCk7CisgICAgc3Vj
Y2VzcyA9IHRydWU7Cit9CisKK0ltYWdlQnVmZmVyOjp+SW1hZ2VCdWZmZXIoKQoreworfQorCitH
cmFwaGljc0NvbnRleHQqIEltYWdlQnVmZmVyOjpjb250ZXh0KCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9jb250ZXh0LmdldCgpOworfQorCitJbWFnZSogSW1hZ2VCdWZmZXI6OmltYWdlKCkgY29u
c3QKK3sKKyAgICBpZiAoIW1faW1hZ2UpCisgICAgICAgIG1faW1hZ2UgPSBhZG9wdFJlZihuZXcg
QnVmZmVyZWRJbWFnZSgmbV9kYXRhKSk7CisKKyAgICByZXR1cm4gbV9pbWFnZS5nZXQoKTsKK30K
KworUGFzc1JlZlB0cjxJbWFnZURhdGE+IEltYWdlQnVmZmVyOjpnZXRJbWFnZURhdGEoY29uc3Qg
SW50UmVjdCYgcmVjdCkgY29uc3QKK3sKKyAgICBQYXNzUmVmUHRyPEltYWdlRGF0YT4gaW1hZ2VE
YXRhID0gSW1hZ2VEYXRhOjpjcmVhdGUocmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKKwor
ICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIHNyYyA9IHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVk
IGNoYXIqPihtX2RhdGEubV9iaXRtYXAtPmJ5dGVzKCkpOworICAgIGlmICghc3JjKQorICAgICAg
ICByZXR1cm4gaW1hZ2VEYXRhOworCisgICAgSW50UmVjdCBzb3VyY2VSZWN0KDAsIDAsIG1fZGF0
YS5tX2JpdG1hcC0+d2lkdGgoKSwgbV9kYXRhLm1fYml0bWFwLT5oZWlnaHQoKSk7CisgICAgc291
cmNlUmVjdC5pbnRlcnNlY3QocmVjdCk7CisgICAgaWYgKHNvdXJjZVJlY3QuaXNFbXB0eSgpKQor
ICAgICAgICByZXR1cm4gaW1hZ2VEYXRhOworCisgICAgdW5zaWduZWQgY2hhciogZHN0ID0gaW1h
Z2VEYXRhLT5kYXRhKCktPmRhdGEoKS0+ZGF0YSgpOworICAgIG1lbXNldChkc3QsIDAsIGltYWdl
RGF0YS0+ZGF0YSgpLT5kYXRhKCktPmxlbmd0aCgpKTsKKyAgICBzcmMgKz0gKHNvdXJjZVJlY3Qu
eSgpICogbV9kYXRhLm1fYml0bWFwLT53aWR0aCgpICsgc291cmNlUmVjdC54KCkpICogNDsKKyAg
ICBkc3QgKz0gKChzb3VyY2VSZWN0LnkoKSAtIHJlY3QueSgpKSAqIGltYWdlRGF0YS0+d2lkdGgo
KSArIHNvdXJjZVJlY3QueCgpIC0gcmVjdC54KCkpICogNDsKKyAgICBpbnQgYnl0ZXNUb0NvcHkg
PSBzb3VyY2VSZWN0LndpZHRoKCkgKiA0OworICAgIGludCBzcmNTa2lwID0gKG1fZGF0YS5tX2Jp
dG1hcC0+d2lkdGgoKSAtIHNvdXJjZVJlY3Qud2lkdGgoKSkgKiA0OworICAgIGludCBkc3RTa2lw
ID0gKGltYWdlRGF0YS0+d2lkdGgoKSAtIHNvdXJjZVJlY3Qud2lkdGgoKSkgKiA0OworICAgIGNv
bnN0IHVuc2lnbmVkIGNoYXIqIGRzdEVuZCA9IGRzdCArIHNvdXJjZVJlY3QuaGVpZ2h0KCkgKiBp
bWFnZURhdGEtPndpZHRoKCkgKiA0OworICAgIHdoaWxlIChkc3QgPCBkc3RFbmQpIHsKKyAgICAg
ICAgY29uc3QgdW5zaWduZWQgY2hhciogZHN0Um93RW5kID0gZHN0ICsgYnl0ZXNUb0NvcHk7Cisg
ICAgICAgIHdoaWxlIChkc3QgPCBkc3RSb3dFbmQpIHsKKyAgICAgICAgICAgICpkc3QrKyA9IHNy
Y1szXTsgLy8gQQorICAgICAgICAgICAgKmRzdCsrID0gKnNyYysrOyAvLyBCCisgICAgICAgICAg
ICAqZHN0KysgPSAqc3JjKys7IC8vIEcKKyAgICAgICAgICAgICpkc3QrKyA9ICpzcmMrKzsgLy8g
UgorICAgICAgICAgICAgKytzcmM7CisgICAgICAgIH0KKyAgICAgICAgc3JjICs9IHNyY1NraXA7
CisgICAgICAgIGRzdCArPSBkc3RTa2lwOworICAgIH0KKworICAgIHJldHVybiBpbWFnZURhdGE7
Cit9CisKK3ZvaWQgSW1hZ2VCdWZmZXI6OnB1dEltYWdlRGF0YShJbWFnZURhdGEqIHNvdXJjZSwg
Y29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCkKK3sK
KyAgICB1bnNpZ25lZCBjaGFyKiBkc3QgPSAodW5zaWduZWQgY2hhciopbV9kYXRhLm1fYml0bWFw
LT5ieXRlcygpOworICAgIGlmICghZHN0KQorICAgICAgICByZXR1cm47CisKKyAgICBJbnRSZWN0
IGRlc3RSZWN0KGRlc3RQb2ludCwgc291cmNlUmVjdC5zaXplKCkpOworICAgIGRlc3RSZWN0Lmlu
dGVyc2VjdChJbnRSZWN0KDAsIDAsIG1fZGF0YS5tX2JpdG1hcC0+d2lkdGgoKSwgbV9kYXRhLm1f
Yml0bWFwLT5oZWlnaHQoKSkpOworCisgICAgaWYgKGRlc3RSZWN0LmlzRW1wdHkoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgY29uc3QgdW5zaWduZWQgY2hhciogc3JjID0gc291cmNlLT5kYXRh
KCktPmRhdGEoKS0+ZGF0YSgpOworICAgIGRzdCArPSAoZGVzdFJlY3QueSgpICogbV9kYXRhLm1f
Yml0bWFwLT53aWR0aCgpICsgZGVzdFJlY3QueCgpKSAqIDQ7CisgICAgc3JjICs9IChzb3VyY2VS
ZWN0LnkoKSAqIHNvdXJjZS0+d2lkdGgoKSArIHNvdXJjZVJlY3QueCgpKSAqIDQ7CisgICAgaW50
IGJ5dGVzVG9Db3B5ID0gZGVzdFJlY3Qud2lkdGgoKSAqIDQ7CisgICAgaW50IGRzdFNraXAgPSAo
bV9kYXRhLm1fYml0bWFwLT53aWR0aCgpIC0gZGVzdFJlY3Qud2lkdGgoKSkgKiA0OworICAgIGlu
dCBzcmNTa2lwID0gKHNvdXJjZS0+d2lkdGgoKSAtIGRlc3RSZWN0LndpZHRoKCkpICogNDsKKyAg
ICBjb25zdCB1bnNpZ25lZCBjaGFyKiBkc3RFbmQgPSBkc3QgKyBkZXN0UmVjdC5oZWlnaHQoKSAq
IG1fZGF0YS5tX2JpdG1hcC0+d2lkdGgoKSAqIDQ7CisgICAgd2hpbGUgKGRzdCA8IGRzdEVuZCkg
eworICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyKiBkc3RSb3dFbmQgPSBkc3QgKyBieXRlc1Rv
Q29weTsKKyAgICAgICAgd2hpbGUgKGRzdCA8IGRzdFJvd0VuZCkgeworICAgICAgICAgICAgdW5z
aWduZWQgY2hhciBhbHBoYSA9ICpzcmMrKzsKKyAgICAgICAgICAgICpkc3QrKyA9ICpzcmMrKzsg
Ly8gQgorICAgICAgICAgICAgKmRzdCsrID0gKnNyYysrOyAvLyBHCisgICAgICAgICAgICAqZHN0
KysgPSAqc3JjKys7IC8vIFIKKyAgICAgICAgICAgICpkc3QrKyA9IGFscGhhOworICAgICAgICB9
CisgICAgICAgIHNyYyArPSBzcmNTa2lwOworICAgICAgICBkc3QgKz0gZHN0U2tpcDsKKyAgICB9
Cit9CisKK1N0cmluZyBJbWFnZUJ1ZmZlcjo6dG9EYXRhVVJMKGNvbnN0IFN0cmluZyYgbWltZVR5
cGUpIGNvbnN0Cit7CisgICAgaWYgKCFtX2RhdGEubV9iaXRtYXAtPmJ5dGVzKCkpCisgICAgICAg
IHJldHVybiAiZGF0YTosIjsKKworICAgIFZlY3RvcjxjaGFyPiBvdXRwdXQ7CisgICAgY29uc3Qg
Y2hhciogaGVhZGVyOworICAgIGlmIChtaW1lVHlwZS5sb3dlcigpID09ICJpbWFnZS9wbmciKSB7
CisgICAgICAgIGlmICghY29tcHJlc3NCaXRtYXBUb1BuZyhtX2RhdGEubV9iaXRtYXAuZ2V0KCks
IG91dHB1dCkpCisgICAgICAgICAgICByZXR1cm4gImRhdGE6LCI7CisgICAgICAgIGhlYWRlciA9
ICJkYXRhOmltYWdlL3BuZztiYXNlNjQsIjsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoIWNv
bXByZXNzQml0bWFwVG9KcGVnKG1fZGF0YS5tX2JpdG1hcC5nZXQoKSwgb3V0cHV0KSkKKyAgICAg
ICAgICAgIHJldHVybiAiZGF0YTosIjsKKyAgICAgICAgaGVhZGVyID0gImRhdGE6aW1hZ2UvanBl
ZztiYXNlNjQsIjsKKyAgICB9CisKKyAgICBWZWN0b3I8Y2hhcj4gYmFzZTY0OworICAgIGJhc2U2
NEVuY29kZShvdXRwdXQsIGJhc2U2NCk7CisKKyAgICBvdXRwdXQuY2xlYXIoKTsKKworICAgIFZl
Y3RvcjxjaGFyPiB1cmw7CisgICAgdXJsLmFwcGVuZChoZWFkZXIsIHN0cmxlbihoZWFkZXIpKTsK
KyAgICB1cmwuYXBwZW5kKGJhc2U2NCk7CisKKyAgICByZXR1cm4gU3RyaW5nKHVybC5kYXRhKCks
IHVybC5zaXplKCkpOworfQorCit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34765</attachid>
            <date>2009-08-13 12:21:17 -0700</date>
            <delta_ts>2009-09-02 08:19:39 -0700</delta_ts>
            <desc>updated</desc>
            <filename>28167.patch</filename>
            <type>text/plain</type>
            <size>11268</size>
            <attacher name="Yong Li">yong.li.webkit</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
OWRmNGFhYy4uODQ0MTEwNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAwOS0wOC0xMyAgWW9uZyBMaSAgPHlv
bmcubGlAdG9yY2htb2JpbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFdJTkNFIFBPUlQ6IEltcGxlbWVudCBJbWFnZUJ1ZmZlciBmb3IgV0lO
Q0UKKyAgICAgICAgSW1wbGVtZW50IEltYWdlIGludGVyZmFjZSB3aXRoIGEgbGlnaHQgY2xhc3Mg
QnVmZmVyZWRJbWFnZQorICAgICAgICBmb3IgcmVuZGVyaW5nIEltYWdlQnVmZmVyCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yODE2NworCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvSW1hZ2VCdWZmZXJEYXRhLmg6IEFkZGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0ltYWdlQnVmZmVyV2luY2UuY3BwOiBBZGRl
ZC4KKwogMjAwOS0wOC0xMyAgU3RldmUgQmxvY2sgIDxzdGV2ZWJsb2NrQGdvb2dsZS5jb20+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCmRpZmYgLS1naXQgYS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbmNlL0ltYWdlQnVmZmVyRGF0YS5oIGIvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW5jZS9JbWFnZUJ1ZmZlckRhdGEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi4wMWI3ZDA2Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW5jZS9JbWFnZUJ1ZmZlckRhdGEuaApAQCAtMCwwICsxLDM0IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDA5IFRvcmNoIE1vYmlsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICog
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor
ICogIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJ
ZiBub3QsIHdyaXRlIHRvCisgKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqICBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4KKyAqLworCisjaWZuZGVmIEltYWdlQnVmZmVyRGF0YV9oCisjZGVmaW5lIEltYWdl
QnVmZmVyRGF0YV9oCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAgIGNsYXNzIEludFNpemU7
CisgICAgY2xhc3MgSW1hZ2VCdWZmZXJEYXRhIHsKKyAgICBwdWJsaWM6CisgICAgICAgIEltYWdl
QnVmZmVyRGF0YShjb25zdCBJbnRTaXplJiBzaXplKTsKKyAgICAgICAgUmVmUHRyPFNoYXJlZEJp
dG1hcD4gbV9iaXRtYXA7CisgICAgfTsKKworfSAgLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmICAvLyBJbWFnZUJ1ZmZlckRhdGFfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW5jZS9JbWFnZUJ1ZmZlcldpbmNlLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luY2UvSW1hZ2VCdWZmZXJXaW5jZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uMzQxN2Y1ZgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luY2UvSW1hZ2VCdWZmZXJXaW5jZS5jcHAKQEAgLTAsMCArMSwyNDYgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgVG9yY2ggTW9iaWxlLCBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisg
KiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
CisgKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4g
IElmIG5vdCwgd3JpdGUgdG8KKyAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu
LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogIEJvc3RvbiwgTUEgMDIxMTAt
MTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJbWFnZUJ1
ZmZlci5oIgorCisjaW5jbHVkZSAiQmFzZTY0LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
LmgiCisjaW5jbHVkZSAiSW1hZ2UuaCIKKyNpbmNsdWRlICJJbWFnZURhdGEuaCIKKyNpbmNsdWRl
ICJKUEVHRW5jb2Rlci5oIgorI2luY2x1ZGUgIlBOR0VuY29kZXIuaCIKKyNpbmNsdWRlICJTaGFy
ZWRCaXRtYXAuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBCdWZmZXJlZEltYWdl
OiBwdWJsaWMgSW1hZ2UgeworCitwdWJsaWM6CisgICAgQnVmZmVyZWRJbWFnZShjb25zdCBJbWFn
ZUJ1ZmZlckRhdGEqIGRhdGEpCisgICAgICAgIDogbV9kYXRhKGRhdGEpCisgICAgeworICAgIH0K
KworICAgIHZpcnR1YWwgSW50U2l6ZSBzaXplKCkgY29uc3QgeyByZXR1cm4gSW50U2l6ZShtX2Rh
dGEtPm1fYml0bWFwLT53aWR0aCgpLCBtX2RhdGEtPm1fYml0bWFwLT5oZWlnaHQoKSk7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgZGVzdHJveURlY29kZWREYXRhKGJvb2wgZGVzdHJveUFsbCA9IHRydWUp
IHt9CisgICAgdmlydHVhbCB1bnNpZ25lZCBkZWNvZGVkU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIDA7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJl
Y3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Ip
OworICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBwYXR0ZXJuVHJh
bnNmb3JtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGbG9hdFBvaW50JiBw
aGFzZSwgQ29tcG9zaXRlT3BlcmF0b3IsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QpOworCisg
ICAgY29uc3QgSW1hZ2VCdWZmZXJEYXRhKiBtX2RhdGE7Cit9OworCit2b2lkIEJ1ZmZlcmVkSW1h
Z2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3Ap
Cit7CisgICAgSW50UmVjdCBpbnREc3RSZWN0ID0gZW5jbG9zaW5nSW50UmVjdChkc3RSZWN0KTsK
KyAgICBJbnRSZWN0IGludFNyY1JlY3Qoc3JjUmVjdCk7CisgICAgbV9kYXRhLT5tX2JpdG1hcC0+
ZHJhdyhjdHh0LCBpbnREc3RSZWN0LCBpbnRTcmNSZWN0LCBjb21wb3NpdGVPcCk7Cit9CisKK3Zv
aWQgQnVmZmVyZWRJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0KiBjdHh0LCBjb25z
dCBGbG9hdFJlY3QmIHRpbGVSZWN0SW4sIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBwYXR0
ZXJuVHJhbnNmb3JtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGbG9hdFBv
aW50JiBwaGFzZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QpCit7CisgICAgbV9kYXRhLT5tX2JpdG1hcC0+ZHJhd1BhdHRlcm4oY3R4dCwgdGlsZVJlY3RJ
biwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIG9wLCBkZXN0UmVjdCwgc2l6ZSgpKTsKK30KKwor
SW1hZ2VCdWZmZXJEYXRhOjpJbWFnZUJ1ZmZlckRhdGEoY29uc3QgSW50U2l6ZSYgc2l6ZSkKKzog
bV9iaXRtYXAoU2hhcmVkQml0bWFwOjpjcmVhdGVJbnN0YW5jZShmYWxzZSwgc2l6ZS53aWR0aCgp
LCBzaXplLmhlaWdodCgpLCBmYWxzZSkpCit7CisgICAgLy8gaHR0cDovL3d3dy53My5vcmcvVFIv
MjAwOS9XRC1odG1sNS0yMDA5MDIxMi90aGUtY2FudmFzLWVsZW1lbnQuaHRtbCNjYW52YXNwaXhl
bGFycmF5CisgICAgLy8gIldoZW4gdGhlIGNhbnZhcyBpcyBpbml0aWFsaXplZCBpdCBtdXN0IGJl
IHNldCB0byBmdWxseSB0cmFuc3BhcmVudCBibGFjay4iCisgICAgbV9iaXRtYXAtPnJlc2V0UGl4
ZWxzKHRydWUpOworICAgIG1fYml0bWFwLT5zZXRIYXNBbHBoYSh0cnVlKTsKK30KKworSW1hZ2VC
dWZmZXI6OkltYWdlQnVmZmVyKGNvbnN0IEludFNpemUmIHNpemUsIEltYWdlQ29sb3JTcGFjZSBj
b2xvclNwYWNlLCBib29sJiBzdWNjZXNzKQorICAgIDogbV9kYXRhKHNpemUpCisgICAgLCBtX3Np
emUoc2l6ZSkKK3sKKyAgICAvLyBGSVhNRTogY29sb3JTcGFjZSBpcyBub3QgdXNlZAorICAgIFVO
VVNFRF9QQVJBTShjb2xvclNwYWNlKTsKKworICAgIG1fY29udGV4dC5zZXQobmV3IEdyYXBoaWNz
Q29udGV4dCgwKSk7CisgICAgbV9jb250ZXh0LT5zZXRCaXRtYXAobV9kYXRhLm1fYml0bWFwKTsK
KyAgICBzdWNjZXNzID0gdHJ1ZTsKK30KKworSW1hZ2VCdWZmZXI6On5JbWFnZUJ1ZmZlcigpCit7
Cit9CisKK0dyYXBoaWNzQ29udGV4dCogSW1hZ2VCdWZmZXI6OmNvbnRleHQoKSBjb25zdAorewor
ICAgIHJldHVybiBtX2NvbnRleHQuZ2V0KCk7Cit9CisKK0ltYWdlKiBJbWFnZUJ1ZmZlcjo6aW1h
Z2UoKSBjb25zdAoreworICAgIGlmICghbV9pbWFnZSkKKyAgICAgICAgbV9pbWFnZSA9IGFkb3B0
UmVmKG5ldyBCdWZmZXJlZEltYWdlKCZtX2RhdGEpKTsKKworICAgIHJldHVybiBtX2ltYWdlLmdl
dCgpOworfQorCit0ZW1wbGF0ZSA8Ym9vbCBwcmVtdWx0aXBsaWVkPiBQYXNzUmVmUHRyPEltYWdl
RGF0YT4KK3N0YXRpYyBnZXRJbWFnZURhdGEoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgU2hh
cmVkQml0bWFwKiBiaXRtYXApCit7CisgICAgUGFzc1JlZlB0cjxJbWFnZURhdGE+IGltYWdlRGF0
YSA9IEltYWdlRGF0YTo6Y3JlYXRlKHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSk7CisKKyAg
ICBjb25zdCB1bnNpZ25lZCBjaGFyKiBzcmMgPSBzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBj
aGFyKj4oYml0bWFwLT5ieXRlcygpKTsKKyAgICBpZiAoIXNyYykKKyAgICAgICAgcmV0dXJuIGlt
YWdlRGF0YTsKKworICAgIEludFJlY3Qgc291cmNlUmVjdCgwLCAwLCBiaXRtYXAtPndpZHRoKCks
IGJpdG1hcC0+aGVpZ2h0KCkpOworICAgIHNvdXJjZVJlY3QuaW50ZXJzZWN0KHJlY3QpOworICAg
IGlmIChzb3VyY2VSZWN0LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGltYWdlRGF0YTsKKwor
ICAgIHVuc2lnbmVkIGNoYXIqIGRzdCA9IGltYWdlRGF0YS0+ZGF0YSgpLT5kYXRhKCktPmRhdGEo
KTsKKyAgICBtZW1zZXQoZHN0LCAwLCBpbWFnZURhdGEtPmRhdGEoKS0+ZGF0YSgpLT5sZW5ndGgo
KSk7CisgICAgc3JjICs9IChzb3VyY2VSZWN0LnkoKSAqIGJpdG1hcC0+d2lkdGgoKSArIHNvdXJj
ZVJlY3QueCgpKSAqIDQ7CisgICAgZHN0ICs9ICgoc291cmNlUmVjdC55KCkgLSByZWN0LnkoKSkg
KiBpbWFnZURhdGEtPndpZHRoKCkgKyBzb3VyY2VSZWN0LngoKSAtIHJlY3QueCgpKSAqIDQ7Cisg
ICAgaW50IGJ5dGVzVG9Db3B5ID0gc291cmNlUmVjdC53aWR0aCgpICogNDsKKyAgICBpbnQgc3Jj
U2tpcCA9IChiaXRtYXAtPndpZHRoKCkgLSBzb3VyY2VSZWN0LndpZHRoKCkpICogNDsKKyAgICBp
bnQgZHN0U2tpcCA9IChpbWFnZURhdGEtPndpZHRoKCkgLSBzb3VyY2VSZWN0LndpZHRoKCkpICog
NDsKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyKiBkc3RFbmQgPSBkc3QgKyBzb3VyY2VSZWN0Lmhl
aWdodCgpICogaW1hZ2VEYXRhLT53aWR0aCgpICogNDsKKyAgICB3aGlsZSAoZHN0IDwgZHN0RW5k
KSB7CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRzdFJvd0VuZCA9IGRzdCArIGJ5dGVz
VG9Db3B5OworICAgICAgICB3aGlsZSAoZHN0IDwgZHN0Um93RW5kKSB7CisgICAgICAgICAgICAv
LyBDb252ZXJ0IEFSR0IgbGl0dGxlIGVuZGlhbiB0byBSR0JBIGJpZyBlbmRpYW4KKyAgICAgICAg
ICAgIGludCBibHVlID0gKnNyYysrOworICAgICAgICAgICAgaW50IGdyZWVuID0gKnNyYysrOwor
ICAgICAgICAgICAgaW50IHJlZCA9ICpzcmMrKzsKKyAgICAgICAgICAgIGludCBhbHBoYSA9ICpz
cmMrKzsKKyAgICAgICAgICAgIGlmIChwcmVtdWx0aXBsaWVkKSB7CisgICAgICAgICAgICAgICAg
KmRzdCsrID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oKHJlZCAqIGFscGhhICsgMjU0KSAv
IDI1NSk7CisgICAgICAgICAgICAgICAgKmRzdCsrID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hh
cj4oKGdyZWVuICogYWxwaGEgKyAyNTQpIC8gMjU1KTsKKyAgICAgICAgICAgICAgICAqZHN0Kysg
PSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigoYmx1ZSAqIGFscGhhICsgMjU0KSAvIDI1NSk7
CisgICAgICAgICAgICAgICAgKmRzdCsrID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oYWxw
aGEpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAqZHN0KysgPSBzdGF0
aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihyZWQpOworICAgICAgICAgICAgICAgICpkc3QrKyA9IHN0
YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGdyZWVuKTsKKyAgICAgICAgICAgICAgICAqZHN0Kysg
PSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihibHVlKTsKKyAgICAgICAgICAgICAgICAqZHN0
KysgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihhbHBoYSk7CisgICAgICAgICAgICAgICAg
KytzcmM7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgc3JjICs9IHNyY1NraXA7
CisgICAgICAgIGRzdCArPSBkc3RTa2lwOworICAgIH0KKworICAgIHJldHVybiBpbWFnZURhdGE7
Cit9CisKK1Bhc3NSZWZQdHI8SW1hZ2VEYXRhPiBJbWFnZUJ1ZmZlcjo6Z2V0VW5tdWx0aXBsaWVk
SW1hZ2VEYXRhKGNvbnN0IEludFJlY3QmIHJlY3QpIGNvbnN0Cit7CisgICAgcmV0dXJuIGdldElt
YWdlRGF0YTxmYWxzZT4ocmVjdCwgbV9kYXRhLm1fYml0bWFwLmdldCgpKTsKK30KKworUGFzc1Jl
ZlB0cjxJbWFnZURhdGE+IEltYWdlQnVmZmVyOjpnZXRQcmVtdWx0aXBsaWVkSW1hZ2VEYXRhKGNv
bnN0IEludFJlY3QmIHJlY3QpIGNvbnN0Cit7CisgICAgcmV0dXJuIGdldEltYWdlRGF0YTx0cnVl
PihyZWN0LCBtX2RhdGEubV9iaXRtYXAuZ2V0KCkpOworfQorCit0ZW1wbGF0ZSA8Ym9vbCBwcmVt
dWx0aXBsaWVkPgorc3RhdGljIHZvaWQgcHV0SW1hZ2VEYXRhKEltYWdlRGF0YSogc291cmNlLCBj
b25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50LCBTaGFy
ZWRCaXRtYXAqIGJpdG1hcCkKK3sKKyAgICB1bnNpZ25lZCBjaGFyKiBkc3QgPSAodW5zaWduZWQg
Y2hhciopYml0bWFwLT5ieXRlcygpOworICAgIGlmICghZHN0KQorICAgICAgICByZXR1cm47CisK
KyAgICBJbnRSZWN0IGRlc3RSZWN0KGRlc3RQb2ludCwgc291cmNlUmVjdC5zaXplKCkpOworICAg
IGRlc3RSZWN0LmludGVyc2VjdChJbnRSZWN0KDAsIDAsIGJpdG1hcC0+d2lkdGgoKSwgYml0bWFw
LT5oZWlnaHQoKSkpOworCisgICAgaWYgKGRlc3RSZWN0LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgY29uc3QgdW5zaWduZWQgY2hhciogc3JjID0gc291cmNlLT5kYXRhKCktPmRh
dGEoKS0+ZGF0YSgpOworICAgIGRzdCArPSAoZGVzdFJlY3QueSgpICogYml0bWFwLT53aWR0aCgp
ICsgZGVzdFJlY3QueCgpKSAqIDQ7CisgICAgc3JjICs9IChzb3VyY2VSZWN0LnkoKSAqIHNvdXJj
ZS0+d2lkdGgoKSArIHNvdXJjZVJlY3QueCgpKSAqIDQ7CisgICAgaW50IGJ5dGVzVG9Db3B5ID0g
ZGVzdFJlY3Qud2lkdGgoKSAqIDQ7CisgICAgaW50IGRzdFNraXAgPSAoYml0bWFwLT53aWR0aCgp
IC0gZGVzdFJlY3Qud2lkdGgoKSkgKiA0OworICAgIGludCBzcmNTa2lwID0gKHNvdXJjZS0+d2lk
dGgoKSAtIGRlc3RSZWN0LndpZHRoKCkpICogNDsKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyKiBk
c3RFbmQgPSBkc3QgKyBkZXN0UmVjdC5oZWlnaHQoKSAqIGJpdG1hcC0+d2lkdGgoKSAqIDQ7Cisg
ICAgd2hpbGUgKGRzdCA8IGRzdEVuZCkgeworICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyKiBk
c3RSb3dFbmQgPSBkc3QgKyBieXRlc1RvQ29weTsKKyAgICAgICAgd2hpbGUgKGRzdCA8IGRzdFJv
d0VuZCkgeworICAgICAgICAgICAgLy8gQ29udmVydCBSR0JBIGJpZyBlbmRpYW4gdG8gQVJHQiBs
aXR0bGUgZW5kaWFuCisgICAgICAgICAgICBpbnQgcmVkID0gKnNyYysrOworICAgICAgICAgICAg
aW50IGdyZWVuID0gKnNyYysrOworICAgICAgICAgICAgaW50IGJsdWUgPSAqc3JjKys7CisgICAg
ICAgICAgICBpbnQgYWxwaGEgPSAqc3JjKys7CisgICAgICAgICAgICBpZiAocHJlbXVsdGlwbGll
ZCkgeworICAgICAgICAgICAgICAgICpkc3QrKyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+
KGJsdWUgKiAyNTUgLyBhbHBoYSk7CisgICAgICAgICAgICAgICAgKmRzdCsrID0gc3RhdGljX2Nh
c3Q8dW5zaWduZWQgY2hhcj4oZ3JlZW4gKiAyNTUgLyBhbHBoYSk7CisgICAgICAgICAgICAgICAg
KmRzdCsrID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4ocmVkICogMjU1IC8gYWxwaGEpOwor
ICAgICAgICAgICAgICAgICpkc3QrKyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGFscGhh
KTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgKmRzdCsrID0gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQgY2hhcj4oYmx1ZSk7CisgICAgICAgICAgICAgICAgKmRzdCsrID0gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oZ3JlZW4pOworICAgICAgICAgICAgICAgICpkc3QrKyA9
IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KHJlZCk7CisgICAgICAgICAgICAgICAgKmRzdCsr
ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oYWxwaGEpOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgICAgIHNyYyArPSBzcmNTa2lwOworICAgICAgICBkc3QgKz0gZHN0U2tpcDsK
KyAgICB9Cit9CisKK3ZvaWQgSW1hZ2VCdWZmZXI6OnB1dFVubXVsdGlwbGllZEltYWdlRGF0YShJ
bWFnZURhdGEqIHNvdXJjZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UG9p
bnQmIGRlc3RQb2ludCkKK3sKKyAgICBwdXRJbWFnZURhdGE8ZmFsc2U+KHNvdXJjZSwgc291cmNl
UmVjdCwgZGVzdFBvaW50LCBtX2RhdGEubV9iaXRtYXAuZ2V0KCkpOworfQorCit2b2lkIEltYWdl
QnVmZmVyOjpwdXRQcmVtdWx0aXBsaWVkSW1hZ2VEYXRhKEltYWdlRGF0YSogc291cmNlLCBjb25z
dCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50KQoreworICAg
IHB1dEltYWdlRGF0YTx0cnVlPihzb3VyY2UsIHNvdXJjZVJlY3QsIGRlc3RQb2ludCwgbV9kYXRh
Lm1fYml0bWFwLmdldCgpKTsKK30KKworU3RyaW5nIEltYWdlQnVmZmVyOjp0b0RhdGFVUkwoY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSkgY29uc3QKK3sKKyAgICBpZiAoIW1fZGF0YS5tX2JpdG1hcC0+
Ynl0ZXMoKSkKKyAgICAgICAgcmV0dXJuICJkYXRhOiwiOworCisgICAgVmVjdG9yPGNoYXI+IG91
dHB1dDsKKyAgICBjb25zdCBjaGFyKiBoZWFkZXI7CisgICAgaWYgKG1pbWVUeXBlLmxvd2VyKCkg
PT0gImltYWdlL3BuZyIpIHsKKyAgICAgICAgaWYgKCFjb21wcmVzc0JpdG1hcFRvUG5nKG1fZGF0
YS5tX2JpdG1hcC5nZXQoKSwgb3V0cHV0KSkKKyAgICAgICAgICAgIHJldHVybiAiZGF0YTosIjsK
KyAgICAgICAgaGVhZGVyID0gImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCwiOworICAgIH0gZWxzZSB7
CisgICAgICAgIGlmICghY29tcHJlc3NCaXRtYXBUb0pwZWcobV9kYXRhLm1fYml0bWFwLmdldCgp
LCBvdXRwdXQpKQorICAgICAgICAgICAgcmV0dXJuICJkYXRhOiwiOworICAgICAgICBoZWFkZXIg
PSAiZGF0YTppbWFnZS9qcGVnO2Jhc2U2NCwiOworICAgIH0KKworICAgIFZlY3RvcjxjaGFyPiBi
YXNlNjQ7CisgICAgYmFzZTY0RW5jb2RlKG91dHB1dCwgYmFzZTY0KTsKKworICAgIG91dHB1dC5j
bGVhcigpOworCisgICAgVmVjdG9yPGNoYXI+IHVybDsKKyAgICB1cmwuYXBwZW5kKGhlYWRlciwg
c3RybGVuKGhlYWRlcikpOworICAgIHVybC5hcHBlbmQoYmFzZTY0KTsKKworICAgIHJldHVybiBT
dHJpbmcodXJsLmRhdGEoKSwgdXJsLnNpemUoKSk7Cit9CisKK30K
</data>

          </attachment>
      

    </bug>

</bugzilla>