<?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>53401</bug_id>
          
          <creation_ts>2011-01-30 11:46:09 -0800</creation_ts>
          <short_desc>REGRESSION(r77025): It made js1_5/Regress/regress-159334.js fail on 64 bit Linux (Requested by Ossy on #webkit).</short_desc>
          <delta_ts>2011-01-30 12:02:15 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</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>53352</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Review Bot">webkit.review.bot</reporter>
          <assigned_to name="WebKit Review Bot">webkit.review.bot</assigned_to>
          <cc>barraclough</cc>
    
    <cc>ossy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>342345</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-30 11:46:09 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/77025 broke the build:
It made js1_5/Regress/regress-159334.js fail on 64 bit Linux (Requested by Ossy on #webkit).

This is an automatic bug report generated by the sheriff-bot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests case pain.

&quot;Only you can prevent forest fires.&quot; -- Smokey the Bear</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>342346</commentid>
    <comment_count>1</comment_count>
      <attachid>80596</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-30 11:46:30 -0800</bug_when>
    <thetext>Created attachment 80596
ROLLOUT of r77025

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the rollout will be successful.  This process takes approximately 15 minutes.

If you would like to land the rollout faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID --ignore-builders

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>342348</commentid>
    <comment_count>2</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2011-01-30 11:56:05 -0800</bug_when>
    <thetext>Rollout patch landed in http://trac.webkit.org/changeset/77090</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>80596</attachid>
            <date>2011-01-30 11:46:30 -0800</date>
            <delta_ts>2011-01-30 12:02:15 -0800</delta_ts>
            <desc>ROLLOUT of r77025</desc>
            <filename>bug-53401-20110130194544.patch</filename>
            <type>text/plain</type>
            <size>36408</size>
            <attacher name="WebKit Review Bot">webkit.review.bot</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGZmODExMDk5OTViNTQwNWRhMDg4NGFhYjEyZjAx
YTdjOTQ3OTA3ZjQuLmMwMzA1NTY1Nzg4MDczYjAxY2VmYjNlYzM2MTg2ZGQ2MmY4NDVmNjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDExLTAxLTMwICBTaGVy
aWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KKworICAgICAgICBVbnJldmll
d2VkLCByb2xsaW5nIG91dCByNzcwMjUuCisgICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcv
Y2hhbmdlc2V0Lzc3MDI1CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD01MzQwMQorCisgICAgICAgIEl0IG1hZGUganMxXzUvUmVncmVzcy9yZWdyZXNzLTE1
OTMzNC5qcyBmYWlsIG9uIDY0IGJpdCBMaW51eAorICAgICAgICAoUmVxdWVzdGVkIGJ5IE9zc3kg
b24gI3dlYmtpdCkuCisKKyAgICAgICAgKiBqaXQvRXhlY3V0YWJsZUFsbG9jYXRvckZpeGVkVk1Q
b29sLmNwcDoKKyAgICAgICAgKEpTQzo6RnJlZUxpc3RFbnRyeTo6RnJlZUxpc3RFbnRyeSk6Cisg
ICAgICAgIChKU0M6OkFWTFRyZWVBYnN0cmFjdG9yRm9yRnJlZUxpc3Q6OmdldF9sZXNzKToKKyAg
ICAgICAgKEpTQzo6QVZMVHJlZUFic3RyYWN0b3JGb3JGcmVlTGlzdDo6c2V0X2xlc3MpOgorICAg
ICAgICAoSlNDOjpBVkxUcmVlQWJzdHJhY3RvckZvckZyZWVMaXN0OjpnZXRfZ3JlYXRlcik6Cisg
ICAgICAgIChKU0M6OkFWTFRyZWVBYnN0cmFjdG9yRm9yRnJlZUxpc3Q6OnNldF9ncmVhdGVyKToK
KyAgICAgICAgKEpTQzo6QVZMVHJlZUFic3RyYWN0b3JGb3JGcmVlTGlzdDo6Z2V0X2JhbGFuY2Vf
ZmFjdG9yKToKKyAgICAgICAgKEpTQzo6QVZMVHJlZUFic3RyYWN0b3JGb3JGcmVlTGlzdDo6c2V0
X2JhbGFuY2VfZmFjdG9yKToKKyAgICAgICAgKEpTQzo6QVZMVHJlZUFic3RyYWN0b3JGb3JGcmVl
TGlzdDo6bnVsbCk6CisgICAgICAgIChKU0M6OkFWTFRyZWVBYnN0cmFjdG9yRm9yRnJlZUxpc3Q6
OmNvbXBhcmVfa2V5X2tleSk6CisgICAgICAgIChKU0M6OkFWTFRyZWVBYnN0cmFjdG9yRm9yRnJl
ZUxpc3Q6OmNvbXBhcmVfa2V5X25vZGUpOgorICAgICAgICAoSlNDOjpBVkxUcmVlQWJzdHJhY3Rv
ckZvckZyZWVMaXN0Ojpjb21wYXJlX25vZGVfbm9kZSk6CisgICAgICAgIChKU0M6OnJldmVyc2VT
b3J0RnJlZUxpc3RFbnRyaWVzQnlQb2ludGVyKToKKyAgICAgICAgKEpTQzo6cmV2ZXJzZVNvcnRD
b21tb25TaXplZEFsbG9jYXRpb25zKToKKyAgICAgICAgKEpTQzo6Rml4ZWRWTVBvb2xBbGxvY2F0
b3I6OnJlbGVhc2UpOgorICAgICAgICAoSlNDOjpGaXhlZFZNUG9vbEFsbG9jYXRvcjo6cmV1c2Up
OgorICAgICAgICAoSlNDOjpGaXhlZFZNUG9vbEFsbG9jYXRvcjo6YWRkVG9GcmVlTGlzdCk6Cisg
ICAgICAgIChKU0M6OkZpeGVkVk1Qb29sQWxsb2NhdG9yOjpjb2FsZXNjZUZyZWVTcGFjZSk6Cisg
ICAgICAgIChKU0M6OkZpeGVkVk1Qb29sQWxsb2NhdG9yOjpGaXhlZFZNUG9vbEFsbG9jYXRvcik6
CisgICAgICAgIChKU0M6OkZpeGVkVk1Qb29sQWxsb2NhdG9yOjphbGxvYyk6CisgICAgICAgIChK
U0M6OkZpeGVkVk1Qb29sQWxsb2NhdG9yOjpmcmVlKToKKyAgICAgICAgKEpTQzo6Rml4ZWRWTVBv
b2xBbGxvY2F0b3I6OmlzVmFsaWQpOgorICAgICAgICAoSlNDOjpGaXhlZFZNUG9vbEFsbG9jYXRv
cjo6YWxsb2NJbnRlcm5hbCk6CisgICAgICAgIChKU0M6OkZpeGVkVk1Qb29sQWxsb2NhdG9yOjpp
c1dpdGhpblZNUG9vbCk6CisgICAgICAgIChKU0M6OkZpeGVkVk1Qb29sQWxsb2NhdG9yOjphZGRU
b0NvbW1pdHRlZEJ5dGVDb3VudCk6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVBbGxvY2F0b3I6
OmNvbW1pdHRlZEJ5dGVDb3VudCk6CisgICAgICAgIChKU0M6Om1heWJlTW9kaWZ5Vk1Qb29sU2l6
ZSk6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVBbGxvY2F0b3I6OmlzVmFsaWQpOgorICAgICAg
ICAoSlNDOjpFeGVjdXRhYmxlQWxsb2NhdG9yOjp1bmRlck1lbW9yeVByZXNzdXJlKToKKyAgICAg
ICAgKEpTQzo6RXhlY3V0YWJsZVBvb2w6OnN5c3RlbUFsbG9jKToKKyAgICAgICAgKEpTQzo6RXhl
Y3V0YWJsZVBvb2w6OnN5c3RlbVJlbGVhc2UpOgorICAgICAgICAqIHd0Zi9QYWdlUmVzZXJ2YXRp
b24uaDoKKyAgICAgICAgKFdURjo6UGFnZVJlc2VydmF0aW9uOjpQYWdlUmVzZXJ2YXRpb24pOgor
ICAgICAgICAoV1RGOjpQYWdlUmVzZXJ2YXRpb246OmNvbW1pdCk6CisgICAgICAgIChXVEY6OlBh
Z2VSZXNlcnZhdGlvbjo6ZGVjb21taXQpOgorCiAyMDExLTAxLTMwICBMZW8gWWFuZyAgPGxlby55
YW5nQHRvcmNobW9iaWxlLmNvbS5jbj4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYW5pZWwgQmF0
ZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxv
Y2F0b3JGaXhlZFZNUG9vbC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFi
bGVBbGxvY2F0b3JGaXhlZFZNUG9vbC5jcHAKaW5kZXggZmQ1ZTc1MTlkNjVjMDM3NDdhYmI4OTk2
ODBmNDVkMjYxOTM3YTY3Yi4uOWZjODg5ZWUyNjJjZDFhOTg4MjI0MGI2OTFkYzAxMzVmYmVlYjEw
NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2Nh
dG9yRml4ZWRWTVBvb2wuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0
YWJsZUFsbG9jYXRvckZpeGVkVk1Qb29sLmNwcApAQCAtNDIsNDUzICs0Miw0MDcgQEAKICNpbmNs
dWRlIDxzdGRpby5oPgogI2VuZGlmCiAKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCB2bVBvb2xTaXpl
T3ZlcmNvbW1pdCA9IDJ1ICogMTAyNHUgKiAxMDI0dSAqIDEwMjR1OyAvLyAyR2IKK3N0YXRpYyBj
b25zdCB1bnNpZ25lZCBjb2FsZXNjZUxpbWl0T3ZlcmNvbW1pdCA9IDE2dSAqIDEwMjR1ICogMTAy
NHU7IC8vIDE2TWIKKworc3RhdGljIGNvbnN0IHVuc2lnbmVkIHZtUG9vbFNpemVOb092ZXJjb21t
aXQgPSAzMnUgKiAxMDI0dSAqIDEwMjR1OyAvLyAzMk1iCitzdGF0aWMgY29uc3QgdW5zaWduZWQg
Y29hbGVzY2VMaW1pdE5vT3ZlcmNvbW1pdCA9IDR1ICogMTAyNHUgKiAxMDI0dTsgLy8gNE1iCisK
K3N0YXRpYyBjb25zdCB1bnNpZ25lZCB2bVBvb2xTaXplRW1iZWRkZWQgPSAxNnUgKiAxMDI0dSAq
IDEwMjR1OyAvLyAxNk1iCitzdGF0aWMgY29uc3QgdW5zaWduZWQgY29hbGVzY2VMaW1pdEVtYmVk
ZGVkID0gNHUgKiAxMDI0dSAqIDEwMjR1OyAvLyA0TWIKKworI2lmIENQVShYODZfNjQpICYmICFP
UyhMSU5VWCkKKy8vIFRoZXNlIGxpbWl0cyBzdWl0YWJsZSBvbiA2NC1iaXQgcGxhdGZvcm1zIChw
YXJ0aWN1bGFybHkgeDg2LTY0LAorLy8gd2hlcmUgd2UgcmVxdWlyZSBhbGwganVtcHMgdG8gaGF2
ZSBhIDJHYiBtYXggcmFuZ2UpLiBXZSBkb24ndAorLy8gZW5hYmxlIHRoaXMgYnkgZGVmYXVsdCBv
biBMaW51eCwgc2luY2UgaXQgbmVlZHMgb3ZlcmNvbW1pdCBhbmQKKy8vIGRpc3Ryb3MgY29tbW9u
bHkgZGlzYWJsZSB0aGF0IGZlYXR1cmUuIFdlJ2xsIGNoZWNrIHRoZSB2YWx1ZQorLy8gZm9yIHRo
ZSBvdmVyY29tbWl0IGZlYXR1cmUgYXQgcnVudGltZSBhbmQgcmUtYXNzaWduIHRoZSBHZW5lcmlj
CisvLyB2YWx1ZXMgaWYgaXQncyBlbmFibGVkLgorc3RhdGljIHVuc2lnbmVkIHZtUG9vbFNpemUg
PSB2bVBvb2xTaXplT3ZlcmNvbW1pdDsKK3N0YXRpYyB1bnNpZ25lZCBjb2FsZXNjZUxpbWl0ID0g
Y29hbGVzY2VMaW1pdE92ZXJjb21taXQ7CisjZWxpZiBDUFUoQVJNKQorc3RhdGljIHVuc2lnbmVk
IHZtUG9vbFNpemUgPSB2bVBvb2xTaXplRW1iZWRkZWQ7CitzdGF0aWMgdW5zaWduZWQgY29hbGVz
Y2VMaW1pdCA9IGNvYWxlc2NlTGltaXRFbWJlZGRlZDsKKyNlbHNlCitzdGF0aWMgdW5zaWduZWQg
dm1Qb29sU2l6ZSA9IHZtUG9vbFNpemVOb092ZXJjb21taXQ7CitzdGF0aWMgdW5zaWduZWQgY29h
bGVzY2VMaW1pdCA9IGNvYWxlc2NlTGltaXROb092ZXJjb21taXQ7CisjZW5kaWYKKwogdXNpbmcg
bmFtZXNwYWNlIFdURjsKIAogbmFtZXNwYWNlIEpTQyB7CiAgICAgCi0jZGVmaW5lIFR3b1Bvdyhu
KSAoMXVsbCA8PCBuKQotCi1jbGFzcyBBbGxvY2F0aW9uVGFibGVTaXplQ2xhc3MgewotcHVibGlj
OgotICAgIEFsbG9jYXRpb25UYWJsZVNpemVDbGFzcyhzaXplX3Qgc2l6ZSwgc2l6ZV90IGJsb2Nr
U2l6ZSwgdW5zaWduZWQgbG9nMkJsb2NrU2l6ZSkKLSAgICAgICAgOiBtX2Jsb2NrU2l6ZShibG9j
a1NpemUpCi0gICAgewotICAgICAgICBBU1NFUlQoYmxvY2tTaXplID09IFR3b1Bvdyhsb2cyQmxv
Y2tTaXplKSk7Ci0KLSAgICAgICAgLy8gQ2FsY3VsYXRlIHRoZSBudW1iZXIgb2YgYmxvY2tzIG5l
ZWRlZCB0byBob2xkIHNpemUuCi0gICAgICAgIHNpemVfdCBibG9ja01hc2sgPSBibG9ja1NpemUg
LSAxOwotICAgICAgICBtX2Jsb2NrQ291bnQgPSAoc2l6ZSArIGJsb2NrTWFzaykgPj4gbG9nMkJs
b2NrU2l6ZTsKLQotICAgICAgICAvLyBBbGlnbiB0byB0aGUgc21hbGxlc3QgcG93ZXIgb2YgdHdv
ID49IG1fYmxvY2tDb3VudC4KLSAgICAgICAgbV9ibG9ja0FsaWdubWVudCA9IDE7Ci0gICAgICAg
IHdoaWxlIChtX2Jsb2NrQWxpZ25tZW50IDwgbV9ibG9ja0NvdW50KQotICAgICAgICAgICAgbV9i
bG9ja0FsaWdubWVudCArPSBtX2Jsb2NrQWxpZ25tZW50OwotICAgIH0KLQotICAgIHNpemVfdCBi
bG9ja1NpemUoKSBjb25zdCB7IHJldHVybiBtX2Jsb2NrU2l6ZTsgfQotICAgIHNpemVfdCBibG9j
a0NvdW50KCkgY29uc3QgeyByZXR1cm4gbV9ibG9ja0NvdW50OyB9Ci0gICAgc2l6ZV90IGJsb2Nr
QWxpZ25tZW50KCkgY29uc3QgeyByZXR1cm4gbV9ibG9ja0FsaWdubWVudDsgfQotCi0gICAgc2l6
ZV90IHNpemUoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYmxvY2tTaXplICogbV9ibG9ja0Nv
dW50OwotICAgIH0KK3N0YXRpYyBzaXplX3QgY29tbWl0dGVkQnl0ZXNDb3VudCA9IDA7ICAKK3N0
YXRpYyBTcGluTG9jayBzcGlubG9jayA9IFNQSU5MT0NLX0lOSVRJQUxJWkVSOwogCi1wcml2YXRl
OgotICAgIHNpemVfdCBtX2Jsb2NrU2l6ZTsKLSAgICBzaXplX3QgbV9ibG9ja0NvdW50OwotICAg
IHNpemVfdCBtX2Jsb2NrQWxpZ25tZW50OworLy8gRnJlZUxpc3RFbnRyeSBkZXNjcmliZXMgYSBm
cmVlIGNodW5rIG9mIG1lbW9yeSwgc3RvcmVkIGluIHRoZSBmcmVlTGlzdC4KK3N0cnVjdCBGcmVl
TGlzdEVudHJ5IHsKKyAgICBGcmVlTGlzdEVudHJ5KHZvaWQqIHBvaW50ZXIsIHNpemVfdCBzaXpl
KQorICAgICAgICA6IHBvaW50ZXIocG9pbnRlcikKKyAgICAgICAgLCBzaXplKHNpemUpCisgICAg
ICAgICwgbmV4dEVudHJ5KDApCisgICAgICAgICwgbGVzcygwKQorICAgICAgICAsIGdyZWF0ZXIo
MCkKKyAgICAgICAgLCBiYWxhbmNlRmFjdG9yKDApCisgICAgeworICAgIH0KKworICAgIC8vIEFs
bCBlbnRyaWVzIG9mIHRoZSBzYW1lIHNpemUgc2hhcmUgYSBzaW5nbGUgZW50cnkKKyAgICAvLyBp
biB0aGUgQVZMVHJlZSwgYW5kIGFyZSBsaW5rZWQgdG9nZXRoZXIgaW4gYSBsaW5rZWQKKyAgICAv
LyBsaXN0LCB1c2luZyBuZXh0RW50cnkuCisgICAgdm9pZCogcG9pbnRlcjsKKyAgICBzaXplX3Qg
c2l6ZTsKKyAgICBGcmVlTGlzdEVudHJ5KiBuZXh0RW50cnk7CisKKyAgICAvLyBUaGVzZSBmaWVs
ZHMgYXJlIHVzZWQgYnkgQVZMVHJlZS4KKyAgICBGcmVlTGlzdEVudHJ5KiBsZXNzOworICAgIEZy
ZWVMaXN0RW50cnkqIGdyZWF0ZXI7CisgICAgaW50IGJhbGFuY2VGYWN0b3I7CiB9OwogCi10ZW1w
bGF0ZTx1bnNpZ25lZCBsb2cyRW50cmllcz4KLWNsYXNzIEFsbG9jYXRpb25UYWJsZUxlYWYgewot
ICAgIHR5cGVkZWYgdWludDY0X3QgQml0RmllbGQ7Ci0KLXB1YmxpYzoKLSAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgbG9nMlN1YnJlZ2lvblNpemUgPSAxMjsgLy8gMl4xMiA9PSBwYWdlc2l6ZQot
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBsb2cyUmVnaW9uU2l6ZSA9IGxvZzJTdWJyZWdpb25T
aXplICsgbG9nMkVudHJpZXM7Ci0KLSAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHN1YnJlZ2lvblNp
emUgPSBUd29Qb3cobG9nMlN1YnJlZ2lvblNpemUpOwotICAgIHN0YXRpYyBjb25zdCBzaXplX3Qg
cmVnaW9uU2l6ZSA9IFR3b1Bvdyhsb2cyUmVnaW9uU2l6ZSk7Ci0gICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIGVudHJpZXMgPSBUd29Qb3cobG9nMkVudHJpZXMpOwotICAgIENPTVBJTEVfQVNTRVJU
KGVudHJpZXMgPD0gKHNpemVvZihCaXRGaWVsZCkgKiA4KSwgQWxsb2NhdGlvblRhYmxlTGVhZl9l
bnRyaWVzX2ZpdF9pbl9CaXRGaWVsZCk7Ci0KLSAgICBBbGxvY2F0aW9uVGFibGVMZWFmKCkKLSAg
ICAgICAgOiBtX2FsbG9jYXRlZCgwKQotICAgIHsKLSAgICB9Ci0KLSAgICB+QWxsb2NhdGlvblRh
YmxlTGVhZigpCi0gICAgewotICAgICAgICBBU1NFUlQoaXNFbXB0eSgpKTsKLSAgICB9Ci0KLSAg
ICBzaXplX3QgYWxsb2NhdGUoQWxsb2NhdGlvblRhYmxlU2l6ZUNsYXNzJiBzaXplQ2xhc3MpCi0g
ICAgewotICAgICAgICBBU1NFUlQoc2l6ZUNsYXNzLmJsb2NrU2l6ZSgpID09IHN1YnJlZ2lvblNp
emUpOwotICAgICAgICBBU1NFUlQoIWlzRnVsbCgpKTsKLQotICAgICAgICBzaXplX3QgYWxpZ25t
ZW50ID0gc2l6ZUNsYXNzLmJsb2NrQWxpZ25tZW50KCk7Ci0gICAgICAgIHNpemVfdCBjb3VudCA9
IHNpemVDbGFzcy5ibG9ja0NvdW50KCk7Ci0gICAgICAgIC8vIFVzZSB0aGlzIG1hc2sgdG8gY2hl
Y2sgZm9yIHNwYW5zIG9mIGZyZWUgYmxvY2tzLgotICAgICAgICBCaXRGaWVsZCBtYXNrID0gKCgx
dWxsIDw8IGNvdW50KSAtIDEpIDw8IChhbGlnbm1lbnQgLSBjb3VudCk7Ci0KLSAgICAgICAgLy8g
U3RlcCBpbiB1bml0cyBvZiBhbGlnbm1lbnQgc2l6ZS4KLSAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IGVudHJpZXM7IGkgKz0gYWxpZ25tZW50KSB7Ci0gICAgICAgICAgICBpZiAoISht
X2FsbG9jYXRlZCAmIG1hc2spKSB7Ci0gICAgICAgICAgICAgICAgbV9hbGxvY2F0ZWQgfD0gbWFz
azsKLSAgICAgICAgICAgICAgICByZXR1cm4gKGkgKyAoYWxpZ25tZW50IC0gY291bnQpKSA8PCBs
b2cyU3VicmVnaW9uU2l6ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG1hc2sgPDw9IGFs
aWdubWVudDsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gbm90Rm91bmQ7Ci0gICAgfQotCi0g
ICAgdm9pZCBmcmVlKHNpemVfdCBsb2NhdGlvbiwgQWxsb2NhdGlvblRhYmxlU2l6ZUNsYXNzJiBz
aXplQ2xhc3MpCi0gICAgewotICAgICAgICBBU1NFUlQoc2l6ZUNsYXNzLmJsb2NrU2l6ZSgpID09
IHN1YnJlZ2lvblNpemUpOwotCi0gICAgICAgIHNpemVfdCBlbnRyeSA9IGxvY2F0aW9uID4+IGxv
ZzJTdWJyZWdpb25TaXplOwotICAgICAgICBzaXplX3QgY291bnQgPSBzaXplQ2xhc3MuYmxvY2tD
b3VudCgpOwotICAgICAgICBCaXRGaWVsZCBtYXNrID0gKCgxdWxsIDw8IGNvdW50KSAtIDEpIDw8
IGVudHJ5OwotCi0gICAgICAgIEFTU0VSVCgobV9hbGxvY2F0ZWQgJiBtYXNrKSA9PSBtYXNrKTsK
LSAgICAgICAgbV9hbGxvY2F0ZWQgJj0gfm1hc2s7Ci0gICAgfQotCi0gICAgYm9vbCBpc0VtcHR5
KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiAhbV9hbGxvY2F0ZWQ7Ci0gICAgfQotCi0gICAgYm9v
bCBpc0Z1bGwoKQotICAgIHsKLSAgICAgICAgcmV0dXJuICF+bV9hbGxvY2F0ZWQ7Ci0gICAgfQot
Ci0gICAgc3RhdGljIHNpemVfdCBzaXplKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiByZWdpb25T
aXplOwotICAgIH0KLQotICAgIHN0YXRpYyBBbGxvY2F0aW9uVGFibGVTaXplQ2xhc3MgY2xhc3NG
b3JTaXplKHNpemVfdCBzaXplKQotICAgIHsKLSAgICAgICAgcmV0dXJuIEFsbG9jYXRpb25UYWJs
ZVNpemVDbGFzcyhzaXplLCBzdWJyZWdpb25TaXplLCBsb2cyU3VicmVnaW9uU2l6ZSk7Ci0gICAg
fQotCi0jaWZuZGVmIE5ERUJVRwotICAgIHZvaWQgZHVtcChzaXplX3QgcGFyZW50T2Zmc2V0ID0g
MCwgdW5zaWduZWQgaW5kZW50ID0gMCkKLSAgICB7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBpbmRlbnQ7ICsraSkKLSAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiICAgICIp
OwotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiUwOHg6IFslMDE2bGx4XVxuIiwgKGludClwYXJl
bnRPZmZzZXQsIG1fYWxsb2NhdGVkKTsKLSAgICB9Ci0jZW5kaWYKLQotcHJpdmF0ZToKLSAgICBC
aXRGaWVsZCBtX2FsbG9jYXRlZDsKKy8vIEFic3RyYWN0b3IgY2xhc3MgZm9yIHVzZSBpbiBBVkxU
cmVlLgorLy8gTm9kZXMgaW4gdGhlIEFWTFRyZWUgYXJlIG9mIHR5cGUgRnJlZUxpc3RFbnRyeSwg
a2V5ZWQgb24KKy8vIChhbmQgdGh1cyBzb3J0ZWQgYnkpIHRoZWlyIHNpemUuCitzdHJ1Y3QgQVZM
VHJlZUFic3RyYWN0b3JGb3JGcmVlTGlzdCB7CisgICAgdHlwZWRlZiBGcmVlTGlzdEVudHJ5KiBo
YW5kbGU7CisgICAgdHlwZWRlZiBpbnQzMl90IHNpemU7CisgICAgdHlwZWRlZiBzaXplX3Qga2V5
OworCisgICAgaGFuZGxlIGdldF9sZXNzKGhhbmRsZSBoKSB7IHJldHVybiBoLT5sZXNzOyB9Cisg
ICAgdm9pZCBzZXRfbGVzcyhoYW5kbGUgaCwgaGFuZGxlIGxoKSB7IGgtPmxlc3MgPSBsaDsgfQor
ICAgIGhhbmRsZSBnZXRfZ3JlYXRlcihoYW5kbGUgaCkgeyByZXR1cm4gaC0+Z3JlYXRlcjsgfQor
ICAgIHZvaWQgc2V0X2dyZWF0ZXIoaGFuZGxlIGgsIGhhbmRsZSBnaCkgeyBoLT5ncmVhdGVyID0g
Z2g7IH0KKyAgICBpbnQgZ2V0X2JhbGFuY2VfZmFjdG9yKGhhbmRsZSBoKSB7IHJldHVybiBoLT5i
YWxhbmNlRmFjdG9yOyB9CisgICAgdm9pZCBzZXRfYmFsYW5jZV9mYWN0b3IoaGFuZGxlIGgsIGlu
dCBiZikgeyBoLT5iYWxhbmNlRmFjdG9yID0gYmY7IH0KKworICAgIHN0YXRpYyBoYW5kbGUgbnVs
bCgpIHsgcmV0dXJuIDA7IH0KKworICAgIGludCBjb21wYXJlX2tleV9rZXkoa2V5IHZhLCBrZXkg
dmIpIHsgcmV0dXJuIHZhIC0gdmI7IH0KKyAgICBpbnQgY29tcGFyZV9rZXlfbm9kZShrZXkgaywg
aGFuZGxlIGgpIHsgcmV0dXJuIGNvbXBhcmVfa2V5X2tleShrLCBoLT5zaXplKTsgfQorICAgIGlu
dCBjb21wYXJlX25vZGVfbm9kZShoYW5kbGUgaDEsIGhhbmRsZSBoMikgeyByZXR1cm4gY29tcGFy
ZV9rZXlfa2V5KGgxLT5zaXplLCBoMi0+c2l6ZSk7IH0KIH07CiAKKy8vIFVzZWQgdG8gcmV2ZXJz
ZSBzb3J0IGFuIGFycmF5IG9mIEZyZWVMaXN0RW50cnkgcG9pbnRlcnMuCitzdGF0aWMgaW50IHJl
dmVyc2VTb3J0RnJlZUxpc3RFbnRyaWVzQnlQb2ludGVyKGNvbnN0IHZvaWQqIGxlZnRQdHIsIGNv
bnN0IHZvaWQqIHJpZ2h0UHRyKQoreworICAgIEZyZWVMaXN0RW50cnkqIGxlZnQgPSAqKEZyZWVM
aXN0RW50cnkqKilsZWZ0UHRyOworICAgIEZyZWVMaXN0RW50cnkqIHJpZ2h0ID0gKihGcmVlTGlz
dEVudHJ5KiopcmlnaHRQdHI7CiAKLXRlbXBsYXRlPGNsYXNzIE5leHRMZXZlbD4KLWNsYXNzIExh
enlBbGxvY2F0aW9uVGFibGUgewotcHVibGljOgotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBs
b2cyUmVnaW9uU2l6ZSA9IE5leHRMZXZlbDo6bG9nMlJlZ2lvblNpemU7Ci0gICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIGVudHJpZXMgPSBOZXh0TGV2ZWw6OmVudHJpZXM7Ci0KLSAgICBMYXp5QWxs
b2NhdGlvblRhYmxlKCkKLSAgICAgICAgOiBtX3B0cigwKQotICAgIHsKLSAgICB9CisgICAgcmV0
dXJuIChpbnRwdHJfdCkocmlnaHQtPnBvaW50ZXIpIC0gKGludHB0cl90KShsZWZ0LT5wb2ludGVy
KTsKK30KIAotICAgIH5MYXp5QWxsb2NhdGlvblRhYmxlKCkKLSAgICB7Ci0gICAgICAgIEFTU0VS
VChpc0VtcHR5KCkpOwotICAgIH0KKy8vIFVzZWQgdG8gcmV2ZXJzZSBzb3J0IGFuIGFycmF5IG9m
IHBvaW50ZXJzLgorc3RhdGljIGludCByZXZlcnNlU29ydENvbW1vblNpemVkQWxsb2NhdGlvbnMo
Y29uc3Qgdm9pZCogbGVmdFB0ciwgY29uc3Qgdm9pZCogcmlnaHRQdHIpCit7CisgICAgdm9pZCog
bGVmdCA9ICoodm9pZCoqKWxlZnRQdHI7CisgICAgdm9pZCogcmlnaHQgPSAqKHZvaWQqKilyaWdo
dFB0cjsKIAotICAgIHNpemVfdCBhbGxvY2F0ZShBbGxvY2F0aW9uVGFibGVTaXplQ2xhc3MmIHNp
emVDbGFzcykKLSAgICB7Ci0gICAgICAgIGlmICghbV9wdHIpCi0gICAgICAgICAgICBtX3B0ciA9
IG5ldyBOZXh0TGV2ZWwoKTsKLSAgICAgICAgcmV0dXJuIG1fcHRyLT5hbGxvY2F0ZShzaXplQ2xh
c3MpOwotICAgIH0KKyAgICByZXR1cm4gKGludHB0cl90KXJpZ2h0IC0gKGludHB0cl90KWxlZnQ7
Cit9CiAKLSAgICB2b2lkIGZyZWUoc2l6ZV90IGxvY2F0aW9uLCBBbGxvY2F0aW9uVGFibGVTaXpl
Q2xhc3MmIHNpemVDbGFzcykKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3B0cik7Ci0gICAgICAg
IG1fcHRyLT5mcmVlKGxvY2F0aW9uLCBzaXplQ2xhc3MpOwotICAgICAgICBpZiAobV9wdHItPmlz
RW1wdHkoKSkgewotICAgICAgICAgICAgZGVsZXRlIG1fcHRyOwotICAgICAgICAgICAgbV9wdHIg
PSAwOworY2xhc3MgRml4ZWRWTVBvb2xBbGxvY2F0b3IKK3sKKyAgICAvLyBUaGUgZnJlZSBsaXN0
IGlzIHN0b3JlZCBpbiBhIHNvcnRlZCB0cmVlLgorICAgIHR5cGVkZWYgQVZMVHJlZTxBVkxUcmVl
QWJzdHJhY3RvckZvckZyZWVMaXN0LCA0MD4gU2l6ZVNvcnRlZEZyZWVUcmVlOworCisgICAgdm9p
ZCByZWxlYXNlKHZvaWQqIHBvc2l0aW9uLCBzaXplX3Qgc2l6ZSkKKyAgICB7CisgICAgICAgIG1f
YWxsb2NhdGlvbi5kZWNvbW1pdChwb3NpdGlvbiwgc2l6ZSk7CisgICAgICAgIGFkZFRvQ29tbWl0
dGVkQnl0ZUNvdW50KC1zdGF0aWNfY2FzdDxsb25nPihzaXplKSk7CisgICAgfQorCisgICAgdm9p
ZCByZXVzZSh2b2lkKiBwb3NpdGlvbiwgc2l6ZV90IHNpemUpCisgICAgeworICAgICAgICBtX2Fs
bG9jYXRpb24uY29tbWl0KHBvc2l0aW9uLCBzaXplKTsKKyAgICAgICAgYWRkVG9Db21taXR0ZWRC
eXRlQ291bnQoc3RhdGljX2Nhc3Q8bG9uZz4oc2l6ZSkpOworICAgIH0KKworICAgIC8vIEFsbCBh
ZGRpdGlvbiB0byB0aGUgZnJlZSBsaXN0IHNob3VsZCBnbyB0aHJvdWdoIHRoaXMgbWV0aG9kLCBy
YXRoZXIgdGhhbgorICAgIC8vIGNhbGxpbmcgaW5zZXJ0IGRpcmVjdGx5LCB0byBhdm9pZCBtdWx0
aXBsZSBlbnRyaWVzIGJlaW5nIGFkZGVkIHdpdGggdGhlCisgICAgLy8gc2FtZSBrZXkuICBBbGwg
bm9kZXMgYmVpbmcgYWRkZWQgc2hvdWxkIGJlIHNpbmdsZXRvbnMsIHRoZXkgc2hvdWxkIG5vdAor
ICAgIC8vIGFscmVhZHkgYmUgYSBwYXJ0IG9mIGEgY2hhaW4uCisgICAgdm9pZCBhZGRUb0ZyZWVM
aXN0KEZyZWVMaXN0RW50cnkqIGVudHJ5KQorICAgIHsKKyAgICAgICAgQVNTRVJUKCFlbnRyeS0+
bmV4dEVudHJ5KTsKKworICAgICAgICBpZiAoZW50cnktPnNpemUgPT0gbV9jb21tb25TaXplKSB7
CisgICAgICAgICAgICBtX2NvbW1vblNpemVkQWxsb2NhdGlvbnMuYXBwZW5kKGVudHJ5LT5wb2lu
dGVyKTsKKyAgICAgICAgICAgIGRlbGV0ZSBlbnRyeTsKKyAgICAgICAgfSBlbHNlIGlmIChGcmVl
TGlzdEVudHJ5KiBlbnRyeUluRnJlZUxpc3QgPSBtX2ZyZWVMaXN0LnNlYXJjaChlbnRyeS0+c2l6
ZSwgbV9mcmVlTGlzdC5FUVVBTCkpIHsKKyAgICAgICAgICAgIC8vIG1fZnJlZUxpc3QgYWxyZWFk
eSBjb250YWluIGFuIGVudHJ5IGZvciB0aGlzIHNpemUgLSBpbnNlcnQgdGhpcyBub2RlIGludG8g
dGhlIGNoYWluLgorICAgICAgICAgICAgZW50cnktPm5leHRFbnRyeSA9IGVudHJ5SW5GcmVlTGlz
dC0+bmV4dEVudHJ5OworICAgICAgICAgICAgZW50cnlJbkZyZWVMaXN0LT5uZXh0RW50cnkgPSBl
bnRyeTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBtX2ZyZWVMaXN0Lmluc2VydChlbnRy
eSk7CisgICAgfQorCisgICAgLy8gV2UgZG8gbm90IGF0dGVtcHQgdG8gY29hbGVzY2UgYWRkaXRp
b24sIHdoaWNoIG1heSBsZWFkIHRvIGZyYWdtZW50YXRpb247CisgICAgLy8gaW5zdGVhZCB3ZSBw
ZXJpb2RpY2FsbHkgcGVyZm9ybSBhIHN3ZWVwIHRvIHRyeSB0byBjb2FsZXNjZSBuZWlnaGJvcmlu
ZworICAgIC8vIGVudHJpZXMgaW4gbV9mcmVlTGlzdC4gIFByZXNlbnRseSB0aGlzIGlzIHRyaWdn
ZXJlZCBhdCB0aGUgcG9pbnQgMTZNQgorICAgIC8vIG9mIG1lbW9yeSBoYXMgYmVlbiByZWxlYXNl
ZC4KKyAgICB2b2lkIGNvYWxlc2NlRnJlZVNwYWNlKCkKKyAgICB7CisgICAgICAgIFZlY3RvcjxG
cmVlTGlzdEVudHJ5Kj4gZnJlZUxpc3RFbnRyaWVzOworICAgICAgICBTaXplU29ydGVkRnJlZVRy
ZWU6Okl0ZXJhdG9yIGl0ZXI7CisgICAgICAgIGl0ZXIuc3RhcnRfaXRlcl9sZWFzdChtX2ZyZWVM
aXN0KTsKKworICAgICAgICAvLyBFbXB0eSBtX2ZyZWVMaXN0IGludG8gYSBWZWN0b3IuCisgICAg
ICAgIGZvciAoRnJlZUxpc3RFbnRyeSogZW50cnk7IChlbnRyeSA9ICppdGVyKTsgKytpdGVyKSB7
CisgICAgICAgICAgICAvLyBFYWNoIGVudHJ5IGluIG1fZnJlZUxpc3QgbWlnaHQgY29ycmVzcG9u
ZCB0byBtdWx0aXBsZQorICAgICAgICAgICAgLy8gZnJlZSBjaHVua3Mgb2YgbWVtb3J5IChvZiB0
aGUgc2FtZSBzaXplKS4gIFdhbGsgdGhlIGNoYWluCisgICAgICAgICAgICAvLyAodGhpcyBpcyBs
aWtlbHkgb2YgY291cnNlIG9ubHkgYmUgb25lIGVudHJ5IGxvbmchKSBhZGRpbmcKKyAgICAgICAg
ICAgIC8vIGVhY2ggZW50cnkgdG8gdGhlIFZlY3RvciAoYXQgcmVzZXRpbmcgdGhlIG5leHQgaW4g
Y2hhaW4KKyAgICAgICAgICAgIC8vIHBvaW50ZXIgdG8gc2VwYXJhdGUgZWFjaCBub2RlIG91dCku
CisgICAgICAgICAgICBGcmVlTGlzdEVudHJ5KiBuZXh0OworICAgICAgICAgICAgZG8geworICAg
ICAgICAgICAgICAgIG5leHQgPSBlbnRyeS0+bmV4dEVudHJ5OworICAgICAgICAgICAgICAgIGVu
dHJ5LT5uZXh0RW50cnkgPSAwOworICAgICAgICAgICAgICAgIGZyZWVMaXN0RW50cmllcy5hcHBl
bmQoZW50cnkpOworICAgICAgICAgICAgfSB3aGlsZSAoKGVudHJ5ID0gbmV4dCkpOwogICAgICAg
ICB9Ci0gICAgfQotCi0gICAgYm9vbCBpc0VtcHR5KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiAh
bV9wdHI7Ci0gICAgfQotCi0gICAgYm9vbCBpc0Z1bGwoKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IG1fcHRyICYmIG1fcHRyLT5pc0Z1bGwoKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgc2l6ZV90IHNp
emUoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIE5leHRMZXZlbDo6c2l6ZSgpOwotICAgIH0KLQot
I2lmbmRlZiBOREVCVUcKLSAgICB2b2lkIGR1bXAoc2l6ZV90IHBhcmVudE9mZnNldCA9IDAsIHVu
c2lnbmVkIGluZGVudCA9IDApCi0gICAgewotICAgICAgICBBU1NFUlQobV9wdHIpOwotICAgICAg
ICBtX3B0ci0+ZHVtcChwYXJlbnRPZmZzZXQsIGluZGVudCk7Ci0gICAgfQotI2VuZGlmCi0KLSAg
ICBzdGF0aWMgQWxsb2NhdGlvblRhYmxlU2l6ZUNsYXNzIGNsYXNzRm9yU2l6ZShzaXplX3Qgc2l6
ZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBOZXh0TGV2ZWw6OmNsYXNzRm9yU2l6ZShzaXplKTsK
LSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgTmV4dExldmVsKiBtX3B0cjsKLX07Ci0KLXRlbXBsYXRl
PGNsYXNzIE5leHRMZXZlbCwgdW5zaWduZWQgbG9nMkVudHJpZXM+Ci1jbGFzcyBBbGxvY2F0aW9u
VGFibGVEaXJlY3RvcnkgewotICAgIHR5cGVkZWYgdWludDY0X3QgQml0RmllbGQ7Ci0KLXB1Ymxp
YzoKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbG9nMlN1YnJlZ2lvblNpemUgPSBOZXh0TGV2
ZWw6OmxvZzJSZWdpb25TaXplOwotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBsb2cyUmVnaW9u
U2l6ZSA9IGxvZzJTdWJyZWdpb25TaXplICsgbG9nMkVudHJpZXM7Ci0KLSAgICBzdGF0aWMgY29u
c3Qgc2l6ZV90IHN1YnJlZ2lvblNpemUgPSBUd29Qb3cobG9nMlN1YnJlZ2lvblNpemUpOwotICAg
IHN0YXRpYyBjb25zdCBzaXplX3QgcmVnaW9uU2l6ZSA9IFR3b1Bvdyhsb2cyUmVnaW9uU2l6ZSk7
Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGVudHJpZXMgPSBUd29Qb3cobG9nMkVudHJpZXMp
OwotICAgIENPTVBJTEVfQVNTRVJUKGVudHJpZXMgPD0gKHNpemVvZihCaXRGaWVsZCkgKiA4KSwg
QWxsb2NhdGlvblRhYmxlRGlyZWN0b3J5X2VudHJpZXNfZml0X2luX0JpdEZpZWxkKTsKLQotICAg
IEFsbG9jYXRpb25UYWJsZURpcmVjdG9yeSgpCi0gICAgICAgIDogbV9mdWxsKDApCi0gICAgICAg
ICwgbV9oYXNTdWJhbGxvY2F0aW9uKDApCi0gICAgewotICAgIH0KLQotICAgIH5BbGxvY2F0aW9u
VGFibGVEaXJlY3RvcnkoKQotICAgIHsKLSAgICAgICAgQVNTRVJUKGlzRW1wdHkoKSk7Ci0gICAg
fQotCi0gICAgc2l6ZV90IGFsbG9jYXRlKEFsbG9jYXRpb25UYWJsZVNpemVDbGFzcyYgc2l6ZUNs
YXNzKQotICAgIHsKLSAgICAgICAgQVNTRVJUKHNpemVDbGFzcy5ibG9ja1NpemUoKSA8PSBzdWJy
ZWdpb25TaXplKTsKLSAgICAgICAgQVNTRVJUKCFpc0Z1bGwoKSk7Ci0KLSAgICAgICAgaWYgKHNp
emVDbGFzcy5ibG9ja1NpemUoKSA8IHN1YnJlZ2lvblNpemUpIHsKLSAgICAgICAgICAgIEJpdEZp
ZWxkIGJpdCA9IDE7Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZW50cmll
czsgKytpLCBiaXQgKz0gYml0KSB7Ci0gICAgICAgICAgICAgICAgaWYgKG1fZnVsbCAmIGJpdCkK
KyAgICAgICAgLy8gQWxsIGVudHJpZXMgYXJlIG5vdyBpbiB0aGUgVmVjdG9yOyBwdXJnZSB0aGUg
dHJlZS4KKyAgICAgICAgbV9mcmVlTGlzdC5wdXJnZSgpOworCisgICAgICAgIC8vIFJldmVyc2Ut
c29ydCB0aGUgZnJlZUxpc3RFbnRyaWVzIGFuZCBtX2NvbW1vblNpemVkQWxsb2NhdGlvbnMgVmVj
dG9ycy4KKyAgICAgICAgLy8gV2UgcmV2ZXJzZS1zb3J0IHNvIHRoYXQgd2UgY2FuIGxvZ2ljYWxs
eSB3b3JrIGZvcndhcmRzIHRocm91Z2ggbWVtb3J5LAorICAgICAgICAvLyB3aGlsc3QgcG9wcGlu
ZyBpdGVtcyBvZmYgdGhlIGVuZCBvZiB0aGUgVmVjdG9ycyB1c2luZyBsYXN0KCkgYW5kIHJlbW92
ZUxhc3QoKS4KKyAgICAgICAgcXNvcnQoZnJlZUxpc3RFbnRyaWVzLmJlZ2luKCksIGZyZWVMaXN0
RW50cmllcy5zaXplKCksIHNpemVvZihGcmVlTGlzdEVudHJ5KiksIHJldmVyc2VTb3J0RnJlZUxp
c3RFbnRyaWVzQnlQb2ludGVyKTsKKyAgICAgICAgcXNvcnQobV9jb21tb25TaXplZEFsbG9jYXRp
b25zLmJlZ2luKCksIG1fY29tbW9uU2l6ZWRBbGxvY2F0aW9ucy5zaXplKCksIHNpemVvZih2b2lk
KiksIHJldmVyc2VTb3J0Q29tbW9uU2l6ZWRBbGxvY2F0aW9ucyk7CisKKyAgICAgICAgLy8gVGhl
IGVudHJpZXMgZnJvbSBtX2NvbW1vblNpemVkQWxsb2NhdGlvbnMgdGhhdCBjYW5ub3QgYmUKKyAg
ICAgICAgLy8gY29hbGVzY2VkIGludG8gbGFyZ2VyIGNodW5rcyB3aWxsIGJlIHRlbXBvcmFyaWx5
IHN0b3JlZCBoZXJlLgorICAgICAgICBWZWN0b3I8dm9pZCo+IG5ld0NvbW1vblNpemVkQWxsb2Nh
dGlvbnM7CisKKyAgICAgICAgLy8gS2VlcCBwcm9jZXNzaW5nIHNvIGxvbmcgYXMgZW50cmllcyBy
ZW1haW4gaW4gZWl0aGVyIG9mIHRoZSB2ZWN0b3JzLgorICAgICAgICB3aGlsZSAoZnJlZUxpc3RF
bnRyaWVzLnNpemUoKSB8fCBtX2NvbW1vblNpemVkQWxsb2NhdGlvbnMuc2l6ZSgpKSB7CisgICAg
ICAgICAgICAvLyBXZSdyZSBnb2luZyB0byB0cnkgdG8gZmluZCBhIEZyZWVMaXN0RW50cnkgbm9k
ZSB0aGF0IHdlIGNhbiBjb2FsZXNjZSBvbnRvLgorICAgICAgICAgICAgRnJlZUxpc3RFbnRyeSog
Y29hbGVzY2lvbkVudHJ5ID0gMDsKKworICAgICAgICAgICAgLy8gSXMgdGhlIGxvd2VzdCBhZGRy
ZXNzZWQgY2h1bmsgb2YgZnJlZSBtZW1vcnkgb2YgY29tbW9uLXNpemUsIG9yIGlzIGl0IGluIHRo
ZSBmcmVlIGxpc3Q/CisgICAgICAgICAgICBpZiAobV9jb21tb25TaXplZEFsbG9jYXRpb25zLnNp
emUoKSAmJiAoIWZyZWVMaXN0RW50cmllcy5zaXplKCkgfHwgKG1fY29tbW9uU2l6ZWRBbGxvY2F0
aW9ucy5sYXN0KCkgPCBmcmVlTGlzdEVudHJpZXMubGFzdCgpLT5wb2ludGVyKSkpIHsKKyAgICAg
ICAgICAgICAgICAvLyBQb3AgYW4gaXRlbSBmcm9tIHRoZSBtX2NvbW1vblNpemVkQWxsb2NhdGlv
bnMgdmVjdG9yIC0gdGhpcyBpcyB0aGUgbG93ZXN0CisgICAgICAgICAgICAgICAgLy8gYWRkcmVz
c2VkIGZyZWUgY2h1bmsuICBGaW5kIG91dCB0aGUgYmVnaW4gYW5kIGVuZCBhZGRyZXNzZXMgb2Yg
dGhlIG1lbW9yeSBjaHVuay4KKyAgICAgICAgICAgICAgICB2b2lkKiBiZWdpbiA9IG1fY29tbW9u
U2l6ZWRBbGxvY2F0aW9ucy5sYXN0KCk7CisgICAgICAgICAgICAgICAgdm9pZCogZW5kID0gKHZv
aWQqKSgoaW50cHRyX3QpYmVnaW4gKyBtX2NvbW1vblNpemUpOworICAgICAgICAgICAgICAgIG1f
Y29tbW9uU2l6ZWRBbGxvY2F0aW9ucy5yZW1vdmVMYXN0KCk7CisKKyAgICAgICAgICAgICAgICAv
LyBUcnkgdG8gZmluZCBhbm90aGVyIGZyZWUgY2h1bmsgYWJ1dHRpbmcgb250byB0aGUgZW5kIG9m
IHRoZSBvbmUgd2UgaGF2ZSBhbHJlYWR5IGZvdW5kLgorICAgICAgICAgICAgICAgIGlmIChmcmVl
TGlzdEVudHJpZXMuc2l6ZSgpICYmIChmcmVlTGlzdEVudHJpZXMubGFzdCgpLT5wb2ludGVyID09
IGVuZCkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gVGhlcmUgaXMgYW4gZXhpc3RpbmcgRnJl
ZUxpc3RFbnRyeSBmb3IgdGhlIG5leHQgY2h1bmsgb2YgbWVtb3J5IQorICAgICAgICAgICAgICAg
ICAgICAvLyB3ZSBjYW4gcmV1c2UgdGhpcy4gIFBvcCBpdCBvZmYgdGhlIGVuZCBvZiBtX2ZyZWVM
aXN0LgorICAgICAgICAgICAgICAgICAgICBjb2FsZXNjaW9uRW50cnkgPSBmcmVlTGlzdEVudHJp
ZXMubGFzdCgpOworICAgICAgICAgICAgICAgICAgICBmcmVlTGlzdEVudHJpZXMucmVtb3ZlTGFz
dCgpOworICAgICAgICAgICAgICAgICAgICAvLyBVcGRhdGUgdGhlIGV4aXN0aW5nIG5vZGUgdG8g
aW5jbHVkZSB0aGUgY29tbW9uLXNpemVkIGNodW5rIHRoYXQgd2UgYWxzbyBmb3VuZC4gCisgICAg
ICAgICAgICAgICAgICAgIGNvYWxlc2Npb25FbnRyeS0+cG9pbnRlciA9ICh2b2lkKikoKGludHB0
cl90KWNvYWxlc2Npb25FbnRyeS0+cG9pbnRlciAtIG1fY29tbW9uU2l6ZSk7CisgICAgICAgICAg
ICAgICAgICAgIGNvYWxlc2Npb25FbnRyeS0+c2l6ZSArPSBtX2NvbW1vblNpemU7CisgICAgICAg
ICAgICAgICAgfSBlbHNlIGlmIChtX2NvbW1vblNpemVkQWxsb2NhdGlvbnMuc2l6ZSgpICYmICht
X2NvbW1vblNpemVkQWxsb2NhdGlvbnMubGFzdCgpID09IGVuZCkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgLy8gVGhlcmUgaXMgYSBzZWNvbmQgY29tbW9uLXNpemVkIGNodW5rIHRoYXQgY2FuIGJl
IGNvYWxlc2NlZC4KKyAgICAgICAgICAgICAgICAgICAgLy8gQWxsb2NhdGUgYSBuZXcgbm9kZS4K
KyAgICAgICAgICAgICAgICAgICAgbV9jb21tb25TaXplZEFsbG9jYXRpb25zLnJlbW92ZUxhc3Qo
KTsKKyAgICAgICAgICAgICAgICAgICAgY29hbGVzY2lvbkVudHJ5ID0gbmV3IEZyZWVMaXN0RW50
cnkoYmVnaW4sIDIgKiBtX2NvbW1vblNpemUpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgICAgIC8vIE5vcGUgLSB0aGlzIHBvb3IgbGl0dGxlIGd1eSBpcyBhbGwg
b24gaGlzIG93bi4gOi0oCisgICAgICAgICAgICAgICAgICAgIC8vIEFkZCBoaW0gaW50byB0aGUg
bmV3Q29tbW9uU2l6ZWRBbGxvY2F0aW9ucyB2ZWN0b3IgZm9yIG5vdywgd2UncmUKKyAgICAgICAg
ICAgICAgICAgICAgLy8gZ29pbmcgdG8gZW5kIHVwIGFkZGluZyBoaW0gYmFjayBpbnRvIHRoZSBt
X2NvbW1vblNpemVkQWxsb2NhdGlvbnMKKyAgICAgICAgICAgICAgICAgICAgLy8gbGlzdCB3aGVu
IHdlJ3JlIGRvbmUuCisgICAgICAgICAgICAgICAgICAgIG5ld0NvbW1vblNpemVkQWxsb2NhdGlv
bnMuYXBwZW5kKGJlZ2luKTsKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAg
ICAgICAgICAgc2l6ZV90IGxvY2F0aW9uID0gbV9zdWJhbGxvY2F0aW9uc1tpXS5hbGxvY2F0ZShz
aXplQ2xhc3MpOwotICAgICAgICAgICAgICAgIGlmIChsb2NhdGlvbiAhPSBub3RGb3VuZCkgewot
ICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGlzIGRpZG4ndCBhbHJlYWR5IGhhdmUgYSBzdWJy
ZWdpb24sIGl0IGRvZXMgbm93IQotICAgICAgICAgICAgICAgICAgICBtX2hhc1N1YmFsbG9jYXRp
b24gfD0gYml0OwotICAgICAgICAgICAgICAgICAgICAvLyBNaXJyb3IgdGhlIHN1YmFsbG9jYXRp
b24ncyBmdWxsIGJpdC4KLSAgICAgICAgICAgICAgICAgICAgaWYgKG1fc3ViYWxsb2NhdGlvbnNb
aV0uaXNGdWxsKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBtX2Z1bGwgfD0gYml0OwotICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gKGkgKiBzdWJyZWdpb25TaXplKSB8IGxvY2F0aW9uOwog
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
QVNTRVJUKGZyZWVMaXN0RW50cmllcy5zaXplKCkpOworICAgICAgICAgICAgICAgIEFTU0VSVCgh
bV9jb21tb25TaXplZEFsbG9jYXRpb25zLnNpemUoKSB8fCAoZnJlZUxpc3RFbnRyaWVzLmxhc3Qo
KS0+cG9pbnRlciA8IG1fY29tbW9uU2l6ZWRBbGxvY2F0aW9ucy5sYXN0KCkpKTsKKyAgICAgICAg
ICAgICAgICAvLyBUaGUgbG93ZXN0IGFkZHJlc3NlZCBpdGVtIGlzIGZyb20gbV9mcmVlTGlzdDsg
cG9wIGl0IGZyb20gdGhlIFZlY3Rvci4KKyAgICAgICAgICAgICAgICBjb2FsZXNjaW9uRW50cnkg
PSBmcmVlTGlzdEVudHJpZXMubGFzdCgpOworICAgICAgICAgICAgICAgIGZyZWVMaXN0RW50cmll
cy5yZW1vdmVMYXN0KCk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gbm90Rm91
bmQ7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBBIGJsb2NrIGlzIGFsbG9jYXRlZCBpZiBlaXRo
ZXIgaXQgaXMgZnVsbHkgYWxsb2NhdGVkIG9yIGNvbnRhaW5zIHN1YmFsbG9jYXRpb25zLgotICAg
ICAgICBCaXRGaWVsZCBhbGxvY2F0ZWQgPSBtX2Z1bGwgfCBtX2hhc1N1YmFsbG9jYXRpb247Ci0K
LSAgICAgICAgc2l6ZV90IGFsaWdubWVudCA9IHNpemVDbGFzcy5ibG9ja0FsaWdubWVudCgpOwot
ICAgICAgICBzaXplX3QgY291bnQgPSBzaXplQ2xhc3MuYmxvY2tDb3VudCgpOwotICAgICAgICAv
LyBVc2UgdGhpcyBtYXNrIHRvIGNoZWNrIGZvciBzcGFucyBvZiBmcmVlIGJsb2Nrcy4KLSAgICAg
ICAgQml0RmllbGQgbWFzayA9ICgoMXVsbCA8PCBjb3VudCkgLSAxKSA8PCAoYWxpZ25tZW50IC0g
Y291bnQpOwotCi0gICAgICAgIC8vIFN0ZXAgaW4gdW5pdHMgb2YgYWxpZ25tZW50IHNpemUuCi0g
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBlbnRyaWVzOyBpICs9IGFsaWdubWVudCkg
ewotICAgICAgICAgICAgaWYgKCEoYWxsb2NhdGVkICYgbWFzaykpIHsKLSAgICAgICAgICAgICAg
ICBtX2Z1bGwgfD0gbWFzazsKLSAgICAgICAgICAgICAgICByZXR1cm4gKGkgKyAoYWxpZ25tZW50
IC0gY291bnQpKSA8PCBsb2cyU3VicmVnaW9uU2l6ZTsKKyAgICAgICAgICAgIAorICAgICAgICAg
ICAgLy8gUmlnaHQsIHdlIGhhdmUgYSBGcmVlTGlzdEVudHJ5LCB3ZSBqdXN0IG5lZWQgY2hlY2sg
aWYgdGhlcmUgaXMgYW55dGhpbmcgZWxzZQorICAgICAgICAgICAgLy8gdG8gY29hbGVzY2Ugb250
byB0aGUgZW5kLgorICAgICAgICAgICAgQVNTRVJUKGNvYWxlc2Npb25FbnRyeSk7CisgICAgICAg
ICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgICAgIC8vIENhbGN1bGF0ZSB0aGUgZW5k
IGFkZHJlc3Mgb2YgdGhlIGNodW5rIHdlIGhhdmUgZm91bmQgc28gZmFyLgorICAgICAgICAgICAg
ICAgIHZvaWQqIGVuZCA9ICh2b2lkKikoKGludHB0cl90KWNvYWxlc2Npb25FbnRyeS0+cG9pbnRl
ciAtIGNvYWxlc2Npb25FbnRyeS0+c2l6ZSk7CisKKyAgICAgICAgICAgICAgICAvLyBJcyB0aGVy
ZSBhbm90aGVyIGNodW5rIGFkamFjZW50IHRvIHRoZSBvbmUgd2UgYWxyZWFkeSBoYXZlPworICAg
ICAgICAgICAgICAgIGlmIChmcmVlTGlzdEVudHJpZXMuc2l6ZSgpICYmIChmcmVlTGlzdEVudHJp
ZXMubGFzdCgpLT5wb2ludGVyID09IGVuZCkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gWWVz
IC0gYW5vdGhlciBGcmVlTGlzdEVudHJ5IC1wb3AgaXQgZnJvbSB0aGUgbGlzdC4KKyAgICAgICAg
ICAgICAgICAgICAgRnJlZUxpc3RFbnRyeSogY29hbGVzY2VlID0gZnJlZUxpc3RFbnRyaWVzLmxh
c3QoKTsKKyAgICAgICAgICAgICAgICAgICAgZnJlZUxpc3RFbnRyaWVzLnJlbW92ZUxhc3QoKTsK
KyAgICAgICAgICAgICAgICAgICAgLy8gQWRkIGl0J3Mgc2l6ZSBvbnRvIG91ciBleGlzdGluZyBu
b2RlLgorICAgICAgICAgICAgICAgICAgICBjb2FsZXNjaW9uRW50cnktPnNpemUgKz0gY29hbGVz
Y2VlLT5zaXplOworICAgICAgICAgICAgICAgICAgICBkZWxldGUgY29hbGVzY2VlOworICAgICAg
ICAgICAgICAgIH0gZWxzZSBpZiAobV9jb21tb25TaXplZEFsbG9jYXRpb25zLnNpemUoKSAmJiAo
bV9jb21tb25TaXplZEFsbG9jYXRpb25zLmxhc3QoKSA9PSBlbmQpKSB7CisgICAgICAgICAgICAg
ICAgICAgIC8vIFdlIGNhbiBjb2FsZXNjZSB0aGUgbmV4dCBjb21tb24tc2l6ZWQgY2h1bmsuCisg
ICAgICAgICAgICAgICAgICAgIG1fY29tbW9uU2l6ZWRBbGxvY2F0aW9ucy5yZW1vdmVMYXN0KCk7
CisgICAgICAgICAgICAgICAgICAgIGNvYWxlc2Npb25FbnRyeS0+c2l6ZSArPSBtX2NvbW1vblNp
emU7CisgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOyAv
LyBOb3BlLCBub3RoaW5nIHRvIGJlIGFkZGVkIC0gc3RvcCBoZXJlLgogICAgICAgICAgICAgfQot
ICAgICAgICAgICAgbWFzayA8PD0gYWxpZ25tZW50OwotICAgICAgICB9Ci0gICAgICAgIHJldHVy
biBub3RGb3VuZDsKLSAgICB9CiAKLSAgICB2b2lkIGZyZWUoc2l6ZV90IGxvY2F0aW9uLCBBbGxv
Y2F0aW9uVGFibGVTaXplQ2xhc3MmIHNpemVDbGFzcykKLSAgICB7Ci0gICAgICAgIEFTU0VSVChz
aXplQ2xhc3MuYmxvY2tTaXplKCkgPD0gc3VicmVnaW9uU2l6ZSk7Ci0KLSAgICAgICAgc2l6ZV90
IGVudHJ5ID0gbG9jYXRpb24gPj4gbG9nMlN1YnJlZ2lvblNpemU7Ci0KLSAgICAgICAgaWYgKHNp
emVDbGFzcy5ibG9ja1NpemUoKSA8IHN1YnJlZ2lvblNpemUpIHsKLSAgICAgICAgICAgIEJpdEZp
ZWxkIGJpdCA9IDF1bGwgPDwgZW50cnk7Ci0gICAgICAgICAgICBtX3N1YmFsbG9jYXRpb25zW2Vu
dHJ5XS5mcmVlKGxvY2F0aW9uICYgKHN1YnJlZ2lvblNpemUgLSAxKSwgc2l6ZUNsYXNzKTsKLSAg
ICAgICAgICAgIC8vIENoZWNrIGlmIHRoZSBzdWJhbGxvY2F0aW9uIGlzIG5vdyBlbXB0eS4KLSAg
ICAgICAgICAgIGlmIChtX3N1YmFsbG9jYXRpb25zW2VudHJ5XS5pc0VtcHR5KCkpCi0gICAgICAg
ICAgICAgICAgbV9oYXNTdWJhbGxvY2F0aW9uICY9IH5iaXQ7Ci0gICAgICAgICAgICAvLyBObyBu
ZWVkIHRvIGNoZWNrLCBpdCBjbGVhcmx5IGlzbid0IGZ1bGwgYW55IG1vcmUhCi0gICAgICAgICAg
ICBtX2Z1bGwgJj0gfmJpdDsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHNpemVfdCBj
b3VudCA9IHNpemVDbGFzcy5ibG9ja0NvdW50KCk7Ci0gICAgICAgICAgICBCaXRGaWVsZCBtYXNr
ID0gKCgxdWxsIDw8IGNvdW50KSAtIDEpIDw8IGVudHJ5OwotICAgICAgICAgICAgQVNTRVJUKCht
X2Z1bGwgJiBtYXNrKSA9PSBtYXNrKTsKLSAgICAgICAgICAgIEFTU0VSVCghKG1faGFzU3ViYWxs
b2NhdGlvbiAmIG1hc2spKTsKLSAgICAgICAgICAgIG1fZnVsbCAmPSB+bWFzazsKKyAgICAgICAg
ICAgIC8vIFdlJ3ZlIGNvYWxlc2NlZCBldmVyeXRoaW5nIHdlIGNhbiBvbnRvIHRoZSBjdXJyZW50
IGNodW5rLgorICAgICAgICAgICAgLy8gQWRkIGl0IGJhY2sgaW50byBtX2ZyZWVMaXN0LgorICAg
ICAgICAgICAgYWRkVG9GcmVlTGlzdChjb2FsZXNjaW9uRW50cnkpOwogICAgICAgICB9Ci0gICAg
fQotCi0gICAgYm9vbCBpc0VtcHR5KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiAhKG1fZnVsbCB8
IG1faGFzU3ViYWxsb2NhdGlvbik7Ci0gICAgfQogCi0gICAgYm9vbCBpc0Z1bGwoKQotICAgIHsg
ICAKLSAgICAgICAgcmV0dXJuICF+bV9mdWxsOworICAgICAgICAvLyBBbGwgY2h1bmtzIG9mIGZy
ZWUgbWVtb3J5IGxhcmdlciB0aGFuIG1fY29tbW9uU2l6ZSBzaG91bGQgYmUKKyAgICAgICAgLy8g
YmFjayBpbiBtX2ZyZWVMaXN0IGJ5IG5vdy4gIEFsbCB0aGF0IHJlbWFpbnMgdG8gYmUgZG9uZSBp
cyB0bworICAgICAgICAvLyBjb3B5IHRoZSBjb250ZW50cyBvbiB0aGUgbmV3Q29tbW9uU2l6ZWRB
bGxvY2F0aW9ucyBiYWNrIGludG8KKyAgICAgICAgLy8gdGhlIG1fY29tbW9uU2l6ZWRBbGxvY2F0
aW9ucyBWZWN0b3IuCisgICAgICAgIEFTU0VSVChtX2NvbW1vblNpemVkQWxsb2NhdGlvbnMuc2l6
ZSgpID09IDApOworICAgICAgICBtX2NvbW1vblNpemVkQWxsb2NhdGlvbnMuYXBwZW5kKG5ld0Nv
bW1vblNpemVkQWxsb2NhdGlvbnMpOwogICAgIH0KIAotICAgIHN0YXRpYyBzaXplX3Qgc2l6ZSgp
Ci0gICAgewotICAgICAgICByZXR1cm4gcmVnaW9uU2l6ZTsKLSAgICB9Ci0KLSAgICBzdGF0aWMg
QWxsb2NhdGlvblRhYmxlU2l6ZUNsYXNzIGNsYXNzRm9yU2l6ZShzaXplX3Qgc2l6ZSkKLSAgICB7
Ci0gICAgICAgIGlmIChzaXplIDwgc3VicmVnaW9uU2l6ZSkgewotICAgICAgICAgICAgQWxsb2Nh
dGlvblRhYmxlU2l6ZUNsYXNzIHNpemVDbGFzcyA9IE5leHRMZXZlbDo6Y2xhc3NGb3JTaXplKHNp
emUpOwotICAgICAgICAgICAgaWYgKHNpemVDbGFzcy5zaXplKCkgPCBOZXh0TGV2ZWw6OnNpemUo
KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gc2l6ZUNsYXNzOwotICAgICAgICB9Ci0gICAgICAg
IHJldHVybiBBbGxvY2F0aW9uVGFibGVTaXplQ2xhc3Moc2l6ZSwgc3VicmVnaW9uU2l6ZSwgbG9n
MlN1YnJlZ2lvblNpemUpOwotICAgIH0KLQotI2lmbmRlZiBOREVCVUcKLSAgICB2b2lkIGR1bXAo
c2l6ZV90IHBhcmVudE9mZnNldCA9IDAsIHVuc2lnbmVkIGluZGVudCA9IDApCi0gICAgewotICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaW5kZW50OyArK2kpCi0gICAgICAgICAgICBm
cHJpbnRmKHN0ZGVyciwgIiAgICAiKTsKLSAgICAgICAgZnByaW50ZihzdGRlcnIsICIlMDh4OiBb
IiwgKGludClwYXJlbnRPZmZzZXQpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
ZW50cmllczsgKytpKSB7Ci0gICAgICAgICAgICBCaXRGaWVsZCBiaXQgPSAxdWxsIDw8IGk7Ci0g
ICAgICAgICAgICBjaGFyIGMgPSBtX2hhc1N1YmFsbG9jYXRpb24gJiBiaXQKLSAgICAgICAgICAg
ICAgICA/IChtX2Z1bGwgJiBiaXQgPyAnTicgOiAnbicpCi0gICAgICAgICAgICAgICAgOiAobV9m
dWxsICYgYml0ID8gJ0YnIDogJy0nKTsKLSAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJWMi
LCBjKTsKLSAgICAgICAgfQotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIl1cbiIpOwotCi0gICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBlbnRyaWVzOyArK2kpIHsKLSAgICAgICAgICAg
IEJpdEZpZWxkIGJpdCA9IDF1bGwgPDwgaTsKLSAgICAgICAgICAgIHNpemVfdCBvZmZzZXQgPSBw
YXJlbnRPZmZzZXQgfCAoc3VicmVnaW9uU2l6ZSAqIGkpOwotICAgICAgICAgICAgaWYgKG1faGFz
U3ViYWxsb2NhdGlvbiAmIGJpdCkKLSAgICAgICAgICAgICAgICBtX3N1YmFsbG9jYXRpb25zW2ld
LmR1bXAob2Zmc2V0LCBpbmRlbnQgKyAxKTsKLSAgICAgICAgfQotICAgIH0KLSNlbmRpZgotCi1w
cml2YXRlOgotICAgIE5leHRMZXZlbCBtX3N1YmFsbG9jYXRpb25zW2VudHJpZXNdOwotICAgIC8v
IFN1YnJlZ2lvbnMgZXhpc3QgaW4gb25lIG9mIGZvdXIgc3RhdGVzOgotICAgIC8vICgxKSBlbXB0
eSAoYm90aCBiaXRzIGNsZWFyKQotICAgIC8vICgyKSBmdWxseSBhbGxvY2F0ZWQgYXMgYSBzaW5n
bGUgYWxsb2NhdGlvbiAobV9mdWxsIHNldCkKLSAgICAvLyAoMykgcGFydGlhbGx5IGFsbG9jYXRl
ZCB0aHJvdWdoIHN1YmFsbG9jYXRpb25zIChtX2hhc1N1YmFsbG9jYXRpb24gc2V0KQotICAgIC8v
ICg0KSBmdWxseSBhbGxvY2F0ZWQgdGhyb3VnaCBzdWJhbGxvY2F0aW9ucyAoYm90aCBiaXRzIHNl
dCkKLSAgICBCaXRGaWVsZCBtX2Z1bGw7Ci0gICAgQml0RmllbGQgbV9oYXNTdWJhbGxvY2F0aW9u
OwotfTsKLQotCi10eXBlZGVmIEFsbG9jYXRpb25UYWJsZUxlYWY8Nj4gUGFnZVRhYmxlczI1NktC
OwotdHlwZWRlZiBBbGxvY2F0aW9uVGFibGVEaXJlY3Rvcnk8UGFnZVRhYmxlczI1NktCLCA2PiBQ
YWdlVGFibGVzMTZNQjsKLXR5cGVkZWYgQWxsb2NhdGlvblRhYmxlRGlyZWN0b3J5PExhenlBbGxv
Y2F0aW9uVGFibGU8UGFnZVRhYmxlczE2TUI+LCAxPiBQYWdlVGFibGVzMzJNQjsKLXR5cGVkZWYg
QWxsb2NhdGlvblRhYmxlRGlyZWN0b3J5PExhenlBbGxvY2F0aW9uVGFibGU8UGFnZVRhYmxlczE2
TUI+LCA2PiBQYWdlVGFibGVzMUdCOwotCi0jaWYgQ1BVKEFSTSkKLXR5cGVkZWYgUGFnZVRhYmxl
czE2TUIgRml4ZWRWTVBvb2xQYWdlVGFibGVzOwotI2VsaWYgQ1BVKFg4Nl82NCkgJiYgIU9TKExJ
TlVYKQotdHlwZWRlZiBQYWdlVGFibGVzMUdCIEZpeGVkVk1Qb29sUGFnZVRhYmxlczsKLSNlbHNl
Ci10eXBlZGVmIFBhZ2VUYWJsZXMzMk1CIEZpeGVkVk1Qb29sUGFnZVRhYmxlczsKLSNlbmRpZgot
Ci0KLWNsYXNzIEZpeGVkVk1Qb29sQWxsb2NhdG9yCi17CiBwdWJsaWM6Ci0gICAgRml4ZWRWTVBv
b2xBbGxvY2F0b3IoKQorCisgICAgRml4ZWRWTVBvb2xBbGxvY2F0b3Ioc2l6ZV90IGNvbW1vblNp
emUsIHNpemVfdCB0b3RhbEhlYXBTaXplKQorICAgICAgICA6IG1fY29tbW9uU2l6ZShjb21tb25T
aXplKQorICAgICAgICAsIG1fY291bnRGcmVlZFNpbmNlTGFzdENvYWxlc2NlKDApCiAgICAgewot
ICAgICAgICBBU1NFUlQoUGFnZVRhYmxlczI1NktCOjpzaXplKCkgPT0gMjU2ICogMTAyNCk7Ci0g
ICAgICAgIEFTU0VSVChQYWdlVGFibGVzMTZNQjo6c2l6ZSgpID09IDE2ICogMTAyNCAqIDEwMjQp
OwotICAgICAgICBBU1NFUlQoUGFnZVRhYmxlczMyTUI6OnNpemUoKSA9PSAzMiAqIDEwMjQgKiAx
MDI0KTsKLSAgICAgICAgQVNTRVJUKFBhZ2VUYWJsZXMxR0I6OnNpemUoKSA9PSAxMDI0ICogMTAy
NCAqIDEwMjQpOworICAgICAgICBtX2FsbG9jYXRpb24gPSBQYWdlUmVzZXJ2YXRpb246OnJlc2Vy
dmUodG90YWxIZWFwU2l6ZSwgT1NBbGxvY2F0b3I6OkpTSklUQ29kZVBhZ2VzLCBFWEVDVVRBQkxF
X1BPT0xfV1JJVEFCTEUsIHRydWUpOwogCi0gICAgICAgIG1fcmVzZXJ2YXRpb24gPSBQYWdlUmVz
ZXJ2YXRpb246OnJlc2VydmUoRml4ZWRWTVBvb2xQYWdlVGFibGVzOjpzaXplKCksIE9TQWxsb2Nh
dG9yOjpKU0pJVENvZGVQYWdlcywgRVhFQ1VUQUJMRV9QT09MX1dSSVRBQkxFLCB0cnVlKTsKKyAg
ICAgICAgaWYgKCEhbV9hbGxvY2F0aW9uKQorICAgICAgICAgICAgbV9mcmVlTGlzdC5pbnNlcnQo
bmV3IEZyZWVMaXN0RW50cnkobV9hbGxvY2F0aW9uLmJhc2UoKSwgbV9hbGxvY2F0aW9uLnNpemUo
KSkpOwogI2lmICFFTkFCTEUoSU5URVJQUkVURVIpCi0gICAgICAgIGlmICghaXNWYWxpZCgpKQor
ICAgICAgICBlbHNlCiAgICAgICAgICAgICBDUkFTSCgpOwogI2VuZGlmCiAgICAgfQotIAotICAg
IEV4ZWN1dGFibGVQb29sOjpBbGxvY2F0aW9uIGFsbG9jKHNpemVfdCByZXF1ZXN0ZWRTaXplKQot
ICAgIHsKLSAgICAgICAgQVNTRVJUKHJlcXVlc3RlZFNpemUpOwotICAgICAgICBBbGxvY2F0aW9u
VGFibGVTaXplQ2xhc3Mgc2l6ZUNsYXNzID0gY2xhc3NGb3JTaXplKHJlcXVlc3RlZFNpemUpOwot
ICAgICAgICBzaXplX3Qgc2l6ZSA9IHNpemVDbGFzcy5zaXplKCk7Ci0gICAgICAgIEFTU0VSVChz
aXplKTsKIAotICAgICAgICBpZiAoc2l6ZSA+PSBGaXhlZFZNUG9vbFBhZ2VUYWJsZXM6OnNpemUo
KSkKLSAgICAgICAgICAgIENSQVNIKCk7Ci0gICAgICAgIGlmIChtX3BhZ2VzLmlzRnVsbCgpKQot
ICAgICAgICAgICAgQ1JBU0goKTsKLQotICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gbV9wYWdlcy5h
bGxvY2F0ZShzaXplQ2xhc3MpOwotICAgICAgICBpZiAob2Zmc2V0ID09IG5vdEZvdW5kKQotICAg
ICAgICAgICAgQ1JBU0goKTsKLQotICAgICAgICB2b2lkKiBwb2ludGVyID0gb2Zmc2V0VG9Qb2lu
dGVyKG9mZnNldCk7Ci0gICAgICAgIG1fcmVzZXJ2YXRpb24uY29tbWl0KHBvaW50ZXIsIHNpemUp
OwotICAgICAgICByZXR1cm4gRXhlY3V0YWJsZVBvb2w6OkFsbG9jYXRpb24ocG9pbnRlciwgc2l6
ZSk7CisgICAgRXhlY3V0YWJsZVBvb2w6OkFsbG9jYXRpb24gYWxsb2Moc2l6ZV90IHNpemUpCisg
ICAgeworICAgICAgICByZXR1cm4gRXhlY3V0YWJsZVBvb2w6OkFsbG9jYXRpb24oYWxsb2NJbnRl
cm5hbChzaXplKSwgc2l6ZSk7CiAgICAgfQogCiAgICAgdm9pZCBmcmVlKEV4ZWN1dGFibGVQb29s
OjpBbGxvY2F0aW9uIGFsbG9jYXRpb24pCiAgICAgewogICAgICAgICB2b2lkKiBwb2ludGVyID0g
YWxsb2NhdGlvbi5iYXNlKCk7CiAgICAgICAgIHNpemVfdCBzaXplID0gYWxsb2NhdGlvbi5zaXpl
KCk7Ci0gICAgICAgIEFTU0VSVChzaXplKTsKIAotICAgICAgICBtX3Jlc2VydmF0aW9uLmRlY29t
bWl0KHBvaW50ZXIsIHNpemUpOwotCi0gICAgICAgIEFsbG9jYXRpb25UYWJsZVNpemVDbGFzcyBz
aXplQ2xhc3MgPSBjbGFzc0ZvclNpemUoc2l6ZSk7Ci0gICAgICAgIEFTU0VSVChzaXplQ2xhc3Mu
c2l6ZSgpID09IHNpemUpOwotICAgICAgICBtX3BhZ2VzLmZyZWUocG9pbnRlclRvT2Zmc2V0KHBv
aW50ZXIpLCBzaXplQ2xhc3MpOworICAgICAgICBBU1NFUlQoISFtX2FsbG9jYXRpb24pOworICAg
ICAgICAvLyBDYWxsIHJlbGVhc2UgdG8gcmVwb3J0IHRvIHRoZSBvcGVyYXRpbmcgc3lzdGVtIHRo
YXQgdGhpcworICAgICAgICAvLyBtZW1vcnkgaXMgbm8gbG9uZ2VyIGluIHVzZSwgYW5kIG5lZWQg
bm90IGJlIHBhZ2VkIG91dC4KKyAgICAgICAgQVNTRVJUKGlzV2l0aGluVk1Qb29sKHBvaW50ZXIs
IHNpemUpKTsKKyAgICAgICAgcmVsZWFzZShwb2ludGVyLCBzaXplKTsKKworICAgICAgICAvLyBD
b21tb24tc2l6ZWQgYWxsb2NhdGlvbnMgYXJlIHN0b3JlZCBpbiB0aGUgbV9jb21tb25TaXplZEFs
bG9jYXRpb25zCisgICAgICAgIC8vIHZlY3RvcjsgYWxsIG90aGVyIGZyZWVkIGNodW5rcyBhcmUg
YWRkZWQgdG8gbV9mcmVlTGlzdC4KKyAgICAgICAgaWYgKHNpemUgPT0gbV9jb21tb25TaXplKQor
ICAgICAgICAgICAgbV9jb21tb25TaXplZEFsbG9jYXRpb25zLmFwcGVuZChwb2ludGVyKTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgYWRkVG9GcmVlTGlzdChuZXcgRnJlZUxpc3RFbnRyeShw
b2ludGVyLCBzaXplKSk7CisKKyAgICAgICAgLy8gRG8gc29tZSBob3VzZWtlZXBpbmcuICBFdmVy
eSB0aW1lIHdlIHJlYWNoIGEgcG9pbnQgdGhhdAorICAgICAgICAvLyAxNk1CIG9mIGFsbG9jYXRp
b25zIGhhdmUgYmVlbiBmcmVlZCwgc3dlZXAgbV9mcmVlTGlzdAorICAgICAgICAvLyBjb2FsZXNj
aW5nIGFueSBuZWlnaGJvcmluZyBmcmFnbWVudHMuCisgICAgICAgIG1fY291bnRGcmVlZFNpbmNl
TGFzdENvYWxlc2NlICs9IHNpemU7CisgICAgICAgIGlmIChtX2NvdW50RnJlZWRTaW5jZUxhc3RD
b2FsZXNjZSA+PSBjb2FsZXNjZUxpbWl0KSB7CisgICAgICAgICAgICBtX2NvdW50RnJlZWRTaW5j
ZUxhc3RDb2FsZXNjZSA9IDA7CisgICAgICAgICAgICBjb2FsZXNjZUZyZWVTcGFjZSgpOworICAg
ICAgICB9CiAgICAgfQogCi0gICAgc2l6ZV90IGFsbG9jYXRlZCgpCi0gICAgewotICAgICAgICBy
ZXR1cm4gbV9yZXNlcnZhdGlvbi5jb21taXR0ZWQoKTsKLSAgICB9Ci0KLSAgICBib29sIGlzVmFs
aWQoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuICEhbV9yZXNlcnZhdGlvbjsKLSAgICB9
CisgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gISFtX2FsbG9jYXRpb247IH0KIAog
cHJpdmF0ZToKLSAgICBBbGxvY2F0aW9uVGFibGVTaXplQ2xhc3MgY2xhc3NGb3JTaXplKHNpemVf
dCBzaXplKQorICAgIHZvaWQqIGFsbG9jSW50ZXJuYWwoc2l6ZV90IHNpemUpCiAgICAgewotICAg
ICAgICByZXR1cm4gRml4ZWRWTVBvb2xQYWdlVGFibGVzOjpjbGFzc0ZvclNpemUoc2l6ZSk7Cisj
aWYgRU5BQkxFKElOVEVSUFJFVEVSKQorICAgICAgICBpZiAoIW1fYWxsb2NhdGlvbikKKyAgICAg
ICAgICAgIHJldHVybiAwOworI2Vsc2UKKyAgICAgICAgQVNTRVJUKCEhbV9hbGxvY2F0aW9uKTsK
KyNlbmRpZgorICAgICAgICB2b2lkKiByZXN1bHQ7CisKKyAgICAgICAgLy8gRnJlZWQgYWxsb2Nh
dGlvbnMgb2YgdGhlIGNvbW1vbiBzaXplIGFyZSBub3Qgc3RvcmVkIGJhY2sgaW50byB0aGUgbWFp
bgorICAgICAgICAvLyBtX2ZyZWVMaXN0LCBidXQgYXJlIGluc3RlYWQgc3RvcmVkIGluIGEgc2Vw
YXJhdGUgdmVjdG9yLiAgSWYgdGhlIHJlcXVlc3QKKyAgICAgICAgLy8gaXMgZm9yIGEgY29tbW9u
IHNpemVkIGFsbG9jYXRpb24sIGNoZWNrIHRoaXMgbGlzdC4KKyAgICAgICAgaWYgKChzaXplID09
IG1fY29tbW9uU2l6ZSkgJiYgbV9jb21tb25TaXplZEFsbG9jYXRpb25zLnNpemUoKSkgeworICAg
ICAgICAgICAgcmVzdWx0ID0gbV9jb21tb25TaXplZEFsbG9jYXRpb25zLmxhc3QoKTsKKyAgICAg
ICAgICAgIG1fY29tbW9uU2l6ZWRBbGxvY2F0aW9ucy5yZW1vdmVMYXN0KCk7CisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAvLyBTZWFyY2ggbV9mcmVlTGlzdCBmb3IgYSBzdWl0YWJsZSBz
aXplZCBjaHVuayB0byBhbGxvY2F0ZSBtZW1vcnkgZnJvbS4KKyAgICAgICAgICAgIEZyZWVMaXN0
RW50cnkqIGVudHJ5ID0gbV9mcmVlTGlzdC5zZWFyY2goc2l6ZSwgbV9mcmVlTGlzdC5HUkVBVEVS
X0VRVUFMKTsKKworICAgICAgICAgICAgLy8gVGhpcyB3b3VsZCBiZSBiYWQgbmV3cy4KKyAgICAg
ICAgICAgIGlmICghZW50cnkpIHsKKyAgICAgICAgICAgICAgICAvLyBFcnJrISAgTGV0cyB0YWtl
IGEgbGFzdC1kaXRjaCBkZXNwZXJhdGlvbiBhdHRlbXB0IGF0IGRlZnJhZ21lbnRhdGlvbi4uLgor
ICAgICAgICAgICAgICAgIGNvYWxlc2NlRnJlZVNwYWNlKCk7CisgICAgICAgICAgICAgICAgLy8g
RGlkIHRoYXQgZnJlZSB1cCBhIGxhcmdlIGVub3VnaCBjaHVuaz8KKyAgICAgICAgICAgICAgICBl
bnRyeSA9IG1fZnJlZUxpc3Quc2VhcmNoKHNpemUsIG1fZnJlZUxpc3QuR1JFQVRFUl9FUVVBTCk7
CisgICAgICAgICAgICAgICAgLy8gTm8/Li4uICAqQk9PTSEqCisgICAgICAgICAgICAgICAgaWYg
KCFlbnRyeSkKKyAgICAgICAgICAgICAgICAgICAgQ1JBU0goKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIEFTU0VSVChlbnRyeS0+c2l6ZSAhPSBtX2NvbW1vblNpemUpOworCisgICAgICAg
ICAgICAvLyBSZW1vdmUgdGhlIGVudHJ5IGZyb20gbV9mcmVlTGlzdC4gIEJ1dCEgLQorICAgICAg
ICAgICAgLy8gRWFjaCBlbnRyeSBpbiB0aGUgdHJlZSBtYXkgcmVwcmVzZW50IGEgY2hhaW4gb2Yg
bXVsdGlwbGUgY2h1bmtzIG9mIHRoZQorICAgICAgICAgICAgLy8gc2FtZSBzaXplLCBhbmQgd2Ug
b25seSB3YW50IHRvIHJlbW92ZSBvbmUgb24gdGhlbS4gIFNvLCBpZiB0aGlzIGVudHJ5CisgICAg
ICAgICAgICAvLyBkb2VzIGhhdmUgYSBjaGFpbiwganVzdCByZW1vdmUgdGhlIGZpcnN0LWJ1dC1v
bmUgaXRlbSBmcm9tIHRoZSBjaGFpbi4KKyAgICAgICAgICAgIGlmIChGcmVlTGlzdEVudHJ5KiBu
ZXh0ID0gZW50cnktPm5leHRFbnRyeSkgeworICAgICAgICAgICAgICAgIC8vIFdlJ3JlIGdvaW5n
IHRvIGxlYXZlICdlbnRyeScgaW4gdGhlIHRyZWU7IHJlbW92ZSAnbmV4dCcgZnJvbSBpdHMgY2hh
aW4uCisgICAgICAgICAgICAgICAgZW50cnktPm5leHRFbnRyeSA9IG5leHQtPm5leHRFbnRyeTsK
KyAgICAgICAgICAgICAgICBuZXh0LT5uZXh0RW50cnkgPSAwOworICAgICAgICAgICAgICAgIGVu
dHJ5ID0gbmV4dDsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIG1fZnJlZUxp
c3QucmVtb3ZlKGVudHJ5LT5zaXplKTsKKworICAgICAgICAgICAgLy8gV2hvbyEsIHdlIGhhdmUg
YSByZXN1bHQhCisgICAgICAgICAgICBBU1NFUlQoZW50cnktPnNpemUgPj0gc2l6ZSk7CisgICAg
ICAgICAgICByZXN1bHQgPSBlbnRyeS0+cG9pbnRlcjsKKworICAgICAgICAgICAgLy8gSWYgdGhl
IGFsbG9jYXRpb24gZXhhY3RseSBmaXRzIHRoZSBjaHVuayB3ZSBmb3VuZCBpbiB0aGUsCisgICAg
ICAgICAgICAvLyBtX2ZyZWVMaXN0IHRoZW4gdGhlIEZyZWVMaXN0RW50cnkgbm9kZSBpcyBubyBs
b25nZXIgbmVlZGVkLgorICAgICAgICAgICAgaWYgKGVudHJ5LT5zaXplID09IHNpemUpCisgICAg
ICAgICAgICAgICAgZGVsZXRlIGVudHJ5OworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICAgICAgLy8gVGhlcmUgaXMgbWVtb3J5IGxlZnQgb3ZlciwgYW5kIGl0IGlzIG5vdCBvZiB0aGUg
Y29tbW9uIHNpemUuCisgICAgICAgICAgICAgICAgLy8gV2UgY2FuIHJldXNlIHRoZSBleGlzdGlu
ZyBGcmVlTGlzdEVudHJ5IG5vZGUgdG8gYWRkIHRoaXMgYmFjaworICAgICAgICAgICAgICAgIC8v
IGludG8gbV9mcmVlTGlzdC4KKyAgICAgICAgICAgICAgICBlbnRyeS0+cG9pbnRlciA9ICh2b2lk
KikoKGludHB0cl90KWVudHJ5LT5wb2ludGVyICsgc2l6ZSk7CisgICAgICAgICAgICAgICAgZW50
cnktPnNpemUgLT0gc2l6ZTsKKyAgICAgICAgICAgICAgICBhZGRUb0ZyZWVMaXN0KGVudHJ5KTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIENhbGwgcmV1c2UgdG8gcmVw
b3J0IHRvIHRoZSBvcGVyYXRpbmcgc3lzdGVtIHRoYXQgdGhpcyBtZW1vcnkgaXMgaW4gdXNlLgor
ICAgICAgICBBU1NFUlQoaXNXaXRoaW5WTVBvb2wocmVzdWx0LCBzaXplKSk7CisgICAgICAgIHJl
dXNlKHJlc3VsdCwgc2l6ZSk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAg
dm9pZCogb2Zmc2V0VG9Qb2ludGVyKHNpemVfdCBvZmZzZXQpCisjaWZuZGVmIE5ERUJVRworICAg
IGJvb2wgaXNXaXRoaW5WTVBvb2wodm9pZCogcG9pbnRlciwgc2l6ZV90IHNpemUpCiAgICAgewot
ICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVpbnRlcnByZXRfY2FzdDxp
bnRwdHJfdD4obV9yZXNlcnZhdGlvbi5iYXNlKCkpICsgb2Zmc2V0KTsKKyAgICAgICAgcmV0dXJu
IHBvaW50ZXIgPj0gbV9hbGxvY2F0aW9uLmJhc2UoKSAmJiAocmVpbnRlcnByZXRfY2FzdDxjaGFy
Kj4ocG9pbnRlcikgKyBzaXplIDw9IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KG1fYWxsb2NhdGlv
bi5iYXNlKCkpICsgbV9hbGxvY2F0aW9uLnNpemUoKSk7CiAgICAgfQorI2VuZGlmCiAKLSAgICBz
aXplX3QgcG9pbnRlclRvT2Zmc2V0KHZvaWQqIHBvaW50ZXIpCisgICAgdm9pZCBhZGRUb0NvbW1p
dHRlZEJ5dGVDb3VudChsb25nIGJ5dGVDb3VudCkKICAgICB7Ci0gICAgICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PGludHB0cl90Pihwb2ludGVyKSAtIHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRy
X3Q+KG1fcmVzZXJ2YXRpb24uYmFzZSgpKTsKKyAgICAgICAgQVNTRVJUKHNwaW5sb2NrLklzSGVs
ZCgpKTsKKyAgICAgICAgQVNTRVJUKHN0YXRpY19jYXN0PGxvbmc+KGNvbW1pdHRlZEJ5dGVzQ291
bnQpICsgYnl0ZUNvdW50ID4gLTEpOworICAgICAgICBjb21taXR0ZWRCeXRlc0NvdW50ICs9IGJ5
dGVDb3VudDsKICAgICB9CiAKLSAgICBQYWdlUmVzZXJ2YXRpb24gbV9yZXNlcnZhdGlvbjsKLSAg
ICBGaXhlZFZNUG9vbFBhZ2VUYWJsZXMgbV9wYWdlczsKLX07CisgICAgLy8gRnJlZWQgc3BhY2Ug
ZnJvbSB0aGUgbW9zdCBjb21tb24gc2l6ZWQgYWxsb2NhdGlvbnMgd2lsbCBiZSBoZWxkIGluIHRo
aXMgbGlzdCwgLi4uCisgICAgY29uc3Qgc2l6ZV90IG1fY29tbW9uU2l6ZTsKKyAgICBWZWN0b3I8
dm9pZCo+IG1fY29tbW9uU2l6ZWRBbGxvY2F0aW9uczsKIAorICAgIC8vIC4uLiBhbmQgYWxsIG90
aGVyIGZyZWVkIGFsbG9jYXRpb25zIGFyZSBoZWxkIGluIG1fZnJlZUxpc3QuCisgICAgU2l6ZVNv
cnRlZEZyZWVUcmVlIG1fZnJlZUxpc3Q7CiAKLXN0YXRpYyBTcGluTG9jayBzcGlubG9jayA9IFNQ
SU5MT0NLX0lOSVRJQUxJWkVSOwotc3RhdGljIEZpeGVkVk1Qb29sQWxsb2NhdG9yKiBhbGxvY2F0
b3IgPSAwOworICAgIC8vIFRoaXMgaXMgdXNlZCBmb3IgaG91c2VrZWVwaW5nLCB0byB0cmlnZ2Vy
IGRlZnJhZ21lbnRhdGlvbiBvZiB0aGUgZnJlZWQgbGlzdHMuCisgICAgc2l6ZV90IG1fY291bnRG
cmVlZFNpbmNlTGFzdENvYWxlc2NlOwogCisgICAgUGFnZVJlc2VydmF0aW9uIG1fYWxsb2NhdGlv
bjsKK307CiAKIHNpemVfdCBFeGVjdXRhYmxlQWxsb2NhdG9yOjpjb21taXR0ZWRCeXRlQ291bnQo
KQogewogICAgIFNwaW5Mb2NrSG9sZGVyIGxvY2tIb2xkZXIoJnNwaW5sb2NrKTsKLSAgICByZXR1
cm4gYWxsb2NhdG9yID8gYWxsb2NhdG9yLT5hbGxvY2F0ZWQoKSA6IDA7CisgICAgcmV0dXJuIGNv
bW1pdHRlZEJ5dGVzQ291bnQ7CiB9ICAgCiAKIHZvaWQgRXhlY3V0YWJsZUFsbG9jYXRvcjo6aW50
aWFsaXplUGFnZVNpemUoKQpAQCAtNDk2LDExICs0NTAsMzcgQEAgdm9pZCBFeGVjdXRhYmxlQWxs
b2NhdG9yOjppbnRpYWxpemVQYWdlU2l6ZSgpCiAgICAgRXhlY3V0YWJsZUFsbG9jYXRvcjo6cGFn
ZVNpemUgPSBnZXRwYWdlc2l6ZSgpOwogfQogCitzdGF0aWMgRml4ZWRWTVBvb2xBbGxvY2F0b3Iq
IGFsbG9jYXRvciA9IDA7CitzdGF0aWMgc2l6ZV90IGFsbG9jYXRlZENvdW50ID0gMDsKKworI2lm
IE9TKExJTlVYKQorc3RhdGljIHZvaWQgbWF5YmVNb2RpZnlWTVBvb2xTaXplKCkKK3sKKyAgICBG
SUxFKiBmcCA9IGZvcGVuKCIvcHJvYy9zeXMvdm0vb3ZlcmNvbW1pdF9tZW1vcnkiLCAiciIpOwor
ICAgIGlmICghZnApCisgICAgICAgIHJldHVybjsKKworICAgIHVuc2lnbmVkIG92ZXJjb21taXQg
PSAwOworICAgIGlmIChmc2NhbmYoZnAsICIldSIsICZvdmVyY29tbWl0KSA9PSAxKSB7CisgICAg
ICAgIGlmIChvdmVyY29tbWl0ID09IDEpIHsKKyAgICAgICAgICAgIHZtUG9vbFNpemUgPSB2bVBv
b2xTaXplT3ZlcmNvbW1pdDsKKyAgICAgICAgICAgIGNvYWxlc2NlTGltaXQgPSBjb2FsZXNjZUxp
bWl0T3ZlcmNvbW1pdDsKKyAgICAgICAgfQorICAgIH0KKworICAgIGZjbG9zZShmcCk7Cit9Cisj
ZW5kaWYKKwogYm9vbCBFeGVjdXRhYmxlQWxsb2NhdG9yOjppc1ZhbGlkKCkgY29uc3QKIHsKICAg
ICBTcGluTG9ja0hvbGRlciBsb2NrX2hvbGRlcigmc3BpbmxvY2spOwotICAgIGlmICghYWxsb2Nh
dG9yKQotICAgICAgICBhbGxvY2F0b3IgPSBuZXcgRml4ZWRWTVBvb2xBbGxvY2F0b3IoKTsKKyAg
ICBpZiAoIWFsbG9jYXRvcikgeworI2lmIE9TKExJTlVYKQorICAgICAgICBtYXliZU1vZGlmeVZN
UG9vbFNpemUoKTsKKyNlbmRpZgorICAgICAgICBhbGxvY2F0b3IgPSBuZXcgRml4ZWRWTVBvb2xB
bGxvY2F0b3IoSklUX0FMTE9DQVRPUl9MQVJHRV9BTExPQ19TSVpFLCB2bVBvb2xTaXplKTsKKyAg
ICB9CiAgICAgcmV0dXJuIGFsbG9jYXRvci0+aXNWYWxpZCgpOwogfQogCkBAIC01MDgsMTMgKzQ4
OCwxNCBAQCBib29sIEV4ZWN1dGFibGVBbGxvY2F0b3I6OnVuZGVyTWVtb3J5UHJlc3N1cmUoKQog
ewogICAgIC8vIFRlY2huaWNhbGx5IHdlIHNob3VsZCB0YWtlIHRoZSBzcGluIGxvY2sgaGVyZSwg
YnV0IHdlIGRvbid0IGNhcmUgaWYgd2UgZ2V0IHN0YWxlIGRhdGEuCiAgICAgLy8gVGhpcyBpcyBv
bmx5IHJlYWxseSBhIGhldXJpc3RpYyBhbnl3YXkuCi0gICAgcmV0dXJuIGFsbG9jYXRvciAmJiAo
YWxsb2NhdG9yLT5hbGxvY2F0ZWQoKSA+IChGaXhlZFZNUG9vbFBhZ2VUYWJsZXM6OnNpemUoKSAv
IDIpKTsKKyAgICByZXR1cm4gYWxsb2NhdGVkQ291bnQgPiAodm1Qb29sU2l6ZSAvIDIpOwogfQog
CiBFeGVjdXRhYmxlUG9vbDo6QWxsb2NhdGlvbiBFeGVjdXRhYmxlUG9vbDo6c3lzdGVtQWxsb2Mo
c2l6ZV90IHNpemUpCiB7CiAgICAgU3BpbkxvY2tIb2xkZXIgbG9ja19ob2xkZXIoJnNwaW5sb2Nr
KTsKICAgICBBU1NFUlQoYWxsb2NhdG9yKTsKKyAgICBhbGxvY2F0ZWRDb3VudCArPSBzaXplOwog
ICAgIHJldHVybiBhbGxvY2F0b3ItPmFsbG9jKHNpemUpOwogfQogCkBAIC01MjIsNiArNTAzLDcg
QEAgdm9pZCBFeGVjdXRhYmxlUG9vbDo6c3lzdGVtUmVsZWFzZShFeGVjdXRhYmxlUG9vbDo6QWxs
b2NhdGlvbiYgYWxsb2NhdGlvbikKIHsKICAgICBTcGluTG9ja0hvbGRlciBsb2NrX2hvbGRlcigm
c3BpbmxvY2spOwogICAgIEFTU0VSVChhbGxvY2F0b3IpOworICAgIGFsbG9jYXRlZENvdW50IC09
IGFsbG9jYXRpb24uc2l6ZSgpOwogICAgIGFsbG9jYXRvci0+ZnJlZShhbGxvY2F0aW9uKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QYWdlUmVzZXJ2YXRpb24u
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGFnZVJlc2VydmF0aW9uLmgKaW5kZXggNmRm
ZjcwMGIzMDgyZTRhN2IzNjY3NThkMTE4MGUzYzA1NjMzZDkwZC4uZDk1Y2E5ZjJhYTE2MzUzYTY3
Y2I4Yjc2OTMyZWVlYTE2OTZmYWMzOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3d0Zi9QYWdlUmVzZXJ2YXRpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1Bh
Z2VSZXNlcnZhdGlvbi5oCkBAIC01Nyw5ICs1NywxMSBAQCBuYW1lc3BhY2UgV1RGIHsKIGNsYXNz
IFBhZ2VSZXNlcnZhdGlvbiA6IHByaXZhdGUgUGFnZUJsb2NrIHsKIHB1YmxpYzoKICAgICBQYWdl
UmVzZXJ2YXRpb24oKQotICAgICAgICA6IG1fY29tbWl0dGVkKDApCi0gICAgICAgICwgbV93cml0
YWJsZShmYWxzZSkKKyAgICAgICAgOiBtX3dyaXRhYmxlKGZhbHNlKQogICAgICAgICAsIG1fZXhl
Y3V0YWJsZShmYWxzZSkKKyNpZm5kZWYgTkRFQlVHCisgICAgICAgICwgbV9jb21taXR0ZWQoMCkK
KyNlbmRpZgogICAgIHsKICAgICB9CiAKQEAgLTgxLDcgKzgzLDkgQEAgcHVibGljOgogICAgICAg
ICBBU1NFUlQoaXNQYWdlQWxpZ25lZChzaXplKSk7CiAgICAgICAgIEFTU0VSVChjb250YWlucyhz
dGFydCwgc2l6ZSkpOwogCisjaWZuZGVmIE5ERUJVRwogICAgICAgICBtX2NvbW1pdHRlZCArPSBz
aXplOworI2VuZGlmCiAgICAgICAgIE9TQWxsb2NhdG9yOjpjb21taXQoc3RhcnQsIHNpemUsIG1f
d3JpdGFibGUsIG1fZXhlY3V0YWJsZSk7CiAgICAgfQogCkBAIC05MiwxNSArOTYsMTIgQEAgcHVi
bGljOgogICAgICAgICBBU1NFUlQoaXNQYWdlQWxpZ25lZChzaXplKSk7CiAgICAgICAgIEFTU0VS
VChjb250YWlucyhzdGFydCwgc2l6ZSkpOwogCisjaWZuZGVmIE5ERUJVRwogICAgICAgICBtX2Nv
bW1pdHRlZCAtPSBzaXplOworI2VuZGlmCiAgICAgICAgIE9TQWxsb2NhdG9yOjpkZWNvbW1pdChz
dGFydCwgc2l6ZSk7CiAgICAgfQogCi0gICAgc2l6ZV90IGNvbW1pdHRlZCgpCi0gICAgewotICAg
ICAgICByZXR1cm4gbV9jb21taXR0ZWQ7Ci0gICAgfQotCiAgICAgc3RhdGljIFBhZ2VSZXNlcnZh
dGlvbiByZXNlcnZlKHNpemVfdCBzaXplLCBPU0FsbG9jYXRvcjo6VXNhZ2UgdXNhZ2UgPSBPU0Fs
bG9jYXRvcjo6VW5rbm93blVzYWdlLCBib29sIHdyaXRhYmxlID0gdHJ1ZSwgYm9vbCBleGVjdXRh
YmxlID0gZmFsc2UpCiAgICAgewogICAgICAgICBBU1NFUlQoaXNQYWdlQWxpZ25lZChzaXplKSk7
CkBAIC0xMjUsMTUgKzEyNiwxOSBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFBhZ2VSZXNlcnZh
dGlvbih2b2lkKiBiYXNlLCBzaXplX3Qgc2l6ZSwgYm9vbCB3cml0YWJsZSwgYm9vbCBleGVjdXRh
YmxlKQogICAgICAgICA6IFBhZ2VCbG9jayhiYXNlLCBzaXplKQotICAgICAgICAsIG1fY29tbWl0
dGVkKDApCiAgICAgICAgICwgbV93cml0YWJsZSh3cml0YWJsZSkKICAgICAgICAgLCBtX2V4ZWN1
dGFibGUoZXhlY3V0YWJsZSkKKyNpZm5kZWYgTkRFQlVHCisgICAgICAgICwgbV9jb21taXR0ZWQo
MCkKKyNlbmRpZgogICAgIHsKICAgICB9CiAKLSAgICBzaXplX3QgbV9jb21taXR0ZWQ7CiAgICAg
Ym9vbCBtX3dyaXRhYmxlOwogICAgIGJvb2wgbV9leGVjdXRhYmxlOworI2lmbmRlZiBOREVCVUcK
KyAgICBzaXplX3QgbV9jb21taXR0ZWQ7CisjZW5kaWYKIH07CiAKIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>