<?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>80335</bug_id>
          
          <creation_ts>2012-03-05 15:13:36 -0800</creation_ts>
          <short_desc>putByIndex should throw in strict mode</short_desc>
          <delta_ts>2012-03-06 23:49:43 -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>JavaScriptCore</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="Gavin Barraclough">barraclough</reporter>
          <assigned_to name="Gavin Barraclough">barraclough</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>571085</commentid>
    <comment_count>0</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-03-05 15:13:36 -0800</bug_when>
    <thetext>We&apos;ll need to pass an additional parameter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571153</commentid>
    <comment_count>1</comment_count>
      <attachid>130226</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-03-05 16:28:28 -0800</bug_when>
    <thetext>Created attachment 130226
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571237</commentid>
    <comment_count>2</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-03-05 17:20:25 -0800</bug_when>
    <thetext>Fixed for primitives in r109824.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571509</commentid>
    <comment_count>3</comment_count>
      <attachid>130298</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-03-05 22:45:50 -0800</bug_when>
    <thetext>Created attachment 130298
Part 2 - fixes pretty much everything.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571534</commentid>
    <comment_count>4</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-03-05 23:24:00 -0800</bug_when>
    <thetext>Part 2 landed in r109866, still need some fixing for shift/unshift.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571535</commentid>
    <comment_count>5</comment_count>
      <attachid>130298</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-03-05 23:24:29 -0800</bug_when>
    <thetext>Comment on attachment 130298
Part 2 - fixes pretty much everything.

Attachment 130298 did not pass win-ews (win):
Output: http://queues.webkit.org/results/11837199</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571537</commentid>
    <comment_count>6</comment_count>
      <attachid>130298</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-05 23:26:07 -0800</bug_when>
    <thetext>Comment on attachment 130298
Part 2 - fixes pretty much everything.

Attachment 130298 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11836194

New failing tests:
fast/js/mozilla/strict/15.4.4.13.html
fast/js/mozilla/strict/15.4.4.8.html
fast/js/mozilla/strict/15.4.4.9.html
fast/js/mozilla/strict/15.4.4.12.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571648</commentid>
    <comment_count>7</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-03-06 01:50:34 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 130298 [details])
&gt; Attachment 130298 [details] did not pass chromium-ews (chromium-xvfb):
&gt; Output: http://queues.webkit.org/results/11836194
&gt; 
&gt; New failing tests:
&gt; fast/js/mozilla/strict/15.4.4.13.html
&gt; fast/js/mozilla/strict/15.4.4.8.html
&gt; fast/js/mozilla/strict/15.4.4.9.html
&gt; fast/js/mozilla/strict/15.4.4.12.html

It seems that this needs a V8 fix. I marked these tests as TEXT, and filed a bug in V8: http://code.google.com/p/v8/issues/detail?id=1992</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572600</commentid>
    <comment_count>8</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-03-06 23:49:43 -0800</bug_when>
    <thetext>Last piece of this was resolved as a part of bug#80467</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130226</attachid>
            <date>2012-03-05 16:28:28 -0800</date>
            <delta_ts>2012-03-05 16:31:35 -0800</delta_ts>
            <desc>patch</desc>
            <filename>80335.patch</filename>
            <type>text/plain</type>
            <size>17295</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA5ODEyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBA
CisyMDEyLTAzLTA1ICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4K
KworICAgICAgICBwdXRCeUluZGV4IHNob3VsZCB0aHJvdyBpbiBzdHJpY3QgbW9kZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODAzMzUKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSdsbCBuZWVkIHRvIHBh
c3MgYW4gYWRkaXRpb25hbCBwYXJhbWV0ZXIuCisKKyAgICAgICAgUGFydCAxIC0gcmVuYW1lIEpT
VmFsdWU6OnB1dCgpIGZvciBpbnRlZ2VyIGluZGljZXMgdG8gSlNWYWx1ZTo6cHV0QnlJbmRleCgp
CisgICAgICAgIHRvIG1hdGNoIHRoZSBtZXRob2QgaW4gdGhlIE1ldGhvZFRhYmxlLCBtYWtlIHRo
aXMgdGFrZSBhIHBhcmFtZXRlciBpbmRpY2F0aW5nCisgICAgICAgIHdoZXRoZXIgdGhlIHB1dCBz
aG91bGQgdGhyb3cuIFRoaXMgZml4ZXMgdGhlIGNhc2VzIHdoZXJlIHRoZSBiYXNlIG9mIHRoZSBw
dXQKKyAgICAgICAgaXMgYSBwcmltaXRpdmUuCisKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9u
cy5jcHA6CisgICAgICAgIChERkcpOgorICAgICAgICAoSlNDOjpERkc6OnB1dEJ5VmFsKToKKyAg
ICAgICAgKEpTQzo6REZHOjpvcGVyYXRpb25QdXRCeVZhbEludGVybmFsKToKKyAgICAgICAgKiBp
bnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpl
eGVjdXRlKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnByaXZhdGVFeGVjdXRlKToKKyAg
ICAgICAgKiBqaXQvSklUU3R1YnMuY3BwOgorICAgICAgICAoSlNDOjpERUZJTkVfU1RVQl9GVU5D
VElPTik6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoSlND
OjpMTEludDo6TExJTlRfU0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmpl
Y3QuaDoKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6cHV0QnlJbmRleCk6CisgICAgICAgICogcnVu
dGltZS9KU1ZhbHVlLmNwcDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgICogcnVudGltZS9KU1Zh
bHVlLmg6CisgICAgICAgIChKU1ZhbHVlKToKKwogMjAxMi0wMy0wNSAgU2FtIFdlaW5pZyAgPHNh
bUB3ZWJraXQub3JnPgogCiAgICAgICAgIEFkZCBzdXBwb3J0IGZvciBob3N0aW5nIGxheWVycyBp
biB0aGUgd2luZG93IHNlcnZlciBpbiBXZWJLaXQyCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDEwOTY0MykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0
Niw2ICsxNDYsNyBAQCBGVU5DVElPTl9XUkFQUEVSX1dJVEhfUkVUVVJOX0FERFJFU1NfRUpDCiAK
IG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAordGVtcGxhdGU8Ym9vbCBzdHJpY3Q+
CiBzdGF0aWMgaW5saW5lIHZvaWQgcHV0QnlWYWwoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJh
c2VWYWx1ZSwgdWludDMyX3QgaW5kZXgsIEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgSlNHbG9iYWxE
YXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKQEAgLTE3NSw3ICsxNzYsNyBA
QCBzdGF0aWMgaW5saW5lIHZvaWQgcHV0QnlWYWwoRXhlY1N0YXRlKiBlCiAgICAgICAgIH0KICAg
ICB9CiAKLSAgICBiYXNlVmFsdWUucHV0KGV4ZWMsIGluZGV4LCB2YWx1ZSk7CisgICAgYmFzZVZh
bHVlLnB1dEJ5SW5kZXgoZXhlYywgaW5kZXgsIHZhbHVlLCBzdHJpY3QpOwogfQogCiB0ZW1wbGF0
ZTxib29sIHN0cmljdD4KQEAgLTE4OSw3ICsxOTAsNyBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyB2
b2lkIERGR19PUEVSQVRJT04gCiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkVmFsdWUpOwogCiAgICAgaWYgKExJS0VMWShwcm9wZXJ0eS5pc1VJbnQzMigpKSkgewot
ICAgICAgICBwdXRCeVZhbChleGVjLCBiYXNlVmFsdWUsIHByb3BlcnR5LmFzVUludDMyKCksIHZh
bHVlKTsKKyAgICAgICAgcHV0QnlWYWw8c3RyaWN0PihleGVjLCBiYXNlVmFsdWUsIHByb3BlcnR5
LmFzVUludDMyKCksIHZhbHVlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTk3LDcg
KzE5OCw3IEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIHZvaWQgREZHX09QRVJBVElPTiAKICAgICAg
ICAgZG91YmxlIHByb3BlcnR5QXNEb3VibGUgPSBwcm9wZXJ0eS5hc0RvdWJsZSgpOwogICAgICAg
ICB1aW50MzJfdCBwcm9wZXJ0eUFzVUludDMyID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHByb3Bl
cnR5QXNEb3VibGUpOwogICAgICAgICBpZiAocHJvcGVydHlBc0RvdWJsZSA9PSBwcm9wZXJ0eUFz
VUludDMyKSB7Ci0gICAgICAgICAgICBwdXRCeVZhbChleGVjLCBiYXNlVmFsdWUsIHByb3BlcnR5
QXNVSW50MzIsIHZhbHVlKTsKKyAgICAgICAgICAgIHB1dEJ5VmFsPHN0cmljdD4oZXhlYywgYmFz
ZVZhbHVlLCBwcm9wZXJ0eUFzVUludDMyLCB2YWx1ZSk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
SW50ZXJwcmV0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9JbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDEwOTY0MykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTExNTgsNyArMTE1OCw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoUHJvZ3JhbUV4
ZWMKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNh
c2UgSlNPTlBQYXRoRW50cnlUeXBlTG9va3VwOiB7Ci0gICAgICAgICAgICAgICAgYmFzZU9iamVj
dC5wdXQoY2FsbEZyYW1lLCBKU09OUFBhdGgubGFzdCgpLm1fcGF0aEluZGV4LCBKU09OUFZhbHVl
KTsKKyAgICAgICAgICAgICAgICBiYXNlT2JqZWN0LnB1dEJ5SW5kZXgoY2FsbEZyYW1lLCBKU09O
UFBhdGgubGFzdCgpLm1fcGF0aEluZGV4LCBKU09OUFZhbHVlLCBzbG90LmlzU3RyaWN0TW9kZSgp
KTsKICAgICAgICAgICAgICAgICBpZiAoY2FsbEZyYW1lLT5oYWRFeGNlcHRpb24oKSkKICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgICAgICAgICAgICAgYnJl
YWs7CkBAIC0zNzkwLDkgKzM3OTAsOSBAQCBza2lwX2lkX2N1c3RvbV9zZWxmOgogICAgICAgICAg
ICAgICAgIGVsc2UgaWYgKGpzVmFsdWUuaXNEb3VibGUoKSkKICAgICAgICAgICAgICAgICAgICAg
anNCeXRlQXJyYXktPnNldEluZGV4KGksIGpzVmFsdWUuYXNEb3VibGUoKSk7CiAgICAgICAgICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBiYXNlVmFsdWUucHV0KGNhbGxGcmFtZSwg
aSwganNWYWx1ZSk7CisgICAgICAgICAgICAgICAgICAgIGJhc2VWYWx1ZS5wdXRCeUluZGV4KGNh
bGxGcmFtZSwgaSwganNWYWx1ZSwgY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSk7CiAgICAgICAg
ICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBiYXNlVmFsdWUucHV0KGNhbGxGcmFtZSwgaSwg
Y2FsbEZyYW1lLT5yKHZhbHVlKS5qc1ZhbHVlKCkpOworICAgICAgICAgICAgICAgIGJhc2VWYWx1
ZS5wdXRCeUluZGV4KGNhbGxGcmFtZSwgaSwgY2FsbEZyYW1lLT5yKHZhbHVlKS5qc1ZhbHVlKCks
IGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgSWRlbnRpZmllciBwcm9wZXJ0eShjYWxsRnJhbWUsIHN1YnNjcmlwdC50b1N0cmluZyhjYWxs
RnJhbWUpLT52YWx1ZShjYWxsRnJhbWUpKTsKICAgICAgICAgICAgIGlmICghZ2xvYmFsRGF0YS0+
ZXhjZXB0aW9uKSB7IC8vIERvbid0IHB1dCB0byBhbiBvYmplY3QgaWYgdG9TdHJpbmcgdGhyZXcg
YW4gZXhjZXB0aW9uLgpAQCAtMzg1NSw3ICszODU1LDkgQEAgc2tpcF9pZF9jdXN0b21fc2VsZjoK
ICAgICAgICAgdW5zaWduZWQgcHJvcGVydHkgPSB2UENbMl0udS5vcGVyYW5kOwogICAgICAgICBp
bnQgdmFsdWUgPSB2UENbM10udS5vcGVyYW5kOwogCi0gICAgICAgIGNhbGxGcmFtZS0+cihiYXNl
KS5qc1ZhbHVlKCkucHV0KGNhbGxGcmFtZSwgcHJvcGVydHksIGNhbGxGcmFtZS0+cih2YWx1ZSku
anNWYWx1ZSgpKTsKKyAgICAgICAgSlNWYWx1ZSBhcnJheVZhbHVlID0gY2FsbEZyYW1lLT5yKGJh
c2UpLmpzVmFsdWUoKTsKKyAgICAgICAgQVNTRVJUKGlzSlNBcnJheShhcnJheVZhbHVlKSk7Cisg
ICAgICAgIGFzQXJyYXkoYXJyYXlWYWx1ZSktPnB1dERpcmVjdEluZGV4KGNhbGxGcmFtZSwgcHJv
cGVydHksIGNhbGxGcmFtZS0+cih2YWx1ZSkuanNWYWx1ZSgpLCBmYWxzZSk7CiAKICAgICAgICAg
dlBDICs9IE9QQ09ERV9MRU5HVEgob3BfcHV0X2J5X2luZGV4KTsKICAgICAgICAgTkVYVF9JTlNU
UlVDVElPTigpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAJKHJl
dmlzaW9uIDEwOTY0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNTYxLDkgKzI1NjEsOSBAQCBERUZJTkVfU1RVQl9GVU5DVElP
Tih2b2lkLCBvcF9wdXRfYnlfdmFsCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQog
Ci0gICAgICAgICAgICBiYXNlVmFsdWUucHV0KGNhbGxGcmFtZSwgaSwgdmFsdWUpOworICAgICAg
ICAgICAgYmFzZVZhbHVlLnB1dEJ5SW5kZXgoY2FsbEZyYW1lLCBpLCB2YWx1ZSwgY2FsbEZyYW1l
LT5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkpOwogICAgICAgICB9IGVsc2UKLSAgICAgICAg
ICAgIGJhc2VWYWx1ZS5wdXQoY2FsbEZyYW1lLCBpLCB2YWx1ZSk7CisgICAgICAgICAgICBiYXNl
VmFsdWUucHV0QnlJbmRleChjYWxsRnJhbWUsIGksIHZhbHVlLCBjYWxsRnJhbWUtPmNvZGVCbG9j
aygpLT5pc1N0cmljdE1vZGUoKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgSWRlbnRpZmllciBw
cm9wZXJ0eShjYWxsRnJhbWUsIHN1YnNjcmlwdC50b1N0cmluZyhjYWxsRnJhbWUpLT52YWx1ZShj
YWxsRnJhbWUpKTsKICAgICAgICAgaWYgKCFzdGFja0ZyYW1lLmdsb2JhbERhdGEtPmV4Y2VwdGlv
bikgeyAvLyBEb24ndCBwdXQgdG8gYW4gb2JqZWN0IGlmIHRvU3RyaW5nIHRocmV3IGFuIGV4Y2Vw
dGlvbi4KQEAgLTI2MDQsNyArMjYwNCw3IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQsIG9w
X3B1dF9ieV92YWwKIAogICAgICAgICBpZiAoIWlzSlNCeXRlQXJyYXkoYmFzZVZhbHVlKSkKICAg
ICAgICAgICAgIGN0aVBhdGNoQ2FsbEJ5UmV0dXJuQWRkcmVzcyhjYWxsRnJhbWUtPmNvZGVCbG9j
aygpLCBTVFVCX1JFVFVSTl9BRERSRVNTLCBGdW5jdGlvblB0cihjdGlfb3BfcHV0X2J5X3ZhbCkp
OwotICAgICAgICBiYXNlVmFsdWUucHV0KGNhbGxGcmFtZSwgaSwgdmFsdWUpOworICAgICAgICBi
YXNlVmFsdWUucHV0QnlJbmRleChjYWxsRnJhbWUsIGksIHZhbHVlLCBjYWxsRnJhbWUtPmNvZGVC
bG9jaygpLT5pc1N0cmljdE1vZGUoKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgSWRlbnRpZmll
ciBwcm9wZXJ0eShjYWxsRnJhbWUsIHN1YnNjcmlwdC50b1N0cmluZyhjYWxsRnJhbWUpLT52YWx1
ZShjYWxsRnJhbWUpKTsKICAgICAgICAgaWYgKCFzdGFja0ZyYW1lLmdsb2JhbERhdGEtPmV4Y2Vw
dGlvbikgeyAvLyBEb24ndCBwdXQgdG8gYW4gb2JqZWN0IGlmIHRvU3RyaW5nIHRocmV3IGFuIGV4
Y2VwdGlvbi4KQEAgLTMzOTUsNyArMzM5NSw5IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQs
IG9wX3B1dF9ieV9pbmQKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IHN0YWNrRnJhbWUuY2Fs
bEZyYW1lOwogICAgIHVuc2lnbmVkIHByb3BlcnR5ID0gc3RhY2tGcmFtZS5hcmdzWzFdLmludDMy
KCk7CiAKLSAgICBzdGFja0ZyYW1lLmFyZ3NbMF0uanNWYWx1ZSgpLnB1dChjYWxsRnJhbWUsIHBy
b3BlcnR5LCBzdGFja0ZyYW1lLmFyZ3NbMl0uanNWYWx1ZSgpKTsKKyAgICBKU1ZhbHVlIGFycmF5
VmFsdWUgPSBzdGFja0ZyYW1lLmFyZ3NbMF0uanNWYWx1ZSgpOworICAgIEFTU0VSVChpc0pTQXJy
YXkoYXJyYXlWYWx1ZSkpOworICAgIGFzQXJyYXkoYXJyYXlWYWx1ZSktPnB1dERpcmVjdEluZGV4
KGNhbGxGcmFtZSwgcHJvcGVydHksIHN0YWNrRnJhbWUuYXJnc1syXS5qc1ZhbHVlKCksIGZhbHNl
KTsKIH0KIAogREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCosIG9wX3N3aXRjaF9pbW0pCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHJl
dmlzaW9uIDEwOTY0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQ
YXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNTIsNyArMTA1Miw3IEBAIExMSU5UX1NMT1df
UEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfdmEKICAgICAgICAgICAgICAgICBMTElOVF9FTkQo
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBiYXNlVmFsdWUucHV0KGV4ZWMs
IGksIHZhbHVlKTsKKyAgICAgICAgYmFzZVZhbHVlLnB1dEJ5SW5kZXgoZXhlYywgaSwgdmFsdWUs
IGV4ZWMtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSk7CiAgICAgICAgIExMSU5UX0VORCgp
OwogICAgIH0KICAgICAKQEAgLTEwOTIsNyArMTA5Miw5IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNM
KHNsb3dfcGF0aF9kZWxfYnlfdmEKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRf
YnlfaW5kZXgpCiB7CiAgICAgTExJTlRfQkVHSU4oKTsKLSAgICBMTElOVF9PUF9DKDEpLmpzVmFs
dWUoKS5wdXQoZXhlYywgcGNbMl0udS5vcGVyYW5kLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSk7
CisgICAgSlNWYWx1ZSBhcnJheVZhbHVlID0gTExJTlRfT1BfQygxKS5qc1ZhbHVlKCk7CisgICAg
QVNTRVJUKGlzSlNBcnJheShhcnJheVZhbHVlKSk7CisgICAgYXNBcnJheShhcnJheVZhbHVlKS0+
cHV0RGlyZWN0SW5kZXgoZXhlYywgcGNbMl0udS5vcGVyYW5kLCBMTElOVF9PUF9DKDMpLmpzVmFs
dWUoKSwgZmFsc2UpOwogICAgIExMSU5UX0VORCgpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHJldmlzaW9uIDEwOTY0MykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTg0MCwx
MSArODQwLDExIEBAIGlubGluZSB2b2lkIEpTVmFsdWU6OnB1dChFeGVjU3RhdGUqIGV4ZWMKICAg
ICBhc0NlbGwoKS0+bWV0aG9kVGFibGUoKS0+cHV0KGFzQ2VsbCgpLCBleGVjLCBwcm9wZXJ0eU5h
bWUsIHZhbHVlLCBzbG90KTsKIH0KIAotaW5saW5lIHZvaWQgSlNWYWx1ZTo6cHV0KEV4ZWNTdGF0
ZSogZXhlYywgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlKQoraW5saW5lIHZv
aWQgSlNWYWx1ZTo6cHV0QnlJbmRleChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKIHsKICAgICBpZiAoVU5MSUtF
TFkoIWlzQ2VsbCgpKSkgewotICAgICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IHN5bnRoZXNp
emVPYmplY3QoZXhlYyk7Ci0gICAgICAgIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKCktPnB1dEJ5
SW5kZXgodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSk7CisgICAgICAgIFB1
dFByb3BlcnR5U2xvdCBzbG90KHNob3VsZFRocm93KTsKKyAgICAgICAgcHV0VG9QcmltaXRpdmUo
ZXhlYywgSWRlbnRpZmllcjo6ZnJvbShleGVjLCBwcm9wZXJ0eU5hbWUpLCB2YWx1ZSwgc2xvdCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgYXNDZWxsKCktPm1ldGhvZFRhYmxlKCktPnB1
dEJ5SW5kZXgoYXNDZWxsKCksIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5jcHAJKHJldmlzaW9uIDEwOTY0MykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC05MSwxOSArOTEsNiBAQCBKU09iamVjdCogSlNWYWx1ZTo6dG9UaGlzT2JqZWN0U2xv
d0Nhc2UoCiAgICAgcmV0dXJuIGV4ZWMtPmdsb2JhbFRoaXNWYWx1ZSgpOwogfQogCi1KU09iamVj
dCogSlNWYWx1ZTo6c3ludGhlc2l6ZU9iamVjdChFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0Ci17Ci0g
ICAgQVNTRVJUKCFpc0NlbGwoKSk7Ci0gICAgaWYgKGlzTnVtYmVyKCkpCi0gICAgICAgIHJldHVy
biBjb25zdHJ1Y3ROdW1iZXIoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBhc1Zh
bHVlKCkpOwotICAgIGlmIChpc0Jvb2xlYW4oKSkKLSAgICAgICAgcmV0dXJuIGNvbnN0cnVjdEJv
b2xlYW5Gcm9tSW1tZWRpYXRlQm9vbGVhbihleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCksIGFzVmFsdWUoKSk7Ci0KLSAgICBBU1NFUlQoaXNVbmRlZmluZWRPck51bGwoKSk7Ci0gICAg
dGhyb3dFcnJvcihleGVjLCBjcmVhdGVOb3RBbk9iamVjdEVycm9yKGV4ZWMsICp0aGlzKSk7Ci0g
ICAgcmV0dXJuIEpTTm90QW5PYmplY3Q6OmNyZWF0ZShleGVjKTsKLX0KLQogSlNPYmplY3QqIEpT
VmFsdWU6OnN5bnRoZXNpemVQcm90b3R5cGUoRXhlY1N0YXRlKiBleGVjKSBjb25zdAogewogICAg
IGlmIChpc0NlbGwoKSkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNW
YWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFs
dWUuaAkocmV2aXNpb24gMTA5NjQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMjIsNyArMjIyLDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIEpTVmFsdWUgZ2V0KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlTbG90JikgY29uc3Q7CiAgICAgICAgIHZvaWQgcHV0KEV4ZWNTdGF0ZSosIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7
CiAgICAgICAgIHZvaWQgcHV0VG9QcmltaXRpdmUoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKLSAgICAgICAgdm9p
ZCBwdXQoRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlKTsKKyAgICAg
ICAgdm9pZCBwdXRCeUluZGV4KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CiAKICAgICAgICAgSlNPYmplY3QqIHRvVGhpc09iamVj
dChFeGVjU3RhdGUqKSBjb25zdDsKIApAQCAtMjUzLDggKzI1Myw2IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogdG9PYmplY3RTbG93Q2FzZShF
eGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCopIGNvbnN0OwogICAgICAgICBKU19FWFBPUlRfUFJJ
VkFURSBKU09iamVjdCogdG9UaGlzT2JqZWN0U2xvd0Nhc2UoRXhlY1N0YXRlKikgY29uc3Q7CiAK
LSAgICAgICAgSlNPYmplY3QqIHN5bnRoZXNpemVPYmplY3QoRXhlY1N0YXRlKikgY29uc3Q7Ci0K
ICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgICAgICAvKgogICAgICAgICAgKiBPbiAzMi1iaXQg
cGxhdGZvcm1zIFVTRShKU1ZBTFVFMzJfNjQpIHNob3VsZCBiZSBkZWZpbmVkLCBhbmQgd2UgdXNl
IGEgTmFOLWVuY29kZWQKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwOTgxMikKKysrIExheW91dFRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDEyLTAzLTA1ICBH
YXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KKworICAgICAgICBwdXRC
eUluZGV4IHNob3VsZCB0aHJvdyBpbiBzdHJpY3QgbW9kZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODAzMzUKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvanMvcHJpbWl0aXZlLXByb3BlcnR5LWFj
Y2Vzcy1lZGdlLWNhc2VzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2pzL3NjcmlwdC10
ZXN0cy9wcmltaXRpdmUtcHJvcGVydHktYWNjZXNzLWVkZ2UtY2FzZXMuanM6CisgICAgICAgIChj
aGVja051bWVyaWNHZXQuT2JqZWN0LmRlZmluZVByb3BlcnR5KToKKyAgICAgICAgKGNoZWNrTnVt
ZXJpY1NldC5PYmplY3QuZGVmaW5lUHJvcGVydHkpOgorICAgICAgICAoY2hlY2tOdW1lcmljR2V0
U3RyaWN0Lk9iamVjdC5kZWZpbmVQcm9wZXJ0eSk6CisgICAgICAgIChjaGVja051bWVyaWNTZXRT
dHJpY3QuT2JqZWN0LmRlZmluZVByb3BlcnR5KToKKyAgICAgICAgKGNoZWNrTnVtZXJpY1JlYWQp
OgorICAgICAgICAoY2hlY2tOdW1lcmljV3JpdGUpOgorICAgICAgICAoY2hlY2tOdW1lcmljUmVh
ZFN0cmljdCk6CisgICAgICAgIChjaGVja051bWVyaWNXcml0ZVN0cmljdCk6CisgICAgICAgICAg
ICAtIEFkZGVkIHRlc3QgY2FzZXMuCisKIDIwMTItMDMtMDUgIFJvYmVydCBLcm9lZ2VyICA8cmpr
cm9lZ2VAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIENvcnJlY3QgYSB0ZXN0IHRvIHdvcmsgdGhl
IHNhbWUgb24gR3RrIGFuZCBub24tR3RrIGNocm9taXVtIGluCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2pzL3ByaW1pdGl2ZS1wcm9wZXJ0eS1hY2Nlc3MtZWRnZS1jYXNlcy1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9wcmltaXRpdmUtcHJvcGVydHktYWNj
ZXNzLWVkZ2UtY2FzZXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxMDk2NDMpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2pzL3ByaW1pdGl2ZS1wcm9wZXJ0eS1hY2Nlc3MtZWRnZS1jYXNlcy1leHBlY3Rl
ZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDI4IEBAIFBBU1MgY2hlY2tSZWFkU3Ry
aWN0KHRydWUsIEJvb2xlYW4pIGlzIHQKIFBBU1MgY2hlY2tXcml0ZVN0cmljdCgxLCBOdW1iZXIp
IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEF0dGVtcHRlZCB0byBhc3NpZ24gdG8gcmVhZG9u
bHkgcHJvcGVydHkuLgogUEFTUyBjaGVja1dyaXRlU3RyaWN0KCdoZWxsbycsIFN0cmluZykgdGhy
ZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXR0ZW1wdGVkIHRvIGFzc2lnbiB0byByZWFkb25seSBw
cm9wZXJ0eS4uCiBQQVNTIGNoZWNrV3JpdGVTdHJpY3QodHJ1ZSwgQm9vbGVhbikgdGhyZXcgZXhj
ZXB0aW9uIFR5cGVFcnJvcjogQXR0ZW1wdGVkIHRvIGFzc2lnbiB0byByZWFkb25seSBwcm9wZXJ0
eS4uCitQQVNTIGNoZWNrTnVtZXJpY0dldCgxLCBOdW1iZXIpIGlzIHRydWUKK1BBU1MgY2hlY2tO
dW1lcmljR2V0KCdoZWxsbycsIFN0cmluZykgaXMgdHJ1ZQorUEFTUyBjaGVja051bWVyaWNHZXQo
dHJ1ZSwgQm9vbGVhbikgaXMgdHJ1ZQorUEFTUyBjaGVja051bWVyaWNTZXQoMSwgTnVtYmVyKSBp
cyB0cnVlCitQQVNTIGNoZWNrTnVtZXJpY1NldCgnaGVsbG8nLCBTdHJpbmcpIGlzIHRydWUKK1BB
U1MgY2hlY2tOdW1lcmljU2V0KHRydWUsIEJvb2xlYW4pIGlzIHRydWUKK1BBU1MgY2hlY2tOdW1l
cmljR2V0U3RyaWN0KDEsIE51bWJlcikgaXMgdHJ1ZQorUEFTUyBjaGVja051bWVyaWNHZXRTdHJp
Y3QoJ2hlbGxvJywgU3RyaW5nKSBpcyB0cnVlCitQQVNTIGNoZWNrTnVtZXJpY0dldFN0cmljdCh0
cnVlLCBCb29sZWFuKSBpcyB0cnVlCitQQVNTIGNoZWNrTnVtZXJpY1NldFN0cmljdCgxLCBOdW1i
ZXIpIGlzIHRydWUKK1BBU1MgY2hlY2tOdW1lcmljU2V0U3RyaWN0KHRydWUsIEJvb2xlYW4pIGlz
IHRydWUKK1BBU1MgY2hlY2tOdW1lcmljUmVhZCgxLCBOdW1iZXIpIGlzIHRydWUKK1BBU1MgY2hl
Y2tOdW1lcmljUmVhZCgnaGVsbG8nLCBTdHJpbmcpIGlzIHRydWUKK1BBU1MgY2hlY2tOdW1lcmlj
UmVhZCh0cnVlLCBCb29sZWFuKSBpcyB0cnVlCitQQVNTIGNoZWNrTnVtZXJpY1dyaXRlKDEsIE51
bWJlcikgaXMgdHJ1ZQorUEFTUyBjaGVja051bWVyaWNXcml0ZSgnaGVsbG8nLCBTdHJpbmcpIGlz
IHRydWUKK1BBU1MgY2hlY2tOdW1lcmljV3JpdGUodHJ1ZSwgQm9vbGVhbikgaXMgdHJ1ZQorUEFT
UyBjaGVja051bWVyaWNSZWFkU3RyaWN0KDEsIE51bWJlcikgaXMgdHJ1ZQorUEFTUyBjaGVja051
bWVyaWNSZWFkU3RyaWN0KCdoZWxsbycsIFN0cmluZykgaXMgdHJ1ZQorUEFTUyBjaGVja051bWVy
aWNSZWFkU3RyaWN0KHRydWUsIEJvb2xlYW4pIGlzIHRydWUKK1BBU1MgY2hlY2tOdW1lcmljV3Jp
dGVTdHJpY3QoMSwgTnVtYmVyKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBdHRlbXB0ZWQg
dG8gYXNzaWduIHRvIHJlYWRvbmx5IHByb3BlcnR5Li4KK1BBU1MgY2hlY2tOdW1lcmljV3JpdGVT
dHJpY3QodHJ1ZSwgQm9vbGVhbikgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXR0ZW1wdGVk
IHRvIGFzc2lnbiB0byByZWFkb25seSBwcm9wZXJ0eS4uCiBQQVNTIGRpZE5vdENyYXNoIGlzIHRy
dWUKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIApJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9qcy9zY3JpcHQtdGVzdHMvcHJpbWl0aXZlLXByb3BlcnR5LWFjY2Vzcy1lZGdlLWNhc2Vz
LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL3ByaW1p
dGl2ZS1wcm9wZXJ0eS1hY2Nlc3MtZWRnZS1jYXNlcy5qcwkocmV2aXNpb24gMTA5NjQzKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvcHJpbWl0aXZlLXByb3BlcnR5LWFjY2Vz
cy1lZGdlLWNhc2VzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xMjYsNCArMTI2LDkwIEBAIHNob3Vs
ZFRocm93KCJjaGVja1dyaXRlU3RyaWN0KDEsIE51bWJlcikKIHNob3VsZFRocm93KCJjaGVja1dy
aXRlU3RyaWN0KCdoZWxsbycsIFN0cmluZykiKTsKIHNob3VsZFRocm93KCJjaGVja1dyaXRlU3Ry
aWN0KHRydWUsIEJvb2xlYW4pIik7CiAKK2Z1bmN0aW9uIGNoZWNrTnVtZXJpY0dldCh4LCBjb25z
dHJ1Y3RvcikKK3sKKyAgICBjaGVja09rYXkgPSBmYWxzZTsKKyAgICBPYmplY3QuZGVmaW5lUHJv
cGVydHkoY29uc3RydWN0b3IucHJvdG90eXBlLCA0MiwgeyBnZXQ6IGZ1bmN0aW9uKCkgeyBjaGVj
a09rYXkgPSB0eXBlb2YgdGhpcyA9PT0gJ29iamVjdCc7IH0sIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9
KTsKKyAgICB4WzQyXTsKKyAgICBkZWxldGUgY29uc3RydWN0b3IucHJvdG90eXBlWzQyXTsKKyAg
ICByZXR1cm4gY2hlY2tPa2F5OworfQorCitmdW5jdGlvbiBjaGVja051bWVyaWNTZXQoeCwgY29u
c3RydWN0b3IpCit7CisgICAgY2hlY2tPa2F5ID0gZmFsc2U7CisgICAgT2JqZWN0LmRlZmluZVBy
b3BlcnR5KGNvbnN0cnVjdG9yLnByb3RvdHlwZSwgNDIsIHsgc2V0OiBmdW5jdGlvbigpIHsgY2hl
Y2tPa2F5ID0gdHlwZW9mIHRoaXMgPT09ICdvYmplY3QnOyB9LCBjb25maWd1cmFibGU6IHRydWUg
fSk7CisgICAgeFs0Ml0gPSBudWxsOworICAgIGRlbGV0ZSBjb25zdHJ1Y3Rvci5wcm90b3R5cGVb
NDJdOworICAgIHJldHVybiBjaGVja09rYXk7Cit9CisKK2Z1bmN0aW9uIGNoZWNrTnVtZXJpY0dl
dFN0cmljdCh4LCBjb25zdHJ1Y3RvcikKK3sKKyAgICBjaGVja09rYXkgPSBmYWxzZTsKKyAgICBP
YmplY3QuZGVmaW5lUHJvcGVydHkoY29uc3RydWN0b3IucHJvdG90eXBlLCA0MiwgeyBnZXQ6IGZ1
bmN0aW9uKCkgeyAidXNlIHN0cmljdCI7IGNoZWNrT2theSA9IHR5cGVvZiB0aGlzICE9PSAnb2Jq
ZWN0JzsgfSwgY29uZmlndXJhYmxlOiB0cnVlIH0pOworICAgIHhbNDJdOworICAgIGRlbGV0ZSBj
b25zdHJ1Y3Rvci5wcm90b3R5cGVbNDJdOworICAgIHJldHVybiBjaGVja09rYXk7Cit9CisKK2Z1
bmN0aW9uIGNoZWNrTnVtZXJpY1NldFN0cmljdCh4LCBjb25zdHJ1Y3RvcikKK3sKKyAgICBjaGVj
a09rYXkgPSBmYWxzZTsKKyAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoY29uc3RydWN0b3IucHJv
dG90eXBlLCA0MiwgeyBzZXQ6IGZ1bmN0aW9uKCkgeyAidXNlIHN0cmljdCI7IGNoZWNrT2theSA9
IHR5cGVvZiB0aGlzICE9PSAnb2JqZWN0JzsgfSwgY29uZmlndXJhYmxlOiB0cnVlIH0pOworICAg
IHhbNDJdID0gbnVsbDsKKyAgICBkZWxldGUgY29uc3RydWN0b3IucHJvdG90eXBlWzQyXTsKKyAg
ICByZXR1cm4gY2hlY2tPa2F5OworfQorCitzaG91bGRCZVRydWUoImNoZWNrTnVtZXJpY0dldCgx
LCBOdW1iZXIpIik7CitzaG91bGRCZVRydWUoImNoZWNrTnVtZXJpY0dldCgnaGVsbG8nLCBTdHJp
bmcpIik7CitzaG91bGRCZVRydWUoImNoZWNrTnVtZXJpY0dldCh0cnVlLCBCb29sZWFuKSIpOwor
c2hvdWxkQmVUcnVlKCJjaGVja051bWVyaWNTZXQoMSwgTnVtYmVyKSIpOworc2hvdWxkQmVUcnVl
KCJjaGVja051bWVyaWNTZXQoJ2hlbGxvJywgU3RyaW5nKSIpOworc2hvdWxkQmVUcnVlKCJjaGVj
a051bWVyaWNTZXQodHJ1ZSwgQm9vbGVhbikiKTsKK3Nob3VsZEJlVHJ1ZSgiY2hlY2tOdW1lcmlj
R2V0U3RyaWN0KDEsIE51bWJlcikiKTsKK3Nob3VsZEJlVHJ1ZSgiY2hlY2tOdW1lcmljR2V0U3Ry
aWN0KCdoZWxsbycsIFN0cmluZykiKTsKK3Nob3VsZEJlVHJ1ZSgiY2hlY2tOdW1lcmljR2V0U3Ry
aWN0KHRydWUsIEJvb2xlYW4pIik7CitzaG91bGRCZVRydWUoImNoZWNrTnVtZXJpY1NldFN0cmlj
dCgxLCBOdW1iZXIpIik7CisvL3Nob3VsZEJlVHJ1ZSgiY2hlY2tOdW1lcmljU2V0U3RyaWN0KCdo
ZWxsbycsIFN0cmluZykiKTsgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD04MDMzNQorc2hvdWxkQmVUcnVlKCJjaGVja051bWVyaWNTZXRTdHJpY3QodHJ1
ZSwgQm9vbGVhbikiKTsKKworZnVuY3Rpb24gY2hlY2tOdW1lcmljUmVhZCh4LCBjb25zdHJ1Y3Rv
cikKK3sKKyAgICByZXR1cm4geFs0Ml0gPT09IHVuZGVmaW5lZDsKK30KKworZnVuY3Rpb24gY2hl
Y2tOdW1lcmljV3JpdGUoeCwgY29uc3RydWN0b3IpCit7CisgICAgeFs0Ml0gPSBudWxsOworICAg
IHJldHVybiB4WzQyXSA9PT0gdW5kZWZpbmVkOworfQorCitmdW5jdGlvbiBjaGVja051bWVyaWNS
ZWFkU3RyaWN0KHgsIGNvbnN0cnVjdG9yKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKyAgICByZXR1
cm4geFs0Ml0gPT09IHVuZGVmaW5lZDsKK30KKworZnVuY3Rpb24gY2hlY2tOdW1lcmljV3JpdGVT
dHJpY3QoeCwgY29uc3RydWN0b3IpCit7CisgICAgInVzZSBzdHJpY3QiOworICAgIHhbNDJdID0g
bnVsbDsKKyAgICByZXR1cm4geFs0Ml0gPT09IHVuZGVmaW5lZDsKK30KKworc2hvdWxkQmVUcnVl
KCJjaGVja051bWVyaWNSZWFkKDEsIE51bWJlcikiKTsKK3Nob3VsZEJlVHJ1ZSgiY2hlY2tOdW1l
cmljUmVhZCgnaGVsbG8nLCBTdHJpbmcpIik7CitzaG91bGRCZVRydWUoImNoZWNrTnVtZXJpY1Jl
YWQodHJ1ZSwgQm9vbGVhbikiKTsKK3Nob3VsZEJlVHJ1ZSgiY2hlY2tOdW1lcmljV3JpdGUoMSwg
TnVtYmVyKSIpOworc2hvdWxkQmVUcnVlKCJjaGVja051bWVyaWNXcml0ZSgnaGVsbG8nLCBTdHJp
bmcpIik7CitzaG91bGRCZVRydWUoImNoZWNrTnVtZXJpY1dyaXRlKHRydWUsIEJvb2xlYW4pIik7
CitzaG91bGRCZVRydWUoImNoZWNrTnVtZXJpY1JlYWRTdHJpY3QoMSwgTnVtYmVyKSIpOworc2hv
dWxkQmVUcnVlKCJjaGVja051bWVyaWNSZWFkU3RyaWN0KCdoZWxsbycsIFN0cmluZykiKTsKK3No
b3VsZEJlVHJ1ZSgiY2hlY2tOdW1lcmljUmVhZFN0cmljdCh0cnVlLCBCb29sZWFuKSIpOworc2hv
dWxkVGhyb3coImNoZWNrTnVtZXJpY1dyaXRlU3RyaWN0KDEsIE51bWJlcikiKTsKKy8vc2hvdWxk
VGhyb3coImNoZWNrTnVtZXJpY1dyaXRlU3RyaWN0KCdoZWxsbycsIFN0cmluZykiKTsgLy8gRklY
TUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDMzNQorc2hvdWxk
VGhyb3coImNoZWNrTnVtZXJpY1dyaXRlU3RyaWN0KHRydWUsIEJvb2xlYW4pIik7CisKIHNob3Vs
ZEJlVHJ1ZSgiZGlkTm90Q3Jhc2giKTsK
</data>
<flag name="review"
          id="133169"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130298</attachid>
            <date>2012-03-05 22:45:50 -0800</date>
            <delta_ts>2012-03-05 23:26:07 -0800</delta_ts>
            <desc>Part 2 - fixes pretty much everything.</desc>
            <filename>80335.3.patch</filename>
            <type>text/plain</type>
            <size>74654</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA5ODYyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg3IEBA
CisyMDEyLTAzLTA1ICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4K
KworICAgICAgICBwdXRCeUluZGV4IHNob3VsZCB0aHJvdyBpbiBzdHJpY3QgbW9kZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODAzMzUKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIHRoZSBNZXRob2RU
YWJsZSBQdXRCeUluZGV4IHRyYXAgdGFrZSBhIGJvb2xlYW4gJ3Nob3VsZFRocm93JyBwYXJhbWV0
ZXIuCisKKyAgICAgICAgVGhpcyBpcyBhIGxhcmdlbHkgbWVjaGFuaWNhbCBjaGFuZ2UsIHNpbXBs
eSBhZGRpbmcgYW4gZXh0cmEgcGFyYW1ldGVyIHRvIGEgbnVtYmVyCisgICAgICAgIG9mIGZ1bmN0
aW9ucy4gU29tZSBjYWxsIHNpdGVzIG5lZWQgcGVyZm9ybSBhZGRpdGlvbmFsIGV4Y2VwdGlvbiBj
aGVja3MsIGFuZAorICAgICAgICBvcGVyYXRpb25QdXRCeVZhbEJleW9uZEFycmF5Qm91bmRzIG5l
ZWRzIHRvIGtub3cgd2hldGhlciBpdCBpcyBzdHJpY3Qgb3Igbm90LgorCisgICAgICAgIFRoaXMg
cGF0Y2ggZG9lc24ndCBmaXggYSBtaXNzaW5nIHRocm93IGZyb20gc29tZSBjYXNlcyBvZiBzaGlm
dC91bnNoaWZ0ICh0aGlzIGlzCisgICAgICAgIGFuIGV4aXN0aW5nIGJ1ZyksIEknbGwgZm9sbG93
IHVwIHdpdGggYSB0aGlyZCBwYXRjaCB0byBoYW5kbGUgdGhhdC4KKworICAgICAgICAqIEFQSS9K
U09iamVjdFJlZi5jcHA6CisgICAgICAgIChKU09iamVjdFNldFByb3BlcnR5QXRJbmRleCk6Cisg
ICAgICAgICogSlNDVHlwZWRBcnJheVN0dWJzLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAq
IGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpwdXRCeVZhbCk6Cisg
ICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRp
dmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogaW50ZXJwcmV0ZXIv
SW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6cHJpdmF0ZUV4ZWN1
dGUpOgorICAgICAgICAqIGppdC9KSVRTdHVicy5jcHA6CisgICAgICAgIChKU0M6OkRFRklORV9T
VFVCX0ZVTkNUSU9OKToKKyAgICAgICAgKiBqc2MuY3BwOgorICAgICAgICAoR2xvYmFsT2JqZWN0
OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgor
ICAgICAgICAoSlNDOjpMTEludDo6TExJTlRfU0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIHJ1
bnRpbWUvQXJndW1lbnRzLmNwcDoKKyAgICAgICAgKEpTQzo6QXJndW1lbnRzOjpwdXRCeUluZGV4
KToKKyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50cy5oOgorICAgICAgICAoQXJndW1lbnRzKToK
KyAgICAgICAgKiBydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6YXJy
YXlQcm90b0Z1bmNQdXNoKToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNSZXZlcnNlKToK
KyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNTaGlmdCk6CisgICAgICAgIChKU0M6OmFycmF5
UHJvdG9GdW5jU29ydCk6CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5jU3BsaWNlKToKKyAg
ICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNVblNoaWZ0KToKKyAgICAgICAgKiBydW50aW1lL0Ns
YXNzSW5mby5oOgorICAgICAgICAoTWV0aG9kVGFibGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNB
cnJheS5jcHA6CisgICAgICAgIChKU0M6OlNwYXJzZUFycmF5VmFsdWVNYXA6OnB1dCk6CisgICAg
ICAgIChKU0M6OkpTQXJyYXk6OnB1dCk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OnB1dEJ5SW5k
ZXgpOgorICAgICAgICAoSlNDOjpKU0FycmF5OjpwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVuZ3Ro
KToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6cHVzaCk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6
OnNoaWZ0Q291bnQpOgorICAgICAgICAoSlNDOjpKU0FycmF5Ojp1bnNoaWZ0Q291bnQpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNBcnJheS5oOgorICAgICAgICAoU3BhcnNlQXJyYXlWYWx1ZU1hcCk6
CisgICAgICAgIChKU0FycmF5KToKKyAgICAgICAgKiBydW50aW1lL0pTQnl0ZUFycmF5LmNwcDoK
KyAgICAgICAgKEpTQzo6SlNCeXRlQXJyYXk6OnB1dEJ5SW5kZXgpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNCeXRlQXJyYXkuaDoKKyAgICAgICAgKEpTQnl0ZUFycmF5KToKKyAgICAgICAgKiBydW50
aW1lL0pTQ2VsbC5jcHA6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6cHV0QnlJbmRleCk6CisgICAg
ICAgICogcnVudGltZS9KU0NlbGwuaDoKKyAgICAgICAgKEpTQ2VsbCk6CisgICAgICAgICogcnVu
dGltZS9KU05vdEFuT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNOb3RBbk9iamVjdDo6cHV0
QnlJbmRleCk6CisgICAgICAgICogcnVudGltZS9KU05vdEFuT2JqZWN0Lmg6CisgICAgICAgIChK
U05vdEFuT2JqZWN0KToKKyAgICAgICAgKiBydW50aW1lL0pTT05PYmplY3QuY3BwOgorICAgICAg
ICAoSlNDOjpXYWxrZXI6OndhbGspOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuY3BwOgor
ICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0QnlJbmRleCk6CisgICAgICAgICogcnVudGltZS9K
U09iamVjdC5oOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjpwdXRCeUluZGV4KToKKyAgICAgICAg
KiBydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6UmVnRXhwTWF0
Y2hlc0FycmF5OjpmaWxsQXJyYXlJbnN0YW5jZSk6CisgICAgICAgICogcnVudGltZS9SZWdFeHBN
YXRjaGVzQXJyYXkuaDoKKyAgICAgICAgKEpTQzo6UmVnRXhwTWF0Y2hlc0FycmF5OjpwdXRCeUlu
ZGV4KToKKyAgICAgICAgKiBydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHA6CisgICAgICAgIChK
U0M6OnN0cmluZ1Byb3RvRnVuY1NwbGl0KToKKwogMjAxMi0wMy0wNSAgWXVxaWFuZyBYaWFuICA8
eXVxaWFuZy54aWFuQGludGVsLmNvbT4KIAogICAgICAgICBDaGVja3MgZm9yIGRlYWQgdmFyaWFi
bGVzIGFyZSBub3Qgc3VmZmljaWVudCB3aGVuIGZpeGluZyB0aGUgZXhwZWN0ZWQKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KU0NUeXBlZEFycmF5U3R1YnMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSlNDVHlwZWRBcnJheVN0dWJzLmgJKHJldmlzaW9uIDEwOTgy
MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KU0NUeXBlZEFycmF5U3R1YnMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTUxLDcgKzE1MSw3IEBAIHZvaWQgSlMjI25hbWUjI0FycmF5OjppbmRleFNl
dHRlcihKU0M6OkUKICAgICBtX2ltcGwtPnNldChpbmRleCwgdmFsdWUudG9OdW1iZXIoZXhlYykp
O1wKIH1cCiBcCi12b2lkIEpTIyNuYW1lIyNBcnJheTo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGws
IEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlKVwK
K3ZvaWQgSlMjI25hbWUjI0FycmF5OjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRl
KiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIGJvb2wpXAoge1wK
ICAgICBKUyMjbmFtZSMjQXJyYXkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlMjI25hbWUjI0FycmF5
Kj4oY2VsbCk7XAogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNf
aW5mbyk7XApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAJKHJldmlzaW9uIDEwOTgyMikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDYsOSArMjA2
LDkgQEAgcHJvdGVjdGVkOgogICAgICAgICBhZGRDb25zdHJ1Y3RhYmxlRnVuY3Rpb24oZ2xvYmFs
RGF0YSwgIkZsb2F0NjRBcnJheSIsIGNvbnN0cnVjdEpTRmxvYXQ2NEFycmF5LCAxKTsKICNlbmRp
ZgogCi0gICAgICAgIEpTT2JqZWN0KiBhcnJheSA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZ2xvYmFs
RXhlYygpKTsKKyAgICAgICAgSlNBcnJheSogYXJyYXkgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGds
b2JhbEV4ZWMoKSk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJndW1lbnRzLnNp
emUoKTsgKytpKQotICAgICAgICAgICAgYXJyYXktPm1ldGhvZFRhYmxlKCktPnB1dEJ5SW5kZXgo
YXJyYXksIGdsb2JhbEV4ZWMoKSwgaSwganNTdHJpbmcoZ2xvYmFsRXhlYygpLCBhcmd1bWVudHNb
aV0pKTsKKyAgICAgICAgICAgIGFycmF5LT5wdXREaXJlY3RJbmRleChnbG9iYWxFeGVjKCksIGks
IGpzU3RyaW5nKGdsb2JhbEV4ZWMoKSwgYXJndW1lbnRzW2ldKSwgZmFsc2UpOwogICAgICAgICBw
dXREaXJlY3QoZ2xvYmFsRGF0YSwgSWRlbnRpZmllcihnbG9iYWxFeGVjKCksICJhcmd1bWVudHMi
KSwgYXJyYXkpOwogICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09i
amVjdFJlZi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09i
amVjdFJlZi5jcHAJKHJldmlzaW9uIDEwOTgyMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNPYmplY3RSZWYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTIsNyArMzEyLDcgQEAgdm9p
ZCBKU09iamVjdFNldFByb3BlcnR5QXRJbmRleChKU0NvbnRleAogICAgIEpTT2JqZWN0KiBqc09i
amVjdCA9IHRvSlMob2JqZWN0KTsKICAgICBKU1ZhbHVlIGpzVmFsdWUgPSB0b0pTKGV4ZWMsIHZh
bHVlKTsKICAgICAKLSAgICBqc09iamVjdC0+bWV0aG9kVGFibGUoKS0+cHV0QnlJbmRleChqc09i
amVjdCwgZXhlYywgcHJvcGVydHlJbmRleCwganNWYWx1ZSk7CisgICAganNPYmplY3QtPm1ldGhv
ZFRhYmxlKCktPnB1dEJ5SW5kZXgoanNPYmplY3QsIGV4ZWMsIHByb3BlcnR5SW5kZXgsIGpzVmFs
dWUsIGZhbHNlKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpIHsKICAgICAgICAgaWYg
KGV4Y2VwdGlvbikKICAgICAgICAgICAgICpleGNlcHRpb24gPSB0b1JlZihleGVjLCBleGVjLT5l
eGNlcHRpb24oKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlv
bnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0
aW9ucy5jcHAJKHJldmlzaW9uIDEwOTgyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1OCw3ICsxNTgsNyBAQCBzdGF0
aWMgaW5saW5lIHZvaWQgcHV0QnlWYWwoRXhlY1N0YXRlKiBlCiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIAotICAgICAgICBKU0FycmF5OjpwdXRCeUluZGV4KGFycmF5LCBleGVjLCBp
bmRleCwgdmFsdWUpOworICAgICAgICBKU0FycmF5OjpwdXRCeUluZGV4KGFycmF5LCBleGVjLCBp
bmRleCwgdmFsdWUsIHN0cmljdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQ3NCwx
NCArNDc0LDI0IEBAIHZvaWQgREZHX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbENlbGwKICAg
ICBvcGVyYXRpb25QdXRCeVZhbEludGVybmFsPGZhbHNlPihleGVjLCBKU1ZhbHVlOjplbmNvZGUo
Y2VsbCksIGVuY29kZWRQcm9wZXJ0eSwgZW5jb2RlZFZhbHVlKTsKIH0KIAotdm9pZCBERkdfT1BF
UkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsQmV5b25kQXJyYXlCb3VuZHMoRXhlY1N0YXRlKiBleGVj
LCBKU0FycmF5KiBhcnJheSwgaW50MzJfdCBpbmRleCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKQordm9pZCBERkdfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsQmV5b25kQXJyYXlCb3Vu
ZHNTdHJpY3QoRXhlY1N0YXRlKiBleGVjLCBKU0FycmF5KiBhcnJheSwgaW50MzJfdCBpbmRleCwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFs
RGF0YSA9ICZleGVjLT5nbG9iYWxEYXRhKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcihnbG9iYWxEYXRhLCBleGVjKTsKICAgICAKICAgICAvLyBXZSBzaG91bGQgb25seSBnZXQg
aGVyZSBpZiBpbmRleCBpcyBvdXRzaWRlIHRoZSBleGlzdGluZyB2ZWN0b3IuCiAgICAgQVNTRVJU
KCFhcnJheS0+Y2FuU2V0SW5kZXgoaW5kZXgpKTsKLSAgICBKU0FycmF5OjpwdXRCeUluZGV4KGFy
cmF5LCBleGVjLCBpbmRleCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSkpOworICAgIEpT
QXJyYXk6OnB1dEJ5SW5kZXgoYXJyYXksIGV4ZWMsIGluZGV4LCBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZFZhbHVlKSwgdHJ1ZSk7Cit9CisKK3ZvaWQgREZHX09QRVJBVElPTiBvcGVyYXRpb25QdXRC
eVZhbEJleW9uZEFycmF5Qm91bmRzTm9uU3RyaWN0KEV4ZWNTdGF0ZSogZXhlYywgSlNBcnJheSog
YXJyYXksIGludDMyX3QgaW5kZXgsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK3sKKyAg
ICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFsRGF0YSgpOworICAgIE5h
dGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoZ2xvYmFsRGF0YSwgZXhlYyk7CisgICAgCisgICAg
Ly8gV2Ugc2hvdWxkIG9ubHkgZ2V0IGhlcmUgaWYgaW5kZXggaXMgb3V0c2lkZSB0aGUgZXhpc3Rp
bmcgdmVjdG9yLgorICAgIEFTU0VSVCghYXJyYXktPmNhblNldEluZGV4KGluZGV4KSk7CisgICAg
SlNBcnJheTo6cHV0QnlJbmRleChhcnJheSwgZXhlYywgaW5kZXgsIEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkVmFsdWUpLCBmYWxzZSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04g
b3BlcmF0aW9uQXJyYXlQdXNoKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlLCBKU0FycmF5KiBhcnJheSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT3BlcmF0aW9ucy5oCShyZXZpc2lvbiAxMDk4MjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09wZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMTE5LDcgKzExOSw4IEBA
IHZvaWQgREZHX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbFN0cmkKIHZvaWQgREZHX09QRVJB
VElPTiBvcGVyYXRpb25QdXRCeVZhbE5vblN0cmljdChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFByb3BlcnR5LCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUpOwogdm9pZCBERkdfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFs
Q2VsbFN0cmljdChFeGVjU3RhdGUqLCBKU0NlbGwqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkUHJv
cGVydHksIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSk7CiB2b2lkIERGR19PUEVSQVRJT04g
b3BlcmF0aW9uUHV0QnlWYWxDZWxsTm9uU3RyaWN0KEV4ZWNTdGF0ZSosIEpTQ2VsbCosIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRQcm9wZXJ0eSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKTsK
LXZvaWQgREZHX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbEJleW9uZEFycmF5Qm91bmRzKEV4
ZWNTdGF0ZSosIEpTQXJyYXkqLCBpbnQzMl90IGluZGV4LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpOwordm9pZCBERkdfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsQmV5b25kQXJyYXlC
b3VuZHNTdHJpY3QoRXhlY1N0YXRlKiwgSlNBcnJheSosIGludDMyX3QgaW5kZXgsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSk7Cit2b2lkIERGR19PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlW
YWxCZXlvbmRBcnJheUJvdW5kc05vblN0cmljdChFeGVjU3RhdGUqLCBKU0FycmF5KiwgaW50MzJf
dCBpbmRleCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKTsKIEVuY29kZWRKU1ZhbHVlIERG
R19PUEVSQVRJT04gb3BlcmF0aW9uQXJyYXlQdXNoKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSwgSlNBcnJheSopOwogRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiBv
cGVyYXRpb25BcnJheVBvcChFeGVjU3RhdGUqLCBKU0FycmF5Kik7CiB2b2lkIERGR19PUEVSQVRJ
T04gb3BlcmF0aW9uUHV0QnlJZFN0cmljdChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUsIEpTQ2VsbCogYmFzZSwgSWRlbnRpZmllciopOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCShyZXZp
c2lvbiAxMDk4MjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzc5LDcgKzIzNzksNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAKICAgICAgICAgLy8gQ29kZSB0byBo
YW5kbGUgcHV0IGJleW9uZCBhcnJheSBib3VuZHMuCiAgICAgICAgIHNpbGVudFNwaWxsQWxsUmVn
aXN0ZXJzKHNjcmF0Y2hSZWcpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblB1dEJ5
VmFsQmV5b25kQXJyYXlCb3VuZHMsIGJhc2VSZWcsIHByb3BlcnR5UmVnLCB2YWx1ZVRhZ1JlZywg
dmFsdWVQYXlsb2FkUmVnKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihtX2ppdC5jb2RlQmxvY2so
KS0+aXNTdHJpY3RNb2RlKCkgPyBvcGVyYXRpb25QdXRCeVZhbEJleW9uZEFycmF5Qm91bmRzU3Ry
aWN0IDogb3BlcmF0aW9uUHV0QnlWYWxCZXlvbmRBcnJheUJvdW5kc05vblN0cmljdCwgYmFzZVJl
ZywgcHJvcGVydHlSZWcsIHZhbHVlVGFnUmVnLCB2YWx1ZVBheWxvYWRSZWcpOwogICAgICAgICBz
aWxlbnRGaWxsQWxsUmVnaXN0ZXJzKHNjcmF0Y2hSZWcpOwogICAgICAgICBKSVRDb21waWxlcjo6
SnVtcCB3YXNCZXlvbmRBcnJheUJvdW5kcyA9IG1faml0Lmp1bXAoKTsKIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZp
c2lvbiAxMDk4MjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDI1LDcgKzI0MjUsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAKICAgICAgICAgLy8gQ29kZSB0byBoYW5k
bGUgcHV0IGJleW9uZCBhcnJheSBib3VuZHMuCiAgICAgICAgIHNpbGVudFNwaWxsQWxsUmVnaXN0
ZXJzKHNjcmF0Y2hSZWcpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblB1dEJ5VmFs
QmV5b25kQXJyYXlCb3VuZHMsIGJhc2VSZWcsIHByb3BlcnR5UmVnLCB2YWx1ZVJlZyk7CisgICAg
ICAgIGNhbGxPcGVyYXRpb24obV9qaXQuY29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpID8gb3Bl
cmF0aW9uUHV0QnlWYWxCZXlvbmRBcnJheUJvdW5kc1N0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFs
QmV5b25kQXJyYXlCb3VuZHNOb25TdHJpY3QsIGJhc2VSZWcsIHByb3BlcnR5UmVnLCB2YWx1ZVJl
Zyk7CiAgICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMoc2NyYXRjaFJlZyk7CiAgICAgICAg
IEpJVENvbXBpbGVyOjpKdW1wIHdhc0JleW9uZEFycmF5Qm91bmRzID0gbV9qaXQuanVtcCgpOwog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnBy
ZXRlci5jcHAJKHJldmlzaW9uIDEwOTgyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9JbnRlcnByZXRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3ODEsNyArMzc4MSw3
IEBAIHNraXBfaWRfY3VzdG9tX3NlbGY6CiAgICAgICAgICAgICAgICAgaWYgKGpzQXJyYXktPmNh
blNldEluZGV4KGkpKQogICAgICAgICAgICAgICAgICAgICBqc0FycmF5LT5zZXRJbmRleCgqZ2xv
YmFsRGF0YSwgaSwgY2FsbEZyYW1lLT5yKHZhbHVlKS5qc1ZhbHVlKCkpOwogICAgICAgICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAganNBcnJheS0+SlNBcnJheTo6cHV0QnlJbmRl
eChqc0FycmF5LCBjYWxsRnJhbWUsIGksIGNhbGxGcmFtZS0+cih2YWx1ZSkuanNWYWx1ZSgpKTsK
KyAgICAgICAgICAgICAgICAgICAganNBcnJheS0+SlNBcnJheTo6cHV0QnlJbmRleChqc0FycmF5
LCBjYWxsRnJhbWUsIGksIGNhbGxGcmFtZS0+cih2YWx1ZSkuanNWYWx1ZSgpLCBjb2RlQmxvY2st
PmlzU3RyaWN0TW9kZSgpKTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNKU0J5dGVBcnJheShi
YXNlVmFsdWUpICYmIGFzQnl0ZUFycmF5KGJhc2VWYWx1ZSktPmNhbkFjY2Vzc0luZGV4KGkpKSB7
CiAgICAgICAgICAgICAgICAgSlNCeXRlQXJyYXkqIGpzQnl0ZUFycmF5ID0gYXNCeXRlQXJyYXko
YmFzZVZhbHVlKTsKICAgICAgICAgICAgICAgICBKU1ZhbHVlIGpzVmFsdWUgPSBjYWxsRnJhbWUt
PnIodmFsdWUpLmpzVmFsdWUoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
U3R1YnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1
YnMuY3BwCShyZXZpc2lvbiAxMDk4MjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFN0dWJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjU1Myw3ICsyNTUzLDcgQEAgREVGSU5FX1NU
VUJfRlVOQ1RJT04odm9pZCwgb3BfcHV0X2J5X3ZhbAogICAgICAgICAgICAgaWYgKGpzQXJyYXkt
PmNhblNldEluZGV4KGkpKQogICAgICAgICAgICAgICAgIGpzQXJyYXktPnNldEluZGV4KCpnbG9i
YWxEYXRhLCBpLCB2YWx1ZSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgSlNB
cnJheTo6cHV0QnlJbmRleChqc0FycmF5LCBjYWxsRnJhbWUsIGksIHZhbHVlKTsKKyAgICAgICAg
ICAgICAgICBKU0FycmF5OjpwdXRCeUluZGV4KGpzQXJyYXksIGNhbGxGcmFtZSwgaSwgdmFsdWUs
IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpKTsKICAgICAgICAgfSBlbHNl
IGlmIChpc0pTQnl0ZUFycmF5KGJhc2VWYWx1ZSkgJiYgYXNCeXRlQXJyYXkoYmFzZVZhbHVlKS0+
Y2FuQWNjZXNzSW5kZXgoaSkpIHsKICAgICAgICAgICAgIEpTQnl0ZUFycmF5KiBqc0J5dGVBcnJh
eSA9IGFzQnl0ZUFycmF5KGJhc2VWYWx1ZSk7CiAgICAgICAgICAgICBjdGlQYXRjaENhbGxCeVJl
dHVybkFkZHJlc3MoY2FsbEZyYW1lLT5jb2RlQmxvY2soKSwgU1RVQl9SRVRVUk5fQUREUkVTUywg
RnVuY3Rpb25QdHIoY3RpX29wX3B1dF9ieV92YWxfYnl0ZV9hcnJheSkpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCShyZXZpc2lvbiAx
MDk4MjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDQ0LDcgKzEwNDQsNyBAQCBMTElOVF9TTE9XX1BBVEhfREVD
TChzbG93X3BhdGhfcHV0X2J5X3ZhCiAgICAgICAgICAgICBpZiAoanNBcnJheS0+Y2FuU2V0SW5k
ZXgoaSkpCiAgICAgICAgICAgICAgICAganNBcnJheS0+c2V0SW5kZXgoZ2xvYmFsRGF0YSwgaSwg
dmFsdWUpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIEpTQXJyYXk6OnB1dEJ5
SW5kZXgoanNBcnJheSwgZXhlYywgaSwgdmFsdWUpOworICAgICAgICAgICAgICAgIEpTQXJyYXk6
OnB1dEJ5SW5kZXgoanNBcnJheSwgZXhlYywgaSwgdmFsdWUsIGV4ZWMtPmNvZGVCbG9jaygpLT5p
c1N0cmljdE1vZGUoKSk7CiAgICAgICAgICAgICBMTElOVF9FTkQoKTsKICAgICAgICAgfQogICAg
ICAgICBpZiAoaXNKU0J5dGVBcnJheShiYXNlVmFsdWUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Bcmd1bWVudHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5jcHAJKHJldmlzaW9uIDEwOTgyMikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE5Niw3ICsxOTYsNyBAQCB2b2lkIEFyZ3VtZW50czo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09i
CiAgICAgSlNPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhlYywgcHJv
cGVydHlOYW1lcywgbW9kZSk7CiB9CiAKLXZvaWQgQXJndW1lbnRzOjpwdXRCeUluZGV4KEpTQ2Vs
bCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVlKQordm9p
ZCBBcmd1bWVudHM6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVu
c2lnbmVkIGksIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCiB7CiAgICAgQXJndW1l
bnRzKiB0aGlzT2JqZWN0ID0ganNDYXN0PEFyZ3VtZW50cyo+KGNlbGwpOwogICAgIGlmIChpIDwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHRoaXNPYmplY3QtPmQtPm51bUFyZ3VtZW50cykgJiYgKCF0
aGlzT2JqZWN0LT5kLT5kZWxldGVkQXJndW1lbnRzIHx8ICF0aGlzT2JqZWN0LT5kLT5kZWxldGVk
QXJndW1lbnRzW2ldKSkgewpAQCAtMjA0LDcgKzIwNCw3IEBAIHZvaWQgQXJndW1lbnRzOjpwdXRC
eUluZGV4KEpTQ2VsbCogY2VsbCwKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFB1dFBy
b3BlcnR5U2xvdCBzbG90OworICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KHNob3VsZFRocm93KTsK
ICAgICBKU09iamVjdDo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIElkZW50aWZpZXIoZXhlYywgVVN0
cmluZzo6bnVtYmVyKGkpKSwgdmFsdWUsIHNsb3QpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuaAkocmV2aXNpb24gMTA5ODIyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEx
NCw3ICsxMTQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmll
ciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogICAgICAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9w
ZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVt
ZXJhdGlvbk1vZGUpOwogICAgICAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRl
KiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNs
b3QmKTsKLSAgICAgICAgc3RhdGljIHZvaWQgcHV0QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUq
LCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUpOworICAgICAgICBzdGF0aWMgdm9pZCBw
dXRCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CiAgICAgICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3Bl
cnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7
CiAgICAgICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqLCBFeGVj
U3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICBzdGF0aWMgYm9vbCBkZWZp
bmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3Bw
CShyZXZpc2lvbiAxMDk4MjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJh
eVByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyNiwxMiArNDI2LDE0IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0YKICAgICBmb3IgKHVuc2lnbmVkIG4g
PSAwOyBuIDwgZXhlYy0+YXJndW1lbnRDb3VudCgpOyBuKyspIHsKICAgICAgICAgLy8gQ2hlY2sg
Zm9yIGludGVnZXIgb3ZlcmZsb3c7IHdoZXJlIHNhZmUgd2UgY2FuIGRvIGEgZmFzdCBwdXQgYnkg
aW5kZXguCiAgICAgICAgIGlmIChsZW5ndGggKyBuID49IGxlbmd0aCkKLSAgICAgICAgICAgIHRo
aXNPYmotPm1ldGhvZFRhYmxlKCktPnB1dEJ5SW5kZXgodGhpc09iaiwgZXhlYywgbGVuZ3RoICsg
biwgZXhlYy0+YXJndW1lbnQobikpOworICAgICAgICAgICAgdGhpc09iai0+bWV0aG9kVGFibGUo
KS0+cHV0QnlJbmRleCh0aGlzT2JqLCBleGVjLCBsZW5ndGggKyBuLCBleGVjLT5hcmd1bWVudChu
KSwgdHJ1ZSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgUHV0UHJvcGVydHlTbG90IHNs
b3Q7CiAgICAgICAgICAgICBJZGVudGlmaWVyIHByb3BlcnR5TmFtZShleGVjLCBKU1ZhbHVlKHN0
YXRpY19jYXN0PGludDY0X3Q+KGxlbmd0aCkgKyBzdGF0aWNfY2FzdDxpbnQ2NF90PihuKSkudG9T
dHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKICAgICAgICAgICAgIHRoaXNPYmotPm1ldGhvZFRh
YmxlKCktPnB1dCh0aGlzT2JqLCBleGVjLCBwcm9wZXJ0eU5hbWUsIGV4ZWMtPmFyZ3VtZW50KG4p
LCBzbG90KTsKICAgICAgICAgfQorICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisg
ICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIH0K
ICAgICBKU1ZhbHVlIG5ld0xlbmd0aChzdGF0aWNfY2FzdDxpbnQ2NF90PihsZW5ndGgpICsgc3Rh
dGljX2Nhc3Q8aW50NjRfdD4oZXhlYy0+YXJndW1lbnRDb3VudCgpKSk7CiAgICAgcHV0UHJvcGVy
dHkoZXhlYywgdGhpc09iaiwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwgbmV3TGVuZ3Ro
KTsKQEAgLTQ1NiwxNCArNDU4LDE4IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJy
YXlQcm90b0YKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CiAKICAgICAgICAgaWYgKG9iajIpCi0gICAgICAgICAgICB0aGlzT2JqLT5tZXRob2RUYWJs
ZSgpLT5wdXRCeUluZGV4KHRoaXNPYmosIGV4ZWMsIGssIG9iajIpOworICAgICAgICAgICAgdGhp
c09iai0+bWV0aG9kVGFibGUoKS0+cHV0QnlJbmRleCh0aGlzT2JqLCBleGVjLCBrLCBvYmoyLCB0
cnVlKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgdGhpc09iai0+bWV0aG9kVGFibGUoKS0+
ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXNPYmosIGV4ZWMsIGspOworICAgICAgICBpZiAoZXhl
Yy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwogCiAgICAgICAgIGlmIChvYmopCi0gICAgICAgICAgICB0aGlzT2JqLT5t
ZXRob2RUYWJsZSgpLT5wdXRCeUluZGV4KHRoaXNPYmosIGV4ZWMsIGxrMSwgb2JqKTsKKyAgICAg
ICAgICAgIHRoaXNPYmotPm1ldGhvZFRhYmxlKCktPnB1dEJ5SW5kZXgodGhpc09iaiwgZXhlYywg
bGsxLCBvYmosIHRydWUpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICB0aGlzT2JqLT5tZXRo
b2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgodGhpc09iaiwgZXhlYywgbGsxKTsKKyAg
ICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICB9CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh0aGlzT2JqKTsKIH0KQEAgLTQ4OSw5ICs0OTUsMTEgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBhcnJheVByb3RvRgogICAgICAgICAgICAgICAgIGlmIChleGVjLT5oYWRFeGNl
cHRpb24oKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKICAgICAgICAgICAgICAgICBpZiAob2JqKQotICAgICAgICAgICAgICAgICAg
ICB0aGlzT2JqLT5tZXRob2RUYWJsZSgpLT5wdXRCeUluZGV4KHRoaXNPYmosIGV4ZWMsIGsgLSAx
LCBvYmopOworICAgICAgICAgICAgICAgICAgICB0aGlzT2JqLT5tZXRob2RUYWJsZSgpLT5wdXRC
eUluZGV4KHRoaXNPYmosIGV4ZWMsIGsgLSAxLCBvYmosIHRydWUpOwogICAgICAgICAgICAgICAg
IGVsc2UKICAgICAgICAgICAgICAgICAgICAgdGhpc09iai0+bWV0aG9kVGFibGUoKS0+ZGVsZXRl
UHJvcGVydHlCeUluZGV4KHRoaXNPYmosIGV4ZWMsIGsgLSAxKTsKKyAgICAgICAgICAgICAgICBp
ZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICB0
aGlzT2JqLT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgodGhpc09iaiwgZXhl
YywgbGVuZ3RoIC0gMSk7CiAgICAgICAgIH0KQEAgLTU4MCw4ICs1ODgsMTIgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRgogICAgICAgICB9CiAgICAgICAgIC8vIFN3
YXAgdGhlbWluIGFuZCBpCiAgICAgICAgIGlmICh0aGVtaW4gPiBpKSB7Ci0gICAgICAgICAgICB0
aGlzT2JqLT5tZXRob2RUYWJsZSgpLT5wdXRCeUluZGV4KHRoaXNPYmosIGV4ZWMsIGksIG1pbk9i
aik7Ci0gICAgICAgICAgICB0aGlzT2JqLT5tZXRob2RUYWJsZSgpLT5wdXRCeUluZGV4KHRoaXNP
YmosIGV4ZWMsIHRoZW1pbiwgaU9iaik7CisgICAgICAgICAgICB0aGlzT2JqLT5tZXRob2RUYWJs
ZSgpLT5wdXRCeUluZGV4KHRoaXNPYmosIGV4ZWMsIGksIG1pbk9iaiwgdHJ1ZSk7CisgICAgICAg
ICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAgICAgIHRoaXNPYmotPm1ldGhv
ZFRhYmxlKCktPnB1dEJ5SW5kZXgodGhpc09iaiwgZXhlYywgdGhlbWluLCBpT2JqLCB0cnVlKTsK
KyAgICAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgICAgICB9CiAgICAgfQog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhpc09iaik7CkBAIC02MzcsOSArNjQ5LDExIEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0YKICAgICAgICAgICAgICAg
ICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICAgICAgICAgICAgICAg
ICAgaWYgKHYpCi0gICAgICAgICAgICAgICAgICAgICAgICB0aGlzT2JqLT5tZXRob2RUYWJsZSgp
LT5wdXRCeUluZGV4KHRoaXNPYmosIGV4ZWMsIGsgKyBhZGRpdGlvbmFsQXJncywgdik7CisgICAg
ICAgICAgICAgICAgICAgICAgICB0aGlzT2JqLT5tZXRob2RUYWJsZSgpLT5wdXRCeUluZGV4KHRo
aXNPYmosIGV4ZWMsIGsgKyBhZGRpdGlvbmFsQXJncywgdiwgdHJ1ZSk7CiAgICAgICAgICAgICAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXNPYmotPm1ldGhvZFRhYmxl
KCktPmRlbGV0ZVByb3BlcnR5QnlJbmRleCh0aGlzT2JqLCBleGVjLCBrICsgYWRkaXRpb25hbEFy
Z3MpOworICAgICAgICAgICAgICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGsgPSBs
ZW5ndGg7IGsgPiBsZW5ndGggLSBkZWxldGVDb3VudCArIGFkZGl0aW9uYWxBcmdzOyAtLWspCiAg
ICAgICAgICAgICAgICAgICAgIHRoaXNPYmotPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5
QnlJbmRleCh0aGlzT2JqLCBleGVjLCBrIC0gMSk7CkBAIC02NTMsMTUgKzY2NywyMCBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GCiAgICAgICAgICAgICAgICAgICAg
IGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgICAgICAgICAgICAgICAgIGlm
IChvYmopCi0gICAgICAgICAgICAgICAgICAgICAgICB0aGlzT2JqLT5tZXRob2RUYWJsZSgpLT5w
dXRCeUluZGV4KHRoaXNPYmosIGV4ZWMsIGsgKyBhZGRpdGlvbmFsQXJncyAtIDEsIG9iaik7Cisg
ICAgICAgICAgICAgICAgICAgICAgICB0aGlzT2JqLT5tZXRob2RUYWJsZSgpLT5wdXRCeUluZGV4
KHRoaXNPYmosIGV4ZWMsIGsgKyBhZGRpdGlvbmFsQXJncyAtIDEsIG9iaiwgdHJ1ZSk7CiAgICAg
ICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXNPYmotPm1l
dGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5QnlJbmRleCh0aGlzT2JqLCBleGVjLCBrICsgYWRk
aXRpb25hbEFyZ3MgLSAxKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2Vw
dGlvbigpKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KICAgICB9Ci0gICAgZm9yICh1bnNpZ25lZCBrID0gMDsgayA8IGFkZGl0aW9uYWxBcmdzOyAr
K2spCi0gICAgICAgIHRoaXNPYmotPm1ldGhvZFRhYmxlKCktPnB1dEJ5SW5kZXgodGhpc09iaiwg
ZXhlYywgayArIGJlZ2luLCBleGVjLT5hcmd1bWVudChrICsgMikpOworICAgIGZvciAodW5zaWdu
ZWQgayA9IDA7IGsgPCBhZGRpdGlvbmFsQXJnczsgKytrKSB7CisgICAgICAgIHRoaXNPYmotPm1l
dGhvZFRhYmxlKCktPnB1dEJ5SW5kZXgodGhpc09iaiwgZXhlYywgayArIGJlZ2luLCBleGVjLT5h
cmd1bWVudChrICsgMiksIHRydWUpOworICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkp
CisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAg
IH0KIAogICAgIHB1dFByb3BlcnR5KGV4ZWMsIHRoaXNPYmosIGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS5sZW5ndGgsIGpzTnVtYmVyKGxlbmd0aCAtIGRlbGV0ZUNvdW50ICsgYWRkaXRpb25hbEFyZ3Mp
KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC02ODYsMTQgKzcwNSwx
OSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GCiAgICAgICAgICAg
ICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgICAgICAgICAgICAgIGlmICh2
KQotICAgICAgICAgICAgICAgICAgICB0aGlzT2JqLT5tZXRob2RUYWJsZSgpLT5wdXRCeUluZGV4
KHRoaXNPYmosIGV4ZWMsIGsgKyBuckFyZ3MgLSAxLCB2KTsKKyAgICAgICAgICAgICAgICAgICAg
dGhpc09iai0+bWV0aG9kVGFibGUoKS0+cHV0QnlJbmRleCh0aGlzT2JqLCBleGVjLCBrICsgbnJB
cmdzIC0gMSwgdiwgdHJ1ZSk7CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAg
ICAgICB0aGlzT2JqLT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgodGhpc09i
aiwgZXhlYywgayArIG5yQXJncyAtIDEpOworICAgICAgICAgICAgICAgIGlmIChleGVjLT5oYWRF
eGNlcHRpb24oKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KLSAgICBmb3Ig
KHVuc2lnbmVkIGsgPSAwOyBrIDwgbnJBcmdzOyArK2spCi0gICAgICAgIHRoaXNPYmotPm1ldGhv
ZFRhYmxlKCktPnB1dEJ5SW5kZXgodGhpc09iaiwgZXhlYywgaywgZXhlYy0+YXJndW1lbnQoaykp
OworICAgIGZvciAodW5zaWduZWQgayA9IDA7IGsgPCBuckFyZ3M7ICsraykgeworICAgICAgICB0
aGlzT2JqLT5tZXRob2RUYWJsZSgpLT5wdXRCeUluZGV4KHRoaXNPYmosIGV4ZWMsIGssIGV4ZWMt
PmFyZ3VtZW50KGspLCB0cnVlKTsKKyAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQor
ICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICB9
CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihsZW5ndGggKyBuckFyZ3MpOwogICAgIHB1
dFByb3BlcnR5KGV4ZWMsIHRoaXNPYmosIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIHJl
c3VsdCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmgJKHJldmlzaW9uIDEwOTgyMikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NsYXNzSW5mby5oCSh3b3JraW5nIGNvcHkp
CkBAIC00OCw3ICs0OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB0eXBlZGVmIHZvaWQg
KCpQdXRGdW5jdGlvblB0cikoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgUHV0RnVu
Y3Rpb25QdHIgcHV0OwogCi0gICAgICAgIHR5cGVkZWYgdm9pZCAoKlB1dEJ5SW5kZXhGdW5jdGlv
blB0cikoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVl
KTsKKyAgICAgICAgdHlwZWRlZiB2b2lkICgqUHV0QnlJbmRleEZ1bmN0aW9uUHRyKShKU0NlbGwq
LCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxk
VGhyb3cpOwogICAgICAgICBQdXRCeUluZGV4RnVuY3Rpb25QdHIgcHV0QnlJbmRleDsKIAogICAg
ICAgICB0eXBlZGVmIGJvb2wgKCpEZWxldGVQcm9wZXJ0eUZ1bmN0aW9uUHRyKShKU0NlbGwqLCBF
eGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0FycmF5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0FycmF5LmNwcAkocmV2aXNpb24gMTA5ODIyKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwNyw3ICsy
MDcsNyBAQCBpbmxpbmUgc3RkOjpwYWlyPFNwYXJzZUFycmF5VmFsdWVNYXA6Oml0CiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KIAotaW5saW5lIHZvaWQgU3BhcnNlQXJyYXlWYWx1ZU1hcDo6cHV0KEV4
ZWNTdGF0ZSogZXhlYywgSlNBcnJheSogYXJyYXksIHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUp
CitpbmxpbmUgdm9pZCBTcGFyc2VBcnJheVZhbHVlTWFwOjpwdXQoRXhlY1N0YXRlKiBleGVjLCBK
U0FycmF5KiBhcnJheSwgdW5zaWduZWQgaSwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJv
dykKIHsKICAgICBzdGQ6OnBhaXI8U3BhcnNlQXJyYXlWYWx1ZU1hcDo6aXRlcmF0b3IsIGJvb2w+
IHJlc3VsdCA9IGFkZChhcnJheSwgaSk7CiAgICAgU3BhcnNlQXJyYXlFbnRyeSYgZW50cnkgPSBy
ZXN1bHQuZmlyc3QtPnNlY29uZDsKQEAgLTIxNywxNCArMjE3LDE1IEBAIGlubGluZSB2b2lkIFNw
YXJzZUFycmF5VmFsdWVNYXA6OnB1dChFeGUKICAgICAvLyBleHRlbnNpYmxlLCB0aGlzIGlzIG5v
dCB0aGUgcmlnaHQgdGhpbmcgdG8gaGF2ZSBkb25lIC0gc28gcmVtb3ZlIGFnYWluLgogICAgIGlm
IChyZXN1bHQuc2Vjb25kICYmICFhcnJheS0+aXNFeHRlbnNpYmxlKCkpIHsKICAgICAgICAgcmVt
b3ZlKHJlc3VsdC5maXJzdCk7Ci0gICAgICAgIC8vIEZJWE1FOiBzaG91bGQgdGhyb3cgaW4gc3Ry
aWN0IG1vZGUuCisgICAgICAgIGlmIChzaG91bGRUaHJvdykKKyAgICAgICAgICAgIHRocm93VHlw
ZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAoIShlbnRyeS5hdHRyaWJ1dGVzICYgQWNjZXNz
b3IpKSB7CiAgICAgICAgIGlmIChlbnRyeS5hdHRyaWJ1dGVzICYgUmVhZE9ubHkpIHsKLSAgICAg
ICAgICAgIC8vIEZJWE1FOiBzaG91bGQgdGhyb3cgaWYgYmVpbmcgY2FsbGVkIGZyb20gc3RyaWN0
IG1vZGUuCi0gICAgICAgICAgICAvLyB0aHJvd1R5cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVh
ZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOworICAgICAgICAgICAgaWYgKHNob3VsZFRocm93KQor
ICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVBy
b3BlcnR5V3JpdGVFcnJvcik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAt
MjM3LDggKzIzOCw4IEBAIGlubGluZSB2b2lkIFNwYXJzZUFycmF5VmFsdWVNYXA6OnB1dChFeGUK
ICAgICBKU09iamVjdCogc2V0dGVyID0gYXNHZXR0ZXJTZXR0ZXIoYWNjZXNzb3IpLT5zZXR0ZXIo
KTsKICAgICAKICAgICBpZiAoIXNldHRlcikgewotICAgICAgICAvLyBGSVhNRTogc2hvdWxkIHRo
cm93IGlmIGJlaW5nIGNhbGxlZCBmcm9tIHN0cmljdCBtb2RlLgotICAgICAgICAvLyB0aHJvd1R5
cGVFcnJvcihleGVjLCAic2V0dGluZyBhIHByb3BlcnR5IHRoYXQgaGFzIG9ubHkgYSBnZXR0ZXIi
KTsKKyAgICAgICAgaWYgKHNob3VsZFRocm93KQorICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3Io
ZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApAQCAtNzI1LDcgKzcyNiw3IEBAIHZvaWQgSlNBcnJheTo6cHV0KEpTQ2Vs
bCogY2VsbCwgRXhlY1N0YXQKICAgICBib29sIGlzQXJyYXlJbmRleDsKICAgICB1bnNpZ25lZCBp
ID0gcHJvcGVydHlOYW1lLnRvQXJyYXlJbmRleChpc0FycmF5SW5kZXgpOwogICAgIGlmIChpc0Fy
cmF5SW5kZXgpIHsKLSAgICAgICAgcHV0QnlJbmRleCh0aGlzT2JqZWN0LCBleGVjLCBpLCB2YWx1
ZSk7CisgICAgICAgIHB1dEJ5SW5kZXgodGhpc09iamVjdCwgZXhlYywgaSwgdmFsdWUsIHNsb3Qu
aXNTdHJpY3RNb2RlKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC03NDIsNyArNzQz
LDcgQEAgdm9pZCBKU0FycmF5OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdAogICAgIEpTT2Jq
ZWN0OjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiB9
CiAKLXZvaWQgSlNBcnJheTo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhl
YywgdW5zaWduZWQgaSwgSlNWYWx1ZSB2YWx1ZSkKK3ZvaWQgSlNBcnJheTo6cHV0QnlJbmRleChK
U0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaSwgSlNWYWx1ZSB2YWx1ZSwg
Ym9vbCBzaG91bGRUaHJvdykKIHsKICAgICBKU0FycmF5KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpT
QXJyYXkqPihjZWxsKTsKICAgICB0aGlzT2JqZWN0LT5jaGVja0NvbnNpc3RlbmN5KCk7CkBAIC03
NjksMTcgKzc3MCwxNyBAQCB2b2lkIEpTQXJyYXk6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBF
CiAKICAgICAvLyBIYW5kbGUgMl4zMi0xIC0gdGhpcyBpcyBub3QgYW4gYXJyYXkgaW5kZXggKHNl
ZSBFUzUuMSAxNS40KSwgYW5kIGlzIHRyZWF0ZWQgYXMgYSByZWd1bGFyIHByb3BlcnR5LgogICAg
IGlmIChVTkxJS0VMWShpID4gTUFYX0FSUkFZX0lOREVYKSkgewotICAgICAgICBQdXRQcm9wZXJ0
eVNsb3Qgc2xvdDsKKyAgICAgICAgUHV0UHJvcGVydHlTbG90IHNsb3Qoc2hvdWxkVGhyb3cpOwog
ICAgICAgICB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5wdXQodGhpc09iamVjdCwgZXhlYywg
SWRlbnRpZmllcjo6ZnJvbShleGVjLCBpKSwgdmFsdWUsIHNsb3QpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCiAgICAgLy8gRm9yIGFsbCBvdGhlciBjYXNlcywgY2FsbCBwdXRCeUluZGV4QmV5
b25kVmVjdG9yTGVuZ3RoLgotICAgIHRoaXNPYmplY3QtPnB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JM
ZW5ndGgoZXhlYywgaSwgdmFsdWUpOworICAgIHRoaXNPYmplY3QtPnB1dEJ5SW5kZXhCZXlvbmRW
ZWN0b3JMZW5ndGgoZXhlYywgaSwgdmFsdWUsIHNob3VsZFRocm93KTsKICAgICB0aGlzT2JqZWN0
LT5jaGVja0NvbnNpc3RlbmN5KCk7CiB9CiAKLXZvaWQgSlNBcnJheTo6cHV0QnlJbmRleEJleW9u
ZFZlY3Rvckxlbmd0aChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUp
Cit2b2lkIEpTQXJyYXk6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGgoRXhlY1N0YXRlKiBl
eGVjLCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQogewogICAg
IEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9IGV4ZWMtPmdsb2JhbERhdGEoKTsKIApAQCAtODEw
LDcgKzgxMSw3IEBAIHZvaWQgSlNBcnJheTo6cHV0QnlJbmRleEJleW9uZFZlY3RvckxlbmcKICAg
ICAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0bywgb3IgY2FuJ3QgdXNlIGEgdmVjdG9yIHRvIGhvbGQg
dGhpcyBwcm9wZXJ0eSAtIGFsbG9jYXRlIGEgc3BhcnNlIG1hcCAmIGFkZCB0aGUgdmFsdWUuCiAg
ICAgICAgIGFsbG9jYXRlU3BhcnNlTWFwKGV4ZWMtPmdsb2JhbERhdGEoKSk7CiAgICAgICAgIG1h
cCA9IG1fc3BhcnNlVmFsdWVNYXA7Ci0gICAgICAgIG1hcC0+cHV0KGV4ZWMsIHRoaXMsIGksIHZh
bHVlKTsKKyAgICAgICAgbWFwLT5wdXQoZXhlYywgdGhpcywgaSwgdmFsdWUsIHNob3VsZFRocm93
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtODE5LDcgKzgyMCw4IEBAIHZvaWQgSlNB
cnJheTo6cHV0QnlJbmRleEJleW9uZFZlY3RvckxlbmcKICAgICBpZiAoaSA+PSBsZW5ndGgpIHsK
ICAgICAgICAgLy8gUHJvaGliaXQgZ3Jvd2luZyB0aGUgYXJyYXkgaWYgbGVuZ3RoIGlzIG5vdCB3
cml0YWJsZS4KICAgICAgICAgaWYgKG1hcC0+bGVuZ3RoSXNSZWFkT25seSgpIHx8ICFpc0V4dGVu
c2libGUoKSkgewotICAgICAgICAgICAgLy8gRklYTUU6IHNob3VsZCB0aHJvdyBpbiBzdHJpY3Qg
bW9kZS4KKyAgICAgICAgICAgIGlmIChzaG91bGRUaHJvdykKKyAgICAgICAgICAgICAgICB0aHJv
d1R5cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGxlbmd0aCA9IGkgKyAxOwpA
QCAtODMwLDcgKzgzMiw3IEBAIHZvaWQgSlNBcnJheTo6cHV0QnlJbmRleEJleW9uZFZlY3Rvckxl
bmcKICAgICAvLyBXZSB3aWxsIGNvbnRpbnVlICB0byB1c2UgYSBzcGFyc2UgbWFwIGlmIFNwYXJz
ZU1vZGUgaXMgc2V0LCBhIHZlY3RvciB3b3VsZCBiZSB0b28gc3BhcnNlLCBvciBpZiBhbGxvY2F0
aW9uIGZhaWxzLgogICAgIHVuc2lnbmVkIG51bVZhbHVlc0luQXJyYXkgPSBzdG9yYWdlLT5tX251
bVZhbHVlc0luVmVjdG9yICsgbWFwLT5zaXplKCk7CiAgICAgaWYgKG1hcC0+c3BhcnNlTW9kZSgp
IHx8ICFpc0RlbnNlRW5vdWdoRm9yVmVjdG9yKGxlbmd0aCwgbnVtVmFsdWVzSW5BcnJheSkgfHwg
IWluY3JlYXNlVmVjdG9yTGVuZ3RoKGV4ZWMtPmdsb2JhbERhdGEoKSwgbGVuZ3RoKSkgewotICAg
ICAgICBtYXAtPnB1dChleGVjLCB0aGlzLCBpLCB2YWx1ZSk7CisgICAgICAgIG1hcC0+cHV0KGV4
ZWMsIHRoaXMsIGksIHZhbHVlLCBzaG91bGRUaHJvdyk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKQEAgLTEyOTUsMTQgKzEyOTcsMTUgQEAgdm9pZCBKU0FycmF5OjpwdXNoKEV4ZWNTdGF0ZSog
ZXhlYywgSlNWYQogCiAgICAgLy8gUHVzaGluZyB0byBhbiBhcnJheSBvZiBsZW5ndGggMl4zMi0x
IHN0b3JlcyB0aGUgcHJvcGVydHksIGJ1dCB0aHJvd3MgYSByYW5nZSBlcnJvci4KICAgICBpZiAo
VU5MSUtFTFkoc3RvcmFnZS0+bV9sZW5ndGggPT0gMHhGRkZGRkZGRnUpKSB7Ci0gICAgICAgIG1l
dGhvZFRhYmxlKCktPnB1dEJ5SW5kZXgodGhpcywgZXhlYywgc3RvcmFnZS0+bV9sZW5ndGgsIHZh
bHVlKTsKKyAgICAgICAgbWV0aG9kVGFibGUoKS0+cHV0QnlJbmRleCh0aGlzLCBleGVjLCBzdG9y
YWdlLT5tX2xlbmd0aCwgdmFsdWUsIHRydWUpOwogICAgICAgICAvLyBQZXIgRVM1LjEgMTUuNC40
Ljcgc3RlcCA2ICYgMTUuNC41LjEgc3RlcCAzLmQuCi0gICAgICAgIHRocm93RXJyb3IoZXhlYywg
Y3JlYXRlUmFuZ2VFcnJvcihleGVjLCAiSW52YWxpZCBhcnJheSBsZW5ndGgiKSk7CisgICAgICAg
IGlmICghZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgICAgICB0aHJvd0Vycm9yKGV4ZWMs
IGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgIkludmFsaWQgYXJyYXkgbGVuZ3RoIikpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCiAgICAgLy8gSGFuZGxlZCB0aGUgc2FtZSBhcyBwdXRJbmRleC4K
LSAgICBwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVuZ3RoKGV4ZWMsIHN0b3JhZ2UtPm1fbGVuZ3Ro
LCB2YWx1ZSk7CisgICAgcHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aChleGVjLCBzdG9yYWdl
LT5tX2xlbmd0aCwgdmFsdWUsIHRydWUpOwogICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKIH0KIApA
QCAtMTMyNyw3ICsxMzMwLDcgQEAgdm9pZCBKU0FycmF5OjpzaGlmdENvdW50KEV4ZWNTdGF0ZSog
ZXhlYwogICAgICAgICAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXMpOwogICAgICAgICAg
ICAgICAgIEpTVmFsdWUgcCA9IHByb3RvdHlwZSgpOwogICAgICAgICAgICAgICAgIGlmICgoIXAu
aXNOdWxsKCkpICYmIChhc09iamVjdChwKS0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIGksIHNsb3Qp
KSkKLSAgICAgICAgICAgICAgICAgICAgbWV0aG9kVGFibGUoKS0+cHV0QnlJbmRleCh0aGlzLCBl
eGVjLCBpLCBzbG90LmdldFZhbHVlKGV4ZWMsIGkpKTsKKyAgICAgICAgICAgICAgICAgICAgbWV0
aG9kVGFibGUoKS0+cHV0QnlJbmRleCh0aGlzLCBleGVjLCBpLCBzbG90LmdldFZhbHVlKGV4ZWMs
IGkpLCBmYWxzZSk7IC8vIEZJWE1FIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD04MDMzNQogICAgICAgICAgICAgfQogICAgICAgICB9CiAKQEAgLTEzNzIsNyArMTM3NSw3
IEBAIHZvaWQgSlNBcnJheTo6dW5zaGlmdENvdW50KEV4ZWNTdGF0ZSogZXgKICAgICAgICAgICAg
ICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzKTsKICAgICAgICAgICAgICAgICBKU1ZhbHVlIHAg
PSBwcm90b3R5cGUoKTsKICAgICAgICAgICAgICAgICBpZiAoKCFwLmlzTnVsbCgpKSAmJiAoYXNP
YmplY3QocCktPmdldFByb3BlcnR5U2xvdChleGVjLCBpLCBzbG90KSkpCi0gICAgICAgICAgICAg
ICAgICAgIG1ldGhvZFRhYmxlKCktPnB1dEJ5SW5kZXgodGhpcywgZXhlYywgaSwgc2xvdC5nZXRW
YWx1ZShleGVjLCBpKSk7CisgICAgICAgICAgICAgICAgICAgIG1ldGhvZFRhYmxlKCktPnB1dEJ5
SW5kZXgodGhpcywgZXhlYywgaSwgc2xvdC5nZXRWYWx1ZShleGVjLCBpKSwgZmFsc2UpOyAvLyBG
SVhNRSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODAzMzUKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQXJyYXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0FycmF5LmgJKHJldmlzaW9uIDEwOTgyMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQXJyYXkuaAkod29ya2luZyBjb3B5KQpAQCAtODUsNyArODUsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAgICAgICAgIC8vIFRoZXNlIG1ldGhvZHMgbWF5IG11
dGF0ZSB0aGUgY29udGVudHMgb2YgdGhlIG1hcAotICAgICAgICB2b2lkIHB1dChFeGVjU3RhdGUq
LCBKU0FycmF5KiwgdW5zaWduZWQsIEpTVmFsdWUpOworICAgICAgICB2b2lkIHB1dChFeGVjU3Rh
dGUqLCBKU0FycmF5KiwgdW5zaWduZWQsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwogICAg
ICAgICBib29sIHB1dERpcmVjdChFeGVjU3RhdGUqLCBKU0FycmF5KiwgdW5zaWduZWQsIEpTVmFs
dWUsIGJvb2wgc2hvdWxkVGhyb3cpOwogICAgICAgICBzdGQ6OnBhaXI8aXRlcmF0b3IsIGJvb2w+
IGFkZChKU0FycmF5KiwgdW5zaWduZWQpOwogICAgICAgICBpdGVyYXRvciBmaW5kKHVuc2lnbmVk
IGkpIHsgcmV0dXJuIG1fbWFwLmZpbmQoaSk7IH0KQEAgLTE2MCw3ICsxNjAsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCos
IEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleChK
U0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYp
OwogICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3Qq
LCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7Ci0g
ICAgICAgIHN0YXRpYyB2b2lkIHB1dEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWdu
ZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlKTsKKyAgICAgICAgc3RhdGljIHZvaWQgcHV0QnlJbmRl
eChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJv
b2wgc2hvdWxkVGhyb3cpOwogICAgICAgICAvLyBUaGlzIGlzIHNpbWlsYXIgdG8gdGhlIEpTT2Jq
ZWN0OjpwdXREaXJlY3QqIG1ldGhvZHM6CiAgICAgICAgIC8vICAtIHRoZSBwcm90b3R5cGUgY2hh
aW4gaXMgbm90IGNvbnN1bHRlZAogICAgICAgICAvLyAgLSBhY2Nlc3NvcnMgYXJlIG5vdCBjYWxs
ZWQuCkBAIC0yOTUsOCArMjk1LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZGVh
bGxvY2F0ZVNwYXJzZU1hcCgpOwogCiAgICAgICAgIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90U2xv
d0Nhc2UoRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsK
LSAgICAgICAgdm9pZCBwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVuZ3RoKEV4ZWNTdGF0ZSosIHVu
c2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSk7Ci0gICAgICAgIGJvb2wgcHV0RGlyZWN0SW5k
ZXhCZXlvbmRWZWN0b3JMZW5ndGgoRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKKyAgICAgICAgdm9pZCBwdXRCeUluZGV4QmV5b25k
VmVjdG9yTGVuZ3RoKEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwg
Ym9vbCBzaG91bGRUaHJvdyk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgcHV0RGly
ZWN0SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGgoRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlO
YW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKIAogICAgICAgICB1bnNpZ25lZCBnZXRO
ZXdWZWN0b3JMZW5ndGgodW5zaWduZWQgZGVzaXJlZExlbmd0aCk7CiAgICAgICAgIGJvb2wgaW5j
cmVhc2VWZWN0b3JMZW5ndGgoSlNHbG9iYWxEYXRhJiwgdW5zaWduZWQgbmV3TGVuZ3RoKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQnl0ZUFycmF5LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0J5dGVBcnJheS5jcHAJKHJl
dmlzaW9uIDEwOTgyMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQnl0ZUFy
cmF5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAyLDcgKzEwMiw3IEBAIHZvaWQgSlNCeXRlQXJy
YXk6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWMKICAgICBKU09iamVjdDo6cHV0KHRoaXNPYmplY3Qs
IGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQogCi12b2lkIEpTQnl0ZUFycmF5
OjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUpCit2b2lkIEpTQnl0ZUFycmF5OjpwdXRCeUluZGV4KEpT
Q2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFs
dWUgdmFsdWUsIGJvb2wpCiB7CiAgICAganNDYXN0PEpTQnl0ZUFycmF5Kj4oY2VsbCktPnNldElu
ZGV4KGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUpOwogfQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNCeXRlQXJyYXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0J5dGVBcnJheS5oCShyZXZpc2lvbiAxMDk4MjIpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0J5dGVBcnJheS5oCSh3b3JraW5nIGNvcHkpCkBA
IC05Miw3ICs5Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTQzo6SlNDZWxsKiwgSlND
OjpFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7
CiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVz
Y3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0
eURlc2NyaXB0b3ImKTsKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgcHV0
KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBKU0M6OlB1dFByb3BlcnR5U2xvdCYpOwotICAgICAg
ICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBwdXRCeUluZGV4KEpTQzo6SlNDZWxsKiwg
SlNDOjpFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSk7Cisg
ICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIHB1dEJ5SW5kZXgoSlNDOjpKU0Nl
bGwqLCBKU0M6OkV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVl
LCBib29sIHNob3VsZFRocm93KTsKIAogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMg
dm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAJKHJldmlzaW9uIDEwOTgyMikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEwNSwxMCArMTA1LDE1IEBAIHZvaWQgSlNDZWxsOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVj
U3RhdGUKICAgICB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5wdXQodGhpc09iamVjdCwgZXhl
YywgaWRlbnRpZmllciwgdmFsdWUsIHNsb3QpOwogfQogCi12b2lkIEpTQ2VsbDo6cHV0QnlJbmRl
eChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaWRlbnRpZmllciwgSlNW
YWx1ZSB2YWx1ZSkKK3ZvaWQgSlNDZWxsOjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0
YXRlKiBleGVjLCB1bnNpZ25lZCBpZGVudGlmaWVyLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3Vs
ZFRocm93KQogeworICAgIGlmIChjZWxsLT5pc1N0cmluZygpKSB7CisgICAgICAgIFB1dFByb3Bl
cnR5U2xvdCBzbG90KHNob3VsZFRocm93KTsKKyAgICAgICAgSlNWYWx1ZShjZWxsKS5wdXRUb1By
aW1pdGl2ZShleGVjLCBJZGVudGlmaWVyOjpmcm9tKGV4ZWMsIGlkZW50aWZpZXIpLCB2YWx1ZSwg
c2xvdCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgSlNPYmplY3QqIHRoaXNPYmplY3Qg
PSBjZWxsLT50b09iamVjdChleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpOwotICAg
IHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKCktPnB1dEJ5SW5kZXgodGhpc09iamVjdCwgZXhlYywg
aWRlbnRpZmllciwgdmFsdWUpOworICAgIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKCktPnB1dEJ5
SW5kZXgodGhpc09iamVjdCwgZXhlYywgaWRlbnRpZmllciwgdmFsdWUsIHNob3VsZFRocm93KTsK
IH0KIAogYm9vbCBKU0NlbGw6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgJKHJldmlzaW9uIDEwOTgyMikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDcsNyArMTA3
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGNvbnN0IENsYXNzSW5mbyogdmFsaWRhdGVk
Q2xhc3NJbmZvKCkgY29uc3Q7CiAgICAgICAgIGNvbnN0IE1ldGhvZFRhYmxlKiBtZXRob2RUYWJs
ZSgpIGNvbnN0OwogICAgICAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
KTsKLSAgICAgICAgc3RhdGljIHZvaWQgcHV0QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1
bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUpOworICAgICAgICBzdGF0aWMgdm9pZCBwdXRC
eUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1
ZSwgYm9vbCBzaG91bGRUaHJvdyk7CiAgICAgICAgIAogICAgICAgICBzdGF0aWMgYm9vbCBkZWxl
dGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUpOwogICAgICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxs
KiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTTm90QW5PYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTm90QW5PYmplY3QuY3BwCShyZXZpc2lvbiAxMDk4
MjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05vdEFuT2JqZWN0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNzAsNyArNzAsNyBAQCB2b2lkIEpTTm90QW5PYmplY3Q6OnB1dChK
U0NlbGwqLCBFeGVjU3RhCiAgICAgQVNTRVJUX1VOVVNFRChleGVjLCBleGVjLT5oYWRFeGNlcHRp
b24oKSk7CiB9CiAKLXZvaWQgSlNOb3RBbk9iamVjdDo6cHV0QnlJbmRleChKU0NlbGwqLCBFeGVj
U3RhdGUqIGV4ZWMsIHVuc2lnbmVkLCBKU1ZhbHVlKQordm9pZCBKU05vdEFuT2JqZWN0OjpwdXRC
eUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQsIEpTVmFsdWUsIGJvb2wp
CiB7CiAgICAgQVNTRVJUX1VOVVNFRChleGVjLCBleGVjLT5oYWRFeGNlcHRpb24oKSk7CiB9Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05vdEFuT2JqZWN0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOb3RBbk9iamVjdC5oCShy
ZXZpc2lvbiAxMDk4MjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05vdEFu
T2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTczLDcgKzczLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCos
IEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKIAog
ICAgICAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKLSAgICAgICAg
c3RhdGljIHZvaWQgcHV0QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUpOworICAgICAgICBzdGF0aWMgdm9pZCBwdXRCeUluZGV4KEpTQ2Vs
bCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91
bGRUaHJvdyk7CiAKICAgICAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwg
RXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsKICAgICAgICAgc3Rh
dGljIGJvb2wgZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2ln
bmVkIHByb3BlcnR5TmFtZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09OT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU09OT2JqZWN0LmNwcAkocmV2aXNpb24gMTA5ODIyKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcwNCwxMiArNzA0
LDggQEAgTkVWRVJfSU5MSU5FIEpTVmFsdWUgV2Fsa2VyOjp3YWxrKEpTVmFsdQogICAgICAgICAg
ICAgICAgIEpTVmFsdWUgZmlsdGVyZWRWYWx1ZSA9IGNhbGxSZXZpdmVyKGFycmF5LCBqc1N0cmlu
ZyhtX2V4ZWMsIFVTdHJpbmc6Om51bWJlcihpbmRleFN0YWNrLmxhc3QoKSkpLCBvdXRWYWx1ZSk7
CiAgICAgICAgICAgICAgICAgaWYgKGZpbHRlcmVkVmFsdWUuaXNVbmRlZmluZWQoKSkKICAgICAg
ICAgICAgICAgICAgICAgYXJyYXktPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5QnlJbmRl
eChhcnJheSwgbV9leGVjLCBpbmRleFN0YWNrLmxhc3QoKSk7Ci0gICAgICAgICAgICAgICAgZWxz
ZSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChpc0pTQXJyYXkoYXJyYXkpICYmIGFycmF5LT5j
YW5TZXRJbmRleChpbmRleFN0YWNrLmxhc3QoKSkpCi0gICAgICAgICAgICAgICAgICAgICAgICBh
cnJheS0+c2V0SW5kZXgobV9leGVjLT5nbG9iYWxEYXRhKCksIGluZGV4U3RhY2subGFzdCgpLCBm
aWx0ZXJlZFZhbHVlKTsKLSAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAg
ICAgICAgICAgYXJyYXktPm1ldGhvZFRhYmxlKCktPnB1dEJ5SW5kZXgoYXJyYXksIG1fZXhlYywg
aW5kZXhTdGFjay5sYXN0KCksIGZpbHRlcmVkVmFsdWUpOwotICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGFycmF5LT5wdXREaXJlY3RJ
bmRleChtX2V4ZWMsIGluZGV4U3RhY2subGFzdCgpLCBmaWx0ZXJlZFZhbHVlLCBmYWxzZSk7CiAg
ICAgICAgICAgICAgICAgaWYgKG1fZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBqc051bGwoKTsKICAgICAgICAgICAgICAgICBpbmRleFN0YWNrLmxhc3Qo
KSsrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAko
cmV2aXNpb24gMTA5ODIyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmpl
Y3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODUsOSArMTg1LDkgQEAgdm9pZCBKU09iamVjdDo6
cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YQogICAgIHJldHVybjsKIH0KIAotdm9pZCBKU09iamVj
dDo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJv
cGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlKQordm9pZCBKU09iamVjdDo6cHV0QnlJbmRleChKU0Nl
bGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVl
IHZhbHVlLCBib29sIHNob3VsZFRocm93KQogewotICAgIFB1dFByb3BlcnR5U2xvdCBzbG90Owor
ICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KHNob3VsZFRocm93KTsKICAgICBKU09iamVjdCogdGhp
c09iamVjdCA9IGpzQ2FzdDxKU09iamVjdCo+KGNlbGwpOwogICAgIHRoaXNPYmplY3QtPm1ldGhv
ZFRhYmxlKCktPnB1dCh0aGlzT2JqZWN0LCBleGVjLCBJZGVudGlmaWVyOjpmcm9tKGV4ZWMsIHBy
b3BlcnR5TmFtZSksIHZhbHVlLCBzbG90KTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPYmplY3QuaAkocmV2aXNpb24gMTA5ODI0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTA5LDcgKzEwOSw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBib29sIGFsbG93c0FjY2Vzc0Zyb20oRXhlY1N0
YXRlKik7CiAKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgcHV0KEpTQ2Vs
bCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwg
UHV0UHJvcGVydHlTbG90Jik7Ci0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lk
IHB1dEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgcHV0QnlJbmRl
eChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJv
b2wgc2hvdWxkVGhyb3cpOwogCiAgICAgICAgIC8vIHB1dERpcmVjdCBpcyBlZmZlY3RpdmVseSBh
biB1bmNoZWNrZWQgdmVzaW9uIG9mICdkZWZpbmVPd25Qcm9wZXJ0eSc6CiAgICAgICAgIC8vICAt
IHRoZSBwcm90b3R5cGUgY2hhaW4gaXMgbm90IGNvbnN1bHRlZApAQCAtODQ3LDcgKzg0Nyw3IEBA
IGlubGluZSB2b2lkIEpTVmFsdWU6OnB1dEJ5SW5kZXgoRXhlY1N0YXQKICAgICAgICAgcHV0VG9Q
cmltaXRpdmUoZXhlYywgSWRlbnRpZmllcjo6ZnJvbShleGVjLCBwcm9wZXJ0eU5hbWUpLCB2YWx1
ZSwgc2xvdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXNDZWxsKCktPm1ldGhvZFRh
YmxlKCktPnB1dEJ5SW5kZXgoYXNDZWxsKCksIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUpOwor
ICAgIGFzQ2VsbCgpLT5tZXRob2RUYWJsZSgpLT5wdXRCeUluZGV4KGFzQ2VsbCgpLCBleGVjLCBw
cm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRUaHJvdyk7CiB9CiAKIC8vIC0tLSBKU1ZhbHVlIGlu
bGluZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24g
MTA5ODIyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0
b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTMsOSArMTUzLDkgQEAgdm9pZCBSZWdFeHBNYXRj
aGVzQXJyYXk6OmZpbGxBcnJheUluc3RhbgogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPD0g
bGFzdE51bVN1YnBhdHRlcm5zOyArK2kpIHsKICAgICAgICAgaW50IHN0YXJ0ID0gbV9yZWdFeHBS
ZXN1bHQub3ZlY3RvclsyICogaV07CiAgICAgICAgIGlmIChzdGFydCA+PSAwKQotICAgICAgICAg
ICAgSlNBcnJheTo6cHV0QnlJbmRleCh0aGlzLCBleGVjLCBpLCBqc1N1YnN0cmluZyhleGVjLCBt
X3JlZ0V4cFJlc3VsdC5pbnB1dCwgc3RhcnQsIG1fcmVnRXhwUmVzdWx0Lm92ZWN0b3JbMiAqIGkg
KyAxXSAtIHN0YXJ0KSk7CisgICAgICAgICAgICBwdXREaXJlY3RJbmRleChleGVjLCBpLCBqc1N1
YnN0cmluZyhleGVjLCBtX3JlZ0V4cFJlc3VsdC5pbnB1dCwgc3RhcnQsIG1fcmVnRXhwUmVzdWx0
Lm92ZWN0b3JbMiAqIGkgKyAxXSAtIHN0YXJ0KSwgZmFsc2UpOwogICAgICAgICBlbHNlCi0gICAg
ICAgICAgICBKU0FycmF5OjpwdXRCeUluZGV4KHRoaXMsIGV4ZWMsIGksIGpzVW5kZWZpbmVkKCkp
OworICAgICAgICAgICAgcHV0RGlyZWN0SW5kZXgoZXhlYywgaSwganNVbmRlZmluZWQoKSwgZmFs
c2UpOwogICAgIH0KIAogICAgIFB1dFByb3BlcnR5U2xvdCBzbG90OwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwTWF0Y2hlc0FycmF5LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwTWF0Y2hlc0FycmF5LmgJKHJldmlz
aW9uIDEwOTgyMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNo
ZXNBcnJheS5oCSh3b3JraW5nIGNvcHkpCkBAIC04MiwxMiArODIsMTIgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgICAgICBKU0FycmF5OjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlO
YW1lLCB2LCBzbG90KTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgc3RhdGljIHZvaWQg
cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJvcGVy
dHlOYW1lLCBKU1ZhbHVlIHYpCisgICAgICAgIHN0YXRpYyB2b2lkIHB1dEJ5SW5kZXgoSlNDZWxs
KiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2
LCBib29sIHNob3VsZFRocm93KQogICAgICAgICB7CiAgICAgICAgICAgICBSZWdFeHBNYXRjaGVz
QXJyYXkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8UmVnRXhwTWF0Y2hlc0FycmF5Kj4oY2VsbCk7CiAg
ICAgICAgICAgICBpZiAoIXRoaXNPYmplY3QtPm1fZGlkRmlsbEFycmF5SW5zdGFuY2UpCiAgICAg
ICAgICAgICAgICAgdGhpc09iamVjdC0+ZmlsbEFycmF5SW5zdGFuY2UoZXhlYyk7Ci0gICAgICAg
ICAgICBKU0FycmF5OjpwdXRCeUluZGV4KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwg
dik7CisgICAgICAgICAgICBKU0FycmF5OjpwdXRCeUluZGV4KHRoaXNPYmplY3QsIGV4ZWMsIHBy
b3BlcnR5TmFtZSwgdiwgc2hvdWxkVGhyb3cpOwogICAgICAgICB9CiAKICAgICAgICAgc3RhdGlj
IGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMTA5ODIyKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtOTQ4LDcgKzk0OCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
c3RyaW5nUHJvdG8KICAgICAgICAgaWYgKHNlcGFyYXRvclZhbHVlLmlzVW5kZWZpbmVkKCkpIHsK
ICAgICAgICAgICAgIC8vIGEuIENhbGwgdGhlIFtbRGVmaW5lT3duUHJvcGVydHldXSBpbnRlcm5h
bCBtZXRob2Qgb2YgQSB3aXRoIGFyZ3VtZW50cyAiMCIsCiAgICAgICAgICAgICAvLyAgICBQcm9w
ZXJ0eSBEZXNjcmlwdG9yIHtbW1ZhbHVlXV06IFMsIFtbV3JpdGFibGVdXTogdHJ1ZSwgW1tFbnVt
ZXJhYmxlXV06IHRydWUsIFtbQ29uZmlndXJhYmxlXV06IHRydWV9LCBhbmQgZmFsc2UuCi0gICAg
ICAgICAgICByZXN1bHQtPm1ldGhvZFRhYmxlKCktPnB1dEJ5SW5kZXgocmVzdWx0LCBleGVjLCAw
LCBqc1N0cmluZ1dpdGhSZXVzZShleGVjLCB0aGlzVmFsdWUsIGlucHV0KSk7CisgICAgICAgICAg
ICByZXN1bHQtPnB1dERpcmVjdEluZGV4KGV4ZWMsIDAsIGpzU3RyaW5nV2l0aFJldXNlKGV4ZWMs
IHRoaXNWYWx1ZSwgaW5wdXQpLCBmYWxzZSk7CiAgICAgICAgICAgICAvLyBiLiBSZXR1cm4gQS4K
ICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKICAgICAgICAgfQpA
QCAtOTYxLDcgKzk2MSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJv
dG8KICAgICAgICAgICAgIC8vICAgIFByb3BlcnR5IERlc2NyaXB0b3Ige1tbVmFsdWVdXTogUywg
W1tXcml0YWJsZV1dOiB0cnVlLCBbW0VudW1lcmFibGVdXTogdHJ1ZSwgW1tDb25maWd1cmFibGVd
XTogdHJ1ZX0sIGFuZCBmYWxzZS4KICAgICAgICAgICAgIC8vIGQuIFJldHVybiBBLgogICAgICAg
ICAgICAgaWYgKHJlZy0+bWF0Y2goKmdsb2JhbERhdGEsIGlucHV0LCAwKSA8IDApCi0gICAgICAg
ICAgICAgICAgcmVzdWx0LT5tZXRob2RUYWJsZSgpLT5wdXRCeUluZGV4KHJlc3VsdCwgZXhlYywg
MCwganNTdHJpbmdXaXRoUmV1c2UoZXhlYywgdGhpc1ZhbHVlLCBpbnB1dCkpOworICAgICAgICAg
ICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0SW5kZXgoZXhlYywgMCwganNTdHJpbmdXaXRoUmV1c2Uo
ZXhlYywgdGhpc1ZhbHVlLCBpbnB1dCksIGZhbHNlKTsKICAgICAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUocmVzdWx0KTsKICAgICAgICAgfQogCkBAIC05OTIsNyArOTkyLDcgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90bwogICAgICAgICAgICAgLy8gICAg
dGhyb3VnaCBxIChleGNsdXNpdmUpLgogICAgICAgICAgICAgLy8gMi4gQ2FsbCB0aGUgW1tEZWZp
bmVPd25Qcm9wZXJ0eV1dIGludGVybmFsIG1ldGhvZCBvZiBBIHdpdGggYXJndW1lbnRzIFRvU3Ry
aW5nKGxlbmd0aEEpLAogICAgICAgICAgICAgLy8gICAgUHJvcGVydHkgRGVzY3JpcHRvciB7W1tW
YWx1ZV1dOiBULCBbW1dyaXRhYmxlXV06IHRydWUsIFtbRW51bWVyYWJsZV1dOiB0cnVlLCBbW0Nv
bmZpZ3VyYWJsZV1dOiB0cnVlfSwgYW5kIGZhbHNlLgotICAgICAgICAgICAgcmVzdWx0LT5tZXRo
b2RUYWJsZSgpLT5wdXRCeUluZGV4KHJlc3VsdCwgZXhlYywgcmVzdWx0TGVuZ3RoLCBqc1N1YnN0
cmluZyhleGVjLCBpbnB1dCwgcG9zaXRpb24sIG1hdGNoUG9zaXRpb24gLSBwb3NpdGlvbikpOwor
ICAgICAgICAgICAgcmVzdWx0LT5wdXREaXJlY3RJbmRleChleGVjLCByZXN1bHRMZW5ndGgsIGpz
U3Vic3RyaW5nKGV4ZWMsIGlucHV0LCBwb3NpdGlvbiwgbWF0Y2hQb3NpdGlvbiAtIHBvc2l0aW9u
KSwgZmFsc2UpOwogICAgICAgICAgICAgLy8gMy4gSW5jcmVtZW50IGxlbmd0aEEgYnkgMS4KICAg
ICAgICAgICAgIC8vIDQuIElmIGxlbmd0aEEgPT0gbGltLCByZXR1cm4gQS4KICAgICAgICAgICAg
IGlmICgrK3Jlc3VsdExlbmd0aCA9PSBsaW1pdCkKQEAgLTEwMTEsNyArMTAxMSw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG8KICAgICAgICAgICAgICAgICAvLyAg
IFRvU3RyaW5nKGxlbmd0aEEpLCBQcm9wZXJ0eSBEZXNjcmlwdG9yIHtbW1ZhbHVlXV06IGNhcFtp
XSwgW1tXcml0YWJsZV1dOgogICAgICAgICAgICAgICAgIC8vICAgdHJ1ZSwgW1tFbnVtZXJhYmxl
XV06IHRydWUsIFtbQ29uZmlndXJhYmxlXV06IHRydWV9LCBhbmQgZmFsc2UuCiAgICAgICAgICAg
ICAgICAgaW50IHN1YiA9IG92ZWN0b3JbaSAqIDJdOwotICAgICAgICAgICAgICAgIHJlc3VsdC0+
bWV0aG9kVGFibGUoKS0+cHV0QnlJbmRleChyZXN1bHQsIGV4ZWMsIHJlc3VsdExlbmd0aCwgc3Vi
IDwgMCA/IGpzVW5kZWZpbmVkKCkgOiBqc1N1YnN0cmluZyhleGVjLCBpbnB1dCwgc3ViLCBvdmVj
dG9yW2kgKiAyICsgMV0gLSBzdWIpKTsKKyAgICAgICAgICAgICAgICByZXN1bHQtPnB1dERpcmVj
dEluZGV4KGV4ZWMsIHJlc3VsdExlbmd0aCwgc3ViIDwgMCA/IGpzVW5kZWZpbmVkKCkgOiBqc1N1
YnN0cmluZyhleGVjLCBpbnB1dCwgc3ViLCBvdmVjdG9yW2kgKiAyICsgMV0gLSBzdWIpLCBmYWxz
ZSk7CiAgICAgICAgICAgICAgICAgLy8gYyBJbmNyZW1lbnQgbGVuZ3RoQSBieSAxLgogICAgICAg
ICAgICAgICAgIC8vIGQgSWYgbGVuZ3RoQSA9PSBsaW0sIHJldHVybiBBLgogICAgICAgICAgICAg
ICAgIGlmICgrK3Jlc3VsdExlbmd0aCA9PSBsaW1pdCkKQEAgLTEwMzAsNyArMTAzMCw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG8KICAgICAgICAgaWYgKHNlcGFy
YXRvclZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKICAgICAgICAgICAgIC8vIGEuICBDYWxsIHRoZSBb
W0RlZmluZU93blByb3BlcnR5XV0gaW50ZXJuYWwgbWV0aG9kIG9mIEEgd2l0aCBhcmd1bWVudHMg
IjAiLAogICAgICAgICAgICAgLy8gICAgIFByb3BlcnR5IERlc2NyaXB0b3Ige1tbVmFsdWVdXTog
UywgW1tXcml0YWJsZV1dOiB0cnVlLCBbW0VudW1lcmFibGVdXTogdHJ1ZSwgW1tDb25maWd1cmFi
bGVdXTogdHJ1ZX0sIGFuZCBmYWxzZS4KLSAgICAgICAgICAgIHJlc3VsdC0+bWV0aG9kVGFibGUo
KS0+cHV0QnlJbmRleChyZXN1bHQsIGV4ZWMsIDAsIGpzU3RyaW5nV2l0aFJldXNlKGV4ZWMsIHRo
aXNWYWx1ZSwgaW5wdXQpKTsKKyAgICAgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0SW5kZXgoZXhl
YywgMCwganNTdHJpbmdXaXRoUmV1c2UoZXhlYywgdGhpc1ZhbHVlLCBpbnB1dCksIGZhbHNlKTsK
ICAgICAgICAgICAgIC8vIGIuICBSZXR1cm4gQS4KICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUocmVzdWx0KTsKICAgICAgICAgfQpAQCAtMTA0Myw3ICsxMDQzLDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90bwogICAgICAgICAgICAgLy8gICAgUHJv
cGVydHkgRGVzY3JpcHRvciB7W1tWYWx1ZV1dOiBTLCBbW1dyaXRhYmxlXV06IHRydWUsIFtbRW51
bWVyYWJsZV1dOiB0cnVlLCBbW0NvbmZpZ3VyYWJsZV1dOiB0cnVlfSwgYW5kIGZhbHNlLgogICAg
ICAgICAgICAgLy8gZC4gUmV0dXJuIEEuCiAgICAgICAgICAgICBpZiAoIXNlcGFyYXRvci5pc0Vt
cHR5KCkpCi0gICAgICAgICAgICAgICAgcmVzdWx0LT5tZXRob2RUYWJsZSgpLT5wdXRCeUluZGV4
KHJlc3VsdCwgZXhlYywgMCwganNTdHJpbmdXaXRoUmV1c2UoZXhlYywgdGhpc1ZhbHVlLCBpbnB1
dCkpOworICAgICAgICAgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0SW5kZXgoZXhlYywgMCwganNT
dHJpbmdXaXRoUmV1c2UoZXhlYywgdGhpc1ZhbHVlLCBpbnB1dCksIGZhbHNlKTsKICAgICAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKICAgICAgICAgfQogCkBAIC0xMDU0
LDcgKzEwNTQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvCiAg
ICAgICAgICAgICBBU1NFUlQobGltaXQpOwogCiAgICAgICAgICAgICBkbyB7Ci0gICAgICAgICAg
ICAgICAgcmVzdWx0LT5tZXRob2RUYWJsZSgpLT5wdXRCeUluZGV4KHJlc3VsdCwgZXhlYywgcG9z
aXRpb24sIGpzU2luZ2xlQ2hhcmFjdGVyU3Vic3RyaW5nKGV4ZWMsIGlucHV0LCBwb3NpdGlvbikp
OworICAgICAgICAgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0SW5kZXgoZXhlYywgcG9zaXRpb24s
IGpzU2luZ2xlQ2hhcmFjdGVyU3Vic3RyaW5nKGV4ZWMsIGlucHV0LCBwb3NpdGlvbiksIGZhbHNl
KTsKICAgICAgICAgICAgIH0gd2hpbGUgKCsrcG9zaXRpb24gPCBsaW1pdCk7CiAKICAgICAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTEwNzEsNyArMTA3MSw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG8KICAgICAgICAgICAgIC8v
ICAgIHRocm91Z2ggcSAoZXhjbHVzaXZlKS4KICAgICAgICAgICAgIC8vIDIuIENhbGwgdGhlIFtb
RGVmaW5lT3duUHJvcGVydHldXSBpbnRlcm5hbCBtZXRob2Qgb2YgQSB3aXRoIGFyZ3VtZW50cyBU
b1N0cmluZyhsZW5ndGhBKSwKICAgICAgICAgICAgIC8vICAgIFByb3BlcnR5IERlc2NyaXB0b3Ig
e1tbVmFsdWVdXTogVCwgW1tXcml0YWJsZV1dOiB0cnVlLCBbW0VudW1lcmFibGVdXTogdHJ1ZSwg
W1tDb25maWd1cmFibGVdXTogdHJ1ZX0sIGFuZCBmYWxzZS4KLSAgICAgICAgICAgIHJlc3VsdC0+
bWV0aG9kVGFibGUoKS0+cHV0QnlJbmRleChyZXN1bHQsIGV4ZWMsIHJlc3VsdExlbmd0aCwganNT
dWJzdHJpbmcoZXhlYywgaW5wdXQsIHBvc2l0aW9uLCBtYXRjaFBvc2l0aW9uIC0gcG9zaXRpb24p
KTsKKyAgICAgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0SW5kZXgoZXhlYywgcmVzdWx0TGVuZ3Ro
LCBqc1N1YnN0cmluZyhleGVjLCBpbnB1dCwgcG9zaXRpb24sIG1hdGNoUG9zaXRpb24gLSBwb3Np
dGlvbiksIGZhbHNlKTsKICAgICAgICAgICAgIC8vIDMuIEluY3JlbWVudCBsZW5ndGhBIGJ5IDEu
CiAgICAgICAgICAgICAvLyA0LiBJZiBsZW5ndGhBID09IGxpbSwgcmV0dXJuIEEuCiAgICAgICAg
ICAgICBpZiAoKytyZXN1bHRMZW5ndGggPT0gbGltaXQpCkBAIC0xMDg3LDcgKzEwODcsNyBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvCiAgICAgLy8gICAgIHRocm91
Z2ggcyAoZXhjbHVzaXZlKS4KICAgICAvLyAxNS4gQ2FsbCB0aGUgW1tEZWZpbmVPd25Qcm9wZXJ0
eV1dIGludGVybmFsIG1ldGhvZCBvZiBBIHdpdGggYXJndW1lbnRzIFRvU3RyaW5nKGxlbmd0aEEp
LCBQcm9wZXJ0eSBEZXNjcmlwdG9yCiAgICAgLy8gICAgIHtbW1ZhbHVlXV06IFQsIFtbV3JpdGFi
bGVdXTogdHJ1ZSwgW1tFbnVtZXJhYmxlXV06IHRydWUsIFtbQ29uZmlndXJhYmxlXV06IHRydWV9
LCBhbmQgZmFsc2UuCi0gICAgcmVzdWx0LT5tZXRob2RUYWJsZSgpLT5wdXRCeUluZGV4KHJlc3Vs
dCwgZXhlYywgcmVzdWx0TGVuZ3RoKyssIGpzU3Vic3RyaW5nKGV4ZWMsIGlucHV0LCBwb3NpdGlv
biwgaW5wdXQubGVuZ3RoKCkgLSBwb3NpdGlvbikpOworICAgIHJlc3VsdC0+cHV0RGlyZWN0SW5k
ZXgoZXhlYywgcmVzdWx0TGVuZ3RoKyssIGpzU3Vic3RyaW5nKGV4ZWMsIGlucHV0LCBwb3NpdGlv
biwgaW5wdXQubGVuZ3RoKCkgLSBwb3NpdGlvbiksIGZhbHNlKTsKIAogICAgIC8vIDE2LiBSZXR1
cm4gQS4KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxMDk4NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwyOCBAQAorMjAxMi0wMy0wNSAgR2F2aW4gQmFycmFjbG91Z2ggIDxi
YXJyYWNsb3VnaEBhcHBsZS5jb20+CisKKyAgICAgICAgcHV0QnlJbmRleCBzaG91bGQgdGhyb3cg
aW4gc3RyaWN0IG1vZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTgwMzM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgTWFrZSB0aGUgTWV0aG9kVGFibGUgUHV0QnlJbmRleCB0cmFwIHRha2UgYSBib29sZWFu
ICdzaG91bGRUaHJvdycgcGFyYW1ldGVyLgorCisgICAgICAgICogYmluZGluZ3MvanMvU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lRGVzZXJpYWxpemVy
OjpwdXRQcm9wZXJ0eSk6CisgICAgICAgICogYmluZGluZ3Mvb2JqYy9XZWJTY3JpcHRPYmplY3Qu
bW06CisgICAgICAgICgtW1dlYlNjcmlwdE9iamVjdCBzZXRXZWJTY3JpcHRWYWx1ZUF0SW5kZXg6
dmFsdWU6XSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06
CisgICAgICAgIChHZW5lcmF0ZUhlYWRlcik6CisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0
aW9uKToKKyAgICAgICAgKiBicmlkZ2UvTlBfanNvYmplY3QuY3BwOgorICAgICAgICAoX05QTl9T
ZXRQcm9wZXJ0eSk6CisgICAgICAgICogYnJpZGdlL2puaS9qbmlfanNvYmplY3QubW06CisgICAg
ICAgIChKYXZhSlNPYmplY3Q6OnNldFNsb3QpOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX2Fy
cmF5LmNwcDoKKyAgICAgICAgKEpTQzo6UnVudGltZUFycmF5OjpwdXRCeUluZGV4KToKKyAgICAg
ICAgKiBicmlkZ2UvcnVudGltZV9hcnJheS5oOgorICAgICAgICAoUnVudGltZUFycmF5KToKKwog
MjAxMi0wMy0wNSAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIEF0
dGVtcHQgdG8gZml4IGEgbnVtYmVyIG9mIEdUSyB0ZXN0cy4KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAkocmV2aXNp
b24gMTA5ODIyKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIzMiwxMCArMTIzMiw3IEBAIHByaXZhdGU6
CiAKICAgICB2b2lkIHB1dFByb3BlcnR5KEpTQXJyYXkqIGFycmF5LCB1bnNpZ25lZCBpbmRleCwg
SlNWYWx1ZSB2YWx1ZSkKICAgICB7Ci0gICAgICAgIGlmIChhcnJheS0+Y2FuU2V0SW5kZXgoaW5k
ZXgpKQotICAgICAgICAgICAgYXJyYXktPnNldEluZGV4KG1fZXhlYy0+Z2xvYmFsRGF0YSgpLCBp
bmRleCwgdmFsdWUpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBhcnJheS0+bWV0aG9kVGFi
bGUoKS0+cHV0QnlJbmRleChhcnJheSwgbV9leGVjLCBpbmRleCwgdmFsdWUpOworICAgICAgICBh
cnJheS0+cHV0RGlyZWN0SW5kZXgobV9leGVjLCBpbmRleCwgdmFsdWUsIGZhbHNlKTsKICAgICB9
CiAKICAgICB2b2lkIHB1dFByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5LCBKU1ZhbHVlIHZhbHVlKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvb2JqYy9XZWJTY3JpcHRPYmplY3QubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvb2JqYy9XZWJTY3JpcHRPYmplY3QubW0JKHJldmlzaW9uIDEwOTgyMikKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tCSh3b3JraW5nIGNv
cHkpCkBAIC00ODYsNyArNDg2LDcgQEAgLSAodm9pZClzZXRXZWJTY3JpcHRWYWx1ZUF0SW5kZXg6
KHVuc2lnbgogICAgIEFTU0VSVCghZXhlYy0+aGFkRXhjZXB0aW9uKCkpOwogCiAgICAgSlNMb2Nr
IGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKLSAgICBbc2VsZiBfaW1wXS0+bWV0aG9kVGFi
bGUoKS0+cHV0QnlJbmRleChbc2VsZiBfaW1wXSwgZXhlYywgaW5kZXgsIGNvbnZlcnRPYmpjVmFs
dWVUb1ZhbHVlKGV4ZWMsICZ2YWx1ZSwgT2JqY09iamVjdFR5cGUsIFtzZWxmIF9yb290T2JqZWN0
XSkpOworICAgIFtzZWxmIF9pbXBdLT5tZXRob2RUYWJsZSgpLT5wdXRCeUluZGV4KFtzZWxmIF9p
bXBdLCBleGVjLCBpbmRleCwgY29udmVydE9iamNWYWx1ZVRvVmFsdWUoZXhlYywgJnZhbHVlLCBP
YmpjT2JqZWN0VHlwZSwgW3NlbGYgX3Jvb3RPYmplY3RdKSwgZmFsc2UpOwogCiAgICAgaWYgKGV4
ZWMtPmhhZEV4Y2VwdGlvbigpKSB7CiAgICAgICAgIGFkZEV4Y2VwdGlvblRvQ29uc29sZShleGVj
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpT
LnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvckpTLnBtCShyZXZpc2lvbiAxMDk4MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkod29ya2luZyBjb3B5KQpAQCAtNzc2LDcgKzc3
Niw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgICMgR2V0dGVycwogICAgIGlmICgkaGFzU2V0
dGVyKSB7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIHZvaWQgcHV0
KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBKU0M6OlB1dFByb3BlcnR5U2xvdCYpO1xuIik7Ci0g
ICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIHZvaWQgcHV0QnlJbmRleChK
U0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU0M6
OkpTVmFsdWUpO1xuIikgaWYgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9t
SW5kZXhlZFNldHRlciJ9OworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRp
YyB2b2lkIHB1dEJ5SW5kZXgoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIHVuc2lnbmVk
IHByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTtcbiIpIGlmICRk
YXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUluZGV4ZWRTZXR0ZXIifTsKICAg
ICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBib29sIHB1dERlbGVnYXRlKEpTQzo6RXhl
Y1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiwgSlNDOjpKU1ZhbHVlLCBKU0M6OlB1dFBy
b3BlcnR5U2xvdCYpO1xuIikgaWYgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3Vz
dG9tTmFtZWRTZXR0ZXIifTsKICAgICB9CiAKQEAgLTE4NTUsNyArMTg1NSw3IEBAIHN1YiBHZW5l
cmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmICgkZGF0
YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21JbmRleGVkU2V0dGVyIn0pIHsKLSAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgInZvaWQgJHtjbGFzc05hbWV9OjpwdXRC
eUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWUgdmFsdWUpXG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgInZvaWQgJHtjbGFzc05hbWV9OjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRl
KiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIGJvb2wpXG4iKTsK
ICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwogICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICR7Y2xhc3NOYW1lfSogdGhpc09iamVjdCA9IGpz
Q2FzdDwke2NsYXNzTmFtZX0qPihjZWxsKTtcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNf
aW5mbyk7XG4iKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9OUF9qc29iamVjdC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL05QX2pzb2JqZWN0LmNwcAkocmV2
aXNpb24gMTA5ODIyKQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL05QX2pzb2JqZWN0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzM5LDcgKzMzOSw3IEBAIGJvb2wgX05QTl9TZXRQcm9wZXJ0eShO
UFAsIE5QT2JqZWN0KiBvLCAKICAgICAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90OwogICAg
ICAgICAgICAgb2JqLT5pbXAtPm1ldGhvZFRhYmxlKCktPnB1dChvYmotPmltcCwgZXhlYywgaWRl
bnRpZmllckZyb21OUElkZW50aWZpZXIoZXhlYywgaS0+c3RyaW5nKCkpLCBjb252ZXJ0TlBWYXJp
YW50VG9WYWx1ZShleGVjLCB2YXJpYW50LCByb290T2JqZWN0KSwgc2xvdCk7CiAgICAgICAgIH0g
ZWxzZQotICAgICAgICAgICAgb2JqLT5pbXAtPm1ldGhvZFRhYmxlKCktPnB1dEJ5SW5kZXgob2Jq
LT5pbXAsIGV4ZWMsIGktPm51bWJlcigpLCBjb252ZXJ0TlBWYXJpYW50VG9WYWx1ZShleGVjLCB2
YXJpYW50LCByb290T2JqZWN0KSk7CisgICAgICAgICAgICBvYmotPmltcC0+bWV0aG9kVGFibGUo
KS0+cHV0QnlJbmRleChvYmotPmltcCwgZXhlYywgaS0+bnVtYmVyKCksIGNvbnZlcnROUFZhcmlh
bnRUb1ZhbHVlKGV4ZWMsIHZhcmlhbnQsIHJvb3RPYmplY3QpLCBmYWxzZSk7CiAgICAgICAgIGV4
ZWMtPmNsZWFyRXhjZXB0aW9uKCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5jcHAJKHJldmlzaW9uIDEwOTgyMikK
KysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTU3LDcgKzE1Nyw3IEBAIHZvaWQgUnVudGltZUFycmF5OjpwdXQoSlNDZWxsKiBjZWxs
LCBFeGUKICAgICBKU09iamVjdDo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwg
dmFsdWUsIHNsb3QpOwogfQogCi12b2lkIFJ1bnRpbWVBcnJheTo6cHV0QnlJbmRleChKU0NlbGwq
IGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaW5kZXgsIEpTVmFsdWUgdmFsdWUpCit2
b2lkIFJ1bnRpbWVBcnJheTo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhl
YywgdW5zaWduZWQgaW5kZXgsIEpTVmFsdWUgdmFsdWUsIGJvb2wpCiB7CiAgICAgUnVudGltZUFy
cmF5KiB0aGlzT2JqZWN0ID0ganNDYXN0PFJ1bnRpbWVBcnJheSo+KGNlbGwpOwogICAgIGlmIChp
bmRleCA+PSB0aGlzT2JqZWN0LT5nZXRMZW5ndGgoKSkgewpJbmRleDogU291cmNlL1dlYkNvcmUv
YnJpZGdlL3J1bnRpbWVfYXJyYXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlk
Z2UvcnVudGltZV9hcnJheS5oCShyZXZpc2lvbiAxMDk4MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9i
cmlkZ2UvcnVudGltZV9hcnJheS5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTQ2VsbCos
IEV4ZWNTdGF0ZSosIHVuc2lnbmVkLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVu
dGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAgICAgc3RhdGljIHZvaWQgcHV0KEpTQ2Vs
bCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwg
UHV0UHJvcGVydHlTbG90Jik7Ci0gICAgc3RhdGljIHZvaWQgcHV0QnlJbmRleChKU0NlbGwqLCBF
eGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUpOworICAgIHN0YXRpYyB2
b2lkIHB1dEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1l
LCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKICAgICAKICAgICBzdGF0aWMgYm9vbCBkZWxl
dGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyICZwcm9wZXJ0
eU5hbWUpOwogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqLCBF
eGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
YnJpZGdlL2puaS9qbmlfanNvYmplY3QubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YnJpZGdlL2puaS9qbmlfanNvYmplY3QubW0JKHJldmlzaW9uIDEwOTgyMikKKysrIFNvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9qbmkvam5pX2pzb2JqZWN0Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zOTMs
NyArMzkzLDcgQEAgdm9pZCBKYXZhSlNPYmplY3Q6OnNldFNsb3QoamludCBpbmRleCwgagogCiAg
ICAgRXhlY1N0YXRlKiBleGVjID0gcm9vdE9iamVjdC0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4
ZWMoKTsKICAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwotICAgIF9pbXAt
Pm1ldGhvZFRhYmxlKCktPnB1dEJ5SW5kZXgoX2ltcCwgZXhlYywgKHVuc2lnbmVkKWluZGV4LCBj
b252ZXJ0Sk9iamVjdFRvVmFsdWUoZXhlYywgdmFsdWUpKTsKKyAgICBfaW1wLT5tZXRob2RUYWJs
ZSgpLT5wdXRCeUluZGV4KF9pbXAsIGV4ZWMsICh1bnNpZ25lZClpbmRleCwgY29udmVydEpPYmpl
Y3RUb1ZhbHVlKGV4ZWMsIHZhbHVlKSwgZmFsc2UpOwogfQogCiAKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDEwOTg2MikKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDE1IEBACisyMDEyLTAzLTA1ICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJh
Y2xvdWdoQGFwcGxlLmNvbT4KKworICAgICAgICBwdXRCeUluZGV4IHNob3VsZCB0aHJvdyBpbiBz
dHJpY3QgbW9kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODAzMzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBNYWtlIHRoZSBNZXRob2RUYWJsZSBQdXRCeUluZGV4IHRyYXAgdGFrZSBhIGJvb2xlYW4gJ3No
b3VsZFRocm93JyBwYXJhbWV0ZXIuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUvTlBKU09iamVjdC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5QSlNPYmplY3Q6OnNldFBy
b3BlcnR5KToKKwogMjAxMi0wMy0wNSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUu
Y29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgcm9sbG91dCBvZiByMTA5ODU4IGZvciByZXN0cnVj
dHVyaW5nLgpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L05QSlNPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS9OUEpTT2JqZWN0LmNwcAkocmV2aXNpb24gMTA5ODIyKQorKysgU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QSlNPYmplY3QuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xOTAsNyArMTkwLDcgQEAgYm9vbCBOUEpTT2JqZWN0OjpzZXRQcm9w
ZXJ0eShOUElkZW50aWZpZQogICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdDsKICAgICAgICAg
bV9qc09iamVjdC0+bWV0aG9kVGFibGUoKS0+cHV0KG1fanNPYmplY3QuZ2V0KCksIGV4ZWMsIGlk
ZW50aWZpZXJGcm9tSWRlbnRpZmllclJlcChleGVjLCBpZGVudGlmaWVyUmVwKSwganNWYWx1ZSwg
c2xvdCk7CiAgICAgfSBlbHNlCi0gICAgICAgIG1fanNPYmplY3QtPm1ldGhvZFRhYmxlKCktPnB1
dEJ5SW5kZXgobV9qc09iamVjdC5nZXQoKSwgZXhlYywgaWRlbnRpZmllclJlcC0+bnVtYmVyKCks
IGpzVmFsdWUpOworICAgICAgICBtX2pzT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5wdXRCeUluZGV4
KG1fanNPYmplY3QuZ2V0KCksIGV4ZWMsIGlkZW50aWZpZXJSZXAtPm51bWJlcigpLCBqc1ZhbHVl
LCBmYWxzZSk7CiAgICAgZXhlYy0+Y2xlYXJFeGNlcHRpb24oKTsKICAgICAKICAgICByZXR1cm4g
dHJ1ZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwOTg2MikKKysrIFNvdXJjZS9X
ZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDEy
LTAzLTA1ICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KKworICAg
ICAgICBwdXRCeUluZGV4IHNob3VsZCB0aHJvdyBpbiBzdHJpY3QgbW9kZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODAzMzUKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIHRoZSBNZXRob2RUYWJsZSBQ
dXRCeUluZGV4IHRyYXAgdGFrZSBhIGJvb2xlYW4gJ3Nob3VsZFRocm93JyBwYXJhbWV0ZXIuCisK
KyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW06
CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6c2V0UHJvcGVy
dHkpOgorCiAyMDEyLTAzLTA1ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+
CiAKICAgICAgICAgVW5yZXZpZXdlZCByb2xsb3V0IG9mIHIxMDk4NTggZm9yIHJlc3RydWN0dXJp
bmcuCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdp
bkluc3RhbmNlUHJveHkubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvUGx1Z2lu
cy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCShyZXZpc2lvbiAxMDk4MjIp
CisrKyBTb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3Rh
bmNlUHJveHkubW0JKHdvcmtpbmcgY29weSkKQEAgLTEwODUsNyArMTA4NSw3IEBAIGJvb2wgTmV0
c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpzZXRQcm8KICAgICBKU0xvY2sgbG9jayhTaWxlbmNl
QXNzZXJ0aW9uc09ubHkpOyAgICAKICAgICAKICAgICBKU1ZhbHVlIHZhbHVlID0gZGVtYXJzaGFs
VmFsdWUoZXhlYywgdmFsdWVEYXRhLCB2YWx1ZUxlbmd0aCk7Ci0gICAgb2JqZWN0LT5tZXRob2RU
YWJsZSgpLT5wdXRCeUluZGV4KG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSk7Cisg
ICAgb2JqZWN0LT5tZXRob2RUYWJsZSgpLT5wdXRCeUluZGV4KG9iamVjdCwgZXhlYywgcHJvcGVy
dHlOYW1lLCB2YWx1ZSwgZmFsc2UpOwogICAgIAogICAgIGV4ZWMtPmNsZWFyRXhjZXB0aW9uKCk7
CiAgICAgcmV0dXJuIHRydWU7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMDk4NjIpCisrKyBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzMCBAQAorMjAxMi0wMy0w
NSAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+CisKKyAgICAgICAg
cHV0QnlJbmRleCBzaG91bGQgdGhyb3cgaW4gc3RyaWN0IG1vZGUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwMzM1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSB0aGUgTWV0aG9kVGFibGUgUHV0QnlJ
bmRleCB0cmFwIHRha2UgYSBib29sZWFuICdzaG91bGRUaHJvdycgcGFyYW1ldGVyLgorCisgICAg
ICAgICogZmFzdC9qcy9PYmplY3QtZGVmaW5lUHJvcGVydHktZXhwZWN0ZWQudHh0OgorICAgICAg
ICAqIGZhc3QvanMvbW96aWxsYS9zdHJpY3QvMTUuNC40LjEyLWV4cGVjdGVkLnR4dDoKKyAgICAg
ICAgKiBmYXN0L2pzL21vemlsbGEvc3RyaWN0LzE1LjQuNC4xMy1leHBlY3RlZC50eHQ6CisgICAg
ICAgICogZmFzdC9qcy9tb3ppbGxhL3N0cmljdC8xNS40LjQuOC1leHBlY3RlZC50eHQ6CisgICAg
ICAgICogZmFzdC9qcy9tb3ppbGxhL3N0cmljdC8xNS40LjQuOS1leHBlY3RlZC50eHQ6CisgICAg
ICAgICogZmFzdC9qcy9tb3ppbGxhL3N0cmljdC8xNS41LjUuMi1leHBlY3RlZC50eHQ6CisgICAg
ICAgICogZmFzdC9qcy9tb3ppbGxhL3N0cmljdC84LjEyLjUtZXhwZWN0ZWQudHh0OgorICAgICAg
ICAqIGZhc3QvanMvcHJldmVudEV4dGVuc2lvbnMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZh
c3QvanMvcHJpbWl0aXZlLXByb3BlcnR5LWFjY2Vzcy1lZGdlLWNhc2VzLWV4cGVjdGVkLnR4dDoK
KyAgICAgICAgICAgIC0gQ2hlY2tpbmcgaW4gcGFzc2luZyB0ZXN0IHJlc3VsdHMuCisgICAgICAg
ICogZmFzdC9qcy9zY3JpcHQtdGVzdHMvT2JqZWN0LWRlZmluZVByb3BlcnR5LmpzOgorICAgICAg
ICAgICAgLSBBZGRlZCB0ZXN0IGNhc2VzIGZvciBwdXR0aW5nIHRvIG51bWVyaWMgcHJvcGVydGll
cyB3aGVyZSBwcm9wZXJ0eSBpcyByZWFkLW9ubHksCisgICAgICAgICAgICAgIGxlbmd0aCBpcyBy
ZWFkLW9ubHksIG9yIHByb3BlcnR5IGlzIGFjY2Vzc29yIHdpdGggbWlzc2luZyBzZXQgZnVuY3Rp
b24uCisgICAgICAgICogZmFzdC9qcy9zY3JpcHQtdGVzdHMvcHJldmVudEV4dGVuc2lvbnMuanM6
CisgICAgICAgICAgICAtIEFkZGVkIHRlc3QgY2FzZSwgcHV0dGluZyBudW1lcmljIHByb3BlcnR5
IHRvIG5vbi1leHRlbnNpYmxlIGFycmF5LgorICAgICAgICAqIGZhc3QvanMvc2NyaXB0LXRlc3Rz
L3ByaW1pdGl2ZS1wcm9wZXJ0eS1hY2Nlc3MtZWRnZS1jYXNlcy5qczoKKyAgICAgICAgICAgIC0g
RW5hYmxlZCB0ZXN0IGNhc2VzIGZvciBwdXR0aW5nIG51bWVyaWMgcHJvcGVydGllcyB0byBwcmlt
aXRpdmUgc3RyaW5ncy4KKwogMjAxMi0wMy0wNSAgQWRyaWVubmUgV2Fsa2VyICA8ZW5uZUBnb29n
bGUuY29tPgogCiAgICAgICAgIENvbXBvc2l0aW5nIG92ZXJsYXAgdGVzdGluZyBjYW4gdGhyb3cg
bGF5ZXJzIGludG8gY29tcG9zaXRpbmcgd2hlbiB0aGV5IHNob3VsZCBub3QgYmUuCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2pzL09iamVjdC1kZWZpbmVQcm9wZXJ0eS1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9PYmplY3QtZGVmaW5lUHJvcGVydHktZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAxMDk4MjIpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL09iamVj
dC1kZWZpbmVQcm9wZXJ0eS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTExOSw2ICsx
MTksMTIgQEAgUEFTUyAndXNlIHN0cmljdCc7IHZhciBvID0ge307IG8ucmVhZE9ubAogUEFTUyBP
YmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE9iamVjdC5kZWZpbmVQcm9wZXJ0eShPYmpl
Y3QuZGVmaW5lUHJvcGVydHkoe30sICdmb28nLCB7Z2V0OiBmdW5jdGlvbigpIHsgcmV0dXJuIGZh
bHNlOyB9LCBjb25maWd1cmFibGU6IHRydWV9KSwgJ2ZvbycsIHt2YWx1ZTpmYWxzZX0pLCAnZm9v
Jykud3JpdGFibGUgaXMgZmFsc2UKIFBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihPYmplY3QuZGVmaW5lUHJvcGVydHkoT2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCAnZm9vJywg
e2dldDogZnVuY3Rpb24oKSB7IHJldHVybiBmYWxzZTsgfSwgY29uZmlndXJhYmxlOiB0cnVlfSks
ICdmb28nLCB7dmFsdWU6ZmFsc2UsIHdyaXRhYmxlOiBmYWxzZX0pLCAnZm9vJykud3JpdGFibGUg
aXMgZmFsc2UKIFBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihPYmplY3QuZGVm
aW5lUHJvcGVydHkoT2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCAnZm9vJywge2dldDogZnVuY3Rp
b24oKSB7IHJldHVybiBmYWxzZTsgfSwgY29uZmlndXJhYmxlOiB0cnVlfSksICdmb28nLCB7dmFs
dWU6ZmFsc2UsIHdyaXRhYmxlOiB0cnVlfSksICdmb28nKS53cml0YWJsZSBpcyB0cnVlCitQQVNT
IHZhciBhID0gT2JqZWN0LmRlZmluZVByb3BlcnR5KFtdLCAnbGVuZ3RoJywge3dyaXRhYmxlOiBm
YWxzZX0pOyBhWzBdID0gNDI7IDAgaW4gYTsgaXMgZmFsc2UKK1BBU1MgJ3VzZSBzdHJpY3QnOyB2
YXIgYSA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShbXSwgJ2xlbmd0aCcsIHt3cml0YWJsZTogZmFs
c2V9KTsgYVswXSA9IDQyOyAwIGluIGE7IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEF0dGVt
cHRlZCB0byBhc3NpZ24gdG8gcmVhZG9ubHkgcHJvcGVydHkuLgorUEFTUyB2YXIgYSA9IE9iamVj
dC5kZWZpbmVQcm9wZXJ0eShbNDJdLCAnMCcsIHt3cml0YWJsZTogZmFsc2V9KTsgYVswXSA9IGZh
bHNlOyBhWzBdOyBpcyA0MgorUEFTUyAndXNlIHN0cmljdCc7IHZhciBhID0gT2JqZWN0LmRlZmlu
ZVByb3BlcnR5KFs0Ml0sICcwJywge3dyaXRhYmxlOiBmYWxzZX0pOyBhWzBdID0gZmFsc2U7IGFb
MF07IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEF0dGVtcHRlZCB0byBhc3NpZ24gdG8gcmVh
ZG9ubHkgcHJvcGVydHkuLgorUEFTUyB2YXIgYSA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShbXSwg
JzAnLCB7c2V0OiB1bmRlZmluZWR9KTsgYVswXSA9IDQyOyBhWzBdOyBpcyB1bmRlZmluZWQuCitQ
QVNTICd1c2Ugc3RyaWN0JzsgdmFyIGEgPSBPYmplY3QuZGVmaW5lUHJvcGVydHkoW10sICcwJywg
e3NldDogdW5kZWZpbmVkfSk7IGFbMF0gPSA0MjsgYVswXTsgdGhyZXcgZXhjZXB0aW9uIFR5cGVF
cnJvcjogQXR0ZW1wdGVkIHRvIGFzc2lnbiB0byByZWFkb25seSBwcm9wZXJ0eS4uCiBQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvanMvcHJldmVudEV4dGVuc2lvbnMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvanMvcHJldmVudEV4dGVuc2lvbnMtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAxMDk4MjIpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL3ByZXZlbnRFeHRlbnNpb25zLWV4
cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTYsNiArMTYsNyBAQCBQQVNTICJ1c2Ugc3Ry
aWN0IjsgdmFyIG8gPSB7fTsgT2JqZWN0LnByCiBQQVNTIE9iamVjdC5wcmV2ZW50RXh0ZW5zaW9u
cyhNYXRoKTsgTWF0aC5zcXJ0KDQpIGlzIDIKIFBBU1MgdmFyIGFyciA9IE9iamVjdC5wcmV2ZW50
RXh0ZW5zaW9ucyhbXSk7IGFyclswXSA9IDQyOyBhcnJbMF0gaXMgdW5kZWZpbmVkLgogUEFTUyB2
YXIgYXJyID0gT2JqZWN0LnByZXZlbnRFeHRlbnNpb25zKFtdKTsgYXJyWzBdID0gNDI7IGFyci5s
ZW5ndGggaXMgMAorUEFTUyAidXNlIHN0cmljdCI7IHZhciBhcnIgPSBPYmplY3QucHJldmVudEV4
dGVuc2lvbnMoW10pOyBhcnJbMF0gPSA0MjsgYXJyWzBdIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJy
b3I6IEF0dGVtcHRlZCB0byBhc3NpZ24gdG8gcmVhZG9ubHkgcHJvcGVydHkuLgogUEFTUyBvYmou
Zm9vIGlzIDEKIFBBU1MgYXJyYXlbMF0gaXMgMAogUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKGFycmF5LCAibGVuZ3RoIikud3JpdGFibGUgaXMgZmFsc2UKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvanMvcHJpbWl0aXZlLXByb3BlcnR5LWFjY2Vzcy1lZGdlLWNhc2VzLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL3ByaW1pdGl2ZS1wcm9w
ZXJ0eS1hY2Nlc3MtZWRnZS1jYXNlcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDEwOTgyNCkKKysr
IExheW91dFRlc3RzL2Zhc3QvanMvcHJpbWl0aXZlLXByb3BlcnR5LWFjY2Vzcy1lZGdlLWNhc2Vz
LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQCBQQVNTIGNoZWNr
TnVtZXJpY0dldFN0cmljdCgxLCBOdW1iZXIpIGlzCiBQQVNTIGNoZWNrTnVtZXJpY0dldFN0cmlj
dCgnaGVsbG8nLCBTdHJpbmcpIGlzIHRydWUKIFBBU1MgY2hlY2tOdW1lcmljR2V0U3RyaWN0KHRy
dWUsIEJvb2xlYW4pIGlzIHRydWUKIFBBU1MgY2hlY2tOdW1lcmljU2V0U3RyaWN0KDEsIE51bWJl
cikgaXMgdHJ1ZQorUEFTUyBjaGVja051bWVyaWNTZXRTdHJpY3QoJ2hlbGxvJywgU3RyaW5nKSBp
cyB0cnVlCiBQQVNTIGNoZWNrTnVtZXJpY1NldFN0cmljdCh0cnVlLCBCb29sZWFuKSBpcyB0cnVl
CiBQQVNTIGNoZWNrTnVtZXJpY1JlYWQoMSwgTnVtYmVyKSBpcyB0cnVlCiBQQVNTIGNoZWNrTnVt
ZXJpY1JlYWQoJ2hlbGxvJywgU3RyaW5nKSBpcyB0cnVlCkBAIC00OCw2ICs0OSw3IEBAIFBBU1Mg
Y2hlY2tOdW1lcmljUmVhZFN0cmljdCgxLCBOdW1iZXIpIGkKIFBBU1MgY2hlY2tOdW1lcmljUmVh
ZFN0cmljdCgnaGVsbG8nLCBTdHJpbmcpIGlzIHRydWUKIFBBU1MgY2hlY2tOdW1lcmljUmVhZFN0
cmljdCh0cnVlLCBCb29sZWFuKSBpcyB0cnVlCiBQQVNTIGNoZWNrTnVtZXJpY1dyaXRlU3RyaWN0
KDEsIE51bWJlcikgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXR0ZW1wdGVkIHRvIGFzc2ln
biB0byByZWFkb25seSBwcm9wZXJ0eS4uCitQQVNTIGNoZWNrTnVtZXJpY1dyaXRlU3RyaWN0KCdo
ZWxsbycsIFN0cmluZykgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXR0ZW1wdGVkIHRvIGFz
c2lnbiB0byByZWFkb25seSBwcm9wZXJ0eS4uCiBQQVNTIGNoZWNrTnVtZXJpY1dyaXRlU3RyaWN0
KHRydWUsIEJvb2xlYW4pIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEF0dGVtcHRlZCB0byBh
c3NpZ24gdG8gcmVhZG9ubHkgcHJvcGVydHkuLgogUEFTUyBkaWROb3RDcmFzaCBpcyB0cnVlCiBQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pz
L21vemlsbGEvc3RyaWN0LzguMTIuNS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9qcy9tb3ppbGxhL3N0cmljdC84LjEyLjUtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAxMDk4MjIpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL21vemlsbGEvc3RyaWN0LzguMTIuNS1l
eHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTI1LDI1ICsyNSwyNSBAQCBQQVNTIHRydWUg
PT09IHRydWUKIFBBU1MgJ3VzZSBzdHJpY3QnOyB2YXIgYSA9IGFycigpOyBhWzBdID0gMjsgYVsw
XSBpcyAyCiBQQVNTIHZhciBhID0gYXJyKCk7IGFbMF0gPSAyOyBhWzBdIGlzIDIKIFBBU1MgdHJ1
ZSA9PT0gdHJ1ZQotRkFJTCAndXNlIHN0cmljdCc7IHZhciBhID0gYXJyKCk7IGFbMV0gPSAyOyBh
WzFdIHNob3VsZCB0aHJvdyBhbiBpbnN0YW5jZSBvZiBUeXBlRXJyb3IKK1BBU1MgJ3VzZSBzdHJp
Y3QnOyB2YXIgYSA9IGFycigpOyBhWzFdID0gMjsgYVsxXSB0aHJldyBleGNlcHRpb24gb2YgdHlw
ZSBUeXBlRXJyb3IuCiBQQVNTIHZhciBhID0gYXJyKCk7IGFbMV0gPSAyOyBhWzFdIGlzIDEKIFBB
U1MgdHJ1ZSA9PT0gdHJ1ZQogUEFTUyAndXNlIHN0cmljdCc7IHZhciBhID0gYXJyKCk7IGFbMl0g
PSAyOyBhWzJdIGlzIDIKIFBBU1MgdmFyIGEgPSBhcnIoKTsgYVsyXSA9IDI7IGFbMl0gaXMgMgog
UEFTUyB0cnVlID09PSB0cnVlCi1GQUlMICd1c2Ugc3RyaWN0JzsgdmFyIGEgPSBhcnIoKTsgYVsz
XSA9IDI7IGFbM10gc2hvdWxkIHRocm93IGFuIGluc3RhbmNlIG9mIFR5cGVFcnJvcgorUEFTUyAn
dXNlIHN0cmljdCc7IHZhciBhID0gYXJyKCk7IGFbM10gPSAyOyBhWzNdIHRocmV3IGV4Y2VwdGlv
biBvZiB0eXBlIFR5cGVFcnJvci4KIFBBU1MgdmFyIGEgPSBhcnIoKTsgYVszXSA9IDI7IGFbM10g
aXMgMQogUEFTUyB0cnVlID09PSB0cnVlCi1GQUlMICd1c2Ugc3RyaWN0JzsgYXJyKClbMV0rKyBz
aG91bGQgdGhyb3cgYW4gaW5zdGFuY2Ugb2YgVHlwZUVycm9yCitQQVNTICd1c2Ugc3RyaWN0Jzsg
YXJyKClbMV0rKyB0aHJldyBleGNlcHRpb24gb2YgdHlwZSBUeXBlRXJyb3IuCiBQQVNTIGFycigp
WzFdKysgaXMgMQogUEFTUyB0cnVlID09PSB0cnVlCi1GQUlMICd1c2Ugc3RyaWN0JzsgKythcnIo
KVsxXSBzaG91bGQgdGhyb3cgYW4gaW5zdGFuY2Ugb2YgVHlwZUVycm9yCitQQVNTICd1c2Ugc3Ry
aWN0JzsgKythcnIoKVsxXSB0aHJldyBleGNlcHRpb24gb2YgdHlwZSBUeXBlRXJyb3IuCiBQQVNT
ICsrYXJyKClbMV0gaXMgMgogUEFTUyB0cnVlID09PSB0cnVlCi1GQUlMICd1c2Ugc3RyaWN0Jzsg
YXJyKClbMV0tLSBzaG91bGQgdGhyb3cgYW4gaW5zdGFuY2Ugb2YgVHlwZUVycm9yCitQQVNTICd1
c2Ugc3RyaWN0JzsgYXJyKClbMV0tLSB0aHJldyBleGNlcHRpb24gb2YgdHlwZSBUeXBlRXJyb3Iu
CiBQQVNTIGFycigpWzFdLS0gaXMgMQogUEFTUyB0cnVlID09PSB0cnVlCi1GQUlMICd1c2Ugc3Ry
aWN0JzsgLS1hcnIoKVsxXSBzaG91bGQgdGhyb3cgYW4gaW5zdGFuY2Ugb2YgVHlwZUVycm9yCitQ
QVNTICd1c2Ugc3RyaWN0JzsgLS1hcnIoKVsxXSB0aHJldyBleGNlcHRpb24gb2YgdHlwZSBUeXBl
RXJyb3IuCiBQQVNTIC0tYXJyKClbMV0gaXMgMAogUEFTUyB0cnVlID09PSB0cnVlCiAgUEFTU0VE
ISAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvbW96aWxsYS9zdHJpY3QvMTUuNC40LjgtZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvbW96aWxsYS9zdHJp
Y3QvMTUuNC40LjgtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxMDk4MjIpCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2pzL21vemlsbGEvc3RyaWN0LzE1LjQuNC44LWV4cGVjdGVkLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtMSw4ICsxLDggQEAKLUZBSUwgJ3VzZSBzdHJpY3QnOyB2YXIgYSA9IGFycigpOyBh
LnJldmVyc2UoKSBzaG91bGQgdGhyb3cgYW4gaW5zdGFuY2Ugb2YgVHlwZUVycm9yCi1GQUlMIHZh
ciBhID0gYXJyKCk7IGEucmV2ZXJzZSgpIHNob3VsZCB0aHJvdyBhbiBpbnN0YW5jZSBvZiBUeXBl
RXJyb3IKK1BBU1MgJ3VzZSBzdHJpY3QnOyB2YXIgYSA9IGFycigpOyBhLnJldmVyc2UoKSB0aHJl
dyBleGNlcHRpb24gb2YgdHlwZSBUeXBlRXJyb3IuCitQQVNTIHZhciBhID0gYXJyKCk7IGEucmV2
ZXJzZSgpIHRocmV3IGV4Y2VwdGlvbiBvZiB0eXBlIFR5cGVFcnJvci4KIFBBU1MgdHJ1ZSA9PT0g
dHJ1ZQotRkFJTCAndXNlIHN0cmljdCc7IHZhciBvID0gb2JqKCk7IEFycmF5LnByb3RvdHlwZS5y
ZXZlcnNlLmNhbGwobykgc2hvdWxkIHRocm93IGFuIGluc3RhbmNlIG9mIFR5cGVFcnJvcgotRkFJ
TCB2YXIgbyA9IG9iaigpOyBBcnJheS5wcm90b3R5cGUucmV2ZXJzZS5jYWxsKG8pIHNob3VsZCB0
aHJvdyBhbiBpbnN0YW5jZSBvZiBUeXBlRXJyb3IKK1BBU1MgJ3VzZSBzdHJpY3QnOyB2YXIgbyA9
IG9iaigpOyBBcnJheS5wcm90b3R5cGUucmV2ZXJzZS5jYWxsKG8pIHRocmV3IGV4Y2VwdGlvbiBv
ZiB0eXBlIFR5cGVFcnJvci4KK1BBU1MgdmFyIG8gPSBvYmooKTsgQXJyYXkucHJvdG90eXBlLnJl
dmVyc2UuY2FsbChvKSB0aHJldyBleGNlcHRpb24gb2YgdHlwZSBUeXBlRXJyb3IuCiBQQVNTIHRy
dWUgPT09IHRydWUKIEZBSUwgJ3VzZSBzdHJpY3QnOyB2YXIgYSA9IGFnYXAoKTsgYS5yZXZlcnNl
KCkgc2hvdWxkIHRocm93IGFuIGluc3RhbmNlIG9mIFR5cGVFcnJvcgogRkFJTCB2YXIgYSA9IGFn
YXAoKTsgYS5yZXZlcnNlKCkgc2hvdWxkIHRocm93IGFuIGluc3RhbmNlIG9mIFR5cGVFcnJvcgpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9tb3ppbGxhL3N0cmljdC8xNS40LjQuOS1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9tb3ppbGxhL3N0cmljdC8x
NS40LjQuOS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDEwOTgyMikKKysrIExheW91dFRlc3RzL2Zh
c3QvanMvbW96aWxsYS9zdHJpY3QvMTUuNC40LjktZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkp
CkBAIC0xLDggKzEsOCBAQAogRkFJTCAndXNlIHN0cmljdCc7IHZhciBhID0gYXJyKCk7IFthLnNo
aWZ0KCksIGFdIHNob3VsZCB0aHJvdyBhbiBpbnN0YW5jZSBvZiBUeXBlRXJyb3IKIEZBSUwgdmFy
IGEgPSBhcnIoKTsgW2Euc2hpZnQoKSwgYV0gc2hvdWxkIHRocm93IGFuIGluc3RhbmNlIG9mIFR5
cGVFcnJvcgogUEFTUyB0cnVlID09PSB0cnVlCi1GQUlMICd1c2Ugc3RyaWN0JzsgdmFyIG8gPSBv
YmooKTsgW0FycmF5LnByb3RvdHlwZS5zaGlmdC5jYWxsKG8pLCBvXSBzaG91bGQgdGhyb3cgYW4g
aW5zdGFuY2Ugb2YgVHlwZUVycm9yCi1GQUlMIHZhciBvID0gb2JqKCk7IFtBcnJheS5wcm90b3R5
cGUuc2hpZnQuY2FsbChvKSwgb10gc2hvdWxkIHRocm93IGFuIGluc3RhbmNlIG9mIFR5cGVFcnJv
cgorUEFTUyAndXNlIHN0cmljdCc7IHZhciBvID0gb2JqKCk7IFtBcnJheS5wcm90b3R5cGUuc2hp
ZnQuY2FsbChvKSwgb10gdGhyZXcgZXhjZXB0aW9uIG9mIHR5cGUgVHlwZUVycm9yLgorUEFTUyB2
YXIgbyA9IG9iaigpOyBbQXJyYXkucHJvdG90eXBlLnNoaWZ0LmNhbGwobyksIG9dIHRocmV3IGV4
Y2VwdGlvbiBvZiB0eXBlIFR5cGVFcnJvci4KIFBBU1MgdHJ1ZSA9PT0gdHJ1ZQogRkFJTCAndXNl
IHN0cmljdCc7IHZhciBhID0gYWdhcCgpOyBbYS5zaGlmdCgpLCBhXSBzaG91bGQgdGhyb3cgYW4g
aW5zdGFuY2Ugb2YgVHlwZUVycm9yCiBGQUlMIHZhciBhID0gYWdhcCgpOyBbYS5zaGlmdCgpLCBh
XSBzaG91bGQgdGhyb3cgYW4gaW5zdGFuY2Ugb2YgVHlwZUVycm9yCkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2pzL21vemlsbGEvc3RyaWN0LzE1LjQuNC4xMi1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9tb3ppbGxhL3N0cmljdC8xNS40LjQuMTItZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAxMDk4MjIpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL21vemlsbGEv
c3RyaWN0LzE1LjQuNC4xMi1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsOCArMSw4
IEBACiBGQUlMICd1c2Ugc3RyaWN0JzsgdmFyIGEgPSBhcnIoKTsgW2Euc3BsaWNlKDAsIDEpLCBh
XSBzaG91bGQgdGhyb3cgYW4gaW5zdGFuY2Ugb2YgVHlwZUVycm9yCiBGQUlMIHZhciBhID0gYXJy
KCk7IFthLnNwbGljZSgwLCAxKSwgYV0gc2hvdWxkIHRocm93IGFuIGluc3RhbmNlIG9mIFR5cGVF
cnJvcgogUEFTUyB0cnVlID09PSB0cnVlCi1GQUlMICd1c2Ugc3RyaWN0JzsgdmFyIG8gPSBvYmoo
KTsgW0FycmF5LnByb3RvdHlwZS5zcGxpY2UuY2FsbChvLCAwLCAxKSwgb10gc2hvdWxkIHRocm93
IGFuIGluc3RhbmNlIG9mIFR5cGVFcnJvcgotRkFJTCB2YXIgbyA9IG9iaigpOyBbQXJyYXkucHJv
dG90eXBlLnNwbGljZS5jYWxsKG8sIDAsIDEpLCBvXSBzaG91bGQgdGhyb3cgYW4gaW5zdGFuY2Ug
b2YgVHlwZUVycm9yCitQQVNTICd1c2Ugc3RyaWN0JzsgdmFyIG8gPSBvYmooKTsgW0FycmF5LnBy
b3RvdHlwZS5zcGxpY2UuY2FsbChvLCAwLCAxKSwgb10gdGhyZXcgZXhjZXB0aW9uIG9mIHR5cGUg
VHlwZUVycm9yLgorUEFTUyB2YXIgbyA9IG9iaigpOyBbQXJyYXkucHJvdG90eXBlLnNwbGljZS5j
YWxsKG8sIDAsIDEpLCBvXSB0aHJldyBleGNlcHRpb24gb2YgdHlwZSBUeXBlRXJyb3IuCiBQQVNT
IHRydWUgPT09IHRydWUKIEZBSUwgJ3VzZSBzdHJpY3QnOyB2YXIgYSA9IGFnYXAoKTsgW2Euc3Bs
aWNlKDAsIDEpLCBhXSBzaG91bGQgdGhyb3cgYW4gaW5zdGFuY2Ugb2YgVHlwZUVycm9yCiBGQUlM
IHZhciBhID0gYWdhcCgpOyBbYS5zcGxpY2UoMCwgMSksIGFdIHNob3VsZCB0aHJvdyBhbiBpbnN0
YW5jZSBvZiBUeXBlRXJyb3IKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvbW96aWxsYS9zdHJp
Y3QvMTUuNC40LjEzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2pzL21vemlsbGEvc3RyaWN0LzE1LjQuNC4xMy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDEwOTgy
MikKKysrIExheW91dFRlc3RzL2Zhc3QvanMvbW96aWxsYS9zdHJpY3QvMTUuNC40LjEzLWV4cGVj
dGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw4ICsxLDggQEAKIEZBSUwgJ3VzZSBzdHJpY3Qn
OyB2YXIgYSA9IGFycigpOyBbYS51bnNoaWZ0KDQwLCA1MCksIGFdIHNob3VsZCB0aHJvdyBhbiBp
bnN0YW5jZSBvZiBUeXBlRXJyb3IKIEZBSUwgdmFyIGEgPSBhcnIoKTsgW2EudW5zaGlmdCg0MCwg
NTApLCBhXSBzaG91bGQgdGhyb3cgYW4gaW5zdGFuY2Ugb2YgVHlwZUVycm9yCiBQQVNTIHRydWUg
PT09IHRydWUKLUZBSUwgJ3VzZSBzdHJpY3QnOyB2YXIgbyA9IG9iaigpOyBbQXJyYXkucHJvdG90
eXBlLnVuc2hpZnQuY2FsbChvLCA0MCwgNTApLCBvXSBzaG91bGQgdGhyb3cgYW4gaW5zdGFuY2Ug
b2YgVHlwZUVycm9yCi1GQUlMIHZhciBvID0gb2JqKCk7IFtBcnJheS5wcm90b3R5cGUudW5zaGlm
dC5jYWxsKG8sIDQwLCA1MCksIG9dIHNob3VsZCB0aHJvdyBhbiBpbnN0YW5jZSBvZiBUeXBlRXJy
b3IKK1BBU1MgJ3VzZSBzdHJpY3QnOyB2YXIgbyA9IG9iaigpOyBbQXJyYXkucHJvdG90eXBlLnVu
c2hpZnQuY2FsbChvLCA0MCwgNTApLCBvXSB0aHJldyBleGNlcHRpb24gb2YgdHlwZSBUeXBlRXJy
b3IuCitQQVNTIHZhciBvID0gb2JqKCk7IFtBcnJheS5wcm90b3R5cGUudW5zaGlmdC5jYWxsKG8s
IDQwLCA1MCksIG9dIHRocmV3IGV4Y2VwdGlvbiBvZiB0eXBlIFR5cGVFcnJvci4KIFBBU1MgdHJ1
ZSA9PT0gdHJ1ZQogRkFJTCAndXNlIHN0cmljdCc7IHZhciBhID0gYWdhcCgpOyBbYS51bnNoaWZ0
KDkpLCBhXSBzaG91bGQgdGhyb3cgYW4gaW5zdGFuY2Ugb2YgVHlwZUVycm9yCiBGQUlMIHZhciBh
ID0gYWdhcCgpOyBbYS51bnNoaWZ0KDkpLCBhXSBzaG91bGQgdGhyb3cgYW4gaW5zdGFuY2Ugb2Yg
VHlwZUVycm9yCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL21vemlsbGEvc3RyaWN0LzE1LjUu
NS4yLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL21vemls
bGEvc3RyaWN0LzE1LjUuNS4yLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTA5ODIyKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9qcy9tb3ppbGxhL3N0cmljdC8xNS41LjUuMi1leHBlY3RlZC50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBACi1GQUlMICd1c2Ugc3RyaWN0JzsgImZvbyJbMF0g
PSAxIHNob3VsZCB0aHJvdyBhbiBpbnN0YW5jZSBvZiBUeXBlRXJyb3IKK1BBU1MgJ3VzZSBzdHJp
Y3QnOyAiZm9vIlswXSA9IDEgdGhyZXcgZXhjZXB0aW9uIG9mIHR5cGUgVHlwZUVycm9yLgogUEFT
UyAiZm9vIlswXSA9IDEgaXMgMQogUEFTUyB0cnVlID09PSB0cnVlCiBQQVNTICd1c2Ugc3RyaWN0
JzsgZGVsZXRlICJmb28iWzBdIHRocmV3IGV4Y2VwdGlvbiBvZiB0eXBlIFR5cGVFcnJvci4KSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL09iamVjdC1kZWZpbmVQcm9wZXJ0
eS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9PYmpl
Y3QtZGVmaW5lUHJvcGVydHkuanMJKHJldmlzaW9uIDEwOTgyMikKKysrIExheW91dFRlc3RzL2Zh
c3QvanMvc2NyaXB0LXRlc3RzL09iamVjdC1kZWZpbmVQcm9wZXJ0eS5qcwkod29ya2luZyBjb3B5
KQpAQCAtMTcxLDMgKzE3MSwxNSBAQCBkZWxldGUgT2JqZWN0LnByb3RvdHlwZS5yZWFkT25seTsK
IHNob3VsZEJlRmFsc2UoIk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoT2JqZWN0LmRl
ZmluZVByb3BlcnR5KE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwgJ2ZvbycsIHtnZXQ6IGZ1bmN0
aW9uKCkgeyByZXR1cm4gZmFsc2U7IH0sIGNvbmZpZ3VyYWJsZTogdHJ1ZX0pLCAnZm9vJywge3Zh
bHVlOmZhbHNlfSksICdmb28nKS53cml0YWJsZSIpOwogc2hvdWxkQmVGYWxzZSgiT2JqZWN0Lmdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihPYmplY3QuZGVmaW5lUHJvcGVydHkoT2JqZWN0LmRlZmlu
ZVByb3BlcnR5KHt9LCAnZm9vJywge2dldDogZnVuY3Rpb24oKSB7IHJldHVybiBmYWxzZTsgfSwg
Y29uZmlndXJhYmxlOiB0cnVlfSksICdmb28nLCB7dmFsdWU6ZmFsc2UsIHdyaXRhYmxlOiBmYWxz
ZX0pLCAnZm9vJykud3JpdGFibGUiKTsKIHNob3VsZEJlVHJ1ZSgiT2JqZWN0LmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcihPYmplY3QuZGVmaW5lUHJvcGVydHkoT2JqZWN0LmRlZmluZVByb3BlcnR5
KHt9LCAnZm9vJywge2dldDogZnVuY3Rpb24oKSB7IHJldHVybiBmYWxzZTsgfSwgY29uZmlndXJh
YmxlOiB0cnVlfSksICdmb28nLCB7dmFsdWU6ZmFsc2UsIHdyaXRhYmxlOiB0cnVlfSksICdmb28n
KS53cml0YWJsZSIpOworCisvLyBJZiBhcnJheSBsZW5ndGggaXMgcmVhZC1vbmx5LCBbW1B1dF1d
IHNob3VsZCBmYWlsLgorc2hvdWxkQmVGYWxzZSgidmFyIGEgPSBPYmplY3QuZGVmaW5lUHJvcGVy
dHkoW10sICdsZW5ndGgnLCB7d3JpdGFibGU6IGZhbHNlfSk7IGFbMF0gPSA0MjsgMCBpbiBhOyIp
Oworc2hvdWxkVGhyb3coIid1c2Ugc3RyaWN0JzsgdmFyIGEgPSBPYmplY3QuZGVmaW5lUHJvcGVy
dHkoW10sICdsZW5ndGgnLCB7d3JpdGFibGU6IGZhbHNlfSk7IGFbMF0gPSA0MjsgMCBpbiBhOyIp
OworCisvLyBJZiBhcnJheSBwcm9wZXJ0eSBpcyByZWFkLW9ubHksIFtbUHV0XV0gc2hvdWxkIGZh
aWwuCitzaG91bGRCZSgidmFyIGEgPSBPYmplY3QuZGVmaW5lUHJvcGVydHkoWzQyXSwgJzAnLCB7
d3JpdGFibGU6IGZhbHNlfSk7IGFbMF0gPSBmYWxzZTsgYVswXTsiLCAnNDInKTsKK3Nob3VsZFRo
cm93KCIndXNlIHN0cmljdCc7IHZhciBhID0gT2JqZWN0LmRlZmluZVByb3BlcnR5KFs0Ml0sICcw
Jywge3dyaXRhYmxlOiBmYWxzZX0pOyBhWzBdID0gZmFsc2U7IGFbMF07Iik7CisKKy8vIElmIGFy
cmF5IHByb3BlcnR5IGlzIGFuIHVuZGVmaW5lZCBzZXR0ZXIsIFtbUHV0XV0gc2hvdWxkIGZhaWwu
CitzaG91bGRCZVVuZGVmaW5lZCgidmFyIGEgPSBPYmplY3QuZGVmaW5lUHJvcGVydHkoW10sICcw
Jywge3NldDogdW5kZWZpbmVkfSk7IGFbMF0gPSA0MjsgYVswXTsiKTsKK3Nob3VsZFRocm93KCIn
dXNlIHN0cmljdCc7IHZhciBhID0gT2JqZWN0LmRlZmluZVByb3BlcnR5KFtdLCAnMCcsIHtzZXQ6
IHVuZGVmaW5lZH0pOyBhWzBdID0gNDI7IGFbMF07Iik7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2pzL3NjcmlwdC10ZXN0cy9wcmV2ZW50RXh0ZW5zaW9ucy5qcwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9wcmV2ZW50RXh0ZW5zaW9ucy5qcwkocmV2aXNp
b24gMTA5ODIyKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvcHJldmVudEV4
dGVuc2lvbnMuanMJKHdvcmtpbmcgY29weSkKQEAgLTc4LDYgKzc4LDggQEAgc2hvdWxkQmUoJ09i
amVjdC5wcmV2ZW50RXh0ZW5zaW9ucyhNYXRoKQogLy8gU2hvdWxkIG5vdCBiZSBhYmxlIHRvIGFk
ZCBwcm9wZXJ0aWVzIHRvIGEgcHJldmVudEV4dGVuc2lvbnMgYXJyYXkuCiBzaG91bGRCZVVuZGVm
aW5lZCgndmFyIGFyciA9IE9iamVjdC5wcmV2ZW50RXh0ZW5zaW9ucyhbXSk7IGFyclswXSA9IDQy
OyBhcnJbMF0nKTsKIHNob3VsZEJlKCd2YXIgYXJyID0gT2JqZWN0LnByZXZlbnRFeHRlbnNpb25z
KFtdKTsgYXJyWzBdID0gNDI7IGFyci5sZW5ndGgnLCAnMCcpOworLy8gSW4gc3RyaWN0IG1vZGUs
IHRoaXMgdGhyb3dzLgorc2hvdWxkVGhyb3coJyJ1c2Ugc3RyaWN0IjsgdmFyIGFyciA9IE9iamVj
dC5wcmV2ZW50RXh0ZW5zaW9ucyhbXSk7IGFyclswXSA9IDQyOyBhcnJbMF0nKTsKIAogLy8gQSBy
ZWFkLW9ubHkgcHJvcGVydHkgb24gdGhlIHByb3RvdHlwZSBzaG91bGQgcHJldmVudCBhIFtbUHV0
XV0gLgogZnVuY3Rpb24gQ29uc3RydWN0b3IoKSB7fQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9q
cy9zY3JpcHQtdGVzdHMvcHJpbWl0aXZlLXByb3BlcnR5LWFjY2Vzcy1lZGdlLWNhc2VzLmpzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL3ByaW1pdGl2ZS1w
cm9wZXJ0eS1hY2Nlc3MtZWRnZS1jYXNlcy5qcwkocmV2aXNpb24gMTA5ODI0KQorKysgTGF5b3V0
VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvcHJpbWl0aXZlLXByb3BlcnR5LWFjY2Vzcy1lZGdl
LWNhc2VzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xNzIsNyArMTcyLDcgQEAgc2hvdWxkQmVUcnVl
KCJjaGVja051bWVyaWNHZXRTdHJpY3QoMSwgTgogc2hvdWxkQmVUcnVlKCJjaGVja051bWVyaWNH
ZXRTdHJpY3QoJ2hlbGxvJywgU3RyaW5nKSIpOwogc2hvdWxkQmVUcnVlKCJjaGVja051bWVyaWNH
ZXRTdHJpY3QodHJ1ZSwgQm9vbGVhbikiKTsKIHNob3VsZEJlVHJ1ZSgiY2hlY2tOdW1lcmljU2V0
U3RyaWN0KDEsIE51bWJlcikiKTsKLS8vc2hvdWxkQmVUcnVlKCJjaGVja051bWVyaWNTZXRTdHJp
Y3QoJ2hlbGxvJywgU3RyaW5nKSIpOyAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTgwMzM1CitzaG91bGRCZVRydWUoImNoZWNrTnVtZXJpY1NldFN0cmlj
dCgnaGVsbG8nLCBTdHJpbmcpIik7CiBzaG91bGRCZVRydWUoImNoZWNrTnVtZXJpY1NldFN0cmlj
dCh0cnVlLCBCb29sZWFuKSIpOwogCiBmdW5jdGlvbiBjaGVja051bWVyaWNSZWFkKHgsIGNvbnN0
cnVjdG9yKQpAQCAtMjA5LDcgKzIwOSw3IEBAIHNob3VsZEJlVHJ1ZSgiY2hlY2tOdW1lcmljUmVh
ZFN0cmljdCgxLCAKIHNob3VsZEJlVHJ1ZSgiY2hlY2tOdW1lcmljUmVhZFN0cmljdCgnaGVsbG8n
LCBTdHJpbmcpIik7CiBzaG91bGRCZVRydWUoImNoZWNrTnVtZXJpY1JlYWRTdHJpY3QodHJ1ZSwg
Qm9vbGVhbikiKTsKIHNob3VsZFRocm93KCJjaGVja051bWVyaWNXcml0ZVN0cmljdCgxLCBOdW1i
ZXIpIik7Ci0vL3Nob3VsZFRocm93KCJjaGVja051bWVyaWNXcml0ZVN0cmljdCgnaGVsbG8nLCBT
dHJpbmcpIik7IC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODAzMzUKK3Nob3VsZFRocm93KCJjaGVja051bWVyaWNXcml0ZVN0cmljdCgnaGVsbG8nLCBT
dHJpbmcpIik7CiBzaG91bGRUaHJvdygiY2hlY2tOdW1lcmljV3JpdGVTdHJpY3QodHJ1ZSwgQm9v
bGVhbikiKTsKIAogc2hvdWxkQmVUcnVlKCJkaWROb3RDcmFzaCIpOwo=
</data>
<flag name="review"
          id="133262"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
    <flag name="commit-queue"
          id="133272"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
      

    </bug>

</bugzilla>