<?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>63881</bug_id>
          
          <creation_ts>2011-07-03 16:32:11 -0700</creation_ts>
          <short_desc>Need separate bytecodes for handling &gt;, &gt;= comparisons.</short_desc>
          <delta_ts>2011-07-04 12:36:22 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>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>
          <dependson>63879</dependson>
          <blocked>63880</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Gavin Barraclough">barraclough</reporter>
          <assigned_to name="Gavin Barraclough">barraclough</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>431758</commentid>
    <comment_count>0</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-07-03 16:32:11 -0700</bug_when>
    <thetext>This blocks us from fixing https://bugs.webkit.org/show_bug.cgi?id=63880</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>431969</commentid>
    <comment_count>1</comment_count>
      <attachid>99638</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-07-04 09:56:38 -0700</bug_when>
    <thetext>Created attachment 99638
The patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>432002</commentid>
    <comment_count>2</comment_count>
      <attachid>99649</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-07-04 11:33:53 -0700</bug_when>
    <thetext>Created attachment 99649
+ interpreter fix

Tested x86-64, x86, interpreter, DFG-JIT.  No sunspider impact.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>432010</commentid>
    <comment_count>3</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-07-04 12:36:22 -0700</bug_when>
    <thetext>Fixed in r90371</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>99638</attachid>
            <date>2011-07-04 09:56:38 -0700</date>
            <delta_ts>2011-07-04 11:33:53 -0700</delta_ts>
            <desc>The patch</desc>
            <filename>63881.3.patch</filename>
            <type>text/plain</type>
            <size>67766</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTAzNjcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNjkgQEAK
KzIwMTEtMDctMDQgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgor
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Mzg4MQor
ICAgICAgICBOZWVkIHNlcGFyYXRlIGJ5dGVjb2RlcyBmb3IgaGFuZGxpbmcgPiwgPj0gY29tcGFy
aXNvbnMuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGhpcyBjbGVhcnMgdGhlIHdheSB0byBmaXggQnVnIzYzODgwLiBXZSBjdXJyZW50bHkgaGFuZGxl
IGdyZWF0ZXItdGhhbiBjb21wYXJpc29ucworICAgICAgICBhcyBiZWluZyB1c2luZyB0aGUgY29y
cmVzcG9uZGluZyBvcF9sZXNzLCBldGMgb3Bjb2Rlcy4gIFRoaXMgaXMgaW5jb3JyZWN0IHdpdGgK
KyAgICAgICAgcmVzcGVjdCB0byBldmFsdWF0aW9uIG9yZGVyaW5nIG9mIHRoZSBpbXBsaWNpdCBj
b252ZXJzaW9ucyBwZXJmb3JtZWQgb24gb3BlcmFuZHMgLQorICAgICAgICB3ZSBzaG91bGQgYmUg
Y2FsbGluZyBUb1ByaW1pdGl2ZSBvbiB0aGUgTEhTIGFuZCBSSFMgb3BlcmFuZHMgdG8gdGhlIGdy
ZWF0ZXIgdGhhbiwKKyAgICAgICAgYnV0IGluc3RlYWQgY29udmVydCBSSFMgdGhlbiBMSFMuCisK
KyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIG9wY29kZXMgZm9yIGdyZWF0ZXItdGhhbiBjb21wYXJp
c29ucyBtaXJyb3JpbmcgZXhpc3Rpbmcgb25lcyB1c2VkCisgICAgICAgIGZvciBsZXNzLXRoYW4u
CisKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2Rl
QmxvY2s6OmR1bXApOgorICAgICAgICAqIGJ5dGVjb2RlL09wY29kZS5oOgorICAgICAgICAqIGJ5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0SnVtcElmVHJ1ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0SnVtcElmRmFsc2UpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVn
ZW4uY3BwOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdO
b2RlLmg6CisgICAgICAgICogZGZnL0RGR05vblNwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpOb25TcGVjdWxhdGl2ZUpJVDo6Y29tcGFyZSk6CisgICAgICAgIChKU0M6OkRG
Rzo6Tm9uU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdOb25TcGVj
dWxhdGl2ZUpJVC5oOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAg
KiBkZmcvREZHT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBhcmUpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZH
U3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6
CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpwcml2YXRlRXhlY3V0ZSk6CisgICAgICAgICog
aml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6
CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMpOgorICAgICAgICAq
IGppdC9KSVQuaDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2xvb3BfaWZfZ3JlYXRlcik6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfbG9vcF9pZl9ncmVhdGVyKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX2xvb3BfaWZfZ3JlYXRlcmVxKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0U2xvd19vcF9sb29wX2lmX2dyZWF0ZXJlcSk6CisgICAgICAgICogaml0L0pJVEFy
aXRobWV0aWMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfamdyZWF0ZXIpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfamdyZWF0ZXJlcSk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF9qbmdyZWF0ZXIpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfam5ncmVhdGVy
ZXEpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2pncmVhdGVyKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0U2xvd19vcF9qZ3JlYXRlcmVxKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0U2xvd19vcF9qbmdyZWF0ZXIpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2pu
Z3JlYXRlcmVxKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X2NvbXBhcmVBbmRKdW1wU2xvdyk6
CisgICAgICAgICogaml0L0pJVEFyaXRobWV0aWMzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdEJpbmFyeURvdWJsZU9wKToKKyAgICAgICAgKiBqaXQvSklUU3R1YnMuY3BwOgorICAg
ICAgICAoSlNDOjpERUZJTkVfU1RVQl9GVU5DVElPTik6CisgICAgICAgICogaml0L0pJVFN0dWJz
Lmg6CisgICAgICAgICogcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaDoKKyAgICAgICAgKEpTQzo6
R3JlYXRlck5vZGU6OkdyZWF0ZXJOb2RlKToKKyAgICAgICAgKEpTQzo6R3JlYXRlckVxTm9kZTo6
R3JlYXRlckVxTm9kZSk6CisgICAgICAgICogcGFyc2VyL05vZGVzLmg6CisKIDIwMTEtMDctMDMg
IEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgogCiAgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Mzg3OQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDkwMzUy
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTU4Niw2ICs1ODYsMTQgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhlY1N0
YXRlKiBleGVjLCBjbwogICAgICAgICAgICAgcHJpbnRCaW5hcnlPcChleGVjLCBsb2NhdGlvbiwg
aXQsICJsZXNzZXEiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAgICAgIGNh
c2Ugb3BfZ3JlYXRlcjogeworICAgICAgICAgICAgcHJpbnRCaW5hcnlPcChleGVjLCBsb2NhdGlv
biwgaXQsICJncmVhdGVyIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAg
ICBjYXNlIG9wX2dyZWF0ZXJlcTogeworICAgICAgICAgICAgcHJpbnRCaW5hcnlPcChleGVjLCBs
b2NhdGlvbiwgaXQsICJncmVhdGVyZXEiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CiAgICAgICAgIGNhc2Ugb3BfcHJlX2luYzogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQp
LT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBwcmludGYoIlslNGRdIHByZV9pbmNcdFx0ICVzXG4i
LCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOwpAQCAtOTk1LDYgKzEw
MDMsMzQgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhlY1N0YXRlKiBleGVjLCBjbwogICAgICAg
ICAgICAgcHJpbnRmKCJbJTRkXSBqbmVxX3B0clx0XHQgJXMsICVzLCAlZCgtPiVkKVxuIiwgbG9j
YXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywg
cjEpLmRhdGEoKSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQorICAgICAgICBjYXNlIG9wX2psZXNzOiB7CisgICAgICAgICAgICBpbnQg
cjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5v
cGVyYW5kOworICAgICAgICAgICAgaW50IG9mZnNldCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAg
ICAgICAgICAgcHJpbnRmKCJbJTRkXSBqbGVzc1x0XHQgJXMsICVzLCAlZCgtPiVkKVxuIiwgbG9j
YXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywg
cjEpLmRhdGEoKSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorICAgICAgICBjYXNlIG9wX2psZXNzZXE6IHsKKyAgICAgICAgICAgIGlu
dCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51
Lm9wZXJhbmQ7CisgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7Cisg
ICAgICAgICAgICBwcmludGYoIlslNGRdIGpsZXNzZXFcdFx0ICVzLCAlcywgJWQoLT4lZClcbiIs
IGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4
ZWMsIHIxKS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9qZ3JlYXRlcjogeworICAgICAgICAg
ICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBpbnQgcjEgPSAoKytp
dCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIGludCBvZmZzZXQgPSAoKytpdCktPnUub3BlcmFu
ZDsKKyAgICAgICAgICAgIHByaW50ZigiWyU0ZF0gamdyZWF0ZXJcdFx0ICVzLCAlcywgJWQoLT4l
ZClcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJO
YW1lKGV4ZWMsIHIxKS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9qZ3JlYXRlcmVxOiB7Cisg
ICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIGludCBy
MSA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgaW50IG9mZnNldCA9ICgrK2l0KS0+
dS5vcGVyYW5kOworICAgICAgICAgICAgcHJpbnRmKCJbJTRkXSBqZ3JlYXRlcmVxXHRcdCAlcywg
JXMsICVkKC0+JWQpXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCks
IHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3Bfam5sZXNz
OiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAg
IGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwpAQCAtMTAwOSwyNSArMTA0NSwyNSBAQCB2b2lk
IENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAgICAgICAgICBwcmludGYo
IlslNGRdIGpubGVzc2VxXHRcdCAlcywgJXMsICVkKC0+JWQpXG4iLCBsb2NhdGlvbiwgcmVnaXN0
ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBv
ZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
Ci0gICAgICAgIGNhc2Ugb3BfbG9vcF9pZl9sZXNzOiB7CisgICAgICAgIGNhc2Ugb3Bfam5ncmVh
dGVyOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAg
ICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IG9mZnNldCA9
ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJpbnRmKCJbJTRkXSBsb29wX2lmX2xl
c3NcdCAlcywgJXMsICVkKC0+JWQpXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIw
KS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9u
ICsgb2Zmc2V0KTsKKyAgICAgICAgICAgIHByaW50ZigiWyU0ZF0gam5ncmVhdGVyXHRcdCAlcywg
JXMsICVkKC0+JWQpXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCks
IHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGNhc2Ugb3Bfamxlc3M6
IHsKKyAgICAgICAgY2FzZSBvcF9qbmdyZWF0ZXJlcTogewogICAgICAgICAgICAgaW50IHIwID0g
KCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFu
ZDsKICAgICAgICAgICAgIGludCBvZmZzZXQgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAg
ICAgIHByaW50ZigiWyU0ZF0gamxlc3NcdFx0ICVzLCAlcywgJWQoLT4lZClcbiIsIGxvY2F0aW9u
LCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5k
YXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOworICAgICAgICAgICAgcHJpbnRmKCJb
JTRkXSBqbmdyZWF0ZXJlcVx0XHQgJXMsICVzLCAlZCgtPiVkKVxuIiwgbG9jYXRpb24sIHJlZ2lz
dGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwg
b2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQotICAgICAgICBjYXNlIG9wX2psZXNzZXE6IHsKKyAgICAgICAgY2FzZSBvcF9sb29wX2lmX2xl
c3M6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAg
ICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0g
KCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBwcmludGYoIlslNGRdIGpsZXNzZXFcdFx0
ICVzLCAlcywgJWQoLT4lZClcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRh
dGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBv
ZmZzZXQpOworICAgICAgICAgICAgcHJpbnRmKCJbJTRkXSBsb29wX2lmX2xlc3NcdCAlcywgJXMs
ICVkKC0+JWQpXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJl
Z2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfbG9vcF9pZl9s
ZXNzZXE6IHsKQEAgLTEwMzcsNiArMTA3MywyMCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcChFeGVj
U3RhdGUqIGV4ZWMsIGNvCiAgICAgICAgICAgICBwcmludGYoIlslNGRdIGxvb3BfaWZfbGVzc2Vx
XHQgJXMsICVzLCAlZCgtPiVkKVxuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCku
ZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgb2Zmc2V0LCBsb2NhdGlvbiAr
IG9mZnNldCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBjYXNlIG9w
X2xvb3BfaWZfZ3JlYXRlcjogeworICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJh
bmQ7CisgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAg
IGludCBvZmZzZXQgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIHByaW50ZigiWyU0
ZF0gbG9vcF9pZl9ncmVhdGVyXHQgJXMsICVzLCAlZCgtPiVkKVxuIiwgbG9jYXRpb24sIHJlZ2lz
dGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwg
b2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorICAgICAgICBjYXNlIG9wX2xvb3BfaWZfZ3JlYXRlcmVxOiB7CisgICAgICAgICAgICBpbnQg
cjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5v
cGVyYW5kOworICAgICAgICAgICAgaW50IG9mZnNldCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAg
ICAgICAgICAgcHJpbnRmKCJbJTRkXSBsb29wX2lmX2dyZWF0ZXJlcVx0ICVzLCAlcywgJWQoLT4l
ZClcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJO
YW1lKGV4ZWMsIHIxKS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9zd2l0Y2hfaW1tOiB7CiAg
ICAgICAgICAgICBpbnQgdGFibGVJbmRleCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAg
ICAgaW50IGRlZmF1bHRUYXJnZXQgPSAoKytpdCktPnUub3BlcmFuZDsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgJKHJldmlzaW9uIDkwMzUyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02Miw2
ICs2Miw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBtYWNybyhvcF9uc3RyaWN0ZXEsIDQp
IFwKICAgICAgICAgbWFjcm8ob3BfbGVzcywgNCkgXAogICAgICAgICBtYWNybyhvcF9sZXNzZXEs
IDQpIFwKKyAgICAgICAgbWFjcm8ob3BfZ3JlYXRlciwgNCkgXAorICAgICAgICBtYWNybyhvcF9n
cmVhdGVyZXEsIDQpIFwKICAgICAgICAgXAogICAgICAgICBtYWNybyhvcF9wcmVfaW5jLCAyKSBc
CiAgICAgICAgIG1hY3JvKG9wX3ByZV9kZWMsIDIpIFwKQEAgLTE0NSwxNiArMTQ3LDIyIEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBtYWNybyhvcF9qZXFfbnVsbCwgMykgXAogICAgICAgICBt
YWNybyhvcF9qbmVxX251bGwsIDMpIFwKICAgICAgICAgbWFjcm8ob3Bfam5lcV9wdHIsIDQpIFwK
LSAgICAgICAgbWFjcm8ob3Bfam5sZXNzLCA0KSBcCi0gICAgICAgIG1hY3JvKG9wX2pubGVzc2Vx
LCA0KSBcCiAgICAgICAgIG1hY3JvKG9wX2psZXNzLCA0KSBcCiAgICAgICAgIG1hY3JvKG9wX2ps
ZXNzZXEsIDQpIFwKKyAgICAgICAgbWFjcm8ob3BfamdyZWF0ZXIsIDQpIFwKKyAgICAgICAgbWFj
cm8ob3BfamdyZWF0ZXJlcSwgNCkgXAorICAgICAgICBtYWNybyhvcF9qbmxlc3MsIDQpIFwKKyAg
ICAgICAgbWFjcm8ob3Bfam5sZXNzZXEsIDQpIFwKKyAgICAgICAgbWFjcm8ob3Bfam5ncmVhdGVy
LCA0KSBcCisgICAgICAgIG1hY3JvKG9wX2puZ3JlYXRlcmVxLCA0KSBcCiAgICAgICAgIG1hY3Jv
KG9wX2ptcF9zY29wZXMsIDMpIFwKICAgICAgICAgbWFjcm8ob3BfbG9vcCwgMikgXAogICAgICAg
ICBtYWNybyhvcF9sb29wX2lmX3RydWUsIDMpIFwKICAgICAgICAgbWFjcm8ob3BfbG9vcF9pZl9m
YWxzZSwgMykgXAogICAgICAgICBtYWNybyhvcF9sb29wX2lmX2xlc3MsIDQpIFwKICAgICAgICAg
bWFjcm8ob3BfbG9vcF9pZl9sZXNzZXEsIDQpIFwKKyAgICAgICAgbWFjcm8ob3BfbG9vcF9pZl9n
cmVhdGVyLCA0KSBcCisgICAgICAgIG1hY3JvKG9wX2xvb3BfaWZfZ3JlYXRlcmVxLCA0KSBcCiAg
ICAgICAgIG1hY3JvKG9wX3N3aXRjaF9pbW0sIDQpIFwKICAgICAgICAgbWFjcm8ob3Bfc3dpdGNo
X2NoYXIsIDQpIFwKICAgICAgICAgbWFjcm8ob3Bfc3dpdGNoX3N0cmluZywgNCkgXApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5jcHAJKHJldmlzaW9uIDkwMzUyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcz
Myw2ICs3MzMsNDAgQEAgUGFzc1JlZlB0cjxMYWJlbD4gQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaQog
ICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHRhcmdldC0+YmluZChiZWdpbiwgaW5z
dHJ1Y3Rpb25zKCkuc2l6ZSgpKSk7CiAgICAgICAgICAgICByZXR1cm4gdGFyZ2V0OwogICAgICAg
ICB9CisgICAgfSBlbHNlIGlmIChtX2xhc3RPcGNvZGVJRCA9PSBvcF9ncmVhdGVyKSB7CisgICAg
ICAgIGludCBkc3RJbmRleDsKKyAgICAgICAgaW50IHNyYzFJbmRleDsKKyAgICAgICAgaW50IHNy
YzJJbmRleDsKKworICAgICAgICByZXRyaWV2ZUxhc3RCaW5hcnlPcChkc3RJbmRleCwgc3JjMUlu
ZGV4LCBzcmMySW5kZXgpOworCisgICAgICAgIGlmIChjb25kLT5pbmRleCgpID09IGRzdEluZGV4
ICYmIGNvbmQtPmlzVGVtcG9yYXJ5KCkgJiYgIWNvbmQtPnJlZkNvdW50KCkpIHsKKyAgICAgICAg
ICAgIHJld2luZEJpbmFyeU9wKCk7CisKKyAgICAgICAgICAgIHNpemVfdCBiZWdpbiA9IGluc3Ry
dWN0aW9ucygpLnNpemUoKTsKKyAgICAgICAgICAgIGVtaXRPcGNvZGUodGFyZ2V0LT5pc0Zvcndh
cmQoKSA/IG9wX2pncmVhdGVyIDogb3BfbG9vcF9pZl9ncmVhdGVyKTsKKyAgICAgICAgICAgIGlu
c3RydWN0aW9ucygpLmFwcGVuZChzcmMxSW5kZXgpOworICAgICAgICAgICAgaW5zdHJ1Y3Rpb25z
KCkuYXBwZW5kKHNyYzJJbmRleCk7CisgICAgICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
dGFyZ2V0LT5iaW5kKGJlZ2luLCBpbnN0cnVjdGlvbnMoKS5zaXplKCkpKTsKKyAgICAgICAgICAg
IHJldHVybiB0YXJnZXQ7CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKG1fbGFzdE9wY29kZUlE
ID09IG9wX2dyZWF0ZXJlcSkgeworICAgICAgICBpbnQgZHN0SW5kZXg7CisgICAgICAgIGludCBz
cmMxSW5kZXg7CisgICAgICAgIGludCBzcmMySW5kZXg7CisKKyAgICAgICAgcmV0cmlldmVMYXN0
QmluYXJ5T3AoZHN0SW5kZXgsIHNyYzFJbmRleCwgc3JjMkluZGV4KTsKKworICAgICAgICBpZiAo
Y29uZC0+aW5kZXgoKSA9PSBkc3RJbmRleCAmJiBjb25kLT5pc1RlbXBvcmFyeSgpICYmICFjb25k
LT5yZWZDb3VudCgpKSB7CisgICAgICAgICAgICByZXdpbmRCaW5hcnlPcCgpOworCisgICAgICAg
ICAgICBzaXplX3QgYmVnaW4gPSBpbnN0cnVjdGlvbnMoKS5zaXplKCk7CisgICAgICAgICAgICBl
bWl0T3Bjb2RlKHRhcmdldC0+aXNGb3J3YXJkKCkgPyBvcF9qZ3JlYXRlcmVxIDogb3BfbG9vcF9p
Zl9ncmVhdGVyZXEpOworICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHNyYzFJbmRl
eCk7CisgICAgICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoc3JjMkluZGV4KTsKKyAgICAg
ICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCh0YXJnZXQtPmJpbmQoYmVnaW4sIGluc3RydWN0
aW9ucygpLnNpemUoKSkpOworICAgICAgICAgICAgcmV0dXJuIHRhcmdldDsKKyAgICAgICAgfQog
ICAgIH0gZWxzZSBpZiAobV9sYXN0T3Bjb2RlSUQgPT0gb3BfZXFfbnVsbCAmJiB0YXJnZXQtPmlz
Rm9yd2FyZCgpKSB7CiAgICAgICAgIGludCBkc3RJbmRleDsKICAgICAgICAgaW50IHNyY0luZGV4
OwpAQCAtODA5LDYgKzg0Myw0MCBAQCBQYXNzUmVmUHRyPExhYmVsPiBCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pCiAgICAgICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQodGFyZ2V0LT5iaW5kKGJl
Z2luLCBpbnN0cnVjdGlvbnMoKS5zaXplKCkpKTsKICAgICAgICAgICAgIHJldHVybiB0YXJnZXQ7
CiAgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKG1fbGFzdE9wY29kZUlEID09IG9wX2dyZWF0ZXIg
JiYgdGFyZ2V0LT5pc0ZvcndhcmQoKSkgeworICAgICAgICBpbnQgZHN0SW5kZXg7CisgICAgICAg
IGludCBzcmMxSW5kZXg7CisgICAgICAgIGludCBzcmMySW5kZXg7CisKKyAgICAgICAgcmV0cmll
dmVMYXN0QmluYXJ5T3AoZHN0SW5kZXgsIHNyYzFJbmRleCwgc3JjMkluZGV4KTsKKworICAgICAg
ICBpZiAoY29uZC0+aW5kZXgoKSA9PSBkc3RJbmRleCAmJiBjb25kLT5pc1RlbXBvcmFyeSgpICYm
ICFjb25kLT5yZWZDb3VudCgpKSB7CisgICAgICAgICAgICByZXdpbmRCaW5hcnlPcCgpOworCisg
ICAgICAgICAgICBzaXplX3QgYmVnaW4gPSBpbnN0cnVjdGlvbnMoKS5zaXplKCk7CisgICAgICAg
ICAgICBlbWl0T3Bjb2RlKG9wX2puZ3JlYXRlcik7CisgICAgICAgICAgICBpbnN0cnVjdGlvbnMo
KS5hcHBlbmQoc3JjMUluZGV4KTsKKyAgICAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChz
cmMySW5kZXgpOworICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHRhcmdldC0+Ymlu
ZChiZWdpbiwgaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKSk7CisgICAgICAgICAgICByZXR1cm4gdGFy
Z2V0OworICAgICAgICB9CisgICAgfSBlbHNlIGlmIChtX2xhc3RPcGNvZGVJRCA9PSBvcF9ncmVh
dGVyZXEgJiYgdGFyZ2V0LT5pc0ZvcndhcmQoKSkgeworICAgICAgICBpbnQgZHN0SW5kZXg7Cisg
ICAgICAgIGludCBzcmMxSW5kZXg7CisgICAgICAgIGludCBzcmMySW5kZXg7CisKKyAgICAgICAg
cmV0cmlldmVMYXN0QmluYXJ5T3AoZHN0SW5kZXgsIHNyYzFJbmRleCwgc3JjMkluZGV4KTsKKwor
ICAgICAgICBpZiAoY29uZC0+aW5kZXgoKSA9PSBkc3RJbmRleCAmJiBjb25kLT5pc1RlbXBvcmFy
eSgpICYmICFjb25kLT5yZWZDb3VudCgpKSB7CisgICAgICAgICAgICByZXdpbmRCaW5hcnlPcCgp
OworCisgICAgICAgICAgICBzaXplX3QgYmVnaW4gPSBpbnN0cnVjdGlvbnMoKS5zaXplKCk7Cisg
ICAgICAgICAgICBlbWl0T3Bjb2RlKG9wX2puZ3JlYXRlcmVxKTsKKyAgICAgICAgICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZChzcmMxSW5kZXgpOworICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKHNyYzJJbmRleCk7CisgICAgICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQodGFy
Z2V0LT5iaW5kKGJlZ2luLCBpbnN0cnVjdGlvbnMoKS5zaXplKCkpKTsKKyAgICAgICAgICAgIHJl
dHVybiB0YXJnZXQ7CisgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKG1fbGFzdE9wY29kZUlEID09
IG9wX25vdCkgewogICAgICAgICBpbnQgZHN0SW5kZXg7CiAgICAgICAgIGludCBzcmNJbmRleDsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVz
Q29kZWdlbi5jcHAJKHJldmlzaW9uIDkwMzUyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05ODUsMTMgKzk4
NSw2IEBAIFJlZ2lzdGVySUQqIFN0cmljdEVxdWFsTm9kZTo6ZW1pdEJ5dGVjb2QKICAgICByZXR1
cm4gZ2VuZXJhdG9yLmVtaXRFcXVhbGl0eU9wKG9wX3N0cmljdGVxLCBnZW5lcmF0b3IuZmluYWxE
ZXN0aW5hdGlvbihkc3QsIHNyYzEuZ2V0KCkpLCBzcmMxLmdldCgpLCBzcmMyKTsKIH0KIAotUmVn
aXN0ZXJJRCogUmV2ZXJzZUJpbmFyeU9wTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKLXsKLSAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gc3JjMSA9IGdlbmVyYXRvci5lbWl0Tm9kZUZvckxlZnRIYW5kU2lkZShtX2V4cHIxLCBtX3Jp
Z2h0SGFzQXNzaWdubWVudHMsIG1fZXhwcjItPmlzUHVyZShnZW5lcmF0b3IpKTsKLSAgICBSZWdp
c3RlcklEKiBzcmMyID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fZXhwcjIpOwotICAgIHJldHVybiBn
ZW5lcmF0b3IuZW1pdEJpbmFyeU9wKG9wY29kZUlEKCksIGdlbmVyYXRvci5maW5hbERlc3RpbmF0
aW9uKGRzdCwgc3JjMS5nZXQoKSksIHNyYzIsIHNyYzEuZ2V0KCksIE9wZXJhbmRUeXBlcyhtX2V4
cHIyLT5yZXN1bHREZXNjcmlwdG9yKCksIG1fZXhwcjEtPnJlc3VsdERlc2NyaXB0b3IoKSkpOwot
fQotCiBSZWdpc3RlcklEKiBUaHJvd2FibGVCaW5hcnlPcE5vZGU6OmVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7CiAgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IHNyYzEgPSBnZW5lcmF0b3IuZW1pdE5vZGVGb3JMZWZ0SGFuZFNpZGUobV9l
eHByMSwgbV9yaWdodEhhc0Fzc2lnbm1lbnRzLCBtX2V4cHIyLT5pc1B1cmUoZ2VuZXJhdG9yKSk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2Vy
LmNwcAkocmV2aXNpb24gOTAzNTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzM2LDYgKzczNiwyMiBAQCBib29s
IEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICBORVhUX09Q
Q09ERShvcF9sZXNzZXEpOwogICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBvcF9ncmVhdGVyOiB7
CisgICAgICAgICAgICBBUklUSE1FVElDX09QKCk7CisgICAgICAgICAgICBOb2RlSW5kZXggb3Ax
ID0gZ2V0KGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpOworICAgICAgICAgICAgTm9k
ZUluZGV4IG9wMiA9IGdldChjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKTsKKyAgICAg
ICAgICAgIHNldChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCBhZGRUb0dyYXBoKENv
bXBhcmVHcmVhdGVyLCBvcDEsIG9wMikpOworICAgICAgICAgICAgTkVYVF9PUENPREUob3BfZ3Jl
YXRlcik7CisgICAgICAgIH0KKworICAgICAgICBjYXNlIG9wX2dyZWF0ZXJlcTogeworICAgICAg
ICAgICAgQVJJVEhNRVRJQ19PUCgpOworICAgICAgICAgICAgTm9kZUluZGV4IG9wMSA9IGdldChj
dXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsKKyAgICAgICAgICAgIE5vZGVJbmRleCBv
cDIgPSBnZXQoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCk7CisgICAgICAgICAgICBz
ZXQoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwgYWRkVG9HcmFwaChDb21wYXJlR3Jl
YXRlckVxLCBvcDEsIG9wMikpOworICAgICAgICAgICAgTkVYVF9PUENPREUob3BfZ3JlYXRlcmVx
KTsKKyAgICAgICAgfQorCiAgICAgICAgIGNhc2Ugb3BfZXE6IHsKICAgICAgICAgICAgIEFSSVRI
TUVUSUNfT1AoKTsKICAgICAgICAgICAgIE5vZGVJbmRleCBvcDEgPSBnZXQoY3VycmVudEluc3Ry
dWN0aW9uWzJdLnUub3BlcmFuZCk7CkBAIC05MTEsNiArOTI3LDQyIEBAIGJvb2wgQnl0ZUNvZGVQ
YXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgIExBU1RfT1BDT0RFKG9wX2pu
ZXFfbnVsbCk7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIG9wX2psZXNzOiB7CisgICAgICAg
ICAgICB1bnNpZ25lZCByZWxhdGl2ZU9mZnNldCA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9w
ZXJhbmQ7CisgICAgICAgICAgICBOb2RlSW5kZXggb3AxID0gZ2V0KGN1cnJlbnRJbnN0cnVjdGlv
blsxXS51Lm9wZXJhbmQpOworICAgICAgICAgICAgTm9kZUluZGV4IG9wMiA9IGdldChjdXJyZW50
SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsKKyAgICAgICAgICAgIE5vZGVJbmRleCBjb25kaXRp
b24gPSBhZGRUb0dyYXBoKENvbXBhcmVMZXNzLCBvcDEsIG9wMik7CisgICAgICAgICAgICBhZGRU
b0dyYXBoKEJyYW5jaCwgT3BJbmZvKG1fY3VycmVudEluZGV4ICsgcmVsYXRpdmVPZmZzZXQpLCBP
cEluZm8obV9jdXJyZW50SW5kZXggKyBPUENPREVfTEVOR1RIKG9wX2psZXNzKSksIGNvbmRpdGlv
bik7CisgICAgICAgICAgICBMQVNUX09QQ09ERShvcF9qbGVzcyk7CisgICAgICAgIH0KKworICAg
ICAgICBjYXNlIG9wX2psZXNzZXE6IHsKKyAgICAgICAgICAgIHVuc2lnbmVkIHJlbGF0aXZlT2Zm
c2V0ID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKKyAgICAgICAgICAgIE5vZGVJ
bmRleCBvcDEgPSBnZXQoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CisgICAgICAg
ICAgICBOb2RlSW5kZXggb3AyID0gZ2V0KGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQp
OworICAgICAgICAgICAgTm9kZUluZGV4IGNvbmRpdGlvbiA9IGFkZFRvR3JhcGgoQ29tcGFyZUxl
c3NFcSwgb3AxLCBvcDIpOworICAgICAgICAgICAgYWRkVG9HcmFwaChCcmFuY2gsIE9wSW5mbyht
X2N1cnJlbnRJbmRleCArIHJlbGF0aXZlT2Zmc2V0KSwgT3BJbmZvKG1fY3VycmVudEluZGV4ICsg
T1BDT0RFX0xFTkdUSChvcF9qbGVzc2VxKSksIGNvbmRpdGlvbik7CisgICAgICAgICAgICBMQVNU
X09QQ09ERShvcF9qbGVzc2VxKTsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2Ugb3BfamdyZWF0
ZXI6IHsKKyAgICAgICAgICAgIHVuc2lnbmVkIHJlbGF0aXZlT2Zmc2V0ID0gY3VycmVudEluc3Ry
dWN0aW9uWzNdLnUub3BlcmFuZDsKKyAgICAgICAgICAgIE5vZGVJbmRleCBvcDEgPSBnZXQoY3Vy
cmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CisgICAgICAgICAgICBOb2RlSW5kZXggb3Ay
ID0gZ2V0KGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpOworICAgICAgICAgICAgTm9k
ZUluZGV4IGNvbmRpdGlvbiA9IGFkZFRvR3JhcGgoQ29tcGFyZUdyZWF0ZXIsIG9wMSwgb3AyKTsK
KyAgICAgICAgICAgIGFkZFRvR3JhcGgoQnJhbmNoLCBPcEluZm8obV9jdXJyZW50SW5kZXggKyBy
ZWxhdGl2ZU9mZnNldCksIE9wSW5mbyhtX2N1cnJlbnRJbmRleCArIE9QQ09ERV9MRU5HVEgob3Bf
amdyZWF0ZXIpKSwgY29uZGl0aW9uKTsKKyAgICAgICAgICAgIExBU1RfT1BDT0RFKG9wX2pncmVh
dGVyKTsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2Ugb3BfamdyZWF0ZXJlcTogeworICAgICAg
ICAgICAgdW5zaWduZWQgcmVsYXRpdmVPZmZzZXQgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5v
cGVyYW5kOworICAgICAgICAgICAgTm9kZUluZGV4IG9wMSA9IGdldChjdXJyZW50SW5zdHJ1Y3Rp
b25bMV0udS5vcGVyYW5kKTsKKyAgICAgICAgICAgIE5vZGVJbmRleCBvcDIgPSBnZXQoY3VycmVu
dEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCk7CisgICAgICAgICAgICBOb2RlSW5kZXggY29uZGl0
aW9uID0gYWRkVG9HcmFwaChDb21wYXJlR3JlYXRlckVxLCBvcDEsIG9wMik7CisgICAgICAgICAg
ICBhZGRUb0dyYXBoKEJyYW5jaCwgT3BJbmZvKG1fY3VycmVudEluZGV4ICsgcmVsYXRpdmVPZmZz
ZXQpLCBPcEluZm8obV9jdXJyZW50SW5kZXggKyBPUENPREVfTEVOR1RIKG9wX2pncmVhdGVyZXEp
KSwgY29uZGl0aW9uKTsKKyAgICAgICAgICAgIExBU1RfT1BDT0RFKG9wX2pncmVhdGVyZXEpOwor
ICAgICAgICB9CisKICAgICAgICAgY2FzZSBvcF9qbmxlc3M6IHsKICAgICAgICAgICAgIHVuc2ln
bmVkIHJlbGF0aXZlT2Zmc2V0ID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKICAg
ICAgICAgICAgIE5vZGVJbmRleCBvcDEgPSBnZXQoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3Bl
cmFuZCk7CkBAIC05MjksMjIgKzk4MSwyMiBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJs
b2NrKHVuc2lnbmVkCiAgICAgICAgICAgICBMQVNUX09QQ09ERShvcF9qbmxlc3NlcSk7CiAgICAg
ICAgIH0KIAotICAgICAgICBjYXNlIG9wX2psZXNzOiB7CisgICAgICAgIGNhc2Ugb3Bfam5ncmVh
dGVyOiB7CiAgICAgICAgICAgICB1bnNpZ25lZCByZWxhdGl2ZU9mZnNldCA9IGN1cnJlbnRJbnN0
cnVjdGlvblszXS51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBOb2RlSW5kZXggb3AxID0gZ2V0KGN1
cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOwogICAgICAgICAgICAgTm9kZUluZGV4IG9w
MiA9IGdldChjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsKLSAgICAgICAgICAgIE5v
ZGVJbmRleCBjb25kaXRpb24gPSBhZGRUb0dyYXBoKENvbXBhcmVMZXNzLCBvcDEsIG9wMik7Ci0g
ICAgICAgICAgICBhZGRUb0dyYXBoKEJyYW5jaCwgT3BJbmZvKG1fY3VycmVudEluZGV4ICsgcmVs
YXRpdmVPZmZzZXQpLCBPcEluZm8obV9jdXJyZW50SW5kZXggKyBPUENPREVfTEVOR1RIKG9wX2ps
ZXNzKSksIGNvbmRpdGlvbik7Ci0gICAgICAgICAgICBMQVNUX09QQ09ERShvcF9qbGVzcyk7Cisg
ICAgICAgICAgICBOb2RlSW5kZXggY29uZGl0aW9uID0gYWRkVG9HcmFwaChDb21wYXJlR3JlYXRl
ciwgb3AxLCBvcDIpOworICAgICAgICAgICAgYWRkVG9HcmFwaChCcmFuY2gsIE9wSW5mbyhtX2N1
cnJlbnRJbmRleCArIE9QQ09ERV9MRU5HVEgob3Bfam5ncmVhdGVyKSksIE9wSW5mbyhtX2N1cnJl
bnRJbmRleCArIHJlbGF0aXZlT2Zmc2V0KSwgY29uZGl0aW9uKTsKKyAgICAgICAgICAgIExBU1Rf
T1BDT0RFKG9wX2puZ3JlYXRlcik7CiAgICAgICAgIH0KIAotICAgICAgICBjYXNlIG9wX2psZXNz
ZXE6IHsKKyAgICAgICAgY2FzZSBvcF9qbmdyZWF0ZXJlcTogewogICAgICAgICAgICAgdW5zaWdu
ZWQgcmVsYXRpdmVPZmZzZXQgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOwogICAg
ICAgICAgICAgTm9kZUluZGV4IG9wMSA9IGdldChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVy
YW5kKTsKICAgICAgICAgICAgIE5vZGVJbmRleCBvcDIgPSBnZXQoY3VycmVudEluc3RydWN0aW9u
WzJdLnUub3BlcmFuZCk7Ci0gICAgICAgICAgICBOb2RlSW5kZXggY29uZGl0aW9uID0gYWRkVG9H
cmFwaChDb21wYXJlTGVzc0VxLCBvcDEsIG9wMik7Ci0gICAgICAgICAgICBhZGRUb0dyYXBoKEJy
YW5jaCwgT3BJbmZvKG1fY3VycmVudEluZGV4ICsgcmVsYXRpdmVPZmZzZXQpLCBPcEluZm8obV9j
dXJyZW50SW5kZXggKyBPUENPREVfTEVOR1RIKG9wX2psZXNzZXEpKSwgY29uZGl0aW9uKTsKLSAg
ICAgICAgICAgIExBU1RfT1BDT0RFKG9wX2psZXNzZXEpOworICAgICAgICAgICAgTm9kZUluZGV4
IGNvbmRpdGlvbiA9IGFkZFRvR3JhcGgoQ29tcGFyZUdyZWF0ZXJFcSwgb3AxLCBvcDIpOworICAg
ICAgICAgICAgYWRkVG9HcmFwaChCcmFuY2gsIE9wSW5mbyhtX2N1cnJlbnRJbmRleCArIE9QQ09E
RV9MRU5HVEgob3Bfam5ncmVhdGVyZXEpKSwgT3BJbmZvKG1fY3VycmVudEluZGV4ICsgcmVsYXRp
dmVPZmZzZXQpLCBjb25kaXRpb24pOworICAgICAgICAgICAgTEFTVF9PUENPREUob3Bfam5ncmVh
dGVyZXEpOwogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBvcF9sb29wX2lmX2xlc3M6IHsKQEAg
LTk2NSw2ICsxMDE3LDI0IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWdu
ZWQKICAgICAgICAgICAgIExBU1RfT1BDT0RFKG9wX2xvb3BfaWZfbGVzc2VxKTsKICAgICAgICAg
fQogCisgICAgICAgIGNhc2Ugb3BfbG9vcF9pZl9ncmVhdGVyOiB7CisgICAgICAgICAgICB1bnNp
Z25lZCByZWxhdGl2ZU9mZnNldCA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7Cisg
ICAgICAgICAgICBOb2RlSW5kZXggb3AxID0gZ2V0KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9w
ZXJhbmQpOworICAgICAgICAgICAgTm9kZUluZGV4IG9wMiA9IGdldChjdXJyZW50SW5zdHJ1Y3Rp
b25bMl0udS5vcGVyYW5kKTsKKyAgICAgICAgICAgIE5vZGVJbmRleCBjb25kaXRpb24gPSBhZGRU
b0dyYXBoKENvbXBhcmVHcmVhdGVyLCBvcDEsIG9wMik7CisgICAgICAgICAgICBhZGRUb0dyYXBo
KEJyYW5jaCwgT3BJbmZvKG1fY3VycmVudEluZGV4ICsgcmVsYXRpdmVPZmZzZXQpLCBPcEluZm8o
bV9jdXJyZW50SW5kZXggKyBPUENPREVfTEVOR1RIKG9wX2xvb3BfaWZfZ3JlYXRlcikpLCBjb25k
aXRpb24pOworICAgICAgICAgICAgTEFTVF9PUENPREUob3BfbG9vcF9pZl9ncmVhdGVyKTsKKyAg
ICAgICAgfQorCisgICAgICAgIGNhc2Ugb3BfbG9vcF9pZl9ncmVhdGVyZXE6IHsKKyAgICAgICAg
ICAgIHVuc2lnbmVkIHJlbGF0aXZlT2Zmc2V0ID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3Bl
cmFuZDsKKyAgICAgICAgICAgIE5vZGVJbmRleCBvcDEgPSBnZXQoY3VycmVudEluc3RydWN0aW9u
WzFdLnUub3BlcmFuZCk7CisgICAgICAgICAgICBOb2RlSW5kZXggb3AyID0gZ2V0KGN1cnJlbnRJ
bnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpOworICAgICAgICAgICAgTm9kZUluZGV4IGNvbmRpdGlv
biA9IGFkZFRvR3JhcGgoQ29tcGFyZUdyZWF0ZXJFcSwgb3AxLCBvcDIpOworICAgICAgICAgICAg
YWRkVG9HcmFwaChCcmFuY2gsIE9wSW5mbyhtX2N1cnJlbnRJbmRleCArIHJlbGF0aXZlT2Zmc2V0
KSwgT3BJbmZvKG1fY3VycmVudEluZGV4ICsgT1BDT0RFX0xFTkdUSChvcF9sb29wX2lmX2dyZWF0
ZXJlcSkpLCBjb25kaXRpb24pOworICAgICAgICAgICAgTEFTVF9PUENPREUob3BfbG9vcF9pZl9n
cmVhdGVyZXEpOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBvcF9yZXQ6IHsKICAgICAgICAg
ICAgIGFkZFRvR3JhcGgoUmV0dXJuLCBnZXQoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFu
ZCkpOwogICAgICAgICAgICAgTEFTVF9PUENPREUob3BfcmV0KTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTm9kZS5oCShyZXZpc2lvbiA5MDM1MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzMsNiArMTMzLDggQEAgdHlw
ZWRlZiB1aW50MzJfdCBFeGNlcHRpb25JbmZvOwogICAgIC8qIE5vZGVzIGZvciBjb21wYXJpc29u
IG9wZXJhdGlvbnMuICovXAogICAgIG1hY3JvKENvbXBhcmVMZXNzLCBOb2RlUmVzdWx0SlMgfCBO
b2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oQ29tcGFyZUxlc3NFcSwgTm9kZVJlc3VsdEpT
IHwgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAgIG1hY3JvKENvbXBhcmVHcmVhdGVyLCBOb2RlUmVz
dWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8oQ29tcGFyZUdyZWF0ZXJFcSwg
Tm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKENvbXBhcmVFcSwg
Tm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKENvbXBhcmVTdHJp
Y3RFcSwgTm9kZVJlc3VsdEpTKSBcCiAgICAgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb25TcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOb25TcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDkwMzUyKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb25TcGVjdWxhdGl2ZUpJVC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM0Miw3ICszNDIsNyBAQCB2b2lkIE5vblNwZWN1bGF0aXZlSklUOjpi
YXNpY0FyaXRoT3AoTm9kCiAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRHUFIsIG1fY29tcGlsZUlu
ZGV4KTsKIH0KIAotdm9pZCBOb25TcGVjdWxhdGl2ZUpJVDo6Y29tcGFyZShOb2RlJiBub2RlLCBN
YWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBjb25zdCBaX0RGR09wZXJh
dGlvbl9FSkomIGhlbHBlckZ1bmN0aW9uKQordm9pZCBOb25TcGVjdWxhdGl2ZUpJVDo6Y29tcGFy
ZShOb2RlJiBub2RlLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBa
X0RGR09wZXJhdGlvbl9FSkogaGVscGVyRnVuY3Rpb24pCiB7CiAgICAgLy8gRklYTUU6IHNob3Vs
ZCBkbyBzb21lIHBlZXBob2xlIHRvIGZ1c2UgY29tcGFyZS9icmFuY2gKICAgICAgICAgCkBAIC03
NDAsNiArNzQwLDE0IEBAIHZvaWQgTm9uU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoU3BlY3VsYXQK
ICAgICAgICAgY29tcGFyZShub2RlLCBNYWNyb0Fzc2VtYmxlcjo6TGVzc1RoYW5PckVxdWFsLCBv
cGVyYXRpb25Db21wYXJlTGVzc0VxKTsKICAgICAgICAgYnJlYWs7CiAgICAgICAgIAorICAgIGNh
c2UgQ29tcGFyZUdyZWF0ZXI6CisgICAgICAgIGNvbXBhcmUobm9kZSwgTWFjcm9Bc3NlbWJsZXI6
OkdyZWF0ZXJUaGFuLCBvcGVyYXRpb25Db21wYXJlR3JlYXRlcik7CisgICAgICAgIGJyZWFrOwor
ICAgICAgICAKKyAgICBjYXNlIENvbXBhcmVHcmVhdGVyRXE6CisgICAgICAgIGNvbXBhcmUobm9k
ZSwgTWFjcm9Bc3NlbWJsZXI6OkdyZWF0ZXJUaGFuT3JFcXVhbCwgb3BlcmF0aW9uQ29tcGFyZUdy
ZWF0ZXJFcSk7CisgICAgICAgIGJyZWFrOworICAgICAgICAKICAgICBjYXNlIENvbXBhcmVFcToK
ICAgICAgICAgY29tcGFyZShub2RlLCBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIG9wZXJhdGlvbkNv
bXBhcmVFcSk7CiAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdOb25TcGVjdWxhdGl2ZUpJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTm9uU3BlY3VsYXRpdmVKSVQuaAkocmV2aXNpb24gOTAzNTIpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vblNwZWN1bGF0aXZlSklULmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEwMiw4ICsxMDIsOCBAQCBwcml2YXRlOgogICAgIC8vIGludGVybmFsIGhlbHBlcnMg
Zm9yIGFkZC9zdWIvbXVsIG9wZXJhdGlvbnMKICAgICB2b2lkIGtub3duQ29uc3RhbnRBcml0aE9w
KE5vZGVUeXBlIG9wLCBOb2RlSW5kZXggcmVnQ2hpbGQsIE5vZGVJbmRleCBpbW1DaGlsZCwgYm9v
bCBjb21tdXRlKTsKICAgICB2b2lkIGJhc2ljQXJpdGhPcChOb2RlVHlwZSBvcCwgTm9kZSYpOwot
ICAgIHZvaWQgY29tcGFyZShOb2RlJiwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxDb25kaXRp
b24sIGNvbnN0IFpfREZHT3BlcmF0aW9uX0VKSiYpOwotICAgIAorICAgIHZvaWQgY29tcGFyZShO
b2RlJiwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxDb25kaXRpb24sIFpfREZHT3BlcmF0aW9u
X0VKSik7CisKICAgICBFbnRyeUxvY2F0aW9uVmVjdG9yIG1fZW50cnlMb2NhdGlvbnM7CiB9Owog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJKHJl
dmlzaW9uIDkwMzUyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25z
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzc3LDYgKzM3NywxNiBAQCBib29sIG9wZXJhdGlvbkNv
bXBhcmVMZXNzRXEoRXhlY1N0YXRlKiBlCiAgICAgcmV0dXJuIGpzTGVzc0VxKGV4ZWMsIEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkT3AxKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpKTsKIH0K
IAorYm9vbCBvcGVyYXRpb25Db21wYXJlR3JlYXRlcihFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIpCit7CisgICAgcmV0
dXJuIGpzTGVzcyhleGVjLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMiksIEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkT3AxKSk7IC8vIEZJWE1FOiBCdWcjNjM4ODAKK30KKworYm9vbCBvcGVyYXRp
b25Db21wYXJlR3JlYXRlckVxKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMikKK3sKKyAgICByZXR1cm4ganNMZXNzRXEo
ZXhlYywgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZE9wMSkpOyAvLyBGSVhNRTogQnVnIzYzODgwCit9CisKIGJvb2wgb3BlcmF0aW9uQ29tcGFyZUVx
KEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZE9wMikKIHsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZXF1YWwoZXhlYywgSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRPcDEpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMikpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgJKHJldmlzaW9uIDkw
MzUyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgJKHdvcmtp
bmcgY29weSkKQEAgLTc2LDYgKzc2LDggQEAgdm9pZCBvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3Ry
aWN0T3B0aW1pegogdm9pZCBvcGVyYXRpb25QdXRCeUlkRGlyZWN0Tm9uU3RyaWN0T3B0aW1pemUo
RXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkQmFzZSwgSWRlbnRpZmllciopOwogYm9vbCBvcGVyYXRpb25Db21wYXJlTGVzcyhFeGVj
U3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
T3AyKTsKIGJvb2wgb3BlcmF0aW9uQ29tcGFyZUxlc3NFcShFeGVjU3RhdGUqLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKTsKK2Jvb2wgb3BlcmF0
aW9uQ29tcGFyZUdyZWF0ZXIoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMik7Citib29sIG9wZXJhdGlvbkNvbXBhcmVHcmVhdGVy
RXEoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZE9wMik7CiBib29sIG9wZXJhdGlvbkNvbXBhcmVFcShFeGVjU3RhdGUqLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKTsKIGJvb2wgb3Bl
cmF0aW9uQ29tcGFyZVN0cmljdEVxKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRP
cDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24gOTAzNTIpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDEzLDYgKzQxMyw0MCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
UGVlcEhvbGVDYWxsCiAgICAgICAgIGFkZEJyYW5jaChtX2ppdC5qdW1wKCksIG5vdFRha2VuKTsK
IH0KIAorLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBjb21wYXJlIGlzIGZ1c2VkIHdpdGggYSBzdWJz
ZXF1ZW50IGJyYW5jaC4KK2Jvb2wgU3BlY3VsYXRpdmVKSVQ6OmNvbXBhcmUoTm9kZSYgbm9kZSwg
TWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxDb25kaXRpb24gY29uZGl0aW9uLCBaX0RGR09wZXJh
dGlvbl9FSkogb3BlcmF0aW9uKQoreworICAgIC8vIEZ1c2VkIGNvbXBhcmUgJiBicmFuY2guCisg
ICAgTm9kZUluZGV4IGJyYW5jaE5vZGVJbmRleCA9IGRldGVjdFBlZXBIb2xlQnJhbmNoKCk7Cisg
ICAgaWYgKGJyYW5jaE5vZGVJbmRleCAhPSBOb05vZGUpIHsKKyAgICAgICAgLy8gZGV0ZWN0UGVl
cEhvbGVCcmFuY2ggY3VycmVudGx5IG9ubHkgcGVybWl0cyB0aGUgYnJhbmNoIHRvIGJlIHRoZSB2
ZXJ5IG5leHQgbm9kZSwKKyAgICAgICAgLy8gc28gY2FuIGJlIG5vIGludGVydmVuaW5nIG5vZGVz
IHRvIGFsc28gcmVmZXJlbmNlIHRoZSBjb21wYXJlLiAKKyAgICAgICAgQVNTRVJUKG5vZGUuYWRq
dXN0ZWRSZWZDb3VudCgpID09IDEpOworCisgICAgICAgIGlmIChzaG91bGRTcGVjdWxhdGVJbnRl
Z2VyKG5vZGUuY2hpbGQxLCBub2RlLmNoaWxkMikpCisgICAgICAgICAgICBjb21waWxlUGVlcEhv
bGVJbnRlZ2VyQnJhbmNoKG5vZGUsIGJyYW5jaE5vZGVJbmRleCwgY29uZGl0aW9uKTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgY29tcGlsZVBlZXBIb2xlQ2FsbChub2RlLCBicmFuY2hOb2Rl
SW5kZXgsIG9wZXJhdGlvbik7CisKKyAgICAgICAgdXNlKG5vZGUuY2hpbGQxKTsKKyAgICAgICAg
dXNlKG5vZGUuY2hpbGQyKTsKKyAgICAgICAgbV9jb21waWxlSW5kZXggPSBicmFuY2hOb2RlSW5k
ZXg7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIC8vIE5vcm1hbCBjYXNlLCBu
b3QgZnVzZWQgdG8gYnJhbmNoLgorICAgIFNwZWN1bGF0ZUludGVnZXJPcGVyYW5kIG9wMSh0aGlz
LCBub2RlLmNoaWxkMSk7CisgICAgU3BlY3VsYXRlSW50ZWdlck9wZXJhbmQgb3AyKHRoaXMsIG5v
ZGUuY2hpbGQyKTsKKyAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIG9wMSwgb3AyKTsKKwor
ICAgIG1faml0LmNvbXBhcmUzMihjb25kaXRpb24sIG9wMS5ncHIoKSwgb3AyLmdwcigpLCByZXN1
bHQuZ3ByKCkpOworCisgICAgLy8gSWYgd2UgYWRkIGEgRGF0YUZvcm1hdEJvb2wsIHdlIHNob3Vs
ZCB1c2UgaXQgaGVyZS4KKyAgICBtX2ppdC5vcjMyKFRydXN0ZWRJbW0zMihWYWx1ZUZhbHNlKSwg
cmVzdWx0LmdwcigpKTsKKyAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdC5ncHIoKSwgbV9jb21waWxl
SW5kZXgpOworICAgIHJldHVybiBmYWxzZTsKK30KKwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZShOb2RlJiBub2RlKQogewogICAgIE5vZGVUeXBlIG9wID0gbm9kZS5vcDsKQEAgLTczOCwx
MDAgKzc3MiwzMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAg
ICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIGNhc2UgQ29tcGFyZUxlc3M6IHsKLSAgICAgICAg
Ly8gRnVzZWQgY29tcGFyZSAmIGJyYW5jaC4KLSAgICAgICAgTm9kZUluZGV4IGJyYW5jaE5vZGVJ
bmRleCA9IGRldGVjdFBlZXBIb2xlQnJhbmNoKCk7Ci0gICAgICAgIGlmIChicmFuY2hOb2RlSW5k
ZXggIT0gTm9Ob2RlKSB7Ci0gICAgICAgICAgICAvLyBkZXRlY3RQZWVwSG9sZUJyYW5jaCBjdXJy
ZW50bHkgb25seSBwZXJtaXRzIHRoZSBicmFuY2ggdG8gYmUgdGhlIHZlcnkgbmV4dCBub2RlLAot
ICAgICAgICAgICAgLy8gc28gY2FuIGJlIG5vIGludGVydmVuaW5nIG5vZGVzIHRvIGFsc28gcmVm
ZXJlbmNlIHRoZSBjb21wYXJlLiAKLSAgICAgICAgICAgIEFTU0VSVChub2RlLmFkanVzdGVkUmVm
Q291bnQoKSA9PSAxKTsKLQotICAgICAgICAgICAgaWYgKHNob3VsZFNwZWN1bGF0ZUludGVnZXIo
bm9kZS5jaGlsZDEsIG5vZGUuY2hpbGQyKSkKLSAgICAgICAgICAgICAgICBjb21waWxlUGVlcEhv
bGVJbnRlZ2VyQnJhbmNoKG5vZGUsIGJyYW5jaE5vZGVJbmRleCwgSklUQ29tcGlsZXI6Okxlc3NU
aGFuKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBjb21waWxlUGVlcEhvbGVD
YWxsKG5vZGUsIGJyYW5jaE5vZGVJbmRleCwgb3BlcmF0aW9uQ29tcGFyZUxlc3MpOwotCi0gICAg
ICAgICAgICB1c2Uobm9kZS5jaGlsZDEpOwotICAgICAgICAgICAgdXNlKG5vZGUuY2hpbGQyKTsK
LSAgICAgICAgICAgIG1fY29tcGlsZUluZGV4ID0gYnJhbmNoTm9kZUluZGV4OworICAgIGNhc2Ug
Q29tcGFyZUxlc3M6CisgICAgICAgIGlmIChjb21wYXJlKG5vZGUsIEpJVENvbXBpbGVyOjpMZXNz
VGhhbiwgb3BlcmF0aW9uQ29tcGFyZUxlc3MpKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICB9Ci0KLSAgICAgICAgLy8gTm9ybWFsIGNhc2UsIG5vdCBmdXNlZCB0byBicmFuY2guCi0gICAg
ICAgIFNwZWN1bGF0ZUludGVnZXJPcGVyYW5kIG9wMSh0aGlzLCBub2RlLmNoaWxkMSk7Ci0gICAg
ICAgIFNwZWN1bGF0ZUludGVnZXJPcGVyYW5kIG9wMih0aGlzLCBub2RlLmNoaWxkMik7Ci0gICAg
ICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgb3AxLCBvcDIpOwotCi0gICAgICAgIG1faml0
LmNvbXBhcmUzMihKSVRDb21waWxlcjo6TGVzc1RoYW4sIG9wMS5ncHIoKSwgb3AyLmdwcigpLCBy
ZXN1bHQuZ3ByKCkpOwotCi0gICAgICAgIC8vIElmIHdlIGFkZCBhIERhdGFGb3JtYXRCb29sLCB3
ZSBzaG91bGQgdXNlIGl0IGhlcmUuCi0gICAgICAgIG1faml0Lm9yMzIoVHJ1c3RlZEltbTMyKFZh
bHVlRmFsc2UpLCByZXN1bHQuZ3ByKCkpOwotICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdC5n
cHIoKSwgbV9jb21waWxlSW5kZXgpOwogICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBjYXNl
IENvbXBhcmVMZXNzRXE6IHsKLSAgICAgICAgLy8gRnVzZWQgY29tcGFyZSAmIGJyYW5jaC4KLSAg
ICAgICAgTm9kZUluZGV4IGJyYW5jaE5vZGVJbmRleCA9IGRldGVjdFBlZXBIb2xlQnJhbmNoKCk7
Ci0gICAgICAgIGlmIChicmFuY2hOb2RlSW5kZXggIT0gTm9Ob2RlKSB7Ci0gICAgICAgICAgICAv
LyBkZXRlY3RQZWVwSG9sZUJyYW5jaCBjdXJyZW50bHkgb25seSBwZXJtaXRzIHRoZSBicmFuY2gg
dG8gYmUgdGhlIHZlcnkgbmV4dCBub2RlLAotICAgICAgICAgICAgLy8gc28gY2FuIGJlIG5vIGlu
dGVydmVuaW5nIG5vZGVzIHRvIGFsc28gcmVmZXJlbmNlIHRoZSBjb21wYXJlLiAKLSAgICAgICAg
ICAgIEFTU0VSVChub2RlLmFkanVzdGVkUmVmQ291bnQoKSA9PSAxKTsKIAotICAgICAgICAgICAg
aWYgKHNob3VsZFNwZWN1bGF0ZUludGVnZXIobm9kZS5jaGlsZDEsIG5vZGUuY2hpbGQyKSkKLSAg
ICAgICAgICAgICAgICBjb21waWxlUGVlcEhvbGVJbnRlZ2VyQnJhbmNoKG5vZGUsIGJyYW5jaE5v
ZGVJbmRleCwgSklUQ29tcGlsZXI6Okxlc3NUaGFuT3JFcXVhbCk7Ci0gICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgY29tcGlsZVBlZXBIb2xlQ2FsbChub2RlLCBicmFuY2hOb2RlSW5k
ZXgsIG9wZXJhdGlvbkNvbXBhcmVMZXNzRXEpOwotCi0gICAgICAgICAgICB1c2Uobm9kZS5jaGls
ZDEpOwotICAgICAgICAgICAgdXNlKG5vZGUuY2hpbGQyKTsKLSAgICAgICAgICAgIG1fY29tcGls
ZUluZGV4ID0gYnJhbmNoTm9kZUluZGV4OworICAgIGNhc2UgQ29tcGFyZUxlc3NFcToKKyAgICAg
ICAgaWYgKGNvbXBhcmUobm9kZSwgSklUQ29tcGlsZXI6Okxlc3NUaGFuT3JFcXVhbCwgb3BlcmF0
aW9uQ29tcGFyZUxlc3NFcSkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAg
ICAgICAvLyBOb3JtYWwgY2FzZSwgbm90IGZ1c2VkIHRvIGJyYW5jaC4KLSAgICAgICAgU3BlY3Vs
YXRlSW50ZWdlck9wZXJhbmQgb3AxKHRoaXMsIG5vZGUuY2hpbGQxKTsKLSAgICAgICAgU3BlY3Vs
YXRlSW50ZWdlck9wZXJhbmQgb3AyKHRoaXMsIG5vZGUuY2hpbGQyKTsKLSAgICAgICAgR1BSVGVt
cG9yYXJ5IHJlc3VsdCh0aGlzLCBvcDEsIG9wMik7Ci0KLSAgICAgICAgbV9qaXQuY29tcGFyZTMy
KEpJVENvbXBpbGVyOjpMZXNzVGhhbk9yRXF1YWwsIG9wMS5ncHIoKSwgb3AyLmdwcigpLCByZXN1
bHQuZ3ByKCkpOwotCi0gICAgICAgIC8vIElmIHdlIGFkZCBhIERhdGFGb3JtYXRCb29sLCB3ZSBz
aG91bGQgdXNlIGl0IGhlcmUuCi0gICAgICAgIG1faml0Lm9yMzIoVHJ1c3RlZEltbTMyKFZhbHVl
RmFsc2UpLCByZXN1bHQuZ3ByKCkpOwotICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdC5ncHIo
KSwgbV9jb21waWxlSW5kZXgpOwogICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBjYXNlIENv
bXBhcmVFcTogewotICAgICAgICAvLyBGdXNlZCBjb21wYXJlICYgYnJhbmNoLgotICAgICAgICBO
b2RlSW5kZXggYnJhbmNoTm9kZUluZGV4ID0gZGV0ZWN0UGVlcEhvbGVCcmFuY2goKTsKLSAgICAg
ICAgaWYgKGJyYW5jaE5vZGVJbmRleCAhPSBOb05vZGUpIHsKLSAgICAgICAgICAgIC8vIGRldGVj
dFBlZXBIb2xlQnJhbmNoIGN1cnJlbnRseSBvbmx5IHBlcm1pdHMgdGhlIGJyYW5jaCB0byBiZSB0
aGUgdmVyeSBuZXh0IG5vZGUsCi0gICAgICAgICAgICAvLyBzbyBjYW4gYmUgbm8gaW50ZXJ2ZW5p
bmcgbm9kZXMgdG8gYWxzbyByZWZlcmVuY2UgdGhlIGNvbXBhcmUuIAotICAgICAgICAgICAgQVNT
RVJUKG5vZGUuYWRqdXN0ZWRSZWZDb3VudCgpID09IDEpOwotCi0gICAgICAgICAgICBpZiAoc2hv
dWxkU3BlY3VsYXRlSW50ZWdlcihub2RlLmNoaWxkMSwgbm9kZS5jaGlsZDIpKQotICAgICAgICAg
ICAgICAgIGNvbXBpbGVQZWVwSG9sZUludGVnZXJCcmFuY2gobm9kZSwgYnJhbmNoTm9kZUluZGV4
LCBKSVRDb21waWxlcjo6RXF1YWwpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAg
IGNvbXBpbGVQZWVwSG9sZUNhbGwobm9kZSwgYnJhbmNoTm9kZUluZGV4LCBvcGVyYXRpb25Db21w
YXJlRXEpOwogCi0gICAgICAgICAgICB1c2Uobm9kZS5jaGlsZDEpOwotICAgICAgICAgICAgdXNl
KG5vZGUuY2hpbGQyKTsKLSAgICAgICAgICAgIG1fY29tcGlsZUluZGV4ID0gYnJhbmNoTm9kZUlu
ZGV4OworICAgIGNhc2UgQ29tcGFyZUdyZWF0ZXI6CisgICAgICAgIGlmIChjb21wYXJlKG5vZGUs
IEpJVENvbXBpbGVyOjpHcmVhdGVyVGhhbiwgb3BlcmF0aW9uQ29tcGFyZUdyZWF0ZXIpKQogICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgU3BlY3VsYXRlSW50ZWdlck9w
ZXJhbmQgb3AxKHRoaXMsIG5vZGUuY2hpbGQxKTsKLSAgICAgICAgU3BlY3VsYXRlSW50ZWdlck9w
ZXJhbmQgb3AyKHRoaXMsIG5vZGUuY2hpbGQyKTsKLSAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3Vs
dCh0aGlzLCBvcDEsIG9wMik7CisgICAgICAgIGJyZWFrOwogCi0gICAgICAgIG1faml0LmNvbXBh
cmUzMihKSVRDb21waWxlcjo6RXF1YWwsIG9wMS5ncHIoKSwgb3AyLmdwcigpLCByZXN1bHQuZ3By
KCkpOworICAgIGNhc2UgQ29tcGFyZUdyZWF0ZXJFcToKKyAgICAgICAgaWYgKGNvbXBhcmUobm9k
ZSwgSklUQ29tcGlsZXI6OkdyZWF0ZXJUaGFuT3JFcXVhbCwgb3BlcmF0aW9uQ29tcGFyZUdyZWF0
ZXJFcSkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGJyZWFrOwogCi0gICAgICAgIC8v
IElmIHdlIGFkZCBhIERhdGFGb3JtYXRCb29sLCB3ZSBzaG91bGQgdXNlIGl0IGhlcmUuCi0gICAg
ICAgIG1faml0Lm9yMzIoVHJ1c3RlZEltbTMyKFZhbHVlRmFsc2UpLCByZXN1bHQuZ3ByKCkpOwot
ICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdC5ncHIoKSwgbV9jb21waWxlSW5kZXgpOworICAg
IGNhc2UgQ29tcGFyZUVxOgorICAgICAgICBpZiAoY29tcGFyZShub2RlLCBKSVRDb21waWxlcjo6
RXF1YWwsIG9wZXJhdGlvbkNvbXBhcmVFcSkpCisgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IGJyZWFrOwotICAgIH0KIAogICAgIGNhc2UgQ29tcGFyZVN0cmljdEVxOiB7CiAgICAgICAgIFNw
ZWN1bGF0ZUludGVnZXJPcGVyYW5kIG9wMSh0aGlzLCBub2RlLmNoaWxkMSk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCShyZXZpc2lvbiA5
MDM1MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAko
d29ya2luZyBjb3B5KQpAQCAtMTg0LDYgKzE4NCw3IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVy
biAhKGlzRGF0YUZvcm1hdERvdWJsZShvcDEpIHx8IGlzRGF0YUZvcm1hdERvdWJsZShvcDIpKSAm
JiAoaXNJbnRlZ2VyKG9wMSkgfHwgaXNJbnRlZ2VyKG9wMikpOwogICAgIH0KIAorICAgIGJvb2wg
Y29tcGFyZShOb2RlJiwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxDb25kaXRpb24sIFpfREZH
T3BlcmF0aW9uX0VKSik7CiAgICAgdm9pZCBjb21waWxlUGVlcEhvbGVJbnRlZ2VyQnJhbmNoKE5v
ZGUmLCBOb2RlSW5kZXggYnJhbmNoTm9kZUluZGV4LCBKSVRDb21waWxlcjo6UmVsYXRpb25hbENv
bmRpdGlvbik7CiAgICAgdm9pZCBjb21waWxlUGVlcEhvbGVDYWxsKE5vZGUmLCBOb2RlSW5kZXgg
YnJhbmNoTm9kZUluZGV4LCBaX0RGR09wZXJhdGlvbl9FSkopOwogCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHJldmlzaW9u
IDkwMzUyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc5Niw2ICsxNzk2LDQwIEBAIEpTVmFsdWUgSW50ZXJw
cmV0ZXI6OnByaXZhdGVFeGVjdXRlKEV4ZWMKICAgICAgICAgdlBDICs9IE9QQ09ERV9MRU5HVEgo
b3BfbGVzc2VxKTsKICAgICAgICAgTkVYVF9JTlNUUlVDVElPTigpOwogICAgIH0KKyAgICBERUZJ
TkVfT1BDT0RFKG9wX2dyZWF0ZXIpIHsKKyAgICAgICAgLyogZ3JlYXRlciBkc3Qocikgc3JjMShy
KSBzcmMyKHIpCisKKyAgICAgICAgICAgQ2hlY2tzIHdoZXRoZXIgcmVnaXN0ZXIgc3JjMSBpcyBn
cmVhdGVyIHRoYW4gcmVnaXN0ZXIgc3JjMiwgYXMKKyAgICAgICAgICAgd2l0aCB0aGUgRUNNQVNj
cmlwdCAnPicgb3BlcmF0b3IsIGFuZCBwdXRzIHRoZSByZXN1bHQgYXMKKyAgICAgICAgICAgYSBi
b29sZWFuIGluIHJlZ2lzdGVyIGRzdC4KKyAgICAgICAgKi8KKyAgICAgICAgaW50IGRzdCA9IHZQ
Q1sxXS51Lm9wZXJhbmQ7CisgICAgICAgIEpTVmFsdWUgc3JjMSA9IGNhbGxGcmFtZS0+cih2UENb
Ml0udS5vcGVyYW5kKS5qc1ZhbHVlKCk7CisgICAgICAgIEpTVmFsdWUgc3JjMiA9IGNhbGxGcmFt
ZS0+cih2UENbM10udS5vcGVyYW5kKS5qc1ZhbHVlKCk7CisgICAgICAgIEpTVmFsdWUgcmVzdWx0
ID0ganNCb29sZWFuKGpzTGVzcyhjYWxsRnJhbWUsIHNyYzIsIHNyYzEpKTsgLy8gRklYTUU6IEJ1
ZyM2Mzg4MAorICAgICAgICBDSEVDS19GT1JfRVhDRVBUSU9OKCk7CisgICAgICAgIGNhbGxGcmFt
ZS0+dW5jaGVja2VkUihkc3QpID0gcmVzdWx0OworCisgICAgICAgIHZQQyArPSBPUENPREVfTEVO
R1RIKG9wX2dyZWF0ZXIpOworICAgICAgICBORVhUX0lOU1RSVUNUSU9OKCk7CisgICAgfQorICAg
IERFRklORV9PUENPREUob3BfZ3JlYXRlcmVxKSB7CisgICAgICAgIC8qIGdyZWF0ZXJlcSBkc3Qo
cikgc3JjMShyKSBzcmMyKHIpCisKKyAgICAgICAgICAgQ2hlY2tzIHdoZXRoZXIgcmVnaXN0ZXIg
c3JjMSBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8KKyAgICAgICAgICAgcmVnaXN0ZXIgc3Jj
MiwgYXMgd2l0aCB0aGUgRUNNQVNjcmlwdCAnPj0nIG9wZXJhdG9yLCBhbmQKKyAgICAgICAgICAg
cHV0cyB0aGUgcmVzdWx0IGFzIGEgYm9vbGVhbiBpbiByZWdpc3RlciBkc3QuCisgICAgICAgICov
CisgICAgICAgIGludCBkc3QgPSB2UENbMV0udS5vcGVyYW5kOworICAgICAgICBKU1ZhbHVlIHNy
YzEgPSBjYWxsRnJhbWUtPnIodlBDWzJdLnUub3BlcmFuZCkuanNWYWx1ZSgpOworICAgICAgICBK
U1ZhbHVlIHNyYzIgPSBjYWxsRnJhbWUtPnIodlBDWzNdLnUub3BlcmFuZCkuanNWYWx1ZSgpOwor
ICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzQm9vbGVhbihqc0xlc3NFcShjYWxsRnJhbWUsIHNy
YzIsIHNyYzEpKTsgLy8gRklYTUU6IEJ1ZyM2Mzg4MAorICAgICAgICBDSEVDS19GT1JfRVhDRVBU
SU9OKCk7CisgICAgICAgIGNhbGxGcmFtZS0+dW5jaGVja2VkUihkc3QpID0gcmVzdWx0OworCisg
ICAgICAgIHZQQyArPSBPUENPREVfTEVOR1RIKG9wX2dyZWF0ZXJlcSk7CisgICAgICAgIE5FWFRf
SU5TVFJVQ1RJT04oKTsKKyAgICB9CiAgICAgREVGSU5FX09QQ09ERShvcF9wcmVfaW5jKSB7CiAg
ICAgICAgIC8qIHByZV9pbmMgc3JjRHN0KHIpCiAKQEAgLTM2OTMsMzYgKzM3MjcsMTEzIEBAIHNr
aXBfaWRfY3VzdG9tX3NlbGY6CiAgICAgICAgIHZQQyArPSBPUENPREVfTEVOR1RIKG9wX2xvb3Bf
aWZfbGVzc2VxKTsKICAgICAgICAgTkVYVF9JTlNUUlVDVElPTigpOwogICAgIH0KLSAgICBERUZJ
TkVfT1BDT0RFKG9wX2pubGVzcykgewotICAgICAgICAvKiBqbmxlc3Mgc3JjMShyKSBzcmMyKHIp
IHRhcmdldChvZmZzZXQpCisgICAgREVGSU5FX09QQ09ERShvcF9sb29wX2lmX2dyZWF0ZXIpIHsK
KyAgICAgICAgLyogbG9vcF9pZl9ncmVhdGVyIHNyYzEocikgc3JjMihyKSB0YXJnZXQob2Zmc2V0
KQogCi0gICAgICAgICAgIENoZWNrcyB3aGV0aGVyIHJlZ2lzdGVyIHNyYzEgaXMgbGVzcyB0aGFu
IHJlZ2lzdGVyIHNyYzIsIGFzCi0gICAgICAgICAgIHdpdGggdGhlIEVDTUFTY3JpcHQgJzwnIG9w
ZXJhdG9yLCBhbmQgdGhlbiBqdW1wcyB0byBvZmZzZXQKKyAgICAgICAgICAgQ2hlY2tzIHdoZXRo
ZXIgcmVnaXN0ZXIgc3JjMSBpcyBncmVhdGVyIHRoYW4gcmVnaXN0ZXIgc3JjMiwgYXMKKyAgICAg
ICAgICAgd2l0aCB0aGUgRUNNQVNjcmlwdCAnPicgb3BlcmF0b3IsIGFuZCB0aGVuIGp1bXBzIHRv
IG9mZnNldAogICAgICAgICAgICB0YXJnZXQgZnJvbSB0aGUgY3VycmVudCBpbnN0cnVjdGlvbiwg
aWYgYW5kIG9ubHkgaWYgdGhlIAotICAgICAgICAgICByZXN1bHQgb2YgdGhlIGNvbXBhcmlzb24g
aXMgZmFsc2UuCisgICAgICAgICAgIHJlc3VsdCBvZiB0aGUgY29tcGFyaXNvbiBpcyB0cnVlLgor
CisgICAgICAgICAgIEFkZGl0aW9uYWxseSB0aGlzIGxvb3AgaW5zdHJ1Y3Rpb24gbWF5IHRlcm1p
bmF0ZSBKUyBleGVjdXRpb24gaXMKKyAgICAgICAgICAgdGhlIEpTIHRpbWVvdXQgaXMgcmVhY2hl
ZC4KKyAgICAgICAgICovCisgICAgICAgIEpTVmFsdWUgc3JjMSA9IGNhbGxGcmFtZS0+cih2UENb
MV0udS5vcGVyYW5kKS5qc1ZhbHVlKCk7CisgICAgICAgIEpTVmFsdWUgc3JjMiA9IGNhbGxGcmFt
ZS0+cih2UENbMl0udS5vcGVyYW5kKS5qc1ZhbHVlKCk7CisgICAgICAgIGludCB0YXJnZXQgPSB2
UENbM10udS5vcGVyYW5kOworICAgICAgICAKKyAgICAgICAgYm9vbCByZXN1bHQgPSBqc0xlc3Mo
Y2FsbEZyYW1lLCBzcmMyLCBzcmMxKTsgLy8gRklYTUU6IEJ1ZyM2Mzg4MAorICAgICAgICBDSEVD
S19GT1JfRVhDRVBUSU9OKCk7CisgICAgICAgIAorICAgICAgICBpZiAocmVzdWx0KSB7CisgICAg
ICAgICAgICB2UEMgKz0gdGFyZ2V0OworICAgICAgICAgICAgQ0hFQ0tfRk9SX1RJTUVPVVQoKTsK
KyAgICAgICAgICAgIE5FWFRfSU5TVFJVQ1RJT04oKTsKKyAgICAgICAgfQorICAgICAgICAKKyAg
ICAgICAgdlBDICs9IE9QQ09ERV9MRU5HVEgob3BfbG9vcF9pZl9ncmVhdGVyKTsKKyAgICAgICAg
TkVYVF9JTlNUUlVDVElPTigpOworICAgIH0KKyAgICBERUZJTkVfT1BDT0RFKG9wX2xvb3BfaWZf
Z3JlYXRlcmVxKSB7CisgICAgICAgIC8qIGxvb3BfaWZfZ3JlYXRlcmVxIHNyYzEocikgc3JjMihy
KSB0YXJnZXQob2Zmc2V0KQorCisgICAgICAgICAgIENoZWNrcyB3aGV0aGVyIHJlZ2lzdGVyIHNy
YzEgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHJlZ2lzdGVyCisgICAgICAgICAgIHNyYzIs
IGFzIHdpdGggdGhlIEVDTUFTY3JpcHQgJz49JyBvcGVyYXRvciwgYW5kIHRoZW4ganVtcHMgdG8K
KyAgICAgICAgICAgb2Zmc2V0IHRhcmdldCBmcm9tIHRoZSBjdXJyZW50IGluc3RydWN0aW9uLCBp
ZiBhbmQgb25seSBpZiB0aGUgCisgICAgICAgICAgIHJlc3VsdCBvZiB0aGUgY29tcGFyaXNvbiBp
cyB0cnVlLgorCisgICAgICAgICAgIEFkZGl0aW9uYWxseSB0aGlzIGxvb3AgaW5zdHJ1Y3Rpb24g
bWF5IHRlcm1pbmF0ZSBKUyBleGVjdXRpb24gaXMKKyAgICAgICAgICAgdGhlIEpTIHRpbWVvdXQg
aXMgcmVhY2hlZC4KICAgICAgICAgKi8KICAgICAgICAgSlNWYWx1ZSBzcmMxID0gY2FsbEZyYW1l
LT5yKHZQQ1sxXS51Lm9wZXJhbmQpLmpzVmFsdWUoKTsKICAgICAgICAgSlNWYWx1ZSBzcmMyID0g
Y2FsbEZyYW1lLT5yKHZQQ1syXS51Lm9wZXJhbmQpLmpzVmFsdWUoKTsKICAgICAgICAgaW50IHRh
cmdldCA9IHZQQ1szXS51Lm9wZXJhbmQ7CisgICAgICAgIAorICAgICAgICBib29sIHJlc3VsdCA9
IGpzTGVzc0VxKGNhbGxGcmFtZSwgc3JjMiwgc3JjMSk7IC8vIEZJWE1FOiBCdWcjNjM4ODAKKyAg
ICAgICAgQ0hFQ0tfRk9SX0VYQ0VQVElPTigpOworICAgICAgICAKKyAgICAgICAgaWYgKHJlc3Vs
dCkgeworICAgICAgICAgICAgdlBDICs9IHRhcmdldDsKKyAgICAgICAgICAgIENIRUNLX0ZPUl9U
SU1FT1VUKCk7CisgICAgICAgICAgICBORVhUX0lOU1RSVUNUSU9OKCk7CisgICAgICAgIH0KKyAg
ICAgICAgCisgICAgICAgIHZQQyArPSBPUENPREVfTEVOR1RIKG9wX2xvb3BfaWZfZ3JlYXRlcmVx
KTsKKyAgICAgICAgTkVYVF9JTlNUUlVDVElPTigpOworICAgIH0KKyAgICBERUZJTkVfT1BDT0RF
KG9wX2pncmVhdGVyKSB7CisgICAgICAgIC8qIGpncmVhdGVyIHNyYzEocikgc3JjMihyKSB0YXJn
ZXQob2Zmc2V0KQogCi0gICAgICAgIGJvb2wgcmVzdWx0ID0ganNMZXNzKGNhbGxGcmFtZSwgc3Jj
MSwgc3JjMik7CisgICAgICAgICAgIENoZWNrcyB3aGV0aGVyIHJlZ2lzdGVyIHNyYzEgaXMgZ3Jl
YXRlciB0aGFuIHJlZ2lzdGVyIHNyYzIsIGFzCisgICAgICAgICAgIHdpdGggdGhlIEVDTUFTY3Jp
cHQgJz4nIG9wZXJhdG9yLCBhbmQgdGhlbiBqdW1wcyB0byBvZmZzZXQKKyAgICAgICAgICAgdGFy
Z2V0IGZyb20gdGhlIGN1cnJlbnQgaW5zdHJ1Y3Rpb24sIGlmIGFuZCBvbmx5IGlmIHRoZSAKKyAg
ICAgICAgICAgcmVzdWx0IG9mIHRoZSBjb21wYXJpc29uIGlzIHRydWUuCisgICAgICAgICovCisg
ICAgICAgIEpTVmFsdWUgc3JjMSA9IGNhbGxGcmFtZS0+cih2UENbMV0udS5vcGVyYW5kKS5qc1Zh
bHVlKCk7CisgICAgICAgIEpTVmFsdWUgc3JjMiA9IGNhbGxGcmFtZS0+cih2UENbMl0udS5vcGVy
YW5kKS5qc1ZhbHVlKCk7CisgICAgICAgIGludCB0YXJnZXQgPSB2UENbM10udS5vcGVyYW5kOwor
CisgICAgICAgIGJvb2wgcmVzdWx0ID0ganNMZXNzKGNhbGxGcmFtZSwgc3JjMiwgc3JjMSk7IC8v
IEZJWE1FOiBCdWcjNjM4ODAKICAgICAgICAgQ0hFQ0tfRk9SX0VYQ0VQVElPTigpOwogICAgICAg
ICAKLSAgICAgICAgaWYgKCFyZXN1bHQpIHsKKyAgICAgICAgaWYgKHJlc3VsdCkgewogICAgICAg
ICAgICAgdlBDICs9IHRhcmdldDsKICAgICAgICAgICAgIE5FWFRfSU5TVFJVQ1RJT04oKTsKICAg
ICAgICAgfQogCi0gICAgICAgIHZQQyArPSBPUENPREVfTEVOR1RIKG9wX2pubGVzcyk7CisgICAg
ICAgIHZQQyArPSBPUENPREVfTEVOR1RIKG9wX2pncmVhdGVyKTsKKyAgICAgICAgTkVYVF9JTlNU
UlVDVElPTigpOworICAgIH0KKyAgICBERUZJTkVfT1BDT0RFKG9wX2pncmVhdGVyZXEpIHsKKyAg
ICAgICAgLyogamdyZWF0ZXJlcSBzcmMxKHIpIHNyYzIocikgdGFyZ2V0KG9mZnNldCkKKyAgICAg
ICAgIAorICAgICAgICAgQ2hlY2tzIHdoZXRoZXIgcmVnaXN0ZXIgc3JjMSBpcyBncmVhdGVyIHRo
YW4gb3IgZXF1YWwgdG8KKyAgICAgICAgIHJlZ2lzdGVyIHNyYzIsIGFzIHdpdGggdGhlIEVDTUFT
Y3JpcHQgJz49JyBvcGVyYXRvciwKKyAgICAgICAgIGFuZCB0aGVuIGp1bXBzIHRvIG9mZnNldCB0
YXJnZXQgZnJvbSB0aGUgY3VycmVudCBpbnN0cnVjdGlvbiwKKyAgICAgICAgIGlmIGFuZCBvbmx5
IGlmIHRoZSByZXN1bHQgb2YgdGhlIGNvbXBhcmlzb24gaXMgdHJ1ZS4KKyAgICAgICAgICovCisg
ICAgICAgIEpTVmFsdWUgc3JjMSA9IGNhbGxGcmFtZS0+cih2UENbMV0udS5vcGVyYW5kKS5qc1Zh
bHVlKCk7CisgICAgICAgIEpTVmFsdWUgc3JjMiA9IGNhbGxGcmFtZS0+cih2UENbMl0udS5vcGVy
YW5kKS5qc1ZhbHVlKCk7CisgICAgICAgIGludCB0YXJnZXQgPSB2UENbM10udS5vcGVyYW5kOwor
ICAgICAgICAKKyAgICAgICAgYm9vbCByZXN1bHQgPSBqc0xlc3NFcShjYWxsRnJhbWUsIHNyYzIs
IHNyYzEpOyAvLyBGSVhNRTogQnVnIzYzODgwCisgICAgICAgIENIRUNLX0ZPUl9FWENFUFRJT04o
KTsKKyAgICAgICAgCisgICAgICAgIGlmIChyZXN1bHQpIHsKKyAgICAgICAgICAgIHZQQyArPSB0
YXJnZXQ7CisgICAgICAgICAgICBORVhUX0lOU1RSVUNUSU9OKCk7CisgICAgICAgIH0KKyAgICAg
ICAgCisgICAgICAgIHZQQyArPSBPUENPREVfTEVOR1RIKG9wX2pncmVhdGVyZXEpOwogICAgICAg
ICBORVhUX0lOU1RSVUNUSU9OKCk7CiAgICAgfQotICAgIERFRklORV9PUENPREUob3Bfamxlc3Mp
IHsKLSAgICAgICAgLyogamxlc3Mgc3JjMShyKSBzcmMyKHIpIHRhcmdldChvZmZzZXQpCisgICAg
REVGSU5FX09QQ09ERShvcF9qbmxlc3MpIHsKKyAgICAgICAgLyogam5sZXNzIHNyYzEocikgc3Jj
MihyKSB0YXJnZXQob2Zmc2V0KQogCiAgICAgICAgICAgIENoZWNrcyB3aGV0aGVyIHJlZ2lzdGVy
IHNyYzEgaXMgbGVzcyB0aGFuIHJlZ2lzdGVyIHNyYzIsIGFzCiAgICAgICAgICAgIHdpdGggdGhl
IEVDTUFTY3JpcHQgJzwnIG9wZXJhdG9yLCBhbmQgdGhlbiBqdW1wcyB0byBvZmZzZXQKICAgICAg
ICAgICAgdGFyZ2V0IGZyb20gdGhlIGN1cnJlbnQgaW5zdHJ1Y3Rpb24sIGlmIGFuZCBvbmx5IGlm
IHRoZSAKLSAgICAgICAgICAgcmVzdWx0IG9mIHRoZSBjb21wYXJpc29uIGlzIHRydWUuCisgICAg
ICAgICAgIHJlc3VsdCBvZiB0aGUgY29tcGFyaXNvbiBpcyBmYWxzZS4KICAgICAgICAgKi8KICAg
ICAgICAgSlNWYWx1ZSBzcmMxID0gY2FsbEZyYW1lLT5yKHZQQ1sxXS51Lm9wZXJhbmQpLmpzVmFs
dWUoKTsKICAgICAgICAgSlNWYWx1ZSBzcmMyID0gY2FsbEZyYW1lLT5yKHZQQ1syXS51Lm9wZXJh
bmQpLmpzVmFsdWUoKTsKQEAgLTM3MzEsMTIgKzM4NDIsMTIgQEAgc2tpcF9pZF9jdXN0b21fc2Vs
ZjoKICAgICAgICAgYm9vbCByZXN1bHQgPSBqc0xlc3MoY2FsbEZyYW1lLCBzcmMxLCBzcmMyKTsK
ICAgICAgICAgQ0hFQ0tfRk9SX0VYQ0VQVElPTigpOwogICAgICAgICAKLSAgICAgICAgaWYgKHJl
c3VsdCkgeworICAgICAgICBpZiAoIXJlc3VsdCkgewogICAgICAgICAgICAgdlBDICs9IHRhcmdl
dDsKICAgICAgICAgICAgIE5FWFRfSU5TVFJVQ1RJT04oKTsKICAgICAgICAgfQogCi0gICAgICAg
IHZQQyArPSBPUENPREVfTEVOR1RIKG9wX2psZXNzKTsKKyAgICAgICAgdlBDICs9IE9QQ09ERV9M
RU5HVEgob3Bfam5sZXNzKTsKICAgICAgICAgTkVYVF9JTlNUUlVDVElPTigpOwogICAgIH0KICAg
ICBERUZJTkVfT1BDT0RFKG9wX2pubGVzc2VxKSB7CkBAIC0zNzYyLDI3ICszODczLDUwIEBAIHNr
aXBfaWRfY3VzdG9tX3NlbGY6CiAgICAgICAgIHZQQyArPSBPUENPREVfTEVOR1RIKG9wX2pubGVz
c2VxKTsKICAgICAgICAgTkVYVF9JTlNUUlVDVElPTigpOwogICAgIH0KLSAgICBERUZJTkVfT1BD
T0RFKG9wX2psZXNzZXEpIHsKLSAgICAgICAgLyogamxlc3NlcSBzcmMxKHIpIHNyYzIocikgdGFy
Z2V0KG9mZnNldCkKLSAgICAgICAgIAotICAgICAgICAgQ2hlY2tzIHdoZXRoZXIgcmVnaXN0ZXIg
c3JjMSBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8KLSAgICAgICAgIHJlZ2lzdGVyIHNyYzIsIGFz
IHdpdGggdGhlIEVDTUFTY3JpcHQgJzw9JyBvcGVyYXRvciwKLSAgICAgICAgIGFuZCB0aGVuIGp1
bXBzIHRvIG9mZnNldCB0YXJnZXQgZnJvbSB0aGUgY3VycmVudCBpbnN0cnVjdGlvbiwKLSAgICAg
ICAgIGlmIGFuZCBvbmx5IGlmIHRoZSByZXN1bHQgb2YgdGhlIGNvbXBhcmlzb24gaXMgdHJ1ZS4K
LSAgICAgICAgICovCisgICAgREVGSU5FX09QQ09ERShvcF9qbmdyZWF0ZXIpIHsKKyAgICAgICAg
Lyogam5ncmVhdGVyIHNyYzEocikgc3JjMihyKSB0YXJnZXQob2Zmc2V0KQorCisgICAgICAgICAg
IENoZWNrcyB3aGV0aGVyIHJlZ2lzdGVyIHNyYzEgaXMgZ3JlYXRlciB0aGFuIHJlZ2lzdGVyIHNy
YzIsIGFzCisgICAgICAgICAgIHdpdGggdGhlIEVDTUFTY3JpcHQgJz4nIG9wZXJhdG9yLCBhbmQg
dGhlbiBqdW1wcyB0byBvZmZzZXQKKyAgICAgICAgICAgdGFyZ2V0IGZyb20gdGhlIGN1cnJlbnQg
aW5zdHJ1Y3Rpb24sIGlmIGFuZCBvbmx5IGlmIHRoZSAKKyAgICAgICAgICAgcmVzdWx0IG9mIHRo
ZSBjb21wYXJpc29uIGlzIGZhbHNlLgorICAgICAgICAqLwogICAgICAgICBKU1ZhbHVlIHNyYzEg
PSBjYWxsRnJhbWUtPnIodlBDWzFdLnUub3BlcmFuZCkuanNWYWx1ZSgpOwogICAgICAgICBKU1Zh
bHVlIHNyYzIgPSBjYWxsRnJhbWUtPnIodlBDWzJdLnUub3BlcmFuZCkuanNWYWx1ZSgpOwogICAg
ICAgICBpbnQgdGFyZ2V0ID0gdlBDWzNdLnUub3BlcmFuZDsKLSAgICAgICAgCi0gICAgICAgIGJv
b2wgcmVzdWx0ID0ganNMZXNzRXEoY2FsbEZyYW1lLCBzcmMxLCBzcmMyKTsKKworICAgICAgICBi
b29sIHJlc3VsdCA9IGpzTGVzcyhjYWxsRnJhbWUsIHNyYzIsIHNyYzEpOyAvLyBGSVhNRTogQnVn
IzYzODgwCiAgICAgICAgIENIRUNLX0ZPUl9FWENFUFRJT04oKTsKICAgICAgICAgCi0gICAgICAg
IGlmIChyZXN1bHQpIHsKKyAgICAgICAgaWYgKCFyZXN1bHQpIHsKICAgICAgICAgICAgIHZQQyAr
PSB0YXJnZXQ7CiAgICAgICAgICAgICBORVhUX0lOU1RSVUNUSU9OKCk7CiAgICAgICAgIH0KKwor
ICAgICAgICB2UEMgKz0gT1BDT0RFX0xFTkdUSChvcF9qbmdyZWF0ZXIpOworICAgICAgICBORVhU
X0lOU1RSVUNUSU9OKCk7CisgICAgfQorICAgIERFRklORV9PUENPREUob3Bfam5ncmVhdGVyZXEp
IHsKKyAgICAgICAgLyogam5ncmVhdGVyZXEgc3JjMShyKSBzcmMyKHIpIHRhcmdldChvZmZzZXQp
CisKKyAgICAgICAgICAgQ2hlY2tzIHdoZXRoZXIgcmVnaXN0ZXIgc3JjMSBpcyBncmVhdGVyIHRo
YW4gb3IgZXF1YWwgdG8KKyAgICAgICAgICAgcmVnaXN0ZXIgc3JjMiwgYXMgd2l0aCB0aGUgRUNN
QVNjcmlwdCAnPj0nIG9wZXJhdG9yLAorICAgICAgICAgICBhbmQgdGhlbiBqdW1wcyB0byBvZmZz
ZXQgdGFyZ2V0IGZyb20gdGhlIGN1cnJlbnQgaW5zdHJ1Y3Rpb24sCisgICAgICAgICAgIGlmIGFu
ZCBvbmx5IGlmIHRoZXJlc3VsdCBvZiB0aGUgY29tcGFyaXNvbiBpcyBmYWxzZS4KKyAgICAgICAg
Ki8KKyAgICAgICAgSlNWYWx1ZSBzcmMxID0gY2FsbEZyYW1lLT5yKHZQQ1sxXS51Lm9wZXJhbmQp
LmpzVmFsdWUoKTsKKyAgICAgICAgSlNWYWx1ZSBzcmMyID0gY2FsbEZyYW1lLT5yKHZQQ1syXS51
Lm9wZXJhbmQpLmpzVmFsdWUoKTsKKyAgICAgICAgaW50IHRhcmdldCA9IHZQQ1szXS51Lm9wZXJh
bmQ7CisKKyAgICAgICAgYm9vbCByZXN1bHQgPSBqc0xlc3NFcShjYWxsRnJhbWUsIHNyYzIsIHNy
YzEpOyAvLyBGSVhNRTogQnVnIzYzODgwCisgICAgICAgIENIRUNLX0ZPUl9FWENFUFRJT04oKTsK
ICAgICAgICAgCi0gICAgICAgIHZQQyArPSBPUENPREVfTEVOR1RIKG9wX2psZXNzZXEpOworICAg
ICAgICBpZiAoIXJlc3VsdCkgeworICAgICAgICAgICAgdlBDICs9IHRhcmdldDsKKyAgICAgICAg
ICAgIE5FWFRfSU5TVFJVQ1RJT04oKTsKKyAgICAgICAgfQorCisgICAgICAgIHZQQyArPSBPUENP
REVfTEVOR1RIKG9wX2puZ3JlYXRlcmVxKTsKICAgICAgICAgTkVYVF9JTlNUUlVDVElPTigpOwog
ICAgIH0KICAgICBERUZJTkVfT1BDT0RFKG9wX3N3aXRjaF9pbW0pIHsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5jcHAJKHJldmlzaW9uIDkwMzUyKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTgsNiArMTk4LDggQEAgdm9pZCBK
SVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfQklOQVJZX09QKG9w
X2luKQogICAgICAgICBERUZJTkVfQklOQVJZX09QKG9wX2xlc3MpCiAgICAgICAgIERFRklORV9C
SU5BUllfT1Aob3BfbGVzc2VxKQorICAgICAgICBERUZJTkVfQklOQVJZX09QKG9wX2dyZWF0ZXIp
CisgICAgICAgIERFRklORV9CSU5BUllfT1Aob3BfZ3JlYXRlcmVxKQogICAgICAgICBERUZJTkVf
VU5BUllfT1Aob3BfaXNfYm9vbGVhbikKICAgICAgICAgREVGSU5FX1VOQVJZX09QKG9wX2lzX2Z1
bmN0aW9uKQogICAgICAgICBERUZJTkVfVU5BUllfT1Aob3BfaXNfbnVtYmVyKQpAQCAtMjQ5LDE2
ICsyNTEsMjIgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBE
RUZJTkVfT1Aob3Bfam1wX3Njb3BlcykKICAgICAgICAgREVGSU5FX09QKG9wX2puZXFfbnVsbCkK
ICAgICAgICAgREVGSU5FX09QKG9wX2puZXFfcHRyKQotICAgICAgICBERUZJTkVfT1Aob3Bfam5s
ZXNzKQogICAgICAgICBERUZJTkVfT1Aob3Bfamxlc3MpCiAgICAgICAgIERFRklORV9PUChvcF9q
bGVzc2VxKQorICAgICAgICBERUZJTkVfT1Aob3BfamdyZWF0ZXIpCisgICAgICAgIERFRklORV9P
UChvcF9qZ3JlYXRlcmVxKQorICAgICAgICBERUZJTkVfT1Aob3Bfam5sZXNzKQogICAgICAgICBE
RUZJTkVfT1Aob3Bfam5sZXNzZXEpCisgICAgICAgIERFRklORV9PUChvcF9qbmdyZWF0ZXIpCisg
ICAgICAgIERFRklORV9PUChvcF9qbmdyZWF0ZXJlcSkKICAgICAgICAgREVGSU5FX09QKG9wX2pz
cikKICAgICAgICAgREVGSU5FX09QKG9wX2p0cnVlKQogICAgICAgICBERUZJTkVfT1Aob3BfbG9h
ZF92YXJhcmdzKQogICAgICAgICBERUZJTkVfT1Aob3BfbG9vcCkKICAgICAgICAgREVGSU5FX09Q
KG9wX2xvb3BfaWZfbGVzcykKICAgICAgICAgREVGSU5FX09QKG9wX2xvb3BfaWZfbGVzc2VxKQor
ICAgICAgICBERUZJTkVfT1Aob3BfbG9vcF9pZl9ncmVhdGVyKQorICAgICAgICBERUZJTkVfT1Ao
b3BfbG9vcF9pZl9ncmVhdGVyZXEpCiAgICAgICAgIERFRklORV9PUChvcF9sb29wX2lmX3RydWUp
CiAgICAgICAgIERFRklORV9PUChvcF9sb29wX2lmX2ZhbHNlKQogICAgICAgICBERUZJTkVfT1Ao
b3BfbHNoaWZ0KQpAQCAtNDA1LDE0ICs0MTMsMjAgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxl
U2xvd0Nhc2VzKCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2NoZWNrX2hhc19pbnN0
YW5jZSkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2luc3RhbmNlb2YpCiAgICAgICAg
IERFRklORV9TTE9XQ0FTRV9PUChvcF9qZmFsc2UpCi0gICAgICAgIERFRklORV9TTE9XQ0FTRV9P
UChvcF9qbmxlc3MpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9qbGVzcykKICAgICAg
ICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2psZXNzZXEpCisgICAgICAgIERFRklORV9TTE9XQ0FT
RV9PUChvcF9qZ3JlYXRlcikKKyAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2pncmVhdGVy
ZXEpCisgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9qbmxlc3MpCiAgICAgICAgIERFRklO
RV9TTE9XQ0FTRV9PUChvcF9qbmxlc3NlcSkKKyAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9w
X2puZ3JlYXRlcikKKyAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2puZ3JlYXRlcmVxKQog
ICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfanRydWUpCiAgICAgICAgIERFRklORV9TTE9X
Q0FTRV9PUChvcF9sb2FkX3ZhcmFyZ3MpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9s
b29wX2lmX2xlc3MpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9sb29wX2lmX2xlc3Nl
cSkKKyAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2xvb3BfaWZfZ3JlYXRlcikKKyAgICAg
ICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2xvb3BfaWZfZ3JlYXRlcmVxKQogICAgICAgICBERUZJ
TkVfU0xPV0NBU0VfT1Aob3BfbG9vcF9pZl90cnVlKQogICAgICAgICBERUZJTkVfU0xPV0NBU0Vf
T1Aob3BfbG9vcF9pZl9mYWxzZSkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2xzaGlm
dCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAkocmV2aXNpb24gOTAzNTIpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC03NjMsMTYgKzc2
MywyMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0X29wX2ptcF9zY29wZXMo
SW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2puZXFfbnVsbChJbnN0cnVjdGlv
biopOwogICAgICAgICB2b2lkIGVtaXRfb3Bfam5lcV9wdHIoSW5zdHJ1Y3Rpb24qKTsKLSAgICAg
ICAgdm9pZCBlbWl0X29wX2pubGVzcyhJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRf
b3Bfamxlc3MoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2psZXNzZXEoSW5z
dHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2pncmVhdGVyKEluc3RydWN0aW9uKik7
CisgICAgICAgIHZvaWQgZW1pdF9vcF9qZ3JlYXRlcmVxKEluc3RydWN0aW9uKik7CisgICAgICAg
IHZvaWQgZW1pdF9vcF9qbmxlc3MoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29w
X2pubGVzc2VxKEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9qbmdyZWF0ZXIo
SW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2puZ3JlYXRlcmVxKEluc3RydWN0
aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9qc3IoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAg
dm9pZCBlbWl0X29wX2p0cnVlKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9s
b2FkX3ZhcmFyZ3MoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2xvb3AoSW5z
dHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2xvb3BfaWZfbGVzcyhJbnN0cnVjdGlv
biopOwogICAgICAgICB2b2lkIGVtaXRfb3BfbG9vcF9pZl9sZXNzZXEoSW5zdHJ1Y3Rpb24qKTsK
KyAgICAgICAgdm9pZCBlbWl0X29wX2xvb3BfaWZfZ3JlYXRlcihJbnN0cnVjdGlvbiopOworICAg
ICAgICB2b2lkIGVtaXRfb3BfbG9vcF9pZl9ncmVhdGVyZXEoSW5zdHJ1Y3Rpb24qKTsKICAgICAg
ICAgdm9pZCBlbWl0X29wX2xvb3BfaWZfdHJ1ZShJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lk
IGVtaXRfb3BfbG9vcF9pZl9mYWxzZShJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRf
b3BfbHNoaWZ0KEluc3RydWN0aW9uKik7CkBAIC04NTksMTQgKzg2NSwyMCBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9jaGVja19oYXNfaW5zdGFuY2UoSW5zdHJ1
Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQg
ZW1pdFNsb3dfb3BfaW5zdGFuY2VvZihJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5
Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9qZmFsc2UoSW5zdHJ1Y3Rp
b24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7Ci0gICAgICAgIHZvaWQgZW1p
dFNsb3dfb3Bfam5sZXNzKEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVy
YXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX2psZXNzKEluc3RydWN0aW9uKiwgVmVj
dG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93X29w
X2psZXNzZXEoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7
CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfamdyZWF0ZXIoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8
U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3Bfamdy
ZWF0ZXJlcShJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsK
KyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9qbmxlc3MoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xv
d0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3Bfam5sZXNz
ZXEoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAg
ICAgIHZvaWQgZW1pdFNsb3dfb3Bfam5ncmVhdGVyKEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dD
YXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX2puZ3JlYXRl
cmVxKEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAg
ICAgICB2b2lkIGVtaXRTbG93X29wX2p0cnVlKEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNl
RW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX2xvYWRfdmFyYXJn
cyhJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAg
ICAgdm9pZCBlbWl0U2xvd19vcF9sb29wX2lmX2xlc3MoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xv
d0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfbG9vcF9p
Zl9sZXNzZXEoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7
CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfbG9vcF9pZl9ncmVhdGVyKEluc3RydWN0aW9uKiwg
VmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93
X29wX2xvb3BfaWZfZ3JlYXRlcmVxKEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+
OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX2xvb3BfaWZfdHJ1ZShJbnN0
cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9p
ZCBlbWl0U2xvd19vcF9sb29wX2lmX2ZhbHNlKEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNl
RW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX2xzaGlmdChJbnN0
cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKQEAgLTEwNTQsNiAr
MTA2NiwyOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgZW1pdFNsb3dfb3Bfamxlc3NlcShj
dXJyZW50SW5zdHJ1Y3Rpb24sIGl0ZXIpOwogICAgIH0KIAorICAgIGlubGluZSB2b2lkIEpJVDo6
ZW1pdF9vcF9sb29wX2lmX2dyZWF0ZXIoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
KyAgICB7CisgICAgICAgIGVtaXRUaW1lb3V0Q2hlY2soKTsKKyAgICAgICAgZW1pdF9vcF9qZ3Jl
YXRlcihjdXJyZW50SW5zdHJ1Y3Rpb24pOworICAgIH0KKworICAgIGlubGluZSB2b2lkIEpJVDo6
ZW1pdFNsb3dfb3BfbG9vcF9pZl9ncmVhdGVyKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCisgICAgeworICAgICAg
ICBlbWl0U2xvd19vcF9qZ3JlYXRlcihjdXJyZW50SW5zdHJ1Y3Rpb24sIGl0ZXIpOworICAgIH0K
KworICAgIGlubGluZSB2b2lkIEpJVDo6ZW1pdF9vcF9sb29wX2lmX2dyZWF0ZXJlcShJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQorICAgIHsKKyAgICAgICAgZW1pdFRpbWVvdXRDaGVj
aygpOworICAgICAgICBlbWl0X29wX2pncmVhdGVyZXEoY3VycmVudEluc3RydWN0aW9uKTsKKyAg
ICB9CisKKyAgICBpbmxpbmUgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2xvb3BfaWZfZ3JlYXRlcmVx
KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImIGl0ZXIpCisgICAgeworICAgICAgICBlbWl0U2xvd19vcF9qZ3JlYXRlcmVxKGN1
cnJlbnRJbnN0cnVjdGlvbiwgaXRlcik7CisgICAgfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAog
I2VuZGlmIC8vIEVOQUJMRShKSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VEFyaXRobWV0aWMzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRBcml0aG1ldGljMzJfNjQuY3BwCShyZXZpc2lvbiA5MDM1MikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYzMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtODY0LDEwICs4NjQsNiBAQCB2b2lkIEpJVDo6ZW1pdEJpbmFyeURvdWJsZU9wKE9wY29kZUlE
IG9wCiAgICAgICAgICAgICAgICAgZGl2RG91YmxlKGZwUmVnVDAsIGZwUmVnVDEpOwogICAgICAg
ICAgICAgICAgIGVtaXRTdG9yZURvdWJsZShkc3QsIGZwUmVnVDEpOwogICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgY2FzZSBvcF9qbmxlc3M6Ci0gICAgICAgICAgICAgICAgZW1p
dExvYWREb3VibGUob3AxLCBmcFJlZ1QyKTsKLSAgICAgICAgICAgICAgICBhZGRKdW1wKGJyYW5j
aERvdWJsZShEb3VibGVMZXNzVGhhbk9yRXF1YWxPclVub3JkZXJlZCwgZnBSZWdUMCwgZnBSZWdU
MiksIGRzdCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIG9wX2ps
ZXNzOgogICAgICAgICAgICAgICAgIGVtaXRMb2FkRG91YmxlKG9wMSwgZnBSZWdUMik7CiAgICAg
ICAgICAgICAgICAgYWRkSnVtcChicmFuY2hEb3VibGUoRG91YmxlTGVzc1RoYW4sIGZwUmVnVDIs
IGZwUmVnVDApLCBkc3QpOwpAQCAtODc2LDEwICs4NzIsMzAgQEAgdm9pZCBKSVQ6OmVtaXRCaW5h
cnlEb3VibGVPcChPcGNvZGVJRCBvcAogICAgICAgICAgICAgICAgIGVtaXRMb2FkRG91YmxlKG9w
MSwgZnBSZWdUMik7CiAgICAgICAgICAgICAgICAgYWRkSnVtcChicmFuY2hEb3VibGUoRG91Ymxl
TGVzc1RoYW5PckVxdWFsLCBmcFJlZ1QyLCBmcFJlZ1QwKSwgZHN0KTsKICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIGNhc2Ugb3BfamdyZWF0ZXI6CisgICAgICAgICAgICAgICAg
ZW1pdExvYWREb3VibGUob3AxLCBmcFJlZ1QyKTsKKyAgICAgICAgICAgICAgICBhZGRKdW1wKGJy
YW5jaERvdWJsZShEb3VibGVHcmVhdGVyVGhhbiwgZnBSZWdUMiwgZnBSZWdUMCksIGRzdCk7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIG9wX2pncmVhdGVyZXE6Cisg
ICAgICAgICAgICAgICAgZW1pdExvYWREb3VibGUob3AxLCBmcFJlZ1QyKTsKKyAgICAgICAgICAg
ICAgICBhZGRKdW1wKGJyYW5jaERvdWJsZShEb3VibGVHcmVhdGVyVGhhbk9yRXF1YWwsIGZwUmVn
VDIsIGZwUmVnVDApLCBkc3QpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
Y2FzZSBvcF9qbmxlc3M6CisgICAgICAgICAgICAgICAgZW1pdExvYWREb3VibGUob3AxLCBmcFJl
Z1QyKTsKKyAgICAgICAgICAgICAgICBhZGRKdW1wKGJyYW5jaERvdWJsZShEb3VibGVMZXNzVGhh
bk9yRXF1YWxPclVub3JkZXJlZCwgZnBSZWdUMCwgZnBSZWdUMiksIGRzdCk7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIG9wX2pubGVzc2VxOgogICAgICAgICAgICAg
ICAgIGVtaXRMb2FkRG91YmxlKG9wMSwgZnBSZWdUMik7CiAgICAgICAgICAgICAgICAgYWRkSnVt
cChicmFuY2hEb3VibGUoRG91YmxlTGVzc1RoYW5PclVub3JkZXJlZCwgZnBSZWdUMCwgZnBSZWdU
MiksIGRzdCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIG9wX2pu
Z3JlYXRlcjoKKyAgICAgICAgICAgICAgICBlbWl0TG9hZERvdWJsZShvcDEsIGZwUmVnVDIpOwor
ICAgICAgICAgICAgICAgIGFkZEp1bXAoYnJhbmNoRG91YmxlKERvdWJsZUdyZWF0ZXJUaGFuT3JF
cXVhbE9yVW5vcmRlcmVkLCBmcFJlZ1QwLCBmcFJlZ1QyKSwgZHN0KTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIGNhc2Ugb3Bfam5ncmVhdGVyZXE6CisgICAgICAgICAgICAg
ICAgZW1pdExvYWREb3VibGUob3AxLCBmcFJlZ1QyKTsKKyAgICAgICAgICAgICAgICBhZGRKdW1w
KGJyYW5jaERvdWJsZShEb3VibGVHcmVhdGVyVGhhbk9yVW5vcmRlcmVkLCBmcFJlZ1QwLCBmcFJl
Z1QyKSwgZHN0KTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGRlZmF1bHQ6
CiAgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0KQEAgLTky
NSwyMSArOTQxLDM3IEBAIHZvaWQgSklUOjplbWl0QmluYXJ5RG91YmxlT3AoT3Bjb2RlSUQgb3AK
ICAgICAgICAgICAgICAgICBkaXZEb3VibGUoZnBSZWdUMiwgZnBSZWdUMCk7CiAgICAgICAgICAg
ICAgICAgZW1pdFN0b3JlRG91YmxlKGRzdCwgZnBSZWdUMCk7CiAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICBjYXNlIG9wX2pubGVzczoKLSAgICAgICAgICAgICAgICBlbWl0TG9h
ZERvdWJsZShvcDIsIGZwUmVnVDEpOwotICAgICAgICAgICAgICAgIGFkZEp1bXAoYnJhbmNoRG91
YmxlKERvdWJsZUxlc3NUaGFuT3JFcXVhbE9yVW5vcmRlcmVkLCBmcFJlZ1QxLCBmcFJlZ1QwKSwg
ZHN0KTsKLSAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2Ugb3Bfamxlc3M6
CiAgICAgICAgICAgICAgICAgZW1pdExvYWREb3VibGUob3AyLCBmcFJlZ1QxKTsKICAgICAgICAg
ICAgICAgICBhZGRKdW1wKGJyYW5jaERvdWJsZShEb3VibGVMZXNzVGhhbiwgZnBSZWdUMCwgZnBS
ZWdUMSksIGRzdCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIG9w
X2psZXNzZXE6CisgICAgICAgICAgICAgICAgZW1pdExvYWREb3VibGUob3AyLCBmcFJlZ1QxKTsK
KyAgICAgICAgICAgICAgICBhZGRKdW1wKGJyYW5jaERvdWJsZShEb3VibGVMZXNzVGhhbk9yRXF1
YWwsIGZwUmVnVDAsIGZwUmVnVDEpLCBkc3QpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgY2FzZSBvcF9qZ3JlYXRlcjoKKyAgICAgICAgICAgICAgICBlbWl0TG9hZERvdWJs
ZShvcDIsIGZwUmVnVDEpOworICAgICAgICAgICAgICAgIGFkZEp1bXAoYnJhbmNoRG91YmxlKERv
dWJsZUdyZWF0ZXJUaGFuLCBmcFJlZ1QwLCBmcFJlZ1QxKSwgZHN0KTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIGNhc2Ugb3BfamdyZWF0ZXJlcToKKyAgICAgICAgICAgICAg
ICBlbWl0TG9hZERvdWJsZShvcDIsIGZwUmVnVDEpOworICAgICAgICAgICAgICAgIGFkZEp1bXAo
YnJhbmNoRG91YmxlKERvdWJsZUdyZWF0ZXJUaGFuT3JFcXVhbCwgZnBSZWdUMCwgZnBSZWdUMSks
IGRzdCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIG9wX2pubGVz
czoKKyAgICAgICAgICAgICAgICBlbWl0TG9hZERvdWJsZShvcDIsIGZwUmVnVDEpOworICAgICAg
ICAgICAgICAgIGFkZEp1bXAoYnJhbmNoRG91YmxlKERvdWJsZUxlc3NUaGFuT3JFcXVhbE9yVW5v
cmRlcmVkLCBmcFJlZ1QxLCBmcFJlZ1QwKSwgZHN0KTsKKyAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIGNhc2Ugb3Bfam5sZXNzZXE6CiAgICAgICAgICAgICAgICAgZW1pdExvYWRE
b3VibGUob3AyLCBmcFJlZ1QxKTsKICAgICAgICAgICAgICAgICBhZGRKdW1wKGJyYW5jaERvdWJs
ZShEb3VibGVMZXNzVGhhbk9yVW5vcmRlcmVkLCBmcFJlZ1QxLCBmcFJlZ1QwKSwgZHN0KTsKICAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2Ugb3Bfamxlc3NlcToKKyAgICAg
ICAgICAgIGNhc2Ugb3Bfam5ncmVhdGVyOgogICAgICAgICAgICAgICAgIGVtaXRMb2FkRG91Ymxl
KG9wMiwgZnBSZWdUMSk7Ci0gICAgICAgICAgICAgICAgYWRkSnVtcChicmFuY2hEb3VibGUoRG91
YmxlTGVzc1RoYW5PckVxdWFsLCBmcFJlZ1QwLCBmcFJlZ1QxKSwgZHN0KTsKKyAgICAgICAgICAg
ICAgICBhZGRKdW1wKGJyYW5jaERvdWJsZShEb3VibGVHcmVhdGVyVGhhbk9yRXF1YWxPclVub3Jk
ZXJlZCwgZnBSZWdUMSwgZnBSZWdUMCksIGRzdCk7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICBjYXNlIG9wX2puZ3JlYXRlcmVxOgorICAgICAgICAgICAgICAgIGVtaXRMb2Fk
RG91YmxlKG9wMiwgZnBSZWdUMSk7CisgICAgICAgICAgICAgICAgYWRkSnVtcChicmFuY2hEb3Vi
bGUoRG91YmxlR3JlYXRlclRoYW5PclVub3JkZXJlZCwgZnBSZWdUMSwgZnBSZWdUMCksIGRzdCk7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRBcml0aG1ldGljLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVEFyaXRobWV0aWMuY3BwCShyZXZpc2lvbiA5MDM1MikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0LDYg
KzY0LDI0IEBAIHZvaWQgSklUOjplbWl0X29wX2psZXNzZXEoSW5zdHJ1Y3Rpb24qIGMKICAgICBl
bWl0X2NvbXBhcmVBbmRKdW1wKG9wX2psZXNzZXEsIG9wMSwgb3AyLCB0YXJnZXQsIExlc3NUaGFu
T3JFcXVhbCk7CiB9CiAKK3ZvaWQgSklUOjplbWl0X29wX2pncmVhdGVyKEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgdW5zaWduZWQgb3AxID0gY3VycmVudEluc3RydWN0
aW9uWzFdLnUub3BlcmFuZDsKKyAgICB1bnNpZ25lZCBvcDIgPSBjdXJyZW50SW5zdHJ1Y3Rpb25b
Ml0udS5vcGVyYW5kOworICAgIHVuc2lnbmVkIHRhcmdldCA9IGN1cnJlbnRJbnN0cnVjdGlvblsz
XS51Lm9wZXJhbmQ7CisKKyAgICBlbWl0X2NvbXBhcmVBbmRKdW1wKG9wX2pncmVhdGVyLCBvcDEs
IG9wMiwgdGFyZ2V0LCBHcmVhdGVyVGhhbik7Cit9CisKK3ZvaWQgSklUOjplbWl0X29wX2pncmVh
dGVyZXEoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICB1bnNpZ25lZCBv
cDEgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOworICAgIHVuc2lnbmVkIG9wMiA9
IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CisgICAgdW5zaWduZWQgdGFyZ2V0ID0g
Y3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKKworICAgIGVtaXRfY29tcGFyZUFuZEp1
bXAob3BfamdyZWF0ZXJlcSwgb3AxLCBvcDIsIHRhcmdldCwgR3JlYXRlclRoYW5PckVxdWFsKTsK
K30KKwogdm9pZCBKSVQ6OmVtaXRfb3Bfam5sZXNzKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiB7CiAgICAgdW5zaWduZWQgb3AxID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3Bl
cmFuZDsKQEAgLTgyLDYgKzEwMCwyNCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9qbmxlc3NlcShJbnN0
cnVjdGlvbiogCiAgICAgZW1pdF9jb21wYXJlQW5kSnVtcChvcF9qbmxlc3NlcSwgb3AxLCBvcDIs
IHRhcmdldCwgR3JlYXRlclRoYW4pOwogfQogCit2b2lkIEpJVDo6ZW1pdF9vcF9qbmdyZWF0ZXIo
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICB1bnNpZ25lZCBvcDEgPSBj
dXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOworICAgIHVuc2lnbmVkIG9wMiA9IGN1cnJl
bnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CisgICAgdW5zaWduZWQgdGFyZ2V0ID0gY3VycmVu
dEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKKworICAgIGVtaXRfY29tcGFyZUFuZEp1bXAob3Bf
am5ncmVhdGVyLCBvcDEsIG9wMiwgdGFyZ2V0LCBMZXNzVGhhbk9yRXF1YWwpOworfQorCit2b2lk
IEpJVDo6ZW1pdF9vcF9qbmdyZWF0ZXJlcShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQoreworICAgIHVuc2lnbmVkIG9wMSA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7
CisgICAgdW5zaWduZWQgb3AyID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKKyAg
ICB1bnNpZ25lZCB0YXJnZXQgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOworCisg
ICAgZW1pdF9jb21wYXJlQW5kSnVtcChvcF9qbmdyZWF0ZXJlcSwgb3AxLCBvcDIsIHRhcmdldCwg
TGVzc1RoYW4pOworfQorCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bfamxlc3MoSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRl
cikKIHsKICAgICB1bnNpZ25lZCBvcDEgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5k
OwpAQCAtMTAwLDYgKzEzNiwyNCBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bfamxlc3NlcShJbnN0
cnVjdGlvCiAgICAgZW1pdF9jb21wYXJlQW5kSnVtcFNsb3cob3AxLCBvcDIsIHRhcmdldCwgRG91
YmxlTGVzc1RoYW5PckVxdWFsLCBjdGlfb3Bfamxlc3NlcSwgZmFsc2UsIGl0ZXIpOwogfQogCit2
b2lkIEpJVDo6ZW1pdFNsb3dfb3BfamdyZWF0ZXIoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3sKKyAgICB1bnNp
Z25lZCBvcDEgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOworICAgIHVuc2lnbmVk
IG9wMiA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CisgICAgdW5zaWduZWQgdGFy
Z2V0ID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKKworICAgIGVtaXRfY29tcGFy
ZUFuZEp1bXBTbG93KG9wMSwgb3AyLCB0YXJnZXQsIERvdWJsZUdyZWF0ZXJUaGFuLCBjdGlfb3Bf
amdyZWF0ZXIsIGZhbHNlLCBpdGVyKTsKK30KKwordm9pZCBKSVQ6OmVtaXRTbG93X29wX2pncmVh
dGVyZXEoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50
cnk+OjppdGVyYXRvciYgaXRlcikKK3sKKyAgICB1bnNpZ25lZCBvcDEgPSBjdXJyZW50SW5zdHJ1
Y3Rpb25bMV0udS5vcGVyYW5kOworICAgIHVuc2lnbmVkIG9wMiA9IGN1cnJlbnRJbnN0cnVjdGlv
blsyXS51Lm9wZXJhbmQ7CisgICAgdW5zaWduZWQgdGFyZ2V0ID0gY3VycmVudEluc3RydWN0aW9u
WzNdLnUub3BlcmFuZDsKKworICAgIGVtaXRfY29tcGFyZUFuZEp1bXBTbG93KG9wMSwgb3AyLCB0
YXJnZXQsIERvdWJsZUdyZWF0ZXJUaGFuT3JFcXVhbCwgY3RpX29wX2pncmVhdGVyZXEsIGZhbHNl
LCBpdGVyKTsKK30KKwogdm9pZCBKSVQ6OmVtaXRTbG93X29wX2pubGVzcyhJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVy
KQogewogICAgIHVuc2lnbmVkIG9wMSA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7
CkBAIC0xMTgsNiArMTcyLDI0IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9qbmxlc3NlcShJbnN0
cnVjdGkKICAgICBlbWl0X2NvbXBhcmVBbmRKdW1wU2xvdyhvcDEsIG9wMiwgdGFyZ2V0LCBEb3Vi
bGVHcmVhdGVyVGhhbk9yVW5vcmRlcmVkLCBjdGlfb3Bfamxlc3NlcSwgdHJ1ZSwgaXRlcik7CiB9
CiAKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9qbmdyZWF0ZXIoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3sKKyAg
ICB1bnNpZ25lZCBvcDEgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOworICAgIHVu
c2lnbmVkIG9wMiA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CisgICAgdW5zaWdu
ZWQgdGFyZ2V0ID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKKworICAgIGVtaXRf
Y29tcGFyZUFuZEp1bXBTbG93KG9wMSwgb3AyLCB0YXJnZXQsIERvdWJsZUxlc3NUaGFuT3JFcXVh
bE9yVW5vcmRlcmVkLCBjdGlfb3BfamdyZWF0ZXIsIHRydWUsIGl0ZXIpOworfQorCit2b2lkIEpJ
VDo6ZW1pdFNsb3dfb3Bfam5ncmVhdGVyZXEoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
biwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3sKKyAgICB1bnNpZ25l
ZCBvcDEgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOworICAgIHVuc2lnbmVkIG9w
MiA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CisgICAgdW5zaWduZWQgdGFyZ2V0
ID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKKworICAgIGVtaXRfY29tcGFyZUFu
ZEp1bXBTbG93KG9wMSwgb3AyLCB0YXJnZXQsIERvdWJsZUxlc3NUaGFuT3JVbm9yZGVyZWQsIGN0
aV9vcF9qZ3JlYXRlcmVxLCB0cnVlLCBpdGVyKTsKK30KKwogI2lmIFVTRShKU1ZBTFVFNjQpCiAK
IHZvaWQgSklUOjplbWl0X29wX2xzaGlmdChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQpAQCAtMzYxLDYgKzQzMywxNCBAQCB2b2lkIEpJVDo6ZW1pdF9jb21wYXJlQW5kSnVtcChPcGNv
ZGVJRCwgCiAKIHZvaWQgSklUOjplbWl0X2NvbXBhcmVBbmRKdW1wU2xvdyh1bnNpZ25lZCBvcDEs
IHVuc2lnbmVkIG9wMiwgdW5zaWduZWQgdGFyZ2V0LCBEb3VibGVDb25kaXRpb24gY29uZGl0aW9u
LCBpbnQgKEpJVF9TVFVCICpzdHViKShTVFVCX0FSR1NfREVDTEFSQVRJT04pLCBib29sIGludmVy
dCwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKKyAgICBDT01QSUxF
X0FTU0VSVChPUENPREVfTEVOR1RIKG9wX2psZXNzKSA9PSBPUENPREVfTEVOR1RIKG9wX2psZXNz
ZXEpLCBPUENPREVfTEVOR1RIX29wX2psZXNzZXFfZXF1YWxzX29wX2psZXNzKTsKKyAgICBDT01Q
SUxFX0FTU0VSVChPUENPREVfTEVOR1RIKG9wX2psZXNzKSA9PSBPUENPREVfTEVOR1RIKG9wX2pu
bGVzcyksIE9QQ09ERV9MRU5HVEhfb3Bfam5sZXNzX2VxdWFsc19vcF9qbGVzcyk7CisgICAgQ09N
UElMRV9BU1NFUlQoT1BDT0RFX0xFTkdUSChvcF9qbGVzcykgPT0gT1BDT0RFX0xFTkdUSChvcF9q
bmxlc3NlcSksIE9QQ09ERV9MRU5HVEhfb3Bfam5sZXNzZXFfZXF1YWxzX29wX2psZXNzKTsKKyAg
ICBDT01QSUxFX0FTU0VSVChPUENPREVfTEVOR1RIKG9wX2psZXNzKSA9PSBPUENPREVfTEVOR1RI
KG9wX2pncmVhdGVyKSwgT1BDT0RFX0xFTkdUSF9vcF9qZ3JlYXRlcl9lcXVhbHNfb3Bfamxlc3Mp
OworICAgIENPTVBJTEVfQVNTRVJUKE9QQ09ERV9MRU5HVEgob3Bfamxlc3MpID09IE9QQ09ERV9M
RU5HVEgob3BfamdyZWF0ZXJlcSksIE9QQ09ERV9MRU5HVEhfb3BfamdyZWF0ZXJlcV9lcXVhbHNf
b3Bfamxlc3MpOworICAgIENPTVBJTEVfQVNTRVJUKE9QQ09ERV9MRU5HVEgob3Bfamxlc3MpID09
IE9QQ09ERV9MRU5HVEgob3Bfam5ncmVhdGVyKSwgT1BDT0RFX0xFTkdUSF9vcF9qbmdyZWF0ZXJf
ZXF1YWxzX29wX2psZXNzKTsKKyAgICBDT01QSUxFX0FTU0VSVChPUENPREVfTEVOR1RIKG9wX2ps
ZXNzKSA9PSBPUENPREVfTEVOR1RIKG9wX2puZ3JlYXRlcmVxKSwgT1BDT0RFX0xFTkdUSF9vcF9q
bmdyZWF0ZXJlcV9lcXVhbHNfb3Bfamxlc3MpOworICAgIAogICAgIC8vIFdlIGdlbmVyYXRlIGlu
bGluZSBjb2RlIGZvciB0aGUgZm9sbG93aW5nIGNhc2VzIGluIHRoZSBzbG93IHBhdGg6CiAgICAg
Ly8gLSBmbG9hdGluZy1wb2ludCBudW1iZXIgdG8gY29uc3RhbnQgaW50IGltbWVkaWF0ZQogICAg
IC8vIC0gY29uc3RhbnQgaW50IGltbWVkaWF0ZSB0byBmbG9hdGluZy1wb2ludCBudW1iZXIKQEAg
LTM5Myw3ICs0NzMsNyBAQCB2b2lkIEpJVDo6ZW1pdF9jb21wYXJlQW5kSnVtcFNsb3codW5zaWdu
CiAKICAgICAgICAgICAgIGVtaXRKdW1wU2xvd1RvSG90KGJyYW5jaERvdWJsZShjb25kaXRpb24s
IGZwUmVnVDAsIGZwUmVnVDEpLCB0YXJnZXQpOwogCi0gICAgICAgICAgICBlbWl0SnVtcFNsb3dU
b0hvdChqdW1wKCksIE9QQ09ERV9MRU5HVEgob3Bfam5sZXNzKSk7CisgICAgICAgICAgICBlbWl0
SnVtcFNsb3dUb0hvdChqdW1wKCksIE9QQ09ERV9MRU5HVEgob3Bfamxlc3MpKTsKIAogICAgICAg
ICAgICAgZmFpbDEubGluayh0aGlzKTsKICAgICAgICAgfQpAQCAtNDE5LDcgKzQ5OSw3IEBAIHZv
aWQgSklUOjplbWl0X2NvbXBhcmVBbmRKdW1wU2xvdyh1bnNpZ24KIAogICAgICAgICAgICAgZW1p
dEp1bXBTbG93VG9Ib3QoYnJhbmNoRG91YmxlKGNvbmRpdGlvbiwgZnBSZWdUMCwgZnBSZWdUMSks
IHRhcmdldCk7CiAKLSAgICAgICAgICAgIGVtaXRKdW1wU2xvd1RvSG90KGp1bXAoKSwgT1BDT0RF
X0xFTkdUSChvcF9qbmxlc3MpKTsKKyAgICAgICAgICAgIGVtaXRKdW1wU2xvd1RvSG90KGp1bXAo
KSwgT1BDT0RFX0xFTkdUSChvcF9qbGVzcykpOwogCiAgICAgICAgICAgICBmYWlsMS5saW5rKHRo
aXMpOwogICAgICAgICB9CkBAIC00MjksNyArNTA5LDYgQEAgdm9pZCBKSVQ6OmVtaXRfY29tcGFy
ZUFuZEp1bXBTbG93KHVuc2lnbgogICAgICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChyZWdUMSk7
CiAgICAgICAgIHN0dWJDYWxsLmNhbGwoKTsKICAgICAgICAgZW1pdEp1bXBTbG93VG9Ib3QoYnJh
bmNoVGVzdDMyKGludmVydCA/IFplcm8gOiBOb25aZXJvLCByZWdUMCksIHRhcmdldCk7Ci0KICAg
ICB9IGVsc2UgewogICAgICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7CiAKQEAgLTQ0NCw3ICs1MjMs
NyBAQCB2b2lkIEpJVDo6ZW1pdF9jb21wYXJlQW5kSnVtcFNsb3codW5zaWduCiAKICAgICAgICAg
ICAgIGVtaXRKdW1wU2xvd1RvSG90KGJyYW5jaERvdWJsZShjb25kaXRpb24sIGZwUmVnVDAsIGZw
UmVnVDEpLCB0YXJnZXQpOwogCi0gICAgICAgICAgICBlbWl0SnVtcFNsb3dUb0hvdChqdW1wKCks
IE9QQ09ERV9MRU5HVEgob3Bfam5sZXNzKSk7CisgICAgICAgICAgICBlbWl0SnVtcFNsb3dUb0hv
dChqdW1wKCksIE9QQ09ERV9MRU5HVEgob3Bfamxlc3MpKTsKIAogICAgICAgICAgICAgZmFpbDEu
bGluayh0aGlzKTsKICAgICAgICAgICAgIGZhaWwyLmxpbmsodGhpcyk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAkocmV2aXNpb24gOTAzNTIpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUzNiw2
ICsyNTM2LDE2IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQsIG9wX3B1dF9ieV92YWwKICAg
ICBDSEVDS19GT1JfRVhDRVBUSU9OX0FUX0VORCgpOwogfQogCitERUZJTkVfU1RVQl9GVU5DVElP
TihFbmNvZGVkSlNWYWx1ZSwgb3BfbGVzcykKK3sKKyAgICBTVFVCX0lOSVRfU1RBQ0tfRlJBTUUo
c3RhY2tGcmFtZSk7CisKKyAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IHN0YWNrRnJhbWUuY2Fs
bEZyYW1lOworICAgIEpTVmFsdWUgcmVzdWx0ID0ganNCb29sZWFuKGpzTGVzcyhjYWxsRnJhbWUs
IHN0YWNrRnJhbWUuYXJnc1swXS5qc1ZhbHVlKCksIHN0YWNrRnJhbWUuYXJnc1sxXS5qc1ZhbHVl
KCkpKTsKKyAgICBDSEVDS19GT1JfRVhDRVBUSU9OX0FUX0VORCgpOworICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUocmVzdWx0KTsKK30KKwogREVGSU5FX1NUVUJfRlVOQ1RJT04oRW5jb2RlZEpT
VmFsdWUsIG9wX2xlc3NlcSkKIHsKICAgICBTVFVCX0lOSVRfU1RBQ0tfRlJBTUUoc3RhY2tGcmFt
ZSk7CkBAIC0yNTQ2LDYgKzI1NTYsMjYgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04oRW5jb2RlZEpT
VmFsdWUsIG9wXwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIAorREVG
SU5FX1NUVUJfRlVOQ1RJT04oRW5jb2RlZEpTVmFsdWUsIG9wX2dyZWF0ZXIpCit7CisgICAgU1RV
Ql9JTklUX1NUQUNLX0ZSQU1FKHN0YWNrRnJhbWUpOworCisgICAgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUgPSBzdGFja0ZyYW1lLmNhbGxGcmFtZTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzQm9vbGVh
bihqc0xlc3MoY2FsbEZyYW1lLCBzdGFja0ZyYW1lLmFyZ3NbMV0uanNWYWx1ZSgpLCBzdGFja0Zy
YW1lLmFyZ3NbMF0uanNWYWx1ZSgpKSk7IC8vIEZJWE1FOiBCdWcjNjM4ODAKKyAgICBDSEVDS19G
T1JfRVhDRVBUSU9OX0FUX0VORCgpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0
KTsKK30KKworREVGSU5FX1NUVUJfRlVOQ1RJT04oRW5jb2RlZEpTVmFsdWUsIG9wX2dyZWF0ZXJl
cSkKK3sKKyAgICBTVFVCX0lOSVRfU1RBQ0tfRlJBTUUoc3RhY2tGcmFtZSk7CisKKyAgICBDYWxs
RnJhbWUqIGNhbGxGcmFtZSA9IHN0YWNrRnJhbWUuY2FsbEZyYW1lOworICAgIEpTVmFsdWUgcmVz
dWx0ID0ganNCb29sZWFuKGpzTGVzc0VxKGNhbGxGcmFtZSwgc3RhY2tGcmFtZS5hcmdzWzFdLmpz
VmFsdWUoKSwgc3RhY2tGcmFtZS5hcmdzWzBdLmpzVmFsdWUoKSkpOyAvLyBGSVhNRTogQnVnIzYz
ODgwCisgICAgQ0hFQ0tfRk9SX0VYQ0VQVElPTl9BVF9FTkQoKTsKKyAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHJlc3VsdCk7Cit9CisKIERFRklORV9TVFVCX0ZVTkNUSU9OKGludCwgb3BfbG9h
ZF92YXJhcmdzKQogewogICAgIFNUVUJfSU5JVF9TVEFDS19GUkFNRShzdGFja0ZyYW1lKTsKQEAg
LTI4MDcsNiArMjgzNywzMiBAQCBERUZJTkVfU1RVQl9GVU5DVElPTihpbnQsIG9wX2psZXNzZXEp
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorREVGSU5FX1NUVUJfRlVOQ1RJT04oaW50LCBvcF9q
Z3JlYXRlcikKK3sKKyAgICBTVFVCX0lOSVRfU1RBQ0tfRlJBTUUoc3RhY2tGcmFtZSk7CisKKyAg
ICBKU1ZhbHVlIHNyYzEgPSBzdGFja0ZyYW1lLmFyZ3NbMF0uanNWYWx1ZSgpOworICAgIEpTVmFs
dWUgc3JjMiA9IHN0YWNrRnJhbWUuYXJnc1sxXS5qc1ZhbHVlKCk7CisgICAgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUgPSBzdGFja0ZyYW1lLmNhbGxGcmFtZTsKKworICAgIGJvb2wgcmVzdWx0ID0ganNM
ZXNzKGNhbGxGcmFtZSwgc3JjMiwgc3JjMSk7IC8vIEZJWE1FOiBCdWcjNjM4ODAKKyAgICBDSEVD
S19GT1JfRVhDRVBUSU9OX0FUX0VORCgpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0RFRklO
RV9TVFVCX0ZVTkNUSU9OKGludCwgb3BfamdyZWF0ZXJlcSkKK3sKKyAgICBTVFVCX0lOSVRfU1RB
Q0tfRlJBTUUoc3RhY2tGcmFtZSk7CisKKyAgICBKU1ZhbHVlIHNyYzEgPSBzdGFja0ZyYW1lLmFy
Z3NbMF0uanNWYWx1ZSgpOworICAgIEpTVmFsdWUgc3JjMiA9IHN0YWNrRnJhbWUuYXJnc1sxXS5q
c1ZhbHVlKCk7CisgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBzdGFja0ZyYW1lLmNhbGxGcmFt
ZTsKKworICAgIGJvb2wgcmVzdWx0ID0ganNMZXNzRXEoY2FsbEZyYW1lLCBzcmMyLCBzcmMxKTsg
Ly8gRklYTUU6IEJ1ZyM2Mzg4MAorICAgIENIRUNLX0ZPUl9FWENFUFRJT05fQVRfRU5EKCk7Cisg
ICAgcmV0dXJuIHJlc3VsdDsKK30KKwogREVGSU5FX1NUVUJfRlVOQ1RJT04oRW5jb2RlZEpTVmFs
dWUsIG9wX25vdCkKIHsKICAgICBTVFVCX0lOSVRfU1RBQ0tfRlJBTUUoc3RhY2tGcmFtZSk7CkBA
IC0zMDkwLDE2ICszMTQ2LDYgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04oRW5jb2RlZEpTVmFsdWUs
IG9wXwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIAotREVGSU5FX1NU
VUJfRlVOQ1RJT04oRW5jb2RlZEpTVmFsdWUsIG9wX2xlc3MpCi17Ci0gICAgU1RVQl9JTklUX1NU
QUNLX0ZSQU1FKHN0YWNrRnJhbWUpOwotCi0gICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBzdGFj
a0ZyYW1lLmNhbGxGcmFtZTsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzQm9vbGVhbihqc0xlc3Mo
Y2FsbEZyYW1lLCBzdGFja0ZyYW1lLmFyZ3NbMF0uanNWYWx1ZSgpLCBzdGFja0ZyYW1lLmFyZ3Nb
MV0uanNWYWx1ZSgpKSk7Ci0gICAgQ0hFQ0tfRk9SX0VYQ0VQVElPTl9BVF9FTkQoKTsKLSAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Ci19Ci0KIERFRklORV9TVFVCX0ZVTkNUSU9O
KEVuY29kZWRKU1ZhbHVlLCBvcF9wb3N0X2RlYykKIHsKICAgICBTVFVCX0lOSVRfU1RBQ0tfRlJB
TUUoc3RhY2tGcmFtZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5oCShy
ZXZpc2lvbiA5MDM1MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuaAko
d29ya2luZyBjb3B5KQpAQCAtMzUyLDYgKzM1Miw4IEBAIGV4dGVybiAiQyIgewogICAgIEVuY29k
ZWRKU1ZhbHVlIEpJVF9TVFVCIGN0aV9vcF9pc191bmRlZmluZWQoU1RVQl9BUkdTX0RFQ0xBUkFU
SU9OKTsKICAgICBFbmNvZGVkSlNWYWx1ZSBKSVRfU1RVQiBjdGlfb3BfbGVzcyhTVFVCX0FSR1Nf
REVDTEFSQVRJT04pOwogICAgIEVuY29kZWRKU1ZhbHVlIEpJVF9TVFVCIGN0aV9vcF9sZXNzZXEo
U1RVQl9BUkdTX0RFQ0xBUkFUSU9OKTsKKyAgICBFbmNvZGVkSlNWYWx1ZSBKSVRfU1RVQiBjdGlf
b3BfZ3JlYXRlcihTVFVCX0FSR1NfREVDTEFSQVRJT04pOworICAgIEVuY29kZWRKU1ZhbHVlIEpJ
VF9TVFVCIGN0aV9vcF9ncmVhdGVyZXEoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKTsKICAgICBFbmNv
ZGVkSlNWYWx1ZSBKSVRfU1RVQiBjdGlfb3BfbHNoaWZ0KFNUVUJfQVJHU19ERUNMQVJBVElPTik7
CiAgICAgRW5jb2RlZEpTVmFsdWUgSklUX1NUVUIgY3RpX29wX21vZChTVFVCX0FSR1NfREVDTEFS
QVRJT04pOwogICAgIEVuY29kZWRKU1ZhbHVlIEpJVF9TVFVCIGN0aV9vcF9tdWwoU1RVQl9BUkdT
X0RFQ0xBUkFUSU9OKTsKQEAgLTM5NCw2ICszOTYsOCBAQCBleHRlcm4gIkMiIHsKICAgICBpbnQg
SklUX1NUVUIgY3RpX29wX2VxX3N0cmluZ3MoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKTsKICAgICBp
bnQgSklUX1NUVUIgY3RpX29wX2psZXNzKFNUVUJfQVJHU19ERUNMQVJBVElPTik7CiAgICAgaW50
IEpJVF9TVFVCIGN0aV9vcF9qbGVzc2VxKFNUVUJfQVJHU19ERUNMQVJBVElPTik7CisgICAgaW50
IEpJVF9TVFVCIGN0aV9vcF9qZ3JlYXRlcihTVFVCX0FSR1NfREVDTEFSQVRJT04pOworICAgIGlu
dCBKSVRfU1RVQiBjdGlfb3BfamdyZWF0ZXJlcShTVFVCX0FSR1NfREVDTEFSQVRJT04pOwogICAg
IGludCBKSVRfU1RVQiBjdGlfb3BfanRydWUoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKTsKICAgICBp
bnQgSklUX1NUVUIgY3RpX29wX2xvYWRfdmFyYXJncyhTVFVCX0FSR1NfREVDTEFSQVRJT04pOwog
ICAgIGludCBKSVRfU1RVQiBjdGlfdGltZW91dF9jaGVjayhTVFVCX0FSR1NfREVDTEFSQVRJT04p
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0
b3JzLmgJKHJldmlzaW9uIDkwMzUyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9O
b2RlQ29uc3RydWN0b3JzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0OSwxNiArNDQ5LDYgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBSZXZlcnNlQmluYXJ5T3BO
b2RlOjpSZXZlcnNlQmluYXJ5T3BOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIE9wY29kZUlEIG9wY29kZUlE
LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCi0gICAgICAgIDogQmluYXJ5T3BOb2RlKGdsb2Jh
bERhdGEsIGV4cHIxLCBleHByMiwgb3Bjb2RlSUQsIHJpZ2h0SGFzQXNzaWdubWVudHMpCi0gICAg
ewotICAgIH0KLQotICAgIGlubGluZSBSZXZlcnNlQmluYXJ5T3BOb2RlOjpSZXZlcnNlQmluYXJ5
T3BOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgUmVzdWx0VHlwZSB0eXBlLCBFeHByZXNz
aW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgT3Bjb2RlSUQgb3Bjb2RlSUQs
IGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKLSAgICAgICAgOiBCaW5hcnlPcE5vZGUoZ2xvYmFs
RGF0YSwgdHlwZSwgZXhwcjEsIGV4cHIyLCBvcGNvZGVJRCwgcmlnaHRIYXNBc3NpZ25tZW50cykK
LSAgICB7Ci0gICAgfQotCiAgICAgaW5saW5lIE11bHROb2RlOjpNdWx0Tm9kZShKU0dsb2JhbERh
dGEqIGdsb2JhbERhdGEsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCiAgICAgICAgIDogQmluYXJ5T3BOb2RlKGds
b2JhbERhdGEsIFJlc3VsdFR5cGU6Om51bWJlclR5cGVDYW5SZXVzZSgpLCBleHByMSwgZXhwcjIs
IG9wX211bCwgcmlnaHRIYXNBc3NpZ25tZW50cykKICAgICB7CkBAIC01MDYsNyArNDk2LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgfQogCiAgICAgaW5saW5lIEdyZWF0ZXJOb2RlOjpHcmVhdGVy
Tm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhw
cmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCi0gICAgICAgIDog
UmV2ZXJzZUJpbmFyeU9wTm9kZShnbG9iYWxEYXRhLCBSZXN1bHRUeXBlOjpib29sZWFuVHlwZSgp
LCBleHByMSwgZXhwcjIsIG9wX2xlc3MsIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgICAgIDog
QmluYXJ5T3BOb2RlKGdsb2JhbERhdGEsIFJlc3VsdFR5cGU6OmJvb2xlYW5UeXBlKCksIGV4cHIx
LCBleHByMiwgb3BfZ3JlYXRlciwgcmlnaHRIYXNBc3NpZ25tZW50cykKICAgICB7CiAgICAgfQog
CkBAIC01MTYsNyArNTA2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgfQogCiAgICAgaW5saW5l
IEdyZWF0ZXJFcU5vZGU6OkdyZWF0ZXJFcU5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBF
eHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhh
c0Fzc2lnbm1lbnRzKQotICAgICAgICA6IFJldmVyc2VCaW5hcnlPcE5vZGUoZ2xvYmFsRGF0YSwg
UmVzdWx0VHlwZTo6Ym9vbGVhblR5cGUoKSwgZXhwcjEsIGV4cHIyLCBvcF9sZXNzZXEsIHJpZ2h0
SGFzQXNzaWdubWVudHMpCisgICAgICAgIDogQmluYXJ5T3BOb2RlKGdsb2JhbERhdGEsIFJlc3Vs
dFR5cGU6OmJvb2xlYW5UeXBlKCksIGV4cHIxLCBleHByMiwgb3BfZ3JlYXRlcmVxLCByaWdodEhh
c0Fzc2lnbm1lbnRzKQogICAgIHsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvTm9kZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL05vZGVzLmgJKHJldmlzaW9uIDkwMzUyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9Ob2Rlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC04MjksMTQgKzgyOSw2IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBib29sIG1fcmlnaHRIYXNBc3NpZ25tZW50czsKICAgICB9OwogCi0g
ICAgY2xhc3MgUmV2ZXJzZUJpbmFyeU9wTm9kZSA6IHB1YmxpYyBCaW5hcnlPcE5vZGUgewotICAg
IHB1YmxpYzoKLSAgICAgICAgUmV2ZXJzZUJpbmFyeU9wTm9kZShKU0dsb2JhbERhdGEqLCBFeHBy
ZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgT3Bjb2RlSUQsIGJvb2wg
cmlnaHRIYXNBc3NpZ25tZW50cyk7Ci0gICAgICAgIFJldmVyc2VCaW5hcnlPcE5vZGUoSlNHbG9i
YWxEYXRhKiwgUmVzdWx0VHlwZSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9k
ZSogZXhwcjIsIE9wY29kZUlELCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwotCi0gICAgICAg
IHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVn
aXN0ZXJJRCogPSAwKTsKLSAgICB9OwotCiAgICAgY2xhc3MgTXVsdE5vZGUgOiBwdWJsaWMgQmlu
YXJ5T3BOb2RlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIE11bHROb2RlKEpTR2xvYmFsRGF0YSos
IEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0
SGFzQXNzaWdubWVudHMpOwpAQCAtODg2LDcgKzg3OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBMZXNzTm9kZShKU0dsb2JhbERhdGEqLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJl
c3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKICAgICB9OwogCi0g
ICAgY2xhc3MgR3JlYXRlck5vZGUgOiBwdWJsaWMgUmV2ZXJzZUJpbmFyeU9wTm9kZSB7CisgICAg
Y2xhc3MgR3JlYXRlck5vZGUgOiBwdWJsaWMgQmluYXJ5T3BOb2RlIHsKICAgICBwdWJsaWM6CiAg
ICAgICAgIEdyZWF0ZXJOb2RlKEpTR2xvYmFsRGF0YSosIEV4cHJlc3Npb25Ob2RlKiBleHByMSwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwogICAgIH07
CkBAIC04OTYsNyArODg4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIExlc3NFcU5vZGUo
SlNHbG9iYWxEYXRhKiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhw
cjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiAgICAgfTsKIAotICAgIGNsYXNzIEdyZWF0
ZXJFcU5vZGUgOiBwdWJsaWMgUmV2ZXJzZUJpbmFyeU9wTm9kZSB7CisgICAgY2xhc3MgR3JlYXRl
ckVxTm9kZSA6IHB1YmxpYyBCaW5hcnlPcE5vZGUgewogICAgIHB1YmxpYzoKICAgICAgICAgR3Jl
YXRlckVxTm9kZShKU0dsb2JhbERhdGEqLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Np
b25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKICAgICB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>99649</attachid>
            <date>2011-07-04 11:33:53 -0700</date>
            <delta_ts>2011-07-04 11:58:17 -0700</delta_ts>
            <desc>+ interpreter fix</desc>
            <filename>63881.4.patch</filename>
            <type>text/plain</type>
            <size>68626</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTAzNTIpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNjkgQEAK
KzIwMTEtMDctMDQgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgor
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Mzg4MQor
ICAgICAgICBOZWVkIHNlcGFyYXRlIGJ5dGVjb2RlcyBmb3IgaGFuZGxpbmcgPiwgPj0gY29tcGFy
aXNvbnMuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGhpcyBjbGVhcnMgdGhlIHdheSB0byBmaXggQnVnIzYzODgwLiBXZSBjdXJyZW50bHkgaGFuZGxl
IGdyZWF0ZXItdGhhbiBjb21wYXJpc29ucworICAgICAgICBhcyBiZWluZyB1c2luZyB0aGUgY29y
cmVzcG9uZGluZyBvcF9sZXNzLCBldGMgb3Bjb2Rlcy4gIFRoaXMgaXMgaW5jb3JyZWN0IHdpdGgK
KyAgICAgICAgcmVzcGVjdCB0byBldmFsdWF0aW9uIG9yZGVyaW5nIG9mIHRoZSBpbXBsaWNpdCBj
b252ZXJzaW9ucyBwZXJmb3JtZWQgb24gb3BlcmFuZHMgLQorICAgICAgICB3ZSBzaG91bGQgYmUg
Y2FsbGluZyBUb1ByaW1pdGl2ZSBvbiB0aGUgTEhTIGFuZCBSSFMgb3BlcmFuZHMgdG8gdGhlIGdy
ZWF0ZXIgdGhhbiwKKyAgICAgICAgYnV0IGluc3RlYWQgY29udmVydCBSSFMgdGhlbiBMSFMuCisK
KyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIG9wY29kZXMgZm9yIGdyZWF0ZXItdGhhbiBjb21wYXJp
c29ucyBtaXJyb3JpbmcgZXhpc3Rpbmcgb25lcyB1c2VkCisgICAgICAgIGZvciBsZXNzLXRoYW4u
CisKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2Rl
QmxvY2s6OmR1bXApOgorICAgICAgICAqIGJ5dGVjb2RlL09wY29kZS5oOgorICAgICAgICAqIGJ5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0SnVtcElmVHJ1ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0SnVtcElmRmFsc2UpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVn
ZW4uY3BwOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdO
b2RlLmg6CisgICAgICAgICogZGZnL0RGR05vblNwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpOb25TcGVjdWxhdGl2ZUpJVDo6Y29tcGFyZSk6CisgICAgICAgIChKU0M6OkRG
Rzo6Tm9uU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdOb25TcGVj
dWxhdGl2ZUpJVC5oOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAg
KiBkZmcvREZHT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBhcmUpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZH
U3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6
CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpwcml2YXRlRXhlY3V0ZSk6CisgICAgICAgICog
aml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6
CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMpOgorICAgICAgICAq
IGppdC9KSVQuaDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2xvb3BfaWZfZ3JlYXRlcik6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfbG9vcF9pZl9ncmVhdGVyKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX2xvb3BfaWZfZ3JlYXRlcmVxKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0U2xvd19vcF9sb29wX2lmX2dyZWF0ZXJlcSk6CisgICAgICAgICogaml0L0pJVEFy
aXRobWV0aWMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfamdyZWF0ZXIpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfamdyZWF0ZXJlcSk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF9qbmdyZWF0ZXIpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfam5ncmVhdGVy
ZXEpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2pncmVhdGVyKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0U2xvd19vcF9qZ3JlYXRlcmVxKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0U2xvd19vcF9qbmdyZWF0ZXIpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2pu
Z3JlYXRlcmVxKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X2NvbXBhcmVBbmRKdW1wU2xvdyk6
CisgICAgICAgICogaml0L0pJVEFyaXRobWV0aWMzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdEJpbmFyeURvdWJsZU9wKToKKyAgICAgICAgKiBqaXQvSklUU3R1YnMuY3BwOgorICAg
ICAgICAoSlNDOjpERUZJTkVfU1RVQl9GVU5DVElPTik6CisgICAgICAgICogaml0L0pJVFN0dWJz
Lmg6CisgICAgICAgICogcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaDoKKyAgICAgICAgKEpTQzo6
R3JlYXRlck5vZGU6OkdyZWF0ZXJOb2RlKToKKyAgICAgICAgKEpTQzo6R3JlYXRlckVxTm9kZTo6
R3JlYXRlckVxTm9kZSk6CisgICAgICAgICogcGFyc2VyL05vZGVzLmg6CisKIDIwMTEtMDctMDMg
IEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgogCiAgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Mzg3OQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDkwMzUy
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTU4Niw2ICs1ODYsMTQgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhlY1N0
YXRlKiBleGVjLCBjbwogICAgICAgICAgICAgcHJpbnRCaW5hcnlPcChleGVjLCBsb2NhdGlvbiwg
aXQsICJsZXNzZXEiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAgICAgIGNh
c2Ugb3BfZ3JlYXRlcjogeworICAgICAgICAgICAgcHJpbnRCaW5hcnlPcChleGVjLCBsb2NhdGlv
biwgaXQsICJncmVhdGVyIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAg
ICBjYXNlIG9wX2dyZWF0ZXJlcTogeworICAgICAgICAgICAgcHJpbnRCaW5hcnlPcChleGVjLCBs
b2NhdGlvbiwgaXQsICJncmVhdGVyZXEiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CiAgICAgICAgIGNhc2Ugb3BfcHJlX2luYzogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQp
LT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBwcmludGYoIlslNGRdIHByZV9pbmNcdFx0ICVzXG4i
LCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCkpOwpAQCAtOTk1LDYgKzEw
MDMsMzQgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhlY1N0YXRlKiBleGVjLCBjbwogICAgICAg
ICAgICAgcHJpbnRmKCJbJTRkXSBqbmVxX3B0clx0XHQgJXMsICVzLCAlZCgtPiVkKVxuIiwgbG9j
YXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywg
cjEpLmRhdGEoKSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQorICAgICAgICBjYXNlIG9wX2psZXNzOiB7CisgICAgICAgICAgICBpbnQg
cjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5v
cGVyYW5kOworICAgICAgICAgICAgaW50IG9mZnNldCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAg
ICAgICAgICAgcHJpbnRmKCJbJTRkXSBqbGVzc1x0XHQgJXMsICVzLCAlZCgtPiVkKVxuIiwgbG9j
YXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywg
cjEpLmRhdGEoKSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorICAgICAgICBjYXNlIG9wX2psZXNzZXE6IHsKKyAgICAgICAgICAgIGlu
dCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51
Lm9wZXJhbmQ7CisgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7Cisg
ICAgICAgICAgICBwcmludGYoIlslNGRdIGpsZXNzZXFcdFx0ICVzLCAlcywgJWQoLT4lZClcbiIs
IGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4
ZWMsIHIxKS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9qZ3JlYXRlcjogeworICAgICAgICAg
ICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBpbnQgcjEgPSAoKytp
dCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIGludCBvZmZzZXQgPSAoKytpdCktPnUub3BlcmFu
ZDsKKyAgICAgICAgICAgIHByaW50ZigiWyU0ZF0gamdyZWF0ZXJcdFx0ICVzLCAlcywgJWQoLT4l
ZClcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJO
YW1lKGV4ZWMsIHIxKS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9qZ3JlYXRlcmVxOiB7Cisg
ICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIGludCBy
MSA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgaW50IG9mZnNldCA9ICgrK2l0KS0+
dS5vcGVyYW5kOworICAgICAgICAgICAgcHJpbnRmKCJbJTRkXSBqZ3JlYXRlcmVxXHRcdCAlcywg
JXMsICVkKC0+JWQpXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCks
IHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3Bfam5sZXNz
OiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAg
IGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwpAQCAtMTAwOSwyNSArMTA0NSwyNSBAQCB2b2lk
IENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAgICAgICAgICBwcmludGYo
IlslNGRdIGpubGVzc2VxXHRcdCAlcywgJXMsICVkKC0+JWQpXG4iLCBsb2NhdGlvbiwgcmVnaXN0
ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBv
ZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
Ci0gICAgICAgIGNhc2Ugb3BfbG9vcF9pZl9sZXNzOiB7CisgICAgICAgIGNhc2Ugb3Bfam5ncmVh
dGVyOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAg
ICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IG9mZnNldCA9
ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJpbnRmKCJbJTRkXSBsb29wX2lmX2xl
c3NcdCAlcywgJXMsICVkKC0+JWQpXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIw
KS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9u
ICsgb2Zmc2V0KTsKKyAgICAgICAgICAgIHByaW50ZigiWyU0ZF0gam5ncmVhdGVyXHRcdCAlcywg
JXMsICVkKC0+JWQpXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCks
IHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGNhc2Ugb3Bfamxlc3M6
IHsKKyAgICAgICAgY2FzZSBvcF9qbmdyZWF0ZXJlcTogewogICAgICAgICAgICAgaW50IHIwID0g
KCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFu
ZDsKICAgICAgICAgICAgIGludCBvZmZzZXQgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAg
ICAgIHByaW50ZigiWyU0ZF0gamxlc3NcdFx0ICVzLCAlcywgJWQoLT4lZClcbiIsIGxvY2F0aW9u
LCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5k
YXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOworICAgICAgICAgICAgcHJpbnRmKCJb
JTRkXSBqbmdyZWF0ZXJlcVx0XHQgJXMsICVzLCAlZCgtPiVkKVxuIiwgbG9jYXRpb24sIHJlZ2lz
dGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwg
b2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQotICAgICAgICBjYXNlIG9wX2psZXNzZXE6IHsKKyAgICAgICAgY2FzZSBvcF9sb29wX2lmX2xl
c3M6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAg
ICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0g
KCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBwcmludGYoIlslNGRdIGpsZXNzZXFcdFx0
ICVzLCAlcywgJWQoLT4lZClcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRh
dGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBv
ZmZzZXQpOworICAgICAgICAgICAgcHJpbnRmKCJbJTRkXSBsb29wX2lmX2xlc3NcdCAlcywgJXMs
ICVkKC0+JWQpXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCksIHJl
Z2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfbG9vcF9pZl9s
ZXNzZXE6IHsKQEAgLTEwMzcsNiArMTA3MywyMCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcChFeGVj
U3RhdGUqIGV4ZWMsIGNvCiAgICAgICAgICAgICBwcmludGYoIlslNGRdIGxvb3BfaWZfbGVzc2Vx
XHQgJXMsICVzLCAlZCgtPiVkKVxuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCku
ZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgb2Zmc2V0LCBsb2NhdGlvbiAr
IG9mZnNldCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBjYXNlIG9w
X2xvb3BfaWZfZ3JlYXRlcjogeworICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJh
bmQ7CisgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAg
IGludCBvZmZzZXQgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIHByaW50ZigiWyU0
ZF0gbG9vcF9pZl9ncmVhdGVyXHQgJXMsICVzLCAlZCgtPiVkKVxuIiwgbG9jYXRpb24sIHJlZ2lz
dGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwg
b2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorICAgICAgICBjYXNlIG9wX2xvb3BfaWZfZ3JlYXRlcmVxOiB7CisgICAgICAgICAgICBpbnQg
cjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5v
cGVyYW5kOworICAgICAgICAgICAgaW50IG9mZnNldCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAg
ICAgICAgICAgcHJpbnRmKCJbJTRkXSBsb29wX2lmX2dyZWF0ZXJlcVx0ICVzLCAlcywgJWQoLT4l
ZClcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJO
YW1lKGV4ZWMsIHIxKS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9zd2l0Y2hfaW1tOiB7CiAg
ICAgICAgICAgICBpbnQgdGFibGVJbmRleCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAg
ICAgaW50IGRlZmF1bHRUYXJnZXQgPSAoKytpdCktPnUub3BlcmFuZDsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgJKHJldmlzaW9uIDkwMzUyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02Miw2
ICs2Miw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBtYWNybyhvcF9uc3RyaWN0ZXEsIDQp
IFwKICAgICAgICAgbWFjcm8ob3BfbGVzcywgNCkgXAogICAgICAgICBtYWNybyhvcF9sZXNzZXEs
IDQpIFwKKyAgICAgICAgbWFjcm8ob3BfZ3JlYXRlciwgNCkgXAorICAgICAgICBtYWNybyhvcF9n
cmVhdGVyZXEsIDQpIFwKICAgICAgICAgXAogICAgICAgICBtYWNybyhvcF9wcmVfaW5jLCAyKSBc
CiAgICAgICAgIG1hY3JvKG9wX3ByZV9kZWMsIDIpIFwKQEAgLTE0NSwxNiArMTQ3LDIyIEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBtYWNybyhvcF9qZXFfbnVsbCwgMykgXAogICAgICAgICBt
YWNybyhvcF9qbmVxX251bGwsIDMpIFwKICAgICAgICAgbWFjcm8ob3Bfam5lcV9wdHIsIDQpIFwK
LSAgICAgICAgbWFjcm8ob3Bfam5sZXNzLCA0KSBcCi0gICAgICAgIG1hY3JvKG9wX2pubGVzc2Vx
LCA0KSBcCiAgICAgICAgIG1hY3JvKG9wX2psZXNzLCA0KSBcCiAgICAgICAgIG1hY3JvKG9wX2ps
ZXNzZXEsIDQpIFwKKyAgICAgICAgbWFjcm8ob3BfamdyZWF0ZXIsIDQpIFwKKyAgICAgICAgbWFj
cm8ob3BfamdyZWF0ZXJlcSwgNCkgXAorICAgICAgICBtYWNybyhvcF9qbmxlc3MsIDQpIFwKKyAg
ICAgICAgbWFjcm8ob3Bfam5sZXNzZXEsIDQpIFwKKyAgICAgICAgbWFjcm8ob3Bfam5ncmVhdGVy
LCA0KSBcCisgICAgICAgIG1hY3JvKG9wX2puZ3JlYXRlcmVxLCA0KSBcCiAgICAgICAgIG1hY3Jv
KG9wX2ptcF9zY29wZXMsIDMpIFwKICAgICAgICAgbWFjcm8ob3BfbG9vcCwgMikgXAogICAgICAg
ICBtYWNybyhvcF9sb29wX2lmX3RydWUsIDMpIFwKICAgICAgICAgbWFjcm8ob3BfbG9vcF9pZl9m
YWxzZSwgMykgXAogICAgICAgICBtYWNybyhvcF9sb29wX2lmX2xlc3MsIDQpIFwKICAgICAgICAg
bWFjcm8ob3BfbG9vcF9pZl9sZXNzZXEsIDQpIFwKKyAgICAgICAgbWFjcm8ob3BfbG9vcF9pZl9n
cmVhdGVyLCA0KSBcCisgICAgICAgIG1hY3JvKG9wX2xvb3BfaWZfZ3JlYXRlcmVxLCA0KSBcCiAg
ICAgICAgIG1hY3JvKG9wX3N3aXRjaF9pbW0sIDQpIFwKICAgICAgICAgbWFjcm8ob3Bfc3dpdGNo
X2NoYXIsIDQpIFwKICAgICAgICAgbWFjcm8ob3Bfc3dpdGNoX3N0cmluZywgNCkgXApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5jcHAJKHJldmlzaW9uIDkwMzUyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcz
Myw2ICs3MzMsNDAgQEAgUGFzc1JlZlB0cjxMYWJlbD4gQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaQog
ICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHRhcmdldC0+YmluZChiZWdpbiwgaW5z
dHJ1Y3Rpb25zKCkuc2l6ZSgpKSk7CiAgICAgICAgICAgICByZXR1cm4gdGFyZ2V0OwogICAgICAg
ICB9CisgICAgfSBlbHNlIGlmIChtX2xhc3RPcGNvZGVJRCA9PSBvcF9ncmVhdGVyKSB7CisgICAg
ICAgIGludCBkc3RJbmRleDsKKyAgICAgICAgaW50IHNyYzFJbmRleDsKKyAgICAgICAgaW50IHNy
YzJJbmRleDsKKworICAgICAgICByZXRyaWV2ZUxhc3RCaW5hcnlPcChkc3RJbmRleCwgc3JjMUlu
ZGV4LCBzcmMySW5kZXgpOworCisgICAgICAgIGlmIChjb25kLT5pbmRleCgpID09IGRzdEluZGV4
ICYmIGNvbmQtPmlzVGVtcG9yYXJ5KCkgJiYgIWNvbmQtPnJlZkNvdW50KCkpIHsKKyAgICAgICAg
ICAgIHJld2luZEJpbmFyeU9wKCk7CisKKyAgICAgICAgICAgIHNpemVfdCBiZWdpbiA9IGluc3Ry
dWN0aW9ucygpLnNpemUoKTsKKyAgICAgICAgICAgIGVtaXRPcGNvZGUodGFyZ2V0LT5pc0Zvcndh
cmQoKSA/IG9wX2pncmVhdGVyIDogb3BfbG9vcF9pZl9ncmVhdGVyKTsKKyAgICAgICAgICAgIGlu
c3RydWN0aW9ucygpLmFwcGVuZChzcmMxSW5kZXgpOworICAgICAgICAgICAgaW5zdHJ1Y3Rpb25z
KCkuYXBwZW5kKHNyYzJJbmRleCk7CisgICAgICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
dGFyZ2V0LT5iaW5kKGJlZ2luLCBpbnN0cnVjdGlvbnMoKS5zaXplKCkpKTsKKyAgICAgICAgICAg
IHJldHVybiB0YXJnZXQ7CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKG1fbGFzdE9wY29kZUlE
ID09IG9wX2dyZWF0ZXJlcSkgeworICAgICAgICBpbnQgZHN0SW5kZXg7CisgICAgICAgIGludCBz
cmMxSW5kZXg7CisgICAgICAgIGludCBzcmMySW5kZXg7CisKKyAgICAgICAgcmV0cmlldmVMYXN0
QmluYXJ5T3AoZHN0SW5kZXgsIHNyYzFJbmRleCwgc3JjMkluZGV4KTsKKworICAgICAgICBpZiAo
Y29uZC0+aW5kZXgoKSA9PSBkc3RJbmRleCAmJiBjb25kLT5pc1RlbXBvcmFyeSgpICYmICFjb25k
LT5yZWZDb3VudCgpKSB7CisgICAgICAgICAgICByZXdpbmRCaW5hcnlPcCgpOworCisgICAgICAg
ICAgICBzaXplX3QgYmVnaW4gPSBpbnN0cnVjdGlvbnMoKS5zaXplKCk7CisgICAgICAgICAgICBl
bWl0T3Bjb2RlKHRhcmdldC0+aXNGb3J3YXJkKCkgPyBvcF9qZ3JlYXRlcmVxIDogb3BfbG9vcF9p
Zl9ncmVhdGVyZXEpOworICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHNyYzFJbmRl
eCk7CisgICAgICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoc3JjMkluZGV4KTsKKyAgICAg
ICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCh0YXJnZXQtPmJpbmQoYmVnaW4sIGluc3RydWN0
aW9ucygpLnNpemUoKSkpOworICAgICAgICAgICAgcmV0dXJuIHRhcmdldDsKKyAgICAgICAgfQog
ICAgIH0gZWxzZSBpZiAobV9sYXN0T3Bjb2RlSUQgPT0gb3BfZXFfbnVsbCAmJiB0YXJnZXQtPmlz
Rm9yd2FyZCgpKSB7CiAgICAgICAgIGludCBkc3RJbmRleDsKICAgICAgICAgaW50IHNyY0luZGV4
OwpAQCAtODA5LDYgKzg0Myw0MCBAQCBQYXNzUmVmUHRyPExhYmVsPiBCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pCiAgICAgICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQodGFyZ2V0LT5iaW5kKGJl
Z2luLCBpbnN0cnVjdGlvbnMoKS5zaXplKCkpKTsKICAgICAgICAgICAgIHJldHVybiB0YXJnZXQ7
CiAgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKG1fbGFzdE9wY29kZUlEID09IG9wX2dyZWF0ZXIg
JiYgdGFyZ2V0LT5pc0ZvcndhcmQoKSkgeworICAgICAgICBpbnQgZHN0SW5kZXg7CisgICAgICAg
IGludCBzcmMxSW5kZXg7CisgICAgICAgIGludCBzcmMySW5kZXg7CisKKyAgICAgICAgcmV0cmll
dmVMYXN0QmluYXJ5T3AoZHN0SW5kZXgsIHNyYzFJbmRleCwgc3JjMkluZGV4KTsKKworICAgICAg
ICBpZiAoY29uZC0+aW5kZXgoKSA9PSBkc3RJbmRleCAmJiBjb25kLT5pc1RlbXBvcmFyeSgpICYm
ICFjb25kLT5yZWZDb3VudCgpKSB7CisgICAgICAgICAgICByZXdpbmRCaW5hcnlPcCgpOworCisg
ICAgICAgICAgICBzaXplX3QgYmVnaW4gPSBpbnN0cnVjdGlvbnMoKS5zaXplKCk7CisgICAgICAg
ICAgICBlbWl0T3Bjb2RlKG9wX2puZ3JlYXRlcik7CisgICAgICAgICAgICBpbnN0cnVjdGlvbnMo
KS5hcHBlbmQoc3JjMUluZGV4KTsKKyAgICAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChz
cmMySW5kZXgpOworICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHRhcmdldC0+Ymlu
ZChiZWdpbiwgaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKSk7CisgICAgICAgICAgICByZXR1cm4gdGFy
Z2V0OworICAgICAgICB9CisgICAgfSBlbHNlIGlmIChtX2xhc3RPcGNvZGVJRCA9PSBvcF9ncmVh
dGVyZXEgJiYgdGFyZ2V0LT5pc0ZvcndhcmQoKSkgeworICAgICAgICBpbnQgZHN0SW5kZXg7Cisg
ICAgICAgIGludCBzcmMxSW5kZXg7CisgICAgICAgIGludCBzcmMySW5kZXg7CisKKyAgICAgICAg
cmV0cmlldmVMYXN0QmluYXJ5T3AoZHN0SW5kZXgsIHNyYzFJbmRleCwgc3JjMkluZGV4KTsKKwor
ICAgICAgICBpZiAoY29uZC0+aW5kZXgoKSA9PSBkc3RJbmRleCAmJiBjb25kLT5pc1RlbXBvcmFy
eSgpICYmICFjb25kLT5yZWZDb3VudCgpKSB7CisgICAgICAgICAgICByZXdpbmRCaW5hcnlPcCgp
OworCisgICAgICAgICAgICBzaXplX3QgYmVnaW4gPSBpbnN0cnVjdGlvbnMoKS5zaXplKCk7Cisg
ICAgICAgICAgICBlbWl0T3Bjb2RlKG9wX2puZ3JlYXRlcmVxKTsKKyAgICAgICAgICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZChzcmMxSW5kZXgpOworICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKHNyYzJJbmRleCk7CisgICAgICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQodGFy
Z2V0LT5iaW5kKGJlZ2luLCBpbnN0cnVjdGlvbnMoKS5zaXplKCkpKTsKKyAgICAgICAgICAgIHJl
dHVybiB0YXJnZXQ7CisgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKG1fbGFzdE9wY29kZUlEID09
IG9wX25vdCkgewogICAgICAgICBpbnQgZHN0SW5kZXg7CiAgICAgICAgIGludCBzcmNJbmRleDsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVz
Q29kZWdlbi5jcHAJKHJldmlzaW9uIDkwMzUyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05ODUsMTMgKzk4
NSw2IEBAIFJlZ2lzdGVySUQqIFN0cmljdEVxdWFsTm9kZTo6ZW1pdEJ5dGVjb2QKICAgICByZXR1
cm4gZ2VuZXJhdG9yLmVtaXRFcXVhbGl0eU9wKG9wX3N0cmljdGVxLCBnZW5lcmF0b3IuZmluYWxE
ZXN0aW5hdGlvbihkc3QsIHNyYzEuZ2V0KCkpLCBzcmMxLmdldCgpLCBzcmMyKTsKIH0KIAotUmVn
aXN0ZXJJRCogUmV2ZXJzZUJpbmFyeU9wTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKLXsKLSAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gc3JjMSA9IGdlbmVyYXRvci5lbWl0Tm9kZUZvckxlZnRIYW5kU2lkZShtX2V4cHIxLCBtX3Jp
Z2h0SGFzQXNzaWdubWVudHMsIG1fZXhwcjItPmlzUHVyZShnZW5lcmF0b3IpKTsKLSAgICBSZWdp
c3RlcklEKiBzcmMyID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fZXhwcjIpOwotICAgIHJldHVybiBn
ZW5lcmF0b3IuZW1pdEJpbmFyeU9wKG9wY29kZUlEKCksIGdlbmVyYXRvci5maW5hbERlc3RpbmF0
aW9uKGRzdCwgc3JjMS5nZXQoKSksIHNyYzIsIHNyYzEuZ2V0KCksIE9wZXJhbmRUeXBlcyhtX2V4
cHIyLT5yZXN1bHREZXNjcmlwdG9yKCksIG1fZXhwcjEtPnJlc3VsdERlc2NyaXB0b3IoKSkpOwot
fQotCiBSZWdpc3RlcklEKiBUaHJvd2FibGVCaW5hcnlPcE5vZGU6OmVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7CiAgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IHNyYzEgPSBnZW5lcmF0b3IuZW1pdE5vZGVGb3JMZWZ0SGFuZFNpZGUobV9l
eHByMSwgbV9yaWdodEhhc0Fzc2lnbm1lbnRzLCBtX2V4cHIyLT5pc1B1cmUoZ2VuZXJhdG9yKSk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2Vy
LmNwcAkocmV2aXNpb24gOTAzNTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzM2LDYgKzczNiwyMiBAQCBib29s
IEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICBORVhUX09Q
Q09ERShvcF9sZXNzZXEpOwogICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBvcF9ncmVhdGVyOiB7
CisgICAgICAgICAgICBBUklUSE1FVElDX09QKCk7CisgICAgICAgICAgICBOb2RlSW5kZXggb3Ax
ID0gZ2V0KGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpOworICAgICAgICAgICAgTm9k
ZUluZGV4IG9wMiA9IGdldChjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKTsKKyAgICAg
ICAgICAgIHNldChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCBhZGRUb0dyYXBoKENv
bXBhcmVHcmVhdGVyLCBvcDEsIG9wMikpOworICAgICAgICAgICAgTkVYVF9PUENPREUob3BfZ3Jl
YXRlcik7CisgICAgICAgIH0KKworICAgICAgICBjYXNlIG9wX2dyZWF0ZXJlcTogeworICAgICAg
ICAgICAgQVJJVEhNRVRJQ19PUCgpOworICAgICAgICAgICAgTm9kZUluZGV4IG9wMSA9IGdldChj
dXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsKKyAgICAgICAgICAgIE5vZGVJbmRleCBv
cDIgPSBnZXQoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCk7CisgICAgICAgICAgICBz
ZXQoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwgYWRkVG9HcmFwaChDb21wYXJlR3Jl
YXRlckVxLCBvcDEsIG9wMikpOworICAgICAgICAgICAgTkVYVF9PUENPREUob3BfZ3JlYXRlcmVx
KTsKKyAgICAgICAgfQorCiAgICAgICAgIGNhc2Ugb3BfZXE6IHsKICAgICAgICAgICAgIEFSSVRI
TUVUSUNfT1AoKTsKICAgICAgICAgICAgIE5vZGVJbmRleCBvcDEgPSBnZXQoY3VycmVudEluc3Ry
dWN0aW9uWzJdLnUub3BlcmFuZCk7CkBAIC05MTEsNiArOTI3LDQyIEBAIGJvb2wgQnl0ZUNvZGVQ
YXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgIExBU1RfT1BDT0RFKG9wX2pu
ZXFfbnVsbCk7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIG9wX2psZXNzOiB7CisgICAgICAg
ICAgICB1bnNpZ25lZCByZWxhdGl2ZU9mZnNldCA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9w
ZXJhbmQ7CisgICAgICAgICAgICBOb2RlSW5kZXggb3AxID0gZ2V0KGN1cnJlbnRJbnN0cnVjdGlv
blsxXS51Lm9wZXJhbmQpOworICAgICAgICAgICAgTm9kZUluZGV4IG9wMiA9IGdldChjdXJyZW50
SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsKKyAgICAgICAgICAgIE5vZGVJbmRleCBjb25kaXRp
b24gPSBhZGRUb0dyYXBoKENvbXBhcmVMZXNzLCBvcDEsIG9wMik7CisgICAgICAgICAgICBhZGRU
b0dyYXBoKEJyYW5jaCwgT3BJbmZvKG1fY3VycmVudEluZGV4ICsgcmVsYXRpdmVPZmZzZXQpLCBP
cEluZm8obV9jdXJyZW50SW5kZXggKyBPUENPREVfTEVOR1RIKG9wX2psZXNzKSksIGNvbmRpdGlv
bik7CisgICAgICAgICAgICBMQVNUX09QQ09ERShvcF9qbGVzcyk7CisgICAgICAgIH0KKworICAg
ICAgICBjYXNlIG9wX2psZXNzZXE6IHsKKyAgICAgICAgICAgIHVuc2lnbmVkIHJlbGF0aXZlT2Zm
c2V0ID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKKyAgICAgICAgICAgIE5vZGVJ
bmRleCBvcDEgPSBnZXQoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CisgICAgICAg
ICAgICBOb2RlSW5kZXggb3AyID0gZ2V0KGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQp
OworICAgICAgICAgICAgTm9kZUluZGV4IGNvbmRpdGlvbiA9IGFkZFRvR3JhcGgoQ29tcGFyZUxl
c3NFcSwgb3AxLCBvcDIpOworICAgICAgICAgICAgYWRkVG9HcmFwaChCcmFuY2gsIE9wSW5mbyht
X2N1cnJlbnRJbmRleCArIHJlbGF0aXZlT2Zmc2V0KSwgT3BJbmZvKG1fY3VycmVudEluZGV4ICsg
T1BDT0RFX0xFTkdUSChvcF9qbGVzc2VxKSksIGNvbmRpdGlvbik7CisgICAgICAgICAgICBMQVNU
X09QQ09ERShvcF9qbGVzc2VxKTsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2Ugb3BfamdyZWF0
ZXI6IHsKKyAgICAgICAgICAgIHVuc2lnbmVkIHJlbGF0aXZlT2Zmc2V0ID0gY3VycmVudEluc3Ry
dWN0aW9uWzNdLnUub3BlcmFuZDsKKyAgICAgICAgICAgIE5vZGVJbmRleCBvcDEgPSBnZXQoY3Vy
cmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CisgICAgICAgICAgICBOb2RlSW5kZXggb3Ay
ID0gZ2V0KGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpOworICAgICAgICAgICAgTm9k
ZUluZGV4IGNvbmRpdGlvbiA9IGFkZFRvR3JhcGgoQ29tcGFyZUdyZWF0ZXIsIG9wMSwgb3AyKTsK
KyAgICAgICAgICAgIGFkZFRvR3JhcGgoQnJhbmNoLCBPcEluZm8obV9jdXJyZW50SW5kZXggKyBy
ZWxhdGl2ZU9mZnNldCksIE9wSW5mbyhtX2N1cnJlbnRJbmRleCArIE9QQ09ERV9MRU5HVEgob3Bf
amdyZWF0ZXIpKSwgY29uZGl0aW9uKTsKKyAgICAgICAgICAgIExBU1RfT1BDT0RFKG9wX2pncmVh
dGVyKTsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2Ugb3BfamdyZWF0ZXJlcTogeworICAgICAg
ICAgICAgdW5zaWduZWQgcmVsYXRpdmVPZmZzZXQgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5v
cGVyYW5kOworICAgICAgICAgICAgTm9kZUluZGV4IG9wMSA9IGdldChjdXJyZW50SW5zdHJ1Y3Rp
b25bMV0udS5vcGVyYW5kKTsKKyAgICAgICAgICAgIE5vZGVJbmRleCBvcDIgPSBnZXQoY3VycmVu
dEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCk7CisgICAgICAgICAgICBOb2RlSW5kZXggY29uZGl0
aW9uID0gYWRkVG9HcmFwaChDb21wYXJlR3JlYXRlckVxLCBvcDEsIG9wMik7CisgICAgICAgICAg
ICBhZGRUb0dyYXBoKEJyYW5jaCwgT3BJbmZvKG1fY3VycmVudEluZGV4ICsgcmVsYXRpdmVPZmZz
ZXQpLCBPcEluZm8obV9jdXJyZW50SW5kZXggKyBPUENPREVfTEVOR1RIKG9wX2pncmVhdGVyZXEp
KSwgY29uZGl0aW9uKTsKKyAgICAgICAgICAgIExBU1RfT1BDT0RFKG9wX2pncmVhdGVyZXEpOwor
ICAgICAgICB9CisKICAgICAgICAgY2FzZSBvcF9qbmxlc3M6IHsKICAgICAgICAgICAgIHVuc2ln
bmVkIHJlbGF0aXZlT2Zmc2V0ID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKICAg
ICAgICAgICAgIE5vZGVJbmRleCBvcDEgPSBnZXQoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3Bl
cmFuZCk7CkBAIC05MjksMjIgKzk4MSwyMiBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJs
b2NrKHVuc2lnbmVkCiAgICAgICAgICAgICBMQVNUX09QQ09ERShvcF9qbmxlc3NlcSk7CiAgICAg
ICAgIH0KIAotICAgICAgICBjYXNlIG9wX2psZXNzOiB7CisgICAgICAgIGNhc2Ugb3Bfam5ncmVh
dGVyOiB7CiAgICAgICAgICAgICB1bnNpZ25lZCByZWxhdGl2ZU9mZnNldCA9IGN1cnJlbnRJbnN0
cnVjdGlvblszXS51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBOb2RlSW5kZXggb3AxID0gZ2V0KGN1
cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOwogICAgICAgICAgICAgTm9kZUluZGV4IG9w
MiA9IGdldChjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsKLSAgICAgICAgICAgIE5v
ZGVJbmRleCBjb25kaXRpb24gPSBhZGRUb0dyYXBoKENvbXBhcmVMZXNzLCBvcDEsIG9wMik7Ci0g
ICAgICAgICAgICBhZGRUb0dyYXBoKEJyYW5jaCwgT3BJbmZvKG1fY3VycmVudEluZGV4ICsgcmVs
YXRpdmVPZmZzZXQpLCBPcEluZm8obV9jdXJyZW50SW5kZXggKyBPUENPREVfTEVOR1RIKG9wX2ps
ZXNzKSksIGNvbmRpdGlvbik7Ci0gICAgICAgICAgICBMQVNUX09QQ09ERShvcF9qbGVzcyk7Cisg
ICAgICAgICAgICBOb2RlSW5kZXggY29uZGl0aW9uID0gYWRkVG9HcmFwaChDb21wYXJlR3JlYXRl
ciwgb3AxLCBvcDIpOworICAgICAgICAgICAgYWRkVG9HcmFwaChCcmFuY2gsIE9wSW5mbyhtX2N1
cnJlbnRJbmRleCArIE9QQ09ERV9MRU5HVEgob3Bfam5ncmVhdGVyKSksIE9wSW5mbyhtX2N1cnJl
bnRJbmRleCArIHJlbGF0aXZlT2Zmc2V0KSwgY29uZGl0aW9uKTsKKyAgICAgICAgICAgIExBU1Rf
T1BDT0RFKG9wX2puZ3JlYXRlcik7CiAgICAgICAgIH0KIAotICAgICAgICBjYXNlIG9wX2psZXNz
ZXE6IHsKKyAgICAgICAgY2FzZSBvcF9qbmdyZWF0ZXJlcTogewogICAgICAgICAgICAgdW5zaWdu
ZWQgcmVsYXRpdmVPZmZzZXQgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOwogICAg
ICAgICAgICAgTm9kZUluZGV4IG9wMSA9IGdldChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVy
YW5kKTsKICAgICAgICAgICAgIE5vZGVJbmRleCBvcDIgPSBnZXQoY3VycmVudEluc3RydWN0aW9u
WzJdLnUub3BlcmFuZCk7Ci0gICAgICAgICAgICBOb2RlSW5kZXggY29uZGl0aW9uID0gYWRkVG9H
cmFwaChDb21wYXJlTGVzc0VxLCBvcDEsIG9wMik7Ci0gICAgICAgICAgICBhZGRUb0dyYXBoKEJy
YW5jaCwgT3BJbmZvKG1fY3VycmVudEluZGV4ICsgcmVsYXRpdmVPZmZzZXQpLCBPcEluZm8obV9j
dXJyZW50SW5kZXggKyBPUENPREVfTEVOR1RIKG9wX2psZXNzZXEpKSwgY29uZGl0aW9uKTsKLSAg
ICAgICAgICAgIExBU1RfT1BDT0RFKG9wX2psZXNzZXEpOworICAgICAgICAgICAgTm9kZUluZGV4
IGNvbmRpdGlvbiA9IGFkZFRvR3JhcGgoQ29tcGFyZUdyZWF0ZXJFcSwgb3AxLCBvcDIpOworICAg
ICAgICAgICAgYWRkVG9HcmFwaChCcmFuY2gsIE9wSW5mbyhtX2N1cnJlbnRJbmRleCArIE9QQ09E
RV9MRU5HVEgob3Bfam5ncmVhdGVyZXEpKSwgT3BJbmZvKG1fY3VycmVudEluZGV4ICsgcmVsYXRp
dmVPZmZzZXQpLCBjb25kaXRpb24pOworICAgICAgICAgICAgTEFTVF9PUENPREUob3Bfam5ncmVh
dGVyZXEpOwogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBvcF9sb29wX2lmX2xlc3M6IHsKQEAg
LTk2NSw2ICsxMDE3LDI0IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWdu
ZWQKICAgICAgICAgICAgIExBU1RfT1BDT0RFKG9wX2xvb3BfaWZfbGVzc2VxKTsKICAgICAgICAg
fQogCisgICAgICAgIGNhc2Ugb3BfbG9vcF9pZl9ncmVhdGVyOiB7CisgICAgICAgICAgICB1bnNp
Z25lZCByZWxhdGl2ZU9mZnNldCA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7Cisg
ICAgICAgICAgICBOb2RlSW5kZXggb3AxID0gZ2V0KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9w
ZXJhbmQpOworICAgICAgICAgICAgTm9kZUluZGV4IG9wMiA9IGdldChjdXJyZW50SW5zdHJ1Y3Rp
b25bMl0udS5vcGVyYW5kKTsKKyAgICAgICAgICAgIE5vZGVJbmRleCBjb25kaXRpb24gPSBhZGRU
b0dyYXBoKENvbXBhcmVHcmVhdGVyLCBvcDEsIG9wMik7CisgICAgICAgICAgICBhZGRUb0dyYXBo
KEJyYW5jaCwgT3BJbmZvKG1fY3VycmVudEluZGV4ICsgcmVsYXRpdmVPZmZzZXQpLCBPcEluZm8o
bV9jdXJyZW50SW5kZXggKyBPUENPREVfTEVOR1RIKG9wX2xvb3BfaWZfZ3JlYXRlcikpLCBjb25k
aXRpb24pOworICAgICAgICAgICAgTEFTVF9PUENPREUob3BfbG9vcF9pZl9ncmVhdGVyKTsKKyAg
ICAgICAgfQorCisgICAgICAgIGNhc2Ugb3BfbG9vcF9pZl9ncmVhdGVyZXE6IHsKKyAgICAgICAg
ICAgIHVuc2lnbmVkIHJlbGF0aXZlT2Zmc2V0ID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3Bl
cmFuZDsKKyAgICAgICAgICAgIE5vZGVJbmRleCBvcDEgPSBnZXQoY3VycmVudEluc3RydWN0aW9u
WzFdLnUub3BlcmFuZCk7CisgICAgICAgICAgICBOb2RlSW5kZXggb3AyID0gZ2V0KGN1cnJlbnRJ
bnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpOworICAgICAgICAgICAgTm9kZUluZGV4IGNvbmRpdGlv
biA9IGFkZFRvR3JhcGgoQ29tcGFyZUdyZWF0ZXJFcSwgb3AxLCBvcDIpOworICAgICAgICAgICAg
YWRkVG9HcmFwaChCcmFuY2gsIE9wSW5mbyhtX2N1cnJlbnRJbmRleCArIHJlbGF0aXZlT2Zmc2V0
KSwgT3BJbmZvKG1fY3VycmVudEluZGV4ICsgT1BDT0RFX0xFTkdUSChvcF9sb29wX2lmX2dyZWF0
ZXJlcSkpLCBjb25kaXRpb24pOworICAgICAgICAgICAgTEFTVF9PUENPREUob3BfbG9vcF9pZl9n
cmVhdGVyZXEpOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBvcF9yZXQ6IHsKICAgICAgICAg
ICAgIGFkZFRvR3JhcGgoUmV0dXJuLCBnZXQoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFu
ZCkpOwogICAgICAgICAgICAgTEFTVF9PUENPREUob3BfcmV0KTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTm9kZS5oCShyZXZpc2lvbiA5MDM1MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzMsNiArMTMzLDggQEAgdHlw
ZWRlZiB1aW50MzJfdCBFeGNlcHRpb25JbmZvOwogICAgIC8qIE5vZGVzIGZvciBjb21wYXJpc29u
IG9wZXJhdGlvbnMuICovXAogICAgIG1hY3JvKENvbXBhcmVMZXNzLCBOb2RlUmVzdWx0SlMgfCBO
b2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oQ29tcGFyZUxlc3NFcSwgTm9kZVJlc3VsdEpT
IHwgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAgIG1hY3JvKENvbXBhcmVHcmVhdGVyLCBOb2RlUmVz
dWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8oQ29tcGFyZUdyZWF0ZXJFcSwg
Tm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKENvbXBhcmVFcSwg
Tm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKENvbXBhcmVTdHJp
Y3RFcSwgTm9kZVJlc3VsdEpTKSBcCiAgICAgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb25TcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOb25TcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDkwMzUyKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb25TcGVjdWxhdGl2ZUpJVC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM0Miw3ICszNDIsNyBAQCB2b2lkIE5vblNwZWN1bGF0aXZlSklUOjpi
YXNpY0FyaXRoT3AoTm9kCiAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRHUFIsIG1fY29tcGlsZUlu
ZGV4KTsKIH0KIAotdm9pZCBOb25TcGVjdWxhdGl2ZUpJVDo6Y29tcGFyZShOb2RlJiBub2RlLCBN
YWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBjb25zdCBaX0RGR09wZXJh
dGlvbl9FSkomIGhlbHBlckZ1bmN0aW9uKQordm9pZCBOb25TcGVjdWxhdGl2ZUpJVDo6Y29tcGFy
ZShOb2RlJiBub2RlLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBa
X0RGR09wZXJhdGlvbl9FSkogaGVscGVyRnVuY3Rpb24pCiB7CiAgICAgLy8gRklYTUU6IHNob3Vs
ZCBkbyBzb21lIHBlZXBob2xlIHRvIGZ1c2UgY29tcGFyZS9icmFuY2gKICAgICAgICAgCkBAIC03
NDAsNiArNzQwLDE0IEBAIHZvaWQgTm9uU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoU3BlY3VsYXQK
ICAgICAgICAgY29tcGFyZShub2RlLCBNYWNyb0Fzc2VtYmxlcjo6TGVzc1RoYW5PckVxdWFsLCBv
cGVyYXRpb25Db21wYXJlTGVzc0VxKTsKICAgICAgICAgYnJlYWs7CiAgICAgICAgIAorICAgIGNh
c2UgQ29tcGFyZUdyZWF0ZXI6CisgICAgICAgIGNvbXBhcmUobm9kZSwgTWFjcm9Bc3NlbWJsZXI6
OkdyZWF0ZXJUaGFuLCBvcGVyYXRpb25Db21wYXJlR3JlYXRlcik7CisgICAgICAgIGJyZWFrOwor
ICAgICAgICAKKyAgICBjYXNlIENvbXBhcmVHcmVhdGVyRXE6CisgICAgICAgIGNvbXBhcmUobm9k
ZSwgTWFjcm9Bc3NlbWJsZXI6OkdyZWF0ZXJUaGFuT3JFcXVhbCwgb3BlcmF0aW9uQ29tcGFyZUdy
ZWF0ZXJFcSk7CisgICAgICAgIGJyZWFrOworICAgICAgICAKICAgICBjYXNlIENvbXBhcmVFcToK
ICAgICAgICAgY29tcGFyZShub2RlLCBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIG9wZXJhdGlvbkNv
bXBhcmVFcSk7CiAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdOb25TcGVjdWxhdGl2ZUpJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTm9uU3BlY3VsYXRpdmVKSVQuaAkocmV2aXNpb24gOTAzNTIpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vblNwZWN1bGF0aXZlSklULmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEwMiw4ICsxMDIsOCBAQCBwcml2YXRlOgogICAgIC8vIGludGVybmFsIGhlbHBlcnMg
Zm9yIGFkZC9zdWIvbXVsIG9wZXJhdGlvbnMKICAgICB2b2lkIGtub3duQ29uc3RhbnRBcml0aE9w
KE5vZGVUeXBlIG9wLCBOb2RlSW5kZXggcmVnQ2hpbGQsIE5vZGVJbmRleCBpbW1DaGlsZCwgYm9v
bCBjb21tdXRlKTsKICAgICB2b2lkIGJhc2ljQXJpdGhPcChOb2RlVHlwZSBvcCwgTm9kZSYpOwot
ICAgIHZvaWQgY29tcGFyZShOb2RlJiwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxDb25kaXRp
b24sIGNvbnN0IFpfREZHT3BlcmF0aW9uX0VKSiYpOwotICAgIAorICAgIHZvaWQgY29tcGFyZShO
b2RlJiwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxDb25kaXRpb24sIFpfREZHT3BlcmF0aW9u
X0VKSik7CisKICAgICBFbnRyeUxvY2F0aW9uVmVjdG9yIG1fZW50cnlMb2NhdGlvbnM7CiB9Owog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJKHJl
dmlzaW9uIDkwMzUyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25z
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzc3LDYgKzM3NywxNiBAQCBib29sIG9wZXJhdGlvbkNv
bXBhcmVMZXNzRXEoRXhlY1N0YXRlKiBlCiAgICAgcmV0dXJuIGpzTGVzc0VxKGV4ZWMsIEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkT3AxKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpKTsKIH0K
IAorYm9vbCBvcGVyYXRpb25Db21wYXJlR3JlYXRlcihFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIpCit7CisgICAgcmV0
dXJuIGpzTGVzcyhleGVjLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMiksIEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkT3AxKSk7IC8vIEZJWE1FOiBCdWcjNjM4ODAKK30KKworYm9vbCBvcGVyYXRp
b25Db21wYXJlR3JlYXRlckVxKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMikKK3sKKyAgICByZXR1cm4ganNMZXNzRXEo
ZXhlYywgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZE9wMSkpOyAvLyBGSVhNRTogQnVnIzYzODgwCit9CisKIGJvb2wgb3BlcmF0aW9uQ29tcGFyZUVx
KEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZE9wMikKIHsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZXF1YWwoZXhlYywgSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRPcDEpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMikpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgJKHJldmlzaW9uIDkw
MzUyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgJKHdvcmtp
bmcgY29weSkKQEAgLTc2LDYgKzc2LDggQEAgdm9pZCBvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3Ry
aWN0T3B0aW1pegogdm9pZCBvcGVyYXRpb25QdXRCeUlkRGlyZWN0Tm9uU3RyaWN0T3B0aW1pemUo
RXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkQmFzZSwgSWRlbnRpZmllciopOwogYm9vbCBvcGVyYXRpb25Db21wYXJlTGVzcyhFeGVj
U3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
T3AyKTsKIGJvb2wgb3BlcmF0aW9uQ29tcGFyZUxlc3NFcShFeGVjU3RhdGUqLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKTsKK2Jvb2wgb3BlcmF0
aW9uQ29tcGFyZUdyZWF0ZXIoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMik7Citib29sIG9wZXJhdGlvbkNvbXBhcmVHcmVhdGVy
RXEoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZE9wMik7CiBib29sIG9wZXJhdGlvbkNvbXBhcmVFcShFeGVjU3RhdGUqLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKTsKIGJvb2wgb3Bl
cmF0aW9uQ29tcGFyZVN0cmljdEVxKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRP
cDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24gOTAzNTIpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDEzLDYgKzQxMyw0MCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
UGVlcEhvbGVDYWxsCiAgICAgICAgIGFkZEJyYW5jaChtX2ppdC5qdW1wKCksIG5vdFRha2VuKTsK
IH0KIAorLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBjb21wYXJlIGlzIGZ1c2VkIHdpdGggYSBzdWJz
ZXF1ZW50IGJyYW5jaC4KK2Jvb2wgU3BlY3VsYXRpdmVKSVQ6OmNvbXBhcmUoTm9kZSYgbm9kZSwg
TWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxDb25kaXRpb24gY29uZGl0aW9uLCBaX0RGR09wZXJh
dGlvbl9FSkogb3BlcmF0aW9uKQoreworICAgIC8vIEZ1c2VkIGNvbXBhcmUgJiBicmFuY2guCisg
ICAgTm9kZUluZGV4IGJyYW5jaE5vZGVJbmRleCA9IGRldGVjdFBlZXBIb2xlQnJhbmNoKCk7Cisg
ICAgaWYgKGJyYW5jaE5vZGVJbmRleCAhPSBOb05vZGUpIHsKKyAgICAgICAgLy8gZGV0ZWN0UGVl
cEhvbGVCcmFuY2ggY3VycmVudGx5IG9ubHkgcGVybWl0cyB0aGUgYnJhbmNoIHRvIGJlIHRoZSB2
ZXJ5IG5leHQgbm9kZSwKKyAgICAgICAgLy8gc28gY2FuIGJlIG5vIGludGVydmVuaW5nIG5vZGVz
IHRvIGFsc28gcmVmZXJlbmNlIHRoZSBjb21wYXJlLiAKKyAgICAgICAgQVNTRVJUKG5vZGUuYWRq
dXN0ZWRSZWZDb3VudCgpID09IDEpOworCisgICAgICAgIGlmIChzaG91bGRTcGVjdWxhdGVJbnRl
Z2VyKG5vZGUuY2hpbGQxLCBub2RlLmNoaWxkMikpCisgICAgICAgICAgICBjb21waWxlUGVlcEhv
bGVJbnRlZ2VyQnJhbmNoKG5vZGUsIGJyYW5jaE5vZGVJbmRleCwgY29uZGl0aW9uKTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgY29tcGlsZVBlZXBIb2xlQ2FsbChub2RlLCBicmFuY2hOb2Rl
SW5kZXgsIG9wZXJhdGlvbik7CisKKyAgICAgICAgdXNlKG5vZGUuY2hpbGQxKTsKKyAgICAgICAg
dXNlKG5vZGUuY2hpbGQyKTsKKyAgICAgICAgbV9jb21waWxlSW5kZXggPSBicmFuY2hOb2RlSW5k
ZXg7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIC8vIE5vcm1hbCBjYXNlLCBu
b3QgZnVzZWQgdG8gYnJhbmNoLgorICAgIFNwZWN1bGF0ZUludGVnZXJPcGVyYW5kIG9wMSh0aGlz
LCBub2RlLmNoaWxkMSk7CisgICAgU3BlY3VsYXRlSW50ZWdlck9wZXJhbmQgb3AyKHRoaXMsIG5v
ZGUuY2hpbGQyKTsKKyAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIG9wMSwgb3AyKTsKKwor
ICAgIG1faml0LmNvbXBhcmUzMihjb25kaXRpb24sIG9wMS5ncHIoKSwgb3AyLmdwcigpLCByZXN1
bHQuZ3ByKCkpOworCisgICAgLy8gSWYgd2UgYWRkIGEgRGF0YUZvcm1hdEJvb2wsIHdlIHNob3Vs
ZCB1c2UgaXQgaGVyZS4KKyAgICBtX2ppdC5vcjMyKFRydXN0ZWRJbW0zMihWYWx1ZUZhbHNlKSwg
cmVzdWx0LmdwcigpKTsKKyAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdC5ncHIoKSwgbV9jb21waWxl
SW5kZXgpOworICAgIHJldHVybiBmYWxzZTsKK30KKwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZShOb2RlJiBub2RlKQogewogICAgIE5vZGVUeXBlIG9wID0gbm9kZS5vcDsKQEAgLTczOCwx
MDAgKzc3MiwzMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAg
ICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIGNhc2UgQ29tcGFyZUxlc3M6IHsKLSAgICAgICAg
Ly8gRnVzZWQgY29tcGFyZSAmIGJyYW5jaC4KLSAgICAgICAgTm9kZUluZGV4IGJyYW5jaE5vZGVJ
bmRleCA9IGRldGVjdFBlZXBIb2xlQnJhbmNoKCk7Ci0gICAgICAgIGlmIChicmFuY2hOb2RlSW5k
ZXggIT0gTm9Ob2RlKSB7Ci0gICAgICAgICAgICAvLyBkZXRlY3RQZWVwSG9sZUJyYW5jaCBjdXJy
ZW50bHkgb25seSBwZXJtaXRzIHRoZSBicmFuY2ggdG8gYmUgdGhlIHZlcnkgbmV4dCBub2RlLAot
ICAgICAgICAgICAgLy8gc28gY2FuIGJlIG5vIGludGVydmVuaW5nIG5vZGVzIHRvIGFsc28gcmVm
ZXJlbmNlIHRoZSBjb21wYXJlLiAKLSAgICAgICAgICAgIEFTU0VSVChub2RlLmFkanVzdGVkUmVm
Q291bnQoKSA9PSAxKTsKLQotICAgICAgICAgICAgaWYgKHNob3VsZFNwZWN1bGF0ZUludGVnZXIo
bm9kZS5jaGlsZDEsIG5vZGUuY2hpbGQyKSkKLSAgICAgICAgICAgICAgICBjb21waWxlUGVlcEhv
bGVJbnRlZ2VyQnJhbmNoKG5vZGUsIGJyYW5jaE5vZGVJbmRleCwgSklUQ29tcGlsZXI6Okxlc3NU
aGFuKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBjb21waWxlUGVlcEhvbGVD
YWxsKG5vZGUsIGJyYW5jaE5vZGVJbmRleCwgb3BlcmF0aW9uQ29tcGFyZUxlc3MpOwotCi0gICAg
ICAgICAgICB1c2Uobm9kZS5jaGlsZDEpOwotICAgICAgICAgICAgdXNlKG5vZGUuY2hpbGQyKTsK
LSAgICAgICAgICAgIG1fY29tcGlsZUluZGV4ID0gYnJhbmNoTm9kZUluZGV4OworICAgIGNhc2Ug
Q29tcGFyZUxlc3M6CisgICAgICAgIGlmIChjb21wYXJlKG5vZGUsIEpJVENvbXBpbGVyOjpMZXNz
VGhhbiwgb3BlcmF0aW9uQ29tcGFyZUxlc3MpKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICB9Ci0KLSAgICAgICAgLy8gTm9ybWFsIGNhc2UsIG5vdCBmdXNlZCB0byBicmFuY2guCi0gICAg
ICAgIFNwZWN1bGF0ZUludGVnZXJPcGVyYW5kIG9wMSh0aGlzLCBub2RlLmNoaWxkMSk7Ci0gICAg
ICAgIFNwZWN1bGF0ZUludGVnZXJPcGVyYW5kIG9wMih0aGlzLCBub2RlLmNoaWxkMik7Ci0gICAg
ICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgb3AxLCBvcDIpOwotCi0gICAgICAgIG1faml0
LmNvbXBhcmUzMihKSVRDb21waWxlcjo6TGVzc1RoYW4sIG9wMS5ncHIoKSwgb3AyLmdwcigpLCBy
ZXN1bHQuZ3ByKCkpOwotCi0gICAgICAgIC8vIElmIHdlIGFkZCBhIERhdGFGb3JtYXRCb29sLCB3
ZSBzaG91bGQgdXNlIGl0IGhlcmUuCi0gICAgICAgIG1faml0Lm9yMzIoVHJ1c3RlZEltbTMyKFZh
bHVlRmFsc2UpLCByZXN1bHQuZ3ByKCkpOwotICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdC5n
cHIoKSwgbV9jb21waWxlSW5kZXgpOwogICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBjYXNl
IENvbXBhcmVMZXNzRXE6IHsKLSAgICAgICAgLy8gRnVzZWQgY29tcGFyZSAmIGJyYW5jaC4KLSAg
ICAgICAgTm9kZUluZGV4IGJyYW5jaE5vZGVJbmRleCA9IGRldGVjdFBlZXBIb2xlQnJhbmNoKCk7
Ci0gICAgICAgIGlmIChicmFuY2hOb2RlSW5kZXggIT0gTm9Ob2RlKSB7Ci0gICAgICAgICAgICAv
LyBkZXRlY3RQZWVwSG9sZUJyYW5jaCBjdXJyZW50bHkgb25seSBwZXJtaXRzIHRoZSBicmFuY2gg
dG8gYmUgdGhlIHZlcnkgbmV4dCBub2RlLAotICAgICAgICAgICAgLy8gc28gY2FuIGJlIG5vIGlu
dGVydmVuaW5nIG5vZGVzIHRvIGFsc28gcmVmZXJlbmNlIHRoZSBjb21wYXJlLiAKLSAgICAgICAg
ICAgIEFTU0VSVChub2RlLmFkanVzdGVkUmVmQ291bnQoKSA9PSAxKTsKIAotICAgICAgICAgICAg
aWYgKHNob3VsZFNwZWN1bGF0ZUludGVnZXIobm9kZS5jaGlsZDEsIG5vZGUuY2hpbGQyKSkKLSAg
ICAgICAgICAgICAgICBjb21waWxlUGVlcEhvbGVJbnRlZ2VyQnJhbmNoKG5vZGUsIGJyYW5jaE5v
ZGVJbmRleCwgSklUQ29tcGlsZXI6Okxlc3NUaGFuT3JFcXVhbCk7Ci0gICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgY29tcGlsZVBlZXBIb2xlQ2FsbChub2RlLCBicmFuY2hOb2RlSW5k
ZXgsIG9wZXJhdGlvbkNvbXBhcmVMZXNzRXEpOwotCi0gICAgICAgICAgICB1c2Uobm9kZS5jaGls
ZDEpOwotICAgICAgICAgICAgdXNlKG5vZGUuY2hpbGQyKTsKLSAgICAgICAgICAgIG1fY29tcGls
ZUluZGV4ID0gYnJhbmNoTm9kZUluZGV4OworICAgIGNhc2UgQ29tcGFyZUxlc3NFcToKKyAgICAg
ICAgaWYgKGNvbXBhcmUobm9kZSwgSklUQ29tcGlsZXI6Okxlc3NUaGFuT3JFcXVhbCwgb3BlcmF0
aW9uQ29tcGFyZUxlc3NFcSkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAg
ICAgICAvLyBOb3JtYWwgY2FzZSwgbm90IGZ1c2VkIHRvIGJyYW5jaC4KLSAgICAgICAgU3BlY3Vs
YXRlSW50ZWdlck9wZXJhbmQgb3AxKHRoaXMsIG5vZGUuY2hpbGQxKTsKLSAgICAgICAgU3BlY3Vs
YXRlSW50ZWdlck9wZXJhbmQgb3AyKHRoaXMsIG5vZGUuY2hpbGQyKTsKLSAgICAgICAgR1BSVGVt
cG9yYXJ5IHJlc3VsdCh0aGlzLCBvcDEsIG9wMik7Ci0KLSAgICAgICAgbV9qaXQuY29tcGFyZTMy
KEpJVENvbXBpbGVyOjpMZXNzVGhhbk9yRXF1YWwsIG9wMS5ncHIoKSwgb3AyLmdwcigpLCByZXN1
bHQuZ3ByKCkpOwotCi0gICAgICAgIC8vIElmIHdlIGFkZCBhIERhdGFGb3JtYXRCb29sLCB3ZSBz
aG91bGQgdXNlIGl0IGhlcmUuCi0gICAgICAgIG1faml0Lm9yMzIoVHJ1c3RlZEltbTMyKFZhbHVl
RmFsc2UpLCByZXN1bHQuZ3ByKCkpOwotICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdC5ncHIo
KSwgbV9jb21waWxlSW5kZXgpOwogICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBjYXNlIENv
bXBhcmVFcTogewotICAgICAgICAvLyBGdXNlZCBjb21wYXJlICYgYnJhbmNoLgotICAgICAgICBO
b2RlSW5kZXggYnJhbmNoTm9kZUluZGV4ID0gZGV0ZWN0UGVlcEhvbGVCcmFuY2goKTsKLSAgICAg
ICAgaWYgKGJyYW5jaE5vZGVJbmRleCAhPSBOb05vZGUpIHsKLSAgICAgICAgICAgIC8vIGRldGVj
dFBlZXBIb2xlQnJhbmNoIGN1cnJlbnRseSBvbmx5IHBlcm1pdHMgdGhlIGJyYW5jaCB0byBiZSB0
aGUgdmVyeSBuZXh0IG5vZGUsCi0gICAgICAgICAgICAvLyBzbyBjYW4gYmUgbm8gaW50ZXJ2ZW5p
bmcgbm9kZXMgdG8gYWxzbyByZWZlcmVuY2UgdGhlIGNvbXBhcmUuIAotICAgICAgICAgICAgQVNT
RVJUKG5vZGUuYWRqdXN0ZWRSZWZDb3VudCgpID09IDEpOwotCi0gICAgICAgICAgICBpZiAoc2hv
dWxkU3BlY3VsYXRlSW50ZWdlcihub2RlLmNoaWxkMSwgbm9kZS5jaGlsZDIpKQotICAgICAgICAg
ICAgICAgIGNvbXBpbGVQZWVwSG9sZUludGVnZXJCcmFuY2gobm9kZSwgYnJhbmNoTm9kZUluZGV4
LCBKSVRDb21waWxlcjo6RXF1YWwpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAg
IGNvbXBpbGVQZWVwSG9sZUNhbGwobm9kZSwgYnJhbmNoTm9kZUluZGV4LCBvcGVyYXRpb25Db21w
YXJlRXEpOwogCi0gICAgICAgICAgICB1c2Uobm9kZS5jaGlsZDEpOwotICAgICAgICAgICAgdXNl
KG5vZGUuY2hpbGQyKTsKLSAgICAgICAgICAgIG1fY29tcGlsZUluZGV4ID0gYnJhbmNoTm9kZUlu
ZGV4OworICAgIGNhc2UgQ29tcGFyZUdyZWF0ZXI6CisgICAgICAgIGlmIChjb21wYXJlKG5vZGUs
IEpJVENvbXBpbGVyOjpHcmVhdGVyVGhhbiwgb3BlcmF0aW9uQ29tcGFyZUdyZWF0ZXIpKQogICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgU3BlY3VsYXRlSW50ZWdlck9w
ZXJhbmQgb3AxKHRoaXMsIG5vZGUuY2hpbGQxKTsKLSAgICAgICAgU3BlY3VsYXRlSW50ZWdlck9w
ZXJhbmQgb3AyKHRoaXMsIG5vZGUuY2hpbGQyKTsKLSAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3Vs
dCh0aGlzLCBvcDEsIG9wMik7CisgICAgICAgIGJyZWFrOwogCi0gICAgICAgIG1faml0LmNvbXBh
cmUzMihKSVRDb21waWxlcjo6RXF1YWwsIG9wMS5ncHIoKSwgb3AyLmdwcigpLCByZXN1bHQuZ3By
KCkpOworICAgIGNhc2UgQ29tcGFyZUdyZWF0ZXJFcToKKyAgICAgICAgaWYgKGNvbXBhcmUobm9k
ZSwgSklUQ29tcGlsZXI6OkdyZWF0ZXJUaGFuT3JFcXVhbCwgb3BlcmF0aW9uQ29tcGFyZUdyZWF0
ZXJFcSkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGJyZWFrOwogCi0gICAgICAgIC8v
IElmIHdlIGFkZCBhIERhdGFGb3JtYXRCb29sLCB3ZSBzaG91bGQgdXNlIGl0IGhlcmUuCi0gICAg
ICAgIG1faml0Lm9yMzIoVHJ1c3RlZEltbTMyKFZhbHVlRmFsc2UpLCByZXN1bHQuZ3ByKCkpOwot
ICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdC5ncHIoKSwgbV9jb21waWxlSW5kZXgpOworICAg
IGNhc2UgQ29tcGFyZUVxOgorICAgICAgICBpZiAoY29tcGFyZShub2RlLCBKSVRDb21waWxlcjo6
RXF1YWwsIG9wZXJhdGlvbkNvbXBhcmVFcSkpCisgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IGJyZWFrOwotICAgIH0KIAogICAgIGNhc2UgQ29tcGFyZVN0cmljdEVxOiB7CiAgICAgICAgIFNw
ZWN1bGF0ZUludGVnZXJPcGVyYW5kIG9wMSh0aGlzLCBub2RlLmNoaWxkMSk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCShyZXZpc2lvbiA5
MDM1MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAko
d29ya2luZyBjb3B5KQpAQCAtMTg0LDYgKzE4NCw3IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVy
biAhKGlzRGF0YUZvcm1hdERvdWJsZShvcDEpIHx8IGlzRGF0YUZvcm1hdERvdWJsZShvcDIpKSAm
JiAoaXNJbnRlZ2VyKG9wMSkgfHwgaXNJbnRlZ2VyKG9wMikpOwogICAgIH0KIAorICAgIGJvb2wg
Y29tcGFyZShOb2RlJiwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxDb25kaXRpb24sIFpfREZH
T3BlcmF0aW9uX0VKSik7CiAgICAgdm9pZCBjb21waWxlUGVlcEhvbGVJbnRlZ2VyQnJhbmNoKE5v
ZGUmLCBOb2RlSW5kZXggYnJhbmNoTm9kZUluZGV4LCBKSVRDb21waWxlcjo6UmVsYXRpb25hbENv
bmRpdGlvbik7CiAgICAgdm9pZCBjb21waWxlUGVlcEhvbGVDYWxsKE5vZGUmLCBOb2RlSW5kZXgg
YnJhbmNoTm9kZUluZGV4LCBaX0RGR09wZXJhdGlvbl9FSkopOwogCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHJldmlzaW9u
IDkwMzUyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc5Niw2ICsxNzk2LDQwIEBAIEpTVmFsdWUgSW50ZXJw
cmV0ZXI6OnByaXZhdGVFeGVjdXRlKEV4ZWMKICAgICAgICAgdlBDICs9IE9QQ09ERV9MRU5HVEgo
b3BfbGVzc2VxKTsKICAgICAgICAgTkVYVF9JTlNUUlVDVElPTigpOwogICAgIH0KKyAgICBERUZJ
TkVfT1BDT0RFKG9wX2dyZWF0ZXIpIHsKKyAgICAgICAgLyogZ3JlYXRlciBkc3Qocikgc3JjMShy
KSBzcmMyKHIpCisKKyAgICAgICAgICAgQ2hlY2tzIHdoZXRoZXIgcmVnaXN0ZXIgc3JjMSBpcyBn
cmVhdGVyIHRoYW4gcmVnaXN0ZXIgc3JjMiwgYXMKKyAgICAgICAgICAgd2l0aCB0aGUgRUNNQVNj
cmlwdCAnPicgb3BlcmF0b3IsIGFuZCBwdXRzIHRoZSByZXN1bHQgYXMKKyAgICAgICAgICAgYSBi
b29sZWFuIGluIHJlZ2lzdGVyIGRzdC4KKyAgICAgICAgKi8KKyAgICAgICAgaW50IGRzdCA9IHZQ
Q1sxXS51Lm9wZXJhbmQ7CisgICAgICAgIEpTVmFsdWUgc3JjMSA9IGNhbGxGcmFtZS0+cih2UENb
Ml0udS5vcGVyYW5kKS5qc1ZhbHVlKCk7CisgICAgICAgIEpTVmFsdWUgc3JjMiA9IGNhbGxGcmFt
ZS0+cih2UENbM10udS5vcGVyYW5kKS5qc1ZhbHVlKCk7CisgICAgICAgIEpTVmFsdWUgcmVzdWx0
ID0ganNCb29sZWFuKGpzTGVzcyhjYWxsRnJhbWUsIHNyYzIsIHNyYzEpKTsgLy8gRklYTUU6IEJ1
ZyM2Mzg4MAorICAgICAgICBDSEVDS19GT1JfRVhDRVBUSU9OKCk7CisgICAgICAgIGNhbGxGcmFt
ZS0+dW5jaGVja2VkUihkc3QpID0gcmVzdWx0OworCisgICAgICAgIHZQQyArPSBPUENPREVfTEVO
R1RIKG9wX2dyZWF0ZXIpOworICAgICAgICBORVhUX0lOU1RSVUNUSU9OKCk7CisgICAgfQorICAg
IERFRklORV9PUENPREUob3BfZ3JlYXRlcmVxKSB7CisgICAgICAgIC8qIGdyZWF0ZXJlcSBkc3Qo
cikgc3JjMShyKSBzcmMyKHIpCisKKyAgICAgICAgICAgQ2hlY2tzIHdoZXRoZXIgcmVnaXN0ZXIg
c3JjMSBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8KKyAgICAgICAgICAgcmVnaXN0ZXIgc3Jj
MiwgYXMgd2l0aCB0aGUgRUNNQVNjcmlwdCAnPj0nIG9wZXJhdG9yLCBhbmQKKyAgICAgICAgICAg
cHV0cyB0aGUgcmVzdWx0IGFzIGEgYm9vbGVhbiBpbiByZWdpc3RlciBkc3QuCisgICAgICAgICov
CisgICAgICAgIGludCBkc3QgPSB2UENbMV0udS5vcGVyYW5kOworICAgICAgICBKU1ZhbHVlIHNy
YzEgPSBjYWxsRnJhbWUtPnIodlBDWzJdLnUub3BlcmFuZCkuanNWYWx1ZSgpOworICAgICAgICBK
U1ZhbHVlIHNyYzIgPSBjYWxsRnJhbWUtPnIodlBDWzNdLnUub3BlcmFuZCkuanNWYWx1ZSgpOwor
ICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzQm9vbGVhbihqc0xlc3NFcShjYWxsRnJhbWUsIHNy
YzIsIHNyYzEpKTsgLy8gRklYTUU6IEJ1ZyM2Mzg4MAorICAgICAgICBDSEVDS19GT1JfRVhDRVBU
SU9OKCk7CisgICAgICAgIGNhbGxGcmFtZS0+dW5jaGVja2VkUihkc3QpID0gcmVzdWx0OworCisg
ICAgICAgIHZQQyArPSBPUENPREVfTEVOR1RIKG9wX2dyZWF0ZXJlcSk7CisgICAgICAgIE5FWFRf
SU5TVFJVQ1RJT04oKTsKKyAgICB9CiAgICAgREVGSU5FX09QQ09ERShvcF9wcmVfaW5jKSB7CiAg
ICAgICAgIC8qIHByZV9pbmMgc3JjRHN0KHIpCiAKQEAgLTM2OTMsMjcgKzM3MjcsNTggQEAgc2tp
cF9pZF9jdXN0b21fc2VsZjoKICAgICAgICAgdlBDICs9IE9QQ09ERV9MRU5HVEgob3BfbG9vcF9p
Zl9sZXNzZXEpOwogICAgICAgICBORVhUX0lOU1RSVUNUSU9OKCk7CiAgICAgfQotICAgIERFRklO
RV9PUENPREUob3Bfam5sZXNzKSB7Ci0gICAgICAgIC8qIGpubGVzcyBzcmMxKHIpIHNyYzIocikg
dGFyZ2V0KG9mZnNldCkKKyAgICBERUZJTkVfT1BDT0RFKG9wX2xvb3BfaWZfZ3JlYXRlcikgewor
ICAgICAgICAvKiBsb29wX2lmX2dyZWF0ZXIgc3JjMShyKSBzcmMyKHIpIHRhcmdldChvZmZzZXQp
CiAKLSAgICAgICAgICAgQ2hlY2tzIHdoZXRoZXIgcmVnaXN0ZXIgc3JjMSBpcyBsZXNzIHRoYW4g
cmVnaXN0ZXIgc3JjMiwgYXMKLSAgICAgICAgICAgd2l0aCB0aGUgRUNNQVNjcmlwdCAnPCcgb3Bl
cmF0b3IsIGFuZCB0aGVuIGp1bXBzIHRvIG9mZnNldAorICAgICAgICAgICBDaGVja3Mgd2hldGhl
ciByZWdpc3RlciBzcmMxIGlzIGdyZWF0ZXIgdGhhbiByZWdpc3RlciBzcmMyLCBhcworICAgICAg
ICAgICB3aXRoIHRoZSBFQ01BU2NyaXB0ICc+JyBvcGVyYXRvciwgYW5kIHRoZW4ganVtcHMgdG8g
b2Zmc2V0CiAgICAgICAgICAgIHRhcmdldCBmcm9tIHRoZSBjdXJyZW50IGluc3RydWN0aW9uLCBp
ZiBhbmQgb25seSBpZiB0aGUgCi0gICAgICAgICAgIHJlc3VsdCBvZiB0aGUgY29tcGFyaXNvbiBp
cyBmYWxzZS4KLSAgICAgICAgKi8KKyAgICAgICAgICAgcmVzdWx0IG9mIHRoZSBjb21wYXJpc29u
IGlzIHRydWUuCisKKyAgICAgICAgICAgQWRkaXRpb25hbGx5IHRoaXMgbG9vcCBpbnN0cnVjdGlv
biBtYXkgdGVybWluYXRlIEpTIGV4ZWN1dGlvbiBpcworICAgICAgICAgICB0aGUgSlMgdGltZW91
dCBpcyByZWFjaGVkLgorICAgICAgICAgKi8KICAgICAgICAgSlNWYWx1ZSBzcmMxID0gY2FsbEZy
YW1lLT5yKHZQQ1sxXS51Lm9wZXJhbmQpLmpzVmFsdWUoKTsKICAgICAgICAgSlNWYWx1ZSBzcmMy
ID0gY2FsbEZyYW1lLT5yKHZQQ1syXS51Lm9wZXJhbmQpLmpzVmFsdWUoKTsKICAgICAgICAgaW50
IHRhcmdldCA9IHZQQ1szXS51Lm9wZXJhbmQ7Ci0KLSAgICAgICAgYm9vbCByZXN1bHQgPSBqc0xl
c3MoY2FsbEZyYW1lLCBzcmMxLCBzcmMyKTsKKyAgICAgICAgCisgICAgICAgIGJvb2wgcmVzdWx0
ID0ganNMZXNzKGNhbGxGcmFtZSwgc3JjMiwgc3JjMSk7IC8vIEZJWE1FOiBCdWcjNjM4ODAKICAg
ICAgICAgQ0hFQ0tfRk9SX0VYQ0VQVElPTigpOwogICAgICAgICAKLSAgICAgICAgaWYgKCFyZXN1
bHQpIHsKKyAgICAgICAgaWYgKHJlc3VsdCkgewogICAgICAgICAgICAgdlBDICs9IHRhcmdldDsK
KyAgICAgICAgICAgIENIRUNLX0ZPUl9USU1FT1VUKCk7CiAgICAgICAgICAgICBORVhUX0lOU1RS
VUNUSU9OKCk7CiAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHZQQyArPSBPUENPREVfTEVO
R1RIKG9wX2xvb3BfaWZfZ3JlYXRlcik7CisgICAgICAgIE5FWFRfSU5TVFJVQ1RJT04oKTsKKyAg
ICB9CisgICAgREVGSU5FX09QQ09ERShvcF9sb29wX2lmX2dyZWF0ZXJlcSkgeworICAgICAgICAv
KiBsb29wX2lmX2dyZWF0ZXJlcSBzcmMxKHIpIHNyYzIocikgdGFyZ2V0KG9mZnNldCkKIAotICAg
ICAgICB2UEMgKz0gT1BDT0RFX0xFTkdUSChvcF9qbmxlc3MpOworICAgICAgICAgICBDaGVja3Mg
d2hldGhlciByZWdpc3RlciBzcmMxIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byByZWdpc3Rl
cgorICAgICAgICAgICBzcmMyLCBhcyB3aXRoIHRoZSBFQ01BU2NyaXB0ICc+PScgb3BlcmF0b3Is
IGFuZCB0aGVuIGp1bXBzIHRvCisgICAgICAgICAgIG9mZnNldCB0YXJnZXQgZnJvbSB0aGUgY3Vy
cmVudCBpbnN0cnVjdGlvbiwgaWYgYW5kIG9ubHkgaWYgdGhlIAorICAgICAgICAgICByZXN1bHQg
b2YgdGhlIGNvbXBhcmlzb24gaXMgdHJ1ZS4KKworICAgICAgICAgICBBZGRpdGlvbmFsbHkgdGhp
cyBsb29wIGluc3RydWN0aW9uIG1heSB0ZXJtaW5hdGUgSlMgZXhlY3V0aW9uIGlzCisgICAgICAg
ICAgIHRoZSBKUyB0aW1lb3V0IGlzIHJlYWNoZWQuCisgICAgICAgICovCisgICAgICAgIEpTVmFs
dWUgc3JjMSA9IGNhbGxGcmFtZS0+cih2UENbMV0udS5vcGVyYW5kKS5qc1ZhbHVlKCk7CisgICAg
ICAgIEpTVmFsdWUgc3JjMiA9IGNhbGxGcmFtZS0+cih2UENbMl0udS5vcGVyYW5kKS5qc1ZhbHVl
KCk7CisgICAgICAgIGludCB0YXJnZXQgPSB2UENbM10udS5vcGVyYW5kOworICAgICAgICAKKyAg
ICAgICAgYm9vbCByZXN1bHQgPSBqc0xlc3NFcShjYWxsRnJhbWUsIHNyYzIsIHNyYzEpOyAvLyBG
SVhNRTogQnVnIzYzODgwCisgICAgICAgIENIRUNLX0ZPUl9FWENFUFRJT04oKTsKKyAgICAgICAg
CisgICAgICAgIGlmIChyZXN1bHQpIHsKKyAgICAgICAgICAgIHZQQyArPSB0YXJnZXQ7CisgICAg
ICAgICAgICBDSEVDS19GT1JfVElNRU9VVCgpOworICAgICAgICAgICAgTkVYVF9JTlNUUlVDVElP
TigpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB2UEMgKz0gT1BDT0RFX0xFTkdUSChv
cF9sb29wX2lmX2dyZWF0ZXJlcSk7CiAgICAgICAgIE5FWFRfSU5TVFJVQ1RJT04oKTsKICAgICB9
CiAgICAgREVGSU5FX09QQ09ERShvcF9qbGVzcykgewpAQCAtMzczOSw2ICszODA0LDk4IEBAIHNr
aXBfaWRfY3VzdG9tX3NlbGY6CiAgICAgICAgIHZQQyArPSBPUENPREVfTEVOR1RIKG9wX2psZXNz
KTsKICAgICAgICAgTkVYVF9JTlNUUlVDVElPTigpOwogICAgIH0KKyAgICBERUZJTkVfT1BDT0RF
KG9wX2psZXNzZXEpIHsKKyAgICAgICAgLyogamxlc3NlcSBzcmMxKHIpIHNyYzIocikgdGFyZ2V0
KG9mZnNldCkKKyAgICAgICAgIAorICAgICAgICAgQ2hlY2tzIHdoZXRoZXIgcmVnaXN0ZXIgc3Jj
MSBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8KKyAgICAgICAgIHJlZ2lzdGVyIHNyYzIsIGFzIHdp
dGggdGhlIEVDTUFTY3JpcHQgJzw9JyBvcGVyYXRvciwKKyAgICAgICAgIGFuZCB0aGVuIGp1bXBz
IHRvIG9mZnNldCB0YXJnZXQgZnJvbSB0aGUgY3VycmVudCBpbnN0cnVjdGlvbiwKKyAgICAgICAg
IGlmIGFuZCBvbmx5IGlmIHRoZSByZXN1bHQgb2YgdGhlIGNvbXBhcmlzb24gaXMgdHJ1ZS4KKyAg
ICAgICAgICovCisgICAgICAgIEpTVmFsdWUgc3JjMSA9IGNhbGxGcmFtZS0+cih2UENbMV0udS5v
cGVyYW5kKS5qc1ZhbHVlKCk7CisgICAgICAgIEpTVmFsdWUgc3JjMiA9IGNhbGxGcmFtZS0+cih2
UENbMl0udS5vcGVyYW5kKS5qc1ZhbHVlKCk7CisgICAgICAgIGludCB0YXJnZXQgPSB2UENbM10u
dS5vcGVyYW5kOworICAgICAgICAKKyAgICAgICAgYm9vbCByZXN1bHQgPSBqc0xlc3NFcShjYWxs
RnJhbWUsIHNyYzEsIHNyYzIpOworICAgICAgICBDSEVDS19GT1JfRVhDRVBUSU9OKCk7CisgICAg
ICAgIAorICAgICAgICBpZiAocmVzdWx0KSB7CisgICAgICAgICAgICB2UEMgKz0gdGFyZ2V0Owor
ICAgICAgICAgICAgTkVYVF9JTlNUUlVDVElPTigpOworICAgICAgICB9CisgICAgICAgIAorICAg
ICAgICB2UEMgKz0gT1BDT0RFX0xFTkdUSChvcF9qbGVzc2VxKTsKKyAgICAgICAgTkVYVF9JTlNU
UlVDVElPTigpOworICAgIH0KKyAgICBERUZJTkVfT1BDT0RFKG9wX2pncmVhdGVyKSB7CisgICAg
ICAgIC8qIGpncmVhdGVyIHNyYzEocikgc3JjMihyKSB0YXJnZXQob2Zmc2V0KQorCisgICAgICAg
ICAgIENoZWNrcyB3aGV0aGVyIHJlZ2lzdGVyIHNyYzEgaXMgZ3JlYXRlciB0aGFuIHJlZ2lzdGVy
IHNyYzIsIGFzCisgICAgICAgICAgIHdpdGggdGhlIEVDTUFTY3JpcHQgJz4nIG9wZXJhdG9yLCBh
bmQgdGhlbiBqdW1wcyB0byBvZmZzZXQKKyAgICAgICAgICAgdGFyZ2V0IGZyb20gdGhlIGN1cnJl
bnQgaW5zdHJ1Y3Rpb24sIGlmIGFuZCBvbmx5IGlmIHRoZSAKKyAgICAgICAgICAgcmVzdWx0IG9m
IHRoZSBjb21wYXJpc29uIGlzIHRydWUuCisgICAgICAgICovCisgICAgICAgIEpTVmFsdWUgc3Jj
MSA9IGNhbGxGcmFtZS0+cih2UENbMV0udS5vcGVyYW5kKS5qc1ZhbHVlKCk7CisgICAgICAgIEpT
VmFsdWUgc3JjMiA9IGNhbGxGcmFtZS0+cih2UENbMl0udS5vcGVyYW5kKS5qc1ZhbHVlKCk7Cisg
ICAgICAgIGludCB0YXJnZXQgPSB2UENbM10udS5vcGVyYW5kOworCisgICAgICAgIGJvb2wgcmVz
dWx0ID0ganNMZXNzKGNhbGxGcmFtZSwgc3JjMiwgc3JjMSk7IC8vIEZJWE1FOiBCdWcjNjM4ODAK
KyAgICAgICAgQ0hFQ0tfRk9SX0VYQ0VQVElPTigpOworICAgICAgICAKKyAgICAgICAgaWYgKHJl
c3VsdCkgeworICAgICAgICAgICAgdlBDICs9IHRhcmdldDsKKyAgICAgICAgICAgIE5FWFRfSU5T
VFJVQ1RJT04oKTsKKyAgICAgICAgfQorCisgICAgICAgIHZQQyArPSBPUENPREVfTEVOR1RIKG9w
X2pncmVhdGVyKTsKKyAgICAgICAgTkVYVF9JTlNUUlVDVElPTigpOworICAgIH0KKyAgICBERUZJ
TkVfT1BDT0RFKG9wX2pncmVhdGVyZXEpIHsKKyAgICAgICAgLyogamdyZWF0ZXJlcSBzcmMxKHIp
IHNyYzIocikgdGFyZ2V0KG9mZnNldCkKKyAgICAgICAgIAorICAgICAgICAgQ2hlY2tzIHdoZXRo
ZXIgcmVnaXN0ZXIgc3JjMSBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8KKyAgICAgICAgIHJl
Z2lzdGVyIHNyYzIsIGFzIHdpdGggdGhlIEVDTUFTY3JpcHQgJz49JyBvcGVyYXRvciwKKyAgICAg
ICAgIGFuZCB0aGVuIGp1bXBzIHRvIG9mZnNldCB0YXJnZXQgZnJvbSB0aGUgY3VycmVudCBpbnN0
cnVjdGlvbiwKKyAgICAgICAgIGlmIGFuZCBvbmx5IGlmIHRoZSByZXN1bHQgb2YgdGhlIGNvbXBh
cmlzb24gaXMgdHJ1ZS4KKyAgICAgICAgICovCisgICAgICAgIEpTVmFsdWUgc3JjMSA9IGNhbGxG
cmFtZS0+cih2UENbMV0udS5vcGVyYW5kKS5qc1ZhbHVlKCk7CisgICAgICAgIEpTVmFsdWUgc3Jj
MiA9IGNhbGxGcmFtZS0+cih2UENbMl0udS5vcGVyYW5kKS5qc1ZhbHVlKCk7CisgICAgICAgIGlu
dCB0YXJnZXQgPSB2UENbM10udS5vcGVyYW5kOworICAgICAgICAKKyAgICAgICAgYm9vbCByZXN1
bHQgPSBqc0xlc3NFcShjYWxsRnJhbWUsIHNyYzIsIHNyYzEpOyAvLyBGSVhNRTogQnVnIzYzODgw
CisgICAgICAgIENIRUNLX0ZPUl9FWENFUFRJT04oKTsKKyAgICAgICAgCisgICAgICAgIGlmIChy
ZXN1bHQpIHsKKyAgICAgICAgICAgIHZQQyArPSB0YXJnZXQ7CisgICAgICAgICAgICBORVhUX0lO
U1RSVUNUSU9OKCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHZQQyArPSBPUENPREVf
TEVOR1RIKG9wX2pncmVhdGVyZXEpOworICAgICAgICBORVhUX0lOU1RSVUNUSU9OKCk7CisgICAg
fQorICAgIERFRklORV9PUENPREUob3Bfam5sZXNzKSB7CisgICAgICAgIC8qIGpubGVzcyBzcmMx
KHIpIHNyYzIocikgdGFyZ2V0KG9mZnNldCkKKworICAgICAgICAgICBDaGVja3Mgd2hldGhlciBy
ZWdpc3RlciBzcmMxIGlzIGxlc3MgdGhhbiByZWdpc3RlciBzcmMyLCBhcworICAgICAgICAgICB3
aXRoIHRoZSBFQ01BU2NyaXB0ICc8JyBvcGVyYXRvciwgYW5kIHRoZW4ganVtcHMgdG8gb2Zmc2V0
CisgICAgICAgICAgIHRhcmdldCBmcm9tIHRoZSBjdXJyZW50IGluc3RydWN0aW9uLCBpZiBhbmQg
b25seSBpZiB0aGUgCisgICAgICAgICAgIHJlc3VsdCBvZiB0aGUgY29tcGFyaXNvbiBpcyBmYWxz
ZS4KKyAgICAgICAgKi8KKyAgICAgICAgSlNWYWx1ZSBzcmMxID0gY2FsbEZyYW1lLT5yKHZQQ1sx
XS51Lm9wZXJhbmQpLmpzVmFsdWUoKTsKKyAgICAgICAgSlNWYWx1ZSBzcmMyID0gY2FsbEZyYW1l
LT5yKHZQQ1syXS51Lm9wZXJhbmQpLmpzVmFsdWUoKTsKKyAgICAgICAgaW50IHRhcmdldCA9IHZQ
Q1szXS51Lm9wZXJhbmQ7CisKKyAgICAgICAgYm9vbCByZXN1bHQgPSBqc0xlc3MoY2FsbEZyYW1l
LCBzcmMxLCBzcmMyKTsKKyAgICAgICAgQ0hFQ0tfRk9SX0VYQ0VQVElPTigpOworICAgICAgICAK
KyAgICAgICAgaWYgKCFyZXN1bHQpIHsKKyAgICAgICAgICAgIHZQQyArPSB0YXJnZXQ7CisgICAg
ICAgICAgICBORVhUX0lOU1RSVUNUSU9OKCk7CisgICAgICAgIH0KKworICAgICAgICB2UEMgKz0g
T1BDT0RFX0xFTkdUSChvcF9qbmxlc3MpOworICAgICAgICBORVhUX0lOU1RSVUNUSU9OKCk7Cisg
ICAgfQogICAgIERFRklORV9PUENPREUob3Bfam5sZXNzZXEpIHsKICAgICAgICAgLyogam5sZXNz
ZXEgc3JjMShyKSBzcmMyKHIpIHRhcmdldChvZmZzZXQpCiAKQEAgLTM3NjIsMjcgKzM5MTksNTAg
QEAgc2tpcF9pZF9jdXN0b21fc2VsZjoKICAgICAgICAgdlBDICs9IE9QQ09ERV9MRU5HVEgob3Bf
am5sZXNzZXEpOwogICAgICAgICBORVhUX0lOU1RSVUNUSU9OKCk7CiAgICAgfQotICAgIERFRklO
RV9PUENPREUob3Bfamxlc3NlcSkgewotICAgICAgICAvKiBqbGVzc2VxIHNyYzEocikgc3JjMihy
KSB0YXJnZXQob2Zmc2V0KQotICAgICAgICAgCi0gICAgICAgICBDaGVja3Mgd2hldGhlciByZWdp
c3RlciBzcmMxIGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0bwotICAgICAgICAgcmVnaXN0ZXIgc3Jj
MiwgYXMgd2l0aCB0aGUgRUNNQVNjcmlwdCAnPD0nIG9wZXJhdG9yLAotICAgICAgICAgYW5kIHRo
ZW4ganVtcHMgdG8gb2Zmc2V0IHRhcmdldCBmcm9tIHRoZSBjdXJyZW50IGluc3RydWN0aW9uLAot
ICAgICAgICAgaWYgYW5kIG9ubHkgaWYgdGhlIHJlc3VsdCBvZiB0aGUgY29tcGFyaXNvbiBpcyB0
cnVlLgotICAgICAgICAgKi8KKyAgICBERUZJTkVfT1BDT0RFKG9wX2puZ3JlYXRlcikgeworICAg
ICAgICAvKiBqbmdyZWF0ZXIgc3JjMShyKSBzcmMyKHIpIHRhcmdldChvZmZzZXQpCisKKyAgICAg
ICAgICAgQ2hlY2tzIHdoZXRoZXIgcmVnaXN0ZXIgc3JjMSBpcyBncmVhdGVyIHRoYW4gcmVnaXN0
ZXIgc3JjMiwgYXMKKyAgICAgICAgICAgd2l0aCB0aGUgRUNNQVNjcmlwdCAnPicgb3BlcmF0b3Is
IGFuZCB0aGVuIGp1bXBzIHRvIG9mZnNldAorICAgICAgICAgICB0YXJnZXQgZnJvbSB0aGUgY3Vy
cmVudCBpbnN0cnVjdGlvbiwgaWYgYW5kIG9ubHkgaWYgdGhlIAorICAgICAgICAgICByZXN1bHQg
b2YgdGhlIGNvbXBhcmlzb24gaXMgZmFsc2UuCisgICAgICAgICovCiAgICAgICAgIEpTVmFsdWUg
c3JjMSA9IGNhbGxGcmFtZS0+cih2UENbMV0udS5vcGVyYW5kKS5qc1ZhbHVlKCk7CiAgICAgICAg
IEpTVmFsdWUgc3JjMiA9IGNhbGxGcmFtZS0+cih2UENbMl0udS5vcGVyYW5kKS5qc1ZhbHVlKCk7
CiAgICAgICAgIGludCB0YXJnZXQgPSB2UENbM10udS5vcGVyYW5kOwotICAgICAgICAKLSAgICAg
ICAgYm9vbCByZXN1bHQgPSBqc0xlc3NFcShjYWxsRnJhbWUsIHNyYzEsIHNyYzIpOworCisgICAg
ICAgIGJvb2wgcmVzdWx0ID0ganNMZXNzKGNhbGxGcmFtZSwgc3JjMiwgc3JjMSk7IC8vIEZJWE1F
OiBCdWcjNjM4ODAKICAgICAgICAgQ0hFQ0tfRk9SX0VYQ0VQVElPTigpOwogICAgICAgICAKLSAg
ICAgICAgaWYgKHJlc3VsdCkgeworICAgICAgICBpZiAoIXJlc3VsdCkgewogICAgICAgICAgICAg
dlBDICs9IHRhcmdldDsKICAgICAgICAgICAgIE5FWFRfSU5TVFJVQ1RJT04oKTsKICAgICAgICAg
fQorCisgICAgICAgIHZQQyArPSBPUENPREVfTEVOR1RIKG9wX2puZ3JlYXRlcik7CisgICAgICAg
IE5FWFRfSU5TVFJVQ1RJT04oKTsKKyAgICB9CisgICAgREVGSU5FX09QQ09ERShvcF9qbmdyZWF0
ZXJlcSkgeworICAgICAgICAvKiBqbmdyZWF0ZXJlcSBzcmMxKHIpIHNyYzIocikgdGFyZ2V0KG9m
ZnNldCkKKworICAgICAgICAgICBDaGVja3Mgd2hldGhlciByZWdpc3RlciBzcmMxIGlzIGdyZWF0
ZXIgdGhhbiBvciBlcXVhbCB0bworICAgICAgICAgICByZWdpc3RlciBzcmMyLCBhcyB3aXRoIHRo
ZSBFQ01BU2NyaXB0ICc+PScgb3BlcmF0b3IsCisgICAgICAgICAgIGFuZCB0aGVuIGp1bXBzIHRv
IG9mZnNldCB0YXJnZXQgZnJvbSB0aGUgY3VycmVudCBpbnN0cnVjdGlvbiwKKyAgICAgICAgICAg
aWYgYW5kIG9ubHkgaWYgdGhlcmVzdWx0IG9mIHRoZSBjb21wYXJpc29uIGlzIGZhbHNlLgorICAg
ICAgICAqLworICAgICAgICBKU1ZhbHVlIHNyYzEgPSBjYWxsRnJhbWUtPnIodlBDWzFdLnUub3Bl
cmFuZCkuanNWYWx1ZSgpOworICAgICAgICBKU1ZhbHVlIHNyYzIgPSBjYWxsRnJhbWUtPnIodlBD
WzJdLnUub3BlcmFuZCkuanNWYWx1ZSgpOworICAgICAgICBpbnQgdGFyZ2V0ID0gdlBDWzNdLnUu
b3BlcmFuZDsKKworICAgICAgICBib29sIHJlc3VsdCA9IGpzTGVzc0VxKGNhbGxGcmFtZSwgc3Jj
Miwgc3JjMSk7IC8vIEZJWE1FOiBCdWcjNjM4ODAKKyAgICAgICAgQ0hFQ0tfRk9SX0VYQ0VQVElP
TigpOwogICAgICAgICAKLSAgICAgICAgdlBDICs9IE9QQ09ERV9MRU5HVEgob3Bfamxlc3NlcSk7
CisgICAgICAgIGlmICghcmVzdWx0KSB7CisgICAgICAgICAgICB2UEMgKz0gdGFyZ2V0OworICAg
ICAgICAgICAgTkVYVF9JTlNUUlVDVElPTigpOworICAgICAgICB9CisKKyAgICAgICAgdlBDICs9
IE9QQ09ERV9MRU5HVEgob3Bfam5ncmVhdGVyZXEpOwogICAgICAgICBORVhUX0lOU1RSVUNUSU9O
KCk7CiAgICAgfQogICAgIERFRklORV9PUENPREUob3Bfc3dpdGNoX2ltbSkgewpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmNwcAkocmV2aXNpb24gOTAzNTIpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5OCw2ICsxOTgsOCBAQCB2
b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9CSU5BUllf
T1Aob3BfaW4pCiAgICAgICAgIERFRklORV9CSU5BUllfT1Aob3BfbGVzcykKICAgICAgICAgREVG
SU5FX0JJTkFSWV9PUChvcF9sZXNzZXEpCisgICAgICAgIERFRklORV9CSU5BUllfT1Aob3BfZ3Jl
YXRlcikKKyAgICAgICAgREVGSU5FX0JJTkFSWV9PUChvcF9ncmVhdGVyZXEpCiAgICAgICAgIERF
RklORV9VTkFSWV9PUChvcF9pc19ib29sZWFuKQogICAgICAgICBERUZJTkVfVU5BUllfT1Aob3Bf
aXNfZnVuY3Rpb24pCiAgICAgICAgIERFRklORV9VTkFSWV9PUChvcF9pc19udW1iZXIpCkBAIC0y
NDksMTYgKzI1MSwyMiBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAg
ICAgIERFRklORV9PUChvcF9qbXBfc2NvcGVzKQogICAgICAgICBERUZJTkVfT1Aob3Bfam5lcV9u
dWxsKQogICAgICAgICBERUZJTkVfT1Aob3Bfam5lcV9wdHIpCi0gICAgICAgIERFRklORV9PUChv
cF9qbmxlc3MpCiAgICAgICAgIERFRklORV9PUChvcF9qbGVzcykKICAgICAgICAgREVGSU5FX09Q
KG9wX2psZXNzZXEpCisgICAgICAgIERFRklORV9PUChvcF9qZ3JlYXRlcikKKyAgICAgICAgREVG
SU5FX09QKG9wX2pncmVhdGVyZXEpCisgICAgICAgIERFRklORV9PUChvcF9qbmxlc3MpCiAgICAg
ICAgIERFRklORV9PUChvcF9qbmxlc3NlcSkKKyAgICAgICAgREVGSU5FX09QKG9wX2puZ3JlYXRl
cikKKyAgICAgICAgREVGSU5FX09QKG9wX2puZ3JlYXRlcmVxKQogICAgICAgICBERUZJTkVfT1Ao
b3BfanNyKQogICAgICAgICBERUZJTkVfT1Aob3BfanRydWUpCiAgICAgICAgIERFRklORV9PUChv
cF9sb2FkX3ZhcmFyZ3MpCiAgICAgICAgIERFRklORV9PUChvcF9sb29wKQogICAgICAgICBERUZJ
TkVfT1Aob3BfbG9vcF9pZl9sZXNzKQogICAgICAgICBERUZJTkVfT1Aob3BfbG9vcF9pZl9sZXNz
ZXEpCisgICAgICAgIERFRklORV9PUChvcF9sb29wX2lmX2dyZWF0ZXIpCisgICAgICAgIERFRklO
RV9PUChvcF9sb29wX2lmX2dyZWF0ZXJlcSkKICAgICAgICAgREVGSU5FX09QKG9wX2xvb3BfaWZf
dHJ1ZSkKICAgICAgICAgREVGSU5FX09QKG9wX2xvb3BfaWZfZmFsc2UpCiAgICAgICAgIERFRklO
RV9PUChvcF9sc2hpZnQpCkBAIC00MDUsMTQgKzQxMywyMCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNv
bXBpbGVTbG93Q2FzZXMoKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfY2hlY2tfaGFz
X2luc3RhbmNlKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfaW5zdGFuY2VvZikKICAg
ICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2pmYWxzZSkKLSAgICAgICAgREVGSU5FX1NMT1dD
QVNFX09QKG9wX2pubGVzcykKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2psZXNzKQog
ICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3Bfamxlc3NlcSkKKyAgICAgICAgREVGSU5FX1NM
T1dDQVNFX09QKG9wX2pncmVhdGVyKQorICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3Bfamdy
ZWF0ZXJlcSkKKyAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2pubGVzcykKICAgICAgICAg
REVGSU5FX1NMT1dDQVNFX09QKG9wX2pubGVzc2VxKQorICAgICAgICBERUZJTkVfU0xPV0NBU0Vf
T1Aob3Bfam5ncmVhdGVyKQorICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3Bfam5ncmVhdGVy
ZXEpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9qdHJ1ZSkKICAgICAgICAgREVGSU5F
X1NMT1dDQVNFX09QKG9wX2xvYWRfdmFyYXJncykKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09Q
KG9wX2xvb3BfaWZfbGVzcykKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2xvb3BfaWZf
bGVzc2VxKQorICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfbG9vcF9pZl9ncmVhdGVyKQor
ICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfbG9vcF9pZl9ncmVhdGVyZXEpCiAgICAgICAg
IERFRklORV9TTE9XQ0FTRV9PUChvcF9sb29wX2lmX3RydWUpCiAgICAgICAgIERFRklORV9TTE9X
Q0FTRV9PUChvcF9sb29wX2lmX2ZhbHNlKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3Bf
bHNoaWZ0KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCShyZXZpc2lvbiA5MDM1MikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTc2Mywx
NiArNzYzLDIyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRfb3Bfam1wX3Nj
b3BlcyhJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3Bfam5lcV9udWxsKEluc3Ry
dWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9qbmVxX3B0cihJbnN0cnVjdGlvbiopOwot
ICAgICAgICB2b2lkIGVtaXRfb3Bfam5sZXNzKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQg
ZW1pdF9vcF9qbGVzcyhJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3Bfamxlc3Nl
cShJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfamdyZWF0ZXIoSW5zdHJ1Y3Rp
b24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2pncmVhdGVyZXEoSW5zdHJ1Y3Rpb24qKTsKKyAg
ICAgICAgdm9pZCBlbWl0X29wX2pubGVzcyhJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVt
aXRfb3Bfam5sZXNzZXEoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2puZ3Jl
YXRlcihJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3Bfam5ncmVhdGVyZXEoSW5z
dHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2pzcihJbnN0cnVjdGlvbiopOwogICAg
ICAgICB2b2lkIGVtaXRfb3BfanRydWUoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0
X29wX2xvYWRfdmFyYXJncyhJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfbG9v
cChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfbG9vcF9pZl9sZXNzKEluc3Ry
dWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9sb29wX2lmX2xlc3NlcShJbnN0cnVjdGlv
biopOworICAgICAgICB2b2lkIGVtaXRfb3BfbG9vcF9pZl9ncmVhdGVyKEluc3RydWN0aW9uKik7
CisgICAgICAgIHZvaWQgZW1pdF9vcF9sb29wX2lmX2dyZWF0ZXJlcShJbnN0cnVjdGlvbiopOwog
ICAgICAgICB2b2lkIGVtaXRfb3BfbG9vcF9pZl90cnVlKEluc3RydWN0aW9uKik7CiAgICAgICAg
IHZvaWQgZW1pdF9vcF9sb29wX2lmX2ZhbHNlKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQg
ZW1pdF9vcF9sc2hpZnQoSW5zdHJ1Y3Rpb24qKTsKQEAgLTg1OSwxNCArODY1LDIwIEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRTbG93X29wX2NoZWNrX2hhc19pbnN0YW5jZShJ
bnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAg
dm9pZCBlbWl0U2xvd19vcF9pbnN0YW5jZW9mKEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNl
RW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX2pmYWxzZShJbnN0
cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKLSAgICAgICAgdm9p
ZCBlbWl0U2xvd19vcF9qbmxlc3MoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46
Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3Bfamxlc3MoSW5zdHJ1Y3Rpb24q
LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNs
b3dfb3Bfamxlc3NlcShJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0
b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9qZ3JlYXRlcihJbnN0cnVjdGlvbiosIFZl
Y3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19v
cF9qZ3JlYXRlcmVxKEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRv
ciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX2pubGVzcyhJbnN0cnVjdGlvbiosIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9q
bmxlc3NlcShJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsK
KyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9qbmdyZWF0ZXIoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8
U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3Bfam5n
cmVhdGVyZXEoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7
CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfanRydWUoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xv
d0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfbG9hZF92
YXJhcmdzKEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwog
ICAgICAgICB2b2lkIGVtaXRTbG93X29wX2xvb3BfaWZfbGVzcyhJbnN0cnVjdGlvbiosIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9s
b29wX2lmX2xlc3NlcShJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0
b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9sb29wX2lmX2dyZWF0ZXIoSW5zdHJ1Y3Rp
b24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CisgICAgICAgIHZvaWQgZW1p
dFNsb3dfb3BfbG9vcF9pZl9ncmVhdGVyZXEoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VF
bnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfbG9vcF9pZl90cnVl
KEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAg
ICB2b2lkIGVtaXRTbG93X29wX2xvb3BfaWZfZmFsc2UoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xv
d0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfbHNoaWZ0
KEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwpAQCAtMTA1
NCw2ICsxMDY2LDI4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBlbWl0U2xvd19vcF9qbGVz
c2VxKGN1cnJlbnRJbnN0cnVjdGlvbiwgaXRlcik7CiAgICAgfQogCisgICAgaW5saW5lIHZvaWQg
SklUOjplbWl0X29wX2xvb3BfaWZfZ3JlYXRlcihJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQorICAgIHsKKyAgICAgICAgZW1pdFRpbWVvdXRDaGVjaygpOworICAgICAgICBlbWl0X29w
X2pncmVhdGVyKGN1cnJlbnRJbnN0cnVjdGlvbik7CisgICAgfQorCisgICAgaW5saW5lIHZvaWQg
SklUOjplbWl0U2xvd19vcF9sb29wX2lmX2dyZWF0ZXIoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKKyAgICB7Cisg
ICAgICAgIGVtaXRTbG93X29wX2pncmVhdGVyKGN1cnJlbnRJbnN0cnVjdGlvbiwgaXRlcik7Cisg
ICAgfQorCisgICAgaW5saW5lIHZvaWQgSklUOjplbWl0X29wX2xvb3BfaWZfZ3JlYXRlcmVxKElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCisgICAgeworICAgICAgICBlbWl0VGltZW91
dENoZWNrKCk7CisgICAgICAgIGVtaXRfb3BfamdyZWF0ZXJlcShjdXJyZW50SW5zdHJ1Y3Rpb24p
OworICAgIH0KKworICAgIGlubGluZSB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbG9vcF9pZl9ncmVh
dGVyZXEoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50
cnk+OjppdGVyYXRvciYgaXRlcikKKyAgICB7CisgICAgICAgIGVtaXRTbG93X29wX2pncmVhdGVy
ZXEoY3VycmVudEluc3RydWN0aW9uLCBpdGVyKTsKKyAgICB9CisKIH0gLy8gbmFtZXNwYWNlIEpT
QwogCiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUQXJpdGhtZXRpYzMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVEFyaXRobWV0aWMzMl82NC5jcHAJKHJldmlzaW9uIDkwMzUyKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljMzJfNjQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC04NjQsMTAgKzg2NCw2IEBAIHZvaWQgSklUOjplbWl0QmluYXJ5RG91YmxlT3AoT3Bj
b2RlSUQgb3AKICAgICAgICAgICAgICAgICBkaXZEb3VibGUoZnBSZWdUMCwgZnBSZWdUMSk7CiAg
ICAgICAgICAgICAgICAgZW1pdFN0b3JlRG91YmxlKGRzdCwgZnBSZWdUMSk7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIG9wX2pubGVzczoKLSAgICAgICAgICAgICAg
ICBlbWl0TG9hZERvdWJsZShvcDEsIGZwUmVnVDIpOwotICAgICAgICAgICAgICAgIGFkZEp1bXAo
YnJhbmNoRG91YmxlKERvdWJsZUxlc3NUaGFuT3JFcXVhbE9yVW5vcmRlcmVkLCBmcFJlZ1QwLCBm
cFJlZ1QyKSwgZHN0KTsKLSAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2Ug
b3Bfamxlc3M6CiAgICAgICAgICAgICAgICAgZW1pdExvYWREb3VibGUob3AxLCBmcFJlZ1QyKTsK
ICAgICAgICAgICAgICAgICBhZGRKdW1wKGJyYW5jaERvdWJsZShEb3VibGVMZXNzVGhhbiwgZnBS
ZWdUMiwgZnBSZWdUMCksIGRzdCk7CkBAIC04NzYsMTAgKzg3MiwzMCBAQCB2b2lkIEpJVDo6ZW1p
dEJpbmFyeURvdWJsZU9wKE9wY29kZUlEIG9wCiAgICAgICAgICAgICAgICAgZW1pdExvYWREb3Vi
bGUob3AxLCBmcFJlZ1QyKTsKICAgICAgICAgICAgICAgICBhZGRKdW1wKGJyYW5jaERvdWJsZShE
b3VibGVMZXNzVGhhbk9yRXF1YWwsIGZwUmVnVDIsIGZwUmVnVDApLCBkc3QpOwogICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBvcF9qZ3JlYXRlcjoKKyAgICAgICAgICAg
ICAgICBlbWl0TG9hZERvdWJsZShvcDEsIGZwUmVnVDIpOworICAgICAgICAgICAgICAgIGFkZEp1
bXAoYnJhbmNoRG91YmxlKERvdWJsZUdyZWF0ZXJUaGFuLCBmcFJlZ1QyLCBmcFJlZ1QwKSwgZHN0
KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2Ugb3BfamdyZWF0ZXJl
cToKKyAgICAgICAgICAgICAgICBlbWl0TG9hZERvdWJsZShvcDEsIGZwUmVnVDIpOworICAgICAg
ICAgICAgICAgIGFkZEp1bXAoYnJhbmNoRG91YmxlKERvdWJsZUdyZWF0ZXJUaGFuT3JFcXVhbCwg
ZnBSZWdUMiwgZnBSZWdUMCksIGRzdCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICBjYXNlIG9wX2pubGVzczoKKyAgICAgICAgICAgICAgICBlbWl0TG9hZERvdWJsZShvcDEs
IGZwUmVnVDIpOworICAgICAgICAgICAgICAgIGFkZEp1bXAoYnJhbmNoRG91YmxlKERvdWJsZUxl
c3NUaGFuT3JFcXVhbE9yVW5vcmRlcmVkLCBmcFJlZ1QwLCBmcFJlZ1QyKSwgZHN0KTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2Ugb3Bfam5sZXNzZXE6CiAgICAgICAg
ICAgICAgICAgZW1pdExvYWREb3VibGUob3AxLCBmcFJlZ1QyKTsKICAgICAgICAgICAgICAgICBh
ZGRKdW1wKGJyYW5jaERvdWJsZShEb3VibGVMZXNzVGhhbk9yVW5vcmRlcmVkLCBmcFJlZ1QwLCBm
cFJlZ1QyKSwgZHN0KTsKICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2Ug
b3Bfam5ncmVhdGVyOgorICAgICAgICAgICAgICAgIGVtaXRMb2FkRG91YmxlKG9wMSwgZnBSZWdU
Mik7CisgICAgICAgICAgICAgICAgYWRkSnVtcChicmFuY2hEb3VibGUoRG91YmxlR3JlYXRlclRo
YW5PckVxdWFsT3JVbm9yZGVyZWQsIGZwUmVnVDAsIGZwUmVnVDIpLCBkc3QpOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBvcF9qbmdyZWF0ZXJlcToKKyAgICAgICAg
ICAgICAgICBlbWl0TG9hZERvdWJsZShvcDEsIGZwUmVnVDIpOworICAgICAgICAgICAgICAgIGFk
ZEp1bXAoYnJhbmNoRG91YmxlKERvdWJsZUdyZWF0ZXJUaGFuT3JVbm9yZGVyZWQsIGZwUmVnVDAs
IGZwUmVnVDIpLCBkc3QpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZGVm
YXVsdDoKICAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQpA
QCAtOTI1LDIxICs5NDEsMzcgQEAgdm9pZCBKSVQ6OmVtaXRCaW5hcnlEb3VibGVPcChPcGNvZGVJ
RCBvcAogICAgICAgICAgICAgICAgIGRpdkRvdWJsZShmcFJlZ1QyLCBmcFJlZ1QwKTsKICAgICAg
ICAgICAgICAgICBlbWl0U3RvcmVEb3VibGUoZHN0LCBmcFJlZ1QwKTsKICAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgIGNhc2Ugb3Bfam5sZXNzOgotICAgICAgICAgICAgICAgIGVt
aXRMb2FkRG91YmxlKG9wMiwgZnBSZWdUMSk7Ci0gICAgICAgICAgICAgICAgYWRkSnVtcChicmFu
Y2hEb3VibGUoRG91YmxlTGVzc1RoYW5PckVxdWFsT3JVbm9yZGVyZWQsIGZwUmVnVDEsIGZwUmVn
VDApLCBkc3QpOwotICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBvcF9q
bGVzczoKICAgICAgICAgICAgICAgICBlbWl0TG9hZERvdWJsZShvcDIsIGZwUmVnVDEpOwogICAg
ICAgICAgICAgICAgIGFkZEp1bXAoYnJhbmNoRG91YmxlKERvdWJsZUxlc3NUaGFuLCBmcFJlZ1Qw
LCBmcFJlZ1QxKSwgZHN0KTsKICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNh
c2Ugb3Bfamxlc3NlcToKKyAgICAgICAgICAgICAgICBlbWl0TG9hZERvdWJsZShvcDIsIGZwUmVn
VDEpOworICAgICAgICAgICAgICAgIGFkZEp1bXAoYnJhbmNoRG91YmxlKERvdWJsZUxlc3NUaGFu
T3JFcXVhbCwgZnBSZWdUMCwgZnBSZWdUMSksIGRzdCk7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICBjYXNlIG9wX2pncmVhdGVyOgorICAgICAgICAgICAgICAgIGVtaXRMb2Fk
RG91YmxlKG9wMiwgZnBSZWdUMSk7CisgICAgICAgICAgICAgICAgYWRkSnVtcChicmFuY2hEb3Vi
bGUoRG91YmxlR3JlYXRlclRoYW4sIGZwUmVnVDAsIGZwUmVnVDEpLCBkc3QpOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBvcF9qZ3JlYXRlcmVxOgorICAgICAgICAg
ICAgICAgIGVtaXRMb2FkRG91YmxlKG9wMiwgZnBSZWdUMSk7CisgICAgICAgICAgICAgICAgYWRk
SnVtcChicmFuY2hEb3VibGUoRG91YmxlR3JlYXRlclRoYW5PckVxdWFsLCBmcFJlZ1QwLCBmcFJl
Z1QxKSwgZHN0KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2Ugb3Bf
am5sZXNzOgorICAgICAgICAgICAgICAgIGVtaXRMb2FkRG91YmxlKG9wMiwgZnBSZWdUMSk7Cisg
ICAgICAgICAgICAgICAgYWRkSnVtcChicmFuY2hEb3VibGUoRG91YmxlTGVzc1RoYW5PckVxdWFs
T3JVbm9yZGVyZWQsIGZwUmVnVDEsIGZwUmVnVDApLCBkc3QpOworICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgY2FzZSBvcF9qbmxlc3NlcToKICAgICAgICAgICAgICAgICBlbWl0
TG9hZERvdWJsZShvcDIsIGZwUmVnVDEpOwogICAgICAgICAgICAgICAgIGFkZEp1bXAoYnJhbmNo
RG91YmxlKERvdWJsZUxlc3NUaGFuT3JVbm9yZGVyZWQsIGZwUmVnVDEsIGZwUmVnVDApLCBkc3Qp
OwogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBvcF9qbGVzc2VxOgor
ICAgICAgICAgICAgY2FzZSBvcF9qbmdyZWF0ZXI6CiAgICAgICAgICAgICAgICAgZW1pdExvYWRE
b3VibGUob3AyLCBmcFJlZ1QxKTsKLSAgICAgICAgICAgICAgICBhZGRKdW1wKGJyYW5jaERvdWJs
ZShEb3VibGVMZXNzVGhhbk9yRXF1YWwsIGZwUmVnVDAsIGZwUmVnVDEpLCBkc3QpOworICAgICAg
ICAgICAgICAgIGFkZEp1bXAoYnJhbmNoRG91YmxlKERvdWJsZUdyZWF0ZXJUaGFuT3JFcXVhbE9y
VW5vcmRlcmVkLCBmcFJlZ1QxLCBmcFJlZ1QwKSwgZHN0KTsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIGNhc2Ugb3Bfam5ncmVhdGVyZXE6CisgICAgICAgICAgICAgICAgZW1p
dExvYWREb3VibGUob3AyLCBmcFJlZ1QxKTsKKyAgICAgICAgICAgICAgICBhZGRKdW1wKGJyYW5j
aERvdWJsZShEb3VibGVHcmVhdGVyVGhhbk9yVW5vcmRlcmVkLCBmcFJlZ1QxLCBmcFJlZ1QwKSwg
ZHN0KTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAg
ICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVEFyaXRobWV0aWMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAJKHJldmlzaW9uIDkwMzUyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NjQsNiArNjQsMjQgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfamxlc3NlcShJbnN0cnVjdGlvbiogYwog
ICAgIGVtaXRfY29tcGFyZUFuZEp1bXAob3Bfamxlc3NlcSwgb3AxLCBvcDIsIHRhcmdldCwgTGVz
c1RoYW5PckVxdWFsKTsKIH0KIAordm9pZCBKSVQ6OmVtaXRfb3BfamdyZWF0ZXIoSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICB1bnNpZ25lZCBvcDEgPSBjdXJyZW50SW5z
dHJ1Y3Rpb25bMV0udS5vcGVyYW5kOworICAgIHVuc2lnbmVkIG9wMiA9IGN1cnJlbnRJbnN0cnVj
dGlvblsyXS51Lm9wZXJhbmQ7CisgICAgdW5zaWduZWQgdGFyZ2V0ID0gY3VycmVudEluc3RydWN0
aW9uWzNdLnUub3BlcmFuZDsKKworICAgIGVtaXRfY29tcGFyZUFuZEp1bXAob3BfamdyZWF0ZXIs
IG9wMSwgb3AyLCB0YXJnZXQsIEdyZWF0ZXJUaGFuKTsKK30KKwordm9pZCBKSVQ6OmVtaXRfb3Bf
amdyZWF0ZXJlcShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIHVuc2ln
bmVkIG9wMSA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CisgICAgdW5zaWduZWQg
b3AyID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKKyAgICB1bnNpZ25lZCB0YXJn
ZXQgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOworCisgICAgZW1pdF9jb21wYXJl
QW5kSnVtcChvcF9qZ3JlYXRlcmVxLCBvcDEsIG9wMiwgdGFyZ2V0LCBHcmVhdGVyVGhhbk9yRXF1
YWwpOworfQorCiB2b2lkIEpJVDo6ZW1pdF9vcF9qbmxlc3MoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKIHsKICAgICB1bnNpZ25lZCBvcDEgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0u
dS5vcGVyYW5kOwpAQCAtODIsNiArMTAwLDI0IEBAIHZvaWQgSklUOjplbWl0X29wX2pubGVzc2Vx
KEluc3RydWN0aW9uKiAKICAgICBlbWl0X2NvbXBhcmVBbmRKdW1wKG9wX2pubGVzc2VxLCBvcDEs
IG9wMiwgdGFyZ2V0LCBHcmVhdGVyVGhhbik7CiB9CiAKK3ZvaWQgSklUOjplbWl0X29wX2puZ3Jl
YXRlcihJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIHVuc2lnbmVkIG9w
MSA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CisgICAgdW5zaWduZWQgb3AyID0g
Y3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKKyAgICB1bnNpZ25lZCB0YXJnZXQgPSBj
dXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOworCisgICAgZW1pdF9jb21wYXJlQW5kSnVt
cChvcF9qbmdyZWF0ZXIsIG9wMSwgb3AyLCB0YXJnZXQsIExlc3NUaGFuT3JFcXVhbCk7Cit9CisK
K3ZvaWQgSklUOjplbWl0X29wX2puZ3JlYXRlcmVxKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCit7CisgICAgdW5zaWduZWQgb3AxID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3Bl
cmFuZDsKKyAgICB1bnNpZ25lZCBvcDIgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5k
OworICAgIHVuc2lnbmVkIHRhcmdldCA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7
CisKKyAgICBlbWl0X2NvbXBhcmVBbmRKdW1wKG9wX2puZ3JlYXRlcmVxLCBvcDEsIG9wMiwgdGFy
Z2V0LCBMZXNzVGhhbik7Cit9CisKIHZvaWQgSklUOjplbWl0U2xvd19vcF9qbGVzcyhJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9y
JiBpdGVyKQogewogICAgIHVuc2lnbmVkIG9wMSA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9w
ZXJhbmQ7CkBAIC0xMDAsNiArMTM2LDI0IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9qbGVzc2Vx
KEluc3RydWN0aW8KICAgICBlbWl0X2NvbXBhcmVBbmRKdW1wU2xvdyhvcDEsIG9wMiwgdGFyZ2V0
LCBEb3VibGVMZXNzVGhhbk9yRXF1YWwsIGN0aV9vcF9qbGVzc2VxLCBmYWxzZSwgaXRlcik7CiB9
CiAKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9qZ3JlYXRlcihJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQoreworICAg
IHVuc2lnbmVkIG9wMSA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CisgICAgdW5z
aWduZWQgb3AyID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKKyAgICB1bnNpZ25l
ZCB0YXJnZXQgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOworCisgICAgZW1pdF9j
b21wYXJlQW5kSnVtcFNsb3cob3AxLCBvcDIsIHRhcmdldCwgRG91YmxlR3JlYXRlclRoYW4sIGN0
aV9vcF9qZ3JlYXRlciwgZmFsc2UsIGl0ZXIpOworfQorCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bf
amdyZWF0ZXJlcShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nh
c2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQoreworICAgIHVuc2lnbmVkIG9wMSA9IGN1cnJlbnRJ
bnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CisgICAgdW5zaWduZWQgb3AyID0gY3VycmVudEluc3Ry
dWN0aW9uWzJdLnUub3BlcmFuZDsKKyAgICB1bnNpZ25lZCB0YXJnZXQgPSBjdXJyZW50SW5zdHJ1
Y3Rpb25bM10udS5vcGVyYW5kOworCisgICAgZW1pdF9jb21wYXJlQW5kSnVtcFNsb3cob3AxLCBv
cDIsIHRhcmdldCwgRG91YmxlR3JlYXRlclRoYW5PckVxdWFsLCBjdGlfb3BfamdyZWF0ZXJlcSwg
ZmFsc2UsIGl0ZXIpOworfQorCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bfam5sZXNzKEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3Im
IGl0ZXIpCiB7CiAgICAgdW5zaWduZWQgb3AxID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3Bl
cmFuZDsKQEAgLTExOCw2ICsxNzIsMjQgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2pubGVzc2Vx
KEluc3RydWN0aQogICAgIGVtaXRfY29tcGFyZUFuZEp1bXBTbG93KG9wMSwgb3AyLCB0YXJnZXQs
IERvdWJsZUdyZWF0ZXJUaGFuT3JVbm9yZGVyZWQsIGN0aV9vcF9qbGVzc2VxLCB0cnVlLCBpdGVy
KTsKIH0KIAordm9pZCBKSVQ6OmVtaXRTbG93X29wX2puZ3JlYXRlcihJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQor
eworICAgIHVuc2lnbmVkIG9wMSA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7Cisg
ICAgdW5zaWduZWQgb3AyID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKKyAgICB1
bnNpZ25lZCB0YXJnZXQgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOworCisgICAg
ZW1pdF9jb21wYXJlQW5kSnVtcFNsb3cob3AxLCBvcDIsIHRhcmdldCwgRG91YmxlTGVzc1RoYW5P
ckVxdWFsT3JVbm9yZGVyZWQsIGN0aV9vcF9qZ3JlYXRlciwgdHJ1ZSwgaXRlcik7Cit9CisKK3Zv
aWQgSklUOjplbWl0U2xvd19vcF9qbmdyZWF0ZXJlcShJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQoreworICAgIHVu
c2lnbmVkIG9wMSA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CisgICAgdW5zaWdu
ZWQgb3AyID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKKyAgICB1bnNpZ25lZCB0
YXJnZXQgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOworCisgICAgZW1pdF9jb21w
YXJlQW5kSnVtcFNsb3cob3AxLCBvcDIsIHRhcmdldCwgRG91YmxlTGVzc1RoYW5PclVub3JkZXJl
ZCwgY3RpX29wX2pncmVhdGVyZXEsIHRydWUsIGl0ZXIpOworfQorCiAjaWYgVVNFKEpTVkFMVUU2
NCkKIAogdm9pZCBKSVQ6OmVtaXRfb3BfbHNoaWZ0KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCkBAIC0zNjEsNiArNDMzLDE0IEBAIHZvaWQgSklUOjplbWl0X2NvbXBhcmVBbmRKdW1w
KE9wY29kZUlELCAKIAogdm9pZCBKSVQ6OmVtaXRfY29tcGFyZUFuZEp1bXBTbG93KHVuc2lnbmVk
IG9wMSwgdW5zaWduZWQgb3AyLCB1bnNpZ25lZCB0YXJnZXQsIERvdWJsZUNvbmRpdGlvbiBjb25k
aXRpb24sIGludCAoSklUX1NUVUIgKnN0dWIpKFNUVUJfQVJHU19ERUNMQVJBVElPTiksIGJvb2wg
aW52ZXJ0LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogeworICAgIENP
TVBJTEVfQVNTRVJUKE9QQ09ERV9MRU5HVEgob3Bfamxlc3MpID09IE9QQ09ERV9MRU5HVEgob3Bf
amxlc3NlcSksIE9QQ09ERV9MRU5HVEhfb3Bfamxlc3NlcV9lcXVhbHNfb3Bfamxlc3MpOworICAg
IENPTVBJTEVfQVNTRVJUKE9QQ09ERV9MRU5HVEgob3Bfamxlc3MpID09IE9QQ09ERV9MRU5HVEgo
b3Bfam5sZXNzKSwgT1BDT0RFX0xFTkdUSF9vcF9qbmxlc3NfZXF1YWxzX29wX2psZXNzKTsKKyAg
ICBDT01QSUxFX0FTU0VSVChPUENPREVfTEVOR1RIKG9wX2psZXNzKSA9PSBPUENPREVfTEVOR1RI
KG9wX2pubGVzc2VxKSwgT1BDT0RFX0xFTkdUSF9vcF9qbmxlc3NlcV9lcXVhbHNfb3Bfamxlc3Mp
OworICAgIENPTVBJTEVfQVNTRVJUKE9QQ09ERV9MRU5HVEgob3Bfamxlc3MpID09IE9QQ09ERV9M
RU5HVEgob3BfamdyZWF0ZXIpLCBPUENPREVfTEVOR1RIX29wX2pncmVhdGVyX2VxdWFsc19vcF9q
bGVzcyk7CisgICAgQ09NUElMRV9BU1NFUlQoT1BDT0RFX0xFTkdUSChvcF9qbGVzcykgPT0gT1BD
T0RFX0xFTkdUSChvcF9qZ3JlYXRlcmVxKSwgT1BDT0RFX0xFTkdUSF9vcF9qZ3JlYXRlcmVxX2Vx
dWFsc19vcF9qbGVzcyk7CisgICAgQ09NUElMRV9BU1NFUlQoT1BDT0RFX0xFTkdUSChvcF9qbGVz
cykgPT0gT1BDT0RFX0xFTkdUSChvcF9qbmdyZWF0ZXIpLCBPUENPREVfTEVOR1RIX29wX2puZ3Jl
YXRlcl9lcXVhbHNfb3Bfamxlc3MpOworICAgIENPTVBJTEVfQVNTRVJUKE9QQ09ERV9MRU5HVEgo
b3Bfamxlc3MpID09IE9QQ09ERV9MRU5HVEgob3Bfam5ncmVhdGVyZXEpLCBPUENPREVfTEVOR1RI
X29wX2puZ3JlYXRlcmVxX2VxdWFsc19vcF9qbGVzcyk7CisgICAgCiAgICAgLy8gV2UgZ2VuZXJh
dGUgaW5saW5lIGNvZGUgZm9yIHRoZSBmb2xsb3dpbmcgY2FzZXMgaW4gdGhlIHNsb3cgcGF0aDoK
ICAgICAvLyAtIGZsb2F0aW5nLXBvaW50IG51bWJlciB0byBjb25zdGFudCBpbnQgaW1tZWRpYXRl
CiAgICAgLy8gLSBjb25zdGFudCBpbnQgaW1tZWRpYXRlIHRvIGZsb2F0aW5nLXBvaW50IG51bWJl
cgpAQCAtMzkzLDcgKzQ3Myw3IEBAIHZvaWQgSklUOjplbWl0X2NvbXBhcmVBbmRKdW1wU2xvdyh1
bnNpZ24KIAogICAgICAgICAgICAgZW1pdEp1bXBTbG93VG9Ib3QoYnJhbmNoRG91YmxlKGNvbmRp
dGlvbiwgZnBSZWdUMCwgZnBSZWdUMSksIHRhcmdldCk7CiAKLSAgICAgICAgICAgIGVtaXRKdW1w
U2xvd1RvSG90KGp1bXAoKSwgT1BDT0RFX0xFTkdUSChvcF9qbmxlc3MpKTsKKyAgICAgICAgICAg
IGVtaXRKdW1wU2xvd1RvSG90KGp1bXAoKSwgT1BDT0RFX0xFTkdUSChvcF9qbGVzcykpOwogCiAg
ICAgICAgICAgICBmYWlsMS5saW5rKHRoaXMpOwogICAgICAgICB9CkBAIC00MTksNyArNDk5LDcg
QEAgdm9pZCBKSVQ6OmVtaXRfY29tcGFyZUFuZEp1bXBTbG93KHVuc2lnbgogCiAgICAgICAgICAg
ICBlbWl0SnVtcFNsb3dUb0hvdChicmFuY2hEb3VibGUoY29uZGl0aW9uLCBmcFJlZ1QwLCBmcFJl
Z1QxKSwgdGFyZ2V0KTsKIAotICAgICAgICAgICAgZW1pdEp1bXBTbG93VG9Ib3QoanVtcCgpLCBP
UENPREVfTEVOR1RIKG9wX2pubGVzcykpOworICAgICAgICAgICAgZW1pdEp1bXBTbG93VG9Ib3Qo
anVtcCgpLCBPUENPREVfTEVOR1RIKG9wX2psZXNzKSk7CiAKICAgICAgICAgICAgIGZhaWwxLmxp
bmsodGhpcyk7CiAgICAgICAgIH0KQEAgLTQyOSw3ICs1MDksNiBAQCB2b2lkIEpJVDo6ZW1pdF9j
b21wYXJlQW5kSnVtcFNsb3codW5zaWduCiAgICAgICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KHJl
Z1QxKTsKICAgICAgICAgc3R1YkNhbGwuY2FsbCgpOwogICAgICAgICBlbWl0SnVtcFNsb3dUb0hv
dChicmFuY2hUZXN0MzIoaW52ZXJ0ID8gWmVybyA6IE5vblplcm8sIHJlZ1QwKSwgdGFyZ2V0KTsK
LQogICAgIH0gZWxzZSB7CiAgICAgICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKIApAQCAtNDQ0LDcg
KzUyMyw3IEBAIHZvaWQgSklUOjplbWl0X2NvbXBhcmVBbmRKdW1wU2xvdyh1bnNpZ24KIAogICAg
ICAgICAgICAgZW1pdEp1bXBTbG93VG9Ib3QoYnJhbmNoRG91YmxlKGNvbmRpdGlvbiwgZnBSZWdU
MCwgZnBSZWdUMSksIHRhcmdldCk7CiAKLSAgICAgICAgICAgIGVtaXRKdW1wU2xvd1RvSG90KGp1
bXAoKSwgT1BDT0RFX0xFTkdUSChvcF9qbmxlc3MpKTsKKyAgICAgICAgICAgIGVtaXRKdW1wU2xv
d1RvSG90KGp1bXAoKSwgT1BDT0RFX0xFTkdUSChvcF9qbGVzcykpOwogCiAgICAgICAgICAgICBm
YWlsMS5saW5rKHRoaXMpOwogICAgICAgICAgICAgZmFpbDIubGluayh0aGlzKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCShyZXZpc2lvbiA5MDM1MikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
NTM2LDYgKzI1MzYsMTYgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCwgb3BfcHV0X2J5X3Zh
bAogICAgIENIRUNLX0ZPUl9FWENFUFRJT05fQVRfRU5EKCk7CiB9CiAKK0RFRklORV9TVFVCX0ZV
TkNUSU9OKEVuY29kZWRKU1ZhbHVlLCBvcF9sZXNzKQoreworICAgIFNUVUJfSU5JVF9TVEFDS19G
UkFNRShzdGFja0ZyYW1lKTsKKworICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gc3RhY2tGcmFt
ZS5jYWxsRnJhbWU7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBqc0Jvb2xlYW4oanNMZXNzKGNhbGxG
cmFtZSwgc3RhY2tGcmFtZS5hcmdzWzBdLmpzVmFsdWUoKSwgc3RhY2tGcmFtZS5hcmdzWzFdLmpz
VmFsdWUoKSkpOworICAgIENIRUNLX0ZPUl9FWENFUFRJT05fQVRfRU5EKCk7CisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOworfQorCiBERUZJTkVfU1RVQl9GVU5DVElPTihFbmNv
ZGVkSlNWYWx1ZSwgb3BfbGVzc2VxKQogewogICAgIFNUVUJfSU5JVF9TVEFDS19GUkFNRShzdGFj
a0ZyYW1lKTsKQEAgLTI1NDYsNiArMjU1NiwyNiBAQCBERUZJTkVfU1RVQl9GVU5DVElPTihFbmNv
ZGVkSlNWYWx1ZSwgb3BfCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQog
CitERUZJTkVfU1RVQl9GVU5DVElPTihFbmNvZGVkSlNWYWx1ZSwgb3BfZ3JlYXRlcikKK3sKKyAg
ICBTVFVCX0lOSVRfU1RBQ0tfRlJBTUUoc3RhY2tGcmFtZSk7CisKKyAgICBDYWxsRnJhbWUqIGNh
bGxGcmFtZSA9IHN0YWNrRnJhbWUuY2FsbEZyYW1lOworICAgIEpTVmFsdWUgcmVzdWx0ID0ganNC
b29sZWFuKGpzTGVzcyhjYWxsRnJhbWUsIHN0YWNrRnJhbWUuYXJnc1sxXS5qc1ZhbHVlKCksIHN0
YWNrRnJhbWUuYXJnc1swXS5qc1ZhbHVlKCkpKTsgLy8gRklYTUU6IEJ1ZyM2Mzg4MAorICAgIENI
RUNLX0ZPUl9FWENFUFRJT05fQVRfRU5EKCk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShy
ZXN1bHQpOworfQorCitERUZJTkVfU1RVQl9GVU5DVElPTihFbmNvZGVkSlNWYWx1ZSwgb3BfZ3Jl
YXRlcmVxKQoreworICAgIFNUVUJfSU5JVF9TVEFDS19GUkFNRShzdGFja0ZyYW1lKTsKKworICAg
IENhbGxGcmFtZSogY2FsbEZyYW1lID0gc3RhY2tGcmFtZS5jYWxsRnJhbWU7CisgICAgSlNWYWx1
ZSByZXN1bHQgPSBqc0Jvb2xlYW4oanNMZXNzRXEoY2FsbEZyYW1lLCBzdGFja0ZyYW1lLmFyZ3Nb
MV0uanNWYWx1ZSgpLCBzdGFja0ZyYW1lLmFyZ3NbMF0uanNWYWx1ZSgpKSk7IC8vIEZJWE1FOiBC
dWcjNjM4ODAKKyAgICBDSEVDS19GT1JfRVhDRVBUSU9OX0FUX0VORCgpOworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKK30KKwogREVGSU5FX1NUVUJfRlVOQ1RJT04oaW50LCBv
cF9sb2FkX3ZhcmFyZ3MpCiB7CiAgICAgU1RVQl9JTklUX1NUQUNLX0ZSQU1FKHN0YWNrRnJhbWUp
OwpAQCAtMjgwNyw2ICsyODM3LDMyIEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKGludCwgb3Bfamxl
c3NlcSkKICAgICByZXR1cm4gcmVzdWx0OwogfQogCitERUZJTkVfU1RVQl9GVU5DVElPTihpbnQs
IG9wX2pncmVhdGVyKQoreworICAgIFNUVUJfSU5JVF9TVEFDS19GUkFNRShzdGFja0ZyYW1lKTsK
KworICAgIEpTVmFsdWUgc3JjMSA9IHN0YWNrRnJhbWUuYXJnc1swXS5qc1ZhbHVlKCk7CisgICAg
SlNWYWx1ZSBzcmMyID0gc3RhY2tGcmFtZS5hcmdzWzFdLmpzVmFsdWUoKTsKKyAgICBDYWxsRnJh
bWUqIGNhbGxGcmFtZSA9IHN0YWNrRnJhbWUuY2FsbEZyYW1lOworCisgICAgYm9vbCByZXN1bHQg
PSBqc0xlc3MoY2FsbEZyYW1lLCBzcmMyLCBzcmMxKTsgLy8gRklYTUU6IEJ1ZyM2Mzg4MAorICAg
IENIRUNLX0ZPUl9FWENFUFRJT05fQVRfRU5EKCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwor
REVGSU5FX1NUVUJfRlVOQ1RJT04oaW50LCBvcF9qZ3JlYXRlcmVxKQoreworICAgIFNUVUJfSU5J
VF9TVEFDS19GUkFNRShzdGFja0ZyYW1lKTsKKworICAgIEpTVmFsdWUgc3JjMSA9IHN0YWNrRnJh
bWUuYXJnc1swXS5qc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSBzcmMyID0gc3RhY2tGcmFtZS5hcmdz
WzFdLmpzVmFsdWUoKTsKKyAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IHN0YWNrRnJhbWUuY2Fs
bEZyYW1lOworCisgICAgYm9vbCByZXN1bHQgPSBqc0xlc3NFcShjYWxsRnJhbWUsIHNyYzIsIHNy
YzEpOyAvLyBGSVhNRTogQnVnIzYzODgwCisgICAgQ0hFQ0tfRk9SX0VYQ0VQVElPTl9BVF9FTkQo
KTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiBERUZJTkVfU1RVQl9GVU5DVElPTihFbmNvZGVk
SlNWYWx1ZSwgb3Bfbm90KQogewogICAgIFNUVUJfSU5JVF9TVEFDS19GUkFNRShzdGFja0ZyYW1l
KTsKQEAgLTMwOTAsMTYgKzMxNDYsNiBAQCBERUZJTkVfU1RVQl9GVU5DVElPTihFbmNvZGVkSlNW
YWx1ZSwgb3BfCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCi1ERUZJ
TkVfU1RVQl9GVU5DVElPTihFbmNvZGVkSlNWYWx1ZSwgb3BfbGVzcykKLXsKLSAgICBTVFVCX0lO
SVRfU1RBQ0tfRlJBTUUoc3RhY2tGcmFtZSk7Ci0KLSAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9
IHN0YWNrRnJhbWUuY2FsbEZyYW1lOwotICAgIEpTVmFsdWUgcmVzdWx0ID0ganNCb29sZWFuKGpz
TGVzcyhjYWxsRnJhbWUsIHN0YWNrRnJhbWUuYXJnc1swXS5qc1ZhbHVlKCksIHN0YWNrRnJhbWUu
YXJnc1sxXS5qc1ZhbHVlKCkpKTsKLSAgICBDSEVDS19GT1JfRVhDRVBUSU9OX0FUX0VORCgpOwot
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKLX0KLQogREVGSU5FX1NUVUJfRlVO
Q1RJT04oRW5jb2RlZEpTVmFsdWUsIG9wX3Bvc3RfZGVjKQogewogICAgIFNUVUJfSU5JVF9TVEFD
S19GUkFNRShzdGFja0ZyYW1lKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
U3R1YnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJz
LmgJKHJldmlzaW9uIDkwMzUyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVi
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNTIsNiArMzUyLDggQEAgZXh0ZXJuICJDIiB7CiAgICAg
RW5jb2RlZEpTVmFsdWUgSklUX1NUVUIgY3RpX29wX2lzX3VuZGVmaW5lZChTVFVCX0FSR1NfREVD
TEFSQVRJT04pOwogICAgIEVuY29kZWRKU1ZhbHVlIEpJVF9TVFVCIGN0aV9vcF9sZXNzKFNUVUJf
QVJHU19ERUNMQVJBVElPTik7CiAgICAgRW5jb2RlZEpTVmFsdWUgSklUX1NUVUIgY3RpX29wX2xl
c3NlcShTVFVCX0FSR1NfREVDTEFSQVRJT04pOworICAgIEVuY29kZWRKU1ZhbHVlIEpJVF9TVFVC
IGN0aV9vcF9ncmVhdGVyKFNUVUJfQVJHU19ERUNMQVJBVElPTik7CisgICAgRW5jb2RlZEpTVmFs
dWUgSklUX1NUVUIgY3RpX29wX2dyZWF0ZXJlcShTVFVCX0FSR1NfREVDTEFSQVRJT04pOwogICAg
IEVuY29kZWRKU1ZhbHVlIEpJVF9TVFVCIGN0aV9vcF9sc2hpZnQoU1RVQl9BUkdTX0RFQ0xBUkFU
SU9OKTsKICAgICBFbmNvZGVkSlNWYWx1ZSBKSVRfU1RVQiBjdGlfb3BfbW9kKFNUVUJfQVJHU19E
RUNMQVJBVElPTik7CiAgICAgRW5jb2RlZEpTVmFsdWUgSklUX1NUVUIgY3RpX29wX211bChTVFVC
X0FSR1NfREVDTEFSQVRJT04pOwpAQCAtMzk0LDYgKzM5Niw4IEBAIGV4dGVybiAiQyIgewogICAg
IGludCBKSVRfU1RVQiBjdGlfb3BfZXFfc3RyaW5ncyhTVFVCX0FSR1NfREVDTEFSQVRJT04pOwog
ICAgIGludCBKSVRfU1RVQiBjdGlfb3Bfamxlc3MoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKTsKICAg
ICBpbnQgSklUX1NUVUIgY3RpX29wX2psZXNzZXEoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKTsKKyAg
ICBpbnQgSklUX1NUVUIgY3RpX29wX2pncmVhdGVyKFNUVUJfQVJHU19ERUNMQVJBVElPTik7Cisg
ICAgaW50IEpJVF9TVFVCIGN0aV9vcF9qZ3JlYXRlcmVxKFNUVUJfQVJHU19ERUNMQVJBVElPTik7
CiAgICAgaW50IEpJVF9TVFVCIGN0aV9vcF9qdHJ1ZShTVFVCX0FSR1NfREVDTEFSQVRJT04pOwog
ICAgIGludCBKSVRfU1RVQiBjdGlfb3BfbG9hZF92YXJhcmdzKFNUVUJfQVJHU19ERUNMQVJBVElP
Tik7CiAgICAgaW50IEpJVF9TVFVCIGN0aV90aW1lb3V0X2NoZWNrKFNUVUJfQVJHU19ERUNMQVJB
VElPTik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3Rv
cnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25z
dHJ1Y3RvcnMuaAkocmV2aXNpb24gOTAzNTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL05vZGVDb25zdHJ1Y3RvcnMuaAkod29ya2luZyBjb3B5KQpAQCAtNDQ5LDE2ICs0NDksNiBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIFJldmVyc2VCaW5h
cnlPcE5vZGU6OlJldmVyc2VCaW5hcnlPcE5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBF
eHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgT3Bjb2RlSUQgb3Bj
b2RlSUQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKLSAgICAgICAgOiBCaW5hcnlPcE5vZGUo
Z2xvYmFsRGF0YSwgZXhwcjEsIGV4cHIyLCBvcGNvZGVJRCwgcmlnaHRIYXNBc3NpZ25tZW50cykK
LSAgICB7Ci0gICAgfQotCi0gICAgaW5saW5lIFJldmVyc2VCaW5hcnlPcE5vZGU6OlJldmVyc2VC
aW5hcnlPcE5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBSZXN1bHRUeXBlIHR5cGUsIEV4
cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBPcGNvZGVJRCBvcGNv
ZGVJRCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQotICAgICAgICA6IEJpbmFyeU9wTm9kZShn
bG9iYWxEYXRhLCB0eXBlLCBleHByMSwgZXhwcjIsIG9wY29kZUlELCByaWdodEhhc0Fzc2lnbm1l
bnRzKQotICAgIHsKLSAgICB9Ci0KICAgICBpbmxpbmUgTXVsdE5vZGU6Ok11bHROb2RlKEpTR2xv
YmFsRGF0YSogZ2xvYmFsRGF0YSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9k
ZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKICAgICAgICAgOiBCaW5hcnlPcE5v
ZGUoZ2xvYmFsRGF0YSwgUmVzdWx0VHlwZTo6bnVtYmVyVHlwZUNhblJldXNlKCksIGV4cHIxLCBl
eHByMiwgb3BfbXVsLCByaWdodEhhc0Fzc2lnbm1lbnRzKQogICAgIHsKQEAgLTUwNiw3ICs0OTYs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB9CiAKICAgICBpbmxpbmUgR3JlYXRlck5vZGU6Okdy
ZWF0ZXJOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIx
LCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKLSAgICAg
ICAgOiBSZXZlcnNlQmluYXJ5T3BOb2RlKGdsb2JhbERhdGEsIFJlc3VsdFR5cGU6OmJvb2xlYW5U
eXBlKCksIGV4cHIxLCBleHByMiwgb3BfbGVzcywgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICAg
ICAgOiBCaW5hcnlPcE5vZGUoZ2xvYmFsRGF0YSwgUmVzdWx0VHlwZTo6Ym9vbGVhblR5cGUoKSwg
ZXhwcjEsIGV4cHIyLCBvcF9ncmVhdGVyLCByaWdodEhhc0Fzc2lnbm1lbnRzKQogICAgIHsKICAg
ICB9CiAKQEAgLTUxNiw3ICs1MDYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB9CiAKICAgICBp
bmxpbmUgR3JlYXRlckVxTm9kZTo6R3JlYXRlckVxTm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERh
dGEsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJp
Z2h0SGFzQXNzaWdubWVudHMpCi0gICAgICAgIDogUmV2ZXJzZUJpbmFyeU9wTm9kZShnbG9iYWxE
YXRhLCBSZXN1bHRUeXBlOjpib29sZWFuVHlwZSgpLCBleHByMSwgZXhwcjIsIG9wX2xlc3NlcSwg
cmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICAgICAgOiBCaW5hcnlPcE5vZGUoZ2xvYmFsRGF0YSwg
UmVzdWx0VHlwZTo6Ym9vbGVhblR5cGUoKSwgZXhwcjEsIGV4cHIyLCBvcF9ncmVhdGVyZXEsIHJp
Z2h0SGFzQXNzaWdubWVudHMpCiAgICAgewogICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9Ob2Rlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvTm9kZXMuaAkocmV2aXNpb24gOTAzNTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL05vZGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTgyOSwxNCArODI5LDYgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgbV9yaWdodEhhc0Fzc2lnbm1lbnRzOwogICAgIH07
CiAKLSAgICBjbGFzcyBSZXZlcnNlQmluYXJ5T3BOb2RlIDogcHVibGljIEJpbmFyeU9wTm9kZSB7
Ci0gICAgcHVibGljOgotICAgICAgICBSZXZlcnNlQmluYXJ5T3BOb2RlKEpTR2xvYmFsRGF0YSos
IEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBPcGNvZGVJRCwg
Ym9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKLSAgICAgICAgUmV2ZXJzZUJpbmFyeU9wTm9kZShK
U0dsb2JhbERhdGEqLCBSZXN1bHRUeXBlLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Np
b25Ob2RlKiBleHByMiwgT3Bjb2RlSUQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7Ci0KLSAg
ICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
LCBSZWdpc3RlcklEKiA9IDApOwotICAgIH07Ci0KICAgICBjbGFzcyBNdWx0Tm9kZSA6IHB1Ymxp
YyBCaW5hcnlPcE5vZGUgewogICAgIHB1YmxpYzoKICAgICAgICAgTXVsdE5vZGUoSlNHbG9iYWxE
YXRhKiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wg
cmlnaHRIYXNBc3NpZ25tZW50cyk7CkBAIC04ODYsNyArODc4LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIExlc3NOb2RlKEpTR2xvYmFsRGF0YSosIEV4cHJlc3Npb25Ob2RlKiBleHByMSwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwogICAgIH07
CiAKLSAgICBjbGFzcyBHcmVhdGVyTm9kZSA6IHB1YmxpYyBSZXZlcnNlQmluYXJ5T3BOb2RlIHsK
KyAgICBjbGFzcyBHcmVhdGVyTm9kZSA6IHB1YmxpYyBCaW5hcnlPcE5vZGUgewogICAgIHB1Ymxp
YzoKICAgICAgICAgR3JlYXRlck5vZGUoSlNHbG9iYWxEYXRhKiwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiAg
ICAgfTsKQEAgLTg5Niw3ICs4ODgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgTGVzc0Vx
Tm9kZShKU0dsb2JhbERhdGEqLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2Rl
KiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKICAgICB9OwogCi0gICAgY2xhc3Mg
R3JlYXRlckVxTm9kZSA6IHB1YmxpYyBSZXZlcnNlQmluYXJ5T3BOb2RlIHsKKyAgICBjbGFzcyBH
cmVhdGVyRXFOb2RlIDogcHVibGljIEJpbmFyeU9wTm9kZSB7CiAgICAgcHVibGljOgogICAgICAg
ICBHcmVhdGVyRXFOb2RlKEpTR2xvYmFsRGF0YSosIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhw
cmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwogICAgIH07Cg==
</data>
<flag name="review"
          id="94171"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>