<?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>231973</bug_id>
          
          <creation_ts>2021-10-19 12:02:03 -0700</creation_ts>
          <short_desc>Address post-landing feedback to wasm exceptions</short_desc>
          <delta_ts>2021-10-19 17:41:26 -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>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tadeu Zagallo">tzagallo</reporter>
          <assigned_to name="Tadeu Zagallo">tzagallo</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1806209</commentid>
    <comment_count>0</comment_count>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2021-10-19 12:02:03 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1806248</commentid>
    <comment_count>1</comment_count>
      <attachid>441774</attachid>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2021-10-19 12:52:21 -0700</bug_when>
    <thetext>Created attachment 441774
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1806343</commentid>
    <comment_count>2</comment_count>
      <attachid>441774</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-10-19 14:59:24 -0700</bug_when>
    <thetext>Comment on attachment 441774
Patch

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

r=me

&gt; Source/JavaScriptCore/wasm/WasmLLIntGenerator.cpp:1176
&gt; +    // We have to materialize the arguments here since it might included constants or

included =&gt; include

&gt; Source/JavaScriptCore/wasm/WasmLLIntGenerator.cpp:1178
&gt; +    // in stack. The reason we don&apos;t call materializeConstantsAndLocals here is that

in stack =&gt; in the stack</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1806413</commentid>
    <comment_count>3</comment_count>
      <attachid>441818</attachid>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2021-10-19 17:08:38 -0700</bug_when>
    <thetext>Created attachment 441818
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1806431</commentid>
    <comment_count>4</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-10-19 17:40:26 -0700</bug_when>
    <thetext>Committed r284513 (243257@main): &lt;https://commits.webkit.org/243257@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 441818.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1806432</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-10-19 17:41:26 -0700</bug_when>
    <thetext>&lt;rdar://problem/84441842&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441774</attachid>
            <date>2021-10-19 12:52:21 -0700</date>
            <delta_ts>2021-10-19 17:08:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231973-20211019125220.patch</filename>
            <type>text/plain</type>
            <size>26103</size>
            <attacher name="Tadeu Zagallo">tzagallo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0Mzg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
NzY0YmM5OTc5NDVmYWY5YWE5N2IxZDNlNDZhOTgwOWQyNTMzNmY4Li5jODg1MDU3YTJjMzM2YzQy
YjJkNGEwNGViN2QxODU5MWVjYzlhNjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0OCBAQAorMjAyMS0xMC0xOSAgVGFkZXUgWmFnYWxsbyAgPHR6YWdhbGxvQGFwcGxlLmNv
bT4KKworICAgICAgICBBZGRyZXNzIHBvc3QtbGFuZGluZyBmZWVkYmFjayB0byB3YXNtIGV4Y2Vw
dGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
MTk3MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZHJlc3MgY29tbWVudHMgbGVmdCBieSBTYWFtIGluIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjk2ODEKKyAgICAgICAgYWZ0ZXIgdGhlIHBhdGNoIGxhbmRlZC4gVGhp
cyBpbmNsdWRlcyBkZWxldGluZyBzb21lIHVudXNlZCBjb2RlLCBhbmQgcmVuYW1pbmcgYQorICAg
ICAgICBjb3VwbGUgdmFyaWFibGVzIGFuZCBtZXRob2RzLCBidXQgdGhlIGJpZ2dlc3QgY2hhbmdl
IGlzIGNvcHlpbmcgdGhlIGNhbGxlZSBzYXZlcworICAgICAgICB0byBWTUVudHJ5IGluIHRoZSBs
bGludCByZXRocm93LgorCisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgor
ICAgICAgICAoSlNDOjpDYXRjaEluZm86OkNhdGNoSW5mbyk6CisgICAgICAgIChKU0M6OlVud2lu
ZEZ1bmN0b3I6Om9wZXJhdG9yKCkgY29uc3QpOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVy
cHJldGVyLmg6CisgICAgICAgIChKU0M6OkNhdGNoSW5mbzo6Q2F0Y2hJbmZvKTogRGVsZXRlZC4K
KyAgICAgICAgKiBqaXQvSlNJbnRlcmZhY2VKSVQuaDoKKyAgICAgICAgKEpTQzo6SlNJbnRlcmZh
Y2VKSVQ6OmNvbnZlcnRDYWxsZWVUb1ZNKTogRGVsZXRlZC4KKyAgICAgICAgKiBsbGludC9XZWJB
c3NlbWJseS5hc206CisgICAgICAgICogd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHA6CisgICAg
ICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OkNvbnRyb2xEYXRhOjpDb250cm9sRGF0YSk6
CisgICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OkNvbnRyb2xEYXRhOjp0cnlEZXB0
aCBjb25zdCk6CisgICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OmNvbm5lY3RDb250
cm9sQXRFbnRyeXBvaW50KToKKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6YWRk
TG9vcCk6CisgICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OmFkZFRyeSk6CisgICAg
ICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OnByZXBhcmVQYXRjaHBvaW50Rm9yRXhjZXB0
aW9ucyk6CisgICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OmVtaXRDYXRjaEltcGwp
OgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9yOjphZGREZWxlZ2F0ZVRvVW5yZWFj
aGFibGUpOgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9yOjphZGRUaHJvdyk6Cisg
ICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OmFkZFJldGhyb3cpOgorICAgICAgICAo
SlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9yOjphZGRFbmRUb1VucmVhY2hhYmxlKToKKyAgICAgICAg
KEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6Y29ubmVjdENvbnRyb2xFbnRyeSk6IERlbGV0ZWQu
CisgICAgICAgICogd2FzbS9XYXNtQ2FsbGVlLmg6CisgICAgICAgIChKU0M6Oldhc206OkNhbGxl
ZTo6bGxpbnRGdW5jdGlvbkNvZGVCbG9jayBjb25zdCk6CisgICAgICAgIChKU0M6Oldhc206OkNh
bGxlZTo6ZnVuY3Rpb25Db2RlQmxvY2sgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHdhc20v
V2FzbUxMSW50R2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6TExJbnRHZW5lcmF0
b3I6OnVuaWZ5VmFsdWVzV2l0aEJsb2NrKToKKyAgICAgICAgKEpTQzo6V2FzbTo6TExJbnRHZW5l
cmF0b3I6OmFkZFRyeSk6CisgICAgICAgIChKU0M6Oldhc206OkxMSW50R2VuZXJhdG9yOjphZGRU
aHJvdyk6CisgICAgICAgIChKU0M6Oldhc206OkxMSW50R2VuZXJhdG9yOjpyZXBhdGNoKTogRGVs
ZXRlZC4KKyAgICAgICAgKiB3YXNtL1dhc21PcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6
V2FzbTo6SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKToKKyAgICAgICAgKiB3YXNtL1dhc21PcGVy
YXRpb25zLmg6CisKIDIwMjEtMTAtMTggIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KIAogICAgICAgICBbSlNDXSBVc2UgVVNFKExBUkdFX1RZUEVEX0FSUkFZKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKaW5kZXggOWNh
YzQwYTY2MTJjMzE2YThlYWYxYWE2MmI4OWY0MWE1NmZiNGJkMi4uZGQ3MzY2MjhiOGFjNjljNjE2
YjVlOTYzZWMzMGNhNzdjN2ZhY2QyMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC01NDIsNyArNTQyLDcgQEAgQ2F0Y2hJbmZv
OjpDYXRjaEluZm8oY29uc3QgV2FzbTo6SGFuZGxlckluZm8qIGhhbmRsZXIsIGNvbnN0IFdhc206
OkNhbGxlZSogY2FsbGUKICAgICBpZiAobV92YWxpZCkgewogICAgICAgICBtX3R5cGUgPSBIYW5k
bGVyVHlwZTo6Q2F0Y2g7CiAgICAgICAgIG1fbmF0aXZlQ29kZSA9IGhhbmRsZXItPm1fbmF0aXZl
Q29kZTsKLSAgICAgICAgaWYgKGNvbnN0IFdhc206OkZ1bmN0aW9uQ29kZUJsb2NrKiBjb2RlQmxv
Y2sgPSBjYWxsZWUtPmZ1bmN0aW9uQ29kZUJsb2NrKCkpCisgICAgICAgIGlmIChjb25zdCBXYXNt
OjpGdW5jdGlvbkNvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbGVlLT5sbGludEZ1bmN0aW9uQ29k
ZUJsb2NrKCkpCiAgICAgICAgICAgICBtX2NhdGNoUENGb3JJbnRlcnByZXRlciA9IGNvZGVCbG9j
ay0+aW5zdHJ1Y3Rpb25zKCkuYXQoaGFuZGxlci0+bV90YXJnZXQpLnB0cigpOwogICAgICAgICBl
bHNlCiAgICAgICAgICAgICBtX2NhdGNoUENGb3JJbnRlcnByZXRlciA9IG51bGxwdHI7CkBAIC01
OTIsNyArNTkyLDYgQEAgcHVibGljOgogICAgICAgICBpZiAoY2FsbGVlLmlzQ2VsbCgpKSB7CiAg
ICAgICAgICAgICBpZiAoYXV0byoganNUb1dhc21JQ0NhbGxlZSA9IGpzRHluYW1pY0Nhc3Q8SlNU
b1dhc21JQ0NhbGxlZSo+KG1fdm0sIGNhbGxlZS5hc0NlbGwoKSkpCiAgICAgICAgICAgICAgICAg
bV92bS53YXNtQ29udGV4dC5zdG9yZShqc1RvV2FzbUlDQ2FsbGVlLT5mdW5jdGlvbigpLT5wcmV2
aW91c0luc3RhbmNlKG1fY2FsbEZyYW1lKSwgbV92bS5zb2Z0U3RhY2tMaW1pdCgpKTsKLQogICAg
ICAgICB9CiAKICAgICAgICAgaWYgKG1fY2F0Y2hhYmxlRnJvbVdhc20gJiYgY2FsbGVlLmlzV2Fz
bSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRl
ci5oCmluZGV4IDRkOTY4OGU1YWE4Y2EwYTRhZDBmNWQ5MGZkZmFjMTQyMDNjNTg5YzIuLmU2NDY0
NjU2NzlmMjFkMTNkMzQ0Y2Q2ODgyMzkxNzA3NmZjY2FhMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCkBAIC05MCwxNiArOTAsMTQgQEAg
c3RydWN0IEhhbmRsZXJJbmZvOwogICAgIH07CiAKICAgICBzdHJ1Y3QgQ2F0Y2hJbmZvIHsKLSAg
ICAgICAgQ2F0Y2hJbmZvKCkKLSAgICAgICAgICAgIDogbV92YWxpZChmYWxzZSkKLSAgICAgICAg
eyB9CisgICAgICAgIENhdGNoSW5mbygpID0gZGVmYXVsdDsKIAogICAgICAgICBDYXRjaEluZm8o
Y29uc3QgSGFuZGxlckluZm8qLCBDb2RlQmxvY2sqKTsKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkp
CiAgICAgICAgIENhdGNoSW5mbyhjb25zdCBXYXNtOjpIYW5kbGVySW5mbyosIGNvbnN0IFdhc206
OkNhbGxlZSopOwogI2VuZGlmCiAKLSAgICAgICAgYm9vbCBtX3ZhbGlkOworICAgICAgICBib29s
IG1fdmFsaWQgeyBmYWxzZSB9OwogICAgICAgICBIYW5kbGVyVHlwZSBtX3R5cGU7CiAjaWYgRU5B
QkxFKEpJVCkKICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEV4Y2VwdGlvbkhhbmRsZXJQ
dHJUYWc+IG1fbmF0aXZlQ29kZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSlNJbnRlcmZhY2VKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZh
Y2VKSVQuaAppbmRleCA5OTIyOWU0OTkzMTdjMTJhMWYzNGNiZWFjZGFlYzkwMTUzODA4YWRkLi43
Y2ExYjRlN2MzZmQwODRkZDI3YWMzODUwNmFhOWM2YWVkOTVkZWIwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oCkBAIC01Nyw3ICs1Nyw2IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRQdXRUb0NhbGxGcmFtZUhlYWRlcihSZWdpc3RlcklE
IGZyb20sIFZpcnR1YWxSZWdpc3RlciBlbnRyeSk7CiAgICAgICAgIHZvaWQgZW1pdFB1dFRvQ2Fs
bEZyYW1lSGVhZGVyKHZvaWQqIHZhbHVlLCBWaXJ0dWFsUmVnaXN0ZXIgZW50cnkpOwogICAgICAg
ICB2b2lkIGVtaXRQdXRDZWxsVG9DYWxsRnJhbWVIZWFkZXIoUmVnaXN0ZXJJRCBmcm9tLCBWaXJ0
dWFsUmVnaXN0ZXIgZW50cnkpOwotICAgICAgICB2b2lkIGNvbnZlcnRDYWxsZWVUb1ZNKFJlZ2lz
dGVySUQgY2FsbGVlKTsKIAogICAgICAgICBWTSogdm0oKSBjb25zdCB7IHJldHVybiBtX3ZtOyB9
CiAKQEAgLTE1OSwxOSArMTU4LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAjZW5kaWYKICAgICB9CiAK
LSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgSlNJbnRlcmZhY2VKSVQ6OmNvbnZlcnRDYWxsZWVUb1ZN
KFJlZ2lzdGVySUQgY2FsbGVlKQotICAgIHsKLSAgICAgICAgYXV0byBwcmVjaXNlQWxsb2NhdGlv
bkNhc2UgPSBicmFuY2hUZXN0UHRyKENDYWxsSGVscGVyczo6Tm9uWmVybywgY2FsbGVlLCBDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW0zMihQcmVjaXNlQWxsb2NhdGlvbjo6aGFsZkFsaWdubWVudCkp
OwotICAgICAgICBhbmRQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKE1hcmtlZEJsb2Nr
OjpibG9ja01hc2spLCBjYWxsZWUpOwotICAgICAgICBsb2FkUHRyKENDYWxsSGVscGVyczo6QWRk
cmVzcyhjYWxsZWUsIE1hcmtlZEJsb2NrOjpvZmZzZXRPZkZvb3RlciArIE1hcmtlZEJsb2NrOjpG
b290ZXI6Om9mZnNldE9mVk0oKSksIGNhbGxlZSk7Ci0gICAgICAgIGF1dG8gbG9hZGVkQ2FzZSA9
IGp1bXAoKTsKLQotICAgICAgICBwcmVjaXNlQWxsb2NhdGlvbkNhc2UubGluayh0aGlzKTsKLSAg
ICAgICAgbG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoY2FsbGVlLCBQcmVjaXNlQWxsb2Nh
dGlvbjo6b2Zmc2V0T2ZXZWFrU2V0KCkgKyBXZWFrU2V0OjpvZmZzZXRPZlZNKCkgLSBQcmVjaXNl
QWxsb2NhdGlvbjo6aGVhZGVyU2l6ZSgpKSwgY2FsbGVlKTsKLQotICAgICAgICBsb2FkZWRDYXNl
LmxpbmsodGhpcyk7Ci0gICAgfQotCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEVO
QUJMRShKSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvV2ViQXNz
ZW1ibHkuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L1dlYkFzc2VtYmx5LmFzbQpp
bmRleCA1YmNiZGY4MzA4MjMzNjc5ZDA4NDNjMmI4M2E4NTMzOTVlNWJhOGEyLi41M2EyMDIwYWM4
OGY1MmIwYjhmODg3MTcyODE1MTJmNGViNTU0ODRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvV2ViQXNzZW1ibHkuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9XZWJBc3NlbWJseS5hc20KQEAgLTI4MjUsMTEgKzI4MjUsMTUgQEAgd2FzbU9wKHRo
cm93LCBXYXNtVGhyb3csIG1hY3JvKGN0eCkKIGVuZCkKIAogd2FzbU9wKHJldGhyb3csIFdhc21S
ZXRocm93LCBtYWNybyhjdHgpCisgICAgbG9hZHAgV2FzbTo6SW5zdGFuY2U6Om1fcG9pbnRlclRv
VG9wRW50cnlGcmFtZVt3YXNtSW5zdGFuY2VdLCB0NQorICAgIGxvYWRwIFt0NV0sIHQ1CisgICAg
Y29weUNhbGxlZVNhdmVzVG9FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIodDUpCisKICAgICBj
YWxsV2FzbVNsb3dQYXRoKF9zbG93X3BhdGhfd2FzbV9yZXRocm93KQogICAgIGp1bXBUb0V4Y2Vw
dGlvbigpCiBlbmQpCiAKLW1hY3JvIGNhdGNoSW1wbChjdHgsIHN0b3JlV2FzbUluc3RhbmNlKQor
bWFjcm8gY29tbW9uQ2F0Y2hJbXBsKGN0eCwgc3RvcmVXYXNtSW5zdGFuY2UpCiAgICAgbG9hZHAg
Q2FsbGVlW2Nmcl0sIHQzCiAgICAgY29udmVydENhbGxlZVRvVk0odDMpCiAgICAgcmVzdG9yZUNh
bGxlZVNhdmVzRnJvbVZNRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKHQzLCB0MCkKQEAgLTI4
NTQsNiArMjg1OCwxNyBAQCBtYWNybyBjYXRjaEltcGwoY3R4LCBzdG9yZVdhc21JbnN0YW5jZSkK
ICAgICBzdWJwIFBCLCBQQwogCiAgICAgY2FsbFdhc21TbG93UGF0aChfc2xvd19wYXRoX3dhc21f
cmV0cmlldmVfYW5kX2NsZWFyX2V4Y2VwdGlvbikKK2VuZAorCittYWNybyBjYXRjaEFsbEltcGwo
Y3R4LCBzdG9yZVdhc21JbnN0YW5jZSkKKyAgICBjb21tb25DYXRjaEltcGwoY3R4LCBzdG9yZVdh
c21JbnN0YW5jZSkKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgZGlzcGF0Y2goY3R4KQorZW5k
CisKK21hY3JvIGNhdGNoSW1wbChjdHgsIHN0b3JlV2FzbUluc3RhbmNlKQorICAgIGNvbW1vbkNh
dGNoSW1wbChjdHgsIHN0b3JlV2FzbUluc3RhbmNlKQorCiAgICAgbW92ZSByMSwgdDEKIAogICAg
IHdnZXR1KGN0eCwgbV9zdGFydE9mZnNldCwgdDIpCkBAIC0yODc1LDcgKzI4OTAsNiBAQCBtYWNy
byBjYXRjaEltcGwoY3R4LCBzdG9yZVdhc21JbnN0YW5jZSkKIAogLmRvbmU6CiAgICAgdHJhY2VF
eGVjdXRpb24oKQotCiAgICAgZGlzcGF0Y2goY3R4KQogZW5kCiAKQEAgLTI4ODcsMzcgKzI5MDEs
NiBAQCBjb21tb25XYXNtT3Aod2FzbV9jYXRjaF9ub190bHMsIFdhc21DYXRjaCwgbWFjcm8oKSBl
bmQsIG1hY3JvKGN0eCkKICAgICBjYXRjaEltcGwoY3R4LCBtYWNybyhpbnN0YW5jZSkgZW5kKQog
ZW5kKQogCi1tYWNybyBjYXRjaEFsbEltcGwoY3R4LCBzdG9yZVdhc21JbnN0YW5jZSkKLSAgICBs
b2FkcCBDYWxsZWVbY2ZyXSwgdDMKLSAgICBjb252ZXJ0Q2FsbGVlVG9WTSh0MykKLSAgICByZXN0
b3JlQ2FsbGVlU2F2ZXNGcm9tVk1FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIodDMsIHQwKQot
Ci0gICAgbG9hZHAgVk06OmNhbGxlZUZvcldhc21DYXRjaFt0M10sIHdzMQotICAgIHN0b3JlcCAw
LCBWTTo6Y2FsbGVlRm9yV2FzbUNhdGNoW3QzXQotICAgIHN0b3JlcCB3czEsIENhbGxlZVtjZnJd
Ci0KLSAgICBsb2FkcCBWTTo6Y2FsbEZyYW1lRm9yQ2F0Y2hbdDNdLCBjZnIKLSAgICBzdG9yZXAg
MCwgVk06OmNhbGxGcmFtZUZvckNhdGNoW3QzXQotCi0gICAgcmVzdG9yZVN0YWNrUG9pbnRlckFm
dGVyQ2FsbCgpCi0KLSAgICBsb2FkcCBUaGlzQXJndW1lbnRPZmZzZXRbY2ZyXSwgd2FzbUluc3Rh
bmNlCi0gICAgbG9hZHAgSlNXZWJBc3NlbWJseUluc3RhbmNlOjptX2luc3RhbmNlW3dhc21JbnN0
YW5jZV0sIHdhc21JbnN0YW5jZQotICAgIHN0b3JlV2FzbUluc3RhbmNlKHdhc21JbnN0YW5jZSkK
LSAgICByZWxvYWRNZW1vcnlSZWdpc3RlcnNGcm9tSW5zdGFuY2Uod2FzbUluc3RhbmNlLCB3czAs
IHdzMSkKLQotICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBQQgotICAgIGxvYWRwIFdhc206OkZ1
bmN0aW9uQ29kZUJsb2NrOjptX2luc3RydWN0aW9uc1Jhd1BvaW50ZXJbUEJdLCBQQgotICAgIGxv
YWRwIFZNOjp0YXJnZXRJbnRlcnByZXRlclBDRm9yVGhyb3dbdDNdLCBQQwotICAgIHN1YnAgUEIs
IFBDCi0KLSAgICBjYWxsV2FzbVNsb3dQYXRoKF9zbG93X3BhdGhfd2FzbV9yZXRyaWV2ZV9hbmRf
Y2xlYXJfZXhjZXB0aW9uKQotCi0gICAgdHJhY2VFeGVjdXRpb24oKQotCi0gICAgZGlzcGF0Y2go
Y3R4KQotZW5kCi0KIGNvbW1vbldhc21PcCh3YXNtX2NhdGNoX2FsbCwgV2FzbUNhdGNoQWxsLCBt
YWNybygpIGVuZCwgbWFjcm8oY3R4KQogICAgIGNhdGNoQWxsSW1wbChjdHgsIHN0b3JlV2FzbUlu
c3RhbmNlVG9UTFMpCiBlbmQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtQjNJUkdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
QjNJUkdlbmVyYXRvci5jcHAKaW5kZXggOWI3ZTAwZjJjNzdjNDcwZTU3M2EzNzAzMDFjYjJiZGQ1
YmFjYzA4MS4uZWMyOGFiZTM3NTNjZDhlZjI3ZjdiMmRhMjcyYzk2Y2M1MzIxYjI3ZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcApAQCAt
MTI4LDEwICsxMjgsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAsIGNvbnRpbnVhdGlvbihjb250
aW51YXRpb24pCiAgICAgICAgICAgICAsIHNwZWNpYWwobnVsbHB0cikKICAgICAgICAgICAgICwg
bV90cnlTdGFydCh0cnlTdGFydCkKLSAgICAgICAgICAgICwgbV90cnlEZXB0aCh0cnlEZXB0aCkK
KyAgICAgICAgICAgICwgbV90cnlDYXRjaERlcHRoKHRyeURlcHRoKQogICAgICAgICB7Ci0gICAg
ICAgICAgICBVTlVTRURfUEFSQU0ocHJvYyk7Ci0gICAgICAgICAgICBVTlVTRURfUEFSQU0ob3Jp
Z2luKTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaWduYXR1cmUtPnJl
dHVybkNvdW50KCk7ICsraSkKICAgICAgICAgICAgICAgICBwaGlzLmFwcGVuZChwcm9jLmFkZDxW
YWx1ZT4oUGhpLCB0b0IzVHlwZShzaWduYXR1cmUtPnJldHVyblR5cGUoaSkpLCBvcmlnaW4pKTsK
ICAgICAgICAgfQpAQCAtMjUwLDcgKzI0OCw3IEBAIHB1YmxpYzoKICAgICAgICAgdW5zaWduZWQg
dHJ5RGVwdGgoKSBjb25zdAogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoY29udHJvbEJs
b2NrVHlwZSA9PSBCbG9ja1R5cGU6OlRyeSB8fCBjb250cm9sQmxvY2tUeXBlID09IEJsb2NrVHlw
ZTo6Q2F0Y2gpOwotICAgICAgICAgICAgcmV0dXJuIG1fdHJ5RGVwdGg7CisgICAgICAgICAgICBy
ZXR1cm4gbV90cnlDYXRjaERlcHRoOwogICAgICAgICB9CiAKICAgICAgICAgQ2F0Y2hLaW5kIGNh
dGNoS2luZCgpIGNvbnN0CkBAIC0yNzksNyArMjc3LDcgQEAgcHVibGljOgogICAgICAgICBWZWN0
b3I8VmFsdWUqPiBwaGlzOwogICAgICAgICB1bnNpZ25lZCBtX3RyeVN0YXJ0OwogICAgICAgICB1
bnNpZ25lZCBtX3RyeUVuZDsKLSAgICAgICAgdW5zaWduZWQgbV90cnlEZXB0aDsKKyAgICAgICAg
dW5zaWduZWQgbV90cnlDYXRjaERlcHRoOwogICAgICAgICBDYXRjaEtpbmQgbV9jYXRjaEtpbmQ7
CiAgICAgICAgIFZhcmlhYmxlKiBtX2V4Y2VwdGlvbjsKICAgICB9OwpAQCAtNDYzLDcgKzQ2MSw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZXN0b3JlV2ViQXNzZW1ibHlHbG9iYWxTdGF0ZShSZXN0
b3JlQ2FjaGVkU3RhY2tMaW1pdCwgY29uc3QgTWVtb3J5SW5mb3JtYXRpb24mLCBWYWx1ZSogaW5z
dGFuY2UsIFByb2NlZHVyZSYsIEJhc2ljQmxvY2sqLCBib29sIHJlc3RvcmVJbnN0YW5jZSA9IHRy
dWUpOwogCiAgICAgVmFsdWUqIGxvYWRGcm9tU2NyYXRjaEJ1ZmZlcih1bnNpZ25lZCYgaW5kZXhJ
bkJ1ZmZlciwgVmFsdWUqIHBvaW50ZXIsIEIzOjpUeXBlKTsKLSAgICB2b2lkIGNvbm5lY3RDb250
cm9sRW50cnkodW5zaWduZWQmIGluZGV4SW5CdWZmZXIsIFZhbHVlKiBwb2ludGVyLCBDb250cm9s
RGF0YSYsIFN0YWNrJiBleHByZXNzaW9uU3RhY2ssIENvbnRyb2xEYXRhJiBjdXJyZW50RGF0YSwg
Ym9vbCBmaWxsTG9vcFBoaXMgPSBmYWxzZSk7CisgICAgdm9pZCBjb25uZWN0Q29udHJvbEF0RW50
cnlwb2ludCh1bnNpZ25lZCYgaW5kZXhJbkJ1ZmZlciwgVmFsdWUqIHBvaW50ZXIsIENvbnRyb2xE
YXRhJiwgU3RhY2smIGV4cHJlc3Npb25TdGFjaywgQ29udHJvbERhdGEmIGN1cnJlbnREYXRhLCBi
b29sIGZpbGxMb29wUGhpcyA9IGZhbHNlKTsKICAgICBWYWx1ZSogZW1pdENhdGNoSW1wbChDYXRj
aEtpbmQsIENvbnRyb2xUeXBlJiwgdW5zaWduZWQgZXhjZXB0aW9uSW5kZXggPSAwKTsKICAgICBQ
YXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlIHByZXBhcmVQYXRjaHBvaW50Rm9yRXhjZXB0aW9ucyhC
YXNpY0Jsb2NrKiwgUGF0Y2hwb2ludFZhbHVlKik7CiAKQEAgLTU3MCw3ICs1NjgsNyBAQCBwcml2
YXRlOgogICAgIHVpbnQzMl90IG1fbWF4TnVtSlNDYWxsQXJndW1lbnRzIHsgMCB9OwogICAgIHVu
c2lnbmVkIG1fbnVtSW1wb3J0RnVuY3Rpb25zOwogCi0gICAgQ2hlY2tlZDx1bnNpZ25lZD4gbV90
cnlEZXB0aCB7IDAgfTsKKyAgICBDaGVja2VkPHVuc2lnbmVkPiBtX3RyeUNhdGNoRGVwdGggeyAw
IH07CiAgICAgQ2hlY2tlZDx1bnNpZ25lZD4gbV9jYWxsU2l0ZUluZGV4IHsgMCB9OwogICAgIENo
ZWNrZWQ8dW5zaWduZWQ+IG1fc3RhY2tTaXplIHsgMCB9OwogICAgIENoZWNrZWQ8dW5zaWduZWQ+
IG1fbWF4U3RhY2tTaXplIHsgMCB9OwpAQCAtMjQ1Miw5ICsyNDUwLDggQEAgVmFsdWUqIEIzSVJH
ZW5lcmF0b3I6OmxvYWRGcm9tU2NyYXRjaEJ1ZmZlcih1bnNpZ25lZCYgaW5kZXhJbkJ1ZmZlciwg
VmFsdWUqIHBvaW4KICAgICByZXR1cm4gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlW
YWx1ZT4obV9wcm9jLCBMb2FkLCB0eXBlLCBvcmlnaW4oKSwgcG9pbnRlciwgb2Zmc2V0KTsKIH0K
IAotdm9pZCBCM0lSR2VuZXJhdG9yOjpjb25uZWN0Q29udHJvbEVudHJ5KHVuc2lnbmVkJiBpbmRl
eEluQnVmZmVyLCBWYWx1ZSogcG9pbnRlciwgQ29udHJvbERhdGEmIGRhdGEsIFN0YWNrJiBleHBy
ZXNzaW9uU3RhY2ssIENvbnRyb2xEYXRhJiBjdXJyZW50RGF0YSwgYm9vbCBmaWxsTG9vcFBoaXMp
Cit2b2lkIEIzSVJHZW5lcmF0b3I6OmNvbm5lY3RDb250cm9sQXRFbnRyeXBvaW50KHVuc2lnbmVk
JiBpbmRleEluQnVmZmVyLCBWYWx1ZSogcG9pbnRlciwgQ29udHJvbERhdGEmIGRhdGEsIFN0YWNr
JiBleHByZXNzaW9uU3RhY2ssIENvbnRyb2xEYXRhJiBjdXJyZW50RGF0YSwgYm9vbCBmaWxsTG9v
cFBoaXMpCiB7Ci0gICAgLy8gRm9yIGVhY2ggc3RhY2sgZW50cnkgZW5jbG9zZWQgYnkgdGhpcyBs
b29wIHdlIG5lZWQgdG8gcmVwbGFjZSB0aGUgdmFsdWUgd2l0aCBhIHBoaSBzbyB3ZSBjYW4gZmls
bCBpdCBvbiBPU1IgZW50cnkuCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGV4cHJlc3Np
b25TdGFjay5zaXplKCk7IGkrKykgewogICAgICAgICBUeXBlZEV4cHJlc3Npb24gdmFsdWUgPSBl
eHByZXNzaW9uU3RhY2tbaV07CiAgICAgICAgIGF1dG8qIGxvYWQgPSBsb2FkRnJvbVNjcmF0Y2hC
dWZmZXIoaW5kZXhJbkJ1ZmZlciwgcG9pbnRlciwgdmFsdWUtPnR5cGUoKSk7CkBAIC0yNTAyLDEw
ICsyNDk5LDEwIEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkTG9vcChCbG9ja1NpZ25hdHVyZSBz
aWduYXR1cmUsIFN0YWNrJiBlbmNsb3NpbmdTdGFjaywgQ29uCiAgICAgICAgIGZvciAodW5zaWdu
ZWQgY29udHJvbEluZGV4ID0gMDsgY29udHJvbEluZGV4IDwgbV9wYXJzZXItPmNvbnRyb2xTdGFj
aygpLnNpemUoKTsgKytjb250cm9sSW5kZXgpIHsKICAgICAgICAgICAgIGF1dG8mIGRhdGEgPSBt
X3BhcnNlci0+Y29udHJvbFN0YWNrKClbY29udHJvbEluZGV4XS5jb250cm9sRGF0YTsKICAgICAg
ICAgICAgIGF1dG8mIGV4cHJlc3Npb25TdGFjayA9IG1fcGFyc2VyLT5jb250cm9sU3RhY2soKVtj
b250cm9sSW5kZXhdLmVuY2xvc2VkRXhwcmVzc2lvblN0YWNrOwotICAgICAgICAgICAgY29ubmVj
dENvbnRyb2xFbnRyeShpbmRleEluQnVmZmVyLCBwb2ludGVyLCBkYXRhLCBleHByZXNzaW9uU3Rh
Y2ssIGJsb2NrKTsKKyAgICAgICAgICAgIGNvbm5lY3RDb250cm9sQXRFbnRyeXBvaW50KGluZGV4
SW5CdWZmZXIsIHBvaW50ZXIsIGRhdGEsIGV4cHJlc3Npb25TdGFjaywgYmxvY2spOwogICAgICAg
ICB9Ci0gICAgICAgIGNvbm5lY3RDb250cm9sRW50cnkoaW5kZXhJbkJ1ZmZlciwgcG9pbnRlciwg
YmxvY2ssIGVuY2xvc2luZ1N0YWNrLCBibG9jayk7Ci0gICAgICAgIGNvbm5lY3RDb250cm9sRW50
cnkoaW5kZXhJbkJ1ZmZlciwgcG9pbnRlciwgYmxvY2ssIG5ld1N0YWNrLCBibG9jaywgdHJ1ZSk7
CisgICAgICAgIGNvbm5lY3RDb250cm9sQXRFbnRyeXBvaW50KGluZGV4SW5CdWZmZXIsIHBvaW50
ZXIsIGJsb2NrLCBlbmNsb3NpbmdTdGFjaywgYmxvY2spOworICAgICAgICBjb25uZWN0Q29udHJv
bEF0RW50cnlwb2ludChpbmRleEluQnVmZmVyLCBwb2ludGVyLCBibG9jaywgbmV3U3RhY2ssIGJs
b2NrLCB0cnVlKTsKIAogICAgICAgICBtX29zckVudHJ5U2NyYXRjaEJ1ZmZlclNpemUgPSBpbmRl
eEluQnVmZmVyOwogICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3Q29udHJvbFZhbHVl
KG1fcHJvYywgSnVtcCwgb3JpZ2luKCksIGJvZHkpOwpAQCAtMjU2OCwxMSArMjU2NSwxMSBAQCBh
dXRvIEIzSVJHZW5lcmF0b3I6OmFkZEVsc2VUb1VucmVhY2hhYmxlKENvbnRyb2xEYXRhJiBkYXRh
KSAtPiBQYXJ0aWFsUmVzdWx0CiAKIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkVHJ5KEJsb2NrU2ln
bmF0dXJlIHNpZ25hdHVyZSwgU3RhY2smIGVuY2xvc2luZ1N0YWNrLCBDb250cm9sVHlwZSYgcmVz
dWx0LCBTdGFjayYgbmV3U3RhY2spIC0+IFBhcnRpYWxSZXN1bHQKIHsKLSAgICArK21fdHJ5RGVw
dGg7CisgICAgKyttX3RyeUNhdGNoRGVwdGg7CiAKICAgICBCYXNpY0Jsb2NrKiBjb250aW51YXRp
b24gPSBtX3Byb2MuYWRkQmxvY2soKTsKICAgICBzcGxpdFN0YWNrKHNpZ25hdHVyZSwgZW5jbG9z
aW5nU3RhY2ssIG5ld1N0YWNrKTsKLSAgICByZXN1bHQgPSBDb250cm9sRGF0YShtX3Byb2MsIG9y
aWdpbigpLCBzaWduYXR1cmUsIEJsb2NrVHlwZTo6VHJ5LCBtX3N0YWNrU2l6ZSwgY29udGludWF0
aW9uLCArK21fY2FsbFNpdGVJbmRleCwgbV90cnlEZXB0aCk7CisgICAgcmVzdWx0ID0gQ29udHJv
bERhdGEobV9wcm9jLCBvcmlnaW4oKSwgc2lnbmF0dXJlLCBCbG9ja1R5cGU6OlRyeSwgbV9zdGFj
a1NpemUsIGNvbnRpbnVhdGlvbiwgKyttX2NhbGxTaXRlSW5kZXgsIG1fdHJ5Q2F0Y2hEZXB0aCk7
CiAgICAgcmV0dXJuIHsgfTsKIH0KIApAQCAtMjU4NiwyMiArMjU4MywyMiBAQCBhdXRvIEIzSVJH
ZW5lcmF0b3I6OmFkZENhdGNoKHVuc2lnbmVkIGV4Y2VwdGlvbkluZGV4LCBjb25zdCBTaWduYXR1
cmUmIHNpZ25hdHVyZQogUGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZSBCM0lSR2VuZXJhdG9yOjpw
cmVwYXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlvbnMoQmFzaWNCbG9jayogYmxvY2ssIFBhdGNocG9p
bnRWYWx1ZSogcGF0Y2gpCiB7CiAgICAgKyttX2NhbGxTaXRlSW5kZXg7Ci0gICAgaWYgKCFtX3Ry
eURlcHRoKQorICAgIGlmICghbV90cnlDYXRjaERlcHRoKQogICAgICAgICByZXR1cm4geyB9Owog
Ci0gICAgVmVjdG9yPFZhbHVlKj4gc3RhY2ttYXA7CisgICAgVmVjdG9yPFZhbHVlKj4gbGl2ZVZh
bHVlczsKICAgICBPcmlnaW4gb3JpZ2luID0gdGhpcy0+b3JpZ2luKCk7CiAgICAgZm9yIChWYXJp
YWJsZSogbG9jYWwgOiBtX2xvY2FscykgewogICAgICAgICBWYWx1ZSogcmVzdWx0ID0gYmxvY2st
PmFwcGVuZE5ldzxWYXJpYWJsZVZhbHVlPihtX3Byb2MsIEIzOjpHZXQsIG9yaWdpbiwgbG9jYWwp
OwotICAgICAgICBzdGFja21hcC5hcHBlbmQocmVzdWx0KTsKKyAgICAgICAgbGl2ZVZhbHVlcy5h
cHBlbmQocmVzdWx0KTsKICAgICB9CiAgICAgZm9yICh1bnNpZ25lZCBjb250cm9sSW5kZXggPSAw
OyBjb250cm9sSW5kZXggPCBtX3BhcnNlci0+Y29udHJvbFN0YWNrKCkuc2l6ZSgpOyArK2NvbnRy
b2xJbmRleCkgewogICAgICAgICBDb250cm9sRGF0YSYgZGF0YSA9IG1fcGFyc2VyLT5jb250cm9s
U3RhY2soKVtjb250cm9sSW5kZXhdLmNvbnRyb2xEYXRhOwogICAgICAgICBTdGFjayYgZXhwcmVz
c2lvblN0YWNrID0gbV9wYXJzZXItPmNvbnRyb2xTdGFjaygpW2NvbnRyb2xJbmRleF0uZW5jbG9z
ZWRFeHByZXNzaW9uU3RhY2s7CiAgICAgICAgIGZvciAoVmFyaWFibGUqIHZhbHVlIDogZXhwcmVz
c2lvblN0YWNrKQotICAgICAgICAgICAgc3RhY2ttYXAuYXBwZW5kKGdldChibG9jaywgdmFsdWUp
KTsKKyAgICAgICAgICAgIGxpdmVWYWx1ZXMuYXBwZW5kKGdldChibG9jaywgdmFsdWUpKTsKICAg
ICAgICAgaWYgKENvbnRyb2xUeXBlOjppc0FueUNhdGNoKGRhdGEpKQotICAgICAgICAgICAgc3Rh
Y2ttYXAuYXBwZW5kKGdldChibG9jaywgZGF0YS5leGNlcHRpb24oKSkpOworICAgICAgICAgICAg
bGl2ZVZhbHVlcy5hcHBlbmQoZ2V0KGJsb2NrLCBkYXRhLmV4Y2VwdGlvbigpKSk7CiAgICAgfQog
CiAgICAgdW5zaWduZWQgb2Zmc2V0ID0gcGF0Y2gtPm51bUNoaWxkcmVuKCk7CkBAIC0yNjA5LDcg
KzI2MDYsNyBAQCBQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlIEIzSVJHZW5lcmF0b3I6OnByZXBh
cmVQYXRjaHBvaW50Rm9yRXhjZXB0aW9ucyhCYXNpY0JsbwogICAgICAgICBvZmZzZXQrKzsKIAog
ICAgIHBhdGNoLT5lZmZlY3RzLmV4aXRzU2lkZXdheXMgPSB0cnVlOwotICAgIHBhdGNoLT5hcHBl
bmRWZWN0b3JXaXRoUmVwKHN0YWNrbWFwLCBWYWx1ZVJlcDo6TGF0ZUNvbGRBbnkpOworICAgIHBh
dGNoLT5hcHBlbmRWZWN0b3JXaXRoUmVwKGxpdmVWYWx1ZXMsIFZhbHVlUmVwOjpMYXRlQ29sZEFu
eSk7CiAKICAgICByZXR1cm4gUGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZSB7IG1fY2FsbFNpdGVJ
bmRleCwgb2Zmc2V0IH07CiB9CkBAIC0yNjU0LDcgKzI2NTEsNyBAQCBWYWx1ZSogQjNJUkdlbmVy
YXRvcjo6ZW1pdENhdGNoSW1wbChDYXRjaEtpbmQga2luZCwgQ29udHJvbFR5cGUmIGRhdGEsIHVu
c2lnbmVkCiAgICAgfQogCiAgICAgSGFuZGxlclR5cGUgaGFuZGxlclR5cGUgPSBraW5kID09IENh
dGNoS2luZDo6Q2F0Y2ggPyBIYW5kbGVyVHlwZTo6Q2F0Y2ggOiBIYW5kbGVyVHlwZTo6Q2F0Y2hB
bGw7Ci0gICAgbV9leGNlcHRpb25IYW5kbGVycy5hcHBlbmQoeyBoYW5kbGVyVHlwZSwgZGF0YS50
cnlTdGFydCgpLCBkYXRhLnRyeUVuZCgpLCAwLCBtX3RyeURlcHRoLCBleGNlcHRpb25JbmRleCB9
KTsKKyAgICBtX2V4Y2VwdGlvbkhhbmRsZXJzLmFwcGVuZCh7IGhhbmRsZXJUeXBlLCBkYXRhLnRy
eVN0YXJ0KCksIGRhdGEudHJ5RW5kKCksIDAsIG1fdHJ5Q2F0Y2hEZXB0aCwgZXhjZXB0aW9uSW5k
ZXggfSk7CiAKICAgICByZXN0b3JlV2ViQXNzZW1ibHlHbG9iYWxTdGF0ZShSZXN0b3JlQ2FjaGVk
U3RhY2tMaW1pdDo6WWVzLCBtX2luZm8ubWVtb3J5LCBpbnN0YW5jZVZhbHVlKCksIG1fcHJvYywg
bV9jdXJyZW50QmxvY2ssIGZhbHNlKTsKIApAQCAtMjY2OCw3ICsyNjY1LDcgQEAgVmFsdWUqIEIz
SVJHZW5lcmF0b3I6OmVtaXRDYXRjaEltcGwoQ2F0Y2hLaW5kIGtpbmQsIENvbnRyb2xUeXBlJiBk
YXRhLCB1bnNpZ25lZAogICAgIGZvciAodW5zaWduZWQgY29udHJvbEluZGV4ID0gMDsgY29udHJv
bEluZGV4IDwgbV9wYXJzZXItPmNvbnRyb2xTdGFjaygpLnNpemUoKTsgKytjb250cm9sSW5kZXgp
IHsKICAgICAgICAgYXV0byYgY29udHJvbERhdGEgPSBtX3BhcnNlci0+Y29udHJvbFN0YWNrKClb
Y29udHJvbEluZGV4XS5jb250cm9sRGF0YTsKICAgICAgICAgYXV0byYgZXhwcmVzc2lvblN0YWNr
ID0gbV9wYXJzZXItPmNvbnRyb2xTdGFjaygpW2NvbnRyb2xJbmRleF0uZW5jbG9zZWRFeHByZXNz
aW9uU3RhY2s7Ci0gICAgICAgIGNvbm5lY3RDb250cm9sRW50cnkoaW5kZXhJbkJ1ZmZlciwgcG9p
bnRlciwgY29udHJvbERhdGEsIGV4cHJlc3Npb25TdGFjaywgZGF0YSk7CisgICAgICAgIGNvbm5l
Y3RDb250cm9sQXRFbnRyeXBvaW50KGluZGV4SW5CdWZmZXIsIHBvaW50ZXIsIGNvbnRyb2xEYXRh
LCBleHByZXNzaW9uU3RhY2ssIGRhdGEpOwogICAgIH0KIAogICAgIFBhdGNocG9pbnRWYWx1ZSog
cmVzdWx0ID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+KG1fcHJv
YywgbV9wcm9jLmFkZFR1cGxlKHsgcG9pbnRlclR5cGUoKSwgcG9pbnRlclR5cGUoKSB9KSwgb3Jp
Z2luKCkpOwpAQCAtMjcwNiw3ICsyNzAzLDcgQEAgYXV0byBCM0lSR2VuZXJhdG9yOjphZGREZWxl
Z2F0ZVRvVW5yZWFjaGFibGUoQ29udHJvbFR5cGUmIHRhcmdldCwgQ29udHJvbFR5cGUmIGQKICAg
ICBpZiAoQ29udHJvbFR5cGU6OmlzVHJ5KHRhcmdldCkpCiAgICAgICAgIHRhcmdldERlcHRoID0g
dGFyZ2V0LnRyeURlcHRoKCk7CiAKLSAgICBtX2V4Y2VwdGlvbkhhbmRsZXJzLmFwcGVuZCh7IEhh
bmRsZXJUeXBlOjpEZWxlZ2F0ZSwgZGF0YS50cnlTdGFydCgpLCArK21fY2FsbFNpdGVJbmRleCwg
MCwgbV90cnlEZXB0aCwgdGFyZ2V0RGVwdGggfSk7CisgICAgbV9leGNlcHRpb25IYW5kbGVycy5h
cHBlbmQoeyBIYW5kbGVyVHlwZTo6RGVsZWdhdGUsIGRhdGEudHJ5U3RhcnQoKSwgKyttX2NhbGxT
aXRlSW5kZXgsIDAsIG1fdHJ5Q2F0Y2hEZXB0aCwgdGFyZ2V0RGVwdGggfSk7CiAgICAgcmV0dXJu
IHsgfTsKIH0KIApAQCAtMjcxOCwxNiArMjcxNSwxMSBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFk
ZFRocm93KHVuc2lnbmVkIGV4Y2VwdGlvbkluZGV4LCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBh
cgogICAgIHBhdGNoLT5hcHBlbmQoZnJhbWVQb2ludGVyKCksIFZhbHVlUmVwOjpyZWcoR1BSSW5m
bzo6YXJndW1lbnRHUFIxKSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGFyZ3Muc2l6
ZSgpOyArK2kpCiAgICAgICAgIHBhdGNoLT5hcHBlbmQoZ2V0KGFyZ3NbaV0pLCBWYWx1ZVJlcDo6
c3RhY2tBcmd1bWVudChpICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSkpOwotICAgIFJlZ2lzdGVy
U2V0IGNsb2JiZXIgPSBSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCk7Ci0gICAg
Y2xvYmJlci5hZGQoR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKLSAgICBjbG9iYmVyLmFkZChHUFJJ
bmZvOjphcmd1bWVudEdQUjMpOwotICAgIHBhdGNoLT5jbG9iYmVyKGNsb2JiZXIpOwotICAgIHBh
dGNoLT5jbG9iYmVyTGF0ZShSZWdpc3RlclNldDo6dm9sYXRpbGVSZWdpc3RlcnNGb3JKU0NhbGwo
KSk7Ci0gICAgcGF0Y2gtPm51bUdQU2NyYXRjaFJlZ2lzdGVycyA9IDE7CisgICAgcGF0Y2gtPmNs
b2JiZXIoUmVnaXN0ZXJTZXQ6OnZvbGF0aWxlUmVnaXN0ZXJzRm9ySlNDYWxsKCkpOwogICAgIFBh
dGNocG9pbnRFeGNlcHRpb25IYW5kbGUgaGFuZGxlID0gcHJlcGFyZVBhdGNocG9pbnRGb3JFeGNl
cHRpb25zKG1fY3VycmVudEJsb2NrLCBwYXRjaCk7CiAgICAgcGF0Y2gtPnNldEdlbmVyYXRvcihb
dGhpcywgZXhjZXB0aW9uSW5kZXgsIGhhbmRsZV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBC
Mzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKICAgICAgICAgQWxsb3dNYWNy
b1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwotICAgICAgICBHUFJSZWcg
c2NyYXRjaCA9IHBhcmFtcy5ncFNjcmF0Y2goMCk7CisgICAgICAgIEdQUlJlZyBzY3JhdGNoID0g
R1BSSW5mbzo6bm9uUHJlc2VydmVkTm9uQXJndW1lbnRHUFIwOwogICAgICAgICBoYW5kbGUuZ2Vu
ZXJhdGUoaml0LCBwYXJhbXMsIHRoaXMpOwogCiAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVs
cGVyczo6QWRkcmVzcyhHUFJJbmZvOjphcmd1bWVudEdQUjAsIEluc3RhbmNlOjpvZmZzZXRPZk93
bmVyKCkpLCBzY3JhdGNoKTsKQEAgLTI3NjAsMjEgKzI3NTIsMTYgQEAgYXV0byBCM0lSR2VuZXJh
dG9yOjphZGRUaHJvdyh1bnNpZ25lZCBleGNlcHRpb25JbmRleCwgVmVjdG9yPEV4cHJlc3Npb25U
eXBlPiYgYXIKIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkUmV0aHJvdyh1bnNpZ25lZCwgQ29udHJv
bFR5cGUmIGRhdGEpIC0+IFBhcnRpYWxSZXN1bHQKIHsKICAgICBQYXRjaHBvaW50VmFsdWUqIHBh
dGNoID0gbV9wcm9jLmFkZDxQYXRjaHBvaW50VmFsdWU+KEIzOjpWb2lkLCBvcmlnaW4oKSk7Ci0g
ICAgcGF0Y2gtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsK
LSAgICBSZWdpc3RlclNldCBjbG9iYmVyTGF0ZTsKLSAgICBjbG9iYmVyTGF0ZS5hZGQoR1BSSW5m
bzo6YXJndW1lbnRHUFIwKTsKLSAgICBjbG9iYmVyTGF0ZS5hZGQoR1BSSW5mbzo6YXJndW1lbnRH
UFIxKTsKLSAgICBjbG9iYmVyTGF0ZS5hZGQoR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKKyAgICBw
YXRjaC0+Y2xvYmJlcihSZWdpc3RlclNldDo6dm9sYXRpbGVSZWdpc3RlcnNGb3JKU0NhbGwoKSk7
CiAgICAgcGF0Y2gtPmVmZmVjdHMudGVybWluYWwgPSB0cnVlOwogICAgIHBhdGNoLT5hcHBlbmQo
aW5zdGFuY2VWYWx1ZSgpLCBWYWx1ZVJlcDo6cmVnKEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOwog
ICAgIHBhdGNoLT5hcHBlbmQoZnJhbWVQb2ludGVyKCksIFZhbHVlUmVwOjpyZWcoR1BSSW5mbzo6
YXJndW1lbnRHUFIxKSk7CiAgICAgcGF0Y2gtPmFwcGVuZChnZXQoZGF0YS5leGNlcHRpb24oKSks
IFZhbHVlUmVwOjpyZWcoR1BSSW5mbzo6YXJndW1lbnRHUFIyKSk7Ci0gICAgcGF0Y2gtPm51bUdQ
U2NyYXRjaFJlZ2lzdGVycyA9IDE7CiAgICAgUGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZSBoYW5k
bGUgPSBwcmVwYXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlvbnMobV9jdXJyZW50QmxvY2ssIHBhdGNo
KTsKICAgICBwYXRjaC0+c2V0R2VuZXJhdG9yKFt0aGlzLCBoYW5kbGVdIChDQ2FsbEhlbHBlcnMm
IGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CiAgICAg
ICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKIAot
ICAgICAgICBHUFJSZWcgc2NyYXRjaCA9IHBhcmFtcy5ncFNjcmF0Y2goMCk7CisgICAgICAgIEdQ
UlJlZyBzY3JhdGNoID0gR1BSSW5mbzo6bm9uUHJlc2VydmVkTm9uQXJndW1lbnRHUFIwOwogICAg
ICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6YXJndW1lbnRH
UFIwLCBJbnN0YW5jZTo6b2Zmc2V0T2ZPd25lcigpKSwgc2NyYXRjaCk7CiAgICAgICAgIHsKICAg
ICAgICAgICAgIGF1dG8gcHJlY2lzZUFsbG9jYXRpb25DYXNlID0gaml0LmJyYW5jaFRlc3RQdHIo
Q0NhbGxIZWxwZXJzOjpOb25aZXJvLCBzY3JhdGNoLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0z
MihQcmVjaXNlQWxsb2NhdGlvbjo6aGFsZkFsaWdubWVudCkpOwpAQCAtMjg5MCw3ICsyODc3LDcg
QEAgYXV0byBCM0lSR2VuZXJhdG9yOjphZGRFbmRUb1VucmVhY2hhYmxlKENvbnRyb2xFbnRyeSYg
ZW50cnksIGNvbnN0IFN0YWNrJiBleHByZXMKICAgICAgICAgZGF0YS5zcGVjaWFsLT5hcHBlbmRO
ZXdDb250cm9sVmFsdWUobV9wcm9jLCBKdW1wLCBvcmlnaW4oKSwgbV9jdXJyZW50QmxvY2spOwog
ICAgICAgICBtX2N1cnJlbnRCbG9jay0+YWRkUHJlZGVjZXNzb3IoZGF0YS5zcGVjaWFsKTsKICAg
ICB9IGVsc2UgaWYgKGRhdGEuYmxvY2tUeXBlKCkgPT0gQmxvY2tUeXBlOjpUcnkgfHwgZGF0YS5i
bG9ja1R5cGUoKSA9PSBCbG9ja1R5cGU6OkNhdGNoKQotICAgICAgICAtLW1fdHJ5RGVwdGg7Cisg
ICAgICAgIC0tbV90cnlDYXRjaERlcHRoOwogCiAgICAgaWYgKGRhdGEuYmxvY2tUeXBlKCkgIT0g
QmxvY2tUeXBlOjpMb29wKSB7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkYXRh
LnNpZ25hdHVyZSgpLT5yZXR1cm5Db3VudCgpOyArK2kpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21DYWxsZWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21DYWxsZWUuaAppbmRleCA3ZDY5ZDYyNmQ4YzNmMGQ5MzdlMWQwYjUwMjUwM2M5NGI1
YmYxNTQ1Li43M2NhZTk0NTYzMzlkMzAzM2JhOTcyYjNhOWQ3Mzg5NWUwZDcyNWVhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQ2FsbGVlLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNhbGxlZS5oCkBAIC03NCw3ICs3NCw3IEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwogCi0gICAgdmlydHVhbCBG
dW5jdGlvbkNvZGVCbG9jayogZnVuY3Rpb25Db2RlQmxvY2soKSBjb25zdCB7IHJldHVybiAwOyB9
CisgICAgdmlydHVhbCBGdW5jdGlvbkNvZGVCbG9jayogbGxpbnRGdW5jdGlvbkNvZGVCbG9jaygp
IGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KIAogcHJvdGVjdGVkOgogICAgIEpTX0VYUE9SVF9Q
UklWQVRFIENhbGxlZShXYXNtOjpDb21waWxhdGlvbk1vZGUpOwpAQCAtMjUxLDcgKzI1MSw3IEBA
IHB1YmxpYzoKICAgICB9CiAKICAgICBMTEludFRpZXJVcENvdW50ZXImIHRpZXJVcENvdW50ZXIo
KSB7IHJldHVybiBtX2NvZGVCbG9jay0+dGllclVwQ291bnRlcigpOyB9Ci0gICAgRnVuY3Rpb25D
b2RlQmxvY2sqIGZ1bmN0aW9uQ29kZUJsb2NrKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9jb2Rl
QmxvY2suZ2V0KCk7IH0KKyAgICBGdW5jdGlvbkNvZGVCbG9jayogbGxpbnRGdW5jdGlvbkNvZGVC
bG9jaygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fY29kZUJsb2NrLmdldCgpOyB9CiAjZW5kaWYK
IAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21M
TEludEdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTExJbnRH
ZW5lcmF0b3IuY3BwCmluZGV4IDY3NjllZmQ1ZjkyM2VmMTIwZjdhYWVhNmYwYjA1YTNmMzU1OTY0
NTcuLjJiMmJhZGY2ZTdmOWZmMjViMjYyNmY2NWIxNWYwNDE1NTg5MDAzYTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21MTEludEdlbmVyYXRvci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUxMSW50R2VuZXJhdG9yLmNwcApAQCAtMTk1
LDkgKzE5NSw2IEBAIHB1YmxpYzoKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxGdW5jdGlvbkNvZGVC
bG9jaz4gZmluYWxpemUoKTsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wY29kZT4KLSAgICB2
b2lkIHJlcGF0Y2goY29uc3QgQ2F0Y2hSZXdyaXRlSW5mbyYpOwotCiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgRXhwcmVzc2lvbkxpc3RBLCB0eXBlbmFtZSBFeHByZXNzaW9uTGlzdEI+CiAgICAgdm9p
ZCB1bmlmeVZhbHVlc1dpdGhCbG9jayhjb25zdCBFeHByZXNzaW9uTGlzdEEmIGRlc3RpbmF0aW9u
cywgY29uc3QgRXhwcmVzc2lvbkxpc3RCJiB2YWx1ZXMpCiAgICAgewpAQCAtMjA2LDcgKzIwMyw3
IEBAIHB1YmxpYzoKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBkZXN0aW5hdGlvbnMu
c2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAgIGF1dG8mIHNyYyA9IHZhbHVlc1tvZmZzZXQgKyBp
XTsKICAgICAgICAgICAgIGF1dG8mIGRzdCA9IGRlc3RpbmF0aW9uc1tpXTsKLSAgICAgICAgICAg
IGlmICgoVmlydHVhbFJlZ2lzdGVyKXNyYyAhPSAoVmlydHVhbFJlZ2lzdGVyKWRzdCkKKyAgICAg
ICAgICAgIGlmIChzdGF0aWNfY2FzdDxWaXJ0dWFsUmVnaXN0ZXI+KHNyYykgIT0gc3RhdGljX2Nh
c3Q8VmlydHVhbFJlZ2lzdGVyPihkc3QpKQogICAgICAgICAgICAgICAgIFdhc21Nb3Y6OmVtaXQo
dGhpcywgZHN0LCBzcmMpOwogICAgICAgICB9CiAgICAgfQpAQCAtNTAwLDcgKzQ5Nyw2IEBAIHBy
aXZhdGU6CiAgICAgQ2hlY2tlZDx1bnNpZ25lZD4gbV9zdGFja1NpemUgeyAwIH07CiAgICAgQ2hl
Y2tlZDx1bnNpZ25lZD4gbV9tYXhTdGFja1NpemUgeyAwIH07CiAgICAgQ2hlY2tlZDx1bnNpZ25l
ZD4gbV90cnlEZXB0aCB7IDAgfTsKLSAgICBDaGVja2VkPHVuc2lnbmVkPiBtX21heFRyeURlcHRo
IHsgMCB9OwogICAgIGJvb2wgbV91c2VzRXhjZXB0aW9ucyB7IGZhbHNlIH07CiB9OwogCkBAIC01
NDcsMTggKzU0Myw2IEBAIExMSW50R2VuZXJhdG9yOjpMTEludEdlbmVyYXRvcihNb2R1bGVJbmZv
cm1hdGlvbiYgaW5mbywgdW5zaWduZWQgZnVuY3Rpb25JbmRleCwKICAgICBXYXNtRW50ZXI6OmVt
aXQodGhpcyk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIE9wY29kZT4KLXZvaWQgTExJbnRHZW5l
cmF0b3I6OnJlcGF0Y2goY29uc3QgQ2F0Y2hSZXdyaXRlSW5mbyYgaW5mbykKLXsKLSAgICBhdXRv
IHJlZiA9IG1fd3JpdGVyLnJlZihpbmZvLm1faW5zdHJ1Y3Rpb25PZmZzZXQpOwotICAgIE9wY29k
ZSogaW5zdHJ1Y3Rpb24gPSByZWYtPmNhc3Q8T3Bjb2RlLCBXYXNtT3Bjb2RlVHJhaXRzPigpOwot
ICAgIFZpcnR1YWxSZWdpc3RlciBleGNlcHRpb25SZWdpc3RlciA9IHZpcnR1YWxSZWdpc3RlckZv
ckxvY2FsKG1fbWF4U3RhY2tTaXplICsgaW5mby5tX3RyeURlcHRoIC0gMSk7Ci0gICAgaW5zdHJ1
Y3Rpb24tPnNldEV4Y2VwdGlvbihleGNlcHRpb25SZWdpc3RlciwgW10oKSB7Ci0gICAgICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiBWaXJ0dWFsUmVnaXN0
ZXIoKTsKLSAgICB9KTsKLX0KLQogc3RkOjp1bmlxdWVfcHRyPEZ1bmN0aW9uQ29kZUJsb2NrPiBM
TEludEdlbmVyYXRvcjo6ZmluYWxpemUoKQogewogICAgIFJFTEVBU0VfQVNTRVJUKG1fY29kZUJs
b2NrKTsKQEAgLTEwNjEsOCArMTA0NSw2IEBAIGF1dG8gTExJbnRHZW5lcmF0b3I6OmFkZFRyeShC
bG9ja1NpZ25hdHVyZSBzaWduYXR1cmUsIFN0YWNrJiBlbmNsb3NpbmdTdGFjaywgQ29uCiB7CiAg
ICAgbV91c2VzRXhjZXB0aW9ucyA9IHRydWU7CiAgICAgKyttX3RyeURlcHRoOwotICAgIGlmICht
X21heFRyeURlcHRoIDwgbV90cnlEZXB0aCkKLSAgICAgICAgbV9tYXhUcnlEZXB0aCA9IG1fdHJ5
RGVwdGg7CiAKICAgICBzcGxpdFN0YWNrKHNpZ25hdHVyZSwgZW5jbG9zaW5nU3RhY2ssIG5ld1N0
YWNrKTsKICAgICBSZWY8TGFiZWw+IHRyeUxhYmVsID0gbmV3RW1pdHRlZExhYmVsKCk7CkBAIC0x
MTkxLDYgKzExNzMsMTAgQEAgYXV0byBMTEludEdlbmVyYXRvcjo6YWRkRGVsZWdhdGVUb1VucmVh
Y2hhYmxlKENvbnRyb2xUeXBlJiB0YXJnZXQsIENvbnRyb2xUeXBlJgogYXV0byBMTEludEdlbmVy
YXRvcjo6YWRkVGhyb3codW5zaWduZWQgZXhjZXB0aW9uSW5kZXgsIFZlY3RvcjxFeHByZXNzaW9u
VHlwZT4mIGFyZ3MsIFN0YWNrJikgLT4gUGFydGlhbFJlc3VsdAogewogICAgIG1fdXNlc0V4Y2Vw
dGlvbnMgPSB0cnVlOworICAgIC8vIFdlIGhhdmUgdG8gbWF0ZXJpYWxpemUgdGhlIGFyZ3VtZW50
cyBoZXJlIHNpbmNlIGl0IG1pZ2h0IGluY2x1ZGVkIGNvbnN0YW50cyBvcgorICAgIC8vIGRlbGF5
ZWQgbW92ZXMsIGJ1dCB0aGUgd2FzbV90aHJvdyBvcGNvZGUgZXhwZWN0cyBhbGwgdGhlIGFyZ3Vt
ZW50cyB0byBiZSBjb250aWd1b3VzCisgICAgLy8gaW4gc3RhY2suIFRoZSByZWFzb24gd2UgZG9u
J3QgY2FsbCBtYXRlcmlhbGl6ZUNvbnN0YW50c0FuZExvY2FscyBoZXJlIGlzIHRoYXQKKyAgICAv
LyBpdCBleHBlY3RzIGEgc3RhY2ssIG5vdCBhIHZlY3RvciBvZiBFeHByZXNzaW9uVHlwZSBhcmd1
bWVudHMuCiAgICAgd2Fsa0V4cHJlc3Npb25TdGFjayhhcmdzLCBbJl0oVmlydHVhbFJlZ2lzdGVy
JiBhcmcsIFZpcnR1YWxSZWdpc3RlciBzbG90KSB7CiAgICAgICAgIGlmIChhcmcgPT0gc2xvdCkK
ICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21PcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21P
cGVyYXRpb25zLmNwcAppbmRleCBkYWJhZWU3ZWI4MmQ3MWJkZGIxMjk3YzAxYjNlM2ZlZGE1M2Q3
NzhlLi43MzViMzAzNWUxMTBiMzgyMTRlNWZjY2UyMjA5YzA1YWZkYzFlYzZmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT3BlcmF0aW9ucy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9wZXJhdGlvbnMuY3BwCkBAIC05MTAsNyArOTEw
LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbldhc21EYXRhRHJvcCwgdm9p
ZCwgKEluc3RhbmNlKiBpbnN0YW5jZSwgdW5zaWcKICAgICBpbnN0YW5jZS0+ZGF0YURyb3AoZGF0
YVNlZ21lbnRJbmRleCk7CiB9CiAKLUpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25X
YXNtVGhyb3csIHZvaWQqLCAoSW5zdGFuY2UqIGluc3RhbmNlLCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSwgdW5zaWduZWQgZXhjZXB0aW9uSW5kZXgsIEVuY29kZWRKU1ZhbHVlKiBhcmd1bWVudHMpKQor
SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbldhc21UaHJvdywgdm9pZCosIChJbnN0
YW5jZSogaW5zdGFuY2UsIENhbGxGcmFtZSogY2FsbEZyYW1lLCB1bnNpZ25lZCBleGNlcHRpb25J
bmRleCwgdWludDY0X3QqIGFyZ3VtZW50cykpCiB7CiAgICAgaW5zdGFuY2UtPnN0b3JlVG9wQ2Fs
bEZyYW1lKGNhbGxGcmFtZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21PcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT3Bl
cmF0aW9ucy5oCmluZGV4IDVlYzdhNTk0N2NjNzM4YzNiMmI5YmIyNWQ3ZTVhNjA4ZjFiMjZlZDku
LmNmN2MwZDVmZWY0ZGZkMzVjN2NjYTMzNDc5M2ViMjQ0ZWNiYWRkMTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbU9wZXJhdGlvbnMuaApAQCAtODgsNyArODgsNyBAQCBKU0Nf
REVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk1lbW9yeUF0b21pY05vdGlmeSwgaW50MzJf
dCwgKEluc3RhbmNlKiwgdW5zaQogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25X
YXNtTWVtb3J5SW5pdCwgc2l6ZV90LCAoSW5zdGFuY2UqLCB1bnNpZ25lZCBkYXRhU2VnbWVudElu
ZGV4LCB1aW50MzJfdCBkc3RBZGRyZXNzLCB1aW50MzJfdCBzcmNBZGRyZXNzLCB1aW50MzJfdCBs
ZW5ndGgpKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uV2FzbURhdGFEcm9w
LCB2b2lkLCAoSW5zdGFuY2UqLCB1bnNpZ25lZCBkYXRhU2VnbWVudEluZGV4KSk7CiAKLUpTQ19E
RUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uV2FzbVRocm93LCB2b2lkKiwgKEluc3RhbmNl
KiwgQ2FsbEZyYW1lKiwgdW5zaWduZWQgZXhjZXB0aW9uSW5kZXgsIEVuY29kZWRKU1ZhbHVlKikp
OworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25XYXNtVGhyb3csIHZvaWQqLCAo
SW5zdGFuY2UqLCBDYWxsRnJhbWUqLCB1bnNpZ25lZCBleGNlcHRpb25JbmRleCwgdWludDY0X3Qq
KSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbldhc21SZXRocm93LCB2b2lk
KiwgKEluc3RhbmNlKiwgQ2FsbEZyYW1lKiwgRW5jb2RlZEpTVmFsdWUgdGhyb3duVmFsdWUpKTsK
IAogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25XYXNtVG9KU0V4Y2VwdGlvbiwg
dm9pZCosIChDYWxsRnJhbWUqLCBXYXNtOjpFeGNlcHRpb25UeXBlLCBJbnN0YW5jZSopKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441818</attachid>
            <date>2021-10-19 17:08:38 -0700</date>
            <delta_ts>2021-10-19 17:40:27 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-231973-20211019170837.patch</filename>
            <type>text/plain</type>
            <size>26103</size>
            <attacher name="Tadeu Zagallo">tzagallo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0Mzg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
NzY0YmM5OTc5NDVmYWY5YWE5N2IxZDNlNDZhOTgwOWQyNTMzNmY4Li42OWJiNTU5MDZlMTdkZWRm
OWQwOWZlN2ZhZWIyNWViNzVlNDRjODljIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0OCBAQAorMjAyMS0xMC0xOSAgVGFkZXUgWmFnYWxsbyAgPHR6YWdhbGxvQGFwcGxlLmNv
bT4KKworICAgICAgICBBZGRyZXNzIHBvc3QtbGFuZGluZyBmZWVkYmFjayB0byB3YXNtIGV4Y2Vw
dGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
MTk3MworCisgICAgICAgIFJldmlld2VkIGJ5IFNhYW0gQmFyYXRpLgorCisgICAgICAgIEFkZHJl
c3MgY29tbWVudHMgbGVmdCBieSBTYWFtIGluIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjk2ODEKKyAgICAgICAgYWZ0ZXIgdGhlIHBhdGNoIGxhbmRlZC4gVGhpcyBp
bmNsdWRlcyBkZWxldGluZyBzb21lIHVudXNlZCBjb2RlLCBhbmQgcmVuYW1pbmcgYQorICAgICAg
ICBjb3VwbGUgdmFyaWFibGVzIGFuZCBtZXRob2RzLCBidXQgdGhlIGJpZ2dlc3QgY2hhbmdlIGlz
IGNvcHlpbmcgdGhlIGNhbGxlZSBzYXZlcworICAgICAgICB0byBWTUVudHJ5IGluIHRoZSBsbGlu
dCByZXRocm93LgorCisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAg
ICAgICAoSlNDOjpDYXRjaEluZm86OkNhdGNoSW5mbyk6CisgICAgICAgIChKU0M6OlVud2luZEZ1
bmN0b3I6Om9wZXJhdG9yKCkgY29uc3QpOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJl
dGVyLmg6CisgICAgICAgIChKU0M6OkNhdGNoSW5mbzo6Q2F0Y2hJbmZvKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBqaXQvSlNJbnRlcmZhY2VKSVQuaDoKKyAgICAgICAgKEpTQzo6SlNJbnRlcmZhY2VK
SVQ6OmNvbnZlcnRDYWxsZWVUb1ZNKTogRGVsZXRlZC4KKyAgICAgICAgKiBsbGludC9XZWJBc3Nl
bWJseS5hc206CisgICAgICAgICogd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHA6CisgICAgICAg
IChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OkNvbnRyb2xEYXRhOjpDb250cm9sRGF0YSk6Cisg
ICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OkNvbnRyb2xEYXRhOjp0cnlEZXB0aCBj
b25zdCk6CisgICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OmNvbm5lY3RDb250cm9s
QXRFbnRyeXBvaW50KToKKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6YWRkTG9v
cCk6CisgICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OmFkZFRyeSk6CisgICAgICAg
IChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OnByZXBhcmVQYXRjaHBvaW50Rm9yRXhjZXB0aW9u
cyk6CisgICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OmVtaXRDYXRjaEltcGwpOgor
ICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9yOjphZGREZWxlZ2F0ZVRvVW5yZWFjaGFi
bGUpOgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9yOjphZGRUaHJvdyk6CisgICAg
ICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OmFkZFJldGhyb3cpOgorICAgICAgICAoSlND
OjpXYXNtOjpCM0lSR2VuZXJhdG9yOjphZGRFbmRUb1VucmVhY2hhYmxlKToKKyAgICAgICAgKEpT
Qzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6Y29ubmVjdENvbnRyb2xFbnRyeSk6IERlbGV0ZWQuCisg
ICAgICAgICogd2FzbS9XYXNtQ2FsbGVlLmg6CisgICAgICAgIChKU0M6Oldhc206OkNhbGxlZTo6
bGxpbnRGdW5jdGlvbkNvZGVCbG9jayBjb25zdCk6CisgICAgICAgIChKU0M6Oldhc206OkNhbGxl
ZTo6ZnVuY3Rpb25Db2RlQmxvY2sgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHdhc20vV2Fz
bUxMSW50R2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6TExJbnRHZW5lcmF0b3I6
OnVuaWZ5VmFsdWVzV2l0aEJsb2NrKToKKyAgICAgICAgKEpTQzo6V2FzbTo6TExJbnRHZW5lcmF0
b3I6OmFkZFRyeSk6CisgICAgICAgIChKU0M6Oldhc206OkxMSW50R2VuZXJhdG9yOjphZGRUaHJv
dyk6CisgICAgICAgIChKU0M6Oldhc206OkxMSW50R2VuZXJhdG9yOjpyZXBhdGNoKTogRGVsZXRl
ZC4KKyAgICAgICAgKiB3YXNtL1dhc21PcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6V2Fz
bTo6SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKToKKyAgICAgICAgKiB3YXNtL1dhc21PcGVyYXRp
b25zLmg6CisKIDIwMjEtMTAtMTggIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4K
IAogICAgICAgICBbSlNDXSBVc2UgVVNFKExBUkdFX1RZUEVEX0FSUkFZKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKaW5kZXggOWNhYzQw
YTY2MTJjMzE2YThlYWYxYWE2MmI4OWY0MWE1NmZiNGJkMi4uZGQ3MzY2MjhiOGFjNjljNjE2YjVl
OTYzZWMzMGNhNzdjN2ZhY2QyMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL0ludGVycHJldGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC01NDIsNyArNTQyLDcgQEAgQ2F0Y2hJbmZvOjpD
YXRjaEluZm8oY29uc3QgV2FzbTo6SGFuZGxlckluZm8qIGhhbmRsZXIsIGNvbnN0IFdhc206OkNh
bGxlZSogY2FsbGUKICAgICBpZiAobV92YWxpZCkgewogICAgICAgICBtX3R5cGUgPSBIYW5kbGVy
VHlwZTo6Q2F0Y2g7CiAgICAgICAgIG1fbmF0aXZlQ29kZSA9IGhhbmRsZXItPm1fbmF0aXZlQ29k
ZTsKLSAgICAgICAgaWYgKGNvbnN0IFdhc206OkZ1bmN0aW9uQ29kZUJsb2NrKiBjb2RlQmxvY2sg
PSBjYWxsZWUtPmZ1bmN0aW9uQ29kZUJsb2NrKCkpCisgICAgICAgIGlmIChjb25zdCBXYXNtOjpG
dW5jdGlvbkNvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbGVlLT5sbGludEZ1bmN0aW9uQ29kZUJs
b2NrKCkpCiAgICAgICAgICAgICBtX2NhdGNoUENGb3JJbnRlcnByZXRlciA9IGNvZGVCbG9jay0+
aW5zdHJ1Y3Rpb25zKCkuYXQoaGFuZGxlci0+bV90YXJnZXQpLnB0cigpOwogICAgICAgICBlbHNl
CiAgICAgICAgICAgICBtX2NhdGNoUENGb3JJbnRlcnByZXRlciA9IG51bGxwdHI7CkBAIC01OTIs
NyArNTkyLDYgQEAgcHVibGljOgogICAgICAgICBpZiAoY2FsbGVlLmlzQ2VsbCgpKSB7CiAgICAg
ICAgICAgICBpZiAoYXV0byoganNUb1dhc21JQ0NhbGxlZSA9IGpzRHluYW1pY0Nhc3Q8SlNUb1dh
c21JQ0NhbGxlZSo+KG1fdm0sIGNhbGxlZS5hc0NlbGwoKSkpCiAgICAgICAgICAgICAgICAgbV92
bS53YXNtQ29udGV4dC5zdG9yZShqc1RvV2FzbUlDQ2FsbGVlLT5mdW5jdGlvbigpLT5wcmV2aW91
c0luc3RhbmNlKG1fY2FsbEZyYW1lKSwgbV92bS5zb2Z0U3RhY2tMaW1pdCgpKTsKLQogICAgICAg
ICB9CiAKICAgICAgICAgaWYgKG1fY2F0Y2hhYmxlRnJvbVdhc20gJiYgY2FsbGVlLmlzV2FzbSgp
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJw
cmV0ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5o
CmluZGV4IDRkOTY4OGU1YWE4Y2EwYTRhZDBmNWQ5MGZkZmFjMTQyMDNjNTg5YzIuLmU2NDY0NjU2
NzlmMjFkMTNkMzQ0Y2Q2ODgyMzkxNzA3NmZjY2FhMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCkBAIC05MCwxNiArOTAsMTQgQEAgc3Ry
dWN0IEhhbmRsZXJJbmZvOwogICAgIH07CiAKICAgICBzdHJ1Y3QgQ2F0Y2hJbmZvIHsKLSAgICAg
ICAgQ2F0Y2hJbmZvKCkKLSAgICAgICAgICAgIDogbV92YWxpZChmYWxzZSkKLSAgICAgICAgeyB9
CisgICAgICAgIENhdGNoSW5mbygpID0gZGVmYXVsdDsKIAogICAgICAgICBDYXRjaEluZm8oY29u
c3QgSGFuZGxlckluZm8qLCBDb2RlQmxvY2sqKTsKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAg
ICAgICAgIENhdGNoSW5mbyhjb25zdCBXYXNtOjpIYW5kbGVySW5mbyosIGNvbnN0IFdhc206OkNh
bGxlZSopOwogI2VuZGlmCiAKLSAgICAgICAgYm9vbCBtX3ZhbGlkOworICAgICAgICBib29sIG1f
dmFsaWQgeyBmYWxzZSB9OwogICAgICAgICBIYW5kbGVyVHlwZSBtX3R5cGU7CiAjaWYgRU5BQkxF
KEpJVCkKICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEV4Y2VwdGlvbkhhbmRsZXJQdHJU
YWc+IG1fbmF0aXZlQ29kZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SlNJbnRlcmZhY2VKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VK
SVQuaAppbmRleCA5OTIyOWU0OTkzMTdjMTJhMWYzNGNiZWFjZGFlYzkwMTUzODA4YWRkLi43Y2Ex
YjRlN2MzZmQwODRkZDI3YWMzODUwNmFhOWM2YWVkOTVkZWIwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oCkBAIC01Nyw3ICs1Nyw2IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICB2b2lkIGVtaXRQdXRUb0NhbGxGcmFtZUhlYWRlcihSZWdpc3RlcklEIGZy
b20sIFZpcnR1YWxSZWdpc3RlciBlbnRyeSk7CiAgICAgICAgIHZvaWQgZW1pdFB1dFRvQ2FsbEZy
YW1lSGVhZGVyKHZvaWQqIHZhbHVlLCBWaXJ0dWFsUmVnaXN0ZXIgZW50cnkpOwogICAgICAgICB2
b2lkIGVtaXRQdXRDZWxsVG9DYWxsRnJhbWVIZWFkZXIoUmVnaXN0ZXJJRCBmcm9tLCBWaXJ0dWFs
UmVnaXN0ZXIgZW50cnkpOwotICAgICAgICB2b2lkIGNvbnZlcnRDYWxsZWVUb1ZNKFJlZ2lzdGVy
SUQgY2FsbGVlKTsKIAogICAgICAgICBWTSogdm0oKSBjb25zdCB7IHJldHVybiBtX3ZtOyB9CiAK
QEAgLTE1OSwxOSArMTU4LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAjZW5kaWYKICAgICB9CiAKLSAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgSlNJbnRlcmZhY2VKSVQ6OmNvbnZlcnRDYWxsZWVUb1ZNKFJl
Z2lzdGVySUQgY2FsbGVlKQotICAgIHsKLSAgICAgICAgYXV0byBwcmVjaXNlQWxsb2NhdGlvbkNh
c2UgPSBicmFuY2hUZXN0UHRyKENDYWxsSGVscGVyczo6Tm9uWmVybywgY2FsbGVlLCBDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW0zMihQcmVjaXNlQWxsb2NhdGlvbjo6aGFsZkFsaWdubWVudCkpOwot
ICAgICAgICBhbmRQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKE1hcmtlZEJsb2NrOjpi
bG9ja01hc2spLCBjYWxsZWUpOwotICAgICAgICBsb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVz
cyhjYWxsZWUsIE1hcmtlZEJsb2NrOjpvZmZzZXRPZkZvb3RlciArIE1hcmtlZEJsb2NrOjpGb290
ZXI6Om9mZnNldE9mVk0oKSksIGNhbGxlZSk7Ci0gICAgICAgIGF1dG8gbG9hZGVkQ2FzZSA9IGp1
bXAoKTsKLQotICAgICAgICBwcmVjaXNlQWxsb2NhdGlvbkNhc2UubGluayh0aGlzKTsKLSAgICAg
ICAgbG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoY2FsbGVlLCBQcmVjaXNlQWxsb2NhdGlv
bjo6b2Zmc2V0T2ZXZWFrU2V0KCkgKyBXZWFrU2V0OjpvZmZzZXRPZlZNKCkgLSBQcmVjaXNlQWxs
b2NhdGlvbjo6aGVhZGVyU2l6ZSgpKSwgY2FsbGVlKTsKLQotICAgICAgICBsb2FkZWRDYXNlLmxp
bmsodGhpcyk7Ci0gICAgfQotCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEVOQUJM
RShKSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvV2ViQXNzZW1i
bHkuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L1dlYkFzc2VtYmx5LmFzbQppbmRl
eCA1YmNiZGY4MzA4MjMzNjc5ZDA4NDNjMmI4M2E4NTMzOTVlNWJhOGEyLi41M2EyMDIwYWM4OGY1
MmIwYjhmODg3MTcyODE1MTJmNGViNTU0ODRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvV2ViQXNzZW1ibHkuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9XZWJBc3NlbWJseS5hc20KQEAgLTI4MjUsMTEgKzI4MjUsMTUgQEAgd2FzbU9wKHRocm93
LCBXYXNtVGhyb3csIG1hY3JvKGN0eCkKIGVuZCkKIAogd2FzbU9wKHJldGhyb3csIFdhc21SZXRo
cm93LCBtYWNybyhjdHgpCisgICAgbG9hZHAgV2FzbTo6SW5zdGFuY2U6Om1fcG9pbnRlclRvVG9w
RW50cnlGcmFtZVt3YXNtSW5zdGFuY2VdLCB0NQorICAgIGxvYWRwIFt0NV0sIHQ1CisgICAgY29w
eUNhbGxlZVNhdmVzVG9FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIodDUpCisKICAgICBjYWxs
V2FzbVNsb3dQYXRoKF9zbG93X3BhdGhfd2FzbV9yZXRocm93KQogICAgIGp1bXBUb0V4Y2VwdGlv
bigpCiBlbmQpCiAKLW1hY3JvIGNhdGNoSW1wbChjdHgsIHN0b3JlV2FzbUluc3RhbmNlKQorbWFj
cm8gY29tbW9uQ2F0Y2hJbXBsKGN0eCwgc3RvcmVXYXNtSW5zdGFuY2UpCiAgICAgbG9hZHAgQ2Fs
bGVlW2Nmcl0sIHQzCiAgICAgY29udmVydENhbGxlZVRvVk0odDMpCiAgICAgcmVzdG9yZUNhbGxl
ZVNhdmVzRnJvbVZNRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKHQzLCB0MCkKQEAgLTI4NTQs
NiArMjg1OCwxNyBAQCBtYWNybyBjYXRjaEltcGwoY3R4LCBzdG9yZVdhc21JbnN0YW5jZSkKICAg
ICBzdWJwIFBCLCBQQwogCiAgICAgY2FsbFdhc21TbG93UGF0aChfc2xvd19wYXRoX3dhc21fcmV0
cmlldmVfYW5kX2NsZWFyX2V4Y2VwdGlvbikKK2VuZAorCittYWNybyBjYXRjaEFsbEltcGwoY3R4
LCBzdG9yZVdhc21JbnN0YW5jZSkKKyAgICBjb21tb25DYXRjaEltcGwoY3R4LCBzdG9yZVdhc21J
bnN0YW5jZSkKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgZGlzcGF0Y2goY3R4KQorZW5kCisK
K21hY3JvIGNhdGNoSW1wbChjdHgsIHN0b3JlV2FzbUluc3RhbmNlKQorICAgIGNvbW1vbkNhdGNo
SW1wbChjdHgsIHN0b3JlV2FzbUluc3RhbmNlKQorCiAgICAgbW92ZSByMSwgdDEKIAogICAgIHdn
ZXR1KGN0eCwgbV9zdGFydE9mZnNldCwgdDIpCkBAIC0yODc1LDcgKzI4OTAsNiBAQCBtYWNybyBj
YXRjaEltcGwoY3R4LCBzdG9yZVdhc21JbnN0YW5jZSkKIAogLmRvbmU6CiAgICAgdHJhY2VFeGVj
dXRpb24oKQotCiAgICAgZGlzcGF0Y2goY3R4KQogZW5kCiAKQEAgLTI4ODcsMzcgKzI5MDEsNiBA
QCBjb21tb25XYXNtT3Aod2FzbV9jYXRjaF9ub190bHMsIFdhc21DYXRjaCwgbWFjcm8oKSBlbmQs
IG1hY3JvKGN0eCkKICAgICBjYXRjaEltcGwoY3R4LCBtYWNybyhpbnN0YW5jZSkgZW5kKQogZW5k
KQogCi1tYWNybyBjYXRjaEFsbEltcGwoY3R4LCBzdG9yZVdhc21JbnN0YW5jZSkKLSAgICBsb2Fk
cCBDYWxsZWVbY2ZyXSwgdDMKLSAgICBjb252ZXJ0Q2FsbGVlVG9WTSh0MykKLSAgICByZXN0b3Jl
Q2FsbGVlU2F2ZXNGcm9tVk1FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIodDMsIHQwKQotCi0g
ICAgbG9hZHAgVk06OmNhbGxlZUZvcldhc21DYXRjaFt0M10sIHdzMQotICAgIHN0b3JlcCAwLCBW
TTo6Y2FsbGVlRm9yV2FzbUNhdGNoW3QzXQotICAgIHN0b3JlcCB3czEsIENhbGxlZVtjZnJdCi0K
LSAgICBsb2FkcCBWTTo6Y2FsbEZyYW1lRm9yQ2F0Y2hbdDNdLCBjZnIKLSAgICBzdG9yZXAgMCwg
Vk06OmNhbGxGcmFtZUZvckNhdGNoW3QzXQotCi0gICAgcmVzdG9yZVN0YWNrUG9pbnRlckFmdGVy
Q2FsbCgpCi0KLSAgICBsb2FkcCBUaGlzQXJndW1lbnRPZmZzZXRbY2ZyXSwgd2FzbUluc3RhbmNl
Ci0gICAgbG9hZHAgSlNXZWJBc3NlbWJseUluc3RhbmNlOjptX2luc3RhbmNlW3dhc21JbnN0YW5j
ZV0sIHdhc21JbnN0YW5jZQotICAgIHN0b3JlV2FzbUluc3RhbmNlKHdhc21JbnN0YW5jZSkKLSAg
ICByZWxvYWRNZW1vcnlSZWdpc3RlcnNGcm9tSW5zdGFuY2Uod2FzbUluc3RhbmNlLCB3czAsIHdz
MSkKLQotICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBQQgotICAgIGxvYWRwIFdhc206OkZ1bmN0
aW9uQ29kZUJsb2NrOjptX2luc3RydWN0aW9uc1Jhd1BvaW50ZXJbUEJdLCBQQgotICAgIGxvYWRw
IFZNOjp0YXJnZXRJbnRlcnByZXRlclBDRm9yVGhyb3dbdDNdLCBQQwotICAgIHN1YnAgUEIsIFBD
Ci0KLSAgICBjYWxsV2FzbVNsb3dQYXRoKF9zbG93X3BhdGhfd2FzbV9yZXRyaWV2ZV9hbmRfY2xl
YXJfZXhjZXB0aW9uKQotCi0gICAgdHJhY2VFeGVjdXRpb24oKQotCi0gICAgZGlzcGF0Y2goY3R4
KQotZW5kCi0KIGNvbW1vbldhc21PcCh3YXNtX2NhdGNoX2FsbCwgV2FzbUNhdGNoQWxsLCBtYWNy
bygpIGVuZCwgbWFjcm8oY3R4KQogICAgIGNhdGNoQWxsSW1wbChjdHgsIHN0b3JlV2FzbUluc3Rh
bmNlVG9UTFMpCiBlbmQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtQjNJUkdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJ
UkdlbmVyYXRvci5jcHAKaW5kZXggOWI3ZTAwZjJjNzdjNDcwZTU3M2EzNzAzMDFjYjJiZGQ1YmFj
YzA4MS4uZWMyOGFiZTM3NTNjZDhlZjI3ZjdiMmRhMjcyYzk2Y2M1MzIxYjI3ZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcApAQCAtMTI4
LDEwICsxMjgsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAsIGNvbnRpbnVhdGlvbihjb250aW51
YXRpb24pCiAgICAgICAgICAgICAsIHNwZWNpYWwobnVsbHB0cikKICAgICAgICAgICAgICwgbV90
cnlTdGFydCh0cnlTdGFydCkKLSAgICAgICAgICAgICwgbV90cnlEZXB0aCh0cnlEZXB0aCkKKyAg
ICAgICAgICAgICwgbV90cnlDYXRjaERlcHRoKHRyeURlcHRoKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBVTlVTRURfUEFSQU0ocHJvYyk7Ci0gICAgICAgICAgICBVTlVTRURfUEFSQU0ob3JpZ2lu
KTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaWduYXR1cmUtPnJldHVy
bkNvdW50KCk7ICsraSkKICAgICAgICAgICAgICAgICBwaGlzLmFwcGVuZChwcm9jLmFkZDxWYWx1
ZT4oUGhpLCB0b0IzVHlwZShzaWduYXR1cmUtPnJldHVyblR5cGUoaSkpLCBvcmlnaW4pKTsKICAg
ICAgICAgfQpAQCAtMjUwLDcgKzI0OCw3IEBAIHB1YmxpYzoKICAgICAgICAgdW5zaWduZWQgdHJ5
RGVwdGgoKSBjb25zdAogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoY29udHJvbEJsb2Nr
VHlwZSA9PSBCbG9ja1R5cGU6OlRyeSB8fCBjb250cm9sQmxvY2tUeXBlID09IEJsb2NrVHlwZTo6
Q2F0Y2gpOwotICAgICAgICAgICAgcmV0dXJuIG1fdHJ5RGVwdGg7CisgICAgICAgICAgICByZXR1
cm4gbV90cnlDYXRjaERlcHRoOwogICAgICAgICB9CiAKICAgICAgICAgQ2F0Y2hLaW5kIGNhdGNo
S2luZCgpIGNvbnN0CkBAIC0yNzksNyArMjc3LDcgQEAgcHVibGljOgogICAgICAgICBWZWN0b3I8
VmFsdWUqPiBwaGlzOwogICAgICAgICB1bnNpZ25lZCBtX3RyeVN0YXJ0OwogICAgICAgICB1bnNp
Z25lZCBtX3RyeUVuZDsKLSAgICAgICAgdW5zaWduZWQgbV90cnlEZXB0aDsKKyAgICAgICAgdW5z
aWduZWQgbV90cnlDYXRjaERlcHRoOwogICAgICAgICBDYXRjaEtpbmQgbV9jYXRjaEtpbmQ7CiAg
ICAgICAgIFZhcmlhYmxlKiBtX2V4Y2VwdGlvbjsKICAgICB9OwpAQCAtNDYzLDcgKzQ2MSw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCByZXN0b3JlV2ViQXNzZW1ibHlHbG9iYWxTdGF0ZShSZXN0b3Jl
Q2FjaGVkU3RhY2tMaW1pdCwgY29uc3QgTWVtb3J5SW5mb3JtYXRpb24mLCBWYWx1ZSogaW5zdGFu
Y2UsIFByb2NlZHVyZSYsIEJhc2ljQmxvY2sqLCBib29sIHJlc3RvcmVJbnN0YW5jZSA9IHRydWUp
OwogCiAgICAgVmFsdWUqIGxvYWRGcm9tU2NyYXRjaEJ1ZmZlcih1bnNpZ25lZCYgaW5kZXhJbkJ1
ZmZlciwgVmFsdWUqIHBvaW50ZXIsIEIzOjpUeXBlKTsKLSAgICB2b2lkIGNvbm5lY3RDb250cm9s
RW50cnkodW5zaWduZWQmIGluZGV4SW5CdWZmZXIsIFZhbHVlKiBwb2ludGVyLCBDb250cm9sRGF0
YSYsIFN0YWNrJiBleHByZXNzaW9uU3RhY2ssIENvbnRyb2xEYXRhJiBjdXJyZW50RGF0YSwgYm9v
bCBmaWxsTG9vcFBoaXMgPSBmYWxzZSk7CisgICAgdm9pZCBjb25uZWN0Q29udHJvbEF0RW50cnlw
b2ludCh1bnNpZ25lZCYgaW5kZXhJbkJ1ZmZlciwgVmFsdWUqIHBvaW50ZXIsIENvbnRyb2xEYXRh
JiwgU3RhY2smIGV4cHJlc3Npb25TdGFjaywgQ29udHJvbERhdGEmIGN1cnJlbnREYXRhLCBib29s
IGZpbGxMb29wUGhpcyA9IGZhbHNlKTsKICAgICBWYWx1ZSogZW1pdENhdGNoSW1wbChDYXRjaEtp
bmQsIENvbnRyb2xUeXBlJiwgdW5zaWduZWQgZXhjZXB0aW9uSW5kZXggPSAwKTsKICAgICBQYXRj
aHBvaW50RXhjZXB0aW9uSGFuZGxlIHByZXBhcmVQYXRjaHBvaW50Rm9yRXhjZXB0aW9ucyhCYXNp
Y0Jsb2NrKiwgUGF0Y2hwb2ludFZhbHVlKik7CiAKQEAgLTU3MCw3ICs1NjgsNyBAQCBwcml2YXRl
OgogICAgIHVpbnQzMl90IG1fbWF4TnVtSlNDYWxsQXJndW1lbnRzIHsgMCB9OwogICAgIHVuc2ln
bmVkIG1fbnVtSW1wb3J0RnVuY3Rpb25zOwogCi0gICAgQ2hlY2tlZDx1bnNpZ25lZD4gbV90cnlE
ZXB0aCB7IDAgfTsKKyAgICBDaGVja2VkPHVuc2lnbmVkPiBtX3RyeUNhdGNoRGVwdGggeyAwIH07
CiAgICAgQ2hlY2tlZDx1bnNpZ25lZD4gbV9jYWxsU2l0ZUluZGV4IHsgMCB9OwogICAgIENoZWNr
ZWQ8dW5zaWduZWQ+IG1fc3RhY2tTaXplIHsgMCB9OwogICAgIENoZWNrZWQ8dW5zaWduZWQ+IG1f
bWF4U3RhY2tTaXplIHsgMCB9OwpAQCAtMjQ1Miw5ICsyNDUwLDggQEAgVmFsdWUqIEIzSVJHZW5l
cmF0b3I6OmxvYWRGcm9tU2NyYXRjaEJ1ZmZlcih1bnNpZ25lZCYgaW5kZXhJbkJ1ZmZlciwgVmFs
dWUqIHBvaW4KICAgICByZXR1cm4gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1
ZT4obV9wcm9jLCBMb2FkLCB0eXBlLCBvcmlnaW4oKSwgcG9pbnRlciwgb2Zmc2V0KTsKIH0KIAot
dm9pZCBCM0lSR2VuZXJhdG9yOjpjb25uZWN0Q29udHJvbEVudHJ5KHVuc2lnbmVkJiBpbmRleElu
QnVmZmVyLCBWYWx1ZSogcG9pbnRlciwgQ29udHJvbERhdGEmIGRhdGEsIFN0YWNrJiBleHByZXNz
aW9uU3RhY2ssIENvbnRyb2xEYXRhJiBjdXJyZW50RGF0YSwgYm9vbCBmaWxsTG9vcFBoaXMpCit2
b2lkIEIzSVJHZW5lcmF0b3I6OmNvbm5lY3RDb250cm9sQXRFbnRyeXBvaW50KHVuc2lnbmVkJiBp
bmRleEluQnVmZmVyLCBWYWx1ZSogcG9pbnRlciwgQ29udHJvbERhdGEmIGRhdGEsIFN0YWNrJiBl
eHByZXNzaW9uU3RhY2ssIENvbnRyb2xEYXRhJiBjdXJyZW50RGF0YSwgYm9vbCBmaWxsTG9vcFBo
aXMpCiB7Ci0gICAgLy8gRm9yIGVhY2ggc3RhY2sgZW50cnkgZW5jbG9zZWQgYnkgdGhpcyBsb29w
IHdlIG5lZWQgdG8gcmVwbGFjZSB0aGUgdmFsdWUgd2l0aCBhIHBoaSBzbyB3ZSBjYW4gZmlsbCBp
dCBvbiBPU1IgZW50cnkuCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGV4cHJlc3Npb25T
dGFjay5zaXplKCk7IGkrKykgewogICAgICAgICBUeXBlZEV4cHJlc3Npb24gdmFsdWUgPSBleHBy
ZXNzaW9uU3RhY2tbaV07CiAgICAgICAgIGF1dG8qIGxvYWQgPSBsb2FkRnJvbVNjcmF0Y2hCdWZm
ZXIoaW5kZXhJbkJ1ZmZlciwgcG9pbnRlciwgdmFsdWUtPnR5cGUoKSk7CkBAIC0yNTAyLDEwICsy
NDk5LDEwIEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkTG9vcChCbG9ja1NpZ25hdHVyZSBzaWdu
YXR1cmUsIFN0YWNrJiBlbmNsb3NpbmdTdGFjaywgQ29uCiAgICAgICAgIGZvciAodW5zaWduZWQg
Y29udHJvbEluZGV4ID0gMDsgY29udHJvbEluZGV4IDwgbV9wYXJzZXItPmNvbnRyb2xTdGFjaygp
LnNpemUoKTsgKytjb250cm9sSW5kZXgpIHsKICAgICAgICAgICAgIGF1dG8mIGRhdGEgPSBtX3Bh
cnNlci0+Y29udHJvbFN0YWNrKClbY29udHJvbEluZGV4XS5jb250cm9sRGF0YTsKICAgICAgICAg
ICAgIGF1dG8mIGV4cHJlc3Npb25TdGFjayA9IG1fcGFyc2VyLT5jb250cm9sU3RhY2soKVtjb250
cm9sSW5kZXhdLmVuY2xvc2VkRXhwcmVzc2lvblN0YWNrOwotICAgICAgICAgICAgY29ubmVjdENv
bnRyb2xFbnRyeShpbmRleEluQnVmZmVyLCBwb2ludGVyLCBkYXRhLCBleHByZXNzaW9uU3RhY2ss
IGJsb2NrKTsKKyAgICAgICAgICAgIGNvbm5lY3RDb250cm9sQXRFbnRyeXBvaW50KGluZGV4SW5C
dWZmZXIsIHBvaW50ZXIsIGRhdGEsIGV4cHJlc3Npb25TdGFjaywgYmxvY2spOwogICAgICAgICB9
Ci0gICAgICAgIGNvbm5lY3RDb250cm9sRW50cnkoaW5kZXhJbkJ1ZmZlciwgcG9pbnRlciwgYmxv
Y2ssIGVuY2xvc2luZ1N0YWNrLCBibG9jayk7Ci0gICAgICAgIGNvbm5lY3RDb250cm9sRW50cnko
aW5kZXhJbkJ1ZmZlciwgcG9pbnRlciwgYmxvY2ssIG5ld1N0YWNrLCBibG9jaywgdHJ1ZSk7Cisg
ICAgICAgIGNvbm5lY3RDb250cm9sQXRFbnRyeXBvaW50KGluZGV4SW5CdWZmZXIsIHBvaW50ZXIs
IGJsb2NrLCBlbmNsb3NpbmdTdGFjaywgYmxvY2spOworICAgICAgICBjb25uZWN0Q29udHJvbEF0
RW50cnlwb2ludChpbmRleEluQnVmZmVyLCBwb2ludGVyLCBibG9jaywgbmV3U3RhY2ssIGJsb2Nr
LCB0cnVlKTsKIAogICAgICAgICBtX29zckVudHJ5U2NyYXRjaEJ1ZmZlclNpemUgPSBpbmRleElu
QnVmZmVyOwogICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKG1f
cHJvYywgSnVtcCwgb3JpZ2luKCksIGJvZHkpOwpAQCAtMjU2OCwxMSArMjU2NSwxMSBAQCBhdXRv
IEIzSVJHZW5lcmF0b3I6OmFkZEVsc2VUb1VucmVhY2hhYmxlKENvbnRyb2xEYXRhJiBkYXRhKSAt
PiBQYXJ0aWFsUmVzdWx0CiAKIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkVHJ5KEJsb2NrU2lnbmF0
dXJlIHNpZ25hdHVyZSwgU3RhY2smIGVuY2xvc2luZ1N0YWNrLCBDb250cm9sVHlwZSYgcmVzdWx0
LCBTdGFjayYgbmV3U3RhY2spIC0+IFBhcnRpYWxSZXN1bHQKIHsKLSAgICArK21fdHJ5RGVwdGg7
CisgICAgKyttX3RyeUNhdGNoRGVwdGg7CiAKICAgICBCYXNpY0Jsb2NrKiBjb250aW51YXRpb24g
PSBtX3Byb2MuYWRkQmxvY2soKTsKICAgICBzcGxpdFN0YWNrKHNpZ25hdHVyZSwgZW5jbG9zaW5n
U3RhY2ssIG5ld1N0YWNrKTsKLSAgICByZXN1bHQgPSBDb250cm9sRGF0YShtX3Byb2MsIG9yaWdp
bigpLCBzaWduYXR1cmUsIEJsb2NrVHlwZTo6VHJ5LCBtX3N0YWNrU2l6ZSwgY29udGludWF0aW9u
LCArK21fY2FsbFNpdGVJbmRleCwgbV90cnlEZXB0aCk7CisgICAgcmVzdWx0ID0gQ29udHJvbERh
dGEobV9wcm9jLCBvcmlnaW4oKSwgc2lnbmF0dXJlLCBCbG9ja1R5cGU6OlRyeSwgbV9zdGFja1Np
emUsIGNvbnRpbnVhdGlvbiwgKyttX2NhbGxTaXRlSW5kZXgsIG1fdHJ5Q2F0Y2hEZXB0aCk7CiAg
ICAgcmV0dXJuIHsgfTsKIH0KIApAQCAtMjU4NiwyMiArMjU4MywyMiBAQCBhdXRvIEIzSVJHZW5l
cmF0b3I6OmFkZENhdGNoKHVuc2lnbmVkIGV4Y2VwdGlvbkluZGV4LCBjb25zdCBTaWduYXR1cmUm
IHNpZ25hdHVyZQogUGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZSBCM0lSR2VuZXJhdG9yOjpwcmVw
YXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlvbnMoQmFzaWNCbG9jayogYmxvY2ssIFBhdGNocG9pbnRW
YWx1ZSogcGF0Y2gpCiB7CiAgICAgKyttX2NhbGxTaXRlSW5kZXg7Ci0gICAgaWYgKCFtX3RyeURl
cHRoKQorICAgIGlmICghbV90cnlDYXRjaERlcHRoKQogICAgICAgICByZXR1cm4geyB9OwogCi0g
ICAgVmVjdG9yPFZhbHVlKj4gc3RhY2ttYXA7CisgICAgVmVjdG9yPFZhbHVlKj4gbGl2ZVZhbHVl
czsKICAgICBPcmlnaW4gb3JpZ2luID0gdGhpcy0+b3JpZ2luKCk7CiAgICAgZm9yIChWYXJpYWJs
ZSogbG9jYWwgOiBtX2xvY2FscykgewogICAgICAgICBWYWx1ZSogcmVzdWx0ID0gYmxvY2stPmFw
cGVuZE5ldzxWYXJpYWJsZVZhbHVlPihtX3Byb2MsIEIzOjpHZXQsIG9yaWdpbiwgbG9jYWwpOwot
ICAgICAgICBzdGFja21hcC5hcHBlbmQocmVzdWx0KTsKKyAgICAgICAgbGl2ZVZhbHVlcy5hcHBl
bmQocmVzdWx0KTsKICAgICB9CiAgICAgZm9yICh1bnNpZ25lZCBjb250cm9sSW5kZXggPSAwOyBj
b250cm9sSW5kZXggPCBtX3BhcnNlci0+Y29udHJvbFN0YWNrKCkuc2l6ZSgpOyArK2NvbnRyb2xJ
bmRleCkgewogICAgICAgICBDb250cm9sRGF0YSYgZGF0YSA9IG1fcGFyc2VyLT5jb250cm9sU3Rh
Y2soKVtjb250cm9sSW5kZXhdLmNvbnRyb2xEYXRhOwogICAgICAgICBTdGFjayYgZXhwcmVzc2lv
blN0YWNrID0gbV9wYXJzZXItPmNvbnRyb2xTdGFjaygpW2NvbnRyb2xJbmRleF0uZW5jbG9zZWRF
eHByZXNzaW9uU3RhY2s7CiAgICAgICAgIGZvciAoVmFyaWFibGUqIHZhbHVlIDogZXhwcmVzc2lv
blN0YWNrKQotICAgICAgICAgICAgc3RhY2ttYXAuYXBwZW5kKGdldChibG9jaywgdmFsdWUpKTsK
KyAgICAgICAgICAgIGxpdmVWYWx1ZXMuYXBwZW5kKGdldChibG9jaywgdmFsdWUpKTsKICAgICAg
ICAgaWYgKENvbnRyb2xUeXBlOjppc0FueUNhdGNoKGRhdGEpKQotICAgICAgICAgICAgc3RhY2tt
YXAuYXBwZW5kKGdldChibG9jaywgZGF0YS5leGNlcHRpb24oKSkpOworICAgICAgICAgICAgbGl2
ZVZhbHVlcy5hcHBlbmQoZ2V0KGJsb2NrLCBkYXRhLmV4Y2VwdGlvbigpKSk7CiAgICAgfQogCiAg
ICAgdW5zaWduZWQgb2Zmc2V0ID0gcGF0Y2gtPm51bUNoaWxkcmVuKCk7CkBAIC0yNjA5LDcgKzI2
MDYsNyBAQCBQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlIEIzSVJHZW5lcmF0b3I6OnByZXBhcmVQ
YXRjaHBvaW50Rm9yRXhjZXB0aW9ucyhCYXNpY0JsbwogICAgICAgICBvZmZzZXQrKzsKIAogICAg
IHBhdGNoLT5lZmZlY3RzLmV4aXRzU2lkZXdheXMgPSB0cnVlOwotICAgIHBhdGNoLT5hcHBlbmRW
ZWN0b3JXaXRoUmVwKHN0YWNrbWFwLCBWYWx1ZVJlcDo6TGF0ZUNvbGRBbnkpOworICAgIHBhdGNo
LT5hcHBlbmRWZWN0b3JXaXRoUmVwKGxpdmVWYWx1ZXMsIFZhbHVlUmVwOjpMYXRlQ29sZEFueSk7
CiAKICAgICByZXR1cm4gUGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZSB7IG1fY2FsbFNpdGVJbmRl
eCwgb2Zmc2V0IH07CiB9CkBAIC0yNjU0LDcgKzI2NTEsNyBAQCBWYWx1ZSogQjNJUkdlbmVyYXRv
cjo6ZW1pdENhdGNoSW1wbChDYXRjaEtpbmQga2luZCwgQ29udHJvbFR5cGUmIGRhdGEsIHVuc2ln
bmVkCiAgICAgfQogCiAgICAgSGFuZGxlclR5cGUgaGFuZGxlclR5cGUgPSBraW5kID09IENhdGNo
S2luZDo6Q2F0Y2ggPyBIYW5kbGVyVHlwZTo6Q2F0Y2ggOiBIYW5kbGVyVHlwZTo6Q2F0Y2hBbGw7
Ci0gICAgbV9leGNlcHRpb25IYW5kbGVycy5hcHBlbmQoeyBoYW5kbGVyVHlwZSwgZGF0YS50cnlT
dGFydCgpLCBkYXRhLnRyeUVuZCgpLCAwLCBtX3RyeURlcHRoLCBleGNlcHRpb25JbmRleCB9KTsK
KyAgICBtX2V4Y2VwdGlvbkhhbmRsZXJzLmFwcGVuZCh7IGhhbmRsZXJUeXBlLCBkYXRhLnRyeVN0
YXJ0KCksIGRhdGEudHJ5RW5kKCksIDAsIG1fdHJ5Q2F0Y2hEZXB0aCwgZXhjZXB0aW9uSW5kZXgg
fSk7CiAKICAgICByZXN0b3JlV2ViQXNzZW1ibHlHbG9iYWxTdGF0ZShSZXN0b3JlQ2FjaGVkU3Rh
Y2tMaW1pdDo6WWVzLCBtX2luZm8ubWVtb3J5LCBpbnN0YW5jZVZhbHVlKCksIG1fcHJvYywgbV9j
dXJyZW50QmxvY2ssIGZhbHNlKTsKIApAQCAtMjY2OCw3ICsyNjY1LDcgQEAgVmFsdWUqIEIzSVJH
ZW5lcmF0b3I6OmVtaXRDYXRjaEltcGwoQ2F0Y2hLaW5kIGtpbmQsIENvbnRyb2xUeXBlJiBkYXRh
LCB1bnNpZ25lZAogICAgIGZvciAodW5zaWduZWQgY29udHJvbEluZGV4ID0gMDsgY29udHJvbElu
ZGV4IDwgbV9wYXJzZXItPmNvbnRyb2xTdGFjaygpLnNpemUoKTsgKytjb250cm9sSW5kZXgpIHsK
ICAgICAgICAgYXV0byYgY29udHJvbERhdGEgPSBtX3BhcnNlci0+Y29udHJvbFN0YWNrKClbY29u
dHJvbEluZGV4XS5jb250cm9sRGF0YTsKICAgICAgICAgYXV0byYgZXhwcmVzc2lvblN0YWNrID0g
bV9wYXJzZXItPmNvbnRyb2xTdGFjaygpW2NvbnRyb2xJbmRleF0uZW5jbG9zZWRFeHByZXNzaW9u
U3RhY2s7Ci0gICAgICAgIGNvbm5lY3RDb250cm9sRW50cnkoaW5kZXhJbkJ1ZmZlciwgcG9pbnRl
ciwgY29udHJvbERhdGEsIGV4cHJlc3Npb25TdGFjaywgZGF0YSk7CisgICAgICAgIGNvbm5lY3RD
b250cm9sQXRFbnRyeXBvaW50KGluZGV4SW5CdWZmZXIsIHBvaW50ZXIsIGNvbnRyb2xEYXRhLCBl
eHByZXNzaW9uU3RhY2ssIGRhdGEpOwogICAgIH0KIAogICAgIFBhdGNocG9pbnRWYWx1ZSogcmVz
dWx0ID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+KG1fcHJvYywg
bV9wcm9jLmFkZFR1cGxlKHsgcG9pbnRlclR5cGUoKSwgcG9pbnRlclR5cGUoKSB9KSwgb3JpZ2lu
KCkpOwpAQCAtMjcwNiw3ICsyNzAzLDcgQEAgYXV0byBCM0lSR2VuZXJhdG9yOjphZGREZWxlZ2F0
ZVRvVW5yZWFjaGFibGUoQ29udHJvbFR5cGUmIHRhcmdldCwgQ29udHJvbFR5cGUmIGQKICAgICBp
ZiAoQ29udHJvbFR5cGU6OmlzVHJ5KHRhcmdldCkpCiAgICAgICAgIHRhcmdldERlcHRoID0gdGFy
Z2V0LnRyeURlcHRoKCk7CiAKLSAgICBtX2V4Y2VwdGlvbkhhbmRsZXJzLmFwcGVuZCh7IEhhbmRs
ZXJUeXBlOjpEZWxlZ2F0ZSwgZGF0YS50cnlTdGFydCgpLCArK21fY2FsbFNpdGVJbmRleCwgMCwg
bV90cnlEZXB0aCwgdGFyZ2V0RGVwdGggfSk7CisgICAgbV9leGNlcHRpb25IYW5kbGVycy5hcHBl
bmQoeyBIYW5kbGVyVHlwZTo6RGVsZWdhdGUsIGRhdGEudHJ5U3RhcnQoKSwgKyttX2NhbGxTaXRl
SW5kZXgsIDAsIG1fdHJ5Q2F0Y2hEZXB0aCwgdGFyZ2V0RGVwdGggfSk7CiAgICAgcmV0dXJuIHsg
fTsKIH0KIApAQCAtMjcxOCwxNiArMjcxNSwxMSBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZFRo
cm93KHVuc2lnbmVkIGV4Y2VwdGlvbkluZGV4LCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcgog
ICAgIHBhdGNoLT5hcHBlbmQoZnJhbWVQb2ludGVyKCksIFZhbHVlUmVwOjpyZWcoR1BSSW5mbzo6
YXJndW1lbnRHUFIxKSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGFyZ3Muc2l6ZSgp
OyArK2kpCiAgICAgICAgIHBhdGNoLT5hcHBlbmQoZ2V0KGFyZ3NbaV0pLCBWYWx1ZVJlcDo6c3Rh
Y2tBcmd1bWVudChpICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSkpOwotICAgIFJlZ2lzdGVyU2V0
IGNsb2JiZXIgPSBSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCk7Ci0gICAgY2xv
YmJlci5hZGQoR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKLSAgICBjbG9iYmVyLmFkZChHUFJJbmZv
Ojphcmd1bWVudEdQUjMpOwotICAgIHBhdGNoLT5jbG9iYmVyKGNsb2JiZXIpOwotICAgIHBhdGNo
LT5jbG9iYmVyTGF0ZShSZWdpc3RlclNldDo6dm9sYXRpbGVSZWdpc3RlcnNGb3JKU0NhbGwoKSk7
Ci0gICAgcGF0Y2gtPm51bUdQU2NyYXRjaFJlZ2lzdGVycyA9IDE7CisgICAgcGF0Y2gtPmNsb2Ji
ZXIoUmVnaXN0ZXJTZXQ6OnZvbGF0aWxlUmVnaXN0ZXJzRm9ySlNDYWxsKCkpOwogICAgIFBhdGNo
cG9pbnRFeGNlcHRpb25IYW5kbGUgaGFuZGxlID0gcHJlcGFyZVBhdGNocG9pbnRGb3JFeGNlcHRp
b25zKG1fY3VycmVudEJsb2NrLCBwYXRjaCk7CiAgICAgcGF0Y2gtPnNldEdlbmVyYXRvcihbdGhp
cywgZXhjZXB0aW9uSW5kZXgsIGhhbmRsZV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6
U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKICAgICAgICAgQWxsb3dNYWNyb1Nj
cmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwotICAgICAgICBHUFJSZWcgc2Ny
YXRjaCA9IHBhcmFtcy5ncFNjcmF0Y2goMCk7CisgICAgICAgIEdQUlJlZyBzY3JhdGNoID0gR1BS
SW5mbzo6bm9uUHJlc2VydmVkTm9uQXJndW1lbnRHUFIwOwogICAgICAgICBoYW5kbGUuZ2VuZXJh
dGUoaml0LCBwYXJhbXMsIHRoaXMpOwogCiAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVy
czo6QWRkcmVzcyhHUFJJbmZvOjphcmd1bWVudEdQUjAsIEluc3RhbmNlOjpvZmZzZXRPZk93bmVy
KCkpLCBzY3JhdGNoKTsKQEAgLTI3NjAsMjEgKzI3NTIsMTYgQEAgYXV0byBCM0lSR2VuZXJhdG9y
OjphZGRUaHJvdyh1bnNpZ25lZCBleGNlcHRpb25JbmRleCwgVmVjdG9yPEV4cHJlc3Npb25UeXBl
PiYgYXIKIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkUmV0aHJvdyh1bnNpZ25lZCwgQ29udHJvbFR5
cGUmIGRhdGEpIC0+IFBhcnRpYWxSZXN1bHQKIHsKICAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNo
ID0gbV9wcm9jLmFkZDxQYXRjaHBvaW50VmFsdWU+KEIzOjpWb2lkLCBvcmlnaW4oKSk7Ci0gICAg
cGF0Y2gtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKLSAg
ICBSZWdpc3RlclNldCBjbG9iYmVyTGF0ZTsKLSAgICBjbG9iYmVyTGF0ZS5hZGQoR1BSSW5mbzo6
YXJndW1lbnRHUFIwKTsKLSAgICBjbG9iYmVyTGF0ZS5hZGQoR1BSSW5mbzo6YXJndW1lbnRHUFIx
KTsKLSAgICBjbG9iYmVyTGF0ZS5hZGQoR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKKyAgICBwYXRj
aC0+Y2xvYmJlcihSZWdpc3RlclNldDo6dm9sYXRpbGVSZWdpc3RlcnNGb3JKU0NhbGwoKSk7CiAg
ICAgcGF0Y2gtPmVmZmVjdHMudGVybWluYWwgPSB0cnVlOwogICAgIHBhdGNoLT5hcHBlbmQoaW5z
dGFuY2VWYWx1ZSgpLCBWYWx1ZVJlcDo6cmVnKEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOwogICAg
IHBhdGNoLT5hcHBlbmQoZnJhbWVQb2ludGVyKCksIFZhbHVlUmVwOjpyZWcoR1BSSW5mbzo6YXJn
dW1lbnRHUFIxKSk7CiAgICAgcGF0Y2gtPmFwcGVuZChnZXQoZGF0YS5leGNlcHRpb24oKSksIFZh
bHVlUmVwOjpyZWcoR1BSSW5mbzo6YXJndW1lbnRHUFIyKSk7Ci0gICAgcGF0Y2gtPm51bUdQU2Ny
YXRjaFJlZ2lzdGVycyA9IDE7CiAgICAgUGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZSBoYW5kbGUg
PSBwcmVwYXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlvbnMobV9jdXJyZW50QmxvY2ssIHBhdGNoKTsK
ICAgICBwYXRjaC0+c2V0R2VuZXJhdG9yKFt0aGlzLCBoYW5kbGVdIChDQ2FsbEhlbHBlcnMmIGpp
dCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CiAgICAgICAg
IEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKIAotICAg
ICAgICBHUFJSZWcgc2NyYXRjaCA9IHBhcmFtcy5ncFNjcmF0Y2goMCk7CisgICAgICAgIEdQUlJl
ZyBzY3JhdGNoID0gR1BSSW5mbzo6bm9uUHJlc2VydmVkTm9uQXJndW1lbnRHUFIwOwogICAgICAg
ICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6YXJndW1lbnRHUFIw
LCBJbnN0YW5jZTo6b2Zmc2V0T2ZPd25lcigpKSwgc2NyYXRjaCk7CiAgICAgICAgIHsKICAgICAg
ICAgICAgIGF1dG8gcHJlY2lzZUFsbG9jYXRpb25DYXNlID0gaml0LmJyYW5jaFRlc3RQdHIoQ0Nh
bGxIZWxwZXJzOjpOb25aZXJvLCBzY3JhdGNoLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihQ
cmVjaXNlQWxsb2NhdGlvbjo6aGFsZkFsaWdubWVudCkpOwpAQCAtMjg5MCw3ICsyODc3LDcgQEAg
YXV0byBCM0lSR2VuZXJhdG9yOjphZGRFbmRUb1VucmVhY2hhYmxlKENvbnRyb2xFbnRyeSYgZW50
cnksIGNvbnN0IFN0YWNrJiBleHByZXMKICAgICAgICAgZGF0YS5zcGVjaWFsLT5hcHBlbmROZXdD
b250cm9sVmFsdWUobV9wcm9jLCBKdW1wLCBvcmlnaW4oKSwgbV9jdXJyZW50QmxvY2spOwogICAg
ICAgICBtX2N1cnJlbnRCbG9jay0+YWRkUHJlZGVjZXNzb3IoZGF0YS5zcGVjaWFsKTsKICAgICB9
IGVsc2UgaWYgKGRhdGEuYmxvY2tUeXBlKCkgPT0gQmxvY2tUeXBlOjpUcnkgfHwgZGF0YS5ibG9j
a1R5cGUoKSA9PSBCbG9ja1R5cGU6OkNhdGNoKQotICAgICAgICAtLW1fdHJ5RGVwdGg7CisgICAg
ICAgIC0tbV90cnlDYXRjaERlcHRoOwogCiAgICAgaWYgKGRhdGEuYmxvY2tUeXBlKCkgIT0gQmxv
Y2tUeXBlOjpMb29wKSB7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkYXRhLnNp
Z25hdHVyZSgpLT5yZXR1cm5Db3VudCgpOyArK2kpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21DYWxsZWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21DYWxsZWUuaAppbmRleCA3ZDY5ZDYyNmQ4YzNmMGQ5MzdlMWQwYjUwMjUwM2M5NGI1YmYx
NTQ1Li43M2NhZTk0NTYzMzlkMzAzM2JhOTcyYjNhOWQ3Mzg5NWUwZDcyNWVhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQ2FsbGVlLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbUNhbGxlZS5oCkBAIC03NCw3ICs3NCw3IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwogCi0gICAgdmlydHVhbCBGdW5j
dGlvbkNvZGVCbG9jayogZnVuY3Rpb25Db2RlQmxvY2soKSBjb25zdCB7IHJldHVybiAwOyB9Cisg
ICAgdmlydHVhbCBGdW5jdGlvbkNvZGVCbG9jayogbGxpbnRGdW5jdGlvbkNvZGVCbG9jaygpIGNv
bnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KIAogcHJvdGVjdGVkOgogICAgIEpTX0VYUE9SVF9QUklW
QVRFIENhbGxlZShXYXNtOjpDb21waWxhdGlvbk1vZGUpOwpAQCAtMjUxLDcgKzI1MSw3IEBAIHB1
YmxpYzoKICAgICB9CiAKICAgICBMTEludFRpZXJVcENvdW50ZXImIHRpZXJVcENvdW50ZXIoKSB7
IHJldHVybiBtX2NvZGVCbG9jay0+dGllclVwQ291bnRlcigpOyB9Ci0gICAgRnVuY3Rpb25Db2Rl
QmxvY2sqIGZ1bmN0aW9uQ29kZUJsb2NrKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9jb2RlQmxv
Y2suZ2V0KCk7IH0KKyAgICBGdW5jdGlvbkNvZGVCbG9jayogbGxpbnRGdW5jdGlvbkNvZGVCbG9j
aygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fY29kZUJsb2NrLmdldCgpOyB9CiAjZW5kaWYKIAog
cHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21MTElu
dEdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTExJbnRHZW5l
cmF0b3IuY3BwCmluZGV4IDY3NjllZmQ1ZjkyM2VmMTIwZjdhYWVhNmYwYjA1YTNmMzU1OTY0NTcu
LjRjOWE5ZDExZTQxODJhNTQ3MjVmMzVlMWU3ZTM2NzliZDIwMDVmYmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21MTEludEdlbmVyYXRvci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUxMSW50R2VuZXJhdG9yLmNwcApAQCAtMTk1LDkg
KzE5NSw2IEBAIHB1YmxpYzoKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxGdW5jdGlvbkNvZGVCbG9j
az4gZmluYWxpemUoKTsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wY29kZT4KLSAgICB2b2lk
IHJlcGF0Y2goY29uc3QgQ2F0Y2hSZXdyaXRlSW5mbyYpOwotCiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgRXhwcmVzc2lvbkxpc3RBLCB0eXBlbmFtZSBFeHByZXNzaW9uTGlzdEI+CiAgICAgdm9pZCB1
bmlmeVZhbHVlc1dpdGhCbG9jayhjb25zdCBFeHByZXNzaW9uTGlzdEEmIGRlc3RpbmF0aW9ucywg
Y29uc3QgRXhwcmVzc2lvbkxpc3RCJiB2YWx1ZXMpCiAgICAgewpAQCAtMjA2LDcgKzIwMyw3IEBA
IHB1YmxpYzoKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBkZXN0aW5hdGlvbnMuc2l6
ZSgpOyArK2kpIHsKICAgICAgICAgICAgIGF1dG8mIHNyYyA9IHZhbHVlc1tvZmZzZXQgKyBpXTsK
ICAgICAgICAgICAgIGF1dG8mIGRzdCA9IGRlc3RpbmF0aW9uc1tpXTsKLSAgICAgICAgICAgIGlm
ICgoVmlydHVhbFJlZ2lzdGVyKXNyYyAhPSAoVmlydHVhbFJlZ2lzdGVyKWRzdCkKKyAgICAgICAg
ICAgIGlmIChzdGF0aWNfY2FzdDxWaXJ0dWFsUmVnaXN0ZXI+KHNyYykgIT0gc3RhdGljX2Nhc3Q8
VmlydHVhbFJlZ2lzdGVyPihkc3QpKQogICAgICAgICAgICAgICAgIFdhc21Nb3Y6OmVtaXQodGhp
cywgZHN0LCBzcmMpOwogICAgICAgICB9CiAgICAgfQpAQCAtNTAwLDcgKzQ5Nyw2IEBAIHByaXZh
dGU6CiAgICAgQ2hlY2tlZDx1bnNpZ25lZD4gbV9zdGFja1NpemUgeyAwIH07CiAgICAgQ2hlY2tl
ZDx1bnNpZ25lZD4gbV9tYXhTdGFja1NpemUgeyAwIH07CiAgICAgQ2hlY2tlZDx1bnNpZ25lZD4g
bV90cnlEZXB0aCB7IDAgfTsKLSAgICBDaGVja2VkPHVuc2lnbmVkPiBtX21heFRyeURlcHRoIHsg
MCB9OwogICAgIGJvb2wgbV91c2VzRXhjZXB0aW9ucyB7IGZhbHNlIH07CiB9OwogCkBAIC01NDcs
MTggKzU0Myw2IEBAIExMSW50R2VuZXJhdG9yOjpMTEludEdlbmVyYXRvcihNb2R1bGVJbmZvcm1h
dGlvbiYgaW5mbywgdW5zaWduZWQgZnVuY3Rpb25JbmRleCwKICAgICBXYXNtRW50ZXI6OmVtaXQo
dGhpcyk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIE9wY29kZT4KLXZvaWQgTExJbnRHZW5lcmF0
b3I6OnJlcGF0Y2goY29uc3QgQ2F0Y2hSZXdyaXRlSW5mbyYgaW5mbykKLXsKLSAgICBhdXRvIHJl
ZiA9IG1fd3JpdGVyLnJlZihpbmZvLm1faW5zdHJ1Y3Rpb25PZmZzZXQpOwotICAgIE9wY29kZSog
aW5zdHJ1Y3Rpb24gPSByZWYtPmNhc3Q8T3Bjb2RlLCBXYXNtT3Bjb2RlVHJhaXRzPigpOwotICAg
IFZpcnR1YWxSZWdpc3RlciBleGNlcHRpb25SZWdpc3RlciA9IHZpcnR1YWxSZWdpc3RlckZvckxv
Y2FsKG1fbWF4U3RhY2tTaXplICsgaW5mby5tX3RyeURlcHRoIC0gMSk7Ci0gICAgaW5zdHJ1Y3Rp
b24tPnNldEV4Y2VwdGlvbihleGNlcHRpb25SZWdpc3RlciwgW10oKSB7Ci0gICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiBWaXJ0dWFsUmVnaXN0ZXIo
KTsKLSAgICB9KTsKLX0KLQogc3RkOjp1bmlxdWVfcHRyPEZ1bmN0aW9uQ29kZUJsb2NrPiBMTElu
dEdlbmVyYXRvcjo6ZmluYWxpemUoKQogewogICAgIFJFTEVBU0VfQVNTRVJUKG1fY29kZUJsb2Nr
KTsKQEAgLTEwNjEsOCArMTA0NSw2IEBAIGF1dG8gTExJbnRHZW5lcmF0b3I6OmFkZFRyeShCbG9j
a1NpZ25hdHVyZSBzaWduYXR1cmUsIFN0YWNrJiBlbmNsb3NpbmdTdGFjaywgQ29uCiB7CiAgICAg
bV91c2VzRXhjZXB0aW9ucyA9IHRydWU7CiAgICAgKyttX3RyeURlcHRoOwotICAgIGlmIChtX21h
eFRyeURlcHRoIDwgbV90cnlEZXB0aCkKLSAgICAgICAgbV9tYXhUcnlEZXB0aCA9IG1fdHJ5RGVw
dGg7CiAKICAgICBzcGxpdFN0YWNrKHNpZ25hdHVyZSwgZW5jbG9zaW5nU3RhY2ssIG5ld1N0YWNr
KTsKICAgICBSZWY8TGFiZWw+IHRyeUxhYmVsID0gbmV3RW1pdHRlZExhYmVsKCk7CkBAIC0xMTkx
LDYgKzExNzMsMTAgQEAgYXV0byBMTEludEdlbmVyYXRvcjo6YWRkRGVsZWdhdGVUb1VucmVhY2hh
YmxlKENvbnRyb2xUeXBlJiB0YXJnZXQsIENvbnRyb2xUeXBlJgogYXV0byBMTEludEdlbmVyYXRv
cjo6YWRkVGhyb3codW5zaWduZWQgZXhjZXB0aW9uSW5kZXgsIFZlY3RvcjxFeHByZXNzaW9uVHlw
ZT4mIGFyZ3MsIFN0YWNrJikgLT4gUGFydGlhbFJlc3VsdAogewogICAgIG1fdXNlc0V4Y2VwdGlv
bnMgPSB0cnVlOworICAgIC8vIFdlIGhhdmUgdG8gbWF0ZXJpYWxpemUgdGhlIGFyZ3VtZW50cyBo
ZXJlIHNpbmNlIGl0IG1pZ2h0IGluY2x1ZGUgY29uc3RhbnRzIG9yCisgICAgLy8gZGVsYXllZCBt
b3ZlcywgYnV0IHRoZSB3YXNtX3Rocm93IG9wY29kZSBleHBlY3RzIGFsbCB0aGUgYXJndW1lbnRz
IHRvIGJlIGNvbnRpZ3VvdXMKKyAgICAvLyBpbiB0aGUgc3RhY2suIFRoZSByZWFzb24gd2UgZG9u
J3QgY2FsbCBtYXRlcmlhbGl6ZUNvbnN0YW50c0FuZExvY2FscyBoZXJlIGlzIHRoYXQKKyAgICAv
LyBpdCBleHBlY3RzIGEgc3RhY2ssIG5vdCBhIHZlY3RvciBvZiBFeHByZXNzaW9uVHlwZSBhcmd1
bWVudHMuCiAgICAgd2Fsa0V4cHJlc3Npb25TdGFjayhhcmdzLCBbJl0oVmlydHVhbFJlZ2lzdGVy
JiBhcmcsIFZpcnR1YWxSZWdpc3RlciBzbG90KSB7CiAgICAgICAgIGlmIChhcmcgPT0gc2xvdCkK
ICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21PcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21P
cGVyYXRpb25zLmNwcAppbmRleCBkYWJhZWU3ZWI4MmQ3MWJkZGIxMjk3YzAxYjNlM2ZlZGE1M2Q3
NzhlLi43MzViMzAzNWUxMTBiMzgyMTRlNWZjY2UyMjA5YzA1YWZkYzFlYzZmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT3BlcmF0aW9ucy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9wZXJhdGlvbnMuY3BwCkBAIC05MTAsNyArOTEw
LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbldhc21EYXRhRHJvcCwgdm9p
ZCwgKEluc3RhbmNlKiBpbnN0YW5jZSwgdW5zaWcKICAgICBpbnN0YW5jZS0+ZGF0YURyb3AoZGF0
YVNlZ21lbnRJbmRleCk7CiB9CiAKLUpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25X
YXNtVGhyb3csIHZvaWQqLCAoSW5zdGFuY2UqIGluc3RhbmNlLCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSwgdW5zaWduZWQgZXhjZXB0aW9uSW5kZXgsIEVuY29kZWRKU1ZhbHVlKiBhcmd1bWVudHMpKQor
SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbldhc21UaHJvdywgdm9pZCosIChJbnN0
YW5jZSogaW5zdGFuY2UsIENhbGxGcmFtZSogY2FsbEZyYW1lLCB1bnNpZ25lZCBleGNlcHRpb25J
bmRleCwgdWludDY0X3QqIGFyZ3VtZW50cykpCiB7CiAgICAgaW5zdGFuY2UtPnN0b3JlVG9wQ2Fs
bEZyYW1lKGNhbGxGcmFtZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21PcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT3Bl
cmF0aW9ucy5oCmluZGV4IDVlYzdhNTk0N2NjNzM4YzNiMmI5YmIyNWQ3ZTVhNjA4ZjFiMjZlZDku
LmNmN2MwZDVmZWY0ZGZkMzVjN2NjYTMzNDc5M2ViMjQ0ZWNiYWRkMTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbU9wZXJhdGlvbnMuaApAQCAtODgsNyArODgsNyBAQCBKU0Nf
REVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk1lbW9yeUF0b21pY05vdGlmeSwgaW50MzJf
dCwgKEluc3RhbmNlKiwgdW5zaQogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25X
YXNtTWVtb3J5SW5pdCwgc2l6ZV90LCAoSW5zdGFuY2UqLCB1bnNpZ25lZCBkYXRhU2VnbWVudElu
ZGV4LCB1aW50MzJfdCBkc3RBZGRyZXNzLCB1aW50MzJfdCBzcmNBZGRyZXNzLCB1aW50MzJfdCBs
ZW5ndGgpKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uV2FzbURhdGFEcm9w
LCB2b2lkLCAoSW5zdGFuY2UqLCB1bnNpZ25lZCBkYXRhU2VnbWVudEluZGV4KSk7CiAKLUpTQ19E
RUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uV2FzbVRocm93LCB2b2lkKiwgKEluc3RhbmNl
KiwgQ2FsbEZyYW1lKiwgdW5zaWduZWQgZXhjZXB0aW9uSW5kZXgsIEVuY29kZWRKU1ZhbHVlKikp
OworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25XYXNtVGhyb3csIHZvaWQqLCAo
SW5zdGFuY2UqLCBDYWxsRnJhbWUqLCB1bnNpZ25lZCBleGNlcHRpb25JbmRleCwgdWludDY0X3Qq
KSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbldhc21SZXRocm93LCB2b2lk
KiwgKEluc3RhbmNlKiwgQ2FsbEZyYW1lKiwgRW5jb2RlZEpTVmFsdWUgdGhyb3duVmFsdWUpKTsK
IAogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25XYXNtVG9KU0V4Y2VwdGlvbiwg
dm9pZCosIChDYWxsRnJhbWUqLCBXYXNtOjpFeGNlcHRpb25UeXBlLCBJbnN0YW5jZSopKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>