<?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>41884</bug_id>
          
          <creation_ts>2010-07-08 11:45:46 -0700</creation_ts>
          <short_desc>Implement bufferData and bufferSubData with ArrayBuffer as input</short_desc>
          <delta_ts>2010-07-13 10:56:30 -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>WebGL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>42124</blocked>
    
    <blocked>42125</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Zhenyao Mo">zmo</reporter>
          <assigned_to name="Zhenyao Mo">zmo</assigned_to>
          <cc>cmarrin</cc>
    
    <cc>kbr</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>248385</commentid>
    <comment_count>0</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2010-07-08 11:45:46 -0700</bug_when>
    <thetext>They are in the spec, but not implemented.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249594</commentid>
    <comment_count>1</comment_count>
      <attachid>61173</attachid>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2010-07-10 19:42:18 -0700</bug_when>
    <thetext>Created attachment 61173
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>250218</commentid>
    <comment_count>2</comment_count>
      <attachid>61173</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-07-12 18:26:30 -0700</bug_when>
    <thetext>Comment on attachment 61173
patch

The logic looks good. The test is incorrectly named -- it should be buffer-data-array-buffer.html. A few specific comments.

WebCore/html/canvas/WebGLBuffer.cpp:104
 +  }
While reviewing this, I realized there&apos;s a preexisting bug in associateBufferData(ArrayBufferView*). Let&apos;s commit this change and fix the other bug under https://bugs.webkit.org/show_bug.cgi?id=42124 , and refactor this code under the other bug.


WebCore/html/canvas/WebGLBuffer.cpp:167
 +  
Let&apos;s refactor this code under https://bugs.webkit.org/show_bug.cgi?id=42124 .


WebCore/html/canvas/WebGLRenderingContext.cpp:391
 +  }
While reviewing this I realized there&apos;s a preexisting bug in bufferData and bufferSubData taking ArrayBufferView. Let&apos;s check this code in as is to maintain parity between the implementations, and fix both under https://bugs.webkit.org/show_bug.cgi?id=42125 .


LayoutTests/fast/canvas/webgl/buffer-data-array-view.html:12
 +  description(&quot;Test bufferData/bufferSubData with ArrayView input&quot;);
ArrayView -&gt; ArrayBuffer</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>250256</commentid>
    <comment_count>3</comment_count>
      <attachid>61315</attachid>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2010-07-12 19:56:13 -0700</bug_when>
    <thetext>Created attachment 61315
revised patch

Changed the test name.

Also, add usage enum check (since the patch for checking this in other bufferData() entries has already landed).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>250595</commentid>
    <comment_count>4</comment_count>
      <attachid>61315</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-07-13 10:23:12 -0700</bug_when>
    <thetext>Comment on attachment 61315
revised patch

Looks good to me. One additional comment.


WebCore/html/canvas/WebGLRenderingContext.cpp:379
 +          if (!validateBufferDataUsage(usage))
This needs to be done in all cases. It&apos;s inappropriate to do the associateBufferData call if the later bufferData call will fail because of an INVALID_ENUM error. This fix can be done in a subsequent bug for this entry point as well as the one taking ArrayBufferView*.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>250623</commentid>
    <comment_count>5</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2010-07-13 10:56:30 -0700</bug_when>
    <thetext>Committed r63224: &lt;http://trac.webkit.org/changeset/63224&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>61173</attachid>
            <date>2010-07-10 19:42:18 -0700</date>
            <delta_ts>2010-07-12 19:56:13 -0700</delta_ts>
            <desc>patch</desc>
            <filename>arrayview.patch</filename>
            <type>text/plain</type>
            <size>18174</size>
            <attacher name="Zhenyao Mo">zmo</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MzA1NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjYgQEAKKzIwMTAtMDctMTAgIFpoZW55YW8gTW8gIDx6bW9AZ29vZ2xlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1l
bnQgYnVmZmVyRGF0YSBhbmQgYnVmZmVyU3ViRGF0YSB3aXRoIEFycmF5QnVmZmVyIGFzIGlucHV0
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MTg4NAor
CisgICAgICAgIFRlc3Q6IGZhc3QvY2FudmFzL3dlYmdsL2J1ZmZlci1kYXRhLWFycmF5LXZpZXcu
aHRtbAorCisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuY3BwOiBJbXBsZW1lbnQg
YXNzb2NpYXRlQnVmZmVyRGF0YSAmIGFzc29jaWF0ZUJ1ZmZlclN1YkRhdGEgd2l0aCBBcnJheUJ1
ZmZlciBhcyBpbnB1dC4KKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQnVmZmVyOjphc3NvY2lhdGVC
dWZmZXJEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQnVmZmVyOjphc3NvY2lhdGVCdWZm
ZXJTdWJEYXRhKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5oOiBEaXR0by4K
KyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwOiBJbXBsZW1l
bnQgYnVmZmVyRGF0YSBhbmQgYnVmZmVyU3ViRGF0YSB3aXRoIEFycmF5QnVmZmVyIGFzIGlucHV0
LgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpidWZmZXJEYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6YnVmZmVyU3ViRGF0YSk6
CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0Lmg6IERpdHRvLgor
ICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5pZGw6IERpdHRvLgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmg6IERpdHRvLgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0NvbnRleHQzRE1hYy5tbTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6YnVmZmVyRGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6YnVmZmVyU3ViRGF0YSk6CisK
IDIwMTAtMDctMTAgIFRvbnkgR2VudGlsY29yZSAgPHRvbnlnQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xCdWZmZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xC
dWZmZXIuY3BwCShyZXZpc2lvbiA2MzA1NikKKysrIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xC
dWZmZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NCw2ICs3NCwzNSBAQCBib29sIFdlYkdMQnVm
ZmVyOjphc3NvY2lhdGVCdWZmZXJEYXRhKGluCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitib29s
IFdlYkdMQnVmZmVyOjphc3NvY2lhdGVCdWZmZXJEYXRhKEFycmF5QnVmZmVyKiBhcnJheSkKK3sK
KyAgICBpZiAoIW1fdGFyZ2V0KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFhcnJh
eSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKG1fdGFyZ2V0ID09IEdyYXBoaWNz
Q29udGV4dDNEOjpFTEVNRU5UX0FSUkFZX0JVRkZFUikgeworICAgICAgICBjbGVhckNhY2hlZE1h
eEluZGljZXMoKTsKKyAgICAgICAgbV9ieXRlTGVuZ3RoID0gYXJyYXktPmJ5dGVMZW5ndGgoKTsK
KyAgICAgICAgLy8gV2UgbXVzdCBhbHdheXMgY2xvbmUgdGhlIGluY29taW5nIGRhdGEgYmVjYXVz
ZSBjbGllbnQtc2lkZQorICAgICAgICAvLyBtb2RpZmljYXRpb25zIHdpdGhvdXQgY2FsbGluZyBi
dWZmZXJEYXRhIG9yIGJ1ZmZlclN1YkRhdGEKKyAgICAgICAgLy8gbXVzdCBuZXZlciBiZSBhYmxl
IHRvIGNoYW5nZSB0aGUgdmFsaWRhdGlvbiByZXN1bHRzLgorICAgICAgICBtX2VsZW1lbnRBcnJh
eUJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUoYXJyYXkpOworICAgICAgICBpZiAoIW1fZWxl
bWVudEFycmF5QnVmZmVyKSB7CisgICAgICAgICAgICBtX2J5dGVMZW5ndGggPSAwOworICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KKworICAgIGlmIChtX3RhcmdldCA9PSBHcmFwaGljc0NvbnRleHQzRDo6QVJSQVlfQlVGRkVS
KSB7CisgICAgICAgIG1fYnl0ZUxlbmd0aCA9IGFycmF5LT5ieXRlTGVuZ3RoKCk7CisgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKwogYm9vbCBXZWJH
TEJ1ZmZlcjo6YXNzb2NpYXRlQnVmZmVyRGF0YShBcnJheUJ1ZmZlclZpZXcqIGFycmF5KQogewog
ICAgIGlmICghbV90YXJnZXQpCkBAIC0xMDMsNiArMTMyLDM5IEBAIGJvb2wgV2ViR0xCdWZmZXI6
OmFzc29jaWF0ZUJ1ZmZlckRhdGEoQXIKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK2Jvb2wgV2Vi
R0xCdWZmZXI6OmFzc29jaWF0ZUJ1ZmZlclN1YkRhdGEobG9uZyBvZmZzZXQsIEFycmF5QnVmZmVy
KiBhcnJheSkKK3sKKyAgICBpZiAoIW1fdGFyZ2V0KQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgaWYgKCFhcnJheSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKG1fdGFyZ2V0
ID09IEdyYXBoaWNzQ29udGV4dDNEOjpFTEVNRU5UX0FSUkFZX0JVRkZFUikgeworICAgICAgICBj
bGVhckNhY2hlZE1heEluZGljZXMoKTsKKworICAgICAgICAvLyBXZSBuZWVkIHRvIHByb3RlY3Qg
YWdhaW5zdCBpbnRlZ2VyIG92ZXJmbG93IHdpdGggdGhlc2UgdGVzdHMKKyAgICAgICAgaWYgKG9m
ZnNldCA8IDApCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgdW5zaWduZWQg
bG9uZyB1b2Zmc2V0ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4ob2Zmc2V0KTsKKyAgICAg
ICAgaWYgKHVvZmZzZXQgPiBtX2J5dGVMZW5ndGggfHwgYXJyYXktPmJ5dGVMZW5ndGgoKSA+IG1f
Ynl0ZUxlbmd0aCAtIHVvZmZzZXQpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAg
ICAgaWYgKCFtX2VsZW1lbnRBcnJheUJ1ZmZlcikKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgICAgICBtZW1jcHkoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KG1fZWxlbWVudEFy
cmF5QnVmZmVyLT5kYXRhKCkpICsgb2Zmc2V0LAorICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8
dW5zaWduZWQgY2hhcio+KGFycmF5LT5kYXRhKCkpLAorICAgICAgICAgICAgICAgYXJyYXktPmJ5
dGVMZW5ndGgoKSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIGlmIChtX3Rh
cmdldCA9PSBHcmFwaGljc0NvbnRleHQzRDo6QVJSQVlfQlVGRkVSKQorICAgICAgICByZXR1cm4g
YXJyYXktPmJ5dGVMZW5ndGgoKSArIG9mZnNldCA8PSBtX2J5dGVMZW5ndGg7CisKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKIGJvb2wgV2ViR0xCdWZmZXI6OmFzc29jaWF0ZUJ1ZmZlclN1YkRhdGEo
bG9uZyBvZmZzZXQsIEFycmF5QnVmZmVyVmlldyogYXJyYXkpCiB7CiAgICAgaWYgKCFtX3Rhcmdl
dCkKSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmgJKHJldmlzaW9uIDYzMDU2KQorKysg
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3
ICs0MSw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8
V2ViR0xCdWZmZXI+IGNyZWF0ZShXZWJHTFJlbmRlcmluZ0NvbnRleHQqKTsKIAogICAgICAgICBi
b29sIGFzc29jaWF0ZUJ1ZmZlckRhdGEoaW50IHNpemUpOworICAgICAgICBib29sIGFzc29jaWF0
ZUJ1ZmZlckRhdGEoQXJyYXlCdWZmZXIqIGFycmF5KTsKICAgICAgICAgYm9vbCBhc3NvY2lhdGVC
dWZmZXJEYXRhKEFycmF5QnVmZmVyVmlldyogYXJyYXkpOworICAgICAgICBib29sIGFzc29jaWF0
ZUJ1ZmZlclN1YkRhdGEobG9uZyBvZmZzZXQsIEFycmF5QnVmZmVyKiBhcnJheSk7CiAgICAgICAg
IGJvb2wgYXNzb2NpYXRlQnVmZmVyU3ViRGF0YShsb25nIG9mZnNldCwgQXJyYXlCdWZmZXJWaWV3
KiBhcnJheSk7CiAgICAgICAgIAogICAgICAgICB1bnNpZ25lZCBieXRlTGVuZ3RoKCkgY29uc3Q7
CkluZGV4OiBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3Bw
CShyZXZpc2lvbiA2MzA1NikKKysrIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdD
b250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzY4LDYgKzM2OCwyOCBAQCB2b2lkIFdlYkdM
UmVuZGVyaW5nQ29udGV4dDo6YnVmZmVyRGF0YSh1CiAgICAgY2xlYW51cEFmdGVyR3JhcGhpY3ND
YWxsKGZhbHNlKTsKIH0KIAordm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmJ1ZmZlckRhdGEo
dW5zaWduZWQgbG9uZyB0YXJnZXQsIEFycmF5QnVmZmVyKiBkYXRhLCB1bnNpZ25lZCBsb25nIHVz
YWdlLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBVTlVTRURfUEFSQU0oZWMpOworICAgIGlm
ICh0YXJnZXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkVMRU1FTlRfQVJSQVlfQlVGRkVSICYmIG1f
Ym91bmRFbGVtZW50QXJyYXlCdWZmZXIpIHsKKyAgICAgICAgaWYgKCFtX2JvdW5kRWxlbWVudEFy
cmF5QnVmZmVyLT5hc3NvY2lhdGVCdWZmZXJEYXRhKGRhdGEpKSB7CisgICAgICAgICAgICBtX2Nv
bnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVF
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAodGFyZ2V0
ID09IEdyYXBoaWNzQ29udGV4dDNEOjpBUlJBWV9CVUZGRVIgJiYgbV9ib3VuZEFycmF5QnVmZmVy
KSB7CisgICAgICAgIGlmICghbV9ib3VuZEFycmF5QnVmZmVyLT5hc3NvY2lhdGVCdWZmZXJEYXRh
KGRhdGEpKSB7CisgICAgICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBo
aWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3Io
R3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfRU5VTSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBtX2NvbnRleHQtPmJ1ZmZlckRhdGEodGFyZ2V0LCBkYXRhLCB1c2FnZSk7CisgICAg
Y2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKK30KKwogdm9pZCBXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OmJ1ZmZlckRhdGEodW5zaWduZWQgbG9uZyB0YXJnZXQsIEFycmF5QnVmZmVyVmll
dyogZGF0YSwgdW5zaWduZWQgbG9uZyB1c2FnZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAg
VU5VU0VEX1BBUkFNKGVjKTsKQEAgLTM5MCw2ICs0MTIsMjggQEAgdm9pZCBXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OmJ1ZmZlckRhdGEodQogICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxz
ZSk7CiB9CiAKK3ZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpidWZmZXJTdWJEYXRhKHVuc2ln
bmVkIGxvbmcgdGFyZ2V0LCBsb25nIG9mZnNldCwgQXJyYXlCdWZmZXIqIGRhdGEsIEV4Y2VwdGlv
bkNvZGUmIGVjKQoreworICAgIFVOVVNFRF9QQVJBTShlYyk7CisgICAgaWYgKHRhcmdldCA9PSBH
cmFwaGljc0NvbnRleHQzRDo6RUxFTUVOVF9BUlJBWV9CVUZGRVIgJiYgbV9ib3VuZEVsZW1lbnRB
cnJheUJ1ZmZlcikgeworICAgICAgICBpZiAoIW1fYm91bmRFbGVtZW50QXJyYXlCdWZmZXItPmFz
c29jaWF0ZUJ1ZmZlclN1YkRhdGEob2Zmc2V0LCBkYXRhKSkgeworICAgICAgICAgICAgbV9jb250
ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKHRhcmdldCA9
PSBHcmFwaGljc0NvbnRleHQzRDo6QVJSQVlfQlVGRkVSICYmIG1fYm91bmRBcnJheUJ1ZmZlcikg
eworICAgICAgICBpZiAoIW1fYm91bmRBcnJheUJ1ZmZlci0+YXNzb2NpYXRlQnVmZmVyU3ViRGF0
YShvZmZzZXQsIGRhdGEpKSB7CisgICAgICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVy
cm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6
ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfRU5VTSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBtX2NvbnRleHQtPmJ1ZmZlclN1YkRhdGEodGFyZ2V0LCBvZmZzZXQs
IGRhdGEpOworICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7Cit9CisKIHZvaWQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpidWZmZXJTdWJEYXRhKHVuc2lnbmVkIGxvbmcgdGFyZ2V0
LCBsb25nIG9mZnNldCwgQXJyYXlCdWZmZXJWaWV3KiBkYXRhLCBFeGNlcHRpb25Db2RlJiBlYykK
IHsKICAgICBVTlVTRURfUEFSQU0oZWMpOwpJbmRleDogV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TFJlbmRlcmluZ0NvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMUmVuZGVyaW5nQ29udGV4dC5oCShyZXZpc2lvbiA2MzA1NikKKysrIFdlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTc3LDcgKzc3
LDkgQEAgY2xhc3MgV2ViS2l0Q1NTTWF0cml4OwogICAgICAgICB2b2lkIGJsZW5kRnVuY1NlcGFy
YXRlKHVuc2lnbmVkIGxvbmcgc3JjUkdCLCB1bnNpZ25lZCBsb25nIGRzdFJHQiwgdW5zaWduZWQg
bG9uZyBzcmNBbHBoYSwgdW5zaWduZWQgbG9uZyBkc3RBbHBoYSk7CiAKICAgICAgICAgdm9pZCBi
dWZmZXJEYXRhKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBpbnQgc2l6ZSwgdW5zaWduZWQgbG9uZyB1
c2FnZSwgRXhjZXB0aW9uQ29kZSYpOworICAgICAgICB2b2lkIGJ1ZmZlckRhdGEodW5zaWduZWQg
bG9uZyB0YXJnZXQsIEFycmF5QnVmZmVyKiBkYXRhLCB1bnNpZ25lZCBsb25nIHVzYWdlLCBFeGNl
cHRpb25Db2RlJik7CiAgICAgICAgIHZvaWQgYnVmZmVyRGF0YSh1bnNpZ25lZCBsb25nIHRhcmdl
dCwgQXJyYXlCdWZmZXJWaWV3KiBkYXRhLCB1bnNpZ25lZCBsb25nIHVzYWdlLCBFeGNlcHRpb25D
b2RlJik7CisgICAgICAgIHZvaWQgYnVmZmVyU3ViRGF0YSh1bnNpZ25lZCBsb25nIHRhcmdldCwg
bG9uZyBvZmZzZXQsIEFycmF5QnVmZmVyKiBkYXRhLCBFeGNlcHRpb25Db2RlJik7CiAgICAgICAg
IHZvaWQgYnVmZmVyU3ViRGF0YSh1bnNpZ25lZCBsb25nIHRhcmdldCwgbG9uZyBvZmZzZXQsIEFy
cmF5QnVmZmVyVmlldyogZGF0YSwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgICAgIHVuc2lnbmVk
IGxvbmcgY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyh1bnNpZ25lZCBsb25nIHRhcmdldCk7CkluZGV4
OiBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaWRsCShyZXZp
c2lvbiA2MzA1NikKKysrIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0
LmlkbAkod29ya2luZyBjb3B5KQpAQCAtNDc3LDkgKzQ3NywxMCBAQCBtb2R1bGUgaHRtbCB7CiAg
ICAgICAgIHZvaWQgICAgICAgICBibGVuZEVxdWF0aW9uU2VwYXJhdGUoaW4gdW5zaWduZWQgbG9u
ZyBtb2RlUkdCLCBpbiB1bnNpZ25lZCBsb25nIG1vZGVBbHBoYSk7CiAgICAgICAgIHZvaWQgICAg
ICAgICBibGVuZEZ1bmMoaW4gdW5zaWduZWQgbG9uZyBzZmFjdG9yLCBpbiB1bnNpZ25lZCBsb25n
IGRmYWN0b3IpOwogICAgICAgICB2b2lkICAgICAgICAgYmxlbmRGdW5jU2VwYXJhdGUoaW4gdW5z
aWduZWQgbG9uZyBzcmNSR0IsIGluIHVuc2lnbmVkIGxvbmcgZHN0UkdCLCBpbiB1bnNpZ25lZCBs
b25nIHNyY0FscGhhLCBpbiB1bnNpZ25lZCBsb25nIGRzdEFscGhhKTsKLQorICAgICAgICB2b2lk
ICAgICAgICAgYnVmZmVyRGF0YShpbiB1bnNpZ25lZCBsb25nIHRhcmdldCwgaW4gQXJyYXlCdWZm
ZXIgZGF0YSwgaW4gdW5zaWduZWQgbG9uZyB1c2FnZSkgcmFpc2VzIChET01FeGNlcHRpb24pOwog
ICAgICAgICB2b2lkICAgICAgICAgYnVmZmVyRGF0YShpbiB1bnNpZ25lZCBsb25nIHRhcmdldCwg
aW4gQXJyYXlCdWZmZXJWaWV3IGRhdGEsIGluIHVuc2lnbmVkIGxvbmcgdXNhZ2UpIHJhaXNlcyAo
RE9NRXhjZXB0aW9uKTsKICAgICAgICAgdm9pZCAgICAgICAgIGJ1ZmZlckRhdGEoaW4gdW5zaWdu
ZWQgbG9uZyB0YXJnZXQsIGluIGxvbmcgc2l6ZSwgaW4gdW5zaWduZWQgbG9uZyB1c2FnZSkgcmFp
c2VzIChET01FeGNlcHRpb24pOworICAgICAgICB2b2lkICAgICAgICAgYnVmZmVyU3ViRGF0YShp
biB1bnNpZ25lZCBsb25nIHRhcmdldCwgaW4gbG9uZyBvZmZzZXQsIGluIEFycmF5QnVmZmVyIGRh
dGEpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKICAgICAgICAgdm9pZCAgICAgICAgIGJ1ZmZlclN1
YkRhdGEoaW4gdW5zaWduZWQgbG9uZyB0YXJnZXQsIGluIGxvbmcgb2Zmc2V0LCBpbiBBcnJheUJ1
ZmZlclZpZXcgZGF0YSkgcmFpc2VzIChET01FeGNlcHRpb24pOwogCiAgICAgICAgIHVuc2lnbmVk
IGxvbmcgY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhpbiB1bnNpZ25lZCBsb25nIHRhcmdldCk7Cklu
ZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCShy
ZXZpc2lvbiA2MzA1NikKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0M0QuaAkod29ya2luZyBjb3B5KQpAQCAtNzAsNiArNzAsNyBAQCBjb25zdCBQbGF0Zm9ybTNE
T2JqZWN0IE51bGxQbGF0Zm9ybTNET2JqCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFz
cyBXZWJHTEFjdGl2ZUluZm87CisgICAgY2xhc3MgQXJyYXlCdWZmZXI7CiAgICAgY2xhc3MgQXJy
YXlCdWZmZXJWaWV3OwogICAgIGNsYXNzIFdlYkdMQnVmZmVyOwogICAgIGNsYXNzIFVpbnQ4QXJy
YXk7CkBAIC01NTEsNyArNTUyLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lk
IGJsZW5kRnVuY1NlcGFyYXRlKHVuc2lnbmVkIGxvbmcgc3JjUkdCLCB1bnNpZ25lZCBsb25nIGRz
dFJHQiwgdW5zaWduZWQgbG9uZyBzcmNBbHBoYSwgdW5zaWduZWQgbG9uZyBkc3RBbHBoYSk7CiAK
ICAgICAgICAgdm9pZCBidWZmZXJEYXRhKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBpbnQgc2l6ZSwg
dW5zaWduZWQgbG9uZyB1c2FnZSk7CisgICAgICAgIHZvaWQgYnVmZmVyRGF0YSh1bnNpZ25lZCBs
b25nIHRhcmdldCwgQXJyYXlCdWZmZXIqIGRhdGEsIHVuc2lnbmVkIGxvbmcgdXNhZ2UpOwogICAg
ICAgICB2b2lkIGJ1ZmZlckRhdGEodW5zaWduZWQgbG9uZyB0YXJnZXQsIEFycmF5QnVmZmVyVmll
dyogZGF0YSwgdW5zaWduZWQgbG9uZyB1c2FnZSk7CisgICAgICAgIHZvaWQgYnVmZmVyU3ViRGF0
YSh1bnNpZ25lZCBsb25nIHRhcmdldCwgbG9uZyBvZmZzZXQsIEFycmF5QnVmZmVyKiBkYXRhKTsK
ICAgICAgICAgdm9pZCBidWZmZXJTdWJEYXRhKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBsb25nIG9m
ZnNldCwgQXJyYXlCdWZmZXJWaWV3KiBkYXRhKTsKIAogICAgICAgICB1bnNpZ25lZCBsb25nIGNo
ZWNrRnJhbWVidWZmZXJTdGF0dXModW5zaWduZWQgbG9uZyB0YXJnZXQpOwpJbmRleDogV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0M0RNYWMubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0M0RNYWMu
bW0JKHJldmlzaW9uIDYzMDU2KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3Jh
cGhpY3NDb250ZXh0M0RNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAKICNp
bmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5j
bHVkZSAiV2ViR0xBY3RpdmVJbmZvLmgiCisjaW5jbHVkZSAiQXJyYXlCdWZmZXIuaCIKICNpbmNs
dWRlICJBcnJheUJ1ZmZlclZpZXcuaCIKICNpbmNsdWRlICJXZWJHTEJ1ZmZlci5oIgogI2luY2x1
ZGUgIkZsb2F0MzJBcnJheS5oIgpAQCAtNDk0LDYgKzQ5NSwxNiBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjpidWZmZXJEYXRhKHVuc2lnCiAgICAgZW5zdXJlQ29udGV4dChtX2NvbnRleHRPYmop
OwogICAgIDo6Z2xCdWZmZXJEYXRhKHRhcmdldCwgc2l6ZSwgMCwgdXNhZ2UpOwogfQorCit2b2lk
IEdyYXBoaWNzQ29udGV4dDNEOjpidWZmZXJEYXRhKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBBcnJh
eUJ1ZmZlciogYXJyYXksIHVuc2lnbmVkIGxvbmcgdXNhZ2UpCit7CisgICAgaWYgKCFhcnJheSB8
fCAhYXJyYXktPmJ5dGVMZW5ndGgoKSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIGVuc3Vy
ZUNvbnRleHQobV9jb250ZXh0T2JqKTsKKyAgICA6OmdsQnVmZmVyRGF0YSh0YXJnZXQsIGFycmF5
LT5ieXRlTGVuZ3RoKCksIGFycmF5LT5kYXRhKCksIHVzYWdlKTsKK30KKwogdm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6YnVmZmVyRGF0YSh1bnNpZ25lZCBsb25nIHRhcmdldCwgQXJyYXlCdWZmZXJW
aWV3KiBhcnJheSwgdW5zaWduZWQgbG9uZyB1c2FnZSkKIHsKICAgICBpZiAoIWFycmF5IHx8ICFh
cnJheS0+bGVuZ3RoKCkpCkBAIC01MDMsNiArNTE0LDE1IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OmJ1ZmZlckRhdGEodW5zaWcKICAgICA6OmdsQnVmZmVyRGF0YSh0YXJnZXQsIGFycmF5LT5i
eXRlTGVuZ3RoKCksIGFycmF5LT5iYXNlQWRkcmVzcygpLCB1c2FnZSk7CiB9CiAKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0M0Q6OmJ1ZmZlclN1YkRhdGEodW5zaWduZWQgbG9uZyB0YXJnZXQsIGxvbmcg
b2Zmc2V0LCBBcnJheUJ1ZmZlciogYXJyYXkpCit7CisgICAgaWYgKCFhcnJheSB8fCAhYXJyYXkt
PmJ5dGVMZW5ndGgoKSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIGVuc3VyZUNvbnRleHQo
bV9jb250ZXh0T2JqKTsKKyAgICA6OmdsQnVmZmVyU3ViRGF0YSh0YXJnZXQsIG9mZnNldCwgYXJy
YXktPmJ5dGVMZW5ndGgoKSwgYXJyYXktPmRhdGEoKSk7Cit9CisKIHZvaWQgR3JhcGhpY3NDb250
ZXh0M0Q6OmJ1ZmZlclN1YkRhdGEodW5zaWduZWQgbG9uZyB0YXJnZXQsIGxvbmcgb2Zmc2V0LCBB
cnJheUJ1ZmZlclZpZXcqIGFycmF5KQogewogICAgIGlmICghYXJyYXkgfHwgIWFycmF5LT5sZW5n
dGgoKSkKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNjMwNTYpCisrKyBXZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTAtMDctMTAg
IFpoZW55YW8gTW8gIDx6bW9AZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgYnVmZmVyRGF0YSBhbmQgYnVmZmVyU3Vi
RGF0YSB3aXRoIEFycmF5QnVmZmVyIGFzIGlucHV0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MTg4NAorCisgICAgICAgICogc3JjL0dyYXBoaWNzQ29u
dGV4dDNELmNwcDogSW1wbGVtZW50IGJ1ZmZlckRhdGEgYW5kIGJ1ZmZlclN1YkRhdGEgd2l0aCBB
cnJheUJ1ZmZlciBhcyBpbnB1dC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
SW50ZXJuYWw6OmJ1ZmZlckRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0RJbnRlcm5hbDo6YnVmZmVyU3ViRGF0YSk6CisKIDIwMTAtMDctMDkgIEpvaG4gQWJkLUVsLU1h
bGVrICA8amFtQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBGaXNo
ZXIuCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNELmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNELmNwcAkocmV2
aXNpb24gNjMwNTYpCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNELmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTM5LDcgKzEzOSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGJs
ZW5kRnVuY1NlcGFyYXRlKHVuc2lnbmVkIGxvbmcgc3JjUkdCLCB1bnNpZ25lZCBsb25nIGRzdFJH
QiwgdW5zaWduZWQgbG9uZyBzcmNBbHBoYSwgdW5zaWduZWQgbG9uZyBkc3RBbHBoYSk7CiAKICAg
ICB2b2lkIGJ1ZmZlckRhdGEodW5zaWduZWQgbG9uZyB0YXJnZXQsIGludCBzaXplLCB1bnNpZ25l
ZCBsb25nIHVzYWdlKTsKKyAgICB2b2lkIGJ1ZmZlckRhdGEodW5zaWduZWQgbG9uZyB0YXJnZXQs
IEFycmF5QnVmZmVyKiBkYXRhLCB1bnNpZ25lZCBsb25nIHVzYWdlKTsKICAgICB2b2lkIGJ1ZmZl
ckRhdGEodW5zaWduZWQgbG9uZyB0YXJnZXQsIEFycmF5QnVmZmVyVmlldyogZGF0YSwgdW5zaWdu
ZWQgbG9uZyB1c2FnZSk7CisgICAgdm9pZCBidWZmZXJTdWJEYXRhKHVuc2lnbmVkIGxvbmcgdGFy
Z2V0LCBsb25nIG9mZnNldCwgQXJyYXlCdWZmZXIqIGRhdGEpOwogICAgIHZvaWQgYnVmZmVyU3Vi
RGF0YSh1bnNpZ25lZCBsb25nIHRhcmdldCwgbG9uZyBvZmZzZXQsIEFycmF5QnVmZmVyVmlldyog
ZGF0YSk7CiAKICAgICB1bnNpZ25lZCBsb25nIGNoZWNrRnJhbWVidWZmZXJTdGF0dXModW5zaWdu
ZWQgbG9uZyB0YXJnZXQpOwpAQCAtNzE4LDExICs3MjAsMjEgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHQzREludGVybmFsOjpidWZmZXJEYQogICAgIG1faW1wbC0+YnVmZmVyRGF0YSh0YXJnZXQsIHNp
emUsIDAsIHVzYWdlKTsKIH0KIAordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpidWZm
ZXJEYXRhKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBBcnJheUJ1ZmZlciogYXJyYXksIHVuc2lnbmVk
IGxvbmcgdXNhZ2UpCit7CisgICAgbV9pbXBsLT5idWZmZXJEYXRhKHRhcmdldCwgYXJyYXktPmJ5
dGVMZW5ndGgoKSwgYXJyYXktPmRhdGEoKSwgdXNhZ2UpOworfQorCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dDNESW50ZXJuYWw6OmJ1ZmZlckRhdGEodW5zaWduZWQgbG9uZyB0YXJnZXQsIEFycmF5QnVm
ZmVyVmlldyogYXJyYXksIHVuc2lnbmVkIGxvbmcgdXNhZ2UpCiB7CiAgICAgbV9pbXBsLT5idWZm
ZXJEYXRhKHRhcmdldCwgYXJyYXktPmJ5dGVMZW5ndGgoKSwgYXJyYXktPmJhc2VBZGRyZXNzKCks
IHVzYWdlKTsKIH0KIAordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpidWZmZXJTdWJE
YXRhKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBsb25nIG9mZnNldCwgQXJyYXlCdWZmZXIqIGFycmF5
KQoreworICAgIG1faW1wbC0+YnVmZmVyU3ViRGF0YSh0YXJnZXQsIG9mZnNldCwgYXJyYXktPmJ5
dGVMZW5ndGgoKSwgYXJyYXktPmRhdGEoKSk7Cit9CisKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0RJ
bnRlcm5hbDo6YnVmZmVyU3ViRGF0YSh1bnNpZ25lZCBsb25nIHRhcmdldCwgbG9uZyBvZmZzZXQs
IEFycmF5QnVmZmVyVmlldyogYXJyYXkpCiB7CiAgICAgbV9pbXBsLT5idWZmZXJTdWJEYXRhKHRh
cmdldCwgb2Zmc2V0LCBhcnJheS0+Ynl0ZUxlbmd0aCgpLCBhcnJheS0+YmFzZUFkZHJlc3MoKSk7
CkBAIC0xMTY1LDcgKzExNzcsOSBAQCBERUxFR0FURV9UT19JTlRFUk5BTF8yKGJsZW5kRnVuYywg
dW5zaWduCiBERUxFR0FURV9UT19JTlRFUk5BTF80KGJsZW5kRnVuY1NlcGFyYXRlLCB1bnNpZ25l
ZCBsb25nLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nKQogCiBE
RUxFR0FURV9UT19JTlRFUk5BTF8zKGJ1ZmZlckRhdGEsIHVuc2lnbmVkIGxvbmcsIGludCwgdW5z
aWduZWQgbG9uZykKK0RFTEVHQVRFX1RPX0lOVEVSTkFMXzMoYnVmZmVyRGF0YSwgdW5zaWduZWQg
bG9uZywgQXJyYXlCdWZmZXIqLCB1bnNpZ25lZCBsb25nKQogREVMRUdBVEVfVE9fSU5URVJOQUxf
MyhidWZmZXJEYXRhLCB1bnNpZ25lZCBsb25nLCBBcnJheUJ1ZmZlclZpZXcqLCB1bnNpZ25lZCBs
b25nKQorREVMRUdBVEVfVE9fSU5URVJOQUxfMyhidWZmZXJTdWJEYXRhLCB1bnNpZ25lZCBsb25n
LCBsb25nLCBBcnJheUJ1ZmZlciopCiBERUxFR0FURV9UT19JTlRFUk5BTF8zKGJ1ZmZlclN1YkRh
dGEsIHVuc2lnbmVkIGxvbmcsIGxvbmcsIEFycmF5QnVmZmVyVmlldyopCiAKIERFTEVHQVRFX1RP
X0lOVEVSTkFMXzFSKGNoZWNrRnJhbWVidWZmZXJTdGF0dXMsIHVuc2lnbmVkIGxvbmcsIHVuc2ln
bmVkIGxvbmcpCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA2MzA1NikKKysrIExheW91dFRlc3RzL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEwLTA3LTEwICBaaGVueWFv
IE1vICA8em1vQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgSW1wbGVtZW50IGJ1ZmZlckRhdGEgYW5kIGJ1ZmZlclN1YkRhdGEgd2l0
aCBBcnJheUJ1ZmZlciBhcyBpbnB1dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NDE4ODQKKworICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL2J1ZmZl
ci1kYXRhLWFycmF5LXZpZXctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nh
bnZhcy93ZWJnbC9idWZmZXItZGF0YS1hcnJheS12aWV3Lmh0bWw6IEFkZGVkLgorCiAyMDEwLTA3
LTEwICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
QW5kZXJzIENhcmxzc29uLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvYnVm
ZmVyLWRhdGEtYXJyYXktdmlldy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9jYW52YXMvd2ViZ2wvYnVmZmVyLWRhdGEtYXJyYXktdmlldy1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9idWZmZXItZGF0
YS1hcnJheS12aWV3LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNSBAQAor
VGVzdCBidWZmZXJEYXRhL2J1ZmZlclN1YkRhdGEgd2l0aCBBcnJheVZpZXcgaW5wdXQKKworT24g
c3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93
ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitSZWdyZXNzaW9uIHRlc3QgZm9yIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MTg4NCA6IEltcGxlbWVudCBidWZmZXJEYXRh
IGFuZCBidWZmZXJTdWJEYXRhIHdpdGggQXJyYXlCdWZmZXIgYXMgaW5wdXQKK1BBU1MgZ2wgaXMg
bm9uLW51bGwuCitQQVNTIGFycmF5IGlzIG5vbi1udWxsLgorUEFTUyBbb2JqZWN0IFdlYkdMQnVm
ZmVyXSBpcyBub24tbnVsbC4KK1BBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5OT19FUlJPUgorUEFT
UyBnbC5nZXRFcnJvcigpIGlzIGdsLk5PX0VSUk9SCitQQVNTIGdsLmdldEVycm9yKCkgaXMgZ2wu
Tk9fRVJST1IKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVU
RQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9idWZmZXItZGF0YS1hcnJh
eS12aWV3Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wv
YnVmZmVyLWRhdGEtYXJyYXktdmlldy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9jYW52YXMvd2ViZ2wvYnVmZmVyLWRhdGEtYXJyYXktdmlldy5odG1sCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDQxIEBACis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9InJlc291cmNlcy93ZWJnbC10ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
CisKKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdCBidWZmZXJEYXRhL2J1ZmZlclN1YkRhdGEg
d2l0aCBBcnJheVZpZXcgaW5wdXQiKTsKKworZGVidWcoJ1JlZ3Jlc3Npb24gdGVzdCBmb3IgPGEg
aHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQxODg0Ij5odHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDE4ODQ8L2E+IDogPGNvZGU+SW1w
bGVtZW50IGJ1ZmZlckRhdGEgYW5kIGJ1ZmZlclN1YkRhdGEgd2l0aCBBcnJheUJ1ZmZlciBhcyBp
bnB1dDwvY29kZT4nKTsKKwordmFyIGdsID0gY3JlYXRlM0RDb250ZXh0KCk7CitzaG91bGRCZU5v
bk51bGwoImdsIik7CisKK3ZhciBhcnJheSA9IG5ldyBBcnJheUJ1ZmZlcigxMjgpOworc2hvdWxk
QmVOb25OdWxsKCJhcnJheSIpOworCit2YXIgYnVmID0gZ2wuY3JlYXRlQnVmZmVyKCk7CitzaG91
bGRCZU5vbk51bGwoYnVmKTsKKworZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIGJ1Zik7
CitzaG91bGRCZSgiZ2wuZ2V0RXJyb3IoKSIsICJnbC5OT19FUlJPUiIpOworCitnbC5idWZmZXJE
YXRhKGdsLkFSUkFZX0JVRkZFUiwgYXJyYXksIGdsLlNUQVRJQ19EUkFXKTsKK3Nob3VsZEJlKCJn
bC5nZXRFcnJvcigpIiwgImdsLk5PX0VSUk9SIik7CisKK2FycmF5ID0gbmV3IEFycmF5QnVmZmVy
KDY0KTsKKworZ2wuYnVmZmVyU3ViRGF0YShnbC5BUlJBWV9CVUZGRVIsIDEwLCBhcnJheSk7Citz
aG91bGRCZSgiZ2wuZ2V0RXJyb3IoKSIsICJnbC5OT19FUlJPUiIpOworCitzdWNjZXNzZnVsbHlQ
YXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>
<flag name="commit-queue"
          id="49159"
          type_id="3"
          status="-"
          setter="zmo"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>61315</attachid>
            <date>2010-07-12 19:56:13 -0700</date>
            <delta_ts>2010-07-13 10:45:36 -0700</delta_ts>
            <desc>revised patch</desc>
            <filename>arraybuffer.patch</filename>
            <type>text/plain</type>
            <size>18340</size>
            <attacher name="Zhenyao Mo">zmo</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MzE1OCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjYgQEAKKzIwMTAtMDctMTAgIFpoZW55YW8gTW8gIDx6bW9AZ29vZ2xlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1l
bnQgYnVmZmVyRGF0YSBhbmQgYnVmZmVyU3ViRGF0YSB3aXRoIEFycmF5QnVmZmVyIGFzIGlucHV0
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MTg4NAor
CisgICAgICAgIFRlc3Q6IGZhc3QvY2FudmFzL3dlYmdsL2J1ZmZlci1kYXRhLWFycmF5LWJ1ZmZl
ci5odG1sCisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5jcHA6IEltcGxlbWVu
dCBhc3NvY2lhdGVCdWZmZXJEYXRhICYgYXNzb2NpYXRlQnVmZmVyU3ViRGF0YSB3aXRoIEFycmF5
QnVmZmVyIGFzIGlucHV0LgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xCdWZmZXI6OmFzc29jaWF0
ZUJ1ZmZlckRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xCdWZmZXI6OmFzc29jaWF0ZUJ1
ZmZlclN1YkRhdGEpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmg6IERpdHRv
LgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHA6IEltcGxl
bWVudCBidWZmZXJEYXRhIGFuZCBidWZmZXJTdWJEYXRhIHdpdGggQXJyYXlCdWZmZXIgYXMgaW5w
dXQuCisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmJ1ZmZlckRhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpidWZmZXJTdWJEYXRh
KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaDogRGl0dG8u
CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmlkbDogRGl0dG8u
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaDogRGl0dG8u
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ29udGV4dDNETWFjLm1t
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpidWZmZXJEYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpidWZmZXJTdWJEYXRhKToK
KwogMjAxMC0wNy0xMiAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpJbmRleDogV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TEJ1ZmZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEJ1ZmZl
ci5jcHAJKHJldmlzaW9uIDYzMTU4KQorKysgV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEJ1ZmZl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc0LDYgKzc0LDM1IEBAIGJvb2wgV2ViR0xCdWZmZXI6
OmFzc29jaWF0ZUJ1ZmZlckRhdGEoaW4KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK2Jvb2wgV2Vi
R0xCdWZmZXI6OmFzc29jaWF0ZUJ1ZmZlckRhdGEoQXJyYXlCdWZmZXIqIGFycmF5KQoreworICAg
IGlmICghbV90YXJnZXQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWFycmF5KQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAobV90YXJnZXQgPT0gR3JhcGhpY3NDb250
ZXh0M0Q6OkVMRU1FTlRfQVJSQVlfQlVGRkVSKSB7CisgICAgICAgIGNsZWFyQ2FjaGVkTWF4SW5k
aWNlcygpOworICAgICAgICBtX2J5dGVMZW5ndGggPSBhcnJheS0+Ynl0ZUxlbmd0aCgpOworICAg
ICAgICAvLyBXZSBtdXN0IGFsd2F5cyBjbG9uZSB0aGUgaW5jb21pbmcgZGF0YSBiZWNhdXNlIGNs
aWVudC1zaWRlCisgICAgICAgIC8vIG1vZGlmaWNhdGlvbnMgd2l0aG91dCBjYWxsaW5nIGJ1ZmZl
ckRhdGEgb3IgYnVmZmVyU3ViRGF0YQorICAgICAgICAvLyBtdXN0IG5ldmVyIGJlIGFibGUgdG8g
Y2hhbmdlIHRoZSB2YWxpZGF0aW9uIHJlc3VsdHMuCisgICAgICAgIG1fZWxlbWVudEFycmF5QnVm
ZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShhcnJheSk7CisgICAgICAgIGlmICghbV9lbGVtZW50
QXJyYXlCdWZmZXIpIHsKKyAgICAgICAgICAgIG1fYnl0ZUxlbmd0aCA9IDA7CisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQor
CisgICAgaWYgKG1fdGFyZ2V0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpBUlJBWV9CVUZGRVIpIHsK
KyAgICAgICAgbV9ieXRlTGVuZ3RoID0gYXJyYXktPmJ5dGVMZW5ndGgoKTsKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCiBib29sIFdlYkdMQnVm
ZmVyOjphc3NvY2lhdGVCdWZmZXJEYXRhKEFycmF5QnVmZmVyVmlldyogYXJyYXkpCiB7CiAgICAg
aWYgKCFtX3RhcmdldCkKQEAgLTEwMyw2ICsxMzIsMzkgQEAgYm9vbCBXZWJHTEJ1ZmZlcjo6YXNz
b2NpYXRlQnVmZmVyRGF0YShBcgogICAgIHJldHVybiBmYWxzZTsKIH0KIAorYm9vbCBXZWJHTEJ1
ZmZlcjo6YXNzb2NpYXRlQnVmZmVyU3ViRGF0YShsb25nIG9mZnNldCwgQXJyYXlCdWZmZXIqIGFy
cmF5KQoreworICAgIGlmICghbV90YXJnZXQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBp
ZiAoIWFycmF5KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAobV90YXJnZXQgPT0g
R3JhcGhpY3NDb250ZXh0M0Q6OkVMRU1FTlRfQVJSQVlfQlVGRkVSKSB7CisgICAgICAgIGNsZWFy
Q2FjaGVkTWF4SW5kaWNlcygpOworCisgICAgICAgIC8vIFdlIG5lZWQgdG8gcHJvdGVjdCBhZ2Fp
bnN0IGludGVnZXIgb3ZlcmZsb3cgd2l0aCB0aGVzZSB0ZXN0cworICAgICAgICBpZiAob2Zmc2V0
IDwgMCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICB1bnNpZ25lZCBsb25n
IHVvZmZzZXQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihvZmZzZXQpOworICAgICAgICBp
ZiAodW9mZnNldCA+IG1fYnl0ZUxlbmd0aCB8fCBhcnJheS0+Ynl0ZUxlbmd0aCgpID4gbV9ieXRl
TGVuZ3RoIC0gdW9mZnNldCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBp
ZiAoIW1fZWxlbWVudEFycmF5QnVmZmVyKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgICAgIG1lbWNweShzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4obV9lbGVtZW50QXJyYXlC
dWZmZXItPmRhdGEoKSkgKyBvZmZzZXQsCisgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDx1bnNp
Z25lZCBjaGFyKj4oYXJyYXktPmRhdGEoKSksCisgICAgICAgICAgICAgICBhcnJheS0+Ynl0ZUxl
bmd0aCgpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgaWYgKG1fdGFyZ2V0
ID09IEdyYXBoaWNzQ29udGV4dDNEOjpBUlJBWV9CVUZGRVIpCisgICAgICAgIHJldHVybiBhcnJh
eS0+Ynl0ZUxlbmd0aCgpICsgb2Zmc2V0IDw9IG1fYnl0ZUxlbmd0aDsKKworICAgIHJldHVybiBm
YWxzZTsKK30KKwogYm9vbCBXZWJHTEJ1ZmZlcjo6YXNzb2NpYXRlQnVmZmVyU3ViRGF0YShsb25n
IG9mZnNldCwgQXJyYXlCdWZmZXJWaWV3KiBhcnJheSkKIHsKICAgICBpZiAoIW1fdGFyZ2V0KQpJ
bmRleDogV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuaAkocmV2aXNpb24gNjMxNTgpCisrKyBXZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQx
LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJH
TEJ1ZmZlcj4gY3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dCopOwogCiAgICAgICAgIGJvb2wg
YXNzb2NpYXRlQnVmZmVyRGF0YShpbnQgc2l6ZSk7CisgICAgICAgIGJvb2wgYXNzb2NpYXRlQnVm
ZmVyRGF0YShBcnJheUJ1ZmZlciogYXJyYXkpOwogICAgICAgICBib29sIGFzc29jaWF0ZUJ1ZmZl
ckRhdGEoQXJyYXlCdWZmZXJWaWV3KiBhcnJheSk7CisgICAgICAgIGJvb2wgYXNzb2NpYXRlQnVm
ZmVyU3ViRGF0YShsb25nIG9mZnNldCwgQXJyYXlCdWZmZXIqIGFycmF5KTsKICAgICAgICAgYm9v
bCBhc3NvY2lhdGVCdWZmZXJTdWJEYXRhKGxvbmcgb2Zmc2V0LCBBcnJheUJ1ZmZlclZpZXcqIGFy
cmF5KTsKICAgICAgICAgCiAgICAgICAgIHVuc2lnbmVkIGJ5dGVMZW5ndGgoKSBjb25zdDsKSW5k
ZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAJKHJl
dmlzaW9uIDYzMTU4KQorKysgV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRl
eHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNzIsNiArMzcyLDMyIEBAIHZvaWQgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0OjpidWZmZXJEYXRhKHUKICAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwo
ZmFsc2UpOwogfQogCit2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6YnVmZmVyRGF0YSh1bnNp
Z25lZCBsb25nIHRhcmdldCwgQXJyYXlCdWZmZXIqIGRhdGEsIHVuc2lnbmVkIGxvbmcgdXNhZ2Us
IEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIFVOVVNFRF9QQVJBTShlYyk7CisgICAgaWYgKCFp
c0dMRVMyQ29tcGxpYW50KCkpIHsKKyAgICAgICAgaWYgKCF2YWxpZGF0ZUJ1ZmZlckRhdGFVc2Fn
ZSh1c2FnZSkpCisgICAgICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmICh0YXJnZXQgPT0g
R3JhcGhpY3NDb250ZXh0M0Q6OkVMRU1FTlRfQVJSQVlfQlVGRkVSICYmIG1fYm91bmRFbGVtZW50
QXJyYXlCdWZmZXIpIHsKKyAgICAgICAgaWYgKCFtX2JvdW5kRWxlbWVudEFycmF5QnVmZmVyLT5h
c3NvY2lhdGVCdWZmZXJEYXRhKGRhdGEpKSB7CisgICAgICAgICAgICBtX2NvbnRleHQtPnN5bnRo
ZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAodGFyZ2V0ID09IEdyYXBoaWNz
Q29udGV4dDNEOjpBUlJBWV9CVUZGRVIgJiYgbV9ib3VuZEFycmF5QnVmZmVyKSB7CisgICAgICAg
IGlmICghbV9ib3VuZEFycmF5QnVmZmVyLT5hc3NvY2lhdGVCdWZmZXJEYXRhKGRhdGEpKSB7Cisg
ICAgICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNE
OjpJTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0g
ZWxzZSB7CisgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250
ZXh0M0Q6OklOVkFMSURfRU5VTSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2Nv
bnRleHQtPmJ1ZmZlckRhdGEodGFyZ2V0LCBkYXRhLCB1c2FnZSk7CisgICAgY2xlYW51cEFmdGVy
R3JhcGhpY3NDYWxsKGZhbHNlKTsKK30KKwogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmJ1
ZmZlckRhdGEodW5zaWduZWQgbG9uZyB0YXJnZXQsIEFycmF5QnVmZmVyVmlldyogZGF0YSwgdW5z
aWduZWQgbG9uZyB1c2FnZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgVU5VU0VEX1BBUkFN
KGVjKTsKQEAgLTM5OCw2ICs0MjQsMjggQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmJ1
ZmZlckRhdGEodQogICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CiAKK3Zv
aWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpidWZmZXJTdWJEYXRhKHVuc2lnbmVkIGxvbmcgdGFy
Z2V0LCBsb25nIG9mZnNldCwgQXJyYXlCdWZmZXIqIGRhdGEsIEV4Y2VwdGlvbkNvZGUmIGVjKQor
eworICAgIFVOVVNFRF9QQVJBTShlYyk7CisgICAgaWYgKHRhcmdldCA9PSBHcmFwaGljc0NvbnRl
eHQzRDo6RUxFTUVOVF9BUlJBWV9CVUZGRVIgJiYgbV9ib3VuZEVsZW1lbnRBcnJheUJ1ZmZlcikg
eworICAgICAgICBpZiAoIW1fYm91bmRFbGVtZW50QXJyYXlCdWZmZXItPmFzc29jaWF0ZUJ1ZmZl
clN1YkRhdGEob2Zmc2V0LCBkYXRhKSkgeworICAgICAgICAgICAgbV9jb250ZXh0LT5zeW50aGVz
aXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKHRhcmdldCA9PSBHcmFwaGljc0Nv
bnRleHQzRDo6QVJSQVlfQlVGRkVSICYmIG1fYm91bmRBcnJheUJ1ZmZlcikgeworICAgICAgICBp
ZiAoIW1fYm91bmRBcnJheUJ1ZmZlci0+YXNzb2NpYXRlQnVmZmVyU3ViRGF0YShvZmZzZXQsIGRh
dGEpKSB7CisgICAgICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNz
Q29udGV4dDNEOjpJTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorICAgIH0gZWxzZSB7CisgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3Jh
cGhpY3NDb250ZXh0M0Q6OklOVkFMSURfRU5VTSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBtX2NvbnRleHQtPmJ1ZmZlclN1YkRhdGEodGFyZ2V0LCBvZmZzZXQsIGRhdGEpOworICAg
IGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7Cit9CisKIHZvaWQgV2ViR0xSZW5kZXJp
bmdDb250ZXh0OjpidWZmZXJTdWJEYXRhKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBsb25nIG9mZnNl
dCwgQXJyYXlCdWZmZXJWaWV3KiBkYXRhLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBVTlVT
RURfUEFSQU0oZWMpOwpJbmRleDogV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0Nv
bnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5n
Q29udGV4dC5oCShyZXZpc2lvbiA2MzE1OCkKKysrIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTc3LDcgKzc3LDkgQEAgY2xhc3Mg
V2ViS2l0Q1NTTWF0cml4OwogICAgICAgICB2b2lkIGJsZW5kRnVuY1NlcGFyYXRlKHVuc2lnbmVk
IGxvbmcgc3JjUkdCLCB1bnNpZ25lZCBsb25nIGRzdFJHQiwgdW5zaWduZWQgbG9uZyBzcmNBbHBo
YSwgdW5zaWduZWQgbG9uZyBkc3RBbHBoYSk7CiAKICAgICAgICAgdm9pZCBidWZmZXJEYXRhKHVu
c2lnbmVkIGxvbmcgdGFyZ2V0LCBpbnQgc2l6ZSwgdW5zaWduZWQgbG9uZyB1c2FnZSwgRXhjZXB0
aW9uQ29kZSYpOworICAgICAgICB2b2lkIGJ1ZmZlckRhdGEodW5zaWduZWQgbG9uZyB0YXJnZXQs
IEFycmF5QnVmZmVyKiBkYXRhLCB1bnNpZ25lZCBsb25nIHVzYWdlLCBFeGNlcHRpb25Db2RlJik7
CiAgICAgICAgIHZvaWQgYnVmZmVyRGF0YSh1bnNpZ25lZCBsb25nIHRhcmdldCwgQXJyYXlCdWZm
ZXJWaWV3KiBkYXRhLCB1bnNpZ25lZCBsb25nIHVzYWdlLCBFeGNlcHRpb25Db2RlJik7CisgICAg
ICAgIHZvaWQgYnVmZmVyU3ViRGF0YSh1bnNpZ25lZCBsb25nIHRhcmdldCwgbG9uZyBvZmZzZXQs
IEFycmF5QnVmZmVyKiBkYXRhLCBFeGNlcHRpb25Db2RlJik7CiAgICAgICAgIHZvaWQgYnVmZmVy
U3ViRGF0YSh1bnNpZ25lZCBsb25nIHRhcmdldCwgbG9uZyBvZmZzZXQsIEFycmF5QnVmZmVyVmll
dyogZGF0YSwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgICAgIHVuc2lnbmVkIGxvbmcgY2hlY2tG
cmFtZWJ1ZmZlclN0YXR1cyh1bnNpZ25lZCBsb25nIHRhcmdldCk7CkluZGV4OiBXZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaWRsCShyZXZpc2lvbiA2MzE1OCkK
KysrIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtNDc3LDkgKzQ3NywxMCBAQCBtb2R1bGUgaHRtbCB7CiAgICAgICAgIHZvaWQg
ICAgICAgICBibGVuZEVxdWF0aW9uU2VwYXJhdGUoaW4gdW5zaWduZWQgbG9uZyBtb2RlUkdCLCBp
biB1bnNpZ25lZCBsb25nIG1vZGVBbHBoYSk7CiAgICAgICAgIHZvaWQgICAgICAgICBibGVuZEZ1
bmMoaW4gdW5zaWduZWQgbG9uZyBzZmFjdG9yLCBpbiB1bnNpZ25lZCBsb25nIGRmYWN0b3IpOwog
ICAgICAgICB2b2lkICAgICAgICAgYmxlbmRGdW5jU2VwYXJhdGUoaW4gdW5zaWduZWQgbG9uZyBz
cmNSR0IsIGluIHVuc2lnbmVkIGxvbmcgZHN0UkdCLCBpbiB1bnNpZ25lZCBsb25nIHNyY0FscGhh
LCBpbiB1bnNpZ25lZCBsb25nIGRzdEFscGhhKTsKLQorICAgICAgICB2b2lkICAgICAgICAgYnVm
ZmVyRGF0YShpbiB1bnNpZ25lZCBsb25nIHRhcmdldCwgaW4gQXJyYXlCdWZmZXIgZGF0YSwgaW4g
dW5zaWduZWQgbG9uZyB1c2FnZSkgcmFpc2VzIChET01FeGNlcHRpb24pOwogICAgICAgICB2b2lk
ICAgICAgICAgYnVmZmVyRGF0YShpbiB1bnNpZ25lZCBsb25nIHRhcmdldCwgaW4gQXJyYXlCdWZm
ZXJWaWV3IGRhdGEsIGluIHVuc2lnbmVkIGxvbmcgdXNhZ2UpIHJhaXNlcyAoRE9NRXhjZXB0aW9u
KTsKICAgICAgICAgdm9pZCAgICAgICAgIGJ1ZmZlckRhdGEoaW4gdW5zaWduZWQgbG9uZyB0YXJn
ZXQsIGluIGxvbmcgc2l6ZSwgaW4gdW5zaWduZWQgbG9uZyB1c2FnZSkgcmFpc2VzIChET01FeGNl
cHRpb24pOworICAgICAgICB2b2lkICAgICAgICAgYnVmZmVyU3ViRGF0YShpbiB1bnNpZ25lZCBs
b25nIHRhcmdldCwgaW4gbG9uZyBvZmZzZXQsIGluIEFycmF5QnVmZmVyIGRhdGEpIHJhaXNlcyAo
RE9NRXhjZXB0aW9uKTsKICAgICAgICAgdm9pZCAgICAgICAgIGJ1ZmZlclN1YkRhdGEoaW4gdW5z
aWduZWQgbG9uZyB0YXJnZXQsIGluIGxvbmcgb2Zmc2V0LCBpbiBBcnJheUJ1ZmZlclZpZXcgZGF0
YSkgcmFpc2VzIChET01FeGNlcHRpb24pOwogCiAgICAgICAgIHVuc2lnbmVkIGxvbmcgY2hlY2tG
cmFtZWJ1ZmZlclN0YXR1cyhpbiB1bnNpZ25lZCBsb25nIHRhcmdldCk7CkluZGV4OiBXZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCShyZXZpc2lvbiA2MzE1
OCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAkod29y
a2luZyBjb3B5KQpAQCAtNzAsNiArNzAsNyBAQCBjb25zdCBQbGF0Zm9ybTNET2JqZWN0IE51bGxQ
bGF0Zm9ybTNET2JqCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBXZWJHTEFjdGl2
ZUluZm87CisgICAgY2xhc3MgQXJyYXlCdWZmZXI7CiAgICAgY2xhc3MgQXJyYXlCdWZmZXJWaWV3
OwogICAgIGNsYXNzIFdlYkdMQnVmZmVyOwogICAgIGNsYXNzIFVpbnQ4QXJyYXk7CkBAIC01NTEs
NyArNTUyLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIGJsZW5kRnVuY1Nl
cGFyYXRlKHVuc2lnbmVkIGxvbmcgc3JjUkdCLCB1bnNpZ25lZCBsb25nIGRzdFJHQiwgdW5zaWdu
ZWQgbG9uZyBzcmNBbHBoYSwgdW5zaWduZWQgbG9uZyBkc3RBbHBoYSk7CiAKICAgICAgICAgdm9p
ZCBidWZmZXJEYXRhKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBpbnQgc2l6ZSwgdW5zaWduZWQgbG9u
ZyB1c2FnZSk7CisgICAgICAgIHZvaWQgYnVmZmVyRGF0YSh1bnNpZ25lZCBsb25nIHRhcmdldCwg
QXJyYXlCdWZmZXIqIGRhdGEsIHVuc2lnbmVkIGxvbmcgdXNhZ2UpOwogICAgICAgICB2b2lkIGJ1
ZmZlckRhdGEodW5zaWduZWQgbG9uZyB0YXJnZXQsIEFycmF5QnVmZmVyVmlldyogZGF0YSwgdW5z
aWduZWQgbG9uZyB1c2FnZSk7CisgICAgICAgIHZvaWQgYnVmZmVyU3ViRGF0YSh1bnNpZ25lZCBs
b25nIHRhcmdldCwgbG9uZyBvZmZzZXQsIEFycmF5QnVmZmVyKiBkYXRhKTsKICAgICAgICAgdm9p
ZCBidWZmZXJTdWJEYXRhKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBsb25nIG9mZnNldCwgQXJyYXlC
dWZmZXJWaWV3KiBkYXRhKTsKIAogICAgICAgICB1bnNpZ25lZCBsb25nIGNoZWNrRnJhbWVidWZm
ZXJTdGF0dXModW5zaWduZWQgbG9uZyB0YXJnZXQpOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0M0RNYWMubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0M0RNYWMubW0JKHJldmlzaW9u
IDYzMTU4KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0
M0RNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJJbWFn
ZUJ1ZmZlci5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiV2ViR0xB
Y3RpdmVJbmZvLmgiCisjaW5jbHVkZSAiQXJyYXlCdWZmZXIuaCIKICNpbmNsdWRlICJBcnJheUJ1
ZmZlclZpZXcuaCIKICNpbmNsdWRlICJXZWJHTEJ1ZmZlci5oIgogI2luY2x1ZGUgIkZsb2F0MzJB
cnJheS5oIgpAQCAtNDk0LDYgKzQ5NSwxNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpidWZm
ZXJEYXRhKHVuc2lnCiAgICAgZW5zdXJlQ29udGV4dChtX2NvbnRleHRPYmopOwogICAgIDo6Z2xC
dWZmZXJEYXRhKHRhcmdldCwgc2l6ZSwgMCwgdXNhZ2UpOwogfQorCit2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjpidWZmZXJEYXRhKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBBcnJheUJ1ZmZlciogYXJy
YXksIHVuc2lnbmVkIGxvbmcgdXNhZ2UpCit7CisgICAgaWYgKCFhcnJheSB8fCAhYXJyYXktPmJ5
dGVMZW5ndGgoKSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIGVuc3VyZUNvbnRleHQobV9j
b250ZXh0T2JqKTsKKyAgICA6OmdsQnVmZmVyRGF0YSh0YXJnZXQsIGFycmF5LT5ieXRlTGVuZ3Ro
KCksIGFycmF5LT5kYXRhKCksIHVzYWdlKTsKK30KKwogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
YnVmZmVyRGF0YSh1bnNpZ25lZCBsb25nIHRhcmdldCwgQXJyYXlCdWZmZXJWaWV3KiBhcnJheSwg
dW5zaWduZWQgbG9uZyB1c2FnZSkKIHsKICAgICBpZiAoIWFycmF5IHx8ICFhcnJheS0+bGVuZ3Ro
KCkpCkBAIC01MDMsNiArNTE0LDE1IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJ1ZmZlckRh
dGEodW5zaWcKICAgICA6OmdsQnVmZmVyRGF0YSh0YXJnZXQsIGFycmF5LT5ieXRlTGVuZ3RoKCks
IGFycmF5LT5iYXNlQWRkcmVzcygpLCB1c2FnZSk7CiB9CiAKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OmJ1ZmZlclN1YkRhdGEodW5zaWduZWQgbG9uZyB0YXJnZXQsIGxvbmcgb2Zmc2V0LCBBcnJh
eUJ1ZmZlciogYXJyYXkpCit7CisgICAgaWYgKCFhcnJheSB8fCAhYXJyYXktPmJ5dGVMZW5ndGgo
KSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIGVuc3VyZUNvbnRleHQobV9jb250ZXh0T2Jq
KTsKKyAgICA6OmdsQnVmZmVyU3ViRGF0YSh0YXJnZXQsIG9mZnNldCwgYXJyYXktPmJ5dGVMZW5n
dGgoKSwgYXJyYXktPmRhdGEoKSk7Cit9CisKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJ1ZmZl
clN1YkRhdGEodW5zaWduZWQgbG9uZyB0YXJnZXQsIGxvbmcgb2Zmc2V0LCBBcnJheUJ1ZmZlclZp
ZXcqIGFycmF5KQogewogICAgIGlmICghYXJyYXkgfHwgIWFycmF5LT5sZW5ndGgoKSkKSW5kZXg6
IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwkocmV2aXNpb24gNjMxNTgpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTAtMDctMTAgIFpoZW55YW8gTW8g
IDx6bW9AZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBJbXBsZW1lbnQgYnVmZmVyRGF0YSBhbmQgYnVmZmVyU3ViRGF0YSB3aXRoIEFy
cmF5QnVmZmVyIGFzIGlucHV0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD00MTg4NAorCisgICAgICAgICogc3JjL0dyYXBoaWNzQ29udGV4dDNELmNwcDog
SW1wbGVtZW50IGJ1ZmZlckRhdGEgYW5kIGJ1ZmZlclN1YkRhdGEgd2l0aCBBcnJheUJ1ZmZlciBh
cyBpbnB1dC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmJ1
ZmZlckRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6
YnVmZmVyU3ViRGF0YSk6CisKIDIwMTAtMDctMTIgIERvbWluaWMgTWF6em9uaSAgPGRtYXp6b25p
QGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gRmlzaGVyLgpJbmRleDog
V2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRC5jcHAJKHJldmlzaW9uIDYzMTU4
KQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEzOSw3ICsxMzksOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBibGVuZEZ1bmNTZXBh
cmF0ZSh1bnNpZ25lZCBsb25nIHNyY1JHQiwgdW5zaWduZWQgbG9uZyBkc3RSR0IsIHVuc2lnbmVk
IGxvbmcgc3JjQWxwaGEsIHVuc2lnbmVkIGxvbmcgZHN0QWxwaGEpOwogCiAgICAgdm9pZCBidWZm
ZXJEYXRhKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBpbnQgc2l6ZSwgdW5zaWduZWQgbG9uZyB1c2Fn
ZSk7CisgICAgdm9pZCBidWZmZXJEYXRhKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBBcnJheUJ1ZmZl
ciogZGF0YSwgdW5zaWduZWQgbG9uZyB1c2FnZSk7CiAgICAgdm9pZCBidWZmZXJEYXRhKHVuc2ln
bmVkIGxvbmcgdGFyZ2V0LCBBcnJheUJ1ZmZlclZpZXcqIGRhdGEsIHVuc2lnbmVkIGxvbmcgdXNh
Z2UpOworICAgIHZvaWQgYnVmZmVyU3ViRGF0YSh1bnNpZ25lZCBsb25nIHRhcmdldCwgbG9uZyBv
ZmZzZXQsIEFycmF5QnVmZmVyKiBkYXRhKTsKICAgICB2b2lkIGJ1ZmZlclN1YkRhdGEodW5zaWdu
ZWQgbG9uZyB0YXJnZXQsIGxvbmcgb2Zmc2V0LCBBcnJheUJ1ZmZlclZpZXcqIGRhdGEpOwogCiAg
ICAgdW5zaWduZWQgbG9uZyBjaGVja0ZyYW1lYnVmZmVyU3RhdHVzKHVuc2lnbmVkIGxvbmcgdGFy
Z2V0KTsKQEAgLTcxOCwxMSArNzIwLDIxIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5h
bDo6YnVmZmVyRGEKICAgICBtX2ltcGwtPmJ1ZmZlckRhdGEodGFyZ2V0LCBzaXplLCAwLCB1c2Fn
ZSk7CiB9CiAKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6YnVmZmVyRGF0YSh1bnNp
Z25lZCBsb25nIHRhcmdldCwgQXJyYXlCdWZmZXIqIGFycmF5LCB1bnNpZ25lZCBsb25nIHVzYWdl
KQoreworICAgIG1faW1wbC0+YnVmZmVyRGF0YSh0YXJnZXQsIGFycmF5LT5ieXRlTGVuZ3RoKCks
IGFycmF5LT5kYXRhKCksIHVzYWdlKTsKK30KKwogdm9pZCBHcmFwaGljc0NvbnRleHQzREludGVy
bmFsOjpidWZmZXJEYXRhKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBBcnJheUJ1ZmZlclZpZXcqIGFy
cmF5LCB1bnNpZ25lZCBsb25nIHVzYWdlKQogewogICAgIG1faW1wbC0+YnVmZmVyRGF0YSh0YXJn
ZXQsIGFycmF5LT5ieXRlTGVuZ3RoKCksIGFycmF5LT5iYXNlQWRkcmVzcygpLCB1c2FnZSk7CiB9
CiAKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6YnVmZmVyU3ViRGF0YSh1bnNpZ25l
ZCBsb25nIHRhcmdldCwgbG9uZyBvZmZzZXQsIEFycmF5QnVmZmVyKiBhcnJheSkKK3sKKyAgICBt
X2ltcGwtPmJ1ZmZlclN1YkRhdGEodGFyZ2V0LCBvZmZzZXQsIGFycmF5LT5ieXRlTGVuZ3RoKCks
IGFycmF5LT5kYXRhKCkpOworfQorCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmJ1
ZmZlclN1YkRhdGEodW5zaWduZWQgbG9uZyB0YXJnZXQsIGxvbmcgb2Zmc2V0LCBBcnJheUJ1ZmZl
clZpZXcqIGFycmF5KQogewogICAgIG1faW1wbC0+YnVmZmVyU3ViRGF0YSh0YXJnZXQsIG9mZnNl
dCwgYXJyYXktPmJ5dGVMZW5ndGgoKSwgYXJyYXktPmJhc2VBZGRyZXNzKCkpOwpAQCAtMTE2NSw3
ICsxMTc3LDkgQEAgREVMRUdBVEVfVE9fSU5URVJOQUxfMihibGVuZEZ1bmMsIHVuc2lnbgogREVM
RUdBVEVfVE9fSU5URVJOQUxfNChibGVuZEZ1bmNTZXBhcmF0ZSwgdW5zaWduZWQgbG9uZywgdW5z
aWduZWQgbG9uZywgdW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZykKIAogREVMRUdBVEVfVE9f
SU5URVJOQUxfMyhidWZmZXJEYXRhLCB1bnNpZ25lZCBsb25nLCBpbnQsIHVuc2lnbmVkIGxvbmcp
CitERUxFR0FURV9UT19JTlRFUk5BTF8zKGJ1ZmZlckRhdGEsIHVuc2lnbmVkIGxvbmcsIEFycmF5
QnVmZmVyKiwgdW5zaWduZWQgbG9uZykKIERFTEVHQVRFX1RPX0lOVEVSTkFMXzMoYnVmZmVyRGF0
YSwgdW5zaWduZWQgbG9uZywgQXJyYXlCdWZmZXJWaWV3KiwgdW5zaWduZWQgbG9uZykKK0RFTEVH
QVRFX1RPX0lOVEVSTkFMXzMoYnVmZmVyU3ViRGF0YSwgdW5zaWduZWQgbG9uZywgbG9uZywgQXJy
YXlCdWZmZXIqKQogREVMRUdBVEVfVE9fSU5URVJOQUxfMyhidWZmZXJTdWJEYXRhLCB1bnNpZ25l
ZCBsb25nLCBsb25nLCBBcnJheUJ1ZmZlclZpZXcqKQogCiBERUxFR0FURV9UT19JTlRFUk5BTF8x
UihjaGVja0ZyYW1lYnVmZmVyU3RhdHVzLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nKQpJ
bmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0No
YW5nZUxvZwkocmV2aXNpb24gNjMxNTgpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMC0wNy0xMCAgWmhlbnlhbyBNbyAgPHptb0Bn
b29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEltcGxlbWVudCBidWZmZXJEYXRhIGFuZCBidWZmZXJTdWJEYXRhIHdpdGggQXJyYXlCdWZm
ZXIgYXMgaW5wdXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTQxODg0CisKKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9idWZmZXItZGF0YS1hcnJh
eS1idWZmZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJn
bC9idWZmZXItZGF0YS1hcnJheS1idWZmZXIuaHRtbDogQWRkZWQuCisKIDIwMTAtMDctMTIgIEVy
aWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQuICBKdXN0
IHNraXBwaW5nIGEgdGVzdCBvbiBHdGsgZHVlIHRvIG1pc3NpbmcgRFJUIGZlYXR1cmVzLgpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvYnVmZmVyLWRhdGEtYXJyYXktYnVmZmVy
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJn
bC9idWZmZXItZGF0YS1hcnJheS1idWZmZXItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvYnVmZmVyLWRhdGEtYXJyYXktYnVmZmVyLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNSBAQAorVGVzdCBidWZmZXJEYXRh
L2J1ZmZlclN1YkRhdGEgd2l0aCBBcnJheUJ1ZmZlciBpbnB1dAorCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKK1JlZ3Jlc3Npb24gdGVzdCBmb3IgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTQxODg0IDogSW1wbGVtZW50IGJ1ZmZlckRhdGEgYW5kIGJ1ZmZlclN1
YkRhdGEgd2l0aCBBcnJheUJ1ZmZlciBhcyBpbnB1dAorUEFTUyBnbCBpcyBub24tbnVsbC4KK1BB
U1MgYXJyYXkgaXMgbm9uLW51bGwuCitQQVNTIFtvYmplY3QgV2ViR0xCdWZmZXJdIGlzIG5vbi1u
dWxsLgorUEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLk5PX0VSUk9SCitQQVNTIGdsLmdldEVycm9y
KCkgaXMgZ2wuTk9fRVJST1IKK1BBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5OT19FUlJPUgorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2J1ZmZlci1kYXRhLWFycmF5LWJ1ZmZlci5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2J1ZmZlci1kYXRh
LWFycmF5LWJ1ZmZlci5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52
YXMvd2ViZ2wvYnVmZmVyLWRhdGEtYXJyYXktYnVmZmVyLmh0bWwJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNDEgQEAKKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
cmVzb3VyY2VzL3dlYmdsLXRlc3QuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2
IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPHNj
cmlwdD4KK2Rlc2NyaXB0aW9uKCJUZXN0IGJ1ZmZlckRhdGEvYnVmZmVyU3ViRGF0YSB3aXRoIEFy
cmF5QnVmZmVyIGlucHV0Iik7CisKK2RlYnVnKCdSZWdyZXNzaW9uIHRlc3QgZm9yIDxhIGhyZWY9
Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MTg4NCI+aHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQxODg0PC9hPiA6IDxjb2RlPkltcGxlbWVu
dCBidWZmZXJEYXRhIGFuZCBidWZmZXJTdWJEYXRhIHdpdGggQXJyYXlCdWZmZXIgYXMgaW5wdXQ8
L2NvZGU+Jyk7CisKK3ZhciBnbCA9IGNyZWF0ZTNEQ29udGV4dCgpOworc2hvdWxkQmVOb25OdWxs
KCJnbCIpOworCit2YXIgYXJyYXkgPSBuZXcgQXJyYXlCdWZmZXIoMTI4KTsKK3Nob3VsZEJlTm9u
TnVsbCgiYXJyYXkiKTsKKwordmFyIGJ1ZiA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworc2hvdWxkQmVO
b25OdWxsKGJ1Zik7CisKK2dsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCBidWYpOworc2hv
dWxkQmUoImdsLmdldEVycm9yKCkiLCAiZ2wuTk9fRVJST1IiKTsKKworZ2wuYnVmZmVyRGF0YShn
bC5BUlJBWV9CVUZGRVIsIGFycmF5LCBnbC5TVEFUSUNfRFJBVyk7CitzaG91bGRCZSgiZ2wuZ2V0
RXJyb3IoKSIsICJnbC5OT19FUlJPUiIpOworCithcnJheSA9IG5ldyBBcnJheUJ1ZmZlcig2NCk7
CisKK2dsLmJ1ZmZlclN1YkRhdGEoZ2wuQVJSQVlfQlVGRkVSLCAxMCwgYXJyYXkpOworc2hvdWxk
QmUoImdsLmdldEVycm9yKCkiLCAiZ2wuTk9fRVJST1IiKTsKKworc3VjY2Vzc2Z1bGx5UGFyc2Vk
ID0gdHJ1ZTsKKzwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>
<flag name="review"
          id="49317"
          type_id="1"
          status="+"
          setter="fishd"
    />
    <flag name="commit-queue"
          id="49318"
          type_id="3"
          status="-"
          setter="zmo"
    />
          </attachment>
      

    </bug>

</bugzilla>