<?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>115222</bug_id>
          
          <creation_ts>2013-04-25 22:07:41 -0700</creation_ts>
          <short_desc>Cleaned up pre/post inc/dec in bytecode</short_desc>
          <delta_ts>2013-04-27 16:12:57 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Geoffrey Garen">ggaren</reporter>
          <assigned_to name="Geoffrey Garen">ggaren</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>881690</commentid>
    <comment_count>0</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-04-25 22:07:41 -0700</bug_when>
    <thetext>Cleaned up pre/post inc/dec in bytecode</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>881697</commentid>
    <comment_count>1</comment_count>
      <attachid>199782</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-04-25 22:50:01 -0700</bug_when>
    <thetext>Created attachment 199782
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>882254</commentid>
    <comment_count>2</comment_count>
      <attachid>199782</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-04-27 15:58:14 -0700</bug_when>
    <thetext>Comment on attachment 199782
Patch

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

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:-2226
&gt; -            setPair(result, op, srcDst, makeSafe(addToGraph(ArithSub, op, one())));

OMG yes.  I will not miss this line of code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>882261</commentid>
    <comment_count>3</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-04-27 16:12:57 -0700</bug_when>
    <thetext>Committed r149247: &lt;http://trac.webkit.org/changeset/149247&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>199782</attachid>
            <date>2013-04-25 22:50:01 -0700</date>
            <delta_ts>2013-04-27 15:58:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-115222-20130425224922.patch</filename>
            <type>text/plain</type>
            <size>51226</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTQ5MTY3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDk0IEBA
CisyMDEzLTA0LTI1ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgQ2xlYW5lZCB1cCBwcmUvcG9zdCBpbmMvZGVjIGluIGJ5dGVjb2RlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTUyMjIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBIGZldyByZWxhdGVkIGNoYW5nZXMg
aGVyZToKKworICAgICAgICAoKikgUmVtb3ZlZCBwb3N0X2luYyBhbmQgcG9zdF9kZWMuIFRoZSB0
d28tcmVzdWx0IGZvcm0gd2FzIGF3a3dhcmQgdG8KKyAgICAgICAgcmVhc29uIGFib3V0LiBCZWlu
ZyBleHBsaWNpdCBhYm91dCB0aGUgaW50ZXJtZWRpYXRlIG1vdiBhbmQgdG9fbnVtYmVyCisgICAg
ICAgIHJlZHVjZXMgREZHIG92ZXJoZWFkLCByZW1vdmVzIHNvbWUgZnJhZ2lsZSBBU1NFUlRzIGZy
b20gdGhlIERGRywgYW5kCisgICAgICAgIGZpeGVzIGEgY29uc3QgYnVnLiBQbHVzLCB3ZSBnZXQg
dG8gYmxvdyBhd2F5IDI2MiBsaW5lcyBvZiBjb2RlLgorCisgICAgICAgICgqKSBSZW5hbWVkIHBy
ZV9pbmMgYW5kIHByZV9kZWMgdG8gaW5jIGFuZCBkZWMsIHNpbmNlIHRoZXJlJ3Mgb25seSBvbmUK
KyAgICAgICAgdmVyc2lvbiBub3cuCisKKyAgICAgICAgKCopIFJlbmFtZWQgdG9fanNudW1iZXIg
dG8gdG9fbnVtYmVyLCB0byBtYXRjaCB0aGUgRUNNQSBuYW1lLgorCisgICAgICAgICgqKSBUaWdo
dGVuZWQgdXAgdGhlIGNvZGVnZW4gYW5kIHJ1bnRpbWUgc3VwcG9ydCBmb3IgdG9fbnVtYmVyLgor
CisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5vcmRlcjogT3JkZXIhCisKKyAgICAgICAgKiBi
eXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmR1bXBCeXRl
Y29kZSk6CisgICAgICAgICogYnl0ZWNvZGUvT3Bjb2RlLmg6CisgICAgICAgIChKU0M6OnBhZE9w
Y29kZU5hbWUpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SW5jKToKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWMpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dFRvTnVtYmVyKToKKyAgICAgICAgKEJ5dGVjb2RlR2VuZXJhdG9yKTogUmVtb3ZlZCBwb3N0X2lu
YyBhbmQgcG9zdF9kZWMuCisKKyAgICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNw
cDoKKyAgICAgICAgKEpTQzo6ZW1pdFByZUluY09yRGVjKTogVXBkYXRlZCBmb3IgcmVuYW1lLgor
CisgICAgICAgIChKU0M6OmVtaXRQb3N0SW5jT3JEZWMpOiBJc3N1ZSBhbiBleHBsaWNpdCBtb3Yg
YW5kIHRvX251bWJlciB3aGVuIG5lZWRlZC4KKyAgICAgICAgVGhlc2UgYXJlIHJhcmUsIGFuZCB0
aGV5IGJvaWwgYXdheSBpbiB0aGUgSklULgorCisgICAgICAgIChKU0M6OlBvc3RmaXhOb2RlOjpl
bWl0UmVzb2x2ZSk6CisgICAgICAgIChKU0M6OlByZWZpeE5vZGU6OmVtaXRSZXNvbHZlKTogRm9y
IGNvbnN0LCB1c2UgYW4gZXhwbGljaXQgbW92IGluc3RlYWQKKyAgICAgICAgb2YgYW55IHNwZWNp
YWwgZm9ybXMuIFRoaXMgZml4ZXMgYSBidWcgd2hlcmUgd2Ugd291bGQgZG8gc3RyaW5nCisgICAg
ICAgIGFkZC9zdWJ0cmFjdCBpbnN0ZWFkIG9mIG51bWJlci4KKworICAgICAgICAqIGRmZy9ERkdC
eXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBh
cnNlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdDYXBhYmlsaXRpZXMuaDoKKyAgICAgICAgKEpT
Qzo6REZHOjpjYW5Db21waWxlT3Bjb2RlKToKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAg
ICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAgICAgICAgKEpTQzo6SklU
Ojpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcyk6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAg
ICAqIGppdC9KSVRBcml0aG1ldGljLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2lu
Yyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfaW5jKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX2RlYyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZGVjKToK
KyAgICAgICAgKiBqaXQvSklUQXJpdGhtZXRpYzMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX2luYyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfaW5jKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX2RlYyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNs
b3dfb3BfZGVjKTogUmVtb3ZlZCBwb3N0X2luYy9kZWMsIGFuZCB1cGRhdGVkIGZvciByZW5hbWVz
LgorCisgICAgICAgICogaml0L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfb3BfdG9fbnVtYmVyKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF90b19udW1i
ZXIpOiBSZW1vdmVkIGEgdGVzdCBmb3IgbnVtYmVyIGNlbGxzLiBUaGVyZSdzCisgICAgICAgIG5v
IHN1Y2ggdGhpbmchCisKKyAgICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX3RvX251bWJlcik6IFVzZSBMb3dlc3RUYWcgdG8gYXZvaWQg
bWFraW5nIGFzc3VtcHRpb25zCisgICAgICAgIGFib3V0IHRoZSBsb3dlc3QgdmFsdWVkIHRhZy4K
KworICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3RvX251bWJlcik6IFVwZGF0ZWQgZm9y
IHJlbmFtZXMuCisKKyAgICAgICAgKiBqaXQvSklUU3R1YnMuY3BwOgorICAgICAgICAoSlNDOjpE
RUZJTkVfU1RVQl9GVU5DVElPTik6CisgICAgICAgICogaml0L0pJVFN0dWJzLmg6CisgICAgICAg
ICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6TExJTlRf
U0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmg6CisgICAg
ICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAgICAgICAgKiBsbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAqIHBhcnNlci9Ob2RlQ29uc3Ry
dWN0b3JzLmg6CisgICAgICAgIChKU0M6OlVuYXJ5UGx1c05vZGU6OlVuYXJ5UGx1c05vZGUpOiBS
ZW1vdmVkIHBvc3RfaW5jL2RlYywgYW5kIHVwZGF0ZWQgZm9yIHJlbmFtZXMuCisKKyAgICAgICAg
KiBydW50aW1lL09wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpqc0lzT2JqZWN0VHlwZSk6
IFJlbW92ZWQgYSB0ZXN0IGZvciBudW1iZXIgY2VsbHMuIFRoZXJlJ3MKKyAgICAgICAgbm8gc3Vj
aCB0aGluZyEKKwogMjAxMy0wNC0yNSAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBw
bGUuY29tPgogCiAgICAgICAgIFN1cGVyUmVnaW9uIGRvZXNuJ3QgY2FsbCBkZWFsbG9jYXRlKCkg
b24gaXRzIFBhZ2VSZXNlcnZhdGlvbgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLm9yZGVyCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS5vcmRlcgkocmV2aXNpb24gMTQ5MTY1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLm9yZGVyCSh3b3JraW5nIGNvcHkpCkBAIC04OTAsNyArODkwLDcg
QEAgX19aTjNKU0MzSklUMTFlbWl0X29wX2ptcEVQTlNfMTFJbnN0cnVjdAogX19aTjNKU0MzSklU
MThlbWl0X29wX2dldF9ieV92YWxFUE5TXzExSW5zdHJ1Y3Rpb25FCiBfX1pOM0pTQzIwTWFjcm9B
c3NlbWJsZXJYODZfNjQ5YnJhbmNoUHRyRU5TXzIzTWFjcm9Bc3NlbWJsZXJYODZDb21tb24xOVJl
bGF0aW9uYWxDb25kaXRpb25FTlNfMjJBYnN0cmFjdE1hY3JvQXNzZW1ibGVySU5TXzEyWDg2QXNz
ZW1ibGVyRUU3QWRkcmVzc0VOUzVfMTNUcnVzdGVkSW1tUHRyRQogX19aTjNKU0MxMlg4NkFzc2Vt
YmxlcjIzWDg2SW5zdHJ1Y3Rpb25Gb3JtYXR0ZXIxMW9uZUJ5dGVPcDY0RU5TMF8xNU9uZUJ5dGVP
cGNvZGVJREVpTlNfMTJYODZSZWdpc3RlcnMxMFJlZ2lzdGVySURFUzRfaWkKLV9fWk4zSlNDM0pJ
VDE1ZW1pdF9vcF9wcmVfaW5jRVBOU18xMUluc3RydWN0aW9uRQorX19aTjNKU0MzSklUMTVlbWl0
X29wX2luY0VQTlNfMTFJbnN0cnVjdGlvbkUKIF9fWk4zSlNDM0pJVDE2ZW1pdFRpbWVvdXRDaGVj
a0V2CiBfX1pOM0pTQzNKSVQxM2VtaXRfb3Bfamxlc3NFUE5TXzExSW5zdHJ1Y3Rpb25FCiBfX1pO
M0pTQzNKSVQyMmVtaXRTbG93X29wX2dldF9ieV92YWxFUE5TXzExSW5zdHJ1Y3Rpb25FUlBOU18x
M1Nsb3dDYXNlRW50cnlFCkBAIC04OTgsNyArODk4LDcgQEAgX19aTjNKU0M5SklUVGh1bmtzN2N0
aVN0dWJFUE5TXzEyVk1FUEZOUwogX19aTjNXVEY5SGFzaFRhYmxlSVBGTjNKU0MyMU1hY3JvQXNz
ZW1ibGVyQ29kZVB0ckVQTlMxXzEyVk1FUE5TMV8xNEV4ZWN1dGFibGVQb29sRUVTdDRwYWlySVM4
X1MyX0VOU18xOFBhaXJGaXJzdEV4dHJhY3RvcklTQV9FRU5TXzdQdHJIYXNoSVM4X0VFTlNfMTRQ
YWlySGFzaFRyYWl0c0lOU18xMEhhc2hUcmFpdHNJUzhfRUVOU0dfSVMyX0VFRUVTSF9FNmV4cGFu
ZEV2CiBfX1pOM0pTQzNKSVQyN3N0cmluZ0dldEJ5VmFsU3R1YkdlbmVyYXRvckVQTlNfMTJWTUVQ
TlNfMTRFeGVjdXRhYmxlUG9vbEUKIF9fWk4zSlNDMjFyb3VuZFVwQWxsb2NhdGlvblNpemVFbW0K
LV9fWk4zSlNDM0pJVDE5ZW1pdFNsb3dfb3BfcHJlX2luY0VQTlNfMTFJbnN0cnVjdGlvbkVSUE5T
XzEzU2xvd0Nhc2VFbnRyeUUKK19fWk4zSlNDM0pJVDE5ZW1pdFNsb3dfb3BfaW5jRVBOU18xMUlu
c3RydWN0aW9uRVJQTlNfMTNTbG93Q2FzZUVudHJ5RQogX19aTjNKU0MzSklUMTdlbWl0U2xvd19v
cF9qbGVzc0VQTlNfMTFJbnN0cnVjdGlvbkVSUE5TXzEzU2xvd0Nhc2VFbnRyeUUKIF9fWk4zSlND
MTJYODZBc3NlbWJsZXI3bW92cV9yckVOU18xMlg4NlJlZ2lzdGVyczEwUmVnaXN0ZXJJREVOUzFf
MTNYTU1SZWdpc3RlcklERQogX19aTjNKU0MyM01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uMTJicmFu
Y2hEb3VibGVFTlMwXzE1RG91YmxlQ29uZGl0aW9uRU5TXzEyWDg2UmVnaXN0ZXJzMTNYTU1SZWdp
c3RlcklERVMzXwpAQCAtMTM2MCw5ICsxMzYwLDkgQEAgX19aTjNKU0MxNnRocm93U3ludGF4RXJy
b3JFUE5TXzlFeGVjU3RhdAogX2N0aV9vcF9sb2FkX3ZhcmFyZ3MKIF9fWk4zV1RGMTN0cnlGYXN0
Q2FsbG9jRW1tCiBfX1pOM0pTQzE3Qnl0ZWNvZGVHZW5lcmF0b3IxMGVtaXRQcmVEZWNFUE5TXzEw
UmVnaXN0ZXJJREUKLV9fWk4zSlNDM0pJVDE1ZW1pdF9vcF9wcmVfZGVjRVBOU18xMUluc3RydWN0
aW9uRQotX19aTjNKU0MzSklUMTllbWl0U2xvd19vcF9wcmVfZGVjRVBOU18xMUluc3RydWN0aW9u
RVJQTlNfMTNTbG93Q2FzZUVudHJ5RQotX2N0aV9vcF9wcmVfZGVjCitfX1pOM0pTQzNKSVQxNWVt
aXRfb3BfZGVjRVBOU18xMUluc3RydWN0aW9uRQorX19aTjNKU0MzSklUMTllbWl0U2xvd19vcF9k
ZWNFUE5TXzExSW5zdHJ1Y3Rpb25FUlBOU18xM1Nsb3dDYXNlRW50cnlFCitfY3RpX29wX2RlYwog
X19aTjNXVEYxMFN0cmluZ0ltcGwxNmZpbmRJZ25vcmluZ0Nhc2VFUFMwX2oKIF9fWk4zSlNDNUxl
eGVyMTlnZXRVbmljb2RlQ2hhcmFjdGVyRXYKIF9fWk4zSlNDTDIzbnVtYmVyUHJvdG9GdW5jVG9T
dHJpbmdFUE5TXzlFeGVjU3RhdGVFCkBAIC0xNDM0LDggKzE0MzQsNiBAQCBfX1pOM1dURjEwU3Ry
aW5nSW1wbDdyZXBsYWNlRXRQUzBfCiBfX1pOM0pTQzNKSVQzMXByaXZhdGVDb21waWxlUHV0QnlJ
ZFRyYW5zaXRpb25FUE5TXzE3U3RydWN0dXJlU3R1YkluZm9FUE5TXzlTdHJ1Y3R1cmVFUzRfbVBO
U18xNFN0cnVjdHVyZUNoYWluRU5TXzE2UmV0dXJuQWRkcmVzc1B0ckViCiBfY3RpX29wX3B1dF9i
eV9pZF9mYWlsCiBfX1pOM0pTQzE3Qnl0ZWNvZGVHZW5lcmF0b3IxMWVtaXRQb3N0SW5jRVBOU18x
MFJlZ2lzdGVySURFUzJfCi1fX1pOM0pTQzNKSVQxNmVtaXRfb3BfcG9zdF9pbmNFUE5TXzExSW5z
dHJ1Y3Rpb25FCi1fX1pOM0pTQzNKSVQyMGVtaXRTbG93X29wX3Bvc3RfaW5jRVBOU18xMUluc3Ry
dWN0aW9uRVJQTlNfMTNTbG93Q2FzZUVudHJ5RQogX19aTjNKU0NMMjNjcmVhdGVQcm90b3R5cGVQ
cm9wZXJ0eUVSTlNfMTJWTUVQTlNfMTRKU0dsb2JhbE9iamVjdEVQTlNfMTBKU0Z1bmN0aW9uRQog
X19aTkszSlNDOE51bGxOb2RlNmlzTnVsbEV2CiBfX1pOM0pTQzNKSVQxN2VtaXRfb3Bfam5lcV9u
dWxsRVBOU18xMUluc3RydWN0aW9uRQpAQCAtMTYxOCw4ICsxNjE2LDYgQEAgX19aTjNXVEY2VmVj
dG9ySXRMbTY0RUUxOHRyeVJlc2VydmVDYXBhYwogX19aTjNKU0MxNmdsb2JhbEZ1bmNFc2NhcGVF
UE5TXzlFeGVjU3RhdGVFCiBfX1pOM0pTQzEzUHJlZml4RG90Tm9kZTEyZW1pdEJ5dGVjb2RlRVJO
U18xN0J5dGVjb2RlR2VuZXJhdG9yRVBOU18xMFJlZ2lzdGVySURFCiBfX1pOM0pTQzE3Qnl0ZWNv
ZGVHZW5lcmF0b3IxMWVtaXRQb3N0RGVjRVBOU18xMFJlZ2lzdGVySURFUzJfCi1fX1pOM0pTQzNK
SVQxNmVtaXRfb3BfcG9zdF9kZWNFUE5TXzExSW5zdHJ1Y3Rpb25FCi1fX1pOM0pTQzNKSVQyMGVt
aXRTbG93X29wX3Bvc3RfZGVjRVBOU18xMUluc3RydWN0aW9uRVJQTlNfMTNTbG93Q2FzZUVudHJ5
RQogX19aTjNKU0M3SlNBcnJheTE5Z2V0T3duUHJvcGVydHlOYW1lc0VQTlNfOUV4ZWNTdGF0ZUVS
TlNfMTdQcm9wZXJ0eU5hbWVBcnJheUVOU18xNUVudW1lcmF0aW9uTW9kZUUKIF9fWk4zSlNDMTdQ
cm9wZXJ0eU5hbWVBcnJheTNhZGRFUE4zV1RGMTBTdHJpbmdJbXBsRQogX19aTjNKU0M5RXhlY1N0
YXRlMTlhcnJheVByb3RvdHlwZVRhYmxlRVBTMF8KQEAgLTE4MTksOSArMTgxNSw5IEBAIF9fWk5L
M0pTQzE4UHJvcGVydHlEZXNjcmlwdG9yOHdyaXRhYmxlRXYKIF9fWk5LM0pTQzE4UHJvcGVydHlE
ZXNjcmlwdG9yMTBlbnVtZXJhYmxlRXYKIF9fWk5LM0pTQzE4UHJvcGVydHlEZXNjcmlwdG9yMTJj
b25maWd1cmFibGVFdgogX19aTjNKU0M4SlNPYmplY3QyNGdldE93blByb3BlcnR5RGVzY3JpcHRv
ckVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckVSTlNfMThQcm9wZXJ0eURlc2NyaXB0
b3JFCi1fX1pOM0pTQzNKSVQxOWVtaXRfb3BfdG9fanNudW1iZXJFUE5TXzExSW5zdHJ1Y3Rpb25F
Ci1fX1pOM0pTQzNKSVQyM2VtaXRTbG93X29wX3RvX2pzbnVtYmVyRVBOU18xMUluc3RydWN0aW9u
RVJQTlNfMTNTbG93Q2FzZUVudHJ5RQotX2N0aV9vcF90b19qc251bWJlcgorX19aTjNKU0MzSklU
MTllbWl0X29wX3RvX251bWJlckVQTlNfMTFJbnN0cnVjdGlvbkUKK19fWk4zSlNDM0pJVDIzZW1p
dFNsb3dfb3BfdG9fbnVtYmVyRVBOU18xMUluc3RydWN0aW9uRVJQTlNfMTNTbG93Q2FzZUVudHJ5
RQorX2N0aV9vcF90b19udW1iZXIKIF9fWk5LM0pTQzE2SlNDYWxsYmFja09iamVjdElOU18yNEpT
T2JqZWN0V2l0aEdsb2JhbE9iamVjdEVFOHRvTnVtYmVyRVBOU185RXhlY1N0YXRlRQogX19aTksz
SlNDMTZKU0NhbGxiYWNrT2JqZWN0SU5TXzI0SlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0RUU5Y2xh
c3NOYW1lRXYKIF9fWk5LM0pTQzE2SlNDYWxsYmFja09iamVjdElOU18yNEpTT2JqZWN0V2l0aEds
b2JhbE9iamVjdEVFOHRvU3RyaW5nRVBOU185RXhlY1N0YXRlRQpAQCAtMTkzNCw3ICsxOTMwLDcg
QEAgX19aTjNKU0MxNWdsb2JhbEZ1bmNJc05hTkVQTlNfOUV4ZWNTdGF0ZQogX2N0aV9vcF9pc19v
YmplY3QKIF9fWk4zSlNDMTRqc0lzT2JqZWN0VHlwZUVOU183SlNWYWx1ZUUKIF9fWk4zSlNDTDIw
ZGF0ZVByb3RvRnVuY0dldFllYXJFUE5TXzlFeGVjU3RhdGVFCi1fY3RpX29wX3ByZV9pbmMKK19j
dGlfb3BfaW5jCiBfX1pOM0pTQ0wyMGRhdGVQcm90b0Z1bmNTZXRUaW1lRVBOU185RXhlY1N0YXRl
RQogX19aTjNKU0NMMTdhcnJheVByb3RvRnVuY1BvcEVQTlNfOUV4ZWNTdGF0ZUUKIF9fWk4zSlND
N0pTQXJyYXkzcG9wRXYKQEAgLTE5NzQsOCArMTk3MCw2IEBAIF9fWk4zSlNDMTlGdW5jdGlvbkNv
bnN0cnVjdG9yMTFnZXRDYWxsRGEKIF9fWk4zSlNDMTVEYXRlQ29uc3RydWN0b3IxMWdldENhbGxE
YXRhRVJOU184Q2FsbERhdGFFCiBfX1pOM0pTQ0wyNW51bWJlckNvbnN0cnVjdG9yTWF4VmFsdWVF
UE5TXzlFeGVjU3RhdGVFTlNfN0pTVmFsdWVFUktOU18xMElkZW50aWZpZXJFCiBfX1pOM0pTQ0wy
NW51bWJlckNvbnN0cnVjdG9yTWluVmFsdWVFUE5TXzlFeGVjU3RhdGVFTlNfN0pTVmFsdWVFUktO
U18xMElkZW50aWZpZXJFCi1fY3RpX29wX3Bvc3RfaW5jCi1fY3RpX29wX3Bvc3RfZGVjCiBfX1pO
M0pTQzEwQVNUQnVpbGRlcjE4bWFrZUJpdHdpc2VOb3ROb2RlRVBOU18xNEV4cHJlc3Npb25Ob2Rl
RQogX19aTjNKU0MzSklUMTRlbWl0X29wX2JpdG5vdEVQTlNfMTFJbnN0cnVjdGlvbkUKIF9fWk4z
SlNDM0pJVDE4ZW1pdFNsb3dfb3BfYml0bm90RVBOU18xMUluc3RydWN0aW9uRVJQTlNfMTNTbG93
Q2FzZUVudHJ5RQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5jcHAJKHJldmlzaW9uIDE0OTE2NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MzcsMjYgKzgzNywxOCBAQCB2
b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKFByaW50U3RyZWFtCiAgICAgICAgICAgICBwcmlu
dEJpbmFyeU9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAiZ3JlYXRlcmVxIik7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBjYXNlIG9wX3ByZV9pbmM6IHsKKyAgICAg
ICAgY2FzZSBvcF9pbmM6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5k
OwogICAgICAgICAgICAgb3V0LnByaW50ZigiWyU0ZF0gcHJlX2luY1x0XHQgJXMiLCBsb2NhdGlv
biwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KLSAgICAgICAgY2FzZSBvcF9wcmVfZGVjOiB7CisgICAgICAgIGNhc2Ugb3BfZGVj
OiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAg
IG91dC5wcmludGYoIlslNGRdIHByZV9kZWNcdFx0ICVzIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFt
ZShleGVjLCByMCkuZGF0YSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAg
ICAgIGNhc2Ugb3BfcG9zdF9pbmM6IHsKLSAgICAgICAgICAgIHByaW50VW5hcnlPcChvdXQsIGV4
ZWMsIGxvY2F0aW9uLCBpdCwgInBvc3RfaW5jIik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgfQotICAgICAgICBjYXNlIG9wX3Bvc3RfZGVjOiB7Ci0gICAgICAgICAgICBwcmludFVuYXJ5
T3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJwb3N0X2RlYyIpOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBvcF90b19qc251bWJlcjogewotICAgICAgICAg
ICAgcHJpbnRVbmFyeU9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAidG9fanNudW1iZXIiKTsK
KyAgICAgICAgY2FzZSBvcF90b19udW1iZXI6IHsKKyAgICAgICAgICAgIHByaW50VW5hcnlPcChv
dXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgInRvX251bWJlciIpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9uZWdhdGU6IHsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgJKHJldmlzaW9uIDE0OTE2NSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAkod29ya2luZyBjb3B5KQpAQCAtNjcsMTEg
KzY3LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgbWFjcm8ob3BfZ3JlYXRlciwgNCkgXAogICAg
IG1hY3JvKG9wX2dyZWF0ZXJlcSwgNCkgXAogICAgIFwKLSAgICBtYWNybyhvcF9wcmVfaW5jLCAy
KSBcCi0gICAgbWFjcm8ob3BfcHJlX2RlYywgMikgXAotICAgIG1hY3JvKG9wX3Bvc3RfaW5jLCAz
KSBcCi0gICAgbWFjcm8ob3BfcG9zdF9kZWMsIDMpIFwKLSAgICBtYWNybyhvcF90b19qc251bWJl
ciwgMykgXAorICAgIG1hY3JvKG9wX2luYywgMikgXAorICAgIG1hY3JvKG9wX2RlYywgMikgXAor
ICAgIG1hY3JvKG9wX3RvX251bWJlciwgMykgXAogICAgIG1hY3JvKG9wX25lZ2F0ZSwgMykgXAog
ICAgIG1hY3JvKG9wX2FkZCwgNSkgXAogICAgIG1hY3JvKG9wX211bCwgNSkgXApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5jcHAJKHJldmlzaW9uIDE0OTE2NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDE2
LDM2ICsxMDE2LDIwIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0VW5hcnkK
ICAgICByZXR1cm4gZHN0OwogfQogCi1SZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dFByZUluYyhSZWdpc3RlcklEKiBzcmNEc3QpCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdEluYyhSZWdpc3RlcklEKiBzcmNEc3QpCiB7Ci0gICAgZW1pdE9wY29kZShvcF9wcmVf
aW5jKTsKKyAgICBlbWl0T3Bjb2RlKG9wX2luYyk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KHNyY0RzdC0+aW5kZXgoKSk7CiAgICAgcmV0dXJuIHNyY0RzdDsKIH0KIAotUmVnaXN0ZXJJRCog
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQcmVEZWMoUmVnaXN0ZXJJRCogc3JjRHN0KQorUmVnaXN0
ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWMoUmVnaXN0ZXJJRCogc3JjRHN0KQogewot
ICAgIGVtaXRPcGNvZGUob3BfcHJlX2RlYyk7CisgICAgZW1pdE9wY29kZShvcF9kZWMpOwogICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZChzcmNEc3QtPmluZGV4KCkpOwogICAgIHJldHVybiBzcmNE
c3Q7CiB9CiAKLVJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UG9zdEluYyhSZWdp
c3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyY0RzdCkKLXsKLSAgICBlbWl0T3Bjb2RlKG9wX3Bv
c3RfaW5jKTsKLSAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZHN0LT5pbmRleCgpKTsKLSAgICBp
bnN0cnVjdGlvbnMoKS5hcHBlbmQoc3JjRHN0LT5pbmRleCgpKTsKLSAgICByZXR1cm4gZHN0Owot
fQotCi1SZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFBvc3REZWMoUmVnaXN0ZXJJ
RCogZHN0LCBSZWdpc3RlcklEKiBzcmNEc3QpCi17Ci0gICAgZW1pdE9wY29kZShvcF9wb3N0X2Rl
Yyk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7Ci0gICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKHNyY0RzdC0+aW5kZXgoKSk7Ci0gICAgcmV0dXJuIGRzdDsKLX0KLQog
UmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRCaW5hcnlPcChPcGNvZGVJRCBvcGNv
ZGVJRCwgUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMxLCBSZWdpc3RlcklEKiBzcmMy
LCBPcGVyYW5kVHlwZXMgdHlwZXMpCiB7CiAgICAgZW1pdE9wY29kZShvcGNvZGVJRCk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5oCShyZXZpc2lvbiAxNDkxNjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0NSwx
MSArNDQ1LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE1v
dmUoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMpOwogCi0gICAgICAgIFJlZ2lzdGVy
SUQqIGVtaXRUb0pTTnVtYmVyKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjKSB7IHJl
dHVybiBlbWl0VW5hcnlPcChvcF90b19qc251bWJlciwgZHN0LCBzcmMpOyB9Ci0gICAgICAgIFJl
Z2lzdGVySUQqIGVtaXRQcmVJbmMoUmVnaXN0ZXJJRCogc3JjRHN0KTsKLSAgICAgICAgUmVnaXN0
ZXJJRCogZW1pdFByZURlYyhSZWdpc3RlcklEKiBzcmNEc3QpOwotICAgICAgICBSZWdpc3RlcklE
KiBlbWl0UG9zdEluYyhSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyY0RzdCk7Ci0gICAg
ICAgIFJlZ2lzdGVySUQqIGVtaXRQb3N0RGVjKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCog
c3JjRHN0KTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFRvTnVtYmVyKFJlZ2lzdGVySUQqIGRz
dCwgUmVnaXN0ZXJJRCogc3JjKSB7IHJldHVybiBlbWl0VW5hcnlPcChvcF90b19udW1iZXIsIGRz
dCwgc3JjKTsgfQorICAgICAgICBSZWdpc3RlcklEKiBlbWl0SW5jKFJlZ2lzdGVySUQqIHNyY0Rz
dCk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXREZWMoUmVnaXN0ZXJJRCogc3JjRHN0KTsKIAog
ICAgICAgICB2b2lkIGVtaXRDaGVja0hhc0luc3RhbmNlKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0
ZXJJRCogdmFsdWUsIFJlZ2lzdGVySUQqIGJhc2UsIExhYmVsKiB0YXJnZXQpOwogICAgICAgICBS
ZWdpc3RlcklEKiBlbWl0SW5zdGFuY2VPZihSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHZh
bHVlLCBSZWdpc3RlcklEKiBiYXNlUHJvdG90eXBlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAJKHJldmlzaW9uIDE0
OTE2NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2Vu
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjEwLDE2ICs2MTAsMTggQEAgUmVnaXN0ZXJJRCogQXBw
bHlGdW5jdGlvbkNhbGxEb3ROb2RlOjplbQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0gUG9zdGZpeE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1z
dGF0aWMgUmVnaXN0ZXJJRCogZW1pdFByZUluY09yRGVjKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5l
cmF0b3IsIFJlZ2lzdGVySUQqIHNyY0RzdCwgT3BlcmF0b3Igb3BlcikKK3N0YXRpYyBSZWdpc3Rl
cklEKiBlbWl0SW5jT3JEZWMoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJ
RCogc3JjRHN0LCBPcGVyYXRvciBvcGVyKQogewotICAgIHJldHVybiAob3BlciA9PSBPcFBsdXNQ
bHVzKSA/IGdlbmVyYXRvci5lbWl0UHJlSW5jKHNyY0RzdCkgOiBnZW5lcmF0b3IuZW1pdFByZURl
YyhzcmNEc3QpOworICAgIHJldHVybiAob3BlciA9PSBPcFBsdXNQbHVzKSA/IGdlbmVyYXRvci5l
bWl0SW5jKHNyY0RzdCkgOiBnZW5lcmF0b3IuZW1pdERlYyhzcmNEc3QpOwogfQogCiBzdGF0aWMg
UmVnaXN0ZXJJRCogZW1pdFBvc3RJbmNPckRlYyhCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9y
LCBSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyY0RzdCwgT3BlcmF0b3Igb3BlcikKIHsK
LSAgICBpZiAoc3JjRHN0ID09IGRzdCkKLSAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0VG9K
U051bWJlcihkc3QsIHNyY0RzdCk7Ci0gICAgcmV0dXJuIChvcGVyID09IE9wUGx1c1BsdXMpID8g
Z2VuZXJhdG9yLmVtaXRQb3N0SW5jKGRzdCwgc3JjRHN0KSA6IGdlbmVyYXRvci5lbWl0UG9zdERl
Yyhkc3QsIHNyY0RzdCk7CisgICAgaWYgKGRzdCA9PSBzcmNEc3QpCisgICAgICAgIHJldHVybiBn
ZW5lcmF0b3IuZW1pdFRvTnVtYmVyKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCksIHNy
Y0RzdCk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRtcCA9IGdlbmVyYXRvci5lbWl0VG9OdW1i
ZXIoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBzcmNEc3QpOworICAgIGVtaXRJbmNP
ckRlYyhnZW5lcmF0b3IsIHNyY0RzdCwgb3Blcik7CisgICAgcmV0dXJuIGdlbmVyYXRvci5tb3Zl
VG9EZXN0aW5hdGlvbklmTmVlZGVkKGRzdCwgdG1wLmdldCgpKTsKIH0KIAogUmVnaXN0ZXJJRCog
UG9zdGZpeE5vZGU6OmVtaXRSZXNvbHZlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJl
Z2lzdGVySUQqIGRzdCkKQEAgLTYzMywxMiArNjM1LDEyIEBAIFJlZ2lzdGVySUQqIFBvc3RmaXhO
b2RlOjplbWl0UmVzb2x2ZShCeXQKIAogICAgIFJlc29sdmVSZXN1bHQgcmVzb2x2ZVJlc3VsdCA9
IGdlbmVyYXRvci5yZXNvbHZlKGlkZW50KTsKIAotICAgIGlmIChSZWdpc3RlcklEKiBsb2NhbCA9
IHJlc29sdmVSZXN1bHQubG9jYWwoKSkgeworICAgIGlmIChSZWZQdHI8UmVnaXN0ZXJJRD4gbG9j
YWwgPSByZXNvbHZlUmVzdWx0LmxvY2FsKCkpIHsKICAgICAgICAgaWYgKHJlc29sdmVSZXN1bHQu
aXNSZWFkT25seSgpKSB7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFJlYWRPbmx5RXhjZXB0
aW9uSWZOZWVkZWQoKTsKLSAgICAgICAgICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdFRvSlNOdW1i
ZXIoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSwgbG9jYWwpOworICAgICAgICAgICAg
bG9jYWwgPSBnZW5lcmF0b3IuZW1pdE1vdmUoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3Qp
LCBsb2NhbC5nZXQoKSk7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGVtaXRQb3N0SW5jT3JE
ZWMoZ2VuZXJhdG9yLCBnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QpLCBsb2NhbCwgbV9v
cGVyYXRvcik7CisgICAgICAgIHJldHVybiBlbWl0UG9zdEluY09yRGVjKGdlbmVyYXRvciwgZ2Vu
ZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSwgbG9jYWwuZ2V0KCksIG1fb3BlcmF0b3IpOwog
ICAgIH0KIAogICAgIGlmIChyZXNvbHZlUmVzdWx0LmlzU3RhdGljKCkgJiYgIXJlc29sdmVSZXN1
bHQuaXNSZWFkT25seSgpKSB7CkBAIC04MTQsMjIgKzgxNiwxOCBAQCBSZWdpc3RlcklEKiBQcmVm
aXhOb2RlOjplbWl0UmVzb2x2ZShCeXRlCiAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQgPSBy
ZXNvbHZlLT5pZGVudGlmaWVyKCk7CiAKICAgICBSZXNvbHZlUmVzdWx0IHJlc29sdmVSZXN1bHQg
PSBnZW5lcmF0b3IucmVzb2x2ZShpZGVudCk7Ci0gICAgaWYgKFJlZ2lzdGVySUQqIGxvY2FsID0g
cmVzb2x2ZVJlc3VsdC5sb2NhbCgpKSB7CisgICAgaWYgKFJlZlB0cjxSZWdpc3RlcklEPiBsb2Nh
bCA9IHJlc29sdmVSZXN1bHQubG9jYWwoKSkgewogICAgICAgICBpZiAocmVzb2x2ZVJlc3VsdC5p
c1JlYWRPbmx5KCkpIHsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UmVhZE9ubHlFeGNlcHRp
b25JZk5lZWRlZCgpOwotICAgICAgICAgICAgaWYgKGRzdCA9PSBnZW5lcmF0b3IuaWdub3JlZFJl
c3VsdCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdFRvSlNOdW1iZXIo
Z2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBsb2NhbCk7Ci0gICAgICAgICAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gcjAgPSBnZW5lcmF0b3IuZW1pdExvYWQoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlv
bihkc3QpLCAobV9vcGVyYXRvciA9PSBPcFBsdXNQbHVzKSA/IDEuMCA6IC0xLjApOwotICAgICAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRCaW5hcnlPcChvcF9hZGQsIHIwLmdldCgpLCBsb2NhbCwgcjAu
Z2V0KCksIE9wZXJhbmRUeXBlcygpKTsKLSAgICAgICAgICAgIHJldHVybiBnZW5lcmF0b3IubW92
ZVRvRGVzdGluYXRpb25JZk5lZWRlZChkc3QsIHIwLmdldCgpKTsKKyAgICAgICAgICAgIGxvY2Fs
ID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgbG9j
YWwuZ2V0KCkpOwogICAgICAgICB9Ci0gICAgICAgIGVtaXRQcmVJbmNPckRlYyhnZW5lcmF0b3Is
IGxvY2FsLCBtX29wZXJhdG9yKTsKLSAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5tb3ZlVG9EZXN0
aW5hdGlvbklmTmVlZGVkKGRzdCwgbG9jYWwpOworICAgICAgICBlbWl0SW5jT3JEZWMoZ2VuZXJh
dG9yLCBsb2NhbC5nZXQoKSwgbV9vcGVyYXRvcik7CisgICAgICAgIHJldHVybiBnZW5lcmF0b3Iu
bW92ZVRvRGVzdGluYXRpb25JZk5lZWRlZChkc3QsIGxvY2FsLmdldCgpKTsKICAgICB9CiAKICAg
ICBpZiAocmVzb2x2ZVJlc3VsdC5pc1N0YXRpYygpICYmICFyZXNvbHZlUmVzdWx0LmlzUmVhZE9u
bHkoKSkgewogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJvcERzdCA9IGdlbmVyYXRvci5l
bWl0R2V0U3RhdGljVmFyKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgcmVzb2x2ZVJl
c3VsdCwgaWRlbnQpOwotICAgICAgICBlbWl0UHJlSW5jT3JEZWMoZ2VuZXJhdG9yLCBwcm9wRHN0
LmdldCgpLCBtX29wZXJhdG9yKTsKKyAgICAgICAgZW1pdEluY09yRGVjKGdlbmVyYXRvciwgcHJv
cERzdC5nZXQoKSwgbV9vcGVyYXRvcik7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0U3RhdGlj
VmFyKHJlc29sdmVSZXN1bHQsIGlkZW50LCBwcm9wRHN0LmdldCgpKTsKICAgICAgICAgcmV0dXJu
IGdlbmVyYXRvci5tb3ZlVG9EZXN0aW5hdGlvbklmTmVlZGVkKGRzdCwgcHJvcERzdC5nZXQoKSk7
CiAgICAgfQpAQCAtODM4LDcgKzgzNiw3IEBAIFJlZ2lzdGVySUQqIFByZWZpeE5vZGU6OmVtaXRS
ZXNvbHZlKEJ5dGUKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJvcERzdCA9IGdlbmVyYXRvci50
ZW1wRGVzdGluYXRpb24oZHN0KTsKICAgICBOb25sb2NhbFJlc29sdmVJbmZvIHJlc29sdmVWZXJp
ZmllcjsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2
ZVdpdGhCYXNlRm9yUHV0KGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgcHJvcERzdC5nZXQoKSwg
cmVzb2x2ZVJlc3VsdCwgaWRlbnQsIHJlc29sdmVWZXJpZmllcik7Ci0gICAgZW1pdFByZUluY09y
RGVjKGdlbmVyYXRvciwgcHJvcERzdC5nZXQoKSwgbV9vcGVyYXRvcik7CisgICAgZW1pdEluY09y
RGVjKGdlbmVyYXRvciwgcHJvcERzdC5nZXQoKSwgbV9vcGVyYXRvcik7CiAgICAgZ2VuZXJhdG9y
LmVtaXRQdXRUb0Jhc2UoYmFzZS5nZXQoKSwgaWRlbnQsIHByb3BEc3QuZ2V0KCksIHJlc29sdmVW
ZXJpZmllcik7CiAgICAgcmV0dXJuIGdlbmVyYXRvci5tb3ZlVG9EZXN0aW5hdGlvbklmTmVlZGVk
KGRzdCwgcHJvcERzdC5nZXQoKSk7CiB9CkBAIC04NTYsNyArODU0LDcgQEAgUmVnaXN0ZXJJRCog
UHJlZml4Tm9kZTo6ZW1pdEJyYWNrZXQoQnl0ZQogCiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNz
aW9uSW5mbyhicmFja2V0QWNjZXNzb3ItPmRpdm90KCksIGJyYWNrZXRBY2Nlc3Nvci0+c3RhcnRP
ZmZzZXQoKSwgYnJhY2tldEFjY2Vzc29yLT5lbmRPZmZzZXQoKSk7CiAgICAgUmVnaXN0ZXJJRCog
dmFsdWUgPSBnZW5lcmF0b3IuZW1pdEdldEJ5VmFsKHByb3BEc3QuZ2V0KCksIGJhc2UuZ2V0KCks
IHByb3BlcnR5LmdldCgpKTsKLSAgICBlbWl0UHJlSW5jT3JEZWMoZ2VuZXJhdG9yLCB2YWx1ZSwg
bV9vcGVyYXRvcik7CisgICAgZW1pdEluY09yRGVjKGdlbmVyYXRvciwgdmFsdWUsIG1fb3BlcmF0
b3IpOwogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgc3RhcnRPZmZz
ZXQoKSwgZW5kT2Zmc2V0KCkpOwogICAgIGdlbmVyYXRvci5lbWl0UHV0QnlWYWwoYmFzZS5nZXQo
KSwgcHJvcGVydHkuZ2V0KCksIHZhbHVlKTsKICAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmVUb0Rl
c3RpbmF0aW9uSWZOZWVkZWQoZHN0LCBwcm9wRHN0LmdldCgpKTsKQEAgLTg3NCw3ICs4NzIsNyBA
QCBSZWdpc3RlcklEKiBQcmVmaXhOb2RlOjplbWl0RG90KEJ5dGVjb2RlCiAKICAgICBnZW5lcmF0
b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRvdEFjY2Vzc29yLT5kaXZvdCgpLCBkb3RBY2Nlc3Nvci0+
c3RhcnRPZmZzZXQoKSwgZG90QWNjZXNzb3ItPmVuZE9mZnNldCgpKTsKICAgICBSZWdpc3RlcklE
KiB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0R2V0QnlJZChwcm9wRHN0LmdldCgpLCBiYXNlLmdldCgp
LCBpZGVudCk7Ci0gICAgZW1pdFByZUluY09yRGVjKGdlbmVyYXRvciwgdmFsdWUsIG1fb3BlcmF0
b3IpOworICAgIGVtaXRJbmNPckRlYyhnZW5lcmF0b3IsIHZhbHVlLCBtX29wZXJhdG9yKTsKICAg
ICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIHN0YXJ0T2Zmc2V0KCksIGVu
ZE9mZnNldCgpKTsKICAgICBnZW5lcmF0b3IuZW1pdFB1dEJ5SWQoYmFzZS5nZXQoKSwgaWRlbnQs
IHZhbHVlKTsKICAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmVUb0Rlc3RpbmF0aW9uSWZOZWVkZWQo
ZHN0LCBwcm9wRHN0LmdldCgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Qnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAxNDkxNjUpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjE5NiwzNSArMjE5NiwxOCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2ln
bmVkCiAKICAgICAgICAgLy8gPT09IEluY3JlbWVudC9EZWNyZW1lbnQgb3Bjb2RlcyA9PT0KIAot
ICAgICAgICBjYXNlIG9wX3ByZV9pbmM6IHsKKyAgICAgICAgY2FzZSBvcF9pbmM6IHsKICAgICAg
ICAgICAgIHVuc2lnbmVkIHNyY0RzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7
CiAgICAgICAgICAgICBOb2RlKiBvcCA9IGdldChzcmNEc3QpOwogICAgICAgICAgICAgc2V0KHNy
Y0RzdCwgbWFrZVNhZmUoYWRkVG9HcmFwaChBcml0aEFkZCwgb3AsIG9uZSgpKSkpOwotICAgICAg
ICAgICAgTkVYVF9PUENPREUob3BfcHJlX2luYyk7CisgICAgICAgICAgICBORVhUX09QQ09ERShv
cF9pbmMpOwogICAgICAgICB9CiAKLSAgICAgICAgY2FzZSBvcF9wb3N0X2luYzogewotICAgICAg
ICAgICAgdW5zaWduZWQgcmVzdWx0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsK
LSAgICAgICAgICAgIHVuc2lnbmVkIHNyY0RzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9w
ZXJhbmQ7Ci0gICAgICAgICAgICBBU1NFUlQocmVzdWx0ICE9IHNyY0RzdCk7IC8vIFJlcXVpcmVk
IGZvciBhc3N1bXB0aW9ucyB3ZSBtYWtlIGR1cmluZyBPU1IuCi0gICAgICAgICAgICBOb2RlKiBv
cCA9IGdldChzcmNEc3QpOwotICAgICAgICAgICAgc2V0UGFpcihyZXN1bHQsIG9wLCBzcmNEc3Qs
IG1ha2VTYWZlKGFkZFRvR3JhcGgoQXJpdGhBZGQsIG9wLCBvbmUoKSkpKTsKLSAgICAgICAgICAg
IE5FWFRfT1BDT0RFKG9wX3Bvc3RfaW5jKTsKLSAgICAgICAgfQotCi0gICAgICAgIGNhc2Ugb3Bf
cHJlX2RlYzogeworICAgICAgICBjYXNlIG9wX2RlYzogewogICAgICAgICAgICAgdW5zaWduZWQg
c3JjRHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKICAgICAgICAgICAgIE5v
ZGUqIG9wID0gZ2V0KHNyY0RzdCk7CiAgICAgICAgICAgICBzZXQoc3JjRHN0LCBtYWtlU2FmZShh
ZGRUb0dyYXBoKEFyaXRoU3ViLCBvcCwgb25lKCkpKSk7Ci0gICAgICAgICAgICBORVhUX09QQ09E
RShvcF9wcmVfZGVjKTsKLSAgICAgICAgfQotCi0gICAgICAgIGNhc2Ugb3BfcG9zdF9kZWM6IHsK
LSAgICAgICAgICAgIHVuc2lnbmVkIHJlc3VsdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9w
ZXJhbmQ7Ci0gICAgICAgICAgICB1bnNpZ25lZCBzcmNEc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25b
Ml0udS5vcGVyYW5kOwotICAgICAgICAgICAgTm9kZSogb3AgPSBnZXQoc3JjRHN0KTsKLSAgICAg
ICAgICAgIHNldFBhaXIocmVzdWx0LCBvcCwgc3JjRHN0LCBtYWtlU2FmZShhZGRUb0dyYXBoKEFy
aXRoU3ViLCBvcCwgb25lKCkpKSk7Ci0gICAgICAgICAgICBORVhUX09QQ09ERShvcF9wb3N0X2Rl
Yyk7CisgICAgICAgICAgICBORVhUX09QQ09ERShvcF9kZWMpOwogICAgICAgICB9CiAKICAgICAg
ICAgLy8gPT09IEFyaXRobWV0aWMgb3BlcmF0aW9ucyA9PT0KQEAgLTMzNzcsMTAgKzMzNjAsMTAg
QEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAg
TkVYVF9PUENPREUob3BfdHlwZW9mKTsKICAgICAgICAgfQogCi0gICAgICAgIGNhc2Ugb3BfdG9f
anNudW1iZXI6IHsKKyAgICAgICAgY2FzZSBvcF90b19udW1iZXI6IHsKICAgICAgICAgICAgIHNl
dChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLAogICAgICAgICAgICAgICAgIGFkZFRv
R3JhcGgoSWRlbnRpdHksIEVkZ2UoZ2V0KGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQp
LCBOdW1iZXJVc2UpKSk7Ci0gICAgICAgICAgICBORVhUX09QQ09ERShvcF90b19qc251bWJlcik7
CisgICAgICAgICAgICBORVhUX09QQ09ERShvcF90b19udW1iZXIpOwogICAgICAgICB9CiAKICAg
ICAgICAgZGVmYXVsdDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJp
bGl0aWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBh
YmlsaXRpZXMuaAkocmV2aXNpb24gMTQ5MTY1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDYXBhYmlsaXRpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtOTUsMTAgKzk1LDggQEAgaW5s
aW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlT3Bjb2RlKAogICAgIGNhc2Ugb3BfcnNoaWZ0
OgogICAgIGNhc2Ugb3BfbHNoaWZ0OgogICAgIGNhc2Ugb3BfdXJzaGlmdDoKLSAgICBjYXNlIG9w
X3ByZV9pbmM6Ci0gICAgY2FzZSBvcF9wb3N0X2luYzoKLSAgICBjYXNlIG9wX3ByZV9kZWM6Ci0g
ICAgY2FzZSBvcF9wb3N0X2RlYzoKKyAgICBjYXNlIG9wX2luYzoKKyAgICBjYXNlIG9wX2RlYzoK
ICAgICBjYXNlIG9wX2FkZDoKICAgICBjYXNlIG9wX3N1YjoKICAgICBjYXNlIG9wX25lZ2F0ZToK
QEAgLTE4Myw3ICsxODEsNyBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGVPcGNv
ZGUoCiAgICAgY2FzZSBvcF9wdXRfdG9fYmFzZV92YXJpYWJsZToKICAgICBjYXNlIG9wX3B1dF90
b19iYXNlOgogICAgIGNhc2Ugb3BfdHlwZW9mOgotICAgIGNhc2Ugb3BfdG9fanNudW1iZXI6Cisg
ICAgY2FzZSBvcF90b19udW1iZXI6CiAgICAgICAgIHJldHVybiBDYW5Db21waWxlOwogICAgICAg
ICAKICAgICBjYXNlIG9wX2NhbGxfdmFyYXJnczoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VC5jcHAJKHJldmlzaW9uIDE0OTE2NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjkwLDEwICsyOTAsOCBAQCB2b2lkIEpJVDo6cHJpdmF0
ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF9ub3QpCiAgICAgICAgIERF
RklORV9PUChvcF9uc3RyaWN0ZXEpCiAgICAgICAgIERFRklORV9PUChvcF9wb3Bfc2NvcGUpCi0g
ICAgICAgIERFRklORV9PUChvcF9wb3N0X2RlYykKLSAgICAgICAgREVGSU5FX09QKG9wX3Bvc3Rf
aW5jKQotICAgICAgICBERUZJTkVfT1Aob3BfcHJlX2RlYykKLSAgICAgICAgREVGSU5FX09QKG9w
X3ByZV9pbmMpCisgICAgICAgIERFRklORV9PUChvcF9kZWMpCisgICAgICAgIERFRklORV9PUChv
cF9pbmMpCiAgICAgICAgIERFRklORV9PUChvcF9wcm9maWxlX2RpZF9jYWxsKQogICAgICAgICBE
RUZJTkVfT1Aob3BfcHJvZmlsZV93aWxsX2NhbGwpCiAgICAgICAgIERFRklORV9PUChvcF9wdXNo
X25hbWVfc2NvcGUpCkBAIC0zNDYsNyArMzQ0LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxl
TWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfdGVhcl9vZmZfYXJndW1lbnRzKQogICAg
ICAgICBERUZJTkVfT1Aob3BfdGhyb3cpCiAgICAgICAgIERFRklORV9PUChvcF90aHJvd19zdGF0
aWNfZXJyb3IpCi0gICAgICAgIERFRklORV9PUChvcF90b19qc251bWJlcikKKyAgICAgICAgREVG
SU5FX09QKG9wX3RvX251bWJlcikKICAgICAgICAgREVGSU5FX09QKG9wX3RvX3ByaW1pdGl2ZSkK
IAogICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X3Njb3BlZF92YXIpCkBAIC00NzAsMTAgKzQ2OCw4
IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAgICAgICAgIERFRklORV9T
TE9XQ0FTRV9PUChvcF9uZXdfb2JqZWN0KQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3Bf
bm90KQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfbnN0cmljdGVxKQotICAgICAgICBE
RUZJTkVfU0xPV0NBU0VfT1Aob3BfcG9zdF9kZWMpCi0gICAgICAgIERFRklORV9TTE9XQ0FTRV9P
UChvcF9wb3N0X2luYykKLSAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3ByZV9kZWMpCi0g
ICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wcmVfaW5jKQorICAgICAgICBERUZJTkVfU0xP
V0NBU0VfT1Aob3BfZGVjKQorICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfaW5jKQogICAg
ICAgICBjYXNlIG9wX3B1dF9ieV9pZF9vdXRfb2ZfbGluZToKICAgICAgICAgY2FzZSBvcF9wdXRf
YnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6CiAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5z
aXRpb25fbm9ybWFsOgpAQCAtNDg2LDcgKzQ4Miw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGls
ZVNsb3dDYXNlcygpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF91cnNoaWZ0KQogICAg
ICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3Bfc3RyaWN0ZXEpCiAgICAgICAgIERFRklORV9TTE9X
Q0FTRV9PUChvcF9zdWIpCi0gICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF90b19qc251bWJl
cikKKyAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3RvX251bWJlcikKICAgICAgICAgREVG
SU5FX1NMT1dDQVNFX09QKG9wX3RvX3ByaW1pdGl2ZSkKIAogICAgICAgICBjYXNlIG9wX3Jlc29s
dmVfZ2xvYmFsX3Byb3BlcnR5OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCShyZXZpc2lv
biAxNDkxNjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCSh3b3JraW5nIGNv
cHkpCkBAIC03MDksMTAgKzcwOSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVt
aXRfb3Bfbm90KEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9uc3RyaWN0ZXEo
SW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3BvcF9zY29wZShJbnN0cnVjdGlv
biopOwotICAgICAgICB2b2lkIGVtaXRfb3BfcG9zdF9kZWMoSW5zdHJ1Y3Rpb24qKTsKLSAgICAg
ICAgdm9pZCBlbWl0X29wX3Bvc3RfaW5jKEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1p
dF9vcF9wcmVfZGVjKEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9wcmVfaW5j
KEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9kZWMoSW5zdHJ1Y3Rpb24qKTsK
KyAgICAgICAgdm9pZCBlbWl0X29wX2luYyhJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVt
aXRfb3BfcHJvZmlsZV9kaWRfY2FsbChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRf
b3BfcHJvZmlsZV93aWxsX2NhbGwoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29w
X3B1c2hfbmFtZV9zY29wZShJbnN0cnVjdGlvbiopOwpAQCAtNzQ0LDcgKzc0Miw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRfb3BfdGVhcl9vZmZfYXJndW1lbnRzKEluc3Ry
dWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF90aHJvdyhJbnN0cnVjdGlvbiopOwogICAg
ICAgICB2b2lkIGVtaXRfb3BfdGhyb3dfc3RhdGljX2Vycm9yKEluc3RydWN0aW9uKik7Ci0gICAg
ICAgIHZvaWQgZW1pdF9vcF90b19qc251bWJlcihJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lk
IGVtaXRfb3BfdG9fbnVtYmVyKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF90
b19wcmltaXRpdmUoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3VuZXhwZWN0
ZWRfbG9hZChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfdXJzaGlmdChJbnN0
cnVjdGlvbiopOwpAQCAtNzg5LDE3ICs3ODcsMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IHZvaWQgZW1pdFNsb3dfb3BfbmV3X29iamVjdChJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9ub3QoSW5zdHJ1
Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQg
ZW1pdFNsb3dfb3BfbnN0cmljdGVxKEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+
OjppdGVyYXRvciYpOwotICAgICAgICB2b2lkIGVtaXRTbG93X29wX3Bvc3RfZGVjKEluc3RydWN0
aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwotICAgICAgICB2b2lkIGVt
aXRTbG93X29wX3Bvc3RfaW5jKEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+Ojpp
dGVyYXRvciYpOwotICAgICAgICB2b2lkIGVtaXRTbG93X29wX3ByZV9kZWMoSW5zdHJ1Y3Rpb24q
LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7Ci0gICAgICAgIHZvaWQgZW1pdFNs
b3dfb3BfcHJlX2luYyhJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0
b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9kZWMoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8
U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfaW5j
KEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAg
ICB2b2lkIGVtaXRTbG93X29wX3B1dF9ieV9pZChJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9wdXRfYnlfdmFs
KEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAg
ICB2b2lkIGVtaXRTbG93X29wX2luaXRfZ2xvYmFsX2NvbnN0X2NoZWNrKEluc3RydWN0aW9uKiwg
VmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93
X29wX3JzaGlmdChJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3Im
KTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9zdHJpY3RlcShJbnN0cnVjdGlvbiosIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9z
dWIoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7Ci0gICAg
ICAgIHZvaWQgZW1pdFNsb3dfb3BfdG9fanNudW1iZXIoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xv
d0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfdG9fbnVt
YmVyKEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAg
ICAgICB2b2lkIGVtaXRTbG93X29wX3RvX3ByaW1pdGl2ZShJbnN0cnVjdGlvbiosIFZlY3RvcjxT
bG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF91cnNo
aWZ0KEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMzMl82NC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljMzJfNjQu
Y3BwCShyZXZpc2lvbiAxNDkxNjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFy
aXRobWV0aWMzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0OSw4MyArNDQ5LDcgQEAgdm9p
ZCBKSVQ6OmVtaXRTbG93X29wX2JpdHhvcihJbnN0cnVjdGlvbgogICAgIHN0dWJDYWxsLmNhbGwo
ZHN0KTsKIH0KIAotLy8gUG9zdEluYyAoaSsrKQotCi12b2lkIEpJVDo6ZW1pdF9vcF9wb3N0X2lu
YyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQotewotICAgIHVuc2lnbmVkIGRzdCA9
IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7Ci0gICAgdW5zaWduZWQgc3JjRHN0ID0g
Y3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKLQotICAgIGVtaXRMb2FkKHNyY0RzdCwg
cmVnVDEsIHJlZ1QwKTsKLSAgICBhZGRTbG93Q2FzZShicmFuY2gzMihOb3RFcXVhbCwgcmVnVDEs
IFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZykpKTsKLQotICAgIGlmIChkc3QgPT0gc3Jj
RHN0KSAvLyB4ID0geCsrIGlzIGEgbm9vcCBmb3IgaW50cy4KLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgbW92ZShyZWdUMCwgcmVnVDIpOwotICAgIGFkZFNsb3dDYXNlKGJyYW5jaEFkZDMyKE92ZXJm
bG93LCBUcnVzdGVkSW1tMzIoMSksIHJlZ1QyKSk7Ci0gICAgZW1pdFN0b3JlSW50MzIoc3JjRHN0
LCByZWdUMiwgdHJ1ZSk7Ci0KLSAgICBlbWl0U3RvcmVBbmRNYXBJbnQzMihkc3QsIHJlZ1QxLCBy
ZWdUMCwgZmFsc2UsIE9QQ09ERV9MRU5HVEgob3BfcG9zdF9pbmMpKTsKLSAgICBpZiAoY2FuQmVP
cHRpbWl6ZWRPcklubGluZWQoKSkKLSAgICAgICAgdW5tYXAoKTsKLX0KLQotdm9pZCBKSVQ6OmVt
aXRTbG93X29wX3Bvc3RfaW5jKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCi17Ci0gICAgdW5zaWduZWQgZHN0ID0g
Y3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKLSAgICB1bnNpZ25lZCBzcmNEc3QgPSBj
dXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOwotCi0gICAgbGlua1Nsb3dDYXNlKGl0ZXIp
OyAvLyBpbnQzMiBjaGVjawotICAgIGlmIChkc3QgIT0gc3JjRHN0KQotICAgICAgICBsaW5rU2xv
d0Nhc2UoaXRlcik7IC8vIG92ZXJmbG93IGNoZWNrCi0KLSAgICBKSVRTdHViQ2FsbCBzdHViQ2Fs
bCh0aGlzLCBjdGlfb3BfcG9zdF9pbmMpOwotICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KHNyY0Rz
dCk7Ci0gICAgc3R1YkNhbGwuYWRkQXJndW1lbnQoVHJ1c3RlZEltbTMyKHNyY0RzdCkpOwotICAg
IHN0dWJDYWxsLmNhbGwoZHN0KTsKLX0KLQotLy8gUG9zdERlYyAoaS0tKQotCi12b2lkIEpJVDo6
ZW1pdF9vcF9wb3N0X2RlYyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQotewotICAg
IHVuc2lnbmVkIGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7Ci0gICAgdW5z
aWduZWQgc3JjRHN0ID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKLQotICAgIGVt
aXRMb2FkKHNyY0RzdCwgcmVnVDEsIHJlZ1QwKTsKLSAgICBhZGRTbG93Q2FzZShicmFuY2gzMihO
b3RFcXVhbCwgcmVnVDEsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZykpKTsKLQotICAg
IGlmIChkc3QgPT0gc3JjRHN0KSAvLyB4ID0geC0tIGlzIGEgbm9vcCBmb3IgaW50cy4KLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgbW92ZShyZWdUMCwgcmVnVDIpOwotICAgIGFkZFNsb3dDYXNlKGJy
YW5jaFN1YjMyKE92ZXJmbG93LCBUcnVzdGVkSW1tMzIoMSksIHJlZ1QyKSk7Ci0gICAgZW1pdFN0
b3JlSW50MzIoc3JjRHN0LCByZWdUMiwgdHJ1ZSk7Ci0KLSAgICBlbWl0U3RvcmVBbmRNYXBJbnQz
Mihkc3QsIHJlZ1QxLCByZWdUMCwgZmFsc2UsIE9QQ09ERV9MRU5HVEgob3BfcG9zdF9kZWMpKTsK
LSAgICBpZiAoY2FuQmVPcHRpbWl6ZWRPcklubGluZWQoKSkKLSAgICAgICAgdW5tYXAoKTsKLX0K
LQotdm9pZCBKSVQ6OmVtaXRTbG93X29wX3Bvc3RfZGVjKEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCi17Ci0gICAg
dW5zaWduZWQgZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKLSAgICB1bnNp
Z25lZCBzcmNEc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOwotCi0gICAgbGlu
a1Nsb3dDYXNlKGl0ZXIpOyAvLyBpbnQzMiBjaGVjawotICAgIGlmIChkc3QgIT0gc3JjRHN0KQot
ICAgICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7IC8vIG92ZXJmbG93IGNoZWNrCi0KLSAgICBKSVRT
dHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfb3BfcG9zdF9kZWMpOwotICAgIHN0dWJDYWxsLmFk
ZEFyZ3VtZW50KHNyY0RzdCk7Ci0gICAgc3R1YkNhbGwuYWRkQXJndW1lbnQoVHJ1c3RlZEltbTMy
KHNyY0RzdCkpOwotICAgIHN0dWJDYWxsLmNhbGwoZHN0KTsKLX0KLQotLy8gUHJlSW5jICgrK2kp
Ci0KLXZvaWQgSklUOjplbWl0X29wX3ByZV9pbmMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKK3ZvaWQgSklUOjplbWl0X29wX2luYyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogewogICAgIHVuc2lnbmVkIHNyY0RzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9w
ZXJhbmQ7CiAKQEAgLTUzMywyNCArNDU3LDIyIEBAIHZvaWQgSklUOjplbWl0X29wX3ByZV9pbmMo
SW5zdHJ1Y3Rpb24qIGMKIAogICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMyKE5vdEVxdWFsLCByZWdU
MSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkludDMyVGFnKSkpOwogICAgIGFkZFNsb3dDYXNlKGJy
YW5jaEFkZDMyKE92ZXJmbG93LCBUcnVzdGVkSW1tMzIoMSksIHJlZ1QwKSk7Ci0gICAgZW1pdFN0
b3JlQW5kTWFwSW50MzIoc3JjRHN0LCByZWdUMSwgcmVnVDAsIHRydWUsIE9QQ09ERV9MRU5HVEgo
b3BfcHJlX2luYykpOworICAgIGVtaXRTdG9yZUFuZE1hcEludDMyKHNyY0RzdCwgcmVnVDEsIHJl
Z1QwLCB0cnVlLCBPUENPREVfTEVOR1RIKG9wX2luYykpOwogfQogCi12b2lkIEpJVDo6ZW1pdFNs
b3dfb3BfcHJlX2luYyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xv
d0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQordm9pZCBKSVQ6OmVtaXRTbG93X29wX2luYyhJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0
ZXJhdG9yJiBpdGVyKQogewogICAgIHVuc2lnbmVkIHNyY0RzdCA9IGN1cnJlbnRJbnN0cnVjdGlv
blsxXS51Lm9wZXJhbmQ7CiAKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7IC8vIGludDMyIGNoZWNr
CiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOyAvLyBvdmVyZmxvdyBjaGVjawogCi0gICAgSklUU3R1
YkNhbGwgc3R1YkNhbGwodGhpcywgY3RpX29wX3ByZV9pbmMpOworICAgIEpJVFN0dWJDYWxsIHN0
dWJDYWxsKHRoaXMsIGN0aV9vcF9pbmMpOwogICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KHNyY0Rz
dCk7CiAgICAgc3R1YkNhbGwuY2FsbChzcmNEc3QpOwogfQogCi0vLyBQcmVEZWMgKC0taSkKLQot
dm9pZCBKSVQ6OmVtaXRfb3BfcHJlX2RlYyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQordm9pZCBKSVQ6OmVtaXRfb3BfZGVjKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiB7CiAgICAgdW5zaWduZWQgc3JjRHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFu
ZDsKIApAQCAtNTU4LDE3ICs0ODAsMTcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHJlX2RlYyhJbnN0
cnVjdGlvbiogYwogCiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QxLCBU
cnVzdGVkSW1tMzIoSlNWYWx1ZTo6SW50MzJUYWcpKSk7CiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNo
U3ViMzIoT3ZlcmZsb3csIFRydXN0ZWRJbW0zMigxKSwgcmVnVDApKTsKLSAgICBlbWl0U3RvcmVB
bmRNYXBJbnQzMihzcmNEc3QsIHJlZ1QxLCByZWdUMCwgdHJ1ZSwgT1BDT0RFX0xFTkdUSChvcF9w
cmVfZGVjKSk7CisgICAgZW1pdFN0b3JlQW5kTWFwSW50MzIoc3JjRHN0LCByZWdUMSwgcmVnVDAs
IHRydWUsIE9QQ09ERV9MRU5HVEgob3BfZGVjKSk7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19v
cF9wcmVfZGVjKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZGVjKEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0
b3ImIGl0ZXIpCiB7CiAgICAgdW5zaWduZWQgc3JjRHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFd
LnUub3BlcmFuZDsKIAogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsgLy8gaW50MzIgY2hlY2sKICAg
ICBsaW5rU2xvd0Nhc2UoaXRlcik7IC8vIG92ZXJmbG93IGNoZWNrCiAKLSAgICBKSVRTdHViQ2Fs
bCBzdHViQ2FsbCh0aGlzLCBjdGlfb3BfcHJlX2RlYyk7CisgICAgSklUU3R1YkNhbGwgc3R1YkNh
bGwodGhpcywgY3RpX29wX2RlYyk7CiAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQoc3JjRHN0KTsK
ICAgICBzdHViQ2FsbC5jYWxsKHNyY0RzdCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVEFyaXRobWV0aWMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAJKHJldmlzaW9uIDE0OTE2NSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYy
OSw2NSArNjI5LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2JpdGFuZChJbnN0cnVjdGlvbgog
ICAgIH0KIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfcG9zdF9pbmMoSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKLXsKLSAgICB1bnNpZ25lZCByZXN1bHQgPSBjdXJyZW50SW5zdHJ1Y3Rp
b25bMV0udS5vcGVyYW5kOwotICAgIHVuc2lnbmVkIHNyY0RzdCA9IGN1cnJlbnRJbnN0cnVjdGlv
blsyXS51Lm9wZXJhbmQ7Ci0KLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHNyY0RzdCwgcmVn
VDApOwotICAgIG1vdmUocmVnVDAsIHJlZ1QxKTsKLSAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RJ
bW1lZGlhdGVJbnRlZ2VyKHJlZ1QwKTsKLSAgICBhZGRTbG93Q2FzZShicmFuY2hBZGQzMihPdmVy
ZmxvdywgVHJ1c3RlZEltbTMyKDEpLCByZWdUMSkpOwotICAgIGVtaXRGYXN0QXJpdGhJbnRUb0lt
bU5vQ2hlY2socmVnVDEsIHJlZ1QxKTsKLSAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKHNyY0Rz
dCwgcmVnVDEpOwotICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0KTsKLSAgICBpZiAo
Y2FuQmVPcHRpbWl6ZWRPcklubGluZWQoKSkKLSAgICAgICAga2lsbExhc3RSZXN1bHRSZWdpc3Rl
cigpOwotfQotCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcG9zdF9pbmMoSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikK
LXsKLSAgICB1bnNpZ25lZCByZXN1bHQgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5k
OwotICAgIHVuc2lnbmVkIHNyY0RzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7
Ci0KLSAgICBsaW5rU2xvd0Nhc2UoaXRlcik7Ci0gICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwotICAg
IEpJVFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGN0aV9vcF9wb3N0X2luYyk7Ci0gICAgc3R1YkNh
bGwuYWRkQXJndW1lbnQocmVnVDApOwotICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KEltbTMyKHNy
Y0RzdCkpOwotICAgIHN0dWJDYWxsLmNhbGwocmVzdWx0KTsKLX0KLQotdm9pZCBKSVQ6OmVtaXRf
b3BfcG9zdF9kZWMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKLXsKLSAgICB1bnNp
Z25lZCByZXN1bHQgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwotICAgIHVuc2ln
bmVkIHNyY0RzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7Ci0KLSAgICBlbWl0
R2V0VmlydHVhbFJlZ2lzdGVyKHNyY0RzdCwgcmVnVDApOwotICAgIG1vdmUocmVnVDAsIHJlZ1Qx
KTsKLSAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RJbW1lZGlhdGVJbnRlZ2VyKHJlZ1QwKTsKLSAg
ICBhZGRTbG93Q2FzZShicmFuY2hTdWIzMihPdmVyZmxvdywgVHJ1c3RlZEltbTMyKDEpLCByZWdU
MSkpOwotICAgIGVtaXRGYXN0QXJpdGhJbnRUb0ltbU5vQ2hlY2socmVnVDEsIHJlZ1QxKTsKLSAg
ICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKHNyY0RzdCwgcmVnVDEpOwotICAgIGVtaXRQdXRWaXJ0
dWFsUmVnaXN0ZXIocmVzdWx0KTsKLSAgICBpZiAoY2FuQmVPcHRpbWl6ZWRPcklubGluZWQoKSkK
LSAgICAgICAga2lsbExhc3RSZXN1bHRSZWdpc3RlcigpOwotfQotCi12b2lkIEpJVDo6ZW1pdFNs
b3dfb3BfcG9zdF9kZWMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNs
b3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKLXsKLSAgICB1bnNpZ25lZCByZXN1bHQgPSBj
dXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwotICAgIHVuc2lnbmVkIHNyY0RzdCA9IGN1
cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7Ci0KLSAgICBsaW5rU2xvd0Nhc2UoaXRlcik7
Ci0gICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwotICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMs
IGN0aV9vcF9wb3N0X2RlYyk7Ci0gICAgc3R1YkNhbGwuYWRkQXJndW1lbnQocmVnVDApOwotICAg
IHN0dWJDYWxsLmFkZEFyZ3VtZW50KEltbTMyKHNyY0RzdCkpOwotICAgIHN0dWJDYWxsLmNhbGwo
cmVzdWx0KTsKLX0KLQotdm9pZCBKSVQ6OmVtaXRfb3BfcHJlX2luYyhJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfaW5jKEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgdW5zaWduZWQgc3JjRHN0ID0gY3VycmVudEluc3RydWN0
aW9uWzFdLnUub3BlcmFuZDsKIApAQCAtNjk4LDcgKzY0MCw3IEBAIHZvaWQgSklUOjplbWl0X29w
X3ByZV9pbmMoSW5zdHJ1Y3Rpb24qIGMKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKHNyY0Rz
dCk7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9wcmVfaW5jKEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2
b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaW5jKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24s
IFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgdW5zaWduZWQg
c3JjRHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKIApAQCAtNzA2LDEyICs2
NDgsMTIgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3ByZV9pbmMoSW5zdHJ1Y3RpbwogICAgIGxp
bmtTbG93Q2FzZShpdGVyKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHNyY0RzdCwgcmVn
VDApOwogICAgIG5vdEltbS5saW5rKHRoaXMpOwotICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxsKHRo
aXMsIGN0aV9vcF9wcmVfaW5jKTsKKyAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlf
b3BfaW5jKTsKICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChyZWdUMCk7CiAgICAgc3R1YkNhbGwu
Y2FsbChzcmNEc3QpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9wcmVfZGVjKEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9kZWMoSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICB1bnNpZ25lZCBzcmNEc3QgPSBjdXJyZW50SW5z
dHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwogCkBAIC03MjIsNyArNjY0LDcgQEAgdm9pZCBKSVQ6OmVt
aXRfb3BfcHJlX2RlYyhJbnN0cnVjdGlvbiogYwogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIo
c3JjRHN0KTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX3ByZV9kZWMoSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRl
cikKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9kZWMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICB1bnNp
Z25lZCBzcmNEc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwogCkBAIC03MzAs
NyArNjcyLDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3ByZV9kZWMoSW5zdHJ1Y3RpbwogICAg
IGxpbmtTbG93Q2FzZShpdGVyKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHNyY0RzdCwg
cmVnVDApOwogICAgIG5vdEltbS5saW5rKHRoaXMpOwotICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxs
KHRoaXMsIGN0aV9vcF9wcmVfZGVjKTsKKyAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBj
dGlfb3BfZGVjKTsKICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChyZWdUMCk7CiAgICAgc3R1YkNh
bGwuY2FsbChzcmNEc3QpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGNvZGVzMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3Bjb2RlczMyXzY0LmNwcAkocmV2aXNpb24gMTQ5MTY1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NzksNyAr
OTc5LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcG9wX3Njb3BlKEluc3RydWN0aW9uKgogICAgIEpJ
VFN0dWJDYWxsKHRoaXMsIGN0aV9vcF9wb3Bfc2NvcGUpLmNhbGwoKTsKIH0KIAotdm9pZCBKSVQ6
OmVtaXRfb3BfdG9fanNudW1iZXIoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3Zv
aWQgSklUOjplbWl0X29wX3RvX251bWJlcihJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogewogICAgIGludCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwogICAg
IGludCBzcmMgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOwpAQCAtOTg3LDIxICs5
ODcsMjEgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfdG9fanNudW1iZXIoSW5zdHJ1Y3RpbwogICAgIGVt
aXRMb2FkKHNyYywgcmVnVDEsIHJlZ1QwKTsKIAogICAgIEp1bXAgaXNJbnQzMiA9IGJyYW5jaDMy
KEVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkludDMyVGFnKSk7Ci0gICAgYWRk
U2xvd0Nhc2UoYnJhbmNoMzIoQWJvdmVPckVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKEpTVmFs
dWU6OkVtcHR5VmFsdWVUYWcpKSk7CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIoQWJvdmVPckVx
dWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6Okxvd2VzdFRhZykpKTsKICAgICBpc0lu
dDMyLmxpbmsodGhpcyk7CiAKICAgICBpZiAoc3JjICE9IGRzdCkKICAgICAgICAgZW1pdFN0b3Jl
KGRzdCwgcmVnVDEsIHJlZ1QwKTsKLSAgICBtYXAobV9ieXRlY29kZU9mZnNldCArIE9QQ09ERV9M
RU5HVEgob3BfdG9fanNudW1iZXIpLCBkc3QsIHJlZ1QxLCByZWdUMCk7CisgICAgbWFwKG1fYnl0
ZWNvZGVPZmZzZXQgKyBPUENPREVfTEVOR1RIKG9wX3RvX251bWJlciksIGRzdCwgcmVnVDEsIHJl
Z1QwKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX3RvX2pzbnVtYmVyKEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0
ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfdG9fbnVtYmVyKEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAg
ICAgaW50IGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CiAKICAgICBsaW5r
U2xvd0Nhc2UoaXRlcik7CiAKLSAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfb3Bf
dG9fanNudW1iZXIpOworICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGN0aV9vcF90b19u
dW1iZXIpOwogICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KHJlZ1QxLCByZWdUMCk7CiAgICAgc3R1
YkNhbGwuY2FsbChkc3QpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGNvZGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
Y29kZXMuY3BwCShyZXZpc2lvbiAxNDkxNjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wY29kZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02ODQsMTggKzY4NCwxMiBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9uc3RyaWN0ZXEoSW5zdHJ1Y3Rpb24qCiAgICAgY29tcGlsZU9wU3RyaWN0
RXEoY3VycmVudEluc3RydWN0aW9uLCBPcE5TdHJpY3RFcSk7CiB9CiAKLXZvaWQgSklUOjplbWl0
X29wX3RvX2pzbnVtYmVyKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJ
VDo6ZW1pdF9vcF90b19udW1iZXIoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsK
ICAgICBpbnQgc3JjVlJlZyA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CiAgICAg
ZW1pdEdldFZpcnR1YWxSZWdpc3RlcihzcmNWUmVnLCByZWdUMCk7CiAgICAgCi0gICAgSnVtcCB3
YXNJbW1lZGlhdGUgPSBlbWl0SnVtcElmSW1tZWRpYXRlSW50ZWdlcihyZWdUMCk7Ci0KLSAgICBl
bWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDAsIHNyY1ZSZWcpOwotICAgIGxvYWRQdHIo
QWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QyKTsKLSAgICBh
ZGRTbG93Q2FzZShicmFuY2g4KE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QyLCBTdHJ1Y3R1cmU6OnR5
cGVJbmZvVHlwZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKE51bWJlclR5cGUpKSk7Ci0gICAgCi0g
ICAgd2FzSW1tZWRpYXRlLmxpbmsodGhpcyk7CisgICAgYWRkU2xvd0Nhc2UoZW1pdEp1bXBJZk5v
dEltbWVkaWF0ZU51bWJlcihyZWdUMCkpOwogCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihj
dXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKIH0KQEAgLTExMzksMTIgKzExMzMsMTEg
QEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2NvbnN0cnVjdChJbnN0cnVjdAogICAgIGNvbXBpbGVP
cENhbGxTbG93Q2FzZShvcF9jb25zdHJ1Y3QsIGN1cnJlbnRJbnN0cnVjdGlvbiwgaXRlciwgbV9j
YWxsTGlua0luZm9JbmRleCsrKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX3RvX2pzbnVt
YmVyKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5
Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfdG9fbnVtYmVyKEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0
b3ImIGl0ZXIpCiB7Ci0gICAgbGlua1Nsb3dDYXNlSWZOb3RKU0NlbGwoaXRlciwgY3VycmVudElu
c3RydWN0aW9uWzJdLnUub3BlcmFuZCk7CiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwogCi0gICAg
SklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywgY3RpX29wX3RvX2pzbnVtYmVyKTsKKyAgICBKSVRT
dHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfb3BfdG9fbnVtYmVyKTsKICAgICBzdHViQ2FsbC5h
ZGRBcmd1bWVudChyZWdUMCk7CiAgICAgc3R1YkNhbGwuY2FsbChjdXJyZW50SW5zdHJ1Y3Rpb25b
MV0udS5vcGVyYW5kKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1
YnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMu
Y3BwCShyZXZpc2lvbiAxNDkxNjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0
dWJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQzNiw3ICsxNDM2LDcgQEAgREVGSU5FX1NUVUJf
RlVOQ1RJT04oRW5jb2RlZEpTVmFsdWUsIG9wXwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
cmVzdWx0KTsKIH0KIAotREVGSU5FX1NUVUJfRlVOQ1RJT04oRW5jb2RlZEpTVmFsdWUsIG9wX3By
ZV9pbmMpCitERUZJTkVfU1RVQl9GVU5DVElPTihFbmNvZGVkSlNWYWx1ZSwgb3BfaW5jKQogewog
ICAgIFNUVUJfSU5JVF9TVEFDS19GUkFNRShzdGFja0ZyYW1lKTsKIApAQCAtMjgyMyw3ICsyODIz
LDcgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04oRW5jb2RlZEpTVmFsdWUsIG9wXwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIAotREVGSU5FX1NUVUJfRlVOQ1RJT04oRW5j
b2RlZEpTVmFsdWUsIG9wX3ByZV9kZWMpCitERUZJTkVfU1RVQl9GVU5DVElPTihFbmNvZGVkSlNW
YWx1ZSwgb3BfZGVjKQogewogICAgIFNUVUJfSU5JVF9TVEFDS19GUkFNRShzdGFja0ZyYW1lKTsK
IApAQCAtMjkwOSwyMSArMjkwOSw2IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKGludCwgb3BfanRy
dWUpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotREVGSU5FX1NUVUJfRlVOQ1RJT04oRW5jb2Rl
ZEpTVmFsdWUsIG9wX3Bvc3RfaW5jKQotewotICAgIFNUVUJfSU5JVF9TVEFDS19GUkFNRShzdGFj
a0ZyYW1lKTsKLQotICAgIEpTVmFsdWUgdiA9IHN0YWNrRnJhbWUuYXJnc1swXS5qc1ZhbHVlKCk7
Ci0KLSAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IHN0YWNrRnJhbWUuY2FsbEZyYW1lOwotCi0g
ICAgZG91YmxlIG51bWJlciA9IHYudG9OdW1iZXIoY2FsbEZyYW1lKTsKLSAgICBDSEVDS19GT1Jf
RVhDRVBUSU9OX0FUX0VORCgpOwotCi0gICAgY2FsbEZyYW1lLT5yZWdpc3RlcnMoKVtzdGFja0Zy
YW1lLmFyZ3NbMV0uaW50MzIoKV0gPSBqc051bWJlcihudW1iZXIgKyAxKTsKLSAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKG51bWJlcikpOwotfQotCiBERUZJTkVfU1RVQl9GVU5D
VElPTihpbnQsIG9wX2VxKQogewogICAgIFNUVUJfSU5JVF9TVEFDS19GUkFNRShzdGFja0ZyYW1l
KTsKQEAgLTMxMjcsMjEgKzMxMTIsNiBAQCBERUZJTkVfU1RVQl9GVU5DVElPTihFbmNvZGVkSlNW
YWx1ZSwgb3BfCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCi1ERUZJ
TkVfU1RVQl9GVU5DVElPTihFbmNvZGVkSlNWYWx1ZSwgb3BfcG9zdF9kZWMpCi17Ci0gICAgU1RV
Ql9JTklUX1NUQUNLX0ZSQU1FKHN0YWNrRnJhbWUpOwotCi0gICAgSlNWYWx1ZSB2ID0gc3RhY2tG
cmFtZS5hcmdzWzBdLmpzVmFsdWUoKTsKLQotICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gc3Rh
Y2tGcmFtZS5jYWxsRnJhbWU7Ci0KLSAgICBkb3VibGUgbnVtYmVyID0gdi50b051bWJlcihjYWxs
RnJhbWUpOwotICAgIENIRUNLX0ZPUl9FWENFUFRJT05fQVRfRU5EKCk7Ci0KLSAgICBjYWxsRnJh
bWUtPnJlZ2lzdGVycygpW3N0YWNrRnJhbWUuYXJnc1sxXS5pbnQzMigpXSA9IGpzTnVtYmVyKG51
bWJlciAtIDEpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIobnVtYmVyKSk7
Ci19Ci0KIERFRklORV9TVFVCX0ZVTkNUSU9OKEVuY29kZWRKU1ZhbHVlLCBvcF91cnNoaWZ0KQog
ewogICAgIFNUVUJfSU5JVF9TVEFDS19GUkFNRShzdGFja0ZyYW1lKTsKQEAgLTMzMzEsNyArMzMw
MSw3IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKEVuY29kZWRKU1ZhbHVlLCBvcF8KICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihyZXN1bHQpKTsKIH0KIAotREVGSU5FX1NUVUJf
RlVOQ1RJT04oRW5jb2RlZEpTVmFsdWUsIG9wX3RvX2pzbnVtYmVyKQorREVGSU5FX1NUVUJfRlVO
Q1RJT04oRW5jb2RlZEpTVmFsdWUsIG9wX3RvX251bWJlcikKIHsKICAgICBTVFVCX0lOSVRfU1RB
Q0tfRlJBTUUoc3RhY2tGcmFtZSk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUU3R1YnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0
dWJzLmgJKHJldmlzaW9uIDE0OTE2NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
U3R1YnMuaAkod29ya2luZyBjb3B5KQpAQCAtMzY2LDEwICszNjYsOCBAQCBFbmNvZGVkSlNWYWx1
ZSBKSVRfU1RVQiBjdGlfb3BfbXVsKFNUVUJfCiBFbmNvZGVkSlNWYWx1ZSBKSVRfU1RVQiBjdGlf
b3BfbmVnYXRlKFNUVUJfQVJHU19ERUNMQVJBVElPTikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpT
VmFsdWUgSklUX1NUVUIgY3RpX29wX25vdChTVFVCX0FSR1NfREVDTEFSQVRJT04pIFdURl9JTlRF
Uk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9TVFVCIGN0aV9vcF9uc3RyaWN0ZXEoU1RVQl9BUkdT
X0RFQ0xBUkFUSU9OKSBXVEZfSU5URVJOQUw7Ci1FbmNvZGVkSlNWYWx1ZSBKSVRfU1RVQiBjdGlf
b3BfcG9zdF9kZWMoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKSBXVEZfSU5URVJOQUw7Ci1FbmNvZGVk
SlNWYWx1ZSBKSVRfU1RVQiBjdGlfb3BfcG9zdF9pbmMoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKSBX
VEZfSU5URVJOQUw7Ci1FbmNvZGVkSlNWYWx1ZSBKSVRfU1RVQiBjdGlfb3BfcHJlX2RlYyhTVFVC
X0FSR1NfREVDTEFSQVRJT04pIFdURl9JTlRFUk5BTDsKLUVuY29kZWRKU1ZhbHVlIEpJVF9TVFVC
IGN0aV9vcF9wcmVfaW5jKFNUVUJfQVJHU19ERUNMQVJBVElPTikgV1RGX0lOVEVSTkFMOworRW5j
b2RlZEpTVmFsdWUgSklUX1NUVUIgY3RpX29wX2RlYyhTVFVCX0FSR1NfREVDTEFSQVRJT04pIFdU
Rl9JTlRFUk5BTDsKK0VuY29kZWRKU1ZhbHVlIEpJVF9TVFVCIGN0aV9vcF9pbmMoU1RVQl9BUkdT
X0RFQ0xBUkFUSU9OKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfU1RVQiBjdGlf
b3BfcmVzb2x2ZShTVFVCX0FSR1NfREVDTEFSQVRJT04pIFdURl9JTlRFUk5BTDsKIEVuY29kZWRK
U1ZhbHVlIEpJVF9TVFVCIGN0aV9vcF9yZXNvbHZlX2Jhc2UoU1RVQl9BUkdTX0RFQ0xBUkFUSU9O
KSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfU1RVQiBjdGlfb3BfcmVzb2x2ZV9i
YXNlX3N0cmljdF9wdXQoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKSBXVEZfSU5URVJOQUw7CkBAIC0z
ODEsNyArMzc5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX1NUVUIgY3RpX29wX3JzaGlmdChTVAog
RW5jb2RlZEpTVmFsdWUgSklUX1NUVUIgY3RpX29wX3N0cmNhdChTVFVCX0FSR1NfREVDTEFSQVRJ
T04pIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9TVFVCIGN0aV9vcF9zdHJpY3Rl
cShTVFVCX0FSR1NfREVDTEFSQVRJT04pIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJ
VF9TVFVCIGN0aV9vcF9zdWIoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKSBXVEZfSU5URVJOQUw7Ci1F
bmNvZGVkSlNWYWx1ZSBKSVRfU1RVQiBjdGlfb3BfdG9fanNudW1iZXIoU1RVQl9BUkdTX0RFQ0xB
UkFUSU9OKSBXVEZfSU5URVJOQUw7CitFbmNvZGVkSlNWYWx1ZSBKSVRfU1RVQiBjdGlfb3BfdG9f
bnVtYmVyKFNUVUJfQVJHU19ERUNMQVJBVElPTikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFs
dWUgSklUX1NUVUIgY3RpX29wX3RvX3ByaW1pdGl2ZShTVFVCX0FSR1NfREVDTEFSQVRJT04pIFdU
Rl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9TVFVCIGN0aV9vcF90eXBlb2YoU1RVQl9B
UkdTX0RFQ0xBUkFUSU9OKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfU1RVQiBj
dGlfb3BfdXJzaGlmdChTVFVCX0FSR1NfREVDTEFSQVRJT04pIFdURl9JTlRFUk5BTDsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkocmV2
aXNpb24gMTQ5MTY1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1Bh
dGhzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjAyLDIzICs2MDIsNyBAQCBMTElOVF9TTE9XX1BB
VEhfREVDTChzbG93X3BhdGhfcHJlX2RlYykKICAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJ
TlRfT1AoMSkuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpIC0gMSkpOwogfQogCi1MTElOVF9TTE9X
X1BBVEhfREVDTChzbG93X3BhdGhfcG9zdF9pbmMpCi17Ci0gICAgTExJTlRfQkVHSU4oKTsKLSAg
ICBkb3VibGUgcmVzdWx0ID0gTExJTlRfT1AoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpOwot
ICAgIExMSU5UX09QKDIpID0ganNOdW1iZXIocmVzdWx0ICsgMSk7Ci0gICAgTExJTlRfUkVUVVJO
KGpzTnVtYmVyKHJlc3VsdCkpOwotfQotCi1MTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhf
cG9zdF9kZWMpCi17Ci0gICAgTExJTlRfQkVHSU4oKTsKLSAgICBkb3VibGUgcmVzdWx0ID0gTExJ
TlRfT1AoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpOwotICAgIExMSU5UX09QKDIpID0ganNO
dW1iZXIocmVzdWx0IC0gMSk7Ci0gICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKHJlc3VsdCkpOwot
fQotCi1MTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfdG9fanNudW1iZXIpCitMTElOVF9T
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfdG9fbnVtYmVyKQogewogICAgIExMSU5UX0JFR0lOKCk7
CiAgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvTnVt
YmVyKGV4ZWMpKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93
UGF0aHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRT
bG93UGF0aHMuaAkocmV2aXNpb24gMTQ5MTY1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50U2xvd1BhdGhzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzNSw5ICsxMzUsNyBAQCBM
TElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2dyCiBMTElOVF9TTE9XX1BBVEhf
SElEREVOX0RFQ0woc2xvd19wYXRoX2dyZWF0ZXJlcSk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVO
X0RFQ0woc2xvd19wYXRoX3ByZV9pbmMpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNs
b3dfcGF0aF9wcmVfZGVjKTsKLUxMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhf
cG9zdF9pbmMpOwotTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wb3N0X2Rl
Yyk7Ci1MTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3RvX2pzbnVtYmVyKTsK
K0xMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfdG9fbnVtYmVyKTsKIExMSU5U
X1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbmVnYXRlKTsKIExMSU5UX1NMT1dfUEFU
SF9ISURERU5fREVDTChzbG93X3BhdGhfYWRkKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVD
TChzbG93X3BhdGhfbXVsKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyMzJfNjQuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCShyZXZpc2lvbiAxNDkxNjUp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0
LmFzbQkod29ya2luZyBjb3B5KQpAQCAtNTgyLDg4ICs1ODIsNDggQEAgX2xsaW50X29wX25zdHJp
Y3RlcToKICAgICBzdHJpY3RFcShtYWNybyAobGVmdCwgcmlnaHQsIHJlc3VsdCkgY2luZXEgbGVm
dCwgcmlnaHQsIHJlc3VsdCBlbmQsIF9sbGludF9zbG93X3BhdGhfbnN0cmljdGVxKQogCiAKLV9s
bGludF9vcF9wcmVfaW5jOgorX2xsaW50X29wX2luYzoKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAg
ICAgbG9hZGkgNFtQQ10sIHQwCi0gICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBJbnQz
MlRhZywgLm9wUHJlSW5jU2xvdworICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgSW50
MzJUYWcsIC5vcEluY1Nsb3cKICAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0
MQotICAgIGJhZGRpbyAxLCB0MSwgLm9wUHJlSW5jU2xvdworICAgIGJhZGRpbyAxLCB0MSwgLm9w
SW5jU2xvdwogICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQogICAgIGRp
c3BhdGNoKDIpCiAKLS5vcFByZUluY1Nsb3c6Cisub3BJbmNTbG93OgogICAgIGNhbGxTbG93UGF0
aChfbGxpbnRfc2xvd19wYXRoX3ByZV9pbmMpCiAgICAgZGlzcGF0Y2goMikKIAogCi1fbGxpbnRf
b3BfcHJlX2RlYzoKK19sbGludF9vcF9kZWM6CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGxv
YWRpIDRbUENdLCB0MAotICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgSW50MzJUYWcs
IC5vcFByZURlY1Nsb3cKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEludDMyVGFn
LCAub3BEZWNTbG93CiAgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDEKLSAg
ICBic3ViaW8gMSwgdDEsIC5vcFByZURlY1Nsb3cKKyAgICBic3ViaW8gMSwgdDEsIC5vcERlY1Ns
b3cKICAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KICAgICBkaXNwYXRj
aCgyKQogCi0ub3BQcmVEZWNTbG93OgorLm9wRGVjU2xvdzoKICAgICBjYWxsU2xvd1BhdGgoX2xs
aW50X3Nsb3dfcGF0aF9wcmVfZGVjKQogICAgIGRpc3BhdGNoKDIpCiAKIAotX2xsaW50X29wX3Bv
c3RfaW5jOgotICAgIHRyYWNlRXhlY3V0aW9uKCkKLSAgICBsb2FkaSA4W1BDXSwgdDAKLSAgICBs
b2FkaSA0W1BDXSwgdDEKLSAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEludDMyVGFn
LCAub3BQb3N0SW5jU2xvdwotICAgIGJpZXEgdDAsIHQxLCAub3BQb3N0SW5jRG9uZQotICAgIGxv
YWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQyCi0gICAgbW92ZSB0MiwgdDMKLSAgICBi
YWRkaW8gMSwgdDMsIC5vcFBvc3RJbmNTbG93Ci0gICAgc3RvcmVpIEludDMyVGFnLCBUYWdPZmZz
ZXRbY2ZyLCB0MSwgOF0KLSAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0K
LSAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KLS5vcFBvc3RJbmNEb25l
OgotICAgIGRpc3BhdGNoKDMpCi0KLS5vcFBvc3RJbmNTbG93OgotICAgIGNhbGxTbG93UGF0aChf
bGxpbnRfc2xvd19wYXRoX3Bvc3RfaW5jKQotICAgIGRpc3BhdGNoKDMpCi0KLQotX2xsaW50X29w
X3Bvc3RfZGVjOgotICAgIHRyYWNlRXhlY3V0aW9uKCkKLSAgICBsb2FkaSA4W1BDXSwgdDAKLSAg
ICBsb2FkaSA0W1BDXSwgdDEKLSAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEludDMy
VGFnLCAub3BQb3N0RGVjU2xvdwotICAgIGJpZXEgdDAsIHQxLCAub3BQb3N0RGVjRG9uZQotICAg
IGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQyCi0gICAgbW92ZSB0MiwgdDMKLSAg
ICBic3ViaW8gMSwgdDMsIC5vcFBvc3REZWNTbG93Ci0gICAgc3RvcmVpIEludDMyVGFnLCBUYWdP
ZmZzZXRbY2ZyLCB0MSwgOF0KLSAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwg
OF0KLSAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KLS5vcFBvc3REZWNE
b25lOgotICAgIGRpc3BhdGNoKDMpCi0KLS5vcFBvc3REZWNTbG93OgotICAgIGNhbGxTbG93UGF0
aChfbGxpbnRfc2xvd19wYXRoX3Bvc3RfZGVjKQotICAgIGRpc3BhdGNoKDMpCi0KLQotX2xsaW50
X29wX3RvX2pzbnVtYmVyOgorX2xsaW50X29wX3RvX251bWJlcjoKICAgICB0cmFjZUV4ZWN1dGlv
bigpCiAgICAgbG9hZGkgOFtQQ10sIHQwCiAgICAgbG9hZGkgNFtQQ10sIHQxCiAgICAgbG9hZENv
bnN0YW50T3JWYXJpYWJsZSh0MCwgdDIsIHQzKQotICAgIGJpZXEgdDIsIEludDMyVGFnLCAub3BU
b0pzbnVtYmVySXNJbnQKLSAgICBiaWFlcSB0MiwgRW1wdHlWYWx1ZVRhZywgLm9wVG9Kc251bWJl
clNsb3cKLS5vcFRvSnNudW1iZXJJc0ludDoKKyAgICBiaWVxIHQyLCBJbnQzMlRhZywgLm9wVG9O
dW1iZXJJc0ludAorICAgIGJpYWVxIHQyLCBMb3dlc3RUYWcsIC5vcFRvTnVtYmVyU2xvdworLm9w
VG9OdW1iZXJJc0ludDoKICAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQogICAg
IHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQogICAgIGRpc3BhdGNoKDMpCiAK
LS5vcFRvSnNudW1iZXJTbG93OgotICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3Rv
X2pzbnVtYmVyKQorLm9wVG9OdW1iZXJTbG93OgorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xv
d19wYXRoX3RvX251bWJlcikKICAgICBkaXNwYXRjaCgzKQogCiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCShy
ZXZpc2lvbiAxNDkxNjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjY0LmFzbQkod29ya2luZyBjb3B5KQpAQCAtNDU0LDYzICs0NTQsMzEgQEAgbWFj
cm8gcHJlT3AoYXJpdGhtZXRpY09wZXJhdGlvbiwgc2xvd1BhdAogICAgIGRpc3BhdGNoKDIpCiBl
bmQKIAotX2xsaW50X29wX3ByZV9pbmM6CitfbGxpbnRfb3BfaW5jOgogICAgIHByZU9wKAogICAg
ICAgICBtYWNybyAodmFsdWUsIHNsb3cpIGJhZGRpbyAxLCB2YWx1ZSwgc2xvdyBlbmQsCiAgICAg
ICAgIF9sbGludF9zbG93X3BhdGhfcHJlX2luYykKIAogCi1fbGxpbnRfb3BfcHJlX2RlYzoKK19s
bGludF9vcF9kZWM6CiAgICAgcHJlT3AoCiAgICAgICAgIG1hY3JvICh2YWx1ZSwgc2xvdykgYnN1
YmlvIDEsIHZhbHVlLCBzbG93IGVuZCwKICAgICAgICAgX2xsaW50X3Nsb3dfcGF0aF9wcmVfZGVj
KQogCiAKLW1hY3JvIHBvc3RPcChhcml0aG1ldGljT3BlcmF0aW9uLCBzbG93UGF0aCkKLSAgICB0
cmFjZUV4ZWN1dGlvbigpCi0gICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDIsIHQwKQotICAgIGxv
YWRpc0Zyb21JbnN0cnVjdGlvbigxLCB0MSkKLSAgICBsb2FkcSBbY2ZyLCB0MCwgOF0sIHQyCi0g
ICAgYmllcSB0MCwgdDEsIC5kb25lCi0gICAgYnFiIHQyLCB0YWdUeXBlTnVtYmVyLCAuc2xvdwot
ICAgIG1vdmUgdDIsIHQzCi0gICAgYXJpdGhtZXRpY09wZXJhdGlvbih0MywgLnNsb3cpCi0gICAg
b3JxIHRhZ1R5cGVOdW1iZXIsIHQzCi0gICAgc3RvcmVxIHQyLCBbY2ZyLCB0MSwgOF0KLSAgICBz
dG9yZXEgdDMsIFtjZnIsIHQwLCA4XQotLmRvbmU6Ci0gICAgZGlzcGF0Y2goMykKLQotLnNsb3c6
Ci0gICAgY2FsbFNsb3dQYXRoKHNsb3dQYXRoKQotICAgIGRpc3BhdGNoKDMpCi1lbmQKLQotX2xs
aW50X29wX3Bvc3RfaW5jOgotICAgIHBvc3RPcCgKLSAgICAgICAgbWFjcm8gKHZhbHVlLCBzbG93
KSBiYWRkaW8gMSwgdmFsdWUsIHNsb3cgZW5kLAotICAgICAgICBfbGxpbnRfc2xvd19wYXRoX3Bv
c3RfaW5jKQotCi0KLV9sbGludF9vcF9wb3N0X2RlYzoKLSAgICBwb3N0T3AoCi0gICAgICAgIG1h
Y3JvICh2YWx1ZSwgc2xvdykgYnN1YmlvIDEsIHZhbHVlLCBzbG93IGVuZCwKLSAgICAgICAgX2xs
aW50X3Nsb3dfcGF0aF9wb3N0X2RlYykKLQotCi1fbGxpbnRfb3BfdG9fanNudW1iZXI6CitfbGxp
bnRfb3BfdG9fbnVtYmVyOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBsb2FkaXNGcm9tSW5z
dHJ1Y3Rpb24oMiwgdDApCiAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDEsIHQxKQogICAgIGxv
YWRDb25zdGFudE9yVmFyaWFibGUodDAsIHQyKQotICAgIGJxYWVxIHQyLCB0YWdUeXBlTnVtYmVy
LCAub3BUb0pzbnVtYmVySXNJbW1lZGlhdGUKLSAgICBidHF6IHQyLCB0YWdUeXBlTnVtYmVyLCAu
b3BUb0pzbnVtYmVyU2xvdwotLm9wVG9Kc251bWJlcklzSW1tZWRpYXRlOgorICAgIGJxYWVxIHQy
LCB0YWdUeXBlTnVtYmVyLCAub3BUb051bWJlcklzSW1tZWRpYXRlCisgICAgYnRxeiB0MiwgdGFn
VHlwZU51bWJlciwgLm9wVG9OdW1iZXJTbG93Cisub3BUb051bWJlcklzSW1tZWRpYXRlOgogICAg
IHN0b3JlcSB0MiwgW2NmciwgdDEsIDhdCiAgICAgZGlzcGF0Y2goMykKIAotLm9wVG9Kc251bWJl
clNsb3c6Ci0gICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfdG9fanNudW1iZXIpCisu
b3BUb051bWJlclNsb3c6CisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfdG9fbnVt
YmVyKQogICAgIGRpc3BhdGNoKDMpCiAKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9Ob2RlQ29uc3RydWN0b3JzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmgJKHJldmlzaW9uIDE0OTE2NSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zNTUsNyArMzU1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgfQogCiAgICAgaW5saW5l
IFVuYXJ5UGx1c05vZGU6OlVuYXJ5UGx1c05vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2Nh
dGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpCi0gICAgICAgIDogVW5hcnlPcE5vZGUobG9jYXRp
b24sIFJlc3VsdFR5cGU6Om51bWJlclR5cGUoKSwgZXhwciwgb3BfdG9fanNudW1iZXIpCisgICAg
ICAgIDogVW5hcnlPcE5vZGUobG9jYXRpb24sIFJlc3VsdFR5cGU6Om51bWJlclR5cGUoKSwgZXhw
ciwgb3BfdG9fbnVtYmVyKQogICAgIHsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAxNDkxNjUpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtOTAsNyArOTAsNyBAQCBib29sIGpzSXNPYmplY3RUeXBlKENhbGxGcmFtZSogY2FsbEZyYW1l
CiAgICAgICAgIHJldHVybiB2LmlzTnVsbCgpOwogCiAgICAgSlNUeXBlIHR5cGUgPSB2LmFzQ2Vs
bCgpLT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS50eXBlKCk7Ci0gICAgaWYgKHR5cGUgPT0gTnVt
YmVyVHlwZSB8fCB0eXBlID09IFN0cmluZ1R5cGUpCisgICAgaWYgKHR5cGUgPT0gU3RyaW5nVHlw
ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICh0eXBlID49IE9iamVjdFR5cGUpIHsK
ICAgICAgICAgaWYgKGFzT2JqZWN0KHYpLT5zdHJ1Y3R1cmUoKS0+bWFzcXVlcmFkZXNBc1VuZGVm
aW5lZChjYWxsRnJhbWUtPmxleGljYWxHbG9iYWxPYmplY3QoKSkpCg==
</data>
<flag name="review"
          id="221254"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
      

    </bug>

</bugzilla>