<?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>234309</bug_id>
          
          <creation_ts>2021-12-14 13:33:14 -0800</creation_ts>
          <short_desc>[WebAuthn] Allow same-site, cross-origin iframe get()</short_desc>
          <delta_ts>2021-12-15 16:54:19 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</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>
          
          <blocked>234180</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="pascoe@apple.com">pascoe</reporter>
          <assigned_to name="pascoe@apple.com">pascoe</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1824098</commentid>
    <comment_count>0</comment_count>
    <who name="pascoe@apple.com">pascoe</who>
    <bug_when>2021-12-14 13:33:14 -0800</bug_when>
    <thetext>WebAuthn Level 2 specifies a feature policy: https://w3c.github.io/webauthn/#sctn-iframe-guidance, functionality to get credentials from a cross-origin iframe should be enabled if the iframe has the allow=&quot;publickey-credentials-get&quot; attribute/value pair.

This patch implements this functionality only for same-site, cross-origin i-frames.

This bug is to reland: https://bugs.webkit.org/show_bug.cgi?id=234180</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824099</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-12-14 13:35:05 -0800</bug_when>
    <thetext>&lt;rdar://problem/86486313&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824100</commentid>
    <comment_count>2</comment_count>
      <attachid>447153</attachid>
    <who name="pascoe@apple.com">pascoe</who>
    <bug_when>2021-12-14 13:37:28 -0800</bug_when>
    <thetext>Created attachment 447153
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824176</commentid>
    <comment_count>3</comment_count>
      <attachid>447177</attachid>
    <who name="pascoe@apple.com">pascoe</who>
    <bug_when>2021-12-14 16:40:39 -0800</bug_when>
    <thetext>Created attachment 447177
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824436</commentid>
    <comment_count>4</comment_count>
      <attachid>447260</attachid>
    <who name="pascoe@apple.com">pascoe</who>
    <bug_when>2021-12-15 11:05:52 -0800</bug_when>
    <thetext>Created attachment 447260
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824503</commentid>
    <comment_count>5</comment_count>
      <attachid>447260</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2021-12-15 12:52:24 -0800</bug_when>
    <thetext>Comment on attachment 447260
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824592</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-12-15 16:54:14 -0800</bug_when>
    <thetext>Committed r287116 (245301@main): &lt;https://commits.webkit.org/245301@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 447260.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447153</attachid>
            <date>2021-12-14 13:37:28 -0800</date>
            <delta_ts>2021-12-14 16:40:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234309-20211214133727.patch</filename>
            <type>text/plain</type>
            <size>44402</size>
            <attacher name="pascoe@apple.com">pascoe</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3MDQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmQwNTU1M2VjMzgyYzI5
YTgzMDFjNzAwMzViMGU0OGMwYzNlM2VhZi4uN2IzMjQyMjVhMjJjMmI3OTE5NWJmNmRmMGQ0NTlh
YTlmODA2ZGQzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDIxLTEyLTE0ICBKIFBh
c2NvZSAgPGpfcGFzY29lQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0aG5dIEFsbG93IHNh
bWUtc2l0ZSwgY3Jvc3Mtb3JpZ2luIGlmcmFtZSBnZXQoKQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0MzA5CisgICAgICAgIHJkYXI6Ly9wcm9ibGVt
Lzg2NDg2MzEzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhlIFdlYiBBdXRoZW50aWNhdGlvbiBsZXZlbCAyIHNwZWNpZmllcyBhIGZlYXR1cmUgcG9s
aWN5IHRvIGFsbG93IGdldCBjYWxscyBpbgorICAgICAgICBjcm9zcy1vcmlnaW4gaS1mcmFtZXMu
IFRoaXMgcGF0Y2ggaW1wbGVtZW50cyB0aGlzIGZlYXR1cmUgcG9saWN5IHBhcnRpYWxseS4gT25s
eQorICAgICAgICBzYW1lLXNpdGUsIGNyb3NzLW9yaWdpbiBpLWZyYW1lcyBhcmUgc3VwcG9ydGVk
IGluc3RlYWQuIFRoaXMgaXMgZm9yIHRyYWNraW5nIHByZXZlbnRpb24KKyAgICAgICAgcHVycG9z
ZXMuIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby93ZWJhdXRobi8jc2N0bi1pZnJhbWUtZ3VpZGFuY2UK
KworICAgICAgICBUaGlzIHBhdGNoIGFsc28gc3RhcnRzIHBhc3NpbmcgQ2xpZW50RGF0YUpTT04g
aGFzaGVzIHRvIEFTQyB0byBhdm9pZCB0aGUgc2l0dWF0aW9uCisgICAgICAgIHdoZXJlIFdlYktp
dCBpbmNsdWRlcyBjcm9zc09yaWdpbiBvciBvdGhlciBmaWVsZHMgaW4gQ2xpZW50RGF0YUpTT04g
dGhhdCBBU0MgaXMKKyAgICAgICAgdW5hd2FyZSBvZiB3aGVuIGdlbmVyYXRpbmcgQ2xpZW50RGF0
YUpTT04uCisKKyAgICAgICAgQWRkZWQgbGF5b3V0IHRlc3QgY2FzZXMgZm9yIHNhbWUtc2l0ZSwg
Y3Jvc3Mtb3JpZ2luIGdldCBjYWxscy4KKworICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0
b3JDb29yZGluYXRvcjo6Y3JlYXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OmRvZXNIYXZl
U2FtZVNpdGVBc0FuY2VzdG9ycyk6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdG9yQ29v
cmRpbmF0b3I6OmRpc2NvdmVyRnJvbUV4dGVybmFsU291cmNlIGNvbnN0KToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmF1dGhuL1dlYkF1dGhlbnRpY2F0aW9uVXRpbHMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6YnVpbGRDbGllbnREYXRhSnNvbik6CisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9X
ZWJBdXRoZW50aWNhdGlvblV0aWxzLmg6CisgICAgICAgICogaHRtbC9GZWF0dXJlUG9saWN5LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnBvbGljeVR5cGVOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6
OkZlYXR1cmVQb2xpY3k6OnBhcnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkZlYXR1cmVQb2xpY3k6
OmFsbG93cyBjb25zdCk6CisgICAgICAgICogaHRtbC9GZWF0dXJlUG9saWN5Lmg6CisKIDIwMjEt
MTItMTQgIEFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW0lG
Q10gVGFrZSB0ZXh0LWFsaWduIG9mZnNldCBpbnRvIGFjY291bnQgd2hlbiBjb21wdXRpbmcgdGhl
IFJUTCBkaXNwbGF5IGJveCBnZW9tZXRyeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA3MzVlMzI2NDI5MDFlNWI2OTIw
NGRkOTc1MWRhNzZlOWFlZmFlNmQ5Li40NDE2ZTE0NTQ3ZGYyNzdlODJhMGQ0NGI1M2YzOWYwZjk3
NjhjMDZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIxLTEyLTE0ICBKIFBhc2NvZSAg
PGpfcGFzY29lQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0aG5dIEFsbG93IHNhbWUtc2l0
ZSwgY3Jvc3Mtb3JpZ2luIGlmcmFtZSBnZXQoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0MzA5CisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzg2NDg2
MzEzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhl
IFdlYiBBdXRoZW50aWNhdGlvbiBsZXZlbCAyIHNwZWNpZmllcyBhIGZlYXR1cmUgcG9saWN5IHRv
IGFsbG93IGdldCBjYWxscyBpbgorICAgICAgICBjcm9zcy1vcmlnaW4gaS1mcmFtZXMuIFRoaXMg
cGF0Y2ggaW1wbGVtZW50cyB0aGlzIGZlYXR1cmUgcG9saWN5IHBhcnRpYWxseS4gT25seQorICAg
ICAgICBzYW1lLXNpdGUsIGNyb3NzLW9yaWdpbiBpLWZyYW1lcyBhcmUgc3VwcG9ydGVkIGluc3Rl
YWQuIFRoaXMgaXMgZm9yIHRyYWNraW5nIHByZXZlbnRpb24KKyAgICAgICAgcHVycG9zZXMuIGh0
dHBzOi8vdzNjLmdpdGh1Yi5pby93ZWJhdXRobi8jc2N0bi1pZnJhbWUtZ3VpZGFuY2UKKworICAg
ICAgICBUaGlzIHBhdGNoIGFsc28gc3RhcnRzIHBhc3NpbmcgQ2xpZW50RGF0YUpTT04gaGFzaGVz
IHRvIEFTQyB0byBhdm9pZCB0aGUgc2l0dWF0aW9uCisgICAgICAgIHdoZXJlIFdlYktpdCBpbmNs
dWRlcyBjcm9zc09yaWdpbiBvciBvdGhlciBmaWVsZHMgaW4gQ2xpZW50RGF0YUpTT04gdGhhdCBB
U0MgaXMKKyAgICAgICAgdW5hd2FyZSBvZiB3aGVuIGdlbmVyYXRpbmcgQ2xpZW50RGF0YUpTT04u
CisKKyAgICAgICAgQWRkZWQgbGF5b3V0IHRlc3QgY2FzZXMgZm9yIHNhbWUtc2l0ZSwgY3Jvc3Mt
b3JpZ2luIGdldCBjYWxscy4KKworICAgICAgICAqIFBsYXRmb3JtL3NwaS9Db2NvYS9BdXRoZW50
aWNhdGlvblNlcnZpY2VzQ29yZVNQSS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbToKKyAgICAgICAgKHByb2R1Y2VDbGllbnREYXRh
SnNvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL1dlYkF1
dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0Ojpjb25maWd1
cmVSZWdpc3RyYXRpb25SZXF1ZXN0Q29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OmNvbmZpZ3Vy
YXRpb25Bc3NlcnRpb25SZXF1ZXN0Q29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dGhl
bnRpY2F0b3JDb29yZGluYXRvclByb3h5Ojpjb250ZXh0Rm9yUmVxdWVzdCk6CisKIDIwMjEtMTIt
MTQgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAg
ICBBZGQgX1dLQ29udGVudFJ1bGVMaXN0QWN0aW9uLnJlZGlyZWN0ZWQgYW5kIC5tb2RpZmllZEhl
YWRlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3JlZGVudGlhbG1hbmFn
ZW1lbnQvQ3JlZGVudGlhbHNDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9j
cmVkZW50aWFsbWFuYWdlbWVudC9DcmVkZW50aWFsc0NvbnRhaW5lci5jcHAKaW5kZXggZDMwOWQ4
YmE0ZDUzYzdjMjk3NjkyYTgxN2ZhM2VhY2FiMDE5Mzc5MC4uYzFhYzcwYmY2NzJjOTBhMDVjODdh
YTQxOTMwNWVkNTVkMzZhN2MyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9j
cmVkZW50aWFsbWFuYWdlbWVudC9DcmVkZW50aWFsc0NvbnRhaW5lci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9DcmVkZW50aWFsc0NvbnRhaW5l
ci5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5o
IgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1
ZGUgIldlYkF1dGhlbnRpY2F0aW9uQ29uc3RhbnRzLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApAQCAtNDUsMTkgKzQ2LDI3IEBAIENyZWRlbnRpYWxzQ29udGFpbmVyOjpDcmVkZW50aWFsc0Nv
bnRhaW5lcihXZWFrUHRyPERvY3VtZW50PiYmIGRvY3VtZW50KQogewogfQogCi1ib29sIENyZWRl
bnRpYWxzQ29udGFpbmVyOjpkb2VzSGF2ZVNhbWVPcmlnaW5Bc0l0c0FuY2VzdG9ycygpCitXZWJB
dXRobjo6U2NvcGUgQ3JlZGVudGlhbHNDb250YWluZXI6OnNjb3BlKCkKIHsKLSAgICAvLyBUaGUg
Zm9sbG93aW5nIGltcGxlbWVudHMgaHR0cHM6Ly93M2MuZ2l0aHViLmlvL3dlYmFwcHNlYy1jcmVk
ZW50aWFsLW1hbmFnZW1lbnQvI3NhbWUtb3JpZ2luLXdpdGgtaXRzLWFuY2VzdG9ycwotICAgIC8v
IGFzIG9mIDE0IE5vdmVtYmVyIDIwMTcuCiAgICAgaWYgKCFtX2RvY3VtZW50KQotICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBXZWJBdXRobjo6U2NvcGU6OkNyb3NzT3JpZ2lu
OwogCisgICAgYm9vbCBpc1NhbWVPcmlnaW4gPSB0cnVlOworICAgIGJvb2wgaXNTYW1lU2l0ZSA9
IHRydWU7CiAgICAgYXV0byYgb3JpZ2luID0gbV9kb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKTsK
KyAgICBhdXRvJiB1cmwgPSBtX2RvY3VtZW50LT51cmwoKTsKICAgICBmb3IgKGF1dG8qIGRvY3Vt
ZW50ID0gbV9kb2N1bWVudC0+cGFyZW50RG9jdW1lbnQoKTsgZG9jdW1lbnQ7IGRvY3VtZW50ID0g
ZG9jdW1lbnQtPnBhcmVudERvY3VtZW50KCkpIHsKKyAgICAgICAgaWYgKCFvcmlnaW4uaXNTYW1l
T3JpZ2luRG9tYWluKGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpKSAmJiAhYXJlUmVnaXN0cmFi
bGVEb21haW5zRXF1YWwodXJsLCBkb2N1bWVudC0+dXJsKCkpKQorICAgICAgICAgICAgaXNTYW1l
U2l0ZSA9IGZhbHNlOwogICAgICAgICBpZiAoIW9yaWdpbi5pc1NhbWVPcmlnaW5Bcyhkb2N1bWVu
dC0+c2VjdXJpdHlPcmlnaW4oKSkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
ICAgICBpc1NhbWVPcmlnaW4gPSBmYWxzZTsKICAgICB9Ci0gICAgcmV0dXJuIHRydWU7CisKKyAg
ICBpZiAoaXNTYW1lT3JpZ2luKQorICAgICAgICByZXR1cm4gV2ViQXV0aG46OlNjb3BlOjpTYW1l
T3JpZ2luOworICAgIGlmIChpc1NhbWVTaXRlKQorICAgICAgICByZXR1cm4gV2ViQXV0aG46OlNj
b3BlOjpTYW1lU2l0ZTsKKyAgICByZXR1cm4gV2ViQXV0aG46OlNjb3BlOjpDcm9zc09yaWdpbjsK
IH0KIAogdm9pZCBDcmVkZW50aWFsc0NvbnRhaW5lcjo6Z2V0KENyZWRlbnRpYWxSZXF1ZXN0T3B0
aW9ucyYmIG9wdGlvbnMsIENyZWRlbnRpYWxQcm9taXNlJiYgcHJvbWlzZSkKQEAgLTg5LDcgKzk4
LDcgQEAgdm9pZCBDcmVkZW50aWFsc0NvbnRhaW5lcjo6Z2V0KENyZWRlbnRpYWxSZXF1ZXN0T3B0
aW9ucyYmIG9wdGlvbnMsIENyZWRlbnRpYWxQcm8KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIG1fZG9jdW1lbnQtPnBhZ2UoKS0+YXV0aGVudGljYXRvckNvb3JkaW5hdG9yKCkuZGlzY292
ZXJGcm9tRXh0ZXJuYWxTb3VyY2UoKm1fZG9jdW1lbnQsIG9wdGlvbnMucHVibGljS2V5LnZhbHVl
KCksIGRvZXNIYXZlU2FtZU9yaWdpbkFzSXRzQW5jZXN0b3JzKCksIFdURk1vdmUob3B0aW9ucy5z
aWduYWwpLCBXVEZNb3ZlKHByb21pc2UpKTsKKyAgICBtX2RvY3VtZW50LT5wYWdlKCktPmF1dGhl
bnRpY2F0b3JDb29yZGluYXRvcigpLmRpc2NvdmVyRnJvbUV4dGVybmFsU291cmNlKCptX2RvY3Vt
ZW50LCBvcHRpb25zLnB1YmxpY0tleS52YWx1ZSgpLCBzY29wZSgpLCBXVEZNb3ZlKG9wdGlvbnMu
c2lnbmFsKSwgV1RGTW92ZShwcm9taXNlKSk7CiB9CiAKIHZvaWQgQ3JlZGVudGlhbHNDb250YWlu
ZXI6OnN0b3JlKGNvbnN0IEJhc2ljQ3JlZGVudGlhbCYsIENyZWRlbnRpYWxQcm9taXNlJiYgcHJv
bWlzZSkKQEAgLTEyNCw3ICsxMzMsNyBAQCB2b2lkIENyZWRlbnRpYWxzQ29udGFpbmVyOjppc0Ny
ZWF0ZShDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zJiYgb3B0aW9ucywgQ3JlZGVudAogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgbV9kb2N1bWVudC0+cGFnZSgpLT5hdXRoZW50aWNhdG9y
Q29vcmRpbmF0b3IoKS5jcmVhdGUoKm1fZG9jdW1lbnQsIG9wdGlvbnMucHVibGljS2V5LnZhbHVl
KCksIGRvZXNIYXZlU2FtZU9yaWdpbkFzSXRzQW5jZXN0b3JzKCksIFdURk1vdmUob3B0aW9ucy5z
aWduYWwpLCBXVEZNb3ZlKHByb21pc2UpKTsKKyAgICBtX2RvY3VtZW50LT5wYWdlKCktPmF1dGhl
bnRpY2F0b3JDb29yZGluYXRvcigpLmNyZWF0ZSgqbV9kb2N1bWVudCwgb3B0aW9ucy5wdWJsaWNL
ZXkudmFsdWUoKSwgc2NvcGUoKSwgV1RGTW92ZShvcHRpb25zLnNpZ25hbCksIFdURk1vdmUocHJv
bWlzZSkpOwogfQogCiB2b2lkIENyZWRlbnRpYWxzQ29udGFpbmVyOjpwcmV2ZW50U2lsZW50QWNj
ZXNzKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50L0NyZWRlbnRpYWxz
Q29udGFpbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50
L0NyZWRlbnRpYWxzQ29udGFpbmVyLmgKaW5kZXggNGUxYmI0ZTViZTVlNTI1NWEzNzc4NmY4ZWY2
OWI4YTc3ZGFmNTNjNy4uOWE2YjEyZGRjMjIyOThmNDdjMWUzMjk2MmI2YTZjZjM5ZWI1ZDkxMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9D
cmVkZW50aWFsc0NvbnRhaW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3JlZGVu
dGlhbG1hbmFnZW1lbnQvQ3JlZGVudGlhbHNDb250YWluZXIuaApAQCAtMzIsNiArMzIsMTAgQEAK
ICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAK
K25hbWVzcGFjZSBXZWJBdXRobiB7CitlbnVtIGNsYXNzIFNjb3BlOworfQorCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIERvY3VtZW50OwpAQCAtNTQsNyArNTgsNyBAQCBwdWJsaWM6CiBw
cml2YXRlOgogICAgIENyZWRlbnRpYWxzQ29udGFpbmVyKFdlYWtQdHI8RG9jdW1lbnQ+JiYpOwog
Ci0gICAgYm9vbCBkb2VzSGF2ZVNhbWVPcmlnaW5Bc0l0c0FuY2VzdG9ycygpOworICAgIFdlYkF1
dGhuOjpTY29wZSBzY29wZSgpOwogCiAgICAgV2Vha1B0cjxEb2N1bWVudD4gbV9kb2N1bWVudDsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRp
Y2F0b3JDb29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1
dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAKaW5kZXggNDkwZjY1YWUyZTE1NWUxOGFjZThjMzUy
ZjYxZDQwODRkZmM5MGZmMS4uNWQ0Nzc3YjhjMDNhMDkyZjcxOTFkZTQ0NDU0OGVhN2Y5YzZmM2M3
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4v
QXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUg
IkF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudC5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0
b3JSZXNwb25zZURhdGEuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkZlYXR1
cmVQb2xpY3kuaCIKICNpbmNsdWRlICJKU0Jhc2ljQ3JlZGVudGlhbC5oIgogI2luY2x1ZGUgIkpT
RE9NUHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSAiUHVibGljS2V5Q3JlZGVudGlhbC5oIgpA
QCAtMTA0LDcgKzEwNSw3IEBAIHZvaWQgQXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjpzZXRDbGll
bnQoc3RkOjp1bmlxdWVfcHRyPEF1dGhlbnRpY2F0b3JDb29yZGluYXRvCiAgICAgbV9jbGllbnQg
PSBXVEZNb3ZlKGNsaWVudCk7CiB9CiAKLXZvaWQgQXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjpj
cmVhdGUoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFs
Q3JlYXRpb25PcHRpb25zJiBvcHRpb25zLCBib29sIHNhbWVPcmlnaW5XaXRoQW5jZXN0b3JzLCBS
ZWZQdHI8QWJvcnRTaWduYWw+JiYgYWJvcnRTaWduYWwsIENyZWRlbnRpYWxQcm9taXNlJiYgcHJv
bWlzZSkgY29uc3QKK3ZvaWQgQXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjpjcmVhdGUoY29uc3Qg
RG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRp
b25zJiBvcHRpb25zLCBXZWJBdXRobjo6U2NvcGUgc2NvcGUsIFJlZlB0cjxBYm9ydFNpZ25hbD4m
JiBhYm9ydFNpZ25hbCwgQ3JlZGVudGlhbFByb21pc2UmJiBwcm9taXNlKSBjb25zdAogewogICAg
IHVzaW5nIG5hbWVzcGFjZSBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JJbnRlcm5hbDsKIApAQCAt
MTE0LDcgKzExNSw3IEBAIHZvaWQgQXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjpjcmVhdGUoY29u
c3QgRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBQdWJsaWNLZXlDCiAgICAgLy8gVGhlIGZvbGxv
d2luZyBpbXBsZW1lbnRzIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi8jY3JlYXRlQ3Jl
ZGVudGlhbCBhcyBvZiA1IERlY2VtYmVyIDIwMTcuCiAgICAgLy8gU3RlcCAxLCAzLCAxNiBhcmUg
aGFuZGxlZCBieSB0aGUgY2FsbGVyLgogICAgIC8vIFN0ZXAgMi4KLSAgICBpZiAoIXNhbWVPcmln
aW5XaXRoQW5jZXN0b3JzKSB7CisgICAgaWYgKHNjb3BlICE9IFdlYkF1dGhuOjpTY29wZTo6U2Ft
ZU9yaWdpbikgewogICAgICAgICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBOb3RBbGxvd2Vk
RXJyb3IsICJUaGUgb3JpZ2luIG9mIHRoZSBkb2N1bWVudCBpcyBub3QgdGhlIHNhbWUgYXMgaXRz
IGFuY2VzdG9ycy4iX3MgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xNDgsNyArMTQ5
LDcgQEAgdm9pZCBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6OmNyZWF0ZShjb25zdCBEb2N1bWVu
dCYgZG9jdW1lbnQsIGNvbnN0IFB1YmxpY0tleUMKICAgICBvcHRpb25zLmV4dGVuc2lvbnMgPSBB
dXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRJbnB1dHMgeyBTdHJpbmcoKSwgcHJvY2Vzc0dv
b2dsZUxlZ2FjeUFwcElkU3VwcG9ydEV4dGVuc2lvbihvcHRpb25zLmV4dGVuc2lvbnMsIG9wdGlv
bnMucnAuaWQpIH07CiAKICAgICAvLyBTdGVwIDEzLTE1LgotICAgIGF1dG8gY2xpZW50RGF0YUpz
b24gPSBidWlsZENsaWVudERhdGFKc29uKENsaWVudERhdGFUeXBlOjpDcmVhdGUsIG9wdGlvbnMu
Y2hhbGxlbmdlLCBjYWxsZXJPcmlnaW4pOworICAgIGF1dG8gY2xpZW50RGF0YUpzb24gPSBidWls
ZENsaWVudERhdGFKc29uKENsaWVudERhdGFUeXBlOjpDcmVhdGUsIG9wdGlvbnMuY2hhbGxlbmdl
LCBjYWxsZXJPcmlnaW4sIHNjb3BlKTsKICAgICBhdXRvIGNsaWVudERhdGFKc29uSGFzaCA9IGJ1
aWxkQ2xpZW50RGF0YUpzb25IYXNoKGNsaWVudERhdGFKc29uKTsKIAogICAgIC8vIFN0ZXAgNCwg
MTctMjEuCkBAIC0xNzUsNyArMTc2LDcgQEAgdm9pZCBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6
OmNyZWF0ZShjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFB1YmxpY0tleUMKICAgICBt
X2NsaWVudC0+bWFrZUNyZWRlbnRpYWwoKmZyYW1lLCBjYWxsZXJPcmlnaW4sIGNsaWVudERhdGFK
c29uSGFzaCwgb3B0aW9ucywgV1RGTW92ZShjYWxsYmFjaykpOwogfQogCi12b2lkIEF1dGhlbnRp
Y2F0b3JDb29yZGluYXRvcjo6ZGlzY292ZXJGcm9tRXh0ZXJuYWxTb3VyY2UoY29uc3QgRG9jdW1l
bnQmIGRvY3VtZW50LCBjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMmIG9w
dGlvbnMsIGJvb2wgc2FtZU9yaWdpbldpdGhBbmNlc3RvcnMsIFJlZlB0cjxBYm9ydFNpZ25hbD4m
JiBhYm9ydFNpZ25hbCwgQ3JlZGVudGlhbFByb21pc2UmJiBwcm9taXNlKSBjb25zdAordm9pZCBB
dXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6OmRpc2NvdmVyRnJvbUV4dGVybmFsU291cmNlKGNvbnN0
IERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRp
b25zJiBvcHRpb25zLCBXZWJBdXRobjo6U2NvcGUgc2NvcGUsIFJlZlB0cjxBYm9ydFNpZ25hbD4m
JiBhYm9ydFNpZ25hbCwgQ3JlZGVudGlhbFByb21pc2UmJiBwcm9taXNlKSBjb25zdAogewogICAg
IHVzaW5nIG5hbWVzcGFjZSBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JJbnRlcm5hbDsKIApAQCAt
MTg1LDcgKzE4Niw4IEBAIHZvaWQgQXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjpkaXNjb3ZlckZy
b21FeHRlcm5hbFNvdXJjZShjb25zdCBEb2N1bWVudCYgZG9jdW1lCiAgICAgLy8gVGhlIGZvbGxv
d2luZyBpbXBsZW1lbnRzIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi8jY3JlYXRlQ3Jl
ZGVudGlhbCBhcyBvZiA1IERlY2VtYmVyIDIwMTcuCiAgICAgLy8gU3RlcCAxLCAzLCAxMyBhcmUg
aGFuZGxlZCBieSB0aGUgY2FsbGVyLgogICAgIC8vIFN0ZXAgMi4KLSAgICBpZiAoIXNhbWVPcmln
aW5XaXRoQW5jZXN0b3JzKSB7CisgICAgLy8gVGhpcyBpbXBsZW1lbnRzIGh0dHBzOi8vd3d3Lncz
Lm9yZy9UUi93ZWJhdXRobi0yLyNzY3RuLXBlcm1pc3Npb25zLXBvbGljeSBleGNlcHQgb25seSBz
YW1lLXNpdGUsIGNyb3NzLW9yaWdpbiBpcyBwZXJtaXR0ZWQuCisgICAgaWYgKHNjb3BlICE9IFdl
YkF1dGhuOjpTY29wZTo6U2FtZU9yaWdpbiAmJiAhKHNjb3BlID09IFdlYkF1dGhuOjpTY29wZTo6
U2FtZVNpdGUgJiYgaXNGZWF0dXJlUG9saWN5QWxsb3dlZEJ5RG9jdW1lbnRBbmRBbGxPd25lcnMo
RmVhdHVyZVBvbGljeTo6VHlwZTo6UHVibGlja2V5Q3JlZGVudGlhbHNHZXRSdWxlLCBkb2N1bWVu
dCwgTG9nRmVhdHVyZVBvbGljeUZhaWx1cmU6Ok5vKSkpIHsKICAgICAgICAgcHJvbWlzZS5yZWpl
Y3QoRXhjZXB0aW9uIHsgTm90QWxsb3dlZEVycm9yLCAiVGhlIG9yaWdpbiBvZiB0aGUgZG9jdW1l
bnQgaXMgbm90IHRoZSBzYW1lIGFzIGl0cyBhbmNlc3RvcnMuIl9zIH0pOwogICAgICAgICByZXR1
cm47CiAgICAgfQpAQCAtMjE5LDcgKzIyMSw3IEBAIHZvaWQgQXV0aGVudGljYXRvckNvb3JkaW5h
dG9yOjpkaXNjb3ZlckZyb21FeHRlcm5hbFNvdXJjZShjb25zdCBEb2N1bWVudCYgZG9jdW1lCiAg
ICAgfQogCiAgICAgLy8gU3RlcCAxMC0xMi4KLSAgICBhdXRvIGNsaWVudERhdGFKc29uID0gYnVp
bGRDbGllbnREYXRhSnNvbihDbGllbnREYXRhVHlwZTo6R2V0LCBvcHRpb25zLmNoYWxsZW5nZSwg
Y2FsbGVyT3JpZ2luKTsKKyAgICBhdXRvIGNsaWVudERhdGFKc29uID0gYnVpbGRDbGllbnREYXRh
SnNvbihDbGllbnREYXRhVHlwZTo6R2V0LCBvcHRpb25zLmNoYWxsZW5nZSwgY2FsbGVyT3JpZ2lu
LCBzY29wZSk7CiAgICAgYXV0byBjbGllbnREYXRhSnNvbkhhc2ggPSBidWlsZENsaWVudERhdGFK
c29uSGFzaChjbGllbnREYXRhSnNvbik7CiAKICAgICAvLyBTdGVwIDQsIDE0LTE5LgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRp
bmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckNv
b3JkaW5hdG9yLmgKaW5kZXggZmZmZTIwYjAwMTc0ZWQyNGU2ODdmNDc3YzkwNDQyZjc1YjYxMzU1
ZS4uZjQ5NTAzMDg2YzlhY2M3OTE5MzM4N2Y3NmZiNmE1YmVhMjA3ODBhYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3Iu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29y
ZGluYXRvci5oCkBAIC0zMSw2ICszMSwxMCBAQAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAj
aW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKK25hbWVzcGFjZSBXZWJBdXRobiB7CitlbnVt
IGNsYXNzIFNjb3BlOworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFib3J0U2ln
bmFsOwpAQCAtNTMsOCArNTcsOCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
ZXRDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudD4m
Jik7CiAKICAgICAvLyBUaGUgZm9sbG93aW5nIG1ldGhvZHMgaW1wbGVtZW50IHN0YXRpYyBtZXRo
b2RzIG9mIFB1YmxpY0tleUNyZWRlbnRpYWwuCi0gICAgdm9pZCBjcmVhdGUoY29uc3QgRG9jdW1l
bnQmLCBjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zJiwgYm9vbCBzYW1l
T3JpZ2luV2l0aEFuY2VzdG9ycywgUmVmUHRyPEFib3J0U2lnbmFsPiYmLCBDcmVkZW50aWFsUHJv
bWlzZSYmKSBjb25zdDsKLSAgICB2b2lkIGRpc2NvdmVyRnJvbUV4dGVybmFsU291cmNlKGNvbnN0
IERvY3VtZW50JiwgY29uc3QgUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zJiwgYm9v
bCBzYW1lT3JpZ2luV2l0aEFuY2VzdG9ycywgUmVmUHRyPEFib3J0U2lnbmFsPiYmLCBDcmVkZW50
aWFsUHJvbWlzZSYmKSBjb25zdDsKKyAgICB2b2lkIGNyZWF0ZShjb25zdCBEb2N1bWVudCYsIGNv
bnN0IFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMmLCBXZWJBdXRobjo6U2NvcGUs
IFJlZlB0cjxBYm9ydFNpZ25hbD4mJiwgQ3JlZGVudGlhbFByb21pc2UmJikgY29uc3Q7CisgICAg
dm9pZCBkaXNjb3ZlckZyb21FeHRlcm5hbFNvdXJjZShjb25zdCBEb2N1bWVudCYsIGNvbnN0IFB1
YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYsIFdlYkF1dGhuOjpTY29wZSwgUmVmUHRy
PEFib3J0U2lnbmFsPiYmLCBDcmVkZW50aWFsUHJvbWlzZSYmKSBjb25zdDsKICAgICB2b2lkIGlz
VXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZShET01Qcm9taXNlRGVm
ZXJyZWQ8SURMQm9vbGVhbj4mJikgY29uc3Q7CiAKICAgICB2b2lkIHJlc2V0VXNlckdlc3R1cmVS
ZXF1aXJlbWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRo
bi9XZWJBdXRoZW50aWNhdGlvbkNvbnN0YW50cy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdXRobi9XZWJBdXRoZW50aWNhdGlvbkNvbnN0YW50cy5oCmluZGV4IDQ1MWZmMzNiMjhlZDUw
YjViYWY3YjlhMzljZWE4MjA3N2U1MzExNTEuLjg0YTc3YmVjN2JhMmEzYzk5YTcwYzMwNDM0MmQ5
MWE0ZjE5NzkxYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4v
V2ViQXV0aGVudGljYXRpb25Db25zdGFudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1dGhuL1dlYkF1dGhlbnRpY2F0aW9uQ29uc3RhbnRzLmgKQEAgLTgwLDMgKzgwLDEzIEBA
IGVudW0gY2xhc3MgQ2xpZW50RGF0YVR5cGUgOiBib29sIHsKIGNvbnN0IGNoYXIgTG9jYWxBdXRo
ZW50aWNhdGlvckFjY2Vzc0dyb3VwW10gPSAiY29tLmFwcGxlLndlYmtpdC53ZWJhdXRobiI7CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworbmFtZXNwYWNlIFdlYkF1dGhuIHsKKworZW51bSBj
bGFzcyBTY29wZSB7CisgICAgQ3Jvc3NPcmlnaW4sCisgICAgU2FtZU9yaWdpbiwKKyAgICBTYW1l
U2l0ZQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQXV0aG4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vV2ViQXV0aGVudGljYXRpb25VdGlscy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1dlYkF1dGhlbnRpY2F0aW9uVXRpbHMuY3BwCmlu
ZGV4IGM4ZTBkMjgyZDUzYjA4NmQyMTk0N2ZmZTEwZmQ4ZjY5OGVkMDQ4OTYuLjhkNDczY2EyNTlm
MmM2YmMwZjViNWEyNmIwYzJkMmE4NDBjZGY1ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXV0aG4vV2ViQXV0aGVudGljYXRpb25VdGlscy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9XZWJBdXRoZW50aWNhdGlvblV0aWxzLmNwcApAQCAt
MTM0LDcgKzEzNCw3IEBAIFZlY3Rvcjx1aW50OF90PiBidWlsZEF0dGVzdGF0aW9uT2JqZWN0KFZl
Y3Rvcjx1aW50OF90PiYmIGF1dGhEYXRhLCBTdHJpbmcmJiBmb3JtCiB9CiAKIC8vIEZJWE1FKDE4
MTk0OCk6IEFkZCB0b2tlbiBiaW5kaW5nIElELgotUmVmPEFycmF5QnVmZmVyPiBidWlsZENsaWVu
dERhdGFKc29uKENsaWVudERhdGFUeXBlIHR5cGUsIGNvbnN0IEJ1ZmZlclNvdXJjZSYgY2hhbGxl
bmdlLCBjb25zdCBTZWN1cml0eU9yaWdpbiYgb3JpZ2luKQorUmVmPEFycmF5QnVmZmVyPiBidWls
ZENsaWVudERhdGFKc29uKENsaWVudERhdGFUeXBlIHR5cGUsIGNvbnN0IEJ1ZmZlclNvdXJjZSYg
Y2hhbGxlbmdlLCBjb25zdCBTZWN1cml0eU9yaWdpbiYgb3JpZ2luLCBXZWJBdXRobjo6U2NvcGUg
c2NvcGUpCiB7CiAgICAgYXV0byBvYmplY3QgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAg
IHN3aXRjaCAodHlwZSkgewpAQCAtMTQ3LDYgKzE0Nyw4IEBAIFJlZjxBcnJheUJ1ZmZlcj4gYnVp
bGRDbGllbnREYXRhSnNvbihDbGllbnREYXRhVHlwZSB0eXBlLCBjb25zdCBCdWZmZXJTb3VyY2Um
IGNoCiAgICAgfQogICAgIG9iamVjdC0+c2V0U3RyaW5nKCJjaGFsbGVuZ2UiX3MsIGJhc2U2NFVS
TEVuY29kZVRvU3RyaW5nKGNoYWxsZW5nZS5kYXRhKCksIGNoYWxsZW5nZS5sZW5ndGgoKSkpOwog
ICAgIG9iamVjdC0+c2V0U3RyaW5nKCJvcmlnaW4iX3MsIG9yaWdpbi50b1Jhd1N0cmluZygpKTsK
KyAgICBpZiAoc2NvcGUgIT0gV2ViQXV0aG46OlNjb3BlOjpTYW1lT3JpZ2luKQorICAgICAgICBv
YmplY3QtPnNldEJvb2xlYW4oImNyb3NzT3JpZ2luIl9zLCBzY29wZSAhPSBXZWJBdXRobjo6U2Nv
cGU6OlNhbWVPcmlnaW4pOwogCiAgICAgYXV0byB1dGY4SlNPTlN0cmluZyA9IG9iamVjdC0+dG9K
U09OU3RyaW5nKCkudXRmOCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1dGhuL1dlYkF1dGhlbnRpY2F0aW9uVXRpbHMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXV0aG4vV2ViQXV0aGVudGljYXRpb25VdGlscy5oCmluZGV4IGEwNzkyMTFkZWIxN2M4
ZTI2YmJmMWU4OWQzMjBmMTFjODU5MzdlNTcuLmE2NDI1NDRkNGE2NTg2OGJiNGRhOTczMmRhZTAy
OGNkZmM1NThjMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4v
V2ViQXV0aGVudGljYXRpb25VdGlscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXV0aG4vV2ViQXV0aGVudGljYXRpb25VdGlscy5oCkBAIC01Miw3ICs1Miw3IEBAIFdFQkNPUkVf
RVhQT1JUIFZlY3Rvcjx1aW50OF90PiBidWlsZEF1dGhEYXRhKGNvbnN0IFN0cmluZyYgcnBJZCwg
Y29uc3QgdWludDhfdCBmCiAvLyBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4vI2F0dGVz
dGF0aW9uLW9iamVjdAogV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IGJ1aWxkQXR0ZXN0
YXRpb25PYmplY3QoVmVjdG9yPHVpbnQ4X3Q+JiYgYXV0aERhdGEsIFN0cmluZyYmIGZvcm1hdCwg
Y2Jvcjo6Q0JPUlZhbHVlOjpNYXBWYWx1ZSYmIHN0YXRlbWVudE1hcCwgY29uc3QgQXR0ZXN0YXRp
b25Db252ZXlhbmNlUHJlZmVyZW5jZSYpOwogCi1XRUJDT1JFX0VYUE9SVCBSZWY8QXJyYXlCdWZm
ZXI+IGJ1aWxkQ2xpZW50RGF0YUpzb24oQ2xpZW50RGF0YVR5cGUgLyp0eXBlKi8sIGNvbnN0IEJ1
ZmZlclNvdXJjZSYgY2hhbGxlbmdlLCBjb25zdCBTZWN1cml0eU9yaWdpbiYgLypvcmlnaW4qLyk7
CitXRUJDT1JFX0VYUE9SVCBSZWY8QXJyYXlCdWZmZXI+IGJ1aWxkQ2xpZW50RGF0YUpzb24oQ2xp
ZW50RGF0YVR5cGUgLyp0eXBlKi8sIGNvbnN0IEJ1ZmZlclNvdXJjZSYgY2hhbGxlbmdlLCBjb25z
dCBTZWN1cml0eU9yaWdpbiYgLypvcmlnaW4qLywgV2ViQXV0aG46OlNjb3BlKTsKIAogV0VCQ09S
RV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IGJ1aWxkQ2xpZW50RGF0YUpzb25IYXNoKGNvbnN0IEFy
cmF5QnVmZmVyJiBjbGllbnREYXRhSnNvbik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvRmVhdHVyZVBvbGljeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZlYXR1cmVQb2xp
Y3kuY3BwCmluZGV4IDU2MDBjYTFhYmIwNGI5NGJiZmZjNGZlZDUwNDM1YjEzNDUyOTYzZTYuLjU4
NDhkMGFiOWMyZDc1NjRmMDhmNDg3NTJiOTM1ZTE4MTBiMTE4MTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvRmVhdHVyZVBvbGljeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9GZWF0dXJlUG9saWN5LmNwcApAQCAtNjcsNiArNjcsMTAgQEAgc3RhdGljIGNvbnN0IGNoYXIq
IHBvbGljeVR5cGVOYW1lKEZlYXR1cmVQb2xpY3k6OlR5cGUgdHlwZSkKICAgICBjYXNlIEZlYXR1
cmVQb2xpY3k6OlR5cGU6Ok1hZ25ldG9tZXRlcjoKICAgICAgICAgcmV0dXJuICJNYWduZXRvbWV0
ZXIiOwogI2VuZGlmCisjaWYgRU5BQkxFKFdFQl9BVVRITikKKyAgICBjYXNlIEZlYXR1cmVQb2xp
Y3k6OlR5cGU6OlB1YmxpY2tleUNyZWRlbnRpYWxzR2V0UnVsZToKKyAgICAgICAgcmV0dXJuICJQ
dWJsaWNrZXlDcmVkZW50aWFsc0dldCI7CisjZW5kaWYKICNpZiBFTkFCTEUoV0VCWFIpCiAgICAg
Y2FzZSBGZWF0dXJlUG9saWN5OjpUeXBlOjpYUlNwYXRpYWxUcmFja2luZzoKICAgICAgICAgcmV0
dXJuICJYUlNwYXRpYWxUcmFja2luZyI7CkBAIC0xODQsNiArMTg4LDkgQEAgRmVhdHVyZVBvbGlj
eSBGZWF0dXJlUG9saWN5OjpwYXJzZShEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IEhUTUxJRnJh
bWVFbGVtZW50JgogICAgIGJvb2wgaXNBY2NlbGVyb21ldGVySW5pdGlhbGl6ZWQgPSBmYWxzZTsK
ICAgICBib29sIGlzTWFnbmV0b21ldGVySW5pdGlhbGl6ZWQgPSBmYWxzZTsKICNlbmRpZgorI2lm
IEVOQUJMRShXRUJfQVVUSE4pCisgICAgYm9vbCBpc1B1YmxpY2tleUNyZWRlbnRpYWxzR2V0SW5p
dGlhbGl6ZWQgPSBmYWxzZTsKKyNlbmRpZgogI2lmIEVOQUJMRShXRUJYUikKICAgICBib29sIGlz
WFJTcGF0aWFsVHJhY2tpbmdJbml0aWFsaXplZCA9IGZhbHNlOwogI2VuZGlmCkBAIC0yNTEsNiAr
MjU4LDEzIEBAIEZlYXR1cmVQb2xpY3kgRmVhdHVyZVBvbGljeTo6cGFyc2UoRG9jdW1lbnQmIGRv
Y3VtZW50LCBjb25zdCBIVE1MSUZyYW1lRWxlbWVudCYKICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICB9CiAjZW5kaWYKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorICAgICAgICBpZiAoaXRl
bS5zdGFydHNXaXRoKCJwdWJsaWNrZXktY3JlZGVudGlhbHMtZ2V0IikpIHsKKyAgICAgICAgICAg
IGlzUHVibGlja2V5Q3JlZGVudGlhbHNHZXRJbml0aWFsaXplZCA9IHRydWU7CisgICAgICAgICAg
ICB1cGRhdGVMaXN0KGRvY3VtZW50LCBwb2xpY3kubV9wdWJsaWNrZXlDcmVkZW50aWFsc0dldFJ1
bGUsIGl0ZW0uc3Vic3RyaW5nKDI2KSk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
fQorI2VuZGlmCiAjaWYgRU5BQkxFKFdFQlhSKQogICAgICAgICBpZiAoaXRlbS5zdGFydHNXaXRo
KCJ4ci1zcGF0aWFsLXRyYWNraW5nIikpIHsKICAgICAgICAgICAgIGlzWFJTcGF0aWFsVHJhY2tp
bmdJbml0aWFsaXplZCA9IHRydWU7CkBAIC0yODMsNiArMjk3LDEwIEBAIEZlYXR1cmVQb2xpY3kg
RmVhdHVyZVBvbGljeTo6cGFyc2UoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBIVE1MSUZyYW1l
RWxlbWVudCYKICAgICBpZiAoIWlzTWFnbmV0b21ldGVySW5pdGlhbGl6ZWQpCiAgICAgICAgIHBv
bGljeS5tX21hZ25ldG9tZXRlclJ1bGUuYWxsb3dlZExpc3QuYWRkKGRvY3VtZW50LnNlY3VyaXR5
T3JpZ2luKCkuZGF0YSgpKTsKICNlbmRpZgorI2lmIEVOQUJMRShXRUJfQVVUSE4pCisgICAgaWYg
KCFpc1B1YmxpY2tleUNyZWRlbnRpYWxzR2V0SW5pdGlhbGl6ZWQpCisgICAgICAgIHBvbGljeS5t
X3B1YmxpY2tleUNyZWRlbnRpYWxzR2V0UnVsZS5hbGxvd2VkTGlzdC5hZGQoZG9jdW1lbnQuc2Vj
dXJpdHlPcmlnaW4oKS5kYXRhKCkpOworI2VuZGlmCiAjaWYgRU5BQkxFKFdFQlhSKQogICAgIGlm
ICghaXNYUlNwYXRpYWxUcmFja2luZ0luaXRpYWxpemVkKQogICAgICAgICBwb2xpY3kubV94clNw
YXRpYWxUcmFja2luZ1J1bGUuYWxsb3dlZExpc3QuYWRkKGRvY3VtZW50LnNlY3VyaXR5T3JpZ2lu
KCkuZGF0YSgpKTsKQEAgLTMzOCw2ICszNTYsMTAgQEAgYm9vbCBGZWF0dXJlUG9saWN5OjphbGxv
d3MoVHlwZSB0eXBlLCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbikgY29uc3QKICAg
ICBjYXNlIFR5cGU6Ok1hZ25ldG9tZXRlcjoKICAgICAgICAgcmV0dXJuIGlzQWxsb3dlZEJ5RmVh
dHVyZVBvbGljeShtX21hZ25ldG9tZXRlclJ1bGUsIG9yaWdpbik7CiAjZW5kaWYKKyNpZiBFTkFC
TEUoV0VCX0FVVEhOKQorICAgIGNhc2UgVHlwZTo6UHVibGlja2V5Q3JlZGVudGlhbHNHZXRSdWxl
OgorICAgICAgICByZXR1cm4gaXNBbGxvd2VkQnlGZWF0dXJlUG9saWN5KG1fcHVibGlja2V5Q3Jl
ZGVudGlhbHNHZXRSdWxlLCBvcmlnaW4pOworI2VuZGlmCiAjaWYgRU5BQkxFKFdFQlhSKQogICAg
IGNhc2UgVHlwZTo6WFJTcGF0aWFsVHJhY2tpbmc6CiAgICAgICAgIHJldHVybiBpc0FsbG93ZWRC
eUZlYXR1cmVQb2xpY3kobV94clNwYXRpYWxUcmFja2luZ1J1bGUsIG9yaWdpbik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZlYXR1cmVQb2xpY3kuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvRmVhdHVyZVBvbGljeS5oCmluZGV4IGU2NDBmOGE1ZDcyM2RlMDFlOWE2NGI1MTA2NjZi
OTNhNjc5N2E3OTIuLjI4ZWZhMzE1ODUxMDkwMzFiOTczNGQwZjEyMzUxZjkzZGViZTM0OGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmVhdHVyZVBvbGljeS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvRmVhdHVyZVBvbGljeS5oCkBAIC01Myw2ICs1Myw5IEBAIHB1YmxpYzoK
ICAgICAgICAgQWNjZWxlcm9tZXRlciwKICAgICAgICAgTWFnbmV0b21ldGVyLAogI2VuZGlmCisj
aWYgRU5BQkxFKFdFQl9BVVRITikKKyAgICAgICAgUHVibGlja2V5Q3JlZGVudGlhbHNHZXRSdWxl
LAorI2VuZGlmCiAjaWYgRU5BQkxFKFdFQlhSKQogICAgICAgICBYUlNwYXRpYWxUcmFja2luZywK
ICNlbmRpZgpAQCAtODEsNiArODQsOSBAQCBwcml2YXRlOgogICAgIEFsbG93UnVsZSBtX2FjY2Vs
ZXJvbWV0ZXJSdWxlOwogICAgIEFsbG93UnVsZSBtX21hZ25ldG9tZXRlclJ1bGU7CiAjZW5kaWYK
KyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorICAgIEFsbG93UnVsZSBtX3B1YmxpY2tleUNyZWRlbnRp
YWxzR2V0UnVsZTsKKyNlbmRpZgogI2lmIEVOQUJMRShXRUJYUikKICAgICBBbGxvd1J1bGUgbV94
clNwYXRpYWxUcmFja2luZ1J1bGU7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vc3BpL0NvY29hL0F1dGhlbnRpY2F0aW9uU2VydmljZXNDb3JlU1BJLmggYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9Db2NvYS9BdXRoZW50aWNhdGlvblNlcnZpY2VzQ29yZVNQ
SS5oCmluZGV4IDM5NDgyMmQ1NTBlOTUyYTJlZDk3YThiMjZjYjU1ZDEyNjcxMWIxN2QuLjU1MzNl
NzViNDI3MmYzYzExZGMzZTdiNDgwNGU1M2FjYTA5MmMzOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vc3BpL0NvY29hL0F1dGhlbnRpY2F0aW9uU2VydmljZXNDb3JlU1BJLmgK
KysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvQ29jb2EvQXV0aGVudGljYXRpb25TZXJ2
aWNlc0NvcmVTUEkuaApAQCAtMjUsMTAgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpZiBI
QVZFKFVOSUZJRURfQVNDX0FVVEhfVUkpCi0jaW1wb3J0IDxBdXRoZW50aWNhdGlvblNlcnZpY2Vz
Q29yZS9BdXRoZW50aWNhdGlvblNlcnZpY2VzQ29yZS5oPgotI2ltcG9ydCA8QXV0aGVudGljYXRp
b25TZXJ2aWNlc0NvcmUvQXV0aGVudGljYXRpb25TZXJ2aWNlc0NvcmVQcml2YXRlLmg+Ci0jZWxp
ZiBIQVZFKEFTQ19BVVRIX1VJKQorI2lmIEhBVkUoQVNDX0FVVEhfVUkpIHx8IEhBVkUoVU5JRklF
RF9BU0NfQVVUSF9VSSkKIAogTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KIApAQCAtNzEsNiArNjgs
MTYgQEAgTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KIAogQGVuZAogCitAaW50ZXJmYWNlIEFTQ0F1
dGhvcml6YXRpb25SZW1vdGVQcmVzZW50ZXIgOiBOU09iamVjdAorCisjaWYgVEFSR0VUX09TX09T
WAorLSAodm9pZClwcmVzZW50V2l0aFdpbmRvdzooTlNXaW5kb3cgKil3aW5kb3cgZGFlbW9uRW5k
cG9pbnQ6KE5TWFBDTGlzdGVuZXJFbmRwb2ludCAqKWRhZW1vbkVuZHBvaW50IGNvbXBsZXRpb25I
YW5kbGVyOih2b2lkICheKShpZCA8QVNDQ3JlZGVudGlhbFByb3RvY29sPiwgTlNFcnJvciAqKSlj
b21wbGV0aW9uSGFuZGxlcjsKKyNlbHNlCistICh2b2lkKXByZXNlbnRXaXRoVUlXaW5kb3c6KFVJ
V2luZG93ICopd2luZG93IGRhZW1vbkVuZHBvaW50OihOU1hQQ0xpc3RlbmVyRW5kcG9pbnQgKilk
YWVtb25FbmRwb2ludCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoaWQgPEFTQ0NyZWRlbnRp
YWxQcm90b2NvbD4sIE5TRXJyb3IgKikpY29tcGxldGlvbkhhbmRsZXI7CisjZW5kaWYKKworQGVu
ZAorCiBAY2xhc3MgQVNDQ3JlZGVudGlhbFJlcXVlc3RDb250ZXh0OwogCiBleHRlcm4gTlNTdHJp
bmcgKiBjb25zdCBBU0NBdXRob3JpemF0aW9uUHJlc2VudGF0aW9uQ29udGV4dERhdGFLZXk7CkBA
IC0xMDUsMTYgKzExMiw2NSBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBBU0NTZWN1cml0
eUtleVB1YmxpY0tleUNyZWRlbnRpYWxLaW5kKSB7CiAgICAgQVNDU2VjdXJpdHlLZXlQdWJsaWNL
ZXlDcmVkZW50aWFsS2luZEFzc2VydGlvblBsYWNlaG9sZGVyLAogfTsKIAorQGNsYXNzIEFTQ1B1
YmxpY0tleUNyZWRlbnRpYWxEZXNjcmlwdG9yOworCitAaW50ZXJmYWNlIEFTQ1B1YmxpY0tleUNy
ZWRlbnRpYWxEZXNjcmlwdG9yIDogTlNPYmplY3QgPE5TU2VjdXJlQ29kaW5nPgorCistIChpbnN0
YW5jZXR5cGUpaW5pdFdpdGhDcmVkZW50aWFsSUQ6KE5TRGF0YSAqKWNyZWRlbnRpYWxJRCB0cmFu
c3BvcnRzOihudWxsYWJsZSBOU0FycmF5PE5TU3RyaW5nICo+ICopYWxsb3dlZFRyYW5zcG9ydHM7
CisKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgTlNEYXRhICpjcmVkZW50aWFsSUQ7
CitAcHJvcGVydHkgKG5vbmF0b21pYywgbnVsbGFibGUsIHJlYWRvbmx5KSBOU0FycmF5PE5TU3Ry
aW5nICo+ICp0cmFuc3BvcnRzOworCitAZW5kCisKK0BjbGFzcyBBU0NQdWJsaWNLZXlDcmVkZW50
aWFsRGVzY3JpcHRvcjsKKwordHlwZWRlZiBOU19FTlVNKE5TVUludGVnZXIsIEFTQ1B1YmxpY0tl
eUNyZWRlbnRpYWxLaW5kKSB7CisgICAgQVNDUHVibGljS2V5Q3JlZGVudGlhbEtpbmRQbGF0Zm9y
bSA9IDEsCisgICAgQVNDUHVibGljS2V5Q3JlZGVudGlhbEtpbmRTZWN1cml0eUtleSwKK307CisK
K0BpbnRlcmZhY2UgQVNDUHVibGljS2V5Q3JlZGVudGlhbEFzc2VydGlvbk9wdGlvbnMgOiBOU09i
amVjdCA8TlNTZWN1cmVDb2Rpbmc+CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aEtpbmQ6KEFT
Q1B1YmxpY0tleUNyZWRlbnRpYWxLaW5kKWNyZWRlbnRpYWxLaW5kIHJlbHlpbmdQYXJ0eUlkZW50
aWZpZXI6KE5TU3RyaW5nICopcmVseWluZ1BhcnR5SWRlbnRpZmllciBjaGFsbGVuZ2U6KE5TRGF0
YSAqKWNoYWxsZW5nZSB1c2VyVmVyaWZpY2F0aW9uUHJlZmVyZW5jZToobnVsbGFibGUgTlNTdHJp
bmcgKil1c2VyVmVyaWZpY2F0aW9uUHJlZmVyZW5jZSBhbGxvd2VkQ3JlZGVudGlhbHM6KG51bGxh
YmxlIE5TQXJyYXk8QVNDUHVibGljS2V5Q3JlZGVudGlhbERlc2NyaXB0b3IgKj4gKilhbGxvd2Vk
Q3JlZGVudGlhbHM7CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aEtpbmQ6KEFTQ1B1YmxpY0tl
eUNyZWRlbnRpYWxLaW5kKWNyZWRlbnRpYWxLaW5kIHJlbHlpbmdQYXJ0eUlkZW50aWZpZXI6KE5T
U3RyaW5nICopcmVseWluZ1BhcnR5SWRlbnRpZmllciBjbGllbnREYXRhSGFzaDooTlNEYXRhICop
Y2xpZW50RGF0YUhhc2ggdXNlclZlcmlmaWNhdGlvblByZWZlcmVuY2U6KG51bGxhYmxlIE5TU3Ry
aW5nICopdXNlclZlcmlmaWNhdGlvblByZWZlcmVuY2UgYWxsb3dlZENyZWRlbnRpYWxzOihudWxs
YWJsZSBOU0FycmF5PEFTQ1B1YmxpY0tleUNyZWRlbnRpYWxEZXNjcmlwdG9yICo+ICopYWxsb3dl
ZENyZWRlbnRpYWxzOworCitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEFTQ1B1Ymxp
Y0tleUNyZWRlbnRpYWxLaW5kIGNyZWRlbnRpYWxLaW5kOworQHByb3BlcnR5IChub25hdG9taWMs
IGNvcHksIHJlYWRvbmx5KSBOU1N0cmluZyAqcmVseWluZ1BhcnR5SWRlbnRpZmllcjsKK0Bwcm9w
ZXJ0eSAobm9uYXRvbWljLCBudWxsYWJsZSwgY29weSwgcmVhZG9ubHkpIE5TRGF0YSAqY2hhbGxl
bmdlOworLy8gSWYgY2xpZW50RGF0YUhhc2ggaXMgbnVsbCwgdGhlbiBnZXRzIGdlbmVyYXRlZCBm
cm9tIGNoYWxsZW5nZSBhbmQgcmVseWluZ1BhcnR5SWRlbnRpZmllci4KK0Bwcm9wZXJ0eSAobm9u
YXRvbWljLCBudWxsYWJsZSwgY29weSkgTlNEYXRhICpjbGllbnREYXRhSGFzaDsKK0Bwcm9wZXJ0
eSAobm9uYXRvbWljLCBudWxsYWJsZSwgcmVhZG9ubHksIGNvcHkpIE5TU3RyaW5nICp1c2VyVmVy
aWZpY2F0aW9uUHJlZmVyZW5jZTsKKworQHByb3BlcnR5IChub25hdG9taWMsIG51bGxhYmxlLCBy
ZWFkb25seSwgY29weSkgTlNBcnJheTxBU0NQdWJsaWNLZXlDcmVkZW50aWFsRGVzY3JpcHRvciAq
PiAqYWxsb3dlZENyZWRlbnRpYWxzOworCitAZW5kCisKKwordHlwZWRlZiBOU19PUFRJT05TKE5T
VUludGVnZXIsIEFTQ0NyZWRlbnRpYWxSZXF1ZXN0VHlwZXMpIHsKKyAgICBBU0NDcmVkZW50aWFs
UmVxdWVzdFR5cGVOb25lID0gMCwKKyAgICBBU0NDcmVkZW50aWFsUmVxdWVzdFR5cGVQYXNzd29y
ZCA9IDEgPDwgMCwKKyAgICBBU0NDcmVkZW50aWFsUmVxdWVzdFR5cGVBcHBsZUlEID0gMSA8PCAx
LAorICAgIEFTQ0NyZWRlbnRpYWxSZXF1ZXN0VHlwZVBsYXRmb3JtUHVibGljS2V5UmVnaXN0cmF0
aW9uID0gMSA8PCAyLAorICAgIEFTQ0NyZWRlbnRpYWxSZXF1ZXN0VHlwZVBsYXRmb3JtUHVibGlj
S2V5QXNzZXJ0aW9uID0gMSA8PCAzLAorICAgIEFTQ0NyZWRlbnRpYWxSZXF1ZXN0VHlwZVNlY3Vy
aXR5S2V5UHVibGljS2V5UmVnaXN0cmF0aW9uID0gMSA8PCA0LAorICAgIEFTQ0NyZWRlbnRpYWxS
ZXF1ZXN0VHlwZVNlY3VyaXR5S2V5UHVibGljS2V5QXNzZXJ0aW9uID0gMSA8PCA1LAorfTsKKwog
QGludGVyZmFjZSBBU0NQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zIDogTlNPYmpl
Y3QgPE5TU2VjdXJlQ29kaW5nPgogCi1AcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgTlNEYXRh
ICpjaGFsbGVuZ2U7CitAcHJvcGVydHkgKG5vbmF0b21pYywgbnVsbGFibGUsIGNvcHkpIE5TRGF0
YSAqY2hhbGxlbmdlOworQHByb3BlcnR5IChub25hdG9taWMsIG51bGxhYmxlLCBjb3B5KSBOU0Rh
dGEgKmNsaWVudERhdGFIYXNoOwogQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIE5TU3RyaW5n
ICpyZWx5aW5nUGFydHlJZGVudGlmaWVyOwogQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIE5T
U3RyaW5nICp1c2VyTmFtZTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSBOU0RhdGEgKnVz
ZXJJZGVudGlmaWVyOwogQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIE5TU3RyaW5nICp1c2Vy
RGlzcGxheU5hbWU7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgTlNBcnJheTxOU051bWJl
ciAqPiAqc3VwcG9ydGVkQWxnb3JpdGhtSWRlbnRpZmllcnM7CitAcHJvcGVydHkgKG5vbmF0b21p
YywgbnVsbGFibGUsIGNvcHkpIE5TU3RyaW5nICp1c2VyVmVyaWZpY2F0aW9uUHJlZmVyZW5jZTsK
IAogQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgc2hvdWxkUmVxdWlyZVJlc2lkZW50S2V5Owor
QHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIE5TQXJyYXk8QVNDUHVibGljS2V5Q3JlZGVudGlh
bERlc2NyaXB0b3IgKj4gKmV4Y2x1ZGVkQ3JlZGVudGlhbHM7CiAKIEBlbmQKIApAQCAtMTQ5LDEw
ICsyMDUsMTE1IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIEFTQ1NlY3VyaXR5S2V5UHVi
bGljS2V5Q3JlZGVudGlhbEtpbmQpIHsKIAogQGVuZAogCitAaW50ZXJmYWNlIEFTQ0NyZWRlbnRp
YWxSZXF1ZXN0Q29udGV4dCA6IE5TT2JqZWN0IDxOU1NlY3VyZUNvZGluZz4KKworLSAoaW5zdGFu
Y2V0eXBlKWluaXQgTlNfVU5BVkFJTEFCTEU7CisrIChpbnN0YW5jZXR5cGUpbmV3IE5TX1VOQVZB
SUxBQkxFOworCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhSZXF1ZXN0VHlwZXM6KEFTQ0NyZWRl
bnRpYWxSZXF1ZXN0VHlwZXMpcmVxdWVzdFR5cGVzOworCitAcHJvcGVydHkgKG5vbmF0b21pYywg
cmVhZG9ubHkpIE5TVUludGVnZXIgcmVxdWVzdFR5cGVzOworQHByb3BlcnR5IChub25hdG9taWMs
IG51bGxhYmxlLCBjb3B5KSBOU1N0cmluZyAqcmVseWluZ1BhcnR5SWRlbnRpZmllcjsKKworQHBy
b3BlcnR5IChub25hdG9taWMsIG51bGxhYmxlLCBjb3B5KSBBU0NQdWJsaWNLZXlDcmVkZW50aWFs
Q3JlYXRpb25PcHRpb25zICpwbGF0Zm9ybUtleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM7CitA
cHJvcGVydHkgKG5vbmF0b21pYywgbnVsbGFibGUsIGNvcHkpIEFTQ1B1YmxpY0tleUNyZWRlbnRp
YWxDcmVhdGlvbk9wdGlvbnMgKnNlY3VyaXR5S2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uczsK
KworQHByb3BlcnR5IChub25hdG9taWMsIG51bGxhYmxlLCBjb3B5KSBBU0NQdWJsaWNLZXlDcmVk
ZW50aWFsQXNzZXJ0aW9uT3B0aW9ucyAqcGxhdGZvcm1LZXlDcmVkZW50aWFsQXNzZXJ0aW9uT3B0
aW9uczsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBudWxsYWJsZSwgY29weSkgQVNDUHVibGljS2V5
Q3JlZGVudGlhbEFzc2VydGlvbk9wdGlvbnMgKnNlY3VyaXR5S2V5Q3JlZGVudGlhbEFzc2VydGlv
bk9wdGlvbnM7CisKK0BlbmQKKwogQHByb3RvY29sIEFTQ0NyZWRlbnRpYWxQcm90b2NvbCA8TlNP
YmplY3QsIE5TU2VjdXJlQ29kaW5nPgogCiBAZW5kCiAKK0BjbGFzcyBfV0tBdXRoZW50aWNhdG9y
QXR0ZXN0YXRpb25SZXNwb25zZTsKKworQGludGVyZmFjZSBBU0NQbGF0Zm9ybVB1YmxpY0tleUNy
ZWRlbnRpYWxSZWdpc3RyYXRpb24gOiBOU09iamVjdCA8QVNDQ3JlZGVudGlhbFByb3RvY29sPgor
CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhSZWx5aW5nUGFydHlJZGVudGlmaWVyOihOU1N0cmlu
ZyAqKXJlbHlpbmdQYXJ0eUlkZW50aWZpZXIgYXR0ZXN0YXRpb25PYmplY3Q6KE5TRGF0YSAqKWF0
dGVzdGF0aW9uT2JqZWN0IHJhd0NsaWVudERhdGFKU09OOihOU0RhdGEgKilyYXdDbGllbnREYXRh
SlNPTiBjcmVkZW50aWFsSUQ6KE5TRGF0YSAqKWNyZWRlbnRpYWxJRDsKKworLSAoaW5zdGFuY2V0
eXBlKWluaXRXaXRoUmVseWluZ1BhcnR5SWRlbnRpZmllcjooTlNTdHJpbmcgKilyZWx5aW5nUGFy
dHlJZGVudGlmaWVyIGF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlOihfV0tBdXRoZW50
aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZSAqKWF0dGVzdGF0aW9uUmVzcG9uc2UgcmF3Q2xpZW50
RGF0YUpTT046KE5TRGF0YSAqKXJhd0NsaWVudERhdGFKU09OOworCitAcHJvcGVydHkgKG5vbmF0
b21pYywgY29weSwgcmVhZG9ubHkpIE5TRGF0YSAqY3JlZGVudGlhbElEOworQHByb3BlcnR5IChu
b25hdG9taWMsIGNvcHksIHJlYWRvbmx5KSBOU1N0cmluZyAqcmVseWluZ1BhcnR5SWRlbnRpZmll
cjsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5LCByZWFkb25seSkgTlNEYXRhICphdHRlc3Rh
dGlvbk9iamVjdDsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5LCByZWFkb25seSkgTlNEYXRh
ICpyYXdDbGllbnREYXRhSlNPTjsKKworKyAoaW5zdGFuY2V0eXBlKW5ldyBOU19VTkFWQUlMQUJM
RTsKKy0gKGluc3RhbmNldHlwZSlpbml0IE5TX1VOQVZBSUxBQkxFOworCitAZW5kCisKK0BpbnRl
cmZhY2UgQVNDU2VjdXJpdHlLZXlQdWJsaWNLZXlDcmVkZW50aWFsUmVnaXN0cmF0aW9uIDogTlNP
YmplY3QgPEFTQ0NyZWRlbnRpYWxQcm90b2NvbD4KKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRo
UmVseWluZ1BhcnR5SWRlbnRpZmllcjooTlNTdHJpbmcgKilyZWx5aW5nUGFydHlJZGVudGlmaWVy
IGF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlOihfV0tBdXRoZW50aWNhdG9yQXR0ZXN0
YXRpb25SZXNwb25zZSAqKWF0dGVzdGF0aW9uUmVzcG9uc2U7CisKK0Bwcm9wZXJ0eSAobm9uYXRv
bWljLCBjb3B5LCByZWFkb25seSkgTlNEYXRhICpjcmVkZW50aWFsSUQ7CitAcHJvcGVydHkgKG5v
bmF0b21pYywgY29weSwgcmVhZG9ubHkpIE5TRGF0YSAqcmF3Q2xpZW50RGF0YUpTT047CitAcHJv
cGVydHkgKG5vbmF0b21pYywgY29weSwgcmVhZG9ubHkpIE5TU3RyaW5nICpyZWx5aW5nUGFydHlJ
ZGVudGlmaWVyOworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHksIHJlYWRvbmx5KSBOU0RhdGEg
KmF0dGVzdGF0aW9uT2JqZWN0OworCitAZW5kCisKK0BjbGFzcyBfV0tBdXRoZW50aWNhdG9yQXNz
ZXJ0aW9uUmVzcG9uc2U7CisKK0BpbnRlcmZhY2UgQVNDUGxhdGZvcm1QdWJsaWNLZXlDcmVkZW50
aWFsQXNzZXJ0aW9uIDogTlNPYmplY3QgPEFTQ0NyZWRlbnRpYWxQcm90b2NvbD4KKworLSAoaW5z
dGFuY2V0eXBlKWluaXRXaXRoUmVseWluZ1BhcnR5SWRlbnRpZmllcjooTlNTdHJpbmcgKilyZWx5
aW5nUGFydHlJZGVudGlmaWVyIGF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTooX1dLQXV0
aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlICopYXNzZXJ0aW9uUmVzcG9uc2U7CisKK0Bwcm9w
ZXJ0eSAobm9uYXRvbWljLCBjb3B5LCByZWFkb25seSkgTlNEYXRhICpjcmVkZW50aWFsSUQ7CitA
cHJvcGVydHkgKG5vbmF0b21pYywgY29weSwgcmVhZG9ubHkpIE5TRGF0YSAqcmF3Q2xpZW50RGF0
YUpTT047CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSwgcmVhZG9ubHkpIE5TU3RyaW5nICpy
ZWx5aW5nUGFydHlJZGVudGlmaWVyOworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHksIHJlYWRv
bmx5KSBOU0RhdGEgKmF1dGhlbnRpY2F0b3JEYXRhOworQHByb3BlcnR5IChub25hdG9taWMsIGNv
cHksIHJlYWRvbmx5KSBOU0RhdGEgKnNpZ25hdHVyZTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBj
b3B5LCByZWFkb25seSwgbnVsbGFibGUpIE5TRGF0YSAqdXNlckhhbmRsZTsKKworQGVuZAorCitA
aW50ZXJmYWNlIEFTQ1NlY3VyaXR5S2V5UHVibGljS2V5Q3JlZGVudGlhbEFzc2VydGlvbiA6IE5T
T2JqZWN0IDxBU0NDcmVkZW50aWFsUHJvdG9jb2w+CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0
aFJlbHlpbmdQYXJ0eUlkZW50aWZpZXI6KE5TU3RyaW5nICopcmVseWluZ1BhcnR5SWRlbnRpZmll
ciBhdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6KF9XS0F1dGhlbnRpY2F0b3JBc3NlcnRp
b25SZXNwb25zZSAqKWFzc2VydGlvblJlc3BvbnNlOworCitAcHJvcGVydHkgKG5vbmF0b21pYywg
Y29weSwgcmVhZG9ubHkpIE5TRGF0YSAqY3JlZGVudGlhbElEOworQHByb3BlcnR5IChub25hdG9t
aWMsIGNvcHksIHJlYWRvbmx5KSBOU1N0cmluZyAqcmVseWluZ1BhcnR5SWRlbnRpZmllcjsKK0Bw
cm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5LCByZWFkb25seSkgTlNEYXRhICphdXRoZW50aWNhdG9y
RGF0YTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5LCByZWFkb25seSkgTlNEYXRhICpzaWdu
YXR1cmU7CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSwgcmVhZG9ubHksIG51bGxhYmxlKSBO
U0RhdGEgKnVzZXJIYW5kbGU7CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSwgcmVhZG9ubHkp
IE5TRGF0YSAqcmF3Q2xpZW50RGF0YUpTT047CisKK0BlbmQKKworQHByb3RvY29sIEFTQ0FnZW50
UHJvdG9jb2wgPE5TT2JqZWN0PgorCisjaWYgVEFSR0VUX09TX0lPUyAmJiAhVEFSR0VUX09TX01B
Q0NBVEFMWVNUCistICh2b2lkKXBlcmZvcm1BdXRob3JpemF0aW9uUmVxdWVzdHNGb3JDb250ZXh0
OihBU0NDcmVkZW50aWFsUmVxdWVzdENvbnRleHQgKiljb250ZXh0IHdpdGhDb21wbGV0aW9uSGFu
ZGxlcjoodm9pZCAoXikoaWQgPEFTQ0NyZWRlbnRpYWxQcm90b2NvbD4gX051bGxhYmxlIGNyZWRl
bnRpYWwsIE5TRXJyb3IgKiBfTnVsbGFibGUgZXJyb3IpKWNvbXBsZXRpb25IYW5kbGVyOworI2Vs
aWYgVEFSR0VUX09TX09TWCB8fCBUQVJHRVRfT1NfTUFDQ0FUQUxZU1QKKy0gKHZvaWQpcGVyZm9y
bUF1dGhvcml6YXRpb25SZXF1ZXN0c0ZvckNvbnRleHQ6KEFTQ0NyZWRlbnRpYWxSZXF1ZXN0Q29u
dGV4dCAqKWNvbnRleHQgd2l0aENsZWFyYW5jZUhhbmRsZXI6KHZvaWQgKF4pKE5TWFBDTGlzdGVu
ZXJFbmRwb2ludCAqIF9OdWxsYWJsZSBkYWVtb25FbmRwb2ludCwgTlNFcnJvciAqIF9OdWxsYWJs
ZSBlcnJvcikpY2xlYXJhbmNlSGFuZGxlcjsKKworLSAodm9pZCliZWdpbkF1dGhvcml6YXRpb25G
b3JBcHBsaWNhdGlvbklkZW50aWZpZXI6KE5TU3RyaW5nICopYXBwbGljYXRpb25JZGVudGlmaWVy
IGZyb21FbmRwb2ludDooTlNYUENMaXN0ZW5lckVuZHBvaW50ICopbGlzdGVuZXJFbmRwb2ludDsK
KworLSAodm9pZCl1c2VyU2VsZWN0ZWRMb2dpbkNob2ljZTooaWQgPEFTQ0xvZ2luQ2hvaWNlUHJv
dG9jb2w+KWxvZ2luQ2hvaWNlIGF1dGhlbnRpY2F0ZWRDb250ZXh0OihMQUNvbnRleHQgKiljb250
ZXh0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShpZCA8QVNDQ3JlZGVudGlhbFByb3RvY29s
PiBfTnVsbGFibGUsIE5TRXJyb3IgKiBfTnVsbGFibGUpKWNvbXBsZXRpb25IYW5kbGVyOworCist
ICh2b2lkKXJlcXVlc3RDb21wbGV0ZWRXaXRoQ3JlZGVudGlhbDoobnVsbGFibGUgaWQ8QVNDQ3Jl
ZGVudGlhbFByb3RvY29sPiljcmVkZW50aWFsIGVycm9yOihudWxsYWJsZSBOU0Vycm9yICopZXJy
b3I7CisjZW5kaWYKKworQGVuZAorCitAaW50ZXJmYWNlIEFTQ0FnZW50UHJveHkgOiBOU09iamVj
dCA8QVNDQWdlbnRQcm90b2NvbD4KKworLSAoaW5zdGFuY2V0eXBlKWluaXQ7CisKKyNpZiBUQVJH
RVRfT1NfT1NYCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhFbmRwb2ludDooTlNYUENMaXN0ZW5l
ckVuZHBvaW50ICopZW5kcG9pbnQ7CisjZW5kaWYKKworLSAodm9pZClpbnZhbGlkYXRlOworCist
ICh2b2lkKXJlY29ubmVjdElmTmVjZXNzYXJ5OworCitAZW5kCisKIC8vIEZJWE1FKDIxOTc2Nyk6
IFJlbW92ZSBBU0NBcHBsZUlEQ3JlZGVudGlhbC4KIEBpbnRlcmZhY2UgQVNDQXBwbGVJRENyZWRl
bnRpYWwgOiBOU09iamVjdCA8QVNDQ3JlZGVudGlhbFByb3RvY29sPgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5l
bC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNh
dGlvblBhbmVsLm1tCmluZGV4IGU1ZjlkNmU0ZjcxMWNmYWQwMTgxM2Y1NGEyNDgxMjBlN2NjZjMw
ZjYuLjRiOTE0ZTQwMTRjM2JhZTg1ODNkMzc4MTEyNmMxMTZiMGY4ODVkMzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBh
bmVsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRo
ZW50aWNhdGlvblBhbmVsLm1tCkBAIC04Nyw3ICs4Nyw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNE
YXRhPiBwcm9kdWNlQ2xpZW50RGF0YUpzb24oX1dLV2ViQXV0aGVudGljYXRpb25UeXBlIHR5cGUs
IE5TCiAgICAgYXV0byBjaGFsbGVuZ2VCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGNoYWxsZW5nZS5ieXRlcyksIGNoYWxsZW5n
ZS5sZW5ndGgpOwogICAgIGF1dG8gc2VjdXJpdHlPcmlnaW4gPSBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhvcmlnaW4pOwogCi0gICAgYXV0byBjbGllbnREYXRhSnNv
biA9IGJ1aWxkQ2xpZW50RGF0YUpzb24oY2xpZW50RGF0YVR5cGUsIFdlYkNvcmU6OkJ1ZmZlclNv
dXJjZShjaGFsbGVuZ2VCdWZmZXIpLCBzZWN1cml0eU9yaWdpbik7CisgICAgYXV0byBjbGllbnRE
YXRhSnNvbiA9IGJ1aWxkQ2xpZW50RGF0YUpzb24oY2xpZW50RGF0YVR5cGUsIFdlYkNvcmU6OkJ1
ZmZlclNvdXJjZShjaGFsbGVuZ2VCdWZmZXIpLCBzZWN1cml0eU9yaWdpbiwgV2ViQXV0aG46OlNj
b3BlOjpTYW1lT3JpZ2luKTsKICAgICByZXR1cm4gYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5p
dFdpdGhCeXRlczpjbGllbnREYXRhSnNvbi0+ZGF0YSgpIGxlbmd0aDpjbGllbnREYXRhSnNvbi0+
Ynl0ZUxlbmd0aCgpXSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV2Vi
QXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkubW0KaW5kZXggM2YwOWMwZDcwMDBkMzBmNmQ0
MDNhYTM3MjljOWE5OGRkMjkyNGI5NC4uZWQzMmM4YjQzYjEzZmRhN2U4ODQwNzY0YmZmM2U4MWQ3
Nzk0NTMwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGlj
YXRvckNvb3JkaW5hdG9yUHJveHkubW0KQEAgLTUwLDYgKzUwLDExIEBAIHN0YXRpYyBpbmxpbmUg
UmVmPEFycmF5QnVmZmVyPiB0b0FycmF5QnVmZmVyKE5TRGF0YSAqZGF0YSkKICAgICByZXR1cm4g
QXJyYXlCdWZmZXI6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRh
LmJ5dGVzKSwgZGF0YS5sZW5ndGgpOwogfQogCitzdGF0aWMgaW5saW5lIFJldGFpblB0cjxOU0Rh
dGE+IHRvTlNEYXRhKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkKK3sKKyAgICByZXR1cm4g
YWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCeXRlczpkYXRhLmRhdGEoKSBsZW5ndGg6
ZGF0YS5zaXplKCldKTsKK30KKwogc3RhdGljIGlubGluZSBSZXRhaW5QdHI8TlNTdHJpbmc+IHRv
TlNTdHJpbmcoVXNlclZlcmlmaWNhdGlvblJlcXVpcmVtZW50IHVzZXJWZXJpZmljYXRpb25SZXF1
aXJlbWVudCkKIHsKICAgICBzd2l0Y2ggKHVzZXJWZXJpZmljYXRpb25SZXF1aXJlbWVudCkgewpA
QCAtMTQ1LDcgKzE1MCw3IEBAIHN0YXRpYyBpbmxpbmUgUmV0YWluUHRyPEFTQ1B1YmxpY0tleUNy
ZWRlbnRpYWxEZXNjcmlwdG9yPiB0b0FTQ0Rlc2NyaXB0b3IoUHVibGljCiAgICAgcmV0dXJuIGFk
b3B0TlMoW2FsbG9jQVNDUHVibGljS2V5Q3JlZGVudGlhbERlc2NyaXB0b3JJbnN0YW5jZSgpIGlu
aXRXaXRoQ3JlZGVudGlhbElEOldlYkNvcmU6OnRvTlNEYXRhKGRlc2NyaXB0b3IuaWQpLmdldCgp
IHRyYW5zcG9ydHM6dHJhbnNwb3J0cy5nZXQoKV0pOwogfQogCi1zdGF0aWMgUmV0YWluUHRyPEFT
Q0NyZWRlbnRpYWxSZXF1ZXN0Q29udGV4dD4gY29uZmlndXJlUmVnaXN0cmF0aW9uUmVxdWVzdENv
bnRleHQoY29uc3QgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyYgb3B0aW9ucykK
K3N0YXRpYyBSZXRhaW5QdHI8QVNDQ3JlZGVudGlhbFJlcXVlc3RDb250ZXh0PiBjb25maWd1cmVS
ZWdpc3RyYXRpb25SZXF1ZXN0Q29udGV4dChjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRp
b25PcHRpb25zJiBvcHRpb25zLCBWZWN0b3I8dWludDhfdD4gaGFzaCkKIHsKICAgICBBU0NDcmVk
ZW50aWFsUmVxdWVzdFR5cGVzIHJlcXVlc3RUeXBlcyA9IEFTQ0NyZWRlbnRpYWxSZXF1ZXN0VHlw
ZVBsYXRmb3JtUHVibGljS2V5UmVnaXN0cmF0aW9uIHwgQVNDQ3JlZGVudGlhbFJlcXVlc3RUeXBl
U2VjdXJpdHlLZXlQdWJsaWNLZXlSZWdpc3RyYXRpb247CiAKQEAgLTE2OSw3ICsxNzQsMTAgQEAg
c3RhdGljIFJldGFpblB0cjxBU0NDcmVkZW50aWFsUmVxdWVzdENvbnRleHQ+IGNvbmZpZ3VyZVJl
Z2lzdHJhdGlvblJlcXVlc3RDb250ZXgKIAogICAgIGF1dG8gY3JlZGVudGlhbENyZWF0aW9uT3B0
aW9ucyA9IGFkb3B0TlMoW2FsbG9jQVNDUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9u
c0luc3RhbmNlKCkgaW5pdF0pOwogCi0gICAgW2NyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMgc2V0
Q2hhbGxlbmdlOldlYkNvcmU6OnRvTlNEYXRhKG9wdGlvbnMuY2hhbGxlbmdlKS5nZXQoKV07Cisg
ICAgaWYgKFtjcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2Vs
ZWN0b3Ioc2V0Q2xpZW50RGF0YUhhc2g6KV0pCisgICAgICAgIFtjcmVkZW50aWFsQ3JlYXRpb25P
cHRpb25zIHNldENsaWVudERhdGFIYXNoOnRvTlNEYXRhKGhhc2gpLmdldCgpXTsKKyAgICBlbHNl
CisgICAgICAgIFtjcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zIHNldENoYWxsZW5nZTpXZWJDb3Jl
Ojp0b05TRGF0YShvcHRpb25zLmNoYWxsZW5nZSkuZ2V0KCldOwogICAgIFtjcmVkZW50aWFsQ3Jl
YXRpb25PcHRpb25zIHNldFJlbHlpbmdQYXJ0eUlkZW50aWZpZXI6b3B0aW9ucy5ycC5pZF07CiAg
ICAgW2NyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMgc2V0VXNlck5hbWU6b3B0aW9ucy51c2VyLm5h
bWVdOwogICAgIFtjcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zIHNldFVzZXJJZGVudGlmaWVyOldl
YkNvcmU6OnRvTlNEYXRhKG9wdGlvbnMudXNlci5pZCkuZ2V0KCldOwpAQCAtMjAyLDcgKzIxMCw3
IEBAIHN0YXRpYyBSZXRhaW5QdHI8QVNDQ3JlZGVudGlhbFJlcXVlc3RDb250ZXh0PiBjb25maWd1
cmVSZWdpc3RyYXRpb25SZXF1ZXN0Q29udGV4CiAgICAgcmV0dXJuIHJlcXVlc3RDb250ZXh0Owog
fQogCi1zdGF0aWMgUmV0YWluUHRyPEFTQ0NyZWRlbnRpYWxSZXF1ZXN0Q29udGV4dD4gY29uZmln
dXJhdGlvbkFzc2VydGlvblJlcXVlc3RDb250ZXh0KGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxS
ZXF1ZXN0T3B0aW9ucyYgb3B0aW9ucykKK3N0YXRpYyBSZXRhaW5QdHI8QVNDQ3JlZGVudGlhbFJl
cXVlc3RDb250ZXh0PiBjb25maWd1cmF0aW9uQXNzZXJ0aW9uUmVxdWVzdENvbnRleHQoY29uc3Qg
UHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zJiBvcHRpb25zLCBWZWN0b3I8dWludDhf
dD4gaGFzaCkKIHsKICAgICBBU0NDcmVkZW50aWFsUmVxdWVzdFR5cGVzIHJlcXVlc3RUeXBlcyA9
IEFTQ0NyZWRlbnRpYWxSZXF1ZXN0VHlwZVBsYXRmb3JtUHVibGljS2V5QXNzZXJ0aW9uIHwgQVND
Q3JlZGVudGlhbFJlcXVlc3RUeXBlU2VjdXJpdHlLZXlQdWJsaWNLZXlBc3NlcnRpb247CiAKQEAg
LTIyNywxMyArMjM1LDMwIEBAIHN0YXRpYyBSZXRhaW5QdHI8QVNDQ3JlZGVudGlhbFJlcXVlc3RD
b250ZXh0PiBjb25maWd1cmF0aW9uQXNzZXJ0aW9uUmVxdWVzdENvbnRlCiAgICAgYXV0byByZXF1
ZXN0Q29udGV4dCA9IGFkb3B0TlMoW2FsbG9jQVNDQ3JlZGVudGlhbFJlcXVlc3RDb250ZXh0SW5z
dGFuY2UoKSBpbml0V2l0aFJlcXVlc3RUeXBlczpyZXF1ZXN0VHlwZXNdKTsKICAgICBbcmVxdWVz
dENvbnRleHQgc2V0UmVseWluZ1BhcnR5SWRlbnRpZmllcjpvcHRpb25zLnJwSWRdOwogCi0gICAg
YXV0byBjaGFsbGVuZ2UgPSBXZWJDb3JlOjp0b05TRGF0YShvcHRpb25zLmNoYWxsZW5nZSk7Cisg
ICAgaWYgKHJlcXVlc3RUeXBlcyAmIEFTQ0NyZWRlbnRpYWxSZXF1ZXN0VHlwZVBsYXRmb3JtUHVi
bGljS2V5QXNzZXJ0aW9uKSB7CisgICAgICAgIGF1dG8gYXNzZXJ0aW9uT3B0aW9ucyA9IGFkb3B0
TlMoYWxsb2NBU0NQdWJsaWNLZXlDcmVkZW50aWFsQXNzZXJ0aW9uT3B0aW9uc0luc3RhbmNlKCkp
OworICAgICAgICBpZiAoW2Fzc2VydGlvbk9wdGlvbnMgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxl
Y3Rvcihpbml0V2l0aEtpbmQ6cmVseWluZ1BhcnR5SWRlbnRpZmllcjpjbGllbnREYXRhSGFzaDp1
c2VyVmVyaWZpY2F0aW9uUHJlZmVyZW5jZTphbGxvd2VkQ3JlZGVudGlhbHM6KV0pIHsKKyAgICAg
ICAgICAgIGF1dG8gbnNIYXNoID0gdG9OU0RhdGEoaGFzaCk7CisgICAgICAgICAgICBbYXNzZXJ0
aW9uT3B0aW9ucyBpbml0V2l0aEtpbmQ6QVNDUHVibGljS2V5Q3JlZGVudGlhbEtpbmRQbGF0Zm9y
bSByZWx5aW5nUGFydHlJZGVudGlmaWVyOm9wdGlvbnMucnBJZCBjbGllbnREYXRhSGFzaDpuc0hh
c2guZ2V0KCkgdXNlclZlcmlmaWNhdGlvblByZWZlcmVuY2U6dXNlclZlcmlmaWNhdGlvbi5nZXQo
KSBhbGxvd2VkQ3JlZGVudGlhbHM6YWxsb3dlZENyZWRlbnRpYWxzLmdldCgpXTsKKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgIGF1dG8gY2hhbGxlbmdlID0gV2ViQ29yZTo6dG9OU0RhdGEo
b3B0aW9ucy5jaGFsbGVuZ2UpOworICAgICAgICAgICAgW2Fzc2VydGlvbk9wdGlvbnMgaW5pdFdp
dGhLaW5kOkFTQ1B1YmxpY0tleUNyZWRlbnRpYWxLaW5kUGxhdGZvcm0gcmVseWluZ1BhcnR5SWRl
bnRpZmllcjpvcHRpb25zLnJwSWQgY2hhbGxlbmdlOmNoYWxsZW5nZS5nZXQoKSB1c2VyVmVyaWZp
Y2F0aW9uUHJlZmVyZW5jZTp1c2VyVmVyaWZpY2F0aW9uLmdldCgpIGFsbG93ZWRDcmVkZW50aWFs
czphbGxvd2VkQ3JlZGVudGlhbHMuZ2V0KCldOworICAgICAgICB9CiAKLSAgICBpZiAocmVxdWVz
dFR5cGVzICYgQVNDQ3JlZGVudGlhbFJlcXVlc3RUeXBlUGxhdGZvcm1QdWJsaWNLZXlBc3NlcnRp
b24pCi0gICAgICAgIFtyZXF1ZXN0Q29udGV4dCBzZXRQbGF0Zm9ybUtleUNyZWRlbnRpYWxBc3Nl
cnRpb25PcHRpb25zOlthbGxvY0FTQ1B1YmxpY0tleUNyZWRlbnRpYWxBc3NlcnRpb25PcHRpb25z
SW5zdGFuY2UoKSBpbml0V2l0aEtpbmQ6QVNDUHVibGljS2V5Q3JlZGVudGlhbEtpbmRQbGF0Zm9y
bSByZWx5aW5nUGFydHlJZGVudGlmaWVyOm9wdGlvbnMucnBJZCBjaGFsbGVuZ2U6Y2hhbGxlbmdl
LmdldCgpIHVzZXJWZXJpZmljYXRpb25QcmVmZXJlbmNlOnVzZXJWZXJpZmljYXRpb24uZ2V0KCkg
YWxsb3dlZENyZWRlbnRpYWxzOmFsbG93ZWRDcmVkZW50aWFscy5nZXQoKV1dOworICAgICAgICBb
cmVxdWVzdENvbnRleHQgc2V0UGxhdGZvcm1LZXlDcmVkZW50aWFsQXNzZXJ0aW9uT3B0aW9uczph
c3NlcnRpb25PcHRpb25zLmdldCgpXTsKKyAgICB9CiAKLSAgICBpZiAocmVxdWVzdFR5cGVzICYg
QVNDQ3JlZGVudGlhbFJlcXVlc3RUeXBlU2VjdXJpdHlLZXlQdWJsaWNLZXlBc3NlcnRpb24pCi0g
ICAgICAgIFtyZXF1ZXN0Q29udGV4dCBzZXRTZWN1cml0eUtleUNyZWRlbnRpYWxBc3NlcnRpb25P
cHRpb25zOlthbGxvY0FTQ1B1YmxpY0tleUNyZWRlbnRpYWxBc3NlcnRpb25PcHRpb25zSW5zdGFu
Y2UoKSBpbml0V2l0aEtpbmQ6QVNDUHVibGljS2V5Q3JlZGVudGlhbEtpbmRTZWN1cml0eUtleSBy
ZWx5aW5nUGFydHlJZGVudGlmaWVyOm9wdGlvbnMucnBJZCBjaGFsbGVuZ2U6Y2hhbGxlbmdlLmdl
dCgpIHVzZXJWZXJpZmljYXRpb25QcmVmZXJlbmNlOnVzZXJWZXJpZmljYXRpb24uZ2V0KCkgYWxs
b3dlZENyZWRlbnRpYWxzOmFsbG93ZWRDcmVkZW50aWFscy5nZXQoKV1dOworICAgIGlmIChyZXF1
ZXN0VHlwZXMgJiBBU0NDcmVkZW50aWFsUmVxdWVzdFR5cGVTZWN1cml0eUtleVB1YmxpY0tleUFz
c2VydGlvbikgeworICAgICAgICBhdXRvIGFzc2VydGlvbk9wdGlvbnMgPSBhZG9wdE5TKGFsbG9j
QVNDUHVibGljS2V5Q3JlZGVudGlhbEFzc2VydGlvbk9wdGlvbnNJbnN0YW5jZSgpKTsKKyAgICAg
ICAgaWYgKFthc3NlcnRpb25PcHRpb25zIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoaW5p
dFdpdGhLaW5kOnJlbHlpbmdQYXJ0eUlkZW50aWZpZXI6Y2xpZW50RGF0YUhhc2g6dXNlclZlcmlm
aWNhdGlvblByZWZlcmVuY2U6YWxsb3dlZENyZWRlbnRpYWxzOildKSB7CisgICAgICAgICAgICBh
dXRvIG5zSGFzaCA9IHRvTlNEYXRhKGhhc2gpOworICAgICAgICAgICAgW2Fzc2VydGlvbk9wdGlv
bnMgaW5pdFdpdGhLaW5kOkFTQ1B1YmxpY0tleUNyZWRlbnRpYWxLaW5kU2VjdXJpdHlLZXkgcmVs
eWluZ1BhcnR5SWRlbnRpZmllcjpvcHRpb25zLnJwSWQgY2xpZW50RGF0YUhhc2g6bnNIYXNoLmdl
dCgpIHVzZXJWZXJpZmljYXRpb25QcmVmZXJlbmNlOnVzZXJWZXJpZmljYXRpb24uZ2V0KCkgYWxs
b3dlZENyZWRlbnRpYWxzOmFsbG93ZWRDcmVkZW50aWFscy5nZXQoKV07CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICBhdXRvIGNoYWxsZW5nZSA9IFdlYkNvcmU6OnRvTlNEYXRhKG9wdGlv
bnMuY2hhbGxlbmdlKTsKKyAgICAgICAgICAgIFthc3NlcnRpb25PcHRpb25zIGluaXRXaXRoS2lu
ZDpBU0NQdWJsaWNLZXlDcmVkZW50aWFsS2luZFNlY3VyaXR5S2V5IHJlbHlpbmdQYXJ0eUlkZW50
aWZpZXI6b3B0aW9ucy5ycElkIGNoYWxsZW5nZTpjaGFsbGVuZ2UuZ2V0KCkgdXNlclZlcmlmaWNh
dGlvblByZWZlcmVuY2U6dXNlclZlcmlmaWNhdGlvbi5nZXQoKSBhbGxvd2VkQ3JlZGVudGlhbHM6
YWxsb3dlZENyZWRlbnRpYWxzLmdldCgpXTsKKyAgICAgICAgfQorICAgICAgICBbcmVxdWVzdENv
bnRleHQgc2V0U2VjdXJpdHlLZXlDcmVkZW50aWFsQXNzZXJ0aW9uT3B0aW9uczphc3NlcnRpb25P
cHRpb25zLmdldCgpXTsKKyAgICB9CiAKICAgICByZXR1cm4gcmVxdWVzdENvbnRleHQ7CiB9CkBA
IC0yNDIsOSArMjY3LDkgQEAgUmV0YWluUHRyPEFTQ0NyZWRlbnRpYWxSZXF1ZXN0Q29udGV4dD4g
V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6OmNvbnRleHQKIHsKICAgICBSZXRhaW5Q
dHI8QVNDQ3JlZGVudGlhbFJlcXVlc3RDb250ZXh0PiByZXN1bHQ7CiAgICAgV1RGOjpzd2l0Y2hP
bihyZXF1ZXN0RGF0YS5vcHRpb25zLCBbJl0oY29uc3QgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0
aW9uT3B0aW9ucyYgb3B0aW9ucykgewotICAgICAgICByZXN1bHQgPSBjb25maWd1cmVSZWdpc3Ry
YXRpb25SZXF1ZXN0Q29udGV4dChvcHRpb25zKTsKKyAgICAgICAgcmVzdWx0ID0gY29uZmlndXJl
UmVnaXN0cmF0aW9uUmVxdWVzdENvbnRleHQob3B0aW9ucywgcmVxdWVzdERhdGEuaGFzaCk7CiAg
ICAgfSwgWyZdKGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYgb3B0aW9u
cykgewotICAgICAgICByZXN1bHQgPSBjb25maWd1cmF0aW9uQXNzZXJ0aW9uUmVxdWVzdENvbnRl
eHQob3B0aW9ucyk7CisgICAgICAgIHJlc3VsdCA9IGNvbmZpZ3VyYXRpb25Bc3NlcnRpb25SZXF1
ZXN0Q29udGV4dChvcHRpb25zLCByZXF1ZXN0RGF0YS5oYXNoKTsKICAgICB9KTsKICAgICByZXR1
cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGZlYjliN2YxMzQ0N2FlMDFlYmIzZGIxZjhkNDIwZDkzYjJl
ZTM1ZmIuLmE4MWI3NzA1M2JhNDU2NzE4ZjdlZWNkYWIxYzQzOTRjNTRkMWE3NDYgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxOCBAQAorMjAyMS0xMi0xNCAgSiBQYXNjb2UgIDxqX3Bhc2NvZUBhcHBsZS5jb20+
CisKKyAgICAgICAgW1dlYkF1dGhuXSBBbGxvdyBzYW1lLXNpdGUsIGNyb3NzLW9yaWdpbiBpZnJh
bWUgZ2V0KCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzNDMwOQorICAgICAgICByZGFyOi8vcHJvYmxlbS84NjQ4NjMxMworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBsYXlvdXQgdGVzdCBmb3IgV2Vi
QXV0aG4gZ2V0IGFzc2VydGlvbnMgb24gY3Jvc3Mtc2l0ZSwgc2FtZS1zaXRlcyBpLWZyYW1lcyB3
aXRoCisgICAgICAgIHB1YmxpY2tleS1jcmVkZW50aWFscy1nZXQgZmVhdHVyZSBwb2xpY3kuCisK
KyAgICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtc2FtZS1v
cmlnaW4td2l0aC1hbmNlc3RvcnMuaHR0cHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAv
d3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1zYW1lLW9yaWdpbi13aXRoLWFuY2Vz
dG9ycy5odHRwcy5odG1sOgorICAgICAgICAqIGh0dHAvd3B0L3dlYmF1dGhuL3Jlc291cmNlcy91
dGlsLmpzOgorCiAyMDIxLTEyLTE0ICBUeWxlciBXaWxjb2NrICA8dHlsZXJfd0BhcHBsZS5jb20+
CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogdGVzdCB3ZWJwYWdlIGtlZXBzIHJlbG9hZGluZyB3
aGVuIEluc3BlY3RvciBpcyBvcGVuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93
ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtc2FtZS1vcmlnaW4td2l0aC1hbmNlc3RvcnMu
aHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGlj
LWtleS1jcmVkZW50aWFsLXNhbWUtb3JpZ2luLXdpdGgtYW5jZXN0b3JzLmh0dHBzLWV4cGVjdGVk
LnR4dAppbmRleCA2NTMwNjQ1YTE5NGI0NWFjZDA5ODNmYzM3M2I1YWI2ZGE5NWYxNTk4Li5jNzAy
MWQ4MTgxNzAyNDRkNjI0OGJmMDVlZDZhOGU5OWNjODcxM2YxIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtc2FtZS1vcmlnaW4t
d2l0aC1hbmNlc3RvcnMuaHR0cHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAv
d3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1zYW1lLW9yaWdpbi13aXRoLWFuY2Vz
dG9ycy5odHRwcy1leHBlY3RlZC50eHQKQEAgLTIsNCArMiw3IEBACiAKIFBBU1MgVGVzdHMgdGhh
dCBhIGZyYW1lIHRoYXQgZG9lc24ndCBzaGFyZSB0aGUgc2FtZSBvcmlnaW4gd2l0aCBhbGwgaXRz
IGFuY2VzdG9ycyBjb3VsZCBub3QgYWNjZXNzIHRoZSBBUEkuCiBQQVNTIFRlc3RzIHRoYXQgYSBm
cmFtZSB0aGF0IGRvZXNuJ3Qgc2hhcmUgdGhlIHNhbWUgb3JpZ2luIHdpdGggYWxsIGl0cyBhbmNl
c3RvcnMgY291bGQgbm90IGFjY2VzcyB0aGUgQVBJLiAyCitQQVNTIFRlc3RzIHRoYXQgYSBmcmFt
ZSB0aGF0IGlzIHNhbWUtc2l0ZSwgY3Jvc3Mtb3JpZ2luIHdpdGhvdXQgcHVibGlja2V5LWNyZWRl
bnRpYWxzLWdldCBmZWF0dXJlIHBvbGljeSBjYW5ub3QgdXNlIGdldCgpLgorUEFTUyBUZXN0cyB0
aGF0IGEgZnJhbWUgdGhhdCBpcyBzYW1lLXNpdGUsIGNyb3NzLW9yaWdpbiB3aXRoIHB1YmxpY2tl
eS1jcmVkZW50aWFscy1nZXQgZmVhdHVyZSBwb2xpY3kgY2FuIHVzZSBnZXQoKS4KK1BBU1MgVGVz
dHMgdGhhdCBhIGZyYW1lIHRoYXQgaXMgY3Jvc3Mtb3JpZ2luLCBOT1Qgc2FtZS1zaXRlICB3aXRo
IHB1YmxpY2tleS1jcmVkZW50aWFscy1nZXQgZmVhdHVyZSBwb2xpY3kgY2Fubm90IHVzZSBnZXQo
KS4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtl
eS1jcmVkZW50aWFsLXNhbWUtb3JpZ2luLXdpdGgtYW5jZXN0b3JzLmh0dHBzLmh0bWwgYi9MYXlv
dXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtc2FtZS1vcmln
aW4td2l0aC1hbmNlc3RvcnMuaHR0cHMuaHRtbAppbmRleCA0ZjFjNDBkOTFmZTc5MWRiZGUyMDlk
Mjg1MjY1YWUyMDhiNzNkMjMyLi41ODE0NzVlNTIwNTA0ZDA4YTljMWZhNmYyNzgyNmM0ZTI1NTI4
YjYyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5
LWNyZWRlbnRpYWwtc2FtZS1vcmlnaW4td2l0aC1hbmNlc3RvcnMuaHR0cHMuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtc2FtZS1v
cmlnaW4td2l0aC1hbmNlc3RvcnMuaHR0cHMuaHRtbApAQCAtMjIsNiArMjIsMjQgQEAKICAgICAg
ICAgICAgICAgICBhc3NlcnRfZXF1YWxzKG1lc3NhZ2UuZGF0YSwgIlBBU1MuIik7CiAgICAgICAg
ICAgICB9KTsKICAgICAgICAgfSwgIlRlc3RzIHRoYXQgYSBmcmFtZSB0aGF0IGRvZXNuJ3Qgc2hh
cmUgdGhlIHNhbWUgb3JpZ2luIHdpdGggYWxsIGl0cyBhbmNlc3RvcnMgY291bGQgbm90IGFjY2Vz
cyB0aGUgQVBJLiAyIik7CisKKyAgICAgICAgcHJvbWlzZV90ZXN0KHQgPT4geworICAgICAgICAg
ICAgcmV0dXJuIHdpdGhTYW1lU2l0ZUlmcmFtZSgic2FtZXNpdGUtaWZyYW1lLmh0bWwiKS50aGVu
KChtZXNzYWdlKSA9PiB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhtZXNzYWdlLmRh
dGEsICJUaHJvdyBOb3RBbGxvd2VkRXJyb3I6IFRoZSBvcmlnaW4gb2YgdGhlIGRvY3VtZW50IGlz
IG5vdCB0aGUgc2FtZSBhcyBpdHMgYW5jZXN0b3JzLiIpOworICAgICAgICAgICAgfSk7CisgICAg
ICAgIH0sICJUZXN0cyB0aGF0IGEgZnJhbWUgdGhhdCBpcyBzYW1lLXNpdGUsIGNyb3NzLW9yaWdp
biB3aXRob3V0IHB1YmxpY2tleS1jcmVkZW50aWFscy1nZXQgZmVhdHVyZSBwb2xpY3kgY2Fubm90
IHVzZSBnZXQoKS4iKTsKKworICAgICAgICBwcm9taXNlX3Rlc3QodCA9PiB7CisgICAgICAgICAg
ICByZXR1cm4gd2l0aFNhbWVTaXRlSWZyYW1lKCJzYW1lc2l0ZS1pZnJhbWUuaHRtbCIsICJwdWJs
aWNrZXktY3JlZGVudGlhbHMtZ2V0IikudGhlbigobWVzc2FnZSkgPT4geworICAgICAgICAgICAg
ICAgIGFzc2VydF9lcXVhbHMobWVzc2FnZS5kYXRhLCAiUEFTUyEiKTsKKyAgICAgICAgICAgIH0p
OworICAgICAgICB9LCAiVGVzdHMgdGhhdCBhIGZyYW1lIHRoYXQgaXMgc2FtZS1zaXRlLCBjcm9z
cy1vcmlnaW4gd2l0aCBwdWJsaWNrZXktY3JlZGVudGlhbHMtZ2V0IGZlYXR1cmUgcG9saWN5IGNh
biB1c2UgZ2V0KCkuIik7CisKKyAgICAgICAgcHJvbWlzZV90ZXN0KHQgPT4geworICAgICAgICAg
ICAgcmV0dXJuIHdpdGhDcm9zc09yaWdpbklmcmFtZSgic2FtZXNpdGUtaWZyYW1lLmh0bWwiLCAi
cHVibGlja2V5LWNyZWRlbnRpYWxzLWdldCIpLnRoZW4oKG1lc3NhZ2UpID0+IHsKKyAgICAgICAg
ICAgICAgICBhc3NlcnRfZXF1YWxzKG1lc3NhZ2UuZGF0YSwgIlRocm93IE5vdEFsbG93ZWRFcnJv
cjogVGhlIG9yaWdpbiBvZiB0aGUgZG9jdW1lbnQgaXMgbm90IHRoZSBzYW1lIGFzIGl0cyBhbmNl
c3RvcnMuIik7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSwgIlRlc3RzIHRoYXQgYSBmcmFt
ZSB0aGF0IGlzIGNyb3NzLW9yaWdpbiwgTk9UIHNhbWUtc2l0ZSAgd2l0aCBwdWJsaWNrZXktY3Jl
ZGVudGlhbHMtZ2V0IGZlYXR1cmUgcG9saWN5IGNhbm5vdCB1c2UgZ2V0KCkuIik7CiAgICAgPC9z
Y3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dw
dC93ZWJhdXRobi9yZXNvdXJjZXMvc2FtZXNpdGUtaWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9o
dHRwL3dwdC93ZWJhdXRobi9yZXNvdXJjZXMvc2FtZXNpdGUtaWZyYW1lLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNzZiMDc0Y2ZkNDZjYzI1MzdlNjllMWU0MWU2MDBiYzU2ZmRmMDg3ZAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3Jlc291cmNlcy9zYW1lc2l0ZS1p
ZnJhbWUuaHRtbApAQCAtMCwwICsxLDMwIEBACis8c2NyaXB0IHNyYz0iLi91dGlsLmpzIj48L3Nj
cmlwdD4KKzxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iaW5wdXQiPgorPHNjcmlwdD4KKyAgICBjb25z
dCB1cmwgPSBuZXcgVVJMKHdpbmRvdy5sb2NhdGlvbi5ocmVmKTsKKyAgICBpZiAod2luZG93Lmlu
dGVybmFscykKK2ludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9u
KHsgbmZjOiB7IGVycm9yOiAic3VjY2VzcyIsIHBheWxvYWRCYXNlNjQ6IFt0ZXN0TmZjQ3RhcFZl
cnNpb25CYXNlNjQsIHRlc3RHZXRJbmZvUmVzcG9uc2VBcGR1QmFzZTY0LCB0ZXN0QXNzZXJ0aW9u
TWVzc2FnZUFwZHVCYXNlNjRdIH0gfSk7CisKKyAgICBmdW5jdGlvbiBtZXNzYWdlVG9Ub3AobWVz
c2FnZSkgeworICAgICAgICB0b3AucG9zdE1lc3NhZ2UobWVzc2FnZSwgIioiKTsKKyAgICB9CisK
KyAgICBjb25zdCByZXF1ZXN0T3B0aW9ucyA9IHsKKyAgICAgICAgcHVibGljS2V5OiB7CisgICAg
ICAgICAgICBjaGFsbGVuZ2U6IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0NTYiKSwKKyAgICAgICAg
ICAgIHRpbWVvdXQ6IDEwMAorICAgICAgICB9CisgICAgfTsKKworICAgIGlmICh3aW5kb3cuaW50
ZXJuYWxzKQorICAgICAgICBpbnRlcm5hbHMud2l0aFVzZXJHZXN0dXJlKCgpID0+IHsgaW5wdXQu
Zm9jdXMoKTsgfSk7CisKKyAgICBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KHJlcXVlc3RPcHRp
b25zKS50aGVuKAorICAgICAgICBmdW5jdGlvbih2YWx1ZSkgeworICAgICAgICAgICAgbWVzc2Fn
ZVRvVG9wKCJQQVNTISIpOworICAgICAgICB9LAorICAgICAgICBmdW5jdGlvbihleGNlcHRpb24p
IHsKKyAgICAgICAgICAgIG1lc3NhZ2VUb1RvcCgiVGhyb3cgIiArIGV4Y2VwdGlvbi5uYW1lICsg
IjogIiArIGV4Y2VwdGlvbi5tZXNzYWdlKTsKKyAgICAgIH0KKyAgICApOworPC9zY3JpcHQ+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9yZXNvdXJjZXMvdXRpbC5q
cyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3Jlc291cmNlcy91dGlsLmpzCmluZGV4
IDhiZjZkMDJiYTI3OGNkYWZiNzkwOGFmNDVkYTUyNWUyNWQzODE2ZjAuLjgwMmUxOTVhOTAxNDU4
YjFiNTY3NGViZjc1NzRhZWM1ODRlODU5NjIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAv
d3B0L3dlYmF1dGhuL3Jlc291cmNlcy91dGlsLmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0
L3dlYmF1dGhuL3Jlc291cmNlcy91dGlsLmpzCkBAIC0zMDQsMTggKzMwNCwzMyBAQCBmdW5jdGlv
biB3YWl0Rm9yTG9hZCgpCiAgICAgfSk7CiB9CiAKLWZ1bmN0aW9uIHdpdGhDcm9zc09yaWdpbklm
cmFtZShyZXNvdXJjZUZpbGUpCitmdW5jdGlvbiB3aXRoQ3Jvc3NPcmlnaW5JZnJhbWUocmVzb3Vy
Y2VGaWxlLCBhbGxvdyA9ICIiKQogewogICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkg
PT4gewogICAgICAgICB3YWl0Rm9yTG9hZCgpLnRoZW4oKG1lc3NhZ2UpID0+IHsKICAgICAgICAg
ICAgIHJlc29sdmUobWVzc2FnZSk7CiAgICAgICAgIH0pOwogICAgICAgICBjb25zdCBmcmFtZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpOworICAgICAgICBmcmFtZS5hbGxvdyA9
IGFsbG93OwogICAgICAgICBmcmFtZS5zcmMgPSBnZXRfaG9zdF9pbmZvKCkuSFRUUFNfUkVNT1RF
X09SSUdJTiArIFJFU09VUkNFU19ESVIgKyByZXNvdXJjZUZpbGU7CiAgICAgICAgIGRvY3VtZW50
LmJvZHkuYXBwZW5kQ2hpbGQoZnJhbWUpOwogICAgIH0pOwogfQogCitmdW5jdGlvbiB3aXRoU2Ft
ZVNpdGVJZnJhbWUocmVzb3VyY2VGaWxlLCBhbGxvdyA9ICIiKQoreworICAgIHJldHVybiBuZXcg
UHJvbWlzZSgocmVzb2x2ZSkgPT4geworICAgICAgICB3YWl0Rm9yTG9hZCgpLnRoZW4oKG1lc3Nh
Z2UpID0+IHsKKyAgICAgICAgICAgIHJlc29sdmUobWVzc2FnZSk7CisgICAgICAgfSk7CisgICAg
ICAgY29uc3QgZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKTsKKyAgICAg
ICBjb25zdCBob3N0ID0gZ2V0X2hvc3RfaW5mbygpOworICAgICAgIGZyYW1lLmFsbG93ID0gYWxs
b3c7CisgICAgICAgZnJhbWUuc3JjID0gImh0dHBzOi8vIiArIGhvc3QuT1JJR0lOQUxfSE9TVCAr
ICI6IiArIGhvc3QuSFRUUFNfUE9SVDIgKyBSRVNPVVJDRVNfRElSICsgcmVzb3VyY2VGaWxlOwor
ICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZnJhbWUpOworICAgIH0pOworfQorCiBm
dW5jdGlvbiBwcm9taXNlUmVqZWN0cyh0ZXN0LCBleHBlY3RlZCwgcHJvbWlzZSwgZGVzY3JpcHRp
b24pCiB7CiAgICAgcmV0dXJuIHByb21pc2UudGhlbih0ZXN0LnVucmVhY2hlZF9mdW5jKCJTaG91
bGQgaGF2ZSByZWplY3RlZDogIiArIGRlc2NyaXB0aW9uKSkuY2F0Y2goZnVuY3Rpb24oZSkgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447177</attachid>
            <date>2021-12-14 16:40:39 -0800</date>
            <delta_ts>2021-12-15 11:05:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234309-20211214164038.patch</filename>
            <type>text/plain</type>
            <size>44259</size>
            <attacher name="pascoe@apple.com">pascoe</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3MDU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTNlOWEwYmQ5MGUzYWZh
Yzk3NWZmNTBkZTRmYTg0NWY4ZjZiM2YxMi4uOGUzMTFjYTY1YjU2NmViNWM4MDJjMWZmMzk1NGU4
OWFjZTQ0ZGU1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDIxLTEyLTE0ICBKIFBh
c2NvZSAgPGpfcGFzY29lQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0aG5dIEFsbG93IHNh
bWUtc2l0ZSwgY3Jvc3Mtb3JpZ2luIGlmcmFtZSBnZXQoKQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0MzA5CisgICAgICAgIHJkYXI6Ly9wcm9ibGVt
Lzg2NDg2MzEzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhlIFdlYiBBdXRoZW50aWNhdGlvbiBsZXZlbCAyIHNwZWNpZmllcyBhIGZlYXR1cmUgcG9s
aWN5IHRvIGFsbG93IGdldCBjYWxscyBpbgorICAgICAgICBjcm9zcy1vcmlnaW4gaS1mcmFtZXMu
IFRoaXMgcGF0Y2ggaW1wbGVtZW50cyB0aGlzIGZlYXR1cmUgcG9saWN5IHBhcnRpYWxseS4gT25s
eQorICAgICAgICBzYW1lLXNpdGUsIGNyb3NzLW9yaWdpbiBpLWZyYW1lcyBhcmUgc3VwcG9ydGVk
IGluc3RlYWQuIFRoaXMgaXMgZm9yIHRyYWNraW5nIHByZXZlbnRpb24KKyAgICAgICAgcHVycG9z
ZXMuIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby93ZWJhdXRobi8jc2N0bi1pZnJhbWUtZ3VpZGFuY2UK
KworICAgICAgICBUaGlzIHBhdGNoIGFsc28gc3RhcnRzIHBhc3NpbmcgQ2xpZW50RGF0YUpTT04g
aGFzaGVzIHRvIEFTQyB0byBhdm9pZCB0aGUgc2l0dWF0aW9uCisgICAgICAgIHdoZXJlIFdlYktp
dCBpbmNsdWRlcyBjcm9zc09yaWdpbiBvciBvdGhlciBmaWVsZHMgaW4gQ2xpZW50RGF0YUpTT04g
dGhhdCBBU0MgaXMKKyAgICAgICAgdW5hd2FyZSBvZiB3aGVuIGdlbmVyYXRpbmcgQ2xpZW50RGF0
YUpTT04uCisKKyAgICAgICAgQWRkZWQgbGF5b3V0IHRlc3QgY2FzZXMgZm9yIHNhbWUtc2l0ZSwg
Y3Jvc3Mtb3JpZ2luIGdldCBjYWxscy4KKworICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0
b3JDb29yZGluYXRvcjo6Y3JlYXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OmRvZXNIYXZl
U2FtZVNpdGVBc0FuY2VzdG9ycyk6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdG9yQ29v
cmRpbmF0b3I6OmRpc2NvdmVyRnJvbUV4dGVybmFsU291cmNlIGNvbnN0KToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmF1dGhuL1dlYkF1dGhlbnRpY2F0aW9uVXRpbHMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6YnVpbGRDbGllbnREYXRhSnNvbik6CisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9X
ZWJBdXRoZW50aWNhdGlvblV0aWxzLmg6CisgICAgICAgICogaHRtbC9GZWF0dXJlUG9saWN5LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnBvbGljeVR5cGVOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6
OkZlYXR1cmVQb2xpY3k6OnBhcnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkZlYXR1cmVQb2xpY3k6
OmFsbG93cyBjb25zdCk6CisgICAgICAgICogaHRtbC9GZWF0dXJlUG9saWN5Lmg6CisKIDIwMjEt
MTItMTQgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtl
IFByZXZpZXdDb252ZXJ0ZXJQcm92aWRlciBub3QgbW9kaWZ5IHRoZSBTaGFyZWRCdWZmZXIgb25j
ZSByZXR1cm5lZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCAzMTEzZjE4Y2U4MmE5NDQxZTliZDg4NDNmZmIzNmE0ZDRj
YjQzYTQzLi43NGI1NjgzODc4YTdjM2QxMmQ2ODlmNTRkNDY1YTZmNjIwMTQwZWVhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDMwIEBACisyMDIxLTEyLTE0ICBKIFBhc2NvZSAgPGpfcGFzY29lQGFwcGxl
LmNvbT4KKworICAgICAgICBbV2ViQXV0aG5dIEFsbG93IHNhbWUtc2l0ZSwgY3Jvc3Mtb3JpZ2lu
IGlmcmFtZSBnZXQoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjM0MzA5CisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzg2NDg2MzEzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIFdlYiBBdXRoZW50aWNh
dGlvbiBsZXZlbCAyIHNwZWNpZmllcyBhIGZlYXR1cmUgcG9saWN5IHRvIGFsbG93IGdldCBjYWxs
cyBpbgorICAgICAgICBjcm9zcy1vcmlnaW4gaS1mcmFtZXMuIFRoaXMgcGF0Y2ggaW1wbGVtZW50
cyB0aGlzIGZlYXR1cmUgcG9saWN5IHBhcnRpYWxseS4gT25seQorICAgICAgICBzYW1lLXNpdGUs
IGNyb3NzLW9yaWdpbiBpLWZyYW1lcyBhcmUgc3VwcG9ydGVkIGluc3RlYWQuIFRoaXMgaXMgZm9y
IHRyYWNraW5nIHByZXZlbnRpb24KKyAgICAgICAgcHVycG9zZXMuIGh0dHBzOi8vdzNjLmdpdGh1
Yi5pby93ZWJhdXRobi8jc2N0bi1pZnJhbWUtZ3VpZGFuY2UKKworICAgICAgICBUaGlzIHBhdGNo
IGFsc28gc3RhcnRzIHBhc3NpbmcgQ2xpZW50RGF0YUpTT04gaGFzaGVzIHRvIEFTQyB0byBhdm9p
ZCB0aGUgc2l0dWF0aW9uCisgICAgICAgIHdoZXJlIFdlYktpdCBpbmNsdWRlcyBjcm9zc09yaWdp
biBvciBvdGhlciBmaWVsZHMgaW4gQ2xpZW50RGF0YUpTT04gdGhhdCBBU0MgaXMKKyAgICAgICAg
dW5hd2FyZSBvZiB3aGVuIGdlbmVyYXRpbmcgQ2xpZW50RGF0YUpTT04uCisKKyAgICAgICAgQWRk
ZWQgbGF5b3V0IHRlc3QgY2FzZXMgZm9yIHNhbWUtc2l0ZSwgY3Jvc3Mtb3JpZ2luIGdldCBjYWxs
cy4KKworICAgICAgICAqIFBsYXRmb3JtL3NwaS9Db2NvYS9BdXRoZW50aWNhdGlvblNlcnZpY2Vz
Q29yZVNQSS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGlj
YXRpb25QYW5lbC5tbToKKyAgICAgICAgKHByb2R1Y2VDbGllbnREYXRhSnNvbik6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL1dlYkF1dGhlbnRpY2F0b3JDb29y
ZGluYXRvclByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0Ojpjb25maWd1cmVSZWdpc3RyYXRpb25S
ZXF1ZXN0Q29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OmNvbmZpZ3VyYXRpb25Bc3NlcnRpb25S
ZXF1ZXN0Q29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dGhlbnRpY2F0b3JDb29yZGlu
YXRvclByb3h5Ojpjb250ZXh0Rm9yUmVxdWVzdCk6CisKIDIwMjEtMTItMTQgIEplciBOb2JsZSAg
PGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgU2FmYXJpIGludGVybWl0dGVudGx5IHN0
b3BwaW5nIHBsYXlpbmcgU3BvdGlmeSBXZWIgUGxheWVyIChjdXJyZW50VGltZSBnb2VzIGJhY2t3
YXJkcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3JlZGVudGlhbG1hbmFn
ZW1lbnQvQ3JlZGVudGlhbHNDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9j
cmVkZW50aWFsbWFuYWdlbWVudC9DcmVkZW50aWFsc0NvbnRhaW5lci5jcHAKaW5kZXggZDMwOWQ4
YmE0ZDUzYzdjMjk3NjkyYTgxN2ZhM2VhY2FiMDE5Mzc5MC4uYzFhYzcwYmY2NzJjOTBhMDVjODdh
YTQxOTMwNWVkNTVkMzZhN2MyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9j
cmVkZW50aWFsbWFuYWdlbWVudC9DcmVkZW50aWFsc0NvbnRhaW5lci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9DcmVkZW50aWFsc0NvbnRhaW5l
ci5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5o
IgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1
ZGUgIldlYkF1dGhlbnRpY2F0aW9uQ29uc3RhbnRzLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApAQCAtNDUsMTkgKzQ2LDI3IEBAIENyZWRlbnRpYWxzQ29udGFpbmVyOjpDcmVkZW50aWFsc0Nv
bnRhaW5lcihXZWFrUHRyPERvY3VtZW50PiYmIGRvY3VtZW50KQogewogfQogCi1ib29sIENyZWRl
bnRpYWxzQ29udGFpbmVyOjpkb2VzSGF2ZVNhbWVPcmlnaW5Bc0l0c0FuY2VzdG9ycygpCitXZWJB
dXRobjo6U2NvcGUgQ3JlZGVudGlhbHNDb250YWluZXI6OnNjb3BlKCkKIHsKLSAgICAvLyBUaGUg
Zm9sbG93aW5nIGltcGxlbWVudHMgaHR0cHM6Ly93M2MuZ2l0aHViLmlvL3dlYmFwcHNlYy1jcmVk
ZW50aWFsLW1hbmFnZW1lbnQvI3NhbWUtb3JpZ2luLXdpdGgtaXRzLWFuY2VzdG9ycwotICAgIC8v
IGFzIG9mIDE0IE5vdmVtYmVyIDIwMTcuCiAgICAgaWYgKCFtX2RvY3VtZW50KQotICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBXZWJBdXRobjo6U2NvcGU6OkNyb3NzT3JpZ2lu
OwogCisgICAgYm9vbCBpc1NhbWVPcmlnaW4gPSB0cnVlOworICAgIGJvb2wgaXNTYW1lU2l0ZSA9
IHRydWU7CiAgICAgYXV0byYgb3JpZ2luID0gbV9kb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKTsK
KyAgICBhdXRvJiB1cmwgPSBtX2RvY3VtZW50LT51cmwoKTsKICAgICBmb3IgKGF1dG8qIGRvY3Vt
ZW50ID0gbV9kb2N1bWVudC0+cGFyZW50RG9jdW1lbnQoKTsgZG9jdW1lbnQ7IGRvY3VtZW50ID0g
ZG9jdW1lbnQtPnBhcmVudERvY3VtZW50KCkpIHsKKyAgICAgICAgaWYgKCFvcmlnaW4uaXNTYW1l
T3JpZ2luRG9tYWluKGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpKSAmJiAhYXJlUmVnaXN0cmFi
bGVEb21haW5zRXF1YWwodXJsLCBkb2N1bWVudC0+dXJsKCkpKQorICAgICAgICAgICAgaXNTYW1l
U2l0ZSA9IGZhbHNlOwogICAgICAgICBpZiAoIW9yaWdpbi5pc1NhbWVPcmlnaW5Bcyhkb2N1bWVu
dC0+c2VjdXJpdHlPcmlnaW4oKSkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
ICAgICBpc1NhbWVPcmlnaW4gPSBmYWxzZTsKICAgICB9Ci0gICAgcmV0dXJuIHRydWU7CisKKyAg
ICBpZiAoaXNTYW1lT3JpZ2luKQorICAgICAgICByZXR1cm4gV2ViQXV0aG46OlNjb3BlOjpTYW1l
T3JpZ2luOworICAgIGlmIChpc1NhbWVTaXRlKQorICAgICAgICByZXR1cm4gV2ViQXV0aG46OlNj
b3BlOjpTYW1lU2l0ZTsKKyAgICByZXR1cm4gV2ViQXV0aG46OlNjb3BlOjpDcm9zc09yaWdpbjsK
IH0KIAogdm9pZCBDcmVkZW50aWFsc0NvbnRhaW5lcjo6Z2V0KENyZWRlbnRpYWxSZXF1ZXN0T3B0
aW9ucyYmIG9wdGlvbnMsIENyZWRlbnRpYWxQcm9taXNlJiYgcHJvbWlzZSkKQEAgLTg5LDcgKzk4
LDcgQEAgdm9pZCBDcmVkZW50aWFsc0NvbnRhaW5lcjo6Z2V0KENyZWRlbnRpYWxSZXF1ZXN0T3B0
aW9ucyYmIG9wdGlvbnMsIENyZWRlbnRpYWxQcm8KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIG1fZG9jdW1lbnQtPnBhZ2UoKS0+YXV0aGVudGljYXRvckNvb3JkaW5hdG9yKCkuZGlzY292
ZXJGcm9tRXh0ZXJuYWxTb3VyY2UoKm1fZG9jdW1lbnQsIG9wdGlvbnMucHVibGljS2V5LnZhbHVl
KCksIGRvZXNIYXZlU2FtZU9yaWdpbkFzSXRzQW5jZXN0b3JzKCksIFdURk1vdmUob3B0aW9ucy5z
aWduYWwpLCBXVEZNb3ZlKHByb21pc2UpKTsKKyAgICBtX2RvY3VtZW50LT5wYWdlKCktPmF1dGhl
bnRpY2F0b3JDb29yZGluYXRvcigpLmRpc2NvdmVyRnJvbUV4dGVybmFsU291cmNlKCptX2RvY3Vt
ZW50LCBvcHRpb25zLnB1YmxpY0tleS52YWx1ZSgpLCBzY29wZSgpLCBXVEZNb3ZlKG9wdGlvbnMu
c2lnbmFsKSwgV1RGTW92ZShwcm9taXNlKSk7CiB9CiAKIHZvaWQgQ3JlZGVudGlhbHNDb250YWlu
ZXI6OnN0b3JlKGNvbnN0IEJhc2ljQ3JlZGVudGlhbCYsIENyZWRlbnRpYWxQcm9taXNlJiYgcHJv
bWlzZSkKQEAgLTEyNCw3ICsxMzMsNyBAQCB2b2lkIENyZWRlbnRpYWxzQ29udGFpbmVyOjppc0Ny
ZWF0ZShDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zJiYgb3B0aW9ucywgQ3JlZGVudAogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgbV9kb2N1bWVudC0+cGFnZSgpLT5hdXRoZW50aWNhdG9y
Q29vcmRpbmF0b3IoKS5jcmVhdGUoKm1fZG9jdW1lbnQsIG9wdGlvbnMucHVibGljS2V5LnZhbHVl
KCksIGRvZXNIYXZlU2FtZU9yaWdpbkFzSXRzQW5jZXN0b3JzKCksIFdURk1vdmUob3B0aW9ucy5z
aWduYWwpLCBXVEZNb3ZlKHByb21pc2UpKTsKKyAgICBtX2RvY3VtZW50LT5wYWdlKCktPmF1dGhl
bnRpY2F0b3JDb29yZGluYXRvcigpLmNyZWF0ZSgqbV9kb2N1bWVudCwgb3B0aW9ucy5wdWJsaWNL
ZXkudmFsdWUoKSwgc2NvcGUoKSwgV1RGTW92ZShvcHRpb25zLnNpZ25hbCksIFdURk1vdmUocHJv
bWlzZSkpOwogfQogCiB2b2lkIENyZWRlbnRpYWxzQ29udGFpbmVyOjpwcmV2ZW50U2lsZW50QWNj
ZXNzKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50L0NyZWRlbnRpYWxz
Q29udGFpbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50
L0NyZWRlbnRpYWxzQ29udGFpbmVyLmgKaW5kZXggNGUxYmI0ZTViZTVlNTI1NWEzNzc4NmY4ZWY2
OWI4YTc3ZGFmNTNjNy4uOWE2YjEyZGRjMjIyOThmNDdjMWUzMjk2MmI2YTZjZjM5ZWI1ZDkxMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9D
cmVkZW50aWFsc0NvbnRhaW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3JlZGVu
dGlhbG1hbmFnZW1lbnQvQ3JlZGVudGlhbHNDb250YWluZXIuaApAQCAtMzIsNiArMzIsMTAgQEAK
ICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAK
K25hbWVzcGFjZSBXZWJBdXRobiB7CitlbnVtIGNsYXNzIFNjb3BlOworfQorCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIERvY3VtZW50OwpAQCAtNTQsNyArNTgsNyBAQCBwdWJsaWM6CiBw
cml2YXRlOgogICAgIENyZWRlbnRpYWxzQ29udGFpbmVyKFdlYWtQdHI8RG9jdW1lbnQ+JiYpOwog
Ci0gICAgYm9vbCBkb2VzSGF2ZVNhbWVPcmlnaW5Bc0l0c0FuY2VzdG9ycygpOworICAgIFdlYkF1
dGhuOjpTY29wZSBzY29wZSgpOwogCiAgICAgV2Vha1B0cjxEb2N1bWVudD4gbV9kb2N1bWVudDsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRp
Y2F0b3JDb29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1
dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAKaW5kZXggNDkwZjY1YWUyZTE1NWUxOGFjZThjMzUy
ZjYxZDQwODRkZmM5MGZmMS4uNWQ0Nzc3YjhjMDNhMDkyZjcxOTFkZTQ0NDU0OGVhN2Y5YzZmM2M3
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4v
QXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUg
IkF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudC5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0
b3JSZXNwb25zZURhdGEuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkZlYXR1
cmVQb2xpY3kuaCIKICNpbmNsdWRlICJKU0Jhc2ljQ3JlZGVudGlhbC5oIgogI2luY2x1ZGUgIkpT
RE9NUHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSAiUHVibGljS2V5Q3JlZGVudGlhbC5oIgpA
QCAtMTA0LDcgKzEwNSw3IEBAIHZvaWQgQXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjpzZXRDbGll
bnQoc3RkOjp1bmlxdWVfcHRyPEF1dGhlbnRpY2F0b3JDb29yZGluYXRvCiAgICAgbV9jbGllbnQg
PSBXVEZNb3ZlKGNsaWVudCk7CiB9CiAKLXZvaWQgQXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjpj
cmVhdGUoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFs
Q3JlYXRpb25PcHRpb25zJiBvcHRpb25zLCBib29sIHNhbWVPcmlnaW5XaXRoQW5jZXN0b3JzLCBS
ZWZQdHI8QWJvcnRTaWduYWw+JiYgYWJvcnRTaWduYWwsIENyZWRlbnRpYWxQcm9taXNlJiYgcHJv
bWlzZSkgY29uc3QKK3ZvaWQgQXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjpjcmVhdGUoY29uc3Qg
RG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRp
b25zJiBvcHRpb25zLCBXZWJBdXRobjo6U2NvcGUgc2NvcGUsIFJlZlB0cjxBYm9ydFNpZ25hbD4m
JiBhYm9ydFNpZ25hbCwgQ3JlZGVudGlhbFByb21pc2UmJiBwcm9taXNlKSBjb25zdAogewogICAg
IHVzaW5nIG5hbWVzcGFjZSBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JJbnRlcm5hbDsKIApAQCAt
MTE0LDcgKzExNSw3IEBAIHZvaWQgQXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjpjcmVhdGUoY29u
c3QgRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBQdWJsaWNLZXlDCiAgICAgLy8gVGhlIGZvbGxv
d2luZyBpbXBsZW1lbnRzIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi8jY3JlYXRlQ3Jl
ZGVudGlhbCBhcyBvZiA1IERlY2VtYmVyIDIwMTcuCiAgICAgLy8gU3RlcCAxLCAzLCAxNiBhcmUg
aGFuZGxlZCBieSB0aGUgY2FsbGVyLgogICAgIC8vIFN0ZXAgMi4KLSAgICBpZiAoIXNhbWVPcmln
aW5XaXRoQW5jZXN0b3JzKSB7CisgICAgaWYgKHNjb3BlICE9IFdlYkF1dGhuOjpTY29wZTo6U2Ft
ZU9yaWdpbikgewogICAgICAgICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBOb3RBbGxvd2Vk
RXJyb3IsICJUaGUgb3JpZ2luIG9mIHRoZSBkb2N1bWVudCBpcyBub3QgdGhlIHNhbWUgYXMgaXRz
IGFuY2VzdG9ycy4iX3MgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xNDgsNyArMTQ5
LDcgQEAgdm9pZCBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6OmNyZWF0ZShjb25zdCBEb2N1bWVu
dCYgZG9jdW1lbnQsIGNvbnN0IFB1YmxpY0tleUMKICAgICBvcHRpb25zLmV4dGVuc2lvbnMgPSBB
dXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRJbnB1dHMgeyBTdHJpbmcoKSwgcHJvY2Vzc0dv
b2dsZUxlZ2FjeUFwcElkU3VwcG9ydEV4dGVuc2lvbihvcHRpb25zLmV4dGVuc2lvbnMsIG9wdGlv
bnMucnAuaWQpIH07CiAKICAgICAvLyBTdGVwIDEzLTE1LgotICAgIGF1dG8gY2xpZW50RGF0YUpz
b24gPSBidWlsZENsaWVudERhdGFKc29uKENsaWVudERhdGFUeXBlOjpDcmVhdGUsIG9wdGlvbnMu
Y2hhbGxlbmdlLCBjYWxsZXJPcmlnaW4pOworICAgIGF1dG8gY2xpZW50RGF0YUpzb24gPSBidWls
ZENsaWVudERhdGFKc29uKENsaWVudERhdGFUeXBlOjpDcmVhdGUsIG9wdGlvbnMuY2hhbGxlbmdl
LCBjYWxsZXJPcmlnaW4sIHNjb3BlKTsKICAgICBhdXRvIGNsaWVudERhdGFKc29uSGFzaCA9IGJ1
aWxkQ2xpZW50RGF0YUpzb25IYXNoKGNsaWVudERhdGFKc29uKTsKIAogICAgIC8vIFN0ZXAgNCwg
MTctMjEuCkBAIC0xNzUsNyArMTc2LDcgQEAgdm9pZCBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6
OmNyZWF0ZShjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFB1YmxpY0tleUMKICAgICBt
X2NsaWVudC0+bWFrZUNyZWRlbnRpYWwoKmZyYW1lLCBjYWxsZXJPcmlnaW4sIGNsaWVudERhdGFK
c29uSGFzaCwgb3B0aW9ucywgV1RGTW92ZShjYWxsYmFjaykpOwogfQogCi12b2lkIEF1dGhlbnRp
Y2F0b3JDb29yZGluYXRvcjo6ZGlzY292ZXJGcm9tRXh0ZXJuYWxTb3VyY2UoY29uc3QgRG9jdW1l
bnQmIGRvY3VtZW50LCBjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMmIG9w
dGlvbnMsIGJvb2wgc2FtZU9yaWdpbldpdGhBbmNlc3RvcnMsIFJlZlB0cjxBYm9ydFNpZ25hbD4m
JiBhYm9ydFNpZ25hbCwgQ3JlZGVudGlhbFByb21pc2UmJiBwcm9taXNlKSBjb25zdAordm9pZCBB
dXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6OmRpc2NvdmVyRnJvbUV4dGVybmFsU291cmNlKGNvbnN0
IERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRp
b25zJiBvcHRpb25zLCBXZWJBdXRobjo6U2NvcGUgc2NvcGUsIFJlZlB0cjxBYm9ydFNpZ25hbD4m
JiBhYm9ydFNpZ25hbCwgQ3JlZGVudGlhbFByb21pc2UmJiBwcm9taXNlKSBjb25zdAogewogICAg
IHVzaW5nIG5hbWVzcGFjZSBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JJbnRlcm5hbDsKIApAQCAt
MTg1LDcgKzE4Niw4IEBAIHZvaWQgQXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjpkaXNjb3ZlckZy
b21FeHRlcm5hbFNvdXJjZShjb25zdCBEb2N1bWVudCYgZG9jdW1lCiAgICAgLy8gVGhlIGZvbGxv
d2luZyBpbXBsZW1lbnRzIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi8jY3JlYXRlQ3Jl
ZGVudGlhbCBhcyBvZiA1IERlY2VtYmVyIDIwMTcuCiAgICAgLy8gU3RlcCAxLCAzLCAxMyBhcmUg
aGFuZGxlZCBieSB0aGUgY2FsbGVyLgogICAgIC8vIFN0ZXAgMi4KLSAgICBpZiAoIXNhbWVPcmln
aW5XaXRoQW5jZXN0b3JzKSB7CisgICAgLy8gVGhpcyBpbXBsZW1lbnRzIGh0dHBzOi8vd3d3Lncz
Lm9yZy9UUi93ZWJhdXRobi0yLyNzY3RuLXBlcm1pc3Npb25zLXBvbGljeSBleGNlcHQgb25seSBz
YW1lLXNpdGUsIGNyb3NzLW9yaWdpbiBpcyBwZXJtaXR0ZWQuCisgICAgaWYgKHNjb3BlICE9IFdl
YkF1dGhuOjpTY29wZTo6U2FtZU9yaWdpbiAmJiAhKHNjb3BlID09IFdlYkF1dGhuOjpTY29wZTo6
U2FtZVNpdGUgJiYgaXNGZWF0dXJlUG9saWN5QWxsb3dlZEJ5RG9jdW1lbnRBbmRBbGxPd25lcnMo
RmVhdHVyZVBvbGljeTo6VHlwZTo6UHVibGlja2V5Q3JlZGVudGlhbHNHZXRSdWxlLCBkb2N1bWVu
dCwgTG9nRmVhdHVyZVBvbGljeUZhaWx1cmU6Ok5vKSkpIHsKICAgICAgICAgcHJvbWlzZS5yZWpl
Y3QoRXhjZXB0aW9uIHsgTm90QWxsb3dlZEVycm9yLCAiVGhlIG9yaWdpbiBvZiB0aGUgZG9jdW1l
bnQgaXMgbm90IHRoZSBzYW1lIGFzIGl0cyBhbmNlc3RvcnMuIl9zIH0pOwogICAgICAgICByZXR1
cm47CiAgICAgfQpAQCAtMjE5LDcgKzIyMSw3IEBAIHZvaWQgQXV0aGVudGljYXRvckNvb3JkaW5h
dG9yOjpkaXNjb3ZlckZyb21FeHRlcm5hbFNvdXJjZShjb25zdCBEb2N1bWVudCYgZG9jdW1lCiAg
ICAgfQogCiAgICAgLy8gU3RlcCAxMC0xMi4KLSAgICBhdXRvIGNsaWVudERhdGFKc29uID0gYnVp
bGRDbGllbnREYXRhSnNvbihDbGllbnREYXRhVHlwZTo6R2V0LCBvcHRpb25zLmNoYWxsZW5nZSwg
Y2FsbGVyT3JpZ2luKTsKKyAgICBhdXRvIGNsaWVudERhdGFKc29uID0gYnVpbGRDbGllbnREYXRh
SnNvbihDbGllbnREYXRhVHlwZTo6R2V0LCBvcHRpb25zLmNoYWxsZW5nZSwgY2FsbGVyT3JpZ2lu
LCBzY29wZSk7CiAgICAgYXV0byBjbGllbnREYXRhSnNvbkhhc2ggPSBidWlsZENsaWVudERhdGFK
c29uSGFzaChjbGllbnREYXRhSnNvbik7CiAKICAgICAvLyBTdGVwIDQsIDE0LTE5LgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRp
bmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckNv
b3JkaW5hdG9yLmgKaW5kZXggZmZmZTIwYjAwMTc0ZWQyNGU2ODdmNDc3YzkwNDQyZjc1YjYxMzU1
ZS4uZjQ5NTAzMDg2YzlhY2M3OTE5MzM4N2Y3NmZiNmE1YmVhMjA3ODBhYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3Iu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29y
ZGluYXRvci5oCkBAIC0zMSw2ICszMSwxMCBAQAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAj
aW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKK25hbWVzcGFjZSBXZWJBdXRobiB7CitlbnVt
IGNsYXNzIFNjb3BlOworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFib3J0U2ln
bmFsOwpAQCAtNTMsOCArNTcsOCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
ZXRDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudD4m
Jik7CiAKICAgICAvLyBUaGUgZm9sbG93aW5nIG1ldGhvZHMgaW1wbGVtZW50IHN0YXRpYyBtZXRo
b2RzIG9mIFB1YmxpY0tleUNyZWRlbnRpYWwuCi0gICAgdm9pZCBjcmVhdGUoY29uc3QgRG9jdW1l
bnQmLCBjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zJiwgYm9vbCBzYW1l
T3JpZ2luV2l0aEFuY2VzdG9ycywgUmVmUHRyPEFib3J0U2lnbmFsPiYmLCBDcmVkZW50aWFsUHJv
bWlzZSYmKSBjb25zdDsKLSAgICB2b2lkIGRpc2NvdmVyRnJvbUV4dGVybmFsU291cmNlKGNvbnN0
IERvY3VtZW50JiwgY29uc3QgUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zJiwgYm9v
bCBzYW1lT3JpZ2luV2l0aEFuY2VzdG9ycywgUmVmUHRyPEFib3J0U2lnbmFsPiYmLCBDcmVkZW50
aWFsUHJvbWlzZSYmKSBjb25zdDsKKyAgICB2b2lkIGNyZWF0ZShjb25zdCBEb2N1bWVudCYsIGNv
bnN0IFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMmLCBXZWJBdXRobjo6U2NvcGUs
IFJlZlB0cjxBYm9ydFNpZ25hbD4mJiwgQ3JlZGVudGlhbFByb21pc2UmJikgY29uc3Q7CisgICAg
dm9pZCBkaXNjb3ZlckZyb21FeHRlcm5hbFNvdXJjZShjb25zdCBEb2N1bWVudCYsIGNvbnN0IFB1
YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYsIFdlYkF1dGhuOjpTY29wZSwgUmVmUHRy
PEFib3J0U2lnbmFsPiYmLCBDcmVkZW50aWFsUHJvbWlzZSYmKSBjb25zdDsKICAgICB2b2lkIGlz
VXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZShET01Qcm9taXNlRGVm
ZXJyZWQ8SURMQm9vbGVhbj4mJikgY29uc3Q7CiAKICAgICB2b2lkIHJlc2V0VXNlckdlc3R1cmVS
ZXF1aXJlbWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRo
bi9XZWJBdXRoZW50aWNhdGlvbkNvbnN0YW50cy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdXRobi9XZWJBdXRoZW50aWNhdGlvbkNvbnN0YW50cy5oCmluZGV4IDQ1MWZmMzNiMjhlZDUw
YjViYWY3YjlhMzljZWE4MjA3N2U1MzExNTEuLjg0YTc3YmVjN2JhMmEzYzk5YTcwYzMwNDM0MmQ5
MWE0ZjE5NzkxYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4v
V2ViQXV0aGVudGljYXRpb25Db25zdGFudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1dGhuL1dlYkF1dGhlbnRpY2F0aW9uQ29uc3RhbnRzLmgKQEAgLTgwLDMgKzgwLDEzIEBA
IGVudW0gY2xhc3MgQ2xpZW50RGF0YVR5cGUgOiBib29sIHsKIGNvbnN0IGNoYXIgTG9jYWxBdXRo
ZW50aWNhdGlvckFjY2Vzc0dyb3VwW10gPSAiY29tLmFwcGxlLndlYmtpdC53ZWJhdXRobiI7CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworbmFtZXNwYWNlIFdlYkF1dGhuIHsKKworZW51bSBj
bGFzcyBTY29wZSB7CisgICAgQ3Jvc3NPcmlnaW4sCisgICAgU2FtZU9yaWdpbiwKKyAgICBTYW1l
U2l0ZQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQXV0aG4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vV2ViQXV0aGVudGljYXRpb25VdGlscy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1dlYkF1dGhlbnRpY2F0aW9uVXRpbHMuY3BwCmlu
ZGV4IGM4ZTBkMjgyZDUzYjA4NmQyMTk0N2ZmZTEwZmQ4ZjY5OGVkMDQ4OTYuLjhkNDczY2EyNTlm
MmM2YmMwZjViNWEyNmIwYzJkMmE4NDBjZGY1ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXV0aG4vV2ViQXV0aGVudGljYXRpb25VdGlscy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9XZWJBdXRoZW50aWNhdGlvblV0aWxzLmNwcApAQCAt
MTM0LDcgKzEzNCw3IEBAIFZlY3Rvcjx1aW50OF90PiBidWlsZEF0dGVzdGF0aW9uT2JqZWN0KFZl
Y3Rvcjx1aW50OF90PiYmIGF1dGhEYXRhLCBTdHJpbmcmJiBmb3JtCiB9CiAKIC8vIEZJWE1FKDE4
MTk0OCk6IEFkZCB0b2tlbiBiaW5kaW5nIElELgotUmVmPEFycmF5QnVmZmVyPiBidWlsZENsaWVu
dERhdGFKc29uKENsaWVudERhdGFUeXBlIHR5cGUsIGNvbnN0IEJ1ZmZlclNvdXJjZSYgY2hhbGxl
bmdlLCBjb25zdCBTZWN1cml0eU9yaWdpbiYgb3JpZ2luKQorUmVmPEFycmF5QnVmZmVyPiBidWls
ZENsaWVudERhdGFKc29uKENsaWVudERhdGFUeXBlIHR5cGUsIGNvbnN0IEJ1ZmZlclNvdXJjZSYg
Y2hhbGxlbmdlLCBjb25zdCBTZWN1cml0eU9yaWdpbiYgb3JpZ2luLCBXZWJBdXRobjo6U2NvcGUg
c2NvcGUpCiB7CiAgICAgYXV0byBvYmplY3QgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAg
IHN3aXRjaCAodHlwZSkgewpAQCAtMTQ3LDYgKzE0Nyw4IEBAIFJlZjxBcnJheUJ1ZmZlcj4gYnVp
bGRDbGllbnREYXRhSnNvbihDbGllbnREYXRhVHlwZSB0eXBlLCBjb25zdCBCdWZmZXJTb3VyY2Um
IGNoCiAgICAgfQogICAgIG9iamVjdC0+c2V0U3RyaW5nKCJjaGFsbGVuZ2UiX3MsIGJhc2U2NFVS
TEVuY29kZVRvU3RyaW5nKGNoYWxsZW5nZS5kYXRhKCksIGNoYWxsZW5nZS5sZW5ndGgoKSkpOwog
ICAgIG9iamVjdC0+c2V0U3RyaW5nKCJvcmlnaW4iX3MsIG9yaWdpbi50b1Jhd1N0cmluZygpKTsK
KyAgICBpZiAoc2NvcGUgIT0gV2ViQXV0aG46OlNjb3BlOjpTYW1lT3JpZ2luKQorICAgICAgICBv
YmplY3QtPnNldEJvb2xlYW4oImNyb3NzT3JpZ2luIl9zLCBzY29wZSAhPSBXZWJBdXRobjo6U2Nv
cGU6OlNhbWVPcmlnaW4pOwogCiAgICAgYXV0byB1dGY4SlNPTlN0cmluZyA9IG9iamVjdC0+dG9K
U09OU3RyaW5nKCkudXRmOCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1dGhuL1dlYkF1dGhlbnRpY2F0aW9uVXRpbHMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXV0aG4vV2ViQXV0aGVudGljYXRpb25VdGlscy5oCmluZGV4IGEwNzkyMTFkZWIxN2M4
ZTI2YmJmMWU4OWQzMjBmMTFjODU5MzdlNTcuLmE2NDI1NDRkNGE2NTg2OGJiNGRhOTczMmRhZTAy
OGNkZmM1NThjMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4v
V2ViQXV0aGVudGljYXRpb25VdGlscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXV0aG4vV2ViQXV0aGVudGljYXRpb25VdGlscy5oCkBAIC01Miw3ICs1Miw3IEBAIFdFQkNPUkVf
RVhQT1JUIFZlY3Rvcjx1aW50OF90PiBidWlsZEF1dGhEYXRhKGNvbnN0IFN0cmluZyYgcnBJZCwg
Y29uc3QgdWludDhfdCBmCiAvLyBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4vI2F0dGVz
dGF0aW9uLW9iamVjdAogV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IGJ1aWxkQXR0ZXN0
YXRpb25PYmplY3QoVmVjdG9yPHVpbnQ4X3Q+JiYgYXV0aERhdGEsIFN0cmluZyYmIGZvcm1hdCwg
Y2Jvcjo6Q0JPUlZhbHVlOjpNYXBWYWx1ZSYmIHN0YXRlbWVudE1hcCwgY29uc3QgQXR0ZXN0YXRp
b25Db252ZXlhbmNlUHJlZmVyZW5jZSYpOwogCi1XRUJDT1JFX0VYUE9SVCBSZWY8QXJyYXlCdWZm
ZXI+IGJ1aWxkQ2xpZW50RGF0YUpzb24oQ2xpZW50RGF0YVR5cGUgLyp0eXBlKi8sIGNvbnN0IEJ1
ZmZlclNvdXJjZSYgY2hhbGxlbmdlLCBjb25zdCBTZWN1cml0eU9yaWdpbiYgLypvcmlnaW4qLyk7
CitXRUJDT1JFX0VYUE9SVCBSZWY8QXJyYXlCdWZmZXI+IGJ1aWxkQ2xpZW50RGF0YUpzb24oQ2xp
ZW50RGF0YVR5cGUgLyp0eXBlKi8sIGNvbnN0IEJ1ZmZlclNvdXJjZSYgY2hhbGxlbmdlLCBjb25z
dCBTZWN1cml0eU9yaWdpbiYgLypvcmlnaW4qLywgV2ViQXV0aG46OlNjb3BlKTsKIAogV0VCQ09S
RV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IGJ1aWxkQ2xpZW50RGF0YUpzb25IYXNoKGNvbnN0IEFy
cmF5QnVmZmVyJiBjbGllbnREYXRhSnNvbik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvRmVhdHVyZVBvbGljeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZlYXR1cmVQb2xp
Y3kuY3BwCmluZGV4IDU2MDBjYTFhYmIwNGI5NGJiZmZjNGZlZDUwNDM1YjEzNDUyOTYzZTYuLjU4
NDhkMGFiOWMyZDc1NjRmMDhmNDg3NTJiOTM1ZTE4MTBiMTE4MTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvRmVhdHVyZVBvbGljeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9GZWF0dXJlUG9saWN5LmNwcApAQCAtNjcsNiArNjcsMTAgQEAgc3RhdGljIGNvbnN0IGNoYXIq
IHBvbGljeVR5cGVOYW1lKEZlYXR1cmVQb2xpY3k6OlR5cGUgdHlwZSkKICAgICBjYXNlIEZlYXR1
cmVQb2xpY3k6OlR5cGU6Ok1hZ25ldG9tZXRlcjoKICAgICAgICAgcmV0dXJuICJNYWduZXRvbWV0
ZXIiOwogI2VuZGlmCisjaWYgRU5BQkxFKFdFQl9BVVRITikKKyAgICBjYXNlIEZlYXR1cmVQb2xp
Y3k6OlR5cGU6OlB1YmxpY2tleUNyZWRlbnRpYWxzR2V0UnVsZToKKyAgICAgICAgcmV0dXJuICJQ
dWJsaWNrZXlDcmVkZW50aWFsc0dldCI7CisjZW5kaWYKICNpZiBFTkFCTEUoV0VCWFIpCiAgICAg
Y2FzZSBGZWF0dXJlUG9saWN5OjpUeXBlOjpYUlNwYXRpYWxUcmFja2luZzoKICAgICAgICAgcmV0
dXJuICJYUlNwYXRpYWxUcmFja2luZyI7CkBAIC0xODQsNiArMTg4LDkgQEAgRmVhdHVyZVBvbGlj
eSBGZWF0dXJlUG9saWN5OjpwYXJzZShEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IEhUTUxJRnJh
bWVFbGVtZW50JgogICAgIGJvb2wgaXNBY2NlbGVyb21ldGVySW5pdGlhbGl6ZWQgPSBmYWxzZTsK
ICAgICBib29sIGlzTWFnbmV0b21ldGVySW5pdGlhbGl6ZWQgPSBmYWxzZTsKICNlbmRpZgorI2lm
IEVOQUJMRShXRUJfQVVUSE4pCisgICAgYm9vbCBpc1B1YmxpY2tleUNyZWRlbnRpYWxzR2V0SW5p
dGlhbGl6ZWQgPSBmYWxzZTsKKyNlbmRpZgogI2lmIEVOQUJMRShXRUJYUikKICAgICBib29sIGlz
WFJTcGF0aWFsVHJhY2tpbmdJbml0aWFsaXplZCA9IGZhbHNlOwogI2VuZGlmCkBAIC0yNTEsNiAr
MjU4LDEzIEBAIEZlYXR1cmVQb2xpY3kgRmVhdHVyZVBvbGljeTo6cGFyc2UoRG9jdW1lbnQmIGRv
Y3VtZW50LCBjb25zdCBIVE1MSUZyYW1lRWxlbWVudCYKICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICB9CiAjZW5kaWYKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorICAgICAgICBpZiAoaXRl
bS5zdGFydHNXaXRoKCJwdWJsaWNrZXktY3JlZGVudGlhbHMtZ2V0IikpIHsKKyAgICAgICAgICAg
IGlzUHVibGlja2V5Q3JlZGVudGlhbHNHZXRJbml0aWFsaXplZCA9IHRydWU7CisgICAgICAgICAg
ICB1cGRhdGVMaXN0KGRvY3VtZW50LCBwb2xpY3kubV9wdWJsaWNrZXlDcmVkZW50aWFsc0dldFJ1
bGUsIGl0ZW0uc3Vic3RyaW5nKDI2KSk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
fQorI2VuZGlmCiAjaWYgRU5BQkxFKFdFQlhSKQogICAgICAgICBpZiAoaXRlbS5zdGFydHNXaXRo
KCJ4ci1zcGF0aWFsLXRyYWNraW5nIikpIHsKICAgICAgICAgICAgIGlzWFJTcGF0aWFsVHJhY2tp
bmdJbml0aWFsaXplZCA9IHRydWU7CkBAIC0yODMsNiArMjk3LDEwIEBAIEZlYXR1cmVQb2xpY3kg
RmVhdHVyZVBvbGljeTo6cGFyc2UoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBIVE1MSUZyYW1l
RWxlbWVudCYKICAgICBpZiAoIWlzTWFnbmV0b21ldGVySW5pdGlhbGl6ZWQpCiAgICAgICAgIHBv
bGljeS5tX21hZ25ldG9tZXRlclJ1bGUuYWxsb3dlZExpc3QuYWRkKGRvY3VtZW50LnNlY3VyaXR5
T3JpZ2luKCkuZGF0YSgpKTsKICNlbmRpZgorI2lmIEVOQUJMRShXRUJfQVVUSE4pCisgICAgaWYg
KCFpc1B1YmxpY2tleUNyZWRlbnRpYWxzR2V0SW5pdGlhbGl6ZWQpCisgICAgICAgIHBvbGljeS5t
X3B1YmxpY2tleUNyZWRlbnRpYWxzR2V0UnVsZS5hbGxvd2VkTGlzdC5hZGQoZG9jdW1lbnQuc2Vj
dXJpdHlPcmlnaW4oKS5kYXRhKCkpOworI2VuZGlmCiAjaWYgRU5BQkxFKFdFQlhSKQogICAgIGlm
ICghaXNYUlNwYXRpYWxUcmFja2luZ0luaXRpYWxpemVkKQogICAgICAgICBwb2xpY3kubV94clNw
YXRpYWxUcmFja2luZ1J1bGUuYWxsb3dlZExpc3QuYWRkKGRvY3VtZW50LnNlY3VyaXR5T3JpZ2lu
KCkuZGF0YSgpKTsKQEAgLTMzOCw2ICszNTYsMTAgQEAgYm9vbCBGZWF0dXJlUG9saWN5OjphbGxv
d3MoVHlwZSB0eXBlLCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbikgY29uc3QKICAg
ICBjYXNlIFR5cGU6Ok1hZ25ldG9tZXRlcjoKICAgICAgICAgcmV0dXJuIGlzQWxsb3dlZEJ5RmVh
dHVyZVBvbGljeShtX21hZ25ldG9tZXRlclJ1bGUsIG9yaWdpbik7CiAjZW5kaWYKKyNpZiBFTkFC
TEUoV0VCX0FVVEhOKQorICAgIGNhc2UgVHlwZTo6UHVibGlja2V5Q3JlZGVudGlhbHNHZXRSdWxl
OgorICAgICAgICByZXR1cm4gaXNBbGxvd2VkQnlGZWF0dXJlUG9saWN5KG1fcHVibGlja2V5Q3Jl
ZGVudGlhbHNHZXRSdWxlLCBvcmlnaW4pOworI2VuZGlmCiAjaWYgRU5BQkxFKFdFQlhSKQogICAg
IGNhc2UgVHlwZTo6WFJTcGF0aWFsVHJhY2tpbmc6CiAgICAgICAgIHJldHVybiBpc0FsbG93ZWRC
eUZlYXR1cmVQb2xpY3kobV94clNwYXRpYWxUcmFja2luZ1J1bGUsIG9yaWdpbik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZlYXR1cmVQb2xpY3kuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvRmVhdHVyZVBvbGljeS5oCmluZGV4IGU2NDBmOGE1ZDcyM2RlMDFlOWE2NGI1MTA2NjZi
OTNhNjc5N2E3OTIuLjI4ZWZhMzE1ODUxMDkwMzFiOTczNGQwZjEyMzUxZjkzZGViZTM0OGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmVhdHVyZVBvbGljeS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvRmVhdHVyZVBvbGljeS5oCkBAIC01Myw2ICs1Myw5IEBAIHB1YmxpYzoK
ICAgICAgICAgQWNjZWxlcm9tZXRlciwKICAgICAgICAgTWFnbmV0b21ldGVyLAogI2VuZGlmCisj
aWYgRU5BQkxFKFdFQl9BVVRITikKKyAgICAgICAgUHVibGlja2V5Q3JlZGVudGlhbHNHZXRSdWxl
LAorI2VuZGlmCiAjaWYgRU5BQkxFKFdFQlhSKQogICAgICAgICBYUlNwYXRpYWxUcmFja2luZywK
ICNlbmRpZgpAQCAtODEsNiArODQsOSBAQCBwcml2YXRlOgogICAgIEFsbG93UnVsZSBtX2FjY2Vs
ZXJvbWV0ZXJSdWxlOwogICAgIEFsbG93UnVsZSBtX21hZ25ldG9tZXRlclJ1bGU7CiAjZW5kaWYK
KyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorICAgIEFsbG93UnVsZSBtX3B1YmxpY2tleUNyZWRlbnRp
YWxzR2V0UnVsZTsKKyNlbmRpZgogI2lmIEVOQUJMRShXRUJYUikKICAgICBBbGxvd1J1bGUgbV94
clNwYXRpYWxUcmFja2luZ1J1bGU7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vc3BpL0NvY29hL0F1dGhlbnRpY2F0aW9uU2VydmljZXNDb3JlU1BJLmggYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9Db2NvYS9BdXRoZW50aWNhdGlvblNlcnZpY2VzQ29yZVNQ
SS5oCmluZGV4IDM5NDgyMmQ1NTBlOTUyYTJlZDk3YThiMjZjYjU1ZDEyNjcxMWIxN2QuLjkwMDdk
NmQ0ODU2MjMxZjNiMzBjNDg4ODgyYmQ4NWFjNWI4MDI0OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vc3BpL0NvY29hL0F1dGhlbnRpY2F0aW9uU2VydmljZXNDb3JlU1BJLmgK
KysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvQ29jb2EvQXV0aGVudGljYXRpb25TZXJ2
aWNlc0NvcmVTUEkuaApAQCAtMjUsMTAgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpZiBI
QVZFKFVOSUZJRURfQVNDX0FVVEhfVUkpCi0jaW1wb3J0IDxBdXRoZW50aWNhdGlvblNlcnZpY2Vz
Q29yZS9BdXRoZW50aWNhdGlvblNlcnZpY2VzQ29yZS5oPgotI2ltcG9ydCA8QXV0aGVudGljYXRp
b25TZXJ2aWNlc0NvcmUvQXV0aGVudGljYXRpb25TZXJ2aWNlc0NvcmVQcml2YXRlLmg+Ci0jZWxp
ZiBIQVZFKEFTQ19BVVRIX1VJKQorI2lmIEhBVkUoQVNDX0FVVEhfVUkpIHx8IEhBVkUoVU5JRklF
RF9BU0NfQVVUSF9VSSkKIAogTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KIApAQCAtNzEsNiArNjgs
MTQgQEAgTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KIAogQGVuZAogCitAaW50ZXJmYWNlIEFTQ0F1
dGhvcml6YXRpb25SZW1vdGVQcmVzZW50ZXIgOiBOU09iamVjdAorCisjaWYgVEFSR0VUX09TX09T
WAorLSAodm9pZClwcmVzZW50V2l0aFdpbmRvdzooTlNXaW5kb3cgKil3aW5kb3cgZGFlbW9uRW5k
cG9pbnQ6KE5TWFBDTGlzdGVuZXJFbmRwb2ludCAqKWRhZW1vbkVuZHBvaW50IGNvbXBsZXRpb25I
YW5kbGVyOih2b2lkICheKShpZCA8QVNDQ3JlZGVudGlhbFByb3RvY29sPiwgTlNFcnJvciAqKSlj
b21wbGV0aW9uSGFuZGxlcjsKKyNlbmRpZgorCitAZW5kCisKIEBjbGFzcyBBU0NDcmVkZW50aWFs
UmVxdWVzdENvbnRleHQ7CiAKIGV4dGVybiBOU1N0cmluZyAqIGNvbnN0IEFTQ0F1dGhvcml6YXRp
b25QcmVzZW50YXRpb25Db250ZXh0RGF0YUtleTsKQEAgLTEwNSwxNiArMTEwLDY1IEBAIHR5cGVk
ZWYgTlNfRU5VTShOU0ludGVnZXIsIEFTQ1NlY3VyaXR5S2V5UHVibGljS2V5Q3JlZGVudGlhbEtp
bmQpIHsKICAgICBBU0NTZWN1cml0eUtleVB1YmxpY0tleUNyZWRlbnRpYWxLaW5kQXNzZXJ0aW9u
UGxhY2Vob2xkZXIsCiB9OwogCitAY2xhc3MgQVNDUHVibGljS2V5Q3JlZGVudGlhbERlc2NyaXB0
b3I7CisKK0BpbnRlcmZhY2UgQVNDUHVibGljS2V5Q3JlZGVudGlhbERlc2NyaXB0b3IgOiBOU09i
amVjdCA8TlNTZWN1cmVDb2Rpbmc+CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aENyZWRlbnRp
YWxJRDooTlNEYXRhICopY3JlZGVudGlhbElEIHRyYW5zcG9ydHM6KG51bGxhYmxlIE5TQXJyYXk8
TlNTdHJpbmcgKj4gKilhbGxvd2VkVHJhbnNwb3J0czsKKworQHByb3BlcnR5IChub25hdG9taWMs
IHJlYWRvbmx5KSBOU0RhdGEgKmNyZWRlbnRpYWxJRDsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBu
dWxsYWJsZSwgcmVhZG9ubHkpIE5TQXJyYXk8TlNTdHJpbmcgKj4gKnRyYW5zcG9ydHM7CisKK0Bl
bmQKKworQGNsYXNzIEFTQ1B1YmxpY0tleUNyZWRlbnRpYWxEZXNjcmlwdG9yOworCit0eXBlZGVm
IE5TX0VOVU0oTlNVSW50ZWdlciwgQVNDUHVibGljS2V5Q3JlZGVudGlhbEtpbmQpIHsKKyAgICBB
U0NQdWJsaWNLZXlDcmVkZW50aWFsS2luZFBsYXRmb3JtID0gMSwKKyAgICBBU0NQdWJsaWNLZXlD
cmVkZW50aWFsS2luZFNlY3VyaXR5S2V5LAorfTsKKworQGludGVyZmFjZSBBU0NQdWJsaWNLZXlD
cmVkZW50aWFsQXNzZXJ0aW9uT3B0aW9ucyA6IE5TT2JqZWN0IDxOU1NlY3VyZUNvZGluZz4KKwor
LSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoS2luZDooQVNDUHVibGljS2V5Q3JlZGVudGlhbEtpbmQp
Y3JlZGVudGlhbEtpbmQgcmVseWluZ1BhcnR5SWRlbnRpZmllcjooTlNTdHJpbmcgKilyZWx5aW5n
UGFydHlJZGVudGlmaWVyIGNoYWxsZW5nZTooTlNEYXRhICopY2hhbGxlbmdlIHVzZXJWZXJpZmlj
YXRpb25QcmVmZXJlbmNlOihudWxsYWJsZSBOU1N0cmluZyAqKXVzZXJWZXJpZmljYXRpb25QcmVm
ZXJlbmNlIGFsbG93ZWRDcmVkZW50aWFsczoobnVsbGFibGUgTlNBcnJheTxBU0NQdWJsaWNLZXlD
cmVkZW50aWFsRGVzY3JpcHRvciAqPiAqKWFsbG93ZWRDcmVkZW50aWFsczsKKworLSAoaW5zdGFu
Y2V0eXBlKWluaXRXaXRoS2luZDooQVNDUHVibGljS2V5Q3JlZGVudGlhbEtpbmQpY3JlZGVudGlh
bEtpbmQgcmVseWluZ1BhcnR5SWRlbnRpZmllcjooTlNTdHJpbmcgKilyZWx5aW5nUGFydHlJZGVu
dGlmaWVyIGNsaWVudERhdGFIYXNoOihOU0RhdGEgKiljbGllbnREYXRhSGFzaCB1c2VyVmVyaWZp
Y2F0aW9uUHJlZmVyZW5jZToobnVsbGFibGUgTlNTdHJpbmcgKil1c2VyVmVyaWZpY2F0aW9uUHJl
ZmVyZW5jZSBhbGxvd2VkQ3JlZGVudGlhbHM6KG51bGxhYmxlIE5TQXJyYXk8QVNDUHVibGljS2V5
Q3JlZGVudGlhbERlc2NyaXB0b3IgKj4gKilhbGxvd2VkQ3JlZGVudGlhbHM7CisKK0Bwcm9wZXJ0
eSAobm9uYXRvbWljLCByZWFkb25seSkgQVNDUHVibGljS2V5Q3JlZGVudGlhbEtpbmQgY3JlZGVu
dGlhbEtpbmQ7CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSwgcmVhZG9ubHkpIE5TU3RyaW5n
ICpyZWx5aW5nUGFydHlJZGVudGlmaWVyOworQHByb3BlcnR5IChub25hdG9taWMsIG51bGxhYmxl
LCBjb3B5LCByZWFkb25seSkgTlNEYXRhICpjaGFsbGVuZ2U7CisvLyBJZiBjbGllbnREYXRhSGFz
aCBpcyBudWxsLCB0aGVuIGdldHMgZ2VuZXJhdGVkIGZyb20gY2hhbGxlbmdlIGFuZCByZWx5aW5n
UGFydHlJZGVudGlmaWVyLgorQHByb3BlcnR5IChub25hdG9taWMsIG51bGxhYmxlLCBjb3B5KSBO
U0RhdGEgKmNsaWVudERhdGFIYXNoOworQHByb3BlcnR5IChub25hdG9taWMsIG51bGxhYmxlLCBy
ZWFkb25seSwgY29weSkgTlNTdHJpbmcgKnVzZXJWZXJpZmljYXRpb25QcmVmZXJlbmNlOworCitA
cHJvcGVydHkgKG5vbmF0b21pYywgbnVsbGFibGUsIHJlYWRvbmx5LCBjb3B5KSBOU0FycmF5PEFT
Q1B1YmxpY0tleUNyZWRlbnRpYWxEZXNjcmlwdG9yICo+ICphbGxvd2VkQ3JlZGVudGlhbHM7CisK
K0BlbmQKKworCit0eXBlZGVmIE5TX09QVElPTlMoTlNVSW50ZWdlciwgQVNDQ3JlZGVudGlhbFJl
cXVlc3RUeXBlcykgeworICAgIEFTQ0NyZWRlbnRpYWxSZXF1ZXN0VHlwZU5vbmUgPSAwLAorICAg
IEFTQ0NyZWRlbnRpYWxSZXF1ZXN0VHlwZVBhc3N3b3JkID0gMSA8PCAwLAorICAgIEFTQ0NyZWRl
bnRpYWxSZXF1ZXN0VHlwZUFwcGxlSUQgPSAxIDw8IDEsCisgICAgQVNDQ3JlZGVudGlhbFJlcXVl
c3RUeXBlUGxhdGZvcm1QdWJsaWNLZXlSZWdpc3RyYXRpb24gPSAxIDw8IDIsCisgICAgQVNDQ3Jl
ZGVudGlhbFJlcXVlc3RUeXBlUGxhdGZvcm1QdWJsaWNLZXlBc3NlcnRpb24gPSAxIDw8IDMsCisg
ICAgQVNDQ3JlZGVudGlhbFJlcXVlc3RUeXBlU2VjdXJpdHlLZXlQdWJsaWNLZXlSZWdpc3RyYXRp
b24gPSAxIDw8IDQsCisgICAgQVNDQ3JlZGVudGlhbFJlcXVlc3RUeXBlU2VjdXJpdHlLZXlQdWJs
aWNLZXlBc3NlcnRpb24gPSAxIDw8IDUsCit9OworCiBAaW50ZXJmYWNlIEFTQ1B1YmxpY0tleUNy
ZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMgOiBOU09iamVjdCA8TlNTZWN1cmVDb2Rpbmc+CiAKLUBw
cm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSBOU0RhdGEgKmNoYWxsZW5nZTsKK0Bwcm9wZXJ0eSAo
bm9uYXRvbWljLCBudWxsYWJsZSwgY29weSkgTlNEYXRhICpjaGFsbGVuZ2U7CitAcHJvcGVydHkg
KG5vbmF0b21pYywgbnVsbGFibGUsIGNvcHkpIE5TRGF0YSAqY2xpZW50RGF0YUhhc2g7CiBAcHJv
cGVydHkgKG5vbmF0b21pYywgY29weSkgTlNTdHJpbmcgKnJlbHlpbmdQYXJ0eUlkZW50aWZpZXI7
CiBAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgTlNTdHJpbmcgKnVzZXJOYW1lOwogQHByb3Bl
cnR5IChub25hdG9taWMsIGNvcHkpIE5TRGF0YSAqdXNlcklkZW50aWZpZXI7CiBAcHJvcGVydHkg
KG5vbmF0b21pYywgY29weSkgTlNTdHJpbmcgKnVzZXJEaXNwbGF5TmFtZTsKIEBwcm9wZXJ0eSAo
bm9uYXRvbWljLCBjb3B5KSBOU0FycmF5PE5TTnVtYmVyICo+ICpzdXBwb3J0ZWRBbGdvcml0aG1J
ZGVudGlmaWVyczsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBudWxsYWJsZSwgY29weSkgTlNTdHJp
bmcgKnVzZXJWZXJpZmljYXRpb25QcmVmZXJlbmNlOwogCiBAcHJvcGVydHkgKG5vbmF0b21pYykg
Qk9PTCBzaG91bGRSZXF1aXJlUmVzaWRlbnRLZXk7CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29w
eSkgTlNBcnJheTxBU0NQdWJsaWNLZXlDcmVkZW50aWFsRGVzY3JpcHRvciAqPiAqZXhjbHVkZWRD
cmVkZW50aWFsczsKIAogQGVuZAogCkBAIC0xNDksMTAgKzIwMywxMTUgQEAgdHlwZWRlZiBOU19F
TlVNKE5TSW50ZWdlciwgQVNDU2VjdXJpdHlLZXlQdWJsaWNLZXlDcmVkZW50aWFsS2luZCkgewog
CiBAZW5kCiAKK0BpbnRlcmZhY2UgQVNDQ3JlZGVudGlhbFJlcXVlc3RDb250ZXh0IDogTlNPYmpl
Y3QgPE5TU2VjdXJlQ29kaW5nPgorCistIChpbnN0YW5jZXR5cGUpaW5pdCBOU19VTkFWQUlMQUJM
RTsKKysgKGluc3RhbmNldHlwZSluZXcgTlNfVU5BVkFJTEFCTEU7CisKKy0gKGluc3RhbmNldHlw
ZSlpbml0V2l0aFJlcXVlc3RUeXBlczooQVNDQ3JlZGVudGlhbFJlcXVlc3RUeXBlcylyZXF1ZXN0
VHlwZXM7CisKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgTlNVSW50ZWdlciByZXF1
ZXN0VHlwZXM7CitAcHJvcGVydHkgKG5vbmF0b21pYywgbnVsbGFibGUsIGNvcHkpIE5TU3RyaW5n
ICpyZWx5aW5nUGFydHlJZGVudGlmaWVyOworCitAcHJvcGVydHkgKG5vbmF0b21pYywgbnVsbGFi
bGUsIGNvcHkpIEFTQ1B1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMgKnBsYXRmb3Jt
S2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uczsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBudWxs
YWJsZSwgY29weSkgQVNDUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyAqc2VjdXJp
dHlLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zOworCitAcHJvcGVydHkgKG5vbmF0b21pYywg
bnVsbGFibGUsIGNvcHkpIEFTQ1B1YmxpY0tleUNyZWRlbnRpYWxBc3NlcnRpb25PcHRpb25zICpw
bGF0Zm9ybUtleUNyZWRlbnRpYWxBc3NlcnRpb25PcHRpb25zOworQHByb3BlcnR5IChub25hdG9t
aWMsIG51bGxhYmxlLCBjb3B5KSBBU0NQdWJsaWNLZXlDcmVkZW50aWFsQXNzZXJ0aW9uT3B0aW9u
cyAqc2VjdXJpdHlLZXlDcmVkZW50aWFsQXNzZXJ0aW9uT3B0aW9uczsKKworQGVuZAorCiBAcHJv
dG9jb2wgQVNDQ3JlZGVudGlhbFByb3RvY29sIDxOU09iamVjdCwgTlNTZWN1cmVDb2Rpbmc+CiAK
IEBlbmQKIAorQGNsYXNzIF9XS0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlOworCitA
aW50ZXJmYWNlIEFTQ1BsYXRmb3JtUHVibGljS2V5Q3JlZGVudGlhbFJlZ2lzdHJhdGlvbiA6IE5T
T2JqZWN0IDxBU0NDcmVkZW50aWFsUHJvdG9jb2w+CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0
aFJlbHlpbmdQYXJ0eUlkZW50aWZpZXI6KE5TU3RyaW5nICopcmVseWluZ1BhcnR5SWRlbnRpZmll
ciBhdHRlc3RhdGlvbk9iamVjdDooTlNEYXRhICopYXR0ZXN0YXRpb25PYmplY3QgcmF3Q2xpZW50
RGF0YUpTT046KE5TRGF0YSAqKXJhd0NsaWVudERhdGFKU09OIGNyZWRlbnRpYWxJRDooTlNEYXRh
ICopY3JlZGVudGlhbElEOworCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhSZWx5aW5nUGFydHlJ
ZGVudGlmaWVyOihOU1N0cmluZyAqKXJlbHlpbmdQYXJ0eUlkZW50aWZpZXIgYXV0aGVudGljYXRv
ckF0dGVzdGF0aW9uUmVzcG9uc2U6KF9XS0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNl
ICopYXR0ZXN0YXRpb25SZXNwb25zZSByYXdDbGllbnREYXRhSlNPTjooTlNEYXRhICopcmF3Q2xp
ZW50RGF0YUpTT047CisKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5LCByZWFkb25seSkgTlNE
YXRhICpjcmVkZW50aWFsSUQ7CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSwgcmVhZG9ubHkp
IE5TU3RyaW5nICpyZWx5aW5nUGFydHlJZGVudGlmaWVyOworQHByb3BlcnR5IChub25hdG9taWMs
IGNvcHksIHJlYWRvbmx5KSBOU0RhdGEgKmF0dGVzdGF0aW9uT2JqZWN0OworQHByb3BlcnR5IChu
b25hdG9taWMsIGNvcHksIHJlYWRvbmx5KSBOU0RhdGEgKnJhd0NsaWVudERhdGFKU09OOworCisr
IChpbnN0YW5jZXR5cGUpbmV3IE5TX1VOQVZBSUxBQkxFOworLSAoaW5zdGFuY2V0eXBlKWluaXQg
TlNfVU5BVkFJTEFCTEU7CisKK0BlbmQKKworQGludGVyZmFjZSBBU0NTZWN1cml0eUtleVB1Ymxp
Y0tleUNyZWRlbnRpYWxSZWdpc3RyYXRpb24gOiBOU09iamVjdCA8QVNDQ3JlZGVudGlhbFByb3Rv
Y29sPgorCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhSZWx5aW5nUGFydHlJZGVudGlmaWVyOihO
U1N0cmluZyAqKXJlbHlpbmdQYXJ0eUlkZW50aWZpZXIgYXV0aGVudGljYXRvckF0dGVzdGF0aW9u
UmVzcG9uc2U6KF9XS0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlICopYXR0ZXN0YXRp
b25SZXNwb25zZTsKKworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHksIHJlYWRvbmx5KSBOU0Rh
dGEgKmNyZWRlbnRpYWxJRDsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5LCByZWFkb25seSkg
TlNEYXRhICpyYXdDbGllbnREYXRhSlNPTjsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5LCBy
ZWFkb25seSkgTlNTdHJpbmcgKnJlbHlpbmdQYXJ0eUlkZW50aWZpZXI7CitAcHJvcGVydHkgKG5v
bmF0b21pYywgY29weSwgcmVhZG9ubHkpIE5TRGF0YSAqYXR0ZXN0YXRpb25PYmplY3Q7CisKK0Bl
bmQKKworQGNsYXNzIF9XS0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTsKKworQGludGVy
ZmFjZSBBU0NQbGF0Zm9ybVB1YmxpY0tleUNyZWRlbnRpYWxBc3NlcnRpb24gOiBOU09iamVjdCA8
QVNDQ3JlZGVudGlhbFByb3RvY29sPgorCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhSZWx5aW5n
UGFydHlJZGVudGlmaWVyOihOU1N0cmluZyAqKXJlbHlpbmdQYXJ0eUlkZW50aWZpZXIgYXV0aGVu
dGljYXRvckFzc2VydGlvblJlc3BvbnNlOihfV0tBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9u
c2UgKilhc3NlcnRpb25SZXNwb25zZTsKKworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHksIHJl
YWRvbmx5KSBOU0RhdGEgKmNyZWRlbnRpYWxJRDsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5
LCByZWFkb25seSkgTlNEYXRhICpyYXdDbGllbnREYXRhSlNPTjsKK0Bwcm9wZXJ0eSAobm9uYXRv
bWljLCBjb3B5LCByZWFkb25seSkgTlNTdHJpbmcgKnJlbHlpbmdQYXJ0eUlkZW50aWZpZXI7CitA
cHJvcGVydHkgKG5vbmF0b21pYywgY29weSwgcmVhZG9ubHkpIE5TRGF0YSAqYXV0aGVudGljYXRv
ckRhdGE7CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSwgcmVhZG9ubHkpIE5TRGF0YSAqc2ln
bmF0dXJlOworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHksIHJlYWRvbmx5LCBudWxsYWJsZSkg
TlNEYXRhICp1c2VySGFuZGxlOworCitAZW5kCisKK0BpbnRlcmZhY2UgQVNDU2VjdXJpdHlLZXlQ
dWJsaWNLZXlDcmVkZW50aWFsQXNzZXJ0aW9uIDogTlNPYmplY3QgPEFTQ0NyZWRlbnRpYWxQcm90
b2NvbD4KKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoUmVseWluZ1BhcnR5SWRlbnRpZmllcjoo
TlNTdHJpbmcgKilyZWx5aW5nUGFydHlJZGVudGlmaWVyIGF1dGhlbnRpY2F0b3JBc3NlcnRpb25S
ZXNwb25zZTooX1dLQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlICopYXNzZXJ0aW9uUmVz
cG9uc2U7CisKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5LCByZWFkb25seSkgTlNEYXRhICpj
cmVkZW50aWFsSUQ7CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSwgcmVhZG9ubHkpIE5TU3Ry
aW5nICpyZWx5aW5nUGFydHlJZGVudGlmaWVyOworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHks
IHJlYWRvbmx5KSBOU0RhdGEgKmF1dGhlbnRpY2F0b3JEYXRhOworQHByb3BlcnR5IChub25hdG9t
aWMsIGNvcHksIHJlYWRvbmx5KSBOU0RhdGEgKnNpZ25hdHVyZTsKK0Bwcm9wZXJ0eSAobm9uYXRv
bWljLCBjb3B5LCByZWFkb25seSwgbnVsbGFibGUpIE5TRGF0YSAqdXNlckhhbmRsZTsKK0Bwcm9w
ZXJ0eSAobm9uYXRvbWljLCBjb3B5LCByZWFkb25seSkgTlNEYXRhICpyYXdDbGllbnREYXRhSlNP
TjsKKworQGVuZAorCitAcHJvdG9jb2wgQVNDQWdlbnRQcm90b2NvbCA8TlNPYmplY3Q+CisKKyNp
ZiBUQVJHRVRfT1NfSU9TICYmICFUQVJHRVRfT1NfTUFDQ0FUQUxZU1QKKy0gKHZvaWQpcGVyZm9y
bUF1dGhvcml6YXRpb25SZXF1ZXN0c0ZvckNvbnRleHQ6KEFTQ0NyZWRlbnRpYWxSZXF1ZXN0Q29u
dGV4dCAqKWNvbnRleHQgd2l0aENvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShpZCA8QVNDQ3Jl
ZGVudGlhbFByb3RvY29sPiBfTnVsbGFibGUgY3JlZGVudGlhbCwgTlNFcnJvciAqIF9OdWxsYWJs
ZSBlcnJvcikpY29tcGxldGlvbkhhbmRsZXI7CisjZWxpZiBUQVJHRVRfT1NfT1NYIHx8IFRBUkdF
VF9PU19NQUNDQVRBTFlTVAorLSAodm9pZClwZXJmb3JtQXV0aG9yaXphdGlvblJlcXVlc3RzRm9y
Q29udGV4dDooQVNDQ3JlZGVudGlhbFJlcXVlc3RDb250ZXh0ICopY29udGV4dCB3aXRoQ2xlYXJh
bmNlSGFuZGxlcjoodm9pZCAoXikoTlNYUENMaXN0ZW5lckVuZHBvaW50ICogX051bGxhYmxlIGRh
ZW1vbkVuZHBvaW50LCBOU0Vycm9yICogX051bGxhYmxlIGVycm9yKSljbGVhcmFuY2VIYW5kbGVy
OworCistICh2b2lkKWJlZ2luQXV0aG9yaXphdGlvbkZvckFwcGxpY2F0aW9uSWRlbnRpZmllcjoo
TlNTdHJpbmcgKilhcHBsaWNhdGlvbklkZW50aWZpZXIgZnJvbUVuZHBvaW50OihOU1hQQ0xpc3Rl
bmVyRW5kcG9pbnQgKilsaXN0ZW5lckVuZHBvaW50OworCistICh2b2lkKXVzZXJTZWxlY3RlZExv
Z2luQ2hvaWNlOihpZCA8QVNDTG9naW5DaG9pY2VQcm90b2NvbD4pbG9naW5DaG9pY2UgYXV0aGVu
dGljYXRlZENvbnRleHQ6KExBQ29udGV4dCAqKWNvbnRleHQgY29tcGxldGlvbkhhbmRsZXI6KHZv
aWQgKF4pKGlkIDxBU0NDcmVkZW50aWFsUHJvdG9jb2w+IF9OdWxsYWJsZSwgTlNFcnJvciAqIF9O
dWxsYWJsZSkpY29tcGxldGlvbkhhbmRsZXI7CisKKy0gKHZvaWQpcmVxdWVzdENvbXBsZXRlZFdp
dGhDcmVkZW50aWFsOihudWxsYWJsZSBpZDxBU0NDcmVkZW50aWFsUHJvdG9jb2w+KWNyZWRlbnRp
YWwgZXJyb3I6KG51bGxhYmxlIE5TRXJyb3IgKillcnJvcjsKKyNlbmRpZgorCitAZW5kCisKK0Bp
bnRlcmZhY2UgQVNDQWdlbnRQcm94eSA6IE5TT2JqZWN0IDxBU0NBZ2VudFByb3RvY29sPgorCist
IChpbnN0YW5jZXR5cGUpaW5pdDsKKworI2lmIFRBUkdFVF9PU19PU1gKKy0gKGluc3RhbmNldHlw
ZSlpbml0V2l0aEVuZHBvaW50OihOU1hQQ0xpc3RlbmVyRW5kcG9pbnQgKillbmRwb2ludDsKKyNl
bmRpZgorCistICh2b2lkKWludmFsaWRhdGU7CisKKy0gKHZvaWQpcmVjb25uZWN0SWZOZWNlc3Nh
cnk7CisKK0BlbmQKKwogLy8gRklYTUUoMjE5NzY3KTogUmVtb3ZlIEFTQ0FwcGxlSURDcmVkZW50
aWFsLgogQGludGVyZmFjZSBBU0NBcHBsZUlEQ3JlZGVudGlhbCA6IE5TT2JqZWN0IDxBU0NDcmVk
ZW50aWFsUHJvdG9jb2w+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0KaW5kZXggZTVmOWQ2
ZTRmNzExY2ZhZDAxODEzZjU0YTI0ODEyMGU3Y2NmMzBmNi4uNGI5MTRlNDAxNGMzYmFlODU4M2Qz
NzgxMTI2YzExNmIwZjg4NWQzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0KQEAgLTg3
LDcgKzg3LDcgQEAgc3RhdGljIFJldGFpblB0cjxOU0RhdGE+IHByb2R1Y2VDbGllbnREYXRhSnNv
bihfV0tXZWJBdXRoZW50aWNhdGlvblR5cGUgdHlwZSwgTlMKICAgICBhdXRvIGNoYWxsZW5nZUJ1
ZmZlciA9IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50
OF90Kj4oY2hhbGxlbmdlLmJ5dGVzKSwgY2hhbGxlbmdlLmxlbmd0aCk7CiAgICAgYXV0byBzZWN1
cml0eU9yaWdpbiA9IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKG9y
aWdpbik7CiAKLSAgICBhdXRvIGNsaWVudERhdGFKc29uID0gYnVpbGRDbGllbnREYXRhSnNvbihj
bGllbnREYXRhVHlwZSwgV2ViQ29yZTo6QnVmZmVyU291cmNlKGNoYWxsZW5nZUJ1ZmZlciksIHNl
Y3VyaXR5T3JpZ2luKTsKKyAgICBhdXRvIGNsaWVudERhdGFKc29uID0gYnVpbGRDbGllbnREYXRh
SnNvbihjbGllbnREYXRhVHlwZSwgV2ViQ29yZTo6QnVmZmVyU291cmNlKGNoYWxsZW5nZUJ1ZmZl
ciksIHNlY3VyaXR5T3JpZ2luLCBXZWJBdXRobjo6U2NvcGU6OlNhbWVPcmlnaW4pOwogICAgIHJl
dHVybiBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVzOmNsaWVudERhdGFKc29u
LT5kYXRhKCkgbGVuZ3RoOmNsaWVudERhdGFKc29uLT5ieXRlTGVuZ3RoKCldKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2Ev
V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQ
cm94eS5tbQppbmRleCAzZjA5YzBkNzAwMGQzMGY2ZDQwM2FhMzcyOWM5YTk4ZGQyOTI0Yjk0Li5l
ZDMyYzhiNDNiMTNmZGE3ZTg4NDA3NjRiZmYzZTgxZDc3OTQ1MzBhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3JQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5tbQpA
QCAtNTAsNiArNTAsMTEgQEAgc3RhdGljIGlubGluZSBSZWY8QXJyYXlCdWZmZXI+IHRvQXJyYXlC
dWZmZXIoTlNEYXRhICpkYXRhKQogICAgIHJldHVybiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuYnl0ZXMpLCBkYXRhLmxlbmd0aCk7CiB9
CiAKK3N0YXRpYyBpbmxpbmUgUmV0YWluUHRyPE5TRGF0YT4gdG9OU0RhdGEoY29uc3QgVmVjdG9y
PHVpbnQ4X3Q+JiBkYXRhKQoreworICAgIHJldHVybiBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBp
bml0V2l0aEJ5dGVzOmRhdGEuZGF0YSgpIGxlbmd0aDpkYXRhLnNpemUoKV0pOworfQorCiBzdGF0
aWMgaW5saW5lIFJldGFpblB0cjxOU1N0cmluZz4gdG9OU1N0cmluZyhVc2VyVmVyaWZpY2F0aW9u
UmVxdWlyZW1lbnQgdXNlclZlcmlmaWNhdGlvblJlcXVpcmVtZW50KQogewogICAgIHN3aXRjaCAo
dXNlclZlcmlmaWNhdGlvblJlcXVpcmVtZW50KSB7CkBAIC0xNDUsNyArMTUwLDcgQEAgc3RhdGlj
IGlubGluZSBSZXRhaW5QdHI8QVNDUHVibGljS2V5Q3JlZGVudGlhbERlc2NyaXB0b3I+IHRvQVND
RGVzY3JpcHRvcihQdWJsaWMKICAgICByZXR1cm4gYWRvcHROUyhbYWxsb2NBU0NQdWJsaWNLZXlD
cmVkZW50aWFsRGVzY3JpcHRvckluc3RhbmNlKCkgaW5pdFdpdGhDcmVkZW50aWFsSUQ6V2ViQ29y
ZTo6dG9OU0RhdGEoZGVzY3JpcHRvci5pZCkuZ2V0KCkgdHJhbnNwb3J0czp0cmFuc3BvcnRzLmdl
dCgpXSk7CiB9CiAKLXN0YXRpYyBSZXRhaW5QdHI8QVNDQ3JlZGVudGlhbFJlcXVlc3RDb250ZXh0
PiBjb25maWd1cmVSZWdpc3RyYXRpb25SZXF1ZXN0Q29udGV4dChjb25zdCBQdWJsaWNLZXlDcmVk
ZW50aWFsQ3JlYXRpb25PcHRpb25zJiBvcHRpb25zKQorc3RhdGljIFJldGFpblB0cjxBU0NDcmVk
ZW50aWFsUmVxdWVzdENvbnRleHQ+IGNvbmZpZ3VyZVJlZ2lzdHJhdGlvblJlcXVlc3RDb250ZXh0
KGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMmIG9wdGlvbnMsIFZlY3Rv
cjx1aW50OF90PiBoYXNoKQogewogICAgIEFTQ0NyZWRlbnRpYWxSZXF1ZXN0VHlwZXMgcmVxdWVz
dFR5cGVzID0gQVNDQ3JlZGVudGlhbFJlcXVlc3RUeXBlUGxhdGZvcm1QdWJsaWNLZXlSZWdpc3Ry
YXRpb24gfCBBU0NDcmVkZW50aWFsUmVxdWVzdFR5cGVTZWN1cml0eUtleVB1YmxpY0tleVJlZ2lz
dHJhdGlvbjsKIApAQCAtMTY5LDcgKzE3NCwxMCBAQCBzdGF0aWMgUmV0YWluUHRyPEFTQ0NyZWRl
bnRpYWxSZXF1ZXN0Q29udGV4dD4gY29uZmlndXJlUmVnaXN0cmF0aW9uUmVxdWVzdENvbnRleAog
CiAgICAgYXV0byBjcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zID0gYWRvcHROUyhbYWxsb2NBU0NQ
dWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zSW5zdGFuY2UoKSBpbml0XSk7CiAKLSAg
ICBbY3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyBzZXRDaGFsbGVuZ2U6V2ViQ29yZTo6dG9OU0Rh
dGEob3B0aW9ucy5jaGFsbGVuZ2UpLmdldCgpXTsKKyAgICBpZiAoW2NyZWRlbnRpYWxDcmVhdGlv
bk9wdGlvbnMgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzZXRDbGllbnREYXRhSGFzaDop
XSkKKyAgICAgICAgW2NyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMgc2V0Q2xpZW50RGF0YUhhc2g6
dG9OU0RhdGEoaGFzaCkuZ2V0KCldOworICAgIGVsc2UKKyAgICAgICAgW2NyZWRlbnRpYWxDcmVh
dGlvbk9wdGlvbnMgc2V0Q2hhbGxlbmdlOldlYkNvcmU6OnRvTlNEYXRhKG9wdGlvbnMuY2hhbGxl
bmdlKS5nZXQoKV07CiAgICAgW2NyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMgc2V0UmVseWluZ1Bh
cnR5SWRlbnRpZmllcjpvcHRpb25zLnJwLmlkXTsKICAgICBbY3JlZGVudGlhbENyZWF0aW9uT3B0
aW9ucyBzZXRVc2VyTmFtZTpvcHRpb25zLnVzZXIubmFtZV07CiAgICAgW2NyZWRlbnRpYWxDcmVh
dGlvbk9wdGlvbnMgc2V0VXNlcklkZW50aWZpZXI6V2ViQ29yZTo6dG9OU0RhdGEob3B0aW9ucy51
c2VyLmlkKS5nZXQoKV07CkBAIC0yMDIsNyArMjEwLDcgQEAgc3RhdGljIFJldGFpblB0cjxBU0ND
cmVkZW50aWFsUmVxdWVzdENvbnRleHQ+IGNvbmZpZ3VyZVJlZ2lzdHJhdGlvblJlcXVlc3RDb250
ZXgKICAgICByZXR1cm4gcmVxdWVzdENvbnRleHQ7CiB9CiAKLXN0YXRpYyBSZXRhaW5QdHI8QVND
Q3JlZGVudGlhbFJlcXVlc3RDb250ZXh0PiBjb25maWd1cmF0aW9uQXNzZXJ0aW9uUmVxdWVzdENv
bnRleHQoY29uc3QgUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zJiBvcHRpb25zKQor
c3RhdGljIFJldGFpblB0cjxBU0NDcmVkZW50aWFsUmVxdWVzdENvbnRleHQ+IGNvbmZpZ3VyYXRp
b25Bc3NlcnRpb25SZXF1ZXN0Q29udGV4dChjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVz
dE9wdGlvbnMmIG9wdGlvbnMsIFZlY3Rvcjx1aW50OF90PiBoYXNoKQogewogICAgIEFTQ0NyZWRl
bnRpYWxSZXF1ZXN0VHlwZXMgcmVxdWVzdFR5cGVzID0gQVNDQ3JlZGVudGlhbFJlcXVlc3RUeXBl
UGxhdGZvcm1QdWJsaWNLZXlBc3NlcnRpb24gfCBBU0NDcmVkZW50aWFsUmVxdWVzdFR5cGVTZWN1
cml0eUtleVB1YmxpY0tleUFzc2VydGlvbjsKIApAQCAtMjI3LDEzICsyMzUsMzAgQEAgc3RhdGlj
IFJldGFpblB0cjxBU0NDcmVkZW50aWFsUmVxdWVzdENvbnRleHQ+IGNvbmZpZ3VyYXRpb25Bc3Nl
cnRpb25SZXF1ZXN0Q29udGUKICAgICBhdXRvIHJlcXVlc3RDb250ZXh0ID0gYWRvcHROUyhbYWxs
b2NBU0NDcmVkZW50aWFsUmVxdWVzdENvbnRleHRJbnN0YW5jZSgpIGluaXRXaXRoUmVxdWVzdFR5
cGVzOnJlcXVlc3RUeXBlc10pOwogICAgIFtyZXF1ZXN0Q29udGV4dCBzZXRSZWx5aW5nUGFydHlJ
ZGVudGlmaWVyOm9wdGlvbnMucnBJZF07CiAKLSAgICBhdXRvIGNoYWxsZW5nZSA9IFdlYkNvcmU6
OnRvTlNEYXRhKG9wdGlvbnMuY2hhbGxlbmdlKTsKKyAgICBpZiAocmVxdWVzdFR5cGVzICYgQVND
Q3JlZGVudGlhbFJlcXVlc3RUeXBlUGxhdGZvcm1QdWJsaWNLZXlBc3NlcnRpb24pIHsKKyAgICAg
ICAgYXV0byBhc3NlcnRpb25PcHRpb25zID0gYWRvcHROUyhhbGxvY0FTQ1B1YmxpY0tleUNyZWRl
bnRpYWxBc3NlcnRpb25PcHRpb25zSW5zdGFuY2UoKSk7CisgICAgICAgIGlmIChbYXNzZXJ0aW9u
T3B0aW9ucyByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGluaXRXaXRoS2luZDpyZWx5aW5n
UGFydHlJZGVudGlmaWVyOmNsaWVudERhdGFIYXNoOnVzZXJWZXJpZmljYXRpb25QcmVmZXJlbmNl
OmFsbG93ZWRDcmVkZW50aWFsczopXSkgeworICAgICAgICAgICAgYXV0byBuc0hhc2ggPSB0b05T
RGF0YShoYXNoKTsKKyAgICAgICAgICAgIFthc3NlcnRpb25PcHRpb25zIGluaXRXaXRoS2luZDpB
U0NQdWJsaWNLZXlDcmVkZW50aWFsS2luZFBsYXRmb3JtIHJlbHlpbmdQYXJ0eUlkZW50aWZpZXI6
b3B0aW9ucy5ycElkIGNsaWVudERhdGFIYXNoOm5zSGFzaC5nZXQoKSB1c2VyVmVyaWZpY2F0aW9u
UHJlZmVyZW5jZTp1c2VyVmVyaWZpY2F0aW9uLmdldCgpIGFsbG93ZWRDcmVkZW50aWFsczphbGxv
d2VkQ3JlZGVudGlhbHMuZ2V0KCldOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgYXV0
byBjaGFsbGVuZ2UgPSBXZWJDb3JlOjp0b05TRGF0YShvcHRpb25zLmNoYWxsZW5nZSk7CisgICAg
ICAgICAgICBbYXNzZXJ0aW9uT3B0aW9ucyBpbml0V2l0aEtpbmQ6QVNDUHVibGljS2V5Q3JlZGVu
dGlhbEtpbmRQbGF0Zm9ybSByZWx5aW5nUGFydHlJZGVudGlmaWVyOm9wdGlvbnMucnBJZCBjaGFs
bGVuZ2U6Y2hhbGxlbmdlLmdldCgpIHVzZXJWZXJpZmljYXRpb25QcmVmZXJlbmNlOnVzZXJWZXJp
ZmljYXRpb24uZ2V0KCkgYWxsb3dlZENyZWRlbnRpYWxzOmFsbG93ZWRDcmVkZW50aWFscy5nZXQo
KV07CisgICAgICAgIH0KIAotICAgIGlmIChyZXF1ZXN0VHlwZXMgJiBBU0NDcmVkZW50aWFsUmVx
dWVzdFR5cGVQbGF0Zm9ybVB1YmxpY0tleUFzc2VydGlvbikKLSAgICAgICAgW3JlcXVlc3RDb250
ZXh0IHNldFBsYXRmb3JtS2V5Q3JlZGVudGlhbEFzc2VydGlvbk9wdGlvbnM6W2FsbG9jQVNDUHVi
bGljS2V5Q3JlZGVudGlhbEFzc2VydGlvbk9wdGlvbnNJbnN0YW5jZSgpIGluaXRXaXRoS2luZDpB
U0NQdWJsaWNLZXlDcmVkZW50aWFsS2luZFBsYXRmb3JtIHJlbHlpbmdQYXJ0eUlkZW50aWZpZXI6
b3B0aW9ucy5ycElkIGNoYWxsZW5nZTpjaGFsbGVuZ2UuZ2V0KCkgdXNlclZlcmlmaWNhdGlvblBy
ZWZlcmVuY2U6dXNlclZlcmlmaWNhdGlvbi5nZXQoKSBhbGxvd2VkQ3JlZGVudGlhbHM6YWxsb3dl
ZENyZWRlbnRpYWxzLmdldCgpXV07CisgICAgICAgIFtyZXF1ZXN0Q29udGV4dCBzZXRQbGF0Zm9y
bUtleUNyZWRlbnRpYWxBc3NlcnRpb25PcHRpb25zOmFzc2VydGlvbk9wdGlvbnMuZ2V0KCldOwor
ICAgIH0KIAotICAgIGlmIChyZXF1ZXN0VHlwZXMgJiBBU0NDcmVkZW50aWFsUmVxdWVzdFR5cGVT
ZWN1cml0eUtleVB1YmxpY0tleUFzc2VydGlvbikKLSAgICAgICAgW3JlcXVlc3RDb250ZXh0IHNl
dFNlY3VyaXR5S2V5Q3JlZGVudGlhbEFzc2VydGlvbk9wdGlvbnM6W2FsbG9jQVNDUHVibGljS2V5
Q3JlZGVudGlhbEFzc2VydGlvbk9wdGlvbnNJbnN0YW5jZSgpIGluaXRXaXRoS2luZDpBU0NQdWJs
aWNLZXlDcmVkZW50aWFsS2luZFNlY3VyaXR5S2V5IHJlbHlpbmdQYXJ0eUlkZW50aWZpZXI6b3B0
aW9ucy5ycElkIGNoYWxsZW5nZTpjaGFsbGVuZ2UuZ2V0KCkgdXNlclZlcmlmaWNhdGlvblByZWZl
cmVuY2U6dXNlclZlcmlmaWNhdGlvbi5nZXQoKSBhbGxvd2VkQ3JlZGVudGlhbHM6YWxsb3dlZENy
ZWRlbnRpYWxzLmdldCgpXV07CisgICAgaWYgKHJlcXVlc3RUeXBlcyAmIEFTQ0NyZWRlbnRpYWxS
ZXF1ZXN0VHlwZVNlY3VyaXR5S2V5UHVibGljS2V5QXNzZXJ0aW9uKSB7CisgICAgICAgIGF1dG8g
YXNzZXJ0aW9uT3B0aW9ucyA9IGFkb3B0TlMoYWxsb2NBU0NQdWJsaWNLZXlDcmVkZW50aWFsQXNz
ZXJ0aW9uT3B0aW9uc0luc3RhbmNlKCkpOworICAgICAgICBpZiAoW2Fzc2VydGlvbk9wdGlvbnMg
cmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihpbml0V2l0aEtpbmQ6cmVseWluZ1BhcnR5SWRl
bnRpZmllcjpjbGllbnREYXRhSGFzaDp1c2VyVmVyaWZpY2F0aW9uUHJlZmVyZW5jZTphbGxvd2Vk
Q3JlZGVudGlhbHM6KV0pIHsKKyAgICAgICAgICAgIGF1dG8gbnNIYXNoID0gdG9OU0RhdGEoaGFz
aCk7CisgICAgICAgICAgICBbYXNzZXJ0aW9uT3B0aW9ucyBpbml0V2l0aEtpbmQ6QVNDUHVibGlj
S2V5Q3JlZGVudGlhbEtpbmRTZWN1cml0eUtleSByZWx5aW5nUGFydHlJZGVudGlmaWVyOm9wdGlv
bnMucnBJZCBjbGllbnREYXRhSGFzaDpuc0hhc2guZ2V0KCkgdXNlclZlcmlmaWNhdGlvblByZWZl
cmVuY2U6dXNlclZlcmlmaWNhdGlvbi5nZXQoKSBhbGxvd2VkQ3JlZGVudGlhbHM6YWxsb3dlZENy
ZWRlbnRpYWxzLmdldCgpXTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGF1dG8gY2hh
bGxlbmdlID0gV2ViQ29yZTo6dG9OU0RhdGEob3B0aW9ucy5jaGFsbGVuZ2UpOworICAgICAgICAg
ICAgW2Fzc2VydGlvbk9wdGlvbnMgaW5pdFdpdGhLaW5kOkFTQ1B1YmxpY0tleUNyZWRlbnRpYWxL
aW5kU2VjdXJpdHlLZXkgcmVseWluZ1BhcnR5SWRlbnRpZmllcjpvcHRpb25zLnJwSWQgY2hhbGxl
bmdlOmNoYWxsZW5nZS5nZXQoKSB1c2VyVmVyaWZpY2F0aW9uUHJlZmVyZW5jZTp1c2VyVmVyaWZp
Y2F0aW9uLmdldCgpIGFsbG93ZWRDcmVkZW50aWFsczphbGxvd2VkQ3JlZGVudGlhbHMuZ2V0KCld
OworICAgICAgICB9CisgICAgICAgIFtyZXF1ZXN0Q29udGV4dCBzZXRTZWN1cml0eUtleUNyZWRl
bnRpYWxBc3NlcnRpb25PcHRpb25zOmFzc2VydGlvbk9wdGlvbnMuZ2V0KCldOworICAgIH0KIAog
ICAgIHJldHVybiByZXF1ZXN0Q29udGV4dDsKIH0KQEAgLTI0Miw5ICsyNjcsOSBAQCBSZXRhaW5Q
dHI8QVNDQ3JlZGVudGlhbFJlcXVlc3RDb250ZXh0PiBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3JQcm94eTo6Y29udGV4dAogewogICAgIFJldGFpblB0cjxBU0NDcmVkZW50aWFsUmVxdWVzdENv
bnRleHQ+IHJlc3VsdDsKICAgICBXVEY6OnN3aXRjaE9uKHJlcXVlc3REYXRhLm9wdGlvbnMsIFsm
XShjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zJiBvcHRpb25zKSB7Ci0g
ICAgICAgIHJlc3VsdCA9IGNvbmZpZ3VyZVJlZ2lzdHJhdGlvblJlcXVlc3RDb250ZXh0KG9wdGlv
bnMpOworICAgICAgICByZXN1bHQgPSBjb25maWd1cmVSZWdpc3RyYXRpb25SZXF1ZXN0Q29udGV4
dChvcHRpb25zLCByZXF1ZXN0RGF0YS5oYXNoKTsKICAgICB9LCBbJl0oY29uc3QgUHVibGljS2V5
Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zJiBvcHRpb25zKSB7Ci0gICAgICAgIHJlc3VsdCA9IGNv
bmZpZ3VyYXRpb25Bc3NlcnRpb25SZXF1ZXN0Q29udGV4dChvcHRpb25zKTsKKyAgICAgICAgcmVz
dWx0ID0gY29uZmlndXJhdGlvbkFzc2VydGlvblJlcXVlc3RDb250ZXh0KG9wdGlvbnMsIHJlcXVl
c3REYXRhLmhhc2gpOwogICAgIH0pOwogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNWQ4
ZDEzN2E3ZDc0NGU5NjZiMWVkNTdkMzE4NmVmN2E1YTY5OTMzYi4uMzU2OGU2MDAzYjE2ODlkZDI3
M2E4Njc1Y2JjOTliYWFiNDI1ZjQwOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIxLTEyLTE0
ICBKIFBhc2NvZSAgPGpfcGFzY29lQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0aG5dIEFs
bG93IHNhbWUtc2l0ZSwgY3Jvc3Mtb3JpZ2luIGlmcmFtZSBnZXQoKQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0MzA5CisgICAgICAgIHJkYXI6Ly9w
cm9ibGVtLzg2NDg2MzEzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkIGxheW91dCB0ZXN0IGZvciBXZWJBdXRobiBnZXQgYXNzZXJ0aW9ucyBvbiBj
cm9zcy1zaXRlLCBzYW1lLXNpdGVzIGktZnJhbWVzIHdpdGgKKyAgICAgICAgcHVibGlja2V5LWNy
ZWRlbnRpYWxzLWdldCBmZWF0dXJlIHBvbGljeS4KKworICAgICAgICAqIGh0dHAvd3B0L3dlYmF1
dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1zYW1lLW9yaWdpbi13aXRoLWFuY2VzdG9ycy5odHRw
cy1leHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1j
cmVkZW50aWFsLXNhbWUtb3JpZ2luLXdpdGgtYW5jZXN0b3JzLmh0dHBzLmh0bWw6CisgICAgICAg
ICogaHR0cC93cHQvd2ViYXV0aG4vcmVzb3VyY2VzL3V0aWwuanM6CisKIDIwMjEtMTItMTQgIFJ5
YW4gSGFkZGFkICA8cnlhbmhhZGRhZEBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAo
cjI4Njk4Mik6IEFTU0VSVElPTiBGQUlMRUQ6IGNsaXBSZWN0c0NvbnRleHQucm9vdExheWVyID09
IG1fY2xpcFJlY3RzQ2FjaGUtPm1fY2xpcFJlY3RzUm9vdFtjbGlwUmVjdHNUeXBlXQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFs
LXNhbWUtb3JpZ2luLXdpdGgtYW5jZXN0b3JzLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1zYW1lLW9yaWdpbi13
aXRoLWFuY2VzdG9ycy5odHRwcy1leHBlY3RlZC50eHQKaW5kZXggNjUzMDY0NWExOTRiNDVhY2Qw
OTgzZmMzNzNiNWFiNmRhOTVmMTU5OC4uYzcwMjFkODE4MTcwMjQ0ZDYyNDhiZjA1ZWQ2YThlOTlj
Yzg3MTNmMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGlj
LWtleS1jcmVkZW50aWFsLXNhbWUtb3JpZ2luLXdpdGgtYW5jZXN0b3JzLmh0dHBzLWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRl
bnRpYWwtc2FtZS1vcmlnaW4td2l0aC1hbmNlc3RvcnMuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0y
LDQgKzIsNyBAQAogCiBQQVNTIFRlc3RzIHRoYXQgYSBmcmFtZSB0aGF0IGRvZXNuJ3Qgc2hhcmUg
dGhlIHNhbWUgb3JpZ2luIHdpdGggYWxsIGl0cyBhbmNlc3RvcnMgY291bGQgbm90IGFjY2VzcyB0
aGUgQVBJLgogUEFTUyBUZXN0cyB0aGF0IGEgZnJhbWUgdGhhdCBkb2Vzbid0IHNoYXJlIHRoZSBz
YW1lIG9yaWdpbiB3aXRoIGFsbCBpdHMgYW5jZXN0b3JzIGNvdWxkIG5vdCBhY2Nlc3MgdGhlIEFQ
SS4gMgorUEFTUyBUZXN0cyB0aGF0IGEgZnJhbWUgdGhhdCBpcyBzYW1lLXNpdGUsIGNyb3NzLW9y
aWdpbiB3aXRob3V0IHB1YmxpY2tleS1jcmVkZW50aWFscy1nZXQgZmVhdHVyZSBwb2xpY3kgY2Fu
bm90IHVzZSBnZXQoKS4KK1BBU1MgVGVzdHMgdGhhdCBhIGZyYW1lIHRoYXQgaXMgc2FtZS1zaXRl
LCBjcm9zcy1vcmlnaW4gd2l0aCBwdWJsaWNrZXktY3JlZGVudGlhbHMtZ2V0IGZlYXR1cmUgcG9s
aWN5IGNhbiB1c2UgZ2V0KCkuCitQQVNTIFRlc3RzIHRoYXQgYSBmcmFtZSB0aGF0IGlzIGNyb3Nz
LW9yaWdpbiwgTk9UIHNhbWUtc2l0ZSAgd2l0aCBwdWJsaWNrZXktY3JlZGVudGlhbHMtZ2V0IGZl
YXR1cmUgcG9saWN5IGNhbm5vdCB1c2UgZ2V0KCkuCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1zYW1lLW9yaWdpbi13aXRo
LWFuY2VzdG9ycy5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVi
bGljLWtleS1jcmVkZW50aWFsLXNhbWUtb3JpZ2luLXdpdGgtYW5jZXN0b3JzLmh0dHBzLmh0bWwK
aW5kZXggNGYxYzQwZDkxZmU3OTFkYmRlMjA5ZDI4NTI2NWFlMjA4YjczZDIzMi4uNTgxNDc1ZTUy
MDUwNGQwOGE5YzFmYTZmMjc4MjZjNGUyNTUyOGI2MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLXNhbWUtb3JpZ2luLXdpdGgt
YW5jZXN0b3JzLmh0dHBzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4v
cHVibGljLWtleS1jcmVkZW50aWFsLXNhbWUtb3JpZ2luLXdpdGgtYW5jZXN0b3JzLmh0dHBzLmh0
bWwKQEAgLTIyLDYgKzIyLDI0IEBACiAgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhtZXNz
YWdlLmRhdGEsICJQQVNTLiIpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0sICJUZXN0cyB0
aGF0IGEgZnJhbWUgdGhhdCBkb2Vzbid0IHNoYXJlIHRoZSBzYW1lIG9yaWdpbiB3aXRoIGFsbCBp
dHMgYW5jZXN0b3JzIGNvdWxkIG5vdCBhY2Nlc3MgdGhlIEFQSS4gMiIpOworCisgICAgICAgIHBy
b21pc2VfdGVzdCh0ID0+IHsKKyAgICAgICAgICAgIHJldHVybiB3aXRoU2FtZVNpdGVJZnJhbWUo
InNhbWVzaXRlLWlmcmFtZS5odG1sIikudGhlbigobWVzc2FnZSkgPT4geworICAgICAgICAgICAg
ICAgIGFzc2VydF9lcXVhbHMobWVzc2FnZS5kYXRhLCAiVGhyb3cgTm90QWxsb3dlZEVycm9yOiBU
aGUgb3JpZ2luIG9mIHRoZSBkb2N1bWVudCBpcyBub3QgdGhlIHNhbWUgYXMgaXRzIGFuY2VzdG9y
cy4iKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9LCAiVGVzdHMgdGhhdCBhIGZyYW1lIHRo
YXQgaXMgc2FtZS1zaXRlLCBjcm9zcy1vcmlnaW4gd2l0aG91dCBwdWJsaWNrZXktY3JlZGVudGlh
bHMtZ2V0IGZlYXR1cmUgcG9saWN5IGNhbm5vdCB1c2UgZ2V0KCkuIik7CisKKyAgICAgICAgcHJv
bWlzZV90ZXN0KHQgPT4geworICAgICAgICAgICAgcmV0dXJuIHdpdGhTYW1lU2l0ZUlmcmFtZSgi
c2FtZXNpdGUtaWZyYW1lLmh0bWwiLCAicHVibGlja2V5LWNyZWRlbnRpYWxzLWdldCIpLnRoZW4o
KG1lc3NhZ2UpID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKG1lc3NhZ2UuZGF0
YSwgIlBBU1MhIik7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSwgIlRlc3RzIHRoYXQgYSBm
cmFtZSB0aGF0IGlzIHNhbWUtc2l0ZSwgY3Jvc3Mtb3JpZ2luIHdpdGggcHVibGlja2V5LWNyZWRl
bnRpYWxzLWdldCBmZWF0dXJlIHBvbGljeSBjYW4gdXNlIGdldCgpLiIpOworCisgICAgICAgIHBy
b21pc2VfdGVzdCh0ID0+IHsKKyAgICAgICAgICAgIHJldHVybiB3aXRoQ3Jvc3NPcmlnaW5JZnJh
bWUoInNhbWVzaXRlLWlmcmFtZS5odG1sIiwgInB1YmxpY2tleS1jcmVkZW50aWFscy1nZXQiKS50
aGVuKChtZXNzYWdlKSA9PiB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhtZXNzYWdl
LmRhdGEsICJUaHJvdyBOb3RBbGxvd2VkRXJyb3I6IFRoZSBvcmlnaW4gb2YgdGhlIGRvY3VtZW50
IGlzIG5vdCB0aGUgc2FtZSBhcyBpdHMgYW5jZXN0b3JzLiIpOworICAgICAgICAgICAgfSk7Cisg
ICAgICAgIH0sICJUZXN0cyB0aGF0IGEgZnJhbWUgdGhhdCBpcyBjcm9zcy1vcmlnaW4sIE5PVCBz
YW1lLXNpdGUgIHdpdGggcHVibGlja2V5LWNyZWRlbnRpYWxzLWdldCBmZWF0dXJlIHBvbGljeSBj
YW5ub3QgdXNlIGdldCgpLiIpOwogICAgIDwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcmVzb3VyY2VzL3NhbWVzaXRl
LWlmcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcmVzb3VyY2VzL3Nh
bWVzaXRlLWlmcmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc2YjA3NGNmZDQ2Y2MyNTM3ZTY5ZTFlNDFl
NjAwYmM1NmZkZjA4N2QKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93
ZWJhdXRobi9yZXNvdXJjZXMvc2FtZXNpdGUtaWZyYW1lLmh0bWwKQEAgLTAsMCArMSwzMCBAQAor
PHNjcmlwdCBzcmM9Ii4vdXRpbC5qcyI+PC9zY3JpcHQ+Cis8aW5wdXQgdHlwZT0idGV4dCIgaWQ9
ImlucHV0Ij4KKzxzY3JpcHQ+CisgICAgY29uc3QgdXJsID0gbmV3IFVSTCh3aW5kb3cubG9jYXRp
b24uaHJlZik7CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCitpbnRlcm5hbHMuc2V0TW9ja1dl
YkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IG5mYzogeyBlcnJvcjogInN1Y2Nlc3MiLCBw
YXlsb2FkQmFzZTY0OiBbdGVzdE5mY0N0YXBWZXJzaW9uQmFzZTY0LCB0ZXN0R2V0SW5mb1Jlc3Bv
bnNlQXBkdUJhc2U2NCwgdGVzdEFzc2VydGlvbk1lc3NhZ2VBcGR1QmFzZTY0XSB9IH0pOworCisg
ICAgZnVuY3Rpb24gbWVzc2FnZVRvVG9wKG1lc3NhZ2UpIHsKKyAgICAgICAgdG9wLnBvc3RNZXNz
YWdlKG1lc3NhZ2UsICIqIik7CisgICAgfQorCisgICAgY29uc3QgcmVxdWVzdE9wdGlvbnMgPSB7
CisgICAgICAgIHB1YmxpY0tleTogeworICAgICAgICAgICAgY2hhbGxlbmdlOiBhc2NpaVRvVWlu
dDhBcnJheSgiMTIzNDU2IiksCisgICAgICAgICAgICB0aW1lb3V0OiAxMDAKKyAgICAgICAgfQor
ICAgIH07CisKKyAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgaW50ZXJuYWxzLndp
dGhVc2VyR2VzdHVyZSgoKSA9PiB7IGlucHV0LmZvY3VzKCk7IH0pOworCisgICAgbmF2aWdhdG9y
LmNyZWRlbnRpYWxzLmdldChyZXF1ZXN0T3B0aW9ucykudGhlbigKKyAgICAgICAgZnVuY3Rpb24o
dmFsdWUpIHsKKyAgICAgICAgICAgIG1lc3NhZ2VUb1RvcCgiUEFTUyEiKTsKKyAgICAgICAgfSwK
KyAgICAgICAgZnVuY3Rpb24oZXhjZXB0aW9uKSB7CisgICAgICAgICAgICBtZXNzYWdlVG9Ub3Ao
IlRocm93ICIgKyBleGNlcHRpb24ubmFtZSArICI6ICIgKyBleGNlcHRpb24ubWVzc2FnZSk7Cisg
ICAgICB9CisgICAgKTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93
cHQvd2ViYXV0aG4vcmVzb3VyY2VzL3V0aWwuanMgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJh
dXRobi9yZXNvdXJjZXMvdXRpbC5qcwppbmRleCA4YmY2ZDAyYmEyNzhjZGFmYjc5MDhhZjQ1ZGE1
MjVlMjVkMzgxNmYwLi44MDJlMTk1YTkwMTQ1OGIxYjU2NzRlYmY3NTc0YWVjNTg0ZTg1OTYyIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9yZXNvdXJjZXMvdXRpbC5q
cworKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9yZXNvdXJjZXMvdXRpbC5qcwpA
QCAtMzA0LDE4ICszMDQsMzMgQEAgZnVuY3Rpb24gd2FpdEZvckxvYWQoKQogICAgIH0pOwogfQog
Ci1mdW5jdGlvbiB3aXRoQ3Jvc3NPcmlnaW5JZnJhbWUocmVzb3VyY2VGaWxlKQorZnVuY3Rpb24g
d2l0aENyb3NzT3JpZ2luSWZyYW1lKHJlc291cmNlRmlsZSwgYWxsb3cgPSAiIikKIHsKICAgICBy
ZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHsKICAgICAgICAgd2FpdEZvckxvYWQoKS50
aGVuKChtZXNzYWdlKSA9PiB7CiAgICAgICAgICAgICByZXNvbHZlKG1lc3NhZ2UpOwogICAgICAg
ICB9KTsKICAgICAgICAgY29uc3QgZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpZnJh
bWUiKTsKKyAgICAgICAgZnJhbWUuYWxsb3cgPSBhbGxvdzsKICAgICAgICAgZnJhbWUuc3JjID0g
Z2V0X2hvc3RfaW5mbygpLkhUVFBTX1JFTU9URV9PUklHSU4gKyBSRVNPVVJDRVNfRElSICsgcmVz
b3VyY2VGaWxlOwogICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGZyYW1lKTsKICAg
ICB9KTsKIH0KIAorZnVuY3Rpb24gd2l0aFNhbWVTaXRlSWZyYW1lKHJlc291cmNlRmlsZSwgYWxs
b3cgPSAiIikKK3sKKyAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHsKKyAgICAg
ICAgd2FpdEZvckxvYWQoKS50aGVuKChtZXNzYWdlKSA9PiB7CisgICAgICAgICAgICByZXNvbHZl
KG1lc3NhZ2UpOworICAgICAgIH0pOworICAgICAgIGNvbnN0IGZyYW1lID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgiaWZyYW1lIik7CisgICAgICAgY29uc3QgaG9zdCA9IGdldF9ob3N0X2luZm8o
KTsKKyAgICAgICBmcmFtZS5hbGxvdyA9IGFsbG93OworICAgICAgIGZyYW1lLnNyYyA9ICJodHRw
czovLyIgKyBob3N0Lk9SSUdJTkFMX0hPU1QgKyAiOiIgKyBob3N0LkhUVFBTX1BPUlQyICsgUkVT
T1VSQ0VTX0RJUiArIHJlc291cmNlRmlsZTsKKyAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENo
aWxkKGZyYW1lKTsKKyAgICB9KTsKK30KKwogZnVuY3Rpb24gcHJvbWlzZVJlamVjdHModGVzdCwg
ZXhwZWN0ZWQsIHByb21pc2UsIGRlc2NyaXB0aW9uKQogewogICAgIHJldHVybiBwcm9taXNlLnRo
ZW4odGVzdC51bnJlYWNoZWRfZnVuYygiU2hvdWxkIGhhdmUgcmVqZWN0ZWQ6ICIgKyBkZXNjcmlw
dGlvbikpLmNhdGNoKGZ1bmN0aW9uKGUpIHsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447260</attachid>
            <date>2021-12-15 11:05:52 -0800</date>
            <delta_ts>2021-12-15 16:54:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234309-20211215110552.patch</filename>
            <type>text/plain</type>
            <size>44192</size>
            <attacher name="pascoe@apple.com">pascoe</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3MDg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2Y4NGExNDlkNzkyY2I0
MjFmY2RiNzA4MGNhMzFjMTZjNGZkYzg1OS4uMDUxZjYyNjk1NDAxMGFkMTEwNDUxZmMzZTU3OWIz
MGExOTM2ODZjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDIxLTEyLTE1ICBKIFBh
c2NvZSAgPGpfcGFzY29lQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0aG5dIEFsbG93IHNh
bWUtc2l0ZSwgY3Jvc3Mtb3JpZ2luIGlmcmFtZSBnZXQoKQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0MzA5CisgICAgICAgIHJkYXI6Ly9wcm9ibGVt
Lzg2NDg2MzEzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhlIFdlYiBBdXRoZW50aWNhdGlvbiBsZXZlbCAyIHNwZWNpZmllcyBhIGZlYXR1cmUgcG9s
aWN5IHRvIGFsbG93IGdldCBjYWxscyBpbgorICAgICAgICBjcm9zcy1vcmlnaW4gaS1mcmFtZXMu
IFRoaXMgcGF0Y2ggaW1wbGVtZW50cyB0aGlzIGZlYXR1cmUgcG9saWN5IHBhcnRpYWxseS4gT25s
eQorICAgICAgICBzYW1lLXNpdGUsIGNyb3NzLW9yaWdpbiBpLWZyYW1lcyBhcmUgc3VwcG9ydGVk
IGluc3RlYWQuIFRoaXMgaXMgZm9yIHRyYWNraW5nIHByZXZlbnRpb24KKyAgICAgICAgcHVycG9z
ZXMuIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby93ZWJhdXRobi8jc2N0bi1pZnJhbWUtZ3VpZGFuY2UK
KworICAgICAgICBUaGlzIHBhdGNoIGFsc28gc3RhcnRzIHBhc3NpbmcgQ2xpZW50RGF0YUpTT04g
aGFzaGVzIHRvIEFTQyB0byBhdm9pZCB0aGUgc2l0dWF0aW9uCisgICAgICAgIHdoZXJlIFdlYktp
dCBpbmNsdWRlcyBjcm9zc09yaWdpbiBvciBvdGhlciBmaWVsZHMgaW4gQ2xpZW50RGF0YUpTT04g
dGhhdCBBU0MgaXMKKyAgICAgICAgdW5hd2FyZSBvZiB3aGVuIGdlbmVyYXRpbmcgQ2xpZW50RGF0
YUpTT04uCisKKyAgICAgICAgQWRkZWQgbGF5b3V0IHRlc3QgY2FzZXMgZm9yIHNhbWUtc2l0ZSwg
Y3Jvc3Mtb3JpZ2luIGdldCBjYWxscy4KKworICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0
b3JDb29yZGluYXRvcjo6Y3JlYXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OmRvZXNIYXZl
U2FtZVNpdGVBc0FuY2VzdG9ycyk6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdG9yQ29v
cmRpbmF0b3I6OmRpc2NvdmVyRnJvbUV4dGVybmFsU291cmNlIGNvbnN0KToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmF1dGhuL1dlYkF1dGhlbnRpY2F0aW9uVXRpbHMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6YnVpbGRDbGllbnREYXRhSnNvbik6CisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9X
ZWJBdXRoZW50aWNhdGlvblV0aWxzLmg6CisgICAgICAgICogaHRtbC9GZWF0dXJlUG9saWN5LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnBvbGljeVR5cGVOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6
OkZlYXR1cmVQb2xpY3k6OnBhcnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkZlYXR1cmVQb2xpY3k6
OmFsbG93cyBjb25zdCk6CisgICAgICAgICogaHRtbC9GZWF0dXJlUG9saWN5Lmg6CisKIDIwMjEt
MTItMTUgIEFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW0lG
Q10gVXNlIHRoZSBwaHlzaWNhbCBtYXJnaW4vYm9yZGVyL3BhZGRpbmcgdmFsdWVzIGZvciBpbmxp
bmUgYm94ZXMgd2hlbiBnZW5lcmF0aW5nIHRoZSBkaXNwbGF5IGNvbnRlbnQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXgg
ZTEyMzA5ZTA5ZGI4MTI4MDMxNzdhNDEwMTRjMWY2N2NiM2U0ODk5YS4uN2Q2Mjk2OGM1NmJmN2Yx
NGI1OWU4ZjU0NDk3MDZlNWY4NTcxODcxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAy
MS0xMi0xNSAgSiBQYXNjb2UgIDxqX3Bhc2NvZUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1
dGhuXSBBbGxvdyBzYW1lLXNpdGUsIGNyb3NzLW9yaWdpbiBpZnJhbWUgZ2V0KCkKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDMwOQorICAgICAgICBy
ZGFyOi8vcHJvYmxlbS84NjQ4NjMxMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRoZSBXZWIgQXV0aGVudGljYXRpb24gbGV2ZWwgMiBzcGVjaWZpZXMg
YSBmZWF0dXJlIHBvbGljeSB0byBhbGxvdyBnZXQgY2FsbHMgaW4KKyAgICAgICAgY3Jvc3Mtb3Jp
Z2luIGktZnJhbWVzLiBUaGlzIHBhdGNoIGltcGxlbWVudHMgdGhpcyBmZWF0dXJlIHBvbGljeSBw
YXJ0aWFsbHkuIE9ubHkKKyAgICAgICAgc2FtZS1zaXRlLCBjcm9zcy1vcmlnaW4gaS1mcmFtZXMg
YXJlIHN1cHBvcnRlZCBpbnN0ZWFkLiBUaGlzIGlzIGZvciB0cmFja2luZyBwcmV2ZW50aW9uCisg
ICAgICAgIHB1cnBvc2VzLiBodHRwczovL3czYy5naXRodWIuaW8vd2ViYXV0aG4vI3NjdG4taWZy
YW1lLWd1aWRhbmNlCisKKyAgICAgICAgVGhpcyBwYXRjaCBhbHNvIHN0YXJ0cyBwYXNzaW5nIENs
aWVudERhdGFKU09OIGhhc2hlcyB0byBBU0MgdG8gYXZvaWQgdGhlIHNpdHVhdGlvbgorICAgICAg
ICB3aGVyZSBXZWJLaXQgaW5jbHVkZXMgY3Jvc3NPcmlnaW4gb3Igb3RoZXIgZmllbGRzIGluIENs
aWVudERhdGFKU09OIHRoYXQgQVNDIGlzCisgICAgICAgIHVuYXdhcmUgb2Ygd2hlbiBnZW5lcmF0
aW5nIENsaWVudERhdGFKU09OLgorCisgICAgICAgIEFkZGVkIGxheW91dCB0ZXN0IGNhc2VzIGZv
ciBzYW1lLXNpdGUsIGNyb3NzLW9yaWdpbiBnZXQgY2FsbHMuCisKKyAgICAgICAgKiBQbGF0Zm9y
bS9zcGkvQ29jb2EvQXV0aGVudGljYXRpb25TZXJ2aWNlc0NvcmVTUEkuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW06CisgICAgICAg
IChwcm9kdWNlQ2xpZW50RGF0YUpzb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5tbToKKyAgICAg
ICAgKFdlYktpdDo6Y29uZmlndXJlUmVnaXN0cmF0aW9uUmVxdWVzdENvbnRleHQpOgorICAgICAg
ICAoV2ViS2l0Ojpjb25maWd1cmF0aW9uQXNzZXJ0aW9uUmVxdWVzdENvbnRleHQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6Y29udGV4dEZvclJl
cXVlc3QpOgorCiAyMDIxLTEyLTE1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAK
ICAgICAgICAgTW92ZSBTV1NlcnZlcnMgZnJvbSBOZXR3b3JrUHJvY2VzcyB0byBOZXR3b3JrU2Vz
c2lvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jcmVkZW50aWFsbWFuYWdl
bWVudC9DcmVkZW50aWFsc0NvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Ny
ZWRlbnRpYWxtYW5hZ2VtZW50L0NyZWRlbnRpYWxzQ29udGFpbmVyLmNwcAppbmRleCBkMzA5ZDhi
YTRkNTNjN2MyOTc2OTJhODE3ZmEzZWFjYWIwMTkzNzkwLi5jMWFjNzBiZjY3MmM5MGEwNWM4N2Fh
NDE5MzA1ZWQ1NWQzNmE3YzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Ny
ZWRlbnRpYWxtYW5hZ2VtZW50L0NyZWRlbnRpYWxzQ29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50L0NyZWRlbnRpYWxzQ29udGFpbmVy
LmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgi
CiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVk
ZSAiV2ViQXV0aGVudGljYXRpb25Db25zdGFudHMuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC00NSwxOSArNDYsMjcgQEAgQ3JlZGVudGlhbHNDb250YWluZXI6OkNyZWRlbnRpYWxzQ29u
dGFpbmVyKFdlYWtQdHI8RG9jdW1lbnQ+JiYgZG9jdW1lbnQpCiB7CiB9CiAKLWJvb2wgQ3JlZGVu
dGlhbHNDb250YWluZXI6OmRvZXNIYXZlU2FtZU9yaWdpbkFzSXRzQW5jZXN0b3JzKCkKK1dlYkF1
dGhuOjpTY29wZSBDcmVkZW50aWFsc0NvbnRhaW5lcjo6c2NvcGUoKQogewotICAgIC8vIFRoZSBm
b2xsb3dpbmcgaW1wbGVtZW50cyBodHRwczovL3czYy5naXRodWIuaW8vd2ViYXBwc2VjLWNyZWRl
bnRpYWwtbWFuYWdlbWVudC8jc2FtZS1vcmlnaW4td2l0aC1pdHMtYW5jZXN0b3JzCi0gICAgLy8g
YXMgb2YgMTQgTm92ZW1iZXIgMjAxNy4KICAgICBpZiAoIW1fZG9jdW1lbnQpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIFdlYkF1dGhuOjpTY29wZTo6Q3Jvc3NPcmlnaW47
CiAKKyAgICBib29sIGlzU2FtZU9yaWdpbiA9IHRydWU7CisgICAgYm9vbCBpc1NhbWVTaXRlID0g
dHJ1ZTsKICAgICBhdXRvJiBvcmlnaW4gPSBtX2RvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpOwor
ICAgIGF1dG8mIHVybCA9IG1fZG9jdW1lbnQtPnVybCgpOwogICAgIGZvciAoYXV0byogZG9jdW1l
bnQgPSBtX2RvY3VtZW50LT5wYXJlbnREb2N1bWVudCgpOyBkb2N1bWVudDsgZG9jdW1lbnQgPSBk
b2N1bWVudC0+cGFyZW50RG9jdW1lbnQoKSkgeworICAgICAgICBpZiAoIW9yaWdpbi5pc1NhbWVP
cmlnaW5Eb21haW4oZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkpICYmICFhcmVSZWdpc3RyYWJs
ZURvbWFpbnNFcXVhbCh1cmwsIGRvY3VtZW50LT51cmwoKSkpCisgICAgICAgICAgICBpc1NhbWVT
aXRlID0gZmFsc2U7CiAgICAgICAgIGlmICghb3JpZ2luLmlzU2FtZU9yaWdpbkFzKGRvY3VtZW50
LT5zZWN1cml0eU9yaWdpbigpKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
ICAgIGlzU2FtZU9yaWdpbiA9IGZhbHNlOwogICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKKworICAg
IGlmIChpc1NhbWVPcmlnaW4pCisgICAgICAgIHJldHVybiBXZWJBdXRobjo6U2NvcGU6OlNhbWVP
cmlnaW47CisgICAgaWYgKGlzU2FtZVNpdGUpCisgICAgICAgIHJldHVybiBXZWJBdXRobjo6U2Nv
cGU6OlNhbWVTaXRlOworICAgIHJldHVybiBXZWJBdXRobjo6U2NvcGU6OkNyb3NzT3JpZ2luOwog
fQogCiB2b2lkIENyZWRlbnRpYWxzQ29udGFpbmVyOjpnZXQoQ3JlZGVudGlhbFJlcXVlc3RPcHRp
b25zJiYgb3B0aW9ucywgQ3JlZGVudGlhbFByb21pc2UmJiBwcm9taXNlKQpAQCAtODksNyArOTgs
NyBAQCB2b2lkIENyZWRlbnRpYWxzQ29udGFpbmVyOjpnZXQoQ3JlZGVudGlhbFJlcXVlc3RPcHRp
b25zJiYgb3B0aW9ucywgQ3JlZGVudGlhbFBybwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgbV9kb2N1bWVudC0+cGFnZSgpLT5hdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IoKS5kaXNjb3Zl
ckZyb21FeHRlcm5hbFNvdXJjZSgqbV9kb2N1bWVudCwgb3B0aW9ucy5wdWJsaWNLZXkudmFsdWUo
KSwgZG9lc0hhdmVTYW1lT3JpZ2luQXNJdHNBbmNlc3RvcnMoKSwgV1RGTW92ZShvcHRpb25zLnNp
Z25hbCksIFdURk1vdmUocHJvbWlzZSkpOworICAgIG1fZG9jdW1lbnQtPnBhZ2UoKS0+YXV0aGVu
dGljYXRvckNvb3JkaW5hdG9yKCkuZGlzY292ZXJGcm9tRXh0ZXJuYWxTb3VyY2UoKm1fZG9jdW1l
bnQsIG9wdGlvbnMucHVibGljS2V5LnZhbHVlKCksIHNjb3BlKCksIFdURk1vdmUob3B0aW9ucy5z
aWduYWwpLCBXVEZNb3ZlKHByb21pc2UpKTsKIH0KIAogdm9pZCBDcmVkZW50aWFsc0NvbnRhaW5l
cjo6c3RvcmUoY29uc3QgQmFzaWNDcmVkZW50aWFsJiwgQ3JlZGVudGlhbFByb21pc2UmJiBwcm9t
aXNlKQpAQCAtMTI0LDcgKzEzMyw3IEBAIHZvaWQgQ3JlZGVudGlhbHNDb250YWluZXI6OmlzQ3Jl
YXRlKENyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMmJiBvcHRpb25zLCBDcmVkZW50CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBtX2RvY3VtZW50LT5wYWdlKCktPmF1dGhlbnRpY2F0b3JD
b29yZGluYXRvcigpLmNyZWF0ZSgqbV9kb2N1bWVudCwgb3B0aW9ucy5wdWJsaWNLZXkudmFsdWUo
KSwgZG9lc0hhdmVTYW1lT3JpZ2luQXNJdHNBbmNlc3RvcnMoKSwgV1RGTW92ZShvcHRpb25zLnNp
Z25hbCksIFdURk1vdmUocHJvbWlzZSkpOworICAgIG1fZG9jdW1lbnQtPnBhZ2UoKS0+YXV0aGVu
dGljYXRvckNvb3JkaW5hdG9yKCkuY3JlYXRlKCptX2RvY3VtZW50LCBvcHRpb25zLnB1YmxpY0tl
eS52YWx1ZSgpLCBzY29wZSgpLCBXVEZNb3ZlKG9wdGlvbnMuc2lnbmFsKSwgV1RGTW92ZShwcm9t
aXNlKSk7CiB9CiAKIHZvaWQgQ3JlZGVudGlhbHNDb250YWluZXI6OnByZXZlbnRTaWxlbnRBY2Nl
c3MoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQvQ3JlZGVudGlhbHND
b250YWluZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQv
Q3JlZGVudGlhbHNDb250YWluZXIuaAppbmRleCA0ZTFiYjRlNWJlNWU1MjU1YTM3Nzg2ZjhlZjY5
YjhhNzdkYWY1M2M3Li45YTZiMTJkZGMyMjI5OGY0N2MxZTMyOTYyYjZhNmNmMzllYjVkOTEyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50L0Ny
ZWRlbnRpYWxzQ29udGFpbmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jcmVkZW50
aWFsbWFuYWdlbWVudC9DcmVkZW50aWFsc0NvbnRhaW5lci5oCkBAIC0zMiw2ICszMiwxMCBAQAog
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAor
bmFtZXNwYWNlIFdlYkF1dGhuIHsKK2VudW0gY2xhc3MgU2NvcGU7Cit9CisKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgRG9jdW1lbnQ7CkBAIC01NCw3ICs1OCw3IEBAIHB1YmxpYzoKIHBy
aXZhdGU6CiAgICAgQ3JlZGVudGlhbHNDb250YWluZXIoV2Vha1B0cjxEb2N1bWVudD4mJik7CiAK
LSAgICBib29sIGRvZXNIYXZlU2FtZU9yaWdpbkFzSXRzQW5jZXN0b3JzKCk7CisgICAgV2ViQXV0
aG46OlNjb3BlIHNjb3BlKCk7CiAKICAgICBXZWFrUHRyPERvY3VtZW50PiBtX2RvY3VtZW50Owog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGlj
YXRvckNvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcAppbmRleCA0OTBmNjVhZTJlMTU1ZTE4YWNlOGMzNTJm
NjFkNDA4NGRmYzkwZmYxLi41ZDQ3NzdiOGMwM2EwOTJmNzE5MWRlNDQ0NTQ4ZWE3ZjljNmYzYzc2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0
b3JDb29yZGluYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9B
dXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAi
QXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50LmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRv
clJlc3BvbnNlRGF0YS5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRmVhdHVy
ZVBvbGljeS5oIgogI2luY2x1ZGUgIkpTQmFzaWNDcmVkZW50aWFsLmgiCiAjaW5jbHVkZSAiSlNE
T01Qcm9taXNlRGVmZXJyZWQuaCIKICNpbmNsdWRlICJQdWJsaWNLZXlDcmVkZW50aWFsLmgiCkBA
IC0xMDQsNyArMTA1LDcgQEAgdm9pZCBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6OnNldENsaWVu
dChzdGQ6OnVuaXF1ZV9wdHI8QXV0aGVudGljYXRvckNvb3JkaW5hdG8KICAgICBtX2NsaWVudCA9
IFdURk1vdmUoY2xpZW50KTsKIH0KIAotdm9pZCBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6OmNy
ZWF0ZShjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxD
cmVhdGlvbk9wdGlvbnMmIG9wdGlvbnMsIGJvb2wgc2FtZU9yaWdpbldpdGhBbmNlc3RvcnMsIFJl
ZlB0cjxBYm9ydFNpZ25hbD4mJiBhYm9ydFNpZ25hbCwgQ3JlZGVudGlhbFByb21pc2UmJiBwcm9t
aXNlKSBjb25zdAordm9pZCBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6OmNyZWF0ZShjb25zdCBE
b2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlv
bnMmIG9wdGlvbnMsIFdlYkF1dGhuOjpTY29wZSBzY29wZSwgUmVmUHRyPEFib3J0U2lnbmFsPiYm
IGFib3J0U2lnbmFsLCBDcmVkZW50aWFsUHJvbWlzZSYmIHByb21pc2UpIGNvbnN0CiB7CiAgICAg
dXNpbmcgbmFtZXNwYWNlIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvckludGVybmFsOwogCkBAIC0x
MTQsNyArMTE1LDcgQEAgdm9pZCBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6OmNyZWF0ZShjb25z
dCBEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFB1YmxpY0tleUMKICAgICAvLyBUaGUgZm9sbG93
aW5nIGltcGxlbWVudHMgaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLyNjcmVhdGVDcmVk
ZW50aWFsIGFzIG9mIDUgRGVjZW1iZXIgMjAxNy4KICAgICAvLyBTdGVwIDEsIDMsIDE2IGFyZSBo
YW5kbGVkIGJ5IHRoZSBjYWxsZXIuCiAgICAgLy8gU3RlcCAyLgotICAgIGlmICghc2FtZU9yaWdp
bldpdGhBbmNlc3RvcnMpIHsKKyAgICBpZiAoc2NvcGUgIT0gV2ViQXV0aG46OlNjb3BlOjpTYW1l
T3JpZ2luKSB7CiAgICAgICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IE5vdEFsbG93ZWRF
cnJvciwgIlRoZSBvcmlnaW4gb2YgdGhlIGRvY3VtZW50IGlzIG5vdCB0aGUgc2FtZSBhcyBpdHMg
YW5jZXN0b3JzLiJfcyB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTE0OCw3ICsxNDks
NyBAQCB2b2lkIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6Y3JlYXRlKGNvbnN0IERvY3VtZW50
JiBkb2N1bWVudCwgY29uc3QgUHVibGljS2V5QwogICAgIG9wdGlvbnMuZXh0ZW5zaW9ucyA9IEF1
dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudElucHV0cyB7IFN0cmluZygpLCBwcm9jZXNzR29v
Z2xlTGVnYWN5QXBwSWRTdXBwb3J0RXh0ZW5zaW9uKG9wdGlvbnMuZXh0ZW5zaW9ucywgb3B0aW9u
cy5ycC5pZCkgfTsKIAogICAgIC8vIFN0ZXAgMTMtMTUuCi0gICAgYXV0byBjbGllbnREYXRhSnNv
biA9IGJ1aWxkQ2xpZW50RGF0YUpzb24oQ2xpZW50RGF0YVR5cGU6OkNyZWF0ZSwgb3B0aW9ucy5j
aGFsbGVuZ2UsIGNhbGxlck9yaWdpbik7CisgICAgYXV0byBjbGllbnREYXRhSnNvbiA9IGJ1aWxk
Q2xpZW50RGF0YUpzb24oQ2xpZW50RGF0YVR5cGU6OkNyZWF0ZSwgb3B0aW9ucy5jaGFsbGVuZ2Us
IGNhbGxlck9yaWdpbiwgc2NvcGUpOwogICAgIGF1dG8gY2xpZW50RGF0YUpzb25IYXNoID0gYnVp
bGRDbGllbnREYXRhSnNvbkhhc2goY2xpZW50RGF0YUpzb24pOwogCiAgICAgLy8gU3RlcCA0LCAx
Ny0yMS4KQEAgLTE3NSw3ICsxNzYsNyBAQCB2b2lkIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6
Y3JlYXRlKGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgUHVibGljS2V5QwogICAgIG1f
Y2xpZW50LT5tYWtlQ3JlZGVudGlhbCgqZnJhbWUsIGNhbGxlck9yaWdpbiwgY2xpZW50RGF0YUpz
b25IYXNoLCBvcHRpb25zLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiB9CiAKLXZvaWQgQXV0aGVudGlj
YXRvckNvb3JkaW5hdG9yOjpkaXNjb3ZlckZyb21FeHRlcm5hbFNvdXJjZShjb25zdCBEb2N1bWVu
dCYgZG9jdW1lbnQsIGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYgb3B0
aW9ucywgYm9vbCBzYW1lT3JpZ2luV2l0aEFuY2VzdG9ycywgUmVmUHRyPEFib3J0U2lnbmFsPiYm
IGFib3J0U2lnbmFsLCBDcmVkZW50aWFsUHJvbWlzZSYmIHByb21pc2UpIGNvbnN0Cit2b2lkIEF1
dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6ZGlzY292ZXJGcm9tRXh0ZXJuYWxTb3VyY2UoY29uc3Qg
RG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlv
bnMmIG9wdGlvbnMsIFdlYkF1dGhuOjpTY29wZSBzY29wZSwgUmVmUHRyPEFib3J0U2lnbmFsPiYm
IGFib3J0U2lnbmFsLCBDcmVkZW50aWFsUHJvbWlzZSYmIHByb21pc2UpIGNvbnN0CiB7CiAgICAg
dXNpbmcgbmFtZXNwYWNlIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvckludGVybmFsOwogCkBAIC0x
ODUsNyArMTg2LDggQEAgdm9pZCBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6OmRpc2NvdmVyRnJv
bUV4dGVybmFsU291cmNlKGNvbnN0IERvY3VtZW50JiBkb2N1bWUKICAgICAvLyBUaGUgZm9sbG93
aW5nIGltcGxlbWVudHMgaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLyNjcmVhdGVDcmVk
ZW50aWFsIGFzIG9mIDUgRGVjZW1iZXIgMjAxNy4KICAgICAvLyBTdGVwIDEsIDMsIDEzIGFyZSBo
YW5kbGVkIGJ5IHRoZSBjYWxsZXIuCiAgICAgLy8gU3RlcCAyLgotICAgIGlmICghc2FtZU9yaWdp
bldpdGhBbmNlc3RvcnMpIHsKKyAgICAvLyBUaGlzIGltcGxlbWVudHMgaHR0cHM6Ly93d3cudzMu
b3JnL1RSL3dlYmF1dGhuLTIvI3NjdG4tcGVybWlzc2lvbnMtcG9saWN5IGV4Y2VwdCBvbmx5IHNh
bWUtc2l0ZSwgY3Jvc3Mtb3JpZ2luIGlzIHBlcm1pdHRlZC4KKyAgICBpZiAoc2NvcGUgIT0gV2Vi
QXV0aG46OlNjb3BlOjpTYW1lT3JpZ2luICYmICEoc2NvcGUgPT0gV2ViQXV0aG46OlNjb3BlOjpT
YW1lU2l0ZSAmJiBpc0ZlYXR1cmVQb2xpY3lBbGxvd2VkQnlEb2N1bWVudEFuZEFsbE93bmVycyhG
ZWF0dXJlUG9saWN5OjpUeXBlOjpQdWJsaWNrZXlDcmVkZW50aWFsc0dldFJ1bGUsIGRvY3VtZW50
LCBMb2dGZWF0dXJlUG9saWN5RmFpbHVyZTo6Tm8pKSkgewogICAgICAgICBwcm9taXNlLnJlamVj
dChFeGNlcHRpb24geyBOb3RBbGxvd2VkRXJyb3IsICJUaGUgb3JpZ2luIG9mIHRoZSBkb2N1bWVu
dCBpcyBub3QgdGhlIHNhbWUgYXMgaXRzIGFuY2VzdG9ycy4iX3MgfSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CkBAIC0yMTksNyArMjIxLDcgQEAgdm9pZCBBdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3I6OmRpc2NvdmVyRnJvbUV4dGVybmFsU291cmNlKGNvbnN0IERvY3VtZW50JiBkb2N1bWUKICAg
ICB9CiAKICAgICAvLyBTdGVwIDEwLTEyLgotICAgIGF1dG8gY2xpZW50RGF0YUpzb24gPSBidWls
ZENsaWVudERhdGFKc29uKENsaWVudERhdGFUeXBlOjpHZXQsIG9wdGlvbnMuY2hhbGxlbmdlLCBj
YWxsZXJPcmlnaW4pOworICAgIGF1dG8gY2xpZW50RGF0YUpzb24gPSBidWlsZENsaWVudERhdGFK
c29uKENsaWVudERhdGFUeXBlOjpHZXQsIG9wdGlvbnMuY2hhbGxlbmdlLCBjYWxsZXJPcmlnaW4s
IHNjb3BlKTsKICAgICBhdXRvIGNsaWVudERhdGFKc29uSGFzaCA9IGJ1aWxkQ2xpZW50RGF0YUpz
b25IYXNoKGNsaWVudERhdGFKc29uKTsKIAogICAgIC8vIFN0ZXAgNCwgMTQtMTkuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGlu
YXRvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29v
cmRpbmF0b3IuaAppbmRleCBmZmZlMjBiMDAxNzRlZDI0ZTY4N2Y0NzdjOTA0NDJmNzViNjEzNTVl
Li5mNDk1MDMwODZjOWFjYzc5MTkzMzg3Zjc2ZmI2YTViZWEyMDc4MGFiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3Jk
aW5hdG9yLmgKQEAgLTMxLDYgKzMxLDEwIEBACiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNp
bmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAorbmFtZXNwYWNlIFdlYkF1dGhuIHsKK2VudW0g
Y2xhc3MgU2NvcGU7Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQWJvcnRTaWdu
YWw7CkBAIC01Myw4ICs1Nyw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNl
dENsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50PiYm
KTsKIAogICAgIC8vIFRoZSBmb2xsb3dpbmcgbWV0aG9kcyBpbXBsZW1lbnQgc3RhdGljIG1ldGhv
ZHMgb2YgUHVibGljS2V5Q3JlZGVudGlhbC4KLSAgICB2b2lkIGNyZWF0ZShjb25zdCBEb2N1bWVu
dCYsIGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMmLCBib29sIHNhbWVP
cmlnaW5XaXRoQW5jZXN0b3JzLCBSZWZQdHI8QWJvcnRTaWduYWw+JiYsIENyZWRlbnRpYWxQcm9t
aXNlJiYpIGNvbnN0OwotICAgIHZvaWQgZGlzY292ZXJGcm9tRXh0ZXJuYWxTb3VyY2UoY29uc3Qg
RG9jdW1lbnQmLCBjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMmLCBib29s
IHNhbWVPcmlnaW5XaXRoQW5jZXN0b3JzLCBSZWZQdHI8QWJvcnRTaWduYWw+JiYsIENyZWRlbnRp
YWxQcm9taXNlJiYpIGNvbnN0OworICAgIHZvaWQgY3JlYXRlKGNvbnN0IERvY3VtZW50JiwgY29u
c3QgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyYsIFdlYkF1dGhuOjpTY29wZSwg
UmVmUHRyPEFib3J0U2lnbmFsPiYmLCBDcmVkZW50aWFsUHJvbWlzZSYmKSBjb25zdDsKKyAgICB2
b2lkIGRpc2NvdmVyRnJvbUV4dGVybmFsU291cmNlKGNvbnN0IERvY3VtZW50JiwgY29uc3QgUHVi
bGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zJiwgV2ViQXV0aG46OlNjb3BlLCBSZWZQdHI8
QWJvcnRTaWduYWw+JiYsIENyZWRlbnRpYWxQcm9taXNlJiYpIGNvbnN0OwogICAgIHZvaWQgaXNV
c2VyVmVyaWZ5aW5nUGxhdGZvcm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlKERPTVByb21pc2VEZWZl
cnJlZDxJRExCb29sZWFuPiYmKSBjb25zdDsKIAogICAgIHZvaWQgcmVzZXRVc2VyR2VzdHVyZVJl
cXVpcmVtZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhu
L1dlYkF1dGhlbnRpY2F0aW9uQ29uc3RhbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1dGhuL1dlYkF1dGhlbnRpY2F0aW9uQ29uc3RhbnRzLmgKaW5kZXggNDUxZmYzM2IyOGVkNTBi
NWJhZjdiOWEzOWNlYTgyMDc3ZTUzMTE1MS4uODRhNzdiZWM3YmEyYTNjOTlhNzBjMzA0MzQyZDkx
YTRmMTk3OTFhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9X
ZWJBdXRoZW50aWNhdGlvbkNvbnN0YW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXV0aG4vV2ViQXV0aGVudGljYXRpb25Db25zdGFudHMuaApAQCAtODAsMyArODAsMTMgQEAg
ZW51bSBjbGFzcyBDbGllbnREYXRhVHlwZSA6IGJvb2wgewogY29uc3QgY2hhciBMb2NhbEF1dGhl
bnRpY2F0aW9yQWNjZXNzR3JvdXBbXSA9ICJjb20uYXBwbGUud2Via2l0LndlYmF1dGhuIjsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCituYW1lc3BhY2UgV2ViQXV0aG4geworCitlbnVtIGNs
YXNzIFNjb3BlIHsKKyAgICBDcm9zc09yaWdpbiwKKyAgICBTYW1lT3JpZ2luLAorICAgIFNhbWVT
aXRlCit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJBdXRobgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdXRobi9XZWJBdXRoZW50aWNhdGlvblV0aWxzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vV2ViQXV0aGVudGljYXRpb25VdGlscy5jcHAKaW5k
ZXggYzhlMGQyODJkNTNiMDg2ZDIxOTQ3ZmZlMTBmZDhmNjk4ZWQwNDg5Ni4uOGQ0NzNjYTI1OWYy
YzZiYzBmNWI1YTI2YjBjMmQyYTg0MGNkZjVmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdXRobi9XZWJBdXRoZW50aWNhdGlvblV0aWxzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1dlYkF1dGhlbnRpY2F0aW9uVXRpbHMuY3BwCkBAIC0x
MzQsNyArMTM0LDcgQEAgVmVjdG9yPHVpbnQ4X3Q+IGJ1aWxkQXR0ZXN0YXRpb25PYmplY3QoVmVj
dG9yPHVpbnQ4X3Q+JiYgYXV0aERhdGEsIFN0cmluZyYmIGZvcm0KIH0KIAogLy8gRklYTUUoMTgx
OTQ4KTogQWRkIHRva2VuIGJpbmRpbmcgSUQuCi1SZWY8QXJyYXlCdWZmZXI+IGJ1aWxkQ2xpZW50
RGF0YUpzb24oQ2xpZW50RGF0YVR5cGUgdHlwZSwgY29uc3QgQnVmZmVyU291cmNlJiBjaGFsbGVu
Z2UsIGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4pCitSZWY8QXJyYXlCdWZmZXI+IGJ1aWxk
Q2xpZW50RGF0YUpzb24oQ2xpZW50RGF0YVR5cGUgdHlwZSwgY29uc3QgQnVmZmVyU291cmNlJiBj
aGFsbGVuZ2UsIGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4sIFdlYkF1dGhuOjpTY29wZSBz
Y29wZSkKIHsKICAgICBhdXRvIG9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAg
c3dpdGNoICh0eXBlKSB7CkBAIC0xNDcsNiArMTQ3LDggQEAgUmVmPEFycmF5QnVmZmVyPiBidWls
ZENsaWVudERhdGFKc29uKENsaWVudERhdGFUeXBlIHR5cGUsIGNvbnN0IEJ1ZmZlclNvdXJjZSYg
Y2gKICAgICB9CiAgICAgb2JqZWN0LT5zZXRTdHJpbmcoImNoYWxsZW5nZSJfcywgYmFzZTY0VVJM
RW5jb2RlVG9TdHJpbmcoY2hhbGxlbmdlLmRhdGEoKSwgY2hhbGxlbmdlLmxlbmd0aCgpKSk7CiAg
ICAgb2JqZWN0LT5zZXRTdHJpbmcoIm9yaWdpbiJfcywgb3JpZ2luLnRvUmF3U3RyaW5nKCkpOwor
ICAgIGlmIChzY29wZSAhPSBXZWJBdXRobjo6U2NvcGU6OlNhbWVPcmlnaW4pCisgICAgICAgIG9i
amVjdC0+c2V0Qm9vbGVhbigiY3Jvc3NPcmlnaW4iX3MsIHNjb3BlICE9IFdlYkF1dGhuOjpTY29w
ZTo6U2FtZU9yaWdpbik7CiAKICAgICBhdXRvIHV0ZjhKU09OU3RyaW5nID0gb2JqZWN0LT50b0pT
T05TdHJpbmcoKS51dGY4KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXV0aG4vV2ViQXV0aGVudGljYXRpb25VdGlscy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdXRobi9XZWJBdXRoZW50aWNhdGlvblV0aWxzLmgKaW5kZXggYTA3OTIxMWRlYjE3Yzhl
MjZiYmYxZTg5ZDMyMGYxMWM4NTkzN2U1Ny4uYTY0MjU0NGQ0YTY1ODY4YmI0ZGE5NzMyZGFlMDI4
Y2RmYzU1OGMwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9X
ZWJBdXRoZW50aWNhdGlvblV0aWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dXRobi9XZWJBdXRoZW50aWNhdGlvblV0aWxzLmgKQEAgLTUyLDcgKzUyLDcgQEAgV0VCQ09SRV9F
WFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IGJ1aWxkQXV0aERhdGEoY29uc3QgU3RyaW5nJiBycElkLCBj
b25zdCB1aW50OF90IGYKIC8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi8jYXR0ZXN0
YXRpb24tb2JqZWN0CiBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8dWludDhfdD4gYnVpbGRBdHRlc3Rh
dGlvbk9iamVjdChWZWN0b3I8dWludDhfdD4mJiBhdXRoRGF0YSwgU3RyaW5nJiYgZm9ybWF0LCBj
Ym9yOjpDQk9SVmFsdWU6Ok1hcFZhbHVlJiYgc3RhdGVtZW50TWFwLCBjb25zdCBBdHRlc3RhdGlv
bkNvbnZleWFuY2VQcmVmZXJlbmNlJik7CiAKLVdFQkNPUkVfRVhQT1JUIFJlZjxBcnJheUJ1ZmZl
cj4gYnVpbGRDbGllbnREYXRhSnNvbihDbGllbnREYXRhVHlwZSAvKnR5cGUqLywgY29uc3QgQnVm
ZmVyU291cmNlJiBjaGFsbGVuZ2UsIGNvbnN0IFNlY3VyaXR5T3JpZ2luJiAvKm9yaWdpbiovKTsK
K1dFQkNPUkVfRVhQT1JUIFJlZjxBcnJheUJ1ZmZlcj4gYnVpbGRDbGllbnREYXRhSnNvbihDbGll
bnREYXRhVHlwZSAvKnR5cGUqLywgY29uc3QgQnVmZmVyU291cmNlJiBjaGFsbGVuZ2UsIGNvbnN0
IFNlY3VyaXR5T3JpZ2luJiAvKm9yaWdpbiovLCBXZWJBdXRobjo6U2NvcGUpOwogCiBXRUJDT1JF
X0VYUE9SVCBWZWN0b3I8dWludDhfdD4gYnVpbGRDbGllbnREYXRhSnNvbkhhc2goY29uc3QgQXJy
YXlCdWZmZXImIGNsaWVudERhdGFKc29uKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9GZWF0dXJlUG9saWN5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmVhdHVyZVBvbGlj
eS5jcHAKaW5kZXggNTYwMGNhMWFiYjA0Yjk0YmJmZmM0ZmVkNTA0MzViMTM0NTI5NjNlNi4uNTg0
OGQwYWI5YzJkNzU2NGYwOGY0ODc1MmI5MzVlMTgxMGIxMTgxNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9GZWF0dXJlUG9saWN5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0ZlYXR1cmVQb2xpY3kuY3BwCkBAIC02Nyw2ICs2NywxMCBAQCBzdGF0aWMgY29uc3QgY2hhciog
cG9saWN5VHlwZU5hbWUoRmVhdHVyZVBvbGljeTo6VHlwZSB0eXBlKQogICAgIGNhc2UgRmVhdHVy
ZVBvbGljeTo6VHlwZTo6TWFnbmV0b21ldGVyOgogICAgICAgICByZXR1cm4gIk1hZ25ldG9tZXRl
ciI7CiAjZW5kaWYKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorICAgIGNhc2UgRmVhdHVyZVBvbGlj
eTo6VHlwZTo6UHVibGlja2V5Q3JlZGVudGlhbHNHZXRSdWxlOgorICAgICAgICByZXR1cm4gIlB1
YmxpY2tleUNyZWRlbnRpYWxzR2V0IjsKKyNlbmRpZgogI2lmIEVOQUJMRShXRUJYUikKICAgICBj
YXNlIEZlYXR1cmVQb2xpY3k6OlR5cGU6OlhSU3BhdGlhbFRyYWNraW5nOgogICAgICAgICByZXR1
cm4gIlhSU3BhdGlhbFRyYWNraW5nIjsKQEAgLTE4NCw2ICsxODgsOSBAQCBGZWF0dXJlUG9saWN5
IEZlYXR1cmVQb2xpY3k6OnBhcnNlKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgSFRNTElGcmFt
ZUVsZW1lbnQmCiAgICAgYm9vbCBpc0FjY2VsZXJvbWV0ZXJJbml0aWFsaXplZCA9IGZhbHNlOwog
ICAgIGJvb2wgaXNNYWduZXRvbWV0ZXJJbml0aWFsaXplZCA9IGZhbHNlOwogI2VuZGlmCisjaWYg
RU5BQkxFKFdFQl9BVVRITikKKyAgICBib29sIGlzUHVibGlja2V5Q3JlZGVudGlhbHNHZXRJbml0
aWFsaXplZCA9IGZhbHNlOworI2VuZGlmCiAjaWYgRU5BQkxFKFdFQlhSKQogICAgIGJvb2wgaXNY
UlNwYXRpYWxUcmFja2luZ0luaXRpYWxpemVkID0gZmFsc2U7CiAjZW5kaWYKQEAgLTI1MSw2ICsy
NTgsMTMgQEAgRmVhdHVyZVBvbGljeSBGZWF0dXJlUG9saWN5OjpwYXJzZShEb2N1bWVudCYgZG9j
dW1lbnQsIGNvbnN0IEhUTUxJRnJhbWVFbGVtZW50JgogICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgIH0KICNlbmRpZgorI2lmIEVOQUJMRShXRUJfQVVUSE4pCisgICAgICAgIGlmIChpdGVt
LnN0YXJ0c1dpdGgoInB1YmxpY2tleS1jcmVkZW50aWFscy1nZXQiKSkgeworICAgICAgICAgICAg
aXNQdWJsaWNrZXlDcmVkZW50aWFsc0dldEluaXRpYWxpemVkID0gdHJ1ZTsKKyAgICAgICAgICAg
IHVwZGF0ZUxpc3QoZG9jdW1lbnQsIHBvbGljeS5tX3B1YmxpY2tleUNyZWRlbnRpYWxzR2V0UnVs
ZSwgaXRlbS5zdWJzdHJpbmcoMjYpKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9
CisjZW5kaWYKICNpZiBFTkFCTEUoV0VCWFIpCiAgICAgICAgIGlmIChpdGVtLnN0YXJ0c1dpdGgo
InhyLXNwYXRpYWwtdHJhY2tpbmciKSkgewogICAgICAgICAgICAgaXNYUlNwYXRpYWxUcmFja2lu
Z0luaXRpYWxpemVkID0gdHJ1ZTsKQEAgLTI4Myw2ICsyOTcsMTAgQEAgRmVhdHVyZVBvbGljeSBG
ZWF0dXJlUG9saWN5OjpwYXJzZShEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IEhUTUxJRnJhbWVF
bGVtZW50JgogICAgIGlmICghaXNNYWduZXRvbWV0ZXJJbml0aWFsaXplZCkKICAgICAgICAgcG9s
aWN5Lm1fbWFnbmV0b21ldGVyUnVsZS5hbGxvd2VkTGlzdC5hZGQoZG9jdW1lbnQuc2VjdXJpdHlP
cmlnaW4oKS5kYXRhKCkpOwogI2VuZGlmCisjaWYgRU5BQkxFKFdFQl9BVVRITikKKyAgICBpZiAo
IWlzUHVibGlja2V5Q3JlZGVudGlhbHNHZXRJbml0aWFsaXplZCkKKyAgICAgICAgcG9saWN5Lm1f
cHVibGlja2V5Q3JlZGVudGlhbHNHZXRSdWxlLmFsbG93ZWRMaXN0LmFkZChkb2N1bWVudC5zZWN1
cml0eU9yaWdpbigpLmRhdGEoKSk7CisjZW5kaWYKICNpZiBFTkFCTEUoV0VCWFIpCiAgICAgaWYg
KCFpc1hSU3BhdGlhbFRyYWNraW5nSW5pdGlhbGl6ZWQpCiAgICAgICAgIHBvbGljeS5tX3hyU3Bh
dGlhbFRyYWNraW5nUnVsZS5hbGxvd2VkTGlzdC5hZGQoZG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4o
KS5kYXRhKCkpOwpAQCAtMzM4LDYgKzM1NiwxMCBAQCBib29sIEZlYXR1cmVQb2xpY3k6OmFsbG93
cyhUeXBlIHR5cGUsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luKSBjb25zdAogICAg
IGNhc2UgVHlwZTo6TWFnbmV0b21ldGVyOgogICAgICAgICByZXR1cm4gaXNBbGxvd2VkQnlGZWF0
dXJlUG9saWN5KG1fbWFnbmV0b21ldGVyUnVsZSwgb3JpZ2luKTsKICNlbmRpZgorI2lmIEVOQUJM
RShXRUJfQVVUSE4pCisgICAgY2FzZSBUeXBlOjpQdWJsaWNrZXlDcmVkZW50aWFsc0dldFJ1bGU6
CisgICAgICAgIHJldHVybiBpc0FsbG93ZWRCeUZlYXR1cmVQb2xpY3kobV9wdWJsaWNrZXlDcmVk
ZW50aWFsc0dldFJ1bGUsIG9yaWdpbik7CisjZW5kaWYKICNpZiBFTkFCTEUoV0VCWFIpCiAgICAg
Y2FzZSBUeXBlOjpYUlNwYXRpYWxUcmFja2luZzoKICAgICAgICAgcmV0dXJuIGlzQWxsb3dlZEJ5
RmVhdHVyZVBvbGljeShtX3hyU3BhdGlhbFRyYWNraW5nUnVsZSwgb3JpZ2luKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmVhdHVyZVBvbGljeS5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9GZWF0dXJlUG9saWN5LmgKaW5kZXggZTY0MGY4YTVkNzIzZGUwMWU5YTY0YjUxMDY2NmI5
M2E2Nzk3YTc5Mi4uMjhlZmEzMTU4NTEwOTAzMWI5NzM0ZDBmMTIzNTFmOTNkZWJlMzQ4ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9GZWF0dXJlUG9saWN5LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9GZWF0dXJlUG9saWN5LmgKQEAgLTUzLDYgKzUzLDkgQEAgcHVibGljOgog
ICAgICAgICBBY2NlbGVyb21ldGVyLAogICAgICAgICBNYWduZXRvbWV0ZXIsCiAjZW5kaWYKKyNp
ZiBFTkFCTEUoV0VCX0FVVEhOKQorICAgICAgICBQdWJsaWNrZXlDcmVkZW50aWFsc0dldFJ1bGUs
CisjZW5kaWYKICNpZiBFTkFCTEUoV0VCWFIpCiAgICAgICAgIFhSU3BhdGlhbFRyYWNraW5nLAog
I2VuZGlmCkBAIC04MSw2ICs4NCw5IEBAIHByaXZhdGU6CiAgICAgQWxsb3dSdWxlIG1fYWNjZWxl
cm9tZXRlclJ1bGU7CiAgICAgQWxsb3dSdWxlIG1fbWFnbmV0b21ldGVyUnVsZTsKICNlbmRpZgor
I2lmIEVOQUJMRShXRUJfQVVUSE4pCisgICAgQWxsb3dSdWxlIG1fcHVibGlja2V5Q3JlZGVudGlh
bHNHZXRSdWxlOworI2VuZGlmCiAjaWYgRU5BQkxFKFdFQlhSKQogICAgIEFsbG93UnVsZSBtX3hy
U3BhdGlhbFRyYWNraW5nUnVsZTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9zcGkvQ29jb2EvQXV0aGVudGljYXRpb25TZXJ2aWNlc0NvcmVTUEkuaCBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vc3BpL0NvY29hL0F1dGhlbnRpY2F0aW9uU2VydmljZXNDb3JlU1BJ
LmgKaW5kZXggMzk0ODIyZDU1MGU5NTJhMmVkOTdhOGIyNmNiNTVkMTI2NzExYjE3ZC4uOTAwN2Q2
ZDQ4NTYyMzFmM2IzMGM0ODg4ODJiZDg1YWM1YjgwMjQ5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9zcGkvQ29jb2EvQXV0aGVudGljYXRpb25TZXJ2aWNlc0NvcmVTUEkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9Db2NvYS9BdXRoZW50aWNhdGlvblNlcnZp
Y2VzQ29yZVNQSS5oCkBAIC0yNSwxMCArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lmIEhB
VkUoVU5JRklFRF9BU0NfQVVUSF9VSSkKLSNpbXBvcnQgPEF1dGhlbnRpY2F0aW9uU2VydmljZXND
b3JlL0F1dGhlbnRpY2F0aW9uU2VydmljZXNDb3JlLmg+Ci0jaW1wb3J0IDxBdXRoZW50aWNhdGlv
blNlcnZpY2VzQ29yZS9BdXRoZW50aWNhdGlvblNlcnZpY2VzQ29yZVByaXZhdGUuaD4KLSNlbGlm
IEhBVkUoQVNDX0FVVEhfVUkpCisjaWYgSEFWRShBU0NfQVVUSF9VSSkgfHwgSEFWRShVTklGSUVE
X0FTQ19BVVRIX1VJKQogCiBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgogCkBAIC03MSw2ICs2OCwx
NCBAQCBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgogCiBAZW5kCiAKK0BpbnRlcmZhY2UgQVNDQXV0
aG9yaXphdGlvblJlbW90ZVByZXNlbnRlciA6IE5TT2JqZWN0CisKKyNpZiBUQVJHRVRfT1NfT1NY
CistICh2b2lkKXByZXNlbnRXaXRoV2luZG93OihOU1dpbmRvdyAqKXdpbmRvdyBkYWVtb25FbmRw
b2ludDooTlNYUENMaXN0ZW5lckVuZHBvaW50ICopZGFlbW9uRW5kcG9pbnQgY29tcGxldGlvbkhh
bmRsZXI6KHZvaWQgKF4pKGlkIDxBU0NDcmVkZW50aWFsUHJvdG9jb2w+LCBOU0Vycm9yICopKWNv
bXBsZXRpb25IYW5kbGVyOworI2VuZGlmCisKK0BlbmQKKwogQGNsYXNzIEFTQ0NyZWRlbnRpYWxS
ZXF1ZXN0Q29udGV4dDsKIAogZXh0ZXJuIE5TU3RyaW5nICogY29uc3QgQVNDQXV0aG9yaXphdGlv
blByZXNlbnRhdGlvbkNvbnRleHREYXRhS2V5OwpAQCAtMTA1LDE2ICsxMTAsNjUgQEAgdHlwZWRl
ZiBOU19FTlVNKE5TSW50ZWdlciwgQVNDU2VjdXJpdHlLZXlQdWJsaWNLZXlDcmVkZW50aWFsS2lu
ZCkgewogICAgIEFTQ1NlY3VyaXR5S2V5UHVibGljS2V5Q3JlZGVudGlhbEtpbmRBc3NlcnRpb25Q
bGFjZWhvbGRlciwKIH07CiAKK0BjbGFzcyBBU0NQdWJsaWNLZXlDcmVkZW50aWFsRGVzY3JpcHRv
cjsKKworQGludGVyZmFjZSBBU0NQdWJsaWNLZXlDcmVkZW50aWFsRGVzY3JpcHRvciA6IE5TT2Jq
ZWN0IDxOU1NlY3VyZUNvZGluZz4KKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ3JlZGVudGlh
bElEOihOU0RhdGEgKiljcmVkZW50aWFsSUQgdHJhbnNwb3J0czoobnVsbGFibGUgTlNBcnJheTxO
U1N0cmluZyAqPiAqKWFsbG93ZWRUcmFuc3BvcnRzOworCitAcHJvcGVydHkgKG5vbmF0b21pYywg
cmVhZG9ubHkpIE5TRGF0YSAqY3JlZGVudGlhbElEOworQHByb3BlcnR5IChub25hdG9taWMsIG51
bGxhYmxlLCByZWFkb25seSkgTlNBcnJheTxOU1N0cmluZyAqPiAqdHJhbnNwb3J0czsKKworQGVu
ZAorCitAY2xhc3MgQVNDUHVibGljS2V5Q3JlZGVudGlhbERlc2NyaXB0b3I7CisKK3R5cGVkZWYg
TlNfRU5VTShOU1VJbnRlZ2VyLCBBU0NQdWJsaWNLZXlDcmVkZW50aWFsS2luZCkgeworICAgIEFT
Q1B1YmxpY0tleUNyZWRlbnRpYWxLaW5kUGxhdGZvcm0gPSAxLAorICAgIEFTQ1B1YmxpY0tleUNy
ZWRlbnRpYWxLaW5kU2VjdXJpdHlLZXksCit9OworCitAaW50ZXJmYWNlIEFTQ1B1YmxpY0tleUNy
ZWRlbnRpYWxBc3NlcnRpb25PcHRpb25zIDogTlNPYmplY3QgPE5TU2VjdXJlQ29kaW5nPgorCist
IChpbnN0YW5jZXR5cGUpaW5pdFdpdGhLaW5kOihBU0NQdWJsaWNLZXlDcmVkZW50aWFsS2luZClj
cmVkZW50aWFsS2luZCByZWx5aW5nUGFydHlJZGVudGlmaWVyOihOU1N0cmluZyAqKXJlbHlpbmdQ
YXJ0eUlkZW50aWZpZXIgY2hhbGxlbmdlOihOU0RhdGEgKiljaGFsbGVuZ2UgdXNlclZlcmlmaWNh
dGlvblByZWZlcmVuY2U6KG51bGxhYmxlIE5TU3RyaW5nICopdXNlclZlcmlmaWNhdGlvblByZWZl
cmVuY2UgYWxsb3dlZENyZWRlbnRpYWxzOihudWxsYWJsZSBOU0FycmF5PEFTQ1B1YmxpY0tleUNy
ZWRlbnRpYWxEZXNjcmlwdG9yICo+ICopYWxsb3dlZENyZWRlbnRpYWxzOworCistIChpbnN0YW5j
ZXR5cGUpaW5pdFdpdGhLaW5kOihBU0NQdWJsaWNLZXlDcmVkZW50aWFsS2luZCljcmVkZW50aWFs
S2luZCByZWx5aW5nUGFydHlJZGVudGlmaWVyOihOU1N0cmluZyAqKXJlbHlpbmdQYXJ0eUlkZW50
aWZpZXIgY2xpZW50RGF0YUhhc2g6KE5TRGF0YSAqKWNsaWVudERhdGFIYXNoIHVzZXJWZXJpZmlj
YXRpb25QcmVmZXJlbmNlOihudWxsYWJsZSBOU1N0cmluZyAqKXVzZXJWZXJpZmljYXRpb25QcmVm
ZXJlbmNlIGFsbG93ZWRDcmVkZW50aWFsczoobnVsbGFibGUgTlNBcnJheTxBU0NQdWJsaWNLZXlD
cmVkZW50aWFsRGVzY3JpcHRvciAqPiAqKWFsbG93ZWRDcmVkZW50aWFsczsKKworQHByb3BlcnR5
IChub25hdG9taWMsIHJlYWRvbmx5KSBBU0NQdWJsaWNLZXlDcmVkZW50aWFsS2luZCBjcmVkZW50
aWFsS2luZDsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5LCByZWFkb25seSkgTlNTdHJpbmcg
KnJlbHlpbmdQYXJ0eUlkZW50aWZpZXI7CitAcHJvcGVydHkgKG5vbmF0b21pYywgbnVsbGFibGUs
IGNvcHksIHJlYWRvbmx5KSBOU0RhdGEgKmNoYWxsZW5nZTsKKy8vIElmIGNsaWVudERhdGFIYXNo
IGlzIG51bGwsIHRoZW4gZ2V0cyBnZW5lcmF0ZWQgZnJvbSBjaGFsbGVuZ2UgYW5kIHJlbHlpbmdQ
YXJ0eUlkZW50aWZpZXIuCitAcHJvcGVydHkgKG5vbmF0b21pYywgbnVsbGFibGUsIGNvcHkpIE5T
RGF0YSAqY2xpZW50RGF0YUhhc2g7CitAcHJvcGVydHkgKG5vbmF0b21pYywgbnVsbGFibGUsIHJl
YWRvbmx5LCBjb3B5KSBOU1N0cmluZyAqdXNlclZlcmlmaWNhdGlvblByZWZlcmVuY2U7CisKK0Bw
cm9wZXJ0eSAobm9uYXRvbWljLCBudWxsYWJsZSwgcmVhZG9ubHksIGNvcHkpIE5TQXJyYXk8QVND
UHVibGljS2V5Q3JlZGVudGlhbERlc2NyaXB0b3IgKj4gKmFsbG93ZWRDcmVkZW50aWFsczsKKwor
QGVuZAorCisKK3R5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBBU0NDcmVkZW50aWFsUmVx
dWVzdFR5cGVzKSB7CisgICAgQVNDQ3JlZGVudGlhbFJlcXVlc3RUeXBlTm9uZSA9IDAsCisgICAg
QVNDQ3JlZGVudGlhbFJlcXVlc3RUeXBlUGFzc3dvcmQgPSAxIDw8IDAsCisgICAgQVNDQ3JlZGVu
dGlhbFJlcXVlc3RUeXBlQXBwbGVJRCA9IDEgPDwgMSwKKyAgICBBU0NDcmVkZW50aWFsUmVxdWVz
dFR5cGVQbGF0Zm9ybVB1YmxpY0tleVJlZ2lzdHJhdGlvbiA9IDEgPDwgMiwKKyAgICBBU0NDcmVk
ZW50aWFsUmVxdWVzdFR5cGVQbGF0Zm9ybVB1YmxpY0tleUFzc2VydGlvbiA9IDEgPDwgMywKKyAg
ICBBU0NDcmVkZW50aWFsUmVxdWVzdFR5cGVTZWN1cml0eUtleVB1YmxpY0tleVJlZ2lzdHJhdGlv
biA9IDEgPDwgNCwKKyAgICBBU0NDcmVkZW50aWFsUmVxdWVzdFR5cGVTZWN1cml0eUtleVB1Ymxp
Y0tleUFzc2VydGlvbiA9IDEgPDwgNSwKK307CisKIEBpbnRlcmZhY2UgQVNDUHVibGljS2V5Q3Jl
ZGVudGlhbENyZWF0aW9uT3B0aW9ucyA6IE5TT2JqZWN0IDxOU1NlY3VyZUNvZGluZz4KIAotQHBy
b3BlcnR5IChub25hdG9taWMsIGNvcHkpIE5TRGF0YSAqY2hhbGxlbmdlOworQHByb3BlcnR5IChu
b25hdG9taWMsIG51bGxhYmxlLCBjb3B5KSBOU0RhdGEgKmNoYWxsZW5nZTsKK0Bwcm9wZXJ0eSAo
bm9uYXRvbWljLCBudWxsYWJsZSwgY29weSkgTlNEYXRhICpjbGllbnREYXRhSGFzaDsKIEBwcm9w
ZXJ0eSAobm9uYXRvbWljLCBjb3B5KSBOU1N0cmluZyAqcmVseWluZ1BhcnR5SWRlbnRpZmllcjsK
IEBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSBOU1N0cmluZyAqdXNlck5hbWU7CiBAcHJvcGVy
dHkgKG5vbmF0b21pYywgY29weSkgTlNEYXRhICp1c2VySWRlbnRpZmllcjsKIEBwcm9wZXJ0eSAo
bm9uYXRvbWljLCBjb3B5KSBOU1N0cmluZyAqdXNlckRpc3BsYXlOYW1lOwogQHByb3BlcnR5IChu
b25hdG9taWMsIGNvcHkpIE5TQXJyYXk8TlNOdW1iZXIgKj4gKnN1cHBvcnRlZEFsZ29yaXRobUlk
ZW50aWZpZXJzOworQHByb3BlcnR5IChub25hdG9taWMsIG51bGxhYmxlLCBjb3B5KSBOU1N0cmlu
ZyAqdXNlclZlcmlmaWNhdGlvblByZWZlcmVuY2U7CiAKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBC
T09MIHNob3VsZFJlcXVpcmVSZXNpZGVudEtleTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5
KSBOU0FycmF5PEFTQ1B1YmxpY0tleUNyZWRlbnRpYWxEZXNjcmlwdG9yICo+ICpleGNsdWRlZENy
ZWRlbnRpYWxzOwogCiBAZW5kCiAKQEAgLTE0OSwxMCArMjAzLDExNSBAQCB0eXBlZGVmIE5TX0VO
VU0oTlNJbnRlZ2VyLCBBU0NTZWN1cml0eUtleVB1YmxpY0tleUNyZWRlbnRpYWxLaW5kKSB7CiAK
IEBlbmQKIAorQGludGVyZmFjZSBBU0NDcmVkZW50aWFsUmVxdWVzdENvbnRleHQgOiBOU09iamVj
dCA8TlNTZWN1cmVDb2Rpbmc+CisKKy0gKGluc3RhbmNldHlwZSlpbml0IE5TX1VOQVZBSUxBQkxF
OworKyAoaW5zdGFuY2V0eXBlKW5ldyBOU19VTkFWQUlMQUJMRTsKKworLSAoaW5zdGFuY2V0eXBl
KWluaXRXaXRoUmVxdWVzdFR5cGVzOihBU0NDcmVkZW50aWFsUmVxdWVzdFR5cGVzKXJlcXVlc3RU
eXBlczsKKworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU1VJbnRlZ2VyIHJlcXVl
c3RUeXBlczsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBudWxsYWJsZSwgY29weSkgTlNTdHJpbmcg
KnJlbHlpbmdQYXJ0eUlkZW50aWZpZXI7CisKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBudWxsYWJs
ZSwgY29weSkgQVNDUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyAqcGxhdGZvcm1L
ZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zOworQHByb3BlcnR5IChub25hdG9taWMsIG51bGxh
YmxlLCBjb3B5KSBBU0NQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zICpzZWN1cml0
eUtleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM7CisKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBu
dWxsYWJsZSwgY29weSkgQVNDUHVibGljS2V5Q3JlZGVudGlhbEFzc2VydGlvbk9wdGlvbnMgKnBs
YXRmb3JtS2V5Q3JlZGVudGlhbEFzc2VydGlvbk9wdGlvbnM7CitAcHJvcGVydHkgKG5vbmF0b21p
YywgbnVsbGFibGUsIGNvcHkpIEFTQ1B1YmxpY0tleUNyZWRlbnRpYWxBc3NlcnRpb25PcHRpb25z
ICpzZWN1cml0eUtleUNyZWRlbnRpYWxBc3NlcnRpb25PcHRpb25zOworCitAZW5kCisKIEBwcm90
b2NvbCBBU0NDcmVkZW50aWFsUHJvdG9jb2wgPE5TT2JqZWN0LCBOU1NlY3VyZUNvZGluZz4KIAog
QGVuZAogCitAY2xhc3MgX1dLQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U7CisKK0Bp
bnRlcmZhY2UgQVNDUGxhdGZvcm1QdWJsaWNLZXlDcmVkZW50aWFsUmVnaXN0cmF0aW9uIDogTlNP
YmplY3QgPEFTQ0NyZWRlbnRpYWxQcm90b2NvbD4KKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRo
UmVseWluZ1BhcnR5SWRlbnRpZmllcjooTlNTdHJpbmcgKilyZWx5aW5nUGFydHlJZGVudGlmaWVy
IGF0dGVzdGF0aW9uT2JqZWN0OihOU0RhdGEgKilhdHRlc3RhdGlvbk9iamVjdCByYXdDbGllbnRE
YXRhSlNPTjooTlNEYXRhICopcmF3Q2xpZW50RGF0YUpTT04gY3JlZGVudGlhbElEOihOU0RhdGEg
KiljcmVkZW50aWFsSUQ7CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aFJlbHlpbmdQYXJ0eUlk
ZW50aWZpZXI6KE5TU3RyaW5nICopcmVseWluZ1BhcnR5SWRlbnRpZmllciBhdXRoZW50aWNhdG9y
QXR0ZXN0YXRpb25SZXNwb25zZTooX1dLQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2Ug
KilhdHRlc3RhdGlvblJlc3BvbnNlIHJhd0NsaWVudERhdGFKU09OOihOU0RhdGEgKilyYXdDbGll
bnREYXRhSlNPTjsKKworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHksIHJlYWRvbmx5KSBOU0Rh
dGEgKmNyZWRlbnRpYWxJRDsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5LCByZWFkb25seSkg
TlNTdHJpbmcgKnJlbHlpbmdQYXJ0eUlkZW50aWZpZXI7CitAcHJvcGVydHkgKG5vbmF0b21pYywg
Y29weSwgcmVhZG9ubHkpIE5TRGF0YSAqYXR0ZXN0YXRpb25PYmplY3Q7CitAcHJvcGVydHkgKG5v
bmF0b21pYywgY29weSwgcmVhZG9ubHkpIE5TRGF0YSAqcmF3Q2xpZW50RGF0YUpTT047CisKKysg
KGluc3RhbmNldHlwZSluZXcgTlNfVU5BVkFJTEFCTEU7CistIChpbnN0YW5jZXR5cGUpaW5pdCBO
U19VTkFWQUlMQUJMRTsKKworQGVuZAorCitAaW50ZXJmYWNlIEFTQ1NlY3VyaXR5S2V5UHVibGlj
S2V5Q3JlZGVudGlhbFJlZ2lzdHJhdGlvbiA6IE5TT2JqZWN0IDxBU0NDcmVkZW50aWFsUHJvdG9j
b2w+CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aFJlbHlpbmdQYXJ0eUlkZW50aWZpZXI6KE5T
U3RyaW5nICopcmVseWluZ1BhcnR5SWRlbnRpZmllciBhdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25S
ZXNwb25zZTooX1dLQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UgKilhdHRlc3RhdGlv
blJlc3BvbnNlOworCitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSwgcmVhZG9ubHkpIE5TRGF0
YSAqY3JlZGVudGlhbElEOworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHksIHJlYWRvbmx5KSBO
U0RhdGEgKnJhd0NsaWVudERhdGFKU09OOworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHksIHJl
YWRvbmx5KSBOU1N0cmluZyAqcmVseWluZ1BhcnR5SWRlbnRpZmllcjsKK0Bwcm9wZXJ0eSAobm9u
YXRvbWljLCBjb3B5LCByZWFkb25seSkgTlNEYXRhICphdHRlc3RhdGlvbk9iamVjdDsKKworQGVu
ZAorCitAY2xhc3MgX1dLQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOworCitAaW50ZXJm
YWNlIEFTQ1BsYXRmb3JtUHVibGljS2V5Q3JlZGVudGlhbEFzc2VydGlvbiA6IE5TT2JqZWN0IDxB
U0NDcmVkZW50aWFsUHJvdG9jb2w+CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aFJlbHlpbmdQ
YXJ0eUlkZW50aWZpZXI6KE5TU3RyaW5nICopcmVseWluZ1BhcnR5SWRlbnRpZmllciBhdXRoZW50
aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6KF9XS0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25z
ZSAqKWFzc2VydGlvblJlc3BvbnNlOworCitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSwgcmVh
ZG9ubHkpIE5TRGF0YSAqY3JlZGVudGlhbElEOworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHks
IHJlYWRvbmx5KSBOU0RhdGEgKnJhd0NsaWVudERhdGFKU09OOworQHByb3BlcnR5IChub25hdG9t
aWMsIGNvcHksIHJlYWRvbmx5KSBOU1N0cmluZyAqcmVseWluZ1BhcnR5SWRlbnRpZmllcjsKK0Bw
cm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5LCByZWFkb25seSkgTlNEYXRhICphdXRoZW50aWNhdG9y
RGF0YTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5LCByZWFkb25seSkgTlNEYXRhICpzaWdu
YXR1cmU7CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSwgcmVhZG9ubHksIG51bGxhYmxlKSBO
U0RhdGEgKnVzZXJIYW5kbGU7CisKK0BlbmQKKworQGludGVyZmFjZSBBU0NTZWN1cml0eUtleVB1
YmxpY0tleUNyZWRlbnRpYWxBc3NlcnRpb24gOiBOU09iamVjdCA8QVNDQ3JlZGVudGlhbFByb3Rv
Y29sPgorCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhSZWx5aW5nUGFydHlJZGVudGlmaWVyOihO
U1N0cmluZyAqKXJlbHlpbmdQYXJ0eUlkZW50aWZpZXIgYXV0aGVudGljYXRvckFzc2VydGlvblJl
c3BvbnNlOihfV0tBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UgKilhc3NlcnRpb25SZXNw
b25zZTsKKworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHksIHJlYWRvbmx5KSBOU0RhdGEgKmNy
ZWRlbnRpYWxJRDsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5LCByZWFkb25seSkgTlNTdHJp
bmcgKnJlbHlpbmdQYXJ0eUlkZW50aWZpZXI7CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSwg
cmVhZG9ubHkpIE5TRGF0YSAqYXV0aGVudGljYXRvckRhdGE7CitAcHJvcGVydHkgKG5vbmF0b21p
YywgY29weSwgcmVhZG9ubHkpIE5TRGF0YSAqc2lnbmF0dXJlOworQHByb3BlcnR5IChub25hdG9t
aWMsIGNvcHksIHJlYWRvbmx5LCBudWxsYWJsZSkgTlNEYXRhICp1c2VySGFuZGxlOworQHByb3Bl
cnR5IChub25hdG9taWMsIGNvcHksIHJlYWRvbmx5KSBOU0RhdGEgKnJhd0NsaWVudERhdGFKU09O
OworCitAZW5kCisKK0Bwcm90b2NvbCBBU0NBZ2VudFByb3RvY29sIDxOU09iamVjdD4KKworI2lm
IFRBUkdFVF9PU19JT1MgJiYgIVRBUkdFVF9PU19NQUNDQVRBTFlTVAorLSAodm9pZClwZXJmb3Jt
QXV0aG9yaXphdGlvblJlcXVlc3RzRm9yQ29udGV4dDooQVNDQ3JlZGVudGlhbFJlcXVlc3RDb250
ZXh0ICopY29udGV4dCB3aXRoQ29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKGlkIDxBU0NDcmVk
ZW50aWFsUHJvdG9jb2w+IF9OdWxsYWJsZSBjcmVkZW50aWFsLCBOU0Vycm9yICogX051bGxhYmxl
IGVycm9yKSljb21wbGV0aW9uSGFuZGxlcjsKKyNlbGlmIFRBUkdFVF9PU19PU1ggfHwgVEFSR0VU
X09TX01BQ0NBVEFMWVNUCistICh2b2lkKXBlcmZvcm1BdXRob3JpemF0aW9uUmVxdWVzdHNGb3JD
b250ZXh0OihBU0NDcmVkZW50aWFsUmVxdWVzdENvbnRleHQgKiljb250ZXh0IHdpdGhDbGVhcmFu
Y2VIYW5kbGVyOih2b2lkICheKShOU1hQQ0xpc3RlbmVyRW5kcG9pbnQgKiBfTnVsbGFibGUgZGFl
bW9uRW5kcG9pbnQsIE5TRXJyb3IgKiBfTnVsbGFibGUgZXJyb3IpKWNsZWFyYW5jZUhhbmRsZXI7
CisKKy0gKHZvaWQpYmVnaW5BdXRob3JpemF0aW9uRm9yQXBwbGljYXRpb25JZGVudGlmaWVyOihO
U1N0cmluZyAqKWFwcGxpY2F0aW9uSWRlbnRpZmllciBmcm9tRW5kcG9pbnQ6KE5TWFBDTGlzdGVu
ZXJFbmRwb2ludCAqKWxpc3RlbmVyRW5kcG9pbnQ7CisKKy0gKHZvaWQpdXNlclNlbGVjdGVkTG9n
aW5DaG9pY2U6KGlkIDxBU0NMb2dpbkNob2ljZVByb3RvY29sPilsb2dpbkNob2ljZSBhdXRoZW50
aWNhdGVkQ29udGV4dDooTEFDb250ZXh0ICopY29udGV4dCBjb21wbGV0aW9uSGFuZGxlcjoodm9p
ZCAoXikoaWQgPEFTQ0NyZWRlbnRpYWxQcm90b2NvbD4gX051bGxhYmxlLCBOU0Vycm9yICogX051
bGxhYmxlKSljb21wbGV0aW9uSGFuZGxlcjsKKworLSAodm9pZClyZXF1ZXN0Q29tcGxldGVkV2l0
aENyZWRlbnRpYWw6KG51bGxhYmxlIGlkPEFTQ0NyZWRlbnRpYWxQcm90b2NvbD4pY3JlZGVudGlh
bCBlcnJvcjoobnVsbGFibGUgTlNFcnJvciAqKWVycm9yOworI2VuZGlmCisKK0BlbmQKKworQGlu
dGVyZmFjZSBBU0NBZ2VudFByb3h5IDogTlNPYmplY3QgPEFTQ0FnZW50UHJvdG9jb2w+CisKKy0g
KGluc3RhbmNldHlwZSlpbml0OworCisjaWYgVEFSR0VUX09TX09TWAorLSAoaW5zdGFuY2V0eXBl
KWluaXRXaXRoRW5kcG9pbnQ6KE5TWFBDTGlzdGVuZXJFbmRwb2ludCAqKWVuZHBvaW50OworI2Vu
ZGlmCisKKy0gKHZvaWQpaW52YWxpZGF0ZTsKKworLSAodm9pZClyZWNvbm5lY3RJZk5lY2Vzc2Fy
eTsKKworQGVuZAorCiAvLyBGSVhNRSgyMTk3NjcpOiBSZW1vdmUgQVNDQXBwbGVJRENyZWRlbnRp
YWwuCiBAaW50ZXJmYWNlIEFTQ0FwcGxlSURDcmVkZW50aWFsIDogTlNPYmplY3QgPEFTQ0NyZWRl
bnRpYWxQcm90b2NvbD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQppbmRleCBlNWY5ZDZl
NGY3MTFjZmFkMDE4MTNmNTRhMjQ4MTIwZTdjY2YzMGY2Li40YjkxNGU0MDE0YzNiYWU4NTgzZDM3
ODExMjZjMTE2YjBmODg1ZDMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQpAQCAtODcs
NyArODcsNyBAQCBzdGF0aWMgUmV0YWluUHRyPE5TRGF0YT4gcHJvZHVjZUNsaWVudERhdGFKc29u
KF9XS1dlYkF1dGhlbnRpY2F0aW9uVHlwZSB0eXBlLCBOUwogICAgIGF1dG8gY2hhbGxlbmdlQnVm
ZmVyID0gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4
X3QqPihjaGFsbGVuZ2UuYnl0ZXMpLCBjaGFsbGVuZ2UubGVuZ3RoKTsKICAgICBhdXRvIHNlY3Vy
aXR5T3JpZ2luID0gV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcob3Jp
Z2luKTsKIAotICAgIGF1dG8gY2xpZW50RGF0YUpzb24gPSBidWlsZENsaWVudERhdGFKc29uKGNs
aWVudERhdGFUeXBlLCBXZWJDb3JlOjpCdWZmZXJTb3VyY2UoY2hhbGxlbmdlQnVmZmVyKSwgc2Vj
dXJpdHlPcmlnaW4pOworICAgIGF1dG8gY2xpZW50RGF0YUpzb24gPSBidWlsZENsaWVudERhdGFK
c29uKGNsaWVudERhdGFUeXBlLCBXZWJDb3JlOjpCdWZmZXJTb3VyY2UoY2hhbGxlbmdlQnVmZmVy
KSwgc2VjdXJpdHlPcmlnaW4sIFdlYkF1dGhuOjpTY29wZTo6U2FtZU9yaWdpbik7CiAgICAgcmV0
dXJuIGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXM6Y2xpZW50RGF0YUpzb24t
PmRhdGEoKSBsZW5ndGg6Y2xpZW50RGF0YUpzb24tPmJ5dGVMZW5ndGgoKV0pOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9X
ZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclBy
b3h5Lm1tCmluZGV4IDNmMDljMGQ3MDAwZDMwZjZkNDAzYWEzNzI5YzlhOThkZDI5MjRiOTQuLmVk
MzJjOGI0M2IxM2ZkYTdlODg0MDc2NGJmZjNlODFkNzc5NDUzMGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL1dlYkF1dGhlbnRpY2F0
b3JDb29yZGluYXRvclByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL0NvY29hL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5Lm1tCkBA
IC01MCw2ICs1MCwxMSBAQCBzdGF0aWMgaW5saW5lIFJlZjxBcnJheUJ1ZmZlcj4gdG9BcnJheUJ1
ZmZlcihOU0RhdGEgKmRhdGEpCiAgICAgcmV0dXJuIEFycmF5QnVmZmVyOjpjcmVhdGUocmVpbnRl
cnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5ieXRlcyksIGRhdGEubGVuZ3RoKTsKIH0K
IAorc3RhdGljIGlubGluZSBSZXRhaW5QdHI8TlNEYXRhPiB0b05TRGF0YShjb25zdCBWZWN0b3I8
dWludDhfdD4mIGRhdGEpCit7CisgICAgcmV0dXJuIGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGlu
aXRXaXRoQnl0ZXM6ZGF0YS5kYXRhKCkgbGVuZ3RoOmRhdGEuc2l6ZSgpXSk7Cit9CisKIHN0YXRp
YyBpbmxpbmUgUmV0YWluUHRyPE5TU3RyaW5nPiB0b05TU3RyaW5nKFVzZXJWZXJpZmljYXRpb25S
ZXF1aXJlbWVudCB1c2VyVmVyaWZpY2F0aW9uUmVxdWlyZW1lbnQpCiB7CiAgICAgc3dpdGNoICh1
c2VyVmVyaWZpY2F0aW9uUmVxdWlyZW1lbnQpIHsKQEAgLTE0NSw3ICsxNTAsNyBAQCBzdGF0aWMg
aW5saW5lIFJldGFpblB0cjxBU0NQdWJsaWNLZXlDcmVkZW50aWFsRGVzY3JpcHRvcj4gdG9BU0NE
ZXNjcmlwdG9yKFB1YmxpYwogICAgIHJldHVybiBhZG9wdE5TKFthbGxvY0FTQ1B1YmxpY0tleUNy
ZWRlbnRpYWxEZXNjcmlwdG9ySW5zdGFuY2UoKSBpbml0V2l0aENyZWRlbnRpYWxJRDpXZWJDb3Jl
Ojp0b05TRGF0YShkZXNjcmlwdG9yLmlkKS5nZXQoKSB0cmFuc3BvcnRzOnRyYW5zcG9ydHMuZ2V0
KCldKTsKIH0KIAotc3RhdGljIFJldGFpblB0cjxBU0NDcmVkZW50aWFsUmVxdWVzdENvbnRleHQ+
IGNvbmZpZ3VyZVJlZ2lzdHJhdGlvblJlcXVlc3RDb250ZXh0KGNvbnN0IFB1YmxpY0tleUNyZWRl
bnRpYWxDcmVhdGlvbk9wdGlvbnMmIG9wdGlvbnMpCitzdGF0aWMgUmV0YWluUHRyPEFTQ0NyZWRl
bnRpYWxSZXF1ZXN0Q29udGV4dD4gY29uZmlndXJlUmVnaXN0cmF0aW9uUmVxdWVzdENvbnRleHQo
Y29uc3QgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyYgb3B0aW9ucywgVmVjdG9y
PHVpbnQ4X3Q+IGhhc2gpCiB7CiAgICAgQVNDQ3JlZGVudGlhbFJlcXVlc3RUeXBlcyByZXF1ZXN0
VHlwZXMgPSBBU0NDcmVkZW50aWFsUmVxdWVzdFR5cGVQbGF0Zm9ybVB1YmxpY0tleVJlZ2lzdHJh
dGlvbiB8IEFTQ0NyZWRlbnRpYWxSZXF1ZXN0VHlwZVNlY3VyaXR5S2V5UHVibGljS2V5UmVnaXN0
cmF0aW9uOwogCkBAIC0xNjksNyArMTc0LDEwIEBAIHN0YXRpYyBSZXRhaW5QdHI8QVNDQ3JlZGVu
dGlhbFJlcXVlc3RDb250ZXh0PiBjb25maWd1cmVSZWdpc3RyYXRpb25SZXF1ZXN0Q29udGV4CiAK
ICAgICBhdXRvIGNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMgPSBhZG9wdE5TKFthbGxvY0FTQ1B1
YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnNJbnN0YW5jZSgpIGluaXRdKTsKIAotICAg
IFtjcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zIHNldENoYWxsZW5nZTpXZWJDb3JlOjp0b05TRGF0
YShvcHRpb25zLmNoYWxsZW5nZSkuZ2V0KCldOworICAgIGlmIChbY3JlZGVudGlhbENyZWF0aW9u
T3B0aW9ucyByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNldENsaWVudERhdGFIYXNoOild
KQorICAgICAgICBbY3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyBzZXRDbGllbnREYXRhSGFzaDp0
b05TRGF0YShoYXNoKS5nZXQoKV07CisgICAgZWxzZQorICAgICAgICBbY3JlZGVudGlhbENyZWF0
aW9uT3B0aW9ucyBzZXRDaGFsbGVuZ2U6V2ViQ29yZTo6dG9OU0RhdGEob3B0aW9ucy5jaGFsbGVu
Z2UpLmdldCgpXTsKICAgICBbY3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyBzZXRSZWx5aW5nUGFy
dHlJZGVudGlmaWVyOm9wdGlvbnMucnAuaWRdOwogICAgIFtjcmVkZW50aWFsQ3JlYXRpb25PcHRp
b25zIHNldFVzZXJOYW1lOm9wdGlvbnMudXNlci5uYW1lXTsKICAgICBbY3JlZGVudGlhbENyZWF0
aW9uT3B0aW9ucyBzZXRVc2VySWRlbnRpZmllcjpXZWJDb3JlOjp0b05TRGF0YShvcHRpb25zLnVz
ZXIuaWQpLmdldCgpXTsKQEAgLTIwMiw3ICsyMTAsNyBAQCBzdGF0aWMgUmV0YWluUHRyPEFTQ0Ny
ZWRlbnRpYWxSZXF1ZXN0Q29udGV4dD4gY29uZmlndXJlUmVnaXN0cmF0aW9uUmVxdWVzdENvbnRl
eAogICAgIHJldHVybiByZXF1ZXN0Q29udGV4dDsKIH0KIAotc3RhdGljIFJldGFpblB0cjxBU0ND
cmVkZW50aWFsUmVxdWVzdENvbnRleHQ+IGNvbmZpZ3VyYXRpb25Bc3NlcnRpb25SZXF1ZXN0Q29u
dGV4dChjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMmIG9wdGlvbnMpCitz
dGF0aWMgUmV0YWluUHRyPEFTQ0NyZWRlbnRpYWxSZXF1ZXN0Q29udGV4dD4gY29uZmlndXJhdGlv
bkFzc2VydGlvblJlcXVlc3RDb250ZXh0KGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0
T3B0aW9ucyYgb3B0aW9ucywgVmVjdG9yPHVpbnQ4X3Q+IGhhc2gpCiB7CiAgICAgQVNDQ3JlZGVu
dGlhbFJlcXVlc3RUeXBlcyByZXF1ZXN0VHlwZXMgPSBBU0NDcmVkZW50aWFsUmVxdWVzdFR5cGVQ
bGF0Zm9ybVB1YmxpY0tleUFzc2VydGlvbiB8IEFTQ0NyZWRlbnRpYWxSZXF1ZXN0VHlwZVNlY3Vy
aXR5S2V5UHVibGljS2V5QXNzZXJ0aW9uOwogCkBAIC0yMjcsMTMgKzIzNSwzMCBAQCBzdGF0aWMg
UmV0YWluUHRyPEFTQ0NyZWRlbnRpYWxSZXF1ZXN0Q29udGV4dD4gY29uZmlndXJhdGlvbkFzc2Vy
dGlvblJlcXVlc3RDb250ZQogICAgIGF1dG8gcmVxdWVzdENvbnRleHQgPSBhZG9wdE5TKFthbGxv
Y0FTQ0NyZWRlbnRpYWxSZXF1ZXN0Q29udGV4dEluc3RhbmNlKCkgaW5pdFdpdGhSZXF1ZXN0VHlw
ZXM6cmVxdWVzdFR5cGVzXSk7CiAgICAgW3JlcXVlc3RDb250ZXh0IHNldFJlbHlpbmdQYXJ0eUlk
ZW50aWZpZXI6b3B0aW9ucy5ycElkXTsKIAotICAgIGF1dG8gY2hhbGxlbmdlID0gV2ViQ29yZTo6
dG9OU0RhdGEob3B0aW9ucy5jaGFsbGVuZ2UpOworICAgIGlmIChyZXF1ZXN0VHlwZXMgJiBBU0ND
cmVkZW50aWFsUmVxdWVzdFR5cGVQbGF0Zm9ybVB1YmxpY0tleUFzc2VydGlvbikgeworICAgICAg
ICBhdXRvIGFzc2VydGlvbk9wdGlvbnMgPSBhZG9wdE5TKGFsbG9jQVNDUHVibGljS2V5Q3JlZGVu
dGlhbEFzc2VydGlvbk9wdGlvbnNJbnN0YW5jZSgpKTsKKyAgICAgICAgaWYgKFthc3NlcnRpb25P
cHRpb25zIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoaW5pdFdpdGhLaW5kOnJlbHlpbmdQ
YXJ0eUlkZW50aWZpZXI6Y2xpZW50RGF0YUhhc2g6dXNlclZlcmlmaWNhdGlvblByZWZlcmVuY2U6
YWxsb3dlZENyZWRlbnRpYWxzOildKSB7CisgICAgICAgICAgICBhdXRvIG5zSGFzaCA9IHRvTlNE
YXRhKGhhc2gpOworICAgICAgICAgICAgW2Fzc2VydGlvbk9wdGlvbnMgaW5pdFdpdGhLaW5kOkFT
Q1B1YmxpY0tleUNyZWRlbnRpYWxLaW5kUGxhdGZvcm0gcmVseWluZ1BhcnR5SWRlbnRpZmllcjpv
cHRpb25zLnJwSWQgY2xpZW50RGF0YUhhc2g6bnNIYXNoLmdldCgpIHVzZXJWZXJpZmljYXRpb25Q
cmVmZXJlbmNlOnVzZXJWZXJpZmljYXRpb24uZ2V0KCkgYWxsb3dlZENyZWRlbnRpYWxzOmFsbG93
ZWRDcmVkZW50aWFscy5nZXQoKV07CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBhdXRv
IGNoYWxsZW5nZSA9IFdlYkNvcmU6OnRvTlNEYXRhKG9wdGlvbnMuY2hhbGxlbmdlKTsKKyAgICAg
ICAgICAgIFthc3NlcnRpb25PcHRpb25zIGluaXRXaXRoS2luZDpBU0NQdWJsaWNLZXlDcmVkZW50
aWFsS2luZFBsYXRmb3JtIHJlbHlpbmdQYXJ0eUlkZW50aWZpZXI6b3B0aW9ucy5ycElkIGNoYWxs
ZW5nZTpjaGFsbGVuZ2UuZ2V0KCkgdXNlclZlcmlmaWNhdGlvblByZWZlcmVuY2U6dXNlclZlcmlm
aWNhdGlvbi5nZXQoKSBhbGxvd2VkQ3JlZGVudGlhbHM6YWxsb3dlZENyZWRlbnRpYWxzLmdldCgp
XTsKKyAgICAgICAgfQogCi0gICAgaWYgKHJlcXVlc3RUeXBlcyAmIEFTQ0NyZWRlbnRpYWxSZXF1
ZXN0VHlwZVBsYXRmb3JtUHVibGljS2V5QXNzZXJ0aW9uKQotICAgICAgICBbcmVxdWVzdENvbnRl
eHQgc2V0UGxhdGZvcm1LZXlDcmVkZW50aWFsQXNzZXJ0aW9uT3B0aW9uczpbYWxsb2NBU0NQdWJs
aWNLZXlDcmVkZW50aWFsQXNzZXJ0aW9uT3B0aW9uc0luc3RhbmNlKCkgaW5pdFdpdGhLaW5kOkFT
Q1B1YmxpY0tleUNyZWRlbnRpYWxLaW5kUGxhdGZvcm0gcmVseWluZ1BhcnR5SWRlbnRpZmllcjpv
cHRpb25zLnJwSWQgY2hhbGxlbmdlOmNoYWxsZW5nZS5nZXQoKSB1c2VyVmVyaWZpY2F0aW9uUHJl
ZmVyZW5jZTp1c2VyVmVyaWZpY2F0aW9uLmdldCgpIGFsbG93ZWRDcmVkZW50aWFsczphbGxvd2Vk
Q3JlZGVudGlhbHMuZ2V0KCldXTsKKyAgICAgICAgW3JlcXVlc3RDb250ZXh0IHNldFBsYXRmb3Jt
S2V5Q3JlZGVudGlhbEFzc2VydGlvbk9wdGlvbnM6YXNzZXJ0aW9uT3B0aW9ucy5nZXQoKV07Cisg
ICAgfQogCi0gICAgaWYgKHJlcXVlc3RUeXBlcyAmIEFTQ0NyZWRlbnRpYWxSZXF1ZXN0VHlwZVNl
Y3VyaXR5S2V5UHVibGljS2V5QXNzZXJ0aW9uKQotICAgICAgICBbcmVxdWVzdENvbnRleHQgc2V0
U2VjdXJpdHlLZXlDcmVkZW50aWFsQXNzZXJ0aW9uT3B0aW9uczpbYWxsb2NBU0NQdWJsaWNLZXlD
cmVkZW50aWFsQXNzZXJ0aW9uT3B0aW9uc0luc3RhbmNlKCkgaW5pdFdpdGhLaW5kOkFTQ1B1Ymxp
Y0tleUNyZWRlbnRpYWxLaW5kU2VjdXJpdHlLZXkgcmVseWluZ1BhcnR5SWRlbnRpZmllcjpvcHRp
b25zLnJwSWQgY2hhbGxlbmdlOmNoYWxsZW5nZS5nZXQoKSB1c2VyVmVyaWZpY2F0aW9uUHJlZmVy
ZW5jZTp1c2VyVmVyaWZpY2F0aW9uLmdldCgpIGFsbG93ZWRDcmVkZW50aWFsczphbGxvd2VkQ3Jl
ZGVudGlhbHMuZ2V0KCldXTsKKyAgICBpZiAocmVxdWVzdFR5cGVzICYgQVNDQ3JlZGVudGlhbFJl
cXVlc3RUeXBlU2VjdXJpdHlLZXlQdWJsaWNLZXlBc3NlcnRpb24pIHsKKyAgICAgICAgYXV0byBh
c3NlcnRpb25PcHRpb25zID0gYWRvcHROUyhhbGxvY0FTQ1B1YmxpY0tleUNyZWRlbnRpYWxBc3Nl
cnRpb25PcHRpb25zSW5zdGFuY2UoKSk7CisgICAgICAgIGlmIChbYXNzZXJ0aW9uT3B0aW9ucyBy
ZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGluaXRXaXRoS2luZDpyZWx5aW5nUGFydHlJZGVu
dGlmaWVyOmNsaWVudERhdGFIYXNoOnVzZXJWZXJpZmljYXRpb25QcmVmZXJlbmNlOmFsbG93ZWRD
cmVkZW50aWFsczopXSkgeworICAgICAgICAgICAgYXV0byBuc0hhc2ggPSB0b05TRGF0YShoYXNo
KTsKKyAgICAgICAgICAgIFthc3NlcnRpb25PcHRpb25zIGluaXRXaXRoS2luZDpBU0NQdWJsaWNL
ZXlDcmVkZW50aWFsS2luZFNlY3VyaXR5S2V5IHJlbHlpbmdQYXJ0eUlkZW50aWZpZXI6b3B0aW9u
cy5ycElkIGNsaWVudERhdGFIYXNoOm5zSGFzaC5nZXQoKSB1c2VyVmVyaWZpY2F0aW9uUHJlZmVy
ZW5jZTp1c2VyVmVyaWZpY2F0aW9uLmdldCgpIGFsbG93ZWRDcmVkZW50aWFsczphbGxvd2VkQ3Jl
ZGVudGlhbHMuZ2V0KCldOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgYXV0byBjaGFs
bGVuZ2UgPSBXZWJDb3JlOjp0b05TRGF0YShvcHRpb25zLmNoYWxsZW5nZSk7CisgICAgICAgICAg
ICBbYXNzZXJ0aW9uT3B0aW9ucyBpbml0V2l0aEtpbmQ6QVNDUHVibGljS2V5Q3JlZGVudGlhbEtp
bmRTZWN1cml0eUtleSByZWx5aW5nUGFydHlJZGVudGlmaWVyOm9wdGlvbnMucnBJZCBjaGFsbGVu
Z2U6Y2hhbGxlbmdlLmdldCgpIHVzZXJWZXJpZmljYXRpb25QcmVmZXJlbmNlOnVzZXJWZXJpZmlj
YXRpb24uZ2V0KCkgYWxsb3dlZENyZWRlbnRpYWxzOmFsbG93ZWRDcmVkZW50aWFscy5nZXQoKV07
CisgICAgICAgIH0KKyAgICAgICAgW3JlcXVlc3RDb250ZXh0IHNldFNlY3VyaXR5S2V5Q3JlZGVu
dGlhbEFzc2VydGlvbk9wdGlvbnM6YXNzZXJ0aW9uT3B0aW9ucy5nZXQoKV07CisgICAgfQogCiAg
ICAgcmV0dXJuIHJlcXVlc3RDb250ZXh0OwogfQpAQCAtMjQyLDkgKzI2Nyw5IEBAIFJldGFpblB0
cjxBU0NDcmVkZW50aWFsUmVxdWVzdENvbnRleHQ+IFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRv
clByb3h5Ojpjb250ZXh0CiB7CiAgICAgUmV0YWluUHRyPEFTQ0NyZWRlbnRpYWxSZXF1ZXN0Q29u
dGV4dD4gcmVzdWx0OwogICAgIFdURjo6c3dpdGNoT24ocmVxdWVzdERhdGEub3B0aW9ucywgWyZd
KGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMmIG9wdGlvbnMpIHsKLSAg
ICAgICAgcmVzdWx0ID0gY29uZmlndXJlUmVnaXN0cmF0aW9uUmVxdWVzdENvbnRleHQob3B0aW9u
cyk7CisgICAgICAgIHJlc3VsdCA9IGNvbmZpZ3VyZVJlZ2lzdHJhdGlvblJlcXVlc3RDb250ZXh0
KG9wdGlvbnMsIHJlcXVlc3REYXRhLmhhc2gpOwogICAgIH0sIFsmXShjb25zdCBQdWJsaWNLZXlD
cmVkZW50aWFsUmVxdWVzdE9wdGlvbnMmIG9wdGlvbnMpIHsKLSAgICAgICAgcmVzdWx0ID0gY29u
ZmlndXJhdGlvbkFzc2VydGlvblJlcXVlc3RDb250ZXh0KG9wdGlvbnMpOworICAgICAgICByZXN1
bHQgPSBjb25maWd1cmF0aW9uQXNzZXJ0aW9uUmVxdWVzdENvbnRleHQob3B0aW9ucywgcmVxdWVz
dERhdGEuaGFzaCk7CiAgICAgfSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA1OTUw
OWMzYjRkOWQxMGRkZTIwMDg4NjE2MGMyNGI2NDdmNmI5N2JmLi5lNzMxYThkNzJmMjU3MDY4ZWJh
OTA0ZWFiYjM0NzczZDEwM2E1NWU3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjEtMTItMTUg
IEogUGFzY29lICA8al9wYXNjb2VAYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJBdXRobl0gQWxs
b3cgc2FtZS1zaXRlLCBjcm9zcy1vcmlnaW4gaWZyYW1lIGdldCgpCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQzMDkKKyAgICAgICAgcmRhcjovL3By
b2JsZW0vODY0ODYzMTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGQgbGF5b3V0IHRlc3QgZm9yIFdlYkF1dGhuIGdldCBhc3NlcnRpb25zIG9uIGNy
b3NzLXNpdGUsIHNhbWUtc2l0ZXMgaS1mcmFtZXMgd2l0aAorICAgICAgICBwdWJsaWNrZXktY3Jl
ZGVudGlhbHMtZ2V0IGZlYXR1cmUgcG9saWN5LgorCisgICAgICAgICogaHR0cC93cHQvd2ViYXV0
aG4vcHVibGljLWtleS1jcmVkZW50aWFsLXNhbWUtb3JpZ2luLXdpdGgtYW5jZXN0b3JzLmh0dHBz
LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNy
ZWRlbnRpYWwtc2FtZS1vcmlnaW4td2l0aC1hbmNlc3RvcnMuaHR0cHMuaHRtbDoKKyAgICAgICAg
KiBodHRwL3dwdC93ZWJhdXRobi9yZXNvdXJjZXMvdXRpbC5qczoKKwogMjAyMS0xMi0xNSAgWW9z
aGlha2kgSml0c3VrYXdhICA8eW9zaGlha2kuaml0c3VrYXdhQHNvbnkuY29tPgogCiAgICAgICAg
IEpQRUcgWEwgZGVjb2RlciBzaG91bGQgc3VwcG9ydCB1bmRlcnN0YW5kIGNvbG9yIHByb2ZpbGVz
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNy
ZWRlbnRpYWwtc2FtZS1vcmlnaW4td2l0aC1hbmNlc3RvcnMuaHR0cHMtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLXNhbWUt
b3JpZ2luLXdpdGgtYW5jZXN0b3JzLmh0dHBzLWV4cGVjdGVkLnR4dAppbmRleCA2NTMwNjQ1YTE5
NGI0NWFjZDA5ODNmYzM3M2I1YWI2ZGE5NWYxNTk4Li5jNzAyMWQ4MTgxNzAyNDRkNjI0OGJmMDVl
ZDZhOGU5OWNjODcxM2YxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRo
bi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtc2FtZS1vcmlnaW4td2l0aC1hbmNlc3RvcnMuaHR0cHMt
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1r
ZXktY3JlZGVudGlhbC1zYW1lLW9yaWdpbi13aXRoLWFuY2VzdG9ycy5odHRwcy1leHBlY3RlZC50
eHQKQEAgLTIsNCArMiw3IEBACiAKIFBBU1MgVGVzdHMgdGhhdCBhIGZyYW1lIHRoYXQgZG9lc24n
dCBzaGFyZSB0aGUgc2FtZSBvcmlnaW4gd2l0aCBhbGwgaXRzIGFuY2VzdG9ycyBjb3VsZCBub3Qg
YWNjZXNzIHRoZSBBUEkuCiBQQVNTIFRlc3RzIHRoYXQgYSBmcmFtZSB0aGF0IGRvZXNuJ3Qgc2hh
cmUgdGhlIHNhbWUgb3JpZ2luIHdpdGggYWxsIGl0cyBhbmNlc3RvcnMgY291bGQgbm90IGFjY2Vz
cyB0aGUgQVBJLiAyCitQQVNTIFRlc3RzIHRoYXQgYSBmcmFtZSB0aGF0IGlzIHNhbWUtc2l0ZSwg
Y3Jvc3Mtb3JpZ2luIHdpdGhvdXQgcHVibGlja2V5LWNyZWRlbnRpYWxzLWdldCBmZWF0dXJlIHBv
bGljeSBjYW5ub3QgdXNlIGdldCgpLgorUEFTUyBUZXN0cyB0aGF0IGEgZnJhbWUgdGhhdCBpcyBz
YW1lLXNpdGUsIGNyb3NzLW9yaWdpbiB3aXRoIHB1YmxpY2tleS1jcmVkZW50aWFscy1nZXQgZmVh
dHVyZSBwb2xpY3kgY2FuIHVzZSBnZXQoKS4KK1BBU1MgVGVzdHMgdGhhdCBhIGZyYW1lIHRoYXQg
aXMgY3Jvc3Mtb3JpZ2luLCBOT1Qgc2FtZS1zaXRlICB3aXRoIHB1YmxpY2tleS1jcmVkZW50aWFs
cy1nZXQgZmVhdHVyZSBwb2xpY3kgY2Fubm90IHVzZSBnZXQoKS4KIApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLXNhbWUtb3Jp
Z2luLXdpdGgtYW5jZXN0b3JzLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJh
dXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtc2FtZS1vcmlnaW4td2l0aC1hbmNlc3RvcnMuaHR0
cHMuaHRtbAppbmRleCA0ZjFjNDBkOTFmZTc5MWRiZGUyMDlkMjg1MjY1YWUyMDhiNzNkMjMyLi41
ODE0NzVlNTIwNTA0ZDA4YTljMWZhNmYyNzgyNmM0ZTI1NTI4YjYyIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtc2FtZS1vcmln
aW4td2l0aC1hbmNlc3RvcnMuaHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93
ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtc2FtZS1vcmlnaW4td2l0aC1hbmNlc3RvcnMu
aHR0cHMuaHRtbApAQCAtMjIsNiArMjIsMjQgQEAKICAgICAgICAgICAgICAgICBhc3NlcnRfZXF1
YWxzKG1lc3NhZ2UuZGF0YSwgIlBBU1MuIik7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSwg
IlRlc3RzIHRoYXQgYSBmcmFtZSB0aGF0IGRvZXNuJ3Qgc2hhcmUgdGhlIHNhbWUgb3JpZ2luIHdp
dGggYWxsIGl0cyBhbmNlc3RvcnMgY291bGQgbm90IGFjY2VzcyB0aGUgQVBJLiAyIik7CisKKyAg
ICAgICAgcHJvbWlzZV90ZXN0KHQgPT4geworICAgICAgICAgICAgcmV0dXJuIHdpdGhTYW1lU2l0
ZUlmcmFtZSgic2FtZXNpdGUtaWZyYW1lLmh0bWwiKS50aGVuKChtZXNzYWdlKSA9PiB7CisgICAg
ICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhtZXNzYWdlLmRhdGEsICJUaHJvdyBOb3RBbGxvd2Vk
RXJyb3I6IFRoZSBvcmlnaW4gb2YgdGhlIGRvY3VtZW50IGlzIG5vdCB0aGUgc2FtZSBhcyBpdHMg
YW5jZXN0b3JzLiIpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0sICJUZXN0cyB0aGF0IGEg
ZnJhbWUgdGhhdCBpcyBzYW1lLXNpdGUsIGNyb3NzLW9yaWdpbiB3aXRob3V0IHB1YmxpY2tleS1j
cmVkZW50aWFscy1nZXQgZmVhdHVyZSBwb2xpY3kgY2Fubm90IHVzZSBnZXQoKS4iKTsKKworICAg
ICAgICBwcm9taXNlX3Rlc3QodCA9PiB7CisgICAgICAgICAgICByZXR1cm4gd2l0aFNhbWVTaXRl
SWZyYW1lKCJzYW1lc2l0ZS1pZnJhbWUuaHRtbCIsICJwdWJsaWNrZXktY3JlZGVudGlhbHMtZ2V0
IikudGhlbigobWVzc2FnZSkgPT4geworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMobWVz
c2FnZS5kYXRhLCAiUEFTUyEiKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9LCAiVGVzdHMg
dGhhdCBhIGZyYW1lIHRoYXQgaXMgc2FtZS1zaXRlLCBjcm9zcy1vcmlnaW4gd2l0aCBwdWJsaWNr
ZXktY3JlZGVudGlhbHMtZ2V0IGZlYXR1cmUgcG9saWN5IGNhbiB1c2UgZ2V0KCkuIik7CisKKyAg
ICAgICAgcHJvbWlzZV90ZXN0KHQgPT4geworICAgICAgICAgICAgcmV0dXJuIHdpdGhDcm9zc09y
aWdpbklmcmFtZSgic2FtZXNpdGUtaWZyYW1lLmh0bWwiLCAicHVibGlja2V5LWNyZWRlbnRpYWxz
LWdldCIpLnRoZW4oKG1lc3NhZ2UpID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxz
KG1lc3NhZ2UuZGF0YSwgIlRocm93IE5vdEFsbG93ZWRFcnJvcjogVGhlIG9yaWdpbiBvZiB0aGUg
ZG9jdW1lbnQgaXMgbm90IHRoZSBzYW1lIGFzIGl0cyBhbmNlc3RvcnMuIik7CisgICAgICAgICAg
ICB9KTsKKyAgICAgICAgfSwgIlRlc3RzIHRoYXQgYSBmcmFtZSB0aGF0IGlzIGNyb3NzLW9yaWdp
biwgTk9UIHNhbWUtc2l0ZSAgd2l0aCBwdWJsaWNrZXktY3JlZGVudGlhbHMtZ2V0IGZlYXR1cmUg
cG9saWN5IGNhbm5vdCB1c2UgZ2V0KCkuIik7CiAgICAgPC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9yZXNvdXJjZXMv
c2FtZXNpdGUtaWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9yZXNv
dXJjZXMvc2FtZXNpdGUtaWZyYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTY0NjhmNDM1NTMwZTc1ZDli
ZDMyYTVhNTM4ZmVlZGE2YjFiYWJlMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0
dHAvd3B0L3dlYmF1dGhuL3Jlc291cmNlcy9zYW1lc2l0ZS1pZnJhbWUuaHRtbApAQCAtMCwwICsx
LDMwIEBACis8c2NyaXB0IHNyYz0iLi91dGlsLmpzIj48L3NjcmlwdD4KKzxpbnB1dCB0eXBlPSJ0
ZXh0IiBpZD0iaW5wdXQiPgorPHNjcmlwdD4KKyAgICBjb25zdCB1cmwgPSBuZXcgVVJMKHdpbmRv
dy5sb2NhdGlvbi5ocmVmKTsKKyAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgaW50
ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBoaWQ6IHsgc3Rh
Z2U6ICJyZXF1ZXN0Iiwgc3ViU3RhZ2U6ICJtc2ciLCBlcnJvcjogInN1Y2Nlc3MiLCBwYXlsb2Fk
QmFzZTY0OiBbdGVzdEFzc2VydGlvbk1lc3NhZ2VCYXNlNjRdIH0gfSk7CisKKyAgICBmdW5jdGlv
biBtZXNzYWdlVG9Ub3AobWVzc2FnZSkgeworICAgICAgICB0b3AucG9zdE1lc3NhZ2UobWVzc2Fn
ZSwgIioiKTsKKyAgICB9CisKKyAgICBjb25zdCByZXF1ZXN0T3B0aW9ucyA9IHsKKyAgICAgICAg
cHVibGljS2V5OiB7CisgICAgICAgICAgICBjaGFsbGVuZ2U6IGFzY2lpVG9VaW50OEFycmF5KCIx
MjM0NTYiKSwKKyAgICAgICAgICAgIHRpbWVvdXQ6IDEwMAorICAgICAgICB9CisgICAgfTsKKwor
ICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICBpbnRlcm5hbHMud2l0aFVzZXJHZXN0
dXJlKCgpID0+IHsgaW5wdXQuZm9jdXMoKTsgfSk7CisKKyAgICBuYXZpZ2F0b3IuY3JlZGVudGlh
bHMuZ2V0KHJlcXVlc3RPcHRpb25zKS50aGVuKAorICAgICAgICBmdW5jdGlvbih2YWx1ZSkgewor
ICAgICAgICAgICAgbWVzc2FnZVRvVG9wKCJQQVNTISIpOworICAgICAgICB9LAorICAgICAgICBm
dW5jdGlvbihleGNlcHRpb24pIHsKKyAgICAgICAgICAgIG1lc3NhZ2VUb1RvcCgiVGhyb3cgIiAr
IGV4Y2VwdGlvbi5uYW1lICsgIjogIiArIGV4Y2VwdGlvbi5tZXNzYWdlKTsKKyAgICAgIH0KKyAg
ICApOworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRo
bi9yZXNvdXJjZXMvdXRpbC5qcyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3Jlc291
cmNlcy91dGlsLmpzCmluZGV4IDhiZjZkMDJiYTI3OGNkYWZiNzkwOGFmNDVkYTUyNWUyNWQzODE2
ZjAuLjgwMmUxOTVhOTAxNDU4YjFiNTY3NGViZjc1NzRhZWM1ODRlODU5NjIgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3Jlc291cmNlcy91dGlsLmpzCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3Jlc291cmNlcy91dGlsLmpzCkBAIC0zMDQsMTgg
KzMwNCwzMyBAQCBmdW5jdGlvbiB3YWl0Rm9yTG9hZCgpCiAgICAgfSk7CiB9CiAKLWZ1bmN0aW9u
IHdpdGhDcm9zc09yaWdpbklmcmFtZShyZXNvdXJjZUZpbGUpCitmdW5jdGlvbiB3aXRoQ3Jvc3NP
cmlnaW5JZnJhbWUocmVzb3VyY2VGaWxlLCBhbGxvdyA9ICIiKQogewogICAgIHJldHVybiBuZXcg
UHJvbWlzZSgocmVzb2x2ZSkgPT4gewogICAgICAgICB3YWl0Rm9yTG9hZCgpLnRoZW4oKG1lc3Nh
Z2UpID0+IHsKICAgICAgICAgICAgIHJlc29sdmUobWVzc2FnZSk7CiAgICAgICAgIH0pOwogICAg
ICAgICBjb25zdCBmcmFtZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpOworICAg
ICAgICBmcmFtZS5hbGxvdyA9IGFsbG93OwogICAgICAgICBmcmFtZS5zcmMgPSBnZXRfaG9zdF9p
bmZvKCkuSFRUUFNfUkVNT1RFX09SSUdJTiArIFJFU09VUkNFU19ESVIgKyByZXNvdXJjZUZpbGU7
CiAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZnJhbWUpOwogICAgIH0pOwogfQog
CitmdW5jdGlvbiB3aXRoU2FtZVNpdGVJZnJhbWUocmVzb3VyY2VGaWxlLCBhbGxvdyA9ICIiKQor
eworICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4geworICAgICAgICB3YWl0Rm9y
TG9hZCgpLnRoZW4oKG1lc3NhZ2UpID0+IHsKKyAgICAgICAgICAgIHJlc29sdmUobWVzc2FnZSk7
CisgICAgICAgfSk7CisgICAgICAgY29uc3QgZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJpZnJhbWUiKTsKKyAgICAgICBjb25zdCBob3N0ID0gZ2V0X2hvc3RfaW5mbygpOworICAgICAg
IGZyYW1lLmFsbG93ID0gYWxsb3c7CisgICAgICAgZnJhbWUuc3JjID0gImh0dHBzOi8vIiArIGhv
c3QuT1JJR0lOQUxfSE9TVCArICI6IiArIGhvc3QuSFRUUFNfUE9SVDIgKyBSRVNPVVJDRVNfRElS
ICsgcmVzb3VyY2VGaWxlOworICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZnJhbWUp
OworICAgIH0pOworfQorCiBmdW5jdGlvbiBwcm9taXNlUmVqZWN0cyh0ZXN0LCBleHBlY3RlZCwg
cHJvbWlzZSwgZGVzY3JpcHRpb24pCiB7CiAgICAgcmV0dXJuIHByb21pc2UudGhlbih0ZXN0LnVu
cmVhY2hlZF9mdW5jKCJTaG91bGQgaGF2ZSByZWplY3RlZDogIiArIGRlc2NyaXB0aW9uKSkuY2F0
Y2goZnVuY3Rpb24oZSkgewo=
</data>

          </attachment>
      

    </bug>

</bugzilla>