<?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>83818</bug_id>
          
          <creation_ts>2012-04-12 13:50:14 -0700</creation_ts>
          <short_desc>Incorrect TypedArray#set behavior</short_desc>
          <delta_ts>2013-08-23 13:41:21 -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>JavaScriptCore</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>0</everconfirmed>
          <reporter name="Stéphan Kochen">stephan</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>kbr</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>sam</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>zmo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>601504</commentid>
    <comment_count>0</comment_count>
      <attachid>136964</attachid>
    <who name="Stéphan Kochen">stephan</who>
    <bug_when>2012-04-12 13:50:14 -0700</bug_when>
    <thetext>Created attachment 136964
Test case

Copying between two TypedArrays of different types, but backed by the same ArrayBuffer, using TypedArray#set can lead to incorrect results.

The attached test case can be run straight in the Developer Tools console. It contains three asserts of which the third fails:

    Uint16 value: 1285 == 1285 ? true
    First Uint16 element: 5 == 5 ? true
    Second Uint16 element: 0 == 5 ? false

I&apos;m guessing a[0] is written before b[1] is read. According to the spec, the copy should behave as if a temporary buffer is inbetween.

Tested on a nightly, that describes itself as: Version 5.1.5 (7534.55.3, r113983)

Thread on WebGL mailing list: https://www.khronos.org/webgl/public-mailing-list/archives/1204/msg00172.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601522</commentid>
    <comment_count>1</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2012-04-12 14:10:55 -0700</bug_when>
    <thetext>Yay for a spec that claims performance is important, but actively sabotages optimisations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>604529</commentid>
    <comment_count>2</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-04-17 17:52:51 -0700</bug_when>
    <thetext>As discussed on the public_webgl list, the original intent of the typed array spec was that this would throw TypeError. set() taking a typed array was supposed to be implementable using memmove().

Unfortunately, it turns out that this overload was illegal according to Web IDL. Recent Web IDL spec changes make the overload legal, but require that the version taking a JS array be called for all typed array view types other than the receiver&apos;s.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>920082</commentid>
    <comment_count>3</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-08-22 19:17:51 -0700</bug_when>
    <thetext>I&apos;ll look at it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>920114</commentid>
    <comment_count>4</comment_count>
      <attachid>209432</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-08-22 22:58:28 -0700</bug_when>
    <thetext>Created attachment 209432
the patch

Note, I have a bunch of tests for this - I&apos;ll upload the ad-hoc tests I wrote and I will LayoutTest-ify them later.  I plan to also LayoutTest-ify Stéphan&apos;s original test case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>920115</commentid>
    <comment_count>5</comment_count>
      <attachid>209433</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-08-22 22:59:39 -0700</bug_when>
    <thetext>Created attachment 209433
test for the case where we optimize with memmove</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>920116</commentid>
    <comment_count>6</comment_count>
      <attachid>209434</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-08-22 23:00:07 -0700</bug_when>
    <thetext>Created attachment 209434
test for overlapping elements of the same size</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>920117</commentid>
    <comment_count>7</comment_count>
      <attachid>209435</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-08-22 23:00:36 -0700</bug_when>
    <thetext>Created attachment 209435
test where the source elements are smaller than the destination elements</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>920118</commentid>
    <comment_count>8</comment_count>
      <attachid>209436</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-08-22 23:01:01 -0700</bug_when>
    <thetext>Created attachment 209436
test where the destination elements are smaller than the source elements</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>920394</commentid>
    <comment_count>9</comment_count>
      <attachid>209501</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-08-23 13:17:57 -0700</bug_when>
    <thetext>Created attachment 209501
the patch

The patch including tests and some minor changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>920412</commentid>
    <comment_count>10</comment_count>
      <attachid>209501</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-08-23 13:35:26 -0700</bug_when>
    <thetext>Comment on attachment 209501
the patch

r=me too</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>920420</commentid>
    <comment_count>11</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-08-23 13:41:21 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/154518</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>136964</attachid>
            <date>2012-04-12 13:50:14 -0700</date>
            <delta_ts>2012-04-12 13:50:14 -0700</delta_ts>
            <desc>Test case</desc>
            <filename>typed-array-copy.js</filename>
            <type>application/x-javascript</type>
            <size>458</size>
            <attacher name="Stéphan Kochen">stephan</attacher>
            
              <data encoding="base64">Ly8gY29uc29sZSBydW5uYWJsZSB0ZXN0IGNhc2UgYWRhcHRlZCBmcm9tOgovLyBodHRwczovL2dp
dGh1Yi5jb20vc3RlcGhhbmsvbm9kZS1hcnJheXMvYmxvYi9tYXN0ZXIvdGVzdC90eXBlZC1hcnJh
eS1jb3B5LmpzCgpmdW5jdGlvbiBhc3NlcnRFcShkZXNjLCBhLCBiKSB7IGNvbnNvbGUubG9nKGRl
c2MgKyAiOiAiICsgYSArICIgPT0gIiArIGIgKyAiID8gIiArIChhID09IGIpKTsgfQoKYSA9IG5l
dyBVaW50MTZBcnJheSg4KTsKCmIgPSBuZXcgVWludDhBcnJheShhLmJ1ZmZlciwgMCwgMik7CmJb
MF0gPSAweDA1OwpiWzFdID0gMHgwNTsKCmFzc2VydEVxKCdVaW50MTYgdmFsdWUnLCBhWzBdLCAw
eDA1MDUpOwoKYS5zZXQoYik7Cgphc3NlcnRFcSgnRmlyc3QgVWludDE2IGVsZW1lbnQnLCBhWzBd
LCAweDAwMDUpOwphc3NlcnRFcSgnU2Vjb25kIFVpbnQxNiBlbGVtZW50JywgYVsxXSwgMHgwMDA1
KTs=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>209432</attachid>
            <date>2013-08-22 22:58:28 -0700</date>
            <delta_ts>2013-08-23 13:17:57 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>7369</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU0NDczKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBA
CisyMDEzLTA4LTIyICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
SW5jb3JyZWN0IFR5cGVkQXJyYXkjc2V0IGJlaGF2aW9yCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MzgxOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgVGhpcyB3YXMgc28gbXVjaCBmdW4hIHR5
cGVkQXJyYXkuc2V0KCkgaXMgbGlrZSBhIG1lbW1vdmUgb24gc3Rlcm9pZHMsIGFuZCBJJ20KKyAg
ICAgICAgbm90IHNtYXJ0IGVub3VnaCB0byBmaWd1cmUgb3V0IG9wdGltYWwgdmVyc2lvbnMgZm9y
ICphbGwqIG9mIHRoZSBjYXNlcy4gQnV0IEkKKyAgICAgICAgZGlkIGNvbWUgdXAgd2l0aCBvcHRp
bWFsIGltcGxlbWVudGF0aW9ucyBmb3IgbW9zdCBvZiB0aGUgY2FzZXMsIGFuZCBJIHdyb3RlCisg
ICAgICAgIHNwZWMtbGl0ZXJhbCBjb2RlIChpLmUuIGNvcHkgdmlhIGEgdHJhbnNmZXIgYnVmZmVy
KSBmb3IgdGhlIGNhc2VzIEknbSBub3Qgc21hcnQKKyAgICAgICAgZW5vdWdoIHRvIHdyaXRlIG9w
dGltYWwgY29kZSBmb3IuCisKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3Lmg6
CisgICAgICAgIChKU0M6OkpTQXJyYXlCdWZmZXJWaWV3OjpoYXNBcnJheUJ1ZmZlcik6CisgICAg
ICAgICogcnVudGltZS9KU0FycmF5QnVmZmVyVmlld0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6
SlNBcnJheUJ1ZmZlclZpZXc6OmJ1ZmZlcik6CisgICAgICAgIChKU0M6OkpTQXJyYXlCdWZmZXJW
aWV3OjpleGlzdGluZ0J1ZmZlckluQnV0dGVyZmx5KToKKyAgICAgICAgKEpTQzo6SlNBcnJheUJ1
ZmZlclZpZXc6Om5ldXRlcik6CisgICAgICAgIChKU0M6OkpTQXJyYXlCdWZmZXJWaWV3OjpieXRl
T2Zmc2V0KToKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Lmg6Cisg
ICAgICAgICogcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaDoKKyAgICAg
ICAgKEpTQzo6OjpzZXRXaXRoU3BlY2lmaWNUeXBlKToKKyAgICAgICAgKEpTQzo6OjpzZXQpOgor
ICAgICAgICAoSlNDOjo6OmV4aXN0aW5nQnVmZmVyKToKKwogMjAxMy0wOC0yMiAgTWFyayBIYWhu
ZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgogCiAgICAgICAgIEpTT2JqZWN0IGFuZCBK
U0FycmF5IGNvZGUgc2hvdWxkbid0IGhhdmUgdG8gdGlwdG9lIGFyb3VuZCBnYXJiYWdlIGNvbGxl
Y3Rpb24KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJW
aWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJh
eUJ1ZmZlclZpZXcuaAkocmV2aXNpb24gMTU0NDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAtMTU0LDYgKzE1
NCw4IEBAIHByb3RlY3RlZDoKICAgICAKIHB1YmxpYzoKICAgICBUeXBlZEFycmF5TW9kZSBtb2Rl
KCkgY29uc3QgeyByZXR1cm4gbV9tb2RlOyB9CisgICAgYm9vbCBoYXNBcnJheUJ1ZmZlcigpIGNv
bnN0IHsgcmV0dXJuIEpTQzo6aGFzQXJyYXlCdWZmZXIobW9kZSgpKTsgfQorICAgIAogICAgIEFy
cmF5QnVmZmVyKiBidWZmZXIoKTsKICAgICBQYXNzUmVmUHRyPEFycmF5QnVmZmVyVmlldz4gaW1w
bCgpOwogICAgIHZvaWQgbmV1dGVyKCk7CkBAIC0xNzMsNiArMTc1LDggQEAgcHJpdmF0ZToKIAog
cHJvdGVjdGVkOgogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92
ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBC
YXNlOjpTdHJ1Y3R1cmVGbGFnczsKKyAgICAKKyAgICBBcnJheUJ1ZmZlciogZXhpc3RpbmdCdWZm
ZXJJbkJ1dHRlcmZseSgpOwogCiAgICAgdm9pZCogbV92ZWN0b3I7CiAgICAgdWludDMyX3QgbV9s
ZW5ndGg7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVy
Vmlld0lubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0FycmF5QnVmZmVyVmlld0lubGluZXMuaAkocmV2aXNpb24gMTU0NDczKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXdJbmxpbmVzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAgaW5saW5lIEFycmF5QnVmZmVyKiBKU0FycmF5QnVm
ZmVyVmlldzo6YgogewogICAgIHN3aXRjaCAobV9tb2RlKSB7CiAgICAgY2FzZSBXYXN0ZWZ1bFR5
cGVkQXJyYXk6Ci0gICAgICAgIHJldHVybiBidXR0ZXJmbHkoKS0+aW5kZXhpbmdIZWFkZXIoKS0+
YXJyYXlCdWZmZXIoKTsKKyAgICAgICAgcmV0dXJuIGV4aXN0aW5nQnVmZmVySW5CdXR0ZXJmbHko
KTsKICAgICBjYXNlIERhdGFWaWV3TW9kZToKICAgICAgICAgcmV0dXJuIGpzQ2FzdDxKU0RhdGFW
aWV3Kj4odGhpcyktPmJ1ZmZlcigpOwogICAgIGRlZmF1bHQ6CkBAIC00NCw2ICs0NCwxMiBAQCBp
bmxpbmUgQXJyYXlCdWZmZXIqIEpTQXJyYXlCdWZmZXJWaWV3OjpiCiAgICAgfQogfQogCitpbmxp
bmUgQXJyYXlCdWZmZXIqIEpTQXJyYXlCdWZmZXJWaWV3OjpleGlzdGluZ0J1ZmZlckluQnV0dGVy
Zmx5KCkKK3sKKyAgICBBU1NFUlQobV9tb2RlID09IFdhc3RlZnVsVHlwZWRBcnJheSk7CisgICAg
cmV0dXJuIGJ1dHRlcmZseSgpLT5pbmRleGluZ0hlYWRlcigpLT5hcnJheUJ1ZmZlcigpOworfQor
CiBpbmxpbmUgUGFzc1JlZlB0cjxBcnJheUJ1ZmZlclZpZXc+IEpTQXJyYXlCdWZmZXJWaWV3Ojpp
bXBsKCkKIHsKICAgICByZXR1cm4gbWV0aG9kVGFibGUoKS0+Z2V0VHlwZWRBcnJheUltcGwodGhp
cyk7CkBAIC01MSwxNCArNTcsMTQgQEAgaW5saW5lIFBhc3NSZWZQdHI8QXJyYXlCdWZmZXJWaWV3
PiBKU0FycgogCiBpbmxpbmUgdm9pZCBKU0FycmF5QnVmZmVyVmlldzo6bmV1dGVyKCkKIHsKLSAg
ICBBU1NFUlQoaGFzQXJyYXlCdWZmZXIobV9tb2RlKSk7CisgICAgQVNTRVJUKGhhc0FycmF5QnVm
ZmVyKCkpOwogICAgIG1fbGVuZ3RoID0gMDsKICAgICBtX3ZlY3RvciA9IDA7CiB9CiAKIGlubGlu
ZSB1bnNpZ25lZCBKU0FycmF5QnVmZmVyVmlldzo6Ynl0ZU9mZnNldCgpCiB7Ci0gICAgaWYgKCFo
YXNBcnJheUJ1ZmZlcihtX21vZGUpKQorICAgIGlmICghaGFzQXJyYXlCdWZmZXIoKSkKICAgICAg
ICAgcmV0dXJuIDA7CiAgICAgCiAgICAgcHRyZGlmZl90IGRlbHRhID0KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXcuaAkocmV2aXNpb24gMTU0NDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAtMjIwLDYgKzIyMCw4
IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgIH0KICAgICAKKyAgICBBcnJheUJ1ZmZlciogZXhp
c3RpbmdCdWZmZXIoKTsKKwogICAgIHN0YXRpYyBjb25zdCBUeXBlZEFycmF5VHlwZSBUeXBlZEFy
cmF5U3RvcmFnZVR5cGUgPSBBZGFwdG9yOjp0eXBlVmFsdWU7CiAgICAgCiBwcm90ZWN0ZWQ6Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmll
d0lubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAkocmV2aXNpb24gMTU0NDczKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTE1MSw4ICsxNTEsNDYgQEAgYm9vbCBKU0dlbmVyaWNUeXBl
ZEFycmF5VmlldzxBZGFwdG9yPjo6cwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAg
IAorICAgIC8vIDEpIElmIHRoZSB0d28gYXJyYXlzIGFyZSBub24tb3ZlcmxhcHBpbmcsIHdlIGNh
biBjb3B5IGluIGFueSBvcmRlciB3ZSBsaWtlCisgICAgLy8gICAgYW5kIHdlIGRvbid0IG5lZWQg
YW4gaW50ZXJtZWRpYXRlIGJ1ZmZlci4gQXJyYXlzIGFyZSBkZWZpbml0ZWx5CisgICAgLy8gICAg
bm9uLW92ZXJsYXBwaW5nIGlmIGVpdGhlciBvbmUgb2YgdGhlbSBoYXMgbm8gYmFja2luZyBidWZm
ZXIgKHRoYXQgbWVhbnMKKyAgICAvLyAgICB0aGF0IGl0ICpvd25zKiBpdHMgcGhpbG9zb3BoaWNh
bCBiYWNraW5nIGJ1ZmZlcikgb3IgaWYgdGhleSBoYXZlCisgICAgLy8gICAgZGlmZmVyZW50IGJh
Y2tpbmcgYnVmZmVycy4KKyAgICAvLyAyKSBJZiB0aGUgdHdvIGFycmF5cyBvdmVybGFwIGJ1dCBo
YXZlIHRoZSBzYW1lIGVsZW1lbnQgc2l6ZSwgd2UgY2FuIGRvIGEKKyAgICAvLyAgICBtZW1tb3Zl
LWxpa2UgY29weSB3aGVyZSB3ZSBmbGlwLWZsb3AgZGlyZWN0aW9uIGJhc2VkIG9uIHdoaWNoIHZl
Y3RvcgorICAgIC8vICAgIHN0YXJ0cyBiZWZvcmUgdGhlIG90aGVyOgorICAgIC8vICAgIEEpIElm
IHRoZSBkZXN0aW5hdGlvbiB2ZWN0b3IgaXMgYmVmb3JlIHRoZSBzb3VyY2UgdmVjdG9yLCB0aGVu
IGEgZm9yd2FyZAorICAgIC8vICAgICAgIGNvcHkgaXMgaW4gb3JkZXIuCisgICAgLy8gICAgQikg
SWYgdGhlIGRlc3RpbmF0aW9uIHZlY3RvciBpcyBhZnRlciB0aGUgc291cmNlIHZlY3RvciwgdGhl
biBhIGJhY2t3YXJkCisgICAgLy8gICAgICAgY29weSBpcyBpbiBvcmRlci4KKyAgICAvLyAzKSBJ
ZiB3ZSBoYXZlIGRpZmZlcmVudCBlbGVtZW50IHNpemVzIGFuZCB0aGVyZSBpcyBhIGNoYW5jZSBv
ZiBvdmVybGFwIHRoZW4KKyAgICAvLyAgICB3ZSBuZWVkIGFuIGludGVybWVkaWF0ZSB2ZWN0b3Iu
CisgICAgCisgICAgLy8gTkIuIENvbXBhcmlzb25zIGludm9sdmluZyBlbGVtZW50U2l6ZSB3aWxs
IGJlIGNvbnN0YW50LWZvbGRlZCBieSB0ZW1wbGF0ZQorICAgIC8vIHNwZWNpYWxpemF0aW9uLgor
ICAgIAorICAgIC8vIEhhbmRsZSBjYXNlcyAoMSkgYW5kICgyQikuCisgICAgaWYgKCFoYXNBcnJh
eUJ1ZmZlcigpIHx8ICFvdGhlci0+aGFzQXJyYXlCdWZmZXIoKQorICAgICAgICB8fCBleGlzdGlu
Z0J1ZmZlcigpICE9IG90aGVyLT5leGlzdGluZ0J1ZmZlcigpCisgICAgICAgIHx8IChlbGVtZW50
U2l6ZSA9PSBPdGhlclR5cGU6OmVsZW1lbnRTaXplICYmIHZlY3RvcigpID4gb3RoZXItPnZlY3Rv
cigpKSkgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBsZW5ndGg7IGktLTspCisgICAgICAg
ICAgICBzZXRJbmRleFF1aWNrbHkob2Zmc2V0ICsgaSwgb3RoZXItPmdldEluZGV4UXVpY2tseShp
KSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAKKyAgICAvLyBOb3cgd2UgZWl0
aGVyIGhhdmUgKDJBKSBvciAoMykgLSBzbyBmaXJzdCB3ZSB0cnkgdG8gY292ZXIgKDJBKS4KKyAg
ICBpZiAoZWxlbWVudFNpemUgPT0gT3RoZXJUeXBlOjplbGVtZW50U2l6ZSkgeworICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpCisgICAgICAgICAgICBzZXRJbmRl
eFF1aWNrbHkob2Zmc2V0ICsgaSwgb3RoZXItPmdldEluZGV4UXVpY2tseShpKSk7CisgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0KKyAgICAKKyAgICAvLyBGYWlsOiB3ZSBuZWVkIGFuIGludGVy
bWVkaWF0ZSB0cmFuc2ZlciBidWZmZXIgKGkuZS4gY2FzZSAoMykpLgorICAgIFZlY3Rvcjx0eXBl
bmFtZSBBZGFwdG9yOjpUeXBlLCAzMj4gdHJhbnNmZXJCdWZmZXIobGVuZ3RoKTsKICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSBsZW5ndGg7IGktLTspCi0gICAgICAgIHNldEluZGV4UXVpY2tseShvZmZz
ZXQgKyBpLCBvdGhlci0+Z2V0SW5kZXhRdWlja2x5KGkpKTsKKyAgICAgICAgdHJhbnNmZXJCdWZm
ZXJbaV0gPSBBZGFwdG9yOjp0b05hdGl2ZShvdGhlci0+Z2V0SW5kZXhRdWlja2x5KGkpKTsKKyAg
ICBmb3IgKHVuc2lnbmVkIGkgPSBsZW5ndGg7IGktLTspCisgICAgICAgIHNldEluZGV4UXVpY2ts
eVRvTmF0aXZlVmFsdWUob2Zmc2V0ICsgaSwgdHJhbnNmZXJCdWZmZXJbaV0pOwogICAgIAogICAg
IHJldHVybiB0cnVlOwogfQpAQCAtMTcwLDcgKzIwOCw3IEBAIGJvb2wgSlNHZW5lcmljVHlwZWRB
cnJheVZpZXc8QWRhcHRvcj46OnMKICAgICAgICAgaWYgKCF2YWxpZGF0ZVJhbmdlKGV4ZWMsIG9m
ZnNldCwgbGVuZ3RoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCi0gICAg
ICAgIG1lbWNweSh0eXBlZFZlY3RvcigpICsgb2Zmc2V0LCBvdGhlci0+dHlwZWRWZWN0b3IoKSwg
b3RoZXItPmJ5dGVMZW5ndGgoKSk7CisgICAgICAgIG1lbW1vdmUodHlwZWRWZWN0b3IoKSArIG9m
ZnNldCwgb3RoZXItPnR5cGVkVmVjdG9yKCksIG90aGVyLT5ieXRlTGVuZ3RoKCkpOwogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgCkBAIC0yMTAsNiArMjQ4LDEyIEBAIGJvb2wgSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnMKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUg
QWRhcHRvcj4KK0FycmF5QnVmZmVyKiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6
ZXhpc3RpbmdCdWZmZXIoKQoreworICAgIHJldHVybiBleGlzdGluZ0J1ZmZlckluQnV0dGVyZmx5
KCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBib29sIEpTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3PEFkYXB0b3I+OjpnZXRPd25Qcm9wZXJ0eVNsb3QoCiAgICAgSlNPYmplY3QqIG9i
amVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0
eVNsb3QmIHNsb3QpCiB7Cg==
</data>
<flag name="review"
          id="231443"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>209433</attachid>
            <date>2013-08-22 22:59:39 -0700</date>
            <delta_ts>2013-08-23 13:17:57 -0700</delta_ts>
            <desc>test for the case where we optimize with memmove</desc>
            <filename>test.js</filename>
            <type>application/x-javascript</type>
            <size>459</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">ZnVuY3Rpb24gZm9vKG4pIHsKICAgIHZhciBhcnJheSA9IG5ldyBJbnQzMkFycmF5KG4gKyAxKTsK
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgKytpKQogICAgICAgIGFycmF5W2ldID0gNDIgKyBp
OwogICAgYXJyYXkuc2V0KGFycmF5LnN1YmFycmF5KDAsIG4pLCAxKTsKICAgIHJldHVybiBhcnJh
eTsKfQoKZnVuY3Rpb24gYmFyKG4pIHsKICAgIHZhciBhcnJheSA9IG5ldyBJbnQzMkFycmF5KG4g
KyAxKTsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgKytpKQogICAgICAgIGFycmF5W2kgKyAx
XSA9IDQyICsgaTsKICAgIGFycmF5LnNldChhcnJheS5zdWJhcnJheSgxLCBuICsgMSksIDApOwog
ICAgcmV0dXJuIGFycmF5Owp9CgpwcmludChBcnJheS5wcm90b3R5cGUuam9pbi5jYWxsKGZvbygx
MCksICIsIikpOwpwcmludChBcnJheS5wcm90b3R5cGUuam9pbi5jYWxsKGJhcigxMCksICIsIikp
OwoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>209434</attachid>
            <date>2013-08-22 23:00:07 -0700</date>
            <delta_ts>2013-08-23 13:17:57 -0700</delta_ts>
            <desc>test for overlapping elements of the same size</desc>
            <filename>test2.js</filename>
            <type>application/x-javascript</type>
            <size>482</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">ZnVuY3Rpb24gZm9vKG4pIHsKICAgIHZhciBhcnJheSA9IG5ldyBJbnQzMkFycmF5KG4gKyAxKTsK
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgKytpKQogICAgICAgIGFycmF5W2ldID0gNDIgKyBp
OwogICAgYXJyYXkuc2V0KG5ldyBVaW50MzJBcnJheShhcnJheS5idWZmZXIsIDAsIG4pLCAxKTsK
ICAgIHJldHVybiBhcnJheTsKfQoKZnVuY3Rpb24gYmFyKG4pIHsKICAgIHZhciBhcnJheSA9IG5l
dyBJbnQzMkFycmF5KG4gKyAxKTsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgKytpKQogICAg
ICAgIGFycmF5W2kgKyAxXSA9IDQyICsgaTsKICAgIGFycmF5LnNldChuZXcgVWludDMyQXJyYXko
YXJyYXkuYnVmZmVyLCA0KSwgMCk7CiAgICByZXR1cm4gYXJyYXk7Cn0KCnByaW50KEFycmF5LnBy
b3RvdHlwZS5qb2luLmNhbGwoZm9vKDEwKSwgIiwiKSk7CnByaW50KEFycmF5LnByb3RvdHlwZS5q
b2luLmNhbGwoYmFyKDEwKSwgIiwiKSk7Cgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>209435</attachid>
            <date>2013-08-22 23:00:36 -0700</date>
            <delta_ts>2013-08-23 13:17:57 -0700</delta_ts>
            <desc>test where the source elements are smaller than the destination elements</desc>
            <filename>test3.js</filename>
            <type>application/x-javascript</type>
            <size>2711</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">ZnVuY3Rpb24gZm9vX3JlZmVyZW5jZShuKSB7CiAgICB2YXIgYXJyYXkgPSBuZXcgSW50MzJBcnJh
eShuICsgMSk7CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG47ICsraSkKICAgICAgICBhcnJheVtp
XSA9IDQyICsgaTsKICAgIHZhciBhcnJheTIgPSBuZXcgSW50MzJBcnJheShhcnJheSk7CiAgICBh
cnJheTIuc2V0KG5ldyBVaW50OEFycmF5KGFycmF5LmJ1ZmZlciwgMCwgbiksIDEpOwogICAgcmV0
dXJuIGFycmF5MjsKfQoKZnVuY3Rpb24gZm9vKG4pIHsKICAgIHZhciBhcnJheSA9IG5ldyBJbnQz
MkFycmF5KG4gKyAxKTsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgKytpKQogICAgICAgIGFy
cmF5W2ldID0gNDIgKyBpOwogICAgYXJyYXkuc2V0KG5ldyBVaW50OEFycmF5KGFycmF5LmJ1ZmZl
ciwgMCwgbiksIDEpOwogICAgcmV0dXJuIGFycmF5Owp9CgpmdW5jdGlvbiBiYXJfcmVmZXJlbmNl
KG4pIHsKICAgIHZhciBhcnJheSA9IG5ldyBJbnQzMkFycmF5KG4gKyAxKTsKICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgbjsgKytpKQogICAgICAgIGFycmF5W2kgKyAxXSA9IDQyICsgaTsKICAgIHZh
ciBhcnJheTIgPSBuZXcgSW50MzJBcnJheShhcnJheSk7CiAgICBhcnJheTIuc2V0KG5ldyBVaW50
OEFycmF5KGFycmF5LmJ1ZmZlciwgKG4gKyAxKSAqIDQgLSBuKSwgMCk7CiAgICByZXR1cm4gYXJy
YXkyOwp9CgpmdW5jdGlvbiBiYXIobikgewogICAgdmFyIGFycmF5ID0gbmV3IEludDMyQXJyYXko
biArIDEpOwogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuOyArK2kpCiAgICAgICAgYXJyYXlbaSAr
IDFdID0gNDIgKyBpOwogICAgYXJyYXkuc2V0KG5ldyBVaW50OEFycmF5KGFycmF5LmJ1ZmZlciwg
KG4gKyAxKSAqIDQgLSBuKSwgMCk7CiAgICByZXR1cm4gYXJyYXk7Cn0KCmZ1bmN0aW9uIGJhel9y
ZWZlcmVuY2UobikgewogICAgdmFyIGFycmF5ID0gbmV3IEludDMyQXJyYXkobik7CiAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IG47ICsraSkKICAgICAgICBhcnJheVtpXSA9IDQyICsgaTsKICAgIHZh
ciBhcnJheTIgPSBuZXcgSW50MzJBcnJheShhcnJheSk7CiAgICBhcnJheTIuc2V0KG5ldyBVaW50
OEFycmF5KGFycmF5LmJ1ZmZlciwgMCwgbikpOwogICAgcmV0dXJuIGFycmF5MjsKfQoKZnVuY3Rp
b24gYmF6KG4pIHsKICAgIHZhciBhcnJheSA9IG5ldyBJbnQzMkFycmF5KG4pOwogICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBuOyArK2kpCiAgICAgICAgYXJyYXlbaV0gPSA0MiArIGk7CiAgICBhcnJh
eS5zZXQobmV3IFVpbnQ4QXJyYXkoYXJyYXkuYnVmZmVyLCAwLCBuKSk7CiAgICByZXR1cm4gYXJy
YXk7Cn0KCmZ1bmN0aW9uIGZ1el9yZWZlcmVuY2UobikgewogICAgdmFyIGFycmF5ID0gbmV3IElu
dDMyQXJyYXkobik7CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG47ICsraSkKICAgICAgICBhcnJh
eVtpXSA9IDQyICsgaTsKICAgIHZhciBhcnJheTIgPSBuZXcgSW50MzJBcnJheShhcnJheSk7CiAg
ICBhcnJheTIuc2V0KG5ldyBVaW50OEFycmF5KGFycmF5LmJ1ZmZlciwgbiAqIDQgLSBuKSk7CiAg
ICByZXR1cm4gYXJyYXkyOwp9CgpmdW5jdGlvbiBmdXoobikgewogICAgdmFyIGFycmF5ID0gbmV3
IEludDMyQXJyYXkobik7CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG47ICsraSkKICAgICAgICBh
cnJheVtpXSA9IDQyICsgaTsKICAgIGFycmF5LnNldChuZXcgVWludDhBcnJheShhcnJheS5idWZm
ZXIsIG4gKiA0IC0gbikpOwogICAgcmV0dXJuIGFycmF5Owp9CgpmdW5jdGlvbiB0aGluZ3lfcmVm
ZXJlbmNlKG4pIHsKICAgIHZhciBhcnJheSA9IG5ldyBJbnQzMkFycmF5KG4pOwogICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBuOyArK2kpCiAgICAgICAgYXJyYXlbaV0gPSA0MiArIGk7CiAgICB2YXIg
YXJyYXkyID0gbmV3IEludDMyQXJyYXkoYXJyYXkpOwogICAgYXJyYXkyLnNldChuZXcgVWludDhB
cnJheShhcnJheS5idWZmZXIsIDQsIG4pKTsKICAgIHJldHVybiBhcnJheTI7Cn0KCmZ1bmN0aW9u
IHRoaW5neShuKSB7CiAgICB2YXIgYXJyYXkgPSBuZXcgSW50MzJBcnJheShuKTsKICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgbjsgKytpKQogICAgICAgIGFycmF5W2ldID0gNDIgKyBpOwogICAgYXJy
YXkuc2V0KG5ldyBVaW50OEFycmF5KGFycmF5LmJ1ZmZlciwgNCwgbikpOwogICAgcmV0dXJuIGFy
cmF5Owp9CgpwcmludChBcnJheS5wcm90b3R5cGUuam9pbi5jYWxsKGZvb19yZWZlcmVuY2UoMTAp
LCAiLCIpKTsKcHJpbnQoQXJyYXkucHJvdG90eXBlLmpvaW4uY2FsbChmb28oMTApLCAiLCIpKTsK
cHJpbnQoQXJyYXkucHJvdG90eXBlLmpvaW4uY2FsbChiYXJfcmVmZXJlbmNlKDEwKSwgIiwiKSk7
CnByaW50KEFycmF5LnByb3RvdHlwZS5qb2luLmNhbGwoYmFyKDEwKSwgIiwiKSk7CnByaW50KEFy
cmF5LnByb3RvdHlwZS5qb2luLmNhbGwoYmF6X3JlZmVyZW5jZSgxMCksICIsIikpOwpwcmludChB
cnJheS5wcm90b3R5cGUuam9pbi5jYWxsKGJheigxMCksICIsIikpOwpwcmludChBcnJheS5wcm90
b3R5cGUuam9pbi5jYWxsKGZ1el9yZWZlcmVuY2UoMTApLCAiLCIpKTsKcHJpbnQoQXJyYXkucHJv
dG90eXBlLmpvaW4uY2FsbChmdXooMTApLCAiLCIpKTsKcHJpbnQoQXJyYXkucHJvdG90eXBlLmpv
aW4uY2FsbCh0aGluZ3lfcmVmZXJlbmNlKDEwKSwgIiwiKSk7CnByaW50KEFycmF5LnByb3RvdHlw
ZS5qb2luLmNhbGwodGhpbmd5KDEwKSwgIiwiKSk7Cgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>209436</attachid>
            <date>2013-08-22 23:01:01 -0700</date>
            <delta_ts>2013-08-23 13:17:57 -0700</delta_ts>
            <desc>test where the destination elements are smaller than the source elements</desc>
            <filename>test4.js</filename>
            <type>application/x-javascript</type>
            <size>1599</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">ZnVuY3Rpb24gZm9vX3JlZmVyZW5jZShuKSB7CiAgICB2YXIgYXJyYXkgPSBuZXcgSW50OEFycmF5
KG4pOwogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuOyArK2kpCiAgICAgICAgYXJyYXlbaV0gPSA0
MiArIGk7CiAgICB2YXIgYXJyYXkyID0gbmV3IEludDhBcnJheShhcnJheSk7CiAgICBhcnJheTIu
c2V0KG5ldyBJbnQzMkFycmF5KGFycmF5LmJ1ZmZlcikpOwogICAgcmV0dXJuIGFycmF5MjsKfQoK
ZnVuY3Rpb24gZm9vKG4pIHsKICAgIHZhciBhcnJheSA9IG5ldyBJbnQ4QXJyYXkobik7CiAgICBm
b3IgKHZhciBpID0gMDsgaSA8IG47ICsraSkKICAgICAgICBhcnJheVtpXSA9IDQyICsgaTsKICAg
IGFycmF5LnNldChuZXcgSW50MzJBcnJheShhcnJheS5idWZmZXIpKTsKICAgIHJldHVybiBhcnJh
eTsKfQoKZnVuY3Rpb24gYmFyX3JlZmVyZW5jZShuKSB7CiAgICB2YXIgYXJyYXkgPSBuZXcgSW50
OEFycmF5KG4pOwogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuOyArK2kpCiAgICAgICAgYXJyYXlb
aV0gPSA0MiArIGk7CiAgICB2YXIgYXJyYXkyID0gbmV3IEludDhBcnJheShhcnJheSk7CiAgICBh
cnJheTIuc2V0KG5ldyBJbnQzMkFycmF5KGFycmF5LmJ1ZmZlciksIG4gLSBuIC8gNCk7CiAgICBy
ZXR1cm4gYXJyYXkyOwp9CgpmdW5jdGlvbiBiYXIobikgewogICAgdmFyIGFycmF5ID0gbmV3IElu
dDhBcnJheShuKTsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgKytpKQogICAgICAgIGFycmF5
W2ldID0gNDIgKyBpOwogICAgYXJyYXkuc2V0KG5ldyBJbnQzMkFycmF5KGFycmF5LmJ1ZmZlciks
IG4gLSBuIC8gNCk7CiAgICByZXR1cm4gYXJyYXk7Cn0KCmZ1bmN0aW9uIGJhel9yZWZlcmVuY2Uo
bikgewogICAgdmFyIGFycmF5ID0gbmV3IEludDhBcnJheShuKTsKICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgbjsgKytpKQogICAgICAgIGFycmF5W2ldID0gNDIgKyBpOwogICAgdmFyIGFycmF5MiA9
IG5ldyBJbnQ4QXJyYXkoYXJyYXkpOwogICAgYXJyYXkyLnNldChuZXcgSW50MzJBcnJheShhcnJh
eS5idWZmZXIpLCBuIC8gMiAtIChuIC8gNCkgLyAyKTsKICAgIHJldHVybiBhcnJheTI7Cn0KCmZ1
bmN0aW9uIGJheihuKSB7CiAgICB2YXIgYXJyYXkgPSBuZXcgSW50OEFycmF5KG4pOwogICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBuOyArK2kpCiAgICAgICAgYXJyYXlbaV0gPSA0MiArIGk7CiAgICBh
cnJheS5zZXQobmV3IEludDMyQXJyYXkoYXJyYXkuYnVmZmVyKSwgbiAvIDIgLSAobiAvIDQpIC8g
Mik7CiAgICByZXR1cm4gYXJyYXk7Cn0KCnByaW50KEFycmF5LnByb3RvdHlwZS5qb2luLmNhbGwo
Zm9vX3JlZmVyZW5jZSg2NCksICIsIikpOwpwcmludChBcnJheS5wcm90b3R5cGUuam9pbi5jYWxs
KGZvbyg2NCksICIsIikpOwpwcmludChBcnJheS5wcm90b3R5cGUuam9pbi5jYWxsKGJhcl9yZWZl
cmVuY2UoNjQpLCAiLCIpKTsKcHJpbnQoQXJyYXkucHJvdG90eXBlLmpvaW4uY2FsbChiYXIoNjQp
LCAiLCIpKTsKcHJpbnQoQXJyYXkucHJvdG90eXBlLmpvaW4uY2FsbChiYXpfcmVmZXJlbmNlKDY0
KSwgIiwiKSk7CnByaW50KEFycmF5LnByb3RvdHlwZS5qb2luLmNhbGwoYmF6KDY0KSwgIiwiKSk7
CgoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>209501</attachid>
            <date>2013-08-23 13:17:57 -0700</date>
            <delta_ts>2013-08-23 13:35:26 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>28811</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU0NTA5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBA
CisyMDEzLTA4LTIzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
SW5jb3JyZWN0IFR5cGVkQXJyYXkjc2V0IGJlaGF2aW9yCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MzgxOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgVGhpcyB3YXMgc28gbXVjaCBmdW4hIHR5
cGVkQXJyYXkuc2V0KCkgaXMgbGlrZSBhIG1lbW1vdmUgb24gc3Rlcm9pZHMsIGFuZCBJJ20KKyAg
ICAgICAgbm90IHNtYXJ0IGVub3VnaCB0byBmaWd1cmUgb3V0IG9wdGltYWwgdmVyc2lvbnMgZm9y
ICphbGwqIG9mIHRoZSBjYXNlcy4gQnV0IEkKKyAgICAgICAgZGlkIGNvbWUgdXAgd2l0aCBvcHRp
bWFsIGltcGxlbWVudGF0aW9ucyBmb3IgbW9zdCBvZiB0aGUgY2FzZXMsIGFuZCBJIHdyb3RlCisg
ICAgICAgIHNwZWMtbGl0ZXJhbCBjb2RlIChpLmUuIGNvcHkgdmlhIGEgdHJhbnNmZXIgYnVmZmVy
KSBmb3IgdGhlIGNhc2VzIEknbSBub3Qgc21hcnQKKyAgICAgICAgZW5vdWdoIHRvIHdyaXRlIG9w
dGltYWwgY29kZSBmb3IuCisKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3Lmg6
CisgICAgICAgIChKU0M6OkpTQXJyYXlCdWZmZXJWaWV3OjpoYXNBcnJheUJ1ZmZlcik6CisgICAg
ICAgICogcnVudGltZS9KU0FycmF5QnVmZmVyVmlld0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6
SlNBcnJheUJ1ZmZlclZpZXc6OmJ1ZmZlcik6CisgICAgICAgIChKU0M6OkpTQXJyYXlCdWZmZXJW
aWV3OjpleGlzdGluZ0J1ZmZlckluQnV0dGVyZmx5KToKKyAgICAgICAgKEpTQzo6SlNBcnJheUJ1
ZmZlclZpZXc6Om5ldXRlcik6CisgICAgICAgIChKU0M6OkpTQXJyYXlCdWZmZXJWaWV3OjpieXRl
T2Zmc2V0KToKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Lmg6Cisg
ICAgICAgICogcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaDoKKyAgICAg
ICAgKEpTQzo6OjpzZXRXaXRoU3BlY2lmaWNUeXBlKToKKyAgICAgICAgKEpTQzo6OjpzZXQpOgor
ICAgICAgICAoSlNDOjo6OmV4aXN0aW5nQnVmZmVyKToKKwogMjAxMy0wOC0yMiAgRmlsaXAgUGl6
bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIGJ1aWxkLWpzYyAtLWZ0bC1qaXQgc2hv
dWxkIHdvcmsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZm
ZXJWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNB
cnJheUJ1ZmZlclZpZXcuaAkocmV2aXNpb24gMTU0NTA4KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAtMTU0LDYg
KzE1NCw4IEBAIHByb3RlY3RlZDoKICAgICAKIHB1YmxpYzoKICAgICBUeXBlZEFycmF5TW9kZSBt
b2RlKCkgY29uc3QgeyByZXR1cm4gbV9tb2RlOyB9CisgICAgYm9vbCBoYXNBcnJheUJ1ZmZlcigp
IGNvbnN0IHsgcmV0dXJuIEpTQzo6aGFzQXJyYXlCdWZmZXIobW9kZSgpKTsgfQorICAgIAogICAg
IEFycmF5QnVmZmVyKiBidWZmZXIoKTsKICAgICBQYXNzUmVmUHRyPEFycmF5QnVmZmVyVmlldz4g
aW1wbCgpOwogICAgIHZvaWQgbmV1dGVyKCk7CkBAIC0xNzMsNiArMTc1LDggQEAgcHJpdmF0ZToK
IAogcHJvdGVjdGVkOgogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9
IE92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Qg
fCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKKyAgICAKKyAgICBBcnJheUJ1ZmZlciogZXhpc3RpbmdC
dWZmZXJJbkJ1dHRlcmZseSgpOwogCiAgICAgdm9pZCogbV92ZWN0b3I7CiAgICAgdWludDMyX3Qg
bV9sZW5ndGg7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVm
ZmVyVmlld0lubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0FycmF5QnVmZmVyVmlld0lubGluZXMuaAkocmV2aXNpb24gMTU0NTA4KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXdJbmxpbmVzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAgaW5saW5lIEFycmF5QnVmZmVyKiBKU0FycmF5
QnVmZmVyVmlldzo6YgogewogICAgIHN3aXRjaCAobV9tb2RlKSB7CiAgICAgY2FzZSBXYXN0ZWZ1
bFR5cGVkQXJyYXk6Ci0gICAgICAgIHJldHVybiBidXR0ZXJmbHkoKS0+aW5kZXhpbmdIZWFkZXIo
KS0+YXJyYXlCdWZmZXIoKTsKKyAgICAgICAgcmV0dXJuIGV4aXN0aW5nQnVmZmVySW5CdXR0ZXJm
bHkoKTsKICAgICBjYXNlIERhdGFWaWV3TW9kZToKICAgICAgICAgcmV0dXJuIGpzQ2FzdDxKU0Rh
dGFWaWV3Kj4odGhpcyktPmJ1ZmZlcigpOwogICAgIGRlZmF1bHQ6CkBAIC00NCw2ICs0NCwxMiBA
QCBpbmxpbmUgQXJyYXlCdWZmZXIqIEpTQXJyYXlCdWZmZXJWaWV3OjpiCiAgICAgfQogfQogCitp
bmxpbmUgQXJyYXlCdWZmZXIqIEpTQXJyYXlCdWZmZXJWaWV3OjpleGlzdGluZ0J1ZmZlckluQnV0
dGVyZmx5KCkKK3sKKyAgICBBU1NFUlQobV9tb2RlID09IFdhc3RlZnVsVHlwZWRBcnJheSk7Cisg
ICAgcmV0dXJuIGJ1dHRlcmZseSgpLT5pbmRleGluZ0hlYWRlcigpLT5hcnJheUJ1ZmZlcigpOwor
fQorCiBpbmxpbmUgUGFzc1JlZlB0cjxBcnJheUJ1ZmZlclZpZXc+IEpTQXJyYXlCdWZmZXJWaWV3
OjppbXBsKCkKIHsKICAgICByZXR1cm4gbWV0aG9kVGFibGUoKS0+Z2V0VHlwZWRBcnJheUltcGwo
dGhpcyk7CkBAIC01MSwxNCArNTcsMTQgQEAgaW5saW5lIFBhc3NSZWZQdHI8QXJyYXlCdWZmZXJW
aWV3PiBKU0FycgogCiBpbmxpbmUgdm9pZCBKU0FycmF5QnVmZmVyVmlldzo6bmV1dGVyKCkKIHsK
LSAgICBBU1NFUlQoaGFzQXJyYXlCdWZmZXIobV9tb2RlKSk7CisgICAgQVNTRVJUKGhhc0FycmF5
QnVmZmVyKCkpOwogICAgIG1fbGVuZ3RoID0gMDsKICAgICBtX3ZlY3RvciA9IDA7CiB9CiAKIGlu
bGluZSB1bnNpZ25lZCBKU0FycmF5QnVmZmVyVmlldzo6Ynl0ZU9mZnNldCgpCiB7Ci0gICAgaWYg
KCFoYXNBcnJheUJ1ZmZlcihtX21vZGUpKQorICAgIGlmICghaGFzQXJyYXlCdWZmZXIoKSkKICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgCiAgICAgcHRyZGlmZl90IGRlbHRhID0KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXcuaAkocmV2aXNpb24gMTU0NTA4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAtMTczLDEwICsx
NzMsNiBAQCBwdWJsaWM6CiAgICAgLy8gYXBwcm9wcmlhdGUgZXhjZXB0aW9uLgogICAgIGJvb2wg
dmFsaWRhdGVSYW5nZShFeGVjU3RhdGUqLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0
aCk7CiAgICAgCi0gICAgLy8gUmV0dXJucyB0cnVlIGlmIHN1Y2Nlc3NmdWwsIGFuZCBmYWxzZSBv
biBlcnJvcjsgaXQgd2lsbCB0aHJvdyBvbiBlcnJvci4KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBP
dGhlclR5cGU+Ci0gICAgYm9vbCBzZXRXaXRoU3BlY2lmaWNUeXBlKEV4ZWNTdGF0ZSosIE90aGVy
VHlwZSosIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICAKICAgICAvLyBS
ZXR1cm5zIHRydWUgaWYgc3VjY2Vzc2Z1bCwgYW5kIGZhbHNlIG9uIGVycm9yOyBpZiBpdCByZXR1
cm5zIGZhbHNlCiAgICAgLy8gdGhlbiBpdCB3aWxsIGhhdmUgdGhyb3duIGFuIGV4Y2VwdGlvbi4K
ICAgICBib29sIHNldChFeGVjU3RhdGUqLCBKU09iamVjdCosIHVuc2lnbmVkIG9mZnNldCwgdW5z
aWduZWQgbGVuZ3RoKTsKQEAgLTIyMCw2ICsyMTYsOCBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAg
ICB9CiAgICAgCisgICAgQXJyYXlCdWZmZXIqIGV4aXN0aW5nQnVmZmVyKCk7CisKICAgICBzdGF0
aWMgY29uc3QgVHlwZWRBcnJheVR5cGUgVHlwZWRBcnJheVN0b3JhZ2VUeXBlID0gQWRhcHRvcjo6
dHlwZVZhbHVlOwogICAgIAogcHJvdGVjdGVkOgpAQCAtMjQ2LDYgKzI0NCwxMSBAQCBwcm90ZWN0
ZWQ6CiAgICAgLy8gbmVjZXNzYXJ5LiBOb3RlIHRoYXQgdGhpcyBuZXZlciBhbGxvY2F0ZXMgaW4g
dGhlIEdDIGhlYXAuCiAgICAgc3RhdGljIEFycmF5QnVmZmVyKiBzbG93RG93bkFuZFdhc3RlTWVt
b3J5KEpTQXJyYXlCdWZmZXJWaWV3Kik7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8QXJyYXlCdWZm
ZXJWaWV3PiBnZXRUeXBlZEFycmF5SW1wbChKU0FycmF5QnVmZmVyVmlldyopOworCitwcml2YXRl
OgorICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBzdWNjZXNzZnVsLCBhbmQgZmFsc2Ugb24gZXJyb3I7
IGl0IHdpbGwgdGhyb3cgb24gZXJyb3IuCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3RoZXJUeXBl
PgorICAgIGJvb2wgc2V0V2l0aFNwZWNpZmljVHlwZShFeGVjU3RhdGUqLCBPdGhlclR5cGUqLCB1
bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBBZGFwdG9yPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgJKHJldmlzaW9uIDE1
NDUwOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3SW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTEsOCArMTUxLDUxIEBAIGJvb2wg
SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnMKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KICAgICAKKyAgICAvLyBUaGlzIG1ldGhvZCBkb2Vzbid0IHN1cHBvcnQgY29weWlu
ZyBiZXR3ZWVuIHRoZSBzYW1lIGFycmF5LiBOb3RlIHRoYXQKKyAgICAvLyBzZXQoKSB3aWxsIG9u
bHkgY2FsbCB0aGlzIGlmIHRoZSB0eXBlcyBkaWZmZXIsIHdoaWNoIGltcGxpY2l0bHkgZ3VhcmFu
dGVlcworICAgIC8vIHRoYXQgd2UgY2FuJ3QgYmUgdGhlIHNhbWUgYXJyYXkuCisgICAgQVNTRVJU
KHN0YXRpY19jYXN0PEpTQ2VsbCo+KHRoaXMpICE9IHN0YXRpY19jYXN0PEpTQ2VsbCo+KG90aGVy
KSk7CisgICAgCisgICAgLy8gMSkgSWYgdGhlIHR3byBhcnJheXMgYXJlIG5vbi1vdmVybGFwcGlu
Zywgd2UgY2FuIGNvcHkgaW4gYW55IG9yZGVyIHdlIGxpa2UKKyAgICAvLyAgICBhbmQgd2UgZG9u
J3QgbmVlZCBhbiBpbnRlcm1lZGlhdGUgYnVmZmVyLiBBcnJheXMgYXJlIGRlZmluaXRlbHkKKyAg
ICAvLyAgICBub24tb3ZlcmxhcHBpbmcgaWYgZWl0aGVyIG9uZSBvZiB0aGVtIGhhcyBubyBiYWNr
aW5nIGJ1ZmZlciAodGhhdCBtZWFucworICAgIC8vICAgIHRoYXQgaXQgKm93bnMqIGl0cyBwaGls
b3NvcGhpY2FsIGJhY2tpbmcgYnVmZmVyKSBvciBpZiB0aGV5IGhhdmUKKyAgICAvLyAgICBkaWZm
ZXJlbnQgYmFja2luZyBidWZmZXJzLgorICAgIC8vIDIpIElmIHRoZSB0d28gYXJyYXlzIG92ZXJs
YXAgYnV0IGhhdmUgdGhlIHNhbWUgZWxlbWVudCBzaXplLCB3ZSBjYW4gZG8gYQorICAgIC8vICAg
IG1lbW1vdmUtbGlrZSBjb3B5IHdoZXJlIHdlIGZsaXAtZmxvcCBkaXJlY3Rpb24gYmFzZWQgb24g
d2hpY2ggdmVjdG9yCisgICAgLy8gICAgc3RhcnRzIGJlZm9yZSB0aGUgb3RoZXI6CisgICAgLy8g
ICAgQSkgSWYgdGhlIGRlc3RpbmF0aW9uIHZlY3RvciBpcyBiZWZvcmUgdGhlIHNvdXJjZSB2ZWN0
b3IsIHRoZW4gYSBmb3J3YXJkCisgICAgLy8gICAgICAgY29weSBpcyBpbiBvcmRlci4KKyAgICAv
LyAgICBCKSBJZiB0aGUgZGVzdGluYXRpb24gdmVjdG9yIGlzIGFmdGVyIHRoZSBzb3VyY2UgdmVj
dG9yLCB0aGVuIGEgYmFja3dhcmQKKyAgICAvLyAgICAgICBjb3B5IGlzIGluIG9yZGVyLgorICAg
IC8vIDMpIElmIHdlIGhhdmUgZGlmZmVyZW50IGVsZW1lbnQgc2l6ZXMgYW5kIHRoZXJlIGlzIGEg
Y2hhbmNlIG9mIG92ZXJsYXAgdGhlbgorICAgIC8vICAgIHdlIG5lZWQgYW4gaW50ZXJtZWRpYXRl
IHZlY3Rvci4KKyAgICAKKyAgICAvLyBOQi4gQ29tcGFyaXNvbnMgaW52b2x2aW5nIGVsZW1lbnRT
aXplIHdpbGwgYmUgY29uc3RhbnQtZm9sZGVkIGJ5IHRlbXBsYXRlCisgICAgLy8gc3BlY2lhbGl6
YXRpb24uCisgICAgCisgICAgLy8gSGFuZGxlIGNhc2VzICgxKSBhbmQgKDJCKS4KKyAgICBpZiAo
IWhhc0FycmF5QnVmZmVyKCkgfHwgIW90aGVyLT5oYXNBcnJheUJ1ZmZlcigpCisgICAgICAgIHx8
IGV4aXN0aW5nQnVmZmVyKCkgIT0gb3RoZXItPmV4aXN0aW5nQnVmZmVyKCkKKyAgICAgICAgfHwg
KGVsZW1lbnRTaXplID09IE90aGVyVHlwZTo6ZWxlbWVudFNpemUgJiYgdmVjdG9yKCkgPiBvdGhl
ci0+dmVjdG9yKCkpKSB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGxlbmd0aDsgaS0tOykK
KyAgICAgICAgICAgIHNldEluZGV4UXVpY2tseShvZmZzZXQgKyBpLCBvdGhlci0+Z2V0SW5kZXhR
dWlja2x5KGkpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIAorICAgIC8vIE5v
dyB3ZSBlaXRoZXIgaGF2ZSAoMkEpIG9yICgzKSAtIHNvIGZpcnN0IHdlIHRyeSB0byBjb3ZlciAo
MkEpLgorICAgIGlmIChlbGVtZW50U2l6ZSA9PSBPdGhlclR5cGU6OmVsZW1lbnRTaXplKSB7Cisg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkKKyAgICAgICAgICAg
IHNldEluZGV4UXVpY2tseShvZmZzZXQgKyBpLCBvdGhlci0+Z2V0SW5kZXhRdWlja2x5KGkpKTsK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIAorICAgIC8vIEZhaWw6IHdlIG5lZWQg
YW4gaW50ZXJtZWRpYXRlIHRyYW5zZmVyIGJ1ZmZlciAoaS5lLiBjYXNlICgzKSkuCisgICAgVmVj
dG9yPHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUsIDMyPiB0cmFuc2ZlckJ1ZmZlcihsZW5ndGgpOwog
ICAgIGZvciAodW5zaWduZWQgaSA9IGxlbmd0aDsgaS0tOykKLSAgICAgICAgc2V0SW5kZXhRdWlj
a2x5KG9mZnNldCArIGksIG90aGVyLT5nZXRJbmRleFF1aWNrbHkoaSkpOworICAgICAgICB0cmFu
c2ZlckJ1ZmZlcltpXSA9IEFkYXB0b3I6OnRvTmF0aXZlKG90aGVyLT5nZXRJbmRleFF1aWNrbHko
aSkpOworICAgIGZvciAodW5zaWduZWQgaSA9IGxlbmd0aDsgaS0tOykKKyAgICAgICAgc2V0SW5k
ZXhRdWlja2x5VG9OYXRpdmVWYWx1ZShvZmZzZXQgKyBpLCB0cmFuc2ZlckJ1ZmZlcltpXSk7CiAg
ICAgCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0xNzAsNyArMjEzLDcgQEAgYm9vbCBKU0dlbmVy
aWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6cwogICAgICAgICBpZiAoIXZhbGlkYXRlUmFuZ2Uo
ZXhlYywgb2Zmc2V0LCBsZW5ndGgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICAKLSAgICAgICAgbWVtY3B5KHR5cGVkVmVjdG9yKCkgKyBvZmZzZXQsIG90aGVyLT50eXBlZFZl
Y3RvcigpLCBvdGhlci0+Ynl0ZUxlbmd0aCgpKTsKKyAgICAgICAgbWVtbW92ZSh0eXBlZFZlY3Rv
cigpICsgb2Zmc2V0LCBvdGhlci0+dHlwZWRWZWN0b3IoKSwgb3RoZXItPmJ5dGVMZW5ndGgoKSk7
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICAKQEAgLTIxMCw2ICsyNTMsMTIgQEAg
Ym9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6cwogfQogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBBZGFwdG9yPgorQXJyYXlCdWZmZXIqIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFk
YXB0b3I+OjpleGlzdGluZ0J1ZmZlcigpCit7CisgICAgcmV0dXJuIGV4aXN0aW5nQnVmZmVySW5C
dXR0ZXJmbHkoKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIGJvb2wgSlNHZW5l
cmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmdldE93blByb3BlcnR5U2xvdCgKICAgICBKU09i
amVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NDUxMykKKysrIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQzIEBACisyMDEz
LTA4LTIzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAgSW5jb3Jy
ZWN0IFR5cGVkQXJyYXkjc2V0IGJlaGF2aW9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD04MzgxOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorICAgICAgICAKKyAgICAgICAgTWFkZSBpdCBwb3NzaWJsZSBmb3Igc2hvdWxkQmUo
KSB0byBjb21wYXJlIHR5cGVkIGFycmF5cyB0byBlYWNoIG90aGVyIGFuZCB0byBhbnkgYXJyYXkt
bGlrZQorICAgICAgICBvYmplY3QuCisgICAgICAgIAorICAgICAgICBBZGRlZCBhIGJ1bmNoIG9m
IHRlc3RzIGZvciBkaWZmZXJlbnQga2luZHMgb2Ygb3ZlcmxhcHBpbmcgdHlwZWRBcnJheS5zZXQo
KSdzLgorICAgICAgICAKKyAgICAgICAgRm9yIHNhbml0eSwgYWxzbyBhZGRlZCB0aGUgcmVkdWNl
ZCB0ZXN0IGNhc2UgZnJvbSB0aGUgYnVnLiBJbnRlcmVzdGluZ2x5LCB0aG91Z2gsIHRoYXQgdGVz
dAorICAgICAgICBjYXNlIGFscmVhZHkgcGFzc2VkIG9uIHRydW5rIC0gcHJvYmFibHkgYnkgbHVj
ayAod2UgaGFkIGluY2lkZW50YWxseSBjaGFuZ2VkIHRoZSBkZWZhdWx0CisgICAgICAgIGNvcHkg
ZGlyZWN0aW9uIGZyb20gb25lIHRoYXQgaGFwcGVuZWQgdG8gbm90IHdvcmsgdG8gb25lIHRoYXQg
aGFwcGVuZWQgdG8gYmUgZmluZSwgYnV0IG9ubHkKKyAgICAgICAgZm9yIHRoaXMgdGVzdCkuCisK
KyAgICAgICAgKiBmYXN0L2pzL2pzYy10ZXN0LWxpc3Q6CisgICAgICAgICogZmFzdC9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanM6CisgICAgICAgIChpc1R5cGVkQXJyYXkpOgorICAgICAgICAo
aXNSZXN1bHRDb3JyZWN0KToKKyAgICAgICAgKHN0cmluZ2lmeSk6CisgICAgICAgIChzaG91bGRC
ZSk6CisgICAgICAgICogZmFzdC9qcy9zY3JpcHQtdGVzdHMvdHlwZWQtYXJyYXktY29weS5qczog
QWRkZWQuCisgICAgICAgICogZmFzdC9qcy9zY3JpcHQtdGVzdHMvdHlwZWRhcnJheS1zZXQtZGVz
dGluYXRpb24tc21hbGxlci10aGFuLXNvdXJjZS5qczogQWRkZWQuCisgICAgICAgICogZmFzdC9q
cy9zY3JpcHQtdGVzdHMvdHlwZWRhcnJheS1zZXQtb3ZlcmxhcHBpbmctZWxlbWVudHMtb2Ytc2Ft
ZS1zaXplLmpzOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL3NjcmlwdC10ZXN0cy90eXBlZGFy
cmF5LXNldC1zYW1lLXR5cGUtbWVtbW92ZS5qczogQWRkZWQuCisgICAgICAgIChhcnJheXNFcXVh
bCk6CisgICAgICAgICogZmFzdC9qcy9zY3JpcHQtdGVzdHMvdHlwZWRhcnJheS1zZXQtc291cmNl
LXNtYWxsZXItdGhhbi1kZXN0aW5hdGlvbi5qczogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy90
eXBlZC1hcnJheS1jb3B5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy90
eXBlZC1hcnJheS1jb3B5Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvdHlwZWRhcnJh
eS1zZXQtZGVzdGluYXRpb24tc21hbGxlci10aGFuLXNvdXJjZS1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvanMvdHlwZWRhcnJheS1zZXQtZGVzdGluYXRpb24tc21hbGxlci10
aGFuLXNvdXJjZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL3R5cGVkYXJyYXktc2V0
LW92ZXJsYXBwaW5nLWVsZW1lbnRzLW9mLXNhbWUtc2l6ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvanMvdHlwZWRhcnJheS1zZXQtb3ZlcmxhcHBpbmctZWxlbWVudHMtb2Yt
c2FtZS1zaXplLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvdHlwZWRhcnJheS1zZXQt
c2FtZS10eXBlLW1lbW1vdmUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pz
L3R5cGVkYXJyYXktc2V0LXNhbWUtdHlwZS1tZW1tb3ZlLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvanMvdHlwZWRhcnJheS1zZXQtc291cmNlLXNtYWxsZXItdGhhbi1kZXN0aW5hdGlvbi1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvdHlwZWRhcnJheS1zZXQtc291
cmNlLXNtYWxsZXItdGhhbi1kZXN0aW5hdGlvbi5odG1sOiBBZGRlZC4KKwogMjAxMy0wOC0yMyAg
QWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBodHRwL3Rlc3Rz
L2NhY2hlL3BhcnRpdGlvbmVkLWNhY2hlLmh0bWwgYnJlYWtzIHN1YnNlcXVlbnQgY29va2llIHRl
c3RzCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL2pzYy10ZXN0LWxpc3QKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9qc2MtdGVzdC1saXN0CShyZXZpc2lvbiAxNTQ1MDgpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2pzL2pzYy10ZXN0LWxpc3QJKHdvcmtpbmcgY29weSkKQEAgLTQz
Nyw2ICs0MzcsMTEgQEAgZmFzdC9qcy90b1N0cmluZy1wcmVmaXgtcG9zdGZpeC1wcmVzZXJ2ZQog
ZmFzdC9qcy90b1N0cmluZy1yZWN1cnNpb24KIGZhc3QvanMvdHJ5LWNhdGNoLXRyeS10cnktY2F0
Y2gtdHJ5LWZpbmFsbHktcmV0dXJuLWNhdGNoLWZpbmFsbHkKIGZhc3QvanMvdHJ5LXRyeS1yZXR1
cm4tZmluYWxseS1maW5hbGx5CitmYXN0L2pzL3R5cGVkLWFycmF5LWNvcHkKK2Zhc3QvanMvdHlw
ZWRhcnJheS1zZXQtZGVzdGluYXRpb24tc21hbGxlci10aGFuLXNvdXJjZQorZmFzdC9qcy90eXBl
ZGFycmF5LXNldC1vdmVybGFwcGluZy1lbGVtZW50cy1vZi1zYW1lLXNpemUKK2Zhc3QvanMvdHlw
ZWRhcnJheS1zZXQtc2FtZS10eXBlLW1lbW1vdmUKK2Zhc3QvanMvdHlwZWRhcnJheS1zZXQtc291
cmNlLXNtYWxsZXItdGhhbi1kZXN0aW5hdGlvbgogZmFzdC9qcy90eXBlb2YtY29kZWdlbi1jcmFz
aAogZmFzdC9qcy90eXBlb2YtY29uc3RhbnQtc3RyaW5nCiBmYXN0L2pzL3VuZXhwZWN0ZWQtY29u
c3RhbnQtY3Jhc2gKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvdHlwZWQtYXJyYXktY29weS1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy90eXBlZC1hcnJh
eS1jb3B5LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMv
dHlwZWQtYXJyYXktY29weS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTIg
QEAKK1JlZHVjZWQgdGVzdCBjYXNlIGZvciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9ODM4MTgKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgYVsw
XSBpcyAweDA1MDUKK1BBU1MgYVswXSBpcyAweDAwMDUKK1BBU1MgYVsxXSBpcyAweDAwMDUKK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2pzL3R5cGVkLWFycmF5LWNvcHkuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2pzL3R5cGVkLWFycmF5LWNvcHkuaHRtbAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2Zhc3QvanMvdHlwZWQtYXJyYXktY29weS5odG1sCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDEwIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1M
Ly9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVz
dHMvdHlwZWQtYXJyYXktY29weS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2pzL3R5cGVkYXJyYXktc2V0LWRlc3RpbmF0aW9uLXNtYWxsZXItdGhhbi1z
b3VyY2UtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvdHlw
ZWRhcnJheS1zZXQtZGVzdGluYXRpb24tc21hbGxlci10aGFuLXNvdXJjZS1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL3R5cGVkYXJyYXktc2V0LWRlc3Rp
bmF0aW9uLXNtYWxsZXItdGhhbi1zb3VyY2UtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDEyIEBACitUZXN0cyB0aGUgY29kZSBwYXRoIGluIHR5cGVkQXJyYXkuc2V0IHRoYXQg
bWF5IGhhdmUgdG8gZG8gYSBjb3B5IHZpYSBhbiBpbnRlcm1lZGlhdGUgYnVmZmVyIGJlY2F1c2Ug
dGhlIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gb3ZlcmxhcCBhbmQgaGF2ZSBkaWZmZXJlbnQgc2l6
ZSBlbGVtZW50cyAoc291cmNlIGlzIGxhcmdlciB0aGFuIGRlc3RpbmF0aW9uKS4KKworT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgZm9vKDY0KSBpcyBmb29fcmVmZXJlbmNlKDY0
KQorUEFTUyBiYXIoNjQpIGlzIGJhcl9yZWZlcmVuY2UoNjQpCitQQVNTIGJheig2NCkgaXMgYmF6
X3JlZmVyZW5jZSg2NCkKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL3R5cGVkYXJyYXktc2V0LWRlc3Rp
bmF0aW9uLXNtYWxsZXItdGhhbi1zb3VyY2UuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2pzL3R5cGVkYXJyYXktc2V0LWRlc3RpbmF0aW9uLXNtYWxsZXItdGhhbi1zb3VyY2Uu
aHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvdHlwZWRhcnJheS1zZXQt
ZGVzdGluYXRpb24tc21hbGxlci10aGFuLXNvdXJjZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDEwIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+
Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvdHlw
ZWRhcnJheS1zZXQtZGVzdGluYXRpb24tc21hbGxlci10aGFuLXNvdXJjZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL3R5cGVkYXJyYXktc2V0LW92
ZXJsYXBwaW5nLWVsZW1lbnRzLW9mLXNhbWUtc2l6ZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9qcy90eXBlZGFycmF5LXNldC1vdmVybGFwcGluZy1lbGVtZW50
cy1vZi1zYW1lLXNpemUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9qcy90eXBlZGFycmF5LXNldC1vdmVybGFwcGluZy1lbGVtZW50cy1vZi1zYW1lLXNpemUt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDExIEBACitUZXN0cyB0aGUgY29k
ZSBwYXRoIG9mIHR5cGVkQXJyYXkuc2V0IHRoYXQgdHJpZXMgdG8gZG8gYSBtZW1tb3ZlLXdpdGgt
Y29udmVyc2lvbiBmb3Igb3ZlcmxhcHBpbmcgYXJyYXlzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCisKKworUEFTUyBmb28oMTApIGlzIFs0Miw0Miw0Miw0Miw0Miw0Miw0Miw0Miw0Miw0
Miw0Ml0KK1BBU1MgYmFyKDEwKSBpcyBbNDIsNDMsNDQsNDUsNDYsNDcsNDgsNDksNTAsNTEsNTFd
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9qcy90eXBlZGFycmF5LXNldC1vdmVybGFwcGluZy1lbGVtZW50
cy1vZi1zYW1lLXNpemUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL3R5
cGVkYXJyYXktc2V0LW92ZXJsYXBwaW5nLWVsZW1lbnRzLW9mLXNhbWUtc2l6ZS5odG1sCShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy90eXBlZGFycmF5LXNldC1vdmVybGFwcGlu
Zy1lbGVtZW50cy1vZi1zYW1lLXNpemUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMCBA
QAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+
Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3R5cGVkYXJyYXkt
c2V0LW92ZXJsYXBwaW5nLWVsZW1lbnRzLW9mLXNhbWUtc2l6ZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL3R5cGVkYXJyYXktc2V0LXNhbWUtdHlw
ZS1tZW1tb3ZlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pz
L3R5cGVkYXJyYXktc2V0LXNhbWUtdHlwZS1tZW1tb3ZlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvdHlwZWRhcnJheS1zZXQtc2FtZS10eXBlLW1lbW1v
dmUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDExIEBACitUZXN0cyB0aGUg
Y29kZSBwYXRoIG9mIHR5cGVkQXJyYXkuc2V0IHRoYXQgYm90dG9tcyBvdXQgaW4gbWVtbW92ZS4K
KworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywg
Zm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgZm9vKDEwKSBpcyBbNDIsNDIs
NDMsNDQsNDUsNDYsNDcsNDgsNDksNTAsNTFdCitQQVNTIGJhcigxMCkgaXMgWzQyLDQzLDQ0LDQ1
LDQ2LDQ3LDQ4LDQ5LDUwLDUxLDUxXQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvdHlwZWRhcnJheS1z
ZXQtc2FtZS10eXBlLW1lbW1vdmUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2pzL3R5cGVkYXJyYXktc2V0LXNhbWUtdHlwZS1tZW1tb3ZlLmh0bWwJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2pzL3R5cGVkYXJyYXktc2V0LXNhbWUtdHlwZS1tZW1tb3ZlLmh0
bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAi
LS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlw
dCBzcmM9InNjcmlwdC10ZXN0cy90eXBlZGFycmF5LXNldC1zYW1lLXR5cGUtbWVtbW92ZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL3R5cGVkYXJy
YXktc2V0LXNvdXJjZS1zbWFsbGVyLXRoYW4tZGVzdGluYXRpb24tZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvdHlwZWRhcnJheS1zZXQtc291cmNlLXNtYWxs
ZXItdGhhbi1kZXN0aW5hdGlvbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2pzL3R5cGVkYXJyYXktc2V0LXNvdXJjZS1zbWFsbGVyLXRoYW4tZGVzdGluYXRp
b24tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGUg
Y29kZSBwYXRoIGluIHR5cGVkQXJyYXkuc2V0IHRoYXQgbWF5IGhhdmUgdG8gZG8gYSBjb3B5IHZp
YSBhbiBpbnRlcm1lZGlhdGUgYnVmZmVyIGJlY2F1c2UgdGhlIHNvdXJjZSBhbmQgZGVzdGluYXRp
b24gb3ZlcmxhcCBhbmQgaGF2ZSBkaWZmZXJlbnQgc2l6ZSBlbGVtZW50cyAoc291cmNlIGlzIHNt
YWxsZXIgdGhhbiBkZXN0aW5hdGlvbikuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKwor
CitQQVNTIGZvbygxMCkgaXMgZm9vX3JlZmVyZW5jZSgxMCkKK1BBU1MgYmFyKDEwKSBpcyBiYXJf
cmVmZXJlbmNlKDEwKQorUEFTUyBiYXooMTApIGlzIGJhel9yZWZlcmVuY2UoMTApCitQQVNTIGZ1
eigxMCkgaXMgZnV6X3JlZmVyZW5jZSgxMCkKK1BBU1MgdGhpbmd5KDEwKSBpcyB0aGluZ3lfcmVm
ZXJlbmNlKDEwKQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBM
RVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvdHlwZWRhcnJheS1zZXQtc291cmNlLXNt
YWxsZXItdGhhbi1kZXN0aW5hdGlvbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvanMvdHlwZWRhcnJheS1zZXQtc291cmNlLXNtYWxsZXItdGhhbi1kZXN0aW5hdGlvbi5odG1s
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy90eXBlZGFycmF5LXNldC1zb3Vy
Y2Utc21hbGxlci10aGFuLWRlc3RpbmF0aW9uLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxo
dG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy90eXBlZGFy
cmF5LXNldC1zb3VyY2Utc21hbGxlci10aGFuLWRlc3RpbmF0aW9uLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzCShyZXZpc2lvbiAxNTQ1MDgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcwkod29ya2luZyBjb3B5KQpAQCAtMTMzLDYgKzEzMywxOSBAQCBmdW5j
dGlvbiBpc01pbnVzWmVybyhuKQogICAgIHJldHVybiBuID09PSAwICYmIDEvbiA8IDA7CiB9CiAK
K2Z1bmN0aW9uIGlzVHlwZWRBcnJheShhcnJheSkKK3sKKyAgICByZXR1cm4gYXJyYXkgaW5zdGFu
Y2VvZiBJbnQ4QXJyYXkKKyAgICAgICAgfHwgYXJyYXkgaW5zdGFuY2VvZiBJbnQxNkFycmF5Cisg
ICAgICAgIHx8IGFycmF5IGluc3RhbmNlb2YgSW50MzJBcnJheQorICAgICAgICB8fCBhcnJheSBp
bnN0YW5jZW9mIFVpbnQ4QXJyYXkKKyAgICAgICAgfHwgYXJyYXkgaW5zdGFuY2VvZiBVaW50OENs
YW1wZWRBcnJheQorICAgICAgICB8fCBhcnJheSBpbnN0YW5jZW9mIFVpbnQxNkFycmF5CisgICAg
ICAgIHx8IGFycmF5IGluc3RhbmNlb2YgVWludDMyQXJyYXkKKyAgICAgICAgfHwgYXJyYXkgaW5z
dGFuY2VvZiBGbG9hdDMyQXJyYXkKKyAgICAgICAgfHwgYXJyYXkgaW5zdGFuY2VvZiBGbG9hdDY0
QXJyYXk7Cit9CisKIGZ1bmN0aW9uIGlzUmVzdWx0Q29ycmVjdChfYWN0dWFsLCBfZXhwZWN0ZWQp
CiB7CiAgICAgaWYgKF9leHBlY3RlZCA9PT0gMCkKQEAgLTE0MSw3ICsxNTQsMTAgQEAgZnVuY3Rp
b24gaXNSZXN1bHRDb3JyZWN0KF9hY3R1YWwsIF9leHBlYwogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICBpZiAodHlwZW9mKF9leHBlY3RlZCkgPT0gIm51bWJlciIgJiYgaXNOYU4oX2V4cGVjdGVk
KSkKICAgICAgICAgcmV0dXJuIHR5cGVvZihfYWN0dWFsKSA9PSAibnVtYmVyIiAmJiBpc05hTihf
YWN0dWFsKTsKLSAgICBpZiAoX2V4cGVjdGVkICYmIChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5n
LmNhbGwoX2V4cGVjdGVkKSA9PSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoW10pKSkK
KyAgICBpZiAoX2V4cGVjdGVkCisgICAgICAgICYmIChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5n
LmNhbGwoX2V4cGVjdGVkKSA9PQorICAgICAgICAgICAgT2JqZWN0LnByb3RvdHlwZS50b1N0cmlu
Zy5jYWxsKFtdKQorICAgICAgICAgICAgfHwgaXNUeXBlZEFycmF5KF9leHBlY3RlZCkpKQogICAg
ICAgICByZXR1cm4gYXJlQXJyYXlzRXF1YWwoX2FjdHVhbCwgX2V4cGVjdGVkKTsKICAgICByZXR1
cm4gZmFsc2U7CiB9CkBAIC0xNTAsNyArMTY2LDEwIEBAIGZ1bmN0aW9uIHN0cmluZ2lmeSh2KQog
ewogICAgIGlmICh2ID09PSAwICYmIDEvdiA8IDApCiAgICAgICAgIHJldHVybiAiLTAiOwotICAg
IGVsc2UgcmV0dXJuICIiICsgdjsKKyAgICBlbHNlIGlmIChpc1R5cGVkQXJyYXkodikpCisgICAg
ICAgIHJldHVybiB2Ll9fcHJvdG9fXy5jb25zdHJ1Y3Rvci5uYW1lICsgIjpbIiArIEFycmF5LnBy
b3RvdHlwZS5qb2luLmNhbGwodiwgIiwiKSArICJdIjsKKyAgICBlbHNlCisgICAgICAgIHJldHVy
biAiIiArIHY7CiB9CiAKIGZ1bmN0aW9uIGV2YWxBbmRMb2coX2EsIF9xdWlldCkKQEAgLTE4NSwx
NSArMjA0LDE1IEBAIGZ1bmN0aW9uIHNob3VsZEJlKF9hLCBfYiwgcXVpZXQpCiAgIHZhciBfYnYg
PSBldmFsKF9iKTsKIAogICBpZiAoZXhjZXB0aW9uKQotICAgIHRlc3RGYWlsZWQoX2EgKyAiIHNo
b3VsZCBiZSAiICsgX2J2ICsgIi4gVGhyZXcgZXhjZXB0aW9uICIgKyBleGNlcHRpb24pOworICAg
IHRlc3RGYWlsZWQoX2EgKyAiIHNob3VsZCBiZSAiICsgc3RyaW5naWZ5KF9idikgKyAiLiBUaHJl
dyBleGNlcHRpb24gIiArIGV4Y2VwdGlvbik7CiAgIGVsc2UgaWYgKGlzUmVzdWx0Q29ycmVjdChf
YXYsIF9idikpIHsKICAgICBpZiAoIXF1aWV0KSB7CiAgICAgICAgIHRlc3RQYXNzZWQoX2EgKyAi
IGlzICIgKyBfYik7CiAgICAgfQogICB9IGVsc2UgaWYgKHR5cGVvZihfYXYpID09IHR5cGVvZihf
YnYpKQotICAgIHRlc3RGYWlsZWQoX2EgKyAiIHNob3VsZCBiZSAiICsgX2J2ICsgIi4gV2FzICIg
KyBzdHJpbmdpZnkoX2F2KSArICIuIik7CisgICAgdGVzdEZhaWxlZChfYSArICIgc2hvdWxkIGJl
ICIgKyBzdHJpbmdpZnkoX2J2KSArICIuIFdhcyAiICsgc3RyaW5naWZ5KF9hdikgKyAiLiIpOwog
ICBlbHNlCi0gICAgdGVzdEZhaWxlZChfYSArICIgc2hvdWxkIGJlICIgKyBfYnYgKyAiIChvZiB0
eXBlICIgKyB0eXBlb2YgX2J2ICsgIikuIFdhcyAiICsgX2F2ICsgIiAob2YgdHlwZSAiICsgdHlw
ZW9mIF9hdiArICIpLiIpOworICAgIHRlc3RGYWlsZWQoX2EgKyAiIHNob3VsZCBiZSAiICsgc3Ry
aW5naWZ5KF9idikgKyAiIChvZiB0eXBlICIgKyB0eXBlb2YgX2J2ICsgIikuIFdhcyAiICsgX2F2
ICsgIiAob2YgdHlwZSAiICsgdHlwZW9mIF9hdiArICIpLiIpOwogfQogCiAvLyBFeGVjdXRlIGNv
bmRpdGlvbiBldmVyeSA1IG1pbGxpc2Vjb25kcyB1bnRpbCBpdCBzdWNjZWVkIG9yIGZhaWx1cmVU
aW1lIGlzIHJlYWNoZWQuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy90
eXBlZC1hcnJheS1jb3B5LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvc2Ny
aXB0LXRlc3RzL3R5cGVkLWFycmF5LWNvcHkuanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy90eXBlZC1hcnJheS1jb3B5LmpzCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDE2IEBACitkZXNjcmlwdGlvbigKKyJSZWR1Y2VkIHRlc3QgY2FzZSBmb3IgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgzODE4IgorKTsKKworYSA9IG5l
dyBVaW50MTZBcnJheSg4KTsKKworYiA9IG5ldyBVaW50OEFycmF5KGEuYnVmZmVyLCAwLCAyKTsK
K2JbMF0gPSAweDA1OworYlsxXSA9IDB4MDU7CisKK3Nob3VsZEJlKCJhWzBdIiwgIjB4MDUwNSIp
OworCithLnNldChiKTsKKworc2hvdWxkQmUoImFbMF0iLCAiMHgwMDA1Iik7CitzaG91bGRCZSgi
YVsxXSIsICIweDAwMDUiKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3Rz
L3R5cGVkYXJyYXktc2V0LWRlc3RpbmF0aW9uLXNtYWxsZXItdGhhbi1zb3VyY2UuanMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvdHlwZWRhcnJheS1zZXQt
ZGVzdGluYXRpb24tc21hbGxlci10aGFuLXNvdXJjZS5qcwkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL3R5cGVkYXJyYXktc2V0LWRlc3RpbmF0aW9uLXNt
YWxsZXItdGhhbi1zb3VyY2UuanMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTggQEAKK2Rlc2Ny
aXB0aW9uKAorIlRlc3RzIHRoZSBjb2RlIHBhdGggaW4gdHlwZWRBcnJheS5zZXQgdGhhdCBtYXkg
aGF2ZSB0byBkbyBhIGNvcHkgdmlhIGFuIGludGVybWVkaWF0ZSBidWZmZXIgYmVjYXVzZSB0aGUg
c291cmNlIGFuZCBkZXN0aW5hdGlvbiBvdmVybGFwIGFuZCBoYXZlIGRpZmZlcmVudCBzaXplIGVs
ZW1lbnRzIChzb3VyY2UgaXMgbGFyZ2VyIHRoYW4gZGVzdGluYXRpb24pLiIKKyk7CisKK2Z1bmN0
aW9uIGZvb19yZWZlcmVuY2UobikgeworICAgIHZhciBhcnJheSA9IG5ldyBJbnQ4QXJyYXkobik7
CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuOyArK2kpCisgICAgICAgIGFycmF5W2ldID0gNDIg
KyBpOworICAgIHZhciBhcnJheTIgPSBuZXcgSW50OEFycmF5KGFycmF5KTsKKyAgICBhcnJheTIu
c2V0KG5ldyBJbnQzMkFycmF5KGFycmF5LmJ1ZmZlcikpOworICAgIHJldHVybiBhcnJheTI7Cit9
CisKK2Z1bmN0aW9uIGZvbyhuKSB7CisgICAgdmFyIGFycmF5ID0gbmV3IEludDhBcnJheShuKTsK
KyAgICBmb3IgKHZhciBpID0gMDsgaSA8IG47ICsraSkKKyAgICAgICAgYXJyYXlbaV0gPSA0MiAr
IGk7CisgICAgYXJyYXkuc2V0KG5ldyBJbnQzMkFycmF5KGFycmF5LmJ1ZmZlcikpOworICAgIHJl
dHVybiBhcnJheTsKK30KKworZnVuY3Rpb24gYmFyX3JlZmVyZW5jZShuKSB7CisgICAgdmFyIGFy
cmF5ID0gbmV3IEludDhBcnJheShuKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IG47ICsraSkK
KyAgICAgICAgYXJyYXlbaV0gPSA0MiArIGk7CisgICAgdmFyIGFycmF5MiA9IG5ldyBJbnQ4QXJy
YXkoYXJyYXkpOworICAgIGFycmF5Mi5zZXQobmV3IEludDMyQXJyYXkoYXJyYXkuYnVmZmVyKSwg
biAtIG4gLyA0KTsKKyAgICByZXR1cm4gYXJyYXkyOworfQorCitmdW5jdGlvbiBiYXIobikgewor
ICAgIHZhciBhcnJheSA9IG5ldyBJbnQ4QXJyYXkobik7CisgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBuOyArK2kpCisgICAgICAgIGFycmF5W2ldID0gNDIgKyBpOworICAgIGFycmF5LnNldChuZXcg
SW50MzJBcnJheShhcnJheS5idWZmZXIpLCBuIC0gbiAvIDQpOworICAgIHJldHVybiBhcnJheTsK
K30KKworZnVuY3Rpb24gYmF6X3JlZmVyZW5jZShuKSB7CisgICAgdmFyIGFycmF5ID0gbmV3IElu
dDhBcnJheShuKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IG47ICsraSkKKyAgICAgICAgYXJy
YXlbaV0gPSA0MiArIGk7CisgICAgdmFyIGFycmF5MiA9IG5ldyBJbnQ4QXJyYXkoYXJyYXkpOwor
ICAgIGFycmF5Mi5zZXQobmV3IEludDMyQXJyYXkoYXJyYXkuYnVmZmVyKSwgbiAvIDIgLSAobiAv
IDQpIC8gMik7CisgICAgcmV0dXJuIGFycmF5MjsKK30KKworZnVuY3Rpb24gYmF6KG4pIHsKKyAg
ICB2YXIgYXJyYXkgPSBuZXcgSW50OEFycmF5KG4pOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
bjsgKytpKQorICAgICAgICBhcnJheVtpXSA9IDQyICsgaTsKKyAgICBhcnJheS5zZXQobmV3IElu
dDMyQXJyYXkoYXJyYXkuYnVmZmVyKSwgbiAvIDIgLSAobiAvIDQpIC8gMik7CisgICAgcmV0dXJu
IGFycmF5OworfQorCitzaG91bGRCZSgiZm9vKDY0KSIsICJmb29fcmVmZXJlbmNlKDY0KSIpOwor
c2hvdWxkQmUoImJhcig2NCkiLCAiYmFyX3JlZmVyZW5jZSg2NCkiKTsKK3Nob3VsZEJlKCJiYXoo
NjQpIiwgImJhel9yZWZlcmVuY2UoNjQpIik7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL3Nj
cmlwdC10ZXN0cy90eXBlZGFycmF5LXNldC1vdmVybGFwcGluZy1lbGVtZW50cy1vZi1zYW1lLXNp
emUuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvdHlw
ZWRhcnJheS1zZXQtb3ZlcmxhcHBpbmctZWxlbWVudHMtb2Ytc2FtZS1zaXplLmpzCShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvdHlwZWRhcnJheS1zZXQt
b3ZlcmxhcHBpbmctZWxlbWVudHMtb2Ytc2FtZS1zaXplLmpzCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDIzIEBACitkZXNjcmlwdGlvbigKKyJUZXN0cyB0aGUgY29kZSBwYXRoIG9mIHR5cGVkQXJy
YXkuc2V0IHRoYXQgdHJpZXMgdG8gZG8gYSBtZW1tb3ZlLXdpdGgtY29udmVyc2lvbiBmb3Igb3Zl
cmxhcHBpbmcgYXJyYXlzLiIKKyk7CisKK2Z1bmN0aW9uIGZvbyhuKSB7CisgICAgdmFyIGFycmF5
ID0gbmV3IEludDMyQXJyYXkobiArIDEpOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgKytp
KQorICAgICAgICBhcnJheVtpXSA9IDQyICsgaTsKKyAgICBhcnJheS5zZXQobmV3IFVpbnQzMkFy
cmF5KGFycmF5LmJ1ZmZlciwgMCwgbiksIDEpOworICAgIHJldHVybiBhcnJheTsKK30KKworZnVu
Y3Rpb24gYmFyKG4pIHsKKyAgICB2YXIgYXJyYXkgPSBuZXcgSW50MzJBcnJheShuICsgMSk7Cisg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuOyArK2kpCisgICAgICAgIGFycmF5W2kgKyAxXSA9IDQy
ICsgaTsKKyAgICBhcnJheS5zZXQobmV3IFVpbnQzMkFycmF5KGFycmF5LmJ1ZmZlciwgNCksIDAp
OworICAgIHJldHVybiBhcnJheTsKK30KKworc2hvdWxkQmUoImZvbygxMCkiLCAiWzQyLDQyLDQy
LDQyLDQyLDQyLDQyLDQyLDQyLDQyLDQyXSIpOworc2hvdWxkQmUoImJhcigxMCkiLCAiWzQyLDQz
LDQ0LDQ1LDQ2LDQ3LDQ4LDQ5LDUwLDUxLDUxXSIpOworCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2pzL3NjcmlwdC10ZXN0cy90eXBlZGFycmF5LXNldC1zYW1lLXR5cGUtbWVtbW92ZS5qcwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy90eXBlZGFycmF5LXNl
dC1zYW1lLXR5cGUtbWVtbW92ZS5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
anMvc2NyaXB0LXRlc3RzL3R5cGVkYXJyYXktc2V0LXNhbWUtdHlwZS1tZW1tb3ZlLmpzCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDI3IEBACitkZXNjcmlwdGlvbigKKyJUZXN0cyB0aGUgY29kZSBw
YXRoIG9mIHR5cGVkQXJyYXkuc2V0IHRoYXQgYm90dG9tcyBvdXQgaW4gbWVtbW92ZS4iCispOwor
CitmdW5jdGlvbiBmb28obikgeworICAgIHZhciBhcnJheSA9IG5ldyBJbnQzMkFycmF5KG4gKyAx
KTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IG47ICsraSkKKyAgICAgICAgYXJyYXlbaV0gPSA0
MiArIGk7CisgICAgYXJyYXkuc2V0KGFycmF5LnN1YmFycmF5KDAsIG4pLCAxKTsKKyAgICByZXR1
cm4gYXJyYXk7Cit9CisKK2Z1bmN0aW9uIGJhcihuKSB7CisgICAgdmFyIGFycmF5ID0gbmV3IElu
dDMyQXJyYXkobiArIDEpOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgKytpKQorICAgICAg
ICBhcnJheVtpICsgMV0gPSA0MiArIGk7CisgICAgYXJyYXkuc2V0KGFycmF5LnN1YmFycmF5KDEs
IG4gKyAxKSwgMCk7CisgICAgcmV0dXJuIGFycmF5OworfQorCitmdW5jdGlvbiBhcnJheXNFcXVh
bChhLCBiKSB7CisgICAgaWYgKGEubGVuZ3RoICE9IGIubGVuZ3RoKQorICAgICAgICByZXR1cm4g
ZmFsc2U7Cit9CisKK3Nob3VsZEJlKCJmb28oMTApIiwgIls0Miw0Miw0Myw0NCw0NSw0Niw0Nyw0
OCw0OSw1MCw1MV0iKTsKK3Nob3VsZEJlKCJiYXIoMTApIiwgIls0Miw0Myw0NCw0NSw0Niw0Nyw0
OCw0OSw1MCw1MSw1MV0iKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3Rz
L3R5cGVkYXJyYXktc2V0LXNvdXJjZS1zbWFsbGVyLXRoYW4tZGVzdGluYXRpb24uanMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvdHlwZWRhcnJheS1zZXQt
c291cmNlLXNtYWxsZXItdGhhbi1kZXN0aW5hdGlvbi5qcwkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL3R5cGVkYXJyYXktc2V0LXNvdXJjZS1zbWFsbGVy
LXRoYW4tZGVzdGluYXRpb24uanMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOTUgQEAKK2Rlc2Ny
aXB0aW9uKAorIlRlc3RzIHRoZSBjb2RlIHBhdGggaW4gdHlwZWRBcnJheS5zZXQgdGhhdCBtYXkg
aGF2ZSB0byBkbyBhIGNvcHkgdmlhIGFuIGludGVybWVkaWF0ZSBidWZmZXIgYmVjYXVzZSB0aGUg
c291cmNlIGFuZCBkZXN0aW5hdGlvbiBvdmVybGFwIGFuZCBoYXZlIGRpZmZlcmVudCBzaXplIGVs
ZW1lbnRzIChzb3VyY2UgaXMgc21hbGxlciB0aGFuIGRlc3RpbmF0aW9uKS4iCispOworCitmdW5j
dGlvbiBmb29fcmVmZXJlbmNlKG4pIHsKKyAgICB2YXIgYXJyYXkgPSBuZXcgSW50MzJBcnJheShu
ICsgMSk7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuOyArK2kpCisgICAgICAgIGFycmF5W2ld
ID0gNDIgKyBpOworICAgIHZhciBhcnJheTIgPSBuZXcgSW50MzJBcnJheShhcnJheSk7CisgICAg
YXJyYXkyLnNldChuZXcgVWludDhBcnJheShhcnJheS5idWZmZXIsIDAsIG4pLCAxKTsKKyAgICBy
ZXR1cm4gYXJyYXkyOworfQorCitmdW5jdGlvbiBmb28obikgeworICAgIHZhciBhcnJheSA9IG5l
dyBJbnQzMkFycmF5KG4gKyAxKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IG47ICsraSkKKyAg
ICAgICAgYXJyYXlbaV0gPSA0MiArIGk7CisgICAgYXJyYXkuc2V0KG5ldyBVaW50OEFycmF5KGFy
cmF5LmJ1ZmZlciwgMCwgbiksIDEpOworICAgIHJldHVybiBhcnJheTsKK30KKworZnVuY3Rpb24g
YmFyX3JlZmVyZW5jZShuKSB7CisgICAgdmFyIGFycmF5ID0gbmV3IEludDMyQXJyYXkobiArIDEp
OworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgKytpKQorICAgICAgICBhcnJheVtpICsgMV0g
PSA0MiArIGk7CisgICAgdmFyIGFycmF5MiA9IG5ldyBJbnQzMkFycmF5KGFycmF5KTsKKyAgICBh
cnJheTIuc2V0KG5ldyBVaW50OEFycmF5KGFycmF5LmJ1ZmZlciwgKG4gKyAxKSAqIDQgLSBuKSwg
MCk7CisgICAgcmV0dXJuIGFycmF5MjsKK30KKworZnVuY3Rpb24gYmFyKG4pIHsKKyAgICB2YXIg
YXJyYXkgPSBuZXcgSW50MzJBcnJheShuICsgMSk7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBu
OyArK2kpCisgICAgICAgIGFycmF5W2kgKyAxXSA9IDQyICsgaTsKKyAgICBhcnJheS5zZXQobmV3
IFVpbnQ4QXJyYXkoYXJyYXkuYnVmZmVyLCAobiArIDEpICogNCAtIG4pLCAwKTsKKyAgICByZXR1
cm4gYXJyYXk7Cit9CisKK2Z1bmN0aW9uIGJhel9yZWZlcmVuY2UobikgeworICAgIHZhciBhcnJh
eSA9IG5ldyBJbnQzMkFycmF5KG4pOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgKytpKQor
ICAgICAgICBhcnJheVtpXSA9IDQyICsgaTsKKyAgICB2YXIgYXJyYXkyID0gbmV3IEludDMyQXJy
YXkoYXJyYXkpOworICAgIGFycmF5Mi5zZXQobmV3IFVpbnQ4QXJyYXkoYXJyYXkuYnVmZmVyLCAw
LCBuKSk7CisgICAgcmV0dXJuIGFycmF5MjsKK30KKworZnVuY3Rpb24gYmF6KG4pIHsKKyAgICB2
YXIgYXJyYXkgPSBuZXcgSW50MzJBcnJheShuKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IG47
ICsraSkKKyAgICAgICAgYXJyYXlbaV0gPSA0MiArIGk7CisgICAgYXJyYXkuc2V0KG5ldyBVaW50
OEFycmF5KGFycmF5LmJ1ZmZlciwgMCwgbikpOworICAgIHJldHVybiBhcnJheTsKK30KKworZnVu
Y3Rpb24gZnV6X3JlZmVyZW5jZShuKSB7CisgICAgdmFyIGFycmF5ID0gbmV3IEludDMyQXJyYXko
bik7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuOyArK2kpCisgICAgICAgIGFycmF5W2ldID0g
NDIgKyBpOworICAgIHZhciBhcnJheTIgPSBuZXcgSW50MzJBcnJheShhcnJheSk7CisgICAgYXJy
YXkyLnNldChuZXcgVWludDhBcnJheShhcnJheS5idWZmZXIsIG4gKiA0IC0gbikpOworICAgIHJl
dHVybiBhcnJheTI7Cit9CisKK2Z1bmN0aW9uIGZ1eihuKSB7CisgICAgdmFyIGFycmF5ID0gbmV3
IEludDMyQXJyYXkobik7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuOyArK2kpCisgICAgICAg
IGFycmF5W2ldID0gNDIgKyBpOworICAgIGFycmF5LnNldChuZXcgVWludDhBcnJheShhcnJheS5i
dWZmZXIsIG4gKiA0IC0gbikpOworICAgIHJldHVybiBhcnJheTsKK30KKworZnVuY3Rpb24gdGhp
bmd5X3JlZmVyZW5jZShuKSB7CisgICAgdmFyIGFycmF5ID0gbmV3IEludDMyQXJyYXkobik7Cisg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuOyArK2kpCisgICAgICAgIGFycmF5W2ldID0gNDIgKyBp
OworICAgIHZhciBhcnJheTIgPSBuZXcgSW50MzJBcnJheShhcnJheSk7CisgICAgYXJyYXkyLnNl
dChuZXcgVWludDhBcnJheShhcnJheS5idWZmZXIsIDQsIG4pKTsKKyAgICByZXR1cm4gYXJyYXky
OworfQorCitmdW5jdGlvbiB0aGluZ3kobikgeworICAgIHZhciBhcnJheSA9IG5ldyBJbnQzMkFy
cmF5KG4pOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgKytpKQorICAgICAgICBhcnJheVtp
XSA9IDQyICsgaTsKKyAgICBhcnJheS5zZXQobmV3IFVpbnQ4QXJyYXkoYXJyYXkuYnVmZmVyLCA0
LCBuKSk7CisgICAgcmV0dXJuIGFycmF5OworfQorCitzaG91bGRCZSgiZm9vKDEwKSIsICJmb29f
cmVmZXJlbmNlKDEwKSIpOworc2hvdWxkQmUoImJhcigxMCkiLCAiYmFyX3JlZmVyZW5jZSgxMCki
KTsKK3Nob3VsZEJlKCJiYXooMTApIiwgImJhel9yZWZlcmVuY2UoMTApIik7CitzaG91bGRCZSgi
ZnV6KDEwKSIsICJmdXpfcmVmZXJlbmNlKDEwKSIpOworc2hvdWxkQmUoInRoaW5neSgxMCkiLCAi
dGhpbmd5X3JlZmVyZW5jZSgxMCkiKTsKKwo=
</data>
<flag name="review"
          id="231528"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>