<?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>52833</bug_id>
          
          <creation_ts>2011-01-20 12:45:16 -0800</creation_ts>
          <short_desc>shaderSource needs to preserve original source</short_desc>
          <delta_ts>2011-01-27 10:59:18 -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>WebGL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>
          <dependson>52390</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kenneth Russell">kbr</reporter>
          <assigned_to name="Zhenyao Mo">zmo</assigned_to>
          <cc>cmarrin</cc>
    
    <cc>zmo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>337523</commentid>
    <comment_count>0</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-01-20 12:45:16 -0800</bug_when>
    <thetext>After the removal of comments implemented in bug 52390, shaderSource needs to preserve the original source so that it can be returned from getShaderSource.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>340453</commentid>
    <comment_count>1</comment_count>
      <attachid>80232</attachid>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2011-01-26 14:04:30 -0800</bug_when>
    <thetext>Created attachment 80232
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>340459</commentid>
    <comment_count>2</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2011-01-26 14:09:06 -0800</bug_when>
    <thetext>Note that shader source is cached in both WebGLRenderingContext (before comments removal) and GraphicsContext3D (before ANGLE).

In this patch the cached copy in GraphicsContext3D is released once the shader is compiled.  ASSERT_NOT_REACHED() is added in this level for getShaderSource() and getShaderiv(SHADER_SOURCE_LENGTH).  This is under the assumption that WebGLRenderingContext is the only place that calls these two functions.

Will need to do the same in chromium two ports to reduce memory usage.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>340479</commentid>
    <comment_count>3</comment_count>
      <attachid>80232</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-01-26 14:41:33 -0800</bug_when>
    <thetext>Comment on attachment 80232
Patch

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

&gt; Source/WebCore/platform/graphics/opengl/GraphicsContext3DOpenGL.cpp:1220
&gt; +        ASSERT_NOT_REACHED();

WebGLRenderingContext isn&apos;t the only client of this code; for example, the accelerated 2D canvas code may go through it, and Chromium&apos;s accelerated compositor is built on top of GraphicsContext3D. Please restore this functionality. The required (slightly redundant) caches are negligible as shaders are tiny.

I don&apos;t think any changes are needed in the Chromium port either. We really just need the additional caching to preserve any Unicode characters in comments for WebGL content.

&gt; Source/WebCore/platform/graphics/opengl/GraphicsContext3DOpenGL.cpp:1257
&gt; +    ASSERT_NOT_REACHED();

Same here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>340628</commentid>
    <comment_count>4</comment_count>
      <attachid>80276</attachid>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2011-01-26 17:27:19 -0800</bug_when>
    <thetext>Created attachment 80276
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>340635</commentid>
    <comment_count>5</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2011-01-26 17:31:12 -0800</bug_when>
    <thetext>One question: how do we count the length if shader source is not all UTF8?

String::length() count a UTF16 char as 1.  However, do we want to count it as 2?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>340668</commentid>
    <comment_count>6</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-01-26 17:59:09 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; One question: how do we count the length if shader source is not all UTF8?
&gt; 
&gt; String::length() count a UTF16 char as 1.  However, do we want to count it as 2?

That&apos;s a good question. I think the queries of the shader source length and info log length are useless in this API, since the queries of the logs return DOMStrings. Do you want to raise that on the working group email list?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>340935</commentid>
    <comment_count>7</comment_count>
      <attachid>80276</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-01-27 10:45:18 -0800</bug_when>
    <thetext>Comment on attachment 80276
Patch

The code changes look fine. Thanks for raising the issue of removing the useless query of shader source length on the WebGL working group list.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>340944</commentid>
    <comment_count>8</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2011-01-27 10:59:18 -0800</bug_when>
    <thetext>Committed r76814: &lt;http://trac.webkit.org/changeset/76814&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>80232</attachid>
            <date>2011-01-26 14:04:30 -0800</date>
            <delta_ts>2011-01-26 17:27:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-52833-20110126140429.patch</filename>
            <type>text/plain</type>
            <size>14771</size>
            <attacher name="Zhenyao Mo">zmo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc2NzE1KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTEtMDEtMjYgIFpoZW55YW8g
TW8gIDx6bW9AZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBzaGFkZXJTb3VyY2UgbmVlZHMgdG8gcHJlc2VydmUgb3JpZ2luYWwgc291
cmNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01Mjgz
MworCisgICAgICAgIFRlc3Q6IGZhc3QvY2FudmFzL3dlYmdsL2dsLWdldHNoYWRlcnNvdXJjZS5o
dG1sCisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRTaGFkZXJQYXJhbWV0
ZXIpOiBJbnRlcmNlcHQgU0hBREVSX1NPVVJDRV9MRU5HVEguCisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFNoYWRlclNvdXJjZSk6IEludGVyY2VwdCB0aGUgY2Fs
bC4KKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6c2hhZGVyU291cmNl
KTogQ2FjaGUgdGhlIHNvdXJjZS4KKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFNoYWRlci5j
cHA6IENhY2hlIHNoYWRlciBzb3VyY2UuCisgICAgICAgIChXZWJDb3JlOjpXZWJHTFNoYWRlcjo6
V2ViR0xTaGFkZXIpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMU2hhZGVyLmg6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xTaGFkZXI6OmdldFNvdXJjZSk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTFNoYWRlcjo6c2V0U291cmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQzRC5oOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q6OlNoYWRlclNvdXJjZUVudHJ5OjpTaGFkZXJTb3VyY2VFbnRyeSk6IENoYW5nZSBzdGF0
dXMgZnJvbSBib29sIHRvIGFuIHRocmVlLXN0YXRlIGVudW0uCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpjb21waWxlU2hhZGVyKTogT25seSBjYWxsIEFOR0xF
IHNoYWRlciB2YWxpZGF0aW9uIG9uY2UgcGVyIHNoYWRlciBzb3VyY2UuCisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzRDo6c2hhZGVyU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRTaGFkZXJpdik6IEFTU0VSVCB0byBtYWtlIHN1cmUgU0hB
REVSX1NPVVJDRV9MRU5HVEggcGF0aCBpcyBuZXZlciByZWFjaGVkIGF0IHRoaXMgbGV2ZWwuLgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFNoYWRlckluZm9Mb2cpOiBV
c2UgdGhlIG5ldyBTaGFkZXJTb3VyY2VFbnRyeSBzdGF0dXMuCisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzRDo6Z2V0U2hhZGVyU291cmNlKTogQVNTRVJUIHRvIG1ha2Ugc3VyZSBT
SEFERVJfU09VUkNFX0xFTkdUSCBwYXRoIGlzIG5ldmVyIHJlYWNoZWQgYXQgdGhpcyBsZXZlbC4u
CisKIDIwMTEtMDEtMjYgIFRvbnkgQ2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBVbnJldmlld2VkLgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCShyZXZpc2lvbiA3NjcwMikKKysrIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTIxNjQsOSArMjE2NCwxMyBAQCBXZWJHTEdldEluZm8gV2ViR0xSZW5kZXJpbmdDb250
ZXh0OjpnZXRTCiAgICAgICAgIG1fY29udGV4dC0+Z2V0U2hhZGVyaXYob2JqZWN0T3JaZXJvKHNo
YWRlciksIHBuYW1lLCAmdmFsdWUpOwogICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKHN0YXRp
Y19jYXN0PHVuc2lnbmVkIGludD4odmFsdWUpKTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNE
OjpJTkZPX0xPR19MRU5HVEg6Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6U0hBREVSX1NP
VVJDRV9MRU5HVEg6CiAgICAgICAgIG1fY29udGV4dC0+Z2V0U2hhZGVyaXYob2JqZWN0T3JaZXJv
KHNoYWRlciksIHBuYW1lLCAmdmFsdWUpOwogICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKHZh
bHVlKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTSEFERVJfU09VUkNFX0xFTkdUSDoK
KyAgICAgICAgdmFsdWUgPSBzdGF0aWNfY2FzdDxHQzNEaW50PihzaGFkZXItPmdldFNvdXJjZSgp
Lmxlbmd0aCgpKTsKKyAgICAgICAgaWYgKHZhbHVlID4gMCkKKyAgICAgICAgICAgIHZhbHVlKys7
IC8vIEluY2x1ZGVzIHRoZSBudWxsIHRlcm1pbmF0aW9uIGNoYXJhY3Rlci4KKyAgICAgICAgcmV0
dXJuIFdlYkdMR2V0SW5mbyh2YWx1ZSk7CiAgICAgZGVmYXVsdDoKICAgICAgICAgbV9jb250ZXh0
LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9FTlVNKTsKICAg
ICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbygpOwpAQCAtMjE5MSw4ICsyMTk1LDcgQEAgU3RyaW5n
IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0U2hhZGVyUwogICAgICAgICByZXR1cm4gU3RyaW5n
KCk7CiAgICAgaWYgKCF2YWxpZGF0ZVdlYkdMT2JqZWN0KHNoYWRlcikpCiAgICAgICAgIHJldHVy
biAiIjsKLSAgICBXZWJHTFN0YXRlUmVzdG9yZXIodGhpcywgZmFsc2UpOwotICAgIHJldHVybiBt
X2NvbnRleHQtPmdldFNoYWRlclNvdXJjZShvYmplY3RPclplcm8oc2hhZGVyKSk7CisgICAgcmV0
dXJuIHNoYWRlci0+Z2V0U291cmNlKCk7CiB9CiAKIFZlY3RvcjxTdHJpbmc+IFdlYkdMUmVuZGVy
aW5nQ29udGV4dDo6Z2V0U3VwcG9ydGVkRXh0ZW5zaW9ucygpCkBAIC0yNzcyLDYgKzI3NzUsNyBA
QCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6c2hhZGVyU291cmNlCiAgICAgU3RyaW5nIHN0
cmluZ1dpdGhvdXRDb21tZW50cyA9IFN0cmlwQ29tbWVudHMoc3RyaW5nKS5yZXN1bHQoKTsKICAg
ICBpZiAoIXZhbGlkYXRlU3RyaW5nKHN0cmluZ1dpdGhvdXRDb21tZW50cykpCiAgICAgICAgIHJl
dHVybjsKKyAgICBzaGFkZXItPnNldFNvdXJjZShzdHJpbmcpOwogICAgIG1fY29udGV4dC0+c2hh
ZGVyU291cmNlKG9iamVjdE9yWmVybyhzaGFkZXIpLCBzdHJpbmdXaXRob3V0Q29tbWVudHMpOwog
ICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFNoYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTaGFkZXIuY3BwCShyZXZpc2lvbiA3NjY4NykKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU2hhZGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDEsNiArNDEsNyBAQCBQYXNzUmVmUHRyPFdlYkdMU2hhZGVyPiBXZWJHTFNoYWRlcjo6Y3Jl
CiBXZWJHTFNoYWRlcjo6V2ViR0xTaGFkZXIoV2ViR0xSZW5kZXJpbmdDb250ZXh0KiBjdHgsIEdD
M0RlbnVtIHR5cGUpCiAgICAgOiBXZWJHTE9iamVjdChjdHgpCiAgICAgLCBtX3R5cGUodHlwZSkK
KyAgICAsIG1fc291cmNlKCIiKQogewogICAgIHNldE9iamVjdChjb250ZXh0KCktPmdyYXBoaWNz
Q29udGV4dDNEKCktPmNyZWF0ZVNoYWRlcih0eXBlKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFNoYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMU2hhZGVyLmgJKHJldmlzaW9uIDc2Njg3KQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTaGFkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiAr
NDAsOSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViR0xTaGFkZXI+IGNyZWF0
ZShXZWJHTFJlbmRlcmluZ0NvbnRleHQqLCBHQzNEZW51bSk7CiAKICAgICBHQzNEZW51bSBnZXRU
eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CisgICAgY29uc3QgU3RyaW5nJiBnZXRTb3Vy
Y2UoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZTsgfQorCisgICAgdm9pZCBzZXRTb3VyY2UoY29u
c3QgU3RyaW5nJiBzb3VyY2UpIHsgbV9zb3VyY2UgPSBzb3VyY2U7IH0KIAogcHJpdmF0ZToKICAg
ICBXZWJHTFNoYWRlcihXZWJHTFJlbmRlcmluZ0NvbnRleHQqLCBHQzNEZW51bSk7CkBAIC00OSw2
ICs1Miw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGlzU2hhZGVyKCkgY29uc3QgeyBy
ZXR1cm4gdHJ1ZTsgfQogCiAgICAgR0MzRGVudW0gbV90eXBlOworICAgIFN0cmluZyBtX3NvdXJj
ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAkocmV2aXNpb24g
NzY2ODcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQzRC5oCSh3b3JraW5nIGNvcHkpCkBAIC04NzQsMTEgKzg3NCwyNCBAQCBwdWJsaWM6CiAgICAg
aW50IG1fY3VycmVudFdpZHRoLCBtX2N1cnJlbnRIZWlnaHQ7CiAKICNpZiBQTEFURk9STShNQUMp
Ci0gICAgdHlwZWRlZiBzdHJ1Y3QgeworICAgIHN0cnVjdCBTaGFkZXJTb3VyY2VFbnRyeSB7Cisg
ICAgICAgIGVudW0gVmFsaWRhdGlvblN0YXR1cyB7CisgICAgICAgICAgICBGYWlsdXJlID0gMCwg
Ly8gTmVlZCB0byBtYXRjaCBDT01QSUxFX1NUQVRVUzpGQUxTRQorICAgICAgICAgICAgU3VjY2Vz
cyA9IDEsIC8vIE5lZWQgdG8gbWF0Y2ggQ09NUElMRV9TVEFUVVM6VFJVRQorICAgICAgICAgICAg
VW5rbm93biAvLyBUaGlzIGluZGljYXRlcyB0aGUgc2hhZGVyIGhhc24ndCBiZWVuIHZhbGlkYXRl
ZC4KKyAgICAgICAgfTsKKworICAgICAgICBTaGFkZXJTb3VyY2VFbnRyeSgpCisgICAgICAgICAg
ICA6IHNvdXJjZSgiIikKKyAgICAgICAgICAgICwgbG9nKCIiKQorICAgICAgICAgICAgLCBzdGF0
dXMoVW5rbm93bikKKyAgICAgICAgeworICAgICAgICB9CisKICAgICAgICAgU3RyaW5nIHNvdXJj
ZTsKICAgICAgICAgU3RyaW5nIGxvZzsKLSAgICAgICAgYm9vbCBpc1ZhbGlkOwotICAgIH0gU2hh
ZGVyU291cmNlRW50cnk7CisgICAgICAgIFZhbGlkYXRpb25TdGF0dXMgc3RhdHVzOworICAgIH07
CiAgICAgSGFzaE1hcDxQbGF0Zm9ybTNET2JqZWN0LCBTaGFkZXJTb3VyY2VFbnRyeT4gbV9zaGFk
ZXJTb3VyY2VNYXA7CiAKICAgICBmcmllbmQgY2xhc3MgRXh0ZW5zaW9uczNET3BlbkdMOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dDNET3BlbkdMLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwCShyZXZpc2lvbiA3NjY4NykK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRl
eHQzRE9wZW5HTC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1MSwzMyArNDUxLDM1IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0M0Q6OmNvbXBpbGVTaGFkZXIoUGwKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgU2hhZGVyU291cmNlRW50cnkmIGVudHJ5ID0gcmVzdWx0LT5zZWNvbmQ7CisgICAgaWYgKGVu
dHJ5LnN0YXR1cyAhPSBTaGFkZXJTb3VyY2VFbnRyeTo6VW5rbm93bikKKyAgICAgICAgcmV0dXJu
OwogCiAgICAgU3RyaW5nIHRyYW5zbGF0ZWRTaGFkZXJTb3VyY2U7CiAgICAgU3RyaW5nIHNoYWRl
ckluZm9Mb2c7CiAKICAgICBib29sIGlzVmFsaWQgPSBtX2NvbXBpbGVyLnZhbGlkYXRlU2hhZGVy
U291cmNlKGVudHJ5LnNvdXJjZS51dGY4KCkuZGF0YSgpLCBzaGFkZXJUeXBlLCB0cmFuc2xhdGVk
U2hhZGVyU291cmNlLCBzaGFkZXJJbmZvTG9nKTsKIAorICAgIGVudHJ5LnNvdXJjZSA9ICIiOyAv
LyBObyBuZWVkIHRvIGNhY2hlIHRoZSBzb3VyY2UgYW55IG1vcmUuCiAgICAgZW50cnkubG9nID0g
c2hhZGVySW5mb0xvZzsKLSAgICBlbnRyeS5pc1ZhbGlkID0gaXNWYWxpZDsKKyAgICBlbnRyeS5z
dGF0dXMgPSBpc1ZhbGlkID8gU2hhZGVyU291cmNlRW50cnk6OlN1Y2Nlc3MgOiBTaGFkZXJTb3Vy
Y2VFbnRyeTo6RmFpbHVyZTsKIAogICAgIGlmICghaXNWYWxpZCkKLSAgICAgICAgcmV0dXJuOyAv
LyBTaGFkZXIgZGlkbid0IHZhbGlkYXRlLCBkb24ndCBtb3ZlIGZvcndhcmQgd2l0aCBjb21waWxp
bmcgdHJhbnNsYXRlZCBzb3VyY2UgICAgCisgICAgICAgIHJldHVybjsgLy8gU2hhZGVyIGRpZG4n
dCB2YWxpZGF0ZSwgZG9uJ3QgbW92ZSBmb3J3YXJkIHdpdGggY29tcGlsaW5nIHRyYW5zbGF0ZWQg
c291cmNlCiAKICAgICBpbnQgdHJhbnNsYXRlZFNoYWRlckxlbmd0aCA9IHRyYW5zbGF0ZWRTaGFk
ZXJTb3VyY2UubGVuZ3RoKCk7CiAKICAgICBjb25zdCBDU3RyaW5nJiB0cmFuc2xhdGVkU2hhZGVy
Q1N0cmluZyA9IHRyYW5zbGF0ZWRTaGFkZXJTb3VyY2UudXRmOCgpOwogICAgIGNvbnN0IGNoYXIq
IHRyYW5zbGF0ZWRTaGFkZXJQdHIgPSB0cmFuc2xhdGVkU2hhZGVyQ1N0cmluZy5kYXRhKCk7Ci0g
ICAgCisKICAgICA6OmdsU2hhZGVyU291cmNlKHNoYWRlciwgMSwgJnRyYW5zbGF0ZWRTaGFkZXJQ
dHIsICZ0cmFuc2xhdGVkU2hhZGVyTGVuZ3RoKTsKLSAgICAKICAgICA6OmdsQ29tcGlsZVNoYWRl
cihzaGFkZXIpOwotICAgIAorCisjaWZuZGVmIE5ERUJVRwogICAgIGludCBHTENvbXBpbGVTdWNj
ZXNzOwotICAgIAogICAgIDo6Z2xHZXRTaGFkZXJpdihzaGFkZXIsIENPTVBJTEVfU1RBVFVTLCAm
R0xDb21waWxlU3VjY2Vzcyk7Ci0gICAgCiAgICAgLy8gQVNTRVJUIHRoYXQgQU5HTEUgZ2VuZXJh
dGVkIEdMU0wgd2lsbCBiZSBhY2NlcHRlZCBieSBPcGVuR0wKICAgICBBU1NFUlQoR0xDb21waWxl
U3VjY2VzcyA9PSBHTF9UUlVFKTsKKyNlbmRpZiAvLyBOREVCVUcKIH0KIAogdm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6Y29weVRleEltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVs
LCBHQzNEZW51bSBpbnRlcm5hbGZvcm1hdCwgR0MzRGludCB4LCBHQzNEaW50IHksIEdDM0RzaXpl
aSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGludCBib3JkZXIpCkBAIC04NTUsOSArODU3
LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6c2hhZGVyU291cmNlKFBsYQogICAgIG1ha2VD
b250ZXh0Q3VycmVudCgpOwogCiAgICAgU2hhZGVyU291cmNlRW50cnkgZW50cnk7Ci0KICAgICBl
bnRyeS5zb3VyY2UgPSBzdHJpbmc7Ci0KICAgICBtX3NoYWRlclNvdXJjZU1hcC5zZXQoc2hhZGVy
LCBlbnRyeSk7CiB9CiAKQEAgLTExOTUsMzkgKzExOTUsMzMgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6Z2V0U2hhZGVyaXYoUGxhdAogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogCiAgICAg
SGFzaE1hcDxQbGF0Zm9ybTNET2JqZWN0LCBTaGFkZXJTb3VyY2VFbnRyeT46Oml0ZXJhdG9yIHJl
c3VsdCA9IG1fc2hhZGVyU291cmNlTWFwLmZpbmQoc2hhZGVyKTsKLSAgICAKICAgICBzd2l0Y2gg
KHBuYW1lKSB7Ci0gICAgICAgIGNhc2UgREVMRVRFX1NUQVRVUzoKLSAgICAgICAgY2FzZSBTSEFE
RVJfVFlQRToKLSAgICAgICAgICAgIC8vIExldCBPcGVuR0wgaGFuZGxlIHRoZXNlLgotICAgICAg
ICAKLSAgICAgICAgICAgIDo6Z2xHZXRTaGFkZXJpdihzaGFkZXIsIHBuYW1lLCB2YWx1ZSk7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgCi0gICAgICAgIGNhc2UgQ09NUElMRV9TVEFUVVM6
Ci0gICAgICAgICAgICBpZiAocmVzdWx0ID09IG1fc2hhZGVyU291cmNlTWFwLmVuZCgpKSB7Ci0g
ICAgICAgICAgICAgICAgKCp2YWx1ZSkgPSBzdGF0aWNfY2FzdDxpbnQ+KGZhbHNlKTsKLSAgICAg
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICAgICAg
KCp2YWx1ZSkgPSBzdGF0aWNfY2FzdDxpbnQ+KHJlc3VsdC0+c2Vjb25kLmlzVmFsaWQpOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAotICAgICAgICBjYXNlIElORk9fTE9HX0xFTkdUSDoK
LSAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gbV9zaGFkZXJTb3VyY2VNYXAuZW5kKCkpIHsKLSAg
ICAgICAgICAgICAgICAoKnZhbHVlKSA9IDA7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgICAgICgqdmFsdWUpID0gZ2V0U2hhZGVySW5m
b0xvZyhzaGFkZXIpLmxlbmd0aCgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAotICAg
ICAgICBjYXNlIFNIQURFUl9TT1VSQ0VfTEVOR1RIOgotICAgICAgICAgICAgKCp2YWx1ZSkgPSBn
ZXRTaGFkZXJTb3VyY2Uoc2hhZGVyKS5sZW5ndGgoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKElO
VkFMSURfRU5VTSk7CisgICAgY2FzZSBERUxFVEVfU1RBVFVTOgorICAgIGNhc2UgU0hBREVSX1RZ
UEU6CisgICAgICAgIC8vIExldCBPcGVuR0wgaGFuZGxlIHRoZXNlLgorICAgICAgICA6OmdsR2V0
U2hhZGVyaXYoc2hhZGVyLCBwbmFtZSwgdmFsdWUpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IENPTVBJTEVfU1RBVFVTOgorICAgICAgICBpZiAocmVzdWx0ID09IG1fc2hhZGVyU291cmNlTWFw
LmVuZCgpKSB7CisgICAgICAgICAgICAoKnZhbHVlKSA9IHN0YXRpY19jYXN0PGludD4oZmFsc2Up
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgICgqdmFsdWUpID0gc3Rh
dGljX2Nhc3Q8aW50PihyZXN1bHQtPnNlY29uZC5zdGF0dXMpOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIElORk9fTE9HX0xFTkdUSDoKKyAgICAgICAgaWYgKHJlc3VsdCA9PSBtX3NoYWRlclNv
dXJjZU1hcC5lbmQoKSkgeworICAgICAgICAgICAgKCp2YWx1ZSkgPSAwOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisgICAgICAgICgqdmFsdWUpID0gZ2V0U2hhZGVySW5mb0xvZyhz
aGFkZXIpLmxlbmd0aCgpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFNIQURFUl9TT1VSQ0Vf
TEVOR1RIOgorICAgICAgICAvLyBXZWJHTFJlbmRlcmluZ0NvbnRleHQgc2hvdWxkIGludGVyY2Vw
dCB0aGlzIHF1ZXJ5LgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgKCp2
YWx1ZSkgPSBnZXRTaGFkZXJTb3VyY2Uoc2hhZGVyKS5sZW5ndGgoKTsKKyAgICAgICAgYnJlYWs7
CisgICAgZGVmYXVsdDoKKyAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoSU5WQUxJRF9FTlVNKTsK
ICAgICB9CiB9CiAKQEAgLTEyMzgsNDEgKzEyMzIsMzQgQEAgU3RyaW5nIEdyYXBoaWNzQ29udGV4
dDNEOjpnZXRTaGFkZXJJbmZvTAogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogCiAgICAgSGFz
aE1hcDxQbGF0Zm9ybTNET2JqZWN0LCBTaGFkZXJTb3VyY2VFbnRyeT46Oml0ZXJhdG9yIHJlc3Vs
dCA9IG1fc2hhZGVyU291cmNlTWFwLmZpbmQoc2hhZGVyKTsKLQogICAgIGlmIChyZXN1bHQgPT0g
bV9zaGFkZXJTb3VyY2VNYXAuZW5kKCkpCiAgICAgICAgICByZXR1cm4gIiI7CisgICAgU2hhZGVy
U291cmNlRW50cnkgZW50cnkgPSByZXN1bHQtPnNlY29uZDsKIAotICAgICBTaGFkZXJTb3VyY2VF
bnRyeSBlbnRyeSA9IHJlc3VsdC0+c2Vjb25kOworICAgIGlmIChlbnRyeS5zdGF0dXMgPT0gU2hh
ZGVyU291cmNlRW50cnk6OkZhaWx1cmUpCisgICAgICAgIHJldHVybiBlbnRyeS5sb2c7CiAKLSAg
ICAgaWYgKGVudHJ5LmlzVmFsaWQpIHsKLSAgICAgICAgIEdMaW50IGxlbmd0aDsKLSAgICAgICAg
IDo6Z2xHZXRTaGFkZXJpdihzaGFkZXIsIEdMX0lORk9fTE9HX0xFTkdUSCwgJmxlbmd0aCk7Ci0g
ICAgICAgICBpZiAoIWxlbmd0aCkKLSAgICAgICAgICAgICByZXR1cm4gIiI7Ci0KLSAgICAgICAg
IEdMc2l6ZWkgc2l6ZTsKLSAgICAgICAgIEdMY2hhciogaW5mbyA9IChHTGNoYXIqKSBmYXN0TWFs
bG9jKGxlbmd0aCk7Ci0KLSAgICAgICAgIDo6Z2xHZXRTaGFkZXJJbmZvTG9nKHNoYWRlciwgbGVu
Z3RoLCAmc2l6ZSwgaW5mbyk7Ci0KLSAgICAgICAgIFN0cmluZyBzKGluZm8pOwotICAgICAgICAg
ZmFzdEZyZWUoaW5mbyk7Ci0gICAgICAgICByZXR1cm4gczsKLSAgICAgfSBlbHNlCi0gICAgICAg
ICByZXR1cm4gZW50cnkubG9nOworICAgIEdMaW50IGxlbmd0aDsKKyAgICA6OmdsR2V0U2hhZGVy
aXYoc2hhZGVyLCBHTF9JTkZPX0xPR19MRU5HVEgsICZsZW5ndGgpOworICAgIGlmICghbGVuZ3Ro
KQorICAgICAgICByZXR1cm4gIiI7CisgICAgR0xzaXplaSBzaXplOworICAgIEdMY2hhciogaW5m
byA9IChHTGNoYXIqKSBmYXN0TWFsbG9jKGxlbmd0aCk7CisgICAgOjpnbEdldFNoYWRlckluZm9M
b2coc2hhZGVyLCBsZW5ndGgsICZzaXplLCBpbmZvKTsKKyAgICBTdHJpbmcgcyhpbmZvKTsKKyAg
ICBmYXN0RnJlZShpbmZvKTsKKyAgICByZXR1cm4gczsKIH0KIAogU3RyaW5nIEdyYXBoaWNzQ29u
dGV4dDNEOjpnZXRTaGFkZXJTb3VyY2UoUGxhdGZvcm0zRE9iamVjdCBzaGFkZXIpCiB7CisgICAg
Ly8gV2ViR0xSZW5kZXJpbmdDb250ZXh0IHNob3VsZCBpbnRlcmNlcHQgdGhpcyBxdWVyeS4KKyAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICBBU1NFUlQoc2hhZGVyKTsKLQogICAgIG1ha2VD
b250ZXh0Q3VycmVudCgpOwotCiAgICAgSGFzaE1hcDxQbGF0Zm9ybTNET2JqZWN0LCBTaGFkZXJT
b3VyY2VFbnRyeT46Oml0ZXJhdG9yIHJlc3VsdCA9IG1fc2hhZGVyU291cmNlTWFwLmZpbmQoc2hh
ZGVyKTsKLQogICAgIGlmIChyZXN1bHQgPT0gbV9zaGFkZXJTb3VyY2VNYXAuZW5kKCkpCiAgICAg
ICAgIHJldHVybiAiIjsKLQogICAgIHJldHVybiByZXN1bHQtPnNlY29uZC5zb3VyY2U7CiB9CiAK
SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDc2NzE1KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDEtMjYgIFpoZW55YW8gTW8gIDx6bW9A
Z29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBzaGFkZXJTb3VyY2UgbmVlZHMgdG8gcHJlc2VydmUgb3JpZ2luYWwgc291cmNlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MjgzMworCisgICAg
ICAgICogZmFzdC9jYW52YXMvd2ViZ2wvZ2wtZ2V0c2hhZGVyc291cmNlLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvZ2wtZ2V0c2hhZGVyc291cmNlLmh0
bWw6IEFkZGVkLgorCiAyMDExLTAxLTI2ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdh
bGlhLmNvbT4KIAogICAgICAgICBDb250aW51ZSBpbXBvcnRpbmcgR1RLKyB0ZXN0IHJlc3VsdHMg
Zm9yIHRoZSBDU1MgMi4xIHRlc3Qgc3VpdGUuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZh
cy93ZWJnbC9nbC1nZXRzaGFkZXJzb3VyY2UtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2dsLWdldHNoYWRlcnNvdXJjZS1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9nbC1nZXRz
aGFkZXJzb3VyY2UtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEyIEBACitU
ZXN0cyB0aGF0IHRoZSBzb3VyY2UgdGhhdCBnb2VzIGludG8gYSBzaGFkZXIgaXMgd2hhdCBjb21l
cyBvdXQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworUEFTUyBzb3VyY2VMZW5ndGgg
aXMgMAorUEFTUyBzb3VyY2UgaXMgb3JpZ2luYWwKK1BBU1Mgc291cmNlTGVuZ3RoIGlzIDE3CitQ
QVNTIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogTk9fRVJST1IgOiBTaG91bGQgYmUgbm8g
ZXJyb3JzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2dsLWdldHNoYWRlcnNvdXJj
ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2dsLWdl
dHNoYWRlcnNvdXJjZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52
YXMvd2ViZ2wvZ2wtZ2V0c2hhZGVyc291cmNlLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
NDQgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5z
aXRpb25hbC8vRU4iCisgICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgor
PGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNvbnRlbnQ9J3RleHQvaHRtbDsgY2hhcnNldD1VVEYtOCcg
aHR0cC1lcXVpdj0nQ29udGVudC1UeXBlJy8+CisgICA8dGl0bGU+V2ViR0wgZ2V0U2hhZGVyU291
cmNlIGNvbmZvcm1hbmNlIHRlc3QuPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvd2ViZ2wtdGVzdC5qcyI+IDwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291
cmNlcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj4gPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxj
YW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSI0IiBoZWlnaHQ9IjQiIHN0eWxlPSJ3aWR0aDogNDBw
eDsgaGVpZ2h0OiAzMHB4OyI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+
Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgaWQ9InZzaGFkZXIiIHR5cGU9Ingt
c2hhZGVyL3gtdmVydGV4Ij5hYmMvL2RlZu+8ru+8r++8tO+8oe+8s++8o++8qe+8qTwvc2NyaXB0
PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IHRoZSBzb3VyY2UgdGhhdCBnb2Vz
IGludG8gYSBzaGFkZXIgaXMgd2hhdCBjb21lcyBvdXQuIik7Cit2YXIgd3R1ID0gV2ViR0xUZXN0
VXRpbHM7Cit2YXIgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImV4YW1wbGUiKTsK
K3ZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoY2FudmFzKTsKK3ZhciBvcmlnaW5hbCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJ2c2hhZGVyIikudGV4dDsKK3ZhciBzaGFkZXIgPSBnbC5j
cmVhdGVTaGFkZXIoZ2wuVkVSVEVYX1NIQURFUik7Cit2YXIgc291cmNlTGVuZ3RoID0gZ2wuZ2V0
U2hhZGVyUGFyYW1ldGVyKHNoYWRlciwgZ2wuU0hBREVSX1NPVVJDRV9MRU5HVEgpOworc2hvdWxk
QmUoInNvdXJjZUxlbmd0aCIsICIwIik7CitnbC5zaGFkZXJTb3VyY2Uoc2hhZGVyLCBvcmlnaW5h
bCk7Cit2YXIgc291cmNlID0gZ2wuZ2V0U2hhZGVyU291cmNlKHNoYWRlcik7CitzaG91bGRCZSgi
c291cmNlIiwgIm9yaWdpbmFsIik7Citzb3VyY2VMZW5ndGggPSBnbC5nZXRTaGFkZXJQYXJhbWV0
ZXIoc2hhZGVyLCBnbC5TSEFERVJfU09VUkNFX0xFTkdUSCk7CitzaG91bGRCZSgic291cmNlTGVu
Z3RoIiwgIjE3Iik7CitzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworZ2xFcnJvclNob3VsZEJl
KGdsLCBnbC5OT19FUlJPUiwgIlNob3VsZCBiZSBubyBlcnJvcnMuIik7Cis8L3NjcmlwdD4KKzwv
Ym9keT4KKzwvYm9keT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KKworPHNjcmlwdD4KKzwvc2NyaXB0PgorCis8L2JvZHk+Cis8L2h0
bWw+CisKKwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>80276</attachid>
            <date>2011-01-26 17:27:19 -0800</date>
            <delta_ts>2011-01-27 10:45:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-52833-20110126172718.patch</filename>
            <type>text/plain</type>
            <size>7255</size>
            <attacher name="Zhenyao Mo">zmo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc2NzE1KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTEtMDEtMjYgIFpoZW55YW8g
TW8gIDx6bW9AZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBzaGFkZXJTb3VyY2UgbmVlZHMgdG8gcHJlc2VydmUgb3JpZ2luYWwgc291
cmNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01Mjgz
MworCisgICAgICAgIFRlc3Q6IGZhc3QvY2FudmFzL3dlYmdsL2dsLWdldHNoYWRlcnNvdXJjZS5o
dG1sCisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRTaGFkZXJQYXJhbWV0
ZXIpOiBJbnRlcmNlcHQgU0hBREVSX1NPVVJDRV9MRU5HVEguCisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFNoYWRlclNvdXJjZSk6IEludGVyY2VwdCB0aGUgY2Fs
bC4KKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6c2hhZGVyU291cmNl
KTogQ2FjaGUgdGhlIHNvdXJjZS4KKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFNoYWRlci5j
cHA6IENhY2hlIHNoYWRlciBzb3VyY2UuCisgICAgICAgIChXZWJDb3JlOjpXZWJHTFNoYWRlcjo6
V2ViR0xTaGFkZXIpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMU2hhZGVyLmg6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xTaGFkZXI6OmdldFNvdXJjZSk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTFNoYWRlcjo6c2V0U291cmNlKToKKwogMjAxMS0wMS0yNiAgVG9ueSBDaGFu
ZyAgPHRvbnlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQuCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5j
cHAJKHJldmlzaW9uIDc2NzAyKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE2NCw5ICsyMTY0LDEzIEBA
IFdlYkdMR2V0SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFMKICAgICAgICAgbV9jb250
ZXh0LT5nZXRTaGFkZXJpdihvYmplY3RPclplcm8oc2hhZGVyKSwgcG5hbWUsICZ2YWx1ZSk7CiAg
ICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50Pih2YWx1
ZSkpOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OklORk9fTE9HX0xFTkdUSDoKLSAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTSEFERVJfU09VUkNFX0xFTkdUSDoKICAgICAgICAgbV9j
b250ZXh0LT5nZXRTaGFkZXJpdihvYmplY3RPclplcm8oc2hhZGVyKSwgcG5hbWUsICZ2YWx1ZSk7
CiAgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8odmFsdWUpOworICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0M0Q6OlNIQURFUl9TT1VSQ0VfTEVOR1RIOgorICAgICAgICB2YWx1ZSA9IHN0YXRpY19j
YXN0PEdDM0RpbnQ+KHNoYWRlci0+Z2V0U291cmNlKCkubGVuZ3RoKCkpOworICAgICAgICBpZiAo
dmFsdWUgPiAwKQorICAgICAgICAgICAgdmFsdWUrKzsgLy8gSW5jbHVkZXMgdGhlIG51bGwgdGVy
bWluYXRpb24gY2hhcmFjdGVyLgorICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKHZhbHVlKTsK
ICAgICBkZWZhdWx0OgogICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBo
aWNzQ29udGV4dDNEOjpJTlZBTElEX0VOVU0pOwogICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZv
KCk7CkBAIC0yMTkxLDggKzIxOTUsNyBAQCBTdHJpbmcgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojpn
ZXRTaGFkZXJTCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICBpZiAoIXZhbGlkYXRlV2Vi
R0xPYmplY3Qoc2hhZGVyKSkKICAgICAgICAgcmV0dXJuICIiOwotICAgIFdlYkdMU3RhdGVSZXN0
b3Jlcih0aGlzLCBmYWxzZSk7Ci0gICAgcmV0dXJuIG1fY29udGV4dC0+Z2V0U2hhZGVyU291cmNl
KG9iamVjdE9yWmVybyhzaGFkZXIpKTsKKyAgICByZXR1cm4gc2hhZGVyLT5nZXRTb3VyY2UoKTsK
IH0KIAogVmVjdG9yPFN0cmluZz4gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRTdXBwb3J0ZWRF
eHRlbnNpb25zKCkKQEAgLTI3NzIsNiArMjc3NSw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250
ZXh0OjpzaGFkZXJTb3VyY2UKICAgICBTdHJpbmcgc3RyaW5nV2l0aG91dENvbW1lbnRzID0gU3Ry
aXBDb21tZW50cyhzdHJpbmcpLnJlc3VsdCgpOwogICAgIGlmICghdmFsaWRhdGVTdHJpbmcoc3Ry
aW5nV2l0aG91dENvbW1lbnRzKSkKICAgICAgICAgcmV0dXJuOworICAgIHNoYWRlci0+c2V0U291
cmNlKHN0cmluZyk7CiAgICAgbV9jb250ZXh0LT5zaGFkZXJTb3VyY2Uob2JqZWN0T3JaZXJvKHNo
YWRlciksIHN0cmluZ1dpdGhvdXRDb21tZW50cyk7CiAgICAgY2xlYW51cEFmdGVyR3JhcGhpY3ND
YWxsKGZhbHNlKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU2hh
ZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFNo
YWRlci5jcHAJKHJldmlzaW9uIDc2Njg3KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xTaGFkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw3IEBAIFBhc3NSZWZQ
dHI8V2ViR0xTaGFkZXI+IFdlYkdMU2hhZGVyOjpjcmUKIFdlYkdMU2hhZGVyOjpXZWJHTFNoYWRl
cihXZWJHTFJlbmRlcmluZ0NvbnRleHQqIGN0eCwgR0MzRGVudW0gdHlwZSkKICAgICA6IFdlYkdM
T2JqZWN0KGN0eCkKICAgICAsIG1fdHlwZSh0eXBlKQorICAgICwgbV9zb3VyY2UoIiIpCiB7CiAg
ICAgc2V0T2JqZWN0KGNvbnRleHQoKS0+Z3JhcGhpY3NDb250ZXh0M0QoKS0+Y3JlYXRlU2hhZGVy
KHR5cGUpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU2hhZGVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTaGFkZXIu
aAkocmV2aXNpb24gNzY2ODcpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFNo
YWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw5IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxXZWJHTFNoYWRlcj4gY3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dCos
IEdDM0RlbnVtKTsKIAogICAgIEdDM0RlbnVtIGdldFR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5
cGU7IH0KKyAgICBjb25zdCBTdHJpbmcmIGdldFNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fc291
cmNlOyB9CisKKyAgICB2b2lkIHNldFNvdXJjZShjb25zdCBTdHJpbmcmIHNvdXJjZSkgeyBtX3Nv
dXJjZSA9IHNvdXJjZTsgfQogCiBwcml2YXRlOgogICAgIFdlYkdMU2hhZGVyKFdlYkdMUmVuZGVy
aW5nQ29udGV4dCosIEdDM0RlbnVtKTsKQEAgLTQ5LDYgKzUyLDcgQEAgcHJpdmF0ZToKICAgICB2
aXJ0dWFsIGJvb2wgaXNTaGFkZXIoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKICAgICBHQzNE
ZW51bSBtX3R5cGU7CisgICAgU3RyaW5nIG1fc291cmNlOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNzY3MTUpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMS0wMS0yNiAgWmhlbnlhbyBN
byAgPHptb0Bnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIHNoYWRlclNvdXJjZSBuZWVkcyB0byBwcmVzZXJ2ZSBvcmlnaW5hbCBzb3Vy
Y2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUyODMz
CisKKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9nbC1nZXRzaGFkZXJzb3VyY2UtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9nbC1nZXRzaGFkZXJz
b3VyY2UuaHRtbDogQWRkZWQuCisKIDIwMTEtMDEtMjYgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2Jp
bnNvbkBpZ2FsaWEuY29tPgogCiAgICAgICAgIENvbnRpbnVlIGltcG9ydGluZyBHVEsrIHRlc3Qg
cmVzdWx0cyBmb3IgdGhlIENTUyAyLjEgdGVzdCBzdWl0ZS4KSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvY2FudmFzL3dlYmdsL2dsLWdldHNoYWRlcnNvdXJjZS1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZ2wtZ2V0c2hhZGVyc291cmNlLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmds
L2dsLWdldHNoYWRlcnNvdXJjZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MTIgQEAKK1Rlc3RzIHRoYXQgdGhlIHNvdXJjZSB0aGF0IGdvZXMgaW50byBhIHNoYWRlciBpcyB3
aGF0IGNvbWVzIG91dC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitQQVNTIHNvdXJj
ZUxlbmd0aCBpcyAwCitQQVNTIHNvdXJjZSBpcyBvcmlnaW5hbAorUEFTUyBzb3VyY2VMZW5ndGgg
aXMgMTcKK1BBU1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6IFNob3Vs
ZCBiZSBubyBlcnJvcnMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZ2wtZ2V0c2hh
ZGVyc291cmNlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2Vi
Z2wvZ2wtZ2V0c2hhZGVyc291cmNlLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2NhbnZhcy93ZWJnbC9nbC1nZXRzaGFkZXJzb3VyY2UuaHRtbAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw0NCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQu
MDEgVHJhbnNpdGlvbmFsLy9FTiIKKyAgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3Nl
LmR0ZCI+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY29udGVudD0ndGV4dC9odG1sOyBjaGFyc2V0
PVVURi04JyBodHRwLWVxdWl2PSdDb250ZW50LVR5cGUnLz4KKyAgIDx0aXRsZT5XZWJHTCBnZXRT
aGFkZXJTb3VyY2UgY29uZm9ybWFuY2UgdGVzdC48L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9InJlc291cmNlcy93ZWJnbC10ZXN0LmpzIj4gPC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL3dlYmdsLXRlc3QtdXRpbHMuanMiPiA8L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjQiIGhlaWdodD0iNCIgc3R5bGU9Indp
ZHRoOiA0MHB4OyBoZWlnaHQ6IDMwcHg7Ij48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9u
Ij48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBpZD0idnNoYWRlciIg
dHlwZT0ieC1zaGFkZXIveC12ZXJ0ZXgiPmFiYy8vZGVm77yu77yv77y077yh77yz77yj77yp77yp
PC9zY3JpcHQ+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgdGhlIHNvdXJjZSB0
aGF0IGdvZXMgaW50byBhIHNoYWRlciBpcyB3aGF0IGNvbWVzIG91dC4iKTsKK3ZhciB3dHUgPSBX
ZWJHTFRlc3RVdGlsczsKK3ZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZXhh
bXBsZSIpOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dChjYW52YXMpOwordmFyIG9yaWdp
bmFsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInZzaGFkZXIiKS50ZXh0OwordmFyIHNoYWRl
ciA9IGdsLmNyZWF0ZVNoYWRlcihnbC5WRVJURVhfU0hBREVSKTsKK3ZhciBzb3VyY2VMZW5ndGgg
PSBnbC5nZXRTaGFkZXJQYXJhbWV0ZXIoc2hhZGVyLCBnbC5TSEFERVJfU09VUkNFX0xFTkdUSCk7
CitzaG91bGRCZSgic291cmNlTGVuZ3RoIiwgIjAiKTsKK2dsLnNoYWRlclNvdXJjZShzaGFkZXIs
IG9yaWdpbmFsKTsKK3ZhciBzb3VyY2UgPSBnbC5nZXRTaGFkZXJTb3VyY2Uoc2hhZGVyKTsKK3No
b3VsZEJlKCJzb3VyY2UiLCAib3JpZ2luYWwiKTsKK3NvdXJjZUxlbmd0aCA9IGdsLmdldFNoYWRl
clBhcmFtZXRlcihzaGFkZXIsIGdsLlNIQURFUl9TT1VSQ0VfTEVOR1RIKTsKK3Nob3VsZEJlKCJz
b3VyY2VMZW5ndGgiLCAiMTciKTsKK3N1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CitnbEVycm9y
U2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SLCAiU2hvdWxkIGJlIG5vIGVycm9ycy4iKTsKKzwvc2Ny
aXB0PgorPC9ib2R5PgorPC9ib2R5PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0PgorPC9zY3JpcHQ+CisKKzwvYm9k
eT4KKzwvaHRtbD4KKworCg==
</data>
<flag name="review"
          id="71746"
          type_id="1"
          status="+"
          setter="kbr"
    />
          </attachment>
      

    </bug>

</bugzilla>