<?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>4863</bug_id>
          
          <creation_ts>2005-09-06 00:20:13 -0700</creation_ts>
          <short_desc>Merge misc changes from TOT KDE (Qt4, etc).</short_desc>
          <delta_ts>2005-09-08 01:07:26 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>SVG</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P4</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Eric Seidel (no email)">eric</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>18793</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2005-09-06 00:20:13 -0700</bug_when>
    <thetext> </thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>18794</commentid>
    <comment_count>1</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2005-09-06 00:20:19 -0700</bug_when>
    <thetext>Merge misc changes from TOT KDE (Qt4, etc).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>18795</commentid>
    <comment_count>2</comment_count>
      <attachid>3779</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2005-09-06 00:20:54 -0700</bug_when>
    <thetext>Created attachment 3779
Doesn&apos;t quite work yet... but close.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>18800</commentid>
    <comment_count>3</comment_count>
      <attachid>3782</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2005-09-06 02:58:40 -0700</bug_when>
    <thetext>Created attachment 3782
Picks up a bunch of changes from KDE</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>18801</commentid>
    <comment_count>4</comment_count>
      <attachid>3782</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2005-09-06 02:59:04 -0700</bug_when>
    <thetext>Comment on attachment 3782
Picks up a bunch of changes from KDE

All layout tests pass.	5 fewer leaks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>19046</commentid>
    <comment_count>5</comment_count>
      <attachid>3782</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-09-07 21:48:07 -0700</bug_when>
    <thetext>Comment on attachment 3782
Picks up a bunch of changes from KDE

looks OK</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>3779</attachid>
            <date>2005-09-06 00:20:54 -0700</date>
            <delta_ts>2005-09-06 02:58:40 -0700</delta_ts>
            <desc>Doesn&apos;t quite work yet... but close.</desc>
            <filename>thirdattempt.patch</filename>
            <type>text/plain</type>
            <size>165197</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">SW5kZXg6IEZvcndhcmRpbmdIZWFkZXJzL3FtYXRyaXguaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiBG
b3J3YXJkaW5nSGVhZGVycy9xbWF0cml4LmgKZGlmZiAtTiBGb3J3YXJkaW5nSGVhZGVycy9xbWF0
cml4LmgKLS0tIEZvcndhcmRpbmdIZWFkZXJzL3FtYXRyaXguaAkxIEphbiAxOTcwIDAwOjAwOjAw
IC0wMDAwCisrKyBGb3J3YXJkaW5nSGVhZGVycy9xbWF0cml4LmgJNiBTZXAgMjAwNSAwNzoxNjo1
MiAtMDAwMApAQCAtMCwwICsxIEBACisjaW1wb3J0ICJLV1FXTWF0cml4LmgiCkluZGV4OiBXZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9y
b290L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qLHYKcmV0cmlldmlu
ZyByZXZpc2lvbiAxLjIyCmRpZmYgLXAgLXUgLXIxLjIyIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagotLS0gV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCTQgU2VwIDIw
MDUgMDk6MjI6NDMgLTAwMDAJMS4yMgorKysgV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCTYgU2VwIDIwMDUgMDc6MTc6MTQgLTAwMDAKQEAgLTEzODgsNiArMTM4OCwxMiBAQAogCQlB
ODIxMkQwNTA4Nzk0QTIzMDA2NzczNTkgLyogbGlieHNsdC5keWxpYiBpbiBGcmFtZXdvcmtzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg0MDYzMzA3MDczMUE3NzIwMERCMUZE
MSAvKiBsaWJ4c2x0LmR5bGliICovOyB9OwogCQlBODJGQkI2NjA4QzYyNDEzMDBFRkVFMjMgLyog
RXZlbnROYW1lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTM5ODg1QzIwOEI3RTNEMTAwRTcwN0M0IC8qIEV2ZW50TmFtZXMuaCAqLzsgfTsKIAkJQTgy
RkJCNjcwOEM2MjQxRTAwRUZFRTIzIC8qIEV2ZW50TmFtZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM5ODg1QzEwOEI3RTNEMTAwRTcwN0M0IC8q
IEV2ZW50TmFtZXMuY3BwICovOyB9OworCQlBODJGQzI3NTA4QzkyOTJFMDBFRkVFMjMgLyogRE9N
SW1wbGVtZW50YXRpb25MU0ltcGwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE4MkZDMjczMDhDOTI5MkUwMEVGRUUyMyAvKiBET01JbXBsZW1lbnRhdGlv
bkxTSW1wbC5oICovOyB9OworCQlBODJGQzI3NjA4QzkyOTJFMDBFRkVFMjMgLyogRE9NSW1wbGVt
ZW50YXRpb25MU0ltcGwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTgyRkMyNzQwOEM5MjkyRTAwRUZFRTIzIC8qIERPTUltcGxlbWVudGF0aW9uTFNJ
bXBsLmNwcCAqLzsgfTsKKwkJQTgyRkMyRjIwOEM5QUFFNDAwRUZFRTIzIC8qIExpbmtTdHlsZUlt
cGwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4MkZD
MkYwMDhDOUFBRTQwMEVGRUUyMyAvKiBMaW5rU3R5bGVJbXBsLmggKi87IH07CisJCUE4MkZDMkYz
MDhDOUFBRTQwMEVGRUUyMyAvKiBMaW5rU3R5bGVJbXBsLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4MkZDMkYxMDhDOUFBRTQwMEVGRUUyMyAvKiBM
aW5rU3R5bGVJbXBsLmNwcCAqLzsgfTsKKwkJQTgyRkMzM0QwOENCQjA3QzAwRUZFRTIzIC8qIFNW
R0N1cnNvckVsZW1lbnRJbXBsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBODJGQzMzQjA4Q0JCMDdDMDBFRkVFMjMgLyogU1ZHQ3Vyc29yRWxlbWVudElt
cGwuaCAqLzsgfTsKKwkJQTgyRkMzM0UwOENCQjA3QzAwRUZFRTIzIC8qIFNWR0N1cnNvckVsZW1l
bnRJbXBsLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE4MkZDMzNDMDhDQkIwN0MwMEVGRUUyMyAvKiBTVkdDdXJzb3JFbGVtZW50SW1wbC5jcHAgKi87
IH07CiAJCUE4NDFFQzcyMDhDNjYzNjYwMEREQTIxQyAvKiBLQ2FudmFzUGF0aC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NzU4QzQ0MzA4QzVGMjE3
MDA5QkFGMDUgLyogS0NhbnZhc1BhdGguY3BwICovOyB9OwogCQlBODU2RTlBRTA4QjQ1QUJDMDA0
MkUzMDMgLyogWFBhdGhSZXN1bHRXcmFwcGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBODFENTkyMTA4QURERkY5MDAxMzZBQzEgLyogWFBhdGhSZXN1
bHRXcmFwcGVyLmggKi87IH07CiAJCUE4NTZFOUFGMDhCNDVBQkMwMDQyRTMwMyAvKiBYUGF0aFJl
c3VsdFdyYXBwZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTgxRDU5MjAwOEFEREZGOTAwMTM2QUMxIC8qIFhQYXRoUmVzdWx0V3JhcHBlci5jcHAg
Ki87IH07CkBAIC0yNTM4LDYgKzI1NDQsMTIgQEAKIAkJQTgxRDVBODEwOEFERjcwNDAwMTM2QUMx
IC8qIHV0aWwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gdXRpbC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4MUQ1QTgyMDhBREY3MDQwMDEzNkFD
MSAvKiB1dGlsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IHV0aWwuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTgyMTJEMDcwODc5NEEyMzAwNjc3MzU5IC8qIFdl
YkNvcmUrU1ZHLmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNp
dEZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9
ICJXZWJDb3JlK1NWRy5mcmFtZXdvcmsiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElS
OyB9OworCQlBODJGQzI3MzA4QzkyOTJFMDBFRkVFMjMgLyogRE9NSW1wbGVtZW50YXRpb25MU0lt
cGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NSW1wbGVtZW50YXRpb25M
U0ltcGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTgyRkMyNzQwOEM5MjkyRTAw
RUZFRTIzIC8qIERPTUltcGxlbWVudGF0aW9uTFNJbXBsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IERPTUltcGxlbWVudGF0aW9uTFNJbXBsLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTgyRkMyRjAwOEM5QUFFNDAwRUZFRTIzIC8qIExpbmtTdHls
ZUltcGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGlua1N0eWxlSW1wbC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBODJGQzJGMTA4QzlBQUU0MDBFRkVFMjMg
LyogTGlua1N0eWxlSW1wbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBMaW5rU3R5bGVJbXBsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTgyRkMz
M0IwOENCQjA3QzAwRUZFRTIzIC8qIFNWR0N1cnNvckVsZW1lbnRJbXBsLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0N1cnNvckVsZW1lbnRJbXBsLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUE4MkZDMzNDMDhDQkIwN0MwMEVGRUUyMyAvKiBTVkdDdXJzb3JF
bGVtZW50SW1wbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdD
dXJzb3JFbGVtZW50SW1wbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4Mzg1
NDMxMDhCMEEwMEIwMDBBRjU4MCAvKiB2YXJpYWJsZXJlZmVyZW5jZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSB2YXJpYWJsZXJlZmVyZW5jZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlBODM4NTQzMjA4QjBBMDBCMDAwQUY1ODAgLyogdmFyaWFibGVyZWZlcmVu
Y2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gdmFyaWFibGVyZWZl
cmVuY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBODU2RTlGODA4QjQ2MDhG
MDA0MkUzMDMgLyogeHBhdGgueSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLnlhY2M7IHBhdGggPSB4
cGF0aC55OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDM0Niw2ICs0MzU4LDggQEAK
IAkJCQlBOEMwRjgzMDA4OTcwMUYzMDBCQTUxMTQgLyogU1ZHQ29sb3JJbXBsLmggKi8sCiAJCQkJ
QThDMEY4MzEwODk3MDFGMzAwQkE1MTE0IC8qIFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25F
bGVtZW50SW1wbC5jcHAgKi8sCiAJCQkJQThDMEY4MzIwODk3MDFGMzAwQkE1MTE0IC8qIFNWR0Nv
bXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50SW1wbC5oICovLAorCQkJCUE4MkZDMzNCMDhD
QkIwN0MwMEVGRUUyMyAvKiBTVkdDdXJzb3JFbGVtZW50SW1wbC5oICovLAorCQkJCUE4MkZDMzND
MDhDQkIwN0MwMEVGRUUyMyAvKiBTVkdDdXJzb3JFbGVtZW50SW1wbC5jcHAgKi8sCiAJCQkJQThD
MEY4MzMwODk3MDFGMzAwQkE1MTE0IC8qIFNWR0RlZnNFbGVtZW50SW1wbC5jcHAgKi8sCiAJCQkJ
QThDMEY4MzQwODk3MDFGMzAwQkE1MTE0IC8qIFNWR0RlZnNFbGVtZW50SW1wbC5oICovLAogCQkJ
CUE4QzBGODM1MDg5NzAxRjMwMEJBNTExNCAvKiBTVkdEZXNjRWxlbWVudEltcGwuY3BwICovLApA
QCAtNDY2NSw2ICs0Njc5LDggQEAKIAkJCQlBOEMwRjk3MjA4OTcwMUY1MDBCQTUxMTQgLyogS0RP
TUNTU1BhcnNlci5jcHAgKi8sCiAJCQkJQThDMEY5NzMwODk3MDFGNTAwQkE1MTE0IC8qIEtET01D
U1NQYXJzZXIuaCAqLywKIAkJCQlBOEMwRjk3NDA4OTcwMUY1MDBCQTUxMTQgLyoga2RvbXBhcnNl
cmNzcy55ICovLAorCQkJCUE4MkZDMkYwMDhDOUFBRTQwMEVGRUUyMyAvKiBMaW5rU3R5bGVJbXBs
LmggKi8sCisJCQkJQTgyRkMyRjEwOEM5QUFFNDAwRUZFRTIzIC8qIExpbmtTdHlsZUltcGwuY3Bw
ICovLAogCQkJCUE4QzBGOTc1MDg5NzAxRjUwMEJBNTExNCAvKiBNZWRpYUxpc3RJbXBsLmNwcCAq
LywKIAkJCQlBOEMwRjk3NjA4OTcwMUY1MDBCQTUxMTQgLyogTWVkaWFMaXN0SW1wbC5oICovLAog
CQkJCUE4QzBGOTc3MDg5NzAxRjUwMEJBNTExNCAvKiBSZWN0SW1wbC5jcHAgKi8sCkBAIC00ODA4
LDYgKzQ4MjQsOCBAQAogCQlBOEMwRkE0MTA4OTcwMUY2MDBCQTUxMTQgLyogbHMgKi8gPSB7CiAJ
CQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUE4MkZDMjczMDhDOTI5MkUw
MEVGRUUyMyAvKiBET01JbXBsZW1lbnRhdGlvbkxTSW1wbC5oICovLAorCQkJCUE4MkZDMjc0MDhD
OTI5MkUwMEVGRUUyMyAvKiBET01JbXBsZW1lbnRhdGlvbkxTSW1wbC5jcHAgKi8sCiAJCQkJQThD
MEZBNTUwODk3MDFGNjAwQkE1MTE0IC8qIGtkb21scy5oICovLAogCQkJCUE4QzBGQTQ1MDg5NzAx
RjYwMEJBNTExNCAvKiBMU0V4Y2VwdGlvbkltcGwuY3BwICovLAogCQkJCUE4QzBGQTQ2MDg5NzAx
RjYwMEJBNTExNCAvKiBMU0V4Y2VwdGlvbkltcGwuaCAqLywKQEAgLTY4OTYsNiArNjkxNCw5IEBA
CiAJCQkJQTg1NkU5RDcwOEI0NUIxRTAwNDJFMzAzIC8qIGZ1bmN0aW9ucy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTg1NkU5RDkwOEI0NUIxRTAwNDJFMzAzIC8qIGV4cHJlc3Npb24uaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE4MkZCQjY2MDhDNjI0MTMwMEVGRUUyMyAvKiBFdmVudE5hbWVzLmggaW4g
SGVhZGVycyAqLywKKwkJCQlBODJGQzI3NTA4QzkyOTJFMDBFRkVFMjMgLyogRE9NSW1wbGVtZW50
YXRpb25MU0ltcGwuaCBpbiBIZWFkZXJzICovLAorCQkJCUE4MkZDMkYyMDhDOUFBRTQwMEVGRUUy
MyAvKiBMaW5rU3R5bGVJbXBsLmggaW4gSGVhZGVycyAqLywKKwkJCQlBODJGQzMzRDA4Q0JCMDdD
MDBFRkVFMjMgLyogU1ZHQ3Vyc29yRWxlbWVudEltcGwuaCBpbiBIZWFkZXJzICovLAogCQkJKTsK
IAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtODkw
Myw2ICs4OTI0LDkgQEAKIAkJCQlBODU2RTlGOTA4QjQ2MDhGMDA0MkUzMDMgLyogeHBhdGgueSBp
biBTb3VyY2VzICovLAogCQkJCUE4MkZCQjY3MDhDNjI0MUUwMEVGRUUyMyAvKiBFdmVudE5hbWVz
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4NDFFQzcyMDhDNjYzNjYwMEREQTIxQyAvKiBLQ2Fu
dmFzUGF0aC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBODJGQzI3NjA4QzkyOTJFMDBFRkVFMjMg
LyogRE9NSW1wbGVtZW50YXRpb25MU0ltcGwuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTgyRkMy
RjMwOEM5QUFFNDAwRUZFRTIzIC8qIExpbmtTdHlsZUltcGwuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJQTgyRkMzM0UwOENCQjA3QzAwRUZFRTIzIC8qIFNWR0N1cnNvckVsZW1lbnRJbXBsLmNwcCBp
biBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Np
bmcgPSAwOwogCQl9OwpJbmRleDoga2NhbnZhcy9LQ2FudmFzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBm
aWxlOiAvY3ZzL3Jvb3QvU1ZHU3VwcG9ydC9rY2FudmFzL0tDYW52YXMuY3BwLHYKcmV0cmlldmlu
ZyByZXZpc2lvbiAxLjYKZGlmZiAtcCAtdSAtcjEuNiBrY2FudmFzL0tDYW52YXMuY3BwCi0tLSBr
Y2FudmFzL0tDYW52YXMuY3BwCTIgU2VwIDIwMDUgMTA6MDI6NTUgLTAwMDAJMS42CisrKyBrY2Fu
dmFzL0tDYW52YXMuY3BwCTYgU2VwIDIwMDUgMDc6MTc6MTQgLTAwMDAKQEAgLTYyLDkgKzYyLDEy
IEBAIEtDYW52YXM6OktDYW52YXMoS1JlbmRlcmluZ0RldmljZSAqZGV2aWMKIAogS0NhbnZhczo6
fktDYW52YXMoKQogewotICAgIGRlbGV0ZSBkLT5yb290Q29udGFpbmVyOwotICAgIGQtPnJvb3RD
b250YWluZXIgPSBOVUxMOwogICAgIHJlc2V0KCk7CisgICAgUTNWYWx1ZUxpc3RDb25zdEl0ZXJh
dG9yPGNvbnN0IEtDYW52YXNWaWV3ICo+IGl0ID0gZC0+dmlld0xpc3QuY29uc3RCZWdpbigpOwor
ICAgIFEzVmFsdWVMaXN0Q29uc3RJdGVyYXRvcjxjb25zdCBLQ2FudmFzVmlldyAqPiBlbmQgPSBk
LT52aWV3TGlzdC5jb25zdEVuZCgpOworCisgICAgZm9yKDsgaXQgIT0gZW5kOyArK2l0KQorICAg
ICAgICBjb25zdF9jYXN0PEtDYW52YXNWaWV3ICo+KCppdCktPnNldENhbnZhcygwKTsKICAgICBk
ZWxldGUgZDsKIH0KIApAQCAtMTE2LDYgKzExOSwxMiBAQCB2b2lkIEtDYW52YXM6OnNldENhbnZh
c1NpemUoY29uc3QgUVNpemUgCiAKIHZvaWQgS0NhbnZhczo6cmVzZXQoKQogeworICAgIGlmKGQt
PnJvb3RDb250YWluZXIpCisgICAgeworICAgICAgICBkZWxldGUgZC0+cm9vdENvbnRhaW5lcjsK
KyAgICAgICAgZC0+cm9vdENvbnRhaW5lciA9IDA7CisgICAgfQorCiAgICAgcmVnaXN0cnkoKS0+
Y2xlYW51cCgpOwogfQogCkluZGV4OiBrY2FudmFzL0tDYW52YXNDb250YWluZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tjYW52YXMvS0NhbnZhc0NvbnRh
aW5lci5jcHAsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNgpkaWZmIC1wIC11IC1yMS42IGtjYW52
YXMvS0NhbnZhc0NvbnRhaW5lci5jcHAKLS0tIGtjYW52YXMvS0NhbnZhc0NvbnRhaW5lci5jcHAJ
MSBTZXAgMjAwNSAwNzozMjo0NSAtMDAwMAkxLjYKKysrIGtjYW52YXMvS0NhbnZhc0NvbnRhaW5l
ci5jcHAJNiBTZXAgMjAwNSAwNzoxNzoxNCAtMDAwMApAQCAtMjcwLDIxICsyNzAsMTEgQEAgYm9v
bCBLQ2FudmFzQ29udGFpbmVyOjpsb3dlckl0ZW0oS0NhbnZhcwogICAgIHJldHVybiB0cnVlOwog
fQogCi1LQ2FudmFzSXRlbSAqS0NhbnZhc0NvbnRhaW5lcjo6Zmlyc3QoKSBjb25zdAotewotICAg
IHJldHVybiBkLT5maXJzdDsKLX0KLQotS0NhbnZhc0l0ZW0gKktDYW52YXNDb250YWluZXI6Omxh
c3QoKSBjb25zdAotewotICAgIHJldHVybiBkLT5sYXN0OwotfQotCiB2b2lkIEtDYW52YXNDb250
YWluZXI6OmNvbGxpc2lvbnMoY29uc3QgUVBvaW50ICZwLCBLQ2FudmFzSXRlbUxpc3QgJmhpdHMp
IGNvbnN0CiB7CiAgICAgaWYocC54KCkgPCAwIHx8IHAueSgpIDwgMCkKICAgICAgICAgcmV0dXJu
OwotICAgIAorCiAgICAgS0NhbnZhc0l0ZW0gKmN1cnJlbnQgPSBkLT5sYXN0OwogICAgIGZvcig7
IGN1cnJlbnQgIT0gMDsgY3VycmVudCA9IGN1cnJlbnQtPnByZXYoKSkKICAgICB7CkBAIC0zMDMs
NCArMjkzLDE0IEBAIHZvaWQgS0NhbnZhc0NvbnRhaW5lcjo6Y29sbGlzaW9ucyhjb25zdCAKICAg
ICB9CiB9CiAKK0tDYW52YXNJdGVtICpLQ2FudmFzQ29udGFpbmVyOjpmaXJzdCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIGQtPmZpcnN0OworfQorCitLQ2FudmFzSXRlbSAqS0NhbnZhc0NvbnRhaW5l
cjo6bGFzdCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGQtPmxhc3Q7Cit9CisKIC8vIHZpbTp0cz00
Om5vZXQKSW5kZXg6IGtjYW52YXMvS0NhbnZhc0ZpbHRlcnMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZp
bGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tjYW52YXMvS0NhbnZhc0ZpbHRlcnMuY3BwLHYKcmV0
cmlldmluZyByZXZpc2lvbiAxLjQKZGlmZiAtcCAtdSAtcjEuNCBrY2FudmFzL0tDYW52YXNGaWx0
ZXJzLmNwcAotLS0ga2NhbnZhcy9LQ2FudmFzRmlsdGVycy5jcHAJMSBTZXAgMjAwNSAwNzozMjo0
NSAtMDAwMAkxLjQKKysrIGtjYW52YXMvS0NhbnZhc0ZpbHRlcnMuY3BwCTYgU2VwIDIwMDUgMDc6
MTc6MTUgLTAwMDAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJLQ2FudmFzVHJlZURlYnVn
LmgiCiAKIC8vIEZpbHRlcnMKKwogdm9pZCBLQ2FudmFzRmlsdGVyOjphZGRGaWx0ZXJFZmZlY3Qo
S0NhbnZhc0ZpbHRlckVmZmVjdCAqZWZmZWN0KQogewogICAgIG1fZWZmZWN0cy5hcHBlbmQoZWZm
ZWN0KTsKSW5kZXg6IGtjYW52YXMvS0NhbnZhc0ZpbHRlcnMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxl
OiAvY3ZzL3Jvb3QvU1ZHU3VwcG9ydC9rY2FudmFzL0tDYW52YXNGaWx0ZXJzLmgsdgpyZXRyaWV2
aW5nIHJldmlzaW9uIDEuNQpkaWZmIC1wIC11IC1yMS41IGtjYW52YXMvS0NhbnZhc0ZpbHRlcnMu
aAotLS0ga2NhbnZhcy9LQ2FudmFzRmlsdGVycy5oCTIgU2VwIDIwMDUgMTA6MDI6NTUgLTAwMDAJ
MS41CisrKyBrY2FudmFzL0tDYW52YXNGaWx0ZXJzLmgJNiBTZXAgMjAwNSAwNzoxNzoxNSAtMDAw
MApAQCAtMjA3LDcgKzIwNyw3IEBAIGNsYXNzIEtDYW52YXNGRUNvbG9yTWF0cml4IDogcHVibGlj
IEtDYW4KIHB1YmxpYzoKICAgICBLQ0NvbG9yTWF0cml4VHlwZSB0eXBlKCkgY29uc3QgeyByZXR1
cm4gbV90eXBlOyB9CiAgICAgdm9pZCBzZXRUeXBlKEtDQ29sb3JNYXRyaXhUeXBlIHR5cGUpIHsg
bV90eXBlID0gdHlwZTsgfQotICAgIAorCiAgICAgUTNWYWx1ZUxpc3Q8ZmxvYXQ+IHZhbHVlcygp
IGNvbnN0IHsgcmV0dXJuIG1fdmFsdWVzOyB9CiAgICAgdm9pZCBzZXRWYWx1ZXMoY29uc3QgUTNW
YWx1ZUxpc3Q8ZmxvYXQ+ICZ2YWx1ZXMpIHsgbV92YWx1ZXMgPSB2YWx1ZXM7IH07CiAKSW5kZXg6
IGtjYW52YXMvS0NhbnZhc01hdHJpeC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290
L1NWR1N1cHBvcnQva2NhbnZhcy9LQ2FudmFzTWF0cml4LmNwcCx2CnJldHJpZXZpbmcgcmV2aXNp
b24gMS4zCmRpZmYgLXAgLXUgLXIxLjMga2NhbnZhcy9LQ2FudmFzTWF0cml4LmNwcAotLS0ga2Nh
bnZhcy9LQ2FudmFzTWF0cml4LmNwcAkxIFNlcCAyMDA1IDA3OjMyOjQ2IC0wMDAwCTEuMworKysg
a2NhbnZhcy9LQ2FudmFzTWF0cml4LmNwcAk2IFNlcCAyMDA1IDA3OjE3OjE1IC0wMDAwCkBAIC0z
NCw3ICszNCw3IEBAIEtDYW52YXNNYXRyaXg6OktDYW52YXNNYXRyaXgoKQogICAgIG1fbW9kZSA9
IE9QU19QUkVNVUw7CiB9CiAKLUtDYW52YXNNYXRyaXg6OktDYW52YXNNYXRyaXgoY29uc3QgUVdN
YXRyaXggJnFtYXRyaXgpCitLQ2FudmFzTWF0cml4OjpLQ2FudmFzTWF0cml4KGNvbnN0IFFNYXRy
aXggJnFtYXRyaXgpCiB7CiAgICAgbV9tb2RlID0gT1BTX1BSRU1VTDsKICAgICAoKnRoaXMpID0g
cW1hdHJpeDsKQEAgLTU2LDcgKzU2LDcgQEAgS0NhbnZhc01hdHJpeDo6fktDYW52YXNNYXRyaXgo
KQogewogfQogCi1LQ2FudmFzTWF0cml4ICZLQ2FudmFzTWF0cml4OjpvcGVyYXRvcj0oY29uc3Qg
UVdNYXRyaXggJm90aGVyKQorS0NhbnZhc01hdHJpeCAmS0NhbnZhc01hdHJpeDo6b3BlcmF0b3I9
KGNvbnN0IFFNYXRyaXggJm90aGVyKQogewogICAgIG1fbWF0cml4ID0gb3RoZXI7CiAgICAgcmV0
dXJuICp0aGlzOwpAQCAtNjgsMTIgKzY4LDEyIEBAIEtDYW52YXNNYXRyaXggJktDYW52YXNNYXRy
aXg6Om9wZXJhdG9yPSgKICAgICByZXR1cm4gKnRoaXM7CiB9CiAKLWJvb2wgS0NhbnZhc01hdHJp
eDo6b3BlcmF0b3I9PShjb25zdCBRV01hdHJpeCAmb3RoZXIpIGNvbnN0Citib29sIEtDYW52YXNN
YXRyaXg6Om9wZXJhdG9yPT0oY29uc3QgUU1hdHJpeCAmb3RoZXIpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIChtX21hdHJpeCA9PSBvdGhlcik7CiB9CiAKLWJvb2wgS0NhbnZhc01hdHJpeDo6b3BlcmF0
b3IhPShjb25zdCBRV01hdHJpeCAmb3RoZXIpIGNvbnN0Citib29sIEtDYW52YXNNYXRyaXg6Om9w
ZXJhdG9yIT0oY29uc3QgUU1hdHJpeCAmb3RoZXIpIGNvbnN0CiB7CiAgICAgcmV0dXJuICFvcGVy
YXRvcj09KG90aGVyKTsKIH0KQEAgLTE1OSw3ICsxNTksNyBAQCBLQ2FudmFzTWF0cml4ICZLQ2Fu
dmFzTWF0cml4Ojp0cmFuc2xhdGUoCiAgICAgICAgIG1fbWF0cml4LnRyYW5zbGF0ZSh4LCB5KTsK
ICAgICBlbHNlCiAgICAgewotICAgICAgICBRV01hdHJpeCB0ZW1wOworICAgICAgICBRTWF0cml4
IHRlbXA7CiAgICAgICAgIHRlbXAudHJhbnNsYXRlKHgsIHkpOwogICAgICAgICBtX21hdHJpeCAq
PSB0ZW1wOwogICAgIH0KQEAgLTE2OSw3ICsxNjksNyBAQCBLQ2FudmFzTWF0cml4ICZLQ2FudmFz
TWF0cml4Ojp0cmFuc2xhdGUoCiAKIEtDYW52YXNNYXRyaXggJktDYW52YXNNYXRyaXg6Om11bHRp
cGx5KGNvbnN0IEtDYW52YXNNYXRyaXggJm90aGVyKQogewotICAgIFFXTWF0cml4IHRlbXAob3Ro
ZXIuYSgpLCBvdGhlci5iKCksIG90aGVyLmMoKSwgb3RoZXIuZCgpLCBvdGhlci5lKCksIG90aGVy
LmYoKSk7CisgICAgUU1hdHJpeCB0ZW1wKG90aGVyLmEoKSwgb3RoZXIuYigpLCBvdGhlci5jKCks
IG90aGVyLmQoKSwgb3RoZXIuZSgpLCBvdGhlci5mKCkpOwogCiAgICAgaWYobV9tb2RlID09IE9Q
U19QUkVNVUwpCiAgICAgewpAQCAtMTg4LDcgKzE4OCw3IEBAIEtDYW52YXNNYXRyaXggJktDYW52
YXNNYXRyaXg6OnNjYWxlKGRvdWIKICAgICAgICAgbV9tYXRyaXguc2NhbGUoc2NhbGVGYWN0b3JY
LCBzY2FsZUZhY3RvclkpOwogICAgIGVsc2UKICAgICB7Ci0gICAgICAgIFFXTWF0cml4IHRlbXA7
CisgICAgICAgIFFNYXRyaXggdGVtcDsKICAgICAgICAgdGVtcC5zY2FsZShzY2FsZUZhY3Rvclgs
IHNjYWxlRmFjdG9yWSk7CiAgICAgICAgIG1fbWF0cml4ICo9IHRlbXA7CiAgICAgfQpAQCAtMjAy
LDcgKzIwMiw3IEBAIEtDYW52YXNNYXRyaXggJktDYW52YXNNYXRyaXg6OnJvdGF0ZShkb3UKICAg
ICAgICAgbV9tYXRyaXgucm90YXRlKGFuZ2xlKTsKICAgICBlbHNlCiAgICAgewotICAgICAgICBR
V01hdHJpeCB0ZW1wOworICAgICAgICBRTWF0cml4IHRlbXA7CiAgICAgICAgIHRlbXAucm90YXRl
KGFuZ2xlKTsKICAgICAgICAgbV9tYXRyaXggKj0gdGVtcDsKICAgICB9CkBAIC0yMTYsNyArMjE2
LDcgQEAgS0NhbnZhc01hdHJpeCAmS0NhbnZhc01hdHJpeDo6cm90YXRlRnJvbQogICAgICAgICBt
X21hdHJpeC5yb3RhdGUoYXRhbjIoeSwgeCkgLyBkZWcycmFkKTsKICAgICBlbHNlCiAgICAgewot
ICAgICAgICBRV01hdHJpeCB0ZW1wOworICAgICAgICBRTWF0cml4IHRlbXA7CiAgICAgICAgIHRl
bXAucm90YXRlKGF0YW4yKHksIHgpIC8gZGVnMnJhZCk7CiAgICAgICAgIG1fbWF0cml4ICo9IHRl
bXA7CiAgICAgfQpAQCAtMjQwLDcgKzI0MCw3IEBAIEtDYW52YXNNYXRyaXggJktDYW52YXNNYXRy
aXg6OnNrZXdYKGRvdWIKICAgICAgICAgbV9tYXRyaXguc2hlYXIodGFuKGFuZ2xlICogZGVnMnJh
ZCksIDAuMGYpOwogICAgIGVsc2UKICAgICB7Ci0gICAgICAgIFFXTWF0cml4IHRlbXA7CisgICAg
ICAgIFFNYXRyaXggdGVtcDsKICAgICAgICAgdGVtcC5zaGVhcih0YW4oYW5nbGUgKiBkZWcycmFk
KSwgMC4wZik7CiAgICAgICAgIG1fbWF0cml4ICo9IHRlbXA7CiAgICAgfQpAQCAtMjU0LDcgKzI1
NCw3IEBAIEtDYW52YXNNYXRyaXggJktDYW52YXNNYXRyaXg6OnNrZXdZKGRvdWIKICAgICAgICAg
bV9tYXRyaXguc2hlYXIoMC4wZiwgdGFuKGFuZ2xlICogZGVnMnJhZCkpOwogICAgIGVsc2UKICAg
ICB7Ci0gICAgICAgIFFXTWF0cml4IHRlbXA7CisgICAgICAgIFFNYXRyaXggdGVtcDsKICAgICAg
ICAgdGVtcC5zaGVhcigwLjBmLCB0YW4oYW5nbGUgKiBkZWcycmFkKSk7CiAgICAgICAgIG1fbWF0
cml4ICo9IHRlbXA7CiAgICAgfQpAQCAtMzA0LDcgKzMwNCw3IEBAIEtDUGF0aERhdGFMaXN0IEtD
YW52YXNNYXRyaXg6Om1hcChjb25zdCAKICAgICByZXR1cm4gbWFwcGVkOwogfQogCi1RV01hdHJp
eCBLQ2FudmFzTWF0cml4OjpxbWF0cml4KCkgY29uc3QKK1FNYXRyaXggS0NhbnZhc01hdHJpeDo6
cW1hdHJpeCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fbWF0cml4OwogfQpJbmRleDoga2NhbnZh
cy9LQ2FudmFzTWF0cml4LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1NWR1N1cHBv
cnQva2NhbnZhcy9LQ2FudmFzTWF0cml4LmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMwpkaWZm
IC1wIC11IC1yMS4zIGtjYW52YXMvS0NhbnZhc01hdHJpeC5oCi0tLSBrY2FudmFzL0tDYW52YXNN
YXRyaXguaAkxIFNlcCAyMDA1IDA3OjMyOjQ2IC0wMDAwCTEuMworKysga2NhbnZhcy9LQ2FudmFz
TWF0cml4LmgJNiBTZXAgMjAwNSAwNzoxNzoxNSAtMDAwMApAQCAtMjMsNyArMjMsNyBAQAogI2lm
bmRlZiBLQ2FudmFzTWF0cml4X0gKICNkZWZpbmUgS0NhbnZhc01hdHJpeF9ICiAKLSNpbmNsdWRl
IDxxd21hdHJpeC5oPgorI2luY2x1ZGUgPHFtYXRyaXguaD4KIAogdHlwZWRlZiBlbnVtCiB7CkBA
IC0zNiwxNyArMzYsMTcgQEAgY2xhc3MgS0NhbnZhc01hdHJpeAogewogcHVibGljOgogICAgIEtD
YW52YXNNYXRyaXgoKTsKLSAgICBLQ2FudmFzTWF0cml4KGNvbnN0IFFXTWF0cml4ICZxbWF0cml4
KTsKKyAgICBLQ2FudmFzTWF0cml4KGNvbnN0IFFNYXRyaXggJnFtYXRyaXgpOwogICAgIEtDYW52
YXNNYXRyaXgoY29uc3QgS0NhbnZhc01hdHJpeCAmbWF0cml4KTsKICAgICBLQ2FudmFzTWF0cml4
KGRvdWJsZSBhLCBkb3VibGUgYiwgZG91YmxlIGMsIGRvdWJsZSBkLCBkb3VibGUgZSwgZG91Ymxl
IGYpOwogICAgIH5LQ2FudmFzTWF0cml4KCk7CiAKICAgICAvLyBPcGVyYXRvcnMKLSAgICBLQ2Fu
dmFzTWF0cml4ICZvcGVyYXRvcj0oY29uc3QgUVdNYXRyaXggJm90aGVyKTsKKyAgICBLQ2FudmFz
TWF0cml4ICZvcGVyYXRvcj0oY29uc3QgUU1hdHJpeCAmb3RoZXIpOwogICAgIEtDYW52YXNNYXRy
aXggJm9wZXJhdG9yPShjb25zdCBLQ2FudmFzTWF0cml4ICZvdGhlcik7CiAKLSAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgUVdNYXRyaXggJm90aGVyKSBjb25zdDsKLSAgICBib29sIG9wZXJhdG9y
IT0oY29uc3QgUVdNYXRyaXggJm90aGVyKSBjb25zdDsKKyAgICBib29sIG9wZXJhdG9yPT0oY29u
c3QgUU1hdHJpeCAmb3RoZXIpIGNvbnN0OworICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBRTWF0
cml4ICZvdGhlcikgY29uc3Q7CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgS0NhbnZhc01h
dHJpeCAmb3RoZXIpIGNvbnN0OwogICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBLQ2FudmFzTWF0
cml4ICZvdGhlcikgY29uc3Q7CkBAIC05NiwxMCArOTYsMTAgQEAgcHVibGljOgogICAgIC8vIChP
bmx5IHdvcmtzIGZvciBsaW5ldG8vbW92ZXRvIG9wZXJhdGlvbnMhKQogICAgIEtDUGF0aERhdGFM
aXN0IG1hcChjb25zdCBLQ1BhdGhEYXRhTGlzdCAmcGF0aERhdGEpIGNvbnN0OwogCi0gICAgUVdN
YXRyaXggcW1hdHJpeCgpIGNvbnN0OworICAgIFFNYXRyaXggcW1hdHJpeCgpIGNvbnN0OwogCiBw
cml2YXRlOgotICAgIFFXTWF0cml4IG1fbWF0cml4OworICAgIFFNYXRyaXggbV9tYXRyaXg7CiAg
ICAgS0NNYXRyaXhPcGVyYXRpb25Nb2RlIG1fbW9kZTsKIH07CiAKSW5kZXg6IGtjYW52YXMvS0Nh
bnZhc1Jlc291cmNlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1NWR1N1cHBv
cnQva2NhbnZhcy9LQ2FudmFzUmVzb3VyY2VzLmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS40
CmRpZmYgLXAgLXUgLXIxLjQga2NhbnZhcy9LQ2FudmFzUmVzb3VyY2VzLmNwcAotLS0ga2NhbnZh
cy9LQ2FudmFzUmVzb3VyY2VzLmNwcAkxIFNlcCAyMDA1IDA3OjMyOjQ3IC0wMDAwCTEuNAorKysg
a2NhbnZhcy9LQ2FudmFzUmVzb3VyY2VzLmNwcAk2IFNlcCAyMDA1IDA3OjE3OjE2IC0wMDAwCkBA
IC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiS0NhbnZhcy5oIgogI2luY2x1ZGUgIktDYW52YXNJ
dGVtLmgiCiAjaW5jbHVkZSAiS0NhbnZhc01hdHJpeC5oIgorI2luY2x1ZGUgIktDYW52YXNDb250
YWluZXIuaCIKICNpbmNsdWRlICJLQ2FudmFzUmVzb3VyY2VzLmgiCiAjaW5jbHVkZSAiS1JlbmRl
cmluZ0RldmljZS5oIgogI2luY2x1ZGUgIktDYW52YXNSZXNvdXJjZUxpc3RlbmVyLmgiCkBAIC00
MSwyNSArNDIsMTIgQEAgUVRleHRTdHJlYW0gJm9wZXJhdG9yPDwoUVRleHRTdHJlYW0gJnRzLAog
Ly8gS0NhbnZhc1Jlc291cmNlCiBLQ2FudmFzUmVzb3VyY2U6OktDYW52YXNSZXNvdXJjZSgpCiB7
Ci0gICAgbV9jaGFuZ2VkID0gdHJ1ZTsKLQotICAgIG1fbGlzdGVuZXIgPSAwOwogfQogCiBLQ2Fu
dmFzUmVzb3VyY2U6On5LQ2FudmFzUmVzb3VyY2UoKQogewogfQogCi1ib29sIEtDYW52YXNSZXNv
dXJjZTo6Y2hhbmdlZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fY2hhbmdlZDsKLX0KLQotdm9p
ZCBLQ2FudmFzUmVzb3VyY2U6OnNldENoYW5nZWQoYm9vbCBjaGFuZ2VkKQotewotICAgIG1fY2hh
bmdlZCA9IGNoYW5nZWQ7Ci19Ci0KIHZvaWQgS0NhbnZhc1Jlc291cmNlOjphZGRDbGllbnQoS0Nh
bnZhc0l0ZW0gKml0ZW0pCiB7CiAgICAgaWYobV9jbGllbnRzLmZpbmQoaXRlbSkgIT0gbV9jbGll
bnRzLmVuZCgpKQpAQCAtNzMsMTYgKzYxLDYgQEAgY29uc3QgS0NhbnZhc0l0ZW1MaXN0ICZLQ2Fu
dmFzUmVzb3VyY2U6OgogICAgIHJldHVybiBtX2NsaWVudHM7CiB9CiAKLUtDYW52YXNSZXNvdXJj
ZUxpc3RlbmVyICpLQ2FudmFzUmVzb3VyY2U6Omxpc3RlbmVyKCkgY29uc3QKLXsKLSAgICByZXR1
cm4gbV9saXN0ZW5lcjsKLX0KLQotdm9pZCBLQ2FudmFzUmVzb3VyY2U6OnNldExpc3RlbmVyKEtD
YW52YXNSZXNvdXJjZUxpc3RlbmVyICpsaXN0ZW5lcikKLXsKLSAgICBtX2xpc3RlbmVyID0gbGlz
dGVuZXI7Ci19Ci0KIHZvaWQgS0NhbnZhc1Jlc291cmNlOjppbnZhbGlkYXRlKCkKIHsKICAgICBL
Q2FudmFzSXRlbUxpc3Q6OkNvbnN0SXRlcmF0b3IgaXQgPSBtX2NsaWVudHMuYmVnaW4oKTsKQEAg
LTIxMSwxMSArMTg5LDggQEAgdm9pZCBLQ2FudmFzTWFya2VyOjpzZXRBdXRvQW5nbGUoKQogCiB2
b2lkIEtDYW52YXNNYXJrZXI6OmRyYXcoZG91YmxlIHgsIGRvdWJsZSB5LCBkb3VibGUgYW5nbGUp
CiB7Ci0gICAga2REZWJ1ZygpIDw8ICJEcmF3aW5nIG1hcmtlciBhdCA6ICIgPDwgeCA8PCAiICwg
IiA8PCB5IDw8IGVuZGw7CiAgICAgaWYobV9tYXJrZXIgJiYgbV9tYXJrZXItPnN0eWxlKCkpCiAg
ICAgewotICAgICAgICBzZXRDaGFuZ2VkKGZhbHNlKTsKLQogICAgICAgICBLQ2FudmFzTWF0cml4
IHRyYW5zbGF0aW9uOwogICAgICAgICB0cmFuc2xhdGlvbi50cmFuc2xhdGUoeCwgeSk7CiAKSW5k
ZXg6IGtjYW52YXMvS0NhbnZhc1Jlc291cmNlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMv
cm9vdC9TVkdTdXBwb3J0L2tjYW52YXMvS0NhbnZhc1Jlc291cmNlcy5oLHYKcmV0cmlldmluZyBy
ZXZpc2lvbiAxLjUKZGlmZiAtcCAtdSAtcjEuNSBrY2FudmFzL0tDYW52YXNSZXNvdXJjZXMuaAot
LS0ga2NhbnZhcy9LQ2FudmFzUmVzb3VyY2VzLmgJMiBTZXAgMjAwNSAxMDowMjo1NiAtMDAwMAkx
LjUKKysrIGtjYW52YXMvS0NhbnZhc1Jlc291cmNlcy5oCTYgU2VwIDIwMDUgMDc6MTc6MTYgLTAw
MDAKQEAgLTQyLDcgKzQyLDYgQEAgdHlwZWRlZiBlbnVtCiAgICAgUlNfRklMVEVSID0gMwogfSBL
Q1Jlc291cmNlVHlwZTsKIAotCiBjbGFzcyBLQ2FudmFzTWF0cml4OwogCiBjbGFzcyBLQ2FudmFz
UmVzb3VyY2UKQEAgLTUxLDI2ICs1MCwxNyBAQCBwdWJsaWM6CiAgICAgS0NhbnZhc1Jlc291cmNl
KCk7CiAgICAgdmlydHVhbCB+S0NhbnZhc1Jlc291cmNlKCk7CiAKLSAgICBib29sIGNoYW5nZWQo
KSBjb25zdDsKLSAgICB2b2lkIHNldENoYW5nZWQoYm9vbCBjaGFuZ2VkKTsKLQogICAgIHZpcnR1
YWwgdm9pZCBpbnZhbGlkYXRlKCk7CiAgICAgdm9pZCBhZGRDbGllbnQoS0NhbnZhc0l0ZW0gKml0
ZW0pOwogCiAgICAgY29uc3QgS0NhbnZhc0l0ZW1MaXN0ICZjbGllbnRzKCkgY29uc3Q7Ci0KLSAg
ICBLQ2FudmFzUmVzb3VyY2VMaXN0ZW5lciAqbGlzdGVuZXIoKSBjb25zdDsKLSAgICB2b2lkIHNl
dExpc3RlbmVyKEtDYW52YXNSZXNvdXJjZUxpc3RlbmVyICpsaXN0ZW5lcik7CiAgICAgCiAgICAg
UVN0cmluZyBpZEluUmVnaXN0cnkoKSBjb25zdDsKICAgICB2b2lkIHNldElkSW5SZWdpc3RyeShj
b25zdCBRU3RyaW5nJiBuZXdJZCk7CiAgICAgCiAgICAgdmlydHVhbCBRVGV4dFN0cmVhbSYgZXh0
ZXJuYWxSZXByZXNlbnRhdGlvbihRVGV4dFN0cmVhbSAmKSBjb25zdDsgCiBwcml2YXRlOgotICAg
IGJvb2wgbV9jaGFuZ2VkIDogMTsKLQogICAgIEtDYW52YXNJdGVtTGlzdCBtX2NsaWVudHM7Ci0g
ICAgS0NhbnZhc1Jlc291cmNlTGlzdGVuZXIgKm1fbGlzdGVuZXI7CiAgICAgUVN0cmluZyByZWdp
c3RyeUlkOwogfTsKIApJbmRleDoga2NhbnZhcy9LQ2FudmFzVmlldy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpS
Q1MgZmlsZTogL2N2cy9yb290L1NWR1N1cHBvcnQva2NhbnZhcy9LQ2FudmFzVmlldy5jcHAsdgpy
ZXRyaWV2aW5nIHJldmlzaW9uIDEuNApkaWZmIC1wIC11IC1yMS40IGtjYW52YXMvS0NhbnZhc1Zp
ZXcuY3BwCi0tLSBrY2FudmFzL0tDYW52YXNWaWV3LmNwcAkyIFNlcCAyMDA1IDEwOjAyOjU2IC0w
MDAwCTEuNAorKysga2NhbnZhcy9LQ2FudmFzVmlldy5jcHAJNiBTZXAgMjAwNSAwNzoxNzoxNiAt
MDAwMApAQCAtNDY2LDYgKzQ2NiwxMSBAQCBLQ2FudmFzSW1hZ2UgKktDYW52YXNWaWV3OjpncmFi
SW1hZ2UoKQogfQogI2VuZGlmCiAKK3ZvaWQgS0NhbnZhc1ZpZXc6OnNldENhbnZhcyhLQ2FudmFz
ICpjYW52YXMpCit7CisgICAgZC0+Y2FudmFzID0gY2FudmFzOworfQorCiB2b2lkIEtDYW52YXNW
aWV3OjpjbGFtcEFnYWluc3RUYXJnZXQoY29uc3QgUVJlY3QgJnJlY3QsIGludCAmeDAsIGludCAm
eTAsIGludCAmeDEsIGludCAmeTEpCiB7CiAgICAgaW50IGN1cldpZHRoID0gdmlld1dpZHRoKCk7
CkluZGV4OiBrY2FudmFzL0tDYW52YXNWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9y
b290L1NWR1N1cHBvcnQva2NhbnZhcy9LQ2FudmFzVmlldy5oLHYKcmV0cmlldmluZyByZXZpc2lv
biAxLjMKZGlmZiAtcCAtdSAtcjEuMyBrY2FudmFzL0tDYW52YXNWaWV3LmgKLS0tIGtjYW52YXMv
S0NhbnZhc1ZpZXcuaAkxIFNlcCAyMDA1IDA3OjMyOjQ3IC0wMDAwCTEuMworKysga2NhbnZhcy9L
Q2FudmFzVmlldy5oCTYgU2VwIDIwMDUgMDc6MTc6MTYgLTAwMDAKQEAgLTEwMiw3ICsxMDIsOSBA
QCBzaWduYWxzOgogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBLQ2FudmFzOwotICAgIAor
CisgICAgdm9pZCBzZXRDYW52YXMoS0NhbnZhcyAqY2FudmFzKTsKKwogICAgIC8vIEludGVybmFs
IGhlbHBlci4KICAgICB2aXJ0dWFsIHZvaWQgY2FudmFzU2l6ZUNoYW5nZWQoaW50IHdpZHRoLCBp
bnQgaGVpZ2h0KSA9IDA7CiAKSW5kZXg6IGtjYW52YXMvZGV2aWNlL0tSZW5kZXJpbmdGaWxsUGFp
bnRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1NWR1N1cHBvcnQva2NhbnZh
cy9kZXZpY2UvS1JlbmRlcmluZ0ZpbGxQYWludGVyLmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24g
MS40CmRpZmYgLXAgLXUgLXIxLjQga2NhbnZhcy9kZXZpY2UvS1JlbmRlcmluZ0ZpbGxQYWludGVy
LmNwcAotLS0ga2NhbnZhcy9kZXZpY2UvS1JlbmRlcmluZ0ZpbGxQYWludGVyLmNwcAkxIFNlcCAy
MDA1IDA3OjMyOjUwIC0wMDAwCTEuNAorKysga2NhbnZhcy9kZXZpY2UvS1JlbmRlcmluZ0ZpbGxQ
YWludGVyLmNwcAk2IFNlcCAyMDA1IDA3OjE3OjE2IC0wMDAwCkBAIC05MCwxMyArOTAsNyBAQCB2
b2lkIEtSZW5kZXJpbmdGaWxsUGFpbnRlcjo6c2V0T3BhY2l0eShmCiB2b2lkIEtSZW5kZXJpbmdG
aWxsUGFpbnRlcjo6ZHJhdyhLUmVuZGVyaW5nRGV2aWNlQ29udGV4dCAqY29udGV4dCwgY29uc3Qg
S0NhbnZhc0NvbW1vbkFyZ3MgJmFyZ3MpIGNvbnN0CiB7CiAgICAgaWYoZC0+cHNlcnZlcikKLSAg
ICB7Ci0gICAgICAgIEtDYW52YXNSZXNvdXJjZSAqcmVzID0gZHluYW1pY19jYXN0PEtDYW52YXNS
ZXNvdXJjZSAqPihkLT5wc2VydmVyKTsKLSAgICAgICAgaWYocmVzICYmIHJlcy0+bGlzdGVuZXIo
KSkgICAgICAgIAotICAgICAgICAgICAgcmVzLT5saXN0ZW5lcigpLT5yZXNvdXJjZU5vdGlmaWNh
dGlvbigpOwotCiAgICAgICAgIGQtPnBzZXJ2ZXItPmRyYXcoY29udGV4dCwgYXJncywgQVBQTFlf
VE9fRklMTCk7Ci0gICAgfQogfQogCiAvLyB2aW06dHM9NDpub2V0CkluZGV4OiBrY2FudmFzL2Rl
dmljZS9LUmVuZGVyaW5nUGFpbnRTZXJ2ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jv
b3QvU1ZHU3VwcG9ydC9rY2FudmFzL2RldmljZS9LUmVuZGVyaW5nUGFpbnRTZXJ2ZXIuaCx2CnJl
dHJpZXZpbmcgcmV2aXNpb24gMS40CmRpZmYgLXAgLXUgLXIxLjQga2NhbnZhcy9kZXZpY2UvS1Jl
bmRlcmluZ1BhaW50U2VydmVyLmgKLS0tIGtjYW52YXMvZGV2aWNlL0tSZW5kZXJpbmdQYWludFNl
cnZlci5oCTEgU2VwIDIwMDUgMDc6MzI6NTAgLTAwMDAJMS40CisrKyBrY2FudmFzL2RldmljZS9L
UmVuZGVyaW5nUGFpbnRTZXJ2ZXIuaAk2IFNlcCAyMDA1IDA3OjE3OjE2IC0wMDAwCkBAIC0yNCw2
ICsyNCw3IEBACiAjZGVmaW5lIEtSZW5kZXJpbmdQYWludFNlcnZlcl9ICiAKICNpbmNsdWRlIDxr
Y2FudmFzL0tDYW52YXNUeXBlcy5oPgorI2luY2x1ZGUgPGtjYW52YXMvS0NhbnZhc1Jlc291cmNl
cy5oPgogCiAvLyBFbnVtZXJhdGlvbnMKIHR5cGVkZWYgZW51bQpAQCAtNDYsMTAgKzQ3LDEwIEBA
IHR5cGVkZWYgZW51bQogY2xhc3MgUVRleHRTdHJlYW07CiBjbGFzcyBLQ2FudmFzSXRlbTsKIGNs
YXNzIEtSZW5kZXJpbmdEZXZpY2VDb250ZXh0OwotY2xhc3MgS1JlbmRlcmluZ1BhaW50U2VydmVy
CitjbGFzcyBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXIgOiBwdWJsaWMgS0NhbnZhc1Jlc291cmNlCiB7
CiBwdWJsaWM6Ci0gICAgS1JlbmRlcmluZ1BhaW50U2VydmVyKCkgeyBtX2FjdGl2ZUNsaWVudCA9
IDA7IH0KKyAgICBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXIoKSA6IEtDYW52YXNSZXNvdXJjZSgpIHsg
bV9hY3RpdmVDbGllbnQgPSAwOyB9CiAgICAgdmlydHVhbCB+S1JlbmRlcmluZ1BhaW50U2VydmVy
KCkgeyB9CiAKICAgICBjb25zdCBLQ2FudmFzSXRlbSAqYWN0aXZlQ2xpZW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9hY3RpdmVDbGllbnQ7fQpJbmRleDoga2NhbnZhcy9kZXZpY2UvS1JlbmRlcmluZ1Bh
aW50U2VydmVyR3JhZGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdT
dXBwb3J0L2tjYW52YXMvZGV2aWNlL0tSZW5kZXJpbmdQYWludFNlcnZlckdyYWRpZW50LmNwcCx2
CnJldHJpZXZpbmcgcmV2aXNpb24gMS41CmRpZmYgLXAgLXUgLXIxLjUga2NhbnZhcy9kZXZpY2Uv
S1JlbmRlcmluZ1BhaW50U2VydmVyR3JhZGllbnQuY3BwCi0tLSBrY2FudmFzL2RldmljZS9LUmVu
ZGVyaW5nUGFpbnRTZXJ2ZXJHcmFkaWVudC5jcHAJMiBTZXAgMjAwNSAxMDowMjo1OCAtMDAwMAkx
LjUKKysrIGtjYW52YXMvZGV2aWNlL0tSZW5kZXJpbmdQYWludFNlcnZlckdyYWRpZW50LmNwcAk2
IFNlcCAyMDA1IDA3OjE3OjE2IC0wMDAwCkBAIC05MCwxNiArOTAsMTcgQEAgUVRleHRTdHJlYW0g
Jm9wZXJhdG9yPDwoUVRleHRTdHJlYW0gJnRzLAogY2xhc3MgS1JlbmRlcmluZ1BhaW50U2VydmVy
R3JhZGllbnQ6OlByaXZhdGUKIHsKIHB1YmxpYzoKLSAgICBQcml2YXRlKCkgeyBib3VuZGluZ0Jv
eE1vZGUgPSB0cnVlOyBzcHJlYWRNZXRob2QgPSBTUFJFQURNRVRIT0RfUEFEOyB9CisgICAgUHJp
dmF0ZSgpIHsgYm91bmRpbmdCb3hNb2RlID0gdHJ1ZTsgc3ByZWFkTWV0aG9kID0gU1BSRUFETUVU
SE9EX1BBRDsgbGlzdGVuZXIgPSAwOyB9CiAgICAgflByaXZhdGUoKSB7IH0KIAogICAgIEtDU29y
dGVkR3JhZGllbnRTdG9wTGlzdCBzdG9wczsKICAgICBLQ0dyYWRpZW50U3ByZWFkTWV0aG9kIHNw
cmVhZE1ldGhvZDsKICAgICBib29sIGJvdW5kaW5nQm94TW9kZTsKICAgICBLQ2FudmFzTWF0cml4
IGdyYWRpZW50VHJhbnNmb3JtOworICAgIEtDYW52YXNSZXNvdXJjZUxpc3RlbmVyICpsaXN0ZW5l
cjsKIH07CiAKLUtSZW5kZXJpbmdQYWludFNlcnZlckdyYWRpZW50OjpLUmVuZGVyaW5nUGFpbnRT
ZXJ2ZXJHcmFkaWVudCgpIDogS1JlbmRlcmluZ1BhaW50U2VydmVyKCksIEtDYW52YXNSZXNvdXJj
ZSgpLCBkKG5ldyBQcml2YXRlKCkpCitLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJHcmFkaWVudDo6S1Jl
bmRlcmluZ1BhaW50U2VydmVyR3JhZGllbnQoKSA6IEtSZW5kZXJpbmdQYWludFNlcnZlcigpLCBk
KG5ldyBQcml2YXRlKCkpCiB7CiB9CiAKQEAgLTI3MCw2ICsyNzEsMTYgQEAgS0NQYWludFNlcnZl
clR5cGUgS1JlbmRlcmluZ1BhaW50U2VydmVyUgogICAgIHJldHVybiBQU19SQURJQUxfR1JBRElF
TlQ7CiB9CiAKK0tDYW52YXNSZXNvdXJjZUxpc3RlbmVyICpLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJH
cmFkaWVudDo6bGlzdGVuZXIoKSBjb25zdAoreworICAgIHJldHVybiBkLT5saXN0ZW5lcjsKK30K
Kwordm9pZCBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJHcmFkaWVudDo6c2V0TGlzdGVuZXIoS0NhbnZh
c1Jlc291cmNlTGlzdGVuZXIgKmxpc3RlbmVyKQoreworICAgIGQtPmxpc3RlbmVyID0gbGlzdGVu
ZXI7Cit9CisKIFFUZXh0U3RyZWFtICZLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJSYWRpYWxHcmFkaWVu
dDo6ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihRVGV4dFN0cmVhbSAmdHMpIGNvbnN0CiB7CiAgICAg
dHMgPDwgIlt0eXBlPVJBRElBTC1HUkFESUVOVF0gIjsgCkBAIC0yNzksNCArMjkwLDUgQEAgUVRl
eHRTdHJlYW0gJktSZW5kZXJpbmdQYWludFNlcnZlclJhZGlhbAogICAgICAgICA8PCAiIFtyYWRp
dXM9IiA8PCBncmFkaWVudFJhZGl1cygpIDw8ICJdIjsKICAgICByZXR1cm4gdHM7CiB9CisKIC8v
IHZpbTp0cz00Om5vZXQKSW5kZXg6IGtjYW52YXMvZGV2aWNlL0tSZW5kZXJpbmdQYWludFNlcnZl
ckdyYWRpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1NWR1N1cHBvcnQva2Nh
bnZhcy9kZXZpY2UvS1JlbmRlcmluZ1BhaW50U2VydmVyR3JhZGllbnQuaCx2CnJldHJpZXZpbmcg
cmV2aXNpb24gMS41CmRpZmYgLXAgLXUgLXIxLjUga2NhbnZhcy9kZXZpY2UvS1JlbmRlcmluZ1Bh
aW50U2VydmVyR3JhZGllbnQuaAotLS0ga2NhbnZhcy9kZXZpY2UvS1JlbmRlcmluZ1BhaW50U2Vy
dmVyR3JhZGllbnQuaAkyIFNlcCAyMDA1IDEwOjAyOjU4IC0wMDAwCTEuNQorKysga2NhbnZhcy9k
ZXZpY2UvS1JlbmRlcmluZ1BhaW50U2VydmVyR3JhZGllbnQuaAk2IFNlcCAyMDA1IDA3OjE3OjE2
IC0wMDAwCkBAIC0yNiw4ICsyNiw4IEBACiAjaW5jbHVkZSA8cWNvbG9yLmg+CiAjaW5jbHVkZSA8
cTNwdHJsaXN0Lmg+CiAKLSNpbmNsdWRlIDxrY2FudmFzL0tDYW52YXNSZXNvdXJjZXMuaD4KICNp
bmNsdWRlIDxrY2FudmFzL2RldmljZS9LUmVuZGVyaW5nUGFpbnRTZXJ2ZXIuaD4KKyNpbmNsdWRl
IDxrY2FudmFzL0tDYW52YXNSZXNvdXJjZUxpc3RlbmVyLmg+CiAKIHR5cGVkZWYgZW51bQogewpA
QCAtNTIsNyArNTIsNiBAQCBwdWJsaWM6CiAKICAgICB0eXBlZGVmIFEzUHRyTGlzdEl0ZXJhdG9y
PEtDR3JhZGllbnRPZmZzZXRQYWlyPiBJdGVyYXRvcjsKIAotICAgIAogcHJvdGVjdGVkOgogICAg
IHZpcnR1YWwgaW50IGNvbXBhcmVJdGVtcyhRM1B0ckNvbGxlY3Rpb246Okl0ZW0gaXRlbTEsIFEz
UHRyQ29sbGVjdGlvbjo6SXRlbSBpdGVtMik7CiBwcml2YXRlOgpAQCAtNjIsOCArNjEsNyBAQCBw
cml2YXRlOgogUVRleHRTdHJlYW0gJm9wZXJhdG9yPDwoUVRleHRTdHJlYW0gJiwgY29uc3QgS0NT
b3J0ZWRHcmFkaWVudFN0b3BMaXN0ICYpOwogCiBjbGFzcyBLQ2FudmFzTWF0cml4OwotY2xhc3Mg
S1JlbmRlcmluZ1BhaW50U2VydmVyR3JhZGllbnQgOiBwdWJsaWMgS1JlbmRlcmluZ1BhaW50U2Vy
dmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgS0NhbnZh
c1Jlc291cmNlCitjbGFzcyBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJHcmFkaWVudCA6IHB1YmxpYyBL
UmVuZGVyaW5nUGFpbnRTZXJ2ZXIKIHsKIHB1YmxpYzoKICAgICBLUmVuZGVyaW5nUGFpbnRTZXJ2
ZXJHcmFkaWVudCgpOwpAQCAtODYsNiArODQsOSBAQCBwdWJsaWM6CiAgICAgS0NhbnZhc01hdHJp
eCBncmFkaWVudFRyYW5zZm9ybSgpIGNvbnN0OwogICAgIHZvaWQgc2V0R3JhZGllbnRUcmFuc2Zv
cm0oY29uc3QgS0NhbnZhc01hdHJpeCAmbWF0KTsKIAorICAgIEtDYW52YXNSZXNvdXJjZUxpc3Rl
bmVyICpsaXN0ZW5lcigpIGNvbnN0OworICAgIHZvaWQgc2V0TGlzdGVuZXIoS0NhbnZhc1Jlc291
cmNlTGlzdGVuZXIgKmxpc3RlbmVyKTsKKwogICAgIFFUZXh0U3RyZWFtICZleHRlcm5hbFJlcHJl
c2VudGF0aW9uKFFUZXh0U3RyZWFtICYpIGNvbnN0OwogcHJpdmF0ZToKICAgICBjbGFzcyBQcml2
YXRlOwpJbmRleDoga2NhbnZhcy9kZXZpY2UvS1JlbmRlcmluZ1BhaW50U2VydmVyUGF0dGVybi5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1NWR1N1cHBvcnQva2NhbnZhcy9kZXZp
Y2UvS1JlbmRlcmluZ1BhaW50U2VydmVyUGF0dGVybi5jcHAsdgpyZXRyaWV2aW5nIHJldmlzaW9u
IDEuNApkaWZmIC1wIC11IC1yMS40IGtjYW52YXMvZGV2aWNlL0tSZW5kZXJpbmdQYWludFNlcnZl
clBhdHRlcm4uY3BwCi0tLSBrY2FudmFzL2RldmljZS9LUmVuZGVyaW5nUGFpbnRTZXJ2ZXJQYXR0
ZXJuLmNwcAkxIFNlcCAyMDA1IDA3OjMyOjUxIC0wMDAwCTEuNAorKysga2NhbnZhcy9kZXZpY2Uv
S1JlbmRlcmluZ1BhaW50U2VydmVyUGF0dGVybi5jcHAJNiBTZXAgMjAwNSAwNzoxNzoxNyAtMDAw
MApAQCAtMzUsNiArMzUsNyBAQCBwdWJsaWM6CiAgICAgICAgIHRpbGUgPSAwOwogICAgICAgICB4
ID0geSA9IHdpZHRoID0gaGVpZ2h0ID0gMDsKICAgICAgICAgdXNlQm91bmRpbmdCb3hNb2RlID0g
dHJ1ZTsKKwkJbGlzdGVuZXIgPSAwOwogICAgIH0KICAgICB+UHJpdmF0ZSgpIHsgZGVsZXRlIHRp
bGU7IH0KIApAQCAtNDIsOSArNDMsMTAgQEAgcHVibGljOgogICAgIEtDYW52YXNNYXRyaXggcGF0
dGVyblRyYW5zZm9ybTsKICAgICBmbG9hdCB4LCB5LCB3aWR0aCwgaGVpZ2h0OwogICAgIGJvb2wg
dXNlQm91bmRpbmdCb3hNb2RlOworICAgIEtDYW52YXNSZXNvdXJjZUxpc3RlbmVyICpsaXN0ZW5l
cjsKIH07CiAKLUtSZW5kZXJpbmdQYWludFNlcnZlclBhdHRlcm46OktSZW5kZXJpbmdQYWludFNl
cnZlclBhdHRlcm4oKSA6IEtSZW5kZXJpbmdQYWludFNlcnZlcigpLCBLQ2FudmFzUmVzb3VyY2Uo
KSwgZChuZXcgUHJpdmF0ZSgpKQorS1JlbmRlcmluZ1BhaW50U2VydmVyUGF0dGVybjo6S1JlbmRl
cmluZ1BhaW50U2VydmVyUGF0dGVybigpIDogS1JlbmRlcmluZ1BhaW50U2VydmVyKCksIGQobmV3
IFByaXZhdGUoKSkKIHsKIH0KIApAQCAtMTI4LDYgKzEzMCwxNiBAQCBLQ1BhaW50U2VydmVyVHlw
ZSBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJQCiAgICAgcmV0dXJuIFBTX1BBVFRFUk47CiB9CiAKK0tD
YW52YXNSZXNvdXJjZUxpc3RlbmVyICpLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJQYXR0ZXJuOjpsaXN0
ZW5lcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIGQtPmxpc3RlbmVyOworfQorCit2b2lkIEtSZW5k
ZXJpbmdQYWludFNlcnZlclBhdHRlcm46OnNldExpc3RlbmVyKEtDYW52YXNSZXNvdXJjZUxpc3Rl
bmVyICpsaXN0ZW5lcikKK3sKKyAgICBkLT5saXN0ZW5lciA9IGxpc3RlbmVyOworfQorCiBRVGV4
dFN0cmVhbSAmS1JlbmRlcmluZ1BhaW50U2VydmVyUGF0dGVybjo6ZXh0ZXJuYWxSZXByZXNlbnRh
dGlvbihRVGV4dFN0cmVhbSAmdHMpIGNvbnN0CiB7CiAgICAgIHRzIDw8ICJbdHlwZT1QQVRURVJO
XSIKSW5kZXg6IGtjYW52YXMvZGV2aWNlL0tSZW5kZXJpbmdQYWludFNlcnZlclBhdHRlcm4uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvU1ZHU3VwcG9ydC9rY2FudmFzL2RldmljZS9L
UmVuZGVyaW5nUGFpbnRTZXJ2ZXJQYXR0ZXJuLmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNApk
aWZmIC1wIC11IC1yMS40IGtjYW52YXMvZGV2aWNlL0tSZW5kZXJpbmdQYWludFNlcnZlclBhdHRl
cm4uaAotLS0ga2NhbnZhcy9kZXZpY2UvS1JlbmRlcmluZ1BhaW50U2VydmVyUGF0dGVybi5oCTEg
U2VwIDIwMDUgMDc6MzI6NTEgLTAwMDAJMS40CisrKyBrY2FudmFzL2RldmljZS9LUmVuZGVyaW5n
UGFpbnRTZXJ2ZXJQYXR0ZXJuLmgJNiBTZXAgMjAwNSAwNzoxNzoxNyAtMDAwMApAQCAtMjMsMTUg
KzIzLDE0IEBACiAjaWZuZGVmIEtSZW5kZXJpbmdQYWludFNlcnZlclBhdHRlcm5fSAogI2RlZmlu
ZSBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJQYXR0ZXJuX0gKIAotI2luY2x1ZGUgPGtjYW52YXMvS0Nh
bnZhc1Jlc291cmNlcy5oPgogI2luY2x1ZGUgPGtjYW52YXMvZGV2aWNlL0tSZW5kZXJpbmdQYWlu
dFNlcnZlci5oPgorI2luY2x1ZGUgPGtjYW52YXMvS0NhbnZhc1Jlc291cmNlTGlzdGVuZXIuaD4K
IAogI2luY2x1ZGUgPHFwb2ludC5oPgogCiBjbGFzcyBLQ2FudmFzSW1hZ2U7CiAKLWNsYXNzIEtS
ZW5kZXJpbmdQYWludFNlcnZlclBhdHRlcm4gOiBwdWJsaWMgS1JlbmRlcmluZ1BhaW50U2VydmVy
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBLQ2FudmFzUmVz
b3VyY2UKK2NsYXNzIEtSZW5kZXJpbmdQYWludFNlcnZlclBhdHRlcm4gOiBwdWJsaWMgS1JlbmRl
cmluZ1BhaW50U2VydmVyCiB7CiBwdWJsaWM6CiAgICAgS1JlbmRlcmluZ1BhaW50U2VydmVyUGF0
dGVybigpOwpAQCAtNjQsNiArNjMsOCBAQCBwdWJsaWM6CiAgICAgS0NhbnZhc01hdHJpeCBwYXR0
ZXJuVHJhbnNmb3JtKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRQYXR0ZXJuVHJhbnNmb3JtKGNvbnN0
IEtDYW52YXNNYXRyaXggJm1hdCk7CiAKKyAgICBLQ2FudmFzUmVzb3VyY2VMaXN0ZW5lciAqbGlz
dGVuZXIoKSBjb25zdDsKKyAgICB2b2lkIHNldExpc3RlbmVyKEtDYW52YXNSZXNvdXJjZUxpc3Rl
bmVyICpsaXN0ZW5lcik7CiAgICAgUVRleHRTdHJlYW0gJmV4dGVybmFsUmVwcmVzZW50YXRpb24o
UVRleHRTdHJlYW0gJikgY29uc3Q7CiAKIHByaXZhdGU6CkluZGV4OiBrY2FudmFzL2RldmljZS9L
UmVuZGVyaW5nU3Ryb2tlUGFpbnRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290
L1NWR1N1cHBvcnQva2NhbnZhcy9kZXZpY2UvS1JlbmRlcmluZ1N0cm9rZVBhaW50ZXIuY3BwLHYK
cmV0cmlldmluZyByZXZpc2lvbiAxLjQKZGlmZiAtcCAtdSAtcjEuNCBrY2FudmFzL2RldmljZS9L
UmVuZGVyaW5nU3Ryb2tlUGFpbnRlci5jcHAKLS0tIGtjYW52YXMvZGV2aWNlL0tSZW5kZXJpbmdT
dHJva2VQYWludGVyLmNwcAkxIFNlcCAyMDA1IDA3OjMyOjUxIC0wMDAwCTEuNAorKysga2NhbnZh
cy9kZXZpY2UvS1JlbmRlcmluZ1N0cm9rZVBhaW50ZXIuY3BwCTYgU2VwIDIwMDUgMDc6MTc6MTcg
LTAwMDAKQEAgLTIwLDcgKzIwLDYgQEAKICAgICBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4K
ICovCiAKLSNpbmNsdWRlICJLQ2FudmFzUmVzb3VyY2VzLmgiCiAjaW5jbHVkZSAiS1JlbmRlcmlu
Z1BhaW50U2VydmVyLmgiCiAjaW5jbHVkZSAiS1JlbmRlcmluZ1N0cm9rZVBhaW50ZXIuaCIKIApA
QCAtNzYsOSArNzUsOSBAQCBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXIgKktSZW5kZXJpbmdTdHJva2VQ
CiAKIHZvaWQgS1JlbmRlcmluZ1N0cm9rZVBhaW50ZXI6OnNldFBhaW50U2VydmVyKEtSZW5kZXJp
bmdQYWludFNlcnZlciAqcHNlcnZlcikKIHsKKyAgICBzZXREaXJ0eSgpOwogICAgIGlmKGQtPnBz
ZXJ2ZXIgJiYgKGQtPnBzZXJ2ZXItPnR5cGUoKSA9PSBQU19TT0xJRCB8fCBkLT5wc2VydmVyLT50
eXBlKCkgPT0gUFNfSU1BR0UpKQogICAgICAgICBkZWxldGUgZC0+cHNlcnZlcjsKLSAgICBzZXRE
aXJ0eSgpOwogICAgIGQtPnBzZXJ2ZXIgPSBwc2VydmVyOwogfQogCkBAIC0xNjIsMTMgKzE2MSw3
IEBAIHZvaWQgS1JlbmRlcmluZ1N0cm9rZVBhaW50ZXI6OnNldE9wYWNpdHkKIHZvaWQgS1JlbmRl
cmluZ1N0cm9rZVBhaW50ZXI6OmRyYXcoS1JlbmRlcmluZ0RldmljZUNvbnRleHQgKmNvbnRleHQs
IGNvbnN0IEtDYW52YXNDb21tb25BcmdzICZhcmdzKSBjb25zdAogewogICAgIGlmKGQtPnBzZXJ2
ZXIpCi0gICAgewotICAgICAgICBLQ2FudmFzUmVzb3VyY2UgKnJlcyA9IGR5bmFtaWNfY2FzdDxL
Q2FudmFzUmVzb3VyY2UgKj4oZC0+cHNlcnZlcik7Ci0gICAgICAgIGlmKHJlcyAmJiByZXMtPmxp
c3RlbmVyKCkpCi0gICAgICAgICAgICByZXMtPmxpc3RlbmVyKCktPnJlc291cmNlTm90aWZpY2F0
aW9uKCk7Ci0KICAgICAgICAgZC0+cHNlcnZlci0+ZHJhdyhjb250ZXh0LCBhcmdzLCBBUFBMWV9U
T19TVFJPS0UpOwotICAgIH0KIH0KIAogYm9vbCBLUmVuZGVyaW5nU3Ryb2tlUGFpbnRlcjo6ZGly
dHkoKSBjb25zdApJbmRleDoga2NhbnZhcy9kZXZpY2UvcXVhcnR6L0tDYW52YXNGaWx0ZXJRdWFy
dHoubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1NWR1N1cHBvcnQva2NhbnZhcy9k
ZXZpY2UvcXVhcnR6L0tDYW52YXNGaWx0ZXJRdWFydHoubW0sdgpyZXRyaWV2aW5nIHJldmlzaW9u
IDEuNgpkaWZmIC1wIC11IC1yMS42IGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9LQ2FudmFzRmlsdGVy
UXVhcnR6Lm1tCi0tLSBrY2FudmFzL2RldmljZS9xdWFydHovS0NhbnZhc0ZpbHRlclF1YXJ0ei5t
bQkyOCBBdWcgMjAwNSAxMDo0ODoyOCAtMDAwMAkxLjYKKysrIGtjYW52YXMvZGV2aWNlL3F1YXJ0
ei9LQ2FudmFzRmlsdGVyUXVhcnR6Lm1tCTYgU2VwIDIwMDUgMDc6MTc6MTcgLTAwMDAKQEAgLTky
LDcgKzkyLDcgQEAgdm9pZCBLQ2FudmFzRmlsdGVyUXVhcnR6OjpwcmVwYXJlRmlsdGVyKAogewog
CWlmICghS1JlbmRlcmluZ0RldmljZVF1YXJ0ejo6ZmlsdGVyc0VuYWJsZWQoKSkgcmV0dXJuOwog
CWlmIChtX2VmZmVjdHMuaXNFbXB0eSgpKSB7Ci0JCU5TTG9nKEAiV0FSTklORzogTm8gZWZmZWN0
cywgaWdub3JpbmcgZmlsdGVyLiIpOworCQlOU0xvZyhAIldBUk5JTkc6IE5vIGVmZmVjdHMsIGln
bm9yaW5nIGZpbHRlciAoJXApLiIsIHRoaXMpOwogCQlyZXR1cm47CiAJfQogCUFTU0VSVChtX3N0
b3JlZENHQ29udGV4dCA9PSBOVUxMKTsKQEAgLTI4NCw3ICsyODQsNyBAQCBDSUltYWdlICpLQ2Fu
dmFzRmlsdGVyUXVhcnR6OjppbnB1dEltYWdlCiAKICNkZWZpbmUgRkVfUVVBUlRaX0NIRUNLX0lO
UFVUKGlucHV0KSBcCiAJaWYgKCFpbnB1dCkgeyBcCi0JCU5TTG9nKEAiRVJST1I6IENhbid0IGFw
cGx5IGZpbHRlciB3L28gaW5wdXQgaW1hZ2UuIik7IFwKKwkJTlNMb2coQCJFUlJPUjogQ2FuJ3Qg
YXBwbHkgZmlsdGVyICglcCkgdy9vIGlucHV0IGltYWdlLiIsIHRoaXMpOyBcCiAJCXJldHVybiBu
aWw7IFwKIAl9CiAKSW5kZXg6IGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9LUmVuZGVyaW5nUGFpbnRT
ZXJ2ZXJHcmFkaWVudFF1YXJ0ei5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvU1ZH
U3VwcG9ydC9rY2FudmFzL2RldmljZS9xdWFydHovS1JlbmRlcmluZ1BhaW50U2VydmVyR3JhZGll
bnRRdWFydHoubW0sdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMwpkaWZmIC1wIC11IC1yMS4zIGtj
YW52YXMvZGV2aWNlL3F1YXJ0ei9LUmVuZGVyaW5nUGFpbnRTZXJ2ZXJHcmFkaWVudFF1YXJ0ei5t
bQotLS0ga2NhbnZhcy9kZXZpY2UvcXVhcnR6L0tSZW5kZXJpbmdQYWludFNlcnZlckdyYWRpZW50
UXVhcnR6Lm1tCTE5IEF1ZyAyMDA1IDIxOjM3OjQxIC0wMDAwCTEuMworKysga2NhbnZhcy9kZXZp
Y2UvcXVhcnR6L0tSZW5kZXJpbmdQYWludFNlcnZlckdyYWRpZW50UXVhcnR6Lm1tCTYgU2VwIDIw
MDUgMDc6MTc6MTggLTAwMDAKQEAgLTEwNiw3ICsxMDYsNiBAQCBzdGF0aWMgdm9pZCBjZ0dyYWRp
ZW50Q2FsbGJhY2sodm9pZCAqaW5mCiAgICAgZmxvYXQgaW5WYWx1ZSA9IGluVmFsdWVzWzBdOwog
ICAgIAogICAgIGlmICghc3RvcHNDb3VudCkgewotICAgICAgICBOU0xvZyhAIldhcm5pbmcsIG5v
IGdyYWRpZW50IHN0b3BzLCBhc3N1bWluZyBibGFjayEiKTsKICAgICAgICAgb3V0Q29sb3JbMF0g
PSAwOwogICAgICAgICBvdXRDb2xvclsxXSA9IDA7CiAgICAgICAgIG91dENvbG9yWzJdID0gMDsK
QEAgLTExNCw3ICsxMTMsNiBAQCBzdGF0aWMgdm9pZCBjZ0dyYWRpZW50Q2FsbGJhY2sodm9pZCAq
aW5mCiAgICAgICAgIHJldHVybjsKICAgICB9IGVsc2UgaWYgKHN0b3BzQ291bnQgPT0gMSkgewog
ICAgICAgICBtZW1jcHkob3V0Q29sb3IsIHN0b3BzWzBdLmNvbG9yQXJyYXksIDQgKiBzaXplb2Yo
ZmxvYXQpKTsKLSAgICAgICAgLy9OU0xvZyhAInNpbmd1bGFyIHN0b3AsICVmIC0+IHI6ICVmIGc6
ICVmIGI6ICVmIGE6ICVmIiwgaW5WYWx1ZSwgb3V0Q29sb3JbMF0sIG91dENvbG9yWzFdLCBvdXRD
b2xvclsyXSwgb3V0Q29sb3JbM10pOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIApAQCAt
MTUwLDEyICsxNDgsOCBAQCBzdGF0aWMgdm9pZCBjZ0dyYWRpZW50Q2FsbGJhY2sodm9pZCAqaW5m
CiAgICAgICAgIHZlY3RvciBmbG9hdCB2UmVzdWx0ID0gdmVjX21hZGQodlBlcmNlbnQsIHZOZXh0
Q29sb3IsIHZQcmV2UmVzdWx0KTsKICAgICAgICAgdmVjX3N0KHZSZXN1bHQsIDAsIG91dENvbG9y
KTsKICNlbmRpZgotICAgICAgICAKICAgICB9Ci0gICAgCi0gICAgLy9OU0xvZyhAIiVmIC0+IHI6
ICVmIGc6ICVmIGI6ICVmIGE6ICVmIiwgaW5WYWx1ZSwgb3V0Q29sb3JbMF0sIG91dENvbG9yWzFd
LCBvdXRDb2xvclsyXSwgb3V0Q29sb3JbM10pOwotICAgIAotICAgIC8vIGhhdmUgdG8gaGFuZGxl
IHRoZSBzcHJlYWRNZXRob2QoKXMgaGVyZSBTUFJFQURNRVRIT0RfUkVQRUFULCBldGMuCisgICAg
Ly8gRklYTUU6IGhhdmUgdG8gaGFuZGxlIHRoZSBzcHJlYWRNZXRob2QoKXMgaGVyZSBTUFJFQURN
RVRIT0RfUkVQRUFULCBldGMuCiB9CiAKIApAQCAtMjA4LDExICsyMDIsOSBAQCBzdGF0aWMgQ0dT
aGFkaW5nUmVmIENHU2hhZGluZ1JlZkZvclJhZGlhCiAgICAgcmV0dXJuIHNoYWRpbmc7CiB9CiAK
LQogS1JlbmRlcmluZ1BhaW50U2VydmVyR3JhZGllbnRRdWFydHo6OktSZW5kZXJpbmdQYWludFNl
cnZlckdyYWRpZW50UXVhcnR6KCkgOgogbV9zdG9wc0NhY2hlKDApLCBtX3N0b3BzQ291bnQoMCks
IG1fc2hhZGluZ0NhY2hlKDApCiB7Ci0gICAgCiB9CiAKIEtSZW5kZXJpbmdQYWludFNlcnZlckdy
YWRpZW50UXVhcnR6Ojp+S1JlbmRlcmluZ1BhaW50U2VydmVyR3JhZGllbnRRdWFydHooKQpAQCAt
MjI4LDYgKzIyMCw5IEBAIHZvaWQgS1JlbmRlcmluZ1BhaW50U2VydmVyR3JhZGllbnRRdWFydHoK
ICAgICAvLyB0aGlzIGlzIGxlZ2FjeSBjb2RlLCBwcm9iYWJseSBjb3VsZCBiZSByZXdvcmtlZC4K
ICAgICBpZiAoIW1fc3RvcHNDYWNoZSkgdXBkYXRlUXVhcnR6R3JhZGllbnRTdG9wc0NhY2hlKHNl
cnZlci0+Z3JhZGllbnRTdG9wcygpKTsKICAgICAKKyAgICBpZiAoIW1fc3RvcHNDb3VudCkKKyAg
ICAgICAgTlNMb2coQCJXYXJuaW5nLCBubyBncmFkaWVudCBzdG9wcywgZ3JhZGllbnQgKCVwKSB3
aWxsIGJlIGFsbCBibGFjayEiLCB0aGlzKTsKKyAgICAKICAgICBpZiAoc2VydmVyLT50eXBlKCkg
PT0gUFNfUkFESUFMX0dSQURJRU5UKQogICAgIHsKICAgICAgICAgY29uc3QgS1JlbmRlcmluZ1Bh
aW50U2VydmVyUmFkaWFsR3JhZGllbnRRdWFydHogKnJhZGlhbCA9IHN0YXRpY19jYXN0PGNvbnN0
IEtSZW5kZXJpbmdQYWludFNlcnZlclJhZGlhbEdyYWRpZW50UXVhcnR6ICo+KHNlcnZlcik7Cklu
ZGV4OiBrY2FudmFzL2RldmljZS9xdWFydHovS1JlbmRlcmluZ1BhaW50U2VydmVyUXVhcnR6LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1NWR1N1cHBvcnQva2NhbnZhcy9kZXZpY2Uv
cXVhcnR6L0tSZW5kZXJpbmdQYWludFNlcnZlclF1YXJ0ei5oLHYKcmV0cmlldmluZyByZXZpc2lv
biAxLjMKZGlmZiAtcCAtdSAtcjEuMyBrY2FudmFzL2RldmljZS9xdWFydHovS1JlbmRlcmluZ1Bh
aW50U2VydmVyUXVhcnR6LmgKLS0tIGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9LUmVuZGVyaW5nUGFp
bnRTZXJ2ZXJRdWFydHouaAkxIFNlcCAyMDA1IDA3OjMyOjU1IC0wMDAwCTEuMworKysga2NhbnZh
cy9kZXZpY2UvcXVhcnR6L0tSZW5kZXJpbmdQYWludFNlcnZlclF1YXJ0ei5oCTYgU2VwIDIwMDUg
MDc6MTc6MTggLTAwMDAKQEAgLTY3LDcgKzY3LDcgQEAgcHVibGljOgogcHVibGljOgogICAgIC8v
IGR1ZSB0byBjIGZ1bmN0aW9ucwogICAgIFF1YXJ0ekdyYWRpZW50U3RvcCAqbV9zdG9wc0NhY2hl
OwotICAgIGludCAgICAgICAgICAgICAgICAgICAgbV9zdG9wc0NvdW50OworICAgIGludCAgICAg
ICAgICAgICAgICAgbV9zdG9wc0NvdW50OwogCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBpbnZhbGlk
YXRlQ2FjaGVzKCk7CkluZGV4OiBrY2FudmFzL2RldmljZS9xdWFydHovS1JlbmRlcmluZ1BhaW50
U2VydmVyUXVhcnR6Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0
L2tjYW52YXMvZGV2aWNlL3F1YXJ0ei9LUmVuZGVyaW5nUGFpbnRTZXJ2ZXJRdWFydHoubW0sdgpy
ZXRyaWV2aW5nIHJldmlzaW9uIDEuNApkaWZmIC1wIC11IC1yMS40IGtjYW52YXMvZGV2aWNlL3F1
YXJ0ei9LUmVuZGVyaW5nUGFpbnRTZXJ2ZXJRdWFydHoubW0KLS0tIGtjYW52YXMvZGV2aWNlL3F1
YXJ0ei9LUmVuZGVyaW5nUGFpbnRTZXJ2ZXJRdWFydHoubW0JMjIgQXVnIDIwMDUgMTA6NDU6MTQg
LTAwMDAJMS40CisrKyBrY2FudmFzL2RldmljZS9xdWFydHovS1JlbmRlcmluZ1BhaW50U2VydmVy
UXVhcnR6Lm1tCTYgU2VwIDIwMDUgMDc6MTc6MTggLTAwMDAKQEAgLTE2NSw1ICsxNjUsNSBAQCB2
b2lkIEtSZW5kZXJpbmdQYWludFNlcnZlclBhdHRlcm5RdWFydHo6CiAKIHZvaWQgS1JlbmRlcmlu
Z1BhaW50U2VydmVySW1hZ2VRdWFydHo6OmRyYXcoS1JlbmRlcmluZ0RldmljZUNvbnRleHQgKnJl
bmRlcmluZ0NvbnRleHQsIGNvbnN0IEtDYW52YXNDb21tb25BcmdzICZhcmdzLCBLQ1BhaW50VGFy
Z2V0VHlwZSB0eXBlKSBjb25zdAogewotCU5TTG9nKEAiS1JlbmRlcmluZ1BhaW50U2VydmVySW1h
Z2VRdWFydHo6OmRyYXcoKSBub3QgaW1wbGVtZW50ZWQhIik7CisgICAgLy8gRklYTUU6IE5PVCBJ
TVBMRU1FTlRFRAogfQpJbmRleDoga2RvbS9LRE9NU2V0dGluZ3MuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNT
IGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tkb20vS0RPTVNldHRpbmdzLmNwcCx2CnJldHJp
ZXZpbmcgcmV2aXNpb24gMS40CmRpZmYgLXAgLXUgLXIxLjQga2RvbS9LRE9NU2V0dGluZ3MuY3Bw
Ci0tLSBrZG9tL0tET01TZXR0aW5ncy5jcHAJMiBTZXAgMjAwNSAxMDowMjo1OSAtMDAwMAkxLjQK
KysrIGtkb20vS0RPTVNldHRpbmdzLmNwcAk2IFNlcCAyMDA1IDA3OjE3OjIwIC0wMDAwCkBAIC0y
OSw3ICsyOSw2IEBACiAjaW5jbHVkZSA8a21lc3NhZ2Vib3guaD4KICNpbmNsdWRlIDxrZ2xvYmFs
c2V0dGluZ3MuaD4KIAotI2luY2x1ZGUgPHFwYWlyLmg+CiAjaW5jbHVkZSA8cXJlZ2V4cC5oPgog
I2luY2x1ZGUgPHEzdmFsdWV2ZWN0b3IuaD4KICNpbmNsdWRlIDxxZm9udGRhdGFiYXNlLmg+CkBA
IC0zOCw2ICszNywxMSBAQAogCiB1c2luZyBuYW1lc3BhY2UgS0RPTTsKIAorUUNvbG9yIHR4dERl
ZmF1bHQoRE9NX0RFRkFVTFRfVFhUX0NPTE9SKTsKK1FDb2xvciBsbmtEZWZhdWx0KERPTV9ERUZB
VUxUX0xOS19DT0xPUik7CitRQ29sb3Igdmxua0RlZmF1bHQoRE9NX0RFRkFVTFRfVkxOS19DT0xP
Uik7CitRQ29sb3IgYmFzZURlZmF1bHQoRE9NX0RFRkFVTFRfQkFTRV9DT0xPUik7CisKIC8qKgog
ICogQGludGVybmFsCiAgKiBDb250YWlucyBhbGwgc2V0dGluZ3Mgd2hpY2ggYXJlIGJvdGggYXZh
aWxhYmxlIGdsb2JhbGx5IGFuZCBwZXItZG9tYWluCkBAIC0yOTMsMTYgKzI5NywxNiBAQCB2b2lk
IEtET01TZXR0aW5nczo6aW5pdChLQ29uZmlnICpjb25maWcsCiAgICAgewogICAgICAgICBjb25m
aWctPnNldEdyb3VwKCJHZW5lcmFsIik7IC8vIGdyb3VwIHdpbGwgYmUgcmVzdG9yZWQgYnkgY2dz
IGFueXdheQogICAgICAgICBpZihyZXNldCB8fCBjb25maWctPmhhc0tleSgiZm9yZWdyb3VuZCIp
KQotICAgICAgICAgICAgZC0+dGV4dENvbG9yID0gY29uZmlnLT5yZWFkQ29sb3JFbnRyeSgiZm9y
ZWdyb3VuZCIsICZET01fREVGQVVMVF9UWFRfQ09MT1IpOworICAgICAgICAgICAgZC0+dGV4dENv
bG9yID0gY29uZmlnLT5yZWFkQ29sb3JFbnRyeSgiZm9yZWdyb3VuZCIsICZ0eHREZWZhdWx0KTsK
IAogICAgICAgICBpZihyZXNldCB8fCBjb25maWctPmhhc0tleSgibGlua0NvbG9yIikpCi0gICAg
ICAgICAgICBkLT5saW5rQ29sb3IgPSBjb25maWctPnJlYWRDb2xvckVudHJ5KCJsaW5rQ29sb3Ii
LCAmRE9NX0RFRkFVTFRfTE5LX0NPTE9SKTsKKyAgICAgICAgICAgIGQtPmxpbmtDb2xvciA9IGNv
bmZpZy0+cmVhZENvbG9yRW50cnkoImxpbmtDb2xvciIsICZsbmtEZWZhdWx0KTsKIAogICAgICAg
ICBpZihyZXNldCB8fCBjb25maWctPmhhc0tleSgidmlzaXRlZExpbmtDb2xvciIpKQotICAgICAg
ICAgICAgZC0+dkxpbmtDb2xvciA9IGNvbmZpZy0+cmVhZENvbG9yRW50cnkoInZpc2l0ZWRMaW5r
Q29sb3IiLCAmRE9NX0RFRkFVTFRfVkxOS19DT0xPUik7CisgICAgICAgICAgICBkLT52TGlua0Nv
bG9yID0gY29uZmlnLT5yZWFkQ29sb3JFbnRyeSgidmlzaXRlZExpbmtDb2xvciIsICZ2bG5rRGVm
YXVsdCk7CiAKICAgICAgICAgaWYocmVzZXQgfHwgY29uZmlnLT5oYXNLZXkoImJhY2tncm91bmQi
KSkKLSAgICAgICAgICAgIGQtPmJhc2VDb2xvciA9IGNvbmZpZy0+cmVhZENvbG9yRW50cnkoImJh
Y2tncm91bmQiLCAmRE9NX0RFRkFVTFRfQkFTRV9DT0xPUik7CisgICAgICAgICAgICBkLT5iYXNl
Q29sb3IgPSBjb25maWctPnJlYWRDb2xvckVudHJ5KCJiYWNrZ3JvdW5kIiwgJmJhc2VEZWZhdWx0
KTsKICAgICB9CiAKICAgICBpZihyZXNldCB8fCBjb25maWctPmhhc0dyb3VwKCJKYXZhL0phdmFT
Y3JpcHQgU2V0dGluZ3MiKSkKQEAgLTczOSw3ICs3NDMsNyBAQCBLRE9NU2V0dGluZ3M6OktKYXZh
U2NyaXB0QWR2aWNlIEtET01TZXR0CiB7CiAgICAgS0phdmFTY3JpcHRBZHZpY2UgcmV0ID0gS0ph
dmFTY3JpcHREdW5ubzsKIAotICAgIGlmKCFzdHIpCisgICAgaWYoc3RyLmlzTnVsbCgpKQogICAg
ICAgICByZXQgPSBLSmF2YVNjcmlwdER1bm5vOwogCiAgICAgaWYoc3RyLmxvd2VyKCkgPT0gUVN0
cmluZzo6ZnJvbUxhdGluMSgiYWNjZXB0IikpCkluZGV4OiBrZG9tL1NoYXJlZC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tkb20vU2hhcmVkLmgsdgpyZXRyaWV2
aW5nIHJldmlzaW9uIDEuNQpkaWZmIC1wIC11IC1yMS41IGtkb20vU2hhcmVkLmgKLS0tIGtkb20v
U2hhcmVkLmgJMSBTZXAgMjAwNSAwNzozMjo1NyAtMDAwMAkxLjUKKysrIGtkb20vU2hhcmVkLmgJ
NiBTZXAgMjAwNSAwNzoxNzoyMCAtMDAwMApAQCAtNDMsMTIgKzQzLDkgQEAgbmFtZXNwYWNlIEtE
T00KICAgICB0ZW1wbGF0ZTxjbGFzcyBUPgogICAgIGlubGluZSB2b2lkIEtET01fU0FGRV9TRVQo
VCAqJmEsIFQgKmIpCiAgICAgewotICAgICAgICBpZihhICE9IGIpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGlmKGEpIGEtPmRlcmVmKCk7Ci0gICAgICAgICAgICBhID0gYjsKLSAgICAgICAgICAg
IGlmKGEpIGEtPnJlZigpOwotICAgICAgICB9CisgICAgICAgIGlmIChiKSBiLT5yZWYoKTsKKyAg
ICAgICAgaWYgKGEpIGEtPmRlcmVmKCk7CisgICAgICAgIGEgPSBiOwogICAgIH0KIH07CiAKSW5k
ZXg6IGtkb20va2RvbS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0
L2tkb20va2RvbS5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjUKZGlmZiAtcCAtdSAtcjEuNSBr
ZG9tL2tkb20uaAotLS0ga2RvbS9rZG9tLmgJMSBTZXAgMjAwNSAwNzozMjo1NyAtMDAwMAkxLjUK
KysrIGtkb20va2RvbS5oCTYgU2VwIDIwMDUgMDc6MTc6MjAgLTAwMDAKQEAgLTM5LDQ5ICszOSw0
OSBAQCBuYW1lc3BhY2UgS0RPTQogICAgICAqLwogICAgIGVudW0gTm9kZVR5cGUKICAgICB7Ci0g
ICAgICAgIEVMRU1FTlRfTk9ERSA9IDEsCi0gICAgICAgIEFUVFJJQlVURV9OT0RFID0gMiwKLSAg
ICAgICAgVEVYVF9OT0RFID0gMywKLSAgICAgICAgQ0RBVEFfU0VDVElPTl9OT0RFID0gNCwKLSAg
ICAgICAgRU5USVRZX1JFRkVSRU5DRV9OT0RFID0gNSwKLSAgICAgICAgRU5USVRZX05PREUgPSA2
LAorICAgICAgICBFTEVNRU5UX05PREUgICAgICAgICAgICAgICAgPSAxLAorICAgICAgICBBVFRS
SUJVVEVfTk9ERSAgICAgICAgICAgICAgPSAyLAorICAgICAgICBURVhUX05PREUgICAgICAgICAg
ICAgICAgICAgPSAzLAorICAgICAgICBDREFUQV9TRUNUSU9OX05PREUgICAgICAgICAgPSA0LAor
ICAgICAgICBFTlRJVFlfUkVGRVJFTkNFX05PREUgICAgICAgPSA1LAorICAgICAgICBFTlRJVFlf
Tk9ERSAgICAgICAgICAgICAgICAgPSA2LAogICAgICAgICBQUk9DRVNTSU5HX0lOU1RSVUNUSU9O
X05PREUgPSA3LAotICAgICAgICBDT01NRU5UX05PREUgPSA4LAotICAgICAgICBET0NVTUVOVF9O
T0RFID0gOSwKLSAgICAgICAgRE9DVU1FTlRfVFlQRV9OT0RFID0gMTAsCi0gICAgICAgIERPQ1VN
RU5UX0ZSQUdNRU5UX05PREUgPSAxMSwKLSAgICAgICAgTk9UQVRJT05fTk9ERSA9IDEyCisgICAg
ICAgIENPTU1FTlRfTk9ERSAgICAgICAgICAgICAgICA9IDgsCisgICAgICAgIERPQ1VNRU5UX05P
REUgICAgICAgICAgICAgICA9IDksCisgICAgICAgIERPQ1VNRU5UX1RZUEVfTk9ERSAgICAgICAg
ICA9IDEwLAorICAgICAgICBET0NVTUVOVF9GUkFHTUVOVF9OT0RFICAgICAgPSAxMSwKKyAgICAg
ICAgTk9UQVRJT05fTk9ERSAgICAgICAgICAgICAgID0gMTIKICAgICB9OwogCiAgICAgZW51bSBF
eGNlcHRpb25Db2RlCiAgICAgewotICAgICAgICBJTkRFWF9TSVpFX0VSUiA9IDEsCi0gICAgICAg
IERPTVNUUklOR19TSVpFX0VSUiA9IDIsCi0gICAgICAgIEhJRVJBUkNIWV9SRVFVRVNUX0VSUiA9
IDMsCi0gICAgICAgIFdST05HX0RPQ1VNRU5UX0VSUiA9IDQsCi0gICAgICAgIElOVkFMSURfQ0hB
UkFDVEVSX0VSUiA9IDUsCi0gICAgICAgIE5PX0RBVEFfQUxMT1dFRF9FUlIgPSA2LAorICAgICAg
ICBJTkRFWF9TSVpFX0VSUiAgICAgICAgICAgICAgPSAxLAorICAgICAgICBET01TVFJJTkdfU0la
RV9FUlIgICAgICAgICAgPSAyLAorICAgICAgICBISUVSQVJDSFlfUkVRVUVTVF9FUlIgICAgICAg
PSAzLAorICAgICAgICBXUk9OR19ET0NVTUVOVF9FUlIgICAgICAgICAgPSA0LAorICAgICAgICBJ
TlZBTElEX0NIQVJBQ1RFUl9FUlIgICAgICAgPSA1LAorICAgICAgICBOT19EQVRBX0FMTE9XRURf
RVJSICAgICAgICAgPSA2LAogICAgICAgICBOT19NT0RJRklDQVRJT05fQUxMT1dFRF9FUlIgPSA3
LAotICAgICAgICBOT1RfRk9VTkRfRVJSID0gOCwKLSAgICAgICAgTk9UX1NVUFBPUlRFRF9FUlIg
PSA5LAotICAgICAgICBJTlVTRV9BVFRSSUJVVEVfRVJSID0gMTAsCi0gICAgICAgIElOVkFMSURf
U1RBVEVfRVJSID0gMTEsCi0gICAgICAgIFNZTlRBWF9FUlIgPSAxMiwKLSAgICAgICAgSU5WQUxJ
RF9NT0RJRklDQVRJT05fRVJSID0gMTMsCi0gICAgICAgIE5BTUVTUEFDRV9FUlIgPSAxNCwKLSAg
ICAgICAgSU5WQUxJRF9BQ0NFU1NfRVJSID0gMTUsCi0gICAgICAgIFZBTElEQVRJT05fRVJSID0g
MTYsICAgIC8vIERPTTMKLSAgICAgICAgVFlQRV9NSVNNQVRDSF9FUlIgPSAxNyAgICAvLyBET00z
CisgICAgICAgIE5PVF9GT1VORF9FUlIgICAgICAgICAgICAgICA9IDgsCisgICAgICAgIE5PVF9T
VVBQT1JURURfRVJSICAgICAgICAgICA9IDksCisgICAgICAgIElOVVNFX0FUVFJJQlVURV9FUlIg
ICAgICAgICA9IDEwLAorICAgICAgICBJTlZBTElEX1NUQVRFX0VSUiAgICAgICAgICAgPSAxMSwK
KyAgICAgICAgU1lOVEFYX0VSUiAgICAgICAgICAgICAgICAgID0gMTIsCisgICAgICAgIElOVkFM
SURfTU9ESUZJQ0FUSU9OX0VSUiAgICA9IDEzLAorICAgICAgICBOQU1FU1BBQ0VfRVJSICAgICAg
ICAgICAgICAgPSAxNCwKKyAgICAgICAgSU5WQUxJRF9BQ0NFU1NfRVJSICAgICAgICAgID0gMTUs
CisgICAgICAgIFZBTElEQVRJT05fRVJSICAgICAgICAgICAgICA9IDE2LCAgIC8vIERPTTMKKyAg
ICAgICAgVFlQRV9NSVNNQVRDSF9FUlIgICAgICAgICAgID0gMTcgICAgLy8gRE9NMwogICAgIH07
CiAKICAgICBlbnVtIERvY3VtZW50UG9zaXRpb24KICAgICB7Ci0gICAgICAgIERPQ1VNRU5UX1BP
U0lUSU9OX0RJU0NPTk5FQ1RFRCAgICAgICAgICAgICAgICA9IDB4MDEsCi0gICAgICAgIERPQ1VN
RU5UX1BPU0lUSU9OX1BSRUNFRElORyAgICAgICAgICAgICAgICAgICAgPSAweDAyLAotICAgICAg
ICBET0NVTUVOVF9QT1NJVElPTl9GT0xMT1dJTkcgICAgICAgICAgICAgICAgICAgID0gMHgwNCwK
LSAgICAgICAgRE9DVU1FTlRfUE9TSVRJT05fQ09OVEFJTlMgICAgICAgICAgICAgICAgICAgID0g
MHgwOCwKLSAgICAgICAgRE9DVU1FTlRfUE9TSVRJT05fQ09OVEFJTkVEX0JZICAgICAgICAgICAg
ICAgID0gMHgxMCwKLSAgICAgICAgRE9DVU1FTlRfUE9TSVRJT05fSU1QTEVNRU5UQVRJT05fU1BF
Q0lGSUMgICAgPSAweDIwCisgICAgICAgIERPQ1VNRU5UX1BPU0lUSU9OX0RJU0NPTk5FQ1RFRCAg
ICAgICAgICAgICAgPSAweDAxLAorICAgICAgICBET0NVTUVOVF9QT1NJVElPTl9QUkVDRURJTkcg
ICAgICAgICAgICAgICAgID0gMHgwMiwKKyAgICAgICAgRE9DVU1FTlRfUE9TSVRJT05fRk9MTE9X
SU5HICAgICAgICAgICAgICAgICA9IDB4MDQsCisgICAgICAgIERPQ1VNRU5UX1BPU0lUSU9OX0NP
TlRBSU5TICAgICAgICAgICAgICAgICAgPSAweDA4LAorICAgICAgICBET0NVTUVOVF9QT1NJVElP
Tl9DT05UQUlORURfQlkgICAgICAgICAgICAgID0gMHgxMCwKKyAgICAgICAgRE9DVU1FTlRfUE9T
SVRJT05fSU1QTEVNRU5UQVRJT05fU1BFQ0lGSUMgICA9IDB4MjAKICAgICB9OwogCiAgICAgZW51
bSBEZXJpdmF0aW9uTWV0aG9kcwpAQCAtOTQsMjQgKzk0LDI0IEBAIG5hbWVzcGFjZSBLRE9NCiAg
ICAgCiAgICAgZW51bQogICAgIHsKLSAgICAgICAgRkVBVFVSRV9DQU5PTklDQUxfRk9STSAgICAg
ICAgICAgICAgICAgICAgPSAweDAwMDAwMSwKLSAgICAgICAgRkVBVFVSRV9DREFUQV9TRUNUSU9O
UyAgICAgICAgICAgICAgICAgICAgPSAweDAwMDAwMiwKKyAgICAgICAgRkVBVFVSRV9DQU5PTklD
QUxfRk9STSAgICAgICAgICAgICAgICAgID0gMHgwMDAwMDEsCisgICAgICAgIEZFQVRVUkVfQ0RB
VEFfU0VDVElPTlMgICAgICAgICAgICAgICAgICA9IDB4MDAwMDAyLAogICAgICAgICBGRUFUVVJF
X0NPTU1FTlRTICAgICAgICAgICAgICAgICAgICAgICAgPSAweDAwMDAwNCwKLSAgICAgICAgRkVB
VFVSRV9EQVRBVFlQRV9OT1JNQUxJWkFUSU9OICAgICAgICAgICAgPSAweDAwMDAwOCwKKyAgICAg
ICAgRkVBVFVSRV9EQVRBVFlQRV9OT1JNQUxJWkFUSU9OICAgICAgICAgID0gMHgwMDAwMDgsCiAg
ICAgICAgIEZFQVRVUkVfRU5USVRJRVMgICAgICAgICAgICAgICAgICAgICAgICA9IDB4MDAwMDEw
LAotICAgICAgICBGRUFUVVJFX1dFTExfRk9STUVEICAgICAgICAgICAgICAgICAgICAgICAgPSAw
eDAwMDAyMCwKLSAgICAgICAgRkVBVFVSRV9OQU1FU1BBQ0VTICAgICAgICAgICAgICAgICAgICAg
ICAgPSAweDAwMDA0MCwKLSAgICAgICAgRkVBVFVSRV9OQU1FU1BBQ0VfREVDTEFSQVRJT05TICAg
ICAgICAgICAgPSAweDAwMDA4MCwKKyAgICAgICAgRkVBVFVSRV9XRUxMX0ZPUk1FRCAgICAgICAg
ICAgICAgICAgICAgID0gMHgwMDAwMjAsCisgICAgICAgIEZFQVRVUkVfTkFNRVNQQUNFUyAgICAg
ICAgICAgICAgICAgICAgICA9IDB4MDAwMDQwLAorICAgICAgICBGRUFUVVJFX05BTUVTUEFDRV9E
RUNMQVJBVElPTlMgICAgICAgICAgPSAweDAwMDA4MCwKICAgICAgICAgRkVBVFVSRV9OT1JNQUxJ
WkVfQ0hBUkFDVEVSUyAgICAgICAgICAgID0gMHgwMDAxMDAsCiAgICAgICAgIEZFQVRVUkVfU1BM
SVRfQ0RBVEFfU0VDVElPTlMgICAgICAgICAgICA9IDB4MDAwMjAwLAogICAgICAgICBGRUFUVVJF
X1ZBTElEQVRFICAgICAgICAgICAgICAgICAgICAgICAgPSAweDAwMDQwMCwKLSAgICAgICAgRkVB
VFVSRV9WQUxJREFURV9JRl9TQ0hFTUEgICAgICAgICAgICAgICAgPSAweDAwMDgwMCwKLSAgICAg
ICAgRkVBVFVSRV9XSElURVNQQUNFX0lOX0VMRU1FTlRfQ09OVEVOVCAgICA9IDB4MDAxMDAwLAot
ICAgICAgICBGRUFUVVJFX0NIRUNLX0NIQVJBQ1RFUl9OT1JNQUxJWkFUSU9OICAgID0gMHgwMDIw
MDAsCisgICAgICAgIEZFQVRVUkVfVkFMSURBVEVfSUZfU0NIRU1BICAgICAgICAgICAgICA9IDB4
MDAwODAwLAorICAgICAgICBGRUFUVVJFX1dISVRFU1BBQ0VfSU5fRUxFTUVOVF9DT05URU5UICAg
PSAweDAwMTAwMCwKKyAgICAgICAgRkVBVFVSRV9DSEVDS19DSEFSQUNURVJfTk9STUFMSVpBVElP
TiAgID0gMHgwMDIwMDAsCiAKICAgICAgICAgLy8gTFNQYXJzZXIgc3BlY2lmaWMKLSAgICAgICAg
RkVBVFVSRV9DSEFSU0VUX09WRVJSSURFU19YTUxfRU5DT0RJTkcgICAgPSAweDAwNDAwMCwKLSAg
ICAgICAgRkVBVFVSRV9ESVNBTExPV19ET0NUWVBFICAgICAgICAgICAgICAgID0gMHgwMDgwMDAs
CisgICAgICAgIEZFQVRVUkVfQ0hBUlNFVF9PVkVSUklERVNfWE1MX0VOQ09ESU5HICAgPSAweDAw
NDAwMCwKKyAgICAgICAgRkVBVFVSRV9ESVNBTExPV19ET0NUWVBFICAgICAgICAgICAgICAgICA9
IDB4MDA4MDAwLAogICAgICAgICBGRUFUVVJFX0lHTk9SRV9VTktOT1dOX0NEICAgICAgICAgICAg
ICAgID0gMHgwMTAwMDAsCiAgICAgICAgIEZFQVRVUkVfU1VQUE9SVEVEX01FRElBX1RZUEVfT05M
WSAgICAgICAgPSAweDAyMDAwMCwKIApJbmRleDoga2RvbS9iaW5kaW5ncy9JRExQYXJzZXIucG0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1NWR1N1cHBvcnQva2RvbS9iaW5kaW5ncy9J
RExQYXJzZXIucG0sdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMQpkaWZmIC1wIC11IC1yMS4xIGtk
b20vYmluZGluZ3MvSURMUGFyc2VyLnBtCi0tLSBrZG9tL2JpbmRpbmdzL0lETFBhcnNlci5wbQky
NSBBdWcgMjAwNSAwODoxNjowNiAtMDAwMAkxLjEKKysrIGtkb20vYmluZGluZ3MvSURMUGFyc2Vy
LnBtCTYgU2VwIDIwMDUgMDc6MTc6MjAgLTAwMDAKQEAgLTQyLDcgKzQyLDcgQEAgc3ViIFBhcnNl
CiAJbXkgJHVybCA9IHNoaWZ0OwogCiAJcHJpbnQgIiB8ICoqKiBTdGFydGluZyB0byBwYXJzZSAk
dXJsLi4uXG4gfFxuIiBpZighJGJlUXVpZXQpOwotCW9wZW4oRklMRSwgIjwkdXJsIikgfHwgZGll
ICJDb3VsZG4ndCBvcGVuIHJlcXVlc3RlZCBmaWxlISI7CisJb3BlbihGSUxFLCAiPCR1cmwiKSB8
fCBkaWUgIkNvdWxkbid0IG9wZW4gcmVxdWVzdGVkIGZpbGUgKGZpbGU6ICR1cmwpISI7CiAJbXkg
QGRvY3VtZW50Q29udGVudCA9IDxGSUxFPjsKIAljbG9zZShGSUxFKTsKIApAQCAtMTg3LDcgKzE4
NywxMiBAQCBzdWIgUGFyc2VJbnRlcmZhY2UKIAkJCQlteSAkYXR0cmlidXRlUHRyRmxhZyA9IChk
ZWZpbmVkKCQyKSA/ICQyIDogIiAiKTsgY2hvcCgkYXR0cmlidXRlUHRyRmxhZyk7CiAJCQkJbXkg
JGF0dHJpYnV0ZURhdGFUeXBlID0gKGRlZmluZWQoJDMpID8gJDMgOiBkaWUoIlBhcnNpbmcgZXJy
b3IhXG5Tb3VyY2U6XG4kbGluZVxuKSIpKTsKIAkJCQlteSAkYXR0cmlidXRlRGF0YU5hbWUgPSAo
ZGVmaW5lZCgkNCkgPyAkNCA6IGRpZSgiUGFyc2luZyBlcnJvciFcblNvdXJjZTpcbiRsaW5lXG4p
IikpOworCQkJCQkKKwkJCQkoJycgPX4gL14vKTsgIyBSZXNldCB2YXJpYWJsZXMgbmVlZGVkIGZv
ciByZWdleHAgbWF0Y2hpbmcKIAkJCQkKKwkJCQkkbGluZSA9fiAvJElETFN0cnVjdHVyZTo6cmFp
c2VzU2VsZWN0b3IvOworCQkJCW15ICRhdHRyaWJ1dGVFeGNlcHRpb24gPSAoZGVmaW5lZCgkMSkg
PyAkMSA6ICIiKTsKKwkJCQogCQkJCW15ICRuZXdEYXRhTm9kZSA9IG5ldyBkb21BdHRyaWJ1dGUo
KTsKIAkJCQkkbmV3RGF0YU5vZGUtPnR5cGUoJGF0dHJpYnV0ZVR5cGUpOwogCQkJCSRuZXdEYXRh
Tm9kZS0+c2lnbmF0dXJlKG5ldyBkb21TaWduYXR1cmUoKSk7CkBAIC0xOTksOSArMjA0LDEzIEBA
IHN1YiBQYXJzZUludGVyZmFjZQogCQkJCW15ICRhcnJheVJlZiA9ICRkYXRhTm9kZS0+YXR0cmli
dXRlczsKIAkJCQlwdXNoKEAkYXJyYXlSZWYsICRuZXdEYXRhTm9kZSk7CiAKLQkJCQlwcmludCAi
ICB8ICB8PiAgQXR0cmlidXRlOyBUWVBFIFwiJGF0dHJpYnV0ZVR5cGVcIiBEQVRBIE5BTUUgXCIk
YXR0cmlidXRlRGF0YU5hbWVcIiBEQVRBIFRZUEUgXCIkYXR0cmlidXRlRGF0YVR5cGVcIiBQVFIg
RkxBRyBcIiRhdHRyaWJ1dGVQdHJGbGFnXCJcbiIgaWYoISRiZVF1aWV0KTsKKwkJCQlwcmludCAi
ICB8ICB8PiAgQXR0cmlidXRlOyBUWVBFIFwiJGF0dHJpYnV0ZVR5cGVcIiBEQVRBIE5BTUUgXCIk
YXR0cmlidXRlRGF0YU5hbWVcIiBEQVRBIFRZUEUgXCIkYXR0cmlidXRlRGF0YVR5cGVcIiBFWENF
UFRJT04/IFwiJGF0dHJpYnV0ZUV4Y2VwdGlvblwiIFBUUiBGTEFHIFwiJGF0dHJpYnV0ZVB0ckZs
YWdcIlxuIiBpZighJGJlUXVpZXQpOworCisJCQkJJGF0dHJpYnV0ZUV4Y2VwdGlvbiA9fiBzL1xz
Ky8vZzsKKwkJCQlAeyRuZXdEYXRhTm9kZS0+cmFpc2VzRXhjZXB0aW9uc30gPSBzcGxpdCgvLC8s
ICRhdHRyaWJ1dGVFeGNlcHRpb24pOwogCQkJfSBlbHNpZigoJGxpbmUgIX4gcy9eXHMqJC8vZykg
YW5kICgkbGluZSAhfiAvXlxzK2NvbnN0LykpIHsKIAkJCQkkbGluZSA9fiAvJElETFN0cnVjdHVy
ZTo6aW50ZXJmYWNlTWV0aG9kU2VsZWN0b3IvOworCiAJCQkJbXkgJG1ldGhvZFB0ckZsYWcgPSAo
ZGVmaW5lZCgkMSkgPyAkMSA6ICIgIik7IGNob3AoJG1ldGhvZFB0ckZsYWcpOwogCQkJCW15ICRt
ZXRob2RUeXBlID0gKGRlZmluZWQoJDIpID8gJDIgOiBkaWUoIlBhcnNpbmcgZXJyb3IhXG5Tb3Vy
Y2U6XG4kbGluZVxuKSIpKTsKIAkJCQlteSAkbWV0aG9kTmFtZSA9IChkZWZpbmVkKCQzKSA/ICQz
IDogZGllKCJQYXJzaW5nIGVycm9yIVxuU291cmNlOlxuJGxpbmVcbikiKSk7CkBAIC0yMDksNyAr
MjE4LDcgQEAgc3ViIFBhcnNlSW50ZXJmYWNlCiAJCQkJCiAJCQkJKCcnID1+IC9eLyk7ICMgUmVz
ZXQgdmFyaWFibGVzIG5lZWRlZCBmb3IgcmVnZXhwIG1hdGNoaW5nCiAJCQkJCi0JCQkJJGxpbmUg
PX4gLyRJRExTdHJ1Y3R1cmU6OmludGVyZmFjZUV4Y2VwdGlvblNlbGVjdG9yLzsKKwkJCQkkbGlu
ZSA9fiAvJElETFN0cnVjdHVyZTo6cmFpc2VzU2VsZWN0b3IvOwogCQkJCW15ICRtZXRob2RFeGNl
cHRpb24gPSAoZGVmaW5lZCgkMSkgPyAkMSA6ICIiKTsKIAogCQkJCW15ICRuZXdEYXRhTm9kZSA9
IG5ldyBkb21GdW5jdGlvbigpOwpAQCAtMjIxLDYgKzIzMCw5IEBAIHN1YiBQYXJzZUludGVyZmFj
ZQogCiAJCQkJcHJpbnQgIiAgfCAgfC0gIE1ldGhvZDsgVFlQRSBcIiRtZXRob2RUeXBlXCIgTkFN
RSBcIiRtZXRob2ROYW1lXCIgRVhDRVBUSU9OPyBcIiRtZXRob2RFeGNlcHRpb25cIiBQVFIgRkxB
RyBcIiRtZXRob2RQdHJGbGFnXCJcbiIgaWYoISRiZVF1aWV0KTsKIAorCQkJCSRtZXRob2RFeGNl
cHRpb24gPX4gcy9ccysvL2c7CisJCQkJQHskbmV3RGF0YU5vZGUtPnJhaXNlc0V4Y2VwdGlvbnN9
ID0gc3BsaXQoLywvLCAkbWV0aG9kRXhjZXB0aW9uKTsKKwogCQkJCW15IEBwYXJhbXMgPSBzcGxp
dCgvLC8sICRtZXRob2RTaWduYXR1cmUpOwogCQkJCWZvcmVhY2goQHBhcmFtcykgewogCQkJCQlt
eSAkbGluZSA9ICRfOwpJbmRleDoga2RvbS9iaW5kaW5ncy9JRExTdHJ1Y3R1cmUucG0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1NWR1N1cHBvcnQva2RvbS9iaW5kaW5ncy9JRExTdHJ1
Y3R1cmUucG0sdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMQpkaWZmIC1wIC11IC1yMS4xIGtkb20v
YmluZGluZ3MvSURMU3RydWN0dXJlLnBtCi0tLSBrZG9tL2JpbmRpbmdzL0lETFN0cnVjdHVyZS5w
bQkyNSBBdWcgMjAwNSAwODoxNjowNiAtMDAwMAkxLjEKKysrIGtkb20vYmluZGluZ3MvSURMU3Ry
dWN0dXJlLnBtCTYgU2VwIDIwMDUgMDc6MTc6MjAgLTAwMDAKQEAgLTE1LDY3ICsxNSw3MiBAQCBz
dHJ1Y3QoIGlkbERvY3VtZW50ID0+IHsKIAogIyBVc2VkIHRvIHJlcHJlc2VudCAnaW50ZXJmYWNl
JyAvICdleGNlcHRpb24nIGJsb2Nrcwogc3RydWN0KCBkb21DbGFzcyA9PiB7Ci0JCW5hbWUgPT4g
JyQnLAkJIyBDbGFzcyBpZGVudGlmaWVyICh3aXRob3V0IG1vZHVsZSkKLQkJcGFyZW50cyA9PiAn
QCcsCQkjIExpc3Qgb2Ygc3RyaW5ncwotCQljb25zdGFudHMgPT4gJ0AnLAkjIExpc3Qgb2YgJ2Rv
bUNvbnN0YW50JwotCQlmdW5jdGlvbnMgPT4gJ0AnLAkjIExpc3Qgb2YgJ2RvbUZ1bmN0aW9uJwot
CQlhdHRyaWJ1dGVzID0+ICdAJywJIyBMaXN0IG9mICdkb21BdHRyaWJ1dGUnCi0JCWRvY3VtZW50
YXRpb24gPT4gJyQnLAorCQluYW1lID0+ICckJywJCQkjIENsYXNzIGlkZW50aWZpZXIgKHdpdGhv
dXQgbW9kdWxlKQorCQlwYXJlbnRzID0+ICdAJywJCQkjIExpc3Qgb2Ygc3RyaW5ncworCQljb25z
dGFudHMgPT4gJ0AnLAkJIyBMaXN0IG9mICdkb21Db25zdGFudCcKKwkJZnVuY3Rpb25zID0+ICdA
JywJCSMgTGlzdCBvZiAnZG9tRnVuY3Rpb24nCisJCWF0dHJpYnV0ZXMgPT4gJ0AnLAkJIyBMaXN0
IG9mICdkb21BdHRyaWJ1dGUnCisJCWRvY3VtZW50YXRpb24gPT4gJyQnLAkjIEV4dHJhY3RlZCBm
cm9tIFhNTCBmaWxlLgogCiAJCSMgU3BlY2lhbCBjYXNlcyBoZXJlIQotCQknbm9EUHRyRmxhZycg
PT4gJyQnCSMgRm9yY2VzIHRoZSBjb2RlIGdlbmVyYXRvciB0byBub3QgZ2VuZXJhdGUKLQkJCQkJ
CQkjIGEgZC1wdHIgZm9yIHRoaXMgYmFzZSBjbGFzcyAob25seSB1c2Ugd2l0aCBzdWNoISkKKwkJ
J25vRFB0ckZsYWcnID0+ICckJwkJIyBGb3JjZXMgdGhlIGNwcCBjb2RlIGdlbmVyYXRvciB0byBu
b3QgZ2VuZXJhdGUKKwkJCQkJCQkJIyBhIGQtcHRyIGZvciB0aGlzIGJhc2UgY2xhc3MgKG9ubHkg
dXNlIHdpdGggc3VjaCEpCiB9KTsKIAogIyBVc2VkIHRvIHJlcHJlc2VudCBkb21DbGFzcyBjb250
ZW50cyAobmFtZSBvZiBtZXRob2QsIHNpZ25hdHVyZSkKIHN0cnVjdCggZG9tRnVuY3Rpb24gPT4g
ewotCQlzaWduYXR1cmUgPT4gJyQnLAkjIFJldHVybiB0eXBlL09iamVjdCBuYW1lL1B0ckZsYWcK
LQkJcGFyYW1ldGVycyA9PiAnQCcsCSMgTGlzdCBvZiAnZG9tU2lnbmF0dXJlJwotCQlkb2N1bWVu
dGF0aW9uID0+ICckJwotfSk7Ci0KLSMgVXNlZCB0byByZXByZXNlbnQgYSBtYXAgb2YgJ3Zhcmlh
YmxlIG5hbWUnIDwtPiAndmFyaWFibGUgdHlwZScKLXN0cnVjdCggZG9tU2lnbmF0dXJlID0+IHsK
LQkJbmFtZSA9PiAnJCcsCQkjIFZhcmlhYmxlIG5hbWUKLQkJdHlwZSA9PiAnJCcsCQkjIFZhcmlh
YmxlIHR5cGUKLQkJaGFzUHRyRmxhZyA9PiAnJCcsCSMgUHRyICgqKSBmbGFnPwotCQlkb2N1bWVu
dGF0aW9uID0+ICckJworCQlzaWduYXR1cmUgPT4gJyQnLAkJIyBSZXR1cm4gdHlwZS9PYmplY3Qg
bmFtZS9QdHJGbGFnCisJCXBhcmFtZXRlcnMgPT4gJ0AnLAkJIyBMaXN0IG9mICdkb21TaWduYXR1
cmUnCisJCWRvY3VtZW50YXRpb24gPT4gJyQnLAkjIEV4dHJhY3RlZCBmcm9tIFhNTCBmaWxlLgor
CQlyYWlzZXNFeGNlcHRpb25zID0+ICdAJwkjIFBvc3NpYmx5IHJhaXNlZCBleGNlcHRpb25zLgog
fSk7CiAKICMgVXNlZCB0byByZXByZXNlbnQgZG9tQ2xhc3MgY29udGVudHMgKG5hbWUgb2YgbWV0
aG9kLCBzaWduYXR1cmUpCiBzdHJ1Y3QoIGRvbUF0dHJpYnV0ZSA9PiB7Ci0JCXR5cGUgPT4gJyQn
LAkJCQkjIEF0dHJpYnV0ZSB0eXBlIChpbmNsdWRpbmcgbmFtZXNwYWNlKQotCQlzaWduYXR1cmUg
PT4gJyQnLAkJCSMgQXR0cmlidXRlIHNpZ25hdHVyZQotCQlleGNlcHRpb25OYW1lID0+ICckJywJ
CSMgTmFtZSBvZiBleGNlcHRpb24KLQkJZXhjZXB0aW9uRG9jdW1lbnRhdGlvbiA9PiAnQCcsICMg
RG9jdW1lbnRhdGlvbiBwZXIgZXhjZXB0aW9uCi0JCWRvY3VtZW50YXRpb24gPT4gJ0AnCisJCXR5
cGUgPT4gJyQnLAkJCQkJIyBBdHRyaWJ1dGUgdHlwZSAoaW5jbHVkaW5nIG5hbWVzcGFjZSkKKwkJ
c2lnbmF0dXJlID0+ICckJywJCQkJIyBBdHRyaWJ1dGUgc2lnbmF0dXJlCisJCWV4Y2VwdGlvbk5h
bWUgPT4gJyQnLAkJCSMgTmFtZSBvZiBleGNlcHRpb24KKwkJZXhjZXB0aW9uRG9jdW1lbnRhdGlv
biA9PiAnQCcsCSMgRG9jdW1lbnRhdGlvbiBwZXIgZXhjZXB0aW9uIChmcm9tIFhNTCBmaWxlKQor
CQlkb2N1bWVudGF0aW9uID0+ICdAJywJCQkjIEV4dHJhY3RlZCBmcm9tIFhNTCBmaWxlLgorCQly
YWlzZXNFeGNlcHRpb25zID0+ICdAJwkJCSMgUG9zc2libHkgcmFpc2VkIGV4Y2VwdGlvbnMuCit9
KTsKKworIyBVc2VkIHRvIHJlcHJlc2VudCBhIG1hcCBvZiAndmFyaWFibGUgbmFtZScgPC0+ICd2
YXJpYWJsZSB0eXBlJworc3RydWN0KCBkb21TaWduYXR1cmUgPT4geworCQluYW1lID0+ICckJywJ
CQkjIFZhcmlhYmxlIG5hbWUKKwkJdHlwZSA9PiAnJCcsCQkJIyBWYXJpYWJsZSB0eXBlCisJCWhh
c1B0ckZsYWcgPT4gJyQnLAkJIyBQdHIgKCopIGZsYWc/CisJCWRvY3VtZW50YXRpb24gPT4gJyQn
CSMgRXh0cmFjdGVkIGZyb20gWE1MIGZpbGUuCiB9KTsKIAogIyBVc2VkIHRvIHJlcHJlc2VudCBz
dHJpbmcgY29uc3RhbnRzCiBzdHJ1Y3QoIGRvbUNvbnN0YW50ID0+IHsKLQkJbmFtZSA9PiAnJCcs
CSMgRE9NIENvbnN0YW50IGlkZW50aWZpZXIKLQkJdHlwZSA9PiAnJCcsCSMgVHlwZSBvZiBkYXRh
Ci0JCXZhbHVlID0+ICckJywJIyBDb25zdGFudCB2YWx1ZQotCQlkb2N1bWVudGF0aW9uID0+ICck
JworCQluYW1lID0+ICckJywJCQkjIERPTSBDb25zdGFudCBpZGVudGlmaWVyCisJCXR5cGUgPT4g
JyQnLAkJCSMgVHlwZSBvZiBkYXRhCisJCXZhbHVlID0+ICckJywJCQkjIENvbnN0YW50IHZhbHVl
CisJCWRvY3VtZW50YXRpb24gPT4gJyQnCSMgRXh0cmFjdGVkIGZyb20gWE1MIGZpbGUuCiB9KTsK
IAogIyBIZWxwZXJzCi0kaWRsSWQgPSAnW2EtekEtWjAtOV0nOwkJCSMgR2VuZXJpYyBpZGVudGlm
aWVyCi0kaWRsSWROcyA9ICdbYS16QS1aMC05Ol0nOwkJIyBHZW5lcmljIGlkZW50aWZpZXIgaW5j
bHVkaW5nIG5hbWVzcGFjZQotJGlkbFR5cGUgPSAnW2EtekEtWjAtOV9dJzsJCSMgR2VuZXJpYyB0
eXBlLyJ2YWx1ZSBzdHJpbmciIGlkZW50aWZpZXIKLSRpZGxEYXRhVHlwZSA9ICdbYS16QS1aMC05
XCBdJzsgIyBHZW5lcmljIGRhdGEgdHlwZSBpZGVudGlmaWVyCiskaWRsSWQgPSAnW2EtekEtWjAt
OV0nOwkJCQkjIEdlbmVyaWMgaWRlbnRpZmllcgorJGlkbElkTnMgPSAnW2EtekEtWjAtOTpdJzsJ
CQkjIEdlbmVyaWMgaWRlbnRpZmllciBpbmNsdWRpbmcgbmFtZXNwYWNlCiskaWRsSWROc0xpc3Qg
PSAnW2EtekEtWjAtOTosXCBdJzsJIyBMaXN0IG9mIEdlbmVyaWMgaWRlbnRpZmllcnMgaW5jbHVk
aW5nIG5hbWVzcGFjZQorCiskaWRsVHlwZSA9ICdbYS16QS1aMC05X10nOwkJCSMgR2VuZXJpYyB0
eXBlLyJ2YWx1ZSBzdHJpbmciIGlkZW50aWZpZXIKKyRpZGxEYXRhVHlwZSA9ICdbYS16QS1aMC05
XCBdJzsgCSMgR2VuZXJpYyBkYXRhIHR5cGUgaWRlbnRpZmllcgogCiAjIE1hZ2ljIElETCBwYXJz
aW5nIHJlZ3VsYXIgZXhwcmVzc2lvbnMKIG15ICRzdXBwb3J0ZWRUeXBlcyA9ICIoKD86dW5zaWdu
ZWQgKT8oPzppbnR8c2hvcnR8bG9uZyl8KD86JGlkbElkTnMqKSkiOwogCiAjIFNwZWNpYWwgSURM
IG5vdGF0aW9ucwotJHB0clN5bnRheCA9ICdcW3B0clxdJzsgIyBpZS4gJ2F0dHJpYnV0ZSBbcHRy
XSBET01TdHJpbmcgZm9vOyIKLSRub2RwdHJTeW50YXggPSAnXFtub2RwdHJcXSc7ICMgaWUuICdp
bnRlcmZhY2UgW25vZHB0cl0gRm9vYmFyIHsgLi4uIgorJHB0clN5bnRheCA9ICdcW3B0clxdJzsJ
CQkjIGllLiAnYXR0cmlidXRlIFtwdHJdIERPTVN0cmluZyBmb287IgorJG5vZHB0clN5bnRheCA9
ICdcW25vZHB0clxdJzsJIyBpZS4gJ2ludGVyZmFjZSBbbm9kcHRyXSBGb29iYXIgeyAuLi4iCiAK
ICMgUmVndWxhciBleHByZXNzaW9uIGJhc2VkIElETCAnc3ludGFjdGljYWwgdG9rZW5pemVyJyB1
c2VkIGluIHRoZSBJRExQYXJzZXIKICRtb2R1bGVTZWxlY3RvciA9ICdtb2R1bGVccyooJyAuICRp
ZGxJZCAuICcqKVxzKnsnOwogJG1vZHVsZU5TU2VsZWN0b3IgPSAnbW9kdWxlXHMqKCcgLiAkaWRs
SWQgLiAnKilccypcW25zXHMqKCcgLiAkaWRsSWROcyAuICcqKVxzKlxdXHMqOyc7CiAkY29uc3Rh
bnRTZWxlY3RvciA9ICdjb25zdFxzKicgLiAkc3VwcG9ydGVkVHlwZXMgLiAnXHMqKCcgLiAkaWRs
VHlwZSAuICcqKVxzKj1ccyooJyAuICRpZGxUeXBlIC4gJyopJzsKKyRyYWlzZXNTZWxlY3RvciA9
ICdcW3JhaXNlc1xzKlwoKCcgLiAkaWRsSWROc0xpc3QgLiAnKilccypcKVxdJzsKIAogJHR5cGVO
YW1lc3BhY2VTZWxlY3RvciA9ICcoKD86JyAuICRpZGxJZCAuICcqOjopKilccyooJyAuICRpZGxE
YXRhVHlwZSAuICcqKSc7CiAKQEAgLTg2LDcgKzkxLDYgQEAgJGludGVyZmFjZVNlbGVjdG9yID0g
J2ludGVyZmFjZVxzKigoPzonIAogJGludGVyZmFjZU1ldGhvZFNlbGVjdG9yID0gJ1xzKigoPzon
IC4gJHB0clN5bnRheCAuICcgKT8pJyAuICRzdXBwb3J0ZWRUeXBlcyAuICdccyooJyAuICRpZGxJ
ZE5zIC4gJyopXHMqXChccyooW2EtekEtWjAtOTpccyxcW1xdXSopJzsKICRpbnRlcmZhY2VQYXJh
bWV0ZXJTZWxlY3RvciA9ICdpblxzKigoPzonIC4gJHB0clN5bnRheCAuICcgKT8pJyAuICRzdXBw
b3J0ZWRUeXBlcyAuICdccyooJyAuICRpZGxJZE5zIC4gJyopJzsKIAotJGludGVyZmFjZUV4Y2Vw
dGlvblNlbGVjdG9yID0gJ3JhaXNlc1xzKlwoKCcgLiAkaWRsSWROcyAuICcqKVxzKlwpJzsKICRp
bnRlcmZhY2VBdHRyaWJ1dGVTZWxlY3RvciA9ICdccyoocmVhZG9ubHkgYXR0cmlidXRlfGF0dHJp
YnV0ZSlccyooJyAuICRwdHJTeW50YXggLiAnICk/JyAuICRzdXBwb3J0ZWRUeXBlcyAuICdccyoo
JyAuICRpZGxUeXBlIC4gJyopJzsKIAogMTsKSW5kZXg6IGtkb20vY2FjaGUvS0RPTUNhY2hlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1NWR1N1cHBvcnQva2RvbS9jYWNoZS9LRE9N
Q2FjaGUuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS40CmRpZmYgLXAgLXUgLXIxLjQga2RvbS9j
YWNoZS9LRE9NQ2FjaGUuaAotLS0ga2RvbS9jYWNoZS9LRE9NQ2FjaGUuaAkyIFNlcCAyMDA1IDEw
OjAzOjAwIC0wMDAwCTEuNAorKysga2RvbS9jYWNoZS9LRE9NQ2FjaGUuaAk2IFNlcCAyMDA1IDA3
OjE3OjIwIC0wMDAwCkBAIC0zMCwxMSArMzAsMTIgQEAKIAogI2luY2x1ZGUgPHEzZGljdC5oPgog
I2luY2x1ZGUgPHEzcHRybGlzdC5oPgotI2luY2x1ZGUgPHFwaXhtYXAuaD4KIAogI2luY2x1ZGUg
IktET01DYWNoZWRPYmplY3QuaCIKICNpbmNsdWRlICJLRE9NTG9hZGVyLmgiCiAKK2NsYXNzIFFQ
aXhtYXA7CisKIG5hbWVzcGFjZSBLRE9NCiB7CiAgICAgY2xhc3MgTG9hZGVyOwpJbmRleDoga2Rv
bS9jYWNoZS9LRE9NQ2FjaGVkT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290
L1NWR1N1cHBvcnQva2RvbS9jYWNoZS9LRE9NQ2FjaGVkT2JqZWN0LmgsdgpyZXRyaWV2aW5nIHJl
dmlzaW9uIDEuNQpkaWZmIC1wIC11IC1yMS41IGtkb20vY2FjaGUvS0RPTUNhY2hlZE9iamVjdC5o
Ci0tLSBrZG9tL2NhY2hlL0tET01DYWNoZWRPYmplY3QuaAkyIFNlcCAyMDA1IDExOjE1OjQzIC0w
MDAwCTEuNQorKysga2RvbS9jYWNoZS9LRE9NQ2FjaGVkT2JqZWN0LmgJNiBTZXAgMjAwNSAwNzox
NzoyMCAtMDAwMApAQCAtODIsNyArODIsNyBAQCBuYW1lc3BhY2UgS0RPTQogICAgICAgICB9Owog
CiAgICAgICAgIENhY2hlZE9iamVjdChjb25zdCBET01TdHJpbmcgJnVybCwgVHlwZSB0eXBlLCBL
SU86OkNhY2hlQ29udHJvbCBjYWNoZVBvbGljeSwgaW50IHNpemUpOwotICAgICAgICAgIHZpcnR1
YWwgfkNhY2hlZE9iamVjdCgpOworICAgICAgICB2aXJ0dWFsIH5DYWNoZWRPYmplY3QoKTsKIAog
ICAgICAgICB2aXJ0dWFsIHZvaWQgZGF0YShRQnVmZmVyICZidWZmZXIsIGJvb2wgZW9mKSA9IDA7
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBlcnJvcihpbnQgZXJyLCBjb25zdCBjaGFyICp0ZXh0KSA9
IDA7CkluZGV4OiBrZG9tL2NhY2hlL0tET01Mb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6
IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tkb20vY2FjaGUvS0RPTUxvYWRlci5jcHAsdgpyZXRyaWV2
aW5nIHJldmlzaW9uIDEuNwpkaWZmIC1wIC11IC1yMS43IGtkb20vY2FjaGUvS0RPTUxvYWRlci5j
cHAKLS0tIGtkb20vY2FjaGUvS0RPTUxvYWRlci5jcHAJMiBTZXAgMjAwNSAxMToxNTo0MyAtMDAw
MAkxLjcKKysrIGtkb20vY2FjaGUvS0RPTUxvYWRlci5jcHAJNiBTZXAgMjAwNSAwNzoxNzoyMCAt
MDAwMApAQCAtMTM5LDYgKzEzOSw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnNldEF1dG9sb2Fk
SW1hZ2VzKGIKICAgICBpZighbV9hdXRvbG9hZEltYWdlcykKICAgICAgICAgcmV0dXJuOwogCisj
aWYgMAogICAgIGZvcihRM1B0ckRpY3RJdGVyYXRvcjxDYWNoZWRPYmplY3Q+IGl0KG1fZG9jT2Jq
ZWN0cyk7IGl0LmN1cnJlbnQoKTsgKytpdCkKICAgICB7CiAgICAgICAgIGlmKGl0LmN1cnJlbnQo
KS0+dHlwZSgpID09IENhY2hlZE9iamVjdDo6SW1hZ2UpCkBAIC0xNDgsMTAgKzE0OSwxMCBAQCB2
b2lkIERvY3VtZW50TG9hZGVyOjpzZXRBdXRvbG9hZEltYWdlcyhiCiAgICAgICAgICAgICBDYWNo
ZWRPYmplY3Q6OlN0YXR1cyBzdGF0dXMgPSBpbWctPnN0YXR1cygpOwogICAgICAgICAgICAgaWYo
c3RhdHVzICE9IENhY2hlZE9iamVjdDo6VW5rbm93bikKICAgICAgICAgICAgICAgICBjb250aW51
ZTsKLQogICAgICAgICAgICAgQ2FjaGU6OmxvYWRlcigpLT5sb2FkKHRoaXMsIGltZywgdHJ1ZSk7
CiAgICAgICAgIH0KICAgICB9CisjZW5kaWYKIH0KIAogdm9pZCBEb2N1bWVudExvYWRlcjo6c2V0
U2hvd0FuaW1hdGlvbnMoS0RPTVNldHRpbmdzOjpLQW5pbWF0aW9uQWR2aWNlIHNob3dBbmltYXRp
b25zKQpJbmRleDoga2RvbS9jYWNoZS9LRE9NTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTog
L2N2cy9yb290L1NWR1N1cHBvcnQva2RvbS9jYWNoZS9LRE9NTG9hZGVyLmgsdgpyZXRyaWV2aW5n
IHJldmlzaW9uIDEuNgpkaWZmIC1wIC11IC1yMS42IGtkb20vY2FjaGUvS0RPTUxvYWRlci5oCi0t
LSBrZG9tL2NhY2hlL0tET01Mb2FkZXIuaAkyIFNlcCAyMDA1IDExOjE1OjQzIC0wMDAwCTEuNgor
Kysga2RvbS9jYWNoZS9LRE9NTG9hZGVyLmgJNiBTZXAgMjAwNSAwNzoxNzoyMCAtMDAwMApAQCAt
MzMsOCArMzMsOCBAQAogI2luY2x1ZGUgPHEzcHRyZGljdC5oPgogI2luY2x1ZGUgPHFzdHJpbmds
aXN0Lmg+CiAKLSNpbmNsdWRlIDxraW8vam9iLmg+CiAjaW5jbHVkZSA8a2lvL2dsb2JhbC5oPgor
I2luY2x1ZGUgPGtpby9qb2IuaD4KIAogI2luY2x1ZGUgPGtkb20vS0RPTVNldHRpbmdzLmg+CiAj
aW5jbHVkZSA8a2RvbS9jYWNoZS9LRE9NQ2FjaGVkT2JqZWN0Lmg+CkluZGV4OiBrZG9tL2Nzcy9D
U1NQcmltaXRpdmVWYWx1ZUltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9T
VkdTdXBwb3J0L2tkb20vY3NzL0NTU1ByaW1pdGl2ZVZhbHVlSW1wbC5jcHAsdgpyZXRyaWV2aW5n
IHJldmlzaW9uIDEuNgpkaWZmIC1wIC11IC1yMS42IGtkb20vY3NzL0NTU1ByaW1pdGl2ZVZhbHVl
SW1wbC5jcHAKLS0tIGtkb20vY3NzL0NTU1ByaW1pdGl2ZVZhbHVlSW1wbC5jcHAJMiBTZXAgMjAw
NSAxMDowMzowMyAtMDAwMAkxLjYKKysrIGtkb20vY3NzL0NTU1ByaW1pdGl2ZVZhbHVlSW1wbC5j
cHAJNiBTZXAgMjAwNSAwNzoxNzoyMCAtMDAwMApAQCAtMzgwLDcgKzM4MCw4IEBAIEZvbnRGYW1p
bHlWYWx1ZUltcGw6OkZvbnRGYW1pbHlWYWx1ZUltcGwKICAgICAvLyByZW1vdmUgW1hmdF0gcXVh
bGlmaWVycwogICAgIHBhcnNlZEZvbnROYW1lLnJlcGxhY2UoYnJhY2VSZWcsIFFTdHJpbmc6Om51
bGwpOwogCi0jaWZuZGVmIEFQUExFX0NPTVBJTEVfSEFDSworI2lmIDAKKyNpZm5kZWYgQVBQTEVf
Q0hBTkdFUwogICAgIGNvbnN0IFFTdHJpbmcgJmF2YWlsYWJsZSA9IEtIVE1MU2V0dGluZ3M6OmF2
YWlsYWJsZUZhbWlsaWVzKCk7CiAKICAgICBwYXJzZWRGb250TmFtZSA9IHBhcnNlZEZvbnROYW1l
Lmxvd2VyKCk7CkBAIC00MTAsNiArNDExLDcgQEAgRm9udEZhbWlseVZhbHVlSW1wbDo6Rm9udEZh
bWlseVZhbHVlSW1wbAogICAgIGVsc2UKICAgICAgICAgcGFyc2VkRm9udE5hbWUgPSBRU3RyaW5n
OjpudWxsOwogCi0jZW5kaWYgLy8gQVBQTEVfQ09NUElMRV9IQUNLCisjZW5kaWYgLy8gIUFQUExF
X0NIQU5HRVMKKyNlbmRpZgogfQogLy8gdmltOnRzPTQ6bm9ldApJbmRleDoga2RvbS9jc3MvQ1NT
U3R5bGVSdWxlSW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1NWR1N1cHBv
cnQva2RvbS9jc3MvQ1NTU3R5bGVSdWxlSW1wbC5jcHAsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEu
NQpkaWZmIC1wIC11IC1yMS41IGtkb20vY3NzL0NTU1N0eWxlUnVsZUltcGwuY3BwCi0tLSBrZG9t
L2Nzcy9DU1NTdHlsZVJ1bGVJbXBsLmNwcAkyIFNlcCAyMDA1IDEwOjAzOjAzIC0wMDAwCTEuNQor
Kysga2RvbS9jc3MvQ1NTU3R5bGVSdWxlSW1wbC5jcHAJNiBTZXAgMjAwNSAwNzoxNzoyMCAtMDAw
MApAQCAtNjMsNyArNjMsNyBAQCB2b2lkIENTU1N0eWxlUnVsZUltcGw6OnNldFNlbGVjdG9yVGV4
dChECiAgICAgLy8gRklYTUUhCiB9CiAKLWJvb2wgQ1NTU3R5bGVSdWxlSW1wbDo6cGFyc2VTdHJp
bmcoY29uc3QgRE9NU3RyaW5nICYsIGJvb2wpCitib29sIENTU1N0eWxlUnVsZUltcGw6OnBhcnNl
U3RyaW5nKERPTVN0cmluZ0ltcGwgKiwgYm9vbCkKIHsKICAgICAvLyBGSVhNRSEKICAgICByZXR1
cm4gZmFsc2U7CkluZGV4OiBrZG9tL2Nzcy9DU1NTdHlsZVJ1bGVJbXBsLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpS
Q1MgZmlsZTogL2N2cy9yb290L1NWR1N1cHBvcnQva2RvbS9jc3MvQ1NTU3R5bGVSdWxlSW1wbC5o
LHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjYKZGlmZiAtcCAtdSAtcjEuNiBrZG9tL2Nzcy9DU1NT
dHlsZVJ1bGVJbXBsLmgKLS0tIGtkb20vY3NzL0NTU1N0eWxlUnVsZUltcGwuaAkyIFNlcCAyMDA1
IDEwOjAzOjAzIC0wMDAwCTEuNgorKysga2RvbS9jc3MvQ1NTU3R5bGVSdWxlSW1wbC5oCTYgU2Vw
IDIwMDUgMDc6MTc6MjAgLTAwMDAKQEAgLTQwLDcgKzQwLDcgQEAgbmFtZXNwYWNlIEtET00KICAg
ICAgICAgRE9NU3RyaW5nSW1wbCAqc2VsZWN0b3JUZXh0KCkgY29uc3Q7CiAgICAgICAgIHZvaWQg
c2V0U2VsZWN0b3JUZXh0KERPTVN0cmluZ0ltcGwgKnNlbGVjdG9yVGV4dCk7CiAKLSAgICAgICAg
dmlydHVhbCBib29sIHBhcnNlU3RyaW5nKGNvbnN0IERPTVN0cmluZyAmc3RyaW5nLCBib29sID0g
ZmFsc2UpOworICAgICAgICB2aXJ0dWFsIGJvb2wgcGFyc2VTdHJpbmcoRE9NU3RyaW5nSW1wbCAq
c3RyaW5nLCBib29sID0gZmFsc2UpOwogCiAgICAgICAgIENTU1N0eWxlRGVjbGFyYXRpb25JbXBs
ICpzdHlsZSgpIGNvbnN0OwogCkluZGV4OiBrZG9tL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvU1ZHU3VwcG9ydC9rZG9tL2Nzcy9DU1NTdHls
ZVNlbGVjdG9yLmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS44CmRpZmYgLXAgLXUgLXIxLjgg
a2RvbS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKLS0tIGtkb20vY3NzL0NTU1N0eWxlU2VsZWN0
b3IuY3BwCTIgU2VwIDIwMDUgMTA6MDM6MDQgLTAwMDAJMS44CisrKyBrZG9tL2Nzcy9DU1NTdHls
ZVNlbGVjdG9yLmNwcAk2IFNlcCAyMDA1IDA3OjE3OjI0IC0wMDAwCkBAIC0xNTIsNyArMTUyLDcg
QEAgQ1NTU3R5bGVTZWxlY3Rvcjo6Q1NTU3R5bGVTZWxlY3RvcihEb2N1bQogICAgIGZvcig7IGl0
LmN1cnJlbnQoKTsgKytpdCkKICAgICB7CiAgICAgICAgICAgIGlmKGl0LmN1cnJlbnQoKS0+aXND
U1NTdHlsZVNoZWV0KCkpCi0gICAgICAgICAgICBhdXRob3JTdHlsZS0+YXBwZW5kKHN0YXRpY19j
YXN0PENTU1N0eWxlU2hlZXRJbXBsICo+KGl0LmN1cnJlbnQoKSksIERPTVN0cmluZyhtX21lZGl1
bSkuaGFuZGxlKCkpOworICAgICAgICAgICAgICAgYXV0aG9yU3R5bGUtPmFwcGVuZChzdGF0aWNf
Y2FzdDxDU1NTdHlsZVNoZWV0SW1wbCAqPihpdC5jdXJyZW50KCkpLCBET01TdHJpbmcobV9tZWRp
dW0pLmhhbmRsZSgpKTsKICAgICB9CiAKICAgICBLVVJMIHUgPSB1cmw7CkBAIC00MzIsNyArNDMy
LDcgQEAgUmVuZGVyU3R5bGUgKkNTU1N0eWxlU2VsZWN0b3I6OnN0eWxlRm9yRQogICAgIC8vIGFz
IGF1dGhvciBydWxlcywgYW5kIGNvbWUgYmVmb3JlIGFsbCBvdGhlciBzdHlsZSBzaGVldHMsIHNl
ZSBoYWNrIGluIGFwcGVuZCgpCiAgICAgbnVtUHJvcHNUb0FwcGx5ID0gYWRkSW5saW5lRGVjbGFy
YXRpb25zKGUsIGUtPnN0eWxlUnVsZXMoKSwgbnVtUHJvcHNUb0FwcGx5KTsKIAotICAgIC8vIHFE
ZWJ1Zygic3R5bGVGb3JFbGVtZW50KCVzKSIsIGUtPnRhZ05hbWUoKS5zdHJpbmcoKS5sYXRpbjEo
KSk7CisgICAgLy8gcURlYnVnKCJzdHlsZUZvckVsZW1lbnQoJXMpIiwgZS0+dGFnTmFtZSgpLT5z
dHJpbmcoKS5sYXRpbjEoKSk7CiAgICAgLy8gcURlYnVnKCIlZCBzZWxlY3RvcnMsICVkIGNoZWNr
ZWQsICAlZCBtYXRjaCwgICVkIHByb3BlcnRpZXMob2YgJWQpIiwKICAgICAvLyBzZWxlY3RvcnNf
c2l6ZSwgc2NoZWNrZWQsIHNtYXRjaCwgbnVtUHJvcHNUb0FwcGx5LCBwcm9wZXJ0aWVzX3NpemUp
OwogCkBAIC00NzMsNyArNDczLDcgQEAgUmVuZGVyU3R5bGUgKkNTU1N0eWxlU2VsZWN0b3I6OnN0
eWxlRm9yRQogICAgICAgICB7CiAgICAgICAgICAgICBmb250RGlydHkgPSBmYWxzZTsKIAotICAg
ICAgICAgICAgLy8gcURlYnVnKCIlZCBhcHBseWluZyAlZCBwc2V1ZG8gcHJvcHMiLCBlLT5jc3NU
YWdJZCgpLCBwc2V1ZG9Qcm9wcy0+Y291bnQoKSk7CisgICAgICAgICAgICAvL3FEZWJ1ZygiJWQg
YXBwbHlpbmcgJWQgcHNldWRvIHByb3BzIiwgZS0+Y3NzVGFnSWQoKSwgcHNldWRvUHJvcHMtPmNv
dW50KCkpOwogICAgICAgICAgICAgZm9yKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IG51bVBzZXVk
b1Byb3BzOyArK2kpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgaWYoZm9udERpcnR5
ICYmIHBzZXVkb1Byb3BzW2ldLT5wcmlvcml0eSA+PSAoMSA8PCAzMCkpCkBAIC0yNzQ5LDcgKzI3
NDksMTIgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseVJ1bGUoaW50IGlkLAogICAgIGNh
c2UgQ1NTX1BST1BfQ1VSU09SOgogICAgIHsKICAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lO
SVRJQUwoY3Vyc29yLCBDdXJzb3IpCi0gICAgICAgIGlmKHByaW1pdGl2ZVZhbHVlKQorICAgICAg
ICBpZighcHJpbWl0aXZlVmFsdWUpCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBpZihw
cmltaXRpdmVWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpID09IENTU19VUkkpCisgICAgICAgICAgICAv
KnN0eWxlLT5zZXRDdXJzb3JJbWFnZShwcmltaXRpdmVWYWx1ZSkqLzsKKwkJZWxzZQogICAgICAg
ICAgICAgc3R5bGUtPnNldEN1cnNvcigoRUN1cnNvcikgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVu
dCgpIC0gQ1NTX1ZBTF9BVVRPKSk7CiAKICAgICAgICAgYnJlYWs7CkBAIC00MjAyLDggKzQyMDcs
OCBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UnVsZShpbnQgaWQsCiAKIERPTVN0cmlu
Z0ltcGwgKkNTU1N0eWxlU2VsZWN0b3I6OmdldExhbmdBdHRyaWJ1dGUoRWxlbWVudEltcGwgKmUp
CiB7Ci0gICAgcmV0dXJuIGUtPmdldEF0dHJpYnV0ZU5TKERPTVN0cmluZyhOU19YTUwpLmhhbmRs
ZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBET01TdHJpbmcoInhtbDpsYW5nIiku
aGFuZGxlKCkpOworICAgIC8vIFRPRE86IENoZWNrIE5TX1hNTCAmIGZyaWVuZHMuLi4KKyAgICBy
ZXR1cm4gZS0+Z2V0QXR0cmlidXRlTlMoTlNfWE1MLmhhbmRsZSgpLCBET01TdHJpbmcoInhtbDps
YW5nIikuaGFuZGxlKCkpOwogfQogCiAvLyB2aW06dHM9NDpub2V0CkluZGV4OiBrZG9tL2Nzcy9D
U1NTdHlsZVNlbGVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1NWR1N1cHBv
cnQva2RvbS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjYK
ZGlmZiAtcCAtdSAtcjEuNiBrZG9tL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmgKLS0tIGtkb20vY3Nz
L0NTU1N0eWxlU2VsZWN0b3IuaAkyIFNlcCAyMDA1IDEwOjAzOjA0IC0wMDAwCTEuNgorKysga2Rv
bS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5oCTYgU2VwIDIwMDUgMDc6MTc6MjQgLTAwMDAKQEAgLTI5
LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgPHEzcHRybGlzdC5oPgogI2luY2x1ZGUgPHEzdmFsdWV2
ZWN0b3IuaD4KKyNpbmNsdWRlIDxxM21lbWFycmF5Lmg+CiAKICNpbmNsdWRlIDxrZG9tL0RPTVN0
cmluZy5oPgogI2luY2x1ZGUgPGtkb20vY3NzL1JlbmRlclN0eWxlLmg+CkluZGV4OiBrZG9tL2Nz
cy9DU1NTdHlsZVNoZWV0SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1NW
R1N1cHBvcnQva2RvbS9jc3MvQ1NTU3R5bGVTaGVldEltcGwuY3BwLHYKcmV0cmlldmluZyByZXZp
c2lvbiAxLjUKZGlmZiAtcCAtdSAtcjEuNSBrZG9tL2Nzcy9DU1NTdHlsZVNoZWV0SW1wbC5jcHAK
LS0tIGtkb20vY3NzL0NTU1N0eWxlU2hlZXRJbXBsLmNwcAkyIFNlcCAyMDA1IDEwOjAzOjA0IC0w
MDAwCTEuNQorKysga2RvbS9jc3MvQ1NTU3R5bGVTaGVldEltcGwuY3BwCTYgU2VwIDIwMDUgMDc6
MTc6MjQgLTAwMDAKQEAgLTEwMyw3ICsxMDMsNyBAQCBDU1NTdHlsZVNoZWV0SW1wbDo6fkNTU1N0
eWxlU2hlZXRJbXBsKCkKIAogRE9NU3RyaW5nSW1wbCAqQ1NTU3R5bGVTaGVldEltcGw6OnR5cGUo
KSBjb25zdAogewotICAgIHJldHVybiBET01TdHJpbmcoInRleHQvY3NzIikuaGFuZGxlKCk7Cisg
ICAgcmV0dXJuIG5ldyBET01TdHJpbmdJbXBsKCJ0ZXh0L2NzcyIpOwogfQogCiBDU1NSdWxlSW1w
bCAqQ1NTU3R5bGVTaGVldEltcGw6Om93bmVyUnVsZSgpIGNvbnN0CkluZGV4OiBrZG9tL2Nzcy9D
U1NWYWx1ZUltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0
L2tkb20vY3NzL0NTU1ZhbHVlSW1wbC5jcHAsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNApkaWZm
IC1wIC11IC1yMS40IGtkb20vY3NzL0NTU1ZhbHVlSW1wbC5jcHAKLS0tIGtkb20vY3NzL0NTU1Zh
bHVlSW1wbC5jcHAJMSBTZXAgMjAwNSAwNzozMzowOSAtMDAwMAkxLjQKKysrIGtkb20vY3NzL0NT
U1ZhbHVlSW1wbC5jcHAJNiBTZXAgMjAwNSAwNzoxNzoyNCAtMDAwMApAQCAtMjI3LDcgKzIyNyw3
IEBAIERPTVN0cmluZ0ltcGwgKlNoYWRvd1ZhbHVlSW1wbDo6Y3NzVGV4dCgKICAgICBET01TdHJp
bmcgdGV4dCgiIik7CiAgICAgaWYoY29sb3IpCiAgICAgICAgIHRleHQgKz0gRE9NU3RyaW5nKGNv
bG9yLT5jc3NUZXh0KCkpOwotICAgIAorCiAgICAgaWYoeCkKICAgICB7CiAgICAgICAgIGlmKHRl
eHQubGVuZ3RoKCkgPiAwKQpAQCAtMjM1LDcgKzIzNSw3IEBAIERPTVN0cmluZ0ltcGwgKlNoYWRv
d1ZhbHVlSW1wbDo6Y3NzVGV4dCgKICAgICAgICAgCiAgICAgICAgIHRleHQgKz0gRE9NU3RyaW5n
KHgtPmNzc1RleHQoKSk7CiAgICAgfQotICAgIAorCiAgICAgaWYoeSkKICAgICB7CiAgICAgICAg
IGlmKHRleHQubGVuZ3RoKCkgPiAwKQpAQCAtMjQzLDEyICsyNDMsMTIgQEAgRE9NU3RyaW5nSW1w
bCAqU2hhZG93VmFsdWVJbXBsOjpjc3NUZXh0KAogICAgICAgICAKICAgICAgICAgdGV4dCArPSBE
T01TdHJpbmcoeS0+Y3NzVGV4dCgpKTsKICAgICB9Ci0gICAgCisKICAgICBpZihibHVyKQogICAg
IHsKICAgICAgICAgaWYodGV4dC5sZW5ndGgoKSA+IDApCiAgICAgICAgICAgICB0ZXh0ICs9ICIg
IjsKLSAgICAgICAgCisKICAgICAgICAgdGV4dCArPSBET01TdHJpbmcoYmx1ci0+Y3NzVGV4dCgp
KTsKICAgICB9CiAKSW5kZXg6IGtkb20vY3NzL0ZvbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAv
Y3ZzL3Jvb3QvU1ZHU3VwcG9ydC9rZG9tL2Nzcy9Gb250LmgsdgpyZXRyaWV2aW5nIHJldmlzaW9u
IDEuNgpkaWZmIC1wIC11IC1yMS42IGtkb20vY3NzL0ZvbnQuaAotLS0ga2RvbS9jc3MvRm9udC5o
CTIgU2VwIDIwMDUgMTA6MDM6MDQgLTAwMDAJMS42CisrKyBrZG9tL2Nzcy9Gb250LmgJNiBTZXAg
MjAwNSAwNzoxNzoyNCAtMDAwMApAQCAtODcsNyArODcsNyBAQCBwdWJsaWM6CiAgICAgICogQHBh
cmFtIGRlY28gY29tYmluZWQgdGV4dCBkZWNvcmF0aW9uIChzZWUgRGVjb3JhdGlvbikKICAgICAg
Ki8KICAgICB2b2lkIGRyYXdUZXh0KFFQYWludGVyICpwLCBpbnQgeCwgaW50IHksIFFDaGFyICpz
dHIsIGludCBzbGVuLCBpbnQgcG9zLCBpbnQgbGVuLCBpbnQgd2lkdGgsCi0gICAgICAgICAgICAg
ICAgICBRUGFpbnRlcjo6VGV4dERpcmVjdGlvbiBkLCBpbnQgZnJvbSA9IC0xLCBpbnQgdG8gPSAt
MSwgUUNvbG9yIGJnID0gUUNvbG9yKCksCisgICAgICAgICAgICAgICAgICBRdDo6TGF5b3V0RGly
ZWN0aW9uIGQsIGludCBmcm9tID0gLTEsIGludCB0byA9IC0xLCBRQ29sb3IgYmcgPSBRQ29sb3Io
KSwKICAgICAgICAgICAgICAgICAgIGludCB1eSA9IC0xLCBpbnQgaCA9IC0xLCBpbnQgZGVjbyA9
IDApIGNvbnN0OwogCiAgICAgLyoqIHJldHVybnMgdGhlIHdpZHRoIG9mIHRoZSBnaXZlbiBzdHJp
bmcgY2h1bmsgaW4gcGl4ZWxzLgpJbmRleDoga2RvbS9jc3MvTGlua1N0eWxlSW1wbC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQpSQ1MgZmlsZToga2RvbS9jc3MvTGlua1N0eWxlSW1wbC5jcHAKZGlmZiAtTiBrZG9t
L2Nzcy9MaW5rU3R5bGVJbXBsLmNwcAotLS0ga2RvbS9jc3MvTGlua1N0eWxlSW1wbC5jcHAJMSBK
YW4gMTk3MCAwMDowMDowMCAtMDAwMAorKysga2RvbS9jc3MvTGlua1N0eWxlSW1wbC5jcHAJNiBT
ZXAgMjAwNSAwNzoxNzoyNCAtMDAwMApAQCAtMCwwICsxLDQyIEBACisvKgorICAgIENvcHlyaWdo
dCAoQykgMjAwNCwgMjAwNSBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KKyAg
ICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KKworICAg
IFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdAorCisgICAgVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBz
ZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLAor
ICAgIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgorKi8KKworI2luY2x1ZGUgIkxpbmtTdHls
ZUltcGwuaCIKKyNpbmNsdWRlICJDU1NTdHlsZVNoZWV0SW1wbC5oIgorCit1c2luZyBuYW1lc3Bh
Y2UgS0RPTTsKKworTGlua1N0eWxlSW1wbDo6TGlua1N0eWxlSW1wbCgpIDogbV9zaGVldCgwKQor
eworfQorCitMaW5rU3R5bGVJbXBsOjp+TGlua1N0eWxlSW1wbCgpCit7CisgICAgaWYobV9zaGVl
dCkKKyAgICAgICAgbV9zaGVldC0+ZGVyZWYoKTsKK30KKworU3R5bGVTaGVldEltcGwgKkxpbmtT
dHlsZUltcGw6OnNoZWV0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zaGVldDsKK30KKy8vIHZp
bTp0cz00Om5vZXQKSW5kZXg6IGtkb20vY3NzL0xpbmtTdHlsZUltcGwuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJD
UyBmaWxlOiBrZG9tL2Nzcy9MaW5rU3R5bGVJbXBsLmgKZGlmZiAtTiBrZG9tL2Nzcy9MaW5rU3R5
bGVJbXBsLmgKLS0tIGtkb20vY3NzL0xpbmtTdHlsZUltcGwuaAkxIEphbiAxOTcwIDAwOjAwOjAw
IC0wMDAwCisrKyBrZG9tL2Nzcy9MaW5rU3R5bGVJbXBsLmgJNiBTZXAgMjAwNSAwNzoxNzoyNCAt
MDAwMApAQCAtMCwwICsxLDQ2IEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBO
aWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KKyAgICAgICAgICAgICAgICAgIDIw
MDQsIDIwMDUgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KKworICAgIFRoaXMgZmlsZSBpcyBwYXJ0
IG9mIHRoZSBLREUgcHJvamVjdAorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVy
c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz
aW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlO
Ry5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
biwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLAorICAgIEJvc3RvbiwgTUEgMDIx
MTEtMTMwNywgVVNBLgorKi8KKworI2lmbmRlZiBLRE9NX0xpbmtTdHlsZUltcGxfSAorI2RlZmlu
ZSBLRE9NX0xpbmtTdHlsZUltcGxfSAorCituYW1lc3BhY2UgS0RPTQoreworICAgIGNsYXNzIFN0
eWxlU2hlZXRJbXBsOworICAgIGNsYXNzIENTU1N0eWxlU2hlZXRJbXBsOworICAgIGNsYXNzIExp
bmtTdHlsZUltcGwKKyAgICB7CisgICAgcHVibGljOgorICAgICAgICBMaW5rU3R5bGVJbXBsKCk7
CisgICAgICAgIHZpcnR1YWwgfkxpbmtTdHlsZUltcGwoKTsKKworICAgICAgICAvLyAnTGlua1N0
eWxlSW1wbCcgZnVuY3Rpb25zCisgICAgICAgIHZpcnR1YWwgU3R5bGVTaGVldEltcGwgKnNoZWV0
KCkgY29uc3Q7CisKKyAgICBwcm90ZWN0ZWQ6CisgICAgICAgIG11dGFibGUgQ1NTU3R5bGVTaGVl
dEltcGwgKm1fc2hlZXQ7CisgICAgfTsKK307CisKKyNlbmRpZgorCisvLyB2aW06dHM9NDpub2V0
CkluZGV4OiBrZG9tL2Nzcy9SZWN0SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9y
b290L1NWR1N1cHBvcnQva2RvbS9jc3MvUmVjdEltcGwuY3BwLHYKcmV0cmlldmluZyByZXZpc2lv
biAxLjQKZGlmZiAtcCAtdSAtcjEuNCBrZG9tL2Nzcy9SZWN0SW1wbC5jcHAKLS0tIGtkb20vY3Nz
L1JlY3RJbXBsLmNwcAkxIFNlcCAyMDA1IDA3OjMzOjExIC0wMDAwCTEuNAorKysga2RvbS9jc3Mv
UmVjdEltcGwuY3BwCTYgU2VwIDIwMDUgMDc6MTc6MjUgLTAwMDAKQEAgLTEsNiArMSw2IEBACiAv
KgogICAgIENvcHlyaWdodChDKSAyMDA0LCAyMDA1IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZv
eEBrZGUub3JnPgotICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSBSb2IgQnVpcyA8YnVpc0Br
ZGUub3JnPgorICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1IFJvYiBCdWlzIDxidWlzQGtkZS5v
cmc+CiAKICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QKIApAQCAtMjAs
NyArMjAsNiBAQAogICAgIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgogKi8KIAotI2luY2x1
ZGUgPGtkb20vU2hhcmVkLmg+CiAjaW5jbHVkZSAiUmVjdEltcGwuaCIKICNpbmNsdWRlICJDU1NQ
cmltaXRpdmVWYWx1ZUltcGwuaCIKIApAQCAtNDYsNTAgKzQ1LDYgQEAgUmVjdEltcGw6On5SZWN0
SW1wbCgpCiAgICAgICAgIG1fbGVmdC0+ZGVyZWYoKTsKIH0KIAotQ1NTUHJpbWl0aXZlVmFsdWVJ
bXBsICpSZWN0SW1wbDo6dG9wKCkgY29uc3QKLXsKLSAgICBpZighbV90b3ApCi0gICAgewotICAg
ICAgICBtX3RvcCA9IG5ldyBDU1NQcmltaXRpdmVWYWx1ZUltcGwobV9pbnRlcmZhY2UpOyAvLyBU
T0RPOiBDaGVjayBjdG9yCi0gICAgICAgIG1fdG9wLT5yZWYoKTsKLSAgICB9Ci0KLSAgICByZXR1
cm4gbV90b3A7Ci19Ci0KLUNTU1ByaW1pdGl2ZVZhbHVlSW1wbCAqUmVjdEltcGw6OnJpZ2h0KCkg
Y29uc3QKLXsKLSAgICBpZighbV9yaWdodCkKLSAgICB7Ci0gICAgICAgIG1fcmlnaHQgPSBuZXcg
Q1NTUHJpbWl0aXZlVmFsdWVJbXBsKG1faW50ZXJmYWNlKTsgLy8gVE9ETzogQ2hlY2sgY3Rvcgot
ICAgICAgICBtX3JpZ2h0LT5yZWYoKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gbV9yaWdodDsKLX0K
LQotQ1NTUHJpbWl0aXZlVmFsdWVJbXBsICpSZWN0SW1wbDo6Ym90dG9tKCkgY29uc3QKLXsKLSAg
ICBpZighbV9ib3R0b20pCi0gICAgewotICAgICAgICBtX2JvdHRvbSA9IG5ldyBDU1NQcmltaXRp
dmVWYWx1ZUltcGwobV9pbnRlcmZhY2UpOyAvLyBUT0RPOiBDaGVjayBjdG9yCi0gICAgICAgIG1f
Ym90dG9tLT5yZWYoKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gbV9ib3R0b207Ci19Ci0KLUNTU1By
aW1pdGl2ZVZhbHVlSW1wbCAqUmVjdEltcGw6OmxlZnQoKSBjb25zdAotewotICAgIGlmKCFtX2xl
ZnQpCi0gICAgewotICAgICAgICBtX2xlZnQgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWVJbXBsKG1f
aW50ZXJmYWNlKTsgLy8gVE9ETzogQ2hlY2sgY3RvcgotICAgICAgICBtX2xlZnQtPnJlZigpOwot
ICAgIH0KLQotICAgIHJldHVybiBtX2xlZnQ7Ci19Ci0KIHZvaWQgUmVjdEltcGw6OnNldFRvcChD
U1NQcmltaXRpdmVWYWx1ZUltcGwgKnRvcCkKIHsKICAgICBLRE9NX1NBRkVfU0VUKG1fdG9wLCB0
b3ApOwpJbmRleDoga2RvbS9jc3MvUmVjdEltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3Zz
L3Jvb3QvU1ZHU3VwcG9ydC9rZG9tL2Nzcy9SZWN0SW1wbC5oLHYKcmV0cmlldmluZyByZXZpc2lv
biAxLjMKZGlmZiAtcCAtdSAtcjEuMyBrZG9tL2Nzcy9SZWN0SW1wbC5oCi0tLSBrZG9tL2Nzcy9S
ZWN0SW1wbC5oCTEgU2VwIDIwMDUgMDc6MzM6MTEgLTAwMDAJMS4zCisrKyBrZG9tL2Nzcy9SZWN0
SW1wbC5oCTYgU2VwIDIwMDUgMDc6MTc6MjUgLTAwMDAKQEAgLTM2LDEwICszNiwxMCBAQCBuYW1l
c3BhY2UgS0RPTQogICAgICAgICB2aXJ0dWFsIH5SZWN0SW1wbCgpOwogCiAgICAgICAgIC8vICdS
ZWN0JyBmdW5jdGlvbnMKLSAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWVJbXBsICp0b3AoKSBjb25z
dDsKLSAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWVJbXBsICpyaWdodCgpIGNvbnN0OwotICAgICAg
ICBDU1NQcmltaXRpdmVWYWx1ZUltcGwgKmJvdHRvbSgpIGNvbnN0OwotICAgICAgICBDU1NQcmlt
aXRpdmVWYWx1ZUltcGwgKmxlZnQoKSBjb25zdDsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWVJ
bXBsICp0b3AoKSBjb25zdCB7IHJldHVybiBtX3RvcDsgfQorICAgICAgICBDU1NQcmltaXRpdmVW
YWx1ZUltcGwgKnJpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9yaWdodDsgfQorICAgICAgICBDU1NQ
cmltaXRpdmVWYWx1ZUltcGwgKmJvdHRvbSgpIGNvbnN0IHsgcmV0dXJuIG1fYm90dG9tOyB9Cisg
ICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlSW1wbCAqbGVmdCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVm
dDsgfQogCiAgICAgICAgIHZvaWQgc2V0VG9wKENTU1ByaW1pdGl2ZVZhbHVlSW1wbCAqdG9wKTsK
ICAgICAgICAgdm9pZCBzZXRSaWdodChDU1NQcmltaXRpdmVWYWx1ZUltcGwgKnJpZ2h0KTsKSW5k
ZXg6IGtkb20vY3NzL1JlbmRlclN0eWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jv
b3QvU1ZHU3VwcG9ydC9rZG9tL2Nzcy9SZW5kZXJTdHlsZS5jcHAsdgpyZXRyaWV2aW5nIHJldmlz
aW9uIDEuNQpkaWZmIC1wIC11IC1yMS41IGtkb20vY3NzL1JlbmRlclN0eWxlLmNwcAotLS0ga2Rv
bS9jc3MvUmVuZGVyU3R5bGUuY3BwCTEgU2VwIDIwMDUgMDc6MzM6MTEgLTAwMDAJMS41CisrKyBr
ZG9tL2Nzcy9SZW5kZXJTdHlsZS5jcHAJNiBTZXAgMjAwNSAwNzoxNzoyNSAtMDAwMApAQCAtMjUw
LDYgKzI1MCw3IEBAIFJlbmRlclN0eWxlOjpEaWZmIFJlbmRlclN0eWxlOjpkaWZmKGNvbnMKICAg
ICAgICAhKGluaGVyaXRlZC0+aW5kZW50ID09IG90aGVyLT5pbmhlcml0ZWQtPmluZGVudCkgfHwK
ICAgICAgICAhKGluaGVyaXRlZC0+bGluZUhlaWdodCA9PSBvdGhlci0+aW5oZXJpdGVkLT5saW5l
SGVpZ2h0KSB8fAogICAgICAgICEoaW5oZXJpdGVkLT5zdHlsZUltYWdlID09IG90aGVyLT5pbmhl
cml0ZWQtPnN0eWxlSW1hZ2UpIHx8CisgICAgICAgIShpbmhlcml0ZWQtPmN1cnNvckltYWdlID09
IG90aGVyLT5pbmhlcml0ZWQtPmN1cnNvckltYWdlKSB8fAogICAgICAgICEoaW5oZXJpdGVkLT5m
b250ID09IG90aGVyLT5pbmhlcml0ZWQtPmZvbnQpIHx8CiAgICAgICAgIShpbmhlcml0ZWQtPmJv
cmRlckhTcGFjaW5nID09IG90aGVyLT5pbmhlcml0ZWQtPmJvcmRlckhTcGFjaW5nKSB8fAogICAg
ICAgICEoaW5oZXJpdGVkLT5ib3JkZXJWU3BhY2luZyA9PSBvdGhlci0+aW5oZXJpdGVkLT5ib3Jk
ZXJWU3BhY2luZykpCkluZGV4OiBrZG9tL2Nzcy9SZW5kZXJTdHlsZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNT
IGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tkb20vY3NzL1JlbmRlclN0eWxlLmgsdgpyZXRy
aWV2aW5nIHJldmlzaW9uIDEuNQpkaWZmIC1wIC11IC1yMS41IGtkb20vY3NzL1JlbmRlclN0eWxl
LmgKLS0tIGtkb20vY3NzL1JlbmRlclN0eWxlLmgJMSBTZXAgMjAwNSAwOTozOTowNiAtMDAwMAkx
LjUKKysrIGtkb20vY3NzL1JlbmRlclN0eWxlLmgJNiBTZXAgMjAwNSAwNzoxNzoyNiAtMDAwMApA
QCAtMTkyLDYgKzE5Miw3IEBAIG5hbWVzcGFjZSBLRE9NCiAgICAgICAgIFJTX0RFRklORV9BVFRS
SUJVVEVfREFUQVJFRl9XSVRIX0lOSVRJQUwoc2hvcnQsIGluaGVyaXRlZCwgb3JwaGFucywgT3Jw
aGFucywgb3JwaGFucywgMikKICAgICAgICAgUlNfREVGSU5FX0FUVFJJQlVURV9EQVRBUkVGX1dJ
VEhfSU5JVElBTChFUGFnZUJyZWFrLCBpbmhlcml0ZWQsIHBhZ2VCcmVha0luc2lkZSwgUGFnZUJy
ZWFrSW5zaWRlLCBwYWdlQnJlYWtJbnNpZGUsIFBCX0FVVE8pCiAgICAgICAgIFJTX0RFRklORV9B
VFRSSUJVVEVfREFUQVJFRl9XSVRIX0lOSVRJQUwoQ2FjaGVkSW1hZ2UgKiwgaW5oZXJpdGVkLCBz
dHlsZUltYWdlLCBMaXN0U3R5bGVJbWFnZSwgbGlzdFN0eWxlSW1hZ2UsIDApCisgICAgICAgIFJT
X0RFRklORV9BVFRSSUJVVEVfREFUQVJFRl9XSVRIX0lOSVRJQUwoQ1NTVmFsdWVJbXBsICosIGlu
aGVyaXRlZCwgY3Vyc29ySW1hZ2UsIEN1cnNvckltYWdlLCBjdXJzb3JJbWFnZSwgMCkKIAogICAg
ICAgICAvLyBTcGVjaWFsIGNhc2VzCiAgICAgICAgIHZvaWQgc2V0SGFzQXV0b1pJbmRleCgpIHsg
UlNfU0VUX1ZBUklBQkxFKGJveCwgekF1dG8sIHRydWUgKTsgfQpJbmRleDoga2RvbS9jc3MvUmVu
ZGVyU3R5bGVEZWZzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvU1ZHU3VwcG9y
dC9rZG9tL2Nzcy9SZW5kZXJTdHlsZURlZnMuY3BwLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjQK
ZGlmZiAtcCAtdSAtcjEuNCBrZG9tL2Nzcy9SZW5kZXJTdHlsZURlZnMuY3BwCi0tLSBrZG9tL2Nz
cy9SZW5kZXJTdHlsZURlZnMuY3BwCTEgU2VwIDIwMDUgMDc6MzM6MTEgLTAwMDAJMS40CisrKyBr
ZG9tL2Nzcy9SZW5kZXJTdHlsZURlZnMuY3BwCTYgU2VwIDIwMDUgMDc6MTc6MjYgLTAwMDAKQEAg
LTE5NSwxMSArMTk1LDEyIEBAIFN0eWxlSW5oZXJpdGVkRGF0YTo6U3R5bGVJbmhlcml0ZWREYXRh
KCkKICAgICBpbmRlbnQgPSBSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHRJbmRlbnQoKTsKICAgICBs
aW5lSGVpZ2h0ID0gUmVuZGVyU3R5bGU6OmluaXRpYWxMaW5lSGVpZ2h0KCk7CiAgICAgc3R5bGVJ
bWFnZSA9IFJlbmRlclN0eWxlOjppbml0aWFsTGlzdFN0eWxlSW1hZ2UoKTsKKyAgICBjdXJzb3JJ
bWFnZSA9IFJlbmRlclN0eWxlOjppbml0aWFsQ3Vyc29ySW1hZ2UoKTsKICAgICBjb2xvciA9IFJl
bmRlclN0eWxlOjppbml0aWFsQ29sb3IoKTsKIAogICAgIGJvcmRlckhTcGFjaW5nID0gUmVuZGVy
U3R5bGU6OmluaXRpYWxCb3JkZXJIU3BhY2luZygpOwotICAgICAgIGJvcmRlclZTcGFjaW5nID0g
UmVuZGVyU3R5bGU6OmluaXRpYWxCb3JkZXJWU3BhY2luZygpOwotICAgIAorICAgIGJvcmRlclZT
cGFjaW5nID0gUmVuZGVyU3R5bGU6OmluaXRpYWxCb3JkZXJWU3BhY2luZygpOworCiAgICAgcXVv
dGVzID0gMDsKICAgICB3aWRvd3MgPSBSZW5kZXJTdHlsZTo6aW5pdGlhbFdpZG93cygpOwogICAg
IG9ycGhhbnMgPSBSZW5kZXJTdHlsZTo6aW5pdGlhbE9ycGhhbnMoKTsKQEAgLTIxMCw2ICsyMTEs
NyBAQCBTdHlsZUluaGVyaXRlZERhdGE6OlN0eWxlSW5oZXJpdGVkRGF0YShjCiB7CiAgICAgaW5k
ZW50ID0gb3RoZXIuaW5kZW50OyBsaW5lSGVpZ2h0ID0gb3RoZXIubGluZUhlaWdodDsKICAgICBz
dHlsZUltYWdlID0gb3RoZXIuc3R5bGVJbWFnZTsgZm9udCA9IG90aGVyLmZvbnQ7CisgICAgY3Vy
c29ySW1hZ2UgPSBvdGhlci5jdXJzb3JJbWFnZTsKICAgICBjb2xvciA9IG90aGVyLmNvbG9yOyBk
ZWNvcmF0aW9uQ29sb3IgPSBvdGhlci5kZWNvcmF0aW9uQ29sb3I7CiAgICAgYm9yZGVySFNwYWNp
bmcgPSBvdGhlci5ib3JkZXJIU3BhY2luZzsgYm9yZGVyVlNwYWNpbmcgPSBvdGhlci5ib3JkZXJW
U3BhY2luZzsKICAgICB3aWRvd3MgPSBvdGhlci53aWRvd3M7IG9ycGhhbnMgPSBvdGhlci5vcnBo
YW5zOyBwYWdlQnJlYWtJbnNpZGUgPSBvdGhlci5wYWdlQnJlYWtJbnNpZGU7CkBAIC0yMjQsNiAr
MjI2LDcgQEAgYm9vbCBTdHlsZUluaGVyaXRlZERhdGE6Om9wZXJhdG9yPT0oY29ucwogICAgIHJl
dHVybiAoaW5kZW50ID09IG90aGVyLmluZGVudCkgJiYgKGxpbmVIZWlnaHQgPT0gb3RoZXIubGlu
ZUhlaWdodCkgJiYKICAgICAgICAgICAgKGJvcmRlckhTcGFjaW5nID09IG90aGVyLmJvcmRlckhT
cGFjaW5nKSAmJiAoYm9yZGVyVlNwYWNpbmcgPT0gb3RoZXIuYm9yZGVyVlNwYWNpbmcpICYmCiAg
ICAgICAgICAgIChzdHlsZUltYWdlID09IG90aGVyLnN0eWxlSW1hZ2UpICYmIChmb250ID09IG90
aGVyLmZvbnQpICYmCisgICAgICAgICAgIChjdXJzb3JJbWFnZSA9PSBvdGhlci5jdXJzb3JJbWFn
ZSkgJiYKICAgICAgICAgICAgKGNvbG9yID09IG90aGVyLmNvbG9yKSAmJiAoZGVjb3JhdGlvbkNv
bG9yID09IG90aGVyLmRlY29yYXRpb25Db2xvcikgJiYKICAgICAgICAgICAgKHdpZG93cyA9PSBv
dGhlci53aWRvd3MpICYmIChvcnBoYW5zID09IG90aGVyLm9ycGhhbnMpICYmCiAgICAgICAgICAg
IChwYWdlQnJlYWtJbnNpZGUgPT0gb3RoZXIucGFnZUJyZWFrSW5zaWRlKSAmJiAocXVvdGVzID09
IG90aGVyLnF1b3Rlcyk7CkluZGV4OiBrZG9tL2Nzcy9SZW5kZXJTdHlsZURlZnMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvU1ZHU3VwcG9ydC9rZG9tL2Nzcy9SZW5kZXJTdHlsZURl
ZnMuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS41CmRpZmYgLXAgLXUgLXIxLjUga2RvbS9jc3Mv
UmVuZGVyU3R5bGVEZWZzLmgKLS0tIGtkb20vY3NzL1JlbmRlclN0eWxlRGVmcy5oCTEgU2VwIDIw
MDUgMDk6Mzk6MDYgLTAwMDAJMS41CisrKyBrZG9tL2Nzcy9SZW5kZXJTdHlsZURlZnMuaAk2IFNl
cCAyMDA1IDA3OjE3OjI2IC0wMDAwCkBAIC01MzQsNiArNTM0LDcgQEAgbmFtZXNwYWNlIEtET00K
ICAgICAgICAgTGVuZ3RoIGxpbmVIZWlnaHQ7CiAKICAgICAgICAgQ2FjaGVkSW1hZ2UgKnN0eWxl
SW1hZ2U7CisgICAgICAgIENTU1ZhbHVlSW1wbCAqY3Vyc29ySW1hZ2U7CiAKICAgICAgICAgRm9u
dCBmb250OwogICAgICAgICBRQ29sb3IgY29sb3I7CkluZGV4OiBrZG9tL2Nzcy9TdHlsZUJhc2VJ
bXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvU1ZHU3VwcG9ydC9rZG9tL2Nz
cy9TdHlsZUJhc2VJbXBsLmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS42CmRpZmYgLXAgLXUg
LXIxLjYga2RvbS9jc3MvU3R5bGVCYXNlSW1wbC5jcHAKLS0tIGtkb20vY3NzL1N0eWxlQmFzZUlt
cGwuY3BwCTIgU2VwIDIwMDUgMTA6MDM6MDUgLTAwMDAJMS42CisrKyBrZG9tL2Nzcy9TdHlsZUJh
c2VJbXBsLmNwcAk2IFNlcCAyMDA1IDA3OjE3OjI3IC0wMDAwCkBAIC0yMjYsNyArMjI2LDcgQEAg
dm9pZCBDU1NTZWxlY3Rvcjo6cHJpbnQoKQogI2lmbmRlZiBBUFBMRV9DSEFOR0VTCiAgICAga2RE
ZWJ1Zyg2MDgwKSA8PCAiW1NlbGVjdG9yOiB0YWcgPSAiIDw8IFFTdHJpbmc6Om51bWJlcih0YWcs
IDE2KQogICAgICAgICAgICAgICAgICAgPDwgIiwgYXR0ciA9IFwiIiA8PCBhdHRyIDw8ICJcIiwg
bWF0Y2ggPSBcIiIgPDwgbWF0Y2gKLSAgICAgICAgICAgICAgICAgIDw8ICJcIiB2YWx1ZSA9IFwi
IiA8PCBET01TdHJpbmcodmFsdWUpLnN0cmluZygpLmxhdGluMSgpCisgICAgICAgICAgICAgICAg
ICA8PCAiXCIgdmFsdWUgPSBcIiIgPDwgKHZhbHVlID8gdmFsdWUtPnN0cmluZygpLnVuaWNvZGUo
KSA6IDApCiAgICAgICAgICAgICAgICAgICA8PCAiXCIgcmVsYXRpb24gPSAiIDw8IChpbnQpIHJl
bGF0aW9uICAgIDw8ICJdIiA8PCBlbmRsOwogI2VuZGlmCiAKQEAgLTI5MSw3ICsyOTEsNyBAQCB2
b2lkIENTU1NlbGVjdG9yOjpleHRyYWN0UHNldWRvVHlwZSgpIGNvCiAgICAgewogICAgICAgICB2
YWx1ZSA9IHZhbHVlLT5sb3dlcigpOwogICAgICAgICBET01TdHJpbmcgX3ZhbHVlKHZhbHVlKTsK
LSAgICAgICAgc3dpdGNoKF92YWx1ZVswXS5sYXRpbjEoKSkKKyAgICAgICAgc3dpdGNoKF92YWx1
ZVswXS51bmljb2RlKCkpCiAgICAgICAgIHsKICAgICAgICAgICAgIGNhc2UgJ2EnOgogICAgICAg
ICAgICAgewpJbmRleDoga2RvbS9ldmVudHMvRXZlbnRUYXJnZXRJbXBsLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvU1ZHU3VwcG9ydC9rZG9tL2V2ZW50cy9FdmVudFRhcmdldElt
cGwuY3BwLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjUKZGlmZiAtcCAtdSAtcjEuNSBrZG9tL2V2
ZW50cy9FdmVudFRhcmdldEltcGwuY3BwCi0tLSBrZG9tL2V2ZW50cy9FdmVudFRhcmdldEltcGwu
Y3BwCTIgU2VwIDIwMDUgMTA6MDM6MTAgLTAwMDAJMS41CisrKyBrZG9tL2V2ZW50cy9FdmVudFRh
cmdldEltcGwuY3BwCTYgU2VwIDIwMDUgMDc6MTc6MjcgLTAwMDAKQEAgLTIyLDYgKzIyLDggQEAK
IAogI2luY2x1ZGUgPGtqcy9pbnRlcnByZXRlci5oPgogCisjaW5jbHVkZSA8a2RvbS9lY21hL0Vj
bWEuaD4KKwogI2luY2x1ZGUgIkV2ZW50SW1wbC5oIgogI2luY2x1ZGUgIkRvY3VtZW50SW1wbC5o
IgogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0SW1wbC5oIgpAQCAtNDcsNiArNDksOSBAQCB2b2lkIEV2
ZW50VGFyZ2V0SW1wbDo6YWRkRXZlbnRMaXN0ZW5lcihECiAgICAgaWYoIWxpc3RlbmVyKQogICAg
ICAgICByZXR1cm47CiAKKwlpZih0eXBlKQorCQl0eXBlLT5yZWYoKTsKKwogICAgIC8vIElmIHRo
ZSByZXF1ZXN0ZWQgbGlzdGVuZXIgaXMgYnVpbHRpbiAoaWUuIERPTU5PREVSRU1PVkVEX0VWRU5U
KQogICAgIC8vIHdlJ2xsIGNhY2hlIHRoZSBzcGVjaWZpYyBlbnVtZXJhdGlvbiB2YWx1ZSB0byBz
YXZlIHNwYWNlCiAgICAgLy8gYnV0IGluIGNhc2Ugb2YgYSBjdXN0b20gZXZlbnQgKGllLiBhcyB1
c2VkIGluIHRoZSBkb20yIGV2ZW50cyB0ZXN0IHN1aXRlKQpAQCAtODYsNiArOTEsOSBAQCB2b2lk
IEV2ZW50VGFyZ2V0SW1wbDo6YWRkRXZlbnRMaXN0ZW5lcihECiAKICAgICBhZGRMaXN0ZW5lclR5
cGUoZG9jLT5hZGRMaXN0ZW5lclR5cGUodHlwZSkpOwogICAgIG1fZXZlbnRMaXN0ZW5lcnMtPmFw
cGVuZChuZXcgUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIodHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1
cmUpKTsKKworCWlmKHR5cGUpCisJCXR5cGUtPmRlcmVmKCk7CiB9CiAKIHZvaWQgRXZlbnRUYXJn
ZXRJbXBsOjpyZW1vdmVFdmVudExpc3RlbmVyKERPTVN0cmluZ0ltcGwgKnR5cGUsIEV2ZW50TGlz
dGVuZXJJbXBsICpsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQpJbmRleDoga2RvbS9scy9ET01J
bXBsZW1lbnRhdGlvbkxTSW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZToga2RvbS9scy9ET01J
bXBsZW1lbnRhdGlvbkxTSW1wbC5jcHAKZGlmZiAtTiBrZG9tL2xzL0RPTUltcGxlbWVudGF0aW9u
TFNJbXBsLmNwcAotLS0ga2RvbS9scy9ET01JbXBsZW1lbnRhdGlvbkxTSW1wbC5jcHAJMSBKYW4g
MTk3MCAwMDowMDowMCAtMDAwMAorKysga2RvbS9scy9ET01JbXBsZW1lbnRhdGlvbkxTSW1wbC5j
cHAJNiBTZXAgMjAwNSAwNzoxNzoyNyAtMDAwMApAQCAtMCwwICsxLDc0IEBACisvKgorICAgIENv
cHlyaWdodCAoQykgMjAwNCwgMjAwNSBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9y
Zz4KKyAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4K
KworICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdAorCisgICAgVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgor
ICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAg
ICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJy
YXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUg
MzMwLAorICAgIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgorKi8KKworI2luY2x1ZGUgIkRP
TUltcGxlbWVudGF0aW9uTFNJbXBsLmgiCisKKyNpbmNsdWRlICJrZG9tLmgiCisjaW5jbHVkZSAi
a2RvbWxzLmgiCisjaW5jbHVkZSAiTmFtZXNwYWNlLmgiCisjaW5jbHVkZSAiTFNJbnB1dEltcGwu
aCIKKyNpbmNsdWRlICJMU091dHB1dEltcGwuaCIKKyNpbmNsdWRlICJMU1BhcnNlckltcGwuaCIK
KyNpbmNsdWRlICJET01TdHJpbmdJbXBsLmgiCisjaW5jbHVkZSAiRE9NRXhjZXB0aW9uSW1wbC5o
IgorI2luY2x1ZGUgIkxTU2VyaWFsaXplckltcGwuaCIKKwordXNpbmcgbmFtZXNwYWNlIEtET007
CisKK0RPTUltcGxlbWVudGF0aW9uTFNJbXBsOjpET01JbXBsZW1lbnRhdGlvbkxTSW1wbCgpCit7
Cit9CisKK0RPTUltcGxlbWVudGF0aW9uTFNJbXBsOjp+RE9NSW1wbGVtZW50YXRpb25MU0ltcGwo
KQoreworfQorCitMU1BhcnNlckltcGwgKkRPTUltcGxlbWVudGF0aW9uTFNJbXBsOjpjcmVhdGVM
U1BhcnNlcih1bnNpZ25lZCBzaG9ydCBtb2RlLCBET01TdHJpbmdJbXBsICpzY2hlbWFUeXBlSW1w
bCkgY29uc3QKK3sKKyAgICBRU3RyaW5nIHNjaGVtYVR5cGUgPSBzY2hlbWFUeXBlSW1wbCA/IHNj
aGVtYVR5cGVJbXBsLT5zdHJpbmcoKSA6IFFTdHJpbmcoKTsKKworICAgIC8vIE5PVF9TVVBQT1JU
RURfRVJSOiBSYWlzZWQgaWYgdGhlIHJlcXVlc3RlZCBtb2RlIG9yIHNjaGVtYSB0eXBlIGlzIG5v
dCBzdXBwb3J0ZWQuCisgICAgaWYoKG1vZGUgPT0gMCB8fCBtb2RlID4gTU9ERV9BU1lOQ0hST05P
VVMpIHx8CisgICAgICAgICEoc2NoZW1hVHlwZSA9PSBOU19TQ0hFTUFUWVBFX0RURCB8fCBzY2hl
bWFUeXBlID09IE5TX1NDSEVNQVRZUEVfV1hTIHx8IHNjaGVtYVR5cGUuaXNFbXB0eSgpKSkKKyAg
ICAgICAgdGhyb3cgbmV3IERPTUV4Y2VwdGlvbkltcGwoTk9UX1NVUFBPUlRFRF9FUlIpOworCisg
ICAgTFNQYXJzZXJJbXBsICpyZXQgPSBuZXcgTFNQYXJzZXJJbXBsKCk7CisgICAgcmV0LT5zZXRB
U3luYyhtb2RlID09IE1PREVfQVNZTkNIUk9OT1VTKTsKKyAgICByZXR1cm4gcmV0OworfQorCitM
U0lucHV0SW1wbCAqRE9NSW1wbGVtZW50YXRpb25MU0ltcGw6OmNyZWF0ZUxTSW5wdXQoKSBjb25z
dAoreworICAgIHJldHVybiBuZXcgTFNJbnB1dEltcGwoKTsKK30KKworTFNPdXRwdXRJbXBsICpE
T01JbXBsZW1lbnRhdGlvbkxTSW1wbDo6Y3JlYXRlTFNPdXRwdXQoKSBjb25zdAoreworICAgIHJl
dHVybiBuZXcgTFNPdXRwdXRJbXBsKCk7Cit9CisKK0xTU2VyaWFsaXplckltcGwgKkRPTUltcGxl
bWVudGF0aW9uTFNJbXBsOjpjcmVhdGVMU1NlcmlhbGl6ZXIoKSBjb25zdAoreworICAgIHJldHVy
biBuZXcgTFNTZXJpYWxpemVySW1wbCgpOworfQorCisvLyB2aW06dHM9NDpub2V0CkluZGV4OiBr
ZG9tL2xzL0RPTUltcGxlbWVudGF0aW9uTFNJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZToga2Rv
bS9scy9ET01JbXBsZW1lbnRhdGlvbkxTSW1wbC5oCmRpZmYgLU4ga2RvbS9scy9ET01JbXBsZW1l
bnRhdGlvbkxTSW1wbC5oCi0tLSBrZG9tL2xzL0RPTUltcGxlbWVudGF0aW9uTFNJbXBsLmgJMSBK
YW4gMTk3MCAwMDowMDowMCAtMDAwMAorKysga2RvbS9scy9ET01JbXBsZW1lbnRhdGlvbkxTSW1w
bC5oCTYgU2VwIDIwMDUgMDc6MTc6MjcgLTAwMDAKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAgICBD
b3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5v
cmc+CisgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+
CisKKyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QKKworICAgIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
KyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg
ICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRl
IDMzMCwKKyAgICBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KKyovCisKKyNpZm5kZWYgS0RP
TV9ET01JbXBsZW1lbnRhdGlvbkxTSW1wbF9ICisjZGVmaW5lIEtET01fRE9NSW1wbGVtZW50YXRp
b25MU0ltcGxfSAorCituYW1lc3BhY2UgS0RPTQoreworICAgIGNsYXNzIExTSW5wdXRJbXBsOwor
ICAgIGNsYXNzIExTT3V0cHV0SW1wbDsKKyAgICBjbGFzcyBMU1BhcnNlckltcGw7CisgICAgY2xh
c3MgRE9NU3RyaW5nSW1wbDsKKyAgICBjbGFzcyBMU1NlcmlhbGl6ZXJJbXBsOworCisgICAgY2xh
c3MgRE9NSW1wbGVtZW50YXRpb25MU0ltcGwKKyAgICB7CisgICAgcHVibGljOgorICAgICAgICBE
T01JbXBsZW1lbnRhdGlvbkxTSW1wbCgpOworICAgICAgICB2aXJ0dWFsIH5ET01JbXBsZW1lbnRh
dGlvbkxTSW1wbCgpOworCisgICAgICAgIC8vICdET01JbXBsZW1lbnRhdGlvbkxTJyBmdW5jdGlv
bnMKKyAgICAgICAgdmlydHVhbCBMU1BhcnNlckltcGwgKmNyZWF0ZUxTUGFyc2VyKHVuc2lnbmVk
IHNob3J0IG1vZGUsIERPTVN0cmluZ0ltcGwgKnNjaGVtYVR5cGUpIGNvbnN0OworICAgICAgICB2
aXJ0dWFsIExTSW5wdXRJbXBsICpjcmVhdGVMU0lucHV0KCkgY29uc3Q7CisgICAgICAgIHZpcnR1
YWwgTFNPdXRwdXRJbXBsICpjcmVhdGVMU091dHB1dCgpIGNvbnN0OworICAgICAgICB2aXJ0dWFs
IExTU2VyaWFsaXplckltcGwgKmNyZWF0ZUxTU2VyaWFsaXplcigpIGNvbnN0OworCisgICAgfTsK
K307CisKKyNlbmRpZgorCisvLyB2aW06dHM9NDpub2V0CkluZGV4OiBrZG9tL2xzL0xTUGFyc2Vy
SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1NWR1N1cHBvcnQva2RvbS9s
cy9MU1BhcnNlckltcGwuY3BwLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjUKZGlmZiAtcCAtdSAt
cjEuNSBrZG9tL2xzL0xTUGFyc2VySW1wbC5jcHAKLS0tIGtkb20vbHMvTFNQYXJzZXJJbXBsLmNw
cAkyIFNlcCAyMDA1IDEwOjAzOjEwIC0wMDAwCTEuNQorKysga2RvbS9scy9MU1BhcnNlckltcGwu
Y3BwCTYgU2VwIDIwMDUgMDc6MTc6MjcgLTAwMDAKQEAgLTIyOSw5ICsyMjksOSBAQCBEb2N1bWVu
dEltcGwgKkxTUGFyc2VySW1wbDo6cGFyc2UoTFNJbnB1CiAgICAgcmV0dXJuIHBhcnNlKEtVUkwo
KSwgaW5wdXQsIG1fYXN5bmMpOwogfQogCi1Eb2N1bWVudEltcGwgKkxTUGFyc2VySW1wbDo6cGFy
c2VVUkkoY29uc3QgRE9NU3RyaW5nICZ1cmkpCitEb2N1bWVudEltcGwgKkxTUGFyc2VySW1wbDo6
cGFyc2VVUkkoRE9NU3RyaW5nSW1wbCAqdXJpKQogewotICAgIHJldHVybiBwYXJzZShLVVJMKHVy
aS5zdHJpbmcoKSksIDAsIG1fYXN5bmMpOworICAgIHJldHVybiBwYXJzZShLVVJMKHVyaSA/IHVy
aS0+c3RyaW5nKCkgOiBRU3RyaW5nKCkpLCAwLCBtX2FzeW5jKTsKIH0KIAogdm9pZCBMU1BhcnNl
ckltcGw6OmFib3J0KCkgY29uc3QKSW5kZXg6IGtkb20vbHMvTFNQYXJzZXJJbXBsLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1NWR1N1cHBvcnQva2RvbS9scy9MU1BhcnNlckltcGwu
aCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS40CmRpZmYgLXAgLXUgLXIxLjQga2RvbS9scy9MU1Bh
cnNlckltcGwuaAotLS0ga2RvbS9scy9MU1BhcnNlckltcGwuaAkxIFNlcCAyMDA1IDA5OjM5OjEw
IC0wMDAwCTEuNAorKysga2RvbS9scy9MU1BhcnNlckltcGwuaAk2IFNlcCAyMDA1IDA3OjE3OjI3
IC0wMDAwCkBAIC01OSw3ICs1OSw3IEBAIG5hbWVzcGFjZSBLRE9NCiAgICAgICAgIGJvb2wgYnVz
eSgpIGNvbnN0OwogCiAgICAgICAgIERvY3VtZW50SW1wbCAqcGFyc2UoTFNJbnB1dEltcGwgKmlu
cHV0KTsKLSAgICAgICAgRG9jdW1lbnRJbXBsICpwYXJzZVVSSShjb25zdCBET01TdHJpbmcgJnVy
aSk7CisgICAgICAgIERvY3VtZW50SW1wbCAqcGFyc2VVUkkoRE9NU3RyaW5nSW1wbCAqdXJpKTsK
IAogICAgICAgICBOb2RlSW1wbCAqcGFyc2VXaXRoQ29udGV4dChMU0lucHV0SW1wbCAqaW5wdXQs
IE5vZGVJbXBsICpjb250ZXh0QXJnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBzaG9ydCBhY3Rpb24pOwpJbmRleDoga2RvbS9scy9MU1Jlc291cmNlUmVzb2x2
ZXJJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvU1ZHU3VwcG9ydC9rZG9t
L2xzL0xTUmVzb3VyY2VSZXNvbHZlckltcGwuY3BwLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjMK
ZGlmZiAtcCAtdSAtcjEuMyBrZG9tL2xzL0xTUmVzb3VyY2VSZXNvbHZlckltcGwuY3BwCi0tLSBr
ZG9tL2xzL0xTUmVzb3VyY2VSZXNvbHZlckltcGwuY3BwCTEgU2VwIDIwMDUgMDc6MzM6NTEgLTAw
MDAJMS4zCisrKyBrZG9tL2xzL0xTUmVzb3VyY2VSZXNvbHZlckltcGwuY3BwCTYgU2VwIDIwMDUg
MDc6MTc6MjcgLTAwMDAKQEAgLTMzLDEwICszMywxMCBAQCBMU1Jlc291cmNlUmVzb2x2ZXJJbXBs
Ojp+TFNSZXNvdXJjZVJlc29sCiB7CiB9CiAKLUxTSW5wdXRJbXBsICpMU1Jlc291cmNlUmVzb2x2
ZXJJbXBsOjpyZXNvbHZlUmVzb3VyY2UoY29uc3QgRE9NU3RyaW5nICYvKnR5cGUqLywgY29uc3Qg
RE9NU3RyaW5nICYvKm5zKi8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBET01TdHJpbmcgJi8qcHVibGljSWQqLywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRE9NU3Ry
aW5nICYvKnN5c3RlbUlkKi8sIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBET01TdHJpbmcgJi8qYmFzZVVSSSovKQorTFNJbnB1dElt
cGwgKkxTUmVzb3VyY2VSZXNvbHZlckltcGw6OnJlc29sdmVSZXNvdXJjZShET01TdHJpbmdJbXBs
ICogLyp0eXBlKi8sIERPTVN0cmluZ0ltcGwgKiAvKm5zKi8sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERPTVN0cmluZ0ltcGwgKiAvKnB1Ymxp
Y0lkKi8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERPTVN0cmluZ0ltcGwgKiAvKnN5c3RlbUlkKi8sIAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBET01TdHJpbmdJbXBsICogLypiYXNlVVJJ
Ki8pCiB7CiAgICAgLyogSG0sICJSZXR1cm4gVmFsdWU6IEEgTFNJbnB1dCBvYmplY3QgZGVzY3Jp
YmluZyB0aGUgbmV3IAogICAgICAqIGlucHV0IHNvdXJjZSwgb3IgbnVsbCB0byByZXF1ZXN0IHRo
YXQgdGhlIHBhcnNlciBvcGVuIGEgCkluZGV4OiBrZG9tL2xzL0xTUmVzb3VyY2VSZXNvbHZlcklt
cGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvU1ZHU3VwcG9ydC9rZG9tL2xzL0xT
UmVzb3VyY2VSZXNvbHZlckltcGwuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4yCmRpZmYgLXAg
LXUgLXIxLjIga2RvbS9scy9MU1Jlc291cmNlUmVzb2x2ZXJJbXBsLmgKLS0tIGtkb20vbHMvTFNS
ZXNvdXJjZVJlc29sdmVySW1wbC5oCTEgU2VwIDIwMDUgMDc6MzM6NTEgLTAwMDAJMS4yCisrKyBr
ZG9tL2xzL0xTUmVzb3VyY2VSZXNvbHZlckltcGwuaAk2IFNlcCAyMDA1IDA3OjE3OjI4IC0wMDAw
CkBAIC0yNiw3ICsyNiw3IEBACiAKIG5hbWVzcGFjZSBLRE9NCiB7Ci0gICAgY2xhc3MgRE9NU3Ry
aW5nOworICAgIGNsYXNzIERPTVN0cmluZ0ltcGw7CiAgICAgY2xhc3MgTFNJbnB1dEltcGw7CiAK
ICAgICBjbGFzcyBMU1Jlc291cmNlUmVzb2x2ZXJJbXBsIDogcHVibGljIFNoYXJlZApAQCAtMzUs
OSArMzUsOSBAQCBuYW1lc3BhY2UgS0RPTQogICAgICAgICBMU1Jlc291cmNlUmVzb2x2ZXJJbXBs
KCk7CiAgICAgICAgIHZpcnR1YWwgfkxTUmVzb3VyY2VSZXNvbHZlckltcGwoKTsKIAotICAgICAg
ICBMU0lucHV0SW1wbCAqcmVzb2x2ZVJlc291cmNlKGNvbnN0IERPTVN0cmluZyAmdHlwZSwgY29u
c3QgRE9NU3RyaW5nICZucywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBET01TdHJpbmcgJnB1YmxpY0lkLCBjb25zdCBET01TdHJpbmcgJnN5c3RlbUlkLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IERPTVN0cmluZyAmYmFzZVVS
SSk7CisgICAgICAgIExTSW5wdXRJbXBsICpyZXNvbHZlUmVzb3VyY2UoRE9NU3RyaW5nSW1wbCAq
dHlwZSwgRE9NU3RyaW5nSW1wbCAqbnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRE9NU3RyaW5nSW1wbCAqcHVibGljSWQsIERPTVN0cmluZ0ltcGwgKnN5c3RlbUlkLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERPTVN0cmluZ0ltcGwgKmJhc2VV
UkkpOwogCiAgICAgfTsKIH07CkluZGV4OiBrZG9tL2xzL0xTU2VyaWFsaXplckltcGwuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tkb20vbHMvTFNTZXJpYWxp
emVySW1wbC5jcHAsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNApkaWZmIC1wIC11IC1yMS40IGtk
b20vbHMvTFNTZXJpYWxpemVySW1wbC5jcHAKLS0tIGtkb20vbHMvTFNTZXJpYWxpemVySW1wbC5j
cHAJMSBTZXAgMjAwNSAwNzozMzo1MSAtMDAwMAkxLjQKKysrIGtkb20vbHMvTFNTZXJpYWxpemVy
SW1wbC5jcHAJNiBTZXAgMjAwNSAwNzoxNzoyOCAtMDAwMApAQCAtNzQsOSArNzQsOSBAQCBET01D
b25maWd1cmF0aW9uSW1wbCAqTFNTZXJpYWxpemVySW1wbDo6CiAgICAgcmV0dXJuIG1fY29uZmln
OwogfQogCi1ET01TdHJpbmcgTFNTZXJpYWxpemVySW1wbDo6bmV3TGluZSgpIGNvbnN0CitET01T
dHJpbmdJbXBsICpMU1NlcmlhbGl6ZXJJbXBsOjpuZXdMaW5lKCkgY29uc3QKIHsKLSAgICByZXR1
cm4gRE9NU3RyaW5nKG1fbmV3TGluZSk7CisgICAgcmV0dXJuIG1fbmV3TGluZTsKIH0KIAogdm9p
ZCBMU1NlcmlhbGl6ZXJJbXBsOjpzZXROZXdMaW5lKERPTVN0cmluZ0ltcGwgKm5ld0xpbmUpCkBA
IC0xMzcsMTIgKzEzNywxMiBAQCBib29sIExTU2VyaWFsaXplckltcGw6OndyaXRlVG9VUkkoTm9k
ZUltCiAgICAgcmV0dXJuIHNlcmlhbGl6ZShub2RlQXJnLCAmb3V0cHV0KTsKIH0KIAotRE9NU3Ry
aW5nIExTU2VyaWFsaXplckltcGw6OndyaXRlVG9TdHJpbmcoTm9kZUltcGwgKm5vZGVBcmcpCitE
T01TdHJpbmdJbXBsICpMU1NlcmlhbGl6ZXJJbXBsOjp3cml0ZVRvU3RyaW5nKE5vZGVJbXBsICpu
b2RlQXJnKQogewogICAgIFFTdHJpbmcgc3RyOwogICAgIFFUZXh0T1N0cmVhbSBzdWJzZXQoJnN0
cik7CiAgICAgUHJpbnROb2RlKHN1YnNldCwgbm9kZUFyZywgUVN0cmluZzo6ZnJvbUxhdGluMSgi
ICAiKSwgRE9NU3RyaW5nKG1fbmV3TGluZSkuc3RyaW5nKCksIDAsIG1fY29uZmlnKTsKLSAgICBy
ZXR1cm4gc3RyOworICAgIHJldHVybiBuZXcgRE9NU3RyaW5nSW1wbChzdHIpOwogfQogCiB2b2lk
IExTU2VyaWFsaXplckltcGw6OlByaW50SW50ZXJuYWxTdWJzZXQoUVRleHRTdHJlYW0gJnJldCwg
RG9jdW1lbnRUeXBlSW1wbCAqZG9jVHlwZSwKQEAgLTQ0OCw3ICs0NDgsNyBAQCBET01TdHJpbmdJ
bXBsICpMU1NlcmlhbGl6ZXJJbXBsOjplc2NhcGUoCiAgICAgICAgIGVsc2UgaWYoZXNjYXBlZVtp
XSA9PSAnJicpCiAgICAgICAgICAgICByZXN1bHQtPmFwcGVuZCgiJmFtcDsiKTsKICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgcmVzdWx0LT5hcHBlbmQoZXNjYXBlZVtpXSk7CisgICAgICAgICAg
ICByZXN1bHQtPmFwcGVuZChRU3RyaW5nKGVzY2FwZWVbaV0pKTsKICAgICB9CiAKICAgICByZXR1
cm4gcmVzdWx0OwpAQCAtNDc1LDcgKzQ3NSw3IEBAIERPTVN0cmluZ0ltcGwgKkxTU2VyaWFsaXpl
ckltcGw6OmVzY2FwZUEKICAgICAgICAgZWxzZSBpZihlc2NhcGVlW2ldID09ICdcJycpCiAgICAg
ICAgICAgICByZXN1bHQtPmFwcGVuZCgiJmFwb3M7Iik7CiAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIHJlc3VsdC0+YXBwZW5kKGVzY2FwZWVbaV0pOworICAgICAgICAgICAgcmVzdWx0LT5hcHBl
bmQoUVN0cmluZyhlc2NhcGVlW2ldKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIHJlc3VsdDsKSW5k
ZXg6IGtkb20vbHMvTFNTZXJpYWxpemVySW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMv
cm9vdC9TVkdTdXBwb3J0L2tkb20vbHMvTFNTZXJpYWxpemVySW1wbC5oLHYKcmV0cmlldmluZyBy
ZXZpc2lvbiAxLjQKZGlmZiAtcCAtdSAtcjEuNCBrZG9tL2xzL0xTU2VyaWFsaXplckltcGwuaAot
LS0ga2RvbS9scy9MU1NlcmlhbGl6ZXJJbXBsLmgJMSBTZXAgMjAwNSAwNzozMzo1MSAtMDAwMAkx
LjQKKysrIGtkb20vbHMvTFNTZXJpYWxpemVySW1wbC5oCTYgU2VwIDIwMDUgMDc6MTc6MjggLTAw
MDAKQEAgLTMxLDcgKzMxLDcgQEAgY2xhc3MgUVRleHRTdHJlYW07CiBuYW1lc3BhY2UgS0RPTQog
ewogICAgIGNsYXNzIE5vZGVJbXBsOwotICAgIGNsYXNzIERPTVN0cmluZzsKKyAgICBjbGFzcyBE
T01TdHJpbmdJbXBsOwogICAgIGNsYXNzIERPTUNvbmZpZ3VyYXRpb25JbXBsOwogICAgIGNsYXNz
IExTT3V0cHV0SW1wbDsKICAgICBjbGFzcyBMU1NlcmlhbGl6ZXJGaWx0ZXJJbXBsOwpAQCAtNDYs
NyArNDYsNyBAQCBuYW1lc3BhY2UgS0RPTQogICAgICAgICAvLyAnTFNTZXJpYWxpemVyJyBmdW5j
dGlvbnMKICAgICAgICAgRE9NQ29uZmlndXJhdGlvbkltcGwgKmRvbUNvbmZpZygpIGNvbnN0Owog
Ci0gICAgICAgIERPTVN0cmluZyBuZXdMaW5lKCkgY29uc3Q7CisgICAgICAgIERPTVN0cmluZ0lt
cGwgKm5ld0xpbmUoKSBjb25zdDsKICAgICAgICAgdm9pZCBzZXROZXdMaW5lKERPTVN0cmluZ0lt
cGwgKm5ld0xpbmUpOwogCiAgICAgICAgIExTU2VyaWFsaXplckZpbHRlckltcGwgKmZpbHRlcigp
IGNvbnN0OwpAQCAtNTQsNyArNTQsNyBAQCBuYW1lc3BhY2UgS0RPTQogCiAgICAgICAgIGJvb2wg
d3JpdGUoTm9kZUltcGwgKm5vZGVBcmcsIExTT3V0cHV0SW1wbCAqb3V0cHV0KTsKICAgICAgICAg
Ym9vbCB3cml0ZVRvVVJJKE5vZGVJbXBsICpub2RlQXJnLCBET01TdHJpbmdJbXBsICp1cmkpOwot
ICAgICAgICBET01TdHJpbmcgd3JpdGVUb1N0cmluZyhOb2RlSW1wbCAqbm9kZUFyZyk7CisgICAg
ICAgIERPTVN0cmluZ0ltcGwgKndyaXRlVG9TdHJpbmcoTm9kZUltcGwgKm5vZGVBcmcpOwogCiAg
ICAgICAgIC8vIEludGVybmFsCiAgICAgICAgIHN0YXRpYyB2b2lkIFByaW50Tm9kZShRVGV4dFN0
cmVhbSAmcmV0LCBOb2RlSW1wbCAqbm9kZSwKSW5kZXg6IGtkb20vcGFyc2VyL0tET01QYXJzZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tkb20vcGFyc2Vy
L0tET01QYXJzZXIuY3BwLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjQKZGlmZiAtcCAtdSAtcjEu
NCBrZG9tL3BhcnNlci9LRE9NUGFyc2VyLmNwcAotLS0ga2RvbS9wYXJzZXIvS0RPTVBhcnNlci5j
cHAJMSBTZXAgMjAwNSAwNzozMzo1NCAtMDAwMAkxLjQKKysrIGtkb20vcGFyc2VyL0tET01QYXJz
ZXIuY3BwCTYgU2VwIDIwMDUgMDc6MTc6MjggLTAwMDAKQEAgLTIxMiwxNCArMjEyLDE2IEBAIFFC
dWZmZXIgKlBhcnNlcjo6YnVmZmVyRm9yVXJsKGNvbnN0IEtVUkwKICAgICAgICAgcmV0dXJuIDA7
CiAKICAgICBRRmlsZSBmaWxlKHRlbXBvcmFyeUZpbGVOYW1lKTsKLSAgICBpZighZmlsZS5vcGVu
KElPX1JlYWRPbmx5KSkKKyAgICBpZighZmlsZS5vcGVuKFFJT0RldmljZTo6UmVhZE9ubHkpKQog
ICAgIHsKICAgICAgICAgLy8gQ2FuIGEgZmlsZSBiZSBjb3JyZWN0bHkgZG93bmxvYWRlZCBidXQg
bm90IG9wZW5lZD8KICAgICAgICAgS0lPOjpOZXRBY2Nlc3M6OnJlbW92ZVRlbXBGaWxlKHRlbXBv
cmFyeUZpbGVOYW1lKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgUUJ1ZmZlciAq
cmV0ID0gbmV3IFFCdWZmZXIoZmlsZS5yZWFkQWxsKCkpOworICAgIFFCdWZmZXIgKnJldCA9IG5l
dyBRQnVmZmVyOworICAgIHJldC0+b3BlbihRQnVmZmVyOjpSZWFkV3JpdGUpOworICAgIHJldC0+
d3JpdGUoZmlsZS5yZWFkQWxsKCkpOwogICAgIEtJTzo6TmV0QWNjZXNzOjpyZW1vdmVUZW1wRmls
ZSh0ZW1wb3JhcnlGaWxlTmFtZSk7CiAKICAgICByZXR1cm4gcmV0OwpJbmRleDoga2RvbS9yYW5n
ZS9SYW5nZUltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0
L2tkb20vcmFuZ2UvUmFuZ2VJbXBsLmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4zCmRpZmYg
LXAgLXUgLXIxLjMga2RvbS9yYW5nZS9SYW5nZUltcGwuY3BwCi0tLSBrZG9tL3JhbmdlL1Jhbmdl
SW1wbC5jcHAJMSBTZXAgMjAwNSAwNzozMzo1NSAtMDAwMAkxLjMKKysrIGtkb20vcmFuZ2UvUmFu
Z2VJbXBsLmNwcAk2IFNlcCAyMDA1IDA3OjE3OjI5IC0wMDAwCkBAIC05MDksNyArOTA5LDcgQEAg
UmFuZ2VJbXBsICpSYW5nZUltcGw6OmNsb25lUmFuZ2UoKQogICAgIHJldHVybiBuZXcgUmFuZ2VJ
bXBsKG1fb3duZXJEb2N1bWVudCwgbV9zdGFydENvbnRhaW5lciwgbV9zdGFydE9mZnNldCwgbV9l
bmRDb250YWluZXIsIG1fZW5kT2Zmc2V0KTsKIH0KIAotRE9NU3RyaW5nIFJhbmdlSW1wbDo6dG9T
dHJpbmcoKQorRE9NU3RyaW5nSW1wbCAqUmFuZ2VJbXBsOjp0b1N0cmluZygpCiB7CiAgICAgLyog
VGhpcyBmdW5jdGlvbiBjb252ZXJ0cyBhIGRvbSByYW5nZSB0byB0aGUgcGxhaW4gdGV4dCBzdHJp
bmcgdGhhdCB0aGUgdXNlciB3b3VsZCBzZWUgaW4gdGhpcwogICAgICAqIHBvcnRpb24gb2YgcmVu
ZGVyZWQgaHRtbC4KQEAgLTk0MCw5ICs5NDAsMTAgQEAgRE9NU3RyaW5nIFJhbmdlSW1wbDo6dG9T
dHJpbmcoKQogICAgICAqICAgICAgICAgCiAgICAgICovCiAgICAgCi0gICAgRE9NU3RyaW5nIHRl
eHQ7CiAgICAgaWYoIG1fc3RhcnRDb250YWluZXIgPT0gbV9lbmRDb250YWluZXIgJiYgbV9zdGFy
dE9mZnNldCA+PSBtX2VuZE9mZnNldCkKLSAgICAgICAgcmV0dXJuIHRleHQ7CisgICAgICAgIHJl
dHVybiAwOworCisgICAgRE9NU3RyaW5nSW1wbCAqdGV4dCA9IG5ldyBET01TdHJpbmdJbXBsKCk7
OwogCiAgICAgYm9vbCBza2lwTm9kZSA9IGZhbHNlOwogICAgIGJvb2wgZW5kQWZ0ZXIgPSBmYWxz
ZTsKQEAgLTk4MCwxNSArOTgxLDE1IEBAIERPTVN0cmluZyBSYW5nZUltcGw6OnRvU3RyaW5nKCkK
ICAgICAgICAgICAgIGlmKG4tPm5vZGVUeXBlKCkgPT0gVEVYVF9OT0RFIHx8CiAgICAgICAgICAg
ICAgICBuLT5ub2RlVHlwZSgpID09IENEQVRBX1NFQ1RJT05fTk9ERSkgewogICAgIAotICAgICAg
ICAgICAgICAgIERPTVN0cmluZyBzdHIoc3RhdGljX2Nhc3Q8VGV4dEltcGwgKj4obiktPnRvU3Ry
aW5nKCkpOwotICAgICAgICAgICAgICAgIGlmKCBuID09IG1fZW5kQ29udGFpbmVyIHx8IG4gPT0g
bV9zdGFydENvbnRhaW5lcikgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBzdHIgPSBzdHIu
Y29weSgpOyAgLy9jb3B5IGlmIHdlIGFyZSBnb2luZyB0byBtb2RpZnkuCisgICAgICAgICAgICAg
ICAgRE9NU3RyaW5nSW1wbCAqc3RyID0gc3RhdGljX2Nhc3Q8VGV4dEltcGwgKj4obiktPnRvU3Ry
aW5nKCk7CisgICAgICAgICAgICAgICAgaWYobiA9PSBtX2VuZENvbnRhaW5lciB8fCBuID09IG1f
c3RhcnRDb250YWluZXIpCisgICAgICAgICAgICAgICAgICAgIHN0ciA9IHN0ci0+Y29weSgpOyAg
Ly9jb3B5IGlmIHdlIGFyZSBnb2luZyB0byBtb2RpZnkuCiAgICAgCiAgICAgICAgICAgICAgICAg
aWYgKG4gPT0gbV9lbmRDb250YWluZXIpCi0gICAgICAgICAgICAgICAgICAgIHN0ci50cnVuY2F0
ZShtX2VuZE9mZnNldCk7CisgICAgICAgICAgICAgICAgICAgIHN0ci0+dHJ1bmNhdGUobV9lbmRP
ZmZzZXQpOwogICAgICAgICAgICAgICAgIGlmIChuID09IG1fc3RhcnRDb250YWluZXIpCi0gICAg
ICAgICAgICAgICAgICAgIHN0ci5yZW1vdmUoMCxtX3N0YXJ0T2Zmc2V0KTsKLSAgICAgICAgICAg
ICAgICB0ZXh0ICs9IHN0cjsKKyAgICAgICAgICAgICAgICAgICAgc3RyLT5yZW1vdmUoMCxtX3N0
YXJ0T2Zmc2V0KTsKKyAgICAgICAgICAgICAgICB0ZXh0LT5hcHBlbmQoc3RyKTsKICAgICAgICAg
ICAgICAgICBpZiAobiA9PSBlbmROb2RlKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIH0gZWxzZSAKSW5kZXg6IGtkb20vcmFuZ2UvUmFuZ2VJbXBsLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQpSQ1MgZmlsZTogL2N2cy9yb290L1NWR1N1cHBvcnQva2RvbS9yYW5nZS9SYW5nZUltcGwuaCx2
CnJldHJpZXZpbmcgcmV2aXNpb24gMS4zCmRpZmYgLXAgLXUgLXIxLjMga2RvbS9yYW5nZS9SYW5n
ZUltcGwuaAotLS0ga2RvbS9yYW5nZS9SYW5nZUltcGwuaAkxIFNlcCAyMDA1IDA3OjMzOjU1IC0w
MDAwCTEuMworKysga2RvbS9yYW5nZS9SYW5nZUltcGwuaAk2IFNlcCAyMDA1IDA3OjE3OjI5IC0w
MDAwCkBAIC0zMiw4ICszMiw4IEBAIG5hbWVzcGFjZSBLRE9NCiB7CiAKIGNsYXNzIE5vZGVJbXBs
OwotY2xhc3MgRE9NU3RyaW5nOwogY2xhc3MgRG9jdW1lbnRQdHI7CitjbGFzcyBET01TdHJpbmdJ
bXBsOwogY2xhc3MgRG9jdW1lbnRGcmFnbWVudEltcGw7CiAKIGNsYXNzIFJhbmdlSW1wbCA6IHB1
YmxpYyBTaGFyZWQKQEAgLTc0LDcgKzc0LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNEZXRhY2hl
ZCgpIGNvbnN0OwogICAgIAogICAgIFJhbmdlSW1wbCAqY2xvbmVSYW5nZSgpOwotICAgIERPTVN0
cmluZyB0b1N0cmluZygpOworICAgIERPTVN0cmluZ0ltcGwgKnRvU3RyaW5nKCk7CiAKICAgICB2
b2lkIHNldFN0YXJ0QWZ0ZXIoTm9kZUltcGwgKnJlZk5vZGUpOwogICAgIHZvaWQgc2V0RW5kQmVm
b3JlKE5vZGVJbXBsICpyZWZOb2RlKTsKSW5kZXg6IGtkb20veHBvaW50ZXIvUG9pbnRlclBhcnRJ
bXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvU1ZHU3VwcG9ydC9rZG9tL3hw
b2ludGVyL1BvaW50ZXJQYXJ0SW1wbC5jcHAsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMwpkaWZm
IC1wIC11IC1yMS4zIGtkb20veHBvaW50ZXIvUG9pbnRlclBhcnRJbXBsLmNwcAotLS0ga2RvbS94
cG9pbnRlci9Qb2ludGVyUGFydEltcGwuY3BwCTEgU2VwIDIwMDUgMDc6MzQ6MDggLTAwMDAJMS4z
CisrKyBrZG9tL3hwb2ludGVyL1BvaW50ZXJQYXJ0SW1wbC5jcHAJNiBTZXAgMjAwNSAwNzoxNzoy
OSAtMDAwMApAQCAtMjIsMTEgKzIyLDExIEBACiAKICNpbmNsdWRlIDxrZGVidWcuaD4KIAorI2lu
Y2x1ZGUgIkRPTVN0cmluZ0ltcGwuaCIKICNpbmNsdWRlICJOQkNJbXBsLmgiCisjaW5jbHVkZSAi
WFBvaW50ZXJSZXN1bHRJbXBsLmgiCiAKLSNpbmNsdWRlICJET01TdHJpbmdJbXBsLmgiCiAjaW5j
bHVkZSAiUG9pbnRlclBhcnRJbXBsLmgiCi0jaW5jbHVkZSAiWFBvaW50ZXJSZXN1bHRJbXBsLmgi
CiAKIHVzaW5nIG5hbWVzcGFjZSBLRE9NOwogdXNpbmcgbmFtZXNwYWNlIEtET006OlhQb2ludGVy
OwpAQCAtMzQsNyArMzQsMTEgQEAgdXNpbmcgbmFtZXNwYWNlIEtET006OlhQb2ludGVyOwogUG9p
bnRlclBhcnRJbXBsOjpQb2ludGVyUGFydEltcGwoRE9NU3RyaW5nSW1wbCAqbmFtZSwgRE9NU3Ry
aW5nSW1wbCAqc2NoZW1lRGF0YSwgTkJDSW1wbCAqbmJjKQogOiBTaGFyZWQoKSwgbV9kYXRhKHNj
aGVtZURhdGEpLCBtX25hbWUobmFtZSksIG1fbmJjKG5iYykKIHsKLSAgICBrZERlYnVnKDI2NTUw
KSA8PCAiQ3JlYXRlZCBQb2ludGVyUGFydDogbmFtZT1cIiIgPDwgbmFtZSA8PCAiXCIgc2NoZW1l
RGF0YT1cIiIgPDwgc2NoZW1lRGF0YSA8PCAiXCIuIiA8PCBlbmRsOworICAgIFFfQVNTRVJUKG1f
bmFtZSk7CisgICAgUV9BU1NFUlQobV9kYXRhKTsKKyAgICBrZERlYnVnKDI2NTUwKSA8PCAiQ3Jl
YXRlZCBQb2ludGVyUGFydDogIiA8PCBlbmRsOworICAgIGtkRGVidWcoMjY1NTApIDw8ICIgICAg
IG5hbWUgPSBcIiIgPDwgbmFtZS0+c3RyaW5nKCkgPDwgIlwiIiA8PCBlbmRsOworICAgIGtkRGVi
dWcoMjY1NTApIDw8ICIgICAgIHNjaGVtZURhdGEgPSBcIiIgPDwgKG1fZGF0YSA/IHNjaGVtZURh
dGEtPnN0cmluZygpIDogUVN0cmluZygpKSA8PCAiXCIiIDw8IGVuZGw7CiAKICAgICBpZihtX25h
bWUpCiAgICAgICAgIG1fbmFtZS0+cmVmKCk7CkluZGV4OiBrZG9tL3hwb2ludGVyL1Nob3J0SGFu
ZEltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tkb20v
eHBvaW50ZXIvU2hvcnRIYW5kSW1wbC5jcHAsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMwpkaWZm
IC1wIC11IC1yMS4zIGtkb20veHBvaW50ZXIvU2hvcnRIYW5kSW1wbC5jcHAKLS0tIGtkb20veHBv
aW50ZXIvU2hvcnRIYW5kSW1wbC5jcHAJMSBTZXAgMjAwNSAwNzozNDowOCAtMDAwMAkxLjMKKysr
IGtkb20veHBvaW50ZXIvU2hvcnRIYW5kSW1wbC5jcHAJNiBTZXAgMjAwNSAwNzoxNzozMCAtMDAw
MApAQCAtNDMsNyArNDMsOCBAQCBTaG9ydEhhbmRJbXBsOjpTaG9ydEhhbmRJbXBsKERPTVN0cmlu
Z0ltCiB7CiAgICAgaWYoIUhlbHBlcjo6SXNWYWxpZE5DTmFtZShzdHIpKQogICAgIHsKLSAgICAg
ICAga2RXYXJuaW5nKCkgPDwgIlwiIiA8PCBzdHIgPDwgIlwiIGlzIG5vdCBhIHZhbGlkIHNob3J0
IGhhbmQgcG9pbnRlci4gVE9ETyBET01FcnJvci4iIDw8IGVuZGw7CisgICAgICAgIGtkV2Fybmlu
ZygpIDw8ICJcIiIgPDwgc3RyLT5zdHJpbmcoKSA8PCAiXCIgaXMgbm90IGEgdmFsaWQgc2hvcnQg
IgorICAgICAgICAgICAgICAgICJoYW5kIHBvaW50ZXIuIFRPRE8gRE9NRXJyb3IuIiA8PCBlbmRs
OwogICAgICAgICB0aHJvdyBuZXcgWFBvaW50ZXJFeGNlcHRpb25JbXBsKElOVkFMSURfRVhQUkVT
U0lPTl9FUlIpOwogICAgIH0KIH0KSW5kZXg6IGtkb20veHBvaW50ZXIvWFBvaW50ZXJFdmFsdWF0
b3JJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvU1ZHU3VwcG9ydC9rZG9t
L3hwb2ludGVyL1hQb2ludGVyRXZhbHVhdG9ySW1wbC5jcHAsdgpyZXRyaWV2aW5nIHJldmlzaW9u
IDEuNApkaWZmIC1wIC11IC1yMS40IGtkb20veHBvaW50ZXIvWFBvaW50ZXJFdmFsdWF0b3JJbXBs
LmNwcAotLS0ga2RvbS94cG9pbnRlci9YUG9pbnRlckV2YWx1YXRvckltcGwuY3BwCTIgU2VwIDIw
MDUgMTA6MDM6MTQgLTAwMDAJMS40CisrKyBrZG9tL3hwb2ludGVyL1hQb2ludGVyRXZhbHVhdG9y
SW1wbC5jcHAJNiBTZXAgMjAwNSAwNzoxNzozMCAtMDAwMApAQCAtNzksNyArNzksNiBAQCBYUG9p
bnRlckV4cHJlc3Npb25JbXBsICpYUG9pbnRlckV2YWx1YXRvCiAgICAgaWYoZmlyc3RQYXJhbiA9
PSAtMSkgLyogV2UgaGF2ZSBhbiBpbnZhbGlkIFNjaGVtZU5hbWUgb3IgYSBTaG9ydEhhbmQgcG9p
bnRlci4gQXNzdW1lIHRoZSBsYXR0ZXIuICovCiAgICAgewogICAgICAgICBYUG9pbnRlckV4cHJl
c3Npb25JbXBsICp4cHIgPSBuZXcgWFBvaW50ZXJFeHByZXNzaW9uSW1wbChzdHJpbmdJbXBsLCBy
ZWxhdGVkTm9kZSwgVEhJUyk7Ci0gICAgICAgIHhwci0+cmVmKCk7CiAKICAgICAgICAgU2hvcnRI
YW5kSW1wbCAqc2ggPSBuZXcgU2hvcnRIYW5kSW1wbChET01TdHJpbmcoc3RyaXBwZWQpLmhhbmRs
ZSgpKTsKICAgICAgICAgc2gtPnJlZigpOwpAQCAtOTQsMTIgKzkzLDEyIEBAIFhQb2ludGVyRXhw
cmVzc2lvbkltcGwgKlhQb2ludGVyRXZhbHVhdG8KICAgICBpbnQgcGFyYW5EZXB0aCA9IDA7IC8q
IFRoaXMgbWF5IGJlIG5lZ2F0aXZlIGlmIHRoZSBwYXJhbnRlc2VzIGFyZSBiYWxhbmNlZCBpbXBy
b3Blcmx5LiAqLwogCiAgICAgRE9NU3RyaW5nIHNjaGVtZU5hbWU7Ci0KICAgICBET01TdHJpbmcg
c2NoZW1lRGF0YTsKLSAgICB1bnNpZ25lZCBpbnQgZW5kUHJldlNjaGVtZSA9IDA7IC8qIFRoZSBp
bmRleCBvZiB3aGVyZSB0aGUgcHJldmlvdXMgc2NoZW1lIGVuZGVkLiBUaGF0J3MgYWZ0ZXIgaXQn
cwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2luZyBwYXJhbnRl
c2UuICovCi0gICAgdW5zaWduZWQgaW50IHN0YXJ0RGF0YSA9IDA7IC8qIFRoZSBpbmRleCBvZiB3
aGVyZSB0aGUgc2NoZW1lIGRhdGEgc3RhcnRzLiBUaGF0J3MgcmlnaHQgYWZ0ZXIgdGhlIHBhcmFu
dGVzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZnRlciB0aGUgc2NoZW1l
IG5hbWUuICovCisgICAgdW5zaWduZWQgaW50IGVuZFByZXZTY2hlbWUgPSAwOyAvKiBUaGUgaW5k
ZXggb2Ygd2hlcmUgdGhlIHByZXZpb3VzIHNjaGVtZSAKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGVuZGVkLiBUaGF0J3MgYWZ0ZXIgaXQncyBjbG9zaW5nIHBhcmFudGVz
ZS4gKi8KKyAgICB1bnNpZ25lZCBpbnQgc3RhcnREYXRhID0gMDsgLyogVGhlIGluZGV4IG9mIHdo
ZXJlIHRoZSBzY2hlbWUgZGF0YSBzdGFydHMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFRoYXQncyByaWdodCBhZnRlciB0aGUgcGFyYW50ZXNlIGFmdGVyIAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgc2NoZW1lIG5hbWUuICovCiAKICAgICB0eXBl
ZGVmIFFQYWlyPERPTVN0cmluZywgRE9NU3RyaW5nPiBTdHJQYWlyOwogICAgIApAQCAtMjEwLDgg
KzIwOSwxMCBAQCBYUG9pbnRlckV4cHJlc3Npb25JbXBsICpYUG9pbnRlckV2YWx1YXRvCiAgICAg
ICAgICAgICBpZihwcmVmaXggJiYgIXByZWZpeC0+aXNFbXB0eSgpICYmIERPTVN0cmluZyhjdXJy
ZW50TkJDLT5sb29rdXBOYW1lc3BhY2VVUkkocHJlZml4KSkuaXNFbXB0eSgpKQogICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOyAKIAotICAgICAgICAgICAga2REZWJ1ZygpIDw8ICJFbmNvdW50ZXJl
ZCB1bmtub3duIHNjaGVtZTogXCIiIDw8IERPTVN0cmluZyhzY2hlbWVOYW1lKS5zdHJpbmcoKSA8
PCAiXCIuIiA8PCBlbmRsOwotICAgICAgICAgICAgUG9pbnRlclBhcnRJbXBsICpwID0gbmV3IFBv
aW50ZXJQYXJ0SW1wbChzY2hlbWVOYW1lLmhhbmRsZSgpLCBzY2hlbWVEYXRhLmhhbmRsZSgpLCBj
dXJyZW50TkJDKTsKKyAgICAgICAgICAgIGtkRGVidWcoMjY1NTApIDw8ICJFbmNvdW50ZXJlZCB1
bmtub3duIHNjaGVtZTogXCIiIAorICAgICAgICAgICAgICAgICAgICA8PCBET01TdHJpbmcoc2No
ZW1lTmFtZSkuc3RyaW5nKCkgPDwgIlwiLiIgPDwgZW5kbDsKKyAgICAgICAgICAgIFBvaW50ZXJQ
YXJ0SW1wbCAqcCA9IG5ldyBQb2ludGVyUGFydEltcGwoc2NoZW1lTmFtZS5oYW5kbGUoKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NoZW1l
RGF0YS5oYW5kbGUoKSwgY3VycmVudE5CQyk7CiAgICAgICAgICAgICBwLT5yZWYoKTsKICAgICAg
ICAgICAgIHhwci0+YXBwZW5kUGFydChwKTsKIApJbmRleDoga2RvbS94cG9pbnRlci9YUG9pbnRl
clJlc3VsdEltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvU1ZHU3VwcG9ydC9r
ZG9tL3hwb2ludGVyL1hQb2ludGVyUmVzdWx0SW1wbC5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAx
LjMKZGlmZiAtcCAtdSAtcjEuMyBrZG9tL3hwb2ludGVyL1hQb2ludGVyUmVzdWx0SW1wbC5oCi0t
LSBrZG9tL3hwb2ludGVyL1hQb2ludGVyUmVzdWx0SW1wbC5oCTEgU2VwIDIwMDUgMDc6MzQ6MDkg
LTAwMDAJMS4zCisrKyBrZG9tL3hwb2ludGVyL1hQb2ludGVyUmVzdWx0SW1wbC5oCTYgU2VwIDIw
MDUgMDc6MTc6MzAgLTAwMDAKQEAgLTI0LDYgKzI0LDcgQEAKICNkZWZpbmUgS0RPTV9YUG9pbnRl
cl9YUG9pbnRlclJlc3VsdEltcGxfSAogCiAjaW5jbHVkZSA8a2RvbS9TaGFyZWQuaD4KKyNpbmNs
dWRlIDxrZG9tL3hwb2ludGVyL2tkb214cG9pbnRlci5oPgogCiBuYW1lc3BhY2UgS0RPTQogewpA
QCAtMzIsMjIgKzMzLDYgQEAgY2xhc3MgTm9kZUltcGw7CiAKIG5hbWVzcGFjZSBYUG9pbnRlcgog
ewotICAgIC8qKgotICAgICAqIEFuIGludGVnZXIgaW5kaWNhdGluZyB3aGF0IHR5cGUgb2YgcmVz
dWx0IHRoaXMgaXMuCi0gICAgICovCi0gICAgZW51bSBSZXN1bHRUeXBlCi0gICAgewotICAgICAg
ICAvKioKLSAgICAgICAgICogVGhlIHBvaW50ZXIgbWF0Y2hlZCBubyBub2Rlcy4KLSAgICAgICAg
ICovCi0gICAgICAgIE5PX01BVENIID0gMSwKLQotICAgICAgICAvKioKLSAgICAgICAgICogVGhl
IHBvaW50ZXIgaWRlbnRpZmVkIGEgc2luZ2xlIG5vZGUuCi0gICAgICAgICAqLwotICAgICAgICBT
SU5HTEVfTk9ERSA9IDIKLSAgICB9OwotCiAgICAgY2xhc3MgWFBvaW50ZXJSZXN1bHRJbXBsIDog
cHVibGljIFNoYXJlZAogICAgIHsKICAgICBwdWJsaWM6CkluZGV4OiBrZG9tL3hwb2ludGVyL2tk
b214cG9pbnRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tk
b20veHBvaW50ZXIva2RvbXhwb2ludGVyLmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMgpkaWZm
IC1wIC11IC1yMS4yIGtkb20veHBvaW50ZXIva2RvbXhwb2ludGVyLmgKLS0tIGtkb20veHBvaW50
ZXIva2RvbXhwb2ludGVyLmgJMSBTZXAgMjAwNSAwNzozNDowNyAtMDAwMAkxLjIKKysrIGtkb20v
eHBvaW50ZXIva2RvbXhwb2ludGVyLmgJNiBTZXAgMjAwNSAwNzoxNzozMCAtMDAwMApAQCAtOTYs
NiArOTYsMjMgQEAgbmFtZXNwYWNlIFhQb2ludGVyCiAgICAgICAgICAqLwogICAgICAgICBJTlZB
TElEX0VOQ09ESU5HID0gNAogICAgIH07CisKKyAgICAvKioKKyAgICAgKiBBbiBpbnRlZ2VyIGlu
ZGljYXRpbmcgd2hhdCB0eXBlIG9mIHJlc3VsdCB0aGlzIGlzLgorICAgICAqLworICAgIGVudW0g
UmVzdWx0VHlwZQorICAgIHsKKyAgICAgICAgLyoqCisgICAgICAgICAqIFRoZSBwb2ludGVyIG1h
dGNoZWQgbm8gbm9kZXMuCisgICAgICAgICAqLworICAgICAgICBOT19NQVRDSCA9IDEsCisKKyAg
ICAgICAgLyoqCisgICAgICAgICAqIFRoZSBwb2ludGVyIGlkZW50aWZlZCBhIHNpbmdsZSBub2Rl
LgorICAgICAgICAgKi8KKyAgICAgICAgU0lOR0xFX05PREUgPSAyCisgICAgfTsKKwogfTsKIH07
CiAKSW5kZXg6IGtzdmcyL0tTVkdGYWN0b3J5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3Zz
L3Jvb3QvU1ZHU3VwcG9ydC9rc3ZnMi9LU1ZHRmFjdG9yeS5jcHAsdgpyZXRyaWV2aW5nIHJldmlz
aW9uIDEuNQpkaWZmIC1wIC11IC1yMS41IGtzdmcyL0tTVkdGYWN0b3J5LmNwcAotLS0ga3N2ZzIv
S1NWR0ZhY3RvcnkuY3BwCTIgU2VwIDIwMDUgMTA6MDM6MTUgLTAwMDAJMS41CisrKyBrc3ZnMi9L
U1ZHRmFjdG9yeS5jcHAJNiBTZXAgMjAwNSAwNzoxNzozMSAtMDAwMApAQCAtMjMsNiArMjMsOCBA
QAogI2luY2x1ZGUgPGFzc2VydC5oPgogCiAjaW5jbHVkZSA8cXJlZ2V4cC5oPgorLy9BZGRlZCBi
eSBxdDN0bzQ6CisjaW5jbHVkZSA8UTNQdHJMaXN0PgogCiAjaW5jbHVkZSA8a2RlYnVnLmg+CiAj
aW5jbHVkZSA8a2Fib3V0ZGF0YS5oPgpAQCAtOTQsNyArOTYsNyBAQCBLUGFydHM6OlBhcnQgKktT
VkdGYWN0b3J5OjpjcmVhdGVQYXJ0T2JqCiAgICAgYm9vbCBkdW1teTsKICAgICBRUmVnRXhwIHIx
KFFTdHJpbmc6OmZyb21MYXRpbjEoIihXSURUSCkoXFxzKj1cXHMqXCIpKFxcZCspKFxcdyopKFwi
KSIpKTsKICAgICBRUmVnRXhwIHIyKFFTdHJpbmc6OmZyb21MYXRpbjEoIihIRUlHSFQpKFxccyo9
XFxzKlwiKShcXGQrKShcXHcqKShcIikiKSk7Ci0gICAgZm9yKFEzVmFsdWVMaXN0Q29uc3RJdGVy
YXRvcjxRU3RyaW5nPiBpdCA9IGFyZ3MuYmVnaW4oKTsgaXQgIT0gYXJncy5lbmQoKTsgKytpdCkg
CisgICAgZm9yKFFTdHJpbmdMaXN0OjpDb25zdEl0ZXJhdG9yIGl0ID0gYXJncy5iZWdpbigpOyBp
dCAhPSBhcmdzLmVuZCgpOyArK2l0KSAKICAgICB7CiAgICAgICAgIGlmKHIxLnNlYXJjaCgqaXQp
ID4gLTEpCiAgICAgICAgICAgICB3aWR0aCA9IHIxLmNhcCgzKS50b1VJbnQoJmR1bW15KTsKSW5k
ZXg6IGtzdmcyL2Nzcy9TVkdDU1NTdHlsZVNlbGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxl
OiAvY3ZzL3Jvb3QvU1ZHU3VwcG9ydC9rc3ZnMi9jc3MvU1ZHQ1NTU3R5bGVTZWxlY3Rvci5jcHAs
dgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNgpkaWZmIC1wIC11IC1yMS42IGtzdmcyL2Nzcy9TVkdD
U1NTdHlsZVNlbGVjdG9yLmNwcAotLS0ga3N2ZzIvY3NzL1NWR0NTU1N0eWxlU2VsZWN0b3IuY3Bw
CTIgU2VwIDIwMDUgMTA6MDM6MTUgLTAwMDAJMS42CisrKyBrc3ZnMi9jc3MvU1ZHQ1NTU3R5bGVT
ZWxlY3Rvci5jcHAJNiBTZXAgMjAwNSAwNzoxNzozMSAtMDAwMApAQCAtMzAsNiArMzAsNyBAQAog
I2luY2x1ZGUgPGtzdGFuZGFyZGRpcnMuaD4KIAogI2luY2x1ZGUgPHFmaWxlLmg+CisjaW5jbHVk
ZSA8cTNjc3RyaW5nLmg+CiAjaW5jbHVkZSA8cXBhaW50ZGV2aWNlLmg+CiAKICNpbmNsdWRlIDxr
ZG9tL2NvcmUvRWxlbWVudEltcGwuaD4KSW5kZXg6IGtzdmcyL2V2ZW50cy9TVkdFdmVudEltcGwu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tzdmcyL2V2ZW50
cy9TVkdFdmVudEltcGwuY3BwLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjQKZGlmZiAtcCAtdSAt
cjEuNCBrc3ZnMi9ldmVudHMvU1ZHRXZlbnRJbXBsLmNwcAotLS0ga3N2ZzIvZXZlbnRzL1NWR0V2
ZW50SW1wbC5jcHAJMSBTZXAgMjAwNSAwNzozNToyOSAtMDAwMAkxLjQKKysrIGtzdmcyL2V2ZW50
cy9TVkdFdmVudEltcGwuY3BwCTYgU2VwIDIwMDUgMDc6MTc6MzEgLTAwMDAKQEAgLTIwLDEyICsy
MCwxNCBAQAogICAgIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgogKi8KIAorI2luY2x1ZGUg
PGtkb20vY29yZS9ET01TdHJpbmdJbXBsLmg+CisKICNpbmNsdWRlICJTVkdFdmVudEltcGwuaCIK
ICNpbmNsdWRlICJTVkdET01JbXBsZW1lbnRhdGlvbkltcGwuaCIKIAogdXNpbmcgbmFtZXNwYWNl
IEtTVkc7CiAKLVNWR0V2ZW50SW1wbDo6U1ZHRXZlbnRJbXBsKCkgOiBLRE9NOjpFdmVudEltcGwo
S0RPTTo6VHlwZUxhc3RFdmVudCkKK1NWR0V2ZW50SW1wbDo6U1ZHRXZlbnRJbXBsKCkgOiBLRE9N
OjpFdmVudEltcGwoKEtET006OkV2ZW50SW1wbFR5cGUpIFR5cGVTVkdFdmVudCkKIHsKIH0KIApA
QCAtMzYsOSArMzgsMTEgQEAgU1ZHRXZlbnRJbXBsOjp+U1ZHRXZlbnRJbXBsKCkKIHZvaWQgU1ZH
RXZlbnRJbXBsOjppbml0RXZlbnQoS0RPTTo6RE9NU3RyaW5nSW1wbCAqZXZlbnRUeXBlQXJnLCBi
b29sIGNhbkJ1YmJsZUFyZywgYm9vbCBjYW5jZWxhYmxlQXJnKQogewogICAgIG1faWQgPSBTVkdE
T01JbXBsZW1lbnRhdGlvbkltcGw6OnNlbGYoKS0+dHlwZVRvSWQoZXZlbnRUeXBlQXJnKTsKLSAg
ICBtX3R5cGUgPSBldmVudFR5cGVBcmc7CisKICAgICBtX2J1YmJsZXMgPSBjYW5CdWJibGVBcmc7
CiAgICAgbV9jYW5jZWxhYmxlID0gY2FuY2VsYWJsZUFyZzsKKworICAgIEtET01fU0FGRV9TRVQo
bV90eXBlLCBldmVudFR5cGVBcmcpOwogfQogCiAvLyB2aW06dHM9NDpub2V0CkluZGV4OiBrc3Zn
Mi9ldmVudHMvU1ZHRXZlbnRJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1NW
R1N1cHBvcnQva3N2ZzIvZXZlbnRzL1NWR0V2ZW50SW1wbC5oLHYKcmV0cmlldmluZyByZXZpc2lv
biAxLjUKZGlmZiAtcCAtdSAtcjEuNSBrc3ZnMi9ldmVudHMvU1ZHRXZlbnRJbXBsLmgKLS0tIGtz
dmcyL2V2ZW50cy9TVkdFdmVudEltcGwuaAkxIFNlcCAyMDA1IDA5OjM5OjEzIC0wMDAwCTEuNQor
Kysga3N2ZzIvZXZlbnRzL1NWR0V2ZW50SW1wbC5oCTYgU2VwIDIwMDUgMDc6MTc6MzEgLTAwMDAK
QEAgLTI4LDYgKzI4LDEyIEBACiAKIG5hbWVzcGFjZSBLU1ZHCiB7CisgICAgdHlwZWRlZiBlbnVt
CisgICAgeworICAgICAgICBUeXBlU1ZHRXZlbnQgPSBLRE9NOjpUeXBlTGFzdEV2ZW50ICsgMSwK
KyAgICAgICAgVHlwZVNWR1pvb21FdmVudCA9IEtET006OlR5cGVMYXN0RXZlbnQgKyAyCisgICAg
fSBTVkdFdmVudEltcGxUeXBlOworCiAgICAgY2xhc3MgU1ZHRXZlbnRJbXBsIDogcHVibGljIEtE
T006OkV2ZW50SW1wbAogICAgIHsKICAgICBwdWJsaWM6CkluZGV4OiBrc3ZnMi9ldmVudHMvU1ZH
Wm9vbUV2ZW50SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1NWR1N1cHBv
cnQva3N2ZzIvZXZlbnRzL1NWR1pvb21FdmVudEltcGwuY3BwLHYKcmV0cmlldmluZyByZXZpc2lv
biAxLjMKZGlmZiAtcCAtdSAtcjEuMyBrc3ZnMi9ldmVudHMvU1ZHWm9vbUV2ZW50SW1wbC5jcHAK
LS0tIGtzdmcyL2V2ZW50cy9TVkdab29tRXZlbnRJbXBsLmNwcAkxIFNlcCAyMDA1IDA3OjM1OjMw
IC0wMDAwCTEuMworKysga3N2ZzIvZXZlbnRzL1NWR1pvb21FdmVudEltcGwuY3BwCTYgU2VwIDIw
MDUgMDc6MTc6MzEgLTAwMDAKQEAgLTIyLDExICsyMiwxMiBAQAogCiAjaW5jbHVkZSAiU1ZHUmVj
dEltcGwuaCIKICNpbmNsdWRlICJTVkdQb2ludEltcGwuaCIKKyNpbmNsdWRlICJTVkdFdmVudElt
cGwuaCIKICNpbmNsdWRlICJTVkdab29tRXZlbnRJbXBsLmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBL
U1ZHOwogCi1TVkdab29tRXZlbnRJbXBsOjpTVkdab29tRXZlbnRJbXBsKCkgOiBLRE9NOjpVSUV2
ZW50SW1wbChLRE9NOjpUeXBlTGFzdEV2ZW50KQorU1ZHWm9vbUV2ZW50SW1wbDo6U1ZHWm9vbUV2
ZW50SW1wbCgpIDogS0RPTTo6VUlFdmVudEltcGwoKEtET006OkV2ZW50SW1wbFR5cGUpIFR5cGVT
Vkdab29tRXZlbnQpCiB7CiAgICAgbV9uZXdTY2FsZSA9IDAuMDsKICAgICBtX3ByZXZpb3VzU2Nh
bGUgPSAwLjA7CkluZGV4OiBrc3ZnMi9taXNjL0tDYW52YXNSZW5kZXJpbmdTdHlsZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1NWR1N1cHBvcnQva3N2ZzIvbWlzYy9LQ2FudmFz
UmVuZGVyaW5nU3R5bGUuY3BwLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjYKZGlmZiAtcCAtdSAt
cjEuNiBrc3ZnMi9taXNjL0tDYW52YXNSZW5kZXJpbmdTdHlsZS5jcHAKLS0tIGtzdmcyL21pc2Mv
S0NhbnZhc1JlbmRlcmluZ1N0eWxlLmNwcAkyIFNlcCAyMDA1IDEwOjAzOjE2IC0wMDAwCTEuNgor
Kysga3N2ZzIvbWlzYy9LQ2FudmFzUmVuZGVyaW5nU3R5bGUuY3BwCTYgU2VwIDIwMDUgMDc6MTc6
MzIgLTAwMDAKQEAgLTc5LDkgKzc5LDggQEAgdm9pZCBLQ2FudmFzUmVuZGVyaW5nU3R5bGU6OnVw
ZGF0ZUZpbGwoSwogICAgICAgICBLRE9NOjpET01TdHJpbmcgaWQoZmlsbC0+dXJpKCkpOwogCiAg
ICAgICAgIEtSZW5kZXJpbmdQYWludFNlcnZlciAqZmlsbFBhaW50U2VydmVyID0gbV9jYW52YXMt
PnJlZ2lzdHJ5KCktPmdldFBhaW50U2VydmVyQnlJZChpZC5zdHJpbmcoKS5taWQoMSkpOwotICAg
ICAgICBLQ2FudmFzUmVzb3VyY2UgKmZpbGxQYWludFJlc291cmNlID0gZHluYW1pY19jYXN0PEtD
YW52YXNSZXNvdXJjZSAqPihmaWxsUGFpbnRTZXJ2ZXIpOwotICAgICAgICBpZihpdGVtICYmIGZp
bGxQYWludFJlc291cmNlKQotICAgICAgICAgICAgZmlsbFBhaW50UmVzb3VyY2UtPmFkZENsaWVu
dChpdGVtKTsKKyAgICAgICAgaWYoaXRlbSAmJiBmaWxsUGFpbnRTZXJ2ZXIpCisgICAgICAgICAg
ICBmaWxsUGFpbnRTZXJ2ZXItPmFkZENsaWVudChpdGVtKTsKIAogICAgICAgICBmaWxsUGFpbnRl
cigpLT5zZXRQYWludFNlcnZlcihmaWxsUGFpbnRTZXJ2ZXIpOwogICAgIH0KQEAgLTExMyw5ICsx
MTIsOCBAQCB2b2lkIEtDYW52YXNSZW5kZXJpbmdTdHlsZTo6dXBkYXRlU3Ryb2tlCiAgICAgICAg
IEtET006OkRPTVN0cmluZyBpZChzdHJva2UtPnVyaSgpKTsKIAogICAgICAgICBLUmVuZGVyaW5n
UGFpbnRTZXJ2ZXIgKnN0cm9rZVBhaW50U2VydmVyID0gbV9jYW52YXMtPnJlZ2lzdHJ5KCktPmdl
dFBhaW50U2VydmVyQnlJZChpZC5zdHJpbmcoKS5taWQoMSkpOwotICAgICAgICBLQ2FudmFzUmVz
b3VyY2UgKnN0cm9rZVBhaW50UmVzb3VyY2UgPSBkeW5hbWljX2Nhc3Q8S0NhbnZhc1Jlc291cmNl
ICo+KHN0cm9rZVBhaW50U2VydmVyKTsKLSAgICAgICAgaWYoaXRlbSAmJiBzdHJva2VQYWludFJl
c291cmNlKQotICAgICAgICAgICAgc3Ryb2tlUGFpbnRSZXNvdXJjZS0+YWRkQ2xpZW50KGl0ZW0p
OworICAgICAgICBpZihpdGVtICYmIHN0cm9rZVBhaW50U2VydmVyKQorICAgICAgICAgICAgc3Ry
b2tlUGFpbnRTZXJ2ZXItPmFkZENsaWVudChpdGVtKTsKIAogICAgICAgICBzdHJva2VQYWludGVy
KCktPnNldFBhaW50U2VydmVyKHN0cm9rZVBhaW50U2VydmVyKTsKICAgICB9CkBAIC0xMjMsNyAr
MTIxLDcgQEAgdm9pZCBLQ2FudmFzUmVuZGVyaW5nU3R5bGU6OnVwZGF0ZVN0cm9rZQogICAgIHsK
ICAgICAgICAgS1JlbmRlcmluZ1BhaW50U2VydmVyICpzdHJva2VQYWludFNlcnZlciA9IG1fY2Fu
dmFzLT5yZW5kZXJpbmdEZXZpY2UoKS0+Y3JlYXRlUGFpbnRTZXJ2ZXIoS0NQYWludFNlcnZlclR5
cGUoUFNfU09MSUQpKTsKICAgICAgICAgS1JlbmRlcmluZ1BhaW50U2VydmVyU29saWQgKnN0cm9r
ZVBhaW50U2VydmVyU29saWQgPSBzdGF0aWNfY2FzdDxLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJTb2xp
ZCAqPihzdHJva2VQYWludFNlcnZlcik7Ci0gICAgICAgIAorCiAgICAgICAgIGlmKHN0cm9rZS0+
cGFpbnRUeXBlKCkgPT0gU1ZHX1BBSU5UVFlQRV9DVVJSRU5UQ09MT1IpCiAgICAgICAgICAgICBz
dHJva2VQYWludFNlcnZlclNvbGlkLT5zZXRDb2xvcihtX3N0eWxlLT5jb2xvcigpKTsKICAgICAg
ICAgZWxzZQpAQCAtMzI1LDYgKzMyMyw3IEBAIHZvaWQgS0NhbnZhc1JlbmRlcmluZ1N0eWxlOjpy
ZW1vdmVDbGlwUGEKIC8vIE1hcmtlcnMKIEtDYW52YXNNYXJrZXIgKktDYW52YXNSZW5kZXJpbmdT
dHlsZTo6c3RhcnRNYXJrZXIoKSBjb25zdAogeworICAgIC8vIFRPRE86IHNvbWV3aGVyZSwgc29t
ZWhvdyBhZGRDbGllbnQgc2hvdWxkIGJlIGNhbGxlZCBvbiB0aGlzIHJlc291cmNlCiAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PEtDYW52YXNNYXJrZXIgKj4obV9jYW52YXMtPnJlZ2lzdHJ5KCktPmdl
dFJlc291cmNlQnlJZChtX3N0eWxlLT5zdGFydE1hcmtlcigpLm1pZCgxKSkpOwogfQogCkBAIC0z
MzUsNiArMzM0LDcgQEAgdm9pZCBLQ2FudmFzUmVuZGVyaW5nU3R5bGU6OnNldFN0YXJ0TWFyawog
CiBLQ2FudmFzTWFya2VyICpLQ2FudmFzUmVuZGVyaW5nU3R5bGU6Om1pZE1hcmtlcigpIGNvbnN0
CiB7CisgICAgLy8gVE9ETzogc29tZXdoZXJlLCBzb21laG93IGFkZENsaWVudCBzaG91bGQgYmUg
Y2FsbGVkIG9uIHRoaXMgcmVzb3VyY2UKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8S0NhbnZhc01h
cmtlciAqPihtX2NhbnZhcy0+cmVnaXN0cnkoKS0+Z2V0UmVzb3VyY2VCeUlkKG1fc3R5bGUtPm1p
ZE1hcmtlcigpLm1pZCgxKSkpOwogfQogCkBAIC0zNDQsNiArMzQ0LDcgQEAgdm9pZCBLQ2FudmFz
UmVuZGVyaW5nU3R5bGU6OnNldE1pZE1hcmtlcgogCiBLQ2FudmFzTWFya2VyICpLQ2FudmFzUmVu
ZGVyaW5nU3R5bGU6OmVuZE1hcmtlcigpIGNvbnN0CiB7CisgICAgLy8gVE9ETzogc29tZXdoZXJl
LCBzb21laG93IGFkZENsaWVudCBzaG91bGQgYmUgY2FsbGVkIG9uIHRoaXMgcmVzb3VyY2UKICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8S0NhbnZhc01hcmtlciAqPihtX2NhbnZhcy0+cmVnaXN0cnko
KS0+Z2V0UmVzb3VyY2VCeUlkKG1fc3R5bGUtPmVuZE1hcmtlcigpLm1pZCgxKSkpOwogfQogCkBA
IC0zNjUsNiArMzY2LDcgQEAgS0NhbnZhc0ZpbHRlciAqS0NhbnZhc1JlbmRlcmluZ1N0eWxlOjpm
aQogICAgIGlmKGxvb2t1cC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiAwOwogCisgICAgLy8g
VE9ETzogc29tZXdoZXJlLCBzb21laG93IGFkZENsaWVudCBzaG91bGQgYmUgY2FsbGVkIG9uIHRo
aXMgcmVzb3VyY2UKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8S0NhbnZhc0ZpbHRlciAqPihtX2Nh
bnZhcy0+cmVnaXN0cnkoKS0+Z2V0UmVzb3VyY2VCeUlkKGxvb2t1cCkpOwogfQogCkluZGV4OiBr
c3ZnMi9taXNjL0tTVkdUaW1lU2NoZWR1bGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3Zz
L3Jvb3QvU1ZHU3VwcG9ydC9rc3ZnMi9taXNjL0tTVkdUaW1lU2NoZWR1bGVyLmNwcCx2CnJldHJp
ZXZpbmcgcmV2aXNpb24gMS41CmRpZmYgLXAgLXUgLXIxLjUga3N2ZzIvbWlzYy9LU1ZHVGltZVNj
aGVkdWxlci5jcHAKLS0tIGtzdmcyL21pc2MvS1NWR1RpbWVTY2hlZHVsZXIuY3BwCTIgU2VwIDIw
MDUgMTA6MDM6MTYgLTAwMDAJMS41CisrKyBrc3ZnMi9taXNjL0tTVkdUaW1lU2NoZWR1bGVyLmNw
cAk2IFNlcCAyMDA1IDA3OjE3OjMyIC0wMDAwCkBAIC0zMjAsNyArMzIwLDExIEBAIHZvaWQgU1ZH
VGltZXI6Om5vdGlmeUFsbCgpCiAgICAgICAgIGZvcig7IGNpdCAhPSBjZW5kOyArK2NpdCkKICAg
ICAgICAgewogICAgICAgICAgICAgaWYoY2l0LmRhdGEoKS5pc1ZhbGlkKCkpCi0gICAgICAgICAg
ICAgICAgU1ZHQW5pbWF0aW9uRWxlbWVudEltcGw6OnNldFRhcmdldEF0dHJpYnV0ZSh0aXQua2V5
KCksIGNpdC5rZXkoKSwgY2l0LmRhdGEoKS5uYW1lKCkpOworICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIFNWR0FuaW1hdGlvbkVsZW1lbnRJbXBsOjpzZXRUYXJnZXRBdHRyaWJ1dGUodGl0
LmtleSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgS0RPTTo6RE9NU3RyaW5nKGNpdC5rZXkoKSkuaGFuZGxlKCksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBLRE9N
OjpET01TdHJpbmcoY2l0LmRhdGEoKS5uYW1lKCkpLmhhbmRsZSgpKTsKKyAgICAgICAgICAgIH0K
ICAgICAgICAgfQogICAgIH0KIApJbmRleDoga3N2ZzIvc3ZnL1NWR0FuaW1hdGVDb2xvckVsZW1l
bnRJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvU1ZHU3VwcG9ydC9rc3Zn
Mi9zdmcvU1ZHQW5pbWF0ZUNvbG9yRWxlbWVudEltcGwuY3BwLHYKcmV0cmlldmluZyByZXZpc2lv
biAxLjQKZGlmZiAtcCAtdSAtcjEuNCBrc3ZnMi9zdmcvU1ZHQW5pbWF0ZUNvbG9yRWxlbWVudElt
cGwuY3BwCi0tLSBrc3ZnMi9zdmcvU1ZHQW5pbWF0ZUNvbG9yRWxlbWVudEltcGwuY3BwCTEgU2Vw
IDIwMDUgMDc6MzU6MzEgLTAwMDAJMS40CisrKyBrc3ZnMi9zdmcvU1ZHQW5pbWF0ZUNvbG9yRWxl
bWVudEltcGwuY3BwCTYgU2VwIDIwMDUgMDc6MTc6MzIgLTAwMDAKQEAgLTYwLDcgKzYwLDcgQEAg
dm9pZCBTVkdBbmltYXRlQ29sb3JFbGVtZW50SW1wbDo6aGFuZGxlVAogICAgICAgICBTVkdDb2xv
ckltcGwgKnRlbXAgPSBuZXcgU1ZHQ29sb3JJbXBsKCk7CiAgICAgICAgIHRlbXAtPnJlZigpOwog
ICAgICAgICAgICAgCi0gICAgICAgIHRlbXAtPnNldFJHQkNvbG9yKHRhcmdldEF0dHJpYnV0ZSgp
LmhhbmRsZSgpKTsKKyAgICAgICAgdGVtcC0+c2V0UkdCQ29sb3IodGFyZ2V0QXR0cmlidXRlKCkp
OwogCiAgICAgICAgIG1faW5pdGlhbENvbG9yID0gdGVtcC0+Y29sb3IoKTsKICAgICAgICAgCklu
ZGV4OiBrc3ZnMi9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnRJbXBsLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBm
aWxlOiAvY3ZzL3Jvb3QvU1ZHU3VwcG9ydC9rc3ZnMi9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnRJbXBs
LmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS40CmRpZmYgLXAgLXUgLXIxLjQga3N2ZzIvc3Zn
L1NWR0FuaW1hdGVFbGVtZW50SW1wbC5jcHAKLS0tIGtzdmcyL3N2Zy9TVkdBbmltYXRlRWxlbWVu
dEltcGwuY3BwCTEgU2VwIDIwMDUgMDc6MzU6MzEgLTAwMDAJMS40CisrKyBrc3ZnMi9zdmcvU1ZH
QW5pbWF0ZUVsZW1lbnRJbXBsLmNwcAk2IFNlcCAyMDA1IDA3OjE3OjMyIC0wMDAwCkBAIC00Myw3
ICs0Myw4IEBAIHZvaWQgU1ZHQW5pbWF0ZUVsZW1lbnRJbXBsOjpoYW5kbGVUaW1lckUKICAgICBp
ZighbV9jb25uZWN0ZWQpCiAgICAgewogICAgICAgICAvLyBTYXZlIGluaXRpYWwgYXR0cmlidXRl
IHZhbHVlLi4uCi0gICAgICAgIG1fc2F2ZWRUbyA9IHRhcmdldEF0dHJpYnV0ZSgpLnN0cmluZygp
OworICAgICAgICBLRE9NOjpET01TdHJpbmdJbXBsICphdHRyID0gdGFyZ2V0QXR0cmlidXRlKCk7
CisgICAgICAgIG1fc2F2ZWRUbyA9IChhdHRyID8gYXR0ci0+c3RyaW5nKCkgOiBRU3RyaW5nOjpu
dWxsKTsKIAogICAgICAgICAvLyBBbmltYXRpb24gbW9kZSBoYW5kbGluZwogICAgICAgICBzd2l0
Y2goZGV0ZWN0QW5pbWF0aW9uTW9kZSgpKQpJbmRleDoga3N2ZzIvc3ZnL1NWR0FuaW1hdGlvbkVs
ZW1lbnRJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvU1ZHU3VwcG9ydC9r
c3ZnMi9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudEltcGwuY3BwLHYKcmV0cmlldmluZyByZXZpc2lv
biAxLjUKZGlmZiAtcCAtdSAtcjEuNSBrc3ZnMi9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudEltcGwu
Y3BwCi0tLSBrc3ZnMi9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudEltcGwuY3BwCTEgU2VwIDIwMDUg
MDk6Mzk6MTQgLTAwMDAJMS41CisrKyBrc3ZnMi9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudEltcGwu
Y3BwCTYgU2VwIDIwMDUgMDc6MTc6MzMgLTAwMDAKQEAgLTQ5MywxNSArNDkzLDE1IEBAIHZvaWQg
U1ZHQW5pbWF0aW9uRWxlbWVudEltcGw6OmNsb3NlKCkKICAgICBkb2N1bWVudC0+dGltZVNjaGVk
dWxlcigpLT5hZGRUaW1lcih0aGlzLCBxUm91bmQoZ2V0U3RhcnRUaW1lKCkpKTsKIH0KIAotS0RP
TTo6RE9NU3RyaW5nIFNWR0FuaW1hdGlvbkVsZW1lbnRJbXBsOjp0YXJnZXRBdHRyaWJ1dGUoKSBj
b25zdAorS0RPTTo6RE9NU3RyaW5nSW1wbCAqU1ZHQW5pbWF0aW9uRWxlbWVudEltcGw6OnRhcmdl
dEF0dHJpYnV0ZSgpIGNvbnN0CiB7CiAgICAgaWYoIXRhcmdldEVsZW1lbnQoKSkKLSAgICAgICAg
cmV0dXJuIEtET006OkRPTVN0cmluZygpOworICAgICAgICByZXR1cm4gMDsKICAgICAKICAgICBT
VkdTdHlsZWRFbGVtZW50SW1wbCAqc3R5bGVkID0gZHluYW1pY19jYXN0PFNWR1N0eWxlZEVsZW1l
bnRJbXBsICo+KHRhcmdldEVsZW1lbnQoKSk7CiAgICAgS0RPTTo6Q0RGSW50ZXJmYWNlICppbnRl
cmZhY2UgPSAoc3R5bGVkID8gc3R5bGVkLT5vd25lckRvY3VtZW50KCktPmltcGxlbWVudGF0aW9u
KCktPmNkZkludGVyZmFjZSgpIDogMCk7CiAgICAgCi0gICAgS0RPTTo6RE9NU3RyaW5nIHJldDsK
KyAgICBLRE9NOjpET01TdHJpbmdJbXBsICpyZXQgPSAwOwogCiAgICAgRUF0dHJpYnV0ZVR5cGUg
YXR0cmlidXRlVHlwZSA9IG1fYXR0cmlidXRlVHlwZTsKICAgICBpZihhdHRyaWJ1dGVUeXBlID09
IEFUVFJJQlVURVRZUEVfQVVUTykKQEAgLTUyNSwyNCArNTI1LDI0IEBAIEtET006OkRPTVN0cmlu
ZyBTVkdBbmltYXRpb25FbGVtZW50SW1wbDoKICAgICAgICAgaWYoc3R5bGVkICYmIHN0eWxlZC0+
c3R5bGUoKSAmJiBpbnRlcmZhY2UpCiAgICAgICAgIHsKICAgICAgICAgICAgIGludCBpZCA9IGlu
dGVyZmFjZS0+Z2V0UHJvcGVydHlJRChtX2F0dHJpYnV0ZU5hbWUuYXNjaWkoKSwgbV9hdHRyaWJ1
dGVOYW1lLmxlbmd0aCgpKTsKLSAgICAgICAgICAgIHJldCA9IEtET006OkRPTVN0cmluZyhzdHls
ZWQtPnN0eWxlKCktPmdldFByb3BlcnR5VmFsdWUoaWQpKTsKKyAgICAgICAgICAgIHJldCA9IHN0
eWxlZC0+c3R5bGUoKS0+Z2V0UHJvcGVydHlWYWx1ZShpZCk7CiAgICAgICAgIH0KICAgICB9CiAK
LSAgICBpZihhdHRyaWJ1dGVUeXBlID09IEFUVFJJQlVURVRZUEVfWE1MIHx8IHJldC5pc0VtcHR5
KCkpCi0gICAgICAgIHJldCA9IEtET006OkRPTVN0cmluZyh0YXJnZXRFbGVtZW50KCktPmdldEF0
dHJpYnV0ZShLRE9NOjpET01TdHJpbmcobV9hdHRyaWJ1dGVOYW1lKS5oYW5kbGUoKSkpOworICAg
IGlmKGF0dHJpYnV0ZVR5cGUgPT0gQVRUUklCVVRFVFlQRV9YTUwgfHwgKCFyZXQgfHwgKHJldCAm
JiByZXQtPmlzRW1wdHkoKSkpKQorICAgICAgICByZXQgPSB0YXJnZXRFbGVtZW50KCktPmdldEF0
dHJpYnV0ZShuZXcgS0RPTTo6RE9NU3RyaW5nSW1wbChtX2F0dHJpYnV0ZU5hbWUpKTsKIAogICAg
IHJldHVybiByZXQ7CiB9CiAKLXZvaWQgU1ZHQW5pbWF0aW9uRWxlbWVudEltcGw6OnNldFRhcmdl
dEF0dHJpYnV0ZShjb25zdCBLRE9NOjpET01TdHJpbmcgJnZhbHVlKQordm9pZCBTVkdBbmltYXRp
b25FbGVtZW50SW1wbDo6c2V0VGFyZ2V0QXR0cmlidXRlKEtET006OkRPTVN0cmluZ0ltcGwgKnZh
bHVlKQogewotICAgIFNWR0FuaW1hdGlvbkVsZW1lbnRJbXBsOjpzZXRUYXJnZXRBdHRyaWJ1dGUo
dGFyZ2V0RWxlbWVudCgpLCBLRE9NOjpET01TdHJpbmcobV9hdHRyaWJ1dGVOYW1lKSwgdmFsdWUs
IG1fYXR0cmlidXRlVHlwZSk7CisgICAgU1ZHQW5pbWF0aW9uRWxlbWVudEltcGw6OnNldFRhcmdl
dEF0dHJpYnV0ZSh0YXJnZXRFbGVtZW50KCksIEtET006OkRPTVN0cmluZyhtX2F0dHJpYnV0ZU5h
bWUpLmhhbmRsZSgpLCB2YWx1ZSwgbV9hdHRyaWJ1dGVUeXBlKTsKIH0KIAotdm9pZCBTVkdBbmlt
YXRpb25FbGVtZW50SW1wbDo6c2V0VGFyZ2V0QXR0cmlidXRlKFNWR0VsZW1lbnRJbXBsICp0YXJn
ZXQsIGNvbnN0IEtET006OkRPTVN0cmluZyAmbmFtZSwgY29uc3QgS0RPTTo6RE9NU3RyaW5nICZ2
YWx1ZSwgRUF0dHJpYnV0ZVR5cGUgdHlwZSkKK3ZvaWQgU1ZHQW5pbWF0aW9uRWxlbWVudEltcGw6
OnNldFRhcmdldEF0dHJpYnV0ZShTVkdFbGVtZW50SW1wbCAqdGFyZ2V0LCBLRE9NOjpET01TdHJp
bmdJbXBsICpuYW1lLCBLRE9NOjpET01TdHJpbmdJbXBsICp2YWx1ZSwgRUF0dHJpYnV0ZVR5cGUg
dHlwZSkKIHsKLSAgICBpZighdGFyZ2V0KQorICAgIGlmKCF0YXJnZXQgfHwgIW5hbWUgfHwgIXZh
bHVlKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgU1ZHU3R5bGVkRWxlbWVudEltcGwgKnN0
eWxlZCA9IGR5bmFtaWNfY2FzdDxTVkdTdHlsZWRFbGVtZW50SW1wbCAqPih0YXJnZXQpOwpAQCAt
NTU5LDcgKzU1OSw3IEBAIHZvaWQgU1ZHQW5pbWF0aW9uRWxlbWVudEltcGw6OnNldFRhcmdldEEK
ICAgICAgICAgLy8gc2VhcmNoIHRoZSBkZWZhdWx0IFhNTCBuYW1lc3BhY2UgZm9yIHRoZSBlbGVt
ZW50LgogICAgICAgICBpZihzdHlsZWQgJiYgc3R5bGVkLT5zdHlsZSgpKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBpbnQgaWQgPSBpbnRlcmZhY2UtPmdldFByb3BlcnR5SUQobmFtZS5zdHJpbmco
KS5hc2NpaSgpLCBuYW1lLnN0cmluZygpLmxlbmd0aCgpKTsKKyAgICAgICAgICAgIGludCBpZCA9
IGludGVyZmFjZS0+Z2V0UHJvcGVydHlJRChuYW1lLT5zdHJpbmcoKS5hc2NpaSgpLCBuYW1lLT5z
dHJpbmcoKS5sZW5ndGgoKSk7CiAgICAgICAgICAgICBpZihzdHlsZWQtPnN0eWxlKCktPmdldFBy
b3BlcnR5Q1NTVmFsdWUoaWQpKQogICAgICAgICAgICAgICAgIGF0dHJpYnV0ZVR5cGUgPSBBVFRS
SUJVVEVUWVBFX0NTUzsKICAgICAgICAgfQpAQCAtNTY3LDExICs1NjcsMTEgQEAgdm9pZCBTVkdB
bmltYXRpb25FbGVtZW50SW1wbDo6c2V0VGFyZ2V0QQogICAgIAogICAgIGlmKGF0dHJpYnV0ZVR5
cGUgPT0gQVRUUklCVVRFVFlQRV9DU1MgJiYgc3R5bGVkICYmIHN0eWxlZC0+c3R5bGUoKSkKICAg
ICB7Ci0gICAgICAgIGludCBpZCA9IGludGVyZmFjZS0+Z2V0UHJvcGVydHlJRChuYW1lLnN0cmlu
ZygpLmFzY2lpKCksIG5hbWUuc3RyaW5nKCkubGVuZ3RoKCkpOwotICAgICAgICBzdHlsZWQtPnN0
eWxlKCktPnNldFByb3BlcnR5KGlkLCB2YWx1ZS5oYW5kbGUoKSk7CisgICAgICAgIGludCBpZCA9
IGludGVyZmFjZS0+Z2V0UHJvcGVydHlJRChuYW1lLT5zdHJpbmcoKS5hc2NpaSgpLCBuYW1lLT5z
dHJpbmcoKS5sZW5ndGgoKSk7CisgICAgICAgIHN0eWxlZC0+c3R5bGUoKS0+c2V0UHJvcGVydHko
aWQsIHZhbHVlKTsKICAgICB9CiAgICAgZWxzZSBpZihhdHRyaWJ1dGVUeXBlID09IEFUVFJJQlVU
RVRZUEVfWE1MKQotICAgICAgICB0YXJnZXQtPnNldEF0dHJpYnV0ZShuYW1lLmhhbmRsZSgpLCB2
YWx1ZS5oYW5kbGUoKSk7CisgICAgICAgIHRhcmdldC0+c2V0QXR0cmlidXRlKG5hbWUsIHZhbHVl
KTsKIH0KIAogUVN0cmluZyBTVkdBbmltYXRpb25FbGVtZW50SW1wbDo6YXR0cmlidXRlTmFtZSgp
IGNvbnN0CkluZGV4OiBrc3ZnMi9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudEltcGwuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvU1ZHU3VwcG9ydC9rc3ZnMi9zdmcvU1ZHQW5pbWF0aW9u
RWxlbWVudEltcGwuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS40CmRpZmYgLXAgLXUgLXIxLjQg
a3N2ZzIvc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnRJbXBsLmgKLS0tIGtzdmcyL3N2Zy9TVkdBbmlt
YXRpb25FbGVtZW50SW1wbC5oCTEgU2VwIDIwMDUgMDc6MzU6MzUgLTAwMDAJMS40CisrKyBrc3Zn
Mi9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudEltcGwuaAk2IFNlcCAyMDA1IDA3OjE3OjMzIC0wMDAw
CkBAIC0xMDYsMTIgKzEwNiwxMiBAQCBuYW1lc3BhY2UgS1NWRwogCiAgICAgICAgIGRvdWJsZSBw
YXJzZUNsb2NrVmFsdWUoY29uc3QgUVN0cmluZyAmZGF0YSkgY29uc3Q7CiAKLSAgICAgICAgS0RP
TTo6RE9NU3RyaW5nIHRhcmdldEF0dHJpYnV0ZSgpIGNvbnN0OwotICAgICAgICB2b2lkIHNldFRh
cmdldEF0dHJpYnV0ZShjb25zdCBLRE9NOjpET01TdHJpbmcgJnZhbHVlKTsKKyAgICAgICAgS0RP
TTo6RE9NU3RyaW5nSW1wbCAqdGFyZ2V0QXR0cmlidXRlKCkgY29uc3Q7CisgICAgICAgIHZvaWQg
c2V0VGFyZ2V0QXR0cmlidXRlKEtET006OkRPTVN0cmluZ0ltcGwgKnZhbHVlKTsKIAogICAgICAg
ICBzdGF0aWMgdm9pZCBzZXRUYXJnZXRBdHRyaWJ1dGUoU1ZHRWxlbWVudEltcGwgKnRhcmdldCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEtET006OkRPTVN0
cmluZyAmbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEtET006OkRPTVN0cmluZyAmdmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBLRE9NOjpET01TdHJpbmdJbXBsICpuYW1lLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgS0RPTTo6RE9NU3RyaW5nSW1wbCAqdmFsdWUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFQXR0cmlidXRlVHlwZSB0eXBlID0gQVRUUklC
VVRFVFlQRV9BVVRPKTsKIAogICAgICAgICBRU3RyaW5nIGF0dHJpYnV0ZU5hbWUoKSBjb25zdDsK
SW5kZXg6IGtzdmcyL3N2Zy9TVkdDdXJzb3JFbGVtZW50SW1wbC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1Mg
ZmlsZToga3N2ZzIvc3ZnL1NWR0N1cnNvckVsZW1lbnRJbXBsLmNwcApkaWZmIC1OIGtzdmcyL3N2
Zy9TVkdDdXJzb3JFbGVtZW50SW1wbC5jcHAKLS0tIGtzdmcyL3N2Zy9TVkdDdXJzb3JFbGVtZW50
SW1wbC5jcHAJMSBKYW4gMTk3MCAwMDowMDowMCAtMDAwMAorKysga3N2ZzIvc3ZnL1NWR0N1cnNv
ckVsZW1lbnRJbXBsLmNwcAk2IFNlcCAyMDA1IDA3OjE3OjMzIC0wMDAwCkBAIC0wLDAgKzEsMTIz
IEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBOaWtvbGFzIFppbW1lcm1hbm4g
PHdpbGRmb3hAa2RlLm9yZz4KKyAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUgUm9iIEJ1aXMg
PGJ1aXNAa2RlLm9yZz4KKworICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVj
dAorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBs
aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws
CisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdy
aXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxl
IFBsYWNlIC0gU3VpdGUgMzMwLAorICAgIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgorKi8K
KworI2luY2x1ZGUgPGtkb20vY29yZS9BdHRySW1wbC5oPgorI2luY2x1ZGUgPGtkZWJ1Zy5oPgor
CisjaW5jbHVkZSAic3ZnYXR0cnMuaCIKKyNpbmNsdWRlICJTVkdIZWxwZXIuaCIKKyNpbmNsdWRl
ICJOYW1lc3BhY2UuaCIKKyNpbmNsdWRlICJTVkdEb2N1bWVudEltcGwuaCIKKyNpbmNsdWRlICJT
VkdDdXJzb3JFbGVtZW50SW1wbC5oIgorI2luY2x1ZGUgIlNWR0FuaW1hdGVkTGVuZ3RoSW1wbC5o
IgorI2luY2x1ZGUgIlNWR0FuaW1hdGVkU3RyaW5nSW1wbC5oIgorCisjaWZuZGVmIEFQUExFX0NI
QU5HRVMKKyNpbmNsdWRlICJpbWxvYWQvaW1hZ2VwYWludGVyLmgiCisjZW5kaWYKKwordXNpbmcg
bmFtZXNwYWNlIEtTVkc7CisjaWZuZGVmIEFQUExFX0NIQU5HRVMKK3VzaW5nIG5hbWVzcGFjZSBr
aHRtbEltTG9hZDsKKyNlbmRpZgorCitTVkdDdXJzb3JFbGVtZW50SW1wbDo6U1ZHQ3Vyc29yRWxl
bWVudEltcGwoS0RPTTo6RG9jdW1lbnRQdHIgKmRvYywgS0RPTTo6Tm9kZUltcGw6OklkIGlkLCBL
RE9NOjpET01TdHJpbmdJbXBsICpwcmVmaXgpCis6IFNWR0VsZW1lbnRJbXBsKGRvYywgaWQsIHBy
ZWZpeCksIFNWR1Rlc3RzSW1wbCgpLCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkSW1wbCgp
LCBTVkdVUklSZWZlcmVuY2VJbXBsKCksIEtET006OkNhY2hlZE9iamVjdENsaWVudCgpCit7Cisg
ICAgbV94ID0gbV95ID0gMDsKKyAgICBtX2NhY2hlZEltYWdlID0gMDsKK30KKworU1ZHQ3Vyc29y
RWxlbWVudEltcGw6On5TVkdDdXJzb3JFbGVtZW50SW1wbCgpCit7CisgICAgaWYobV94KQorICAg
ICAgICBtX3gtPmRlcmVmKCk7CisgICAgaWYobV95KQorICAgICAgICBtX3ktPmRlcmVmKCk7Cit9
CisKK1NWR0FuaW1hdGVkTGVuZ3RoSW1wbCAqU1ZHQ3Vyc29yRWxlbWVudEltcGw6OngoKSBjb25z
dAoreworICAgIHJldHVybiBsYXp5X2NyZWF0ZTxTVkdBbmltYXRlZExlbmd0aEltcGw+KG1feCwg
c3RhdGljX2Nhc3Q8Y29uc3QgU1ZHU3R5bGVkRWxlbWVudEltcGwgKj4oMCkgLyogY29ycmVjdD8g
Ki8sIExNX1dJRFRILCB2aWV3cG9ydEVsZW1lbnQoKSk7Cit9CisKK1NWR0FuaW1hdGVkTGVuZ3Ro
SW1wbCAqU1ZHQ3Vyc29yRWxlbWVudEltcGw6OnkoKSBjb25zdAoreworICAgIHJldHVybiBsYXp5
X2NyZWF0ZTxTVkdBbmltYXRlZExlbmd0aEltcGw+KG1feSwgc3RhdGljX2Nhc3Q8Y29uc3QgU1ZH
U3R5bGVkRWxlbWVudEltcGwgKj4oMCkgLyogY29ycmVjdD8gKi8sIExNX0hFSUdIVCwgdmlld3Bv
cnRFbGVtZW50KCkpOworfQorCit2b2lkIFNWR0N1cnNvckVsZW1lbnRJbXBsOjpwYXJzZUF0dHJp
YnV0ZShLRE9NOjpBdHRyaWJ1dGVJbXBsICphdHRyKQoreworICAgIGludCBpZCA9IChhdHRyLT5p
ZCgpICYgTm9kZUltcGxfSWRMb2NhbE1hc2spOworICAgIEtET006OkRPTVN0cmluZ0ltcGwgKnZh
bHVlID0gYXR0ci0+dmFsdWUoKTsKKyAgICBzd2l0Y2goaWQpCisgICAgeworICAgICAgICBjYXNl
IEFUVFJfWDoKKyAgICAgICAgeworICAgICAgICAgICAgeCgpLT5iYXNlVmFsKCktPnNldFZhbHVl
QXNTdHJpbmcodmFsdWUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAg
Y2FzZSBBVFRSX1k6CisgICAgICAgIHsKKyAgICAgICAgICAgIHkoKS0+YmFzZVZhbCgpLT5zZXRW
YWx1ZUFzU3RyaW5nKHZhbHVlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmKFNWR1Rlc3RzSW1wbDo6cGFy
c2VBdHRyaWJ1dGUoYXR0cikpIHJldHVybjsKKyAgICAgICAgICAgIGlmKFNWR0V4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWRJbXBsOjpwYXJzZUF0dHJpYnV0ZShhdHRyKSkgcmV0dXJuOworICAgICAg
ICAgICAgaWYoU1ZHVVJJUmVmZXJlbmNlSW1wbDo6cGFyc2VBdHRyaWJ1dGUoYXR0cikpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgUVN0cmluZyBmbmFtZSA9IEtET006OkRPTVN0cmlu
ZyhocmVmKCktPmJhc2VWYWwoKSkuc3RyaW5nKCk7CisgICAgICAgICAgICAgICAgS1VSTCBmdWxs
VXJsKG93bmVyRG9jdW1lbnQoKS0+ZG9jdW1lbnRLVVJJKCksIGZuYW1lKTsKKyAgICAgICAgICAg
ICAgICAvL2tkRGVidWcoKSA8PCAiTG9hZGluZyA6ICIgPDwgZnVsbFVybCA8PCBlbmRsOworICAg
ICAgICAgICAgICAgIG1fY2FjaGVkSW1hZ2UgPSBvd25lckRvY3VtZW50KCktPmRvY0xvYWRlcigp
LT5yZXF1ZXN0SW1hZ2UoZnVsbFVybCk7CisKKyAgICAgICAgICAgICAgICBpZihtX2NhY2hlZElt
YWdlKQorICAgICAgICAgICAgICAgICAgICBtX2NhY2hlZEltYWdlLT5yZWYodGhpcyk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBTVkdFbGVt
ZW50SW1wbDo6cGFyc2VBdHRyaWJ1dGUoYXR0cik7CisgICAgICAgIH0KKyAgICB9OworfQorCit2
b2lkIFNWR0N1cnNvckVsZW1lbnRJbXBsOjpub3RpZnlGaW5pc2hlZChLRE9NOjpDYWNoZWRPYmpl
Y3QgKmZpbmlzaGVkT2JqKQoreworICAgIGlmKGZpbmlzaGVkT2JqID09IG1fY2FjaGVkSW1hZ2Up
CisgICAgeworI2lmbmRlZiBBUFBMRV9DT01QSUxFX0hBQ0sKKyAgICAgICAgUVBpeG1hcCBwaXht
KG1fY2FjaGVkSW1hZ2UtPnBpeG1hcF9zaXplKCkpOworICAgICAgICBRUGFpbnRlciBwKCZwaXht
KTsKKyAgICAgICAgSW1hZ2VQYWludGVyIGlwKG1fY2FjaGVkSW1hZ2UtPmltYWdlKCkpOworICAg
ICAgICBpcC5wYWludCgwLCAwLCAmcCwgMCwgMCwgbV9jYWNoZWRJbWFnZS0+cGl4bWFwX3NpemUo
KS53aWR0aCgpLCBtX2NhY2hlZEltYWdlLT5waXhtYXBfc2l6ZSgpLmhlaWdodCgpKTsKKyAgICAg
ICAgbV9pbWFnZSA9IHBpeG07CisgICAgICAgIGtkRGVidWcoKSA8PCAicGl4bSB3IDogIiA8PCBt
X2ltYWdlLnNpemUoKSA8PCBlbmRsOworI2VuZGlmIC8vIEFQUExFX0NPTVBJTEVfSEFDSworCisg
ICAgICAgIG1fY2FjaGVkSW1hZ2UtPmRlcmVmKHRoaXMpOworICAgICAgICBtX2NhY2hlZEltYWdl
ID0gMDsKKyAgICB9Cit9CisKKy8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IGtzdmcyL3N2Zy9TVkdD
dXJzb3JFbGVtZW50SW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IGtzdmcyL3N2Zy9TVkdDdXJz
b3JFbGVtZW50SW1wbC5oCmRpZmYgLU4ga3N2ZzIvc3ZnL1NWR0N1cnNvckVsZW1lbnRJbXBsLmgK
LS0tIGtzdmcyL3N2Zy9TVkdDdXJzb3JFbGVtZW50SW1wbC5oCTEgSmFuIDE5NzAgMDA6MDA6MDAg
LTAwMDAKKysrIGtzdmcyL3N2Zy9TVkdDdXJzb3JFbGVtZW50SW1wbC5oCTYgU2VwIDIwMDUgMDc6
MTc6MzMgLTAwMDAKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDQs
IDIwMDUgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CisgICAgICAgICAgICAg
ICAgICAyMDA0LCAyMDA1IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CisKKyAgICBUaGlzIGZpbGUg
aXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgor
ICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxl
IENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKKyAgICBCb3N0b24s
IE1BIDAyMTExLTEzMDcsIFVTQS4KKyovCisKKyNpZm5kZWYgS1NWR19TVkdDdXJzb3JFbGVtZW50
SW1wbF9ICisjZGVmaW5lIEtTVkdfU1ZHQ3Vyc29yRWxlbWVudEltcGxfSAorCisjaW5jbHVkZSA8
cXBpeG1hcC5oPgorCisjaW5jbHVkZSAiU1ZHRWxlbWVudEltcGwuaCIKKyNpbmNsdWRlICJTVkdU
ZXN0c0ltcGwuaCIKKyNpbmNsdWRlICJTVkdVUklSZWZlcmVuY2VJbXBsLmgiCisjaW5jbHVkZSAi
U1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEltcGwuaCIKKyNpbmNsdWRlIDxrZG9tL2NhY2hl
L0tET01DYWNoZWRJbWFnZS5oPgorI2luY2x1ZGUgPGtkb20vY2FjaGUvS0RPTUNhY2hlZE9iamVj
dENsaWVudC5oPgorCituYW1lc3BhY2UgS1NWRworeworICAgIGNsYXNzIFNWR0FuaW1hdGVkTGVu
Z3RoSW1wbDsKKworICAgIGNsYXNzIFNWR0N1cnNvckVsZW1lbnRJbXBsIDogcHVibGljIFNWR0Vs
ZW1lbnRJbXBsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFNWR1Rl
c3RzSW1wbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdFeHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkSW1wbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHB1YmxpYyBTVkdVUklSZWZlcmVuY2VJbXBsLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcHVibGljIEtET006OkNhY2hlZE9iamVjdENsaWVudAorICAgIHsKKyAgICBwdWJs
aWM6CisgICAgICAgIFNWR0N1cnNvckVsZW1lbnRJbXBsKEtET006OkRvY3VtZW50UHRyICpkb2Ms
IEtET006Ok5vZGVJbXBsOjpJZCBpZCwgIEtET006OkRPTVN0cmluZ0ltcGwgKnByZWZpeCk7Cisg
ICAgICAgIHZpcnR1YWwgflNWR0N1cnNvckVsZW1lbnRJbXBsKCk7CisKKyAgICAgICAgLy8gJ1NW
R0N1cnNvckVsZW1lbnQnIGZ1bmN0aW9ucworICAgICAgICBTVkdBbmltYXRlZExlbmd0aEltcGwg
KngoKSBjb25zdDsKKyAgICAgICAgU1ZHQW5pbWF0ZWRMZW5ndGhJbXBsICp5KCkgY29uc3Q7CisK
KyAgICAgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKEtET006OkF0dHJpYnV0ZUltcGwg
KmF0dHIpOworCisgICAgICAgIHZpcnR1YWwgdm9pZCBub3RpZnlGaW5pc2hlZChLRE9NOjpDYWNo
ZWRPYmplY3QgKmZpbmlzaGVkT2JqKTsKKworICAgICAgICBjb25zdCBRUGl4bWFwICZwaXhtYXAo
KSBjb25zdCB7IHJldHVybiBtX2ltYWdlOyB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBtdXRh
YmxlIFNWR0FuaW1hdGVkTGVuZ3RoSW1wbCAqbV94OworICAgICAgICBtdXRhYmxlIFNWR0FuaW1h
dGVkTGVuZ3RoSW1wbCAqbV95OworICAgICAgICBLRE9NOjpDYWNoZWRJbWFnZSAqbV9jYWNoZWRJ
bWFnZTsKKyAgICAgICAgUVBpeG1hcCBtX2ltYWdlOworICAgIH07Cit9OworCisjZW5kaWYKKwor
Ly8gdmltOnRzPTQ6bm9ldApJbmRleDoga3N2ZzIvc3ZnL1NWR0RPTUltcGxlbWVudGF0aW9uSW1w
bC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1NWR1N1cHBvcnQva3N2ZzIvc3Zn
L1NWR0RPTUltcGxlbWVudGF0aW9uSW1wbC5jcHAsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNQpk
aWZmIC1wIC11IC1yMS41IGtzdmcyL3N2Zy9TVkdET01JbXBsZW1lbnRhdGlvbkltcGwuY3BwCi0t
LSBrc3ZnMi9zdmcvU1ZHRE9NSW1wbGVtZW50YXRpb25JbXBsLmNwcAkxIFNlcCAyMDA1IDA5OjM5
OjE0IC0wMDAwCTEuNQorKysga3N2ZzIvc3ZnL1NWR0RPTUltcGxlbWVudGF0aW9uSW1wbC5jcHAJ
NiBTZXAgMjAwNSAwNzoxNzozNCAtMDAwMApAQCAtMTE0LDMxICsxMTQsMzIgQEAgU1ZHRE9NSW1w
bGVtZW50YXRpb25JbXBsICpTVkdET01JbXBsZW1lbgogICAgIHJldHVybiBzX2luc3RhbmNlOwog
fQogCi1ib29sIFNWR0RPTUltcGxlbWVudGF0aW9uSW1wbDo6aGFzRmVhdHVyZShLRE9NOjpET01T
dHJpbmdJbXBsICpfZmVhdHVyZSwgS0RPTTo6RE9NU3RyaW5nSW1wbCAqX3ZlcnNpb24pIGNvbnN0
Citib29sIFNWR0RPTUltcGxlbWVudGF0aW9uSW1wbDo6aGFzRmVhdHVyZShLRE9NOjpET01TdHJp
bmdJbXBsICpmZWF0dXJlSW1wbCwgS0RPTTo6RE9NU3RyaW5nSW1wbCAqdmVyc2lvbkltcGwpIGNv
bnN0CiB7Ci0gICAgUVN0cmluZyBmZWF0dXJlID0gS0RPTTo6RE9NU3RyaW5nKF9mZWF0dXJlKS51
cHBlcigpLnN0cmluZygpOwotICAgIEtET006OkRPTVN0cmluZyB2ZXJzaW9uKF92ZXJzaW9uKTsK
LSAgICBpZigodmVyc2lvbi5pc0VtcHR5KCkgfHwgdmVyc2lvbiA9PSAiMS4xIikgJiYKKyAgICBR
U3RyaW5nIGZlYXR1cmUgPSAoZmVhdHVyZUltcGwgPyBLRE9NOjpET01TdHJpbmcoZmVhdHVyZUlt
cGwpLnVwcGVyKCkuc3RyaW5nKCkgOiBRU3RyaW5nOjpudWxsKTsKKyAgICBRU3RyaW5nIHZlcnNp
b24gPSAodmVyc2lvbkltcGwgPyB2ZXJzaW9uSW1wbC0+c3RyaW5nKCkgOiBRU3RyaW5nOjpudWxs
KTsKKworICAgIGlmKCh2ZXJzaW9uLmlzRW1wdHkoKSB8fCB2ZXJzaW9uID09IFFTdHJpbmc6OmZy
b21MYXRpbjEoIjEuMSIpKSAmJgogICAgICAgIGZlYXR1cmUuc3RhcnRzV2l0aChRU3RyaW5nOjpm
cm9tTGF0aW4xKCJIVFRQOi8vV1dXLlczLk9SRy9UUi9TVkcxMS9GRUFUVVJFIyIpKSkKICAgICB7
CiAgICAgICAgIGlmKHNfZmVhdHVyZXMuY29udGFpbnMoZmVhdHVyZS5yaWdodChmZWF0dXJlLmxl
bmd0aCgpIC0gMzUpKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIGlm
KCh2ZXJzaW9uLmlzRW1wdHkoKSB8fCB2ZXJzaW9uID09ICIxLjAiKSAmJgorICAgIGlmKCh2ZXJz
aW9uLmlzRW1wdHkoKSB8fCB2ZXJzaW9uID09IFFTdHJpbmc6OmZyb21MYXRpbjEoIjEuMCIpKSAm
JgogICAgICAgIGZlYXR1cmUuc3RhcnRzV2l0aChRU3RyaW5nOjpmcm9tTGF0aW4xKCJPUkcuVzND
LiIpKSkKICAgICB7CiAgICAgICAgIGlmKHNfZmVhdHVyZXMuY29udGFpbnMoZmVhdHVyZS5yaWdo
dChmZWF0dXJlLmxlbmd0aCgpIC0gOCkpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQogCi0gICAgcmV0dXJuIEtET006OkRPTUltcGxlbWVudGF0aW9uSW1wbDo6aGFzRmVhdHVyZShf
ZmVhdHVyZSwgX3ZlcnNpb24pOworICAgIHJldHVybiBLRE9NOjpET01JbXBsZW1lbnRhdGlvbklt
cGw6Omhhc0ZlYXR1cmUoZmVhdHVyZUltcGwsIHZlcnNpb25JbXBsKTsKIH0KIAogS0RPTTo6RG9j
dW1lbnRUeXBlSW1wbCAqU1ZHRE9NSW1wbGVtZW50YXRpb25JbXBsOjpjcmVhdGVEb2N1bWVudFR5
cGUoS0RPTTo6RE9NU3RyaW5nSW1wbCAqcXVhbGlmaWVkTmFtZSwgS0RPTTo6RE9NU3RyaW5nSW1w
bCAqcHVibGljSWQsIEtET006OkRPTVN0cmluZ0ltcGwgKnN5c3RlbUlkKSBjb25zdAogewogICAg
IC8vIElOVkFMSURfQ0hBUkFDVEVSX0VSUjogUmFpc2VkIGlmIHRoZSBzcGVjaWZpZWQgcXVhbGlm
aWVkIG5hbWUgY29udGFpbnMgYW4gaWxsZWdhbCBjaGFyYWN0ZXIuCi0gICAgaWYoKHF1YWxpZmll
ZE5hbWUgJiYgIXF1YWxpZmllZE5hbWUtPmlzRW1wdHkoKSkgfHwgIUtET006OkhlbHBlcjo6VmFs
aWRhdGVBdHRyaWJ1dGVOYW1lKHF1YWxpZmllZE5hbWUpKQorICAgIGlmKCghcXVhbGlmaWVkTmFt
ZSB8fCBxdWFsaWZpZWROYW1lLT5pc0VtcHR5KCkpIHx8ICFLRE9NOjpIZWxwZXI6OlZhbGlkYXRl
QXR0cmlidXRlTmFtZShxdWFsaWZpZWROYW1lKSkKICAgICAgICAgdGhyb3cgbmV3IEtET006OkRP
TUV4Y2VwdGlvbkltcGwoS0RPTTo6SU5WQUxJRF9DSEFSQUNURVJfRVJSKTsKIAogICAgIC8vIE5B
TUVTUEFDRV9FUlI6IFJhaXNlZCBpZiBubyBxdWFsaWZpZWROYW1lIHN1cHBsaWVkIChub3QgbWVu
dGlvbmVkIGluIHRoZSBzcGVjISkKQEAgLTE1NiwxNCArMTU3LDE5IEBAIEtET006OkRvY3VtZW50
SW1wbCAqU1ZHRE9NSW1wbGVtZW50YXRpb24KICAgICByZXR1cm4gY3JlYXRlRG9jdW1lbnQobmFt
ZXNwYWNlVVJJLCBxdWFsaWZpZWROYW1lSW1wbCwgZG9jdHlwZSwgdHJ1ZSwgMCk7CiB9CiAKLUtE
T006OkRvY3VtZW50SW1wbCAqU1ZHRE9NSW1wbGVtZW50YXRpb25JbXBsOjpjcmVhdGVEb2N1bWVu
dChLRE9NOjpET01TdHJpbmdJbXBsICpuYW1lc3BhY2VVUkksIEtET006OkRPTVN0cmluZ0ltcGwg
KnF1YWxpZmllZE5hbWVJbXBsLCBLRE9NOjpEb2N1bWVudFR5cGVJbXBsICpkb2N0eXBlLCBib29s
IGNyZWF0ZURvY0VsZW1lbnQsIEtET006OktET01WaWV3ICp2aWV3KSBjb25zdAorS0RPTTo6RG9j
dW1lbnRJbXBsICpTVkdET01JbXBsZW1lbnRhdGlvbkltcGw6OmNyZWF0ZURvY3VtZW50KEtET006
OkRPTVN0cmluZ0ltcGwgKm5hbWVzcGFjZVVSSUltcGwsIEtET006OkRPTVN0cmluZ0ltcGwgKnF1
YWxpZmllZE5hbWVJbXBsLCBLRE9NOjpEb2N1bWVudFR5cGVJbXBsICpkb2N0eXBlLCBib29sIGNy
ZWF0ZURvY0VsZW1lbnQsIEtET006OktET01WaWV3ICp2aWV3KSBjb25zdAogeworICAgIGlmKG5h
bWVzcGFjZVVSSUltcGwpCisgICAgICAgIG5hbWVzcGFjZVVSSUltcGwtPnJlZigpOworICAgIGlm
KHF1YWxpZmllZE5hbWVJbXBsKQorICAgICAgICBxdWFsaWZpZWROYW1lSW1wbC0+cmVmKCk7Cisg
ICAgS0RPTTo6RE9NU3RyaW5nIG5hbWVzcGFjZVVSSShuYW1lc3BhY2VVUklJbXBsKTsKICAgICBL
RE9NOjpET01TdHJpbmcgcXVhbGlmaWVkTmFtZShxdWFsaWZpZWROYW1lSW1wbCk7Ci0gICAgaWYo
KG5hbWVzcGFjZVVSSSAmJiBLRE9NOjpET01TdHJpbmcobmFtZXNwYWNlVVJJKSAhPSBLRE9NOjpO
U19TVkcpIHx8IChxdWFsaWZpZWROYW1lICE9ICJzdmciICYmIHF1YWxpZmllZE5hbWUgIT0gInN2
ZzpzdmciKSkKLSAgICAgICAgcmV0dXJuIEtET006OkRPTUltcGxlbWVudGF0aW9uSW1wbDo6Y3Jl
YXRlRG9jdW1lbnQobmFtZXNwYWNlVVJJLCBxdWFsaWZpZWROYW1lSW1wbCwgZG9jdHlwZSwgY3Jl
YXRlRG9jRWxlbWVudCwgdmlldyk7CisgICAgaWYoKG5hbWVzcGFjZVVSSSAhPSBLRE9NOjpOU19T
VkcpIHx8IChxdWFsaWZpZWROYW1lICE9ICJzdmciICYmIHF1YWxpZmllZE5hbWUgIT0gInN2Zzpz
dmciKSkKKyAgICAgICAgcmV0dXJuIEtET006OkRPTUltcGxlbWVudGF0aW9uSW1wbDo6Y3JlYXRl
RG9jdW1lbnQobmFtZXNwYWNlVVJJSW1wbCwgcXVhbGlmaWVkTmFtZUltcGwsIGRvY3R5cGUsIGNy
ZWF0ZURvY0VsZW1lbnQsIHZpZXcpOwogCiAgICAgaW50IGR1bW15OwotICAgIEtET006OkhlbHBl
cjo6Q2hlY2tRdWFsaWZpZWROYW1lKHF1YWxpZmllZE5hbWVJbXBsLCBuYW1lc3BhY2VVUkksIGR1
bW15LCB0cnVlIC8qbmFtZUNhbkJlTnVsbCovLCB0cnVlIC8qbmFtZUNhbkJlRW1wdHksIHNlZSAj
NjE2NTAqLyk7CisgICAgS0RPTTo6SGVscGVyOjpDaGVja1F1YWxpZmllZE5hbWUocXVhbGlmaWVk
TmFtZUltcGwsIG5hbWVzcGFjZVVSSUltcGwsIGR1bW15LCB0cnVlIC8qbmFtZUNhbkJlTnVsbCov
LCB0cnVlIC8qbmFtZUNhbkJlRW1wdHksIHNlZSAjNjE2NTAqLyk7CiAKICAgICAvLyBXUk9OR19E
T0NVTUVOVF9FUlI6IFJhaXNlZCBpZiBkb2NUeXBlIGhhcyBhbHJlYWR5IGJlZW4gdXNlZCB3aXRo
IGEgZGlmZmVyZW50CiAgICAgLy8gICAgICAgICAgICAgICAgICAgICBkb2N1bWVudCBvciB3YXMg
Y3JlYXRlZCBmcm9tIGEgZGlmZmVyZW50IGltcGxlbWVudGF0aW9uLgpAQCAtMTc5LDEwICsxODUs
MTUgQEAgS0RPTTo6RG9jdW1lbnRJbXBsICpTVkdET01JbXBsZW1lbnRhdGlvbgogICAgIC8vIEFk
ZCByb290IGVsZW1lbnQuLi4KICAgICBpZihjcmVhdGVEb2NFbGVtZW50KQogICAgIHsKLSAgICAg
ICAgS0RPTTo6RWxlbWVudEltcGwgKnN2ZyA9IGRvYy0+Y3JlYXRlRWxlbWVudE5TKG5hbWVzcGFj
ZVVSSSwgcXVhbGlmaWVkTmFtZUltcGwpOworICAgICAgICBLRE9NOjpFbGVtZW50SW1wbCAqc3Zn
ID0gZG9jLT5jcmVhdGVFbGVtZW50TlMobmFtZXNwYWNlVVJJSW1wbCwgcXVhbGlmaWVkTmFtZUlt
cGwpOwogICAgICAgICBkb2MtPmFwcGVuZENoaWxkKHN2Zyk7CiAgICAgfQogCisgICAgaWYobmFt
ZXNwYWNlVVJJSW1wbCkKKyAgICAgICAgbmFtZXNwYWNlVVJJSW1wbC0+ZGVyZWYoKTsKKyAgICBp
ZihxdWFsaWZpZWROYW1lSW1wbCkKKyAgICAgICAgcXVhbGlmaWVkTmFtZUltcGwtPmRlcmVmKCk7
CisKICAgICByZXR1cm4gZG9jOwogfQogCkBAIC0yMDcsMTUgKzIxOCwxOCBAQCBLRE9NOjpEb2N1
bWVudFR5cGVJbXBsICpTVkdET01JbXBsZW1lbnRhCiAKIGludCBTVkdET01JbXBsZW1lbnRhdGlv
bkltcGw6OnR5cGVUb0lkKEtET006OkRPTVN0cmluZ0ltcGwgKnR5cGVJbXBsKQogewotICAgIEtE
T006OkRPTVN0cmluZyB0eXBlKHR5cGVJbXBsKTsKKyAgICBpZighdHlwZUltcGwpCisgICAgICAg
IHJldHVybiAtMTsKKworICAgIFFTdHJpbmcgdHlwZSA9IHR5cGVJbXBsLT5zdHJpbmcoKTsKIAot
ICAgIGlmKHR5cGUgPT0gImxvYWQiKSByZXR1cm4gS0RPTTo6TE9BRF9FVkVOVDsKLSAgICBlbHNl
IGlmKHR5cGUgPT0gInVubG9hZCIpIHJldHVybiBLRE9NOjpVTkxPQURfRVZFTlQ7Ci0gICAgZWxz
ZSBpZih0eXBlID09ICJhYm9ydCIpIHJldHVybiBLRE9NOjpBQk9SVF9FVkVOVDsKLSAgICBlbHNl
IGlmKHR5cGUgPT0gImVycm9yIikgcmV0dXJuIEtET006OkVSUk9SX0VWRU5UOwotICAgIGVsc2Ug
aWYodHlwZSA9PSAicmVzaXplIikgcmV0dXJuIEtET006OlJFU0laRV9FVkVOVDsKLSAgICBlbHNl
IGlmKHR5cGUgPT0gInNjcm9sbCIpIHJldHVybiBLRE9NOjpTQ1JPTExfRVZFTlQ7Ci0gICAgZWxz
ZSBpZih0eXBlID09ICJ6b29tIikgcmV0dXJuIFpPT01fRVZFTlQ7CisgICAgaWYodHlwZSA9PSBR
U3RyaW5nOjpmcm9tTGF0aW4xKCJsb2FkIikpIHJldHVybiBLRE9NOjpMT0FEX0VWRU5UOworICAg
IGVsc2UgaWYodHlwZSA9PSBRU3RyaW5nOjpmcm9tTGF0aW4xKCJ1bmxvYWQiKSkgcmV0dXJuIEtE
T006OlVOTE9BRF9FVkVOVDsKKyAgICBlbHNlIGlmKHR5cGUgPT0gUVN0cmluZzo6ZnJvbUxhdGlu
MSgiYWJvcnQiKSkgcmV0dXJuIEtET006OkFCT1JUX0VWRU5UOworICAgIGVsc2UgaWYodHlwZSA9
PSBRU3RyaW5nOjpmcm9tTGF0aW4xKCJlcnJvciIpKSByZXR1cm4gS0RPTTo6RVJST1JfRVZFTlQ7
CisgICAgZWxzZSBpZih0eXBlID09IFFTdHJpbmc6OmZyb21MYXRpbjEoInJlc2l6ZSIpKSByZXR1
cm4gS0RPTTo6UkVTSVpFX0VWRU5UOworICAgIGVsc2UgaWYodHlwZSA9PSBRU3RyaW5nOjpmcm9t
TGF0aW4xKCJzY3JvbGwiKSkgcmV0dXJuIEtET006OlNDUk9MTF9FVkVOVDsKKyAgICBlbHNlIGlm
KHR5cGUgPT0gUVN0cmluZzo6ZnJvbUxhdGluMSgiem9vbSIpKSByZXR1cm4gWk9PTV9FVkVOVDsK
IAogICAgIHJldHVybiBLRE9NOjpET01JbXBsZW1lbnRhdGlvbkltcGw6OnR5cGVUb0lkKHR5cGVJ
bXBsKTsKIH0KQEAgLTIyNSwxMyArMjM5LDEzIEBAIEtET006OkRPTVN0cmluZ0ltcGwgKlNWR0RP
TUltcGxlbWVudGF0aW8KICAgICBRU3RyaW5nIHJldDsKICAgICBzd2l0Y2goZXZlbnRJZCkKICAg
ICB7Ci0gICAgICAgIGNhc2UgS0RPTTo6TE9BRF9FVkVOVDogcmV0ID0gImxvYWQiOyBicmVhazsK
LSAgICAgICAgY2FzZSBLRE9NOjpVTkxPQURfRVZFTlQ6IHJldCA9ICJ1bmxvYWQiOyBicmVhazsK
LSAgICAgICAgY2FzZSBLRE9NOjpBQk9SVF9FVkVOVDogcmV0ID0gImFib3J0IjsgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgS0RPTTo6RVJST1JfRVZFTlQ6IHJldCA9ICJlcnJvciI7IGJyZWFrOwotICAg
ICAgICBjYXNlIEtET006OlJFU0laRV9FVkVOVDogcmV0ID0gInJlc2l6ZSI7IGJyZWFrOwotICAg
ICAgICBjYXNlIEtET006OlNDUk9MTF9FVkVOVDogcmV0ID0gInNjcm9sbCI7IGJyZWFrOwotICAg
ICAgICBjYXNlIFpPT01fRVZFTlQ6IHJldCA9ICJ6b29tIjsgYnJlYWs7CisgICAgICAgIGNhc2Ug
S0RPTTo6TE9BRF9FVkVOVDogcmV0ID0gUVN0cmluZzo6ZnJvbUxhdGluMSgibG9hZCIpOyBicmVh
azsKKyAgICAgICAgY2FzZSBLRE9NOjpVTkxPQURfRVZFTlQ6IHJldCA9IFFTdHJpbmc6OmZyb21M
YXRpbjEoInVubG9hZCIpOyBicmVhazsKKyAgICAgICAgY2FzZSBLRE9NOjpBQk9SVF9FVkVOVDog
cmV0ID0gUVN0cmluZzo6ZnJvbUxhdGluMSgiYWJvcnQiKTsgYnJlYWs7CisgICAgICAgIGNhc2Ug
S0RPTTo6RVJST1JfRVZFTlQ6IHJldCA9IFFTdHJpbmc6OmZyb21MYXRpbjEoImVycm9yIik7IGJy
ZWFrOworICAgICAgICBjYXNlIEtET006OlJFU0laRV9FVkVOVDogcmV0ID0gUVN0cmluZzo6ZnJv
bUxhdGluMSgicmVzaXplIik7IGJyZWFrOworICAgICAgICBjYXNlIEtET006OlNDUk9MTF9FVkVO
VDogcmV0ID0gUVN0cmluZzo6ZnJvbUxhdGluMSgic2Nyb2xsIik7IGJyZWFrOworICAgICAgICBj
YXNlIFpPT01fRVZFTlQ6IHJldCA9IFFTdHJpbmc6OmZyb21MYXRpbjEoInpvb20iKTsgYnJlYWs7
CiAgICAgICAgIGRlZmF1bHQ6IHJldHVybiBLRE9NOjpET01JbXBsZW1lbnRhdGlvbkltcGw6Omlk
VG9UeXBlKGV2ZW50SWQpOwogICAgIH0KIApJbmRleDoga3N2ZzIvc3ZnL1NWR0RvY3VtZW50SW1w
bC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1NWR1N1cHBvcnQva3N2ZzIvc3Zn
L1NWR0RvY3VtZW50SW1wbC5jcHAsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNgpkaWZmIC1wIC11
IC1yMS42IGtzdmcyL3N2Zy9TVkdEb2N1bWVudEltcGwuY3BwCi0tLSBrc3ZnMi9zdmcvU1ZHRG9j
dW1lbnRJbXBsLmNwcAkyIFNlcCAyMDA1IDEwOjAzOjE3IC0wMDAwCTEuNgorKysga3N2ZzIvc3Zn
L1NWR0RvY3VtZW50SW1wbC5jcHAJNiBTZXAgMjAwNSAwNzoxNzozNCAtMDAwMApAQCAtMzAsOCAr
MzAsNiBAQAogI2luY2x1ZGUgPGtkb20vSGVscGVyLmg+CiAjaW5jbHVkZSA8a2RvbS9TaGFyZWQu
aD4KICNpbmNsdWRlIDxrZG9tL05hbWVzcGFjZS5oPgotLy8jaW5jbHVkZSA8a2RvbS9Eb2N1bWVu
dFR5cGUuaD4KLS8vI2luY2x1ZGUgPGtkb20vZXZlbnRzL0V2ZW50Lmg+CiAjaW5jbHVkZSA8a2Rv
bS9jb3JlL2RvbWF0dHJzLmg+CiAjaW5jbHVkZSA8a2RvbS9jYWNoZS9LRE9NTG9hZGVyLmg+CiAj
aW5jbHVkZSA8a2RvbS9jb3JlL0NERkludGVyZmFjZS5oPgpAQCAtNzYsNiArNzQsNyBAQAogI2lu
Y2x1ZGUgIlNWR1RTcGFuRWxlbWVudEltcGwuaCIKICNpbmNsdWRlICJTVkdJbWFnZUVsZW1lbnRJ
bXBsLmgiCiAjaW5jbHVkZSAiU1ZHVGl0bGVFbGVtZW50SW1wbC5oIgorI2luY2x1ZGUgIlNWR0N1
cnNvckVsZW1lbnRJbXBsLmgiCiAjaW5jbHVkZSAiU1ZHRmlsdGVyRWxlbWVudEltcGwuaCIKICNp
bmNsdWRlICJTVkdGRUltYWdlRWxlbWVudEltcGwuaCIKICNpbmNsdWRlICJTVkdGRUJsZW5kRWxl
bWVudEltcGwuaCIKQEAgLTE4MiwxMCArMTgxLDggQEAgS0RPTTo6RE9NU3RyaW5nSW1wbCAqU1ZH
RG9jdW1lbnRJbXBsOjpVUgogU1ZHRWxlbWVudEltcGwgKlNWR0RvY3VtZW50SW1wbDo6Y3JlYXRl
U1ZHRWxlbWVudChLRE9NOjpET01TdHJpbmdJbXBsICpwcmVmaXgsIEtET006OkRPTVN0cmluZ0lt
cGwgKmxvY2FsTmFtZSkKIHsKICAgICBTVkdFbGVtZW50SW1wbCAqZWxlbWVudCA9IDA7Ci0gICAg
S0RPTTo6RE9NU3RyaW5nIHByZWYocHJlZml4KTsKLSAgICBpZighcHJlZml4IHx8IHByZWZpeC0+
bGVuZ3RoKCkgPT0gMCkKLSAgICAgICAgcHJlZiA9IEtET006OkRPTVN0cmluZygpOwotICAgIFFT
dHJpbmcgbG9jYWwgPSBLRE9NOjpET01TdHJpbmcobG9jYWxOYW1lKS5zdHJpbmcoKTsKKworICAg
IFFTdHJpbmcgbG9jYWwgPSAobG9jYWxOYW1lID8gbG9jYWxOYW1lLT5zdHJpbmcoKSA6IFFTdHJp
bmc6Om51bGwpOwogICAgIEtET006Ok5vZGVJbXBsOjpJZCBpZCA9IGltcGxlbWVudGF0aW9uKCkt
PmNkZkludGVyZmFjZSgpLT5nZXRUYWdJRChsb2NhbC5hc2NpaSgpLCBsb2NhbC5sZW5ndGgoKSk7
CiAgICAgc3dpdGNoKGlkKQogICAgIHsKQEAgLTQyOSwxMCArNDI2LDEzIEBAIFNWR0VsZW1lbnRJ
bXBsICpTVkdEb2N1bWVudEltcGw6OmNyZWF0ZVMKICAgICAgICAgICAgIGVsZW1lbnQgPSBuZXcg
U1ZHVFNwYW5FbGVtZW50SW1wbChkb2NQdHIoKSwgaWQsIHByZWZpeCk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQotICAgICAgICBkZWZhdWx0OgorICAgICAgICBjYXNlIElEX0NVUlNP
UjoKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICBlbGVtZW50
ID0gbmV3IFNWR0N1cnNvckVsZW1lbnRJbXBsKGRvY1B0cigpLCBpZCwgcHJlZml4KTsKKyAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBl
bGVtZW50ID0gMDsKICAgICB9OwogCiAgICAgcmV0dXJuIGVsZW1lbnQ7CkBAIC00NDAsMTAgKzQ0
MCwxNiBAQCBTVkdFbGVtZW50SW1wbCAqU1ZHRG9jdW1lbnRJbXBsOjpjcmVhdGVTCiAKIEtET006
OkVsZW1lbnRJbXBsICpTVkdEb2N1bWVudEltcGw6OmNyZWF0ZUVsZW1lbnQoS0RPTTo6RE9NU3Ry
aW5nSW1wbCAqdGFnTmFtZSkKIHsKKyAgICBpZih0YWdOYW1lKQorICAgICAgICB0YWdOYW1lLT5y
ZWYoKTsKKwogICAgIFNWR0VsZW1lbnRJbXBsICplbGVtID0gY3JlYXRlU1ZHRWxlbWVudCgwLCB0
YWdOYW1lKTsKICAgICBpZighZWxlbSkKICAgICAgICAgcmV0dXJuIEtET006OkRvY3VtZW50SW1w
bDo6Y3JlYXRlRWxlbWVudCh0YWdOYW1lKTsKIAorICAgIGlmKHRhZ05hbWUpCisgICAgICAgIHRh
Z05hbWUtPmRlcmVmKCk7CisKICAgICByZXR1cm4gZWxlbTsKIH0KIApAQCAtNDU0LDYgKzQ2MCw3
IEBAIEtET006OkVsZW1lbnRJbXBsICpTVkdEb2N1bWVudEltcGw6OmNyZWEKICAgICAgICAgbmFt
ZXNwYWNlVVJJSW1wbC0+cmVmKCk7CiAgICAgaWYocXVhbGlmaWVkTmFtZSkKICAgICAgICAgcXVh
bGlmaWVkTmFtZS0+cmVmKCk7CisKICAgICBLRE9NOjpET01TdHJpbmdJbXBsICpwcmVmaXggPSAw
LCAqbG9jYWxOYW1lID0gMDsKICAgICBLRE9NOjpIZWxwZXI6OlNwbGl0UHJlZml4TG9jYWxOYW1l
KHF1YWxpZmllZE5hbWUsIHByZWZpeCwgbG9jYWxOYW1lKTsKIApAQCAtNDk4LDEwICs1MDUsMTAg
QEAgU1ZHU1ZHRWxlbWVudEltcGwgKlNWR0RvY3VtZW50SW1wbDo6cm9vdAogCiBLRE9NOjpFdmVu
dEltcGwgKlNWR0RvY3VtZW50SW1wbDo6Y3JlYXRlRXZlbnQoS0RPTTo6RE9NU3RyaW5nSW1wbCAq
ZXZlbnRUeXBlSW1wbCkKIHsKLSAgICBLRE9NOjpET01TdHJpbmcgZXZlbnRUeXBlKGV2ZW50VHlw
ZUltcGwpOwotICAgIGlmKGV2ZW50VHlwZSA9PSAiU1ZHRXZlbnRzIikKKyAgICBRU3RyaW5nIGV2
ZW50VHlwZSA9IChldmVudFR5cGVJbXBsID8gZXZlbnRUeXBlSW1wbC0+c3RyaW5nKCkgOiBRU3Ry
aW5nOjpudWxsKTsKKyAgICBpZihldmVudFR5cGUgPT0gUVN0cmluZzo6ZnJvbUxhdGluMSgiU1ZH
RXZlbnRzIikpCiAgICAgICAgIHJldHVybiBuZXcgU1ZHRXZlbnRJbXBsKCk7Ci0gICAgZWxzZSBp
ZihldmVudFR5cGUgPT0gIlNWR1pvb21FdmVudHMiKQorICAgIGVsc2UgaWYoZXZlbnRUeXBlID09
IFFTdHJpbmc6OmZyb21MYXRpbjEoIlNWR1pvb21FdmVudHMiKSkKICAgICAgICAgcmV0dXJuIG5l
dyBTVkdab29tRXZlbnRJbXBsKCk7CiAKICAgICByZXR1cm4gRG9jdW1lbnRFdmVudEltcGw6OmNy
ZWF0ZUV2ZW50KGV2ZW50VHlwZUltcGwpOwpAQCAtNTE5LDcgKzUyNiw3IEBAIHZvaWQgU1ZHRG9j
dW1lbnRJbXBsOjpub3RpZnlGaW5pc2hlZChLRE8KICAgICAgICAgbV9jYWNoZWRTY3JpcHQtPmRl
cmVmKHRoaXMpOwogICAgICAgICBtX2NhY2hlZFNjcmlwdCA9IDA7CiAgICAgICAgIAotICAgICAg
ICBTVkdTY3JpcHRFbGVtZW50SW1wbDo6ZXhlY3V0ZVNjcmlwdCh0aGlzLCBzY3JpcHRTb3VyY2Uu
c3RyaW5nKCkpOworICAgICAgICBTVkdTY3JpcHRFbGVtZW50SW1wbDo6ZXhlY3V0ZVNjcmlwdCh0
aGlzLCBuZXcgS0RPTTo6RE9NU3RyaW5nSW1wbChzY3JpcHRTb3VyY2Uuc3RyaW5nKCkpKTsKICAg
ICAgICAgZXhlY3V0ZVNjcmlwdHModHJ1ZSk7CiAgICAgfQogfQpAQCAtNzgzLDcgKzc5MCw3IEBA
IHZvaWQgU1ZHRG9jdW1lbnRJbXBsOjpleGVjdXRlU2NyaXB0cyhib28KICAgICAgICAgZWxzZQog
ICAgICAgICB7CiAgICAgICAgICAgICAvLyBubyBzcmMgYXR0cmlidXRlIC0gZXhlY3V0ZSBmcm9t
IGNvbnRlbnRzIG9mIHRhZwotICAgICAgICAgICAgU1ZHU2NyaXB0RWxlbWVudEltcGw6OmV4ZWN1
dGVTY3JpcHQodGhpcywgS0RPTTo6RE9NU3RyaW5nKHNjcmlwdC0+dGV4dENvbnRlbnQoKSkpOwor
ICAgICAgICAgICAgU1ZHU2NyaXB0RWxlbWVudEltcGw6OmV4ZWN1dGVTY3JpcHQodGhpcywgc2Ny
aXB0LT50ZXh0Q29udGVudCgpKTsKICAgICAgICAgICAgICsrKCptX3NjcmlwdHNJdCk7CiAKICAg
ICAgICAgICAgIG5lZWRzU3R5bGVTZWxlY3RvclVwZGF0ZSA9IHRydWU7CkBAIC04NTQsMTAgKzg2
MSwxMCBAQCBib29sIFNWR0RvY3VtZW50SW1wbDo6cHJlcGFyZU1vdXNlRXZlbnQoCiAgICAgICAg
IGlmKG1fbGFzdFRhcmdldCAmJiBtX2xhc3RUYXJnZXQgIT0gY3VycmVudCkKICAgICAgICAgewog
ICAgICAgICAgICAgaWYobV9sYXN0VGFyZ2V0LT5oYXNMaXN0ZW5lclR5cGUoS0RPTTo6RE9NRk9D
VVNPVVRfRVZFTlQpKQotICAgICAgICAgICAgICAgIGRpc3BhdGNoVUlFdmVudChtX2xhc3RUYXJn
ZXQsICJET01Gb2N1c091dCIpOworICAgICAgICAgICAgICAgIGRpc3BhdGNoVUlFdmVudChtX2xh
c3RUYXJnZXQsIEtET006OkRPTVN0cmluZygiRE9NRm9jdXNPdXQiKS5oYW5kbGUoKSk7CiAKICAg
ICAgICAgICAgIGlmKG1fbGFzdFRhcmdldC0+aGFzTGlzdGVuZXJUeXBlKEtET006Ok1PVVNFT1VU
X0VWRU5UKSkKLSAgICAgICAgICAgICAgICBkaXNwYXRjaE1vdXNlRXZlbnQobV9sYXN0VGFyZ2V0
LCAibW91c2VvdXQiKTsKKyAgICAgICAgICAgICAgICBkaXNwYXRjaE1vdXNlRXZlbnQobV9sYXN0
VGFyZ2V0LCBLRE9NOjpET01TdHJpbmcoIm1vdXNlb3V0IikuaGFuZGxlKCkpOwogCiAgICAgICAg
ICAgICBtX2xhc3RUYXJnZXQgPSAwOwogICAgICAgICB9CkBAIC05MjgsMjMgKzkzNSwyMyBAQCBi
b29sIFNWR0RvY3VtZW50SW1wbDo6cHJlcGFyZU1vdXNlRXZlbnQoCiAgICAgICAgICAgICAgICAg
ICAgIGlmKGV2ZW50LT5pZCgpID09IEtET006Ok1PVVNFVVBfRVZFTlQpCiAgICAgICAgICAgICAg
ICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGN1cnJlbnQtPmhhc0xpc3RlbmVy
VHlwZShLRE9NOjpDTElDS19FVkVOVCkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlz
cGF0Y2hNb3VzZUV2ZW50KGN1cnJlbnQsICJjbGljayIpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGRpc3BhdGNoTW91c2VFdmVudChjdXJyZW50LCBLRE9NOjpET01TdHJpbmcoImNsaWNr
IikuaGFuZGxlKCkpOwogCiAgICAgICAgICAgICAgICAgICAgICAgICBpZihjdXJyZW50LT5oYXNM
aXN0ZW5lclR5cGUoS0RPTTo6RE9NQUNUSVZBVEVfRVZFTlQpKQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRpc3BhdGNoVUlFdmVudChjdXJyZW50LCAiRE9NQWN0aXZhdGUiKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaFVJRXZlbnQoY3VycmVudCwgS0RPTTo6RE9N
U3RyaW5nKCJET01BY3RpdmF0ZSIpLmhhbmRsZSgpKTsKIAogICAgICAgICAgICAgICAgICAgICAg
ICAgaWYoY3VycmVudC0+aGFzTGlzdGVuZXJUeXBlKEtET006OkRPTUZPQ1VTSU5fRVZFTlQpKQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BhdGNoVUlFdmVudChjdXJyZW50LCAiRE9N
Rm9jdXNJbiIpOyAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaFVJRXZl
bnQoY3VycmVudCwgS0RPTTo6RE9NU3RyaW5nKCJET01Gb2N1c0luIikuaGFuZGxlKCkpOyAgICAK
ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBlbHNlIGlmKGV2ZW50
LT5pZCgpID09IEtET006Ok1PVVNFTU9WRV9FVkVOVCkKICAgICAgICAgICAgICAgICAgICAgewog
ICAgICAgICAgICAgICAgICAgICAgICAgaWYobV9sYXN0VGFyZ2V0ICYmIG1fbGFzdFRhcmdldCAh
PSBjdXJyZW50KQogICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmKG1fbGFzdFRhcmdldC0+aGFzTGlzdGVuZXJUeXBlKEtET006OkRPTUZPQ1VT
T1VUX0VWRU5UKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGF0Y2hVSUV2
ZW50KG1fbGFzdFRhcmdldCwgIkRPTUZvY3VzT3V0Iik7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRpc3BhdGNoVUlFdmVudChtX2xhc3RUYXJnZXQsIEtET006OkRPTVN0cmluZygi
RE9NRm9jdXNPdXQiKS5oYW5kbGUoKSk7CiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
ZihtX2xhc3RUYXJnZXQtPmhhc0xpc3RlbmVyVHlwZShLRE9NOjpNT1VTRU9VVF9FVkVOVCkpCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BhdGNoTW91c2VFdmVudChtX2xhc3RU
YXJnZXQsICJtb3VzZW91dCIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNw
YXRjaE1vdXNlRXZlbnQobV9sYXN0VGFyZ2V0LCBLRE9NOjpET01TdHJpbmcoIm1vdXNlb3V0Iiku
aGFuZGxlKCkpOwogCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9sYXN0VGFyZ2V0ID0g
MDsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTk1Miw3ICs5NTksNyBAQCBib29sIFNW
R0RvY3VtZW50SW1wbDo6cHJlcGFyZU1vdXNlRXZlbnQoCiAgICAgICAgICAgICAgICAgICAgICAg
ICBpZihjdXJyZW50LT5oYXNMaXN0ZW5lclR5cGUoS0RPTTo6TU9VU0VPVkVSX0VWRU5UKSkKICAg
ICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiht
X2xhc3RUYXJnZXQgIT0gY3VycmVudCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZGlzcGF0Y2hNb3VzZUV2ZW50KGN1cnJlbnQsICJtb3VzZW92ZXIiKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZGlzcGF0Y2hNb3VzZUV2ZW50KGN1cnJlbnQsIEtET006OkRPTVN0
cmluZygibW91c2VvdmVyIikuaGFuZGxlKCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgICAgICB9CiAKQEAgLTk4MiwyOCArOTg5LDM2IEBAIFRpbWVTY2hlZHVs
ZXIgKlNWR0RvY3VtZW50SW1wbDo6dGltZVNjaGUKICAgICByZXR1cm4gbV90aW1lU2NoZWR1bGVy
OwogfQogCi12b2lkIFNWR0RvY3VtZW50SW1wbDo6ZGlzcGF0Y2hVSUV2ZW50KEtET006OkV2ZW50
VGFyZ2V0SW1wbCAqdGFyZ2V0LCBjb25zdCBLRE9NOjpET01TdHJpbmcgJnR5cGUpCit2b2lkIFNW
R0RvY3VtZW50SW1wbDo6ZGlzcGF0Y2hVSUV2ZW50KEtET006OkV2ZW50VGFyZ2V0SW1wbCAqdGFy
Z2V0LCBLRE9NOjpET01TdHJpbmdJbXBsICp0eXBlKQogewogICAgIC8vIFNldHVwIGtkb20gJ1VJ
RXZlbnQnLi4uCi0gICAgS0RPTTo6VUlFdmVudEltcGwgKmV2ZW50ID0gc3RhdGljX2Nhc3Q8S0RP
TTo6VUlFdmVudEltcGwgKj4oY3JlYXRlRXZlbnQoS0RPTTo6RE9NU3RyaW5nKCJVSUV2ZW50cyIp
LmhhbmRsZSgpKSk7CisgICAgS0RPTTo6RE9NU3RyaW5nSW1wbCAqZXZlbnRUeXBlID0gbmV3IEtE
T006OkRPTVN0cmluZ0ltcGwoIlVJRXZlbnRzIik7CisgICAgZXZlbnRUeXBlLT5yZWYoKTsKKwor
ICAgIEtET006OlVJRXZlbnRJbXBsICpldmVudCA9IHN0YXRpY19jYXN0PEtET006OlVJRXZlbnRJ
bXBsICo+KGNyZWF0ZUV2ZW50KGV2ZW50VHlwZSkpOwogICAgIGV2ZW50LT5yZWYoKTsKIAotICAg
IGV2ZW50LT5pbml0VUlFdmVudCh0eXBlLmhhbmRsZSgpLCB0cnVlLCB0cnVlLCAwLCAwKTsKKyAg
ICBldmVudC0+aW5pdFVJRXZlbnQodHlwZSwgdHJ1ZSwgdHJ1ZSwgMCwgMCk7CiAgICAgdGFyZ2V0
LT5kaXNwYXRjaEV2ZW50KGV2ZW50KTsKIAogICAgIGV2ZW50LT5kZXJlZigpOworICAgIGV2ZW50
VHlwZS0+ZGVyZWYoKTsKIH0KIAotdm9pZCBTVkdEb2N1bWVudEltcGw6OmRpc3BhdGNoTW91c2VF
dmVudChLRE9NOjpFdmVudFRhcmdldEltcGwgKnRhcmdldCwgY29uc3QgS0RPTTo6RE9NU3RyaW5n
ICZ0eXBlKQordm9pZCBTVkdEb2N1bWVudEltcGw6OmRpc3BhdGNoTW91c2VFdmVudChLRE9NOjpF
dmVudFRhcmdldEltcGwgKnRhcmdldCwgS0RPTTo6RE9NU3RyaW5nSW1wbCAqdHlwZSkKIHsKICAg
ICAvLyBTZXR1cCBrZG9tICdNb3VzZUV2ZW50Jy4uLgotICAgIEtET006Ok1vdXNlRXZlbnRJbXBs
ICpldmVudCA9IHN0YXRpY19jYXN0PEtET006Ok1vdXNlRXZlbnRJbXBsICo+KGNyZWF0ZUV2ZW50
KEtET006OkRPTVN0cmluZygiTW91c2VFdmVudHMiKS5oYW5kbGUoKSkpOworICAgIEtET006OkRP
TVN0cmluZ0ltcGwgKmV2ZW50VHlwZSA9IG5ldyBLRE9NOjpET01TdHJpbmdJbXBsKCJNb3VzZUV2
ZW50cyIpOworICAgIGV2ZW50VHlwZS0+cmVmKCk7CisKKyAgICBLRE9NOjpNb3VzZUV2ZW50SW1w
bCAqZXZlbnQgPSBzdGF0aWNfY2FzdDxLRE9NOjpNb3VzZUV2ZW50SW1wbCAqPihjcmVhdGVFdmVu
dChldmVudFR5cGUpKTsKICAgICBldmVudC0+cmVmKCk7CiAKLSAgICBldmVudC0+aW5pdEV2ZW50
KHR5cGUuaGFuZGxlKCksIHRydWUsIHRydWUpOworICAgIGV2ZW50LT5pbml0RXZlbnQodHlwZSwg
dHJ1ZSwgdHJ1ZSk7CiAgICAgdGFyZ2V0LT5kaXNwYXRjaEV2ZW50KGV2ZW50KTsKIAogICAgIGV2
ZW50LT5kZXJlZigpOworICAgIGV2ZW50VHlwZS0+ZGVyZWYoKTsKIH0KIAogLy8gdmltOnRzPTQ6
bm9ldApJbmRleDoga3N2ZzIvc3ZnL1NWR0RvY3VtZW50SW1wbC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZp
bGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tzdmcyL3N2Zy9TVkdEb2N1bWVudEltcGwuaCx2CnJl
dHJpZXZpbmcgcmV2aXNpb24gMS42CmRpZmYgLXAgLXUgLXIxLjYga3N2ZzIvc3ZnL1NWR0RvY3Vt
ZW50SW1wbC5oCi0tLSBrc3ZnMi9zdmcvU1ZHRG9jdW1lbnRJbXBsLmgJMiBTZXAgMjAwNSAxMDow
MzoxNyAtMDAwMAkxLjYKKysrIGtzdmcyL3N2Zy9TVkdEb2N1bWVudEltcGwuaAk2IFNlcCAyMDA1
IDA3OjE3OjM1IC0wMDAwCkBAIC0xMDEsOCArMTAxLDggQEAgbmFtZXNwYWNlIEtTVkcKICAgICAg
ICAgdmlydHVhbCBLRE9NOjpDU1NTdHlsZVNlbGVjdG9yICpjcmVhdGVTdHlsZVNlbGVjdG9yKGNv
bnN0IFFTdHJpbmcgJik7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2b2lkIGRpc3BhdGNoVUlF
dmVudChLRE9NOjpFdmVudFRhcmdldEltcGwgKnRhcmdldCwgY29uc3QgS0RPTTo6RE9NU3RyaW5n
ICZ0eXBlKTsKLSAgICAgICAgdm9pZCBkaXNwYXRjaE1vdXNlRXZlbnQoS0RPTTo6RXZlbnRUYXJn
ZXRJbXBsICp0YXJnZXQsIGNvbnN0IEtET006OkRPTVN0cmluZyAmdHlwZSk7CisgICAgICAgIHZv
aWQgZGlzcGF0Y2hVSUV2ZW50KEtET006OkV2ZW50VGFyZ2V0SW1wbCAqdGFyZ2V0LCBLRE9NOjpE
T01TdHJpbmdJbXBsICp0eXBlKTsKKyAgICAgICAgdm9pZCBkaXNwYXRjaE1vdXNlRXZlbnQoS0RP
TTo6RXZlbnRUYXJnZXRJbXBsICp0YXJnZXQsIEtET006OkRPTVN0cmluZ0ltcGwgKnR5cGUpOwog
CiAgICAgICAgIFNWR0VsZW1lbnRJbXBsICpjcmVhdGVTVkdFbGVtZW50KEtET006OkRPTVN0cmlu
Z0ltcGwgKnByZWZpeCwgS0RPTTo6RE9NU3RyaW5nSW1wbCAqbG9jYWxOYW1lKTsKIApJbmRleDog
a3N2ZzIvc3ZnL1NWR0VsZW1lbnRJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jv
b3QvU1ZHU3VwcG9ydC9rc3ZnMi9zdmcvU1ZHRWxlbWVudEltcGwuY3BwLHYKcmV0cmlldmluZyBy
ZXZpc2lvbiAxLjUKZGlmZiAtcCAtdSAtcjEuNSBrc3ZnMi9zdmcvU1ZHRWxlbWVudEltcGwuY3Bw
Ci0tLSBrc3ZnMi9zdmcvU1ZHRWxlbWVudEltcGwuY3BwCTEgU2VwIDIwMDUgMDk6Mzk6MTUgLTAw
MDAJMS41CisrKyBrc3ZnMi9zdmcvU1ZHRWxlbWVudEltcGwuY3BwCTYgU2VwIDIwMDUgMDc6MTc6
MzUgLTAwMDAKQEAgLTU3LDExICs1Nyw4IEBAIGJvb2wgU1ZHRWxlbWVudEltcGw6OmlzU3VwcG9y
dGVkKEtET006OkQKIAogS0RPTTo6RE9NU3RyaW5nSW1wbCAqU1ZHRWxlbWVudEltcGw6OmdldElk
KCkgY29uc3QKIHsKLSAgICBLRE9NOjpET01TdHJpbmcgbmFtZSgiaWQiKTsKLSAgICBpZihoYXNB
dHRyaWJ1dGUobmFtZS5oYW5kbGUoKSkpCi0gICAgICAgIHJldHVybiBnZXRBdHRyaWJ1dGUobmFt
ZS5oYW5kbGUoKSk7Ci0KLSAgICByZXR1cm4gTlVMTDsKKyAgICBLRE9NOjpET01TdHJpbmcgaWQo
ImlkIik7CisgICAgcmV0dXJuIHRyeUdldEF0dHJpYnV0ZShpZC5oYW5kbGUoKSk7CiB9CiAKIHZv
aWQgU1ZHRWxlbWVudEltcGw6OnNldEdldElkKEtET006OkRPTVN0cmluZ0ltcGwgKikKQEAgLTcx
LDExICs2OCw3IEBAIHZvaWQgU1ZHRWxlbWVudEltcGw6OnNldEdldElkKEtET006OkRPTVMKIAog
S0RPTTo6RE9NU3RyaW5nSW1wbCAqU1ZHRWxlbWVudEltcGw6OnhtbGJhc2UoKSBjb25zdAogewot
ICAgIEtET006OkRPTVN0cmluZyBuYW1lKCJ4bWw6YmFzZSIpOwotICAgIGlmKGhhc0F0dHJpYnV0
ZShuYW1lLmhhbmRsZSgpKSkKLSAgICAgICAgcmV0dXJuIGdldEF0dHJpYnV0ZShuYW1lLmhhbmRs
ZSgpKTsKLQotICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiB0cnlHZXRBdHRyaWJ1dGUoS0RP
TTo6RE9NU3RyaW5nKCJ4bWw6YmFzZSIpLmhhbmRsZSgpKTsKIH0KIAogdm9pZCBTVkdFbGVtZW50
SW1wbDo6c2V0WG1sYmFzZShLRE9NOjpET01TdHJpbmdJbXBsICopCkBAIC0xMTIsMTQgKzEwNSwy
OSBAQCBTVkdFbGVtZW50SW1wbCAqU1ZHRWxlbWVudEltcGw6OnZpZXdwb3J0CiAgICAgcmV0dXJu
IDA7CiB9CiAKK0tET006OkRPTVN0cmluZ0ltcGwgKlNWR0VsZW1lbnRJbXBsOjp0cnlHZXRBdHRy
aWJ1dGUoS0RPTTo6RE9NU3RyaW5nSW1wbCAqbmFtZSwgS0RPTTo6RE9NU3RyaW5nSW1wbCAqZGVm
YXVsdFZhbCkgY29uc3QKK3sKKyAgICBpZihoYXNBdHRyaWJ1dGUobmFtZSkpCisgICAgICAgIHJl
dHVybiBnZXRBdHRyaWJ1dGUobmFtZSk7CisKKyAgICByZXR1cm4gZGVmYXVsdFZhbDsKK30KKwor
S0RPTTo6RE9NU3RyaW5nSW1wbCAqU1ZHRWxlbWVudEltcGw6OnRyeUdldEF0dHJpYnV0ZU5TKEtE
T006OkRPTVN0cmluZ0ltcGwgKm5hbWVzcGFjZVVSSSwgS0RPTTo6RE9NU3RyaW5nSW1wbCAqbG9j
YWxOYW1lLCBLRE9NOjpET01TdHJpbmdJbXBsICpkZWZhdWx0VmFsKSBjb25zdAoreworICAgIGlm
KGhhc0F0dHJpYnV0ZU5TKG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lKSkKKyAgICAgICAgcmV0dXJu
IGdldEF0dHJpYnV0ZU5TKG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lKTsKKworICAgIHJldHVybiBk
ZWZhdWx0VmFsOworfQorCiB2b2lkIFNWR0VsZW1lbnRJbXBsOjpwYXJzZUF0dHJpYnV0ZShLRE9N
OjpBdHRyaWJ1dGVJbXBsICphdHRyKQogewotICAgIGlmKCFvd25lckRvY3VtZW50KCkpCisgICAg
Y29uc3QgS0RPTTo6RG9jdW1lbnRJbXBsICpkb2MgPSBvd25lckRvY3VtZW50KCk7CisgICAgaWYo
IWRvYykKICAgICAgICAgcmV0dXJuOwotICAgIC8vY29uc3QgS0RPTTo6RG9jdW1lbnRJbXBsICpk
b2MgPSBvd25lckRvY3VtZW50KCk7CiAKICAgICBpbnQgaWQgPSAoYXR0ci0+aWQoKSAmIE5vZGVJ
bXBsX0lkTG9jYWxNYXNrKTsKLSAgICBLRE9NOjpET01TdHJpbmcgdmFsdWUoYXR0ci0+dmFsdWUo
KSk7CiAgICAgc3dpdGNoKGlkKQogICAgIHsKICAgICAgICAgY2FzZSBBVFRSX09OTE9BRDoKQEAg
LTE3MywxNiArMTgxLDE2IEBAIHZvaWQgU1ZHRWxlbWVudEltcGw6OnBhcnNlQXR0cmlidXRlKEtE
T00KICAgICB9OwogfQogI2lmIDAKLXZvaWQgU1ZHRWxlbWVudEltcGw6OmFkZFNWR0V2ZW50TGlz
dGVuZXIoS0RPTTo6RWNtYSAqZWNtYUVuZ2luZSwgY29uc3QgS0RPTTo6RE9NU3RyaW5nICZ0eXBl
LCBjb25zdCBLRE9NOjpET01TdHJpbmcgJnZhbHVlKQordm9pZCBTVkdFbGVtZW50SW1wbDo6YWRk
U1ZHRXZlbnRMaXN0ZW5lcihLRE9NOjpFY21hICplY21hRW5naW5lLCBLRE9NOjpET01TdHJpbmdJ
bXBsICp0eXBlLCBLRE9NOjpET01TdHJpbmdJbXBsICp2YWx1ZSkKIHsKICAgICBpZighZWNtYUVu
Z2luZSkKICAgICAgICAgcmV0dXJuOwotICAgIC8vIEZJWE1FCi0gICAgS0RPTTo6RXZlbnRMaXN0
ZW5lckltcGwgKmxpc3RlbmVyID0gMDsvL2VjbWFFbmdpbmUtPmNyZWF0ZUV2ZW50TGlzdGVuZXIo
dHlwZSwgdmFsdWUpOworCisgICAgS0RPTTo6RXZlbnRMaXN0ZW5lckltcGwgKmxpc3RlbmVyID0g
ZWNtYUVuZ2luZS0+Y3JlYXRlRXZlbnRMaXN0ZW5lcih0eXBlLCB2YWx1ZSk7CiAgICAgaWYobGlz
dGVuZXIpCiAgICAgewogICAgICAgICBsaXN0ZW5lci0+cmVmKCk7Ci0gICAgICAgIGFkZEV2ZW50
TGlzdGVuZXIodHlwZS5oYW5kbGUoKSwgbGlzdGVuZXIsIGZhbHNlKTsKKyAgICAgICAgYWRkRXZl
bnRMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lciwgZmFsc2UpOwogICAgIH0KIH0KICNlbmRpZgpJbmRl
eDoga3N2ZzIvc3ZnL1NWR0VsZW1lbnRJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9y
b290L1NWR1N1cHBvcnQva3N2ZzIvc3ZnL1NWR0VsZW1lbnRJbXBsLmgsdgpyZXRyaWV2aW5nIHJl
dmlzaW9uIDEuNQpkaWZmIC1wIC11IC1yMS41IGtzdmcyL3N2Zy9TVkdFbGVtZW50SW1wbC5oCi0t
LSBrc3ZnMi9zdmcvU1ZHRWxlbWVudEltcGwuaAkxIFNlcCAyMDA1IDA5OjM5OjE1IC0wMDAwCTEu
NQorKysga3N2ZzIvc3ZnL1NWR0VsZW1lbnRJbXBsLmgJNiBTZXAgMjAwNSAwNzoxNzozNSAtMDAw
MApAQCAtNTYsNiArNTYsMTEgQEAgbmFtZXNwYWNlIEtTVkcKICAgICAgICAgU1ZHU1ZHRWxlbWVu
dEltcGwgKm93bmVyU1ZHRWxlbWVudCgpIGNvbnN0OwogICAgICAgICBTVkdFbGVtZW50SW1wbCAq
dmlld3BvcnRFbGVtZW50KCkgY29uc3Q7CiAKKyAgICAgICAgLy8gSGVscGVyIG1ldGhvZHMgdGhh
dCByZXR1cm5zIHRoZSBhdHRyIHZhbHVlIGlmIGF0dHIgaXMgc2V0LCBvdGhlcndpc2UgdGhlIGRl
ZmF1bHQgdmFsdWUuCisgICAgICAgIC8vIEl0IHRocm93cyBOT19NT0RJRklDQVRJT05fQUxMT1dF
RF9FUlIgaWYgdGhlIGVsZW1lbnQgaXMgcmVhZC1vbmx5LgorICAgICAgICBLRE9NOjpET01TdHJp
bmdJbXBsICp0cnlHZXRBdHRyaWJ1dGUoS0RPTTo6RE9NU3RyaW5nSW1wbCAqbmFtZSwgS0RPTTo6
RE9NU3RyaW5nSW1wbCAqZGVmYXVsdFZhbCA9IDApIGNvbnN0OworICAgICAgICBLRE9NOjpET01T
dHJpbmdJbXBsICp0cnlHZXRBdHRyaWJ1dGVOUyhLRE9NOjpET01TdHJpbmdJbXBsICpuYW1lc3Bh
Y2VVUkksIEtET006OkRPTVN0cmluZ0ltcGwgKmxvY2FsTmFtZSwgS0RPTTo6RE9NU3RyaW5nSW1w
bCAqZGVmYXVsdFZhbCA9IDApIGNvbnN0OworCiAgICAgICAgIC8vIEludGVybmFsCiAgICAgICAg
IHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShLRE9NOjpBdHRyaWJ1dGVJbXBsICphdHRyKTsK
IApJbmRleDoga3N2ZzIvc3ZnL1NWR0dyYWRpZW50RWxlbWVudEltcGwuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
UkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tzdmcyL3N2Zy9TVkdHcmFkaWVudEVsZW1l
bnRJbXBsLmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS41CmRpZmYgLXAgLXUgLXIxLjUga3N2
ZzIvc3ZnL1NWR0dyYWRpZW50RWxlbWVudEltcGwuY3BwCi0tLSBrc3ZnMi9zdmcvU1ZHR3JhZGll
bnRFbGVtZW50SW1wbC5jcHAJMSBTZXAgMjAwNSAwOTozOToxNSAtMDAwMAkxLjUKKysrIGtzdmcy
L3N2Zy9TVkdHcmFkaWVudEVsZW1lbnRJbXBsLmNwcAk2IFNlcCAyMDA1IDA3OjE3OjM1IC0wMDAw
CkBAIC05NCw3ICs5NCw3IEBAIHZvaWQgU1ZHR3JhZGllbnRFbGVtZW50SW1wbDo6cGFyc2VBdHRy
aWIKICAgICAgICAgY2FzZSBBVFRSX0dSQURJRU5UVFJBTlNGT1JNOgogICAgICAgICB7CiAgICAg
ICAgICAgICBTVkdUcmFuc2Zvcm1MaXN0SW1wbCAqZ3JhZGllbnRUcmFuc2Zvcm1zID0gZ3JhZGll
bnRUcmFuc2Zvcm0oKS0+YmFzZVZhbCgpOwotICAgICAgICAgICAgU1ZHVHJhbnNmb3JtYWJsZUlt
cGw6OnBhcnNlVHJhbnNmb3JtQXR0cmlidXRlKGdyYWRpZW50VHJhbnNmb3JtcywgdmFsdWUpOwor
ICAgICAgICAgICAgU1ZHVHJhbnNmb3JtYWJsZUltcGw6OnBhcnNlVHJhbnNmb3JtQXR0cmlidXRl
KGdyYWRpZW50VHJhbnNmb3JtcywgYXR0ci0+dmFsdWUoKSk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgICAgICBjYXNlIEFUVFJfU1BSRUFETUVUSE9EOgpJbmRleDoga3N2ZzIv
c3ZnL1NWR0hlbHBlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1NWR1N1cHBv
cnQva3N2ZzIvc3ZnL1NWR0hlbHBlci5jcHAsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNApkaWZm
IC1wIC11IC1yMS40IGtzdmcyL3N2Zy9TVkdIZWxwZXIuY3BwCi0tLSBrc3ZnMi9zdmcvU1ZHSGVs
cGVyLmNwcAkxIFNlcCAyMDA1IDA3OjM1OjQyIC0wMDAwCTEuNAorKysga3N2ZzIvc3ZnL1NWR0hl
bHBlci5jcHAJNiBTZXAgMjAwNSAwNzoxNzozNSAtMDAwMApAQCAtNDAsMTEgKzQwLDEyIEBAIGZs
b2F0IFNWR0hlbHBlcjo6UGVyY2VudGFnZU9mVmlld3BvcnQoZmwKICAgICBmbG9hdCB3aWR0aCA9
IDAsIGhlaWdodCA9IDA7CiAgICAgaWYoIXZpZXdwb3J0RWxlbWVudCkKICAgICAgICAgcmV0dXJu
IDAuMDsKLSAgICAKKyAKICAgICBjb25zdCBTVkdTVkdFbGVtZW50SW1wbCAqc3ZnID0gZHluYW1p
Y19jYXN0PGNvbnN0IFNWR1NWR0VsZW1lbnRJbXBsICo+KHZpZXdwb3J0RWxlbWVudCk7CiAgICAg
aWYoc3ZnKQogICAgIHsKLSAgICAgICAgaWYoc3ZnLT5oYXNBdHRyaWJ1dGUoS0RPTTo6RE9NU3Ry
aW5nKCJ2aWV3Qm94IikuaGFuZGxlKCkpKQorICAgICAgICBLRE9NOjpET01TdHJpbmcgdmlld0Jv
eCgidmlld0JveCIpOworICAgICAgICBpZihzdmctPmhhc0F0dHJpYnV0ZSh2aWV3Qm94LmhhbmRs
ZSgpKSkKICAgICAgICAgewogICAgICAgICAgICAgd2lkdGggPSBzdmctPnZpZXdCb3goKS0+YmFz
ZVZhbCgpLT53aWR0aCgpOwogICAgICAgICAgICAgaGVpZ2h0ID0gc3ZnLT52aWV3Qm94KCktPmJh
c2VWYWwoKS0+aGVpZ2h0KCk7CkluZGV4OiBrc3ZnMi9zdmcvU1ZHSW1hZ2VFbGVtZW50SW1wbC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1NWR1N1cHBvcnQva3N2ZzIvc3ZnL1NW
R0ltYWdlRWxlbWVudEltcGwuY3BwLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjUKZGlmZiAtcCAt
dSAtcjEuNSBrc3ZnMi9zdmcvU1ZHSW1hZ2VFbGVtZW50SW1wbC5jcHAKLS0tIGtzdmcyL3N2Zy9T
VkdJbWFnZUVsZW1lbnRJbXBsLmNwcAkxIFNlcCAyMDA1IDA5OjM5OjE2IC0wMDAwCTEuNQorKysg
a3N2ZzIvc3ZnL1NWR0ltYWdlRWxlbWVudEltcGwuY3BwCTYgU2VwIDIwMDUgMDc6MTc6MzUgLTAw
MDAKQEAgLTE5NSw3ICsxOTUsNyBAQCB2b2lkIFNWR0ltYWdlRWxlbWVudEltcGw6Om5vdGlmeUZp
bmlzaGVkCiAgICAgICAgIHBhcnNlci0+ZG9tQ29uZmlnKCktPnNldFBhcmFtZXRlcihLRE9NOjpF
TlRJVElFUy5oYW5kbGUoKSwgZmFsc2UpOwogICAgICAgICBwYXJzZXItPmRvbUNvbmZpZygpLT5z
ZXRQYXJhbWV0ZXIoS0RPTTo6RUxFTUVOVF9DT05URU5UX1dISVRFU1BBQ0UuaGFuZGxlKCksIGZh
bHNlKTsKIAotICAgICAgICBRQnVmZmVyICp0ZW1wID0gbmV3IFFCdWZmZXIobV9jYWNoZWREb2N1
bWVudC0+ZG9jdW1lbnRCdWZmZXIoKS0+YnVmZmVyKCkpOworICAgICAgICBRQnVmZmVyICp0ZW1w
ID0gbmV3IFFCdWZmZXIoJm1fY2FjaGVkRG9jdW1lbnQtPmRvY3VtZW50QnVmZmVyKCktPmJ1ZmZl
cigpKTsKICAgICAgICAgbV9zdmdEb2MgPSBzdGF0aWNfY2FzdDxTVkdEb2N1bWVudEltcGwgKj4o
cGFyc2VyLT5zeW5jUGFyc2UodGVtcCkpOwogICAgICAgICBpZihtX3N2Z0RvYykKICAgICAgICAg
ewpAQCAtMjI3LDEyICsyMjcsMTcgQEAgdm9pZCBTVkdJbWFnZUVsZW1lbnRJbXBsOjpub3RpZnlG
aW5pc2hlZAogI2lmbmRlZiBBUFBMRV9DT01QSUxFX0hBQ0sKICAgICAgICAgICAgIEtSZW5kZXJp
bmdGaWxsUGFpbnRlciAqZmlsbFBhaW50ZXIgPSBtX2NhbnZhc0l0ZW0tPnN0eWxlKCktPmZpbGxQ
YWludGVyKCk7CiAgICAgICAgICAgICBpZighZmlsbFBhaW50ZXIpCi0KKyAgICAgICAgICAgICAg
ICByZXR1cm47CiAKICAgICAgICAgICAgIEtSZW5kZXJpbmdQYWludFNlcnZlciAqZmlsbFBhaW50
U2VydmVyID0gZmlsbFBhaW50ZXItPnBhaW50U2VydmVyKCk7CiAgICAgICAgICAgICBLUmVuZGVy
aW5nUGFpbnRTZXJ2ZXJJbWFnZSAqZmlsbFBhaW50U2VydmVySW1hZ2UgPSBzdGF0aWNfY2FzdDxL
UmVuZGVyaW5nUGFpbnRTZXJ2ZXJJbWFnZSAqPihmaWxsUGFpbnRTZXJ2ZXIpOwogCi0gICAgICAg
ICAgICBLQ2FudmFzSW1hZ2VCdWZmZXIgKmltYWdlQnVmZmVyID0gbmV3IEtDYW52YXNJbWFnZUJ1
ZmZlcihtX2NhY2hlZEltYWdlLT5waXhtYXAoKS5jb252ZXJ0VG9JbWFnZSgpKTsKKyAgICAgICAg
ICAgIFFQaXhtYXAgcGl4bShtX2NhY2hlZEltYWdlLT5waXhtYXBfc2l6ZSgpKTsKKwkJCWtkRGVi
dWcoKSA8PCAicGl4bSB3IDogIiA8PCBwaXhtLnNpemUoKSA8PCBlbmRsOworCQkJUVBhaW50ZXIg
cCgmcGl4bSk7CisJCQlJbWFnZVBhaW50ZXIgaXAobV9jYWNoZWRJbWFnZS0+aW1hZ2UoKSk7CisJ
CQlpcC5wYWludCgwLCAwLCAmcCwgMCwgMCwgcGl4bS53aWR0aCgpLCBwaXhtLmhlaWdodCgpKTsK
KyAgICAgICAgICAgIEtDYW52YXNJbWFnZUJ1ZmZlciAqaW1hZ2VCdWZmZXIgPSBuZXcgS0NhbnZh
c0ltYWdlQnVmZmVyKHBpeG0pOwogICAgICAgICAgICAgZmlsbFBhaW50U2VydmVySW1hZ2UtPnNl
dEltYWdlKGltYWdlQnVmZmVyKTsKICNlbmRpZgogCkluZGV4OiBrc3ZnMi9zdmcvU1ZHTGVuZ3Ro
TGlzdEltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tz
dmcyL3N2Zy9TVkdMZW5ndGhMaXN0SW1wbC5jcHAsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNApk
aWZmIC1wIC11IC1yMS40IGtzdmcyL3N2Zy9TVkdMZW5ndGhMaXN0SW1wbC5jcHAKLS0tIGtzdmcy
L3N2Zy9TVkdMZW5ndGhMaXN0SW1wbC5jcHAJMSBTZXAgMjAwNSAwNzozNTo0NCAtMDAwMAkxLjQK
KysrIGtzdmcyL3N2Zy9TVkdMZW5ndGhMaXN0SW1wbC5jcHAJNiBTZXAgMjAwNSAwNzoxNzozNSAt
MDAwMApAQCAtNDMsNyArNDMsOCBAQCB2b2lkIFNWR0xlbmd0aExpc3RJbXBsOjpwYXJzZShjb25z
dCBRU3RyCiAgICAgZm9yKHVuc2lnbmVkIGludCBpID0gMDtpIDwgbGVuZ3Rocy5jb3VudCgpO2kr
KykKICAgICB7CiAgICAgICAgIFNWR0xlbmd0aEltcGwgKmxlbmd0aCA9IG5ldyBTVkdMZW5ndGhJ
bXBsKGNvbnRleHQsIG1vZGUpOwotICAgICAgICBsZW5ndGgtPnNldFZhbHVlQXNTdHJpbmcoS0RP
TTo6RE9NU3RyaW5nKGxlbmd0aHNbaV0pLmhhbmRsZSgpKTsKKyAgICAgICAgS0RPTTo6RE9NU3Ry
aW5nIHN0cihsZW5ndGhzW2ldKTsKKyAgICAgICAgbGVuZ3RoLT5zZXRWYWx1ZUFzU3RyaW5nKHN0
ci5oYW5kbGUoKSk7CiAgICAgICAgIGFwcGVuZEl0ZW0obGVuZ3RoKTsKICAgICB9CiB9CkluZGV4
OiBrc3ZnMi9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50SW1wbC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpS
Q1MgZmlsZTogL2N2cy9yb290L1NWR1N1cHBvcnQva3N2ZzIvc3ZnL1NWR0xpbmVhckdyYWRpZW50
RWxlbWVudEltcGwuY3BwLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjUKZGlmZiAtcCAtdSAtcjEu
NSBrc3ZnMi9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50SW1wbC5jcHAKLS0tIGtzdmcyL3N2
Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnRJbXBsLmNwcAkxIFNlcCAyMDA1IDA5OjM5OjE2IC0w
MDAwCTEuNQorKysga3N2ZzIvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudEltcGwuY3BwCTYg
U2VwIDIwMDUgMDc6MTc6MzYgLTAwMDAKQEAgLTc4LDcgKzc4LDcgQEAgU1ZHQW5pbWF0ZWRMZW5n
dGhJbXBsICpTVkdMaW5lYXJHcmFkaWVudAogICAgIC8vIFNwZWMgOiBJZiB0aGUgYXR0cmlidXRl
IGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBlZmZlY3QgaXMgYXMgaWYgYSB2YWx1ZSBvZiAiMTAwJSIg
d2VyZSBzcGVjaWZpZWQuCiAgICAgaWYoIW1feDIpCiAgICAgewotICAgICAgICAgbGF6eV9jcmVh
dGU8U1ZHQW5pbWF0ZWRMZW5ndGhJbXBsPihtX3gyLCB0aGlzLCBMTV9XSURUSCwgdmlld3BvcnRF
bGVtZW50KCkpOworICAgICAgICBsYXp5X2NyZWF0ZTxTVkdBbmltYXRlZExlbmd0aEltcGw+KG1f
eDIsIHRoaXMsIExNX1dJRFRILCB2aWV3cG9ydEVsZW1lbnQoKSk7CiAgICAgICAgIG1feDItPmJh
c2VWYWwoKS0+c2V0VmFsdWUoMS4wKTsKICAgICAgICAgcmV0dXJuIG1feDI7CiAgICAgfQpJbmRl
eDoga3N2ZzIvc3ZnL1NWR01hdHJpeEltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMv
cm9vdC9TVkdTdXBwb3J0L2tzdmcyL3N2Zy9TVkdNYXRyaXhJbXBsLmNwcCx2CnJldHJpZXZpbmcg
cmV2aXNpb24gMS40CmRpZmYgLXAgLXUgLXIxLjQga3N2ZzIvc3ZnL1NWR01hdHJpeEltcGwuY3Bw
Ci0tLSBrc3ZnMi9zdmcvU1ZHTWF0cml4SW1wbC5jcHAJMSBTZXAgMjAwNSAwNzozNTo0NSAtMDAw
MAkxLjQKKysrIGtzdmcyL3N2Zy9TVkdNYXRyaXhJbXBsLmNwcAk2IFNlcCAyMDA1IDA3OjE3OjM2
IC0wMDAwCkBAIC0zMyw3ICszMyw3IEBAIFNWR01hdHJpeEltcGw6OlNWR01hdHJpeEltcGwoKSA6
IEtET006OlMKIHsKIH0KIAotU1ZHTWF0cml4SW1wbDo6U1ZHTWF0cml4SW1wbChRV01hdHJpeCBt
YXQpIDogS0RPTTo6U2hhcmVkKCkKK1NWR01hdHJpeEltcGw6OlNWR01hdHJpeEltcGwoUU1hdHJp
eCBtYXQpIDogS0RPTTo6U2hhcmVkKCkKIHsKICAgICBtX21hdCA9IG1hdDsKIH0KQEAgLTExNCw3
ICsxMTQsNyBAQCB2b2lkIFNWR01hdHJpeEltcGw6OmNvcHkoY29uc3QgU1ZHTWF0cml4CiAKIFNW
R01hdHJpeEltcGwgKlNWR01hdHJpeEltcGw6OnBvc3RNdWx0aXBseShjb25zdCBTVkdNYXRyaXhJ
bXBsICpzZWNvbmRNYXRyaXgpCiB7Ci0gICAgUVdNYXRyaXggdGVtcChzZWNvbmRNYXRyaXgtPmEo
KSwgc2Vjb25kTWF0cml4LT5iKCksIHNlY29uZE1hdHJpeC0+YygpLCBzZWNvbmRNYXRyaXgtPmQo
KSwgc2Vjb25kTWF0cml4LT5lKCksIHNlY29uZE1hdHJpeC0+ZigpKTsKKyAgICBRTWF0cml4IHRl
bXAoc2Vjb25kTWF0cml4LT5hKCksIHNlY29uZE1hdHJpeC0+YigpLCBzZWNvbmRNYXRyaXgtPmMo
KSwgc2Vjb25kTWF0cml4LT5kKCksIHNlY29uZE1hdHJpeC0+ZSgpLCBzZWNvbmRNYXRyaXgtPmYo
KSk7CiAgICAgbV9tYXQgKj0gdGVtcDsKICAgICByZXR1cm4gdGhpczsKIH0KQEAgLTEyOCw3ICsx
MjgsNyBAQCBTVkdNYXRyaXhJbXBsICpTVkdNYXRyaXhJbXBsOjppbnZlcnNlKCkKIFNWR01hdHJp
eEltcGwgKlNWR01hdHJpeEltcGw6OnBvc3RUcmFuc2xhdGUoZG91YmxlIHgsICBkb3VibGUgeSkK
IHsKICAgICAvLyBDb3VsZCBvcHRpbWlzZSB0aGVzZS4KLSAgICBRV01hdHJpeCB0ZW1wOworICAg
IFFNYXRyaXggdGVtcDsKICAgICB0ZW1wLnRyYW5zbGF0ZSh4LCB5KTsKICAgICBtX21hdCAqPSB0
ZW1wOwogICAgIHJldHVybiB0aGlzOwpAQCAtMTM2LDcgKzEzNiw3IEBAIFNWR01hdHJpeEltcGwg
KlNWR01hdHJpeEltcGw6OnBvc3RUcmFuc2wKIAogU1ZHTWF0cml4SW1wbCAqU1ZHTWF0cml4SW1w
bDo6cG9zdFNjYWxlKGRvdWJsZSBzY2FsZUZhY3RvcikKIHsKLSAgICBRV01hdHJpeCB0ZW1wOwor
ICAgIFFNYXRyaXggdGVtcDsKICAgICB0ZW1wLnNjYWxlKHNjYWxlRmFjdG9yLCBzY2FsZUZhY3Rv
cik7CiAgICAgbV9tYXQgKj0gdGVtcDsKICAgICByZXR1cm4gdGhpczsKQEAgLTE0NCw3ICsxNDQs
NyBAQCBTVkdNYXRyaXhJbXBsICpTVkdNYXRyaXhJbXBsOjpwb3N0U2NhbGUoCiAKIFNWR01hdHJp
eEltcGwgKlNWR01hdHJpeEltcGw6OnBvc3RTY2FsZU5vblVuaWZvcm0oZG91YmxlIHNjYWxlRmFj
dG9yWCwgZG91YmxlIHNjYWxlRmFjdG9yWSkKIHsKLSAgICBRV01hdHJpeCB0ZW1wOworICAgIFFN
YXRyaXggdGVtcDsKICAgICB0ZW1wLnNjYWxlKHNjYWxlRmFjdG9yWCwgc2NhbGVGYWN0b3JZKTsK
ICAgICBtX21hdCAqPSB0ZW1wOwogICAgIHJldHVybiB0aGlzOwpAQCAtMTUyLDcgKzE1Miw3IEBA
IFNWR01hdHJpeEltcGwgKlNWR01hdHJpeEltcGw6OnBvc3RTY2FsZU4KIAogU1ZHTWF0cml4SW1w
bCAqU1ZHTWF0cml4SW1wbDo6cG9zdFJvdGF0ZShkb3VibGUgYW5nbGUpCiB7Ci0gICAgUVdNYXRy
aXggdGVtcDsKKyAgICBRTWF0cml4IHRlbXA7CiAgICAgdGVtcC5yb3RhdGUoYW5nbGUpOwogICAg
IG1fbWF0ICo9IHRlbXA7CiAgICAgcmV0dXJuIHRoaXM7CkBAIC0xNjAsNyArMTYwLDcgQEAgU1ZH
TWF0cml4SW1wbCAqU1ZHTWF0cml4SW1wbDo6cG9zdFJvdGF0ZQogCiBTVkdNYXRyaXhJbXBsICpT
VkdNYXRyaXhJbXBsOjpwb3N0Um90YXRlRnJvbVZlY3Rvcihkb3VibGUgeCwgZG91YmxlIHkpCiB7
Ci0gICAgUVdNYXRyaXggdGVtcDsKKyAgICBRTWF0cml4IHRlbXA7CiAgICAgdGVtcC5yb3RhdGUo
U1ZHQW5nbGVJbXBsOjp0b2RlZyhhdGFuMih5LCB4KSkpOwogICAgIG1fbWF0ICo9IHRlbXA7CiAg
ICAgcmV0dXJuIHRoaXM7CkBAIC0xNjgsMjEgKzE2OCwyMSBAQCBTVkdNYXRyaXhJbXBsICpTVkdN
YXRyaXhJbXBsOjpwb3N0Um90YXRlCiAKIFNWR01hdHJpeEltcGwgKlNWR01hdHJpeEltcGw6OnBv
c3RGbGlwWCgpCiB7Ci0gICAgUVdNYXRyaXggdGVtcCgtMS4wRiwgMC4wRiwgMC4wRiwgMS4wRiwg
MC4wRiwgMC4wRik7CisgICAgUU1hdHJpeCB0ZW1wKC0xLjBGLCAwLjBGLCAwLjBGLCAxLjBGLCAw
LjBGLCAwLjBGKTsKICAgICBtX21hdCAqPSB0ZW1wOwogICAgIHJldHVybiB0aGlzOwogfQogCiBT
VkdNYXRyaXhJbXBsICpTVkdNYXRyaXhJbXBsOjpwb3N0RmxpcFkoKQogewotICAgIFFXTWF0cml4
IHRlbXAoMS4wRiwgMC4wRiwgMC4wRiwgLTEuMEYsIDAuMEYsIDAuMEYpOworICAgIFFNYXRyaXgg
dGVtcCgxLjBGLCAwLjBGLCAwLjBGLCAtMS4wRiwgMC4wRiwgMC4wRik7CiAgICAgbV9tYXQgKj0g
dGVtcDsKICAgICByZXR1cm4gdGhpczsKIH0KIAogU1ZHTWF0cml4SW1wbCAqU1ZHTWF0cml4SW1w
bDo6cG9zdFNrZXdYKGRvdWJsZSBhbmdsZSkKIHsKLSAgICBRV01hdHJpeCB0ZW1wOworICAgIFFN
YXRyaXggdGVtcDsKICAgICB0ZW1wLnNoZWFyKHRhbihTVkdBbmdsZUltcGw6OnRvcmFkKGFuZ2xl
KSksIDAuMEYpOwogICAgIG1fbWF0ICo9IHRlbXA7CiAgICAgcmV0dXJuIHRoaXM7CkBAIC0xOTAs
NyArMTkwLDcgQEAgU1ZHTWF0cml4SW1wbCAqU1ZHTWF0cml4SW1wbDo6cG9zdFNrZXdYKAogCiBT
VkdNYXRyaXhJbXBsICpTVkdNYXRyaXhJbXBsOjpwb3N0U2tld1koZG91YmxlIGFuZ2xlKQogewot
ICAgIFFXTWF0cml4IHRlbXA7CisgICAgUU1hdHJpeCB0ZW1wOwogICAgIHRlbXAuc2hlYXIoMC4w
RiwgdGFuKFNWR0FuZ2xlSW1wbDo6dG9yYWQoYW5nbGUpKSk7CiAgICAgbV9tYXQgKj0gdGVtcDsK
ICAgICByZXR1cm4gdGhpczsKQEAgLTE5OCw3ICsxOTgsNyBAQCBTVkdNYXRyaXhJbXBsICpTVkdN
YXRyaXhJbXBsOjpwb3N0U2tld1koCiAKIFNWR01hdHJpeEltcGwgKlNWR01hdHJpeEltcGw6Om11
bHRpcGx5KGNvbnN0IFNWR01hdHJpeEltcGwgKnNlY29uZE1hdHJpeCkKIHsKLSAgICBRV01hdHJp
eCB0ZW1wKHNlY29uZE1hdHJpeC0+YSgpLCBzZWNvbmRNYXRyaXgtPmIoKSwgc2Vjb25kTWF0cml4
LT5jKCksIHNlY29uZE1hdHJpeC0+ZCgpLCBzZWNvbmRNYXRyaXgtPmUoKSwgc2Vjb25kTWF0cml4
LT5mKCkpOworICAgIFFNYXRyaXggdGVtcChzZWNvbmRNYXRyaXgtPmEoKSwgc2Vjb25kTWF0cml4
LT5iKCksIHNlY29uZE1hdHJpeC0+YygpLCBzZWNvbmRNYXRyaXgtPmQoKSwgc2Vjb25kTWF0cml4
LT5lKCksIHNlY29uZE1hdHJpeC0+ZigpKTsKICAgICB0ZW1wICo9IG1fbWF0OwogICAgIG1fbWF0
ID0gdGVtcDsKICAgICByZXR1cm4gdGhpczsKQEAgLTI1OCwxNyArMjU4LDE3IEBAIFNWR01hdHJp
eEltcGwgKlNWR01hdHJpeEltcGw6OnNrZXdZKGRvdWIKICAgICByZXR1cm4gdGhpczsKIH0KIAot
dm9pZCBTVkdNYXRyaXhJbXBsOjpzZXRNYXRyaXgoUVdNYXRyaXggbWF0KQordm9pZCBTVkdNYXRy
aXhJbXBsOjpzZXRNYXRyaXgoUU1hdHJpeCBtYXQpCiB7CiAgICAgbV9tYXQgPSBtYXQ7CiB9CiAK
LVFXTWF0cml4ICZTVkdNYXRyaXhJbXBsOjpxbWF0cml4KCkKK1FNYXRyaXggJlNWR01hdHJpeElt
cGw6OnFtYXRyaXgoKQogewogICAgIHJldHVybiBtX21hdDsKIH0KIAotY29uc3QgUVdNYXRyaXgg
JlNWR01hdHJpeEltcGw6OnFtYXRyaXgoKSBjb25zdAorY29uc3QgUU1hdHJpeCAmU1ZHTWF0cml4
SW1wbDo6cW1hdHJpeCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fbWF0OwogfQpJbmRleDoga3N2
ZzIvc3ZnL1NWR01hdHJpeEltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvU1ZH
U3VwcG9ydC9rc3ZnMi9zdmcvU1ZHTWF0cml4SW1wbC5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAx
LjMKZGlmZiAtcCAtdSAtcjEuMyBrc3ZnMi9zdmcvU1ZHTWF0cml4SW1wbC5oCi0tLSBrc3ZnMi9z
dmcvU1ZHTWF0cml4SW1wbC5oCTEgU2VwIDIwMDUgMDc6MzU6NDUgLTAwMDAJMS4zCisrKyBrc3Zn
Mi9zdmcvU1ZHTWF0cml4SW1wbC5oCTYgU2VwIDIwMDUgMDc6MTc6MzYgLTAwMDAKQEAgLTIzLDcg
KzIzLDcgQEAKICNpZm5kZWYgS1NWR19TVkdNYXRyaXhJbXBsX0gKICNkZWZpbmUgS1NWR19TVkdN
YXRyaXhJbXBsX0gKIAotI2luY2x1ZGUgPHF3bWF0cml4Lmg+CisjaW5jbHVkZSA8cW1hdHJpeC5o
PgogCiAjaW5jbHVkZSA8a2RvbS9TaGFyZWQuaD4KIApAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3Bh
Y2UgS1NWRwogICAgIHB1YmxpYzoKICAgICAgICAgU1ZHTWF0cml4SW1wbCgpOwogICAgICAgICBT
VkdNYXRyaXhJbXBsKGRvdWJsZSBhLCBkb3VibGUgYiwgZG91YmxlIGMsIGRvdWJsZSBkLCBkb3Vi
bGUgZSwgZG91YmxlIGYpOwotICAgICAgICBTVkdNYXRyaXhJbXBsKFFXTWF0cml4IG1hdCk7Cisg
ICAgICAgIFNWR01hdHJpeEltcGwoUU1hdHJpeCBtYXQpOwogICAgICAgICB2aXJ0dWFsIH5TVkdN
YXRyaXhJbXBsKCk7CiAKICAgICAgICAgdm9pZCBzZXRBKGRvdWJsZSBhKTsKQEAgLTg2LDE2ICs4
NiwxNiBAQCBuYW1lc3BhY2UgS1NWRwogICAgICAgICB2b2lkIHJlc2V0KCk7CiAKICAgICAgICAg
Ly8gS1NWRyBoZWxwZXIgbWV0aG9kCi0gICAgICAgIFFXTWF0cml4ICZxbWF0cml4KCk7Ci0gICAg
ICAgIGNvbnN0IFFXTWF0cml4ICZxbWF0cml4KCkgY29uc3Q7CisgICAgICAgIFFNYXRyaXggJnFt
YXRyaXgoKTsKKyAgICAgICAgY29uc3QgUU1hdHJpeCAmcW1hdHJpeCgpIGNvbnN0OwogCiAgICAg
ICAgIC8vIERldGVybWluZSB0aGUgc2NhbGluZyBjb21wb25lbnQgb2YgdGhlIG1hdHJpeCBhbmQg
ZmFjdG9yIGl0IG91dC4gQWZ0ZXIKICAgICAgICAgLy8gdGhpcyBvcGVyYXRpb24sIHRoZSBtYXRy
aXggaGFzIHggYW5kIHkgc2NhbGUgb2Ygb25lLgogICAgICAgICB2b2lkIHJlbW92ZVNjYWxlKGRv
dWJsZSAqeFNjYWxlLCBkb3VibGUgKnlTY2FsZSk7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2
b2lkIHNldE1hdHJpeChRV01hdHJpeCBtYXQpOwotICAgICAgICBRV01hdHJpeCBtX21hdDsKKyAg
ICAgICAgdm9pZCBzZXRNYXRyaXgoUU1hdHJpeCBtYXQpOworICAgICAgICBRTWF0cml4IG1fbWF0
OwogICAgIH07CiB9OwogCkluZGV4OiBrc3ZnMi9zdmcvU1ZHUGF0dGVybkVsZW1lbnRJbXBsLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvU1ZHU3VwcG9ydC9rc3ZnMi9zdmcvU1ZH
UGF0dGVybkVsZW1lbnRJbXBsLmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS41CmRpZmYgLXAg
LXUgLXIxLjUga3N2ZzIvc3ZnL1NWR1BhdHRlcm5FbGVtZW50SW1wbC5jcHAKLS0tIGtzdmcyL3N2
Zy9TVkdQYXR0ZXJuRWxlbWVudEltcGwuY3BwCTEgU2VwIDIwMDUgMDk6Mzk6MTYgLTAwMDAJMS41
CisrKyBrc3ZnMi9zdmcvU1ZHUGF0dGVybkVsZW1lbnRJbXBsLmNwcAk2IFNlcCAyMDA1IDA3OjE3
OjM2IC0wMDAwCkBAIC0xNDksNyArMTQ5LDcgQEAgdm9pZCBTVkdQYXR0ZXJuRWxlbWVudEltcGw6
OnBhcnNlQXR0cmlidQogICAgICAgICBjYXNlIEFUVFJfUEFUVEVSTlRSQU5TRk9STToKICAgICAg
ICAgewogICAgICAgICAgICAgU1ZHVHJhbnNmb3JtTGlzdEltcGwgKnBhdHRlcm5UcmFuc2Zvcm1z
ID0gcGF0dGVyblRyYW5zZm9ybSgpLT5iYXNlVmFsKCk7Ci0gICAgICAgICAgICBTVkdUcmFuc2Zv
cm1hYmxlSW1wbDo6cGFyc2VUcmFuc2Zvcm1BdHRyaWJ1dGUocGF0dGVyblRyYW5zZm9ybXMsIHZh
bHVlKTsKKyAgICAgICAgICAgIFNWR1RyYW5zZm9ybWFibGVJbXBsOjpwYXJzZVRyYW5zZm9ybUF0
dHJpYnV0ZShwYXR0ZXJuVHJhbnNmb3JtcywgYXR0ci0+dmFsdWUoKSk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIEFUVFJfWDoKSW5kZXg6IGtzdmcyL3N2Zy9T
VkdTVkdFbGVtZW50SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1NWR1N1
cHBvcnQva3N2ZzIvc3ZnL1NWR1NWR0VsZW1lbnRJbXBsLmNwcCx2CnJldHJpZXZpbmcgcmV2aXNp
b24gMS42CmRpZmYgLXAgLXUgLXIxLjYga3N2ZzIvc3ZnL1NWR1NWR0VsZW1lbnRJbXBsLmNwcAot
LS0ga3N2ZzIvc3ZnL1NWR1NWR0VsZW1lbnRJbXBsLmNwcAkyIFNlcCAyMDA1IDEwOjAzOjE4IC0w
MDAwCTEuNgorKysga3N2ZzIvc3ZnL1NWR1NWR0VsZW1lbnRJbXBsLmNwcAk2IFNlcCAyMDA1IDA3
OjE3OjM3IC0wMDAwCkBAIC0yMCw4ICsyMCw4IEBACiAgICAgQm9zdG9uLCBNQSAwMjExMS0xMzA3
LCBVU0EuCiAqLwogCi0jaW5jbHVkZSA8a2RvbS9ET01TdHJpbmcuaD4KICNpbmNsdWRlIDxrZG9t
L2NvcmUvQXR0ckltcGwuaD4KKyNpbmNsdWRlIDxrZG9tL2NvcmUvRE9NU3RyaW5nSW1wbC5oPgog
I2luY2x1ZGUgPGtkb20vY29yZS9OYW1lZEF0dHJNYXBJbXBsLmg+CiAKICNpbmNsdWRlIDxrY2Fu
dmFzL0tDYW52YXMuaD4KQEAgLTU2LDYgKzU2LDcgQEAKICNpbmNsdWRlICJLQ2FudmFzUmVuZGVy
aW5nU3R5bGUuaCIKIAogI2luY2x1ZGUgPHEzcGFpbnRkZXZpY2VtZXRyaWNzLmg+CisjaW5jbHVk
ZSA8cXRleHRzdHJlYW0uaD4KIAogdXNpbmcgbmFtZXNwYWNlIEtTVkc7CiAKQEAgLTk3LDggKzk4
LDkgQEAgU1ZHQW5pbWF0ZWRMZW5ndGhJbXBsICpTVkdTVkdFbGVtZW50SW1wbAogewogICAgIGlm
KCFtX3dpZHRoKQogICAgIHsKKyAgICAgICAgS0RPTTo6RE9NU3RyaW5nIHRlbXAoIjEwMCUiKTsK
ICAgICAgICAgbGF6eV9jcmVhdGU8U1ZHQW5pbWF0ZWRMZW5ndGhJbXBsPihtX3dpZHRoLCBzdGF0
aWNfY2FzdDxjb25zdCBTVkdTdHlsZWRFbGVtZW50SW1wbCAqPigwKSwgTE1fV0lEVEgsIHRoaXMp
OwotICAgICAgICBtX3dpZHRoLT5iYXNlVmFsKCktPnNldFZhbHVlQXNTdHJpbmcoS0RPTTo6RE9N
U3RyaW5nKCIxMDAlIikuaGFuZGxlKCkpOworICAgICAgICBtX3dpZHRoLT5iYXNlVmFsKCktPnNl
dFZhbHVlQXNTdHJpbmcodGVtcC5oYW5kbGUoKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIG1fd2lk
dGg7CkBAIC0xMDgsOCArMTEwLDkgQEAgU1ZHQW5pbWF0ZWRMZW5ndGhJbXBsICpTVkdTVkdFbGVt
ZW50SW1wbAogewogICAgIGlmKCFtX2hlaWdodCkKICAgICB7CisgICAgICAgIEtET006OkRPTVN0
cmluZyB0ZW1wKCIxMDAlIik7CiAgICAgICAgIGxhenlfY3JlYXRlPFNWR0FuaW1hdGVkTGVuZ3Ro
SW1wbD4obV9oZWlnaHQsIHN0YXRpY19jYXN0PGNvbnN0IFNWR1N0eWxlZEVsZW1lbnRJbXBsICo+
KDApLCBMTV9IRUlHSFQsIHRoaXMpOwotICAgICAgICBtX2hlaWdodC0+YmFzZVZhbCgpLT5zZXRW
YWx1ZUFzU3RyaW5nKEtET006OkRPTVN0cmluZygiMTAwJSIpLmhhbmRsZSgpKTsKKyAgICAgICAg
bV9oZWlnaHQtPmJhc2VWYWwoKS0+c2V0VmFsdWVBc1N0cmluZyh0ZW1wLmhhbmRsZSgpKTsKICAg
ICB9CiAKICAgICByZXR1cm4gbV9oZWlnaHQ7CkBAIC0xMTcsMTEgKzEyMCw3IEBAIFNWR0FuaW1h
dGVkTGVuZ3RoSW1wbCAqU1ZHU1ZHRWxlbWVudEltcGwKIAogS0RPTTo6RE9NU3RyaW5nSW1wbCAq
U1ZHU1ZHRWxlbWVudEltcGw6OmNvbnRlbnRTY3JpcHRUeXBlKCkgY29uc3QKIHsKLSAgICBLRE9N
OjpET01TdHJpbmcgbmFtZSgiY29udGVudFNjcmlwdFR5cGUiKTsKLSAgICBpZihoYXNBdHRyaWJ1
dGUobmFtZS5oYW5kbGUoKSkpCi0gICAgICAgIHJldHVybiBnZXRBdHRyaWJ1dGUobmFtZS5oYW5k
bGUoKSk7Ci0KLSAgICByZXR1cm4gbmV3IEtET006OkRPTVN0cmluZ0ltcGwoInRleHQvZWNtYXNj
cmlwdCIpOworICAgIHJldHVybiB0cnlHZXRBdHRyaWJ1dGUobmV3IEtET006OkRPTVN0cmluZ0lt
cGwoImNvbnRlbnRTY3JpcHRUeXBlIiksIG5ldyBLRE9NOjpET01TdHJpbmdJbXBsKCJ0ZXh0L2Vj
bWFzY3JpcHQiKSk7CiB9CiAKIHZvaWQgU1ZHU1ZHRWxlbWVudEltcGw6OnNldENvbnRlbnRTY3Jp
cHRUeXBlKEtET006OkRPTVN0cmluZ0ltcGwgKnR5cGUpCkBAIC0xMzIsMTcgKzEzMSwxMiBAQCB2
b2lkIFNWR1NWR0VsZW1lbnRJbXBsOjpzZXRDb250ZW50U2NyaXB0CiAKIEtET006OkRPTVN0cmlu
Z0ltcGwgKlNWR1NWR0VsZW1lbnRJbXBsOjpjb250ZW50U3R5bGVUeXBlKCkgY29uc3QKIHsKLSAg
ICBLRE9NOjpET01TdHJpbmcgbmFtZSgiY29udGVudFN0eWxlVHlwZSIpOwotICAgIGlmKGhhc0F0
dHJpYnV0ZShuYW1lLmhhbmRsZSgpKSkKLSAgICAgICAgcmV0dXJuIGdldEF0dHJpYnV0ZShuYW1l
LmhhbmRsZSgpKTsKLQotICAgIHJldHVybiBuZXcgS0RPTTo6RE9NU3RyaW5nSW1wbCgidGV4dC9j
c3MiKTsKKyAgICByZXR1cm4gdHJ5R2V0QXR0cmlidXRlKG5ldyBLRE9NOjpET01TdHJpbmdJbXBs
KCJjb250ZW50U3R5bGVUeXBlIiksIG5ldyBLRE9NOjpET01TdHJpbmdJbXBsKCJ0ZXh0L2NzcyIp
KTsKIH0KIAogdm9pZCBTVkdTVkdFbGVtZW50SW1wbDo6c2V0Q29udGVudFN0eWxlVHlwZShLRE9N
OjpET01TdHJpbmdJbXBsICp0eXBlKQogewotICAgIEtET006OkRPTVN0cmluZyBuYW1lKCJjb250
ZW50U3R5bGVUeXBlIik7ICAgIAotICAgIHNldEF0dHJpYnV0ZShuYW1lLmhhbmRsZSgpLCB0eXBl
KTsKKyAgICBzZXRBdHRyaWJ1dGUobmV3IEtET006OkRPTVN0cmluZ0ltcGwoImNvbnRlbnRTdHls
ZVR5cGUiKSwgdHlwZSk7CiB9CiAKIFNWR1JlY3RJbXBsICpTVkdTVkdFbGVtZW50SW1wbDo6dmll
d3BvcnQoKSBjb25zdApAQCAtMjQzLDE0ICsyMzcsMTYgQEAgU1ZHUG9pbnRJbXBsICpTVkdTVkdF
bGVtZW50SW1wbDo6Y3VycmVudAogICAgIHJldHVybiBjcmVhdGVTVkdQb2ludChjYW52YXNWaWV3
KCktPnBhbigpKTsKIH0KIAotS0RPTTo6RXZlbnRJbXBsICpTVkdTVkdFbGVtZW50SW1wbDo6Y3Jl
YXRlRXZlbnQoY29uc3QgS0RPTTo6RE9NU3RyaW5nICZldmVudFR5cGUpCitLRE9NOjpFdmVudElt
cGwgKlNWR1NWR0VsZW1lbnRJbXBsOjpjcmVhdGVFdmVudChLRE9NOjpET01TdHJpbmdJbXBsICpl
dmVudFR5cGVJbXBsKQogewotICAgIGlmKGV2ZW50VHlwZSA9PSAiU1ZHRXZlbnRzIikKKyAgICBR
U3RyaW5nIGV2ZW50VHlwZSA9IChldmVudFR5cGVJbXBsID8gZXZlbnRUeXBlSW1wbC0+c3RyaW5n
KCkgOiBRU3RyaW5nOjpudWxsKTsKKworICAgIGlmKGV2ZW50VHlwZSA9PSBRU3RyaW5nOjpmcm9t
TGF0aW4xKCJTVkdFdmVudHMiKSkKICAgICAgICAgcmV0dXJuIG5ldyBTVkdFdmVudEltcGwoKTsK
LSAgICBlbHNlIGlmKGV2ZW50VHlwZSA9PSAiU1ZHWm9vbUV2ZW50cyIpCisgICAgZWxzZSBpZihl
dmVudFR5cGUgPT0gUVN0cmluZzo6ZnJvbUxhdGluMSgiU1ZHWm9vbUV2ZW50cyIpKQogICAgICAg
ICByZXR1cm4gbmV3IFNWR1pvb21FdmVudEltcGwoKTsKIAotICAgIHJldHVybiBEb2N1bWVudEV2
ZW50SW1wbDo6Y3JlYXRlRXZlbnQoZXZlbnRUeXBlLmhhbmRsZSgpKTsKKyAgICByZXR1cm4gRG9j
dW1lbnRFdmVudEltcGw6OmNyZWF0ZUV2ZW50KGV2ZW50VHlwZUltcGwpOwogfQogCiB2b2lkIFNW
R1NWR0VsZW1lbnRJbXBsOjpwYXJzZUF0dHJpYnV0ZShLRE9NOjpBdHRyaWJ1dGVJbXBsICphdHRy
KQpJbmRleDoga3N2ZzIvc3ZnL1NWR1NWR0VsZW1lbnRJbXBsLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmls
ZTogL2N2cy9yb290L1NWR1N1cHBvcnQva3N2ZzIvc3ZnL1NWR1NWR0VsZW1lbnRJbXBsLmgsdgpy
ZXRyaWV2aW5nIHJldmlzaW9uIDEuNQpkaWZmIC1wIC11IC1yMS41IGtzdmcyL3N2Zy9TVkdTVkdF
bGVtZW50SW1wbC5oCi0tLSBrc3ZnMi9zdmcvU1ZHU1ZHRWxlbWVudEltcGwuaAkxIFNlcCAyMDA1
IDA5OjM5OjE2IC0wMDAwCTEuNQorKysga3N2ZzIvc3ZnL1NWR1NWR0VsZW1lbnRJbXBsLmgJNiBT
ZXAgMjAwNSAwNzoxNzozNyAtMDAwMApAQCAtMTIyLDcgKzEyMiw3IEBAIG5hbWVzcGFjZSBLU1ZH
CiAgICAgICAgIHN0YXRpYyBTVkdUcmFuc2Zvcm1JbXBsICpjcmVhdGVTVkdUcmFuc2Zvcm1Gcm9t
TWF0cml4KFNWR01hdHJpeEltcGwgKm1hdHJpeCk7CiAKICAgICAgICAgLy8gJ0RvY3VtZW50RXZl
bnQnIGZ1bmN0aW9ucwotICAgICAgICB2aXJ0dWFsIEtET006OkV2ZW50SW1wbCAqY3JlYXRlRXZl
bnQoY29uc3QgS0RPTTo6RE9NU3RyaW5nICZldmVudFR5cGUpOworICAgICAgICB2aXJ0dWFsIEtE
T006OkV2ZW50SW1wbCAqY3JlYXRlRXZlbnQoS0RPTTo6RE9NU3RyaW5nSW1wbCAqZXZlbnRUeXBl
KTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoS0RPTTo6QXR0cmlidXRl
SW1wbCAqKTsKIApJbmRleDoga3N2ZzIvc3ZnL1NWR1NjcmlwdEVsZW1lbnRJbXBsLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvU1ZHU3VwcG9ydC9rc3ZnMi9zdmcvU1ZHU2NyaXB0
RWxlbWVudEltcGwuY3BwLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjcKZGlmZiAtcCAtdSAtcjEu
NyBrc3ZnMi9zdmcvU1ZHU2NyaXB0RWxlbWVudEltcGwuY3BwCi0tLSBrc3ZnMi9zdmcvU1ZHU2Ny
aXB0RWxlbWVudEltcGwuY3BwCTEgU2VwIDIwMDUgMDk6Mzk6MTYgLTAwMDAJMS43CisrKyBrc3Zn
Mi9zdmcvU1ZHU2NyaXB0RWxlbWVudEltcGwuY3BwCTYgU2VwIDIwMDUgMDc6MTc6MzcgLTAwMDAK
QEAgLTIzLDYgKzIzLDcgQEAKICNpbmNsdWRlIDxrZG9tL0RPTVN0cmluZy5oPgogLy8jaW5jbHVk
ZSA8a2RvbS9lY21hL0VjbWEuaD4KICNpbmNsdWRlIDxrZG9tL2NvcmUvQXR0ckltcGwuaD4KKyNp
bmNsdWRlIDxrZG9tL2NvcmUvRE9NU3RyaW5nSW1wbC5oPgogCiAjaW5jbHVkZSAia3N2Zy5oIgog
I2luY2x1ZGUgInN2Z2F0dHJzLmgiCkBAIC02MSw4ICs2Miw3IEBAIHZvaWQgU1ZHU2NyaXB0RWxl
bWVudEltcGw6OnBhcnNlQXR0cmlidXQKICAgICB7CiAgICAgICAgIGNhc2UgQVRUUl9UWVBFOgog
ICAgICAgICB7Ci0gICAgICAgICAgICBLRE9NOjpET01TdHJpbmdJbXBsICp0eXBlID0gKGF0dHIt
PnZhbHVlKCkgPyBhdHRyLT52YWx1ZSgpLT5jb3B5KCkgOiAwKTsKLSAgICAgICAgICAgIHNldFR5
cGUodHlwZSk7CisgICAgICAgICAgICBzZXRUeXBlKGF0dHItPnZhbHVlKCkpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgZGVmYXVsdDoKQEAgLTc1LDkgKzc1LDkgQEAg
dm9pZCBTVkdTY3JpcHRFbGVtZW50SW1wbDo6cGFyc2VBdHRyaWJ1dAogICAgIH07CiB9CiAKLXZv
aWQgU1ZHU2NyaXB0RWxlbWVudEltcGw6OmV4ZWN1dGVTY3JpcHQoS0RPTTo6RG9jdW1lbnRJbXBs
ICpkb2N1bWVudCwgY29uc3QgS0RPTTo6RE9NU3RyaW5nICZqc0NvZGUpCit2b2lkIFNWR1Njcmlw
dEVsZW1lbnRJbXBsOjpleGVjdXRlU2NyaXB0KEtET006OkRvY3VtZW50SW1wbCAqZG9jdW1lbnQs
IEtET006OkRPTVN0cmluZ0ltcGwgKmpzQ29kZSkKIHsKLSAgICBpZighZG9jdW1lbnQpCisgICAg
aWYoIWRvY3VtZW50IHx8ICFqc0NvZGUpCiAgICAgICAgIHJldHVybjsKICNpZiAwCiAgICAgS0RP
TTo6RWNtYSAqZWNtYUVuZ2luZSA9IGRvY3VtZW50LT5lY21hRW5naW5lKCk7CkBAIC0xMDcsMTAg
KzEwNywxMCBAQCB2b2lkIFNWR1NjcmlwdEVsZW1lbnRJbXBsOjpleGVjdXRlU2NyaXB0CiAgICAg
ICAgIFNWR0RvY3VtZW50SW1wbCAqc3ZnRG9jdW1lbnQgPSBzdGF0aWNfY2FzdDxTVkdEb2N1bWVu
dEltcGwgKj4oZG9jdW1lbnQpOwogICAgICAgICBpZihzdmdEb2N1bWVudCAmJiBkb2N1bWVudC0+
aGFzTGlzdGVuZXJUeXBlKEtET006OkVSUk9SX0VWRU5UKSkKICAgICAgICAgewotICAgICAgICAg
ICAgU1ZHRXZlbnRJbXBsICpldmVudCA9IHN0YXRpY19jYXN0PFNWR0V2ZW50SW1wbCAqPihzdmdE
b2N1bWVudC0+Y3JlYXRlRXZlbnQoIlNWR0V2ZW50cyIpKTsKKyAgICAgICAgICAgIFNWR0V2ZW50
SW1wbCAqZXZlbnQgPSBzdGF0aWNfY2FzdDxTVkdFdmVudEltcGwgKj4oc3ZnRG9jdW1lbnQtPmNy
ZWF0ZUV2ZW50KEtET006OkRPTVN0cmluZygiU1ZHRXZlbnRzIikuaGFuZGxlKCkpKTsKICAgICAg
ICAgICAgIGV2ZW50LT5yZWYoKTsKIAotICAgICAgICAgICAgZXZlbnQtPmluaXRFdmVudCgiZXJy
b3IiLCBmYWxzZSwgZmFsc2UpOworICAgICAgICAgICAgZXZlbnQtPmluaXRFdmVudChLRE9NOjpE
T01TdHJpbmcoImVycm9yIikuaGFuZGxlKCksIGZhbHNlLCBmYWxzZSk7CiAgICAgICAgICAgICBz
dmdEb2N1bWVudC0+ZGlzcGF0Y2hSZWN1cnNpdmVFdmVudChldmVudCwgc3ZnRG9jdW1lbnQtPmxh
c3RDaGlsZCgpKTsKIAogICAgICAgICAgICAgZXZlbnQtPmRlcmVmKCk7CkluZGV4OiBrc3ZnMi9z
dmcvU1ZHU2NyaXB0RWxlbWVudEltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3Qv
U1ZHU3VwcG9ydC9rc3ZnMi9zdmcvU1ZHU2NyaXB0RWxlbWVudEltcGwuaCx2CnJldHJpZXZpbmcg
cmV2aXNpb24gMS40CmRpZmYgLXAgLXUgLXIxLjQga3N2ZzIvc3ZnL1NWR1NjcmlwdEVsZW1lbnRJ
bXBsLmgKLS0tIGtzdmcyL3N2Zy9TVkdTY3JpcHRFbGVtZW50SW1wbC5oCTEgU2VwIDIwMDUgMDc6
MzU6NTEgLTAwMDAJMS40CisrKyBrc3ZnMi9zdmcvU1ZHU2NyaXB0RWxlbWVudEltcGwuaAk2IFNl
cCAyMDA1IDA3OjE3OjM3IC0wMDAwCkBAIC00NCw3ICs0NCw3IEBAIG5hbWVzcGFjZSBLU1ZHCiAg
ICAgICAgIC8vIEludGVybmFsCiAgICAgICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShL
RE9NOjpBdHRyaWJ1dGVJbXBsICphdHRyKTsKIAotICAgICAgICBzdGF0aWMgdm9pZCBleGVjdXRl
U2NyaXB0KEtET006OkRvY3VtZW50SW1wbCAqZG9jdW1lbnQsIGNvbnN0IEtET006OkRPTVN0cmlu
ZyAmanNDb2RlKTsKKyAgICAgICAgc3RhdGljIHZvaWQgZXhlY3V0ZVNjcmlwdChLRE9NOjpEb2N1
bWVudEltcGwgKmRvY3VtZW50LCBLRE9NOjpET01TdHJpbmdJbXBsICpqc0NvZGUpOwogCiAgICAg
cHJpdmF0ZToKICAgICAgICAgS0RPTTo6RE9NU3RyaW5nSW1wbCAqbV90eXBlOwpJbmRleDoga3N2
ZzIvc3ZnL1NWR1NldEVsZW1lbnRJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jv
b3QvU1ZHU3VwcG9ydC9rc3ZnMi9zdmcvU1ZHU2V0RWxlbWVudEltcGwuY3BwLHYKcmV0cmlldmlu
ZyByZXZpc2lvbiAxLjQKZGlmZiAtcCAtdSAtcjEuNCBrc3ZnMi9zdmcvU1ZHU2V0RWxlbWVudElt
cGwuY3BwCi0tLSBrc3ZnMi9zdmcvU1ZHU2V0RWxlbWVudEltcGwuY3BwCTEgU2VwIDIwMDUgMDc6
MzU6NTEgLTAwMDAJMS40CisrKyBrc3ZnMi9zdmcvU1ZHU2V0RWxlbWVudEltcGwuY3BwCTYgU2Vw
IDIwMDUgMDc6MTc6MzcgLTAwMDAKQEAgLTU2LDggKzU2LDkgQEAgdm9pZCBTVkdTZXRFbGVtZW50
SW1wbDo6aGFuZGxlVGltZXJFdmVudAogICAgIC8vIENvbW1pdCBjaGFuZ2Ugbm93Li4uCiAgICAg
aWYobV9zYXZlZFRvLmlzRW1wdHkoKSkKICAgICB7Ci0gICAgICAgIG1fc2F2ZWRUbyA9IHRhcmdl
dEF0dHJpYnV0ZSgpLnN0cmluZygpOwotICAgICAgICBzZXRUYXJnZXRBdHRyaWJ1dGUobV90byk7
CisgICAgICAgIEtET006OkRPTVN0cmluZ0ltcGwgKmF0dHIgPSB0YXJnZXRBdHRyaWJ1dGUoKTsK
KyAgICAgICAgbV9zYXZlZFRvID0gKGF0dHIgPyBhdHRyLT5zdHJpbmcoKSA6IFFTdHJpbmc6Om51
bGwpOworICAgICAgICBzZXRUYXJnZXRBdHRyaWJ1dGUobmV3IEtET006OkRPTVN0cmluZ0ltcGwo
bV90bykpOwogICAgIH0KIAogICAgIC8vIEVuZCBjb25kaXRpb24uCkBAIC03MSw3ICs3Miw3IEBA
IHZvaWQgU1ZHU2V0RWxlbWVudEltcGw6OmhhbmRsZVRpbWVyRXZlbnQKICAgICAgICAgfQogCiAg
ICAgICAgIGlmKCFpc0Zyb3plbigpKQotICAgICAgICAgICAgc2V0VGFyZ2V0QXR0cmlidXRlKG1f
c2F2ZWRUbyk7CisgICAgICAgICAgICBzZXRUYXJnZXRBdHRyaWJ1dGUobmV3IEtET006OkRPTVN0
cmluZ0ltcGwobV9zYXZlZFRvKSk7CiAKICAgICAgICAgbV9zYXZlZFRvID0gUVN0cmluZygpOwog
ICAgIH0KSW5kZXg6IGtzdmcyL3N2Zy9TVkdTdHlsZUVsZW1lbnRJbXBsLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvU1ZHU3VwcG9ydC9rc3ZnMi9zdmcvU1ZHU3R5bGVFbGVtZW50
SW1wbC5jcHAsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNQpkaWZmIC1wIC11IC1yMS41IGtzdmcy
L3N2Zy9TVkdTdHlsZUVsZW1lbnRJbXBsLmNwcAotLS0ga3N2ZzIvc3ZnL1NWR1N0eWxlRWxlbWVu
dEltcGwuY3BwCTEgU2VwIDIwMDUgMDk6Mzk6MTcgLTAwMDAJMS41CisrKyBrc3ZnMi9zdmcvU1ZH
U3R5bGVFbGVtZW50SW1wbC5jcHAJNiBTZXAgMjAwNSAwNzoxNzozNyAtMDAwMApAQCAtNDYsMTEg
KzQ2LDcgQEAgU1ZHU3R5bGVFbGVtZW50SW1wbDo6flNWR1N0eWxlRWxlbWVudEltcAogCiBLRE9N
OjpET01TdHJpbmdJbXBsICpTVkdTdHlsZUVsZW1lbnRJbXBsOjp4bWxzcGFjZSgpIGNvbnN0CiB7
Ci0gICAgS0RPTTo6RE9NU3RyaW5nIG5hbWUoInhtbDpzcGFjZSIpOwotICAgIGlmKGhhc0F0dHJp
YnV0ZShuYW1lLmhhbmRsZSgpKSkKLSAgICAgICAgcmV0dXJuIGdldEF0dHJpYnV0ZShuYW1lLmhh
bmRsZSgpKTsKLQotICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiB0cnlHZXRBdHRyaWJ1dGUo
S0RPTTo6RE9NU3RyaW5nKCJ4bWw6c3BhY2UiKS5oYW5kbGUoKSk7CiB9CiAKIHZvaWQgU1ZHU3R5
bGVFbGVtZW50SW1wbDo6c2V0WG1sc3BhY2UoS0RPTTo6RE9NU3RyaW5nSW1wbCAqKQpAQCAtNjAs
MTEgKzU2LDcgQEAgdm9pZCBTVkdTdHlsZUVsZW1lbnRJbXBsOjpzZXRYbWxzcGFjZShLRAogCiBL
RE9NOjpET01TdHJpbmdJbXBsICpTVkdTdHlsZUVsZW1lbnRJbXBsOjp0eXBlKCkgY29uc3QKIHsK
LSAgICBLRE9NOjpET01TdHJpbmcgbmFtZSgidHlwZSIpOwotICAgIGlmKGhhc0F0dHJpYnV0ZShu
YW1lLmhhbmRsZSgpKSkKLSAgICAgICAgcmV0dXJuIGdldEF0dHJpYnV0ZShuYW1lLmhhbmRsZSgp
KTsKLQotICAgIHJldHVybiBuZXcgS0RPTTo6RE9NU3RyaW5nSW1wbCgidGV4dC9jc3MiKTsKKyAg
ICByZXR1cm4gdHJ5R2V0QXR0cmlidXRlKEtET006OkRPTVN0cmluZygidHlwZSIpLmhhbmRsZSgp
LCBLRE9NOjpET01TdHJpbmcoInRleHQvY3NzIikuaGFuZGxlKCkpOwogfQogCiB2b2lkIFNWR1N0
eWxlRWxlbWVudEltcGw6OnNldFR5cGUoS0RPTTo6RE9NU3RyaW5nSW1wbCAqKQpAQCAtNzQsMTEg
KzY2LDcgQEAgdm9pZCBTVkdTdHlsZUVsZW1lbnRJbXBsOjpzZXRUeXBlKEtET006OgogCiBLRE9N
OjpET01TdHJpbmdJbXBsICpTVkdTdHlsZUVsZW1lbnRJbXBsOjptZWRpYSgpIGNvbnN0CiB7Ci0g
ICAgS0RPTTo6RE9NU3RyaW5nIG5hbWUoIm1lZGlhIik7Ci0gICAgaWYoaGFzQXR0cmlidXRlKG5h
bWUuaGFuZGxlKCkpKQotICAgICAgICByZXR1cm4gZ2V0QXR0cmlidXRlKG5hbWUuaGFuZGxlKCkp
OwotCi0gICAgcmV0dXJuIG5ldyBLRE9NOjpET01TdHJpbmdJbXBsKCJhbGwiKTsKKyAgICByZXR1
cm4gdHJ5R2V0QXR0cmlidXRlKG5ldyBLRE9NOjpET01TdHJpbmdJbXBsKCJtZWRpYSIpLCBuZXcg
S0RPTTo6RE9NU3RyaW5nSW1wbCgiYWxsIikpOwogfQogCiB2b2lkIFNWR1N0eWxlRWxlbWVudElt
cGw6OnNldE1lZGlhKEtET006OkRPTVN0cmluZ0ltcGwgKikKQEAgLTg4LDExICs3Niw3IEBAIHZv
aWQgU1ZHU3R5bGVFbGVtZW50SW1wbDo6c2V0TWVkaWEoS0RPTToKIAogS0RPTTo6RE9NU3RyaW5n
SW1wbCAqU1ZHU3R5bGVFbGVtZW50SW1wbDo6dGl0bGUoKSBjb25zdAogewotICAgIEtET006OkRP
TVN0cmluZyBuYW1lKCJ0aXRsZSIpOwotICAgIGlmKGhhc0F0dHJpYnV0ZShuYW1lLmhhbmRsZSgp
KSkKLSAgICAgICAgcmV0dXJuIGdldEF0dHJpYnV0ZShuYW1lLmhhbmRsZSgpKTsKLQotICAgIHJl
dHVybiBOVUxMOworICAgIHJldHVybiB0cnlHZXRBdHRyaWJ1dGUobmV3IEtET006OkRPTVN0cmlu
Z0ltcGwoInRpdGxlIikpOwogfQogCiB2b2lkIFNWR1N0eWxlRWxlbWVudEltcGw6OnNldFRpdGxl
KEtET006OkRPTVN0cmluZ0ltcGwgKikKQEAgLTExOCwyMSArMTAyLDIyIEBAIHZvaWQgU1ZHU3R5
bGVFbGVtZW50SW1wbDo6Y2hpbGRyZW5DaGFuZ2UKICAgICB9CiAKICAgICBtX2xvYWRpbmcgPSBm
YWxzZTsKLSAgICBRU3RyaW5nIF9tZWRpYSA9IEtET006OkRPTVN0cmluZyhtZWRpYSgpKS5zdHJp
bmcoKTsKKyAgICBLRE9NOjpET01TdHJpbmdJbXBsICptZWRpYVZhbCA9IG1lZGlhKCk7CisgICAg
UVN0cmluZyBfbWVkaWEgPSBtZWRpYVZhbCA/IG1lZGlhVmFsLT5zdHJpbmcoKSA6IFFTdHJpbmco
KTsKICAgICBpZigoS0RPTTo6RE9NU3RyaW5nKHR5cGUoKSkuaXNFbXB0eSgpIHx8IEtET006OkRP
TVN0cmluZyh0eXBlKCkpID09ICJ0ZXh0L2NzcyIpICYmIChfbWVkaWEuaXNOdWxsKCkgfHwKICAg
ICAgICAgX21lZGlhLmNvbnRhaW5zKFFTdHJpbmc6OmZyb21MYXRpbjEoInNjcmVlbiIpKSB8fAog
ICAgICAgICBfbWVkaWEuY29udGFpbnMoUVN0cmluZzo6ZnJvbUxhdGluMSgiYWxsIikpIHwKICAg
ICAgICAgX21lZGlhLmNvbnRhaW5zKFFTdHJpbmc6OmZyb21MYXRpbjEoInByaW50IikpKSkKICAg
ICB7CiAgICAgICAgIG93bmVyRG9jdW1lbnQoKS0+YWRkUGVuZGluZ1NoZWV0KCk7Ci0gICAgICAg
IAorCiAgICAgICAgIG1fbG9hZGluZyA9IHRydWU7Ci0gICAgICAgIAorIAogICAgICAgICBtX3No
ZWV0ID0gbmV3IFNWR0NTU1N0eWxlU2hlZXRJbXBsKHRoaXMpOwogICAgICAgICBtX3NoZWV0LT5y
ZWYoKTsKICAgICAgICAgbV9zaGVldC0+cGFyc2VTdHJpbmcodGV4dC5oYW5kbGUoKSwgZmFsc2Up
Oy8vIWdldERvY3VtZW50KCktPmluQ29tcGF0TW9kZSgpKTsKLSAgICAgICAgCi0gICAgICAgIEtE
T006Ok1lZGlhTGlzdEltcGwgKm1lZGlhID0gbmV3IEtET006Ok1lZGlhTGlzdEltcGwobV9zaGVl
dCwgS0RPTTo6RE9NU3RyaW5nKF9tZWRpYSkuaGFuZGxlKCkpOworCisgICAgICAgIEtET006Ok1l
ZGlhTGlzdEltcGwgKm1lZGlhID0gbmV3IEtET006Ok1lZGlhTGlzdEltcGwobV9zaGVldCwgbWVk
aWFWYWwpOwogICAgICAgICBtX3NoZWV0LT5zZXRNZWRpYShtZWRpYSk7CiAgICAgICAgIG1fbG9h
ZGluZyA9IGZhbHNlOwogICAgIH0KSW5kZXg6IGtzdmcyL3N2Zy9TVkdTdHlsZWRFbGVtZW50SW1w
bC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1NWR1N1cHBvcnQva3N2ZzIvc3Zn
L1NWR1N0eWxlZEVsZW1lbnRJbXBsLmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS41CmRpZmYg
LXAgLXUgLXIxLjUga3N2ZzIvc3ZnL1NWR1N0eWxlZEVsZW1lbnRJbXBsLmNwcAotLS0ga3N2ZzIv
c3ZnL1NWR1N0eWxlZEVsZW1lbnRJbXBsLmNwcAkxIFNlcCAyMDA1IDA5OjM5OjE3IC0wMDAwCTEu
NQorKysga3N2ZzIvc3ZnL1NWR1N0eWxlZEVsZW1lbnRJbXBsLmNwcAk2IFNlcCAyMDA1IDA3OjE3
OjM3IC0wMDAwCkBAIC0yMDMsNyArMjAzLDcgQEAgdm9pZCBTVkdTdHlsZWRFbGVtZW50SW1wbDo6
YXR0YWNoKCkKICAgICBrZERlYnVnKDI2MDAyKSA8PCAiW1NWR1N0eWxlZEVsZW1lbnRJbXBsOjph
dHRhY2hdIEFib3V0IHRvIGF0dGFjaCBjYW52YXMgaXRlbSBmb3IgZWxlbWVudCAiIDw8IEtET006
OkRPTVN0cmluZyhsb2NhbE5hbWUoKSkgPDwgZW5kbDsKIAogICAgIFNWR0RvY3VtZW50SW1wbCAq
ZG9jID0gc3RhdGljX2Nhc3Q8U1ZHRG9jdW1lbnRJbXBsICo+KG93bmVyRG9jdW1lbnQoKSk7Ci0g
ICAgS0NhbnZhcyAqY2FudmFzID0gKGRvYyA/IGRvYy0+Y2FudmFzKCkgOiAwKTsKKyAgICBLQ2Fu
dmFzICpjYW52YXMgPSAoZG9jID8gZG9jLT5jYW52YXMoKSA6IDApOyAgICAKICAgICBpZihjYW52
YXMgJiYgaW1wbGVtZW50c0NhbnZhc0l0ZW0oKSkKICAgICB7CiAgICAgICAgIFNWR1JlbmRlclN0
eWxlICpzdmdTdHlsZSA9IHN0YXRpY19jYXN0PFNWR1JlbmRlclN0eWxlICo+KHJlbmRlclN0eWxl
KCkpOwpJbmRleDoga3N2ZzIvc3ZnL1NWR1RyYW5zZm9ybWFibGVJbXBsLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvU1ZHU3VwcG9ydC9rc3ZnMi9zdmcvU1ZHVHJhbnNmb3JtYWJs
ZUltcGwuY3BwLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjUKZGlmZiAtcCAtdSAtcjEuNSBrc3Zn
Mi9zdmcvU1ZHVHJhbnNmb3JtYWJsZUltcGwuY3BwCi0tLSBrc3ZnMi9zdmcvU1ZHVHJhbnNmb3Jt
YWJsZUltcGwuY3BwCTEgU2VwIDIwMDUgMDk6Mzk6MTcgLTAwMDAJMS41CisrKyBrc3ZnMi9zdmcv
U1ZHVHJhbnNmb3JtYWJsZUltcGwuY3BwCTYgU2VwIDIwMDUgMDc6MTc6MzggLTAwMDAKQEAgLTEw
OSw5ICsxMDksOSBAQCB2b2lkIFNWR1RyYW5zZm9ybWFibGVJbXBsOjp1cGRhdGVTdWJ0cmVlCiAK
ICAgICBpZihzdHlsZWQgJiYgdHJhbnNmb3JtICYmIHRyYW5zZm9ybS0+bG9jYWxNYXRyaXgoKSkK
ICAgICB7Ci0gICAgICAgIFFXTWF0cml4IHVzZU1hdHJpeCA9IHRyYW5zZm9ybS0+bG9jYWxNYXRy
aXgoKS0+cW1hdHJpeCgpOworICAgICAgICBRTWF0cml4IHVzZU1hdHJpeCA9IHRyYW5zZm9ybS0+
bG9jYWxNYXRyaXgoKS0+cW1hdHJpeCgpOwogICAgIAotICAgICAgICBLRE9NOjpFbGVtZW50SW1w
bCAqcGFyZW50RWxlbWVudCA9IGR5bmFtaWNfY2FzdDxLRE9NOjpFbGVtZW50SW1wbCAqPihub2Rl
LT5wYXJlbnROb2RlKCkpOworICAgICAgICBLRE9NOjpOb2RlSW1wbCAqcGFyZW50RWxlbWVudCA9
IG5vZGUtPnBhcmVudE5vZGUoKTsKICAgICAgICAgaWYocGFyZW50RWxlbWVudCAmJiBwYXJlbnRF
bGVtZW50LT5pZCgpID09IElEX0cpCiAgICAgICAgIHsKICAgICAgICAgICAgIFNWR01hdHJpeElt
cGwgKmN0bSA9IHRyYW5zZm9ybS0+Z2V0Q1RNKCk7CkBAIC0xMzMsMTMgKzEzMywxMiBAQCB2b2lk
IFNWR1RyYW5zZm9ybWFibGVJbXBsOjp1cGRhdGVTdWJ0cmVlCiBib29sIFNWR1RyYW5zZm9ybWFi
bGVJbXBsOjpwYXJzZUF0dHJpYnV0ZShLRE9NOjpBdHRyaWJ1dGVJbXBsICphdHRyKQogewogICAg
IGludCBpZCA9IChhdHRyLT5pZCgpICYgTm9kZUltcGxfSWRMb2NhbE1hc2spOwotICAgIEtET006
OkRPTVN0cmluZyB2YWx1ZShhdHRyLT52YWx1ZSgpKTsKICAgICBpZihpZCA9PSBBVFRSX1RSQU5T
Rk9STSkKICAgICB7CiAgICAgICAgIFNWR1RyYW5zZm9ybUxpc3RJbXBsICpsb2NhbFRyYW5zZm9y
bXMgPSB0cmFuc2Zvcm0oKS0+YmFzZVZhbCgpOwogICAgICAgICAKICAgICAgICAgbG9jYWxUcmFu
c2Zvcm1zLT5jbGVhcigpOwotICAgICAgICBTVkdUcmFuc2Zvcm1hYmxlSW1wbDo6cGFyc2VUcmFu
c2Zvcm1BdHRyaWJ1dGUobG9jYWxUcmFuc2Zvcm1zLCB2YWx1ZSk7CisgICAgICAgIFNWR1RyYW5z
Zm9ybWFibGVJbXBsOjpwYXJzZVRyYW5zZm9ybUF0dHJpYnV0ZShsb2NhbFRyYW5zZm9ybXMsIGF0
dHItPnZhbHVlKCkpOwogCiAgICAgICAgIC8vIFVwZGF0ZSBjYWNoZWQgbG9jYWwgbWF0cml4CiAg
ICAgICAgIHVwZGF0ZUxvY2FsVHJhbnNmb3JtKGxvY2FsVHJhbnNmb3Jtcyk7CkBAIC0xNTUsMTAg
KzE1NCwxMyBAQCBib29sIFNWR1RyYW5zZm9ybWFibGVJbXBsOjpwYXJzZUF0dHJpYnV0CiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFNWR1RyYW5zZm9ybWFibGVJbXBsOjpwYXJzZVRyYW5z
Zm9ybUF0dHJpYnV0ZShTVkdUcmFuc2Zvcm1MaXN0SW1wbCAqbGlzdCwgY29uc3QgS0RPTTo6RE9N
U3RyaW5nICZ0cmFuc2Zvcm0pCit2b2lkIFNWR1RyYW5zZm9ybWFibGVJbXBsOjpwYXJzZVRyYW5z
Zm9ybUF0dHJpYnV0ZShTVkdUcmFuc2Zvcm1MaXN0SW1wbCAqbGlzdCwgS0RPTTo6RE9NU3RyaW5n
SW1wbCAqdHJhbnNmb3JtKQogeworICAgIGlmKCF0cmFuc2Zvcm0pCisgICAgICAgIHJldHVybjsK
KwogICAgIC8vIFNwbGl0IHN0cmluZyBmb3IgaGFuZGxpbmcgMSB0cmFuc2Zvcm0gc3RhdGVtZW50
IGF0IGEgdGltZQotICAgIFFTdHJpbmdMaXN0IHN1YnRyYW5zZm9ybXMgPSBRU3RyaW5nTGlzdDo6
c3BsaXQoJyknLCB0cmFuc2Zvcm0uc3RyaW5nKCkpOworICAgIFFTdHJpbmdMaXN0IHN1YnRyYW5z
Zm9ybXMgPSBRU3RyaW5nTGlzdDo6c3BsaXQoJyknLCBLRE9NOjpET01TdHJpbmcodHJhbnNmb3Jt
KS5zdHJpbmcoKSk7CiAgICAgUVN0cmluZ0xpc3Q6OkNvbnN0SXRlcmF0b3IgaXQgPSBzdWJ0cmFu
c2Zvcm1zLmJlZ2luKCk7CiAgICAgUVN0cmluZ0xpc3Q6OkNvbnN0SXRlcmF0b3IgZW5kID0gc3Vi
dHJhbnNmb3Jtcy5lbmQoKTsKICAgICBmb3IoOyBpdCAhPSBlbmQ7ICsraXQpCkluZGV4OiBrc3Zn
Mi9zdmcvU1ZHVHJhbnNmb3JtYWJsZUltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jv
b3QvU1ZHU3VwcG9ydC9rc3ZnMi9zdmcvU1ZHVHJhbnNmb3JtYWJsZUltcGwuaCx2CnJldHJpZXZp
bmcgcmV2aXNpb24gMS40CmRpZmYgLXAgLXUgLXIxLjQga3N2ZzIvc3ZnL1NWR1RyYW5zZm9ybWFi
bGVJbXBsLmgKLS0tIGtzdmcyL3N2Zy9TVkdUcmFuc2Zvcm1hYmxlSW1wbC5oCTEgU2VwIDIwMDUg
MDc6MzU6NTUgLTAwMDAJMS40CisrKyBrc3ZnMi9zdmcvU1ZHVHJhbnNmb3JtYWJsZUltcGwuaAk2
IFNlcCAyMDA1IDA3OjE3OjM4IC0wMDAwCkBAIC0yNSwxNSArMjUsMTUgQEAKIAogI2luY2x1ZGUg
IlNWR0xvY2F0YWJsZUltcGwuaCIKIAorY2xhc3MgUU1hdHJpeDsKKwogbmFtZXNwYWNlIEtET00K
IHsKICAgICBjbGFzcyBOb2RlSW1wbDsKLSAgICBjbGFzcyBET01TdHJpbmc7CisgICAgY2xhc3Mg
RE9NU3RyaW5nSW1wbDsKICAgICBjbGFzcyBBdHRyaWJ1dGVJbXBsOwogfTsKIAotY2xhc3MgUVdN
YXRyaXg7Ci0KIG5hbWVzcGFjZSBLU1ZHCiB7CiAgICAgY2xhc3MgU1ZHTWF0cml4SW1wbDsKQEAg
LTU2LDcgKzU2LDcgQEAgbmFtZXNwYWNlIEtTVkcKICAgICAgICAgLy8gU3BlY2lhbCBwYXJzZUF0
dHJpYnV0ZSBmdW5jdGlvbiwgcmV0dXJuaW5nIGEgYm9vbCwKICAgICAgICAgLy8gd2hldGhlciBp
dCBjb3VsZCBoYW5kbGUgdGhlIHBhc3NlZCBhdHRyaWJ1dGUgb3Igbm90LgogICAgICAgICBib29s
IHBhcnNlQXR0cmlidXRlKEtET006OkF0dHJpYnV0ZUltcGwgKmF0dHIpOwotICAgICAgICBzdGF0
aWMgdm9pZCBwYXJzZVRyYW5zZm9ybUF0dHJpYnV0ZShTVkdUcmFuc2Zvcm1MaXN0SW1wbCAqbGlz
dCwgY29uc3QgS0RPTTo6RE9NU3RyaW5nICZ0cmFuc2Zvcm0pOworICAgICAgICBzdGF0aWMgdm9p
ZCBwYXJzZVRyYW5zZm9ybUF0dHJpYnV0ZShTVkdUcmFuc2Zvcm1MaXN0SW1wbCAqbGlzdCwgS0RP
TTo6RE9NU3RyaW5nSW1wbCAqdHJhbnNmb3JtKTsKIAogICAgICAgICB2b2lkIHVwZGF0ZVN1YnRy
ZWVNYXRyaWNlcyhLRE9NOjpOb2RlSW1wbCAqbm9kZSk7CiAgICAgICAgIHZvaWQgdXBkYXRlTG9j
YWxUcmFuc2Zvcm0oU1ZHVHJhbnNmb3JtTGlzdEltcGwgKmxvY2FsVHJhbnNmb3Jtcyk7CkluZGV4
OiBrd3EvS1dRTmFtZXNwYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1dlYkNv
cmUva3dxL0tXUU5hbWVzcGFjZS5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjMzCmRpZmYgLXAg
LXUgLXIxLjMzIGt3cS9LV1FOYW1lc3BhY2UuaAotLS0ga3dxL0tXUU5hbWVzcGFjZS5oCTE4IE5v
diAyMDAzIDAxOjUyOjM1IC0wMDAwCTEuMzMKKysrIGt3cS9LV1FOYW1lc3BhY2UuaAk2IFNlcCAy
MDA1IDA3OjE3OjM4IC0wMDAwCkBAIC02Myw2ICs2MywxMSBAQCBwdWJsaWM6CiAJV29yZEJyZWFr
CT0gMHgwNDAwLAogICAgIH07CiAKKyAgICBlbnVtIExheW91dERpcmVjdGlvbiB7CisgICAgICAg
IExlZnRUb1JpZ2h0ICAgICA9IDAsCisgICAgICAgIFJpZ2h0VG9MZWZ0ICAgICA9IDEKKyAgICB9
OworCiAgICAgZW51bSBPcmllbnRhdGlvbiB7CiAgICAgICAgIEhvcml6b250YWwsCiAgICAgICAg
IFZlcnRpY2FsCkluZGV4OiBrd3EvS1dRV01hdHJpeC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9j
dnMvcm9vdC9XZWJDb3JlL2t3cS9LV1FXTWF0cml4LmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEu
MQpkaWZmIC1wIC11IC1yMS4xIGt3cS9LV1FXTWF0cml4LmgKLS0tIGt3cS9LV1FXTWF0cml4LmgJ
NSBKdWwgMjAwNSAwNzo1Nzo0NiAtMDAwMAkxLjEKKysrIGt3cS9LV1FXTWF0cml4LmgJNiBTZXAg
MjAwNSAwNzoxNzozOCAtMDAwMApAQCAtNjYsNCArNjYsNiBAQCBwcml2YXRlOgogICAgIENHQWZm
aW5lVHJhbnNmb3JtIG1fdHJhbnNmb3JtOwogfTsKIAorI2RlZmluZSBRTWF0cml4IFFXTWF0cml4
CisKICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>3782</attachid>
            <date>2005-09-06 02:58:40 -0700</date>
            <delta_ts>2005-09-07 21:48:07 -0700</delta_ts>
            <desc>Picks up a bunch of changes from KDE</desc>
            <filename>merger.patch</filename>
            <type>text/plain</type>
            <size>181519</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViQ29yZS9D
aGFuZ2VMb2csdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuOTYKZGlmZiAtcCAtdSAtcjEuOTYgQ2hh
bmdlTG9nCi0tLSBDaGFuZ2VMb2cJNSBTZXAgMjAwNSAyMzoxMDoxNyAtMDAwMAkxLjk2CisrKyBD
aGFuZ2VMb2cJNiBTZXAgMjAwNSAwOTo1ODoyNCAtMDAwMApAQCAtMSwzICsxLDI4NSBAQAorMjAw
NS0wOS0wNiAgRXJpYyBTZWlkZWwgIDxlc2VpZGVsQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNZXJnZWQgdmFyaW91cyBjaGFuZ2Vz
IGZyb20gS0RFLCBpbmNsdWRpbmc6CisgICAgICAgIFF0My0+UXQ0IGNoYW5nZTogUVdNYXRyaXgg
LT4gUU1hdHJpeAorICAgICAgICBBIGZldyByZW1haW5pbmcgRE9NU3RyaW5nIC0+IERPTVN0cmlu
Z0ltcGwgY2hhbmdlcworICAgICAgICBLUmVuZGVyaW5nRGV2aWNlUGFpbnRTZXJ2ZXIgbm93IGlu
aGVyaXRzIEtDYW52YXNSZXNvdXJjZQorICAgICAgICBWYXJpb3VzIHdoaXRlc3BhY2UgYWRqdXN0
bWVudHMuCisgICAgICAgIEZld2VyLCBjbGVhcmVyIGxvZ3MgZnJvbSBrY2FudmFzL2RldmljZS9x
dWFydHogY29kZS4KKyAgICAgICAgRE9NIGV4Y2VwdGlvbiBzdXBwb3J0LgorCisgICAgICAgICog
Rm9yd2FyZGluZ0hlYWRlcnMvcW1hdHJpeC5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICoga2NhbnZhcy9LQ2FudmFzLmNwcDoK
KyAgICAgICAgKEtDYW52YXM6On5LQ2FudmFzKToKKyAgICAgICAgKEtDYW52YXM6OnJlc2V0KToK
KyAgICAgICAgKiBrY2FudmFzL0tDYW52YXNDb250YWluZXIuY3BwOgorICAgICAgICAoS0NhbnZh
c0NvbnRhaW5lcjo6Y29sbGlzaW9ucyk6CisgICAgICAgIChLQ2FudmFzQ29udGFpbmVyOjpmaXJz
dCk6CisgICAgICAgIChLQ2FudmFzQ29udGFpbmVyOjpsYXN0KToKKyAgICAgICAgKiBrY2FudmFz
L0tDYW52YXNGaWx0ZXJzLmNwcDoKKyAgICAgICAgKiBrY2FudmFzL0tDYW52YXNGaWx0ZXJzLmg6
CisgICAgICAgICoga2NhbnZhcy9LQ2FudmFzTWF0cml4LmNwcDogUVdNYXRyaXggLT4gUU1hdHJp
eCBjaGFuZ2VzLgorICAgICAgICAoS0NhbnZhc01hdHJpeDo6S0NhbnZhc01hdHJpeCk6CisgICAg
ICAgIChLQ2FudmFzTWF0cml4OjpvcGVyYXRvcj0pOgorICAgICAgICAoS0NhbnZhc01hdHJpeDo6
b3BlcmF0b3I9PSk6CisgICAgICAgIChLQ2FudmFzTWF0cml4OjpvcGVyYXRvciE9KToKKyAgICAg
ICAgKEtDYW52YXNNYXRyaXg6OnRyYW5zbGF0ZSk6CisgICAgICAgIChLQ2FudmFzTWF0cml4Ojpt
dWx0aXBseSk6CisgICAgICAgIChLQ2FudmFzTWF0cml4OjpzY2FsZSk6CisgICAgICAgIChLQ2Fu
dmFzTWF0cml4Ojpyb3RhdGUpOgorICAgICAgICAoS0NhbnZhc01hdHJpeDo6cm90YXRlRnJvbVZl
Y3Rvcik6CisgICAgICAgIChLQ2FudmFzTWF0cml4Ojpza2V3WCk6CisgICAgICAgIChLQ2FudmFz
TWF0cml4Ojpza2V3WSk6CisgICAgICAgIChLQ2FudmFzTWF0cml4OjpxbWF0cml4KToKKyAgICAg
ICAgKiBrY2FudmFzL0tDYW52YXNNYXRyaXguaDoKKyAgICAgICAgKiBrY2FudmFzL0tDYW52YXNS
ZXNvdXJjZXMuY3BwOgorICAgICAgICAoS0NhbnZhc1Jlc291cmNlOjpLQ2FudmFzUmVzb3VyY2Up
OgorICAgICAgICAoS0NhbnZhc01hcmtlcjo6ZHJhdyk6CisgICAgICAgICoga2NhbnZhcy9LQ2Fu
dmFzUmVzb3VyY2VzLmg6CisgICAgICAgICoga2NhbnZhcy9LQ2FudmFzVmlldy5jcHA6CisgICAg
ICAgIChLQ2FudmFzVmlldzo6c2V0Q2FudmFzKToKKyAgICAgICAgKiBrY2FudmFzL0tDYW52YXNW
aWV3Lmg6CisgICAgICAgICoga2NhbnZhcy9kZXZpY2UvS1JlbmRlcmluZ0ZpbGxQYWludGVyLmNw
cDoKKyAgICAgICAgKEtSZW5kZXJpbmdGaWxsUGFpbnRlcjo6ZHJhdyk6CisgICAgICAgICoga2Nh
bnZhcy9kZXZpY2UvS1JlbmRlcmluZ1BhaW50U2VydmVyLmg6CisgICAgICAgIChLUmVuZGVyaW5n
UGFpbnRTZXJ2ZXI6OktSZW5kZXJpbmdQYWludFNlcnZlcik6CisgICAgICAgICoga2NhbnZhcy9k
ZXZpY2UvS1JlbmRlcmluZ1BhaW50U2VydmVyR3JhZGllbnQuY3BwOgorICAgICAgICAoS1JlbmRl
cmluZ1BhaW50U2VydmVyR3JhZGllbnQ6OlByaXZhdGU6OlByaXZhdGUpOgorICAgICAgICAoS1Jl
bmRlcmluZ1BhaW50U2VydmVyR3JhZGllbnQ6OktSZW5kZXJpbmdQYWludFNlcnZlckdyYWRpZW50
KToKKyAgICAgICAgKEtSZW5kZXJpbmdQYWludFNlcnZlckdyYWRpZW50OjpsaXN0ZW5lcik6Cisg
ICAgICAgIChLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJHcmFkaWVudDo6c2V0TGlzdGVuZXIpOgorICAg
ICAgICAqIGtjYW52YXMvZGV2aWNlL0tSZW5kZXJpbmdQYWludFNlcnZlckdyYWRpZW50Lmg6Cisg
ICAgICAgICoga2NhbnZhcy9kZXZpY2UvS1JlbmRlcmluZ1BhaW50U2VydmVyUGF0dGVybi5jcHA6
CisgICAgICAgIChLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJQYXR0ZXJuOjpQcml2YXRlOjpQcml2YXRl
KToKKyAgICAgICAgKEtSZW5kZXJpbmdQYWludFNlcnZlclBhdHRlcm46OktSZW5kZXJpbmdQYWlu
dFNlcnZlclBhdHRlcm4pOgorICAgICAgICAoS1JlbmRlcmluZ1BhaW50U2VydmVyUGF0dGVybjo6
bGlzdGVuZXIpOgorICAgICAgICAoS1JlbmRlcmluZ1BhaW50U2VydmVyUGF0dGVybjo6c2V0TGlz
dGVuZXIpOgorICAgICAgICAqIGtjYW52YXMvZGV2aWNlL0tSZW5kZXJpbmdQYWludFNlcnZlclBh
dHRlcm4uaDoKKyAgICAgICAgKiBrY2FudmFzL2RldmljZS9LUmVuZGVyaW5nU3Ryb2tlUGFpbnRl
ci5jcHA6CisgICAgICAgIChLUmVuZGVyaW5nU3Ryb2tlUGFpbnRlcjo6c2V0UGFpbnRTZXJ2ZXIp
OgorICAgICAgICAoS1JlbmRlcmluZ1N0cm9rZVBhaW50ZXI6OmRyYXcpOgorICAgICAgICAqIGtj
YW52YXMvZGV2aWNlL3F1YXJ0ei9LQ2FudmFzRmlsdGVyUXVhcnR6Lm1tOgorICAgICAgICAoS0Nh
bnZhc0ZpbHRlclF1YXJ0ejo6cHJlcGFyZUZpbHRlcik6CisgICAgICAgICoga2NhbnZhcy9kZXZp
Y2UvcXVhcnR6L0tSZW5kZXJpbmdQYWludFNlcnZlckdyYWRpZW50UXVhcnR6Lm1tOgorICAgICAg
ICAoY2dHcmFkaWVudENhbGxiYWNrKToKKyAgICAgICAgKEtSZW5kZXJpbmdQYWludFNlcnZlckdy
YWRpZW50UXVhcnR6OjpLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJHcmFkaWVudFF1YXJ0eik6CisgICAg
ICAgIChLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJHcmFkaWVudFF1YXJ0ejo6dXBkYXRlUXVhcnR6R3Jh
ZGllbnRDYWNoZSk6CisgICAgICAgIChLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJMaW5lYXJHcmFkaWVu
dFF1YXJ0ejo6ZHJhdyk6CisgICAgICAgIChLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJSYWRpYWxHcmFk
aWVudFF1YXJ0ejo6ZHJhdyk6CisgICAgICAgICoga2NhbnZhcy9kZXZpY2UvcXVhcnR6L0tSZW5k
ZXJpbmdQYWludFNlcnZlclF1YXJ0ei5oOgorICAgICAgICAqIGtjYW52YXMvZGV2aWNlL3F1YXJ0
ei9LUmVuZGVyaW5nUGFpbnRTZXJ2ZXJRdWFydHoubW06CisgICAgICAgIChLUmVuZGVyaW5nUGFp
bnRTZXJ2ZXJQYXR0ZXJuUXVhcnR6OjpkcmF3KToKKyAgICAgICAgKEtSZW5kZXJpbmdQYWludFNl
cnZlckltYWdlUXVhcnR6OjpkcmF3KToKKyAgICAgICAgKiBrZG9tL0tET01TZXR0aW5ncy5jcHA6
CisgICAgICAgIChLRE9NU2V0dGluZ3M6OmluaXQpOgorICAgICAgICAoS0RPTVNldHRpbmdzOjpz
dHJUb0FkdmljZSk6CisgICAgICAgICoga2RvbS9TaGFyZWQuaDoKKyAgICAgICAgKEtET006OktE
T01fU0FGRV9TRVQpOgorICAgICAgICAqIGtkb20vYmluZGluZ3MvSURMUGFyc2VyLnBtOgorICAg
ICAgICAqIGtkb20vYmluZGluZ3MvSURMU3RydWN0dXJlLnBtOgorICAgICAgICAqIGtkb20vY2Fj
aGUvS0RPTUNhY2hlLmg6CisgICAgICAgICoga2RvbS9jYWNoZS9LRE9NQ2FjaGVkT2JqZWN0Lmg6
CisgICAgICAgICoga2RvbS9jYWNoZS9LRE9NTG9hZGVyLmNwcDoKKyAgICAgICAgKERvY3VtZW50
TG9hZGVyOjpzZXRBdXRvbG9hZEltYWdlcyk6CisgICAgICAgICoga2RvbS9jYWNoZS9LRE9NTG9h
ZGVyLmg6CisgICAgICAgICoga2RvbS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWVJbXBsLmNwcDoKKyAg
ICAgICAgKEZvbnRGYW1pbHlWYWx1ZUltcGw6OkZvbnRGYW1pbHlWYWx1ZUltcGwpOgorICAgICAg
ICAqIGtkb20vY3NzL0NTU1N0eWxlUnVsZUltcGwuY3BwOgorICAgICAgICAoQ1NTU3R5bGVSdWxl
SW1wbDo6cGFyc2VTdHJpbmcpOgorICAgICAgICAqIGtkb20vY3NzL0NTU1N0eWxlUnVsZUltcGwu
aDoKKyAgICAgICAgKiBrZG9tL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcDoKKyAgICAgICAgKENT
U1N0eWxlU2VsZWN0b3I6OkNTU1N0eWxlU2VsZWN0b3IpOgorICAgICAgICAoQ1NTU3R5bGVTZWxl
Y3Rvcjo6c3R5bGVGb3JFbGVtZW50KToKKyAgICAgICAgKENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5
UnVsZSk6CisgICAgICAgIChDU1NTdHlsZVNlbGVjdG9yOjpnZXRMYW5nQXR0cmlidXRlKToKKyAg
ICAgICAgKiBrZG9tL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmg6CisgICAgICAgICoga2RvbS9jc3Mv
Q1NTU3R5bGVTaGVldEltcGwuY3BwOgorICAgICAgICAoQ1NTU3R5bGVTaGVldEltcGw6OnR5cGUp
OgorICAgICAgICAqIGtkb20vY3NzL0NTU1ZhbHVlSW1wbC5jcHA6CisgICAgICAgIChTaGFkb3dW
YWx1ZUltcGw6OmNzc1RleHQpOgorICAgICAgICAqIGtkb20vY3NzL0ZvbnQuaDoKKyAgICAgICAg
KiBrZG9tL2Nzcy9MaW5rU3R5bGVJbXBsLmNwcDogQWRkZWQuCisgICAgICAgIChMaW5rU3R5bGVJ
bXBsOjpMaW5rU3R5bGVJbXBsKToKKyAgICAgICAgKExpbmtTdHlsZUltcGw6On5MaW5rU3R5bGVJ
bXBsKToKKyAgICAgICAgKExpbmtTdHlsZUltcGw6OnNoZWV0KToKKyAgICAgICAgKiBrZG9tL2Nz
cy9MaW5rU3R5bGVJbXBsLmg6IEFkZGVkLgorICAgICAgICAqIGtkb20vY3NzL1JlY3RJbXBsLmNw
cDoKKyAgICAgICAgKiBrZG9tL2Nzcy9SZWN0SW1wbC5oOgorICAgICAgICAoS0RPTTo6UmVjdElt
cGw6OnRvcCk6CisgICAgICAgIChLRE9NOjpSZWN0SW1wbDo6cmlnaHQpOgorICAgICAgICAoS0RP
TTo6UmVjdEltcGw6OmJvdHRvbSk6CisgICAgICAgIChLRE9NOjpSZWN0SW1wbDo6bGVmdCk6Cisg
ICAgICAgICoga2RvbS9jc3MvUmVuZGVyU3R5bGUuY3BwOgorICAgICAgICAoUmVuZGVyU3R5bGU6
OmRpZmYpOgorICAgICAgICAqIGtkb20vY3NzL1JlbmRlclN0eWxlLmg6CisgICAgICAgICoga2Rv
bS9jc3MvUmVuZGVyU3R5bGVEZWZzLmNwcDoKKyAgICAgICAgKFN0eWxlSW5oZXJpdGVkRGF0YTo6
U3R5bGVJbmhlcml0ZWREYXRhKToKKyAgICAgICAgKFN0eWxlSW5oZXJpdGVkRGF0YTo6b3BlcmF0
b3I9PSk6CisgICAgICAgICoga2RvbS9jc3MvUmVuZGVyU3R5bGVEZWZzLmg6CisgICAgICAgICog
a2RvbS9jc3MvU3R5bGVCYXNlSW1wbC5jcHA6CisgICAgICAgIChDU1NTZWxlY3Rvcjo6cHJpbnQp
OgorICAgICAgICAoQ1NTU2VsZWN0b3I6OmV4dHJhY3RQc2V1ZG9UeXBlKToKKyAgICAgICAgKiBr
ZG9tL2V2ZW50cy9FdmVudFRhcmdldEltcGwuY3BwOgorICAgICAgICAoRXZlbnRUYXJnZXRJbXBs
OjphZGRFdmVudExpc3RlbmVyKToKKyAgICAgICAgKiBrZG9tL2tkb20uaDoKKyAgICAgICAgKEtE
T006Oik6CisgICAgICAgICoga2RvbS9scy9ET01JbXBsZW1lbnRhdGlvbkxTSW1wbC5jcHA6IEFk
ZGVkLgorICAgICAgICAoRE9NSW1wbGVtZW50YXRpb25MU0ltcGw6OkRPTUltcGxlbWVudGF0aW9u
TFNJbXBsKToKKyAgICAgICAgKERPTUltcGxlbWVudGF0aW9uTFNJbXBsOjp+RE9NSW1wbGVtZW50
YXRpb25MU0ltcGwpOgorICAgICAgICAoRE9NSW1wbGVtZW50YXRpb25MU0ltcGw6OmNyZWF0ZUxT
UGFyc2VyKToKKyAgICAgICAgKERPTUltcGxlbWVudGF0aW9uTFNJbXBsOjpjcmVhdGVMU0lucHV0
KToKKyAgICAgICAgKERPTUltcGxlbWVudGF0aW9uTFNJbXBsOjpjcmVhdGVMU091dHB1dCk6Cisg
ICAgICAgIChET01JbXBsZW1lbnRhdGlvbkxTSW1wbDo6Y3JlYXRlTFNTZXJpYWxpemVyKToKKyAg
ICAgICAgKiBrZG9tL2xzL0RPTUltcGxlbWVudGF0aW9uTFNJbXBsLmg6IEFkZGVkLgorICAgICAg
ICAqIGtkb20vbHMvTFNQYXJzZXJJbXBsLmNwcDoKKyAgICAgICAgKExTUGFyc2VySW1wbDo6cGFy
c2VVUkkpOgorICAgICAgICAqIGtkb20vbHMvTFNQYXJzZXJJbXBsLmg6CisgICAgICAgICoga2Rv
bS9scy9MU1Jlc291cmNlUmVzb2x2ZXJJbXBsLmNwcDoKKyAgICAgICAgKExTUmVzb3VyY2VSZXNv
bHZlckltcGw6OnJlc29sdmVSZXNvdXJjZSk6CisgICAgICAgICoga2RvbS9scy9MU1Jlc291cmNl
UmVzb2x2ZXJJbXBsLmg6CisgICAgICAgICoga2RvbS9scy9MU1NlcmlhbGl6ZXJJbXBsLmNwcDoK
KyAgICAgICAgKExTU2VyaWFsaXplckltcGw6Om5ld0xpbmUpOgorICAgICAgICAoTFNTZXJpYWxp
emVySW1wbDo6d3JpdGVUb1N0cmluZyk6CisgICAgICAgIChMU1NlcmlhbGl6ZXJJbXBsOjplc2Nh
cGUpOgorICAgICAgICAoTFNTZXJpYWxpemVySW1wbDo6ZXNjYXBlQXR0cmlidXRlKToKKyAgICAg
ICAgKiBrZG9tL2xzL0xTU2VyaWFsaXplckltcGwuaDoKKyAgICAgICAgKiBrZG9tL3BhcnNlci9L
RE9NUGFyc2VyLmNwcDoKKyAgICAgICAgKFBhcnNlcjo6YnVmZmVyRm9yVXJsKToKKyAgICAgICAg
KiBrZG9tL3JhbmdlL1JhbmdlSW1wbC5jcHA6CisgICAgICAgIChSYW5nZUltcGw6OnRvU3RyaW5n
KToKKyAgICAgICAgKiBrZG9tL3JhbmdlL1JhbmdlSW1wbC5oOgorICAgICAgICAqIGtkb20veHBv
aW50ZXIvUG9pbnRlclBhcnRJbXBsLmNwcDoKKyAgICAgICAgKFBvaW50ZXJQYXJ0SW1wbDo6UG9p
bnRlclBhcnRJbXBsKToKKyAgICAgICAgKiBrZG9tL3hwb2ludGVyL1Nob3J0SGFuZEltcGwuY3Bw
OgorICAgICAgICAoU2hvcnRIYW5kSW1wbDo6U2hvcnRIYW5kSW1wbCk6CisgICAgICAgICoga2Rv
bS94cG9pbnRlci9YUG9pbnRlckV2YWx1YXRvckltcGwuY3BwOgorICAgICAgICAoWFBvaW50ZXJF
dmFsdWF0b3JJbXBsOjpjcmVhdGVYUG9pbnRlcik6CisgICAgICAgICoga2RvbS94cG9pbnRlci9Y
UG9pbnRlclJlc3VsdEltcGwuaDoKKyAgICAgICAgKiBrZG9tL3hwb2ludGVyL2tkb214cG9pbnRl
ci5oOgorICAgICAgICAoS0RPTTo6WFBvaW50ZXI6Oik6CisgICAgICAgICoga3N2ZzIvS1NWR0Zh
Y3RvcnkuY3BwOgorICAgICAgICAoS1NWR0ZhY3Rvcnk6OmNyZWF0ZVBhcnRPYmplY3QpOgorICAg
ICAgICAqIGtzdmcyL2Nzcy9TVkdDU1NTdHlsZVNlbGVjdG9yLmNwcDoKKyAgICAgICAgKiBrc3Zn
Mi9ldmVudHMvU1ZHRXZlbnRJbXBsLmNwcDoKKyAgICAgICAgKFNWR0V2ZW50SW1wbDo6U1ZHRXZl
bnRJbXBsKToKKyAgICAgICAgKFNWR0V2ZW50SW1wbDo6aW5pdEV2ZW50KToKKyAgICAgICAgKiBr
c3ZnMi9ldmVudHMvU1ZHRXZlbnRJbXBsLmg6CisgICAgICAgIChLU1ZHOjopOgorICAgICAgICAq
IGtzdmcyL2V2ZW50cy9TVkdab29tRXZlbnRJbXBsLmNwcDoKKyAgICAgICAgKFNWR1pvb21FdmVu
dEltcGw6OlNWR1pvb21FdmVudEltcGwpOgorICAgICAgICAqIGtzdmcyL21pc2MvS0NhbnZhc1Jl
bmRlcmluZ1N0eWxlLmNwcDoKKyAgICAgICAgKEtDYW52YXNSZW5kZXJpbmdTdHlsZTo6dXBkYXRl
RmlsbCk6CisgICAgICAgIChLQ2FudmFzUmVuZGVyaW5nU3R5bGU6OnVwZGF0ZVN0cm9rZSk6Cisg
ICAgICAgIChLQ2FudmFzUmVuZGVyaW5nU3R5bGU6OnN0YXJ0TWFya2VyKToKKyAgICAgICAgKEtD
YW52YXNSZW5kZXJpbmdTdHlsZTo6bWlkTWFya2VyKToKKyAgICAgICAgKEtDYW52YXNSZW5kZXJp
bmdTdHlsZTo6ZW5kTWFya2VyKToKKyAgICAgICAgKEtDYW52YXNSZW5kZXJpbmdTdHlsZTo6Zmls
dGVyKToKKyAgICAgICAgKiBrc3ZnMi9taXNjL0tTVkdUaW1lU2NoZWR1bGVyLmNwcDoKKyAgICAg
ICAgKFNWR1RpbWVyOjpub3RpZnlBbGwpOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdBbmltYXRl
Q29sb3JFbGVtZW50SW1wbC5jcHA6CisgICAgICAgIChTVkdBbmltYXRlQ29sb3JFbGVtZW50SW1w
bDo6aGFuZGxlVGltZXJFdmVudCk6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR0FuaW1hdGVFbGVt
ZW50SW1wbC5jcHA6CisgICAgICAgIChTVkdBbmltYXRlRWxlbWVudEltcGw6OmhhbmRsZVRpbWVy
RXZlbnQpOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50SW1wbC5jcHA6
CisgICAgICAgIChTVkdBbmltYXRpb25FbGVtZW50SW1wbDo6dGFyZ2V0QXR0cmlidXRlKToKKyAg
ICAgICAgKFNWR0FuaW1hdGlvbkVsZW1lbnRJbXBsOjpzZXRUYXJnZXRBdHRyaWJ1dGUpOgorICAg
ICAgICAqIGtzdmcyL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50SW1wbC5oOgorICAgICAgICAqIGtz
dmcyL3N2Zy9TVkdDdXJzb3JFbGVtZW50SW1wbC5jcHA6IEFkZGVkLgorICAgICAgICAoU1ZHQ3Vy
c29yRWxlbWVudEltcGw6OlNWR0N1cnNvckVsZW1lbnRJbXBsKToKKyAgICAgICAgKFNWR0N1cnNv
ckVsZW1lbnRJbXBsOjp+U1ZHQ3Vyc29yRWxlbWVudEltcGwpOgorICAgICAgICAoU1ZHQ3Vyc29y
RWxlbWVudEltcGw6OngpOgorICAgICAgICAoU1ZHQ3Vyc29yRWxlbWVudEltcGw6OnkpOgorICAg
ICAgICAoU1ZHQ3Vyc29yRWxlbWVudEltcGw6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKFNW
R0N1cnNvckVsZW1lbnRJbXBsOjpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICoga3N2ZzIvc3Zn
L1NWR0N1cnNvckVsZW1lbnRJbXBsLmg6IEFkZGVkLgorICAgICAgICAoS1NWRzo6U1ZHQ3Vyc29y
RWxlbWVudEltcGw6OnBpeG1hcCk6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR0RPTUltcGxlbWVu
dGF0aW9uSW1wbC5jcHA6CisgICAgICAgIChTVkdET01JbXBsZW1lbnRhdGlvbkltcGw6Omhhc0Zl
YXR1cmUpOgorICAgICAgICAoU1ZHRE9NSW1wbGVtZW50YXRpb25JbXBsOjpjcmVhdGVEb2N1bWVu
dFR5cGUpOgorICAgICAgICAoU1ZHRE9NSW1wbGVtZW50YXRpb25JbXBsOjpjcmVhdGVEb2N1bWVu
dCk6CisgICAgICAgIChTVkdET01JbXBsZW1lbnRhdGlvbkltcGw6OnR5cGVUb0lkKToKKyAgICAg
ICAgKFNWR0RPTUltcGxlbWVudGF0aW9uSW1wbDo6aWRUb1R5cGUpOgorICAgICAgICAqIGtzdmcy
L3N2Zy9TVkdEb2N1bWVudEltcGwuY3BwOgorICAgICAgICAoU1ZHRG9jdW1lbnRJbXBsOjpjcmVh
dGVTVkdFbGVtZW50KToKKyAgICAgICAgKFNWR0RvY3VtZW50SW1wbDo6Y3JlYXRlRWxlbWVudCk6
CisgICAgICAgIChTVkdEb2N1bWVudEltcGw6OmNyZWF0ZUVsZW1lbnROUyk6CisgICAgICAgIChT
VkdEb2N1bWVudEltcGw6OmNyZWF0ZUV2ZW50KToKKyAgICAgICAgKFNWR0RvY3VtZW50SW1wbDo6
bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAoU1ZHRG9jdW1lbnRJbXBsOjpleGVjdXRlU2NyaXB0
cyk6CisgICAgICAgIChTVkdEb2N1bWVudEltcGw6OnByZXBhcmVNb3VzZUV2ZW50KToKKyAgICAg
ICAgKFNWR0RvY3VtZW50SW1wbDo6ZGlzcGF0Y2hVSUV2ZW50KToKKyAgICAgICAgKFNWR0RvY3Vt
ZW50SW1wbDo6ZGlzcGF0Y2hNb3VzZUV2ZW50KToKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHRG9j
dW1lbnRJbXBsLmg6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR0VsZW1lbnRJbXBsLmNwcDoKKyAg
ICAgICAgKFNWR0VsZW1lbnRJbXBsOjpnZXRJZCk6CisgICAgICAgIChTVkdFbGVtZW50SW1wbDo6
eG1sYmFzZSk6CisgICAgICAgIChTVkdFbGVtZW50SW1wbDo6dHJ5R2V0QXR0cmlidXRlKToKKyAg
ICAgICAgKFNWR0VsZW1lbnRJbXBsOjp0cnlHZXRBdHRyaWJ1dGVOUyk6CisgICAgICAgIChTVkdF
bGVtZW50SW1wbDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAoU1ZHRWxlbWVudEltcGw6OmFk
ZFNWR0V2ZW50TGlzdGVuZXIpOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdFbGVtZW50SW1wbC5o
OgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdHcmFkaWVudEVsZW1lbnRJbXBsLmNwcDoKKyAgICAg
ICAgKFNWR0dyYWRpZW50RWxlbWVudEltcGw6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBr
c3ZnMi9zdmcvU1ZHSGVscGVyLmNwcDoKKyAgICAgICAgKFNWR0hlbHBlcjo6UGVyY2VudGFnZU9m
Vmlld3BvcnQpOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdJbWFnZUVsZW1lbnRJbXBsLmNwcDoK
KyAgICAgICAgKFNWR0ltYWdlRWxlbWVudEltcGw6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAg
KiBrc3ZnMi9zdmcvU1ZHTGVuZ3RoTGlzdEltcGwuY3BwOgorICAgICAgICAoU1ZHTGVuZ3RoTGlz
dEltcGw6OnBhcnNlKToKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVt
ZW50SW1wbC5jcHA6CisgICAgICAgIChTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnRJbXBsOjp4Mik6
CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR01hdHJpeEltcGwuY3BwOgorICAgICAgICAoU1ZHTWF0
cml4SW1wbDo6U1ZHTWF0cml4SW1wbCk6CisgICAgICAgIChTVkdNYXRyaXhJbXBsOjpwb3N0TXVs
dGlwbHkpOgorICAgICAgICAoU1ZHTWF0cml4SW1wbDo6cG9zdFRyYW5zbGF0ZSk6CisgICAgICAg
IChTVkdNYXRyaXhJbXBsOjpwb3N0U2NhbGUpOgorICAgICAgICAoU1ZHTWF0cml4SW1wbDo6cG9z
dFNjYWxlTm9uVW5pZm9ybSk6CisgICAgICAgIChTVkdNYXRyaXhJbXBsOjpwb3N0Um90YXRlKToK
KyAgICAgICAgKFNWR01hdHJpeEltcGw6OnBvc3RSb3RhdGVGcm9tVmVjdG9yKToKKyAgICAgICAg
KFNWR01hdHJpeEltcGw6OnBvc3RGbGlwWCk6CisgICAgICAgIChTVkdNYXRyaXhJbXBsOjpwb3N0
RmxpcFkpOgorICAgICAgICAoU1ZHTWF0cml4SW1wbDo6cG9zdFNrZXdYKToKKyAgICAgICAgKFNW
R01hdHJpeEltcGw6OnBvc3RTa2V3WSk6CisgICAgICAgIChTVkdNYXRyaXhJbXBsOjptdWx0aXBs
eSk6CisgICAgICAgIChTVkdNYXRyaXhJbXBsOjpzZXRNYXRyaXgpOgorICAgICAgICAoU1ZHTWF0
cml4SW1wbDo6cW1hdHJpeCk6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR01hdHJpeEltcGwuaDoK
KyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHUGF0dGVybkVsZW1lbnRJbXBsLmNwcDoKKyAgICAgICAg
KFNWR1BhdHRlcm5FbGVtZW50SW1wbDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAqIGtzdmcy
L3N2Zy9TVkdTVkdFbGVtZW50SW1wbC5jcHA6CisgICAgICAgIChTVkdTVkdFbGVtZW50SW1wbDo6
d2lkdGgpOgorICAgICAgICAoU1ZHU1ZHRWxlbWVudEltcGw6OmhlaWdodCk6CisgICAgICAgIChT
VkdTVkdFbGVtZW50SW1wbDo6Y29udGVudFNjcmlwdFR5cGUpOgorICAgICAgICAoU1ZHU1ZHRWxl
bWVudEltcGw6OmNvbnRlbnRTdHlsZVR5cGUpOgorICAgICAgICAoU1ZHU1ZHRWxlbWVudEltcGw6
OnNldENvbnRlbnRTdHlsZVR5cGUpOgorICAgICAgICAoU1ZHU1ZHRWxlbWVudEltcGw6OmNyZWF0
ZUV2ZW50KToKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHU1ZHRWxlbWVudEltcGwuaDoKKyAgICAg
ICAgKiBrc3ZnMi9zdmcvU1ZHU2NyaXB0RWxlbWVudEltcGwuY3BwOgorICAgICAgICAoU1ZHU2Ny
aXB0RWxlbWVudEltcGw6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKFNWR1NjcmlwdEVsZW1l
bnRJbXBsOjpleGVjdXRlU2NyaXB0KToKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHU2NyaXB0RWxl
bWVudEltcGwuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHU2V0RWxlbWVudEltcGwuY3BwOgor
ICAgICAgICAoU1ZHU2V0RWxlbWVudEltcGw6OmhhbmRsZVRpbWVyRXZlbnQpOgorICAgICAgICAq
IGtzdmcyL3N2Zy9TVkdTdHlsZUVsZW1lbnRJbXBsLmNwcDoKKyAgICAgICAgKFNWR1N0eWxlRWxl
bWVudEltcGw6OnhtbHNwYWNlKToKKyAgICAgICAgKFNWR1N0eWxlRWxlbWVudEltcGw6OnR5cGUp
OgorICAgICAgICAoU1ZHU3R5bGVFbGVtZW50SW1wbDo6bWVkaWEpOgorICAgICAgICAoU1ZHU3R5
bGVFbGVtZW50SW1wbDo6dGl0bGUpOgorICAgICAgICAoU1ZHU3R5bGVFbGVtZW50SW1wbDo6Y2hp
bGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHU3R5bGVkRWxlbWVudEltcGwu
Y3BwOgorICAgICAgICAoU1ZHU3R5bGVkRWxlbWVudEltcGw6OmF0dGFjaCk6CisgICAgICAgICog
a3N2ZzIvc3ZnL1NWR1RyYW5zZm9ybWFibGVJbXBsLmNwcDoKKyAgICAgICAgKFNWR1RyYW5zZm9y
bWFibGVJbXBsOjp1cGRhdGVTdWJ0cmVlTWF0cmljZXMpOgorICAgICAgICAoU1ZHVHJhbnNmb3Jt
YWJsZUltcGw6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKFNWR1RyYW5zZm9ybWFibGVJbXBs
OjpwYXJzZVRyYW5zZm9ybUF0dHJpYnV0ZSk6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR1RyYW5z
Zm9ybWFibGVJbXBsLmg6CisgICAgICAgICoga3dxL0tXUU5hbWVzcGFjZS5oOgorICAgICAgICAo
UXQ6Oik6IGFkZGVkIExheW91dERpcmVjdGlvbjogIExlZnRUb1JpZ2h0IGFuZCBSaWdodFRvTGVm
dAorICAgICAgICAqIGt3cS9LV1FXTWF0cml4Lmg6ICNkZWZpbmUgbWFwcGluZyBRTWF0cml4IHRv
IFFXTWF0cml4CisKIDIwMDUtMDktMDUgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IEpvaG4gU3VsbGl2YW4uCkluZGV4OiBGb3J3YXJkaW5nSGVh
ZGVycy9xbWF0cml4LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogRm9yd2FyZGluZ0hlYWRlcnMvcW1h
dHJpeC5oCmRpZmYgLU4gRm9yd2FyZGluZ0hlYWRlcnMvcW1hdHJpeC5oCi0tLSBGb3J3YXJkaW5n
SGVhZGVycy9xbWF0cml4LmgJMSBKYW4gMTk3MCAwMDowMDowMCAtMDAwMAorKysgRm9yd2FyZGlu
Z0hlYWRlcnMvcW1hdHJpeC5oCTYgU2VwIDIwMDUgMDk6NTg6MjQgLTAwMDAKQEAgLTAsMCArMSBA
QAorI2ltcG9ydCAiS1dRV01hdHJpeC5oIgpJbmRleDogV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaix2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4yMgpkaWZm
IC1wIC11IC1yMS4yMiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKLS0tIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagk0IFNlcCAyMDA1IDA5OjIyOjQzIC0wMDAwCTEu
MjIKKysrIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagk2IFNlcCAyMDA1IDA5OjU4
OjQ2IC0wMDAwCkBAIC0xMzg4LDYgKzEzODgsMTIgQEAKIAkJQTgyMTJEMDUwODc5NEEyMzAwNjc3
MzU5IC8qIGxpYnhzbHQuZHlsaWIgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4NDA2MzMwNzA3MzFBNzcyMDBEQjFGRDEgLyogbGlieHNsdC5keWxpYiAq
LzsgfTsKIAkJQTgyRkJCNjYwOEM2MjQxMzAwRUZFRTIzIC8qIEV2ZW50TmFtZXMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzOTg4NUMyMDhCN0UzRDEw
MEU3MDdDNCAvKiBFdmVudE5hbWVzLmggKi87IH07CiAJCUE4MkZCQjY3MDhDNjI0MUUwMEVGRUUy
MyAvKiBFdmVudE5hbWVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDkzOTg4NUMxMDhCN0UzRDEwMEU3MDdDNCAvKiBFdmVudE5hbWVzLmNwcCAqLzsg
fTsKKwkJQTgyRkMyNzUwOEM5MjkyRTAwRUZFRTIzIC8qIERPTUltcGxlbWVudGF0aW9uTFNJbXBs
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBODJGQzI3
MzA4QzkyOTJFMDBFRkVFMjMgLyogRE9NSW1wbGVtZW50YXRpb25MU0ltcGwuaCAqLzsgfTsKKwkJ
QTgyRkMyNzYwOEM5MjkyRTAwRUZFRTIzIC8qIERPTUltcGxlbWVudGF0aW9uTFNJbXBsLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4MkZDMjc0MDhD
OTI5MkUwMEVGRUUyMyAvKiBET01JbXBsZW1lbnRhdGlvbkxTSW1wbC5jcHAgKi87IH07CisJCUE4
MkZDMkYyMDhDOUFBRTQwMEVGRUUyMyAvKiBMaW5rU3R5bGVJbXBsLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBODJGQzJGMDA4QzlBQUU0MDBFRkVFMjMg
LyogTGlua1N0eWxlSW1wbC5oICovOyB9OworCQlBODJGQzJGMzA4QzlBQUU0MDBFRkVFMjMgLyog
TGlua1N0eWxlSW1wbC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBODJGQzJGMTA4QzlBQUU0MDBFRkVFMjMgLyogTGlua1N0eWxlSW1wbC5jcHAgKi87
IH07CisJCUE4MkZDMzNEMDhDQkIwN0MwMEVGRUUyMyAvKiBTVkdDdXJzb3JFbGVtZW50SW1wbC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTgyRkMzM0Iw
OENCQjA3QzAwRUZFRTIzIC8qIFNWR0N1cnNvckVsZW1lbnRJbXBsLmggKi87IH07CisJCUE4MkZD
MzNFMDhDQkIwN0MwMEVGRUUyMyAvKiBTVkdDdXJzb3JFbGVtZW50SW1wbC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBODJGQzMzQzA4Q0JCMDdDMDBF
RkVFMjMgLyogU1ZHQ3Vyc29yRWxlbWVudEltcGwuY3BwICovOyB9OwogCQlBODQxRUM3MjA4QzY2
MzY2MDBEREEyMUMgLyogS0NhbnZhc1BhdGguY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDc1OEM0NDMwOEM1RjIxNzAwOUJBRjA1IC8qIEtDYW52YXNQ
YXRoLmNwcCAqLzsgfTsKIAkJQTg1NkU5QUUwOEI0NUFCQzAwNDJFMzAzIC8qIFhQYXRoUmVzdWx0
V3JhcHBlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTgxRDU5MjEwOEFEREZGOTAwMTM2QUMxIC8qIFhQYXRoUmVzdWx0V3JhcHBlci5oICovOyB9Owog
CQlBODU2RTlBRjA4QjQ1QUJDMDA0MkUzMDMgLyogWFBhdGhSZXN1bHRXcmFwcGVyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4MUQ1OTIwMDhBRERG
RjkwMDEzNkFDMSAvKiBYUGF0aFJlc3VsdFdyYXBwZXIuY3BwICovOyB9OwpAQCAtMjUzOCw2ICsy
NTQ0LDEyIEBACiAJCUE4MUQ1QTgxMDhBREY3MDQwMDEzNkFDMSAvKiB1dGlsLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IHV0aWwuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlBODFENUE4MjA4QURGNzA0MDAxMzZBQzEgLyogdXRpbC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSB1dGlsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUE4MjEyRDA3MDg3OTRBMjMwMDY3NzM1OSAvKiBXZWJDb3JlK1NWRy5mcmFtZXdvcmsg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IHdyYXBwZXIu
ZnJhbWV3b3JrOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSAiV2ViQ29yZStTVkcuZnJhbWV3
b3JrIjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJQTgyRkMyNzMwOEM5
MjkyRTAwRUZFRTIzIC8qIERPTUltcGxlbWVudGF0aW9uTFNJbXBsLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IERPTUltcGxlbWVudGF0aW9uTFNJbXBsLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUE4MkZDMjc0MDhDOTI5MkUwMEVGRUUyMyAvKiBET01JbXBsZW1l
bnRhdGlvbkxTSW1wbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBE
T01JbXBsZW1lbnRhdGlvbkxTSW1wbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUE4MkZDMkYwMDhDOUFBRTQwMEVGRUUyMyAvKiBMaW5rU3R5bGVJbXBsLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExpbmtTdHlsZUltcGwuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQTgyRkMyRjEwOEM5QUFFNDAwRUZFRTIzIC8qIExpbmtTdHlsZUltcGwuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTGlua1N0eWxlSW1wbC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE4MkZDMzNCMDhDQkIwN0MwMEVGRUUyMyAv
KiBTVkdDdXJzb3JFbGVtZW50SW1wbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTVkdDdXJzb3JFbGVtZW50SW1wbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlB
ODJGQzMzQzA4Q0JCMDdDMDBFRkVFMjMgLyogU1ZHQ3Vyc29yRWxlbWVudEltcGwuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHQ3Vyc29yRWxlbWVudEltcGwuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBODM4NTQzMTA4QjBBMDBCMDAwQUY1ODAg
LyogdmFyaWFibGVyZWZlcmVuY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
dmFyaWFibGVyZWZlcmVuY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTgzODU0
MzIwOEIwQTAwQjAwMEFGNTgwIC8qIHZhcmlhYmxlcmVmZXJlbmNlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IHZhcmlhYmxlcmVmZXJlbmNlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTg1NkU5RjgwOEI0NjA4RjAwNDJFMzAzIC8qIHhwYXRoLnkg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS55YWNjOyBwYXRoID0geHBhdGgueTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTQzNDYsNiArNDM1OCw4IEBACiAJCQkJQThDMEY4MzAwODk3MDFG
MzAwQkE1MTE0IC8qIFNWR0NvbG9ySW1wbC5oICovLAogCQkJCUE4QzBGODMxMDg5NzAxRjMwMEJB
NTExNCAvKiBTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudEltcGwuY3BwICovLAog
CQkJCUE4QzBGODMyMDg5NzAxRjMwMEJBNTExNCAvKiBTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0
aW9uRWxlbWVudEltcGwuaCAqLywKKwkJCQlBODJGQzMzQjA4Q0JCMDdDMDBFRkVFMjMgLyogU1ZH
Q3Vyc29yRWxlbWVudEltcGwuaCAqLywKKwkJCQlBODJGQzMzQzA4Q0JCMDdDMDBFRkVFMjMgLyog
U1ZHQ3Vyc29yRWxlbWVudEltcGwuY3BwICovLAogCQkJCUE4QzBGODMzMDg5NzAxRjMwMEJBNTEx
NCAvKiBTVkdEZWZzRWxlbWVudEltcGwuY3BwICovLAogCQkJCUE4QzBGODM0MDg5NzAxRjMwMEJB
NTExNCAvKiBTVkdEZWZzRWxlbWVudEltcGwuaCAqLywKIAkJCQlBOEMwRjgzNTA4OTcwMUYzMDBC
QTUxMTQgLyogU1ZHRGVzY0VsZW1lbnRJbXBsLmNwcCAqLywKQEAgLTQ2NjUsNiArNDY3OSw4IEBA
CiAJCQkJQThDMEY5NzIwODk3MDFGNTAwQkE1MTE0IC8qIEtET01DU1NQYXJzZXIuY3BwICovLAog
CQkJCUE4QzBGOTczMDg5NzAxRjUwMEJBNTExNCAvKiBLRE9NQ1NTUGFyc2VyLmggKi8sCiAJCQkJ
QThDMEY5NzQwODk3MDFGNTAwQkE1MTE0IC8qIGtkb21wYXJzZXJjc3MueSAqLywKKwkJCQlBODJG
QzJGMDA4QzlBQUU0MDBFRkVFMjMgLyogTGlua1N0eWxlSW1wbC5oICovLAorCQkJCUE4MkZDMkYx
MDhDOUFBRTQwMEVGRUUyMyAvKiBMaW5rU3R5bGVJbXBsLmNwcCAqLywKIAkJCQlBOEMwRjk3NTA4
OTcwMUY1MDBCQTUxMTQgLyogTWVkaWFMaXN0SW1wbC5jcHAgKi8sCiAJCQkJQThDMEY5NzYwODk3
MDFGNTAwQkE1MTE0IC8qIE1lZGlhTGlzdEltcGwuaCAqLywKIAkJCQlBOEMwRjk3NzA4OTcwMUY1
MDBCQTUxMTQgLyogUmVjdEltcGwuY3BwICovLApAQCAtNDgwOCw2ICs0ODI0LDggQEAKIAkJQThD
MEZBNDEwODk3MDFGNjAwQkE1MTE0IC8qIGxzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKKwkJCQlBODJGQzI3MzA4QzkyOTJFMDBFRkVFMjMgLyogRE9NSW1wbGVt
ZW50YXRpb25MU0ltcGwuaCAqLywKKwkJCQlBODJGQzI3NDA4QzkyOTJFMDBFRkVFMjMgLyogRE9N
SW1wbGVtZW50YXRpb25MU0ltcGwuY3BwICovLAogCQkJCUE4QzBGQTU1MDg5NzAxRjYwMEJBNTEx
NCAvKiBrZG9tbHMuaCAqLywKIAkJCQlBOEMwRkE0NTA4OTcwMUY2MDBCQTUxMTQgLyogTFNFeGNl
cHRpb25JbXBsLmNwcCAqLywKIAkJCQlBOEMwRkE0NjA4OTcwMUY2MDBCQTUxMTQgLyogTFNFeGNl
cHRpb25JbXBsLmggKi8sCkBAIC02ODk2LDYgKzY5MTQsOSBAQAogCQkJCUE4NTZFOUQ3MDhCNDVC
MUUwMDQyRTMwMyAvKiBmdW5jdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4NTZFOUQ5MDhC
NDVCMUUwMDQyRTMwMyAvKiBleHByZXNzaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODJGQkI2
NjA4QzYyNDEzMDBFRkVFMjMgLyogRXZlbnROYW1lcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTgy
RkMyNzUwOEM5MjkyRTAwRUZFRTIzIC8qIERPTUltcGxlbWVudGF0aW9uTFNJbXBsLmggaW4gSGVh
ZGVycyAqLywKKwkJCQlBODJGQzJGMjA4QzlBQUU0MDBFRkVFMjMgLyogTGlua1N0eWxlSW1wbC5o
IGluIEhlYWRlcnMgKi8sCisJCQkJQTgyRkMzM0QwOENCQjA3QzAwRUZFRTIzIC8qIFNWR0N1cnNv
ckVsZW1lbnRJbXBsLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95
bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTg5MDMsNiArODkyNCw5IEBACiAJCQkJ
QTg1NkU5RjkwOEI0NjA4RjAwNDJFMzAzIC8qIHhwYXRoLnkgaW4gU291cmNlcyAqLywKIAkJCQlB
ODJGQkI2NzA4QzYyNDFFMDBFRkVFMjMgLyogRXZlbnROYW1lcy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlBODQxRUM3MjA4QzY2MzY2MDBEREEyMUMgLyogS0NhbnZhc1BhdGguY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJQTgyRkMyNzYwOEM5MjkyRTAwRUZFRTIzIC8qIERPTUltcGxlbWVudGF0aW9u
TFNJbXBsLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE4MkZDMkYzMDhDOUFBRTQwMEVGRUUyMyAv
KiBMaW5rU3R5bGVJbXBsLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE4MkZDMzNFMDhDQkIwN0Mw
MEVGRUUyMyAvKiBTVkdDdXJzb3JFbGVtZW50SW1wbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7
CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6
IGtjYW52YXMvS0NhbnZhcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1NWR1N1
cHBvcnQva2NhbnZhcy9LQ2FudmFzLmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS42CmRpZmYg
LXAgLXUgLXIxLjYga2NhbnZhcy9LQ2FudmFzLmNwcAotLS0ga2NhbnZhcy9LQ2FudmFzLmNwcAky
IFNlcCAyMDA1IDEwOjAyOjU1IC0wMDAwCTEuNgorKysga2NhbnZhcy9LQ2FudmFzLmNwcAk2IFNl
cCAyMDA1IDA5OjU4OjQ2IC0wMDAwCkBAIC02Miw5ICs2MiwxMiBAQCBLQ2FudmFzOjpLQ2FudmFz
KEtSZW5kZXJpbmdEZXZpY2UgKmRldmljCiAKIEtDYW52YXM6On5LQ2FudmFzKCkKIHsKLSAgICBk
ZWxldGUgZC0+cm9vdENvbnRhaW5lcjsKLSAgICBkLT5yb290Q29udGFpbmVyID0gTlVMTDsKICAg
ICByZXNldCgpOworICAgIFEzVmFsdWVMaXN0Q29uc3RJdGVyYXRvcjxjb25zdCBLQ2FudmFzVmll
dyAqPiBpdCA9IGQtPnZpZXdMaXN0LmNvbnN0QmVnaW4oKTsKKyAgICBRM1ZhbHVlTGlzdENvbnN0
SXRlcmF0b3I8Y29uc3QgS0NhbnZhc1ZpZXcgKj4gZW5kID0gZC0+dmlld0xpc3QuY29uc3RFbmQo
KTsKKworICAgIGZvcig7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAgY29uc3RfY2FzdDxLQ2Fu
dmFzVmlldyAqPigqaXQpLT5zZXRDYW52YXMoMCk7CiAgICAgZGVsZXRlIGQ7CiB9CiAKQEAgLTEx
Niw2ICsxMTksMTIgQEAgdm9pZCBLQ2FudmFzOjpzZXRDYW52YXNTaXplKGNvbnN0IFFTaXplIAog
CiB2b2lkIEtDYW52YXM6OnJlc2V0KCkKIHsKKyAgICBpZihkLT5yb290Q29udGFpbmVyKQorICAg
IHsKKyAgICAgICAgZGVsZXRlIGQtPnJvb3RDb250YWluZXI7CisgICAgICAgIGQtPnJvb3RDb250
YWluZXIgPSAwOworICAgIH0KKwogICAgIHJlZ2lzdHJ5KCktPmNsZWFudXAoKTsKIH0KIApJbmRl
eDoga2NhbnZhcy9LQ2FudmFzQ29udGFpbmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3Zz
L3Jvb3QvU1ZHU3VwcG9ydC9rY2FudmFzL0tDYW52YXNDb250YWluZXIuY3BwLHYKcmV0cmlldmlu
ZyByZXZpc2lvbiAxLjYKZGlmZiAtcCAtdSAtcjEuNiBrY2FudmFzL0tDYW52YXNDb250YWluZXIu
Y3BwCi0tLSBrY2FudmFzL0tDYW52YXNDb250YWluZXIuY3BwCTEgU2VwIDIwMDUgMDc6MzI6NDUg
LTAwMDAJMS42CisrKyBrY2FudmFzL0tDYW52YXNDb250YWluZXIuY3BwCTYgU2VwIDIwMDUgMDk6
NTg6NDYgLTAwMDAKQEAgLTI3MCwyMSArMjcwLDExIEBAIGJvb2wgS0NhbnZhc0NvbnRhaW5lcjo6
bG93ZXJJdGVtKEtDYW52YXMKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotS0NhbnZhc0l0ZW0gKktD
YW52YXNDb250YWluZXI6OmZpcnN0KCkgY29uc3QKLXsKLSAgICByZXR1cm4gZC0+Zmlyc3Q7Ci19
Ci0KLUtDYW52YXNJdGVtICpLQ2FudmFzQ29udGFpbmVyOjpsYXN0KCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gZC0+bGFzdDsKLX0KLQogdm9pZCBLQ2FudmFzQ29udGFpbmVyOjpjb2xsaXNpb25zKGNv
bnN0IFFQb2ludCAmcCwgS0NhbnZhc0l0ZW1MaXN0ICZoaXRzKSBjb25zdAogewogICAgIGlmKHAu
eCgpIDwgMCB8fCBwLnkoKSA8IDApCiAgICAgICAgIHJldHVybjsKLSAgICAKKwogICAgIEtDYW52
YXNJdGVtICpjdXJyZW50ID0gZC0+bGFzdDsKICAgICBmb3IoOyBjdXJyZW50ICE9IDA7IGN1cnJl
bnQgPSBjdXJyZW50LT5wcmV2KCkpCiAgICAgewpAQCAtMzAzLDQgKzI5MywxNCBAQCB2b2lkIEtD
YW52YXNDb250YWluZXI6OmNvbGxpc2lvbnMoY29uc3QgCiAgICAgfQogfQogCitLQ2FudmFzSXRl
bSAqS0NhbnZhc0NvbnRhaW5lcjo6Zmlyc3QoKSBjb25zdAoreworICAgIHJldHVybiBkLT5maXJz
dDsKK30KKworS0NhbnZhc0l0ZW0gKktDYW52YXNDb250YWluZXI6Omxhc3QoKSBjb25zdAorewor
ICAgIHJldHVybiBkLT5sYXN0OworfQorCiAvLyB2aW06dHM9NDpub2V0CkluZGV4OiBrY2FudmFz
L0tDYW52YXNGaWx0ZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvU1ZHU3Vw
cG9ydC9rY2FudmFzL0tDYW52YXNGaWx0ZXJzLmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS40
CmRpZmYgLXAgLXUgLXIxLjQga2NhbnZhcy9LQ2FudmFzRmlsdGVycy5jcHAKLS0tIGtjYW52YXMv
S0NhbnZhc0ZpbHRlcnMuY3BwCTEgU2VwIDIwMDUgMDc6MzI6NDUgLTAwMDAJMS40CisrKyBrY2Fu
dmFzL0tDYW52YXNGaWx0ZXJzLmNwcAk2IFNlcCAyMDA1IDA5OjU4OjQ3IC0wMDAwCkBAIC0yNyw2
ICsyNyw3IEBACiAjaW5jbHVkZSAiS0NhbnZhc1RyZWVEZWJ1Zy5oIgogCiAvLyBGaWx0ZXJzCisK
IHZvaWQgS0NhbnZhc0ZpbHRlcjo6YWRkRmlsdGVyRWZmZWN0KEtDYW52YXNGaWx0ZXJFZmZlY3Qg
KmVmZmVjdCkKIHsKICAgICBtX2VmZmVjdHMuYXBwZW5kKGVmZmVjdCk7CkluZGV4OiBrY2FudmFz
L0tDYW52YXNGaWx0ZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1NWR1N1cHBv
cnQva2NhbnZhcy9LQ2FudmFzRmlsdGVycy5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjUKZGlm
ZiAtcCAtdSAtcjEuNSBrY2FudmFzL0tDYW52YXNGaWx0ZXJzLmgKLS0tIGtjYW52YXMvS0NhbnZh
c0ZpbHRlcnMuaAkyIFNlcCAyMDA1IDEwOjAyOjU1IC0wMDAwCTEuNQorKysga2NhbnZhcy9LQ2Fu
dmFzRmlsdGVycy5oCTYgU2VwIDIwMDUgMDk6NTg6NDcgLTAwMDAKQEAgLTIwNyw3ICsyMDcsNyBA
QCBjbGFzcyBLQ2FudmFzRkVDb2xvck1hdHJpeCA6IHB1YmxpYyBLQ2FuCiBwdWJsaWM6CiAgICAg
S0NDb2xvck1hdHJpeFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogICAgIHZv
aWQgc2V0VHlwZShLQ0NvbG9yTWF0cml4VHlwZSB0eXBlKSB7IG1fdHlwZSA9IHR5cGU7IH0KLSAg
ICAKKwogICAgIFEzVmFsdWVMaXN0PGZsb2F0PiB2YWx1ZXMoKSBjb25zdCB7IHJldHVybiBtX3Zh
bHVlczsgfQogICAgIHZvaWQgc2V0VmFsdWVzKGNvbnN0IFEzVmFsdWVMaXN0PGZsb2F0PiAmdmFs
dWVzKSB7IG1fdmFsdWVzID0gdmFsdWVzOyB9OwogCkluZGV4OiBrY2FudmFzL0tDYW52YXNNYXRy
aXguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tjYW52YXMv
S0NhbnZhc01hdHJpeC5jcHAsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMwpkaWZmIC1wIC11IC1y
MS4zIGtjYW52YXMvS0NhbnZhc01hdHJpeC5jcHAKLS0tIGtjYW52YXMvS0NhbnZhc01hdHJpeC5j
cHAJMSBTZXAgMjAwNSAwNzozMjo0NiAtMDAwMAkxLjMKKysrIGtjYW52YXMvS0NhbnZhc01hdHJp
eC5jcHAJNiBTZXAgMjAwNSAwOTo1ODo0NyAtMDAwMApAQCAtMzQsNyArMzQsNyBAQCBLQ2FudmFz
TWF0cml4OjpLQ2FudmFzTWF0cml4KCkKICAgICBtX21vZGUgPSBPUFNfUFJFTVVMOwogfQogCi1L
Q2FudmFzTWF0cml4OjpLQ2FudmFzTWF0cml4KGNvbnN0IFFXTWF0cml4ICZxbWF0cml4KQorS0Nh
bnZhc01hdHJpeDo6S0NhbnZhc01hdHJpeChjb25zdCBRTWF0cml4ICZxbWF0cml4KQogewogICAg
IG1fbW9kZSA9IE9QU19QUkVNVUw7CiAgICAgKCp0aGlzKSA9IHFtYXRyaXg7CkBAIC01Niw3ICs1
Niw3IEBAIEtDYW52YXNNYXRyaXg6On5LQ2FudmFzTWF0cml4KCkKIHsKIH0KIAotS0NhbnZhc01h
dHJpeCAmS0NhbnZhc01hdHJpeDo6b3BlcmF0b3I9KGNvbnN0IFFXTWF0cml4ICZvdGhlcikKK0tD
YW52YXNNYXRyaXggJktDYW52YXNNYXRyaXg6Om9wZXJhdG9yPShjb25zdCBRTWF0cml4ICZvdGhl
cikKIHsKICAgICBtX21hdHJpeCA9IG90aGVyOwogICAgIHJldHVybiAqdGhpczsKQEAgLTY4LDEy
ICs2OCwxMiBAQCBLQ2FudmFzTWF0cml4ICZLQ2FudmFzTWF0cml4OjpvcGVyYXRvcj0oCiAgICAg
cmV0dXJuICp0aGlzOwogfQogCi1ib29sIEtDYW52YXNNYXRyaXg6Om9wZXJhdG9yPT0oY29uc3Qg
UVdNYXRyaXggJm90aGVyKSBjb25zdAorYm9vbCBLQ2FudmFzTWF0cml4OjpvcGVyYXRvcj09KGNv
bnN0IFFNYXRyaXggJm90aGVyKSBjb25zdAogewogICAgIHJldHVybiAobV9tYXRyaXggPT0gb3Ro
ZXIpOwogfQogCi1ib29sIEtDYW52YXNNYXRyaXg6Om9wZXJhdG9yIT0oY29uc3QgUVdNYXRyaXgg
Jm90aGVyKSBjb25zdAorYm9vbCBLQ2FudmFzTWF0cml4OjpvcGVyYXRvciE9KGNvbnN0IFFNYXRy
aXggJm90aGVyKSBjb25zdAogewogICAgIHJldHVybiAhb3BlcmF0b3I9PShvdGhlcik7CiB9CkBA
IC0xNTksNyArMTU5LDcgQEAgS0NhbnZhc01hdHJpeCAmS0NhbnZhc01hdHJpeDo6dHJhbnNsYXRl
KAogICAgICAgICBtX21hdHJpeC50cmFuc2xhdGUoeCwgeSk7CiAgICAgZWxzZQogICAgIHsKLSAg
ICAgICAgUVdNYXRyaXggdGVtcDsKKyAgICAgICAgUU1hdHJpeCB0ZW1wOwogICAgICAgICB0ZW1w
LnRyYW5zbGF0ZSh4LCB5KTsKICAgICAgICAgbV9tYXRyaXggKj0gdGVtcDsKICAgICB9CkBAIC0x
NjksNyArMTY5LDcgQEAgS0NhbnZhc01hdHJpeCAmS0NhbnZhc01hdHJpeDo6dHJhbnNsYXRlKAog
CiBLQ2FudmFzTWF0cml4ICZLQ2FudmFzTWF0cml4OjptdWx0aXBseShjb25zdCBLQ2FudmFzTWF0
cml4ICZvdGhlcikKIHsKLSAgICBRV01hdHJpeCB0ZW1wKG90aGVyLmEoKSwgb3RoZXIuYigpLCBv
dGhlci5jKCksIG90aGVyLmQoKSwgb3RoZXIuZSgpLCBvdGhlci5mKCkpOworICAgIFFNYXRyaXgg
dGVtcChvdGhlci5hKCksIG90aGVyLmIoKSwgb3RoZXIuYygpLCBvdGhlci5kKCksIG90aGVyLmUo
KSwgb3RoZXIuZigpKTsKIAogICAgIGlmKG1fbW9kZSA9PSBPUFNfUFJFTVVMKQogICAgIHsKQEAg
LTE4OCw3ICsxODgsNyBAQCBLQ2FudmFzTWF0cml4ICZLQ2FudmFzTWF0cml4OjpzY2FsZShkb3Vi
CiAgICAgICAgIG1fbWF0cml4LnNjYWxlKHNjYWxlRmFjdG9yWCwgc2NhbGVGYWN0b3JZKTsKICAg
ICBlbHNlCiAgICAgewotICAgICAgICBRV01hdHJpeCB0ZW1wOworICAgICAgICBRTWF0cml4IHRl
bXA7CiAgICAgICAgIHRlbXAuc2NhbGUoc2NhbGVGYWN0b3JYLCBzY2FsZUZhY3RvclkpOwogICAg
ICAgICBtX21hdHJpeCAqPSB0ZW1wOwogICAgIH0KQEAgLTIwMiw3ICsyMDIsNyBAQCBLQ2FudmFz
TWF0cml4ICZLQ2FudmFzTWF0cml4Ojpyb3RhdGUoZG91CiAgICAgICAgIG1fbWF0cml4LnJvdGF0
ZShhbmdsZSk7CiAgICAgZWxzZQogICAgIHsKLSAgICAgICAgUVdNYXRyaXggdGVtcDsKKyAgICAg
ICAgUU1hdHJpeCB0ZW1wOwogICAgICAgICB0ZW1wLnJvdGF0ZShhbmdsZSk7CiAgICAgICAgIG1f
bWF0cml4ICo9IHRlbXA7CiAgICAgfQpAQCAtMjE2LDcgKzIxNiw3IEBAIEtDYW52YXNNYXRyaXgg
JktDYW52YXNNYXRyaXg6OnJvdGF0ZUZyb20KICAgICAgICAgbV9tYXRyaXgucm90YXRlKGF0YW4y
KHksIHgpIC8gZGVnMnJhZCk7CiAgICAgZWxzZQogICAgIHsKLSAgICAgICAgUVdNYXRyaXggdGVt
cDsKKyAgICAgICAgUU1hdHJpeCB0ZW1wOwogICAgICAgICB0ZW1wLnJvdGF0ZShhdGFuMih5LCB4
KSAvIGRlZzJyYWQpOwogICAgICAgICBtX21hdHJpeCAqPSB0ZW1wOwogICAgIH0KQEAgLTI0MCw3
ICsyNDAsNyBAQCBLQ2FudmFzTWF0cml4ICZLQ2FudmFzTWF0cml4Ojpza2V3WChkb3ViCiAgICAg
ICAgIG1fbWF0cml4LnNoZWFyKHRhbihhbmdsZSAqIGRlZzJyYWQpLCAwLjBmKTsKICAgICBlbHNl
CiAgICAgewotICAgICAgICBRV01hdHJpeCB0ZW1wOworICAgICAgICBRTWF0cml4IHRlbXA7CiAg
ICAgICAgIHRlbXAuc2hlYXIodGFuKGFuZ2xlICogZGVnMnJhZCksIDAuMGYpOwogICAgICAgICBt
X21hdHJpeCAqPSB0ZW1wOwogICAgIH0KQEAgLTI1NCw3ICsyNTQsNyBAQCBLQ2FudmFzTWF0cml4
ICZLQ2FudmFzTWF0cml4Ojpza2V3WShkb3ViCiAgICAgICAgIG1fbWF0cml4LnNoZWFyKDAuMGYs
IHRhbihhbmdsZSAqIGRlZzJyYWQpKTsKICAgICBlbHNlCiAgICAgewotICAgICAgICBRV01hdHJp
eCB0ZW1wOworICAgICAgICBRTWF0cml4IHRlbXA7CiAgICAgICAgIHRlbXAuc2hlYXIoMC4wZiwg
dGFuKGFuZ2xlICogZGVnMnJhZCkpOwogICAgICAgICBtX21hdHJpeCAqPSB0ZW1wOwogICAgIH0K
QEAgLTMwNCw3ICszMDQsNyBAQCBLQ1BhdGhEYXRhTGlzdCBLQ2FudmFzTWF0cml4OjptYXAoY29u
c3QgCiAgICAgcmV0dXJuIG1hcHBlZDsKIH0KIAotUVdNYXRyaXggS0NhbnZhc01hdHJpeDo6cW1h
dHJpeCgpIGNvbnN0CitRTWF0cml4IEtDYW52YXNNYXRyaXg6OnFtYXRyaXgoKSBjb25zdAogewog
ICAgIHJldHVybiBtX21hdHJpeDsKIH0KSW5kZXg6IGtjYW52YXMvS0NhbnZhc01hdHJpeC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tjYW52YXMvS0NhbnZhc01h
dHJpeC5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjMKZGlmZiAtcCAtdSAtcjEuMyBrY2FudmFz
L0tDYW52YXNNYXRyaXguaAotLS0ga2NhbnZhcy9LQ2FudmFzTWF0cml4LmgJMSBTZXAgMjAwNSAw
NzozMjo0NiAtMDAwMAkxLjMKKysrIGtjYW52YXMvS0NhbnZhc01hdHJpeC5oCTYgU2VwIDIwMDUg
MDk6NTg6NDcgLTAwMDAKQEAgLTIzLDcgKzIzLDcgQEAKICNpZm5kZWYgS0NhbnZhc01hdHJpeF9I
CiAjZGVmaW5lIEtDYW52YXNNYXRyaXhfSAogCi0jaW5jbHVkZSA8cXdtYXRyaXguaD4KKyNpbmNs
dWRlIDxxbWF0cml4Lmg+CiAKIHR5cGVkZWYgZW51bQogewpAQCAtMzYsMTcgKzM2LDE3IEBAIGNs
YXNzIEtDYW52YXNNYXRyaXgKIHsKIHB1YmxpYzoKICAgICBLQ2FudmFzTWF0cml4KCk7Ci0gICAg
S0NhbnZhc01hdHJpeChjb25zdCBRV01hdHJpeCAmcW1hdHJpeCk7CisgICAgS0NhbnZhc01hdHJp
eChjb25zdCBRTWF0cml4ICZxbWF0cml4KTsKICAgICBLQ2FudmFzTWF0cml4KGNvbnN0IEtDYW52
YXNNYXRyaXggJm1hdHJpeCk7CiAgICAgS0NhbnZhc01hdHJpeChkb3VibGUgYSwgZG91YmxlIGIs
IGRvdWJsZSBjLCBkb3VibGUgZCwgZG91YmxlIGUsIGRvdWJsZSBmKTsKICAgICB+S0NhbnZhc01h
dHJpeCgpOwogCiAgICAgLy8gT3BlcmF0b3JzCi0gICAgS0NhbnZhc01hdHJpeCAmb3BlcmF0b3I9
KGNvbnN0IFFXTWF0cml4ICZvdGhlcik7CisgICAgS0NhbnZhc01hdHJpeCAmb3BlcmF0b3I9KGNv
bnN0IFFNYXRyaXggJm90aGVyKTsKICAgICBLQ2FudmFzTWF0cml4ICZvcGVyYXRvcj0oY29uc3Qg
S0NhbnZhc01hdHJpeCAmb3RoZXIpOwogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFFXTWF0
cml4ICZvdGhlcikgY29uc3Q7Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFFXTWF0cml4ICZv
dGhlcikgY29uc3Q7CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFFNYXRyaXggJm90aGVyKSBj
b25zdDsKKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgUU1hdHJpeCAmb3RoZXIpIGNvbnN0Owog
CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEtDYW52YXNNYXRyaXggJm90aGVyKSBjb25zdDsK
ICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgS0NhbnZhc01hdHJpeCAmb3RoZXIpIGNvbnN0OwpA
QCAtOTYsMTAgKzk2LDEwIEBAIHB1YmxpYzoKICAgICAvLyAoT25seSB3b3JrcyBmb3IgbGluZXRv
L21vdmV0byBvcGVyYXRpb25zISkKICAgICBLQ1BhdGhEYXRhTGlzdCBtYXAoY29uc3QgS0NQYXRo
RGF0YUxpc3QgJnBhdGhEYXRhKSBjb25zdDsKIAotICAgIFFXTWF0cml4IHFtYXRyaXgoKSBjb25z
dDsKKyAgICBRTWF0cml4IHFtYXRyaXgoKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBRV01hdHJp
eCBtX21hdHJpeDsKKyAgICBRTWF0cml4IG1fbWF0cml4OwogICAgIEtDTWF0cml4T3BlcmF0aW9u
TW9kZSBtX21vZGU7CiB9OwogCkluZGV4OiBrY2FudmFzL0tDYW52YXNSZXNvdXJjZXMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tjYW52YXMvS0NhbnZhc1Jl
c291cmNlcy5jcHAsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNApkaWZmIC1wIC11IC1yMS40IGtj
YW52YXMvS0NhbnZhc1Jlc291cmNlcy5jcHAKLS0tIGtjYW52YXMvS0NhbnZhc1Jlc291cmNlcy5j
cHAJMSBTZXAgMjAwNSAwNzozMjo0NyAtMDAwMAkxLjQKKysrIGtjYW52YXMvS0NhbnZhc1Jlc291
cmNlcy5jcHAJNiBTZXAgMjAwNSAwOTo1ODo0NyAtMDAwMApAQCAtMjYsNiArMjYsNyBAQAogI2lu
Y2x1ZGUgIktDYW52YXMuaCIKICNpbmNsdWRlICJLQ2FudmFzSXRlbS5oIgogI2luY2x1ZGUgIktD
YW52YXNNYXRyaXguaCIKKyNpbmNsdWRlICJLQ2FudmFzQ29udGFpbmVyLmgiCiAjaW5jbHVkZSAi
S0NhbnZhc1Jlc291cmNlcy5oIgogI2luY2x1ZGUgIktSZW5kZXJpbmdEZXZpY2UuaCIKICNpbmNs
dWRlICJLQ2FudmFzUmVzb3VyY2VMaXN0ZW5lci5oIgpAQCAtNDEsMjUgKzQyLDEyIEBAIFFUZXh0
U3RyZWFtICZvcGVyYXRvcjw8KFFUZXh0U3RyZWFtICZ0cywKIC8vIEtDYW52YXNSZXNvdXJjZQog
S0NhbnZhc1Jlc291cmNlOjpLQ2FudmFzUmVzb3VyY2UoKQogewotICAgIG1fY2hhbmdlZCA9IHRy
dWU7Ci0KLSAgICBtX2xpc3RlbmVyID0gMDsKIH0KIAogS0NhbnZhc1Jlc291cmNlOjp+S0NhbnZh
c1Jlc291cmNlKCkKIHsKIH0KIAotYm9vbCBLQ2FudmFzUmVzb3VyY2U6OmNoYW5nZWQoKSBjb25z
dAotewotICAgIHJldHVybiBtX2NoYW5nZWQ7Ci19Ci0KLXZvaWQgS0NhbnZhc1Jlc291cmNlOjpz
ZXRDaGFuZ2VkKGJvb2wgY2hhbmdlZCkKLXsKLSAgICBtX2NoYW5nZWQgPSBjaGFuZ2VkOwotfQot
CiB2b2lkIEtDYW52YXNSZXNvdXJjZTo6YWRkQ2xpZW50KEtDYW52YXNJdGVtICppdGVtKQogewog
ICAgIGlmKG1fY2xpZW50cy5maW5kKGl0ZW0pICE9IG1fY2xpZW50cy5lbmQoKSkKQEAgLTczLDE2
ICs2MSw2IEBAIGNvbnN0IEtDYW52YXNJdGVtTGlzdCAmS0NhbnZhc1Jlc291cmNlOjoKICAgICBy
ZXR1cm4gbV9jbGllbnRzOwogfQogCi1LQ2FudmFzUmVzb3VyY2VMaXN0ZW5lciAqS0NhbnZhc1Jl
c291cmNlOjpsaXN0ZW5lcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fbGlzdGVuZXI7Ci19Ci0K
LXZvaWQgS0NhbnZhc1Jlc291cmNlOjpzZXRMaXN0ZW5lcihLQ2FudmFzUmVzb3VyY2VMaXN0ZW5l
ciAqbGlzdGVuZXIpCi17Ci0gICAgbV9saXN0ZW5lciA9IGxpc3RlbmVyOwotfQotCiB2b2lkIEtD
YW52YXNSZXNvdXJjZTo6aW52YWxpZGF0ZSgpCiB7CiAgICAgS0NhbnZhc0l0ZW1MaXN0OjpDb25z
dEl0ZXJhdG9yIGl0ID0gbV9jbGllbnRzLmJlZ2luKCk7CkBAIC0yMTEsMTEgKzE4OSw4IEBAIHZv
aWQgS0NhbnZhc01hcmtlcjo6c2V0QXV0b0FuZ2xlKCkKIAogdm9pZCBLQ2FudmFzTWFya2VyOjpk
cmF3KGRvdWJsZSB4LCBkb3VibGUgeSwgZG91YmxlIGFuZ2xlKQogewotICAgIGtkRGVidWcoKSA8
PCAiRHJhd2luZyBtYXJrZXIgYXQgOiAiIDw8IHggPDwgIiAsICIgPDwgeSA8PCBlbmRsOwogICAg
IGlmKG1fbWFya2VyICYmIG1fbWFya2VyLT5zdHlsZSgpKQogICAgIHsKLSAgICAgICAgc2V0Q2hh
bmdlZChmYWxzZSk7Ci0KICAgICAgICAgS0NhbnZhc01hdHJpeCB0cmFuc2xhdGlvbjsKICAgICAg
ICAgdHJhbnNsYXRpb24udHJhbnNsYXRlKHgsIHkpOwogCkluZGV4OiBrY2FudmFzL0tDYW52YXNS
ZXNvdXJjZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvU1ZHU3VwcG9ydC9rY2Fu
dmFzL0tDYW52YXNSZXNvdXJjZXMuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS41CmRpZmYgLXAg
LXUgLXIxLjUga2NhbnZhcy9LQ2FudmFzUmVzb3VyY2VzLmgKLS0tIGtjYW52YXMvS0NhbnZhc1Jl
c291cmNlcy5oCTIgU2VwIDIwMDUgMTA6MDI6NTYgLTAwMDAJMS41CisrKyBrY2FudmFzL0tDYW52
YXNSZXNvdXJjZXMuaAk2IFNlcCAyMDA1IDA5OjU4OjQ3IC0wMDAwCkBAIC00Miw3ICs0Miw2IEBA
IHR5cGVkZWYgZW51bQogICAgIFJTX0ZJTFRFUiA9IDMKIH0gS0NSZXNvdXJjZVR5cGU7CiAKLQog
Y2xhc3MgS0NhbnZhc01hdHJpeDsKIAogY2xhc3MgS0NhbnZhc1Jlc291cmNlCkBAIC01MSwyNiAr
NTAsMTcgQEAgcHVibGljOgogICAgIEtDYW52YXNSZXNvdXJjZSgpOwogICAgIHZpcnR1YWwgfktD
YW52YXNSZXNvdXJjZSgpOwogCi0gICAgYm9vbCBjaGFuZ2VkKCkgY29uc3Q7Ci0gICAgdm9pZCBz
ZXRDaGFuZ2VkKGJvb2wgY2hhbmdlZCk7Ci0KICAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZSgp
OwogICAgIHZvaWQgYWRkQ2xpZW50KEtDYW52YXNJdGVtICppdGVtKTsKIAogICAgIGNvbnN0IEtD
YW52YXNJdGVtTGlzdCAmY2xpZW50cygpIGNvbnN0OwotCi0gICAgS0NhbnZhc1Jlc291cmNlTGlz
dGVuZXIgKmxpc3RlbmVyKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRMaXN0ZW5lcihLQ2FudmFzUmVz
b3VyY2VMaXN0ZW5lciAqbGlzdGVuZXIpOwogICAgIAogICAgIFFTdHJpbmcgaWRJblJlZ2lzdHJ5
KCkgY29uc3Q7CiAgICAgdm9pZCBzZXRJZEluUmVnaXN0cnkoY29uc3QgUVN0cmluZyYgbmV3SWQp
OwogICAgIAogICAgIHZpcnR1YWwgUVRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24o
UVRleHRTdHJlYW0gJikgY29uc3Q7IAogcHJpdmF0ZToKLSAgICBib29sIG1fY2hhbmdlZCA6IDE7
Ci0KICAgICBLQ2FudmFzSXRlbUxpc3QgbV9jbGllbnRzOwotICAgIEtDYW52YXNSZXNvdXJjZUxp
c3RlbmVyICptX2xpc3RlbmVyOwogICAgIFFTdHJpbmcgcmVnaXN0cnlJZDsKIH07CiAKSW5kZXg6
IGtjYW52YXMvS0NhbnZhc1ZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9T
VkdTdXBwb3J0L2tjYW52YXMvS0NhbnZhc1ZpZXcuY3BwLHYKcmV0cmlldmluZyByZXZpc2lvbiAx
LjQKZGlmZiAtcCAtdSAtcjEuNCBrY2FudmFzL0tDYW52YXNWaWV3LmNwcAotLS0ga2NhbnZhcy9L
Q2FudmFzVmlldy5jcHAJMiBTZXAgMjAwNSAxMDowMjo1NiAtMDAwMAkxLjQKKysrIGtjYW52YXMv
S0NhbnZhc1ZpZXcuY3BwCTYgU2VwIDIwMDUgMDk6NTg6NDggLTAwMDAKQEAgLTQ2Niw2ICs0NjYs
MTEgQEAgS0NhbnZhc0ltYWdlICpLQ2FudmFzVmlldzo6Z3JhYkltYWdlKCkKIH0KICNlbmRpZgog
Cit2b2lkIEtDYW52YXNWaWV3OjpzZXRDYW52YXMoS0NhbnZhcyAqY2FudmFzKQoreworICAgIGQt
PmNhbnZhcyA9IGNhbnZhczsKK30KKwogdm9pZCBLQ2FudmFzVmlldzo6Y2xhbXBBZ2FpbnN0VGFy
Z2V0KGNvbnN0IFFSZWN0ICZyZWN0LCBpbnQgJngwLCBpbnQgJnkwLCBpbnQgJngxLCBpbnQgJnkx
KQogewogICAgIGludCBjdXJXaWR0aCA9IHZpZXdXaWR0aCgpOwpJbmRleDoga2NhbnZhcy9LQ2Fu
dmFzVmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tjYW52
YXMvS0NhbnZhc1ZpZXcuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4zCmRpZmYgLXAgLXUgLXIx
LjMga2NhbnZhcy9LQ2FudmFzVmlldy5oCi0tLSBrY2FudmFzL0tDYW52YXNWaWV3LmgJMSBTZXAg
MjAwNSAwNzozMjo0NyAtMDAwMAkxLjMKKysrIGtjYW52YXMvS0NhbnZhc1ZpZXcuaAk2IFNlcCAy
MDA1IDA5OjU4OjQ4IC0wMDAwCkBAIC0xMDIsNyArMTAyLDkgQEAgc2lnbmFsczoKIAogcHJpdmF0
ZToKICAgICBmcmllbmQgY2xhc3MgS0NhbnZhczsKLSAgICAKKworICAgIHZvaWQgc2V0Q2FudmFz
KEtDYW52YXMgKmNhbnZhcyk7CisKICAgICAvLyBJbnRlcm5hbCBoZWxwZXIuCiAgICAgdmlydHVh
bCB2b2lkIGNhbnZhc1NpemVDaGFuZ2VkKGludCB3aWR0aCwgaW50IGhlaWdodCkgPSAwOwogCklu
ZGV4OiBrY2FudmFzL2RldmljZS9LUmVuZGVyaW5nRmlsbFBhaW50ZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
UkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tjYW52YXMvZGV2aWNlL0tSZW5kZXJpbmdG
aWxsUGFpbnRlci5jcHAsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNApkaWZmIC1wIC11IC1yMS40
IGtjYW52YXMvZGV2aWNlL0tSZW5kZXJpbmdGaWxsUGFpbnRlci5jcHAKLS0tIGtjYW52YXMvZGV2
aWNlL0tSZW5kZXJpbmdGaWxsUGFpbnRlci5jcHAJMSBTZXAgMjAwNSAwNzozMjo1MCAtMDAwMAkx
LjQKKysrIGtjYW52YXMvZGV2aWNlL0tSZW5kZXJpbmdGaWxsUGFpbnRlci5jcHAJNiBTZXAgMjAw
NSAwOTo1ODo0OCAtMDAwMApAQCAtOTAsMTMgKzkwLDcgQEAgdm9pZCBLUmVuZGVyaW5nRmlsbFBh
aW50ZXI6OnNldE9wYWNpdHkoZgogdm9pZCBLUmVuZGVyaW5nRmlsbFBhaW50ZXI6OmRyYXcoS1Jl
bmRlcmluZ0RldmljZUNvbnRleHQgKmNvbnRleHQsIGNvbnN0IEtDYW52YXNDb21tb25BcmdzICZh
cmdzKSBjb25zdAogewogICAgIGlmKGQtPnBzZXJ2ZXIpCi0gICAgewotICAgICAgICBLQ2FudmFz
UmVzb3VyY2UgKnJlcyA9IGR5bmFtaWNfY2FzdDxLQ2FudmFzUmVzb3VyY2UgKj4oZC0+cHNlcnZl
cik7Ci0gICAgICAgIGlmKHJlcyAmJiByZXMtPmxpc3RlbmVyKCkpICAgICAgICAKLSAgICAgICAg
ICAgIHJlcy0+bGlzdGVuZXIoKS0+cmVzb3VyY2VOb3RpZmljYXRpb24oKTsKLQogICAgICAgICBk
LT5wc2VydmVyLT5kcmF3KGNvbnRleHQsIGFyZ3MsIEFQUExZX1RPX0ZJTEwpOwotICAgIH0KIH0K
IAogLy8gdmltOnRzPTQ6bm9ldApJbmRleDoga2NhbnZhcy9kZXZpY2UvS1JlbmRlcmluZ1BhaW50
U2VydmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1NWR1N1cHBvcnQva2NhbnZh
cy9kZXZpY2UvS1JlbmRlcmluZ1BhaW50U2VydmVyLmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEu
NApkaWZmIC1wIC11IC1yMS40IGtjYW52YXMvZGV2aWNlL0tSZW5kZXJpbmdQYWludFNlcnZlci5o
Ci0tLSBrY2FudmFzL2RldmljZS9LUmVuZGVyaW5nUGFpbnRTZXJ2ZXIuaAkxIFNlcCAyMDA1IDA3
OjMyOjUwIC0wMDAwCTEuNAorKysga2NhbnZhcy9kZXZpY2UvS1JlbmRlcmluZ1BhaW50U2VydmVy
LmgJNiBTZXAgMjAwNSAwOTo1ODo0OCAtMDAwMApAQCAtMjQsNiArMjQsNyBAQAogI2RlZmluZSBL
UmVuZGVyaW5nUGFpbnRTZXJ2ZXJfSAogCiAjaW5jbHVkZSA8a2NhbnZhcy9LQ2FudmFzVHlwZXMu
aD4KKyNpbmNsdWRlIDxrY2FudmFzL0tDYW52YXNSZXNvdXJjZXMuaD4KIAogLy8gRW51bWVyYXRp
b25zCiB0eXBlZGVmIGVudW0KQEAgLTQ2LDEwICs0NywxMCBAQCB0eXBlZGVmIGVudW0KIGNsYXNz
IFFUZXh0U3RyZWFtOwogY2xhc3MgS0NhbnZhc0l0ZW07CiBjbGFzcyBLUmVuZGVyaW5nRGV2aWNl
Q29udGV4dDsKLWNsYXNzIEtSZW5kZXJpbmdQYWludFNlcnZlcgorY2xhc3MgS1JlbmRlcmluZ1Bh
aW50U2VydmVyIDogcHVibGljIEtDYW52YXNSZXNvdXJjZQogewogcHVibGljOgotICAgIEtSZW5k
ZXJpbmdQYWludFNlcnZlcigpIHsgbV9hY3RpdmVDbGllbnQgPSAwOyB9CisgICAgS1JlbmRlcmlu
Z1BhaW50U2VydmVyKCkgOiBLQ2FudmFzUmVzb3VyY2UoKSB7IG1fYWN0aXZlQ2xpZW50ID0gMDsg
fQogICAgIHZpcnR1YWwgfktSZW5kZXJpbmdQYWludFNlcnZlcigpIHsgfQogCiAgICAgY29uc3Qg
S0NhbnZhc0l0ZW0gKmFjdGl2ZUNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZlQ2xpZW50
O30KSW5kZXg6IGtjYW52YXMvZGV2aWNlL0tSZW5kZXJpbmdQYWludFNlcnZlckdyYWRpZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvU1ZHU3VwcG9ydC9rY2FudmFzL2Rldmlj
ZS9LUmVuZGVyaW5nUGFpbnRTZXJ2ZXJHcmFkaWVudC5jcHAsdgpyZXRyaWV2aW5nIHJldmlzaW9u
IDEuNQpkaWZmIC1wIC11IC1yMS41IGtjYW52YXMvZGV2aWNlL0tSZW5kZXJpbmdQYWludFNlcnZl
ckdyYWRpZW50LmNwcAotLS0ga2NhbnZhcy9kZXZpY2UvS1JlbmRlcmluZ1BhaW50U2VydmVyR3Jh
ZGllbnQuY3BwCTIgU2VwIDIwMDUgMTA6MDI6NTggLTAwMDAJMS41CisrKyBrY2FudmFzL2Rldmlj
ZS9LUmVuZGVyaW5nUGFpbnRTZXJ2ZXJHcmFkaWVudC5jcHAJNiBTZXAgMjAwNSAwOTo1ODo0OCAt
MDAwMApAQCAtOTAsMTYgKzkwLDE3IEBAIFFUZXh0U3RyZWFtICZvcGVyYXRvcjw8KFFUZXh0U3Ry
ZWFtICZ0cywKIGNsYXNzIEtSZW5kZXJpbmdQYWludFNlcnZlckdyYWRpZW50OjpQcml2YXRlCiB7
CiBwdWJsaWM6Ci0gICAgUHJpdmF0ZSgpIHsgYm91bmRpbmdCb3hNb2RlID0gdHJ1ZTsgc3ByZWFk
TWV0aG9kID0gU1BSRUFETUVUSE9EX1BBRDsgfQorICAgIFByaXZhdGUoKSB7IGJvdW5kaW5nQm94
TW9kZSA9IHRydWU7IHNwcmVhZE1ldGhvZCA9IFNQUkVBRE1FVEhPRF9QQUQ7IGxpc3RlbmVyID0g
MDsgfQogICAgIH5Qcml2YXRlKCkgeyB9CiAKICAgICBLQ1NvcnRlZEdyYWRpZW50U3RvcExpc3Qg
c3RvcHM7CiAgICAgS0NHcmFkaWVudFNwcmVhZE1ldGhvZCBzcHJlYWRNZXRob2Q7CiAgICAgYm9v
bCBib3VuZGluZ0JveE1vZGU7CiAgICAgS0NhbnZhc01hdHJpeCBncmFkaWVudFRyYW5zZm9ybTsK
KyAgICBLQ2FudmFzUmVzb3VyY2VMaXN0ZW5lciAqbGlzdGVuZXI7CiB9OwogCi1LUmVuZGVyaW5n
UGFpbnRTZXJ2ZXJHcmFkaWVudDo6S1JlbmRlcmluZ1BhaW50U2VydmVyR3JhZGllbnQoKSA6IEtS
ZW5kZXJpbmdQYWludFNlcnZlcigpLCBLQ2FudmFzUmVzb3VyY2UoKSwgZChuZXcgUHJpdmF0ZSgp
KQorS1JlbmRlcmluZ1BhaW50U2VydmVyR3JhZGllbnQ6OktSZW5kZXJpbmdQYWludFNlcnZlckdy
YWRpZW50KCkgOiBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXIoKSwgZChuZXcgUHJpdmF0ZSgpKQogewog
fQogCkBAIC0yNzAsNiArMjcxLDE2IEBAIEtDUGFpbnRTZXJ2ZXJUeXBlIEtSZW5kZXJpbmdQYWlu
dFNlcnZlclIKICAgICByZXR1cm4gUFNfUkFESUFMX0dSQURJRU5UOwogfQogCitLQ2FudmFzUmVz
b3VyY2VMaXN0ZW5lciAqS1JlbmRlcmluZ1BhaW50U2VydmVyR3JhZGllbnQ6Omxpc3RlbmVyKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gZC0+bGlzdGVuZXI7Cit9CisKK3ZvaWQgS1JlbmRlcmluZ1Bh
aW50U2VydmVyR3JhZGllbnQ6OnNldExpc3RlbmVyKEtDYW52YXNSZXNvdXJjZUxpc3RlbmVyICps
aXN0ZW5lcikKK3sKKyAgICBkLT5saXN0ZW5lciA9IGxpc3RlbmVyOworfQorCiBRVGV4dFN0cmVh
bSAmS1JlbmRlcmluZ1BhaW50U2VydmVyUmFkaWFsR3JhZGllbnQ6OmV4dGVybmFsUmVwcmVzZW50
YXRpb24oUVRleHRTdHJlYW0gJnRzKSBjb25zdAogewogICAgIHRzIDw8ICJbdHlwZT1SQURJQUwt
R1JBRElFTlRdICI7IApAQCAtMjc5LDQgKzI5MCw1IEBAIFFUZXh0U3RyZWFtICZLUmVuZGVyaW5n
UGFpbnRTZXJ2ZXJSYWRpYWwKICAgICAgICAgPDwgIiBbcmFkaXVzPSIgPDwgZ3JhZGllbnRSYWRp
dXMoKSA8PCAiXSI7CiAgICAgcmV0dXJuIHRzOwogfQorCiAvLyB2aW06dHM9NDpub2V0CkluZGV4
OiBrY2FudmFzL2RldmljZS9LUmVuZGVyaW5nUGFpbnRTZXJ2ZXJHcmFkaWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tjYW52YXMvZGV2aWNlL0tSZW5kZXJp
bmdQYWludFNlcnZlckdyYWRpZW50LmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNQpkaWZmIC1w
IC11IC1yMS41IGtjYW52YXMvZGV2aWNlL0tSZW5kZXJpbmdQYWludFNlcnZlckdyYWRpZW50LmgK
LS0tIGtjYW52YXMvZGV2aWNlL0tSZW5kZXJpbmdQYWludFNlcnZlckdyYWRpZW50LmgJMiBTZXAg
MjAwNSAxMDowMjo1OCAtMDAwMAkxLjUKKysrIGtjYW52YXMvZGV2aWNlL0tSZW5kZXJpbmdQYWlu
dFNlcnZlckdyYWRpZW50LmgJNiBTZXAgMjAwNSAwOTo1ODo0OCAtMDAwMApAQCAtMjYsOCArMjYs
OCBAQAogI2luY2x1ZGUgPHFjb2xvci5oPgogI2luY2x1ZGUgPHEzcHRybGlzdC5oPgogCi0jaW5j
bHVkZSA8a2NhbnZhcy9LQ2FudmFzUmVzb3VyY2VzLmg+CiAjaW5jbHVkZSA8a2NhbnZhcy9kZXZp
Y2UvS1JlbmRlcmluZ1BhaW50U2VydmVyLmg+CisjaW5jbHVkZSA8a2NhbnZhcy9LQ2FudmFzUmVz
b3VyY2VMaXN0ZW5lci5oPgogCiB0eXBlZGVmIGVudW0KIHsKQEAgLTUyLDcgKzUyLDYgQEAgcHVi
bGljOgogCiAgICAgdHlwZWRlZiBRM1B0ckxpc3RJdGVyYXRvcjxLQ0dyYWRpZW50T2Zmc2V0UGFp
cj4gSXRlcmF0b3I7CiAKLSAgICAKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIGludCBjb21wYXJl
SXRlbXMoUTNQdHJDb2xsZWN0aW9uOjpJdGVtIGl0ZW0xLCBRM1B0ckNvbGxlY3Rpb246Okl0ZW0g
aXRlbTIpOwogcHJpdmF0ZToKQEAgLTYyLDggKzYxLDcgQEAgcHJpdmF0ZToKIFFUZXh0U3RyZWFt
ICZvcGVyYXRvcjw8KFFUZXh0U3RyZWFtICYsIGNvbnN0IEtDU29ydGVkR3JhZGllbnRTdG9wTGlz
dCAmKTsKIAogY2xhc3MgS0NhbnZhc01hdHJpeDsKLWNsYXNzIEtSZW5kZXJpbmdQYWludFNlcnZl
ckdyYWRpZW50IDogcHVibGljIEtSZW5kZXJpbmdQYWludFNlcnZlciwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIEtDYW52YXNSZXNvdXJjZQorY2xhc3MgS1Jl
bmRlcmluZ1BhaW50U2VydmVyR3JhZGllbnQgOiBwdWJsaWMgS1JlbmRlcmluZ1BhaW50U2VydmVy
CiB7CiBwdWJsaWM6CiAgICAgS1JlbmRlcmluZ1BhaW50U2VydmVyR3JhZGllbnQoKTsKQEAgLTg2
LDYgKzg0LDkgQEAgcHVibGljOgogICAgIEtDYW52YXNNYXRyaXggZ3JhZGllbnRUcmFuc2Zvcm0o
KSBjb25zdDsKICAgICB2b2lkIHNldEdyYWRpZW50VHJhbnNmb3JtKGNvbnN0IEtDYW52YXNNYXRy
aXggJm1hdCk7CiAKKyAgICBLQ2FudmFzUmVzb3VyY2VMaXN0ZW5lciAqbGlzdGVuZXIoKSBjb25z
dDsKKyAgICB2b2lkIHNldExpc3RlbmVyKEtDYW52YXNSZXNvdXJjZUxpc3RlbmVyICpsaXN0ZW5l
cik7CisKICAgICBRVGV4dFN0cmVhbSAmZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihRVGV4dFN0cmVh
bSAmKSBjb25zdDsKIHByaXZhdGU6CiAgICAgY2xhc3MgUHJpdmF0ZTsKSW5kZXg6IGtjYW52YXMv
ZGV2aWNlL0tSZW5kZXJpbmdQYWludFNlcnZlclBhdHRlcm4uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZp
bGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tjYW52YXMvZGV2aWNlL0tSZW5kZXJpbmdQYWludFNl
cnZlclBhdHRlcm4uY3BwLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjQKZGlmZiAtcCAtdSAtcjEu
NCBrY2FudmFzL2RldmljZS9LUmVuZGVyaW5nUGFpbnRTZXJ2ZXJQYXR0ZXJuLmNwcAotLS0ga2Nh
bnZhcy9kZXZpY2UvS1JlbmRlcmluZ1BhaW50U2VydmVyUGF0dGVybi5jcHAJMSBTZXAgMjAwNSAw
NzozMjo1MSAtMDAwMAkxLjQKKysrIGtjYW52YXMvZGV2aWNlL0tSZW5kZXJpbmdQYWludFNlcnZl
clBhdHRlcm4uY3BwCTYgU2VwIDIwMDUgMDk6NTg6NDggLTAwMDAKQEAgLTM1LDYgKzM1LDcgQEAg
cHVibGljOgogICAgICAgICB0aWxlID0gMDsKICAgICAgICAgeCA9IHkgPSB3aWR0aCA9IGhlaWdo
dCA9IDA7CiAgICAgICAgIHVzZUJvdW5kaW5nQm94TW9kZSA9IHRydWU7CisJCWxpc3RlbmVyID0g
MDsKICAgICB9CiAgICAgflByaXZhdGUoKSB7IGRlbGV0ZSB0aWxlOyB9CiAKQEAgLTQyLDkgKzQz
LDEwIEBAIHB1YmxpYzoKICAgICBLQ2FudmFzTWF0cml4IHBhdHRlcm5UcmFuc2Zvcm07CiAgICAg
ZmxvYXQgeCwgeSwgd2lkdGgsIGhlaWdodDsKICAgICBib29sIHVzZUJvdW5kaW5nQm94TW9kZTsK
KyAgICBLQ2FudmFzUmVzb3VyY2VMaXN0ZW5lciAqbGlzdGVuZXI7CiB9OwogCi1LUmVuZGVyaW5n
UGFpbnRTZXJ2ZXJQYXR0ZXJuOjpLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJQYXR0ZXJuKCkgOiBLUmVu
ZGVyaW5nUGFpbnRTZXJ2ZXIoKSwgS0NhbnZhc1Jlc291cmNlKCksIGQobmV3IFByaXZhdGUoKSkK
K0tSZW5kZXJpbmdQYWludFNlcnZlclBhdHRlcm46OktSZW5kZXJpbmdQYWludFNlcnZlclBhdHRl
cm4oKSA6IEtSZW5kZXJpbmdQYWludFNlcnZlcigpLCBkKG5ldyBQcml2YXRlKCkpCiB7CiB9CiAK
QEAgLTEyOCw2ICsxMzAsMTYgQEAgS0NQYWludFNlcnZlclR5cGUgS1JlbmRlcmluZ1BhaW50U2Vy
dmVyUAogICAgIHJldHVybiBQU19QQVRURVJOOwogfQogCitLQ2FudmFzUmVzb3VyY2VMaXN0ZW5l
ciAqS1JlbmRlcmluZ1BhaW50U2VydmVyUGF0dGVybjo6bGlzdGVuZXIoKSBjb25zdAoreworICAg
IHJldHVybiBkLT5saXN0ZW5lcjsKK30KKwordm9pZCBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJQYXR0
ZXJuOjpzZXRMaXN0ZW5lcihLQ2FudmFzUmVzb3VyY2VMaXN0ZW5lciAqbGlzdGVuZXIpCit7Cisg
ICAgZC0+bGlzdGVuZXIgPSBsaXN0ZW5lcjsKK30KKwogUVRleHRTdHJlYW0gJktSZW5kZXJpbmdQ
YWludFNlcnZlclBhdHRlcm46OmV4dGVybmFsUmVwcmVzZW50YXRpb24oUVRleHRTdHJlYW0gJnRz
KSBjb25zdAogewogICAgICB0cyA8PCAiW3R5cGU9UEFUVEVSTl0iCkluZGV4OiBrY2FudmFzL2Rl
dmljZS9LUmVuZGVyaW5nUGFpbnRTZXJ2ZXJQYXR0ZXJuLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTog
L2N2cy9yb290L1NWR1N1cHBvcnQva2NhbnZhcy9kZXZpY2UvS1JlbmRlcmluZ1BhaW50U2VydmVy
UGF0dGVybi5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjQKZGlmZiAtcCAtdSAtcjEuNCBrY2Fu
dmFzL2RldmljZS9LUmVuZGVyaW5nUGFpbnRTZXJ2ZXJQYXR0ZXJuLmgKLS0tIGtjYW52YXMvZGV2
aWNlL0tSZW5kZXJpbmdQYWludFNlcnZlclBhdHRlcm4uaAkxIFNlcCAyMDA1IDA3OjMyOjUxIC0w
MDAwCTEuNAorKysga2NhbnZhcy9kZXZpY2UvS1JlbmRlcmluZ1BhaW50U2VydmVyUGF0dGVybi5o
CTYgU2VwIDIwMDUgMDk6NTg6NDggLTAwMDAKQEAgLTIzLDE1ICsyMywxNCBAQAogI2lmbmRlZiBL
UmVuZGVyaW5nUGFpbnRTZXJ2ZXJQYXR0ZXJuX0gKICNkZWZpbmUgS1JlbmRlcmluZ1BhaW50U2Vy
dmVyUGF0dGVybl9ICiAKLSNpbmNsdWRlIDxrY2FudmFzL0tDYW52YXNSZXNvdXJjZXMuaD4KICNp
bmNsdWRlIDxrY2FudmFzL2RldmljZS9LUmVuZGVyaW5nUGFpbnRTZXJ2ZXIuaD4KKyNpbmNsdWRl
IDxrY2FudmFzL0tDYW52YXNSZXNvdXJjZUxpc3RlbmVyLmg+CiAKICNpbmNsdWRlIDxxcG9pbnQu
aD4KIAogY2xhc3MgS0NhbnZhc0ltYWdlOwogCi1jbGFzcyBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJQ
YXR0ZXJuIDogcHVibGljIEtSZW5kZXJpbmdQYWludFNlcnZlciwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwdWJsaWMgS0NhbnZhc1Jlc291cmNlCitjbGFzcyBLUmVuZGVy
aW5nUGFpbnRTZXJ2ZXJQYXR0ZXJuIDogcHVibGljIEtSZW5kZXJpbmdQYWludFNlcnZlcgogewog
cHVibGljOgogICAgIEtSZW5kZXJpbmdQYWludFNlcnZlclBhdHRlcm4oKTsKQEAgLTY0LDYgKzYz
LDggQEAgcHVibGljOgogICAgIEtDYW52YXNNYXRyaXggcGF0dGVyblRyYW5zZm9ybSgpIGNvbnN0
OwogICAgIHZvaWQgc2V0UGF0dGVyblRyYW5zZm9ybShjb25zdCBLQ2FudmFzTWF0cml4ICZtYXQp
OwogCisgICAgS0NhbnZhc1Jlc291cmNlTGlzdGVuZXIgKmxpc3RlbmVyKCkgY29uc3Q7CisgICAg
dm9pZCBzZXRMaXN0ZW5lcihLQ2FudmFzUmVzb3VyY2VMaXN0ZW5lciAqbGlzdGVuZXIpOwogICAg
IFFUZXh0U3RyZWFtICZleHRlcm5hbFJlcHJlc2VudGF0aW9uKFFUZXh0U3RyZWFtICYpIGNvbnN0
OwogCiBwcml2YXRlOgpJbmRleDoga2NhbnZhcy9kZXZpY2UvS1JlbmRlcmluZ1N0cm9rZVBhaW50
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tjYW52YXMv
ZGV2aWNlL0tSZW5kZXJpbmdTdHJva2VQYWludGVyLmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24g
MS40CmRpZmYgLXAgLXUgLXIxLjQga2NhbnZhcy9kZXZpY2UvS1JlbmRlcmluZ1N0cm9rZVBhaW50
ZXIuY3BwCi0tLSBrY2FudmFzL2RldmljZS9LUmVuZGVyaW5nU3Ryb2tlUGFpbnRlci5jcHAJMSBT
ZXAgMjAwNSAwNzozMjo1MSAtMDAwMAkxLjQKKysrIGtjYW52YXMvZGV2aWNlL0tSZW5kZXJpbmdT
dHJva2VQYWludGVyLmNwcAk2IFNlcCAyMDA1IDA5OjU4OjQ5IC0wMDAwCkBAIC0yMCw3ICsyMCw2
IEBACiAgICAgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCiAqLwogCi0jaW5jbHVkZSAiS0Nh
bnZhc1Jlc291cmNlcy5oIgogI2luY2x1ZGUgIktSZW5kZXJpbmdQYWludFNlcnZlci5oIgogI2lu
Y2x1ZGUgIktSZW5kZXJpbmdTdHJva2VQYWludGVyLmgiCiAKQEAgLTc2LDkgKzc1LDkgQEAgS1Jl
bmRlcmluZ1BhaW50U2VydmVyICpLUmVuZGVyaW5nU3Ryb2tlUAogCiB2b2lkIEtSZW5kZXJpbmdT
dHJva2VQYWludGVyOjpzZXRQYWludFNlcnZlcihLUmVuZGVyaW5nUGFpbnRTZXJ2ZXIgKnBzZXJ2
ZXIpCiB7CisgICAgc2V0RGlydHkoKTsKICAgICBpZihkLT5wc2VydmVyICYmIChkLT5wc2VydmVy
LT50eXBlKCkgPT0gUFNfU09MSUQgfHwgZC0+cHNlcnZlci0+dHlwZSgpID09IFBTX0lNQUdFKSkK
ICAgICAgICAgZGVsZXRlIGQtPnBzZXJ2ZXI7Ci0gICAgc2V0RGlydHkoKTsKICAgICBkLT5wc2Vy
dmVyID0gcHNlcnZlcjsKIH0KIApAQCAtMTYyLDEzICsxNjEsNyBAQCB2b2lkIEtSZW5kZXJpbmdT
dHJva2VQYWludGVyOjpzZXRPcGFjaXR5CiB2b2lkIEtSZW5kZXJpbmdTdHJva2VQYWludGVyOjpk
cmF3KEtSZW5kZXJpbmdEZXZpY2VDb250ZXh0ICpjb250ZXh0LCBjb25zdCBLQ2FudmFzQ29tbW9u
QXJncyAmYXJncykgY29uc3QKIHsKICAgICBpZihkLT5wc2VydmVyKQotICAgIHsKLSAgICAgICAg
S0NhbnZhc1Jlc291cmNlICpyZXMgPSBkeW5hbWljX2Nhc3Q8S0NhbnZhc1Jlc291cmNlICo+KGQt
PnBzZXJ2ZXIpOwotICAgICAgICBpZihyZXMgJiYgcmVzLT5saXN0ZW5lcigpKQotICAgICAgICAg
ICAgcmVzLT5saXN0ZW5lcigpLT5yZXNvdXJjZU5vdGlmaWNhdGlvbigpOwotCiAgICAgICAgIGQt
PnBzZXJ2ZXItPmRyYXcoY29udGV4dCwgYXJncywgQVBQTFlfVE9fU1RST0tFKTsKLSAgICB9CiB9
CiAKIGJvb2wgS1JlbmRlcmluZ1N0cm9rZVBhaW50ZXI6OmRpcnR5KCkgY29uc3QKSW5kZXg6IGtj
YW52YXMvZGV2aWNlL3F1YXJ0ei9LQ2FudmFzRmlsdGVyUXVhcnR6Lm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNT
IGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tjYW52YXMvZGV2aWNlL3F1YXJ0ei9LQ2FudmFz
RmlsdGVyUXVhcnR6Lm1tLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjYKZGlmZiAtcCAtdSAtcjEu
NiBrY2FudmFzL2RldmljZS9xdWFydHovS0NhbnZhc0ZpbHRlclF1YXJ0ei5tbQotLS0ga2NhbnZh
cy9kZXZpY2UvcXVhcnR6L0tDYW52YXNGaWx0ZXJRdWFydHoubW0JMjggQXVnIDIwMDUgMTA6NDg6
MjggLTAwMDAJMS42CisrKyBrY2FudmFzL2RldmljZS9xdWFydHovS0NhbnZhc0ZpbHRlclF1YXJ0
ei5tbQk2IFNlcCAyMDA1IDA5OjU4OjQ5IC0wMDAwCkBAIC05Miw3ICs5Miw3IEBAIHZvaWQgS0Nh
bnZhc0ZpbHRlclF1YXJ0ejo6cHJlcGFyZUZpbHRlcigKIHsKIAlpZiAoIUtSZW5kZXJpbmdEZXZp
Y2VRdWFydHo6OmZpbHRlcnNFbmFibGVkKCkpIHJldHVybjsKIAlpZiAobV9lZmZlY3RzLmlzRW1w
dHkoKSkgewotCQlOU0xvZyhAIldBUk5JTkc6IE5vIGVmZmVjdHMsIGlnbm9yaW5nIGZpbHRlci4i
KTsKKwkJTlNMb2coQCJXQVJOSU5HOiBObyBlZmZlY3RzLCBpZ25vcmluZyBmaWx0ZXIgKCVwKS4i
LCB0aGlzKTsKIAkJcmV0dXJuOwogCX0KIAlBU1NFUlQobV9zdG9yZWRDR0NvbnRleHQgPT0gTlVM
TCk7CkBAIC0yODQsNyArMjg0LDcgQEAgQ0lJbWFnZSAqS0NhbnZhc0ZpbHRlclF1YXJ0ejo6aW5w
dXRJbWFnZQogCiAjZGVmaW5lIEZFX1FVQVJUWl9DSEVDS19JTlBVVChpbnB1dCkgXAogCWlmICgh
aW5wdXQpIHsgXAotCQlOU0xvZyhAIkVSUk9SOiBDYW4ndCBhcHBseSBmaWx0ZXIgdy9vIGlucHV0
IGltYWdlLiIpOyBcCisJCU5TTG9nKEAiRVJST1I6IENhbid0IGFwcGx5IGZpbHRlciAoJXApIHcv
byBpbnB1dCBpbWFnZS4iLCB0aGlzKTsgXAogCQlyZXR1cm4gbmlsOyBcCiAJfQogCkluZGV4OiBr
Y2FudmFzL2RldmljZS9xdWFydHovS1JlbmRlcmluZ1BhaW50U2VydmVyR3JhZGllbnRRdWFydHou
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1NWR1N1cHBvcnQva2NhbnZhcy9kZXZp
Y2UvcXVhcnR6L0tSZW5kZXJpbmdQYWludFNlcnZlckdyYWRpZW50UXVhcnR6Lm1tLHYKcmV0cmll
dmluZyByZXZpc2lvbiAxLjMKZGlmZiAtcCAtdSAtcjEuMyBrY2FudmFzL2RldmljZS9xdWFydHov
S1JlbmRlcmluZ1BhaW50U2VydmVyR3JhZGllbnRRdWFydHoubW0KLS0tIGtjYW52YXMvZGV2aWNl
L3F1YXJ0ei9LUmVuZGVyaW5nUGFpbnRTZXJ2ZXJHcmFkaWVudFF1YXJ0ei5tbQkxOSBBdWcgMjAw
NSAyMTozNzo0MSAtMDAwMAkxLjMKKysrIGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9LUmVuZGVyaW5n
UGFpbnRTZXJ2ZXJHcmFkaWVudFF1YXJ0ei5tbQk2IFNlcCAyMDA1IDA5OjU4OjQ5IC0wMDAwCkBA
IC0xMDYsNyArMTA2LDYgQEAgc3RhdGljIHZvaWQgY2dHcmFkaWVudENhbGxiYWNrKHZvaWQgKmlu
ZgogICAgIGZsb2F0IGluVmFsdWUgPSBpblZhbHVlc1swXTsKICAgICAKICAgICBpZiAoIXN0b3Bz
Q291bnQpIHsKLSAgICAgICAgTlNMb2coQCJXYXJuaW5nLCBubyBncmFkaWVudCBzdG9wcywgYXNz
dW1pbmcgYmxhY2shIik7CiAgICAgICAgIG91dENvbG9yWzBdID0gMDsKICAgICAgICAgb3V0Q29s
b3JbMV0gPSAwOwogICAgICAgICBvdXRDb2xvclsyXSA9IDA7CkBAIC0xMTQsNyArMTEzLDYgQEAg
c3RhdGljIHZvaWQgY2dHcmFkaWVudENhbGxiYWNrKHZvaWQgKmluZgogICAgICAgICByZXR1cm47
CiAgICAgfSBlbHNlIGlmIChzdG9wc0NvdW50ID09IDEpIHsKICAgICAgICAgbWVtY3B5KG91dENv
bG9yLCBzdG9wc1swXS5jb2xvckFycmF5LCA0ICogc2l6ZW9mKGZsb2F0KSk7Ci0gICAgICAgIC8v
TlNMb2coQCJzaW5ndWxhciBzdG9wLCAlZiAtPiByOiAlZiBnOiAlZiBiOiAlZiBhOiAlZiIsIGlu
VmFsdWUsIG91dENvbG9yWzBdLCBvdXRDb2xvclsxXSwgb3V0Q29sb3JbMl0sIG91dENvbG9yWzNd
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKQEAgLTE1MCwxMiArMTQ4LDggQEAgc3Rh
dGljIHZvaWQgY2dHcmFkaWVudENhbGxiYWNrKHZvaWQgKmluZgogICAgICAgICB2ZWN0b3IgZmxv
YXQgdlJlc3VsdCA9IHZlY19tYWRkKHZQZXJjZW50LCB2TmV4dENvbG9yLCB2UHJldlJlc3VsdCk7
CiAgICAgICAgIHZlY19zdCh2UmVzdWx0LCAwLCBvdXRDb2xvcik7CiAjZW5kaWYKLSAgICAgICAg
CiAgICAgfQotICAgIAotICAgIC8vTlNMb2coQCIlZiAtPiByOiAlZiBnOiAlZiBiOiAlZiBhOiAl
ZiIsIGluVmFsdWUsIG91dENvbG9yWzBdLCBvdXRDb2xvclsxXSwgb3V0Q29sb3JbMl0sIG91dENv
bG9yWzNdKTsKLSAgICAKLSAgICAvLyBoYXZlIHRvIGhhbmRsZSB0aGUgc3ByZWFkTWV0aG9kKClz
IGhlcmUgU1BSRUFETUVUSE9EX1JFUEVBVCwgZXRjLgorICAgIC8vIEZJWE1FOiBoYXZlIHRvIGhh
bmRsZSB0aGUgc3ByZWFkTWV0aG9kKClzIGhlcmUgU1BSRUFETUVUSE9EX1JFUEVBVCwgZXRjLgog
fQogCiAKQEAgLTIwOCwxMSArMjAyLDkgQEAgc3RhdGljIENHU2hhZGluZ1JlZiBDR1NoYWRpbmdS
ZWZGb3JSYWRpYQogICAgIHJldHVybiBzaGFkaW5nOwogfQogCi0KIEtSZW5kZXJpbmdQYWludFNl
cnZlckdyYWRpZW50UXVhcnR6OjpLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJHcmFkaWVudFF1YXJ0eigp
IDoKIG1fc3RvcHNDYWNoZSgwKSwgbV9zdG9wc0NvdW50KDApLCBtX3NoYWRpbmdDYWNoZSgwKQog
ewotICAgIAogfQogCiBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJHcmFkaWVudFF1YXJ0ejo6fktSZW5k
ZXJpbmdQYWludFNlcnZlckdyYWRpZW50UXVhcnR6KCkKQEAgLTIyOCw2ICsyMjAsOSBAQCB2b2lk
IEtSZW5kZXJpbmdQYWludFNlcnZlckdyYWRpZW50UXVhcnR6CiAgICAgLy8gdGhpcyBpcyBsZWdh
Y3kgY29kZSwgcHJvYmFibHkgY291bGQgYmUgcmV3b3JrZWQuCiAgICAgaWYgKCFtX3N0b3BzQ2Fj
aGUpIHVwZGF0ZVF1YXJ0ekdyYWRpZW50U3RvcHNDYWNoZShzZXJ2ZXItPmdyYWRpZW50U3RvcHMo
KSk7CiAgICAgCisgICAgaWYgKCFtX3N0b3BzQ291bnQpCisgICAgICAgIE5TTG9nKEAiV2Fybmlu
Zywgbm8gZ3JhZGllbnQgc3RvcHMsIGdyYWRpZW50ICglcCkgd2lsbCBiZSBhbGwgYmxhY2shIiwg
dGhpcyk7CisgICAgCiAgICAgaWYgKHNlcnZlci0+dHlwZSgpID09IFBTX1JBRElBTF9HUkFESUVO
VCkKICAgICB7CiAgICAgICAgIGNvbnN0IEtSZW5kZXJpbmdQYWludFNlcnZlclJhZGlhbEdyYWRp
ZW50UXVhcnR6ICpyYWRpYWwgPSBzdGF0aWNfY2FzdDxjb25zdCBLUmVuZGVyaW5nUGFpbnRTZXJ2
ZXJSYWRpYWxHcmFkaWVudFF1YXJ0eiAqPihzZXJ2ZXIpOwpAQCAtMjkwLDYgKzI4NSw5IEBAIHZv
aWQgS1JlbmRlcmluZ1BhaW50U2VydmVyUmFkaWFsR3JhZGllbnQKIAogdm9pZCBLUmVuZGVyaW5n
UGFpbnRTZXJ2ZXJMaW5lYXJHcmFkaWVudFF1YXJ0ejo6ZHJhdyhLUmVuZGVyaW5nRGV2aWNlQ29u
dGV4dCAqcmVuZGVyaW5nQ29udGV4dCwgY29uc3QgS0NhbnZhc0NvbW1vbkFyZ3MgJmFyZ3MsIEtD
UGFpbnRUYXJnZXRUeXBlIHR5cGUpIGNvbnN0CiB7CisgICAgaWYobGlzdGVuZXIoKSkgLy8gdGhp
cyBzZWVtcyBsaWtlIGJhZCBkZXNpZ24gdG8gbWUsIHNob3VsZCBiZSBpbiBhIGNvbW1vbiBiYXNl
Y2xhc3MuIC0tIGVjcyA4LzYvMDUKKyAgICAgICAgbGlzdGVuZXIoKS0+cmVzb3VyY2VOb3RpZmlj
YXRpb24oKTsKKwogICAgIC8vIEZJWE1FOiB0b3RhbCBjb25zdCBIQUNLIQogICAgIC8vIFdlIG5l
ZWQgYSBob29rIHRvIGNhbGwgdGhpcyB3aGVuIHRoZSBncmFkaWVudCBnZXRzIHVwZGF0ZWQsIGJl
Zm9yZSBkcmF3bi4KICAgICBpZiAoIW1fc2hhZGluZ0NhY2hlKQpAQCAtMjk5LDcgKzI5NywxMCBA
QCB2b2lkIEtSZW5kZXJpbmdQYWludFNlcnZlckxpbmVhckdyYWRpZW50CiB9CiAKIHZvaWQgS1Jl
bmRlcmluZ1BhaW50U2VydmVyUmFkaWFsR3JhZGllbnRRdWFydHo6OmRyYXcoS1JlbmRlcmluZ0Rl
dmljZUNvbnRleHQgKnJlbmRlcmluZ0NvbnRleHQsIGNvbnN0IEtDYW52YXNDb21tb25BcmdzICZh
cmdzLCBLQ1BhaW50VGFyZ2V0VHlwZSB0eXBlKSBjb25zdAotewkKK3sKKyAgICBpZihsaXN0ZW5l
cigpKSAvLyB0aGlzIHNlZW1zIGxpa2UgYmFkIGRlc2lnbiB0byBtZSwgc2hvdWxkIGJlIGluIGEg
Y29tbW9uIGJhc2VjbGFzcy4gLS0gZWNzIDgvNi8wNQorICAgICAgICBsaXN0ZW5lcigpLT5yZXNv
dXJjZU5vdGlmaWNhdGlvbigpOworICAgICAgICAKICAgICAvLyBGSVhNRTogdG90YWwgY29uc3Qg
SEFDSyEKICAgICAvLyBXZSBuZWVkIGEgaG9vayB0byBjYWxsIHRoaXMgd2hlbiB0aGUgZ3JhZGll
bnQgZ2V0cyB1cGRhdGVkLCBiZWZvcmUgZHJhd24uCiAgICAgaWYgKCFtX3NoYWRpbmdDYWNoZSkK
SW5kZXg6IGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9LUmVuZGVyaW5nUGFpbnRTZXJ2ZXJRdWFydHou
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvU1ZHU3VwcG9ydC9rY2FudmFzL2Rldmlj
ZS9xdWFydHovS1JlbmRlcmluZ1BhaW50U2VydmVyUXVhcnR6LmgsdgpyZXRyaWV2aW5nIHJldmlz
aW9uIDEuMwpkaWZmIC1wIC11IC1yMS4zIGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9LUmVuZGVyaW5n
UGFpbnRTZXJ2ZXJRdWFydHouaAotLS0ga2NhbnZhcy9kZXZpY2UvcXVhcnR6L0tSZW5kZXJpbmdQ
YWludFNlcnZlclF1YXJ0ei5oCTEgU2VwIDIwMDUgMDc6MzI6NTUgLTAwMDAJMS4zCisrKyBrY2Fu
dmFzL2RldmljZS9xdWFydHovS1JlbmRlcmluZ1BhaW50U2VydmVyUXVhcnR6LmgJNiBTZXAgMjAw
NSAwOTo1ODo0OSAtMDAwMApAQCAtNjcsNyArNjcsNyBAQCBwdWJsaWM6CiBwdWJsaWM6CiAgICAg
Ly8gZHVlIHRvIGMgZnVuY3Rpb25zCiAgICAgUXVhcnR6R3JhZGllbnRTdG9wICptX3N0b3BzQ2Fj
aGU7Ci0gICAgaW50ICAgICAgICAgICAgICAgICAgICBtX3N0b3BzQ291bnQ7CisgICAgaW50ICAg
ICAgICAgICAgICAgICBtX3N0b3BzQ291bnQ7CiAKIHByb3RlY3RlZDoKICAgICB2b2lkIGludmFs
aWRhdGVDYWNoZXMoKTsKSW5kZXg6IGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9LUmVuZGVyaW5nUGFp
bnRTZXJ2ZXJRdWFydHoubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1NWR1N1cHBv
cnQva2NhbnZhcy9kZXZpY2UvcXVhcnR6L0tSZW5kZXJpbmdQYWludFNlcnZlclF1YXJ0ei5tbSx2
CnJldHJpZXZpbmcgcmV2aXNpb24gMS40CmRpZmYgLXAgLXUgLXIxLjQga2NhbnZhcy9kZXZpY2Uv
cXVhcnR6L0tSZW5kZXJpbmdQYWludFNlcnZlclF1YXJ0ei5tbQotLS0ga2NhbnZhcy9kZXZpY2Uv
cXVhcnR6L0tSZW5kZXJpbmdQYWludFNlcnZlclF1YXJ0ei5tbQkyMiBBdWcgMjAwNSAxMDo0NTox
NCAtMDAwMAkxLjQKKysrIGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9LUmVuZGVyaW5nUGFpbnRTZXJ2
ZXJRdWFydHoubW0JNiBTZXAgMjAwNSAwOTo1ODo1MCAtMDAwMApAQCAtODMsNiArODMsOSBAQCB2
b2lkIHBhdHRlcm5DYWxsYmFjayh2b2lkICppbmZvLCBDR0NvbnRlCiAKIHZvaWQgS1JlbmRlcmlu
Z1BhaW50U2VydmVyUGF0dGVyblF1YXJ0ejo6ZHJhdyhLUmVuZGVyaW5nRGV2aWNlQ29udGV4dCAq
cmVuZGVyaW5nQ29udGV4dCwgY29uc3QgS0NhbnZhc0NvbW1vbkFyZ3MgJmFyZ3MsIEtDUGFpbnRU
YXJnZXRUeXBlIHR5cGUpIGNvbnN0CiB7CisgICAgaWYobGlzdGVuZXIoKSkgLy8gdGhpcyBzZWVt
cyBsaWtlIGJhZCBkZXNpZ24gdG8gbWUsIHNob3VsZCBiZSBpbiBhIGNvbW1vbiBiYXNlY2xhc3Mu
IC0tIGVjcyA4LzYvMDUKKyAgICAgICAgbGlzdGVuZXIoKS0+cmVzb3VyY2VOb3RpZmljYXRpb24o
KTsKKwogCUtSZW5kZXJpbmdEZXZpY2VDb250ZXh0UXVhcnR6ICpxdWFydHpDb250ZXh0ID0gc3Rh
dGljX2Nhc3Q8S1JlbmRlcmluZ0RldmljZUNvbnRleHRRdWFydHogKj4ocmVuZGVyaW5nQ29udGV4
dCk7CiAJQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBxdWFydHpDb250ZXh0LT5jZ0NvbnRleHQoKTsK
IAlLUmVuZGVyaW5nU3R5bGUgKnN0eWxlID0gYXJncy5zdHlsZSgpOwpAQCAtMTY1LDUgKzE2OCw1
IEBAIHZvaWQgS1JlbmRlcmluZ1BhaW50U2VydmVyUGF0dGVyblF1YXJ0ejoKIAogdm9pZCBLUmVu
ZGVyaW5nUGFpbnRTZXJ2ZXJJbWFnZVF1YXJ0ejo6ZHJhdyhLUmVuZGVyaW5nRGV2aWNlQ29udGV4
dCAqcmVuZGVyaW5nQ29udGV4dCwgY29uc3QgS0NhbnZhc0NvbW1vbkFyZ3MgJmFyZ3MsIEtDUGFp
bnRUYXJnZXRUeXBlIHR5cGUpIGNvbnN0CiB7Ci0JTlNMb2coQCJLUmVuZGVyaW5nUGFpbnRTZXJ2
ZXJJbWFnZVF1YXJ0ejo6ZHJhdygpIG5vdCBpbXBsZW1lbnRlZCEiKTsKKyAgICAvLyBGSVhNRTog
Tk9UIElNUExFTUVOVEVECiB9CkluZGV4OiBrZG9tL0tET01TZXR0aW5ncy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQpSQ1MgZmlsZTogL2N2cy9yb290L1NWR1N1cHBvcnQva2RvbS9LRE9NU2V0dGluZ3MuY3BwLHYK
cmV0cmlldmluZyByZXZpc2lvbiAxLjQKZGlmZiAtcCAtdSAtcjEuNCBrZG9tL0tET01TZXR0aW5n
cy5jcHAKLS0tIGtkb20vS0RPTVNldHRpbmdzLmNwcAkyIFNlcCAyMDA1IDEwOjAyOjU5IC0wMDAw
CTEuNAorKysga2RvbS9LRE9NU2V0dGluZ3MuY3BwCTYgU2VwIDIwMDUgMDk6NTg6NTAgLTAwMDAK
QEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRlIDxrbWVzc2FnZWJveC5oPgogI2luY2x1ZGUgPGtn
bG9iYWxzZXR0aW5ncy5oPgogCi0jaW5jbHVkZSA8cXBhaXIuaD4KICNpbmNsdWRlIDxxcmVnZXhw
Lmg+CiAjaW5jbHVkZSA8cTN2YWx1ZXZlY3Rvci5oPgogI2luY2x1ZGUgPHFmb250ZGF0YWJhc2Uu
aD4KQEAgLTM4LDYgKzM3LDExIEBACiAKIHVzaW5nIG5hbWVzcGFjZSBLRE9NOwogCitRQ29sb3Ig
dHh0RGVmYXVsdChET01fREVGQVVMVF9UWFRfQ09MT1IpOworUUNvbG9yIGxua0RlZmF1bHQoRE9N
X0RFRkFVTFRfTE5LX0NPTE9SKTsKK1FDb2xvciB2bG5rRGVmYXVsdChET01fREVGQVVMVF9WTE5L
X0NPTE9SKTsKK1FDb2xvciBiYXNlRGVmYXVsdChET01fREVGQVVMVF9CQVNFX0NPTE9SKTsKKwog
LyoqCiAgKiBAaW50ZXJuYWwKICAqIENvbnRhaW5zIGFsbCBzZXR0aW5ncyB3aGljaCBhcmUgYm90
aCBhdmFpbGFibGUgZ2xvYmFsbHkgYW5kIHBlci1kb21haW4KQEAgLTI5MywxNiArMjk3LDE2IEBA
IHZvaWQgS0RPTVNldHRpbmdzOjppbml0KEtDb25maWcgKmNvbmZpZywKICAgICB7CiAgICAgICAg
IGNvbmZpZy0+c2V0R3JvdXAoIkdlbmVyYWwiKTsgLy8gZ3JvdXAgd2lsbCBiZSByZXN0b3JlZCBi
eSBjZ3MgYW55d2F5CiAgICAgICAgIGlmKHJlc2V0IHx8IGNvbmZpZy0+aGFzS2V5KCJmb3JlZ3Jv
dW5kIikpCi0gICAgICAgICAgICBkLT50ZXh0Q29sb3IgPSBjb25maWctPnJlYWRDb2xvckVudHJ5
KCJmb3JlZ3JvdW5kIiwgJkRPTV9ERUZBVUxUX1RYVF9DT0xPUik7CisgICAgICAgICAgICBkLT50
ZXh0Q29sb3IgPSBjb25maWctPnJlYWRDb2xvckVudHJ5KCJmb3JlZ3JvdW5kIiwgJnR4dERlZmF1
bHQpOwogCiAgICAgICAgIGlmKHJlc2V0IHx8IGNvbmZpZy0+aGFzS2V5KCJsaW5rQ29sb3IiKSkK
LSAgICAgICAgICAgIGQtPmxpbmtDb2xvciA9IGNvbmZpZy0+cmVhZENvbG9yRW50cnkoImxpbmtD
b2xvciIsICZET01fREVGQVVMVF9MTktfQ09MT1IpOworICAgICAgICAgICAgZC0+bGlua0NvbG9y
ID0gY29uZmlnLT5yZWFkQ29sb3JFbnRyeSgibGlua0NvbG9yIiwgJmxua0RlZmF1bHQpOwogCiAg
ICAgICAgIGlmKHJlc2V0IHx8IGNvbmZpZy0+aGFzS2V5KCJ2aXNpdGVkTGlua0NvbG9yIikpCi0g
ICAgICAgICAgICBkLT52TGlua0NvbG9yID0gY29uZmlnLT5yZWFkQ29sb3JFbnRyeSgidmlzaXRl
ZExpbmtDb2xvciIsICZET01fREVGQVVMVF9WTE5LX0NPTE9SKTsKKyAgICAgICAgICAgIGQtPnZM
aW5rQ29sb3IgPSBjb25maWctPnJlYWRDb2xvckVudHJ5KCJ2aXNpdGVkTGlua0NvbG9yIiwgJnZs
bmtEZWZhdWx0KTsKIAogICAgICAgICBpZihyZXNldCB8fCBjb25maWctPmhhc0tleSgiYmFja2dy
b3VuZCIpKQotICAgICAgICAgICAgZC0+YmFzZUNvbG9yID0gY29uZmlnLT5yZWFkQ29sb3JFbnRy
eSgiYmFja2dyb3VuZCIsICZET01fREVGQVVMVF9CQVNFX0NPTE9SKTsKKyAgICAgICAgICAgIGQt
PmJhc2VDb2xvciA9IGNvbmZpZy0+cmVhZENvbG9yRW50cnkoImJhY2tncm91bmQiLCAmYmFzZURl
ZmF1bHQpOwogICAgIH0KIAogICAgIGlmKHJlc2V0IHx8IGNvbmZpZy0+aGFzR3JvdXAoIkphdmEv
SmF2YVNjcmlwdCBTZXR0aW5ncyIpKQpAQCAtNzM5LDcgKzc0Myw3IEBAIEtET01TZXR0aW5nczo6
S0phdmFTY3JpcHRBZHZpY2UgS0RPTVNldHQKIHsKICAgICBLSmF2YVNjcmlwdEFkdmljZSByZXQg
PSBLSmF2YVNjcmlwdER1bm5vOwogCi0gICAgaWYoIXN0cikKKyAgICBpZihzdHIuaXNOdWxsKCkp
CiAgICAgICAgIHJldCA9IEtKYXZhU2NyaXB0RHVubm87CiAKICAgICBpZihzdHIubG93ZXIoKSA9
PSBRU3RyaW5nOjpmcm9tTGF0aW4xKCJhY2NlcHQiKSkKSW5kZXg6IGtkb20vU2hhcmVkLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1NWR1N1cHBvcnQva2RvbS9TaGFyZWQuaCx2CnJl
dHJpZXZpbmcgcmV2aXNpb24gMS41CmRpZmYgLXAgLXUgLXIxLjUga2RvbS9TaGFyZWQuaAotLS0g
a2RvbS9TaGFyZWQuaAkxIFNlcCAyMDA1IDA3OjMyOjU3IC0wMDAwCTEuNQorKysga2RvbS9TaGFy
ZWQuaAk2IFNlcCAyMDA1IDA5OjU4OjUwIC0wMDAwCkBAIC00MywxMiArNDMsOSBAQCBuYW1lc3Bh
Y2UgS0RPTQogICAgIHRlbXBsYXRlPGNsYXNzIFQ+CiAgICAgaW5saW5lIHZvaWQgS0RPTV9TQUZF
X1NFVChUIComYSwgVCAqYikKICAgICB7Ci0gICAgICAgIGlmKGEgIT0gYikKLSAgICAgICAgewot
ICAgICAgICAgICAgaWYoYSkgYS0+ZGVyZWYoKTsKLSAgICAgICAgICAgIGEgPSBiOwotICAgICAg
ICAgICAgaWYoYSkgYS0+cmVmKCk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKGIpIGItPnJlZigp
OworICAgICAgICBpZiAoYSkgYS0+ZGVyZWYoKTsKKyAgICAgICAgYSA9IGI7CiAgICAgfQogfTsK
IApJbmRleDoga2RvbS9rZG9tLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1NWR1N1
cHBvcnQva2RvbS9rZG9tLmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNQpkaWZmIC1wIC11IC1y
MS41IGtkb20va2RvbS5oCi0tLSBrZG9tL2tkb20uaAkxIFNlcCAyMDA1IDA3OjMyOjU3IC0wMDAw
CTEuNQorKysga2RvbS9rZG9tLmgJNiBTZXAgMjAwNSAwOTo1ODo1MSAtMDAwMApAQCAtMzksNDkg
KzM5LDQ5IEBAIG5hbWVzcGFjZSBLRE9NCiAgICAgICovCiAgICAgZW51bSBOb2RlVHlwZQogICAg
IHsKLSAgICAgICAgRUxFTUVOVF9OT0RFID0gMSwKLSAgICAgICAgQVRUUklCVVRFX05PREUgPSAy
LAotICAgICAgICBURVhUX05PREUgPSAzLAotICAgICAgICBDREFUQV9TRUNUSU9OX05PREUgPSA0
LAotICAgICAgICBFTlRJVFlfUkVGRVJFTkNFX05PREUgPSA1LAotICAgICAgICBFTlRJVFlfTk9E
RSA9IDYsCisgICAgICAgIEVMRU1FTlRfTk9ERSAgICAgICAgICAgICAgICA9IDEsCisgICAgICAg
IEFUVFJJQlVURV9OT0RFICAgICAgICAgICAgICA9IDIsCisgICAgICAgIFRFWFRfTk9ERSAgICAg
ICAgICAgICAgICAgICA9IDMsCisgICAgICAgIENEQVRBX1NFQ1RJT05fTk9ERSAgICAgICAgICA9
IDQsCisgICAgICAgIEVOVElUWV9SRUZFUkVOQ0VfTk9ERSAgICAgICA9IDUsCisgICAgICAgIEVO
VElUWV9OT0RFICAgICAgICAgICAgICAgICA9IDYsCiAgICAgICAgIFBST0NFU1NJTkdfSU5TVFJV
Q1RJT05fTk9ERSA9IDcsCi0gICAgICAgIENPTU1FTlRfTk9ERSA9IDgsCi0gICAgICAgIERPQ1VN
RU5UX05PREUgPSA5LAotICAgICAgICBET0NVTUVOVF9UWVBFX05PREUgPSAxMCwKLSAgICAgICAg
RE9DVU1FTlRfRlJBR01FTlRfTk9ERSA9IDExLAotICAgICAgICBOT1RBVElPTl9OT0RFID0gMTIK
KyAgICAgICAgQ09NTUVOVF9OT0RFICAgICAgICAgICAgICAgID0gOCwKKyAgICAgICAgRE9DVU1F
TlRfTk9ERSAgICAgICAgICAgICAgID0gOSwKKyAgICAgICAgRE9DVU1FTlRfVFlQRV9OT0RFICAg
ICAgICAgID0gMTAsCisgICAgICAgIERPQ1VNRU5UX0ZSQUdNRU5UX05PREUgICAgICA9IDExLAor
ICAgICAgICBOT1RBVElPTl9OT0RFICAgICAgICAgICAgICAgPSAxMgogICAgIH07CiAKICAgICBl
bnVtIEV4Y2VwdGlvbkNvZGUKICAgICB7Ci0gICAgICAgIElOREVYX1NJWkVfRVJSID0gMSwKLSAg
ICAgICAgRE9NU1RSSU5HX1NJWkVfRVJSID0gMiwKLSAgICAgICAgSElFUkFSQ0hZX1JFUVVFU1Rf
RVJSID0gMywKLSAgICAgICAgV1JPTkdfRE9DVU1FTlRfRVJSID0gNCwKLSAgICAgICAgSU5WQUxJ
RF9DSEFSQUNURVJfRVJSID0gNSwKLSAgICAgICAgTk9fREFUQV9BTExPV0VEX0VSUiA9IDYsCisg
ICAgICAgIElOREVYX1NJWkVfRVJSICAgICAgICAgICAgICA9IDEsCisgICAgICAgIERPTVNUUklO
R19TSVpFX0VSUiAgICAgICAgICA9IDIsCisgICAgICAgIEhJRVJBUkNIWV9SRVFVRVNUX0VSUiAg
ICAgICA9IDMsCisgICAgICAgIFdST05HX0RPQ1VNRU5UX0VSUiAgICAgICAgICA9IDQsCisgICAg
ICAgIElOVkFMSURfQ0hBUkFDVEVSX0VSUiAgICAgICA9IDUsCisgICAgICAgIE5PX0RBVEFfQUxM
T1dFRF9FUlIgICAgICAgICA9IDYsCiAgICAgICAgIE5PX01PRElGSUNBVElPTl9BTExPV0VEX0VS
UiA9IDcsCi0gICAgICAgIE5PVF9GT1VORF9FUlIgPSA4LAotICAgICAgICBOT1RfU1VQUE9SVEVE
X0VSUiA9IDksCi0gICAgICAgIElOVVNFX0FUVFJJQlVURV9FUlIgPSAxMCwKLSAgICAgICAgSU5W
QUxJRF9TVEFURV9FUlIgPSAxMSwKLSAgICAgICAgU1lOVEFYX0VSUiA9IDEyLAotICAgICAgICBJ
TlZBTElEX01PRElGSUNBVElPTl9FUlIgPSAxMywKLSAgICAgICAgTkFNRVNQQUNFX0VSUiA9IDE0
LAotICAgICAgICBJTlZBTElEX0FDQ0VTU19FUlIgPSAxNSwKLSAgICAgICAgVkFMSURBVElPTl9F
UlIgPSAxNiwgICAgLy8gRE9NMwotICAgICAgICBUWVBFX01JU01BVENIX0VSUiA9IDE3ICAgIC8v
IERPTTMKKyAgICAgICAgTk9UX0ZPVU5EX0VSUiAgICAgICAgICAgICAgID0gOCwKKyAgICAgICAg
Tk9UX1NVUFBPUlRFRF9FUlIgICAgICAgICAgID0gOSwKKyAgICAgICAgSU5VU0VfQVRUUklCVVRF
X0VSUiAgICAgICAgID0gMTAsCisgICAgICAgIElOVkFMSURfU1RBVEVfRVJSICAgICAgICAgICA9
IDExLAorICAgICAgICBTWU5UQVhfRVJSICAgICAgICAgICAgICAgICAgPSAxMiwKKyAgICAgICAg
SU5WQUxJRF9NT0RJRklDQVRJT05fRVJSICAgID0gMTMsCisgICAgICAgIE5BTUVTUEFDRV9FUlIg
ICAgICAgICAgICAgICA9IDE0LAorICAgICAgICBJTlZBTElEX0FDQ0VTU19FUlIgICAgICAgICAg
PSAxNSwKKyAgICAgICAgVkFMSURBVElPTl9FUlIgICAgICAgICAgICAgID0gMTYsICAgLy8gRE9N
MworICAgICAgICBUWVBFX01JU01BVENIX0VSUiAgICAgICAgICAgPSAxNyAgICAvLyBET00zCiAg
ICAgfTsKIAogICAgIGVudW0gRG9jdW1lbnRQb3NpdGlvbgogICAgIHsKLSAgICAgICAgRE9DVU1F
TlRfUE9TSVRJT05fRElTQ09OTkVDVEVEICAgICAgICAgICAgICAgID0gMHgwMSwKLSAgICAgICAg
RE9DVU1FTlRfUE9TSVRJT05fUFJFQ0VESU5HICAgICAgICAgICAgICAgICAgICA9IDB4MDIsCi0g
ICAgICAgIERPQ1VNRU5UX1BPU0lUSU9OX0ZPTExPV0lORyAgICAgICAgICAgICAgICAgICAgPSAw
eDA0LAotICAgICAgICBET0NVTUVOVF9QT1NJVElPTl9DT05UQUlOUyAgICAgICAgICAgICAgICAg
ICAgPSAweDA4LAotICAgICAgICBET0NVTUVOVF9QT1NJVElPTl9DT05UQUlORURfQlkgICAgICAg
ICAgICAgICAgPSAweDEwLAotICAgICAgICBET0NVTUVOVF9QT1NJVElPTl9JTVBMRU1FTlRBVElP
Tl9TUEVDSUZJQyAgICA9IDB4MjAKKyAgICAgICAgRE9DVU1FTlRfUE9TSVRJT05fRElTQ09OTkVD
VEVEICAgICAgICAgICAgICA9IDB4MDEsCisgICAgICAgIERPQ1VNRU5UX1BPU0lUSU9OX1BSRUNF
RElORyAgICAgICAgICAgICAgICAgPSAweDAyLAorICAgICAgICBET0NVTUVOVF9QT1NJVElPTl9G
T0xMT1dJTkcgICAgICAgICAgICAgICAgID0gMHgwNCwKKyAgICAgICAgRE9DVU1FTlRfUE9TSVRJ
T05fQ09OVEFJTlMgICAgICAgICAgICAgICAgICA9IDB4MDgsCisgICAgICAgIERPQ1VNRU5UX1BP
U0lUSU9OX0NPTlRBSU5FRF9CWSAgICAgICAgICAgICAgPSAweDEwLAorICAgICAgICBET0NVTUVO
VF9QT1NJVElPTl9JTVBMRU1FTlRBVElPTl9TUEVDSUZJQyAgID0gMHgyMAogICAgIH07CiAKICAg
ICBlbnVtIERlcml2YXRpb25NZXRob2RzCkBAIC05NCwyNCArOTQsMjQgQEAgbmFtZXNwYWNlIEtE
T00KICAgICAKICAgICBlbnVtCiAgICAgewotICAgICAgICBGRUFUVVJFX0NBTk9OSUNBTF9GT1JN
ICAgICAgICAgICAgICAgICAgICA9IDB4MDAwMDAxLAotICAgICAgICBGRUFUVVJFX0NEQVRBX1NF
Q1RJT05TICAgICAgICAgICAgICAgICAgICA9IDB4MDAwMDAyLAorICAgICAgICBGRUFUVVJFX0NB
Tk9OSUNBTF9GT1JNICAgICAgICAgICAgICAgICAgPSAweDAwMDAwMSwKKyAgICAgICAgRkVBVFVS
RV9DREFUQV9TRUNUSU9OUyAgICAgICAgICAgICAgICAgID0gMHgwMDAwMDIsCiAgICAgICAgIEZF
QVRVUkVfQ09NTUVOVFMgICAgICAgICAgICAgICAgICAgICAgICA9IDB4MDAwMDA0LAotICAgICAg
ICBGRUFUVVJFX0RBVEFUWVBFX05PUk1BTElaQVRJT04gICAgICAgICAgICA9IDB4MDAwMDA4LAor
ICAgICAgICBGRUFUVVJFX0RBVEFUWVBFX05PUk1BTElaQVRJT04gICAgICAgICAgPSAweDAwMDAw
OCwKICAgICAgICAgRkVBVFVSRV9FTlRJVElFUyAgICAgICAgICAgICAgICAgICAgICAgID0gMHgw
MDAwMTAsCi0gICAgICAgIEZFQVRVUkVfV0VMTF9GT1JNRUQgICAgICAgICAgICAgICAgICAgICAg
ICA9IDB4MDAwMDIwLAotICAgICAgICBGRUFUVVJFX05BTUVTUEFDRVMgICAgICAgICAgICAgICAg
ICAgICAgICA9IDB4MDAwMDQwLAotICAgICAgICBGRUFUVVJFX05BTUVTUEFDRV9ERUNMQVJBVElP
TlMgICAgICAgICAgICA9IDB4MDAwMDgwLAorICAgICAgICBGRUFUVVJFX1dFTExfRk9STUVEICAg
ICAgICAgICAgICAgICAgICAgPSAweDAwMDAyMCwKKyAgICAgICAgRkVBVFVSRV9OQU1FU1BBQ0VT
ICAgICAgICAgICAgICAgICAgICAgID0gMHgwMDAwNDAsCisgICAgICAgIEZFQVRVUkVfTkFNRVNQ
QUNFX0RFQ0xBUkFUSU9OUyAgICAgICAgICA9IDB4MDAwMDgwLAogICAgICAgICBGRUFUVVJFX05P
Uk1BTElaRV9DSEFSQUNURVJTICAgICAgICAgICAgPSAweDAwMDEwMCwKICAgICAgICAgRkVBVFVS
RV9TUExJVF9DREFUQV9TRUNUSU9OUyAgICAgICAgICAgID0gMHgwMDAyMDAsCiAgICAgICAgIEZF
QVRVUkVfVkFMSURBVEUgICAgICAgICAgICAgICAgICAgICAgICA9IDB4MDAwNDAwLAotICAgICAg
ICBGRUFUVVJFX1ZBTElEQVRFX0lGX1NDSEVNQSAgICAgICAgICAgICAgICA9IDB4MDAwODAwLAot
ICAgICAgICBGRUFUVVJFX1dISVRFU1BBQ0VfSU5fRUxFTUVOVF9DT05URU5UICAgID0gMHgwMDEw
MDAsCi0gICAgICAgIEZFQVRVUkVfQ0hFQ0tfQ0hBUkFDVEVSX05PUk1BTElaQVRJT04gICAgPSAw
eDAwMjAwMCwKKyAgICAgICAgRkVBVFVSRV9WQUxJREFURV9JRl9TQ0hFTUEgICAgICAgICAgICAg
ID0gMHgwMDA4MDAsCisgICAgICAgIEZFQVRVUkVfV0hJVEVTUEFDRV9JTl9FTEVNRU5UX0NPTlRF
TlQgICA9IDB4MDAxMDAwLAorICAgICAgICBGRUFUVVJFX0NIRUNLX0NIQVJBQ1RFUl9OT1JNQUxJ
WkFUSU9OICAgPSAweDAwMjAwMCwKIAogICAgICAgICAvLyBMU1BhcnNlciBzcGVjaWZpYwotICAg
ICAgICBGRUFUVVJFX0NIQVJTRVRfT1ZFUlJJREVTX1hNTF9FTkNPRElORyAgICA9IDB4MDA0MDAw
LAotICAgICAgICBGRUFUVVJFX0RJU0FMTE9XX0RPQ1RZUEUgICAgICAgICAgICAgICAgPSAweDAw
ODAwMCwKKyAgICAgICAgRkVBVFVSRV9DSEFSU0VUX09WRVJSSURFU19YTUxfRU5DT0RJTkcgICA9
IDB4MDA0MDAwLAorICAgICAgICBGRUFUVVJFX0RJU0FMTE9XX0RPQ1RZUEUgICAgICAgICAgICAg
ICAgID0gMHgwMDgwMDAsCiAgICAgICAgIEZFQVRVUkVfSUdOT1JFX1VOS05PV05fQ0QgICAgICAg
ICAgICAgICAgPSAweDAxMDAwMCwKICAgICAgICAgRkVBVFVSRV9TVVBQT1JURURfTUVESUFfVFlQ
RV9PTkxZICAgICAgICA9IDB4MDIwMDAwLAogCkluZGV4OiBrZG9tL2JpbmRpbmdzL0lETFBhcnNl
ci5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvU1ZHU3VwcG9ydC9rZG9tL2JpbmRp
bmdzL0lETFBhcnNlci5wbSx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xCmRpZmYgLXAgLXUgLXIx
LjEga2RvbS9iaW5kaW5ncy9JRExQYXJzZXIucG0KLS0tIGtkb20vYmluZGluZ3MvSURMUGFyc2Vy
LnBtCTI1IEF1ZyAyMDA1IDA4OjE2OjA2IC0wMDAwCTEuMQorKysga2RvbS9iaW5kaW5ncy9JRExQ
YXJzZXIucG0JNiBTZXAgMjAwNSAwOTo1ODo1MSAtMDAwMApAQCAtNDIsNyArNDIsNyBAQCBzdWIg
UGFyc2UKIAlteSAkdXJsID0gc2hpZnQ7CiAKIAlwcmludCAiIHwgKioqIFN0YXJ0aW5nIHRvIHBh
cnNlICR1cmwuLi5cbiB8XG4iIGlmKCEkYmVRdWlldCk7Ci0Jb3BlbihGSUxFLCAiPCR1cmwiKSB8
fCBkaWUgIkNvdWxkbid0IG9wZW4gcmVxdWVzdGVkIGZpbGUhIjsKKwlvcGVuKEZJTEUsICI8JHVy
bCIpIHx8IGRpZSAiQ291bGRuJ3Qgb3BlbiByZXF1ZXN0ZWQgZmlsZSAoZmlsZTogJHVybCkhIjsK
IAlteSBAZG9jdW1lbnRDb250ZW50ID0gPEZJTEU+OwogCWNsb3NlKEZJTEUpOwogCkBAIC0xODcs
NyArMTg3LDEyIEBAIHN1YiBQYXJzZUludGVyZmFjZQogCQkJCW15ICRhdHRyaWJ1dGVQdHJGbGFn
ID0gKGRlZmluZWQoJDIpID8gJDIgOiAiICIpOyBjaG9wKCRhdHRyaWJ1dGVQdHJGbGFnKTsKIAkJ
CQlteSAkYXR0cmlidXRlRGF0YVR5cGUgPSAoZGVmaW5lZCgkMykgPyAkMyA6IGRpZSgiUGFyc2lu
ZyBlcnJvciFcblNvdXJjZTpcbiRsaW5lXG4pIikpOwogCQkJCW15ICRhdHRyaWJ1dGVEYXRhTmFt
ZSA9IChkZWZpbmVkKCQ0KSA/ICQ0IDogZGllKCJQYXJzaW5nIGVycm9yIVxuU291cmNlOlxuJGxp
bmVcbikiKSk7CisJCQkJCQorCQkJCSgnJyA9fiAvXi8pOyAjIFJlc2V0IHZhcmlhYmxlcyBuZWVk
ZWQgZm9yIHJlZ2V4cCBtYXRjaGluZwogCQkJCQorCQkJCSRsaW5lID1+IC8kSURMU3RydWN0dXJl
OjpyYWlzZXNTZWxlY3Rvci87CisJCQkJbXkgJGF0dHJpYnV0ZUV4Y2VwdGlvbiA9IChkZWZpbmVk
KCQxKSA/ICQxIDogIiIpOworCQkJCiAJCQkJbXkgJG5ld0RhdGFOb2RlID0gbmV3IGRvbUF0dHJp
YnV0ZSgpOwogCQkJCSRuZXdEYXRhTm9kZS0+dHlwZSgkYXR0cmlidXRlVHlwZSk7CiAJCQkJJG5l
d0RhdGFOb2RlLT5zaWduYXR1cmUobmV3IGRvbVNpZ25hdHVyZSgpKTsKQEAgLTE5OSw5ICsyMDQs
MTMgQEAgc3ViIFBhcnNlSW50ZXJmYWNlCiAJCQkJbXkgJGFycmF5UmVmID0gJGRhdGFOb2RlLT5h
dHRyaWJ1dGVzOwogCQkJCXB1c2goQCRhcnJheVJlZiwgJG5ld0RhdGFOb2RlKTsKIAotCQkJCXBy
aW50ICIgIHwgIHw+ICBBdHRyaWJ1dGU7IFRZUEUgXCIkYXR0cmlidXRlVHlwZVwiIERBVEEgTkFN
RSBcIiRhdHRyaWJ1dGVEYXRhTmFtZVwiIERBVEEgVFlQRSBcIiRhdHRyaWJ1dGVEYXRhVHlwZVwi
IFBUUiBGTEFHIFwiJGF0dHJpYnV0ZVB0ckZsYWdcIlxuIiBpZighJGJlUXVpZXQpOworCQkJCXBy
aW50ICIgIHwgIHw+ICBBdHRyaWJ1dGU7IFRZUEUgXCIkYXR0cmlidXRlVHlwZVwiIERBVEEgTkFN
RSBcIiRhdHRyaWJ1dGVEYXRhTmFtZVwiIERBVEEgVFlQRSBcIiRhdHRyaWJ1dGVEYXRhVHlwZVwi
IEVYQ0VQVElPTj8gXCIkYXR0cmlidXRlRXhjZXB0aW9uXCIgUFRSIEZMQUcgXCIkYXR0cmlidXRl
UHRyRmxhZ1wiXG4iIGlmKCEkYmVRdWlldCk7CisKKwkJCQkkYXR0cmlidXRlRXhjZXB0aW9uID1+
IHMvXHMrLy9nOworCQkJCUB7JG5ld0RhdGFOb2RlLT5yYWlzZXNFeGNlcHRpb25zfSA9IHNwbGl0
KC8sLywgJGF0dHJpYnV0ZUV4Y2VwdGlvbik7CiAJCQl9IGVsc2lmKCgkbGluZSAhfiBzL15ccyok
Ly9nKSBhbmQgKCRsaW5lICF+IC9eXHMrY29uc3QvKSkgewogCQkJCSRsaW5lID1+IC8kSURMU3Ry
dWN0dXJlOjppbnRlcmZhY2VNZXRob2RTZWxlY3Rvci87CisKIAkJCQlteSAkbWV0aG9kUHRyRmxh
ZyA9IChkZWZpbmVkKCQxKSA/ICQxIDogIiAiKTsgY2hvcCgkbWV0aG9kUHRyRmxhZyk7CiAJCQkJ
bXkgJG1ldGhvZFR5cGUgPSAoZGVmaW5lZCgkMikgPyAkMiA6IGRpZSgiUGFyc2luZyBlcnJvciFc
blNvdXJjZTpcbiRsaW5lXG4pIikpOwogCQkJCW15ICRtZXRob2ROYW1lID0gKGRlZmluZWQoJDMp
ID8gJDMgOiBkaWUoIlBhcnNpbmcgZXJyb3IhXG5Tb3VyY2U6XG4kbGluZVxuKSIpKTsKQEAgLTIw
OSw3ICsyMTgsNyBAQCBzdWIgUGFyc2VJbnRlcmZhY2UKIAkJCQkKIAkJCQkoJycgPX4gL14vKTsg
IyBSZXNldCB2YXJpYWJsZXMgbmVlZGVkIGZvciByZWdleHAgbWF0Y2hpbmcKIAkJCQkKLQkJCQkk
bGluZSA9fiAvJElETFN0cnVjdHVyZTo6aW50ZXJmYWNlRXhjZXB0aW9uU2VsZWN0b3IvOworCQkJ
CSRsaW5lID1+IC8kSURMU3RydWN0dXJlOjpyYWlzZXNTZWxlY3Rvci87CiAJCQkJbXkgJG1ldGhv
ZEV4Y2VwdGlvbiA9IChkZWZpbmVkKCQxKSA/ICQxIDogIiIpOwogCiAJCQkJbXkgJG5ld0RhdGFO
b2RlID0gbmV3IGRvbUZ1bmN0aW9uKCk7CkBAIC0yMjEsNiArMjMwLDkgQEAgc3ViIFBhcnNlSW50
ZXJmYWNlCiAKIAkJCQlwcmludCAiICB8ICB8LSAgTWV0aG9kOyBUWVBFIFwiJG1ldGhvZFR5cGVc
IiBOQU1FIFwiJG1ldGhvZE5hbWVcIiBFWENFUFRJT04/IFwiJG1ldGhvZEV4Y2VwdGlvblwiIFBU
UiBGTEFHIFwiJG1ldGhvZFB0ckZsYWdcIlxuIiBpZighJGJlUXVpZXQpOwogCisJCQkJJG1ldGhv
ZEV4Y2VwdGlvbiA9fiBzL1xzKy8vZzsKKwkJCQlAeyRuZXdEYXRhTm9kZS0+cmFpc2VzRXhjZXB0
aW9uc30gPSBzcGxpdCgvLC8sICRtZXRob2RFeGNlcHRpb24pOworCiAJCQkJbXkgQHBhcmFtcyA9
IHNwbGl0KC8sLywgJG1ldGhvZFNpZ25hdHVyZSk7CiAJCQkJZm9yZWFjaChAcGFyYW1zKSB7CiAJ
CQkJCW15ICRsaW5lID0gJF87CkluZGV4OiBrZG9tL2JpbmRpbmdzL0lETFN0cnVjdHVyZS5wbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvU1ZHU3VwcG9ydC9rZG9tL2JpbmRpbmdzL0lE
TFN0cnVjdHVyZS5wbSx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xCmRpZmYgLXAgLXUgLXIxLjEg
a2RvbS9iaW5kaW5ncy9JRExTdHJ1Y3R1cmUucG0KLS0tIGtkb20vYmluZGluZ3MvSURMU3RydWN0
dXJlLnBtCTI1IEF1ZyAyMDA1IDA4OjE2OjA2IC0wMDAwCTEuMQorKysga2RvbS9iaW5kaW5ncy9J
RExTdHJ1Y3R1cmUucG0JNiBTZXAgMjAwNSAwOTo1ODo1MSAtMDAwMApAQCAtMTUsNjcgKzE1LDcy
IEBAIHN0cnVjdCggaWRsRG9jdW1lbnQgPT4gewogCiAjIFVzZWQgdG8gcmVwcmVzZW50ICdpbnRl
cmZhY2UnIC8gJ2V4Y2VwdGlvbicgYmxvY2tzCiBzdHJ1Y3QoIGRvbUNsYXNzID0+IHsKLQkJbmFt
ZSA9PiAnJCcsCQkjIENsYXNzIGlkZW50aWZpZXIgKHdpdGhvdXQgbW9kdWxlKQotCQlwYXJlbnRz
ID0+ICdAJywJCSMgTGlzdCBvZiBzdHJpbmdzCi0JCWNvbnN0YW50cyA9PiAnQCcsCSMgTGlzdCBv
ZiAnZG9tQ29uc3RhbnQnCi0JCWZ1bmN0aW9ucyA9PiAnQCcsCSMgTGlzdCBvZiAnZG9tRnVuY3Rp
b24nCi0JCWF0dHJpYnV0ZXMgPT4gJ0AnLAkjIExpc3Qgb2YgJ2RvbUF0dHJpYnV0ZScKLQkJZG9j
dW1lbnRhdGlvbiA9PiAnJCcsCisJCW5hbWUgPT4gJyQnLAkJCSMgQ2xhc3MgaWRlbnRpZmllciAo
d2l0aG91dCBtb2R1bGUpCisJCXBhcmVudHMgPT4gJ0AnLAkJCSMgTGlzdCBvZiBzdHJpbmdzCisJ
CWNvbnN0YW50cyA9PiAnQCcsCQkjIExpc3Qgb2YgJ2RvbUNvbnN0YW50JworCQlmdW5jdGlvbnMg
PT4gJ0AnLAkJIyBMaXN0IG9mICdkb21GdW5jdGlvbicKKwkJYXR0cmlidXRlcyA9PiAnQCcsCQkj
IExpc3Qgb2YgJ2RvbUF0dHJpYnV0ZScKKwkJZG9jdW1lbnRhdGlvbiA9PiAnJCcsCSMgRXh0cmFj
dGVkIGZyb20gWE1MIGZpbGUuCiAKIAkJIyBTcGVjaWFsIGNhc2VzIGhlcmUhCi0JCSdub0RQdHJG
bGFnJyA9PiAnJCcJIyBGb3JjZXMgdGhlIGNvZGUgZ2VuZXJhdG9yIHRvIG5vdCBnZW5lcmF0ZQot
CQkJCQkJCSMgYSBkLXB0ciBmb3IgdGhpcyBiYXNlIGNsYXNzIChvbmx5IHVzZSB3aXRoIHN1Y2gh
KQorCQknbm9EUHRyRmxhZycgPT4gJyQnCQkjIEZvcmNlcyB0aGUgY3BwIGNvZGUgZ2VuZXJhdG9y
IHRvIG5vdCBnZW5lcmF0ZQorCQkJCQkJCQkjIGEgZC1wdHIgZm9yIHRoaXMgYmFzZSBjbGFzcyAo
b25seSB1c2Ugd2l0aCBzdWNoISkKIH0pOwogCiAjIFVzZWQgdG8gcmVwcmVzZW50IGRvbUNsYXNz
IGNvbnRlbnRzIChuYW1lIG9mIG1ldGhvZCwgc2lnbmF0dXJlKQogc3RydWN0KCBkb21GdW5jdGlv
biA9PiB7Ci0JCXNpZ25hdHVyZSA9PiAnJCcsCSMgUmV0dXJuIHR5cGUvT2JqZWN0IG5hbWUvUHRy
RmxhZwotCQlwYXJhbWV0ZXJzID0+ICdAJywJIyBMaXN0IG9mICdkb21TaWduYXR1cmUnCi0JCWRv
Y3VtZW50YXRpb24gPT4gJyQnCi19KTsKLQotIyBVc2VkIHRvIHJlcHJlc2VudCBhIG1hcCBvZiAn
dmFyaWFibGUgbmFtZScgPC0+ICd2YXJpYWJsZSB0eXBlJwotc3RydWN0KCBkb21TaWduYXR1cmUg
PT4gewotCQluYW1lID0+ICckJywJCSMgVmFyaWFibGUgbmFtZQotCQl0eXBlID0+ICckJywJCSMg
VmFyaWFibGUgdHlwZQotCQloYXNQdHJGbGFnID0+ICckJywJIyBQdHIgKCopIGZsYWc/Ci0JCWRv
Y3VtZW50YXRpb24gPT4gJyQnCisJCXNpZ25hdHVyZSA9PiAnJCcsCQkjIFJldHVybiB0eXBlL09i
amVjdCBuYW1lL1B0ckZsYWcKKwkJcGFyYW1ldGVycyA9PiAnQCcsCQkjIExpc3Qgb2YgJ2RvbVNp
Z25hdHVyZScKKwkJZG9jdW1lbnRhdGlvbiA9PiAnJCcsCSMgRXh0cmFjdGVkIGZyb20gWE1MIGZp
bGUuCisJCXJhaXNlc0V4Y2VwdGlvbnMgPT4gJ0AnCSMgUG9zc2libHkgcmFpc2VkIGV4Y2VwdGlv
bnMuCiB9KTsKIAogIyBVc2VkIHRvIHJlcHJlc2VudCBkb21DbGFzcyBjb250ZW50cyAobmFtZSBv
ZiBtZXRob2QsIHNpZ25hdHVyZSkKIHN0cnVjdCggZG9tQXR0cmlidXRlID0+IHsKLQkJdHlwZSA9
PiAnJCcsCQkJCSMgQXR0cmlidXRlIHR5cGUgKGluY2x1ZGluZyBuYW1lc3BhY2UpCi0JCXNpZ25h
dHVyZSA9PiAnJCcsCQkJIyBBdHRyaWJ1dGUgc2lnbmF0dXJlCi0JCWV4Y2VwdGlvbk5hbWUgPT4g
JyQnLAkJIyBOYW1lIG9mIGV4Y2VwdGlvbgotCQlleGNlcHRpb25Eb2N1bWVudGF0aW9uID0+ICdA
JywgIyBEb2N1bWVudGF0aW9uIHBlciBleGNlcHRpb24KLQkJZG9jdW1lbnRhdGlvbiA9PiAnQCcK
KwkJdHlwZSA9PiAnJCcsCQkJCQkjIEF0dHJpYnV0ZSB0eXBlIChpbmNsdWRpbmcgbmFtZXNwYWNl
KQorCQlzaWduYXR1cmUgPT4gJyQnLAkJCQkjIEF0dHJpYnV0ZSBzaWduYXR1cmUKKwkJZXhjZXB0
aW9uTmFtZSA9PiAnJCcsCQkJIyBOYW1lIG9mIGV4Y2VwdGlvbgorCQlleGNlcHRpb25Eb2N1bWVu
dGF0aW9uID0+ICdAJywJIyBEb2N1bWVudGF0aW9uIHBlciBleGNlcHRpb24gKGZyb20gWE1MIGZp
bGUpCisJCWRvY3VtZW50YXRpb24gPT4gJ0AnLAkJCSMgRXh0cmFjdGVkIGZyb20gWE1MIGZpbGUu
CisJCXJhaXNlc0V4Y2VwdGlvbnMgPT4gJ0AnCQkJIyBQb3NzaWJseSByYWlzZWQgZXhjZXB0aW9u
cy4KK30pOworCisjIFVzZWQgdG8gcmVwcmVzZW50IGEgbWFwIG9mICd2YXJpYWJsZSBuYW1lJyA8
LT4gJ3ZhcmlhYmxlIHR5cGUnCitzdHJ1Y3QoIGRvbVNpZ25hdHVyZSA9PiB7CisJCW5hbWUgPT4g
JyQnLAkJCSMgVmFyaWFibGUgbmFtZQorCQl0eXBlID0+ICckJywJCQkjIFZhcmlhYmxlIHR5cGUK
KwkJaGFzUHRyRmxhZyA9PiAnJCcsCQkjIFB0ciAoKikgZmxhZz8KKwkJZG9jdW1lbnRhdGlvbiA9
PiAnJCcJIyBFeHRyYWN0ZWQgZnJvbSBYTUwgZmlsZS4KIH0pOwogCiAjIFVzZWQgdG8gcmVwcmVz
ZW50IHN0cmluZyBjb25zdGFudHMKIHN0cnVjdCggZG9tQ29uc3RhbnQgPT4gewotCQluYW1lID0+
ICckJywJIyBET00gQ29uc3RhbnQgaWRlbnRpZmllcgotCQl0eXBlID0+ICckJywJIyBUeXBlIG9m
IGRhdGEKLQkJdmFsdWUgPT4gJyQnLAkjIENvbnN0YW50IHZhbHVlCi0JCWRvY3VtZW50YXRpb24g
PT4gJyQnCisJCW5hbWUgPT4gJyQnLAkJCSMgRE9NIENvbnN0YW50IGlkZW50aWZpZXIKKwkJdHlw
ZSA9PiAnJCcsCQkJIyBUeXBlIG9mIGRhdGEKKwkJdmFsdWUgPT4gJyQnLAkJCSMgQ29uc3RhbnQg
dmFsdWUKKwkJZG9jdW1lbnRhdGlvbiA9PiAnJCcJIyBFeHRyYWN0ZWQgZnJvbSBYTUwgZmlsZS4K
IH0pOwogCiAjIEhlbHBlcnMKLSRpZGxJZCA9ICdbYS16QS1aMC05XSc7CQkJIyBHZW5lcmljIGlk
ZW50aWZpZXIKLSRpZGxJZE5zID0gJ1thLXpBLVowLTk6XSc7CQkjIEdlbmVyaWMgaWRlbnRpZmll
ciBpbmNsdWRpbmcgbmFtZXNwYWNlCi0kaWRsVHlwZSA9ICdbYS16QS1aMC05X10nOwkJIyBHZW5l
cmljIHR5cGUvInZhbHVlIHN0cmluZyIgaWRlbnRpZmllcgotJGlkbERhdGFUeXBlID0gJ1thLXpB
LVowLTlcIF0nOyAjIEdlbmVyaWMgZGF0YSB0eXBlIGlkZW50aWZpZXIKKyRpZGxJZCA9ICdbYS16
QS1aMC05XSc7CQkJCSMgR2VuZXJpYyBpZGVudGlmaWVyCiskaWRsSWROcyA9ICdbYS16QS1aMC05
Ol0nOwkJCSMgR2VuZXJpYyBpZGVudGlmaWVyIGluY2x1ZGluZyBuYW1lc3BhY2UKKyRpZGxJZE5z
TGlzdCA9ICdbYS16QS1aMC05OixcIF0nOwkjIExpc3Qgb2YgR2VuZXJpYyBpZGVudGlmaWVycyBp
bmNsdWRpbmcgbmFtZXNwYWNlCisKKyRpZGxUeXBlID0gJ1thLXpBLVowLTlfXSc7CQkJIyBHZW5l
cmljIHR5cGUvInZhbHVlIHN0cmluZyIgaWRlbnRpZmllcgorJGlkbERhdGFUeXBlID0gJ1thLXpB
LVowLTlcIF0nOyAJIyBHZW5lcmljIGRhdGEgdHlwZSBpZGVudGlmaWVyCiAKICMgTWFnaWMgSURM
IHBhcnNpbmcgcmVndWxhciBleHByZXNzaW9ucwogbXkgJHN1cHBvcnRlZFR5cGVzID0gIigoPzp1
bnNpZ25lZCApPyg/OmludHxzaG9ydHxsb25nKXwoPzokaWRsSWROcyopKSI7CiAKICMgU3BlY2lh
bCBJREwgbm90YXRpb25zCi0kcHRyU3ludGF4ID0gJ1xbcHRyXF0nOyAjIGllLiAnYXR0cmlidXRl
IFtwdHJdIERPTVN0cmluZyBmb287IgotJG5vZHB0clN5bnRheCA9ICdcW25vZHB0clxdJzsgIyBp
ZS4gJ2ludGVyZmFjZSBbbm9kcHRyXSBGb29iYXIgeyAuLi4iCiskcHRyU3ludGF4ID0gJ1xbcHRy
XF0nOwkJCSMgaWUuICdhdHRyaWJ1dGUgW3B0cl0gRE9NU3RyaW5nIGZvbzsiCiskbm9kcHRyU3lu
dGF4ID0gJ1xbbm9kcHRyXF0nOwkjIGllLiAnaW50ZXJmYWNlIFtub2RwdHJdIEZvb2JhciB7IC4u
LiIKIAogIyBSZWd1bGFyIGV4cHJlc3Npb24gYmFzZWQgSURMICdzeW50YWN0aWNhbCB0b2tlbml6
ZXInIHVzZWQgaW4gdGhlIElETFBhcnNlcgogJG1vZHVsZVNlbGVjdG9yID0gJ21vZHVsZVxzKign
IC4gJGlkbElkIC4gJyopXHMqeyc7CiAkbW9kdWxlTlNTZWxlY3RvciA9ICdtb2R1bGVccyooJyAu
ICRpZGxJZCAuICcqKVxzKlxbbnNccyooJyAuICRpZGxJZE5zIC4gJyopXHMqXF1ccyo7JzsKICRj
b25zdGFudFNlbGVjdG9yID0gJ2NvbnN0XHMqJyAuICRzdXBwb3J0ZWRUeXBlcyAuICdccyooJyAu
ICRpZGxUeXBlIC4gJyopXHMqPVxzKignIC4gJGlkbFR5cGUgLiAnKiknOworJHJhaXNlc1NlbGVj
dG9yID0gJ1xbcmFpc2VzXHMqXCgoJyAuICRpZGxJZE5zTGlzdCAuICcqKVxzKlwpXF0nOwogCiAk
dHlwZU5hbWVzcGFjZVNlbGVjdG9yID0gJygoPzonIC4gJGlkbElkIC4gJyo6OikqKVxzKignIC4g
JGlkbERhdGFUeXBlIC4gJyopJzsKIApAQCAtODYsNyArOTEsNiBAQCAkaW50ZXJmYWNlU2VsZWN0
b3IgPSAnaW50ZXJmYWNlXHMqKCg/OicgCiAkaW50ZXJmYWNlTWV0aG9kU2VsZWN0b3IgPSAnXHMq
KCg/OicgLiAkcHRyU3ludGF4IC4gJyApPyknIC4gJHN1cHBvcnRlZFR5cGVzIC4gJ1xzKignIC4g
JGlkbElkTnMgLiAnKilccypcKFxzKihbYS16QS1aMC05OlxzLFxbXF1dKiknOwogJGludGVyZmFj
ZVBhcmFtZXRlclNlbGVjdG9yID0gJ2luXHMqKCg/OicgLiAkcHRyU3ludGF4IC4gJyApPyknIC4g
JHN1cHBvcnRlZFR5cGVzIC4gJ1xzKignIC4gJGlkbElkTnMgLiAnKiknOwogCi0kaW50ZXJmYWNl
RXhjZXB0aW9uU2VsZWN0b3IgPSAncmFpc2VzXHMqXCgoJyAuICRpZGxJZE5zIC4gJyopXHMqXCkn
OwogJGludGVyZmFjZUF0dHJpYnV0ZVNlbGVjdG9yID0gJ1xzKihyZWFkb25seSBhdHRyaWJ1dGV8
YXR0cmlidXRlKVxzKignIC4gJHB0clN5bnRheCAuICcgKT8nIC4gJHN1cHBvcnRlZFR5cGVzIC4g
J1xzKignIC4gJGlkbFR5cGUgLiAnKiknOwogCiAxOwpJbmRleDoga2RvbS9jYWNoZS9LRE9NQ2Fj
aGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvU1ZHU3VwcG9ydC9rZG9tL2NhY2hl
L0tET01DYWNoZS5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjQKZGlmZiAtcCAtdSAtcjEuNCBr
ZG9tL2NhY2hlL0tET01DYWNoZS5oCi0tLSBrZG9tL2NhY2hlL0tET01DYWNoZS5oCTIgU2VwIDIw
MDUgMTA6MDM6MDAgLTAwMDAJMS40CisrKyBrZG9tL2NhY2hlL0tET01DYWNoZS5oCTYgU2VwIDIw
MDUgMDk6NTg6NTEgLTAwMDAKQEAgLTMwLDExICszMCwxMiBAQAogCiAjaW5jbHVkZSA8cTNkaWN0
Lmg+CiAjaW5jbHVkZSA8cTNwdHJsaXN0Lmg+Ci0jaW5jbHVkZSA8cXBpeG1hcC5oPgogCiAjaW5j
bHVkZSAiS0RPTUNhY2hlZE9iamVjdC5oIgogI2luY2x1ZGUgIktET01Mb2FkZXIuaCIKIAorY2xh
c3MgUVBpeG1hcDsKKwogbmFtZXNwYWNlIEtET00KIHsKICAgICBjbGFzcyBMb2FkZXI7CkluZGV4
OiBrZG9tL2NhY2hlL0tET01DYWNoZWRPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3Zz
L3Jvb3QvU1ZHU3VwcG9ydC9rZG9tL2NhY2hlL0tET01DYWNoZWRPYmplY3QuaCx2CnJldHJpZXZp
bmcgcmV2aXNpb24gMS41CmRpZmYgLXAgLXUgLXIxLjUga2RvbS9jYWNoZS9LRE9NQ2FjaGVkT2Jq
ZWN0LmgKLS0tIGtkb20vY2FjaGUvS0RPTUNhY2hlZE9iamVjdC5oCTIgU2VwIDIwMDUgMTE6MTU6
NDMgLTAwMDAJMS41CisrKyBrZG9tL2NhY2hlL0tET01DYWNoZWRPYmplY3QuaAk2IFNlcCAyMDA1
IDA5OjU4OjUxIC0wMDAwCkBAIC04Miw3ICs4Miw3IEBAIG5hbWVzcGFjZSBLRE9NCiAgICAgICAg
IH07CiAKICAgICAgICAgQ2FjaGVkT2JqZWN0KGNvbnN0IERPTVN0cmluZyAmdXJsLCBUeXBlIHR5
cGUsIEtJTzo6Q2FjaGVDb250cm9sIGNhY2hlUG9saWN5LCBpbnQgc2l6ZSk7Ci0gICAgICAgICAg
dmlydHVhbCB+Q2FjaGVkT2JqZWN0KCk7CisgICAgICAgIHZpcnR1YWwgfkNhY2hlZE9iamVjdCgp
OwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBkYXRhKFFCdWZmZXIgJmJ1ZmZlciwgYm9vbCBlb2Yp
ID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGVycm9yKGludCBlcnIsIGNvbnN0IGNoYXIgKnRl
eHQpID0gMDsKSW5kZXg6IGtkb20vY2FjaGUvS0RPTUxvYWRlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1Mg
ZmlsZTogL2N2cy9yb290L1NWR1N1cHBvcnQva2RvbS9jYWNoZS9LRE9NTG9hZGVyLmNwcCx2CnJl
dHJpZXZpbmcgcmV2aXNpb24gMS43CmRpZmYgLXAgLXUgLXIxLjcga2RvbS9jYWNoZS9LRE9NTG9h
ZGVyLmNwcAotLS0ga2RvbS9jYWNoZS9LRE9NTG9hZGVyLmNwcAkyIFNlcCAyMDA1IDExOjE1OjQz
IC0wMDAwCTEuNworKysga2RvbS9jYWNoZS9LRE9NTG9hZGVyLmNwcAk2IFNlcCAyMDA1IDA5OjU4
OjUyIC0wMDAwCkBAIC0xMzksNiArMTM5LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6c2V0QXV0
b2xvYWRJbWFnZXMoYgogICAgIGlmKCFtX2F1dG9sb2FkSW1hZ2VzKQogICAgICAgICByZXR1cm47
CiAKKyNpZiAwCiAgICAgZm9yKFEzUHRyRGljdEl0ZXJhdG9yPENhY2hlZE9iamVjdD4gaXQobV9k
b2NPYmplY3RzKTsgaXQuY3VycmVudCgpOyArK2l0KQogICAgIHsKICAgICAgICAgaWYoaXQuY3Vy
cmVudCgpLT50eXBlKCkgPT0gQ2FjaGVkT2JqZWN0OjpJbWFnZSkKQEAgLTE0OCwxMCArMTQ5LDEw
IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnNldEF1dG9sb2FkSW1hZ2VzKGIKICAgICAgICAgICAg
IENhY2hlZE9iamVjdDo6U3RhdHVzIHN0YXR1cyA9IGltZy0+c3RhdHVzKCk7CiAgICAgICAgICAg
ICBpZihzdGF0dXMgIT0gQ2FjaGVkT2JqZWN0OjpVbmtub3duKQogICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwotCiAgICAgICAgICAgICBDYWNoZTo6bG9hZGVyKCktPmxvYWQodGhpcywgaW1nLCB0
cnVlKTsKICAgICAgICAgfQogICAgIH0KKyNlbmRpZgogfQogCiB2b2lkIERvY3VtZW50TG9hZGVy
OjpzZXRTaG93QW5pbWF0aW9ucyhLRE9NU2V0dGluZ3M6OktBbmltYXRpb25BZHZpY2Ugc2hvd0Fu
aW1hdGlvbnMpCkluZGV4OiBrZG9tL2NhY2hlL0tET01Mb2FkZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBm
aWxlOiAvY3ZzL3Jvb3QvU1ZHU3VwcG9ydC9rZG9tL2NhY2hlL0tET01Mb2FkZXIuaCx2CnJldHJp
ZXZpbmcgcmV2aXNpb24gMS42CmRpZmYgLXAgLXUgLXIxLjYga2RvbS9jYWNoZS9LRE9NTG9hZGVy
LmgKLS0tIGtkb20vY2FjaGUvS0RPTUxvYWRlci5oCTIgU2VwIDIwMDUgMTE6MTU6NDMgLTAwMDAJ
MS42CisrKyBrZG9tL2NhY2hlL0tET01Mb2FkZXIuaAk2IFNlcCAyMDA1IDA5OjU4OjUyIC0wMDAw
CkBAIC0zMyw4ICszMyw4IEBACiAjaW5jbHVkZSA8cTNwdHJkaWN0Lmg+CiAjaW5jbHVkZSA8cXN0
cmluZ2xpc3QuaD4KIAotI2luY2x1ZGUgPGtpby9qb2IuaD4KICNpbmNsdWRlIDxraW8vZ2xvYmFs
Lmg+CisjaW5jbHVkZSA8a2lvL2pvYi5oPgogCiAjaW5jbHVkZSA8a2RvbS9LRE9NU2V0dGluZ3Mu
aD4KICNpbmNsdWRlIDxrZG9tL2NhY2hlL0tET01DYWNoZWRPYmplY3QuaD4KSW5kZXg6IGtkb20v
Y3NzL0NTU1ByaW1pdGl2ZVZhbHVlSW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9y
b290L1NWR1N1cHBvcnQva2RvbS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWVJbXBsLmNwcCx2CnJldHJp
ZXZpbmcgcmV2aXNpb24gMS42CmRpZmYgLXAgLXUgLXIxLjYga2RvbS9jc3MvQ1NTUHJpbWl0aXZl
VmFsdWVJbXBsLmNwcAotLS0ga2RvbS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWVJbXBsLmNwcAkyIFNl
cCAyMDA1IDEwOjAzOjAzIC0wMDAwCTEuNgorKysga2RvbS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWVJ
bXBsLmNwcAk2IFNlcCAyMDA1IDA5OjU4OjUyIC0wMDAwCkBAIC0zODAsNyArMzgwLDggQEAgRm9u
dEZhbWlseVZhbHVlSW1wbDo6Rm9udEZhbWlseVZhbHVlSW1wbAogICAgIC8vIHJlbW92ZSBbWGZ0
XSBxdWFsaWZpZXJzCiAgICAgcGFyc2VkRm9udE5hbWUucmVwbGFjZShicmFjZVJlZywgUVN0cmlu
Zzo6bnVsbCk7CiAKLSNpZm5kZWYgQVBQTEVfQ09NUElMRV9IQUNLCisjaWYgMAorI2lmbmRlZiBB
UFBMRV9DSEFOR0VTCiAgICAgY29uc3QgUVN0cmluZyAmYXZhaWxhYmxlID0gS0hUTUxTZXR0aW5n
czo6YXZhaWxhYmxlRmFtaWxpZXMoKTsKIAogICAgIHBhcnNlZEZvbnROYW1lID0gcGFyc2VkRm9u
dE5hbWUubG93ZXIoKTsKQEAgLTQxMCw2ICs0MTEsNyBAQCBGb250RmFtaWx5VmFsdWVJbXBsOjpG
b250RmFtaWx5VmFsdWVJbXBsCiAgICAgZWxzZQogICAgICAgICBwYXJzZWRGb250TmFtZSA9IFFT
dHJpbmc6Om51bGw7CiAKLSNlbmRpZiAvLyBBUFBMRV9DT01QSUxFX0hBQ0sKKyNlbmRpZiAvLyAh
QVBQTEVfQ0hBTkdFUworI2VuZGlmCiB9CiAvLyB2aW06dHM9NDpub2V0CkluZGV4OiBrZG9tL2Nz
cy9DU1NTdHlsZVJ1bGVJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvU1ZH
U3VwcG9ydC9rZG9tL2Nzcy9DU1NTdHlsZVJ1bGVJbXBsLmNwcCx2CnJldHJpZXZpbmcgcmV2aXNp
b24gMS41CmRpZmYgLXAgLXUgLXIxLjUga2RvbS9jc3MvQ1NTU3R5bGVSdWxlSW1wbC5jcHAKLS0t
IGtkb20vY3NzL0NTU1N0eWxlUnVsZUltcGwuY3BwCTIgU2VwIDIwMDUgMTA6MDM6MDMgLTAwMDAJ
MS41CisrKyBrZG9tL2Nzcy9DU1NTdHlsZVJ1bGVJbXBsLmNwcAk2IFNlcCAyMDA1IDA5OjU4OjUy
IC0wMDAwCkBAIC02Myw3ICs2Myw3IEBAIHZvaWQgQ1NTU3R5bGVSdWxlSW1wbDo6c2V0U2VsZWN0
b3JUZXh0KEQKICAgICAvLyBGSVhNRSEKIH0KIAotYm9vbCBDU1NTdHlsZVJ1bGVJbXBsOjpwYXJz
ZVN0cmluZyhjb25zdCBET01TdHJpbmcgJiwgYm9vbCkKK2Jvb2wgQ1NTU3R5bGVSdWxlSW1wbDo6
cGFyc2VTdHJpbmcoRE9NU3RyaW5nSW1wbCAqLCBib29sKQogewogICAgIC8vIEZJWE1FIQogICAg
IHJldHVybiBmYWxzZTsKSW5kZXg6IGtkb20vY3NzL0NTU1N0eWxlUnVsZUltcGwuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvU1ZHU3VwcG9ydC9rZG9tL2Nzcy9DU1NTdHlsZVJ1bGVJ
bXBsLmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNgpkaWZmIC1wIC11IC1yMS42IGtkb20vY3Nz
L0NTU1N0eWxlUnVsZUltcGwuaAotLS0ga2RvbS9jc3MvQ1NTU3R5bGVSdWxlSW1wbC5oCTIgU2Vw
IDIwMDUgMTA6MDM6MDMgLTAwMDAJMS42CisrKyBrZG9tL2Nzcy9DU1NTdHlsZVJ1bGVJbXBsLmgJ
NiBTZXAgMjAwNSAwOTo1ODo1MiAtMDAwMApAQCAtNDAsNyArNDAsNyBAQCBuYW1lc3BhY2UgS0RP
TQogICAgICAgICBET01TdHJpbmdJbXBsICpzZWxlY3RvclRleHQoKSBjb25zdDsKICAgICAgICAg
dm9pZCBzZXRTZWxlY3RvclRleHQoRE9NU3RyaW5nSW1wbCAqc2VsZWN0b3JUZXh0KTsKIAotICAg
ICAgICB2aXJ0dWFsIGJvb2wgcGFyc2VTdHJpbmcoY29uc3QgRE9NU3RyaW5nICZzdHJpbmcsIGJv
b2wgPSBmYWxzZSk7CisgICAgICAgIHZpcnR1YWwgYm9vbCBwYXJzZVN0cmluZyhET01TdHJpbmdJ
bXBsICpzdHJpbmcsIGJvb2wgPSBmYWxzZSk7CiAKICAgICAgICAgQ1NTU3R5bGVEZWNsYXJhdGlv
bkltcGwgKnN0eWxlKCkgY29uc3Q7CiAKSW5kZXg6IGtkb20vY3NzL0NTU1N0eWxlU2VsZWN0b3Iu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tkb20vY3NzL0NT
U1N0eWxlU2VsZWN0b3IuY3BwLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjgKZGlmZiAtcCAtdSAt
cjEuOCBrZG9tL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAotLS0ga2RvbS9jc3MvQ1NTU3R5bGVT
ZWxlY3Rvci5jcHAJMiBTZXAgMjAwNSAxMDowMzowNCAtMDAwMAkxLjgKKysrIGtkb20vY3NzL0NT
U1N0eWxlU2VsZWN0b3IuY3BwCTYgU2VwIDIwMDUgMDk6NTg6NTYgLTAwMDAKQEAgLTE1Miw3ICsx
NTIsNyBAQCBDU1NTdHlsZVNlbGVjdG9yOjpDU1NTdHlsZVNlbGVjdG9yKERvY3VtCiAgICAgZm9y
KDsgaXQuY3VycmVudCgpOyArK2l0KQogICAgIHsKICAgICAgICAgICAgaWYoaXQuY3VycmVudCgp
LT5pc0NTU1N0eWxlU2hlZXQoKSkKLSAgICAgICAgICAgIGF1dGhvclN0eWxlLT5hcHBlbmQoc3Rh
dGljX2Nhc3Q8Q1NTU3R5bGVTaGVldEltcGwgKj4oaXQuY3VycmVudCgpKSwgRE9NU3RyaW5nKG1f
bWVkaXVtKS5oYW5kbGUoKSk7CisgICAgICAgICAgICAgICBhdXRob3JTdHlsZS0+YXBwZW5kKHN0
YXRpY19jYXN0PENTU1N0eWxlU2hlZXRJbXBsICo+KGl0LmN1cnJlbnQoKSksIERPTVN0cmluZyht
X21lZGl1bSkuaGFuZGxlKCkpOwogICAgIH0KIAogICAgIEtVUkwgdSA9IHVybDsKQEAgLTQzMiw3
ICs0MzIsNyBAQCBSZW5kZXJTdHlsZSAqQ1NTU3R5bGVTZWxlY3Rvcjo6c3R5bGVGb3JFCiAgICAg
Ly8gYXMgYXV0aG9yIHJ1bGVzLCBhbmQgY29tZSBiZWZvcmUgYWxsIG90aGVyIHN0eWxlIHNoZWV0
cywgc2VlIGhhY2sgaW4gYXBwZW5kKCkKICAgICBudW1Qcm9wc1RvQXBwbHkgPSBhZGRJbmxpbmVE
ZWNsYXJhdGlvbnMoZSwgZS0+c3R5bGVSdWxlcygpLCBudW1Qcm9wc1RvQXBwbHkpOwogCi0gICAg
Ly8gcURlYnVnKCJzdHlsZUZvckVsZW1lbnQoJXMpIiwgZS0+dGFnTmFtZSgpLnN0cmluZygpLmxh
dGluMSgpKTsKKyAgICAvLyBxRGVidWcoInN0eWxlRm9yRWxlbWVudCglcykiLCBlLT50YWdOYW1l
KCktPnN0cmluZygpLmxhdGluMSgpKTsKICAgICAvLyBxRGVidWcoIiVkIHNlbGVjdG9ycywgJWQg
Y2hlY2tlZCwgICVkIG1hdGNoLCAgJWQgcHJvcGVydGllcyhvZiAlZCkiLAogICAgIC8vIHNlbGVj
dG9yc19zaXplLCBzY2hlY2tlZCwgc21hdGNoLCBudW1Qcm9wc1RvQXBwbHksIHByb3BlcnRpZXNf
c2l6ZSk7CiAKQEAgLTQ3Myw3ICs0NzMsNyBAQCBSZW5kZXJTdHlsZSAqQ1NTU3R5bGVTZWxlY3Rv
cjo6c3R5bGVGb3JFCiAgICAgICAgIHsKICAgICAgICAgICAgIGZvbnREaXJ0eSA9IGZhbHNlOwog
Ci0gICAgICAgICAgICAvLyBxRGVidWcoIiVkIGFwcGx5aW5nICVkIHBzZXVkbyBwcm9wcyIsIGUt
PmNzc1RhZ0lkKCksIHBzZXVkb1Byb3BzLT5jb3VudCgpKTsKKyAgICAgICAgICAgIC8vcURlYnVn
KCIlZCBhcHBseWluZyAlZCBwc2V1ZG8gcHJvcHMiLCBlLT5jc3NUYWdJZCgpLCBwc2V1ZG9Qcm9w
cy0+Y291bnQoKSk7CiAgICAgICAgICAgICBmb3IodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgbnVt
UHNldWRvUHJvcHM7ICsraSkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBpZihmb250
RGlydHkgJiYgcHNldWRvUHJvcHNbaV0tPnByaW9yaXR5ID49ICgxIDw8IDMwKSkKQEAgLTI3NDks
NyArMjc0OSwxMiBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UnVsZShpbnQgaWQsCiAg
ICAgY2FzZSBDU1NfUFJPUF9DVVJTT1I6CiAgICAgewogICAgICAgICBIQU5ETEVfSU5IRVJJVF9B
TkRfSU5JVElBTChjdXJzb3IsIEN1cnNvcikKLSAgICAgICAgaWYocHJpbWl0aXZlVmFsdWUpCisg
ICAgICAgIGlmKCFwcmltaXRpdmVWYWx1ZSkKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAg
IGlmKHByaW1pdGl2ZVZhbHVlLT5wcmltaXRpdmVUeXBlKCkgPT0gQ1NTX1VSSSkKKyAgICAgICAg
ICAgIC8qc3R5bGUtPnNldEN1cnNvckltYWdlKHByaW1pdGl2ZVZhbHVlKSovOworCQllbHNlCiAg
ICAgICAgICAgICBzdHlsZS0+c2V0Q3Vyc29yKChFQ3Vyc29yKSAocHJpbWl0aXZlVmFsdWUtPmdl
dElkZW50KCkgLSBDU1NfVkFMX0FVVE8pKTsKIAogICAgICAgICBicmVhazsKQEAgLTQyMDIsOCAr
NDIwNyw4IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlSdWxlKGludCBpZCwKIAogRE9N
U3RyaW5nSW1wbCAqQ1NTU3R5bGVTZWxlY3Rvcjo6Z2V0TGFuZ0F0dHJpYnV0ZShFbGVtZW50SW1w
bCAqZSkKIHsKLSAgICByZXR1cm4gZS0+Z2V0QXR0cmlidXRlTlMoRE9NU3RyaW5nKE5TX1hNTCku
aGFuZGxlKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIERPTVN0cmluZygieG1sOmxh
bmciKS5oYW5kbGUoKSk7CisgICAgLy8gVE9ETzogQ2hlY2sgTlNfWE1MICYgZnJpZW5kcy4uLgor
ICAgIHJldHVybiBlLT5nZXRBdHRyaWJ1dGVOUyhOU19YTUwuaGFuZGxlKCksIERPTVN0cmluZygi
eG1sOmxhbmciKS5oYW5kbGUoKSk7CiB9CiAKIC8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IGtkb20v
Y3NzL0NTU1N0eWxlU2VsZWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvU1ZH
U3VwcG9ydC9rZG9tL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmgsdgpyZXRyaWV2aW5nIHJldmlzaW9u
IDEuNgpkaWZmIC1wIC11IC1yMS42IGtkb20vY3NzL0NTU1N0eWxlU2VsZWN0b3IuaAotLS0ga2Rv
bS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5oCTIgU2VwIDIwMDUgMTA6MDM6MDQgLTAwMDAJMS42Cisr
KyBrZG9tL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmgJNiBTZXAgMjAwNSAwOTo1ODo1NiAtMDAwMApA
QCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSA8cTNwdHJsaXN0Lmg+CiAjaW5jbHVkZSA8cTN2
YWx1ZXZlY3Rvci5oPgorI2luY2x1ZGUgPHEzbWVtYXJyYXkuaD4KIAogI2luY2x1ZGUgPGtkb20v
RE9NU3RyaW5nLmg+CiAjaW5jbHVkZSA8a2RvbS9jc3MvUmVuZGVyU3R5bGUuaD4KSW5kZXg6IGtk
b20vY3NzL0NTU1N0eWxlU2hlZXRJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jv
b3QvU1ZHU3VwcG9ydC9rZG9tL2Nzcy9DU1NTdHlsZVNoZWV0SW1wbC5jcHAsdgpyZXRyaWV2aW5n
IHJldmlzaW9uIDEuNQpkaWZmIC1wIC11IC1yMS41IGtkb20vY3NzL0NTU1N0eWxlU2hlZXRJbXBs
LmNwcAotLS0ga2RvbS9jc3MvQ1NTU3R5bGVTaGVldEltcGwuY3BwCTIgU2VwIDIwMDUgMTA6MDM6
MDQgLTAwMDAJMS41CisrKyBrZG9tL2Nzcy9DU1NTdHlsZVNoZWV0SW1wbC5jcHAJNiBTZXAgMjAw
NSAwOTo1ODo1NiAtMDAwMApAQCAtMTAzLDcgKzEwMyw3IEBAIENTU1N0eWxlU2hlZXRJbXBsOjp+
Q1NTU3R5bGVTaGVldEltcGwoKQogCiBET01TdHJpbmdJbXBsICpDU1NTdHlsZVNoZWV0SW1wbDo6
dHlwZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIERPTVN0cmluZygidGV4dC9jc3MiKS5oYW5kbGUo
KTsKKyAgICByZXR1cm4gbmV3IERPTVN0cmluZ0ltcGwoInRleHQvY3NzIik7CiB9CiAKIENTU1J1
bGVJbXBsICpDU1NTdHlsZVNoZWV0SW1wbDo6b3duZXJSdWxlKCkgY29uc3QKSW5kZXg6IGtkb20v
Y3NzL0NTU1ZhbHVlSW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1NWR1N1
cHBvcnQva2RvbS9jc3MvQ1NTVmFsdWVJbXBsLmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS40
CmRpZmYgLXAgLXUgLXIxLjQga2RvbS9jc3MvQ1NTVmFsdWVJbXBsLmNwcAotLS0ga2RvbS9jc3Mv
Q1NTVmFsdWVJbXBsLmNwcAkxIFNlcCAyMDA1IDA3OjMzOjA5IC0wMDAwCTEuNAorKysga2RvbS9j
c3MvQ1NTVmFsdWVJbXBsLmNwcAk2IFNlcCAyMDA1IDA5OjU4OjU2IC0wMDAwCkBAIC0yMjcsNyAr
MjI3LDcgQEAgRE9NU3RyaW5nSW1wbCAqU2hhZG93VmFsdWVJbXBsOjpjc3NUZXh0KAogICAgIERP
TVN0cmluZyB0ZXh0KCIiKTsKICAgICBpZihjb2xvcikKICAgICAgICAgdGV4dCArPSBET01TdHJp
bmcoY29sb3ItPmNzc1RleHQoKSk7Ci0gICAgCisKICAgICBpZih4KQogICAgIHsKICAgICAgICAg
aWYodGV4dC5sZW5ndGgoKSA+IDApCkBAIC0yMzUsNyArMjM1LDcgQEAgRE9NU3RyaW5nSW1wbCAq
U2hhZG93VmFsdWVJbXBsOjpjc3NUZXh0KAogICAgICAgICAKICAgICAgICAgdGV4dCArPSBET01T
dHJpbmcoeC0+Y3NzVGV4dCgpKTsKICAgICB9Ci0gICAgCisKICAgICBpZih5KQogICAgIHsKICAg
ICAgICAgaWYodGV4dC5sZW5ndGgoKSA+IDApCkBAIC0yNDMsMTIgKzI0MywxMiBAQCBET01TdHJp
bmdJbXBsICpTaGFkb3dWYWx1ZUltcGw6OmNzc1RleHQoCiAgICAgICAgIAogICAgICAgICB0ZXh0
ICs9IERPTVN0cmluZyh5LT5jc3NUZXh0KCkpOwogICAgIH0KLSAgICAKKwogICAgIGlmKGJsdXIp
CiAgICAgewogICAgICAgICBpZih0ZXh0Lmxlbmd0aCgpID4gMCkKICAgICAgICAgICAgIHRleHQg
Kz0gIiAiOwotICAgICAgICAKKwogICAgICAgICB0ZXh0ICs9IERPTVN0cmluZyhibHVyLT5jc3NU
ZXh0KCkpOwogICAgIH0KIApJbmRleDoga2RvbS9jc3MvRm9udC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZp
bGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tkb20vY3NzL0ZvbnQuaCx2CnJldHJpZXZpbmcgcmV2
aXNpb24gMS42CmRpZmYgLXAgLXUgLXIxLjYga2RvbS9jc3MvRm9udC5oCi0tLSBrZG9tL2Nzcy9G
b250LmgJMiBTZXAgMjAwNSAxMDowMzowNCAtMDAwMAkxLjYKKysrIGtkb20vY3NzL0ZvbnQuaAk2
IFNlcCAyMDA1IDA5OjU4OjU2IC0wMDAwCkBAIC04Nyw3ICs4Nyw3IEBAIHB1YmxpYzoKICAgICAg
KiBAcGFyYW0gZGVjbyBjb21iaW5lZCB0ZXh0IGRlY29yYXRpb24gKHNlZSBEZWNvcmF0aW9uKQog
ICAgICAqLwogICAgIHZvaWQgZHJhd1RleHQoUVBhaW50ZXIgKnAsIGludCB4LCBpbnQgeSwgUUNo
YXIgKnN0ciwgaW50IHNsZW4sIGludCBwb3MsIGludCBsZW4sIGludCB3aWR0aCwKLSAgICAgICAg
ICAgICAgICAgIFFQYWludGVyOjpUZXh0RGlyZWN0aW9uIGQsIGludCBmcm9tID0gLTEsIGludCB0
byA9IC0xLCBRQ29sb3IgYmcgPSBRQ29sb3IoKSwKKyAgICAgICAgICAgICAgICAgIFF0OjpMYXlv
dXREaXJlY3Rpb24gZCwgaW50IGZyb20gPSAtMSwgaW50IHRvID0gLTEsIFFDb2xvciBiZyA9IFFD
b2xvcigpLAogICAgICAgICAgICAgICAgICAgaW50IHV5ID0gLTEsIGludCBoID0gLTEsIGludCBk
ZWNvID0gMCkgY29uc3Q7CiAKICAgICAvKiogcmV0dXJucyB0aGUgd2lkdGggb2YgdGhlIGdpdmVu
IHN0cmluZyBjaHVuayBpbiBwaXhlbHMuCkluZGV4OiBrZG9tL2Nzcy9MaW5rU3R5bGVJbXBsLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09ClJDUyBmaWxlOiBrZG9tL2Nzcy9MaW5rU3R5bGVJbXBsLmNwcApkaWZmIC1O
IGtkb20vY3NzL0xpbmtTdHlsZUltcGwuY3BwCi0tLSBrZG9tL2Nzcy9MaW5rU3R5bGVJbXBsLmNw
cAkxIEphbiAxOTcwIDAwOjAwOjAwIC0wMDAwCisrKyBrZG9tL2Nzcy9MaW5rU3R5bGVJbXBsLmNw
cAk2IFNlcCAyMDA1IDA5OjU4OjU2IC0wMDAwCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgICAgQ29w
eXJpZ2h0IChDKSAyMDA0LCAyMDA1IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3Jn
PgorICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgor
CisgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0CisKKyAgICBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg
ICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAg
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAz
MzAsCisgICAgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCisqLworCisjaW5jbHVkZSAiTGlu
a1N0eWxlSW1wbC5oIgorI2luY2x1ZGUgIkNTU1N0eWxlU2hlZXRJbXBsLmgiCisKK3VzaW5nIG5h
bWVzcGFjZSBLRE9NOworCitMaW5rU3R5bGVJbXBsOjpMaW5rU3R5bGVJbXBsKCkgOiBtX3NoZWV0
KDApCit7Cit9CisKK0xpbmtTdHlsZUltcGw6On5MaW5rU3R5bGVJbXBsKCkKK3sKKyAgICBpZiht
X3NoZWV0KQorICAgICAgICBtX3NoZWV0LT5kZXJlZigpOworfQorCitTdHlsZVNoZWV0SW1wbCAq
TGlua1N0eWxlSW1wbDo6c2hlZXQoKSBjb25zdAoreworICAgIHJldHVybiBtX3NoZWV0OworfQor
Ly8gdmltOnRzPTQ6bm9ldApJbmRleDoga2RvbS9jc3MvTGlua1N0eWxlSW1wbC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KUkNTIGZpbGU6IGtkb20vY3NzL0xpbmtTdHlsZUltcGwuaApkaWZmIC1OIGtkb20vY3NzL0xp
bmtTdHlsZUltcGwuaAotLS0ga2RvbS9jc3MvTGlua1N0eWxlSW1wbC5oCTEgSmFuIDE5NzAgMDA6
MDA6MDAgLTAwMDAKKysrIGtkb20vY3NzL0xpbmtTdHlsZUltcGwuaAk2IFNlcCAyMDA1IDA5OjU4
OjU2IC0wMDAwCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAy
MDA1IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgorICAgICAgICAgICAgICAg
ICAgMjAwNCwgMjAwNSBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgorCisgICAgVGhpcyBmaWxlIGlz
IHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0CisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAg
ICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBD
T1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsCisgICAgQm9zdG9uLCBN
QSAwMjExMS0xMzA3LCBVU0EuCisqLworCisjaWZuZGVmIEtET01fTGlua1N0eWxlSW1wbF9ICisj
ZGVmaW5lIEtET01fTGlua1N0eWxlSW1wbF9ICisKK25hbWVzcGFjZSBLRE9NCit7CisgICAgY2xh
c3MgU3R5bGVTaGVldEltcGw7CisgICAgY2xhc3MgQ1NTU3R5bGVTaGVldEltcGw7CisgICAgY2xh
c3MgTGlua1N0eWxlSW1wbAorICAgIHsKKyAgICBwdWJsaWM6CisgICAgICAgIExpbmtTdHlsZUlt
cGwoKTsKKyAgICAgICAgdmlydHVhbCB+TGlua1N0eWxlSW1wbCgpOworCisgICAgICAgIC8vICdM
aW5rU3R5bGVJbXBsJyBmdW5jdGlvbnMKKyAgICAgICAgdmlydHVhbCBTdHlsZVNoZWV0SW1wbCAq
c2hlZXQoKSBjb25zdDsKKworICAgIHByb3RlY3RlZDoKKyAgICAgICAgbXV0YWJsZSBDU1NTdHls
ZVNoZWV0SW1wbCAqbV9zaGVldDsKKyAgICB9OworfTsKKworI2VuZGlmCisKKy8vIHZpbTp0cz00
Om5vZXQKSW5kZXg6IGtkb20vY3NzL01lZGlhTGlzdEltcGwuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZp
bGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tkb20vY3NzL01lZGlhTGlzdEltcGwuY3BwLHYKcmV0
cmlldmluZyByZXZpc2lvbiAxLjUKZGlmZiAtcCAtdSAtcjEuNSBrZG9tL2Nzcy9NZWRpYUxpc3RJ
bXBsLmNwcAotLS0ga2RvbS9jc3MvTWVkaWFMaXN0SW1wbC5jcHAJMiBTZXAgMjAwNSAxMDowMzow
NSAtMDAwMAkxLjUKKysrIGtkb20vY3NzL01lZGlhTGlzdEltcGwuY3BwCTYgU2VwIDIwMDUgMDk6
NTg6NTYgLTAwMDAKQEAgLTgwLDggKzgwLDggQEAgdm9pZCBNZWRpYUxpc3RJbXBsOjpzZXRNZWRp
YVRleHQoRE9NU3RyaQogewogICAgIG1fbHN0TWVkaWEuY2xlYXIoKTsKICAgICAKLSAgICBjb25z
dCBRU3RyaW5nIHZhbCA9IChtZWRpYVRleHQgPyBtZWRpYVRleHQtPnN0cmluZygpIDogUVN0cmlu
Zzo6bnVsbCk7Ci0gICAgY29uc3QgUVN0cmluZ0xpc3QgbGlzdCA9IFFTdHJpbmdMaXN0OjpzcGxp
dCgnLCcsIHZhbCk7CisgICAgRE9NU3RyaW5nIG1lZGlhVGV4dERPTVN0cmluZyhtZWRpYVRleHQp
OworICAgIGNvbnN0IFFTdHJpbmdMaXN0IGxpc3QgPSBRU3RyaW5nTGlzdDo6c3BsaXQoJywnLCBt
ZWRpYVRleHRET01TdHJpbmcuc3RyaW5nKCkpOwogCiAgICAgUVN0cmluZ0xpc3Q6OkNvbnN0SXRl
cmF0b3IgaXQgPSBsaXN0LmJlZ2luKCk7CiAgICAgY29uc3QgUVN0cmluZ0xpc3Q6OkNvbnN0SXRl
cmF0b3IgZW5kID0gbGlzdC5lbmQoKTsKSW5kZXg6IGtkb20vY3NzL1JlY3RJbXBsLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvU1ZHU3VwcG9ydC9rZG9tL2Nzcy9SZWN0SW1wbC5j
cHAsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNApkaWZmIC1wIC11IC1yMS40IGtkb20vY3NzL1Jl
Y3RJbXBsLmNwcAotLS0ga2RvbS9jc3MvUmVjdEltcGwuY3BwCTEgU2VwIDIwMDUgMDc6MzM6MTEg
LTAwMDAJMS40CisrKyBrZG9tL2Nzcy9SZWN0SW1wbC5jcHAJNiBTZXAgMjAwNSAwOTo1ODo1NyAt
MDAwMApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgICAgQ29weXJpZ2h0KEMpIDIwMDQsIDIwMDUgTmlr
b2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+Ci0gICAgICAgICAgICAgICAgICAyMDA0
LCAyMDA1IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CisgICAgICAgICAgICAgICAgIDIwMDQsIDIw
MDUgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KIAogICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRo
ZSBLREUgcHJvamVjdAogCkBAIC0yMCw3ICsyMCw2IEBACiAgICAgQm9zdG9uLCBNQSAwMjExMS0x
MzA3LCBVU0EuCiAqLwogCi0jaW5jbHVkZSA8a2RvbS9TaGFyZWQuaD4KICNpbmNsdWRlICJSZWN0
SW1wbC5oIgogI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlSW1wbC5oIgogCkBAIC00Niw1MCAr
NDUsNiBAQCBSZWN0SW1wbDo6flJlY3RJbXBsKCkKICAgICAgICAgbV9sZWZ0LT5kZXJlZigpOwog
fQogCi1DU1NQcmltaXRpdmVWYWx1ZUltcGwgKlJlY3RJbXBsOjp0b3AoKSBjb25zdAotewotICAg
IGlmKCFtX3RvcCkKLSAgICB7Ci0gICAgICAgIG1fdG9wID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVl
SW1wbChtX2ludGVyZmFjZSk7IC8vIFRPRE86IENoZWNrIGN0b3IKLSAgICAgICAgbV90b3AtPnJl
ZigpOwotICAgIH0KLQotICAgIHJldHVybiBtX3RvcDsKLX0KLQotQ1NTUHJpbWl0aXZlVmFsdWVJ
bXBsICpSZWN0SW1wbDo6cmlnaHQoKSBjb25zdAotewotICAgIGlmKCFtX3JpZ2h0KQotICAgIHsK
LSAgICAgICAgbV9yaWdodCA9IG5ldyBDU1NQcmltaXRpdmVWYWx1ZUltcGwobV9pbnRlcmZhY2Up
OyAvLyBUT0RPOiBDaGVjayBjdG9yCi0gICAgICAgIG1fcmlnaHQtPnJlZigpOwotICAgIH0KLQot
ICAgIHJldHVybiBtX3JpZ2h0OwotfQotCi1DU1NQcmltaXRpdmVWYWx1ZUltcGwgKlJlY3RJbXBs
Ojpib3R0b20oKSBjb25zdAotewotICAgIGlmKCFtX2JvdHRvbSkKLSAgICB7Ci0gICAgICAgIG1f
Ym90dG9tID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlSW1wbChtX2ludGVyZmFjZSk7IC8vIFRPRE86
IENoZWNrIGN0b3IKLSAgICAgICAgbV9ib3R0b20tPnJlZigpOwotICAgIH0KLQotICAgIHJldHVy
biBtX2JvdHRvbTsKLX0KLQotQ1NTUHJpbWl0aXZlVmFsdWVJbXBsICpSZWN0SW1wbDo6bGVmdCgp
IGNvbnN0Ci17Ci0gICAgaWYoIW1fbGVmdCkKLSAgICB7Ci0gICAgICAgIG1fbGVmdCA9IG5ldyBD
U1NQcmltaXRpdmVWYWx1ZUltcGwobV9pbnRlcmZhY2UpOyAvLyBUT0RPOiBDaGVjayBjdG9yCi0g
ICAgICAgIG1fbGVmdC0+cmVmKCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIG1fbGVmdDsKLX0KLQog
dm9pZCBSZWN0SW1wbDo6c2V0VG9wKENTU1ByaW1pdGl2ZVZhbHVlSW1wbCAqdG9wKQogewogICAg
IEtET01fU0FGRV9TRVQobV90b3AsIHRvcCk7CkluZGV4OiBrZG9tL2Nzcy9SZWN0SW1wbC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tkb20vY3NzL1JlY3RJbXBs
LmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMwpkaWZmIC1wIC11IC1yMS4zIGtkb20vY3NzL1Jl
Y3RJbXBsLmgKLS0tIGtkb20vY3NzL1JlY3RJbXBsLmgJMSBTZXAgMjAwNSAwNzozMzoxMSAtMDAw
MAkxLjMKKysrIGtkb20vY3NzL1JlY3RJbXBsLmgJNiBTZXAgMjAwNSAwOTo1ODo1NyAtMDAwMApA
QCAtMzYsMTAgKzM2LDEwIEBAIG5hbWVzcGFjZSBLRE9NCiAgICAgICAgIHZpcnR1YWwgflJlY3RJ
bXBsKCk7CiAKICAgICAgICAgLy8gJ1JlY3QnIGZ1bmN0aW9ucwotICAgICAgICBDU1NQcmltaXRp
dmVWYWx1ZUltcGwgKnRvcCgpIGNvbnN0OwotICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZUltcGwg
KnJpZ2h0KCkgY29uc3Q7Ci0gICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlSW1wbCAqYm90dG9tKCkg
Y29uc3Q7Ci0gICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlSW1wbCAqbGVmdCgpIGNvbnN0OworICAg
ICAgICBDU1NQcmltaXRpdmVWYWx1ZUltcGwgKnRvcCgpIGNvbnN0IHsgcmV0dXJuIG1fdG9wOyB9
CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlSW1wbCAqcmlnaHQoKSBjb25zdCB7IHJldHVybiBt
X3JpZ2h0OyB9CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlSW1wbCAqYm90dG9tKCkgY29uc3Qg
eyByZXR1cm4gbV9ib3R0b207IH0KKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWVJbXBsICpsZWZ0
KCkgY29uc3QgeyByZXR1cm4gbV9sZWZ0OyB9CiAKICAgICAgICAgdm9pZCBzZXRUb3AoQ1NTUHJp
bWl0aXZlVmFsdWVJbXBsICp0b3ApOwogICAgICAgICB2b2lkIHNldFJpZ2h0KENTU1ByaW1pdGl2
ZVZhbHVlSW1wbCAqcmlnaHQpOwpJbmRleDoga2RvbS9jc3MvUmVuZGVyU3R5bGUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tkb20vY3NzL1JlbmRlclN0eWxl
LmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS41CmRpZmYgLXAgLXUgLXIxLjUga2RvbS9jc3Mv
UmVuZGVyU3R5bGUuY3BwCi0tLSBrZG9tL2Nzcy9SZW5kZXJTdHlsZS5jcHAJMSBTZXAgMjAwNSAw
NzozMzoxMSAtMDAwMAkxLjUKKysrIGtkb20vY3NzL1JlbmRlclN0eWxlLmNwcAk2IFNlcCAyMDA1
IDA5OjU4OjU3IC0wMDAwCkBAIC0yNTAsNiArMjUwLDcgQEAgUmVuZGVyU3R5bGU6OkRpZmYgUmVu
ZGVyU3R5bGU6OmRpZmYoY29ucwogICAgICAgICEoaW5oZXJpdGVkLT5pbmRlbnQgPT0gb3RoZXIt
PmluaGVyaXRlZC0+aW5kZW50KSB8fAogICAgICAgICEoaW5oZXJpdGVkLT5saW5lSGVpZ2h0ID09
IG90aGVyLT5pbmhlcml0ZWQtPmxpbmVIZWlnaHQpIHx8CiAgICAgICAgIShpbmhlcml0ZWQtPnN0
eWxlSW1hZ2UgPT0gb3RoZXItPmluaGVyaXRlZC0+c3R5bGVJbWFnZSkgfHwKKyAgICAgICAhKGlu
aGVyaXRlZC0+Y3Vyc29ySW1hZ2UgPT0gb3RoZXItPmluaGVyaXRlZC0+Y3Vyc29ySW1hZ2UpIHx8
CiAgICAgICAgIShpbmhlcml0ZWQtPmZvbnQgPT0gb3RoZXItPmluaGVyaXRlZC0+Zm9udCkgfHwK
ICAgICAgICAhKGluaGVyaXRlZC0+Ym9yZGVySFNwYWNpbmcgPT0gb3RoZXItPmluaGVyaXRlZC0+
Ym9yZGVySFNwYWNpbmcpIHx8CiAgICAgICAgIShpbmhlcml0ZWQtPmJvcmRlclZTcGFjaW5nID09
IG90aGVyLT5pbmhlcml0ZWQtPmJvcmRlclZTcGFjaW5nKSkKSW5kZXg6IGtkb20vY3NzL1JlbmRl
clN0eWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1NWR1N1cHBvcnQva2RvbS9j
c3MvUmVuZGVyU3R5bGUuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS41CmRpZmYgLXAgLXUgLXIx
LjUga2RvbS9jc3MvUmVuZGVyU3R5bGUuaAotLS0ga2RvbS9jc3MvUmVuZGVyU3R5bGUuaAkxIFNl
cCAyMDA1IDA5OjM5OjA2IC0wMDAwCTEuNQorKysga2RvbS9jc3MvUmVuZGVyU3R5bGUuaAk2IFNl
cCAyMDA1IDA5OjU4OjU4IC0wMDAwCkBAIC0xOTIsNiArMTkyLDcgQEAgbmFtZXNwYWNlIEtET00K
ICAgICAgICAgUlNfREVGSU5FX0FUVFJJQlVURV9EQVRBUkVGX1dJVEhfSU5JVElBTChzaG9ydCwg
aW5oZXJpdGVkLCBvcnBoYW5zLCBPcnBoYW5zLCBvcnBoYW5zLCAyKQogICAgICAgICBSU19ERUZJ
TkVfQVRUUklCVVRFX0RBVEFSRUZfV0lUSF9JTklUSUFMKEVQYWdlQnJlYWssIGluaGVyaXRlZCwg
cGFnZUJyZWFrSW5zaWRlLCBQYWdlQnJlYWtJbnNpZGUsIHBhZ2VCcmVha0luc2lkZSwgUEJfQVVU
TykKICAgICAgICAgUlNfREVGSU5FX0FUVFJJQlVURV9EQVRBUkVGX1dJVEhfSU5JVElBTChDYWNo
ZWRJbWFnZSAqLCBpbmhlcml0ZWQsIHN0eWxlSW1hZ2UsIExpc3RTdHlsZUltYWdlLCBsaXN0U3R5
bGVJbWFnZSwgMCkKKyAgICAgICAgUlNfREVGSU5FX0FUVFJJQlVURV9EQVRBUkVGX1dJVEhfSU5J
VElBTChDU1NWYWx1ZUltcGwgKiwgaW5oZXJpdGVkLCBjdXJzb3JJbWFnZSwgQ3Vyc29ySW1hZ2Us
IGN1cnNvckltYWdlLCAwKQogCiAgICAgICAgIC8vIFNwZWNpYWwgY2FzZXMKICAgICAgICAgdm9p
ZCBzZXRIYXNBdXRvWkluZGV4KCkgeyBSU19TRVRfVkFSSUFCTEUoYm94LCB6QXV0bywgdHJ1ZSAp
OyB9CkluZGV4OiBrZG9tL2Nzcy9SZW5kZXJTdHlsZURlZnMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZp
bGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tkb20vY3NzL1JlbmRlclN0eWxlRGVmcy5jcHAsdgpy
ZXRyaWV2aW5nIHJldmlzaW9uIDEuNApkaWZmIC1wIC11IC1yMS40IGtkb20vY3NzL1JlbmRlclN0
eWxlRGVmcy5jcHAKLS0tIGtkb20vY3NzL1JlbmRlclN0eWxlRGVmcy5jcHAJMSBTZXAgMjAwNSAw
NzozMzoxMSAtMDAwMAkxLjQKKysrIGtkb20vY3NzL1JlbmRlclN0eWxlRGVmcy5jcHAJNiBTZXAg
MjAwNSAwOTo1ODo1OCAtMDAwMApAQCAtMTk1LDExICsxOTUsMTIgQEAgU3R5bGVJbmhlcml0ZWRE
YXRhOjpTdHlsZUluaGVyaXRlZERhdGEoKQogICAgIGluZGVudCA9IFJlbmRlclN0eWxlOjppbml0
aWFsVGV4dEluZGVudCgpOwogICAgIGxpbmVIZWlnaHQgPSBSZW5kZXJTdHlsZTo6aW5pdGlhbExp
bmVIZWlnaHQoKTsKICAgICBzdHlsZUltYWdlID0gUmVuZGVyU3R5bGU6OmluaXRpYWxMaXN0U3R5
bGVJbWFnZSgpOworICAgIGN1cnNvckltYWdlID0gUmVuZGVyU3R5bGU6OmluaXRpYWxDdXJzb3JJ
bWFnZSgpOwogICAgIGNvbG9yID0gUmVuZGVyU3R5bGU6OmluaXRpYWxDb2xvcigpOwogCiAgICAg
Ym9yZGVySFNwYWNpbmcgPSBSZW5kZXJTdHlsZTo6aW5pdGlhbEJvcmRlckhTcGFjaW5nKCk7Ci0g
ICAgICAgYm9yZGVyVlNwYWNpbmcgPSBSZW5kZXJTdHlsZTo6aW5pdGlhbEJvcmRlclZTcGFjaW5n
KCk7Ci0gICAgCisgICAgYm9yZGVyVlNwYWNpbmcgPSBSZW5kZXJTdHlsZTo6aW5pdGlhbEJvcmRl
clZTcGFjaW5nKCk7CisKICAgICBxdW90ZXMgPSAwOwogICAgIHdpZG93cyA9IFJlbmRlclN0eWxl
Ojppbml0aWFsV2lkb3dzKCk7CiAgICAgb3JwaGFucyA9IFJlbmRlclN0eWxlOjppbml0aWFsT3Jw
aGFucygpOwpAQCAtMjEwLDYgKzIxMSw3IEBAIFN0eWxlSW5oZXJpdGVkRGF0YTo6U3R5bGVJbmhl
cml0ZWREYXRhKGMKIHsKICAgICBpbmRlbnQgPSBvdGhlci5pbmRlbnQ7IGxpbmVIZWlnaHQgPSBv
dGhlci5saW5lSGVpZ2h0OwogICAgIHN0eWxlSW1hZ2UgPSBvdGhlci5zdHlsZUltYWdlOyBmb250
ID0gb3RoZXIuZm9udDsKKyAgICBjdXJzb3JJbWFnZSA9IG90aGVyLmN1cnNvckltYWdlOwogICAg
IGNvbG9yID0gb3RoZXIuY29sb3I7IGRlY29yYXRpb25Db2xvciA9IG90aGVyLmRlY29yYXRpb25D
b2xvcjsKICAgICBib3JkZXJIU3BhY2luZyA9IG90aGVyLmJvcmRlckhTcGFjaW5nOyBib3JkZXJW
U3BhY2luZyA9IG90aGVyLmJvcmRlclZTcGFjaW5nOwogICAgIHdpZG93cyA9IG90aGVyLndpZG93
czsgb3JwaGFucyA9IG90aGVyLm9ycGhhbnM7IHBhZ2VCcmVha0luc2lkZSA9IG90aGVyLnBhZ2VC
cmVha0luc2lkZTsKQEAgLTIyNCw2ICsyMjYsNyBAQCBib29sIFN0eWxlSW5oZXJpdGVkRGF0YTo6
b3BlcmF0b3I9PShjb25zCiAgICAgcmV0dXJuIChpbmRlbnQgPT0gb3RoZXIuaW5kZW50KSAmJiAo
bGluZUhlaWdodCA9PSBvdGhlci5saW5lSGVpZ2h0KSAmJgogICAgICAgICAgICAoYm9yZGVySFNw
YWNpbmcgPT0gb3RoZXIuYm9yZGVySFNwYWNpbmcpICYmIChib3JkZXJWU3BhY2luZyA9PSBvdGhl
ci5ib3JkZXJWU3BhY2luZykgJiYKICAgICAgICAgICAgKHN0eWxlSW1hZ2UgPT0gb3RoZXIuc3R5
bGVJbWFnZSkgJiYgKGZvbnQgPT0gb3RoZXIuZm9udCkgJiYKKyAgICAgICAgICAgKGN1cnNvcklt
YWdlID09IG90aGVyLmN1cnNvckltYWdlKSAmJgogICAgICAgICAgICAoY29sb3IgPT0gb3RoZXIu
Y29sb3IpICYmIChkZWNvcmF0aW9uQ29sb3IgPT0gb3RoZXIuZGVjb3JhdGlvbkNvbG9yKSAmJgog
ICAgICAgICAgICAod2lkb3dzID09IG90aGVyLndpZG93cykgJiYgKG9ycGhhbnMgPT0gb3RoZXIu
b3JwaGFucykgJiYKICAgICAgICAgICAgKHBhZ2VCcmVha0luc2lkZSA9PSBvdGhlci5wYWdlQnJl
YWtJbnNpZGUpICYmIChxdW90ZXMgPT0gb3RoZXIucXVvdGVzKTsKSW5kZXg6IGtkb20vY3NzL1Jl
bmRlclN0eWxlRGVmcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0
L2tkb20vY3NzL1JlbmRlclN0eWxlRGVmcy5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjUKZGlm
ZiAtcCAtdSAtcjEuNSBrZG9tL2Nzcy9SZW5kZXJTdHlsZURlZnMuaAotLS0ga2RvbS9jc3MvUmVu
ZGVyU3R5bGVEZWZzLmgJMSBTZXAgMjAwNSAwOTozOTowNiAtMDAwMAkxLjUKKysrIGtkb20vY3Nz
L1JlbmRlclN0eWxlRGVmcy5oCTYgU2VwIDIwMDUgMDk6NTg6NTggLTAwMDAKQEAgLTUzNCw2ICs1
MzQsNyBAQCBuYW1lc3BhY2UgS0RPTQogICAgICAgICBMZW5ndGggbGluZUhlaWdodDsKIAogICAg
ICAgICBDYWNoZWRJbWFnZSAqc3R5bGVJbWFnZTsKKyAgICAgICAgQ1NTVmFsdWVJbXBsICpjdXJz
b3JJbWFnZTsKIAogICAgICAgICBGb250IGZvbnQ7CiAgICAgICAgIFFDb2xvciBjb2xvcjsKSW5k
ZXg6IGtkb20vY3NzL1N0eWxlQmFzZUltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMv
cm9vdC9TVkdTdXBwb3J0L2tkb20vY3NzL1N0eWxlQmFzZUltcGwuY3BwLHYKcmV0cmlldmluZyBy
ZXZpc2lvbiAxLjYKZGlmZiAtcCAtdSAtcjEuNiBrZG9tL2Nzcy9TdHlsZUJhc2VJbXBsLmNwcAot
LS0ga2RvbS9jc3MvU3R5bGVCYXNlSW1wbC5jcHAJMiBTZXAgMjAwNSAxMDowMzowNSAtMDAwMAkx
LjYKKysrIGtkb20vY3NzL1N0eWxlQmFzZUltcGwuY3BwCTYgU2VwIDIwMDUgMDk6NTg6NTkgLTAw
MDAKQEAgLTIyNiw3ICsyMjYsNyBAQCB2b2lkIENTU1NlbGVjdG9yOjpwcmludCgpCiAjaWZuZGVm
IEFQUExFX0NIQU5HRVMKICAgICBrZERlYnVnKDYwODApIDw8ICJbU2VsZWN0b3I6IHRhZyA9ICIg
PDwgUVN0cmluZzo6bnVtYmVyKHRhZywgMTYpCiAgICAgICAgICAgICAgICAgICA8PCAiLCBhdHRy
ID0gXCIiIDw8IGF0dHIgPDwgIlwiLCBtYXRjaCA9IFwiIiA8PCBtYXRjaAotICAgICAgICAgICAg
ICAgICAgPDwgIlwiIHZhbHVlID0gXCIiIDw8IERPTVN0cmluZyh2YWx1ZSkuc3RyaW5nKCkubGF0
aW4xKCkKKyAgICAgICAgICAgICAgICAgIDw8ICJcIiB2YWx1ZSA9IFwiIiA8PCAodmFsdWUgPyB2
YWx1ZS0+c3RyaW5nKCkudW5pY29kZSgpIDogMCkKICAgICAgICAgICAgICAgICAgIDw8ICJcIiBy
ZWxhdGlvbiA9ICIgPDwgKGludCkgcmVsYXRpb24gICAgPDwgIl0iIDw8IGVuZGw7CiAjZW5kaWYK
IApAQCAtMjkxLDcgKzI5MSw3IEBAIHZvaWQgQ1NTU2VsZWN0b3I6OmV4dHJhY3RQc2V1ZG9UeXBl
KCkgY28KICAgICB7CiAgICAgICAgIHZhbHVlID0gdmFsdWUtPmxvd2VyKCk7CiAgICAgICAgIERP
TVN0cmluZyBfdmFsdWUodmFsdWUpOwotICAgICAgICBzd2l0Y2goX3ZhbHVlWzBdLmxhdGluMSgp
KQorICAgICAgICBzd2l0Y2goX3ZhbHVlWzBdLnVuaWNvZGUoKSkKICAgICAgICAgewogICAgICAg
ICAgICAgY2FzZSAnYSc6CiAgICAgICAgICAgICB7CkluZGV4OiBrZG9tL2V2ZW50cy9FdmVudFRh
cmdldEltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tk
b20vZXZlbnRzL0V2ZW50VGFyZ2V0SW1wbC5jcHAsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNQpk
aWZmIC1wIC11IC1yMS41IGtkb20vZXZlbnRzL0V2ZW50VGFyZ2V0SW1wbC5jcHAKLS0tIGtkb20v
ZXZlbnRzL0V2ZW50VGFyZ2V0SW1wbC5jcHAJMiBTZXAgMjAwNSAxMDowMzoxMCAtMDAwMAkxLjUK
KysrIGtkb20vZXZlbnRzL0V2ZW50VGFyZ2V0SW1wbC5jcHAJNiBTZXAgMjAwNSAwOTo1ODo1OSAt
MDAwMApAQCAtMjIsNiArMjIsOCBAQAogCiAjaW5jbHVkZSA8a2pzL2ludGVycHJldGVyLmg+CiAK
KyNpbmNsdWRlIDxrZG9tL2VjbWEvRWNtYS5oPgorCiAjaW5jbHVkZSAiRXZlbnRJbXBsLmgiCiAj
aW5jbHVkZSAiRG9jdW1lbnRJbXBsLmgiCiAjaW5jbHVkZSAiRXZlbnRUYXJnZXRJbXBsLmgiCkBA
IC00Nyw2ICs0OSw5IEBAIHZvaWQgRXZlbnRUYXJnZXRJbXBsOjphZGRFdmVudExpc3RlbmVyKEQK
ICAgICBpZighbGlzdGVuZXIpCiAgICAgICAgIHJldHVybjsKIAorCWlmKHR5cGUpCisJCXR5cGUt
PnJlZigpOworCiAgICAgLy8gSWYgdGhlIHJlcXVlc3RlZCBsaXN0ZW5lciBpcyBidWlsdGluIChp
ZS4gRE9NTk9ERVJFTU9WRURfRVZFTlQpCiAgICAgLy8gd2UnbGwgY2FjaGUgdGhlIHNwZWNpZmlj
IGVudW1lcmF0aW9uIHZhbHVlIHRvIHNhdmUgc3BhY2UKICAgICAvLyBidXQgaW4gY2FzZSBvZiBh
IGN1c3RvbSBldmVudCAoaWUuIGFzIHVzZWQgaW4gdGhlIGRvbTIgZXZlbnRzIHRlc3Qgc3VpdGUp
CkBAIC04Niw2ICs5MSw5IEBAIHZvaWQgRXZlbnRUYXJnZXRJbXBsOjphZGRFdmVudExpc3RlbmVy
KEQKIAogICAgIGFkZExpc3RlbmVyVHlwZShkb2MtPmFkZExpc3RlbmVyVHlwZSh0eXBlKSk7CiAg
ICAgbV9ldmVudExpc3RlbmVycy0+YXBwZW5kKG5ldyBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lcih0
eXBlLCBsaXN0ZW5lciwgdXNlQ2FwdHVyZSkpOworCisJaWYodHlwZSkKKwkJdHlwZS0+ZGVyZWYo
KTsKIH0KIAogdm9pZCBFdmVudFRhcmdldEltcGw6OnJlbW92ZUV2ZW50TGlzdGVuZXIoRE9NU3Ry
aW5nSW1wbCAqdHlwZSwgRXZlbnRMaXN0ZW5lckltcGwgKmxpc3RlbmVyLCBib29sIHVzZUNhcHR1
cmUpCkluZGV4OiBrZG9tL2xzL0RPTUltcGxlbWVudGF0aW9uTFNJbXBsLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
ClJDUyBmaWxlOiBrZG9tL2xzL0RPTUltcGxlbWVudGF0aW9uTFNJbXBsLmNwcApkaWZmIC1OIGtk
b20vbHMvRE9NSW1wbGVtZW50YXRpb25MU0ltcGwuY3BwCi0tLSBrZG9tL2xzL0RPTUltcGxlbWVu
dGF0aW9uTFNJbXBsLmNwcAkxIEphbiAxOTcwIDAwOjAwOjAwIC0wMDAwCisrKyBrZG9tL2xzL0RP
TUltcGxlbWVudGF0aW9uTFNJbXBsLmNwcAk2IFNlcCAyMDA1IDA5OjU4OjU5IC0wMDAwCkBAIC0w
LDAgKzEsNzQgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IE5pa29sYXMgWmlt
bWVybWFubiA8d2lsZGZveEBrZGUub3JnPgorICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSBS
b2IgQnVpcyA8YnVpc0BrZGUub3JnPgorCisgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtE
RSBwcm9qZWN0CisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAg
ICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisg
ICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsCisgICAgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBV
U0EuCisqLworCisjaW5jbHVkZSAiRE9NSW1wbGVtZW50YXRpb25MU0ltcGwuaCIKKworI2luY2x1
ZGUgImtkb20uaCIKKyNpbmNsdWRlICJrZG9tbHMuaCIKKyNpbmNsdWRlICJOYW1lc3BhY2UuaCIK
KyNpbmNsdWRlICJMU0lucHV0SW1wbC5oIgorI2luY2x1ZGUgIkxTT3V0cHV0SW1wbC5oIgorI2lu
Y2x1ZGUgIkxTUGFyc2VySW1wbC5oIgorI2luY2x1ZGUgIkRPTVN0cmluZ0ltcGwuaCIKKyNpbmNs
dWRlICJET01FeGNlcHRpb25JbXBsLmgiCisjaW5jbHVkZSAiTFNTZXJpYWxpemVySW1wbC5oIgor
Cit1c2luZyBuYW1lc3BhY2UgS0RPTTsKKworRE9NSW1wbGVtZW50YXRpb25MU0ltcGw6OkRPTUlt
cGxlbWVudGF0aW9uTFNJbXBsKCkKK3sKK30KKworRE9NSW1wbGVtZW50YXRpb25MU0ltcGw6On5E
T01JbXBsZW1lbnRhdGlvbkxTSW1wbCgpCit7Cit9CisKK0xTUGFyc2VySW1wbCAqRE9NSW1wbGVt
ZW50YXRpb25MU0ltcGw6OmNyZWF0ZUxTUGFyc2VyKHVuc2lnbmVkIHNob3J0IG1vZGUsIERPTVN0
cmluZ0ltcGwgKnNjaGVtYVR5cGVJbXBsKSBjb25zdAoreworICAgIFFTdHJpbmcgc2NoZW1hVHlw
ZSA9IHNjaGVtYVR5cGVJbXBsID8gc2NoZW1hVHlwZUltcGwtPnN0cmluZygpIDogUVN0cmluZygp
OworCisgICAgLy8gTk9UX1NVUFBPUlRFRF9FUlI6IFJhaXNlZCBpZiB0aGUgcmVxdWVzdGVkIG1v
ZGUgb3Igc2NoZW1hIHR5cGUgaXMgbm90IHN1cHBvcnRlZC4KKyAgICBpZigobW9kZSA9PSAwIHx8
IG1vZGUgPiBNT0RFX0FTWU5DSFJPTk9VUykgfHwKKyAgICAgICAgIShzY2hlbWFUeXBlID09IE5T
X1NDSEVNQVRZUEVfRFREIHx8IHNjaGVtYVR5cGUgPT0gTlNfU0NIRU1BVFlQRV9XWFMgfHwgc2No
ZW1hVHlwZS5pc0VtcHR5KCkpKQorICAgICAgICB0aHJvdyBuZXcgRE9NRXhjZXB0aW9uSW1wbChO
T1RfU1VQUE9SVEVEX0VSUik7CisKKyAgICBMU1BhcnNlckltcGwgKnJldCA9IG5ldyBMU1BhcnNl
ckltcGwoKTsKKyAgICByZXQtPnNldEFTeW5jKG1vZGUgPT0gTU9ERV9BU1lOQ0hST05PVVMpOwor
ICAgIHJldHVybiByZXQ7Cit9CisKK0xTSW5wdXRJbXBsICpET01JbXBsZW1lbnRhdGlvbkxTSW1w
bDo6Y3JlYXRlTFNJbnB1dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG5ldyBMU0lucHV0SW1wbCgp
OworfQorCitMU091dHB1dEltcGwgKkRPTUltcGxlbWVudGF0aW9uTFNJbXBsOjpjcmVhdGVMU091
dHB1dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG5ldyBMU091dHB1dEltcGwoKTsKK30KKworTFNT
ZXJpYWxpemVySW1wbCAqRE9NSW1wbGVtZW50YXRpb25MU0ltcGw6OmNyZWF0ZUxTU2VyaWFsaXpl
cigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG5ldyBMU1NlcmlhbGl6ZXJJbXBsKCk7Cit9CisKKy8v
IHZpbTp0cz00Om5vZXQKSW5kZXg6IGtkb20vbHMvRE9NSW1wbGVtZW50YXRpb25MU0ltcGwuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09ClJDUyBmaWxlOiBrZG9tL2xzL0RPTUltcGxlbWVudGF0aW9uTFNJbXBsLmgKZGlm
ZiAtTiBrZG9tL2xzL0RPTUltcGxlbWVudGF0aW9uTFNJbXBsLmgKLS0tIGtkb20vbHMvRE9NSW1w
bGVtZW50YXRpb25MU0ltcGwuaAkxIEphbiAxOTcwIDAwOjAwOjAwIC0wMDAwCisrKyBrZG9tL2xz
L0RPTUltcGxlbWVudGF0aW9uTFNJbXBsLmgJNiBTZXAgMjAwNSAwOTo1ODo1OSAtMDAwMApAQCAt
MCwwICsxLDUxIEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBOaWtvbGFzIFpp
bW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KKyAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUg
Um9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KKworICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBL
REUgcHJvamVjdAorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisg
ICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor
ICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJ
ZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwg
NTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLAorICAgIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywg
VVNBLgorKi8KKworI2lmbmRlZiBLRE9NX0RPTUltcGxlbWVudGF0aW9uTFNJbXBsX0gKKyNkZWZp
bmUgS0RPTV9ET01JbXBsZW1lbnRhdGlvbkxTSW1wbF9ICisKK25hbWVzcGFjZSBLRE9NCit7Cisg
ICAgY2xhc3MgTFNJbnB1dEltcGw7CisgICAgY2xhc3MgTFNPdXRwdXRJbXBsOworICAgIGNsYXNz
IExTUGFyc2VySW1wbDsKKyAgICBjbGFzcyBET01TdHJpbmdJbXBsOworICAgIGNsYXNzIExTU2Vy
aWFsaXplckltcGw7CisKKyAgICBjbGFzcyBET01JbXBsZW1lbnRhdGlvbkxTSW1wbAorICAgIHsK
KyAgICBwdWJsaWM6CisgICAgICAgIERPTUltcGxlbWVudGF0aW9uTFNJbXBsKCk7CisgICAgICAg
IHZpcnR1YWwgfkRPTUltcGxlbWVudGF0aW9uTFNJbXBsKCk7CisKKyAgICAgICAgLy8gJ0RPTUlt
cGxlbWVudGF0aW9uTFMnIGZ1bmN0aW9ucworICAgICAgICB2aXJ0dWFsIExTUGFyc2VySW1wbCAq
Y3JlYXRlTFNQYXJzZXIodW5zaWduZWQgc2hvcnQgbW9kZSwgRE9NU3RyaW5nSW1wbCAqc2NoZW1h
VHlwZSkgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgTFNJbnB1dEltcGwgKmNyZWF0ZUxTSW5wdXQo
KSBjb25zdDsKKyAgICAgICAgdmlydHVhbCBMU091dHB1dEltcGwgKmNyZWF0ZUxTT3V0cHV0KCkg
Y29uc3Q7CisgICAgICAgIHZpcnR1YWwgTFNTZXJpYWxpemVySW1wbCAqY3JlYXRlTFNTZXJpYWxp
emVyKCkgY29uc3Q7CisKKyAgICB9OworfTsKKworI2VuZGlmCisKKy8vIHZpbTp0cz00Om5vZXQK
SW5kZXg6IGtkb20vbHMvTFNQYXJzZXJJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3Zz
L3Jvb3QvU1ZHU3VwcG9ydC9rZG9tL2xzL0xTUGFyc2VySW1wbC5jcHAsdgpyZXRyaWV2aW5nIHJl
dmlzaW9uIDEuNQpkaWZmIC1wIC11IC1yMS41IGtkb20vbHMvTFNQYXJzZXJJbXBsLmNwcAotLS0g
a2RvbS9scy9MU1BhcnNlckltcGwuY3BwCTIgU2VwIDIwMDUgMTA6MDM6MTAgLTAwMDAJMS41Cisr
KyBrZG9tL2xzL0xTUGFyc2VySW1wbC5jcHAJNiBTZXAgMjAwNSAwOTo1ODo1OSAtMDAwMApAQCAt
MjI5LDkgKzIyOSw5IEBAIERvY3VtZW50SW1wbCAqTFNQYXJzZXJJbXBsOjpwYXJzZShMU0lucHUK
ICAgICByZXR1cm4gcGFyc2UoS1VSTCgpLCBpbnB1dCwgbV9hc3luYyk7CiB9CiAKLURvY3VtZW50
SW1wbCAqTFNQYXJzZXJJbXBsOjpwYXJzZVVSSShjb25zdCBET01TdHJpbmcgJnVyaSkKK0RvY3Vt
ZW50SW1wbCAqTFNQYXJzZXJJbXBsOjpwYXJzZVVSSShET01TdHJpbmdJbXBsICp1cmkpCiB7Ci0g
ICAgcmV0dXJuIHBhcnNlKEtVUkwodXJpLnN0cmluZygpKSwgMCwgbV9hc3luYyk7CisgICAgcmV0
dXJuIHBhcnNlKEtVUkwodXJpID8gdXJpLT5zdHJpbmcoKSA6IFFTdHJpbmcoKSksIDAsIG1fYXN5
bmMpOwogfQogCiB2b2lkIExTUGFyc2VySW1wbDo6YWJvcnQoKSBjb25zdApJbmRleDoga2RvbS9s
cy9MU1BhcnNlckltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvU1ZHU3VwcG9y
dC9rZG9tL2xzL0xTUGFyc2VySW1wbC5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjQKZGlmZiAt
cCAtdSAtcjEuNCBrZG9tL2xzL0xTUGFyc2VySW1wbC5oCi0tLSBrZG9tL2xzL0xTUGFyc2VySW1w
bC5oCTEgU2VwIDIwMDUgMDk6Mzk6MTAgLTAwMDAJMS40CisrKyBrZG9tL2xzL0xTUGFyc2VySW1w
bC5oCTYgU2VwIDIwMDUgMDk6NTg6NTkgLTAwMDAKQEAgLTU5LDcgKzU5LDcgQEAgbmFtZXNwYWNl
IEtET00KICAgICAgICAgYm9vbCBidXN5KCkgY29uc3Q7CiAKICAgICAgICAgRG9jdW1lbnRJbXBs
ICpwYXJzZShMU0lucHV0SW1wbCAqaW5wdXQpOwotICAgICAgICBEb2N1bWVudEltcGwgKnBhcnNl
VVJJKGNvbnN0IERPTVN0cmluZyAmdXJpKTsKKyAgICAgICAgRG9jdW1lbnRJbXBsICpwYXJzZVVS
SShET01TdHJpbmdJbXBsICp1cmkpOwogCiAgICAgICAgIE5vZGVJbXBsICpwYXJzZVdpdGhDb250
ZXh0KExTSW5wdXRJbXBsICppbnB1dCwgTm9kZUltcGwgKmNvbnRleHRBcmcsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHNob3J0IGFjdGlvbik7CkluZGV4OiBr
ZG9tL2xzL0xTUmVzb3VyY2VSZXNvbHZlckltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9j
dnMvcm9vdC9TVkdTdXBwb3J0L2tkb20vbHMvTFNSZXNvdXJjZVJlc29sdmVySW1wbC5jcHAsdgpy
ZXRyaWV2aW5nIHJldmlzaW9uIDEuMwpkaWZmIC1wIC11IC1yMS4zIGtkb20vbHMvTFNSZXNvdXJj
ZVJlc29sdmVySW1wbC5jcHAKLS0tIGtkb20vbHMvTFNSZXNvdXJjZVJlc29sdmVySW1wbC5jcHAJ
MSBTZXAgMjAwNSAwNzozMzo1MSAtMDAwMAkxLjMKKysrIGtkb20vbHMvTFNSZXNvdXJjZVJlc29s
dmVySW1wbC5jcHAJNiBTZXAgMjAwNSAwOTo1ODo1OSAtMDAwMApAQCAtMzMsMTAgKzMzLDEwIEBA
IExTUmVzb3VyY2VSZXNvbHZlckltcGw6On5MU1Jlc291cmNlUmVzb2wKIHsKIH0KIAotTFNJbnB1
dEltcGwgKkxTUmVzb3VyY2VSZXNvbHZlckltcGw6OnJlc29sdmVSZXNvdXJjZShjb25zdCBET01T
dHJpbmcgJi8qdHlwZSovLCBjb25zdCBET01TdHJpbmcgJi8qbnMqLywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IERPTVN0cmluZyAm
LypwdWJsaWNJZCovLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBET01TdHJpbmcgJi8qc3lzdGVtSWQqLywgCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IERPTVN0cmluZyAm
LypiYXNlVVJJKi8pCitMU0lucHV0SW1wbCAqTFNSZXNvdXJjZVJlc29sdmVySW1wbDo6cmVzb2x2
ZVJlc291cmNlKERPTVN0cmluZ0ltcGwgKiAvKnR5cGUqLywgRE9NU3RyaW5nSW1wbCAqIC8qbnMq
LywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RE9NU3RyaW5nSW1wbCAqIC8qcHVibGljSWQqLywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRE9NU3RyaW5nSW1wbCAqIC8qc3lzdGVtSWQqLywg
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERP
TVN0cmluZ0ltcGwgKiAvKmJhc2VVUkkqLykKIHsKICAgICAvKiBIbSwgIlJldHVybiBWYWx1ZTog
QSBMU0lucHV0IG9iamVjdCBkZXNjcmliaW5nIHRoZSBuZXcgCiAgICAgICogaW5wdXQgc291cmNl
LCBvciBudWxsIHRvIHJlcXVlc3QgdGhhdCB0aGUgcGFyc2VyIG9wZW4gYSAKSW5kZXg6IGtkb20v
bHMvTFNSZXNvdXJjZVJlc29sdmVySW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9v
dC9TVkdTdXBwb3J0L2tkb20vbHMvTFNSZXNvdXJjZVJlc29sdmVySW1wbC5oLHYKcmV0cmlldmlu
ZyByZXZpc2lvbiAxLjIKZGlmZiAtcCAtdSAtcjEuMiBrZG9tL2xzL0xTUmVzb3VyY2VSZXNvbHZl
ckltcGwuaAotLS0ga2RvbS9scy9MU1Jlc291cmNlUmVzb2x2ZXJJbXBsLmgJMSBTZXAgMjAwNSAw
NzozMzo1MSAtMDAwMAkxLjIKKysrIGtkb20vbHMvTFNSZXNvdXJjZVJlc29sdmVySW1wbC5oCTYg
U2VwIDIwMDUgMDk6NTk6MDAgLTAwMDAKQEAgLTI2LDcgKzI2LDcgQEAKIAogbmFtZXNwYWNlIEtE
T00KIHsKLSAgICBjbGFzcyBET01TdHJpbmc7CisgICAgY2xhc3MgRE9NU3RyaW5nSW1wbDsKICAg
ICBjbGFzcyBMU0lucHV0SW1wbDsKIAogICAgIGNsYXNzIExTUmVzb3VyY2VSZXNvbHZlckltcGwg
OiBwdWJsaWMgU2hhcmVkCkBAIC0zNSw5ICszNSw5IEBAIG5hbWVzcGFjZSBLRE9NCiAgICAgICAg
IExTUmVzb3VyY2VSZXNvbHZlckltcGwoKTsKICAgICAgICAgdmlydHVhbCB+TFNSZXNvdXJjZVJl
c29sdmVySW1wbCgpOwogCi0gICAgICAgIExTSW5wdXRJbXBsICpyZXNvbHZlUmVzb3VyY2UoY29u
c3QgRE9NU3RyaW5nICZ0eXBlLCBjb25zdCBET01TdHJpbmcgJm5zLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IERPTVN0cmluZyAmcHVibGljSWQsIGNvbnN0IERP
TVN0cmluZyAmc3lzdGVtSWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgRE9NU3RyaW5nICZiYXNlVVJJKTsKKyAgICAgICAgTFNJbnB1dEltcGwgKnJlc29sdmVS
ZXNvdXJjZShET01TdHJpbmdJbXBsICp0eXBlLCBET01TdHJpbmdJbXBsICpucywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBET01TdHJpbmdJbXBsICpwdWJsaWNJZCwgRE9N
U3RyaW5nSW1wbCAqc3lzdGVtSWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRE9NU3RyaW5nSW1wbCAqYmFzZVVSSSk7CiAKICAgICB9OwogfTsKSW5kZXg6IGtkb20vbHMv
TFNTZXJpYWxpemVySW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1NWR1N1
cHBvcnQva2RvbS9scy9MU1NlcmlhbGl6ZXJJbXBsLmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24g
MS40CmRpZmYgLXAgLXUgLXIxLjQga2RvbS9scy9MU1NlcmlhbGl6ZXJJbXBsLmNwcAotLS0ga2Rv
bS9scy9MU1NlcmlhbGl6ZXJJbXBsLmNwcAkxIFNlcCAyMDA1IDA3OjMzOjUxIC0wMDAwCTEuNAor
Kysga2RvbS9scy9MU1NlcmlhbGl6ZXJJbXBsLmNwcAk2IFNlcCAyMDA1IDA5OjU5OjAwIC0wMDAw
CkBAIC03NCw5ICs3NCw5IEBAIERPTUNvbmZpZ3VyYXRpb25JbXBsICpMU1NlcmlhbGl6ZXJJbXBs
OjoKICAgICByZXR1cm4gbV9jb25maWc7CiB9CiAKLURPTVN0cmluZyBMU1NlcmlhbGl6ZXJJbXBs
OjpuZXdMaW5lKCkgY29uc3QKK0RPTVN0cmluZ0ltcGwgKkxTU2VyaWFsaXplckltcGw6Om5ld0xp
bmUoKSBjb25zdAogewotICAgIHJldHVybiBET01TdHJpbmcobV9uZXdMaW5lKTsKKyAgICByZXR1
cm4gbV9uZXdMaW5lOwogfQogCiB2b2lkIExTU2VyaWFsaXplckltcGw6OnNldE5ld0xpbmUoRE9N
U3RyaW5nSW1wbCAqbmV3TGluZSkKQEAgLTEzNywxMiArMTM3LDEyIEBAIGJvb2wgTFNTZXJpYWxp
emVySW1wbDo6d3JpdGVUb1VSSShOb2RlSW0KICAgICByZXR1cm4gc2VyaWFsaXplKG5vZGVBcmcs
ICZvdXRwdXQpOwogfQogCi1ET01TdHJpbmcgTFNTZXJpYWxpemVySW1wbDo6d3JpdGVUb1N0cmlu
ZyhOb2RlSW1wbCAqbm9kZUFyZykKK0RPTVN0cmluZ0ltcGwgKkxTU2VyaWFsaXplckltcGw6Ondy
aXRlVG9TdHJpbmcoTm9kZUltcGwgKm5vZGVBcmcpCiB7CiAgICAgUVN0cmluZyBzdHI7CiAgICAg
UVRleHRPU3RyZWFtIHN1YnNldCgmc3RyKTsKICAgICBQcmludE5vZGUoc3Vic2V0LCBub2RlQXJn
LCBRU3RyaW5nOjpmcm9tTGF0aW4xKCIgICIpLCBET01TdHJpbmcobV9uZXdMaW5lKS5zdHJpbmco
KSwgMCwgbV9jb25maWcpOwotICAgIHJldHVybiBzdHI7CisgICAgcmV0dXJuIG5ldyBET01TdHJp
bmdJbXBsKHN0cik7CiB9CiAKIHZvaWQgTFNTZXJpYWxpemVySW1wbDo6UHJpbnRJbnRlcm5hbFN1
YnNldChRVGV4dFN0cmVhbSAmcmV0LCBEb2N1bWVudFR5cGVJbXBsICpkb2NUeXBlLApAQCAtNDQ4
LDcgKzQ0OCw3IEBAIERPTVN0cmluZ0ltcGwgKkxTU2VyaWFsaXplckltcGw6OmVzY2FwZSgKICAg
ICAgICAgZWxzZSBpZihlc2NhcGVlW2ldID09ICcmJykKICAgICAgICAgICAgIHJlc3VsdC0+YXBw
ZW5kKCImYW1wOyIpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXN1bHQtPmFwcGVuZChl
c2NhcGVlW2ldKTsKKyAgICAgICAgICAgIHJlc3VsdC0+YXBwZW5kKFFTdHJpbmcoZXNjYXBlZVtp
XSkpOwogICAgIH0KIAogICAgIHJldHVybiByZXN1bHQ7CkBAIC00NzUsNyArNDc1LDcgQEAgRE9N
U3RyaW5nSW1wbCAqTFNTZXJpYWxpemVySW1wbDo6ZXNjYXBlQQogICAgICAgICBlbHNlIGlmKGVz
Y2FwZWVbaV0gPT0gJ1wnJykKICAgICAgICAgICAgIHJlc3VsdC0+YXBwZW5kKCImYXBvczsiKTsK
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgcmVzdWx0LT5hcHBlbmQoZXNjYXBlZVtpXSk7Cisg
ICAgICAgICAgICByZXN1bHQtPmFwcGVuZChRU3RyaW5nKGVzY2FwZWVbaV0pKTsKICAgICB9CiAK
ICAgICByZXR1cm4gcmVzdWx0OwpJbmRleDoga2RvbS9scy9MU1NlcmlhbGl6ZXJJbXBsLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1NWR1N1cHBvcnQva2RvbS9scy9MU1NlcmlhbGl6
ZXJJbXBsLmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNApkaWZmIC1wIC11IC1yMS40IGtkb20v
bHMvTFNTZXJpYWxpemVySW1wbC5oCi0tLSBrZG9tL2xzL0xTU2VyaWFsaXplckltcGwuaAkxIFNl
cCAyMDA1IDA3OjMzOjUxIC0wMDAwCTEuNAorKysga2RvbS9scy9MU1NlcmlhbGl6ZXJJbXBsLmgJ
NiBTZXAgMjAwNSAwOTo1OTowMCAtMDAwMApAQCAtMzEsNyArMzEsNyBAQCBjbGFzcyBRVGV4dFN0
cmVhbTsKIG5hbWVzcGFjZSBLRE9NCiB7CiAgICAgY2xhc3MgTm9kZUltcGw7Ci0gICAgY2xhc3Mg
RE9NU3RyaW5nOworICAgIGNsYXNzIERPTVN0cmluZ0ltcGw7CiAgICAgY2xhc3MgRE9NQ29uZmln
dXJhdGlvbkltcGw7CiAgICAgY2xhc3MgTFNPdXRwdXRJbXBsOwogICAgIGNsYXNzIExTU2VyaWFs
aXplckZpbHRlckltcGw7CkBAIC00Niw3ICs0Niw3IEBAIG5hbWVzcGFjZSBLRE9NCiAgICAgICAg
IC8vICdMU1NlcmlhbGl6ZXInIGZ1bmN0aW9ucwogICAgICAgICBET01Db25maWd1cmF0aW9uSW1w
bCAqZG9tQ29uZmlnKCkgY29uc3Q7CiAKLSAgICAgICAgRE9NU3RyaW5nIG5ld0xpbmUoKSBjb25z
dDsKKyAgICAgICAgRE9NU3RyaW5nSW1wbCAqbmV3TGluZSgpIGNvbnN0OwogICAgICAgICB2b2lk
IHNldE5ld0xpbmUoRE9NU3RyaW5nSW1wbCAqbmV3TGluZSk7CiAKICAgICAgICAgTFNTZXJpYWxp
emVyRmlsdGVySW1wbCAqZmlsdGVyKCkgY29uc3Q7CkBAIC01NCw3ICs1NCw3IEBAIG5hbWVzcGFj
ZSBLRE9NCiAKICAgICAgICAgYm9vbCB3cml0ZShOb2RlSW1wbCAqbm9kZUFyZywgTFNPdXRwdXRJ
bXBsICpvdXRwdXQpOwogICAgICAgICBib29sIHdyaXRlVG9VUkkoTm9kZUltcGwgKm5vZGVBcmcs
IERPTVN0cmluZ0ltcGwgKnVyaSk7Ci0gICAgICAgIERPTVN0cmluZyB3cml0ZVRvU3RyaW5nKE5v
ZGVJbXBsICpub2RlQXJnKTsKKyAgICAgICAgRE9NU3RyaW5nSW1wbCAqd3JpdGVUb1N0cmluZyhO
b2RlSW1wbCAqbm9kZUFyZyk7CiAKICAgICAgICAgLy8gSW50ZXJuYWwKICAgICAgICAgc3RhdGlj
IHZvaWQgUHJpbnROb2RlKFFUZXh0U3RyZWFtICZyZXQsIE5vZGVJbXBsICpub2RlLApJbmRleDog
a2RvbS9wYXJzZXIvS0RPTVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290
L1NWR1N1cHBvcnQva2RvbS9wYXJzZXIvS0RPTVBhcnNlci5jcHAsdgpyZXRyaWV2aW5nIHJldmlz
aW9uIDEuNApkaWZmIC1wIC11IC1yMS40IGtkb20vcGFyc2VyL0tET01QYXJzZXIuY3BwCi0tLSBr
ZG9tL3BhcnNlci9LRE9NUGFyc2VyLmNwcAkxIFNlcCAyMDA1IDA3OjMzOjU0IC0wMDAwCTEuNAor
Kysga2RvbS9wYXJzZXIvS0RPTVBhcnNlci5jcHAJNiBTZXAgMjAwNSAwOTo1OTowMCAtMDAwMApA
QCAtMjEyLDE0ICsyMTIsMTYgQEAgUUJ1ZmZlciAqUGFyc2VyOjpidWZmZXJGb3JVcmwoY29uc3Qg
S1VSTAogICAgICAgICByZXR1cm4gMDsKIAogICAgIFFGaWxlIGZpbGUodGVtcG9yYXJ5RmlsZU5h
bWUpOwotICAgIGlmKCFmaWxlLm9wZW4oSU9fUmVhZE9ubHkpKQorICAgIGlmKCFmaWxlLm9wZW4o
UUlPRGV2aWNlOjpSZWFkT25seSkpCiAgICAgewogICAgICAgICAvLyBDYW4gYSBmaWxlIGJlIGNv
cnJlY3RseSBkb3dubG9hZGVkIGJ1dCBub3Qgb3BlbmVkPwogICAgICAgICBLSU86Ok5ldEFjY2Vz
czo6cmVtb3ZlVGVtcEZpbGUodGVtcG9yYXJ5RmlsZU5hbWUpOwogICAgICAgICByZXR1cm4gMDsK
ICAgICB9CiAKLSAgICBRQnVmZmVyICpyZXQgPSBuZXcgUUJ1ZmZlcihmaWxlLnJlYWRBbGwoKSk7
CisgICAgUUJ1ZmZlciAqcmV0ID0gbmV3IFFCdWZmZXI7CisgICAgcmV0LT5vcGVuKFFCdWZmZXI6
OlJlYWRXcml0ZSk7CisgICAgcmV0LT53cml0ZShmaWxlLnJlYWRBbGwoKSk7CiAgICAgS0lPOjpO
ZXRBY2Nlc3M6OnJlbW92ZVRlbXBGaWxlKHRlbXBvcmFyeUZpbGVOYW1lKTsKIAogICAgIHJldHVy
biByZXQ7CkluZGV4OiBrZG9tL3JhbmdlL1JhbmdlSW1wbC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmls
ZTogL2N2cy9yb290L1NWR1N1cHBvcnQva2RvbS9yYW5nZS9SYW5nZUltcGwuY3BwLHYKcmV0cmll
dmluZyByZXZpc2lvbiAxLjMKZGlmZiAtcCAtdSAtcjEuMyBrZG9tL3JhbmdlL1JhbmdlSW1wbC5j
cHAKLS0tIGtkb20vcmFuZ2UvUmFuZ2VJbXBsLmNwcAkxIFNlcCAyMDA1IDA3OjMzOjU1IC0wMDAw
CTEuMworKysga2RvbS9yYW5nZS9SYW5nZUltcGwuY3BwCTYgU2VwIDIwMDUgMDk6NTk6MDEgLTAw
MDAKQEAgLTkwOSw3ICs5MDksNyBAQCBSYW5nZUltcGwgKlJhbmdlSW1wbDo6Y2xvbmVSYW5nZSgp
CiAgICAgcmV0dXJuIG5ldyBSYW5nZUltcGwobV9vd25lckRvY3VtZW50LCBtX3N0YXJ0Q29udGFp
bmVyLCBtX3N0YXJ0T2Zmc2V0LCBtX2VuZENvbnRhaW5lciwgbV9lbmRPZmZzZXQpOwogfQogCi1E
T01TdHJpbmcgUmFuZ2VJbXBsOjp0b1N0cmluZygpCitET01TdHJpbmdJbXBsICpSYW5nZUltcGw6
OnRvU3RyaW5nKCkKIHsKICAgICAvKiBUaGlzIGZ1bmN0aW9uIGNvbnZlcnRzIGEgZG9tIHJhbmdl
IHRvIHRoZSBwbGFpbiB0ZXh0IHN0cmluZyB0aGF0IHRoZSB1c2VyIHdvdWxkIHNlZSBpbiB0aGlz
CiAgICAgICogcG9ydGlvbiBvZiByZW5kZXJlZCBodG1sLgpAQCAtOTQwLDkgKzk0MCwxMCBAQCBE
T01TdHJpbmcgUmFuZ2VJbXBsOjp0b1N0cmluZygpCiAgICAgICogICAgICAgICAKICAgICAgKi8K
ICAgICAKLSAgICBET01TdHJpbmcgdGV4dDsKICAgICBpZiggbV9zdGFydENvbnRhaW5lciA9PSBt
X2VuZENvbnRhaW5lciAmJiBtX3N0YXJ0T2Zmc2V0ID49IG1fZW5kT2Zmc2V0KQotICAgICAgICBy
ZXR1cm4gdGV4dDsKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBET01TdHJpbmdJbXBsICp0ZXh0
ID0gbmV3IERPTVN0cmluZ0ltcGwoKTs7CiAKICAgICBib29sIHNraXBOb2RlID0gZmFsc2U7CiAg
ICAgYm9vbCBlbmRBZnRlciA9IGZhbHNlOwpAQCAtOTgwLDE1ICs5ODEsMTUgQEAgRE9NU3RyaW5n
IFJhbmdlSW1wbDo6dG9TdHJpbmcoKQogICAgICAgICAgICAgaWYobi0+bm9kZVR5cGUoKSA9PSBU
RVhUX05PREUgfHwKICAgICAgICAgICAgICAgIG4tPm5vZGVUeXBlKCkgPT0gQ0RBVEFfU0VDVElP
Tl9OT0RFKSB7CiAgICAgCi0gICAgICAgICAgICAgICAgRE9NU3RyaW5nIHN0cihzdGF0aWNfY2Fz
dDxUZXh0SW1wbCAqPihuKS0+dG9TdHJpbmcoKSk7Ci0gICAgICAgICAgICAgICAgaWYoIG4gPT0g
bV9lbmRDb250YWluZXIgfHwgbiA9PSBtX3N0YXJ0Q29udGFpbmVyKSAgICAgICAgCi0gICAgICAg
ICAgICAgICAgICAgIHN0ciA9IHN0ci5jb3B5KCk7ICAvL2NvcHkgaWYgd2UgYXJlIGdvaW5nIHRv
IG1vZGlmeS4KKyAgICAgICAgICAgICAgICBET01TdHJpbmdJbXBsICpzdHIgPSBzdGF0aWNfY2Fz
dDxUZXh0SW1wbCAqPihuKS0+dG9TdHJpbmcoKTsKKyAgICAgICAgICAgICAgICBpZihuID09IG1f
ZW5kQ29udGFpbmVyIHx8IG4gPT0gbV9zdGFydENvbnRhaW5lcikKKyAgICAgICAgICAgICAgICAg
ICAgc3RyID0gc3RyLT5jb3B5KCk7ICAvL2NvcHkgaWYgd2UgYXJlIGdvaW5nIHRvIG1vZGlmeS4K
ICAgICAKICAgICAgICAgICAgICAgICBpZiAobiA9PSBtX2VuZENvbnRhaW5lcikKLSAgICAgICAg
ICAgICAgICAgICAgc3RyLnRydW5jYXRlKG1fZW5kT2Zmc2V0KTsKKyAgICAgICAgICAgICAgICAg
ICAgc3RyLT50cnVuY2F0ZShtX2VuZE9mZnNldCk7CiAgICAgICAgICAgICAgICAgaWYgKG4gPT0g
bV9zdGFydENvbnRhaW5lcikKLSAgICAgICAgICAgICAgICAgICAgc3RyLnJlbW92ZSgwLG1fc3Rh
cnRPZmZzZXQpOwotICAgICAgICAgICAgICAgIHRleHQgKz0gc3RyOworICAgICAgICAgICAgICAg
ICAgICBzdHItPnJlbW92ZSgwLG1fc3RhcnRPZmZzZXQpOworICAgICAgICAgICAgICAgIHRleHQt
PmFwcGVuZChzdHIpOwogICAgICAgICAgICAgICAgIGlmIChuID09IGVuZE5vZGUpCiAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfSBlbHNlIApJbmRleDoga2RvbS9yYW5n
ZS9SYW5nZUltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvU1ZHU3VwcG9ydC9r
ZG9tL3JhbmdlL1JhbmdlSW1wbC5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjMKZGlmZiAtcCAt
dSAtcjEuMyBrZG9tL3JhbmdlL1JhbmdlSW1wbC5oCi0tLSBrZG9tL3JhbmdlL1JhbmdlSW1wbC5o
CTEgU2VwIDIwMDUgMDc6MzM6NTUgLTAwMDAJMS4zCisrKyBrZG9tL3JhbmdlL1JhbmdlSW1wbC5o
CTYgU2VwIDIwMDUgMDk6NTk6MDEgLTAwMDAKQEAgLTMyLDggKzMyLDggQEAgbmFtZXNwYWNlIEtE
T00KIHsKIAogY2xhc3MgTm9kZUltcGw7Ci1jbGFzcyBET01TdHJpbmc7CiBjbGFzcyBEb2N1bWVu
dFB0cjsKK2NsYXNzIERPTVN0cmluZ0ltcGw7CiBjbGFzcyBEb2N1bWVudEZyYWdtZW50SW1wbDsK
IAogY2xhc3MgUmFuZ2VJbXBsIDogcHVibGljIFNoYXJlZApAQCAtNzQsNyArNzQsNyBAQCBwdWJs
aWM6CiAgICAgYm9vbCBpc0RldGFjaGVkKCkgY29uc3Q7CiAgICAgCiAgICAgUmFuZ2VJbXBsICpj
bG9uZVJhbmdlKCk7Ci0gICAgRE9NU3RyaW5nIHRvU3RyaW5nKCk7CisgICAgRE9NU3RyaW5nSW1w
bCAqdG9TdHJpbmcoKTsKIAogICAgIHZvaWQgc2V0U3RhcnRBZnRlcihOb2RlSW1wbCAqcmVmTm9k
ZSk7CiAgICAgdm9pZCBzZXRFbmRCZWZvcmUoTm9kZUltcGwgKnJlZk5vZGUpOwpJbmRleDoga2Rv
bS94cG9pbnRlci9Qb2ludGVyUGFydEltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMv
cm9vdC9TVkdTdXBwb3J0L2tkb20veHBvaW50ZXIvUG9pbnRlclBhcnRJbXBsLmNwcCx2CnJldHJp
ZXZpbmcgcmV2aXNpb24gMS4zCmRpZmYgLXAgLXUgLXIxLjMga2RvbS94cG9pbnRlci9Qb2ludGVy
UGFydEltcGwuY3BwCi0tLSBrZG9tL3hwb2ludGVyL1BvaW50ZXJQYXJ0SW1wbC5jcHAJMSBTZXAg
MjAwNSAwNzozNDowOCAtMDAwMAkxLjMKKysrIGtkb20veHBvaW50ZXIvUG9pbnRlclBhcnRJbXBs
LmNwcAk2IFNlcCAyMDA1IDA5OjU5OjAxIC0wMDAwCkBAIC0yMiwxMSArMjIsMTEgQEAKIAogI2lu
Y2x1ZGUgPGtkZWJ1Zy5oPgogCisjaW5jbHVkZSAiRE9NU3RyaW5nSW1wbC5oIgogI2luY2x1ZGUg
Ik5CQ0ltcGwuaCIKKyNpbmNsdWRlICJYUG9pbnRlclJlc3VsdEltcGwuaCIKIAotI2luY2x1ZGUg
IkRPTVN0cmluZ0ltcGwuaCIKICNpbmNsdWRlICJQb2ludGVyUGFydEltcGwuaCIKLSNpbmNsdWRl
ICJYUG9pbnRlclJlc3VsdEltcGwuaCIKIAogdXNpbmcgbmFtZXNwYWNlIEtET007CiB1c2luZyBu
YW1lc3BhY2UgS0RPTTo6WFBvaW50ZXI7CkBAIC0zNCw3ICszNCwxMSBAQCB1c2luZyBuYW1lc3Bh
Y2UgS0RPTTo6WFBvaW50ZXI7CiBQb2ludGVyUGFydEltcGw6OlBvaW50ZXJQYXJ0SW1wbChET01T
dHJpbmdJbXBsICpuYW1lLCBET01TdHJpbmdJbXBsICpzY2hlbWVEYXRhLCBOQkNJbXBsICpuYmMp
CiA6IFNoYXJlZCgpLCBtX2RhdGEoc2NoZW1lRGF0YSksIG1fbmFtZShuYW1lKSwgbV9uYmMobmJj
KQogewotICAgIGtkRGVidWcoMjY1NTApIDw8ICJDcmVhdGVkIFBvaW50ZXJQYXJ0OiBuYW1lPVwi
IiA8PCBuYW1lIDw8ICJcIiBzY2hlbWVEYXRhPVwiIiA8PCBzY2hlbWVEYXRhIDw8ICJcIi4iIDw8
IGVuZGw7CisgICAgUV9BU1NFUlQobV9uYW1lKTsKKyAgICBRX0FTU0VSVChtX2RhdGEpOworICAg
IGtkRGVidWcoMjY1NTApIDw8ICJDcmVhdGVkIFBvaW50ZXJQYXJ0OiAiIDw8IGVuZGw7CisgICAg
a2REZWJ1ZygyNjU1MCkgPDwgIiAgICAgbmFtZSA9IFwiIiA8PCBuYW1lLT5zdHJpbmcoKSA8PCAi
XCIiIDw8IGVuZGw7CisgICAga2REZWJ1ZygyNjU1MCkgPDwgIiAgICAgc2NoZW1lRGF0YSA9IFwi
IiA8PCAobV9kYXRhID8gc2NoZW1lRGF0YS0+c3RyaW5nKCkgOiBRU3RyaW5nKCkpIDw8ICJcIiIg
PDwgZW5kbDsKIAogICAgIGlmKG1fbmFtZSkKICAgICAgICAgbV9uYW1lLT5yZWYoKTsKSW5kZXg6
IGtkb20veHBvaW50ZXIvU2hvcnRIYW5kSW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2
cy9yb290L1NWR1N1cHBvcnQva2RvbS94cG9pbnRlci9TaG9ydEhhbmRJbXBsLmNwcCx2CnJldHJp
ZXZpbmcgcmV2aXNpb24gMS4zCmRpZmYgLXAgLXUgLXIxLjMga2RvbS94cG9pbnRlci9TaG9ydEhh
bmRJbXBsLmNwcAotLS0ga2RvbS94cG9pbnRlci9TaG9ydEhhbmRJbXBsLmNwcAkxIFNlcCAyMDA1
IDA3OjM0OjA4IC0wMDAwCTEuMworKysga2RvbS94cG9pbnRlci9TaG9ydEhhbmRJbXBsLmNwcAk2
IFNlcCAyMDA1IDA5OjU5OjAyIC0wMDAwCkBAIC00Myw3ICs0Myw4IEBAIFNob3J0SGFuZEltcGw6
OlNob3J0SGFuZEltcGwoRE9NU3RyaW5nSW0KIHsKICAgICBpZighSGVscGVyOjpJc1ZhbGlkTkNO
YW1lKHN0cikpCiAgICAgewotICAgICAgICBrZFdhcm5pbmcoKSA8PCAiXCIiIDw8IHN0ciA8PCAi
XCIgaXMgbm90IGEgdmFsaWQgc2hvcnQgaGFuZCBwb2ludGVyLiBUT0RPIERPTUVycm9yLiIgPDwg
ZW5kbDsKKyAgICAgICAga2RXYXJuaW5nKCkgPDwgIlwiIiA8PCBzdHItPnN0cmluZygpIDw8ICJc
IiBpcyBub3QgYSB2YWxpZCBzaG9ydCAiCisgICAgICAgICAgICAgICAgImhhbmQgcG9pbnRlci4g
VE9ETyBET01FcnJvci4iIDw8IGVuZGw7CiAgICAgICAgIHRocm93IG5ldyBYUG9pbnRlckV4Y2Vw
dGlvbkltcGwoSU5WQUxJRF9FWFBSRVNTSU9OX0VSUik7CiAgICAgfQogfQpJbmRleDoga2RvbS94
cG9pbnRlci9YUG9pbnRlckV2YWx1YXRvckltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9j
dnMvcm9vdC9TVkdTdXBwb3J0L2tkb20veHBvaW50ZXIvWFBvaW50ZXJFdmFsdWF0b3JJbXBsLmNw
cCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS40CmRpZmYgLXAgLXUgLXIxLjQga2RvbS94cG9pbnRl
ci9YUG9pbnRlckV2YWx1YXRvckltcGwuY3BwCi0tLSBrZG9tL3hwb2ludGVyL1hQb2ludGVyRXZh
bHVhdG9ySW1wbC5jcHAJMiBTZXAgMjAwNSAxMDowMzoxNCAtMDAwMAkxLjQKKysrIGtkb20veHBv
aW50ZXIvWFBvaW50ZXJFdmFsdWF0b3JJbXBsLmNwcAk2IFNlcCAyMDA1IDA5OjU5OjAyIC0wMDAw
CkBAIC03OSw3ICs3OSw2IEBAIFhQb2ludGVyRXhwcmVzc2lvbkltcGwgKlhQb2ludGVyRXZhbHVh
dG8KICAgICBpZihmaXJzdFBhcmFuID09IC0xKSAvKiBXZSBoYXZlIGFuIGludmFsaWQgU2NoZW1l
TmFtZSBvciBhIFNob3J0SGFuZCBwb2ludGVyLiBBc3N1bWUgdGhlIGxhdHRlci4gKi8KICAgICB7
CiAgICAgICAgIFhQb2ludGVyRXhwcmVzc2lvbkltcGwgKnhwciA9IG5ldyBYUG9pbnRlckV4cHJl
c3Npb25JbXBsKHN0cmluZ0ltcGwsIHJlbGF0ZWROb2RlLCBUSElTKTsKLSAgICAgICAgeHByLT5y
ZWYoKTsKIAogICAgICAgICBTaG9ydEhhbmRJbXBsICpzaCA9IG5ldyBTaG9ydEhhbmRJbXBsKERP
TVN0cmluZyhzdHJpcHBlZCkuaGFuZGxlKCkpOwogICAgICAgICBzaC0+cmVmKCk7CkBAIC05NCwx
MiArOTMsMTIgQEAgWFBvaW50ZXJFeHByZXNzaW9uSW1wbCAqWFBvaW50ZXJFdmFsdWF0bwogICAg
IGludCBwYXJhbkRlcHRoID0gMDsgLyogVGhpcyBtYXkgYmUgbmVnYXRpdmUgaWYgdGhlIHBhcmFu
dGVzZXMgYXJlIGJhbGFuY2VkIGltcHJvcGVybHkuICovCiAKICAgICBET01TdHJpbmcgc2NoZW1l
TmFtZTsKLQogICAgIERPTVN0cmluZyBzY2hlbWVEYXRhOwotICAgIHVuc2lnbmVkIGludCBlbmRQ
cmV2U2NoZW1lID0gMDsgLyogVGhlIGluZGV4IG9mIHdoZXJlIHRoZSBwcmV2aW91cyBzY2hlbWUg
ZW5kZWQuIFRoYXQncyBhZnRlciBpdCdzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjbG9zaW5nIHBhcmFudGVzZS4gKi8KLSAgICB1bnNpZ25lZCBpbnQgc3RhcnREYXRh
ID0gMDsgLyogVGhlIGluZGV4IG9mIHdoZXJlIHRoZSBzY2hlbWUgZGF0YSBzdGFydHMuIFRoYXQn
cyByaWdodCBhZnRlciB0aGUgcGFyYW50ZXNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGFmdGVyIHRoZSBzY2hlbWUgbmFtZS4gKi8KKyAgICB1bnNpZ25lZCBpbnQgZW5kUHJl
dlNjaGVtZSA9IDA7IC8qIFRoZSBpbmRleCBvZiB3aGVyZSB0aGUgcHJldmlvdXMgc2NoZW1lIAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kZWQuIFRoYXQncyBhZnRl
ciBpdCdzIGNsb3NpbmcgcGFyYW50ZXNlLiAqLworICAgIHVuc2lnbmVkIGludCBzdGFydERhdGEg
PSAwOyAvKiBUaGUgaW5kZXggb2Ygd2hlcmUgdGhlIHNjaGVtZSBkYXRhIHN0YXJ0cy4KKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhhdCdzIHJpZ2h0IGFmdGVyIHRoZSBwYXJh
bnRlc2UgYWZ0ZXIgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBzY2hl
bWUgbmFtZS4gKi8KIAogICAgIHR5cGVkZWYgUVBhaXI8RE9NU3RyaW5nLCBET01TdHJpbmc+IFN0
clBhaXI7CiAgICAgCkBAIC0yMTAsOCArMjA5LDEwIEBAIFhQb2ludGVyRXhwcmVzc2lvbkltcGwg
KlhQb2ludGVyRXZhbHVhdG8KICAgICAgICAgICAgIGlmKHByZWZpeCAmJiAhcHJlZml4LT5pc0Vt
cHR5KCkgJiYgRE9NU3RyaW5nKGN1cnJlbnROQkMtPmxvb2t1cE5hbWVzcGFjZVVSSShwcmVmaXgp
KS5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7IAogCi0gICAgICAgICAgICBr
ZERlYnVnKCkgPDwgIkVuY291bnRlcmVkIHVua25vd24gc2NoZW1lOiBcIiIgPDwgRE9NU3RyaW5n
KHNjaGVtZU5hbWUpLnN0cmluZygpIDw8ICJcIi4iIDw8IGVuZGw7Ci0gICAgICAgICAgICBQb2lu
dGVyUGFydEltcGwgKnAgPSBuZXcgUG9pbnRlclBhcnRJbXBsKHNjaGVtZU5hbWUuaGFuZGxlKCks
IHNjaGVtZURhdGEuaGFuZGxlKCksIGN1cnJlbnROQkMpOworICAgICAgICAgICAga2REZWJ1Zygy
NjU1MCkgPDwgIkVuY291bnRlcmVkIHVua25vd24gc2NoZW1lOiBcIiIgCisgICAgICAgICAgICAg
ICAgICAgIDw8IERPTVN0cmluZyhzY2hlbWVOYW1lKS5zdHJpbmcoKSA8PCAiXCIuIiA8PCBlbmRs
OworICAgICAgICAgICAgUG9pbnRlclBhcnRJbXBsICpwID0gbmV3IFBvaW50ZXJQYXJ0SW1wbChz
Y2hlbWVOYW1lLmhhbmRsZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzY2hlbWVEYXRhLmhhbmRsZSgpLCBjdXJyZW50TkJDKTsKICAgICAg
ICAgICAgIHAtPnJlZigpOwogICAgICAgICAgICAgeHByLT5hcHBlbmRQYXJ0KHApOwogCkluZGV4
OiBrZG9tL3hwb2ludGVyL1hQb2ludGVyUmVzdWx0SW1wbC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6
IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tkb20veHBvaW50ZXIvWFBvaW50ZXJSZXN1bHRJbXBsLmgs
dgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMwpkaWZmIC1wIC11IC1yMS4zIGtkb20veHBvaW50ZXIv
WFBvaW50ZXJSZXN1bHRJbXBsLmgKLS0tIGtkb20veHBvaW50ZXIvWFBvaW50ZXJSZXN1bHRJbXBs
LmgJMSBTZXAgMjAwNSAwNzozNDowOSAtMDAwMAkxLjMKKysrIGtkb20veHBvaW50ZXIvWFBvaW50
ZXJSZXN1bHRJbXBsLmgJNiBTZXAgMjAwNSAwOTo1OTowMiAtMDAwMApAQCAtMjQsNiArMjQsNyBA
QAogI2RlZmluZSBLRE9NX1hQb2ludGVyX1hQb2ludGVyUmVzdWx0SW1wbF9ICiAKICNpbmNsdWRl
IDxrZG9tL1NoYXJlZC5oPgorI2luY2x1ZGUgPGtkb20veHBvaW50ZXIva2RvbXhwb2ludGVyLmg+
CiAKIG5hbWVzcGFjZSBLRE9NCiB7CkBAIC0zMiwyMiArMzMsNiBAQCBjbGFzcyBOb2RlSW1wbDsK
IAogbmFtZXNwYWNlIFhQb2ludGVyCiB7Ci0gICAgLyoqCi0gICAgICogQW4gaW50ZWdlciBpbmRp
Y2F0aW5nIHdoYXQgdHlwZSBvZiByZXN1bHQgdGhpcyBpcy4KLSAgICAgKi8KLSAgICBlbnVtIFJl
c3VsdFR5cGUKLSAgICB7Ci0gICAgICAgIC8qKgotICAgICAgICAgKiBUaGUgcG9pbnRlciBtYXRj
aGVkIG5vIG5vZGVzLgotICAgICAgICAgKi8KLSAgICAgICAgTk9fTUFUQ0ggPSAxLAotCi0gICAg
ICAgIC8qKgotICAgICAgICAgKiBUaGUgcG9pbnRlciBpZGVudGlmZWQgYSBzaW5nbGUgbm9kZS4K
LSAgICAgICAgICovCi0gICAgICAgIFNJTkdMRV9OT0RFID0gMgotICAgIH07Ci0KICAgICBjbGFz
cyBYUG9pbnRlclJlc3VsdEltcGwgOiBwdWJsaWMgU2hhcmVkCiAgICAgewogICAgIHB1YmxpYzoK
SW5kZXg6IGtkb20veHBvaW50ZXIva2RvbXhwb2ludGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTog
L2N2cy9yb290L1NWR1N1cHBvcnQva2RvbS94cG9pbnRlci9rZG9teHBvaW50ZXIuaCx2CnJldHJp
ZXZpbmcgcmV2aXNpb24gMS4yCmRpZmYgLXAgLXUgLXIxLjIga2RvbS94cG9pbnRlci9rZG9teHBv
aW50ZXIuaAotLS0ga2RvbS94cG9pbnRlci9rZG9teHBvaW50ZXIuaAkxIFNlcCAyMDA1IDA3OjM0
OjA3IC0wMDAwCTEuMgorKysga2RvbS94cG9pbnRlci9rZG9teHBvaW50ZXIuaAk2IFNlcCAyMDA1
IDA5OjU5OjAyIC0wMDAwCkBAIC05Niw2ICs5NiwyMyBAQCBuYW1lc3BhY2UgWFBvaW50ZXIKICAg
ICAgICAgICovCiAgICAgICAgIElOVkFMSURfRU5DT0RJTkcgPSA0CiAgICAgfTsKKworICAgIC8q
KgorICAgICAqIEFuIGludGVnZXIgaW5kaWNhdGluZyB3aGF0IHR5cGUgb2YgcmVzdWx0IHRoaXMg
aXMuCisgICAgICovCisgICAgZW51bSBSZXN1bHRUeXBlCisgICAgeworICAgICAgICAvKioKKyAg
ICAgICAgICogVGhlIHBvaW50ZXIgbWF0Y2hlZCBubyBub2Rlcy4KKyAgICAgICAgICovCisgICAg
ICAgIE5PX01BVENIID0gMSwKKworICAgICAgICAvKioKKyAgICAgICAgICogVGhlIHBvaW50ZXIg
aWRlbnRpZmVkIGEgc2luZ2xlIG5vZGUuCisgICAgICAgICAqLworICAgICAgICBTSU5HTEVfTk9E
RSA9IDIKKyAgICB9OworCiB9OwogfTsKIApJbmRleDoga3N2ZzIvS1NWR0ZhY3RvcnkuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tzdmcyL0tTVkdGYWN0b3J5
LmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS41CmRpZmYgLXAgLXUgLXIxLjUga3N2ZzIvS1NW
R0ZhY3RvcnkuY3BwCi0tLSBrc3ZnMi9LU1ZHRmFjdG9yeS5jcHAJMiBTZXAgMjAwNSAxMDowMzox
NSAtMDAwMAkxLjUKKysrIGtzdmcyL0tTVkdGYWN0b3J5LmNwcAk2IFNlcCAyMDA1IDA5OjU5OjAz
IC0wMDAwCkBAIC0yMyw2ICsyMyw4IEBACiAjaW5jbHVkZSA8YXNzZXJ0Lmg+CiAKICNpbmNsdWRl
IDxxcmVnZXhwLmg+CisvL0FkZGVkIGJ5IHF0M3RvNDoKKyNpbmNsdWRlIDxRM1B0ckxpc3Q+CiAK
ICNpbmNsdWRlIDxrZGVidWcuaD4KICNpbmNsdWRlIDxrYWJvdXRkYXRhLmg+CkBAIC05NCw3ICs5
Niw3IEBAIEtQYXJ0czo6UGFydCAqS1NWR0ZhY3Rvcnk6OmNyZWF0ZVBhcnRPYmoKICAgICBib29s
IGR1bW15OwogICAgIFFSZWdFeHAgcjEoUVN0cmluZzo6ZnJvbUxhdGluMSgiKFdJRFRIKShcXHMq
PVxccypcIikoXFxkKykoXFx3KikoXCIpIikpOwogICAgIFFSZWdFeHAgcjIoUVN0cmluZzo6ZnJv
bUxhdGluMSgiKEhFSUdIVCkoXFxzKj1cXHMqXCIpKFxcZCspKFxcdyopKFwiKSIpKTsKLSAgICBm
b3IoUTNWYWx1ZUxpc3RDb25zdEl0ZXJhdG9yPFFTdHJpbmc+IGl0ID0gYXJncy5iZWdpbigpOyBp
dCAhPSBhcmdzLmVuZCgpOyArK2l0KSAKKyAgICBmb3IoUVN0cmluZ0xpc3Q6OkNvbnN0SXRlcmF0
b3IgaXQgPSBhcmdzLmJlZ2luKCk7IGl0ICE9IGFyZ3MuZW5kKCk7ICsraXQpIAogICAgIHsKICAg
ICAgICAgaWYocjEuc2VhcmNoKCppdCkgPiAtMSkKICAgICAgICAgICAgIHdpZHRoID0gcjEuY2Fw
KDMpLnRvVUludCgmZHVtbXkpOwpJbmRleDoga3N2ZzIvY3NzL1NWR0NTU1N0eWxlU2VsZWN0b3Iu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tzdmcyL2Nzcy9T
VkdDU1NTdHlsZVNlbGVjdG9yLmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS42CmRpZmYgLXAg
LXUgLXIxLjYga3N2ZzIvY3NzL1NWR0NTU1N0eWxlU2VsZWN0b3IuY3BwCi0tLSBrc3ZnMi9jc3Mv
U1ZHQ1NTU3R5bGVTZWxlY3Rvci5jcHAJMiBTZXAgMjAwNSAxMDowMzoxNSAtMDAwMAkxLjYKKysr
IGtzdmcyL2Nzcy9TVkdDU1NTdHlsZVNlbGVjdG9yLmNwcAk2IFNlcCAyMDA1IDA5OjU5OjAzIC0w
MDAwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSA8a3N0YW5kYXJkZGlycy5oPgogCiAjaW5j
bHVkZSA8cWZpbGUuaD4KKyNpbmNsdWRlIDxxM2NzdHJpbmcuaD4KICNpbmNsdWRlIDxxcGFpbnRk
ZXZpY2UuaD4KIAogI2luY2x1ZGUgPGtkb20vY29yZS9FbGVtZW50SW1wbC5oPgpJbmRleDoga3N2
ZzIvZXZlbnRzL1NWR0V2ZW50SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290
L1NWR1N1cHBvcnQva3N2ZzIvZXZlbnRzL1NWR0V2ZW50SW1wbC5jcHAsdgpyZXRyaWV2aW5nIHJl
dmlzaW9uIDEuNApkaWZmIC1wIC11IC1yMS40IGtzdmcyL2V2ZW50cy9TVkdFdmVudEltcGwuY3Bw
Ci0tLSBrc3ZnMi9ldmVudHMvU1ZHRXZlbnRJbXBsLmNwcAkxIFNlcCAyMDA1IDA3OjM1OjI5IC0w
MDAwCTEuNAorKysga3N2ZzIvZXZlbnRzL1NWR0V2ZW50SW1wbC5jcHAJNiBTZXAgMjAwNSAwOTo1
OTowMyAtMDAwMApAQCAtMjAsMTIgKzIwLDE0IEBACiAgICAgQm9zdG9uLCBNQSAwMjExMS0xMzA3
LCBVU0EuCiAqLwogCisjaW5jbHVkZSA8a2RvbS9jb3JlL0RPTVN0cmluZ0ltcGwuaD4KKwogI2lu
Y2x1ZGUgIlNWR0V2ZW50SW1wbC5oIgogI2luY2x1ZGUgIlNWR0RPTUltcGxlbWVudGF0aW9uSW1w
bC5oIgogCiB1c2luZyBuYW1lc3BhY2UgS1NWRzsKIAotU1ZHRXZlbnRJbXBsOjpTVkdFdmVudElt
cGwoKSA6IEtET006OkV2ZW50SW1wbChLRE9NOjpUeXBlTGFzdEV2ZW50KQorU1ZHRXZlbnRJbXBs
OjpTVkdFdmVudEltcGwoKSA6IEtET006OkV2ZW50SW1wbCgoS0RPTTo6RXZlbnRJbXBsVHlwZSkg
VHlwZVNWR0V2ZW50KQogewogfQogCkBAIC0zNiw5ICszOCwxMSBAQCBTVkdFdmVudEltcGw6On5T
VkdFdmVudEltcGwoKQogdm9pZCBTVkdFdmVudEltcGw6OmluaXRFdmVudChLRE9NOjpET01TdHJp
bmdJbXBsICpldmVudFR5cGVBcmcsIGJvb2wgY2FuQnViYmxlQXJnLCBib29sIGNhbmNlbGFibGVB
cmcpCiB7CiAgICAgbV9pZCA9IFNWR0RPTUltcGxlbWVudGF0aW9uSW1wbDo6c2VsZigpLT50eXBl
VG9JZChldmVudFR5cGVBcmcpOwotICAgIG1fdHlwZSA9IGV2ZW50VHlwZUFyZzsKKwogICAgIG1f
YnViYmxlcyA9IGNhbkJ1YmJsZUFyZzsKICAgICBtX2NhbmNlbGFibGUgPSBjYW5jZWxhYmxlQXJn
OworCisgICAgS0RPTV9TQUZFX1NFVChtX3R5cGUsIGV2ZW50VHlwZUFyZyk7CiB9CiAKIC8vIHZp
bTp0cz00Om5vZXQKSW5kZXg6IGtzdmcyL2V2ZW50cy9TVkdFdmVudEltcGwuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvU1ZHU3VwcG9ydC9rc3ZnMi9ldmVudHMvU1ZHRXZlbnRJbXBs
LmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNQpkaWZmIC1wIC11IC1yMS41IGtzdmcyL2V2ZW50
cy9TVkdFdmVudEltcGwuaAotLS0ga3N2ZzIvZXZlbnRzL1NWR0V2ZW50SW1wbC5oCTEgU2VwIDIw
MDUgMDk6Mzk6MTMgLTAwMDAJMS41CisrKyBrc3ZnMi9ldmVudHMvU1ZHRXZlbnRJbXBsLmgJNiBT
ZXAgMjAwNSAwOTo1OTowMyAtMDAwMApAQCAtMjgsNiArMjgsMTIgQEAKIAogbmFtZXNwYWNlIEtT
VkcKIHsKKyAgICB0eXBlZGVmIGVudW0KKyAgICB7CisgICAgICAgIFR5cGVTVkdFdmVudCA9IEtE
T006OlR5cGVMYXN0RXZlbnQgKyAxLAorICAgICAgICBUeXBlU1ZHWm9vbUV2ZW50ID0gS0RPTTo6
VHlwZUxhc3RFdmVudCArIDIKKyAgICB9IFNWR0V2ZW50SW1wbFR5cGU7CisKICAgICBjbGFzcyBT
VkdFdmVudEltcGwgOiBwdWJsaWMgS0RPTTo6RXZlbnRJbXBsCiAgICAgewogICAgIHB1YmxpYzoK
SW5kZXg6IGtzdmcyL2V2ZW50cy9TVkdab29tRXZlbnRJbXBsLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBm
aWxlOiAvY3ZzL3Jvb3QvU1ZHU3VwcG9ydC9rc3ZnMi9ldmVudHMvU1ZHWm9vbUV2ZW50SW1wbC5j
cHAsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMwpkaWZmIC1wIC11IC1yMS4zIGtzdmcyL2V2ZW50
cy9TVkdab29tRXZlbnRJbXBsLmNwcAotLS0ga3N2ZzIvZXZlbnRzL1NWR1pvb21FdmVudEltcGwu
Y3BwCTEgU2VwIDIwMDUgMDc6MzU6MzAgLTAwMDAJMS4zCisrKyBrc3ZnMi9ldmVudHMvU1ZHWm9v
bUV2ZW50SW1wbC5jcHAJNiBTZXAgMjAwNSAwOTo1OTowMyAtMDAwMApAQCAtMjIsMTEgKzIyLDEy
IEBACiAKICNpbmNsdWRlICJTVkdSZWN0SW1wbC5oIgogI2luY2x1ZGUgIlNWR1BvaW50SW1wbC5o
IgorI2luY2x1ZGUgIlNWR0V2ZW50SW1wbC5oIgogI2luY2x1ZGUgIlNWR1pvb21FdmVudEltcGwu
aCIKIAogdXNpbmcgbmFtZXNwYWNlIEtTVkc7CiAKLVNWR1pvb21FdmVudEltcGw6OlNWR1pvb21F
dmVudEltcGwoKSA6IEtET006OlVJRXZlbnRJbXBsKEtET006OlR5cGVMYXN0RXZlbnQpCitTVkda
b29tRXZlbnRJbXBsOjpTVkdab29tRXZlbnRJbXBsKCkgOiBLRE9NOjpVSUV2ZW50SW1wbCgoS0RP
TTo6RXZlbnRJbXBsVHlwZSkgVHlwZVNWR1pvb21FdmVudCkKIHsKICAgICBtX25ld1NjYWxlID0g
MC4wOwogICAgIG1fcHJldmlvdXNTY2FsZSA9IDAuMDsKSW5kZXg6IGtzdmcyL21pc2MvS0NhbnZh
c1JlbmRlcmluZ1N0eWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvU1ZHU3Vw
cG9ydC9rc3ZnMi9taXNjL0tDYW52YXNSZW5kZXJpbmdTdHlsZS5jcHAsdgpyZXRyaWV2aW5nIHJl
dmlzaW9uIDEuNgpkaWZmIC1wIC11IC1yMS42IGtzdmcyL21pc2MvS0NhbnZhc1JlbmRlcmluZ1N0
eWxlLmNwcAotLS0ga3N2ZzIvbWlzYy9LQ2FudmFzUmVuZGVyaW5nU3R5bGUuY3BwCTIgU2VwIDIw
MDUgMTA6MDM6MTYgLTAwMDAJMS42CisrKyBrc3ZnMi9taXNjL0tDYW52YXNSZW5kZXJpbmdTdHls
ZS5jcHAJNiBTZXAgMjAwNSAwOTo1OTowNCAtMDAwMApAQCAtNzksOSArNzksOCBAQCB2b2lkIEtD
YW52YXNSZW5kZXJpbmdTdHlsZTo6dXBkYXRlRmlsbChLCiAgICAgICAgIEtET006OkRPTVN0cmlu
ZyBpZChmaWxsLT51cmkoKSk7CiAKICAgICAgICAgS1JlbmRlcmluZ1BhaW50U2VydmVyICpmaWxs
UGFpbnRTZXJ2ZXIgPSBtX2NhbnZhcy0+cmVnaXN0cnkoKS0+Z2V0UGFpbnRTZXJ2ZXJCeUlkKGlk
LnN0cmluZygpLm1pZCgxKSk7Ci0gICAgICAgIEtDYW52YXNSZXNvdXJjZSAqZmlsbFBhaW50UmVz
b3VyY2UgPSBkeW5hbWljX2Nhc3Q8S0NhbnZhc1Jlc291cmNlICo+KGZpbGxQYWludFNlcnZlcik7
Ci0gICAgICAgIGlmKGl0ZW0gJiYgZmlsbFBhaW50UmVzb3VyY2UpCi0gICAgICAgICAgICBmaWxs
UGFpbnRSZXNvdXJjZS0+YWRkQ2xpZW50KGl0ZW0pOworICAgICAgICBpZihpdGVtICYmIGZpbGxQ
YWludFNlcnZlcikKKyAgICAgICAgICAgIGZpbGxQYWludFNlcnZlci0+YWRkQ2xpZW50KGl0ZW0p
OwogCiAgICAgICAgIGZpbGxQYWludGVyKCktPnNldFBhaW50U2VydmVyKGZpbGxQYWludFNlcnZl
cik7CiAgICAgfQpAQCAtMTEzLDkgKzExMiw4IEBAIHZvaWQgS0NhbnZhc1JlbmRlcmluZ1N0eWxl
Ojp1cGRhdGVTdHJva2UKICAgICAgICAgS0RPTTo6RE9NU3RyaW5nIGlkKHN0cm9rZS0+dXJpKCkp
OwogCiAgICAgICAgIEtSZW5kZXJpbmdQYWludFNlcnZlciAqc3Ryb2tlUGFpbnRTZXJ2ZXIgPSBt
X2NhbnZhcy0+cmVnaXN0cnkoKS0+Z2V0UGFpbnRTZXJ2ZXJCeUlkKGlkLnN0cmluZygpLm1pZCgx
KSk7Ci0gICAgICAgIEtDYW52YXNSZXNvdXJjZSAqc3Ryb2tlUGFpbnRSZXNvdXJjZSA9IGR5bmFt
aWNfY2FzdDxLQ2FudmFzUmVzb3VyY2UgKj4oc3Ryb2tlUGFpbnRTZXJ2ZXIpOwotICAgICAgICBp
ZihpdGVtICYmIHN0cm9rZVBhaW50UmVzb3VyY2UpCi0gICAgICAgICAgICBzdHJva2VQYWludFJl
c291cmNlLT5hZGRDbGllbnQoaXRlbSk7CisgICAgICAgIGlmKGl0ZW0gJiYgc3Ryb2tlUGFpbnRT
ZXJ2ZXIpCisgICAgICAgICAgICBzdHJva2VQYWludFNlcnZlci0+YWRkQ2xpZW50KGl0ZW0pOwog
CiAgICAgICAgIHN0cm9rZVBhaW50ZXIoKS0+c2V0UGFpbnRTZXJ2ZXIoc3Ryb2tlUGFpbnRTZXJ2
ZXIpOwogICAgIH0KQEAgLTEyMyw3ICsxMjEsNyBAQCB2b2lkIEtDYW52YXNSZW5kZXJpbmdTdHls
ZTo6dXBkYXRlU3Ryb2tlCiAgICAgewogICAgICAgICBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXIgKnN0
cm9rZVBhaW50U2VydmVyID0gbV9jYW52YXMtPnJlbmRlcmluZ0RldmljZSgpLT5jcmVhdGVQYWlu
dFNlcnZlcihLQ1BhaW50U2VydmVyVHlwZShQU19TT0xJRCkpOwogICAgICAgICBLUmVuZGVyaW5n
UGFpbnRTZXJ2ZXJTb2xpZCAqc3Ryb2tlUGFpbnRTZXJ2ZXJTb2xpZCA9IHN0YXRpY19jYXN0PEtS
ZW5kZXJpbmdQYWludFNlcnZlclNvbGlkICo+KHN0cm9rZVBhaW50U2VydmVyKTsKLSAgICAgICAg
CisKICAgICAgICAgaWYoc3Ryb2tlLT5wYWludFR5cGUoKSA9PSBTVkdfUEFJTlRUWVBFX0NVUlJF
TlRDT0xPUikKICAgICAgICAgICAgIHN0cm9rZVBhaW50U2VydmVyU29saWQtPnNldENvbG9yKG1f
c3R5bGUtPmNvbG9yKCkpOwogICAgICAgICBlbHNlCkBAIC0zMjUsNiArMzIzLDcgQEAgdm9pZCBL
Q2FudmFzUmVuZGVyaW5nU3R5bGU6OnJlbW92ZUNsaXBQYQogLy8gTWFya2VycwogS0NhbnZhc01h
cmtlciAqS0NhbnZhc1JlbmRlcmluZ1N0eWxlOjpzdGFydE1hcmtlcigpIGNvbnN0CiB7CisgICAg
Ly8gVE9ETzogc29tZXdoZXJlLCBzb21laG93IGFkZENsaWVudCBzaG91bGQgYmUgY2FsbGVkIG9u
IHRoaXMgcmVzb3VyY2UKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8S0NhbnZhc01hcmtlciAqPiht
X2NhbnZhcy0+cmVnaXN0cnkoKS0+Z2V0UmVzb3VyY2VCeUlkKG1fc3R5bGUtPnN0YXJ0TWFya2Vy
KCkubWlkKDEpKSk7CiB9CiAKQEAgLTMzNSw2ICszMzQsNyBAQCB2b2lkIEtDYW52YXNSZW5kZXJp
bmdTdHlsZTo6c2V0U3RhcnRNYXJrCiAKIEtDYW52YXNNYXJrZXIgKktDYW52YXNSZW5kZXJpbmdT
dHlsZTo6bWlkTWFya2VyKCkgY29uc3QKIHsKKyAgICAvLyBUT0RPOiBzb21ld2hlcmUsIHNvbWVo
b3cgYWRkQ2xpZW50IHNob3VsZCBiZSBjYWxsZWQgb24gdGhpcyByZXNvdXJjZQogICAgIHJldHVy
biBzdGF0aWNfY2FzdDxLQ2FudmFzTWFya2VyICo+KG1fY2FudmFzLT5yZWdpc3RyeSgpLT5nZXRS
ZXNvdXJjZUJ5SWQobV9zdHlsZS0+bWlkTWFya2VyKCkubWlkKDEpKSk7CiB9CiAKQEAgLTM0NCw2
ICszNDQsNyBAQCB2b2lkIEtDYW52YXNSZW5kZXJpbmdTdHlsZTo6c2V0TWlkTWFya2VyCiAKIEtD
YW52YXNNYXJrZXIgKktDYW52YXNSZW5kZXJpbmdTdHlsZTo6ZW5kTWFya2VyKCkgY29uc3QKIHsK
KyAgICAvLyBUT0RPOiBzb21ld2hlcmUsIHNvbWVob3cgYWRkQ2xpZW50IHNob3VsZCBiZSBjYWxs
ZWQgb24gdGhpcyByZXNvdXJjZQogICAgIHJldHVybiBzdGF0aWNfY2FzdDxLQ2FudmFzTWFya2Vy
ICo+KG1fY2FudmFzLT5yZWdpc3RyeSgpLT5nZXRSZXNvdXJjZUJ5SWQobV9zdHlsZS0+ZW5kTWFy
a2VyKCkubWlkKDEpKSk7CiB9CiAKQEAgLTM2NSw2ICszNjYsNyBAQCBLQ2FudmFzRmlsdGVyICpL
Q2FudmFzUmVuZGVyaW5nU3R5bGU6OmZpCiAgICAgaWYobG9va3VwLmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuIDA7CiAKKyAgICAvLyBUT0RPOiBzb21ld2hlcmUsIHNvbWVob3cgYWRkQ2xpZW50
IHNob3VsZCBiZSBjYWxsZWQgb24gdGhpcyByZXNvdXJjZQogICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxLQ2FudmFzRmlsdGVyICo+KG1fY2FudmFzLT5yZWdpc3RyeSgpLT5nZXRSZXNvdXJjZUJ5SWQo
bG9va3VwKSk7CiB9CiAKSW5kZXg6IGtzdmcyL21pc2MvS1NWR1RpbWVTY2hlZHVsZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tzdmcyL21pc2MvS1NWR1Rp
bWVTY2hlZHVsZXIuY3BwLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjUKZGlmZiAtcCAtdSAtcjEu
NSBrc3ZnMi9taXNjL0tTVkdUaW1lU2NoZWR1bGVyLmNwcAotLS0ga3N2ZzIvbWlzYy9LU1ZHVGlt
ZVNjaGVkdWxlci5jcHAJMiBTZXAgMjAwNSAxMDowMzoxNiAtMDAwMAkxLjUKKysrIGtzdmcyL21p
c2MvS1NWR1RpbWVTY2hlZHVsZXIuY3BwCTYgU2VwIDIwMDUgMDk6NTk6MDQgLTAwMDAKQEAgLTMy
MCw3ICszMjAsMTEgQEAgdm9pZCBTVkdUaW1lcjo6bm90aWZ5QWxsKCkKICAgICAgICAgZm9yKDsg
Y2l0ICE9IGNlbmQ7ICsrY2l0KQogICAgICAgICB7CiAgICAgICAgICAgICBpZihjaXQuZGF0YSgp
LmlzVmFsaWQoKSkKLSAgICAgICAgICAgICAgICBTVkdBbmltYXRpb25FbGVtZW50SW1wbDo6c2V0
VGFyZ2V0QXR0cmlidXRlKHRpdC5rZXkoKSwgY2l0LmtleSgpLCBjaXQuZGF0YSgpLm5hbWUoKSk7
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgU1ZHQW5pbWF0aW9uRWxlbWVudEltcGw6
OnNldFRhcmdldEF0dHJpYnV0ZSh0aXQua2V5KCksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBLRE9NOjpET01TdHJpbmcoY2l0Lmtl
eSgpKS5oYW5kbGUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEtET006OkRPTVN0cmluZyhjaXQuZGF0YSgpLm5hbWUoKSkuaGFu
ZGxlKCkpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCkluZGV4OiBrc3ZnMi9z
dmcvU1ZHQW5pbWF0ZUNvbG9yRWxlbWVudEltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9j
dnMvcm9vdC9TVkdTdXBwb3J0L2tzdmcyL3N2Zy9TVkdBbmltYXRlQ29sb3JFbGVtZW50SW1wbC5j
cHAsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNApkaWZmIC1wIC11IC1yMS40IGtzdmcyL3N2Zy9T
VkdBbmltYXRlQ29sb3JFbGVtZW50SW1wbC5jcHAKLS0tIGtzdmcyL3N2Zy9TVkdBbmltYXRlQ29s
b3JFbGVtZW50SW1wbC5jcHAJMSBTZXAgMjAwNSAwNzozNTozMSAtMDAwMAkxLjQKKysrIGtzdmcy
L3N2Zy9TVkdBbmltYXRlQ29sb3JFbGVtZW50SW1wbC5jcHAJNiBTZXAgMjAwNSAwOTo1OTowNCAt
MDAwMApAQCAtNjAsNyArNjAsNyBAQCB2b2lkIFNWR0FuaW1hdGVDb2xvckVsZW1lbnRJbXBsOjpo
YW5kbGVUCiAgICAgICAgIFNWR0NvbG9ySW1wbCAqdGVtcCA9IG5ldyBTVkdDb2xvckltcGwoKTsK
ICAgICAgICAgdGVtcC0+cmVmKCk7CiAgICAgICAgICAgICAKLSAgICAgICAgdGVtcC0+c2V0UkdC
Q29sb3IodGFyZ2V0QXR0cmlidXRlKCkuaGFuZGxlKCkpOworICAgICAgICB0ZW1wLT5zZXRSR0JD
b2xvcih0YXJnZXRBdHRyaWJ1dGUoKSk7CiAKICAgICAgICAgbV9pbml0aWFsQ29sb3IgPSB0ZW1w
LT5jb2xvcigpOwogICAgICAgICAKSW5kZXg6IGtzdmcyL3N2Zy9TVkdBbmltYXRlRWxlbWVudElt
cGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tzdmcyL3N2
Zy9TVkdBbmltYXRlRWxlbWVudEltcGwuY3BwLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjQKZGlm
ZiAtcCAtdSAtcjEuNCBrc3ZnMi9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnRJbXBsLmNwcAotLS0ga3N2
ZzIvc3ZnL1NWR0FuaW1hdGVFbGVtZW50SW1wbC5jcHAJMSBTZXAgMjAwNSAwNzozNTozMSAtMDAw
MAkxLjQKKysrIGtzdmcyL3N2Zy9TVkdBbmltYXRlRWxlbWVudEltcGwuY3BwCTYgU2VwIDIwMDUg
MDk6NTk6MDUgLTAwMDAKQEAgLTQzLDcgKzQzLDggQEAgdm9pZCBTVkdBbmltYXRlRWxlbWVudElt
cGw6OmhhbmRsZVRpbWVyRQogICAgIGlmKCFtX2Nvbm5lY3RlZCkKICAgICB7CiAgICAgICAgIC8v
IFNhdmUgaW5pdGlhbCBhdHRyaWJ1dGUgdmFsdWUuLi4KLSAgICAgICAgbV9zYXZlZFRvID0gdGFy
Z2V0QXR0cmlidXRlKCkuc3RyaW5nKCk7CisgICAgICAgIEtET006OkRPTVN0cmluZ0ltcGwgKmF0
dHIgPSB0YXJnZXRBdHRyaWJ1dGUoKTsKKyAgICAgICAgbV9zYXZlZFRvID0gKGF0dHIgPyBhdHRy
LT5zdHJpbmcoKSA6IFFTdHJpbmc6Om51bGwpOwogCiAgICAgICAgIC8vIEFuaW1hdGlvbiBtb2Rl
IGhhbmRsaW5nCiAgICAgICAgIHN3aXRjaChkZXRlY3RBbmltYXRpb25Nb2RlKCkpCkluZGV4OiBr
c3ZnMi9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudEltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6
IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tzdmcyL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50SW1wbC5j
cHAsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNQpkaWZmIC1wIC11IC1yMS41IGtzdmcyL3N2Zy9T
VkdBbmltYXRpb25FbGVtZW50SW1wbC5jcHAKLS0tIGtzdmcyL3N2Zy9TVkdBbmltYXRpb25FbGVt
ZW50SW1wbC5jcHAJMSBTZXAgMjAwNSAwOTozOToxNCAtMDAwMAkxLjUKKysrIGtzdmcyL3N2Zy9T
VkdBbmltYXRpb25FbGVtZW50SW1wbC5jcHAJNiBTZXAgMjAwNSAwOTo1OTowNSAtMDAwMApAQCAt
NDkzLDE1ICs0OTMsMTUgQEAgdm9pZCBTVkdBbmltYXRpb25FbGVtZW50SW1wbDo6Y2xvc2UoKQog
ICAgIGRvY3VtZW50LT50aW1lU2NoZWR1bGVyKCktPmFkZFRpbWVyKHRoaXMsIHFSb3VuZChnZXRT
dGFydFRpbWUoKSkpOwogfQogCi1LRE9NOjpET01TdHJpbmcgU1ZHQW5pbWF0aW9uRWxlbWVudElt
cGw6OnRhcmdldEF0dHJpYnV0ZSgpIGNvbnN0CitLRE9NOjpET01TdHJpbmdJbXBsICpTVkdBbmlt
YXRpb25FbGVtZW50SW1wbDo6dGFyZ2V0QXR0cmlidXRlKCkgY29uc3QKIHsKICAgICBpZighdGFy
Z2V0RWxlbWVudCgpKQotICAgICAgICByZXR1cm4gS0RPTTo6RE9NU3RyaW5nKCk7CisgICAgICAg
IHJldHVybiAwOwogICAgIAogICAgIFNWR1N0eWxlZEVsZW1lbnRJbXBsICpzdHlsZWQgPSBkeW5h
bWljX2Nhc3Q8U1ZHU3R5bGVkRWxlbWVudEltcGwgKj4odGFyZ2V0RWxlbWVudCgpKTsKICAgICBL
RE9NOjpDREZJbnRlcmZhY2UgKmludGVyZmFjZSA9IChzdHlsZWQgPyBzdHlsZWQtPm93bmVyRG9j
dW1lbnQoKS0+aW1wbGVtZW50YXRpb24oKS0+Y2RmSW50ZXJmYWNlKCkgOiAwKTsKICAgICAKLSAg
ICBLRE9NOjpET01TdHJpbmcgcmV0OworICAgIEtET006OkRPTVN0cmluZ0ltcGwgKnJldCA9IDA7
CiAKICAgICBFQXR0cmlidXRlVHlwZSBhdHRyaWJ1dGVUeXBlID0gbV9hdHRyaWJ1dGVUeXBlOwog
ICAgIGlmKGF0dHJpYnV0ZVR5cGUgPT0gQVRUUklCVVRFVFlQRV9BVVRPKQpAQCAtNTI1LDI0ICs1
MjUsMjQgQEAgS0RPTTo6RE9NU3RyaW5nIFNWR0FuaW1hdGlvbkVsZW1lbnRJbXBsOgogICAgICAg
ICBpZihzdHlsZWQgJiYgc3R5bGVkLT5zdHlsZSgpICYmIGludGVyZmFjZSkKICAgICAgICAgewog
ICAgICAgICAgICAgaW50IGlkID0gaW50ZXJmYWNlLT5nZXRQcm9wZXJ0eUlEKG1fYXR0cmlidXRl
TmFtZS5hc2NpaSgpLCBtX2F0dHJpYnV0ZU5hbWUubGVuZ3RoKCkpOwotICAgICAgICAgICAgcmV0
ID0gS0RPTTo6RE9NU3RyaW5nKHN0eWxlZC0+c3R5bGUoKS0+Z2V0UHJvcGVydHlWYWx1ZShpZCkp
OworICAgICAgICAgICAgcmV0ID0gc3R5bGVkLT5zdHlsZSgpLT5nZXRQcm9wZXJ0eVZhbHVlKGlk
KTsKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmKGF0dHJpYnV0ZVR5cGUgPT0gQVRUUklCVVRF
VFlQRV9YTUwgfHwgcmV0LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0ID0gS0RPTTo6RE9NU3RyaW5n
KHRhcmdldEVsZW1lbnQoKS0+Z2V0QXR0cmlidXRlKEtET006OkRPTVN0cmluZyhtX2F0dHJpYnV0
ZU5hbWUpLmhhbmRsZSgpKSk7CisgICAgaWYoYXR0cmlidXRlVHlwZSA9PSBBVFRSSUJVVEVUWVBF
X1hNTCB8fCAoIXJldCB8fCAocmV0ICYmIHJldC0+aXNFbXB0eSgpKSkpCisgICAgICAgIHJldCA9
IHRhcmdldEVsZW1lbnQoKS0+Z2V0QXR0cmlidXRlKEtET006OkRPTVN0cmluZyhtX2F0dHJpYnV0
ZU5hbWUpLmhhbmRsZSgpKTsKIAogICAgIHJldHVybiByZXQ7CiB9CiAKLXZvaWQgU1ZHQW5pbWF0
aW9uRWxlbWVudEltcGw6OnNldFRhcmdldEF0dHJpYnV0ZShjb25zdCBLRE9NOjpET01TdHJpbmcg
JnZhbHVlKQordm9pZCBTVkdBbmltYXRpb25FbGVtZW50SW1wbDo6c2V0VGFyZ2V0QXR0cmlidXRl
KEtET006OkRPTVN0cmluZ0ltcGwgKnZhbHVlKQogewotICAgIFNWR0FuaW1hdGlvbkVsZW1lbnRJ
bXBsOjpzZXRUYXJnZXRBdHRyaWJ1dGUodGFyZ2V0RWxlbWVudCgpLCBLRE9NOjpET01TdHJpbmco
bV9hdHRyaWJ1dGVOYW1lKSwgdmFsdWUsIG1fYXR0cmlidXRlVHlwZSk7CisgICAgU1ZHQW5pbWF0
aW9uRWxlbWVudEltcGw6OnNldFRhcmdldEF0dHJpYnV0ZSh0YXJnZXRFbGVtZW50KCksIEtET006
OkRPTVN0cmluZyhtX2F0dHJpYnV0ZU5hbWUpLmhhbmRsZSgpLCB2YWx1ZSwgbV9hdHRyaWJ1dGVU
eXBlKTsKIH0KIAotdm9pZCBTVkdBbmltYXRpb25FbGVtZW50SW1wbDo6c2V0VGFyZ2V0QXR0cmli
dXRlKFNWR0VsZW1lbnRJbXBsICp0YXJnZXQsIGNvbnN0IEtET006OkRPTVN0cmluZyAmbmFtZSwg
Y29uc3QgS0RPTTo6RE9NU3RyaW5nICZ2YWx1ZSwgRUF0dHJpYnV0ZVR5cGUgdHlwZSkKK3ZvaWQg
U1ZHQW5pbWF0aW9uRWxlbWVudEltcGw6OnNldFRhcmdldEF0dHJpYnV0ZShTVkdFbGVtZW50SW1w
bCAqdGFyZ2V0LCBLRE9NOjpET01TdHJpbmdJbXBsICpuYW1lLCBLRE9NOjpET01TdHJpbmdJbXBs
ICp2YWx1ZSwgRUF0dHJpYnV0ZVR5cGUgdHlwZSkKIHsKLSAgICBpZighdGFyZ2V0KQorICAgIGlm
KCF0YXJnZXQgfHwgIW5hbWUgfHwgIXZhbHVlKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAg
U1ZHU3R5bGVkRWxlbWVudEltcGwgKnN0eWxlZCA9IGR5bmFtaWNfY2FzdDxTVkdTdHlsZWRFbGVt
ZW50SW1wbCAqPih0YXJnZXQpOwpAQCAtNTU5LDcgKzU1OSw3IEBAIHZvaWQgU1ZHQW5pbWF0aW9u
RWxlbWVudEltcGw6OnNldFRhcmdldEEKICAgICAgICAgLy8gc2VhcmNoIHRoZSBkZWZhdWx0IFhN
TCBuYW1lc3BhY2UgZm9yIHRoZSBlbGVtZW50LgogICAgICAgICBpZihzdHlsZWQgJiYgc3R5bGVk
LT5zdHlsZSgpKQogICAgICAgICB7Ci0gICAgICAgICAgICBpbnQgaWQgPSBpbnRlcmZhY2UtPmdl
dFByb3BlcnR5SUQobmFtZS5zdHJpbmcoKS5hc2NpaSgpLCBuYW1lLnN0cmluZygpLmxlbmd0aCgp
KTsKKyAgICAgICAgICAgIGludCBpZCA9IGludGVyZmFjZS0+Z2V0UHJvcGVydHlJRChuYW1lLT5z
dHJpbmcoKS5hc2NpaSgpLCBuYW1lLT5zdHJpbmcoKS5sZW5ndGgoKSk7CiAgICAgICAgICAgICBp
ZihzdHlsZWQtPnN0eWxlKCktPmdldFByb3BlcnR5Q1NTVmFsdWUoaWQpKQogICAgICAgICAgICAg
ICAgIGF0dHJpYnV0ZVR5cGUgPSBBVFRSSUJVVEVUWVBFX0NTUzsKICAgICAgICAgfQpAQCAtNTY3
LDExICs1NjcsMTEgQEAgdm9pZCBTVkdBbmltYXRpb25FbGVtZW50SW1wbDo6c2V0VGFyZ2V0QQog
ICAgIAogICAgIGlmKGF0dHJpYnV0ZVR5cGUgPT0gQVRUUklCVVRFVFlQRV9DU1MgJiYgc3R5bGVk
ICYmIHN0eWxlZC0+c3R5bGUoKSkKICAgICB7Ci0gICAgICAgIGludCBpZCA9IGludGVyZmFjZS0+
Z2V0UHJvcGVydHlJRChuYW1lLnN0cmluZygpLmFzY2lpKCksIG5hbWUuc3RyaW5nKCkubGVuZ3Ro
KCkpOwotICAgICAgICBzdHlsZWQtPnN0eWxlKCktPnNldFByb3BlcnR5KGlkLCB2YWx1ZS5oYW5k
bGUoKSk7CisgICAgICAgIGludCBpZCA9IGludGVyZmFjZS0+Z2V0UHJvcGVydHlJRChuYW1lLT5z
dHJpbmcoKS5hc2NpaSgpLCBuYW1lLT5zdHJpbmcoKS5sZW5ndGgoKSk7CisgICAgICAgIHN0eWxl
ZC0+c3R5bGUoKS0+c2V0UHJvcGVydHkoaWQsIHZhbHVlKTsKICAgICB9CiAgICAgZWxzZSBpZihh
dHRyaWJ1dGVUeXBlID09IEFUVFJJQlVURVRZUEVfWE1MKQotICAgICAgICB0YXJnZXQtPnNldEF0
dHJpYnV0ZShuYW1lLmhhbmRsZSgpLCB2YWx1ZS5oYW5kbGUoKSk7CisgICAgICAgIHRhcmdldC0+
c2V0QXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKIH0KIAogUVN0cmluZyBTVkdBbmltYXRpb25FbGVt
ZW50SW1wbDo6YXR0cmlidXRlTmFtZSgpIGNvbnN0CkluZGV4OiBrc3ZnMi9zdmcvU1ZHQW5pbWF0
aW9uRWxlbWVudEltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvU1ZHU3VwcG9y
dC9rc3ZnMi9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudEltcGwuaCx2CnJldHJpZXZpbmcgcmV2aXNp
b24gMS40CmRpZmYgLXAgLXUgLXIxLjQga3N2ZzIvc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnRJbXBs
LmgKLS0tIGtzdmcyL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50SW1wbC5oCTEgU2VwIDIwMDUgMDc6
MzU6MzUgLTAwMDAJMS40CisrKyBrc3ZnMi9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudEltcGwuaAk2
IFNlcCAyMDA1IDA5OjU5OjA1IC0wMDAwCkBAIC0xMDYsMTIgKzEwNiwxMiBAQCBuYW1lc3BhY2Ug
S1NWRwogCiAgICAgICAgIGRvdWJsZSBwYXJzZUNsb2NrVmFsdWUoY29uc3QgUVN0cmluZyAmZGF0
YSkgY29uc3Q7CiAKLSAgICAgICAgS0RPTTo6RE9NU3RyaW5nIHRhcmdldEF0dHJpYnV0ZSgpIGNv
bnN0OwotICAgICAgICB2b2lkIHNldFRhcmdldEF0dHJpYnV0ZShjb25zdCBLRE9NOjpET01TdHJp
bmcgJnZhbHVlKTsKKyAgICAgICAgS0RPTTo6RE9NU3RyaW5nSW1wbCAqdGFyZ2V0QXR0cmlidXRl
KCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0VGFyZ2V0QXR0cmlidXRlKEtET006OkRPTVN0cmlu
Z0ltcGwgKnZhbHVlKTsKIAogICAgICAgICBzdGF0aWMgdm9pZCBzZXRUYXJnZXRBdHRyaWJ1dGUo
U1ZHRWxlbWVudEltcGwgKnRhcmdldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEtET006OkRPTVN0cmluZyAmbmFtZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEtET006OkRPTVN0cmluZyAmdmFsdWUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBLRE9NOjpET01TdHJpbmdJbXBsICpuYW1l
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgS0RPTTo6RE9NU3RyaW5n
SW1wbCAqdmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFQXR0
cmlidXRlVHlwZSB0eXBlID0gQVRUUklCVVRFVFlQRV9BVVRPKTsKIAogICAgICAgICBRU3RyaW5n
IGF0dHJpYnV0ZU5hbWUoKSBjb25zdDsKSW5kZXg6IGtzdmcyL3N2Zy9TVkdDdXJzb3JFbGVtZW50
SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZToga3N2ZzIvc3ZnL1NWR0N1cnNvckVsZW1lbnRJ
bXBsLmNwcApkaWZmIC1OIGtzdmcyL3N2Zy9TVkdDdXJzb3JFbGVtZW50SW1wbC5jcHAKLS0tIGtz
dmcyL3N2Zy9TVkdDdXJzb3JFbGVtZW50SW1wbC5jcHAJMSBKYW4gMTk3MCAwMDowMDowMCAtMDAw
MAorKysga3N2ZzIvc3ZnL1NWR0N1cnNvckVsZW1lbnRJbXBsLmNwcAk2IFNlcCAyMDA1IDA5OjU5
OjA1IC0wMDAwCkBAIC0wLDAgKzEsMTIzIEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAwNCwg
MjAwNSBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KKyAgICAgICAgICAgICAg
ICAgIDIwMDQsIDIwMDUgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KKworICAgIFRoaXMgZmlsZSBp
cyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdAorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisg
ICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUg
Q09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLAorICAgIEJvc3Rvbiwg
TUEgMDIxMTEtMTMwNywgVVNBLgorKi8KKworI2luY2x1ZGUgPGtkb20vY29yZS9BdHRySW1wbC5o
PgorI2luY2x1ZGUgPGtkZWJ1Zy5oPgorCisjaW5jbHVkZSAic3ZnYXR0cnMuaCIKKyNpbmNsdWRl
ICJTVkdIZWxwZXIuaCIKKyNpbmNsdWRlICJOYW1lc3BhY2UuaCIKKyNpbmNsdWRlICJTVkdEb2N1
bWVudEltcGwuaCIKKyNpbmNsdWRlICJTVkdDdXJzb3JFbGVtZW50SW1wbC5oIgorI2luY2x1ZGUg
IlNWR0FuaW1hdGVkTGVuZ3RoSW1wbC5oIgorI2luY2x1ZGUgIlNWR0FuaW1hdGVkU3RyaW5nSW1w
bC5oIgorCisjaWZuZGVmIEFQUExFX0NIQU5HRVMKKyNpbmNsdWRlICJpbWxvYWQvaW1hZ2VwYWlu
dGVyLmgiCisjZW5kaWYKKwordXNpbmcgbmFtZXNwYWNlIEtTVkc7CisjaWZuZGVmIEFQUExFX0NI
QU5HRVMKK3VzaW5nIG5hbWVzcGFjZSBraHRtbEltTG9hZDsKKyNlbmRpZgorCitTVkdDdXJzb3JF
bGVtZW50SW1wbDo6U1ZHQ3Vyc29yRWxlbWVudEltcGwoS0RPTTo6RG9jdW1lbnRQdHIgKmRvYywg
S0RPTTo6Tm9kZUltcGw6OklkIGlkLCBLRE9NOjpET01TdHJpbmdJbXBsICpwcmVmaXgpCis6IFNW
R0VsZW1lbnRJbXBsKGRvYywgaWQsIHByZWZpeCksIFNWR1Rlc3RzSW1wbCgpLCBTVkdFeHRlcm5h
bFJlc291cmNlc1JlcXVpcmVkSW1wbCgpLCBTVkdVUklSZWZlcmVuY2VJbXBsKCksIEtET006OkNh
Y2hlZE9iamVjdENsaWVudCgpCit7CisgICAgbV94ID0gbV95ID0gMDsKKyAgICBtX2NhY2hlZElt
YWdlID0gMDsKK30KKworU1ZHQ3Vyc29yRWxlbWVudEltcGw6On5TVkdDdXJzb3JFbGVtZW50SW1w
bCgpCit7CisgICAgaWYobV94KQorICAgICAgICBtX3gtPmRlcmVmKCk7CisgICAgaWYobV95KQor
ICAgICAgICBtX3ktPmRlcmVmKCk7Cit9CisKK1NWR0FuaW1hdGVkTGVuZ3RoSW1wbCAqU1ZHQ3Vy
c29yRWxlbWVudEltcGw6OngoKSBjb25zdAoreworICAgIHJldHVybiBsYXp5X2NyZWF0ZTxTVkdB
bmltYXRlZExlbmd0aEltcGw+KG1feCwgc3RhdGljX2Nhc3Q8Y29uc3QgU1ZHU3R5bGVkRWxlbWVu
dEltcGwgKj4oMCkgLyogY29ycmVjdD8gKi8sIExNX1dJRFRILCB2aWV3cG9ydEVsZW1lbnQoKSk7
Cit9CisKK1NWR0FuaW1hdGVkTGVuZ3RoSW1wbCAqU1ZHQ3Vyc29yRWxlbWVudEltcGw6OnkoKSBj
b25zdAoreworICAgIHJldHVybiBsYXp5X2NyZWF0ZTxTVkdBbmltYXRlZExlbmd0aEltcGw+KG1f
eSwgc3RhdGljX2Nhc3Q8Y29uc3QgU1ZHU3R5bGVkRWxlbWVudEltcGwgKj4oMCkgLyogY29ycmVj
dD8gKi8sIExNX0hFSUdIVCwgdmlld3BvcnRFbGVtZW50KCkpOworfQorCit2b2lkIFNWR0N1cnNv
ckVsZW1lbnRJbXBsOjpwYXJzZUF0dHJpYnV0ZShLRE9NOjpBdHRyaWJ1dGVJbXBsICphdHRyKQor
eworICAgIGludCBpZCA9IChhdHRyLT5pZCgpICYgTm9kZUltcGxfSWRMb2NhbE1hc2spOworICAg
IEtET006OkRPTVN0cmluZ0ltcGwgKnZhbHVlID0gYXR0ci0+dmFsdWUoKTsKKyAgICBzd2l0Y2go
aWQpCisgICAgeworICAgICAgICBjYXNlIEFUVFJfWDoKKyAgICAgICAgeworICAgICAgICAgICAg
eCgpLT5iYXNlVmFsKCktPnNldFZhbHVlQXNTdHJpbmcodmFsdWUpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBBVFRSX1k6CisgICAgICAgIHsKKyAgICAgICAg
ICAgIHkoKS0+YmFzZVZhbCgpLT5zZXRWYWx1ZUFzU3RyaW5nKHZhbHVlKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgIHsKKyAgICAgICAg
ICAgIGlmKFNWR1Rlc3RzSW1wbDo6cGFyc2VBdHRyaWJ1dGUoYXR0cikpIHJldHVybjsKKyAgICAg
ICAgICAgIGlmKFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRJbXBsOjpwYXJzZUF0dHJpYnV0
ZShhdHRyKSkgcmV0dXJuOworICAgICAgICAgICAgaWYoU1ZHVVJJUmVmZXJlbmNlSW1wbDo6cGFy
c2VBdHRyaWJ1dGUoYXR0cikpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgUVN0cmlu
ZyBmbmFtZSA9IEtET006OkRPTVN0cmluZyhocmVmKCktPmJhc2VWYWwoKSkuc3RyaW5nKCk7Cisg
ICAgICAgICAgICAgICAgS1VSTCBmdWxsVXJsKG93bmVyRG9jdW1lbnQoKS0+ZG9jdW1lbnRLVVJJ
KCksIGZuYW1lKTsKKyAgICAgICAgICAgICAgICAvL2tkRGVidWcoKSA8PCAiTG9hZGluZyA6ICIg
PDwgZnVsbFVybCA8PCBlbmRsOworICAgICAgICAgICAgICAgIG1fY2FjaGVkSW1hZ2UgPSBvd25l
ckRvY3VtZW50KCktPmRvY0xvYWRlcigpLT5yZXF1ZXN0SW1hZ2UoZnVsbFVybCk7CisKKyAgICAg
ICAgICAgICAgICBpZihtX2NhY2hlZEltYWdlKQorICAgICAgICAgICAgICAgICAgICBtX2NhY2hl
ZEltYWdlLT5yZWYodGhpcyk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBTVkdFbGVtZW50SW1wbDo6cGFyc2VBdHRyaWJ1dGUoYXR0cik7Cisg
ICAgICAgIH0KKyAgICB9OworfQorCit2b2lkIFNWR0N1cnNvckVsZW1lbnRJbXBsOjpub3RpZnlG
aW5pc2hlZChLRE9NOjpDYWNoZWRPYmplY3QgKmZpbmlzaGVkT2JqKQoreworICAgIGlmKGZpbmlz
aGVkT2JqID09IG1fY2FjaGVkSW1hZ2UpCisgICAgeworI2lmbmRlZiBBUFBMRV9DT01QSUxFX0hB
Q0sKKyAgICAgICAgUVBpeG1hcCBwaXhtKG1fY2FjaGVkSW1hZ2UtPnBpeG1hcF9zaXplKCkpOwor
ICAgICAgICBRUGFpbnRlciBwKCZwaXhtKTsKKyAgICAgICAgSW1hZ2VQYWludGVyIGlwKG1fY2Fj
aGVkSW1hZ2UtPmltYWdlKCkpOworICAgICAgICBpcC5wYWludCgwLCAwLCAmcCwgMCwgMCwgbV9j
YWNoZWRJbWFnZS0+cGl4bWFwX3NpemUoKS53aWR0aCgpLCBtX2NhY2hlZEltYWdlLT5waXhtYXBf
c2l6ZSgpLmhlaWdodCgpKTsKKyAgICAgICAgbV9pbWFnZSA9IHBpeG07CisgICAgICAgIGtkRGVi
dWcoKSA8PCAicGl4bSB3IDogIiA8PCBtX2ltYWdlLnNpemUoKSA8PCBlbmRsOworI2VuZGlmIC8v
IEFQUExFX0NPTVBJTEVfSEFDSworCisgICAgICAgIG1fY2FjaGVkSW1hZ2UtPmRlcmVmKHRoaXMp
OworICAgICAgICBtX2NhY2hlZEltYWdlID0gMDsKKyAgICB9Cit9CisKKy8vIHZpbTp0cz00Om5v
ZXQKSW5kZXg6IGtzdmcyL3N2Zy9TVkdDdXJzb3JFbGVtZW50SW1wbC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNT
IGZpbGU6IGtzdmcyL3N2Zy9TVkdDdXJzb3JFbGVtZW50SW1wbC5oCmRpZmYgLU4ga3N2ZzIvc3Zn
L1NWR0N1cnNvckVsZW1lbnRJbXBsLmgKLS0tIGtzdmcyL3N2Zy9TVkdDdXJzb3JFbGVtZW50SW1w
bC5oCTEgSmFuIDE5NzAgMDA6MDA6MDAgLTAwMDAKKysrIGtzdmcyL3N2Zy9TVkdDdXJzb3JFbGVt
ZW50SW1wbC5oCTYgU2VwIDIwMDUgMDk6NTk6MDYgLTAwMDAKQEAgLTAsMCArMSw2OSBAQAorLyoK
KyAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94
QGtkZS5vcmc+CisgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1IFJvYiBCdWlzIDxidWlzQGtk
ZS5vcmc+CisKKyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QKKworICAg
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwor
ICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAt
IFN1aXRlIDMzMCwKKyAgICBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KKyovCisKKyNpZm5k
ZWYgS1NWR19TVkdDdXJzb3JFbGVtZW50SW1wbF9ICisjZGVmaW5lIEtTVkdfU1ZHQ3Vyc29yRWxl
bWVudEltcGxfSAorCisjaW5jbHVkZSA8cXBpeG1hcC5oPgorCisjaW5jbHVkZSAiU1ZHRWxlbWVu
dEltcGwuaCIKKyNpbmNsdWRlICJTVkdUZXN0c0ltcGwuaCIKKyNpbmNsdWRlICJTVkdVUklSZWZl
cmVuY2VJbXBsLmgiCisjaW5jbHVkZSAiU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEltcGwu
aCIKKyNpbmNsdWRlIDxrZG9tL2NhY2hlL0tET01DYWNoZWRJbWFnZS5oPgorI2luY2x1ZGUgPGtk
b20vY2FjaGUvS0RPTUNhY2hlZE9iamVjdENsaWVudC5oPgorCituYW1lc3BhY2UgS1NWRworewor
ICAgIGNsYXNzIFNWR0FuaW1hdGVkTGVuZ3RoSW1wbDsKKworICAgIGNsYXNzIFNWR0N1cnNvckVs
ZW1lbnRJbXBsIDogcHVibGljIFNWR0VsZW1lbnRJbXBsLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcHVibGljIFNWR1Rlc3RzSW1wbCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHB1YmxpYyBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkSW1wbCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdVUklSZWZlcmVuY2VJbXBsLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIEtET006OkNhY2hlZE9iamVj
dENsaWVudAorICAgIHsKKyAgICBwdWJsaWM6CisgICAgICAgIFNWR0N1cnNvckVsZW1lbnRJbXBs
KEtET006OkRvY3VtZW50UHRyICpkb2MsIEtET006Ok5vZGVJbXBsOjpJZCBpZCwgIEtET006OkRP
TVN0cmluZ0ltcGwgKnByZWZpeCk7CisgICAgICAgIHZpcnR1YWwgflNWR0N1cnNvckVsZW1lbnRJ
bXBsKCk7CisKKyAgICAgICAgLy8gJ1NWR0N1cnNvckVsZW1lbnQnIGZ1bmN0aW9ucworICAgICAg
ICBTVkdBbmltYXRlZExlbmd0aEltcGwgKngoKSBjb25zdDsKKyAgICAgICAgU1ZHQW5pbWF0ZWRM
ZW5ndGhJbXBsICp5KCkgY29uc3Q7CisKKyAgICAgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmli
dXRlKEtET006OkF0dHJpYnV0ZUltcGwgKmF0dHIpOworCisgICAgICAgIHZpcnR1YWwgdm9pZCBu
b3RpZnlGaW5pc2hlZChLRE9NOjpDYWNoZWRPYmplY3QgKmZpbmlzaGVkT2JqKTsKKworICAgICAg
ICBjb25zdCBRUGl4bWFwICZwaXhtYXAoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlOyB9CisKKyAg
ICBwcml2YXRlOgorICAgICAgICBtdXRhYmxlIFNWR0FuaW1hdGVkTGVuZ3RoSW1wbCAqbV94Owor
ICAgICAgICBtdXRhYmxlIFNWR0FuaW1hdGVkTGVuZ3RoSW1wbCAqbV95OworICAgICAgICBLRE9N
OjpDYWNoZWRJbWFnZSAqbV9jYWNoZWRJbWFnZTsKKyAgICAgICAgUVBpeG1hcCBtX2ltYWdlOwor
ICAgIH07Cit9OworCisjZW5kaWYKKworLy8gdmltOnRzPTQ6bm9ldApJbmRleDoga3N2ZzIvc3Zn
L1NWR0RPTUltcGxlbWVudGF0aW9uSW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9y
b290L1NWR1N1cHBvcnQva3N2ZzIvc3ZnL1NWR0RPTUltcGxlbWVudGF0aW9uSW1wbC5jcHAsdgpy
ZXRyaWV2aW5nIHJldmlzaW9uIDEuNQpkaWZmIC1wIC11IC1yMS41IGtzdmcyL3N2Zy9TVkdET01J
bXBsZW1lbnRhdGlvbkltcGwuY3BwCi0tLSBrc3ZnMi9zdmcvU1ZHRE9NSW1wbGVtZW50YXRpb25J
bXBsLmNwcAkxIFNlcCAyMDA1IDA5OjM5OjE0IC0wMDAwCTEuNQorKysga3N2ZzIvc3ZnL1NWR0RP
TUltcGxlbWVudGF0aW9uSW1wbC5jcHAJNiBTZXAgMjAwNSAwOTo1OTowNiAtMDAwMApAQCAtMTE0
LDMxICsxMTQsMzIgQEAgU1ZHRE9NSW1wbGVtZW50YXRpb25JbXBsICpTVkdET01JbXBsZW1lbgog
ICAgIHJldHVybiBzX2luc3RhbmNlOwogfQogCi1ib29sIFNWR0RPTUltcGxlbWVudGF0aW9uSW1w
bDo6aGFzRmVhdHVyZShLRE9NOjpET01TdHJpbmdJbXBsICpfZmVhdHVyZSwgS0RPTTo6RE9NU3Ry
aW5nSW1wbCAqX3ZlcnNpb24pIGNvbnN0Citib29sIFNWR0RPTUltcGxlbWVudGF0aW9uSW1wbDo6
aGFzRmVhdHVyZShLRE9NOjpET01TdHJpbmdJbXBsICpmZWF0dXJlSW1wbCwgS0RPTTo6RE9NU3Ry
aW5nSW1wbCAqdmVyc2lvbkltcGwpIGNvbnN0CiB7Ci0gICAgUVN0cmluZyBmZWF0dXJlID0gS0RP
TTo6RE9NU3RyaW5nKF9mZWF0dXJlKS51cHBlcigpLnN0cmluZygpOwotICAgIEtET006OkRPTVN0
cmluZyB2ZXJzaW9uKF92ZXJzaW9uKTsKLSAgICBpZigodmVyc2lvbi5pc0VtcHR5KCkgfHwgdmVy
c2lvbiA9PSAiMS4xIikgJiYKKyAgICBRU3RyaW5nIGZlYXR1cmUgPSAoZmVhdHVyZUltcGwgPyBL
RE9NOjpET01TdHJpbmcoZmVhdHVyZUltcGwpLnVwcGVyKCkuc3RyaW5nKCkgOiBRU3RyaW5nOjpu
dWxsKTsKKyAgICBRU3RyaW5nIHZlcnNpb24gPSAodmVyc2lvbkltcGwgPyB2ZXJzaW9uSW1wbC0+
c3RyaW5nKCkgOiBRU3RyaW5nOjpudWxsKTsKKworICAgIGlmKCh2ZXJzaW9uLmlzRW1wdHkoKSB8
fCB2ZXJzaW9uID09IFFTdHJpbmc6OmZyb21MYXRpbjEoIjEuMSIpKSAmJgogICAgICAgIGZlYXR1
cmUuc3RhcnRzV2l0aChRU3RyaW5nOjpmcm9tTGF0aW4xKCJIVFRQOi8vV1dXLlczLk9SRy9UUi9T
VkcxMS9GRUFUVVJFIyIpKSkKICAgICB7CiAgICAgICAgIGlmKHNfZmVhdHVyZXMuY29udGFpbnMo
ZmVhdHVyZS5yaWdodChmZWF0dXJlLmxlbmd0aCgpIC0gMzUpKSkKICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KIAotICAgIGlmKCh2ZXJzaW9uLmlzRW1wdHkoKSB8fCB2ZXJzaW9uID09
ICIxLjAiKSAmJgorICAgIGlmKCh2ZXJzaW9uLmlzRW1wdHkoKSB8fCB2ZXJzaW9uID09IFFTdHJp
bmc6OmZyb21MYXRpbjEoIjEuMCIpKSAmJgogICAgICAgIGZlYXR1cmUuc3RhcnRzV2l0aChRU3Ry
aW5nOjpmcm9tTGF0aW4xKCJPUkcuVzNDLiIpKSkKICAgICB7CiAgICAgICAgIGlmKHNfZmVhdHVy
ZXMuY29udGFpbnMoZmVhdHVyZS5yaWdodChmZWF0dXJlLmxlbmd0aCgpIC0gOCkpKQogICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgcmV0dXJuIEtET006OkRPTUltcGxlbWVu
dGF0aW9uSW1wbDo6aGFzRmVhdHVyZShfZmVhdHVyZSwgX3ZlcnNpb24pOworICAgIHJldHVybiBL
RE9NOjpET01JbXBsZW1lbnRhdGlvbkltcGw6Omhhc0ZlYXR1cmUoZmVhdHVyZUltcGwsIHZlcnNp
b25JbXBsKTsKIH0KIAogS0RPTTo6RG9jdW1lbnRUeXBlSW1wbCAqU1ZHRE9NSW1wbGVtZW50YXRp
b25JbXBsOjpjcmVhdGVEb2N1bWVudFR5cGUoS0RPTTo6RE9NU3RyaW5nSW1wbCAqcXVhbGlmaWVk
TmFtZSwgS0RPTTo6RE9NU3RyaW5nSW1wbCAqcHVibGljSWQsIEtET006OkRPTVN0cmluZ0ltcGwg
KnN5c3RlbUlkKSBjb25zdAogewogICAgIC8vIElOVkFMSURfQ0hBUkFDVEVSX0VSUjogUmFpc2Vk
IGlmIHRoZSBzcGVjaWZpZWQgcXVhbGlmaWVkIG5hbWUgY29udGFpbnMgYW4gaWxsZWdhbCBjaGFy
YWN0ZXIuCi0gICAgaWYoKHF1YWxpZmllZE5hbWUgJiYgIXF1YWxpZmllZE5hbWUtPmlzRW1wdHko
KSkgfHwgIUtET006OkhlbHBlcjo6VmFsaWRhdGVBdHRyaWJ1dGVOYW1lKHF1YWxpZmllZE5hbWUp
KQorICAgIGlmKCghcXVhbGlmaWVkTmFtZSB8fCBxdWFsaWZpZWROYW1lLT5pc0VtcHR5KCkpIHx8
ICFLRE9NOjpIZWxwZXI6OlZhbGlkYXRlQXR0cmlidXRlTmFtZShxdWFsaWZpZWROYW1lKSkKICAg
ICAgICAgdGhyb3cgbmV3IEtET006OkRPTUV4Y2VwdGlvbkltcGwoS0RPTTo6SU5WQUxJRF9DSEFS
QUNURVJfRVJSKTsKIAogICAgIC8vIE5BTUVTUEFDRV9FUlI6IFJhaXNlZCBpZiBubyBxdWFsaWZp
ZWROYW1lIHN1cHBsaWVkIChub3QgbWVudGlvbmVkIGluIHRoZSBzcGVjISkKQEAgLTE1NiwxNCAr
MTU3LDE5IEBAIEtET006OkRvY3VtZW50SW1wbCAqU1ZHRE9NSW1wbGVtZW50YXRpb24KICAgICBy
ZXR1cm4gY3JlYXRlRG9jdW1lbnQobmFtZXNwYWNlVVJJLCBxdWFsaWZpZWROYW1lSW1wbCwgZG9j
dHlwZSwgdHJ1ZSwgMCk7CiB9CiAKLUtET006OkRvY3VtZW50SW1wbCAqU1ZHRE9NSW1wbGVtZW50
YXRpb25JbXBsOjpjcmVhdGVEb2N1bWVudChLRE9NOjpET01TdHJpbmdJbXBsICpuYW1lc3BhY2VV
UkksIEtET006OkRPTVN0cmluZ0ltcGwgKnF1YWxpZmllZE5hbWVJbXBsLCBLRE9NOjpEb2N1bWVu
dFR5cGVJbXBsICpkb2N0eXBlLCBib29sIGNyZWF0ZURvY0VsZW1lbnQsIEtET006OktET01WaWV3
ICp2aWV3KSBjb25zdAorS0RPTTo6RG9jdW1lbnRJbXBsICpTVkdET01JbXBsZW1lbnRhdGlvbklt
cGw6OmNyZWF0ZURvY3VtZW50KEtET006OkRPTVN0cmluZ0ltcGwgKm5hbWVzcGFjZVVSSUltcGws
IEtET006OkRPTVN0cmluZ0ltcGwgKnF1YWxpZmllZE5hbWVJbXBsLCBLRE9NOjpEb2N1bWVudFR5
cGVJbXBsICpkb2N0eXBlLCBib29sIGNyZWF0ZURvY0VsZW1lbnQsIEtET006OktET01WaWV3ICp2
aWV3KSBjb25zdAogeworICAgIGlmKG5hbWVzcGFjZVVSSUltcGwpCisgICAgICAgIG5hbWVzcGFj
ZVVSSUltcGwtPnJlZigpOworICAgIGlmKHF1YWxpZmllZE5hbWVJbXBsKQorICAgICAgICBxdWFs
aWZpZWROYW1lSW1wbC0+cmVmKCk7CisgICAgS0RPTTo6RE9NU3RyaW5nIG5hbWVzcGFjZVVSSShu
YW1lc3BhY2VVUklJbXBsKTsKICAgICBLRE9NOjpET01TdHJpbmcgcXVhbGlmaWVkTmFtZShxdWFs
aWZpZWROYW1lSW1wbCk7Ci0gICAgaWYoKG5hbWVzcGFjZVVSSSAmJiBLRE9NOjpET01TdHJpbmco
bmFtZXNwYWNlVVJJKSAhPSBLRE9NOjpOU19TVkcpIHx8IChxdWFsaWZpZWROYW1lICE9ICJzdmci
ICYmIHF1YWxpZmllZE5hbWUgIT0gInN2ZzpzdmciKSkKLSAgICAgICAgcmV0dXJuIEtET006OkRP
TUltcGxlbWVudGF0aW9uSW1wbDo6Y3JlYXRlRG9jdW1lbnQobmFtZXNwYWNlVVJJLCBxdWFsaWZp
ZWROYW1lSW1wbCwgZG9jdHlwZSwgY3JlYXRlRG9jRWxlbWVudCwgdmlldyk7CisgICAgaWYoKG5h
bWVzcGFjZVVSSSAhPSBLRE9NOjpOU19TVkcpIHx8IChxdWFsaWZpZWROYW1lICE9ICJzdmciICYm
IHF1YWxpZmllZE5hbWUgIT0gInN2ZzpzdmciKSkKKyAgICAgICAgcmV0dXJuIEtET006OkRPTUlt
cGxlbWVudGF0aW9uSW1wbDo6Y3JlYXRlRG9jdW1lbnQobmFtZXNwYWNlVVJJSW1wbCwgcXVhbGlm
aWVkTmFtZUltcGwsIGRvY3R5cGUsIGNyZWF0ZURvY0VsZW1lbnQsIHZpZXcpOwogCiAgICAgaW50
IGR1bW15OwotICAgIEtET006OkhlbHBlcjo6Q2hlY2tRdWFsaWZpZWROYW1lKHF1YWxpZmllZE5h
bWVJbXBsLCBuYW1lc3BhY2VVUkksIGR1bW15LCB0cnVlIC8qbmFtZUNhbkJlTnVsbCovLCB0cnVl
IC8qbmFtZUNhbkJlRW1wdHksIHNlZSAjNjE2NTAqLyk7CisgICAgS0RPTTo6SGVscGVyOjpDaGVj
a1F1YWxpZmllZE5hbWUocXVhbGlmaWVkTmFtZUltcGwsIG5hbWVzcGFjZVVSSUltcGwsIGR1bW15
LCB0cnVlIC8qbmFtZUNhbkJlTnVsbCovLCB0cnVlIC8qbmFtZUNhbkJlRW1wdHksIHNlZSAjNjE2
NTAqLyk7CiAKICAgICAvLyBXUk9OR19ET0NVTUVOVF9FUlI6IFJhaXNlZCBpZiBkb2NUeXBlIGhh
cyBhbHJlYWR5IGJlZW4gdXNlZCB3aXRoIGEgZGlmZmVyZW50CiAgICAgLy8gICAgICAgICAgICAg
ICAgICAgICBkb2N1bWVudCBvciB3YXMgY3JlYXRlZCBmcm9tIGEgZGlmZmVyZW50IGltcGxlbWVu
dGF0aW9uLgpAQCAtMTc5LDEwICsxODUsMTUgQEAgS0RPTTo6RG9jdW1lbnRJbXBsICpTVkdET01J
bXBsZW1lbnRhdGlvbgogICAgIC8vIEFkZCByb290IGVsZW1lbnQuLi4KICAgICBpZihjcmVhdGVE
b2NFbGVtZW50KQogICAgIHsKLSAgICAgICAgS0RPTTo6RWxlbWVudEltcGwgKnN2ZyA9IGRvYy0+
Y3JlYXRlRWxlbWVudE5TKG5hbWVzcGFjZVVSSSwgcXVhbGlmaWVkTmFtZUltcGwpOworICAgICAg
ICBLRE9NOjpFbGVtZW50SW1wbCAqc3ZnID0gZG9jLT5jcmVhdGVFbGVtZW50TlMobmFtZXNwYWNl
VVJJSW1wbCwgcXVhbGlmaWVkTmFtZUltcGwpOwogICAgICAgICBkb2MtPmFwcGVuZENoaWxkKHN2
Zyk7CiAgICAgfQogCisgICAgaWYobmFtZXNwYWNlVVJJSW1wbCkKKyAgICAgICAgbmFtZXNwYWNl
VVJJSW1wbC0+ZGVyZWYoKTsKKyAgICBpZihxdWFsaWZpZWROYW1lSW1wbCkKKyAgICAgICAgcXVh
bGlmaWVkTmFtZUltcGwtPmRlcmVmKCk7CisKICAgICByZXR1cm4gZG9jOwogfQogCkBAIC0yMDcs
MTUgKzIxOCwxOCBAQCBLRE9NOjpEb2N1bWVudFR5cGVJbXBsICpTVkdET01JbXBsZW1lbnRhCiAK
IGludCBTVkdET01JbXBsZW1lbnRhdGlvbkltcGw6OnR5cGVUb0lkKEtET006OkRPTVN0cmluZ0lt
cGwgKnR5cGVJbXBsKQogewotICAgIEtET006OkRPTVN0cmluZyB0eXBlKHR5cGVJbXBsKTsKKyAg
ICBpZighdHlwZUltcGwpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIFFTdHJpbmcgdHlwZSA9
IHR5cGVJbXBsLT5zdHJpbmcoKTsKIAotICAgIGlmKHR5cGUgPT0gImxvYWQiKSByZXR1cm4gS0RP
TTo6TE9BRF9FVkVOVDsKLSAgICBlbHNlIGlmKHR5cGUgPT0gInVubG9hZCIpIHJldHVybiBLRE9N
OjpVTkxPQURfRVZFTlQ7Ci0gICAgZWxzZSBpZih0eXBlID09ICJhYm9ydCIpIHJldHVybiBLRE9N
OjpBQk9SVF9FVkVOVDsKLSAgICBlbHNlIGlmKHR5cGUgPT0gImVycm9yIikgcmV0dXJuIEtET006
OkVSUk9SX0VWRU5UOwotICAgIGVsc2UgaWYodHlwZSA9PSAicmVzaXplIikgcmV0dXJuIEtET006
OlJFU0laRV9FVkVOVDsKLSAgICBlbHNlIGlmKHR5cGUgPT0gInNjcm9sbCIpIHJldHVybiBLRE9N
OjpTQ1JPTExfRVZFTlQ7Ci0gICAgZWxzZSBpZih0eXBlID09ICJ6b29tIikgcmV0dXJuIFpPT01f
RVZFTlQ7CisgICAgaWYodHlwZSA9PSBRU3RyaW5nOjpmcm9tTGF0aW4xKCJsb2FkIikpIHJldHVy
biBLRE9NOjpMT0FEX0VWRU5UOworICAgIGVsc2UgaWYodHlwZSA9PSBRU3RyaW5nOjpmcm9tTGF0
aW4xKCJ1bmxvYWQiKSkgcmV0dXJuIEtET006OlVOTE9BRF9FVkVOVDsKKyAgICBlbHNlIGlmKHR5
cGUgPT0gUVN0cmluZzo6ZnJvbUxhdGluMSgiYWJvcnQiKSkgcmV0dXJuIEtET006OkFCT1JUX0VW
RU5UOworICAgIGVsc2UgaWYodHlwZSA9PSBRU3RyaW5nOjpmcm9tTGF0aW4xKCJlcnJvciIpKSBy
ZXR1cm4gS0RPTTo6RVJST1JfRVZFTlQ7CisgICAgZWxzZSBpZih0eXBlID09IFFTdHJpbmc6OmZy
b21MYXRpbjEoInJlc2l6ZSIpKSByZXR1cm4gS0RPTTo6UkVTSVpFX0VWRU5UOworICAgIGVsc2Ug
aWYodHlwZSA9PSBRU3RyaW5nOjpmcm9tTGF0aW4xKCJzY3JvbGwiKSkgcmV0dXJuIEtET006OlND
Uk9MTF9FVkVOVDsKKyAgICBlbHNlIGlmKHR5cGUgPT0gUVN0cmluZzo6ZnJvbUxhdGluMSgiem9v
bSIpKSByZXR1cm4gWk9PTV9FVkVOVDsKIAogICAgIHJldHVybiBLRE9NOjpET01JbXBsZW1lbnRh
dGlvbkltcGw6OnR5cGVUb0lkKHR5cGVJbXBsKTsKIH0KQEAgLTIyNSwxMyArMjM5LDEzIEBAIEtE
T006OkRPTVN0cmluZ0ltcGwgKlNWR0RPTUltcGxlbWVudGF0aW8KICAgICBRU3RyaW5nIHJldDsK
ICAgICBzd2l0Y2goZXZlbnRJZCkKICAgICB7Ci0gICAgICAgIGNhc2UgS0RPTTo6TE9BRF9FVkVO
VDogcmV0ID0gImxvYWQiOyBicmVhazsKLSAgICAgICAgY2FzZSBLRE9NOjpVTkxPQURfRVZFTlQ6
IHJldCA9ICJ1bmxvYWQiOyBicmVhazsKLSAgICAgICAgY2FzZSBLRE9NOjpBQk9SVF9FVkVOVDog
cmV0ID0gImFib3J0IjsgYnJlYWs7Ci0gICAgICAgIGNhc2UgS0RPTTo6RVJST1JfRVZFTlQ6IHJl
dCA9ICJlcnJvciI7IGJyZWFrOwotICAgICAgICBjYXNlIEtET006OlJFU0laRV9FVkVOVDogcmV0
ID0gInJlc2l6ZSI7IGJyZWFrOwotICAgICAgICBjYXNlIEtET006OlNDUk9MTF9FVkVOVDogcmV0
ID0gInNjcm9sbCI7IGJyZWFrOwotICAgICAgICBjYXNlIFpPT01fRVZFTlQ6IHJldCA9ICJ6b29t
IjsgYnJlYWs7CisgICAgICAgIGNhc2UgS0RPTTo6TE9BRF9FVkVOVDogcmV0ID0gUVN0cmluZzo6
ZnJvbUxhdGluMSgibG9hZCIpOyBicmVhazsKKyAgICAgICAgY2FzZSBLRE9NOjpVTkxPQURfRVZF
TlQ6IHJldCA9IFFTdHJpbmc6OmZyb21MYXRpbjEoInVubG9hZCIpOyBicmVhazsKKyAgICAgICAg
Y2FzZSBLRE9NOjpBQk9SVF9FVkVOVDogcmV0ID0gUVN0cmluZzo6ZnJvbUxhdGluMSgiYWJvcnQi
KTsgYnJlYWs7CisgICAgICAgIGNhc2UgS0RPTTo6RVJST1JfRVZFTlQ6IHJldCA9IFFTdHJpbmc6
OmZyb21MYXRpbjEoImVycm9yIik7IGJyZWFrOworICAgICAgICBjYXNlIEtET006OlJFU0laRV9F
VkVOVDogcmV0ID0gUVN0cmluZzo6ZnJvbUxhdGluMSgicmVzaXplIik7IGJyZWFrOworICAgICAg
ICBjYXNlIEtET006OlNDUk9MTF9FVkVOVDogcmV0ID0gUVN0cmluZzo6ZnJvbUxhdGluMSgic2Ny
b2xsIik7IGJyZWFrOworICAgICAgICBjYXNlIFpPT01fRVZFTlQ6IHJldCA9IFFTdHJpbmc6OmZy
b21MYXRpbjEoInpvb20iKTsgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6IHJldHVybiBLRE9NOjpE
T01JbXBsZW1lbnRhdGlvbkltcGw6OmlkVG9UeXBlKGV2ZW50SWQpOwogICAgIH0KIApJbmRleDog
a3N2ZzIvc3ZnL1NWR0RvY3VtZW50SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9y
b290L1NWR1N1cHBvcnQva3N2ZzIvc3ZnL1NWR0RvY3VtZW50SW1wbC5jcHAsdgpyZXRyaWV2aW5n
IHJldmlzaW9uIDEuNgpkaWZmIC1wIC11IC1yMS42IGtzdmcyL3N2Zy9TVkdEb2N1bWVudEltcGwu
Y3BwCi0tLSBrc3ZnMi9zdmcvU1ZHRG9jdW1lbnRJbXBsLmNwcAkyIFNlcCAyMDA1IDEwOjAzOjE3
IC0wMDAwCTEuNgorKysga3N2ZzIvc3ZnL1NWR0RvY3VtZW50SW1wbC5jcHAJNiBTZXAgMjAwNSAw
OTo1OTowNyAtMDAwMApAQCAtMzAsOCArMzAsNiBAQAogI2luY2x1ZGUgPGtkb20vSGVscGVyLmg+
CiAjaW5jbHVkZSA8a2RvbS9TaGFyZWQuaD4KICNpbmNsdWRlIDxrZG9tL05hbWVzcGFjZS5oPgot
Ly8jaW5jbHVkZSA8a2RvbS9Eb2N1bWVudFR5cGUuaD4KLS8vI2luY2x1ZGUgPGtkb20vZXZlbnRz
L0V2ZW50Lmg+CiAjaW5jbHVkZSA8a2RvbS9jb3JlL2RvbWF0dHJzLmg+CiAjaW5jbHVkZSA8a2Rv
bS9jYWNoZS9LRE9NTG9hZGVyLmg+CiAjaW5jbHVkZSA8a2RvbS9jb3JlL0NERkludGVyZmFjZS5o
PgpAQCAtNzYsNiArNzQsNyBAQAogI2luY2x1ZGUgIlNWR1RTcGFuRWxlbWVudEltcGwuaCIKICNp
bmNsdWRlICJTVkdJbWFnZUVsZW1lbnRJbXBsLmgiCiAjaW5jbHVkZSAiU1ZHVGl0bGVFbGVtZW50
SW1wbC5oIgorI2luY2x1ZGUgIlNWR0N1cnNvckVsZW1lbnRJbXBsLmgiCiAjaW5jbHVkZSAiU1ZH
RmlsdGVyRWxlbWVudEltcGwuaCIKICNpbmNsdWRlICJTVkdGRUltYWdlRWxlbWVudEltcGwuaCIK
ICNpbmNsdWRlICJTVkdGRUJsZW5kRWxlbWVudEltcGwuaCIKQEAgLTExOSw4ICsxMTgsMTAgQEAg
dXNpbmcgbmFtZXNwYWNlIEtTVkc7CiBTVkdEb2N1bWVudEltcGw6OlNWR0RvY3VtZW50SW1wbChT
VkdET01JbXBsZW1lbnRhdGlvbkltcGwgKmksIEtET006OktET01WaWV3ICp2aWV3KSA6IEtET006
OkRvY3VtZW50SW1wbChpLCB2aWV3LCBJRF9MQVNUX1NWR1RBRyArIDEsIEFUVFJfTEFTVF9TVkdB
VFRSICsgMSksIEtET006OkNhY2hlZE9iamVjdENsaWVudCgpCiB7CiAgICAgc2V0UGFpbnREZXZp
Y2Uoc3ZnVmlldygpKTsgLy8gQXNzaWduIG91ciBLU1ZHVmlldyBhcyBkb2N1bWVudCBwYWludCBk
ZXZpY2UKLQotICAgIG1fbmFtZXNwYWNlTWFwLT5uYW1lcy5pbnNlcnQoMCwgbmV3IEtET006OkRP
TVN0cmluZ0ltcGwoS0RPTTo6TlNfU1ZHLnVuaWNvZGUoKSwgS0RPTTo6TlNfU1ZHLmxlbmd0aCgp
KSk7CisgICAgCisgICAgS0RPTTo6RE9NU3RyaW5nSW1wbCAqc3ZnTmFtZXNwYWNlID0gS0RPTTo6
TlNfU1ZHLmhhbmRsZSgpOworICAgIHN2Z05hbWVzcGFjZS0+cmVmKCk7CisgICAgbV9uYW1lc3Bh
Y2VNYXAtPm5hbWVzLmluc2VydCgwLCBzdmdOYW1lc3BhY2UpOwogICAgIG1fbmFtZXNwYWNlTWFw
LT5jb3VudCsrOwogCiAgICAgbV9jYW52YXNWaWV3ID0gMDsKQEAgLTE4MiwxMCArMTgzLDggQEAg
S0RPTTo6RE9NU3RyaW5nSW1wbCAqU1ZHRG9jdW1lbnRJbXBsOjpVUgogU1ZHRWxlbWVudEltcGwg
KlNWR0RvY3VtZW50SW1wbDo6Y3JlYXRlU1ZHRWxlbWVudChLRE9NOjpET01TdHJpbmdJbXBsICpw
cmVmaXgsIEtET006OkRPTVN0cmluZ0ltcGwgKmxvY2FsTmFtZSkKIHsKICAgICBTVkdFbGVtZW50
SW1wbCAqZWxlbWVudCA9IDA7Ci0gICAgS0RPTTo6RE9NU3RyaW5nIHByZWYocHJlZml4KTsKLSAg
ICBpZighcHJlZml4IHx8IHByZWZpeC0+bGVuZ3RoKCkgPT0gMCkKLSAgICAgICAgcHJlZiA9IEtE
T006OkRPTVN0cmluZygpOwotICAgIFFTdHJpbmcgbG9jYWwgPSBLRE9NOjpET01TdHJpbmcobG9j
YWxOYW1lKS5zdHJpbmcoKTsKKworICAgIFFTdHJpbmcgbG9jYWwgPSAobG9jYWxOYW1lID8gbG9j
YWxOYW1lLT5zdHJpbmcoKSA6IFFTdHJpbmc6Om51bGwpOwogICAgIEtET006Ok5vZGVJbXBsOjpJ
ZCBpZCA9IGltcGxlbWVudGF0aW9uKCktPmNkZkludGVyZmFjZSgpLT5nZXRUYWdJRChsb2NhbC5h
c2NpaSgpLCBsb2NhbC5sZW5ndGgoKSk7CiAgICAgc3dpdGNoKGlkKQogICAgIHsKQEAgLTQyOSwx
MCArNDI4LDEzIEBAIFNWR0VsZW1lbnRJbXBsICpTVkdEb2N1bWVudEltcGw6OmNyZWF0ZVMKICAg
ICAgICAgICAgIGVsZW1lbnQgPSBuZXcgU1ZHVFNwYW5FbGVtZW50SW1wbChkb2NQdHIoKSwgaWQs
IHByZWZpeCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBkZWZhdWx0
OgorICAgICAgICBjYXNlIElEX0NVUlNPUjoKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJu
IDA7CisgICAgICAgICAgICBlbGVtZW50ID0gbmV3IFNWR0N1cnNvckVsZW1lbnRJbXBsKGRvY1B0
cigpLCBpZCwgcHJlZml4KTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICBlbGVtZW50ID0gMDsKICAgICB9OwogCiAgICAgcmV0dXJu
IGVsZW1lbnQ7CkBAIC00NDAsMTAgKzQ0MiwxNiBAQCBTVkdFbGVtZW50SW1wbCAqU1ZHRG9jdW1l
bnRJbXBsOjpjcmVhdGVTCiAKIEtET006OkVsZW1lbnRJbXBsICpTVkdEb2N1bWVudEltcGw6OmNy
ZWF0ZUVsZW1lbnQoS0RPTTo6RE9NU3RyaW5nSW1wbCAqdGFnTmFtZSkKIHsKKyAgICBpZih0YWdO
YW1lKQorICAgICAgICB0YWdOYW1lLT5yZWYoKTsKKwogICAgIFNWR0VsZW1lbnRJbXBsICplbGVt
ID0gY3JlYXRlU1ZHRWxlbWVudCgwLCB0YWdOYW1lKTsKICAgICBpZighZWxlbSkKICAgICAgICAg
cmV0dXJuIEtET006OkRvY3VtZW50SW1wbDo6Y3JlYXRlRWxlbWVudCh0YWdOYW1lKTsKIAorICAg
IGlmKHRhZ05hbWUpCisgICAgICAgIHRhZ05hbWUtPmRlcmVmKCk7CisKICAgICByZXR1cm4gZWxl
bTsKIH0KIApAQCAtNDU0LDYgKzQ2Miw3IEBAIEtET006OkVsZW1lbnRJbXBsICpTVkdEb2N1bWVu
dEltcGw6OmNyZWEKICAgICAgICAgbmFtZXNwYWNlVVJJSW1wbC0+cmVmKCk7CiAgICAgaWYocXVh
bGlmaWVkTmFtZSkKICAgICAgICAgcXVhbGlmaWVkTmFtZS0+cmVmKCk7CisKICAgICBLRE9NOjpE
T01TdHJpbmdJbXBsICpwcmVmaXggPSAwLCAqbG9jYWxOYW1lID0gMDsKICAgICBLRE9NOjpIZWxw
ZXI6OlNwbGl0UHJlZml4TG9jYWxOYW1lKHF1YWxpZmllZE5hbWUsIHByZWZpeCwgbG9jYWxOYW1l
KTsKIApAQCAtNDk4LDEwICs1MDcsMTAgQEAgU1ZHU1ZHRWxlbWVudEltcGwgKlNWR0RvY3VtZW50
SW1wbDo6cm9vdAogCiBLRE9NOjpFdmVudEltcGwgKlNWR0RvY3VtZW50SW1wbDo6Y3JlYXRlRXZl
bnQoS0RPTTo6RE9NU3RyaW5nSW1wbCAqZXZlbnRUeXBlSW1wbCkKIHsKLSAgICBLRE9NOjpET01T
dHJpbmcgZXZlbnRUeXBlKGV2ZW50VHlwZUltcGwpOwotICAgIGlmKGV2ZW50VHlwZSA9PSAiU1ZH
RXZlbnRzIikKKyAgICBRU3RyaW5nIGV2ZW50VHlwZSA9IChldmVudFR5cGVJbXBsID8gZXZlbnRU
eXBlSW1wbC0+c3RyaW5nKCkgOiBRU3RyaW5nOjpudWxsKTsKKyAgICBpZihldmVudFR5cGUgPT0g
UVN0cmluZzo6ZnJvbUxhdGluMSgiU1ZHRXZlbnRzIikpCiAgICAgICAgIHJldHVybiBuZXcgU1ZH
RXZlbnRJbXBsKCk7Ci0gICAgZWxzZSBpZihldmVudFR5cGUgPT0gIlNWR1pvb21FdmVudHMiKQor
ICAgIGVsc2UgaWYoZXZlbnRUeXBlID09IFFTdHJpbmc6OmZyb21MYXRpbjEoIlNWR1pvb21FdmVu
dHMiKSkKICAgICAgICAgcmV0dXJuIG5ldyBTVkdab29tRXZlbnRJbXBsKCk7CiAKICAgICByZXR1
cm4gRG9jdW1lbnRFdmVudEltcGw6OmNyZWF0ZUV2ZW50KGV2ZW50VHlwZUltcGwpOwpAQCAtNTE5
LDcgKzUyOCw3IEBAIHZvaWQgU1ZHRG9jdW1lbnRJbXBsOjpub3RpZnlGaW5pc2hlZChLRE8KICAg
ICAgICAgbV9jYWNoZWRTY3JpcHQtPmRlcmVmKHRoaXMpOwogICAgICAgICBtX2NhY2hlZFNjcmlw
dCA9IDA7CiAgICAgICAgIAotICAgICAgICBTVkdTY3JpcHRFbGVtZW50SW1wbDo6ZXhlY3V0ZVNj
cmlwdCh0aGlzLCBzY3JpcHRTb3VyY2Uuc3RyaW5nKCkpOworICAgICAgICBTVkdTY3JpcHRFbGVt
ZW50SW1wbDo6ZXhlY3V0ZVNjcmlwdCh0aGlzLCBLRE9NOjpET01TdHJpbmcoc2NyaXB0U291cmNl
LnN0cmluZygpKS5oYW5kbGUoKSk7CiAgICAgICAgIGV4ZWN1dGVTY3JpcHRzKHRydWUpOwogICAg
IH0KIH0KQEAgLTYxMCw3ICs2MTksNyBAQCBib29sIFNWR0RvY3VtZW50SW1wbDo6ZGlzcGF0Y2hL
ZXlFdmVudChLCiAKIEtET006OkRPTVN0cmluZ0ltcGwgKlNWR0RvY3VtZW50SW1wbDo6ZGVmYXVs
dE5TKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbmV3IEtET006OkRPTVN0cmluZ0ltcGwoS0RPTTo6
TlNfU1ZHLnN0cmluZygpKTsKKyAgICByZXR1cm4gS0RPTTo6TlNfU1ZHLmhhbmRsZSgpOwogfQog
CiB2b2lkIFNWR0RvY3VtZW50SW1wbDo6cmVjYWxjU3R5bGVTZWxlY3RvcigpCkBAIC03ODMsNyAr
NzkyLDcgQEAgdm9pZCBTVkdEb2N1bWVudEltcGw6OmV4ZWN1dGVTY3JpcHRzKGJvbwogICAgICAg
ICBlbHNlCiAgICAgICAgIHsKICAgICAgICAgICAgIC8vIG5vIHNyYyBhdHRyaWJ1dGUgLSBleGVj
dXRlIGZyb20gY29udGVudHMgb2YgdGFnCi0gICAgICAgICAgICBTVkdTY3JpcHRFbGVtZW50SW1w
bDo6ZXhlY3V0ZVNjcmlwdCh0aGlzLCBLRE9NOjpET01TdHJpbmcoc2NyaXB0LT50ZXh0Q29udGVu
dCgpKSk7CisgICAgICAgICAgICBTVkdTY3JpcHRFbGVtZW50SW1wbDo6ZXhlY3V0ZVNjcmlwdCh0
aGlzLCBzY3JpcHQtPnRleHRDb250ZW50KCkpOwogICAgICAgICAgICAgKysoKm1fc2NyaXB0c0l0
KTsKIAogICAgICAgICAgICAgbmVlZHNTdHlsZVNlbGVjdG9yVXBkYXRlID0gdHJ1ZTsKQEAgLTg1
NCwxMCArODYzLDEwIEBAIGJvb2wgU1ZHRG9jdW1lbnRJbXBsOjpwcmVwYXJlTW91c2VFdmVudCgK
ICAgICAgICAgaWYobV9sYXN0VGFyZ2V0ICYmIG1fbGFzdFRhcmdldCAhPSBjdXJyZW50KQogICAg
ICAgICB7CiAgICAgICAgICAgICBpZihtX2xhc3RUYXJnZXQtPmhhc0xpc3RlbmVyVHlwZShLRE9N
OjpET01GT0NVU09VVF9FVkVOVCkpCi0gICAgICAgICAgICAgICAgZGlzcGF0Y2hVSUV2ZW50KG1f
bGFzdFRhcmdldCwgIkRPTUZvY3VzT3V0Iik7CisgICAgICAgICAgICAgICAgZGlzcGF0Y2hVSUV2
ZW50KG1fbGFzdFRhcmdldCwgS0RPTTo6RE9NU3RyaW5nKCJET01Gb2N1c091dCIpLmhhbmRsZSgp
KTsKIAogICAgICAgICAgICAgaWYobV9sYXN0VGFyZ2V0LT5oYXNMaXN0ZW5lclR5cGUoS0RPTTo6
TU9VU0VPVVRfRVZFTlQpKQotICAgICAgICAgICAgICAgIGRpc3BhdGNoTW91c2VFdmVudChtX2xh
c3RUYXJnZXQsICJtb3VzZW91dCIpOworICAgICAgICAgICAgICAgIGRpc3BhdGNoTW91c2VFdmVu
dChtX2xhc3RUYXJnZXQsIEtET006OkRPTVN0cmluZygibW91c2VvdXQiKS5oYW5kbGUoKSk7CiAK
ICAgICAgICAgICAgIG1fbGFzdFRhcmdldCA9IDA7CiAgICAgICAgIH0KQEAgLTkyOCwyMyArOTM3
LDIzIEBAIGJvb2wgU1ZHRG9jdW1lbnRJbXBsOjpwcmVwYXJlTW91c2VFdmVudCgKICAgICAgICAg
ICAgICAgICAgICAgaWYoZXZlbnQtPmlkKCkgPT0gS0RPTTo6TU9VU0VVUF9FVkVOVCkKICAgICAg
ICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgaWYoY3VycmVudC0+aGFz
TGlzdGVuZXJUeXBlKEtET006OkNMSUNLX0VWRU5UKSkKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkaXNwYXRjaE1vdXNlRXZlbnQoY3VycmVudCwgImNsaWNrIik7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZGlzcGF0Y2hNb3VzZUV2ZW50KGN1cnJlbnQsIEtET006OkRPTVN0cmlu
ZygiY2xpY2siKS5oYW5kbGUoKSk7CiAKICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGN1cnJl
bnQtPmhhc0xpc3RlbmVyVHlwZShLRE9NOjpET01BQ1RJVkFURV9FVkVOVCkpCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZGlzcGF0Y2hVSUV2ZW50KGN1cnJlbnQsICJET01BY3RpdmF0ZSIp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BhdGNoVUlFdmVudChjdXJyZW50LCBL
RE9NOjpET01TdHJpbmcoIkRPTUFjdGl2YXRlIikuaGFuZGxlKCkpOwogCiAgICAgICAgICAgICAg
ICAgICAgICAgICBpZihjdXJyZW50LT5oYXNMaXN0ZW5lclR5cGUoS0RPTTo6RE9NRk9DVVNJTl9F
VkVOVCkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGF0Y2hVSUV2ZW50KGN1cnJl
bnQsICJET01Gb2N1c0luIik7ICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3Bh
dGNoVUlFdmVudChjdXJyZW50LCBLRE9NOjpET01TdHJpbmcoIkRPTUZvY3VzSW4iKS5oYW5kbGUo
KSk7ICAgIAogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGVsc2Ug
aWYoZXZlbnQtPmlkKCkgPT0gS0RPTTo6TU9VU0VNT1ZFX0VWRU5UKQogICAgICAgICAgICAgICAg
ICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZihtX2xhc3RUYXJnZXQgJiYgbV9sYXN0
VGFyZ2V0ICE9IGN1cnJlbnQpCiAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaWYobV9sYXN0VGFyZ2V0LT5oYXNMaXN0ZW5lclR5cGUoS0RPTTo6
RE9NRk9DVVNPVVRfRVZFTlQpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNw
YXRjaFVJRXZlbnQobV9sYXN0VGFyZ2V0LCAiRE9NRm9jdXNPdXQiKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZGlzcGF0Y2hVSUV2ZW50KG1fbGFzdFRhcmdldCwgS0RPTTo6RE9N
U3RyaW5nKCJET01Gb2N1c091dCIpLmhhbmRsZSgpKTsKIAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmKG1fbGFzdFRhcmdldC0+aGFzTGlzdGVuZXJUeXBlKEtET006Ok1PVVNFT1VUX0VW
RU5UKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGF0Y2hNb3VzZUV2ZW50
KG1fbGFzdFRhcmdldCwgIm1vdXNlb3V0Iik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRpc3BhdGNoTW91c2VFdmVudChtX2xhc3RUYXJnZXQsIEtET006OkRPTVN0cmluZygibW91
c2VvdXQiKS5oYW5kbGUoKSk7CiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2xhc3RU
YXJnZXQgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgfQpAQCAtOTUyLDcgKzk2MSw3IEBA
IGJvb2wgU1ZHRG9jdW1lbnRJbXBsOjpwcmVwYXJlTW91c2VFdmVudCgKICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmKGN1cnJlbnQtPmhhc0xpc3RlbmVyVHlwZShLRE9NOjpNT1VTRU9WRVJfRVZF
TlQpKQogICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmKG1fbGFzdFRhcmdldCAhPSBjdXJyZW50KQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkaXNwYXRjaE1vdXNlRXZlbnQoY3VycmVudCwgIm1vdXNlb3ZlciIpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaE1vdXNlRXZlbnQoY3VycmVudCwgS0RP
TTo6RE9NU3RyaW5nKCJtb3VzZW92ZXIiKS5oYW5kbGUoKSk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0KIApAQCAtOTgyLDI4ICs5OTEsMzYgQEAgVGlt
ZVNjaGVkdWxlciAqU1ZHRG9jdW1lbnRJbXBsOjp0aW1lU2NoZQogICAgIHJldHVybiBtX3RpbWVT
Y2hlZHVsZXI7CiB9CiAKLXZvaWQgU1ZHRG9jdW1lbnRJbXBsOjpkaXNwYXRjaFVJRXZlbnQoS0RP
TTo6RXZlbnRUYXJnZXRJbXBsICp0YXJnZXQsIGNvbnN0IEtET006OkRPTVN0cmluZyAmdHlwZSkK
K3ZvaWQgU1ZHRG9jdW1lbnRJbXBsOjpkaXNwYXRjaFVJRXZlbnQoS0RPTTo6RXZlbnRUYXJnZXRJ
bXBsICp0YXJnZXQsIEtET006OkRPTVN0cmluZ0ltcGwgKnR5cGUpCiB7CiAgICAgLy8gU2V0dXAg
a2RvbSAnVUlFdmVudCcuLi4KLSAgICBLRE9NOjpVSUV2ZW50SW1wbCAqZXZlbnQgPSBzdGF0aWNf
Y2FzdDxLRE9NOjpVSUV2ZW50SW1wbCAqPihjcmVhdGVFdmVudChLRE9NOjpET01TdHJpbmcoIlVJ
RXZlbnRzIikuaGFuZGxlKCkpKTsKKyAgICBLRE9NOjpET01TdHJpbmdJbXBsICpldmVudFR5cGUg
PSBuZXcgS0RPTTo6RE9NU3RyaW5nSW1wbCgiVUlFdmVudHMiKTsKKyAgICBldmVudFR5cGUtPnJl
ZigpOworCisgICAgS0RPTTo6VUlFdmVudEltcGwgKmV2ZW50ID0gc3RhdGljX2Nhc3Q8S0RPTTo6
VUlFdmVudEltcGwgKj4oY3JlYXRlRXZlbnQoZXZlbnRUeXBlKSk7CiAgICAgZXZlbnQtPnJlZigp
OwogCi0gICAgZXZlbnQtPmluaXRVSUV2ZW50KHR5cGUuaGFuZGxlKCksIHRydWUsIHRydWUsIDAs
IDApOworICAgIGV2ZW50LT5pbml0VUlFdmVudCh0eXBlLCB0cnVlLCB0cnVlLCAwLCAwKTsKICAg
ICB0YXJnZXQtPmRpc3BhdGNoRXZlbnQoZXZlbnQpOwogCiAgICAgZXZlbnQtPmRlcmVmKCk7Cisg
ICAgZXZlbnRUeXBlLT5kZXJlZigpOwogfQogCi12b2lkIFNWR0RvY3VtZW50SW1wbDo6ZGlzcGF0
Y2hNb3VzZUV2ZW50KEtET006OkV2ZW50VGFyZ2V0SW1wbCAqdGFyZ2V0LCBjb25zdCBLRE9NOjpE
T01TdHJpbmcgJnR5cGUpCit2b2lkIFNWR0RvY3VtZW50SW1wbDo6ZGlzcGF0Y2hNb3VzZUV2ZW50
KEtET006OkV2ZW50VGFyZ2V0SW1wbCAqdGFyZ2V0LCBLRE9NOjpET01TdHJpbmdJbXBsICp0eXBl
KQogewogICAgIC8vIFNldHVwIGtkb20gJ01vdXNlRXZlbnQnLi4uCi0gICAgS0RPTTo6TW91c2VF
dmVudEltcGwgKmV2ZW50ID0gc3RhdGljX2Nhc3Q8S0RPTTo6TW91c2VFdmVudEltcGwgKj4oY3Jl
YXRlRXZlbnQoS0RPTTo6RE9NU3RyaW5nKCJNb3VzZUV2ZW50cyIpLmhhbmRsZSgpKSk7CisgICAg
S0RPTTo6RE9NU3RyaW5nSW1wbCAqZXZlbnRUeXBlID0gbmV3IEtET006OkRPTVN0cmluZ0ltcGwo
Ik1vdXNlRXZlbnRzIik7CisgICAgZXZlbnRUeXBlLT5yZWYoKTsKKworICAgIEtET006Ok1vdXNl
RXZlbnRJbXBsICpldmVudCA9IHN0YXRpY19jYXN0PEtET006Ok1vdXNlRXZlbnRJbXBsICo+KGNy
ZWF0ZUV2ZW50KGV2ZW50VHlwZSkpOwogICAgIGV2ZW50LT5yZWYoKTsKIAotICAgIGV2ZW50LT5p
bml0RXZlbnQodHlwZS5oYW5kbGUoKSwgdHJ1ZSwgdHJ1ZSk7CisgICAgZXZlbnQtPmluaXRFdmVu
dCh0eXBlLCB0cnVlLCB0cnVlKTsKICAgICB0YXJnZXQtPmRpc3BhdGNoRXZlbnQoZXZlbnQpOwog
CiAgICAgZXZlbnQtPmRlcmVmKCk7CisgICAgZXZlbnRUeXBlLT5kZXJlZigpOwogfQogCiAvLyB2
aW06dHM9NDpub2V0CkluZGV4OiBrc3ZnMi9zdmcvU1ZHRG9jdW1lbnRJbXBsLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQpSQ1MgZmlsZTogL2N2cy9yb290L1NWR1N1cHBvcnQva3N2ZzIvc3ZnL1NWR0RvY3VtZW50SW1w
bC5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjYKZGlmZiAtcCAtdSAtcjEuNiBrc3ZnMi9zdmcv
U1ZHRG9jdW1lbnRJbXBsLmgKLS0tIGtzdmcyL3N2Zy9TVkdEb2N1bWVudEltcGwuaAkyIFNlcCAy
MDA1IDEwOjAzOjE3IC0wMDAwCTEuNgorKysga3N2ZzIvc3ZnL1NWR0RvY3VtZW50SW1wbC5oCTYg
U2VwIDIwMDUgMDk6NTk6MDcgLTAwMDAKQEAgLTEwMSw4ICsxMDEsOCBAQCBuYW1lc3BhY2UgS1NW
RwogICAgICAgICB2aXJ0dWFsIEtET006OkNTU1N0eWxlU2VsZWN0b3IgKmNyZWF0ZVN0eWxlU2Vs
ZWN0b3IoY29uc3QgUVN0cmluZyAmKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZvaWQgZGlz
cGF0Y2hVSUV2ZW50KEtET006OkV2ZW50VGFyZ2V0SW1wbCAqdGFyZ2V0LCBjb25zdCBLRE9NOjpE
T01TdHJpbmcgJnR5cGUpOwotICAgICAgICB2b2lkIGRpc3BhdGNoTW91c2VFdmVudChLRE9NOjpF
dmVudFRhcmdldEltcGwgKnRhcmdldCwgY29uc3QgS0RPTTo6RE9NU3RyaW5nICZ0eXBlKTsKKyAg
ICAgICAgdm9pZCBkaXNwYXRjaFVJRXZlbnQoS0RPTTo6RXZlbnRUYXJnZXRJbXBsICp0YXJnZXQs
IEtET006OkRPTVN0cmluZ0ltcGwgKnR5cGUpOworICAgICAgICB2b2lkIGRpc3BhdGNoTW91c2VF
dmVudChLRE9NOjpFdmVudFRhcmdldEltcGwgKnRhcmdldCwgS0RPTTo6RE9NU3RyaW5nSW1wbCAq
dHlwZSk7CiAKICAgICAgICAgU1ZHRWxlbWVudEltcGwgKmNyZWF0ZVNWR0VsZW1lbnQoS0RPTTo6
RE9NU3RyaW5nSW1wbCAqcHJlZml4LCBLRE9NOjpET01TdHJpbmdJbXBsICpsb2NhbE5hbWUpOwog
CkluZGV4OiBrc3ZnMi9zdmcvU1ZHRWxlbWVudEltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6
IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tzdmcyL3N2Zy9TVkdFbGVtZW50SW1wbC5jcHAsdgpyZXRy
aWV2aW5nIHJldmlzaW9uIDEuNQpkaWZmIC1wIC11IC1yMS41IGtzdmcyL3N2Zy9TVkdFbGVtZW50
SW1wbC5jcHAKLS0tIGtzdmcyL3N2Zy9TVkdFbGVtZW50SW1wbC5jcHAJMSBTZXAgMjAwNSAwOToz
OToxNSAtMDAwMAkxLjUKKysrIGtzdmcyL3N2Zy9TVkdFbGVtZW50SW1wbC5jcHAJNiBTZXAgMjAw
NSAwOTo1OTowNyAtMDAwMApAQCAtNTcsMTEgKzU3LDggQEAgYm9vbCBTVkdFbGVtZW50SW1wbDo6
aXNTdXBwb3J0ZWQoS0RPTTo6RAogCiBLRE9NOjpET01TdHJpbmdJbXBsICpTVkdFbGVtZW50SW1w
bDo6Z2V0SWQoKSBjb25zdAogewotICAgIEtET006OkRPTVN0cmluZyBuYW1lKCJpZCIpOwotICAg
IGlmKGhhc0F0dHJpYnV0ZShuYW1lLmhhbmRsZSgpKSkKLSAgICAgICAgcmV0dXJuIGdldEF0dHJp
YnV0ZShuYW1lLmhhbmRsZSgpKTsKLQotICAgIHJldHVybiBOVUxMOworICAgIEtET006OkRPTVN0
cmluZyBpZCgiaWQiKTsKKyAgICByZXR1cm4gdHJ5R2V0QXR0cmlidXRlKGlkLmhhbmRsZSgpKTsK
IH0KIAogdm9pZCBTVkdFbGVtZW50SW1wbDo6c2V0R2V0SWQoS0RPTTo6RE9NU3RyaW5nSW1wbCAq
KQpAQCAtNzEsMTEgKzY4LDcgQEAgdm9pZCBTVkdFbGVtZW50SW1wbDo6c2V0R2V0SWQoS0RPTTo6
RE9NUwogCiBLRE9NOjpET01TdHJpbmdJbXBsICpTVkdFbGVtZW50SW1wbDo6eG1sYmFzZSgpIGNv
bnN0CiB7Ci0gICAgS0RPTTo6RE9NU3RyaW5nIG5hbWUoInhtbDpiYXNlIik7Ci0gICAgaWYoaGFz
QXR0cmlidXRlKG5hbWUuaGFuZGxlKCkpKQotICAgICAgICByZXR1cm4gZ2V0QXR0cmlidXRlKG5h
bWUuaGFuZGxlKCkpOwotCi0gICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIHRyeUdldEF0dHJp
YnV0ZShLRE9NOjpET01TdHJpbmcoInhtbDpiYXNlIikuaGFuZGxlKCkpOwogfQogCiB2b2lkIFNW
R0VsZW1lbnRJbXBsOjpzZXRYbWxiYXNlKEtET006OkRPTVN0cmluZ0ltcGwgKikKQEAgLTExMiwx
NCArMTA1LDI5IEBAIFNWR0VsZW1lbnRJbXBsICpTVkdFbGVtZW50SW1wbDo6dmlld3BvcnQKICAg
ICByZXR1cm4gMDsKIH0KIAorS0RPTTo6RE9NU3RyaW5nSW1wbCAqU1ZHRWxlbWVudEltcGw6OnRy
eUdldEF0dHJpYnV0ZShLRE9NOjpET01TdHJpbmdJbXBsICpuYW1lLCBLRE9NOjpET01TdHJpbmdJ
bXBsICpkZWZhdWx0VmFsKSBjb25zdAoreworICAgIGlmKGhhc0F0dHJpYnV0ZShuYW1lKSkKKyAg
ICAgICAgcmV0dXJuIGdldEF0dHJpYnV0ZShuYW1lKTsKKworICAgIHJldHVybiBkZWZhdWx0VmFs
LT5jb3B5KCk7Cit9CisKK0tET006OkRPTVN0cmluZ0ltcGwgKlNWR0VsZW1lbnRJbXBsOjp0cnlH
ZXRBdHRyaWJ1dGVOUyhLRE9NOjpET01TdHJpbmdJbXBsICpuYW1lc3BhY2VVUkksIEtET006OkRP
TVN0cmluZ0ltcGwgKmxvY2FsTmFtZSwgS0RPTTo6RE9NU3RyaW5nSW1wbCAqZGVmYXVsdFZhbCkg
Y29uc3QKK3sKKyAgICBpZihoYXNBdHRyaWJ1dGVOUyhuYW1lc3BhY2VVUkksIGxvY2FsTmFtZSkp
CisgICAgICAgIHJldHVybiBnZXRBdHRyaWJ1dGVOUyhuYW1lc3BhY2VVUkksIGxvY2FsTmFtZSk7
CisKKyAgICByZXR1cm4gZGVmYXVsdFZhbC0+Y29weSgpOworfQorCiB2b2lkIFNWR0VsZW1lbnRJ
bXBsOjpwYXJzZUF0dHJpYnV0ZShLRE9NOjpBdHRyaWJ1dGVJbXBsICphdHRyKQogewotICAgIGlm
KCFvd25lckRvY3VtZW50KCkpCisgICAgY29uc3QgS0RPTTo6RG9jdW1lbnRJbXBsICpkb2MgPSBv
d25lckRvY3VtZW50KCk7CisgICAgaWYoIWRvYykKICAgICAgICAgcmV0dXJuOwotICAgIC8vY29u
c3QgS0RPTTo6RG9jdW1lbnRJbXBsICpkb2MgPSBvd25lckRvY3VtZW50KCk7CiAKICAgICBpbnQg
aWQgPSAoYXR0ci0+aWQoKSAmIE5vZGVJbXBsX0lkTG9jYWxNYXNrKTsKLSAgICBLRE9NOjpET01T
dHJpbmcgdmFsdWUoYXR0ci0+dmFsdWUoKSk7CiAgICAgc3dpdGNoKGlkKQogICAgIHsKICAgICAg
ICAgY2FzZSBBVFRSX09OTE9BRDoKQEAgLTE3MywxNiArMTgxLDE2IEBAIHZvaWQgU1ZHRWxlbWVu
dEltcGw6OnBhcnNlQXR0cmlidXRlKEtET00KICAgICB9OwogfQogI2lmIDAKLXZvaWQgU1ZHRWxl
bWVudEltcGw6OmFkZFNWR0V2ZW50TGlzdGVuZXIoS0RPTTo6RWNtYSAqZWNtYUVuZ2luZSwgY29u
c3QgS0RPTTo6RE9NU3RyaW5nICZ0eXBlLCBjb25zdCBLRE9NOjpET01TdHJpbmcgJnZhbHVlKQor
dm9pZCBTVkdFbGVtZW50SW1wbDo6YWRkU1ZHRXZlbnRMaXN0ZW5lcihLRE9NOjpFY21hICplY21h
RW5naW5lLCBLRE9NOjpET01TdHJpbmdJbXBsICp0eXBlLCBLRE9NOjpET01TdHJpbmdJbXBsICp2
YWx1ZSkKIHsKICAgICBpZighZWNtYUVuZ2luZSkKICAgICAgICAgcmV0dXJuOwotICAgIC8vIEZJ
WE1FCi0gICAgS0RPTTo6RXZlbnRMaXN0ZW5lckltcGwgKmxpc3RlbmVyID0gMDsvL2VjbWFFbmdp
bmUtPmNyZWF0ZUV2ZW50TGlzdGVuZXIodHlwZSwgdmFsdWUpOworCisgICAgS0RPTTo6RXZlbnRM
aXN0ZW5lckltcGwgKmxpc3RlbmVyID0gZWNtYUVuZ2luZS0+Y3JlYXRlRXZlbnRMaXN0ZW5lcih0
eXBlLCB2YWx1ZSk7CiAgICAgaWYobGlzdGVuZXIpCiAgICAgewogICAgICAgICBsaXN0ZW5lci0+
cmVmKCk7Ci0gICAgICAgIGFkZEV2ZW50TGlzdGVuZXIodHlwZS5oYW5kbGUoKSwgbGlzdGVuZXIs
IGZhbHNlKTsKKyAgICAgICAgYWRkRXZlbnRMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lciwgZmFsc2Up
OwogICAgIH0KIH0KICNlbmRpZgpJbmRleDoga3N2ZzIvc3ZnL1NWR0VsZW1lbnRJbXBsLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1NWR1N1cHBvcnQva3N2ZzIvc3ZnL1NWR0VsZW1l
bnRJbXBsLmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNQpkaWZmIC1wIC11IC1yMS41IGtzdmcy
L3N2Zy9TVkdFbGVtZW50SW1wbC5oCi0tLSBrc3ZnMi9zdmcvU1ZHRWxlbWVudEltcGwuaAkxIFNl
cCAyMDA1IDA5OjM5OjE1IC0wMDAwCTEuNQorKysga3N2ZzIvc3ZnL1NWR0VsZW1lbnRJbXBsLmgJ
NiBTZXAgMjAwNSAwOTo1OTowNyAtMDAwMApAQCAtNTYsNiArNTYsMTEgQEAgbmFtZXNwYWNlIEtT
VkcKICAgICAgICAgU1ZHU1ZHRWxlbWVudEltcGwgKm93bmVyU1ZHRWxlbWVudCgpIGNvbnN0Owog
ICAgICAgICBTVkdFbGVtZW50SW1wbCAqdmlld3BvcnRFbGVtZW50KCkgY29uc3Q7CiAKKyAgICAg
ICAgLy8gSGVscGVyIG1ldGhvZHMgdGhhdCByZXR1cm5zIHRoZSBhdHRyIHZhbHVlIGlmIGF0dHIg
aXMgc2V0LCBvdGhlcndpc2UgdGhlIGRlZmF1bHQgdmFsdWUuCisgICAgICAgIC8vIEl0IHRocm93
cyBOT19NT0RJRklDQVRJT05fQUxMT1dFRF9FUlIgaWYgdGhlIGVsZW1lbnQgaXMgcmVhZC1vbmx5
LgorICAgICAgICBLRE9NOjpET01TdHJpbmdJbXBsICp0cnlHZXRBdHRyaWJ1dGUoS0RPTTo6RE9N
U3RyaW5nSW1wbCAqbmFtZSwgS0RPTTo6RE9NU3RyaW5nSW1wbCAqZGVmYXVsdFZhbCA9IDApIGNv
bnN0OworICAgICAgICBLRE9NOjpET01TdHJpbmdJbXBsICp0cnlHZXRBdHRyaWJ1dGVOUyhLRE9N
OjpET01TdHJpbmdJbXBsICpuYW1lc3BhY2VVUkksIEtET006OkRPTVN0cmluZ0ltcGwgKmxvY2Fs
TmFtZSwgS0RPTTo6RE9NU3RyaW5nSW1wbCAqZGVmYXVsdFZhbCA9IDApIGNvbnN0OworCiAgICAg
ICAgIC8vIEludGVybmFsCiAgICAgICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShLRE9N
OjpBdHRyaWJ1dGVJbXBsICphdHRyKTsKIApJbmRleDoga3N2ZzIvc3ZnL1NWR0dyYWRpZW50RWxl
bWVudEltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tz
dmcyL3N2Zy9TVkdHcmFkaWVudEVsZW1lbnRJbXBsLmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24g
MS41CmRpZmYgLXAgLXUgLXIxLjUga3N2ZzIvc3ZnL1NWR0dyYWRpZW50RWxlbWVudEltcGwuY3Bw
Ci0tLSBrc3ZnMi9zdmcvU1ZHR3JhZGllbnRFbGVtZW50SW1wbC5jcHAJMSBTZXAgMjAwNSAwOToz
OToxNSAtMDAwMAkxLjUKKysrIGtzdmcyL3N2Zy9TVkdHcmFkaWVudEVsZW1lbnRJbXBsLmNwcAk2
IFNlcCAyMDA1IDA5OjU5OjA3IC0wMDAwCkBAIC05NCw3ICs5NCw3IEBAIHZvaWQgU1ZHR3JhZGll
bnRFbGVtZW50SW1wbDo6cGFyc2VBdHRyaWIKICAgICAgICAgY2FzZSBBVFRSX0dSQURJRU5UVFJB
TlNGT1JNOgogICAgICAgICB7CiAgICAgICAgICAgICBTVkdUcmFuc2Zvcm1MaXN0SW1wbCAqZ3Jh
ZGllbnRUcmFuc2Zvcm1zID0gZ3JhZGllbnRUcmFuc2Zvcm0oKS0+YmFzZVZhbCgpOwotICAgICAg
ICAgICAgU1ZHVHJhbnNmb3JtYWJsZUltcGw6OnBhcnNlVHJhbnNmb3JtQXR0cmlidXRlKGdyYWRp
ZW50VHJhbnNmb3JtcywgdmFsdWUpOworICAgICAgICAgICAgU1ZHVHJhbnNmb3JtYWJsZUltcGw6
OnBhcnNlVHJhbnNmb3JtQXR0cmlidXRlKGdyYWRpZW50VHJhbnNmb3JtcywgYXR0ci0+dmFsdWUo
KSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIEFUVFJfU1BS
RUFETUVUSE9EOgpJbmRleDoga3N2ZzIvc3ZnL1NWR0hlbHBlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1Mg
ZmlsZTogL2N2cy9yb290L1NWR1N1cHBvcnQva3N2ZzIvc3ZnL1NWR0hlbHBlci5jcHAsdgpyZXRy
aWV2aW5nIHJldmlzaW9uIDEuNApkaWZmIC1wIC11IC1yMS40IGtzdmcyL3N2Zy9TVkdIZWxwZXIu
Y3BwCi0tLSBrc3ZnMi9zdmcvU1ZHSGVscGVyLmNwcAkxIFNlcCAyMDA1IDA3OjM1OjQyIC0wMDAw
CTEuNAorKysga3N2ZzIvc3ZnL1NWR0hlbHBlci5jcHAJNiBTZXAgMjAwNSAwOTo1OTowNyAtMDAw
MApAQCAtNDAsMTEgKzQwLDEyIEBAIGZsb2F0IFNWR0hlbHBlcjo6UGVyY2VudGFnZU9mVmlld3Bv
cnQoZmwKICAgICBmbG9hdCB3aWR0aCA9IDAsIGhlaWdodCA9IDA7CiAgICAgaWYoIXZpZXdwb3J0
RWxlbWVudCkKICAgICAgICAgcmV0dXJuIDAuMDsKLSAgICAKKyAKICAgICBjb25zdCBTVkdTVkdF
bGVtZW50SW1wbCAqc3ZnID0gZHluYW1pY19jYXN0PGNvbnN0IFNWR1NWR0VsZW1lbnRJbXBsICo+
KHZpZXdwb3J0RWxlbWVudCk7CiAgICAgaWYoc3ZnKQogICAgIHsKLSAgICAgICAgaWYoc3ZnLT5o
YXNBdHRyaWJ1dGUoS0RPTTo6RE9NU3RyaW5nKCJ2aWV3Qm94IikuaGFuZGxlKCkpKQorICAgICAg
ICBLRE9NOjpET01TdHJpbmcgdmlld0JveCgidmlld0JveCIpOworICAgICAgICBpZihzdmctPmhh
c0F0dHJpYnV0ZSh2aWV3Qm94LmhhbmRsZSgpKSkKICAgICAgICAgewogICAgICAgICAgICAgd2lk
dGggPSBzdmctPnZpZXdCb3goKS0+YmFzZVZhbCgpLT53aWR0aCgpOwogICAgICAgICAgICAgaGVp
Z2h0ID0gc3ZnLT52aWV3Qm94KCktPmJhc2VWYWwoKS0+aGVpZ2h0KCk7CkluZGV4OiBrc3ZnMi9z
dmcvU1ZHSW1hZ2VFbGVtZW50SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290
L1NWR1N1cHBvcnQva3N2ZzIvc3ZnL1NWR0ltYWdlRWxlbWVudEltcGwuY3BwLHYKcmV0cmlldmlu
ZyByZXZpc2lvbiAxLjUKZGlmZiAtcCAtdSAtcjEuNSBrc3ZnMi9zdmcvU1ZHSW1hZ2VFbGVtZW50
SW1wbC5jcHAKLS0tIGtzdmcyL3N2Zy9TVkdJbWFnZUVsZW1lbnRJbXBsLmNwcAkxIFNlcCAyMDA1
IDA5OjM5OjE2IC0wMDAwCTEuNQorKysga3N2ZzIvc3ZnL1NWR0ltYWdlRWxlbWVudEltcGwuY3Bw
CTYgU2VwIDIwMDUgMDk6NTk6MDcgLTAwMDAKQEAgLTE5NSw3ICsxOTUsNyBAQCB2b2lkIFNWR0lt
YWdlRWxlbWVudEltcGw6Om5vdGlmeUZpbmlzaGVkCiAgICAgICAgIHBhcnNlci0+ZG9tQ29uZmln
KCktPnNldFBhcmFtZXRlcihLRE9NOjpFTlRJVElFUy5oYW5kbGUoKSwgZmFsc2UpOwogICAgICAg
ICBwYXJzZXItPmRvbUNvbmZpZygpLT5zZXRQYXJhbWV0ZXIoS0RPTTo6RUxFTUVOVF9DT05URU5U
X1dISVRFU1BBQ0UuaGFuZGxlKCksIGZhbHNlKTsKIAotICAgICAgICBRQnVmZmVyICp0ZW1wID0g
bmV3IFFCdWZmZXIobV9jYWNoZWREb2N1bWVudC0+ZG9jdW1lbnRCdWZmZXIoKS0+YnVmZmVyKCkp
OworICAgICAgICBRQnVmZmVyICp0ZW1wID0gbmV3IFFCdWZmZXIoJm1fY2FjaGVkRG9jdW1lbnQt
PmRvY3VtZW50QnVmZmVyKCktPmJ1ZmZlcigpKTsKICAgICAgICAgbV9zdmdEb2MgPSBzdGF0aWNf
Y2FzdDxTVkdEb2N1bWVudEltcGwgKj4ocGFyc2VyLT5zeW5jUGFyc2UodGVtcCkpOwogICAgICAg
ICBpZihtX3N2Z0RvYykKICAgICAgICAgewpAQCAtMjI3LDEyICsyMjcsMTcgQEAgdm9pZCBTVkdJ
bWFnZUVsZW1lbnRJbXBsOjpub3RpZnlGaW5pc2hlZAogI2lmbmRlZiBBUFBMRV9DT01QSUxFX0hB
Q0sKICAgICAgICAgICAgIEtSZW5kZXJpbmdGaWxsUGFpbnRlciAqZmlsbFBhaW50ZXIgPSBtX2Nh
bnZhc0l0ZW0tPnN0eWxlKCktPmZpbGxQYWludGVyKCk7CiAgICAgICAgICAgICBpZighZmlsbFBh
aW50ZXIpCi0KKyAgICAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgICAgIEtSZW5kZXJp
bmdQYWludFNlcnZlciAqZmlsbFBhaW50U2VydmVyID0gZmlsbFBhaW50ZXItPnBhaW50U2VydmVy
KCk7CiAgICAgICAgICAgICBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJJbWFnZSAqZmlsbFBhaW50U2Vy
dmVySW1hZ2UgPSBzdGF0aWNfY2FzdDxLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJJbWFnZSAqPihmaWxs
UGFpbnRTZXJ2ZXIpOwogCi0gICAgICAgICAgICBLQ2FudmFzSW1hZ2VCdWZmZXIgKmltYWdlQnVm
ZmVyID0gbmV3IEtDYW52YXNJbWFnZUJ1ZmZlcihtX2NhY2hlZEltYWdlLT5waXhtYXAoKS5jb252
ZXJ0VG9JbWFnZSgpKTsKKyAgICAgICAgICAgIFFQaXhtYXAgcGl4bShtX2NhY2hlZEltYWdlLT5w
aXhtYXBfc2l6ZSgpKTsKKwkJCWtkRGVidWcoKSA8PCAicGl4bSB3IDogIiA8PCBwaXhtLnNpemUo
KSA8PCBlbmRsOworCQkJUVBhaW50ZXIgcCgmcGl4bSk7CisJCQlJbWFnZVBhaW50ZXIgaXAobV9j
YWNoZWRJbWFnZS0+aW1hZ2UoKSk7CisJCQlpcC5wYWludCgwLCAwLCAmcCwgMCwgMCwgcGl4bS53
aWR0aCgpLCBwaXhtLmhlaWdodCgpKTsKKyAgICAgICAgICAgIEtDYW52YXNJbWFnZUJ1ZmZlciAq
aW1hZ2VCdWZmZXIgPSBuZXcgS0NhbnZhc0ltYWdlQnVmZmVyKHBpeG0pOwogICAgICAgICAgICAg
ZmlsbFBhaW50U2VydmVySW1hZ2UtPnNldEltYWdlKGltYWdlQnVmZmVyKTsKICNlbmRpZgogCklu
ZGV4OiBrc3ZnMi9zdmcvU1ZHTGVuZ3RoTGlzdEltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6
IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tzdmcyL3N2Zy9TVkdMZW5ndGhMaXN0SW1wbC5jcHAsdgpy
ZXRyaWV2aW5nIHJldmlzaW9uIDEuNApkaWZmIC1wIC11IC1yMS40IGtzdmcyL3N2Zy9TVkdMZW5n
dGhMaXN0SW1wbC5jcHAKLS0tIGtzdmcyL3N2Zy9TVkdMZW5ndGhMaXN0SW1wbC5jcHAJMSBTZXAg
MjAwNSAwNzozNTo0NCAtMDAwMAkxLjQKKysrIGtzdmcyL3N2Zy9TVkdMZW5ndGhMaXN0SW1wbC5j
cHAJNiBTZXAgMjAwNSAwOTo1OTowOCAtMDAwMApAQCAtNDMsNyArNDMsOCBAQCB2b2lkIFNWR0xl
bmd0aExpc3RJbXBsOjpwYXJzZShjb25zdCBRU3RyCiAgICAgZm9yKHVuc2lnbmVkIGludCBpID0g
MDtpIDwgbGVuZ3Rocy5jb3VudCgpO2krKykKICAgICB7CiAgICAgICAgIFNWR0xlbmd0aEltcGwg
Kmxlbmd0aCA9IG5ldyBTVkdMZW5ndGhJbXBsKGNvbnRleHQsIG1vZGUpOwotICAgICAgICBsZW5n
dGgtPnNldFZhbHVlQXNTdHJpbmcoS0RPTTo6RE9NU3RyaW5nKGxlbmd0aHNbaV0pLmhhbmRsZSgp
KTsKKyAgICAgICAgS0RPTTo6RE9NU3RyaW5nIHN0cihsZW5ndGhzW2ldKTsKKyAgICAgICAgbGVu
Z3RoLT5zZXRWYWx1ZUFzU3RyaW5nKHN0ci5oYW5kbGUoKSk7CiAgICAgICAgIGFwcGVuZEl0ZW0o
bGVuZ3RoKTsKICAgICB9CiB9CkluZGV4OiBrc3ZnMi9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVt
ZW50SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1NWR1N1cHBvcnQva3N2
ZzIvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudEltcGwuY3BwLHYKcmV0cmlldmluZyByZXZp
c2lvbiAxLjUKZGlmZiAtcCAtdSAtcjEuNSBrc3ZnMi9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVt
ZW50SW1wbC5jcHAKLS0tIGtzdmcyL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnRJbXBsLmNw
cAkxIFNlcCAyMDA1IDA5OjM5OjE2IC0wMDAwCTEuNQorKysga3N2ZzIvc3ZnL1NWR0xpbmVhckdy
YWRpZW50RWxlbWVudEltcGwuY3BwCTYgU2VwIDIwMDUgMDk6NTk6MDggLTAwMDAKQEAgLTc4LDcg
Kzc4LDcgQEAgU1ZHQW5pbWF0ZWRMZW5ndGhJbXBsICpTVkdMaW5lYXJHcmFkaWVudAogICAgIC8v
IFNwZWMgOiBJZiB0aGUgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBlZmZlY3QgaXMg
YXMgaWYgYSB2YWx1ZSBvZiAiMTAwJSIgd2VyZSBzcGVjaWZpZWQuCiAgICAgaWYoIW1feDIpCiAg
ICAgewotICAgICAgICAgbGF6eV9jcmVhdGU8U1ZHQW5pbWF0ZWRMZW5ndGhJbXBsPihtX3gyLCB0
aGlzLCBMTV9XSURUSCwgdmlld3BvcnRFbGVtZW50KCkpOworICAgICAgICBsYXp5X2NyZWF0ZTxT
VkdBbmltYXRlZExlbmd0aEltcGw+KG1feDIsIHRoaXMsIExNX1dJRFRILCB2aWV3cG9ydEVsZW1l
bnQoKSk7CiAgICAgICAgIG1feDItPmJhc2VWYWwoKS0+c2V0VmFsdWUoMS4wKTsKICAgICAgICAg
cmV0dXJuIG1feDI7CiAgICAgfQpJbmRleDoga3N2ZzIvc3ZnL1NWR01hdHJpeEltcGwuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tzdmcyL3N2Zy9TVkdNYXRy
aXhJbXBsLmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS40CmRpZmYgLXAgLXUgLXIxLjQga3N2
ZzIvc3ZnL1NWR01hdHJpeEltcGwuY3BwCi0tLSBrc3ZnMi9zdmcvU1ZHTWF0cml4SW1wbC5jcHAJ
MSBTZXAgMjAwNSAwNzozNTo0NSAtMDAwMAkxLjQKKysrIGtzdmcyL3N2Zy9TVkdNYXRyaXhJbXBs
LmNwcAk2IFNlcCAyMDA1IDA5OjU5OjA4IC0wMDAwCkBAIC0zMyw3ICszMyw3IEBAIFNWR01hdHJp
eEltcGw6OlNWR01hdHJpeEltcGwoKSA6IEtET006OlMKIHsKIH0KIAotU1ZHTWF0cml4SW1wbDo6
U1ZHTWF0cml4SW1wbChRV01hdHJpeCBtYXQpIDogS0RPTTo6U2hhcmVkKCkKK1NWR01hdHJpeElt
cGw6OlNWR01hdHJpeEltcGwoUU1hdHJpeCBtYXQpIDogS0RPTTo6U2hhcmVkKCkKIHsKICAgICBt
X21hdCA9IG1hdDsKIH0KQEAgLTExNCw3ICsxMTQsNyBAQCB2b2lkIFNWR01hdHJpeEltcGw6OmNv
cHkoY29uc3QgU1ZHTWF0cml4CiAKIFNWR01hdHJpeEltcGwgKlNWR01hdHJpeEltcGw6OnBvc3RN
dWx0aXBseShjb25zdCBTVkdNYXRyaXhJbXBsICpzZWNvbmRNYXRyaXgpCiB7Ci0gICAgUVdNYXRy
aXggdGVtcChzZWNvbmRNYXRyaXgtPmEoKSwgc2Vjb25kTWF0cml4LT5iKCksIHNlY29uZE1hdHJp
eC0+YygpLCBzZWNvbmRNYXRyaXgtPmQoKSwgc2Vjb25kTWF0cml4LT5lKCksIHNlY29uZE1hdHJp
eC0+ZigpKTsKKyAgICBRTWF0cml4IHRlbXAoc2Vjb25kTWF0cml4LT5hKCksIHNlY29uZE1hdHJp
eC0+YigpLCBzZWNvbmRNYXRyaXgtPmMoKSwgc2Vjb25kTWF0cml4LT5kKCksIHNlY29uZE1hdHJp
eC0+ZSgpLCBzZWNvbmRNYXRyaXgtPmYoKSk7CiAgICAgbV9tYXQgKj0gdGVtcDsKICAgICByZXR1
cm4gdGhpczsKIH0KQEAgLTEyOCw3ICsxMjgsNyBAQCBTVkdNYXRyaXhJbXBsICpTVkdNYXRyaXhJ
bXBsOjppbnZlcnNlKCkKIFNWR01hdHJpeEltcGwgKlNWR01hdHJpeEltcGw6OnBvc3RUcmFuc2xh
dGUoZG91YmxlIHgsICBkb3VibGUgeSkKIHsKICAgICAvLyBDb3VsZCBvcHRpbWlzZSB0aGVzZS4K
LSAgICBRV01hdHJpeCB0ZW1wOworICAgIFFNYXRyaXggdGVtcDsKICAgICB0ZW1wLnRyYW5zbGF0
ZSh4LCB5KTsKICAgICBtX21hdCAqPSB0ZW1wOwogICAgIHJldHVybiB0aGlzOwpAQCAtMTM2LDcg
KzEzNiw3IEBAIFNWR01hdHJpeEltcGwgKlNWR01hdHJpeEltcGw6OnBvc3RUcmFuc2wKIAogU1ZH
TWF0cml4SW1wbCAqU1ZHTWF0cml4SW1wbDo6cG9zdFNjYWxlKGRvdWJsZSBzY2FsZUZhY3RvcikK
IHsKLSAgICBRV01hdHJpeCB0ZW1wOworICAgIFFNYXRyaXggdGVtcDsKICAgICB0ZW1wLnNjYWxl
KHNjYWxlRmFjdG9yLCBzY2FsZUZhY3Rvcik7CiAgICAgbV9tYXQgKj0gdGVtcDsKICAgICByZXR1
cm4gdGhpczsKQEAgLTE0NCw3ICsxNDQsNyBAQCBTVkdNYXRyaXhJbXBsICpTVkdNYXRyaXhJbXBs
Ojpwb3N0U2NhbGUoCiAKIFNWR01hdHJpeEltcGwgKlNWR01hdHJpeEltcGw6OnBvc3RTY2FsZU5v
blVuaWZvcm0oZG91YmxlIHNjYWxlRmFjdG9yWCwgZG91YmxlIHNjYWxlRmFjdG9yWSkKIHsKLSAg
ICBRV01hdHJpeCB0ZW1wOworICAgIFFNYXRyaXggdGVtcDsKICAgICB0ZW1wLnNjYWxlKHNjYWxl
RmFjdG9yWCwgc2NhbGVGYWN0b3JZKTsKICAgICBtX21hdCAqPSB0ZW1wOwogICAgIHJldHVybiB0
aGlzOwpAQCAtMTUyLDcgKzE1Miw3IEBAIFNWR01hdHJpeEltcGwgKlNWR01hdHJpeEltcGw6OnBv
c3RTY2FsZU4KIAogU1ZHTWF0cml4SW1wbCAqU1ZHTWF0cml4SW1wbDo6cG9zdFJvdGF0ZShkb3Vi
bGUgYW5nbGUpCiB7Ci0gICAgUVdNYXRyaXggdGVtcDsKKyAgICBRTWF0cml4IHRlbXA7CiAgICAg
dGVtcC5yb3RhdGUoYW5nbGUpOwogICAgIG1fbWF0ICo9IHRlbXA7CiAgICAgcmV0dXJuIHRoaXM7
CkBAIC0xNjAsNyArMTYwLDcgQEAgU1ZHTWF0cml4SW1wbCAqU1ZHTWF0cml4SW1wbDo6cG9zdFJv
dGF0ZQogCiBTVkdNYXRyaXhJbXBsICpTVkdNYXRyaXhJbXBsOjpwb3N0Um90YXRlRnJvbVZlY3Rv
cihkb3VibGUgeCwgZG91YmxlIHkpCiB7Ci0gICAgUVdNYXRyaXggdGVtcDsKKyAgICBRTWF0cml4
IHRlbXA7CiAgICAgdGVtcC5yb3RhdGUoU1ZHQW5nbGVJbXBsOjp0b2RlZyhhdGFuMih5LCB4KSkp
OwogICAgIG1fbWF0ICo9IHRlbXA7CiAgICAgcmV0dXJuIHRoaXM7CkBAIC0xNjgsMjEgKzE2OCwy
MSBAQCBTVkdNYXRyaXhJbXBsICpTVkdNYXRyaXhJbXBsOjpwb3N0Um90YXRlCiAKIFNWR01hdHJp
eEltcGwgKlNWR01hdHJpeEltcGw6OnBvc3RGbGlwWCgpCiB7Ci0gICAgUVdNYXRyaXggdGVtcCgt
MS4wRiwgMC4wRiwgMC4wRiwgMS4wRiwgMC4wRiwgMC4wRik7CisgICAgUU1hdHJpeCB0ZW1wKC0x
LjBGLCAwLjBGLCAwLjBGLCAxLjBGLCAwLjBGLCAwLjBGKTsKICAgICBtX21hdCAqPSB0ZW1wOwog
ICAgIHJldHVybiB0aGlzOwogfQogCiBTVkdNYXRyaXhJbXBsICpTVkdNYXRyaXhJbXBsOjpwb3N0
RmxpcFkoKQogewotICAgIFFXTWF0cml4IHRlbXAoMS4wRiwgMC4wRiwgMC4wRiwgLTEuMEYsIDAu
MEYsIDAuMEYpOworICAgIFFNYXRyaXggdGVtcCgxLjBGLCAwLjBGLCAwLjBGLCAtMS4wRiwgMC4w
RiwgMC4wRik7CiAgICAgbV9tYXQgKj0gdGVtcDsKICAgICByZXR1cm4gdGhpczsKIH0KIAogU1ZH
TWF0cml4SW1wbCAqU1ZHTWF0cml4SW1wbDo6cG9zdFNrZXdYKGRvdWJsZSBhbmdsZSkKIHsKLSAg
ICBRV01hdHJpeCB0ZW1wOworICAgIFFNYXRyaXggdGVtcDsKICAgICB0ZW1wLnNoZWFyKHRhbihT
VkdBbmdsZUltcGw6OnRvcmFkKGFuZ2xlKSksIDAuMEYpOwogICAgIG1fbWF0ICo9IHRlbXA7CiAg
ICAgcmV0dXJuIHRoaXM7CkBAIC0xOTAsNyArMTkwLDcgQEAgU1ZHTWF0cml4SW1wbCAqU1ZHTWF0
cml4SW1wbDo6cG9zdFNrZXdYKAogCiBTVkdNYXRyaXhJbXBsICpTVkdNYXRyaXhJbXBsOjpwb3N0
U2tld1koZG91YmxlIGFuZ2xlKQogewotICAgIFFXTWF0cml4IHRlbXA7CisgICAgUU1hdHJpeCB0
ZW1wOwogICAgIHRlbXAuc2hlYXIoMC4wRiwgdGFuKFNWR0FuZ2xlSW1wbDo6dG9yYWQoYW5nbGUp
KSk7CiAgICAgbV9tYXQgKj0gdGVtcDsKICAgICByZXR1cm4gdGhpczsKQEAgLTE5OCw3ICsxOTgs
NyBAQCBTVkdNYXRyaXhJbXBsICpTVkdNYXRyaXhJbXBsOjpwb3N0U2tld1koCiAKIFNWR01hdHJp
eEltcGwgKlNWR01hdHJpeEltcGw6Om11bHRpcGx5KGNvbnN0IFNWR01hdHJpeEltcGwgKnNlY29u
ZE1hdHJpeCkKIHsKLSAgICBRV01hdHJpeCB0ZW1wKHNlY29uZE1hdHJpeC0+YSgpLCBzZWNvbmRN
YXRyaXgtPmIoKSwgc2Vjb25kTWF0cml4LT5jKCksIHNlY29uZE1hdHJpeC0+ZCgpLCBzZWNvbmRN
YXRyaXgtPmUoKSwgc2Vjb25kTWF0cml4LT5mKCkpOworICAgIFFNYXRyaXggdGVtcChzZWNvbmRN
YXRyaXgtPmEoKSwgc2Vjb25kTWF0cml4LT5iKCksIHNlY29uZE1hdHJpeC0+YygpLCBzZWNvbmRN
YXRyaXgtPmQoKSwgc2Vjb25kTWF0cml4LT5lKCksIHNlY29uZE1hdHJpeC0+ZigpKTsKICAgICB0
ZW1wICo9IG1fbWF0OwogICAgIG1fbWF0ID0gdGVtcDsKICAgICByZXR1cm4gdGhpczsKQEAgLTI1
OCwxNyArMjU4LDE3IEBAIFNWR01hdHJpeEltcGwgKlNWR01hdHJpeEltcGw6OnNrZXdZKGRvdWIK
ICAgICByZXR1cm4gdGhpczsKIH0KIAotdm9pZCBTVkdNYXRyaXhJbXBsOjpzZXRNYXRyaXgoUVdN
YXRyaXggbWF0KQordm9pZCBTVkdNYXRyaXhJbXBsOjpzZXRNYXRyaXgoUU1hdHJpeCBtYXQpCiB7
CiAgICAgbV9tYXQgPSBtYXQ7CiB9CiAKLVFXTWF0cml4ICZTVkdNYXRyaXhJbXBsOjpxbWF0cml4
KCkKK1FNYXRyaXggJlNWR01hdHJpeEltcGw6OnFtYXRyaXgoKQogewogICAgIHJldHVybiBtX21h
dDsKIH0KIAotY29uc3QgUVdNYXRyaXggJlNWR01hdHJpeEltcGw6OnFtYXRyaXgoKSBjb25zdAor
Y29uc3QgUU1hdHJpeCAmU1ZHTWF0cml4SW1wbDo6cW1hdHJpeCgpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIG1fbWF0OwogfQpJbmRleDoga3N2ZzIvc3ZnL1NWR01hdHJpeEltcGwuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvU1ZHU3VwcG9ydC9rc3ZnMi9zdmcvU1ZHTWF0cml4SW1wbC5o
LHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjMKZGlmZiAtcCAtdSAtcjEuMyBrc3ZnMi9zdmcvU1ZH
TWF0cml4SW1wbC5oCi0tLSBrc3ZnMi9zdmcvU1ZHTWF0cml4SW1wbC5oCTEgU2VwIDIwMDUgMDc6
MzU6NDUgLTAwMDAJMS4zCisrKyBrc3ZnMi9zdmcvU1ZHTWF0cml4SW1wbC5oCTYgU2VwIDIwMDUg
MDk6NTk6MDggLTAwMDAKQEAgLTIzLDcgKzIzLDcgQEAKICNpZm5kZWYgS1NWR19TVkdNYXRyaXhJ
bXBsX0gKICNkZWZpbmUgS1NWR19TVkdNYXRyaXhJbXBsX0gKIAotI2luY2x1ZGUgPHF3bWF0cml4
Lmg+CisjaW5jbHVkZSA8cW1hdHJpeC5oPgogCiAjaW5jbHVkZSA8a2RvbS9TaGFyZWQuaD4KIApA
QCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgS1NWRwogICAgIHB1YmxpYzoKICAgICAgICAgU1ZH
TWF0cml4SW1wbCgpOwogICAgICAgICBTVkdNYXRyaXhJbXBsKGRvdWJsZSBhLCBkb3VibGUgYiwg
ZG91YmxlIGMsIGRvdWJsZSBkLCBkb3VibGUgZSwgZG91YmxlIGYpOwotICAgICAgICBTVkdNYXRy
aXhJbXBsKFFXTWF0cml4IG1hdCk7CisgICAgICAgIFNWR01hdHJpeEltcGwoUU1hdHJpeCBtYXQp
OwogICAgICAgICB2aXJ0dWFsIH5TVkdNYXRyaXhJbXBsKCk7CiAKICAgICAgICAgdm9pZCBzZXRB
KGRvdWJsZSBhKTsKQEAgLTg2LDE2ICs4NiwxNiBAQCBuYW1lc3BhY2UgS1NWRwogICAgICAgICB2
b2lkIHJlc2V0KCk7CiAKICAgICAgICAgLy8gS1NWRyBoZWxwZXIgbWV0aG9kCi0gICAgICAgIFFX
TWF0cml4ICZxbWF0cml4KCk7Ci0gICAgICAgIGNvbnN0IFFXTWF0cml4ICZxbWF0cml4KCkgY29u
c3Q7CisgICAgICAgIFFNYXRyaXggJnFtYXRyaXgoKTsKKyAgICAgICAgY29uc3QgUU1hdHJpeCAm
cW1hdHJpeCgpIGNvbnN0OwogCiAgICAgICAgIC8vIERldGVybWluZSB0aGUgc2NhbGluZyBjb21w
b25lbnQgb2YgdGhlIG1hdHJpeCBhbmQgZmFjdG9yIGl0IG91dC4gQWZ0ZXIKICAgICAgICAgLy8g
dGhpcyBvcGVyYXRpb24sIHRoZSBtYXRyaXggaGFzIHggYW5kIHkgc2NhbGUgb2Ygb25lLgogICAg
ICAgICB2b2lkIHJlbW92ZVNjYWxlKGRvdWJsZSAqeFNjYWxlLCBkb3VibGUgKnlTY2FsZSk7CiAK
ICAgICBwcml2YXRlOgotICAgICAgICB2b2lkIHNldE1hdHJpeChRV01hdHJpeCBtYXQpOwotICAg
ICAgICBRV01hdHJpeCBtX21hdDsKKyAgICAgICAgdm9pZCBzZXRNYXRyaXgoUU1hdHJpeCBtYXQp
OworICAgICAgICBRTWF0cml4IG1fbWF0OwogICAgIH07CiB9OwogCkluZGV4OiBrc3ZnMi9zdmcv
U1ZHUGF0dGVybkVsZW1lbnRJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3Qv
U1ZHU3VwcG9ydC9rc3ZnMi9zdmcvU1ZHUGF0dGVybkVsZW1lbnRJbXBsLmNwcCx2CnJldHJpZXZp
bmcgcmV2aXNpb24gMS41CmRpZmYgLXAgLXUgLXIxLjUga3N2ZzIvc3ZnL1NWR1BhdHRlcm5FbGVt
ZW50SW1wbC5jcHAKLS0tIGtzdmcyL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudEltcGwuY3BwCTEgU2Vw
IDIwMDUgMDk6Mzk6MTYgLTAwMDAJMS41CisrKyBrc3ZnMi9zdmcvU1ZHUGF0dGVybkVsZW1lbnRJ
bXBsLmNwcAk2IFNlcCAyMDA1IDA5OjU5OjA4IC0wMDAwCkBAIC0xNDksNyArMTQ5LDcgQEAgdm9p
ZCBTVkdQYXR0ZXJuRWxlbWVudEltcGw6OnBhcnNlQXR0cmlidQogICAgICAgICBjYXNlIEFUVFJf
UEFUVEVSTlRSQU5TRk9STToKICAgICAgICAgewogICAgICAgICAgICAgU1ZHVHJhbnNmb3JtTGlz
dEltcGwgKnBhdHRlcm5UcmFuc2Zvcm1zID0gcGF0dGVyblRyYW5zZm9ybSgpLT5iYXNlVmFsKCk7
Ci0gICAgICAgICAgICBTVkdUcmFuc2Zvcm1hYmxlSW1wbDo6cGFyc2VUcmFuc2Zvcm1BdHRyaWJ1
dGUocGF0dGVyblRyYW5zZm9ybXMsIHZhbHVlKTsKKyAgICAgICAgICAgIFNWR1RyYW5zZm9ybWFi
bGVJbXBsOjpwYXJzZVRyYW5zZm9ybUF0dHJpYnV0ZShwYXR0ZXJuVHJhbnNmb3JtcywgYXR0ci0+
dmFsdWUoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIEFU
VFJfWDoKSW5kZXg6IGtzdmcyL3N2Zy9TVkdTVkdFbGVtZW50SW1wbC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpS
Q1MgZmlsZTogL2N2cy9yb290L1NWR1N1cHBvcnQva3N2ZzIvc3ZnL1NWR1NWR0VsZW1lbnRJbXBs
LmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS42CmRpZmYgLXAgLXUgLXIxLjYga3N2ZzIvc3Zn
L1NWR1NWR0VsZW1lbnRJbXBsLmNwcAotLS0ga3N2ZzIvc3ZnL1NWR1NWR0VsZW1lbnRJbXBsLmNw
cAkyIFNlcCAyMDA1IDEwOjAzOjE4IC0wMDAwCTEuNgorKysga3N2ZzIvc3ZnL1NWR1NWR0VsZW1l
bnRJbXBsLmNwcAk2IFNlcCAyMDA1IDA5OjU5OjA5IC0wMDAwCkBAIC0yMCw4ICsyMCw4IEBACiAg
ICAgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCiAqLwogCi0jaW5jbHVkZSA8a2RvbS9ET01T
dHJpbmcuaD4KICNpbmNsdWRlIDxrZG9tL2NvcmUvQXR0ckltcGwuaD4KKyNpbmNsdWRlIDxrZG9t
L2NvcmUvRE9NU3RyaW5nSW1wbC5oPgogI2luY2x1ZGUgPGtkb20vY29yZS9OYW1lZEF0dHJNYXBJ
bXBsLmg+CiAKICNpbmNsdWRlIDxrY2FudmFzL0tDYW52YXMuaD4KQEAgLTU2LDYgKzU2LDcgQEAK
ICNpbmNsdWRlICJLQ2FudmFzUmVuZGVyaW5nU3R5bGUuaCIKIAogI2luY2x1ZGUgPHEzcGFpbnRk
ZXZpY2VtZXRyaWNzLmg+CisjaW5jbHVkZSA8cXRleHRzdHJlYW0uaD4KIAogdXNpbmcgbmFtZXNw
YWNlIEtTVkc7CiAKQEAgLTk3LDggKzk4LDkgQEAgU1ZHQW5pbWF0ZWRMZW5ndGhJbXBsICpTVkdT
VkdFbGVtZW50SW1wbAogewogICAgIGlmKCFtX3dpZHRoKQogICAgIHsKKyAgICAgICAgS0RPTTo6
RE9NU3RyaW5nIHRlbXAoIjEwMCUiKTsKICAgICAgICAgbGF6eV9jcmVhdGU8U1ZHQW5pbWF0ZWRM
ZW5ndGhJbXBsPihtX3dpZHRoLCBzdGF0aWNfY2FzdDxjb25zdCBTVkdTdHlsZWRFbGVtZW50SW1w
bCAqPigwKSwgTE1fV0lEVEgsIHRoaXMpOwotICAgICAgICBtX3dpZHRoLT5iYXNlVmFsKCktPnNl
dFZhbHVlQXNTdHJpbmcoS0RPTTo6RE9NU3RyaW5nKCIxMDAlIikuaGFuZGxlKCkpOworICAgICAg
ICBtX3dpZHRoLT5iYXNlVmFsKCktPnNldFZhbHVlQXNTdHJpbmcodGVtcC5oYW5kbGUoKSk7CiAg
ICAgfQogCiAgICAgcmV0dXJuIG1fd2lkdGg7CkBAIC0xMDgsOCArMTEwLDkgQEAgU1ZHQW5pbWF0
ZWRMZW5ndGhJbXBsICpTVkdTVkdFbGVtZW50SW1wbAogewogICAgIGlmKCFtX2hlaWdodCkKICAg
ICB7CisgICAgICAgIEtET006OkRPTVN0cmluZyB0ZW1wKCIxMDAlIik7CiAgICAgICAgIGxhenlf
Y3JlYXRlPFNWR0FuaW1hdGVkTGVuZ3RoSW1wbD4obV9oZWlnaHQsIHN0YXRpY19jYXN0PGNvbnN0
IFNWR1N0eWxlZEVsZW1lbnRJbXBsICo+KDApLCBMTV9IRUlHSFQsIHRoaXMpOwotICAgICAgICBt
X2hlaWdodC0+YmFzZVZhbCgpLT5zZXRWYWx1ZUFzU3RyaW5nKEtET006OkRPTVN0cmluZygiMTAw
JSIpLmhhbmRsZSgpKTsKKyAgICAgICAgbV9oZWlnaHQtPmJhc2VWYWwoKS0+c2V0VmFsdWVBc1N0
cmluZyh0ZW1wLmhhbmRsZSgpKTsKICAgICB9CiAKICAgICByZXR1cm4gbV9oZWlnaHQ7CkBAIC0x
MTcsMTEgKzEyMCw3IEBAIFNWR0FuaW1hdGVkTGVuZ3RoSW1wbCAqU1ZHU1ZHRWxlbWVudEltcGwK
IAogS0RPTTo6RE9NU3RyaW5nSW1wbCAqU1ZHU1ZHRWxlbWVudEltcGw6OmNvbnRlbnRTY3JpcHRU
eXBlKCkgY29uc3QKIHsKLSAgICBLRE9NOjpET01TdHJpbmcgbmFtZSgiY29udGVudFNjcmlwdFR5
cGUiKTsKLSAgICBpZihoYXNBdHRyaWJ1dGUobmFtZS5oYW5kbGUoKSkpCi0gICAgICAgIHJldHVy
biBnZXRBdHRyaWJ1dGUobmFtZS5oYW5kbGUoKSk7Ci0KLSAgICByZXR1cm4gbmV3IEtET006OkRP
TVN0cmluZ0ltcGwoInRleHQvZWNtYXNjcmlwdCIpOworICAgIHJldHVybiB0cnlHZXRBdHRyaWJ1
dGUoS0RPTTo6RE9NU3RyaW5nKCJjb250ZW50U2NyaXB0VHlwZSIpLmhhbmRsZSgpLCBLRE9NOjpE
T01TdHJpbmcoInRleHQvZWNtYXNjcmlwdCIpLmhhbmRsZSgpKTsKIH0KIAogdm9pZCBTVkdTVkdF
bGVtZW50SW1wbDo6c2V0Q29udGVudFNjcmlwdFR5cGUoS0RPTTo6RE9NU3RyaW5nSW1wbCAqdHlw
ZSkKQEAgLTEzMiwxNyArMTMxLDEyIEBAIHZvaWQgU1ZHU1ZHRWxlbWVudEltcGw6OnNldENvbnRl
bnRTY3JpcHQKIAogS0RPTTo6RE9NU3RyaW5nSW1wbCAqU1ZHU1ZHRWxlbWVudEltcGw6OmNvbnRl
bnRTdHlsZVR5cGUoKSBjb25zdAogewotICAgIEtET006OkRPTVN0cmluZyBuYW1lKCJjb250ZW50
U3R5bGVUeXBlIik7Ci0gICAgaWYoaGFzQXR0cmlidXRlKG5hbWUuaGFuZGxlKCkpKQotICAgICAg
ICByZXR1cm4gZ2V0QXR0cmlidXRlKG5hbWUuaGFuZGxlKCkpOwotCi0gICAgcmV0dXJuIG5ldyBL
RE9NOjpET01TdHJpbmdJbXBsKCJ0ZXh0L2NzcyIpOworICAgIHJldHVybiB0cnlHZXRBdHRyaWJ1
dGUoS0RPTTo6RE9NU3RyaW5nKCJjb250ZW50U3R5bGVUeXBlIikuaGFuZGxlKCksIEtET006OkRP
TVN0cmluZygidGV4dC9jc3MiKS5oYW5kbGUoKSk7CiB9CiAKIHZvaWQgU1ZHU1ZHRWxlbWVudElt
cGw6OnNldENvbnRlbnRTdHlsZVR5cGUoS0RPTTo6RE9NU3RyaW5nSW1wbCAqdHlwZSkKIHsKLSAg
ICBLRE9NOjpET01TdHJpbmcgbmFtZSgiY29udGVudFN0eWxlVHlwZSIpOyAgICAKLSAgICBzZXRB
dHRyaWJ1dGUobmFtZS5oYW5kbGUoKSwgdHlwZSk7CisgICAgc2V0QXR0cmlidXRlKEtET006OkRP
TVN0cmluZygiY29udGVudFN0eWxlVHlwZSIpLmhhbmRsZSgpLCB0eXBlKTsKIH0KIAogU1ZHUmVj
dEltcGwgKlNWR1NWR0VsZW1lbnRJbXBsOjp2aWV3cG9ydCgpIGNvbnN0CkBAIC0yNDMsMTQgKzIz
NywxNiBAQCBTVkdQb2ludEltcGwgKlNWR1NWR0VsZW1lbnRJbXBsOjpjdXJyZW50CiAgICAgcmV0
dXJuIGNyZWF0ZVNWR1BvaW50KGNhbnZhc1ZpZXcoKS0+cGFuKCkpOwogfQogCi1LRE9NOjpFdmVu
dEltcGwgKlNWR1NWR0VsZW1lbnRJbXBsOjpjcmVhdGVFdmVudChjb25zdCBLRE9NOjpET01TdHJp
bmcgJmV2ZW50VHlwZSkKK0tET006OkV2ZW50SW1wbCAqU1ZHU1ZHRWxlbWVudEltcGw6OmNyZWF0
ZUV2ZW50KEtET006OkRPTVN0cmluZ0ltcGwgKmV2ZW50VHlwZUltcGwpCiB7Ci0gICAgaWYoZXZl
bnRUeXBlID09ICJTVkdFdmVudHMiKQorICAgIFFTdHJpbmcgZXZlbnRUeXBlID0gKGV2ZW50VHlw
ZUltcGwgPyBldmVudFR5cGVJbXBsLT5zdHJpbmcoKSA6IFFTdHJpbmc6Om51bGwpOworCisgICAg
aWYoZXZlbnRUeXBlID09IFFTdHJpbmc6OmZyb21MYXRpbjEoIlNWR0V2ZW50cyIpKQogICAgICAg
ICByZXR1cm4gbmV3IFNWR0V2ZW50SW1wbCgpOwotICAgIGVsc2UgaWYoZXZlbnRUeXBlID09ICJT
Vkdab29tRXZlbnRzIikKKyAgICBlbHNlIGlmKGV2ZW50VHlwZSA9PSBRU3RyaW5nOjpmcm9tTGF0
aW4xKCJTVkdab29tRXZlbnRzIikpCiAgICAgICAgIHJldHVybiBuZXcgU1ZHWm9vbUV2ZW50SW1w
bCgpOwogCi0gICAgcmV0dXJuIERvY3VtZW50RXZlbnRJbXBsOjpjcmVhdGVFdmVudChldmVudFR5
cGUuaGFuZGxlKCkpOworICAgIHJldHVybiBEb2N1bWVudEV2ZW50SW1wbDo6Y3JlYXRlRXZlbnQo
ZXZlbnRUeXBlSW1wbCk7CiB9CiAKIHZvaWQgU1ZHU1ZHRWxlbWVudEltcGw6OnBhcnNlQXR0cmli
dXRlKEtET006OkF0dHJpYnV0ZUltcGwgKmF0dHIpCkluZGV4OiBrc3ZnMi9zdmcvU1ZHU1ZHRWxl
bWVudEltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvU1ZHU3VwcG9ydC9rc3Zn
Mi9zdmcvU1ZHU1ZHRWxlbWVudEltcGwuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS41CmRpZmYg
LXAgLXUgLXIxLjUga3N2ZzIvc3ZnL1NWR1NWR0VsZW1lbnRJbXBsLmgKLS0tIGtzdmcyL3N2Zy9T
VkdTVkdFbGVtZW50SW1wbC5oCTEgU2VwIDIwMDUgMDk6Mzk6MTYgLTAwMDAJMS41CisrKyBrc3Zn
Mi9zdmcvU1ZHU1ZHRWxlbWVudEltcGwuaAk2IFNlcCAyMDA1IDA5OjU5OjA5IC0wMDAwCkBAIC0x
MjIsNyArMTIyLDcgQEAgbmFtZXNwYWNlIEtTVkcKICAgICAgICAgc3RhdGljIFNWR1RyYW5zZm9y
bUltcGwgKmNyZWF0ZVNWR1RyYW5zZm9ybUZyb21NYXRyaXgoU1ZHTWF0cml4SW1wbCAqbWF0cml4
KTsKIAogICAgICAgICAvLyAnRG9jdW1lbnRFdmVudCcgZnVuY3Rpb25zCi0gICAgICAgIHZpcnR1
YWwgS0RPTTo6RXZlbnRJbXBsICpjcmVhdGVFdmVudChjb25zdCBLRE9NOjpET01TdHJpbmcgJmV2
ZW50VHlwZSk7CisgICAgICAgIHZpcnR1YWwgS0RPTTo6RXZlbnRJbXBsICpjcmVhdGVFdmVudChL
RE9NOjpET01TdHJpbmdJbXBsICpldmVudFR5cGUpOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBw
YXJzZUF0dHJpYnV0ZShLRE9NOjpBdHRyaWJ1dGVJbXBsICopOwogCkluZGV4OiBrc3ZnMi9zdmcv
U1ZHU2NyaXB0RWxlbWVudEltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9T
VkdTdXBwb3J0L2tzdmcyL3N2Zy9TVkdTY3JpcHRFbGVtZW50SW1wbC5jcHAsdgpyZXRyaWV2aW5n
IHJldmlzaW9uIDEuNwpkaWZmIC1wIC11IC1yMS43IGtzdmcyL3N2Zy9TVkdTY3JpcHRFbGVtZW50
SW1wbC5jcHAKLS0tIGtzdmcyL3N2Zy9TVkdTY3JpcHRFbGVtZW50SW1wbC5jcHAJMSBTZXAgMjAw
NSAwOTozOToxNiAtMDAwMAkxLjcKKysrIGtzdmcyL3N2Zy9TVkdTY3JpcHRFbGVtZW50SW1wbC5j
cHAJNiBTZXAgMjAwNSAwOTo1OTowOSAtMDAwMApAQCAtMjMsNiArMjMsNyBAQAogI2luY2x1ZGUg
PGtkb20vRE9NU3RyaW5nLmg+CiAvLyNpbmNsdWRlIDxrZG9tL2VjbWEvRWNtYS5oPgogI2luY2x1
ZGUgPGtkb20vY29yZS9BdHRySW1wbC5oPgorI2luY2x1ZGUgPGtkb20vY29yZS9ET01TdHJpbmdJ
bXBsLmg+CiAKICNpbmNsdWRlICJrc3ZnLmgiCiAjaW5jbHVkZSAic3ZnYXR0cnMuaCIKQEAgLTYx
LDggKzYyLDcgQEAgdm9pZCBTVkdTY3JpcHRFbGVtZW50SW1wbDo6cGFyc2VBdHRyaWJ1dAogICAg
IHsKICAgICAgICAgY2FzZSBBVFRSX1RZUEU6CiAgICAgICAgIHsKLSAgICAgICAgICAgIEtET006
OkRPTVN0cmluZ0ltcGwgKnR5cGUgPSAoYXR0ci0+dmFsdWUoKSA/IGF0dHItPnZhbHVlKCktPmNv
cHkoKSA6IDApOwotICAgICAgICAgICAgc2V0VHlwZSh0eXBlKTsKKyAgICAgICAgICAgIHNldFR5
cGUoYXR0ci0+dmFsdWUoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAg
ICBkZWZhdWx0OgpAQCAtNzUsOSArNzUsOSBAQCB2b2lkIFNWR1NjcmlwdEVsZW1lbnRJbXBsOjpw
YXJzZUF0dHJpYnV0CiAgICAgfTsKIH0KIAotdm9pZCBTVkdTY3JpcHRFbGVtZW50SW1wbDo6ZXhl
Y3V0ZVNjcmlwdChLRE9NOjpEb2N1bWVudEltcGwgKmRvY3VtZW50LCBjb25zdCBLRE9NOjpET01T
dHJpbmcgJmpzQ29kZSkKK3ZvaWQgU1ZHU2NyaXB0RWxlbWVudEltcGw6OmV4ZWN1dGVTY3JpcHQo
S0RPTTo6RG9jdW1lbnRJbXBsICpkb2N1bWVudCwgS0RPTTo6RE9NU3RyaW5nSW1wbCAqanNDb2Rl
KQogewotICAgIGlmKCFkb2N1bWVudCkKKyAgICBpZighZG9jdW1lbnQgfHwgIWpzQ29kZSkKICAg
ICAgICAgcmV0dXJuOwogI2lmIDAKICAgICBLRE9NOjpFY21hICplY21hRW5naW5lID0gZG9jdW1l
bnQtPmVjbWFFbmdpbmUoKTsKQEAgLTEwNywxMCArMTA3LDEwIEBAIHZvaWQgU1ZHU2NyaXB0RWxl
bWVudEltcGw6OmV4ZWN1dGVTY3JpcHQKICAgICAgICAgU1ZHRG9jdW1lbnRJbXBsICpzdmdEb2N1
bWVudCA9IHN0YXRpY19jYXN0PFNWR0RvY3VtZW50SW1wbCAqPihkb2N1bWVudCk7CiAgICAgICAg
IGlmKHN2Z0RvY3VtZW50ICYmIGRvY3VtZW50LT5oYXNMaXN0ZW5lclR5cGUoS0RPTTo6RVJST1Jf
RVZFTlQpKQogICAgICAgICB7Ci0gICAgICAgICAgICBTVkdFdmVudEltcGwgKmV2ZW50ID0gc3Rh
dGljX2Nhc3Q8U1ZHRXZlbnRJbXBsICo+KHN2Z0RvY3VtZW50LT5jcmVhdGVFdmVudCgiU1ZHRXZl
bnRzIikpOworICAgICAgICAgICAgU1ZHRXZlbnRJbXBsICpldmVudCA9IHN0YXRpY19jYXN0PFNW
R0V2ZW50SW1wbCAqPihzdmdEb2N1bWVudC0+Y3JlYXRlRXZlbnQoS0RPTTo6RE9NU3RyaW5nKCJT
VkdFdmVudHMiKS5oYW5kbGUoKSkpOwogICAgICAgICAgICAgZXZlbnQtPnJlZigpOwogCi0gICAg
ICAgICAgICBldmVudC0+aW5pdEV2ZW50KCJlcnJvciIsIGZhbHNlLCBmYWxzZSk7CisgICAgICAg
ICAgICBldmVudC0+aW5pdEV2ZW50KEtET006OkRPTVN0cmluZygiZXJyb3IiKS5oYW5kbGUoKSwg
ZmFsc2UsIGZhbHNlKTsKICAgICAgICAgICAgIHN2Z0RvY3VtZW50LT5kaXNwYXRjaFJlY3Vyc2l2
ZUV2ZW50KGV2ZW50LCBzdmdEb2N1bWVudC0+bGFzdENoaWxkKCkpOwogCiAgICAgICAgICAgICBl
dmVudC0+ZGVyZWYoKTsKQEAgLTEyNiw3ICsxMjYsMTIgQEAgdm9pZCBTVkdTY3JpcHRFbGVtZW50
SW1wbDo6ZXhlY3V0ZVNjcmlwdAogI2lmZGVmIEFQUExFX0NIQU5HRVMKICAgICBLSlM6OkludGVy
cHJldGVyOjp1bmxvY2soKTsKICNlbmRpZgotCisjZWxzZQorICAgIGlmIChqc0NvZGUpIHsKKyAg
ICAgICAgLy8gSGFjayB0byBjbG9zZSBtZW1vcnkgbGVhayBkdWUgdG8gI2lmIDAKKyAgICAgICAg
anNDb2RlLT5yZWYoKTsKKyAgICAgICAganNDb2RlLT5kZXJlZigpOworICAgIH0KICNlbmRpZgog
fQogCkluZGV4OiBrc3ZnMi9zdmcvU1ZHU2NyaXB0RWxlbWVudEltcGwuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJD
UyBmaWxlOiAvY3ZzL3Jvb3QvU1ZHU3VwcG9ydC9rc3ZnMi9zdmcvU1ZHU2NyaXB0RWxlbWVudElt
cGwuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS40CmRpZmYgLXAgLXUgLXIxLjQga3N2ZzIvc3Zn
L1NWR1NjcmlwdEVsZW1lbnRJbXBsLmgKLS0tIGtzdmcyL3N2Zy9TVkdTY3JpcHRFbGVtZW50SW1w
bC5oCTEgU2VwIDIwMDUgMDc6MzU6NTEgLTAwMDAJMS40CisrKyBrc3ZnMi9zdmcvU1ZHU2NyaXB0
RWxlbWVudEltcGwuaAk2IFNlcCAyMDA1IDA5OjU5OjA5IC0wMDAwCkBAIC00NCw3ICs0NCw3IEBA
IG5hbWVzcGFjZSBLU1ZHCiAgICAgICAgIC8vIEludGVybmFsCiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBwYXJzZUF0dHJpYnV0ZShLRE9NOjpBdHRyaWJ1dGVJbXBsICphdHRyKTsKIAotICAgICAgICBz
dGF0aWMgdm9pZCBleGVjdXRlU2NyaXB0KEtET006OkRvY3VtZW50SW1wbCAqZG9jdW1lbnQsIGNv
bnN0IEtET006OkRPTVN0cmluZyAmanNDb2RlKTsKKyAgICAgICAgc3RhdGljIHZvaWQgZXhlY3V0
ZVNjcmlwdChLRE9NOjpEb2N1bWVudEltcGwgKmRvY3VtZW50LCBLRE9NOjpET01TdHJpbmdJbXBs
ICpqc0NvZGUpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgS0RPTTo6RE9NU3RyaW5nSW1wbCAq
bV90eXBlOwpJbmRleDoga3N2ZzIvc3ZnL1NWR1NldEVsZW1lbnRJbXBsLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvU1ZHU3VwcG9ydC9rc3ZnMi9zdmcvU1ZHU2V0RWxlbWVudElt
cGwuY3BwLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjQKZGlmZiAtcCAtdSAtcjEuNCBrc3ZnMi9z
dmcvU1ZHU2V0RWxlbWVudEltcGwuY3BwCi0tLSBrc3ZnMi9zdmcvU1ZHU2V0RWxlbWVudEltcGwu
Y3BwCTEgU2VwIDIwMDUgMDc6MzU6NTEgLTAwMDAJMS40CisrKyBrc3ZnMi9zdmcvU1ZHU2V0RWxl
bWVudEltcGwuY3BwCTYgU2VwIDIwMDUgMDk6NTk6MDkgLTAwMDAKQEAgLTU2LDggKzU2LDkgQEAg
dm9pZCBTVkdTZXRFbGVtZW50SW1wbDo6aGFuZGxlVGltZXJFdmVudAogICAgIC8vIENvbW1pdCBj
aGFuZ2Ugbm93Li4uCiAgICAgaWYobV9zYXZlZFRvLmlzRW1wdHkoKSkKICAgICB7Ci0gICAgICAg
IG1fc2F2ZWRUbyA9IHRhcmdldEF0dHJpYnV0ZSgpLnN0cmluZygpOwotICAgICAgICBzZXRUYXJn
ZXRBdHRyaWJ1dGUobV90byk7CisgICAgICAgIEtET006OkRPTVN0cmluZ0ltcGwgKmF0dHIgPSB0
YXJnZXRBdHRyaWJ1dGUoKTsKKyAgICAgICAgbV9zYXZlZFRvID0gKGF0dHIgPyBhdHRyLT5zdHJp
bmcoKSA6IFFTdHJpbmc6Om51bGwpOworICAgICAgICBzZXRUYXJnZXRBdHRyaWJ1dGUoS0RPTTo6
RE9NU3RyaW5nKG1fdG8pLmhhbmRsZSgpKTsKICAgICB9CiAKICAgICAvLyBFbmQgY29uZGl0aW9u
LgpAQCAtNzEsNyArNzIsNyBAQCB2b2lkIFNWR1NldEVsZW1lbnRJbXBsOjpoYW5kbGVUaW1lckV2
ZW50CiAgICAgICAgIH0KIAogICAgICAgICBpZighaXNGcm96ZW4oKSkKLSAgICAgICAgICAgIHNl
dFRhcmdldEF0dHJpYnV0ZShtX3NhdmVkVG8pOworICAgICAgICAgICAgc2V0VGFyZ2V0QXR0cmli
dXRlKEtET006OkRPTVN0cmluZyhtX3NhdmVkVG8pLmhhbmRsZSgpKTsKIAogICAgICAgICBtX3Nh
dmVkVG8gPSBRU3RyaW5nKCk7CiAgICAgfQpJbmRleDoga3N2ZzIvc3ZnL1NWR1N0eWxlRWxlbWVu
dEltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tzdmcy
L3N2Zy9TVkdTdHlsZUVsZW1lbnRJbXBsLmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS41CmRp
ZmYgLXAgLXUgLXIxLjUga3N2ZzIvc3ZnL1NWR1N0eWxlRWxlbWVudEltcGwuY3BwCi0tLSBrc3Zn
Mi9zdmcvU1ZHU3R5bGVFbGVtZW50SW1wbC5jcHAJMSBTZXAgMjAwNSAwOTozOToxNyAtMDAwMAkx
LjUKKysrIGtzdmcyL3N2Zy9TVkdTdHlsZUVsZW1lbnRJbXBsLmNwcAk2IFNlcCAyMDA1IDA5OjU5
OjA5IC0wMDAwCkBAIC00NiwxMSArNDYsNyBAQCBTVkdTdHlsZUVsZW1lbnRJbXBsOjp+U1ZHU3R5
bGVFbGVtZW50SW1wCiAKIEtET006OkRPTVN0cmluZ0ltcGwgKlNWR1N0eWxlRWxlbWVudEltcGw6
OnhtbHNwYWNlKCkgY29uc3QKIHsKLSAgICBLRE9NOjpET01TdHJpbmcgbmFtZSgieG1sOnNwYWNl
Iik7Ci0gICAgaWYoaGFzQXR0cmlidXRlKG5hbWUuaGFuZGxlKCkpKQotICAgICAgICByZXR1cm4g
Z2V0QXR0cmlidXRlKG5hbWUuaGFuZGxlKCkpOwotCi0gICAgcmV0dXJuIE5VTEw7CisgICAgcmV0
dXJuIHRyeUdldEF0dHJpYnV0ZShLRE9NOjpET01TdHJpbmcoInhtbDpzcGFjZSIpLmhhbmRsZSgp
KTsKIH0KIAogdm9pZCBTVkdTdHlsZUVsZW1lbnRJbXBsOjpzZXRYbWxzcGFjZShLRE9NOjpET01T
dHJpbmdJbXBsICopCkBAIC02MCwxMSArNTYsNyBAQCB2b2lkIFNWR1N0eWxlRWxlbWVudEltcGw6
OnNldFhtbHNwYWNlKEtECiAKIEtET006OkRPTVN0cmluZ0ltcGwgKlNWR1N0eWxlRWxlbWVudElt
cGw6OnR5cGUoKSBjb25zdAogewotICAgIEtET006OkRPTVN0cmluZyBuYW1lKCJ0eXBlIik7Ci0g
ICAgaWYoaGFzQXR0cmlidXRlKG5hbWUuaGFuZGxlKCkpKQotICAgICAgICByZXR1cm4gZ2V0QXR0
cmlidXRlKG5hbWUuaGFuZGxlKCkpOwotCi0gICAgcmV0dXJuIG5ldyBLRE9NOjpET01TdHJpbmdJ
bXBsKCJ0ZXh0L2NzcyIpOworICAgIHJldHVybiB0cnlHZXRBdHRyaWJ1dGUoS0RPTTo6RE9NU3Ry
aW5nKCJ0eXBlIikuaGFuZGxlKCksIEtET006OkRPTVN0cmluZygidGV4dC9jc3MiKS5oYW5kbGUo
KSk7CiB9CiAKIHZvaWQgU1ZHU3R5bGVFbGVtZW50SW1wbDo6c2V0VHlwZShLRE9NOjpET01TdHJp
bmdJbXBsICopCkBAIC03NCwxMSArNjYsNyBAQCB2b2lkIFNWR1N0eWxlRWxlbWVudEltcGw6OnNl
dFR5cGUoS0RPTTo6CiAKIEtET006OkRPTVN0cmluZ0ltcGwgKlNWR1N0eWxlRWxlbWVudEltcGw6
Om1lZGlhKCkgY29uc3QKIHsKLSAgICBLRE9NOjpET01TdHJpbmcgbmFtZSgibWVkaWEiKTsKLSAg
ICBpZihoYXNBdHRyaWJ1dGUobmFtZS5oYW5kbGUoKSkpCi0gICAgICAgIHJldHVybiBnZXRBdHRy
aWJ1dGUobmFtZS5oYW5kbGUoKSk7Ci0KLSAgICByZXR1cm4gbmV3IEtET006OkRPTVN0cmluZ0lt
cGwoImFsbCIpOworICAgIHJldHVybiB0cnlHZXRBdHRyaWJ1dGUoS0RPTTo6RE9NU3RyaW5nKCJt
ZWRpYSIpLmhhbmRsZSgpLCBLRE9NOjpET01TdHJpbmcoImFsbCIpLmhhbmRsZSgpKTsKIH0KIAog
dm9pZCBTVkdTdHlsZUVsZW1lbnRJbXBsOjpzZXRNZWRpYShLRE9NOjpET01TdHJpbmdJbXBsICop
CkBAIC04OCwxMSArNzYsNyBAQCB2b2lkIFNWR1N0eWxlRWxlbWVudEltcGw6OnNldE1lZGlhKEtE
T006CiAKIEtET006OkRPTVN0cmluZ0ltcGwgKlNWR1N0eWxlRWxlbWVudEltcGw6OnRpdGxlKCkg
Y29uc3QKIHsKLSAgICBLRE9NOjpET01TdHJpbmcgbmFtZSgidGl0bGUiKTsKLSAgICBpZihoYXNB
dHRyaWJ1dGUobmFtZS5oYW5kbGUoKSkpCi0gICAgICAgIHJldHVybiBnZXRBdHRyaWJ1dGUobmFt
ZS5oYW5kbGUoKSk7Ci0KLSAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gdHJ5R2V0QXR0cmli
dXRlKEtET006OkRPTVN0cmluZygidGl0bGUiKS5oYW5kbGUoKSk7CiB9CiAKIHZvaWQgU1ZHU3R5
bGVFbGVtZW50SW1wbDo6c2V0VGl0bGUoS0RPTTo6RE9NU3RyaW5nSW1wbCAqKQpAQCAtMTE4LDIx
ICsxMDIsMjIgQEAgdm9pZCBTVkdTdHlsZUVsZW1lbnRJbXBsOjpjaGlsZHJlbkNoYW5nZQogICAg
IH0KIAogICAgIG1fbG9hZGluZyA9IGZhbHNlOwotICAgIFFTdHJpbmcgX21lZGlhID0gS0RPTTo6
RE9NU3RyaW5nKG1lZGlhKCkpLnN0cmluZygpOworICAgIEtET006OkRPTVN0cmluZyBtZWRpYURv
bVN0cmluZyhtZWRpYSgpKTsKKyAgICBRU3RyaW5nIF9tZWRpYSA9IG1lZGlhRG9tU3RyaW5nLnN0
cmluZygpOwogICAgIGlmKChLRE9NOjpET01TdHJpbmcodHlwZSgpKS5pc0VtcHR5KCkgfHwgS0RP
TTo6RE9NU3RyaW5nKHR5cGUoKSkgPT0gInRleHQvY3NzIikgJiYgKF9tZWRpYS5pc051bGwoKSB8
fAogICAgICAgICBfbWVkaWEuY29udGFpbnMoUVN0cmluZzo6ZnJvbUxhdGluMSgic2NyZWVuIikp
IHx8CiAgICAgICAgIF9tZWRpYS5jb250YWlucyhRU3RyaW5nOjpmcm9tTGF0aW4xKCJhbGwiKSkg
fAogICAgICAgICBfbWVkaWEuY29udGFpbnMoUVN0cmluZzo6ZnJvbUxhdGluMSgicHJpbnQiKSkp
KQogICAgIHsKICAgICAgICAgb3duZXJEb2N1bWVudCgpLT5hZGRQZW5kaW5nU2hlZXQoKTsKLSAg
ICAgICAgCisKICAgICAgICAgbV9sb2FkaW5nID0gdHJ1ZTsKLSAgICAgICAgCisgCiAgICAgICAg
IG1fc2hlZXQgPSBuZXcgU1ZHQ1NTU3R5bGVTaGVldEltcGwodGhpcyk7CiAgICAgICAgIG1fc2hl
ZXQtPnJlZigpOwogICAgICAgICBtX3NoZWV0LT5wYXJzZVN0cmluZyh0ZXh0LmhhbmRsZSgpLCBm
YWxzZSk7Ly8hZ2V0RG9jdW1lbnQoKS0+aW5Db21wYXRNb2RlKCkpOwotICAgICAgICAKLSAgICAg
ICAgS0RPTTo6TWVkaWFMaXN0SW1wbCAqbWVkaWEgPSBuZXcgS0RPTTo6TWVkaWFMaXN0SW1wbCht
X3NoZWV0LCBLRE9NOjpET01TdHJpbmcoX21lZGlhKS5oYW5kbGUoKSk7CisKKyAgICAgICAgS0RP
TTo6TWVkaWFMaXN0SW1wbCAqbWVkaWEgPSBuZXcgS0RPTTo6TWVkaWFMaXN0SW1wbChtX3NoZWV0
LCBtZWRpYURvbVN0cmluZy5oYW5kbGUoKSk7CiAgICAgICAgIG1fc2hlZXQtPnNldE1lZGlhKG1l
ZGlhKTsKICAgICAgICAgbV9sb2FkaW5nID0gZmFsc2U7CiAgICAgfQpJbmRleDoga3N2ZzIvc3Zn
L1NWR1N0eWxlZEVsZW1lbnRJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3Qv
U1ZHU3VwcG9ydC9rc3ZnMi9zdmcvU1ZHU3R5bGVkRWxlbWVudEltcGwuY3BwLHYKcmV0cmlldmlu
ZyByZXZpc2lvbiAxLjUKZGlmZiAtcCAtdSAtcjEuNSBrc3ZnMi9zdmcvU1ZHU3R5bGVkRWxlbWVu
dEltcGwuY3BwCi0tLSBrc3ZnMi9zdmcvU1ZHU3R5bGVkRWxlbWVudEltcGwuY3BwCTEgU2VwIDIw
MDUgMDk6Mzk6MTcgLTAwMDAJMS41CisrKyBrc3ZnMi9zdmcvU1ZHU3R5bGVkRWxlbWVudEltcGwu
Y3BwCTYgU2VwIDIwMDUgMDk6NTk6MTAgLTAwMDAKQEAgLTIwMyw3ICsyMDMsNyBAQCB2b2lkIFNW
R1N0eWxlZEVsZW1lbnRJbXBsOjphdHRhY2goKQogICAgIGtkRGVidWcoMjYwMDIpIDw8ICJbU1ZH
U3R5bGVkRWxlbWVudEltcGw6OmF0dGFjaF0gQWJvdXQgdG8gYXR0YWNoIGNhbnZhcyBpdGVtIGZv
ciBlbGVtZW50ICIgPDwgS0RPTTo6RE9NU3RyaW5nKGxvY2FsTmFtZSgpKSA8PCBlbmRsOwogCiAg
ICAgU1ZHRG9jdW1lbnRJbXBsICpkb2MgPSBzdGF0aWNfY2FzdDxTVkdEb2N1bWVudEltcGwgKj4o
b3duZXJEb2N1bWVudCgpKTsKLSAgICBLQ2FudmFzICpjYW52YXMgPSAoZG9jID8gZG9jLT5jYW52
YXMoKSA6IDApOworICAgIEtDYW52YXMgKmNhbnZhcyA9IChkb2MgPyBkb2MtPmNhbnZhcygpIDog
MCk7ICAgIAogICAgIGlmKGNhbnZhcyAmJiBpbXBsZW1lbnRzQ2FudmFzSXRlbSgpKQogICAgIHsK
ICAgICAgICAgU1ZHUmVuZGVyU3R5bGUgKnN2Z1N0eWxlID0gc3RhdGljX2Nhc3Q8U1ZHUmVuZGVy
U3R5bGUgKj4ocmVuZGVyU3R5bGUoKSk7CkluZGV4OiBrc3ZnMi9zdmcvU1ZHVHJhbnNmb3JtYWJs
ZUltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tzdmcy
L3N2Zy9TVkdUcmFuc2Zvcm1hYmxlSW1wbC5jcHAsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNQpk
aWZmIC1wIC11IC1yMS41IGtzdmcyL3N2Zy9TVkdUcmFuc2Zvcm1hYmxlSW1wbC5jcHAKLS0tIGtz
dmcyL3N2Zy9TVkdUcmFuc2Zvcm1hYmxlSW1wbC5jcHAJMSBTZXAgMjAwNSAwOTozOToxNyAtMDAw
MAkxLjUKKysrIGtzdmcyL3N2Zy9TVkdUcmFuc2Zvcm1hYmxlSW1wbC5jcHAJNiBTZXAgMjAwNSAw
OTo1OToxMCAtMDAwMApAQCAtMTA5LDkgKzEwOSw5IEBAIHZvaWQgU1ZHVHJhbnNmb3JtYWJsZUlt
cGw6OnVwZGF0ZVN1YnRyZWUKIAogICAgIGlmKHN0eWxlZCAmJiB0cmFuc2Zvcm0gJiYgdHJhbnNm
b3JtLT5sb2NhbE1hdHJpeCgpKQogICAgIHsKLSAgICAgICAgUVdNYXRyaXggdXNlTWF0cml4ID0g
dHJhbnNmb3JtLT5sb2NhbE1hdHJpeCgpLT5xbWF0cml4KCk7CisgICAgICAgIFFNYXRyaXggdXNl
TWF0cml4ID0gdHJhbnNmb3JtLT5sb2NhbE1hdHJpeCgpLT5xbWF0cml4KCk7CiAgICAgCi0gICAg
ICAgIEtET006OkVsZW1lbnRJbXBsICpwYXJlbnRFbGVtZW50ID0gZHluYW1pY19jYXN0PEtET006
OkVsZW1lbnRJbXBsICo+KG5vZGUtPnBhcmVudE5vZGUoKSk7CisgICAgICAgIEtET006Ok5vZGVJ
bXBsICpwYXJlbnRFbGVtZW50ID0gbm9kZS0+cGFyZW50Tm9kZSgpOwogICAgICAgICBpZihwYXJl
bnRFbGVtZW50ICYmIHBhcmVudEVsZW1lbnQtPmlkKCkgPT0gSURfRykKICAgICAgICAgewogICAg
ICAgICAgICAgU1ZHTWF0cml4SW1wbCAqY3RtID0gdHJhbnNmb3JtLT5nZXRDVE0oKTsKQEAgLTEz
MywxMyArMTMzLDEyIEBAIHZvaWQgU1ZHVHJhbnNmb3JtYWJsZUltcGw6OnVwZGF0ZVN1YnRyZWUK
IGJvb2wgU1ZHVHJhbnNmb3JtYWJsZUltcGw6OnBhcnNlQXR0cmlidXRlKEtET006OkF0dHJpYnV0
ZUltcGwgKmF0dHIpCiB7CiAgICAgaW50IGlkID0gKGF0dHItPmlkKCkgJiBOb2RlSW1wbF9JZExv
Y2FsTWFzayk7Ci0gICAgS0RPTTo6RE9NU3RyaW5nIHZhbHVlKGF0dHItPnZhbHVlKCkpOwogICAg
IGlmKGlkID09IEFUVFJfVFJBTlNGT1JNKQogICAgIHsKICAgICAgICAgU1ZHVHJhbnNmb3JtTGlz
dEltcGwgKmxvY2FsVHJhbnNmb3JtcyA9IHRyYW5zZm9ybSgpLT5iYXNlVmFsKCk7CiAgICAgICAg
IAogICAgICAgICBsb2NhbFRyYW5zZm9ybXMtPmNsZWFyKCk7Ci0gICAgICAgIFNWR1RyYW5zZm9y
bWFibGVJbXBsOjpwYXJzZVRyYW5zZm9ybUF0dHJpYnV0ZShsb2NhbFRyYW5zZm9ybXMsIHZhbHVl
KTsKKyAgICAgICAgU1ZHVHJhbnNmb3JtYWJsZUltcGw6OnBhcnNlVHJhbnNmb3JtQXR0cmlidXRl
KGxvY2FsVHJhbnNmb3JtcywgYXR0ci0+dmFsdWUoKSk7CiAKICAgICAgICAgLy8gVXBkYXRlIGNh
Y2hlZCBsb2NhbCBtYXRyaXgKICAgICAgICAgdXBkYXRlTG9jYWxUcmFuc2Zvcm0obG9jYWxUcmFu
c2Zvcm1zKTsKQEAgLTE1NSwxMCArMTU0LDEzIEBAIGJvb2wgU1ZHVHJhbnNmb3JtYWJsZUltcGw6
OnBhcnNlQXR0cmlidXQKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgU1ZHVHJhbnNmb3Jt
YWJsZUltcGw6OnBhcnNlVHJhbnNmb3JtQXR0cmlidXRlKFNWR1RyYW5zZm9ybUxpc3RJbXBsICps
aXN0LCBjb25zdCBLRE9NOjpET01TdHJpbmcgJnRyYW5zZm9ybSkKK3ZvaWQgU1ZHVHJhbnNmb3Jt
YWJsZUltcGw6OnBhcnNlVHJhbnNmb3JtQXR0cmlidXRlKFNWR1RyYW5zZm9ybUxpc3RJbXBsICps
aXN0LCBLRE9NOjpET01TdHJpbmdJbXBsICp0cmFuc2Zvcm0pCiB7CisgICAgaWYoIXRyYW5zZm9y
bSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgLy8gU3BsaXQgc3RyaW5nIGZvciBoYW5kbGluZyAx
IHRyYW5zZm9ybSBzdGF0ZW1lbnQgYXQgYSB0aW1lCi0gICAgUVN0cmluZ0xpc3Qgc3VidHJhbnNm
b3JtcyA9IFFTdHJpbmdMaXN0OjpzcGxpdCgnKScsIHRyYW5zZm9ybS5zdHJpbmcoKSk7CisgICAg
UVN0cmluZ0xpc3Qgc3VidHJhbnNmb3JtcyA9IFFTdHJpbmdMaXN0OjpzcGxpdCgnKScsIEtET006
OkRPTVN0cmluZyh0cmFuc2Zvcm0pLnN0cmluZygpKTsKICAgICBRU3RyaW5nTGlzdDo6Q29uc3RJ
dGVyYXRvciBpdCA9IHN1YnRyYW5zZm9ybXMuYmVnaW4oKTsKICAgICBRU3RyaW5nTGlzdDo6Q29u
c3RJdGVyYXRvciBlbmQgPSBzdWJ0cmFuc2Zvcm1zLmVuZCgpOwogICAgIGZvcig7IGl0ICE9IGVu
ZDsgKytpdCkKSW5kZXg6IGtzdmcyL3N2Zy9TVkdUcmFuc2Zvcm1hYmxlSW1wbC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tzdmcyL3N2Zy9TVkdUcmFuc2Zvcm1h
YmxlSW1wbC5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjQKZGlmZiAtcCAtdSAtcjEuNCBrc3Zn
Mi9zdmcvU1ZHVHJhbnNmb3JtYWJsZUltcGwuaAotLS0ga3N2ZzIvc3ZnL1NWR1RyYW5zZm9ybWFi
bGVJbXBsLmgJMSBTZXAgMjAwNSAwNzozNTo1NSAtMDAwMAkxLjQKKysrIGtzdmcyL3N2Zy9TVkdU
cmFuc2Zvcm1hYmxlSW1wbC5oCTYgU2VwIDIwMDUgMDk6NTk6MTAgLTAwMDAKQEAgLTI1LDE1ICsy
NSwxNSBAQAogCiAjaW5jbHVkZSAiU1ZHTG9jYXRhYmxlSW1wbC5oIgogCitjbGFzcyBRTWF0cml4
OworCiBuYW1lc3BhY2UgS0RPTQogewogICAgIGNsYXNzIE5vZGVJbXBsOwotICAgIGNsYXNzIERP
TVN0cmluZzsKKyAgICBjbGFzcyBET01TdHJpbmdJbXBsOwogICAgIGNsYXNzIEF0dHJpYnV0ZUlt
cGw7CiB9OwogCi1jbGFzcyBRV01hdHJpeDsKLQogbmFtZXNwYWNlIEtTVkcKIHsKICAgICBjbGFz
cyBTVkdNYXRyaXhJbXBsOwpAQCAtNTYsNyArNTYsNyBAQCBuYW1lc3BhY2UgS1NWRwogICAgICAg
ICAvLyBTcGVjaWFsIHBhcnNlQXR0cmlidXRlIGZ1bmN0aW9uLCByZXR1cm5pbmcgYSBib29sLAog
ICAgICAgICAvLyB3aGV0aGVyIGl0IGNvdWxkIGhhbmRsZSB0aGUgcGFzc2VkIGF0dHJpYnV0ZSBv
ciBub3QuCiAgICAgICAgIGJvb2wgcGFyc2VBdHRyaWJ1dGUoS0RPTTo6QXR0cmlidXRlSW1wbCAq
YXR0cik7Ci0gICAgICAgIHN0YXRpYyB2b2lkIHBhcnNlVHJhbnNmb3JtQXR0cmlidXRlKFNWR1Ry
YW5zZm9ybUxpc3RJbXBsICpsaXN0LCBjb25zdCBLRE9NOjpET01TdHJpbmcgJnRyYW5zZm9ybSk7
CisgICAgICAgIHN0YXRpYyB2b2lkIHBhcnNlVHJhbnNmb3JtQXR0cmlidXRlKFNWR1RyYW5zZm9y
bUxpc3RJbXBsICpsaXN0LCBLRE9NOjpET01TdHJpbmdJbXBsICp0cmFuc2Zvcm0pOwogCiAgICAg
ICAgIHZvaWQgdXBkYXRlU3VidHJlZU1hdHJpY2VzKEtET006Ok5vZGVJbXBsICpub2RlKTsKICAg
ICAgICAgdm9pZCB1cGRhdGVMb2NhbFRyYW5zZm9ybShTVkdUcmFuc2Zvcm1MaXN0SW1wbCAqbG9j
YWxUcmFuc2Zvcm1zKTsKSW5kZXg6IGt3cS9LV1FOYW1lc3BhY2UuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBm
aWxlOiAvY3ZzL3Jvb3QvV2ViQ29yZS9rd3EvS1dRTmFtZXNwYWNlLmgsdgpyZXRyaWV2aW5nIHJl
dmlzaW9uIDEuMzMKZGlmZiAtcCAtdSAtcjEuMzMga3dxL0tXUU5hbWVzcGFjZS5oCi0tLSBrd3Ev
S1dRTmFtZXNwYWNlLmgJMTggTm92IDIwMDMgMDE6NTI6MzUgLTAwMDAJMS4zMworKysga3dxL0tX
UU5hbWVzcGFjZS5oCTYgU2VwIDIwMDUgMDk6NTk6MTAgLTAwMDAKQEAgLTYzLDYgKzYzLDExIEBA
IHB1YmxpYzoKIAlXb3JkQnJlYWsJPSAweDA0MDAsCiAgICAgfTsKIAorICAgIGVudW0gTGF5b3V0
RGlyZWN0aW9uIHsKKyAgICAgICAgTGVmdFRvUmlnaHQgICAgID0gMCwKKyAgICAgICAgUmlnaHRU
b0xlZnQgICAgID0gMQorICAgIH07CisKICAgICBlbnVtIE9yaWVudGF0aW9uIHsKICAgICAgICAg
SG9yaXpvbnRhbCwKICAgICAgICAgVmVydGljYWwKSW5kZXg6IGt3cS9LV1FXTWF0cml4LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1dlYkNvcmUva3dxL0tXUVdNYXRyaXguaCx2CnJl
dHJpZXZpbmcgcmV2aXNpb24gMS4xCmRpZmYgLXAgLXUgLXIxLjEga3dxL0tXUVdNYXRyaXguaAot
LS0ga3dxL0tXUVdNYXRyaXguaAk1IEp1bCAyMDA1IDA3OjU3OjQ2IC0wMDAwCTEuMQorKysga3dx
L0tXUVdNYXRyaXguaAk2IFNlcCAyMDA1IDA5OjU5OjEwIC0wMDAwCkBAIC02Niw0ICs2Niw2IEBA
IHByaXZhdGU6CiAgICAgQ0dBZmZpbmVUcmFuc2Zvcm0gbV90cmFuc2Zvcm07CiB9OwogCisjZGVm
aW5lIFFNYXRyaXggUVdNYXRyaXgKKwogI2VuZGlmCg==
</data>
<flag name="review"
          id="539"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>