<?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>37118</bug_id>
          
          <creation_ts>2010-04-05 15:32:47 -0700</creation_ts>
          <short_desc>WebGLUniformLocation objects must be invalidated during linkProgram</short_desc>
          <delta_ts>2010-12-09 02:22:29 -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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kenneth Russell">kbr</reporter>
          <assigned_to name="Zhenyao Mo">zmo</assigned_to>
          <cc>abarth</cc>
    
    <cc>cmarrin</cc>
    
    <cc>enne</cc>
    
    <cc>eric</cc>
    
    <cc>kbr</cc>
    
    <cc>oliver</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zmo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>208741</commentid>
    <comment_count>0</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-04-05 15:32:47 -0700</bug_when>
    <thetext>Conceptually, when a WebGLProgram is relinked, any WebGLUniformLocation objects that were previously queried are no longer valid. Code needs to be added to the WebKit WebGL implementation to prevent invalid WebGLUniformLocation objects from being passed in. This can be as simple as keeping a link count in both the WebGLProgram and WebGLUniformLocation objects, incrementing the link count during linkProgram, and verifying equality of the link count when taking in WebGLUniformLocation objects.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>318414</commentid>
    <comment_count>1</comment_count>
      <attachid>75838</attachid>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2010-12-07 13:45:09 -0800</bug_when>
    <thetext>Created attachment 75838
patch

Test will be synced back to khronos once reviewed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>318625</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-12-07 21:51:37 -0800</bug_when>
    <thetext>Attachment 75838 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/update-webkit&apos;]&quot; exit_code: 2
Updating OpenSource
Incomplete data: Delta source ended unexpectedly at /usr/lib/git-core/git-svn line 5061

Died at WebKitTools/Scripts/update-webkit line 132.


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>318920</commentid>
    <comment_count>3</comment_count>
      <attachid>75838</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-12-08 11:47:33 -0800</bug_when>
    <thetext>Comment on attachment 75838
patch

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

Aside from the comments above the logic looks okay, but I think the term &quot;link signature&quot; is confusing. I&apos;d suggest &quot;link count&quot; or &quot;numberOfLinkProgramCalls&quot;.

&gt; WebCore/html/canvas/WebGLUniformLocation.cpp:52
&gt; +    if (!m_program || m_program-&gt;getLinkSignature() != m_linkSignature)

Since the constructor asserts that m_program is non-NULL, checking against !m_program is unnecessary.

&gt; WebCore/html/canvas/WebGLUniformLocation.cpp:62
&gt; +        return -1;

I don&apos;t think silently returning -1 here is a good idea. The location -1 is treated specially by OpenGL -- any call like glUniform3f taking a location of -1 is silently ignored. If the WebGLRenderingContext ends up calling this then it will likely produce wrong results instead of synthesizing the error it should. I think this entry point should probably ASSERT that the link signatures match.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>319123</commentid>
    <comment_count>4</comment_count>
      <attachid>75984</attachid>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2010-12-08 16:44:31 -0800</bug_when>
    <thetext>Created attachment 75984
revised patch: responding to kbr&apos;s review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>319127</commentid>
    <comment_count>5</comment_count>
      <attachid>75984</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-12-08 16:47:54 -0800</bug_when>
    <thetext>Comment on attachment 75984
revised patch: responding to kbr&apos;s review

Looks good. Assuming that all layout tests were run in debug mode and that the new assertion wasn&apos;t triggered.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>319161</commentid>
    <comment_count>6</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2010-12-08 17:40:37 -0800</bug_when>
    <thetext>Committed r73573: &lt;http://trac.webkit.org/changeset/73573&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>319347</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-12-09 02:22:29 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/73573 might have broken GTK Linux 32-bit Release</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75838</attachid>
            <date>2010-12-07 13:45:09 -0800</date>
            <delta_ts>2010-12-08 16:44:31 -0800</delta_ts>
            <desc>patch</desc>
            <filename>location.patch</filename>
            <type>text/plain</type>
            <size>11967</size>
            <attacher name="Zhenyao Mo">zmo</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MzQ1NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjUgQEAKKzIwMTAtMTItMDcgIFpoZW55YW8gTW8gIDx6bW9AZ29vZ2xlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWJHTFVu
aWZvcm1Mb2NhdGlvbiBvYmplY3RzIG11c3QgYmUgaW52YWxpZGF0ZWQgZHVyaW5nIGxpbmtQcm9n
cmFtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNzEx
OAorCisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xQcm9ncmFtLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMUHJvZ3JhbTo6V2ViR0xQcm9ncmFtKTogSW5pdGlhbGl6ZSBsaW5rIHNpZ25h
dHVyZSB0byAwLgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xQcm9ncmFtOjpjYWNoZUFjdGl2ZUF0
dHJpYkxvY2F0aW9ucyk6IERvbid0IGNoZWNrIGxpbmsgc3RhdHVzIHRocm91Z2ggZ2wgY2FsbDsg
dXNlIHRoZSBjYWNoZWQgc3RhdHVzIGluc3RlYWQuCisgICAgICAgICogaHRtbC9jYW52YXMvV2Vi
R0xQcm9ncmFtLmg6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFByb2dyYW06OmdldExpbmtTaWdu
YXR1cmUpOiBHZXQgbGluayBzaWduYXR1cmUuCisgICAgICAgIChXZWJDb3JlOjpXZWJHTFByb2dy
YW06OnVwZGF0ZUxpbmtTaWduYXR1cmUpOiBJbmNyZWFzZSBsaW5rIHNpZ25hdHVyZSBieSAxLgor
ICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFVuaWZvcm0pOiBGaXggYSBidWcg
d2hlcmUgd3JvbmcgZXJyb3IgaXMgZ2VuZXJhdGVkLgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xS
ZW5kZXJpbmdDb250ZXh0OjpsaW5rUHJvZ3JhbSk6IGNhbGwgdXBkYXRlTGlua1NpZ25hdHVyZSBh
ZnRlciBsaW5rUHJvZ3JhbS4KKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFVuaWZvcm1Mb2Nh
dGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFVuaWZvcm1Mb2NhdGlvbjo6V2ViR0xV
bmlmb3JtTG9jYXRpb24pOiBTZXQgcHJvZ3JhbSdzIGxpbmsgc2lnbmF0dXJlIHVwb24gY3JlYXRp
b24uCisgICAgICAgIChXZWJDb3JlOjpXZWJHTFVuaWZvcm1Mb2NhdGlvbjo6cHJvZ3JhbSk6IFJl
dHVybiBudWxsIGlmIHNpZ25hdHVyZSBkb2Vzbid0IG1hdGNoIHRoZSBwcm9ncmFtJ3MuCisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTFVuaWZvcm1Mb2NhdGlvbjo6bG9jYXRpb24pOiBSZXR1cm4gLTEg
aWYgc2lnbmF0dXJlIGRvZXNuJ3QgbWF0Y2ggdGhlIHByb2dyYW0ncy4KKyAgICAgICAgKiBodG1s
L2NhbnZhcy9XZWJHTFVuaWZvcm1Mb2NhdGlvbi5oOgorCiAyMDEwLTEyLTA3ICBQaGlsaXBwZSBO
b3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBHdXN0
YXZvIE5vcm9uaGEgU2lsdmEuCkluZGV4OiBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUHJvZ3Jh
bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFByb2dyYW0uY3Bw
CShyZXZpc2lvbiA3MzQyMCkKKysrIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xQcm9ncmFtLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDEsNiArNDEsNyBAQCBQYXNzUmVmUHRyPFdlYkdMUHJvZ3Jh
bT4gV2ViR0xQcm9ncmFtOjpjCiBXZWJHTFByb2dyYW06OldlYkdMUHJvZ3JhbShXZWJHTFJlbmRl
cmluZ0NvbnRleHQqIGN0eCkKICAgICA6IFdlYkdMT2JqZWN0KGN0eCkKICAgICAsIG1fbGlua1N0
YXR1cyhmYWxzZSkKKyAgICAsIG1fbGlua1NpZ25hdHVyZSgwKQogewogICAgIHNldE9iamVjdChj
b250ZXh0KCktPmdyYXBoaWNzQ29udGV4dDNEKCktPmNyZWF0ZVByb2dyYW0oKSk7CiB9CkBAIC02
NCw5ICs2NSw5IEBAIGJvb2wgV2ViR0xQcm9ncmFtOjpjYWNoZUFjdGl2ZUF0dHJpYkxvY2EKICAg
ICBpZiAoIW9iamVjdCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgR3JhcGhpY3NDb250
ZXh0M0QqIGNvbnRleHQzZCA9IGNvbnRleHQoKS0+Z3JhcGhpY3NDb250ZXh0M0QoKTsKLSAgICBp
bnQgbGlua1N0YXR1cyA9IDA7Ci0gICAgY29udGV4dDNkLT5nZXRQcm9ncmFtaXYob2JqZWN0KCks
IEdyYXBoaWNzQ29udGV4dDNEOjpMSU5LX1NUQVRVUywgJmxpbmtTdGF0dXMpOwotICAgIGlmICgh
bGlua1N0YXR1cykKKworICAgIC8vIEFzc3VtZSBsaW5rIHN0YXR1cyBoYXMgYWxyZWFkeSBiZWVu
IGNhY2hlZC4KKyAgICBpZiAoIW1fbGlua1N0YXR1cykKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgaW50IG51bUF0dHJpYnMgPSAwOwpJbmRleDogV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TFByb2dyYW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUHJvZ3Jh
bS5oCShyZXZpc2lvbiA3MzQyMCkKKysrIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xQcm9ncmFt
LmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDYgKzUzLDEzIEBAIHB1YmxpYzoKICAgICBib29sIGdl
dExpbmtTdGF0dXMoKSBjb25zdCB7IHJldHVybiBtX2xpbmtTdGF0dXM7IH0KICAgICB2b2lkIHNl
dExpbmtTdGF0dXMoYm9vbCBzdGF0dXMpIHsgbV9saW5rU3RhdHVzID0gc3RhdHVzOyB9CiAKKyAg
ICB1bnNpZ25lZCBsb25nIGdldExpbmtTaWduYXR1cmUoKSBjb25zdCB7IHJldHVybiBtX2xpbmtT
aWduYXR1cmU7IH0KKworICAgIC8vIFRoaXMgaXMgdG8gYmUgY2FsbGVkIGV2ZXJ5dGltZSBhZnRl
ciB0aGUgcHJvZ3JhbSBpcyBzdWNjZXNzZnVsbHkgbGlua2VkLgorICAgIC8vIFdlIGRvbid0IGRl
YWwgd2l0aCBpbnRlZ2VyIG92ZXJmbG93IGhlcmUsIGFzc3VtaW5nIGluIHJlYWxpdHkgYSBwcm9n
cmFtCisgICAgLy8gd2lsbCBuZXZlciBiZSBsaW5rZWQgc28gbWFueSB0aW1lcy4KKyAgICB2b2lk
IHVwZGF0ZUxpbmtTaWduYXR1cmUoKSB7ICsrbV9saW5rU2lnbmF0dXJlOyB9CisKICAgICBXZWJH
TFNoYWRlciogZ2V0QXR0YWNoZWRTaGFkZXIoR3JhcGhpY3NDb250ZXh0M0Q6OldlYkdMRW51bVR5
cGUpOwogICAgIGJvb2wgYXR0YWNoU2hhZGVyKFdlYkdMU2hhZGVyKik7CiAgICAgYm9vbCBkZXRh
Y2hTaGFkZXIoV2ViR0xTaGFkZXIqKTsKQEAgLTY5LDYgKzc2LDEwIEBAIHByaXZhdGU6CiAKICAg
ICBib29sIG1fbGlua1N0YXR1czsKIAorICAgIC8vIFRoaXMgaXMgdXNlZCB0byB0cmFjayB3aGV0
aGVyIGEgV2ViR0xVbmlmb3JtTG9jYXRpb24gYmVsb25ncyB0byB0aGlzCisgICAgLy8gcHJvZ3Jh
bSBvciBub3QuCisgICAgdW5zaWduZWQgbG9uZyBtX2xpbmtTaWduYXR1cmU7CisKICAgICBSZWZQ
dHI8V2ViR0xTaGFkZXI+IG1fdmVydGV4U2hhZGVyOwogICAgIFJlZlB0cjxXZWJHTFNoYWRlcj4g
bV9mcmFnbWVudFNoYWRlcjsKIH07CkluZGV4OiBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TFJlbmRlcmluZ0NvbnRleHQuY3BwCShyZXZpc2lvbiA3MzQyMCkKKysrIFdlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg1OSwx
MSArMTg1OSw3IEBAIFdlYkdMR2V0SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFUKICAg
ICBVTlVTRURfUEFSQU0oZWMpOwogICAgIGlmIChpc0NvbnRleHRMb3N0KCkgfHwgIXZhbGlkYXRl
V2ViR0xPYmplY3QocHJvZ3JhbSkpCiAgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oKTsKLSAg
ICBpZiAoIXVuaWZvcm1Mb2NhdGlvbikgewotICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVH
TEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFKTsKLSAgICAgICAgcmV0dXJu
IFdlYkdMR2V0SW5mbygpOwotICAgIH0KLSAgICBpZiAodW5pZm9ybUxvY2F0aW9uLT5wcm9ncmFt
KCkgIT0gcHJvZ3JhbSkgeworICAgIGlmICghdW5pZm9ybUxvY2F0aW9uIHx8IHVuaWZvcm1Mb2Nh
dGlvbi0+cHJvZ3JhbSgpICE9IHByb2dyYW0pIHsKICAgICAgICAgbV9jb250ZXh0LT5zeW50aGVz
aXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04pOwogICAgICAg
ICByZXR1cm4gV2ViR0xHZXRJbmZvKCk7CiAgICAgfQpAQCAtMjE3NCwxMSArMjE3MCwxMyBAQCB2
b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6bGlua1Byb2dyYW0oCiAgICAgfQogCiAgICAgbV9j
b250ZXh0LT5saW5rUHJvZ3JhbShvYmplY3RPclplcm8ocHJvZ3JhbSkpOwotICAgIHByb2dyYW0t
PmNhY2hlQWN0aXZlQXR0cmliTG9jYXRpb25zKCk7CisgICAgcHJvZ3JhbS0+dXBkYXRlTGlua1Np
Z25hdHVyZSgpOwogICAgIC8vIGNhY2hlIGxpbmsgc3RhdHVzCiAgICAgaW50IHZhbHVlID0gMDsK
ICAgICBtX2NvbnRleHQtPmdldFByb2dyYW1pdihvYmplY3RPclplcm8ocHJvZ3JhbSksIEdyYXBo
aWNzQ29udGV4dDNEOjpMSU5LX1NUQVRVUywgJnZhbHVlKTsKICAgICBwcm9ncmFtLT5zZXRMaW5r
U3RhdHVzKHN0YXRpY19jYXN0PGJvb2w+KHZhbHVlKSk7CisgICAgLy8gTmVlZCB0byBjYWNoZSBs
aW5rIHN0YXR1cyBiZWZvcmUgY2FjaGluZyBhY3RpdmUgYXR0cmlidXRlIGxvY2F0aW9ucy4KKyAg
ICBwcm9ncmFtLT5jYWNoZUFjdGl2ZUF0dHJpYkxvY2F0aW9ucygpOwogICAgIGNsZWFudXBBZnRl
ckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CiAKSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xVbmlmb3JtTG9jYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xVbmlmb3JtTG9jYXRpb24uY3BwCShyZXZpc2lvbiA3MzQyMCkKKysrIFdlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xVbmlmb3JtTG9jYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2
ICs0MSwyNiBAQCBXZWJHTFVuaWZvcm1Mb2NhdGlvbjo6V2ViR0xVbmlmb3JtTG9jYXRpCiAgICAg
OiBtX3Byb2dyYW0ocHJvZ3JhbSkKICAgICAsIG1fbG9jYXRpb24obG9jYXRpb24pCiB7CisgICAg
QVNTRVJUKG1fcHJvZ3JhbSk7CisgICAgbV9saW5rU2lnbmF0dXJlID0gbV9wcm9ncmFtLT5nZXRM
aW5rU2lnbmF0dXJlKCk7Cit9CisKK1dlYkdMUHJvZ3JhbSogV2ViR0xVbmlmb3JtTG9jYXRpb246
OnByb2dyYW0oKSBjb25zdAoreworICAgIC8vIElmIHRoZSBwcm9ncmFtIGhhcyBiZWVuIGxpbmtl
ZCBhZ2FpbiwgdGhlbiB0aGlzIFVuaWZvcm1Mb2NhdGlvbiBpcyBubworICAgIC8vIGxvbmdlciB2
YWxpZC4KKyAgICBpZiAoIW1fcHJvZ3JhbSB8fCBtX3Byb2dyYW0tPmdldExpbmtTaWduYXR1cmUo
KSAhPSBtX2xpbmtTaWduYXR1cmUpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBtX3By
b2dyYW0uZ2V0KCk7Cit9CisKK2xvbmcgV2ViR0xVbmlmb3JtTG9jYXRpb246OmxvY2F0aW9uKCkg
Y29uc3QKK3sKKyAgICAvLyBJZiB0aGUgcHJvZ3JhbSBoYXMgYmVlbiBsaW5rZWQgYWdhaW4sIHRo
ZW4gdGhpcyBVbmlmb3JtTG9jYXRpb24gaXMgbm8KKyAgICAvLyBsb25nZXIgdmFsaWQuCisgICAg
aWYgKCFtX3Byb2dyYW0gfHwgbV9wcm9ncmFtLT5nZXRMaW5rU2lnbmF0dXJlKCkgIT0gbV9saW5r
U2lnbmF0dXJlKQorICAgICAgICByZXR1cm4gLTE7CisgICAgcmV0dXJuIG1fbG9jYXRpb247CiB9
CiAKIH0KSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xVbmlmb3JtTG9jYXRpb24uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVW5pZm9ybUxvY2F0aW9uLmgJ
KHJldmlzaW9uIDczNDIwKQorKysgV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFVuaWZvcm1Mb2Nh
dGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw5ICs0MSw5IEBAIHB1YmxpYzoKIAogICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFdlYkdMVW5pZm9ybUxvY2F0aW9uPiBjcmVhdGUoV2ViR0xQcm9ncmFt
KiBwcm9ncmFtLCBsb25nIGxvY2F0aW9uKTsKIAotICAgIFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSgp
IGNvbnN0IHsgcmV0dXJuIG1fcHJvZ3JhbS5nZXQoKTsgfQorICAgIFdlYkdMUHJvZ3JhbSogcHJv
Z3JhbSgpIGNvbnN0OwogCi0gICAgbG9uZyBsb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbG9j
YXRpb247IH0KKyAgICBsb25nIGxvY2F0aW9uKCkgY29uc3Q7CiAKIHByb3RlY3RlZDoKICAgICBX
ZWJHTFVuaWZvcm1Mb2NhdGlvbihXZWJHTFByb2dyYW0qIHByb2dyYW0sIGxvbmcgbG9jYXRpb24p
OwpAQCAtNTEsNiArNTEsNyBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIFJlZlB0cjxXZWJH
TFByb2dyYW0+IG1fcHJvZ3JhbTsKICAgICBsb25nIG1fbG9jYXRpb247CisgICAgdW5zaWduZWQg
bG9uZyBtX2xpbmtTaWduYXR1cmU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4
OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCShyZXZpc2lvbiA3MzQ1NikKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEwLTEyLTA3ICBaaGVueWFvIE1vICA8em1vQGdvb2ds
ZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
V2ViR0xVbmlmb3JtTG9jYXRpb24gb2JqZWN0cyBtdXN0IGJlIGludmFsaWRhdGVkIGR1cmluZyBs
aW5rUHJvZ3JhbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MzcxMTgKKworICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL3VuaWZvcm0tbG9jYXRpb24t
ZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL3VuaWZvcm0tbG9jYXRp
b24uaHRtbDogQ2hlY2sgdGhhdCBhZnRlciBsaW5rUHJvZ3JhbSwgYWxsIHByZXZpb3VzIHVuaWZv
cm0gbG9jYXRpb25zIGJlY29tZSBpbnZhbGlkLgorCiAyMDEwLTEyLTA3ICBQaGlsaXBwZSBOb3Jt
YW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBHdXN0YXZv
IE5vcm9uaGEgU2lsdmEuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC91bmlm
b3JtLWxvY2F0aW9uLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2NhbnZhcy93ZWJnbC91bmlmb3JtLWxvY2F0aW9uLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNzM0
MjApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC91bmlmb3JtLWxvY2F0aW9uLWV4
cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTAsMTQgKzEwLDIyIEBAIFBBU1MgY29udGV4
dEEudW5pZm9ybU1hdHJpeDRmdihudWxsLCBmYWwKIFBBU1MgY29udGV4dEEudXNlUHJvZ3JhbShw
cm9ncmFtUykgZ2VuZXJhdGVkIGV4cGVjdGVkIEdMIGVycm9yOiBOT19FUlJPUi4KIFBBU1MgY29u
dGV4dEEudW5pZm9ybTFpKGxvY2F0aW9uU3gsIDMpIGdlbmVyYXRlZCBleHBlY3RlZCBHTCBlcnJv
cjogTk9fRVJST1IuCiBQQVNTIGNvbnRleHRBLnVuaWZvcm0xZihsb2NhdGlvbkFycmF5MCwgNC4w
KSBnZW5lcmF0ZWQgZXhwZWN0ZWQgR0wgZXJyb3I6IE5PX0VSUk9SLgorUEFTUyBjb250ZXh0QS51
bmlmb3JtMWYobG9jYXRpb25BcnJheTEsIDUuMCkgZ2VuZXJhdGVkIGV4cGVjdGVkIEdMIGVycm9y
OiBOT19FUlJPUi4KIFBBU1MgY29udGV4dEEuZ2V0VW5pZm9ybShwcm9ncmFtUywgbG9jYXRpb25T
eCkgaXMgMwogUEFTUyBjb250ZXh0QS5nZXRVbmlmb3JtKHByb2dyYW1TLCBsb2NhdGlvbkFycmF5
MCkgaXMgNC4wCitQQVNTIGNvbnRleHRBLmdldFVuaWZvcm0ocHJvZ3JhbVMsIGxvY2F0aW9uQXJy
YXkxKSBpcyA1LjAKIFBBU1MgY29udGV4dEEudXNlUHJvZ3JhbShwcm9ncmFtVikgZ2VuZXJhdGVk
IGV4cGVjdGVkIEdMIGVycm9yOiBOT19FUlJPUi4KIFBBU1MgY29udGV4dEEudW5pZm9ybTRmdihs
b2NhdGlvblZlYzQsIHZlYykgZ2VuZXJhdGVkIGV4cGVjdGVkIEdMIGVycm9yOiBOT19FUlJPUi4K
IFBBU1MgY29udGV4dEEuZ2V0VW5pZm9ybShwcm9ncmFtViwgbG9jYXRpb25WZWM0KSBpcyB2ZWMK
IFBBU1MgY29udGV4dEEuZ2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW1WLCAiSURvbnRFeGlzdCIp
IGlzIG51bGwKIFBBU1MgY29udGV4dEEubGlua1Byb2dyYW0ocHJvZ3JhbUExKSBnZW5lcmF0ZWQg
ZXhwZWN0ZWQgR0wgZXJyb3I6IE5PX0VSUk9SLgogUEFTUyBjb250ZXh0QS51bmlmb3JtTWF0cml4
NGZ2KGxvY2F0aW9uQSwgZmFsc2UsIG1hdCkgZ2VuZXJhdGVkIGV4cGVjdGVkIEdMIGVycm9yOiBJ
TlZBTElEX09QRVJBVElPTi4KK1BBU1MgY29udGV4dEEudXNlUHJvZ3JhbShwcm9ncmFtUykgZ2Vu
ZXJhdGVkIGV4cGVjdGVkIEdMIGVycm9yOiBOT19FUlJPUi4KK1BBU1MgY29udGV4dEEubGlua1By
b2dyYW0ocHJvZ3JhbVMpIGdlbmVyYXRlZCBleHBlY3RlZCBHTCBlcnJvcjogTk9fRVJST1IuCitQ
QVNTIGNvbnRleHRBLnVuaWZvcm0xaShsb2NhdGlvblN4LCAzKSBnZW5lcmF0ZWQgZXhwZWN0ZWQg
R0wgZXJyb3I6IElOVkFMSURfT1BFUkFUSU9OLgorUEFTUyBjb250ZXh0QS5nZXRVbmlmb3JtKHBy
b2dyYW1TLCBsb2NhdGlvblN4KSBnZW5lcmF0ZWQgZXhwZWN0ZWQgR0wgZXJyb3I6IElOVkFMSURf
T1BFUkFUSU9OLgorUEFTUyBjb250ZXh0QS51bmlmb3JtMWkobG9jYXRpb25TeCwgMykgZ2VuZXJh
dGVkIGV4cGVjdGVkIEdMIGVycm9yOiBOT19FUlJPUi4KK1BBU1MgY29udGV4dEEuZ2V0VW5pZm9y
bShwcm9ncmFtUywgbG9jYXRpb25TeCkgaXMgMwogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQogCiBURVNUIENPTVBMRVRFCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJn
bC91bmlmb3JtLWxvY2F0aW9uLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9j
YW52YXMvd2ViZ2wvdW5pZm9ybS1sb2NhdGlvbi5odG1sCShyZXZpc2lvbiA3MzQyMCkKKysrIExh
eW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3VuaWZvcm0tbG9jYXRpb24uaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMjIsNiArMjIsNyBAQCB2YXIgbG9jYXRpb25BID0gY29udGV4dEEuZ2V0VW5p
Zm9ybUxvY2F0CiB2YXIgbG9jYXRpb25CID0gY29udGV4dEIuZ2V0VW5pZm9ybUxvY2F0aW9uKHBy
b2dyYW1CLCAndV9tb2RlbFZpZXdQcm9qTWF0cml4Jyk7CiB2YXIgbG9jYXRpb25TeCA9IGNvbnRl
eHRBLmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtUywgInVfc3RydWN0LngiKTsKIHZhciBsb2Nh
dGlvbkFycmF5MCA9IGNvbnRleHRBLmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtUywgInVfYXJy
YXlbMF0iKTsKK3ZhciBsb2NhdGlvbkFycmF5MSA9IGNvbnRleHRBLmdldFVuaWZvcm1Mb2NhdGlv
bihwcm9ncmFtUywgInVfYXJyYXlbMV0iKTsKIHZhciBsb2NhdGlvblZlYzQgPSBjb250ZXh0QS5n
ZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbVYsICJmdmFsNCIpOwogCiB2YXIgdmVjID0gWzEsIDIs
IDMsIDRdOwpAQCAtMzYsOSArMzcsMTEgQEAgc2hvdWxkR2VuZXJhdGVHTEVycm9yKGNvbnRleHRB
LCBjb250ZXh0QQogc2hvdWxkR2VuZXJhdGVHTEVycm9yKGNvbnRleHRBLCBjb250ZXh0QS5OT19F
UlJPUiwgImNvbnRleHRBLnVzZVByb2dyYW0ocHJvZ3JhbVMpIik7CiBzaG91bGRHZW5lcmF0ZUdM
RXJyb3IoY29udGV4dEEsIGNvbnRleHRBLk5PX0VSUk9SLCAiY29udGV4dEEudW5pZm9ybTFpKGxv
Y2F0aW9uU3gsIDMpIik7CiBzaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dEEsIGNvbnRleHRB
Lk5PX0VSUk9SLCAiY29udGV4dEEudW5pZm9ybTFmKGxvY2F0aW9uQXJyYXkwLCA0LjApIik7Citz
aG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dEEsIGNvbnRleHRBLk5PX0VSUk9SLCAiY29udGV4
dEEudW5pZm9ybTFmKGxvY2F0aW9uQXJyYXkxLCA1LjApIik7CiAKIHNob3VsZEJlKCJjb250ZXh0
QS5nZXRVbmlmb3JtKHByb2dyYW1TLCBsb2NhdGlvblN4KSIsICIzIik7CiBzaG91bGRCZSgiY29u
dGV4dEEuZ2V0VW5pZm9ybShwcm9ncmFtUywgbG9jYXRpb25BcnJheTApIiwgIjQuMCIpOworc2hv
dWxkQmUoImNvbnRleHRBLmdldFVuaWZvcm0ocHJvZ3JhbVMsIGxvY2F0aW9uQXJyYXkxKSIsICI1
LjAiKTsKIAogc2hvdWxkR2VuZXJhdGVHTEVycm9yKGNvbnRleHRBLCBjb250ZXh0QS5OT19FUlJP
UiwgImNvbnRleHRBLnVzZVByb2dyYW0ocHJvZ3JhbVYpIik7CiBzaG91bGRHZW5lcmF0ZUdMRXJy
b3IoY29udGV4dEEsIGNvbnRleHRBLk5PX0VSUk9SLCAiY29udGV4dEEudW5pZm9ybTRmdihsb2Nh
dGlvblZlYzQsIHZlYykiKTsKQEAgLTQ5LDYgKzUyLDE4IEBAIHNob3VsZEdlbmVyYXRlR0xFcnJv
cihjb250ZXh0QSwgY29udGV4dEEKIC8vIEFmdGVyIGxpbmtpbmcgYWxsIGJveGVzIGFyZSBiYWQu
CiBzaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dEEsIGNvbnRleHRBLklOVkFMSURfT1BFUkFU
SU9OLCAiY29udGV4dEEudW5pZm9ybU1hdHJpeDRmdihsb2NhdGlvbkEsIGZhbHNlLCBtYXQpIik7
CiAKKy8vIGFmdGVyIHJlLWxpbmtpbmcgdGhlIHNhbWUgcHJvZ3JhbSwgYWxsIHVuaWZvcm0gbG9j
YXRpb25zIGJlY29tZSBpbnZhbGlkLgorc2hvdWxkR2VuZXJhdGVHTEVycm9yKGNvbnRleHRBLCBj
b250ZXh0QS5OT19FUlJPUiwgImNvbnRleHRBLnVzZVByb2dyYW0ocHJvZ3JhbVMpIik7CitzaG91
bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dEEsIGNvbnRleHRBLk5PX0VSUk9SLCAiY29udGV4dEEu
bGlua1Byb2dyYW0ocHJvZ3JhbVMpIik7CitzaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dEEs
IGNvbnRleHRBLklOVkFMSURfT1BFUkFUSU9OLCAiY29udGV4dEEudW5pZm9ybTFpKGxvY2F0aW9u
U3gsIDMpIik7CitzaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dEEsIGNvbnRleHRBLklOVkFM
SURfT1BFUkFUSU9OLCAiY29udGV4dEEuZ2V0VW5pZm9ybShwcm9ncmFtUywgbG9jYXRpb25TeCki
KTsKKworLy8gUmV0cmlldmUgdGhlIGxvY2F0aW9ucyBhZ2FpbiwgYW5kIHRoZXkgc2hvdWxkIGJl
IGdvb2QuCitsb2NhdGlvblN4ID0gY29udGV4dEEuZ2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW1T
LCAidV9zdHJ1Y3QueCIpOworbG9jYXRpb25BcnJheTAgPSBjb250ZXh0QS5nZXRVbmlmb3JtTG9j
YXRpb24ocHJvZ3JhbVMsICJ1X2FycmF5WzBdIik7CitzaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29u
dGV4dEEsIGNvbnRleHRBLk5PX0VSUk9SLCAiY29udGV4dEEudW5pZm9ybTFpKGxvY2F0aW9uU3gs
IDMpIik7CitzaG91bGRCZSgiY29udGV4dEEuZ2V0VW5pZm9ybShwcm9ncmFtUywgbG9jYXRpb25T
eCkiLCAiMyIpOworCiBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwogPC9zY3JpcHQ+CiAK
</data>
<flag name="review"
          id="66685"
          type_id="1"
          status="-"
          setter="kbr"
    />
    <flag name="commit-queue"
          id="66686"
          type_id="3"
          status="-"
          setter="zmo"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75984</attachid>
            <date>2010-12-08 16:44:31 -0800</date>
            <delta_ts>2010-12-08 16:47:54 -0800</delta_ts>
            <desc>revised patch: responding to kbr&apos;s review</desc>
            <filename>location.patch</filename>
            <type>text/plain</type>
            <size>11839</size>
            <attacher name="Zhenyao Mo">zmo</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MzQ1NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjUgQEAKKzIwMTAtMTItMDcgIFpoZW55YW8gTW8gIDx6bW9AZ29vZ2xlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWJHTFVu
aWZvcm1Mb2NhdGlvbiBvYmplY3RzIG11c3QgYmUgaW52YWxpZGF0ZWQgZHVyaW5nIGxpbmtQcm9n
cmFtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNzEx
OAorCisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xQcm9ncmFtLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMUHJvZ3JhbTo6V2ViR0xQcm9ncmFtKTogSW5pdGlhbGl6ZSBsaW5rIGNvdW50
IHRvIDAuCisgICAgICAgIChXZWJDb3JlOjpXZWJHTFByb2dyYW06OmNhY2hlQWN0aXZlQXR0cmli
TG9jYXRpb25zKTogRG9uJ3QgY2hlY2sgbGluayBzdGF0dXMgdGhyb3VnaCBnbCBjYWxsOyB1c2Ug
dGhlIGNhY2hlZCBzdGF0dXMgaW5zdGVhZC4KKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFBy
b2dyYW0uaDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUHJvZ3JhbTo6Z2V0TGlua0NvdW50KTog
R2V0IGxpbmsgY291bnQuCisgICAgICAgIChXZWJDb3JlOjpXZWJHTFByb2dyYW06OmluY3JlYXNl
TGlua0NvdW50KTogSW5jcmVhc2UgbGluayBjb3VudCBieSAxLgorICAgICAgICAqIGh0bWwvY2Fu
dmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJl
bmRlcmluZ0NvbnRleHQ6OmdldFVuaWZvcm0pOiBGaXggYSBidWcgd2hlcmUgd3JvbmcgZXJyb3Ig
aXMgZ2VuZXJhdGVkLgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojps
aW5rUHJvZ3JhbSk6IGNhbGwgaW5jcmVhc2VMaW5rQ291bnQgYWZ0ZXIgbGlua1Byb2dyYW0uCisg
ICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xVbmlmb3JtTG9jYXRpb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xVbmlmb3JtTG9jYXRpb246OldlYkdMVW5pZm9ybUxvY2F0aW9uKTogU2V0
IHByb2dyYW0ncyBsaW5rIGNvdW50IHVwb24gY3JlYXRpb24uCisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTFVuaWZvcm1Mb2NhdGlvbjo6cHJvZ3JhbSk6IFJldHVybiBudWxsIGlmIGNvdW50IGRvZXNu
J3QgbWF0Y2ggdGhlIHByb2dyYW0ncy4KKyAgICAgICAgKFdlYkNvcmU6OldlYkdMVW5pZm9ybUxv
Y2F0aW9uOjpsb2NhdGlvbik6IFJldHVybiAtMSBpZiBjb3VudCBkb2Vzbid0IG1hdGNoIHRoZSBw
cm9ncmFtJ3MuCisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xVbmlmb3JtTG9jYXRpb24uaDoK
KwogMjAxMC0xMi0wNyAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgR3VzdGF2byBOb3JvbmhhIFNpbHZhLgpJbmRleDogV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFByb2dyYW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xQcm9ncmFtLmNwcAkocmV2aXNpb24gNzM0MjApCisrKyBXZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUHJvZ3JhbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDYgKzQxLDcg
QEAgUGFzc1JlZlB0cjxXZWJHTFByb2dyYW0+IFdlYkdMUHJvZ3JhbTo6YwogV2ViR0xQcm9ncmFt
OjpXZWJHTFByb2dyYW0oV2ViR0xSZW5kZXJpbmdDb250ZXh0KiBjdHgpCiAgICAgOiBXZWJHTE9i
amVjdChjdHgpCiAgICAgLCBtX2xpbmtTdGF0dXMoZmFsc2UpCisgICAgLCBtX2xpbmtDb3VudCgw
KQogewogICAgIHNldE9iamVjdChjb250ZXh0KCktPmdyYXBoaWNzQ29udGV4dDNEKCktPmNyZWF0
ZVByb2dyYW0oKSk7CiB9CkBAIC02NCw5ICs2NSw5IEBAIGJvb2wgV2ViR0xQcm9ncmFtOjpjYWNo
ZUFjdGl2ZUF0dHJpYkxvY2EKICAgICBpZiAoIW9iamVjdCgpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQzZCA9IGNvbnRleHQoKS0+Z3JhcGhp
Y3NDb250ZXh0M0QoKTsKLSAgICBpbnQgbGlua1N0YXR1cyA9IDA7Ci0gICAgY29udGV4dDNkLT5n
ZXRQcm9ncmFtaXYob2JqZWN0KCksIEdyYXBoaWNzQ29udGV4dDNEOjpMSU5LX1NUQVRVUywgJmxp
bmtTdGF0dXMpOwotICAgIGlmICghbGlua1N0YXR1cykKKworICAgIC8vIEFzc3VtZSBsaW5rIHN0
YXR1cyBoYXMgYWxyZWFkeSBiZWVuIGNhY2hlZC4KKyAgICBpZiAoIW1fbGlua1N0YXR1cykKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaW50IG51bUF0dHJpYnMgPSAwOwpJbmRleDogV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFByb2dyYW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUHJvZ3JhbS5oCShyZXZpc2lvbiA3MzQyMCkKKysrIFdlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xQcm9ncmFtLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDYgKzUzLDEzIEBA
IHB1YmxpYzoKICAgICBib29sIGdldExpbmtTdGF0dXMoKSBjb25zdCB7IHJldHVybiBtX2xpbmtT
dGF0dXM7IH0KICAgICB2b2lkIHNldExpbmtTdGF0dXMoYm9vbCBzdGF0dXMpIHsgbV9saW5rU3Rh
dHVzID0gc3RhdHVzOyB9CiAKKyAgICB1bnNpZ25lZCBsb25nIGdldExpbmtDb3VudCgpIGNvbnN0
IHsgcmV0dXJuIG1fbGlua0NvdW50OyB9CisKKyAgICAvLyBUaGlzIGlzIHRvIGJlIGNhbGxlZCBl
dmVyeXRpbWUgYWZ0ZXIgdGhlIHByb2dyYW0gaXMgc3VjY2Vzc2Z1bGx5IGxpbmtlZC4KKyAgICAv
LyBXZSBkb24ndCBkZWFsIHdpdGggaW50ZWdlciBvdmVyZmxvdyBoZXJlLCBhc3N1bWluZyBpbiBy
ZWFsaXR5IGEgcHJvZ3JhbQorICAgIC8vIHdpbGwgbmV2ZXIgYmUgbGlua2VkIHNvIG1hbnkgdGlt
ZXMuCisgICAgdm9pZCBpbmNyZWFzZUxpbmtDb3VudCgpIHsgKyttX2xpbmtDb3VudDsgfQorCiAg
ICAgV2ViR0xTaGFkZXIqIGdldEF0dGFjaGVkU2hhZGVyKEdyYXBoaWNzQ29udGV4dDNEOjpXZWJH
TEVudW1UeXBlKTsKICAgICBib29sIGF0dGFjaFNoYWRlcihXZWJHTFNoYWRlciopOwogICAgIGJv
b2wgZGV0YWNoU2hhZGVyKFdlYkdMU2hhZGVyKik7CkBAIC02OSw2ICs3NiwxMCBAQCBwcml2YXRl
OgogCiAgICAgYm9vbCBtX2xpbmtTdGF0dXM7CiAKKyAgICAvLyBUaGlzIGlzIHVzZWQgdG8gdHJh
Y2sgd2hldGhlciBhIFdlYkdMVW5pZm9ybUxvY2F0aW9uIGJlbG9uZ3MgdG8gdGhpcworICAgIC8v
IHByb2dyYW0gb3Igbm90LgorICAgIHVuc2lnbmVkIGxvbmcgbV9saW5rQ291bnQ7CisKICAgICBS
ZWZQdHI8V2ViR0xTaGFkZXI+IG1fdmVydGV4U2hhZGVyOwogICAgIFJlZlB0cjxXZWJHTFNoYWRl
cj4gbV9mcmFnbWVudFNoYWRlcjsKIH07CkluZGV4OiBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCShyZXZpc2lvbiA3MzQyMCkKKysrIFdlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg1
OSwxMSArMTg1OSw3IEBAIFdlYkdMR2V0SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFUK
ICAgICBVTlVTRURfUEFSQU0oZWMpOwogICAgIGlmIChpc0NvbnRleHRMb3N0KCkgfHwgIXZhbGlk
YXRlV2ViR0xPYmplY3QocHJvZ3JhbSkpCiAgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oKTsK
LSAgICBpZiAoIXVuaWZvcm1Mb2NhdGlvbikgewotICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNp
emVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFKTsKLSAgICAgICAgcmV0
dXJuIFdlYkdMR2V0SW5mbygpOwotICAgIH0KLSAgICBpZiAodW5pZm9ybUxvY2F0aW9uLT5wcm9n
cmFtKCkgIT0gcHJvZ3JhbSkgeworICAgIGlmICghdW5pZm9ybUxvY2F0aW9uIHx8IHVuaWZvcm1M
b2NhdGlvbi0+cHJvZ3JhbSgpICE9IHByb2dyYW0pIHsKICAgICAgICAgbV9jb250ZXh0LT5zeW50
aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04pOwogICAg
ICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKCk7CiAgICAgfQpAQCAtMjE3NCwxMSArMjE3MCwxMyBA
QCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6bGlua1Byb2dyYW0oCiAgICAgfQogCiAgICAg
bV9jb250ZXh0LT5saW5rUHJvZ3JhbShvYmplY3RPclplcm8ocHJvZ3JhbSkpOwotICAgIHByb2dy
YW0tPmNhY2hlQWN0aXZlQXR0cmliTG9jYXRpb25zKCk7CisgICAgcHJvZ3JhbS0+aW5jcmVhc2VM
aW5rQ291bnQoKTsKICAgICAvLyBjYWNoZSBsaW5rIHN0YXR1cwogICAgIGludCB2YWx1ZSA9IDA7
CiAgICAgbV9jb250ZXh0LT5nZXRQcm9ncmFtaXYob2JqZWN0T3JaZXJvKHByb2dyYW0pLCBHcmFw
aGljc0NvbnRleHQzRDo6TElOS19TVEFUVVMsICZ2YWx1ZSk7CiAgICAgcHJvZ3JhbS0+c2V0TGlu
a1N0YXR1cyhzdGF0aWNfY2FzdDxib29sPih2YWx1ZSkpOworICAgIC8vIE5lZWQgdG8gY2FjaGUg
bGluayBzdGF0dXMgYmVmb3JlIGNhY2hpbmcgYWN0aXZlIGF0dHJpYnV0ZSBsb2NhdGlvbnMuCisg
ICAgcHJvZ3JhbS0+Y2FjaGVBY3RpdmVBdHRyaWJMb2NhdGlvbnMoKTsKICAgICBjbGVhbnVwQWZ0
ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogfQogCkluZGV4OiBXZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMVW5pZm9ybUxvY2F0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMVW5pZm9ybUxvY2F0aW9uLmNwcAkocmV2aXNpb24gNzM0MjApCisrKyBXZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMVW5pZm9ybUxvY2F0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEs
NiArNDEsMjUgQEAgV2ViR0xVbmlmb3JtTG9jYXRpb246OldlYkdMVW5pZm9ybUxvY2F0aQogICAg
IDogbV9wcm9ncmFtKHByb2dyYW0pCiAgICAgLCBtX2xvY2F0aW9uKGxvY2F0aW9uKQogeworICAg
IEFTU0VSVChtX3Byb2dyYW0pOworICAgIG1fbGlua0NvdW50ID0gbV9wcm9ncmFtLT5nZXRMaW5r
Q291bnQoKTsKK30KKworV2ViR0xQcm9ncmFtKiBXZWJHTFVuaWZvcm1Mb2NhdGlvbjo6cHJvZ3Jh
bSgpIGNvbnN0Cit7CisgICAgLy8gSWYgdGhlIHByb2dyYW0gaGFzIGJlZW4gbGlua2VkIGFnYWlu
LCB0aGVuIHRoaXMgVW5pZm9ybUxvY2F0aW9uIGlzIG5vCisgICAgLy8gbG9uZ2VyIHZhbGlkLgor
ICAgIGlmIChtX3Byb2dyYW0tPmdldExpbmtDb3VudCgpICE9IG1fbGlua0NvdW50KQorICAgICAg
ICByZXR1cm4gMDsKKyAgICByZXR1cm4gbV9wcm9ncmFtLmdldCgpOworfQorCitsb25nIFdlYkdM
VW5pZm9ybUxvY2F0aW9uOjpsb2NhdGlvbigpIGNvbnN0Cit7CisgICAgLy8gSWYgdGhlIHByb2dy
YW0gaGFzIGJlZW4gbGlua2VkIGFnYWluLCB0aGVuIHRoaXMgVW5pZm9ybUxvY2F0aW9uIGlzIG5v
CisgICAgLy8gbG9uZ2VyIHZhbGlkLgorICAgIEFTU0VSVChtX3Byb2dyYW0tPmdldExpbmtDb3Vu
dCgpID09IG1fbGlua0NvdW50KTsKKyAgICByZXR1cm4gbV9sb2NhdGlvbjsKIH0KIAogfQpJbmRl
eDogV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFVuaWZvcm1Mb2NhdGlvbi5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xVbmlmb3JtTG9jYXRpb24uaAkocmV2aXNpb24g
NzM0MjApCisrKyBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVW5pZm9ybUxvY2F0aW9uLmgJKHdv
cmtpbmcgY29weSkKQEAgLTQxLDkgKzQxLDkgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8V2ViR0xVbmlmb3JtTG9jYXRpb24+IGNyZWF0ZShXZWJHTFByb2dyYW0qIHByb2dyYW0s
IGxvbmcgbG9jYXRpb24pOwogCi0gICAgV2ViR0xQcm9ncmFtKiBwcm9ncmFtKCkgY29uc3QgeyBy
ZXR1cm4gbV9wcm9ncmFtLmdldCgpOyB9CisgICAgV2ViR0xQcm9ncmFtKiBwcm9ncmFtKCkgY29u
c3Q7CiAKLSAgICBsb25nIGxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9sb2NhdGlvbjsgfQor
ICAgIGxvbmcgbG9jYXRpb24oKSBjb25zdDsKIAogcHJvdGVjdGVkOgogICAgIFdlYkdMVW5pZm9y
bUxvY2F0aW9uKFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgbG9uZyBsb2NhdGlvbik7CkBAIC01MSw2
ICs1MSw3IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgUmVmUHRyPFdlYkdMUHJvZ3JhbT4g
bV9wcm9ncmFtOwogICAgIGxvbmcgbV9sb2NhdGlvbjsKKyAgICB1bnNpZ25lZCBsb25nIG1fbGlu
a0NvdW50OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24g
NzM0NTYpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwxMyBAQAorMjAxMC0xMi0wNyAgWmhlbnlhbyBNbyAgPHptb0Bnb29nbGUuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYkdMVW5pZm9ybUxv
Y2F0aW9uIG9iamVjdHMgbXVzdCBiZSBpbnZhbGlkYXRlZCBkdXJpbmcgbGlua1Byb2dyYW0KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM3MTE4CisKKyAg
ICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC91bmlmb3JtLWxvY2F0aW9uLWV4cGVjdGVkLnR4dDoK
KyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC91bmlmb3JtLWxvY2F0aW9uLmh0bWw6IENoZWNr
IHRoYXQgYWZ0ZXIgbGlua1Byb2dyYW0sIGFsbCBwcmV2aW91cyB1bmlmb3JtIGxvY2F0aW9ucyBi
ZWNvbWUgaW52YWxpZC4KKwogMjAxMC0xMi0wNyAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5k
QGlnYWxpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgR3VzdGF2byBOb3JvbmhhIFNpbHZh
LgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvdW5pZm9ybS1sb2NhdGlvbi1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wv
dW5pZm9ybS1sb2NhdGlvbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDczNDIwKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvdW5pZm9ybS1sb2NhdGlvbi1leHBlY3RlZC50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTEwLDE0ICsxMCwyMiBAQCBQQVNTIGNvbnRleHRBLnVuaWZvcm1NYXRy
aXg0ZnYobnVsbCwgZmFsCiBQQVNTIGNvbnRleHRBLnVzZVByb2dyYW0ocHJvZ3JhbVMpIGdlbmVy
YXRlZCBleHBlY3RlZCBHTCBlcnJvcjogTk9fRVJST1IuCiBQQVNTIGNvbnRleHRBLnVuaWZvcm0x
aShsb2NhdGlvblN4LCAzKSBnZW5lcmF0ZWQgZXhwZWN0ZWQgR0wgZXJyb3I6IE5PX0VSUk9SLgog
UEFTUyBjb250ZXh0QS51bmlmb3JtMWYobG9jYXRpb25BcnJheTAsIDQuMCkgZ2VuZXJhdGVkIGV4
cGVjdGVkIEdMIGVycm9yOiBOT19FUlJPUi4KK1BBU1MgY29udGV4dEEudW5pZm9ybTFmKGxvY2F0
aW9uQXJyYXkxLCA1LjApIGdlbmVyYXRlZCBleHBlY3RlZCBHTCBlcnJvcjogTk9fRVJST1IuCiBQ
QVNTIGNvbnRleHRBLmdldFVuaWZvcm0ocHJvZ3JhbVMsIGxvY2F0aW9uU3gpIGlzIDMKIFBBU1Mg
Y29udGV4dEEuZ2V0VW5pZm9ybShwcm9ncmFtUywgbG9jYXRpb25BcnJheTApIGlzIDQuMAorUEFT
UyBjb250ZXh0QS5nZXRVbmlmb3JtKHByb2dyYW1TLCBsb2NhdGlvbkFycmF5MSkgaXMgNS4wCiBQ
QVNTIGNvbnRleHRBLnVzZVByb2dyYW0ocHJvZ3JhbVYpIGdlbmVyYXRlZCBleHBlY3RlZCBHTCBl
cnJvcjogTk9fRVJST1IuCiBQQVNTIGNvbnRleHRBLnVuaWZvcm00ZnYobG9jYXRpb25WZWM0LCB2
ZWMpIGdlbmVyYXRlZCBleHBlY3RlZCBHTCBlcnJvcjogTk9fRVJST1IuCiBQQVNTIGNvbnRleHRB
LmdldFVuaWZvcm0ocHJvZ3JhbVYsIGxvY2F0aW9uVmVjNCkgaXMgdmVjCiBQQVNTIGNvbnRleHRB
LmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtViwgIklEb250RXhpc3QiKSBpcyBudWxsCiBQQVNT
IGNvbnRleHRBLmxpbmtQcm9ncmFtKHByb2dyYW1BMSkgZ2VuZXJhdGVkIGV4cGVjdGVkIEdMIGVy
cm9yOiBOT19FUlJPUi4KIFBBU1MgY29udGV4dEEudW5pZm9ybU1hdHJpeDRmdihsb2NhdGlvbkEs
IGZhbHNlLCBtYXQpIGdlbmVyYXRlZCBleHBlY3RlZCBHTCBlcnJvcjogSU5WQUxJRF9PUEVSQVRJ
T04uCitQQVNTIGNvbnRleHRBLnVzZVByb2dyYW0ocHJvZ3JhbVMpIGdlbmVyYXRlZCBleHBlY3Rl
ZCBHTCBlcnJvcjogTk9fRVJST1IuCitQQVNTIGNvbnRleHRBLmxpbmtQcm9ncmFtKHByb2dyYW1T
KSBnZW5lcmF0ZWQgZXhwZWN0ZWQgR0wgZXJyb3I6IE5PX0VSUk9SLgorUEFTUyBjb250ZXh0QS51
bmlmb3JtMWkobG9jYXRpb25TeCwgMykgZ2VuZXJhdGVkIGV4cGVjdGVkIEdMIGVycm9yOiBJTlZB
TElEX09QRVJBVElPTi4KK1BBU1MgY29udGV4dEEuZ2V0VW5pZm9ybShwcm9ncmFtUywgbG9jYXRp
b25TeCkgZ2VuZXJhdGVkIGV4cGVjdGVkIEdMIGVycm9yOiBJTlZBTElEX09QRVJBVElPTi4KK1BB
U1MgY29udGV4dEEudW5pZm9ybTFpKGxvY2F0aW9uU3gsIDMpIGdlbmVyYXRlZCBleHBlY3RlZCBH
TCBlcnJvcjogTk9fRVJST1IuCitQQVNTIGNvbnRleHRBLmdldFVuaWZvcm0ocHJvZ3JhbVMsIGxv
Y2F0aW9uU3gpIGlzIDMKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBD
T01QTEVURQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvdW5pZm9ybS1sb2Nh
dGlvbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3Vu
aWZvcm0tbG9jYXRpb24uaHRtbAkocmV2aXNpb24gNzM0MjApCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2NhbnZhcy93ZWJnbC91bmlmb3JtLWxvY2F0aW9uLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIy
LDYgKzIyLDcgQEAgdmFyIGxvY2F0aW9uQSA9IGNvbnRleHRBLmdldFVuaWZvcm1Mb2NhdAogdmFy
IGxvY2F0aW9uQiA9IGNvbnRleHRCLmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtQiwgJ3VfbW9k
ZWxWaWV3UHJvak1hdHJpeCcpOwogdmFyIGxvY2F0aW9uU3ggPSBjb250ZXh0QS5nZXRVbmlmb3Jt
TG9jYXRpb24ocHJvZ3JhbVMsICJ1X3N0cnVjdC54Iik7CiB2YXIgbG9jYXRpb25BcnJheTAgPSBj
b250ZXh0QS5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbVMsICJ1X2FycmF5WzBdIik7Cit2YXIg
bG9jYXRpb25BcnJheTEgPSBjb250ZXh0QS5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbVMsICJ1
X2FycmF5WzFdIik7CiB2YXIgbG9jYXRpb25WZWM0ID0gY29udGV4dEEuZ2V0VW5pZm9ybUxvY2F0
aW9uKHByb2dyYW1WLCAiZnZhbDQiKTsKIAogdmFyIHZlYyA9IFsxLCAyLCAzLCA0XTsKQEAgLTM2
LDkgKzM3LDExIEBAIHNob3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0QSwgY29udGV4dEEKIHNo
b3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0QSwgY29udGV4dEEuTk9fRVJST1IsICJjb250ZXh0
QS51c2VQcm9ncmFtKHByb2dyYW1TKSIpOwogc2hvdWxkR2VuZXJhdGVHTEVycm9yKGNvbnRleHRB
LCBjb250ZXh0QS5OT19FUlJPUiwgImNvbnRleHRBLnVuaWZvcm0xaShsb2NhdGlvblN4LCAzKSIp
Owogc2hvdWxkR2VuZXJhdGVHTEVycm9yKGNvbnRleHRBLCBjb250ZXh0QS5OT19FUlJPUiwgImNv
bnRleHRBLnVuaWZvcm0xZihsb2NhdGlvbkFycmF5MCwgNC4wKSIpOworc2hvdWxkR2VuZXJhdGVH
TEVycm9yKGNvbnRleHRBLCBjb250ZXh0QS5OT19FUlJPUiwgImNvbnRleHRBLnVuaWZvcm0xZihs
b2NhdGlvbkFycmF5MSwgNS4wKSIpOwogCiBzaG91bGRCZSgiY29udGV4dEEuZ2V0VW5pZm9ybShw
cm9ncmFtUywgbG9jYXRpb25TeCkiLCAiMyIpOwogc2hvdWxkQmUoImNvbnRleHRBLmdldFVuaWZv
cm0ocHJvZ3JhbVMsIGxvY2F0aW9uQXJyYXkwKSIsICI0LjAiKTsKK3Nob3VsZEJlKCJjb250ZXh0
QS5nZXRVbmlmb3JtKHByb2dyYW1TLCBsb2NhdGlvbkFycmF5MSkiLCAiNS4wIik7CiAKIHNob3Vs
ZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0QSwgY29udGV4dEEuTk9fRVJST1IsICJjb250ZXh0QS51
c2VQcm9ncmFtKHByb2dyYW1WKSIpOwogc2hvdWxkR2VuZXJhdGVHTEVycm9yKGNvbnRleHRBLCBj
b250ZXh0QS5OT19FUlJPUiwgImNvbnRleHRBLnVuaWZvcm00ZnYobG9jYXRpb25WZWM0LCB2ZWMp
Iik7CkBAIC00OSw2ICs1MiwxOCBAQCBzaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dEEsIGNv
bnRleHRBCiAvLyBBZnRlciBsaW5raW5nIGFsbCBib3hlcyBhcmUgYmFkLgogc2hvdWxkR2VuZXJh
dGVHTEVycm9yKGNvbnRleHRBLCBjb250ZXh0QS5JTlZBTElEX09QRVJBVElPTiwgImNvbnRleHRB
LnVuaWZvcm1NYXRyaXg0ZnYobG9jYXRpb25BLCBmYWxzZSwgbWF0KSIpOwogCisvLyBhZnRlciBy
ZS1saW5raW5nIHRoZSBzYW1lIHByb2dyYW0sIGFsbCB1bmlmb3JtIGxvY2F0aW9ucyBiZWNvbWUg
aW52YWxpZC4KK3Nob3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0QSwgY29udGV4dEEuTk9fRVJS
T1IsICJjb250ZXh0QS51c2VQcm9ncmFtKHByb2dyYW1TKSIpOworc2hvdWxkR2VuZXJhdGVHTEVy
cm9yKGNvbnRleHRBLCBjb250ZXh0QS5OT19FUlJPUiwgImNvbnRleHRBLmxpbmtQcm9ncmFtKHBy
b2dyYW1TKSIpOworc2hvdWxkR2VuZXJhdGVHTEVycm9yKGNvbnRleHRBLCBjb250ZXh0QS5JTlZB
TElEX09QRVJBVElPTiwgImNvbnRleHRBLnVuaWZvcm0xaShsb2NhdGlvblN4LCAzKSIpOworc2hv
dWxkR2VuZXJhdGVHTEVycm9yKGNvbnRleHRBLCBjb250ZXh0QS5JTlZBTElEX09QRVJBVElPTiwg
ImNvbnRleHRBLmdldFVuaWZvcm0ocHJvZ3JhbVMsIGxvY2F0aW9uU3gpIik7CisKKy8vIFJldHJp
ZXZlIHRoZSBsb2NhdGlvbnMgYWdhaW4sIGFuZCB0aGV5IHNob3VsZCBiZSBnb29kLgorbG9jYXRp
b25TeCA9IGNvbnRleHRBLmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtUywgInVfc3RydWN0Lngi
KTsKK2xvY2F0aW9uQXJyYXkwID0gY29udGV4dEEuZ2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW1T
LCAidV9hcnJheVswXSIpOworc2hvdWxkR2VuZXJhdGVHTEVycm9yKGNvbnRleHRBLCBjb250ZXh0
QS5OT19FUlJPUiwgImNvbnRleHRBLnVuaWZvcm0xaShsb2NhdGlvblN4LCAzKSIpOworc2hvdWxk
QmUoImNvbnRleHRBLmdldFVuaWZvcm0ocHJvZ3JhbVMsIGxvY2F0aW9uU3gpIiwgIjMiKTsKKwog
c3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKIDwvc2NyaXB0PgogCg==
</data>
<flag name="review"
          id="66844"
          type_id="1"
          status="+"
          setter="kbr"
    />
    <flag name="commit-queue"
          id="66845"
          type_id="3"
          status="-"
          setter="zmo"
    />
          </attachment>
      

    </bug>

</bugzilla>