<?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>189159</bug_id>
          
          <creation_ts>2018-08-30 10:45:43 -0700</creation_ts>
          <short_desc>[MediaStream] Remove AVMediaCaptureSource</short_desc>
          <delta_ts>2018-08-31 05:43:41 -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>WebRTC</component>
          <version>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1455281</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2018-08-30 10:45:43 -0700</bug_when>
    <thetext>We only use AVCapture for video now, so there is no need for base class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455284</commentid>
    <comment_count>1</comment_count>
      <attachid>348508</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2018-08-30 10:52:52 -0700</bug_when>
    <thetext>Created attachment 348508
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455319</commentid>
    <comment_count>2</comment_count>
      <attachid>348519</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2018-08-30 11:30:57 -0700</bug_when>
    <thetext>Created attachment 348519
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455355</commentid>
    <comment_count>3</comment_count>
      <attachid>348529</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2018-08-30 12:38:22 -0700</bug_when>
    <thetext>Created attachment 348529
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455417</commentid>
    <comment_count>4</comment_count>
      <attachid>348551</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2018-08-30 14:30:12 -0700</bug_when>
    <thetext>Created attachment 348551
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455470</commentid>
    <comment_count>5</comment_count>
      <attachid>348551</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-08-30 16:40:44 -0700</bug_when>
    <thetext>Comment on attachment 348551
Patch for landing

Rejecting attachment 348551 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-03&apos;, &apos;validate-changelog&apos;, &apos;--check-oops&apos;, &apos;--non-interactive&apos;, 348551, &apos;--port=mac&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

ChangeLog entry in Source/WebCore/ChangeLog is not at the top of the file.

Full output: https://webkit-queues.webkit.org/results/9041724</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455654</commentid>
    <comment_count>6</comment_count>
      <attachid>348635</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2018-08-31 05:04:46 -0700</bug_when>
    <thetext>Created attachment 348635
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455655</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-08-31 05:05:01 -0700</bug_when>
    <thetext>&lt;rdar://problem/43935721&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455663</commentid>
    <comment_count>8</comment_count>
      <attachid>348635</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-08-31 05:43:39 -0700</bug_when>
    <thetext>Comment on attachment 348635
Patch for landing

Clearing flags on attachment: 348635

Committed r235549: &lt;https://trac.webkit.org/changeset/235549&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455664</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-08-31 05:43:41 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348508</attachid>
            <date>2018-08-30 10:52:52 -0700</date>
            <delta_ts>2018-08-30 14:30:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189159-20180830105251.patch</filename>
            <type>text/plain</type>
            <size>63004</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1NDY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDE3ZGM3NDBmNWE3OWJm
MjVlMzcxMWRiZWNjM2QwZTcwYjIxZjFlYS4uNDY1YTk3YzczZmE3MTQ0MzNmYzRlZjc3ODNlZmQ5
YmJmMGNmZGI4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDE4LTA4LTMwICBFcmlj
IENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRpYVN0cmVh
bV0gUmVtb3ZlIEFWTWVkaWFDYXB0dXJlU291cmNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODkxNTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIG5vIGNoYW5nZSBpbiBmdW5jdGlv
bmFsaXR5LgorCisgICAgICAgIFJlZmFjdG9yIHZpZGVvIGNhcHR1cmUgdG8gZ2V0IHJpZCBvZiBh
IGJhc2UgY2xhc3Mgd2UgZG9uJ3QgCisgICAgICAgIG5lZWQgYW55IG1vcmUuCisKKyAgICAgICAg
KiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL0FWTWVkaWFDYXB0dXJlU291cmNlLmg6IFJlbW92ZWQuCisgICAgICAg
ICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWTWVkaWFDYXB0dXJlU291cmNlLm1tOiBSZW1v
dmVkLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNv
dXJjZS5oOgorICAgICAgICAoV2ViQ29yZTo6QVZWaWRlb0NhcHR1cmVTb3VyY2U6OnNlc3Npb24g
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVZWaWRlb0NhcHR1cmVTb3VyY2U6OmRldmljZSBj
b25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJl
U291cmNlLm1tOgorICAgICAgICAoV2ViQ29yZTo6Z2xvYmFWaWRlb0NhcHR1cmVTZXJpYWxRdWV1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6QVZWaWRlb0NhcHR1
cmVTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6QVZWaWRlb0NhcHR1cmVTb3VyY2U6On5BVlZp
ZGVvQ2FwdHVyZVNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpBVlZpZGVvQ2FwdHVyZVNvdXJj
ZTo6c3RhcnRQcm9kdWNpbmdEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkFWVmlkZW9DYXB0dXJl
U291cmNlOjpzdG9wUHJvZHVjaW5nRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpBVlZpZGVvQ2Fw
dHVyZVNvdXJjZTo6YmVnaW5Db25maWd1cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkFWVmlk
ZW9DYXB0dXJlU291cmNlOjpjb21taXRDb25maWd1cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkFWVmlkZW9DYXB0dXJlU291cmNlOjpzZXR0aW5nc0RpZENoYW5nZSk6CisgICAgICAgIChXZWJD
b3JlOjpBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6c2V0dGluZ3MgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6QVZWaWRlb0NhcHR1cmVTb3VyY2U6OmNhcGFiaWxpdGllcyBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6c2V0UHJlc2V0KToKKyAgICAgICAgKFdl
YkNvcmU6OkFWVmlkZW9DYXB0dXJlU291cmNlOjpzZXR1cFNlc3Npb24pOgorICAgICAgICAoV2Vi
Q29yZTo6QVZWaWRlb0NhcHR1cmVTb3VyY2U6OnNldHVwQ2FwdHVyZVNlc3Npb24pOgorICAgICAg
ICAoV2ViQ29yZTo6QVZWaWRlb0NhcHR1cmVTb3VyY2U6OmNhcHR1cmVTZXNzaW9uSXNSdW5uaW5n
RGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkFWVmlkZW9DYXB0dXJlU291cmNlOjppbnRl
cnJ1cHRlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6
Y2FwdHVyZVNlc3Npb25SdW50aW1lRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6QVZWaWRlb0Nh
cHR1cmVTb3VyY2U6OmNhcHR1cmVTZXNzaW9uQmVnaW5JbnRlcnJ1cHRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6QVZWaWRlb0NhcHR1cmVTb3VyY2U6OmNhcHR1cmVTZXNzaW9uRW5kSW50ZXJydXB0
aW9uKToKKyAgICAgICAgKC1bV2ViQ29yZUFWVmlkZW9DYXB0dXJlU291cmNlT2JzZXJ2ZXIgaW5p
dFdpdGhDYWxsYmFjazpdKToKKyAgICAgICAgKC1bV2ViQ29yZUFWVmlkZW9DYXB0dXJlU291cmNl
T2JzZXJ2ZXIgZGlzY29ubmVjdF0pOgorICAgICAgICAoLVtXZWJDb3JlQVZWaWRlb0NhcHR1cmVT
b3VyY2VPYnNlcnZlciBhZGROb3RpZmljYXRpb25PYnNlcnZlcnNdKToKKyAgICAgICAgKC1bV2Vi
Q29yZUFWVmlkZW9DYXB0dXJlU291cmNlT2JzZXJ2ZXIgcmVtb3ZlTm90aWZpY2F0aW9uT2JzZXJ2
ZXJzXSk6CisgICAgICAgICgtW1dlYkNvcmVBVlZpZGVvQ2FwdHVyZVNvdXJjZU9ic2VydmVyIGNh
cHR1cmVPdXRwdXQ6ZGlkT3V0cHV0U2FtcGxlQnVmZmVyOmZyb21Db25uZWN0aW9uOl0pOgorICAg
ICAgICAoLVtXZWJDb3JlQVZWaWRlb0NhcHR1cmVTb3VyY2VPYnNlcnZlciBvYnNlcnZlVmFsdWVG
b3JLZXlQYXRoOm9mT2JqZWN0OmNoYW5nZTpjb250ZXh0Ol0pOgorICAgICAgICAoLVtXZWJDb3Jl
QVZWaWRlb0NhcHR1cmVTb3VyY2VPYnNlcnZlciBzZXNzaW9uUnVudGltZUVycm9yOl0pOgorICAg
ICAgICAoLVtXZWJDb3JlQVZWaWRlb0NhcHR1cmVTb3VyY2VPYnNlcnZlciBiZWdpblNlc3Npb25J
bnRlcnJ1cHRlZDpdKToKKyAgICAgICAgKC1bV2ViQ29yZUFWVmlkZW9DYXB0dXJlU291cmNlT2Jz
ZXJ2ZXIgZW5kU2Vzc2lvbkludGVycnVwdGVkOl0pOgorICAgICAgICAoV2ViQ29yZTo6QVZWaWRl
b0NhcHR1cmVTb3VyY2U6OmluaXRpYWxpemVDYXBhYmlsaXRpZXMpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6QVZWaWRlb0NhcHR1cmVTb3VyY2U6OmluaXRpYWxpemVTdXBwb3J0ZWRDb25z
dHJhaW50cyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBVlZpZGVvQ2FwdHVyZVNvdXJj
ZTo6dXBkYXRlU2V0dGluZ3MpOiBEZWxldGVkLgorCiAyMDE4LTA4LTI5ICBEYXZpZCBLaWx6ZXIg
IDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIGVtcHR5IGRpcmVjdG9yaWVz
IGZyb20gZnJvbSBzdm4ud2Via2l0Lm9yZyByZXBvc2l0b3J5CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOGMwMzIzY2U4NTIzNWEy
ZWNkYTNjODY1OWIwMTU4NWNiODRhOWE3ZS4uNjE2ZWI1ZjIxMmU4NGQ2OGVmNTQxZjc3OTM1OWJm
MmUzNjNmMDdlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtNzIsOCArNzIsNiBAQAogCQkwNzAzMzREOTE0NUEwMDZGMDA4RDhE
NDUgLyogVHJhY2tCYXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDA3MDMzNEQ4MTQ1QTAwNkYwMDhEOEQ0NSAvKiBUcmFja0Jhc2UuY3BwICovOyB9
OwogCQkwNzAzNjNFMjE4MUExQ0RDMDBDMDc0QTUgLyogQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcwMzYzREEx
ODFBMUNEQzAwQzA3NEE1IC8qIEFWQ2FwdHVyZURldmljZU1hbmFnZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwNzAzNjNFMzE4MUExQ0RDMDBD
MDc0QTUgLyogQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MDM2M0RCMTgxQTFDREMwMEMwNzRBNSAvKiBBVkNh
cHR1cmVEZXZpY2VNYW5hZ2VyLm1tICovOyB9OwotCQkwNzAzNjNFNDE4MUExQ0RDMDBDMDc0QTUg
LyogQVZNZWRpYUNhcHR1cmVTb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDA3MDM2M0RDMTgxQTFDREMwMEMwNzRBNSAvKiBBVk1lZGlhQ2FwdHVy
ZVNvdXJjZS5oICovOyB9OwotCQkwNzAzNjNFNTE4MUExQ0RDMDBDMDc0QTUgLyogQVZNZWRpYUNh
cHR1cmVTb3VyY2UubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwNzAzNjNERDE4MUExQ0RDMDBDMDc0QTUgLyogQVZNZWRpYUNhcHR1cmVTb3VyY2UubW0g
Ki87IH07CiAJCTA3MDM2M0U2MTgxQTFDREMwMEMwNzRBNSAvKiBBVlZpZGVvQ2FwdHVyZVNvdXJj
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcwMzYz
REUxODFBMUNEQzAwQzA3NEE1IC8qIEFWVmlkZW9DYXB0dXJlU291cmNlLmggKi87IH07CiAJCTA3
MDM2M0U3MTgxQTFDREMwMEMwNzRBNSAvKiBBVlZpZGVvQ2FwdHVyZVNvdXJjZS5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MDM2M0RGMTgxQTFDREMw
MEMwNzRBNSAvKiBBVlZpZGVvQ2FwdHVyZVNvdXJjZS5tbSAqLzsgfTsKIAkJMDcwNEE0MDgxRDZE
RTlGMTAwODZEQ0RCIC8qIE92ZXJjb25zdHJhaW5lZEVycm9yLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzA0QTQwNTFENkRFOUYxMDA4NkRDREIgLyog
T3ZlcmNvbnN0cmFpbmVkRXJyb3IuaCAqLzsgfTsKQEAgLTQwNTYsOCArNDA1NCw4IEBACiAJCUNE
RTU5NTk1MUJGMTZERjMwMEExQ0JFOCAvKiBDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbi5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERTU5NTkz
MUJGMTY2QUQwMEExQ0JFOCAvKiBDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbi5tbSAqLzsg
fTsKIAkJQ0RFNTk1OTcxQkYyNkUyMTAwQTFDQkU4IC8qIENETVNlc3Npb25NZWRpYVNvdXJjZUFW
Rk9iakMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENE
RTU5NTk2MUJGMjZFMjEwMEExQ0JFOCAvKiBDRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDLmgg
Ki87IH07CiAJCUNERTU5NTlEMUJGMjc1NzEwMEExQ0JFOCAvKiBDRE1TZXNzaW9uTWVkaWFTb3Vy
Y2VBVkZPYmpDLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0RFNTk1OUMxQkYyNzU3MTAwQTFDQkU4IC8qIENETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9i
akMubW0gKi87IH07Ci0JCUNERTY2N0E0MUU0QkJGMTUwMEU4MTU0QSAvKiBXZWJBdWRpb0J1ZmZl
ckxpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0RFNjY3QTIxRTRCQkYxNTAwRTgxNTRBIC8qIFdlYkF1ZGlvQnVmZmVyTGlzdC5jcHAgKi87IH07
Ci0JCUNERTY2N0E1MUU0QkJGMTUwMEU4MTU0QSAvKiBXZWJBdWRpb0J1ZmZlckxpc3QuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERTY2N0EzMUU0QkJG
MTUwMEU4MTU0QSAvKiBXZWJBdWRpb0J1ZmZlckxpc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDREU2NjdBNDFFNEJCRjE1MDBFODE1NEEgLyog
Y29jb2EvV2ViQXVkaW9CdWZmZXJMaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IENERTY2N0EyMUU0QkJGMTUwMEU4MTU0QSAvKiBjb2NvYS9XZWJB
dWRpb0J1ZmZlckxpc3QuY3BwICovOyB9OworCQlDREU2NjdBNTFFNEJCRjE1MDBFODE1NEEgLyog
Y29jb2EvV2ViQXVkaW9CdWZmZXJMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDREU2NjdBMzFFNEJCRjE1MDBFODE1NEEgLyogY29jb2EvV2ViQXVk
aW9CdWZmZXJMaXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJQ0RFN0ZDNDUxODE5MDRCMTAwMkJCQjc3IC8qIE9yZGVySXRlcmF0b3IuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERTdGQzQzMTgxOTA0
QjEwMDJCQkI3NyAvKiBPcmRlckl0ZXJhdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0RFODNEQjIxODNDNDQwNjAwMzFFQUEzIC8qIFZpZGVv
UGxheWJhY2tRdWFsaXR5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDREU4M0RCMDE4M0M0NDA2MDAzMUVBQTMgLyogVmlkZW9QbGF5YmFja1F1YWxpdHku
aCAqLzsgfTsKIAkJQ0RFOEI1RUMxQTY5Nzc3MzAwQjRCNjZBIC8qIExlZ2FjeUNETVByaXZhdGVD
bGVhcktleS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDREU4QjVFQTFBNjk3NzczMDBCNEI2NkEgLyogTGVnYWN5Q0RNUHJpdmF0ZUNsZWFyS2V5LmNw
cCAqLzsgfTsKQEAgLTUxNzUsOCArNTE3Myw2IEBACiAJCTA3MDMzNEU4MTQ1QTFGMzUwMDhEOEQ0
NSAvKiBKU1RyYWNrQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTVHJhY2tDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzAz
NjNEQTE4MUExQ0RDMDBDMDc0QTUgLyogQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3MDM2M0RCMTgxQTFDREMwMEMwNzRBNSAvKiBBVkNh
cHR1cmVEZXZpY2VNYW5hZ2VyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJMDcwMzYzREMxODFBMUNEQzAwQzA3NEE1IC8qIEFWTWVkaWFDYXB0dXJlU291cmNlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFWTWVkaWFDYXB0dXJlU291cmNlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTA3MDM2M0REMTgxQTFDREMwMEMwNzRBNSAv
KiBBVk1lZGlhQ2FwdHVyZVNvdXJjZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IEFWTWVkaWFDYXB0dXJlU291cmNlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwNzAzNjNERTE4MUExQ0RDMDBDMDc0QTUgLyogQVZWaWRlb0NhcHR1cmVTb3VyY2Uu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVZWaWRlb0NhcHR1cmVTb3VyY2Uu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDcwMzYzREYxODFBMUNEQzAwQzA3NEE1
IC8qIEFWVmlkZW9DYXB0dXJlU291cmNlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gQVZWaWRlb0NhcHR1cmVTb3VyY2UubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTA3MDRBNDAzMUQ2REU5RjEwMDg2RENEQiAvKiBPdmVyY29uc3RyYWluZWRFcnJv
ci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gT3ZlcmNvbnN0cmFpbmVkRXJyb3IuaWRsOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzA3Myw3ICs3MDY5LDcgQEAKIAkJMzM5QjVC
NjIxMzFEQUEzMjAwRjQ4RDAyIC8qIENvb2tpZXNTdHJhdGVneS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDb29raWVzU3RyYXRlZ3kuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMzY2MkY5ODQwNDdDRURCRTVERERBRkFBIC8qIFJlbmRlck1hdGhNTE1lbmNsb3Nl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlck1hdGhNTE1l
bmNsb3NlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzcxMTlBNzkyMENDQjYx
MDAwMkM2REM5IC8qIFdlYktpdFRhcmdldENvbmRpdGlvbmFscy54Y2NvbmZpZyAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBh
dGggPSBXZWJLaXRUYXJnZXRDb25kaXRpb25hbHMueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTM3MTdEN0U1MTdFQ0MzQTYwMDNDMjc2RCAvKiBleHRyYWN0LWxvY2FsaXph
YmxlLXN0cmluZ3MucGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0LnNjcmlwdC5wZXJsOyBuYW1lID0gZXh0cmFjdC1sb2NhbGl6YWJsZS1zdHJp
bmdzLnBsOyBwYXRoID0gIlNjcmlwdHMvZXh0cmFjdC1sb2NhbGl6YWJsZS1zdHJpbmdzLnBsIjsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzcxN0Q3RTUxN0VDQzNBNjAwM0MyNzZEIC8q
IGV4dHJhY3QtbG9jYWxpemFibGUtc3RyaW5ncy5wbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnBlcmw7IG5hbWUgPSAiZXh0cmFj
dC1sb2NhbGl6YWJsZS1zdHJpbmdzLnBsIjsgcGF0aCA9ICJTY3JpcHRzL2V4dHJhY3QtbG9jYWxp
emFibGUtc3RyaW5ncy5wbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3MUE2N0NB
MTFDNkM3REIwMDA0N0I4QiAvKiBIeXBoZW5hdGlvbkNGLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEh5cGhlbmF0aW9uQ0YuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkzNzFFNjVDQjEzNjYxRURDMDBCRUVEQjAgLyogUGFnZVNlcmlhbGl6ZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFnZVNlcmlhbGl6ZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzcxRTY1Q0QxMzY2MUVFRDAwQkVFREIwIC8qIFBhZ2VT
ZXJpYWxpemVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhZ2VT
ZXJpYWxpemVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzMzYwLDggKzEz
MzU2LDggQEAKIAkJQ0RFNTk1OUMxQkYyNzU3MTAwQTFDQkU4IC8qIENETVNlc3Npb25NZWRpYVNv
dXJjZUFWRk9iakMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBD
RE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlDREU2NTYwRTE3Q0E2RTc2MDA1MjZCQTcgLyogbWVkaWFDb250cm9sc0FwcGxlLmpzICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5qYXZhc2NyaXB0OyBwYXRoID0gbWVkaWFDb250cm9sc0FwcGxlLmpzOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDREU2NjdBMTFFNEJCQTREMDBFODE1NEEgLyogUGxhdGZvcm1BdWRp
b0RhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1BdWRpb0Rh
dGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQ0RFNjY3QTIxRTRCQkYxNTAwRTgx
NTRBIC8qIFdlYkF1ZGlvQnVmZmVyTGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBjb2NvYS9XZWJBdWRpb0J1ZmZlckxpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQlDREU2NjdBMzFFNEJCRjE1MDBFODE1NEEgLyogV2ViQXVkaW9CdWZmZXJM
aXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGNvY29hL1dlYkF1ZGlvQnVm
ZmVyTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREU2NjdBMjFFNEJCRjE1
MDBFODE1NEEgLyogY29jb2EvV2ViQXVkaW9CdWZmZXJMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IGNvY29hL1dlYkF1ZGlvQnVmZmVyTGlzdC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNERTY2N0EzMUU0QkJGMTUwMEU4MTU0QSAvKiBjb2Nv
YS9XZWJBdWRpb0J1ZmZlckxpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Y29jb2EvV2ViQXVkaW9CdWZmZXJMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUNERTdGQzQyMTgxOTA0QjEwMDJCQkI3NyAvKiBPcmRlckl0ZXJhdG9yLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE9yZGVySXRlcmF0b3IuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDREU3RkM0MzE4MTkwNEIxMDAyQkJCNzcgLyogT3JkZXJJdGVy
YXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBPcmRlckl0ZXJhdG9yLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNERTgzREFGMTgzQzQ0MDYwMDMxRUFBMyAv
KiBWaWRlb1BsYXliYWNrUXVhbGl0eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBWaWRlb1BsYXliYWNrUXVhbGl0eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xNTIxNCw4ICsxNTIxMCw2IEBACiAJCQkJMDdDMDQ2QzYxRTQyNTEyRjAwNzIwMUU3
IC8qIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYS5oICovLAogCQkJCTA3MDM2M0RB
MTgxQTFDREMwMEMwNzRBNSAvKiBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLmggKi8sCiAJCQkJMDcw
MzYzREIxODFBMUNEQzAwQzA3NEE1IC8qIEFWQ2FwdHVyZURldmljZU1hbmFnZXIubW0gKi8sCi0J
CQkJMDcwMzYzREMxODFBMUNEQzAwQzA3NEE1IC8qIEFWTWVkaWFDYXB0dXJlU291cmNlLmggKi8s
Ci0JCQkJMDcwMzYzREQxODFBMUNEQzAwQzA3NEE1IC8qIEFWTWVkaWFDYXB0dXJlU291cmNlLm1t
ICovLAogCQkJCTA3MDM2M0RFMTgxQTFDREMwMEMwNzRBNSAvKiBBVlZpZGVvQ2FwdHVyZVNvdXJj
ZS5oICovLAogCQkJCTA3MDM2M0RGMTgxQTFDREMwMEMwNzRBNSAvKiBBVlZpZGVvQ2FwdHVyZVNv
dXJjZS5tbSAqLywKIAkJCQkzRjgwMjAzMTFFOUUzODFEMDBERUM2MUQgLyogQ29yZUF1ZGlvQ2Fw
dHVyZURldmljZS5jcHAgKi8sCkBAIC0yNDU1NiwxMCArMjQ1NTAsMTAgQEAKIAkJQ0Q2NjlENjUx
RDIzMkRGNDAwNEQxODY2IC8qIGNvY29hICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQlj
aGlsZHJlbiA9ICgKKwkJCQlDREU2NjdBMjFFNEJCRjE1MDBFODE1NEEgLyogY29jb2EvV2ViQXVk
aW9CdWZmZXJMaXN0LmNwcCAqLywKKwkJCQlDREU2NjdBMzFFNEJCRjE1MDBFODE1NEEgLyogY29j
b2EvV2ViQXVkaW9CdWZmZXJMaXN0LmggKi8sCiAJCQkJQ0Q2NjlENjYxRDIzMkRGRjAwNEQxODY2
IC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5jcHAgKi8sCiAJCQkJQ0QyMjdFMzYyMTEzQUVG
QTAwRDI4NUFGIC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5oICovLAotCQkJCUNERTY2N0Ey
MUU0QkJGMTUwMEU4MTU0QSAvKiBXZWJBdWRpb0J1ZmZlckxpc3QuY3BwICovLAotCQkJCUNERTY2
N0EzMUU0QkJGMTUwMEU4MTU0QSAvKiBXZWJBdWRpb0J1ZmZlckxpc3QuaCAqLywKIAkJCSk7CiAJ
CQluYW1lID0gY29jb2E7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMjcxMTMsNyAr
MjcxMDcsNiBAQAogCQkJCUNEQzY3NTIzMUVBRUE5QjcwMDcyN0M4NCAvKiBBVkF1ZGlvU2Vzc2lv
bkNhcHR1cmVEZXZpY2VNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzAzNjNFMjE4MUEx
Q0RDMDBDMDc0QTUgLyogQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMDdGNEU5MzMyMEIzNTg3RjAwMkUzODAzIC8qIEFWRm91bmRhdGlvbk1JTUVUeXBlQ2FjaGUu
aCBpbiBIZWFkZXJzICovLAotCQkJCTA3MDM2M0U0MTgxQTFDREMwMEMwNzRBNSAvKiBBVk1lZGlh
Q2FwdHVyZVNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0QzMzZGNjIxN0Y5RjY0NzAwRERE
Q0QwIC8qIEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGwuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3
MDM2M0U2MTgxQTFDREMwMEMwNzRBNSAvKiBBVlZpZGVvQ2FwdHVyZVNvdXJjZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRjQ1QzIzMUUxOTk1QjczQjAwQTZFMkUzIC8qIEF4aXNTY3JvbGxTbmFwT2Zm
c2V0cy5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzI2OSw2ICsyNzI2Miw3IEBACiAJCQkJRkI5MkRG
NEIxNUZFRDA4NzAwOTk0NDMzIC8qIENsaXBQYXRoT3BlcmF0aW9uLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1ODAzNzE2MjFBNjZGMDBBMDBCQUY1MTkgLyogQ2xpcFJlY3QuaCBpbiBIZWFkZXJzICov
LAogCQkJCTk3QUFCRDEzMTRGQTA5RDUwMDc0NTdBRSAvKiBDbG9zZUV2ZW50LmggaW4gSGVhZGVy
cyAqLywKKwkJCQlDREU2NjdBNTFFNEJCRjE1MDBFODE1NEEgLyogY29jb2EvV2ViQXVkaW9CdWZm
ZXJMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlDMEMwNTRDQjExMThDOEU0MDBDRTI2MzYgLyog
Q29kZUdlbmVyYXRvci5wbSBpbiBIZWFkZXJzICovLAogCQkJCUJDNUVCNURGMEU4MUI5QUIwMEIy
NTk2NSAvKiBDb2xsYXBzZWRCb3JkZXJWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQyNUE0
OUExODI5MkI4NDAwMjBDRkNGIC8qIENvbGxlY3Rpb25JbmRleENhY2hlLmggaW4gSGVhZGVycyAq
LywKQEAgLTMwNzU5LDcgKzMwNzUzLDYgQEAKIAkJCQk3MTMyNDQ1MTIwMTA5REE1MDBBRTdGQjIg
LyogV2ViQW5pbWF0aW9uVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTg1MzY4NDFG
NEU0ODE0MDBGRTA5MUIgLyogV2ViQXJjaGl2ZVJlc291cmNlRnJvbU5TQXR0cmlidXRlZFN0cmlu
Zy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTE4QzM1NDQxRjcxOTcwQzAwRkY2MzJEIC8qIFdlYkFy
Y2hpdmVSZXNvdXJjZVdlYlJlc291cmNlSGFuZGxlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQ0RF
NjY3QTUxRTRCQkYxNTAwRTgxNTRBIC8qIFdlYkF1ZGlvQnVmZmVyTGlzdC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNDFCMkE2MjYxRUYxQkY2RDAwMkI5RDdBIC8qIFdlYkF1ZGlvU291cmNlUHJvdmlk
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3RDYzNzQwMUJCMEIxMTMwMDI1NkNFOSAvKiBXZWJB
dWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUYzNkVBOUMx
RTIxQkExNzAwNjIxRTI1IC8qIFdlYkJhY2tncm91bmRUYXNrQ29udHJvbGxlci5oIGluIEhlYWRl
cnMgKi8sCkBAIC0zMTM0NCw3ICszMTMzNyw2IEBACiAJCQkJQ0RDNjc1MjIxRUFFQTlCNzAwNzI3
Qzg0IC8qIEFWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXIubW0gaW4gU291cmNlcyAq
LywKIAkJCQkwNzAzNjNFMzE4MUExQ0RDMDBDMDc0QTUgLyogQVZDYXB0dXJlRGV2aWNlTWFuYWdl
ci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTA3MTk0MjdGMUQwODhGMjEwMDJBQTUxRCAvKiBBVkZv
dW5kYXRpb25NSU1FVHlwZUNhY2hlLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJMDcwMzYzRTUxODFB
MUNEQzAwQzA3NEE1IC8qIEFWTWVkaWFDYXB0dXJlU291cmNlLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQ0QzMzZGNjExN0Y5RjY0NzAwREREQ0QwIC8qIEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGwu
bW0gaW4gU291cmNlcyAqLywKIAkJCQkwNzAzNjNFNzE4MUExQ0RDMDBDMDc0QTUgLyogQVZWaWRl
b0NhcHR1cmVTb3VyY2UubW0gaW4gU291cmNlcyAqLywKIAkJCQk3QTQ1MDMyRjE4REI3MTcyMDAz
NzdCMzQgLyogQnVmZmVyZWRMaW5lUmVhZGVyLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzEzNTgs
NiArMzEzNTAsNyBAQAogCQkJCUNEREUwMkVEMThCM0VENkQwMENGN0ZGMSAvKiBDRE1TZXNzaW9u
QVZGb3VuZGF0aW9uT2JqQy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNEREUwMkYwMThCNTY1MTMw
MENGN0ZGMSAvKiBDRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQ0RFNTk1OUQxQkYyNzU3MTAwQTFDQkU4IC8qIENETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9i
akMubW0gaW4gU291cmNlcyAqLywKKwkJCQlDREU2NjdBNDFFNEJCRjE1MDBFODE1NEEgLyogY29j
b2EvV2ViQXVkaW9CdWZmZXJMaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExNDA5MEZCMUFB
NTFFMUQwMDkxMTkxQSAvKiBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXJDb2NvYS5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTA3QUZGNDIzMUVGQjE0NDkwMEI1NDVCMyAvKiBDb3JlQXVkaW9DYXB0
dXJlU291cmNlSU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNDZDNjk2Q0MxRTcyMDVGQzAwNTk3
OTM3IC8qIENQVU1vbml0b3IuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMjA4NCw3ICszMjA3Nyw2
IEBACiAJCQkJQTE0ODMyQjkxODdGNjNENTAwREE2M0E2IC8qIFdBS1ZpZXcubW0gaW4gU291cmNl
cyAqLywKIAkJCQlERTVGODYxRTFGQTI4MUZEMDA2REI2M0EgLyogV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXJCYXNlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJREU1Rjg2MUQxRkEyODE1QjAw
NkRCNjNBIC8qIFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tIGluIFNvdXJjZXMg
Ki8sCi0JCQkJQ0RFNjY3QTQxRTRCQkYxNTAwRTgxNTRBIC8qIFdlYkF1ZGlvQnVmZmVyTGlzdC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlDRDdFMDUyMjE2NTFDMjgyMDBDMTIwMUYgLyogV2ViQ29y
ZUFWRlJlc291cmNlTG9hZGVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0QyMjVDMEIxQzQ2RkJG
NDAwMTQwNzYxIC8qIFdlYkNvcmVOU1VSTFNlc3Npb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQk5
M0YxOUIwNzA4MjQ1RTU5MDAxRTlBQkMgLyogV2ViQ29yZVZpZXcubSBpbiBTb3VyY2VzICovLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWTWVk
aWFDYXB0dXJlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
NWY0ODQ3NmRlNmQ2ZjJiZmFhNzVkMjVmZjViMWJmZjMwMzBlNDA1NS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UuaAorKysgL2Rldi9udWxsCkBAIC0x
LDExNiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
Ci0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaWZuZGVmIEFWTWVkaWFDYXB0dXJlU291cmNlX2gKLSNkZWZpbmUgQVZNZWRpYUNh
cHR1cmVTb3VyY2VfaAotCi0jaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgVVNFKEFWRk9VTkRB
VElPTikKLQotI2luY2x1ZGUgIkdlbmVyaWNUYXNrUXVldWUuaCIKLSNpbmNsdWRlICJSZWFsdGlt
ZU1lZGlhU291cmNlLmgiCi0jaW5jbHVkZSAiVGltZXIuaCIKLSNpbmNsdWRlIDx3dGYvRnVuY3Rp
b24uaD4KLQotT0JKQ19DTEFTUyBBVkNhcHR1cmVBdWRpb0RhdGFPdXRwdXQ7Ci1PQkpDX0NMQVNT
IEFWQ2FwdHVyZUNvbm5lY3Rpb247Ci1PQkpDX0NMQVNTIEFWQ2FwdHVyZURldmljZTsKLU9CSkNf
Q0xBU1MgQVZDYXB0dXJlT3V0cHV0OwotT0JKQ19DTEFTUyBBVkNhcHR1cmVTZXNzaW9uOwotT0JK
Q19DTEFTUyBBVkNhcHR1cmVWaWRlb0RhdGFPdXRwdXQ7Ci1PQkpDX0NMQVNTIE5TRXJyb3I7Ci1P
QkpDX0NMQVNTIE5TTm90aWZpY2F0aW9uOwotT0JKQ19DTEFTUyBXZWJDb3JlQVZNZWRpYUNhcHR1
cmVTb3VyY2VPYnNlcnZlcjsKLQotdHlwZWRlZiBzdHJ1Y3Qgb3BhcXVlQ01TYW1wbGVCdWZmZXIg
KkNNU2FtcGxlQnVmZmVyUmVmOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEFWTWVk
aWFDYXB0dXJlU291cmNlOwotCi1jbGFzcyBBVk1lZGlhQ2FwdHVyZVNvdXJjZSA6IHB1YmxpYyBS
ZWFsdGltZU1lZGlhU291cmNlIHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5BVk1lZGlhQ2FwdHVy
ZVNvdXJjZSgpOwotCi0gICAgdmlydHVhbCB2b2lkIGNhcHR1cmVPdXRwdXREaWRPdXRwdXRTYW1w
bGVCdWZmZXJGcm9tQ29ubmVjdGlvbihBVkNhcHR1cmVPdXRwdXQqLCBDTVNhbXBsZUJ1ZmZlclJl
ZiwgQVZDYXB0dXJlQ29ubmVjdGlvbiopID0gMDsKLQotICAgIHZvaWQgY2FwdHVyZVNlc3Npb25J
c1J1bm5pbmdEaWRDaGFuZ2UoYm9vbCk7Ci0gICAgdm9pZCBjYXB0dXJlU2Vzc2lvblJ1bnRpbWVF
cnJvcihSZXRhaW5QdHI8TlNFcnJvcj4pOwotCi0gICAgZW51bSBjbGFzcyBJbnRlcnJ1cHRpb25S
ZWFzb24geyBOb25lLCBWaWRlb05vdEFsbG93ZWRJbkJhY2tncm91bmQsIEF1ZGlvSW5Vc2UsIFZp
ZGVvSW5Vc2UsIFZpZGVvTm90QWxsb3dlZEluU2lkZUJ5U2lkZSB9OwotICAgIHZvaWQgY2FwdHVy
ZVNlc3Npb25CZWdpbkludGVycnVwdGlvbihSZXRhaW5QdHI8TlNOb3RpZmljYXRpb24+KTsKLSAg
ICB2b2lkIGNhcHR1cmVTZXNzaW9uRW5kSW50ZXJydXB0aW9uKFJldGFpblB0cjxOU05vdGlmaWNh
dGlvbj4pOwotCi0gICAgQVZDYXB0dXJlU2Vzc2lvbiAqc2Vzc2lvbigpIGNvbnN0IHsgcmV0dXJu
IG1fc2Vzc2lvbi5nZXQoKTsgfQotCi0gICAgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRp
bmdzJiBzZXR0aW5ncygpIGNvbnN0IGZpbmFsOwotCi0gICAgdm9pZCBzdGFydFByb2R1Y2luZ0Rh
dGEoKSBmaW5hbDsKLSAgICB2b2lkIHN0b3BQcm9kdWNpbmdEYXRhKCkgZmluYWw7Ci0KLXByb3Rl
Y3RlZDoKLSAgICBBVk1lZGlhQ2FwdHVyZVNvdXJjZShBVkNhcHR1cmVEZXZpY2UqLCBjb25zdCBB
dG9taWNTdHJpbmcmLCBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlKTsKLQotICAgIHZpcnR1YWwg
Ym9vbCBzZXR1cENhcHR1cmVTZXNzaW9uKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzaHV0ZG93
bkNhcHR1cmVTZXNzaW9uKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTZXR0aW5ncyhS
ZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGluaXRp
YWxpemVDYXBhYmlsaXRpZXMoUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZVN1cHBvcnRlZENvbnN0cmFpbnRzKFJlYWx0aW1l
TWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cyYpID0gMDsKLQotICAgIEFWQ2FwdHVyZURl
dmljZSAqZGV2aWNlKCkgY29uc3QgeyByZXR1cm4gbV9kZXZpY2UuZ2V0KCk7IH0KLQotICAgIFJl
YWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cyYgc3VwcG9ydGVkQ29uc3RyYWlu
dHMoKTsKLSAgICBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJiBjYXBhYmls
aXRpZXMoKSBjb25zdCBmaW5hbDsKLQotICAgIHZvaWQgc2V0VmlkZW9TYW1wbGVCdWZmZXJEZWxl
Z2F0ZShBVkNhcHR1cmVWaWRlb0RhdGFPdXRwdXQqKTsKLSAgICB2b2lkIHNldEF1ZGlvU2FtcGxl
QnVmZmVyRGVsZWdhdGUoQVZDYXB0dXJlQXVkaW9EYXRhT3V0cHV0Kik7Ci0KLXByaXZhdGU6Ci0g
ICAgYm9vbCBzZXR1cFNlc3Npb24oKTsKLQotICAgIHZvaWQgYmVnaW5Db25maWd1cmF0aW9uKCkg
ZmluYWw7Ci0gICAgdm9pZCBjb21taXRDb25maWd1cmF0aW9uKCkgZmluYWw7Ci0KLSAgICBib29s
IGlzQ2FwdHVyZVNvdXJjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KLQotICAgIGJv
b2wgaW50ZXJydXB0ZWQoKSBjb25zdCBmaW5hbDsKLQotICAgIHZvaWQgaW5pdGlhbGl6ZVNldHRp
bmdzKCk7Ci0gICAgdm9pZCBpbml0aWFsaXplQ2FwYWJpbGl0aWVzKCk7Ci0KLSAgICBSZWFsdGlt
ZU1lZGlhU291cmNlU2V0dGluZ3MgbV9jdXJyZW50U2V0dGluZ3M7Ci0gICAgUmVhbHRpbWVNZWRp
YVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzIG1fc3VwcG9ydGVkQ29uc3RyYWludHM7Ci0gICAg
UmV0YWluUHRyPFdlYkNvcmVBVk1lZGlhQ2FwdHVyZVNvdXJjZU9ic2VydmVyPiBtX29iamNPYnNl
cnZlcjsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGll
cz4gbV9jYXBhYmlsaXRpZXM7Ci0gICAgUmV0YWluUHRyPEFWQ2FwdHVyZVNlc3Npb24+IG1fc2Vz
c2lvbjsKLSAgICBSZXRhaW5QdHI8QVZDYXB0dXJlRGV2aWNlPiBtX2RldmljZTsKLSAgICBJbnRl
cnJ1cHRpb25SZWFzb24gbV9pbnRlcnJ1cHRpb24geyBJbnRlcnJ1cHRpb25SZWFzb246Ok5vbmUg
fTsKLSAgICBib29sIG1faXNSdW5uaW5nIHsgZmFsc2UgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCi0KLSNlbmRpZiAvLyBB
Vk1lZGlhQ2FwdHVyZVNvdXJjZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UubW0KZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk4MjRhYTc1NGIyMTM5YjU0NWU3ODdjM2I1MjExYmMz
ZTAzODJiMjguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWTWVkaWFDYXB0dXJlU291
cmNlLm1tCisrKyAvZGV2L251bGwKQEAgLTEsNDQwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTMtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0g
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2lt
cG9ydCAiQVZNZWRpYUNhcHR1cmVTb3VyY2UuaCIKLQotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0p
ICYmIFVTRShBVkZPVU5EQVRJT04pCi0KLSNpbXBvcnQgIkFWQ2FwdHVyZURldmljZU1hbmFnZXIu
aCIKLSNpbXBvcnQgIkF1ZGlvU291cmNlUHJvdmlkZXIuaCIKLSNpbXBvcnQgIkxvZ2dpbmcuaCIK
LSNpbXBvcnQgIk1lZGlhQ29uc3RyYWludHMuaCIKLSNpbXBvcnQgIlJlYWx0aW1lTWVkaWFTb3Vy
Y2VTZXR0aW5ncy5oIgotI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWQ2FwdHVyZURldmljZS5oPgot
I2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWQ2FwdHVyZUlucHV0Lmg+Ci0jaW1wb3J0IDxBVkZvdW5k
YXRpb24vQVZDYXB0dXJlT3V0cHV0Lmg+Ci0jaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZDYXB0dXJl
U2Vzc2lvbi5oPgotI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWRXJyb3IuaD4KLSNpbXBvcnQgPG9i
amMvcnVudGltZS5oPgotI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KLQotI2ltcG9ydCA8cGFs
L2NmL0NvcmVNZWRpYVNvZnRMaW5rLmg+Ci0KLXR5cGVkZWYgQVZDYXB0dXJlQ29ubmVjdGlvbiBB
VkNhcHR1cmVDb25uZWN0aW9uVHlwZTsKLXR5cGVkZWYgQVZDYXB0dXJlRGV2aWNlIEFWQ2FwdHVy
ZURldmljZVR5cGVkZWY7Ci10eXBlZGVmIEFWQ2FwdHVyZURldmljZUlucHV0IEFWQ2FwdHVyZURl
dmljZUlucHV0VHlwZTsKLXR5cGVkZWYgQVZDYXB0dXJlT3V0cHV0IEFWQ2FwdHVyZU91dHB1dFR5
cGU7Ci10eXBlZGVmIEFWQ2FwdHVyZVNlc3Npb24gQVZDYXB0dXJlU2Vzc2lvblR5cGU7Ci10eXBl
ZGVmIEFWQ2FwdHVyZUF1ZGlvRGF0YU91dHB1dCBBVkNhcHR1cmVBdWRpb0RhdGFPdXRwdXRUeXBl
OwotdHlwZWRlZiBBVkNhcHR1cmVWaWRlb0RhdGFPdXRwdXQgQVZDYXB0dXJlVmlkZW9EYXRhT3V0
cHV0VHlwZTsKLQotU09GVF9MSU5LX0ZSQU1FV09SS19PUFRJT05BTChBVkZvdW5kYXRpb24pCi0K
LVNPRlRfTElOS19DTEFTUyhBVkZvdW5kYXRpb24sIEFWQ2FwdHVyZUF1ZGlvRGF0YU91dHB1dCkK
LVNPRlRfTElOS19DTEFTUyhBVkZvdW5kYXRpb24sIEFWQ2FwdHVyZUNvbm5lY3Rpb24pCi1TT0ZU
X0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVkNhcHR1cmVEZXZpY2UpCi1TT0ZUX0xJTktfQ0xB
U1MoQVZGb3VuZGF0aW9uLCBBVkNhcHR1cmVEZXZpY2VJbnB1dCkKLVNPRlRfTElOS19DTEFTUyhB
VkZvdW5kYXRpb24sIEFWQ2FwdHVyZU91dHB1dCkKLVNPRlRfTElOS19DTEFTUyhBVkZvdW5kYXRp
b24sIEFWQ2FwdHVyZVNlc3Npb24pCi1TT0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVkNh
cHR1cmVWaWRlb0RhdGFPdXRwdXQpCi0KLSNkZWZpbmUgQVZDYXB0dXJlQXVkaW9EYXRhT3V0cHV0
IGdldEFWQ2FwdHVyZUF1ZGlvRGF0YU91dHB1dENsYXNzKCkKLSNkZWZpbmUgQVZDYXB0dXJlQ29u
bmVjdGlvbiBnZXRBVkNhcHR1cmVDb25uZWN0aW9uQ2xhc3MoKQotI2RlZmluZSBBVkNhcHR1cmVE
ZXZpY2UgZ2V0QVZDYXB0dXJlRGV2aWNlQ2xhc3MoKQotI2RlZmluZSBBVkNhcHR1cmVEZXZpY2VJ
bnB1dCBnZXRBVkNhcHR1cmVEZXZpY2VJbnB1dENsYXNzKCkKLSNkZWZpbmUgQVZDYXB0dXJlT3V0
cHV0IGdldEFWQ2FwdHVyZU91dHB1dENsYXNzKCkKLSNkZWZpbmUgQVZDYXB0dXJlU2Vzc2lvbiBn
ZXRBVkNhcHR1cmVTZXNzaW9uQ2xhc3MoKQotI2RlZmluZSBBVkNhcHR1cmVWaWRlb0RhdGFPdXRw
dXQgZ2V0QVZDYXB0dXJlVmlkZW9EYXRhT3V0cHV0Q2xhc3MoKQotCi1TT0ZUX0xJTktfQ09OU1RB
TlQoQVZGb3VuZGF0aW9uLCBBVk1lZGlhVHlwZUF1ZGlvLCBOU1N0cmluZyAqKQotU09GVF9MSU5L
X0NPTlNUQU5UKEFWRm91bmRhdGlvbiwgQVZNZWRpYVR5cGVNdXhlZCwgTlNTdHJpbmcgKikKLVNP
RlRfTElOS19DT05TVEFOVChBVkZvdW5kYXRpb24sIEFWTWVkaWFUeXBlVmlkZW8sIE5TU3RyaW5n
ICopCi0KLSNkZWZpbmUgQVZNZWRpYVR5cGVBdWRpbyBnZXRBVk1lZGlhVHlwZUF1ZGlvKCkKLSNk
ZWZpbmUgQVZNZWRpYVR5cGVNdXhlZCBnZXRBVk1lZGlhVHlwZU11eGVkKCkKLSNkZWZpbmUgQVZN
ZWRpYVR5cGVWaWRlbyBnZXRBVk1lZGlhVHlwZVZpZGVvKCkKLQotI2lmIFBMQVRGT1JNKElPUykK
LVNPRlRfTElOS19QT0lOVEVSX09QVElPTkFMKEFWRm91bmRhdGlvbiwgQVZDYXB0dXJlU2Vzc2lv
blJ1bnRpbWVFcnJvck5vdGlmaWNhdGlvbiwgTlNTdHJpbmcgKikKLVNPRlRfTElOS19QT0lOVEVS
X09QVElPTkFMKEFWRm91bmRhdGlvbiwgQVZDYXB0dXJlU2Vzc2lvbldhc0ludGVycnVwdGVkTm90
aWZpY2F0aW9uLCBOU1N0cmluZyAqKQotU09GVF9MSU5LX1BPSU5URVJfT1BUSU9OQUwoQVZGb3Vu
ZGF0aW9uLCBBVkNhcHR1cmVTZXNzaW9uSW50ZXJydXB0aW9uRW5kZWROb3RpZmljYXRpb24sIE5T
U3RyaW5nICopCi1TT0ZUX0xJTktfUE9JTlRFUl9PUFRJT05BTChBVkZvdW5kYXRpb24sIEFWQ2Fw
dHVyZVNlc3Npb25JbnRlcnJ1cHRpb25SZWFzb25LZXksIE5TU3RyaW5nICopCi1TT0ZUX0xJTktf
UE9JTlRFUl9PUFRJT05BTChBVkZvdW5kYXRpb24sIEFWQ2FwdHVyZVNlc3Npb25FcnJvcktleSwg
TlNTdHJpbmcgKikKLQotI2RlZmluZSBBVkNhcHR1cmVTZXNzaW9uUnVudGltZUVycm9yTm90aWZp
Y2F0aW9uIGdldEFWQ2FwdHVyZVNlc3Npb25SdW50aW1lRXJyb3JOb3RpZmljYXRpb24oKQotI2Rl
ZmluZSBBVkNhcHR1cmVTZXNzaW9uV2FzSW50ZXJydXB0ZWROb3RpZmljYXRpb24gZ2V0QVZDYXB0
dXJlU2Vzc2lvbldhc0ludGVycnVwdGVkTm90aWZpY2F0aW9uKCkKLSNkZWZpbmUgQVZDYXB0dXJl
U2Vzc2lvbkludGVycnVwdGlvbkVuZGVkTm90aWZpY2F0aW9uIGdldEFWQ2FwdHVyZVNlc3Npb25J
bnRlcnJ1cHRpb25FbmRlZE5vdGlmaWNhdGlvbigpCi0jZGVmaW5lIEFWQ2FwdHVyZVNlc3Npb25J
bnRlcnJ1cHRpb25SZWFzb25LZXkgZ2V0QVZDYXB0dXJlU2Vzc2lvbkludGVycnVwdGlvblJlYXNv
bktleSgpCi0jZGVmaW5lIEFWQ2FwdHVyZVNlc3Npb25FcnJvcktleSBnZXRBVkNhcHR1cmVTZXNz
aW9uRXJyb3JLZXkoKQotI2VuZGlmCi0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1AaW50
ZXJmYWNlIFdlYkNvcmVBVk1lZGlhQ2FwdHVyZVNvdXJjZU9ic2VydmVyIDogTlNPYmplY3Q8QVZD
YXB0dXJlQXVkaW9EYXRhT3V0cHV0U2FtcGxlQnVmZmVyRGVsZWdhdGUsIEFWQ2FwdHVyZVZpZGVv
RGF0YU91dHB1dFNhbXBsZUJ1ZmZlckRlbGVnYXRlPgotewotICAgIEFWTWVkaWFDYXB0dXJlU291
cmNlKiBtX2NhbGxiYWNrOwotfQotCi0tKGlkKWluaXRXaXRoQ2FsbGJhY2s6KEFWTWVkaWFDYXB0
dXJlU291cmNlKiljYWxsYmFjazsKLS0odm9pZClkaXNjb25uZWN0OwotLSh2b2lkKWFkZE5vdGlm
aWNhdGlvbk9ic2VydmVyczsKLS0odm9pZClyZW1vdmVOb3RpZmljYXRpb25PYnNlcnZlcnM7Ci0t
KHZvaWQpY2FwdHVyZU91dHB1dDooQVZDYXB0dXJlT3V0cHV0VHlwZSopY2FwdHVyZU91dHB1dCBk
aWRPdXRwdXRTYW1wbGVCdWZmZXI6KENNU2FtcGxlQnVmZmVyUmVmKXNhbXBsZUJ1ZmZlciBmcm9t
Q29ubmVjdGlvbjooQVZDYXB0dXJlQ29ubmVjdGlvblR5cGUqKWNvbm5lY3Rpb247Ci0tKHZvaWQp
b2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDprZXlQYXRoIG9mT2JqZWN0OihpZClvYmplY3QgY2hhbmdl
OihOU0RpY3Rpb25hcnkqKWNoYW5nZSBjb250ZXh0Oih2b2lkKiljb250ZXh0OwotI2lmIFBMQVRG
T1JNKElPUykKLS0odm9pZClzZXNzaW9uUnVudGltZUVycm9yOihOU05vdGlmaWNhdGlvbiopbm90
aWZpY2F0aW9uOwotLSh2b2lkKWJlZ2luU2Vzc2lvbkludGVycnVwdGVkOihOU05vdGlmaWNhdGlv
biopbm90aWZpY2F0aW9uOwotLSh2b2lkKWVuZFNlc3Npb25JbnRlcnJ1cHRlZDooTlNOb3RpZmlj
YXRpb24qKW5vdGlmaWNhdGlvbjsKLSNlbmRpZgotQGVuZAotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLXN0YXRpYyBOU0FycmF5PE5TU3RyaW5nKj4qIHNlc3Npb25LVk9Qcm9wZXJ0aWVzKCk7Ci0K
LXN0YXRpYyBkaXNwYXRjaF9xdWV1ZV90IGdsb2JhQXVkaW9DYXB0dXJlU2VyaWFsUXVldWUoKQot
ewotICAgIHN0YXRpYyBkaXNwYXRjaF9xdWV1ZV90IGdsb2JhbFF1ZXVlOwotICAgIHN0YXRpYyBk
aXNwYXRjaF9vbmNlX3Qgb25jZVRva2VuOwotICAgIGRpc3BhdGNoX29uY2UoJm9uY2VUb2tlbiwg
XnsKLSAgICAgICAgZ2xvYmFsUXVldWUgPSBkaXNwYXRjaF9xdWV1ZV9jcmVhdGUoIldlYkNvcmVB
Vk1lZGlhQ2FwdHVyZVNvdXJjZSBhdWRpbyBjYXB0dXJlIHF1ZXVlIiwgRElTUEFUQ0hfUVVFVUVf
U0VSSUFMKTsKLSAgICB9KTsKLSAgICByZXR1cm4gZ2xvYmFsUXVldWU7Ci19Ci0KLXN0YXRpYyBk
aXNwYXRjaF9xdWV1ZV90IGdsb2JhVmlkZW9DYXB0dXJlU2VyaWFsUXVldWUoKQotewotICAgIHN0
YXRpYyBkaXNwYXRjaF9xdWV1ZV90IGdsb2JhbFF1ZXVlOwotICAgIHN0YXRpYyBkaXNwYXRjaF9v
bmNlX3Qgb25jZVRva2VuOwotICAgIGRpc3BhdGNoX29uY2UoJm9uY2VUb2tlbiwgXnsKLSAgICAg
ICAgZ2xvYmFsUXVldWUgPSBkaXNwYXRjaF9xdWV1ZV9jcmVhdGVfd2l0aF90YXJnZXQoIldlYkNv
cmVBVk1lZGlhQ2FwdHVyZVNvdXJjZSB2aWRlbyBjYXB0dXJlIHF1ZXVlIiwgRElTUEFUQ0hfUVVF
VUVfU0VSSUFMLCBkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKERJU1BBVENIX1FVRVVFX1BSSU9S
SVRZX0hJR0gsIDApKTsKLSAgICB9KTsKLSAgICByZXR1cm4gZ2xvYmFsUXVldWU7Ci19Ci0KLUFW
TWVkaWFDYXB0dXJlU291cmNlOjpBVk1lZGlhQ2FwdHVyZVNvdXJjZShBVkNhcHR1cmVEZXZpY2VU
eXBlZGVmKiBkZXZpY2UsIGNvbnN0IEF0b21pY1N0cmluZyYgaWQsIFJlYWx0aW1lTWVkaWFTb3Vy
Y2U6OlR5cGUgdHlwZSkKLSAgICA6IFJlYWx0aW1lTWVkaWFTb3VyY2UoaWQsIHR5cGUsIGRldmlj
ZS5sb2NhbGl6ZWROYW1lKQotICAgICwgbV9vYmpjT2JzZXJ2ZXIoYWRvcHROUyhbW1dlYkNvcmVB
Vk1lZGlhQ2FwdHVyZVNvdXJjZU9ic2VydmVyIGFsbG9jXSBpbml0V2l0aENhbGxiYWNrOnRoaXNd
KSkKLSAgICAsIG1fZGV2aWNlKGRldmljZSkKLXsKLSNpZiBQTEFURk9STShJT1MpCi0gICAgc3Rh
dGljX2Fzc2VydChzdGF0aWNfY2FzdDxpbnQ+KEludGVycnVwdGlvblJlYXNvbjo6VmlkZW9Ob3RB
bGxvd2VkSW5CYWNrZ3JvdW5kKSA9PSBzdGF0aWNfY2FzdDxpbnQ+KEFWQ2FwdHVyZVNlc3Npb25J
bnRlcnJ1cHRpb25SZWFzb25WaWRlb0RldmljZU5vdEF2YWlsYWJsZUluQmFja2dyb3VuZCksICJJ
bnRlcnJ1cHRpb25SZWFzb246OlZpZGVvTm90QWxsb3dlZEluQmFja2dyb3VuZCBpcyBub3QgQVZD
YXB0dXJlU2Vzc2lvbkludGVycnVwdGlvblJlYXNvblZpZGVvRGV2aWNlTm90QXZhaWxhYmxlSW5C
YWNrZ3JvdW5kIGFzIGV4cGVjdGVkIik7Ci0gICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxp
bnQ+KEludGVycnVwdGlvblJlYXNvbjo6VmlkZW9Ob3RBbGxvd2VkSW5TaWRlQnlTaWRlKSA9PSBB
VkNhcHR1cmVTZXNzaW9uSW50ZXJydXB0aW9uUmVhc29uVmlkZW9EZXZpY2VOb3RBdmFpbGFibGVX
aXRoTXVsdGlwbGVGb3JlZ3JvdW5kQXBwcywgIkludGVycnVwdGlvblJlYXNvbjo6VmlkZW9Ob3RB
bGxvd2VkSW5TaWRlQnlTaWRlIGlzIG5vdCBBVkNhcHR1cmVTZXNzaW9uSW50ZXJydXB0aW9uUmVh
c29uVmlkZW9EZXZpY2VOb3RBdmFpbGFibGVXaXRoTXVsdGlwbGVGb3JlZ3JvdW5kQXBwcyBhcyBl
eHBlY3RlZCIpOwotICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8aW50PihJbnRlcnJ1cHRp
b25SZWFzb246OlZpZGVvSW5Vc2UpID09IEFWQ2FwdHVyZVNlc3Npb25JbnRlcnJ1cHRpb25SZWFz
b25WaWRlb0RldmljZUluVXNlQnlBbm90aGVyQ2xpZW50LCAiSW50ZXJydXB0aW9uUmVhc29uOjpW
aWRlb0luVXNlIGlzIG5vdCBBVkNhcHR1cmVTZXNzaW9uSW50ZXJydXB0aW9uUmVhc29uVmlkZW9E
ZXZpY2VJblVzZUJ5QW5vdGhlckNsaWVudCBhcyBleHBlY3RlZCIpOwotICAgIHN0YXRpY19hc3Nl
cnQoc3RhdGljX2Nhc3Q8aW50PihJbnRlcnJ1cHRpb25SZWFzb246OkF1ZGlvSW5Vc2UpID09IEFW
Q2FwdHVyZVNlc3Npb25JbnRlcnJ1cHRpb25SZWFzb25BdWRpb0RldmljZUluVXNlQnlBbm90aGVy
Q2xpZW50LCAiSW50ZXJydXB0aW9uUmVhc29uOjpBdWRpb0luVXNlIGlzIG5vdCBBVkNhcHR1cmVT
ZXNzaW9uSW50ZXJydXB0aW9uUmVhc29uQXVkaW9EZXZpY2VJblVzZUJ5QW5vdGhlckNsaWVudCBh
cyBleHBlY3RlZCIpOwotI2VuZGlmCi0gICAgCi0gICAgc2V0UGVyc2lzdGVudElEKFN0cmluZyhk
ZXZpY2UudW5pcXVlSUQpKTsKLX0KLQotQVZNZWRpYUNhcHR1cmVTb3VyY2U6On5BVk1lZGlhQ2Fw
dHVyZVNvdXJjZSgpCi17Ci0gICAgW21fb2JqY09ic2VydmVyIGRpc2Nvbm5lY3RdOwotCi0gICAg
aWYgKCFtX3Nlc3Npb24pCi0gICAgICAgIHJldHVybjsKLQotICAgIGZvciAoTlNTdHJpbmcgKmtl
eU5hbWUgaW4gc2Vzc2lvbktWT1Byb3BlcnRpZXMoKSkKLSAgICAgICAgW21fc2Vzc2lvbiByZW1v
dmVPYnNlcnZlcjptX29iamNPYnNlcnZlci5nZXQoKSBmb3JLZXlQYXRoOmtleU5hbWVdOwotCi0g
ICAgaWYgKFttX3Nlc3Npb24gaXNSdW5uaW5nXSkKLSAgICAgICAgW21fc2Vzc2lvbiBzdG9wUnVu
bmluZ107Ci0KLX0KLQotdm9pZCBBVk1lZGlhQ2FwdHVyZVNvdXJjZTo6c3RhcnRQcm9kdWNpbmdE
YXRhKCkKLXsKLSAgICBpZiAoIW1fc2Vzc2lvbikgewotICAgICAgICBpZiAoIXNldHVwU2Vzc2lv
bigpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChbbV9zZXNzaW9uIGlz
UnVubmluZ10pCi0gICAgICAgIHJldHVybjsKLQotICAgIFttX29iamNPYnNlcnZlciBhZGROb3Rp
ZmljYXRpb25PYnNlcnZlcnNdOwotICAgIFttX3Nlc3Npb24gc3RhcnRSdW5uaW5nXTsKLX0KLQot
dm9pZCBBVk1lZGlhQ2FwdHVyZVNvdXJjZTo6c3RvcFByb2R1Y2luZ0RhdGEoKQotewotICAgIGlm
ICghbV9zZXNzaW9uKQotICAgICAgICByZXR1cm47Ci0KLSAgICBbbV9vYmpjT2JzZXJ2ZXIgcmVt
b3ZlTm90aWZpY2F0aW9uT2JzZXJ2ZXJzXTsKLQotICAgIGlmIChbbV9zZXNzaW9uIGlzUnVubmlu
Z10pCi0gICAgICAgIFttX3Nlc3Npb24gc3RvcFJ1bm5pbmddOwotCi0gICAgbV9pbnRlcnJ1cHRp
b24gPSBJbnRlcnJ1cHRpb25SZWFzb246Ok5vbmU7Ci0jaWYgUExBVEZPUk0oSU9TKQotICAgIG1f
c2Vzc2lvbiA9IG51bGxwdHI7Ci0jZW5kaWYKLX0KLQotdm9pZCBBVk1lZGlhQ2FwdHVyZVNvdXJj
ZTo6YmVnaW5Db25maWd1cmF0aW9uKCkKLXsKLSAgICBpZiAobV9zZXNzaW9uKQotICAgICAgICBb
bV9zZXNzaW9uIGJlZ2luQ29uZmlndXJhdGlvbl07Ci19Ci0KLXZvaWQgQVZNZWRpYUNhcHR1cmVT
b3VyY2U6OmNvbW1pdENvbmZpZ3VyYXRpb24oKQotewotICAgIGlmIChtX3Nlc3Npb24pCi0gICAg
ICAgIFttX3Nlc3Npb24gY29tbWl0Q29uZmlndXJhdGlvbl07Ci19Ci0KLXZvaWQgQVZNZWRpYUNh
cHR1cmVTb3VyY2U6OmluaXRpYWxpemVTZXR0aW5ncygpCi17Ci0gICAgaWYgKG1fY3VycmVudFNl
dHRpbmdzLmRldmljZUlkKCkuaXNFbXB0eSgpKQotICAgICAgICBtX2N1cnJlbnRTZXR0aW5ncy5z
ZXRTdXBwb3J0ZWRDb25zdHJhaW50cyhzdXBwb3J0ZWRDb25zdHJhaW50cygpKTsKLQotICAgIG1f
Y3VycmVudFNldHRpbmdzLnNldERldmljZUlkKGlkKCkpOwotICAgIG1fY3VycmVudFNldHRpbmdz
LnNldExhYmVsKG5hbWUoKSk7Ci0gICAgdXBkYXRlU2V0dGluZ3MobV9jdXJyZW50U2V0dGluZ3Mp
OwotfQotCi1jb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIEFWTWVkaWFDYXB0dXJl
U291cmNlOjpzZXR0aW5ncygpIGNvbnN0Ci17Ci0gICAgY29uc3RfY2FzdDxBVk1lZGlhQ2FwdHVy
ZVNvdXJjZSY+KCp0aGlzKS5pbml0aWFsaXplU2V0dGluZ3MoKTsKLSAgICByZXR1cm4gbV9jdXJy
ZW50U2V0dGluZ3M7Ci19Ci0KLVJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50
cyYgQVZNZWRpYUNhcHR1cmVTb3VyY2U6OnN1cHBvcnRlZENvbnN0cmFpbnRzKCkKLXsKLSAgICBp
ZiAobV9zdXBwb3J0ZWRDb25zdHJhaW50cy5zdXBwb3J0c0RldmljZUlkKCkpCi0gICAgICAgIHJl
dHVybiBtX3N1cHBvcnRlZENvbnN0cmFpbnRzOwotCi0gICAgbV9zdXBwb3J0ZWRDb25zdHJhaW50
cy5zZXRTdXBwb3J0c0RldmljZUlkKHRydWUpOwotICAgIGluaXRpYWxpemVTdXBwb3J0ZWRDb25z
dHJhaW50cyhtX3N1cHBvcnRlZENvbnN0cmFpbnRzKTsKLQotICAgIHJldHVybiBtX3N1cHBvcnRl
ZENvbnN0cmFpbnRzOwotfQotCi12b2lkIEFWTWVkaWFDYXB0dXJlU291cmNlOjppbml0aWFsaXpl
Q2FwYWJpbGl0aWVzKCkKLXsKLSAgICBtX2NhcGFiaWxpdGllcyA9IHN0ZDo6bWFrZV91bmlxdWU8
UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcz4oc3VwcG9ydGVkQ29uc3RyYWludHMoKSk7
Ci0gICAgbV9jYXBhYmlsaXRpZXMtPnNldERldmljZUlkKGlkKCkpOwotCi0gICAgaW5pdGlhbGl6
ZUNhcGFiaWxpdGllcygqbV9jYXBhYmlsaXRpZXMuZ2V0KCkpOwotfQotCi1jb25zdCBSZWFsdGlt
ZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJiBBVk1lZGlhQ2FwdHVyZVNvdXJjZTo6Y2FwYWJpbGl0
aWVzKCkgY29uc3QKLXsKLSAgICBpZiAoIW1fY2FwYWJpbGl0aWVzKQotICAgICAgICBjb25zdF9j
YXN0PEFWTWVkaWFDYXB0dXJlU291cmNlJj4oKnRoaXMpLmluaXRpYWxpemVDYXBhYmlsaXRpZXMo
KTsKLSAgICByZXR1cm4gKm1fY2FwYWJpbGl0aWVzOwotfQotCi1ib29sIEFWTWVkaWFDYXB0dXJl
U291cmNlOjpzZXR1cFNlc3Npb24oKQotewotICAgIGlmIChtX3Nlc3Npb24pCi0gICAgICAgIHJl
dHVybiB0cnVlOwotCi0gICAgbV9zZXNzaW9uID0gYWRvcHROUyhbYWxsb2NBVkNhcHR1cmVTZXNz
aW9uSW5zdGFuY2UoKSBpbml0XSk7Ci0gICAgZm9yIChOU1N0cmluZyoga2V5TmFtZSBpbiBzZXNz
aW9uS1ZPUHJvcGVydGllcygpKQotICAgICAgICBbbV9zZXNzaW9uIGFkZE9ic2VydmVyOm1fb2Jq
Y09ic2VydmVyLmdldCgpIGZvcktleVBhdGg6a2V5TmFtZSBvcHRpb25zOk5TS2V5VmFsdWVPYnNl
cnZpbmdPcHRpb25OZXcgY29udGV4dDoodm9pZCAqKW5pbF07Ci0KLSAgICBbbV9zZXNzaW9uIGJl
Z2luQ29uZmlndXJhdGlvbl07Ci0gICAgYm9vbCBzdWNjZXNzID0gc2V0dXBDYXB0dXJlU2Vzc2lv
bigpOwotICAgIFttX3Nlc3Npb24gY29tbWl0Q29uZmlndXJhdGlvbl07Ci0KLSAgICBpZiAoIXN1
Y2Nlc3MpCi0gICAgICAgIGNhcHR1cmVGYWlsZWQoKTsKLQotICAgIHJldHVybiBzdWNjZXNzOwot
fQotCi12b2lkIEFWTWVkaWFDYXB0dXJlU291cmNlOjpjYXB0dXJlU2Vzc2lvbklzUnVubmluZ0Rp
ZENoYW5nZShib29sIHN0YXRlKQotewotICAgIHNjaGVkdWxlRGVmZXJyZWRUYXNrKFt0aGlzLCBz
dGF0ZV0gewotICAgICAgICBpZiAoKHN0YXRlID09IG1faXNSdW5uaW5nKSAmJiAoc3RhdGUgPT0g
IW11dGVkKCkpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIG1faXNSdW5uaW5nID0g
c3RhdGU7Ci0gICAgICAgIG5vdGlmeU11dGVkQ2hhbmdlKCFtX2lzUnVubmluZyk7Ci0gICAgfSk7
Ci19Ci0KLSNpZiBQTEFURk9STShJT1MpCi12b2lkIEFWTWVkaWFDYXB0dXJlU291cmNlOjpjYXB0
dXJlU2Vzc2lvblJ1bnRpbWVFcnJvcihSZXRhaW5QdHI8TlNFcnJvcj4gZXJyb3IpCi17Ci0gICAg
aWYgKCFtX2lzUnVubmluZyB8fCBlcnJvci5nZXQoKS5jb2RlICE9IEFWRXJyb3JNZWRpYVNlcnZp
Y2VzV2VyZVJlc2V0KQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBUcnkgdG8gcmVzdGFydCB0
aGUgc2Vzc2lvbiwgYnV0IHJlc2V0IG1faXNSdW5uaW5nIGltbWVkaWF0ZWx5IHNvIGlmIGl0IGZh
aWxzIHdlIHdvbid0IHRyeSBhZ2Fpbi4KLSAgICBbbV9zZXNzaW9uIHN0YXJ0UnVubmluZ107Ci0g
ICAgbV9pc1J1bm5pbmcgPSBbbV9zZXNzaW9uIGlzUnVubmluZ107Ci19Ci0KLXZvaWQgQVZNZWRp
YUNhcHR1cmVTb3VyY2U6OmNhcHR1cmVTZXNzaW9uQmVnaW5JbnRlcnJ1cHRpb24oUmV0YWluUHRy
PE5TTm90aWZpY2F0aW9uPiBub3RpZmljYXRpb24pCi17Ci0gICAgbV9pbnRlcnJ1cHRpb24gPSBz
dGF0aWNfY2FzdDxBVk1lZGlhQ2FwdHVyZVNvdXJjZTo6SW50ZXJydXB0aW9uUmVhc29uPihbbm90
aWZpY2F0aW9uLmdldCgpLnVzZXJJbmZvW0FWQ2FwdHVyZVNlc3Npb25JbnRlcnJ1cHRpb25SZWFz
b25LZXldIGludGVnZXJWYWx1ZV0pOwotfQotCi12b2lkIEFWTWVkaWFDYXB0dXJlU291cmNlOjpj
YXB0dXJlU2Vzc2lvbkVuZEludGVycnVwdGlvbihSZXRhaW5QdHI8TlNOb3RpZmljYXRpb24+KQot
ewotICAgIEludGVycnVwdGlvblJlYXNvbiByZWFzb24gPSBtX2ludGVycnVwdGlvbjsKLQotICAg
IG1faW50ZXJydXB0aW9uID0gSW50ZXJydXB0aW9uUmVhc29uOjpOb25lOwotICAgIGlmIChyZWFz
b24gIT0gSW50ZXJydXB0aW9uUmVhc29uOjpWaWRlb05vdEFsbG93ZWRJblNpZGVCeVNpZGUgfHwg
bV9pc1J1bm5pbmcgfHwgIW1fc2Vzc2lvbikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgW21fc2Vz
c2lvbiBzdGFydFJ1bm5pbmddOwotICAgIG1faXNSdW5uaW5nID0gW21fc2Vzc2lvbiBpc1J1bm5p
bmddOwotfQotI2VuZGlmCi0KLXZvaWQgQVZNZWRpYUNhcHR1cmVTb3VyY2U6OnNldFZpZGVvU2Ft
cGxlQnVmZmVyRGVsZWdhdGUoQVZDYXB0dXJlVmlkZW9EYXRhT3V0cHV0VHlwZSogdmlkZW9PdXRw
dXQpCi17Ci0gICAgW3ZpZGVvT3V0cHV0IHNldFNhbXBsZUJ1ZmZlckRlbGVnYXRlOm1fb2JqY09i
c2VydmVyLmdldCgpIHF1ZXVlOmdsb2JhVmlkZW9DYXB0dXJlU2VyaWFsUXVldWUoKV07Ci19Ci0K
LXZvaWQgQVZNZWRpYUNhcHR1cmVTb3VyY2U6OnNldEF1ZGlvU2FtcGxlQnVmZmVyRGVsZWdhdGUo
QVZDYXB0dXJlQXVkaW9EYXRhT3V0cHV0VHlwZSogYXVkaW9PdXRwdXQpCi17Ci0gICAgW2F1ZGlv
T3V0cHV0IHNldFNhbXBsZUJ1ZmZlckRlbGVnYXRlOm1fb2JqY09ic2VydmVyLmdldCgpIHF1ZXVl
Omdsb2JhQXVkaW9DYXB0dXJlU2VyaWFsUXVldWUoKV07Ci19Ci0KLWJvb2wgQVZNZWRpYUNhcHR1
cmVTb3VyY2U6OmludGVycnVwdGVkKCkgY29uc3QKLXsKLSAgICBpZiAobV9pbnRlcnJ1cHRpb24g
IT0gSW50ZXJydXB0aW9uUmVhc29uOjpOb25lKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAg
IHJldHVybiBSZWFsdGltZU1lZGlhU291cmNlOjppbnRlcnJ1cHRlZCgpOwotfQotCi1OU0FycmF5
PE5TU3RyaW5nKj4qIHNlc3Npb25LVk9Qcm9wZXJ0aWVzKCkKLXsKLSAgICBzdGF0aWMgTlNBcnJh
eSoga2V5cyA9IFtAW0AicnVubmluZyJdIHJldGFpbl07Ci0gICAgcmV0dXJuIGtleXM7Ci19Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotQGltcGxlbWVudGF0aW9uIFdlYkNvcmVBVk1lZGlh
Q2FwdHVyZVNvdXJjZU9ic2VydmVyCi0KLS0gKGlkKWluaXRXaXRoQ2FsbGJhY2s6KEFWTWVkaWFD
YXB0dXJlU291cmNlKiljYWxsYmFjawotewotICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07Ci0gICAg
aWYgKCFzZWxmKQotICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgbV9jYWxsYmFjayA9IGNhbGxi
YWNrOwotCi0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLS0gKHZvaWQpZGlzY29ubmVjdAotewotICAg
IFtOU09iamVjdCBjYW5jZWxQcmV2aW91c1BlcmZvcm1SZXF1ZXN0c1dpdGhUYXJnZXQ6c2VsZl07
Ci0gICAgW3NlbGYgcmVtb3ZlTm90aWZpY2F0aW9uT2JzZXJ2ZXJzXTsKLSAgICBtX2NhbGxiYWNr
ID0gbnVsbHB0cjsKLX0KLQotLSAodm9pZClhZGROb3RpZmljYXRpb25PYnNlcnZlcnMKLXsKLSNp
ZiBQTEFURk9STShJT1MpCi0gICAgQVNTRVJUKG1fY2FsbGJhY2spOwotCi0gICAgTlNOb3RpZmlj
YXRpb25DZW50ZXIqIGNlbnRlciA9IFtOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVy
XTsKLSAgICBBVkNhcHR1cmVTZXNzaW9uVHlwZSogc2Vzc2lvbiA9IG1fY2FsbGJhY2stPnNlc3Np
b24oKTsKLQotICAgIFtjZW50ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3Io
c2Vzc2lvblJ1bnRpbWVFcnJvcjopIG5hbWU6QVZDYXB0dXJlU2Vzc2lvblJ1bnRpbWVFcnJvck5v
dGlmaWNhdGlvbiBvYmplY3Q6c2Vzc2lvbl07Ci0gICAgW2NlbnRlciBhZGRPYnNlcnZlcjpzZWxm
IHNlbGVjdG9yOkBzZWxlY3RvcihiZWdpblNlc3Npb25JbnRlcnJ1cHRlZDopIG5hbWU6QVZDYXB0
dXJlU2Vzc2lvbldhc0ludGVycnVwdGVkTm90aWZpY2F0aW9uIG9iamVjdDpzZXNzaW9uXTsKLSAg
ICBbY2VudGVyIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKGVuZFNlc3Npb25J
bnRlcnJ1cHRlZDopIG5hbWU6QVZDYXB0dXJlU2Vzc2lvbkludGVycnVwdGlvbkVuZGVkTm90aWZp
Y2F0aW9uIG9iamVjdDpzZXNzaW9uXTsKLSNlbmRpZgotfQotCi0tICh2b2lkKXJlbW92ZU5vdGlm
aWNhdGlvbk9ic2VydmVycwotewotI2lmIFBMQVRGT1JNKElPUykKLSAgICBbW05TTm90aWZpY2F0
aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHJlbW92ZU9ic2VydmVyOnNlbGZdOwotI2VuZGlmCi19
Ci0KLS0gKHZvaWQpY2FwdHVyZU91dHB1dDooQVZDYXB0dXJlT3V0cHV0VHlwZSopY2FwdHVyZU91
dHB1dCBkaWRPdXRwdXRTYW1wbGVCdWZmZXI6KENNU2FtcGxlQnVmZmVyUmVmKXNhbXBsZUJ1ZmZl
ciBmcm9tQ29ubmVjdGlvbjooQVZDYXB0dXJlQ29ubmVjdGlvblR5cGUqKWNvbm5lY3Rpb24KLXsK
LSAgICBpZiAoIW1fY2FsbGJhY2spCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fY2FsbGJhY2st
PmNhcHR1cmVPdXRwdXREaWRPdXRwdXRTYW1wbGVCdWZmZXJGcm9tQ29ubmVjdGlvbihjYXB0dXJl
T3V0cHV0LCBzYW1wbGVCdWZmZXIsIGNvbm5lY3Rpb24pOwotfQotCi0tICh2b2lkKW9ic2VydmVW
YWx1ZUZvcktleVBhdGg6a2V5UGF0aCBvZk9iamVjdDooaWQpb2JqZWN0IGNoYW5nZTooTlNEaWN0
aW9uYXJ5KiljaGFuZ2UgY29udGV4dDoodm9pZCopY29udGV4dAotewotICAgIFVOVVNFRF9QQVJB
TShvYmplY3QpOwotICAgIFVOVVNFRF9QQVJBTShjb250ZXh0KTsKLQotICAgIGlmICghbV9jYWxs
YmFjaykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWQgbmV3VmFsdWUgPSBbY2hhbmdlIHZhbHVl
Rm9yS2V5Ok5TS2V5VmFsdWVDaGFuZ2VOZXdLZXldOwotCi0jaWYgIUxPR19ESVNBQkxFRAotICAg
IGJvb2wgd2lsbENoYW5nZSA9IFtbY2hhbmdlIHZhbHVlRm9yS2V5Ok5TS2V5VmFsdWVDaGFuZ2VO
b3RpZmljYXRpb25Jc1ByaW9yS2V5XSBib29sVmFsdWVdOwotCi0gICAgaWYgKHdpbGxDaGFuZ2Up
Ci0gICAgICAgIExPRyhNZWRpYSwgIldlYkNvcmVBVk1lZGlhQ2FwdHVyZVNvdXJjZU9ic2VydmVy
OjpvYnNlcnZlVmFsdWVGb3JLZXlQYXRoKCVwKSAtIHdpbGwgY2hhbmdlLCBrZXlQYXRoID0gJXMi
LCBzZWxmLCBba2V5UGF0aCBVVEY4U3RyaW5nXSk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIFJldGFp
blB0cjxOU1N0cmluZz4gdmFsdWVTdHJpbmcgPSBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGlu
aXRXaXRoRm9ybWF0OkAiJUAiLCBuZXdWYWx1ZV0pOwotICAgICAgICBMT0coTWVkaWEsICJXZWJD
b3JlQVZNZWRpYUNhcHR1cmVTb3VyY2VPYnNlcnZlcjo6b2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aCgl
cCkgLSBkaWQgY2hhbmdlLCBrZXlQYXRoID0gJXMsIHZhbHVlID0gJXMiLCBzZWxmLCBba2V5UGF0
aCBVVEY4U3RyaW5nXSwgW3ZhbHVlU3RyaW5nLmdldCgpIFVURjhTdHJpbmddKTsKLSAgICB9Ci0j
ZW5kaWYKLQotICAgIGlmIChba2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6QCJydW5uaW5nIl0pCi0g
ICAgICAgIG1fY2FsbGJhY2stPmNhcHR1cmVTZXNzaW9uSXNSdW5uaW5nRGlkQ2hhbmdlKFtuZXdW
YWx1ZSBib29sVmFsdWVdKTsKLX0KLQotI2lmIFBMQVRGT1JNKElPUykKLS0gKHZvaWQpc2Vzc2lv
blJ1bnRpbWVFcnJvcjooTlNOb3RpZmljYXRpb24qKW5vdGlmaWNhdGlvbgotewotICAgIE5TRXJy
b3IgKmVycm9yID0gbm90aWZpY2F0aW9uLnVzZXJJbmZvW0FWQ2FwdHVyZVNlc3Npb25FcnJvcktl
eV07Ci0gICAgTE9HKE1lZGlhLCAiV2ViQ29yZUFWTWVkaWFDYXB0dXJlU291cmNlT2JzZXJ2ZXI6
OnNlc3Npb25SdW50aW1lRXJyb3IoJXApIC0gZXJyb3IgPSAlcyIsIHNlbGYsIFtbZXJyb3IgbG9j
YWxpemVkRGVzY3JpcHRpb25dIFVURjhTdHJpbmddKTsKLQotICAgIGlmIChtX2NhbGxiYWNrKQot
ICAgICAgICBtX2NhbGxiYWNrLT5jYXB0dXJlU2Vzc2lvblJ1bnRpbWVFcnJvcihlcnJvcik7Ci19
Ci0KLS0odm9pZCliZWdpblNlc3Npb25JbnRlcnJ1cHRlZDooTlNOb3RpZmljYXRpb24qKW5vdGlm
aWNhdGlvbgotewotICAgIExPRyhNZWRpYSwgIldlYkNvcmVBVk1lZGlhQ2FwdHVyZVNvdXJjZU9i
c2VydmVyOjpiZWdpblNlc3Npb25JbnRlcnJ1cHRlZCglcCkgLSByZWFzb24gPSAlZCIsIHNlbGYs
IFtub3RpZmljYXRpb24udXNlckluZm9bQVZDYXB0dXJlU2Vzc2lvbkludGVycnVwdGlvblJlYXNv
bktleV0gaW50ZWdlclZhbHVlXSk7Ci0KLSAgICBpZiAobV9jYWxsYmFjaykKLSAgICAgICAgbV9j
YWxsYmFjay0+Y2FwdHVyZVNlc3Npb25CZWdpbkludGVycnVwdGlvbihub3RpZmljYXRpb24pOwot
fQotCi0tICh2b2lkKWVuZFNlc3Npb25JbnRlcnJ1cHRlZDooTlNOb3RpZmljYXRpb24qKW5vdGlm
aWNhdGlvbgotewotICAgIExPRyhNZWRpYSwgIldlYkNvcmVBVk1lZGlhQ2FwdHVyZVNvdXJjZU9i
c2VydmVyOjplbmRTZXNzaW9uSW50ZXJydXB0ZWQoJXApIiwgc2VsZik7Ci0KLSAgICBpZiAobV9j
YWxsYmFjaykKLSAgICAgICAgbV9jYWxsYmFjay0+Y2FwdHVyZVNlc3Npb25FbmRJbnRlcnJ1cHRp
b24obm90aWZpY2F0aW9uKTsKLX0KLSNlbmRpZgotCi1AZW5kCi0KLSNlbmRpZiAvLyBFTkFCTEUo
TUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UuaAppbmRleCBmOGRjZDAwYWZl
MjMwYTJmNTIwZmRkZjgzYTA1ZGI5NTZkMGNmMzFhLi43NDhlNDgwMGM1NTFmODk1MjdiY2E2MGVi
OTYzN2M0NDk1ZjRlNzY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UuaApAQCAtMjcsMjMg
KzI3LDI0IEBACiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBVU0UoQVZGT1VOREFUSU9O
KQogCi0jaW5jbHVkZSAiQVZNZWRpYUNhcHR1cmVTb3VyY2UuaCIKICNpbmNsdWRlICJPcmllbnRh
dGlvbk5vdGlmaWVyLmgiCisjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZS5oIgorI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAotT0JKQ19DTEFTUyBDQUxheWVyOwotT0JKQ19D
TEFTUyBBVkZyYW1lUmF0ZVJhbmdlOwordHlwZWRlZiBzdHJ1Y3Qgb3BhcXVlQ01TYW1wbGVCdWZm
ZXIqIENNU2FtcGxlQnVmZmVyUmVmOwogCi10eXBlZGVmIHN0cnVjdCBDR0ltYWdlICpDR0ltYWdl
UmVmOwotdHlwZWRlZiBjb25zdCBzdHJ1Y3Qgb3BhcXVlQ01Gb3JtYXREZXNjcmlwdGlvbiAqQ01G
b3JtYXREZXNjcmlwdGlvblJlZjsKLXR5cGVkZWYgc3RydWN0IG9wYXF1ZUNNU2FtcGxlQnVmZmVy
ICpDTVNhbXBsZUJ1ZmZlclJlZjsKK09CSkNfQ0xBU1MgQVZDYXB0dXJlQ29ubmVjdGlvbjsKK09C
SkNfQ0xBU1MgQVZDYXB0dXJlRGV2aWNlOworT0JKQ19DTEFTUyBBVkNhcHR1cmVPdXRwdXQ7CitP
QkpDX0NMQVNTIEFWQ2FwdHVyZVNlc3Npb247CitPQkpDX0NMQVNTIEFWQ2FwdHVyZVZpZGVvRGF0
YU91dHB1dDsKK09CSkNfQ0xBU1MgTlNFcnJvcjsKK09CSkNfQ0xBU1MgTlNOb3RpZmljYXRpb247
CitPQkpDX0NMQVNTIFdlYkNvcmVBVlZpZGVvQ2FwdHVyZVNvdXJjZU9ic2VydmVyOwogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEZsb2F0UmVjdDsKLWNsYXNzIEdyYXBoaWNzQ29udGV4
dDsKLWNsYXNzIFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y7Ci0KLWNsYXNzIEFWVmlkZW9DYXB0dXJl
U291cmNlIDogcHVibGljIEFWTWVkaWFDYXB0dXJlU291cmNlLCBwcml2YXRlIE9yaWVudGF0aW9u
Tm90aWZpZXI6Ok9ic2VydmVyIHsKK2NsYXNzIEFWVmlkZW9DYXB0dXJlU291cmNlIDogcHVibGlj
IFJlYWx0aW1lTWVkaWFTb3VyY2UsIHByaXZhdGUgT3JpZW50YXRpb25Ob3RpZmllcjo6T2JzZXJ2
ZXIgewogcHVibGljOgogICAgIHN0YXRpYyBDYXB0dXJlU291cmNlT3JFcnJvciBjcmVhdGUoY29u
c3QgQXRvbWljU3RyaW5nJiwgY29uc3QgTWVkaWFDb25zdHJhaW50cyopOwogCkBAIC01Miw0MyAr
NTMsNTkgQEAgcHVibGljOgogICAgIGludDMyX3Qgd2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3dp
ZHRoOyB9CiAgICAgaW50MzJfdCBoZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX2hlaWdodDsgfQog
CisgICAgZW51bSBjbGFzcyBJbnRlcnJ1cHRpb25SZWFzb24geyBOb25lLCBWaWRlb05vdEFsbG93
ZWRJbkJhY2tncm91bmQsIEF1ZGlvSW5Vc2UsIFZpZGVvSW5Vc2UsIFZpZGVvTm90QWxsb3dlZElu
U2lkZUJ5U2lkZSB9OworICAgIHZvaWQgY2FwdHVyZVNlc3Npb25CZWdpbkludGVycnVwdGlvbihS
ZXRhaW5QdHI8TlNOb3RpZmljYXRpb24+KTsKKyAgICB2b2lkIGNhcHR1cmVTZXNzaW9uRW5kSW50
ZXJydXB0aW9uKFJldGFpblB0cjxOU05vdGlmaWNhdGlvbj4pOworCisgICAgQVZDYXB0dXJlU2Vz
c2lvbiogc2Vzc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fc2Vzc2lvbi5nZXQoKTsgfQorCisgICAg
dm9pZCBjYXB0dXJlU2Vzc2lvbklzUnVubmluZ0RpZENoYW5nZShib29sKTsKKyAgICB2b2lkIGNh
cHR1cmVTZXNzaW9uUnVudGltZUVycm9yKFJldGFpblB0cjxOU0Vycm9yPik7CisgICAgdm9pZCBj
YXB0dXJlT3V0cHV0RGlkT3V0cHV0U2FtcGxlQnVmZmVyRnJvbUNvbm5lY3Rpb24oQVZDYXB0dXJl
T3V0cHV0KiwgQ01TYW1wbGVCdWZmZXJSZWYsIEFWQ2FwdHVyZUNvbm5lY3Rpb24qKTsKKwogcHJp
dmF0ZToKICAgICBBVlZpZGVvQ2FwdHVyZVNvdXJjZShBVkNhcHR1cmVEZXZpY2UqLCBjb25zdCBB
dG9taWNTdHJpbmcmKTsKICAgICB2aXJ0dWFsIH5BVlZpZGVvQ2FwdHVyZVNvdXJjZSgpOwogCi0g
ICAgYm9vbCBzZXR1cENhcHR1cmVTZXNzaW9uKCkgZmluYWw7Ci0gICAgdm9pZCBzaHV0ZG93bkNh
cHR1cmVTZXNzaW9uKCkgZmluYWw7Ci0KLSAgICB2b2lkIHVwZGF0ZVNldHRpbmdzKFJlYWx0aW1l
TWVkaWFTb3VyY2VTZXR0aW5ncyYpIGZpbmFsOworICAgIGJvb2wgc2V0dXBTZXNzaW9uKCk7Cisg
ICAgYm9vbCBzZXR1cENhcHR1cmVTZXNzaW9uKCk7CisgICAgdm9pZCBzaHV0ZG93bkNhcHR1cmVT
ZXNzaW9uKCk7CiAKKyAgICBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJiBj
YXBhYmlsaXRpZXMoKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIGFwcGx5U2l6ZUFuZEZyYW1lUmF0
ZShzdGQ6Om9wdGlvbmFsPGludD4gd2lkdGgsIHN0ZDo6b3B0aW9uYWw8aW50PiBoZWlnaHQsIHN0
ZDo6b3B0aW9uYWw8ZG91YmxlPikgZmluYWw7CiAgICAgYm9vbCBhcHBseVNpemUoY29uc3QgSW50
U2l6ZSYpIGZpbmFsOwogICAgIGJvb2wgYXBwbHlGcmFtZVJhdGUoZG91YmxlKSBmaW5hbDsKLSAg
ICBib29sIHNldFByZXNldChOU1N0cmluZyopOwotCisgICAgY29uc3QgUmVhbHRpbWVNZWRpYVNv
dXJjZVNldHRpbmdzJiBzZXR0aW5ncygpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgc3RhcnRQcm9k
dWNpbmdEYXRhKCkgZmluYWw7CisgICAgdm9pZCBzdG9wUHJvZHVjaW5nRGF0YSgpIGZpbmFsOwor
ICAgIGJvb2wgc3VwcG9ydHNTaXplQW5kRnJhbWVSYXRlKHN0ZDo6b3B0aW9uYWw8aW50PiB3aWR0
aCwgc3RkOjpvcHRpb25hbDxpbnQ+IGhlaWdodCwgc3RkOjpvcHRpb25hbDxkb3VibGU+KSBmaW5h
bDsKKyAgICB2b2lkIHNldHRpbmdzRGlkQ2hhbmdlKCkgZmluYWw7CiAgICAgdm9pZCBtb25pdG9y
T3JpZW50YXRpb24oT3JpZW50YXRpb25Ob3RpZmllciYpIGZpbmFsOworICAgIHZvaWQgYmVnaW5D
b25maWd1cmF0aW9uKCkgZmluYWw7CisgICAgdm9pZCBjb21taXRDb25maWd1cmF0aW9uKCkgZmlu
YWw7CisgICAgYm9vbCBpc0NhcHR1cmVTb3VyY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVl
OyB9CisgICAgYm9vbCBpbnRlcnJ1cHRlZCgpIGNvbnN0IGZpbmFsOworCisgICAgYm9vbCBzZXRQ
cmVzZXQoTlNTdHJpbmcqKTsKICAgICB2b2lkIGNvbXB1dGVTYW1wbGVSb3RhdGlvbigpOwogCiAg
ICAgYm9vbCBpc0ZyYW1lUmF0ZVN1cHBvcnRlZChkb3VibGUgZnJhbWVSYXRlKTsKIAotICAgIE5T
U3RyaW5nICpiZXN0U2Vzc2lvblByZXNldEZvclZpZGVvRGltZW5zaW9ucyhzdGQ6Om9wdGlvbmFs
PGludD4gd2lkdGgsIHN0ZDo6b3B0aW9uYWw8aW50PiBoZWlnaHQpOwotICAgIGJvb2wgc3VwcG9y
dHNTaXplQW5kRnJhbWVSYXRlKHN0ZDo6b3B0aW9uYWw8aW50PiB3aWR0aCwgc3RkOjpvcHRpb25h
bDxpbnQ+IGhlaWdodCwgc3RkOjpvcHRpb25hbDxkb3VibGU+KSBmaW5hbDsKLQotICAgIHZvaWQg
aW5pdGlhbGl6ZUNhcGFiaWxpdGllcyhSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJikg
ZmluYWw7Ci0gICAgdm9pZCBpbml0aWFsaXplU3VwcG9ydGVkQ29uc3RyYWludHMoUmVhbHRpbWVN
ZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzJikgZmluYWw7CisgICAgTlNTdHJpbmcqIGJl
c3RTZXNzaW9uUHJlc2V0Rm9yVmlkZW9EaW1lbnNpb25zKHN0ZDo6b3B0aW9uYWw8aW50PiB3aWR0
aCwgc3RkOjpvcHRpb25hbDxpbnQ+IGhlaWdodCk7CiAKICAgICAvLyBPcmllbnRhdGlvbk5vdGlm
aWVyOjpPYnNlcnZlciBBUEkKICAgICB2b2lkIG9yaWVudGF0aW9uQ2hhbmdlZChpbnQgb3JpZW50
YXRpb24pIGZpbmFsOwogCiAgICAgYm9vbCBzZXRGcmFtZVJhdGVDb25zdHJhaW50KGRvdWJsZSBt
aW5GcmFtZVJhdGUsIGRvdWJsZSBtYXhGcmFtZVJhdGUpOwogCi0gICAgdm9pZCBjYXB0dXJlT3V0
cHV0RGlkT3V0cHV0U2FtcGxlQnVmZmVyRnJvbUNvbm5lY3Rpb24oQVZDYXB0dXJlT3V0cHV0Kiwg
Q01TYW1wbGVCdWZmZXJSZWYsIEFWQ2FwdHVyZUNvbm5lY3Rpb24qKSBmaW5hbDsKICAgICB2b2lk
IHByb2Nlc3NOZXdGcmFtZShSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+LCBSZXRhaW5QdHI8
QVZDYXB0dXJlQ29ubmVjdGlvbj4pOwogICAgIEludFNpemUgc2l6ZUZvclByZXNldChOU1N0cmlu
ZyopOwogCiAgICAgdXNpbmcgVmlkZW9QcmVzZXRNYXAgPSBIYXNoTWFwPFN0cmluZywgSW50U2l6
ZT47CiAgICAgVmlkZW9QcmVzZXRNYXAmIHZpZGVvUHJlc2V0cygpIHsgcmV0dXJuIG1fc3VwcG9y
dGVkUHJlc2V0czsgfQogCisgICAgQVZDYXB0dXJlRGV2aWNlKiBkZXZpY2UoKSBjb25zdCB7IHJl
dHVybiBtX2RldmljZS5nZXQoKTsgfQorCiAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBtX3BlbmRp
bmdQcmVzZXQ7CiAgICAgUmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPiBtX2J1ZmZlcjsKICAg
ICBSZXRhaW5QdHI8QVZDYXB0dXJlVmlkZW9EYXRhT3V0cHV0PiBtX3ZpZGVvT3V0cHV0OwpAQCAt
MTAxLDYgKzExOCwxNSBAQCBwcml2YXRlOgogICAgIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9u
IG1fc2FtcGxlUm90YXRpb24geyBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6Tm9uZSB9Owog
CiAgICAgVmlkZW9QcmVzZXRNYXAgbV9zdXBwb3J0ZWRQcmVzZXRzOworCisgICAgbXV0YWJsZSBz
dGQ6Om9wdGlvbmFsPFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncz4gbV9jdXJyZW50U2V0dGlu
Z3M7CisgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmls
aXRpZXM+IG1fY2FwYWJpbGl0aWVzOworICAgIFJldGFpblB0cjxXZWJDb3JlQVZWaWRlb0NhcHR1
cmVTb3VyY2VPYnNlcnZlcj4gbV9vYmpjT2JzZXJ2ZXI7CisgICAgUmV0YWluUHRyPEFWQ2FwdHVy
ZVNlc3Npb24+IG1fc2Vzc2lvbjsKKyAgICBSZXRhaW5QdHI8QVZDYXB0dXJlRGV2aWNlPiBtX2Rl
dmljZTsKKyAgICBJbnRlcnJ1cHRpb25SZWFzb24gbV9pbnRlcnJ1cHRpb24geyBJbnRlcnJ1cHRp
b25SZWFzb246Ok5vbmUgfTsKKyAgICBib29sIG1faXNSdW5uaW5nIHsgZmFsc2UgfTsKKwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLm1tCmlu
ZGV4IGZhY2MzOGYwOGE4ODA5ZDJiM2I4MzM5ZjI5ZmU3OTQ5ZTI3Yjc2ZTkuLmJjMjIwYTQyNGNm
MWViOTk1ODhkOWRhZjJhMjY0YzkyNTE1Yjg1ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3Vy
Y2UubW0KQEAgLTI4LDMwICsyOCwyMCBAQAogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYg
VVNFKEFWRk9VTkRBVElPTikKIAotI2ltcG9ydCAiQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5oIgot
I2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0Q0cuaCIKICNpbXBvcnQgIkltYWdlQnVmZmVyLmgiCiAj
aW1wb3J0ICJJbnRSZWN0LmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJNZWRpYUNv
bnN0cmFpbnRzLmgiCiAjaW1wb3J0ICJNZWRpYVNhbXBsZUFWRk9iakMuaCIKLSNpbXBvcnQgIk5v
dEltcGxlbWVudGVkLmgiCi0jaW1wb3J0ICJQaXhlbEJ1ZmZlckNvbmZvcm1lckNWLmgiCiAjaW1w
b3J0ICJQbGF0Zm9ybUxheWVyLmgiCiAjaW1wb3J0ICJSZWFsdGltZU1lZGlhU291cmNlQ2VudGVy
TWFjLmgiCiAjaW1wb3J0ICJSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MuaCIKLSNpbXBvcnQg
IldlYkFjdGlvbkRpc2FibGluZ0NBTGF5ZXJEZWxlZ2F0ZS5oIgogI2ltcG9ydCA8QVZGb3VuZGF0
aW9uL0FWQ2FwdHVyZURldmljZS5oPgogI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWQ2FwdHVyZUlu
cHV0Lmg+CiAjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZDYXB0dXJlT3V0cHV0Lmg+CiAjaW1wb3J0
IDxBVkZvdW5kYXRpb24vQVZDYXB0dXJlU2Vzc2lvbi5oPgogI2ltcG9ydCA8b2JqYy9ydW50aW1l
Lmg+CiAKLSNpZiBQTEFURk9STShJT1MpCi0jaW5jbHVkZSAiV2ViQ29yZVRocmVhZC5oIgotI2lu
Y2x1ZGUgIldlYkNvcmVUaHJlYWRSdW4uaCIKLSNlbmRpZgotCiAjaW1wb3J0IDxwYWwvY2YvQ29y
ZU1lZGlhU29mdExpbmsuaD4KICNpbXBvcnQgIkNvcmVWaWRlb1NvZnRMaW5rLmgiCiAKQEAgLTYy
LDYgKzUyLDcgQEAgdHlwZWRlZiBBVkNhcHR1cmVEZXZpY2VJbnB1dCBBVkNhcHR1cmVEZXZpY2VJ
bnB1dFR5cGU7CiB0eXBlZGVmIEFWQ2FwdHVyZU91dHB1dCBBVkNhcHR1cmVPdXRwdXRUeXBlOwog
dHlwZWRlZiBBVkNhcHR1cmVWaWRlb0RhdGFPdXRwdXQgQVZDYXB0dXJlVmlkZW9EYXRhT3V0cHV0
VHlwZTsKIHR5cGVkZWYgQVZGcmFtZVJhdGVSYW5nZSBBVkZyYW1lUmF0ZVJhbmdlVHlwZTsKK3R5
cGVkZWYgQVZDYXB0dXJlU2Vzc2lvbiBBVkNhcHR1cmVTZXNzaW9uVHlwZTsKIAogU09GVF9MSU5L
X0ZSQU1FV09SS19PUFRJT05BTChBVkZvdW5kYXRpb24pCiAKQEAgLTcyLDYgKzYzLDcgQEAgU09G
VF9MSU5LX0NMQVNTKEFWRm91bmRhdGlvbiwgQVZDYXB0dXJlRGV2aWNlSW5wdXQpCiBTT0ZUX0xJ
TktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVkNhcHR1cmVPdXRwdXQpCiBTT0ZUX0xJTktfQ0xBU1Mo
QVZGb3VuZGF0aW9uLCBBVkNhcHR1cmVWaWRlb0RhdGFPdXRwdXQpCiBTT0ZUX0xJTktfQ0xBU1Mo
QVZGb3VuZGF0aW9uLCBBVkZyYW1lUmF0ZVJhbmdlKQorU09GVF9MSU5LX0NMQVNTKEFWRm91bmRh
dGlvbiwgQVZDYXB0dXJlU2Vzc2lvbikKIAogI2RlZmluZSBBVkNhcHR1cmVDb25uZWN0aW9uIGdl
dEFWQ2FwdHVyZUNvbm5lY3Rpb25DbGFzcygpCiAjZGVmaW5lIEFWQ2FwdHVyZURldmljZSBnZXRB
VkNhcHR1cmVEZXZpY2VDbGFzcygpCkBAIC05NywxMyArODksNDAgQEAgU09GVF9MSU5LX0NPTlNU
QU5UX01BWV9GQUlMKEFWRm91bmRhdGlvbiwgQVZDYXB0dXJlU2Vzc2lvblByZXNldDMyMHgyNDAs
IE5TU3RyaW4KICNpZiBQTEFURk9STShJT1MpCiBTT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUwo
QVZGb3VuZGF0aW9uLCBBVkNhcHR1cmVTZXNzaW9uUHJlc2V0Mzg0MHgyMTYwLCBOU1N0cmluZyAq
KQogU09GVF9MSU5LX0NPTlNUQU5UX01BWV9GQUlMKEFWRm91bmRhdGlvbiwgQVZDYXB0dXJlU2Vz
c2lvblByZXNldDE5MjB4MTA4MCwgTlNTdHJpbmcgKikKK1NPRlRfTElOS19QT0lOVEVSX09QVElP
TkFMKEFWRm91bmRhdGlvbiwgQVZDYXB0dXJlU2Vzc2lvblJ1bnRpbWVFcnJvck5vdGlmaWNhdGlv
biwgTlNTdHJpbmcgKikKK1NPRlRfTElOS19QT0lOVEVSX09QVElPTkFMKEFWRm91bmRhdGlvbiwg
QVZDYXB0dXJlU2Vzc2lvbldhc0ludGVycnVwdGVkTm90aWZpY2F0aW9uLCBOU1N0cmluZyAqKQor
U09GVF9MSU5LX1BPSU5URVJfT1BUSU9OQUwoQVZGb3VuZGF0aW9uLCBBVkNhcHR1cmVTZXNzaW9u
SW50ZXJydXB0aW9uRW5kZWROb3RpZmljYXRpb24sIE5TU3RyaW5nICopCitTT0ZUX0xJTktfUE9J
TlRFUl9PUFRJT05BTChBVkZvdW5kYXRpb24sIEFWQ2FwdHVyZVNlc3Npb25JbnRlcnJ1cHRpb25S
ZWFzb25LZXksIE5TU3RyaW5nICopCitTT0ZUX0xJTktfUE9JTlRFUl9PUFRJT05BTChBVkZvdW5k
YXRpb24sIEFWQ2FwdHVyZVNlc3Npb25FcnJvcktleSwgTlNTdHJpbmcgKikKIAogI2RlZmluZSBB
VkNhcHR1cmVTZXNzaW9uUHJlc2V0Mzg0MHgyMTYwIGdldEFWQ2FwdHVyZVNlc3Npb25QcmVzZXQz
ODQweDIxNjAoKQogI2RlZmluZSBBVkNhcHR1cmVTZXNzaW9uUHJlc2V0MTkyMHgxMDgwIGdldEFW
Q2FwdHVyZVNlc3Npb25QcmVzZXQxOTIweDEwODAoKQorI2RlZmluZSBBVkNhcHR1cmVTZXNzaW9u
UnVudGltZUVycm9yTm90aWZpY2F0aW9uIGdldEFWQ2FwdHVyZVNlc3Npb25SdW50aW1lRXJyb3JO
b3RpZmljYXRpb24oKQorI2RlZmluZSBBVkNhcHR1cmVTZXNzaW9uV2FzSW50ZXJydXB0ZWROb3Rp
ZmljYXRpb24gZ2V0QVZDYXB0dXJlU2Vzc2lvbldhc0ludGVycnVwdGVkTm90aWZpY2F0aW9uKCkK
KyNkZWZpbmUgQVZDYXB0dXJlU2Vzc2lvbkludGVycnVwdGlvbkVuZGVkTm90aWZpY2F0aW9uIGdl
dEFWQ2FwdHVyZVNlc3Npb25JbnRlcnJ1cHRpb25FbmRlZE5vdGlmaWNhdGlvbigpCisjZGVmaW5l
IEFWQ2FwdHVyZVNlc3Npb25JbnRlcnJ1cHRpb25SZWFzb25LZXkgZ2V0QVZDYXB0dXJlU2Vzc2lv
bkludGVycnVwdGlvblJlYXNvbktleSgpCisjZGVmaW5lIEFWQ2FwdHVyZVNlc3Npb25FcnJvcktl
eSBnZXRBVkNhcHR1cmVTZXNzaW9uRXJyb3JLZXkoKQogI2VuZGlmCiAKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCitAaW50ZXJmYWNlIFdlYkNvcmVBVlZpZGVvQ2FwdHVyZVNvdXJjZU9ic2Vy
dmVyIDogTlNPYmplY3Q8QVZDYXB0dXJlVmlkZW9EYXRhT3V0cHV0U2FtcGxlQnVmZmVyRGVsZWdh
dGU+IHsKKyAgICBBVlZpZGVvQ2FwdHVyZVNvdXJjZSogbV9jYWxsYmFjazsKK30KKworLShpZClp
bml0V2l0aENhbGxiYWNrOihBVlZpZGVvQ2FwdHVyZVNvdXJjZSopY2FsbGJhY2s7CistKHZvaWQp
ZGlzY29ubmVjdDsKKy0odm9pZClhZGROb3RpZmljYXRpb25PYnNlcnZlcnM7CistKHZvaWQpcmVt
b3ZlTm90aWZpY2F0aW9uT2JzZXJ2ZXJzOworLSh2b2lkKWNhcHR1cmVPdXRwdXQ6KEFWQ2FwdHVy
ZU91dHB1dFR5cGUqKWNhcHR1cmVPdXRwdXQgZGlkT3V0cHV0U2FtcGxlQnVmZmVyOihDTVNhbXBs
ZUJ1ZmZlclJlZilzYW1wbGVCdWZmZXIgZnJvbUNvbm5lY3Rpb246KEFWQ2FwdHVyZUNvbm5lY3Rp
b25UeXBlKiljb25uZWN0aW9uOworLSh2b2lkKW9ic2VydmVWYWx1ZUZvcktleVBhdGg6a2V5UGF0
aCBvZk9iamVjdDooaWQpb2JqZWN0IGNoYW5nZTooTlNEaWN0aW9uYXJ5KiljaGFuZ2UgY29udGV4
dDoodm9pZCopY29udGV4dDsKKyNpZiBQTEFURk9STShJT1MpCistKHZvaWQpc2Vzc2lvblJ1bnRp
bWVFcnJvcjooTlNOb3RpZmljYXRpb24qKW5vdGlmaWNhdGlvbjsKKy0odm9pZCliZWdpblNlc3Np
b25JbnRlcnJ1cHRlZDooTlNOb3RpZmljYXRpb24qKW5vdGlmaWNhdGlvbjsKKy0odm9pZCllbmRT
ZXNzaW9uSW50ZXJydXB0ZWQ6KE5TTm90aWZpY2F0aW9uKilub3RpZmljYXRpb247CisjZW5kaWYK
K0BlbmQKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtMTEy
LDYgKzEzMSwxNiBAQCBjb25zdCBPU1R5cGUgdmlkZW9DYXB0dXJlRm9ybWF0ID0ga0NWUGl4ZWxG
b3JtYXRUeXBlXzQyMFlwQ2JDcjhQbGFuYXI7CiBjb25zdCBPU1R5cGUgdmlkZW9DYXB0dXJlRm9y
bWF0ID0ga0NWUGl4ZWxGb3JtYXRUeXBlXzQyMFlwQ2JDcjhCaVBsYW5hckZ1bGxSYW5nZTsKICNl
bmRpZgogCitzdGF0aWMgZGlzcGF0Y2hfcXVldWVfdCBnbG9iYVZpZGVvQ2FwdHVyZVNlcmlhbFF1
ZXVlKCkKK3sKKyAgICBzdGF0aWMgZGlzcGF0Y2hfcXVldWVfdCBnbG9iYWxRdWV1ZTsKKyAgICBz
dGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKKyAgICBkaXNwYXRjaF9vbmNlKCZvbmNl
VG9rZW4sIF57CisgICAgICAgIGdsb2JhbFF1ZXVlID0gZGlzcGF0Y2hfcXVldWVfY3JlYXRlX3dp
dGhfdGFyZ2V0KCJXZWJDb3JlQVZWaWRlb0NhcHR1cmVTb3VyY2UgdmlkZW8gY2FwdHVyZSBxdWV1
ZSIsIERJU1BBVENIX1FVRVVFX1NFUklBTCwgZGlzcGF0Y2hfZ2V0X2dsb2JhbF9xdWV1ZShESVNQ
QVRDSF9RVUVVRV9QUklPUklUWV9ISUdILCAwKSk7CisgICAgfSk7CisgICAgcmV0dXJuIGdsb2Jh
bFF1ZXVlOworfQorCiBDYXB0dXJlU291cmNlT3JFcnJvciBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6
Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgaWQsIGNvbnN0IE1lZGlhQ29uc3RyYWludHMqIGNv
bnN0cmFpbnRzKQogewogICAgIEFWQ2FwdHVyZURldmljZVR5cGVkZWYgKmRldmljZSA9IFtnZXRB
VkNhcHR1cmVEZXZpY2VDbGFzcygpIGRldmljZVdpdGhVbmlxdWVJRDppZF07CkBAIC0xMjksNyAr
MTU4LDkgQEAgQ2FwdHVyZVNvdXJjZU9yRXJyb3IgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OmNyZWF0
ZShjb25zdCBBdG9taWNTdHJpbmcmIGlkLCBjb25zdAogfQogCiBBVlZpZGVvQ2FwdHVyZVNvdXJj
ZTo6QVZWaWRlb0NhcHR1cmVTb3VyY2UoQVZDYXB0dXJlRGV2aWNlVHlwZWRlZiogZGV2aWNlLCBj
b25zdCBBdG9taWNTdHJpbmcmIGlkKQotICAgIDogQVZNZWRpYUNhcHR1cmVTb3VyY2UoZGV2aWNl
LCBpZCwgVHlwZTo6VmlkZW8pCisgICAgOiBSZWFsdGltZU1lZGlhU291cmNlKGlkLCBUeXBlOjpW
aWRlbywgZGV2aWNlLmxvY2FsaXplZE5hbWUpCisgICAgLCBtX29iamNPYnNlcnZlcihhZG9wdE5T
KFtbV2ViQ29yZUFWVmlkZW9DYXB0dXJlU291cmNlT2JzZXJ2ZXIgYWxsb2NdIGluaXRXaXRoQ2Fs
bGJhY2s6dGhpc10pKQorICAgICwgbV9kZXZpY2UoZGV2aWNlKQogewogICAgIHN0cnVjdCBWaWRl
b1ByZXNldCB7CiAgICAgICAgIGJvb2wgc3ltYm9sQXZhaWxhYmxlOwpAQCAtMTU3LDEyICsxODgs
NjAgQEAgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OkFWVmlkZW9DYXB0dXJlU291cmNlKEFWQ2FwdHVy
ZURldmljZVR5cGVkZWYqIGRldmljZSwgY29uc3QKIAogICAgICAgICBwcmVzZXRzTWFwLT5hZGQo
U3RyaW5nKHByZXNldC5uYW1lKSwgSW50U2l6ZShwcmVzZXQud2lkdGgsIHByZXNldC5oZWlnaHQp
KTsKICAgICB9CisKKyNpZiBQTEFURk9STShJT1MpCisgICAgc3RhdGljX2Fzc2VydChzdGF0aWNf
Y2FzdDxpbnQ+KEludGVycnVwdGlvblJlYXNvbjo6VmlkZW9Ob3RBbGxvd2VkSW5CYWNrZ3JvdW5k
KSA9PSBzdGF0aWNfY2FzdDxpbnQ+KEFWQ2FwdHVyZVNlc3Npb25JbnRlcnJ1cHRpb25SZWFzb25W
aWRlb0RldmljZU5vdEF2YWlsYWJsZUluQmFja2dyb3VuZCksICJJbnRlcnJ1cHRpb25SZWFzb246
OlZpZGVvTm90QWxsb3dlZEluQmFja2dyb3VuZCBpcyBub3QgQVZDYXB0dXJlU2Vzc2lvbkludGVy
cnVwdGlvblJlYXNvblZpZGVvRGV2aWNlTm90QXZhaWxhYmxlSW5CYWNrZ3JvdW5kIGFzIGV4cGVj
dGVkIik7CisgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxpbnQ+KEludGVycnVwdGlvblJl
YXNvbjo6VmlkZW9Ob3RBbGxvd2VkSW5TaWRlQnlTaWRlKSA9PSBBVkNhcHR1cmVTZXNzaW9uSW50
ZXJydXB0aW9uUmVhc29uVmlkZW9EZXZpY2VOb3RBdmFpbGFibGVXaXRoTXVsdGlwbGVGb3JlZ3Jv
dW5kQXBwcywgIkludGVycnVwdGlvblJlYXNvbjo6VmlkZW9Ob3RBbGxvd2VkSW5TaWRlQnlTaWRl
IGlzIG5vdCBBVkNhcHR1cmVTZXNzaW9uSW50ZXJydXB0aW9uUmVhc29uVmlkZW9EZXZpY2VOb3RB
dmFpbGFibGVXaXRoTXVsdGlwbGVGb3JlZ3JvdW5kQXBwcyBhcyBleHBlY3RlZCIpOworICAgIHN0
YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8aW50PihJbnRlcnJ1cHRpb25SZWFzb246OlZpZGVvSW5V
c2UpID09IEFWQ2FwdHVyZVNlc3Npb25JbnRlcnJ1cHRpb25SZWFzb25WaWRlb0RldmljZUluVXNl
QnlBbm90aGVyQ2xpZW50LCAiSW50ZXJydXB0aW9uUmVhc29uOjpWaWRlb0luVXNlIGlzIG5vdCBB
VkNhcHR1cmVTZXNzaW9uSW50ZXJydXB0aW9uUmVhc29uVmlkZW9EZXZpY2VJblVzZUJ5QW5vdGhl
ckNsaWVudCBhcyBleHBlY3RlZCIpOworICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8aW50
PihJbnRlcnJ1cHRpb25SZWFzb246OkF1ZGlvSW5Vc2UpID09IEFWQ2FwdHVyZVNlc3Npb25JbnRl
cnJ1cHRpb25SZWFzb25BdWRpb0RldmljZUluVXNlQnlBbm90aGVyQ2xpZW50LCAiSW50ZXJydXB0
aW9uUmVhc29uOjpBdWRpb0luVXNlIGlzIG5vdCBBVkNhcHR1cmVTZXNzaW9uSW50ZXJydXB0aW9u
UmVhc29uQXVkaW9EZXZpY2VJblVzZUJ5QW5vdGhlckNsaWVudCBhcyBleHBlY3RlZCIpOworI2Vu
ZGlmCisKKyAgICBzZXRQZXJzaXN0ZW50SUQoU3RyaW5nKGRldmljZS51bmlxdWVJRCkpOwogfQog
CiBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6fkFWVmlkZW9DYXB0dXJlU291cmNlKCkKIHsKICNpZiBQ
TEFURk9STShJT1MpCiAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYzo6dmlkZW9DYXB0
dXJlU291cmNlRmFjdG9yeSgpLnVuc2V0QWN0aXZlU291cmNlKCp0aGlzKTsKKyNlbmRpZgorICAg
IFttX29iamNPYnNlcnZlciBkaXNjb25uZWN0XTsKKworICAgIGlmICghbV9zZXNzaW9uKQorICAg
ICAgICByZXR1cm47CisKKyAgICBbbV9zZXNzaW9uIHJlbW92ZU9ic2VydmVyOm1fb2JqY09ic2Vy
dmVyLmdldCgpIGZvcktleVBhdGg6QCJyYXRlIl07CisgICAgaWYgKFttX3Nlc3Npb24gaXNSdW5u
aW5nXSkKKyAgICAgICAgW21fc2Vzc2lvbiBzdG9wUnVubmluZ107CisKK30KKwordm9pZCBBVlZp
ZGVvQ2FwdHVyZVNvdXJjZTo6c3RhcnRQcm9kdWNpbmdEYXRhKCkKK3sKKyAgICBpZiAoIW1fc2Vz
c2lvbikgeworICAgICAgICBpZiAoIXNldHVwU2Vzc2lvbigpKQorICAgICAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIGlmIChbbV9zZXNzaW9uIGlzUnVubmluZ10pCisgICAgICAgIHJldHVy
bjsKKworICAgIFttX29iamNPYnNlcnZlciBhZGROb3RpZmljYXRpb25PYnNlcnZlcnNdOworICAg
IFttX3Nlc3Npb24gc3RhcnRSdW5uaW5nXTsKK30KKwordm9pZCBBVlZpZGVvQ2FwdHVyZVNvdXJj
ZTo6c3RvcFByb2R1Y2luZ0RhdGEoKQoreworICAgIGlmICghbV9zZXNzaW9uKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBbbV9vYmpjT2JzZXJ2ZXIgcmVtb3ZlTm90aWZpY2F0aW9uT2JzZXJ2ZXJz
XTsKKworICAgIGlmIChbbV9zZXNzaW9uIGlzUnVubmluZ10pCisgICAgICAgIFttX3Nlc3Npb24g
c3RvcFJ1bm5pbmddOworCisgICAgbV9pbnRlcnJ1cHRpb24gPSBJbnRlcnJ1cHRpb25SZWFzb246
Ok5vbmU7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIG1fc2Vzc2lvbiA9IG51bGxwdHI7CiAjZW5k
aWYKIH0KIApAQCAtMTc4LDggKzI1Nyw2NSBAQCBzdGF0aWMgdm9pZCB1cGRhdGVBc3BlY3RSYXRp
b01pbk1heChkb3VibGUmIG1pbiwgZG91YmxlJiBtYXgsIGRvdWJsZSB2YWx1ZSkKICAgICBtYXgg
PSBzdGQ6Om1heDxkb3VibGU+KG1heCwgdmFsdWUpOwogfQogCi12b2lkIEFWVmlkZW9DYXB0dXJl
U291cmNlOjppbml0aWFsaXplQ2FwYWJpbGl0aWVzKFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmls
aXRpZXMmIGNhcGFiaWxpdGllcykKK3ZvaWQgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OmJlZ2luQ29u
ZmlndXJhdGlvbigpCit7CisgICAgaWYgKG1fc2Vzc2lvbikKKyAgICAgICAgW21fc2Vzc2lvbiBi
ZWdpbkNvbmZpZ3VyYXRpb25dOworfQorCit2b2lkIEFWVmlkZW9DYXB0dXJlU291cmNlOjpjb21t
aXRDb25maWd1cmF0aW9uKCkKIHsKKyAgICBpZiAobV9zZXNzaW9uKQorICAgICAgICBbbV9zZXNz
aW9uIGNvbW1pdENvbmZpZ3VyYXRpb25dOworfQorCit2b2lkIEFWVmlkZW9DYXB0dXJlU291cmNl
OjpzZXR0aW5nc0RpZENoYW5nZSgpCit7CisgICAgbV9jdXJyZW50U2V0dGluZ3MgPSBzdGQ6Om51
bGxvcHQ7CisgICAgUmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0dGluZ3NEaWRDaGFuZ2UoKTsKK30K
KworY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiBBVlZpZGVvQ2FwdHVyZVNvdXJj
ZTo6c2V0dGluZ3MoKSBjb25zdAoreworICAgIGlmIChtX2N1cnJlbnRTZXR0aW5ncykKKyAgICAg
ICAgcmV0dXJuICptX2N1cnJlbnRTZXR0aW5nczsKKworICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VT
ZXR0aW5ncyBzZXR0aW5nczsKKyAgICBpZiAoW2RldmljZSgpIHBvc2l0aW9uXSA9PSBBVkNhcHR1
cmVEZXZpY2VQb3NpdGlvbkZyb250KQorICAgICAgICBzZXR0aW5ncy5zZXRGYWNpbmdNb2RlKFJl
YWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VXNlcik7CisgICAgZWxzZSBpZiAoW2RldmljZSgp
IHBvc2l0aW9uXSA9PSBBVkNhcHR1cmVEZXZpY2VQb3NpdGlvbkJhY2spCisgICAgICAgIHNldHRp
bmdzLnNldEZhY2luZ01vZGUoUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpFbnZpcm9ubWVu
dCk7CisgICAgZWxzZQorICAgICAgICBzZXR0aW5ncy5zZXRGYWNpbmdNb2RlKFJlYWx0aW1lTWVk
aWFTb3VyY2VTZXR0aW5nczo6VW5rbm93bik7CisKKyAgICBhdXRvIG1heEZyYW1lRHVyYXRpb24g
PSBbZGV2aWNlKCkgYWN0aXZlVmlkZW9NYXhGcmFtZUR1cmF0aW9uXTsKKyAgICBzZXR0aW5ncy5z
ZXRGcmFtZVJhdGUobWF4RnJhbWVEdXJhdGlvbi50aW1lc2NhbGUgLyBtYXhGcmFtZUR1cmF0aW9u
LnZhbHVlKTsKKyAgICBzZXR0aW5ncy5zZXRXaWR0aChtX3dpZHRoKTsKKyAgICBzZXR0aW5ncy5z
ZXRIZWlnaHQobV9oZWlnaHQpOworICAgIHNldHRpbmdzLnNldERldmljZUlkKGlkKCkpOworCisg
ICAgUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzIHN1cHBvcnRlZENvbnN0
cmFpbnRzOworICAgIHN1cHBvcnRlZENvbnN0cmFpbnRzLnNldFN1cHBvcnRzRGV2aWNlSWQodHJ1
ZSk7CisgICAgc3VwcG9ydGVkQ29uc3RyYWludHMuc2V0U3VwcG9ydHNGYWNpbmdNb2RlKFtkZXZp
Y2UoKSBwb3NpdGlvbl0gIT0gQVZDYXB0dXJlRGV2aWNlUG9zaXRpb25VbnNwZWNpZmllZCk7Cisg
ICAgc3VwcG9ydGVkQ29uc3RyYWludHMuc2V0U3VwcG9ydHNXaWR0aCh0cnVlKTsKKyAgICBzdXBw
b3J0ZWRDb25zdHJhaW50cy5zZXRTdXBwb3J0c0hlaWdodCh0cnVlKTsKKyAgICBzdXBwb3J0ZWRD
b25zdHJhaW50cy5zZXRTdXBwb3J0c0FzcGVjdFJhdGlvKHRydWUpOworICAgIHN1cHBvcnRlZENv
bnN0cmFpbnRzLnNldFN1cHBvcnRzRnJhbWVSYXRlKHRydWUpOworCisgICAgc2V0dGluZ3Muc2V0
U3VwcG9ydGVkQ29uc3RyYWludHMoc3VwcG9ydGVkQ29uc3RyYWludHMpOworCisgICAgbV9jdXJy
ZW50U2V0dGluZ3MgPSBXVEZNb3ZlKHNldHRpbmdzKTsKKworICAgIHJldHVybiAqbV9jdXJyZW50
U2V0dGluZ3M7Cit9CisKK2NvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmIEFW
VmlkZW9DYXB0dXJlU291cmNlOjpjYXBhYmlsaXRpZXMoKSBjb25zdAoreworICAgIGlmIChtX2Nh
cGFiaWxpdGllcykKKyAgICAgICAgcmV0dXJuICptX2NhcGFiaWxpdGllczsKKworICAgIFJlYWx0
aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMgY2FwYWJpbGl0aWVzKHNldHRpbmdzKCkuc3VwcG9y
dGVkQ29uc3RyYWludHMoKSk7CisgICAgY2FwYWJpbGl0aWVzLnNldERldmljZUlkKGlkKCkpOwog
ICAgIEFWQ2FwdHVyZURldmljZVR5cGVkZWYgKnZpZGVvRGV2aWNlID0gZGV2aWNlKCk7CiAKICAg
ICBpZiAoW3ZpZGVvRGV2aWNlIHBvc2l0aW9uXSA9PSBBVkNhcHR1cmVEZXZpY2VQb3NpdGlvbkZy
b250KQpAQCAtMjA0LDQ1ICszNDAsMjAgQEAgdm9pZCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6aW5p
dGlhbGl6ZUNhcGFiaWxpdGllcyhSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWUKICAgICAg
ICAgfQogICAgIH0KIAotICAgIGZvciAoYXV0byYgcHJlc2V0IDogdmlkZW9QcmVzZXRzKCkpIHsK
KyAgICBmb3IgKGF1dG8mIHByZXNldCA6IG1fc3VwcG9ydGVkUHJlc2V0cykgewogICAgICAgICBh
dXRvIHZhbHVlcyA9IHByZXNldC52YWx1ZTsKICAgICAgICAgdXBkYXRlU2l6ZU1pbk1heChtaW5p
bXVtV2lkdGgsIG1heGltdW1XaWR0aCwgdmFsdWVzLndpZHRoKCkpOwogICAgICAgICB1cGRhdGVT
aXplTWluTWF4KG1pbmltdW1IZWlnaHQsIG1heGltdW1IZWlnaHQsIHZhbHVlcy5oZWlnaHQoKSk7
CiAgICAgICAgIHVwZGF0ZUFzcGVjdFJhdGlvTWluTWF4KG1pbmltdW1Bc3BlY3RSYXRpbywgbWF4
aW11bUFzcGVjdFJhdGlvLCBzdGF0aWNfY2FzdDxkb3VibGU+KHZhbHVlcy53aWR0aCgpKSAvIHZh
bHVlcy5oZWlnaHQoKSk7CiAgICAgfQotCiAgICAgY2FwYWJpbGl0aWVzLnNldEZyYW1lUmF0ZShD
YXBhYmlsaXR5VmFsdWVPclJhbmdlKGxvd2VzdEZyYW1lUmF0ZVJhbmdlLCBoaWdoZXN0RnJhbWVS
YXRlUmFuZ2UpKTsKICAgICBjYXBhYmlsaXRpZXMuc2V0V2lkdGgoQ2FwYWJpbGl0eVZhbHVlT3JS
YW5nZShtaW5pbXVtV2lkdGgsIG1heGltdW1XaWR0aCkpOwogICAgIGNhcGFiaWxpdGllcy5zZXRI
ZWlnaHQoQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZShtaW5pbXVtSGVpZ2h0LCBtYXhpbXVtSGVpZ2h0
KSk7CiAgICAgY2FwYWJpbGl0aWVzLnNldEFzcGVjdFJhdGlvKENhcGFiaWxpdHlWYWx1ZU9yUmFu
Z2UobWluaW11bUFzcGVjdFJhdGlvLCBtYXhpbXVtQXNwZWN0UmF0aW8pKTsKLX0KLQotdm9pZCBB
VlZpZGVvQ2FwdHVyZVNvdXJjZTo6aW5pdGlhbGl6ZVN1cHBvcnRlZENvbnN0cmFpbnRzKFJlYWx0
aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cyYgc3VwcG9ydGVkQ29uc3RyYWludHMp
Ci17Ci0gICAgc3VwcG9ydGVkQ29uc3RyYWludHMuc2V0U3VwcG9ydHNGYWNpbmdNb2RlKFtkZXZp
Y2UoKSBwb3NpdGlvbl0gIT0gQVZDYXB0dXJlRGV2aWNlUG9zaXRpb25VbnNwZWNpZmllZCk7Ci0g
ICAgc3VwcG9ydGVkQ29uc3RyYWludHMuc2V0U3VwcG9ydHNXaWR0aCh0cnVlKTsKLSAgICBzdXBw
b3J0ZWRDb25zdHJhaW50cy5zZXRTdXBwb3J0c0hlaWdodCh0cnVlKTsKLSAgICBzdXBwb3J0ZWRD
b25zdHJhaW50cy5zZXRTdXBwb3J0c0FzcGVjdFJhdGlvKHRydWUpOwotICAgIHN1cHBvcnRlZENv
bnN0cmFpbnRzLnNldFN1cHBvcnRzRnJhbWVSYXRlKHRydWUpOwotfQotCi12b2lkIEFWVmlkZW9D
YXB0dXJlU291cmNlOjp1cGRhdGVTZXR0aW5ncyhSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3Mm
IHNldHRpbmdzKQotewotICAgIHNldHRpbmdzLnNldERldmljZUlkKGlkKCkpOwogCi0gICAgaWYg
KFtkZXZpY2UoKSBwb3NpdGlvbl0gPT0gQVZDYXB0dXJlRGV2aWNlUG9zaXRpb25Gcm9udCkKLSAg
ICAgICAgc2V0dGluZ3Muc2V0RmFjaW5nTW9kZShSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6
OlVzZXIpOwotICAgIGVsc2UgaWYgKFtkZXZpY2UoKSBwb3NpdGlvbl0gPT0gQVZDYXB0dXJlRGV2
aWNlUG9zaXRpb25CYWNrKQotICAgICAgICBzZXR0aW5ncy5zZXRGYWNpbmdNb2RlKFJlYWx0aW1l
TWVkaWFTb3VyY2VTZXR0aW5nczo6RW52aXJvbm1lbnQpOwotICAgIGVsc2UKLSAgICAgICAgc2V0
dGluZ3Muc2V0RmFjaW5nTW9kZShSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OlVua25vd24p
OworICAgIG1fY2FwYWJpbGl0aWVzID0gV1RGTW92ZShjYXBhYmlsaXRpZXMpOwogCi0gICAgLy8g
RklYTUU6IE9ic2VydmUgZnJhbWUgcmF0ZSBjaGFuZ2VzLgotICAgIGF1dG8gbWF4RnJhbWVEdXJh
dGlvbiA9IFtkZXZpY2UoKSBhY3RpdmVWaWRlb01heEZyYW1lRHVyYXRpb25dOwotICAgIHNldHRp
bmdzLnNldEZyYW1lUmF0ZShtYXhGcmFtZUR1cmF0aW9uLnRpbWVzY2FsZSAvIG1heEZyYW1lRHVy
YXRpb24udmFsdWUpOwotICAgIHNldHRpbmdzLnNldFdpZHRoKG1fd2lkdGgpOwotICAgIHNldHRp
bmdzLnNldEhlaWdodChtX2hlaWdodCk7Ci0gICAgc2V0dGluZ3Muc2V0QXNwZWN0UmF0aW8oc3Rh
dGljX2Nhc3Q8ZmxvYXQ+KG1fd2lkdGgpIC8gbV9oZWlnaHQpOworICAgIHJldHVybiAqbV9jYXBh
YmlsaXRpZXM7CiB9CiAKIGJvb2wgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OmFwcGx5U2l6ZShjb25z
dCBJbnRTaXplJiBzaXplKQpAQCAtMjg1LDcgKzM5NiwxMSBAQCBib29sIEFWVmlkZW9DYXB0dXJl
U291cmNlOjpzZXRQcmVzZXQoTlNTdHJpbmcgKnByZXNldCkKICAgICBAdHJ5IHsKICAgICAgICAg
c2Vzc2lvbigpLnNlc3Npb25QcmVzZXQgPSBwcmVzZXQ7CiAjaWYgUExBVEZPUk0oTUFDKQotICAg
ICAgICBhdXRvIHNldHRpbmdzRGljdGlvbmFyeSA9IEB7IChfX2JyaWRnZSBOU1N0cmluZyAqKWtD
VlBpeGVsQnVmZmVyUGl4ZWxGb3JtYXRUeXBlS2V5OiBAKHZpZGVvQ2FwdHVyZUZvcm1hdCksIChf
X2JyaWRnZSBOU1N0cmluZyAqKWtDVlBpeGVsQnVmZmVyV2lkdGhLZXk6IEAoc2l6ZS53aWR0aCgp
KSwgKF9fYnJpZGdlIE5TU3RyaW5nICopa0NWUGl4ZWxCdWZmZXJIZWlnaHRLZXk6IEAoc2l6ZS5o
ZWlnaHQoKSksIH07CisgICAgICAgIGF1dG8gc2V0dGluZ3NEaWN0aW9uYXJ5ID0gQHsKKyAgICAg
ICAgICAgIChfX2JyaWRnZSBOU1N0cmluZyAqKWtDVlBpeGVsQnVmZmVyUGl4ZWxGb3JtYXRUeXBl
S2V5OiBAKHZpZGVvQ2FwdHVyZUZvcm1hdCksCisgICAgICAgICAgICAoX19icmlkZ2UgTlNTdHJp
bmcgKilrQ1ZQaXhlbEJ1ZmZlcldpZHRoS2V5OiBAKHNpemUud2lkdGgoKSksCisgICAgICAgICAg
ICAoX19icmlkZ2UgTlNTdHJpbmcgKilrQ1ZQaXhlbEJ1ZmZlckhlaWdodEtleTogQChzaXplLmhl
aWdodCgpKQorICAgICAgICB9OwogICAgICAgICBbbV92aWRlb091dHB1dCBzZXRWaWRlb1NldHRp
bmdzOnNldHRpbmdzRGljdGlvbmFyeV07CiAjZW5kaWYKICAgICB9IEBjYXRjaChOU0V4Y2VwdGlv
biAqZXhjZXB0aW9uKSB7CkBAIC0zODEsNiArNDk2LDI0IEBAIHN0YXRpYyBpbmxpbmUgaW50IHNl
bnNvck9yaWVudGF0aW9uRnJvbVZpZGVvT3V0cHV0KEFWQ2FwdHVyZVZpZGVvRGF0YU91dHB1dFR5
cGUqCiAgICAgcmV0dXJuIGNvbm5lY3Rpb24gPyBzZW5zb3JPcmllbnRhdGlvbihbY29ubmVjdGlv
biB2aWRlb09yaWVudGF0aW9uXSkgOiAwOwogfQogCitib29sIEFWVmlkZW9DYXB0dXJlU291cmNl
OjpzZXR1cFNlc3Npb24oKQoreworICAgIGlmIChtX3Nlc3Npb24pCisgICAgICAgIHJldHVybiB0
cnVlOworCisgICAgbV9zZXNzaW9uID0gYWRvcHROUyhbYWxsb2NBVkNhcHR1cmVTZXNzaW9uSW5z
dGFuY2UoKSBpbml0XSk7CisgICAgW21fc2Vzc2lvbiBhZGRPYnNlcnZlcjptX29iamNPYnNlcnZl
ci5nZXQoKSBmb3JLZXlQYXRoOkAicmF0ZSIgb3B0aW9uczpOU0tleVZhbHVlT2JzZXJ2aW5nT3B0
aW9uTmV3IGNvbnRleHQ6KHZvaWQgKiluaWxdOworCisgICAgW21fc2Vzc2lvbiBiZWdpbkNvbmZp
Z3VyYXRpb25dOworICAgIGJvb2wgc3VjY2VzcyA9IHNldHVwQ2FwdHVyZVNlc3Npb24oKTsKKyAg
ICBbbV9zZXNzaW9uIGNvbW1pdENvbmZpZ3VyYXRpb25dOworCisgICAgaWYgKCFzdWNjZXNzKQor
ICAgICAgICBjYXB0dXJlRmFpbGVkKCk7CisKKyAgICByZXR1cm4gc3VjY2VzczsKK30KKwogYm9v
bCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6c2V0dXBDYXB0dXJlU2Vzc2lvbigpCiB7CiAjaWYgUExB
VEZPUk0oSU9TKQpAQCAtNDEyLDcgKzU0NSw3IEBAIGJvb2wgQVZWaWRlb0NhcHR1cmVTb3VyY2U6
OnNldHVwQ2FwdHVyZVNlc3Npb24oKQogCiAgICAgW21fdmlkZW9PdXRwdXQgc2V0VmlkZW9TZXR0
aW5nczpzZXR0aW5nc0RpY3Rpb25hcnkuZ2V0KCldOwogICAgIFttX3ZpZGVvT3V0cHV0IHNldEFs
d2F5c0Rpc2NhcmRzTGF0ZVZpZGVvRnJhbWVzOllFU107Ci0gICAgc2V0VmlkZW9TYW1wbGVCdWZm
ZXJEZWxlZ2F0ZShtX3ZpZGVvT3V0cHV0LmdldCgpKTsKKyAgICBbbV92aWRlb091dHB1dCBzZXRT
YW1wbGVCdWZmZXJEZWxlZ2F0ZTptX29iamNPYnNlcnZlci5nZXQoKSBxdWV1ZTpnbG9iYVZpZGVv
Q2FwdHVyZVNlcmlhbFF1ZXVlKCldOwogCiAgICAgaWYgKCFbc2Vzc2lvbigpIGNhbkFkZE91dHB1
dDptX3ZpZGVvT3V0cHV0LmdldCgpXSkgewogICAgICAgICBSRUxFQVNFX0xPRyhNZWRpYSwgIkFW
VmlkZW9DYXB0dXJlU291cmNlOjpzZXR1cENhcHR1cmVTZXNzaW9uKCVwKSwgdW5hYmxlIHRvIGFk
ZCB2aWRlbyBzYW1wbGUgYnVmZmVyIG91dHB1dCBkZWxlZ2F0ZSIsIHRoaXMpOwpAQCAtNTU1LDYg
KzY4OCwxNTcgQEAgYm9vbCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6c3VwcG9ydHNTaXplQW5kRnJh
bWVSYXRlKHN0ZDo6b3B0aW9uYWw8aW50PiB3aWR0aCwgc3QKICAgICByZXR1cm4gaXNGcmFtZVJh
dGVTdXBwb3J0ZWQoZnJhbWVSYXRlLnZhbHVlKCkpOwogfQogCit2b2lkIEFWVmlkZW9DYXB0dXJl
U291cmNlOjpjYXB0dXJlU2Vzc2lvbklzUnVubmluZ0RpZENoYW5nZShib29sIHN0YXRlKQorewor
ICAgIHNjaGVkdWxlRGVmZXJyZWRUYXNrKFt0aGlzLCBzdGF0ZV0geworICAgICAgICBpZiAoKHN0
YXRlID09IG1faXNSdW5uaW5nKSAmJiAoc3RhdGUgPT0gIW11dGVkKCkpKQorICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgIG1faXNSdW5uaW5nID0gc3RhdGU7CisgICAgICAgIG5vdGlmeU11
dGVkQ2hhbmdlKCFtX2lzUnVubmluZyk7CisgICAgfSk7Cit9CisKK2Jvb2wgQVZWaWRlb0NhcHR1
cmVTb3VyY2U6OmludGVycnVwdGVkKCkgY29uc3QKK3sKKyAgICBpZiAobV9pbnRlcnJ1cHRpb24g
IT0gSW50ZXJydXB0aW9uUmVhc29uOjpOb25lKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAg
IHJldHVybiBSZWFsdGltZU1lZGlhU291cmNlOjppbnRlcnJ1cHRlZCgpOworfQorCisjaWYgUExB
VEZPUk0oSU9TKQordm9pZCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6Y2FwdHVyZVNlc3Npb25SdW50
aW1lRXJyb3IoUmV0YWluUHRyPE5TRXJyb3I+IGVycm9yKQoreworICAgIGlmICghbV9pc1J1bm5p
bmcgfHwgZXJyb3IuZ2V0KCkuY29kZSAhPSBBVkVycm9yTWVkaWFTZXJ2aWNlc1dlcmVSZXNldCkK
KyAgICAgICAgcmV0dXJuOworCisgICAgLy8gVHJ5IHRvIHJlc3RhcnQgdGhlIHNlc3Npb24sIGJ1
dCByZXNldCBtX2lzUnVubmluZyBpbW1lZGlhdGVseSBzbyBpZiBpdCBmYWlscyB3ZSB3b24ndCB0
cnkgYWdhaW4uCisgICAgW21fc2Vzc2lvbiBzdGFydFJ1bm5pbmddOworICAgIG1faXNSdW5uaW5n
ID0gW21fc2Vzc2lvbiBpc1J1bm5pbmddOworfQorCit2b2lkIEFWVmlkZW9DYXB0dXJlU291cmNl
OjpjYXB0dXJlU2Vzc2lvbkJlZ2luSW50ZXJydXB0aW9uKFJldGFpblB0cjxOU05vdGlmaWNhdGlv
bj4gbm90aWZpY2F0aW9uKQoreworICAgIG1faW50ZXJydXB0aW9uID0gc3RhdGljX2Nhc3Q8QVZW
aWRlb0NhcHR1cmVTb3VyY2U6OkludGVycnVwdGlvblJlYXNvbj4oW25vdGlmaWNhdGlvbi5nZXQo
KS51c2VySW5mb1tBVkNhcHR1cmVTZXNzaW9uSW50ZXJydXB0aW9uUmVhc29uS2V5XSBpbnRlZ2Vy
VmFsdWVdKTsKK30KKwordm9pZCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6Y2FwdHVyZVNlc3Npb25F
bmRJbnRlcnJ1cHRpb24oUmV0YWluUHRyPE5TTm90aWZpY2F0aW9uPikKK3sKKyAgICBJbnRlcnJ1
cHRpb25SZWFzb24gcmVhc29uID0gbV9pbnRlcnJ1cHRpb247CisKKyAgICBtX2ludGVycnVwdGlv
biA9IEludGVycnVwdGlvblJlYXNvbjo6Tm9uZTsKKyAgICBpZiAocmVhc29uICE9IEludGVycnVw
dGlvblJlYXNvbjo6VmlkZW9Ob3RBbGxvd2VkSW5TaWRlQnlTaWRlIHx8IG1faXNSdW5uaW5nIHx8
ICFtX3Nlc3Npb24pCisgICAgICAgIHJldHVybjsKKworICAgIFttX3Nlc3Npb24gc3RhcnRSdW5u
aW5nXTsKKyAgICBtX2lzUnVubmluZyA9IFttX3Nlc3Npb24gaXNSdW5uaW5nXTsKK30KKyNlbmRp
ZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK0BpbXBsZW1lbnRhdGlvbiBXZWJDb3JlQVZW
aWRlb0NhcHR1cmVTb3VyY2VPYnNlcnZlcgorCistIChpZClpbml0V2l0aENhbGxiYWNrOihBVlZp
ZGVvQ2FwdHVyZVNvdXJjZSopY2FsbGJhY2sKK3sKKyAgICBzZWxmID0gW3N1cGVyIGluaXRdOwor
ICAgIGlmICghc2VsZikKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIG1fY2FsbGJhY2sgPSBj
YWxsYmFjazsKKworICAgIHJldHVybiBzZWxmOworfQorCistICh2b2lkKWRpc2Nvbm5lY3QKK3sK
KyAgICBbTlNPYmplY3QgY2FuY2VsUHJldmlvdXNQZXJmb3JtUmVxdWVzdHNXaXRoVGFyZ2V0OnNl
bGZdOworICAgIFtzZWxmIHJlbW92ZU5vdGlmaWNhdGlvbk9ic2VydmVyc107CisgICAgbV9jYWxs
YmFjayA9IG51bGxwdHI7Cit9CisKKy0gKHZvaWQpYWRkTm90aWZpY2F0aW9uT2JzZXJ2ZXJzCit7
CisjaWYgUExBVEZPUk0oSU9TKQorICAgIEFTU0VSVChtX2NhbGxiYWNrKTsKKworICAgIE5TTm90
aWZpY2F0aW9uQ2VudGVyKiBjZW50ZXIgPSBbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENl
bnRlcl07CisgICAgQVZDYXB0dXJlU2Vzc2lvblR5cGUqIHNlc3Npb24gPSBtX2NhbGxiYWNrLT5z
ZXNzaW9uKCk7CisKKyAgICBbY2VudGVyIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVj
dG9yKHNlc3Npb25SdW50aW1lRXJyb3I6KSBuYW1lOkFWQ2FwdHVyZVNlc3Npb25SdW50aW1lRXJy
b3JOb3RpZmljYXRpb24gb2JqZWN0OnNlc3Npb25dOworICAgIFtjZW50ZXIgYWRkT2JzZXJ2ZXI6
c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoYmVnaW5TZXNzaW9uSW50ZXJydXB0ZWQ6KSBuYW1lOkFW
Q2FwdHVyZVNlc3Npb25XYXNJbnRlcnJ1cHRlZE5vdGlmaWNhdGlvbiBvYmplY3Q6c2Vzc2lvbl07
CisgICAgW2NlbnRlciBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihlbmRTZXNz
aW9uSW50ZXJydXB0ZWQ6KSBuYW1lOkFWQ2FwdHVyZVNlc3Npb25JbnRlcnJ1cHRpb25FbmRlZE5v
dGlmaWNhdGlvbiBvYmplY3Q6c2Vzc2lvbl07CisjZW5kaWYKK30KKworLSAodm9pZClyZW1vdmVO
b3RpZmljYXRpb25PYnNlcnZlcnMKK3sKKyNpZiBQTEFURk9STShJT1MpCisgICAgW1tOU05vdGlm
aWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSByZW1vdmVPYnNlcnZlcjpzZWxmXTsKKyNlbmRp
ZgorfQorCistICh2b2lkKWNhcHR1cmVPdXRwdXQ6KEFWQ2FwdHVyZU91dHB1dFR5cGUqKWNhcHR1
cmVPdXRwdXQgZGlkT3V0cHV0U2FtcGxlQnVmZmVyOihDTVNhbXBsZUJ1ZmZlclJlZilzYW1wbGVC
dWZmZXIgZnJvbUNvbm5lY3Rpb246KEFWQ2FwdHVyZUNvbm5lY3Rpb25UeXBlKiljb25uZWN0aW9u
Cit7CisgICAgaWYgKCFtX2NhbGxiYWNrKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2NhbGxi
YWNrLT5jYXB0dXJlT3V0cHV0RGlkT3V0cHV0U2FtcGxlQnVmZmVyRnJvbUNvbm5lY3Rpb24oY2Fw
dHVyZU91dHB1dCwgc2FtcGxlQnVmZmVyLCBjb25uZWN0aW9uKTsKK30KKworLSAodm9pZClvYnNl
cnZlVmFsdWVGb3JLZXlQYXRoOmtleVBhdGggb2ZPYmplY3Q6KGlkKW9iamVjdCBjaGFuZ2U6KE5T
RGljdGlvbmFyeSopY2hhbmdlIGNvbnRleHQ6KHZvaWQqKWNvbnRleHQKK3sKKyAgICBVTlVTRURf
UEFSQU0ob2JqZWN0KTsKKyAgICBVTlVTRURfUEFSQU0oY29udGV4dCk7CisKKyAgICBpZiAoIW1f
Y2FsbGJhY2spCisgICAgICAgIHJldHVybjsKKworICAgIGlkIG5ld1ZhbHVlID0gW2NoYW5nZSB2
YWx1ZUZvcktleTpOU0tleVZhbHVlQ2hhbmdlTmV3S2V5XTsKKworI2lmICFMT0dfRElTQUJMRUQK
KyAgICBib29sIHdpbGxDaGFuZ2UgPSBbW2NoYW5nZSB2YWx1ZUZvcktleTpOU0tleVZhbHVlQ2hh
bmdlTm90aWZpY2F0aW9uSXNQcmlvcktleV0gYm9vbFZhbHVlXTsKKworICAgIGlmICh3aWxsQ2hh
bmdlKQorICAgICAgICBMT0coTWVkaWEsICJXZWJDb3JlQVZWaWRlb0NhcHR1cmVTb3VyY2VPYnNl
cnZlcjo6b2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aCglcCkgLSB3aWxsIGNoYW5nZSwga2V5UGF0aCA9
ICVzIiwgc2VsZiwgW2tleVBhdGggVVRGOFN0cmluZ10pOworICAgIGVsc2UgeworICAgICAgICBS
ZXRhaW5QdHI8TlNTdHJpbmc+IHZhbHVlU3RyaW5nID0gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9j
XSBpbml0V2l0aEZvcm1hdDpAIiVAIiwgbmV3VmFsdWVdKTsKKyAgICAgICAgTE9HKE1lZGlhLCAi
V2ViQ29yZUFWVmlkZW9DYXB0dXJlU291cmNlT2JzZXJ2ZXI6Om9ic2VydmVWYWx1ZUZvcktleVBh
dGgoJXApIC0gZGlkIGNoYW5nZSwga2V5UGF0aCA9ICVzLCB2YWx1ZSA9ICVzIiwgc2VsZiwgW2tl
eVBhdGggVVRGOFN0cmluZ10sIFt2YWx1ZVN0cmluZy5nZXQoKSBVVEY4U3RyaW5nXSk7CisgICAg
fQorI2VuZGlmCisKKyAgICBpZiAoW2tleVBhdGggaXNFcXVhbFRvU3RyaW5nOkAicnVubmluZyJd
KQorICAgICAgICBtX2NhbGxiYWNrLT5jYXB0dXJlU2Vzc2lvbklzUnVubmluZ0RpZENoYW5nZShb
bmV3VmFsdWUgYm9vbFZhbHVlXSk7Cit9CisKKyNpZiBQTEFURk9STShJT1MpCistICh2b2lkKXNl
c3Npb25SdW50aW1lRXJyb3I6KE5TTm90aWZpY2F0aW9uKilub3RpZmljYXRpb24KK3sKKyAgICBO
U0Vycm9yICplcnJvciA9IG5vdGlmaWNhdGlvbi51c2VySW5mb1tBVkNhcHR1cmVTZXNzaW9uRXJy
b3JLZXldOworICAgIExPRyhNZWRpYSwgIldlYkNvcmVBVlZpZGVvQ2FwdHVyZVNvdXJjZU9ic2Vy
dmVyOjpzZXNzaW9uUnVudGltZUVycm9yKCVwKSAtIGVycm9yID0gJXMiLCBzZWxmLCBbW2Vycm9y
IGxvY2FsaXplZERlc2NyaXB0aW9uXSBVVEY4U3RyaW5nXSk7CisKKyAgICBpZiAobV9jYWxsYmFj
aykKKyAgICAgICAgbV9jYWxsYmFjay0+Y2FwdHVyZVNlc3Npb25SdW50aW1lRXJyb3IoZXJyb3Ip
OworfQorCistICh2b2lkKWJlZ2luU2Vzc2lvbkludGVycnVwdGVkOihOU05vdGlmaWNhdGlvbiop
bm90aWZpY2F0aW9uCit7CisgICAgTE9HKE1lZGlhLCAiV2ViQ29yZUFWVmlkZW9DYXB0dXJlU291
cmNlT2JzZXJ2ZXI6OmJlZ2luU2Vzc2lvbkludGVycnVwdGVkKCVwKSAtIHJlYXNvbiA9ICVkIiwg
c2VsZiwgW25vdGlmaWNhdGlvbi51c2VySW5mb1tBVkNhcHR1cmVTZXNzaW9uSW50ZXJydXB0aW9u
UmVhc29uS2V5XSBpbnRlZ2VyVmFsdWVdKTsKKworICAgIGlmIChtX2NhbGxiYWNrKQorICAgICAg
ICBtX2NhbGxiYWNrLT5jYXB0dXJlU2Vzc2lvbkJlZ2luSW50ZXJydXB0aW9uKG5vdGlmaWNhdGlv
bik7Cit9CisKKy0gKHZvaWQpZW5kU2Vzc2lvbkludGVycnVwdGVkOihOU05vdGlmaWNhdGlvbiop
bm90aWZpY2F0aW9uCit7CisgICAgTE9HKE1lZGlhLCAiV2ViQ29yZUFWVmlkZW9DYXB0dXJlU291
cmNlT2JzZXJ2ZXI6OmVuZFNlc3Npb25JbnRlcnJ1cHRlZCglcCkiLCBzZWxmKTsKKworICAgIGlm
IChtX2NhbGxiYWNrKQorICAgICAgICBtX2NhbGxiYWNrLT5jYXB0dXJlU2Vzc2lvbkVuZEludGVy
cnVwdGlvbihub3RpZmljYXRpb24pOworfQorI2VuZGlmCisKK0BlbmQKKwogI2VuZGlmIC8vIEVO
QUJMRShNRURJQV9TVFJFQU0pCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348519</attachid>
            <date>2018-08-30 11:30:57 -0700</date>
            <delta_ts>2018-08-30 12:38:34 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-189159-20180830113057.patch</filename>
            <type>text/plain</type>
            <size>56771</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1NDY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDE3ZGM3NDBmNWE3OWJm
MjVlMzcxMWRiZWNjM2QwZTcwYjIxZjFlYS4uNjg2ZDA2MTdmMjUxZjFhNjJjYTk0MjQwZjk1MGI3
NWRiMTc1MmNlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDE4LTA4LTMwICBFcmlj
IENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRpYVN0cmVh
bV0gUmVtb3ZlIEFWTWVkaWFDYXB0dXJlU291cmNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODkxNTkKKworICAgICAgICBSZXZpZXdlZCBieSBZb3Vl
bm4gRmFibGV0LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gY2hhbmdlIGluIGZ1bmN0aW9u
YWxpdHkuCisKKyAgICAgICAgUmVmYWN0b3IgdmlkZW8gY2FwdHVyZSB0byBnZXQgcmlkIG9mIGEg
YmFzZSBjbGFzcyB3ZSBkb24ndCAKKyAgICAgICAgbmVlZCBhbnkgbW9yZS4KKworICAgICAgICAq
IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UuaDogUmVtb3ZlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UubW06IFJlbW92
ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291
cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6c2Vzc2lvbiBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6ZGV2aWNlIGNv
bnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVT
b3VyY2UubW06CisgICAgICAgIChXZWJDb3JlOjpnbG9iYVZpZGVvQ2FwdHVyZVNlcmlhbFF1ZXVl
KToKKyAgICAgICAgKFdlYkNvcmU6OkFWVmlkZW9DYXB0dXJlU291cmNlOjpBVlZpZGVvQ2FwdHVy
ZVNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6fkFWVmlk
ZW9DYXB0dXJlU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkFWVmlkZW9DYXB0dXJlU291cmNl
OjpzdGFydFByb2R1Y2luZ0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6QVZWaWRlb0NhcHR1cmVT
b3VyY2U6OnN0b3BQcm9kdWNpbmdEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkFWVmlkZW9DYXB0
dXJlU291cmNlOjpiZWdpbkNvbmZpZ3VyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6QVZWaWRl
b0NhcHR1cmVTb3VyY2U6OmNvbW1pdENvbmZpZ3VyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
QVZWaWRlb0NhcHR1cmVTb3VyY2U6OnNldHRpbmdzRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNv
cmU6OkFWVmlkZW9DYXB0dXJlU291cmNlOjpzZXR0aW5ncyBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6Y2FwYWJpbGl0aWVzIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkFWVmlkZW9DYXB0dXJlU291cmNlOjpzZXRQcmVzZXQpOgorICAgICAgICAoV2Vi
Q29yZTo6QVZWaWRlb0NhcHR1cmVTb3VyY2U6OnNldHVwU2Vzc2lvbik6CisgICAgICAgIChXZWJD
b3JlOjpBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6c2V0dXBDYXB0dXJlU2Vzc2lvbik6CisgICAgICAg
IChXZWJDb3JlOjpBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6Y2FwdHVyZVNlc3Npb25Jc1J1bm5pbmdE
aWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6QVZWaWRlb0NhcHR1cmVTb3VyY2U6OmludGVy
cnVwdGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFWVmlkZW9DYXB0dXJlU291cmNlOjpj
YXB0dXJlU2Vzc2lvblJ1bnRpbWVFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpBVlZpZGVvQ2Fw
dHVyZVNvdXJjZTo6Y2FwdHVyZVNlc3Npb25CZWdpbkludGVycnVwdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6Y2FwdHVyZVNlc3Npb25FbmRJbnRlcnJ1cHRp
b24pOgorICAgICAgICAoLVtXZWJDb3JlQVZWaWRlb0NhcHR1cmVTb3VyY2VPYnNlcnZlciBpbml0
V2l0aENhbGxiYWNrOl0pOgorICAgICAgICAoLVtXZWJDb3JlQVZWaWRlb0NhcHR1cmVTb3VyY2VP
YnNlcnZlciBkaXNjb25uZWN0XSk6CisgICAgICAgICgtW1dlYkNvcmVBVlZpZGVvQ2FwdHVyZVNv
dXJjZU9ic2VydmVyIGFkZE5vdGlmaWNhdGlvbk9ic2VydmVyc10pOgorICAgICAgICAoLVtXZWJD
b3JlQVZWaWRlb0NhcHR1cmVTb3VyY2VPYnNlcnZlciByZW1vdmVOb3RpZmljYXRpb25PYnNlcnZl
cnNdKToKKyAgICAgICAgKC1bV2ViQ29yZUFWVmlkZW9DYXB0dXJlU291cmNlT2JzZXJ2ZXIgY2Fw
dHVyZU91dHB1dDpkaWRPdXRwdXRTYW1wbGVCdWZmZXI6ZnJvbUNvbm5lY3Rpb246XSk6CisgICAg
ICAgICgtW1dlYkNvcmVBVlZpZGVvQ2FwdHVyZVNvdXJjZU9ic2VydmVyIG9ic2VydmVWYWx1ZUZv
cktleVBhdGg6b2ZPYmplY3Q6Y2hhbmdlOmNvbnRleHQ6XSk6CisgICAgICAgICgtW1dlYkNvcmVB
VlZpZGVvQ2FwdHVyZVNvdXJjZU9ic2VydmVyIHNlc3Npb25SdW50aW1lRXJyb3I6XSk6CisgICAg
ICAgICgtW1dlYkNvcmVBVlZpZGVvQ2FwdHVyZVNvdXJjZU9ic2VydmVyIGJlZ2luU2Vzc2lvbklu
dGVycnVwdGVkOl0pOgorICAgICAgICAoLVtXZWJDb3JlQVZWaWRlb0NhcHR1cmVTb3VyY2VPYnNl
cnZlciBlbmRTZXNzaW9uSW50ZXJydXB0ZWQ6XSk6CisgICAgICAgIChXZWJDb3JlOjpBVlZpZGVv
Q2FwdHVyZVNvdXJjZTo6aW5pdGlhbGl6ZUNhcGFiaWxpdGllcyk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6aW5pdGlhbGl6ZVN1cHBvcnRlZENvbnN0
cmFpbnRzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFWVmlkZW9DYXB0dXJlU291cmNl
Ojp1cGRhdGVTZXR0aW5ncyk6IERlbGV0ZWQuCisKIDIwMTgtMDgtMjkgIERhdmlkIEtpbHplciAg
PGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgZW1wdHkgZGlyZWN0b3JpZXMg
ZnJvbSBmcm9tIHN2bi53ZWJraXQub3JnIHJlcG9zaXRvcnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA4YzAzMjNjZTg1MjM1YTJl
Y2RhM2M4NjU5YjAxNTg1Y2I4NGE5YTdlLi41MjljODZiMzlhODQ3YzE1ZDc1Y2MzYTZiNGM1NDMw
NmYyZTRjNTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC03Miw4ICs3Miw2IEBACiAJCTA3MDMzNEQ5MTQ1QTAwNkYwMDhEOEQ0
NSAvKiBUcmFja0Jhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMDcwMzM0RDgxNDVBMDA2RjAwOEQ4RDQ1IC8qIFRyYWNrQmFzZS5jcHAgKi87IH07
CiAJCTA3MDM2M0UyMTgxQTFDREMwMEMwNzRBNSAvKiBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzAzNjNEQTE4
MUExQ0RDMDBDMDc0QTUgLyogQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA3MDM2M0UzMTgxQTFDREMwMEMw
NzRBNSAvKiBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcwMzYzREIxODFBMUNEQzAwQzA3NEE1IC8qIEFWQ2Fw
dHVyZURldmljZU1hbmFnZXIubW0gKi87IH07Ci0JCTA3MDM2M0U0MTgxQTFDREMwMEMwNzRBNSAv
KiBBVk1lZGlhQ2FwdHVyZVNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMDcwMzYzREMxODFBMUNEQzAwQzA3NEE1IC8qIEFWTWVkaWFDYXB0dXJl
U291cmNlLmggKi87IH07Ci0JCTA3MDM2M0U1MTgxQTFDREMwMEMwNzRBNSAvKiBBVk1lZGlhQ2Fw
dHVyZVNvdXJjZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDA3MDM2M0REMTgxQTFDREMwMEMwNzRBNSAvKiBBVk1lZGlhQ2FwdHVyZVNvdXJjZS5tbSAq
LzsgfTsKIAkJMDcwMzYzRTYxODFBMUNEQzAwQzA3NEE1IC8qIEFWVmlkZW9DYXB0dXJlU291cmNl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzAzNjNE
RTE4MUExQ0RDMDBDMDc0QTUgLyogQVZWaWRlb0NhcHR1cmVTb3VyY2UuaCAqLzsgfTsKIAkJMDcw
MzYzRTcxODFBMUNEQzAwQzA3NEE1IC8qIEFWVmlkZW9DYXB0dXJlU291cmNlLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcwMzYzREYxODFBMUNEQzAw
QzA3NEE1IC8qIEFWVmlkZW9DYXB0dXJlU291cmNlLm1tICovOyB9OwogCQkwNzA0QTQwODFENkRF
OUYxMDA4NkRDREIgLyogT3ZlcmNvbnN0cmFpbmVkRXJyb3IuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MDRBNDA1MUQ2REU5RjEwMDg2RENEQiAvKiBP
dmVyY29uc3RyYWluZWRFcnJvci5oICovOyB9OwpAQCAtNTE3NSw4ICs1MTczLDYgQEAKIAkJMDcw
MzM0RTgxNDVBMUYzNTAwOEQ4RDQ1IC8qIEpTVHJhY2tDdXN0b20uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNUcmFja0N1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTA3MDM2M0RBMTgxQTFDREMwMEMwNzRBNSAvKiBBVkNhcHR1cmVEZXZp
Y2VNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFWQ2FwdHVyZURl
dmljZU1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDcwMzYzREIxODFB
MUNEQzAwQzA3NEE1IC8qIEFWQ2FwdHVyZURldmljZU1hbmFnZXIubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwNzAzNjNEQzE4MUExQ0RDMDBDMDc0QTUgLyogQVZN
ZWRpYUNhcHR1cmVTb3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVZN
ZWRpYUNhcHR1cmVTb3VyY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMDcwMzYz
REQxODFBMUNEQzAwQzA3NEE1IC8qIEFWTWVkaWFDYXB0dXJlU291cmNlLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQVZNZWRpYUNhcHR1cmVTb3VyY2UubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3MDM2M0RFMTgxQTFDREMwMEMwNzRBNSAvKiBB
VlZpZGVvQ2FwdHVyZVNvdXJjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBB
VlZpZGVvQ2FwdHVyZVNvdXJjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzAz
NjNERjE4MUExQ0RDMDBDMDc0QTUgLyogQVZWaWRlb0NhcHR1cmVTb3VyY2UubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBVlZpZGVvQ2FwdHVyZVNvdXJjZS5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDcwNEE0MDMxRDZERTlGMTAwODZEQ0RCIC8q
IE92ZXJjb25zdHJhaW5lZEVycm9yLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBPdmVyY29u
c3RyYWluZWRFcnJvci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTIxNCw4
ICsxNTIxMCw2IEBACiAJCQkJMDdDMDQ2QzYxRTQyNTEyRjAwNzIwMUU3IC8qIEF1ZGlvVHJhY2tQ
cml2YXRlTWVkaWFTdHJlYW1Db2NvYS5oICovLAogCQkJCTA3MDM2M0RBMTgxQTFDREMwMEMwNzRB
NSAvKiBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLmggKi8sCiAJCQkJMDcwMzYzREIxODFBMUNEQzAw
QzA3NEE1IC8qIEFWQ2FwdHVyZURldmljZU1hbmFnZXIubW0gKi8sCi0JCQkJMDcwMzYzREMxODFB
MUNEQzAwQzA3NEE1IC8qIEFWTWVkaWFDYXB0dXJlU291cmNlLmggKi8sCi0JCQkJMDcwMzYzREQx
ODFBMUNEQzAwQzA3NEE1IC8qIEFWTWVkaWFDYXB0dXJlU291cmNlLm1tICovLAogCQkJCTA3MDM2
M0RFMTgxQTFDREMwMEMwNzRBNSAvKiBBVlZpZGVvQ2FwdHVyZVNvdXJjZS5oICovLAogCQkJCTA3
MDM2M0RGMTgxQTFDREMwMEMwNzRBNSAvKiBBVlZpZGVvQ2FwdHVyZVNvdXJjZS5tbSAqLywKIAkJ
CQkzRjgwMjAzMTFFOUUzODFEMDBERUM2MUQgLyogQ29yZUF1ZGlvQ2FwdHVyZURldmljZS5jcHAg
Ki8sCkBAIC0yNzExMyw3ICsyNzEwNyw2IEBACiAJCQkJQ0RDNjc1MjMxRUFFQTlCNzAwNzI3Qzg0
IC8qIEFWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTA3MDM2M0UyMTgxQTFDREMwMEMwNzRBNSAvKiBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwN0Y0RTkzMzIwQjM1ODdGMDAyRTM4MDMgLyogQVZGb3VuZGF0
aW9uTUlNRVR5cGVDYWNoZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMDcwMzYzRTQxODFBMUNEQzAw
QzA3NEE1IC8qIEFWTWVkaWFDYXB0dXJlU291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDMz
NkY2MjE3RjlGNjQ3MDBERERDRDAgLyogQVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMDcwMzYzRTYxODFBMUNEQzAwQzA3NEE1IC8qIEFWVmlkZW9DYXB0dXJl
U291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNDVDMjMxRTE5OTVCNzNCMDBBNkUyRTMgLyog
QXhpc1Njcm9sbFNuYXBPZmZzZXRzLmggaW4gSGVhZGVycyAqLywKQEAgLTMxMzQ0LDcgKzMxMzM3
LDYgQEAKIAkJCQlDREM2NzUyMjFFQUVBOUI3MDA3MjdDODQgLyogQVZBdWRpb1Nlc3Npb25DYXB0
dXJlRGV2aWNlTWFuYWdlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTA3MDM2M0UzMTgxQTFDREMw
MEMwNzRBNSAvKiBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MDcxOTQyN0YxRDA4OEYyMTAwMkFBNTFEIC8qIEFWRm91bmRhdGlvbk1JTUVUeXBlQ2FjaGUubW0g
aW4gU291cmNlcyAqLywKLQkJCQkwNzAzNjNFNTE4MUExQ0RDMDBDMDc0QTUgLyogQVZNZWRpYUNh
cHR1cmVTb3VyY2UubW0gaW4gU291cmNlcyAqLywKIAkJCQlDRDMzNkY2MTE3RjlGNjQ3MDBERERD
RDAgLyogQVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTA3
MDM2M0U3MTgxQTFDREMwMEMwNzRBNSAvKiBBVlZpZGVvQ2FwdHVyZVNvdXJjZS5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCTdBNDUwMzJGMThEQjcxNzIwMDM3N0IzNCAvKiBCdWZmZXJlZExpbmVSZWFk
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tCmlu
ZGV4IDBlZmM5MmEwZmVlOTAyYWQ5Njg5ZTZjZWFjYzU1YTY1NzJmNGZiZDkuLjllMTk1Y2E5ODhk
ZDM3ZDQzYmVhNDQ4NmRkZTU1OWM2NzQzMWRhMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VN
YW5hZ2VyLm1tCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAm
JiBVU0UoQVZGT1VOREFUSU9OKQogCi0jaW1wb3J0ICJBVk1lZGlhQ2FwdHVyZVNvdXJjZS5oIgog
I2ltcG9ydCAiQVZWaWRlb0NhcHR1cmVTb3VyY2UuaCIKICNpbXBvcnQgIkF1ZGlvU291cmNlUHJv
dmlkZXIuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKQEAgLTU1LDIwICs1NCwxMiBAQCBTT0ZUX0xJ
TktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVkNhcHR1cmVTZXNzaW9uKQogU09GVF9MSU5LX0NPTlNU
QU5UKEFWRm91bmRhdGlvbiwgQVZNZWRpYVR5cGVBdWRpbywgTlNTdHJpbmcgKikKIFNPRlRfTElO
S19DT05TVEFOVChBVkZvdW5kYXRpb24sIEFWTWVkaWFUeXBlTXV4ZWQsIE5TU3RyaW5nICopCiBT
T0ZUX0xJTktfQ09OU1RBTlQoQVZGb3VuZGF0aW9uLCBBVk1lZGlhVHlwZVZpZGVvLCBOU1N0cmlu
ZyAqKQotU09GVF9MSU5LX0NPTlNUQU5UKEFWRm91bmRhdGlvbiwgQVZDYXB0dXJlU2Vzc2lvblBy
ZXNldDEyODB4NzIwLCBOU1N0cmluZyAqKQotU09GVF9MSU5LX0NPTlNUQU5UKEFWRm91bmRhdGlv
biwgQVZDYXB0dXJlU2Vzc2lvblByZXNldDY0MHg0ODAsIE5TU3RyaW5nICopCi1TT0ZUX0xJTktf
Q09OU1RBTlQoQVZGb3VuZGF0aW9uLCBBVkNhcHR1cmVTZXNzaW9uUHJlc2V0MzUyeDI4OCwgTlNT
dHJpbmcgKikKLVNPRlRfTElOS19DT05TVEFOVChBVkZvdW5kYXRpb24sIEFWQ2FwdHVyZVNlc3Np
b25QcmVzZXRMb3csIE5TU3RyaW5nICopCiBTT0ZUX0xJTktfQ09OU1RBTlQoQVZGb3VuZGF0aW9u
LCBBVkNhcHR1cmVEZXZpY2VXYXNDb25uZWN0ZWROb3RpZmljYXRpb24sIE5TU3RyaW5nICopCiBT
T0ZUX0xJTktfQ09OU1RBTlQoQVZGb3VuZGF0aW9uLCBBVkNhcHR1cmVEZXZpY2VXYXNEaXNjb25u
ZWN0ZWROb3RpZmljYXRpb24sIE5TU3RyaW5nICopCiAKICNkZWZpbmUgQVZNZWRpYVR5cGVBdWRp
byBnZXRBVk1lZGlhVHlwZUF1ZGlvKCkKICNkZWZpbmUgQVZNZWRpYVR5cGVNdXhlZCBnZXRBVk1l
ZGlhVHlwZU11eGVkKCkKICNkZWZpbmUgQVZNZWRpYVR5cGVWaWRlbyBnZXRBVk1lZGlhVHlwZVZp
ZGVvKCkKLSNkZWZpbmUgQVZDYXB0dXJlU2Vzc2lvblByZXNldDEyODB4NzIwIGdldEFWQ2FwdHVy
ZVNlc3Npb25QcmVzZXQxMjgweDcyMCgpCi0jZGVmaW5lIEFWQ2FwdHVyZVNlc3Npb25QcmVzZXQ2
NDB4NDgwIGdldEFWQ2FwdHVyZVNlc3Npb25QcmVzZXQ2NDB4NDgwKCkKLSNkZWZpbmUgQVZDYXB0
dXJlU2Vzc2lvblByZXNldDM1MngyODggZ2V0QVZDYXB0dXJlU2Vzc2lvblByZXNldDM1MngyODgo
KQotI2RlZmluZSBBVkNhcHR1cmVTZXNzaW9uUHJlc2V0TG93IGdldEFWQ2FwdHVyZVNlc3Npb25Q
cmVzZXRMb3coKQogI2RlZmluZSBBVkNhcHR1cmVEZXZpY2VXYXNDb25uZWN0ZWROb3RpZmljYXRp
b24gZ2V0QVZDYXB0dXJlRGV2aWNlV2FzQ29ubmVjdGVkTm90aWZpY2F0aW9uKCkKICNkZWZpbmUg
QVZDYXB0dXJlRGV2aWNlV2FzRGlzY29ubmVjdGVkTm90aWZpY2F0aW9uIGdldEFWQ2FwdHVyZURl
dmljZVdhc0Rpc2Nvbm5lY3RlZE5vdGlmaWNhdGlvbigpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVk1lZGlhQ2FwdHVyZVNvdXJjZS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWTWVkaWFDYXB0dXJlU291
cmNlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVmNDg0NzZkZTZkNmYyYmZhYTc1
ZDI1ZmY1YjFiZmYzMDMwZTQwNTUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWTWVk
aWFDYXB0dXJlU291cmNlLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMTYgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMy0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBBVk1l
ZGlhQ2FwdHVyZVNvdXJjZV9oCi0jZGVmaW5lIEFWTWVkaWFDYXB0dXJlU291cmNlX2gKLQotI2lm
IEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFVTRShBVkZPVU5EQVRJT04pCi0KLSNpbmNsdWRlICJH
ZW5lcmljVGFza1F1ZXVlLmgiCi0jaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZS5oIgotI2lu
Y2x1ZGUgIlRpbWVyLmgiCi0jaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+Ci0KLU9CSkNfQ0xBU1Mg
QVZDYXB0dXJlQXVkaW9EYXRhT3V0cHV0OwotT0JKQ19DTEFTUyBBVkNhcHR1cmVDb25uZWN0aW9u
OwotT0JKQ19DTEFTUyBBVkNhcHR1cmVEZXZpY2U7Ci1PQkpDX0NMQVNTIEFWQ2FwdHVyZU91dHB1
dDsKLU9CSkNfQ0xBU1MgQVZDYXB0dXJlU2Vzc2lvbjsKLU9CSkNfQ0xBU1MgQVZDYXB0dXJlVmlk
ZW9EYXRhT3V0cHV0OwotT0JKQ19DTEFTUyBOU0Vycm9yOwotT0JKQ19DTEFTUyBOU05vdGlmaWNh
dGlvbjsKLU9CSkNfQ0xBU1MgV2ViQ29yZUFWTWVkaWFDYXB0dXJlU291cmNlT2JzZXJ2ZXI7Ci0K
LXR5cGVkZWYgc3RydWN0IG9wYXF1ZUNNU2FtcGxlQnVmZmVyICpDTVNhbXBsZUJ1ZmZlclJlZjsK
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBBVk1lZGlhQ2FwdHVyZVNvdXJjZTsKLQot
Y2xhc3MgQVZNZWRpYUNhcHR1cmVTb3VyY2UgOiBwdWJsaWMgUmVhbHRpbWVNZWRpYVNvdXJjZSB7
Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+QVZNZWRpYUNhcHR1cmVTb3VyY2UoKTsKLQotICAgIHZp
cnR1YWwgdm9pZCBjYXB0dXJlT3V0cHV0RGlkT3V0cHV0U2FtcGxlQnVmZmVyRnJvbUNvbm5lY3Rp
b24oQVZDYXB0dXJlT3V0cHV0KiwgQ01TYW1wbGVCdWZmZXJSZWYsIEFWQ2FwdHVyZUNvbm5lY3Rp
b24qKSA9IDA7Ci0KLSAgICB2b2lkIGNhcHR1cmVTZXNzaW9uSXNSdW5uaW5nRGlkQ2hhbmdlKGJv
b2wpOwotICAgIHZvaWQgY2FwdHVyZVNlc3Npb25SdW50aW1lRXJyb3IoUmV0YWluUHRyPE5TRXJy
b3I+KTsKLQotICAgIGVudW0gY2xhc3MgSW50ZXJydXB0aW9uUmVhc29uIHsgTm9uZSwgVmlkZW9O
b3RBbGxvd2VkSW5CYWNrZ3JvdW5kLCBBdWRpb0luVXNlLCBWaWRlb0luVXNlLCBWaWRlb05vdEFs
bG93ZWRJblNpZGVCeVNpZGUgfTsKLSAgICB2b2lkIGNhcHR1cmVTZXNzaW9uQmVnaW5JbnRlcnJ1
cHRpb24oUmV0YWluUHRyPE5TTm90aWZpY2F0aW9uPik7Ci0gICAgdm9pZCBjYXB0dXJlU2Vzc2lv
bkVuZEludGVycnVwdGlvbihSZXRhaW5QdHI8TlNOb3RpZmljYXRpb24+KTsKLQotICAgIEFWQ2Fw
dHVyZVNlc3Npb24gKnNlc3Npb24oKSBjb25zdCB7IHJldHVybiBtX3Nlc3Npb24uZ2V0KCk7IH0K
LQotICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgc2V0dGluZ3MoKSBjb25z
dCBmaW5hbDsKLQotICAgIHZvaWQgc3RhcnRQcm9kdWNpbmdEYXRhKCkgZmluYWw7Ci0gICAgdm9p
ZCBzdG9wUHJvZHVjaW5nRGF0YSgpIGZpbmFsOwotCi1wcm90ZWN0ZWQ6Ci0gICAgQVZNZWRpYUNh
cHR1cmVTb3VyY2UoQVZDYXB0dXJlRGV2aWNlKiwgY29uc3QgQXRvbWljU3RyaW5nJiwgUmVhbHRp
bWVNZWRpYVNvdXJjZTo6VHlwZSk7Ci0KLSAgICB2aXJ0dWFsIGJvb2wgc2V0dXBDYXB0dXJlU2Vz
c2lvbigpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2h1dGRvd25DYXB0dXJlU2Vzc2lvbigpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU2V0dGluZ3MoUmVhbHRpbWVNZWRpYVNvdXJjZVNl
dHRpbmdzJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplQ2FwYWJpbGl0aWVzKFJl
YWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGlu
aXRpYWxpemVTdXBwb3J0ZWRDb25zdHJhaW50cyhSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVk
Q29uc3RyYWludHMmKSA9IDA7Ci0KLSAgICBBVkNhcHR1cmVEZXZpY2UgKmRldmljZSgpIGNvbnN0
IHsgcmV0dXJuIG1fZGV2aWNlLmdldCgpOyB9Ci0KLSAgICBSZWFsdGltZU1lZGlhU291cmNlU3Vw
cG9ydGVkQ29uc3RyYWludHMmIHN1cHBvcnRlZENvbnN0cmFpbnRzKCk7Ci0gICAgY29uc3QgUmVh
bHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYgY2FwYWJpbGl0aWVzKCkgY29uc3QgZmluYWw7
Ci0KLSAgICB2b2lkIHNldFZpZGVvU2FtcGxlQnVmZmVyRGVsZWdhdGUoQVZDYXB0dXJlVmlkZW9E
YXRhT3V0cHV0Kik7Ci0gICAgdm9pZCBzZXRBdWRpb1NhbXBsZUJ1ZmZlckRlbGVnYXRlKEFWQ2Fw
dHVyZUF1ZGlvRGF0YU91dHB1dCopOwotCi1wcml2YXRlOgotICAgIGJvb2wgc2V0dXBTZXNzaW9u
KCk7Ci0KLSAgICB2b2lkIGJlZ2luQ29uZmlndXJhdGlvbigpIGZpbmFsOwotICAgIHZvaWQgY29t
bWl0Q29uZmlndXJhdGlvbigpIGZpbmFsOwotCi0gICAgYm9vbCBpc0NhcHR1cmVTb3VyY2UoKSBj
b25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9Ci0KLSAgICBib29sIGludGVycnVwdGVkKCkgY29u
c3QgZmluYWw7Ci0KLSAgICB2b2lkIGluaXRpYWxpemVTZXR0aW5ncygpOwotICAgIHZvaWQgaW5p
dGlhbGl6ZUNhcGFiaWxpdGllcygpOwotCi0gICAgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdz
IG1fY3VycmVudFNldHRpbmdzOwotICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25z
dHJhaW50cyBtX3N1cHBvcnRlZENvbnN0cmFpbnRzOwotICAgIFJldGFpblB0cjxXZWJDb3JlQVZN
ZWRpYUNhcHR1cmVTb3VyY2VPYnNlcnZlcj4gbV9vYmpjT2JzZXJ2ZXI7Ci0gICAgc3RkOjp1bmlx
dWVfcHRyPFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM+IG1fY2FwYWJpbGl0aWVzOwot
ICAgIFJldGFpblB0cjxBVkNhcHR1cmVTZXNzaW9uPiBtX3Nlc3Npb247Ci0gICAgUmV0YWluUHRy
PEFWQ2FwdHVyZURldmljZT4gbV9kZXZpY2U7Ci0gICAgSW50ZXJydXB0aW9uUmVhc29uIG1faW50
ZXJydXB0aW9uIHsgSW50ZXJydXB0aW9uUmVhc29uOjpOb25lIH07Ci0gICAgYm9vbCBtX2lzUnVu
bmluZyB7IGZhbHNlIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAv
LyBFTkFCTEUoTUVESUFfU1RSRUFNKQotCi0jZW5kaWYgLy8gQVZNZWRpYUNhcHR1cmVTb3VyY2Vf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FW
TWVkaWFDYXB0dXJlU291cmNlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL0FWTWVkaWFDYXB0dXJlU291cmNlLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA5ODI0YWE3NTRiMjEzOWI1NDVlNzg3YzNiNTIxMWJjM2UwMzgyYjI4Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9BVk1lZGlhQ2FwdHVyZVNvdXJjZS5tbQorKysgL2Rldi9udWxs
CkBAIC0xLDQ0MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTUgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
LSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkFWTWVkaWFDYXB0dXJl
U291cmNlLmgiCi0KLSNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBVU0UoQVZGT1VOREFUSU9O
KQotCi0jaW1wb3J0ICJBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLmgiCi0jaW1wb3J0ICJBdWRpb1Nv
dXJjZVByb3ZpZGVyLmgiCi0jaW1wb3J0ICJMb2dnaW5nLmgiCi0jaW1wb3J0ICJNZWRpYUNvbnN0
cmFpbnRzLmgiCi0jaW1wb3J0ICJSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MuaCIKLSNpbXBv
cnQgPEFWRm91bmRhdGlvbi9BVkNhcHR1cmVEZXZpY2UuaD4KLSNpbXBvcnQgPEFWRm91bmRhdGlv
bi9BVkNhcHR1cmVJbnB1dC5oPgotI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWQ2FwdHVyZU91dHB1
dC5oPgotI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWQ2FwdHVyZVNlc3Npb24uaD4KLSNpbXBvcnQg
PEFWRm91bmRhdGlvbi9BVkVycm9yLmg+Ci0jaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KLSNpbXBv
cnQgPHd0Zi9NYWluVGhyZWFkLmg+Ci0KLSNpbXBvcnQgPHBhbC9jZi9Db3JlTWVkaWFTb2Z0TGlu
ay5oPgotCi10eXBlZGVmIEFWQ2FwdHVyZUNvbm5lY3Rpb24gQVZDYXB0dXJlQ29ubmVjdGlvblR5
cGU7Ci10eXBlZGVmIEFWQ2FwdHVyZURldmljZSBBVkNhcHR1cmVEZXZpY2VUeXBlZGVmOwotdHlw
ZWRlZiBBVkNhcHR1cmVEZXZpY2VJbnB1dCBBVkNhcHR1cmVEZXZpY2VJbnB1dFR5cGU7Ci10eXBl
ZGVmIEFWQ2FwdHVyZU91dHB1dCBBVkNhcHR1cmVPdXRwdXRUeXBlOwotdHlwZWRlZiBBVkNhcHR1
cmVTZXNzaW9uIEFWQ2FwdHVyZVNlc3Npb25UeXBlOwotdHlwZWRlZiBBVkNhcHR1cmVBdWRpb0Rh
dGFPdXRwdXQgQVZDYXB0dXJlQXVkaW9EYXRhT3V0cHV0VHlwZTsKLXR5cGVkZWYgQVZDYXB0dXJl
VmlkZW9EYXRhT3V0cHV0IEFWQ2FwdHVyZVZpZGVvRGF0YU91dHB1dFR5cGU7Ci0KLVNPRlRfTElO
S19GUkFNRVdPUktfT1BUSU9OQUwoQVZGb3VuZGF0aW9uKQotCi1TT0ZUX0xJTktfQ0xBU1MoQVZG
b3VuZGF0aW9uLCBBVkNhcHR1cmVBdWRpb0RhdGFPdXRwdXQpCi1TT0ZUX0xJTktfQ0xBU1MoQVZG
b3VuZGF0aW9uLCBBVkNhcHR1cmVDb25uZWN0aW9uKQotU09GVF9MSU5LX0NMQVNTKEFWRm91bmRh
dGlvbiwgQVZDYXB0dXJlRGV2aWNlKQotU09GVF9MSU5LX0NMQVNTKEFWRm91bmRhdGlvbiwgQVZD
YXB0dXJlRGV2aWNlSW5wdXQpCi1TT0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVkNhcHR1
cmVPdXRwdXQpCi1TT0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVkNhcHR1cmVTZXNzaW9u
KQotU09GVF9MSU5LX0NMQVNTKEFWRm91bmRhdGlvbiwgQVZDYXB0dXJlVmlkZW9EYXRhT3V0cHV0
KQotCi0jZGVmaW5lIEFWQ2FwdHVyZUF1ZGlvRGF0YU91dHB1dCBnZXRBVkNhcHR1cmVBdWRpb0Rh
dGFPdXRwdXRDbGFzcygpCi0jZGVmaW5lIEFWQ2FwdHVyZUNvbm5lY3Rpb24gZ2V0QVZDYXB0dXJl
Q29ubmVjdGlvbkNsYXNzKCkKLSNkZWZpbmUgQVZDYXB0dXJlRGV2aWNlIGdldEFWQ2FwdHVyZURl
dmljZUNsYXNzKCkKLSNkZWZpbmUgQVZDYXB0dXJlRGV2aWNlSW5wdXQgZ2V0QVZDYXB0dXJlRGV2
aWNlSW5wdXRDbGFzcygpCi0jZGVmaW5lIEFWQ2FwdHVyZU91dHB1dCBnZXRBVkNhcHR1cmVPdXRw
dXRDbGFzcygpCi0jZGVmaW5lIEFWQ2FwdHVyZVNlc3Npb24gZ2V0QVZDYXB0dXJlU2Vzc2lvbkNs
YXNzKCkKLSNkZWZpbmUgQVZDYXB0dXJlVmlkZW9EYXRhT3V0cHV0IGdldEFWQ2FwdHVyZVZpZGVv
RGF0YU91dHB1dENsYXNzKCkKLQotU09GVF9MSU5LX0NPTlNUQU5UKEFWRm91bmRhdGlvbiwgQVZN
ZWRpYVR5cGVBdWRpbywgTlNTdHJpbmcgKikKLVNPRlRfTElOS19DT05TVEFOVChBVkZvdW5kYXRp
b24sIEFWTWVkaWFUeXBlTXV4ZWQsIE5TU3RyaW5nICopCi1TT0ZUX0xJTktfQ09OU1RBTlQoQVZG
b3VuZGF0aW9uLCBBVk1lZGlhVHlwZVZpZGVvLCBOU1N0cmluZyAqKQotCi0jZGVmaW5lIEFWTWVk
aWFUeXBlQXVkaW8gZ2V0QVZNZWRpYVR5cGVBdWRpbygpCi0jZGVmaW5lIEFWTWVkaWFUeXBlTXV4
ZWQgZ2V0QVZNZWRpYVR5cGVNdXhlZCgpCi0jZGVmaW5lIEFWTWVkaWFUeXBlVmlkZW8gZ2V0QVZN
ZWRpYVR5cGVWaWRlbygpCi0KLSNpZiBQTEFURk9STShJT1MpCi1TT0ZUX0xJTktfUE9JTlRFUl9P
UFRJT05BTChBVkZvdW5kYXRpb24sIEFWQ2FwdHVyZVNlc3Npb25SdW50aW1lRXJyb3JOb3RpZmlj
YXRpb24sIE5TU3RyaW5nICopCi1TT0ZUX0xJTktfUE9JTlRFUl9PUFRJT05BTChBVkZvdW5kYXRp
b24sIEFWQ2FwdHVyZVNlc3Npb25XYXNJbnRlcnJ1cHRlZE5vdGlmaWNhdGlvbiwgTlNTdHJpbmcg
KikKLVNPRlRfTElOS19QT0lOVEVSX09QVElPTkFMKEFWRm91bmRhdGlvbiwgQVZDYXB0dXJlU2Vz
c2lvbkludGVycnVwdGlvbkVuZGVkTm90aWZpY2F0aW9uLCBOU1N0cmluZyAqKQotU09GVF9MSU5L
X1BPSU5URVJfT1BUSU9OQUwoQVZGb3VuZGF0aW9uLCBBVkNhcHR1cmVTZXNzaW9uSW50ZXJydXB0
aW9uUmVhc29uS2V5LCBOU1N0cmluZyAqKQotU09GVF9MSU5LX1BPSU5URVJfT1BUSU9OQUwoQVZG
b3VuZGF0aW9uLCBBVkNhcHR1cmVTZXNzaW9uRXJyb3JLZXksIE5TU3RyaW5nICopCi0KLSNkZWZp
bmUgQVZDYXB0dXJlU2Vzc2lvblJ1bnRpbWVFcnJvck5vdGlmaWNhdGlvbiBnZXRBVkNhcHR1cmVT
ZXNzaW9uUnVudGltZUVycm9yTm90aWZpY2F0aW9uKCkKLSNkZWZpbmUgQVZDYXB0dXJlU2Vzc2lv
bldhc0ludGVycnVwdGVkTm90aWZpY2F0aW9uIGdldEFWQ2FwdHVyZVNlc3Npb25XYXNJbnRlcnJ1
cHRlZE5vdGlmaWNhdGlvbigpCi0jZGVmaW5lIEFWQ2FwdHVyZVNlc3Npb25JbnRlcnJ1cHRpb25F
bmRlZE5vdGlmaWNhdGlvbiBnZXRBVkNhcHR1cmVTZXNzaW9uSW50ZXJydXB0aW9uRW5kZWROb3Rp
ZmljYXRpb24oKQotI2RlZmluZSBBVkNhcHR1cmVTZXNzaW9uSW50ZXJydXB0aW9uUmVhc29uS2V5
IGdldEFWQ2FwdHVyZVNlc3Npb25JbnRlcnJ1cHRpb25SZWFzb25LZXkoKQotI2RlZmluZSBBVkNh
cHR1cmVTZXNzaW9uRXJyb3JLZXkgZ2V0QVZDYXB0dXJlU2Vzc2lvbkVycm9yS2V5KCkKLSNlbmRp
ZgotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotQGludGVyZmFjZSBXZWJDb3JlQVZNZWRp
YUNhcHR1cmVTb3VyY2VPYnNlcnZlciA6IE5TT2JqZWN0PEFWQ2FwdHVyZUF1ZGlvRGF0YU91dHB1
dFNhbXBsZUJ1ZmZlckRlbGVnYXRlLCBBVkNhcHR1cmVWaWRlb0RhdGFPdXRwdXRTYW1wbGVCdWZm
ZXJEZWxlZ2F0ZT4KLXsKLSAgICBBVk1lZGlhQ2FwdHVyZVNvdXJjZSogbV9jYWxsYmFjazsKLX0K
LQotLShpZClpbml0V2l0aENhbGxiYWNrOihBVk1lZGlhQ2FwdHVyZVNvdXJjZSopY2FsbGJhY2s7
Ci0tKHZvaWQpZGlzY29ubmVjdDsKLS0odm9pZClhZGROb3RpZmljYXRpb25PYnNlcnZlcnM7Ci0t
KHZvaWQpcmVtb3ZlTm90aWZpY2F0aW9uT2JzZXJ2ZXJzOwotLSh2b2lkKWNhcHR1cmVPdXRwdXQ6
KEFWQ2FwdHVyZU91dHB1dFR5cGUqKWNhcHR1cmVPdXRwdXQgZGlkT3V0cHV0U2FtcGxlQnVmZmVy
OihDTVNhbXBsZUJ1ZmZlclJlZilzYW1wbGVCdWZmZXIgZnJvbUNvbm5lY3Rpb246KEFWQ2FwdHVy
ZUNvbm5lY3Rpb25UeXBlKiljb25uZWN0aW9uOwotLSh2b2lkKW9ic2VydmVWYWx1ZUZvcktleVBh
dGg6a2V5UGF0aCBvZk9iamVjdDooaWQpb2JqZWN0IGNoYW5nZTooTlNEaWN0aW9uYXJ5KiljaGFu
Z2UgY29udGV4dDoodm9pZCopY29udGV4dDsKLSNpZiBQTEFURk9STShJT1MpCi0tKHZvaWQpc2Vz
c2lvblJ1bnRpbWVFcnJvcjooTlNOb3RpZmljYXRpb24qKW5vdGlmaWNhdGlvbjsKLS0odm9pZCli
ZWdpblNlc3Npb25JbnRlcnJ1cHRlZDooTlNOb3RpZmljYXRpb24qKW5vdGlmaWNhdGlvbjsKLS0o
dm9pZCllbmRTZXNzaW9uSW50ZXJydXB0ZWQ6KE5TTm90aWZpY2F0aW9uKilub3RpZmljYXRpb247
Ci0jZW5kaWYKLUBlbmQKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0aWMgTlNBcnJheTxO
U1N0cmluZyo+KiBzZXNzaW9uS1ZPUHJvcGVydGllcygpOwotCi1zdGF0aWMgZGlzcGF0Y2hfcXVl
dWVfdCBnbG9iYUF1ZGlvQ2FwdHVyZVNlcmlhbFF1ZXVlKCkKLXsKLSAgICBzdGF0aWMgZGlzcGF0
Y2hfcXVldWVfdCBnbG9iYWxRdWV1ZTsKLSAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VU
b2tlbjsKLSAgICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57Ci0gICAgICAgIGdsb2JhbFF1
ZXVlID0gZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJXZWJDb3JlQVZNZWRpYUNhcHR1cmVTb3VyY2Ug
YXVkaW8gY2FwdHVyZSBxdWV1ZSIsIERJU1BBVENIX1FVRVVFX1NFUklBTCk7Ci0gICAgfSk7Ci0g
ICAgcmV0dXJuIGdsb2JhbFF1ZXVlOwotfQotCi1zdGF0aWMgZGlzcGF0Y2hfcXVldWVfdCBnbG9i
YVZpZGVvQ2FwdHVyZVNlcmlhbFF1ZXVlKCkKLXsKLSAgICBzdGF0aWMgZGlzcGF0Y2hfcXVldWVf
dCBnbG9iYWxRdWV1ZTsKLSAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKLSAg
ICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57Ci0gICAgICAgIGdsb2JhbFF1ZXVlID0gZGlz
cGF0Y2hfcXVldWVfY3JlYXRlX3dpdGhfdGFyZ2V0KCJXZWJDb3JlQVZNZWRpYUNhcHR1cmVTb3Vy
Y2UgdmlkZW8gY2FwdHVyZSBxdWV1ZSIsIERJU1BBVENIX1FVRVVFX1NFUklBTCwgZGlzcGF0Y2hf
Z2V0X2dsb2JhbF9xdWV1ZShESVNQQVRDSF9RVUVVRV9QUklPUklUWV9ISUdILCAwKSk7Ci0gICAg
fSk7Ci0gICAgcmV0dXJuIGdsb2JhbFF1ZXVlOwotfQotCi1BVk1lZGlhQ2FwdHVyZVNvdXJjZTo6
QVZNZWRpYUNhcHR1cmVTb3VyY2UoQVZDYXB0dXJlRGV2aWNlVHlwZWRlZiogZGV2aWNlLCBjb25z
dCBBdG9taWNTdHJpbmcmIGlkLCBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlIHR5cGUpCi0gICAg
OiBSZWFsdGltZU1lZGlhU291cmNlKGlkLCB0eXBlLCBkZXZpY2UubG9jYWxpemVkTmFtZSkKLSAg
ICAsIG1fb2JqY09ic2VydmVyKGFkb3B0TlMoW1tXZWJDb3JlQVZNZWRpYUNhcHR1cmVTb3VyY2VP
YnNlcnZlciBhbGxvY10gaW5pdFdpdGhDYWxsYmFjazp0aGlzXSkpCi0gICAgLCBtX2RldmljZShk
ZXZpY2UpCi17Ci0jaWYgUExBVEZPUk0oSU9TKQotICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nh
c3Q8aW50PihJbnRlcnJ1cHRpb25SZWFzb246OlZpZGVvTm90QWxsb3dlZEluQmFja2dyb3VuZCkg
PT0gc3RhdGljX2Nhc3Q8aW50PihBVkNhcHR1cmVTZXNzaW9uSW50ZXJydXB0aW9uUmVhc29uVmlk
ZW9EZXZpY2VOb3RBdmFpbGFibGVJbkJhY2tncm91bmQpLCAiSW50ZXJydXB0aW9uUmVhc29uOjpW
aWRlb05vdEFsbG93ZWRJbkJhY2tncm91bmQgaXMgbm90IEFWQ2FwdHVyZVNlc3Npb25JbnRlcnJ1
cHRpb25SZWFzb25WaWRlb0RldmljZU5vdEF2YWlsYWJsZUluQmFja2dyb3VuZCBhcyBleHBlY3Rl
ZCIpOwotICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8aW50PihJbnRlcnJ1cHRpb25SZWFz
b246OlZpZGVvTm90QWxsb3dlZEluU2lkZUJ5U2lkZSkgPT0gQVZDYXB0dXJlU2Vzc2lvbkludGVy
cnVwdGlvblJlYXNvblZpZGVvRGV2aWNlTm90QXZhaWxhYmxlV2l0aE11bHRpcGxlRm9yZWdyb3Vu
ZEFwcHMsICJJbnRlcnJ1cHRpb25SZWFzb246OlZpZGVvTm90QWxsb3dlZEluU2lkZUJ5U2lkZSBp
cyBub3QgQVZDYXB0dXJlU2Vzc2lvbkludGVycnVwdGlvblJlYXNvblZpZGVvRGV2aWNlTm90QXZh
aWxhYmxlV2l0aE11bHRpcGxlRm9yZWdyb3VuZEFwcHMgYXMgZXhwZWN0ZWQiKTsKLSAgICBzdGF0
aWNfYXNzZXJ0KHN0YXRpY19jYXN0PGludD4oSW50ZXJydXB0aW9uUmVhc29uOjpWaWRlb0luVXNl
KSA9PSBBVkNhcHR1cmVTZXNzaW9uSW50ZXJydXB0aW9uUmVhc29uVmlkZW9EZXZpY2VJblVzZUJ5
QW5vdGhlckNsaWVudCwgIkludGVycnVwdGlvblJlYXNvbjo6VmlkZW9JblVzZSBpcyBub3QgQVZD
YXB0dXJlU2Vzc2lvbkludGVycnVwdGlvblJlYXNvblZpZGVvRGV2aWNlSW5Vc2VCeUFub3RoZXJD
bGllbnQgYXMgZXhwZWN0ZWQiKTsKLSAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PGludD4o
SW50ZXJydXB0aW9uUmVhc29uOjpBdWRpb0luVXNlKSA9PSBBVkNhcHR1cmVTZXNzaW9uSW50ZXJy
dXB0aW9uUmVhc29uQXVkaW9EZXZpY2VJblVzZUJ5QW5vdGhlckNsaWVudCwgIkludGVycnVwdGlv
blJlYXNvbjo6QXVkaW9JblVzZSBpcyBub3QgQVZDYXB0dXJlU2Vzc2lvbkludGVycnVwdGlvblJl
YXNvbkF1ZGlvRGV2aWNlSW5Vc2VCeUFub3RoZXJDbGllbnQgYXMgZXhwZWN0ZWQiKTsKLSNlbmRp
ZgotICAgIAotICAgIHNldFBlcnNpc3RlbnRJRChTdHJpbmcoZGV2aWNlLnVuaXF1ZUlEKSk7Ci19
Ci0KLUFWTWVkaWFDYXB0dXJlU291cmNlOjp+QVZNZWRpYUNhcHR1cmVTb3VyY2UoKQotewotICAg
IFttX29iamNPYnNlcnZlciBkaXNjb25uZWN0XTsKLQotICAgIGlmICghbV9zZXNzaW9uKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBmb3IgKE5TU3RyaW5nICprZXlOYW1lIGluIHNlc3Npb25LVk9Q
cm9wZXJ0aWVzKCkpCi0gICAgICAgIFttX3Nlc3Npb24gcmVtb3ZlT2JzZXJ2ZXI6bV9vYmpjT2Jz
ZXJ2ZXIuZ2V0KCkgZm9yS2V5UGF0aDprZXlOYW1lXTsKLQotICAgIGlmIChbbV9zZXNzaW9uIGlz
UnVubmluZ10pCi0gICAgICAgIFttX3Nlc3Npb24gc3RvcFJ1bm5pbmddOwotCi19Ci0KLXZvaWQg
QVZNZWRpYUNhcHR1cmVTb3VyY2U6OnN0YXJ0UHJvZHVjaW5nRGF0YSgpCi17Ci0gICAgaWYgKCFt
X3Nlc3Npb24pIHsKLSAgICAgICAgaWYgKCFzZXR1cFNlc3Npb24oKSkKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBpZiAoW21fc2Vzc2lvbiBpc1J1bm5pbmddKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBbbV9vYmpjT2JzZXJ2ZXIgYWRkTm90aWZpY2F0aW9uT2JzZXJ2ZXJzXTsK
LSAgICBbbV9zZXNzaW9uIHN0YXJ0UnVubmluZ107Ci19Ci0KLXZvaWQgQVZNZWRpYUNhcHR1cmVT
b3VyY2U6OnN0b3BQcm9kdWNpbmdEYXRhKCkKLXsKLSAgICBpZiAoIW1fc2Vzc2lvbikKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgW21fb2JqY09ic2VydmVyIHJlbW92ZU5vdGlmaWNhdGlvbk9ic2Vy
dmVyc107Ci0KLSAgICBpZiAoW21fc2Vzc2lvbiBpc1J1bm5pbmddKQotICAgICAgICBbbV9zZXNz
aW9uIHN0b3BSdW5uaW5nXTsKLQotICAgIG1faW50ZXJydXB0aW9uID0gSW50ZXJydXB0aW9uUmVh
c29uOjpOb25lOwotI2lmIFBMQVRGT1JNKElPUykKLSAgICBtX3Nlc3Npb24gPSBudWxscHRyOwot
I2VuZGlmCi19Ci0KLXZvaWQgQVZNZWRpYUNhcHR1cmVTb3VyY2U6OmJlZ2luQ29uZmlndXJhdGlv
bigpCi17Ci0gICAgaWYgKG1fc2Vzc2lvbikKLSAgICAgICAgW21fc2Vzc2lvbiBiZWdpbkNvbmZp
Z3VyYXRpb25dOwotfQotCi12b2lkIEFWTWVkaWFDYXB0dXJlU291cmNlOjpjb21taXRDb25maWd1
cmF0aW9uKCkKLXsKLSAgICBpZiAobV9zZXNzaW9uKQotICAgICAgICBbbV9zZXNzaW9uIGNvbW1p
dENvbmZpZ3VyYXRpb25dOwotfQotCi12b2lkIEFWTWVkaWFDYXB0dXJlU291cmNlOjppbml0aWFs
aXplU2V0dGluZ3MoKQotewotICAgIGlmIChtX2N1cnJlbnRTZXR0aW5ncy5kZXZpY2VJZCgpLmlz
RW1wdHkoKSkKLSAgICAgICAgbV9jdXJyZW50U2V0dGluZ3Muc2V0U3VwcG9ydGVkQ29uc3RyYWlu
dHMoc3VwcG9ydGVkQ29uc3RyYWludHMoKSk7Ci0KLSAgICBtX2N1cnJlbnRTZXR0aW5ncy5zZXRE
ZXZpY2VJZChpZCgpKTsKLSAgICBtX2N1cnJlbnRTZXR0aW5ncy5zZXRMYWJlbChuYW1lKCkpOwot
ICAgIHVwZGF0ZVNldHRpbmdzKG1fY3VycmVudFNldHRpbmdzKTsKLX0KLQotY29uc3QgUmVhbHRp
bWVNZWRpYVNvdXJjZVNldHRpbmdzJiBBVk1lZGlhQ2FwdHVyZVNvdXJjZTo6c2V0dGluZ3MoKSBj
b25zdAotewotICAgIGNvbnN0X2Nhc3Q8QVZNZWRpYUNhcHR1cmVTb3VyY2UmPigqdGhpcykuaW5p
dGlhbGl6ZVNldHRpbmdzKCk7Ci0gICAgcmV0dXJuIG1fY3VycmVudFNldHRpbmdzOwotfQotCi1S
ZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMmIEFWTWVkaWFDYXB0dXJlU291
cmNlOjpzdXBwb3J0ZWRDb25zdHJhaW50cygpCi17Ci0gICAgaWYgKG1fc3VwcG9ydGVkQ29uc3Ry
YWludHMuc3VwcG9ydHNEZXZpY2VJZCgpKQotICAgICAgICByZXR1cm4gbV9zdXBwb3J0ZWRDb25z
dHJhaW50czsKLQotICAgIG1fc3VwcG9ydGVkQ29uc3RyYWludHMuc2V0U3VwcG9ydHNEZXZpY2VJ
ZCh0cnVlKTsKLSAgICBpbml0aWFsaXplU3VwcG9ydGVkQ29uc3RyYWludHMobV9zdXBwb3J0ZWRD
b25zdHJhaW50cyk7Ci0KLSAgICByZXR1cm4gbV9zdXBwb3J0ZWRDb25zdHJhaW50czsKLX0KLQot
dm9pZCBBVk1lZGlhQ2FwdHVyZVNvdXJjZTo6aW5pdGlhbGl6ZUNhcGFiaWxpdGllcygpCi17Ci0g
ICAgbV9jYXBhYmlsaXRpZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlYWx0aW1lTWVkaWFTb3VyY2VD
YXBhYmlsaXRpZXM+KHN1cHBvcnRlZENvbnN0cmFpbnRzKCkpOwotICAgIG1fY2FwYWJpbGl0aWVz
LT5zZXREZXZpY2VJZChpZCgpKTsKLQotICAgIGluaXRpYWxpemVDYXBhYmlsaXRpZXMoKm1fY2Fw
YWJpbGl0aWVzLmdldCgpKTsKLX0KLQotY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxp
dGllcyYgQVZNZWRpYUNhcHR1cmVTb3VyY2U6OmNhcGFiaWxpdGllcygpIGNvbnN0Ci17Ci0gICAg
aWYgKCFtX2NhcGFiaWxpdGllcykKLSAgICAgICAgY29uc3RfY2FzdDxBVk1lZGlhQ2FwdHVyZVNv
dXJjZSY+KCp0aGlzKS5pbml0aWFsaXplQ2FwYWJpbGl0aWVzKCk7Ci0gICAgcmV0dXJuICptX2Nh
cGFiaWxpdGllczsKLX0KLQotYm9vbCBBVk1lZGlhQ2FwdHVyZVNvdXJjZTo6c2V0dXBTZXNzaW9u
KCkKLXsKLSAgICBpZiAobV9zZXNzaW9uKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIG1f
c2Vzc2lvbiA9IGFkb3B0TlMoW2FsbG9jQVZDYXB0dXJlU2Vzc2lvbkluc3RhbmNlKCkgaW5pdF0p
OwotICAgIGZvciAoTlNTdHJpbmcqIGtleU5hbWUgaW4gc2Vzc2lvbktWT1Byb3BlcnRpZXMoKSkK
LSAgICAgICAgW21fc2Vzc2lvbiBhZGRPYnNlcnZlcjptX29iamNPYnNlcnZlci5nZXQoKSBmb3JL
ZXlQYXRoOmtleU5hbWUgb3B0aW9uczpOU0tleVZhbHVlT2JzZXJ2aW5nT3B0aW9uTmV3IGNvbnRl
eHQ6KHZvaWQgKiluaWxdOwotCi0gICAgW21fc2Vzc2lvbiBiZWdpbkNvbmZpZ3VyYXRpb25dOwot
ICAgIGJvb2wgc3VjY2VzcyA9IHNldHVwQ2FwdHVyZVNlc3Npb24oKTsKLSAgICBbbV9zZXNzaW9u
IGNvbW1pdENvbmZpZ3VyYXRpb25dOwotCi0gICAgaWYgKCFzdWNjZXNzKQotICAgICAgICBjYXB0
dXJlRmFpbGVkKCk7Ci0KLSAgICByZXR1cm4gc3VjY2VzczsKLX0KLQotdm9pZCBBVk1lZGlhQ2Fw
dHVyZVNvdXJjZTo6Y2FwdHVyZVNlc3Npb25Jc1J1bm5pbmdEaWRDaGFuZ2UoYm9vbCBzdGF0ZSkK
LXsKLSAgICBzY2hlZHVsZURlZmVycmVkVGFzayhbdGhpcywgc3RhdGVdIHsKLSAgICAgICAgaWYg
KChzdGF0ZSA9PSBtX2lzUnVubmluZykgJiYgKHN0YXRlID09ICFtdXRlZCgpKSkKLSAgICAgICAg
ICAgIHJldHVybjsKLQotICAgICAgICBtX2lzUnVubmluZyA9IHN0YXRlOwotICAgICAgICBub3Rp
ZnlNdXRlZENoYW5nZSghbV9pc1J1bm5pbmcpOwotICAgIH0pOwotfQotCi0jaWYgUExBVEZPUk0o
SU9TKQotdm9pZCBBVk1lZGlhQ2FwdHVyZVNvdXJjZTo6Y2FwdHVyZVNlc3Npb25SdW50aW1lRXJy
b3IoUmV0YWluUHRyPE5TRXJyb3I+IGVycm9yKQotewotICAgIGlmICghbV9pc1J1bm5pbmcgfHwg
ZXJyb3IuZ2V0KCkuY29kZSAhPSBBVkVycm9yTWVkaWFTZXJ2aWNlc1dlcmVSZXNldCkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgLy8gVHJ5IHRvIHJlc3RhcnQgdGhlIHNlc3Npb24sIGJ1dCByZXNl
dCBtX2lzUnVubmluZyBpbW1lZGlhdGVseSBzbyBpZiBpdCBmYWlscyB3ZSB3b24ndCB0cnkgYWdh
aW4uCi0gICAgW21fc2Vzc2lvbiBzdGFydFJ1bm5pbmddOwotICAgIG1faXNSdW5uaW5nID0gW21f
c2Vzc2lvbiBpc1J1bm5pbmddOwotfQotCi12b2lkIEFWTWVkaWFDYXB0dXJlU291cmNlOjpjYXB0
dXJlU2Vzc2lvbkJlZ2luSW50ZXJydXB0aW9uKFJldGFpblB0cjxOU05vdGlmaWNhdGlvbj4gbm90
aWZpY2F0aW9uKQotewotICAgIG1faW50ZXJydXB0aW9uID0gc3RhdGljX2Nhc3Q8QVZNZWRpYUNh
cHR1cmVTb3VyY2U6OkludGVycnVwdGlvblJlYXNvbj4oW25vdGlmaWNhdGlvbi5nZXQoKS51c2Vy
SW5mb1tBVkNhcHR1cmVTZXNzaW9uSW50ZXJydXB0aW9uUmVhc29uS2V5XSBpbnRlZ2VyVmFsdWVd
KTsKLX0KLQotdm9pZCBBVk1lZGlhQ2FwdHVyZVNvdXJjZTo6Y2FwdHVyZVNlc3Npb25FbmRJbnRl
cnJ1cHRpb24oUmV0YWluUHRyPE5TTm90aWZpY2F0aW9uPikKLXsKLSAgICBJbnRlcnJ1cHRpb25S
ZWFzb24gcmVhc29uID0gbV9pbnRlcnJ1cHRpb247Ci0KLSAgICBtX2ludGVycnVwdGlvbiA9IElu
dGVycnVwdGlvblJlYXNvbjo6Tm9uZTsKLSAgICBpZiAocmVhc29uICE9IEludGVycnVwdGlvblJl
YXNvbjo6VmlkZW9Ob3RBbGxvd2VkSW5TaWRlQnlTaWRlIHx8IG1faXNSdW5uaW5nIHx8ICFtX3Nl
c3Npb24pCi0gICAgICAgIHJldHVybjsKLQotICAgIFttX3Nlc3Npb24gc3RhcnRSdW5uaW5nXTsK
LSAgICBtX2lzUnVubmluZyA9IFttX3Nlc3Npb24gaXNSdW5uaW5nXTsKLX0KLSNlbmRpZgotCi12
b2lkIEFWTWVkaWFDYXB0dXJlU291cmNlOjpzZXRWaWRlb1NhbXBsZUJ1ZmZlckRlbGVnYXRlKEFW
Q2FwdHVyZVZpZGVvRGF0YU91dHB1dFR5cGUqIHZpZGVvT3V0cHV0KQotewotICAgIFt2aWRlb091
dHB1dCBzZXRTYW1wbGVCdWZmZXJEZWxlZ2F0ZTptX29iamNPYnNlcnZlci5nZXQoKSBxdWV1ZTpn
bG9iYVZpZGVvQ2FwdHVyZVNlcmlhbFF1ZXVlKCldOwotfQotCi12b2lkIEFWTWVkaWFDYXB0dXJl
U291cmNlOjpzZXRBdWRpb1NhbXBsZUJ1ZmZlckRlbGVnYXRlKEFWQ2FwdHVyZUF1ZGlvRGF0YU91
dHB1dFR5cGUqIGF1ZGlvT3V0cHV0KQotewotICAgIFthdWRpb091dHB1dCBzZXRTYW1wbGVCdWZm
ZXJEZWxlZ2F0ZTptX29iamNPYnNlcnZlci5nZXQoKSBxdWV1ZTpnbG9iYUF1ZGlvQ2FwdHVyZVNl
cmlhbFF1ZXVlKCldOwotfQotCi1ib29sIEFWTWVkaWFDYXB0dXJlU291cmNlOjppbnRlcnJ1cHRl
ZCgpIGNvbnN0Ci17Ci0gICAgaWYgKG1faW50ZXJydXB0aW9uICE9IEludGVycnVwdGlvblJlYXNv
bjo6Tm9uZSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICByZXR1cm4gUmVhbHRpbWVNZWRp
YVNvdXJjZTo6aW50ZXJydXB0ZWQoKTsKLX0KLQotTlNBcnJheTxOU1N0cmluZyo+KiBzZXNzaW9u
S1ZPUHJvcGVydGllcygpCi17Ci0gICAgc3RhdGljIE5TQXJyYXkqIGtleXMgPSBbQFtAInJ1bm5p
bmciXSByZXRhaW5dOwotICAgIHJldHVybiBrZXlzOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCi0KLUBpbXBsZW1lbnRhdGlvbiBXZWJDb3JlQVZNZWRpYUNhcHR1cmVTb3VyY2VPYnNlcnZl
cgotCi0tIChpZClpbml0V2l0aENhbGxiYWNrOihBVk1lZGlhQ2FwdHVyZVNvdXJjZSopY2FsbGJh
Y2sKLXsKLSAgICBzZWxmID0gW3N1cGVyIGluaXRdOwotICAgIGlmICghc2VsZikKLSAgICAgICAg
cmV0dXJuIG5pbDsKLQotICAgIG1fY2FsbGJhY2sgPSBjYWxsYmFjazsKLQotICAgIHJldHVybiBz
ZWxmOwotfQotCi0tICh2b2lkKWRpc2Nvbm5lY3QKLXsKLSAgICBbTlNPYmplY3QgY2FuY2VsUHJl
dmlvdXNQZXJmb3JtUmVxdWVzdHNXaXRoVGFyZ2V0OnNlbGZdOwotICAgIFtzZWxmIHJlbW92ZU5v
dGlmaWNhdGlvbk9ic2VydmVyc107Ci0gICAgbV9jYWxsYmFjayA9IG51bGxwdHI7Ci19Ci0KLS0g
KHZvaWQpYWRkTm90aWZpY2F0aW9uT2JzZXJ2ZXJzCi17Ci0jaWYgUExBVEZPUk0oSU9TKQotICAg
IEFTU0VSVChtX2NhbGxiYWNrKTsKLQotICAgIE5TTm90aWZpY2F0aW9uQ2VudGVyKiBjZW50ZXIg
PSBbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl07Ci0gICAgQVZDYXB0dXJlU2Vz
c2lvblR5cGUqIHNlc3Npb24gPSBtX2NhbGxiYWNrLT5zZXNzaW9uKCk7Ci0KLSAgICBbY2VudGVy
IGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKHNlc3Npb25SdW50aW1lRXJyb3I6
KSBuYW1lOkFWQ2FwdHVyZVNlc3Npb25SdW50aW1lRXJyb3JOb3RpZmljYXRpb24gb2JqZWN0OnNl
c3Npb25dOwotICAgIFtjZW50ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3Io
YmVnaW5TZXNzaW9uSW50ZXJydXB0ZWQ6KSBuYW1lOkFWQ2FwdHVyZVNlc3Npb25XYXNJbnRlcnJ1
cHRlZE5vdGlmaWNhdGlvbiBvYmplY3Q6c2Vzc2lvbl07Ci0gICAgW2NlbnRlciBhZGRPYnNlcnZl
cjpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihlbmRTZXNzaW9uSW50ZXJydXB0ZWQ6KSBuYW1lOkFW
Q2FwdHVyZVNlc3Npb25JbnRlcnJ1cHRpb25FbmRlZE5vdGlmaWNhdGlvbiBvYmplY3Q6c2Vzc2lv
bl07Ci0jZW5kaWYKLX0KLQotLSAodm9pZClyZW1vdmVOb3RpZmljYXRpb25PYnNlcnZlcnMKLXsK
LSNpZiBQTEFURk9STShJT1MpCi0gICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2Vu
dGVyXSByZW1vdmVPYnNlcnZlcjpzZWxmXTsKLSNlbmRpZgotfQotCi0tICh2b2lkKWNhcHR1cmVP
dXRwdXQ6KEFWQ2FwdHVyZU91dHB1dFR5cGUqKWNhcHR1cmVPdXRwdXQgZGlkT3V0cHV0U2FtcGxl
QnVmZmVyOihDTVNhbXBsZUJ1ZmZlclJlZilzYW1wbGVCdWZmZXIgZnJvbUNvbm5lY3Rpb246KEFW
Q2FwdHVyZUNvbm5lY3Rpb25UeXBlKiljb25uZWN0aW9uCi17Ci0gICAgaWYgKCFtX2NhbGxiYWNr
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2NhbGxiYWNrLT5jYXB0dXJlT3V0cHV0RGlkT3V0
cHV0U2FtcGxlQnVmZmVyRnJvbUNvbm5lY3Rpb24oY2FwdHVyZU91dHB1dCwgc2FtcGxlQnVmZmVy
LCBjb25uZWN0aW9uKTsKLX0KLQotLSAodm9pZClvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOmtleVBh
dGggb2ZPYmplY3Q6KGlkKW9iamVjdCBjaGFuZ2U6KE5TRGljdGlvbmFyeSopY2hhbmdlIGNvbnRl
eHQ6KHZvaWQqKWNvbnRleHQKLXsKLSAgICBVTlVTRURfUEFSQU0ob2JqZWN0KTsKLSAgICBVTlVT
RURfUEFSQU0oY29udGV4dCk7Ci0KLSAgICBpZiAoIW1fY2FsbGJhY2spCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGlkIG5ld1ZhbHVlID0gW2NoYW5nZSB2YWx1ZUZvcktleTpOU0tleVZhbHVlQ2hh
bmdlTmV3S2V5XTsKLQotI2lmICFMT0dfRElTQUJMRUQKLSAgICBib29sIHdpbGxDaGFuZ2UgPSBb
W2NoYW5nZSB2YWx1ZUZvcktleTpOU0tleVZhbHVlQ2hhbmdlTm90aWZpY2F0aW9uSXNQcmlvcktl
eV0gYm9vbFZhbHVlXTsKLQotICAgIGlmICh3aWxsQ2hhbmdlKQotICAgICAgICBMT0coTWVkaWEs
ICJXZWJDb3JlQVZNZWRpYUNhcHR1cmVTb3VyY2VPYnNlcnZlcjo6b2JzZXJ2ZVZhbHVlRm9yS2V5
UGF0aCglcCkgLSB3aWxsIGNoYW5nZSwga2V5UGF0aCA9ICVzIiwgc2VsZiwgW2tleVBhdGggVVRG
OFN0cmluZ10pOwotICAgIGVsc2UgewotICAgICAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IHZhbHVl
U3RyaW5nID0gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aEZvcm1hdDpAIiVAIiwg
bmV3VmFsdWVdKTsKLSAgICAgICAgTE9HKE1lZGlhLCAiV2ViQ29yZUFWTWVkaWFDYXB0dXJlU291
cmNlT2JzZXJ2ZXI6Om9ic2VydmVWYWx1ZUZvcktleVBhdGgoJXApIC0gZGlkIGNoYW5nZSwga2V5
UGF0aCA9ICVzLCB2YWx1ZSA9ICVzIiwgc2VsZiwgW2tleVBhdGggVVRGOFN0cmluZ10sIFt2YWx1
ZVN0cmluZy5nZXQoKSBVVEY4U3RyaW5nXSk7Ci0gICAgfQotI2VuZGlmCi0KLSAgICBpZiAoW2tl
eVBhdGggaXNFcXVhbFRvU3RyaW5nOkAicnVubmluZyJdKQotICAgICAgICBtX2NhbGxiYWNrLT5j
YXB0dXJlU2Vzc2lvbklzUnVubmluZ0RpZENoYW5nZShbbmV3VmFsdWUgYm9vbFZhbHVlXSk7Ci19
Ci0KLSNpZiBQTEFURk9STShJT1MpCi0tICh2b2lkKXNlc3Npb25SdW50aW1lRXJyb3I6KE5TTm90
aWZpY2F0aW9uKilub3RpZmljYXRpb24KLXsKLSAgICBOU0Vycm9yICplcnJvciA9IG5vdGlmaWNh
dGlvbi51c2VySW5mb1tBVkNhcHR1cmVTZXNzaW9uRXJyb3JLZXldOwotICAgIExPRyhNZWRpYSwg
IldlYkNvcmVBVk1lZGlhQ2FwdHVyZVNvdXJjZU9ic2VydmVyOjpzZXNzaW9uUnVudGltZUVycm9y
KCVwKSAtIGVycm9yID0gJXMiLCBzZWxmLCBbW2Vycm9yIGxvY2FsaXplZERlc2NyaXB0aW9uXSBV
VEY4U3RyaW5nXSk7Ci0KLSAgICBpZiAobV9jYWxsYmFjaykKLSAgICAgICAgbV9jYWxsYmFjay0+
Y2FwdHVyZVNlc3Npb25SdW50aW1lRXJyb3IoZXJyb3IpOwotfQotCi0tKHZvaWQpYmVnaW5TZXNz
aW9uSW50ZXJydXB0ZWQ6KE5TTm90aWZpY2F0aW9uKilub3RpZmljYXRpb24KLXsKLSAgICBMT0co
TWVkaWEsICJXZWJDb3JlQVZNZWRpYUNhcHR1cmVTb3VyY2VPYnNlcnZlcjo6YmVnaW5TZXNzaW9u
SW50ZXJydXB0ZWQoJXApIC0gcmVhc29uID0gJWQiLCBzZWxmLCBbbm90aWZpY2F0aW9uLnVzZXJJ
bmZvW0FWQ2FwdHVyZVNlc3Npb25JbnRlcnJ1cHRpb25SZWFzb25LZXldIGludGVnZXJWYWx1ZV0p
OwotCi0gICAgaWYgKG1fY2FsbGJhY2spCi0gICAgICAgIG1fY2FsbGJhY2stPmNhcHR1cmVTZXNz
aW9uQmVnaW5JbnRlcnJ1cHRpb24obm90aWZpY2F0aW9uKTsKLX0KLQotLSAodm9pZCllbmRTZXNz
aW9uSW50ZXJydXB0ZWQ6KE5TTm90aWZpY2F0aW9uKilub3RpZmljYXRpb24KLXsKLSAgICBMT0co
TWVkaWEsICJXZWJDb3JlQVZNZWRpYUNhcHR1cmVTb3VyY2VPYnNlcnZlcjo6ZW5kU2Vzc2lvbklu
dGVycnVwdGVkKCVwKSIsIHNlbGYpOwotCi0gICAgaWYgKG1fY2FsbGJhY2spCi0gICAgICAgIG1f
Y2FsbGJhY2stPmNhcHR1cmVTZXNzaW9uRW5kSW50ZXJydXB0aW9uKG5vdGlmaWNhdGlvbik7Ci19
Ci0jZW5kaWYKLQotQGVuZAotCi0jZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2Fw
dHVyZVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FW
VmlkZW9DYXB0dXJlU291cmNlLmgKaW5kZXggZjhkY2QwMGFmZTIzMGEyZjUyMGZkZGY4M2EwNWRi
OTU2ZDBjZjMxYS4uNzQ4ZTQ4MDBjNTUxZjg5NTI3YmNhNjBlYjk2MzdjNDQ5NWY0ZTc2OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9D
YXB0dXJlU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLmgKQEAgLTI3LDIzICsyNywyNCBAQAogCiAjaWYgRU5B
QkxFKE1FRElBX1NUUkVBTSkgJiYgVVNFKEFWRk9VTkRBVElPTikKIAotI2luY2x1ZGUgIkFWTWVk
aWFDYXB0dXJlU291cmNlLmgiCiAjaW5jbHVkZSAiT3JpZW50YXRpb25Ob3RpZmllci5oIgorI2lu
Y2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2UuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdI
YXNoLmg+CiAKLU9CSkNfQ0xBU1MgQ0FMYXllcjsKLU9CSkNfQ0xBU1MgQVZGcmFtZVJhdGVSYW5n
ZTsKK3R5cGVkZWYgc3RydWN0IG9wYXF1ZUNNU2FtcGxlQnVmZmVyKiBDTVNhbXBsZUJ1ZmZlclJl
ZjsKIAotdHlwZWRlZiBzdHJ1Y3QgQ0dJbWFnZSAqQ0dJbWFnZVJlZjsKLXR5cGVkZWYgY29uc3Qg
c3RydWN0IG9wYXF1ZUNNRm9ybWF0RGVzY3JpcHRpb24gKkNNRm9ybWF0RGVzY3JpcHRpb25SZWY7
Ci10eXBlZGVmIHN0cnVjdCBvcGFxdWVDTVNhbXBsZUJ1ZmZlciAqQ01TYW1wbGVCdWZmZXJSZWY7
CitPQkpDX0NMQVNTIEFWQ2FwdHVyZUNvbm5lY3Rpb247CitPQkpDX0NMQVNTIEFWQ2FwdHVyZURl
dmljZTsKK09CSkNfQ0xBU1MgQVZDYXB0dXJlT3V0cHV0OworT0JKQ19DTEFTUyBBVkNhcHR1cmVT
ZXNzaW9uOworT0JKQ19DTEFTUyBBVkNhcHR1cmVWaWRlb0RhdGFPdXRwdXQ7CitPQkpDX0NMQVNT
IE5TRXJyb3I7CitPQkpDX0NMQVNTIE5TTm90aWZpY2F0aW9uOworT0JKQ19DTEFTUyBXZWJDb3Jl
QVZWaWRlb0NhcHR1cmVTb3VyY2VPYnNlcnZlcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
bGFzcyBGbG9hdFJlY3Q7Ci1jbGFzcyBHcmFwaGljc0NvbnRleHQ7Ci1jbGFzcyBQaXhlbEJ1ZmZl
ckNvbmZvcm1lckNWOwotCi1jbGFzcyBBVlZpZGVvQ2FwdHVyZVNvdXJjZSA6IHB1YmxpYyBBVk1l
ZGlhQ2FwdHVyZVNvdXJjZSwgcHJpdmF0ZSBPcmllbnRhdGlvbk5vdGlmaWVyOjpPYnNlcnZlciB7
CitjbGFzcyBBVlZpZGVvQ2FwdHVyZVNvdXJjZSA6IHB1YmxpYyBSZWFsdGltZU1lZGlhU291cmNl
LCBwcml2YXRlIE9yaWVudGF0aW9uTm90aWZpZXI6Ok9ic2VydmVyIHsKIHB1YmxpYzoKICAgICBz
dGF0aWMgQ2FwdHVyZVNvdXJjZU9yRXJyb3IgY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYsIGNv
bnN0IE1lZGlhQ29uc3RyYWludHMqKTsKIApAQCAtNTIsNDMgKzUzLDU5IEBAIHB1YmxpYzoKICAg
ICBpbnQzMl90IHdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV93aWR0aDsgfQogICAgIGludDMyX3Qg
aGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9oZWlnaHQ7IH0KIAorICAgIGVudW0gY2xhc3MgSW50
ZXJydXB0aW9uUmVhc29uIHsgTm9uZSwgVmlkZW9Ob3RBbGxvd2VkSW5CYWNrZ3JvdW5kLCBBdWRp
b0luVXNlLCBWaWRlb0luVXNlLCBWaWRlb05vdEFsbG93ZWRJblNpZGVCeVNpZGUgfTsKKyAgICB2
b2lkIGNhcHR1cmVTZXNzaW9uQmVnaW5JbnRlcnJ1cHRpb24oUmV0YWluUHRyPE5TTm90aWZpY2F0
aW9uPik7CisgICAgdm9pZCBjYXB0dXJlU2Vzc2lvbkVuZEludGVycnVwdGlvbihSZXRhaW5QdHI8
TlNOb3RpZmljYXRpb24+KTsKKworICAgIEFWQ2FwdHVyZVNlc3Npb24qIHNlc3Npb24oKSBjb25z
dCB7IHJldHVybiBtX3Nlc3Npb24uZ2V0KCk7IH0KKworICAgIHZvaWQgY2FwdHVyZVNlc3Npb25J
c1J1bm5pbmdEaWRDaGFuZ2UoYm9vbCk7CisgICAgdm9pZCBjYXB0dXJlU2Vzc2lvblJ1bnRpbWVF
cnJvcihSZXRhaW5QdHI8TlNFcnJvcj4pOworICAgIHZvaWQgY2FwdHVyZU91dHB1dERpZE91dHB1
dFNhbXBsZUJ1ZmZlckZyb21Db25uZWN0aW9uKEFWQ2FwdHVyZU91dHB1dCosIENNU2FtcGxlQnVm
ZmVyUmVmLCBBVkNhcHR1cmVDb25uZWN0aW9uKik7CisKIHByaXZhdGU6CiAgICAgQVZWaWRlb0Nh
cHR1cmVTb3VyY2UoQVZDYXB0dXJlRGV2aWNlKiwgY29uc3QgQXRvbWljU3RyaW5nJik7CiAgICAg
dmlydHVhbCB+QVZWaWRlb0NhcHR1cmVTb3VyY2UoKTsKIAotICAgIGJvb2wgc2V0dXBDYXB0dXJl
U2Vzc2lvbigpIGZpbmFsOwotICAgIHZvaWQgc2h1dGRvd25DYXB0dXJlU2Vzc2lvbigpIGZpbmFs
OwotCi0gICAgdm9pZCB1cGRhdGVTZXR0aW5ncyhSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3Mm
KSBmaW5hbDsKKyAgICBib29sIHNldHVwU2Vzc2lvbigpOworICAgIGJvb2wgc2V0dXBDYXB0dXJl
U2Vzc2lvbigpOworICAgIHZvaWQgc2h1dGRvd25DYXB0dXJlU2Vzc2lvbigpOwogCisgICAgY29u
c3QgUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYgY2FwYWJpbGl0aWVzKCkgY29uc3Qg
ZmluYWw7CiAgICAgdm9pZCBhcHBseVNpemVBbmRGcmFtZVJhdGUoc3RkOjpvcHRpb25hbDxpbnQ+
IHdpZHRoLCBzdGQ6Om9wdGlvbmFsPGludD4gaGVpZ2h0LCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4p
IGZpbmFsOwogICAgIGJvb2wgYXBwbHlTaXplKGNvbnN0IEludFNpemUmKSBmaW5hbDsKICAgICBi
b29sIGFwcGx5RnJhbWVSYXRlKGRvdWJsZSkgZmluYWw7Ci0gICAgYm9vbCBzZXRQcmVzZXQoTlNT
dHJpbmcqKTsKLQorICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgc2V0dGlu
Z3MoKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIHN0YXJ0UHJvZHVjaW5nRGF0YSgpIGZpbmFsOwor
ICAgIHZvaWQgc3RvcFByb2R1Y2luZ0RhdGEoKSBmaW5hbDsKKyAgICBib29sIHN1cHBvcnRzU2l6
ZUFuZEZyYW1lUmF0ZShzdGQ6Om9wdGlvbmFsPGludD4gd2lkdGgsIHN0ZDo6b3B0aW9uYWw8aW50
PiBoZWlnaHQsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPikgZmluYWw7CisgICAgdm9pZCBzZXR0aW5n
c0RpZENoYW5nZSgpIGZpbmFsOwogICAgIHZvaWQgbW9uaXRvck9yaWVudGF0aW9uKE9yaWVudGF0
aW9uTm90aWZpZXImKSBmaW5hbDsKKyAgICB2b2lkIGJlZ2luQ29uZmlndXJhdGlvbigpIGZpbmFs
OworICAgIHZvaWQgY29tbWl0Q29uZmlndXJhdGlvbigpIGZpbmFsOworICAgIGJvb2wgaXNDYXB0
dXJlU291cmNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgaW50ZXJy
dXB0ZWQoKSBjb25zdCBmaW5hbDsKKworICAgIGJvb2wgc2V0UHJlc2V0KE5TU3RyaW5nKik7CiAg
ICAgdm9pZCBjb21wdXRlU2FtcGxlUm90YXRpb24oKTsKIAogICAgIGJvb2wgaXNGcmFtZVJhdGVT
dXBwb3J0ZWQoZG91YmxlIGZyYW1lUmF0ZSk7CiAKLSAgICBOU1N0cmluZyAqYmVzdFNlc3Npb25Q
cmVzZXRGb3JWaWRlb0RpbWVuc2lvbnMoc3RkOjpvcHRpb25hbDxpbnQ+IHdpZHRoLCBzdGQ6Om9w
dGlvbmFsPGludD4gaGVpZ2h0KTsKLSAgICBib29sIHN1cHBvcnRzU2l6ZUFuZEZyYW1lUmF0ZShz
dGQ6Om9wdGlvbmFsPGludD4gd2lkdGgsIHN0ZDo6b3B0aW9uYWw8aW50PiBoZWlnaHQsIHN0ZDo6
b3B0aW9uYWw8ZG91YmxlPikgZmluYWw7Ci0KLSAgICB2b2lkIGluaXRpYWxpemVDYXBhYmlsaXRp
ZXMoUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYpIGZpbmFsOwotICAgIHZvaWQgaW5p
dGlhbGl6ZVN1cHBvcnRlZENvbnN0cmFpbnRzKFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRD
b25zdHJhaW50cyYpIGZpbmFsOworICAgIE5TU3RyaW5nKiBiZXN0U2Vzc2lvblByZXNldEZvclZp
ZGVvRGltZW5zaW9ucyhzdGQ6Om9wdGlvbmFsPGludD4gd2lkdGgsIHN0ZDo6b3B0aW9uYWw8aW50
PiBoZWlnaHQpOwogCiAgICAgLy8gT3JpZW50YXRpb25Ob3RpZmllcjo6T2JzZXJ2ZXIgQVBJCiAg
ICAgdm9pZCBvcmllbnRhdGlvbkNoYW5nZWQoaW50IG9yaWVudGF0aW9uKSBmaW5hbDsKIAogICAg
IGJvb2wgc2V0RnJhbWVSYXRlQ29uc3RyYWludChkb3VibGUgbWluRnJhbWVSYXRlLCBkb3VibGUg
bWF4RnJhbWVSYXRlKTsKIAotICAgIHZvaWQgY2FwdHVyZU91dHB1dERpZE91dHB1dFNhbXBsZUJ1
ZmZlckZyb21Db25uZWN0aW9uKEFWQ2FwdHVyZU91dHB1dCosIENNU2FtcGxlQnVmZmVyUmVmLCBB
VkNhcHR1cmVDb25uZWN0aW9uKikgZmluYWw7CiAgICAgdm9pZCBwcm9jZXNzTmV3RnJhbWUoUmV0
YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPiwgUmV0YWluUHRyPEFWQ2FwdHVyZUNvbm5lY3Rpb24+
KTsKICAgICBJbnRTaXplIHNpemVGb3JQcmVzZXQoTlNTdHJpbmcqKTsKIAogICAgIHVzaW5nIFZp
ZGVvUHJlc2V0TWFwID0gSGFzaE1hcDxTdHJpbmcsIEludFNpemU+OwogICAgIFZpZGVvUHJlc2V0
TWFwJiB2aWRlb1ByZXNldHMoKSB7IHJldHVybiBtX3N1cHBvcnRlZFByZXNldHM7IH0KIAorICAg
IEFWQ2FwdHVyZURldmljZSogZGV2aWNlKCkgY29uc3QgeyByZXR1cm4gbV9kZXZpY2UuZ2V0KCk7
IH0KKwogICAgIFJldGFpblB0cjxOU1N0cmluZz4gbV9wZW5kaW5nUHJlc2V0OwogICAgIFJldGFp
blB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4gbV9idWZmZXI7CiAgICAgUmV0YWluUHRyPEFWQ2FwdHVy
ZVZpZGVvRGF0YU91dHB1dD4gbV92aWRlb091dHB1dDsKQEAgLTEwMSw2ICsxMTgsMTUgQEAgcHJp
dmF0ZToKICAgICBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbiBtX3NhbXBsZVJvdGF0aW9uIHsg
TWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246Ok5vbmUgfTsKIAogICAgIFZpZGVvUHJlc2V0TWFw
IG1fc3VwcG9ydGVkUHJlc2V0czsKKworICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxSZWFsdGlt
ZU1lZGlhU291cmNlU2V0dGluZ3M+IG1fY3VycmVudFNldHRpbmdzOworICAgIG11dGFibGUgc3Rk
OjpvcHRpb25hbDxSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzPiBtX2NhcGFiaWxpdGll
czsKKyAgICBSZXRhaW5QdHI8V2ViQ29yZUFWVmlkZW9DYXB0dXJlU291cmNlT2JzZXJ2ZXI+IG1f
b2JqY09ic2VydmVyOworICAgIFJldGFpblB0cjxBVkNhcHR1cmVTZXNzaW9uPiBtX3Nlc3Npb247
CisgICAgUmV0YWluUHRyPEFWQ2FwdHVyZURldmljZT4gbV9kZXZpY2U7CisgICAgSW50ZXJydXB0
aW9uUmVhc29uIG1faW50ZXJydXB0aW9uIHsgSW50ZXJydXB0aW9uUmVhc29uOjpOb25lIH07Cisg
ICAgYm9vbCBtX2lzUnVubmluZyB7IGZhbHNlIH07CisKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5tbQppbmRleCBmYWNjMzhmMDhhODgwOWQy
YjNiODMzOWYyOWZlNzk0OWUyN2I3NmU5Li5iYzIyMGE0MjRjZjFlYjk5NTg4ZDlkYWYyYTI2NGM5
MjUxNWI4NWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLm1tCkBAIC0yOCwzMCArMjgs
MjAgQEAKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFVTRShBVkZPVU5EQVRJT04pCiAK
LSNpbXBvcnQgIkFWQ2FwdHVyZURldmljZU1hbmFnZXIuaCIKLSNpbXBvcnQgIkdyYXBoaWNzQ29u
dGV4dENHLmgiCiAjaW1wb3J0ICJJbWFnZUJ1ZmZlci5oIgogI2ltcG9ydCAiSW50UmVjdC5oIgog
I2ltcG9ydCAiTG9nZ2luZy5oIgogI2ltcG9ydCAiTWVkaWFDb25zdHJhaW50cy5oIgogI2ltcG9y
dCAiTWVkaWFTYW1wbGVBVkZPYmpDLmgiCi0jaW1wb3J0ICJOb3RJbXBsZW1lbnRlZC5oIgotI2lt
cG9ydCAiUGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5oIgogI2ltcG9ydCAiUGxhdGZvcm1MYXllci5o
IgogI2ltcG9ydCAiUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5oIgogI2ltcG9ydCAiUmVh
bHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzLmgiCi0jaW1wb3J0ICJXZWJBY3Rpb25EaXNhYmxpbmdD
QUxheWVyRGVsZWdhdGUuaCIKICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVkNhcHR1cmVEZXZpY2Uu
aD4KICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVkNhcHR1cmVJbnB1dC5oPgogI2ltcG9ydCA8QVZG
b3VuZGF0aW9uL0FWQ2FwdHVyZU91dHB1dC5oPgogI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWQ2Fw
dHVyZVNlc3Npb24uaD4KICNpbXBvcnQgPG9iamMvcnVudGltZS5oPgogCi0jaWYgUExBVEZPUk0o
SU9TKQotI2luY2x1ZGUgIldlYkNvcmVUaHJlYWQuaCIKLSNpbmNsdWRlICJXZWJDb3JlVGhyZWFk
UnVuLmgiCi0jZW5kaWYKLQogI2ltcG9ydCA8cGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmg+CiAj
aW1wb3J0ICJDb3JlVmlkZW9Tb2Z0TGluay5oIgogCkBAIC02Miw2ICs1Miw3IEBAIHR5cGVkZWYg
QVZDYXB0dXJlRGV2aWNlSW5wdXQgQVZDYXB0dXJlRGV2aWNlSW5wdXRUeXBlOwogdHlwZWRlZiBB
VkNhcHR1cmVPdXRwdXQgQVZDYXB0dXJlT3V0cHV0VHlwZTsKIHR5cGVkZWYgQVZDYXB0dXJlVmlk
ZW9EYXRhT3V0cHV0IEFWQ2FwdHVyZVZpZGVvRGF0YU91dHB1dFR5cGU7CiB0eXBlZGVmIEFWRnJh
bWVSYXRlUmFuZ2UgQVZGcmFtZVJhdGVSYW5nZVR5cGU7Cit0eXBlZGVmIEFWQ2FwdHVyZVNlc3Np
b24gQVZDYXB0dXJlU2Vzc2lvblR5cGU7CiAKIFNPRlRfTElOS19GUkFNRVdPUktfT1BUSU9OQUwo
QVZGb3VuZGF0aW9uKQogCkBAIC03Miw2ICs2Myw3IEBAIFNPRlRfTElOS19DTEFTUyhBVkZvdW5k
YXRpb24sIEFWQ2FwdHVyZURldmljZUlucHV0KQogU09GVF9MSU5LX0NMQVNTKEFWRm91bmRhdGlv
biwgQVZDYXB0dXJlT3V0cHV0KQogU09GVF9MSU5LX0NMQVNTKEFWRm91bmRhdGlvbiwgQVZDYXB0
dXJlVmlkZW9EYXRhT3V0cHV0KQogU09GVF9MSU5LX0NMQVNTKEFWRm91bmRhdGlvbiwgQVZGcmFt
ZVJhdGVSYW5nZSkKK1NPRlRfTElOS19DTEFTUyhBVkZvdW5kYXRpb24sIEFWQ2FwdHVyZVNlc3Np
b24pCiAKICNkZWZpbmUgQVZDYXB0dXJlQ29ubmVjdGlvbiBnZXRBVkNhcHR1cmVDb25uZWN0aW9u
Q2xhc3MoKQogI2RlZmluZSBBVkNhcHR1cmVEZXZpY2UgZ2V0QVZDYXB0dXJlRGV2aWNlQ2xhc3Mo
KQpAQCAtOTcsMTMgKzg5LDQwIEBAIFNPRlRfTElOS19DT05TVEFOVF9NQVlfRkFJTChBVkZvdW5k
YXRpb24sIEFWQ2FwdHVyZVNlc3Npb25QcmVzZXQzMjB4MjQwLCBOU1N0cmluCiAjaWYgUExBVEZP
Uk0oSU9TKQogU09GVF9MSU5LX0NPTlNUQU5UX01BWV9GQUlMKEFWRm91bmRhdGlvbiwgQVZDYXB0
dXJlU2Vzc2lvblByZXNldDM4NDB4MjE2MCwgTlNTdHJpbmcgKikKIFNPRlRfTElOS19DT05TVEFO
VF9NQVlfRkFJTChBVkZvdW5kYXRpb24sIEFWQ2FwdHVyZVNlc3Npb25QcmVzZXQxOTIweDEwODAs
IE5TU3RyaW5nICopCitTT0ZUX0xJTktfUE9JTlRFUl9PUFRJT05BTChBVkZvdW5kYXRpb24sIEFW
Q2FwdHVyZVNlc3Npb25SdW50aW1lRXJyb3JOb3RpZmljYXRpb24sIE5TU3RyaW5nICopCitTT0ZU
X0xJTktfUE9JTlRFUl9PUFRJT05BTChBVkZvdW5kYXRpb24sIEFWQ2FwdHVyZVNlc3Npb25XYXNJ
bnRlcnJ1cHRlZE5vdGlmaWNhdGlvbiwgTlNTdHJpbmcgKikKK1NPRlRfTElOS19QT0lOVEVSX09Q
VElPTkFMKEFWRm91bmRhdGlvbiwgQVZDYXB0dXJlU2Vzc2lvbkludGVycnVwdGlvbkVuZGVkTm90
aWZpY2F0aW9uLCBOU1N0cmluZyAqKQorU09GVF9MSU5LX1BPSU5URVJfT1BUSU9OQUwoQVZGb3Vu
ZGF0aW9uLCBBVkNhcHR1cmVTZXNzaW9uSW50ZXJydXB0aW9uUmVhc29uS2V5LCBOU1N0cmluZyAq
KQorU09GVF9MSU5LX1BPSU5URVJfT1BUSU9OQUwoQVZGb3VuZGF0aW9uLCBBVkNhcHR1cmVTZXNz
aW9uRXJyb3JLZXksIE5TU3RyaW5nICopCiAKICNkZWZpbmUgQVZDYXB0dXJlU2Vzc2lvblByZXNl
dDM4NDB4MjE2MCBnZXRBVkNhcHR1cmVTZXNzaW9uUHJlc2V0Mzg0MHgyMTYwKCkKICNkZWZpbmUg
QVZDYXB0dXJlU2Vzc2lvblByZXNldDE5MjB4MTA4MCBnZXRBVkNhcHR1cmVTZXNzaW9uUHJlc2V0
MTkyMHgxMDgwKCkKKyNkZWZpbmUgQVZDYXB0dXJlU2Vzc2lvblJ1bnRpbWVFcnJvck5vdGlmaWNh
dGlvbiBnZXRBVkNhcHR1cmVTZXNzaW9uUnVudGltZUVycm9yTm90aWZpY2F0aW9uKCkKKyNkZWZp
bmUgQVZDYXB0dXJlU2Vzc2lvbldhc0ludGVycnVwdGVkTm90aWZpY2F0aW9uIGdldEFWQ2FwdHVy
ZVNlc3Npb25XYXNJbnRlcnJ1cHRlZE5vdGlmaWNhdGlvbigpCisjZGVmaW5lIEFWQ2FwdHVyZVNl
c3Npb25JbnRlcnJ1cHRpb25FbmRlZE5vdGlmaWNhdGlvbiBnZXRBVkNhcHR1cmVTZXNzaW9uSW50
ZXJydXB0aW9uRW5kZWROb3RpZmljYXRpb24oKQorI2RlZmluZSBBVkNhcHR1cmVTZXNzaW9uSW50
ZXJydXB0aW9uUmVhc29uS2V5IGdldEFWQ2FwdHVyZVNlc3Npb25JbnRlcnJ1cHRpb25SZWFzb25L
ZXkoKQorI2RlZmluZSBBVkNhcHR1cmVTZXNzaW9uRXJyb3JLZXkgZ2V0QVZDYXB0dXJlU2Vzc2lv
bkVycm9yS2V5KCkKICNlbmRpZgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAorQGludGVy
ZmFjZSBXZWJDb3JlQVZWaWRlb0NhcHR1cmVTb3VyY2VPYnNlcnZlciA6IE5TT2JqZWN0PEFWQ2Fw
dHVyZVZpZGVvRGF0YU91dHB1dFNhbXBsZUJ1ZmZlckRlbGVnYXRlPiB7CisgICAgQVZWaWRlb0Nh
cHR1cmVTb3VyY2UqIG1fY2FsbGJhY2s7Cit9CisKKy0oaWQpaW5pdFdpdGhDYWxsYmFjazooQVZW
aWRlb0NhcHR1cmVTb3VyY2UqKWNhbGxiYWNrOworLSh2b2lkKWRpc2Nvbm5lY3Q7CistKHZvaWQp
YWRkTm90aWZpY2F0aW9uT2JzZXJ2ZXJzOworLSh2b2lkKXJlbW92ZU5vdGlmaWNhdGlvbk9ic2Vy
dmVyczsKKy0odm9pZCljYXB0dXJlT3V0cHV0OihBVkNhcHR1cmVPdXRwdXRUeXBlKiljYXB0dXJl
T3V0cHV0IGRpZE91dHB1dFNhbXBsZUJ1ZmZlcjooQ01TYW1wbGVCdWZmZXJSZWYpc2FtcGxlQnVm
ZmVyIGZyb21Db25uZWN0aW9uOihBVkNhcHR1cmVDb25uZWN0aW9uVHlwZSopY29ubmVjdGlvbjsK
Ky0odm9pZClvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOmtleVBhdGggb2ZPYmplY3Q6KGlkKW9iamVj
dCBjaGFuZ2U6KE5TRGljdGlvbmFyeSopY2hhbmdlIGNvbnRleHQ6KHZvaWQqKWNvbnRleHQ7Cisj
aWYgUExBVEZPUk0oSU9TKQorLSh2b2lkKXNlc3Npb25SdW50aW1lRXJyb3I6KE5TTm90aWZpY2F0
aW9uKilub3RpZmljYXRpb247CistKHZvaWQpYmVnaW5TZXNzaW9uSW50ZXJydXB0ZWQ6KE5TTm90
aWZpY2F0aW9uKilub3RpZmljYXRpb247CistKHZvaWQpZW5kU2Vzc2lvbkludGVycnVwdGVkOihO
U05vdGlmaWNhdGlvbiopbm90aWZpY2F0aW9uOworI2VuZGlmCitAZW5kCisKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTExMiw2ICsxMzEsMTYgQEAgY29uc3Qg
T1NUeXBlIHZpZGVvQ2FwdHVyZUZvcm1hdCA9IGtDVlBpeGVsRm9ybWF0VHlwZV80MjBZcENiQ3I4
UGxhbmFyOwogY29uc3QgT1NUeXBlIHZpZGVvQ2FwdHVyZUZvcm1hdCA9IGtDVlBpeGVsRm9ybWF0
VHlwZV80MjBZcENiQ3I4QmlQbGFuYXJGdWxsUmFuZ2U7CiAjZW5kaWYKIAorc3RhdGljIGRpc3Bh
dGNoX3F1ZXVlX3QgZ2xvYmFWaWRlb0NhcHR1cmVTZXJpYWxRdWV1ZSgpCit7CisgICAgc3RhdGlj
IGRpc3BhdGNoX3F1ZXVlX3QgZ2xvYmFsUXVldWU7CisgICAgc3RhdGljIGRpc3BhdGNoX29uY2Vf
dCBvbmNlVG9rZW47CisgICAgZGlzcGF0Y2hfb25jZSgmb25jZVRva2VuLCBeeworICAgICAgICBn
bG9iYWxRdWV1ZSA9IGRpc3BhdGNoX3F1ZXVlX2NyZWF0ZV93aXRoX3RhcmdldCgiV2ViQ29yZUFW
VmlkZW9DYXB0dXJlU291cmNlIHZpZGVvIGNhcHR1cmUgcXVldWUiLCBESVNQQVRDSF9RVUVVRV9T
RVJJQUwsIGRpc3BhdGNoX2dldF9nbG9iYWxfcXVldWUoRElTUEFUQ0hfUVVFVUVfUFJJT1JJVFlf
SElHSCwgMCkpOworICAgIH0pOworICAgIHJldHVybiBnbG9iYWxRdWV1ZTsKK30KKwogQ2FwdHVy
ZVNvdXJjZU9yRXJyb3IgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OmNyZWF0ZShjb25zdCBBdG9taWNT
dHJpbmcmIGlkLCBjb25zdCBNZWRpYUNvbnN0cmFpbnRzKiBjb25zdHJhaW50cykKIHsKICAgICBB
VkNhcHR1cmVEZXZpY2VUeXBlZGVmICpkZXZpY2UgPSBbZ2V0QVZDYXB0dXJlRGV2aWNlQ2xhc3Mo
KSBkZXZpY2VXaXRoVW5pcXVlSUQ6aWRdOwpAQCAtMTI5LDcgKzE1OCw5IEBAIENhcHR1cmVTb3Vy
Y2VPckVycm9yIEFWVmlkZW9DYXB0dXJlU291cmNlOjpjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5n
JiBpZCwgY29uc3QKIH0KIAogQVZWaWRlb0NhcHR1cmVTb3VyY2U6OkFWVmlkZW9DYXB0dXJlU291
cmNlKEFWQ2FwdHVyZURldmljZVR5cGVkZWYqIGRldmljZSwgY29uc3QgQXRvbWljU3RyaW5nJiBp
ZCkKLSAgICA6IEFWTWVkaWFDYXB0dXJlU291cmNlKGRldmljZSwgaWQsIFR5cGU6OlZpZGVvKQor
ICAgIDogUmVhbHRpbWVNZWRpYVNvdXJjZShpZCwgVHlwZTo6VmlkZW8sIGRldmljZS5sb2NhbGl6
ZWROYW1lKQorICAgICwgbV9vYmpjT2JzZXJ2ZXIoYWRvcHROUyhbW1dlYkNvcmVBVlZpZGVvQ2Fw
dHVyZVNvdXJjZU9ic2VydmVyIGFsbG9jXSBpbml0V2l0aENhbGxiYWNrOnRoaXNdKSkKKyAgICAs
IG1fZGV2aWNlKGRldmljZSkKIHsKICAgICBzdHJ1Y3QgVmlkZW9QcmVzZXQgewogICAgICAgICBi
b29sIHN5bWJvbEF2YWlsYWJsZTsKQEAgLTE1NywxMiArMTg4LDYwIEBAIEFWVmlkZW9DYXB0dXJl
U291cmNlOjpBVlZpZGVvQ2FwdHVyZVNvdXJjZShBVkNhcHR1cmVEZXZpY2VUeXBlZGVmKiBkZXZp
Y2UsIGNvbnN0CiAKICAgICAgICAgcHJlc2V0c01hcC0+YWRkKFN0cmluZyhwcmVzZXQubmFtZSks
IEludFNpemUocHJlc2V0LndpZHRoLCBwcmVzZXQuaGVpZ2h0KSk7CiAgICAgfQorCisjaWYgUExB
VEZPUk0oSU9TKQorICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8aW50PihJbnRlcnJ1cHRp
b25SZWFzb246OlZpZGVvTm90QWxsb3dlZEluQmFja2dyb3VuZCkgPT0gc3RhdGljX2Nhc3Q8aW50
PihBVkNhcHR1cmVTZXNzaW9uSW50ZXJydXB0aW9uUmVhc29uVmlkZW9EZXZpY2VOb3RBdmFpbGFi
bGVJbkJhY2tncm91bmQpLCAiSW50ZXJydXB0aW9uUmVhc29uOjpWaWRlb05vdEFsbG93ZWRJbkJh
Y2tncm91bmQgaXMgbm90IEFWQ2FwdHVyZVNlc3Npb25JbnRlcnJ1cHRpb25SZWFzb25WaWRlb0Rl
dmljZU5vdEF2YWlsYWJsZUluQmFja2dyb3VuZCBhcyBleHBlY3RlZCIpOworICAgIHN0YXRpY19h
c3NlcnQoc3RhdGljX2Nhc3Q8aW50PihJbnRlcnJ1cHRpb25SZWFzb246OlZpZGVvTm90QWxsb3dl
ZEluU2lkZUJ5U2lkZSkgPT0gQVZDYXB0dXJlU2Vzc2lvbkludGVycnVwdGlvblJlYXNvblZpZGVv
RGV2aWNlTm90QXZhaWxhYmxlV2l0aE11bHRpcGxlRm9yZWdyb3VuZEFwcHMsICJJbnRlcnJ1cHRp
b25SZWFzb246OlZpZGVvTm90QWxsb3dlZEluU2lkZUJ5U2lkZSBpcyBub3QgQVZDYXB0dXJlU2Vz
c2lvbkludGVycnVwdGlvblJlYXNvblZpZGVvRGV2aWNlTm90QXZhaWxhYmxlV2l0aE11bHRpcGxl
Rm9yZWdyb3VuZEFwcHMgYXMgZXhwZWN0ZWQiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19j
YXN0PGludD4oSW50ZXJydXB0aW9uUmVhc29uOjpWaWRlb0luVXNlKSA9PSBBVkNhcHR1cmVTZXNz
aW9uSW50ZXJydXB0aW9uUmVhc29uVmlkZW9EZXZpY2VJblVzZUJ5QW5vdGhlckNsaWVudCwgIklu
dGVycnVwdGlvblJlYXNvbjo6VmlkZW9JblVzZSBpcyBub3QgQVZDYXB0dXJlU2Vzc2lvbkludGVy
cnVwdGlvblJlYXNvblZpZGVvRGV2aWNlSW5Vc2VCeUFub3RoZXJDbGllbnQgYXMgZXhwZWN0ZWQi
KTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PGludD4oSW50ZXJydXB0aW9uUmVhc29u
OjpBdWRpb0luVXNlKSA9PSBBVkNhcHR1cmVTZXNzaW9uSW50ZXJydXB0aW9uUmVhc29uQXVkaW9E
ZXZpY2VJblVzZUJ5QW5vdGhlckNsaWVudCwgIkludGVycnVwdGlvblJlYXNvbjo6QXVkaW9JblVz
ZSBpcyBub3QgQVZDYXB0dXJlU2Vzc2lvbkludGVycnVwdGlvblJlYXNvbkF1ZGlvRGV2aWNlSW5V
c2VCeUFub3RoZXJDbGllbnQgYXMgZXhwZWN0ZWQiKTsKKyNlbmRpZgorCisgICAgc2V0UGVyc2lz
dGVudElEKFN0cmluZyhkZXZpY2UudW5pcXVlSUQpKTsKIH0KIAogQVZWaWRlb0NhcHR1cmVTb3Vy
Y2U6On5BVlZpZGVvQ2FwdHVyZVNvdXJjZSgpCiB7CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIFJl
YWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWM6OnZpZGVvQ2FwdHVyZVNvdXJjZUZhY3RvcnkoKS51
bnNldEFjdGl2ZVNvdXJjZSgqdGhpcyk7CisjZW5kaWYKKyAgICBbbV9vYmpjT2JzZXJ2ZXIgZGlz
Y29ubmVjdF07CisKKyAgICBpZiAoIW1fc2Vzc2lvbikKKyAgICAgICAgcmV0dXJuOworCisgICAg
W21fc2Vzc2lvbiByZW1vdmVPYnNlcnZlcjptX29iamNPYnNlcnZlci5nZXQoKSBmb3JLZXlQYXRo
OkAicmF0ZSJdOworICAgIGlmIChbbV9zZXNzaW9uIGlzUnVubmluZ10pCisgICAgICAgIFttX3Nl
c3Npb24gc3RvcFJ1bm5pbmddOworCit9CisKK3ZvaWQgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OnN0
YXJ0UHJvZHVjaW5nRGF0YSgpCit7CisgICAgaWYgKCFtX3Nlc3Npb24pIHsKKyAgICAgICAgaWYg
KCFzZXR1cFNlc3Npb24oKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAo
W21fc2Vzc2lvbiBpc1J1bm5pbmddKQorICAgICAgICByZXR1cm47CisKKyAgICBbbV9vYmpjT2Jz
ZXJ2ZXIgYWRkTm90aWZpY2F0aW9uT2JzZXJ2ZXJzXTsKKyAgICBbbV9zZXNzaW9uIHN0YXJ0UnVu
bmluZ107Cit9CisKK3ZvaWQgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OnN0b3BQcm9kdWNpbmdEYXRh
KCkKK3sKKyAgICBpZiAoIW1fc2Vzc2lvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgW21fb2Jq
Y09ic2VydmVyIHJlbW92ZU5vdGlmaWNhdGlvbk9ic2VydmVyc107CisKKyAgICBpZiAoW21fc2Vz
c2lvbiBpc1J1bm5pbmddKQorICAgICAgICBbbV9zZXNzaW9uIHN0b3BSdW5uaW5nXTsKKworICAg
IG1faW50ZXJydXB0aW9uID0gSW50ZXJydXB0aW9uUmVhc29uOjpOb25lOworI2lmIFBMQVRGT1JN
KElPUykKKyAgICBtX3Nlc3Npb24gPSBudWxscHRyOwogI2VuZGlmCiB9CiAKQEAgLTE3OCw4ICsy
NTcsNjUgQEAgc3RhdGljIHZvaWQgdXBkYXRlQXNwZWN0UmF0aW9NaW5NYXgoZG91YmxlJiBtaW4s
IGRvdWJsZSYgbWF4LCBkb3VibGUgdmFsdWUpCiAgICAgbWF4ID0gc3RkOjptYXg8ZG91YmxlPiht
YXgsIHZhbHVlKTsKIH0KIAotdm9pZCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6aW5pdGlhbGl6ZUNh
cGFiaWxpdGllcyhSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJiBjYXBhYmlsaXRpZXMp
Cit2b2lkIEFWVmlkZW9DYXB0dXJlU291cmNlOjpiZWdpbkNvbmZpZ3VyYXRpb24oKQoreworICAg
IGlmIChtX3Nlc3Npb24pCisgICAgICAgIFttX3Nlc3Npb24gYmVnaW5Db25maWd1cmF0aW9uXTsK
K30KKwordm9pZCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6Y29tbWl0Q29uZmlndXJhdGlvbigpCiB7
CisgICAgaWYgKG1fc2Vzc2lvbikKKyAgICAgICAgW21fc2Vzc2lvbiBjb21taXRDb25maWd1cmF0
aW9uXTsKK30KKwordm9pZCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6c2V0dGluZ3NEaWRDaGFuZ2Uo
KQoreworICAgIG1fY3VycmVudFNldHRpbmdzID0gc3RkOjpudWxsb3B0OworICAgIFJlYWx0aW1l
TWVkaWFTb3VyY2U6OnNldHRpbmdzRGlkQ2hhbmdlKCk7Cit9CisKK2NvbnN0IFJlYWx0aW1lTWVk
aWFTb3VyY2VTZXR0aW5ncyYgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OnNldHRpbmdzKCkgY29uc3QK
K3sKKyAgICBpZiAobV9jdXJyZW50U2V0dGluZ3MpCisgICAgICAgIHJldHVybiAqbV9jdXJyZW50
U2V0dGluZ3M7CisKKyAgICBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3Mgc2V0dGluZ3M7Cisg
ICAgaWYgKFtkZXZpY2UoKSBwb3NpdGlvbl0gPT0gQVZDYXB0dXJlRGV2aWNlUG9zaXRpb25Gcm9u
dCkKKyAgICAgICAgc2V0dGluZ3Muc2V0RmFjaW5nTW9kZShSZWFsdGltZU1lZGlhU291cmNlU2V0
dGluZ3M6OlVzZXIpOworICAgIGVsc2UgaWYgKFtkZXZpY2UoKSBwb3NpdGlvbl0gPT0gQVZDYXB0
dXJlRGV2aWNlUG9zaXRpb25CYWNrKQorICAgICAgICBzZXR0aW5ncy5zZXRGYWNpbmdNb2RlKFJl
YWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RW52aXJvbm1lbnQpOworICAgIGVsc2UKKyAgICAg
ICAgc2V0dGluZ3Muc2V0RmFjaW5nTW9kZShSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OlVu
a25vd24pOworCisgICAgYXV0byBtYXhGcmFtZUR1cmF0aW9uID0gW2RldmljZSgpIGFjdGl2ZVZp
ZGVvTWF4RnJhbWVEdXJhdGlvbl07CisgICAgc2V0dGluZ3Muc2V0RnJhbWVSYXRlKG1heEZyYW1l
RHVyYXRpb24udGltZXNjYWxlIC8gbWF4RnJhbWVEdXJhdGlvbi52YWx1ZSk7CisgICAgc2V0dGlu
Z3Muc2V0V2lkdGgobV93aWR0aCk7CisgICAgc2V0dGluZ3Muc2V0SGVpZ2h0KG1faGVpZ2h0KTsK
KyAgICBzZXR0aW5ncy5zZXREZXZpY2VJZChpZCgpKTsKKworICAgIFJlYWx0aW1lTWVkaWFTb3Vy
Y2VTdXBwb3J0ZWRDb25zdHJhaW50cyBzdXBwb3J0ZWRDb25zdHJhaW50czsKKyAgICBzdXBwb3J0
ZWRDb25zdHJhaW50cy5zZXRTdXBwb3J0c0RldmljZUlkKHRydWUpOworICAgIHN1cHBvcnRlZENv
bnN0cmFpbnRzLnNldFN1cHBvcnRzRmFjaW5nTW9kZShbZGV2aWNlKCkgcG9zaXRpb25dICE9IEFW
Q2FwdHVyZURldmljZVBvc2l0aW9uVW5zcGVjaWZpZWQpOworICAgIHN1cHBvcnRlZENvbnN0cmFp
bnRzLnNldFN1cHBvcnRzV2lkdGgodHJ1ZSk7CisgICAgc3VwcG9ydGVkQ29uc3RyYWludHMuc2V0
U3VwcG9ydHNIZWlnaHQodHJ1ZSk7CisgICAgc3VwcG9ydGVkQ29uc3RyYWludHMuc2V0U3VwcG9y
dHNBc3BlY3RSYXRpbyh0cnVlKTsKKyAgICBzdXBwb3J0ZWRDb25zdHJhaW50cy5zZXRTdXBwb3J0
c0ZyYW1lUmF0ZSh0cnVlKTsKKworICAgIHNldHRpbmdzLnNldFN1cHBvcnRlZENvbnN0cmFpbnRz
KHN1cHBvcnRlZENvbnN0cmFpbnRzKTsKKworICAgIG1fY3VycmVudFNldHRpbmdzID0gV1RGTW92
ZShzZXR0aW5ncyk7CisKKyAgICByZXR1cm4gKm1fY3VycmVudFNldHRpbmdzOworfQorCitjb25z
dCBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJiBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6
Y2FwYWJpbGl0aWVzKCkgY29uc3QKK3sKKyAgICBpZiAobV9jYXBhYmlsaXRpZXMpCisgICAgICAg
IHJldHVybiAqbV9jYXBhYmlsaXRpZXM7CisKKyAgICBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJp
bGl0aWVzIGNhcGFiaWxpdGllcyhzZXR0aW5ncygpLnN1cHBvcnRlZENvbnN0cmFpbnRzKCkpOwor
ICAgIGNhcGFiaWxpdGllcy5zZXREZXZpY2VJZChpZCgpKTsKICAgICBBVkNhcHR1cmVEZXZpY2VU
eXBlZGVmICp2aWRlb0RldmljZSA9IGRldmljZSgpOwogCiAgICAgaWYgKFt2aWRlb0RldmljZSBw
b3NpdGlvbl0gPT0gQVZDYXB0dXJlRGV2aWNlUG9zaXRpb25Gcm9udCkKQEAgLTIwNCw0NSArMzQw
LDIwIEBAIHZvaWQgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OmluaXRpYWxpemVDYXBhYmlsaXRpZXMo
UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBm
b3IgKGF1dG8mIHByZXNldCA6IHZpZGVvUHJlc2V0cygpKSB7CisgICAgZm9yIChhdXRvJiBwcmVz
ZXQgOiBtX3N1cHBvcnRlZFByZXNldHMpIHsKICAgICAgICAgYXV0byB2YWx1ZXMgPSBwcmVzZXQu
dmFsdWU7CiAgICAgICAgIHVwZGF0ZVNpemVNaW5NYXgobWluaW11bVdpZHRoLCBtYXhpbXVtV2lk
dGgsIHZhbHVlcy53aWR0aCgpKTsKICAgICAgICAgdXBkYXRlU2l6ZU1pbk1heChtaW5pbXVtSGVp
Z2h0LCBtYXhpbXVtSGVpZ2h0LCB2YWx1ZXMuaGVpZ2h0KCkpOwogICAgICAgICB1cGRhdGVBc3Bl
Y3RSYXRpb01pbk1heChtaW5pbXVtQXNwZWN0UmF0aW8sIG1heGltdW1Bc3BlY3RSYXRpbywgc3Rh
dGljX2Nhc3Q8ZG91YmxlPih2YWx1ZXMud2lkdGgoKSkgLyB2YWx1ZXMuaGVpZ2h0KCkpOwogICAg
IH0KLQogICAgIGNhcGFiaWxpdGllcy5zZXRGcmFtZVJhdGUoQ2FwYWJpbGl0eVZhbHVlT3JSYW5n
ZShsb3dlc3RGcmFtZVJhdGVSYW5nZSwgaGlnaGVzdEZyYW1lUmF0ZVJhbmdlKSk7CiAgICAgY2Fw
YWJpbGl0aWVzLnNldFdpZHRoKENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2UobWluaW11bVdpZHRoLCBt
YXhpbXVtV2lkdGgpKTsKICAgICBjYXBhYmlsaXRpZXMuc2V0SGVpZ2h0KENhcGFiaWxpdHlWYWx1
ZU9yUmFuZ2UobWluaW11bUhlaWdodCwgbWF4aW11bUhlaWdodCkpOwogICAgIGNhcGFiaWxpdGll
cy5zZXRBc3BlY3RSYXRpbyhDYXBhYmlsaXR5VmFsdWVPclJhbmdlKG1pbmltdW1Bc3BlY3RSYXRp
bywgbWF4aW11bUFzcGVjdFJhdGlvKSk7Ci19Ci0KLXZvaWQgQVZWaWRlb0NhcHR1cmVTb3VyY2U6
OmluaXRpYWxpemVTdXBwb3J0ZWRDb25zdHJhaW50cyhSZWFsdGltZU1lZGlhU291cmNlU3VwcG9y
dGVkQ29uc3RyYWludHMmIHN1cHBvcnRlZENvbnN0cmFpbnRzKQotewotICAgIHN1cHBvcnRlZENv
bnN0cmFpbnRzLnNldFN1cHBvcnRzRmFjaW5nTW9kZShbZGV2aWNlKCkgcG9zaXRpb25dICE9IEFW
Q2FwdHVyZURldmljZVBvc2l0aW9uVW5zcGVjaWZpZWQpOwotICAgIHN1cHBvcnRlZENvbnN0cmFp
bnRzLnNldFN1cHBvcnRzV2lkdGgodHJ1ZSk7Ci0gICAgc3VwcG9ydGVkQ29uc3RyYWludHMuc2V0
U3VwcG9ydHNIZWlnaHQodHJ1ZSk7Ci0gICAgc3VwcG9ydGVkQ29uc3RyYWludHMuc2V0U3VwcG9y
dHNBc3BlY3RSYXRpbyh0cnVlKTsKLSAgICBzdXBwb3J0ZWRDb25zdHJhaW50cy5zZXRTdXBwb3J0
c0ZyYW1lUmF0ZSh0cnVlKTsKLX0KLQotdm9pZCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6dXBkYXRl
U2V0dGluZ3MoUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiBzZXR0aW5ncykKLXsKLSAgICBz
ZXR0aW5ncy5zZXREZXZpY2VJZChpZCgpKTsKIAotICAgIGlmIChbZGV2aWNlKCkgcG9zaXRpb25d
ID09IEFWQ2FwdHVyZURldmljZVBvc2l0aW9uRnJvbnQpCi0gICAgICAgIHNldHRpbmdzLnNldEZh
Y2luZ01vZGUoUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpVc2VyKTsKLSAgICBlbHNlIGlm
IChbZGV2aWNlKCkgcG9zaXRpb25dID09IEFWQ2FwdHVyZURldmljZVBvc2l0aW9uQmFjaykKLSAg
ICAgICAgc2V0dGluZ3Muc2V0RmFjaW5nTW9kZShSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6
OkVudmlyb25tZW50KTsKLSAgICBlbHNlCi0gICAgICAgIHNldHRpbmdzLnNldEZhY2luZ01vZGUo
UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpVbmtub3duKTsKKyAgICBtX2NhcGFiaWxpdGll
cyA9IFdURk1vdmUoY2FwYWJpbGl0aWVzKTsKIAotICAgIC8vIEZJWE1FOiBPYnNlcnZlIGZyYW1l
IHJhdGUgY2hhbmdlcy4KLSAgICBhdXRvIG1heEZyYW1lRHVyYXRpb24gPSBbZGV2aWNlKCkgYWN0
aXZlVmlkZW9NYXhGcmFtZUR1cmF0aW9uXTsKLSAgICBzZXR0aW5ncy5zZXRGcmFtZVJhdGUobWF4
RnJhbWVEdXJhdGlvbi50aW1lc2NhbGUgLyBtYXhGcmFtZUR1cmF0aW9uLnZhbHVlKTsKLSAgICBz
ZXR0aW5ncy5zZXRXaWR0aChtX3dpZHRoKTsKLSAgICBzZXR0aW5ncy5zZXRIZWlnaHQobV9oZWln
aHQpOwotICAgIHNldHRpbmdzLnNldEFzcGVjdFJhdGlvKHN0YXRpY19jYXN0PGZsb2F0PihtX3dp
ZHRoKSAvIG1faGVpZ2h0KTsKKyAgICByZXR1cm4gKm1fY2FwYWJpbGl0aWVzOwogfQogCiBib29s
IEFWVmlkZW9DYXB0dXJlU291cmNlOjphcHBseVNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKQEAg
LTI4NSw3ICszOTYsMTEgQEAgYm9vbCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6c2V0UHJlc2V0KE5T
U3RyaW5nICpwcmVzZXQpCiAgICAgQHRyeSB7CiAgICAgICAgIHNlc3Npb24oKS5zZXNzaW9uUHJl
c2V0ID0gcHJlc2V0OwogI2lmIFBMQVRGT1JNKE1BQykKLSAgICAgICAgYXV0byBzZXR0aW5nc0Rp
Y3Rpb25hcnkgPSBAeyAoX19icmlkZ2UgTlNTdHJpbmcgKilrQ1ZQaXhlbEJ1ZmZlclBpeGVsRm9y
bWF0VHlwZUtleTogQCh2aWRlb0NhcHR1cmVGb3JtYXQpLCAoX19icmlkZ2UgTlNTdHJpbmcgKilr
Q1ZQaXhlbEJ1ZmZlcldpZHRoS2V5OiBAKHNpemUud2lkdGgoKSksIChfX2JyaWRnZSBOU1N0cmlu
ZyAqKWtDVlBpeGVsQnVmZmVySGVpZ2h0S2V5OiBAKHNpemUuaGVpZ2h0KCkpLCB9OworICAgICAg
ICBhdXRvIHNldHRpbmdzRGljdGlvbmFyeSA9IEB7CisgICAgICAgICAgICAoX19icmlkZ2UgTlNT
dHJpbmcgKilrQ1ZQaXhlbEJ1ZmZlclBpeGVsRm9ybWF0VHlwZUtleTogQCh2aWRlb0NhcHR1cmVG
b3JtYXQpLAorICAgICAgICAgICAgKF9fYnJpZGdlIE5TU3RyaW5nICopa0NWUGl4ZWxCdWZmZXJX
aWR0aEtleTogQChzaXplLndpZHRoKCkpLAorICAgICAgICAgICAgKF9fYnJpZGdlIE5TU3RyaW5n
ICopa0NWUGl4ZWxCdWZmZXJIZWlnaHRLZXk6IEAoc2l6ZS5oZWlnaHQoKSkKKyAgICAgICAgfTsK
ICAgICAgICAgW21fdmlkZW9PdXRwdXQgc2V0VmlkZW9TZXR0aW5nczpzZXR0aW5nc0RpY3Rpb25h
cnldOwogI2VuZGlmCiAgICAgfSBAY2F0Y2goTlNFeGNlcHRpb24gKmV4Y2VwdGlvbikgewpAQCAt
MzgxLDYgKzQ5NiwyNCBAQCBzdGF0aWMgaW5saW5lIGludCBzZW5zb3JPcmllbnRhdGlvbkZyb21W
aWRlb091dHB1dChBVkNhcHR1cmVWaWRlb0RhdGFPdXRwdXRUeXBlKgogICAgIHJldHVybiBjb25u
ZWN0aW9uID8gc2Vuc29yT3JpZW50YXRpb24oW2Nvbm5lY3Rpb24gdmlkZW9PcmllbnRhdGlvbl0p
IDogMDsKIH0KIAorYm9vbCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6c2V0dXBTZXNzaW9uKCkKK3sK
KyAgICBpZiAobV9zZXNzaW9uKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIG1fc2Vzc2lv
biA9IGFkb3B0TlMoW2FsbG9jQVZDYXB0dXJlU2Vzc2lvbkluc3RhbmNlKCkgaW5pdF0pOworICAg
IFttX3Nlc3Npb24gYWRkT2JzZXJ2ZXI6bV9vYmpjT2JzZXJ2ZXIuZ2V0KCkgZm9yS2V5UGF0aDpA
InJhdGUiIG9wdGlvbnM6TlNLZXlWYWx1ZU9ic2VydmluZ09wdGlvbk5ldyBjb250ZXh0Oih2b2lk
ICopbmlsXTsKKworICAgIFttX3Nlc3Npb24gYmVnaW5Db25maWd1cmF0aW9uXTsKKyAgICBib29s
IHN1Y2Nlc3MgPSBzZXR1cENhcHR1cmVTZXNzaW9uKCk7CisgICAgW21fc2Vzc2lvbiBjb21taXRD
b25maWd1cmF0aW9uXTsKKworICAgIGlmICghc3VjY2VzcykKKyAgICAgICAgY2FwdHVyZUZhaWxl
ZCgpOworCisgICAgcmV0dXJuIHN1Y2Nlc3M7Cit9CisKIGJvb2wgQVZWaWRlb0NhcHR1cmVTb3Vy
Y2U6OnNldHVwQ2FwdHVyZVNlc3Npb24oKQogewogI2lmIFBMQVRGT1JNKElPUykKQEAgLTQxMiw3
ICs1NDUsNyBAQCBib29sIEFWVmlkZW9DYXB0dXJlU291cmNlOjpzZXR1cENhcHR1cmVTZXNzaW9u
KCkKIAogICAgIFttX3ZpZGVvT3V0cHV0IHNldFZpZGVvU2V0dGluZ3M6c2V0dGluZ3NEaWN0aW9u
YXJ5LmdldCgpXTsKICAgICBbbV92aWRlb091dHB1dCBzZXRBbHdheXNEaXNjYXJkc0xhdGVWaWRl
b0ZyYW1lczpZRVNdOwotICAgIHNldFZpZGVvU2FtcGxlQnVmZmVyRGVsZWdhdGUobV92aWRlb091
dHB1dC5nZXQoKSk7CisgICAgW21fdmlkZW9PdXRwdXQgc2V0U2FtcGxlQnVmZmVyRGVsZWdhdGU6
bV9vYmpjT2JzZXJ2ZXIuZ2V0KCkgcXVldWU6Z2xvYmFWaWRlb0NhcHR1cmVTZXJpYWxRdWV1ZSgp
XTsKIAogICAgIGlmICghW3Nlc3Npb24oKSBjYW5BZGRPdXRwdXQ6bV92aWRlb091dHB1dC5nZXQo
KV0pIHsKICAgICAgICAgUkVMRUFTRV9MT0coTWVkaWEsICJBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6
c2V0dXBDYXB0dXJlU2Vzc2lvbiglcCksIHVuYWJsZSB0byBhZGQgdmlkZW8gc2FtcGxlIGJ1ZmZl
ciBvdXRwdXQgZGVsZWdhdGUiLCB0aGlzKTsKQEAgLTU1NSw2ICs2ODgsMTU3IEBAIGJvb2wgQVZW
aWRlb0NhcHR1cmVTb3VyY2U6OnN1cHBvcnRzU2l6ZUFuZEZyYW1lUmF0ZShzdGQ6Om9wdGlvbmFs
PGludD4gd2lkdGgsIHN0CiAgICAgcmV0dXJuIGlzRnJhbWVSYXRlU3VwcG9ydGVkKGZyYW1lUmF0
ZS52YWx1ZSgpKTsKIH0KIAordm9pZCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6Y2FwdHVyZVNlc3Np
b25Jc1J1bm5pbmdEaWRDaGFuZ2UoYm9vbCBzdGF0ZSkKK3sKKyAgICBzY2hlZHVsZURlZmVycmVk
VGFzayhbdGhpcywgc3RhdGVdIHsKKyAgICAgICAgaWYgKChzdGF0ZSA9PSBtX2lzUnVubmluZykg
JiYgKHN0YXRlID09ICFtdXRlZCgpKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBt
X2lzUnVubmluZyA9IHN0YXRlOworICAgICAgICBub3RpZnlNdXRlZENoYW5nZSghbV9pc1J1bm5p
bmcpOworICAgIH0pOworfQorCitib29sIEFWVmlkZW9DYXB0dXJlU291cmNlOjppbnRlcnJ1cHRl
ZCgpIGNvbnN0Cit7CisgICAgaWYgKG1faW50ZXJydXB0aW9uICE9IEludGVycnVwdGlvblJlYXNv
bjo6Tm9uZSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICByZXR1cm4gUmVhbHRpbWVNZWRp
YVNvdXJjZTo6aW50ZXJydXB0ZWQoKTsKK30KKworI2lmIFBMQVRGT1JNKElPUykKK3ZvaWQgQVZW
aWRlb0NhcHR1cmVTb3VyY2U6OmNhcHR1cmVTZXNzaW9uUnVudGltZUVycm9yKFJldGFpblB0cjxO
U0Vycm9yPiBlcnJvcikKK3sKKyAgICBpZiAoIW1faXNSdW5uaW5nIHx8IGVycm9yLmdldCgpLmNv
ZGUgIT0gQVZFcnJvck1lZGlhU2VydmljZXNXZXJlUmVzZXQpCisgICAgICAgIHJldHVybjsKKwor
ICAgIC8vIFRyeSB0byByZXN0YXJ0IHRoZSBzZXNzaW9uLCBidXQgcmVzZXQgbV9pc1J1bm5pbmcg
aW1tZWRpYXRlbHkgc28gaWYgaXQgZmFpbHMgd2Ugd29uJ3QgdHJ5IGFnYWluLgorICAgIFttX3Nl
c3Npb24gc3RhcnRSdW5uaW5nXTsKKyAgICBtX2lzUnVubmluZyA9IFttX3Nlc3Npb24gaXNSdW5u
aW5nXTsKK30KKwordm9pZCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6Y2FwdHVyZVNlc3Npb25CZWdp
bkludGVycnVwdGlvbihSZXRhaW5QdHI8TlNOb3RpZmljYXRpb24+IG5vdGlmaWNhdGlvbikKK3sK
KyAgICBtX2ludGVycnVwdGlvbiA9IHN0YXRpY19jYXN0PEFWVmlkZW9DYXB0dXJlU291cmNlOjpJ
bnRlcnJ1cHRpb25SZWFzb24+KFtub3RpZmljYXRpb24uZ2V0KCkudXNlckluZm9bQVZDYXB0dXJl
U2Vzc2lvbkludGVycnVwdGlvblJlYXNvbktleV0gaW50ZWdlclZhbHVlXSk7Cit9CisKK3ZvaWQg
QVZWaWRlb0NhcHR1cmVTb3VyY2U6OmNhcHR1cmVTZXNzaW9uRW5kSW50ZXJydXB0aW9uKFJldGFp
blB0cjxOU05vdGlmaWNhdGlvbj4pCit7CisgICAgSW50ZXJydXB0aW9uUmVhc29uIHJlYXNvbiA9
IG1faW50ZXJydXB0aW9uOworCisgICAgbV9pbnRlcnJ1cHRpb24gPSBJbnRlcnJ1cHRpb25SZWFz
b246Ok5vbmU7CisgICAgaWYgKHJlYXNvbiAhPSBJbnRlcnJ1cHRpb25SZWFzb246OlZpZGVvTm90
QWxsb3dlZEluU2lkZUJ5U2lkZSB8fCBtX2lzUnVubmluZyB8fCAhbV9zZXNzaW9uKQorICAgICAg
ICByZXR1cm47CisKKyAgICBbbV9zZXNzaW9uIHN0YXJ0UnVubmluZ107CisgICAgbV9pc1J1bm5p
bmcgPSBbbV9zZXNzaW9uIGlzUnVubmluZ107Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCitAaW1wbGVtZW50YXRpb24gV2ViQ29yZUFWVmlkZW9DYXB0dXJlU291cmNlT2Jz
ZXJ2ZXIKKworLSAoaWQpaW5pdFdpdGhDYWxsYmFjazooQVZWaWRlb0NhcHR1cmVTb3VyY2UqKWNh
bGxiYWNrCit7CisgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKKyAgICBpZiAoIXNlbGYpCisgICAg
ICAgIHJldHVybiBuaWw7CisKKyAgICBtX2NhbGxiYWNrID0gY2FsbGJhY2s7CisKKyAgICByZXR1
cm4gc2VsZjsKK30KKworLSAodm9pZClkaXNjb25uZWN0Cit7CisgICAgW05TT2JqZWN0IGNhbmNl
bFByZXZpb3VzUGVyZm9ybVJlcXVlc3RzV2l0aFRhcmdldDpzZWxmXTsKKyAgICBbc2VsZiByZW1v
dmVOb3RpZmljYXRpb25PYnNlcnZlcnNdOworICAgIG1fY2FsbGJhY2sgPSBudWxscHRyOworfQor
CistICh2b2lkKWFkZE5vdGlmaWNhdGlvbk9ic2VydmVycworeworI2lmIFBMQVRGT1JNKElPUykK
KyAgICBBU1NFUlQobV9jYWxsYmFjayk7CisKKyAgICBOU05vdGlmaWNhdGlvbkNlbnRlciogY2Vu
dGVyID0gW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdOworICAgIEFWQ2FwdHVy
ZVNlc3Npb25UeXBlKiBzZXNzaW9uID0gbV9jYWxsYmFjay0+c2Vzc2lvbigpOworCisgICAgW2Nl
bnRlciBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihzZXNzaW9uUnVudGltZUVy
cm9yOikgbmFtZTpBVkNhcHR1cmVTZXNzaW9uUnVudGltZUVycm9yTm90aWZpY2F0aW9uIG9iamVj
dDpzZXNzaW9uXTsKKyAgICBbY2VudGVyIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVj
dG9yKGJlZ2luU2Vzc2lvbkludGVycnVwdGVkOikgbmFtZTpBVkNhcHR1cmVTZXNzaW9uV2FzSW50
ZXJydXB0ZWROb3RpZmljYXRpb24gb2JqZWN0OnNlc3Npb25dOworICAgIFtjZW50ZXIgYWRkT2Jz
ZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoZW5kU2Vzc2lvbkludGVycnVwdGVkOikgbmFt
ZTpBVkNhcHR1cmVTZXNzaW9uSW50ZXJydXB0aW9uRW5kZWROb3RpZmljYXRpb24gb2JqZWN0OnNl
c3Npb25dOworI2VuZGlmCit9CisKKy0gKHZvaWQpcmVtb3ZlTm90aWZpY2F0aW9uT2JzZXJ2ZXJz
Cit7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVs
dENlbnRlcl0gcmVtb3ZlT2JzZXJ2ZXI6c2VsZl07CisjZW5kaWYKK30KKworLSAodm9pZCljYXB0
dXJlT3V0cHV0OihBVkNhcHR1cmVPdXRwdXRUeXBlKiljYXB0dXJlT3V0cHV0IGRpZE91dHB1dFNh
bXBsZUJ1ZmZlcjooQ01TYW1wbGVCdWZmZXJSZWYpc2FtcGxlQnVmZmVyIGZyb21Db25uZWN0aW9u
OihBVkNhcHR1cmVDb25uZWN0aW9uVHlwZSopY29ubmVjdGlvbgoreworICAgIGlmICghbV9jYWxs
YmFjaykKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jYWxsYmFjay0+Y2FwdHVyZU91dHB1dERp
ZE91dHB1dFNhbXBsZUJ1ZmZlckZyb21Db25uZWN0aW9uKGNhcHR1cmVPdXRwdXQsIHNhbXBsZUJ1
ZmZlciwgY29ubmVjdGlvbik7Cit9CisKKy0gKHZvaWQpb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDpr
ZXlQYXRoIG9mT2JqZWN0OihpZClvYmplY3QgY2hhbmdlOihOU0RpY3Rpb25hcnkqKWNoYW5nZSBj
b250ZXh0Oih2b2lkKiljb250ZXh0Cit7CisgICAgVU5VU0VEX1BBUkFNKG9iamVjdCk7CisgICAg
VU5VU0VEX1BBUkFNKGNvbnRleHQpOworCisgICAgaWYgKCFtX2NhbGxiYWNrKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBpZCBuZXdWYWx1ZSA9IFtjaGFuZ2UgdmFsdWVGb3JLZXk6TlNLZXlWYWx1
ZUNoYW5nZU5ld0tleV07CisKKyNpZiAhTE9HX0RJU0FCTEVECisgICAgYm9vbCB3aWxsQ2hhbmdl
ID0gW1tjaGFuZ2UgdmFsdWVGb3JLZXk6TlNLZXlWYWx1ZUNoYW5nZU5vdGlmaWNhdGlvbklzUHJp
b3JLZXldIGJvb2xWYWx1ZV07CisKKyAgICBpZiAod2lsbENoYW5nZSkKKyAgICAgICAgTE9HKE1l
ZGlhLCAiV2ViQ29yZUFWVmlkZW9DYXB0dXJlU291cmNlT2JzZXJ2ZXI6Om9ic2VydmVWYWx1ZUZv
cktleVBhdGgoJXApIC0gd2lsbCBjaGFuZ2UsIGtleVBhdGggPSAlcyIsIHNlbGYsIFtrZXlQYXRo
IFVURjhTdHJpbmddKTsKKyAgICBlbHNlIHsKKyAgICAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiB2
YWx1ZVN0cmluZyA9IGFkb3B0TlMoW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhGb3JtYXQ6QCIl
QCIsIG5ld1ZhbHVlXSk7CisgICAgICAgIExPRyhNZWRpYSwgIldlYkNvcmVBVlZpZGVvQ2FwdHVy
ZVNvdXJjZU9ic2VydmVyOjpvYnNlcnZlVmFsdWVGb3JLZXlQYXRoKCVwKSAtIGRpZCBjaGFuZ2Us
IGtleVBhdGggPSAlcywgdmFsdWUgPSAlcyIsIHNlbGYsIFtrZXlQYXRoIFVURjhTdHJpbmddLCBb
dmFsdWVTdHJpbmcuZ2V0KCkgVVRGOFN0cmluZ10pOworICAgIH0KKyNlbmRpZgorCisgICAgaWYg
KFtrZXlQYXRoIGlzRXF1YWxUb1N0cmluZzpAInJ1bm5pbmciXSkKKyAgICAgICAgbV9jYWxsYmFj
ay0+Y2FwdHVyZVNlc3Npb25Jc1J1bm5pbmdEaWRDaGFuZ2UoW25ld1ZhbHVlIGJvb2xWYWx1ZV0p
OworfQorCisjaWYgUExBVEZPUk0oSU9TKQorLSAodm9pZClzZXNzaW9uUnVudGltZUVycm9yOihO
U05vdGlmaWNhdGlvbiopbm90aWZpY2F0aW9uCit7CisgICAgTlNFcnJvciAqZXJyb3IgPSBub3Rp
ZmljYXRpb24udXNlckluZm9bQVZDYXB0dXJlU2Vzc2lvbkVycm9yS2V5XTsKKyAgICBMT0coTWVk
aWEsICJXZWJDb3JlQVZWaWRlb0NhcHR1cmVTb3VyY2VPYnNlcnZlcjo6c2Vzc2lvblJ1bnRpbWVF
cnJvciglcCkgLSBlcnJvciA9ICVzIiwgc2VsZiwgW1tlcnJvciBsb2NhbGl6ZWREZXNjcmlwdGlv
bl0gVVRGOFN0cmluZ10pOworCisgICAgaWYgKG1fY2FsbGJhY2spCisgICAgICAgIG1fY2FsbGJh
Y2stPmNhcHR1cmVTZXNzaW9uUnVudGltZUVycm9yKGVycm9yKTsKK30KKworLSAodm9pZCliZWdp
blNlc3Npb25JbnRlcnJ1cHRlZDooTlNOb3RpZmljYXRpb24qKW5vdGlmaWNhdGlvbgoreworICAg
IExPRyhNZWRpYSwgIldlYkNvcmVBVlZpZGVvQ2FwdHVyZVNvdXJjZU9ic2VydmVyOjpiZWdpblNl
c3Npb25JbnRlcnJ1cHRlZCglcCkgLSByZWFzb24gPSAlZCIsIHNlbGYsIFtub3RpZmljYXRpb24u
dXNlckluZm9bQVZDYXB0dXJlU2Vzc2lvbkludGVycnVwdGlvblJlYXNvbktleV0gaW50ZWdlclZh
bHVlXSk7CisKKyAgICBpZiAobV9jYWxsYmFjaykKKyAgICAgICAgbV9jYWxsYmFjay0+Y2FwdHVy
ZVNlc3Npb25CZWdpbkludGVycnVwdGlvbihub3RpZmljYXRpb24pOworfQorCistICh2b2lkKWVu
ZFNlc3Npb25JbnRlcnJ1cHRlZDooTlNOb3RpZmljYXRpb24qKW5vdGlmaWNhdGlvbgoreworICAg
IExPRyhNZWRpYSwgIldlYkNvcmVBVlZpZGVvQ2FwdHVyZVNvdXJjZU9ic2VydmVyOjplbmRTZXNz
aW9uSW50ZXJydXB0ZWQoJXApIiwgc2VsZik7CisKKyAgICBpZiAobV9jYWxsYmFjaykKKyAgICAg
ICAgbV9jYWxsYmFjay0+Y2FwdHVyZVNlc3Npb25FbmRJbnRlcnJ1cHRpb24obm90aWZpY2F0aW9u
KTsKK30KKyNlbmRpZgorCitAZW5kCisKICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348529</attachid>
            <date>2018-08-30 12:38:22 -0700</date>
            <delta_ts>2018-08-30 14:30:11 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-189159-20180830123821.patch</filename>
            <type>text/plain</type>
            <size>40255</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1NTE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWM0ZGRlM2YyYjUyMjVm
NWE3M2ZiM2Q3MTIyMWM1OTZmZjg2MzIyMi4uMTBiNjU2OTRiYTRmOWY1ZWQwNjYxZDViZWM3NDlk
OTg5OTYzOGY2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDU0IEBACiAyMDE4LTA4LTMwICBFcmlj
IENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgogCisgICAgICAgIFtNZWRpYVN0cmVh
bV0gUmVtb3ZlIEFWTWVkaWFDYXB0dXJlU291cmNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODkxNTkKKworICAgICAgICBSZXZpZXdlZCBieSBZb3Vl
bm4gRmFibGV0LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gY2hhbmdlIGluIGZ1bmN0aW9u
YWxpdHkuCisKKyAgICAgICAgUmVmYWN0b3IgdmlkZW8gY2FwdHVyZSB0byBnZXQgcmlkIG9mIGEg
YmFzZSBjbGFzcyB3ZSBkb24ndCAKKyAgICAgICAgbmVlZCBhbnkgbW9yZS4KKworICAgICAgICAq
IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UuaDogUmVtb3ZlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UubW06IFJlbW92
ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291
cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6c2Vzc2lvbiBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6ZGV2aWNlIGNv
bnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVT
b3VyY2UubW06CisgICAgICAgIChXZWJDb3JlOjpnbG9iYVZpZGVvQ2FwdHVyZVNlcmlhbFF1ZXVl
KToKKyAgICAgICAgKFdlYkNvcmU6OkFWVmlkZW9DYXB0dXJlU291cmNlOjpBVlZpZGVvQ2FwdHVy
ZVNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6fkFWVmlk
ZW9DYXB0dXJlU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkFWVmlkZW9DYXB0dXJlU291cmNl
OjpzdGFydFByb2R1Y2luZ0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6QVZWaWRlb0NhcHR1cmVT
b3VyY2U6OnN0b3BQcm9kdWNpbmdEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkFWVmlkZW9DYXB0
dXJlU291cmNlOjpiZWdpbkNvbmZpZ3VyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6QVZWaWRl
b0NhcHR1cmVTb3VyY2U6OmNvbW1pdENvbmZpZ3VyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
QVZWaWRlb0NhcHR1cmVTb3VyY2U6OnNldHRpbmdzRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNv
cmU6OkFWVmlkZW9DYXB0dXJlU291cmNlOjpzZXR0aW5ncyBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6Y2FwYWJpbGl0aWVzIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkFWVmlkZW9DYXB0dXJlU291cmNlOjpzZXRQcmVzZXQpOgorICAgICAgICAoV2Vi
Q29yZTo6QVZWaWRlb0NhcHR1cmVTb3VyY2U6OnNldHVwU2Vzc2lvbik6CisgICAgICAgIChXZWJD
b3JlOjpBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6c2V0dXBDYXB0dXJlU2Vzc2lvbik6CisgICAgICAg
IChXZWJDb3JlOjpBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6Y2FwdHVyZVNlc3Npb25Jc1J1bm5pbmdE
aWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6QVZWaWRlb0NhcHR1cmVTb3VyY2U6OmludGVy
cnVwdGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFWVmlkZW9DYXB0dXJlU291cmNlOjpj
YXB0dXJlU2Vzc2lvblJ1bnRpbWVFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpBVlZpZGVvQ2Fw
dHVyZVNvdXJjZTo6Y2FwdHVyZVNlc3Npb25CZWdpbkludGVycnVwdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6Y2FwdHVyZVNlc3Npb25FbmRJbnRlcnJ1cHRp
b24pOgorICAgICAgICAoLVtXZWJDb3JlQVZWaWRlb0NhcHR1cmVTb3VyY2VPYnNlcnZlciBpbml0
V2l0aENhbGxiYWNrOl0pOgorICAgICAgICAoLVtXZWJDb3JlQVZWaWRlb0NhcHR1cmVTb3VyY2VP
YnNlcnZlciBkaXNjb25uZWN0XSk6CisgICAgICAgICgtW1dlYkNvcmVBVlZpZGVvQ2FwdHVyZVNv
dXJjZU9ic2VydmVyIGFkZE5vdGlmaWNhdGlvbk9ic2VydmVyc10pOgorICAgICAgICAoLVtXZWJD
b3JlQVZWaWRlb0NhcHR1cmVTb3VyY2VPYnNlcnZlciByZW1vdmVOb3RpZmljYXRpb25PYnNlcnZl
cnNdKToKKyAgICAgICAgKC1bV2ViQ29yZUFWVmlkZW9DYXB0dXJlU291cmNlT2JzZXJ2ZXIgY2Fw
dHVyZU91dHB1dDpkaWRPdXRwdXRTYW1wbGVCdWZmZXI6ZnJvbUNvbm5lY3Rpb246XSk6CisgICAg
ICAgICgtW1dlYkNvcmVBVlZpZGVvQ2FwdHVyZVNvdXJjZU9ic2VydmVyIG9ic2VydmVWYWx1ZUZv
cktleVBhdGg6b2ZPYmplY3Q6Y2hhbmdlOmNvbnRleHQ6XSk6CisgICAgICAgICgtW1dlYkNvcmVB
VlZpZGVvQ2FwdHVyZVNvdXJjZU9ic2VydmVyIHNlc3Npb25SdW50aW1lRXJyb3I6XSk6CisgICAg
ICAgICgtW1dlYkNvcmVBVlZpZGVvQ2FwdHVyZVNvdXJjZU9ic2VydmVyIGJlZ2luU2Vzc2lvbklu
dGVycnVwdGVkOl0pOgorICAgICAgICAoLVtXZWJDb3JlQVZWaWRlb0NhcHR1cmVTb3VyY2VPYnNl
cnZlciBlbmRTZXNzaW9uSW50ZXJydXB0ZWQ6XSk6CisgICAgICAgIChXZWJDb3JlOjpBVlZpZGVv
Q2FwdHVyZVNvdXJjZTo6aW5pdGlhbGl6ZUNhcGFiaWxpdGllcyk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6aW5pdGlhbGl6ZVN1cHBvcnRlZENvbnN0
cmFpbnRzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFWVmlkZW9DYXB0dXJlU291cmNl
Ojp1cGRhdGVTZXR0aW5ncyk6IERlbGV0ZWQuCisKKzIwMTgtMDgtMzAgIEVyaWMgQ2FybHNvbiAg
PGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CiAgICAgICAgIE1vY2sgdmlkZW8gZGV2aWNlcyBzaG91
bGQgb25seSBzdXBwb3J0IGRpc2NyZXRlIHNpemVzCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODkwMDAKICAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQz
NzY2NTUxPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IGYzNjE4NzQ3NTNiMjNhYmU3ZTQ5MDdiMmRiYmUxNTAyYmJmMWI4ZjkuLjkz
OTkwMDk0YmRiZDY3MzIzNmY3OTM2M2I1NGZiNmM0NjZkOGQ5OTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTcyLDggKzcyLDYg
QEAKIAkJMDcwMzM0RDkxNDVBMDA2RjAwOEQ4RDQ1IC8qIFRyYWNrQmFzZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzAzMzREODE0NUEwMDZGMDA4
RDhENDUgLyogVHJhY2tCYXNlLmNwcCAqLzsgfTsKIAkJMDcwMzYzRTIxODFBMUNEQzAwQzA3NEE1
IC8qIEFWQ2FwdHVyZURldmljZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDA3MDM2M0RBMTgxQTFDREMwMEMwNzRBNSAvKiBBVkNhcHR1cmVE
ZXZpY2VNYW5hZ2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMDcwMzYzRTMxODFBMUNEQzAwQzA3NEE1IC8qIEFWQ2FwdHVyZURldmljZU1hbmFn
ZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzAz
NjNEQjE4MUExQ0RDMDBDMDc0QTUgLyogQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5tbSAqLzsgfTsK
LQkJMDcwMzYzRTQxODFBMUNEQzAwQzA3NEE1IC8qIEFWTWVkaWFDYXB0dXJlU291cmNlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzAzNjNEQzE4MUEx
Q0RDMDBDMDc0QTUgLyogQVZNZWRpYUNhcHR1cmVTb3VyY2UuaCAqLzsgfTsKLQkJMDcwMzYzRTUx
ODFBMUNEQzAwQzA3NEE1IC8qIEFWTWVkaWFDYXB0dXJlU291cmNlLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcwMzYzREQxODFBMUNEQzAwQzA3NEE1
IC8qIEFWTWVkaWFDYXB0dXJlU291cmNlLm1tICovOyB9OwogCQkwNzAzNjNFNjE4MUExQ0RDMDBD
MDc0QTUgLyogQVZWaWRlb0NhcHR1cmVTb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MDM2M0RFMTgxQTFDREMwMEMwNzRBNSAvKiBBVlZpZGVv
Q2FwdHVyZVNvdXJjZS5oICovOyB9OwogCQkwNzAzNjNFNzE4MUExQ0RDMDBDMDc0QTUgLyogQVZW
aWRlb0NhcHR1cmVTb3VyY2UubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwNzAzNjNERjE4MUExQ0RDMDBDMDc0QTUgLyogQVZWaWRlb0NhcHR1cmVTb3Vy
Y2UubW0gKi87IH07CiAJCTA3MDRBNDA4MUQ2REU5RjEwMDg2RENEQiAvKiBPdmVyY29uc3RyYWlu
ZWRFcnJvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDcwNEE0MDUxRDZERTlGMTAwODZEQ0RCIC8qIE92ZXJjb25zdHJhaW5lZEVycm9yLmggKi87IH07
CkBAIC01MTczLDggKzUxNzEsNiBAQAogCQkwNzAzMzRFODE0NUExRjM1MDA4RDhENDUgLyogSlNU
cmFja0N1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1Ry
YWNrQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDcwMzYzREExODFB
MUNEQzAwQzA3NEE1IC8qIEFWQ2FwdHVyZURldmljZU1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwNzAzNjNEQjE4MUExQ0RDMDBDMDc0QTUgLyogQVZDYXB0dXJlRGV2
aWNlTWFuYWdlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFW
Q2FwdHVyZURldmljZU1hbmFnZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTA3
MDM2M0RDMTgxQTFDREMwMEMwNzRBNSAvKiBBVk1lZGlhQ2FwdHVyZVNvdXJjZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBVk1lZGlhQ2FwdHVyZVNvdXJjZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQkwNzAzNjNERDE4MUExQ0RDMDBDMDc0QTUgLyogQVZNZWRp
YUNhcHR1cmVTb3VyY2UubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBBVk1lZGlhQ2FwdHVyZVNvdXJjZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MDcwMzYzREUxODFBMUNEQzAwQzA3NEE1IC8qIEFWVmlkZW9DYXB0dXJlU291cmNlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFWVmlkZW9DYXB0dXJlU291cmNlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3MDM2M0RGMTgxQTFDREMwMEMwNzRBNSAvKiBBVlZp
ZGVvQ2FwdHVyZVNvdXJjZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IEFWVmlkZW9DYXB0dXJlU291cmNlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwNzA0QTQwMzFENkRFOUYxMDA4NkRDREIgLyogT3ZlcmNvbnN0cmFpbmVkRXJyb3IuaWRsICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9IE92ZXJjb25zdHJhaW5lZEVycm9yLmlkbDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1MjAzLDggKzE1MTk5LDYgQEAKIAkJCQkwN0MwNDZDNjFF
NDI1MTJGMDA3MjAxRTcgLyogQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hLmggKi8s
CiAJCQkJMDcwMzYzREExODFBMUNEQzAwQzA3NEE1IC8qIEFWQ2FwdHVyZURldmljZU1hbmFnZXIu
aCAqLywKIAkJCQkwNzAzNjNEQjE4MUExQ0RDMDBDMDc0QTUgLyogQVZDYXB0dXJlRGV2aWNlTWFu
YWdlci5tbSAqLywKLQkJCQkwNzAzNjNEQzE4MUExQ0RDMDBDMDc0QTUgLyogQVZNZWRpYUNhcHR1
cmVTb3VyY2UuaCAqLywKLQkJCQkwNzAzNjNERDE4MUExQ0RDMDBDMDc0QTUgLyogQVZNZWRpYUNh
cHR1cmVTb3VyY2UubW0gKi8sCiAJCQkJMDcwMzYzREUxODFBMUNEQzAwQzA3NEE1IC8qIEFWVmlk
ZW9DYXB0dXJlU291cmNlLmggKi8sCiAJCQkJMDcwMzYzREYxODFBMUNEQzAwQzA3NEE1IC8qIEFW
VmlkZW9DYXB0dXJlU291cmNlLm1tICovLAogCQkJCTNGODAyMDMxMUU5RTM4MUQwMERFQzYxRCAv
KiBDb3JlQXVkaW9DYXB0dXJlRGV2aWNlLmNwcCAqLywKQEAgLTI3MDk5LDcgKzI3MDkzLDYgQEAK
IAkJCQlDREM2NzUyMzFFQUVBOUI3MDA3MjdDODQgLyogQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2
aWNlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDcwMzYzRTIxODFBMUNEQzAwQzA3NEE1
IC8qIEFWQ2FwdHVyZURldmljZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3RjRFOTMz
MjBCMzU4N0YwMDJFMzgwMyAvKiBBVkZvdW5kYXRpb25NSU1FVHlwZUNhY2hlLmggaW4gSGVhZGVy
cyAqLywKLQkJCQkwNzAzNjNFNDE4MUExQ0RDMDBDMDc0QTUgLyogQVZNZWRpYUNhcHR1cmVTb3Vy
Y2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEMzM2RjYyMTdGOUY2NDcwMERERENEMCAvKiBBVlRy
YWNrUHJpdmF0ZUFWRk9iakNJbXBsLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzAzNjNFNjE4MUEx
Q0RDMDBDMDc0QTUgLyogQVZWaWRlb0NhcHR1cmVTb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUY0NUMyMzFFMTk5NUI3M0IwMEE2RTJFMyAvKiBBeGlzU2Nyb2xsU25hcE9mZnNldHMuaCBpbiBI
ZWFkZXJzICovLApAQCAtMzEzMjgsNyArMzEzMjEsNiBAQAogCQkJCUNEQzY3NTIyMUVBRUE5Qjcw
MDcyN0M4NCAvKiBBVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMDcwMzYzRTMxODFBMUNEQzAwQzA3NEE1IC8qIEFWQ2FwdHVyZURldmljZU1h
bmFnZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQkwNzE5NDI3RjFEMDg4RjIxMDAyQUE1MUQgLyog
QVZGb3VuZGF0aW9uTUlNRVR5cGVDYWNoZS5tbSBpbiBTb3VyY2VzICovLAotCQkJCTA3MDM2M0U1
MTgxQTFDREMwMEMwNzRBNSAvKiBBVk1lZGlhQ2FwdHVyZVNvdXJjZS5tbSBpbiBTb3VyY2VzICov
LAogCQkJCUNEMzM2RjYxMTdGOUY2NDcwMERERENEMCAvKiBBVlRyYWNrUHJpdmF0ZUFWRk9iakNJ
bXBsLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMDcwMzYzRTcxODFBMUNEQzAwQzA3NEE1IC8qIEFW
VmlkZW9DYXB0dXJlU291cmNlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0E0NTAzMkYxOERCNzE3
MjAwMzc3QjM0IC8qIEJ1ZmZlcmVkTGluZVJlYWRlci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVE
ZXZpY2VNYW5hZ2VyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L0FWQ2FwdHVyZURldmljZU1hbmFnZXIubW0KaW5kZXggMGVmYzkyYTBmZWU5MDJhZDk2ODllNmNl
YWNjNTVhNjU3MmY0ZmJkOS4uOWUxOTVjYTk4OGRkMzdkNDNiZWE0NDg2ZGRlNTU5YzY3NDMxZGEw
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FW
Q2FwdHVyZURldmljZU1hbmFnZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIubW0KQEAgLTI4LDcgKzI4LDYgQEAK
IAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFVTRShBVkZPVU5EQVRJT04pCiAKLSNpbXBv
cnQgIkFWTWVkaWFDYXB0dXJlU291cmNlLmgiCiAjaW1wb3J0ICJBVlZpZGVvQ2FwdHVyZVNvdXJj
ZS5oIgogI2ltcG9ydCAiQXVkaW9Tb3VyY2VQcm92aWRlci5oIgogI2ltcG9ydCAiTG9nZ2luZy5o
IgpAQCAtNTUsMjAgKzU0LDEyIEBAIFNPRlRfTElOS19DTEFTUyhBVkZvdW5kYXRpb24sIEFWQ2Fw
dHVyZVNlc3Npb24pCiBTT0ZUX0xJTktfQ09OU1RBTlQoQVZGb3VuZGF0aW9uLCBBVk1lZGlhVHlw
ZUF1ZGlvLCBOU1N0cmluZyAqKQogU09GVF9MSU5LX0NPTlNUQU5UKEFWRm91bmRhdGlvbiwgQVZN
ZWRpYVR5cGVNdXhlZCwgTlNTdHJpbmcgKikKIFNPRlRfTElOS19DT05TVEFOVChBVkZvdW5kYXRp
b24sIEFWTWVkaWFUeXBlVmlkZW8sIE5TU3RyaW5nICopCi1TT0ZUX0xJTktfQ09OU1RBTlQoQVZG
b3VuZGF0aW9uLCBBVkNhcHR1cmVTZXNzaW9uUHJlc2V0MTI4MHg3MjAsIE5TU3RyaW5nICopCi1T
T0ZUX0xJTktfQ09OU1RBTlQoQVZGb3VuZGF0aW9uLCBBVkNhcHR1cmVTZXNzaW9uUHJlc2V0NjQw
eDQ4MCwgTlNTdHJpbmcgKikKLVNPRlRfTElOS19DT05TVEFOVChBVkZvdW5kYXRpb24sIEFWQ2Fw
dHVyZVNlc3Npb25QcmVzZXQzNTJ4Mjg4LCBOU1N0cmluZyAqKQotU09GVF9MSU5LX0NPTlNUQU5U
KEFWRm91bmRhdGlvbiwgQVZDYXB0dXJlU2Vzc2lvblByZXNldExvdywgTlNTdHJpbmcgKikKIFNP
RlRfTElOS19DT05TVEFOVChBVkZvdW5kYXRpb24sIEFWQ2FwdHVyZURldmljZVdhc0Nvbm5lY3Rl
ZE5vdGlmaWNhdGlvbiwgTlNTdHJpbmcgKikKIFNPRlRfTElOS19DT05TVEFOVChBVkZvdW5kYXRp
b24sIEFWQ2FwdHVyZURldmljZVdhc0Rpc2Nvbm5lY3RlZE5vdGlmaWNhdGlvbiwgTlNTdHJpbmcg
KikKIAogI2RlZmluZSBBVk1lZGlhVHlwZUF1ZGlvIGdldEFWTWVkaWFUeXBlQXVkaW8oKQogI2Rl
ZmluZSBBVk1lZGlhVHlwZU11eGVkIGdldEFWTWVkaWFUeXBlTXV4ZWQoKQogI2RlZmluZSBBVk1l
ZGlhVHlwZVZpZGVvIGdldEFWTWVkaWFUeXBlVmlkZW8oKQotI2RlZmluZSBBVkNhcHR1cmVTZXNz
aW9uUHJlc2V0MTI4MHg3MjAgZ2V0QVZDYXB0dXJlU2Vzc2lvblByZXNldDEyODB4NzIwKCkKLSNk
ZWZpbmUgQVZDYXB0dXJlU2Vzc2lvblByZXNldDY0MHg0ODAgZ2V0QVZDYXB0dXJlU2Vzc2lvblBy
ZXNldDY0MHg0ODAoKQotI2RlZmluZSBBVkNhcHR1cmVTZXNzaW9uUHJlc2V0MzUyeDI4OCBnZXRB
VkNhcHR1cmVTZXNzaW9uUHJlc2V0MzUyeDI4OCgpCi0jZGVmaW5lIEFWQ2FwdHVyZVNlc3Npb25Q
cmVzZXRMb3cgZ2V0QVZDYXB0dXJlU2Vzc2lvblByZXNldExvdygpCiAjZGVmaW5lIEFWQ2FwdHVy
ZURldmljZVdhc0Nvbm5lY3RlZE5vdGlmaWNhdGlvbiBnZXRBVkNhcHR1cmVEZXZpY2VXYXNDb25u
ZWN0ZWROb3RpZmljYXRpb24oKQogI2RlZmluZSBBVkNhcHR1cmVEZXZpY2VXYXNEaXNjb25uZWN0
ZWROb3RpZmljYXRpb24gZ2V0QVZDYXB0dXJlRGV2aWNlV2FzRGlzY29ubmVjdGVkTm90aWZpY2F0
aW9uKCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL0FWTWVkaWFDYXB0dXJlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggNWY0ODQ3NmRlNmQ2ZjJiZmFhNzVkMjVmZjViMWJmZjMwMzBlNDA1NS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDExNiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEFWTWVkaWFDYXB0dXJlU291cmNlX2gKLSNkZWZpbmUg
QVZNZWRpYUNhcHR1cmVTb3VyY2VfaAotCi0jaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgVVNF
KEFWRk9VTkRBVElPTikKLQotI2luY2x1ZGUgIkdlbmVyaWNUYXNrUXVldWUuaCIKLSNpbmNsdWRl
ICJSZWFsdGltZU1lZGlhU291cmNlLmgiCi0jaW5jbHVkZSAiVGltZXIuaCIKLSNpbmNsdWRlIDx3
dGYvRnVuY3Rpb24uaD4KLQotT0JKQ19DTEFTUyBBVkNhcHR1cmVBdWRpb0RhdGFPdXRwdXQ7Ci1P
QkpDX0NMQVNTIEFWQ2FwdHVyZUNvbm5lY3Rpb247Ci1PQkpDX0NMQVNTIEFWQ2FwdHVyZURldmlj
ZTsKLU9CSkNfQ0xBU1MgQVZDYXB0dXJlT3V0cHV0OwotT0JKQ19DTEFTUyBBVkNhcHR1cmVTZXNz
aW9uOwotT0JKQ19DTEFTUyBBVkNhcHR1cmVWaWRlb0RhdGFPdXRwdXQ7Ci1PQkpDX0NMQVNTIE5T
RXJyb3I7Ci1PQkpDX0NMQVNTIE5TTm90aWZpY2F0aW9uOwotT0JKQ19DTEFTUyBXZWJDb3JlQVZN
ZWRpYUNhcHR1cmVTb3VyY2VPYnNlcnZlcjsKLQotdHlwZWRlZiBzdHJ1Y3Qgb3BhcXVlQ01TYW1w
bGVCdWZmZXIgKkNNU2FtcGxlQnVmZmVyUmVmOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNs
YXNzIEFWTWVkaWFDYXB0dXJlU291cmNlOwotCi1jbGFzcyBBVk1lZGlhQ2FwdHVyZVNvdXJjZSA6
IHB1YmxpYyBSZWFsdGltZU1lZGlhU291cmNlIHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5BVk1l
ZGlhQ2FwdHVyZVNvdXJjZSgpOwotCi0gICAgdmlydHVhbCB2b2lkIGNhcHR1cmVPdXRwdXREaWRP
dXRwdXRTYW1wbGVCdWZmZXJGcm9tQ29ubmVjdGlvbihBVkNhcHR1cmVPdXRwdXQqLCBDTVNhbXBs
ZUJ1ZmZlclJlZiwgQVZDYXB0dXJlQ29ubmVjdGlvbiopID0gMDsKLQotICAgIHZvaWQgY2FwdHVy
ZVNlc3Npb25Jc1J1bm5pbmdEaWRDaGFuZ2UoYm9vbCk7Ci0gICAgdm9pZCBjYXB0dXJlU2Vzc2lv
blJ1bnRpbWVFcnJvcihSZXRhaW5QdHI8TlNFcnJvcj4pOwotCi0gICAgZW51bSBjbGFzcyBJbnRl
cnJ1cHRpb25SZWFzb24geyBOb25lLCBWaWRlb05vdEFsbG93ZWRJbkJhY2tncm91bmQsIEF1ZGlv
SW5Vc2UsIFZpZGVvSW5Vc2UsIFZpZGVvTm90QWxsb3dlZEluU2lkZUJ5U2lkZSB9OwotICAgIHZv
aWQgY2FwdHVyZVNlc3Npb25CZWdpbkludGVycnVwdGlvbihSZXRhaW5QdHI8TlNOb3RpZmljYXRp
b24+KTsKLSAgICB2b2lkIGNhcHR1cmVTZXNzaW9uRW5kSW50ZXJydXB0aW9uKFJldGFpblB0cjxO
U05vdGlmaWNhdGlvbj4pOwotCi0gICAgQVZDYXB0dXJlU2Vzc2lvbiAqc2Vzc2lvbigpIGNvbnN0
IHsgcmV0dXJuIG1fc2Vzc2lvbi5nZXQoKTsgfQotCi0gICAgY29uc3QgUmVhbHRpbWVNZWRpYVNv
dXJjZVNldHRpbmdzJiBzZXR0aW5ncygpIGNvbnN0IGZpbmFsOwotCi0gICAgdm9pZCBzdGFydFBy
b2R1Y2luZ0RhdGEoKSBmaW5hbDsKLSAgICB2b2lkIHN0b3BQcm9kdWNpbmdEYXRhKCkgZmluYWw7
Ci0KLXByb3RlY3RlZDoKLSAgICBBVk1lZGlhQ2FwdHVyZVNvdXJjZShBVkNhcHR1cmVEZXZpY2Uq
LCBjb25zdCBBdG9taWNTdHJpbmcmLCBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlKTsKLQotICAg
IHZpcnR1YWwgYm9vbCBzZXR1cENhcHR1cmVTZXNzaW9uKCkgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCBzaHV0ZG93bkNhcHR1cmVTZXNzaW9uKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVT
ZXR0aW5ncyhSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIGluaXRpYWxpemVDYXBhYmlsaXRpZXMoUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGll
cyYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZVN1cHBvcnRlZENvbnN0cmFpbnRz
KFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cyYpID0gMDsKLQotICAgIEFW
Q2FwdHVyZURldmljZSAqZGV2aWNlKCkgY29uc3QgeyByZXR1cm4gbV9kZXZpY2UuZ2V0KCk7IH0K
LQotICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cyYgc3VwcG9ydGVk
Q29uc3RyYWludHMoKTsKLSAgICBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVz
JiBjYXBhYmlsaXRpZXMoKSBjb25zdCBmaW5hbDsKLQotICAgIHZvaWQgc2V0VmlkZW9TYW1wbGVC
dWZmZXJEZWxlZ2F0ZShBVkNhcHR1cmVWaWRlb0RhdGFPdXRwdXQqKTsKLSAgICB2b2lkIHNldEF1
ZGlvU2FtcGxlQnVmZmVyRGVsZWdhdGUoQVZDYXB0dXJlQXVkaW9EYXRhT3V0cHV0Kik7Ci0KLXBy
aXZhdGU6Ci0gICAgYm9vbCBzZXR1cFNlc3Npb24oKTsKLQotICAgIHZvaWQgYmVnaW5Db25maWd1
cmF0aW9uKCkgZmluYWw7Ci0gICAgdm9pZCBjb21taXRDb25maWd1cmF0aW9uKCkgZmluYWw7Ci0K
LSAgICBib29sIGlzQ2FwdHVyZVNvdXJjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0K
LQotICAgIGJvb2wgaW50ZXJydXB0ZWQoKSBjb25zdCBmaW5hbDsKLQotICAgIHZvaWQgaW5pdGlh
bGl6ZVNldHRpbmdzKCk7Ci0gICAgdm9pZCBpbml0aWFsaXplQ2FwYWJpbGl0aWVzKCk7Ci0KLSAg
ICBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MgbV9jdXJyZW50U2V0dGluZ3M7Ci0gICAgUmVh
bHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzIG1fc3VwcG9ydGVkQ29uc3RyYWlu
dHM7Ci0gICAgUmV0YWluUHRyPFdlYkNvcmVBVk1lZGlhQ2FwdHVyZVNvdXJjZU9ic2VydmVyPiBt
X29iamNPYnNlcnZlcjsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVhbHRpbWVNZWRpYVNvdXJjZUNh
cGFiaWxpdGllcz4gbV9jYXBhYmlsaXRpZXM7Ci0gICAgUmV0YWluUHRyPEFWQ2FwdHVyZVNlc3Np
b24+IG1fc2Vzc2lvbjsKLSAgICBSZXRhaW5QdHI8QVZDYXB0dXJlRGV2aWNlPiBtX2RldmljZTsK
LSAgICBJbnRlcnJ1cHRpb25SZWFzb24gbV9pbnRlcnJ1cHRpb24geyBJbnRlcnJ1cHRpb25SZWFz
b246Ok5vbmUgfTsKLSAgICBib29sIG1faXNSdW5uaW5nIHsgZmFsc2UgfTsKLX07Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCi0KLSNl
bmRpZiAvLyBBVk1lZGlhQ2FwdHVyZVNvdXJjZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5o
CmluZGV4IGY4ZGNkMDBhZmUyMzBhMmY1MjBmZGRmODNhMDVkYjk1NmQwY2YzMWEuLjc0OGU0ODAw
YzU1MWY4OTUyN2JjYTYwZWI5NjM3YzQ0OTVmNGU3NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNv
dXJjZS5oCkBAIC0yNywyMyArMjcsMjQgQEAKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYm
IFVTRShBVkZPVU5EQVRJT04pCiAKLSNpbmNsdWRlICJBVk1lZGlhQ2FwdHVyZVNvdXJjZS5oIgog
I2luY2x1ZGUgIk9yaWVudGF0aW9uTm90aWZpZXIuaCIKKyNpbmNsdWRlICJSZWFsdGltZU1lZGlh
U291cmNlLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCi1PQkpDX0NMQVNT
IENBTGF5ZXI7Ci1PQkpDX0NMQVNTIEFWRnJhbWVSYXRlUmFuZ2U7Cit0eXBlZGVmIHN0cnVjdCBv
cGFxdWVDTVNhbXBsZUJ1ZmZlciogQ01TYW1wbGVCdWZmZXJSZWY7CiAKLXR5cGVkZWYgc3RydWN0
IENHSW1hZ2UgKkNHSW1hZ2VSZWY7Ci10eXBlZGVmIGNvbnN0IHN0cnVjdCBvcGFxdWVDTUZvcm1h
dERlc2NyaXB0aW9uICpDTUZvcm1hdERlc2NyaXB0aW9uUmVmOwotdHlwZWRlZiBzdHJ1Y3Qgb3Bh
cXVlQ01TYW1wbGVCdWZmZXIgKkNNU2FtcGxlQnVmZmVyUmVmOworT0JKQ19DTEFTUyBBVkNhcHR1
cmVDb25uZWN0aW9uOworT0JKQ19DTEFTUyBBVkNhcHR1cmVEZXZpY2U7CitPQkpDX0NMQVNTIEFW
Q2FwdHVyZU91dHB1dDsKK09CSkNfQ0xBU1MgQVZDYXB0dXJlU2Vzc2lvbjsKK09CSkNfQ0xBU1Mg
QVZDYXB0dXJlVmlkZW9EYXRhT3V0cHV0OworT0JKQ19DTEFTUyBOU0Vycm9yOworT0JKQ19DTEFT
UyBOU05vdGlmaWNhdGlvbjsKK09CSkNfQ0xBU1MgV2ViQ29yZUFWVmlkZW9DYXB0dXJlU291cmNl
T2JzZXJ2ZXI7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgRmxvYXRSZWN0OwotY2xh
c3MgR3JhcGhpY3NDb250ZXh0OwotY2xhc3MgUGl4ZWxCdWZmZXJDb25mb3JtZXJDVjsKLQotY2xh
c3MgQVZWaWRlb0NhcHR1cmVTb3VyY2UgOiBwdWJsaWMgQVZNZWRpYUNhcHR1cmVTb3VyY2UsIHBy
aXZhdGUgT3JpZW50YXRpb25Ob3RpZmllcjo6T2JzZXJ2ZXIgeworY2xhc3MgQVZWaWRlb0NhcHR1
cmVTb3VyY2UgOiBwdWJsaWMgUmVhbHRpbWVNZWRpYVNvdXJjZSwgcHJpdmF0ZSBPcmllbnRhdGlv
bk5vdGlmaWVyOjpPYnNlcnZlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIENhcHR1cmVTb3VyY2VP
ckVycm9yIGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmLCBjb25zdCBNZWRpYUNvbnN0cmFpbnRz
Kik7CiAKQEAgLTUyLDQzICs1Myw1OSBAQCBwdWJsaWM6CiAgICAgaW50MzJfdCB3aWR0aCgpIGNv
bnN0IHsgcmV0dXJuIG1fd2lkdGg7IH0KICAgICBpbnQzMl90IGhlaWdodCgpIGNvbnN0IHsgcmV0
dXJuIG1faGVpZ2h0OyB9CiAKKyAgICBlbnVtIGNsYXNzIEludGVycnVwdGlvblJlYXNvbiB7IE5v
bmUsIFZpZGVvTm90QWxsb3dlZEluQmFja2dyb3VuZCwgQXVkaW9JblVzZSwgVmlkZW9JblVzZSwg
VmlkZW9Ob3RBbGxvd2VkSW5TaWRlQnlTaWRlIH07CisgICAgdm9pZCBjYXB0dXJlU2Vzc2lvbkJl
Z2luSW50ZXJydXB0aW9uKFJldGFpblB0cjxOU05vdGlmaWNhdGlvbj4pOworICAgIHZvaWQgY2Fw
dHVyZVNlc3Npb25FbmRJbnRlcnJ1cHRpb24oUmV0YWluUHRyPE5TTm90aWZpY2F0aW9uPik7CisK
KyAgICBBVkNhcHR1cmVTZXNzaW9uKiBzZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9zZXNzaW9u
LmdldCgpOyB9CisKKyAgICB2b2lkIGNhcHR1cmVTZXNzaW9uSXNSdW5uaW5nRGlkQ2hhbmdlKGJv
b2wpOworICAgIHZvaWQgY2FwdHVyZVNlc3Npb25SdW50aW1lRXJyb3IoUmV0YWluUHRyPE5TRXJy
b3I+KTsKKyAgICB2b2lkIGNhcHR1cmVPdXRwdXREaWRPdXRwdXRTYW1wbGVCdWZmZXJGcm9tQ29u
bmVjdGlvbihBVkNhcHR1cmVPdXRwdXQqLCBDTVNhbXBsZUJ1ZmZlclJlZiwgQVZDYXB0dXJlQ29u
bmVjdGlvbiopOworCiBwcml2YXRlOgogICAgIEFWVmlkZW9DYXB0dXJlU291cmNlKEFWQ2FwdHVy
ZURldmljZSosIGNvbnN0IEF0b21pY1N0cmluZyYpOwogICAgIHZpcnR1YWwgfkFWVmlkZW9DYXB0
dXJlU291cmNlKCk7CiAKLSAgICBib29sIHNldHVwQ2FwdHVyZVNlc3Npb24oKSBmaW5hbDsKLSAg
ICB2b2lkIHNodXRkb3duQ2FwdHVyZVNlc3Npb24oKSBmaW5hbDsKLQotICAgIHZvaWQgdXBkYXRl
U2V0dGluZ3MoUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJikgZmluYWw7CisgICAgYm9vbCBz
ZXR1cFNlc3Npb24oKTsKKyAgICBib29sIHNldHVwQ2FwdHVyZVNlc3Npb24oKTsKKyAgICB2b2lk
IHNodXRkb3duQ2FwdHVyZVNlc3Npb24oKTsKIAorICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3Vy
Y2VDYXBhYmlsaXRpZXMmIGNhcGFiaWxpdGllcygpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgYXBw
bHlTaXplQW5kRnJhbWVSYXRlKHN0ZDo6b3B0aW9uYWw8aW50PiB3aWR0aCwgc3RkOjpvcHRpb25h
bDxpbnQ+IGhlaWdodCwgc3RkOjpvcHRpb25hbDxkb3VibGU+KSBmaW5hbDsKICAgICBib29sIGFw
cGx5U2l6ZShjb25zdCBJbnRTaXplJikgZmluYWw7CiAgICAgYm9vbCBhcHBseUZyYW1lUmF0ZShk
b3VibGUpIGZpbmFsOwotICAgIGJvb2wgc2V0UHJlc2V0KE5TU3RyaW5nKik7Ci0KKyAgICBjb25z
dCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIHNldHRpbmdzKCkgY29uc3QgZmluYWw7Cisg
ICAgdm9pZCBzdGFydFByb2R1Y2luZ0RhdGEoKSBmaW5hbDsKKyAgICB2b2lkIHN0b3BQcm9kdWNp
bmdEYXRhKCkgZmluYWw7CisgICAgYm9vbCBzdXBwb3J0c1NpemVBbmRGcmFtZVJhdGUoc3RkOjpv
cHRpb25hbDxpbnQ+IHdpZHRoLCBzdGQ6Om9wdGlvbmFsPGludD4gaGVpZ2h0LCBzdGQ6Om9wdGlv
bmFsPGRvdWJsZT4pIGZpbmFsOworICAgIHZvaWQgc2V0dGluZ3NEaWRDaGFuZ2UoKSBmaW5hbDsK
ICAgICB2b2lkIG1vbml0b3JPcmllbnRhdGlvbihPcmllbnRhdGlvbk5vdGlmaWVyJikgZmluYWw7
CisgICAgdm9pZCBiZWdpbkNvbmZpZ3VyYXRpb24oKSBmaW5hbDsKKyAgICB2b2lkIGNvbW1pdENv
bmZpZ3VyYXRpb24oKSBmaW5hbDsKKyAgICBib29sIGlzQ2FwdHVyZVNvdXJjZSgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIHRydWU7IH0KKyAgICBib29sIGludGVycnVwdGVkKCkgY29uc3QgZmluYWw7
CisKKyAgICBib29sIHNldFByZXNldChOU1N0cmluZyopOwogICAgIHZvaWQgY29tcHV0ZVNhbXBs
ZVJvdGF0aW9uKCk7CiAKICAgICBib29sIGlzRnJhbWVSYXRlU3VwcG9ydGVkKGRvdWJsZSBmcmFt
ZVJhdGUpOwogCi0gICAgTlNTdHJpbmcgKmJlc3RTZXNzaW9uUHJlc2V0Rm9yVmlkZW9EaW1lbnNp
b25zKHN0ZDo6b3B0aW9uYWw8aW50PiB3aWR0aCwgc3RkOjpvcHRpb25hbDxpbnQ+IGhlaWdodCk7
Ci0gICAgYm9vbCBzdXBwb3J0c1NpemVBbmRGcmFtZVJhdGUoc3RkOjpvcHRpb25hbDxpbnQ+IHdp
ZHRoLCBzdGQ6Om9wdGlvbmFsPGludD4gaGVpZ2h0LCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4pIGZp
bmFsOwotCi0gICAgdm9pZCBpbml0aWFsaXplQ2FwYWJpbGl0aWVzKFJlYWx0aW1lTWVkaWFTb3Vy
Y2VDYXBhYmlsaXRpZXMmKSBmaW5hbDsKLSAgICB2b2lkIGluaXRpYWxpemVTdXBwb3J0ZWRDb25z
dHJhaW50cyhSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMmKSBmaW5hbDsK
KyAgICBOU1N0cmluZyogYmVzdFNlc3Npb25QcmVzZXRGb3JWaWRlb0RpbWVuc2lvbnMoc3RkOjpv
cHRpb25hbDxpbnQ+IHdpZHRoLCBzdGQ6Om9wdGlvbmFsPGludD4gaGVpZ2h0KTsKIAogICAgIC8v
IE9yaWVudGF0aW9uTm90aWZpZXI6Ok9ic2VydmVyIEFQSQogICAgIHZvaWQgb3JpZW50YXRpb25D
aGFuZ2VkKGludCBvcmllbnRhdGlvbikgZmluYWw7CiAKICAgICBib29sIHNldEZyYW1lUmF0ZUNv
bnN0cmFpbnQoZG91YmxlIG1pbkZyYW1lUmF0ZSwgZG91YmxlIG1heEZyYW1lUmF0ZSk7CiAKLSAg
ICB2b2lkIGNhcHR1cmVPdXRwdXREaWRPdXRwdXRTYW1wbGVCdWZmZXJGcm9tQ29ubmVjdGlvbihB
VkNhcHR1cmVPdXRwdXQqLCBDTVNhbXBsZUJ1ZmZlclJlZiwgQVZDYXB0dXJlQ29ubmVjdGlvbiop
IGZpbmFsOwogICAgIHZvaWQgcHJvY2Vzc05ld0ZyYW1lKFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZl
clJlZj4sIFJldGFpblB0cjxBVkNhcHR1cmVDb25uZWN0aW9uPik7CiAgICAgSW50U2l6ZSBzaXpl
Rm9yUHJlc2V0KE5TU3RyaW5nKik7CiAKICAgICB1c2luZyBWaWRlb1ByZXNldE1hcCA9IEhhc2hN
YXA8U3RyaW5nLCBJbnRTaXplPjsKICAgICBWaWRlb1ByZXNldE1hcCYgdmlkZW9QcmVzZXRzKCkg
eyByZXR1cm4gbV9zdXBwb3J0ZWRQcmVzZXRzOyB9CiAKKyAgICBBVkNhcHR1cmVEZXZpY2UqIGRl
dmljZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGV2aWNlLmdldCgpOyB9CisKICAgICBSZXRhaW5QdHI8
TlNTdHJpbmc+IG1fcGVuZGluZ1ByZXNldDsKICAgICBSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJS
ZWY+IG1fYnVmZmVyOwogICAgIFJldGFpblB0cjxBVkNhcHR1cmVWaWRlb0RhdGFPdXRwdXQ+IG1f
dmlkZW9PdXRwdXQ7CkBAIC0xMDEsNiArMTE4LDE1IEBAIHByaXZhdGU6CiAgICAgTWVkaWFTYW1w
bGU6OlZpZGVvUm90YXRpb24gbV9zYW1wbGVSb3RhdGlvbiB7IE1lZGlhU2FtcGxlOjpWaWRlb1Jv
dGF0aW9uOjpOb25lIH07CiAKICAgICBWaWRlb1ByZXNldE1hcCBtX3N1cHBvcnRlZFByZXNldHM7
CisKKyAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdz
PiBtX2N1cnJlbnRTZXR0aW5nczsKKyAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8UmVhbHRpbWVN
ZWRpYVNvdXJjZUNhcGFiaWxpdGllcz4gbV9jYXBhYmlsaXRpZXM7CisgICAgUmV0YWluUHRyPFdl
YkNvcmVBVlZpZGVvQ2FwdHVyZVNvdXJjZU9ic2VydmVyPiBtX29iamNPYnNlcnZlcjsKKyAgICBS
ZXRhaW5QdHI8QVZDYXB0dXJlU2Vzc2lvbj4gbV9zZXNzaW9uOworICAgIFJldGFpblB0cjxBVkNh
cHR1cmVEZXZpY2U+IG1fZGV2aWNlOworICAgIEludGVycnVwdGlvblJlYXNvbiBtX2ludGVycnVw
dGlvbiB7IEludGVycnVwdGlvblJlYXNvbjo6Tm9uZSB9OworICAgIGJvb2wgbV9pc1J1bm5pbmcg
eyBmYWxzZSB9OworCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3Vy
Y2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0Nh
cHR1cmVTb3VyY2UubW0KaW5kZXggZmFjYzM4ZjA4YTg4MDlkMmIzYjgzMzlmMjlmZTc5NDllMjdi
NzZlOS4uMTdlMDU1NmQ5YzY3ODEwMjkzZWUyODlkMWU5ZjAyYTdlY2NhMjA0ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJl
U291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9B
VlZpZGVvQ2FwdHVyZVNvdXJjZS5tbQpAQCAtMjgsMzAgKzI4LDIxIEBACiAKICNpZiBFTkFCTEUo
TUVESUFfU1RSRUFNKSAmJiBVU0UoQVZGT1VOREFUSU9OKQogCi0jaW1wb3J0ICJBVkNhcHR1cmVE
ZXZpY2VNYW5hZ2VyLmgiCi0jaW1wb3J0ICJHcmFwaGljc0NvbnRleHRDRy5oIgogI2ltcG9ydCAi
SW1hZ2VCdWZmZXIuaCIKICNpbXBvcnQgIkludFJlY3QuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIK
ICNpbXBvcnQgIk1lZGlhQ29uc3RyYWludHMuaCIKICNpbXBvcnQgIk1lZGlhU2FtcGxlQVZGT2Jq
Qy5oIgotI2ltcG9ydCAiTm90SW1wbGVtZW50ZWQuaCIKLSNpbXBvcnQgIlBpeGVsQnVmZmVyQ29u
Zm9ybWVyQ1YuaCIKICNpbXBvcnQgIlBsYXRmb3JtTGF5ZXIuaCIKICNpbXBvcnQgIlJlYWx0aW1l
TWVkaWFTb3VyY2VDZW50ZXJNYWMuaCIKICNpbXBvcnQgIlJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0
aW5ncy5oIgotI2ltcG9ydCAiV2ViQWN0aW9uRGlzYWJsaW5nQ0FMYXllckRlbGVnYXRlLmgiCiAj
aW1wb3J0IDxBVkZvdW5kYXRpb24vQVZDYXB0dXJlRGV2aWNlLmg+CiAjaW1wb3J0IDxBVkZvdW5k
YXRpb24vQVZDYXB0dXJlSW5wdXQuaD4KICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVkNhcHR1cmVP
dXRwdXQuaD4KICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVkNhcHR1cmVTZXNzaW9uLmg+CisjaW1w
b3J0IDxBVkZvdW5kYXRpb24vQVZFcnJvci5oPgogI2ltcG9ydCA8b2JqYy9ydW50aW1lLmg+CiAK
LSNpZiBQTEFURk9STShJT1MpCi0jaW5jbHVkZSAiV2ViQ29yZVRocmVhZC5oIgotI2luY2x1ZGUg
IldlYkNvcmVUaHJlYWRSdW4uaCIKLSNlbmRpZgotCiAjaW1wb3J0IDxwYWwvY2YvQ29yZU1lZGlh
U29mdExpbmsuaD4KICNpbXBvcnQgIkNvcmVWaWRlb1NvZnRMaW5rLmgiCiAKQEAgLTYyLDYgKzUz
LDcgQEAgdHlwZWRlZiBBVkNhcHR1cmVEZXZpY2VJbnB1dCBBVkNhcHR1cmVEZXZpY2VJbnB1dFR5
cGU7CiB0eXBlZGVmIEFWQ2FwdHVyZU91dHB1dCBBVkNhcHR1cmVPdXRwdXRUeXBlOwogdHlwZWRl
ZiBBVkNhcHR1cmVWaWRlb0RhdGFPdXRwdXQgQVZDYXB0dXJlVmlkZW9EYXRhT3V0cHV0VHlwZTsK
IHR5cGVkZWYgQVZGcmFtZVJhdGVSYW5nZSBBVkZyYW1lUmF0ZVJhbmdlVHlwZTsKK3R5cGVkZWYg
QVZDYXB0dXJlU2Vzc2lvbiBBVkNhcHR1cmVTZXNzaW9uVHlwZTsKIAogU09GVF9MSU5LX0ZSQU1F
V09SS19PUFRJT05BTChBVkZvdW5kYXRpb24pCiAKQEAgLTcyLDYgKzY0LDcgQEAgU09GVF9MSU5L
X0NMQVNTKEFWRm91bmRhdGlvbiwgQVZDYXB0dXJlRGV2aWNlSW5wdXQpCiBTT0ZUX0xJTktfQ0xB
U1MoQVZGb3VuZGF0aW9uLCBBVkNhcHR1cmVPdXRwdXQpCiBTT0ZUX0xJTktfQ0xBU1MoQVZGb3Vu
ZGF0aW9uLCBBVkNhcHR1cmVWaWRlb0RhdGFPdXRwdXQpCiBTT0ZUX0xJTktfQ0xBU1MoQVZGb3Vu
ZGF0aW9uLCBBVkZyYW1lUmF0ZVJhbmdlKQorU09GVF9MSU5LX0NMQVNTKEFWRm91bmRhdGlvbiwg
QVZDYXB0dXJlU2Vzc2lvbikKIAogI2RlZmluZSBBVkNhcHR1cmVDb25uZWN0aW9uIGdldEFWQ2Fw
dHVyZUNvbm5lY3Rpb25DbGFzcygpCiAjZGVmaW5lIEFWQ2FwdHVyZURldmljZSBnZXRBVkNhcHR1
cmVEZXZpY2VDbGFzcygpCkBAIC05NywxMyArOTAsNDAgQEAgU09GVF9MSU5LX0NPTlNUQU5UX01B
WV9GQUlMKEFWRm91bmRhdGlvbiwgQVZDYXB0dXJlU2Vzc2lvblByZXNldDMyMHgyNDAsIE5TU3Ry
aW4KICNpZiBQTEFURk9STShJT1MpCiBTT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUwoQVZGb3Vu
ZGF0aW9uLCBBVkNhcHR1cmVTZXNzaW9uUHJlc2V0Mzg0MHgyMTYwLCBOU1N0cmluZyAqKQogU09G
VF9MSU5LX0NPTlNUQU5UX01BWV9GQUlMKEFWRm91bmRhdGlvbiwgQVZDYXB0dXJlU2Vzc2lvblBy
ZXNldDE5MjB4MTA4MCwgTlNTdHJpbmcgKikKK1NPRlRfTElOS19QT0lOVEVSX09QVElPTkFMKEFW
Rm91bmRhdGlvbiwgQVZDYXB0dXJlU2Vzc2lvblJ1bnRpbWVFcnJvck5vdGlmaWNhdGlvbiwgTlNT
dHJpbmcgKikKK1NPRlRfTElOS19QT0lOVEVSX09QVElPTkFMKEFWRm91bmRhdGlvbiwgQVZDYXB0
dXJlU2Vzc2lvbldhc0ludGVycnVwdGVkTm90aWZpY2F0aW9uLCBOU1N0cmluZyAqKQorU09GVF9M
SU5LX1BPSU5URVJfT1BUSU9OQUwoQVZGb3VuZGF0aW9uLCBBVkNhcHR1cmVTZXNzaW9uSW50ZXJy
dXB0aW9uRW5kZWROb3RpZmljYXRpb24sIE5TU3RyaW5nICopCitTT0ZUX0xJTktfUE9JTlRFUl9P
UFRJT05BTChBVkZvdW5kYXRpb24sIEFWQ2FwdHVyZVNlc3Npb25JbnRlcnJ1cHRpb25SZWFzb25L
ZXksIE5TU3RyaW5nICopCitTT0ZUX0xJTktfUE9JTlRFUl9PUFRJT05BTChBVkZvdW5kYXRpb24s
IEFWQ2FwdHVyZVNlc3Npb25FcnJvcktleSwgTlNTdHJpbmcgKikKIAogI2RlZmluZSBBVkNhcHR1
cmVTZXNzaW9uUHJlc2V0Mzg0MHgyMTYwIGdldEFWQ2FwdHVyZVNlc3Npb25QcmVzZXQzODQweDIx
NjAoKQogI2RlZmluZSBBVkNhcHR1cmVTZXNzaW9uUHJlc2V0MTkyMHgxMDgwIGdldEFWQ2FwdHVy
ZVNlc3Npb25QcmVzZXQxOTIweDEwODAoKQorI2RlZmluZSBBVkNhcHR1cmVTZXNzaW9uUnVudGlt
ZUVycm9yTm90aWZpY2F0aW9uIGdldEFWQ2FwdHVyZVNlc3Npb25SdW50aW1lRXJyb3JOb3RpZmlj
YXRpb24oKQorI2RlZmluZSBBVkNhcHR1cmVTZXNzaW9uV2FzSW50ZXJydXB0ZWROb3RpZmljYXRp
b24gZ2V0QVZDYXB0dXJlU2Vzc2lvbldhc0ludGVycnVwdGVkTm90aWZpY2F0aW9uKCkKKyNkZWZp
bmUgQVZDYXB0dXJlU2Vzc2lvbkludGVycnVwdGlvbkVuZGVkTm90aWZpY2F0aW9uIGdldEFWQ2Fw
dHVyZVNlc3Npb25JbnRlcnJ1cHRpb25FbmRlZE5vdGlmaWNhdGlvbigpCisjZGVmaW5lIEFWQ2Fw
dHVyZVNlc3Npb25JbnRlcnJ1cHRpb25SZWFzb25LZXkgZ2V0QVZDYXB0dXJlU2Vzc2lvbkludGVy
cnVwdGlvblJlYXNvbktleSgpCisjZGVmaW5lIEFWQ2FwdHVyZVNlc3Npb25FcnJvcktleSBnZXRB
VkNhcHR1cmVTZXNzaW9uRXJyb3JLZXkoKQogI2VuZGlmCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCitAaW50ZXJmYWNlIFdlYkNvcmVBVlZpZGVvQ2FwdHVyZVNvdXJjZU9ic2VydmVyIDog
TlNPYmplY3Q8QVZDYXB0dXJlVmlkZW9EYXRhT3V0cHV0U2FtcGxlQnVmZmVyRGVsZWdhdGU+IHsK
KyAgICBBVlZpZGVvQ2FwdHVyZVNvdXJjZSogbV9jYWxsYmFjazsKK30KKworLShpZClpbml0V2l0
aENhbGxiYWNrOihBVlZpZGVvQ2FwdHVyZVNvdXJjZSopY2FsbGJhY2s7CistKHZvaWQpZGlzY29u
bmVjdDsKKy0odm9pZClhZGROb3RpZmljYXRpb25PYnNlcnZlcnM7CistKHZvaWQpcmVtb3ZlTm90
aWZpY2F0aW9uT2JzZXJ2ZXJzOworLSh2b2lkKWNhcHR1cmVPdXRwdXQ6KEFWQ2FwdHVyZU91dHB1
dFR5cGUqKWNhcHR1cmVPdXRwdXQgZGlkT3V0cHV0U2FtcGxlQnVmZmVyOihDTVNhbXBsZUJ1ZmZl
clJlZilzYW1wbGVCdWZmZXIgZnJvbUNvbm5lY3Rpb246KEFWQ2FwdHVyZUNvbm5lY3Rpb25UeXBl
Kiljb25uZWN0aW9uOworLSh2b2lkKW9ic2VydmVWYWx1ZUZvcktleVBhdGg6a2V5UGF0aCBvZk9i
amVjdDooaWQpb2JqZWN0IGNoYW5nZTooTlNEaWN0aW9uYXJ5KiljaGFuZ2UgY29udGV4dDoodm9p
ZCopY29udGV4dDsKKyNpZiBQTEFURk9STShJT1MpCistKHZvaWQpc2Vzc2lvblJ1bnRpbWVFcnJv
cjooTlNOb3RpZmljYXRpb24qKW5vdGlmaWNhdGlvbjsKKy0odm9pZCliZWdpblNlc3Npb25JbnRl
cnJ1cHRlZDooTlNOb3RpZmljYXRpb24qKW5vdGlmaWNhdGlvbjsKKy0odm9pZCllbmRTZXNzaW9u
SW50ZXJydXB0ZWQ6KE5TTm90aWZpY2F0aW9uKilub3RpZmljYXRpb247CisjZW5kaWYKK0BlbmQK
KwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtMTEyLDYgKzEz
MiwxNiBAQCBjb25zdCBPU1R5cGUgdmlkZW9DYXB0dXJlRm9ybWF0ID0ga0NWUGl4ZWxGb3JtYXRU
eXBlXzQyMFlwQ2JDcjhQbGFuYXI7CiBjb25zdCBPU1R5cGUgdmlkZW9DYXB0dXJlRm9ybWF0ID0g
a0NWUGl4ZWxGb3JtYXRUeXBlXzQyMFlwQ2JDcjhCaVBsYW5hckZ1bGxSYW5nZTsKICNlbmRpZgog
CitzdGF0aWMgZGlzcGF0Y2hfcXVldWVfdCBnbG9iYVZpZGVvQ2FwdHVyZVNlcmlhbFF1ZXVlKCkK
K3sKKyAgICBzdGF0aWMgZGlzcGF0Y2hfcXVldWVfdCBnbG9iYWxRdWV1ZTsKKyAgICBzdGF0aWMg
ZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKKyAgICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4s
IF57CisgICAgICAgIGdsb2JhbFF1ZXVlID0gZGlzcGF0Y2hfcXVldWVfY3JlYXRlX3dpdGhfdGFy
Z2V0KCJXZWJDb3JlQVZWaWRlb0NhcHR1cmVTb3VyY2UgdmlkZW8gY2FwdHVyZSBxdWV1ZSIsIERJ
U1BBVENIX1FVRVVFX1NFUklBTCwgZGlzcGF0Y2hfZ2V0X2dsb2JhbF9xdWV1ZShESVNQQVRDSF9R
VUVVRV9QUklPUklUWV9ISUdILCAwKSk7CisgICAgfSk7CisgICAgcmV0dXJuIGdsb2JhbFF1ZXVl
OworfQorCiBDYXB0dXJlU291cmNlT3JFcnJvciBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6Y3JlYXRl
KGNvbnN0IEF0b21pY1N0cmluZyYgaWQsIGNvbnN0IE1lZGlhQ29uc3RyYWludHMqIGNvbnN0cmFp
bnRzKQogewogICAgIEFWQ2FwdHVyZURldmljZVR5cGVkZWYgKmRldmljZSA9IFtnZXRBVkNhcHR1
cmVEZXZpY2VDbGFzcygpIGRldmljZVdpdGhVbmlxdWVJRDppZF07CkBAIC0xMjksNyArMTU5LDkg
QEAgQ2FwdHVyZVNvdXJjZU9yRXJyb3IgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OmNyZWF0ZShjb25z
dCBBdG9taWNTdHJpbmcmIGlkLCBjb25zdAogfQogCiBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6QVZW
aWRlb0NhcHR1cmVTb3VyY2UoQVZDYXB0dXJlRGV2aWNlVHlwZWRlZiogZGV2aWNlLCBjb25zdCBB
dG9taWNTdHJpbmcmIGlkKQotICAgIDogQVZNZWRpYUNhcHR1cmVTb3VyY2UoZGV2aWNlLCBpZCwg
VHlwZTo6VmlkZW8pCisgICAgOiBSZWFsdGltZU1lZGlhU291cmNlKGlkLCBUeXBlOjpWaWRlbywg
ZGV2aWNlLmxvY2FsaXplZE5hbWUpCisgICAgLCBtX29iamNPYnNlcnZlcihhZG9wdE5TKFtbV2Vi
Q29yZUFWVmlkZW9DYXB0dXJlU291cmNlT2JzZXJ2ZXIgYWxsb2NdIGluaXRXaXRoQ2FsbGJhY2s6
dGhpc10pKQorICAgICwgbV9kZXZpY2UoZGV2aWNlKQogewogICAgIHN0cnVjdCBWaWRlb1ByZXNl
dCB7CiAgICAgICAgIGJvb2wgc3ltYm9sQXZhaWxhYmxlOwpAQCAtMTU3LDEyICsxODksNjAgQEAg
QVZWaWRlb0NhcHR1cmVTb3VyY2U6OkFWVmlkZW9DYXB0dXJlU291cmNlKEFWQ2FwdHVyZURldmlj
ZVR5cGVkZWYqIGRldmljZSwgY29uc3QKIAogICAgICAgICBwcmVzZXRzTWFwLT5hZGQoU3RyaW5n
KHByZXNldC5uYW1lKSwgSW50U2l6ZShwcmVzZXQud2lkdGgsIHByZXNldC5oZWlnaHQpKTsKICAg
ICB9CisKKyNpZiBQTEFURk9STShJT1MpCisgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxp
bnQ+KEludGVycnVwdGlvblJlYXNvbjo6VmlkZW9Ob3RBbGxvd2VkSW5CYWNrZ3JvdW5kKSA9PSBz
dGF0aWNfY2FzdDxpbnQ+KEFWQ2FwdHVyZVNlc3Npb25JbnRlcnJ1cHRpb25SZWFzb25WaWRlb0Rl
dmljZU5vdEF2YWlsYWJsZUluQmFja2dyb3VuZCksICJJbnRlcnJ1cHRpb25SZWFzb246OlZpZGVv
Tm90QWxsb3dlZEluQmFja2dyb3VuZCBpcyBub3QgQVZDYXB0dXJlU2Vzc2lvbkludGVycnVwdGlv
blJlYXNvblZpZGVvRGV2aWNlTm90QXZhaWxhYmxlSW5CYWNrZ3JvdW5kIGFzIGV4cGVjdGVkIik7
CisgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxpbnQ+KEludGVycnVwdGlvblJlYXNvbjo6
VmlkZW9Ob3RBbGxvd2VkSW5TaWRlQnlTaWRlKSA9PSBBVkNhcHR1cmVTZXNzaW9uSW50ZXJydXB0
aW9uUmVhc29uVmlkZW9EZXZpY2VOb3RBdmFpbGFibGVXaXRoTXVsdGlwbGVGb3JlZ3JvdW5kQXBw
cywgIkludGVycnVwdGlvblJlYXNvbjo6VmlkZW9Ob3RBbGxvd2VkSW5TaWRlQnlTaWRlIGlzIG5v
dCBBVkNhcHR1cmVTZXNzaW9uSW50ZXJydXB0aW9uUmVhc29uVmlkZW9EZXZpY2VOb3RBdmFpbGFi
bGVXaXRoTXVsdGlwbGVGb3JlZ3JvdW5kQXBwcyBhcyBleHBlY3RlZCIpOworICAgIHN0YXRpY19h
c3NlcnQoc3RhdGljX2Nhc3Q8aW50PihJbnRlcnJ1cHRpb25SZWFzb246OlZpZGVvSW5Vc2UpID09
IEFWQ2FwdHVyZVNlc3Npb25JbnRlcnJ1cHRpb25SZWFzb25WaWRlb0RldmljZUluVXNlQnlBbm90
aGVyQ2xpZW50LCAiSW50ZXJydXB0aW9uUmVhc29uOjpWaWRlb0luVXNlIGlzIG5vdCBBVkNhcHR1
cmVTZXNzaW9uSW50ZXJydXB0aW9uUmVhc29uVmlkZW9EZXZpY2VJblVzZUJ5QW5vdGhlckNsaWVu
dCBhcyBleHBlY3RlZCIpOworICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8aW50PihJbnRl
cnJ1cHRpb25SZWFzb246OkF1ZGlvSW5Vc2UpID09IEFWQ2FwdHVyZVNlc3Npb25JbnRlcnJ1cHRp
b25SZWFzb25BdWRpb0RldmljZUluVXNlQnlBbm90aGVyQ2xpZW50LCAiSW50ZXJydXB0aW9uUmVh
c29uOjpBdWRpb0luVXNlIGlzIG5vdCBBVkNhcHR1cmVTZXNzaW9uSW50ZXJydXB0aW9uUmVhc29u
QXVkaW9EZXZpY2VJblVzZUJ5QW5vdGhlckNsaWVudCBhcyBleHBlY3RlZCIpOworI2VuZGlmCisK
KyAgICBzZXRQZXJzaXN0ZW50SUQoU3RyaW5nKGRldmljZS51bmlxdWVJRCkpOwogfQogCiBBVlZp
ZGVvQ2FwdHVyZVNvdXJjZTo6fkFWVmlkZW9DYXB0dXJlU291cmNlKCkKIHsKICNpZiBQTEFURk9S
TShJT1MpCiAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYzo6dmlkZW9DYXB0dXJlU291
cmNlRmFjdG9yeSgpLnVuc2V0QWN0aXZlU291cmNlKCp0aGlzKTsKKyNlbmRpZgorICAgIFttX29i
amNPYnNlcnZlciBkaXNjb25uZWN0XTsKKworICAgIGlmICghbV9zZXNzaW9uKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBbbV9zZXNzaW9uIHJlbW92ZU9ic2VydmVyOm1fb2JqY09ic2VydmVyLmdl
dCgpIGZvcktleVBhdGg6QCJyYXRlIl07CisgICAgaWYgKFttX3Nlc3Npb24gaXNSdW5uaW5nXSkK
KyAgICAgICAgW21fc2Vzc2lvbiBzdG9wUnVubmluZ107CisKK30KKwordm9pZCBBVlZpZGVvQ2Fw
dHVyZVNvdXJjZTo6c3RhcnRQcm9kdWNpbmdEYXRhKCkKK3sKKyAgICBpZiAoIW1fc2Vzc2lvbikg
eworICAgICAgICBpZiAoIXNldHVwU2Vzc2lvbigpKQorICAgICAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIGlmIChbbV9zZXNzaW9uIGlzUnVubmluZ10pCisgICAgICAgIHJldHVybjsKKwor
ICAgIFttX29iamNPYnNlcnZlciBhZGROb3RpZmljYXRpb25PYnNlcnZlcnNdOworICAgIFttX3Nl
c3Npb24gc3RhcnRSdW5uaW5nXTsKK30KKwordm9pZCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6c3Rv
cFByb2R1Y2luZ0RhdGEoKQoreworICAgIGlmICghbV9zZXNzaW9uKQorICAgICAgICByZXR1cm47
CisKKyAgICBbbV9vYmpjT2JzZXJ2ZXIgcmVtb3ZlTm90aWZpY2F0aW9uT2JzZXJ2ZXJzXTsKKwor
ICAgIGlmIChbbV9zZXNzaW9uIGlzUnVubmluZ10pCisgICAgICAgIFttX3Nlc3Npb24gc3RvcFJ1
bm5pbmddOworCisgICAgbV9pbnRlcnJ1cHRpb24gPSBJbnRlcnJ1cHRpb25SZWFzb246Ok5vbmU7
CisjaWYgUExBVEZPUk0oSU9TKQorICAgIG1fc2Vzc2lvbiA9IG51bGxwdHI7CiAjZW5kaWYKIH0K
IApAQCAtMTc4LDggKzI1OCw2NSBAQCBzdGF0aWMgdm9pZCB1cGRhdGVBc3BlY3RSYXRpb01pbk1h
eChkb3VibGUmIG1pbiwgZG91YmxlJiBtYXgsIGRvdWJsZSB2YWx1ZSkKICAgICBtYXggPSBzdGQ6
Om1heDxkb3VibGU+KG1heCwgdmFsdWUpOwogfQogCi12b2lkIEFWVmlkZW9DYXB0dXJlU291cmNl
Ojppbml0aWFsaXplQ2FwYWJpbGl0aWVzKFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMm
IGNhcGFiaWxpdGllcykKK3ZvaWQgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OmJlZ2luQ29uZmlndXJh
dGlvbigpCit7CisgICAgaWYgKG1fc2Vzc2lvbikKKyAgICAgICAgW21fc2Vzc2lvbiBiZWdpbkNv
bmZpZ3VyYXRpb25dOworfQorCit2b2lkIEFWVmlkZW9DYXB0dXJlU291cmNlOjpjb21taXRDb25m
aWd1cmF0aW9uKCkKIHsKKyAgICBpZiAobV9zZXNzaW9uKQorICAgICAgICBbbV9zZXNzaW9uIGNv
bW1pdENvbmZpZ3VyYXRpb25dOworfQorCit2b2lkIEFWVmlkZW9DYXB0dXJlU291cmNlOjpzZXR0
aW5nc0RpZENoYW5nZSgpCit7CisgICAgbV9jdXJyZW50U2V0dGluZ3MgPSBzdGQ6Om51bGxvcHQ7
CisgICAgUmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0dGluZ3NEaWRDaGFuZ2UoKTsKK30KKworY29u
c3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6c2V0
dGluZ3MoKSBjb25zdAoreworICAgIGlmIChtX2N1cnJlbnRTZXR0aW5ncykKKyAgICAgICAgcmV0
dXJuICptX2N1cnJlbnRTZXR0aW5nczsKKworICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5n
cyBzZXR0aW5nczsKKyAgICBpZiAoW2RldmljZSgpIHBvc2l0aW9uXSA9PSBBVkNhcHR1cmVEZXZp
Y2VQb3NpdGlvbkZyb250KQorICAgICAgICBzZXR0aW5ncy5zZXRGYWNpbmdNb2RlKFJlYWx0aW1l
TWVkaWFTb3VyY2VTZXR0aW5nczo6VXNlcik7CisgICAgZWxzZSBpZiAoW2RldmljZSgpIHBvc2l0
aW9uXSA9PSBBVkNhcHR1cmVEZXZpY2VQb3NpdGlvbkJhY2spCisgICAgICAgIHNldHRpbmdzLnNl
dEZhY2luZ01vZGUoUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpFbnZpcm9ubWVudCk7Cisg
ICAgZWxzZQorICAgICAgICBzZXR0aW5ncy5zZXRGYWNpbmdNb2RlKFJlYWx0aW1lTWVkaWFTb3Vy
Y2VTZXR0aW5nczo6VW5rbm93bik7CisKKyAgICBhdXRvIG1heEZyYW1lRHVyYXRpb24gPSBbZGV2
aWNlKCkgYWN0aXZlVmlkZW9NYXhGcmFtZUR1cmF0aW9uXTsKKyAgICBzZXR0aW5ncy5zZXRGcmFt
ZVJhdGUobWF4RnJhbWVEdXJhdGlvbi50aW1lc2NhbGUgLyBtYXhGcmFtZUR1cmF0aW9uLnZhbHVl
KTsKKyAgICBzZXR0aW5ncy5zZXRXaWR0aChtX3dpZHRoKTsKKyAgICBzZXR0aW5ncy5zZXRIZWln
aHQobV9oZWlnaHQpOworICAgIHNldHRpbmdzLnNldERldmljZUlkKGlkKCkpOworCisgICAgUmVh
bHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzIHN1cHBvcnRlZENvbnN0cmFpbnRz
OworICAgIHN1cHBvcnRlZENvbnN0cmFpbnRzLnNldFN1cHBvcnRzRGV2aWNlSWQodHJ1ZSk7Cisg
ICAgc3VwcG9ydGVkQ29uc3RyYWludHMuc2V0U3VwcG9ydHNGYWNpbmdNb2RlKFtkZXZpY2UoKSBw
b3NpdGlvbl0gIT0gQVZDYXB0dXJlRGV2aWNlUG9zaXRpb25VbnNwZWNpZmllZCk7CisgICAgc3Vw
cG9ydGVkQ29uc3RyYWludHMuc2V0U3VwcG9ydHNXaWR0aCh0cnVlKTsKKyAgICBzdXBwb3J0ZWRD
b25zdHJhaW50cy5zZXRTdXBwb3J0c0hlaWdodCh0cnVlKTsKKyAgICBzdXBwb3J0ZWRDb25zdHJh
aW50cy5zZXRTdXBwb3J0c0FzcGVjdFJhdGlvKHRydWUpOworICAgIHN1cHBvcnRlZENvbnN0cmFp
bnRzLnNldFN1cHBvcnRzRnJhbWVSYXRlKHRydWUpOworCisgICAgc2V0dGluZ3Muc2V0U3VwcG9y
dGVkQ29uc3RyYWludHMoc3VwcG9ydGVkQ29uc3RyYWludHMpOworCisgICAgbV9jdXJyZW50U2V0
dGluZ3MgPSBXVEZNb3ZlKHNldHRpbmdzKTsKKworICAgIHJldHVybiAqbV9jdXJyZW50U2V0dGlu
Z3M7Cit9CisKK2NvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmIEFWVmlkZW9D
YXB0dXJlU291cmNlOjpjYXBhYmlsaXRpZXMoKSBjb25zdAoreworICAgIGlmIChtX2NhcGFiaWxp
dGllcykKKyAgICAgICAgcmV0dXJuICptX2NhcGFiaWxpdGllczsKKworICAgIFJlYWx0aW1lTWVk
aWFTb3VyY2VDYXBhYmlsaXRpZXMgY2FwYWJpbGl0aWVzKHNldHRpbmdzKCkuc3VwcG9ydGVkQ29u
c3RyYWludHMoKSk7CisgICAgY2FwYWJpbGl0aWVzLnNldERldmljZUlkKGlkKCkpOwogICAgIEFW
Q2FwdHVyZURldmljZVR5cGVkZWYgKnZpZGVvRGV2aWNlID0gZGV2aWNlKCk7CiAKICAgICBpZiAo
W3ZpZGVvRGV2aWNlIHBvc2l0aW9uXSA9PSBBVkNhcHR1cmVEZXZpY2VQb3NpdGlvbkZyb250KQpA
QCAtMjA0LDQ1ICszNDEsMjAgQEAgdm9pZCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6aW5pdGlhbGl6
ZUNhcGFiaWxpdGllcyhSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWUKICAgICAgICAgfQog
ICAgIH0KIAotICAgIGZvciAoYXV0byYgcHJlc2V0IDogdmlkZW9QcmVzZXRzKCkpIHsKKyAgICBm
b3IgKGF1dG8mIHByZXNldCA6IG1fc3VwcG9ydGVkUHJlc2V0cykgewogICAgICAgICBhdXRvIHZh
bHVlcyA9IHByZXNldC52YWx1ZTsKICAgICAgICAgdXBkYXRlU2l6ZU1pbk1heChtaW5pbXVtV2lk
dGgsIG1heGltdW1XaWR0aCwgdmFsdWVzLndpZHRoKCkpOwogICAgICAgICB1cGRhdGVTaXplTWlu
TWF4KG1pbmltdW1IZWlnaHQsIG1heGltdW1IZWlnaHQsIHZhbHVlcy5oZWlnaHQoKSk7CiAgICAg
ICAgIHVwZGF0ZUFzcGVjdFJhdGlvTWluTWF4KG1pbmltdW1Bc3BlY3RSYXRpbywgbWF4aW11bUFz
cGVjdFJhdGlvLCBzdGF0aWNfY2FzdDxkb3VibGU+KHZhbHVlcy53aWR0aCgpKSAvIHZhbHVlcy5o
ZWlnaHQoKSk7CiAgICAgfQotCiAgICAgY2FwYWJpbGl0aWVzLnNldEZyYW1lUmF0ZShDYXBhYmls
aXR5VmFsdWVPclJhbmdlKGxvd2VzdEZyYW1lUmF0ZVJhbmdlLCBoaWdoZXN0RnJhbWVSYXRlUmFu
Z2UpKTsKICAgICBjYXBhYmlsaXRpZXMuc2V0V2lkdGgoQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZSht
aW5pbXVtV2lkdGgsIG1heGltdW1XaWR0aCkpOwogICAgIGNhcGFiaWxpdGllcy5zZXRIZWlnaHQo
Q2FwYWJpbGl0eVZhbHVlT3JSYW5nZShtaW5pbXVtSGVpZ2h0LCBtYXhpbXVtSGVpZ2h0KSk7CiAg
ICAgY2FwYWJpbGl0aWVzLnNldEFzcGVjdFJhdGlvKENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2UobWlu
aW11bUFzcGVjdFJhdGlvLCBtYXhpbXVtQXNwZWN0UmF0aW8pKTsKLX0KLQotdm9pZCBBVlZpZGVv
Q2FwdHVyZVNvdXJjZTo6aW5pdGlhbGl6ZVN1cHBvcnRlZENvbnN0cmFpbnRzKFJlYWx0aW1lTWVk
aWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cyYgc3VwcG9ydGVkQ29uc3RyYWludHMpCi17Ci0g
ICAgc3VwcG9ydGVkQ29uc3RyYWludHMuc2V0U3VwcG9ydHNGYWNpbmdNb2RlKFtkZXZpY2UoKSBw
b3NpdGlvbl0gIT0gQVZDYXB0dXJlRGV2aWNlUG9zaXRpb25VbnNwZWNpZmllZCk7Ci0gICAgc3Vw
cG9ydGVkQ29uc3RyYWludHMuc2V0U3VwcG9ydHNXaWR0aCh0cnVlKTsKLSAgICBzdXBwb3J0ZWRD
b25zdHJhaW50cy5zZXRTdXBwb3J0c0hlaWdodCh0cnVlKTsKLSAgICBzdXBwb3J0ZWRDb25zdHJh
aW50cy5zZXRTdXBwb3J0c0FzcGVjdFJhdGlvKHRydWUpOwotICAgIHN1cHBvcnRlZENvbnN0cmFp
bnRzLnNldFN1cHBvcnRzRnJhbWVSYXRlKHRydWUpOwotfQotCi12b2lkIEFWVmlkZW9DYXB0dXJl
U291cmNlOjp1cGRhdGVTZXR0aW5ncyhSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIHNldHRp
bmdzKQotewotICAgIHNldHRpbmdzLnNldERldmljZUlkKGlkKCkpOwogCi0gICAgaWYgKFtkZXZp
Y2UoKSBwb3NpdGlvbl0gPT0gQVZDYXB0dXJlRGV2aWNlUG9zaXRpb25Gcm9udCkKLSAgICAgICAg
c2V0dGluZ3Muc2V0RmFjaW5nTW9kZShSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OlVzZXIp
OwotICAgIGVsc2UgaWYgKFtkZXZpY2UoKSBwb3NpdGlvbl0gPT0gQVZDYXB0dXJlRGV2aWNlUG9z
aXRpb25CYWNrKQotICAgICAgICBzZXR0aW5ncy5zZXRGYWNpbmdNb2RlKFJlYWx0aW1lTWVkaWFT
b3VyY2VTZXR0aW5nczo6RW52aXJvbm1lbnQpOwotICAgIGVsc2UKLSAgICAgICAgc2V0dGluZ3Mu
c2V0RmFjaW5nTW9kZShSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OlVua25vd24pOworICAg
IG1fY2FwYWJpbGl0aWVzID0gV1RGTW92ZShjYXBhYmlsaXRpZXMpOwogCi0gICAgLy8gRklYTUU6
IE9ic2VydmUgZnJhbWUgcmF0ZSBjaGFuZ2VzLgotICAgIGF1dG8gbWF4RnJhbWVEdXJhdGlvbiA9
IFtkZXZpY2UoKSBhY3RpdmVWaWRlb01heEZyYW1lRHVyYXRpb25dOwotICAgIHNldHRpbmdzLnNl
dEZyYW1lUmF0ZShtYXhGcmFtZUR1cmF0aW9uLnRpbWVzY2FsZSAvIG1heEZyYW1lRHVyYXRpb24u
dmFsdWUpOwotICAgIHNldHRpbmdzLnNldFdpZHRoKG1fd2lkdGgpOwotICAgIHNldHRpbmdzLnNl
dEhlaWdodChtX2hlaWdodCk7Ci0gICAgc2V0dGluZ3Muc2V0QXNwZWN0UmF0aW8oc3RhdGljX2Nh
c3Q8ZmxvYXQ+KG1fd2lkdGgpIC8gbV9oZWlnaHQpOworICAgIHJldHVybiAqbV9jYXBhYmlsaXRp
ZXM7CiB9CiAKIGJvb2wgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OmFwcGx5U2l6ZShjb25zdCBJbnRT
aXplJiBzaXplKQpAQCAtMjg1LDcgKzM5NywxMSBAQCBib29sIEFWVmlkZW9DYXB0dXJlU291cmNl
OjpzZXRQcmVzZXQoTlNTdHJpbmcgKnByZXNldCkKICAgICBAdHJ5IHsKICAgICAgICAgc2Vzc2lv
bigpLnNlc3Npb25QcmVzZXQgPSBwcmVzZXQ7CiAjaWYgUExBVEZPUk0oTUFDKQotICAgICAgICBh
dXRvIHNldHRpbmdzRGljdGlvbmFyeSA9IEB7IChfX2JyaWRnZSBOU1N0cmluZyAqKWtDVlBpeGVs
QnVmZmVyUGl4ZWxGb3JtYXRUeXBlS2V5OiBAKHZpZGVvQ2FwdHVyZUZvcm1hdCksIChfX2JyaWRn
ZSBOU1N0cmluZyAqKWtDVlBpeGVsQnVmZmVyV2lkdGhLZXk6IEAoc2l6ZS53aWR0aCgpKSwgKF9f
YnJpZGdlIE5TU3RyaW5nICopa0NWUGl4ZWxCdWZmZXJIZWlnaHRLZXk6IEAoc2l6ZS5oZWlnaHQo
KSksIH07CisgICAgICAgIGF1dG8gc2V0dGluZ3NEaWN0aW9uYXJ5ID0gQHsKKyAgICAgICAgICAg
IChfX2JyaWRnZSBOU1N0cmluZyAqKWtDVlBpeGVsQnVmZmVyUGl4ZWxGb3JtYXRUeXBlS2V5OiBA
KHZpZGVvQ2FwdHVyZUZvcm1hdCksCisgICAgICAgICAgICAoX19icmlkZ2UgTlNTdHJpbmcgKilr
Q1ZQaXhlbEJ1ZmZlcldpZHRoS2V5OiBAKHNpemUud2lkdGgoKSksCisgICAgICAgICAgICAoX19i
cmlkZ2UgTlNTdHJpbmcgKilrQ1ZQaXhlbEJ1ZmZlckhlaWdodEtleTogQChzaXplLmhlaWdodCgp
KQorICAgICAgICB9OwogICAgICAgICBbbV92aWRlb091dHB1dCBzZXRWaWRlb1NldHRpbmdzOnNl
dHRpbmdzRGljdGlvbmFyeV07CiAjZW5kaWYKICAgICB9IEBjYXRjaChOU0V4Y2VwdGlvbiAqZXhj
ZXB0aW9uKSB7CkBAIC0zODEsNiArNDk3LDI0IEBAIHN0YXRpYyBpbmxpbmUgaW50IHNlbnNvck9y
aWVudGF0aW9uRnJvbVZpZGVvT3V0cHV0KEFWQ2FwdHVyZVZpZGVvRGF0YU91dHB1dFR5cGUqCiAg
ICAgcmV0dXJuIGNvbm5lY3Rpb24gPyBzZW5zb3JPcmllbnRhdGlvbihbY29ubmVjdGlvbiB2aWRl
b09yaWVudGF0aW9uXSkgOiAwOwogfQogCitib29sIEFWVmlkZW9DYXB0dXJlU291cmNlOjpzZXR1
cFNlc3Npb24oKQoreworICAgIGlmIChtX3Nlc3Npb24pCisgICAgICAgIHJldHVybiB0cnVlOwor
CisgICAgbV9zZXNzaW9uID0gYWRvcHROUyhbYWxsb2NBVkNhcHR1cmVTZXNzaW9uSW5zdGFuY2Uo
KSBpbml0XSk7CisgICAgW21fc2Vzc2lvbiBhZGRPYnNlcnZlcjptX29iamNPYnNlcnZlci5nZXQo
KSBmb3JLZXlQYXRoOkAicmF0ZSIgb3B0aW9uczpOU0tleVZhbHVlT2JzZXJ2aW5nT3B0aW9uTmV3
IGNvbnRleHQ6KHZvaWQgKiluaWxdOworCisgICAgW21fc2Vzc2lvbiBiZWdpbkNvbmZpZ3VyYXRp
b25dOworICAgIGJvb2wgc3VjY2VzcyA9IHNldHVwQ2FwdHVyZVNlc3Npb24oKTsKKyAgICBbbV9z
ZXNzaW9uIGNvbW1pdENvbmZpZ3VyYXRpb25dOworCisgICAgaWYgKCFzdWNjZXNzKQorICAgICAg
ICBjYXB0dXJlRmFpbGVkKCk7CisKKyAgICByZXR1cm4gc3VjY2VzczsKK30KKwogYm9vbCBBVlZp
ZGVvQ2FwdHVyZVNvdXJjZTo6c2V0dXBDYXB0dXJlU2Vzc2lvbigpCiB7CiAjaWYgUExBVEZPUk0o
SU9TKQpAQCAtNDEyLDcgKzU0Niw3IEBAIGJvb2wgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OnNldHVw
Q2FwdHVyZVNlc3Npb24oKQogCiAgICAgW21fdmlkZW9PdXRwdXQgc2V0VmlkZW9TZXR0aW5nczpz
ZXR0aW5nc0RpY3Rpb25hcnkuZ2V0KCldOwogICAgIFttX3ZpZGVvT3V0cHV0IHNldEFsd2F5c0Rp
c2NhcmRzTGF0ZVZpZGVvRnJhbWVzOllFU107Ci0gICAgc2V0VmlkZW9TYW1wbGVCdWZmZXJEZWxl
Z2F0ZShtX3ZpZGVvT3V0cHV0LmdldCgpKTsKKyAgICBbbV92aWRlb091dHB1dCBzZXRTYW1wbGVC
dWZmZXJEZWxlZ2F0ZTptX29iamNPYnNlcnZlci5nZXQoKSBxdWV1ZTpnbG9iYVZpZGVvQ2FwdHVy
ZVNlcmlhbFF1ZXVlKCldOwogCiAgICAgaWYgKCFbc2Vzc2lvbigpIGNhbkFkZE91dHB1dDptX3Zp
ZGVvT3V0cHV0LmdldCgpXSkgewogICAgICAgICBSRUxFQVNFX0xPRyhNZWRpYSwgIkFWVmlkZW9D
YXB0dXJlU291cmNlOjpzZXR1cENhcHR1cmVTZXNzaW9uKCVwKSwgdW5hYmxlIHRvIGFkZCB2aWRl
byBzYW1wbGUgYnVmZmVyIG91dHB1dCBkZWxlZ2F0ZSIsIHRoaXMpOwpAQCAtNTU1LDYgKzY4OSwx
NTcgQEAgYm9vbCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6c3VwcG9ydHNTaXplQW5kRnJhbWVSYXRl
KHN0ZDo6b3B0aW9uYWw8aW50PiB3aWR0aCwgc3QKICAgICByZXR1cm4gaXNGcmFtZVJhdGVTdXBw
b3J0ZWQoZnJhbWVSYXRlLnZhbHVlKCkpOwogfQogCit2b2lkIEFWVmlkZW9DYXB0dXJlU291cmNl
OjpjYXB0dXJlU2Vzc2lvbklzUnVubmluZ0RpZENoYW5nZShib29sIHN0YXRlKQoreworICAgIHNj
aGVkdWxlRGVmZXJyZWRUYXNrKFt0aGlzLCBzdGF0ZV0geworICAgICAgICBpZiAoKHN0YXRlID09
IG1faXNSdW5uaW5nKSAmJiAoc3RhdGUgPT0gIW11dGVkKCkpKQorICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgIG1faXNSdW5uaW5nID0gc3RhdGU7CisgICAgICAgIG5vdGlmeU11dGVkQ2hh
bmdlKCFtX2lzUnVubmluZyk7CisgICAgfSk7Cit9CisKK2Jvb2wgQVZWaWRlb0NhcHR1cmVTb3Vy
Y2U6OmludGVycnVwdGVkKCkgY29uc3QKK3sKKyAgICBpZiAobV9pbnRlcnJ1cHRpb24gIT0gSW50
ZXJydXB0aW9uUmVhc29uOjpOb25lKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIHJldHVy
biBSZWFsdGltZU1lZGlhU291cmNlOjppbnRlcnJ1cHRlZCgpOworfQorCisjaWYgUExBVEZPUk0o
SU9TKQordm9pZCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6Y2FwdHVyZVNlc3Npb25SdW50aW1lRXJy
b3IoUmV0YWluUHRyPE5TRXJyb3I+IGVycm9yKQoreworICAgIGlmICghbV9pc1J1bm5pbmcgfHwg
ZXJyb3IuZ2V0KCkuY29kZSAhPSBBVkVycm9yTWVkaWFTZXJ2aWNlc1dlcmVSZXNldCkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgLy8gVHJ5IHRvIHJlc3RhcnQgdGhlIHNlc3Npb24sIGJ1dCByZXNl
dCBtX2lzUnVubmluZyBpbW1lZGlhdGVseSBzbyBpZiBpdCBmYWlscyB3ZSB3b24ndCB0cnkgYWdh
aW4uCisgICAgW21fc2Vzc2lvbiBzdGFydFJ1bm5pbmddOworICAgIG1faXNSdW5uaW5nID0gW21f
c2Vzc2lvbiBpc1J1bm5pbmddOworfQorCit2b2lkIEFWVmlkZW9DYXB0dXJlU291cmNlOjpjYXB0
dXJlU2Vzc2lvbkJlZ2luSW50ZXJydXB0aW9uKFJldGFpblB0cjxOU05vdGlmaWNhdGlvbj4gbm90
aWZpY2F0aW9uKQoreworICAgIG1faW50ZXJydXB0aW9uID0gc3RhdGljX2Nhc3Q8QVZWaWRlb0Nh
cHR1cmVTb3VyY2U6OkludGVycnVwdGlvblJlYXNvbj4oW25vdGlmaWNhdGlvbi5nZXQoKS51c2Vy
SW5mb1tBVkNhcHR1cmVTZXNzaW9uSW50ZXJydXB0aW9uUmVhc29uS2V5XSBpbnRlZ2VyVmFsdWVd
KTsKK30KKwordm9pZCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6Y2FwdHVyZVNlc3Npb25FbmRJbnRl
cnJ1cHRpb24oUmV0YWluUHRyPE5TTm90aWZpY2F0aW9uPikKK3sKKyAgICBJbnRlcnJ1cHRpb25S
ZWFzb24gcmVhc29uID0gbV9pbnRlcnJ1cHRpb247CisKKyAgICBtX2ludGVycnVwdGlvbiA9IElu
dGVycnVwdGlvblJlYXNvbjo6Tm9uZTsKKyAgICBpZiAocmVhc29uICE9IEludGVycnVwdGlvblJl
YXNvbjo6VmlkZW9Ob3RBbGxvd2VkSW5TaWRlQnlTaWRlIHx8IG1faXNSdW5uaW5nIHx8ICFtX3Nl
c3Npb24pCisgICAgICAgIHJldHVybjsKKworICAgIFttX3Nlc3Npb24gc3RhcnRSdW5uaW5nXTsK
KyAgICBtX2lzUnVubmluZyA9IFttX3Nlc3Npb24gaXNSdW5uaW5nXTsKK30KKyNlbmRpZgorCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK0BpbXBsZW1lbnRhdGlvbiBXZWJDb3JlQVZWaWRlb0Nh
cHR1cmVTb3VyY2VPYnNlcnZlcgorCistIChpZClpbml0V2l0aENhbGxiYWNrOihBVlZpZGVvQ2Fw
dHVyZVNvdXJjZSopY2FsbGJhY2sKK3sKKyAgICBzZWxmID0gW3N1cGVyIGluaXRdOworICAgIGlm
ICghc2VsZikKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIG1fY2FsbGJhY2sgPSBjYWxsYmFj
azsKKworICAgIHJldHVybiBzZWxmOworfQorCistICh2b2lkKWRpc2Nvbm5lY3QKK3sKKyAgICBb
TlNPYmplY3QgY2FuY2VsUHJldmlvdXNQZXJmb3JtUmVxdWVzdHNXaXRoVGFyZ2V0OnNlbGZdOwor
ICAgIFtzZWxmIHJlbW92ZU5vdGlmaWNhdGlvbk9ic2VydmVyc107CisgICAgbV9jYWxsYmFjayA9
IG51bGxwdHI7Cit9CisKKy0gKHZvaWQpYWRkTm90aWZpY2F0aW9uT2JzZXJ2ZXJzCit7CisjaWYg
UExBVEZPUk0oSU9TKQorICAgIEFTU0VSVChtX2NhbGxiYWNrKTsKKworICAgIE5TTm90aWZpY2F0
aW9uQ2VudGVyKiBjZW50ZXIgPSBbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl07
CisgICAgQVZDYXB0dXJlU2Vzc2lvblR5cGUqIHNlc3Npb24gPSBtX2NhbGxiYWNrLT5zZXNzaW9u
KCk7CisKKyAgICBbY2VudGVyIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKHNl
c3Npb25SdW50aW1lRXJyb3I6KSBuYW1lOkFWQ2FwdHVyZVNlc3Npb25SdW50aW1lRXJyb3JOb3Rp
ZmljYXRpb24gb2JqZWN0OnNlc3Npb25dOworICAgIFtjZW50ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBz
ZWxlY3RvcjpAc2VsZWN0b3IoYmVnaW5TZXNzaW9uSW50ZXJydXB0ZWQ6KSBuYW1lOkFWQ2FwdHVy
ZVNlc3Npb25XYXNJbnRlcnJ1cHRlZE5vdGlmaWNhdGlvbiBvYmplY3Q6c2Vzc2lvbl07CisgICAg
W2NlbnRlciBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihlbmRTZXNzaW9uSW50
ZXJydXB0ZWQ6KSBuYW1lOkFWQ2FwdHVyZVNlc3Npb25JbnRlcnJ1cHRpb25FbmRlZE5vdGlmaWNh
dGlvbiBvYmplY3Q6c2Vzc2lvbl07CisjZW5kaWYKK30KKworLSAodm9pZClyZW1vdmVOb3RpZmlj
YXRpb25PYnNlcnZlcnMKK3sKKyNpZiBQTEFURk9STShJT1MpCisgICAgW1tOU05vdGlmaWNhdGlv
bkNlbnRlciBkZWZhdWx0Q2VudGVyXSByZW1vdmVPYnNlcnZlcjpzZWxmXTsKKyNlbmRpZgorfQor
CistICh2b2lkKWNhcHR1cmVPdXRwdXQ6KEFWQ2FwdHVyZU91dHB1dFR5cGUqKWNhcHR1cmVPdXRw
dXQgZGlkT3V0cHV0U2FtcGxlQnVmZmVyOihDTVNhbXBsZUJ1ZmZlclJlZilzYW1wbGVCdWZmZXIg
ZnJvbUNvbm5lY3Rpb246KEFWQ2FwdHVyZUNvbm5lY3Rpb25UeXBlKiljb25uZWN0aW9uCit7Cisg
ICAgaWYgKCFtX2NhbGxiYWNrKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2NhbGxiYWNrLT5j
YXB0dXJlT3V0cHV0RGlkT3V0cHV0U2FtcGxlQnVmZmVyRnJvbUNvbm5lY3Rpb24oY2FwdHVyZU91
dHB1dCwgc2FtcGxlQnVmZmVyLCBjb25uZWN0aW9uKTsKK30KKworLSAodm9pZClvYnNlcnZlVmFs
dWVGb3JLZXlQYXRoOmtleVBhdGggb2ZPYmplY3Q6KGlkKW9iamVjdCBjaGFuZ2U6KE5TRGljdGlv
bmFyeSopY2hhbmdlIGNvbnRleHQ6KHZvaWQqKWNvbnRleHQKK3sKKyAgICBVTlVTRURfUEFSQU0o
b2JqZWN0KTsKKyAgICBVTlVTRURfUEFSQU0oY29udGV4dCk7CisKKyAgICBpZiAoIW1fY2FsbGJh
Y2spCisgICAgICAgIHJldHVybjsKKworICAgIGlkIG5ld1ZhbHVlID0gW2NoYW5nZSB2YWx1ZUZv
cktleTpOU0tleVZhbHVlQ2hhbmdlTmV3S2V5XTsKKworI2lmICFMT0dfRElTQUJMRUQKKyAgICBi
b29sIHdpbGxDaGFuZ2UgPSBbW2NoYW5nZSB2YWx1ZUZvcktleTpOU0tleVZhbHVlQ2hhbmdlTm90
aWZpY2F0aW9uSXNQcmlvcktleV0gYm9vbFZhbHVlXTsKKworICAgIGlmICh3aWxsQ2hhbmdlKQor
ICAgICAgICBMT0coTWVkaWEsICJXZWJDb3JlQVZWaWRlb0NhcHR1cmVTb3VyY2VPYnNlcnZlcjo6
b2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aCglcCkgLSB3aWxsIGNoYW5nZSwga2V5UGF0aCA9ICVzIiwg
c2VsZiwgW2tleVBhdGggVVRGOFN0cmluZ10pOworICAgIGVsc2UgeworICAgICAgICBSZXRhaW5Q
dHI8TlNTdHJpbmc+IHZhbHVlU3RyaW5nID0gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0
V2l0aEZvcm1hdDpAIiVAIiwgbmV3VmFsdWVdKTsKKyAgICAgICAgTE9HKE1lZGlhLCAiV2ViQ29y
ZUFWVmlkZW9DYXB0dXJlU291cmNlT2JzZXJ2ZXI6Om9ic2VydmVWYWx1ZUZvcktleVBhdGgoJXAp
IC0gZGlkIGNoYW5nZSwga2V5UGF0aCA9ICVzLCB2YWx1ZSA9ICVzIiwgc2VsZiwgW2tleVBhdGgg
VVRGOFN0cmluZ10sIFt2YWx1ZVN0cmluZy5nZXQoKSBVVEY4U3RyaW5nXSk7CisgICAgfQorI2Vu
ZGlmCisKKyAgICBpZiAoW2tleVBhdGggaXNFcXVhbFRvU3RyaW5nOkAicnVubmluZyJdKQorICAg
ICAgICBtX2NhbGxiYWNrLT5jYXB0dXJlU2Vzc2lvbklzUnVubmluZ0RpZENoYW5nZShbbmV3VmFs
dWUgYm9vbFZhbHVlXSk7Cit9CisKKyNpZiBQTEFURk9STShJT1MpCistICh2b2lkKXNlc3Npb25S
dW50aW1lRXJyb3I6KE5TTm90aWZpY2F0aW9uKilub3RpZmljYXRpb24KK3sKKyAgICBOU0Vycm9y
ICplcnJvciA9IG5vdGlmaWNhdGlvbi51c2VySW5mb1tBVkNhcHR1cmVTZXNzaW9uRXJyb3JLZXld
OworICAgIExPRyhNZWRpYSwgIldlYkNvcmVBVlZpZGVvQ2FwdHVyZVNvdXJjZU9ic2VydmVyOjpz
ZXNzaW9uUnVudGltZUVycm9yKCVwKSAtIGVycm9yID0gJXMiLCBzZWxmLCBbW2Vycm9yIGxvY2Fs
aXplZERlc2NyaXB0aW9uXSBVVEY4U3RyaW5nXSk7CisKKyAgICBpZiAobV9jYWxsYmFjaykKKyAg
ICAgICAgbV9jYWxsYmFjay0+Y2FwdHVyZVNlc3Npb25SdW50aW1lRXJyb3IoZXJyb3IpOworfQor
CistICh2b2lkKWJlZ2luU2Vzc2lvbkludGVycnVwdGVkOihOU05vdGlmaWNhdGlvbiopbm90aWZp
Y2F0aW9uCit7CisgICAgTE9HKE1lZGlhLCAiV2ViQ29yZUFWVmlkZW9DYXB0dXJlU291cmNlT2Jz
ZXJ2ZXI6OmJlZ2luU2Vzc2lvbkludGVycnVwdGVkKCVwKSAtIHJlYXNvbiA9ICVkIiwgc2VsZiwg
W25vdGlmaWNhdGlvbi51c2VySW5mb1tBVkNhcHR1cmVTZXNzaW9uSW50ZXJydXB0aW9uUmVhc29u
S2V5XSBpbnRlZ2VyVmFsdWVdKTsKKworICAgIGlmIChtX2NhbGxiYWNrKQorICAgICAgICBtX2Nh
bGxiYWNrLT5jYXB0dXJlU2Vzc2lvbkJlZ2luSW50ZXJydXB0aW9uKG5vdGlmaWNhdGlvbik7Cit9
CisKKy0gKHZvaWQpZW5kU2Vzc2lvbkludGVycnVwdGVkOihOU05vdGlmaWNhdGlvbiopbm90aWZp
Y2F0aW9uCit7CisgICAgTE9HKE1lZGlhLCAiV2ViQ29yZUFWVmlkZW9DYXB0dXJlU291cmNlT2Jz
ZXJ2ZXI6OmVuZFNlc3Npb25JbnRlcnJ1cHRlZCglcCkiLCBzZWxmKTsKKworICAgIGlmIChtX2Nh
bGxiYWNrKQorICAgICAgICBtX2NhbGxiYWNrLT5jYXB0dXJlU2Vzc2lvbkVuZEludGVycnVwdGlv
bihub3RpZmljYXRpb24pOworfQorI2VuZGlmCisKK0BlbmQKKwogI2VuZGlmIC8vIEVOQUJMRShN
RURJQV9TVFJFQU0pCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348551</attachid>
            <date>2018-08-30 14:30:12 -0700</date>
            <delta_ts>2018-08-31 05:04:45 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-189159-20180830143011.patch</filename>
            <type>text/plain</type>
            <size>40677</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1NTE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWM0ZGRlM2YyYjUyMjVm
NWE3M2ZiM2Q3MTIyMWM1OTZmZjg2MzIyMi4uMTBiNjU2OTRiYTRmOWY1ZWQwNjYxZDViZWM3NDlk
OTg5OTYzOGY2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDU0IEBACiAyMDE4LTA4LTMwICBFcmlj
IENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgogCisgICAgICAgIFtNZWRpYVN0cmVh
bV0gUmVtb3ZlIEFWTWVkaWFDYXB0dXJlU291cmNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODkxNTkKKworICAgICAgICBSZXZpZXdlZCBieSBZb3Vl
bm4gRmFibGV0LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gY2hhbmdlIGluIGZ1bmN0aW9u
YWxpdHkuCisKKyAgICAgICAgUmVmYWN0b3IgdmlkZW8gY2FwdHVyZSB0byBnZXQgcmlkIG9mIGEg
YmFzZSBjbGFzcyB3ZSBkb24ndCAKKyAgICAgICAgbmVlZCBhbnkgbW9yZS4KKworICAgICAgICAq
IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UuaDogUmVtb3ZlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UubW06IFJlbW92
ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291
cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6c2Vzc2lvbiBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6ZGV2aWNlIGNv
bnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVT
b3VyY2UubW06CisgICAgICAgIChXZWJDb3JlOjpnbG9iYVZpZGVvQ2FwdHVyZVNlcmlhbFF1ZXVl
KToKKyAgICAgICAgKFdlYkNvcmU6OkFWVmlkZW9DYXB0dXJlU291cmNlOjpBVlZpZGVvQ2FwdHVy
ZVNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6fkFWVmlk
ZW9DYXB0dXJlU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkFWVmlkZW9DYXB0dXJlU291cmNl
OjpzdGFydFByb2R1Y2luZ0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6QVZWaWRlb0NhcHR1cmVT
b3VyY2U6OnN0b3BQcm9kdWNpbmdEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkFWVmlkZW9DYXB0
dXJlU291cmNlOjpiZWdpbkNvbmZpZ3VyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6QVZWaWRl
b0NhcHR1cmVTb3VyY2U6OmNvbW1pdENvbmZpZ3VyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
QVZWaWRlb0NhcHR1cmVTb3VyY2U6OnNldHRpbmdzRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNv
cmU6OkFWVmlkZW9DYXB0dXJlU291cmNlOjpzZXR0aW5ncyBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6Y2FwYWJpbGl0aWVzIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkFWVmlkZW9DYXB0dXJlU291cmNlOjpzZXRQcmVzZXQpOgorICAgICAgICAoV2Vi
Q29yZTo6QVZWaWRlb0NhcHR1cmVTb3VyY2U6OnNldHVwU2Vzc2lvbik6CisgICAgICAgIChXZWJD
b3JlOjpBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6c2V0dXBDYXB0dXJlU2Vzc2lvbik6CisgICAgICAg
IChXZWJDb3JlOjpBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6Y2FwdHVyZVNlc3Npb25Jc1J1bm5pbmdE
aWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6QVZWaWRlb0NhcHR1cmVTb3VyY2U6OmludGVy
cnVwdGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFWVmlkZW9DYXB0dXJlU291cmNlOjpj
YXB0dXJlU2Vzc2lvblJ1bnRpbWVFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpBVlZpZGVvQ2Fw
dHVyZVNvdXJjZTo6Y2FwdHVyZVNlc3Npb25CZWdpbkludGVycnVwdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6Y2FwdHVyZVNlc3Npb25FbmRJbnRlcnJ1cHRp
b24pOgorICAgICAgICAoLVtXZWJDb3JlQVZWaWRlb0NhcHR1cmVTb3VyY2VPYnNlcnZlciBpbml0
V2l0aENhbGxiYWNrOl0pOgorICAgICAgICAoLVtXZWJDb3JlQVZWaWRlb0NhcHR1cmVTb3VyY2VP
YnNlcnZlciBkaXNjb25uZWN0XSk6CisgICAgICAgICgtW1dlYkNvcmVBVlZpZGVvQ2FwdHVyZVNv
dXJjZU9ic2VydmVyIGFkZE5vdGlmaWNhdGlvbk9ic2VydmVyc10pOgorICAgICAgICAoLVtXZWJD
b3JlQVZWaWRlb0NhcHR1cmVTb3VyY2VPYnNlcnZlciByZW1vdmVOb3RpZmljYXRpb25PYnNlcnZl
cnNdKToKKyAgICAgICAgKC1bV2ViQ29yZUFWVmlkZW9DYXB0dXJlU291cmNlT2JzZXJ2ZXIgY2Fw
dHVyZU91dHB1dDpkaWRPdXRwdXRTYW1wbGVCdWZmZXI6ZnJvbUNvbm5lY3Rpb246XSk6CisgICAg
ICAgICgtW1dlYkNvcmVBVlZpZGVvQ2FwdHVyZVNvdXJjZU9ic2VydmVyIG9ic2VydmVWYWx1ZUZv
cktleVBhdGg6b2ZPYmplY3Q6Y2hhbmdlOmNvbnRleHQ6XSk6CisgICAgICAgICgtW1dlYkNvcmVB
VlZpZGVvQ2FwdHVyZVNvdXJjZU9ic2VydmVyIHNlc3Npb25SdW50aW1lRXJyb3I6XSk6CisgICAg
ICAgICgtW1dlYkNvcmVBVlZpZGVvQ2FwdHVyZVNvdXJjZU9ic2VydmVyIGJlZ2luU2Vzc2lvbklu
dGVycnVwdGVkOl0pOgorICAgICAgICAoLVtXZWJDb3JlQVZWaWRlb0NhcHR1cmVTb3VyY2VPYnNl
cnZlciBlbmRTZXNzaW9uSW50ZXJydXB0ZWQ6XSk6CisgICAgICAgIChXZWJDb3JlOjpBVlZpZGVv
Q2FwdHVyZVNvdXJjZTo6aW5pdGlhbGl6ZUNhcGFiaWxpdGllcyk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6aW5pdGlhbGl6ZVN1cHBvcnRlZENvbnN0
cmFpbnRzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFWVmlkZW9DYXB0dXJlU291cmNl
Ojp1cGRhdGVTZXR0aW5ncyk6IERlbGV0ZWQuCisKKzIwMTgtMDgtMzAgIEVyaWMgQ2FybHNvbiAg
PGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CiAgICAgICAgIE1vY2sgdmlkZW8gZGV2aWNlcyBzaG91
bGQgb25seSBzdXBwb3J0IGRpc2NyZXRlIHNpemVzCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODkwMDAKICAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQz
NzY2NTUxPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IGYzNjE4NzQ3NTNiMjNhYmU3ZTQ5MDdiMmRiYmUxNTAyYmJmMWI4ZjkuLjkz
OTkwMDk0YmRiZDY3MzIzNmY3OTM2M2I1NGZiNmM0NjZkOGQ5OTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTcyLDggKzcyLDYg
QEAKIAkJMDcwMzM0RDkxNDVBMDA2RjAwOEQ4RDQ1IC8qIFRyYWNrQmFzZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzAzMzREODE0NUEwMDZGMDA4
RDhENDUgLyogVHJhY2tCYXNlLmNwcCAqLzsgfTsKIAkJMDcwMzYzRTIxODFBMUNEQzAwQzA3NEE1
IC8qIEFWQ2FwdHVyZURldmljZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDA3MDM2M0RBMTgxQTFDREMwMEMwNzRBNSAvKiBBVkNhcHR1cmVE
ZXZpY2VNYW5hZ2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMDcwMzYzRTMxODFBMUNEQzAwQzA3NEE1IC8qIEFWQ2FwdHVyZURldmljZU1hbmFn
ZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzAz
NjNEQjE4MUExQ0RDMDBDMDc0QTUgLyogQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5tbSAqLzsgfTsK
LQkJMDcwMzYzRTQxODFBMUNEQzAwQzA3NEE1IC8qIEFWTWVkaWFDYXB0dXJlU291cmNlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzAzNjNEQzE4MUEx
Q0RDMDBDMDc0QTUgLyogQVZNZWRpYUNhcHR1cmVTb3VyY2UuaCAqLzsgfTsKLQkJMDcwMzYzRTUx
ODFBMUNEQzAwQzA3NEE1IC8qIEFWTWVkaWFDYXB0dXJlU291cmNlLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcwMzYzREQxODFBMUNEQzAwQzA3NEE1
IC8qIEFWTWVkaWFDYXB0dXJlU291cmNlLm1tICovOyB9OwogCQkwNzAzNjNFNjE4MUExQ0RDMDBD
MDc0QTUgLyogQVZWaWRlb0NhcHR1cmVTb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MDM2M0RFMTgxQTFDREMwMEMwNzRBNSAvKiBBVlZpZGVv
Q2FwdHVyZVNvdXJjZS5oICovOyB9OwogCQkwNzAzNjNFNzE4MUExQ0RDMDBDMDc0QTUgLyogQVZW
aWRlb0NhcHR1cmVTb3VyY2UubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwNzAzNjNERjE4MUExQ0RDMDBDMDc0QTUgLyogQVZWaWRlb0NhcHR1cmVTb3Vy
Y2UubW0gKi87IH07CiAJCTA3MDRBNDA4MUQ2REU5RjEwMDg2RENEQiAvKiBPdmVyY29uc3RyYWlu
ZWRFcnJvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDcwNEE0MDUxRDZERTlGMTAwODZEQ0RCIC8qIE92ZXJjb25zdHJhaW5lZEVycm9yLmggKi87IH07
CkBAIC01MTczLDggKzUxNzEsNiBAQAogCQkwNzAzMzRFODE0NUExRjM1MDA4RDhENDUgLyogSlNU
cmFja0N1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1Ry
YWNrQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDcwMzYzREExODFB
MUNEQzAwQzA3NEE1IC8qIEFWQ2FwdHVyZURldmljZU1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwNzAzNjNEQjE4MUExQ0RDMDBDMDc0QTUgLyogQVZDYXB0dXJlRGV2
aWNlTWFuYWdlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFW
Q2FwdHVyZURldmljZU1hbmFnZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTA3
MDM2M0RDMTgxQTFDREMwMEMwNzRBNSAvKiBBVk1lZGlhQ2FwdHVyZVNvdXJjZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBVk1lZGlhQ2FwdHVyZVNvdXJjZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQkwNzAzNjNERDE4MUExQ0RDMDBDMDc0QTUgLyogQVZNZWRp
YUNhcHR1cmVTb3VyY2UubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBBVk1lZGlhQ2FwdHVyZVNvdXJjZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MDcwMzYzREUxODFBMUNEQzAwQzA3NEE1IC8qIEFWVmlkZW9DYXB0dXJlU291cmNlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFWVmlkZW9DYXB0dXJlU291cmNlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3MDM2M0RGMTgxQTFDREMwMEMwNzRBNSAvKiBBVlZp
ZGVvQ2FwdHVyZVNvdXJjZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IEFWVmlkZW9DYXB0dXJlU291cmNlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwNzA0QTQwMzFENkRFOUYxMDA4NkRDREIgLyogT3ZlcmNvbnN0cmFpbmVkRXJyb3IuaWRsICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9IE92ZXJjb25zdHJhaW5lZEVycm9yLmlkbDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1MjAzLDggKzE1MTk5LDYgQEAKIAkJCQkwN0MwNDZDNjFF
NDI1MTJGMDA3MjAxRTcgLyogQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hLmggKi8s
CiAJCQkJMDcwMzYzREExODFBMUNEQzAwQzA3NEE1IC8qIEFWQ2FwdHVyZURldmljZU1hbmFnZXIu
aCAqLywKIAkJCQkwNzAzNjNEQjE4MUExQ0RDMDBDMDc0QTUgLyogQVZDYXB0dXJlRGV2aWNlTWFu
YWdlci5tbSAqLywKLQkJCQkwNzAzNjNEQzE4MUExQ0RDMDBDMDc0QTUgLyogQVZNZWRpYUNhcHR1
cmVTb3VyY2UuaCAqLywKLQkJCQkwNzAzNjNERDE4MUExQ0RDMDBDMDc0QTUgLyogQVZNZWRpYUNh
cHR1cmVTb3VyY2UubW0gKi8sCiAJCQkJMDcwMzYzREUxODFBMUNEQzAwQzA3NEE1IC8qIEFWVmlk
ZW9DYXB0dXJlU291cmNlLmggKi8sCiAJCQkJMDcwMzYzREYxODFBMUNEQzAwQzA3NEE1IC8qIEFW
VmlkZW9DYXB0dXJlU291cmNlLm1tICovLAogCQkJCTNGODAyMDMxMUU5RTM4MUQwMERFQzYxRCAv
KiBDb3JlQXVkaW9DYXB0dXJlRGV2aWNlLmNwcCAqLywKQEAgLTI3MDk5LDcgKzI3MDkzLDYgQEAK
IAkJCQlDREM2NzUyMzFFQUVBOUI3MDA3MjdDODQgLyogQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2
aWNlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDcwMzYzRTIxODFBMUNEQzAwQzA3NEE1
IC8qIEFWQ2FwdHVyZURldmljZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3RjRFOTMz
MjBCMzU4N0YwMDJFMzgwMyAvKiBBVkZvdW5kYXRpb25NSU1FVHlwZUNhY2hlLmggaW4gSGVhZGVy
cyAqLywKLQkJCQkwNzAzNjNFNDE4MUExQ0RDMDBDMDc0QTUgLyogQVZNZWRpYUNhcHR1cmVTb3Vy
Y2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEMzM2RjYyMTdGOUY2NDcwMERERENEMCAvKiBBVlRy
YWNrUHJpdmF0ZUFWRk9iakNJbXBsLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzAzNjNFNjE4MUEx
Q0RDMDBDMDc0QTUgLyogQVZWaWRlb0NhcHR1cmVTb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUY0NUMyMzFFMTk5NUI3M0IwMEE2RTJFMyAvKiBBeGlzU2Nyb2xsU25hcE9mZnNldHMuaCBpbiBI
ZWFkZXJzICovLApAQCAtMzEzMjgsNyArMzEzMjEsNiBAQAogCQkJCUNEQzY3NTIyMUVBRUE5Qjcw
MDcyN0M4NCAvKiBBVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMDcwMzYzRTMxODFBMUNEQzAwQzA3NEE1IC8qIEFWQ2FwdHVyZURldmljZU1h
bmFnZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQkwNzE5NDI3RjFEMDg4RjIxMDAyQUE1MUQgLyog
QVZGb3VuZGF0aW9uTUlNRVR5cGVDYWNoZS5tbSBpbiBTb3VyY2VzICovLAotCQkJCTA3MDM2M0U1
MTgxQTFDREMwMEMwNzRBNSAvKiBBVk1lZGlhQ2FwdHVyZVNvdXJjZS5tbSBpbiBTb3VyY2VzICov
LAogCQkJCUNEMzM2RjYxMTdGOUY2NDcwMERERENEMCAvKiBBVlRyYWNrUHJpdmF0ZUFWRk9iakNJ
bXBsLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMDcwMzYzRTcxODFBMUNEQzAwQzA3NEE1IC8qIEFW
VmlkZW9DYXB0dXJlU291cmNlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0E0NTAzMkYxOERCNzE3
MjAwMzc3QjM0IC8qIEJ1ZmZlcmVkTGluZVJlYWRlci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL09yaWVudGF0aW9uTm90aWZpZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL09yaWVudGF0aW9uTm90aWZpZXIuaAppbmRleCA2ZTllODkw
NDI5ZDg0NmU5MGMwNThhNjc0ZWE0Y2UzZjgyMzRiMjMxLi4wZTZjY2IxMGY5ODYxZTBlZWI3NDQ3
MTFlOGU4NTZjYjY5YzFhMDEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9P
cmllbnRhdGlvbk5vdGlmaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vT3JpZW50
YXRpb25Ob3RpZmllci5oCkBAIC0yNSw2ICsyNSw4IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE9yaWVu
dGF0aW9uTm90aWZpZXIgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5tbQppbmRleCAw
ZWZjOTJhMGZlZTkwMmFkOTY4OWU2Y2VhY2M1NWE2NTcyZjRmYmQ5Li45ZTE5NWNhOTg4ZGQzN2Q0
M2JlYTQ0ODZkZGU1NTljNjc0MzFkYTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdl
ci5tbQpAQCAtMjgsNyArMjgsNiBAQAogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgVVNF
KEFWRk9VTkRBVElPTikKIAotI2ltcG9ydCAiQVZNZWRpYUNhcHR1cmVTb3VyY2UuaCIKICNpbXBv
cnQgIkFWVmlkZW9DYXB0dXJlU291cmNlLmgiCiAjaW1wb3J0ICJBdWRpb1NvdXJjZVByb3ZpZGVy
LmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCkBAIC01NSwyMCArNTQsMTIgQEAgU09GVF9MSU5LX0NM
QVNTKEFWRm91bmRhdGlvbiwgQVZDYXB0dXJlU2Vzc2lvbikKIFNPRlRfTElOS19DT05TVEFOVChB
VkZvdW5kYXRpb24sIEFWTWVkaWFUeXBlQXVkaW8sIE5TU3RyaW5nICopCiBTT0ZUX0xJTktfQ09O
U1RBTlQoQVZGb3VuZGF0aW9uLCBBVk1lZGlhVHlwZU11eGVkLCBOU1N0cmluZyAqKQogU09GVF9M
SU5LX0NPTlNUQU5UKEFWRm91bmRhdGlvbiwgQVZNZWRpYVR5cGVWaWRlbywgTlNTdHJpbmcgKikK
LVNPRlRfTElOS19DT05TVEFOVChBVkZvdW5kYXRpb24sIEFWQ2FwdHVyZVNlc3Npb25QcmVzZXQx
MjgweDcyMCwgTlNTdHJpbmcgKikKLVNPRlRfTElOS19DT05TVEFOVChBVkZvdW5kYXRpb24sIEFW
Q2FwdHVyZVNlc3Npb25QcmVzZXQ2NDB4NDgwLCBOU1N0cmluZyAqKQotU09GVF9MSU5LX0NPTlNU
QU5UKEFWRm91bmRhdGlvbiwgQVZDYXB0dXJlU2Vzc2lvblByZXNldDM1MngyODgsIE5TU3RyaW5n
ICopCi1TT0ZUX0xJTktfQ09OU1RBTlQoQVZGb3VuZGF0aW9uLCBBVkNhcHR1cmVTZXNzaW9uUHJl
c2V0TG93LCBOU1N0cmluZyAqKQogU09GVF9MSU5LX0NPTlNUQU5UKEFWRm91bmRhdGlvbiwgQVZD
YXB0dXJlRGV2aWNlV2FzQ29ubmVjdGVkTm90aWZpY2F0aW9uLCBOU1N0cmluZyAqKQogU09GVF9M
SU5LX0NPTlNUQU5UKEFWRm91bmRhdGlvbiwgQVZDYXB0dXJlRGV2aWNlV2FzRGlzY29ubmVjdGVk
Tm90aWZpY2F0aW9uLCBOU1N0cmluZyAqKQogCiAjZGVmaW5lIEFWTWVkaWFUeXBlQXVkaW8gZ2V0
QVZNZWRpYVR5cGVBdWRpbygpCiAjZGVmaW5lIEFWTWVkaWFUeXBlTXV4ZWQgZ2V0QVZNZWRpYVR5
cGVNdXhlZCgpCiAjZGVmaW5lIEFWTWVkaWFUeXBlVmlkZW8gZ2V0QVZNZWRpYVR5cGVWaWRlbygp
Ci0jZGVmaW5lIEFWQ2FwdHVyZVNlc3Npb25QcmVzZXQxMjgweDcyMCBnZXRBVkNhcHR1cmVTZXNz
aW9uUHJlc2V0MTI4MHg3MjAoKQotI2RlZmluZSBBVkNhcHR1cmVTZXNzaW9uUHJlc2V0NjQweDQ4
MCBnZXRBVkNhcHR1cmVTZXNzaW9uUHJlc2V0NjQweDQ4MCgpCi0jZGVmaW5lIEFWQ2FwdHVyZVNl
c3Npb25QcmVzZXQzNTJ4Mjg4IGdldEFWQ2FwdHVyZVNlc3Npb25QcmVzZXQzNTJ4Mjg4KCkKLSNk
ZWZpbmUgQVZDYXB0dXJlU2Vzc2lvblByZXNldExvdyBnZXRBVkNhcHR1cmVTZXNzaW9uUHJlc2V0
TG93KCkKICNkZWZpbmUgQVZDYXB0dXJlRGV2aWNlV2FzQ29ubmVjdGVkTm90aWZpY2F0aW9uIGdl
dEFWQ2FwdHVyZURldmljZVdhc0Nvbm5lY3RlZE5vdGlmaWNhdGlvbigpCiAjZGVmaW5lIEFWQ2Fw
dHVyZURldmljZVdhc0Rpc2Nvbm5lY3RlZE5vdGlmaWNhdGlvbiBnZXRBVkNhcHR1cmVEZXZpY2VX
YXNEaXNjb25uZWN0ZWROb3RpZmljYXRpb24oKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVk1lZGlhQ2FwdHVyZVNvdXJjZS5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZjQ4NDc2ZGU2ZDZmMmJmYWE3NWQyNWZm
NWIxYmZmMzAzMGU0MDU1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVk1lZGlhQ2Fw
dHVyZVNvdXJjZS5oCisrKyAvZGV2L251bGwKQEAgLTEsMTE2ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTMtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgQVZNZWRpYUNh
cHR1cmVTb3VyY2VfaAotI2RlZmluZSBBVk1lZGlhQ2FwdHVyZVNvdXJjZV9oCi0KLSNpZiBFTkFC
TEUoTUVESUFfU1RSRUFNKSAmJiBVU0UoQVZGT1VOREFUSU9OKQotCi0jaW5jbHVkZSAiR2VuZXJp
Y1Rhc2tRdWV1ZS5oIgotI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2UuaCIKLSNpbmNsdWRl
ICJUaW1lci5oIgotI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgotCi1PQkpDX0NMQVNTIEFWQ2Fw
dHVyZUF1ZGlvRGF0YU91dHB1dDsKLU9CSkNfQ0xBU1MgQVZDYXB0dXJlQ29ubmVjdGlvbjsKLU9C
SkNfQ0xBU1MgQVZDYXB0dXJlRGV2aWNlOwotT0JKQ19DTEFTUyBBVkNhcHR1cmVPdXRwdXQ7Ci1P
QkpDX0NMQVNTIEFWQ2FwdHVyZVNlc3Npb247Ci1PQkpDX0NMQVNTIEFWQ2FwdHVyZVZpZGVvRGF0
YU91dHB1dDsKLU9CSkNfQ0xBU1MgTlNFcnJvcjsKLU9CSkNfQ0xBU1MgTlNOb3RpZmljYXRpb247
Ci1PQkpDX0NMQVNTIFdlYkNvcmVBVk1lZGlhQ2FwdHVyZVNvdXJjZU9ic2VydmVyOwotCi10eXBl
ZGVmIHN0cnVjdCBvcGFxdWVDTVNhbXBsZUJ1ZmZlciAqQ01TYW1wbGVCdWZmZXJSZWY7Ci0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgQVZNZWRpYUNhcHR1cmVTb3VyY2U7Ci0KLWNsYXNz
IEFWTWVkaWFDYXB0dXJlU291cmNlIDogcHVibGljIFJlYWx0aW1lTWVkaWFTb3VyY2UgewotcHVi
bGljOgotICAgIHZpcnR1YWwgfkFWTWVkaWFDYXB0dXJlU291cmNlKCk7Ci0KLSAgICB2aXJ0dWFs
IHZvaWQgY2FwdHVyZU91dHB1dERpZE91dHB1dFNhbXBsZUJ1ZmZlckZyb21Db25uZWN0aW9uKEFW
Q2FwdHVyZU91dHB1dCosIENNU2FtcGxlQnVmZmVyUmVmLCBBVkNhcHR1cmVDb25uZWN0aW9uKikg
PSAwOwotCi0gICAgdm9pZCBjYXB0dXJlU2Vzc2lvbklzUnVubmluZ0RpZENoYW5nZShib29sKTsK
LSAgICB2b2lkIGNhcHR1cmVTZXNzaW9uUnVudGltZUVycm9yKFJldGFpblB0cjxOU0Vycm9yPik7
Ci0KLSAgICBlbnVtIGNsYXNzIEludGVycnVwdGlvblJlYXNvbiB7IE5vbmUsIFZpZGVvTm90QWxs
b3dlZEluQmFja2dyb3VuZCwgQXVkaW9JblVzZSwgVmlkZW9JblVzZSwgVmlkZW9Ob3RBbGxvd2Vk
SW5TaWRlQnlTaWRlIH07Ci0gICAgdm9pZCBjYXB0dXJlU2Vzc2lvbkJlZ2luSW50ZXJydXB0aW9u
KFJldGFpblB0cjxOU05vdGlmaWNhdGlvbj4pOwotICAgIHZvaWQgY2FwdHVyZVNlc3Npb25FbmRJ
bnRlcnJ1cHRpb24oUmV0YWluUHRyPE5TTm90aWZpY2F0aW9uPik7Ci0KLSAgICBBVkNhcHR1cmVT
ZXNzaW9uICpzZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9zZXNzaW9uLmdldCgpOyB9Ci0KLSAg
ICBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIHNldHRpbmdzKCkgY29uc3QgZmlu
YWw7Ci0KLSAgICB2b2lkIHN0YXJ0UHJvZHVjaW5nRGF0YSgpIGZpbmFsOwotICAgIHZvaWQgc3Rv
cFByb2R1Y2luZ0RhdGEoKSBmaW5hbDsKLQotcHJvdGVjdGVkOgotICAgIEFWTWVkaWFDYXB0dXJl
U291cmNlKEFWQ2FwdHVyZURldmljZSosIGNvbnN0IEF0b21pY1N0cmluZyYsIFJlYWx0aW1lTWVk
aWFTb3VyY2U6OlR5cGUpOwotCi0gICAgdmlydHVhbCBib29sIHNldHVwQ2FwdHVyZVNlc3Npb24o
KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNodXRkb3duQ2FwdHVyZVNlc3Npb24oKSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNldHRpbmdzKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5n
cyYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZUNhcGFiaWxpdGllcyhSZWFsdGlt
ZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBpbml0aWFs
aXplU3VwcG9ydGVkQ29uc3RyYWludHMoUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0
cmFpbnRzJikgPSAwOwotCi0gICAgQVZDYXB0dXJlRGV2aWNlICpkZXZpY2UoKSBjb25zdCB7IHJl
dHVybiBtX2RldmljZS5nZXQoKTsgfQotCi0gICAgUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRl
ZENvbnN0cmFpbnRzJiBzdXBwb3J0ZWRDb25zdHJhaW50cygpOwotICAgIGNvbnN0IFJlYWx0aW1l
TWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmIGNhcGFiaWxpdGllcygpIGNvbnN0IGZpbmFsOwotCi0g
ICAgdm9pZCBzZXRWaWRlb1NhbXBsZUJ1ZmZlckRlbGVnYXRlKEFWQ2FwdHVyZVZpZGVvRGF0YU91
dHB1dCopOwotICAgIHZvaWQgc2V0QXVkaW9TYW1wbGVCdWZmZXJEZWxlZ2F0ZShBVkNhcHR1cmVB
dWRpb0RhdGFPdXRwdXQqKTsKLQotcHJpdmF0ZToKLSAgICBib29sIHNldHVwU2Vzc2lvbigpOwot
Ci0gICAgdm9pZCBiZWdpbkNvbmZpZ3VyYXRpb24oKSBmaW5hbDsKLSAgICB2b2lkIGNvbW1pdENv
bmZpZ3VyYXRpb24oKSBmaW5hbDsKLQotICAgIGJvb2wgaXNDYXB0dXJlU291cmNlKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQotCi0gICAgYm9vbCBpbnRlcnJ1cHRlZCgpIGNvbnN0IGZp
bmFsOwotCi0gICAgdm9pZCBpbml0aWFsaXplU2V0dGluZ3MoKTsKLSAgICB2b2lkIGluaXRpYWxp
emVDYXBhYmlsaXRpZXMoKTsKLQotICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyBtX2N1
cnJlbnRTZXR0aW5nczsKLSAgICBSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWlu
dHMgbV9zdXBwb3J0ZWRDb25zdHJhaW50czsKLSAgICBSZXRhaW5QdHI8V2ViQ29yZUFWTWVkaWFD
YXB0dXJlU291cmNlT2JzZXJ2ZXI+IG1fb2JqY09ic2VydmVyOwotICAgIHN0ZDo6dW5pcXVlX3B0
cjxSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzPiBtX2NhcGFiaWxpdGllczsKLSAgICBS
ZXRhaW5QdHI8QVZDYXB0dXJlU2Vzc2lvbj4gbV9zZXNzaW9uOwotICAgIFJldGFpblB0cjxBVkNh
cHR1cmVEZXZpY2U+IG1fZGV2aWNlOwotICAgIEludGVycnVwdGlvblJlYXNvbiBtX2ludGVycnVw
dGlvbiB7IEludGVycnVwdGlvblJlYXNvbjo6Tm9uZSB9OwotICAgIGJvb2wgbV9pc1J1bm5pbmcg
eyBmYWxzZSB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5B
QkxFKE1FRElBX1NUUkVBTSkKLQotI2VuZGlmIC8vIEFWTWVkaWFDYXB0dXJlU291cmNlX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVv
Q2FwdHVyZVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L0FWVmlkZW9DYXB0dXJlU291cmNlLmgKaW5kZXggZjhkY2QwMGFmZTIzMGEyZjUyMGZkZGY4M2Ew
NWRiOTU2ZDBjZjMxYS4uNzQ4ZTQ4MDBjNTUxZjg5NTI3YmNhNjBlYjk2MzdjNDQ5NWY0ZTc2OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlk
ZW9DYXB0dXJlU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLmgKQEAgLTI3LDIzICsyNywyNCBAQAogCiAjaWYg
RU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgVVNFKEFWRk9VTkRBVElPTikKIAotI2luY2x1ZGUgIkFW
TWVkaWFDYXB0dXJlU291cmNlLmgiCiAjaW5jbHVkZSAiT3JpZW50YXRpb25Ob3RpZmllci5oIgor
I2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2UuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdIYXNoLmg+CiAKLU9CSkNfQ0xBU1MgQ0FMYXllcjsKLU9CSkNfQ0xBU1MgQVZGcmFtZVJhdGVS
YW5nZTsKK3R5cGVkZWYgc3RydWN0IG9wYXF1ZUNNU2FtcGxlQnVmZmVyKiBDTVNhbXBsZUJ1ZmZl
clJlZjsKIAotdHlwZWRlZiBzdHJ1Y3QgQ0dJbWFnZSAqQ0dJbWFnZVJlZjsKLXR5cGVkZWYgY29u
c3Qgc3RydWN0IG9wYXF1ZUNNRm9ybWF0RGVzY3JpcHRpb24gKkNNRm9ybWF0RGVzY3JpcHRpb25S
ZWY7Ci10eXBlZGVmIHN0cnVjdCBvcGFxdWVDTVNhbXBsZUJ1ZmZlciAqQ01TYW1wbGVCdWZmZXJS
ZWY7CitPQkpDX0NMQVNTIEFWQ2FwdHVyZUNvbm5lY3Rpb247CitPQkpDX0NMQVNTIEFWQ2FwdHVy
ZURldmljZTsKK09CSkNfQ0xBU1MgQVZDYXB0dXJlT3V0cHV0OworT0JKQ19DTEFTUyBBVkNhcHR1
cmVTZXNzaW9uOworT0JKQ19DTEFTUyBBVkNhcHR1cmVWaWRlb0RhdGFPdXRwdXQ7CitPQkpDX0NM
QVNTIE5TRXJyb3I7CitPQkpDX0NMQVNTIE5TTm90aWZpY2F0aW9uOworT0JKQ19DTEFTUyBXZWJD
b3JlQVZWaWRlb0NhcHR1cmVTb3VyY2VPYnNlcnZlcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1jbGFzcyBGbG9hdFJlY3Q7Ci1jbGFzcyBHcmFwaGljc0NvbnRleHQ7Ci1jbGFzcyBQaXhlbEJ1
ZmZlckNvbmZvcm1lckNWOwotCi1jbGFzcyBBVlZpZGVvQ2FwdHVyZVNvdXJjZSA6IHB1YmxpYyBB
Vk1lZGlhQ2FwdHVyZVNvdXJjZSwgcHJpdmF0ZSBPcmllbnRhdGlvbk5vdGlmaWVyOjpPYnNlcnZl
ciB7CitjbGFzcyBBVlZpZGVvQ2FwdHVyZVNvdXJjZSA6IHB1YmxpYyBSZWFsdGltZU1lZGlhU291
cmNlLCBwcml2YXRlIE9yaWVudGF0aW9uTm90aWZpZXI6Ok9ic2VydmVyIHsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgQ2FwdHVyZVNvdXJjZU9yRXJyb3IgY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYs
IGNvbnN0IE1lZGlhQ29uc3RyYWludHMqKTsKIApAQCAtNTIsNDMgKzUzLDU5IEBAIHB1YmxpYzoK
ICAgICBpbnQzMl90IHdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV93aWR0aDsgfQogICAgIGludDMy
X3QgaGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9oZWlnaHQ7IH0KIAorICAgIGVudW0gY2xhc3Mg
SW50ZXJydXB0aW9uUmVhc29uIHsgTm9uZSwgVmlkZW9Ob3RBbGxvd2VkSW5CYWNrZ3JvdW5kLCBB
dWRpb0luVXNlLCBWaWRlb0luVXNlLCBWaWRlb05vdEFsbG93ZWRJblNpZGVCeVNpZGUgfTsKKyAg
ICB2b2lkIGNhcHR1cmVTZXNzaW9uQmVnaW5JbnRlcnJ1cHRpb24oUmV0YWluUHRyPE5TTm90aWZp
Y2F0aW9uPik7CisgICAgdm9pZCBjYXB0dXJlU2Vzc2lvbkVuZEludGVycnVwdGlvbihSZXRhaW5Q
dHI8TlNOb3RpZmljYXRpb24+KTsKKworICAgIEFWQ2FwdHVyZVNlc3Npb24qIHNlc3Npb24oKSBj
b25zdCB7IHJldHVybiBtX3Nlc3Npb24uZ2V0KCk7IH0KKworICAgIHZvaWQgY2FwdHVyZVNlc3Np
b25Jc1J1bm5pbmdEaWRDaGFuZ2UoYm9vbCk7CisgICAgdm9pZCBjYXB0dXJlU2Vzc2lvblJ1bnRp
bWVFcnJvcihSZXRhaW5QdHI8TlNFcnJvcj4pOworICAgIHZvaWQgY2FwdHVyZU91dHB1dERpZE91
dHB1dFNhbXBsZUJ1ZmZlckZyb21Db25uZWN0aW9uKEFWQ2FwdHVyZU91dHB1dCosIENNU2FtcGxl
QnVmZmVyUmVmLCBBVkNhcHR1cmVDb25uZWN0aW9uKik7CisKIHByaXZhdGU6CiAgICAgQVZWaWRl
b0NhcHR1cmVTb3VyY2UoQVZDYXB0dXJlRGV2aWNlKiwgY29uc3QgQXRvbWljU3RyaW5nJik7CiAg
ICAgdmlydHVhbCB+QVZWaWRlb0NhcHR1cmVTb3VyY2UoKTsKIAotICAgIGJvb2wgc2V0dXBDYXB0
dXJlU2Vzc2lvbigpIGZpbmFsOwotICAgIHZvaWQgc2h1dGRvd25DYXB0dXJlU2Vzc2lvbigpIGZp
bmFsOwotCi0gICAgdm9pZCB1cGRhdGVTZXR0aW5ncyhSZWFsdGltZU1lZGlhU291cmNlU2V0dGlu
Z3MmKSBmaW5hbDsKKyAgICBib29sIHNldHVwU2Vzc2lvbigpOworICAgIGJvb2wgc2V0dXBDYXB0
dXJlU2Vzc2lvbigpOworICAgIHZvaWQgc2h1dGRvd25DYXB0dXJlU2Vzc2lvbigpOwogCisgICAg
Y29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYgY2FwYWJpbGl0aWVzKCkgY29u
c3QgZmluYWw7CiAgICAgdm9pZCBhcHBseVNpemVBbmRGcmFtZVJhdGUoc3RkOjpvcHRpb25hbDxp
bnQ+IHdpZHRoLCBzdGQ6Om9wdGlvbmFsPGludD4gaGVpZ2h0LCBzdGQ6Om9wdGlvbmFsPGRvdWJs
ZT4pIGZpbmFsOwogICAgIGJvb2wgYXBwbHlTaXplKGNvbnN0IEludFNpemUmKSBmaW5hbDsKICAg
ICBib29sIGFwcGx5RnJhbWVSYXRlKGRvdWJsZSkgZmluYWw7Ci0gICAgYm9vbCBzZXRQcmVzZXQo
TlNTdHJpbmcqKTsKLQorICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgc2V0
dGluZ3MoKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIHN0YXJ0UHJvZHVjaW5nRGF0YSgpIGZpbmFs
OworICAgIHZvaWQgc3RvcFByb2R1Y2luZ0RhdGEoKSBmaW5hbDsKKyAgICBib29sIHN1cHBvcnRz
U2l6ZUFuZEZyYW1lUmF0ZShzdGQ6Om9wdGlvbmFsPGludD4gd2lkdGgsIHN0ZDo6b3B0aW9uYWw8
aW50PiBoZWlnaHQsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPikgZmluYWw7CisgICAgdm9pZCBzZXR0
aW5nc0RpZENoYW5nZSgpIGZpbmFsOwogICAgIHZvaWQgbW9uaXRvck9yaWVudGF0aW9uKE9yaWVu
dGF0aW9uTm90aWZpZXImKSBmaW5hbDsKKyAgICB2b2lkIGJlZ2luQ29uZmlndXJhdGlvbigpIGZp
bmFsOworICAgIHZvaWQgY29tbWl0Q29uZmlndXJhdGlvbigpIGZpbmFsOworICAgIGJvb2wgaXND
YXB0dXJlU291cmNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgaW50
ZXJydXB0ZWQoKSBjb25zdCBmaW5hbDsKKworICAgIGJvb2wgc2V0UHJlc2V0KE5TU3RyaW5nKik7
CiAgICAgdm9pZCBjb21wdXRlU2FtcGxlUm90YXRpb24oKTsKIAogICAgIGJvb2wgaXNGcmFtZVJh
dGVTdXBwb3J0ZWQoZG91YmxlIGZyYW1lUmF0ZSk7CiAKLSAgICBOU1N0cmluZyAqYmVzdFNlc3Np
b25QcmVzZXRGb3JWaWRlb0RpbWVuc2lvbnMoc3RkOjpvcHRpb25hbDxpbnQ+IHdpZHRoLCBzdGQ6
Om9wdGlvbmFsPGludD4gaGVpZ2h0KTsKLSAgICBib29sIHN1cHBvcnRzU2l6ZUFuZEZyYW1lUmF0
ZShzdGQ6Om9wdGlvbmFsPGludD4gd2lkdGgsIHN0ZDo6b3B0aW9uYWw8aW50PiBoZWlnaHQsIHN0
ZDo6b3B0aW9uYWw8ZG91YmxlPikgZmluYWw7Ci0KLSAgICB2b2lkIGluaXRpYWxpemVDYXBhYmls
aXRpZXMoUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYpIGZpbmFsOwotICAgIHZvaWQg
aW5pdGlhbGl6ZVN1cHBvcnRlZENvbnN0cmFpbnRzKFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0
ZWRDb25zdHJhaW50cyYpIGZpbmFsOworICAgIE5TU3RyaW5nKiBiZXN0U2Vzc2lvblByZXNldEZv
clZpZGVvRGltZW5zaW9ucyhzdGQ6Om9wdGlvbmFsPGludD4gd2lkdGgsIHN0ZDo6b3B0aW9uYWw8
aW50PiBoZWlnaHQpOwogCiAgICAgLy8gT3JpZW50YXRpb25Ob3RpZmllcjo6T2JzZXJ2ZXIgQVBJ
CiAgICAgdm9pZCBvcmllbnRhdGlvbkNoYW5nZWQoaW50IG9yaWVudGF0aW9uKSBmaW5hbDsKIAog
ICAgIGJvb2wgc2V0RnJhbWVSYXRlQ29uc3RyYWludChkb3VibGUgbWluRnJhbWVSYXRlLCBkb3Vi
bGUgbWF4RnJhbWVSYXRlKTsKIAotICAgIHZvaWQgY2FwdHVyZU91dHB1dERpZE91dHB1dFNhbXBs
ZUJ1ZmZlckZyb21Db25uZWN0aW9uKEFWQ2FwdHVyZU91dHB1dCosIENNU2FtcGxlQnVmZmVyUmVm
LCBBVkNhcHR1cmVDb25uZWN0aW9uKikgZmluYWw7CiAgICAgdm9pZCBwcm9jZXNzTmV3RnJhbWUo
UmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPiwgUmV0YWluUHRyPEFWQ2FwdHVyZUNvbm5lY3Rp
b24+KTsKICAgICBJbnRTaXplIHNpemVGb3JQcmVzZXQoTlNTdHJpbmcqKTsKIAogICAgIHVzaW5n
IFZpZGVvUHJlc2V0TWFwID0gSGFzaE1hcDxTdHJpbmcsIEludFNpemU+OwogICAgIFZpZGVvUHJl
c2V0TWFwJiB2aWRlb1ByZXNldHMoKSB7IHJldHVybiBtX3N1cHBvcnRlZFByZXNldHM7IH0KIAor
ICAgIEFWQ2FwdHVyZURldmljZSogZGV2aWNlKCkgY29uc3QgeyByZXR1cm4gbV9kZXZpY2UuZ2V0
KCk7IH0KKwogICAgIFJldGFpblB0cjxOU1N0cmluZz4gbV9wZW5kaW5nUHJlc2V0OwogICAgIFJl
dGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4gbV9idWZmZXI7CiAgICAgUmV0YWluUHRyPEFWQ2Fw
dHVyZVZpZGVvRGF0YU91dHB1dD4gbV92aWRlb091dHB1dDsKQEAgLTEwMSw2ICsxMTgsMTUgQEAg
cHJpdmF0ZToKICAgICBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbiBtX3NhbXBsZVJvdGF0aW9u
IHsgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246Ok5vbmUgfTsKIAogICAgIFZpZGVvUHJlc2V0
TWFwIG1fc3VwcG9ydGVkUHJlc2V0czsKKworICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxSZWFs
dGltZU1lZGlhU291cmNlU2V0dGluZ3M+IG1fY3VycmVudFNldHRpbmdzOworICAgIG11dGFibGUg
c3RkOjpvcHRpb25hbDxSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzPiBtX2NhcGFiaWxp
dGllczsKKyAgICBSZXRhaW5QdHI8V2ViQ29yZUFWVmlkZW9DYXB0dXJlU291cmNlT2JzZXJ2ZXI+
IG1fb2JqY09ic2VydmVyOworICAgIFJldGFpblB0cjxBVkNhcHR1cmVTZXNzaW9uPiBtX3Nlc3Np
b247CisgICAgUmV0YWluUHRyPEFWQ2FwdHVyZURldmljZT4gbV9kZXZpY2U7CisgICAgSW50ZXJy
dXB0aW9uUmVhc29uIG1faW50ZXJydXB0aW9uIHsgSW50ZXJydXB0aW9uUmVhc29uOjpOb25lIH07
CisgICAgYm9vbCBtX2lzUnVubmluZyB7IGZhbHNlIH07CisKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5tbQppbmRleCBmYWNjMzhmMDhhODgw
OWQyYjNiODMzOWYyOWZlNzk0OWUyN2I3NmU5Li4xN2UwNTU2ZDljNjc4MTAyOTNlZTI4OWQxZTlm
MDJhN2VjY2EyMDRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLm1tCkBAIC0yOCwzMCAr
MjgsMjEgQEAKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFVTRShBVkZPVU5EQVRJT04p
CiAKLSNpbXBvcnQgIkFWQ2FwdHVyZURldmljZU1hbmFnZXIuaCIKLSNpbXBvcnQgIkdyYXBoaWNz
Q29udGV4dENHLmgiCiAjaW1wb3J0ICJJbWFnZUJ1ZmZlci5oIgogI2ltcG9ydCAiSW50UmVjdC5o
IgogI2ltcG9ydCAiTG9nZ2luZy5oIgogI2ltcG9ydCAiTWVkaWFDb25zdHJhaW50cy5oIgogI2lt
cG9ydCAiTWVkaWFTYW1wbGVBVkZPYmpDLmgiCi0jaW1wb3J0ICJOb3RJbXBsZW1lbnRlZC5oIgot
I2ltcG9ydCAiUGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5oIgogI2ltcG9ydCAiUGxhdGZvcm1MYXll
ci5oIgogI2ltcG9ydCAiUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5oIgogI2ltcG9ydCAi
UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzLmgiCi0jaW1wb3J0ICJXZWJBY3Rpb25EaXNhYmxp
bmdDQUxheWVyRGVsZWdhdGUuaCIKICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVkNhcHR1cmVEZXZp
Y2UuaD4KICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVkNhcHR1cmVJbnB1dC5oPgogI2ltcG9ydCA8
QVZGb3VuZGF0aW9uL0FWQ2FwdHVyZU91dHB1dC5oPgogI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FW
Q2FwdHVyZVNlc3Npb24uaD4KKyNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVkVycm9yLmg+CiAjaW1w
b3J0IDxvYmpjL3J1bnRpbWUuaD4KIAotI2lmIFBMQVRGT1JNKElPUykKLSNpbmNsdWRlICJXZWJD
b3JlVGhyZWFkLmgiCi0jaW5jbHVkZSAiV2ViQ29yZVRocmVhZFJ1bi5oIgotI2VuZGlmCi0KICNp
bXBvcnQgPHBhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5oPgogI2ltcG9ydCAiQ29yZVZpZGVvU29m
dExpbmsuaCIKIApAQCAtNjIsNiArNTMsNyBAQCB0eXBlZGVmIEFWQ2FwdHVyZURldmljZUlucHV0
IEFWQ2FwdHVyZURldmljZUlucHV0VHlwZTsKIHR5cGVkZWYgQVZDYXB0dXJlT3V0cHV0IEFWQ2Fw
dHVyZU91dHB1dFR5cGU7CiB0eXBlZGVmIEFWQ2FwdHVyZVZpZGVvRGF0YU91dHB1dCBBVkNhcHR1
cmVWaWRlb0RhdGFPdXRwdXRUeXBlOwogdHlwZWRlZiBBVkZyYW1lUmF0ZVJhbmdlIEFWRnJhbWVS
YXRlUmFuZ2VUeXBlOwordHlwZWRlZiBBVkNhcHR1cmVTZXNzaW9uIEFWQ2FwdHVyZVNlc3Npb25U
eXBlOwogCiBTT0ZUX0xJTktfRlJBTUVXT1JLX09QVElPTkFMKEFWRm91bmRhdGlvbikKIApAQCAt
NzIsNiArNjQsNyBAQCBTT0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVkNhcHR1cmVEZXZp
Y2VJbnB1dCkKIFNPRlRfTElOS19DTEFTUyhBVkZvdW5kYXRpb24sIEFWQ2FwdHVyZU91dHB1dCkK
IFNPRlRfTElOS19DTEFTUyhBVkZvdW5kYXRpb24sIEFWQ2FwdHVyZVZpZGVvRGF0YU91dHB1dCkK
IFNPRlRfTElOS19DTEFTUyhBVkZvdW5kYXRpb24sIEFWRnJhbWVSYXRlUmFuZ2UpCitTT0ZUX0xJ
TktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVkNhcHR1cmVTZXNzaW9uKQogCiAjZGVmaW5lIEFWQ2Fw
dHVyZUNvbm5lY3Rpb24gZ2V0QVZDYXB0dXJlQ29ubmVjdGlvbkNsYXNzKCkKICNkZWZpbmUgQVZD
YXB0dXJlRGV2aWNlIGdldEFWQ2FwdHVyZURldmljZUNsYXNzKCkKQEAgLTk3LDEzICs5MCw0MCBA
QCBTT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUwoQVZGb3VuZGF0aW9uLCBBVkNhcHR1cmVTZXNz
aW9uUHJlc2V0MzIweDI0MCwgTlNTdHJpbgogI2lmIFBMQVRGT1JNKElPUykKIFNPRlRfTElOS19D
T05TVEFOVF9NQVlfRkFJTChBVkZvdW5kYXRpb24sIEFWQ2FwdHVyZVNlc3Npb25QcmVzZXQzODQw
eDIxNjAsIE5TU3RyaW5nICopCiBTT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUwoQVZGb3VuZGF0
aW9uLCBBVkNhcHR1cmVTZXNzaW9uUHJlc2V0MTkyMHgxMDgwLCBOU1N0cmluZyAqKQorU09GVF9M
SU5LX1BPSU5URVJfT1BUSU9OQUwoQVZGb3VuZGF0aW9uLCBBVkNhcHR1cmVTZXNzaW9uUnVudGlt
ZUVycm9yTm90aWZpY2F0aW9uLCBOU1N0cmluZyAqKQorU09GVF9MSU5LX1BPSU5URVJfT1BUSU9O
QUwoQVZGb3VuZGF0aW9uLCBBVkNhcHR1cmVTZXNzaW9uV2FzSW50ZXJydXB0ZWROb3RpZmljYXRp
b24sIE5TU3RyaW5nICopCitTT0ZUX0xJTktfUE9JTlRFUl9PUFRJT05BTChBVkZvdW5kYXRpb24s
IEFWQ2FwdHVyZVNlc3Npb25JbnRlcnJ1cHRpb25FbmRlZE5vdGlmaWNhdGlvbiwgTlNTdHJpbmcg
KikKK1NPRlRfTElOS19QT0lOVEVSX09QVElPTkFMKEFWRm91bmRhdGlvbiwgQVZDYXB0dXJlU2Vz
c2lvbkludGVycnVwdGlvblJlYXNvbktleSwgTlNTdHJpbmcgKikKK1NPRlRfTElOS19QT0lOVEVS
X09QVElPTkFMKEFWRm91bmRhdGlvbiwgQVZDYXB0dXJlU2Vzc2lvbkVycm9yS2V5LCBOU1N0cmlu
ZyAqKQogCiAjZGVmaW5lIEFWQ2FwdHVyZVNlc3Npb25QcmVzZXQzODQweDIxNjAgZ2V0QVZDYXB0
dXJlU2Vzc2lvblByZXNldDM4NDB4MjE2MCgpCiAjZGVmaW5lIEFWQ2FwdHVyZVNlc3Npb25QcmVz
ZXQxOTIweDEwODAgZ2V0QVZDYXB0dXJlU2Vzc2lvblByZXNldDE5MjB4MTA4MCgpCisjZGVmaW5l
IEFWQ2FwdHVyZVNlc3Npb25SdW50aW1lRXJyb3JOb3RpZmljYXRpb24gZ2V0QVZDYXB0dXJlU2Vz
c2lvblJ1bnRpbWVFcnJvck5vdGlmaWNhdGlvbigpCisjZGVmaW5lIEFWQ2FwdHVyZVNlc3Npb25X
YXNJbnRlcnJ1cHRlZE5vdGlmaWNhdGlvbiBnZXRBVkNhcHR1cmVTZXNzaW9uV2FzSW50ZXJydXB0
ZWROb3RpZmljYXRpb24oKQorI2RlZmluZSBBVkNhcHR1cmVTZXNzaW9uSW50ZXJydXB0aW9uRW5k
ZWROb3RpZmljYXRpb24gZ2V0QVZDYXB0dXJlU2Vzc2lvbkludGVycnVwdGlvbkVuZGVkTm90aWZp
Y2F0aW9uKCkKKyNkZWZpbmUgQVZDYXB0dXJlU2Vzc2lvbkludGVycnVwdGlvblJlYXNvbktleSBn
ZXRBVkNhcHR1cmVTZXNzaW9uSW50ZXJydXB0aW9uUmVhc29uS2V5KCkKKyNkZWZpbmUgQVZDYXB0
dXJlU2Vzc2lvbkVycm9yS2V5IGdldEFWQ2FwdHVyZVNlc3Npb25FcnJvcktleSgpCiAjZW5kaWYK
IAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKK0BpbnRlcmZhY2UgV2ViQ29yZUFWVmlkZW9D
YXB0dXJlU291cmNlT2JzZXJ2ZXIgOiBOU09iamVjdDxBVkNhcHR1cmVWaWRlb0RhdGFPdXRwdXRT
YW1wbGVCdWZmZXJEZWxlZ2F0ZT4geworICAgIEFWVmlkZW9DYXB0dXJlU291cmNlKiBtX2NhbGxi
YWNrOworfQorCistKGlkKWluaXRXaXRoQ2FsbGJhY2s6KEFWVmlkZW9DYXB0dXJlU291cmNlKilj
YWxsYmFjazsKKy0odm9pZClkaXNjb25uZWN0OworLSh2b2lkKWFkZE5vdGlmaWNhdGlvbk9ic2Vy
dmVyczsKKy0odm9pZClyZW1vdmVOb3RpZmljYXRpb25PYnNlcnZlcnM7CistKHZvaWQpY2FwdHVy
ZU91dHB1dDooQVZDYXB0dXJlT3V0cHV0VHlwZSopY2FwdHVyZU91dHB1dCBkaWRPdXRwdXRTYW1w
bGVCdWZmZXI6KENNU2FtcGxlQnVmZmVyUmVmKXNhbXBsZUJ1ZmZlciBmcm9tQ29ubmVjdGlvbjoo
QVZDYXB0dXJlQ29ubmVjdGlvblR5cGUqKWNvbm5lY3Rpb247CistKHZvaWQpb2JzZXJ2ZVZhbHVl
Rm9yS2V5UGF0aDprZXlQYXRoIG9mT2JqZWN0OihpZClvYmplY3QgY2hhbmdlOihOU0RpY3Rpb25h
cnkqKWNoYW5nZSBjb250ZXh0Oih2b2lkKiljb250ZXh0OworI2lmIFBMQVRGT1JNKElPUykKKy0o
dm9pZClzZXNzaW9uUnVudGltZUVycm9yOihOU05vdGlmaWNhdGlvbiopbm90aWZpY2F0aW9uOwor
LSh2b2lkKWJlZ2luU2Vzc2lvbkludGVycnVwdGVkOihOU05vdGlmaWNhdGlvbiopbm90aWZpY2F0
aW9uOworLSh2b2lkKWVuZFNlc3Npb25JbnRlcnJ1cHRlZDooTlNOb3RpZmljYXRpb24qKW5vdGlm
aWNhdGlvbjsKKyNlbmRpZgorQGVuZAorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNpZiBQTEFU
Rk9STShNQUMpCkBAIC0xMTIsNiArMTMyLDE2IEBAIGNvbnN0IE9TVHlwZSB2aWRlb0NhcHR1cmVG
b3JtYXQgPSBrQ1ZQaXhlbEZvcm1hdFR5cGVfNDIwWXBDYkNyOFBsYW5hcjsKIGNvbnN0IE9TVHlw
ZSB2aWRlb0NhcHR1cmVGb3JtYXQgPSBrQ1ZQaXhlbEZvcm1hdFR5cGVfNDIwWXBDYkNyOEJpUGxh
bmFyRnVsbFJhbmdlOwogI2VuZGlmCiAKK3N0YXRpYyBkaXNwYXRjaF9xdWV1ZV90IGdsb2JhVmlk
ZW9DYXB0dXJlU2VyaWFsUXVldWUoKQoreworICAgIHN0YXRpYyBkaXNwYXRjaF9xdWV1ZV90IGds
b2JhbFF1ZXVlOworICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRva2VuOworICAgIGRp
c3BhdGNoX29uY2UoJm9uY2VUb2tlbiwgXnsKKyAgICAgICAgZ2xvYmFsUXVldWUgPSBkaXNwYXRj
aF9xdWV1ZV9jcmVhdGVfd2l0aF90YXJnZXQoIldlYkNvcmVBVlZpZGVvQ2FwdHVyZVNvdXJjZSB2
aWRlbyBjYXB0dXJlIHF1ZXVlIiwgRElTUEFUQ0hfUVVFVUVfU0VSSUFMLCBkaXNwYXRjaF9nZXRf
Z2xvYmFsX3F1ZXVlKERJU1BBVENIX1FVRVVFX1BSSU9SSVRZX0hJR0gsIDApKTsKKyAgICB9KTsK
KyAgICByZXR1cm4gZ2xvYmFsUXVldWU7Cit9CisKIENhcHR1cmVTb3VyY2VPckVycm9yIEFWVmlk
ZW9DYXB0dXJlU291cmNlOjpjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBpZCwgY29uc3QgTWVk
aWFDb25zdHJhaW50cyogY29uc3RyYWludHMpCiB7CiAgICAgQVZDYXB0dXJlRGV2aWNlVHlwZWRl
ZiAqZGV2aWNlID0gW2dldEFWQ2FwdHVyZURldmljZUNsYXNzKCkgZGV2aWNlV2l0aFVuaXF1ZUlE
OmlkXTsKQEAgLTEyOSw3ICsxNTksOSBAQCBDYXB0dXJlU291cmNlT3JFcnJvciBBVlZpZGVvQ2Fw
dHVyZVNvdXJjZTo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgaWQsIGNvbnN0CiB9CiAKIEFW
VmlkZW9DYXB0dXJlU291cmNlOjpBVlZpZGVvQ2FwdHVyZVNvdXJjZShBVkNhcHR1cmVEZXZpY2VU
eXBlZGVmKiBkZXZpY2UsIGNvbnN0IEF0b21pY1N0cmluZyYgaWQpCi0gICAgOiBBVk1lZGlhQ2Fw
dHVyZVNvdXJjZShkZXZpY2UsIGlkLCBUeXBlOjpWaWRlbykKKyAgICA6IFJlYWx0aW1lTWVkaWFT
b3VyY2UoaWQsIFR5cGU6OlZpZGVvLCBkZXZpY2UubG9jYWxpemVkTmFtZSkKKyAgICAsIG1fb2Jq
Y09ic2VydmVyKGFkb3B0TlMoW1tXZWJDb3JlQVZWaWRlb0NhcHR1cmVTb3VyY2VPYnNlcnZlciBh
bGxvY10gaW5pdFdpdGhDYWxsYmFjazp0aGlzXSkpCisgICAgLCBtX2RldmljZShkZXZpY2UpCiB7
CiAgICAgc3RydWN0IFZpZGVvUHJlc2V0IHsKICAgICAgICAgYm9vbCBzeW1ib2xBdmFpbGFibGU7
CkBAIC0xNTcsMTIgKzE4OSw2MCBAQCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6QVZWaWRlb0NhcHR1
cmVTb3VyY2UoQVZDYXB0dXJlRGV2aWNlVHlwZWRlZiogZGV2aWNlLCBjb25zdAogCiAgICAgICAg
IHByZXNldHNNYXAtPmFkZChTdHJpbmcocHJlc2V0Lm5hbWUpLCBJbnRTaXplKHByZXNldC53aWR0
aCwgcHJlc2V0LmhlaWdodCkpOwogICAgIH0KKworI2lmIFBMQVRGT1JNKElPUykKKyAgICBzdGF0
aWNfYXNzZXJ0KHN0YXRpY19jYXN0PGludD4oSW50ZXJydXB0aW9uUmVhc29uOjpWaWRlb05vdEFs
bG93ZWRJbkJhY2tncm91bmQpID09IHN0YXRpY19jYXN0PGludD4oQVZDYXB0dXJlU2Vzc2lvbklu
dGVycnVwdGlvblJlYXNvblZpZGVvRGV2aWNlTm90QXZhaWxhYmxlSW5CYWNrZ3JvdW5kKSwgIklu
dGVycnVwdGlvblJlYXNvbjo6VmlkZW9Ob3RBbGxvd2VkSW5CYWNrZ3JvdW5kIGlzIG5vdCBBVkNh
cHR1cmVTZXNzaW9uSW50ZXJydXB0aW9uUmVhc29uVmlkZW9EZXZpY2VOb3RBdmFpbGFibGVJbkJh
Y2tncm91bmQgYXMgZXhwZWN0ZWQiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PGlu
dD4oSW50ZXJydXB0aW9uUmVhc29uOjpWaWRlb05vdEFsbG93ZWRJblNpZGVCeVNpZGUpID09IEFW
Q2FwdHVyZVNlc3Npb25JbnRlcnJ1cHRpb25SZWFzb25WaWRlb0RldmljZU5vdEF2YWlsYWJsZVdp
dGhNdWx0aXBsZUZvcmVncm91bmRBcHBzLCAiSW50ZXJydXB0aW9uUmVhc29uOjpWaWRlb05vdEFs
bG93ZWRJblNpZGVCeVNpZGUgaXMgbm90IEFWQ2FwdHVyZVNlc3Npb25JbnRlcnJ1cHRpb25SZWFz
b25WaWRlb0RldmljZU5vdEF2YWlsYWJsZVdpdGhNdWx0aXBsZUZvcmVncm91bmRBcHBzIGFzIGV4
cGVjdGVkIik7CisgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxpbnQ+KEludGVycnVwdGlv
blJlYXNvbjo6VmlkZW9JblVzZSkgPT0gQVZDYXB0dXJlU2Vzc2lvbkludGVycnVwdGlvblJlYXNv
blZpZGVvRGV2aWNlSW5Vc2VCeUFub3RoZXJDbGllbnQsICJJbnRlcnJ1cHRpb25SZWFzb246OlZp
ZGVvSW5Vc2UgaXMgbm90IEFWQ2FwdHVyZVNlc3Npb25JbnRlcnJ1cHRpb25SZWFzb25WaWRlb0Rl
dmljZUluVXNlQnlBbm90aGVyQ2xpZW50IGFzIGV4cGVjdGVkIik7CisgICAgc3RhdGljX2Fzc2Vy
dChzdGF0aWNfY2FzdDxpbnQ+KEludGVycnVwdGlvblJlYXNvbjo6QXVkaW9JblVzZSkgPT0gQVZD
YXB0dXJlU2Vzc2lvbkludGVycnVwdGlvblJlYXNvbkF1ZGlvRGV2aWNlSW5Vc2VCeUFub3RoZXJD
bGllbnQsICJJbnRlcnJ1cHRpb25SZWFzb246OkF1ZGlvSW5Vc2UgaXMgbm90IEFWQ2FwdHVyZVNl
c3Npb25JbnRlcnJ1cHRpb25SZWFzb25BdWRpb0RldmljZUluVXNlQnlBbm90aGVyQ2xpZW50IGFz
IGV4cGVjdGVkIik7CisjZW5kaWYKKworICAgIHNldFBlcnNpc3RlbnRJRChTdHJpbmcoZGV2aWNl
LnVuaXF1ZUlEKSk7CiB9CiAKIEFWVmlkZW9DYXB0dXJlU291cmNlOjp+QVZWaWRlb0NhcHR1cmVT
b3VyY2UoKQogewogI2lmIFBMQVRGT1JNKElPUykKICAgICBSZWFsdGltZU1lZGlhU291cmNlQ2Vu
dGVyTWFjOjp2aWRlb0NhcHR1cmVTb3VyY2VGYWN0b3J5KCkudW5zZXRBY3RpdmVTb3VyY2UoKnRo
aXMpOworI2VuZGlmCisgICAgW21fb2JqY09ic2VydmVyIGRpc2Nvbm5lY3RdOworCisgICAgaWYg
KCFtX3Nlc3Npb24pCisgICAgICAgIHJldHVybjsKKworICAgIFttX3Nlc3Npb24gcmVtb3ZlT2Jz
ZXJ2ZXI6bV9vYmpjT2JzZXJ2ZXIuZ2V0KCkgZm9yS2V5UGF0aDpAInJhdGUiXTsKKyAgICBpZiAo
W21fc2Vzc2lvbiBpc1J1bm5pbmddKQorICAgICAgICBbbV9zZXNzaW9uIHN0b3BSdW5uaW5nXTsK
KworfQorCit2b2lkIEFWVmlkZW9DYXB0dXJlU291cmNlOjpzdGFydFByb2R1Y2luZ0RhdGEoKQor
eworICAgIGlmICghbV9zZXNzaW9uKSB7CisgICAgICAgIGlmICghc2V0dXBTZXNzaW9uKCkpCisg
ICAgICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKFttX3Nlc3Npb24gaXNSdW5uaW5n
XSkKKyAgICAgICAgcmV0dXJuOworCisgICAgW21fb2JqY09ic2VydmVyIGFkZE5vdGlmaWNhdGlv
bk9ic2VydmVyc107CisgICAgW21fc2Vzc2lvbiBzdGFydFJ1bm5pbmddOworfQorCit2b2lkIEFW
VmlkZW9DYXB0dXJlU291cmNlOjpzdG9wUHJvZHVjaW5nRGF0YSgpCit7CisgICAgaWYgKCFtX3Nl
c3Npb24pCisgICAgICAgIHJldHVybjsKKworICAgIFttX29iamNPYnNlcnZlciByZW1vdmVOb3Rp
ZmljYXRpb25PYnNlcnZlcnNdOworCisgICAgaWYgKFttX3Nlc3Npb24gaXNSdW5uaW5nXSkKKyAg
ICAgICAgW21fc2Vzc2lvbiBzdG9wUnVubmluZ107CisKKyAgICBtX2ludGVycnVwdGlvbiA9IElu
dGVycnVwdGlvblJlYXNvbjo6Tm9uZTsKKyNpZiBQTEFURk9STShJT1MpCisgICAgbV9zZXNzaW9u
ID0gbnVsbHB0cjsKICNlbmRpZgogfQogCkBAIC0xNzgsOCArMjU4LDY1IEBAIHN0YXRpYyB2b2lk
IHVwZGF0ZUFzcGVjdFJhdGlvTWluTWF4KGRvdWJsZSYgbWluLCBkb3VibGUmIG1heCwgZG91Ymxl
IHZhbHVlKQogICAgIG1heCA9IHN0ZDo6bWF4PGRvdWJsZT4obWF4LCB2YWx1ZSk7CiB9CiAKLXZv
aWQgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OmluaXRpYWxpemVDYXBhYmlsaXRpZXMoUmVhbHRpbWVN
ZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYgY2FwYWJpbGl0aWVzKQordm9pZCBBVlZpZGVvQ2FwdHVy
ZVNvdXJjZTo6YmVnaW5Db25maWd1cmF0aW9uKCkKK3sKKyAgICBpZiAobV9zZXNzaW9uKQorICAg
ICAgICBbbV9zZXNzaW9uIGJlZ2luQ29uZmlndXJhdGlvbl07Cit9CisKK3ZvaWQgQVZWaWRlb0Nh
cHR1cmVTb3VyY2U6OmNvbW1pdENvbmZpZ3VyYXRpb24oKQogeworICAgIGlmIChtX3Nlc3Npb24p
CisgICAgICAgIFttX3Nlc3Npb24gY29tbWl0Q29uZmlndXJhdGlvbl07Cit9CisKK3ZvaWQgQVZW
aWRlb0NhcHR1cmVTb3VyY2U6OnNldHRpbmdzRGlkQ2hhbmdlKCkKK3sKKyAgICBtX2N1cnJlbnRT
ZXR0aW5ncyA9IHN0ZDo6bnVsbG9wdDsKKyAgICBSZWFsdGltZU1lZGlhU291cmNlOjpzZXR0aW5n
c0RpZENoYW5nZSgpOworfQorCitjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIEFW
VmlkZW9DYXB0dXJlU291cmNlOjpzZXR0aW5ncygpIGNvbnN0Cit7CisgICAgaWYgKG1fY3VycmVu
dFNldHRpbmdzKQorICAgICAgICByZXR1cm4gKm1fY3VycmVudFNldHRpbmdzOworCisgICAgUmVh
bHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzIHNldHRpbmdzOworICAgIGlmIChbZGV2aWNlKCkgcG9z
aXRpb25dID09IEFWQ2FwdHVyZURldmljZVBvc2l0aW9uRnJvbnQpCisgICAgICAgIHNldHRpbmdz
LnNldEZhY2luZ01vZGUoUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpVc2VyKTsKKyAgICBl
bHNlIGlmIChbZGV2aWNlKCkgcG9zaXRpb25dID09IEFWQ2FwdHVyZURldmljZVBvc2l0aW9uQmFj
aykKKyAgICAgICAgc2V0dGluZ3Muc2V0RmFjaW5nTW9kZShSZWFsdGltZU1lZGlhU291cmNlU2V0
dGluZ3M6OkVudmlyb25tZW50KTsKKyAgICBlbHNlCisgICAgICAgIHNldHRpbmdzLnNldEZhY2lu
Z01vZGUoUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpVbmtub3duKTsKKworICAgIGF1dG8g
bWF4RnJhbWVEdXJhdGlvbiA9IFtkZXZpY2UoKSBhY3RpdmVWaWRlb01heEZyYW1lRHVyYXRpb25d
OworICAgIHNldHRpbmdzLnNldEZyYW1lUmF0ZShtYXhGcmFtZUR1cmF0aW9uLnRpbWVzY2FsZSAv
IG1heEZyYW1lRHVyYXRpb24udmFsdWUpOworICAgIHNldHRpbmdzLnNldFdpZHRoKG1fd2lkdGgp
OworICAgIHNldHRpbmdzLnNldEhlaWdodChtX2hlaWdodCk7CisgICAgc2V0dGluZ3Muc2V0RGV2
aWNlSWQoaWQoKSk7CisKKyAgICBSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWlu
dHMgc3VwcG9ydGVkQ29uc3RyYWludHM7CisgICAgc3VwcG9ydGVkQ29uc3RyYWludHMuc2V0U3Vw
cG9ydHNEZXZpY2VJZCh0cnVlKTsKKyAgICBzdXBwb3J0ZWRDb25zdHJhaW50cy5zZXRTdXBwb3J0
c0ZhY2luZ01vZGUoW2RldmljZSgpIHBvc2l0aW9uXSAhPSBBVkNhcHR1cmVEZXZpY2VQb3NpdGlv
blVuc3BlY2lmaWVkKTsKKyAgICBzdXBwb3J0ZWRDb25zdHJhaW50cy5zZXRTdXBwb3J0c1dpZHRo
KHRydWUpOworICAgIHN1cHBvcnRlZENvbnN0cmFpbnRzLnNldFN1cHBvcnRzSGVpZ2h0KHRydWUp
OworICAgIHN1cHBvcnRlZENvbnN0cmFpbnRzLnNldFN1cHBvcnRzQXNwZWN0UmF0aW8odHJ1ZSk7
CisgICAgc3VwcG9ydGVkQ29uc3RyYWludHMuc2V0U3VwcG9ydHNGcmFtZVJhdGUodHJ1ZSk7CisK
KyAgICBzZXR0aW5ncy5zZXRTdXBwb3J0ZWRDb25zdHJhaW50cyhzdXBwb3J0ZWRDb25zdHJhaW50
cyk7CisKKyAgICBtX2N1cnJlbnRTZXR0aW5ncyA9IFdURk1vdmUoc2V0dGluZ3MpOworCisgICAg
cmV0dXJuICptX2N1cnJlbnRTZXR0aW5nczsKK30KKworY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJj
ZUNhcGFiaWxpdGllcyYgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OmNhcGFiaWxpdGllcygpIGNvbnN0
Cit7CisgICAgaWYgKG1fY2FwYWJpbGl0aWVzKQorICAgICAgICByZXR1cm4gKm1fY2FwYWJpbGl0
aWVzOworCisgICAgUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyBjYXBhYmlsaXRpZXMo
c2V0dGluZ3MoKS5zdXBwb3J0ZWRDb25zdHJhaW50cygpKTsKKyAgICBjYXBhYmlsaXRpZXMuc2V0
RGV2aWNlSWQoaWQoKSk7CiAgICAgQVZDYXB0dXJlRGV2aWNlVHlwZWRlZiAqdmlkZW9EZXZpY2Ug
PSBkZXZpY2UoKTsKIAogICAgIGlmIChbdmlkZW9EZXZpY2UgcG9zaXRpb25dID09IEFWQ2FwdHVy
ZURldmljZVBvc2l0aW9uRnJvbnQpCkBAIC0yMDQsNDUgKzM0MSwyMCBAQCB2b2lkIEFWVmlkZW9D
YXB0dXJlU291cmNlOjppbml0aWFsaXplQ2FwYWJpbGl0aWVzKFJlYWx0aW1lTWVkaWFTb3VyY2VD
YXBhYmlsaXRpZQogICAgICAgICB9CiAgICAgfQogCi0gICAgZm9yIChhdXRvJiBwcmVzZXQgOiB2
aWRlb1ByZXNldHMoKSkgeworICAgIGZvciAoYXV0byYgcHJlc2V0IDogbV9zdXBwb3J0ZWRQcmVz
ZXRzKSB7CiAgICAgICAgIGF1dG8gdmFsdWVzID0gcHJlc2V0LnZhbHVlOwogICAgICAgICB1cGRh
dGVTaXplTWluTWF4KG1pbmltdW1XaWR0aCwgbWF4aW11bVdpZHRoLCB2YWx1ZXMud2lkdGgoKSk7
CiAgICAgICAgIHVwZGF0ZVNpemVNaW5NYXgobWluaW11bUhlaWdodCwgbWF4aW11bUhlaWdodCwg
dmFsdWVzLmhlaWdodCgpKTsKICAgICAgICAgdXBkYXRlQXNwZWN0UmF0aW9NaW5NYXgobWluaW11
bUFzcGVjdFJhdGlvLCBtYXhpbXVtQXNwZWN0UmF0aW8sIHN0YXRpY19jYXN0PGRvdWJsZT4odmFs
dWVzLndpZHRoKCkpIC8gdmFsdWVzLmhlaWdodCgpKTsKICAgICB9Ci0KICAgICBjYXBhYmlsaXRp
ZXMuc2V0RnJhbWVSYXRlKENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2UobG93ZXN0RnJhbWVSYXRlUmFu
Z2UsIGhpZ2hlc3RGcmFtZVJhdGVSYW5nZSkpOwogICAgIGNhcGFiaWxpdGllcy5zZXRXaWR0aChD
YXBhYmlsaXR5VmFsdWVPclJhbmdlKG1pbmltdW1XaWR0aCwgbWF4aW11bVdpZHRoKSk7CiAgICAg
Y2FwYWJpbGl0aWVzLnNldEhlaWdodChDYXBhYmlsaXR5VmFsdWVPclJhbmdlKG1pbmltdW1IZWln
aHQsIG1heGltdW1IZWlnaHQpKTsKICAgICBjYXBhYmlsaXRpZXMuc2V0QXNwZWN0UmF0aW8oQ2Fw
YWJpbGl0eVZhbHVlT3JSYW5nZShtaW5pbXVtQXNwZWN0UmF0aW8sIG1heGltdW1Bc3BlY3RSYXRp
bykpOwotfQotCi12b2lkIEFWVmlkZW9DYXB0dXJlU291cmNlOjppbml0aWFsaXplU3VwcG9ydGVk
Q29uc3RyYWludHMoUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzJiBzdXBw
b3J0ZWRDb25zdHJhaW50cykKLXsKLSAgICBzdXBwb3J0ZWRDb25zdHJhaW50cy5zZXRTdXBwb3J0
c0ZhY2luZ01vZGUoW2RldmljZSgpIHBvc2l0aW9uXSAhPSBBVkNhcHR1cmVEZXZpY2VQb3NpdGlv
blVuc3BlY2lmaWVkKTsKLSAgICBzdXBwb3J0ZWRDb25zdHJhaW50cy5zZXRTdXBwb3J0c1dpZHRo
KHRydWUpOwotICAgIHN1cHBvcnRlZENvbnN0cmFpbnRzLnNldFN1cHBvcnRzSGVpZ2h0KHRydWUp
OwotICAgIHN1cHBvcnRlZENvbnN0cmFpbnRzLnNldFN1cHBvcnRzQXNwZWN0UmF0aW8odHJ1ZSk7
Ci0gICAgc3VwcG9ydGVkQ29uc3RyYWludHMuc2V0U3VwcG9ydHNGcmFtZVJhdGUodHJ1ZSk7Ci19
Ci0KLXZvaWQgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OnVwZGF0ZVNldHRpbmdzKFJlYWx0aW1lTWVk
aWFTb3VyY2VTZXR0aW5ncyYgc2V0dGluZ3MpCi17Ci0gICAgc2V0dGluZ3Muc2V0RGV2aWNlSWQo
aWQoKSk7CiAKLSAgICBpZiAoW2RldmljZSgpIHBvc2l0aW9uXSA9PSBBVkNhcHR1cmVEZXZpY2VQ
b3NpdGlvbkZyb250KQotICAgICAgICBzZXR0aW5ncy5zZXRGYWNpbmdNb2RlKFJlYWx0aW1lTWVk
aWFTb3VyY2VTZXR0aW5nczo6VXNlcik7Ci0gICAgZWxzZSBpZiAoW2RldmljZSgpIHBvc2l0aW9u
XSA9PSBBVkNhcHR1cmVEZXZpY2VQb3NpdGlvbkJhY2spCi0gICAgICAgIHNldHRpbmdzLnNldEZh
Y2luZ01vZGUoUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpFbnZpcm9ubWVudCk7Ci0gICAg
ZWxzZQotICAgICAgICBzZXR0aW5ncy5zZXRGYWNpbmdNb2RlKFJlYWx0aW1lTWVkaWFTb3VyY2VT
ZXR0aW5nczo6VW5rbm93bik7CisgICAgbV9jYXBhYmlsaXRpZXMgPSBXVEZNb3ZlKGNhcGFiaWxp
dGllcyk7CiAKLSAgICAvLyBGSVhNRTogT2JzZXJ2ZSBmcmFtZSByYXRlIGNoYW5nZXMuCi0gICAg
YXV0byBtYXhGcmFtZUR1cmF0aW9uID0gW2RldmljZSgpIGFjdGl2ZVZpZGVvTWF4RnJhbWVEdXJh
dGlvbl07Ci0gICAgc2V0dGluZ3Muc2V0RnJhbWVSYXRlKG1heEZyYW1lRHVyYXRpb24udGltZXNj
YWxlIC8gbWF4RnJhbWVEdXJhdGlvbi52YWx1ZSk7Ci0gICAgc2V0dGluZ3Muc2V0V2lkdGgobV93
aWR0aCk7Ci0gICAgc2V0dGluZ3Muc2V0SGVpZ2h0KG1faGVpZ2h0KTsKLSAgICBzZXR0aW5ncy5z
ZXRBc3BlY3RSYXRpbyhzdGF0aWNfY2FzdDxmbG9hdD4obV93aWR0aCkgLyBtX2hlaWdodCk7Cisg
ICAgcmV0dXJuICptX2NhcGFiaWxpdGllczsKIH0KIAogYm9vbCBBVlZpZGVvQ2FwdHVyZVNvdXJj
ZTo6YXBwbHlTaXplKGNvbnN0IEludFNpemUmIHNpemUpCkBAIC0yODUsNyArMzk3LDExIEBAIGJv
b2wgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OnNldFByZXNldChOU1N0cmluZyAqcHJlc2V0KQogICAg
IEB0cnkgewogICAgICAgICBzZXNzaW9uKCkuc2Vzc2lvblByZXNldCA9IHByZXNldDsKICNpZiBQ
TEFURk9STShNQUMpCi0gICAgICAgIGF1dG8gc2V0dGluZ3NEaWN0aW9uYXJ5ID0gQHsgKF9fYnJp
ZGdlIE5TU3RyaW5nICopa0NWUGl4ZWxCdWZmZXJQaXhlbEZvcm1hdFR5cGVLZXk6IEAodmlkZW9D
YXB0dXJlRm9ybWF0KSwgKF9fYnJpZGdlIE5TU3RyaW5nICopa0NWUGl4ZWxCdWZmZXJXaWR0aEtl
eTogQChzaXplLndpZHRoKCkpLCAoX19icmlkZ2UgTlNTdHJpbmcgKilrQ1ZQaXhlbEJ1ZmZlckhl
aWdodEtleTogQChzaXplLmhlaWdodCgpKSwgfTsKKyAgICAgICAgYXV0byBzZXR0aW5nc0RpY3Rp
b25hcnkgPSBAeworICAgICAgICAgICAgKF9fYnJpZGdlIE5TU3RyaW5nICopa0NWUGl4ZWxCdWZm
ZXJQaXhlbEZvcm1hdFR5cGVLZXk6IEAodmlkZW9DYXB0dXJlRm9ybWF0KSwKKyAgICAgICAgICAg
IChfX2JyaWRnZSBOU1N0cmluZyAqKWtDVlBpeGVsQnVmZmVyV2lkdGhLZXk6IEAoc2l6ZS53aWR0
aCgpKSwKKyAgICAgICAgICAgIChfX2JyaWRnZSBOU1N0cmluZyAqKWtDVlBpeGVsQnVmZmVySGVp
Z2h0S2V5OiBAKHNpemUuaGVpZ2h0KCkpCisgICAgICAgIH07CiAgICAgICAgIFttX3ZpZGVvT3V0
cHV0IHNldFZpZGVvU2V0dGluZ3M6c2V0dGluZ3NEaWN0aW9uYXJ5XTsKICNlbmRpZgogICAgIH0g
QGNhdGNoKE5TRXhjZXB0aW9uICpleGNlcHRpb24pIHsKQEAgLTM4MSw2ICs0OTcsMjQgQEAgc3Rh
dGljIGlubGluZSBpbnQgc2Vuc29yT3JpZW50YXRpb25Gcm9tVmlkZW9PdXRwdXQoQVZDYXB0dXJl
VmlkZW9EYXRhT3V0cHV0VHlwZSoKICAgICByZXR1cm4gY29ubmVjdGlvbiA/IHNlbnNvck9yaWVu
dGF0aW9uKFtjb25uZWN0aW9uIHZpZGVvT3JpZW50YXRpb25dKSA6IDA7CiB9CiAKK2Jvb2wgQVZW
aWRlb0NhcHR1cmVTb3VyY2U6OnNldHVwU2Vzc2lvbigpCit7CisgICAgaWYgKG1fc2Vzc2lvbikK
KyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBtX3Nlc3Npb24gPSBhZG9wdE5TKFthbGxvY0FW
Q2FwdHVyZVNlc3Npb25JbnN0YW5jZSgpIGluaXRdKTsKKyAgICBbbV9zZXNzaW9uIGFkZE9ic2Vy
dmVyOm1fb2JqY09ic2VydmVyLmdldCgpIGZvcktleVBhdGg6QCJyYXRlIiBvcHRpb25zOk5TS2V5
VmFsdWVPYnNlcnZpbmdPcHRpb25OZXcgY29udGV4dDoodm9pZCAqKW5pbF07CisKKyAgICBbbV9z
ZXNzaW9uIGJlZ2luQ29uZmlndXJhdGlvbl07CisgICAgYm9vbCBzdWNjZXNzID0gc2V0dXBDYXB0
dXJlU2Vzc2lvbigpOworICAgIFttX3Nlc3Npb24gY29tbWl0Q29uZmlndXJhdGlvbl07CisKKyAg
ICBpZiAoIXN1Y2Nlc3MpCisgICAgICAgIGNhcHR1cmVGYWlsZWQoKTsKKworICAgIHJldHVybiBz
dWNjZXNzOworfQorCiBib29sIEFWVmlkZW9DYXB0dXJlU291cmNlOjpzZXR1cENhcHR1cmVTZXNz
aW9uKCkKIHsKICNpZiBQTEFURk9STShJT1MpCkBAIC00MTIsNyArNTQ2LDcgQEAgYm9vbCBBVlZp
ZGVvQ2FwdHVyZVNvdXJjZTo6c2V0dXBDYXB0dXJlU2Vzc2lvbigpCiAKICAgICBbbV92aWRlb091
dHB1dCBzZXRWaWRlb1NldHRpbmdzOnNldHRpbmdzRGljdGlvbmFyeS5nZXQoKV07CiAgICAgW21f
dmlkZW9PdXRwdXQgc2V0QWx3YXlzRGlzY2FyZHNMYXRlVmlkZW9GcmFtZXM6WUVTXTsKLSAgICBz
ZXRWaWRlb1NhbXBsZUJ1ZmZlckRlbGVnYXRlKG1fdmlkZW9PdXRwdXQuZ2V0KCkpOworICAgIFtt
X3ZpZGVvT3V0cHV0IHNldFNhbXBsZUJ1ZmZlckRlbGVnYXRlOm1fb2JqY09ic2VydmVyLmdldCgp
IHF1ZXVlOmdsb2JhVmlkZW9DYXB0dXJlU2VyaWFsUXVldWUoKV07CiAKICAgICBpZiAoIVtzZXNz
aW9uKCkgY2FuQWRkT3V0cHV0Om1fdmlkZW9PdXRwdXQuZ2V0KCldKSB7CiAgICAgICAgIFJFTEVB
U0VfTE9HKE1lZGlhLCAiQVZWaWRlb0NhcHR1cmVTb3VyY2U6OnNldHVwQ2FwdHVyZVNlc3Npb24o
JXApLCB1bmFibGUgdG8gYWRkIHZpZGVvIHNhbXBsZSBidWZmZXIgb3V0cHV0IGRlbGVnYXRlIiwg
dGhpcyk7CkBAIC01NTUsNiArNjg5LDE1NyBAQCBib29sIEFWVmlkZW9DYXB0dXJlU291cmNlOjpz
dXBwb3J0c1NpemVBbmRGcmFtZVJhdGUoc3RkOjpvcHRpb25hbDxpbnQ+IHdpZHRoLCBzdAogICAg
IHJldHVybiBpc0ZyYW1lUmF0ZVN1cHBvcnRlZChmcmFtZVJhdGUudmFsdWUoKSk7CiB9CiAKK3Zv
aWQgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OmNhcHR1cmVTZXNzaW9uSXNSdW5uaW5nRGlkQ2hhbmdl
KGJvb2wgc3RhdGUpCit7CisgICAgc2NoZWR1bGVEZWZlcnJlZFRhc2soW3RoaXMsIHN0YXRlXSB7
CisgICAgICAgIGlmICgoc3RhdGUgPT0gbV9pc1J1bm5pbmcpICYmIChzdGF0ZSA9PSAhbXV0ZWQo
KSkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgbV9pc1J1bm5pbmcgPSBzdGF0ZTsK
KyAgICAgICAgbm90aWZ5TXV0ZWRDaGFuZ2UoIW1faXNSdW5uaW5nKTsKKyAgICB9KTsKK30KKwor
Ym9vbCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6aW50ZXJydXB0ZWQoKSBjb25zdAoreworICAgIGlm
IChtX2ludGVycnVwdGlvbiAhPSBJbnRlcnJ1cHRpb25SZWFzb246Ok5vbmUpCisgICAgICAgIHJl
dHVybiB0cnVlOworCisgICAgcmV0dXJuIFJlYWx0aW1lTWVkaWFTb3VyY2U6OmludGVycnVwdGVk
KCk7Cit9CisKKyNpZiBQTEFURk9STShJT1MpCit2b2lkIEFWVmlkZW9DYXB0dXJlU291cmNlOjpj
YXB0dXJlU2Vzc2lvblJ1bnRpbWVFcnJvcihSZXRhaW5QdHI8TlNFcnJvcj4gZXJyb3IpCit7Cisg
ICAgaWYgKCFtX2lzUnVubmluZyB8fCBlcnJvci5nZXQoKS5jb2RlICE9IEFWRXJyb3JNZWRpYVNl
cnZpY2VzV2VyZVJlc2V0KQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBUcnkgdG8gcmVzdGFy
dCB0aGUgc2Vzc2lvbiwgYnV0IHJlc2V0IG1faXNSdW5uaW5nIGltbWVkaWF0ZWx5IHNvIGlmIGl0
IGZhaWxzIHdlIHdvbid0IHRyeSBhZ2Fpbi4KKyAgICBbbV9zZXNzaW9uIHN0YXJ0UnVubmluZ107
CisgICAgbV9pc1J1bm5pbmcgPSBbbV9zZXNzaW9uIGlzUnVubmluZ107Cit9CisKK3ZvaWQgQVZW
aWRlb0NhcHR1cmVTb3VyY2U6OmNhcHR1cmVTZXNzaW9uQmVnaW5JbnRlcnJ1cHRpb24oUmV0YWlu
UHRyPE5TTm90aWZpY2F0aW9uPiBub3RpZmljYXRpb24pCit7CisgICAgbV9pbnRlcnJ1cHRpb24g
PSBzdGF0aWNfY2FzdDxBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6SW50ZXJydXB0aW9uUmVhc29uPihb
bm90aWZpY2F0aW9uLmdldCgpLnVzZXJJbmZvW0FWQ2FwdHVyZVNlc3Npb25JbnRlcnJ1cHRpb25S
ZWFzb25LZXldIGludGVnZXJWYWx1ZV0pOworfQorCit2b2lkIEFWVmlkZW9DYXB0dXJlU291cmNl
OjpjYXB0dXJlU2Vzc2lvbkVuZEludGVycnVwdGlvbihSZXRhaW5QdHI8TlNOb3RpZmljYXRpb24+
KQoreworICAgIEludGVycnVwdGlvblJlYXNvbiByZWFzb24gPSBtX2ludGVycnVwdGlvbjsKKwor
ICAgIG1faW50ZXJydXB0aW9uID0gSW50ZXJydXB0aW9uUmVhc29uOjpOb25lOworICAgIGlmIChy
ZWFzb24gIT0gSW50ZXJydXB0aW9uUmVhc29uOjpWaWRlb05vdEFsbG93ZWRJblNpZGVCeVNpZGUg
fHwgbV9pc1J1bm5pbmcgfHwgIW1fc2Vzc2lvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgW21f
c2Vzc2lvbiBzdGFydFJ1bm5pbmddOworICAgIG1faXNSdW5uaW5nID0gW21fc2Vzc2lvbiBpc1J1
bm5pbmddOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorQGltcGxlbWVu
dGF0aW9uIFdlYkNvcmVBVlZpZGVvQ2FwdHVyZVNvdXJjZU9ic2VydmVyCisKKy0gKGlkKWluaXRX
aXRoQ2FsbGJhY2s6KEFWVmlkZW9DYXB0dXJlU291cmNlKiljYWxsYmFjaworeworICAgIHNlbGYg
PSBbc3VwZXIgaW5pdF07CisgICAgaWYgKCFzZWxmKQorICAgICAgICByZXR1cm4gbmlsOworCisg
ICAgbV9jYWxsYmFjayA9IGNhbGxiYWNrOworCisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKHZv
aWQpZGlzY29ubmVjdAoreworICAgIFtOU09iamVjdCBjYW5jZWxQcmV2aW91c1BlcmZvcm1SZXF1
ZXN0c1dpdGhUYXJnZXQ6c2VsZl07CisgICAgW3NlbGYgcmVtb3ZlTm90aWZpY2F0aW9uT2JzZXJ2
ZXJzXTsKKyAgICBtX2NhbGxiYWNrID0gbnVsbHB0cjsKK30KKworLSAodm9pZClhZGROb3RpZmlj
YXRpb25PYnNlcnZlcnMKK3sKKyNpZiBQTEFURk9STShJT1MpCisgICAgQVNTRVJUKG1fY2FsbGJh
Y2spOworCisgICAgTlNOb3RpZmljYXRpb25DZW50ZXIqIGNlbnRlciA9IFtOU05vdGlmaWNhdGlv
bkNlbnRlciBkZWZhdWx0Q2VudGVyXTsKKyAgICBBVkNhcHR1cmVTZXNzaW9uVHlwZSogc2Vzc2lv
biA9IG1fY2FsbGJhY2stPnNlc3Npb24oKTsKKworICAgIFtjZW50ZXIgYWRkT2JzZXJ2ZXI6c2Vs
ZiBzZWxlY3RvcjpAc2VsZWN0b3Ioc2Vzc2lvblJ1bnRpbWVFcnJvcjopIG5hbWU6QVZDYXB0dXJl
U2Vzc2lvblJ1bnRpbWVFcnJvck5vdGlmaWNhdGlvbiBvYmplY3Q6c2Vzc2lvbl07CisgICAgW2Nl
bnRlciBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihiZWdpblNlc3Npb25JbnRl
cnJ1cHRlZDopIG5hbWU6QVZDYXB0dXJlU2Vzc2lvbldhc0ludGVycnVwdGVkTm90aWZpY2F0aW9u
IG9iamVjdDpzZXNzaW9uXTsKKyAgICBbY2VudGVyIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6
QHNlbGVjdG9yKGVuZFNlc3Npb25JbnRlcnJ1cHRlZDopIG5hbWU6QVZDYXB0dXJlU2Vzc2lvbklu
dGVycnVwdGlvbkVuZGVkTm90aWZpY2F0aW9uIG9iamVjdDpzZXNzaW9uXTsKKyNlbmRpZgorfQor
CistICh2b2lkKXJlbW92ZU5vdGlmaWNhdGlvbk9ic2VydmVycworeworI2lmIFBMQVRGT1JNKElP
UykKKyAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHJlbW92ZU9ic2Vy
dmVyOnNlbGZdOworI2VuZGlmCit9CisKKy0gKHZvaWQpY2FwdHVyZU91dHB1dDooQVZDYXB0dXJl
T3V0cHV0VHlwZSopY2FwdHVyZU91dHB1dCBkaWRPdXRwdXRTYW1wbGVCdWZmZXI6KENNU2FtcGxl
QnVmZmVyUmVmKXNhbXBsZUJ1ZmZlciBmcm9tQ29ubmVjdGlvbjooQVZDYXB0dXJlQ29ubmVjdGlv
blR5cGUqKWNvbm5lY3Rpb24KK3sKKyAgICBpZiAoIW1fY2FsbGJhY2spCisgICAgICAgIHJldHVy
bjsKKworICAgIG1fY2FsbGJhY2stPmNhcHR1cmVPdXRwdXREaWRPdXRwdXRTYW1wbGVCdWZmZXJG
cm9tQ29ubmVjdGlvbihjYXB0dXJlT3V0cHV0LCBzYW1wbGVCdWZmZXIsIGNvbm5lY3Rpb24pOwor
fQorCistICh2b2lkKW9ic2VydmVWYWx1ZUZvcktleVBhdGg6a2V5UGF0aCBvZk9iamVjdDooaWQp
b2JqZWN0IGNoYW5nZTooTlNEaWN0aW9uYXJ5KiljaGFuZ2UgY29udGV4dDoodm9pZCopY29udGV4
dAoreworICAgIFVOVVNFRF9QQVJBTShvYmplY3QpOworICAgIFVOVVNFRF9QQVJBTShjb250ZXh0
KTsKKworICAgIGlmICghbV9jYWxsYmFjaykKKyAgICAgICAgcmV0dXJuOworCisgICAgaWQgbmV3
VmFsdWUgPSBbY2hhbmdlIHZhbHVlRm9yS2V5Ok5TS2V5VmFsdWVDaGFuZ2VOZXdLZXldOworCisj
aWYgIUxPR19ESVNBQkxFRAorICAgIGJvb2wgd2lsbENoYW5nZSA9IFtbY2hhbmdlIHZhbHVlRm9y
S2V5Ok5TS2V5VmFsdWVDaGFuZ2VOb3RpZmljYXRpb25Jc1ByaW9yS2V5XSBib29sVmFsdWVdOwor
CisgICAgaWYgKHdpbGxDaGFuZ2UpCisgICAgICAgIExPRyhNZWRpYSwgIldlYkNvcmVBVlZpZGVv
Q2FwdHVyZVNvdXJjZU9ic2VydmVyOjpvYnNlcnZlVmFsdWVGb3JLZXlQYXRoKCVwKSAtIHdpbGwg
Y2hhbmdlLCBrZXlQYXRoID0gJXMiLCBzZWxmLCBba2V5UGF0aCBVVEY4U3RyaW5nXSk7CisgICAg
ZWxzZSB7CisgICAgICAgIFJldGFpblB0cjxOU1N0cmluZz4gdmFsdWVTdHJpbmcgPSBhZG9wdE5T
KFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRm9ybWF0OkAiJUAiLCBuZXdWYWx1ZV0pOworICAg
ICAgICBMT0coTWVkaWEsICJXZWJDb3JlQVZWaWRlb0NhcHR1cmVTb3VyY2VPYnNlcnZlcjo6b2Jz
ZXJ2ZVZhbHVlRm9yS2V5UGF0aCglcCkgLSBkaWQgY2hhbmdlLCBrZXlQYXRoID0gJXMsIHZhbHVl
ID0gJXMiLCBzZWxmLCBba2V5UGF0aCBVVEY4U3RyaW5nXSwgW3ZhbHVlU3RyaW5nLmdldCgpIFVU
RjhTdHJpbmddKTsKKyAgICB9CisjZW5kaWYKKworICAgIGlmIChba2V5UGF0aCBpc0VxdWFsVG9T
dHJpbmc6QCJydW5uaW5nIl0pCisgICAgICAgIG1fY2FsbGJhY2stPmNhcHR1cmVTZXNzaW9uSXNS
dW5uaW5nRGlkQ2hhbmdlKFtuZXdWYWx1ZSBib29sVmFsdWVdKTsKK30KKworI2lmIFBMQVRGT1JN
KElPUykKKy0gKHZvaWQpc2Vzc2lvblJ1bnRpbWVFcnJvcjooTlNOb3RpZmljYXRpb24qKW5vdGlm
aWNhdGlvbgoreworICAgIE5TRXJyb3IgKmVycm9yID0gbm90aWZpY2F0aW9uLnVzZXJJbmZvW0FW
Q2FwdHVyZVNlc3Npb25FcnJvcktleV07CisgICAgTE9HKE1lZGlhLCAiV2ViQ29yZUFWVmlkZW9D
YXB0dXJlU291cmNlT2JzZXJ2ZXI6OnNlc3Npb25SdW50aW1lRXJyb3IoJXApIC0gZXJyb3IgPSAl
cyIsIHNlbGYsIFtbZXJyb3IgbG9jYWxpemVkRGVzY3JpcHRpb25dIFVURjhTdHJpbmddKTsKKwor
ICAgIGlmIChtX2NhbGxiYWNrKQorICAgICAgICBtX2NhbGxiYWNrLT5jYXB0dXJlU2Vzc2lvblJ1
bnRpbWVFcnJvcihlcnJvcik7Cit9CisKKy0gKHZvaWQpYmVnaW5TZXNzaW9uSW50ZXJydXB0ZWQ6
KE5TTm90aWZpY2F0aW9uKilub3RpZmljYXRpb24KK3sKKyAgICBMT0coTWVkaWEsICJXZWJDb3Jl
QVZWaWRlb0NhcHR1cmVTb3VyY2VPYnNlcnZlcjo6YmVnaW5TZXNzaW9uSW50ZXJydXB0ZWQoJXAp
IC0gcmVhc29uID0gJWQiLCBzZWxmLCBbbm90aWZpY2F0aW9uLnVzZXJJbmZvW0FWQ2FwdHVyZVNl
c3Npb25JbnRlcnJ1cHRpb25SZWFzb25LZXldIGludGVnZXJWYWx1ZV0pOworCisgICAgaWYgKG1f
Y2FsbGJhY2spCisgICAgICAgIG1fY2FsbGJhY2stPmNhcHR1cmVTZXNzaW9uQmVnaW5JbnRlcnJ1
cHRpb24obm90aWZpY2F0aW9uKTsKK30KKworLSAodm9pZCllbmRTZXNzaW9uSW50ZXJydXB0ZWQ6
KE5TTm90aWZpY2F0aW9uKilub3RpZmljYXRpb24KK3sKKyAgICBMT0coTWVkaWEsICJXZWJDb3Jl
QVZWaWRlb0NhcHR1cmVTb3VyY2VPYnNlcnZlcjo6ZW5kU2Vzc2lvbkludGVycnVwdGVkKCVwKSIs
IHNlbGYpOworCisgICAgaWYgKG1fY2FsbGJhY2spCisgICAgICAgIG1fY2FsbGJhY2stPmNhcHR1
cmVTZXNzaW9uRW5kSW50ZXJydXB0aW9uKG5vdGlmaWNhdGlvbik7Cit9CisjZW5kaWYKKworQGVu
ZAorCiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348635</attachid>
            <date>2018-08-31 05:04:46 -0700</date>
            <delta_ts>2018-08-31 05:43:39 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-189159-20180831050445.patch</filename>
            <type>text/plain</type>
            <size>43271</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1NTQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjgwMTk1MTA0MjNhYjJm
MTBkZjMxZmU1NzA0NjIwMzZlOTU0MjM4Ni4uZGYwNTk4M2E5YzkxMDUyYWQ5Mzk4Njk4MGRmYTQx
MDk3OGIyNWVlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDE4LTA4LTMxICBFcmlj
IENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRpYVN0cmVh
bV0gUmVtb3ZlIEFWTWVkaWFDYXB0dXJlU291cmNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODkxNTkKKworICAgICAgICBSZXZpZXdlZCBieSBZb3Vl
bm4gRmFibGV0LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gY2hhbmdlIGluIGZ1bmN0aW9u
YWxpdHkuCisKKyAgICAgICAgUmVmYWN0b3IgdmlkZW8gY2FwdHVyZSB0byBnZXQgcmlkIG9mIGEg
YmFzZSBjbGFzcyB3ZSBkb24ndCAKKyAgICAgICAgbmVlZCBhbnkgbW9yZS4KKworICAgICAgICAq
IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UuaDogUmVtb3ZlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UubW06IFJlbW92
ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291
cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6c2Vzc2lvbiBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6ZGV2aWNlIGNv
bnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVT
b3VyY2UubW06CisgICAgICAgIChXZWJDb3JlOjpnbG9iYVZpZGVvQ2FwdHVyZVNlcmlhbFF1ZXVl
KToKKyAgICAgICAgKFdlYkNvcmU6OkFWVmlkZW9DYXB0dXJlU291cmNlOjpBVlZpZGVvQ2FwdHVy
ZVNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6fkFWVmlk
ZW9DYXB0dXJlU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkFWVmlkZW9DYXB0dXJlU291cmNl
OjpzdGFydFByb2R1Y2luZ0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6QVZWaWRlb0NhcHR1cmVT
b3VyY2U6OnN0b3BQcm9kdWNpbmdEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkFWVmlkZW9DYXB0
dXJlU291cmNlOjpiZWdpbkNvbmZpZ3VyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6QVZWaWRl
b0NhcHR1cmVTb3VyY2U6OmNvbW1pdENvbmZpZ3VyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
QVZWaWRlb0NhcHR1cmVTb3VyY2U6OnNldHRpbmdzRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNv
cmU6OkFWVmlkZW9DYXB0dXJlU291cmNlOjpzZXR0aW5ncyBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6Y2FwYWJpbGl0aWVzIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkFWVmlkZW9DYXB0dXJlU291cmNlOjpzZXRQcmVzZXQpOgorICAgICAgICAoV2Vi
Q29yZTo6QVZWaWRlb0NhcHR1cmVTb3VyY2U6OnNldHVwU2Vzc2lvbik6CisgICAgICAgIChXZWJD
b3JlOjpBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6c2V0dXBDYXB0dXJlU2Vzc2lvbik6CisgICAgICAg
IChXZWJDb3JlOjpBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6Y2FwdHVyZVNlc3Npb25Jc1J1bm5pbmdE
aWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6QVZWaWRlb0NhcHR1cmVTb3VyY2U6OmludGVy
cnVwdGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFWVmlkZW9DYXB0dXJlU291cmNlOjpj
YXB0dXJlU2Vzc2lvblJ1bnRpbWVFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpBVlZpZGVvQ2Fw
dHVyZVNvdXJjZTo6Y2FwdHVyZVNlc3Npb25CZWdpbkludGVycnVwdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6Y2FwdHVyZVNlc3Npb25FbmRJbnRlcnJ1cHRp
b24pOgorICAgICAgICAoLVtXZWJDb3JlQVZWaWRlb0NhcHR1cmVTb3VyY2VPYnNlcnZlciBpbml0
V2l0aENhbGxiYWNrOl0pOgorICAgICAgICAoLVtXZWJDb3JlQVZWaWRlb0NhcHR1cmVTb3VyY2VP
YnNlcnZlciBkaXNjb25uZWN0XSk6CisgICAgICAgICgtW1dlYkNvcmVBVlZpZGVvQ2FwdHVyZVNv
dXJjZU9ic2VydmVyIGFkZE5vdGlmaWNhdGlvbk9ic2VydmVyc10pOgorICAgICAgICAoLVtXZWJD
b3JlQVZWaWRlb0NhcHR1cmVTb3VyY2VPYnNlcnZlciByZW1vdmVOb3RpZmljYXRpb25PYnNlcnZl
cnNdKToKKyAgICAgICAgKC1bV2ViQ29yZUFWVmlkZW9DYXB0dXJlU291cmNlT2JzZXJ2ZXIgY2Fw
dHVyZU91dHB1dDpkaWRPdXRwdXRTYW1wbGVCdWZmZXI6ZnJvbUNvbm5lY3Rpb246XSk6CisgICAg
ICAgICgtW1dlYkNvcmVBVlZpZGVvQ2FwdHVyZVNvdXJjZU9ic2VydmVyIG9ic2VydmVWYWx1ZUZv
cktleVBhdGg6b2ZPYmplY3Q6Y2hhbmdlOmNvbnRleHQ6XSk6CisgICAgICAgICgtW1dlYkNvcmVB
VlZpZGVvQ2FwdHVyZVNvdXJjZU9ic2VydmVyIHNlc3Npb25SdW50aW1lRXJyb3I6XSk6CisgICAg
ICAgICgtW1dlYkNvcmVBVlZpZGVvQ2FwdHVyZVNvdXJjZU9ic2VydmVyIGJlZ2luU2Vzc2lvbklu
dGVycnVwdGVkOl0pOgorICAgICAgICAoLVtXZWJDb3JlQVZWaWRlb0NhcHR1cmVTb3VyY2VPYnNl
cnZlciBlbmRTZXNzaW9uSW50ZXJydXB0ZWQ6XSk6CisgICAgICAgIChXZWJDb3JlOjpBVlZpZGVv
Q2FwdHVyZVNvdXJjZTo6aW5pdGlhbGl6ZUNhcGFiaWxpdGllcyk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6aW5pdGlhbGl6ZVN1cHBvcnRlZENvbnN0
cmFpbnRzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFWVmlkZW9DYXB0dXJlU291cmNl
Ojp1cGRhdGVTZXR0aW5ncyk6IERlbGV0ZWQuCisKIDIwMTgtMDgtMzEgIFBoaWxpcHBlIE5vcm1h
bmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGZpeCBjb21w
aWxhdGlvbiB3YXJuaW5nIGluIEVNRSBHU3RyZWFtZXIgYmFja2VuZC4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5ZGE5ZjcxOWMw
YmZjYzM5MGM1YjAyNTAxNDg3ZDM0MjRiYzBlMjExLi44MjA1NzU1NTQyOTczY2ZiMGVjMGU4NDIy
NzM2ZDU5ZTBkYWQyM2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC03Miw4ICs3Miw2IEBACiAJCTA3MDMzNEQ5MTQ1QTAwNkYw
MDhEOEQ0NSAvKiBUcmFja0Jhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMDcwMzM0RDgxNDVBMDA2RjAwOEQ4RDQ1IC8qIFRyYWNrQmFzZS5jcHAg
Ki87IH07CiAJCTA3MDM2M0UyMTgxQTFDREMwMEMwNzRBNSAvKiBBVkNhcHR1cmVEZXZpY2VNYW5h
Z2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzAz
NjNEQTE4MUExQ0RDMDBDMDc0QTUgLyogQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA3MDM2M0UzMTgxQTFD
REMwMEMwNzRBNSAvKiBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcwMzYzREIxODFBMUNEQzAwQzA3NEE1IC8q
IEFWQ2FwdHVyZURldmljZU1hbmFnZXIubW0gKi87IH07Ci0JCTA3MDM2M0U0MTgxQTFDREMwMEMw
NzRBNSAvKiBBVk1lZGlhQ2FwdHVyZVNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMDcwMzYzREMxODFBMUNEQzAwQzA3NEE1IC8qIEFWTWVkaWFD
YXB0dXJlU291cmNlLmggKi87IH07Ci0JCTA3MDM2M0U1MTgxQTFDREMwMEMwNzRBNSAvKiBBVk1l
ZGlhQ2FwdHVyZVNvdXJjZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDA3MDM2M0REMTgxQTFDREMwMEMwNzRBNSAvKiBBVk1lZGlhQ2FwdHVyZVNvdXJj
ZS5tbSAqLzsgfTsKIAkJMDcwMzYzRTYxODFBMUNEQzAwQzA3NEE1IC8qIEFWVmlkZW9DYXB0dXJl
U291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
NzAzNjNERTE4MUExQ0RDMDBDMDc0QTUgLyogQVZWaWRlb0NhcHR1cmVTb3VyY2UuaCAqLzsgfTsK
IAkJMDcwMzYzRTcxODFBMUNEQzAwQzA3NEE1IC8qIEFWVmlkZW9DYXB0dXJlU291cmNlLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcwMzYzREYxODFB
MUNEQzAwQzA3NEE1IC8qIEFWVmlkZW9DYXB0dXJlU291cmNlLm1tICovOyB9OwogCQkwNzA0QTQw
ODFENkRFOUYxMDA4NkRDREIgLyogT3ZlcmNvbnN0cmFpbmVkRXJyb3IuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MDRBNDA1MUQ2REU5RjEwMDg2RENE
QiAvKiBPdmVyY29uc3RyYWluZWRFcnJvci5oICovOyB9OwpAQCAtNTE3OSw4ICs1MTc3LDYgQEAK
IAkJMDcwMzM0RTgxNDVBMUYzNTAwOEQ4RDQ1IC8qIEpTVHJhY2tDdXN0b20uY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNUcmFja0N1c3RvbS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3MDM2M0RBMTgxQTFDREMwMEMwNzRBNSAvKiBBVkNhcHR1
cmVEZXZpY2VNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFWQ2Fw
dHVyZURldmljZU1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDcwMzYz
REIxODFBMUNEQzAwQzA3NEE1IC8qIEFWQ2FwdHVyZURldmljZU1hbmFnZXIubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwNzAzNjNEQzE4MUExQ0RDMDBDMDc0QTUg
LyogQVZNZWRpYUNhcHR1cmVTb3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQVZNZWRpYUNhcHR1cmVTb3VyY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
MDcwMzYzREQxODFBMUNEQzAwQzA3NEE1IC8qIEFWTWVkaWFDYXB0dXJlU291cmNlLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQVZNZWRpYUNhcHR1cmVTb3VyY2Uu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3MDM2M0RFMTgxQTFDREMwMEMwNzRB
NSAvKiBBVlZpZGVvQ2FwdHVyZVNvdXJjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBBVlZpZGVvQ2FwdHVyZVNvdXJjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwNzAzNjNERjE4MUExQ0RDMDBDMDc0QTUgLyogQVZWaWRlb0NhcHR1cmVTb3VyY2UubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBVlZpZGVvQ2FwdHVyZVNvdXJj
ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDcwNEE0MDMxRDZERTlGMTAwODZE
Q0RCIC8qIE92ZXJjb25zdHJhaW5lZEVycm9yLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBP
dmVyY29uc3RyYWluZWRFcnJvci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0x
NTIxOCw4ICsxNTIxNCw2IEBACiAJCQkJMDdDMDQ2QzYxRTQyNTEyRjAwNzIwMUU3IC8qIEF1ZGlv
VHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYS5oICovLAogCQkJCTA3MDM2M0RBMTgxQTFDREMw
MEMwNzRBNSAvKiBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLmggKi8sCiAJCQkJMDcwMzYzREIxODFB
MUNEQzAwQzA3NEE1IC8qIEFWQ2FwdHVyZURldmljZU1hbmFnZXIubW0gKi8sCi0JCQkJMDcwMzYz
REMxODFBMUNEQzAwQzA3NEE1IC8qIEFWTWVkaWFDYXB0dXJlU291cmNlLmggKi8sCi0JCQkJMDcw
MzYzREQxODFBMUNEQzAwQzA3NEE1IC8qIEFWTWVkaWFDYXB0dXJlU291cmNlLm1tICovLAogCQkJ
CTA3MDM2M0RFMTgxQTFDREMwMEMwNzRBNSAvKiBBVlZpZGVvQ2FwdHVyZVNvdXJjZS5oICovLAog
CQkJCTA3MDM2M0RGMTgxQTFDREMwMEMwNzRBNSAvKiBBVlZpZGVvQ2FwdHVyZVNvdXJjZS5tbSAq
LywKIAkJCQkzRjgwMjAzMTFFOUUzODFEMDBERUM2MUQgLyogQ29yZUF1ZGlvQ2FwdHVyZURldmlj
ZS5jcHAgKi8sCkBAIC0yNDU2NiwxMCArMjQ1NjAsMTAgQEAKIAkJQ0Q2NjlENjUxRDIzMkRGNDAw
NEQxODY2IC8qIGNvY29hICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9
ICgKLQkJCQlDREU2NjdBMjFFNEJCRjE1MDBFODE1NEEgLyogV2ViQXVkaW9CdWZmZXJMaXN0LmNw
cCAqLywKLQkJCQlDREU2NjdBMzFFNEJCRjE1MDBFODE1NEEgLyogV2ViQXVkaW9CdWZmZXJMaXN0
LmggKi8sCiAJCQkJQ0Q2NjlENjYxRDIzMkRGRjAwNEQxODY2IC8qIE1lZGlhU2Vzc2lvbk1hbmFn
ZXJDb2NvYS5jcHAgKi8sCiAJCQkJQ0QyMjdFMzYyMTEzQUVGQTAwRDI4NUFGIC8qIE1lZGlhU2Vz
c2lvbk1hbmFnZXJDb2NvYS5oICovLAorCQkJCUNERTY2N0EyMUU0QkJGMTUwMEU4MTU0QSAvKiBX
ZWJBdWRpb0J1ZmZlckxpc3QuY3BwICovLAorCQkJCUNERTY2N0EzMUU0QkJGMTUwMEU4MTU0QSAv
KiBXZWJBdWRpb0J1ZmZlckxpc3QuaCAqLywKIAkJCSk7CiAJCQluYW1lID0gY29jb2E7CiAJCQlz
b3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMjcxMjMsNyArMjcxMTcsNiBAQAogCQkJCUNEQzY3
NTIzMUVBRUE5QjcwMDcyN0M4NCAvKiBBVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2Vy
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzAzNjNFMjE4MUExQ0RDMDBDMDc0QTUgLyogQVZDYXB0
dXJlRGV2aWNlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDdGNEU5MzMyMEIzNTg3RjAw
MkUzODAzIC8qIEFWRm91bmRhdGlvbk1JTUVUeXBlQ2FjaGUuaCBpbiBIZWFkZXJzICovLAotCQkJ
CTA3MDM2M0U0MTgxQTFDREMwMEMwNzRBNSAvKiBBVk1lZGlhQ2FwdHVyZVNvdXJjZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQ0QzMzZGNjIxN0Y5RjY0NzAwREREQ0QwIC8qIEFWVHJhY2tQcml2YXRl
QVZGT2JqQ0ltcGwuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3MDM2M0U2MTgxQTFDREMwMEMwNzRB
NSAvKiBBVlZpZGVvQ2FwdHVyZVNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjQ1QzIzMUUx
OTk1QjczQjAwQTZFMkUzIC8qIEF4aXNTY3JvbGxTbmFwT2Zmc2V0cy5oIGluIEhlYWRlcnMgKi8s
CkBAIC0yNzI3OSw3ICsyNzI3Miw2IEBACiAJCQkJRkI5MkRGNEIxNUZFRDA4NzAwOTk0NDMzIC8q
IENsaXBQYXRoT3BlcmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk1ODAzNzE2MjFBNjZGMDBB
MDBCQUY1MTkgLyogQ2xpcFJlY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3QUFCRDEzMTRGQTA5
RDUwMDc0NTdBRSAvKiBDbG9zZUV2ZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQlDREU2NjdBNTFF
NEJCRjE1MDBFODE1NEEgLyogV2ViQXVkaW9CdWZmZXJMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlDMEMwNTRDQjExMThDOEU0MDBDRTI2MzYgLyogQ29kZUdlbmVyYXRvci5wbSBpbiBIZWFkZXJz
ICovLAogCQkJCUJDNUVCNURGMEU4MUI5QUIwMEIyNTk2NSAvKiBDb2xsYXBzZWRCb3JkZXJWYWx1
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQyNUE0OUExODI5MkI4NDAwMjBDRkNGIC8qIENvbGxl
Y3Rpb25JbmRleENhY2hlLmggaW4gSGVhZGVycyAqLywKQEAgLTMwNzcyLDYgKzMwNzY0LDcgQEAK
IAkJCQk3MTMyNDQ1MTIwMTA5REE1MDBBRTdGQjIgLyogV2ViQW5pbWF0aW9uVXRpbGl0aWVzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlFMTg1MzY4NDFGNEU0ODE0MDBGRTA5MUIgLyogV2ViQXJjaGl2
ZVJlc291cmNlRnJvbU5TQXR0cmlidXRlZFN0cmluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTE4
QzM1NDQxRjcxOTcwQzAwRkY2MzJEIC8qIFdlYkFyY2hpdmVSZXNvdXJjZVdlYlJlc291cmNlSGFu
ZGxlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RFNjY3QTUxRTRCQkYxNTAwRTgxNTRBIC8qIFdl
YkF1ZGlvQnVmZmVyTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFCMkE2MjYxRUYxQkY2RDAw
MkI5RDdBIC8qIFdlYkF1ZGlvU291cmNlUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3
RDYzNzQwMUJCMEIxMTMwMDI1NkNFOSAvKiBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMUYzNkVBOUMxRTIxQkExNzAwNjIxRTI1IC8qIFdlYkJhY2tn
cm91bmRUYXNrQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMTM1Niw3ICszMTM0OSw2
IEBACiAJCQkJQ0RDNjc1MjIxRUFFQTlCNzAwNzI3Qzg0IC8qIEFWQXVkaW9TZXNzaW9uQ2FwdHVy
ZURldmljZU1hbmFnZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQkwNzAzNjNFMzE4MUExQ0RDMDBD
MDc0QTUgLyogQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTA3
MTk0MjdGMUQwODhGMjEwMDJBQTUxRCAvKiBBVkZvdW5kYXRpb25NSU1FVHlwZUNhY2hlLm1tIGlu
IFNvdXJjZXMgKi8sCi0JCQkJMDcwMzYzRTUxODFBMUNEQzAwQzA3NEE1IC8qIEFWTWVkaWFDYXB0
dXJlU291cmNlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0QzMzZGNjExN0Y5RjY0NzAwREREQ0Qw
IC8qIEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGwubW0gaW4gU291cmNlcyAqLywKIAkJCQkwNzAz
NjNFNzE4MUExQ0RDMDBDMDc0QTUgLyogQVZWaWRlb0NhcHR1cmVTb3VyY2UubW0gaW4gU291cmNl
cyAqLywKIAkJCQk3QTQ1MDMyRjE4REI3MTcyMDAzNzdCMzQgLyogQnVmZmVyZWRMaW5lUmVhZGVy
LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzEzNzAsNyArMzEzNjIsNiBAQAogCQkJCUNEREUwMkVE
MThCM0VENkQwMENGN0ZGMSAvKiBDRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCUNEREUwMkYwMThCNTY1MTMwMENGN0ZGMSAvKiBDRE1TZXNzaW9uQVZTdHJl
YW1TZXNzaW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RFNTk1OUQxQkYyNzU3MTAwQTFDQkU4
IC8qIENETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakMubW0gaW4gU291cmNlcyAqLywKLQkJCQlD
REU2NjdBNDFFNEJCRjE1MDBFODE1NEEgLyogV2ViQXVkaW9CdWZmZXJMaXN0LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUExNDA5MEZCMUFBNTFFMUQwMDkxMTkxQSAvKiBDb250ZW50RmlsdGVyVW5i
bG9ja0hhbmRsZXJDb2NvYS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTA3QUZGNDIzMUVGQjE0NDkw
MEI1NDVCMyAvKiBDb3JlQXVkaW9DYXB0dXJlU291cmNlSU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNDZDNjk2Q0MxRTcyMDVGQzAwNTk3OTM3IC8qIENQVU1vbml0b3IuY3BwIGluIFNvdXJjZXMg
Ki8sCkBAIC0zMjA5OSw2ICszMjA5MCw3IEBACiAJCQkJQTE0ODMyQjkxODdGNjNENTAwREE2M0E2
IC8qIFdBS1ZpZXcubW0gaW4gU291cmNlcyAqLywKIAkJCQlERTVGODYxRTFGQTI4MUZEMDA2REI2
M0EgLyogV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJREU1Rjg2MUQxRkEyODE1QjAwNkRCNjNBIC8qIFdlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyTWFjLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQ0RFNjY3QTQxRTRCQkYxNTAwRTgxNTRB
IC8qIFdlYkF1ZGlvQnVmZmVyTGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRDdFMDUyMjE2
NTFDMjgyMDBDMTIwMUYgLyogV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQ0QyMjVDMEIxQzQ2RkJGNDAwMTQwNzYxIC8qIFdlYkNvcmVOU1VSTFNlc3Npb24u
bW0gaW4gU291cmNlcyAqLywKIAkJCQk5M0YxOUIwNzA4MjQ1RTU5MDAxRTlBQkMgLyogV2ViQ29y
ZVZpZXcubSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vT3JpZW50YXRpb25Ob3RpZmllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vT3JpZW50
YXRpb25Ob3RpZmllci5oCmluZGV4IDZlOWU4OTA0MjlkODQ2ZTkwYzA1OGE2NzRlYTRjZTNmODIz
NGIyMzEuLjBlNmNjYjEwZjk4NjFlMGVlYjc0NDcxMWU4ZTg1NmNiNjljMWEwMTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL09yaWVudGF0aW9uTm90aWZpZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9PcmllbnRhdGlvbk5vdGlmaWVyLmgKQEAgLTI1LDYgKzI1
LDggQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgT3JpZW50YXRpb25Ob3RpZmllciB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNl
TWFuYWdlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNh
cHR1cmVEZXZpY2VNYW5hZ2VyLm1tCmluZGV4IDBlZmM5MmEwZmVlOTAyYWQ5Njg5ZTZjZWFjYzU1
YTY1NzJmNGZiZDkuLjllMTk1Y2E5ODhkZDM3ZDQzYmVhNDQ4NmRkZTU1OWM2NzQzMWRhMGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1
cmVEZXZpY2VNYW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tCkBAIC0yOCw3ICsyOCw2IEBACiAKICNp
ZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBVU0UoQVZGT1VOREFUSU9OKQogCi0jaW1wb3J0ICJB
Vk1lZGlhQ2FwdHVyZVNvdXJjZS5oIgogI2ltcG9ydCAiQVZWaWRlb0NhcHR1cmVTb3VyY2UuaCIK
ICNpbXBvcnQgIkF1ZGlvU291cmNlUHJvdmlkZXIuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKQEAg
LTU1LDIwICs1NCwxMiBAQCBTT0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVkNhcHR1cmVT
ZXNzaW9uKQogU09GVF9MSU5LX0NPTlNUQU5UKEFWRm91bmRhdGlvbiwgQVZNZWRpYVR5cGVBdWRp
bywgTlNTdHJpbmcgKikKIFNPRlRfTElOS19DT05TVEFOVChBVkZvdW5kYXRpb24sIEFWTWVkaWFU
eXBlTXV4ZWQsIE5TU3RyaW5nICopCiBTT0ZUX0xJTktfQ09OU1RBTlQoQVZGb3VuZGF0aW9uLCBB
Vk1lZGlhVHlwZVZpZGVvLCBOU1N0cmluZyAqKQotU09GVF9MSU5LX0NPTlNUQU5UKEFWRm91bmRh
dGlvbiwgQVZDYXB0dXJlU2Vzc2lvblByZXNldDEyODB4NzIwLCBOU1N0cmluZyAqKQotU09GVF9M
SU5LX0NPTlNUQU5UKEFWRm91bmRhdGlvbiwgQVZDYXB0dXJlU2Vzc2lvblByZXNldDY0MHg0ODAs
IE5TU3RyaW5nICopCi1TT0ZUX0xJTktfQ09OU1RBTlQoQVZGb3VuZGF0aW9uLCBBVkNhcHR1cmVT
ZXNzaW9uUHJlc2V0MzUyeDI4OCwgTlNTdHJpbmcgKikKLVNPRlRfTElOS19DT05TVEFOVChBVkZv
dW5kYXRpb24sIEFWQ2FwdHVyZVNlc3Npb25QcmVzZXRMb3csIE5TU3RyaW5nICopCiBTT0ZUX0xJ
TktfQ09OU1RBTlQoQVZGb3VuZGF0aW9uLCBBVkNhcHR1cmVEZXZpY2VXYXNDb25uZWN0ZWROb3Rp
ZmljYXRpb24sIE5TU3RyaW5nICopCiBTT0ZUX0xJTktfQ09OU1RBTlQoQVZGb3VuZGF0aW9uLCBB
VkNhcHR1cmVEZXZpY2VXYXNEaXNjb25uZWN0ZWROb3RpZmljYXRpb24sIE5TU3RyaW5nICopCiAK
ICNkZWZpbmUgQVZNZWRpYVR5cGVBdWRpbyBnZXRBVk1lZGlhVHlwZUF1ZGlvKCkKICNkZWZpbmUg
QVZNZWRpYVR5cGVNdXhlZCBnZXRBVk1lZGlhVHlwZU11eGVkKCkKICNkZWZpbmUgQVZNZWRpYVR5
cGVWaWRlbyBnZXRBVk1lZGlhVHlwZVZpZGVvKCkKLSNkZWZpbmUgQVZDYXB0dXJlU2Vzc2lvblBy
ZXNldDEyODB4NzIwIGdldEFWQ2FwdHVyZVNlc3Npb25QcmVzZXQxMjgweDcyMCgpCi0jZGVmaW5l
IEFWQ2FwdHVyZVNlc3Npb25QcmVzZXQ2NDB4NDgwIGdldEFWQ2FwdHVyZVNlc3Npb25QcmVzZXQ2
NDB4NDgwKCkKLSNkZWZpbmUgQVZDYXB0dXJlU2Vzc2lvblByZXNldDM1MngyODggZ2V0QVZDYXB0
dXJlU2Vzc2lvblByZXNldDM1MngyODgoKQotI2RlZmluZSBBVkNhcHR1cmVTZXNzaW9uUHJlc2V0
TG93IGdldEFWQ2FwdHVyZVNlc3Npb25QcmVzZXRMb3coKQogI2RlZmluZSBBVkNhcHR1cmVEZXZp
Y2VXYXNDb25uZWN0ZWROb3RpZmljYXRpb24gZ2V0QVZDYXB0dXJlRGV2aWNlV2FzQ29ubmVjdGVk
Tm90aWZpY2F0aW9uKCkKICNkZWZpbmUgQVZDYXB0dXJlRGV2aWNlV2FzRGlzY29ubmVjdGVkTm90
aWZpY2F0aW9uIGdldEFWQ2FwdHVyZURldmljZVdhc0Rpc2Nvbm5lY3RlZE5vdGlmaWNhdGlvbigp
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9B
Vk1lZGlhQ2FwdHVyZVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL0FWTWVkaWFDYXB0dXJlU291cmNlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDVmNDg0NzZkZTZkNmYyYmZhYTc1ZDI1ZmY1YjFiZmYzMDMwZTQwNTUuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL0FWTWVkaWFDYXB0dXJlU291cmNlLmgKKysrIC9kZXYvbnVsbApA
QCAtMSwxMTYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0g
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2lmbmRlZiBBVk1lZGlhQ2FwdHVyZVNvdXJjZV9oCi0jZGVmaW5lIEFWTWVk
aWFDYXB0dXJlU291cmNlX2gKLQotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFVTRShBVkZP
VU5EQVRJT04pCi0KLSNpbmNsdWRlICJHZW5lcmljVGFza1F1ZXVlLmgiCi0jaW5jbHVkZSAiUmVh
bHRpbWVNZWRpYVNvdXJjZS5oIgotI2luY2x1ZGUgIlRpbWVyLmgiCi0jaW5jbHVkZSA8d3RmL0Z1
bmN0aW9uLmg+Ci0KLU9CSkNfQ0xBU1MgQVZDYXB0dXJlQXVkaW9EYXRhT3V0cHV0OwotT0JKQ19D
TEFTUyBBVkNhcHR1cmVDb25uZWN0aW9uOwotT0JKQ19DTEFTUyBBVkNhcHR1cmVEZXZpY2U7Ci1P
QkpDX0NMQVNTIEFWQ2FwdHVyZU91dHB1dDsKLU9CSkNfQ0xBU1MgQVZDYXB0dXJlU2Vzc2lvbjsK
LU9CSkNfQ0xBU1MgQVZDYXB0dXJlVmlkZW9EYXRhT3V0cHV0OwotT0JKQ19DTEFTUyBOU0Vycm9y
OwotT0JKQ19DTEFTUyBOU05vdGlmaWNhdGlvbjsKLU9CSkNfQ0xBU1MgV2ViQ29yZUFWTWVkaWFD
YXB0dXJlU291cmNlT2JzZXJ2ZXI7Ci0KLXR5cGVkZWYgc3RydWN0IG9wYXF1ZUNNU2FtcGxlQnVm
ZmVyICpDTVNhbXBsZUJ1ZmZlclJlZjsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBB
Vk1lZGlhQ2FwdHVyZVNvdXJjZTsKLQotY2xhc3MgQVZNZWRpYUNhcHR1cmVTb3VyY2UgOiBwdWJs
aWMgUmVhbHRpbWVNZWRpYVNvdXJjZSB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+QVZNZWRpYUNh
cHR1cmVTb3VyY2UoKTsKLQotICAgIHZpcnR1YWwgdm9pZCBjYXB0dXJlT3V0cHV0RGlkT3V0cHV0
U2FtcGxlQnVmZmVyRnJvbUNvbm5lY3Rpb24oQVZDYXB0dXJlT3V0cHV0KiwgQ01TYW1wbGVCdWZm
ZXJSZWYsIEFWQ2FwdHVyZUNvbm5lY3Rpb24qKSA9IDA7Ci0KLSAgICB2b2lkIGNhcHR1cmVTZXNz
aW9uSXNSdW5uaW5nRGlkQ2hhbmdlKGJvb2wpOwotICAgIHZvaWQgY2FwdHVyZVNlc3Npb25SdW50
aW1lRXJyb3IoUmV0YWluUHRyPE5TRXJyb3I+KTsKLQotICAgIGVudW0gY2xhc3MgSW50ZXJydXB0
aW9uUmVhc29uIHsgTm9uZSwgVmlkZW9Ob3RBbGxvd2VkSW5CYWNrZ3JvdW5kLCBBdWRpb0luVXNl
LCBWaWRlb0luVXNlLCBWaWRlb05vdEFsbG93ZWRJblNpZGVCeVNpZGUgfTsKLSAgICB2b2lkIGNh
cHR1cmVTZXNzaW9uQmVnaW5JbnRlcnJ1cHRpb24oUmV0YWluUHRyPE5TTm90aWZpY2F0aW9uPik7
Ci0gICAgdm9pZCBjYXB0dXJlU2Vzc2lvbkVuZEludGVycnVwdGlvbihSZXRhaW5QdHI8TlNOb3Rp
ZmljYXRpb24+KTsKLQotICAgIEFWQ2FwdHVyZVNlc3Npb24gKnNlc3Npb24oKSBjb25zdCB7IHJl
dHVybiBtX3Nlc3Npb24uZ2V0KCk7IH0KLQotICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VT
ZXR0aW5ncyYgc2V0dGluZ3MoKSBjb25zdCBmaW5hbDsKLQotICAgIHZvaWQgc3RhcnRQcm9kdWNp
bmdEYXRhKCkgZmluYWw7Ci0gICAgdm9pZCBzdG9wUHJvZHVjaW5nRGF0YSgpIGZpbmFsOwotCi1w
cm90ZWN0ZWQ6Ci0gICAgQVZNZWRpYUNhcHR1cmVTb3VyY2UoQVZDYXB0dXJlRGV2aWNlKiwgY29u
c3QgQXRvbWljU3RyaW5nJiwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSk7Ci0KLSAgICB2aXJ0
dWFsIGJvb2wgc2V0dXBDYXB0dXJlU2Vzc2lvbigpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2h1
dGRvd25DYXB0dXJlU2Vzc2lvbigpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU2V0dGlu
Z3MoUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBp
bml0aWFsaXplQ2FwYWJpbGl0aWVzKFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemVTdXBwb3J0ZWRDb25zdHJhaW50cyhSZWFs
dGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMmKSA9IDA7Ci0KLSAgICBBVkNhcHR1
cmVEZXZpY2UgKmRldmljZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGV2aWNlLmdldCgpOyB9Ci0KLSAg
ICBSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMmIHN1cHBvcnRlZENvbnN0
cmFpbnRzKCk7Ci0gICAgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYgY2Fw
YWJpbGl0aWVzKCkgY29uc3QgZmluYWw7Ci0KLSAgICB2b2lkIHNldFZpZGVvU2FtcGxlQnVmZmVy
RGVsZWdhdGUoQVZDYXB0dXJlVmlkZW9EYXRhT3V0cHV0Kik7Ci0gICAgdm9pZCBzZXRBdWRpb1Nh
bXBsZUJ1ZmZlckRlbGVnYXRlKEFWQ2FwdHVyZUF1ZGlvRGF0YU91dHB1dCopOwotCi1wcml2YXRl
OgotICAgIGJvb2wgc2V0dXBTZXNzaW9uKCk7Ci0KLSAgICB2b2lkIGJlZ2luQ29uZmlndXJhdGlv
bigpIGZpbmFsOwotICAgIHZvaWQgY29tbWl0Q29uZmlndXJhdGlvbigpIGZpbmFsOwotCi0gICAg
Ym9vbCBpc0NhcHR1cmVTb3VyY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9Ci0KLSAg
ICBib29sIGludGVycnVwdGVkKCkgY29uc3QgZmluYWw7Ci0KLSAgICB2b2lkIGluaXRpYWxpemVT
ZXR0aW5ncygpOwotICAgIHZvaWQgaW5pdGlhbGl6ZUNhcGFiaWxpdGllcygpOwotCi0gICAgUmVh
bHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzIG1fY3VycmVudFNldHRpbmdzOwotICAgIFJlYWx0aW1l
TWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cyBtX3N1cHBvcnRlZENvbnN0cmFpbnRzOwot
ICAgIFJldGFpblB0cjxXZWJDb3JlQVZNZWRpYUNhcHR1cmVTb3VyY2VPYnNlcnZlcj4gbV9vYmpj
T2JzZXJ2ZXI7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmls
aXRpZXM+IG1fY2FwYWJpbGl0aWVzOwotICAgIFJldGFpblB0cjxBVkNhcHR1cmVTZXNzaW9uPiBt
X3Nlc3Npb247Ci0gICAgUmV0YWluUHRyPEFWQ2FwdHVyZURldmljZT4gbV9kZXZpY2U7Ci0gICAg
SW50ZXJydXB0aW9uUmVhc29uIG1faW50ZXJydXB0aW9uIHsgSW50ZXJydXB0aW9uUmVhc29uOjpO
b25lIH07Ci0gICAgYm9vbCBtX2lzUnVubmluZyB7IGZhbHNlIH07Ci19OwotCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQotCi0jZW5kaWYg
Ly8gQVZNZWRpYUNhcHR1cmVTb3VyY2VfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UuaAppbmRl
eCBmOGRjZDAwYWZlMjMwYTJmNTIwZmRkZjgzYTA1ZGI5NTZkMGNmMzFhLi43NDhlNDgwMGM1NTFm
ODk1MjdiY2E2MGViOTYzN2M0NDk1ZjRlNzY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2Uu
aApAQCAtMjcsMjMgKzI3LDI0IEBACiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBVU0Uo
QVZGT1VOREFUSU9OKQogCi0jaW5jbHVkZSAiQVZNZWRpYUNhcHR1cmVTb3VyY2UuaCIKICNpbmNs
dWRlICJPcmllbnRhdGlvbk5vdGlmaWVyLmgiCisjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJj
ZS5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAotT0JKQ19DTEFTUyBDQUxh
eWVyOwotT0JKQ19DTEFTUyBBVkZyYW1lUmF0ZVJhbmdlOwordHlwZWRlZiBzdHJ1Y3Qgb3BhcXVl
Q01TYW1wbGVCdWZmZXIqIENNU2FtcGxlQnVmZmVyUmVmOwogCi10eXBlZGVmIHN0cnVjdCBDR0lt
YWdlICpDR0ltYWdlUmVmOwotdHlwZWRlZiBjb25zdCBzdHJ1Y3Qgb3BhcXVlQ01Gb3JtYXREZXNj
cmlwdGlvbiAqQ01Gb3JtYXREZXNjcmlwdGlvblJlZjsKLXR5cGVkZWYgc3RydWN0IG9wYXF1ZUNN
U2FtcGxlQnVmZmVyICpDTVNhbXBsZUJ1ZmZlclJlZjsKK09CSkNfQ0xBU1MgQVZDYXB0dXJlQ29u
bmVjdGlvbjsKK09CSkNfQ0xBU1MgQVZDYXB0dXJlRGV2aWNlOworT0JKQ19DTEFTUyBBVkNhcHR1
cmVPdXRwdXQ7CitPQkpDX0NMQVNTIEFWQ2FwdHVyZVNlc3Npb247CitPQkpDX0NMQVNTIEFWQ2Fw
dHVyZVZpZGVvRGF0YU91dHB1dDsKK09CSkNfQ0xBU1MgTlNFcnJvcjsKK09CSkNfQ0xBU1MgTlNO
b3RpZmljYXRpb247CitPQkpDX0NMQVNTIFdlYkNvcmVBVlZpZGVvQ2FwdHVyZVNvdXJjZU9ic2Vy
dmVyOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEZsb2F0UmVjdDsKLWNsYXNzIEdy
YXBoaWNzQ29udGV4dDsKLWNsYXNzIFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y7Ci0KLWNsYXNzIEFW
VmlkZW9DYXB0dXJlU291cmNlIDogcHVibGljIEFWTWVkaWFDYXB0dXJlU291cmNlLCBwcml2YXRl
IE9yaWVudGF0aW9uTm90aWZpZXI6Ok9ic2VydmVyIHsKK2NsYXNzIEFWVmlkZW9DYXB0dXJlU291
cmNlIDogcHVibGljIFJlYWx0aW1lTWVkaWFTb3VyY2UsIHByaXZhdGUgT3JpZW50YXRpb25Ob3Rp
Zmllcjo6T2JzZXJ2ZXIgewogcHVibGljOgogICAgIHN0YXRpYyBDYXB0dXJlU291cmNlT3JFcnJv
ciBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiwgY29uc3QgTWVkaWFDb25zdHJhaW50cyopOwog
CkBAIC01Miw0MyArNTMsNTkgQEAgcHVibGljOgogICAgIGludDMyX3Qgd2lkdGgoKSBjb25zdCB7
IHJldHVybiBtX3dpZHRoOyB9CiAgICAgaW50MzJfdCBoZWlnaHQoKSBjb25zdCB7IHJldHVybiBt
X2hlaWdodDsgfQogCisgICAgZW51bSBjbGFzcyBJbnRlcnJ1cHRpb25SZWFzb24geyBOb25lLCBW
aWRlb05vdEFsbG93ZWRJbkJhY2tncm91bmQsIEF1ZGlvSW5Vc2UsIFZpZGVvSW5Vc2UsIFZpZGVv
Tm90QWxsb3dlZEluU2lkZUJ5U2lkZSB9OworICAgIHZvaWQgY2FwdHVyZVNlc3Npb25CZWdpbklu
dGVycnVwdGlvbihSZXRhaW5QdHI8TlNOb3RpZmljYXRpb24+KTsKKyAgICB2b2lkIGNhcHR1cmVT
ZXNzaW9uRW5kSW50ZXJydXB0aW9uKFJldGFpblB0cjxOU05vdGlmaWNhdGlvbj4pOworCisgICAg
QVZDYXB0dXJlU2Vzc2lvbiogc2Vzc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fc2Vzc2lvbi5nZXQo
KTsgfQorCisgICAgdm9pZCBjYXB0dXJlU2Vzc2lvbklzUnVubmluZ0RpZENoYW5nZShib29sKTsK
KyAgICB2b2lkIGNhcHR1cmVTZXNzaW9uUnVudGltZUVycm9yKFJldGFpblB0cjxOU0Vycm9yPik7
CisgICAgdm9pZCBjYXB0dXJlT3V0cHV0RGlkT3V0cHV0U2FtcGxlQnVmZmVyRnJvbUNvbm5lY3Rp
b24oQVZDYXB0dXJlT3V0cHV0KiwgQ01TYW1wbGVCdWZmZXJSZWYsIEFWQ2FwdHVyZUNvbm5lY3Rp
b24qKTsKKwogcHJpdmF0ZToKICAgICBBVlZpZGVvQ2FwdHVyZVNvdXJjZShBVkNhcHR1cmVEZXZp
Y2UqLCBjb25zdCBBdG9taWNTdHJpbmcmKTsKICAgICB2aXJ0dWFsIH5BVlZpZGVvQ2FwdHVyZVNv
dXJjZSgpOwogCi0gICAgYm9vbCBzZXR1cENhcHR1cmVTZXNzaW9uKCkgZmluYWw7Ci0gICAgdm9p
ZCBzaHV0ZG93bkNhcHR1cmVTZXNzaW9uKCkgZmluYWw7Ci0KLSAgICB2b2lkIHVwZGF0ZVNldHRp
bmdzKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYpIGZpbmFsOworICAgIGJvb2wgc2V0dXBT
ZXNzaW9uKCk7CisgICAgYm9vbCBzZXR1cENhcHR1cmVTZXNzaW9uKCk7CisgICAgdm9pZCBzaHV0
ZG93bkNhcHR1cmVTZXNzaW9uKCk7CiAKKyAgICBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlQ2Fw
YWJpbGl0aWVzJiBjYXBhYmlsaXRpZXMoKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIGFwcGx5U2l6
ZUFuZEZyYW1lUmF0ZShzdGQ6Om9wdGlvbmFsPGludD4gd2lkdGgsIHN0ZDo6b3B0aW9uYWw8aW50
PiBoZWlnaHQsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPikgZmluYWw7CiAgICAgYm9vbCBhcHBseVNp
emUoY29uc3QgSW50U2l6ZSYpIGZpbmFsOwogICAgIGJvb2wgYXBwbHlGcmFtZVJhdGUoZG91Ymxl
KSBmaW5hbDsKLSAgICBib29sIHNldFByZXNldChOU1N0cmluZyopOwotCisgICAgY29uc3QgUmVh
bHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiBzZXR0aW5ncygpIGNvbnN0IGZpbmFsOworICAgIHZv
aWQgc3RhcnRQcm9kdWNpbmdEYXRhKCkgZmluYWw7CisgICAgdm9pZCBzdG9wUHJvZHVjaW5nRGF0
YSgpIGZpbmFsOworICAgIGJvb2wgc3VwcG9ydHNTaXplQW5kRnJhbWVSYXRlKHN0ZDo6b3B0aW9u
YWw8aW50PiB3aWR0aCwgc3RkOjpvcHRpb25hbDxpbnQ+IGhlaWdodCwgc3RkOjpvcHRpb25hbDxk
b3VibGU+KSBmaW5hbDsKKyAgICB2b2lkIHNldHRpbmdzRGlkQ2hhbmdlKCkgZmluYWw7CiAgICAg
dm9pZCBtb25pdG9yT3JpZW50YXRpb24oT3JpZW50YXRpb25Ob3RpZmllciYpIGZpbmFsOworICAg
IHZvaWQgYmVnaW5Db25maWd1cmF0aW9uKCkgZmluYWw7CisgICAgdm9pZCBjb21taXRDb25maWd1
cmF0aW9uKCkgZmluYWw7CisgICAgYm9vbCBpc0NhcHR1cmVTb3VyY2UoKSBjb25zdCBmaW5hbCB7
IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBpbnRlcnJ1cHRlZCgpIGNvbnN0IGZpbmFsOworCisg
ICAgYm9vbCBzZXRQcmVzZXQoTlNTdHJpbmcqKTsKICAgICB2b2lkIGNvbXB1dGVTYW1wbGVSb3Rh
dGlvbigpOwogCiAgICAgYm9vbCBpc0ZyYW1lUmF0ZVN1cHBvcnRlZChkb3VibGUgZnJhbWVSYXRl
KTsKIAotICAgIE5TU3RyaW5nICpiZXN0U2Vzc2lvblByZXNldEZvclZpZGVvRGltZW5zaW9ucyhz
dGQ6Om9wdGlvbmFsPGludD4gd2lkdGgsIHN0ZDo6b3B0aW9uYWw8aW50PiBoZWlnaHQpOwotICAg
IGJvb2wgc3VwcG9ydHNTaXplQW5kRnJhbWVSYXRlKHN0ZDo6b3B0aW9uYWw8aW50PiB3aWR0aCwg
c3RkOjpvcHRpb25hbDxpbnQ+IGhlaWdodCwgc3RkOjpvcHRpb25hbDxkb3VibGU+KSBmaW5hbDsK
LQotICAgIHZvaWQgaW5pdGlhbGl6ZUNhcGFiaWxpdGllcyhSZWFsdGltZU1lZGlhU291cmNlQ2Fw
YWJpbGl0aWVzJikgZmluYWw7Ci0gICAgdm9pZCBpbml0aWFsaXplU3VwcG9ydGVkQ29uc3RyYWlu
dHMoUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzJikgZmluYWw7CisgICAg
TlNTdHJpbmcqIGJlc3RTZXNzaW9uUHJlc2V0Rm9yVmlkZW9EaW1lbnNpb25zKHN0ZDo6b3B0aW9u
YWw8aW50PiB3aWR0aCwgc3RkOjpvcHRpb25hbDxpbnQ+IGhlaWdodCk7CiAKICAgICAvLyBPcmll
bnRhdGlvbk5vdGlmaWVyOjpPYnNlcnZlciBBUEkKICAgICB2b2lkIG9yaWVudGF0aW9uQ2hhbmdl
ZChpbnQgb3JpZW50YXRpb24pIGZpbmFsOwogCiAgICAgYm9vbCBzZXRGcmFtZVJhdGVDb25zdHJh
aW50KGRvdWJsZSBtaW5GcmFtZVJhdGUsIGRvdWJsZSBtYXhGcmFtZVJhdGUpOwogCi0gICAgdm9p
ZCBjYXB0dXJlT3V0cHV0RGlkT3V0cHV0U2FtcGxlQnVmZmVyRnJvbUNvbm5lY3Rpb24oQVZDYXB0
dXJlT3V0cHV0KiwgQ01TYW1wbGVCdWZmZXJSZWYsIEFWQ2FwdHVyZUNvbm5lY3Rpb24qKSBmaW5h
bDsKICAgICB2b2lkIHByb2Nlc3NOZXdGcmFtZShSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+
LCBSZXRhaW5QdHI8QVZDYXB0dXJlQ29ubmVjdGlvbj4pOwogICAgIEludFNpemUgc2l6ZUZvclBy
ZXNldChOU1N0cmluZyopOwogCiAgICAgdXNpbmcgVmlkZW9QcmVzZXRNYXAgPSBIYXNoTWFwPFN0
cmluZywgSW50U2l6ZT47CiAgICAgVmlkZW9QcmVzZXRNYXAmIHZpZGVvUHJlc2V0cygpIHsgcmV0
dXJuIG1fc3VwcG9ydGVkUHJlc2V0czsgfQogCisgICAgQVZDYXB0dXJlRGV2aWNlKiBkZXZpY2Uo
KSBjb25zdCB7IHJldHVybiBtX2RldmljZS5nZXQoKTsgfQorCiAgICAgUmV0YWluUHRyPE5TU3Ry
aW5nPiBtX3BlbmRpbmdQcmVzZXQ7CiAgICAgUmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPiBt
X2J1ZmZlcjsKICAgICBSZXRhaW5QdHI8QVZDYXB0dXJlVmlkZW9EYXRhT3V0cHV0PiBtX3ZpZGVv
T3V0cHV0OwpAQCAtMTAxLDYgKzExOCwxNSBAQCBwcml2YXRlOgogICAgIE1lZGlhU2FtcGxlOjpW
aWRlb1JvdGF0aW9uIG1fc2FtcGxlUm90YXRpb24geyBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlv
bjo6Tm9uZSB9OwogCiAgICAgVmlkZW9QcmVzZXRNYXAgbV9zdXBwb3J0ZWRQcmVzZXRzOworCisg
ICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncz4gbV9j
dXJyZW50U2V0dGluZ3M7CisgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPFJlYWx0aW1lTWVkaWFT
b3VyY2VDYXBhYmlsaXRpZXM+IG1fY2FwYWJpbGl0aWVzOworICAgIFJldGFpblB0cjxXZWJDb3Jl
QVZWaWRlb0NhcHR1cmVTb3VyY2VPYnNlcnZlcj4gbV9vYmpjT2JzZXJ2ZXI7CisgICAgUmV0YWlu
UHRyPEFWQ2FwdHVyZVNlc3Npb24+IG1fc2Vzc2lvbjsKKyAgICBSZXRhaW5QdHI8QVZDYXB0dXJl
RGV2aWNlPiBtX2RldmljZTsKKyAgICBJbnRlcnJ1cHRpb25SZWFzb24gbV9pbnRlcnJ1cHRpb24g
eyBJbnRlcnJ1cHRpb25SZWFzb246Ok5vbmUgfTsKKyAgICBib29sIG1faXNSdW5uaW5nIHsgZmFs
c2UgfTsKKwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJl
U291cmNlLm1tCmluZGV4IGZhY2MzOGYwOGE4ODA5ZDJiM2I4MzM5ZjI5ZmU3OTQ5ZTI3Yjc2ZTku
LjE3ZTA1NTZkOWM2NzgxMDI5M2VlMjg5ZDFlOWYwMmE3ZWNjYTIwNGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJj
ZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRl
b0NhcHR1cmVTb3VyY2UubW0KQEAgLTI4LDMwICsyOCwyMSBAQAogCiAjaWYgRU5BQkxFKE1FRElB
X1NUUkVBTSkgJiYgVVNFKEFWRk9VTkRBVElPTikKIAotI2ltcG9ydCAiQVZDYXB0dXJlRGV2aWNl
TWFuYWdlci5oIgotI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0Q0cuaCIKICNpbXBvcnQgIkltYWdl
QnVmZmVyLmgiCiAjaW1wb3J0ICJJbnRSZWN0LmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1w
b3J0ICJNZWRpYUNvbnN0cmFpbnRzLmgiCiAjaW1wb3J0ICJNZWRpYVNhbXBsZUFWRk9iakMuaCIK
LSNpbXBvcnQgIk5vdEltcGxlbWVudGVkLmgiCi0jaW1wb3J0ICJQaXhlbEJ1ZmZlckNvbmZvcm1l
ckNWLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybUxheWVyLmgiCiAjaW1wb3J0ICJSZWFsdGltZU1lZGlh
U291cmNlQ2VudGVyTWFjLmgiCiAjaW1wb3J0ICJSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3Mu
aCIKLSNpbXBvcnQgIldlYkFjdGlvbkRpc2FibGluZ0NBTGF5ZXJEZWxlZ2F0ZS5oIgogI2ltcG9y
dCA8QVZGb3VuZGF0aW9uL0FWQ2FwdHVyZURldmljZS5oPgogI2ltcG9ydCA8QVZGb3VuZGF0aW9u
L0FWQ2FwdHVyZUlucHV0Lmg+CiAjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZDYXB0dXJlT3V0cHV0
Lmg+CiAjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZDYXB0dXJlU2Vzc2lvbi5oPgorI2ltcG9ydCA8
QVZGb3VuZGF0aW9uL0FWRXJyb3IuaD4KICNpbXBvcnQgPG9iamMvcnVudGltZS5oPgogCi0jaWYg
UExBVEZPUk0oSU9TKQotI2luY2x1ZGUgIldlYkNvcmVUaHJlYWQuaCIKLSNpbmNsdWRlICJXZWJD
b3JlVGhyZWFkUnVuLmgiCi0jZW5kaWYKLQogI2ltcG9ydCA8cGFsL2NmL0NvcmVNZWRpYVNvZnRM
aW5rLmg+CiAjaW1wb3J0ICJDb3JlVmlkZW9Tb2Z0TGluay5oIgogCkBAIC02Miw2ICs1Myw3IEBA
IHR5cGVkZWYgQVZDYXB0dXJlRGV2aWNlSW5wdXQgQVZDYXB0dXJlRGV2aWNlSW5wdXRUeXBlOwog
dHlwZWRlZiBBVkNhcHR1cmVPdXRwdXQgQVZDYXB0dXJlT3V0cHV0VHlwZTsKIHR5cGVkZWYgQVZD
YXB0dXJlVmlkZW9EYXRhT3V0cHV0IEFWQ2FwdHVyZVZpZGVvRGF0YU91dHB1dFR5cGU7CiB0eXBl
ZGVmIEFWRnJhbWVSYXRlUmFuZ2UgQVZGcmFtZVJhdGVSYW5nZVR5cGU7Cit0eXBlZGVmIEFWQ2Fw
dHVyZVNlc3Npb24gQVZDYXB0dXJlU2Vzc2lvblR5cGU7CiAKIFNPRlRfTElOS19GUkFNRVdPUktf
T1BUSU9OQUwoQVZGb3VuZGF0aW9uKQogCkBAIC03Miw2ICs2NCw3IEBAIFNPRlRfTElOS19DTEFT
UyhBVkZvdW5kYXRpb24sIEFWQ2FwdHVyZURldmljZUlucHV0KQogU09GVF9MSU5LX0NMQVNTKEFW
Rm91bmRhdGlvbiwgQVZDYXB0dXJlT3V0cHV0KQogU09GVF9MSU5LX0NMQVNTKEFWRm91bmRhdGlv
biwgQVZDYXB0dXJlVmlkZW9EYXRhT3V0cHV0KQogU09GVF9MSU5LX0NMQVNTKEFWRm91bmRhdGlv
biwgQVZGcmFtZVJhdGVSYW5nZSkKK1NPRlRfTElOS19DTEFTUyhBVkZvdW5kYXRpb24sIEFWQ2Fw
dHVyZVNlc3Npb24pCiAKICNkZWZpbmUgQVZDYXB0dXJlQ29ubmVjdGlvbiBnZXRBVkNhcHR1cmVD
b25uZWN0aW9uQ2xhc3MoKQogI2RlZmluZSBBVkNhcHR1cmVEZXZpY2UgZ2V0QVZDYXB0dXJlRGV2
aWNlQ2xhc3MoKQpAQCAtOTcsMTMgKzkwLDQwIEBAIFNPRlRfTElOS19DT05TVEFOVF9NQVlfRkFJ
TChBVkZvdW5kYXRpb24sIEFWQ2FwdHVyZVNlc3Npb25QcmVzZXQzMjB4MjQwLCBOU1N0cmluCiAj
aWYgUExBVEZPUk0oSU9TKQogU09GVF9MSU5LX0NPTlNUQU5UX01BWV9GQUlMKEFWRm91bmRhdGlv
biwgQVZDYXB0dXJlU2Vzc2lvblByZXNldDM4NDB4MjE2MCwgTlNTdHJpbmcgKikKIFNPRlRfTElO
S19DT05TVEFOVF9NQVlfRkFJTChBVkZvdW5kYXRpb24sIEFWQ2FwdHVyZVNlc3Npb25QcmVzZXQx
OTIweDEwODAsIE5TU3RyaW5nICopCitTT0ZUX0xJTktfUE9JTlRFUl9PUFRJT05BTChBVkZvdW5k
YXRpb24sIEFWQ2FwdHVyZVNlc3Npb25SdW50aW1lRXJyb3JOb3RpZmljYXRpb24sIE5TU3RyaW5n
ICopCitTT0ZUX0xJTktfUE9JTlRFUl9PUFRJT05BTChBVkZvdW5kYXRpb24sIEFWQ2FwdHVyZVNl
c3Npb25XYXNJbnRlcnJ1cHRlZE5vdGlmaWNhdGlvbiwgTlNTdHJpbmcgKikKK1NPRlRfTElOS19Q
T0lOVEVSX09QVElPTkFMKEFWRm91bmRhdGlvbiwgQVZDYXB0dXJlU2Vzc2lvbkludGVycnVwdGlv
bkVuZGVkTm90aWZpY2F0aW9uLCBOU1N0cmluZyAqKQorU09GVF9MSU5LX1BPSU5URVJfT1BUSU9O
QUwoQVZGb3VuZGF0aW9uLCBBVkNhcHR1cmVTZXNzaW9uSW50ZXJydXB0aW9uUmVhc29uS2V5LCBO
U1N0cmluZyAqKQorU09GVF9MSU5LX1BPSU5URVJfT1BUSU9OQUwoQVZGb3VuZGF0aW9uLCBBVkNh
cHR1cmVTZXNzaW9uRXJyb3JLZXksIE5TU3RyaW5nICopCiAKICNkZWZpbmUgQVZDYXB0dXJlU2Vz
c2lvblByZXNldDM4NDB4MjE2MCBnZXRBVkNhcHR1cmVTZXNzaW9uUHJlc2V0Mzg0MHgyMTYwKCkK
ICNkZWZpbmUgQVZDYXB0dXJlU2Vzc2lvblByZXNldDE5MjB4MTA4MCBnZXRBVkNhcHR1cmVTZXNz
aW9uUHJlc2V0MTkyMHgxMDgwKCkKKyNkZWZpbmUgQVZDYXB0dXJlU2Vzc2lvblJ1bnRpbWVFcnJv
ck5vdGlmaWNhdGlvbiBnZXRBVkNhcHR1cmVTZXNzaW9uUnVudGltZUVycm9yTm90aWZpY2F0aW9u
KCkKKyNkZWZpbmUgQVZDYXB0dXJlU2Vzc2lvbldhc0ludGVycnVwdGVkTm90aWZpY2F0aW9uIGdl
dEFWQ2FwdHVyZVNlc3Npb25XYXNJbnRlcnJ1cHRlZE5vdGlmaWNhdGlvbigpCisjZGVmaW5lIEFW
Q2FwdHVyZVNlc3Npb25JbnRlcnJ1cHRpb25FbmRlZE5vdGlmaWNhdGlvbiBnZXRBVkNhcHR1cmVT
ZXNzaW9uSW50ZXJydXB0aW9uRW5kZWROb3RpZmljYXRpb24oKQorI2RlZmluZSBBVkNhcHR1cmVT
ZXNzaW9uSW50ZXJydXB0aW9uUmVhc29uS2V5IGdldEFWQ2FwdHVyZVNlc3Npb25JbnRlcnJ1cHRp
b25SZWFzb25LZXkoKQorI2RlZmluZSBBVkNhcHR1cmVTZXNzaW9uRXJyb3JLZXkgZ2V0QVZDYXB0
dXJlU2Vzc2lvbkVycm9yS2V5KCkKICNlbmRpZgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IAorQGludGVyZmFjZSBXZWJDb3JlQVZWaWRlb0NhcHR1cmVTb3VyY2VPYnNlcnZlciA6IE5TT2Jq
ZWN0PEFWQ2FwdHVyZVZpZGVvRGF0YU91dHB1dFNhbXBsZUJ1ZmZlckRlbGVnYXRlPiB7CisgICAg
QVZWaWRlb0NhcHR1cmVTb3VyY2UqIG1fY2FsbGJhY2s7Cit9CisKKy0oaWQpaW5pdFdpdGhDYWxs
YmFjazooQVZWaWRlb0NhcHR1cmVTb3VyY2UqKWNhbGxiYWNrOworLSh2b2lkKWRpc2Nvbm5lY3Q7
CistKHZvaWQpYWRkTm90aWZpY2F0aW9uT2JzZXJ2ZXJzOworLSh2b2lkKXJlbW92ZU5vdGlmaWNh
dGlvbk9ic2VydmVyczsKKy0odm9pZCljYXB0dXJlT3V0cHV0OihBVkNhcHR1cmVPdXRwdXRUeXBl
KiljYXB0dXJlT3V0cHV0IGRpZE91dHB1dFNhbXBsZUJ1ZmZlcjooQ01TYW1wbGVCdWZmZXJSZWYp
c2FtcGxlQnVmZmVyIGZyb21Db25uZWN0aW9uOihBVkNhcHR1cmVDb25uZWN0aW9uVHlwZSopY29u
bmVjdGlvbjsKKy0odm9pZClvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOmtleVBhdGggb2ZPYmplY3Q6
KGlkKW9iamVjdCBjaGFuZ2U6KE5TRGljdGlvbmFyeSopY2hhbmdlIGNvbnRleHQ6KHZvaWQqKWNv
bnRleHQ7CisjaWYgUExBVEZPUk0oSU9TKQorLSh2b2lkKXNlc3Npb25SdW50aW1lRXJyb3I6KE5T
Tm90aWZpY2F0aW9uKilub3RpZmljYXRpb247CistKHZvaWQpYmVnaW5TZXNzaW9uSW50ZXJydXB0
ZWQ6KE5TTm90aWZpY2F0aW9uKilub3RpZmljYXRpb247CistKHZvaWQpZW5kU2Vzc2lvbkludGVy
cnVwdGVkOihOU05vdGlmaWNhdGlvbiopbm90aWZpY2F0aW9uOworI2VuZGlmCitAZW5kCisKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTExMiw2ICsxMzIsMTYg
QEAgY29uc3QgT1NUeXBlIHZpZGVvQ2FwdHVyZUZvcm1hdCA9IGtDVlBpeGVsRm9ybWF0VHlwZV80
MjBZcENiQ3I4UGxhbmFyOwogY29uc3QgT1NUeXBlIHZpZGVvQ2FwdHVyZUZvcm1hdCA9IGtDVlBp
eGVsRm9ybWF0VHlwZV80MjBZcENiQ3I4QmlQbGFuYXJGdWxsUmFuZ2U7CiAjZW5kaWYKIAorc3Rh
dGljIGRpc3BhdGNoX3F1ZXVlX3QgZ2xvYmFWaWRlb0NhcHR1cmVTZXJpYWxRdWV1ZSgpCit7Cisg
ICAgc3RhdGljIGRpc3BhdGNoX3F1ZXVlX3QgZ2xvYmFsUXVldWU7CisgICAgc3RhdGljIGRpc3Bh
dGNoX29uY2VfdCBvbmNlVG9rZW47CisgICAgZGlzcGF0Y2hfb25jZSgmb25jZVRva2VuLCBeewor
ICAgICAgICBnbG9iYWxRdWV1ZSA9IGRpc3BhdGNoX3F1ZXVlX2NyZWF0ZV93aXRoX3RhcmdldCgi
V2ViQ29yZUFWVmlkZW9DYXB0dXJlU291cmNlIHZpZGVvIGNhcHR1cmUgcXVldWUiLCBESVNQQVRD
SF9RVUVVRV9TRVJJQUwsIGRpc3BhdGNoX2dldF9nbG9iYWxfcXVldWUoRElTUEFUQ0hfUVVFVUVf
UFJJT1JJVFlfSElHSCwgMCkpOworICAgIH0pOworICAgIHJldHVybiBnbG9iYWxRdWV1ZTsKK30K
KwogQ2FwdHVyZVNvdXJjZU9yRXJyb3IgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OmNyZWF0ZShjb25z
dCBBdG9taWNTdHJpbmcmIGlkLCBjb25zdCBNZWRpYUNvbnN0cmFpbnRzKiBjb25zdHJhaW50cykK
IHsKICAgICBBVkNhcHR1cmVEZXZpY2VUeXBlZGVmICpkZXZpY2UgPSBbZ2V0QVZDYXB0dXJlRGV2
aWNlQ2xhc3MoKSBkZXZpY2VXaXRoVW5pcXVlSUQ6aWRdOwpAQCAtMTI5LDcgKzE1OSw5IEBAIENh
cHR1cmVTb3VyY2VPckVycm9yIEFWVmlkZW9DYXB0dXJlU291cmNlOjpjcmVhdGUoY29uc3QgQXRv
bWljU3RyaW5nJiBpZCwgY29uc3QKIH0KIAogQVZWaWRlb0NhcHR1cmVTb3VyY2U6OkFWVmlkZW9D
YXB0dXJlU291cmNlKEFWQ2FwdHVyZURldmljZVR5cGVkZWYqIGRldmljZSwgY29uc3QgQXRvbWlj
U3RyaW5nJiBpZCkKLSAgICA6IEFWTWVkaWFDYXB0dXJlU291cmNlKGRldmljZSwgaWQsIFR5cGU6
OlZpZGVvKQorICAgIDogUmVhbHRpbWVNZWRpYVNvdXJjZShpZCwgVHlwZTo6VmlkZW8sIGRldmlj
ZS5sb2NhbGl6ZWROYW1lKQorICAgICwgbV9vYmpjT2JzZXJ2ZXIoYWRvcHROUyhbW1dlYkNvcmVB
VlZpZGVvQ2FwdHVyZVNvdXJjZU9ic2VydmVyIGFsbG9jXSBpbml0V2l0aENhbGxiYWNrOnRoaXNd
KSkKKyAgICAsIG1fZGV2aWNlKGRldmljZSkKIHsKICAgICBzdHJ1Y3QgVmlkZW9QcmVzZXQgewog
ICAgICAgICBib29sIHN5bWJvbEF2YWlsYWJsZTsKQEAgLTE1NywxMiArMTg5LDYwIEBAIEFWVmlk
ZW9DYXB0dXJlU291cmNlOjpBVlZpZGVvQ2FwdHVyZVNvdXJjZShBVkNhcHR1cmVEZXZpY2VUeXBl
ZGVmKiBkZXZpY2UsIGNvbnN0CiAKICAgICAgICAgcHJlc2V0c01hcC0+YWRkKFN0cmluZyhwcmVz
ZXQubmFtZSksIEludFNpemUocHJlc2V0LndpZHRoLCBwcmVzZXQuaGVpZ2h0KSk7CiAgICAgfQor
CisjaWYgUExBVEZPUk0oSU9TKQorICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8aW50PihJ
bnRlcnJ1cHRpb25SZWFzb246OlZpZGVvTm90QWxsb3dlZEluQmFja2dyb3VuZCkgPT0gc3RhdGlj
X2Nhc3Q8aW50PihBVkNhcHR1cmVTZXNzaW9uSW50ZXJydXB0aW9uUmVhc29uVmlkZW9EZXZpY2VO
b3RBdmFpbGFibGVJbkJhY2tncm91bmQpLCAiSW50ZXJydXB0aW9uUmVhc29uOjpWaWRlb05vdEFs
bG93ZWRJbkJhY2tncm91bmQgaXMgbm90IEFWQ2FwdHVyZVNlc3Npb25JbnRlcnJ1cHRpb25SZWFz
b25WaWRlb0RldmljZU5vdEF2YWlsYWJsZUluQmFja2dyb3VuZCBhcyBleHBlY3RlZCIpOworICAg
IHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8aW50PihJbnRlcnJ1cHRpb25SZWFzb246OlZpZGVv
Tm90QWxsb3dlZEluU2lkZUJ5U2lkZSkgPT0gQVZDYXB0dXJlU2Vzc2lvbkludGVycnVwdGlvblJl
YXNvblZpZGVvRGV2aWNlTm90QXZhaWxhYmxlV2l0aE11bHRpcGxlRm9yZWdyb3VuZEFwcHMsICJJ
bnRlcnJ1cHRpb25SZWFzb246OlZpZGVvTm90QWxsb3dlZEluU2lkZUJ5U2lkZSBpcyBub3QgQVZD
YXB0dXJlU2Vzc2lvbkludGVycnVwdGlvblJlYXNvblZpZGVvRGV2aWNlTm90QXZhaWxhYmxlV2l0
aE11bHRpcGxlRm9yZWdyb3VuZEFwcHMgYXMgZXhwZWN0ZWQiKTsKKyAgICBzdGF0aWNfYXNzZXJ0
KHN0YXRpY19jYXN0PGludD4oSW50ZXJydXB0aW9uUmVhc29uOjpWaWRlb0luVXNlKSA9PSBBVkNh
cHR1cmVTZXNzaW9uSW50ZXJydXB0aW9uUmVhc29uVmlkZW9EZXZpY2VJblVzZUJ5QW5vdGhlckNs
aWVudCwgIkludGVycnVwdGlvblJlYXNvbjo6VmlkZW9JblVzZSBpcyBub3QgQVZDYXB0dXJlU2Vz
c2lvbkludGVycnVwdGlvblJlYXNvblZpZGVvRGV2aWNlSW5Vc2VCeUFub3RoZXJDbGllbnQgYXMg
ZXhwZWN0ZWQiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PGludD4oSW50ZXJydXB0
aW9uUmVhc29uOjpBdWRpb0luVXNlKSA9PSBBVkNhcHR1cmVTZXNzaW9uSW50ZXJydXB0aW9uUmVh
c29uQXVkaW9EZXZpY2VJblVzZUJ5QW5vdGhlckNsaWVudCwgIkludGVycnVwdGlvblJlYXNvbjo6
QXVkaW9JblVzZSBpcyBub3QgQVZDYXB0dXJlU2Vzc2lvbkludGVycnVwdGlvblJlYXNvbkF1ZGlv
RGV2aWNlSW5Vc2VCeUFub3RoZXJDbGllbnQgYXMgZXhwZWN0ZWQiKTsKKyNlbmRpZgorCisgICAg
c2V0UGVyc2lzdGVudElEKFN0cmluZyhkZXZpY2UudW5pcXVlSUQpKTsKIH0KIAogQVZWaWRlb0Nh
cHR1cmVTb3VyY2U6On5BVlZpZGVvQ2FwdHVyZVNvdXJjZSgpCiB7CiAjaWYgUExBVEZPUk0oSU9T
KQogICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWM6OnZpZGVvQ2FwdHVyZVNvdXJjZUZh
Y3RvcnkoKS51bnNldEFjdGl2ZVNvdXJjZSgqdGhpcyk7CisjZW5kaWYKKyAgICBbbV9vYmpjT2Jz
ZXJ2ZXIgZGlzY29ubmVjdF07CisKKyAgICBpZiAoIW1fc2Vzc2lvbikKKyAgICAgICAgcmV0dXJu
OworCisgICAgW21fc2Vzc2lvbiByZW1vdmVPYnNlcnZlcjptX29iamNPYnNlcnZlci5nZXQoKSBm
b3JLZXlQYXRoOkAicmF0ZSJdOworICAgIGlmIChbbV9zZXNzaW9uIGlzUnVubmluZ10pCisgICAg
ICAgIFttX3Nlc3Npb24gc3RvcFJ1bm5pbmddOworCit9CisKK3ZvaWQgQVZWaWRlb0NhcHR1cmVT
b3VyY2U6OnN0YXJ0UHJvZHVjaW5nRGF0YSgpCit7CisgICAgaWYgKCFtX3Nlc3Npb24pIHsKKyAg
ICAgICAgaWYgKCFzZXR1cFNlc3Npb24oKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBpZiAoW21fc2Vzc2lvbiBpc1J1bm5pbmddKQorICAgICAgICByZXR1cm47CisKKyAgICBb
bV9vYmpjT2JzZXJ2ZXIgYWRkTm90aWZpY2F0aW9uT2JzZXJ2ZXJzXTsKKyAgICBbbV9zZXNzaW9u
IHN0YXJ0UnVubmluZ107Cit9CisKK3ZvaWQgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OnN0b3BQcm9k
dWNpbmdEYXRhKCkKK3sKKyAgICBpZiAoIW1fc2Vzc2lvbikKKyAgICAgICAgcmV0dXJuOworCisg
ICAgW21fb2JqY09ic2VydmVyIHJlbW92ZU5vdGlmaWNhdGlvbk9ic2VydmVyc107CisKKyAgICBp
ZiAoW21fc2Vzc2lvbiBpc1J1bm5pbmddKQorICAgICAgICBbbV9zZXNzaW9uIHN0b3BSdW5uaW5n
XTsKKworICAgIG1faW50ZXJydXB0aW9uID0gSW50ZXJydXB0aW9uUmVhc29uOjpOb25lOworI2lm
IFBMQVRGT1JNKElPUykKKyAgICBtX3Nlc3Npb24gPSBudWxscHRyOwogI2VuZGlmCiB9CiAKQEAg
LTE3OCw4ICsyNTgsNjUgQEAgc3RhdGljIHZvaWQgdXBkYXRlQXNwZWN0UmF0aW9NaW5NYXgoZG91
YmxlJiBtaW4sIGRvdWJsZSYgbWF4LCBkb3VibGUgdmFsdWUpCiAgICAgbWF4ID0gc3RkOjptYXg8
ZG91YmxlPihtYXgsIHZhbHVlKTsKIH0KIAotdm9pZCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6aW5p
dGlhbGl6ZUNhcGFiaWxpdGllcyhSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJiBjYXBh
YmlsaXRpZXMpCit2b2lkIEFWVmlkZW9DYXB0dXJlU291cmNlOjpiZWdpbkNvbmZpZ3VyYXRpb24o
KQoreworICAgIGlmIChtX3Nlc3Npb24pCisgICAgICAgIFttX3Nlc3Npb24gYmVnaW5Db25maWd1
cmF0aW9uXTsKK30KKwordm9pZCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6Y29tbWl0Q29uZmlndXJh
dGlvbigpCiB7CisgICAgaWYgKG1fc2Vzc2lvbikKKyAgICAgICAgW21fc2Vzc2lvbiBjb21taXRD
b25maWd1cmF0aW9uXTsKK30KKwordm9pZCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6c2V0dGluZ3NE
aWRDaGFuZ2UoKQoreworICAgIG1fY3VycmVudFNldHRpbmdzID0gc3RkOjpudWxsb3B0OworICAg
IFJlYWx0aW1lTWVkaWFTb3VyY2U6OnNldHRpbmdzRGlkQ2hhbmdlKCk7Cit9CisKK2NvbnN0IFJl
YWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OnNldHRpbmdz
KCkgY29uc3QKK3sKKyAgICBpZiAobV9jdXJyZW50U2V0dGluZ3MpCisgICAgICAgIHJldHVybiAq
bV9jdXJyZW50U2V0dGluZ3M7CisKKyAgICBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3Mgc2V0
dGluZ3M7CisgICAgaWYgKFtkZXZpY2UoKSBwb3NpdGlvbl0gPT0gQVZDYXB0dXJlRGV2aWNlUG9z
aXRpb25Gcm9udCkKKyAgICAgICAgc2V0dGluZ3Muc2V0RmFjaW5nTW9kZShSZWFsdGltZU1lZGlh
U291cmNlU2V0dGluZ3M6OlVzZXIpOworICAgIGVsc2UgaWYgKFtkZXZpY2UoKSBwb3NpdGlvbl0g
PT0gQVZDYXB0dXJlRGV2aWNlUG9zaXRpb25CYWNrKQorICAgICAgICBzZXR0aW5ncy5zZXRGYWNp
bmdNb2RlKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RW52aXJvbm1lbnQpOworICAgIGVs
c2UKKyAgICAgICAgc2V0dGluZ3Muc2V0RmFjaW5nTW9kZShSZWFsdGltZU1lZGlhU291cmNlU2V0
dGluZ3M6OlVua25vd24pOworCisgICAgYXV0byBtYXhGcmFtZUR1cmF0aW9uID0gW2RldmljZSgp
IGFjdGl2ZVZpZGVvTWF4RnJhbWVEdXJhdGlvbl07CisgICAgc2V0dGluZ3Muc2V0RnJhbWVSYXRl
KG1heEZyYW1lRHVyYXRpb24udGltZXNjYWxlIC8gbWF4RnJhbWVEdXJhdGlvbi52YWx1ZSk7Cisg
ICAgc2V0dGluZ3Muc2V0V2lkdGgobV93aWR0aCk7CisgICAgc2V0dGluZ3Muc2V0SGVpZ2h0KG1f
aGVpZ2h0KTsKKyAgICBzZXR0aW5ncy5zZXREZXZpY2VJZChpZCgpKTsKKworICAgIFJlYWx0aW1l
TWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cyBzdXBwb3J0ZWRDb25zdHJhaW50czsKKyAg
ICBzdXBwb3J0ZWRDb25zdHJhaW50cy5zZXRTdXBwb3J0c0RldmljZUlkKHRydWUpOworICAgIHN1
cHBvcnRlZENvbnN0cmFpbnRzLnNldFN1cHBvcnRzRmFjaW5nTW9kZShbZGV2aWNlKCkgcG9zaXRp
b25dICE9IEFWQ2FwdHVyZURldmljZVBvc2l0aW9uVW5zcGVjaWZpZWQpOworICAgIHN1cHBvcnRl
ZENvbnN0cmFpbnRzLnNldFN1cHBvcnRzV2lkdGgodHJ1ZSk7CisgICAgc3VwcG9ydGVkQ29uc3Ry
YWludHMuc2V0U3VwcG9ydHNIZWlnaHQodHJ1ZSk7CisgICAgc3VwcG9ydGVkQ29uc3RyYWludHMu
c2V0U3VwcG9ydHNBc3BlY3RSYXRpbyh0cnVlKTsKKyAgICBzdXBwb3J0ZWRDb25zdHJhaW50cy5z
ZXRTdXBwb3J0c0ZyYW1lUmF0ZSh0cnVlKTsKKworICAgIHNldHRpbmdzLnNldFN1cHBvcnRlZENv
bnN0cmFpbnRzKHN1cHBvcnRlZENvbnN0cmFpbnRzKTsKKworICAgIG1fY3VycmVudFNldHRpbmdz
ID0gV1RGTW92ZShzZXR0aW5ncyk7CisKKyAgICByZXR1cm4gKm1fY3VycmVudFNldHRpbmdzOwor
fQorCitjb25zdCBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJiBBVlZpZGVvQ2FwdHVy
ZVNvdXJjZTo6Y2FwYWJpbGl0aWVzKCkgY29uc3QKK3sKKyAgICBpZiAobV9jYXBhYmlsaXRpZXMp
CisgICAgICAgIHJldHVybiAqbV9jYXBhYmlsaXRpZXM7CisKKyAgICBSZWFsdGltZU1lZGlhU291
cmNlQ2FwYWJpbGl0aWVzIGNhcGFiaWxpdGllcyhzZXR0aW5ncygpLnN1cHBvcnRlZENvbnN0cmFp
bnRzKCkpOworICAgIGNhcGFiaWxpdGllcy5zZXREZXZpY2VJZChpZCgpKTsKICAgICBBVkNhcHR1
cmVEZXZpY2VUeXBlZGVmICp2aWRlb0RldmljZSA9IGRldmljZSgpOwogCiAgICAgaWYgKFt2aWRl
b0RldmljZSBwb3NpdGlvbl0gPT0gQVZDYXB0dXJlRGV2aWNlUG9zaXRpb25Gcm9udCkKQEAgLTIw
NCw0NSArMzQxLDIwIEBAIHZvaWQgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OmluaXRpYWxpemVDYXBh
YmlsaXRpZXMoUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllCiAgICAgICAgIH0KICAgICB9
CiAKLSAgICBmb3IgKGF1dG8mIHByZXNldCA6IHZpZGVvUHJlc2V0cygpKSB7CisgICAgZm9yIChh
dXRvJiBwcmVzZXQgOiBtX3N1cHBvcnRlZFByZXNldHMpIHsKICAgICAgICAgYXV0byB2YWx1ZXMg
PSBwcmVzZXQudmFsdWU7CiAgICAgICAgIHVwZGF0ZVNpemVNaW5NYXgobWluaW11bVdpZHRoLCBt
YXhpbXVtV2lkdGgsIHZhbHVlcy53aWR0aCgpKTsKICAgICAgICAgdXBkYXRlU2l6ZU1pbk1heCht
aW5pbXVtSGVpZ2h0LCBtYXhpbXVtSGVpZ2h0LCB2YWx1ZXMuaGVpZ2h0KCkpOwogICAgICAgICB1
cGRhdGVBc3BlY3RSYXRpb01pbk1heChtaW5pbXVtQXNwZWN0UmF0aW8sIG1heGltdW1Bc3BlY3RS
YXRpbywgc3RhdGljX2Nhc3Q8ZG91YmxlPih2YWx1ZXMud2lkdGgoKSkgLyB2YWx1ZXMuaGVpZ2h0
KCkpOwogICAgIH0KLQogICAgIGNhcGFiaWxpdGllcy5zZXRGcmFtZVJhdGUoQ2FwYWJpbGl0eVZh
bHVlT3JSYW5nZShsb3dlc3RGcmFtZVJhdGVSYW5nZSwgaGlnaGVzdEZyYW1lUmF0ZVJhbmdlKSk7
CiAgICAgY2FwYWJpbGl0aWVzLnNldFdpZHRoKENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2UobWluaW11
bVdpZHRoLCBtYXhpbXVtV2lkdGgpKTsKICAgICBjYXBhYmlsaXRpZXMuc2V0SGVpZ2h0KENhcGFi
aWxpdHlWYWx1ZU9yUmFuZ2UobWluaW11bUhlaWdodCwgbWF4aW11bUhlaWdodCkpOwogICAgIGNh
cGFiaWxpdGllcy5zZXRBc3BlY3RSYXRpbyhDYXBhYmlsaXR5VmFsdWVPclJhbmdlKG1pbmltdW1B
c3BlY3RSYXRpbywgbWF4aW11bUFzcGVjdFJhdGlvKSk7Ci19Ci0KLXZvaWQgQVZWaWRlb0NhcHR1
cmVTb3VyY2U6OmluaXRpYWxpemVTdXBwb3J0ZWRDb25zdHJhaW50cyhSZWFsdGltZU1lZGlhU291
cmNlU3VwcG9ydGVkQ29uc3RyYWludHMmIHN1cHBvcnRlZENvbnN0cmFpbnRzKQotewotICAgIHN1
cHBvcnRlZENvbnN0cmFpbnRzLnNldFN1cHBvcnRzRmFjaW5nTW9kZShbZGV2aWNlKCkgcG9zaXRp
b25dICE9IEFWQ2FwdHVyZURldmljZVBvc2l0aW9uVW5zcGVjaWZpZWQpOwotICAgIHN1cHBvcnRl
ZENvbnN0cmFpbnRzLnNldFN1cHBvcnRzV2lkdGgodHJ1ZSk7Ci0gICAgc3VwcG9ydGVkQ29uc3Ry
YWludHMuc2V0U3VwcG9ydHNIZWlnaHQodHJ1ZSk7Ci0gICAgc3VwcG9ydGVkQ29uc3RyYWludHMu
c2V0U3VwcG9ydHNBc3BlY3RSYXRpbyh0cnVlKTsKLSAgICBzdXBwb3J0ZWRDb25zdHJhaW50cy5z
ZXRTdXBwb3J0c0ZyYW1lUmF0ZSh0cnVlKTsKLX0KLQotdm9pZCBBVlZpZGVvQ2FwdHVyZVNvdXJj
ZTo6dXBkYXRlU2V0dGluZ3MoUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiBzZXR0aW5ncykK
LXsKLSAgICBzZXR0aW5ncy5zZXREZXZpY2VJZChpZCgpKTsKIAotICAgIGlmIChbZGV2aWNlKCkg
cG9zaXRpb25dID09IEFWQ2FwdHVyZURldmljZVBvc2l0aW9uRnJvbnQpCi0gICAgICAgIHNldHRp
bmdzLnNldEZhY2luZ01vZGUoUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpVc2VyKTsKLSAg
ICBlbHNlIGlmIChbZGV2aWNlKCkgcG9zaXRpb25dID09IEFWQ2FwdHVyZURldmljZVBvc2l0aW9u
QmFjaykKLSAgICAgICAgc2V0dGluZ3Muc2V0RmFjaW5nTW9kZShSZWFsdGltZU1lZGlhU291cmNl
U2V0dGluZ3M6OkVudmlyb25tZW50KTsKLSAgICBlbHNlCi0gICAgICAgIHNldHRpbmdzLnNldEZh
Y2luZ01vZGUoUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpVbmtub3duKTsKKyAgICBtX2Nh
cGFiaWxpdGllcyA9IFdURk1vdmUoY2FwYWJpbGl0aWVzKTsKIAotICAgIC8vIEZJWE1FOiBPYnNl
cnZlIGZyYW1lIHJhdGUgY2hhbmdlcy4KLSAgICBhdXRvIG1heEZyYW1lRHVyYXRpb24gPSBbZGV2
aWNlKCkgYWN0aXZlVmlkZW9NYXhGcmFtZUR1cmF0aW9uXTsKLSAgICBzZXR0aW5ncy5zZXRGcmFt
ZVJhdGUobWF4RnJhbWVEdXJhdGlvbi50aW1lc2NhbGUgLyBtYXhGcmFtZUR1cmF0aW9uLnZhbHVl
KTsKLSAgICBzZXR0aW5ncy5zZXRXaWR0aChtX3dpZHRoKTsKLSAgICBzZXR0aW5ncy5zZXRIZWln
aHQobV9oZWlnaHQpOwotICAgIHNldHRpbmdzLnNldEFzcGVjdFJhdGlvKHN0YXRpY19jYXN0PGZs
b2F0PihtX3dpZHRoKSAvIG1faGVpZ2h0KTsKKyAgICByZXR1cm4gKm1fY2FwYWJpbGl0aWVzOwog
fQogCiBib29sIEFWVmlkZW9DYXB0dXJlU291cmNlOjphcHBseVNpemUoY29uc3QgSW50U2l6ZSYg
c2l6ZSkKQEAgLTI4NSw3ICszOTcsMTEgQEAgYm9vbCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6c2V0
UHJlc2V0KE5TU3RyaW5nICpwcmVzZXQpCiAgICAgQHRyeSB7CiAgICAgICAgIHNlc3Npb24oKS5z
ZXNzaW9uUHJlc2V0ID0gcHJlc2V0OwogI2lmIFBMQVRGT1JNKE1BQykKLSAgICAgICAgYXV0byBz
ZXR0aW5nc0RpY3Rpb25hcnkgPSBAeyAoX19icmlkZ2UgTlNTdHJpbmcgKilrQ1ZQaXhlbEJ1ZmZl
clBpeGVsRm9ybWF0VHlwZUtleTogQCh2aWRlb0NhcHR1cmVGb3JtYXQpLCAoX19icmlkZ2UgTlNT
dHJpbmcgKilrQ1ZQaXhlbEJ1ZmZlcldpZHRoS2V5OiBAKHNpemUud2lkdGgoKSksIChfX2JyaWRn
ZSBOU1N0cmluZyAqKWtDVlBpeGVsQnVmZmVySGVpZ2h0S2V5OiBAKHNpemUuaGVpZ2h0KCkpLCB9
OworICAgICAgICBhdXRvIHNldHRpbmdzRGljdGlvbmFyeSA9IEB7CisgICAgICAgICAgICAoX19i
cmlkZ2UgTlNTdHJpbmcgKilrQ1ZQaXhlbEJ1ZmZlclBpeGVsRm9ybWF0VHlwZUtleTogQCh2aWRl
b0NhcHR1cmVGb3JtYXQpLAorICAgICAgICAgICAgKF9fYnJpZGdlIE5TU3RyaW5nICopa0NWUGl4
ZWxCdWZmZXJXaWR0aEtleTogQChzaXplLndpZHRoKCkpLAorICAgICAgICAgICAgKF9fYnJpZGdl
IE5TU3RyaW5nICopa0NWUGl4ZWxCdWZmZXJIZWlnaHRLZXk6IEAoc2l6ZS5oZWlnaHQoKSkKKyAg
ICAgICAgfTsKICAgICAgICAgW21fdmlkZW9PdXRwdXQgc2V0VmlkZW9TZXR0aW5nczpzZXR0aW5n
c0RpY3Rpb25hcnldOwogI2VuZGlmCiAgICAgfSBAY2F0Y2goTlNFeGNlcHRpb24gKmV4Y2VwdGlv
bikgewpAQCAtMzgxLDYgKzQ5NywyNCBAQCBzdGF0aWMgaW5saW5lIGludCBzZW5zb3JPcmllbnRh
dGlvbkZyb21WaWRlb091dHB1dChBVkNhcHR1cmVWaWRlb0RhdGFPdXRwdXRUeXBlKgogICAgIHJl
dHVybiBjb25uZWN0aW9uID8gc2Vuc29yT3JpZW50YXRpb24oW2Nvbm5lY3Rpb24gdmlkZW9Pcmll
bnRhdGlvbl0pIDogMDsKIH0KIAorYm9vbCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6c2V0dXBTZXNz
aW9uKCkKK3sKKyAgICBpZiAobV9zZXNzaW9uKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAg
IG1fc2Vzc2lvbiA9IGFkb3B0TlMoW2FsbG9jQVZDYXB0dXJlU2Vzc2lvbkluc3RhbmNlKCkgaW5p
dF0pOworICAgIFttX3Nlc3Npb24gYWRkT2JzZXJ2ZXI6bV9vYmpjT2JzZXJ2ZXIuZ2V0KCkgZm9y
S2V5UGF0aDpAInJhdGUiIG9wdGlvbnM6TlNLZXlWYWx1ZU9ic2VydmluZ09wdGlvbk5ldyBjb250
ZXh0Oih2b2lkICopbmlsXTsKKworICAgIFttX3Nlc3Npb24gYmVnaW5Db25maWd1cmF0aW9uXTsK
KyAgICBib29sIHN1Y2Nlc3MgPSBzZXR1cENhcHR1cmVTZXNzaW9uKCk7CisgICAgW21fc2Vzc2lv
biBjb21taXRDb25maWd1cmF0aW9uXTsKKworICAgIGlmICghc3VjY2VzcykKKyAgICAgICAgY2Fw
dHVyZUZhaWxlZCgpOworCisgICAgcmV0dXJuIHN1Y2Nlc3M7Cit9CisKIGJvb2wgQVZWaWRlb0Nh
cHR1cmVTb3VyY2U6OnNldHVwQ2FwdHVyZVNlc3Npb24oKQogewogI2lmIFBMQVRGT1JNKElPUykK
QEAgLTQxMiw3ICs1NDYsNyBAQCBib29sIEFWVmlkZW9DYXB0dXJlU291cmNlOjpzZXR1cENhcHR1
cmVTZXNzaW9uKCkKIAogICAgIFttX3ZpZGVvT3V0cHV0IHNldFZpZGVvU2V0dGluZ3M6c2V0dGlu
Z3NEaWN0aW9uYXJ5LmdldCgpXTsKICAgICBbbV92aWRlb091dHB1dCBzZXRBbHdheXNEaXNjYXJk
c0xhdGVWaWRlb0ZyYW1lczpZRVNdOwotICAgIHNldFZpZGVvU2FtcGxlQnVmZmVyRGVsZWdhdGUo
bV92aWRlb091dHB1dC5nZXQoKSk7CisgICAgW21fdmlkZW9PdXRwdXQgc2V0U2FtcGxlQnVmZmVy
RGVsZWdhdGU6bV9vYmpjT2JzZXJ2ZXIuZ2V0KCkgcXVldWU6Z2xvYmFWaWRlb0NhcHR1cmVTZXJp
YWxRdWV1ZSgpXTsKIAogICAgIGlmICghW3Nlc3Npb24oKSBjYW5BZGRPdXRwdXQ6bV92aWRlb091
dHB1dC5nZXQoKV0pIHsKICAgICAgICAgUkVMRUFTRV9MT0coTWVkaWEsICJBVlZpZGVvQ2FwdHVy
ZVNvdXJjZTo6c2V0dXBDYXB0dXJlU2Vzc2lvbiglcCksIHVuYWJsZSB0byBhZGQgdmlkZW8gc2Ft
cGxlIGJ1ZmZlciBvdXRwdXQgZGVsZWdhdGUiLCB0aGlzKTsKQEAgLTU1NSw2ICs2ODksMTU3IEBA
IGJvb2wgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OnN1cHBvcnRzU2l6ZUFuZEZyYW1lUmF0ZShzdGQ6
Om9wdGlvbmFsPGludD4gd2lkdGgsIHN0CiAgICAgcmV0dXJuIGlzRnJhbWVSYXRlU3VwcG9ydGVk
KGZyYW1lUmF0ZS52YWx1ZSgpKTsKIH0KIAordm9pZCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6Y2Fw
dHVyZVNlc3Npb25Jc1J1bm5pbmdEaWRDaGFuZ2UoYm9vbCBzdGF0ZSkKK3sKKyAgICBzY2hlZHVs
ZURlZmVycmVkVGFzayhbdGhpcywgc3RhdGVdIHsKKyAgICAgICAgaWYgKChzdGF0ZSA9PSBtX2lz
UnVubmluZykgJiYgKHN0YXRlID09ICFtdXRlZCgpKSkKKyAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICBtX2lzUnVubmluZyA9IHN0YXRlOworICAgICAgICBub3RpZnlNdXRlZENoYW5nZSgh
bV9pc1J1bm5pbmcpOworICAgIH0pOworfQorCitib29sIEFWVmlkZW9DYXB0dXJlU291cmNlOjpp
bnRlcnJ1cHRlZCgpIGNvbnN0Cit7CisgICAgaWYgKG1faW50ZXJydXB0aW9uICE9IEludGVycnVw
dGlvblJlYXNvbjo6Tm9uZSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICByZXR1cm4gUmVh
bHRpbWVNZWRpYVNvdXJjZTo6aW50ZXJydXB0ZWQoKTsKK30KKworI2lmIFBMQVRGT1JNKElPUykK
K3ZvaWQgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OmNhcHR1cmVTZXNzaW9uUnVudGltZUVycm9yKFJl
dGFpblB0cjxOU0Vycm9yPiBlcnJvcikKK3sKKyAgICBpZiAoIW1faXNSdW5uaW5nIHx8IGVycm9y
LmdldCgpLmNvZGUgIT0gQVZFcnJvck1lZGlhU2VydmljZXNXZXJlUmVzZXQpCisgICAgICAgIHJl
dHVybjsKKworICAgIC8vIFRyeSB0byByZXN0YXJ0IHRoZSBzZXNzaW9uLCBidXQgcmVzZXQgbV9p
c1J1bm5pbmcgaW1tZWRpYXRlbHkgc28gaWYgaXQgZmFpbHMgd2Ugd29uJ3QgdHJ5IGFnYWluLgor
ICAgIFttX3Nlc3Npb24gc3RhcnRSdW5uaW5nXTsKKyAgICBtX2lzUnVubmluZyA9IFttX3Nlc3Np
b24gaXNSdW5uaW5nXTsKK30KKwordm9pZCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6Y2FwdHVyZVNl
c3Npb25CZWdpbkludGVycnVwdGlvbihSZXRhaW5QdHI8TlNOb3RpZmljYXRpb24+IG5vdGlmaWNh
dGlvbikKK3sKKyAgICBtX2ludGVycnVwdGlvbiA9IHN0YXRpY19jYXN0PEFWVmlkZW9DYXB0dXJl
U291cmNlOjpJbnRlcnJ1cHRpb25SZWFzb24+KFtub3RpZmljYXRpb24uZ2V0KCkudXNlckluZm9b
QVZDYXB0dXJlU2Vzc2lvbkludGVycnVwdGlvblJlYXNvbktleV0gaW50ZWdlclZhbHVlXSk7Cit9
CisKK3ZvaWQgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OmNhcHR1cmVTZXNzaW9uRW5kSW50ZXJydXB0
aW9uKFJldGFpblB0cjxOU05vdGlmaWNhdGlvbj4pCit7CisgICAgSW50ZXJydXB0aW9uUmVhc29u
IHJlYXNvbiA9IG1faW50ZXJydXB0aW9uOworCisgICAgbV9pbnRlcnJ1cHRpb24gPSBJbnRlcnJ1
cHRpb25SZWFzb246Ok5vbmU7CisgICAgaWYgKHJlYXNvbiAhPSBJbnRlcnJ1cHRpb25SZWFzb246
OlZpZGVvTm90QWxsb3dlZEluU2lkZUJ5U2lkZSB8fCBtX2lzUnVubmluZyB8fCAhbV9zZXNzaW9u
KQorICAgICAgICByZXR1cm47CisKKyAgICBbbV9zZXNzaW9uIHN0YXJ0UnVubmluZ107CisgICAg
bV9pc1J1bm5pbmcgPSBbbV9zZXNzaW9uIGlzUnVubmluZ107Cit9CisjZW5kaWYKKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCitAaW1wbGVtZW50YXRpb24gV2ViQ29yZUFWVmlkZW9DYXB0dXJl
U291cmNlT2JzZXJ2ZXIKKworLSAoaWQpaW5pdFdpdGhDYWxsYmFjazooQVZWaWRlb0NhcHR1cmVT
b3VyY2UqKWNhbGxiYWNrCit7CisgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKKyAgICBpZiAoIXNl
bGYpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBtX2NhbGxiYWNrID0gY2FsbGJhY2s7CisK
KyAgICByZXR1cm4gc2VsZjsKK30KKworLSAodm9pZClkaXNjb25uZWN0Cit7CisgICAgW05TT2Jq
ZWN0IGNhbmNlbFByZXZpb3VzUGVyZm9ybVJlcXVlc3RzV2l0aFRhcmdldDpzZWxmXTsKKyAgICBb
c2VsZiByZW1vdmVOb3RpZmljYXRpb25PYnNlcnZlcnNdOworICAgIG1fY2FsbGJhY2sgPSBudWxs
cHRyOworfQorCistICh2b2lkKWFkZE5vdGlmaWNhdGlvbk9ic2VydmVycworeworI2lmIFBMQVRG
T1JNKElPUykKKyAgICBBU1NFUlQobV9jYWxsYmFjayk7CisKKyAgICBOU05vdGlmaWNhdGlvbkNl
bnRlciogY2VudGVyID0gW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdOworICAg
IEFWQ2FwdHVyZVNlc3Npb25UeXBlKiBzZXNzaW9uID0gbV9jYWxsYmFjay0+c2Vzc2lvbigpOwor
CisgICAgW2NlbnRlciBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihzZXNzaW9u
UnVudGltZUVycm9yOikgbmFtZTpBVkNhcHR1cmVTZXNzaW9uUnVudGltZUVycm9yTm90aWZpY2F0
aW9uIG9iamVjdDpzZXNzaW9uXTsKKyAgICBbY2VudGVyIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0
b3I6QHNlbGVjdG9yKGJlZ2luU2Vzc2lvbkludGVycnVwdGVkOikgbmFtZTpBVkNhcHR1cmVTZXNz
aW9uV2FzSW50ZXJydXB0ZWROb3RpZmljYXRpb24gb2JqZWN0OnNlc3Npb25dOworICAgIFtjZW50
ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoZW5kU2Vzc2lvbkludGVycnVw
dGVkOikgbmFtZTpBVkNhcHR1cmVTZXNzaW9uSW50ZXJydXB0aW9uRW5kZWROb3RpZmljYXRpb24g
b2JqZWN0OnNlc3Npb25dOworI2VuZGlmCit9CisKKy0gKHZvaWQpcmVtb3ZlTm90aWZpY2F0aW9u
T2JzZXJ2ZXJzCit7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIFtbTlNOb3RpZmljYXRpb25DZW50
ZXIgZGVmYXVsdENlbnRlcl0gcmVtb3ZlT2JzZXJ2ZXI6c2VsZl07CisjZW5kaWYKK30KKworLSAo
dm9pZCljYXB0dXJlT3V0cHV0OihBVkNhcHR1cmVPdXRwdXRUeXBlKiljYXB0dXJlT3V0cHV0IGRp
ZE91dHB1dFNhbXBsZUJ1ZmZlcjooQ01TYW1wbGVCdWZmZXJSZWYpc2FtcGxlQnVmZmVyIGZyb21D
b25uZWN0aW9uOihBVkNhcHR1cmVDb25uZWN0aW9uVHlwZSopY29ubmVjdGlvbgoreworICAgIGlm
ICghbV9jYWxsYmFjaykKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jYWxsYmFjay0+Y2FwdHVy
ZU91dHB1dERpZE91dHB1dFNhbXBsZUJ1ZmZlckZyb21Db25uZWN0aW9uKGNhcHR1cmVPdXRwdXQs
IHNhbXBsZUJ1ZmZlciwgY29ubmVjdGlvbik7Cit9CisKKy0gKHZvaWQpb2JzZXJ2ZVZhbHVlRm9y
S2V5UGF0aDprZXlQYXRoIG9mT2JqZWN0OihpZClvYmplY3QgY2hhbmdlOihOU0RpY3Rpb25hcnkq
KWNoYW5nZSBjb250ZXh0Oih2b2lkKiljb250ZXh0Cit7CisgICAgVU5VU0VEX1BBUkFNKG9iamVj
dCk7CisgICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOworCisgICAgaWYgKCFtX2NhbGxiYWNrKQor
ICAgICAgICByZXR1cm47CisKKyAgICBpZCBuZXdWYWx1ZSA9IFtjaGFuZ2UgdmFsdWVGb3JLZXk6
TlNLZXlWYWx1ZUNoYW5nZU5ld0tleV07CisKKyNpZiAhTE9HX0RJU0FCTEVECisgICAgYm9vbCB3
aWxsQ2hhbmdlID0gW1tjaGFuZ2UgdmFsdWVGb3JLZXk6TlNLZXlWYWx1ZUNoYW5nZU5vdGlmaWNh
dGlvbklzUHJpb3JLZXldIGJvb2xWYWx1ZV07CisKKyAgICBpZiAod2lsbENoYW5nZSkKKyAgICAg
ICAgTE9HKE1lZGlhLCAiV2ViQ29yZUFWVmlkZW9DYXB0dXJlU291cmNlT2JzZXJ2ZXI6Om9ic2Vy
dmVWYWx1ZUZvcktleVBhdGgoJXApIC0gd2lsbCBjaGFuZ2UsIGtleVBhdGggPSAlcyIsIHNlbGYs
IFtrZXlQYXRoIFVURjhTdHJpbmddKTsKKyAgICBlbHNlIHsKKyAgICAgICAgUmV0YWluUHRyPE5T
U3RyaW5nPiB2YWx1ZVN0cmluZyA9IGFkb3B0TlMoW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhG
b3JtYXQ6QCIlQCIsIG5ld1ZhbHVlXSk7CisgICAgICAgIExPRyhNZWRpYSwgIldlYkNvcmVBVlZp
ZGVvQ2FwdHVyZVNvdXJjZU9ic2VydmVyOjpvYnNlcnZlVmFsdWVGb3JLZXlQYXRoKCVwKSAtIGRp
ZCBjaGFuZ2UsIGtleVBhdGggPSAlcywgdmFsdWUgPSAlcyIsIHNlbGYsIFtrZXlQYXRoIFVURjhT
dHJpbmddLCBbdmFsdWVTdHJpbmcuZ2V0KCkgVVRGOFN0cmluZ10pOworICAgIH0KKyNlbmRpZgor
CisgICAgaWYgKFtrZXlQYXRoIGlzRXF1YWxUb1N0cmluZzpAInJ1bm5pbmciXSkKKyAgICAgICAg
bV9jYWxsYmFjay0+Y2FwdHVyZVNlc3Npb25Jc1J1bm5pbmdEaWRDaGFuZ2UoW25ld1ZhbHVlIGJv
b2xWYWx1ZV0pOworfQorCisjaWYgUExBVEZPUk0oSU9TKQorLSAodm9pZClzZXNzaW9uUnVudGlt
ZUVycm9yOihOU05vdGlmaWNhdGlvbiopbm90aWZpY2F0aW9uCit7CisgICAgTlNFcnJvciAqZXJy
b3IgPSBub3RpZmljYXRpb24udXNlckluZm9bQVZDYXB0dXJlU2Vzc2lvbkVycm9yS2V5XTsKKyAg
ICBMT0coTWVkaWEsICJXZWJDb3JlQVZWaWRlb0NhcHR1cmVTb3VyY2VPYnNlcnZlcjo6c2Vzc2lv
blJ1bnRpbWVFcnJvciglcCkgLSBlcnJvciA9ICVzIiwgc2VsZiwgW1tlcnJvciBsb2NhbGl6ZWRE
ZXNjcmlwdGlvbl0gVVRGOFN0cmluZ10pOworCisgICAgaWYgKG1fY2FsbGJhY2spCisgICAgICAg
IG1fY2FsbGJhY2stPmNhcHR1cmVTZXNzaW9uUnVudGltZUVycm9yKGVycm9yKTsKK30KKworLSAo
dm9pZCliZWdpblNlc3Npb25JbnRlcnJ1cHRlZDooTlNOb3RpZmljYXRpb24qKW5vdGlmaWNhdGlv
bgoreworICAgIExPRyhNZWRpYSwgIldlYkNvcmVBVlZpZGVvQ2FwdHVyZVNvdXJjZU9ic2VydmVy
OjpiZWdpblNlc3Npb25JbnRlcnJ1cHRlZCglcCkgLSByZWFzb24gPSAlZCIsIHNlbGYsIFtub3Rp
ZmljYXRpb24udXNlckluZm9bQVZDYXB0dXJlU2Vzc2lvbkludGVycnVwdGlvblJlYXNvbktleV0g
aW50ZWdlclZhbHVlXSk7CisKKyAgICBpZiAobV9jYWxsYmFjaykKKyAgICAgICAgbV9jYWxsYmFj
ay0+Y2FwdHVyZVNlc3Npb25CZWdpbkludGVycnVwdGlvbihub3RpZmljYXRpb24pOworfQorCist
ICh2b2lkKWVuZFNlc3Npb25JbnRlcnJ1cHRlZDooTlNOb3RpZmljYXRpb24qKW5vdGlmaWNhdGlv
bgoreworICAgIExPRyhNZWRpYSwgIldlYkNvcmVBVlZpZGVvQ2FwdHVyZVNvdXJjZU9ic2VydmVy
OjplbmRTZXNzaW9uSW50ZXJydXB0ZWQoJXApIiwgc2VsZik7CisKKyAgICBpZiAobV9jYWxsYmFj
aykKKyAgICAgICAgbV9jYWxsYmFjay0+Y2FwdHVyZVNlc3Npb25FbmRJbnRlcnJ1cHRpb24obm90
aWZpY2F0aW9uKTsKK30KKyNlbmRpZgorCitAZW5kCisKICNlbmRpZiAvLyBFTkFCTEUoTUVESUFf
U1RSRUFNKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>