<?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>195728</bug_id>
          
          <creation_ts>2019-03-13 19:24:06 -0700</creation_ts>
          <short_desc>[WHLSL] Compiler uses std::function instead of WTF::Function</short_desc>
          <delta_ts>2020-05-05 00:42:44 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebGPU</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1516344</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2019-03-13 19:24:06 -0700</bug_when>
    <thetext>Compiler uses std::function instead of WTF::Function</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1516356</commentid>
    <comment_count>1</comment_count>
      <attachid>364613</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2019-03-13 19:56:47 -0700</bug_when>
    <thetext>Created attachment 364613
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1535889</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-05-13 17:08:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/50746314&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649083</commentid>
    <comment_count>3</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2020-05-05 00:42:44 -0700</bug_when>
    <thetext>WHLSL is no longer relevant.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>364613</attachid>
            <date>2019-03-13 19:56:47 -0700</date>
            <delta_ts>2019-03-13 19:57:27 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-195728-20190313195646.patch</filename>
            <type>text/plain</type>
            <size>120032</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQyOTIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODcyNTU1YzBhMmI2ODMw
OTg0MGY1NjZkOWVjNjMxNDA2ZWRiNzZmZi4uMGFjMzc1YzU5NzYwZTYxNzQ4MGM0NTYxZTBmYTli
Y2VjMjE5NzdjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0NSBAQAorMjAxOS0wMy0xMyAgTXls
ZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIFtXSExTTF0g
Q29tcGlsZXIgdXNlcyBzdGQ6OmZ1bmN0aW9uIGluc3RlYWQgb2YgV1RGOjpGdW5jdGlvbgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk1NzI4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogd2ViZ3B1
L3dobHNsLmh0bWwKKworICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTENh
bGxFeHByZXNzaW9uLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
TmF0aXZlVHlwZURlY2xhcmF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpO
YXRpdmVUeXBlRGVjbGFyYXRpb246Om5hbWUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6V0hMU0w6OkFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uOjpuYW1lKTogRGVsZXRlZC4K
KyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlUmVmZXJlbmNlLmg6
CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpUeXBlUmVmZXJlbmNlOjpjbG9uZVR5cGVS
ZWZlcmVuY2UgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dI
TFNMRW50cnlQb2ludFNjYWZmb2xkaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpN
ZXRhbDo6RW50cnlQb2ludFNjYWZmb2xkaW5nOjpFbnRyeVBvaW50U2NhZmZvbGRpbmcpOgorICAg
ICAgICAoV2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpFbnRyeVBvaW50U2NhZmZvbGRpbmc6Om1hcHBl
ZEJpbmRHcm91cHMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dI
TFNML01ldGFsL1dITFNMRW50cnlQb2ludFNjYWZmb2xkaW5nLmg6CisgICAgICAgICogTW9kdWxl
cy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xGdW5jdGlvbldyaXRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXSExTTDo6TWV0YWw6OlJlbmRlckZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6Y3Jl
YXRlRW50cnlQb2ludFNjYWZmb2xkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpNZXRh
bDo6Q29tcHV0ZUZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6Y3JlYXRlRW50cnlQb2ludFNjYWZm
b2xkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpNZXRhbDo6bWV0YWxGdW5jdGlvbnMp
OgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpSZW5kZXJGdW5jdGlvbkRlZmluaXRp
b25Xcml0ZXI6OnRha2VWZXJ0ZXhNYXBwZWRCaW5kR3JvdXBzKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OldITFNMOjpNZXRhbDo6UmVuZGVyRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp0
YWtlRnJhZ21lbnRNYXBwZWRCaW5kR3JvdXBzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OldITFNMOjpNZXRhbDo6Q29tcHV0ZUZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dGFrZU1hcHBl
ZEJpbmRHcm91cHMpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML01l
dGFsL1dITFNMRnVuY3Rpb25Xcml0ZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExT
TC9NZXRhbC9XSExTTE1ldGFsQ29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
SExTTDo6TWV0YWw6OmdlbmVyYXRlTWV0YWxDb2RlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdw
dS9XSExTTC9NZXRhbC9XSExTTE1ldGFsQ29kZUdlbmVyYXRvci5oOgorICAgICAgICAqIE1vZHVs
ZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tEdXBsaWNhdGVGdW5jdGlvbnMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6V0hMU0w6OmNoZWNrRHVwbGljYXRlRnVuY3Rpb25zKToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V0hMU0w6OnJlc29sdmVXaXRoUmVmZXJlbmNlQ29tcGFyYXRvcik6CisgICAgICAgIChXZWJDb3Jl
OjpXSExTTDo6cmVzb2x2ZUJ5SW5zdGFudGlhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpXSExT
TDo6Q2hlY2tlcjo6YXNzaWduVHlwZXMpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkNoZWNr
ZXI6OmNoZWNrU2hhZGVyVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6Q2hlY2tlcjo6
dmlzaXQpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6Om1hdGNoQW5kQ29tbWl0KToKKyAgICAg
ICAgKFdlYkNvcmU6OldITFNMOjpDaGVja2VyOjpyZWN1cnNlQW5kR2V0SW5mbyk6CisgICAgICAg
IChXZWJDb3JlOjpXSExTTDo6Q2hlY2tlcjo6YXNzaWduVHlwZSk6CisgICAgICAgIChXZWJDb3Jl
OjpXSExTTDo6Q2hlY2tlcjo6Zm9yd2FyZFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6
OmdldFVubmFtZWRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpDaGVja2VyOjpmaW5p
c2hWaXNpdGluZ1Byb3BlcnR5QWNjZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpDaGVj
a2VyOjppc0Jvb2xUeXBlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEdh
dGhlckVudHJ5UG9pbnRJdGVtcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6R2F0aGVy
ZXI6OnZpc2l0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEluZmVyVHlw
ZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OmluZmVyVHlwZXNGb3JDYWxsKToKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEludHJpbnNpY3MuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6V0hMU0w6OkludHJpbnNpY3M6OmFkZEZ1bGxUZXh0dXJlKToKKyAgICAgICAg
KiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEludHJpbnNpY3MuaDoKKyAgICAgICAgKFdlYkNv
cmU6OldITFNMOjpJbnRyaW5zaWNzOjp1Y2hhclR5cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6V0hMU0w6OkludHJpbnNpY3M6OnVzaG9ydFR5cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6V0hMU0w6OkludHJpbnNpY3M6OmNoYXJUeXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OldITFNMOjpJbnRyaW5zaWNzOjpzaG9ydFR5cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
V0hMU0w6OkludHJpbnNpY3M6OmludFR5cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hM
U0w6OkludHJpbnNpY3M6OnVjaGFyMlR5cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hM
U0w6OkludHJpbnNpY3M6OnVjaGFyNFR5cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hM
U0w6OkludHJpbnNpY3M6OnVzaG9ydDJUeXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldI
TFNMOjpJbnRyaW5zaWNzOjp1c2hvcnQ0VHlwZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpX
SExTTDo6SW50cmluc2ljczo6dWludDJUeXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldI
TFNMOjpJbnRyaW5zaWNzOjp1aW50NFR5cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hM
U0w6OkludHJpbnNpY3M6OmNoYXIyVHlwZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExT
TDo6SW50cmluc2ljczo6Y2hhcjRUeXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNM
OjpJbnRyaW5zaWNzOjpzaG9ydDJUeXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNM
OjpJbnRyaW5zaWNzOjpzaG9ydDRUeXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNM
OjpJbnRyaW5zaWNzOjppbnQyVHlwZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6
SW50cmluc2ljczo6aW50NFR5cGUgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dI
TFNML1dITFNMTGV4ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkxleGVyOjpyZWNv
Z25pemVLZXl3b3JkKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTE5hbWVD
b250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpOYW1lQ29udGV4dDo6YWRkKToK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTE5hbWVSZXNvbHZlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXSExTTDo6TmFtZVJlc29sdmVyOjp2aXNpdCk6CisgICAgICAgICog
TW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xOYW1lUmVzb2x2ZXIuaDoKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmdwdS9XSExTTC9XSExTTFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXSExT
TDo6UGFyc2VyOjpmYWlsKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpQYXJzZXI6OnBlZWsp
OgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OlBhcnNlcjo6cGFyc2VUeXBlKToKKyAgICAgICAg
KFdlYkNvcmU6OldITFNMOjpQYXJzZXI6OnBhcnNlQnVpbHRJblNlbWFudGljKToKKyAgICAgICAg
KiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBhcnNlci5oOgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L1dITFNML1dITFNMUGlwZWxpbmVEZXNjcmlwdG9yLmg6CisgICAgICAgICogTW9kdWxl
cy93ZWJncHUvV0hMU0wvV0hMU0xQcmVwYXJlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNM
OjpwcmVwYXJlU2hhcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpwcmVwYXJlKToKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFByZXBhcmUuaDoKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFJlY3Vyc2l2ZVR5cGVDaGVja2VyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OldITFNMOjpSZWN1cnNpdmVUeXBlQ2hlY2tlcjo6dmlzaXQpOgorICAgICAg
ICAoV2ViQ29yZTo6V0hMU0w6OmNoZWNrUmVjdXJzaXZlVHlwZXMpOgorICAgICAgICAoKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFJlc29sdmVPdmVybG9h
ZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OmNvbnZlcnNpb25Db3N0KToKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFJlc29sdmluZ1R5cGUuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OldITFNMOjpSZXNvbHZpbmdUeXBlOjpSZXNvbHZpbmdUeXBlKToKKyAgICAg
ICAgKFdlYkNvcmU6OldITFNMOjpSZXNvbHZpbmdUeXBlOjpvcGVyYXRvcj0pOgorICAgICAgICAo
V2ViQ29yZTo6V0hMU0w6OlJlc29sdmluZ1R5cGU6OnRoaW5neSk6CisgICAgICAgICogTW9kdWxl
cy93ZWJncHUvV0hMU0wvV0hMU0xTY29wZWRTZXRBZGRlci5oOiBSZW5hbWVkIGZyb20gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xNYXBwZWRCaW5kaW5ncy5o
LgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OlNjb3BlZFNldEFkZGVyOjpTY29wZWRTZXRBZGRl
cik6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6U2NvcGVkU2V0QWRkZXI6On5TY29wZWRTZXRB
ZGRlcik6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6U2NvcGVkU2V0QWRkZXI6OmlzTmV3RW50
cnkgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU2VtYW50aWNN
YXRjaGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjppc0FjY2VwdGFibGVGb3JtYXQp
OgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3RhbmRhcmRMaWJyYXJ5LnR4
dDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN5bnRoZXNpemVBcnJheU9w
ZXJhdG9yTGVuZ3RoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpzeW50aGVzaXplQXJy
YXlPcGVyYXRvckxlbmd0aCk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xT
eW50aGVzaXplQXJyYXlPcGVyYXRvckxlbmd0aC5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1
L1dITFNML1dITFNMU3ludGhlc2l6ZUNvbnN0cnVjdG9ycy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXSExTTDo6c3ludGhlc2l6ZUNvbnN0cnVjdG9ycyk6CisgICAgICAgICogTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xTeW50aGVzaXplQ29uc3RydWN0b3JzLmg6CisgICAgICAgICogTW9kdWxl
cy93ZWJncHUvV0hMU0wvV0hMU0xTeW50aGVzaXplRW51bWVyYXRpb25GdW5jdGlvbnMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OnN5bnRoZXNpemVFbnVtZXJhdGlvbkZ1bmN0aW9ucyk6
CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTeW50aGVzaXplRW51bWVyYXRp
b25GdW5jdGlvbnMuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN5bnRo
ZXNpemVTdHJ1Y3R1cmVBY2Nlc3NvcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OnN5
bnRoZXNpemVTdHJ1Y3R1cmVBY2Nlc3NvcnMpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dI
TFNML1dITFNMU3ludGhlc2l6ZVN0cnVjdHVyZUFjY2Vzc29ycy5oOgorICAgICAgICAqIE1vZHVs
ZXMvd2ViZ3B1L1dlYkdQVURldmljZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVEZXZp
Y2U6OmNyZWF0ZVNoYWRlck1vZHVsZSBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUv
V2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1
L1dlYkdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaWRsOgorICAgICAgICAqIFdlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUv
R1BVUGlwZWxpbmVMYXlvdXQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdQVVBpcGVsaW5lTGF5b3V0
OjpiaW5kR3JvdXBMYXlvdXRzIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
cHUvR1BVU2hhZGVyTW9kdWxlLmg6CisgICAgICAgIChXZWJDb3JlOjpHUFVTaGFkZXJNb2R1bGU6
OnBsYXRmb3JtU2hhZGVyTW9kdWxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdQVVNoYWRl
ck1vZHVsZTo6d2hsc2xTb3VyY2UgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2dwdS9HUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L2NvY29hL0dQVVJlbmRlclBpcGVsaW5lTWV0YWwubW06CisgICAgICAgIChXZWJD
b3JlOjpjb252ZXJ0VmVydGV4Rm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRTaGFk
ZXJTdGFnZUZsYWdzKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRCaW5kaW5nVHlwZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpjb252ZXJ0VGV4dHVyZUZvcm1hdCk6CisgICAgICAgIChXZWJDb3Jl
Ojpjb252ZXJ0TGF5b3V0KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRSZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3IpOgorICAgICAgICAoV2ViQ29yZTo6dHJ5U2V0TWV0YWxGdW5jdGlvbnNGb3JQ
aXBlbGluZURlc2NyaXB0b3IpOgorICAgICAgICAoV2ViQ29yZTo6dHJ5U2V0V0hMU0xGdW5jdGlv
bnNGb3JQaXBlbGluZURlc2NyaXB0b3IpOgorICAgICAgICAoV2ViQ29yZTo6dHJ5U2V0RnVuY3Rp
b25zRm9yUGlwZWxpbmVEZXNjcmlwdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnRyeUNyZWF0ZU10
bFJlbmRlclBpcGVsaW5lU3RhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9j
b2NvYS9HUFVTaGFkZXJNb2R1bGVNZXRhbC5tbToKKyAgICAgICAgKFdlYkNvcmU6OkdQVVNoYWRl
ck1vZHVsZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdQVVNoYWRlck1vZHVsZTo6R1BV
U2hhZGVyTW9kdWxlKToKKwogMjAxOS0wMy0xMyAgRGVhbiBKYWNrc29uICA8ZGlub0BhcHBsZS5j
b20+CiAKICAgICAgICAgQmxvY2sgYWxsIHBsdWdpbnMgc21hbGxlciB0aGFuIDV4NXB4CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xDYWxs
RXhwcmVzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMQ2FsbEV4cHJlc3Npb24uaAppbmRleCBiYWIzMTgxMjRmMjQ3YmVjZGI3ZGNiZjU4YTgzMzNk
YWJhODkzOTQ4Li5kNDE0ODMzOGI0NzRhNzc3NjY0YTJkZjVkNTVlNzJmNzkyMDdlYmY5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xDYWxs
RXhwcmVzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTENhbGxFeHByZXNzaW9uLmgKQEAgLTg4LDcgKzg4LDcgQEAgcHJpdmF0ZToKICAgICBW
ZWN0b3I8VW5pcXVlUmVmPEV4cHJlc3Npb24+PiBtX2FyZ3VtZW50czsKICAgICBPcHRpb25hbDxW
ZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxGdW5jdGlvbkRlY2xhcmF0aW9uPiwgMT4+IG1f
b3ZlcmxvYWRzOwogICAgIEZ1bmN0aW9uRGVjbGFyYXRpb24qIG1fZnVuY3Rpb24geyBudWxscHRy
IH07Ci0gICAgT3B0aW9uYWw8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxOYW1lZFR5cGU+PiBtX2Nh
c3RSZXR1cm5UeXBlIHsgV1RGOjpudWxsb3B0IH07CisgICAgT3B0aW9uYWw8c3RkOjpyZWZlcmVu
Y2Vfd3JhcHBlcjxOYW1lZFR5cGU+PiBtX2Nhc3RSZXR1cm5UeXBlIHsgV1RGOjpudWxsb3B0IH07
IC8vIEZJWE1FOiBXaHkgaXNuJ3QgdGhpcyBqdXN0IGEgcmF3IHBvaW50ZXI/CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBBU1QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTE5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTmF0aXZlVHlwZURlY2xhcmF0aW9uLmgKaW5k
ZXggZjY1MTg4MDlhYmY1YTZkMDRkNzk3MTUwZWUxMjcwODQyZWU2NzE3ZS4uM2YwZDBiMjdlNjdj
NmQ1ZjVlZTQ3Mzk3NzgzZjM4NjY1N2VmOTg2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTmF0aXZlVHlwZURlY2xhcmF0aW9uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTmF0aXZlVHlw
ZURlY2xhcmF0aW9uLmgKQEAgLTU0LDggKzU0LDYgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc05h
dGl2ZVR5cGVEZWNsYXJhdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAot
ICAgIGNvbnN0IFN0cmluZyYgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQotICAgIFN0
cmluZyYgbmFtZSgpIHsgcmV0dXJuIG1fbmFtZTsgfQogICAgIFR5cGVBcmd1bWVudHMmIHR5cGVB
cmd1bWVudHMoKSB7IHJldHVybiBtX3R5cGVBcmd1bWVudHM7IH0KIAogICAgIGJvb2wgaXNJbnQo
KSBjb25zdCB7IHJldHVybiBtX2lzSW50OyB9CkBAIC04OSw3ICs4Nyw2IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldEl0ZXJhdGVBbGxWYWx1ZXMoc3RkOjpmdW5jdGlvbjx2b2lkKGNvbnN0IHN0ZDo6
ZnVuY3Rpb248Ym9vbChpbnQ2NF90KT4mKT4mJiBpdGVyYXRlQWxsVmFsdWVzKSB7IG1faXRlcmF0
ZUFsbFZhbHVlcyA9IFdURk1vdmUoaXRlcmF0ZUFsbFZhbHVlcyk7IH0KIAogcHJpdmF0ZToKLSAg
ICBTdHJpbmcgbV9uYW1lOwogICAgIFR5cGVBcmd1bWVudHMgbV90eXBlQXJndW1lbnRzOwogICAg
IHN0ZDo6ZnVuY3Rpb248Ym9vbChpbnQpPiBtX2NhblJlcHJlc2VudEludGVnZXI7CiAgICAgc3Rk
OjpmdW5jdGlvbjxib29sKHVuc2lnbmVkKT4gbV9jYW5SZXByZXNlbnRVbnNpZ25lZEludGVnZXI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xUeXBlUmVmZXJlbmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xUeXBlUmVmZXJlbmNlLmgKaW5kZXggYmI2OWYwMzZkZjRhZTIzNDNkYmU1MDdkODdh
YTU5OTBiYjcxNjNjOC4uYmY0YzU5OTlmMTBiMTdhZjhkNWVkN2ZiY2NkNDcxODNkMGZhZTBjZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
VHlwZVJlZmVyZW5jZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTFR5cGVSZWZlcmVuY2UuaApAQCAtODMsNyArODMsMTAgQEAgcHVibGljOgogCiAg
ICAgVW5pcXVlUmVmPFR5cGVSZWZlcmVuY2U+IGNsb25lVHlwZVJlZmVyZW5jZSgpIGNvbnN0CiAg
ICAgewotICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZVJlZjxUeXBlUmVmZXJlbmNlPihMZXhlcjo6
VG9rZW4ob3JpZ2luKCkpLCBTdHJpbmcobV9uYW1lKSwgQVNUOjpjbG9uZShtX3R5cGVBcmd1bWVu
dHMpKTsKKyAgICAgICAgYXV0byByZXN1bHQgPSBtYWtlVW5pcXVlUmVmPFR5cGVSZWZlcmVuY2U+
KExleGVyOjpUb2tlbihvcmlnaW4oKSksIFN0cmluZyhtX25hbWUpLCBBU1Q6OmNsb25lKG1fdHlw
ZUFyZ3VtZW50cykpOworICAgICAgICBpZiAobV9yZXNvbHZlZFR5cGUpCisgICAgICAgICAgICBy
ZXN1bHQtPnNldFJlc29sdmVkVHlwZSgqbV9yZXNvbHZlZFR5cGUpOworICAgICAgICByZXR1cm4g
cmVzdWx0OwogICAgIH0KIAogICAgIFVuaXF1ZVJlZjxVbm5hbWVkVHlwZT4gY2xvbmUoKSBjb25z
dCBvdmVycmlkZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvTWV0YWwvV0hMU0xFbnRyeVBvaW50U2NhZmZvbGRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xFbnRyeVBvaW50U2NhZmZvbGRpbmcuY3Bw
CmluZGV4IDI4NTRmOGE1ZmI2YmE5MzhmYTVlNmYxMjE5MTMwNDBhMDY0NGZkYjAuLjc4YmQzMGZl
OTRlMmE1ZjEwODRjNDA2YWM4NTNiYjY1OWIzYjU1YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRW50cnlQb2ludFNjYWZmb2xkaW5n
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExT
TEVudHJ5UG9pbnRTY2FmZm9sZGluZy5jcHAKQEAgLTk4LDE5ICs5OCwxNyBAQCBFbnRyeVBvaW50
U2NhZmZvbGRpbmc6OkVudHJ5UG9pbnRTY2FmZm9sZGluZyhBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlv
biYgZnVuY3Rpb25EZQogICAgICwgbV9sYXlvdXQobGF5b3V0KQogICAgICwgbV9nZW5lcmF0ZU5l
eHRWYXJpYWJsZU5hbWUoZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKQogewotICAgIHVuc2lnbmVk
IGFyZ3VtZW50QnVmZmVySW5kZXggPSAwOwogICAgIG1fbmFtZWRCaW5kR3JvdXBzLnJlc2VydmVJ
bml0aWFsQ2FwYWNpdHkobV9sYXlvdXQuc2l6ZSgpKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IG1fbGF5b3V0LnNpemUoKTsgKytpKSB7CiAgICAgICAgIE5hbWVkQmluZEdyb3VwIG5hbWVk
QmluZEdyb3VwOwogICAgICAgICBuYW1lZEJpbmRHcm91cC5zdHJ1Y3ROYW1lID0gbV90eXBlTmFt
ZXIuZ2VuZXJhdGVOZXh0VHlwZU5hbWUoKTsKICAgICAgICAgbmFtZWRCaW5kR3JvdXAudmFyaWFi
bGVOYW1lID0gbV9nZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUoKTsKLSAgICAgICAgbmFtZWRCaW5k
R3JvdXAuYXJndW1lbnRCdWZmZXJJbmRleCA9IGFyZ3VtZW50QnVmZmVySW5kZXgrKzsKKyAgICAg
ICAgbmFtZWRCaW5kR3JvdXAuYXJndW1lbnRCdWZmZXJJbmRleCA9IG1fbGF5b3V0W2ldLm5hbWU7
IC8vIGNvbnZlcnRMYXlvdXQoKSBpbiBHUFVSZW5kZXJQaXBlbGluZU1ldGFsLm1tIG1ha2VzIHN1
cmUgdGhlc2UgZG9uJ3QgY29sbGlkZS4KICAgICAgICAgbmFtZWRCaW5kR3JvdXAubmFtZWRCaW5k
aW5ncy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fbGF5b3V0W2ldLmJpbmRpbmdzLnNpemUoKSk7
Ci0gICAgICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKICAgICAgICAgZm9yIChzaXplX3QgaiA9IDA7
IGogPCBtX2xheW91dFtpXS5iaW5kaW5ncy5zaXplKCk7ICsraikgewogICAgICAgICAgICAgTmFt
ZWRCaW5kaW5nIG5hbWVkQmluZGluZzsKICAgICAgICAgICAgIG5hbWVkQmluZGluZy5lbGVtZW50
TmFtZSA9IG1fdHlwZU5hbWVyLmdlbmVyYXRlTmV4dFN0cnVjdHVyZUVsZW1lbnROYW1lKCk7Ci0g
ICAgICAgICAgICBuYW1lZEJpbmRpbmcuaW5kZXggPSBpbmRleCsrOworICAgICAgICAgICAgbmFt
ZWRCaW5kaW5nLmluZGV4ID0gbV9sYXlvdXRbaV0uYmluZGluZ3Nbal0ubmFtZTsgLy8gR1BVQmlu
ZEdyb3VwTGF5b3V0Ojp0cnlDcmVhdGUoKSBtYWtlcyBzdXJlIHRoZXNlIGRvbid0IGNvbGxpZGUu
CiAgICAgICAgICAgICBuYW1lZEJpbmRHcm91cC5uYW1lZEJpbmRpbmdzLnVuY2hlY2tlZEFwcGVu
ZChXVEZNb3ZlKG5hbWVkQmluZGluZykpOwogICAgICAgICB9CiAgICAgICAgIG1fbmFtZWRCaW5k
R3JvdXBzLnVuY2hlY2tlZEFwcGVuZChXVEZNb3ZlKG5hbWVkQmluZEdyb3VwKSk7CkBAIC0xMzAs
MjEgKzEyOCw2IEBAIEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6RW50cnlQb2ludFNjYWZmb2xkaW5n
KEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uJiBmdW5jdGlvbkRlCiAgICAgICAgIG1fcGFyYW1ldGVy
VmFyaWFibGVzLnVuY2hlY2tlZEFwcGVuZChtX2dlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSgpKTsK
IH0KIAotTWFwcGVkQmluZEdyb3VwcyBFbnRyeVBvaW50U2NhZmZvbGRpbmc6Om1hcHBlZEJpbmRH
cm91cHMoKSBjb25zdAotewotICAgIE1hcHBlZEJpbmRHcm91cHMgcmVzdWx0OwotICAgIHJlc3Vs
dC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fbGF5b3V0LnNpemUoKSk7Ci0gICAgZm9yIChhdXRv
JiBuYW1lZEJpbmRHcm91cCA6IG1fbmFtZWRCaW5kR3JvdXBzKSB7Ci0gICAgICAgIE1hcHBlZEJp
bmRHcm91cCBtYXBwZWRCaW5kR3JvdXA7Ci0gICAgICAgIG1hcHBlZEJpbmRHcm91cC5hcmd1bWVu
dEJ1ZmZlckluZGV4ID0gbmFtZWRCaW5kR3JvdXAuYXJndW1lbnRCdWZmZXJJbmRleDsKLSAgICAg
ICAgbWFwcGVkQmluZEdyb3VwLmJpbmRpbmdJbmRpY2VzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHko
bmFtZWRCaW5kR3JvdXAubmFtZWRCaW5kaW5ncy5zaXplKCkpOwotICAgICAgICBmb3IgKGF1dG8m
IG5hbWVkQmluZGluZyA6IG5hbWVkQmluZEdyb3VwLm5hbWVkQmluZGluZ3MpCi0gICAgICAgICAg
ICBtYXBwZWRCaW5kR3JvdXAuYmluZGluZ0luZGljZXMudW5jaGVja2VkQXBwZW5kKG5hbWVkQmlu
ZGluZy5pbmRleCk7Ci0gICAgICAgIHJlc3VsdC51bmNoZWNrZWRBcHBlbmQoV1RGTW92ZShtYXBw
ZWRCaW5kR3JvdXApKTsKLSAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQogU3RyaW5nIEVu
dHJ5UG9pbnRTY2FmZm9sZGluZzo6cmVzb3VyY2VIZWxwZXJUeXBlcygpCiB7CiAgICAgU3RyaW5n
QnVpbGRlciBzdHJpbmdCdWlsZGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xFbnRyeVBvaW50U2NhZmZvbGRpbmcuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRW50cnlQb2ludFNjYWZm
b2xkaW5nLmgKaW5kZXggOTlhZGNhNTQwNmE4MjhkZDIzNzNjNmM1MjMwYTQwODExMjk3N2NhOS4u
MjQ2N2U4NmZmODZhZDI0NDA0ODI2ZTM4NWNhMWE1MWUwZDFhODM3YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xFbnRyeVBvaW50U2Nh
ZmZvbGRpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRh
bC9XSExTTEVudHJ5UG9pbnRTY2FmZm9sZGluZy5oCkBAIC0yNyw3ICsyNyw2IEBACiAKICNpZiBF
TkFCTEUoV0VCR1BVKQogCi0jaW5jbHVkZSAiV0hMU0xNYXBwZWRCaW5kaW5ncy5oIgogI2luY2x1
ZGUgIldITFNMUGlwZWxpbmVEZXNjcmlwdG9yLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTU5LDcgKzU4LDYgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgU3RyaW5nIHVucGFjaygpID0gMDsKICAgICB2aXJ0dWFsIFN0cmluZyBw
YWNrKGNvbnN0IFN0cmluZyYgZXhpc3RpbmdWYXJpYWJsZU5hbWUsIGNvbnN0IFN0cmluZyYgdmFy
aWFibGVOYW1lKSA9IDA7CiAKLSAgICBNYXBwZWRCaW5kR3JvdXBzIG1hcHBlZEJpbmRHcm91cHMo
KSBjb25zdDsKICAgICBWZWN0b3I8U3RyaW5nPiYgcGFyYW1ldGVyVmFyaWFibGVzKCkgeyByZXR1
cm4gbV9wYXJhbWV0ZXJWYXJpYWJsZXM7IH0KIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xGdW5jdGlvbldyaXRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTEZ1
bmN0aW9uV3JpdGVyLmNwcAppbmRleCAxYjdhNDJhYmNkZTYyYzAyOTUzOWRjNGFmMWIwZjNiZDZh
YWE0NjVjLi40OWUxNjlkMWIyYTVjNDRiMDViZWE0MGY2ZDhiZDM0ZjA5MGE3ZWI4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTEZ1bmN0
aW9uV3JpdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9N
ZXRhbC9XSExTTEZ1bmN0aW9uV3JpdGVyLmNwcApAQCAtNTAsNyArNTAsNiBAQAogI2luY2x1ZGUg
IldITFNMTG9naWNhbE5vdEV4cHJlc3Npb24uaCIKICNpbmNsdWRlICJXSExTTE1ha2VBcnJheVJl
ZmVyZW5jZUV4cHJlc3Npb24uaCIKICNpbmNsdWRlICJXSExTTE1ha2VQb2ludGVyRXhwcmVzc2lv
bi5oIgotI2luY2x1ZGUgIldITFNMTWFwcGVkQmluZGluZ3MuaCIKICNpbmNsdWRlICJXSExTTE5h
dGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24uaCIKICNpbmNsdWRlICJXSExTTE5hdGl2ZUZ1bmN0aW9u
V3JpdGVyLmgiCiAjaW5jbHVkZSAiV0hMU0xOYXRpdmVUeXBlRGVjbGFyYXRpb24uaCIKQEAgLTY1
MCwyNCArNjQ5LDEwIEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgTWFwcGVkQmluZEdy
b3VwcyYmIHRha2VWZXJ0ZXhNYXBwZWRCaW5kR3JvdXBzKCkKLSAgICB7Ci0gICAgICAgIEFTU0VS
VChtX3ZlcnRleE1hcHBlZEJpbmRHcm91cHMpOwotICAgICAgICByZXR1cm4gV1RGTW92ZSgqbV92
ZXJ0ZXhNYXBwZWRCaW5kR3JvdXBzKTsKLSAgICB9Ci0KLSAgICBNYXBwZWRCaW5kR3JvdXBzJiYg
dGFrZUZyYWdtZW50TWFwcGVkQmluZEdyb3VwcygpCi0gICAgewotICAgICAgICBBU1NFUlQobV9m
cmFnbWVudE1hcHBlZEJpbmRHcm91cHMpOwotICAgICAgICByZXR1cm4gV1RGTW92ZSgqbV9mcmFn
bWVudE1hcHBlZEJpbmRHcm91cHMpOwotICAgIH0KLQogcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8RW50cnlQb2ludFNjYWZmb2xkaW5nPiBjcmVhdGVFbnRyeVBvaW50U2NhZmZvbGRpbmco
QVNUOjpGdW5jdGlvbkRlZmluaXRpb24mKSBvdmVycmlkZTsKIAogICAgIE1hdGNoZWRSZW5kZXJT
ZW1hbnRpY3MgbV9tYXRjaGVkU2VtYW50aWNzOwotICAgIE9wdGlvbmFsPE1hcHBlZEJpbmRHcm91
cHM+IG1fdmVydGV4TWFwcGVkQmluZEdyb3VwczsKLSAgICBPcHRpb25hbDxNYXBwZWRCaW5kR3Jv
dXBzPiBtX2ZyYWdtZW50TWFwcGVkQmluZEdyb3VwczsKIH07CiAKIHN0ZDo6dW5pcXVlX3B0cjxF
bnRyeVBvaW50U2NhZmZvbGRpbmc+IFJlbmRlckZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6Y3Jl
YXRlRW50cnlQb2ludFNjYWZmb2xkaW5nKEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uJiBmdW5jdGlv
bkRlZmluaXRpb24pCkBAIC02NzUsMTggKzY2MCwxMCBAQCBzdGQ6OnVuaXF1ZV9wdHI8RW50cnlQ
b2ludFNjYWZmb2xkaW5nPiBSZW5kZXJGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OmNyZWF0ZUVu
dAogICAgIGF1dG8gZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lID0gW3RoaXNdKCkgLT4gU3RyaW5n
IHsKICAgICAgICAgcmV0dXJuIHRoaXMtPmdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSgpOwogICAg
IH07Ci0gICAgaWYgKCZmdW5jdGlvbkRlZmluaXRpb24gPT0gbV9tYXRjaGVkU2VtYW50aWNzLnZl
cnRleFNoYWRlcikgewotICAgICAgICBhdXRvIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8VmVy
dGV4RW50cnlQb2ludFNjYWZmb2xkaW5nPihmdW5jdGlvbkRlZmluaXRpb24sIG1faW50cmluc2lj
cywgbV90eXBlTmFtZXIsIG1fbWF0Y2hlZFNlbWFudGljcy52ZXJ0ZXhTaGFkZXJFbnRyeVBvaW50
SXRlbXMsIG1fbWF0Y2hlZFNlbWFudGljcy52ZXJ0ZXhTaGFkZXJSZXNvdXJjZU1hcCwgbV9sYXlv
dXQsIFdURk1vdmUoZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKSwgbV9tYXRjaGVkU2VtYW50aWNz
Lm1hdGNoZWRWZXJ0ZXhBdHRyaWJ1dGVzKTsKLSAgICAgICAgQVNTRVJUKCFtX3ZlcnRleE1hcHBl
ZEJpbmRHcm91cHMpOwotICAgICAgICBtX3ZlcnRleE1hcHBlZEJpbmRHcm91cHMgPSByZXN1bHQt
Pm1hcHBlZEJpbmRHcm91cHMoKTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0gICAg
aWYgKCZmdW5jdGlvbkRlZmluaXRpb24gPT0gbV9tYXRjaGVkU2VtYW50aWNzLmZyYWdtZW50U2hh
ZGVyKSB7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxGcmFnbWVudEVu
dHJ5UG9pbnRTY2FmZm9sZGluZz4oZnVuY3Rpb25EZWZpbml0aW9uLCBtX2ludHJpbnNpY3MsIG1f
dHlwZU5hbWVyLCBtX21hdGNoZWRTZW1hbnRpY3MuZnJhZ21lbnRTaGFkZXJFbnRyeVBvaW50SXRl
bXMsIG1fbWF0Y2hlZFNlbWFudGljcy5mcmFnbWVudFNoYWRlclJlc291cmNlTWFwLCBtX2xheW91
dCwgV1RGTW92ZShnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUpLCBtX21hdGNoZWRTZW1hbnRpY3Mu
bWF0Y2hlZENvbG9yQXR0YWNobWVudHMpOwotICAgICAgICBBU1NFUlQoIW1fZnJhZ21lbnRNYXBw
ZWRCaW5kR3JvdXBzKTsKLSAgICAgICAgbV9mcmFnbWVudE1hcHBlZEJpbmRHcm91cHMgPSByZXN1
bHQtPm1hcHBlZEJpbmRHcm91cHMoKTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Cisg
ICAgaWYgKCZmdW5jdGlvbkRlZmluaXRpb24gPT0gbV9tYXRjaGVkU2VtYW50aWNzLnZlcnRleFNo
YWRlcikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VmVydGV4RW50cnlQb2ludFNj
YWZmb2xkaW5nPihmdW5jdGlvbkRlZmluaXRpb24sIG1faW50cmluc2ljcywgbV90eXBlTmFtZXIs
IG1fbWF0Y2hlZFNlbWFudGljcy52ZXJ0ZXhTaGFkZXJFbnRyeVBvaW50SXRlbXMsIG1fbWF0Y2hl
ZFNlbWFudGljcy52ZXJ0ZXhTaGFkZXJSZXNvdXJjZU1hcCwgbV9sYXlvdXQsIFdURk1vdmUoZ2Vu
ZXJhdGVOZXh0VmFyaWFibGVOYW1lKSwgbV9tYXRjaGVkU2VtYW50aWNzLm1hdGNoZWRWZXJ0ZXhB
dHRyaWJ1dGVzKTsKKyAgICBpZiAoJmZ1bmN0aW9uRGVmaW5pdGlvbiA9PSBtX21hdGNoZWRTZW1h
bnRpY3MuZnJhZ21lbnRTaGFkZXIpCisgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEZy
YWdtZW50RW50cnlQb2ludFNjYWZmb2xkaW5nPihmdW5jdGlvbkRlZmluaXRpb24sIG1faW50cmlu
c2ljcywgbV90eXBlTmFtZXIsIG1fbWF0Y2hlZFNlbWFudGljcy5mcmFnbWVudFNoYWRlckVudHJ5
UG9pbnRJdGVtcywgbV9tYXRjaGVkU2VtYW50aWNzLmZyYWdtZW50U2hhZGVyUmVzb3VyY2VNYXAs
IG1fbGF5b3V0LCBXVEZNb3ZlKGdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSksIG1fbWF0Y2hlZFNl
bWFudGljcy5tYXRjaGVkQ29sb3JBdHRhY2htZW50cyk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9
CiAKQEAgLTY5OCwxNyArNjc1LDEwIEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgTWFw
cGVkQmluZEdyb3VwcyYmIHRha2VNYXBwZWRCaW5kR3JvdXBzKCkKLSAgICB7Ci0gICAgICAgIEFT
U0VSVChtX21hcHBlZEJpbmRHcm91cHMpOwotICAgICAgICByZXR1cm4gV1RGTW92ZSgqbV9tYXBw
ZWRCaW5kR3JvdXBzKTsKLSAgICB9Ci0KIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPEVu
dHJ5UG9pbnRTY2FmZm9sZGluZz4gY3JlYXRlRW50cnlQb2ludFNjYWZmb2xkaW5nKEFTVDo6RnVu
Y3Rpb25EZWZpbml0aW9uJikgb3ZlcnJpZGU7CiAKICAgICBNYXRjaGVkQ29tcHV0ZVNlbWFudGlj
cyBtX21hdGNoZWRTZW1hbnRpY3M7Ci0gICAgT3B0aW9uYWw8TWFwcGVkQmluZEdyb3Vwcz4gbV9t
YXBwZWRCaW5kR3JvdXBzOwogfTsKIAogc3RkOjp1bmlxdWVfcHRyPEVudHJ5UG9pbnRTY2FmZm9s
ZGluZz4gQ29tcHV0ZUZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6Y3JlYXRlRW50cnlQb2ludFNj
YWZmb2xkaW5nKEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uJiBmdW5jdGlvbkRlZmluaXRpb24pCkBA
IC03MTYsMTIgKzY4Niw4IEBAIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeVBvaW50U2NhZmZvbGRpbmc+
IENvbXB1dGVGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OmNyZWF0ZUVuCiAgICAgYXV0byBnZW5l
cmF0ZU5leHRWYXJpYWJsZU5hbWUgPSBbdGhpc10oKSAtPiBTdHJpbmcgewogICAgICAgICByZXR1
cm4gdGhpcy0+Z2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKCk7CiAgICAgfTsKLSAgICBpZiAoJmZ1
bmN0aW9uRGVmaW5pdGlvbiA9PSBtX21hdGNoZWRTZW1hbnRpY3Muc2hhZGVyKSB7Ci0gICAgICAg
IGF1dG8gcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDb21wdXRlRW50cnlQb2ludFNjYWZmb2xk
aW5nPihmdW5jdGlvbkRlZmluaXRpb24sIG1faW50cmluc2ljcywgbV90eXBlTmFtZXIsIG1fbWF0
Y2hlZFNlbWFudGljcy5lbnRyeVBvaW50SXRlbXMsIG1fbWF0Y2hlZFNlbWFudGljcy5yZXNvdXJj
ZU1hcCwgbV9sYXlvdXQsIFdURk1vdmUoZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKSk7Ci0gICAg
ICAgIEFTU0VSVCghbV9tYXBwZWRCaW5kR3JvdXBzKTsKLSAgICAgICAgbV9tYXBwZWRCaW5kR3Jv
dXBzID0gcmVzdWx0LT5tYXBwZWRCaW5kR3JvdXBzKCk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7
Ci0gICAgfQorICAgIGlmICgmZnVuY3Rpb25EZWZpbml0aW9uID09IG1fbWF0Y2hlZFNlbWFudGlj
cy5zaGFkZXIpCisgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENvbXB1dGVFbnRyeVBv
aW50U2NhZmZvbGRpbmc+KGZ1bmN0aW9uRGVmaW5pdGlvbiwgbV9pbnRyaW5zaWNzLCBtX3R5cGVO
YW1lciwgbV9tYXRjaGVkU2VtYW50aWNzLmVudHJ5UG9pbnRJdGVtcywgbV9tYXRjaGVkU2VtYW50
aWNzLnJlc291cmNlTWFwLCBtX2xheW91dCwgV1RGTW92ZShnZW5lcmF0ZU5leHRWYXJpYWJsZU5h
bWUpKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApAQCAtNzY2LDYgKzczMiw5IEBAIFJlbmRl
ck1ldGFsRnVuY3Rpb25zIG1ldGFsRnVuY3Rpb25zKFByb2dyYW0mIHByb2dyYW0sIFR5cGVOYW1l
ciYgdHlwZU5hbWVyLCBNYXRjCiAgICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOwogICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKHNoYXJlZE1ldGFsRnVuY3Rpb25zLm1ldGFsRnVuY3Rpb25z
KTsKIAorICAgIGF1dG8qIHZlcnRleFNoYWRlckVudHJ5UG9pbnQgPSBtYXRjaGVkU2VtYW50aWNz
LnZlcnRleFNoYWRlcjsKKyAgICBhdXRvKiBmcmFnbWVudFNoYWRlckVudHJ5UG9pbnQgPSBtYXRj
aGVkU2VtYW50aWNzLmZyYWdtZW50U2hhZGVyOworCiAgICAgUmVuZGVyRnVuY3Rpb25EZWZpbml0
aW9uV3JpdGVyIGZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcihwcm9ncmFtLmludHJpbnNpY3MoKSwg
dHlwZU5hbWVyLCBzaGFyZWRNZXRhbEZ1bmN0aW9ucy5mdW5jdGlvbk1hcHBpbmcsIFdURk1vdmUo
bWF0Y2hlZFNlbWFudGljcyksIGxheW91dCk7CiAgICAgZm9yIChhdXRvJiBuYXRpdmVGdW5jdGlv
bkRlY2xhcmF0aW9uIDogcHJvZ3JhbS5uYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9ucygpKQogICAg
ICAgICBmdW5jdGlvbkRlZmluaXRpb25Xcml0ZXIudmlzaXQobmF0aXZlRnVuY3Rpb25EZWNsYXJh
dGlvbik7CkBAIC03NzUsOCArNzQ0LDggQEAgUmVuZGVyTWV0YWxGdW5jdGlvbnMgbWV0YWxGdW5j
dGlvbnMoUHJvZ3JhbSYgcHJvZ3JhbSwgVHlwZU5hbWVyJiB0eXBlTmFtZXIsIE1hdGMKIAogICAg
IFJlbmRlck1ldGFsRnVuY3Rpb25zIHJlc3VsdDsKICAgICByZXN1bHQubWV0YWxTb3VyY2UgPSBz
dHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7Ci0gICAgcmVzdWx0LnZlcnRleE1hcHBlZEJpbmRHcm91
cHMgPSBmdW5jdGlvbkRlZmluaXRpb25Xcml0ZXIudGFrZVZlcnRleE1hcHBlZEJpbmRHcm91cHMo
KTsKLSAgICByZXN1bHQuZnJhZ21lbnRNYXBwZWRCaW5kR3JvdXBzID0gZnVuY3Rpb25EZWZpbml0
aW9uV3JpdGVyLnRha2VGcmFnbWVudE1hcHBlZEJpbmRHcm91cHMoKTsKKyAgICByZXN1bHQubWFu
Z2xlZFZlcnRleEVudHJ5UG9pbnROYW1lID0gc2hhcmVkTWV0YWxGdW5jdGlvbnMuZnVuY3Rpb25N
YXBwaW5nLmdldCh2ZXJ0ZXhTaGFkZXJFbnRyeVBvaW50KTsKKyAgICByZXN1bHQubWFuZ2xlZEZy
YWdtZW50RW50cnlQb2ludE5hbWUgPSBzaGFyZWRNZXRhbEZ1bmN0aW9ucy5mdW5jdGlvbk1hcHBp
bmcuZ2V0KGZyYWdtZW50U2hhZGVyRW50cnlQb2ludCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IApAQCAtNzg3LDYgKzc1Niw4IEBAIENvbXB1dGVNZXRhbEZ1bmN0aW9ucyBtZXRhbEZ1bmN0aW9u
cyhQcm9ncmFtJiBwcm9ncmFtLCBUeXBlTmFtZXImIHR5cGVOYW1lciwgTWF0CiAgICAgU3RyaW5n
QnVpbGRlciBzdHJpbmdCdWlsZGVyOwogICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHNoYXJlZE1l
dGFsRnVuY3Rpb25zLm1ldGFsRnVuY3Rpb25zKTsKIAorICAgIGF1dG8qIGVudHJ5UG9pbnQgPSBt
YXRjaGVkU2VtYW50aWNzLnNoYWRlcjsKKwogICAgIENvbXB1dGVGdW5jdGlvbkRlZmluaXRpb25X
cml0ZXIgZnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyKHByb2dyYW0uaW50cmluc2ljcygpLCB0eXBl
TmFtZXIsIHNoYXJlZE1ldGFsRnVuY3Rpb25zLmZ1bmN0aW9uTWFwcGluZywgV1RGTW92ZShtYXRj
aGVkU2VtYW50aWNzKSwgbGF5b3V0KTsKICAgICBmb3IgKGF1dG8mIG5hdGl2ZUZ1bmN0aW9uRGVj
bGFyYXRpb24gOiBwcm9ncmFtLm5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb25zKCkpCiAgICAgICAg
IGZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlci52aXNpdChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9u
KTsKQEAgLTc5Niw3ICs3NjcsNyBAQCBDb21wdXRlTWV0YWxGdW5jdGlvbnMgbWV0YWxGdW5jdGlv
bnMoUHJvZ3JhbSYgcHJvZ3JhbSwgVHlwZU5hbWVyJiB0eXBlTmFtZXIsIE1hdAogCiAgICAgQ29t
cHV0ZU1ldGFsRnVuY3Rpb25zIHJlc3VsdDsKICAgICByZXN1bHQubWV0YWxTb3VyY2UgPSBzdHJp
bmdCdWlsZGVyLnRvU3RyaW5nKCk7Ci0gICAgcmVzdWx0Lm1hcHBlZEJpbmRHcm91cHMgPSBmdW5j
dGlvbkRlZmluaXRpb25Xcml0ZXIudGFrZU1hcHBlZEJpbmRHcm91cHMoKTsKKyAgICByZXN1bHQu
bWFuZ2xlZEVudHJ5UG9pbnROYW1lID0gc2hhcmVkTWV0YWxGdW5jdGlvbnMuZnVuY3Rpb25NYXBw
aW5nLmdldChlbnRyeVBvaW50KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTEZ1bmN0aW9u
V3JpdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExT
TEZ1bmN0aW9uV3JpdGVyLmgKaW5kZXggMDYyODIxZmFiODllYzVmMDdiZDdjN2Y0OGRmMmEyMGFj
NTQ3YWNjZS4uZGZhNDZhYzE2ZDVkNzBkMWE0MzQxYmQyOGQzZDYyYTg5YmE5ZmIxNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xGdW5j
dGlvbldyaXRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01l
dGFsL1dITFNMRnVuY3Rpb25Xcml0ZXIuaApAQCAtMjcsNyArMjcsNiBAQAogCiAjaWYgRU5BQkxF
KFdFQkdQVSkKIAotI2luY2x1ZGUgIldITFNMTWFwcGVkQmluZGluZ3MuaCIKICNpbmNsdWRlICJX
SExTTFNlbWFudGljTWF0Y2hlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00MiwxNCAr
NDEsMTQgQEAgY2xhc3MgVHlwZU5hbWVyOwogCiBzdHJ1Y3QgUmVuZGVyTWV0YWxGdW5jdGlvbnMg
ewogICAgIFN0cmluZyBtZXRhbFNvdXJjZTsKLSAgICBNYXBwZWRCaW5kR3JvdXBzIHZlcnRleE1h
cHBlZEJpbmRHcm91cHM7Ci0gICAgTWFwcGVkQmluZEdyb3VwcyBmcmFnbWVudE1hcHBlZEJpbmRH
cm91cHM7CisgICAgU3RyaW5nIG1hbmdsZWRWZXJ0ZXhFbnRyeVBvaW50TmFtZTsKKyAgICBTdHJp
bmcgbWFuZ2xlZEZyYWdtZW50RW50cnlQb2ludE5hbWU7CiB9OwogUmVuZGVyTWV0YWxGdW5jdGlv
bnMgbWV0YWxGdW5jdGlvbnMoUHJvZ3JhbSYsIFR5cGVOYW1lciYsIE1hdGNoZWRSZW5kZXJTZW1h
bnRpY3MmJiwgTGF5b3V0Jik7CiAKIHN0cnVjdCBDb21wdXRlTWV0YWxGdW5jdGlvbnMgewogICAg
IFN0cmluZyBtZXRhbFNvdXJjZTsKLSAgICBNYXBwZWRCaW5kR3JvdXBzIG1hcHBlZEJpbmRHcm91
cHM7CisgICAgU3RyaW5nIG1hbmdsZWRFbnRyeVBvaW50TmFtZTsKIH07CiBDb21wdXRlTWV0YWxG
dW5jdGlvbnMgbWV0YWxGdW5jdGlvbnMoUHJvZ3JhbSYsIFR5cGVOYW1lciYsIE1hdGNoZWRDb21w
dXRlU2VtYW50aWNzJiYsIExheW91dCYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTE1hcHBlZEJpbmRpbmdzLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTE1hcHBlZEJpbmRpbmdzLmgK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRiM2M1MmJmNDk2Mzk4ZjNkMDQwZDE1YThi
ZDhiN2U4NDRlMWQxMzYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xNYXBw
ZWRCaW5kaW5ncy5oCisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1uYW1l
c3BhY2UgTWV0YWwgewotCi1zdHJ1Y3QgTWFwcGVkQmluZEdyb3VwIHsKLSAgICB1bnNpZ25lZCBh
cmd1bWVudEJ1ZmZlckluZGV4OwotICAgIFZlY3Rvcjx1bnNpZ25lZD4gYmluZGluZ0luZGljZXM7
Ci19OwotCi11c2luZyBNYXBwZWRCaW5kR3JvdXBzID0gVmVjdG9yPE1hcHBlZEJpbmRHcm91cD47
IC8vIFBhcmFsbGVsIHRvIHRoZSBpbnB1dCByZXNvdXJjZSBMYXlvdXQuCi0KLX0gLy8gbmFtZXNw
YWNlIE1ldGFsCi0KLX0gLy8gbmFtZXNwYWNlIFdITFNMCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9NZXRhbC9XSExTTE1ldGFsQ29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTE1ldGFsQ29kZUdlbmVyYXRvci5jcHAKaW5k
ZXggMzA1ZjMzOGMzMTMwMjcyYTFlNzRkOWQ0Mjc1NzhiYjZkN2IwMzIxMi4uYjI2OTA5MGMyODQw
ZjRhM2VmNmU0NWE4ODE4ZjliMDFmNzY0OWRlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xNZXRhbENvZGVHZW5lcmF0b3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMTWV0YWxD
b2RlR2VuZXJhdG9yLmNwcApAQCAtNjIsNyArNjIsNyBAQCBSZW5kZXJNZXRhbENvZGUgZ2VuZXJh
dGVNZXRhbENvZGUoUHJvZ3JhbSYgcHJvZ3JhbSwgTWF0Y2hlZFJlbmRlclNlbWFudGljcyYmIG1h
dAogICAgIGF1dG8gbWV0YWxUeXBlcyA9IHR5cGVOYW1lci5tZXRhbFR5cGVzKCk7CiAgICAgYXV0
byBtZXRhbEZ1bmN0aW9ucyA9IE1ldGFsOjptZXRhbEZ1bmN0aW9ucyhwcm9ncmFtLCB0eXBlTmFt
ZXIsIFdURk1vdmUobWF0Y2hlZFNlbWFudGljcyksIGxheW91dCk7CiAgICAgYXV0byBtZXRhbENv
ZGUgPSBnZW5lcmF0ZU1ldGFsQ29kZVNoYXJlZChXVEZNb3ZlKG1ldGFsVHlwZXMpLCBXVEZNb3Zl
KG1ldGFsRnVuY3Rpb25zLm1ldGFsU291cmNlKSk7Ci0gICAgcmV0dXJuIHsgV1RGTW92ZShtZXRh
bENvZGUpLCBXVEZNb3ZlKG1ldGFsRnVuY3Rpb25zLnZlcnRleE1hcHBlZEJpbmRHcm91cHMpLCBX
VEZNb3ZlKG1ldGFsRnVuY3Rpb25zLmZyYWdtZW50TWFwcGVkQmluZEdyb3VwcykgfTsKKyAgICBy
ZXR1cm4geyBXVEZNb3ZlKG1ldGFsQ29kZSksIFdURk1vdmUobWV0YWxGdW5jdGlvbnMubWFuZ2xl
ZFZlcnRleEVudHJ5UG9pbnROYW1lKSwgV1RGTW92ZShtZXRhbEZ1bmN0aW9ucy5tYW5nbGVkRnJh
Z21lbnRFbnRyeVBvaW50TmFtZSkgfTsKIH0KIAogQ29tcHV0ZU1ldGFsQ29kZSBnZW5lcmF0ZU1l
dGFsQ29kZShQcm9ncmFtJiBwcm9ncmFtLCBNYXRjaGVkQ29tcHV0ZVNlbWFudGljcyYmIG1hdGNo
ZWRTZW1hbnRpY3MsIExheW91dCYgbGF5b3V0KQpAQCAtNzEsNyArNzEsNyBAQCBDb21wdXRlTWV0
YWxDb2RlIGdlbmVyYXRlTWV0YWxDb2RlKFByb2dyYW0mIHByb2dyYW0sIE1hdGNoZWRDb21wdXRl
U2VtYW50aWNzJiYgbQogICAgIGF1dG8gbWV0YWxUeXBlcyA9IHR5cGVOYW1lci5tZXRhbFR5cGVz
KCk7CiAgICAgYXV0byBtZXRhbEZ1bmN0aW9ucyA9IE1ldGFsOjptZXRhbEZ1bmN0aW9ucyhwcm9n
cmFtLCB0eXBlTmFtZXIsIFdURk1vdmUobWF0Y2hlZFNlbWFudGljcyksIGxheW91dCk7CiAgICAg
YXV0byBtZXRhbENvZGUgPSBnZW5lcmF0ZU1ldGFsQ29kZVNoYXJlZChXVEZNb3ZlKG1ldGFsVHlw
ZXMpLCBXVEZNb3ZlKG1ldGFsRnVuY3Rpb25zLm1ldGFsU291cmNlKSk7Ci0gICAgcmV0dXJuIHsg
V1RGTW92ZShtZXRhbENvZGUpLCBXVEZNb3ZlKG1ldGFsRnVuY3Rpb25zLm1hcHBlZEJpbmRHcm91
cHMpIH07CisgICAgcmV0dXJuIHsgV1RGTW92ZShtZXRhbENvZGUpLCBXVEZNb3ZlKG1ldGFsRnVu
Y3Rpb25zLm1hbmdsZWRFbnRyeVBvaW50TmFtZSkgfTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xNZXRhbENvZGVHZW5l
cmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNM
TWV0YWxDb2RlR2VuZXJhdG9yLmgKaW5kZXggYTZiM2QzMTJjYjY0YjAxMjFkNDI4MjJjMDU5MTM3
YzcyNWNlZGZjMi4uZWEyYjNlZmRkYWZkNTMzZWQ5ODJjNTEyOWMzZTFjMWIwNWVjNzVkOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xN
ZXRhbENvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9NZXRhbC9XSExTTE1ldGFsQ29kZUdlbmVyYXRvci5oCkBAIC0yNyw3ICsyNyw2IEBACiAK
ICNpZiBFTkFCTEUoV0VCR1BVKQogCi0jaW5jbHVkZSAiV0hMU0xNYXBwZWRCaW5kaW5ncy5oIgog
I2luY2x1ZGUgIldITFNMUGlwZWxpbmVEZXNjcmlwdG9yLmgiCiAjaW5jbHVkZSAiV0hMU0xTZW1h
bnRpY01hdGNoZXIuaCIKICNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgpAQCAtNDMsMTUgKzQyLDE1
IEBAIG5hbWVzcGFjZSBNZXRhbCB7CiAKIHN0cnVjdCBSZW5kZXJNZXRhbENvZGUgewogICAgIFN0
cmluZyBtZXRhbFNvdXJjZTsKLSAgICBNYXBwZWRCaW5kR3JvdXBzIHZlcnRleE1hcHBlZEJpbmRH
cm91cHM7Ci0gICAgTWFwcGVkQmluZEdyb3VwcyBmcmFnbWVudE1hcHBlZEJpbmRHcm91cHM7Cisg
ICAgU3RyaW5nIG1hbmdsZWRWZXJ0ZXhFbnRyeVBvaW50TmFtZTsKKyAgICBTdHJpbmcgbWFuZ2xl
ZEZyYWdtZW50RW50cnlQb2ludE5hbWU7CiB9OwogLy8gQ2FuJ3QgZmFpbC4gQW55IGZhaWx1cmUg
Y2hlY2tzIG5lZWQgdG8gYmUgZG9uZSBlYXJsaWVyLCBpbiB0aGUgYmFja2VuZC1hZ25vc3RpYyBw
YXJ0IG9mIHRoZSBjb21waWxlci4KIFJlbmRlck1ldGFsQ29kZSBnZW5lcmF0ZU1ldGFsQ29kZShQ
cm9ncmFtJiwgTWF0Y2hlZFJlbmRlclNlbWFudGljcyYmIG1hdGNoZWRTZW1hbnRpY3MsIExheW91
dCYpOwogCiBzdHJ1Y3QgQ29tcHV0ZU1ldGFsQ29kZSB7CiAgICAgU3RyaW5nIG1ldGFsU291cmNl
OwotICAgIE1hcHBlZEJpbmRHcm91cHMgYmluZEdyb3VwczsKKyAgICBTdHJpbmcgbWFuZ2xlZEVu
dHJ5UG9pbnROYW1lOwogfTsKIC8vIENhbid0IGZhaWwuIEFueSBmYWlsdXJlIGNoZWNrcyBuZWVk
IHRvIGJlIGRvbmUgZWFybGllciwgaW4gdGhlIGJhY2tlbmQtYWdub3N0aWMgcGFydCBvZiB0aGUg
Y29tcGlsZXIuCiBDb21wdXRlTWV0YWxDb2RlIGdlbmVyYXRlTWV0YWxDb2RlKFByb2dyYW0mLCBN
YXRjaGVkQ29tcHV0ZVNlbWFudGljcyYmIG1hdGNoZWRTZW1hbnRpY3MsIExheW91dCYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVja0R1
cGxpY2F0ZUZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9XSExTTENoZWNrRHVwbGljYXRlRnVuY3Rpb25zLmNwcAppbmRleCA4NjhiZmNjZWU3OGQwMWU3
YTczZDFkYWUxYTFiOTE4YTZmYmRlMTc2Li42MWQzNDhhZjE1OTY2MjNhZjRjMzc5OGVhOTk4MWY5
NGE0MTY5NTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9XSExTTENoZWNrRHVwbGljYXRlRnVuY3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrRHVwbGljYXRlRnVuY3Rpb25zLmNwcApAQCAt
NTksNyArNTksNyBAQCBib29sIGNoZWNrRHVwbGljYXRlRnVuY3Rpb25zKGNvbnN0IFByb2dyYW0m
IHByb2dyYW0pCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9KTsKICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGZ1bmN0aW9ucy5zaXplKCk7ICsraSkgewotICAgICAgICBmb3IgKHNpemVf
dCBqID0gaSArIDE7IGogPCBmdW5jdGlvbnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgZm9yIChz
aXplX3QgaiA9IGkgKyAxOyBqIDwgZnVuY3Rpb25zLnNpemUoKTsgKytqKSB7CiAgICAgICAgICAg
ICBpZiAoZnVuY3Rpb25zW2ldLmdldCgpLm5hbWUoKSAhPSBmdW5jdGlvbnNbal0uZ2V0KCkubmFt
ZSgpKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgaWYgKGlzPEFTVDo6TmF0
aXZlRnVuY3Rpb25EZWNsYXJhdGlvbj4oZnVuY3Rpb25zW2ldLmdldCgpKSAmJiBpczxBU1Q6Ok5h
dGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24+KGZ1bmN0aW9uc1tqXS5nZXQoKSkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVja2VyLmNwcAppbmRl
eCAyOTRkYzk4YmUzMDM3YTA3ODEzNjg1MGQ4NWUzMjY1MGNkNDE0NmZkLi5jZjBkN2VlMmJlNmY3
NmE1ODY1YTNiN2E3MzI2M2YxNjI5Y2ZiODUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tlci5jcHAKQEAgLTE0MiwxNiArMTQyLDE2
IEBAIHN0YXRpYyBBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24gcmVzb2x2ZVdpdGhSZWZl
cmVuY2VDb21wYXJhdG9yKEFTVDo6Q2FsbEV4CiAgICAgYXV0byByZXR1cm5UeXBlID0gQVNUOjpU
eXBlUmVmZXJlbmNlOjp3cmFwKExleGVyOjpUb2tlbihjYWxsRXhwcmVzc2lvbi5vcmlnaW4oKSks
IGludHJpbnNpY3MuYm9vbFR5cGUoKSk7CiAgICAgYXV0byBhcmd1bWVudFR5cGUgPSBXVEY6OnZp
c2l0KFdURjo6bWFrZVZpc2l0b3IoW10oVW5pcXVlUmVmPEFTVDo6VW5uYW1lZFR5cGU+JiB1bm5h
bWVkVHlwZSkgLT4gVW5pcXVlUmVmPEFTVDo6VW5uYW1lZFR5cGU+IHsKICAgICAgICAgcmV0dXJu
IHVubmFtZWRUeXBlLT5jbG9uZSgpOwotICAgIH0sIFsmXShSZWY8UmVzb2x2YWJsZVR5cGVSZWZl
cmVuY2U+JikgLT4gVW5pcXVlUmVmPEFTVDo6VW5uYW1lZFR5cGU+IHsKKyAgICB9LCBbJl0oUmVm
UHRyPFJlc29sdmFibGVUeXBlUmVmZXJlbmNlPiYpIC0+IFVuaXF1ZVJlZjxBU1Q6OlVubmFtZWRU
eXBlPiB7CiAgICAgICAgIHJldHVybiBXVEY6OnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoW10oVW5p
cXVlUmVmPEFTVDo6VW5uYW1lZFR5cGU+JiB1bm5hbWVkVHlwZSkgLT4gVW5pcXVlUmVmPEFTVDo6
VW5uYW1lZFR5cGU+IHsKICAgICAgICAgICAgIHJldHVybiB1bm5hbWVkVHlwZS0+Y2xvbmUoKTsK
LSAgICAgICAgfSwgWyZdKFJlZjxSZXNvbHZhYmxlVHlwZVJlZmVyZW5jZT4mKSAtPiBVbmlxdWVS
ZWY8QVNUOjpVbm5hbWVkVHlwZT4geworICAgICAgICB9LCBbJl0oUmVmUHRyPFJlc29sdmFibGVU
eXBlUmVmZXJlbmNlPiYpIC0+IFVuaXF1ZVJlZjxBU1Q6OlVubmFtZWRUeXBlPiB7CiAgICAgICAg
ICAgICAvLyBXZSBlbmNvdW50ZXJlZCAibnVsbCA9PSBudWxsIi4KICAgICAgICAgICAgIC8vIFRo
ZSB0eXBlIGlzbid0IG9ic2VydmFibGUsIHNvIHdlIGNhbiBwaWNrIHdoYXRldmVyIHdlIHdhbnQu
CiAgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBjYW4gcHJvYmFibHkgYmUgZ2VuZXJhbGl6ZWQs
IHVzaW5nIHRoZSAicHJlZmVycmVkIHR5cGUiIGluZnJhc3RydWN0dXJlIHVzZWQgYnkgZ2VuZXJp
YyBsaXRlcmFscwogICAgICAgICAgICAgcmV0dXJuIEFTVDo6VHlwZVJlZmVyZW5jZTo6d3JhcChM
ZXhlcjo6VG9rZW4oY2FsbEV4cHJlc3Npb24ub3JpZ2luKCkpLCBpbnRyaW5zaWNzLmludFR5cGUo
KSk7Ci0gICAgICAgIH0pLCBzZWNvbmRBcmd1bWVudCk7Ci0gICAgfSksIGZpcnN0QXJndW1lbnQp
OworICAgICAgICB9KSwgc2Vjb25kQXJndW1lbnQudGhpbmd5KCkpOworICAgIH0pLCBmaXJzdEFy
Z3VtZW50LnRoaW5neSgpKTsKICAgICBBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25zIHBhcmFtZXRl
cnM7CiAgICAgcGFyYW1ldGVycy5hcHBlbmQoQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uKExleGVy
OjpUb2tlbihjYWxsRXhwcmVzc2lvbi5vcmlnaW4oKSksIEFTVDo6UXVhbGlmaWVycygpLCB7IGFy
Z3VtZW50VHlwZS0+Y2xvbmUoKSB9LCBTdHJpbmcoKSwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxv
cHQpKTsKICAgICBwYXJhbWV0ZXJzLmFwcGVuZChBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24oTGV4
ZXI6OlRva2VuKGNhbGxFeHByZXNzaW9uLm9yaWdpbigpKSwgQVNUOjpRdWFsaWZpZXJzKCksIHsg
V1RGTW92ZShhcmd1bWVudFR5cGUpIH0sIFN0cmluZygpLCBXVEY6Om51bGxvcHQsIFdURjo6bnVs
bG9wdCkpOwpAQCAtMTY1LDE0ICsxNjUsMTQgQEAgc3RhdGljIE9wdGlvbmFsPEFTVDo6TmF0aXZl
RnVuY3Rpb25EZWNsYXJhdGlvbj4gcmVzb2x2ZUJ5SW5zdGFudGlhdGlvbihBU1Q6OkNhbGwKICAg
ICAgICAgICAgIGlmIChpczxBU1Q6OkFycmF5UmVmZXJlbmNlVHlwZT4oc3RhdGljX2Nhc3Q8QVNU
OjpVbm5hbWVkVHlwZSY+KHVubmFtZWRUeXBlKSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuICZk
b3duY2FzdDxBU1Q6OkFycmF5UmVmZXJlbmNlVHlwZT4oc3RhdGljX2Nhc3Q8QVNUOjpVbm5hbWVk
VHlwZSY+KHVubmFtZWRUeXBlKSk7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAg
ICAgfSwgW10oUmVmPFJlc29sdmFibGVUeXBlUmVmZXJlbmNlPiYpIC0+IEFTVDo6QXJyYXlSZWZl
cmVuY2VUeXBlKiB7CisgICAgICAgIH0sIFtdKFJlZlB0cjxSZXNvbHZhYmxlVHlwZVJlZmVyZW5j
ZT4mKSAtPiBBU1Q6OkFycmF5UmVmZXJlbmNlVHlwZSogewogICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0gICAgICAgIH0pLCB0eXBlc1swXS5nZXQoKSk7CisgICAgICAgIH0pLCB0eXBlc1sw
XS5nZXQoKS50aGluZ3koKSk7CiAgICAgICAgIGJvb2wgc2Vjb25kQXJndW1lbnRJc1VpbnQgPSBX
VEY6OnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoWyZdKFVuaXF1ZVJlZjxBU1Q6OlVubmFtZWRUeXBl
PiYgdW5uYW1lZFR5cGUpIC0+IGJvb2wgewogICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXModW5u
YW1lZFR5cGUsIGludHJpbnNpY3MudWludFR5cGUoKSk7Ci0gICAgICAgIH0sIFsmXShSZWY8UmVz
b2x2YWJsZVR5cGVSZWZlcmVuY2U+JiByZXNvbHZhYmxlVHlwZVJlZmVyZW5jZSkgLT4gYm9vbCB7
CisgICAgICAgIH0sIFsmXShSZWZQdHI8UmVzb2x2YWJsZVR5cGVSZWZlcmVuY2U+JiByZXNvbHZh
YmxlVHlwZVJlZmVyZW5jZSkgLT4gYm9vbCB7CiAgICAgICAgICAgICByZXR1cm4gcmVzb2x2YWJs
ZVR5cGVSZWZlcmVuY2UtPnJlc29sdmFibGVUeXBlKCkuY2FuUmVzb2x2ZShpbnRyaW5zaWNzLnVp
bnRUeXBlKCkpOwotICAgICAgICB9KSwgdHlwZXNbMV0uZ2V0KCkpOworICAgICAgICB9KSwgdHlw
ZXNbMV0uZ2V0KCkudGhpbmd5KCkpOwogICAgICAgICBpZiAoZmlyc3RBcmd1bWVudEFycmF5UmVm
ICYmIHNlY29uZEFyZ3VtZW50SXNVaW50KQogICAgICAgICAgICAgcmV0dXJuIHJlc29sdmVXaXRo
T3BlcmF0b3JBbmRlckluZGV4ZXIoY2FsbEV4cHJlc3Npb24sICpmaXJzdEFyZ3VtZW50QXJyYXlS
ZWYsIGludHJpbnNpY3MpOwogICAgIH0gZWxzZSBpZiAoY2FsbEV4cHJlc3Npb24ubmFtZSgpID09
ICJvcGVyYXRvci5sZW5ndGgiICYmIHR5cGVzLnNpemUoKSA9PSAxKSB7CkBAIC0xODAsMTggKzE4
MCwxOCBAQCBzdGF0aWMgT3B0aW9uYWw8QVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uPiBy
ZXNvbHZlQnlJbnN0YW50aWF0aW9uKEFTVDo6Q2FsbAogICAgICAgICAgICAgaWYgKGlzPEFTVDo6
QXJyYXlSZWZlcmVuY2VUeXBlPihzdGF0aWNfY2FzdDxBU1Q6OlVubmFtZWRUeXBlJj4odW5uYW1l
ZFR5cGUpKSB8fCBpczxBU1Q6OkFycmF5VHlwZT4oc3RhdGljX2Nhc3Q8QVNUOjpVbm5hbWVkVHlw
ZSY+KHVubmFtZWRUeXBlKSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuICZ1bm5hbWVkVHlwZTsK
ICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICB9LCBbXShSZWY8UmVzb2x2YWJs
ZVR5cGVSZWZlcmVuY2U+JikgLT4gQVNUOjpVbm5hbWVkVHlwZSogeworICAgICAgICB9LCBbXShS
ZWZQdHI8UmVzb2x2YWJsZVR5cGVSZWZlcmVuY2U+JikgLT4gQVNUOjpVbm5hbWVkVHlwZSogewog
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIH0pLCB0eXBlc1swXS5nZXQoKSk7
CisgICAgICAgIH0pLCB0eXBlc1swXS5nZXQoKS50aGluZ3koKSk7CiAgICAgICAgIGlmIChmaXJz
dEFyZ3VtZW50UmVmZXJlbmNlKQogICAgICAgICAgICAgcmV0dXJuIHJlc29sdmVXaXRoT3BlcmF0
b3JMZW5ndGgoY2FsbEV4cHJlc3Npb24sICpmaXJzdEFyZ3VtZW50UmVmZXJlbmNlLCBpbnRyaW5z
aWNzKTsKICAgICB9IGVsc2UgaWYgKGNhbGxFeHByZXNzaW9uLm5hbWUoKSA9PSAib3BlcmF0b3I9
PSIgJiYgdHlwZXMuc2l6ZSgpID09IDIpIHsKICAgICAgICAgYXV0byBpc0FjY2VwdGFibGUgPSBb
XShSZXNvbHZpbmdUeXBlJiByZXNvbHZpbmdUeXBlKSAtPiBib29sIHsKICAgICAgICAgICAgIHJl
dHVybiBXVEY6OnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoW10oVW5pcXVlUmVmPEFTVDo6VW5uYW1l
ZFR5cGU+JiB1bm5hbWVkVHlwZSkgLT4gYm9vbCB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGlz
PEFTVDo6UmVmZXJlbmNlVHlwZT4oc3RhdGljX2Nhc3Q8QVNUOjpVbm5hbWVkVHlwZSY+KHVubmFt
ZWRUeXBlKSk7Ci0gICAgICAgICAgICB9LCBbXShSZWY8UmVzb2x2YWJsZVR5cGVSZWZlcmVuY2U+
JiByZXNvbHZhYmxlVHlwZVJlZmVyZW5jZSkgLT4gYm9vbCB7CisgICAgICAgICAgICB9LCBbXShS
ZWZQdHI8UmVzb2x2YWJsZVR5cGVSZWZlcmVuY2U+JiByZXNvbHZhYmxlVHlwZVJlZmVyZW5jZSkg
LT4gYm9vbCB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGlzPEFTVDo6TnVsbExpdGVyYWxUeXBl
PihyZXNvbHZhYmxlVHlwZVJlZmVyZW5jZS0+cmVzb2x2YWJsZVR5cGUoKSk7Ci0gICAgICAgICAg
ICB9KSwgcmVzb2x2aW5nVHlwZSk7CisgICAgICAgICAgICB9KSwgcmVzb2x2aW5nVHlwZS50aGlu
Z3koKSk7CiAgICAgICAgIH07CiAgICAgICAgIGlmIChpc0FjY2VwdGFibGUodHlwZXNbMF0uZ2V0
KCkpICYmIGlzQWNjZXB0YWJsZSh0eXBlc1sxXS5nZXQoKSkpCiAgICAgICAgICAgICByZXR1cm4g
cmVzb2x2ZVdpdGhSZWZlcmVuY2VDb21wYXJhdG9yKGNhbGxFeHByZXNzaW9uLCB0eXBlc1swXS5n
ZXQoKSwgdHlwZXNbMV0uZ2V0KCksIGludHJpbnNpY3MpOwpAQCAtNDQzLDcgKzQ0Myw3IEBAIHBy
aXZhdGU6CiAgICAgT3B0aW9uYWw8VW5pcXVlUmVmPEFTVDo6VW5uYW1lZFR5cGU+PiByZWN1cnNl
QW5kV3JhcEJhc2VUeXBlKEFTVDo6UHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uJik7CiAgICAgYm9v
bCByZWN1cnNlQW5kUmVxdWlyZUJvb2xUeXBlKEFTVDo6RXhwcmVzc2lvbiYpOwogICAgIHZvaWQg
YXNzaWduVHlwZShBU1Q6OkV4cHJlc3Npb24mLCBVbmlxdWVSZWY8QVNUOjpVbm5hbWVkVHlwZT4m
JiwgT3B0aW9uYWw8QVNUOjpBZGRyZXNzU3BhY2U+ID0gV1RGOjpudWxsb3B0KTsKLSAgICB2b2lk
IGFzc2lnblR5cGUoQVNUOjpFeHByZXNzaW9uJiwgUmVmPFJlc29sdmFibGVUeXBlUmVmZXJlbmNl
PiYmLCBPcHRpb25hbDxBU1Q6OkFkZHJlc3NTcGFjZT4gPSBXVEY6Om51bGxvcHQpOworICAgIHZv
aWQgYXNzaWduVHlwZShBU1Q6OkV4cHJlc3Npb24mLCBSZWZQdHI8UmVzb2x2YWJsZVR5cGVSZWZl
cmVuY2U+JiYsIE9wdGlvbmFsPEFTVDo6QWRkcmVzc1NwYWNlPiA9IFdURjo6bnVsbG9wdCk7CiAg
ICAgdm9pZCBmb3J3YXJkVHlwZShBU1Q6OkV4cHJlc3Npb24mLCBSZXNvbHZpbmdUeXBlJiwgT3B0
aW9uYWw8QVNUOjpBZGRyZXNzU3BhY2U+ID0gV1RGOjpudWxsb3B0KTsKIAogICAgIHZvaWQgdmlz
aXQoQVNUOjpGdW5jdGlvbkRlZmluaXRpb24mKSBvdmVycmlkZTsKQEAgLTUxMSwxNSArNTExLDE0
IEBAIGJvb2wgQ2hlY2tlcjo6YXNzaWduVHlwZXMoKQogICAgICAgICBhdXRvIHN1Y2Nlc3MgPSBX
VEY6OnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoWyZdKFVuaXF1ZVJlZjxBU1Q6OlVubmFtZWRUeXBl
PiYgdW5uYW1lZFR5cGUpIC0+IGJvb2wgewogICAgICAgICAgICAga2V5VmFsdWVQYWlyLmtleS0+
c2V0VHlwZSh1bm5hbWVkVHlwZS0+Y2xvbmUoKSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICAgICAgfSwgWyZdKFJlZjxSZXNvbHZhYmxlVHlwZVJlZmVyZW5jZT4mIHJlc29sdmFibGVU
eXBlUmVmZXJlbmNlKSAtPiBib29sIHsKKyAgICAgICAgfSwgWyZdKFJlZlB0cjxSZXNvbHZhYmxl
VHlwZVJlZmVyZW5jZT4mIHJlc29sdmFibGVUeXBlUmVmZXJlbmNlKSAtPiBib29sIHsKICAgICAg
ICAgICAgIGlmICghcmVzb2x2YWJsZVR5cGVSZWZlcmVuY2UtPnJlc29sdmFibGVUeXBlKCkucmVz
b2x2ZWRUeXBlKCkpIHsKLSAgICAgICAgICAgICAgICAvLyBGSVhNRTogSW5zdGVhZCBvZiB0cnlp
bmcgdG8gY29tbWl0LCBpdCBtaWdodCBiZSBiZXR0ZXIgdG8ganVzdCByZXR1cm4gYW4gZXJyb3Ig
aW5zdGVhZC4KICAgICAgICAgICAgICAgICBpZiAoIXN0YXRpY19jYXN0PGJvb2w+KGNvbW1pdChy
ZXNvbHZhYmxlVHlwZVJlZmVyZW5jZS0+cmVzb2x2YWJsZVR5cGUoKSkpKQogICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBrZXlWYWx1
ZVBhaXIua2V5LT5zZXRUeXBlKHJlc29sdmFibGVUeXBlUmVmZXJlbmNlLT5yZXNvbHZhYmxlVHlw
ZSgpLnJlc29sdmVkVHlwZSgpLT5jbG9uZSgpKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwot
ICAgICAgICB9KSwga2V5VmFsdWVQYWlyLnZhbHVlKTsKKyAgICAgICAgfSksIGtleVZhbHVlUGFp
ci52YWx1ZS50aGluZ3koKSk7CiAgICAgICAgIGlmICghc3VjY2VzcykKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CkBAIC01MzMsMTEgKzUzMiwxMSBAQCBib29sIENoZWNrZXI6OmNo
ZWNrU2hhZGVyVHlwZShjb25zdCBBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbiYgZnVuY3Rpb25EZWZp
bml0aW9uKQogewogICAgIHN3aXRjaCAoKmZ1bmN0aW9uRGVmaW5pdGlvbi5lbnRyeVBvaW50VHlw
ZSgpKSB7CiAgICAgY2FzZSBBU1Q6OkVudHJ5UG9pbnRUeXBlOjpWZXJ0ZXg6Ci0gICAgICAgIHJl
dHVybiAhbV92ZXJ0ZXhFbnRyeVBvaW50cy5hZGQoZnVuY3Rpb25EZWZpbml0aW9uLm5hbWUoKSku
aXNOZXdFbnRyeTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KG1fdmVydGV4RW50
cnlQb2ludHMuYWRkKGZ1bmN0aW9uRGVmaW5pdGlvbi5uYW1lKCkpKTsKICAgICBjYXNlIEFTVDo6
RW50cnlQb2ludFR5cGU6OkZyYWdtZW50OgotICAgICAgICByZXR1cm4gIW1fZnJhZ21lbnRFbnRy
eVBvaW50cy5hZGQoZnVuY3Rpb25EZWZpbml0aW9uLm5hbWUoKSkuaXNOZXdFbnRyeTsKKyAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KG1fZnJhZ21lbnRFbnRyeVBvaW50cy5hZGQoZnVu
Y3Rpb25EZWZpbml0aW9uLm5hbWUoKSkpOwogICAgIGNhc2UgQVNUOjpFbnRyeVBvaW50VHlwZTo6
Q29tcHV0ZToKLSAgICAgICAgcmV0dXJuICFtX2NvbXB1dGVFbnRyeVBvaW50cy5hZGQoZnVuY3Rp
b25EZWZpbml0aW9uLm5hbWUoKSkuaXNOZXdFbnRyeTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PGJvb2w+KG1fY29tcHV0ZUVudHJ5UG9pbnRzLmFkZChmdW5jdGlvbkRlZmluaXRpb24ubmFt
ZSgpKSk7CiAgICAgfQogfQogCkBAIC01NjMsNyArNTYyLDcgQEAgdm9pZCBDaGVja2VyOjp2aXNp
dChBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbiYgZnVuY3Rpb25EZWZpbml0aW9uKQogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgY2hlY2tFcnJvckFuZFZpc2l0KGZ1bmN0aW9uRGVmaW5pdGlv
bik7CisgICAgVmlzaXRvcjo6dmlzaXQoZnVuY3Rpb25EZWZpbml0aW9uKTsKIH0KIAogc3RhdGlj
IE9wdGlvbmFsPFVuaXF1ZVJlZjxBU1Q6OlVubmFtZWRUeXBlPj4gbWF0Y2hBbmRDb21taXQoUmVz
b2x2aW5nVHlwZSYgbGVmdCwgUmVzb2x2aW5nVHlwZSYgcmlnaHQpCkBAIC01NzMsMTYgKzU3Miwx
NiBAQCBzdGF0aWMgT3B0aW9uYWw8VW5pcXVlUmVmPEFTVDo6VW5uYW1lZFR5cGU+PiBtYXRjaEFu
ZENvbW1pdChSZXNvbHZpbmdUeXBlJiBsZWZ0LAogICAgICAgICAgICAgaWYgKG1hdGNoZXMobGVm
dCwgcmlnaHQpKQogICAgICAgICAgICAgICAgIHJldHVybiBsZWZ0LT5jbG9uZSgpOwogICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICAgICAgfSwgWyZdKFJlZjxSZXNvbHZhYmxl
VHlwZVJlZmVyZW5jZT4mIHJpZ2h0KSAtPiBPcHRpb25hbDxVbmlxdWVSZWY8QVNUOjpVbm5hbWVk
VHlwZT4+IHsKKyAgICAgICAgfSwgWyZdKFJlZlB0cjxSZXNvbHZhYmxlVHlwZVJlZmVyZW5jZT4m
IHJpZ2h0KSAtPiBPcHRpb25hbDxVbmlxdWVSZWY8QVNUOjpVbm5hbWVkVHlwZT4+IHsKICAgICAg
ICAgICAgIHJldHVybiBtYXRjaEFuZENvbW1pdChsZWZ0LCByaWdodC0+cmVzb2x2YWJsZVR5cGUo
KSk7Ci0gICAgICAgIH0pLCByaWdodCk7Ci0gICAgfSwgWyZdKFJlZjxSZXNvbHZhYmxlVHlwZVJl
ZmVyZW5jZT4mIGxlZnQpIC0+IE9wdGlvbmFsPFVuaXF1ZVJlZjxBU1Q6OlVubmFtZWRUeXBlPj4g
eworICAgICAgICB9KSwgcmlnaHQudGhpbmd5KCkpOworICAgIH0sIFsmXShSZWZQdHI8UmVzb2x2
YWJsZVR5cGVSZWZlcmVuY2U+JiBsZWZ0KSAtPiBPcHRpb25hbDxVbmlxdWVSZWY8QVNUOjpVbm5h
bWVkVHlwZT4+IHsKICAgICAgICAgcmV0dXJuIFdURjo6dmlzaXQoV1RGOjptYWtlVmlzaXRvcihb
Jl0oVW5pcXVlUmVmPEFTVDo6VW5uYW1lZFR5cGU+JiByaWdodCkgLT4gT3B0aW9uYWw8VW5pcXVl
UmVmPEFTVDo6VW5uYW1lZFR5cGU+PiB7CiAgICAgICAgICAgICByZXR1cm4gbWF0Y2hBbmRDb21t
aXQocmlnaHQsIGxlZnQtPnJlc29sdmFibGVUeXBlKCkpOwotICAgICAgICB9LCBbJl0oUmVmPFJl
c29sdmFibGVUeXBlUmVmZXJlbmNlPiYgcmlnaHQpIC0+IE9wdGlvbmFsPFVuaXF1ZVJlZjxBU1Q6
OlVubmFtZWRUeXBlPj4geworICAgICAgICB9LCBbJl0oUmVmUHRyPFJlc29sdmFibGVUeXBlUmVm
ZXJlbmNlPiYgcmlnaHQpIC0+IE9wdGlvbmFsPFVuaXF1ZVJlZjxBU1Q6OlVubmFtZWRUeXBlPj4g
ewogICAgICAgICAgICAgcmV0dXJuIG1hdGNoQW5kQ29tbWl0KGxlZnQtPnJlc29sdmFibGVUeXBl
KCksIHJpZ2h0LT5yZXNvbHZhYmxlVHlwZSgpKTsKLSAgICAgICAgfSksIHJpZ2h0KTsKLSAgICB9
KSwgbGVmdCk7CisgICAgICAgIH0pLCByaWdodC50aGluZ3koKSk7CisgICAgfSksIGxlZnQudGhp
bmd5KCkpOwogfQogCiBzdGF0aWMgT3B0aW9uYWw8VW5pcXVlUmVmPEFTVDo6VW5uYW1lZFR5cGU+
PiBtYXRjaEFuZENvbW1pdChSZXNvbHZpbmdUeXBlJiByZXNvbHZpbmdUeXBlLCBBU1Q6OlVubmFt
ZWRUeXBlJiB1bm5hbWVkVHlwZSkKQEAgLTU5MSw5ICs1OTAsOSBAQCBzdGF0aWMgT3B0aW9uYWw8
VW5pcXVlUmVmPEFTVDo6VW5uYW1lZFR5cGU+PiBtYXRjaEFuZENvbW1pdChSZXNvbHZpbmdUeXBl
JiByZXNvbAogICAgICAgICBpZiAobWF0Y2hlcyh1bm5hbWVkVHlwZSwgcmVzb2x2aW5nVHlwZSkp
CiAgICAgICAgICAgICByZXR1cm4gdW5uYW1lZFR5cGUuY2xvbmUoKTsKICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKLSAgICB9LCBbJl0oUmVmPFJlc29sdmFibGVUeXBlUmVmZXJlbmNlPiYg
cmVzb2x2aW5nVHlwZSkgLT4gT3B0aW9uYWw8VW5pcXVlUmVmPEFTVDo6VW5uYW1lZFR5cGU+PiB7
CisgICAgfSwgWyZdKFJlZlB0cjxSZXNvbHZhYmxlVHlwZVJlZmVyZW5jZT4mIHJlc29sdmluZ1R5
cGUpIC0+IE9wdGlvbmFsPFVuaXF1ZVJlZjxBU1Q6OlVubmFtZWRUeXBlPj4gewogICAgICAgICBy
ZXR1cm4gbWF0Y2hBbmRDb21taXQodW5uYW1lZFR5cGUsIHJlc29sdmluZ1R5cGUtPnJlc29sdmFi
bGVUeXBlKCkpOwotICAgIH0pLCByZXNvbHZpbmdUeXBlKTsKKyAgICB9KSwgcmVzb2x2aW5nVHlw
ZS50aGluZ3koKSk7CiB9CiAKIHN0YXRpYyBPcHRpb25hbDxVbmlxdWVSZWY8QVNUOjpVbm5hbWVk
VHlwZT4+IG1hdGNoQW5kQ29tbWl0KFJlc29sdmluZ1R5cGUmIHJlc29sdmluZ1R5cGUsIEFTVDo6
TmFtZWRUeXBlJiBuYW1lZFR5cGUpCkBAIC02MDIsOSArNjAxLDkgQEAgc3RhdGljIE9wdGlvbmFs
PFVuaXF1ZVJlZjxBU1Q6OlVubmFtZWRUeXBlPj4gbWF0Y2hBbmRDb21taXQoUmVzb2x2aW5nVHlw
ZSYgcmVzb2wKICAgICAgICAgaWYgKG1hdGNoZXMocmVzb2x2aW5nVHlwZSwgbmFtZWRUeXBlKSkK
ICAgICAgICAgICAgIHJldHVybiByZXNvbHZpbmdUeXBlLT5jbG9uZSgpOwogICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OwotICAgIH0sIFsmXShSZWY8UmVzb2x2YWJsZVR5cGVSZWZlcmVuY2U+
JiByZXNvbHZpbmdUeXBlKSAtPiBPcHRpb25hbDxVbmlxdWVSZWY8QVNUOjpVbm5hbWVkVHlwZT4+
IHsKKyAgICB9LCBbJl0oUmVmUHRyPFJlc29sdmFibGVUeXBlUmVmZXJlbmNlPiYgcmVzb2x2aW5n
VHlwZSkgLT4gT3B0aW9uYWw8VW5pcXVlUmVmPEFTVDo6VW5uYW1lZFR5cGU+PiB7CiAgICAgICAg
IHJldHVybiBtYXRjaEFuZENvbW1pdChuYW1lZFR5cGUsIHJlc29sdmluZ1R5cGUtPnJlc29sdmFi
bGVUeXBlKCkpOwotICAgIH0pLCByZXNvbHZpbmdUeXBlKTsKKyAgICB9KSwgcmVzb2x2aW5nVHlw
ZS50aGluZ3koKSk7CiB9CiAKIHZvaWQgQ2hlY2tlcjo6dmlzaXQoQVNUOjpFbnVtZXJhdGlvbkRl
ZmluaXRpb24mIGVudW1lcmF0aW9uRGVmaW5pdGlvbikKQEAgLTcxMCwxMyArNzA5LDE0IEBAIHZv
aWQgQ2hlY2tlcjo6dmlzaXQoQVNUOjpUeXBlUmVmZXJlbmNlJiB0eXBlUmVmZXJlbmNlKQogewog
ICAgIEFTU0VSVCh0eXBlUmVmZXJlbmNlLnJlc29sdmVkVHlwZSgpKTsKIAotICAgIGNoZWNrRXJy
b3JBbmRWaXNpdCh0eXBlUmVmZXJlbmNlKTsKKyAgICBmb3IgKGF1dG8mIHR5cGVBcmd1bWVudCA6
IHR5cGVSZWZlcmVuY2UudHlwZUFyZ3VtZW50cygpKQorICAgICAgICBjaGVja0Vycm9yQW5kVmlz
aXQodHlwZUFyZ3VtZW50KTsKIH0KIAogYXV0byBDaGVja2VyOjpyZWN1cnNlQW5kR2V0SW5mbyhB
U1Q6OkV4cHJlc3Npb24mIGV4cHJlc3Npb24sIGJvb2wgcmVxdWlyZXNMVmFsdWUpIC0+IE9wdGlv
bmFsPFJlY3Vyc2VJbmZvPgogewotICAgIGNoZWNrRXJyb3JBbmRWaXNpdChleHByZXNzaW9uKTsK
LSAgICBpZiAoIWVycm9yKCkpCisgICAgVmlzaXRvcjo6dmlzaXQoZXhwcmVzc2lvbik7CisgICAg
aWYgKGVycm9yKCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgcmV0dXJuIGdl
dEluZm8oZXhwcmVzc2lvbiwgcmVxdWlyZXNMVmFsdWUpOwogfQpAQCAtNzYwLDcgKzc2MCw3IEBA
IHZvaWQgQ2hlY2tlcjo6YXNzaWduVHlwZShBU1Q6OkV4cHJlc3Npb24mIGV4cHJlc3Npb24sIFVu
aXF1ZVJlZjxBU1Q6OlVubmFtZWRUeXBlCiAgICAgQVNTRVJUX1VOVVNFRChhZGRyZXNzU3BhY2VB
ZGRSZXN1bHQsIGFkZHJlc3NTcGFjZUFkZFJlc3VsdC5pc05ld0VudHJ5KTsKIH0KIAotdm9pZCBD
aGVja2VyOjphc3NpZ25UeXBlKEFTVDo6RXhwcmVzc2lvbiYgZXhwcmVzc2lvbiwgUmVmPFJlc29s
dmFibGVUeXBlUmVmZXJlbmNlPiYmIHJlc29sdmFibGVUeXBlUmVmZXJlbmNlLCBPcHRpb25hbDxB
U1Q6OkFkZHJlc3NTcGFjZT4gYWRkcmVzc1NwYWNlKQordm9pZCBDaGVja2VyOjphc3NpZ25UeXBl
KEFTVDo6RXhwcmVzc2lvbiYgZXhwcmVzc2lvbiwgUmVmUHRyPFJlc29sdmFibGVUeXBlUmVmZXJl
bmNlPiYmIHJlc29sdmFibGVUeXBlUmVmZXJlbmNlLCBPcHRpb25hbDxBU1Q6OkFkZHJlc3NTcGFj
ZT4gYWRkcmVzc1NwYWNlKQogewogICAgIGF1dG8gYWRkUmVzdWx0ID0gbV90eXBlTWFwLmFkZCgm
ZXhwcmVzc2lvbiwgV1RGTW92ZShyZXNvbHZhYmxlVHlwZVJlZmVyZW5jZSkpOwogICAgIEFTU0VS
VF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CkBAIC03OTIsMTAgKzc5
MiwxMCBAQCB2b2lkIENoZWNrZXI6OmZvcndhcmRUeXBlKEFTVDo6RXhwcmVzc2lvbiYgZXhwcmVz
c2lvbiwgUmVzb2x2aW5nVHlwZSYgcmVzb2x2aW5nVAogICAgIFdURjo6dmlzaXQoV1RGOjptYWtl
VmlzaXRvcihbJl0oVW5pcXVlUmVmPEFTVDo6VW5uYW1lZFR5cGU+JiByZXN1bHQpIHsKICAgICAg
ICAgYXV0byBhZGRSZXN1bHQgPSBtX3R5cGVNYXAuYWRkKCZleHByZXNzaW9uLCByZXN1bHQtPmNs
b25lKCkpOwogICAgICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3
RW50cnkpOwotICAgIH0sIFsmXShSZWY8UmVzb2x2YWJsZVR5cGVSZWZlcmVuY2U+JiByZXN1bHQp
IHsKKyAgICB9LCBbJl0oUmVmUHRyPFJlc29sdmFibGVUeXBlUmVmZXJlbmNlPiYgcmVzdWx0KSB7
CiAgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV90eXBlTWFwLmFkZCgmZXhwcmVzc2lvbiwgcmVz
dWx0LmNvcHlSZWYoKSk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1
bHQuaXNOZXdFbnRyeSk7Ci0gICAgfSksIHJlc29sdmluZ1R5cGUpOworICAgIH0pLCByZXNvbHZp
bmdUeXBlLnRoaW5neSgpKTsKICAgICBhdXRvIGFkZHJlc3NTcGFjZUFkZFJlc3VsdCA9IG1fYWRk
cmVzc1NwYWNlTWFwLmFkZCgmZXhwcmVzc2lvbiwgYWRkcmVzc1NwYWNlKTsKICAgICBBU1NFUlRf
VU5VU0VEKGFkZHJlc3NTcGFjZUFkZFJlc3VsdCwgYWRkcmVzc1NwYWNlQWRkUmVzdWx0LmlzTmV3
RW50cnkpOwogfQpAQCAtODI4LDEwICs4MjgsMTAgQEAgc3RhdGljIEFTVDo6VW5uYW1lZFR5cGUq
IGdldFVubmFtZWRUeXBlKFJlc29sdmluZ1R5cGUmIHJlc29sdmluZ1R5cGUpCiB7CiAgICAgcmV0
dXJuIFdURjo6dmlzaXQoV1RGOjptYWtlVmlzaXRvcihbXShVbmlxdWVSZWY8QVNUOjpVbm5hbWVk
VHlwZT4mIHR5cGUpIC0+IEFTVDo6VW5uYW1lZFR5cGUqIHsKICAgICAgICAgcmV0dXJuICZ0eXBl
OwotICAgIH0sIFtdKFJlZjxSZXNvbHZhYmxlVHlwZVJlZmVyZW5jZT4mIHR5cGUpIC0+IEFTVDo6
VW5uYW1lZFR5cGUqIHsKKyAgICB9LCBbXShSZWZQdHI8UmVzb2x2YWJsZVR5cGVSZWZlcmVuY2U+
JiB0eXBlKSAtPiBBU1Q6OlVubmFtZWRUeXBlKiB7CiAgICAgICAgIC8vIEZJWE1FOiBJZiB0aGUg
dHlwZSBpc24ndCBjb21taXR0ZWQsIHNob3VsZCB3ZSBqdXN0IGNvbW1pdCgpIGl0IG5vdz8KICAg
ICAgICAgcmV0dXJuIHR5cGUtPnJlc29sdmFibGVUeXBlKCkucmVzb2x2ZWRUeXBlKCk7Ci0gICAg
fSksIHJlc29sdmluZ1R5cGUpOworICAgIH0pLCByZXNvbHZpbmdUeXBlLnRoaW5neSgpKTsKIH0K
IAogdm9pZCBDaGVja2VyOjp2aXNpdChBU1Q6OkRlcmVmZXJlbmNlRXhwcmVzc2lvbiYgZGVyZWZl
cmVuY2VFeHByZXNzaW9uKQpAQCAtOTUwLDEwICs5NTAsMTAgQEAgdm9pZCBDaGVja2VyOjpmaW5p
c2hWaXNpdGluZ1Byb3BlcnR5QWNjZXNzKEFTVDo6UHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uJiBw
cm9wZXIKICAgICAgICAgICAgIGlmIChpczxBU1Q6OkFycmF5UmVmZXJlbmNlVHlwZT4odW5uYW1l
ZFR5cGUpKQogICAgICAgICAgICAgICAgIHJldHVybiB7IHVubmFtZWRUeXBlLmNsb25lKCkgfTsK
ICAgICAgICAgICAgIGlmIChpczxBU1Q6OkFycmF5VHlwZT4odW5uYW1lZFR5cGUpKQotICAgICAg
ICAgICAgICAgIHJldHVybiB7IG1ha2VVbmlxdWVSZWY8QVNUOjpBcnJheVJlZmVyZW5jZVR5cGU+
KExleGVyOjpUb2tlbihwcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24ub3JpZ2luKCkpLCBBU1Q6OkFk
ZHJlc3NTcGFjZTo6VGhyZWFkLCBkb3duY2FzdDxBU1Q6OkFycmF5VHlwZT4odW5uYW1lZFR5cGUp
LnR5cGUoKS5jbG9uZSgpKSB9OworICAgICAgICAgICAgICAgIHJldHVybiB7IFJlc29sdmluZ1R5
cGUobWFrZVVuaXF1ZVJlZjxBU1Q6OkFycmF5UmVmZXJlbmNlVHlwZT4oTGV4ZXI6OlRva2VuKHBy
b3BlcnR5QWNjZXNzRXhwcmVzc2lvbi5vcmlnaW4oKSksIEFTVDo6QWRkcmVzc1NwYWNlOjpUaHJl
YWQsIGRvd25jYXN0PEFTVDo6QXJyYXlUeXBlPih1bm5hbWVkVHlwZSkudHlwZSgpLmNsb25lKCkp
KSB9OwogICAgICAgICAgICAgaWYgKGlzPEFTVDo6UG9pbnRlclR5cGU+KHVubmFtZWRUeXBlKSkK
ICAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgICAgICAgICAgcmV0dXJu
IHsgbWFrZVVuaXF1ZVJlZjxBU1Q6OlBvaW50ZXJUeXBlPihMZXhlcjo6VG9rZW4ocHJvcGVydHlB
Y2Nlc3NFeHByZXNzaW9uLm9yaWdpbigpKSwgQVNUOjpBZGRyZXNzU3BhY2U6OlRocmVhZCwgZG93
bmNhc3Q8QVNUOjpBcnJheVR5cGU+KHVubmFtZWRUeXBlKS50eXBlKCkuY2xvbmUoKSkgfTsKKyAg
ICAgICAgICAgIHJldHVybiB7IFJlc29sdmluZ1R5cGUobWFrZVVuaXF1ZVJlZjxBU1Q6OlBvaW50
ZXJUeXBlPihMZXhlcjo6VG9rZW4ocHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uLm9yaWdpbigpKSwg
QVNUOjpBZGRyZXNzU3BhY2U6OlRocmVhZCwgZG93bmNhc3Q8QVNUOjpUeXBlUmVmZXJlbmNlPih1
bm5hbWVkVHlwZSkuY2xvbmUoKSkpIH07CiAgICAgICAgIH07CiAgICAgICAgIGF1dG8gY29tcHV0
ZUFuZFJldHVyblR5cGUgPSBbJl0oQVNUOjpVbm5hbWVkVHlwZSYgdW5uYW1lZFR5cGUpIC0+IEFT
VDo6VW5uYW1lZFR5cGUqIHsKICAgICAgICAgICAgIGlmIChpczxBU1Q6OlBvaW50ZXJUeXBlPih1
bm5hbWVkVHlwZSkpCkBAIC0xMTYzLDkgKzExNjMsOSBAQCBib29sIENoZWNrZXI6OmlzQm9vbFR5
cGUoUmVzb2x2aW5nVHlwZSYgcmVzb2x2aW5nVHlwZSkKIHsKICAgICByZXR1cm4gV1RGOjp2aXNp
dChXVEY6Om1ha2VWaXNpdG9yKFsmXShVbmlxdWVSZWY8QVNUOjpVbm5hbWVkVHlwZT4mIGxlZnQp
IC0+IGJvb2wgewogICAgICAgICByZXR1cm4gbWF0Y2hlcyhsZWZ0LCBtX2ludHJpbnNpY3MuYm9v
bFR5cGUoKSk7Ci0gICAgfSwgWyZdKFJlZjxSZXNvbHZhYmxlVHlwZVJlZmVyZW5jZT4mIGxlZnQp
IC0+IGJvb2wgeworICAgIH0sIFsmXShSZWZQdHI8UmVzb2x2YWJsZVR5cGVSZWZlcmVuY2U+JiBs
ZWZ0KSAtPiBib29sIHsKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KG1hdGNoQW5k
Q29tbWl0KG1faW50cmluc2ljcy5ib29sVHlwZSgpLCBsZWZ0LT5yZXNvbHZhYmxlVHlwZSgpKSk7
Ci0gICAgfSksIHJlc29sdmluZ1R5cGUpOworICAgIH0pLCByZXNvbHZpbmdUeXBlLnRoaW5neSgp
KTsKIH0KIAogYm9vbCBDaGVja2VyOjpyZWN1cnNlQW5kUmVxdWlyZUJvb2xUeXBlKEFTVDo6RXhw
cmVzc2lvbiYgZXhwcmVzc2lvbikKQEAgLTE0MjQsMTEgKzE0MjQsMTEgQEAgdm9pZCBDaGVja2Vy
Ojp2aXNpdChBU1Q6OkNhbGxFeHByZXNzaW9uJiBjYWxsRXhwcmVzc2lvbikKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgdHlwZXMudW5jaGVja2VkQXBwZW5kKGFyZ3VtZW50SW5mby0+cmVz
b2x2aW5nVHlwZSk7CiAgICAgfQotICAgIGlmIChjYWxsRXhwcmVzc2lvbi5jYXN0UmV0dXJuVHlw
ZSgpKSB7CisgICAgLyppZiAoY2FsbEV4cHJlc3Npb24uY2FzdFJldHVyblR5cGUoKSkgewogICAg
ICAgICBjaGVja0Vycm9yQW5kVmlzaXQoY2FsbEV4cHJlc3Npb24uY2FzdFJldHVyblR5cGUoKS0+
Z2V0KCkpOwogICAgICAgICBpZiAoZXJyb3IoKSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICB9
CisgICAgfSovCiAKICAgICBBU1NFUlQoY2FsbEV4cHJlc3Npb24uaGFzT3ZlcmxvYWRzKCkpOwog
ICAgIGF1dG8qIGZ1bmN0aW9uID0gcmVzb2x2ZUZ1bmN0aW9uT3ZlcmxvYWRJbXBsKCpjYWxsRXhw
cmVzc2lvbi5vdmVybG9hZHMoKSwgdHlwZXMsIGNhbGxFeHByZXNzaW9uLmNhc3RSZXR1cm5UeXBl
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hM
U0xHYXRoZXJFbnRyeVBvaW50SXRlbXMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xHYXRoZXJFbnRyeVBvaW50SXRlbXMuY3BwCmluZGV4IDQ1YTYyYTZkMjg4
ZTNiZTdkMmZjMzM1MDg1NTE3ODdjMjBkMzE5N2QuLmEzMmFmNWVmMzZmMjVjMzNhMzI1MWE2OTVl
ZGVjYWFlOTc3NzVjNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML1dITFNMR2F0aGVyRW50cnlQb2ludEl0ZW1zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEdhdGhlckVudHJ5UG9pbnRJdGVtcy5jcHAKQEAg
LTExNiw2ICsxMTYsNyBAQCBwdWJsaWM6CiAgICAgICAgIGF1dG8gZGVwdGggPSBtX3R5cGVSZWZl
cmVuY2VzLnNpemUoKTsKICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KCp0eXBlUmVmZXJlbmNl
LnJlc29sdmVkVHlwZSgpKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChkZXB0aCwgbV90eXBlUmVm
ZXJlbmNlcy5zaXplKCkgPT0gZGVwdGgpOworICAgICAgICBtX3R5cGVSZWZlcmVuY2VzLnJlbW92
ZUxhc3QoKTsKICAgICB9CiAKICAgICB2b2lkIHZpc2l0KEFTVDo6UG9pbnRlclR5cGUmIHBvaW50
ZXJUeXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
V0hMU0xJbmZlclR5cGVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L1dITFNMSW5mZXJUeXBlcy5jcHAKaW5kZXggMGEyYzllYjA5NDEyYjI1MzhkZGQ1ZDIzOGVkNTA1
YzFiYWM4NjBmMy4uY2Y4YzJiM2RmZjQzM2M5NjM4MmNkNTI1MThmNGY2NGZjY2JmNGY0ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xJbmZlclR5
cGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTElu
ZmVyVHlwZXMuY3BwCkBAIC0yMjgsMTMgKzIyOCwxMyBAQCBib29sIGluZmVyVHlwZXNGb3JDYWxs
KEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiYgcG9zc2libGVGdW5jdGlvbiwgVmVjdG9yPHN0ZDo6
cgogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcG9zc2libGVGdW5jdGlvbi5wYXJhbWV0ZXJz
KCkuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgYXV0byBzdWNjZXNzID0gV1RGOjp2aXNpdChXVEY6
Om1ha2VWaXNpdG9yKFsmXShVbmlxdWVSZWY8QVNUOjpVbm5hbWVkVHlwZT4mIHVubmFtZWRUeXBl
KSAtPiBib29sIHsKICAgICAgICAgICAgIHJldHVybiBtYXRjaGVzKCpwb3NzaWJsZUZ1bmN0aW9u
LnBhcmFtZXRlcnMoKVtpXS50eXBlKCksIHVubmFtZWRUeXBlKTsKLSAgICAgICAgfSwgWyZdKFJl
ZjxSZXNvbHZhYmxlVHlwZVJlZmVyZW5jZT4mIHJlc29sdmFibGVUeXBlUmVmZXJlbmNlKSAtPiBi
b29sIHsKLSAgICAgICAgICAgIHJldHVybiByZXNvbHZhYmxlVHlwZVJlZmVyZW5jZS0+cmVzb2x2
YWJsZVR5cGUoKS5jYW5SZXNvbHZlKCpwb3NzaWJsZUZ1bmN0aW9uLnBhcmFtZXRlcnMoKVtpXS50
eXBlKCkpOwotICAgICAgICB9KSwgYXJndW1lbnRUeXBlc1tpXS5nZXQoKSk7CisgICAgICAgIH0s
IFsmXShSZWZQdHI8UmVzb2x2YWJsZVR5cGVSZWZlcmVuY2U+JiByZXNvbHZhYmxlVHlwZVJlZmVy
ZW5jZSkgLT4gYm9vbCB7CisgICAgICAgICAgICByZXR1cm4gcmVzb2x2YWJsZVR5cGVSZWZlcmVu
Y2UtPnJlc29sdmFibGVUeXBlKCkuY2FuUmVzb2x2ZShwb3NzaWJsZUZ1bmN0aW9uLnBhcmFtZXRl
cnMoKVtpXS50eXBlKCktPnVuaWZ5Tm9kZSgpKTsKKyAgICAgICAgfSksIGFyZ3VtZW50VHlwZXNb
aV0uZ2V0KCkudGhpbmd5KCkpOwogICAgICAgICBpZiAoIXN1Y2Nlc3MpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIGlmIChjYXN0UmV0dXJuVHlwZSAmJiAhbWF0Y2hlcyhj
YXN0UmV0dXJuVHlwZS0+Z2V0KCksIHBvc3NpYmxlRnVuY3Rpb24udHlwZSgpKSkKKyAgICBpZiAo
Y2FzdFJldHVyblR5cGUgJiYgIW1hdGNoZXMocG9zc2libGVGdW5jdGlvbi50eXBlKCksIGNhc3RS
ZXR1cm5UeXBlLT5nZXQoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dI
TFNMSW50cmluc2ljcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9X
SExTTEludHJpbnNpY3MuY3BwCmluZGV4IDhiYmE2YjYzMDJjNjYwZTM5OGEyMWY5N2ZlYTYzNTkx
OTQ0N2IwZjMuLmU2N2Y4MTRjZDRiN2IxZThhZjUwOTM0N2M0ZjQwZGIzMGQ0NjEzYTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMSW50cmluc2lj
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xJbnRy
aW5zaWNzLmNwcApAQCAtMzU3LDcgKzM1Nyw3IEBAIGJvb2wgSW50cmluc2ljczo6YWRkRnVsbFRl
eHR1cmUoQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24mIG5hdGl2ZVR5cGVEZWNsYXJhdGlvCiAg
ICAgdW5zaWduZWQgdmVjdG9yTGVuZ3RoOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBX
VEZfQVJSQVlfTEVOR1RIKG1fdGV4dHVyZUlubmVyVHlwZU5hbWVzKTsgKytpKSB7CiAgICAgICAg
IGlmIChpbm5lclR5cGUubmFtZSgpLnN0YXJ0c1dpdGgobV90ZXh0dXJlSW5uZXJUeXBlTmFtZXNb
aV0pKSB7Ci0gICAgICAgICAgICB0ZXh0dXJlVHlwZUluZGV4ID0gaTsKKyAgICAgICAgICAgIGlu
bmVyVHlwZUluZGV4ID0gaTsKICAgICAgICAgICAgIGlmIChpbm5lclR5cGUubmFtZSgpID09IG1f
dGV4dHVyZUlubmVyVHlwZU5hbWVzW2ldKQogICAgICAgICAgICAgICAgIHZlY3Rvckxlbmd0aCA9
IDE7CiAgICAgICAgICAgICBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML1dITFNMSW50cmluc2ljcy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvV0hMU0xJbnRyaW5zaWNzLmgKaW5kZXggZmM0N2QzMjkzNTQwZGY2Y2Nh
NTM2NjMxZDRjOWZiZDJlY2U4OTc5Zi4uZDIzYmY5Nzg3ZDgwYjk5OGM3OTM5NTFlYzc1MGYxYTc5
MWU5MmY0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
V0hMU0xJbnRyaW5zaWNzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvV0hMU0xJbnRyaW5zaWNzLmgKQEAgLTU4LDEwICs1OCwxNiBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiAqbV9ib29sVHlwZTsKICAgICB9CiAKLSAgICBBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJh
dGlvbiYgaW50VHlwZSgpIGNvbnN0CisgICAgQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24mIHVj
aGFyVHlwZSgpIGNvbnN0CiAgICAgewotICAgICAgICBBU1NFUlQobV9pbnRUeXBlKTsKLSAgICAg
ICAgcmV0dXJuICptX2ludFR5cGU7CisgICAgICAgIEFTU0VSVChtX3VjaGFyVHlwZSk7CisgICAg
ICAgIHJldHVybiAqbV91Y2hhclR5cGU7CisgICAgfQorCisgICAgQVNUOjpOYXRpdmVUeXBlRGVj
bGFyYXRpb24mIHVzaG9ydFR5cGUoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdXNo
b3J0VHlwZSk7CisgICAgICAgIHJldHVybiAqbV91c2hvcnRUeXBlOwogICAgIH0KIAogICAgIEFT
VDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uJiB1aW50VHlwZSgpIGNvbnN0CkBAIC03MCw2ICs3Niw5
NiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAqbV91aW50VHlwZTsKICAgICB9CiAKKyAgICBB
U1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYgY2hhclR5cGUoKSBjb25zdAorICAgIHsKKyAgICAg
ICAgQVNTRVJUKG1fY2hhclR5cGUpOworICAgICAgICByZXR1cm4gKm1fY2hhclR5cGU7CisgICAg
fQorCisgICAgQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24mIHNob3J0VHlwZSgpIGNvbnN0Cisg
ICAgeworICAgICAgICBBU1NFUlQobV9zaG9ydFR5cGUpOworICAgICAgICByZXR1cm4gKm1fc2hv
cnRUeXBlOworICAgIH0KKworICAgIEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uJiBpbnRUeXBl
KCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChtX2ludFR5cGUpOworICAgICAgICByZXR1
cm4gKm1faW50VHlwZTsKKyAgICB9CisKKyAgICBBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYg
dWNoYXIyVHlwZSgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQobV92ZWN0b3JVY2hhclsw
XSk7CisgICAgICAgIHJldHVybiAqbV92ZWN0b3JVY2hhclswXTsKKyAgICB9CisKKyAgICBBU1Q6
Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYgdWNoYXI0VHlwZSgpIGNvbnN0CisgICAgeworICAgICAg
ICBBU1NFUlQobV92ZWN0b3JVY2hhclsyXSk7CisgICAgICAgIHJldHVybiAqbV92ZWN0b3JVY2hh
clsyXTsKKyAgICB9CisKKyAgICBBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYgdXNob3J0MlR5
cGUoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdmVjdG9yVXNob3J0WzBdKTsKKyAg
ICAgICAgcmV0dXJuICptX3ZlY3RvclVzaG9ydFswXTsKKyAgICB9CisKKyAgICBBU1Q6Ok5hdGl2
ZVR5cGVEZWNsYXJhdGlvbiYgdXNob3J0NFR5cGUoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNT
RVJUKG1fdmVjdG9yVXNob3J0WzJdKTsKKyAgICAgICAgcmV0dXJuICptX3ZlY3RvclVzaG9ydFsy
XTsKKyAgICB9CisKKyAgICBBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYgdWludDJUeXBlKCkg
Y29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3ZlY3RvclVpbnRbMF0pOworICAgICAgICBy
ZXR1cm4gKm1fdmVjdG9yVWludFswXTsKKyAgICB9CisKKyAgICBBU1Q6Ok5hdGl2ZVR5cGVEZWNs
YXJhdGlvbiYgdWludDRUeXBlKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3ZlY3Rv
clVpbnRbMl0pOworICAgICAgICByZXR1cm4gKm1fdmVjdG9yVWludFsyXTsKKyAgICB9CisKKyAg
ICBBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYgY2hhcjJUeXBlKCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIEFTU0VSVChtX3ZlY3RvckNoYXJbMF0pOworICAgICAgICByZXR1cm4gKm1fdmVjdG9y
Q2hhclswXTsKKyAgICB9CisKKyAgICBBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYgY2hhcjRU
eXBlKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3ZlY3RvckNoYXJbMl0pOworICAg
ICAgICByZXR1cm4gKm1fdmVjdG9yQ2hhclsyXTsKKyAgICB9CisKKyAgICBBU1Q6Ok5hdGl2ZVR5
cGVEZWNsYXJhdGlvbiYgc2hvcnQyVHlwZSgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQo
bV92ZWN0b3JTaG9ydFswXSk7CisgICAgICAgIHJldHVybiAqbV92ZWN0b3JTaG9ydFswXTsKKyAg
ICB9CisKKyAgICBBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYgc2hvcnQ0VHlwZSgpIGNvbnN0
CisgICAgeworICAgICAgICBBU1NFUlQobV92ZWN0b3JTaG9ydFsyXSk7CisgICAgICAgIHJldHVy
biAqbV92ZWN0b3JTaG9ydFsyXTsKKyAgICB9CisKKyAgICBBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJh
dGlvbiYgaW50MlR5cGUoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdmVjdG9ySW50
WzBdKTsKKyAgICAgICAgcmV0dXJuICptX3ZlY3RvckludFswXTsKKyAgICB9CisKKyAgICBBU1Q6
Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYgaW50NFR5cGUoKSBjb25zdAorICAgIHsKKyAgICAgICAg
QVNTRVJUKG1fdmVjdG9ySW50WzJdKTsKKyAgICAgICAgcmV0dXJuICptX3ZlY3RvckludFsyXTsK
KyAgICB9CisKICAgICBBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYgc2FtcGxlclR5cGUoKSBj
b25zdAogICAgIHsKICAgICAgICAgQVNTRVJUKG1fc2FtcGxlclR5cGUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xMZXhlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTExleGVyLmNwcAppbmRleCA5NjRi
YzQxMTY2OTY4ZGQ1ZWY2YWYwOGI1ZmZmNTAzNjAxYThjYTk3Li5iNWJkYTE2ZjIzNzc3YTExZTI4
NDIzZDZhYzMzYWExM2VjN2MxNmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9XSExTTExleGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9XSExTTExleGVyLmNwcApAQCAtMzI1LDcgKzMyNSw3IEBAIGF1dG8gTGV4
ZXI6OnJlY29nbml6ZUtleXdvcmQodW5zaWduZWQgZW5kKSAtPiBPcHRpb25hbDxUb2tlbjo6VHlw
ZT4KICAgICAgICAgcmV0dXJuIFRva2VuOjpUeXBlOjpTVlNhbXBsZUluZGV4OwogICAgIGlmIChz
dWJzdHJpbmcgPT0gIlNWX0lubmVyQ292ZXJhZ2UiKQogICAgICAgICByZXR1cm4gVG9rZW46OlR5
cGU6OlNWSW5uZXJDb3ZlcmFnZTsKLSAgICBpZiAoc3Vic3RyaW5nID09ICJTVl9UYXJnZXQiKQor
ICAgIGlmIChzdWJzdHJpbmcgPT0gIlNWX1RhcmdldCIpIC8vIEZJWE1FOiBNYWtlIHRoaXMgd29y
ayB3aXRoIHN0cmluZ3MgbGlrZSAiU1ZfVGFyZ2V0MCIuCiAgICAgICAgIHJldHVybiBUb2tlbjo6
VHlwZTo6U1ZUYXJnZXQ7CiAgICAgaWYgKHN1YnN0cmluZyA9PSAiU1ZfRGVwdGgiKQogICAgICAg
ICByZXR1cm4gVG9rZW46OlR5cGU6OlNWRGVwdGg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTE5hbWVDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTmFtZUNvbnRleHQuY3BwCmluZGV4IDM4MjE0
YTRkNmEwOTQwZjlhOWZiNTEwNzI4MGYzZjkxZWIyMTZiZGMuLjE5OTAyMTNhM2I3MjZhMzAzM2Qw
MTdhNjEzMWFmNGE2ZGI2NjVhZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML1dITFNMTmFtZUNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTmFtZUNvbnRleHQuY3BwCkBAIC0xMTAsNiArMTEwLDgg
QEAgYm9vbCBOYW1lQ29udGV4dDo6YWRkKEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uJiBuYXRp
dmVUeXBlRGVjbGFyYXRpb24pCiAKIGJvb2wgTmFtZUNvbnRleHQ6OmFkZChBU1Q6OlZhcmlhYmxl
RGVjbGFyYXRpb24mIHZhcmlhYmxlRGVjbGFyYXRpb24pCiB7CisgICAgaWYgKHZhcmlhYmxlRGVj
bGFyYXRpb24ubmFtZSgpLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBpZiAo
ZXhpc3RzKHZhcmlhYmxlRGVjbGFyYXRpb24ubmFtZSgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIGF1dG8gcmVzdWx0ID0gbV92YXJpYWJsZXMuYWRkKFN0cmluZyh2YXJpYWJsZURlY2xh
cmF0aW9uLm5hbWUoKSksICZ2YXJpYWJsZURlY2xhcmF0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTmFtZVJlc29sdmVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTmFtZVJlc29sdmVyLmNwcApp
bmRleCA5YzQxOTMxNDBjMTA2YTYwZWIwNTA4YjhjZjljODVkNWUzYmNlYmY3Li4wNTM1MGUwZGM5
ODVlY2IzOTBmNTg2ZjBhMzRkMmE2ZWNmZWRjYTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTE5hbWVSZXNvbHZlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xOYW1lUmVzb2x2ZXIuY3BwCkBAIC00
MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAiV0hMU0xQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24uaCIK
ICNpbmNsdWRlICJXSExTTFJlc29sdmVPdmVybG9hZEltcGwuaCIKICNpbmNsdWRlICJXSExTTFJl
dHVybi5oIgorI2luY2x1ZGUgIldITFNMU2NvcGVkU2V0QWRkZXIuaCIKICNpbmNsdWRlICJXSExT
TFR5cGVSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJXSExTTFZhcmlhYmxlRGVjbGFyYXRpb24uaCIK
ICNpbmNsdWRlICJXSExTTFZhcmlhYmxlUmVmZXJlbmNlLmgiCkBAIC01Nyw3ICs1OCwxMyBAQCBO
YW1lUmVzb2x2ZXI6Ok5hbWVSZXNvbHZlcihOYW1lQ29udGV4dCYgbmFtZUNvbnRleHQpCiAKIHZv
aWQgTmFtZVJlc29sdmVyOjp2aXNpdChBU1Q6OlR5cGVSZWZlcmVuY2UmIHR5cGVSZWZlcmVuY2Up
CiB7Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KHR5cGVSZWZlcmVuY2UpOworICAgIFNjb3BlZFNl
dEFkZGVyPEFTVDo6VHlwZVJlZmVyZW5jZSo+IGFkZGVyKG1fdHlwZVJlZmVyZW5jZXMsICZ0eXBl
UmVmZXJlbmNlKTsKKyAgICBpZiAoIWFkZGVyLmlzTmV3RW50cnkoKSkgeworICAgICAgICBzZXRF
cnJvcigpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgVmlzaXRvcjo6dmlzaXQodHlw
ZVJlZmVyZW5jZSk7CiAgICAgaWYgKHR5cGVSZWZlcmVuY2UucmVzb2x2ZWRUeXBlKCkpCiAgICAg
ICAgIHJldHVybjsKIApAQCAtNjYsNiArNzMsOCBAQCB2b2lkIE5hbWVSZXNvbHZlcjo6dmlzaXQo
QVNUOjpUeXBlUmVmZXJlbmNlJiB0eXBlUmVmZXJlbmNlKQogICAgICAgICBzZXRFcnJvcigpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQorICAgIGZvciAoYXV0byYgY2FuZGlkYXRlIDogKmNhbmRp
ZGF0ZXMpCisgICAgICAgIFZpc2l0b3I6OnZpc2l0KGNhbmRpZGF0ZSk7CiAgICAgaWYgKGF1dG8g
cmVzdWx0ID0gcmVzb2x2ZVR5cGVPdmVybG9hZEltcGwoKmNhbmRpZGF0ZXMsIHR5cGVSZWZlcmVu
Y2UudHlwZUFyZ3VtZW50cygpKSkKICAgICAgICAgdHlwZVJlZmVyZW5jZS5zZXRSZXNvbHZlZFR5
cGUoKnJlc3VsdCk7CiAgICAgZWxzZSB7CkBAIC03OCwzMiArODcsMzMgQEAgdm9pZCBOYW1lUmVz
b2x2ZXI6OnZpc2l0KEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uJiBmdW5jdGlvbkRlZmluaXRpb24p
CiB7CiAgICAgTmFtZUNvbnRleHQgbmV3TmFtZUNvbnRleHQoJm1fbmFtZUNvbnRleHQpOwogICAg
IE5hbWVSZXNvbHZlciBuZXdOYW1lUmVzb2x2ZXIobmV3TmFtZUNvbnRleHQpOworICAgIG5ld05h
bWVSZXNvbHZlci5zZXRDdXJyZW50RnVuY3Rpb25EZWZpbml0aW9uKG1fY3VycmVudEZ1bmN0aW9u
KTsKICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZnVuY3Rpb25EZWZpbml0aW9uLnR5cGUoKSk7Ci0g
ICAgZm9yIChhdXRvJiBwYXJhbWV0ZXIgOiBmdW5jdGlvbkRlZmluaXRpb24ucGFyYW1ldGVycygp
KSB7CisgICAgZm9yIChhdXRvJiBwYXJhbWV0ZXIgOiBmdW5jdGlvbkRlZmluaXRpb24ucGFyYW1l
dGVycygpKQogICAgICAgICBuZXdOYW1lUmVzb2x2ZXIuY2hlY2tFcnJvckFuZFZpc2l0KHBhcmFt
ZXRlcik7Ci0gICAgICAgIGF1dG8gc3VjY2VzcyA9IG5ld05hbWVDb250ZXh0LmFkZChwYXJhbWV0
ZXIpOwotICAgICAgICBpZiAoIXN1Y2Nlc3MpIHsKLSAgICAgICAgICAgIHNldEVycm9yKCk7Ci0g
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9CiAgICAgbmV3TmFtZVJlc29sdmVy
LmNoZWNrRXJyb3JBbmRWaXNpdChmdW5jdGlvbkRlZmluaXRpb24uYmxvY2soKSk7CiB9CiAKIHZv
aWQgTmFtZVJlc29sdmVyOjp2aXNpdChBU1Q6OkJsb2NrJiBibG9jaykKIHsKICAgICBOYW1lQ29u
dGV4dCBuYW1lQ29udGV4dCgmbV9uYW1lQ29udGV4dCk7Ci0gICAgTmFtZVJlc29sdmVyKG5hbWVD
b250ZXh0KS5jaGVja0Vycm9yQW5kVmlzaXQoYmxvY2spOworICAgIE5hbWVSZXNvbHZlciBuZXdO
YW1lUmVzb2x2ZXIobmFtZUNvbnRleHQpOworICAgIG5ld05hbWVSZXNvbHZlci5zZXRDdXJyZW50
RnVuY3Rpb25EZWZpbml0aW9uKG1fY3VycmVudEZ1bmN0aW9uKTsKKyAgICBuZXdOYW1lUmVzb2x2
ZXIuVmlzaXRvcjo6dmlzaXQoYmxvY2spOwogfQogCiB2b2lkIE5hbWVSZXNvbHZlcjo6dmlzaXQo
QVNUOjpJZlN0YXRlbWVudCYgaWZTdGF0ZW1lbnQpCiB7CiAgICAgY2hlY2tFcnJvckFuZFZpc2l0
KGlmU3RhdGVtZW50LmNvbmRpdGlvbmFsKCkpOwogICAgIE5hbWVDb250ZXh0IG5hbWVDb250ZXh0
KCZtX25hbWVDb250ZXh0KTsKLSAgICBOYW1lUmVzb2x2ZXIobmFtZUNvbnRleHQpLmNoZWNrRXJy
b3JBbmRWaXNpdChpZlN0YXRlbWVudC5ib2R5KCkpOworICAgIE5hbWVSZXNvbHZlciBuZXdOYW1l
UmVzb2x2ZXIobmFtZUNvbnRleHQpOworICAgIG5ld05hbWVSZXNvbHZlci5zZXRDdXJyZW50RnVu
Y3Rpb25EZWZpbml0aW9uKG1fY3VycmVudEZ1bmN0aW9uKTsKKyAgICBuZXdOYW1lUmVzb2x2ZXIu
Y2hlY2tFcnJvckFuZFZpc2l0KGlmU3RhdGVtZW50LmJvZHkoKSk7CiAgICAgaWYgKGlmU3RhdGVt
ZW50LmVsc2VCb2R5KCkpIHsKICAgICAgICAgTmFtZUNvbnRleHQgbmFtZUNvbnRleHQoJm1fbmFt
ZUNvbnRleHQpOwotICAgICAgICBOYW1lUmVzb2x2ZXIobmFtZUNvbnRleHQpLmNoZWNrRXJyb3JB
bmRWaXNpdCgqaWZTdGF0ZW1lbnQuZWxzZUJvZHkoKSk7CisgICAgICAgIE5hbWVSZXNvbHZlciBu
ZXdOYW1lUmVzb2x2ZXIobmFtZUNvbnRleHQpOworICAgICAgICBuZXdOYW1lUmVzb2x2ZXIuc2V0
Q3VycmVudEZ1bmN0aW9uRGVmaW5pdGlvbihtX2N1cnJlbnRGdW5jdGlvbik7CisgICAgICAgIG5l
d05hbWVSZXNvbHZlci5jaGVja0Vycm9yQW5kVmlzaXQoKmlmU3RhdGVtZW50LmVsc2VCb2R5KCkp
OwogICAgIH0KIH0KIApAQCAtMTExLDI2ICsxMjEsMzUgQEAgdm9pZCBOYW1lUmVzb2x2ZXI6OnZp
c2l0KEFTVDo6V2hpbGVMb29wJiB3aGlsZUxvb3ApCiB7CiAgICAgY2hlY2tFcnJvckFuZFZpc2l0
KHdoaWxlTG9vcC5jb25kaXRpb25hbCgpKTsKICAgICBOYW1lQ29udGV4dCBuYW1lQ29udGV4dCgm
bV9uYW1lQ29udGV4dCk7Ci0gICAgTmFtZVJlc29sdmVyKG5hbWVDb250ZXh0KS5jaGVja0Vycm9y
QW5kVmlzaXQod2hpbGVMb29wLmJvZHkoKSk7CisgICAgTmFtZVJlc29sdmVyIG5ld05hbWVSZXNv
bHZlcihuYW1lQ29udGV4dCk7CisgICAgbmV3TmFtZVJlc29sdmVyLnNldEN1cnJlbnRGdW5jdGlv
bkRlZmluaXRpb24obV9jdXJyZW50RnVuY3Rpb24pOworICAgIG5ld05hbWVSZXNvbHZlci5jaGVj
a0Vycm9yQW5kVmlzaXQod2hpbGVMb29wLmJvZHkoKSk7CiB9CiAKIHZvaWQgTmFtZVJlc29sdmVy
Ojp2aXNpdChBU1Q6OkRvV2hpbGVMb29wJiB3aGlsZUxvb3ApCiB7CiAgICAgTmFtZUNvbnRleHQg
bmFtZUNvbnRleHQoJm1fbmFtZUNvbnRleHQpOwotICAgIE5hbWVSZXNvbHZlcihuYW1lQ29udGV4
dCkuY2hlY2tFcnJvckFuZFZpc2l0KHdoaWxlTG9vcC5ib2R5KCkpOworICAgIE5hbWVSZXNvbHZl
ciBuZXdOYW1lUmVzb2x2ZXIobmFtZUNvbnRleHQpOworICAgIG5ld05hbWVSZXNvbHZlci5zZXRD
dXJyZW50RnVuY3Rpb25EZWZpbml0aW9uKG1fY3VycmVudEZ1bmN0aW9uKTsKKyAgICBuZXdOYW1l
UmVzb2x2ZXIuY2hlY2tFcnJvckFuZFZpc2l0KHdoaWxlTG9vcC5ib2R5KCkpOwogICAgIGNoZWNr
RXJyb3JBbmRWaXNpdCh3aGlsZUxvb3AuY29uZGl0aW9uYWwoKSk7CiB9CiAKIHZvaWQgTmFtZVJl
c29sdmVyOjp2aXNpdChBU1Q6OkZvckxvb3AmIGZvckxvb3ApCiB7CiAgICAgTmFtZUNvbnRleHQg
bmFtZUNvbnRleHQoJm1fbmFtZUNvbnRleHQpOwotICAgIE5hbWVSZXNvbHZlcihuYW1lQ29udGV4
dCkuY2hlY2tFcnJvckFuZFZpc2l0KGZvckxvb3ApOworICAgIE5hbWVSZXNvbHZlciBuZXdOYW1l
UmVzb2x2ZXIobmFtZUNvbnRleHQpOworICAgIG5ld05hbWVSZXNvbHZlci5zZXRDdXJyZW50RnVu
Y3Rpb25EZWZpbml0aW9uKG1fY3VycmVudEZ1bmN0aW9uKTsKKyAgICBuZXdOYW1lUmVzb2x2ZXIu
VmlzaXRvcjo6dmlzaXQoZm9yTG9vcCk7CiB9CiAKIHZvaWQgTmFtZVJlc29sdmVyOjp2aXNpdChB
U1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24mIHZhcmlhYmxlRGVjbGFyYXRpb24pCiB7Ci0gICAgbV9u
YW1lQ29udGV4dC5hZGQodmFyaWFibGVEZWNsYXJhdGlvbik7Ci0gICAgY2hlY2tFcnJvckFuZFZp
c2l0KHZhcmlhYmxlRGVjbGFyYXRpb24pOworICAgIGlmICghbV9uYW1lQ29udGV4dC5hZGQodmFy
aWFibGVEZWNsYXJhdGlvbikpIHsKKyAgICAgICAgc2V0RXJyb3IoKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKyAgICBWaXNpdG9yOjp2aXNpdCh2YXJpYWJsZURlY2xhcmF0aW9uKTsKIH0KIAog
dm9pZCBOYW1lUmVzb2x2ZXI6OnZpc2l0KEFTVDo6VmFyaWFibGVSZWZlcmVuY2UmIHZhcmlhYmxl
UmVmZXJlbmNlKQpAQCAtMTUwLDcgKzE2OSw3IEBAIHZvaWQgTmFtZVJlc29sdmVyOjp2aXNpdChB
U1Q6OlJldHVybiYgcmV0dXJuU3RhdGVtZW50KQogewogICAgIEFTU0VSVChtX2N1cnJlbnRGdW5j
dGlvbik7CiAgICAgcmV0dXJuU3RhdGVtZW50LnNldEZ1bmN0aW9uKG1fY3VycmVudEZ1bmN0aW9u
KTsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQocmV0dXJuU3RhdGVtZW50KTsKKyAgICBWaXNpdG9y
Ojp2aXNpdChyZXR1cm5TdGF0ZW1lbnQpOwogfQogCiB2b2lkIE5hbWVSZXNvbHZlcjo6dmlzaXQo
QVNUOjpQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24mIHByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbikK
QEAgLTE2MSw3ICsxODAsNyBAQCB2b2lkIE5hbWVSZXNvbHZlcjo6dmlzaXQoQVNUOjpQcm9wZXJ0
eUFjY2Vzc0V4cHJlc3Npb24mIHByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbgogICAgICAgICBwcm9w
ZXJ0eUFjY2Vzc0V4cHJlc3Npb24uc2V0UG9zc2libGVTZXRPdmVybG9hZHMoKnNldEZ1bmN0aW9u
cyk7CiAgICAgaWYgKGF1dG8qIGFuZEZ1bmN0aW9ucyA9IG1fbmFtZUNvbnRleHQuZ2V0RnVuY3Rp
b25zKHByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbi5hbmRGdW5jdGlvbk5hbWUoKSkpCiAgICAgICAg
IHByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbi5zZXRQb3NzaWJsZUFuZE92ZXJsb2FkcygqYW5kRnVu
Y3Rpb25zKTsKLSAgICBjaGVja0Vycm9yQW5kVmlzaXQocHJvcGVydHlBY2Nlc3NFeHByZXNzaW9u
KTsKKyAgICBWaXNpdG9yOjp2aXNpdChwcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24pOwogfQogCiB2
b2lkIE5hbWVSZXNvbHZlcjo6dmlzaXQoQVNUOjpEb3RFeHByZXNzaW9uJiBkb3RFeHByZXNzaW9u
KQpAQCAtMTg5LDcgKzIwOCw3IEBAIHZvaWQgTmFtZVJlc29sdmVyOjp2aXNpdChBU1Q6OkRvdEV4
cHJlc3Npb24mIGRvdEV4cHJlc3Npb24pCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBjaGVja0Vy
cm9yQW5kVmlzaXQoZG90RXhwcmVzc2lvbik7CisgICAgVmlzaXRvcjo6dmlzaXQoZG90RXhwcmVz
c2lvbik7CiB9CiAKIHZvaWQgTmFtZVJlc29sdmVyOjp2aXNpdChBU1Q6OkNhbGxFeHByZXNzaW9u
JiBjYWxsRXhwcmVzc2lvbikKQEAgLTIxMiw3ICsyMzEsNyBAQCB2b2lkIE5hbWVSZXNvbHZlcjo6
dmlzaXQoQVNUOjpDYWxsRXhwcmVzc2lvbiYgY2FsbEV4cHJlc3Npb24pCiAgICAgICAgIHNldEVy
cm9yKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgY2hlY2tFcnJvckFuZFZpc2l0KGNh
bGxFeHByZXNzaW9uKTsKKyAgICBWaXNpdG9yOjp2aXNpdChjYWxsRXhwcmVzc2lvbik7CiB9CiAK
IHZvaWQgTmFtZVJlc29sdmVyOjp2aXNpdChBU1Q6OkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCYg
ZW51bWVyYXRpb25NZW1iZXJMaXRlcmFsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvV0hMU0xOYW1lUmVzb2x2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTmFtZVJlc29sdmVyLmgKaW5kZXggNTMwYjM5ZmUxMjdl
NmJiMDNkNjEzOTNhN2E5NTU0MjNmZTUxMTNiNC4uMDhmMGY2NWI3ZDEwYWI1MTZkY2I5OGQyYzc3
MWU0NDVmNjIwNmUwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvV0hMU0xOYW1lUmVzb2x2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9XSExTTE5hbWVSZXNvbHZlci5oCkBAIC02NCw3ICs2NCw4IEBAIHByaXZhdGU6
CiAgICAgdm9pZCB2aXNpdChBU1Q6OkNhbGxFeHByZXNzaW9uJikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCB2aXNpdChBU1Q6OkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCYpIG92ZXJyaWRlOwogCi0gICAg
TmFtZUNvbnRleHQgbV9uYW1lQ29udGV4dDsKKyAgICBOYW1lQ29udGV4dCYgbV9uYW1lQ29udGV4
dDsKKyAgICBIYXNoU2V0PEFTVDo6VHlwZVJlZmVyZW5jZSo+IG1fdHlwZVJlZmVyZW5jZXM7CiAg
ICAgQVNUOjpGdW5jdGlvbkRlZmluaXRpb24qIG1fY3VycmVudEZ1bmN0aW9uIHsgbnVsbHB0ciB9
OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
V0hMU0xQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hM
U0xQYXJzZXIuY3BwCmluZGV4IGJhYTZjYWZhZGFlODdhZWQwNGUwZjk5ZWJhMzUzYTM1OTQzMDQ5
Y2IuLmFlNDY4OTk3ZWI4OGU1YTdmNDlkMWNjMGVjNjVmYTk4MjZjZDVkMTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUGFyc2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBhcnNlci5jcHAKQEAg
LTEyOSwxMCArMTI5LDEyIEBAIGF1dG8gUGFyc2VyOjpwYXJzZShQcm9ncmFtJiBwcm9ncmFtLCBT
dHJpbmdWaWV3IHN0cmluZ1ZpZXcsIE1vZGUgbW9kZSkgLT4gT3B0aW9uCiAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKIH0KIAotYXV0byBQYXJzZXI6OmZhaWwoY29uc3QgU3RyaW5nJiBtZXNzYWdl
KSAtPiBVbmV4cGVjdGVkPEVycm9yPgorYXV0byBQYXJzZXI6OmZhaWwoY29uc3QgU3RyaW5nJiBt
ZXNzYWdlLCBib29sIGluUGVlaykgLT4gVW5leHBlY3RlZDxFcnJvcj4KIHsKLSAgICBpZiAoYXV0
byBuZXh0VG9rZW4gPSBwZWVrKCkpCi0gICAgICAgIHJldHVybiBVbmV4cGVjdGVkPEVycm9yPihF
cnJvcihtX2xleGVyLmVycm9yU3RyaW5nKCpuZXh0VG9rZW4sIG1lc3NhZ2UpKSk7CisgICAgaWYg
KCFpblBlZWspIHsKKyAgICAgICAgaWYgKGF1dG8gbmV4dFRva2VuID0gcGVlaygpKQorICAgICAg
ICAgICAgcmV0dXJuIFVuZXhwZWN0ZWQ8RXJyb3I+KEVycm9yKG1fbGV4ZXIuZXJyb3JTdHJpbmco
Km5leHRUb2tlbiwgbWVzc2FnZSkpKTsKKyAgICB9CiAgICAgcmV0dXJuIFVuZXhwZWN0ZWQ8RXJy
b3I+KEVycm9yKG1ha2VTdHJpbmcoIkNhbm5vdCBsZXg6ICIsIG1lc3NhZ2UpKSk7CiB9CiAKQEAg
LTE0Miw3ICsxNDQsNyBAQCBhdXRvIFBhcnNlcjo6cGVlaygpIC0+IEV4cGVjdGVkPExleGVyOjpU
b2tlbiwgRXJyb3I+CiAgICAgICAgIG1fbGV4ZXIudW5jb25zdW1lVG9rZW4oTGV4ZXI6OlRva2Vu
KCp0b2tlbikpOwogICAgICAgICByZXR1cm4gKnRva2VuOwogICAgIH0KLSAgICByZXR1cm4gZmFp
bCgiQ2Fubm90IGNvbnN1bWUgdG9rZW4iX3N0cik7CisgICAgcmV0dXJuIGZhaWwoIkNhbm5vdCBj
b25zdW1lIHRva2VuIl9zdHIsIHRydWUpOwogfQogCiBPcHRpb25hbDxMZXhlcjo6VG9rZW4+IFBh
cnNlcjo6dHJ5VHlwZShMZXhlcjo6VG9rZW46OlR5cGUgdHlwZSkKQEAgLTU4MiwxMyArNTg0LDE1
IEBAIGF1dG8gUGFyc2VyOjpwYXJzZU5vbkFkZHJlc3NTcGFjZVR5cGUoKSAtPiBFeHBlY3RlZDxV
bmlxdWVSZWY8QVNUOjpVbm5hbWVkVHlwZT4sCiAKIGF1dG8gUGFyc2VyOjpwYXJzZVR5cGUoKSAt
PiBFeHBlY3RlZDxVbmlxdWVSZWY8QVNUOjpVbm5hbWVkVHlwZT4sIEVycm9yPgogewotICAgIGF1
dG8gdHlwZSA9IGJhY2t0cmFja2luZ1Njb3BlPEV4cGVjdGVkPFVuaXF1ZVJlZjxBU1Q6OlVubmFt
ZWRUeXBlPiwgRXJyb3I+PihbJl0oKSB7Ci0gICAgICAgIHJldHVybiBwYXJzZUFkZHJlc3NTcGFj
ZVR5cGUoKTsKLSAgICB9KTsKLSAgICBpZiAodHlwZSkKLSAgICAgICAgcmV0dXJuIHR5cGU7Cisg
ICAgeworICAgICAgICBhdXRvIHR5cGUgPSBiYWNrdHJhY2tpbmdTY29wZTxFeHBlY3RlZDxVbmlx
dWVSZWY8QVNUOjpVbm5hbWVkVHlwZT4sIEVycm9yPj4oWyZdKCkgeworICAgICAgICAgICAgcmV0
dXJuIHBhcnNlQWRkcmVzc1NwYWNlVHlwZSgpOworICAgICAgICB9KTsKKyAgICAgICAgaWYgKHR5
cGUpCisgICAgICAgICAgICByZXR1cm4gdHlwZTsKKyAgICB9CiAKLSAgICB0eXBlID0gYmFja3Ry
YWNraW5nU2NvcGU8RXhwZWN0ZWQ8VW5pcXVlUmVmPEFTVDo6VW5uYW1lZFR5cGU+LCBFcnJvcj4+
KFsmXSgpIHsKKyAgICBhdXRvIHR5cGUgPSBiYWNrdHJhY2tpbmdTY29wZTxFeHBlY3RlZDxVbmlx
dWVSZWY8QVNUOjpVbm5hbWVkVHlwZT4sIEVycm9yPj4oWyZdKCkgewogICAgICAgICByZXR1cm4g
cGFyc2VOb25BZGRyZXNzU3BhY2VUeXBlKCk7CiAgICAgfSk7CiAgICAgaWYgKHR5cGUpCkBAIC02
NTMsNyArNjU3LDcgQEAgYXV0byBQYXJzZXI6OnBhcnNlQnVpbHRJblNlbWFudGljKCkgLT4gRXhw
ZWN0ZWQ8QVNUOjpCdWlsdEluU2VtYW50aWMsIEVycm9yPgogICAgIGNhc2UgTGV4ZXI6OlRva2Vu
OjpUeXBlOjpTVklubmVyQ292ZXJhZ2U6CiAgICAgICAgIHJldHVybiBBU1Q6OkJ1aWx0SW5TZW1h
bnRpYyhXVEZNb3ZlKCpvcmlnaW4pLCBBU1Q6OkJ1aWx0SW5TZW1hbnRpYzo6VmFyaWFibGU6OlNW
SW5uZXJDb3ZlcmFnZSk7CiAgICAgY2FzZSBMZXhlcjo6VG9rZW46OlR5cGU6OlNWVGFyZ2V0OiB7
Ci0gICAgICAgIGF1dG8gdGFyZ2V0ID0gY29uc3VtZU5vbk5lZ2F0aXZlSW50ZWdyYWxMaXRlcmFs
KCk7CisgICAgICAgIGF1dG8gdGFyZ2V0ID0gY29uc3VtZU5vbk5lZ2F0aXZlSW50ZWdyYWxMaXRl
cmFsKCk7IC8vIEZJWE1FOiBNYWtlIHRoaXMgd29yayB3aXRoIHN0cmluZ3MgbGlrZSAiU1ZfVGFy
Z2V0MCIuCiAgICAgICAgIGlmICghdGFyZ2V0KQogICAgICAgICAgICAgcmV0dXJuIFVuZXhwZWN0
ZWQ8RXJyb3I+KHRhcmdldC5lcnJvcigpKTsKICAgICAgICAgcmV0dXJuIEFTVDo6QnVpbHRJblNl
bWFudGljKFdURk1vdmUoKm9yaWdpbiksIEFTVDo6QnVpbHRJblNlbWFudGljOjpWYXJpYWJsZTo6
U1ZUYXJnZXQsICp0YXJnZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvV0hMU0xQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML1dITFNMUGFyc2VyLmgKaW5kZXggZDM3YzUwZDUxZTFmOWIxYmMwMWIxYjFiMmUxNjA2
NzZiNGE1YmRkMS4uOWJmZDYzZjM0MmI4NTkzZmYzZGE0YjVmYmQ0YzM2MDlmMWM4MzIzOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQYXJzZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBhcnNlci5o
CkBAIC0xMzAsNyArMTMwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAg
ICB9CiAKLSAgICBVbmV4cGVjdGVkPEVycm9yPiBmYWlsKGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7
CisgICAgVW5leHBlY3RlZDxFcnJvcj4gZmFpbChjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGJvb2wg
aW5QZWVrID0gZmFsc2UpOwogICAgIEV4cGVjdGVkPExleGVyOjpUb2tlbiwgRXJyb3I+IHBlZWso
KTsKICAgICBPcHRpb25hbDxMZXhlcjo6VG9rZW4+IHRyeVR5cGUoTGV4ZXI6OlRva2VuOjpUeXBl
KTsKICAgICBPcHRpb25hbDxMZXhlcjo6VG9rZW4+IHRyeVR5cGVzKFZlY3RvcjxMZXhlcjo6VG9r
ZW46OlR5cGU+KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML1dITFNMUGlwZWxpbmVEZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9XSExTTFBpcGVsaW5lRGVzY3JpcHRvci5oCmluZGV4IDBmMjg2OTJjMTg0YmJm
NmEwNjFmYzc5NDI1MjUyNDUwOTIxMjJhYjYuLjVjNGMwYjViYjkyMWIwNmJiNWNjZDcwNjVmYzVi
NmI0MDgyNzZkMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML1dITFNMUGlwZWxpbmVEZXNjcmlwdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvV0hMU0xQaXBlbGluZURlc2NyaXB0b3IuaApAQCAtNTAsMTAgKzUwLDUw
IEBAIHN0cnVjdCBWZXJ0ZXhBdHRyaWJ1dGUgewogdXNpbmcgVmVydGV4QXR0cmlidXRlcyA9IFZl
Y3RvcjxWZXJ0ZXhBdHRyaWJ1dGU+OwogCiBlbnVtIGNsYXNzIFRleHR1cmVGb3JtYXQgewotICAg
IFI4RzhCOEE4VW5vcm0sCi0gICAgUjhHOEI4QThVaW50LAotICAgIEI4RzhSOEE4VW5vcm0sCi0g
ICAgRDMyRmxvYXRTOFVpbnQKKyAgICBSOFVub3JtLAorICAgIFI4VW5vcm1TcmdiLAorICAgIFI4
U25vcm0sCisgICAgUjhVaW50LAorICAgIFI4U2ludCwKKyAgICBSMTZVbm9ybSwKKyAgICBSMTZT
bm9ybSwKKyAgICBSMTZVaW50LAorICAgIFIxNlNpbnQsCisgICAgUjE2RmxvYXQsCisgICAgUkc4
VW5vcm0sCisgICAgUkc4VW5vcm1TcmdiLAorICAgIFJHOFNub3JtLAorICAgIFJHOFVpbnQsCisg
ICAgUkc4U2ludCwKKyAgICBCNUc2UjVVbm9ybSwKKyAgICBSMzJVaW50LAorICAgIFIzMlNpbnQs
CisgICAgUjMyRmxvYXQsCisgICAgUkcxNlVub3JtLAorICAgIFJHMTZTbm9ybSwKKyAgICBSRzE2
VWludCwKKyAgICBSRzE2U2ludCwKKyAgICBSRzE2RmxvYXQsCisgICAgUkdCQThVbm9ybSwKKyAg
ICBSR0JBOFVub3JtU3JnYiwKKyAgICBSR0JBOFNub3JtLAorICAgIFJHQkE4VWludCwKKyAgICBS
R0JBOFNpbnQsCisgICAgQkdSQThVbm9ybSwKKyAgICBCR1JBOFVub3JtU3JnYiwKKyAgICBSR0Ix
MEEyVW5vcm0sCisgICAgUkcxMUIxMEZsb2F0LAorICAgIFJHMzJVaW50LAorICAgIFJHMzJTaW50
LAorICAgIFJHMzJGbG9hdCwKKyAgICBSR0JBMTZVbm9ybSwKKyAgICBSR0JBMTZTbm9ybSwKKyAg
ICBSR0JBMTZVaW50LAorICAgIFJHQkExNlNpbnQsCisgICAgUkdCQTE2RmxvYXQsCisgICAgUkdC
QTMyVWludCwKKyAgICBSR0JBMzJTaW50LAorICAgIFJHQkEzMkZsb2F0CiB9OwogCiBzdHJ1Y3Qg
QXR0YWNobWVudERlc2NyaXB0b3IgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvV0hMU0xQcmVwYXJlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML1dITFNMUHJlcGFyZS5jcHAKaW5kZXggZGNiOTRiZTZjZWE1ZjczZTBkZjc0
MjQ3NzNlYjZkOGNmMjE3Y2Q5Yy4uYmUzMTYyYjFlYWRhMTUyODAxOGM0MzFkODQ5MDE5YWFlYmFk
NmZiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hM
U0xQcmVwYXJlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9X
SExTTFByZXBhcmUuY3BwCkBAIC02NiwxMSArNjYsMTYgQEAgc3RhdGljIE9wdGlvbmFsPFByb2dy
YW0+IHByZXBhcmVTaGFyZWQoU3RyaW5nJiB3aGxzbFNvdXJjZSkKICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKICAgICBpZiAoIWNoZWNrUmVjdXJzaXZlVHlwZXMocHJvZ3JhbSkpCiAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgc3ludGhlc2l6ZVN0cnVjdHVyZUFjY2Vzc29y
cyhwcm9ncmFtKTsKLSAgICBzeW50aGVzaXplRW51bWVyYXRpb25GdW5jdGlvbnMocHJvZ3JhbSk7
Ci0gICAgc3ludGhlc2l6ZUFycmF5T3BlcmF0b3JMZW5ndGgocHJvZ3JhbSk7Ci0gICAgc3ludGhl
c2l6ZUNvbnN0cnVjdG9ycyhwcm9ncmFtKTsKLSAgICByZXNvbHZlTmFtZXNJbkZ1bmN0aW9ucyhw
cm9ncmFtLCBuYW1lUmVzb2x2ZXIpOworICAgIGlmICghc3ludGhlc2l6ZVN0cnVjdHVyZUFjY2Vz
c29ycyhwcm9ncmFtKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIXN5
bnRoZXNpemVFbnVtZXJhdGlvbkZ1bmN0aW9ucyhwcm9ncmFtKSkKKyAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICBpZiAoIXN5bnRoZXNpemVBcnJheU9wZXJhdG9yTGVuZ3RoKHByb2dy
YW0pKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghc3ludGhlc2l6ZUNv
bnN0cnVjdG9ycyhwcm9ncmFtKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBp
ZiAoIXJlc29sdmVOYW1lc0luRnVuY3Rpb25zKHByb2dyYW0sIG5hbWVSZXNvbHZlcikpCisgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgaWYgKCFjaGVja0R1cGxpY2F0ZUZ1bmN0aW9u
cyhwcm9ncmFtKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIApAQCAtMTAxLDggKzEw
Niw4IEBAIE9wdGlvbmFsPFJlbmRlclByZXBhcmVSZXN1bHQ+IHByZXBhcmUoU3RyaW5nJiB3aGxz
bFNvdXJjZSwgUmVuZGVyUGlwZWxpbmVEZXNjcmlwCiAKICAgICBSZW5kZXJQcmVwYXJlUmVzdWx0
IHJlc3VsdDsKICAgICByZXN1bHQubWV0YWxTb3VyY2UgPSBXVEZNb3ZlKGdlbmVyYXRlZENvZGUu
bWV0YWxTb3VyY2UpOwotICAgIHJlc3VsdC52ZXJ0ZXhNYXBwZWRCaW5kR3JvdXBzID0gV1RGTW92
ZShnZW5lcmF0ZWRDb2RlLnZlcnRleE1hcHBlZEJpbmRHcm91cHMpOwotICAgIHJlc3VsdC5mcmFn
bWVudE1hcHBlZEJpbmRHcm91cHMgPSBXVEZNb3ZlKGdlbmVyYXRlZENvZGUuZnJhZ21lbnRNYXBw
ZWRCaW5kR3JvdXBzKTsKKyAgICByZXN1bHQubWFuZ2xlZFZlcnRleEVudHJ5UG9pbnROYW1lID0g
V1RGTW92ZShnZW5lcmF0ZWRDb2RlLm1hbmdsZWRWZXJ0ZXhFbnRyeVBvaW50TmFtZSk7CisgICAg
cmVzdWx0Lm1hbmdsZWRGcmFnbWVudEVudHJ5UG9pbnROYW1lID0gV1RGTW92ZShnZW5lcmF0ZWRD
b2RlLm1hbmdsZWRGcmFnbWVudEVudHJ5UG9pbnROYW1lKTsKICAgICByZXR1cm4gcmVzdWx0Owog
fQogCkBAIC0xMTksNyArMTI0LDcgQEAgT3B0aW9uYWw8Q29tcHV0ZVByZXBhcmVSZXN1bHQ+IHBy
ZXBhcmUoU3RyaW5nJiB3aGxzbFNvdXJjZSwgQ29tcHV0ZVBpcGVsaW5lRGVzY3IKIAogICAgIENv
bXB1dGVQcmVwYXJlUmVzdWx0IHJlc3VsdDsKICAgICByZXN1bHQubWV0YWxTb3VyY2UgPSBXVEZN
b3ZlKGdlbmVyYXRlZENvZGUubWV0YWxTb3VyY2UpOwotICAgIHJlc3VsdC5tYXBwZWRCaW5kR3Jv
dXBzID0gV1RGTW92ZShnZW5lcmF0ZWRDb2RlLmJpbmRHcm91cHMpOworICAgIHJlc3VsdC5tYW5n
bGVkRW50cnlQb2ludE5hbWUgPSBXVEZNb3ZlKGdlbmVyYXRlZENvZGUubWFuZ2xlZEVudHJ5UG9p
bnROYW1lKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFByZXBhcmUuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJlcGFyZS5oCmluZGV4IDA2M2I5NzQ1NzJlNjVh
MTg0NWZlNzE0NWEwMWM1MjNiYzQ1MmY2YzIuLjk3NDkwYTZlMmZhNDFhZDM0ZDM1YzU2YzQ2Yzcy
ZDQyN2Y5OTE3YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML1dITFNMUHJlcGFyZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML1dITFNMUHJlcGFyZS5oCkBAIC0yNyw3ICsyNyw2IEBACiAKICNpZiBFTkFCTEUoV0VCR1BV
KQogCi0jaW5jbHVkZSAiV0hMU0xNYXBwZWRCaW5kaW5ncy5oIgogI2luY2x1ZGUgIldITFNMUGlw
ZWxpbmVEZXNjcmlwdG9yLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAg
LTM4LDE0ICszNywxNCBAQCBuYW1lc3BhY2UgV0hMU0wgewogLy8gRklYTUU6IEdlbmVyYXRlIGRl
c2NyaXB0aXZlIGVycm9yIG1lc3NhZ2VzIGFuZCByZXR1cm4gdGhlbSBoZXJlLgogc3RydWN0IFJl
bmRlclByZXBhcmVSZXN1bHQgewogICAgIFN0cmluZyBtZXRhbFNvdXJjZTsKLSAgICBNZXRhbDo6
TWFwcGVkQmluZEdyb3VwcyB2ZXJ0ZXhNYXBwZWRCaW5kR3JvdXBzOwotICAgIE1ldGFsOjpNYXBw
ZWRCaW5kR3JvdXBzIGZyYWdtZW50TWFwcGVkQmluZEdyb3VwczsKKyAgICBTdHJpbmcgbWFuZ2xl
ZFZlcnRleEVudHJ5UG9pbnROYW1lOworICAgIFN0cmluZyBtYW5nbGVkRnJhZ21lbnRFbnRyeVBv
aW50TmFtZTsKIH07CiBPcHRpb25hbDxSZW5kZXJQcmVwYXJlUmVzdWx0PiBwcmVwYXJlKFN0cmlu
ZyYgd2hsc2xTb3VyY2UsIFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciYpOwogCiBzdHJ1Y3QgQ29t
cHV0ZVByZXBhcmVSZXN1bHQgewogICAgIFN0cmluZyBtZXRhbFNvdXJjZTsKLSAgICBNZXRhbDo6
TWFwcGVkQmluZEdyb3VwcyBtYXBwZWRCaW5kR3JvdXBzOworICAgIFN0cmluZyBtYW5nbGVkRW50
cnlQb2ludE5hbWU7CiB9OwogT3B0aW9uYWw8Q29tcHV0ZVByZXBhcmVSZXN1bHQ+IHByZXBhcmUo
U3RyaW5nJiB3aGxzbFNvdXJjZSwgQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciYpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFJlY3Vyc2l2
ZVR5cGVDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dI
TFNMUmVjdXJzaXZlVHlwZUNoZWNrZXIuY3BwCmluZGV4IDJhNmJiYTYxNWE5YTBiN2Q5YWI1YmI2
YzQ1ZjdiNzk4OTk1ZWY2ZTMuLmQ1YTdiMGQxNjllNzRmYmYxZTdiYTdhMTRjNzNlNDIyNDk5M2Fj
YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNM
UmVjdXJzaXZlVHlwZUNoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML1dITFNMUmVjdXJzaXZlVHlwZUNoZWNrZXIuY3BwCkBAIC0yOCw2ICsyOCw3IEBA
CiAKICNpZiBFTkFCTEUoV0VCR1BVKQogCisjaW5jbHVkZSAiV0hMU0xTY29wZWRTZXRBZGRlci5o
IgogI2luY2x1ZGUgIldITFNMU3RydWN0dXJlRGVmaW5pdGlvbi5oIgogI2luY2x1ZGUgIldITFNM
VHlwZURlZmluaXRpb24uaCIKICNpbmNsdWRlICJXSExTTFR5cGVSZWZlcmVuY2UuaCIKQEAgLTQy
LDYzICs0Myw2MSBAQCBjbGFzcyBSZWN1cnNpdmVUeXBlQ2hlY2tlciA6IHB1YmxpYyBWaXNpdG9y
IHsKIHB1YmxpYzoKICAgICB+UmVjdXJzaXZlVHlwZUNoZWNrZXIoKSA9IGRlZmF1bHQ7CiAKLSAg
ICB2b2lkIHZpc2l0KEFTVDo6VHlwZURlZmluaXRpb24mIHR5cGVEZWZpbml0aW9uKSBvdmVycmlk
ZQotICAgIHsKLSAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3R5cGVzLmFkZCgmdHlwZURlZmlu
aXRpb24pOwotICAgICAgICBpZiAoIWFkZFJlc3VsdC5pc05ld0VudHJ5KSB7Ci0gICAgICAgICAg
ICBzZXRFcnJvcigpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CisgICAgdm9pZCB2
aXNpdChBU1Q6OlR5cGVEZWZpbml0aW9uJikgb3ZlcnJpZGU7CisgICAgdm9pZCB2aXNpdChBU1Q6
OlN0cnVjdHVyZURlZmluaXRpb24mKSBvdmVycmlkZTsKKyAgICB2b2lkIHZpc2l0KEFTVDo6VHlw
ZVJlZmVyZW5jZSYpIG92ZXJyaWRlOworICAgIHZvaWQgdmlzaXQoQVNUOjpSZWZlcmVuY2VUeXBl
Jikgb3ZlcnJpZGU7CiAKLSAgICAgICAgVmlzaXRvcjo6dmlzaXQodHlwZURlZmluaXRpb24pOwor
cHJpdmF0ZToKKyAgICB1c2luZyBBZGRlciA9IFNjb3BlZFNldEFkZGVyPEFTVDo6VHlwZSo+Owor
ICAgIEhhc2hTZXQ8QVNUOjpUeXBlKj4gbV90eXBlczsKK307CiAKLSAgICAgICAgYXV0byBzdWNj
ZXNzID0gbV90eXBlcy5yZW1vdmUoJnR5cGVEZWZpbml0aW9uKTsKLSAgICAgICAgQVNTRVJUX1VO
VVNFRChzdWNjZXNzLCBzdWNjZXNzKTsKK3ZvaWQgUmVjdXJzaXZlVHlwZUNoZWNrZXI6OnZpc2l0
KEFTVDo6VHlwZURlZmluaXRpb24mIHR5cGVEZWZpbml0aW9uKQoreworICAgIEFkZGVyIGFkZGVy
KG1fdHlwZXMsICZ0eXBlRGVmaW5pdGlvbik7CisgICAgaWYgKCFhZGRlci5pc05ld0VudHJ5KCkp
IHsKKyAgICAgICAgc2V0RXJyb3IoKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHZv
aWQgdmlzaXQoQVNUOjpTdHJ1Y3R1cmVEZWZpbml0aW9uJiBzdHJ1Y3R1cmVEZWZpbml0aW9uKSBv
dmVycmlkZQotICAgIHsKLSAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3R5cGVzLmFkZCgmc3Ry
dWN0dXJlRGVmaW5pdGlvbik7Ci0gICAgICAgIGlmICghYWRkUmVzdWx0LmlzTmV3RW50cnkpIHsK
LSAgICAgICAgICAgIHNldEVycm9yKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0K
LQotICAgICAgICBWaXNpdG9yOjp2aXNpdChzdHJ1Y3R1cmVEZWZpbml0aW9uKTsKKyAgICBWaXNp
dG9yOjp2aXNpdCh0eXBlRGVmaW5pdGlvbik7Cit9CiAKLSAgICAgICAgYXV0byBzdWNjZXNzID0g
bV90eXBlcy5yZW1vdmUoJnN0cnVjdHVyZURlZmluaXRpb24pOwotICAgICAgICBBU1NFUlRfVU5V
U0VEKHN1Y2Nlc3MsIHN1Y2Nlc3MpOwordm9pZCBSZWN1cnNpdmVUeXBlQ2hlY2tlcjo6dmlzaXQo
QVNUOjpTdHJ1Y3R1cmVEZWZpbml0aW9uJiBzdHJ1Y3R1cmVEZWZpbml0aW9uKQoreworICAgIEFk
ZGVyIGFkZGVyKG1fdHlwZXMsICZzdHJ1Y3R1cmVEZWZpbml0aW9uKTsKKyAgICBpZiAoIWFkZGVy
LmlzTmV3RW50cnkoKSkgeworICAgICAgICBzZXRFcnJvcigpOworICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgdm9pZCB2aXNpdChBU1Q6OlR5cGVSZWZlcmVuY2UmIHR5cGVSZWZlcmVuY2Up
IG92ZXJyaWRlCi0gICAgewotICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fdHlwZXMuYWRkKCZ0
eXBlUmVmZXJlbmNlKTsKLSAgICAgICAgaWYgKCFhZGRSZXN1bHQuaXNOZXdFbnRyeSkgewotICAg
ICAgICAgICAgc2V0RXJyb3IoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0g
ICAgICAgIGZvciAoYXV0byYgdHlwZUFyZ3VtZW50IDogdHlwZVJlZmVyZW5jZS50eXBlQXJndW1l
bnRzKCkpCi0gICAgICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQodHlwZUFyZ3VtZW50KTsKLSAg
ICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KCp0eXBlUmVmZXJlbmNlLnJlc29sdmVkVHlwZSgpKTsK
KyAgICBWaXNpdG9yOjp2aXNpdChzdHJ1Y3R1cmVEZWZpbml0aW9uKTsKK30KIAotICAgICAgICBh
dXRvIHN1Y2Nlc3MgPSBtX3R5cGVzLnJlbW92ZSgmdHlwZVJlZmVyZW5jZSk7Ci0gICAgICAgIEFT
U0VSVF9VTlVTRUQoc3VjY2Vzcywgc3VjY2Vzcyk7Cit2b2lkIFJlY3Vyc2l2ZVR5cGVDaGVja2Vy
Ojp2aXNpdChBU1Q6OlR5cGVSZWZlcmVuY2UmIHR5cGVSZWZlcmVuY2UpCit7CisgICAgQWRkZXIg
YWRkZXIobV90eXBlcywgJnR5cGVSZWZlcmVuY2UpOworICAgIGlmICghYWRkZXIuaXNOZXdFbnRy
eSgpKSB7CisgICAgICAgIHNldEVycm9yKCk7CisgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICB2b2lkIHZpc2l0KEFTVDo6UmVmZXJlbmNlVHlwZSYpIG92ZXJyaWRlCi0gICAgewotICAgIH0K
KyAgICBmb3IgKGF1dG8mIHR5cGVBcmd1bWVudCA6IHR5cGVSZWZlcmVuY2UudHlwZUFyZ3VtZW50
cygpKQorICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQodHlwZUFyZ3VtZW50KTsKKyAgICBpZiAo
dHlwZVJlZmVyZW5jZS5yZXNvbHZlZFR5cGUoKSkKKyAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0
KCp0eXBlUmVmZXJlbmNlLnJlc29sdmVkVHlwZSgpKTsKK30KIAotcHJpdmF0ZToKLSAgICBIYXNo
U2V0PEFTVDo6VHlwZSo+IG1fdHlwZXM7Ci19Owordm9pZCBSZWN1cnNpdmVUeXBlQ2hlY2tlcjo6
dmlzaXQoQVNUOjpSZWZlcmVuY2VUeXBlJikKK3sKK30KIAogYm9vbCBjaGVja1JlY3Vyc2l2ZVR5
cGVzKFByb2dyYW0mIHByb2dyYW0pCiB7CiAgICAgUmVjdXJzaXZlVHlwZUNoZWNrZXIgcmVjdXJz
aXZlVHlwZUNoZWNrZXI7CiAgICAgcmVjdXJzaXZlVHlwZUNoZWNrZXIuY2hlY2tFcnJvckFuZFZp
c2l0KHByb2dyYW0pOwotICAgIHJldHVybiByZWN1cnNpdmVUeXBlQ2hlY2tlci5lcnJvcigpOwor
ICAgIHJldHVybiAhcmVjdXJzaXZlVHlwZUNoZWNrZXIuZXJyb3IoKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV0hMU0wKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML1dITFNMUmVzb2x2ZU92ZXJsb2FkSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9XSExTTFJlc29sdmVPdmVybG9hZEltcGwuY3BwCmluZGV4IDYxYTQyNTFh
NjI0ODk3MDNkMWEzZmE1YWQ2ZDgwNDNmMjI4ZTllNmQuLmU2YmQ1ZTI1NjA3N2E2YjYwMmU2NDhk
N2U4YTg0ZTA3Y2VmNmRjMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML1dITFNMUmVzb2x2ZU92ZXJsb2FkSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xSZXNvbHZlT3ZlcmxvYWRJbXBsLmNwcApAQCAt
NDMsOSArNDMsOSBAQCBzdGF0aWMgdW5zaWduZWQgY29udmVyc2lvbkNvc3QoQVNUOjpGdW5jdGlv
bkRlY2xhcmF0aW9uJiBjYW5kaWRhdGUsIGNvbnN0IFZlY3RvcgogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgY2FuZGlkYXRlLnBhcmFtZXRlcnMoKS5zaXplKCk7ICsraSkgewogICAgICAgICBj
b252ZXJzaW9uQ29zdCArPSBXVEY6OnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoWyZdKFVuaXF1ZVJl
ZjxBU1Q6OlVubmFtZWRUeXBlPiYpIC0+IHVuc2lnbmVkIHsKICAgICAgICAgICAgIHJldHVybiAw
OwotICAgICAgICB9LCBbJl0oUmVmPFJlc29sdmFibGVUeXBlUmVmZXJlbmNlPiYgcmVzb2x2YWJs
ZVR5cGVSZWZlcmVuY2UpIC0+IHVuc2lnbmVkIHsKKyAgICAgICAgfSwgWyZdKFJlZlB0cjxSZXNv
bHZhYmxlVHlwZVJlZmVyZW5jZT4mIHJlc29sdmFibGVUeXBlUmVmZXJlbmNlKSAtPiB1bnNpZ25l
ZCB7CiAgICAgICAgICAgICByZXR1cm4gcmVzb2x2YWJsZVR5cGVSZWZlcmVuY2UtPnJlc29sdmFi
bGVUeXBlKCkuY29udmVyc2lvbkNvc3QoKmNhbmRpZGF0ZS5wYXJhbWV0ZXJzKClbaV0udHlwZSgp
KTsKLSAgICAgICAgfSksIGFyZ3VtZW50VHlwZXNbaV0uZ2V0KCkpOworICAgICAgICB9KSwgYXJn
dW1lbnRUeXBlc1tpXS5nZXQoKS50aGluZ3koKSk7CiAgICAgfQogICAgIC8vIFRoZSByZXR1cm4g
dHlwZSBjYW4gbmV2ZXIgYmUgYSBsaXRlcmFsIHR5cGUsIHNvIGl0cyBjb252ZXJzaW9uIGNvc3Qg
aXMgYWx3YXlzIDAuCiAgICAgcmV0dXJuIGNvbnZlcnNpb25Db3N0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xSZXNvbHZpbmdUeXBlLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFJlc29sdmluZ1R5cGUuaApp
bmRleCA5N2MwZWJhZTgxZjgyYzQwZWZjYzllZjUzZjZmMTYzOTc5YzgyY2IwLi4zNDQ3M2E0ZThi
MzExODZlMThmNWRhN2M1OTBiNDNjODZhMTIzNzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFJlc29sdmluZ1R5cGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFJlc29sdmluZ1R5cGUuaApAQCAtMjcs
OSArMjcsOSBAQAogCiAjaWYgRU5BQkxFKFdFQkdQVSkKIAotI2luY2x1ZGUgPG1lbW9yeT4KLSNp
bmNsdWRlIDx3dGYvUmVmLmg+CisjaW5jbHVkZSAiV0hMU0xVbm5hbWVkVHlwZS5oIgogI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgogCkBAIC00MCw3ICs0
MCw2IEBAIG5hbWVzcGFjZSBXSExTTCB7CiBuYW1lc3BhY2UgQVNUIHsKIAogY2xhc3MgUmVzb2x2
YWJsZVR5cGU7Ci1jbGFzcyBVbm5hbWVkVHlwZTsKIAogfQogCkBAIC02MCw3ICs1OSw0MCBAQCBw
cml2YXRlOgogICAgIEFTVDo6UmVzb2x2YWJsZVR5cGUqIG1fcmVzb2x2YWJsZVR5cGU7CiB9Owog
Ci11c2luZyBSZXNvbHZpbmdUeXBlID0gVmFyaWFudDxVbmlxdWVSZWY8QVNUOjpVbm5hbWVkVHlw
ZT4sIFJlZjxSZXNvbHZhYmxlVHlwZVJlZmVyZW5jZT4+OworY2xhc3MgUmVzb2x2aW5nVHlwZSA6
IHByaXZhdGUgVmFyaWFudDxVbmlxdWVSZWY8QVNUOjpVbm5hbWVkVHlwZT4sIFJlZlB0cjxSZXNv
bHZhYmxlVHlwZVJlZmVyZW5jZT4+IHsKK3B1YmxpYzoKKyAgICBSZXNvbHZpbmdUeXBlKCkKKyAg
ICAgICAgOiBWYXJpYW50PFVuaXF1ZVJlZjxBU1Q6OlVubmFtZWRUeXBlPiwgUmVmUHRyPFJlc29s
dmFibGVUeXBlUmVmZXJlbmNlPj4oUmVmUHRyPFJlc29sdmFibGVUeXBlUmVmZXJlbmNlPigpKQor
ICAgIHsKKyAgICB9CisKKyAgICBSZXNvbHZpbmdUeXBlKFVuaXF1ZVJlZjxBU1Q6OlVubmFtZWRU
eXBlPiYmIHYpCisgICAgICAgIDogVmFyaWFudDxVbmlxdWVSZWY8QVNUOjpVbm5hbWVkVHlwZT4s
IFJlZlB0cjxSZXNvbHZhYmxlVHlwZVJlZmVyZW5jZT4+KFdURk1vdmUodikpCisgICAgeworICAg
IH0KKworICAgIFJlc29sdmluZ1R5cGUoUmVmUHRyPFJlc29sdmFibGVUeXBlUmVmZXJlbmNlPiYm
IHYpCisgICAgICAgIDogVmFyaWFudDxVbmlxdWVSZWY8QVNUOjpVbm5hbWVkVHlwZT4sIFJlZlB0
cjxSZXNvbHZhYmxlVHlwZVJlZmVyZW5jZT4+KFdURk1vdmUodikpCisgICAgeworICAgIH0KKwor
ICAgIFJlc29sdmluZ1R5cGUoY29uc3QgUmVzb2x2aW5nVHlwZSYpID0gZGVsZXRlOworICAgIFJl
c29sdmluZ1R5cGUoUmVzb2x2aW5nVHlwZSYmIG90aGVyKQorICAgICAgICA6IFZhcmlhbnQ8VW5p
cXVlUmVmPEFTVDo6VW5uYW1lZFR5cGU+LCBSZWZQdHI8UmVzb2x2YWJsZVR5cGVSZWZlcmVuY2U+
PihzdGF0aWNfY2FzdDxWYXJpYW50PFVuaXF1ZVJlZjxBU1Q6OlVubmFtZWRUeXBlPiwgUmVmUHRy
PFJlc29sdmFibGVUeXBlUmVmZXJlbmNlPj4mJj4ob3RoZXIpKQorICAgIHsKKyAgICB9CisKKyAg
ICBSZXNvbHZpbmdUeXBlJiBvcGVyYXRvcj0oY29uc3QgUmVzb2x2aW5nVHlwZSYpID0gZGVsZXRl
OworICAgIFJlc29sdmluZ1R5cGUmIG9wZXJhdG9yPShSZXNvbHZpbmdUeXBlJiYgb3RoZXIpCisg
ICAgeworICAgICAgICBzdGF0aWNfY2FzdDxWYXJpYW50PFVuaXF1ZVJlZjxBU1Q6OlVubmFtZWRU
eXBlPiwgUmVmUHRyPFJlc29sdmFibGVUeXBlUmVmZXJlbmNlPj4mPigqdGhpcykgPSBzdGF0aWNf
Y2FzdDxWYXJpYW50PFVuaXF1ZVJlZjxBU1Q6OlVubmFtZWRUeXBlPiwgUmVmUHRyPFJlc29sdmFi
bGVUeXBlUmVmZXJlbmNlPj4mJj4ob3RoZXIpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAg
fQorCisgICAgVmFyaWFudDxVbmlxdWVSZWY8QVNUOjpVbm5hbWVkVHlwZT4sIFJlZlB0cjxSZXNv
bHZhYmxlVHlwZVJlZmVyZW5jZT4+JiB0aGluZ3koKSB7IHJldHVybiAqdGhpczsgfSAvLyBGSVhN
RTogRml4IHRoaXMuCisKK3ByaXZhdGU6Cit9OwogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU2NvcGVkU2V0QWRkZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU2NvcGVkU2V0QWRkZXIuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi41YmM0NTBhYzkxMjhhNjk1Nzc0ZmU3OWVhNzQ4NTdlOWVmZDQxOGQwCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTY29w
ZWRTZXRBZGRlci5oCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK3RlbXBsYXRlPHR5cGVuYW1l
IFQ+IGNsYXNzIFNjb3BlZFNldEFkZGVyIHsKK3B1YmxpYzoKKyAgICBTY29wZWRTZXRBZGRlcihI
YXNoU2V0PFQ+JiBzZXQsIFQmJiBpdGVtKQorICAgICAgICA6IG1fc2V0KHNldCkKKyAgICAgICAg
LCBtX2l0ZW0oV1RGTW92ZShpdGVtKSkKKyAgICB7CisgICAgICAgIG1faXNOZXdFbnRyeSA9IHN0
YXRpY19jYXN0PGJvb2w+KG1fc2V0LmFkZChtX2l0ZW0pKTsKKyAgICB9CisKKyAgICB+U2NvcGVk
U2V0QWRkZXIoKQorICAgIHsKKyAgICAgICAgaWYgKCFtX2lzTmV3RW50cnkpCisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIGF1dG8gc3VjY2VzcyA9IG1fc2V0LnJlbW92ZShtX2l0ZW0pOwor
ICAgICAgICBBU1NFUlRfVU5VU0VEKHN1Y2Nlc3MsIHN1Y2Nlc3MpOworICAgIH0KKworICAgIGJv
b2wgaXNOZXdFbnRyeSgpIGNvbnN0IHsgcmV0dXJuIG1faXNOZXdFbnRyeTsgfQorCitwcml2YXRl
OgorICAgIEhhc2hTZXQ8VD4mIG1fc2V0OworICAgIFQgbV9pdGVtOworICAgIGJvb2wgbV9pc05l
d0VudHJ5OworfTsKKworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTZW1hbnRpY01hdGNoZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTZW1hbnRpY01hdGNoZXIuY3BwCmlu
ZGV4IDBiZGNjMGNlOGYxZGE1NzZjNWJmNzM0YjkzNmU2YzZhOTc5MzI5OGEuLmY2MTQ1Njc3NzYz
ZTkyMGZjODEwOGE1NmY1NGRhZmY1Nzc0YTM1YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU2VtYW50aWNNYXRjaGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFNlbWFudGljTWF0Y2hlci5jcHAK
QEAgLTE4OSwxNiArMTg5LDc4IEBAIHN0YXRpYyBib29sIGlzQWNjZXB0YWJsZUZvcm1hdChUZXh0
dXJlRm9ybWF0IHRleHR1cmVGb3JtYXQsIEFTVDo6VW5uYW1lZFR5cGUmIHVuCiB7CiAgICAgaWYg
KGlzQ29sb3IpIHsKICAgICAgICAgc3dpdGNoICh0ZXh0dXJlRm9ybWF0KSB7Ci0gICAgICAgIGNh
c2UgVGV4dHVyZUZvcm1hdDo6UjhHOEI4QThVbm9ybToKLSAgICAgICAgY2FzZSBUZXh0dXJlRm9y
bWF0OjpSOEc4QjhBOFVpbnQ6Ci0gICAgICAgIGNhc2UgVGV4dHVyZUZvcm1hdDo6QjhHOFI4QThV
bm9ybToKKyAgICAgICAgY2FzZSBUZXh0dXJlRm9ybWF0OjpSOFVub3JtOgorICAgICAgICBjYXNl
IFRleHR1cmVGb3JtYXQ6OlI4VW5vcm1TcmdiOgorICAgICAgICBjYXNlIFRleHR1cmVGb3JtYXQ6
OlI4U25vcm06CisgICAgICAgIGNhc2UgVGV4dHVyZUZvcm1hdDo6UjE2VW5vcm06CisgICAgICAg
IGNhc2UgVGV4dHVyZUZvcm1hdDo6UjE2U25vcm06CisgICAgICAgIGNhc2UgVGV4dHVyZUZvcm1h
dDo6UjE2RmxvYXQ6CisgICAgICAgIGNhc2UgVGV4dHVyZUZvcm1hdDo6UjMyRmxvYXQ6CisgICAg
ICAgICAgICByZXR1cm4gbWF0Y2hlcyh1bm5hbWVkVHlwZSwgaW50cmluc2ljcy5mbG9hdFR5cGUo
KSk7CisgICAgICAgIGNhc2UgVGV4dHVyZUZvcm1hdDo6Ukc4VW5vcm06CisgICAgICAgIGNhc2Ug
VGV4dHVyZUZvcm1hdDo6Ukc4VW5vcm1TcmdiOgorICAgICAgICBjYXNlIFRleHR1cmVGb3JtYXQ6
OlJHOFNub3JtOgorICAgICAgICBjYXNlIFRleHR1cmVGb3JtYXQ6OlJHMTZVbm9ybToKKyAgICAg
ICAgY2FzZSBUZXh0dXJlRm9ybWF0OjpSRzE2U25vcm06CisgICAgICAgIGNhc2UgVGV4dHVyZUZv
cm1hdDo6UkcxNkZsb2F0OgorICAgICAgICBjYXNlIFRleHR1cmVGb3JtYXQ6OlJHMzJGbG9hdDoK
KyAgICAgICAgICAgIHJldHVybiBtYXRjaGVzKHVubmFtZWRUeXBlLCBpbnRyaW5zaWNzLmZsb2F0
MlR5cGUoKSk7CisgICAgICAgIGNhc2UgVGV4dHVyZUZvcm1hdDo6QjVHNlI1VW5vcm06CisgICAg
ICAgIGNhc2UgVGV4dHVyZUZvcm1hdDo6UkcxMUIxMEZsb2F0OgorICAgICAgICAgICAgcmV0dXJu
IG1hdGNoZXModW5uYW1lZFR5cGUsIGludHJpbnNpY3MuZmxvYXQzVHlwZSgpKTsKKyAgICAgICAg
Y2FzZSBUZXh0dXJlRm9ybWF0OjpSR0JBOFVub3JtOgorICAgICAgICBjYXNlIFRleHR1cmVGb3Jt
YXQ6OlJHQkE4VW5vcm1TcmdiOgorICAgICAgICBjYXNlIFRleHR1cmVGb3JtYXQ6OkJHUkE4VW5v
cm06CisgICAgICAgIGNhc2UgVGV4dHVyZUZvcm1hdDo6QkdSQThVbm9ybVNyZ2I6CisgICAgICAg
IGNhc2UgVGV4dHVyZUZvcm1hdDo6UkdCQThTbm9ybToKKyAgICAgICAgY2FzZSBUZXh0dXJlRm9y
bWF0OjpSR0IxMEEyVW5vcm06CisgICAgICAgIGNhc2UgVGV4dHVyZUZvcm1hdDo6UkdCQTE2VW5v
cm06CisgICAgICAgIGNhc2UgVGV4dHVyZUZvcm1hdDo6UkdCQTE2U25vcm06CisgICAgICAgIGNh
c2UgVGV4dHVyZUZvcm1hdDo6UkdCQTE2RmxvYXQ6CisgICAgICAgIGNhc2UgVGV4dHVyZUZvcm1h
dDo6UkdCQTMyRmxvYXQ6CiAgICAgICAgICAgICByZXR1cm4gbWF0Y2hlcyh1bm5hbWVkVHlwZSwg
aW50cmluc2ljcy5mbG9hdDRUeXBlKCkpOworICAgICAgICBjYXNlIFRleHR1cmVGb3JtYXQ6OlI4
VWludDoKKyAgICAgICAgICAgIHJldHVybiBtYXRjaGVzKHVubmFtZWRUeXBlLCBpbnRyaW5zaWNz
LnVjaGFyVHlwZSgpKTsKKyAgICAgICAgY2FzZSBUZXh0dXJlRm9ybWF0OjpSOFNpbnQ6CisgICAg
ICAgICAgICByZXR1cm4gbWF0Y2hlcyh1bm5hbWVkVHlwZSwgaW50cmluc2ljcy5jaGFyVHlwZSgp
KTsKKyAgICAgICAgY2FzZSBUZXh0dXJlRm9ybWF0OjpSMTZVaW50OgorICAgICAgICAgICAgcmV0
dXJuIG1hdGNoZXModW5uYW1lZFR5cGUsIGludHJpbnNpY3MudXNob3J0VHlwZSgpKTsKKyAgICAg
ICAgY2FzZSBUZXh0dXJlRm9ybWF0OjpSMTZTaW50OgorICAgICAgICAgICAgcmV0dXJuIG1hdGNo
ZXModW5uYW1lZFR5cGUsIGludHJpbnNpY3Muc2hvcnRUeXBlKCkpOworICAgICAgICBjYXNlIFRl
eHR1cmVGb3JtYXQ6OlIzMlVpbnQ6CisgICAgICAgICAgICByZXR1cm4gbWF0Y2hlcyh1bm5hbWVk
VHlwZSwgaW50cmluc2ljcy51aW50VHlwZSgpKTsKKyAgICAgICAgY2FzZSBUZXh0dXJlRm9ybWF0
OjpSMzJTaW50OgorICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXModW5uYW1lZFR5cGUsIGludHJp
bnNpY3MuaW50VHlwZSgpKTsKKyAgICAgICAgY2FzZSBUZXh0dXJlRm9ybWF0OjpSRzhVaW50Ogor
ICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXModW5uYW1lZFR5cGUsIGludHJpbnNpY3MudWNoYXIy
VHlwZSgpKTsKKyAgICAgICAgY2FzZSBUZXh0dXJlRm9ybWF0OjpSRzhTaW50OgorICAgICAgICAg
ICAgcmV0dXJuIG1hdGNoZXModW5uYW1lZFR5cGUsIGludHJpbnNpY3MuY2hhcjJUeXBlKCkpOwor
ICAgICAgICBjYXNlIFRleHR1cmVGb3JtYXQ6OlJHMTZVaW50OgorICAgICAgICAgICAgcmV0dXJu
IG1hdGNoZXModW5uYW1lZFR5cGUsIGludHJpbnNpY3MudXNob3J0MlR5cGUoKSk7CisgICAgICAg
IGNhc2UgVGV4dHVyZUZvcm1hdDo6UkcxNlNpbnQ6CisgICAgICAgICAgICByZXR1cm4gbWF0Y2hl
cyh1bm5hbWVkVHlwZSwgaW50cmluc2ljcy5zaG9ydDJUeXBlKCkpOworICAgICAgICBjYXNlIFRl
eHR1cmVGb3JtYXQ6OlJHMzJVaW50OgorICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXModW5uYW1l
ZFR5cGUsIGludHJpbnNpY3MudWludDJUeXBlKCkpOworICAgICAgICBjYXNlIFRleHR1cmVGb3Jt
YXQ6OlJHMzJTaW50OgorICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXModW5uYW1lZFR5cGUsIGlu
dHJpbnNpY3MuaW50MlR5cGUoKSk7CisgICAgICAgIGNhc2UgVGV4dHVyZUZvcm1hdDo6UkdCQThV
aW50OgorICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXModW5uYW1lZFR5cGUsIGludHJpbnNpY3Mu
dWNoYXI0VHlwZSgpKTsKKyAgICAgICAgY2FzZSBUZXh0dXJlRm9ybWF0OjpSR0JBOFNpbnQ6Cisg
ICAgICAgICAgICByZXR1cm4gbWF0Y2hlcyh1bm5hbWVkVHlwZSwgaW50cmluc2ljcy5jaGFyNFR5
cGUoKSk7CisgICAgICAgIGNhc2UgVGV4dHVyZUZvcm1hdDo6UkdCQTE2VWludDoKKyAgICAgICAg
ICAgIHJldHVybiBtYXRjaGVzKHVubmFtZWRUeXBlLCBpbnRyaW5zaWNzLnVzaG9ydDRUeXBlKCkp
OworICAgICAgICBjYXNlIFRleHR1cmVGb3JtYXQ6OlJHQkExNlNpbnQ6CisgICAgICAgICAgICBy
ZXR1cm4gbWF0Y2hlcyh1bm5hbWVkVHlwZSwgaW50cmluc2ljcy5zaG9ydDRUeXBlKCkpOworICAg
ICAgICBjYXNlIFRleHR1cmVGb3JtYXQ6OlJHQkEzMlVpbnQ6CisgICAgICAgICAgICByZXR1cm4g
bWF0Y2hlcyh1bm5hbWVkVHlwZSwgaW50cmluc2ljcy51aW50NFR5cGUoKSk7CisgICAgICAgIGNh
c2UgVGV4dHVyZUZvcm1hdDo6UkdCQTMyU2ludDoKKyAgICAgICAgICAgIHJldHVybiBtYXRjaGVz
KHVubmFtZWRUeXBlLCBpbnRyaW5zaWNzLmludDRUeXBlKCkpOwogICAgICAgICBkZWZhdWx0Ogot
ICAgICAgICAgICAgQVNTRVJUKHRleHR1cmVGb3JtYXQgPT0gVGV4dHVyZUZvcm1hdDo6RDMyRmxv
YXRTOFVpbnQpOworICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICB9Ci0gICAgcmV0dXJuIHRleHR1cmVGb3Jt
YXQgPT0gVGV4dHVyZUZvcm1hdDo6RDMyRmxvYXRTOFVpbnQgJiYgbWF0Y2hlcyh1bm5hbWVkVHlw
ZSwgaW50cmluc2ljcy5mbG9hdFR5cGUoKSk7CisgICAgcmV0dXJuIGZhbHNlOwogfQogCiBzdGF0
aWMgT3B0aW9uYWw8SGFzaE1hcDxBdHRhY2htZW50RGVzY3JpcHRvciosIHNpemVfdD4+IG1hdGNo
Q29sb3JBdHRhY2htZW50cyhWZWN0b3I8RW50cnlQb2ludEl0ZW0+JiBmcmFnbWVudE91dHB1dHMs
IFZlY3RvcjxBdHRhY2htZW50RGVzY3JpcHRvcj4mIGF0dGFjaG1lbnREZXNjcmlwdG9ycywgSW50
cmluc2ljcyYgaW50cmluc2ljcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML1dITFNMU3RhbmRhcmRMaWJyYXJ5LnR4dCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3RhbmRhcmRMaWJyYXJ5LnR4dAppbmRleCA1NzA3NDdi
MjNiNDJlOWZlYzEyOTY1Yzc3ODY0ODE0OTBmN2VhNjc4Li42ZTZjN2IxN2I3YmQ5YjJlNmVkNWFm
YmRjYzE1NDViNmM3NmMzZmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9XSExTTFN0YW5kYXJkTGlicmFyeS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTdGFuZGFyZExpYnJhcnkudHh0CkBAIC00NjgsNCAr
NDY4LDI4IEBAIG5hdGl2ZSB0eXBlZGVmIFJXVGV4dHVyZURlcHRoMkRBcnJheTxoYWxmPjsKIG5h
dGl2ZSB0eXBlZGVmIFRleHR1cmVEZXB0aEN1YmU8ZmxvYXQ+OwogbmF0aXZlIHR5cGVkZWYgVGV4
dHVyZURlcHRoQ3ViZTxoYWxmPjsKIAorbmF0aXZlIGZsb2F0IG9wZXJhdG9yLngoZmxvYXQ0KTsK
K25hdGl2ZSBmbG9hdCBvcGVyYXRvci55KGZsb2F0NCk7CituYXRpdmUgZmxvYXQgb3BlcmF0b3Iu
eihmbG9hdDQpOworbmF0aXZlIGZsb2F0IG9wZXJhdG9yLncoZmxvYXQ0KTsKK25hdGl2ZSBmbG9h
dDQgb3BlcmF0b3IueD0oZmxvYXQ0LCBmbG9hdCk7CituYXRpdmUgZmxvYXQ0IG9wZXJhdG9yLnk9
KGZsb2F0NCwgZmxvYXQpOworbmF0aXZlIGZsb2F0NCBvcGVyYXRvci56PShmbG9hdDQsIGZsb2F0
KTsKK25hdGl2ZSBmbG9hdDQgb3BlcmF0b3Iudz0oZmxvYXQ0LCBmbG9hdCk7CisKK29wZXJhdG9y
IGZsb2F0NChmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6LCBmbG9hdCB3KSB7CisgICAgZmxvYXQ0
IHJlc3VsdDsKKyAgICByZXN1bHQueCA9IHg7CisgICAgcmVzdWx0LnkgPSB5OworICAgIHJlc3Vs
dC56ID0gejsKKyAgICByZXN1bHQudyA9IHc7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworbmF0
aXZlIGZsb2F0IGRkeChmbG9hdCk7CituYXRpdmUgZmxvYXQgZGR5KGZsb2F0KTsKK25hdGl2ZSB2
b2lkIEFsbE1lbW9yeUJhcnJpZXJXaXRoR3JvdXBTeW5jKCk7CituYXRpdmUgdm9pZCBEZXZpY2VN
ZW1vcnlCYXJyaWVyV2l0aEdyb3VwU3luYygpOworbmF0aXZlIHZvaWQgR3JvdXBNZW1vcnlCYXJy
aWVyV2l0aEdyb3VwU3luYygpOworCiAvLyBGSVhNRTogSW5zZXJ0IHRoZSByZXN0IG9mIHRoZSBz
dGFuZGFyZCBsaWJyYXJ5IG9uY2UgdGhlIHBhcnNlciBpcyBmYXN0IGVub3VnaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTeW50aGVzaXplQXJy
YXlPcGVyYXRvckxlbmd0aC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9XSExTTFN5bnRoZXNpemVBcnJheU9wZXJhdG9yTGVuZ3RoLmNwcAppbmRleCAzYmY2ZTg3YzVk
M2U0ZDZhMGMzMTkxYzY0MjQ0MTNlZGQ4ZDQwYTVlLi5hZTNjYTY0MjM5ZTNiNTlkMzZhYWFhZWVj
N2JhNDcxYmNiNjdjZWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9XSExTTFN5bnRoZXNpemVBcnJheU9wZXJhdG9yTGVuZ3RoLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN5bnRoZXNpemVBcnJheU9wZXJh
dG9yTGVuZ3RoLmNwcApAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB2aXNpdChB
U1Q6OkFycmF5VHlwZSYgYXJyYXlUeXBlKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgbV9hcnJh
eVR5cGVzLmFwcGVuZChhcnJheVR5cGUpOwotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoYXJy
YXlUeXBlKTsKKyAgICAgICAgVmlzaXRvcjo6dmlzaXQoYXJyYXlUeXBlKTsKICAgICB9CiAKICAg
ICBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxBU1Q6OkFycmF5VHlwZT4+JiYgdGFrZUFy
cmF5VHlwZXMoKQpAQCAtNTYsNyArNTYsNyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxzdGQ6OnJl
ZmVyZW5jZV93cmFwcGVyPEFTVDo6QXJyYXlUeXBlPj4gbV9hcnJheVR5cGVzOwogfTsKIAotdm9p
ZCBzeW50aGVzaXplQXJyYXlPcGVyYXRvckxlbmd0aChQcm9ncmFtJiBwcm9ncmFtKQorYm9vbCBz
eW50aGVzaXplQXJyYXlPcGVyYXRvckxlbmd0aChQcm9ncmFtJiBwcm9ncmFtKQogewogICAgIEZp
bmRBcnJheVR5cGVzIGZpbmRBcnJheVR5cGVzOwogICAgIGZpbmRBcnJheVR5cGVzLmNoZWNrRXJy
b3JBbmRWaXNpdChwcm9ncmFtKTsKQEAgLTY5LDggKzY5LDEwIEBAIHZvaWQgc3ludGhlc2l6ZUFy
cmF5T3BlcmF0b3JMZW5ndGgoUHJvZ3JhbSYgcHJvZ3JhbSkKICAgICAgICAgQVNUOjpWYXJpYWJs
ZURlY2xhcmF0aW9ucyBwYXJhbWV0ZXJzOwogICAgICAgICBwYXJhbWV0ZXJzLmFwcGVuZChXVEZN
b3ZlKHZhcmlhYmxlRGVjbGFyYXRpb24pKTsKICAgICAgICAgQVNUOjpOYXRpdmVGdW5jdGlvbkRl
Y2xhcmF0aW9uIG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24oQVNUOjpGdW5jdGlvbkRlY2xhcmF0
aW9uKExleGVyOjpUb2tlbihhcnJheVR5cGUuZ2V0KCkub3JpZ2luKCkpLCBBU1Q6OkF0dHJpYnV0
ZUJsb2NrKCksIFdURjo6bnVsbG9wdCwgQVNUOjpUeXBlUmVmZXJlbmNlOjp3cmFwKExleGVyOjpU
b2tlbihhcnJheVR5cGUuZ2V0KCkub3JpZ2luKCkpLCBwcm9ncmFtLmludHJpbnNpY3MoKS51aW50
VHlwZSgpKSwgIm9wZXJhdG9yLmxlbmd0aCJfc3RyLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBXVEY6
Om51bGxvcHQsIGlzT3BlcmF0b3IpKTsKLSAgICAgICAgcHJvZ3JhbS5hcHBlbmQoV1RGTW92ZShu
YXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKSk7CisgICAgICAgIGlmICghcHJvZ3JhbS5hcHBlbmQo
V1RGTW92ZShuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKSkpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQorICAgIHJldHVybiB0cnVlOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXSExT
TApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xT
eW50aGVzaXplQXJyYXlPcGVyYXRvckxlbmd0aC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvV0hMU0xTeW50aGVzaXplQXJyYXlPcGVyYXRvckxlbmd0aC5oCmluZGV4IDIw
MTJmMmIwMTAyYWNhYzUxMzYwYjE5ZWNiOTNhZTVlYjA4YTU2OGUuLmRiNzdmNDQ3MjMyYTNmNWU4
OWJjNGRlZThmZTFmMWE0MGRlNzc3MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML1dITFNMU3ludGhlc2l6ZUFycmF5T3BlcmF0b3JMZW5ndGguaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN5bnRoZXNpemVBcnJh
eU9wZXJhdG9yTGVuZ3RoLmgKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdITFNMIHsKIAog
Y2xhc3MgUHJvZ3JhbTsKIAotdm9pZCBzeW50aGVzaXplQXJyYXlPcGVyYXRvckxlbmd0aChQcm9n
cmFtJik7Citib29sIHN5bnRoZXNpemVBcnJheU9wZXJhdG9yTGVuZ3RoKFByb2dyYW0mKTsKIAog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExT
TFN5bnRoZXNpemVDb25zdHJ1Y3RvcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xTeW50aGVzaXplQ29uc3RydWN0b3JzLmNwcAppbmRleCBlZDMyYjY0N2Q0
ZTRjNTM0ZGU2ZGJkMjY4NWU5NGE5MGE1MDY3ZGE5Li40YjU5ZGU3ZDVjMGE3Yzc5N2FiNjE5Mjgz
MDVhM2QyZGVkYmI4NGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9XSExTTFN5bnRoZXNpemVDb25zdHJ1Y3RvcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3ludGhlc2l6ZUNvbnN0cnVjdG9ycy5jcHAK
QEAgLTUxLDM3ICs1MSwzNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB2aXNpdChBU1Q6OlBvaW50ZXJU
eXBlJiBwb2ludGVyVHlwZSkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIG1fdW5uYW1lZFR5cGVz
LmFwcGVuZChwb2ludGVyVHlwZSk7Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChwb2ludGVy
VHlwZSk7CisgICAgICAgIFZpc2l0b3I6OnZpc2l0KHBvaW50ZXJUeXBlKTsKICAgICB9CiAKICAg
ICB2b2lkIHZpc2l0KEFTVDo6QXJyYXlSZWZlcmVuY2VUeXBlJiBhcnJheVJlZmVyZW5jZVR5cGUp
IG92ZXJyaWRlCiAgICAgewogICAgICAgICBtX3VubmFtZWRUeXBlcy5hcHBlbmQoYXJyYXlSZWZl
cmVuY2VUeXBlKTsKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGFycmF5UmVmZXJlbmNlVHlw
ZSk7CisgICAgICAgIFZpc2l0b3I6OnZpc2l0KGFycmF5UmVmZXJlbmNlVHlwZSk7CiAgICAgfQog
CiAgICAgdm9pZCB2aXNpdChBU1Q6OkFycmF5VHlwZSYgYXJyYXlUeXBlKSBvdmVycmlkZQogICAg
IHsKICAgICAgICAgbV91bm5hbWVkVHlwZXMuYXBwZW5kKGFycmF5VHlwZSk7Ci0gICAgICAgIGNo
ZWNrRXJyb3JBbmRWaXNpdChhcnJheVR5cGUpOworICAgICAgICBWaXNpdG9yOjp2aXNpdChhcnJh
eVR5cGUpOwogICAgIH0KIAogICAgIHZvaWQgdmlzaXQoQVNUOjpFbnVtZXJhdGlvbkRlZmluaXRp
b24mIGVudW1lcmF0aW9uRGVmaW5pdGlvbikgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIG1fbmFt
ZWRUeXBlcy5hcHBlbmQoZW51bWVyYXRpb25EZWZpbml0aW9uKTsKLSAgICAgICAgY2hlY2tFcnJv
ckFuZFZpc2l0KGVudW1lcmF0aW9uRGVmaW5pdGlvbik7CisgICAgICAgIFZpc2l0b3I6OnZpc2l0
KGVudW1lcmF0aW9uRGVmaW5pdGlvbik7CiAgICAgfQogCiAgICAgdm9pZCB2aXNpdChBU1Q6OlN0
cnVjdHVyZURlZmluaXRpb24mIHN0cnVjdHVyZURlZmluaXRpb24pIG92ZXJyaWRlCiAgICAgewog
ICAgICAgICBtX25hbWVkVHlwZXMuYXBwZW5kKHN0cnVjdHVyZURlZmluaXRpb24pOwotICAgICAg
ICBjaGVja0Vycm9yQW5kVmlzaXQoc3RydWN0dXJlRGVmaW5pdGlvbik7CisgICAgICAgIFZpc2l0
b3I6OnZpc2l0KHN0cnVjdHVyZURlZmluaXRpb24pOwogICAgIH0KIAogICAgIHZvaWQgdmlzaXQo
QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24mIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbikgb3ZlcnJp
ZGUKICAgICB7CiAgICAgICAgIG1fbmFtZWRUeXBlcy5hcHBlbmQobmF0aXZlVHlwZURlY2xhcmF0
aW9uKTsKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KG5hdGl2ZVR5cGVEZWNsYXJhdGlvbik7
CisgICAgICAgIFZpc2l0b3I6OnZpc2l0KG5hdGl2ZVR5cGVEZWNsYXJhdGlvbik7CiAgICAgfQog
CiAgICAgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8QVNUOjpVbm5hbWVkVHlwZT4+JiYg
dGFrZVVubmFtZWRUeXBlcygpCkBAIC05OSw3ICs5OSw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9y
PHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8QVNUOjpOYW1lZFR5cGU+PiBtX25hbWVkVHlwZXM7CiB9
OwogCi12b2lkIHN5bnRoZXNpemVDb25zdHJ1Y3RvcnMoUHJvZ3JhbSYgcHJvZ3JhbSkKK2Jvb2wg
c3ludGhlc2l6ZUNvbnN0cnVjdG9ycyhQcm9ncmFtJiBwcm9ncmFtKQogewogICAgIEZpbmRBbGxU
eXBlcyBmaW5kQWxsVHlwZXM7CiAgICAgZmluZEFsbFR5cGVzLmNoZWNrRXJyb3JBbmRWaXNpdChw
cm9ncmFtKTsKQEAgLTExNiw3ICsxMTYsOCBAQCB2b2lkIHN5bnRoZXNpemVDb25zdHJ1Y3RvcnMo
UHJvZ3JhbSYgcHJvZ3JhbSkKICAgICAgICAgcHJvZ3JhbS5hcHBlbmQoV1RGTW92ZShjb3B5Q29u
c3RydWN0b3IpKTsKIAogICAgICAgICBBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24gZGVm
YXVsdENvbnN0cnVjdG9yKEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbihMZXhlcjo6VG9rZW4odW5u
YW1lZFR5cGUuZ2V0KCkub3JpZ2luKCkpLCBBU1Q6OkF0dHJpYnV0ZUJsb2NrKCksIFdURjo6bnVs
bG9wdCwgdW5uYW1lZFR5cGUuZ2V0KCkuY2xvbmUoKSwgIm9wZXJhdG9yIGNhc3QiX3N0ciwgQVNU
OjpWYXJpYWJsZURlY2xhcmF0aW9ucygpLCBXVEY6Om51bGxvcHQsIGlzT3BlcmF0b3IpKTsKLSAg
ICAgICAgcHJvZ3JhbS5hcHBlbmQoV1RGTW92ZShkZWZhdWx0Q29uc3RydWN0b3IpKTsKKyAgICAg
ICAgaWYgKCFwcm9ncmFtLmFwcGVuZChXVEZNb3ZlKGRlZmF1bHRDb25zdHJ1Y3RvcikpKQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGZvciAoYXV0byYgbmFtZWRUeXBl
IDogbV9uYW1lZFR5cGVzKSB7CkBAIC0xMjcsOCArMTI4LDEwIEBAIHZvaWQgc3ludGhlc2l6ZUNv
bnN0cnVjdG9ycyhQcm9ncmFtJiBwcm9ncmFtKQogICAgICAgICBwcm9ncmFtLmFwcGVuZChXVEZN
b3ZlKGNvcHlDb25zdHJ1Y3RvcikpOwogCiAgICAgICAgIEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNs
YXJhdGlvbiBkZWZhdWx0Q29uc3RydWN0b3IoQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uKExleGVy
OjpUb2tlbihuYW1lZFR5cGUuZ2V0KCkub3JpZ2luKCkpLCBBU1Q6OkF0dHJpYnV0ZUJsb2NrKCks
IFdURjo6bnVsbG9wdCwgQVNUOjpUeXBlUmVmZXJlbmNlOjp3cmFwKExleGVyOjpUb2tlbihuYW1l
ZFR5cGUuZ2V0KCkub3JpZ2luKCkpLCBuYW1lZFR5cGUuZ2V0KCkpLCAib3BlcmF0b3IgY2FzdCJf
c3RyLCBBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25zKCksIFdURjo6bnVsbG9wdCwgaXNPcGVyYXRv
cikpOwotICAgICAgICBwcm9ncmFtLmFwcGVuZChXVEZNb3ZlKGRlZmF1bHRDb25zdHJ1Y3Rvcikp
OworICAgICAgICBpZiAoIXByb2dyYW0uYXBwZW5kKFdURk1vdmUoZGVmYXVsdENvbnN0cnVjdG9y
KSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQorICAgIHJldHVybiB0cnVlOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXSExTTApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTeW50aGVzaXplQ29uc3RydWN0b3JzLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN5bnRoZXNpemVDb25zdHJ1Y3RvcnMu
aAppbmRleCAxOWEwNWJlYTYyM2E5YjliMGE5Y2ZmNGI0ZjQyZmY3MDFkZWJkNDM2Li42N2EwODYz
NmI1NmI2NGYzOTNmNTZjMTBkYWFiOTAwMzUyNDE5OWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN5bnRoZXNpemVDb25zdHJ1Y3RvcnMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN5bnRoZXNpemVD
b25zdHJ1Y3RvcnMuaApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgV0hMU0wgewogCiBjbGFz
cyBQcm9ncmFtOwogCi12b2lkIHN5bnRoZXNpemVDb25zdHJ1Y3RvcnMoUHJvZ3JhbSYpOworYm9v
bCBzeW50aGVzaXplQ29uc3RydWN0b3JzKFByb2dyYW0mKTsKIAogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN5bnRoZXNpemVFbnVtZXJh
dGlvbkZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9X
SExTTFN5bnRoZXNpemVFbnVtZXJhdGlvbkZ1bmN0aW9ucy5jcHAKaW5kZXggNTUyOWQwM2JhNGVj
MjJkNDYyOGE3NmVkNDFhODM3ZWFjMmE4OTRkMC4uMTc5N2ZlNTM5NGM4MWVhY2QzOTU0YWJjNmE4
YTY1YTZjOGZjOTZlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvV0hMU0xTeW50aGVzaXplRW51bWVyYXRpb25GdW5jdGlvbnMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3ludGhlc2l6ZUVudW1lcmF0aW9u
RnVuY3Rpb25zLmNwcApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIG5h
bWVzcGFjZSBXSExTTCB7CiAKLXZvaWQgc3ludGhlc2l6ZUVudW1lcmF0aW9uRnVuY3Rpb25zKFBy
b2dyYW0mIHByb2dyYW0pCitib29sIHN5bnRoZXNpemVFbnVtZXJhdGlvbkZ1bmN0aW9ucyhQcm9n
cmFtJiBwcm9ncmFtKQogewogICAgIGJvb2wgaXNPcGVyYXRvciA9IHRydWU7CiAgICAgZm9yIChh
dXRvJiBlbnVtZXJhdGlvbkRlZmluaXRpb24gOiBwcm9ncmFtLmVudW1lcmF0aW9uRGVmaW5pdGlv
bnMoKSkgewpAQCAtNDcsNyArNDcsOCBAQCB2b2lkIHN5bnRoZXNpemVFbnVtZXJhdGlvbkZ1bmN0
aW9ucyhQcm9ncmFtJiBwcm9ncmFtKQogICAgICAgICAgICAgcGFyYW1ldGVycy5hcHBlbmQoV1RG
TW92ZSh2YXJpYWJsZURlY2xhcmF0aW9uMSkpOwogICAgICAgICAgICAgcGFyYW1ldGVycy5hcHBl
bmQoV1RGTW92ZSh2YXJpYWJsZURlY2xhcmF0aW9uMikpOwogICAgICAgICAgICAgQVNUOjpOYXRp
dmVGdW5jdGlvbkRlY2xhcmF0aW9uIG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24oQVNUOjpGdW5j
dGlvbkRlY2xhcmF0aW9uKExleGVyOjpUb2tlbihlbnVtZXJhdGlvbkRlZmluaXRpb24tPm9yaWdp
bigpKSwgQVNUOjpBdHRyaWJ1dGVCbG9jaygpLCBXVEY6Om51bGxvcHQsIEFTVDo6VHlwZVJlZmVy
ZW5jZTo6d3JhcChMZXhlcjo6VG9rZW4oZW51bWVyYXRpb25EZWZpbml0aW9uLT5vcmlnaW4oKSks
IHByb2dyYW0uaW50cmluc2ljcygpLmJvb2xUeXBlKCkpLCAib3BlcmF0b3I9PSJfc3RyLCBXVEZN
b3ZlKHBhcmFtZXRlcnMpLCBXVEY6Om51bGxvcHQsIGlzT3BlcmF0b3IpKTsKLSAgICAgICAgICAg
IHByb2dyYW0uYXBwZW5kKFdURk1vdmUobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbikpOworICAg
ICAgICAgICAgaWYgKCFwcm9ncmFtLmFwcGVuZChXVEZNb3ZlKG5hdGl2ZUZ1bmN0aW9uRGVjbGFy
YXRpb24pKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAogICAg
ICAgICB7CkBAIC01NSw3ICs1Niw4IEBAIHZvaWQgc3ludGhlc2l6ZUVudW1lcmF0aW9uRnVuY3Rp
b25zKFByb2dyYW0mIHByb2dyYW0pCiAgICAgICAgICAgICBBU1Q6OlZhcmlhYmxlRGVjbGFyYXRp
b25zIHBhcmFtZXRlcnM7CiAgICAgICAgICAgICBwYXJhbWV0ZXJzLmFwcGVuZChXVEZNb3ZlKHZh
cmlhYmxlRGVjbGFyYXRpb24pKTsKICAgICAgICAgICAgIEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNs
YXJhdGlvbiBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlv
bihMZXhlcjo6VG9rZW4oZW51bWVyYXRpb25EZWZpbml0aW9uLT5vcmlnaW4oKSksIEFTVDo6QXR0
cmlidXRlQmxvY2soKSwgV1RGOjpudWxsb3B0LCBlbnVtZXJhdGlvbkRlZmluaXRpb24tPnR5cGUo
KS5jbG9uZSgpLCAib3BlcmF0b3IudmFsdWUiX3N0ciwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgV1RG
OjpudWxsb3B0LCBpc09wZXJhdG9yKSk7Ci0gICAgICAgICAgICBwcm9ncmFtLmFwcGVuZChXVEZN
b3ZlKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24pKTsKKyAgICAgICAgICAgIGlmICghcHJvZ3Jh
bS5hcHBlbmQoV1RGTW92ZShuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKSkpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKICAgICAgICAgewpAQCAtNjMsNyArNjUs
OCBAQCB2b2lkIHN5bnRoZXNpemVFbnVtZXJhdGlvbkZ1bmN0aW9ucyhQcm9ncmFtJiBwcm9ncmFt
KQogICAgICAgICAgICAgQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9ucyBwYXJhbWV0ZXJzOwogICAg
ICAgICAgICAgcGFyYW1ldGVycy5hcHBlbmQoV1RGTW92ZSh2YXJpYWJsZURlY2xhcmF0aW9uKSk7
CiAgICAgICAgICAgICBBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24gbmF0aXZlRnVuY3Rp
b25EZWNsYXJhdGlvbihBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24oTGV4ZXI6OlRva2VuKGVudW1l
cmF0aW9uRGVmaW5pdGlvbi0+b3JpZ2luKCkpLCBBU1Q6OkF0dHJpYnV0ZUJsb2NrKCksIFdURjo6
bnVsbG9wdCwgZW51bWVyYXRpb25EZWZpbml0aW9uLT50eXBlKCkuY2xvbmUoKSwgIm9wZXJhdG9y
IGNhc3QiX3N0ciwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgV1RGOjpudWxsb3B0LCBpc09wZXJhdG9y
KSk7Ci0gICAgICAgICAgICBwcm9ncmFtLmFwcGVuZChXVEZNb3ZlKG5hdGl2ZUZ1bmN0aW9uRGVj
bGFyYXRpb24pKTsKKyAgICAgICAgICAgIGlmICghcHJvZ3JhbS5hcHBlbmQoV1RGTW92ZShuYXRp
dmVGdW5jdGlvbkRlY2xhcmF0aW9uKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICB9CiAKICAgICAgICAgewpAQCAtNzEsOSArNzQsMTEgQEAgdm9pZCBzeW50aGVzaXpl
RW51bWVyYXRpb25GdW5jdGlvbnMoUHJvZ3JhbSYgcHJvZ3JhbSkKICAgICAgICAgICAgIEFTVDo6
VmFyaWFibGVEZWNsYXJhdGlvbnMgcGFyYW1ldGVyczsKICAgICAgICAgICAgIHBhcmFtZXRlcnMu
YXBwZW5kKFdURk1vdmUodmFyaWFibGVEZWNsYXJhdGlvbikpOwogICAgICAgICAgICAgQVNUOjpO
YXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uIG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24oQVNUOjpG
dW5jdGlvbkRlY2xhcmF0aW9uKExleGVyOjpUb2tlbihlbnVtZXJhdGlvbkRlZmluaXRpb24tPm9y
aWdpbigpKSwgQVNUOjpBdHRyaWJ1dGVCbG9jaygpLCBXVEY6Om51bGxvcHQsIHsgQVNUOjpUeXBl
UmVmZXJlbmNlOjp3cmFwKExleGVyOjpUb2tlbihlbnVtZXJhdGlvbkRlZmluaXRpb24tPm9yaWdp
bigpKSwgZW51bWVyYXRpb25EZWZpbml0aW9uKSB9LCAib3BlcmF0b3IgY2FzdCJfc3RyLCBXVEZN
b3ZlKHBhcmFtZXRlcnMpLCBXVEY6Om51bGxvcHQsIGlzT3BlcmF0b3IpKTsKLSAgICAgICAgICAg
IHByb2dyYW0uYXBwZW5kKFdURk1vdmUobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbikpOworICAg
ICAgICAgICAgaWYgKCFwcm9ncmFtLmFwcGVuZChXVEZNb3ZlKG5hdGl2ZUZ1bmN0aW9uRGVjbGFy
YXRpb24pKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICB9
CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdITFNMCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN5bnRoZXNpemVFbnVt
ZXJhdGlvbkZ1bmN0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
V0hMU0xTeW50aGVzaXplRW51bWVyYXRpb25GdW5jdGlvbnMuaAppbmRleCAyMTI3ZmQxMTUyNGMx
YzgzMjgyODNjNWJhZTkyM2RmZWYwMWRmNWFkLi5iZjFmN2FiMjRmNzBmMmY1Zjc4YTYzMGJmYmU4
ZWYxODgwYWQzYTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9XSExTTFN5bnRoZXNpemVFbnVtZXJhdGlvbkZ1bmN0aW9ucy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3ludGhlc2l6ZUVudW1lcmF0aW9uRnVu
Y3Rpb25zLmgKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdITFNMIHsKIAogY2xhc3MgUHJv
Z3JhbTsKIAotdm9pZCBzeW50aGVzaXplRW51bWVyYXRpb25GdW5jdGlvbnMoUHJvZ3JhbSYpOwor
Ym9vbCBzeW50aGVzaXplRW51bWVyYXRpb25GdW5jdGlvbnMoUHJvZ3JhbSYpOwogCiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3ludGhl
c2l6ZVN0cnVjdHVyZUFjY2Vzc29ycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9XSExTTFN5bnRoZXNpemVTdHJ1Y3R1cmVBY2Nlc3NvcnMuY3BwCmluZGV4IDUzMDI0
YTY0YTJjMmVjZDU3NzhiYmM4MzhiYzliYzhiMjZjZjE1MGUuLjgyNjcyMjEzN2U0YzNlMzgyMjc3
ODBkYWUxMmIyOWFhYmExYjcyZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML1dITFNMU3ludGhlc2l6ZVN0cnVjdHVyZUFjY2Vzc29ycy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTeW50aGVzaXplU3RydWN0
dXJlQWNjZXNzb3JzLmNwcApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IG5hbWVzcGFjZSBXSExTTCB7CiAKLXZvaWQgc3ludGhlc2l6ZVN0cnVjdHVyZUFjY2Vzc29ycyhQ
cm9ncmFtJiBwcm9ncmFtKQorYm9vbCBzeW50aGVzaXplU3RydWN0dXJlQWNjZXNzb3JzKFByb2dy
YW0mIHByb2dyYW0pCiB7CiAgICAgYm9vbCBpc09wZXJhdG9yID0gdHJ1ZTsKICAgICBmb3IgKGF1
dG8mIHN0cnVjdHVyZURlZmluaXRpb24gOiBwcm9ncmFtLnN0cnVjdHVyZURlZmluaXRpb25zKCkp
IHsKQEAgLTUwLDcgKzUwLDggQEAgdm9pZCBzeW50aGVzaXplU3RydWN0dXJlQWNjZXNzb3JzKFBy
b2dyYW0mIHByb2dyYW0pCiAgICAgICAgICAgICAgICAgQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9u
cyBwYXJhbWV0ZXJzOwogICAgICAgICAgICAgICAgIHBhcmFtZXRlcnMuYXBwZW5kKFdURk1vdmUo
dmFyaWFibGVEZWNsYXJhdGlvbikpOwogICAgICAgICAgICAgICAgIEFTVDo6TmF0aXZlRnVuY3Rp
b25EZWNsYXJhdGlvbiBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKEFTVDo6RnVuY3Rpb25EZWNs
YXJhdGlvbihMZXhlcjo6VG9rZW4oc3RydWN0dXJlRWxlbWVudC5vcmlnaW4oKSksIEFTVDo6QXR0
cmlidXRlQmxvY2soKSwgV1RGOjpudWxsb3B0LCBzdHJ1Y3R1cmVFbGVtZW50LnR5cGUoKS5jbG9u
ZSgpLCBtYWtlU3RyaW5nKCJvcGVyYXRvci4iLCBzdHJ1Y3R1cmVFbGVtZW50Lm5hbWUoKSksIFdU
Rk1vdmUocGFyYW1ldGVycyksIFdURjo6bnVsbG9wdCwgaXNPcGVyYXRvcikpOwotICAgICAgICAg
ICAgICAgIHByb2dyYW0uYXBwZW5kKFdURk1vdmUobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbikp
OworICAgICAgICAgICAgICAgIGlmICghcHJvZ3JhbS5hcHBlbmQoV1RGTW92ZShuYXRpdmVGdW5j
dGlvbkRlY2xhcmF0aW9uKSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgICAgIH0KIAogICAgICAgICAgICAgewpAQCAtNjEsNyArNjIsOCBAQCB2b2lkIHN5bnRo
ZXNpemVTdHJ1Y3R1cmVBY2Nlc3NvcnMoUHJvZ3JhbSYgcHJvZ3JhbSkKICAgICAgICAgICAgICAg
ICBwYXJhbWV0ZXJzLmFwcGVuZChXVEZNb3ZlKHZhcmlhYmxlRGVjbGFyYXRpb24xKSk7CiAgICAg
ICAgICAgICAgICAgcGFyYW1ldGVycy5hcHBlbmQoV1RGTW92ZSh2YXJpYWJsZURlY2xhcmF0aW9u
MikpOwogICAgICAgICAgICAgICAgIEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiBuYXRp
dmVGdW5jdGlvbkRlY2xhcmF0aW9uKEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbihMZXhlcjo6VG9r
ZW4oc3RydWN0dXJlRWxlbWVudC5vcmlnaW4oKSksIEFTVDo6QXR0cmlidXRlQmxvY2soKSwgV1RG
OjpudWxsb3B0LCBBU1Q6OlR5cGVSZWZlcmVuY2U6OndyYXAoTGV4ZXI6OlRva2VuKHN0cnVjdHVy
ZUVsZW1lbnQub3JpZ2luKCkpLCBzdHJ1Y3R1cmVEZWZpbml0aW9uKSwgbWFrZVN0cmluZygib3Bl
cmF0b3IuIiwgc3RydWN0dXJlRWxlbWVudC5uYW1lKCksICc9JyksIFdURk1vdmUocGFyYW1ldGVy
cyksIFdURjo6bnVsbG9wdCwgaXNPcGVyYXRvcikpOwotICAgICAgICAgICAgICAgIHByb2dyYW0u
YXBwZW5kKFdURk1vdmUobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbikpOworICAgICAgICAgICAg
ICAgIGlmICghcHJvZ3JhbS5hcHBlbmQoV1RGTW92ZShuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9u
KSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KIAog
ICAgICAgICAgICAgLy8gVGhlIGFuZGVyOiBvcGVyYXRvciYuZmllbGQKQEAgLTc0LDEyICs3Niwx
NCBAQCB2b2lkIHN5bnRoZXNpemVTdHJ1Y3R1cmVBY2Nlc3NvcnMoUHJvZ3JhbSYgcHJvZ3JhbSkK
ICAgICAgICAgICAgICAgICBBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24gbmF0aXZlRnVu
Y3Rpb25EZWNsYXJhdGlvbihBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24oTGV4ZXI6OlRva2VuKHN0
cnVjdHVyZUVsZW1lbnQub3JpZ2luKCkpLCBBU1Q6OkF0dHJpYnV0ZUJsb2NrKCksIFdURjo6bnVs
bG9wdCwgV1RGTW92ZShyZXR1cm5UeXBlKSwgbWFrZVN0cmluZygib3BlcmF0b3ImLiIsIHN0cnVj
dHVyZUVsZW1lbnQubmFtZSgpKSwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgV1RGOjpudWxsb3B0LCBp
c09wZXJhdG9yKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIG5hdGl2ZUZ1bmN0aW9uRGVjbGFy
YXRpb247CiAgICAgICAgICAgICB9OwotICAgICAgICAgICAgcHJvZ3JhbS5hcHBlbmQoY3JlYXRl
QW5kZXIoQVNUOjpBZGRyZXNzU3BhY2U6OkNvbnN0YW50KSk7Ci0gICAgICAgICAgICBwcm9ncmFt
LmFwcGVuZChjcmVhdGVBbmRlcihBU1Q6OkFkZHJlc3NTcGFjZTo6RGV2aWNlKSk7Ci0gICAgICAg
ICAgICBwcm9ncmFtLmFwcGVuZChjcmVhdGVBbmRlcihBU1Q6OkFkZHJlc3NTcGFjZTo6VGhyZWFk
Z3JvdXApKTsKLSAgICAgICAgICAgIHByb2dyYW0uYXBwZW5kKGNyZWF0ZUFuZGVyKEFTVDo6QWRk
cmVzc1NwYWNlOjpUaHJlYWQpKTsKKyAgICAgICAgICAgIGlmICghcHJvZ3JhbS5hcHBlbmQoY3Jl
YXRlQW5kZXIoQVNUOjpBZGRyZXNzU3BhY2U6OkNvbnN0YW50KSkKKyAgICAgICAgICAgICAgICB8
fCAhcHJvZ3JhbS5hcHBlbmQoY3JlYXRlQW5kZXIoQVNUOjpBZGRyZXNzU3BhY2U6OkRldmljZSkp
CisgICAgICAgICAgICAgICAgfHwgIXByb2dyYW0uYXBwZW5kKGNyZWF0ZUFuZGVyKEFTVDo6QWRk
cmVzc1NwYWNlOjpUaHJlYWRncm91cCkpCisgICAgICAgICAgICAgICAgfHwgIXByb2dyYW0uYXBw
ZW5kKGNyZWF0ZUFuZGVyKEFTVDo6QWRkcmVzc1NwYWNlOjpUaHJlYWQpKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICB9CisgICAgcmV0dXJuIHRydWU7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdITFNMCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9XSExTTFN5bnRoZXNpemVTdHJ1Y3R1cmVBY2Nlc3NvcnMuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3ludGhlc2l6ZVN0cnVjdHVy
ZUFjY2Vzc29ycy5oCmluZGV4IGJiOWYyYjlhZDM5OGEwZWJmNzk0OGI1NmFkOWM0ZDkzMDQ0MDhj
YmYuLjE2NzMxNjI5NWQ1MDkyYjk5OWM5NjI1MzNkZWIxNWRmYjZlYmJkNjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3ludGhlc2l6ZVN0cnVj
dHVyZUFjY2Vzc29ycy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L1dITFNMU3ludGhlc2l6ZVN0cnVjdHVyZUFjY2Vzc29ycy5oCkBAIC0zMyw3ICszMyw3IEBAIG5h
bWVzcGFjZSBXSExTTCB7CiAKIGNsYXNzIFByb2dyYW07CiAKLXZvaWQgc3ludGhlc2l6ZVN0cnVj
dHVyZUFjY2Vzc29ycyhQcm9ncmFtJik7Citib29sIHN5bnRoZXNpemVTdHJ1Y3R1cmVBY2Nlc3Nv
cnMoUHJvZ3JhbSYpOwogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dlYkdQVURldmljZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVEZXZpY2UuY3BwCmluZGV4IDNkNjg5ZWNiMDNmZDBhOWJiYjNkOGJiZWM3MGViMzE3ZGQ3
NzAzN2IuLjFiNjBmMTkwZjM0NTg1MDdhNDFjYWM2ZTgzNjU1NmQzYzNkNDUwNGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmNwcApAQCAtMTIyLDcg
KzEyMiw3IEBAIFJlZjxXZWJHUFVCaW5kR3JvdXA+IFdlYkdQVURldmljZTo6Y3JlYXRlQmluZEdy
b3VwKFdlYkdQVUJpbmRHcm91cERlc2NyaXB0b3ImJiBkCiBSZWZQdHI8V2ViR1BVU2hhZGVyTW9k
dWxlPiBXZWJHUFVEZXZpY2U6OmNyZWF0ZVNoYWRlck1vZHVsZShXZWJHUFVTaGFkZXJNb2R1bGVE
ZXNjcmlwdG9yJiYgZGVzY3JpcHRvcikgY29uc3QKIHsKICAgICAvLyBGSVhNRTogV2hhdCBjYW4g
YmUgdmFsaWRhdGVkIGhlcmU/Ci0gICAgaWYgKGF1dG8gbW9kdWxlID0gbV9kZXZpY2UtPmNyZWF0
ZVNoYWRlck1vZHVsZShHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yIHsgZGVzY3JpcHRvci5jb2Rl
IH0pKQorICAgIGlmIChhdXRvIG1vZHVsZSA9IG1fZGV2aWNlLT5jcmVhdGVTaGFkZXJNb2R1bGUo
R1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvciB7IGRlc2NyaXB0b3IuY29kZSwgZGVzY3JpcHRvci5p
c1dITFNMIH0pKQogICAgICAgICByZXR1cm4gV2ViR1BVU2hhZGVyTW9kdWxlOjpjcmVhdGUobW9k
dWxlLnJlbGVhc2VOb25OdWxsKCkpOwogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3Jp
cHRvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxl
RGVzY3JpcHRvci5oCmluZGV4IGFmMzJhOTg5ZWQ1YzUwNmRmM2E3ZGNiMDkzNTVjZTUyNjg0YzMw
OGYuLmI4ZDk4MTdjZDBhOTRmYmJhZmNkNTM4OGY0NTk3MGFmNjUxNTU0MTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZURlc2NyaXB0
b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1
bGVEZXNjcmlwdG9yLmgKQEAgLTMzLDYgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBz
dHJ1Y3QgV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvciB7CiAgICAgU3RyaW5nIGNvZGU7Cisg
ICAgYm9vbCBpc1dITFNMOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3Jp
cHRvci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1
bGVEZXNjcmlwdG9yLmlkbAppbmRleCAzMmQ3MDdlZDkyYjU1MjQyNmNiNTQxYWVmNDhjOGI1ZWE0
ZGE2MzVmLi45NzEzNTJhYjA0NzQ5NjU1ZGMxYTJmYjBiMjg3NjQwMzgxYmViMjVhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGVEZXNj
cmlwdG9yLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFk
ZXJNb2R1bGVEZXNjcmlwdG9yLmlkbApAQCAtMjksNCArMjksNSBAQAogICAgIEVuYWJsZWRBdFJ1
bnRpbWU9V2ViR1BVCiBdIGRpY3Rpb25hcnkgV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvciB7
CiAgICAgLypBcnJheUJ1ZmZlciovIERPTVN0cmluZyBjb2RlOyAvLyBGSVhNRTogRE9NU3RyaW5n
IGZvciBNVEwgcHJvdG90eXBpbmcgb25seS4KKyAgICBib29sZWFuIGlzV0hMU0wgPSBmYWxzZTsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggN2ZhMzhmNTFkOTc1ZjEzNWI1NDY3NTE0YjA1MjMzN2Q3YzQxOTk5Yi4uZDY5MDMz
MTk1Mzg1MWI0ZTFhYzUzMDA5OWZmNDliMGU3MmIyZDAwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjQ1Niw2ICs2NDU2LDcg
QEAKIAkJMUMzMzI3NzEyMUNGMEJFMTAwMERDOUYyIC8qIFdITFNMTmFtZWRUeXBlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdITFNMTmFtZWRUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTFDMzMyNzcyMjFDRjBEMkUwMDBEQzlGMiAvKiBXSExTTFVubmFtZWRUeXBlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdITFNMVW5uYW1lZFR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MUMzOTY5Q0YxQjc0MjExRTAwMkJDRkE3IC8qIEZvbnRDYWNoZUNvcmVUZXh0LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvbnRDYWNoZUNvcmVUZXh0LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1OUIwMTgyMjM4Njg3OTAwODUzODA1IC8qIFdI
TFNMU2NvcGVkU2V0QWRkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xTY29wZWRTZXRBZGRlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzY2MjYwRTFDNkU3Q0E2MDBBQjUyN0Mg
LyogRm9udEZhY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9u
dEZhY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzY2MjYwRjFDNkU3Q0E2
MDBBQjUyN0MgLyogRm9udEZhY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Rm9udEZhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM4MUI5NTYwRTk3MzMw
ODAwMjY2RTA3IC8qIEluc3BlY3RvckNvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSW5zcGVjdG9yQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMTM0NjEsNyArMTM0NjIsNiBAQAogCQlDMjRBNTdCMzIxRkI4RERBMDA0QzZERDEg
LyogV0hMU0xTZW1hbnRpY01hdGNoZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xTZW1hbnRpY01h
dGNoZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzI0QTU3QkEyMUZFQUZFQTAw
NEM2REQxIC8qIFdITFNMUHJlcGFyZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTFByZXBh
cmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMjRBNTdCQjIxRkVBRkVBMDA0
QzZERDEgLyogV0hMU0xQcmVwYXJlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMUHJlcGFyZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjRBNTdCRTIxRkVDNjVDMDA0QzZERDEgLyog
V0hMU0xNYXBwZWRCaW5kaW5ncy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTE1hcHBlZEJpbmRpbmdz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyNjAxN0ExMUM3MkRDOTkwMEY3NEEx
NiAvKiBDU1NGb250RmFjZVNldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBDU1NGb250RmFjZVNldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMy
NjAxN0EyMUM3MkRDOTkwMEY3NEExNiAvKiBDU1NGb250RmFjZVNldC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBDU1NGb250RmFjZVNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlDMjgwODMzQzFDNkRCMTk0MDAxNDUxQjYgLyogRm9udEZhY2UuaWRsICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgcGF0aCA9IEZvbnRGYWNlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTE3MjU1LDcgKzE3MjU1LDYgQEAKIAkJCQkxQ0VDQjNCQjIxRjUxMUFBMDBGNDQ1NDIg
LyogV0hMU0xFbnRyeVBvaW50U2NhZmZvbGRpbmcuaCAqLywKIAkJCQkxQ0VDQjNBRjIxRjJCOTg0
MDBGNDQ1NDIgLyogV0hMU0xGdW5jdGlvbldyaXRlci5jcHAgKi8sCiAJCQkJMUNFQ0IzQjIyMUYy
Qjk4NjAwRjQ0NTQyIC8qIFdITFNMRnVuY3Rpb25Xcml0ZXIuaCAqLywKLQkJCQlDMjRBNTdCRTIx
RkVDNjVDMDA0QzZERDEgLyogV0hMU0xNYXBwZWRCaW5kaW5ncy5oICovLAogCQkJCTFDRUNCM0I1
MjFGNTBBQzcwMEY0NDU0MiAvKiBXSExTTE1ldGFsQ29kZUdlbmVyYXRvci5jcHAgKi8sCiAJCQkJ
MUNFQ0IzQjYyMUY1MEFDNzAwRjQ0NTQyIC8qIFdITFNMTWV0YWxDb2RlR2VuZXJhdG9yLmggKi8s
CiAJCQkJMUNFQ0IzQjgyMUY1MEQxMDAwRjQ0NTQyIC8qIFdITFNMTmF0aXZlRnVuY3Rpb25Xcml0
ZXIuY3BwICovLApAQCAtMjU3NDgsNiArMjU3NDcsNyBAQAogCQkJCUMyMzRBOTk5MjFFOTBGMjkw
MDNDOTg0RCAvKiBXSExTTFJlc29sdmVPdmVybG9hZEltcGwuY3BwICovLAogCQkJCUMyMzRBOTk3
MjFFOTBGMjgwMDNDOTg0RCAvKiBXSExTTFJlc29sdmVPdmVybG9hZEltcGwuaCAqLywKIAkJCQlD
MjM0QTk5RDIxRTkxMEJEMDAzQzk4NEQgLyogV0hMU0xSZXNvbHZpbmdUeXBlLmggKi8sCisJCQkJ
MUM1OUIwMTgyMjM4Njg3OTAwODUzODA1IC8qIFdITFNMU2NvcGVkU2V0QWRkZXIuaCAqLywKIAkJ
CQlDMjRBNTdCMjIxRkI4RERBMDA0QzZERDEgLyogV0hMU0xTZW1hbnRpY01hdGNoZXIuY3BwICov
LAogCQkJCUMyNEE1N0IzMjFGQjhEREEwMDRDNkREMSAvKiBXSExTTFNlbWFudGljTWF0Y2hlci5o
ICovLAogCQkJCUMyMUJGNzQ1MjFDRDk2OTgwMDIyNzk3OSAvKiBXSExTTFN0YW5kYXJkTGlicmFy
eS50eHQgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvR1BVUGlwZWxpbmVMYXlvdXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9HUFVQaXBlbGluZUxheW91dC5oCmluZGV4IDI2MjYxOGY5MzE1MWJkMmRhYTRmZTNjMGNh
YjA0OGQ0M2ZjMmI0NjEuLmU4YzZhYjllYzdhY2Y4NWNhMWVhYjAwZDljMDk3MmEyMzcwMGZjYTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVQaXBl
bGluZUxheW91dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9H
UFVQaXBlbGluZUxheW91dC5oCkBAIC0zOCw2ICszOCw4IEBAIGNsYXNzIEdQVVBpcGVsaW5lTGF5
b3V0IDogcHVibGljIFJlZkNvdW50ZWQ8R1BVUGlwZWxpbmVMYXlvdXQ+IHsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgUmVmPEdQVVBpcGVsaW5lTGF5b3V0PiBjcmVhdGUoR1BVUGlwZWxpbmVMYXlvdXRE
ZXNjcmlwdG9yJiYpOwogCisgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxjb25zdCBHUFVCaW5kR3Jv
dXBMYXlvdXQ+PiYgYmluZEdyb3VwTGF5b3V0cygpIGNvbnN0IHsgcmV0dXJuIG1fYmluZEdyb3Vw
TGF5b3V0czsgfQorCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEdQVVBpcGVsaW5lTGF5b3V0KEdQ
VVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVNoYWRlck1vZHVsZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVNoYWRlck1vZHVsZS5oCmluZGV4IGNiZmIzZjli
ZTA0YWVhYWIwYjY0NjcwNDNhYmYxYTQ5NTcyMDA5ZGEuLmU5YTg3YmJmZTNmYzlhZTY2M2E0MjFh
M2U1YWU0MjJjOTBjMTdlZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dwdS9HUFVTaGFkZXJNb2R1bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvR1BVU2hhZGVyTW9kdWxlLmgKQEAgLTQ2LDEyICs0NiwxNSBAQCBjbGFz
cyBHUFVTaGFkZXJNb2R1bGUgOiBwdWJsaWMgUmVmQ291bnRlZDxHUFVTaGFkZXJNb2R1bGU+IHsK
IHB1YmxpYzoKICAgICBzdGF0aWMgUmVmUHRyPEdQVVNoYWRlck1vZHVsZT4gY3JlYXRlKGNvbnN0
IEdQVURldmljZSYsIEdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3ImJik7CiAKLSAgICBQbGF0Zm9y
bVNoYWRlck1vZHVsZSogcGxhdGZvcm1TaGFkZXJNb2R1bGUoKSBjb25zdCB7IHJldHVybiBtX3Bs
YXRmb3JtU2hhZGVyTW9kdWxlLmdldCgpOyB9CisgICAgUGxhdGZvcm1TaGFkZXJNb2R1bGUqIHBs
YXRmb3JtU2hhZGVyTW9kdWxlKCkgY29uc3QgeyByZXR1cm4gbV93aGxzbFNvdXJjZS5pc051bGwo
KSA/IG1fcGxhdGZvcm1TaGFkZXJNb2R1bGUuZ2V0KCkgOiBudWxscHRyOyB9CisgICAgY29uc3Qg
U3RyaW5nJiB3aGxzbFNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fd2hsc2xTb3VyY2U7IH0KIAog
cHJpdmF0ZToKICAgICBHUFVTaGFkZXJNb2R1bGUoUGxhdGZvcm1TaGFkZXJNb2R1bGVTbWFydFB0
ciYmKTsKKyAgICBHUFVTaGFkZXJNb2R1bGUoU3RyaW5nJiYgd2hsc2xTb3VyY2UpOwogCiAgICAg
UGxhdGZvcm1TaGFkZXJNb2R1bGVTbWFydFB0ciBtX3BsYXRmb3JtU2hhZGVyTW9kdWxlOworICAg
IFN0cmluZyBtX3dobHNsU291cmNlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVNoYWRlck1v
ZHVsZURlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9H
UFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmgKaW5kZXggNmNmZTBhZDVhODdiMzJjNDhhZTM0YmQ3
NmQyZjFjNTk4MWJlN2Q1ZC4uNWMzZWNmNmE3YzAxMTFmMjIyM2NiOWJlMmY0NDQ4Mzg2OTI1NWZm
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVNo
YWRlck1vZHVsZURlc2NyaXB0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5oCkBAIC0zMyw2ICszMyw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IEdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3Igewog
ICAgIFN0cmluZyBjb2RlOworICAgIGJvb2wgaXNXSExTTDsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9jb2NvYS9HUFVSZW5kZXJQaXBlbGluZU1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVJlbmRlclBpcGVsaW5lTWV0YWwubW0KaW5kZXggZTZm
NGFlZGY5YzdmYjRiOTRhMTlmNDZkNjYzYWZlNDg3ZWI1MjQwZi4uYTE3NTQ5ODYxYjg2Njg0ZTJm
Y2Q0MTQwNmIyOWE3NDVjMTc3MmJmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVJlbmRlclBpcGVsaW5lTWV0YWwubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVJlbmRlclBpcGVsaW5l
TWV0YWwubW0KQEAgLTMxLDYgKzMxLDcgQEAKICNpbXBvcnQgIkdQVUxpbWl0cy5oIgogI2ltcG9y
dCAiR1BVVXRpbHMuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKKyNpbXBvcnQgIldITFNMUHJlcGFy
ZS5oIgogI2ltcG9ydCAiV0hMU0xWZXJ0ZXhCdWZmZXJJbmRleENhbGN1bGF0b3IuaCIKICNpbXBv
cnQgPE1ldGFsL01ldGFsLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgpA
QCAtNzgsMzkgKzc5LDIxNCBAQCBzdGF0aWMgUmV0YWluUHRyPE1UTERlcHRoU3RlbmNpbFN0YXRl
PiB0cnlDcmVhdGVNdGxEZXB0aFN0ZW5jaWxTdGF0ZShjb25zdCBjaGFyKgogICAgIHJldHVybiBz
dGF0ZTsKIH0KIAotc3RhdGljIGJvb2wgdHJ5U2V0RnVuY3Rpb25zRm9yUGlwZWxpbmVEZXNjcmlw
dG9yKGNvbnN0IGNoYXIqIGNvbnN0IGZ1bmN0aW9uTmFtZSwgTVRMUmVuZGVyUGlwZWxpbmVEZXNj
cmlwdG9yICptdGxEZXNjcmlwdG9yLCBjb25zdCBHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3Im
IGRlc2NyaXB0b3IpCitzdGF0aWMgV0hMU0w6OlZlcnRleEZvcm1hdCBjb252ZXJ0VmVydGV4Rm9y
bWF0KEdQVVZlcnRleEZvcm1hdCB2ZXJ0ZXhGb3JtYXQpCit7CisgICAgc3dpdGNoICh2ZXJ0ZXhG
b3JtYXQpIHsKKyAgICBjYXNlIEdQVVZlcnRleEZvcm1hdDo6RmxvYXQ0OgorICAgICAgICByZXR1
cm4gV0hMU0w6OlZlcnRleEZvcm1hdDo6RmxvYXRSMzJHMzJCMzJBMzI7CisgICAgY2FzZSBHUFVW
ZXJ0ZXhGb3JtYXQ6OkZsb2F0MzoKKyAgICAgICAgcmV0dXJuIFdITFNMOjpWZXJ0ZXhGb3JtYXQ6
OkZsb2F0UjMyRzMyQjMyOworICAgIGNhc2UgR1BVVmVydGV4Rm9ybWF0OjpGbG9hdDI6CisgICAg
ICAgIHJldHVybiBXSExTTDo6VmVydGV4Rm9ybWF0OjpGbG9hdFIzMkczMjsKKyAgICBkZWZhdWx0
OgorICAgICAgICBBU1NFUlQodmVydGV4Rm9ybWF0ID09IEdQVVZlcnRleEZvcm1hdDo6RmxvYXQp
OworICAgICAgICByZXR1cm4gV0hMU0w6OlZlcnRleEZvcm1hdDo6RmxvYXRSMzI7CisgICAgfQor
fQorCitzdGF0aWMgT3B0aW9uU2V0PFdITFNMOjpTaGFkZXJTdGFnZT4gY29udmVydFNoYWRlclN0
YWdlRmxhZ3MoR1BVU2hhZGVyU3RhZ2VGbGFncyBmbGFncykKK3sKKyAgICBPcHRpb25TZXQ8V0hM
U0w6OlNoYWRlclN0YWdlPiByZXN1bHQ7CisgICAgaWYgKGZsYWdzICYgR1BVU2hhZGVyU3RhZ2VC
aXQ6OkZsYWdzOjpWZXJ0ZXgpCisgICAgICAgIHJlc3VsdC5hZGQoV0hMU0w6OlNoYWRlclN0YWdl
OjpWZXJ0ZXgpOworICAgIGlmIChmbGFncyAmIEdQVVNoYWRlclN0YWdlQml0OjpGbGFnczo6RnJh
Z21lbnQpCisgICAgICAgIHJlc3VsdC5hZGQoV0hMU0w6OlNoYWRlclN0YWdlOjpGcmFnbWVudCk7
CisgICAgaWYgKGZsYWdzICYgR1BVU2hhZGVyU3RhZ2VCaXQ6OkZsYWdzOjpDb21wdXRlKQorICAg
ICAgICByZXN1bHQuYWRkKFdITFNMOjpTaGFkZXJTdGFnZTo6Q29tcHV0ZSk7CisgICAgcmV0dXJu
IHJlc3VsdDsKK30KKworc3RhdGljIE9wdGlvbmFsPFdITFNMOjpCaW5kaW5nVHlwZT4gY29udmVy
dEJpbmRpbmdUeXBlKEdQVUJpbmRHcm91cExheW91dEJpbmRpbmc6OkJpbmRpbmdUeXBlIHR5cGUp
Cit7CisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBHUFVCaW5kR3JvdXBMYXlvdXRCaW5k
aW5nOjpCaW5kaW5nVHlwZTo6VW5pZm9ybUJ1ZmZlcjoKKyAgICAgICAgcmV0dXJuIFdITFNMOjpC
aW5kaW5nVHlwZTo6VW5pZm9ybUJ1ZmZlcjsKKyAgICBjYXNlIEdQVUJpbmRHcm91cExheW91dEJp
bmRpbmc6OkJpbmRpbmdUeXBlOjpTYW1wbGVyOgorICAgICAgICByZXR1cm4gV0hMU0w6OkJpbmRp
bmdUeXBlOjpTYW1wbGVyOworICAgIGNhc2UgR1BVQmluZEdyb3VwTGF5b3V0QmluZGluZzo6Qmlu
ZGluZ1R5cGU6OlNhbXBsZWRUZXh0dXJlOgorICAgICAgICByZXR1cm4gV0hMU0w6OkJpbmRpbmdU
eXBlOjpUZXh0dXJlOworICAgIGNhc2UgR1BVQmluZEdyb3VwTGF5b3V0QmluZGluZzo6QmluZGlu
Z1R5cGU6OlN0b3JhZ2VCdWZmZXI6CisgICAgICAgIHJldHVybiBXSExTTDo6QmluZGluZ1R5cGU6
OlN0b3JhZ2VCdWZmZXI7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICB9Cit9CisKK3N0YXRpYyBPcHRpb25hbDxXSExTTDo6VGV4dHVyZUZvcm1hdD4gY29u
dmVydFRleHR1cmVGb3JtYXQoR1BVVGV4dHVyZUZvcm1hdCBmb3JtYXQpCit7CisgICAgc3dpdGNo
IChmb3JtYXQpIHsKKyAgICBjYXNlIEdQVVRleHR1cmVGb3JtYXQ6OlJnYmE4dW5vcm06CisgICAg
ICAgIHJldHVybiBXSExTTDo6VGV4dHVyZUZvcm1hdDo6UkdCQThVbm9ybTsKKyAgICBjYXNlIEdQ
VVRleHR1cmVGb3JtYXQ6OlJnYmE4dWludDoKKyAgICAgICAgcmV0dXJuIFdITFNMOjpUZXh0dXJl
Rm9ybWF0OjpSR0JBOFVpbnQ7CisgICAgY2FzZSBHUFVUZXh0dXJlRm9ybWF0OjpCZ3JhOHVub3Jt
OgorICAgICAgICByZXR1cm4gV0hMU0w6OlRleHR1cmVGb3JtYXQ6OkJHUkE4VW5vcm07CisgICAg
Y2FzZSBHUFVUZXh0dXJlRm9ybWF0OjpEZXB0aDMyZmxvYXRTdGVuY2lsODoKKyAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsgLy8gRklYTUU6IEZpZ3VyZSBvdXQgd2hhdCB0byBkbyB3aXRoIHRo
aXMuCisgICAgY2FzZSBHUFVUZXh0dXJlRm9ybWF0OjpCZ3JhOHVub3JtU1JHQjoKKyAgICAgICAg
cmV0dXJuIFdITFNMOjpUZXh0dXJlRm9ybWF0OjpCR1JBOFVub3JtU3JnYjsKKyAgICBjYXNlIEdQ
VVRleHR1cmVGb3JtYXQ6OlJnYmExNmZsb2F0OgorICAgICAgICByZXR1cm4gV0hMU0w6OlRleHR1
cmVGb3JtYXQ6OlJHQkExNkZsb2F0OworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgfQorfQorCitzdGF0aWMgT3B0aW9uYWw8V0hMU0w6OkxheW91dD4gY29u
dmVydExheW91dChjb25zdCBHUFVQaXBlbGluZUxheW91dCYgbGF5b3V0KQoreworICAgIFdITFNM
OjpMYXlvdXQgcmVzdWx0OworICAgIGlmIChsYXlvdXQuYmluZEdyb3VwTGF5b3V0cygpLnNpemUo
KSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKKyAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxheW91dC5iaW5kR3Jv
dXBMYXlvdXRzKCkuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgY29uc3QgYXV0byYgYmluZEdyb3Vw
TGF5b3V0ID0gbGF5b3V0LmJpbmRHcm91cExheW91dHMoKVtpXTsKKyAgICAgICAgV0hMU0w6OkJp
bmRHcm91cCBiaW5kR3JvdXA7CisgICAgICAgIGJpbmRHcm91cC5uYW1lID0gc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGkpOworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGtleVZhbHVlUGFpciA6IGJp
bmRHcm91cExheW91dC0+YmluZGluZ3NNYXAoKSkgeworICAgICAgICAgICAgY29uc3QgYXV0byYg
Z3B1QmluZEdyb3VwTGF5b3V0QmluZGluZyA9IGtleVZhbHVlUGFpci52YWx1ZTsKKyAgICAgICAg
ICAgIFdITFNMOjpCaW5kaW5nIGJpbmRpbmc7CisgICAgICAgICAgICBiaW5kaW5nLnZpc2liaWxp
dHkgPSBjb252ZXJ0U2hhZGVyU3RhZ2VGbGFncyhncHVCaW5kR3JvdXBMYXlvdXRCaW5kaW5nLnZp
c2liaWxpdHkpOworICAgICAgICAgICAgaWYgKGF1dG8gYmluZGluZ1R5cGUgPSBjb252ZXJ0Qmlu
ZGluZ1R5cGUoZ3B1QmluZEdyb3VwTGF5b3V0QmluZGluZy50eXBlKSkKKyAgICAgICAgICAgICAg
ICBiaW5kaW5nLmJpbmRpbmdUeXBlID0gKmJpbmRpbmdUeXBlOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICBpZiAoZ3B1
QmluZEdyb3VwTGF5b3V0QmluZGluZy5iaW5kaW5nID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNp
Z25lZD46Om1heCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgICAgICBiaW5kaW5nLm5hbWUgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZ3B1QmluZEdyb3Vw
TGF5b3V0QmluZGluZy5iaW5kaW5nKTsKKyAgICAgICAgICAgIGJpbmRHcm91cC5iaW5kaW5ncy5h
cHBlbmQoV1RGTW92ZShiaW5kaW5nKSk7CisgICAgICAgIH0KKyAgICAgICAgcmVzdWx0LmFwcGVu
ZChXVEZNb3ZlKGJpbmRHcm91cCkpOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCitz
dGF0aWMgT3B0aW9uYWw8V0hMU0w6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcj4gY29udmVydFJl
bmRlclBpcGVsaW5lRGVzY3JpcHRvcihjb25zdCBHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3Im
IGRlc2NyaXB0b3IpCit7CisgICAgV0hMU0w6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciB3aGxz
bERlc2NyaXB0b3I7CisgICAgaWYgKGRlc2NyaXB0b3IuaW5wdXRTdGF0ZS5hdHRyaWJ1dGVzLnNp
emUoKSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKKyAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoZGVzY3JpcHRvci5jb2xvclN0YXRlcy5zaXplKCkg
PiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCisgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGRlc2NyaXB0b3IuaW5w
dXRTdGF0ZS5hdHRyaWJ1dGVzLnNpemUoKTsgKytpKQorICAgICAgICB3aGxzbERlc2NyaXB0b3Iu
dmVydGV4QXR0cmlidXRlcy5hcHBlbmQoeyBjb252ZXJ0VmVydGV4Rm9ybWF0KGRlc2NyaXB0b3Iu
aW5wdXRTdGF0ZS5hdHRyaWJ1dGVzW2ldLmZvcm1hdCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihp
KSB9KTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZGVzY3JpcHRvci5jb2xvclN0YXRl
cy5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAoYXV0byBmb3JtYXQgPSBjb252ZXJ0VGV4dHVy
ZUZvcm1hdChkZXNjcmlwdG9yLmNvbG9yU3RhdGVzW2ldLmZvcm1hdCkpCisgICAgICAgICAgICB3
aGxzbERlc2NyaXB0b3IuYXR0YWNobWVudHNTdGF0ZURlc2NyaXB0b3IuYXR0YWNobWVudERlc2Ny
aXB0b3JzLmFwcGVuZCh7KmZvcm1hdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGkpfSk7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgfQorCisgICAg
Ly8gRklYTUU6IGRlcHRoU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yIGlzbid0IGltcGxlbWVu
dGVkIHlldC4KKworICAgIGlmIChkZXNjcmlwdG9yLmxheW91dCkgeworICAgICAgICBpZiAoYXV0
byBsYXlvdXQgPSBjb252ZXJ0TGF5b3V0KCpkZXNjcmlwdG9yLmxheW91dCkpCisgICAgICAgICAg
ICB3aGxzbERlc2NyaXB0b3IubGF5b3V0ID0gV1RGTW92ZSgqbGF5b3V0KTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICB9CisgICAgd2hsc2xEZXNj
cmlwdG9yLnZlcnRleEVudHJ5UG9pbnROYW1lID0gZGVzY3JpcHRvci52ZXJ0ZXhTdGFnZS5lbnRy
eVBvaW50OworICAgIHdobHNsRGVzY3JpcHRvci5mcmFnbWVudEVudHJ5UG9pbnROYW1lID0gZGVz
Y3JpcHRvci5mcmFnbWVudFN0YWdlLmVudHJ5UG9pbnQ7CisgICAgcmV0dXJuIHdobHNsRGVzY3Jp
cHRvcjsKK30KKworc3RhdGljIGJvb2wgdHJ5U2V0TWV0YWxGdW5jdGlvbnNGb3JQaXBlbGluZURl
c2NyaXB0b3IoY29uc3QgY2hhciogY29uc3QgZnVuY3Rpb25OYW1lLCBNVExMaWJyYXJ5ICp2ZXJ0
ZXhNZXRhbExpYnJhcnksIE1UTExpYnJhcnkgKmZyYWdtZW50TWV0YWxMaWJyYXJ5LCBNVExSZW5k
ZXJQaXBlbGluZURlc2NyaXB0b3IgKm10bERlc2NyaXB0b3IsIGNvbnN0IFN0cmluZyYgdmVydGV4
RW50cnlQb2ludE5hbWUsIGNvbnN0IFN0cmluZyYgZnJhZ21lbnRFbnRyeVBvaW50TmFtZSkKIHsK
ICNpZiBMT0dfRElTQUJMRUQKICAgICBVTlVTRURfUEFSQU0oZnVuY3Rpb25OYW1lKTsKICNlbmRp
ZgotICAgIGNvbnN0IGF1dG8mIHZlcnRleFN0YWdlID0gZGVzY3JpcHRvci52ZXJ0ZXhTdGFnZTsK
LSAgICBhdXRvIG10bExpYnJhcnkgPSB2ZXJ0ZXhTdGFnZS5tb2R1bGUtPnBsYXRmb3JtU2hhZGVy
TW9kdWxlKCk7Ci0gICAgaWYgKCFtdGxMaWJyYXJ5KSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICIl
czogTVRMTGlicmFyeSBmb3IgdmVydGV4IHN0YWdlIGRvZXMgbm90IGV4aXN0ISIsIGZ1bmN0aW9u
TmFtZSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHsKKyAgICAgICAgQkVHSU5fQkxP
Q0tfT0JKQ19FWENFUFRJT05TOworCisgICAgICAgIC8vIE1ldGFsIHJlcXVpcmVzIGEgdmVydGV4
IHNoYWRlciBpbiBhbGwgcmVuZGVyIHBpcGVsaW5lcy4KKyAgICAgICAgaWYgKCF2ZXJ0ZXhNZXRh
bExpYnJhcnkpIHsKKyAgICAgICAgICAgIExPRyhXZWJHUFUsICIlczogTVRMTGlicmFyeSBmb3Ig
dmVydGV4IHN0YWdlIGRvZXMgbm90IGV4aXN0ISIsIGZ1bmN0aW9uTmFtZSk7CisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBhdXRvIGZ1bmN0aW9uID0gYWRv
cHROUyhbdmVydGV4TWV0YWxMaWJyYXJ5IG5ld0Z1bmN0aW9uV2l0aE5hbWU6dmVydGV4RW50cnlQ
b2ludE5hbWVdKTsKKyAgICAgICAgaWYgKCFmdW5jdGlvbikgeworICAgICAgICAgICAgTE9HKFdl
YkdQVSwgIiVzOiBDYW5ub3QgY3JlYXRlIHZlcnRleCBNVExGdW5jdGlvbiBcIiVzXCIhIiwgZnVu
Y3Rpb25OYW1lLCB2ZXJ0ZXhFbnRyeVBvaW50TmFtZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIFttdGxEZXNjcmlwdG9yIHNl
dFZlcnRleEZ1bmN0aW9uOmZ1bmN0aW9uLmdldCgpXTsKKworICAgICAgICBFTkRfQkxPQ0tfT0JK
Q19FWENFUFRJT05TOwogICAgIH0KIAotICAgIGF1dG8gZnVuY3Rpb24gPSBhZG9wdE5TKFttdGxM
aWJyYXJ5IG5ld0Z1bmN0aW9uV2l0aE5hbWU6dmVydGV4U3RhZ2UuZW50cnlQb2ludF0pOwotICAg
IGlmICghZnVuY3Rpb24pIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIiVzOiBWZXJ0ZXggTVRMRnVu
Y3Rpb24gXCIlc1wiIG5vdCBmb3VuZCEiLCBmdW5jdGlvbk5hbWUsIHZlcnRleFN0YWdlLmVudHJ5
UG9pbnQudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB7CisgICAg
ICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKKworICAgICAgICAvLyBIb3dldmVyLCBm
cmFnbWVudCBzaGFkZXJzIGFyZSBvcHRpb25hbC4KKyAgICAgICAgaWYgKCFmcmFnbWVudE1ldGFs
TGlicmFyeSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAgIGF1dG8gZnVuY3Rp
b24gPSBhZG9wdE5TKFtmcmFnbWVudE1ldGFsTGlicmFyeSBuZXdGdW5jdGlvbldpdGhOYW1lOmZy
YWdtZW50RW50cnlQb2ludE5hbWVdKTsKKworICAgICAgICBpZiAoIWZ1bmN0aW9uKSB7CisgICAg
ICAgICAgICBMT0coV2ViR1BVLCAiJXM6IENhbm5vdCBjcmVhdGUgZnJhZ21lbnQgTVRMRnVuY3Rp
b24gXCIlc1wiISIsIGZ1bmN0aW9uTmFtZSwgZnJhZ21lbnRFbnRyeVBvaW50TmFtZS51dGY4KCku
ZGF0YSgpKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAg
IFttdGxEZXNjcmlwdG9yIHNldEZyYWdtZW50RnVuY3Rpb246ZnVuY3Rpb24uZ2V0KCldOworICAg
ICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwog
ICAgIH0KIAotICAgIFttdGxEZXNjcmlwdG9yIHNldFZlcnRleEZ1bmN0aW9uOmZ1bmN0aW9uLmdl
dCgpXTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CiAKLSAgICBjb25zdCBhdXRvJiBmcmFnbWVudFN0
YWdlID0gZGVzY3JpcHRvci5mcmFnbWVudFN0YWdlOwotICAgIGlmICghKG10bExpYnJhcnkgPSBm
cmFnbWVudFN0YWdlLm1vZHVsZS0+cGxhdGZvcm1TaGFkZXJNb2R1bGUoKSkpIHsKLSAgICAgICAg
TE9HKFdlYkdQVSwgIiVzOiBNVExMaWJyYXJ5IGZvciBmcmFnbWVudCBzdGFnZSBkb2VzIG5vdCBl
eGlzdCEiLCBmdW5jdGlvbk5hbWUpOworc3RhdGljIGJvb2wgdHJ5U2V0V0hMU0xGdW5jdGlvbnNG
b3JQaXBlbGluZURlc2NyaXB0b3IoY29uc3QgY2hhciogY29uc3QgZnVuY3Rpb25OYW1lLCBNVExS
ZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgKm10bERlc2NyaXB0b3IsIGNvbnN0IEdQVVJlbmRlclBp
cGVsaW5lRGVzY3JpcHRvciYgZGVzY3JpcHRvciwgU3RyaW5nIHdobHNsU291cmNlLCBjb25zdCBH
UFVEZXZpY2UmIGRldmljZSkKK3sKKyAgICBhdXRvIHdobHNsRGVzY3JpcHRvciA9IGNvbnZlcnRS
ZW5kZXJQaXBlbGluZURlc2NyaXB0b3IoZGVzY3JpcHRvcik7CisgICAgaWYgKCF3aGxzbERlc2Ny
aXB0b3IpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9CiAKLSAgICBpZiAoIShmdW5jdGlv
biA9IGFkb3B0TlMoW210bExpYnJhcnkgbmV3RnVuY3Rpb25XaXRoTmFtZTpmcmFnbWVudFN0YWdl
LmVudHJ5UG9pbnRdKSkpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIiVzOiBGcmFnbWVudCBNVExG
dW5jdGlvbiBcIiVzXCIgbm90IGZvdW5kISIsIGZ1bmN0aW9uTmFtZSwgZnJhZ21lbnRTdGFnZS5l
bnRyeVBvaW50LnV0ZjgoKS5kYXRhKCkpOworICAgIGF1dG8gcmVzdWx0ID0gV0hMU0w6OnByZXBh
cmUod2hsc2xTb3VyY2UsICp3aGxzbERlc2NyaXB0b3IpOworICAgIGlmICghcmVzdWx0KQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBOU0Vycm9yICplcnJvciA9IG5pbDsKKyAgICBhdXRv
IGxpYnJhcnkgPSBhZG9wdE5TKFtkZXZpY2UucGxhdGZvcm1EZXZpY2UoKSBuZXdMaWJyYXJ5V2l0
aFNvdXJjZTpyZXN1bHQtPm1ldGFsU291cmNlIG9wdGlvbnM6bmlsIGVycm9yOiZlcnJvcl0pOwor
ICAgIGlmICghbGlicmFyeSB8fCBlcnJvcikgeworICAgICAgICBMT0coV2ViR1BVLCAiU2hhZGVy
IGNvbXBpbGF0aW9uIGVycm9yOiAlcyIsIFtbZXJyb3IgbG9jYWxpemVkRGVzY3JpcHRpb25dIFVU
RjhTdHJpbmddKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIFttdGxEZXNj
cmlwdG9yIHNldEZyYWdtZW50RnVuY3Rpb246ZnVuY3Rpb24uZ2V0KCldOwotICAgIHJldHVybiB0
cnVlOworICAgIHJldHVybiB0cnlTZXRNZXRhbEZ1bmN0aW9uc0ZvclBpcGVsaW5lRGVzY3JpcHRv
cihmdW5jdGlvbk5hbWUsIGxpYnJhcnkuZ2V0KCksIGxpYnJhcnkuZ2V0KCksIG10bERlc2NyaXB0
b3IsIHJlc3VsdC0+bWFuZ2xlZFZlcnRleEVudHJ5UG9pbnROYW1lLCByZXN1bHQtPm1hbmdsZWRG
cmFnbWVudEVudHJ5UG9pbnROYW1lKTsKK30KKworc3RhdGljIGJvb2wgdHJ5U2V0RnVuY3Rpb25z
Rm9yUGlwZWxpbmVEZXNjcmlwdG9yKGNvbnN0IGNoYXIqIGNvbnN0IGZ1bmN0aW9uTmFtZSwgTVRM
UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yICptdGxEZXNjcmlwdG9yLCBjb25zdCBHUFVSZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGNvbnN0IEdQVURldmljZSYgZGV2aWNlKQor
eworICAgIGNvbnN0IGF1dG8mIHZlcnRleFN0YWdlID0gZGVzY3JpcHRvci52ZXJ0ZXhTdGFnZTsK
KyAgICBjb25zdCBhdXRvJiBmcmFnbWVudFN0YWdlID0gZGVzY3JpcHRvci5mcmFnbWVudFN0YWdl
OworCisgICAgaWYgKHZlcnRleFN0YWdlLm1vZHVsZS5wdHIoKSA9PSBmcmFnbWVudFN0YWdlLm1v
ZHVsZS5wdHIoKSkgeworICAgICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE5NTQ0NgorICAgICAgICBjb25zdCBhdXRvJiB3aGxzbFNvdXJjZSA9
IHZlcnRleFN0YWdlLm1vZHVsZS0+d2hsc2xTb3VyY2UoKTsKKyAgICAgICAgaWYgKCF3aGxzbFNv
dXJjZS5pc051bGwoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnlTZXRXSExTTEZ1bmN0aW9uc0Zv
clBpcGVsaW5lRGVzY3JpcHRvcihmdW5jdGlvbk5hbWUsIG10bERlc2NyaXB0b3IsIGRlc2NyaXB0
b3IsIHdobHNsU291cmNlLCBkZXZpY2UpOworICAgIH0KKworICAgIGF1dG8gdmVydGV4TGlicmFy
eSA9IHZlcnRleFN0YWdlLm1vZHVsZS0+cGxhdGZvcm1TaGFkZXJNb2R1bGUoKTsKKyAgICBNVExM
aWJyYXJ5ICpmcmFnbWVudExpYnJhcnkgPSBuaWw7CisgICAgaWYgKCFmcmFnbWVudFN0YWdlLmVu
dHJ5UG9pbnQuaXNOdWxsKCkpCisgICAgICAgIGZyYWdtZW50TGlicmFyeSA9IGZyYWdtZW50U3Rh
Z2UubW9kdWxlLT5wbGF0Zm9ybVNoYWRlck1vZHVsZSgpOworCisgICAgcmV0dXJuIHRyeVNldE1l
dGFsRnVuY3Rpb25zRm9yUGlwZWxpbmVEZXNjcmlwdG9yKGZ1bmN0aW9uTmFtZSwgdmVydGV4TGli
cmFyeSwgZnJhZ21lbnRMaWJyYXJ5LCBtdGxEZXNjcmlwdG9yLCB2ZXJ0ZXhTdGFnZS5lbnRyeVBv
aW50LCBmcmFnbWVudFN0YWdlLmVudHJ5UG9pbnQpOwogfQogCiBzdGF0aWMgTVRMVmVydGV4Rm9y
bWF0IG10bFZlcnRleEZvcm1hdEZvckdQVVZlcnRleEZvcm1hdChHUFVWZXJ0ZXhGb3JtYXQgZm9y
bWF0KQpAQCAtMjIwLDcgKzM5Niw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TVRMUmVuZGVyUGlwZWxp
bmVTdGF0ZT4gdHJ5Q3JlYXRlTXRsUmVuZGVyUGlwZWxpbmVTdGF0ZShjb25zdCBjCiAKICAgICBC
RUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiAKLSAgICBkaWRTZXRGdW5jdGlvbnMgPSB0cnlT
ZXRGdW5jdGlvbnNGb3JQaXBlbGluZURlc2NyaXB0b3IoZnVuY3Rpb25OYW1lLCBtdGxEZXNjcmlw
dG9yLmdldCgpLCBkZXNjcmlwdG9yKTsKKyAgICBkaWRTZXRGdW5jdGlvbnMgPSB0cnlTZXRGdW5j
dGlvbnNGb3JQaXBlbGluZURlc2NyaXB0b3IoZnVuY3Rpb25OYW1lLCBtdGxEZXNjcmlwdG9yLmdl
dCgpLCBkZXNjcmlwdG9yLCBkZXZpY2UpOwogICAgIGRpZFNldElucHV0U3RhdGUgPSB0cnlTZXRJ
bnB1dFN0YXRlRm9yUGlwZWxpbmVEZXNjcmlwdG9yKGZ1bmN0aW9uTmFtZSwgbXRsRGVzY3JpcHRv
ci5nZXQoKSwgZGVzY3JpcHRvci5pbnB1dFN0YXRlKTsKICAgICBkaWRTZXRDb2xvclN0YXRlcyA9
IHRyeVNldENvbG9yU3RhdGVzRm9yQ29sb3JBdHRhY2htZW50QXJyYXkobXRsRGVzY3JpcHRvci5n
ZXQoKS5jb2xvckF0dGFjaG1lbnRzLCBkZXNjcmlwdG9yLmNvbG9yU3RhdGVzKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVNoYWRl
ck1vZHVsZU1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2Nv
Y29hL0dQVVNoYWRlck1vZHVsZU1ldGFsLm1tCmluZGV4IDQ1NTNhMTVkZjVmY2MwNzNmYzFhNTQx
MzdmNjA3YzBhZTExNDA0YTcuLjFhYWY2YmY2YWU0YTE1NTE5YjdhZmJlZGU2OTVjNWU4ZTk5ZThh
YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2Nv
YS9HUFVTaGFkZXJNb2R1bGVNZXRhbC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvY29jb2EvR1BVU2hhZGVyTW9kdWxlTWV0YWwubW0KQEAgLTQzLDYgKzQzLDkg
QEAgUmVmUHRyPEdQVVNoYWRlck1vZHVsZT4gR1BVU2hhZGVyTW9kdWxlOjpjcmVhdGUoY29uc3Qg
R1BVRGV2aWNlJiBkZXZpY2UsIEdQVVNoYWQKICAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVNoYWRl
ck1vZHVsZTo6Y3JlYXRlKCk6IEludmFsaWQgR1BVRGV2aWNlISIpOwogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICB9CisgICAgCisgICAgaWYgKGRlc2NyaXB0b3IuaXNXSExTTCkKKyAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBHUFVTaGFkZXJNb2R1bGUoU3RyaW5nKGRlc2NyaXB0b3Iu
Y29kZSkpKTsKIAogICAgIFBsYXRmb3JtU2hhZGVyTW9kdWxlU21hcnRQdHIgbW9kdWxlOwogCkBA
IC02Myw2ICs2NiwxMSBAQCBHUFVTaGFkZXJNb2R1bGU6OkdQVVNoYWRlck1vZHVsZShQbGF0Zm9y
bVNoYWRlck1vZHVsZVNtYXJ0UHRyJiYgbW9kdWxlKQogewogfQogCitHUFVTaGFkZXJNb2R1bGU6
OkdQVVNoYWRlck1vZHVsZShTdHJpbmcmJiB3aGxzbFNvdXJjZSkKKyAgICA6IG1fd2hsc2xTb3Vy
Y2UoV1RGTW92ZSh3aGxzbFNvdXJjZSkpCit7Cit9CisKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShX
RUJHUFUpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggYjk4NTgwNDg0NDNjNWU5NzRhNDkyNDNhYzM2MzIwMGM5NTZmODFhOS4u
MGMyNGJlNWJmMGVhNTkyZjkyMzJmNzhhNTIzMzRjYzkzMTE0ZGRhYyAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDEyIEBACisyMDE5LTAzLTEzICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5j
b20+CisKKyAgICAgICAgW1dITFNMXSBDb21waWxlciB1c2VzIHN0ZDo6ZnVuY3Rpb24gaW5zdGVh
ZCBvZiBXVEY6OkZ1bmN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xOTU3MjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHdlYmdwdS93aGxzbC5odG1sOiBBZGRlZC4KKwogMjAxOS0wMy0xMyAgRGVh
biBKYWNrc29uICA8ZGlub0BhcHBsZS5jb20+CiAKICAgICAgICAgQmxvY2sgYWxsIHBsdWdpbnMg
c21hbGxlciB0aGFuIDV4NXB4CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wu
aHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93aGxzbC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdiNGYyMDk3
NDdjMTg5ZjA4MDExZmYzNWM1NWU0NWU2OTg1MTUxNjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wuaHRtbApAQCAtMCwwICsxLDYxIEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGhlYWQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+Citjb25zdCBzaGFk
ZXJTb3VyY2UgPSBgCitzdHJ1Y3QgVmVydGV4T3V0IHsKKyAgICBmbG9hdDQgcG9zIDogU1ZfUG9z
aXRpb247CisgICAgZmxvYXQgaiA6IGF0dHJpYnV0ZSgwKTsKK30KKwordmVydGV4IFZlcnRleE91
dCB2ZXJ0ZXhTaGFkZXIoZmxvYXQ0IHBvc2l0aW9uIDogYXR0cmlidXRlKDApLCBmbG9hdCBpIDog
YXR0cmlidXRlKDEpKSB7CisgICAgVmVydGV4T3V0IHJlc3VsdDsKKyAgICByZXN1bHQucG9zID0g
cG9zaXRpb247CisgICAgcmVzdWx0LmogPSBpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0
cnVjdCBGcmFnbWVudEluIHsKKyAgICBmbG9hdCBrIDogYXR0cmlidXRlKDApOworfQorCitmcmFn
bWVudCBmbG9hdDQgZnJhZ21lbnRTaGFkZXIoRnJhZ21lbnRJbiBmcmFnbWVudEluKSA6IFNWX1Rh
cmdldCAwIHsKKyAgICByZXR1cm4gZmxvYXQ0KGZyYWdtZW50SW4uaywgMCwgMCwgMSk7Cit9Citg
OworYXN5bmMgZnVuY3Rpb24gc3RhcnQoKSB7CisgICAgY29uc3QgYWRhcHRlciA9IGF3YWl0IHdp
bmRvdy5ncHUucmVxdWVzdEFkYXB0ZXIoKTsKKyAgICBjb25zdCBkZXZpY2UgPSBhZGFwdGVyLmNy
ZWF0ZURldmljZSgpOworCisgICAgY29uc3Qgc2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNo
YWRlck1vZHVsZSh7Y29kZTogc2hhZGVyU291cmNlLCBpc1dITFNMOiB0cnVlfSk7CisgICAgY29u
c3QgdmVydGV4U3RhZ2UgPSB7bW9kdWxlOiBzaGFkZXJNb2R1bGUsIGVudHJ5UG9pbnQ6ICJ2ZXJ0
ZXhTaGFkZXIifTsKKyAgICBjb25zdCBmcmFnbWVudFN0YWdlID0ge21vZHVsZTogc2hhZGVyTW9k
dWxlLCBlbnRyeVBvaW50OiAiZnJhZ21lbnRTaGFkZXIifTsKKyAgICBjb25zdCBwcmltaXRpdmVU
b3BvbG9neSA9ICJ0cmlhbmdsZS1saXN0IjsKKyAgICBjb25zdCByYXN0ZXJpemF0aW9uU3RhdGUg
PSB7ZnJvbnRGYWNlOiAiY3ciLCBjdWxsTW9kZTogIm5vbmUifTsKKyAgICBjb25zdCBhbHBoYUJs
ZW5kID0ge3NyY0ZhY3RvcjogInplcm8iLCBkc3RGYWN0b3I6ICJvbmUiLCBvcGVyYXRpb246ICJh
ZGQifTsKKyAgICBjb25zdCBjb2xvckJsZW5kID0ge3NyY0ZhY3RvcjogInplcm8iLCBkc3RGYWN0
b3I6ICJvbmUiLCBvcGVyYXRpb246ICJhZGQifTsKKyAgICBjb25zdCBjb2xvclN0YXRlcyA9IFt7
Zm9ybWF0OiAicmdiYTh1bm9ybSIsIGFscGhhQmxlbmQsIGNvbG9yQmxlbmQsIHdyaXRlTWFzazog
MTV9XTsgLy8gR1BVQ29sb3JXcml0ZUJpdHMuQUxMCisgICAgY29uc3QgZGVwdGhTdGVuY2lsU3Rh
dGUgPSBudWxsOworICAgIAorICAgIGNvbnN0IGF0dHJpYnV0ZTAgPSB7c2hhZGVyTG9jYXRpb246
IDAsIGlucHV0U2xvdDogMCwgb2Zmc2V0OiAwLCBmb3JtYXQ6ICJmbG9hdDQifTsKKyAgICBjb25z
dCBhdHRyaWJ1dGUxID0ge3NoYWRlckxvY2F0aW9uOiAxLCBpbnB1dFNsb3Q6IDEsIG9mZnNldDog
MCwgZm9ybWF0OiAiZmxvYXQifTsKKyAgICBjb25zdCBhdHRyaWJ1dGVzID0gW2F0dHJpYnV0ZTAs
IGF0dHJpYnV0ZTFdOworICAgIGNvbnN0IGlucHV0MCA9IHtpbnB1dFNsb3Q6IDAsIHN0cmlkZTog
MTYsIHN0ZXBNb2RlOiAidmVydGV4In07CisgICAgY29uc3QgaW5wdXQxID0ge2lucHV0U2xvdDog
MSwgc3RyaWRlOiA0LCBzdGVwTW9kZTogInZlcnRleCJ9OworICAgIGNvbnN0IGlucHV0cyA9IFtp
bnB1dDAsIGlucHV0MV07CisgICAgY29uc3QgaW5wdXRTdGF0ZSA9IHtpbmRleEZvcm1hdDogInVp
bnQzMiIsIGF0dHJpYnV0ZXMsIGlucHV0c307CisKKyAgICBjb25zdCBiaW5kR3JvdXBMYXlvdXRE
ZXNjcmlwdG9yID0ge2JpbmRpbmdzOiBbe2JpbmRpbmc6IDAsIHZpc2liaWxpdHk6IDcsIHR5cGU6
ICJ1bmlmb3JtLWJ1ZmZlciJ9XX07CisgICAgY29uc3QgYmluZEdyb3VwTGF5b3V0ID0gZGV2aWNl
LmNyZWF0ZUJpbmRHcm91cExheW91dChiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yKTsKKyAgICBj
b25zdCBwaXBlbGluZUxheW91dERlc2NyaXB0b3IgPSB7YmluZEdyb3VwTGF5b3V0czogW2JpbmRH
cm91cExheW91dF19OworICAgIGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBp
cGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcik7CisKKyAgICBjb25zdCByZW5k
ZXJQaXBlbGluZURlc2NyaXB0b3IgPSB7dmVydGV4U3RhZ2UsIGZyYWdtZW50U3RhZ2UsIHByaW1p
dGl2ZVRvcG9sb2d5LCByYXN0ZXJpemF0aW9uU3RhdGUsIGNvbG9yU3RhdGVzLCBkZXB0aFN0ZW5j
aWxTdGF0ZSwgaW5wdXRTdGF0ZSwgc2FtcGxlQ291bnQ6IDEsIGxheW91dDogcGlwZWxpbmVMYXlv
dXR9OworICAgIGNvbnN0IHJlbmRlclBpcGVsaW5lID0gZGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVs
aW5lKHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcik7Cit9Cit3aW5kb3cuYWRkRXZlbnRMaXN0ZW5l
cigibG9hZCIsIHN0YXJ0KTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>